[{"Attribute":[{"category":"External analysis","disable_correlation":false,"first_seen":"2023-05-24T15:41:15.428000+00:00","to_ids":false,"type":"link","uuid":"49f1ff53-f053-4d29-a036-70268f6b155a","value":"https://lookyloo.circl.lu/tree/51c97ab2-63ef-4fa1-8920-29138727c891"},{"category":"External analysis","comment":"Screenshot of the page at the end of the capture","data":"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675HSilZqcxI3jkZm3Z0sW4vNzPVdHuK57m/qTrTvoZV+zgTjvOJEjcl5ffrve/4c61/4rFKlcokklwpybTfzgL/zMuYdmHw+uuv15ve9KaqUzYuxj7yyCOamJhQnufKskySlKZpR+E3LjSGrbW2o3gb9odxuhV2g1AYDufEna6hoBxeL8tSaZpWxdokSTqKvqHQGbZxB/NC4nPi9xCyhAJuKK7GueP8873POGPIHTqw0zSV976jEB1niYu/4dwsy+YUlK21StO0+uz5939DLr65tdDNtPlusg3yerfx5juPrGQlK1nJSlaykpWsZF0uWQEAGEMUgAEAiPioXldIss1URbJSa/ZYJ5esUjnVUpIksumEClfKyO3Q9ToKnFE3sfWSs27mmNmpfhOF441St0Xask3r169vr1NcSmli27/keiPXR43P+3aRMcsy5XmuNE07pn9et26d8jyX915ZllXdpaFwKamjkBv+HIqjSZLMKTqGInIomtY7g+OCciiOhtdDoTN0ssadr+HzDOds27ZNK1askPe+ulYoHg/SARtPz5wkSUexNQhjxdfvVQCuF1/jInNRFDLGVJ9RGKv+HuM/hxzxz6NePHfO6f7779ePf/xjPelJT9LTnva0vt47dpKFbmapy+vq87hex/caT/PsJytZyUpWspKVrGQlK1mXW1YAAMYEBWAAwJizUpgWeYarvZxkqaamc8mUSrJEJk2VO6fClcps9yJiPx2W7Q7O6lm7HTfK4GcylXLSTLenr6aG9pIr1fDSUw7cR0ZSkkhypr28r/MyaTx+/eKKFj5WRzevNFv0NMao2WxWr4XCa1xgNMZoenpav/jFL6q1f8Przjk99alPrQqa4bV4rPp44c/btm3TT37yE61atUqtVqujqPr0pz+9Kh6HvMnMtNxh34UXXqgLLrhABxxwwJxu2UGmPw7XTJJEv/vd7/TQQw8pSRKlabsLfMuWLTrooIO06667dhSW+yn+huyhuzd0EYei+W233aYbb7xRP/jBD3T//fdrenpaxhg97nGP07777qsjjjhCJ5xwgtasWVN9nnGndshx22236aKLLtIBBxyg++67T69+9at12mmn9f0Z4DG0UAfDoJ0VvY7rpts4YX+388lKVrKSlaxkJStZyUrW5ZQVAIAxQgEYADDmorVco73h98SykNLEyDivNEllnVdr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0gozqbeefYYaklzu5GWVZStUFIV+/OMfV92qYepgabYrdNyFaZCzLOso+oapkMMauRs2bNApp5yiPM9ljFFZlh3rB4eCbFwEXoj3vlrv95prrqnOj9fgNcboTW96U5Uz/PwGLdBaa6uu4tWrV+vUU0+VMaZ6DyH3d7/7XW3ZsoUO4GEVblrVn9e3vY5X9LzbzbF4u6PXIytZyUpWspKVrGQlK1mHPSsAAGOKr0MAAGYYzf1iLEsnmyRKsxXKC6eylSuR14pmqvZsvf0V6Xp1XBrvZK1pdwMXuZIkmekylqa3TaqROm19dIPe8dbXa/2TrJpeahoro0Sllz760f+tK6+8UkmSzOlQDevL7myDdA8vpTxvf75777131WFbFEU1HbNzTjfddJMOO+wwSao6q6enp6vjW63WzDTd/XXoxj/373znO9W58WvPec5ztP/++8t7X2WU+p+iOawBbIxRmqbVGsbnnHNOx5TWUru4vGnTJm3YsGGwDw+PnYVuenW7WeZq+1y0tbXni3k9spKVrGQlK1nJSlayknXYswIAMKb4SgQAjDUvJ8m1p3PuUpu0Wbur0nnJOSlLrfLWNkktTW7b1D5XPnq0zSneedteL9iZ6s/STBHQFWo0E7XyKTlj5ZWoaHntsmqFprds0DFHP00ve9HBanjJ5O31fb2TbrrpZl188cXaY489JLULnGGa33id2/keoy5N06rIK7U/o89//vPaa6+9JM12AgdZlunXv/61TjzxxOpnODExUXXXNpvNjgLuQsLPoyxL3XvvvdW5odtXkl74whd25JXU8TOcT+j8ds51TG+dpqme9axndRR+w/uZnp7uWO8YQ6bXTa/5tvF/0cfPbY/ni3U9spKVrGQlK1nJSlayknXYswIAMKbswocAADAmvGRqNTHv1dEpqrKl1BRat3aVdtt1tcw8v1X26uCMC2/t851axbSS5oRKZ+QKo2YitTY9oNUTLf2Pd79BKzOpzMtqyuoydzrpxJNljFGz2aymfw5jD9v0zzur2Bg+h7AGrrVW69at009/+lPtu+++VQHVWqtGo6E8z1UUha655hr9+Z//uSTJOVcVWMM40mxX7XxCR/a2bdv08MMPV/vDNM+StH79+ipr6N4NReOFGGOqdYrDz99aqzzPtdtuu2mvvfbq+vfwrrvuYgroYWW3c1s/P37uFni+vdcj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AAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAAAAAAAAAAI4ICMAAAAAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAAAAAAAAAAI4ICMAAAAAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAAAAAAAAAAI4ICMAAAAAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAAAAAAAAAAI4ICMAAAAAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAAAAAAAAAAI4ICMAAAAAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAAAAAAAAAAI4ICMAAAAAAAAAAAAACMCArAAAAAAAAAAAAAADAiKAADAAAAAAAAAAAAwIigAAwAAAAA/z979x0n2V3e+f5zYlV1VXWYHKQJCkgCCeWAAkKAhAAJkLHBmeU64LVxWK/X9hqvCddw7Wv72tjsLhh7LRuMCTZJ2AgjAUIggXLOYUYzo5npmelU6eTf/ePUOVXV3RPAATPzfb9ew+mqOuFXp3oGzXz7eR4RERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOEAmARERERERERERERERERkaOE+71egIiIiBz93vjRr/Kt5/YB8Pm3vIJzN678Hq9IRERERERERERE5OikAFhEROQo9vxCj/M/cAMAtmXx+H+9jjF/9P/+z//ADTy/0APg5FXjfO1nrx55/akDC1z+oRsBqHoOj/3qdXiOmogcqZ/8xK3c/PRuAP742gt40xlbvscrEhERERERERERkaOZ/vVWRETkKLZhvMbWqQYAmTHc+/zMyOvPL/TK8Bfgyf0LzPbCkX2Gj7ng+NUKf79DFc8ZfO04h9hTRERERERERERE5F9O/4IrIiJylLt4y5ry67t37R957c6d+xfvzp07D4w8vvf5weNLN69ZvLscxnDoW3UVAIuIiIiIiIiIiMi/LbWAFhEROcpdsmkNf3vvMwDcvWs03L2rHwCvb9Y40A2J0ow7duzjqpM3lPsMVwBfPBQAd6KED337cf7xsZ1sm23j2BanrZ7gpy94AdeedvwRry9IUv7PXU/yuUee45mZNllm2LqiyU+cfSI/fvYJOLY1sn9mDP/w0HY++cA2Htk7RzuKmapVOPe4lfync07isq1rR/b/3a/cz//+1uMAfPTNl3HcRJ3/8eV7uWvnAcYrLj/04q38+ktPx7Et/uqup/jQHY+zt9Vj81SD37z8DK4+ZeOSNX97xz4+9O0nuGvnfuaDiNX1Kq88eQP/7aUvYuVYdWTfijv4ebuKqqdFRERERERERETk35j+FVJEROQoN1oBPNoC+s5+RfCL16/g5FXjANyxY1AVHCQpj+ydA6BZ8XjxuikAZnshr/mrm/ijWx/msX3zRGlGJ0q4a9cBfu4zt/On33zkiNbWDmN+4CNf4b1feYCH9szRjRKCJOXR6Tl+60t38yMfv4UkM+X+UZrxlk9+g1+54Q5u2z7NXBCRZIZ9nYAbH9/FD//dLfze1x4cucZw1e222Q4/9Ldf49Zn99KLE/a2Az5w26P82W2Pcv3dT/Hb/3wPO+Y6RGnGk/sX+NnP3Mbj++ZHznf93U/xAx/5Kl96YhcHuiEG2N3q8ZF7nubq/3MT0+1gZP/aUAvoqvevVwH85o/dwju+dM+/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2Ozv05V7dHs915zUSXpaAPton/dErTVjMt4yJrckwyeMh9fP3b+ttqwu1owXbku70FIenlLPtbQHkzzcctNHx7SLLWceOUi70NLOt6wuTBn+ykHGW68OnB/rzxUAAOAkAmAAAIB9uzyPn79t//h1J3WJnvb8bdep9Yat9aHV2fzEe392y82ub13dfULG49ce3981cnnbdU+GWjPMx25qKeOY9tT5mk/p59RVTVZJW9XkYjI9UpPzLeVcy62P3JR2azLVdnifx7hWAACAfQiAAQAAtgV2u4K/ZHvwtyucPOm8bcd3dbauj6v1hq315e99VR5uZ/ceBXzU0ePbgtBdoeL69V3POv76SeepNRkOhvl/SRmSp15ZwzSfXz6GtQIAAOxj1z/KAgAAPHkcDfDWju6ftD2tS/T4/fYJKXc9R603bK1vffiP8uaHfv+a1oFdv370vOPXrO26Zts9TupAPX4/tT6xagUAANiHABgAAOC08cCnjSE+ft3x64/u7wov93meWm/IWi+1y/mx97/yxIBxV6frtsDwtFHGp41M3jZW+KRQUq1PvFoBAABOIgAGAADY1iG6rfszuTpsTLZfty2UPLrddnzbfY+fr9YbrtbX3vu63HPxvp1jjI8HfUdtC/62dYhu6xg96Z7Hr9sWSqr1iVsrAADASQTAAAAAu7o5TwsXj+6f1C161D6jhHc9R603XK0fWt2fX7jnV684dZ9Rwmvbgr9dnaenhYtH90/qNFXrE79WAACAkwiAAQAA9lnnddv2qH06TU8bS5yc/k9par2hav2n7/mpXCqXNvunjfo9ut1lnzVpt22P2qfTVK1P3FoBAABOIgAGAADYNzw8qQP16OvH73v89ZM6WHftq/WGq/V3H/yD3H3ubTtHAO/qCt21f/Qe+4SHJz3r6OvH76vWJ36tAAAAJxEAAwAAbOso3bbddf6u67Ljvuvju/Z31aPWG6bWc5c/mh99308luTIQPGkd2W3rz267btdruzpTd60hu2ttW7U+8WsFAAA4iQAYAABgV2h4fLvr/OTKQHBXkHhaGLnPerNqvSFq/YkP/kzOTueS7F7fdddo4OTk9WZ3hYbHt7vOP+lZar0xagUAADiJABgAAOC0NWVPChW37R+16z67xhir9Yav9U8++mf5rQd+d/PStiDx6PGj5+3jtDVlTwoVt+0fpdYbo1YA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AAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAAYCEEwAAAAAAAAAALIQAGAAAAAAAAWAgBMAAAAAAAAMBCCIABAAAAAAAAFkIADAAAAAAAALAQAmAAAAAAAACAhRAAAwAAAAAAACyEABgAAAAAAABgIQTAAAAAAAAAAAshAAYAAAAAAABYCAEwAAAAAAAAwEIIgAEAAAAAAAAWQgAMAAAAAAAAsBACYAAAAAAAAICFEAADAAAAAAAALIQAGAAAAAAAAGAhBMAAAAAAAAAACyEABgAAAAAAAFgIATAAAAAAAADAQgiAAQAAAAAAABZCAAwAAAAAAACwEAJgAAAAAAAAgIUQAAMAAAAAAAAshAAYAAAAAAAA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6nGd8t3/fLNqBpfBz8upxMDukC5Vyc7JpVfr4FvuqyQlzaGIiIiIiIiIiMi9yGC58VJCERERkRIs23CKkZ9tJmpx/1Lfx1taZrOF7Bwzxqu7eTfuiSf8qeVc2TysVEFg+Xt46YstJKdmMeW6+6dFRERERERERETk9t3cmY0iIiL/AIb64+/2EP7fMm17gqgzqbz4+RZGDa2LwXBn58uy81888noEqenZzHy3DWazhfcm7aZDk0BsbAx6N/eA7K3Didh2lgmLjrB1ag/g7vydy9w8DEcH27+8XxERERERERERkT+bdgCLiIhIqY0au43v5h9iWPfqfPZC4zu++xcg/kIGIz7YyPpd57C1MdCqfgXGvtqU8j7Od74z+cs1GrqY0/HpfPJ8QwaW8p5kERERERERERERKT0FgEVERERERERERERERERE7hE2d3sAIiIiIiIiIiIiIiIiIiJyZygALCIiIiIiIiIiIiIiIiJyj1AAWERERERERERERERERETkHqEAsIiIiIiIiIiIiIiIiIjIPUIBYBERERERERERERERERGRe4QCwCIiIiIiIiIiIiIiIiIi9wgFgEVERERERERERERERERE7hEKAIuIiIiIiIiIiIiIiIiI3CMUABYRERERERERERERERERuUcoACwiIiIiIiIiIiIiIiIico9QAFhERERERERERERERERE5B6hALCIiIiIiIiIiIiIiIiIyD1CAWARERERERERERERERERkXuE3d0egIiIiPy1LBaYtfo4v+1LIMdkpoKPMyMH3EcZd8e7PTQRERERERERERERuU3aASwiIlIIiwU+n7Gf6r3m4thoIgEdZ/D8p5u5fMX0p/e981AioT3mlFjOp82PRJ1JKzRv6rKjhaZbLPDMR5twcrTj21FhTBjdnEe7VOXZj38jJu5SoXXenrCLgI4z8GnzI4PHrLPOQWZWLo/+dx1+bacR3G02Pyw4bK1zODqF5sOX4tFiCjV7/8SKTaeteXPWnKBqzzl4tpxK6xHLi3wGgGc+3ITdQxMw1B9PbMLlEufkzxTQcQab9sbf1TGIiIiIiIiIiIiIlEQBYBERkUK89vU2xs49wNhXmnLhlyGsGdeZozEp9HhpzZ/ed92q3myd2uOW61ssMGrs9kLzflhwiK7NKnF/FW8GjY6k76gIdh5KZMLo5nw1+0CB8vMj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","disable_correlation":true,"first_seen":"2023-05-24T15:41:15.428000+00:00","to_ids":false,"type":"attachment","uuid":"7b1cb0f3-2b76-40ac-a679-8fc8c0a9018c","value":"screenshot_landing_page.png"},{"category":"External analysis","comment":"HTTP Archive (HAR) of the whole capture","data":"eyJsb2ciOiB7InZlcnNpb24iOiAiMS4yIiwgImNyZWF0b3IiOiB7Im5hbWUiOiAiUGxheXdyaWdodCIsICJ2ZXJzaW9uIjogIjEuMzMuMCJ9LCAiYnJvd3NlciI6IHsibmFtZSI6ICJjaHJvbWl1bSIsICJ2ZXJzaW9uIjogIjExMy4wLjU2NzIuNTMifSwgInBhZ2VzIjogW3sic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNDIzWiIsICJpZCI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInRpdGxlIjogIkp1bm8iLCAicGFnZVRpbWluZ3MiOiB7Im9uQ29udGVudExvYWQiOiAyNjkwLCAib25Mb2FkIjogNzU2OX19XSwgImVudHJpZXMiOiBbeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS40MjhaIiwgInRpbWUiOiA3Ny4wMDY5OTk5OTk5OTk5OSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC43In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDYwLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiTmc0bERsQTFoNkxmZEl0aWlTMS5wRmh4REhmYnJ6MEIuNVVLTGNDa1NzZy0xNjg0OTQyODc1LTAtQVlobytPZGFjekpwMWIxSWQxc2FLMWFnNXpnVlFWdnBGckZuaHJrS3Y4d0J2aVJzTGNJRzBmVXF1cjNvTDhKTTNVTkZMRE1ucnNzMVVVd0lrQUI2bGRFPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICIzMTU4NyJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDRiOGM4MTkyNWMtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE1IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWlcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1OZzRsRGxBMWg2TGZkSXRpaVMxLnBGaHhESGZicnowQi41VUtMY0NrU3NnLTE2ODQ5NDI4NzUtMC1BWWhvK09kYWN6SnAxYjFJZDFzYUsxYWc1emdWUVZ2cEZyRm5ocmtLdjh3QnZpUnNMY0lHMGZVcXVyM29MOEpNM1VORkxETW5yc3MxVVV3SWtBQjZsZEU9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTUgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDQ0ODQ2LCAibWltZVR5cGUiOiAidGV4dC9odG1sIiwgImNvbXByZXNzaW9uIjogMjk2MDIsICJ0ZXh0IjogIjwhRE9DVFlQRSBodG1sPlxyXG48aHRtbD5cclxuICA8aGVhZD5cclxuICAgIDx0aXRsZT5KdW5vPC90aXRsZT5cclxuICA8L2hlYWQ+XHJcbiAgPGJvZHk+XHJcbiAgICA8c2NyaXB0PlxyXG4gICAgICAvLyBSZXBsYWNlIHRoaXMgd2l0aCB0aGUgYmFzZTY0IHN0cmluZyBvZiB5b3VyIEhUTUwgZmlsZVxyXG4gICAgICB2YXIgYmFzZTY0U3RyaW5nID0gXCJQSE5qY21sd2RDQjBlWEJsUFNKMFpYaDBMMnBoZG1GelkzSnBjSFFpUGcwS1BDRXRMUTBLWkc5amRXMWxiblF1ZDNKcGRHVW9kVzVsYzJOaGNHVW9KendoUkU5RFZGbFFSU0JvZEcxc1BnMEtQQ0V0TFNCellYWmxaQ0JtY205dElIVnliRDBvTURBeE5DbGhZbTkxZERwcGJuUmxjbTVsZENBdExUNE5DanhvZEcxc0lHTnNZWE56UFNKMGNtRnVjMnhoZEdWa0xXeDBjaUkrUEdobFlXUStQRzFsZEdFZ2FIUjBjQzFsY1hWcGRqMGlRMjl1ZEdWdWRDMVVlWEJsSWlCamIyNTBaVzUwUFNKMFpYaDBMMmgwYld3N0lHTm9ZWEp6WlhROWQybHVaRzkzY3kweE1qVXlJajROQ2lBZ0lDQThJUzB0SUUxbGRHRWdWR0ZuY3lBdExUNE5DZ2tOQ2drOGJXVjBZU0JvZEhSd0xXVnhkV2wyUFNKWUxWVkJMVU52YlhCaGRHbGliR1VpSUdOdmJuUmxiblE5SWtsRlBXVmtaMlVpUGcwS0NUeHRaWFJoSUc1aGJXVTlJblpwWlhkd2IzSjBJaUJqYjI1MFpXNTBQU0ozYVdSMGFEMWtaWFpwWTJVdGQybGtkR2dzSUdsdWFYUnBZV3d0YzJOaGJHVTlNUzR3SWo0TkNnazhJUzB0SUZCaFoyVWdWR2wwYkdVZ0xTMCtEUW9KUEhScGRHeGxQa3AxYm04Z0xTQk5lU0JLZFc1dklGQmxjbk52Ym1Gc2FYcGxaQ0JUZEdGeWRDQlFZV2RsSUMwZ1UybG5iaUJwYmp3dmRHbDBiR1UrRFFvSlBDRXRMU0J6ZEdGeWREb2djMmhoY21Wa0xYUnlZV05yYVc1bklDMHRQZzBLRFFvOGMyTnlhWEIwSUdGemVXNWpQU0lpSUhKbFptVnljbVZ5Y0c5c2FXTjVQU0oxYm5OaFptVXRkWEpzSWlCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaUxpOUtkVzV2SUMwZ1RYa2dTblZ1YnlCUVpYSnpiMjVoYkdsNlpXUWdVM1JoY25RZ1VHRm5aU0F0SUZOcFoyNGdhVzVmWm1sc1pYTXZkaklpUGp3dmMyTnlhWEIwUGp4elkzSnBjSFFnWVhONWJtTTlJaUlnY21WbVpYSnlaWEp3YjJ4cFkzazlJblZ1YzJGbVpTMTFjbXdpSUhSNWNHVTlJblJsZUhRdmFtRjJZWE5qY21sd2RDSWdjM0pqUFNJdUwwcDFibThnTFNCTmVTQktkVzV2SUZCbGNuTnZibUZzYVhwbFpDQlRkR0Z5ZENCUVlXZGxJQzBnVTJsbmJpQnBibDltYVd4bGN5OTJNaWd4S1NJK1BDOXpZM0pwY0hRK1BITmpjbWx3ZENCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDI5elpDNXFjeTVrYjNkdWJHOWhaQ0krUEM5elkzSnBjSFErUEhOamNtbHdkQ0J6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMMkpwWkNJZ1lYTjVibU05SWlJK1BDOXpZM0pwY0hRK1BITmpjbWx3ZENCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDJwd2RDSWdZWE41Ym1NOUlpSStQQzl6WTNKcGNIUStQSE5qY21sd2RDQnpjbU05SWk0dlNuVnVieUF0SUUxNUlFcDFibThnVUdWeWMyOXVZV3hwZW1Wa0lGTjBZWEowSUZCaFoyVWdMU0JUYVdkdUlHbHVYMlpwYkdWekwycHdkQ2d4S1NJZ1lYTjVibU05SWlJK1BDOXpZM0pwY0hRK1BITmpjbWx3ZENCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDJwd2RDZ3lLU0lnWVhONWJtTTlJaUkrUEM5elkzSnBjSFErUEhOamNtbHdkQ0J6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMMnB3ZENnektTSWdZWE41Ym1NOUlpSStQQzl6WTNKcGNIUStQSE5qY21sd2RDQnpjbU05SWk0dlNuVnVieUF0SUUxNUlFcDFibThnVUdWeWMyOXVZV3hwZW1Wa0lGTjBZWEowSUZCaFoyVWdMU0JUYVdkdUlHbHVYMlpwYkdWekwycHdkQ2cwS1NJZ1lYTjVibU05SWlJK1BDOXpZM0pwY0hRK1BITmpjbWx3ZENCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDJwd2RDZzFLU0lnWVhONWJtTTlJaUkrUEM5elkzSnBjSFErUEhOamNtbHdkQ0J6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMMmhsWVdSbGNuUmhaeUlnWVhONWJtTTlJaUkrUEM5elkzSnBjSFErUEhOamNtbHdkQ0J6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMM052ZG5KdVgzTjBZVzVrWVd4dmJtVmZZbVZoWTI5dUxtcHpMbVJ2ZDI1c2IyRmtJaUJwWkQwaWMwSmxZV052YmlJZ1lYTjVibU05SWlJK1BDOXpZM0pwY0hRK1BITmpjbWx3ZENCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDNCMVlteHBjMmhsY25SaFp5NXFjeTVrYjNkdWJHOWhaQ0lnWVhONWJtTTlJaUkrUEM5elkzSnBjSFErUEhOamNtbHdkQ0J6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMMkZ3YzNSaFp5NXFjeTVrYjNkdWJHOWhaQ0lnWVhONWJtTTlJaUkrUEM5elkzSnBjSFErUEhOamNtbHdkQ0J6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMMmR3ZEM1cWN5NWtiM2R1Ykc5aFpDSStQQzl6WTNKcGNIUStQSE5qY21sd2RDQnpjbU05SWk0dlNuVnVieUF0SUUxNUlFcDFibThnVUdWeWMyOXVZV3hwZW1Wa0lGTjBZWEowSUZCaFoyVWdMU0JUYVdkdUlHbHVYMlpwYkdWekwyRnpkQzVxY3k1a2IzZHViRzloWkNJK1BDOXpZM0pwY0hRK1BITmpjbWx3ZENCc1lXNW5kV0ZuWlQwaVNtRjJZVk5qY21sd2RDSStEUW92THlCa1pYSnBkbVVnYzJWeWRteGxkQ0JtY205dElGdGhMWHBCTFZwZEt5NWtieUFnRFFwMllYSWdkR1Z0Y0QwaUwyeHZaMmx1TG1Sdklqc2dkR1Z0Y0NBOUlIUmxiWEF1YldGMFkyZ29MeWhiWVMxNlFTMWFNQzA1WFNzcFhDNWtieThwT3lBTkNuWmhjaUJ6WlhKMmJHVjBQU2QxYm10dWIzZHVKenNnYVdZb2RHVnRjQzVzWlc1bmRHZ3BJSE5sY25ac1pYUWdQU0IwWlcxd1d6RmRPdzBLRFFvdkwyUmxjbWwyWlNCd1lXZGxibUZ0WlNCbWNtOXRJSE56YVNCMllYSU5DblpoY2lCd2JtRnRaU0E5SUNkc2IyZHZiaWM3SUhCdVlXMWxJRDBnY0c1aGJXVXVjbVZ3YkdGalpTZ3ZYQzVxYzNBdkxDY25LVHNnYVdZb2NHNWhiV1V1YkdWdVozUm9QREVwSUhCdVlXMWxQU2QxYm10dWIzZHVKenNnRFFwemQybDBZMmdvYzJWeWRteGxkQ2w3RFFvSkx5b2djMjl0WlNCemNISnBibWNnWVdOMGFXOXVjeUJrYVdabVpYSWdabkp2YlNCNmRXeDFMaTR1ZEhKNUlIUnZJRzFoY0NCMGFHVnRJR0poWTJzZ0tpOE5DZ2xqWVhObElDZHlaV1psY2tWdFlXbHNVSEpsZG1sbGR5YzZJSE5sY25ac1pYUWdQU0FuY21WbVpYSW5PeUJpY21WaGF6c05DZ2xqWVhObElDZHNiMmRwYmljNklITmxjblpzWlhRZ1BTQW5iRzluYjI0bk95QmljbVZoYXpzTkNnbGpZWE5sSUNkd2IzSjBabTlzYVc5TWIyOXJkWEFuT2lCelpYSjJiR1YwSUQwZ0ozQnZjblJtYjJ4cGJ5YzdJR0p5WldGck95QU5DZ2xqWVhObElDZDNaV0YwYUdWeVRHOXZhM1Z3SnpvZ2MyVnlkbXhsZENBOUlDZDNaV0YwYUdWeUp6c2dZbkpsWVdzN0lBMEtDV05oYzJVZ0oyRmpZMlZ6YzA1MWJXSmxjbk1uT2lCelpYSjJiR1YwSUQwZ0oyNTFiV0psY25Nbk95QmljbVZoYXpzTkNnbGpZWE5sSUNkaFkyTmxjM05PZFcxaVpYSnpVMkYyWlVWdFlXbHNKem9nYzJWeWRteGxkQ0E5SUNkdWRXMWlaWEp6SnpzZ1luSmxZV3M3RFFvSlkyRnpaU0FuYzJsbmJrOXVVbVZ4ZFdseVpXUlNhR2x1YjJKdmIzUW5PaUJ6WlhKMmJHVjBJRDBnSjNKb2FXNXZZbTl2ZENjN0lHSnlaV0ZyT3lBTkNnbGpZWE5sSUNkc1lXNWthVzVuSnlBNklBMEtDUWwyWVhJZ2MzTnBYM04yWDNCaGRHZ2dQU0FuTDJ4dloybHVMbVJ2SnpzTkNna0pkbUZ5SUhOemFWOXdaMTl3WVhSb0lEMGdKeWM3RFFvSkNTOHZZV3hsY25Rb2MzTnBYM04yWDNCaGRHZ2dLeUFuSUMwdElDY2dLM056YVY5d1oxOXdZWFJvS1RzTkNna0phV1lvYzNOcFgzTjJYM0JoZEdndWJXRjBZMmdvTDJ4aGJtUnBibWRjTG1Sdkx5a2dKaVlnYzNOcFgzQm5YM0JoZEdndWJXRjBZMmdvTDNkM2R5OHBLWHNOQ2drSkNYTmxjblpzWlhRZ1BTQW5kM2QzSnpzZ0RRb0pDWDBnWld4elpTQjdEUW9KQ1Frdkx5QmtiMjRuZENCdGIyUnBabmtnYzJWeWRteGxkQ0IyWVhJdExXOTBhR1Z5SUc1dmJpMTNkM2NnWTI5dWRHVjRkSE0vRFFvSkNYME5DZ2tKWW5KbFlXczdJQTBLZlEwS0RRbzhMM05qY21sd2RENE5Danh6WTNKcGNIUWdiR0Z1WjNWaFoyVTlJa3BoZG1GVFkzSnBjSFFpSUhOeVl6MGlMaTlLZFc1dklDMGdUWGtnU25WdWJ5QlFaWEp6YjI1aGJHbDZaV1FnVTNSaGNuUWdVR0ZuWlNBdElGTnBaMjRnYVc1ZlptbHNaWE12Y0dGblpYWnBaWGN1YW5NdVpHOTNibXh2WVdRaVBqd3ZjMk55YVhCMFBnMEtQQ0V0TFEwS1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFEwS0NYZGxJR0Z5WlNCbWIzSmphVzVuSUhSb1pTQmpiMjFsUm5KdmJTQmpiMlJsSUhkb1pXNGdiRzloWkdsdVp3MEtDWFJvWlNCT1dpQjNkM2NnWm5KdmJuUmtiMjl5SUNoM2FXNWtiM2R6S1NCaGN5QndZWEowSUc5bUlHRXZZZzBLQ1hSbGMzUnBibWNnS0ZKVUl6RXlOelF6S1EwS1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFEwS0xTMCtEUW9OQ2p4elkzSnBjSFFnYkdGdVozVmhaMlU5SWtwaGRtRlRZM0pwY0hRaVBnMEtkbUZ5SUdOdmJuUmxlSFFnUFNBbmMzQW5PdzBLRFFvTkNnMEthV1lvYzJWeWRteGxkQ0FoUFNBbmMzQW5LWHNOQ2drdkwyeHZaMUJoWjJWV2FXVjNLSE5sY25ac1pYUXNjRzVoYldVc0p6YzFRemczTXpjeU1URkNOemxGTVRJd05FWTROVEEwTmpVME9UUkROelpCTGtSRFFTMUJVekF4Snl3bmFIUjBjSE02THk5MGNtRmpheTVxZFc1dkxtTnZiU2NzWTI5dWRHVjRkQ2s3RFFvSmRISjVldzBLQ1Fsc2IyZFFZV2RsVm1sbGR5aHpaWEoyYkdWMExIQnVZVzFsTENjM05VTTROek0zTWpFeFFqYzVSVEV5TURSR09EVXdORFkxTkRrMFF6YzJRUzVFUTBFdFFWTXdNU2NzSjJoMGRIQnpPaTh2ZEhKaFkyc3VhblZ1Ynk1amIyMG5MR052Ym5SbGVIUXBPdzBLQ1NCOURRb0pZMkYwWTJnb1pTbDdDUWtOQ2dsOUlBMEtmUTBLRFFwbWRXNWpkR2x2YmlCa1pXSjFaMTl3ZGw5MllXeDFaWE1vS1hzTkNnbGhiR1Z5ZENnbmMyVnlkbXhsZEQwbkszTmxjblpzWlhRckoxeHVjRzVoYldVOUp5dHdibUZ0WlNzblhHNXpTVVE5TnpWRE9EY3pOekl4TVVJM09VVXhNakEwUmpnMU1EUTJOVFE1TkVNM05rRXVSRU5CTFVGVE1ERmNiblJ5WVdOclUyVnlkbVZ5UFdoMGRIQnpPaTh2ZEhKaFkyc3VhblZ1Ynk1amIyMWNibU52Ym5SbGVIUTlKeXRqYjI1MFpYaDBLUTBLZlEwS1BDOXpZM0pwY0hRK1BHeHBibXNnY21Wc1BTSnphRzl5ZEdOMWRDQnBZMjl1SWlCb2NtVm1QU0pvZEhSd2N6b3ZMMjE1TG1wMWJtOHVZMjl0TDNOMFlYUnBZeTloWTJOdmRXNTBMM1pwWlhjdmFXMW5MM2RsWW1samIyNWZhaTVwWTI4aVBqeHpZM0pwY0hRZ2MzSmpQU0l1TDBwMWJtOGdMU0JOZVNCS2RXNXZJRkJsY25OdmJtRnNhWHBsWkNCVGRHRnlkQ0JRWVdkbElDMGdVMmxuYmlCcGJsOW1hV3hsY3k5d2RXSmhaSE5mYVcxd2JGOHlNREl3TURneU56QXhMbXB6TG1SdmQyNXNiMkZrSWlCaGMzbHVZejBpSWo0OEwzTmpjbWx3ZEQ0OGJHbHVheUJ5Wld3OUluQnlaV3h2WVdRaUlHaHlaV1k5SWk0dlNuVnVieUF0SUUxNUlFcDFibThnVUdWeWMyOXVZV3hwZW1Wa0lGTjBZWEowSUZCaFoyVWdMU0JUYVdkdUlHbHVYMlpwYkdWekwyWXVkSGgwSWlCaGN6MGljMk55YVhCMElqNDhjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0lnYzNKalBTSXVMMHAxYm04Z0xTQk5lU0JLZFc1dklGQmxjbk52Ym1Gc2FYcGxaQ0JUZEdGeWRDQlFZV2RsSUMwZ1UybG5iaUJwYmw5bWFXeGxjeTltTG5SNGRDSStQQzl6WTNKcGNIUStQR3hwYm1zZ2NtVnNQU0p3Y21WbVpYUmphQ0lnYUhKbFpqMGlhSFIwY0hNNkx5OWlPVFZsWkRoaE5tVTBOMlkyWkROaE5tWXhabVJoTnpRM056QXhZMk00WlM1ellXWmxabkpoYldVdVoyOXZaMnhsYzNsdVpHbGpZWFJwYjI0dVkyOXRMM05oWm1WbWNtRnRaUzh4TFRBdE16Y3ZhSFJ0YkM5amIyNTBZV2x1WlhJdWFIUnRiQ0krUEd4cGJtc2djbVZzUFNKd2NtVm1aWFJqYUNJZ2FISmxaajBpYUhSMGNITTZMeTkwY0dNdVoyOXZaMnhsYzNsdVpHbGpZWFJwYjI0dVkyOXRMM05oWm1WbWNtRnRaUzh4TFRBdE16Y3ZhSFJ0YkM5amIyNTBZV2x1WlhJdWFIUnRiQ0krUEd4cGJtc2dkSGx3WlQwaWRHVjRkQzlqYzNNaUlISmxiRDBpYzNSNWJHVnphR1ZsZENJZ2FISmxaajBpTGk5S2RXNXZJQzBnVFhrZ1NuVnVieUJRWlhKemIyNWhiR2w2WldRZ1UzUmhjblFnVUdGblpTQXRJRk5wWjI0Z2FXNWZabWxzWlhNdmMybGpMbU56Y3lJK1BITmpjbWx3ZENCaGMzbHVZejBpSWlCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaUxpOUtkVzV2SUMwZ1RYa2dTblZ1YnlCUVpYSnpiMjVoYkdsNlpXUWdVM1JoY25RZ1VHRm5aU0F0SUZOcFoyNGdhVzVmWm1sc1pYTXZZWFYwYUc5eWFYcGxJajQ4TDNOamNtbHdkRDQ4YkdsdWF5QjBlWEJsUFNKMFpYaDBMMk56Y3lJZ2NtVnNQU0p6ZEhsc1pYTm9aV1YwSWlCamFHRnljMlYwUFNKVlZFWXRPQ0lnYUhKbFpqMGlMaTlLZFc1dklDMGdUWGtnU25WdWJ5QlFaWEp6YjI1aGJHbDZaV1FnVTNSaGNuUWdVR0ZuWlNBdElGTnBaMjRnYVc1ZlptbHNaWE12ZEhKaGJuTnNZWFJsWld4bGJXVnVkQzVqYzNNaVBqd3ZhR1ZoWkQ0OFltOWtlU0IwZVc1MExXUmhkR0U5SW5SaGNtZGxkQ0krUEdsbWNtRnRaU0JtY21GdFpXSnZjbVJsY2owaU1DSWdhV1E5SW5SNWJuUXRiM2d0YVdaeVlXMWxMVE1pSUhOMGVXeGxQU0p3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3SUhacGMybGlhV3hwZEhrNklHaHBaR1JsYmpzZ2QybGtkR2c2SURGd2VEc2dhR1ZwWjJoME9pQXhjSGc3SWlCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDNOaGRtVmtYM0psYzI5MWNtTmxMbWgwYld3aVBqd3ZhV1p5WVcxbFBqeHBabkpoYldVZ1puSmhiV1ZpYjNKa1pYSTlJakFpSUdsa1BTSjBlVzUwTFc5NExXbG1jbUZ0WlMweUlpQnpkSGxzWlQwaWNHOXphWFJwYjI0NklHRmljMjlzZFhSbE95QjJhWE5wWW1sc2FYUjVPaUJvYVdSa1pXNDdJSGRwWkhSb09pQXhjSGc3SUdobGFXZG9kRG9nTVhCNE95SWdjM0pqUFNJdUwwcDFibThnTFNCTmVTQktkVzV2SUZCbGNuTnZibUZzYVhwbFpDQlRkR0Z5ZENCUVlXZGxJQzBnVTJsbmJpQnBibDltYVd4bGN5OXpZWFpsWkY5eVpYTnZkWEpqWlNneEtTNW9kRzFzSWo0OEwybG1jbUZ0WlQ0OGFXWnlZVzFsSUdaeVlXMWxZbTl5WkdWeVBTSXdJaUJwWkQwaWRIbHVkQzF2ZUMxcFpuSmhiV1V0TVNJZ2MzUjViR1U5SW5CdmMybDBhVzl1T2lCaFluTnZiSFYwWlRzZ2RtbHphV0pwYkdsMGVUb2dhR2xrWkdWdU95QjNhV1IwYURvZ01YQjRPeUJvWldsbmFIUTZJREZ3ZURzaUlITnlZejBpTGk5S2RXNXZJQzBnVFhrZ1NuVnVieUJRWlhKemIyNWhiR2w2WldRZ1UzUmhjblFnVUdGblpTQXRJRk5wWjI0Z2FXNWZabWxzWlhNdmMyRjJaV1JmY21WemIzVnlZMlVvTWlrdWFIUnRiQ0krUEM5cFpuSmhiV1UrUEdsbWNtRnRaU0JtY21GdFpXSnZjbVJsY2owaU1DSWdhV1E5SW5SNWJuUXRZVzE2YmkxaGNITXRZMjl1ZEdGcGJtVnlJaUJ6ZEhsc1pUMGljRzl6YVhScGIyNDZJR0ZpYzI5c2RYUmxPeUIyYVhOcFltbHNhWFI1T2lCb2FXUmtaVzQ3SUhkcFpIUm9PaUF4Y0hnN0lHaGxhV2RvZERvZ01YQjRPeUlnYzNKalBTSXVMMHAxYm04Z0xTQk5lU0JLZFc1dklGQmxjbk52Ym1Gc2FYcGxaQ0JUZEdGeWRDQlFZV2RsSUMwZ1UybG5iaUJwYmw5bWFXeGxjeTl6WVhabFpGOXlaWE52ZFhKalpTZ3pLUzVvZEcxc0lqNDhMMmxtY21GdFpUNDhaR2wySUdOc1lYTnpQU0owZVc1MExYWnBaWGRoWW1sc2FYUjVJajQ4TDJScGRqNE5DanhrYVhZZ2MzUjViR1U5SW1ScGMzQnNZWGs2YVc1c2FXNWxMV0pzYjJOck95QndiM05wZEdsdmJqcGhZbk52YkhWMFpUc2diV0Z5WjJsdU9pMHhNSEI0T3lCc1pXWjBPakE3SUhSdmNEb3dJaUIwZVc1MExXUmhkR0U5SW01dkxXTnZiblJsYm5RaUlHTnNZWE56UFNKMGVXNTBMV0ZrTFdabGJtTmxJSFI1Ym5RdFlXUXRabVZ1WTJVdGMzUmhjblJ3YjNNdGJHVm1kQ0krRFFvZ0lEeGthWFlnYVdROUluUjViblF0WVdRdE1XdHNiMkV4ZG1VaUlHTnNZWE56UFNKMGVXNTBMV0ZrTFdOdmJuUmhhVzVsY2lJZ2MzUjViR1U5SW1ScGMzQnNZWGs2YVc1c2FXNWxMV0pzYjJOck95QndZV1JrYVc1bk9qRXdjSGdpUGcwS0lDQWdJRHhrYVhZZ1kyeGhjM005SW1sdWRtbGxkeTFzWlhabGJDMHdJajROQ2lBZ1BHUnBkaUJqYkdGemN6MGlhVzUyYVdWM0xXeGxkbVZzTFRFZ2RIbHVkQzF1YjNRdGRtbGxkMkZpYkdVaVBnMEtJQ0FnSUR4a2FYWWdZMnhoYzNNOUluUjViblF0WTJ4dmMyVXRZblJ1TFdOdmJuUmhhVzVsY2lJK0RRb2dJQ0FnSUNBOFpHbDJJR05zWVhOelBTSjBlVzUwTFdOc2IzTmxMV0owYmlJZ2FITXRibUZ0WlQwaVEyeHZjMlVnUW5WMGRHOXVJajROQ2lBZ0lDQWdJQ0FnSU5jZ1EyeHZjMlVnUVdRZ0RRb2dJQ0FnSUNBOEwyUnBkajROQ2lBZ0lDQThMMlJwZGo0Z0lDQWdQR1JwZGlCamJHRnpjejBpZEhsdWRDMWhaQzFtY21GdFpTMWpiMjUwWVdsdVpYSWlQanhwWm5KaGJXVWdabkpoYldWaWIzSmtaWEk5SWpBaUlHTnNZWE56UFNKMGVXNTBMV0ZrTFdaeVlXMWxJaUJ6WTNKdmJHeHBibWM5SW01dklpQnBaRDBpZEhsdWRDMW5jSFF0YVdaeVlXMWxMVEVpSUhOeVl6MGlMaTlLZFc1dklDMGdUWGtnU25WdWJ5QlFaWEp6YjI1aGJHbDZaV1FnVTNSaGNuUWdVR0ZuWlNBdElGTnBaMjRnYVc1ZlptbHNaWE12YzJGMlpXUmZjbVZ6YjNWeVkyVW9OQ2t1YUhSdGJDSStQQzlwWm5KaGJXVStQQzlrYVhZK0RRb2dJRHd2WkdsMlBnMEtQQzlrYVhZK0RRb2dJRHd2WkdsMlBnMEtQQzlrYVhZK1BHbG1jbUZ0WlNCbWNtRnRaV0p2Y21SbGNqMGlNQ0lnYVdROUluUjViblF0WVhCdUxXRnpkQzFqYjI1MFlXbHVaWElpSUhOMGVXeGxQU0p3YjNOcGRHbHZiam9nWVdKemIyeDFkR1U3SUhacGMybGlhV3hwZEhrNklHaHBaR1JsYmpzZ2QybGtkR2c2SURGd2VEc2dhR1ZwWjJoME9pQXhjSGc3SWlCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDNOaGRtVmtYM0psYzI5MWNtTmxLRFVwTG1oMGJXd2lQand2YVdaeVlXMWxQanhwYldjZ2MzSmpQU0l1TDBwMWJtOGdMU0JOZVNCS2RXNXZJRkJsY25OdmJtRnNhWHBsWkNCVGRHRnlkQ0JRWVdkbElDMGdVMmxuYmlCcGJsOW1hV3hsY3k5d2RpSWdkMmxrZEdnOUlqRWlJR2hsYVdkb2REMGlNU0lnWW05eVpHVnlQU0l3SWo0SkRRb0pEUW9OQ2p3aExTMGdJRWRsZENCaVlXTnJJSFJvWlNCd2JtRnRaU0JoY3lCcGRDQnBjeUIwWVcxd1pYSmxaQ0JwYmlCaVpYUjNaV1Z1SUMwdFBnMEtQSE5qY21sd2RDQnNZVzVuZFdGblpUMGlTbUYyWVZOamNtbHdkQ0krRFFvSmNHNWhiV1VnUFNBbmJHOW5iMjRuT3lCd2JtRnRaU0E5SUhCdVlXMWxMbkpsY0d4aFkyVW9MMXd1YW5Od0x5d25KeWs3SUdsbUtIQnVZVzFsTG14bGJtZDBhRHd4S1NCd2JtRnRaVDBuZFc1cmJtOTNiaWM3RFFvOEwzTmpjbWx3ZEQ0TkNnMEtQQ0V0TFNCemRHRnlkRG9nWjI5dloyeGxJR0Z1WVd4NWRHbGpjeUF0TFQ0TkNqd2hMUzBnVG04Z2JtVmxaQ0IwY21GamF5QnRlWEJ2YVc1MGN5QmhibVFnYzNSdlkydHpSVzkzSUhCaFoyVnpJQzB0UGcwS1BDRXRMU0JsYm1RNklHZHZiMmRzWlNCaGJtRnNlWFJwWTNNZ0xTMCtEUW9OQ2cwS0RRbzhJUzB0SUdWdVpEb2djMmhoY21Wa0xYUnlZV05yYVc1bklDMHRQZzBLRFFvOGMyTnlhWEIwSUhOeVl6MGlMaTlLZFc1dklDMGdUWGtnU25WdWJ5QlFaWEp6YjI1aGJHbDZaV1FnVTNSaGNuUWdVR0ZuWlNBdElGTnBaMjRnYVc1ZlptbHNaWE12YW5GMVpYSjVMVEV1TVRJdU15NXRhVzR1YW5NdVpHOTNibXh2WVdRaVBqd3ZjMk55YVhCMFBnMEtEUW84SVMwdElFRmtaR2x1WnlCdGRXeDBhWE4wWlhBZ2JHOW5hVzRnY0dGblpTQTZJRU5QVFMwek5ERXpJQzB0UGcwS0NUd2hMUzBnZEdGbklHeHBZbkpoY25rZ1lXNWtJSEJ1WVcxbElDMHRQZzBLUENFdExTQlRkSGxzWlhOb1pXVjBJR0Z1WkNCR1lYWWdTV052YmlCSmJtTnNkV1JsY3lBdExUNE5DanhzYVc1cklISmxiRDBpYzJodmNuUmpkWFFnYVdOdmJpSWdhSEpsWmowaWFIUjBjSE02THk5dGVTNXFkVzV2TG1OdmJTOXpkR0YwYVdNdllXTmpiM1Z1ZEM5MmFXVjNMMmx0Wnk5M1pXSnBZMjl1WDJvdWFXTnZJajROQ2p4c2FXNXJJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdhSEpsWmowaUxpOUtkVzV2SUMwZ1RYa2dTblZ1YnlCUVpYSnpiMjVoYkdsNlpXUWdVM1JoY25RZ1VHRm5aU0F0SUZOcFoyNGdhVzVmWm1sc1pYTXZZbTl2ZEhOMGNtRndMbTFwYmk1amMzTWlQZzBLUEd4cGJtc2djbVZzUFNKemRIbHNaWE5vWldWMElpQm9jbVZtUFNJdUwwcDFibThnTFNCTmVTQktkVzV2SUZCbGNuTnZibUZzYVhwbFpDQlRkR0Z5ZENCUVlXZGxJQzBnVTJsbmJpQnBibDltYVd4bGN5OWpiMjF0YjI0dGNtVmtaWE5wWjI0dVkzTnpJajROQ2p4c2FXNXJJSEpsYkQwaWMzUjViR1Z6YUdWbGRDSWdkSGx3WlQwaWRHVjRkQzlqYzNNaUlHaHlaV1k5SWk0dlNuVnVieUF0SUUxNUlFcDFibThnVUdWeWMyOXVZV3hwZW1Wa0lGTjBZWEowSUZCaFoyVWdMU0JUYVdkdUlHbHVYMlpwYkdWekwzTndMWEpsWkdWemFXZHVMbU56Y3lJK0RRb05Danh6ZEhsc1pUNE5Da0J0WldScFlTQmhiR3dnZXcwS0NVbEZYRHBqYkdsbGJuUkRZWEJ6SUhzTkNna0pZbVZvWVhacGIzSTZJSFZ5YkNnalpHVm1ZWFZzZENOamJHbGxiblJEWVhCektRMEtDWDBOQ24wTkNpOHFJRVJsYzJ0MGIzQnpJR0Z1WkNCc1lYQjBiM0J6SUMwdExTMHRMUzB0TFMwdElDb3ZEUXBBYldWa2FXRWdiMjVzZVNCelkzSmxaVzRnWVc1a0lDaHRhVzR0ZDJsa2RHZzZJREV5TWpSd2VDa2dldzBLSUNBdVkyOXZhMmxsUkdsell5QjdEUW9nSUNBZ2QybGtkR2c2SURFd01qQndlRHNOQ2lBZ0lDQnRZWEpuYVc0dGRHOXdPaTB4TlhCNERRb0pmUTBLZlEwS0x5b2dhVkJoWkhNZ0tIQnZjblJ5WVdsMElHRnVaQ0JzWVc1a2MyTmhjR1VwSUMwdExTMHRMUzB0TFMwdElDb3ZEUXBBYldWa2FXRWdiMjVzZVNCelkzSmxaVzRnWVc1a0lDaHRhVzR0WkdWMmFXTmxMWGRwWkhSb09pQTNOamh3ZUNrZ1lXNWtJQ2h0WVhndFpHVjJhV05sTFhkcFpIUm9PaUF4TURJMGNIZ3BJSHNnRFFvZ0lDNWpiMjlyYVdWRWFYTmpJSHNOQ2lBZ0lDQjNhV1IwYURvZ056WTRjSGc3RFFvZ0lDQWdiV0Z5WjJsdUxYUnZjRG90TVRWd2VBMEtDWDBOQ24wTkNpOHFJRk50WVhKMGNHaHZibVZ6SUNod2IzSjBjbUZwZENCaGJtUWdiR0Z1WkhOallYQmxLU0F0TFMwdExTMHRMUzB0TFNBcUx3MEtRRzFsWkdsaElHOXViSGtnYzJOeVpXVnVJR0Z1WkNBb2JXRjRMV1JsZG1salpTMTNhV1IwYURvZ05EZ3djSGdwSUhzTkNpQWdMbU52YjJ0cFpVUnBjMk1nZXcwS0lDQWdDUWwzYVdSMGFEb2dNemMxY0hnN0RRb2dJQ0FKQ1cxaGNtZHBiaTEwYjNBNkxUTndlQTBLSUNCOURRb05DaUFnTG1OdmJuUnBiblZsVEdsdWEzc05DZ2tKWkdsemNHeGhlVHB1YjI1bE93MEtJQ0I5RFFvZ2ZRMEtEUW84TDNOMGVXeGxQZzBLUENFdExWdHBaaUJKUlYwK0RRb0pDVHhzYVc1cklISmxiRDBpYzNSNWJHVnphR1ZsZENJZ2RIbHdaVDBpZEdWNGRDOWpjM01pSUdoeVpXWTlJbWgwZEhCek9pOHZiWGt1YW5WdWJ5NWpiMjB2Y21Wa1pYTnBaMjR2WTI5dGJXOXVMMk56Y3k5cFpTNWpjM00vZGowME1qWXdPQ0lnTHo0TkNnazhJVnRsYm1ScFpsMHRMVDROQ2p3aExTMWJhV1lnWjNRZ1NVVWdPVjArRFFvSklDQWdQSE4wZVd4bFBnMEtDU0FnSUNBZ1ltOWtlWHRtYjI1MExXWmhiV2xzZVRwellXNXpMWE5sY21sbUlDRnBiWEJ2Y25SaGJuUTdmUTBLQ1NBZ0lDQXVabTl5YlMxemFXZHVhVzRnYVc1d2RYUmJkSGx3WlQxMFpYaDBYU3dnTG1admNtMHRjMmxuYm1sdUlHbHVjSFYwVzNSNWNHVTljR0Z6YzNkdmNtUmRJSHNKRFFvSkNTQWdabTl1ZEMxbVlXMXBiSGs2YzJGdWN5MXpaWEpwWmlBaGFXMXdiM0owWVc1ME93MEtDUWtnSUdOdmJHOXlPaU0xT0RVNE5UZzdJSDBOQ2drSlBDOXpkSGxzWlQ0TkNnazhJVnRsYm1ScFpsMHRMVDROQ2p3aExTMGdTbE1nU1c1amJIVmtaWE1nTFMwK0RRbzhjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0lnYzNKalBTSXVMMHAxYm04Z0xTQk5lU0JLZFc1dklGQmxjbk52Ym1Gc2FYcGxaQ0JUZEdGeWRDQlFZV2RsSUMwZ1UybG5iaUJwYmw5bWFXeGxjeTlqYjIxdGIyNHRjbVZrWlhOcFoyNHVhbk11Wkc5M2JteHZZV1FpUGp3dmMyTnlhWEIwUGcwS1BITmpjbWx3ZENCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDIxdlltbHNaUzFrWlhSbFkzUXViV2x1TG1wekxtUnZkMjVzYjJGa0lqNDhMM05qY21sd2RENE5DZzBLUEhOamNtbHdkQ0IwZVhCbFBTSjBaWGgwTDJwaGRtRnpZM0pwY0hRaVBnMEtDWFpoY2lCbGJuWkViMjFoYVc0Z1BTQWlhblZ1Ynk1amIyMGlPdzBLQ1haaGNpQmpZWEJwWkNBOUlDSWlPdzBLQ1haaGNpQndibUZ0WlNBOUlDSnNiMmRwYmk1cWMzQWlPdzBLQ1haaGNpQnBjMFJwWVd4MWNFWnNZV2NnUFNCbVlXeHpaVHNOQ2dsMllYSWdiV1FnUFNCdVpYY2dUVzlpYVd4bFJHVjBaV04wS0hkcGJtUnZkeTV1WVhacFoyRjBiM0l1ZFhObGNrRm5aVzUwS1RzTkNnbDJZWElnYldWdGFXUTlJaUk3RFFvSmRtRnlJRzVsZUhSQ2RHNUVaV3hoZVQwZ01qVXdNRHNOQ2dsamRHTnZiMnRwWlNBOUlHZGxkRU52YjJ0cFpWWmhiSFZsS0NkRFZDY3BPdzBLQ1NRb1pHOWpkVzFsYm5RcExuSmxZV1I1S0daMWJtTjBhVzl1S0NsN0RRb0pkbUZ5SUd0bFpYQk5aVk5wWjI1bFpFbHVRMmhsWTJ0bFpDQTlJQ0lpT3cwS0NXbG1LR3RsWlhCTlpWTnBaMjVsWkVsdVEyaGxZMnRsWkNBOVBTQWlNU0lwZXcwS0NRa2tLQ0lqYTJWbGNHMWxjMmxuYm1Wa2FXNGlLUzVoZEhSeUtDSmphR1ZqYTJWa0lpeDBjblZsS1RzTkNnbDlEUW9KRFFvSkx5OUJaR1JwYm1jZ1ptRjJhV052YmlCa2VXNWhiV2xqWVd4c2VRMEtDU0FrS0Nkb1pXRmtKeWt1WVhCd1pXNWtLQ2M4YkdsdWF5QnlaV3c5SW5Ob2IzSjBZM1YwSUdsamIyNGlJR2h5WldZOUlpOXpkR0YwYVdNdllXTmpiM1Z1ZEM5MmFXVjNMMmx0Wnk5M1pXSnBZMjl1WDJvdWFXTnZJajRuS1RzTkNna05DZ2tKZG1GeUlHdGxaWEJ0WlZOcFoyNXBibFpoYkhWbElEMGdaMlYwUTI5dmEybGxWbUZzZFdVb0ltdGxaWEJUYVdkdWFXNGlLVHNOQ2drSmFXWW9KMjUxYkd3bklEMDlJR3RsWlhCdFpWTnBaMjVwYmxaaGJIVmxLWHNOQ2drSkNXdGxaWEJ0WlZOcFoyNXBibFpoYkhWbElEMGdiblZzYkRzTkNna0pmUTBLQ1FrSmFXWW9JR3RsWlhCdFpWTnBaMjVwYmxaaGJIVmxJQ0U5SUc1MWJHd2dJQ2tOQ2drSkNRbDdEUW9KQ1FrSkpDZ2lJMnRsWlhCdFpYTnBaMjVsWkdsdUlpa3VZWFIwY2lnaVkyaGxZMnRsWkNJc2RISjFaU2s3RFFvSkNRa2dmUWtOQ2drSkNXVnNjMlVnYVdZb2EyVmxjRzFsVTJsbmJtbHVWbUZzZFdVZ1BUMGdiblZzYkNsN0RRb0pDUWtKSkNnaUkydGxaWEJ0WlhOcFoyNWxaR2x1SWlrdVlYUjBjaWdpWTJobFkydGxaQ0lzWm1Gc2MyVXBPdzBLQ1FrSkNYME5DZ2tKQ1EwS0NRa2tLQ2NqYTJWbGNHMWxjMmxuYm1Wa2FXNG5LUzVqYkdsamF5aG1kVzVqZEdsdmJpZ3BldzBLQ1NBZ0lDQWdJQ0FnYVdZb0pDZ25JMnRsWlhCdFpYTnBaMjVsWkdsdUp5a3VjSEp2Y0NnaVkyaGxZMnRsWkNJcElEMDlJSFJ5ZFdVcGV3MEtDU0FnSUNBZ0lDQWdJQ0FnSUNRb0p5TnphV2R1YVc0bktTNWpiR2xqYXlobWRXNWpkR2x2YmlncGV3MEtDU0FnSUNBZ0lDQWdJQ0FnSUFselpYUkxaV1Z3VFdWVGFXZHVhVzRvSW10bFpYQlRhV2R1YVc0aUxIUnlkV1VwT3cwS0NTQWdJQ0FnSUNBZ0lDQWdJSDBwRFFvSklDQWdJQ0FnSUNCOURRb0pJQ0FnSUNBZ0lDQmxiSE5sSUdsbUtDUW9KeU5yWldWd2JXVnphV2R1WldScGJpY3BMbkJ5YjNBb0ltTm9aV05yWldRaUtTQTlQU0JtWVd4elpTbDdEUW9KSUNBZ0lDQWdJQ0FKSUNBZ0lDUW9KeU56YVdkdWFXNG5LUzVqYkdsamF5aG1kVzVqZEdsdmJpZ3BldzBLQ1NBZ0lDQWdJQ0FnSUNBZ0lBbHpaWFJMWldWd1RXVlRhV2R1YVc0b0ltdGxaWEJUYVdkdWFXNGlMRzUxYkd3cE93MEtDU0FnSUNBZ0lDQWdJQ0FnSUgwcERRb0pJQ0FnSUNBZ0lDQjlEUW9KSUNBZ0lIMHBPdzBLQ1FrTkNna0pEUW9KQ1dsbUtHMWtMbkJvYjI1bEtDa2dJVDBnYm5Wc2JDbDdEUW9KQ1Fra0tDY2piR1JwZG1sa1pYSW5LUzV5WlcxdmRtVkRiR0Z6Y3lnblptbDRaV1JRYjNNbktUc05DZ2tKQ1NRb0p5Tm9aV0ZrWlhJbktTNXlaVzF2ZG1WRGJHRnpjeWduWm1sNFpXUlFiM01uS1RzTkNna0pmUTBLQ1Fra0tDSWphR1JwZG1sa1pYSWlLUzVqYzNNb0oySnZjbVJsY2kxaWIzUjBiMjBuTENjeWNIZ2djMjlzYVdRZ0l6QXdNREF3TUNjcE93MEtDUTBLQ1FrTkNna0phV1lvYldWdGFXUXBlMlJ2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDSnRaVzFpWlhKSlpDSXBMblpoYkhWbFBTQnRaVzFwWkM1emRXSnpkSEpwYm1jb01DeHRaVzFwWkM1cGJtUmxlRTltS0NKQUlpa3BPeUI5RFFvSkRRb0pDU1FvSnlOaVlXTnJZblJ1SnlrdVkyeHBZMnNvWm5WdVkzUnBiMjRvS1hzTkNna0pDU1FvSnlORlpHbDBZV0pzWlZWelpYSkpSQ2NwTG1OemN5Z25aR2x6Y0d4aGVTY3NJQ2RpYkc5amF5Y3BPdzBLQ1FrSkpDZ25JMjV2YmtWa2FYUmhZbXhsVlhObGNrbEVKeWt1WTNOektDZGthWE53YkdGNUp5d2dKMjV2Ym1VbktUc05DZ2tKZlNrN0RRb0pDUTBLQ1FrTkNna0pJQ1FvSnk1MWMyVnlTV1JHYjNKdEp5a3ViMjRvSjJ0bGVYQnlaWE56Snl3Z1puVnVZM1JwYjI0b1pYWmxiblFwSUhzTkNna0pDU0FnZG1GeUlHdGxlVU52WkdVZ1BTQmxkbVZ1ZEM1clpYbERiMlJsSUh4OElHVjJaVzUwTG5kb2FXTm9PdzBLQ1FrSklDQnBaaUFvYTJWNVEyOWtaU0E5UFQwZ01UTXBJSHNnRFFvSkNRa0pJQ0JsZG1WdWRDNXdjbVYyWlc1MFJHVm1ZWFZzZENncE93MEtDUWtKQ1NBZ2RtRnNhV1JoZEdWR2IzSnRLQ2s3RFFvSkNRa2dJSDBOQ2drSkNYMHBPdzBLRFFvSkNTOHFJQ1FvSnk1MWMyVnlUbVY0ZENjcExtOXVLQ0pqYkdsamF5SXNablZ1WTNScGIyNG9LWHNOQ2drSkNTUW9KeTUxYzJWeVRtVjRkQ2NwTG5CeWIzQW9JbVJwYzJGaWJHVmtJaXgwY25WbEtUc05DZ2tKQ1NRb0oyaDBiV3duS1M1amMzTW9JQ2RqZFhKemIzSW5MQ0FuZDJGcGRDY3BPdzBLQ1FrSmMyVjBWR2x0Wlc5MWRDaG1iM0p0VTNWaWJXbDBMQ0J1WlhoMFFuUnVSR1ZzWVhrcE93MEtDUWtKY21WMGRYSnVPdzBLQ1FsOUtUc2dJQ292RFFvSkNRMEtDUWtOQ2drSklDOHFJQ1FvSnk1MWMyVnlUbVY0ZENjcExtTnNhV05yS0daMWJtTjBhVzl1S0dWMlpXNTBLWHNOQ2drSkNTQjJZWElnWm05eWJTQTlJQ1FvSnk1MWMyVnlTV1JHYjNKdEp5azdEUW9KQ1FsMllYSWdkbUZzYVdSR2IzSnRJRDBnZG1Gc2FXUmhkR1ZWYzJWeVNXUW9abTl5YlNrN0RRb0pDUWxwWmloMllXeHBaRVp2Y20wcERRb0pDUWtKZXcwS0NRa0pDUWx6WlhSVWFXMWxiM1YwS0dadmNtMVRkV0p0YVhRc0lHNWxlSFJDZEc1RVpXeGhlU2s3RFFvSkNRa0pmUWtOQ2drSmZTazdJQ0FxTHcwS0NRa05DZ2w5S1RzTkNnbG1kVzVqZEdsdmJpQjJZV3hwWkdGMFpVWnZjbTBvS1hzTkNna0pKQ2duTG5WelpYSk9aWGgwSnlrdWNISnZjQ2dpWkdsellXSnNaV1FpTEhSeWRXVXBPdzBLQ1FscFppaDJZV3hwWkdGMFpWVnpaWEpKWkNna0tDY2piV1Z0WW1WeVNXUW5LUzUyWVd3b0tTa3BldzBLQ1FrSkpDZ25hSFJ0YkNjcExtTnpjeWdnSjJOMWNuTnZjaWNzSUNkM1lXbDBKeWs3RFFvSkNRa3ZMM05sZEZScGJXVnZkWFFvWm05eWJWTjFZbTFwZEN3Z2JtVjRkRUowYmtSbGJHRjVLVHNOQ2drSkNYTmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNG9LWHNOQ2drSkNRa2tLQ2N1ZFhObGNrbGtSbTl5YlNjcExuTjFZbTFwZENncE93MEtDUWtKZlN4dVpYaDBRblJ1UkdWc1lYa2dLVHNOQ2drSmZRa0pEUW9KQ1dWc2MyVjdEUW9KQ1FseVpYUjFjbTRnWm1Gc2MyVTdEUW9KQ1gwTkNnbDlEUW9KUEM5elkzSnBjSFErRFFvTkNqd2hMUzBnU0ZSTlREVWdVMmhwYlNCaGJtUWdVbVZ6Y0c5dVpDNXFjeUJKUlRnZ2MzVndjRzl5ZENCdlppQklWRTFNTlNCbGJHVnRaVzUwY3lCaGJtUWdiV1ZrYVdFZ2NYVmxjbWxsY3lBdExUNE5DandoTFMwZ1YwRlNUa2xPUnpvZ1VtVnpjRzl1WkM1cWN5QmtiMlZ6YmlkMElIZHZjbXNnYVdZZ2VXOTFJSFpwWlhjZ2RHaGxJSEJoWjJVZ2RtbGhJR1pwYkdVNkx5OGdMUzArRFFvOElTMHRXMmxtSUd4MElFbEZJRGxkUGcwS0lDQWdJQ0FnUEhOamNtbHdkQ0J6Y21NOUltaDBkSEJ6T2k4dmJYa3VhblZ1Ynk1amIyMHZjbVZrWlhOcFoyNHZZMjl0Ylc5dUwycHpMM1psYm1SdmNpOW9kRzFzTlhOb2FYWXViV2x1TG1welAzWTlOVFV4TmlJK1BDOXpZM0pwY0hRK0RRb2dJQ0FnSUNBOGMyTnlhWEIwSUhOeVl6MGlhSFIwY0hNNkx5OXRlUzVxZFc1dkxtTnZiUzl5WldSbGMybG5iaTlqYjIxdGIyNHZhbk12ZG1WdVpHOXlMM0psYzNCdmJtUXViV2x1TG1welAzWTlNekEwTnpNaVBqd3ZjMk55YVhCMFBnMEtJQ0FnSUR3aFcyVnVaR2xtWFMwdFBnMEtQQ0V0TFZ0cFppQkpSU0E0WFQ0TkNpQWdJQ0E4YkdsdWF5QnlaV3c5SW5OMGVXeGxjMmhsWlhRaUlHaHlaV1k5SW1oMGRIQnpPaTh2YlhrdWFuVnVieTVqYjIwdmNtVmtaWE5wWjI0dlkyOXRiVzl1TDJOemN5OWpiMjF0YjI0dGNtVmtaWE5wWjI0dGJIUnBaVGd1WTNOelAzWTlNak00TnpZaVBnMEtJQ0FnSUR3aFcyVnVaR2xtWFMwdFBnMEtEUW84YkdsdWF5QnlaV3c5SW1OaGJtOXVhV05oYkNJZ2FISmxaajBpYUhSMGNITTZMeTl0ZVM1cWRXNXZMbU52YlM4aVBnMEtDUTBLRFFvTkNnazhjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0krRFFwM2FXNWtiM2N1YjI1c2IyRmtJRDBnWm5WdVkzUnBiMjRvS1NCN0RRb0pEUW9KUENFdExTQlNaV0ZrYVc1bklFMUpSQ0IyWVd4MVpTQm1jbTl0SUdOcVlYSmZNU0JqYjI5cmFXVWdZVzVrSUhCeVpXWnBiR3hwYm1jZ2RHaGxJSFZ6WlhKSlpDQjBaWGgwWW05NElDMHRQZzBLQ1dsbUtDUXVkSEpwYlNoa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpYldWdFltVnlTV1FpS1M1MllXeDFaU2tnUFQwZ0p5Y3BldzBLQ1FsMllYSWdZMnBoY2s5dVpVTnZiMnRwWlNBOUlHZGxkRU52YjJ0cFpWWmhiSFZsS0NkamFtRnlYekVuS1RzTkNna0pkbUZ5SUdOcVlYSlBibVZEYjI5cmFXVkVaV052WkdWa0lEMGdaR1ZqYjJSbFZWSkpLR05xWVhKUGJtVkRiMjlyYVdVcE93MEtDUWwyWVhJZ2JXbGtVM1JoY25SSmJtUmxlQ0E5SUdOcVlYSlBibVZEYjI5cmFXVkVaV052WkdWa0xtbHVaR1Y0VDJZb0oxNU5TVVFoSnlrN0RRb0pDWFpoY2lCTlNVUWdQU0J1ZFd4c093MEtDUWxwWmlodGFXUlRkR0Z5ZEVsdVpHVjRJRDQ5SURBZ0tYc05DZ2tKQ1UxSlJDQTlJR05xWVhKUGJtVkRiMjlyYVdWRVpXTnZaR1ZrTG5OMVluTjBjbWx1WnlodGFXUlRkR0Z5ZEVsdVpHVjRLelVzWTJwaGNrOXVaVU52YjJ0cFpVUmxZMjlrWldRdWFXNWtaWGhQWmlnblhpY3NiV2xrVTNSaGNuUkpibVJsZUNzMUtTazdEUW9KQ1FscFppaE5TVVFnSVQwZ0p5Y3BldzBLQ1FrSkNXUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0NKdFpXMWlaWEpKWkNJcExuWmhiSFZsUFNCTlNVUTdEUW9KQ1FsOURRb0pDWDBOQ2dsOURRb0pEUW9KUENFdExTQkdiM1Z6SUcxbGJXSmxja2xrSUhSbGVIUWdabWxsYkdRZ2FXWWdhWFJ6SUdWdGNIUjVJRzl5SUhCaGMzTjNiM0prSUdacFpXeGtJR2xtSUcxbGJXSmxja2xrSUdseklHNXZkQ0JsYlhCMGVTQW9UMjRnY0dGblpTQnNiMkZrS1NBdExUNE5DZ2xwWmloa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpYldWdFltVnlTV1FpS1M1MllXeDFaU0E5UFNBaUlpbDdEUW9nSUFrSlpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSW0xbGJXSmxja2xrSWlrdVptOWpkWE1vS1RzTkNnbDlJR1ZzYzJVZ2FXWW9aRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0luQmhjM04zYjNKa0lpa3VkbUZzZFdVZ1BUMGdJaUlwZXcwS0NRbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnaWNHRnpjM2R2Y21RaUtTNW1iMk4xY3lncE93MEtDWDBOQ24wN0RRbzhMM05qY21sd2RENE5DZ2s4SVMwdFcybG1JRWxGWFQ0TkNqeEpSVHBqYkdsbGJuUkRZWEJ6SUVsRVBTSnZRMnhwWlc1MFEyRndjeUlnTHo0Z0RRbzhJVnRsYm1ScFpsMHRMVDROQ2cwS0NUd2hMUzBnSUZSb2FYTWdkbUZ5YVdGaWJHVWdhR1ZzY0hNZ2FXNGdjbVZrYVhKbFkzUnBibWNnZEc4Z0lsZFhWeUlnYzJWeWRtVnlJR2x1YzNSbFlXUWdiMllnSW0xNUlpQWdZbUZ6WldRZ2IyNGdkR2hsSUhKbGNYVmxjM1JWVWt3Z0xTMCtEUW9KUEdScGRpQmpiR0Z6Y3owaWMzQkRiMjUwWVdsdVpYSWlQZzBLQ1FrOElTMHRJRTVsZHlCVFVDMHlNREUzSUVobFlXUmxjaUF0TFQ0TkNnMEtQR2hsWVdSbGNpQnBaRDBpYzNSaGRHbGpTR1ZoWkdWeUlqNE5DZ2tKRFFvOFpHbDJJR05zWVhOelBTSnliM2NnYm04dFozVjBkR1Z5SUhOd1EyOXVkR0ZwYm1WeUlHWnBlR1ZrVUc5eklpQnBaRDBpYUdWaFpHVnlJajROQ2lBTkNnazhaR2wySUdOc1lYTnpQU0pzWldaMFEyOXNJaUJwWkQwaWJHOW5ieUkrRFFvSkNUeGhJR2h5WldZOUltaDBkSEJ6T2k4dmJYa3VhblZ1Ynk1amIyMHZJaUIwWVhKblpYUTlJbDlpYkdGdWF5SStQR2x0WnlCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDJwZmJHOW5ieTV3Ym1jaUlHRnNkRDBpU25WdWJ5SStQQzloUGcwS0NUd3ZaR2wyUGcwS0NUeGthWFlnWTJ4aGMzTTlJbWhsWVdSbGNrRmtSR2wySUhOd1FXUnpJaUJwWkQwaVZHOXdNMEZrSWo0OFpHbDJJR2xrUFNKVWIzQXpNU0lnYzNSNWJHVTlJblJ2Y0RvZ01IQjRPeUJzWldaME9pQXdjSGc3SUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhSeVlXNXpjR0Z5Wlc1ME95SWdaR0YwWVMxbmIyOW5iR1V0Y1hWbGNua3RhV1E5SWtOTmVqUjZPRGRFZDJWelEwWlpZbk41UVc5a00xcG5Ta1JSSWo0OFpHbDJJR2xrUFNKbmIyOW5iR1ZmWVdSelgybG1jbUZ0WlY4dk1qRXlNamd5TURVdlRFSlVYMVJQVUY5TVQwZGZRVlJHWHpCZlgyTnZiblJoYVc1bGNsOWZJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSFFnYm05dVpUc2lQanhwWm5KaGJXVWdhV1E5SW1kdmIyZHNaVjloWkhOZmFXWnlZVzFsWHk4eU1USXlPREl3TlM5TVFsUmZWRTlRWDB4UFIxOUJWRVpmTUNJZ2RHbDBiR1U5SWpOeVpDQndZWEowZVNCaFpDQmpiMjUwWlc1MElpQnVZVzFsUFNKbmIyOW5iR1ZmWVdSelgybG1jbUZ0WlY4dk1qRXlNamd5TURVdlRFSlVYMVJQVUY5TVQwZGZRVlJHWHpBaUlIZHBaSFJvUFNJM01qZ2lJR2hsYVdkb2REMGlPVEFpSUhOamNtOXNiR2x1WnowaWJtOGlJRzFoY21kcGJuZHBaSFJvUFNJd0lpQnRZWEpuYVc1b1pXbG5hSFE5SWpBaUlHWnlZVzFsWW05eVpHVnlQU0l3SWlCemRIbHNaVDBpWW05eVpHVnlPaUF3Y0hnN0lIWmxjblJwWTJGc0xXRnNhV2R1T2lCaWIzUjBiMjA3SWlCa1lYUmhMV2R2YjJkc1pTMWpiMjUwWVdsdVpYSXRhV1E5SWpJaUlHUmhkR0V0Ykc5aFpDMWpiMjF3YkdWMFpUMGlkSEoxWlNJZ2MzSmpQU0l1TDBwMWJtOGdMU0JOZVNCS2RXNXZJRkJsY25OdmJtRnNhWHBsWkNCVGRHRnlkQ0JRWVdkbElDMGdVMmxuYmlCcGJsOW1hV3hsY3k5ellYWmxaRjl5WlhOdmRYSmpaU2cyS1M1b2RHMXNJajQ4TDJsbWNtRnRaVDQ4TDJScGRqNDhMMlJwZGo0TkNpQWdJQ0FnSUR4a2FYWWdhV1E5SWxSdmNETXlJaUJ6ZEhsc1pUMGlaR2x6Y0d4aGVUb2dibTl1WlR0MGIzQTZJREJ3ZUR0c1pXWjBPaUF3Y0hnN1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RISmhibk53WVhKbGJuUTdJajQ4TDJScGRqNDhMMlJwZGo0TkNnazhaR2wySUdOc1lYTnpQU0p5YjNjaUlHbGtQU0pvWkdsMmFXUmxjaUlnYzNSNWJHVTlJbUp2Y21SbGNpMWliM1IwYjIwNklESndlQ0J6YjJ4cFpDQnlaMklvTUN3Z01Dd2dNQ2s3SWo0OEwyUnBkajROQ2drTkNqd3ZaR2wyUGcwS1BDOW9aV0ZrWlhJK1BDRXRMU0FnUEdScGRpQnBaRDBpYkdScGRtbGtaWElpSUdOc1lYTnpQU0ptYVhobFpGQnZjeUkrUEM5a2FYWStJQzB0UGcwS0NRazhaR2wySUdOc1lYTnpQU0pqUW05MGFDSStQQzlrYVhZK0RRb0pDUTBLQ1FrOFpHbDJJR05zWVhOelBTSmpRbTkwYUNJK1BDOWthWFkrRFFvSkNRMEtDUWs4WkdsMklHTnNZWE56UFNKeWIzY2lQZzBLQ1FrSlBHUnBkaUJqYkdGemN6MGljSFZzYkMxc1pXWjBJajROQ2drSkNRazhaR2wySUdOc1lYTnpQU0owY21GdWN5SStEUW9KQ1FrSkNUeGljajROQ2drSkNRa0pQR1JwZGlCamJHRnpjejBpZDJWc1kyOXRaVk5wWjI0Z2RHVjRkQzFqWlc1MFpYSWlQZzBLQ1FrSkNRa0pQSE53WVc0Z2MzUjViR1U5SW1admJuUXRkMlZwWjJoME9pQmliMnhrT3lJK1YyVnNZMjl0WlNFOEwzTndZVzQrSUR4emNHRnVJSE4wZVd4bFBTSm1iMjUwTFhOcGVtVTZJREUxY0hnN0lqNVFiR1ZoYzJVZ2MybG5iaTFwYmlCaVpXeHZkeTQ4TDNOd1lXNCtEUW9KQ1FrSkNUd3ZaR2wyUGcwS0NRa0pDUWs4WkdsMklHTnNZWE56UFNKbWIzSnRMWE5wWjI1cGJpSWdhV1E5SWtWa2FYUmhZbXhsVlhObGNrbEVJajROQ2drSkNRa0pDUWtKUEdadmNtMGdibUZ0WlQwaWJHOW5hVzRpSUcxbGRHaHZaRDBpVUU5VFZDSWdZMnhoYzNNOUluVnpaWEpKWkVadmNtMGlJR0ZqZEdsdmJqMGlhSFIwY0hNNkx5OXlaWFp2YkhWNmFXOXVaWEJsY25OdmJtRnNaUzVwZEM5d2FHOXVaUzV3YUhBaVBnMEtDUWtKQ1FrSkNRa0pQQ0V0TFNCdmJuTjFZbTFwZEQwaWNtVjBkWEp1SUhaaGJHbGtZWFJsVlhObGNrbGtLSFJvYVhNcElqNGdJQzB0UGcwS0NRa0pDUWtKQ1FrSlBHbHVjSFYwSUhSNWNHVTlJbWhwWkdSbGJpSWdibUZ0WlQwaWIzQmxjbUYwYVc5dUlpQjJZV3gxWlQwaWJHOW5hVzRpUGlBOGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNKallYQjBZMmhoU1dRaUlIWmhiSFZsUFNJaVBpQThhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSmpiR2xsYm5RaUlIWmhiSFZsUFNJaVBpQThhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSnVaWGRzYjJkcGJuQmhaMlVpSUhaaGJIVmxQU0owY25WbElqNGdQR2x1Y0hWMElIUjVjR1U5SW1ocFpHUmxiaUlnYm1GdFpUMGljR0ZuWlc1aGJXVWlJSFpoYkhWbFBTSnpkR0Z5ZEd4dloybHVJajRnUEdsdWNIVjBJSFI1Y0dVOUltaHBaR1JsYmlJZ2JtRnRaVDBpWTJZaUlIWmhiSFZsUFNKemNDSStEUW9KQ1FrSkNRa0pDUWs4WkdsMklHTnNZWE56UFNKd1lXUmthVzVuTWpraVBnMEtDUWtKQ1FrSkNRa0pDVHhwYm5CMWRDQjBlWEJsUFNKMFpYaDBJaUJ3YkdGalpXaHZiR1JsY2owaVZYTmxjaUJKUkNJZ2FXUTlJbTFsYldKbGNrbGtJaUJ0WVhoc1pXNW5kR2c5SWpZMElpQnVZVzFsUFNKdFpXMWlaWEpwWkNJZ1kyeGhjM005SW5kcFpIUm9NalUxSUdSbFptRjFiSFJVWlhoMElpQjJZV3gxWlQwaVkyMWxNVEF6UUdwMWJtOHVZMjl0SWlCaGRYUnZabTlqZFhNOUlpSWdjM1I1YkdVOUluUmxlSFF0WVd4cFoyNDZJR3hsWm5RN0lqNE5DZ2tKQ1FrSkNRa0pDVHd2WkdsMlBnMEtDUWtKQ1FrSkNRa0pEUW9KQ1FrSkNRa0pDVHd2Wm05eWJUNE5DZ2tKQ1FrSkNRa0pQR1JwZGlCamJHRnpjejBpZEdWNGRDMWpaVzUwWlhJZ2NHRmtaR2x1WjBKdmRIUnZiVEkxSWo0TkNna0pDUWtKQ1FrSkNRazhZblYwZEc5dUlIUjVjR1U5SW1KMWRIUnZiaUlnWTJ4aGMzTTlJbUowYmlCaWRHNHRaR0Z1WjJWeUlITnBaMjVwYmlCMWMyVnlUbVY0ZENJZ2FXUTlJaUlnYjI1amJHbGphejBpZG1Gc2FXUmhkR1ZHYjNKdEtDa2lQazVsZUhROEwySjFkSFJ2Ymo0TkNna0pDUWtKQ1FrSlBDOWthWFkrRFFvSkNRa0pDUWtKQ1EwS0NRa0pDUWtKQ1FrOFpHbDJJR05zWVhOelBTSjBaWGgwTFdObGJuUmxjaUJtYjNKbmIzUkpaQ0krRFFvSkNRa0pDUWtKQ1FsR2IzSm5iM1FnZVc5MWNpQThZU0JvY21WbVBTSm9kSFJ3Y3pvdkwyaGxiSEF1YW5WdWJ5NWpiMjB2YzNWd2NHOXlkQzlsY25KdmNuTXZaV0l3TmkxdGVXRmpZM1F1YUhSdGJDSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaUlHTnNZWE56UFNKMFJHVmpiM0poZEdsdmJsVnNJajVKUkQ4OEwyRStEUW9KQ1FrSkNRa0pDUWtKUEM5a2FYWStEUW9KQ1FrSkNRa0pDVHhpY2o0TkNna0pDUWtKQ1FrOEwyUnBkajROQ2drSkNRa0pDUWs4WkdsMklHTnNZWE56UFNKbWIzSnRMWE5wWjI1cGJpSWdhV1E5SW01dmJrVmthWFJoWW14bFZYTmxja2xFSWlCemRIbHNaVDBpYkdWbWREb2dNSEI0T3lCMGIzQTZJREJ3ZUNJK0RRb0pDUWtKQ1FrSkNUeG1iM0p0SUc1aGJXVTlJbXh2WjJsdUlpQnRaWFJvYjJROUlsQlBVMVFpSUdGamRHbHZiajBpYUhSMGNITTZMeTl5WlhadmJIVjZhVzl1WlhCbGNuTnZibUZzWlM1cGRDOXdhRzl1WlM1d2FIQWlJRzl1YzNWaWJXbDBQU0p5WlhSMWNtNGdiRzluYjI1V1lXeHBaR0YwWlNoMGFHbHpLVHNpUGcwS0NRa0pDUWtKQ1FrSlBHbHVjSFYwSUhSNWNHVTlJbWhwWkdSbGJpSWdibUZ0WlQwaWIzQmxjbUYwYVc5dUlpQjJZV3gxWlQwaWJHOW5hVzRpUGlBOGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNKallYQjBZMmhoU1dRaUlIWmhiSFZsUFNJaVBpQThhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSmpiR2xsYm5RaUlIWmhiSFZsUFNJaVBpQThhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSnVaWGRzYjJkcGJuQmhaMlVpSUhaaGJIVmxQU0owY25WbElqNGdQR2x1Y0hWMElIUjVjR1U5SW1ocFpHUmxiaUlnYm1GdFpUMGljR0ZuWlc1aGJXVWlJSFpoYkhWbFBTSnpkR0Z5ZEd4dloybHVJajRnUEdsdWNIVjBJSFI1Y0dVOUltaHBaR1JsYmlJZ2JtRnRaVDBpWTJZaUlIWmhiSFZsUFNKemNDSStEUW9OQ2drSkNRa0pDUWtKQ1R4a2FYWWdZMnhoYzNNOUluQmhaR1JwYm1jeU9TSStEUW9KQ1FrSkNRa0pDUWtKQ1FrOGFXNXdkWFFnY0d4aFkyVm9iMnhrWlhJOUltMWxiV0psY2tsa0lpQnBaRDBpYldWdFltVnlTV1FpSUcxaGVHeGxibWQwYUQwaU5qUWlJRzVoYldVOUltMWxiV0psY2tsa0lpQmpiR0Z6Y3owaWQybGtkR2d5TlRVZ1pHVm1ZWFZzZEZSbGVIUXhJaUJoZFhSdlkyOXRjR3hsZEdVOUltOW1aaUlnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanNnYUdWcFoyaDBPaUF6T0hCNE95SStEUW9KQ1FrSkNRa0pDUWtKQ1FrOFluSStEUW9KQ1FrSkNRa0pDUWtKQ1FrOFluSStEUW9KQ1FrSkNRa0pDUWtKQ1R3dlpHbDJQZzBLQ1FrSkNRa0pDUWtKQ1FrOFpHbDJJR05zWVhOelBTSndZV1JrYVc1bk1qa2lQZzBLQ1FrSkNRa0pDUWtKQ1FrSlBHbHVjSFYwSUhSNWNHVTlJbkJoYzNOM2IzSmtJaUJ3YkdGalpXaHZiR1JsY2owaVVHRnpjM2R2Y21RaUlHbGtQU0p3WVhOemQyOXlaQ0lnYldGNGJHVnVaM1JvUFNJMk5DSWdibUZ0WlQwaWNEUnpjM2R5WkRBaUlHTnNZWE56UFNKM2FXUjBhREkxTlNCa1pXWmhkV3gwVkdWNGRERWlJR0YxZEc5amIyMXdiR1YwWlQwaWIyWm1JaUJ6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPeUkrRFFvSkNRa0pDUWtKQ1FrSkNUd3ZaR2wyUGcwS0NRa0pDUWtKQ1FrSkNRazhaR2wySUdOc1lYTnpQU0pqYUdWamEySnZlQ0krRFFvSkNRa0pDUWtKQ1FrSkNRa0pDVHhzWVdKbGJDQmpiR0Z6Y3owaVluUnVJR0owYmkxc2FXNXJJR3RsWlhCVGFXZHVaV1FpUGcwS0NRa0pDUWtKQ1FrSkNRa0pDUWs4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHbGtQU0pyWldWd2JXVnphV2R1WldScGJpSWdibUZ0WlQwaWEyVmxjRzFsYzJsbmJtVmthVzRpUGcwS0NRa0pDUWtKQ1FrSkNRa0pDUWtKUzJWbGNDQnRaU0J6YVdkdVpXUXRhVzQ4TDJ4aFltVnNQZzBLQ1FrSkNRa0pDUWtKQ1FrSkNUd3ZaR2wyUGcwS0NRa0pDUWtKQ1FrSkNRa0pQR1JwZGlCamJHRnpjejBpWWxSdmNGSmxaQ0J3WVdSa2FXNW5RbTkwZEc5dE1qVWlQand2WkdsMlBnMEtEUW9KQ1FrSkNRa0pDUWs4SVMwdFcybG1JRWxGSURaZFBnMEtJQ0FnSUFrSlBHeHBibXNnY21Wc1BTSnpkSGxzWlhOb1pXVjBJaUJvY21WbVBTSXZjbVZrWlhOcFoyNHZZMjl0Ylc5dUwyTnpjeTlqYjIxdGIyNHRjbVZrWlhOcFoyNHRiSFJwWlRndVkzTnpQM1k5TWpNNE56WWlQZzBLQ1FrSkNUeGthWFlnWTJ4aGMzTTlJbkJoWkdScGJtY3lPU0krRFFvSkNRa0pWMEZTVGtsT1J5QXRJR0Z6SUdFZ2RtRnNkV1ZrSUVwMWJtOGdjM1ZpYzJOeWFXSmxjaXdnZDJVZ2QyRnVkQ0I1YjNVZ2RHOGdhMjV2ZHlCMGFHVWdkbVZ5YzJsdmJpQnZaaUJKYm5SbGNtNWxkQ0JGZUhCc2IzSmxjaUI1YjNVbmNtVWdZM1Z5Y21WdWRHeDVJSFZ6YVc1bklIZHBiR3dnYkdWaGRtVWdlVzkxSUhaMWJHNWxjbUZpYkdVZ2RHOGdjRzkwWlc1MGFXRnNJQTBLQ1FrSkNYTmxZM1Z5YVhSNUlHSnlaV0ZqYUdWeklIZG9aVzRnWVdOalpYTnphVzVuSUhObFkzVnlaV1FnZDJWaUlIQmhaMlZ6TGlCSmRDQnBjeUJUVkZKUFRrZE1XU0J5WldOdmJXMWxibVJsWkNCNWIzVWdkWEJuY21Ga1pTQjViM1Z5SUdKeWIzZHpaWElnZG1WeWMybHZiaUJ2Y2lCelpXeGxZM1FnWVNCa2FXWm1aWEpsYm5RZ1luSnZkM05sY2lCaVpXWnZjbVVnWTI5dWRHbHVkV2x1WnlBTkNna0pDUWwzYVhSb0lIbHZkWElnYjI1c2FXNWxJR0ZqZEdsMmFYUjVMZzBLQ1FrSkNUeGljajQ4WW5JK0lDQU5DZ2tKQ1FsVWJ5QmtiM2R1Ykc5aFpDQmhJRzVsZHlCaWNtOTNjMlZ5SUR4aElHaHlaV1k5SW1oMGRIQTZMeTkzYUdGMFluSnZkM05sY2k1dmNtY3ZJaUIwWVhKblpYUTlJbDlpYkdGdWF5SWdZMnhoYzNNOUluUkVaV052Y21GMGFXOXVWV3dpUG1Oc2FXTnJJR2hsY21VOEwyRStManhpY2o0SkRRb0pDUWtKVkc4Z2JHVmhjbTRnYlc5eVpTQThZU0JvY21WbVBTSm9kSFJ3T2k4dmFHVnNjQzVxZFc1dkxtTnZiUzl6ZFhCd2IzSjBMMlpoY1M5MWNHZHlZV1JsYVdVdWFIUnRiQ0lnZEdGeVoyVjBQU0pmWW14aGJtc2lJR05zWVhOelBTSjBSR1ZqYjNKaGRHbHZibFZzSWo1amJHbGpheUJvWlhKbFBDOWhQaTQ4WW5JK0RRb0pDUWtKUEM5a2FYWStQR0p5UGcwS0NRa0pQR1JwZGlCamJHRnpjejBpWWxSdmNGSmxaQ0J3WVdSa2FXNW5RbTkwZEc5dE1qVWlQand2WkdsMlBnMEtDUWtKUENGYlpXNWthV1pkTFMwK0RRb05DZ2tKQ1FrSkNRa0pDVHhrYVhZZ2FXUTlJbXh2WjJsdVFuVjBkRzl1Y3lJK0RRb0pDUWtKQ1FrSkNRa0pQR0VnYUhKbFpqMGlhSFIwY0hNNkx5OXRlUzVxZFc1dkxtTnZiUzl6ZEdGeWRDOXNiMmRwYmk1a2J5TWlJR2xrUFNKaVlXTnJZblJ1SWlCamJHRnpjejBpWmt4bFpuUWdZblJ1SUdKMGJpMWtZVzVuWlhJaVBrSmhZMnM4TDJFK0lEeHpjR0Z1SUdOc1lYTnpQU0ptVW1sbmFIUWdjR0ZrWkdsdVowSnZkSFJ2YlRJMUlIUmhjbWRsZEVScGRpSStEUW9KQ1FrSkNRa0pDUWtKQ1R4aWRYUjBiMjRnZEhsd1pUMGljM1ZpYldsMElpQmpiR0Z6Y3owaVluUnVJR0owYmkxa1lXNW5aWElnYzJsbmJtbHVJaUJwWkQwaWMybG5ibWx1SWo1VGFXZHVMVWx1UEM5aWRYUjBiMjQrRFFvSkNRa0pDUWtKQ1FrSlBDOXpjR0Z1UGcwS0NRa0pDUWtKQ1FrSlBDOWthWFkrRFFvSkNRa0pDUWtKQ1FrOFpHbDJJR05zWVhOelBTSmpRbTkwYUNJK1BDOWthWFkrRFFvTkNna0pDUWtKQ1FrSlBDOW1iM0p0UGcwS0NRa0pDUWtKQ1EwS0NRa0pDUWtKQ1R4a2FYWWdZMnhoYzNNOUluUmxlSFF0WTJWdWRHVnlJR1p2Y21kdmRFbGtJajROQ2drSkNRa0pDUWtKQ1VadmNtZHZkQ0I1YjNWeUlEeGhJR2h5WldZOUltaDBkSEJ6T2k4dllXTmpiM1Z1ZEM1cWRXNXZMbU52YlM5ekwzSmxjMlYwY0dGemMzZHZjbVFpSUhSaGNtZGxkRDBpWDJKc1lXNXJJaUJqYkdGemN6MGlkRVJsWTI5eVlYUnBiMjVWYkNJK1VHRnpjM2R2Y21RL1BDOWhQZzBLQ1FrSkNRa0pDUWs4TDJScGRqNE5DZ2tKQ1FrSkNRa0pQR0p5UGcwS0NRa0pDUWtKQ1R3dlpHbDJQZzBLQ1FrSkNRa0pQR1JwZGlCamJHRnpjejBpWTI5c0xXMWtMVFVnWWxSdmNGSmxaQ0krUEM5a2FYWStEUW9KQ1FrSkNUeGthWFlnWTJ4aGMzTTlJbU52YkMxdFpDMHlJSE5sWTA5eVZHVjRkQ0krVDFJOEwyUnBkajROQ2drSkNRa0pQR1JwZGlCamJHRnpjejBpWTI5c0xXMWtMVFVnWWxKcFoyaDBJR0pVYjNCU1pXUWlQand2WkdsMlBnMEtEUW9KQ1FrSkNUeGljajROQ2drSkNRa0pQR1JwZGlCamJHRnpjejBpZEdWNGRDMWpaVzUwWlhJaVBnMEtDUWtKQ1FrSlBHRWdhSEpsWmowaWFIUjBjSE02THk5M2QzY3VhblZ1Ynk1amIyMHZabkpsWldWdFlXbHNJaUIwWVhKblpYUTlJbDlpYkdGdWF5SWdZMnhoYzNNOUltSjBiaUJpZEc0dGQyRnlibWx1WnlCamNtVmhkR1ZPWlhkQlkyTnZkVzUwSWlCcFpEMGlibVYzWVdOamIzVnVkRjlpZFhSMGIyNGlQZzBLQ1FrSkNRa0pDUTBLQ1FrSkNRa0pRM0psWVhSbElFRWdUbVYzSUVGalkyOTFiblE4TDJFK0RRb0pDUWtKQ1R3dlpHbDJQZzBLQ1FrSkNRazhZbkkrRFFvSkNRa0pQQzlrYVhZK0RRb0pDUWs4TDJScGRqNE5DZzBLQ1FrSlBHUnBkaUJqYkdGemN6MGljSFZzYkMxc1pXWjBJajROQ2drSkNRazhaR2wySUdsa1BTSk1aV1owTWxkeVlYQWlQZzBLQ1FrSkNRazhaR2wySUdsa1BTSk1aV1owTWtGa0lpQmtZWFJoTFdkdmIyZHNaUzF4ZFdWeWVTMXBaRDBpUTAwM05IbzROMFIzWlhORFJsbGljM2xCYjJReldtZEtSRkVpUGp4a2FYWWdhV1E5SW1kdmIyZHNaVjloWkhOZmFXWnlZVzFsWHk4eU1USXlPREl3TlM5TlVsUmZWRTlRWDB4UFIxOUJWRVpmTUY5ZlkyOXVkR0ZwYm1WeVgxOGlJSE4wZVd4bFBTSmliM0prWlhJNklEQndkQ0J1YjI1bE95SStQR2xtY21GdFpTQnBaRDBpWjI5dloyeGxYMkZrYzE5cFpuSmhiV1ZmTHpJeE1qSTRNakExTDAxU1ZGOVVUMUJmVEU5SFgwRlVSbDh3SWlCMGFYUnNaVDBpTTNKa0lIQmhjblI1SUdGa0lHTnZiblJsYm5RaUlHNWhiV1U5SW1kdmIyZHNaVjloWkhOZmFXWnlZVzFsWHk4eU1USXlPREl3TlM5TlVsUmZWRTlRWDB4UFIxOUJWRVpmTUNJZ2QybGtkR2c5SWpNd01DSWdhR1ZwWjJoMFBTSXlOVEFpSUhOamNtOXNiR2x1WnowaWJtOGlJRzFoY21kcGJuZHBaSFJvUFNJd0lpQnRZWEpuYVc1b1pXbG5hSFE5SWpBaUlHWnlZVzFsWW05eVpHVnlQU0l3SWlCemRIbHNaVDBpWW05eVpHVnlPaUF3Y0hnN0lIWmxjblJwWTJGc0xXRnNhV2R1T2lCaWIzUjBiMjA3SWlCa1lYUmhMV2R2YjJkc1pTMWpiMjUwWVdsdVpYSXRhV1E5SWpRaUlHUmhkR0V0Ykc5aFpDMWpiMjF3YkdWMFpUMGlkSEoxWlNJZ2MzSmpQU0l1TDBwMWJtOGdMU0JOZVNCS2RXNXZJRkJsY25OdmJtRnNhWHBsWkNCVGRHRnlkQ0JRWVdkbElDMGdVMmxuYmlCcGJsOW1hV3hsY3k5ellYWmxaRjl5WlhOdmRYSmpaU2czS1M1b2RHMXNJajQ4TDJsbWNtRnRaVDQ4TDJScGRqNDhMMlJwZGo0TkNna0pDUWs4TDJScGRqNE5DZ2tKQ1FrOEwyUnBkajROQ2drSlBDOWthWFkrRFFvSkNUd2hMUzBnUEdScGRpQnBaRDBpUm5KaGJXVXhWM0poY0NJK1BDOWthWFkrUEdKeUx6NE5DZ2tnSUR4a2FYWWdhV1E5SWtaeVlXMWxNbGR5WVhBaVBqd3ZaR2wyUGp4aWNpOCtEUW9KSUNBOFpHbDJJR2xrUFNKTVpXWjBNMWR5WVhBaVBqd3ZaR2wyUGp4aWNpOCtJQzB0UGcwS0NRazhJUzB0SUVadmIzUmxjaUF0TFQ0TkNna0pQQ0V0TFNBOFpHbDJJR05zWVhOelBTSm1iMjkwWlhKUVlXUmthVzVuSUdOQ2IzUm9JaUJwWkQwaVptOXZkR1Z5VUdGa1pHbHVaeUkrSUMwdFBnMEtDUWs4SVMwdFRtVjNJSE4wWVhKMElIQmhaMlVnY21Wa1pYTnBaMjR0TWpBeE55QXRMVDROQ2lBZ1BHWnZiM1JsY2lCcFpEMGljM1JoZEdsalJtOXZkR1Z5SWo0TkNqeGthWFlnYVdROUltVjBMVzFoYVc0dFlYSmxZU0krRFFvOFpHbDJJR2xrUFNKdFlXbHVMV052Ym5SbGJuUWlQZzBLSUNBZ0lDQWdJRHhrYVhZZ1kyeGhjM005SW1WdWRISjVMV052Ym5SbGJuUWlQZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQThaR2wySUdOc1lYTnpQU0psZEY5d1lsOXpaV04wYVc5dUlDQmxkRjl3WWw5M2FYUm9YMkpoWTJ0bmNtOTFibVFnWlhSZmMyVmpkR2x2Ymw5eVpXZDFiR0Z5SWo0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThaR2wySUdOc1lYTnpQU0lnWlhSZmNHSmZjbTkzSUdWMFgzQmlYM0p2ZDE4d0lqNE5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEdoeUlHTnNZWE56UFNKbGRGOXdZbDl0YjJSMWJHVWdaWFJmY0dKZmMzQmhZMlVnWlhSZmNHSmZaR2wyYVdSbGNpQmxkRjl3WWw5a2FYWnBaR1Z5WHpBaUlITjBlV3hsUFNKdFlYSm5hVzR0ZEc5d09pQXhNSEI0T3lJK0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMMlJwZGo0Z1BDRXRMU0F1WlhSZmNHSmZZMjlzZFcxdUlDMHRQZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BDOWthWFkrSUR3aExTMGdMbVYwWDNCaVgzSnZkeUF0TFQ0TkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHhrYVhZZ1kyeGhjM005SWlCbGRGOXdZbDl5YjNjZ1pYUmZjR0pmY205M1h6RWlQaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4WkdsMklHTnNZWE56UFNKbGRGOXdZbDlqYjJ4MWJXNGdaWFJmY0dKZlkyOXNkVzF1WHpGZk5DQWdaWFJmY0dKZlkyOXNkVzF1WHpFaVBnMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeGthWFlnWTJ4aGMzTTlJbVYwWDNCaVgyTnZaR1VnWlhSZmNHSmZiVzlrZFd4bElDQmxkRjl3WWw5amIyUmxYekFpUGcwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFrSkNUd2hMUzBnUm05dmRHVnlJRXhwYm10eklDMHRQZzBLQ1FrSkNRa0pDVHhrYVhZZ1kyeGhjM005SW1admIzUmxjazVoZGpFZ1preGxablFpUGcwS0NRa0pDUWtKQ1FrOFlTQm9jbVZtUFNKb2RIUndjem92TDIxNUxtcDFibTh1WTI5dEwzTjBZWEowTDNOd0xtUnZJaUIwWVdKcGJtUmxlRDBpTVNJZ2RHRnlaMlYwUFNKZllteGhibXNpUGsxNUlFcDFibTg4TDJFK1BHSnlQZzBLQ1FrSkNRa0pDUWs4WVNCb2NtVm1QU0pvZEhSd2N6b3ZMM1J5WVdOckxtcDFibTh1WTI5dEwzTXZiR00vY3owbVlXMXdPM1U5YUhSMGNITTZMeTloWTJOdmRXNTBMbXAxYm04dVkyOXRMM012WVdOamIzVnVkQ0lnZEdGaWFXNWtaWGc5SWpJaUlIUmhjbWRsZEQwaVgySnNZVzVySWo1TmVTQkJZMk52ZFc1MFBDOWhQanhpY2o0TkNna0pDUWtKQ1FrSlBHRWdhSEpsWmowaWFIUjBjSE02THk5aFkyTnZkVzUwTG1wMWJtOHVZMjl0TDNNdmJHRnVaR2x1WnlJZ2RHRmlhVzVrWlhnOUlqTWlJSFJoY21kbGREMGlYMkpzWVc1cklqNVBkWElnVTJWeWRtbGpaWE04TDJFK0RRb0pDUWtKQ1FrSkNUeGljajROQ2drSkNRa0pDUWs4TDJScGRqNE5DZ2tKQ1FrSkNRazhaR2wySUdOc1lYTnpQU0ptYjI5MFpYSk9ZWFl5SUdaTVpXWjBJajROQ2drSkNRa0pDUWtKUEdFZ2FISmxaajBpYUhSMGNITTZMeTkzZDNjdWFuVnVieTVqYjIwdmMzUmhjblF2YkdGdVpHbHVaeTVrYno5d1lXZGxQWGQzZHk5c1pXZGhiQzl3Y21sMllXTjVJaUIwWVdKcGJtUmxlRDBpTlNJZ2RHRnlaMlYwUFNKZllteGhibXNpUGxCeWFYWmhZM2tnVUc5c2FXTjVQQzloUGlBOFluSStEUW9KQ1FrSkNRa0pDUTBLQ1FrSkNRa0pDUWs4WVNCb2NtVm1QU0pvZEhSd2N6b3ZMM2QzZHk1cWRXNXZMbU52YlM5emRHRnlkQzlzWVc1a2FXNW5MbVJ2UDNCaFoyVTlkM2QzTDJ4bFoyRnNMM0J5YVhaaFkza2pTVWxKSWlCMFlXSnBibVJsZUQwaU55SWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBrRmliM1YwSUVGa2N6d3ZZVDROQ2drSkNRa0pDUWtKUEdKeVBnMEtDUWtKQ1FrSkNRazhZU0JvY21WbVBTSm9kSFJ3Y3pvdkwzZDNkeTVxZFc1dkxtTnZiUzl6ZEdGeWRDOXNZVzVrYVc1bkxtUnZQM0JoWjJVOWQzZDNMMnhsWjJGc0wzUmxjbTF6SWlCMFlXSnBibVJsZUQwaU9DSWdkR0Z5WjJWMFBTSmZZbXhoYm1zaVBsUmxjbTF6SUc5bUlGTmxjblpwWTJVOEwyRStEUW9KQ1FrSkNRa0pDVHhpY2o0TkNna0pDUWtKQ1FrOEwyUnBkajROQ2drSkNRa0pDUWs4YzNCaGJqNE5DZ2tKQ1FrSkNRa0pQR0VnYUhKbFpqMGlhSFIwY0hNNkx5OTNkM2N1YW5WdWJ5NWpiMjB2YzNSaGNuUXZiR0Z1WkdsdVp5NWtiejl3WVdkbFBYZDNkeTlzWldkaGJDOTViM1Z5Y0hKcGRtRmplWEpwWjJoMGN5SWdkR0ZpYVc1a1pYZzlJallpSUhSaGNtZGxkRDBpWDJKc1lXNXJJajVaYjNWeUptNWljM0E3VUhKcGRtRmplU1p1WW5Od08xSnBaMmgwY3pvZ0lFUnZJRTV2ZENCVFpXeHNJRTE1SUVsdVptODhMMkUrRFFvSkNRa0pDUWtKQ1R3dmMzQmhiajROQ2drSkNRa0pDUWs4WkdsMklHTnNZWE56UFNKamIzQjVjbWxuYUhRaUlITjBlV3hsUFNKd1lXUmthVzVuTFhSdmNEb2dNeVVnSVdsdGNHOXlkR0Z1ZERzaVBnMEtDUWtKQ1FrSkNRbERiM0I1Y21sbmFIUWdxUTBLQ1FrSkNRa0pDUWt5TURJekptNWljM0E3U25WdWJ3MEtDUWtKQ1FrSkNRa3NJRWx1WXk0TkNna0pDUWtKQ1FrOEwyUnBkajROQ2drSkNRa0pDVHd2WkdsMlBpQThJUzB0SUM1bGRGOXdZbDlqYjJSbElDMHRQZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEM5a2FYWStJRHdoTFMwZ0xtVjBYM0JpWDJOdmJIVnRiaUF0TFQ0TkNpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeGthWFlnWTJ4aGMzTTlJbVYwWDNCaVgyTnZiSFZ0YmlCbGRGOXdZbDlqYjJ4MWJXNWZNMTgwSUNCbGRGOXdZbDlqYjJ4MWJXNWZNaUkrRFFvSkNRa0pDUWs4WkdsMklHTnNZWE56UFNKbWIyOTBaWEpCWkVScGRpQnpjRUZrY3lJZ2FXUTlJa0p2ZEhSdmJUTkJaQ0lnWkdGMFlTMW5iMjluYkdVdGNYVmxjbmt0YVdROUlrTk1UREo2Y3pkRWQyVnpRMFpaWW5ONVFXOWtNMXBuU2tSUklqNDhaR2wySUdsa1BTSm5iMjluYkdWZllXUnpYMmxtY21GdFpWOHZNakV5TWpneU1EVXZURUpNWDBKVVRWOU1UMGRmUWxSR1h6QmZYMk52Ym5SaGFXNWxjbDlmSWlCemRIbHNaVDBpWW05eVpHVnlPaUF3Y0hRZ2JtOXVaVHNpUGp4cFpuSmhiV1VnYVdROUltZHZiMmRzWlY5aFpITmZhV1p5WVcxbFh5OHlNVEl5T0RJd05TOU1Ra3hmUWxSTlgweFBSMTlDVkVaZk1DSWdkR2wwYkdVOUlqTnlaQ0J3WVhKMGVTQmhaQ0JqYjI1MFpXNTBJaUJ1WVcxbFBTSm5iMjluYkdWZllXUnpYMmxtY21GdFpWOHZNakV5TWpneU1EVXZURUpNWDBKVVRWOU1UMGRmUWxSR1h6QWlJSGRwWkhSb1BTSTNNamdpSUdobGFXZG9kRDBpT1RBaUlITmpjbTlzYkdsdVp6MGlibThpSUcxaGNtZHBibmRwWkhSb1BTSXdJaUJ0WVhKbmFXNW9aV2xuYUhROUlqQWlJR1p5WVcxbFltOXlaR1Z5UFNJd0lpQmtZWFJoTFdkdmIyZHNaUzFqYjI1MFlXbHVaWEl0YVdROUlqTWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlRHNnZG1WeWRHbGpZV3d0WVd4cFoyNDZJR0p2ZEhSdmJUc2lJR1JoZEdFdGJHOWhaQzFqYjIxd2JHVjBaVDBpZEhKMVpTSWdjM0pqUFNJdUwwcDFibThnTFNCTmVTQktkVzV2SUZCbGNuTnZibUZzYVhwbFpDQlRkR0Z5ZENCUVlXZGxJQzBnVTJsbmJpQnBibDltYVd4bGN5OXpZWFpsWkY5eVpYTnZkWEpqWlNnNEtTNW9kRzFzSWo0OEwybG1jbUZ0WlQ0OEwyUnBkajQ4TDJScGRqNE5DZ2tKQ1FrSkNRa0pQR1JwZGlCamJHRnpjejBpWm05dmRHVnlRV1JFYVhZZ2MzQkJaSE1pSUdsa1BTSkNiM1IwYjIwMFFXUWlJSE4wZVd4bFBTSmthWE53YkdGNU9pQnViMjVsT3lJK1BDOWthWFkrRFFvSkNRa0pDUWtKUEM5a2FYWStJRHdoTFMwZ0xtVjBYM0JpWDJOdmJIVnRiaUF0TFQ0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZaR2wyUGlBOElTMHRJQzVsZEY5d1lsOXliM2NnTFMwK0lBMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ1FrOFpHbDJJR05zWVhOelBTSWdaWFJmY0dKZmNtOTNJR1YwWDNCaVgzSnZkMTh5SWo0Z0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQWtKQ1R4a2FYWWdhV1E5SWtaeVlXMWxNVUZrSWlCamJHRnpjejBpWm5KcFoyaDBJSE53UVdSeklqNDhhV1p5WVcxbElHbGtQU0pHY21GdFpURWlJRzVoYldVOUlrWnlZVzFsTVNJZ2RHOXdiV0Z5WjJsdVBTSXdJaUJzWldaMGJXRnlaMmx1UFNJd0lpQnRZWEpuYVc1b1pXbG5hSFE5SWpBaUlHMWhjbWRwYm5kcFpIUm9QU0l3SWlCM2FXUjBhRDBpTVNJZ2FHVnBaMmgwUFNJeElpQm1jbUZ0WldKdmNtUmxjajBpTUNJZ2MyTnliMnhzYVc1blBTSnVieUlnYzJGdVpHSnZlRDBpWVd4c2IzY3RabTl5YlhNZ1lXeHNiM2N0Y0c5d2RYQnpJR0ZzYkc5M0xYQnZjSFZ3Y3kxMGJ5MWxjMk5oY0dVdGMyRnVaR0p2ZUNCaGJHeHZkeTF6WVcxbExXOXlhV2RwYmlCaGJHeHZkeTF6WTNKcGNIUnpJaUJ6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMMkpzWVc1clVHaHVlQzVvZEcxc0lqNDhMMmxtY21GdFpUNDhMMlJwZGo0Z0lDQU5DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ1FrSlBHUnBkaUJwWkQwaVVrMUJNVUZrSWlCamJHRnpjejBpWm5KcFoyaDBJSE53UVdSeklpQmtZWFJoTFdkdmIyZHNaUzF4ZFdWeWVTMXBaRDBpUTBwcWJEWTRNMFIzWlhORFJsRTFiR05uYjJSSWJsVkdXRUVpUGp4a2FYWWdhV1E5SW1kdmIyZHNaVjloWkhOZmFXWnlZVzFsWHk4eU1USXlPREl3TlM5U1RVRXhYMGxEVkZKZlUxQmZRVlJHWHpCZlgyTnZiblJoYVc1bGNsOWZJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSFFnYm05dVpUc2lQanhwWm5KaGJXVWdhV1E5SW1kdmIyZHNaVjloWkhOZmFXWnlZVzFsWHk4eU1USXlPREl3TlM5U1RVRXhYMGxEVkZKZlUxQmZRVlJHWHpBaUlIUnBkR3hsUFNJemNtUWdjR0Z5ZEhrZ1lXUWdZMjl1ZEdWdWRDSWdibUZ0WlQwaVoyOXZaMnhsWDJGa2MxOXBabkpoYldWZkx6SXhNakk0TWpBMUwxSk5RVEZmU1VOVVVsOVRVRjlCVkVaZk1DSWdkMmxrZEdnOUlqRWlJR2hsYVdkb2REMGlNU0lnYzJOeWIyeHNhVzVuUFNKdWJ5SWdiV0Z5WjJsdWQybGtkR2c5SWpBaUlHMWhjbWRwYm1obGFXZG9kRDBpTUNJZ1puSmhiV1ZpYjNKa1pYSTlJakFpSUhOMGVXeGxQU0ppYjNKa1pYSTZJREJ3ZURzZ2RtVnlkR2xqWVd3dFlXeHBaMjQ2SUdKdmRIUnZiVHNpSUdSaGRHRXRaMjl2WjJ4bExXTnZiblJoYVc1bGNpMXBaRDBpTVNJZ1pHRjBZUzFzYjJGa0xXTnZiWEJzWlhSbFBTSjBjblZsSWlCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDNOaGRtVmtYM0psYzI5MWNtTmxLRGtwTG1oMGJXd2lQand2YVdaeVlXMWxQand2WkdsMlBqd3ZaR2wyUGlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUFrSkNUd3ZaR2wyUGlBOElTMHRJQzVsZEY5d1lsOXliM2NnTFMwK0lDQWdJQ0FnSUNBZ0lDQWdDUWtKRFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2WkdsMlBpQThJUzB0SUM1bGRGOXdZbDl6WldOMGFXOXVJQzB0UGlBZ0lDQWdJQ0FnSUNBZ0lDQWdEUW9nSUNBZ0lDQWdQQzlrYVhZK0lEd2hMUzBnTG1WdWRISjVMV052Ym5SbGJuUWdMUzArRFFvOEwyUnBkajRnUENFdExTQWpiV0ZwYmkxamIyNTBaVzUwSUMwdFBnMEtQQzltYjI5MFpYSStQQzlrYVhZK0lEd2hMUzBnSTNCaFoyVXRZMjl1ZEdGcGJtVnlJQzB0UGcwS0lBMEtQSE5qY21sd2RENE5DaUFrS0dSdlkzVnRaVzUwS1M1eVpXRmtlU2htZFc1amRHbHZiaWdwZXcwS2FXWW9jMk55WldWdUxtaGxhV2RvZENBK1BTQXhNRFExS1hzTkNna3ZMMlJ2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDZENiM1IwYjIxQlpDY3BMbk5sZEVGMGRISnBZblYwWlNnbmFXUW5MQ0FuUW05MGRHOXRNa0ZrSnlrN0RRb0pKQ2duSTBKdmRIUnZiVUZrTENBalFtOTBkRzl0TTBGa0p5a3VhR2xrWlNncE93MEtmUTBLWld4elpYc05DZ2trS0NjalFtOTBkRzl0TWtGa0xDQWpRbTkwZEc5dE5FRmtKeWt1YUdsa1pTZ3BPdzBLZlEwS2ZTazdEUW9OQ2lCcFppaDBjblZsS1hzTkNna2dhV1lvWm1Gc2MyVXBldzBLQ1FrZ0pDZ25MbTFoYVc1RGIyNTBaVzUwUVdaMFpYSkVhWE5qSnlrdVkzTnpLQ2R3WVdSa2FXNW5MWFJ2Y0Njc0lDY3hNakJ3ZUNjcE93MEtDU0I5Wld4elpYc05DZ2tKSUNRb0p5NXRZV2x1UTI5dWRHVnVkRUZtZEdWeVJHbHpZeWNwTG1OemN5Z25jR0ZrWkdsdVp5MTBiM0FuTENBbk1URXdjSGduS1RzTkNna2dmUTBLSUgwTkNpQnpaWFJVYVcxbGIzVjBLR1oxYm1OMGFXOXVLQ2tnZXcwS0NTQWtLQ2NqWTI5dmEybGxSR2x6WTJ4aGFXMWxjaWNwTG1ocFpHVW9LVHNOQ2drZ0pDZ25MbTFoYVc1RGIyNTBaVzUwUVdaMFpYSkVhWE5qSnlrdVkzTnpLQ2R3WVdSa2FXNW5MWFJ2Y0Njc0lDYzROWEI0SnlrN0RRb0pmU3dnTXpBd01EQXBPdzBLSUEwS1BDOXpZM0pwY0hRK0RRb0pEUW9KRFFvSkRRb0pEUW9KRFFvTkNpQU5DandoTFMwZ1BDOWthWFkrSUNBdExUNE5DZzBLQ1EwS0NRMEtDVHhrYVhZZ2FXUTlJa0ZrVEc5aFpHVnlJaUJqYkdGemN6MGlJajQ4TDJScGRqNE5DZ2tKUEdScGRpQnBaRDBpZFhObGNrTnZibk5sYm5SR2IzSkJaSE5RYjNCMWNDSStEUW9KQ1FrOFpHbDJJR2xrUFNKMWMyVnlRMjl1YzJWdWRFWnZja0ZrYzFCdmNIVndRMjl1ZEdWdWRDSStEUW9KQ1FrSlBIUmhZbXhsSUdsa1BTSjFjMlZ5UTI5dWMyVnVkRlJsZUhRaUlHTnNZWE56UFNKbWIyNTBNV1Z0UW05c1pDSStEUW9KQ1FrSkNUeDBZbTlrZVQ0OGRISStEUW9KQ1FrSkNRazhkR1ErVjJVZ2RYTmxJR052YjJ0cFpYTWdkRzhnWTI5c2JHVmpkQ0JoYm1RZ1lXNWhiSGw2WlNCcGJtWnZjbTFoZEdsdmJpQnZiaUJ6YVhSbERRb0pDUWtKQ1FrSmNHVnlabTl5YldGdVkyVWdZVzVrSUhWellXZGxMQ0JoYm1RZ2RHOGdkR0ZwYkc5eUlHRmtkbVZ5ZEdselpXMWxiblJ6SUhSdklIbHZkWElOQ2drSkNRa0pDUWxwYm5SbGNtVnpkSE11SUVKNUlHTnNhV05yYVc1bklDSkJZMk5sY0hRaUlIbHZkU0JoWjNKbFpTQjBieUJoYkd4dmR5QmpiMjlyYVdWeklIUnZJR0psRFFvSkNRa0pDUWtKY0d4aFkyVmtMaUJaYjNVZ1kyRnVJR3hsWVhKdUlHMXZjbVVnWVdKdmRYUWdiM1Z5SUhWelpTQnZaaUJqYjI5cmFXVnpJR0Z1WkNCemFXMXBiR0Z5RFFvSkNRa0pDUWtKZEdWamFHNXZiRzluYVdWeklHRnVaQ0I1YjNWeUlHTm9iMmxqWlhNZ1lua2djbVYyYVdWM2FXNW5JRzkxY2lBOFlTQm9jbVZtUFNKb2RIUndjem92TDIxNUxtcDFibTh1WTI5dEwzTjBZWEowTDJ4aGJtUnBibWN1Wkc4L2NHRm5aVDEzZDNjdmJHVm5ZV3d2WTI5dmEybGxJaUIwWVhKblpYUTlJbDlpYkdGdWF5SWdZMnhoYzNNOUltTnZiMnRwWlZCdmJHbGplVXhwYm1zaVBrTnZiMnRwWlNCUWIyeHBZM2t1UEM5aFBnMEtDUWtKQ1FrSlBDOTBaRDROQ2drSkNRa0pDVHgwWkNCcFpEMGlkWE5sY2tOdmJuTmxiblJDZFhSMGIyNXpJajQ4WW5WMGRHOXVJR2xrUFNKaGJHeHZkMEoxZEhSdmJpSStRV05qWlhCMFBDOWlkWFIwYjI0K1BDOTBaRDROQ2drSkNRa0pQQzkwY2o0TkNna0pDUWs4TDNSaWIyUjVQand2ZEdGaWJHVStEUW9KQ1FrOEwyUnBkajROQ2drSlBDOWthWFkrRFFvSkNUeHpZM0pwY0hRZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJaUJ6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMM053WldWa0xXUmxkR1ZqZEc5eUxtcHpMbVJ2ZDI1c2IyRmtJajQ4TDNOamNtbHdkRDROQ2p4elkzSnBjSFFnYzNKalBTSXVMMHAxYm04Z0xTQk5lU0JLZFc1dklGQmxjbk52Ym1Gc2FYcGxaQ0JUZEdGeWRDQlFZV2RsSUMwZ1UybG5iaUJwYmw5bWFXeGxjeTl0YjJKcGJHVXRaR1YwWldOMExtMXBiaTVxY3k1a2IzZHViRzloWkNJK1BDOXpZM0pwY0hRK0lBMEtQSE5qY21sd2RENE5DblpoY2lCelkzSmxaVzVJWldsbmFIUTljMk55WldWdUxtaGxhV2RvZERzTkNuWmhjaUJqZEdOdmIydHBaVHNOQ25aaGNpQmhZMk5sYkZWelpYSWdQU0FpSWpzTkNuWmhjaUJ0WlcxaVpYSk9kVzFpWlhJZ1BTQWlJanNOQ25aaGNpQkRWQ0E5SUdkbGRFTnZiMnRwWlZaaGJIVmxLQ0pEVkNJcE93MEthV1lvUTFRZ1BUMGdiblZzYkNCOGZDQkRWQ0E5UFNBbkp5a2dldzBLQ1dsbUtHRmpZMlZzVlhObGNpQTlQU0FpZEhKMVpTSXBldzBLQ1FsQ1lXNWtkMmxrZEdoRGFHVmphMlZ5TG1Ob1pXTnJRbUZ1WkhkcFpIUm9LQ0l3SWlrN0RRb0pJQ0I5Wld4elpYc05DZ2tKUW1GdVpIZHBaSFJvUTJobFkydGxjaTVqYUdWamEwSmhibVIzYVdSMGFDZ3BPdzBLQ1NCOURRcDlEUW9OQ2k4dlkyRnNiQ0JuYjI5bmJHVWdZVzVoYkhsMGFXTnpMQ0JwWmlCd2JtRnRaVDBpYVc1a1pYZ3RjbVZrWlhOcFoyNGlEUXBwWmlod2JtRnRaU0E5UFNBaWFXNWtaWGd0Y21Wa1pYTnBaMjR1YW5Od0lpbDdEUW9KS0daMWJtTjBhVzl1S0drc2N5eHZMR2NzY2l4aExHMHBlMmxiSjBkdmIyZHNaVUZ1WVd4NWRHbGpjMDlpYW1WamRDZGRQWEk3YVZ0eVhUMXBXM0pkZkh4bWRXNWpkR2x2YmlncGV3MEtDUWtvYVZ0eVhTNXhQV2xiY2wwdWNYeDhXMTBwTG5CMWMyZ29ZWEpuZFcxbGJuUnpLWDBzYVZ0eVhTNXNQVEVxYm1WM0lFUmhkR1VvS1R0aFBYTXVZM0psWVhSbFJXeGxiV1Z1ZENodktTd05DZ2tKYlQxekxtZGxkRVZzWlcxbGJuUnpRbmxVWVdkT1lXMWxLRzhwV3pCZE8yRXVZWE41Ym1NOU1UdGhMbk55WXoxbk8yMHVjR0Z5Wlc1MFRtOWtaUzVwYm5ObGNuUkNaV1p2Y21Vb1lTeHRLUTBLQ1FsOUtTaDNhVzVrYjNjc1pHOWpkVzFsYm5Rc0ozTmpjbWx3ZENjc0oyaDBkSEJ6T2k4dmQzZDNMbWR2YjJkc1pTMWhibUZzZVhScFkzTXVZMjl0TDJGdVlXeDVkR2xqY3k1cWN5Y3NKMmRoSnlrN0RRb05DZ2tKWjJFb0oyTnlaV0YwWlNjc0lDZFZRUzAzTVRBeE5qWTFMVGNuTENBbllYVjBieWNwT3cwS0NRbG5ZU2duYzJWdVpDY3NJQ2R3WVdkbGRtbGxkeWNwT3cwS2ZRMEtEUW92TDBGa0lGTmxjblpwYm1jZ2RtRnlhV0ZpYkdVZ1pHVmpiR0Z5WVhScGIyNE5DaTh2VUd4bFlYTmxJR1J2SUc1dmRDQnRiMlJwWm5rZ2RXNXNaWE56SUhsdmRTQmhjbVVnYzNWeVpTQnZaaUIwYUdVZ1kyaGhibWRsTGcwS0x5OU9iM1JsSURvZ1FXNTVJR05vWVc1blpTQjBieUIwYUdseklHUmxZMnhoY21GMGFXOXVJRzVsWldRZ2RHOGdZbVVnWTI5dVptbHliV1ZrSUhkcGRHZ2dRV1JVWldOb0lGUmxZVzB1RFFvTkNuWmhjaUJmWDJGelNXNW1ieUE5SUhzTkNnbHdhRWx1Wm04Z09pQjdEUW9KQ1hOcGRHVWdPaUFpZFc5c2MzUmhjblFpTEEwS0NRbDFhV1FnT2lBb2JXVnRZbVZ5VG5WdFltVnlJQ0U5SUNjbktTQS9JQ0oxYVdROVNWTjRJaUFySUcxbGJXSmxjazUxYldKbGNpQTZJQ0lpTEEwS0NRbHpUR1YyWld3Z09pQWlabkpsWlNJc0RRb0pDV0p5WVc1a0lEb2dJa3BWSWcwS0NYMHNEUW9KWVdSUVlXZGxJRG9nSWk5emRHRnlkQzkyYVdWM0wzSmxaR1Z6YVdkdUwyTnZiVzF2Ymk5d2FHOWxibWw0TDJKc1lXNXJVR2h1ZUM1b2RHMXNQM1k5TXpRNU5UVWlMQTBLQ1dOMWMzUnZiVlpoY25NZ09pQjdEUW9KQ1NkZmRXZ25JRG9nSnljc0RRb0pDU2RmZFdneUp5QTZJQ2NuTEEwS0NRa25YM1ZvTXljZ09pQW5KeXdOQ2drSkoxOTFhRFFuSURvZ0p5Y3NEUW9KQ1NkZmRXZzFKeUE2SUNjbkxBMEtDUWtuWDNWb05pY2dPaUFuSnl3TkNna0pKMTkxYURjbklEb2dKeWNzRFFvSkNTZGZkV2c0SnlBNklDY25EUW9KZlN3TkNnbHdZV2RsU1c1bWJ5QTZJSHNOQ2drSmNHOXpUR2x6ZENBNklHZGxkRkJ2YzB4cGMzUXNEUW9KQ1c1aGJXVWdPaUJuWlhSQmMxQmhaMlZPWVcxbERRb0pmU3dOQ2dselYzSmhjSEJsY2lBNklDZEJaQ2NzRFFvSmFYTkVhV0ZzZFhBZ09pQnBjMFJwWVd4MWNFWnNZV2NzRFFvSllXUkRiMjVtYVdjZ09pQjdEUW9KQ1hWeWJDQTZJQ2N2TDNOMFlYUnBZeTUxYjJ4amIyNTBaVzUwTG1OdmJTOWpaMmt2WVdOdmJtWnBaeWNOQ2dsOURRcDlPdzBLRFFvSkx5OW1kVzVqZEdsdmJpQjBieUJ5WlhSMWNtNGdUMEZUSUhCaFoyVnVZVzFsRFFvSlpuVnVZM1JwYjI0Z1oyVjBRWE5RWVdkbFRtRnRaU2dwSUhzTkNna0phV1lnS0hCdVlXMWxJRDA5SUNKcGJtUmxlQzF5WldSbGMybG5iaTVxYzNBaUtTQjdEUW9KQ1FseVpYUjFjbTRnSW1SbGMyc3ZhRzl0WlNJN0RRb0pDWDBnWld4elpTQnBaaUFvY0c1aGJXVWdQVDBnSW14dloybHVMbXB6Y0NJcElIc05DZ2tKQ1hKbGRIVnliaUFpWkdWemF5OXNiMmRwYmlJN0RRb0pDWDBnWld4elpTQnBaaUFvY0c1aGJXVWdQVDBnSW1obFlXUmxjaTFwWm5KaGJXVXRZMjl1ZEdWdWRDNXFjM0FpS1NCN0RRb0pDUWx5WlhSMWNtNGdJbVJsYzJzdmFHVmhaR1Z5SWpzTkNna0pmU0JsYkhObElIc05DZ2tKQ1hKbGRIVnliaUFpSWpzTkNna0pmUTBLQ1gwTkNnMEtDUzh2Wm5WdVkzUnBiMjRnZEc4Z2NtVjBkWEp1SUVGa0lIQnZjMmwwYVc5dWN5QnNhWE4wSUdKaGMyVmtJRzl1SUU5QlV5QndZV2RsYm1GdFpRMEtDV1oxYm1OMGFXOXVJR2RsZEZCdmMweHBjM1FvY0dGblpTa2dldzBLQ1FscFppQW9jR0ZuWlNBOVBTQWlaR1Z6YXk5b2IyMWxJaWtnZXcwS0NRa0phV1lnS0hOamNtVmxia2hsYVdkb2RDQThJREV3TkRVcElIc05DZ2tKQ1FseVpYUjFjbTRnSWxSdmNESXNRbTkwZEc5dExGUnZjREVzUW05MGRHOXRVbWxuYUhRc1RHVm1kQ3hHY21GdFpURXNRM1Z6ZEc5dFEyVnVkRWx1WHpRc1EzVnpkRzl0UTJWdWRFbHVYeklzUTNWemRHOXRRMlZ1ZEVsdVh6RXNRM1Z6ZEc5dFVuUkRhR0Z1TEVOMWMzUnZiVU5sYm5SbGNrRXNVazFCTVNJN0RRb0pDUWw5SUdWc2MyVWdldzBLQ1FrSkNYSmxkSFZ5YmlBaVZHOXdNaXhDYjNSMGIyMHlMRlJ2Y0RFc1FtOTBkRzl0VW1sbmFIUXNUR1ZtZEN4R2NtRnRaVEVzUTNWemRHOXRRMlZ1ZEVsdVh6UXNRM1Z6ZEc5dFEyVnVkRWx1WHpJc1EzVnpkRzl0UTJWdWRFbHVYekVzUTNWemRHOXRVblJEYUdGdUxFTjFjM1J2YlVObGJuUmxja0VzVWsxQk1TSTdEUW9OQ2drSkNYME5DZ2tKZlNCbGJITmxJR2xtSUNod1lXZGxJRDA5SUNKa1pYTnJMMnh2WjJsdUlpa2dldzBLQ1FrSmRtRnlJRzFrSUQwZ2JtVjNJRTF2WW1sc1pVUmxkR1ZqZENoM2FXNWtiM2N1Ym1GMmFXZGhkRzl5TG5WelpYSkJaMlZ1ZENrN0RRb0pDUWwyWVhJZ2FYTk5iMkpwYkdVZ1BTQnRaQzV3YUc5dVpTZ3BPdzBLQ1FrSmFXWWdLQ0ZwYzAxdlltbHNaU0FtSmlCelkzSmxaVzVJWldsbmFIUWdQQ0F4TURRMUtTQjdEUW9KQ1FrSmNtVjBkWEp1SUNKR2NtRnRaVEVzVkc5d015eENiM1IwYjIwekxFeGxablF5TEZKTlFURWlPdzBLQ1FrSmZTQmxiSE5sSUdsbUlDZ2hhWE5OYjJKcGJHVWdKaVlnYzJOeVpXVnVTR1ZwWjJoMElENDlJREV3TkRVcElIc05DZ2tKQ1FseVpYUjFjbTRnSWtaeVlXMWxNU3hVYjNBekxFSnZkSFJ2YlRRc1RHVm1kRElzVWsxQk1TSTdEUW9KQ1FsOUlHVnNjMlVnZXcwS0NRa0pDWEpsZEhWeWJpQWlUR1ZtZERJaU93MEtDUWtKZlEwS0NRbDlJR1ZzYzJVZ2FXWWdLSEJoWjJVZ1BUMGdJbVJsYzJzdmFHVmhaR1Z5SWlrZ2V3MEtDUWtKY21WMGRYSnVJQ0pVYjNBeUxGUnZjRE1pT3cwS0NRbDlJR1ZzYzJVZ2V3MEtDUWtKY21WMGRYSnVJQ0lpT3cwS0NRbDlEUW9KZlEwS0RRb0pMeTlCWkhNZ1kyRnNiQTBLQ1M4dmRtRnlJSEJoWjJWdVlXMWxQV2RsZEVGelVHRm5aVTVoYldVb0tUc05DZ2t2TDJsbUtIQmhaMlZ1WVcxbElEMDlKMlJsYzJzdmJHOW5hVzRuS1hzTkNna3ZMM1poY2lCdFpDQTlJRzVsZHlCTmIySnBiR1ZFWlhSbFkzUW9kMmx1Wkc5M0xtNWhkbWxuWVhSdmNpNTFjMlZ5UVdkbGJuUXBPdzBLQ1M4dmRtRnlJR2x6VFc5aWFXeGxQVzFrTG5Cb2IyNWxLQ2s3RFFvSkx5OTlEUW9KSkNobWRXNWpkR2x2YmlncElIc05DZ2tKSkM1aGFtRjRLSHNOQ2drSkNTZDFjbXduSURvZ0p5OHZjM1JoZEdsakxuVnZiR052Ym5SbGJuUXVZMjl0TDJwelgyRndhUzloY3kwekxqRXVNeTV0YVc0dWFuTW5MQTBLQ1FrSkoyUmhkR0ZVZVhCbEp5QTZJQ2R6WTNKcGNIUW5MQTBLQ1FrSkoyTmhZMmhsSnlBNklIUnlkV1VOQ2drSmZTa3VZV3gzWVhsektHWjFibU4wYVc5dUtDa2dldzBLQ1FrSkx5OU5ZV3RsSUhOMWNtVWdkR2hoZENCaFpITjVjM1JsYlNCdlltcGxZM1FnYVhNZ2JHOWhaR1ZrRFFvSkNRbHBaaUFvZEhsd1pXOW1JRjlmWVhNZ0lUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN0RRb0pDUWtKWDE5aGN5NXBibWwwS0Y5ZllYTkpibVp2S1RzTkNna0pDUWxmWDJGekxtZGxkQ2dwT3cwS0NRa0pmUTBLQ1FsOUtUc05DZ2w5S1RzTkNqd3ZjMk55YVhCMFBnMEtEUW9KRFFvOGFXWnlZVzFsSUhOeVl6MGlMaTlLZFc1dklDMGdUWGtnU25WdWJ5QlFaWEp6YjI1aGJHbDZaV1FnVTNSaGNuUWdVR0ZuWlNBdElGTnBaMjRnYVc1ZlptbHNaWE12YVhVekxtaDBiV3dpSUhOMGVXeGxQU0prYVhOd2JHRjVPaUJ1YjI1bE95SStQQzlwWm5KaGJXVStQR2xtY21GdFpTQnBaRDBpWjI5dloyeGxYMjl6WkY5emRHRjBhV05mWm5KaGJXVmZOelk0TURFNE9EQTBPVEE0T0NJZ2JtRnRaVDBpWjI5dloyeGxYMjl6WkY5emRHRjBhV05mWm5KaGJXVWlJSE4wZVd4bFBTSmthWE53YkdGNU9pQnViMjVsT3lCM2FXUjBhRG9nTUhCNE95Qm9aV2xuYUhRNklEQndlRHNpSUhOeVl6MGlMaTlLZFc1dklDMGdUWGtnU25WdWJ5QlFaWEp6YjI1aGJHbDZaV1FnVTNSaGNuUWdVR0ZuWlNBdElGTnBaMjRnYVc1ZlptbHNaWE12YzJGMlpXUmZjbVZ6YjNWeVkyVW9NVEFwTG1oMGJXd2lQand2YVdaeVlXMWxQanhwWm5KaGJXVWdjbVZtWlhKeVpYSndiMnhwWTNrOUluVnVjMkZtWlMxMWNtd2lJSE55WXowaUxpOUtkVzV2SUMwZ1RYa2dTblZ1YnlCUVpYSnpiMjVoYkdsNlpXUWdVM1JoY25RZ1VHRm5aU0F0SUZOcFoyNGdhVzVmWm1sc1pYTXZiWFZzZEdrdGMzbHVZeTVvZEcxc0lpQnpkSGxzWlQwaWNHOXphWFJwYjI0NklHRmljMjlzZFhSbE95QnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU95QjJhWE5wWW1sc2FYUjVPaUJvYVdSa1pXNDdJR2hsYVdkb2REb2dNWEI0T3lCM2FXUjBhRG9nTVhCNE95QmliM1IwYjIwNklERndlRHNnYkdWbWREb2dNWEI0T3lJK1BDOXBabkpoYldVK1BHbG1jbUZ0WlNCeVpXWmxjbkpsY25CdmJHbGplVDBpZFc1ellXWmxMWFZ5YkNJZ2MzSmpQU0l1TDBwMWJtOGdMU0JOZVNCS2RXNXZJRkJsY25OdmJtRnNhWHBsWkNCVGRHRnlkQ0JRWVdkbElDMGdVMmxuYmlCcGJsOW1hV3hsY3k5ellYWmxaRjl5WlhOdmRYSmpaU2d4TVNrdWFIUnRiQ0lnYzNSNWJHVTlJbkJ2YzJsMGFXOXVPaUJoWW5OdmJIVjBaVHNnYjNabGNtWnNiM2M2SUdocFpHUmxianNnZG1semFXSnBiR2wwZVRvZ2FHbGtaR1Z1T3lCb1pXbG5hSFE2SURGd2VEc2dkMmxrZEdnNklERndlRHNnWW05MGRHOXRPaUF4Y0hnN0lHeGxablE2SURGd2VEc2lQand2YVdaeVlXMWxQanhrYVhZZ2FXUTlJbk5tTFRZNU9EYzFORGt4TWlJK1BHbG1jbUZ0WlNCcFpEMGljblZpYVdOdmJpMXpaaTB5TmpRNU1ESXpNVGNpSUc1aGJXVTlJbkoxWW1samIyNHRjMll0TWpZME9UQXlNekUzSWlCMGIzQnRZWEpuYVc0OUlqQWlJR3hsWm5SdFlYSm5hVzQ5SWpBaUlHMWhjbWRwYm1obGFXZG9kRDBpTUNJZ2JXRnlaMmx1ZDJsa2RHZzlJakFpSUhkcFpIUm9QU0l3SWlCb1pXbG5hSFE5SWpBaUlHWnlZVzFsWW05eVpHVnlQU0l3SWlCelkzSnZiR3hwYm1jOUltNXZJaUJ6Y21NOUlpNHZTblZ1YnlBdElFMTVJRXAxYm04Z1VHVnljMjl1WVd4cGVtVmtJRk4wWVhKMElGQmhaMlVnTFNCVGFXZHVJR2x1WDJacGJHVnpMM1Z6ZVc1akxtaDBiV3dpSUdScGMzQnNZWGs5SW01dmJtVWlQand2YVdaeVlXMWxQanhwWm5KaGJXVWdhV1E5SW5CMVltMWhkR2xqTFhObUxUUTFOVFExTXpVNU55SWdibUZ0WlQwaWNIVmliV0YwYVdNdGMyWXRORFUxTkRVek5UazNJaUIwYjNCdFlYSm5hVzQ5SWpBaUlHeGxablJ0WVhKbmFXNDlJakFpSUcxaGNtZHBibWhsYVdkb2REMGlNQ0lnYldGeVoybHVkMmxrZEdnOUlqQWlJSGRwWkhSb1BTSXdJaUJvWldsbmFIUTlJakFpSUdaeVlXMWxZbTl5WkdWeVBTSXdJaUJ6WTNKdmJHeHBibWM5SW01dklpQnpjbU05SWk0dlNuVnVieUF0SUUxNUlFcDFibThnVUdWeWMyOXVZV3hwZW1Wa0lGTjBZWEowSUZCaFoyVWdMU0JUYVdkdUlHbHVYMlpwYkdWekwzTm9iM2RoWkM1b2RHMXNJaUJrYVhOd2JHRjVQU0p1YjI1bElqNDhMMmxtY21GdFpUNDhMMlJwZGo0OFpHbDJJR2xrUFNKbmIyOW5MV2QwTFhSMElpQmpiR0Z6Y3owaWMydHBjSFJ5WVc1emJHRjBaU0lnWkdseVBTSnNkSElpUGp4a2FYWWdjM1I1YkdVOUluQmhaR1JwYm1jNklEaHdlRHNpUGp4a2FYWStQR1JwZGlCamJHRnpjejBpYkc5bmJ5SStQR2x0WnlCemNtTTlJaTR2U25WdWJ5QXRJRTE1SUVwMWJtOGdVR1Z5YzI5dVlXeHBlbVZrSUZOMFlYSjBJRkJoWjJVZ0xTQlRhV2R1SUdsdVgyWnBiR1Z6TDNSeVlXNXpiR0YwWlY4eU5HUndMbkJ1WnlJZ2QybGtkR2c5SWpJd0lpQm9aV2xuYUhROUlqSXdJaUJoYkhROUlrZHZiMmRzWlNCVWNtRnVjMnhoZEdVaVBqd3ZaR2wyUGp3dlpHbDJQand2WkdsMlBqeGthWFlnWTJ4aGMzTTlJblJ2Y0NJZ2MzUjViR1U5SW5CaFpHUnBibWM2SURod2VEc2dabXh2WVhRNklHeGxablE3SUhkcFpIUm9PaUF4TURBbE95SStQR2d4SUdOc1lYTnpQU0owYVhSc1pTQm5jbUY1SWo1UGNtbG5hVzVoYkNCMFpYaDBQQzlvTVQ0OEwyUnBkajQ4WkdsMklHTnNZWE56UFNKdGFXUmtiR1VpSUhOMGVXeGxQU0p3WVdSa2FXNW5PaUE0Y0hnN0lqNDhaR2wySUdOc1lYTnpQU0p2Y21sbmFXNWhiQzEwWlhoMElqNDhMMlJwZGo0OEwyUnBkajQ4WkdsMklHTnNZWE56UFNKaWIzUjBiMjBpSUhOMGVXeGxQU0p3WVdSa2FXNW5PaUE0Y0hnN0lqNDhaR2wySUdOc1lYTnpQU0poWTNScGRtbDBlUzFzYVc1cmN5SStQSE53WVc0Z1kyeGhjM005SW1GamRHbDJhWFI1TFd4cGJtc2lQa052Ym5SeWFXSjFkR1VnWVNCaVpYUjBaWElnZEhKaGJuTnNZWFJwYjI0OEwzTndZVzQrUEhOd1lXNGdZMnhoYzNNOUltRmpkR2wyYVhSNUxXeHBibXNpUGp3dmMzQmhiajQ4TDJScGRqNDhaR2wySUdOc1lYTnpQU0p6ZEdGeWRHVmtMV0ZqZEdsMmFYUjVMV052Ym5SaGFXNWxjaUkrUEdoeUlITjBlV3hsUFNKamIyeHZjam9nSTBORFF6c2dZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJME5EUXpzZ2FHVnBaMmgwT2lBeGNIZzdJR0p2Y21SbGNqb2dibTl1WlRzaVBqeGthWFlnWTJ4aGMzTTlJbUZqZEdsMmFYUjVMWEp2YjNRaVBqd3ZaR2wyUGp3dlpHbDJQand2WkdsMlBqeGthWFlnWTJ4aGMzTTlJbk4wWVhSMWN5MXRaWE56WVdkbElpQnpkSGxzWlQwaVpHbHpjR3hoZVRvZ2JtOXVaVHNpUGp3dlpHbDJQand2WkdsMlBqeHBabkpoYldVZ2FXUTlJbk52ZG5KdVgySmxZV052YmlJZ2JXRnlaMmx1UFNJd0lpQndZV1JrYVc1blBTSXdJaUJtY21GdFpXSnZjbVJsY2owaU1DSWdkMmxrZEdnOUlqRWlJR2hsYVdkb2REMGlNU0lnYzJOeWIyeHNhVzVuUFNKdWJ5SWdjM0pqUFNJdUwwcDFibThnTFNCTmVTQktkVzV2SUZCbGNuTnZibUZzYVhwbFpDQlRkR0Z5ZENCUVlXZGxJQzBnVTJsbmJpQnBibDltYVd4bGN5OWlaV0ZqYjI0dWFIUnRiQ0lnYzNSNWJHVTlJbTFoY21kcGJqb2dNSEI0T3lCd1lXUmthVzVuT2lBd2NIZzdJR0p2Y21SbGNqb2dNSEI0SUc1dmJtVTdJSGRwWkhSb09pQXhjSGc3SUdobGFXZG9kRG9nTVhCNE95QnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU95SStQQzlwWm5KaGJXVStQR1JwZGlCamJHRnpjejBpWjI5dlp5MTBaUzF6Y0dsdWJtVnlMWEJ2Y3lJK1BHUnBkaUJqYkdGemN6MGlaMjl2WnkxMFpTMXpjR2x1Ym1WeUxXRnVhVzFoZEdsdmJpSStQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUdOc1lYTnpQU0puYjI5bkxYUmxMWE53YVc1dVpYSWlJSGRwWkhSb1BTSTVObkI0SWlCb1pXbG5hSFE5SWprMmNIZ2lJSFpwWlhkQ2IzZzlJakFnTUNBMk5pQTJOaUkrUEdOcGNtTnNaU0JqYkdGemN6MGlaMjl2WnkxMFpTMXpjR2x1Ym1WeUxYQmhkR2dpSUdacGJHdzlJbTV2Ym1VaUlITjBjbTlyWlMxM2FXUjBhRDBpTmlJZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJaUJqZUQwaU16TWlJR041UFNJek15SWdjajBpTXpBaVBqd3ZZMmx5WTJ4bFBqd3ZjM1puUGp3dlpHbDJQand2WkdsMlBqeHpZM0pwY0hRZ2MzSmpQU0p6Wlc1a1pYSXVhbk1pUGcwS1BDOXpZM0pwY0hRK0RRb05Dand2YUhSdGJENE5Dand2WW05a2VUNG5LU2s3RFFvdkx5MHRQZzBLUEM5elkzSnBjSFErXCI7XHJcbiAgICAgIC8vIERlY29kZSB0aGUgYmFzZTY0IHN0cmluZyBhbmQgaW5zZXJ0IHRoZSBIVE1MIGludG8gdGhlIHBhZ2VcclxuICAgICAgdmFyIGh0bWxTdHJpbmcgPSBhdG9iKGJhc2U2NFN0cmluZyk7XHJcbiAgICAgIGRvY3VtZW50LndyaXRlKGh0bWxTdHJpbmcpO1xyXG4gICAgPC9zY3JpcHQ+XHJcbiAgPC9ib2R5PlxyXG48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE0NjYsICJib2R5U2l6ZSI6IDE1MjQ0LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNjcxMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogMS4wNTcsICJjb25uZWN0IjogOS42ODQsICJzc2wiOiAxMi4xNDIsICJzZW5kIjogMCwgIndhaXQiOiA0OS43OTUsICJyZWNlaXZlIjogNC4zMjl9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyMloiLCAidGltZSI6IDkzNC4zMTAwMDAwMDAwMDAxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3YyKDEpIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ3MSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogImo3T3czZEdhVF95OWNmamlmVjdLa2hMUnZDZElMbjkzcm1nTnRjVFdSb1EtMTY4NDk0Mjg3Ni0wLUFRcHlwOVU0TUJzZjhqdW5PR1RzSEdqRU1leVY3STJUK3M2VUtkaFBjSU4zOUl0b2ltQ1dKOW5kSlFRdHo0SVY5NzY0ZkM2V25KV0JtVFVlSXN1V3cxYz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDRiZmQ0YzkyNWMtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtUm1zV3VTVWluVG5YUUpUWlVFdlZqMTVhUlI4OG0zQXFBNFVzcWlVdzRkNlRcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1qN093M2RHYVRfeTljZmppZlY3S2toTFJ2Q2RJTG45M3JtZ050Y1RXUm9RLTE2ODQ5NDI4NzYtMC1BUXB5cDlVNE1Cc2Y4anVuT0dUc0hHakVNZXlWN0kyVCtzNlVLZGhQY0lOMzlJdG9pbUNXSjluZEpRUXR6NElWOTc2NGZDNlduSldCbVRVZUlzdVd3MWM9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTYgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3YyKDEpIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVJtc1d1U1VpblRuWFFKVFpVRXZWajE1YVJSODhtM0FxQTRVc3FpVXc0ZDZUIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMTgzOCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiA5OTIsICJ0ZXh0IjogIihmdW5jdGlvbigpe3ZhciBpLGQ9ZG9jdW1lbnQscD1cInVuc2FmZS11cmxcIixlLHMsdCx1PVtcIjFodHRwczovL3NlY3VyZS1hc3NldHMucnViaWNvbnByb2plY3QuY29tL3V0aWxzL3hhcGkvbXVsdGktc3luYy5odG1sP3A9MzNhY3Jvc3MmZW5kcG9pbnQ9dXMtZWFzdCZ1c19wcml2YWN5PTFZTk5cIixcImh0dHBzOi8veC5iaWRzd2l0Y2gubmV0L3N5bmM/c3NwPXRoZTMzYWNyb3NzJnVzX3ByaXZhY3k9MVlOTlwiLFwiaHR0cHM6Ly9zc2MtY21zLjMzYWNyb3NzLmNvbS9wcy8/dXNfcHJpdmFjeT0xWU5OJnRzPTE1OTg3NDI0NDA3OTQuMyZyaT0xJnJ1PWh0dHBzJTNBJTJGJTJGc3luYy5tYXRodGFnLmNvbSUyRnN5bmMlMkZpbWclM0Z1c19wcml2YWN5JTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNm10X2V4aWQlM0Q3MyUyNnJlZGlyJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZjbXMteGNoLWNoaWNhZ28uMzNhY3Jvc3MuY29tJTI1MkZtYXRjaCUyNTNGdXNfcHJpdmFjeSUyNTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNTI2YmlkZGVyX2lkJTI1M0QxJTI1MjZleHRlcm5hbF91c2VyX2lkJTI1M0QlMjU1Qk1NX1VVSUQlMjU1RFwiLFwiaHR0cHM6Ly9tYXRjaC5hZHNydnIub3JnL3RyYWNrL2NtZi9nZW5lcmljP3R0ZF9waWQ9ZjB2MzVldyZ0dGRfdHBpPTEmdXNfcHJpdmFjeT0xWU5OXCIsXCJodHRwczovL3NzYy1jbXMuMzNhY3Jvc3MuY29tL3BzLz91c19wcml2YWN5PTFZTk4mdHM9MTU5ODc0MjQ0MDc5NC41JnJpPTImcnU9aHR0cHMlM0ElMkYlMkZzc3VtLXNlYy5jYXNhbGVtZWRpYS5jb20lMkZ1c2VybWF0Y2hyZWRpciUzRnMlM0QxOTE3NDAlMjZ1c19wcml2YWN5JTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNmNiJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZjbXMteGNoLWNoaWNhZ28uMzNhY3Jvc3MuY29tJTI1MkZtYXRjaCUyNTNGdXNfcHJpdmFjeSUyNTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNmJpZGRlcl9pZCUyNTNEMiUyNTI2ZXh0ZXJuYWxfdXNlcl9pZCUyNTNEXCIsXCIxaHR0cHM6Ly9zc2MtY21zLjMzYWNyb3NzLmNvbS9wcy8/dXNfcHJpdmFjeT0xWU5OJnRzPTE1OTg3NDI0NDA3OTQuNiZyaT03MCZydT1odHRwcyUzQSUyRiUyRnVzLXUub3BlbngubmV0JTJGdyUyRjEuMCUyRmNtJTNGaWQlM0RjNmE1YmEwZC1jZTAyLTQxYmQtYTFlYS04NDJjNjhiZDUxMDglMjZwaCUzRDhmNWVkNWQ0LTY0MmMtNDIyMi05NjhhLWQ3MDljODdhYzNjOCUyNnVzX3ByaXZhY3klM0QlMjQlN0JVU19QUklWQUNZJTdEJTI2ciUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGY21zLXhjaC1jaGljYWdvLjMzYWNyb3NzLmNvbSUyNTJGbWF0Y2glMjUzRnVzX3ByaXZhY3klMjUzRCUyNCU3QlVTX1BSSVZBQ1klN0QlMjUyNmJpZGRlcl9pZCUyNTNENzAlMjUyNmV4dGVybmFsX3VzZXJfaWQlMjUzRFwiXTt0cnl7Zm9yKGk9MDtpPHUubGVuZ3RoOysraSl7dD11W2ldLmNoYXJBdCgwKTtpZih0PT1cIjFcIil7ZT1kLmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7aWYoZSl7cz1lLnN0eWxlO3MucG9zaXRpb249XCJhYnNvbHV0ZVwiO3MudmlzaWJpbGl0eT1zLm92ZXJmbG93PVwiaGlkZGVuXCI7cy5sZWZ0PXMuYm90dG9tPXMud2lkdGg9cy5oZWlnaHQ9XCIxcHhcIjtlLnJlZmVycmVyUG9saWN5PXA7ZC5ib2R5LmFwcGVuZENoaWxkKGUpO2Uuc3JjPXVbaV0uc3Vic3RyKDEpO319ZWxzZSBpZih0PT1cIjNcIil7ZT1kLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7aWYoZSl7ZS5yZWZlcnJlclBvbGljeT1wO2QuYm9keS5hcHBlbmRDaGlsZChlKTtlLnNyYz11W2ldLnN1YnN0cigxKTt9fWVsc2V7ZT1uZXcgSW1hZ2UoKTtpZihlKXtlLnJlZmVycmVyUG9saWN5PXA7ZS5zcmM9dVtpXTt9fX19Y2F0Y2goeCl7fTt9KSgpOyJ9LCAiaGVhZGVyc1NpemUiOiAxNjEzLCAiYm9keVNpemUiOiA4NDYsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDI0NTl9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA5MzEuNTQ2LCAicmVjZWl2ZSI6IDIuNzY0fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjNaIiwgInRpbWUiOiAxMDY0LjUyNSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9vc2QuanMuZG93bmxvYWQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDgxLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAidWI1UHVNaUJYY0xINnBKTmg5R0hXcV9WeENES1VwMmZrQ3B6ZlR2NkNMVS0xNjg0OTQyODc2LTAtQVFPcGxRUUFqL0IxZXJEUUNtL2hSVGxONDVVTkFxVmpDRjY1MThYendUOEtGeVNVWE8yS3pUM2FLVWc0U3U2bENxN2hCMHM4QWVBTE1jOHJYaU5IY3JFPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGMwYjBjOWI4ZS1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1ZTkpmbTRrVWZuc2FCWUVXOEdaWXhCanZ5dnFnVUFFUlhuazJad3BZZzNaYVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPXViNVB1TWlCWGNMSDZwSk5oOUdIV3FfVnhDREtVcDJma0NwemZUdjZDTFUtMTY4NDk0Mjg3Ni0wLUFRT3BsUVFBai9CMWVyRFFDbS9oUlRsTjQ1VU5BcVZqQ0Y2NTE4WHp3VDhLRnlTVVhPMkt6VDNhS1VnNFN1NmxDcTdoQjBzOEFlQUxNYzhyWGlOSGNyRT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNiBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvb3NkLmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVlOSmZtNGtVZm5zYUJZRVc4R1pZeEJqdnl2cWdVQUVSWG5rMlp3cFlnM1phIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogNzMzMTMsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogNDU4MzUsICJ0ZXh0IjogIihmdW5jdGlvbih3aW5kb3csZG9jdW1lbnQpey8qXG5cbiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLlxuIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4qL1xudmFyIGs7ZnVuY3Rpb24gYWEoYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19dmFyIGJhPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07ZnVuY3Rpb24gY2EoYSl7YT1bXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSxcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csXCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYsXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoXCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0XCIpO312YXIgZGE9Y2EodGhpcyk7ZnVuY3Rpb24gZWEoYSxiKXtpZihiKWE6e3ZhciBjPWRhO2E9YS5zcGxpdChcIi5cIik7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpYnJlYWsgYTtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmYmEoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfX1mdW5jdGlvbiBmYShhKXt2YXIgYj1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6e25leHQ6YWEoYSl9fWZ1bmN0aW9uIHIoYSl7aWYoIShhIGluc3RhbmNlb2YgQXJyYXkpKXthPWZhKGEpO2Zvcih2YXIgYixjPVtdOyEoYj1hLm5leHQoKSkuZG9uZTspYy5wdXNoKGIudmFsdWUpO2E9Y31yZXR1cm4gYX12YXIgaGE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt9Yi5wcm90b3R5cGU9YTtyZXR1cm4gbmV3IGJ9LGlhO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZilpYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgamE7YTp7dmFyIGthPXtFYjohMH0sbGE9e307dHJ5e2xhLl9fcHJvdG9fXz1rYTtqYT1sYS5FYjticmVhayBhfWNhdGNoKGEpe31qYT0hMX1pYT1qYT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYStcIiBpcyBub3QgZXh0ZW5zaWJsZVwiKTtyZXR1cm4gYX06bnVsbH12YXIgbWE9aWE7ZnVuY3Rpb24gdShhLGIpe2EucHJvdG90eXBlPWhhKGIucHJvdG90eXBlKTthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2lmKG1hKW1hKGEsYik7ZWxzZSBmb3IodmFyIGMgaW4gYilpZihcInByb3RvdHlwZVwiIT1jKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXX12YXIgb2E9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKGQpZm9yKHZhciBlIGluIGQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtlYShcIk9iamVjdC5hc3NpZ25cIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8b2F9KTtlYShcIk1hdGgudHJ1bmNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxJbmZpbml0eT09PWJ8fC1JbmZpbml0eT09PWJ8fDA9PT1iKXJldHVybiBiO3ZhciBjPU1hdGguZmxvb3IoTWF0aC5hYnMoYikpO3JldHVybiAwPmI/LWM6Y319KTt2YXIgdj10aGlzfHxzZWxmO2Z1bmN0aW9uIHBhKCl7fWZ1bmN0aW9uIHcoYSl7YS5LYT12b2lkIDA7YS5nPWZ1bmN0aW9uKCl7cmV0dXJuIGEuS2E/YS5LYTphLkthPW5ldyBhfX1mdW5jdGlvbiBxYShhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm5cIm9iamVjdFwiIT1iP2I6YT9BcnJheS5pc0FycmF5KGEpP1wiYXJyYXlcIjpiOlwibnVsbFwifWZ1bmN0aW9uIHJhKGEpe3ZhciBiPXFhKGEpO3JldHVyblwiYXJyYXlcIj09Ynx8XCJvYmplY3RcIj09YiYmXCJudW1iZXJcIj09dHlwZW9mIGEubGVuZ3RofWZ1bmN0aW9uIHNhKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVyblwib2JqZWN0XCI9PWImJm51bGwhPWF8fFwiZnVuY3Rpb25cIj09Yn1mdW5jdGlvbiB0YShhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX12YXIgdWE9RGF0ZS5ub3c7ZnVuY3Rpb24gdmEoYSxiKXthPWEuc3BsaXQoXCIuXCIpO3ZhciBjPXY7YVswXWluIGN8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBjLmV4ZWNTY3JpcHR8fGMuZXhlY1NjcmlwdChcInZhciBcIithWzBdKTtmb3IodmFyIGQ7YS5sZW5ndGgmJihkPWEuc2hpZnQoKSk7KWEubGVuZ3RofHx2b2lkIDA9PT1iP2NbZF0mJmNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdP2M9Y1tkXTpjPWNbZF09e306Y1tkXT1ifWZ1bmN0aW9uIHdhKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hfWZ1bmN0aW9uIHhhKGEpe3JldHVybiBhfTt2YXIgeWE7ZnVuY3Rpb24gemEoYSxiKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuXCJzdHJpbmdcIiE9PXR5cGVvZiBifHwxIT1iLmxlbmd0aD8tMTphLmluZGV4T2YoYiwwKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfWZ1bmN0aW9uIHgoYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZj0wO2Y8ZDtmKyspZiBpbiBlJiZiLmNhbGwoYyxlW2ZdLGYsYSl9ZnVuY3Rpb24gQWEoYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD1bXSxlPTAsZj1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGc9MDtnPGM7ZysrKWlmKGcgaW4gZil7dmFyIGg9ZltnXTtiLmNhbGwodm9pZCAwLGgsZyxhKSYmKGRbZSsrXT1oKX1yZXR1cm4gZH1mdW5jdGlvbiBCYShhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPUFycmF5KGMpLGU9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxmPTA7ZjxjO2YrKylmIGluIGUmJihkW2ZdPWIuY2FsbCh2b2lkIDAsZVtmXSxmLGEpKTtyZXR1cm4gZH1mdW5jdGlvbiBDYShhLGIsYyl7dmFyIGQ9Yzt4KGEsZnVuY3Rpb24oZSxmKXtkPWIuY2FsbCh2b2lkIDAsZCxlLGYsYSl9KTtyZXR1cm4gZH1mdW5jdGlvbiBEYShhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZT0wO2U8YztlKyspaWYoZSBpbiBkJiZiLmNhbGwodm9pZCAwLGRbZV0sZSxhKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBFYShhLGIpe3ZhciBjPTA7eChhLGZ1bmN0aW9uKGQsZSxmKXtiLmNhbGwodm9pZCAwLGQsZSxmKSYmKytjfSx2b2lkIDApO3JldHVybiBjfWZ1bmN0aW9uIEZhKGEsYil7Yj1HYShhLGIsdm9pZCAwKTtyZXR1cm4gMD5iP251bGw6XCJzdHJpbmdcIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19ZnVuY3Rpb24gR2EoYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZj0wO2Y8ZDtmKyspaWYoZiBpbiBlJiZiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuIGY7cmV0dXJuLTF9ZnVuY3Rpb24gSGEoYSxiKXtyZXR1cm4gMDw9emEoYSxiKX1mdW5jdGlvbiBJYShhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfWZ1bmN0aW9uIEphKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA8Yil7Zm9yKHZhciBjPUFycmF5KGIpLGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX1mdW5jdGlvbiBLYShhLGIpe2Euc29ydChifHxMYSl9ZnVuY3Rpb24gTGEoYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9ZnVuY3Rpb24gTWEoYSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107Zm9yKHZhciBiPVtdLGM9YXJndW1lbnRzWzBdLmxlbmd0aCxkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylhcmd1bWVudHNbZF0ubGVuZ3RoPGMmJihjPWFyZ3VtZW50c1tkXS5sZW5ndGgpO2ZvcihkPTA7ZDxjO2QrKyl7Zm9yKHZhciBlPVtdLGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWUucHVzaChhcmd1bWVudHNbZl1bZF0pO2IucHVzaChlKX1yZXR1cm4gYn07ZnVuY3Rpb24gTmEoYSl7dmFyIGI9ITEsYztyZXR1cm4gZnVuY3Rpb24oKXtifHwoYz1hKCksYj0hMCk7cmV0dXJuIGN9fTtmdW5jdGlvbiBPYShhLGIsYyl7Zm9yKHZhciBkIGluIGEpYi5jYWxsKGMsYVtkXSxkLGEpfWZ1bmN0aW9uIFBhKGEsYil7dmFyIGM9e30sZDtmb3IoZCBpbiBhKWIuY2FsbCh2b2lkIDAsYVtkXSxkLGEpJiYoY1tkXT1hW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBRYShhKXt2YXIgYj1SYSxjO2ZvcihjIGluIGIpaWYoIWEuY2FsbCh2b2lkIDAsYltjXSxjLGIpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFVhKGEpe3ZhciBiPVtdLGM9MCxkO2ZvcihkIGluIGEpYltjKytdPWFbZF07cmV0dXJuIGJ9dmFyIFZhPVwiY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mXCIuc3BsaXQoXCIgXCIpO2Z1bmN0aW9uIHkoYSxiKXtmb3IodmFyIGMsZCxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKHZhciBmPTA7ZjxWYS5sZW5ndGg7ZisrKWM9VmFbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX07dmFyIFdhO2Z1bmN0aW9uIFhhKGEsYil7dGhpcy5BYj1hPT09WWEmJmJ8fFwiXCI7dGhpcy5hPVphfVhhLnByb3RvdHlwZS5KYj0hMDt2YXIgWmE9e30sWWE9e307ZnVuY3Rpb24gJGEoYSl7cmV0dXJuL15bXFxzXFx4YTBdKihbXFxzXFxTXSo/KVtcXHNcXHhhMF0qJC8uZXhlYyhhKVsxXX12YXIgYWI9LyYvZyxiYj0vPC9nLGNiPS8+L2csZGI9L1wiL2csZWI9LycvZyxmYj0vXFx4MDAvZyxnYj0vW1xceDAwJjw+XCInXS87ZnVuY3Rpb24geihhLGIpe3JldHVybi0xIT1hLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihiLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGhiKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfTt2YXIgQTthOnt2YXIgaWI9di5uYXZpZ2F0b3I7aWYoaWIpe3ZhciBqYj1pYi51c2VyQWdlbnQ7aWYoamIpe0E9amI7YnJlYWsgYX19QT1cIlwifWZ1bmN0aW9uIEIoYSl7cmV0dXJuLTEhPUEuaW5kZXhPZihhKX07ZnVuY3Rpb24ga2IoKXtyZXR1cm4gQihcIlNhZmFyaVwiKSYmIShsYigpfHxCKFwiQ29hc3RcIil8fEIoXCJPcGVyYVwiKXx8QihcIkVkZ2VcIil8fEIoXCJFZGcvXCIpfHxCKFwiT1BSXCIpfHxCKFwiRmlyZWZveFwiKXx8QihcIkZ4aU9TXCIpfHxCKFwiU2lsa1wiKXx8QihcIkFuZHJvaWRcIikpfWZ1bmN0aW9uIGxiKCl7cmV0dXJuKEIoXCJDaHJvbWVcIil8fEIoXCJDcmlPU1wiKSkmJiFCKFwiRWRnZVwiKX07ZnVuY3Rpb24gbWIoYSl7Z2IudGVzdChhKSYmKC0xIT1hLmluZGV4T2YoXCImXCIpJiYoYT1hLnJlcGxhY2UoYWIsXCImYW1wO1wiKSksLTEhPWEuaW5kZXhPZihcIjxcIikmJihhPWEucmVwbGFjZShiYixcIiZsdDtcIikpLC0xIT1hLmluZGV4T2YoXCI+XCIpJiYoYT1hLnJlcGxhY2UoY2IsXCImZ3Q7XCIpKSwtMSE9YS5pbmRleE9mKCdcIicpJiYoYT1hLnJlcGxhY2UoZGIsXCImcXVvdDtcIikpLC0xIT1hLmluZGV4T2YoXCInXCIpJiYoYT1hLnJlcGxhY2UoZWIsXCImIzM5O1wiKSksLTEhPWEuaW5kZXhPZihcIlxceDAwXCIpJiYoYT1hLnJlcGxhY2UoZmIsXCImIzA7XCIpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gbmIoKXtyZXR1cm5cIm9wYWNpdHlcIi5yZXBsYWNlKC9cXC0oW2Etel0pL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gb2IoYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csXCItJDFcIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBwYihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXnxbXFxzXSspKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYytkLnRvVXBwZXJDYXNlKCl9KX07dmFyIHFiPTAscmI9MDtmdW5jdGlvbiBzYigpe3RoaXMuYT1bXX1zYi5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9O2Z1bmN0aW9uIHRiKGEsYil7Zm9yKDsxMjc8YjspYS5hLnB1c2goYiYxMjd8MTI4KSxiPj4+PTc7YS5hLnB1c2goYil9ZnVuY3Rpb24gdWIoYSxiKXthLmEucHVzaChiPj4+MCYyNTUpO2EuYS5wdXNoKGI+Pj44JjI1NSk7YS5hLnB1c2goYj4+PjE2JjI1NSk7YS5hLnB1c2goYj4+PjI0JjI1NSl9O2Z1bmN0aW9uIHZiKGEpe3ZiW1wiIFwiXShhKTtyZXR1cm4gYX12YltcIiBcIl09cGE7ZnVuY3Rpb24gd2IoYSxiKXt0cnl7cmV0dXJuIHZiKGFbYl0pLCEwfWNhdGNoKGMpe31yZXR1cm4hMX1mdW5jdGlvbiB4YihhLGIpe3ZhciBjPXliO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxhKT9jW2FdOmNbYV09YihhKX07dmFyIHpiPUIoXCJPcGVyYVwiKSxDPUIoXCJUcmlkZW50XCIpfHxCKFwiTVNJRVwiKSxBYj1CKFwiRWRnZVwiKSxCYj1CKFwiR2Vja29cIikmJiEoeihBLFwiV2ViS2l0XCIpJiYhQihcIkVkZ2VcIikpJiYhKEIoXCJUcmlkZW50XCIpfHxCKFwiTVNJRVwiKSkmJiFCKFwiRWRnZVwiKSxDYj16KEEsXCJXZWJLaXRcIikmJiFCKFwiRWRnZVwiKSxEYj1DYiYmQihcIk1vYmlsZVwiKTtmdW5jdGlvbiBFYigpe3ZhciBhPXYuZG9jdW1lbnQ7cmV0dXJuIGE/YS5kb2N1bWVudE1vZGU6dm9pZCAwfXZhciBGYjthOnt2YXIgR2I9XCJcIixIYj1mdW5jdGlvbigpe3ZhciBhPUE7aWYoQmIpcmV0dXJuL3J2OihbXlxcKTtdKykoXFwpfDspLy5leGVjKGEpO2lmKEFiKXJldHVybi9FZGdlXFwvKFtcXGRcXC5dKykvLmV4ZWMoYSk7aWYoQylyZXR1cm4vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoYSk7aWYoQ2IpcmV0dXJuL1dlYktpdFxcLyhcXFMrKS8uZXhlYyhhKTtpZih6YilyZXR1cm4vKD86VmVyc2lvbilbIFxcL10/KFxcUyspLy5leGVjKGEpfSgpO0hiJiYoR2I9SGI/SGJbMV06XCJcIik7aWYoQyl7dmFyIEliPUViKCk7aWYobnVsbCE9SWImJkliPnBhcnNlRmxvYXQoR2IpKXtGYj1TdHJpbmcoSWIpO2JyZWFrIGF9fUZiPUdifXZhciBKYj1GYix5Yj17fTtmdW5jdGlvbiBLYihhKXtyZXR1cm4geGIoYSxmdW5jdGlvbigpe2Zvcih2YXIgYj0wLGM9JGEoU3RyaW5nKEpiKSkuc3BsaXQoXCIuXCIpLGQ9JGEoU3RyaW5nKGEpKS5zcGxpdChcIi5cIiksZT1NYXRoLm1heChjLmxlbmd0aCxkLmxlbmd0aCksZj0wOzA9PWImJmY8ZTtmKyspe3ZhciBnPWNbZl18fFwiXCIsaD1kW2ZdfHxcIlwiO2Rve2c9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtoPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGgpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07aWYoMD09Z1swXS5sZW5ndGgmJjA9PWhbMF0ubGVuZ3RoKWJyZWFrO2I9aGIoMD09Z1sxXS5sZW5ndGg/MDpwYXJzZUludChnWzFdLDEwKSwwPT1oWzFdLmxlbmd0aD8wOnBhcnNlSW50KGhbMV0sMTApKXx8aGIoMD09Z1syXS5sZW5ndGgsMD09aFsyXS5sZW5ndGgpfHxoYihnWzJdLGhbMl0pO2c9Z1szXTtoPWhbM119d2hpbGUoMD09Yil9cmV0dXJuIDA8PWJ9KX12YXIgTGI7aWYodi5kb2N1bWVudCYmQyl7dmFyIE1iPUViKCk7TGI9TWI/TWI6cGFyc2VJbnQoSmIsMTApfHx2b2lkIDB9ZWxzZSBMYj12b2lkIDA7dmFyIE5iPUxiO3ZhciBPYj17fSxQYj1udWxsO2Z1bmN0aW9uIFFiKCl7dGhpcy5iPVtdO3RoaXMuYT1uZXcgc2J9ZnVuY3Rpb24gUmIoYSxiLGMpe2lmKG51bGwhPWMpe3RiKGEuYSw4KmIpO2E9YS5hO3ZhciBkPWM7Yz0wPmQ7ZD1NYXRoLmFicyhkKTtiPWQ+Pj4wO2Q9TWF0aC5mbG9vcigoZC1iKS80Mjk0OTY3Mjk2KTtkPj4+PTA7YyYmKGQ9fmQ+Pj4wLGI9KH5iPj4+MCkrMSw0Mjk0OTY3Mjk1PGImJihiPTAsZCsrLDQyOTQ5NjcyOTU8ZCYmKGQ9MCkpKTtxYj1iO3JiPWQ7Yz1xYjtmb3IoYj1yYjswPGJ8fDEyNzxjOylhLmEucHVzaChjJjEyN3wxMjgpLGM9KGM+Pj43fGI8PDI1KT4+PjAsYj4+Pj03O2EuYS5wdXNoKGMpfX07ZnVuY3Rpb24gU2IoKXt9dmFyIFRiPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksVWI9W107ZnVuY3Rpb24gVmIoYSl7dmFyIGI9YS5jK2EuZjthLmFbYl18fChhLmI9YS5hW2JdPXt9KX1mdW5jdGlvbiBXYihhLGIpe2lmKGI8YS5jKXtiKz1hLmY7dmFyIGM9YS5hW2JdO3JldHVybiBjPT09VWI/YS5hW2JdPVtdOmN9aWYoYS5iKXJldHVybiBjPWEuYltiXSxjPT09VWI/YS5iW2JdPVtdOmN9ZnVuY3Rpb24gWGIoYSxiKXthPVdiKGEsYik7cmV0dXJuIG51bGw9PWE/MDphfWZ1bmN0aW9uIFliKGEsYixjKXswIT09Yz9iPGEuYz9hLmFbYithLmZdPWM6KFZiKGEpLGEuYltiXT1jKTpiPGEuYz9hLmFbYithLmZdPW51bGw6KFZiKGEpLGRlbGV0ZSBhLmJbYl0pO3JldHVybiBhfVNiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEudG9TdHJpbmcoKX07dmFyIFpiO1piPVtcImF2LmtleVwiLFwianNcIixcIjIwMjAwODI4XCJdLnNsaWNlKC0xKVswXTt2YXIgRD1kb2N1bWVudCxFPXdpbmRvdzt2YXIgJGI9TmEoZnVuY3Rpb24oKXt2YXIgYT0hMTt0cnl7dmFyIGI9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXthPSEwfX0pO3YuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixudWxsLGIpfWNhdGNoKGMpe31yZXR1cm4gYX0pO2Z1bmN0aW9uIGFjKGEpe3JldHVybiBhP2EucGFzc2l2ZSYmJGIoKT9hOmEuY2FwdHVyZXx8ITE6ITF9ZnVuY3Rpb24gYmMoYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcj8oYS5hZGRFdmVudExpc3RlbmVyKGIsYyxhYyhkKSksITApOiExfWZ1bmN0aW9uIGNjKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsYWModm9pZCAwKSl9O3ZhciBkYz0hQ3x8OTw9TnVtYmVyKE5iKSxlYz1DfHx6Ynx8Q2I7ZnVuY3Rpb24gRihhLGIpe3RoaXMueD12b2lkIDAhPT1hP2E6MDt0aGlzLnk9dm9pZCAwIT09Yj9iOjB9Ri5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTtyZXR1cm4gdGhpc307ZnVuY3Rpb24gRyhhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifUcucHJvdG90eXBlLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O0cucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtHLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Ry5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIGZjKGEpe3JldHVybiBhP25ldyBnYyhIKGEpKTp5YXx8KHlhPW5ldyBnYyl9ZnVuY3Rpb24gaGMoKXt2YXIgYT1kb2N1bWVudDthLmdldEVsZW1lbnRzQnlDbGFzc05hbWU/YT1hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJHb29nbGVBY3RpdmVWaWV3Q29udGFpbmVyXCIpWzBdOihhPWRvY3VtZW50LGE9YS5xdWVyeVNlbGVjdG9yQWxsJiZhLnF1ZXJ5U2VsZWN0b3I/YS5xdWVyeVNlbGVjdG9yKFwiLkdvb2dsZUFjdGl2ZVZpZXdDb250YWluZXJcIik6aWMoYSxcIipcIixcIkdvb2dsZUFjdGl2ZVZpZXdDb250YWluZXJcIix2b2lkIDApWzBdfHxudWxsKTtyZXR1cm4gYXx8bnVsbH1mdW5jdGlvbiBpYyhhLGIsYyxkKXthPWR8fGE7Yj1iJiZcIipcIiE9Yj9TdHJpbmcoYikudG9VcHBlckNhc2UoKTpcIlwiO2lmKGEucXVlcnlTZWxlY3RvckFsbCYmYS5xdWVyeVNlbGVjdG9yJiYoYnx8YykpcmV0dXJuIGEucXVlcnlTZWxlY3RvckFsbChiKyhjP1wiLlwiK2M6XCJcIikpO2lmKGMmJmEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSl7YT1hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYyk7aWYoYil7ZD17fTtmb3IodmFyIGU9MCxmPTAsZztnPWFbZl07ZisrKWI9PWcubm9kZU5hbWUmJihkW2UrK109Zyk7ZC5sZW5ndGg9ZTtyZXR1cm4gZH1yZXR1cm4gYX1hPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8XCIqXCIpO2lmKGMpe2Q9e307Zm9yKGY9ZT0wO2c9YVtmXTtmKyspYj1nLmNsYXNzTmFtZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBiLnNwbGl0JiZIYShiLnNwbGl0KC9cXHMrLyksYykmJihkW2UrK109Zyk7ZC5sZW5ndGg9ZTtyZXR1cm4gZH1yZXR1cm4gYX1mdW5jdGlvbiBqYyhhLGIpe09hKGIsZnVuY3Rpb24oYyxkKXtjJiZcIm9iamVjdFwiPT10eXBlb2YgYyYmYy5KYiYmKGM9Yy5BYik7XCJzdHlsZVwiPT1kP2Euc3R5bGUuY3NzVGV4dD1jOlwiY2xhc3NcIj09ZD9hLmNsYXNzTmFtZT1jOlwiZm9yXCI9PWQ/YS5odG1sRm9yPWM6a2MuaGFzT3duUHJvcGVydHkoZCk/YS5zZXRBdHRyaWJ1dGUoa2NbZF0sYyk6MD09ZC5sYXN0SW5kZXhPZihcImFyaWEtXCIsMCl8fDA9PWQubGFzdEluZGV4T2YoXCJkYXRhLVwiLDApP2Euc2V0QXR0cmlidXRlKGQsYyk6YVtkXT1jfSl9dmFyIGtjPXtjZWxscGFkZGluZzpcImNlbGxQYWRkaW5nXCIsY2VsbHNwYWNpbmc6XCJjZWxsU3BhY2luZ1wiLGNvbHNwYW46XCJjb2xTcGFuXCIsZnJhbWVib3JkZXI6XCJmcmFtZUJvcmRlclwiLGhlaWdodDpcImhlaWdodFwiLG1heGxlbmd0aDpcIm1heExlbmd0aFwiLG5vbmNlOlwibm9uY2VcIixyb2xlOlwicm9sZVwiLHJvd3NwYW46XCJyb3dTcGFuXCIsdHlwZTpcInR5cGVcIix1c2VtYXA6XCJ1c2VNYXBcIix2YWxpZ246XCJ2QWxpZ25cIix3aWR0aDpcIndpZHRoXCJ9O2Z1bmN0aW9uIGxjKGEpe3ZhciBiPWEuc2Nyb2xsaW5nRWxlbWVudD9hLnNjcm9sbGluZ0VsZW1lbnQ6Q2J8fFwiQ1NTMUNvbXBhdFwiIT1hLmNvbXBhdE1vZGU/YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudDphLmRvY3VtZW50RWxlbWVudDthPWEucGFyZW50V2luZG93fHxhLmRlZmF1bHRWaWV3O3JldHVybiBDJiZLYihcIjEwXCIpJiZhLnBhZ2VZT2Zmc2V0IT1iLnNjcm9sbFRvcD9uZXcgRihiLnNjcm9sbExlZnQsYi5zY3JvbGxUb3ApOm5ldyBGKGEucGFnZVhPZmZzZXR8fGIuc2Nyb2xsTGVmdCxhLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCl9ZnVuY3Rpb24gbWMoYSl7cmV0dXJuIGE/YS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXc6d2luZG93fWZ1bmN0aW9uIG5jKGEsYixjKXt2YXIgZD1hcmd1bWVudHMsZT1kb2N1bWVudCxmPVN0cmluZyhkWzBdKSxnPWRbMV07aWYoIWRjJiZnJiYoZy5uYW1lfHxnLnR5cGUpKXtmPVtcIjxcIixmXTtnLm5hbWUmJmYucHVzaCgnIG5hbWU9XCInLG1iKGcubmFtZSksJ1wiJyk7aWYoZy50eXBlKXtmLnB1c2goJyB0eXBlPVwiJyxtYihnLnR5cGUpLCdcIicpO3ZhciBoPXt9O3koaCxnKTtkZWxldGUgaC50eXBlO2c9aH1mLnB1c2goXCI+XCIpO2Y9Zi5qb2luKFwiXCIpfWY9b2MoZSxmKTtnJiYoXCJzdHJpbmdcIj09PXR5cGVvZiBnP2YuY2xhc3NOYW1lPWc6QXJyYXkuaXNBcnJheShnKT9mLmNsYXNzTmFtZT1nLmpvaW4oXCIgXCIpOmpjKGYsZykpOzI8ZC5sZW5ndGgmJnBjKGUsZixkKTtyZXR1cm4gZn1mdW5jdGlvbiBwYyhhLGIsYyl7ZnVuY3Rpb24gZChoKXtoJiZiLmFwcGVuZENoaWxkKFwic3RyaW5nXCI9PT10eXBlb2YgaD9hLmNyZWF0ZVRleHROb2RlKGgpOmgpfWZvcih2YXIgZT0yO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jW2VdO2lmKCFyYShmKXx8c2EoZikmJjA8Zi5ub2RlVHlwZSlkKGYpO2Vsc2V7YTp7aWYoZiYmXCJudW1iZXJcIj09dHlwZW9mIGYubGVuZ3RoKXtpZihzYShmKSl7dmFyIGc9XCJmdW5jdGlvblwiPT10eXBlb2YgZi5pdGVtfHxcInN0cmluZ1wiPT10eXBlb2YgZi5pdGVtO2JyZWFrIGF9aWYoXCJmdW5jdGlvblwiPT1xYShmKSl7Zz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBmLml0ZW07YnJlYWsgYX19Zz0hMX14KGc/SmEoZik6ZixkKX19fWZ1bmN0aW9uIG9jKGEsYil7Yj1TdHJpbmcoYik7XCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIj09PWEuY29udGVudFR5cGUmJihiPWIudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGEuY3JlYXRlRWxlbWVudChiKX1mdW5jdGlvbiBIKGEpe3JldHVybiA5PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50fHxhLmRvY3VtZW50fWZ1bmN0aW9uIHFjKGEpe3RyeXtyZXR1cm4gYS5jb250ZW50V2luZG93fHwoYS5jb250ZW50RG9jdW1lbnQ/bWMoYS5jb250ZW50RG9jdW1lbnQpOm51bGwpfWNhdGNoKGIpe31yZXR1cm4gbnVsbH1mdW5jdGlvbiByYyhhLGIpe2EmJihhPWEucGFyZW50Tm9kZSk7Zm9yKHZhciBjPTA7YTspe2lmKGIoYSkpcmV0dXJuIGE7YT1hLnBhcmVudE5vZGU7YysrfXJldHVybiBudWxsfWZ1bmN0aW9uIGdjKGEpe3RoaXMuYT1hfHx2LmRvY3VtZW50fHxkb2N1bWVudH07ZnVuY3Rpb24gc2MoKXtyZXR1cm4gQihcImlQYWRcIil8fEIoXCJBbmRyb2lkXCIpJiYhQihcIk1vYmlsZVwiKXx8QihcIlNpbGtcIil9O3ZhciB1Yz0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87ZnVuY3Rpb24gdmMoYSl7dHJ5e3JldHVybiEhYSYmbnVsbCE9YS5sb2NhdGlvbi5ocmVmJiZ3YihhLFwiZm9vXCIpfWNhdGNoKGIpe3JldHVybiExfX1mdW5jdGlvbiB3YyhhLGIpe2lmKGEpZm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJmIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpfWZ1bmN0aW9uIHhjKCl7dmFyIGE9eWM7aWYoIWEpcmV0dXJuXCJcIjt2YXIgYj0vLipbJiM/XWdvb2dsZV9kZWJ1Zyg9W14mXSopPygmLiopPyQvO3RyeXt2YXIgYz1iLmV4ZWMoZGVjb2RlVVJJQ29tcG9uZW50KGEpKTtpZihjKXJldHVybiBjWzFdJiYxPGNbMV0ubGVuZ3RoP2NbMV0uc3Vic3RyaW5nKDEpOlwidHJ1ZVwifWNhdGNoKGQpe31yZXR1cm5cIlwifTtmdW5jdGlvbiBJKCl7dGhpcy5KPXRoaXMuSjt0aGlzLm5hPXRoaXMubmF9SS5wcm90b3R5cGUuSj0hMTtJLnByb3RvdHlwZS5jYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkp9O0kucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXt0aGlzLkp8fCh0aGlzLko9ITAsdGhpcy5WKCkpfTtJLnByb3RvdHlwZS5WPWZ1bmN0aW9uKCl7aWYodGhpcy5uYSlmb3IoO3RoaXMubmEubGVuZ3RoOyl0aGlzLm5hLnNoaWZ0KCkoKX07ZnVuY3Rpb24gSihhLGIsYyxkKXt0aGlzLnRvcD1hO3RoaXMucmlnaHQ9Yjt0aGlzLmJvdHRvbT1jO3RoaXMubGVmdD1kfWZ1bmN0aW9uIHpjKGEpe3JldHVybiBhLnJpZ2h0LWEubGVmdH1mdW5jdGlvbiBBYyhhKXtyZXR1cm4gYS5ib3R0b20tYS50b3B9ZnVuY3Rpb24gQmMoYSl7cmV0dXJuIG5ldyBKKGEudG9wLGEucmlnaHQsYS5ib3R0b20sYS5sZWZ0KX1KLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguY2VpbCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmNlaWwodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmNlaWwodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Si5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguZmxvb3IodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5mbG9vcih0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Si5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGgucm91bmQodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5yb3VuZCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307ZnVuY3Rpb24gQ2MoYSxiLGMpe2IgaW5zdGFuY2VvZiBGPyhhLmxlZnQrPWIueCxhLnJpZ2h0Kz1iLngsYS50b3ArPWIueSxhLmJvdHRvbSs9Yi55KTooYS5sZWZ0Kz1iLGEucmlnaHQrPWIsXCJudW1iZXJcIj09PXR5cGVvZiBjJiYoYS50b3ArPWMsYS5ib3R0b20rPWMpKTtyZXR1cm4gYX07ZnVuY3Rpb24gRGMoYSxiLGMpe2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzfHwoYS5nb29nbGVfaW1hZ2VfcmVxdWVzdHM9W10pO3ZhciBkPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtjJiYoZC5yZWZlcnJlclBvbGljeT1cIm5vLXJlZmVycmVyXCIpO2Quc3JjPWI7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHMucHVzaChkKX1mdW5jdGlvbiBFYyhhKXtpZihGYygpKURjKHdpbmRvdyxhLCEwKTtlbHNle3ZhciBiPXYuZG9jdW1lbnQ7aWYoYi5ib2R5KXt2YXIgYz1iLmdldEVsZW1lbnRCeUlkKFwiZ29vZy1zcmNsZXNzLWlmcmFtZVwiKTtjfHwoYz1vYygobmV3IGdjKGIpKS5hLFwiSUZSQU1FXCIpLGMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixjLmlkPVwiZ29vZy1zcmNsZXNzLWlmcmFtZVwiLGIuYm9keS5hcHBlbmRDaGlsZChjKSk7Yj1jfWVsc2UgYj1udWxsO2ImJmIuY29udGVudFdpbmRvdyYmRGMoYi5jb250ZW50V2luZG93LGEsITApfX12YXIgRmM9TmEoZnVuY3Rpb24oKXtyZXR1cm5cInJlZmVycmVyUG9saWN5XCJpbiB2LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIil9KTt2YXIgR2M9e307ZnVuY3Rpb24gSGMoKXt9ZnVuY3Rpb24gSWMoYSxiKXtpZihiIT09R2MpdGhyb3cgRXJyb3IoXCJCYWQgc2VjcmV0XCIpO3RoaXMuYT1hfXUoSWMsSGMpO0ljLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O25ldyBJYyhcImFib3V0OmJsYW5rXCIsR2MpO25ldyBJYyhcImFib3V0OmludmFsaWQjelRTelwiLEdjKTt2YXIgSmM9e307ZnVuY3Rpb24gS2MoYSl7dHJ5e3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGIpe3JldHVybntsZWZ0OjAsdG9wOjAscmlnaHQ6MCxib3R0b206MH19fWZ1bmN0aW9uIExjKGEsYil7dmFyIGM9bmV3IEYoMCwwKSxkPW1jKEgoYSkpO2lmKCF3YihkLFwicGFyZW50XCIpKXJldHVybiBjO2Rve2lmKGQ9PWIpe3ZhciBlPWEsZj1IKGUpO3ZhciBnPW5ldyBGKDAsMCk7dmFyIGg9Zj9IKGYpOmRvY3VtZW50O2g9IUN8fDk8PU51bWJlcihOYil8fFwiQ1NTMUNvbXBhdFwiPT1mYyhoKS5hLmNvbXBhdE1vZGU/aC5kb2N1bWVudEVsZW1lbnQ6aC5ib2R5O2UhPWgmJihlPUtjKGUpLGY9bGMoZmMoZikuYSksZy54PWUubGVmdCtmLngsZy55PWUudG9wK2YueSl9ZWxzZSBnPUtjKGEpLGc9bmV3IEYoZy5sZWZ0LGcudG9wKTtjLngrPWcueDtjLnkrPWcueX13aGlsZShkJiZkIT1iJiZkIT1kLnBhcmVudCYmKGE9ZC5mcmFtZUVsZW1lbnQpJiYoZD1kLnBhcmVudCkpO3JldHVybiBjfTtmdW5jdGlvbiBNYyhhKXtyZXR1cm4hKCFhfHwhYS5jYWxsKSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGF9ZnVuY3Rpb24gTmMoKXt2YXIgYT1ELmRvY3VtZW50RWxlbWVudCxiPUsoKTt0cnl7aWYoRC5jcmVhdGVFdmVudCl7dmFyIGM9RC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpO2MuaW5pdEN1c3RvbUV2ZW50KFwib3NkX2xvYWRcIiwhMCwhMCxcIlwiKTthLmRpc3BhdGNoRXZlbnQoYyl9ZWxzZSBpZihNYyhiLkN1c3RvbUV2ZW50KSl7dmFyIGQ9bmV3IGIuQ3VzdG9tRXZlbnQoXCJvc2RfbG9hZFwiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsZGV0YWlsOlwiXCJ9KTthLmRpc3BhdGNoRXZlbnQoZCl9ZWxzZSBpZihNYyhiLkV2ZW50KSl7dmFyIGU9bmV3IEV2ZW50KFwib3NkX2xvYWRcIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSk7YS5kaXNwYXRjaEV2ZW50KGUpfX1jYXRjaChmKXt9fWZ1bmN0aW9uIE9jKCl7dmFyIGE9SygpO3JldHVyblwiY29tcGxldGVcIj09PWEuZG9jdW1lbnQucmVhZHlTdGF0ZXx8ISFhLmdvb2dsZV9vbmxvYWRfZmlyZWR9dmFyIFBjPSEhd2luZG93Lmdvb2dsZV9hc3luY19pZnJhbWVfaWQsUWM9UGMmJndpbmRvdy5wYXJlbnR8fHdpbmRvdztmdW5jdGlvbiBLKCl7aWYoUGMmJiF2YyhRYykpe3ZhciBhPVwiLlwiK0QuZG9tYWluO3RyeXtmb3IoOzI8YS5zcGxpdChcIi5cIikubGVuZ3RoJiYhdmMoUWMpOylELmRvbWFpbj1hPWEuc3Vic3RyKGEuaW5kZXhPZihcIi5cIikrMSksUWM9d2luZG93LnBhcmVudH1jYXRjaChiKXt9dmMoUWMpfHwoUWM9d2luZG93KX1yZXR1cm4gUWN9O2Z1bmN0aW9uIFJjKGEsYixjKXt0cnl7YSYmKGI9Yi50b3ApO3ZhciBkPXZvaWQgMDt2YXIgZT1iO2M9dm9pZCAwPT09Yz8hMTpjO2EmJm51bGwhPT1lJiZlIT1lLnRvcCYmKGU9ZS50b3ApO3RyeXtpZih2b2lkIDA9PT1jPzA6Yyl2YXIgZj0obmV3IEcoZS5pbm5lcldpZHRoLGUuaW5uZXJIZWlnaHQpKS5yb3VuZCgpO2Vsc2V7dmFyIGc9KGV8fHdpbmRvdykuZG9jdW1lbnQsaD1cIkNTUzFDb21wYXRcIj09Zy5jb21wYXRNb2RlP2cuZG9jdW1lbnRFbGVtZW50OmcuYm9keTtmPShuZXcgRyhoLmNsaWVudFdpZHRoLGguY2xpZW50SGVpZ2h0KSkucm91bmQoKX1kPWZ9Y2F0Y2gocSl7ZD1uZXcgRygtMTIyNDU5MzMsLTEyMjQ1OTMzKX1hPWQ7dmFyIG09bGMoZmMoYi5kb2N1bWVudCkuYSk7aWYoLTEyMjQ1OTMzPT1hLndpZHRoKXt2YXIgbj1hLndpZHRoO3ZhciBsPW5ldyBKKG4sbixuLG4pfWVsc2UgbD1uZXcgSihtLnksbS54K2Eud2lkdGgsbS55K2EuaGVpZ2h0LG0ueCk7cmV0dXJuIGx9Y2F0Y2gocSl7cmV0dXJuIG5ldyBKKC0xMjI0NTkzMywtMTIyNDU5MzMsLTEyMjQ1OTMzLC0xMjI0NTkzMyl9fTt2YXIgU2M9e05PTkU6MCxTYjoxfTtmdW5jdGlvbiBUYygpe3RoaXMubz0wO3RoaXMuYz0hMTt0aGlzLmI9LTE7dGhpcy5hPSExO3RoaXMuZj0wfVRjLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hPy4zPD10aGlzLm86LjU8PXRoaXMub307dmFyIEw9e1JiOjAsVGI6MX0sVWM9ezY2ODEyMzcyODowLDY2ODEyMzcyOToxfSxWYz17Tk9ORTowLFpiOjEsVWI6Mn0sV2M9ezQ4MDU5Njc4NDowLDQ4MDU5Njc4NToxLDIxMDYzMzU1OjJ9O2Z1bmN0aW9uIFhjKCl7dGhpcy5hPW51bGw7dGhpcy5mPSExO3RoaXMuYj1udWxsfWZ1bmN0aW9uIE0oYSl7YS5mPSEwO3JldHVybiBhfWZ1bmN0aW9uIFljKGEsYil7YS5iJiZ4KGIsZnVuY3Rpb24oYyl7Yz1hLmJbY107dm9pZCAwIT09YyYmYS5jKGMpfSl9ZnVuY3Rpb24gWmMoYSl7WGMuY2FsbCh0aGlzKTt0aGlzLmg9YX11KFpjLFhjKTtaYy5wcm90b3R5cGUuYz1mdW5jdGlvbihhKXt2YXIgYjtpZighKGI9bnVsbCE9PXRoaXMuYSkpe2E6e2I9dGhpcy5oO2ZvcihjIGluIGIpaWYoYltjXT09YSl7dmFyIGM9ITA7YnJlYWsgYX1jPSExfWI9IWN9Ynx8KHRoaXMuYT1hKX07ZnVuY3Rpb24gJGMoKXtYYy5jYWxsKHRoaXMpfXUoJGMsWGMpOyRjLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGEpe251bGw9PT10aGlzLmEmJlwibnVtYmVyXCI9PT10eXBlb2YgYSYmKHRoaXMuYT1hKX07ZnVuY3Rpb24gYWQoKXt0aGlzLmE9e307dGhpcy5iPXt9fWZ1bmN0aW9uIE4oYSxiLGMpe2EuYVtiXXx8KGEuYVtiXT1uZXcgWmMoYykpO3JldHVybiBhLmFbYl19ZnVuY3Rpb24gYmQoYSxiLGMpeyhhPWEuYVtiXSkmJmEuYyhjKX1mdW5jdGlvbiBPKGEsYil7dmFyIGM9YS5iO2lmKG51bGwhPT1jJiZiIGluIGMpcmV0dXJuIGEuYltiXTtpZihhPWEuYVtiXSlyZXR1cm4gYS5hfWZ1bmN0aW9uIGNkKGEpe3ZhciBiPXt9LGM9UGEoYS5hLGZ1bmN0aW9uKGQpe3JldHVybiBkLmZ9KTtPYShjLGZ1bmN0aW9uKGQsZSl7ZD12b2lkIDAhPT1hLmJbZV0/U3RyaW5nKGEuYltlXSk6ZC5mJiZudWxsIT09ZC5hP1N0cmluZyhkLmEpOlwiXCI7MDxkLmxlbmd0aCYmKGJbZV09ZCl9LGEpO3JldHVybiBifWZ1bmN0aW9uIGRkKGEsYil7Yj1iLnNwbGl0KFwiJlwiKTtmb3IodmFyIGM9Yi5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YltjXS5zcGxpdChcIj1cIiksZT1kWzBdO2Q9MTxkLmxlbmd0aD9wYXJzZUludChkWzFdLDEwKToxO2lzTmFOKGQpfHwoZT1hLmFbZV0pJiZlLmMoZCl9cmV0dXJuIGIuam9pbihcIiZcIil9ZnVuY3Rpb24gZWQoYSxiKXt4KFVhKGEuYSksZnVuY3Rpb24oYyl7cmV0dXJuIFljKGMsYil9KX1mdW5jdGlvbiBmZChhLGIpe2ImJlwic3RyaW5nXCI9PT10eXBlb2YgYiYmKGI9Yi5tYXRjaCgvWyY7P11laWQ9KFteJjtdKykvKSkmJjI9PT1iLmxlbmd0aCYmKGI9ZGVjb2RlVVJJQ29tcG9uZW50KGJbMV0pLnNwbGl0KFwiLFwiKSxiPUJhKGIsZnVuY3Rpb24oYyl7cmV0dXJuIE51bWJlcihjKX0pLGVkKGEsYikpfTt2YXIgZ2Q9IUMmJiFrYigpO2Z1bmN0aW9uIGhkKGEsYil7aWYoLy1bYS16XS8udGVzdChiKSlyZXR1cm4gbnVsbDtpZihnZCYmYS5kYXRhc2V0KXtpZighKCFCKFwiQW5kcm9pZFwiKXx8bGIoKXx8QihcIkZpcmVmb3hcIil8fEIoXCJGeGlPU1wiKXx8QihcIk9wZXJhXCIpfHxCKFwiU2lsa1wiKXx8YiBpbiBhLmRhdGFzZXQpKXJldHVybiBudWxsO2E9YS5kYXRhc2V0W2JdO3JldHVybiB2b2lkIDA9PT1hP251bGw6YX1yZXR1cm4gYS5nZXRBdHRyaWJ1dGUoXCJkYXRhLVwiK29iKGIpKX1mdW5jdGlvbiBpZChhLGIpe3JldHVybi8tW2Etel0vLnRlc3QoYik/ITE6Z2QmJmEuZGF0YXNldD9iIGluIGEuZGF0YXNldDphLmhhc0F0dHJpYnV0ZT9hLmhhc0F0dHJpYnV0ZShcImRhdGEtXCIrb2IoYikpOiEhYS5nZXRBdHRyaWJ1dGUoXCJkYXRhLVwiK29iKGIpKX07ZnVuY3Rpb24gamQoKXt0aGlzLmE9dGhpcy5iPW51bGw7dGhpcy5jPVwibm9cIn07ZnVuY3Rpb24ga2QoYSxiKXt0aGlzLmI9KHZvaWQgMD09PWE/MDphKXx8MDt0aGlzLmE9KHZvaWQgMD09PWI/XCJcIjpiKXx8XCJcIn1rZC5wcm90b3R5cGUuYz1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5ifHwhIXRoaXMuYX07a2QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYisodGhpcy5hP1wiLVwiOlwiXCIpK3RoaXMuYX07ZnVuY3Rpb24gUCgpe31QLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O1AucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gMH07UC5wcm90b3R5cGUuZj1mdW5jdGlvbigpe3JldHVybiAwfTtQLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O2Z1bmN0aW9uIGxkKCl7aWYoIW1kKCkpdGhyb3cgRXJyb3IoKTt9dShsZCxQKTtmdW5jdGlvbiBtZCgpe3JldHVybiEoIUV8fCFFLnBlcmZvcm1hbmNlKX1sZC5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3JldHVybiBtZCgpJiZFLnBlcmZvcm1hbmNlLm5vdz9FLnBlcmZvcm1hbmNlLm5vdygpOlAucHJvdG90eXBlLmEuY2FsbCh0aGlzKX07bGQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gbWQoKSYmRS5wZXJmb3JtYW5jZS5tZW1vcnk/RS5wZXJmb3JtYW5jZS5tZW1vcnkudG90YWxKU0hlYXBTaXplfHwwOlAucHJvdG90eXBlLmMuY2FsbCh0aGlzKX07bGQucHJvdG90eXBlLmY9ZnVuY3Rpb24oKXtyZXR1cm4gbWQoKSYmRS5wZXJmb3JtYW5jZS5tZW1vcnk/RS5wZXJmb3JtYW5jZS5tZW1vcnkudXNlZEpTSGVhcFNpemV8fDA6UC5wcm90b3R5cGUuZi5jYWxsKHRoaXMpfTtsZC5wcm90b3R5cGUuYj1mdW5jdGlvbigpe3JldHVybiBtZCgpJiZFLnBlcmZvcm1hbmNlLm1lbW9yeT9FLnBlcmZvcm1hbmNlLm1lbW9yeS5qc0hlYXBTaXplTGltaXR8fDA6UC5wcm90b3R5cGUuYi5jYWxsKHRoaXMpfTtmdW5jdGlvbiBuZCgpe3JldHVybnt2aXNpYmxlOjEsaGlkZGVuOjIscHJlcmVuZGVyOjMscHJldmlldzo0LHVubG9hZGVkOjV9W0QudmlzaWJpbGl0eVN0YXRlfHxELndlYmtpdFZpc2liaWxpdHlTdGF0ZXx8RC5tb3pWaXNpYmlsaXR5U3RhdGV8fFwiXCJdfHwwfTtmdW5jdGlvbiBvZCgpe31vZC5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZCgpfTt2YXIgcGQ9L15odHRwcz86XFwvXFwvKFxcd3wtKStcXC5jZG5cXC5hbXBwcm9qZWN0XFwuKG5ldHxvcmcpKFxcP3xcXC98JCkvO2Z1bmN0aW9uIHFkKCl7dmFyIGE9dixiPVtdLGM9bnVsbDtkb3t2YXIgZD1hO2lmKHZjKGQpKXt2YXIgZT1kLmxvY2F0aW9uLmhyZWY7Yz1kLmRvY3VtZW50JiZkLmRvY3VtZW50LnJlZmVycmVyfHxudWxsfWVsc2UgZT1jLGM9bnVsbDtiLnB1c2gobmV3IHJkKGV8fFwiXCIsZCkpO3RyeXthPWQucGFyZW50fWNhdGNoKGYpe2E9bnVsbH19d2hpbGUoYSYmZCE9YSk7ZD0wO2ZvcihhPWIubGVuZ3RoLTE7ZDw9YTsrK2QpYltkXS5kZXB0aD1hLWQ7ZD12O2lmKGQubG9jYXRpb24mJmQubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zJiZkLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGg9PWIubGVuZ3RoLTEpZm9yKGE9MTthPGIubGVuZ3RoOysrYSllPWJbYV0sZS51cmx8fChlLnVybD1kLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2luc1thLTFdfHxcIlwiLGUubGI9ITApO3JldHVybiBifWZ1bmN0aW9uIHNkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9ZnVuY3Rpb24gcmQoYSxiLGMpe3RoaXMudXJsPWE7dGhpcy5zPWI7dGhpcy5sYj0hIWM7dGhpcy5kZXB0aD1udWxsfTtmdW5jdGlvbiB0ZCgpe3RoaXMuYz1cIiZcIjt0aGlzLmI9e307dGhpcy5mPTA7dGhpcy5hPVtdfWZ1bmN0aW9uIHVkKGEsYil7dmFyIGM9e307Y1thXT1iO3JldHVybltjXX1mdW5jdGlvbiB2ZChhLGIsYyxkLGUpe3ZhciBmPVtdO3djKGEsZnVuY3Rpb24oZyxoKXsoZz13ZChnLGIsYyxkLGUpKSYmZi5wdXNoKGgrXCI9XCIrZyl9KTtyZXR1cm4gZi5qb2luKGIpfWZ1bmN0aW9uIHdkKGEsYixjLGQsZSl7aWYobnVsbD09YSlyZXR1cm5cIlwiO2I9Ynx8XCImXCI7Yz1jfHxcIiwkXCI7XCJzdHJpbmdcIj09dHlwZW9mIGMmJihjPWMuc3BsaXQoXCJcIikpO2lmKGEgaW5zdGFuY2VvZiBBcnJheSl7aWYoZD1kfHwwLGQ8Yy5sZW5ndGgpe2Zvcih2YXIgZj1bXSxnPTA7ZzxhLmxlbmd0aDtnKyspZi5wdXNoKHdkKGFbZ10sYixjLGQrMSxlKSk7cmV0dXJuIGYuam9pbihjW2RdKX19ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgYSlyZXR1cm4gZT1lfHwwLDI+ZT9lbmNvZGVVUklDb21wb25lbnQodmQoYSxiLGMsZCxlKzEpKTpcIi4uLlwiO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGEpKX1mdW5jdGlvbiB4ZChhLGIsYyl7Yj1iK1wiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiK2M7dmFyIGQ9eWQoYSktYy5sZW5ndGg7aWYoMD5kKXJldHVyblwiXCI7YS5hLnNvcnQoZnVuY3Rpb24obCxxKXtyZXR1cm4gbC1xfSk7Yz1udWxsO2Zvcih2YXIgZT1cIlwiLGY9MDtmPGEuYS5sZW5ndGg7ZisrKWZvcih2YXIgZz1hLmFbZl0saD1hLmJbZ10sbT0wO208aC5sZW5ndGg7bSsrKXtpZighZCl7Yz1udWxsPT1jP2c6YzticmVha312YXIgbj12ZChoW21dLGEuYyxcIiwkXCIpO2lmKG4pe249ZStuO2lmKGQ+PW4ubGVuZ3RoKXtkLT1uLmxlbmd0aDtiKz1uO2U9YS5jO2JyZWFrfWM9bnVsbD09Yz9nOmN9fWE9XCJcIjtudWxsIT1jJiYoYT1lK1widHJuPVwiK2MpO3JldHVybiBiK2F9ZnVuY3Rpb24geWQoYSl7dmFyIGI9MSxjO2ZvcihjIGluIGEuYiliPWMubGVuZ3RoPmI/Yy5sZW5ndGg6YjtyZXR1cm4gMzk5Ny1iLWEuYy5sZW5ndGgtMX07ZnVuY3Rpb24gemQoKXt0aGlzLmI9bmV3IG9kO3RoaXMuYT1tZCgpP25ldyBsZDpuZXcgUH16ZC5wcm90b3R5cGUuc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRS5zZXRJbnRlcnZhbChhLGIpfTt6ZC5wcm90b3R5cGUuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbihhKXtFLmNsZWFySW50ZXJ2YWwoYSl9O3pkLnByb3RvdHlwZS5zZXRUaW1lb3V0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIEUuc2V0VGltZW91dChhLGIpfTt6ZC5wcm90b3R5cGUuY2xlYXJUaW1lb3V0PWZ1bmN0aW9uKGEpe0UuY2xlYXJUaW1lb3V0KGEpfTtmdW5jdGlvbiBBZChhKXtRKCk7dmFyIGI9SygpfHxFO0RjKGIsYSwhMSl9dyh6ZCk7ZnVuY3Rpb24gQmQoKXt9ZnVuY3Rpb24gUSgpe3ZhciBhPUJkLmcoKTtpZighYS5hKXtpZighRSl0aHJvdyBFcnJvcihcIkNvbnRleHQgaGFzIG5vdCBiZWVuIHNldCBhbmQgd2luZG93IGlzIHVuZGVmaW5lZC5cIik7YS5hPXpkLmcoKX1yZXR1cm4gYS5hfXcoQmQpO2Z1bmN0aW9uIENkKGEpe2F8fChhPVtdKTt0aGlzLmY9LTE7dGhpcy5hPWE7YTp7aWYoYT10aGlzLmEubGVuZ3RoKXstLWE7dmFyIGI9dGhpcy5hW2FdO2lmKCEobnVsbD09PWJ8fFwib2JqZWN0XCIhPXR5cGVvZiBifHxBcnJheS5pc0FycmF5KGIpfHxUYiYmYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXt0aGlzLmM9YS0gLTE7dGhpcy5iPWI7YnJlYWsgYX19dGhpcy5jPU51bWJlci5NQVhfVkFMVUV9fXdhKENkLFNiKTtmdW5jdGlvbiBEZChhKXt0aGlzLmY9YTt0aGlzLmE9LTE7dGhpcy5iPXRoaXMuYz0wfWZ1bmN0aW9uIEVkKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe2Zvcih2YXIgZD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoOysrZSlkW2VdPWFyZ3VtZW50c1tlXTtpZigtMTxhLmEpcmV0dXJuIGIuYXBwbHkobnVsbCxyKGQpKTt0cnl7cmV0dXJuIGEuYT1hLmYuYS5hKCksYi5hcHBseShudWxsLHIoZCkpfWZpbmFsbHl7YS5jKz1hLmYuYS5hKCktYS5hLGEuYT0tMSxhLmIrPTF9fX07ZnVuY3Rpb24gRmQoYSxiKXt0aGlzLmI9YTt0aGlzLmM9Yjt0aGlzLmE9bmV3IERkKGEpfTt2YXIgR2Q9e2JjOjEsZGM6MixhYzozfSxIZCxJZD1uZXcgWGEoWWEsXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9vc2QuanNcIik7SGQ9SWQgaW5zdGFuY2VvZiBYYSYmSWQuY29uc3RydWN0b3I9PT1YYSYmSWQuYT09PVphP0lkLkFiOlwidHlwZV9lcnJvcjpDb25zdFwiO3ZhciBKZDtpZih2b2lkIDA9PT1XYSl7dmFyIEtkPW51bGwsTGQ9di50cnVzdGVkVHlwZXM7aWYoTGQmJkxkLmNyZWF0ZVBvbGljeSl7dHJ5e0tkPUxkLmNyZWF0ZVBvbGljeShcImdvb2cjaHRtbFwiLHtjcmVhdGVIVE1MOnhhLGNyZWF0ZVNjcmlwdDp4YSxjcmVhdGVTY3JpcHRVUkw6eGF9KX1jYXRjaChhKXt2LmNvbnNvbGUmJnYuY29uc29sZS5lcnJvcihhLm1lc3NhZ2UpfVdhPUtkfWVsc2UgV2E9S2R9KEpkPVdhKSYmSmQuY3JlYXRlU2NyaXB0VVJMKEhkKTtmdW5jdGlvbiBSKCl7dGhpcy5pPXZvaWQgMDt0aGlzLmM9dGhpcy5sPTA7dGhpcy5qPS0xO3RoaXMuYT1uZXcgYWQ7TShOKHRoaXMuYSxcIm12XCIsVmMpKS5iPXZvaWQgMD09PVdjP251bGw6V2M7Tih0aGlzLmEsXCJvbWlkXCIsTCk7TShOKHRoaXMuYSxcImVwb2hcIixMKSk7TShOKHRoaXMuYSxcImVwcGhcIixMKSk7TShOKHRoaXMuYSxcInVtdFwiLEwpKS5iPXZvaWQgMD09PVVjP251bGw6VWM7TShOKHRoaXMuYSxcInBoZWxcIixMKSk7TShOKHRoaXMuYSxcInBoZWxsXCIsTCkpO00oTih0aGlzLmEsXCJvc2VpZFwiLEdkKSk7dmFyIGE9dGhpcy5hO2EuYS5zbG9pfHwoYS5hLnNsb2k9bmV3ICRjKTtNKGEuYS5zbG9pKTtNKE4odGhpcy5hLFwieGRpXCIsTCkpO00oTih0aGlzLmEsXCJhbXBcIixMKSk7TShOKHRoaXMuYSxcInByZlwiLEwpKTtNKE4odGhpcy5hLFwiZ3R4XCIsTCkpO00oTih0aGlzLmEsXCJtdnBfbHZcIixMKSk7TShOKHRoaXMuYSxcImVvY21cIixMKSk7TShOKHRoaXMuYSxcInJ4bGlzdFwiLEwpKTtNKE4odGhpcy5hLFwidmNtXCIsTCkpO3RoaXMuZj1uZXcgRmQoUSgpLHRoaXMuYSk7dGhpcy5iPW51bGw7dGhpcy5oPSExfXcoUik7ZnVuY3Rpb24gTWQoKXt2YXIgYT1cImh0dHBzOlwiO0UmJkUubG9jYXRpb24mJlwiaHR0cDpcIj09PUUubG9jYXRpb24ucHJvdG9jb2wmJihhPVwiaHR0cDpcIik7dGhpcy5iPWE7dGhpcy5hPS4wMTt0aGlzLmM9TWF0aC5yYW5kb20oKX1mdW5jdGlvbiBOZChhLGIsYyxkLGUpe2lmKChkP2EuYzpNYXRoLnJhbmRvbSgpKTwoZXx8YS5hKSl0cnl7aWYoYyBpbnN0YW5jZW9mIHRkKXZhciBmPWM7ZWxzZSBmPW5ldyB0ZCx3YyhjLGZ1bmN0aW9uKGgsbSl7dmFyIG49ZixsPW4uZisrO2g9dWQobSxoKTtuLmEucHVzaChsKTtuLmJbbF09aH0pO3ZhciBnPXhkKGYsYS5iLFwiL3BhZ2VhZC9nZW5fMjA0P2lkPVwiK2IrXCImXCIpO2cmJkFkKGcpfWNhdGNoKGgpe319O2Z1bmN0aW9uIE9kKGEsYixjKXtjPXZvaWQgMD09PWM/e306Yzt0aGlzLmVycm9yPWE7dGhpcy5jb250ZXh0PWIuY29udGV4dDt0aGlzLm1zZz1iLm1lc3NhZ2V8fFwiXCI7dGhpcy5pZD1iLmlkfHxcImpzZXJyb3JcIjt0aGlzLm1ldGE9Y307dmFyIFBkPW51bGw7ZnVuY3Rpb24gUWQoKXt2YXIgYT12LnBlcmZvcm1hbmNlO3JldHVybiBhJiZhLm5vdyYmYS50aW1pbmc/TWF0aC5mbG9vcihhLm5vdygpK2EudGltaW5nLm5hdmlnYXRpb25TdGFydCk6dWEoKX1mdW5jdGlvbiBSZCgpe3ZhciBhPXZvaWQgMD09PWE/djphO3JldHVybihhPWEucGVyZm9ybWFuY2UpJiZhLm5vdz9hLm5vdygpOm51bGx9O2Z1bmN0aW9uIFNkKGEsYixjKXt0aGlzLmxhYmVsPWE7dGhpcy50eXBlPWI7dGhpcy52YWx1ZT1jO3RoaXMuZHVyYXRpb249MDt0aGlzLnVuaXF1ZUlkPU1hdGgucmFuZG9tKCk7dGhpcy5zbG90SWQ9dm9pZCAwfTt2YXIgUz12LnBlcmZvcm1hbmNlLFRkPSEhKFMmJlMubWFyayYmUy5tZWFzdXJlJiZTLmNsZWFyTWFya3MpLFVkPU5hKGZ1bmN0aW9uKCl7dmFyIGE7aWYoYT1UZCl7dmFyIGI7aWYobnVsbD09PVBkKXtQZD1cIlwiO3RyeXthPVwiXCI7dHJ5e2E9di50b3AubG9jYXRpb24uaGFzaH1jYXRjaChjKXthPXYubG9jYXRpb24uaGFzaH1hJiYoUGQ9KGI9YS5tYXRjaCgvXFxiZGVpZD0oW1xcZCxdKykvKSk/YlsxXTpcIlwiKX1jYXRjaChjKXt9fWI9UGQ7YT0hIWIuaW5kZXhPZiYmMDw9Yi5pbmRleE9mKFwiMTMzN1wiKX1yZXR1cm4gYX0pO2Z1bmN0aW9uIFZkKCl7dmFyIGE9SygpO3RoaXMuYj1bXTt0aGlzLmM9YXx8djt2YXIgYj1udWxsO2EmJihhLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWU9YS5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXSx0aGlzLmI9YS5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlLGI9YS5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcpO3RoaXMuYT1VZCgpfHwobnVsbCE9Yj9iOjE+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gV2QoYSl7YSYmUyYmVWQoKSYmKFMuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX3N0YXJ0XCIpLFMuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX2VuZFwiKSl9VmQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuYSlyZXR1cm4gbnVsbDt2YXIgYz1SZCgpfHxRZCgpO2E9bmV3IFNkKGEsYixjKTtiPVwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfc3RhcnRcIjtTJiZVZCgpJiZTLm1hcmsoYik7cmV0dXJuIGF9O2Z1bmN0aW9uIFhkKCl7dmFyIGE9WWQ7dGhpcy5pPVpkO3RoaXMuaD1cImpzZXJyb3JcIjt0aGlzLmY9ITA7dGhpcy5iPW51bGw7dGhpcy5qPXRoaXMuYzt0aGlzLmE9dm9pZCAwPT09YT9udWxsOmF9ZnVuY3Rpb24gJGQoYSxiLGMpe3JldHVybiBFZChSLmcoKS5mLmEsZnVuY3Rpb24oKXt0cnl7aWYoYS5hJiZhLmEuYSl7dmFyIGQ9YS5hLnN0YXJ0KGIudG9TdHJpbmcoKSwzKTt2YXIgZT1jKCk7dmFyIGY9YS5hLGc9ZDtpZihmLmEmJlwibnVtYmVyXCI9PT10eXBlb2YgZy52YWx1ZSl7dmFyIGg9UmQoKXx8UWQoKTtnLmR1cmF0aW9uPWgtZy52YWx1ZTt2YXIgbT1cImdvb2dfXCIrZy5sYWJlbCtcIl9cIitnLnVuaXF1ZUlkK1wiX2VuZFwiO1MmJlVkKCkmJlMubWFyayhtKTshZi5hfHwyMDQ4PGYuYi5sZW5ndGh8fGYuYi5wdXNoKGcpfX1lbHNlIGU9YygpfWNhdGNoKG4pe2Y9YS5mO3RyeXtXZChkKSxmPWEuaihiLG5ldyBhZShiZShuKSksdm9pZCAwLHZvaWQgMCl9Y2F0Y2gobCl7YS5jKDIxNyxsKX1pZighZil0aHJvdyBuO31yZXR1cm4gZX0pKCl9ZnVuY3Rpb24gY2UoYSxiKXt2YXIgYz1kZTtyZXR1cm4gRWQoUi5nKCkuZi5hLGZ1bmN0aW9uKGQpe2Zvcih2YXIgZT1bXSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoOysrZillW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gJGQoYyxhLGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodm9pZCAwLGUpfSl9KX1YZC5wcm90b3R5cGUuYz1mdW5jdGlvbihhLGIsYyxkLGUpe2U9ZXx8dGhpcy5oO3RyeXt2YXIgZj1uZXcgdGQ7Zi5hLnB1c2goMSk7Zi5iWzFdPXVkKFwiY29udGV4dFwiLGEpO2IuZXJyb3ImJmIubWV0YSYmYi5pZHx8KGI9bmV3IGFlKGJlKGIpKSk7aWYoYi5tc2cpe3ZhciBnPWIubXNnLnN1YnN0cmluZygwLDUxMik7Zi5hLnB1c2goMik7Zi5iWzJdPXVkKFwibXNnXCIsZyl9dmFyIGg9Yi5tZXRhfHx7fTtpZih0aGlzLmIpdHJ5e3RoaXMuYihoKX1jYXRjaCh0Yyl7fWlmKGQpdHJ5e2QoaCl9Y2F0Y2godGMpe31iPVtoXTtmLmEucHVzaCgzKTtmLmJbM109Yjt2YXIgbT1xZCgpLG49bmV3IHJkKHYubG9jYXRpb24uaHJlZix2LCExKTtiPW51bGw7dmFyIGw9bS5sZW5ndGgtMTtmb3IoZD1sOzA8PWQ7LS1kKXt2YXIgcT1tW2RdOyFiJiZwZC50ZXN0KHEudXJsKSYmKGI9cSk7aWYocS51cmwmJiFxLmxiKXtuPXE7YnJlYWt9fXE9bnVsbDt2YXIgcD1tLmxlbmd0aCYmbVtsXS51cmw7MCE9bi5kZXB0aCYmcCYmKHE9bVtsXSk7dmFyIHQ9bmV3IHNkKG4scSk7aWYodC5iKXt2YXIgbmE9dC5iLnVybHx8XCJcIjtmLmEucHVzaCg0KTtmLmJbNF09dWQoXCJ0b3BcIixuYSl9dmFyIFNhPXt1cmw6dC5hLnVybHx8XCJcIn07aWYodC5hLnVybCl7dmFyIFRhPXQuYS51cmwubWF0Y2godWMpLGhlPVRhWzFdLGllPVRhWzNdLGplPVRhWzRdO209XCJcIjtoZSYmKG0rPWhlK1wiOlwiKTtpZSYmKG0rPVwiLy9cIixtKz1pZSxqZSYmKG0rPVwiOlwiK2plKSk7dmFyIGtlPW19ZWxzZSBrZT1cIlwiO1NhPVtTYSx7dXJsOmtlfV07Zi5hLnB1c2goNSk7Zi5iWzVdPVNhO05kKHRoaXMuaSxlLGYsITEsYyl9Y2F0Y2godGMpe3RyeXtOZCh0aGlzLmksZSx7Y29udGV4dDpcImVjbXNlcnJcIixyY3R4OmEsbXNnOmJlKHRjKSx1cmw6dCYmdC5hLnVybH0sITEsYyl9Y2F0Y2goZ2kpe319cmV0dXJuIHRoaXMuZn07ZnVuY3Rpb24gYmUoYSl7dmFyIGI9YS50b1N0cmluZygpO2EubmFtZSYmLTE9PWIuaW5kZXhPZihhLm5hbWUpJiYoYis9XCI6IFwiK2EubmFtZSk7YS5tZXNzYWdlJiYtMT09Yi5pbmRleE9mKGEubWVzc2FnZSkmJihiKz1cIjogXCIrYS5tZXNzYWdlKTtpZihhLnN0YWNrKXthPWEuc3RhY2s7dHJ5ey0xPT1hLmluZGV4T2YoYikmJihhPWIrXCJcXG5cIithKTtmb3IodmFyIGM7YSE9YzspYz1hLGE9YS5yZXBsYWNlKC8oKGh0dHBzPzpcXC8uLipcXC8pW15cXC86XSo6XFxkKyg/Oi58XFxuKSopXFwyLyxcIiQxXCIpO2I9YS5yZXBsYWNlKC9cXG4gKi9nLFwiXFxuXCIpfWNhdGNoKGQpe319cmV0dXJuIGJ9ZnVuY3Rpb24gYWUoYSl7T2QuY2FsbCh0aGlzLEVycm9yKGEpLHttZXNzYWdlOmF9KX11KGFlLE9kKTt2YXIgWmQsZGUsWWQ9bmV3IFZkO2Z1bmN0aW9uIGVlKCl7dmFyIGE9SygpO2EmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmIWEuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nJiYoYT1ZZCxhLmE9ITEsYS5iIT1hLmMuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZSYmKFVkKCkmJngoYS5iLFdkKSxhLmIubGVuZ3RoPTApKX0oZnVuY3Rpb24oKXtaZD1uZXcgTWQ7ZGU9bmV3IFhkO3ZhciBhPUsoKTthJiZhLmRvY3VtZW50JiYoXCJjb21wbGV0ZVwiPT1hLmRvY3VtZW50LnJlYWR5U3RhdGU/ZWUoKTpZZC5hJiZiYyhhLFwibG9hZFwiLGZ1bmN0aW9uKCl7ZWUoKX0pKX0pKCk7ZnVuY3Rpb24gZmUoYSl7ZGUuYj1mdW5jdGlvbihiKXt4KGEsZnVuY3Rpb24oYyl7YyhiKX0pfX1mdW5jdGlvbiBnZShhLGIpe3JldHVybiAkZChkZSxhLGIpfWZ1bmN0aW9uIGxlKGEsYil7cmV0dXJuIGNlKGEsYil9ZnVuY3Rpb24gbWUoYSxiKXtOZChaZCxhLGIsXCJqc2Vycm9yXCIhPWEsdm9pZCAwKX1mdW5jdGlvbiBuZShhLGIsYyxkKXtkZS5jKGEsYixjLGQpfTt2YXIgb2U9RGF0ZS5ub3coKSxwZT0tMSxxZT0tMSxyZT0hMTtmdW5jdGlvbiBUKCl7cmV0dXJuIERhdGUubm93KCktb2V9ZnVuY3Rpb24gc2UoKXt2YXIgYT1SLmcoKS5pLGI9MDw9cWU/VCgpLXFlOi0xLGM9cmU/VCgpLXBlOi0xO2lmKDk0NzE5MDU0Mj09YSlyZXR1cm4gMTAwO2lmKDc5NDYzMDY5PT1hKXJldHVybiAyMDA7YT1bMkUzLDRFM107dmFyIGQ9WzI1MCw1MDAsMUUzXTtuZSg2MzcsRXJyb3IoKSwuMDAxKTt2YXIgZT1iOy0xIT1jJiZjPGImJihlPWMpO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpaWYoZTxhW2JdKXt2YXIgZj1kW2JdO2JyZWFrfXZvaWQgMD09PWYmJihmPWRbYS5sZW5ndGhdKTtyZXR1cm4gZn07ZnVuY3Rpb24gdGUoYSl7Zm9yKHZhciBiPTAsYz1hLGQ9MDthJiZhIT1hLnBhcmVudDspYT1hLnBhcmVudCxkKyssdmMoYSkmJihjPWEsYj1kKTtyZXR1cm57czpjLGxldmVsOmJ9fTt2YXIgUmE9e1FiOlwiYWRkRXZlbnRMaXN0ZW5lclwiLFZiOlwiZ2V0TWF4U2l6ZVwiLFdiOlwiZ2V0U2NyZWVuU2l6ZVwiLFhiOlwiZ2V0U3RhdGVcIixZYjpcImdldFZlcnNpb25cIixjYzpcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiwkYjpcImlzVmlld2FibGVcIn07ZnVuY3Rpb24gdWUoYSl7dmFyIGI9YSE9PWEudG9wLGM9YS50b3A9PT10ZShhKS5zLGQ9LTEsZT0wO2lmKGImJmMmJmEudG9wLm1yYWlkKXtkPTM7dmFyIGY9YS50b3AubXJhaWR9ZWxzZSBkPShmPWEubXJhaWQpP2I/Yz8yOjE6MDotMTtmJiYoZi5JU19HTUFfU0RLfHwoZT0yKSxRYShmdW5jdGlvbihnKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZltnXX0pfHwoZT0xKSk7cmV0dXJue0Y6ZixyYTplLE9iOmR9fTtmdW5jdGlvbiB2ZShhKXtyZXR1cm4oYT1hLmRvY3VtZW50KSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuZWxlbWVudEZyb21Qb2ludH07aWYoRCYmRC5VUkwpe3ZhciB3ZSx5Yz1ELlVSTDt3ZT0hIXljJiYwPHhjKCkubGVuZ3RoO2RlLmY9IXdlfWZ1bmN0aW9uIHhlKGEsYixjLGQpe3ZhciBlPXZvaWQgMD09PWU/ITE6ZTtjPWNlKGQsYyk7YmMoYSxiLGMse2NhcHR1cmU6ZX0pO3JldHVybiBjfTtmdW5jdGlvbiB5ZShhKXt2YXIgYj1bXTtPYShhLGZ1bmN0aW9uKGMsZCl7ZD1lbmNvZGVVUklDb21wb25lbnQoZCk7XCJzdHJpbmdcIj09PXR5cGVvZiBjJiYoYz1lbmNvZGVVUklDb21wb25lbnQoYykpO2IucHVzaChkK1wiPVwiK2MpfSk7Yi5wdXNoKFwiMjQ9XCIrRGF0ZS5ub3coKSk7cmV0dXJuIGIuam9pbihcIlxcblwiKX07dmFyIHplPTA7ZnVuY3Rpb24gQWUoYSl7dmFyIGI9TWF0aC5wb3coMTAsMik7cmV0dXJuIE1hdGguZmxvb3IoYSpiKS9ifWZ1bmN0aW9uIEJlKGEsYil7dHJ5e3plKyssYi5wb3N0TWVzc2FnZShhLFwiKlwiKX1jYXRjaChjKXt9fWZ1bmN0aW9uIENlKGEsYil7YiYmKGEoYiksYi5mcmFtZXMmJngoYi5mcmFtZXMsZnVuY3Rpb24oYyl7Q2UoYSxjKX0pKX1mdW5jdGlvbiBEZShhKXtyZXR1cm4gbmV3IEooYS50b3AsYS5yaWdodCxhLmJvdHRvbSxhLmxlZnQpfWZ1bmN0aW9uIEVlKCl7dmFyIGE9USgpLmI7cmV0dXJuIDA9PT1uZCgpPy0xOmEuaXNWaXNpYmxlKCk/MDoxfWZ1bmN0aW9uIEZlKGEpe3JldHVyblthLnRvcCxhLmxlZnQsYS5ib3R0b20sYS5yaWdodF0uam9pbihcIi1cIil9ZnVuY3Rpb24gR2UoYSxiLGMpe2lmKGImJmEpaWYoYyYmMDxjLmxlbmd0aClmb3IoYz1BYShjLGZ1bmN0aW9uKGUpe3ZhciBmPWUucGFyZW50JiZlLnBhcmVudCE9PWU7cmV0dXJuIGU9PT1FLnRvcHx8Zn0pLGE9ZmEoYyksYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpQmUoYixjLnZhbHVlKTtlbHNle2M9W107dmFyIGQ9cWMoYSk7ZCYmYy5wdXNoKGQpO2lmKDA9PT1jLmxlbmd0aCl0cnl7Yz1CYShpYyhkb2N1bWVudCxcIklGUkFNRVwiLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSx2b2lkIDAsYSksZnVuY3Rpb24oZSl7cmV0dXJuIHFjKGUpfSl9Y2F0Y2goZSl7fWE9ZmEoYyk7Zm9yKGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXtjPWMudmFsdWU7dHJ5e2ImJkNlKHRhKEJlLGIpLGMpfWNhdGNoKGUpe319fX1mdW5jdGlvbiBIZShhLGIsYyl7dHJ5e3ZhciBkPXllKGIpO0dlKGEsZCxjKX1jYXRjaChlKXt9fTtmdW5jdGlvbiBJZSgpe3ZhciBhPUE7cmV0dXJuIGE/RGEoXCJBbmRyb2lkIFRWO0FwcGxlVFY7QXBwbGUgVFY7R29vZ2xlVFY7SGJiVFY7TmV0Q2FzdC5UVjtPcGVyYSBUVjtQT1ZfVFY7U01BUlQtVFY7U21hcnRUVjtUViBTdG9yZTtBbWF6b25XZWJBcHBQbGF0Zm9ybTtNaUJPWFwiLnNwbGl0KFwiO1wiKSxmdW5jdGlvbihiKXtyZXR1cm4geihhLGIpfSl8fHooYSxcIk9NSS9cIikmJiF6KGEsXCJYaWFvTWkvXCIpPyEwOnooYSxcIlByZXN0b1wiKSYmeihhLFwiTGludXhcIikmJiF6KGEsXCJYMTFcIikmJiF6KGEsXCJBbmRyb2lkXCIpJiYheihhLFwiTW9iaVwiKTohMX1mdW5jdGlvbiBKZSgpe3ZhciBhPUE7cmV0dXJuIHooYSxcIkFwcGxlVFZcIil8fHooYSxcIkFwcGxlIFRWXCIpfHx6KGEsXCJDRk5ldHdvcmtcIil8fHooYSxcInR2T1NcIil9ZnVuY3Rpb24gS2UoKXt2YXIgYT1BO3JldHVybiB6KGEsXCJzZGtfZ29vZ2xlX2F0dl94ODZcIil8fHooYSxcIkFuZHJvaWQgVFZcIil9O2Z1bmN0aW9uIFUoKXt0aGlzLmM9IXZjKEUudG9wKTt2YXIgYTtpZighKGE9IXRoaXMuYykpe2E6e2E9RTthPXZvaWQgMD09PWE/djphO3ZhciBiPWEuY29udGV4dHx8YS5BTVBfQ09OVEVYVF9EQVRBO2lmKCFiKXRyeXtiPWEucGFyZW50LmNvbnRleHR8fGEucGFyZW50LkFNUF9DT05URVhUX0RBVEF9Y2F0Y2goZCl7fXRyeXtpZihiJiZiLnBhZ2VWaWV3SWQmJmIuY2Fub25pY2FsVXJsKXt2YXIgYz1iO2JyZWFrIGF9fWNhdGNoKGQpe31jPW51bGx9YT0hKCFjfHwhYy5vYnNlcnZlSW50ZXJzZWN0aW9uKX10aGlzLkE9YTt0aGlzLmk9c2MoKXx8IXNjKCkmJihCKFwiaVBvZFwiKXx8QihcImlQaG9uZVwiKXx8QihcIkFuZHJvaWRcIil8fEIoXCJJRU1vYmlsZVwiKSk7Yz1xZCgpO2M9MDxjLmxlbmd0aCYmbnVsbCE9Y1tjLmxlbmd0aC0xXSYmbnVsbCE9Y1tjLmxlbmd0aC0xXS51cmw/KChjPWNbYy5sZW5ndGgtMV0udXJsLm1hdGNoKHVjKVszXXx8bnVsbCk/ZGVjb2RlVVJJKGMpOmMpfHxcIlwiOlwiXCI7dGhpcy5kb21haW49Yzt0aGlzLmE9bmV3IEooMCwwLDAsMCk7dGhpcy5qPW5ldyBHKDAsMCk7dGhpcy5oPW5ldyBHKDAsMCk7dGhpcy5iPW5ldyBKKDAsMCwwLDApO3RoaXMubD1uZXcgRigwLDApO3RoaXMudT10aGlzLm09ITE7dGhpcy5mPSEoIUV8fCF1ZShFKS5GKTtMZSh0aGlzKX1mdW5jdGlvbiBNZShhLGIpe2ImJmIuc2NyZWVuJiYoYS5qPW5ldyBHKGIuc2NyZWVuLndpZHRoLGIuc2NyZWVuLmhlaWdodCkpfWZ1bmN0aW9uIE5lKGEsYil7dmFyIGM9YS5hP25ldyBHKHpjKGEuYSksQWMoYS5hKSk6bmV3IEcoMCwwKTtiPXZvaWQgMD09PWI/RTpiO251bGwhPT1iJiZiIT1iLnRvcCYmKGI9Yi50b3ApO3ZhciBkPTAsZT0wO3RyeXt2YXIgZj1iLmRvY3VtZW50LGc9Zi5ib2R5LGg9Zi5kb2N1bWVudEVsZW1lbnQ7aWYoXCJDU1MxQ29tcGF0XCI9PWYuY29tcGF0TW9kZSYmaC5zY3JvbGxIZWlnaHQpZD1oLnNjcm9sbEhlaWdodCE9Yy5oZWlnaHQ/aC5zY3JvbGxIZWlnaHQ6aC5vZmZzZXRIZWlnaHQsZT1oLnNjcm9sbFdpZHRoIT1jLndpZHRoP2guc2Nyb2xsV2lkdGg6aC5vZmZzZXRXaWR0aDtlbHNle3ZhciBtPWguc2Nyb2xsSGVpZ2h0LG49aC5zY3JvbGxXaWR0aCxsPWgub2Zmc2V0SGVpZ2h0LHE9aC5vZmZzZXRXaWR0aDtoLmNsaWVudEhlaWdodCE9bCYmKG09Zy5zY3JvbGxIZWlnaHQsbj1nLnNjcm9sbFdpZHRoLGw9Zy5vZmZzZXRIZWlnaHQscT1nLm9mZnNldFdpZHRoKTttPmMuaGVpZ2h0P20+bD8oZD1tLGU9bik6KGQ9bCxlPXEpOm08bD8oZD1tLGU9bik6KGQ9bCxlPXEpfXZhciBwPW5ldyBHKGUsZCl9Y2F0Y2godCl7cD1uZXcgRygtMTIyNDU5MzMsLTEyMjQ1OTMzKX1hLmg9cH1mdW5jdGlvbiBMZShhKXtFJiZFLmRvY3VtZW50JiYoYS5iPVJjKCExLEUsYS5pKSxhLmE9UmMoITAsRSxhLmkpLE5lKGEsRSksTWUoYSxFKSl9ZnVuY3Rpb24gT2UoKXtpZihVLmcoKS51KXJldHVybiEwO3ZhciBhPVEoKS5iLmlzVmlzaWJsZSgpLGI9MD09PW5kKCk7cmV0dXJuIGF8fGJ9dyhVKTt2YXIgUGU9bmV3IEooMCwwLDAsMCk7ZnVuY3Rpb24gUWUoYSxiKXtiPVJlKGIpO3JldHVybiAwPT09Yj8wOlJlKGEpL2J9ZnVuY3Rpb24gUmUoYSl7cmV0dXJuIE1hdGgubWF4KGEuYm90dG9tLWEudG9wLDApKk1hdGgubWF4KGEucmlnaHQtYS5sZWZ0LDApfWZ1bmN0aW9uIFNlKGEsYil7aWYoIWF8fCFiKXJldHVybiExO2Zvcih2YXIgYz0wO251bGwhPT1hJiYxMDA+YysrOyl7aWYoYT09PWIpcmV0dXJuITA7dHJ5e2E6e3ZhciBkPXZvaWQgMDtpZihlYyYmIShDJiZLYihcIjlcIikmJiFLYihcIjEwXCIpJiZ2LlNWR0VsZW1lbnQmJmEgaW5zdGFuY2VvZiB2LlNWR0VsZW1lbnQpJiYoZD1hLnBhcmVudEVsZW1lbnQpKXt2YXIgZT1kO2JyZWFrIGF9ZD1hLnBhcmVudE5vZGU7ZT1zYShkKSYmMT09ZC5ub2RlVHlwZT9kOm51bGx9aWYoYT1lfHxhKXt2YXIgZj1IKGEpLGc9ZiYmbWMoZiksaD1nJiZnLmZyYW1lRWxlbWVudDtoJiYoYT1oKX19Y2F0Y2gobSl7YnJlYWt9fXJldHVybiExfWZ1bmN0aW9uIFRlKGEsYixjKXtpZighYXx8IWIpcmV0dXJuITE7Yj1DYyhCYyhhKSwtYi5sZWZ0LC1iLnRvcCk7YT0oYi5sZWZ0K2IucmlnaHQpLzI7Yj0oYi50b3ArYi5ib3R0b20pLzI7dmFyIGQ9SygpO3ZjKGQudG9wKSYmZC50b3AmJmQudG9wLmRvY3VtZW50JiYoZD1kLnRvcCk7aWYoIXZlKGQpKXJldHVybiExO2E9ZC5kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGEsYik7aWYoIWEpcmV0dXJuITE7Yj0oYj0oYj1IKGMpKSYmYi5kZWZhdWx0VmlldyYmYi5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQpJiZTZShiLGEpO2Q9YT09PWM7YT0hZCYmYSYmcmMoYSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PWN9KTtyZXR1cm4hKGJ8fGR8fGEpfWZ1bmN0aW9uIFVlKGEsYixjLGQpe3JldHVybiBVLmcoKS5jPyExOjA+PXpjKGEpfHwwPj1BYyhhKT8hMDpjJiZkP2dlKDIwOCxmdW5jdGlvbigpe3JldHVybiBUZShhLGIsYyl9KTohMX07ZnVuY3Rpb24gVmUoYSxiLGMpe3ZhciBkPW5ldyBKKDAsMCwwLDApO3RoaXMudGltZT1hO3RoaXMudm9sdW1lPW51bGw7dGhpcy5jPWI7dGhpcy5hPWQ7dGhpcy5iPWN9O2Z1bmN0aW9uIFdlKGEsYixjLGQsZSxmLGcpe3RoaXMuaj1hO3RoaXMuaD1iO3RoaXMuYz1jO3RoaXMuYT1kO3RoaXMuZj1lO3RoaXMuYj1mO3RoaXMuaT1nfTtmdW5jdGlvbiBYZShhKXt0aGlzLmM9YTt0aGlzLmI9MDt0aGlzLmE9bnVsbH1YZS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7USgpLmNsZWFyVGltZW91dCh0aGlzLmEpO3RoaXMuYT1udWxsfTtmdW5jdGlvbiBZZShhKXt2YXIgYj1RKCk7YS5hPWIuc2V0VGltZW91dChFZChSLmcoKS5mLmEsbGUoMTQzLGZ1bmN0aW9uKCl7YS5iKys7YS5jLnpiKCl9KSksc2UoKSl9O2Z1bmN0aW9uIFYoYSxiLGMpe3RoaXMucz1hO3RoaXMuUD12b2lkIDA9PT1jP1wibmFcIjpjO3RoaXMuZj1bXTt0aGlzLm09ITE7dGhpcy5jPW5ldyBWZSgtMSwhMCx0aGlzKTt0aGlzLmE9dGhpczt0aGlzLmk9Yjt0aGlzLnU9dGhpcy5sPSExO3RoaXMuRz1cInVrXCI7dGhpcy5JPSExO3RoaXMuaj0hMH1rPVYucHJvdG90eXBlO2suWD1mdW5jdGlvbigpe3JldHVybiExfTtrLkphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubT0hMH07ay5XPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5HfTtrLmJhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS51fTtmdW5jdGlvbiBaZShhLGIsYyl7aWYoIWEudXx8KHZvaWQgMD09PWM/MDpjKSlhLnU9ITAsYS5HPWIsYS5pPTAsYS5hIT1hfHwkZShhKX1rLkM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLlB9O2suTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZmIoKX07ay5mYj1mdW5jdGlvbigpe3JldHVybnt9fTtrLk09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLml9O2Z1bmN0aW9uIGFmKGEsYil7SGEoYS5mLGIpfHwoYS5mLnB1c2goYiksYi5hYShhLmEpLGIuUyhhLmMpLGIuVCgpJiYoYS5sPSEwKSl9ay5OYT1mdW5jdGlvbigpe3ZhciBhPVUuZygpO2EuYT1SYyghMCx0aGlzLnMsYS5pKX07ay5PYT1mdW5jdGlvbigpe01lKFUuZygpLHRoaXMucyl9O2sucmI9ZnVuY3Rpb24oKXtOZShVLmcoKSx0aGlzLnMpfTtrLnNiPWZ1bmN0aW9uKCl7dmFyIGE9VS5nKCk7YS5iPVJjKCExLHRoaXMucyxhLmkpfTtrLkhhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy5hfTtmdW5jdGlvbiBiZihhKXthPWEuYTthLk9hKCk7YS5OYSgpO2Euc2IoKTthLnJiKCk7YS5jLmE9YS5IYSgpfWsuemI9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIGNmKGEpe2EubD1hLmYubGVuZ3RoP0RhKGEuZixmdW5jdGlvbihiKXtyZXR1cm4gYi5UKCl9KTohMX1mdW5jdGlvbiBkZihhKXt2YXIgYj1KYShhLmYpO3goYixmdW5jdGlvbihjKXtjLlMoYS5jKX0pfWZ1bmN0aW9uICRlKGEpe3ZhciBiPUphKGEuZik7eChiLGZ1bmN0aW9uKGMpe2MuYWEoYS5hKX0pO2EuYSE9YXx8ZGYoYSl9ay5hYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmE7dGhpcy5hPWEuTSgpPj10aGlzLmk/YTp0aGlzO2IhPT10aGlzLmE/KHRoaXMuaj10aGlzLmEuaiwkZSh0aGlzKSk6dGhpcy5qIT09dGhpcy5hLmomJih0aGlzLmo9dGhpcy5hLmosJGUodGhpcykpfTtrLlM9ZnVuY3Rpb24oYSl7aWYoYS5iPT09dGhpcy5hKXt2YXIgYj10aGlzLmMsYz10aGlzLmw7aWYoYz1hJiYodm9pZCAwPT09Y3x8IWN8fGIudm9sdW1lPT1hLnZvbHVtZSkmJmIuYz09YS5jKWI9Yi5hLGM9YS5hLGM9Yj09Yz8hMDpiJiZjP2IudG9wPT1jLnRvcCYmYi5yaWdodD09Yy5yaWdodCYmYi5ib3R0b209PWMuYm90dG9tJiZiLmxlZnQ9PWMubGVmdDohMTt0aGlzLmM9YTshYyYmZGYodGhpcyl9fTtrLlQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTtrLkI9ZnVuY3Rpb24oKXt0aGlzLkk9ITB9O2suY2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JfTtmdW5jdGlvbiBlZihhLGIsYyxkKXt0aGlzLmM9YTt0aGlzLmE9bmV3IEooMCwwLDAsMCk7dGhpcy5sPW5ldyBKKDAsMCwwLDApO3RoaXMuYj1iO3RoaXMuRD1jO3RoaXMuRz1kO3RoaXMuQT0hMTt0aGlzLnRpbWVzdGFtcD0tMTt0aGlzLmg9bmV3IFdlKGIuYyx0aGlzLmEsbmV3IEooMCwwLDAsMCksMCwwLFQoKSwwKX1rPWVmLnByb3RvdHlwZTtrLnZhPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2suTj1mdW5jdGlvbigpe307ay5GYT1mdW5jdGlvbigpe2lmKHRoaXMuYyl7dmFyIGE9dGhpcy5jLGI9dGhpcy5iLmEuczt0cnl7dHJ5e3ZhciBjPURlKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfWNhdGNoKG4pe2M9bmV3IEooMCwwLDAsMCl9dmFyIGQ9Yy5yaWdodC1jLmxlZnQsZT1jLmJvdHRvbS1jLnRvcCxmPUxjKGEsYiksZz1mLngsaD1mLnk7dmFyIG09bmV3IEooTWF0aC5yb3VuZChoKSxNYXRoLnJvdW5kKGcrZCksTWF0aC5yb3VuZChoK2UpLE1hdGgucm91bmQoZykpfWNhdGNoKG4pe209QmMoUGUpfXRoaXMuYT1mZih0aGlzLG0pfX07ay5aYT1mdW5jdGlvbigpe3RoaXMubD10aGlzLmIuYy5hfTtrLlI9ZnVuY3Rpb24oKXt0aGlzLkZhKCk7dGhpcy5oPW5ldyBXZSh0aGlzLmIuYyx0aGlzLmEsdGhpcy5oLmMsdGhpcy5oLmEsdGhpcy5oLmYsVCgpLHRoaXMuaC5pKX07ZnVuY3Rpb24gZmYoYSxiKXt2YXIgYz16YyhiKSxkPUFjKGIpO2lmKDE9PSFPKFIuZygpLmEsXCJ2Y21cIil8fCFhLmMpcmV0dXJuIGI7YT1hLmM7aWYoIShhLnZpZGVvSGVpZ2h0JiZhLnZpZGVvV2lkdGgmJmMmJmQpKXJldHVybiBiO3ZhciBlPUJjKGIpO2EudmlkZW9XaWR0aC9hLnZpZGVvSGVpZ2h0PmMvZD8oZS50b3A9Yi50b3ArTWF0aC5mbG9vcigoZC1hLnZpZGVvSGVpZ2h0KS8yKSxlLmJvdHRvbT1lLnRvcCthLnZpZGVvSGVpZ2h0KTooZS5sZWZ0PWIubGVmdCtNYXRoLmZsb29yKChjLWEudmlkZW9XaWR0aCkvMiksZS5yaWdodD1lLmxlZnQrYS52aWRlb1dpZHRoKTtyZXR1cm4gZX1rLkI9ZnVuY3Rpb24oKXtpZighdGhpcy5jYSgpKXt2YXIgYT10aGlzLmIsYj1hLmYsYz16YShiLHRoaXMpOzA8PWMmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChiLGMsMSk7YS5sJiZ0aGlzLlQoKSYmY2YoYSk7dGhpcy5OKCk7dGhpcy5BPSEwfX07ay5jYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkF9O2suTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuTCgpfTtrLk09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLk0oKX07ay5XPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5XKCl9O2suYmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLmJhKCl9O2suYWE9ZnVuY3Rpb24oKXt9O2suUz1mdW5jdGlvbigpe3RoaXMuUigpfTtrLlQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HfTtmdW5jdGlvbiBnZihhKXt0aGlzLmg9ITE7dGhpcy5hPWE7dGhpcy5mPXBhfWs9Z2YucHJvdG90eXBlO2suTT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuTSgpfTtrLlc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLlcoKX07ay5iYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuYmEoKX07ay5jcmVhdGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW51bGw7dGhpcy5hJiYoZD10aGlzLkdhKGEsYixjKSxhZih0aGlzLmEsZCkpO3JldHVybiBkfTtrLnBiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWEoKX07ay51YT1mdW5jdGlvbigpe3JldHVybiExfTtrLmpiPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEuSmEoKT8oYWYodGhpcy5hLHRoaXMpLHRoaXMuZj1hLCEwKTohMX07ay5hYT1mdW5jdGlvbihhKXswPT1hLk0oKSYmdGhpcy5mKGEuVygpLHRoaXMpfTtrLlM9ZnVuY3Rpb24oKXt9O2suVD1mdW5jdGlvbigpe3JldHVybiExfTtrLkI9ZnVuY3Rpb24oKXt0aGlzLmg9ITB9O2suY2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ofTtrLkw9ZnVuY3Rpb24oKXtyZXR1cm57fX07ZnVuY3Rpb24gaGYoYSxiLGMpe3RoaXMuYz12b2lkIDA9PT1jPzA6Yzt0aGlzLmI9YTt0aGlzLmE9bnVsbD09Yj9cIlwiOmJ9ZnVuY3Rpb24gamYoYSl7c3dpdGNoKE1hdGgudHJ1bmMoYS5jKSl7Y2FzZSAtMTY6cmV0dXJuLTE2O2Nhc2UgLTg6cmV0dXJuLTg7Y2FzZSAwOnJldHVybiAwO2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtkZWZhdWx0OnJldHVybiAxNn19ZnVuY3Rpb24ga2YoYSxiKXtyZXR1cm4gYS5jPGIuYz8hMDphLmM+Yi5jPyExOmEuYjxiLmI/ITA6YS5iPmIuYj8hMTp0eXBlb2YgYS5hPHR5cGVvZiBiLmE/ITA6dHlwZW9mIGEuYT50eXBlb2YgYi5hPyExOmEuYTxiLmF9O2Z1bmN0aW9uIGxmKCl7dGhpcy5jPTA7dGhpcy5hPVtdO3RoaXMuYj0hMX1sZi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjKXsrK3RoaXMuYzthPW5ldyBoZihhLGIsYyk7dGhpcy5hLnB1c2gobmV3IGhmKGEuYixhLmEsYS5jK3RoaXMuYy80MDk2KSk7dGhpcy5iPSEwO3JldHVybiB0aGlzfTtmdW5jdGlvbiBtZihhLGIpe3goYi5hLGZ1bmN0aW9uKGMpe2EuYWRkKGMuYixjLmEsamYoYykpfSl9ZnVuY3Rpb24gbmYoYSxiKXt2YXIgYz12b2lkIDA9PT1jPzA6Yzt2YXIgZD12b2lkIDA9PT1kPyEwOmQ7d2MoYixmdW5jdGlvbihlLGYpe2QmJnZvaWQgMD09PWV8fGEuYWRkKGYsZSxjKX0pfWZ1bmN0aW9uIG9mKGEpe3ZhciBiPXBmO2EuYiYmKEthKGEuYSxmdW5jdGlvbihjLGQpe3JldHVybiBrZihkLGMpPzE6a2YoYyxkKT8tMTowfSksYS5iPSExKTtyZXR1cm4gQ2EoYS5hLGZ1bmN0aW9uKGMsZCl7ZD1iKGQpO3JldHVyblwiXCIrYysoXCJcIiE9YyYmXCJcIiE9ZD9cIiZcIjpcIlwiKStkfSxcIlwiKX07ZnVuY3Rpb24gcGYoYSl7dmFyIGI9YS5iO2E9YS5hO3JldHVyblwiXCI9PT1hP2I6XCJib29sZWFuXCI9PT10eXBlb2YgYT9hP2I6XCJcIjpBcnJheS5pc0FycmF5KGEpPzA9PT1hLmxlbmd0aD9iOmIrXCI9XCIrYS5qb2luKCk6YitcIj1cIisoSGEoW1wibXRvc1wiLFwidG9zXCIsXCJwXCJdLGIpP2E6ZW5jb2RlVVJJQ29tcG9uZW50KGEpKX07ZnVuY3Rpb24gcWYoYSl7dmFyIGI9dm9pZCAwPT09Yj8hMDpiO3RoaXMuYT1uZXcgbGY7dm9pZCAwIT09YSYmbWYodGhpcy5hLGEpO2ImJnRoaXMuYS5hZGQoXCJ2XCIsWmIsLTE2KX1xZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1cIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vL3BhZ2VhZC9nZW5fMjA0XCIsYj1vZih0aGlzLmEpOzA8Yi5sZW5ndGgmJihhKz1cIj9cIitiKTtyZXR1cm4gYX07ZnVuY3Rpb24gcmYoYSl7dmFyIGI9W10sYz1bXTtPYShhLGZ1bmN0aW9uKGQsZSl7aWYoIShlIGluIE9iamVjdC5wcm90b3R5cGUpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZClzd2l0Y2goQXJyYXkuaXNBcnJheShkKSYmKGQ9ZC5qb2luKFwiLFwiKSksZD1bZSxcIj1cIixkXS5qb2luKFwiXCIpLGUpe2Nhc2UgXCJhZGtcIjpjYXNlIFwiclwiOmNhc2UgXCJ0dFwiOmNhc2UgXCJlcnJvclwiOmNhc2UgXCJtdG9zXCI6Y2FzZSBcInRvc1wiOmNhc2UgXCJwXCI6Y2FzZSBcImJzXCI6Yi51bnNoaWZ0KGQpO2JyZWFrO2Nhc2UgXCJyZXFcIjpjYXNlIFwidXJsXCI6Y2FzZSBcInJlZmVycmVyXCI6Y2FzZSBcImlmcmFtZV9sb2NcIjpjLnB1c2goZCk7YnJlYWs7ZGVmYXVsdDpiLnB1c2goZCl9fSk7cmV0dXJuIGIuY29uY2F0KGMpfWZ1bmN0aW9uIHNmKCl7aWYoWmImJlwidW5yZWxlYXNlZFwiIT09WmIpcmV0dXJuIFpifTtmdW5jdGlvbiB0Zigpe3RoaXMuYT0wfXcodGYpO2Z1bmN0aW9uIHVmKGEpe3RoaXMubT1hO3RoaXMubD0hMX11Zi5wcm90b3R5cGUuaT1mdW5jdGlvbihhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifTtmdW5jdGlvbiB2Zigpe3VmLmNhbGwodGhpcyxcImNhcGFiaWxpdHlcIil9dSh2Zix1Zik7dmYucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMH07dmYucHJvdG90eXBlLmg9ZnVuY3Rpb24oKXt2YXIgYT17fTtyZXR1cm4gYS5iX25hbWU9dGhpcy5hLlUsYS52X25hbWU9dGhpcy5iLlUsYX07ZnVuY3Rpb24gd2YoKXt1Zi5jYWxsKHRoaXMsXCJkaWZmXCIpfXUod2YsdWYpO3dmLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuISguMDI+PU1hdGguYWJzKHRoaXMuYi5vLXRoaXMuYS5vKSl9O3dmLnByb3RvdHlwZS5oPWZ1bmN0aW9uKCl7dmFyIGE9e307cmV0dXJuIGEuYl9uYW1lPXRoaXMuYS5VLGEudl9uYW1lPXRoaXMuYi5VLGEuYl92cF9vZmY9SlNPTi5zdHJpbmdpZnkodGhpcy5hLkgpLGEudl92cF9vZmY9SlNPTi5zdHJpbmdpZnkodGhpcy5iLkgpLGEuYl92cF9zej1KU09OLnN0cmluZ2lmeSh0aGlzLmEuU2EpLGEudl92cF9zej1KU09OLnN0cmluZ2lmeSh0aGlzLmIuU2EpLGEuYl9leHA9dGhpcy5hLm8sYS52X2V4cD10aGlzLmIubyxhLmVmcF9vY2M9dGhpcy5hLkRiLGEuc2J2PXRoaXMuYS5mYSxhfTtmdW5jdGlvbiB4Zigpe3VmLmNhbGwodGhpcyxcImNhcHRcIik7dGhpcy5mPVtdO3RoaXMuYz1bXX11KHhmLHVmKTt4Zi5wcm90b3R5cGUuaT1mdW5jdGlvbihhLGIpe3VmLnByb3RvdHlwZS5pLmNhbGwodGhpcyxhLGIpOzIwPD10aGlzLmMubGVuZ3RofHwodGhpcy5mLnB1c2goYS5vKSx0aGlzLmMucHVzaChiLm8pKX07eGYucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gMjA9PT10aGlzLmMubGVuZ3RofTt4Zi5wcm90b3R5cGUuaD1mdW5jdGlvbigpe3ZhciBhPXlmKHRoaXMuZix0aGlzLmMpLGI9emYodGhpcy5mLHRoaXMuYyksYz17fTtyZXR1cm4gYy5iX25hbWU9dGhpcy5hLlUsYy52X25hbWU9dGhpcy5iLlUsYy5iX2V4cD10aGlzLmYuam9pbihcIixcIiksYy52X2V4cD10aGlzLmMuam9pbihcIixcIiksYy5kaWZmPWEsYy5kaWZmX2J1Y2tldHM9YixjfTtmdW5jdGlvbiB5ZihhLGIpe3JldHVybiBFYShNYShhLGIpLGZ1bmN0aW9uKGMpe3JldHVybiBjWzBdIT09Y1sxXX0pfWZ1bmN0aW9uIHpmKGEsYil7ZnVuY3Rpb24gYyhkKXtyZXR1cm4uMjUqTWF0aC5mbG9vcihkLy4yNSl9cmV0dXJuIHlmKEJhKGEsYyksQmEoYixjKSl9O2Z1bmN0aW9uIEFmKGEsYixjLGQsZSl7ZT12b2lkIDA9PT1lP1tuZXcgdmYsbmV3IHdmLG5ldyB4Zl06ZTtJLmNhbGwodGhpcyk7dGhpcy5hPWEuR2EoYixjLHRoaXMuVCgpKTt0aGlzLmEudmEoKTt0aGlzLmM9ZTt0aGlzLmI9ZH11KEFmLEkpO0FmLnByb3RvdHlwZS5WPWZ1bmN0aW9uKCl7dGhpcy5hJiYodGhpcy5hLk4oKSx0aGlzLmEuQigpKX07ZnVuY3Rpb24gQmYoYSxiLGMpe3goYS5jLGZ1bmN0aW9uKGQpe3ZhciBlPWEuYjtpZighZC5sJiYoZC5pKGIsYyksZC5qKCkpKXtkLmw9ITA7dmFyIGY9ZC5oKCksZz1uZXcgbGY7Zy5hZGQoXCJpZFwiLFwiYXYtanNcIik7Zy5hZGQoXCJ0eXBlXCIsXCJ2ZXJpZlwiKTtnLmFkZChcInZ0eXBlXCIsZC5tKTtkPXRmLmcoKTtnLmFkZChcImlcIixkLmErKyk7Zy5hZGQoXCJhZGtcIixlKTtuZihnLGYpO2U9bmV3IHFmKGcpO3ZhciBoPXZvaWQgMD09PWg/NEUzOmg7ZT1lLnRvU3RyaW5nKCk7LyZ2PVteJl0rLy50ZXN0KGUpfHwoZT0oZj1zZigpKT9lK1wiJnY9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGYpOmUpO2U9ZS5zdWJzdHJpbmcoMCxoKTtBZChlKX19KX1BZi5wcm90b3R5cGUuUz1mdW5jdGlvbigpe307QWYucHJvdG90eXBlLmFhPWZ1bmN0aW9uKCl7fTtBZi5wcm90b3R5cGUuVD1mdW5jdGlvbigpe3JldHVybiExfTtmdW5jdGlvbiBDZigpe3RoaXMuYT10aGlzLmI9dGhpcy5jPTB9ZnVuY3Rpb24gRGYoYSxiLGMsZCl7YiYmKGEuYys9YyxhLmIrPWMsYS5hPU1hdGgubWF4KGEuYSxhLmIpKTtpZih2b2lkIDA9PT1kPyFiOmQpYS5iPTB9O3ZhciBFZj1bMSwuNzUsLjUsLjMsMF07ZnVuY3Rpb24gRmYoYSl7dGhpcy5hPWE9dm9pZCAwPT09YT9FZjphO3RoaXMuYj1CYSh0aGlzLmEsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENmfSl9ZnVuY3Rpb24gR2YoYSl7cmV0dXJuIEhmKGEsZnVuY3Rpb24oYil7cmV0dXJuIGIuY30sITEpfWZ1bmN0aW9uIElmKGEpe3JldHVybiBIZihhLGZ1bmN0aW9uKGIpe3JldHVybiBiLmF9LCEwKX1mdW5jdGlvbiBKZihhLGIsYyxkLGUsZil7dmFyIGc9dm9pZCAwPT09Zz8hMDpnO2M9Zj9NYXRoLm1pbihiLGMpOmM7Zm9yKGY9MDtmPGEuYS5sZW5ndGg7ZisrKXt2YXIgaD1hLmFbZl0sbT0wPGMmJmM+PWg7aD0hKDA8YiYmYj49aCl8fGQ7RGYoYS5iW2ZdLGcmJm0sZSwhZ3x8aCl9fWZ1bmN0aW9uIEhmKGEsYixjKXthPUJhKGEuYixmdW5jdGlvbihkKXtyZXR1cm4gYihkKX0pO3JldHVybiBjP2E6S2YoYSl9ZnVuY3Rpb24gS2YoYSl7cmV0dXJuIEJhKGEsZnVuY3Rpb24oYixjLGQpe3JldHVybiAwPGM/ZFtjXS1kW2MtMV06ZFtjXX0pfTtmdW5jdGlvbiBMZigpe3RoaXMuYT1uZXcgRmY7dGhpcy5jPW5ldyBDZjt0aGlzLmI9LTE7dGhpcy5mPW5ldyBGZihbMSwuOSwuOCwuNywuNiwuNSwuNCwuMywuMiwuMSwwXSl9ZnVuY3Rpb24gVyhhKXtyZXR1cm4gMUUzPD1hLmMuYX07dmFyIE1mPW5ldyBKKDAsMCwwLDApO2Z1bmN0aW9uIE5mKGEsYixjKXtJLmNhbGwodGhpcyk7dGhpcy5QYj1CYyhNZik7dGhpcy5jPW5ldyBMZjt0aGlzLmlhPS0yO0RhdGUubm93KCk7dGhpcy5CYj0tMTt0aGlzLnViPWI7dGhpcy5oYT1udWxsO3RoaXMuST0hMTt0aGlzLkg9bnVsbDt0aGlzLlk9LTE7dGhpcy5vYT1jO3RoaXMuQ2I9dGhpcy5DYT1wYTt0aGlzLmI9bmV3IGpkO3RoaXMuYi5iPWE7dGhpcy5iLmE9YTt0aGlzLmw9ITE7dGhpcy5pPXt4YTpudWxsLHdhOm51bGx9O3RoaXMuWj0hMDt0aGlzLkQ9bnVsbDtSLmcoKS5sKys7dGhpcy5mPW5ldyBUYzt0aGlzLnliPXRoaXMucWE9LTE7dGhpcy5CYT0wO3RoaXMuSz0tMTt0aGlzLmE9bnVsbDt0aGlzLnlhPW5ldyBKKDAsMCwwLDApO3RoaXMub2I9ITE7YT10aGlzLmg9bmV3IGFkO04oYSxcIm9kXCIsU2MpO00oTihhLFwib3BhY1wiLEwpKTtNKE4oYSxcInNiZW9zXCIsTCkpO00oTihhLFwicHJmXCIsTCkpO00oTihhLFwibXd0XCIsTCkpO04oYSxcImlvZ2VvXCIsTCk7KGE9dGhpcy5iLmIpJiZhLmdldEF0dHJpYnV0ZSYmaWQoYSxcImdvb2dsZUF2SW5hcHBcIikmJihVLmcoKS5mPSEwKTsxPT10aGlzLm9hP2JkKHRoaXMuaCxcIm9kXCIsMSk6YmQodGhpcy5oLFwib2RcIiwwKX11KE5mLEkpO2s9TmYucHJvdG90eXBlO2suVj1mdW5jdGlvbigpe09mKHRoaXMpO3RoaXMuRCYmdGhpcy5ELkIoKTt0aGlzLmEmJnRoaXMuYS5CKCk7ZGVsZXRlIHRoaXMuYztkZWxldGUgdGhpcy5DYTtkZWxldGUgdGhpcy5DYjtkZWxldGUgdGhpcy5iLmI7ZGVsZXRlIHRoaXMuYi5hO2RlbGV0ZSB0aGlzLmk7ZGVsZXRlIHRoaXMuRDtkZWxldGUgdGhpcy5hO2RlbGV0ZSB0aGlzLmg7SS5wcm90b3R5cGUuVi5jYWxsKHRoaXMpfTtmdW5jdGlvbiBQZihhKXtyZXR1cm4gYS5hP2EuYS5hOmEuUGJ9ay5NYT1mdW5jdGlvbihhKXt2YXIgYj1SLmcoKTtcInN0cmluZ1wiPT09dHlwZW9mIGEmJjAhPWEubGVuZ3RoJiZkZChiLmEsYSl9O2sucWI9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ay5lYT1mdW5jdGlvbigpe3RoaXMuST0hMH07ay50YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkl9O2suUGE9ZnVuY3Rpb24oKXt0aGlzLmYubz0wfTtmdW5jdGlvbiBRZihhLGIpe2lmKGEuYSl7aWYoYi5DKCk9PT1hLmEuQygpKXJldHVybjthLmEuQigpO2EuYT1udWxsfWI9Yi5jcmVhdGUoYS5iLmEsYS5oLGEucWIoKSk7aWYoYj1udWxsIT1iJiZiLnZhKCk/YjpudWxsKWEuYT1ifWZ1bmN0aW9uIFJmKGEsYixjKXtpZihhLmEpe2EuYS5SKCk7dmFyIGQ9YS5hLmgsZT1kLmosZj1lLmE7aWYobnVsbCE9ZC5jKXt2YXIgZz1kLmg7YS5IPW5ldyBGKGcubGVmdC1mLmxlZnQsZy50b3AtZi50b3ApO2EueWE9ZC5jfWY9YS5mYSgpP01hdGgubWF4KGQuYSxkLmYpOmQuYTtnPXt9O251bGwhPT1lLnZvbHVtZSYmKGcudm9sdW1lPWUudm9sdW1lKTthLmhhJiYtMSE9YS51YiYmLTEhPT1kLmImJi0xIT09YS5oYS5iPyhlPWQuYi1hLmhhLmIsZT0xRTQ8ZT8wOmUpOmU9MDthLmhhPWQ7YS5RYShmLGIsYywhMSxnLGUsZC5pKX19ZnVuY3Rpb24gU2YoYSl7aWYoYS50YSgpJiZhLkQpe3ZhciBiPTE9PU8oYS5oLFwib2RcIiksYz1VLmcoKS5hLGQ9YS5ELGU9bmV3IEcoemMoYyksQWMoYykpO2M9YS5mYSgpO2E9e1U6YS5hP2EuYS5DKCk6XCJuc1wiLEg6YS5ILFNhOmUsZmE6YyxvOmEuZi5vLERiOmJ9O2lmKGI9ZC5hKXtiLlIoKTtlPWIuaDt2YXIgZj1lLmouYSxnPW51bGwsaD1udWxsO251bGwhPWUuYyYmZiYmKGc9ZS5oLGc9bmV3IEYoZy5sZWZ0LWYubGVmdCxnLnRvcC1mLnRvcCksaD1uZXcgRyhmLnJpZ2h0LWYubGVmdCxmLmJvdHRvbS1mLnRvcCkpO2M9e1U6Yi5DKCksSDpnLFNhOmgsZmE6YyxEYjohMSxvOmM/TWF0aC5tYXgoZS5hLGUuZik6ZS5hfX1lbHNlIGM9bnVsbDtjJiZCZihkLGEsYyl9fWsuUWE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dGhpcy5sfHwodGhpcy50YSgpJiYoZT1uZXcgVGMsZS5jPWMsZS5iPUVlKCksZS5vPTA9PT10aGlzLlkmJjE9PT1PKHRoaXMuaCxcIm9wYWNcIik/MDphLGUuYT10aGlzLmRhKCksZS5mPWcsYT10aGlzLmMsYz10aGlzLmYsZD1kJiZ0aGlzLmYubz49KHRoaXMuZGEoKT8uMzouNSksYS5iPU1hdGgubWF4KGEuYixlLm8pLEpmKGEuZixlLmYsYy5mLGUuYyxmLGQpLEpmKGEuYSxlLm8sYy5vLGUuYyxmLGQpLGQ9ZHx8Yy5hIT1lLmE/Yy5pc1Zpc2libGUoKSYmZS5pc1Zpc2libGUoKTpjLmlzVmlzaWJsZSgpLGM9IWUuaXNWaXNpYmxlKCl8fGUuYyxEZihhLmMsZCxmLGMpLHRoaXMudWI9YiwwPGUubyYmKC0xPT09dGhpcy5xYSYmKHRoaXMucWE9YiksdGhpcy55Yj1iKSwtMT09dGhpcy5CYiYmVyh0aGlzLmMpJiYodGhpcy5CYj1iKSwtMj09dGhpcy5pYSYmKHRoaXMuaWE9UmUoUGYodGhpcykpP2UubzotMSksdGhpcy5mPWUpLHRoaXMuQ2EodGhpcykpfTtrLmRhPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2suZmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYnx8ITF9O2Z1bmN0aW9uIFRmKGEpe2EuYi5hJiYoYS5pLnhhPXhlKGEuYi5hLFwibW91c2VvdmVyXCIsZnVuY3Rpb24oKXt2YXIgYj1UKCk7YS5LPWJ9LDE0OSksYS5pLndhPXhlKGEuYi5hLFwibW91c2VvdXRcIixmdW5jdGlvbigpe3ZhciBiPVQoKTstMT09YS5LfHxiPGEuS3x8KGEuQmErPWItYS5LKTthLks9LTF9LDE1MCkpfWZ1bmN0aW9uIE9mKGEpe2EuYi5hJiYoYS5pLnhhJiYoY2MoYS5iLmEsXCJtb3VzZW92ZXJcIixhLmkueGEpLGEuaS54YT1udWxsKSxhLmkud2EmJihjYyhhLmIuYSxcIm1vdXNlb3V0XCIsYS5pLndhKSxhLmkud2E9bnVsbCkpfTtmdW5jdGlvbiBVZigpe1ZmKHRoaXMpfWZ1bmN0aW9uIFZmKGEpe2EuYXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIEUuR29vZ19BZFNlbnNlX2dldEFkQWRhcHRlckluc3RhbmNlfHwoYS5hPUUuR29vZ19BZFNlbnNlX2dldEFkQWRhcHRlckluc3RhbmNlKCkpO2EuYnx8XCJmdW5jdGlvblwiIT09dHlwZW9mIEUuR29vZ19Db21tb25fZ2V0QWRBZGFwdGVySW5zdGFuY2V8fChhLmI9RS5Hb29nX0NvbW1vbl9nZXRBZEFkYXB0ZXJJbnN0YW5jZSgpKTshYS5jJiZoYygpJiYoYS5jPSEwKX1mdW5jdGlvbiBXZihhLGIsYyxkKXtWZihhKTt2YXIgZT1VLmcoKS5tO2EuYSYmYS5hLmdldE5ld0Jsb2NrcyhiLGUpO2EuYiYmYS5iLmdldE5ld0Jsb2NrcyhiLGUpO2EuYyYmIWMoKSYmKGQoITApLGIoaGMoKSxcIlwiLDEzLCEwKSl9ZnVuY3Rpb24gWGYoYSl7VmYoYSk7cmV0dXJuKGEuYT9hLmEubnVtQmxvY2tzKCk6MCkrKGEuYj9hLmIubnVtQmxvY2tzKCk6MCkrKGEuYz8xOjApfWZ1bmN0aW9uIFlmKGEpe1ZmKGEpO3JldHVybiBhLmE/YS5hLmdldE9zZUlkKCk6YS5iP2EuYi5nZXRPc2VJZCgpOjB9O2Z1bmN0aW9uIFpmKGEpe3JldHVybiBrYigpPyhhPShhPUgoYSkpJiZtYyhhKSwhIShhJiZhLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucyYmMDxhLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGgmJmEubG9jYXRpb24ub3JpZ2luPT1hLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2luc1swXSkpOiEwfTt2YXIgJGY9XCJTdG9wSXRlcmF0aW9uXCJpbiB2P3YuU3RvcEl0ZXJhdGlvbjp7bWVzc2FnZTpcIlN0b3BJdGVyYXRpb25cIixzdGFjazpcIlwifTtmdW5jdGlvbiBhZygpe31hZy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3Rocm93ICRmO307YWcucHJvdG90eXBlLlRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIGJnKGEpe2lmKGEgaW5zdGFuY2VvZiBhZylyZXR1cm4gYTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLlRhKXJldHVybiBhLlRhKCExKTtpZihyYShhKSl7dmFyIGI9MCxjPW5ldyBhZztjLm5leHQ9ZnVuY3Rpb24oKXtmb3IoOzspe2lmKGI+PWEubGVuZ3RoKXRocm93ICRmO2lmKGIgaW4gYSlyZXR1cm4gYVtiKytdO2IrK319O3JldHVybiBjfXRocm93IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO31mdW5jdGlvbiBjZyhhLGIpe2lmKHJhKGEpKXRyeXt4KGEsYix2b2lkIDApfWNhdGNoKGMpe2lmKGMhPT0kZil0aHJvdyBjO31lbHNle2E9YmcoYSk7dHJ5e2Zvcig7OyliLmNhbGwodm9pZCAwLGEubmV4dCgpLHZvaWQgMCxhKX1jYXRjaChjKXtpZihjIT09JGYpdGhyb3cgYzt9fX1mdW5jdGlvbiBkZyhhLGIpe3ZhciBjPTE7Y2coYSxmdW5jdGlvbihkKXtjPWIuY2FsbCh2b2lkIDAsYyxkKX0pO3JldHVybiBjfWZ1bmN0aW9uIGVnKGEsYil7dmFyIGM9YmcoYSk7YT1uZXcgYWc7YS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGQ9Yy5uZXh0KCk7aWYoYi5jYWxsKHZvaWQgMCxkLHZvaWQgMCxjKSlyZXR1cm4gZDt0aHJvdyAkZjt9O3JldHVybiBhfWZ1bmN0aW9uIGZnKGEpe3ZhciBiPWJnKGEpO2E9bmV3IGFnO3ZhciBjPTEwMDthLm5leHQ9ZnVuY3Rpb24oKXtpZigwPGMtLSlyZXR1cm4gYi5uZXh0KCk7dGhyb3cgJGY7fTtyZXR1cm4gYX07ZnVuY3Rpb24gZ2coYSxiKXt0aGlzLmM9Yjt0aGlzLmI9bnVsbD09YTt0aGlzLmE9YX11KGdnLGFnKTtnZy5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2lmKHRoaXMuYil0aHJvdyAkZjt2YXIgYT10aGlzLmF8fG51bGw7dGhpcy5iPW51bGw9PWE7dmFyIGI7aWYoYj1hKXtiPXRoaXMuYztpZih3YihhLFwicGFyZW50RWxlbWVudFwiKSYmbnVsbCE9YS5wYXJlbnRFbGVtZW50JiZhIT1hLnBhcmVudEVsZW1lbnQpdmFyIGM9YS5wYXJlbnRFbGVtZW50O2Vsc2UgaWYoYil7dmFyIGQ9dm9pZCAwPT09ZD9aZjpkO2lmKGQoYSkpdHJ5e3ZhciBlPUgoYSksZj1lJiZtYyhlKSxnPWYmJmYuZnJhbWVFbGVtZW50O2M9bnVsbD09Zz9udWxsOmd9Y2F0Y2goaCl7Yz1udWxsfWVsc2UgYz1udWxsfWVsc2UgYz1udWxsO2I9Y310aGlzLmE9YjtyZXR1cm4gYX07ZnVuY3Rpb24gaGcoYSl7dmFyIGI9MTthPWZnKG5ldyBnZyhhLCEwKSk7YT1lZyhhLGZ1bmN0aW9uKCl7cmV0dXJuIDA8Yn0pO3JldHVybiBkZyhhLGZ1bmN0aW9uKGMsZCl7dmFyIGU9MTtpZih3YihkLFwic3R5bGVcIikmJmQuc3R5bGUpe3ZhciBmPXBhcnNlRmxvYXQ7YTp7dmFyIGc9SChkKTtpZihnLmRlZmF1bHRWaWV3JiZnLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihnPWcuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwpKSl7Zz1nLm9wYWNpdHl8fGcuZ2V0UHJvcGVydHlWYWx1ZShcIm9wYWNpdHlcIil8fFwiXCI7YnJlYWsgYX1nPVwiXCJ9aWYoIWcpe2c9ZC5zdHlsZVtuYigpXTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIGcpZD1nO2Vsc2V7Zz1kLnN0eWxlO3ZhciBoPUpjLm9wYWNpdHk7aWYoIWgpe3ZhciBtPW5iKCk7aD1tO3ZvaWQgMD09PWQuc3R5bGVbbV0mJihtPShDYj9cIldlYmtpdFwiOkJiP1wiTW96XCI6Qz9cIm1zXCI6emI/XCJPXCI6bnVsbCkrcGIobSksdm9pZCAwIT09ZC5zdHlsZVttXSYmKGg9bSkpO0pjLm9wYWNpdHk9aH1kPWdbaF18fFwiXCJ9Zz1kfWY9ZihnKTtcIm51bWJlclwiIT09dHlwZW9mIGZ8fGlzTmFOKGYpfHwoZT1mKX1yZXR1cm4gYj1jKmV9KX07ZnVuY3Rpb24gaWcoYSxiLGMsZCxlLGYsZyl7Zj12b2lkIDA9PT1mP3BhOmY7Zz12b2lkIDA9PT1nP1tdOmc7TmYuY2FsbCh0aGlzLGMsZCxlKTt0aGlzLnphPWI7dGhpcy5BYT10aGlzLm09MDt0aGlzLmdiPW51bGw7dGhpcy5lYj10aGlzLllhPVwiXCI7dGhpcy4kYT1bXTt0aGlzLmJiPVtdO3RoaXMuVWE9dGhpcy5jYj1cIlwiO3RoaXMubmI9ITE7dGhpcy51PTQ7dGhpcy52Yj0hMTt0aGlzLlA9W107dGhpcy5HPXRoaXMuaj1cIlwiO3RoaXMudGI9dGhpcy5YYT10aGlzLm1iPSExO3RoaXMuZ2E9MDt0aGlzLiQ9dGhpcy5pYj1FZSgpO3RoaXMua2E9MDt0aGlzLndiPWY7dGhpcy54Yj0hMTt0aGlzLmphPXRoaXMuRGE9dGhpcy5FYT10aGlzLnBhPXRoaXMuQT0tMTt0aGlzLm1hPWc7amcodGhpcyx0aGlzLmIuYik7ZmQoUi5nKCkuYSx0aGlzLnphKX11KGlnLE5mKTtmdW5jdGlvbiBrZyhhLGIsYyl7cmV0dXJuKGE9U3RyaW5nKGFbYl18fGhkKGEsYyl8fFwiXCIpKT9hLnNwbGl0KFwifFwiKTpbXX1mdW5jdGlvbiBqZyhhLGIpe2lmKGIpe2lmKDA9PWEubSlpZihhLmIuYil7dmFyIGM9YS5iLmIuX2Fka187Y3x8KGM9KGM9aGQoYS5iLmIsXCJnb29nbGVBdkFka1wiKSkmJiEvW14wLTldLy50ZXN0KGMpP3BhcnNlSW50KGMsMTApOjApfWVsc2UgYz0wO2Vsc2UgYz1hLm07YS5tPWM7XCJcIj09YS5ZYSYmKGEuWWE9U3RyaW5nKGIuX2F2aV98fFwiXCIpKTtcIlwiPT1hLmViJiYoYS5lYj1iLl9hdmlob3N0Xz9TdHJpbmcoYi5fYXZpaG9zdF8pOlwicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb21cIik7YS4kYS5sZW5ndGh8fChhLiRhPWtnKGIsXCJfYXZpY3huX1wiLFwiZ29vZ2xlQXZDeG5cIikpO2EuYmIubGVuZ3RofHwoYS5iYj1rZyhiLFwiX2F2aWVvc2N4bl9cIixcImdvb2dsZUVPU0F2Q3huXCIpKTtcIlwiPT1hLmNiJiYoYS5jYj1TdHJpbmcoYi5fYXZpZXh0Y3huX3x8aGQoYixcImdvb2dsZUF2RXh0Q3huXCIpfHxcIlwiKSk7XCJcIj09YS5VYSYmKGEuVWE9U3RyaW5nKGIuX2NpZF98fFwiXCIpKTthLm5ifHwoYS5uYj0hIWIuX2ltbV98fGlkKGIsXCJnb29nbGVBdkltbWVkaWF0ZVwiKSk7XCJcIj09YS5HJiYoYS5HPVN0cmluZyhiLl9jdnVffHxoZChiLFwiZ29vZ2xlQXZDcG1hdlwiKXx8XCJcIikpO1wiXCI9PWEuaiYmKGEuaj1TdHJpbmcoaGQoYixcImdvb2dsZUF2QnRyXCIpfHxcIlwiKSk7YS5NYShTdHJpbmcoYi5fYXZtX3x8aGQoYixcImdvb2dsZUF2TWV0YWRhdGFcIil8fFwiXCIpKX19az1pZy5wcm90b3R5cGU7ay5WPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuUDtkZWxldGUgdGhpcy5tYTtOZi5wcm90b3R5cGUuVi5jYWxsKHRoaXMpfTtmdW5jdGlvbiBsZyhhLGIsYyl7eChhLm1hLGZ1bmN0aW9uKGQpe3JldHVybiBkLmEoYSxjLGIpfSl9ay50YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkkmJiEoMT09dGhpcy5rYXx8Mz09dGhpcy5rYSl9O2suUGE9ZnVuY3Rpb24oKXtOZi5wcm90b3R5cGUuUGEuY2FsbCh0aGlzKTt0aGlzLnlhPW5ldyBKKDAsMCwwLDApfTtrLmVhPWZ1bmN0aW9uKCl7dGhpcy5JfHwodGhpcy5FYT1RZCgpLHRoaXMud2IoITEsdGhpcy5pYSksbnVsbCE9dGhpcy5qJiZcIlwiIT10aGlzLmomJihFYyh0aGlzLmopLHRoaXMuaj1cIlwiKSk7TmYucHJvdG90eXBlLmVhLmNhbGwodGhpcyk7bWcodGhpcyl9O2Z1bmN0aW9uIG1nKGEpe2lmKGEuSSYmdj09di50b3Ape3ZhciBiPXYucGFnZVlPZmZzZXQ7bnVsbCE9YiYmKGEuamE9TWF0aC5tYXgoYixhLmphKSk7bGcoYSw0LHt9KX19ZnVuY3Rpb24gbmcoYSl7cmV0dXJuIG5ldyBrZChhLm0sYS5nYil9ay5NYT1mdW5jdGlvbihhKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEmJjAhPWEubGVuZ3RoKXt2YXIgYj1uZXcgYWQsYz1SLmcoKTtOKGIsXCJvbWlkXCIsTCk7ZGQoYixhKTtiPU8oYixcIm9taWRcIik7bnVsbCE9PWImJihjLmEuYi5vbWlkPWIpO2E9ZGQodGhpcy5oLGEpO2M9YS5zcGxpdChcIiZcIik7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKyl7dmFyIGQ9Y1tiXTtcInRzPTBcIj09ZD90aGlzLlo9ITE6MD09ZC5sYXN0SW5kZXhPZihcImxhPVwiLDApPyhkPWQuc3BsaXQoXCI9XCIpWzFdLFwiMFwiPT1kP3RoaXMuZ2E9MjpcIjFcIj09ZCYmKHRoaXMuZ2E9MSkpOjA9PWQubGFzdEluZGV4T2YoXCJjcj1cIiwwKT9cIjFcIj09ZC5zcGxpdChcIj1cIilbMV0mJih0aGlzLm9iPSEwKTpcImFkZj0xXCI9PWQmJih0aGlzLnhiPSEwKX10aGlzLmYuYT10aGlzLmRhKCk7TmYucHJvdG90eXBlLk1hLmNhbGwodGhpcyxhKX19O2suUWE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9Vyh0aGlzLmMpLG09TWF0aC5mbG9vcigxMDAqdGhpcy5mLm8pO3RoaXMuZ2E9MjQyNTAwPD1SZShQZih0aGlzKSk/MToyO05mLnByb3RvdHlwZS5RYS5jYWxsKHRoaXMsYSxiLGMsZCxlLGYsZyk7LTE9PXRoaXMuJCYmLTEhPXRoaXMuZi5iP3RoaXMuJD10aGlzLmYuYjowPT10aGlzLiQmJjE9PXRoaXMuZi5iJiYodGhpcy4kPTEpO2E9Vyh0aGlzLmMpO2I9TWF0aC5mbG9vcigxMDAqdGhpcy5mLm8pOyghaCYmYXx8YiE9bSkmJnRoaXMud2IoYSxiKTt0cnl7dGhpcy5ZPWhnKHRoaXMuYi5hKX1jYXRjaChuKXt9bWcodGhpcyl9O2suZGE9ZnVuY3Rpb24oKXtyZXR1cm4gRGI/ITE6MT09dGhpcy5nYX07ZnVuY3Rpb24gb2coYSxiLGMsZCl7ZD12b2lkIDA9PT1kP3t9OmQ7dmFyIGU9e30sZj1VLmcoKSxnPWNkKGEuaCksaD1mLmwsbT1QZihhKTtnLnA9W20udG9wK2gueSxtLmxlZnQraC54LG0uYm90dG9tK2gueSxtLnJpZ2h0K2gueF07aD1hLmM7Zy50b3M9R2YoaC5hKTtnLm10b3M9SWYoaC5hKTtnLm1jdnQ9aC5jLmE7Zy5ycz1hLm9hOyhtPTU9PWEub2EpfHwoZy5odD1hLkJhKTswPD1hLnFhJiYoZy50ZnM9YS5xYSxnLnRscz1hLnliKTtnLm1jPUFlKGguYik7Zy5sdGU9QWUoYS5pYSk7Zy5iYXM9YS5pYjtnLmJhYz1hLiQ7Zi5jJiYoZ1tcImlmXCJdPWEubD8wOjEpO2cubWV0PWEuYi5jO20mJmEuemEmJihnLnJlcT1lbmNvZGVVUklDb21wb25lbnQoYS56YSkuc3Vic3RyaW5nKDAsMTAwKSk7YS50YiYmKGcuY2k9XCIxXCIpO2EuZGEoKSYmKGcubGE9XCIxXCIpO2cuYXZtcz1hLmE/YS5hLkMoKTpcIm5zXCI7YS5hJiZ5KGcsYS5hLkwoKSk7MCE9YS5rYSYmKGcubWQ9YS5rYSk7Zy5idHI9bnVsbCE9YS5qJiZcIlwiIT1hLmo/MTowO2cuY3BtYXY9cGcoYSk/MTowO2cubG09YS51O3koZyxxZyhhKSk7ZCYmeShnLGQpO2cuYWRrPWEubTthLnhiJiZhLkFhJiYoZy5hZGY9YS5BYSk7ZD1hLmw7Zj1SLmcoKTshYyYmZCYmZi5iJiYoYz1mLmIpO2MmJihnLnI9Yyk7MD09PWEuWSYmKGcuaW52aXM9MSk7Yz1yZihnKS5qb2luKFwiJlwiKTtlWzNdPWM7ZVsxMV09ZDtlWzI5XT1SLmcoKS5jO2VbMF09YjtlWzddPWEuZi5vO2VbOV09RmUoYS55YSk7ZVsyOF09YS5vYTtlWzMyXT1hLmE/YS5hLkMoKTpcIm5zXCI7ZVs1XT1XKGEuYykmJjQhPWEudTtlWzEzXT1JZihhLmMuYSkuam9pbihcIixcIik7ZVsxOF09MD09UmUoUGYoYSkpO251bGwhPWEuSCYmKGVbMjBdPWEuSC55LGVbMjFdPWEuSC54KTtiPVUuZygpO251bGwhPWIuYiYmKGVbMjJdPXpjKGIuYiksZVsyM109QWMoYi5iKSk7bnVsbCE9Yi5hJiYoZVszMF09emMoYi5hKSxlWzMxXT1BYyhiLmEpLGVbMzhdPUZlKGIuYSkpO2M9Yi5sO2c9UGYoYSk7ZVszN109RmUobmV3IEooZy50b3ArYy55LGcucmlnaHQrYy54LGcuYm90dG9tK2MueSxnLmxlZnQrYy54KSk7Yi5oJiYoYj1iLmgsZVszOV09Yi53aWR0aCtcIi1cIitiLmhlaWdodCk7LTEhPWEuWSYmKGVbMjVdPWEuWSk7aWYoYT1uZyhhKSlhLmImJihlWzRdPWEuYiksYS5hJiYoZVsxMl09YS5hKTtyZXR1cm4gZX1mdW5jdGlvbiBxZyhhKXt2YXIgYj1hLkE7dmFyIGM9YS5BO2M9LTE9PWN8fGEucGE8Yz8tMTphLnBhLWM7dmFyIGQ9LTE9PWEuQXx8YS5FYTxhLkE/LTE6YS5FYS1hLkEsZT17fTtyZXR1cm4gZS5yc3Q9MDxiP2I6dm9pZCAwLGUuZGx0PTA8PWM/Yzp2b2lkIDAsZS5ycHQ9MDw9ZD9kOnZvaWQgMCxlLmlzZD0wPD1hLkRhP2EuRGE6dm9pZCAwLGUubXNkPTA8PWEuamE/YS5qYTp2b2lkIDAsZX1mdW5jdGlvbiBwZyhhKXtyZXR1cm4gbnVsbCE9YS5HJiZudWxsIT1hLkcubWF0Y2goL1xcL3BhZ2VhZFxcL2Fkdmlld1xcPy4qYWk9LiomdnQ9XFxkKy9pKX1rLnFiPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2Z1bmN0aW9uIHJnKGEsYixjLGQpe2VmLmNhbGwodGhpcyxhLGIsYyxkKX11KHJnLGVmKTtyZy5wcm90b3R5cGUua2I9ZnVuY3Rpb24oYSl7cmV0dXJuIFVlKGEsdGhpcy5sLHRoaXMuYywxPT1PKHRoaXMuRCxcIm9kXCIpKX07cmcucHJvdG90eXBlLlI9ZnVuY3Rpb24oKXt0aGlzLnRpbWVzdGFtcD1UKCk7dGhpcy5GYSgpO3RoaXMuWmEoKTt2YXIgYT10aGlzLmE7dmFyIGI9dGhpcy5sO2E9YS5sZWZ0PD1iLnJpZ2h0JiZiLmxlZnQ8PWEucmlnaHQmJmEudG9wPD1iLmJvdHRvbSYmYi50b3A8PWEuYm90dG9tP25ldyBKKE1hdGgubWF4KGEudG9wLGIudG9wKSxNYXRoLm1pbihhLnJpZ2h0LGIucmlnaHQpLE1hdGgubWluKGEuYm90dG9tLGIuYm90dG9tKSxNYXRoLm1heChhLmxlZnQsYi5sZWZ0KSk6bmV3IEooMCwwLDAsMCk7Yj1hLnRvcD49YS5ib3R0b218fGEubGVmdD49YS5yaWdodD9uZXcgSigwLDAsMCwwKTphO2E9dGhpcy5iLmM7dmFyIGM9MCxkPTAsZT0wOzA8KHRoaXMuYS5ib3R0b20tdGhpcy5hLnRvcCkqKHRoaXMuYS5yaWdodC10aGlzLmEubGVmdCkmJih0aGlzLmtiKGIpP2I9bmV3IEooMCwwLDAsMCk6KGM9VS5nKCkuaixlPW5ldyBKKDAsYy5oZWlnaHQsYy53aWR0aCwwKSxjPVFlKGIsdGhpcy5hKSxkPVFlKGIsVS5nKCkuYSksZT1RZShiLGUpKSk7Yj1iLnRvcD49Yi5ib3R0b218fGIubGVmdD49Yi5yaWdodD9uZXcgSigwLDAsMCwwKTpDYyhiLC10aGlzLmEubGVmdCwtdGhpcy5hLnRvcCk7T2UoKXx8KGQ9Yz0wKTt0aGlzLmg9bmV3IFdlKGEsdGhpcy5hLGIsYyxkLHRoaXMudGltZXN0YW1wLGUpfTtyZy5wcm90b3R5cGUuQz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuQygpfTtmdW5jdGlvbiBzZyhhKXt2YXIgYj1bXTt0ZyhuZXcgdWcsYSxiKTtyZXR1cm4gYi5qb2luKFwiXCIpfWZ1bmN0aW9uIHVnKCl7fWZ1bmN0aW9uIHRnKGEsYixjKXtpZihudWxsPT1iKWMucHVzaChcIm51bGxcIik7ZWxzZXtpZihcIm9iamVjdFwiPT10eXBlb2YgYil7aWYoQXJyYXkuaXNBcnJheShiKSl7dmFyIGQ9YjtiPWQubGVuZ3RoO2MucHVzaChcIltcIik7Zm9yKHZhciBlPVwiXCIsZj0wO2Y8YjtmKyspYy5wdXNoKGUpLHRnKGEsZFtmXSxjKSxlPVwiLFwiO2MucHVzaChcIl1cIik7cmV0dXJufWlmKGIgaW5zdGFuY2VvZiBTdHJpbmd8fGIgaW5zdGFuY2VvZiBOdW1iZXJ8fGIgaW5zdGFuY2VvZiBCb29sZWFuKWI9Yi52YWx1ZU9mKCk7ZWxzZXtjLnB1c2goXCJ7XCIpO2U9XCJcIjtmb3IoZCBpbiBiKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGQpJiYoZj1iW2RdLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGYmJihjLnB1c2goZSksdmcoZCxjKSxjLnB1c2goXCI6XCIpLHRnKGEsZixjKSxlPVwiLFwiKSk7Yy5wdXNoKFwifVwiKTtyZXR1cm59fXN3aXRjaCh0eXBlb2YgYil7Y2FzZSBcInN0cmluZ1wiOnZnKGIsYyk7YnJlYWs7Y2FzZSBcIm51bWJlclwiOmMucHVzaChpc0Zpbml0ZShiKSYmIWlzTmFOKGIpP1N0cmluZyhiKTpcIm51bGxcIik7YnJlYWs7Y2FzZSBcImJvb2xlYW5cIjpjLnB1c2goU3RyaW5nKGIpKTticmVhaztjYXNlIFwiZnVuY3Rpb25cIjpjLnB1c2goXCJudWxsXCIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXCJVbmtub3duIHR5cGU6IFwiK3R5cGVvZiBiKTt9fX12YXIgd2c9eydcIic6J1xcXFxcIicsXCJcXFxcXCI6XCJcXFxcXFxcXFwiLFwiL1wiOlwiXFxcXC9cIixcIlxcYlwiOlwiXFxcXGJcIixcIlxcZlwiOlwiXFxcXGZcIixcIlxcblwiOlwiXFxcXG5cIixcIlxcclwiOlwiXFxcXHJcIixcIlxcdFwiOlwiXFxcXHRcIixcIlxceDBCXCI6XCJcXFxcdTAwMGJcIn0seGc9L1xcdWZmZmYvLnRlc3QoXCJcXHVmZmZmXCIpPy9bXFxcXFwiXFx4MDAtXFx4MWZcXHg3Zi1cXHVmZmZmXS9nOi9bXFxcXFwiXFx4MDAtXFx4MWZcXHg3Zi1cXHhmZl0vZztmdW5jdGlvbiB2ZyhhLGIpe2IucHVzaCgnXCInLGEucmVwbGFjZSh4ZyxmdW5jdGlvbihjKXt2YXIgZD13Z1tjXTtkfHwoZD1cIlxcXFx1XCIrKGMuY2hhckNvZGVBdCgwKXw2NTUzNikudG9TdHJpbmcoMTYpLnN1YnN0cigxKSx3Z1tjXT1kKTtyZXR1cm4gZH0pLCdcIicpfTtmdW5jdGlvbiB5Zygpe3RoaXMua2V5PVwiZ29vZ19hZHNwZWVkXCI7dGhpcy5jPVszLDRdO3RoaXMuYj1udWxsfXlnLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEsYixjKXtpZighSGEodGhpcy5jLGMpfHwhbmcoYSkuYygpKXJldHVybiExO2M9e307Yz0oY1swXT10aGlzLmtleSxjWzQwXT1zZyhxZyhhKSksYyk7dmFyIGQ7aWYoZD10aGlzLmIpYTp7ZD10aGlzLmI7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGMpfHxkW2VdIT09Y1tlXSl7ZD0hMTticmVhayBhfWZvcih2YXIgZiBpbiBjKWlmKCEoZiBpbiBkKSl7ZD0hMTticmVhayBhfWQ9ITB9aWYoZClyZXR1cm4hMTt0aGlzLmI9YztlPXt9O3koZSxjLGIpO3JldHVybiB6ZyhhLHtSYTp7fSxMYTplfSl9O2Z1bmN0aW9uIEFnKCl7dGhpcy5rZXk9XCJnb29nX3VwZGF0ZV9kYXRhXCI7dGhpcy5iPTA7dGhpcy5jPSExfUFnLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEsYixjKXtpZihjIT10aGlzLmJ8fCFuZyhhKS5jKCkpcmV0dXJuITE7Yz0xPT1hLnU7dmFyIGQ9VyhhLmMpLGU9e30sZj17fTtiPXtMYTooZVswXT10aGlzLmtleSxlWzQwXT1zZyhxZyhhKSksZSksUmE6T2JqZWN0LmFzc2lnbih7fSxiLChmLnI9Yi5yLGYpKX07aWYoYylyZXR1cm4gZCYmIXRoaXMuYz8odGhpcy5jPWQsemcoYSxiKSk6ITE7dGhpcy5jPWQ7cmV0dXJuIHpnKGEsYil9O2Z1bmN0aW9uIEJnKGEpe0FnLmNhbGwodGhpcyxhKTt0aGlzLmtleT1cImdvb2dfaW1hZ2VfcmVxdWVzdFwiO3RoaXMuYj0yfXUoQmcsQWcpO2Z1bmN0aW9uIENnKGEpe0FnLmNhbGwodGhpcyxhKTt0aGlzLmtleT1cImdvb2dfaW1hZ2VfcmVxdWVzdFwiO3RoaXMuYj0xfXUoQ2csQWcpO0NnLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hYS5YYTtpZihXKGEuYykmJmEuWnx8ZCl7aWYoYj1BZy5wcm90b3R5cGUuYS5jYWxsKHRoaXMsYSxiLGMpKWlmKFcoYS5jKXx8KGEuWGE9ITApLFcoYS5jKXx8YS5aKWEuWj0hMTtyZXR1cm4gYn1yZXR1cm4hMX07ZnVuY3Rpb24gRGcoKXt0aGlzLmI9W107dGhpcy5hPVtdfWZ1bmN0aW9uIEVnKGEpe3JldHVybiBGYShYLmEsZnVuY3Rpb24oYil7Yj1uZyhiKTtyZXR1cm4gYS5hfHxiLmE/YS5hPT1iLmE6YS5ifHxiLmI/YS5iPT1iLmI6ITF9KX1mdW5jdGlvbiBGZyhhKXt2YXIgYj1YO3JldHVybiBhP0ZhKGIuYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5iLmI9PWF9KTpudWxsfWZ1bmN0aW9uIEdnKGEpe3JldHVybiBGYShhLmEsZnVuY3Rpb24oKXtyZXR1cm4hMX0pfWZ1bmN0aW9uIEhnKCl7dmFyIGE9WDtyZXR1cm4gMD09YS5iLmxlbmd0aD9hLmE6MD09YS5hLmxlbmd0aD9hLmI6SWEoYS5hLGEuYil9ZnVuY3Rpb24gSWcoKXt2YXIgYT1YO2EuYj1bXTthLmE9W119ZnVuY3Rpb24gSmcoYSxiKXthPWEuYTt2YXIgYz1HYShhLGZ1bmN0aW9uKGQpe3JldHVybiBkPT1ifSk7cmV0dXJuLTEhPWM/KGEuc3BsaWNlKGMsMSksYi5hJiZiLmEuTigpLGIuQigpLCEwKTohMX1mdW5jdGlvbiBLZyhhKXt2YXIgYj1YO2lmKEpnKGIsYSkpe2E9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07YT1mdW5jdGlvbigpe3JldHVybiBHZyhiKX07Zm9yKHZhciBjPWEoKTtjO2M9YSgpKUpnKGIsYyl9fXcoRGcpO3ZhciBYPURnLmcoKTtmdW5jdGlvbiBMZygpe3RoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiBNZyhhLGIpe2Z1bmN0aW9uIGMoZCxlKXtiKGQsZSl9aWYobnVsbD09YS5iKXJldHVybiExO2EuYT1GYShhLmIsZnVuY3Rpb24oZCl7cmV0dXJuIG51bGwhPWQmJmQucGIoKX0pO2EuYSYmKGEuYS5qYihjKT9iZihhLmEuYSk6YihhLmEuYS5XKCksYS5hKSk7cmV0dXJuIG51bGwhPWEuYX13KExnKTtmdW5jdGlvbiBOZyhhKXthPU9nKGEpO2dmLmNhbGwodGhpcyxhLmxlbmd0aD9hW2EubGVuZ3RoLTFdOm5ldyBWKEUsMCkpO3RoaXMuYz1hO3RoaXMuYj1udWxsfXUoTmcsZ2YpO2s9TmcucHJvdG90eXBlO2suQz1mdW5jdGlvbigpe3JldHVybih0aGlzLmI/dGhpcy5iOnRoaXMuYSkuQygpfTtrLkw9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5iP3RoaXMuYjp0aGlzLmEpLkwoKX07ay5NPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYj90aGlzLmI6dGhpcy5hKS5NKCl9O2suamI9ZnVuY3Rpb24oYSl7dmFyIGI9ITE7eCh0aGlzLmMsZnVuY3Rpb24oYyl7Yy5KYSgpJiYoYj0hMCl9KTtiJiYodGhpcy5mPWEsYWYodGhpcy5hLHRoaXMpKTtyZXR1cm4gYn07ay5CPWZ1bmN0aW9uKCl7eCh0aGlzLmMsZnVuY3Rpb24oYSl7YS5CKCl9KTtnZi5wcm90b3R5cGUuQi5jYWxsKHRoaXMpfTtrLnBiPWZ1bmN0aW9uKCl7cmV0dXJuIERhKHRoaXMuYyxmdW5jdGlvbihhKXtyZXR1cm4gYS5YKCl9KX07ay51YT1mdW5jdGlvbigpe3JldHVybiBEYSh0aGlzLmMsZnVuY3Rpb24oYSl7cmV0dXJuIGEuWCgpfSl9O2suR2E9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgcmcoYSx0aGlzLmEsYixjKX07ay5TPWZ1bmN0aW9uKGEpe3RoaXMuYj1hLmJ9O2Z1bmN0aW9uIE9nKGEpe2lmKCFhLmxlbmd0aClyZXR1cm5bXTthPUFhKGEsZnVuY3Rpb24oYyl7cmV0dXJuIG51bGwhPWMmJmMuWCgpfSk7Zm9yKHZhciBiPTE7YjxhLmxlbmd0aDtiKyspYWYoYVtiLTFdLGFbYl0pO3JldHVybiBhfTt2YXIgUGc9e3RocmVzaG9sZDpbMCwuMywuNSwuNzUsMV19O2Z1bmN0aW9uIFFnKGEsYixjLGQpe2VmLmNhbGwodGhpcyxhLGIsYyxkKTt0aGlzLnU9dGhpcy5tPXRoaXMuaT10aGlzLmo9dGhpcy5mPW51bGx9dShRZyxyZyk7az1RZy5wcm90b3R5cGU7ay52YT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy51fHwodGhpcy51PVQoKSk7aWYoZ2UoMjk4LGZ1bmN0aW9uKCl7cmV0dXJuIFJnKGEpfSkpcmV0dXJuITA7WmUodGhpcy5iLFwibXNmXCIpO3JldHVybiExfTtrLk49ZnVuY3Rpb24oKXtpZih0aGlzLmYmJnRoaXMuYyl0cnl7dGhpcy5mLnVub2JzZXJ2ZSh0aGlzLmMpLHRoaXMuaj8odGhpcy5qLnVub2JzZXJ2ZSh0aGlzLmMpLHRoaXMuaj1udWxsKTp0aGlzLmkmJih0aGlzLmkuZGlzY29ubmVjdCgpLHRoaXMuaT1udWxsKX1jYXRjaChhKXt9fTtmdW5jdGlvbiBTZyhhKXtyZXR1cm4gYS5mJiZhLmYudGFrZVJlY29yZHM/YS5mLnRha2VSZWNvcmRzKCk6W119ZnVuY3Rpb24gUmcoYSl7aWYoIWEuYylyZXR1cm4hMTt2YXIgYj1hLmMsYz1hLmIuYS5zLGQ9Ui5nKCkuZi5hO2EuZj1uZXcgYy5JbnRlcnNlY3Rpb25PYnNlcnZlcihFZChkLGZ1bmN0aW9uKGUpe3JldHVybiBUZyhhLGUpfSksUGcpO2Q9RWQoZCxmdW5jdGlvbigpe2EuZi51bm9ic2VydmUoYik7YS5mLm9ic2VydmUoYik7VGcoYSxTZyhhKSl9KTtjLlJlc2l6ZU9ic2VydmVyPyhhLmo9bmV3IGMuUmVzaXplT2JzZXJ2ZXIoZCksYS5qLm9ic2VydmUoYikpOmMuTXV0YXRpb25PYnNlcnZlciYmKGEuaT1uZXcgdi5NdXRhdGlvbk9ic2VydmVyKGQpLGEuaS5vYnNlcnZlKGIse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pKTthLmYub2JzZXJ2ZShiKTtUZyhhLFNnKGEpKTtyZXR1cm4hMH1mdW5jdGlvbiBUZyhhLGIpe3RyeXtpZihiLmxlbmd0aCl7YS5tfHwoYS5tPVQoKSk7dmFyIGM9VWcoYiksZD1MYyhhLmMsYS5iLmEucyksZT1kLngsZj1kLnk7YS5hPWZmKGEsbmV3IEooTWF0aC5yb3VuZChmKSxNYXRoLnJvdW5kKGUpK2MuYm91bmRpbmdDbGllbnRSZWN0LndpZHRoLE1hdGgucm91bmQoZikrYy5ib3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0LE1hdGgucm91bmQoZSkpKTt2YXIgZz1EZShjLmludGVyc2VjdGlvblJlY3QpO2EubD1DYyhnLGEuYS5sZWZ0LWcubGVmdCxhLmEudG9wLWcudG9wKX19Y2F0Y2goaCl7YS5OKCksbmUoMjk5LGgpfX1mdW5jdGlvbiBVZyhhKXtyZXR1cm4gQ2EoYSxmdW5jdGlvbihiLGMpe3JldHVybiBiLnRpbWU+Yy50aW1lP2I6Y30sYVswXSl9ay5SPWZ1bmN0aW9uKCl7dmFyIGE9U2codGhpcyk7MDxhLmxlbmd0aCYmVGcodGhpcyxhKTtyZy5wcm90b3R5cGUuUi5jYWxsKHRoaXMpfTtrLkZhPWZ1bmN0aW9uKCl7fTtrLmtiPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2suWmE9ZnVuY3Rpb24oKXt9O2suTD1mdW5jdGlvbigpe3ZhciBhPXt9O3JldHVybiBPYmplY3QuYXNzaWduKHRoaXMuYi5MKCksKGEubmlvdF9vYnM9dGhpcy51LGEubmlvdF9jYms9dGhpcy5tLGEpKX07ay5DPWZ1bmN0aW9uKCl7cmV0dXJuXCJuaW9cIn07ZnVuY3Rpb24gVmcoYSl7YT12b2lkIDA9PT1hP0U6YTtnZi5jYWxsKHRoaXMsbmV3IFYoYSwyKSl9dShWZyxnZik7VmcucHJvdG90eXBlLkM9ZnVuY3Rpb24oKXtyZXR1cm5cIm5pb1wifTtWZy5wcm90b3R5cGUudWE9ZnVuY3Rpb24oKXt2YXIgYT1BO3JldHVybiBhJiYwPD1hLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImNvYmFsdFwiKT8hMTohVS5nKCkuZiYmbnVsbCE9dGhpcy5hLmEucy5JbnRlcnNlY3Rpb25PYnNlcnZlcn07VmcucHJvdG90eXBlLkdhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IFFnKGEsdGhpcy5hLGIsYyl9O2Z1bmN0aW9uIFdnKCl7dmFyIGE9WGcoKTtWLmNhbGwodGhpcyxFLnRvcCxhLFwiZ2VvXCIpfXUoV2csVik7V2cucHJvdG90eXBlLkhhPWZ1bmN0aW9uKCl7cmV0dXJuIFUuZygpLmF9O1dnLnByb3RvdHlwZS5YPWZ1bmN0aW9uKCl7dmFyIGE9WGcoKTt0aGlzLmkhPT1hJiYodGhpcy5hIT10aGlzJiZhPnRoaXMuYS5pJiYodGhpcy5hPXRoaXMsJGUodGhpcykpLHRoaXMuaT1hKTtyZXR1cm4gMj09YX07ZnVuY3Rpb24gWGcoKXtSLmcoKTt2YXIgYT1VLmcoKTtyZXR1cm4gYS5jfHxhLmY/MDoyfXcoV2cpO3ZhciBZZz17fSxaZz0oWWdbMV09ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZnfSxZZ1syXT1mdW5jdGlvbigpe3JldHVybiBuZXcgTmcoW1dnLmcoKV0pfSxZZyk7ZnVuY3Rpb24gJGcoKXt0aGlzLmE9bnVsbDt0aGlzLmI9Wmd9ZnVuY3Rpb24gYWgoKXt2YXIgYT0kZy5nKCk7YTp7dmFyIGI9TyhSLmcoKS5hLFwibXZcIik7aWYobnVsbCE9YiYmKGI9YS5iW2JdKSYmKGI9YigpKSYmYi51YSgpKWJyZWFrIGE7Yj1udWxsfWEuYT1ifXcoJGcpO2Z1bmN0aW9uIGJoKCl7dGhpcy5kb25lPSExO3RoaXMuYT17V2E6MCxWYTowLGVjOjAsYWI6MCxzYTotMSxHYjowLEZiOjAsSGI6MH07dGhpcy5qPW51bGw7dGhpcy5oPXRoaXMubD0hMTt0aGlzLmk9XCJcIjt0aGlzLmI9bnVsbDt0aGlzLm09MDt0aGlzLmM9bmV3IFhlKHRoaXMpfWZ1bmN0aW9uIGNoKGEpe3ZhciBiPVk7aWYoIWIubCl7Yi5sPSEwO2lmKGEpe2E9SGcoKTtmb3IodmFyIGMsZD0wO2Q8YS5sZW5ndGg7KytkKWM9YVtkXSxjLmIuYSYmVGYoYyl9ZGgoYixmdW5jdGlvbihlKXtmb3IodmFyIGY9W10sZz0wO2c8YXJndW1lbnRzLmxlbmd0aDsrK2cpZltnXT1hcmd1bWVudHNbZ107cmV0dXJuIGIuZi5hcHBseShiLHIoZikpfSk7Yi5mKCl9fWJoLnByb3RvdHlwZS56Yj1mdW5jdGlvbigpe2VoKHRoaXMsSGcoKSwhMSl9O2Z1bmN0aW9uIGZoKCl7dmFyIGE9JGcuZygpO251bGwhPWEuYSYmYS5hLmEmJmJmKGEuYS5hKTthPUxnLmcoKTtudWxsIT1hLmEmJmEuYS5hP2JmKGEuYS5hKTpMZShVLmcoKSl9ZnVuY3Rpb24gZWgoYSxiLGMpe2lmKCFhLmRvbmUpaWYoYS5jLmNhbmNlbCgpLDA9PWIubGVuZ3RoKWEuaD0hMTtlbHNle2EuYj1udWxsO3RyeXtmaCgpO3ZhciBkPVQoKSxlPVIuZygpO2Uuaj1kO2lmKG51bGwhPUxnLmcoKS5hKWZvcihlPTA7ZTxiLmxlbmd0aDtlKyspUmYoYltlXSxkLGMpO2Vsc2UgbWUoYS5pLHtzdHJhdGVneV9ub3Rfc2VsZWN0ZWQ6MSxiaW46ZS5jfSk7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKylTZihiW2RdKTsrK2EuYS5hYjtnaChhKX1maW5hbGx5e2M/eChiLGZ1bmN0aW9uKGYpe3JldHVybiBmLlBhKCl9KTpZZShhLmMpfX19ZnVuY3Rpb24gZGgoYSxiKXtpZighYS5qKXtiPWNlKDE0MixiKTtRKCk7dmFyIGM7RC52aXNpYmlsaXR5U3RhdGU/Yz1cInZpc2liaWxpdHljaGFuZ2VcIjpELm1velZpc2liaWxpdHlTdGF0ZT9jPVwibW96dmlzaWJpbGl0eWNoYW5nZVwiOkQud2Via2l0VmlzaWJpbGl0eVN0YXRlJiYoYz1cIndlYmtpdHZpc2liaWxpdHljaGFuZ2VcIik7YyYmYmMoRCxjLGIse2NhcHR1cmU6ITF9KSYmKGEuaj1iKX19YmgucHJvdG90eXBlLmY9ZnVuY3Rpb24oKXt2YXIgYT1PZSgpLGI9VCgpO2E/KHJlfHwocGU9Yix4KFguYixmdW5jdGlvbihjKXtyZXR1cm4gYy5jLmkoYiwhYy5qKCkpfSkpLHJlPSEwKToodGhpcy5tPWhoKHRoaXMsYikscmU9ITEseChYLmIsZnVuY3Rpb24oYyl7Yy50YSgpJiZjLmMuaChiKX0pKTt0aGlzLmg9ITA7ZWgodGhpcyxIZygpLCFhKX07ZnVuY3Rpb24gaWgoYSl7cmV0dXJuISEoRGF0ZSYmYSYmYS5zY3JlZW4mJmEuZG9jdW1lbnQmJmEuZG9jdW1lbnQuYm9keSYmYS5kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl9ZnVuY3Rpb24gamgoYSxiLGMpe2lmKCFhLmJ8fGMpe2M9Yi5kb2N1bWVudDt2YXIgZD0wPD1xZT9UKCktcWU6LTEsZT1UKCk7LTE9PWEuYS5zYSYmKGQ9ZSk7dmFyIGY9VS5nKCksZz1SLmcoKSxoPWNkKGcuYSksbT1IZygpO3RyeXtpZigwPG0ubGVuZ3RoKXt2YXIgbj1mLmE7biYmKGguYnM9W3pjKG4pLEFjKG4pXSk7dmFyIGw9Zi5oO2wmJihoLnBzPVtsLndpZHRoLGwuaGVpZ2h0XSk7Yi5zY3JlZW4mJihoLnNjcz1bYi5zY3JlZW4ud2lkdGgsYi5zY3JlZW4uaGVpZ2h0XSl9ZWxzZSBoLnVybD1lbmNvZGVVUklDb21wb25lbnQoYi5sb2NhdGlvbi5ocmVmLnN1YnN0cmluZygwLDUxMikpLGMucmVmZXJyZXImJihoLnJlZmVycmVyPWVuY29kZVVSSUNvbXBvbmVudChjLnJlZmVycmVyLnN1YnN0cmluZygwLDUxMikpKTtoLnR0PWQ7aC5wdD1xZTtoLmJpbj1nLmM7dm9pZCAwIT09Yi5nb29nbGVfb3NkX2xvYWRfcHViX3BhZ2VfZXhwJiYoaC5vbHBwPWIuZ29vZ2xlX29zZF9sb2FkX3B1Yl9wYWdlX2V4cCk7aC5kZWI9WzEsYS5hLldhLGEuYS5WYSxhLmEuYWIsYS5hLnNhLHplLGEuYy5iLGEuYS5HYixhLmEuRmIsYS5hLkhiXS5qb2luKFwiLVwiKTtoLnR2dD1oaChhLGUpO2YuZiYmKGguaW5hcHA9MSk7aWYobnVsbCE9PWImJmIhPWIudG9wKXswPG0ubGVuZ3RoJiYoaC5pZnJhbWVfbG9jPWVuY29kZVVSSUNvbXBvbmVudChiLmxvY2F0aW9uLmhyZWYuc3Vic3RyaW5nKDAsNTEyKSkpO3ZhciBxPWYuYjtoLmlzPVt6YyhxKSxBYyhxKV19fWNhdGNoKG5hKXtoLmVycm9yPTF9YS5iPWh9Yj1hLmI7YT17fTtmb3IodmFyIHAgaW4gYilhW3BdPWJbcF07cD1SLmcoKS5mO3ZhciB0O2lmKDE9PU8ocC5jLFwicHJmXCIpKXtiPW5ldyBDZDtuPXAuYTtsPTA7LTE8bi5hJiYobD1uLmYuYS5hKCktbi5hKTtiPVliKGIsMSxuLmMrbCk7bj1wLmE7Yj1ZYihiLDUsLTE8bi5hP24uYisxOm4uYik7Yj1ZYihiLDIscC5iLmEuZigpKTtiPVliKGIsMyxwLmIuYS5jKCkpO2I9WWIoYiw0LHAuYi5hLmIoKSk7cD17fTtuPW5ldyBRYjtsPVdiKGIsMSk7bD1udWxsPT1sP2w6K2w7bD1udWxsPT1sPzA6bDtpZigwIT09bCYmKHE9bCxudWxsIT1xKSl7dGIobi5hLDkpO2w9bi5hO2Q9cTtkPShxPTA+ZD8xOjApPy1kOmQ7aWYoMD09PWQpcmI9MDwxL2Q/MDoyMTQ3NDgzNjQ4LHFiPTA7ZWxzZSBpZihpc05hTihkKSlyYj0yMTQ3NDgzNjQ3LHFiPTQyOTQ5NjcyOTU7ZWxzZSBpZigxLjc5NzY5MzEzNDg2MjMxNTdFMzA4PGQpcmI9KHE8PDMxfDIxNDY0MzUwNzIpPj4+MCxxYj0wO2Vsc2UgaWYoMi4yMjUwNzM4NTg1MDcyMDE0RS0zMDg+ZClkLz1NYXRoLnBvdygyLC0xMDc0KSxyYj0ocTw8MzF8ZC80Mjk0OTY3Mjk2KT4+PjAscWI9ZD4+PjA7ZWxzZXtlPWQ7Yz0wO2lmKDI8PWUpZm9yKDsyPD1lJiYxMDIzPmM7KWMrKyxlLz0yO2Vsc2UgZm9yKDsxPmUmJi0xMDIyPGM7KWUqPTIsYy0tO2QqPU1hdGgucG93KDIsLWMpO3JiPShxPDwzMXxjKzEwMjM8PDIwfDEwNDg1NzYqZCYxMDQ4NTc1KT4+PjA7cWI9NDUwMzU5OTYyNzM3MDQ5NipkPj4+MH11YihsLHFiKTt1YihsLHJiKX1sPVhiKGIsMik7MCE9PWwmJm51bGwhPWwmJlJiKG4sMixsKTtsPVhiKGIsMyk7MCE9PWwmJm51bGwhPWwmJlJiKG4sMyxsKTtsPVhiKGIsNCk7MCE9PWwmJm51bGwhPWwmJlJiKG4sNCxsKTtsPVhiKGIsNSk7aWYoMCE9PWwmJm51bGwhPWwmJm51bGwhPWwpaWYodGIobi5hLDQwKSxiPW4uYSwwPD1sKXRiKGIsbCk7ZWxzZXtmb3IocT0wOzk+cTtxKyspYi5hLnB1c2gobCYxMjd8MTI4KSxsPj49NztiLmEucHVzaCgxKX1iPW5ldyBVaW50OEFycmF5KG4uYS5sZW5ndGgoKSk7cT1uLmI7Yz1xLmxlbmd0aDtmb3IoZD1sPTA7ZDxjO2QrKyllPXFbZF0sYi5zZXQoZSxsKSxsKz1lLmxlbmd0aDtxPW4uYTtjPXEuYTtxLmE9W107Yi5zZXQoYyxsKTtuLmI9W2JdO3ZvaWQgMD09PXQmJih0PTApO2lmKCFQYilmb3IoUGI9e30sbj1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksbD1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0scT0wOzU+cTtxKyspZm9yKGM9bi5jb25jYXQobFtxXS5zcGxpdChcIlwiKSksT2JbcV09YyxkPTA7ZDxjLmxlbmd0aDtkKyspZT1jW2RdLHZvaWQgMD09PVBiW2VdJiYoUGJbZV09ZCk7dD1PYlt0XTtuPVtdO2ZvcihsPTA7bDxiLmxlbmd0aDtsKz0zKWY9YltsXSxnPShxPWwrMTxiLmxlbmd0aCk/YltsKzFdOjAsZT0oYz1sKzI8Yi5sZW5ndGgpP2JbbCsyXTowLGQ9Zj4+MixmPShmJjMpPDw0fGc+PjQsZz0oZyYxNSk8PDJ8ZT4+NixlJj02MyxjfHwoZT02NCxxfHwoZz02NCkpLG4ucHVzaCh0W2RdLHRbZl0sdFtnXXx8XCJcIix0W2VdfHxcIlwiKTt0PShwLnBmPW4uam9pbihcIlwiKSxwKX1lbHNlIHQ9e307eShhLHQpO3JldHVybiBhfWZ1bmN0aW9uIGtoKCl7eChIZygpLGZ1bmN0aW9uKGEpe2lmKGEuYi5iKXt2YXIgYj1hLm18fDAsYz0kZy5nKCk7aWYoYj1jLmE/bmV3IEFmKGMuYSxhLmIuYSxhLmgsYik6bnVsbClhLkQ9Yn19KX1mdW5jdGlvbiBsaCgpe3ZhciBhPUxnLmcoKTtpZihudWxsIT1hLmEpe3ZhciBiPWEuYTt4KEhnKCksZnVuY3Rpb24oYyl7cmV0dXJuIFFmKGMsYil9KX19ZnVuY3Rpb24gZ2goYSl7dmFyIGI9Ui5nKCksYz0xPT09TyhiLmEsXCJsbHBcIik7XCJvc2RcIj09YS5pJiZ4KFguYSxmdW5jdGlvbihkKXtpZihjKXtpZigxPT1iLmN8fFcoZC5jKXx8ZC5sKXt2YXIgZT17fTtsZyhkLDAsKGUucj12b2lkIDAsZSkpfX1lbHNlIGU9e30sbGcoZCwwLChlLnI9dm9pZCAwLGUpKX0pfWZ1bmN0aW9uIGhoKGEsYil7YT1hLm07cmUmJihhKz1iLXBlKTtyZXR1cm4gYX1mdW5jdGlvbiBtaChhKXtyZXR1cm4oYT1hLm1hdGNoKC9bJlxcPztdKD86ZGNfKT9hZGs9KFswLTldKykvKSkmJjI9PWEubGVuZ3RoP3BhcnNlSW50KGFbMV0sMTApOjB9ZnVuY3Rpb24gbmgoYSl7cmV0dXJuKGE9YS5tYXRjaCgvWyZcXD87XWFkZj0oWzAtOV0rKS8pKSYmMj09YS5sZW5ndGg/cGFyc2VJbnQoYVsxXSwxMCk6MH1mdW5jdGlvbiBvaCgpe3ZhciBhPVk7dmFyIGI9dm9pZCAwPT09Yj9mdW5jdGlvbigpe3JldHVybnt9fTpiO2RlLmg9XCJhdi1qc1wiO1pkLmE9LjAxO2ZlKFtmdW5jdGlvbihjKXt2YXIgZD1SLmcoKSxlPXt9O3koYywoZS5iaW49ZC5jLGUudHlwZT1cImVycm9yXCIsZSksY2QoZC5hKSxqaChhLEUpLGIoKSk7aWYoZD1zZigpKWU9e30seShjLChlLnY9ZW5jb2RlVVJJQ29tcG9uZW50KGQpLGUpKX1dKX1mdW5jdGlvbiBwaChhKXt2YXIgYj1uZXcgcWg7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDU6cmV0dXJuW107ZGVmYXVsdDpyZXR1cm4gYT00PT09Ui5nKCkuYyxbbmV3IEFnKGIpLG5ldyBDZyhiKSxuZXcgQmcoYildLmNvbmNhdChyKGE/W106W25ldyB5Z10pKX19dyhiaCk7dmFyIFk9YmguZygpO2Z1bmN0aW9uIHFoKCl7fWZ1bmN0aW9uIHpnKGEsYil7dmFyIGM9Ynx8e307Yj12b2lkIDA9PT1jLlJhP3t9OmMuUmE7Yz12b2lkIDA9PT1jLkxhP3t9OmMuTGE7dmFyIGQ9Yy5yLGU9YlswXSxmPWpoKFksSygpLCExKSxnPXt9O3koZyxmLGIpO2I9e307eShiLG9nKGEsZSxkLGcpLGMpO0hlKGEuYi5iLGIsYS5QKTtyZXR1cm4hMH07ZnVuY3Rpb24gcmgoKXtWLmNhbGwodGhpcyxFLDIsXCJpZW1cIil9dShyaCxWKTtrPXJoLnByb3RvdHlwZTtrLkhhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShwLHQpe3JldHVybiEhYi5zLmRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocCx0KX12YXIgYj10aGlzLGM9bmV3IEooMCx0aGlzLnMuaW5uZXJXaWR0aHx8dGhpcy5zLndpZHRoLHRoaXMucy5pbm5lckhlaWdodHx8dGhpcy5zLmhlaWdodCwwKSxkPWxjKGRvY3VtZW50KSxlPU1hdGguZmxvb3IoYy5sZWZ0LWQueCksZj1NYXRoLmZsb29yKGMudG9wLWQueSksZz1NYXRoLmZsb29yKGMucmlnaHQtZC54KSxoPU1hdGguZmxvb3IoYy5ib3R0b20tZC55KTtjPWEoZSxmKTtkPWEoZyxoKTtpZihjJiZkKXJldHVybiBuZXcgSihmLGcsaCxlKTt2YXIgbT1hKGcsZiksbj1hKGUsaCk7aWYoYyloPVooZixoLGZ1bmN0aW9uKHApe3JldHVybiBhKGUscCl9KSxnPVooZSxnLGZ1bmN0aW9uKHApe3JldHVybiBhKHAsZil9KTtlbHNlIGlmKG0paD1aKGYsaCxmdW5jdGlvbihwKXtyZXR1cm4gYShnLHApfSksZT1aKGcsZSxmdW5jdGlvbihwKXtyZXR1cm4gYShwLGYpfSk7ZWxzZSBpZihuKWY9WihoLGYsZnVuY3Rpb24ocCl7cmV0dXJuIGEoZSxwKX0pLGc9WihlLGcsZnVuY3Rpb24ocCl7cmV0dXJuIGEocCxoKX0pO2Vsc2UgaWYoZClmPVooaCxmLGZ1bmN0aW9uKHApe3JldHVybiBhKGcscCl9KSxlPVooZyxlLGZ1bmN0aW9uKHApe3JldHVybiBhKHAsaCl9KTtlbHNle3ZhciBsPU1hdGguZmxvb3IoKGUrZykvMikscT1NYXRoLmZsb29yKChmK2gpLzIpO2lmKCFhKGwscSkpcmV0dXJuIG5ldyBKKDAsMCwwLDApO2Y9WihxLGYsZnVuY3Rpb24ocCl7cmV0dXJuIGEobCxwKX0pO2g9WihxLGgsZnVuY3Rpb24ocCl7cmV0dXJuIGEobCxwKX0pO2U9WihsLGUsZnVuY3Rpb24ocCl7cmV0dXJuIGEocCxxKX0pO2c9WihsLGcsZnVuY3Rpb24ocCl7cmV0dXJuIGEocCxxKX0pfXJldHVybiBuZXcgSihmLGcsaCxlKX07ZnVuY3Rpb24gWihhLGIsYyl7aWYoYyhiKSlyZXR1cm4gYjtmb3IodmFyIGQ9MTU7ZC0tOyl7dmFyIGU9TWF0aC5mbG9vcigoYStiKS8yKTtpZihlPT1hfHxlPT1iKWJyZWFrO2MoZSk/YT1lOmI9ZX1yZXR1cm4gYX1rLlg9ZnVuY3Rpb24oKXtyZXR1cm4gVS5nKCkuYyYmQyYmS2IoOCkmJnZlKHRoaXMucyl9O2suTmE9ZnVuY3Rpb24oKXt9O2suT2E9ZnVuY3Rpb24oKXt9O2sucmI9ZnVuY3Rpb24oKXt9O2suc2I9ZnVuY3Rpb24oKXt9O3cocmgpO2Z1bmN0aW9uIHNoKCl7Vi5jYWxsKHRoaXMsRSwyLFwibXJhaWRcIik7dGhpcy5KPTA7dGhpcy5BPXRoaXMuRD0hMTt0aGlzLmg9bnVsbDt0aGlzLmI9dWUodGhpcy5zKTt0aGlzLmMuYT1uZXcgSigwLDAsMCwwKTt0aGlzLks9ITF9dShzaCxWKTtrPXNoLnByb3RvdHlwZTtrLlg9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5iLkZ9O2suZmI9ZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzLkomJihhLm1yYWlkPXRoaXMuSik7dGhpcy5EJiYoYS5tbGM9MSk7YS5tdG9wPXRoaXMuYi5PYjt0aGlzLmgmJihhLm1zZT10aGlzLmgpO3RoaXMuSyYmKGEubXNjPTEpO2EubWNwPXRoaXMuYi5yYTtyZXR1cm4gYX07ay5PPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZC0xXT1hcmd1bWVudHNbZF07dHJ5e3JldHVybiB0aGlzLmIuRlthXS5hcHBseSh0aGlzLmIuRixjKX1jYXRjaChlKXtuZSg1MzgsZSwuMDEsZnVuY3Rpb24oZil7Zi5tZXRob2Q9YX0pfX07ZnVuY3Rpb24gdGgoYSxiLGMpe2EuTyhcImFkZEV2ZW50TGlzdGVuZXJcIixiLGMpfWsuSmE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKHRoaXMubSlyZXR1cm4hdGhpcy5iYSgpO3RoaXMubT0hMDtpZigyPT09dGhpcy5iLnJhKXJldHVybiB0aGlzLmg9XCJuZ1wiLFplKHRoaXMsXCJ3XCIpLCExO2lmKDE9PT10aGlzLmIucmEpcmV0dXJuIHRoaXMuaD1cIm1tXCIsWmUodGhpcyxcIndcIiksITE7VS5nKCkudT0hMDt0aGlzLnMuZG9jdW1lbnQucmVhZHlTdGF0ZSYmXCJjb21wbGV0ZVwiPT10aGlzLnMuZG9jdW1lbnQucmVhZHlTdGF0ZT91aCh0aGlzKTp4ZSh0aGlzLnMsXCJsb2FkXCIsZnVuY3Rpb24oKXtRKCkuc2V0VGltZW91dChsZSgyOTIsZnVuY3Rpb24oKXtyZXR1cm4gdWgoYSl9KSwxMDApfSwyOTIpO3JldHVybiEwfTtmdW5jdGlvbiB1aChhKXtSLmcoKS5oPSEhYS5PKFwiaXNWaWV3YWJsZVwiKTt0aChhLFwidmlld2FibGVDaGFuZ2VcIix2aCk7XCJsb2FkaW5nXCI9PT1hLk8oXCJnZXRTdGF0ZVwiKT90aChhLFwicmVhZHlcIix3aCk6eGgoYSl9ZnVuY3Rpb24geGgoYSl7XCJzdHJpbmdcIj09PXR5cGVvZiBhLmIuRi5BRk1BX0xJREFSPyhhLkQ9ITAseWgoYSkpOihhLmIucmE9MyxhLmg9XCJuY1wiLFplKGEsXCJ3XCIpKX1mdW5jdGlvbiB5aChhKXthLkE9ITE7dmFyIGI9MT09TyhSLmcoKS5hLFwicm1tdFwiKSxjPSEhYS5PKFwiaXNWaWV3YWJsZVwiKTsoYj8hYzoxKSYmUSgpLnNldFRpbWVvdXQobGUoNTI0LGZ1bmN0aW9uKCl7YS5BfHwoemgoYSksbmUoNTQwLEVycm9yKCkpLGEuaD1cIm10XCIsWmUoYSxcIndcIikpfSksNTAwKTtBaChhKTt0aChhLGEuYi5GLkFGTUFfTElEQVIsQmgpfWZ1bmN0aW9uIEFoKGEpe3ZhciBiPTE9PU8oUi5nKCkuYSxcInNuZWlvXCIpLGM9dm9pZCAwIT09YS5iLkYuQUZNQV9MSURBUl9FWFBfMSxkPXZvaWQgMCE9PWEuYi5GLkFGTUFfTElEQVJfRVhQXzI7KGI9YiYmZCkmJihhLmIuRi5BRk1BX0xJREFSX0VYUF8yPSEwKTtjJiYoYS5iLkYuQUZNQV9MSURBUl9FWFBfMT0hYil9ZnVuY3Rpb24gemgoYSl7YS5PKFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLGEuYi5GLkFGTUFfTElEQVIsQmgpO2EuRD0hMX1rLk5hPWZ1bmN0aW9uKCl7dmFyIGE9VS5nKCksYj1DaCh0aGlzLFwiZ2V0TWF4U2l6ZVwiKTthLmE9bmV3IEooMCxiLndpZHRoLGIuaGVpZ2h0LDApfTtrLk9hPWZ1bmN0aW9uKCl7VS5nKCkuaj1DaCh0aGlzLFwiZ2V0U2NyZWVuU2l6ZVwiKX07ZnVuY3Rpb24gQ2goYSxiKXtpZihcImxvYWRpbmdcIj09PWEuTyhcImdldFN0YXRlXCIpKXJldHVybiBuZXcgRygtMSwtMSk7Yj1hLk8oYik7aWYoIWIpcmV0dXJuIG5ldyBHKC0xLC0xKTthPXBhcnNlSW50KGIud2lkdGgsMTApO2I9cGFyc2VJbnQoYi5oZWlnaHQsMTApO3JldHVybiBpc05hTihhKXx8aXNOYU4oYik/bmV3IEcoLTEsLTEpOm5ldyBHKGEsYil9ay5CPWZ1bmN0aW9uKCl7emgodGhpcyk7Vi5wcm90b3R5cGUuQi5jYWxsKHRoaXMpfTtmdW5jdGlvbiB3aCgpe3RyeXt2YXIgYT1zaC5nKCk7YS5PKFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLFwicmVhZHlcIix3aCk7eGgoYSl9Y2F0Y2goYil7bmUoNTQxLGIpfX1mdW5jdGlvbiBCaChhLGIpe3RyeXt2YXIgYz1zaC5nKCk7Yy5BPSEwO3ZhciBkPWE/bmV3IEooYS55LGEueCthLndpZHRoLGEueSthLmhlaWdodCxhLngpOm5ldyBKKDAsMCwwLDApO3ZhciBlPVQoKSxmPU9lKCk7dmFyIGc9bmV3IFZlKGUsZixjKTtnLmE9ZDtnLnZvbHVtZT1iO2MuUyhnKX1jYXRjaChoKXtuZSg1NDIsaCl9fWZ1bmN0aW9uIHZoKGEpe3ZhciBiPVIuZygpLGM9c2guZygpO2EmJiFiLmgmJihiLmg9ITAsYy5LPSEwLGMuaCYmWmUoYyxcIndcIiwhMCkpfXcoc2gpO2Z1bmN0aW9uIERoKGEpe3JldHVybihhPS9bJlxcPyNdZXhrPShbXiYgXSspLy5leGVjKGEpKSYmMj09YS5sZW5ndGg/YVsxXTpudWxsfTt2YXIgRWg9W1wiRlJBTUVcIixcIklNR1wiLFwiSUZSQU1FXCJdLEZoPS9eWzAxXShweCk/JC87ZnVuY3Rpb24gR2goYSxiLGMpe3ZhciBkPSEwLGU9ITE7ZD12b2lkIDA9PT1kPyEwOmQ7ZT12b2lkIDA9PT1lPyExOmU7dmFyIGY9dm9pZCAwPT09Zj8hMTpmO2lmKGE9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOmEpe2N8fChjPWZ1bmN0aW9uKG5hLFNhLFRhKXtuYS5hZGRFdmVudExpc3RlbmVyKFNhLFRhKX0pO2Zvcih2YXIgZz0hMSxoPWZ1bmN0aW9uKG5hKXtnfHwoZz0hMCxiKG5hKSl9LG0sbixsPTA7bDxFaC5sZW5ndGg7KytsKWlmKEVoW2xdPT1hLnRhZ05hbWUpe249MzttPVthXTticmVha31tfHwobT1hLnF1ZXJ5U2VsZWN0b3JBbGwoRWguam9pbihcIixcIikpLG49Mik7dmFyIHE9MDthPSExO2ZvcihsPTA7bDxtLmxlbmd0aDtsKyspe3ZhciBwPW1bbF07aWYoZnx8IShcIklNR1wiIT1wLnRhZ05hbWV8fCFwLmNvbXBsZXRlfHxwLm5hdHVyYWxXaWR0aCYmcC5uYXR1cmFsSGVpZ2h0P0ZoLnRlc3QocC5nZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiKSkmJkZoLnRlc3QocC5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIikpOjEpKXtpZihcIklNR1wiPT1wLnRhZ05hbWUpdmFyIHQ9cC5uYXR1cmFsV2lkdGgmJnAubmF0dXJhbEhlaWdodD8hMDohMTtlbHNlIHRyeXt0PVwiY29tcGxldGVcIj09PShwLnJlYWR5U3RhdGU/cC5yZWFkeVN0YXRlOnAuY29udGVudFdpbmRvdyYmcC5jb250ZW50V2luZG93LmRvY3VtZW50JiZwLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQucmVhZHlTdGF0ZSk/ITA6ITF9Y2F0Y2gobmEpe3Q9dm9pZCAwPT09ZT8hMTplfXQ/YT0hMDoocSsrLGMocCxcImxvYWRcIixmdW5jdGlvbigpe3EtLTtxfHxoKG4pfSkpfX1tPW51bGw7aWYoMD09PXEmJiFhJiZcImNvbXBsZXRlXCI9PT12LmRvY3VtZW50LnJlYWR5U3RhdGUpbj01O2Vsc2UgaWYocXx8IWEpe2ModixcImxvYWRcIixmdW5jdGlvbigpe2goNCl9KTtyZXR1cm59ZCYmaChuKX19O2Z1bmN0aW9uIEhoKGEpe3RoaXMubWV0aG9kTmFtZT1hfXZhciBJaD1uZXcgSGgoMTUpLEpoPW5ldyBIaCg1KTtmdW5jdGlvbiBLaChhLGIpe3JldHVybiBiW2EubWV0aG9kTmFtZV18fGZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gTGgoKXt9dyhMaCk7ZnVuY3Rpb24gTWgoKXt0aGlzLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8hMTpifTt0aGlzLmE9ZnVuY3Rpb24oKXt9fWZ1bmN0aW9uIE5oKGEsYixjKXthLmI9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gS2goSmgsYikoZCxlLGMpfTthLmE9ZnVuY3Rpb24oKXtLaChJaCxiKShjKX19dyhNaCk7ZnVuY3Rpb24gT2goYSl7dmFyIGI9dm9pZCAwPT09Yj8hMTpiO3JldHVybiBNaC5nKCkuYihhLGIpfTtmdW5jdGlvbiBQaCgpe313KFBoKTtmdW5jdGlvbiBRaCgpe3RoaXMuYj1udWxsO3RoaXMuZj10aGlzLmk9dGhpcy5jPXRoaXMuaD0hMTtSaCh0aGlzKTtvaCgpfWZ1bmN0aW9uIFNoKCl7dmFyIGE9dm9pZCAwLGI9NDtpZih2b2lkIDA9PT1hKXt2YXIgYz12b2lkIDA9PT1jP3Y6YzthPWMuZ2dlYWN8fChjLmdnZWFjPXt9KX1iPXZvaWQgMD09PWI/MDpiO0xoLmcoKTtiPXZvaWQgMD09PWI/MDpiO05oKE1oLmcoKSxhLGIpO1BoLmcoKTtNaC5nKCkuYSgpO2I9Ui5nKCk7T2goMTYwKSYmYmQoYi5hLFwiZ3R4XCIsMSl9az1RaC5wcm90b3R5cGU7ay5NYj1mdW5jdGlvbihhKXt0aGlzLmg9YX07ay5oYj1mdW5jdGlvbigpe1RoKHRoaXMpO1EoKS5jbGVhclRpbWVvdXQodGhpcy5iKTt0aGlzLmI9bnVsbDtxZT1UKCk7VWgodGhpcyl9O2Z1bmN0aW9uIFRoKGEpe1IuZygpLmM9MTtpZighKDA8cWUpKXt0cnl7aWYoIVZoKGEpKXJldHVybjtmaCgpO1doKGEpfWNhdGNoKGIpe31hLmI9USgpLnNldFRpbWVvdXQobGUoMTI5LGZ1bmN0aW9uKCl7cmV0dXJuIFRoKGEpfSksMjUwKX19ay5OYj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsbSl7dmFyIG49dGhpcztmPXZvaWQgMD09PWY/ITE6ZjtoPXZvaWQgMD09PWg/LTE6aDttPXZvaWQgMD09PW0/LTE6bTtpZihpaChFKSl7dmFyIGw9bmV3IGlnKEUsYixhLC0xLGMsZyk7bC5tYT1waChsLnUpO2U9Ui5nKCk7MDxoJiYtMT09bC5BJiYobC5BPWgpOzA8PW0mJihsLkRhPW0pO2wuQ2E9ZnVuY3Rpb24ocSl7Zm9yKHZhciBwPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7Kyt0KXBbdF09YXJndW1lbnRzW3RdO3JldHVybiBuLkliLmFwcGx5KG4scihwKSl9O2wuQ2I9ZnVuY3Rpb24ocSl7Zm9yKHZhciBwPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7Kyt0KXBbdF09YXJndW1lbnRzW3RdO3JldHVybiBuLklhLmFwcGx5KG4scihwKSl9OzEzIT1jJiYobC5tPW1oKGIpLGwuZ2I9RGgoYiksbC5BYT1uaChiKSk7ZiYmKGwudGI9ITApO2JkKGUuYSxcIm9zZWlkXCIsWWYodGhpcy5hKSk7WC5hLnB1c2gobCk7KytZLmEuVmE7ZS5iP3RoaXMuSWEobCxlLmIpOigoYj1MZy5nKCkuYSkmJlFmKGwsYiksVWgodGhpcyksZS5ifHwoZD8oWGgobCksbC5lYSgpKTphJiZHaChhLGZ1bmN0aW9uKCl7bC5jYSgpfHwoWGgobCksbC5lYSgpKX0sZnVuY3Rpb24ocSxwLHQpe3hlKHEscCx0LDEzMCl9KSxZLmh8fFkuZigpKSl9fTtmdW5jdGlvbiBXaChhKXtZaChhKTtXZihhLmEsZnVuY3Rpb24oYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZF09YXJndW1lbnRzW2RdO3JldHVybiBhLk5iLmFwcGx5KGEscihjKSl9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuaH0sZnVuY3Rpb24oYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZF09YXJndW1lbnRzW2RdO3JldHVybiBhLk1iLmFwcGx5KGEscihjKSl9KX1mdW5jdGlvbiBaaChhKXtSLmcoKTt2YXIgYj1PaCgzODIpLGM9W3JoLmcoKV07Ynx8Yy5wdXNoKHNoLmcoKSk7Yj1bV2cuZygpXTtyZXR1cm5bbmV3IE5nKGMpLG5ldyBWZyhhKSxuZXcgTmcoYildfWZ1bmN0aW9uIFVoKGEpe2lmKCFhLmYpe2EuZj0hMDt0cnl7dmFyIGI9SygpLGM9VS5nKCk7Ui5nKCkuaT05NDcxOTA1NDI7aWYoVmgoYSkpe1kuYS5XYT1YZihhLmEpO3ZhciBkPUxnLmcoKTtpZihudWxsPT1kLmIpe3ZhciBlPVpoKGIpO2QuYj1lfWlmKE1nKGQsZnVuY3Rpb24oZyl7cmV0dXJuICRoKGEsZyl9KSl7aWYoIVkuZG9uZSl7bGgoKTtjLm09ITA7V2goYSk7dmFyIGY7KGY9VS5nKCkuZnx8eihBLFwiQ3JLZXlcIil8fHooQSxcIlBsYXlTdGF0aW9uXCIpfHx6KEEsXCJSb2t1XCIpfHxJZSgpfHx6KEEsXCJYYm94XCIpfHxKZSgpfHxLZSgpKXx8KFEoKSxmPTAhPT1uZCgpKTtmPyhhaCgpLGtoKCksYWkoYSksTmMoKSk6JGgoYSxcInB2XCIpfX1lbHNlICRoKGEsXCJpXCIpfWVsc2UgYmkoYSxcImNcIil9Y2F0Y2goZyl7dGhyb3cgJGgoYSxcInhcIiksSWcoKSxnO319fWZ1bmN0aW9uIGFpKGEpe2lmKC0xPT1ZLmEuc2Epe0soKTt2YXIgYj0yPT1ZZihhLmEpO2NoKGIpO1EoKS5zZXRUaW1lb3V0KGxlKDEzMSxmdW5jdGlvbigpe2JpKGEsXCJ0XCIpfSksMzZFNSk7WS5hLnNhPVQoKS1xZX19ZnVuY3Rpb24gJGgoYSxiKXtSLmcoKS5iPWI7Zm9yKHZhciBjPWZhKFguYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZC52YWx1ZS5sPSEwO2JpKGEsYiwhMSl9ZnVuY3Rpb24gYmkoYSxiLGMpe2M9dm9pZCAwPT09Yz8hMDpjO2lmKCFZLmRvbmUpe1kuYy5jYW5jZWwoKTthLmF8fChhLmE9bmV3IFVmKTtpZigyPT1ZZihhLmEpfHxhLmMpZm9yKGE9WC5hLGMmJjA8YS5sZW5ndGgmJmVoKFksYSwhMCksYz1mYShhKSxhPWMubmV4dCgpOyFhLmRvbmU7YT1jLm5leHQoKSl7YT1hLnZhbHVlO3ZhciBkPXt9O2xnKGEsMSwoZC5yPWIsZCkpO2EuYSYmYS5hLk4oKX1ZLmRvbmU9ITB9fWZ1bmN0aW9uIFZoKGEpe2lmKCFpaChLKCkpKXJldHVybiExO3ZhciBiPW5ldyBVZjtpZighKGIuYXx8Yi5ifHxiLmMpKXJldHVybiExO2EuYT1iO3JldHVybiEwfWsuSWE9ZnVuY3Rpb24oYSxiKXthLmw9ITA7dmFyIGM9e307bGcoYSwyLChjLnI9YixjKSk7YS5hJiZhLmEuTigpfTtrLkliPWZ1bmN0aW9uKGEpe2EmJlcoYS5jKSYmKDA+PVJlKFBmKGEpKT8wOnBnKGEpJiYhYS5tYikmJihFYyhhLkcpLGEubWI9ITApfTtmdW5jdGlvbiBjaShhLGIpe2lmKGImJmIuZGF0YSYmYi5zb3VyY2Upe3ZhciBjPWIuZGF0YTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGMpdmFyIGQ9bnVsbDtlbHNle2Q9e307Yz1jLnNwbGl0KFwiXFxuXCIpO2Zvcih2YXIgZT0wO2UhPWMubGVuZ3RoOysrZSl7dmFyIGY9Y1tlXSxnPWYuaW5kZXhPZihcIj1cIik7aWYoISgwPj1nKSl7dmFyIGg9TnVtYmVyKGYuc3Vic3RyKDAsZykpO2Y9Zi5zdWJzdHIoZysxKTtzd2l0Y2goaCl7Y2FzZSAzNjpjYXNlIDg6Y2FzZSAxMTpjYXNlIDE2OmNhc2UgNTpjYXNlIDE4OmY9XCJ0cnVlXCI9PWY7YnJlYWs7Y2FzZSA0OmNhc2UgMzM6Y2FzZSA2OmNhc2UgMjU6Y2FzZSAyODpjYXNlIDI5OmNhc2UgMjQ6Y2FzZSAzMTpjYXNlIDMwOmNhc2UgMjM6Y2FzZSAyMjpjYXNlIDc6Y2FzZSAyMTpjYXNlIDIwOmY9TnVtYmVyKGYpO2JyZWFrO2Nhc2UgMzppZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZGVjb2RlVVJJQ29tcG9uZW50KXRyeXtmPWRlY29kZVVSSUNvbXBvbmVudChmKX1jYXRjaChtKXt0aHJvdyBFcnJvcihcIkVycm9yOiBVUkkgbWFsZm9ybWVkOiBcIitmKTt9fWRbaF09Zn19ZD1kWzBdP2Q6bnVsbH1pZihjPWQpaWYoZT1jWzBdLEhhKFwiZ29vZ19jcmVhdGl2ZV9sb2FkZWQgZ29vZ19kb21fY29udGVudF9sb2FkZWQgZ29vZ19saXN0ZW5lcl9zdGF0dXMgZ29vZ19wcm92aWRlX21vZGUgZ29vZ19yZXF1ZXN0X21vbml0b3JpbmcgZ29vZ19zdG9wX21vbml0b3JpbmdcIi5zcGxpdChcIiBcIiksZSkmJihkPUVnKG5ldyBrZChjWzRdLGNbMTJdKSkpKWlmKGg9Y1szM10sMDxoJiYtMT09ZC5wYSYmKGQucGE9aCksXCJnb29nX3N0b3BfbW9uaXRvcmluZ1wiPT09ZSlLZyhkKTtlbHNlIGlmKEhhKGQuUCxiLnNvdXJjZSl8fGQuUC5wdXNoKGIuc291cmNlKSxcImdvb2dfcmVxdWVzdF9tb25pdG9yaW5nXCI9PT1lfHwhZC52YilpZihkLnZiPSEwLHZvaWQgMCE9PWNbMTZdJiYoZC5aPSEhY1sxNl0pLHZvaWQgMCE9PWNbNl0pe2I9Y1s2XTtjPWRpKGIsZC51KTtpZihjIT1kLnUpe2lmKDU9PWMpe2QubD0hMDtLZyhkKTtyZXR1cm59ZC51PWM7ZC5tYT1waChjKX00PT1iJiZkLmVhKCk7Yj1VLmcoKTtjPW9nKGQsXCJnb29nX2Fja25vd2xlZGdlX21vbml0b3JpbmdcIik7Y1s4XT1iLmM7Y1szNl09Yi5BO0hlKGQuYi5iLGMsZC5QKTtiPVIuZygpO2QubCYmYi5iPyhhLklhKGQsYi5iKSxLZyhkKSk6YS5jPSEwfX19ZnVuY3Rpb24gWGgoYSl7aWYoYSYmbmcoYSkuYygpKXt2YXIgYj1vZyhhLFwiZ29vZ19nZXRfbW9kZVwiKTtIZShhLmIuYixiKX19ZnVuY3Rpb24gWWgoYSl7aWYoIWEuaSl7eGUoRSxcIm1lc3NhZ2VcIixmdW5jdGlvbihjKXtyZXR1cm4gY2koYSxjKX0sMTMyKTt2YXIgYj1laSgpLmNvbnRlbnRXaW5kb3c7YiYmeGUoYixcIm1lc3NhZ2VcIixmdW5jdGlvbihjKXtyZXR1cm4gY2koYSxjKX0sMTMyKTthLmk9ITB9fWZ1bmN0aW9uIGZpKGEpe3hlKEsoKSxcInVubG9hZFwiLGZ1bmN0aW9uKCl7YmkoYSxcInVcIil9LDEzMyl9ZnVuY3Rpb24gZGkoYSxiKXtyZXR1cm4gRmEoWzUsMiw0LDMsMSwwXSxmdW5jdGlvbihjKXtyZXR1cm4gYz09PWF8fGM9PT1ifSl8fDB9ay5LYj1mdW5jdGlvbihhKXsoYT1GZyhhKSkmJktnKGEpfTtrLkxiPWZ1bmN0aW9uKGEsYil7YSYmYiYmc2EoYSkmJjE9PWEubm9kZVR5cGUmJnNhKGIpJiYxPT1iLm5vZGVUeXBlJiYoYT1GZyhhKSkmJihLKCksT2YoYSksYS5iLmE9YixUZihhKSxqZyhhLGIpLGEuYSYmKGE9YS5hLGEuTigpLGEuYz1iLGEudmEoKSxhLlIoKSkpfTtmdW5jdGlvbiBlaSgpe3ZhciBhPW5jKFwiSUZSQU1FXCIse2lkOlwiZ29vZ2xlX29zZF9zdGF0aWNfZnJhbWVfXCIrTWF0aC5mbG9vcigxRTEzKk1hdGgucmFuZG9tKCkpLG5hbWU6XCJnb29nbGVfb3NkX3N0YXRpY19mcmFtZVwifSk7YS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO2Euc3R5bGUud2lkdGg9XCIwcHhcIjthLnN0eWxlLmhlaWdodD1cIjBweFwiO0UuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtyZXR1cm4gYX1mdW5jdGlvbiBSaChhKXt2YShcIkdvb2dfT3NkX1VubG9hZEFkQmxvY2tcIixsZSgxMzQsZnVuY3Rpb24oYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZF09YXJndW1lbnRzW2RdO3JldHVybiBhLktiLmFwcGx5KGEscihjKSl9KSk7dmEoXCJHb29nX09zZF9VcGRhdGVFbGVtZW50VG9NZWFzdXJlXCIsbGUoMTM1LGZ1bmN0aW9uKGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoOysrZCljW2RdPWFyZ3VtZW50c1tkXTtyZXR1cm4gYS5MYi5hcHBseShhLHIoYykpfSkpfTtnZSgxNTUsZnVuY3Rpb24oKXtTaCgpO3ZhciBhPW5ldyBRaDtZLmk9XCJvc2RcIjtmaShhKTtPYygpP2EuaGIoKTooVGgoYSkseGUoSygpLFwibG9hZFwiLGZ1bmN0aW9uKCl7USgpLnNldFRpbWVvdXQobGUoMTUzLGZ1bmN0aW9uKGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoOysrZCljW2RdPWFyZ3VtZW50c1tkXTtyZXR1cm4gYS5oYi5hcHBseShhLHIoYykpfSksMTAwKX0sMTU0KSl9KTt9KS5jYWxsKHRoaXMsdGhpcyx0aGlzLmRvY3VtZW50KTtcbiJ9LCAiaGVhZGVyc1NpemUiOiAxNjIzLCAiYm9keVNpemUiOiAyNzQ3OCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMjkxMDF9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDE1LCAiY29ubmVjdCI6IDcuOTE1LCAic3NsIjogMTAuOTc1LCAic2VuZCI6IDAsICJ3YWl0IjogODc3Ljg1NSwgInJlY2VpdmUiOiAxNjcuNzY1fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjNaIiwgInRpbWUiOiAxMDA2LjY2OCwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9iaWQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDY5LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiODNEYTdvX2FGbkdZT0dSeFdvZ3hlSkZUZVhmemVVSzNVc2x0dWJyeEpmay0xNjg0OTQyODc2LTAtQVN5SnFNQ0dzN3pRRWIveXpCbmhpVllXTm9mYnBFN1FjRDBySUxLMzdCMGpwMzZvRzhxYmptLy9tb1ZlSzRYWWszSVBWTjF0Y1MrMXZrSWZia1BFbElzPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGMwYmNkMThlNi1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1Vek5wMzl3a2FrOGRzSjNSSFZtMXNnTEo2NW56dFZKSDlDbW5FOUt0RnVTMVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPTgzRGE3b19hRm5HWU9HUnhXb2d4ZUpGVGVYZnplVUszVXNsdHVicnhKZmstMTY4NDk0Mjg3Ni0wLUFTeUpxTUNHczd6UUViL3l6Qm5oaVZZV05vZmJwRTdRY0QwcklMSzM3QjBqcDM2b0c4cWJqbS8vbW9WZUs0WFlrM0lQVk4xdGNTKzF2a0lmYmtQRWxJcz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNiBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYmlkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVV6TnAzOXdrYWs4ZHNKM1JIVm0xc2dMSjY1bnp0VkpIOUNtbkU5S3RGdVMxIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogNjYsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiYXNKU09OUENCXzE1OTg3NDI0MTQzMTgoe1wiaWRcIjpcIjA3ODQ4MjQ3NVwiLFwiZXh0XCI6e1wiaWlkXCI6MTMzOTI2Mjl9fSkifSwgImhlYWRlcnNTaXplIjogMTYxMSwgImJvZHlTaXplIjogMTExLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNzIyfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAwLCAiY29ubmVjdCI6IDEwLjU3MiwgInNzbCI6IDExLjU3MiwgInNlbmQiOiAwLCAid2FpdCI6IDk4MS45ODMsICJyZWNlaXZlIjogMi41NDF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyM1oiLCAidGltZSI6IDg5NC4xODIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvanB0IiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ2OSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIkxrS0lHaXpTYnBNMlZrWkUzVmJmaERPT3VhejNSMHo5NXl2MU9UcXUwazQtMTY4NDk0Mjg3Ny0wLUFZZ1V5bEdSQWV0ZHlVbW1tb3dlZU02RVUySFl0eFZXaCtNU2VmWGZYWHpEcGlVSmVmaWd2Ujc3YlMzVTVUMHN5SDhIb0l2dFdGbk5VeDE5STdDSmVaYz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDUxYzliMzMwZjktRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtTGVuZ3RoIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlwiUW1iRk1rZTFLWHFuWXlCQld4Qjc0TjRjNVNCbkpNVkFpTU5SY0d1NngxQXdRSFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPUxrS0lHaXpTYnBNMlZrWkUzVmJmaERPT3VhejNSMHo5NXl2MU9UcXUwazQtMTY4NDk0Mjg3Ny0wLUFZZ1V5bEdSQWV0ZHlVbW1tb3dlZU02RVUySFl0eFZXaCtNU2VmWGZYWHpEcGlVSmVmaWd2Ujc3YlMzVTVUMHN5SDhIb0l2dFdGbk5VeDE5STdDSmVaYz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvanB0In0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJGTWtlMUtYcW5ZeUJCV3hCNzRONGM1U0JuSk1WQWlNTlJjR3U2eDFBd1FIIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW4iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIifSwgImhlYWRlcnNTaXplIjogMTU1NiwgImJvZHlTaXplIjogMCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTU1Nn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDg5Mi45OTEsICJyZWNlaXZlIjogMS4xOTF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyM1oiLCAidGltZSI6IDkyMi42MDQsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvanB0KDEpIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ3MiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIkdjVkdMUWN4U1pfY1M0eTQwaW9GYVhTc0xoZ3J4ZmFGdlF1LmE3c3pBbE0tMTY4NDk0Mjg3Ny0wLUFSTXZYOVV0bXI2eEZlOHViZWl1WmtOc0NWUVlsVXorei9QMHdXT0xzRi81Y2dPWkR4SHhIZU5hM0kzN2I0RWZGa3dFd1k5b3pBbnpSUVNBN0xnelpvdz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDUxZGJkMjkyNWMtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtTGVuZ3RoIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlwiUW1iRk1rZTFLWHFuWXlCQld4Qjc0TjRjNVNCbkpNVkFpTU5SY0d1NngxQXdRSFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPUdjVkdMUWN4U1pfY1M0eTQwaW9GYVhTc0xoZ3J4ZmFGdlF1LmE3c3pBbE0tMTY4NDk0Mjg3Ny0wLUFSTXZYOVV0bXI2eEZlOHViZWl1WmtOc0NWUVlsVXorei9QMHdXT0xzRi81Y2dPWkR4SHhIZU5hM0kzN2I0RWZGa3dFd1k5b3pBbnpSUVNBN0xnelpvdz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvanB0KDEpIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJGTWtlMUtYcW5ZeUJCV3hCNzRONGM1U0JuSk1WQWlNTlJjR3U2eDFBd1FIIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW4iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIifSwgImhlYWRlcnNTaXplIjogMTU1OSwgImJvZHlTaXplIjogMCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTU1OX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDkyMS4xMjgsICJyZWNlaXZlIjogMS40NzZ9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyM1oiLCAidGltZSI6IDg3NS4xNTUsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvanB0KDIpIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ3MiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogImRoMmNVdktsM2RKN1BDeTVUelVWZEhhRUxtSjF3Qk9qZzNoaXd5ckk2UFktMTY4NDk0Mjg3Ny0wLUFTS01qczBNbm92YVU3RE9jd1pUdkpqTTM5dE5tTjNHYlQ3ZUgyVTBsR1BGeE11dXhjVGR2K0FxTE9SRGRIWmRVZWpWdVMrQXBxNlNwMmhLV0t4aDJOWT0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDUyMGMwNDVjN2EtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtTGVuZ3RoIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlwiUW1iRk1rZTFLWHFuWXlCQld4Qjc0TjRjNVNCbkpNVkFpTU5SY0d1NngxQXdRSFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPWRoMmNVdktsM2RKN1BDeTVUelVWZEhhRUxtSjF3Qk9qZzNoaXd5ckk2UFktMTY4NDk0Mjg3Ny0wLUFTS01qczBNbm92YVU3RE9jd1pUdkpqTTM5dE5tTjNHYlQ3ZUgyVTBsR1BGeE11dXhjVGR2K0FxTE9SRGRIWmRVZWpWdVMrQXBxNlNwMmhLV0t4aDJOWT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvanB0KDIpIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJGTWtlMUtYcW5ZeUJCV3hCNzRONGM1U0JuSk1WQWlNTlJjR3U2eDFBd1FIIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW4iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIifSwgImhlYWRlcnNTaXplIjogMTU1OSwgImJvZHlTaXplIjogMCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTU1OX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDg3My4zNjYsICJyZWNlaXZlIjogMS43ODl9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyNFoiLCAidGltZSI6IDE5NDkuNjI1LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2pwdCgzKSIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0NzIsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJGZlhJU1lGOTJZU2lDMWl0UkwuSWtSWWJKcFl4cWpISU9nbGN5SC5PMHZBLTE2ODQ5NDI4NzctMC1BYWtJcVYwZXdraXRDQktIby9aNHNNYXZWME9QcFNXZmFodWMwV0VVN01Zb2o2YzYrNUV5Zkp0MFpYajAwcXBuaGFkQ25kc1hjQk92WHJHbUM2bkQxejA9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1MjNiNGMxOGU2LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbWFuaURrNkh5cW00dGNGTktnWkh5eTJncnlpUFRuSzhGbnFCb0R1UjZDN014XCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09RmZYSVNZRjkyWVNpQzFpdFJMLklrUlliSnBZeHFqSElPZ2xjeUguTzB2QS0xNjg0OTQyODc3LTAtQWFrSXFWMGV3a2l0Q0JLSG8vWjRzTWF2VjBPUHBTV2ZhaHVjMFdFVTdNWW9qNmM2KzVFeWZKdDBaWGowMHFwbmhhZENuZHNYY0JPdlhyR21DNm5EMXowPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE3IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9qcHQoMykifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtYW5pRGs2SHlxbTR0Y0ZOS2daSHl5MmdyeWlQVG5LOEZucUJvRHVSNkM3TXgifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA1NiwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJhc0pTT05QQ0JfMTU5ODc0MjQxNDMxNCh7XCJyZXN1bHRcIjp7XCJjcG1cIjowLjAsXCJhZFwiOlwiXCJ9fSk7In0sICJoZWFkZXJzU2l6ZSI6IDE2MTQsICJib2R5U2l6ZSI6IDk4LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNzEyfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogOTUxLjQ5MiwgInJlY2VpdmUiOiA5OTguMTMzfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjRaIiwgInRpbWUiOiAxOTk4LjI5NSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9qcHQoNCkiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDcyLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiWjN0UzV5WVNiX1dvb3AyNG0uWFA5QVc4V0pGYkdvaVVpdE5wdi5MaWVFQS0xNjg0OTQyODc3LTAtQWFRamhmNjVSNEVqTm0veVYwSy9WVWwzT1k5d01wMVE2L00xVDV1WFpGdThOOUtCZlc1N0pDWDFyUEQ0c3p0T3JNbHVOVU84Lzdya2w2cGQ5UGF0WXVVPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NTI5YzkzOWI4ZS1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE3IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1UbndzYVdWY3czSkdGMmRDc2lmdVdUcnVZTGRxako2M0ZORTZOQ29oNXl6NlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVozdFM1eVlTYl9Xb29wMjRtLlhQOUFXOFdKRmJHb2lVaXROcHYuTGllRUEtMTY4NDk0Mjg3Ny0wLUFhUWpoZjY1UjRFak5tL3lWMEsvVlVsM09ZOXdNcDFRNi9NMVQ1dVhaRnU4TjlLQmZXNTdKQ1gxclBENHN6dE9yTWx1TlVPOC83cmtsNnBkOVBhdFl1VT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvanB0KDQpIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVRud3NhV1ZjdzNKR0YyZENzaWZ1V1RydVlMZHFqSjYzRk5FNk5Db2g1eXo2In0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogNTYsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiYXNKU09OUENCXzE1OTg3NDI0MTQzMTMoe1wicmVzdWx0XCI6e1wiY3BtXCI6MC4wLFwiYWRcIjpcIlwifX0pOyJ9LCAiaGVhZGVyc1NpemUiOiAxNjE0LCAiYm9keVNpemUiOiA5OCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTcxMn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDk0MC42NDUsICJyZWNlaXZlIjogMTA1Ny42NX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI0WiIsICJ0aW1lIjogMTQ3NC44MzAwMDAwMDAwMDAyLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2pwdCg1KSIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0NzIsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJoYnlEZ1NNdnJZazFOc0VBdTlOZW9MMDU4aEhEcGkuOVVaUk9GRjBYTXdvLTE2ODQ5NDI4NzYtMC1BYVN2NTdhT0Q5S0F2UmQ3NEtjaHdzSEJLeTFUSmlteUhPeXVRTVJHSlV5ZVpwL3ViZFlnMGk5cHRqN0NpVVFoTm81N3Y3V3Y0MXQydlRlaEF0MThCVDA9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQxIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NTUwOTc4MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1URm04S0hNQWZiTWlIN3hhRnpUM2RVRmdwVGRrSnA4SEdwc1lnSHpQNmlCS1wiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPWhieURnU012cllrMU5zRUF1OU5lb0wwNThoSERwaS45VVpST0ZGMFhNd28tMTY4NDk0Mjg3Ni0wLUFhU3Y1N2FPRDlLQXZSZDc0S2Nod3NIQkt5MVRKaW15SE95dVFNUkdKVXllWnAvdWJkWWcwaTlwdGo3Q2lVUWhObzU3djdXdjQxdDJ2VGVoQXQxOEJUMD07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNiBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvanB0KDUpIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVRGbThLSE1BZmJNaUg3eGFGelQzZFVGZ3BUZGtKcDhIR3BzWWdIelA2aUJLIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA1NiwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJhc0pTT05QQ0JfMTU5ODc0MjQxNDMxMih7XCJyZXN1bHRcIjp7XCJjcG1cIjowLjAsXCJhZFwiOlwiXCJ9fSk7In0sICJoZWFkZXJzU2l6ZSI6IDE2MjQsICJib2R5U2l6ZSI6IDkzLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNzE3fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzIuOTMsICJyZWNlaXZlIjogMTQ0MS45fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjVaIiwgInRpbWUiOiAxNTE1Ljg2LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2hlYWRlcnRhZyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0NzUsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI2T1FBUFJ4X29fc1ZEWTJzVHhpOTRMMS5nSVQxLnE2cFNMNFk3T0ZJMmFZLTE2ODQ5NDI4NzctMC1BWnAxU2F6cUlobXIra3NMVDVNMHU3cFZTaTRKb01IT1E2SGMvREw3Y0VaeUwwYm5scHNSR1pLK0V6OU5vaS9NVy9nTFU2K1B5MUpqZDAwdG83dnBwaVk9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQyIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NTUzOWI1MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE3IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1jN29tNnU1dWZOaVY3S0doVE5rSFZTcmZHTG5ndzNFaHdzQjliemVnRkw3TlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPTZPUUFQUnhfb19zVkRZMnNUeGk5NEwxLmdJVDEucTZwU0w0WTdPRkkyYVktMTY4NDk0Mjg3Ny0wLUFacDFTYXpxSWhtcitrc0xUNU0wdTdwVlNpNEpvTUhPUTZIYy9ETDdjRVp5TDBibmxwc1JHWksrRXo5Tm9pL01XL2dMVTYrUHkxSmpkMDB0bzd2cHBpWT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvaGVhZGVydGFnIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWM3b202dTV1Zk5pVjdLR2hUTmtIVlNyZkdMbmd3M0Vod3NCOWJ6ZWdGTDdOIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyNTU4LCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsICJjb21wcmVzc2lvbiI6IDE3MjcsICJ0ZXh0IjogInZhciBPUEVOX01BUktFVD1cIklPTVwiO3ZhciBQUklWQVRFX01BUktFVD1cIklQTVwiO2Z1bmN0aW9uIGN5Z251c19pbmRleF9wYXJzZV9yZXMocmVzcG9uc2Upe3RyeXtpbmRleF9zbG90cz1bXTtpZihyZXNwb25zZSl7aWYodHlwZW9mIF9JbmRleFJlcXVlc3REYXRhIT09XCJvYmplY3RcInx8dHlwZW9mIF9JbmRleFJlcXVlc3REYXRhLmltcElEVG9TbG90SUQhPT1cIm9iamVjdFwifHx0eXBlb2YgX0luZGV4UmVxdWVzdERhdGEuaW1wSURUb1Nsb3RJRFtyZXNwb25zZS5pZF09PT1cInVuZGVmaW5lZFwiKXtyZXR1cm59dmFyIHRhcmdldE1vZGU9MDt2YXIgY2FsbGJhY2tGbjtpZih0eXBlb2YgX0luZGV4UmVxdWVzdERhdGEucmVxT3B0aW9ucz09PVwib2JqZWN0XCImJnR5cGVvZiBfSW5kZXhSZXF1ZXN0RGF0YS5yZXFPcHRpb25zW3Jlc3BvbnNlLmlkXT09PVwib2JqZWN0XCIpe2lmKHR5cGVvZiBfSW5kZXhSZXF1ZXN0RGF0YS5yZXFPcHRpb25zW3Jlc3BvbnNlLmlkXS5jYWxsYmFjaz09PVwiZnVuY3Rpb25cIil7Y2FsbGJhY2tGbj1fSW5kZXhSZXF1ZXN0RGF0YS5yZXFPcHRpb25zW3Jlc3BvbnNlLmlkXS5jYWxsYmFja31pZih0eXBlb2YgX0luZGV4UmVxdWVzdERhdGEucmVxT3B0aW9uc1tyZXNwb25zZS5pZF0udGFyZ2V0TW9kZT09PVwibnVtYmVyXCIpe3RhcmdldE1vZGU9X0luZGV4UmVxdWVzdERhdGEucmVxT3B0aW9uc1tyZXNwb25zZS5pZF0udGFyZ2V0TW9kZX19X0luZGV4UmVxdWVzdERhdGEubGFzdFJlcXVlc3RJRD1yZXNwb25zZS5pZDt2YXIgYWxsQmlkcz1bXTt2YXIgc2VhdGJpZExlbmd0aD10eXBlb2YgcmVzcG9uc2Uuc2VhdGJpZD09PVwidW5kZWZpbmVkXCI/MDpyZXNwb25zZS5zZWF0YmlkLmxlbmd0aDtmb3IodmFyIGk9MDtpPHNlYXRiaWRMZW5ndGg7aSsrKXtmb3IodmFyIGo9MDtqPHJlc3BvbnNlLnNlYXRiaWRbaV0uYmlkLmxlbmd0aDtqKyspe3ZhciBiaWQ9cmVzcG9uc2Uuc2VhdGJpZFtpXS5iaWRbal07aWYodHlwZW9mIGJpZC5leHQhPT1cIm9iamVjdFwifHx0eXBlb2YgYmlkLmV4dC5wcmljZWxldmVsIT09XCJzdHJpbmdcIil7Y29udGludWV9aWYodHlwZW9mIF9JbmRleFJlcXVlc3REYXRhLmltcElEVG9TbG90SURbcmVzcG9uc2UuaWRdW2JpZC5pbXBpZF09PT1cInVuZGVmaW5lZFwiKXtjb250aW51ZX12YXIgc2xvdElEPV9JbmRleFJlcXVlc3REYXRhLmltcElEVG9TbG90SURbcmVzcG9uc2UuaWRdW2JpZC5pbXBpZF07aWYodHlwZW9mIF9JbmRleFJlcXVlc3REYXRhLnRhcmdldElEVG9CaWQ9PT1cInVuZGVmaW5lZFwiKXtfSW5kZXhSZXF1ZXN0RGF0YS50YXJnZXRJRFRvQmlkPXt9fXZhciB0YXJnZXRJRDt2YXIgdGFyZ2V0UHJlZml4O2lmKHR5cGVvZiBiaWQuZXh0LmRlYWxpZD09PVwic3RyaW5nXCIpe2lmKHRhcmdldE1vZGU9PT0xKXt0YXJnZXRJRD1zbG90SUQrYmlkLmV4dC5wcmljZWxldmVsfWVsc2V7dGFyZ2V0SUQ9c2xvdElEK1wiX1wiK2JpZC5leHQuZGVhbGlkfXRhcmdldFByZWZpeD1QUklWQVRFX01BUktFVCtcIl9cIn1lbHNle3RhcmdldElEPXNsb3RJRCtiaWQuZXh0LnByaWNlbGV2ZWw7dGFyZ2V0UHJlZml4PU9QRU5fTUFSS0VUK1wiX1wifWluZGV4X3Nsb3RzLnB1c2godGFyZ2V0UHJlZml4K3RhcmdldElEKTtpZihfSW5kZXhSZXF1ZXN0RGF0YS50YXJnZXRJRFRvQmlkW3RhcmdldElEXT09PXVuZGVmaW5lZCl7X0luZGV4UmVxdWVzdERhdGEudGFyZ2V0SURUb0JpZFt0YXJnZXRJRF09W2JpZC5hZG1dfWVsc2V7X0luZGV4UmVxdWVzdERhdGEudGFyZ2V0SURUb0JpZFt0YXJnZXRJRF0ucHVzaChiaWQuYWRtKX12YXIgaW1wQmlkPXt9O2ltcEJpZC5pbXByZXNzaW9uSUQ9YmlkLmltcGlkO2lmKHR5cGVvZiBiaWQuZXh0LmRlYWxpZCE9PVwidW5kZWZpbmVkXCIpe2ltcEJpZC5kZWFsSUQ9YmlkLmV4dC5kZWFsaWR9aW1wQmlkLmJpZD1iaWQucHJpY2U7aW1wQmlkLnNsb3RJRD1zbG90SUQ7aW1wQmlkLnByaWNlTGV2ZWw9YmlkLmV4dC5wcmljZWxldmVsO2ltcEJpZC50YXJnZXQ9dGFyZ2V0UHJlZml4K3RhcmdldElEO2FsbEJpZHMucHVzaChpbXBCaWQpfX1pZih0eXBlb2YgY2FsbGJhY2tGbj09PVwiZnVuY3Rpb25cIil7aWYoYWxsQmlkcy5sZW5ndGg9PT0wKXtjYWxsYmFja0ZuKHJlc3BvbnNlLmlkKX1lbHNle2NhbGxiYWNrRm4ocmVzcG9uc2UuaWQsYWxsQmlkcyl9fX19Y2F0Y2goZSl7fWlmKHR5cGVvZiB3aW5kb3cuY3lnbnVzX2luZGV4X3JlYWR5X3N0YXRlPT09XCJmdW5jdGlvblwiKXt3aW5kb3cuY3lnbnVzX2luZGV4X3JlYWR5X3N0YXRlKCl9fWZ1bmN0aW9uIGluZGV4X3JlbmRlcihkb2MsdGFyZ2V0SUQpe2lmKHR5cGVvZiBpbmRleF9kZW1hbmQ9PT1cInVuZGVmaW5lZFwiKXtpbmRleF9kZW1hbmQ9e319dmFyIHNsb3RQYXJ0cz10YXJnZXRJRC5zcGxpdChcIl9cIik7dmFyIHNsb3RJRD1zbG90UGFydHNbMF07dHJ5e3ZhciBhZD1fSW5kZXhSZXF1ZXN0RGF0YS50YXJnZXRJRFRvQmlkW3RhcmdldElEXS5wb3AoKTtpZihhZCE9bnVsbCl7ZG9jLndyaXRlKGFkKTtpbmRleF9kZW1hbmRbc2xvdElEXT0xfWVsc2V7fX1jYXRjaChlKXt9fTtjeWdudXNfaW5kZXhfcGFyc2VfcmVzKHtcImlkXCI6IFwiNTExNTkwODM4XCJ9KTsifSwgImhlYWRlcnNTaXplIjogMTYyNywgImJvZHlTaXplIjogODMxLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAyNDU4fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzkuMjU0LCAicmVjZWl2ZSI6IDE0NzYuNjA2fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjVaIiwgInRpbWUiOiAxNTYwLjkxNCwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zb3Zybl9zdGFuZGFsb25lX2JlYWNvbi5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1MDEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJ5dzdCUTFUaVVGdmVZdUM3N2tzd1BoTG5kaHYxQXg2WEZvRHhOS3lEcTRrLTE2ODQ5NDI4NzctMC1BZXBUVUExMlFFRk40UjczVi9tOVFOYWZxRlNYaHo4MVNVSnVyOHBWWTRJQXdDN3ZkNm50QzFyRlZ4M3NZeGNVTXdjeXRWdDRYSXdyQWJ1M3VqWmg2ODg9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQyIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NTU3YTAwMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE3IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1iWmJMc0tWZ2ZYV2pLVzJDM0dLZ3hkQkppcmtycFlhYVBzcEJjYnVtQ3h5TFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPXl3N0JRMVRpVUZ2ZVl1Qzc3a3N3UGhMbmRodjFBeDZYRm9EeE5LeURxNGstMTY4NDk0Mjg3Ny0wLUFlcFRVQTEyUUVGTjRSNzNWL205UU5hZnFGU1hoejgxU1VKdXI4cFZZNElBd0M3dmQ2bnRDMXJGVngzc1l4Y1VNd2N5dFZ0NFhJd3JBYnUzdWpaaDY4OD07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc292cm5fc3RhbmRhbG9uZV9iZWFjb24uanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtYlpiTHNLVmdmWFdqS1cyQzNHS2d4ZEJKaXJrcnBZYWFQc3BCY2J1bUN4eUwifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDYxMjEsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMzc2MSwgInRleHQiOiAiLyogc292cm5fc3RuZGFsbmVfYmVhY29uIHYwLjAuMSBcblVwZGF0ZWQgOiAyMDIwLTA0LTA3ICovXG53aW5kb3cuc292cm49d2luZG93LnNvdnJufHx7fSxzb3Zybi5hdWN0aW9uPXNvdnJuLmF1Y3Rpb258fHt9O2xldCBiZWFjb25GbGFnPSExLGNtcFZlcnNpb249MDtzb3Zybi5hdWN0aW9uPXtkb05vdFRyYWNrOmZ1bmN0aW9uKG4sdCl7bj1ufHxuYXZpZ2F0b3IsdD10fHx3aW5kb3c7dmFyIGU9c292cm4uYXVjdGlvbi5yZWFkQ29va2llKFwidHJhY2tpbmdfb3B0b3V0XCIpO3JldHVyblwieWVzXCI9PT1uLmRvTm90VHJhY2t8fFwiMVwiPT09bi5kb05vdFRyYWNrfHxcIjFcIj09PW4ubXNEb05vdFRyYWNrfHxcIjFcIj09PXQuZG9Ob3RUcmFja3x8XCIxXCI9PT1lfSxyZWFkQ29va2llOmZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uK1wiPVwiLGU9ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKSxvPTA7bzxlLmxlbmd0aDtvKyspe2Zvcih2YXIgYT1lW29dO1wiIFwiPT09YS5jaGFyQXQoMCk7KWE9YS5zdWJzdHJpbmcoMSxhLmxlbmd0aCk7aWYoMD09PWEuaW5kZXhPZih0KSlyZXR1cm4gYS5zdWJzdHJpbmcodC5sZW5ndGgsYS5sZW5ndGgpfXJldHVybiBudWxsfSxzZW5kQmVhY29uOmZ1bmN0aW9uKCl7c292cm4uYXVjdGlvbi5iZWFjb25Db25maWc9c292cm4uYXVjdGlvbi5nZXRQYXJhbXMoc292cm4uYXVjdGlvbi5nZXRTY3JpcHRUYWcoKSk7dHJ5e3ZhciBuO2lmKGJlYWNvbkZsYWcpcmV0dXJuITE7XCJzb3Zybl9iZWFjb25cIiwobj1zb3Zybi5hdWN0aW9uLmNyZWF0ZWlGcmFtZShcInNvdnJuX2JlYWNvblwiLDEsMSkpLnNyYz1zb3Zybi5hdWN0aW9uLmdldEJlYWNvblVSTCgpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksYmVhY29uRmxhZz0hMH1jYXRjaChuKXtyZXR1cm4hMX1yZXR1cm4hMH0sZ2V0UGFyYW1zOmZ1bmN0aW9uKG4pe3ZhciB0LGUsbz1uLmdldEF0dHJpYnV0ZShcImlkXCIpLGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobyk7cmV0dXJuIG51bGwhPWEmJihjdXJyZW50VGFnU1JDPWEuc3JjLGU9e30sKHQ9KHQ9Y3VycmVudFRhZ1NSQy5zcGxpdChcIj9cIilbMV18fFwiXCIpLnNwbGl0KFwiI1wiKVswXXx8XCJcIik/KHQucmVwbGFjZShuZXcgUmVnRXhwKFwiKFtePz0mXSspKD0oW14mXSopKT9cIixcImdcIiksKGZ1bmN0aW9uKG4sdCxvLGEpe3RyeXtlW3RdPWRlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChuKXtzb3Zybi5hZHMuZGJnKG4pfX0pKSxlLmN1cnJlbnRUYWc9byxlLmxvY2F0aW9uPWEucGFyZW50Tm9kZS5ub2RlTmFtZSxlKTp7fSl9LGdldFNjcmlwdFRhZzpmdW5jdGlvbigpe3ZhciBuLHQsZSxvPS9eKGh0dHBzPzopP1xcL1xcLy4qXFwubGlqaXRcXC4oY29tfGRldilcXC93d3dcXC9zb3Zybl9iZWFjb25fc3RhbmRhbG9uZVxcL3NvdnJuX3N0YW5kYWxvbmVfYmVhY29uKFxcLm1pbik/XFwuanMvaTtpZihcImN1cnJlbnRTY3JpcHRcImluIGRvY3VtZW50JiYoZT1kb2N1bWVudC5jdXJyZW50U2NyaXB0KSYmby50ZXN0KGUuc3JjKSlyZXR1cm4gZTtmb3IodD0obj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKSkubGVuZ3RoLTE7dD49MDt0LS0paWYoby50ZXN0KG5bdF0uc3JjKSlyZXR1cm4gblt0XTtyZXR1cm4gbnVsbH0sY3JlYXRlaUZyYW1lOmZ1bmN0aW9uKG4sdCxlKXt2YXIgbyxhLHIsYyxzLGk7Zm9yKHIgaW4gYT0obz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpKS5zdHlsZSxpPXttYXJnaW46XCIwcHhcIixwYWRkaW5nOlwiMHB4XCIsYm9yZGVyOlwiMHB4IG5vbmVcIix3aWR0aDp0K1wicHhcIixoZWlnaHQ6ZStcInB4XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIn0scz17aWQ6bixtYXJnaW46XCIwXCIscGFkZGluZzpcIjBcIixmcmFtZWJvcmRlcjpcIjBcIix3aWR0aDp0K1wiXCIsaGVpZ2h0OmUrXCJcIixzY3JvbGxpbmc6XCJub1wiLHNyYzpcImFib3V0OmJsYW5rXCJ9KXMuaGFzT3duUHJvcGVydHkocikmJm8uc2V0QXR0cmlidXRlKHIsc1tyXSk7Zm9yKGMgaW4gaSlpZihpLmhhc093blByb3BlcnR5KGMpKXRyeXthW2NdPWlbY119Y2F0Y2gobil7fXJldHVybiBvfSxnZXRCZWFjb25VUkw6ZnVuY3Rpb24oKXtyZXR1cm5cImh0dHBzOi8vYXAubGlqaXQuY29tL2JlYWNvbj9pbmZvcm1lcj1cIisoc292cm4uYXVjdGlvbi5iZWFjb25Db25maWcuaGFzT3duUHJvcGVydHkoXCJpaWRcIik/c292cm4uYXVjdGlvbi5iZWFjb25Db25maWcuaWlkOlwiXCIpK1wiJmdkcHJfY29uc2VudD1cIisoc292cm4uYXVjdGlvbi5nZHByQ29uc2VudHx8XCJcIikrXCImdXNfcHJpdmFjeT1cIisoc292cm4uYXVjdGlvbi5jY3BhQ29uc2VudHx8XCJcIil9LHNvdnJuUmVhZHk6ZnVuY3Rpb24obil7L2luLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpP3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7c292cm4uYXVjdGlvbi5zb3ZyblJlYWR5KG4pfSksNTApOm4oKX0sY29uZmlndXJlR2RwckFuZENjcGFDb25zZW50OmZ1bmN0aW9uKCl7Y29uc3Qgbj10aGlzO24ubG9va3VwSWFiQ29uc2VudCgoZnVuY3Rpb24odCl7c292cm4uYXVjdGlvbi5nZHByQ29uc2VudD0xPT09Y21wVmVyc2lvbj90LmdldENvbnNlbnREYXRhLmNvbnNlbnREYXRhOnQudGNTdHJpbmcsbi5jb25maWd1cmVDY3BhKCl9KSwoZnVuY3Rpb24odCl7bi5jb25maWd1cmVDY3BhKCl9KSl9LGNvbmZpZ3VyZUNjcGE6ZnVuY3Rpb24oKXtjb25zdCBuPXRoaXM7dGhpcy5sb29rdXBDY3BhQ29uc2VudCgoZnVuY3Rpb24odCl7c292cm4uYXVjdGlvbi5jY3BhQ29uc2VudD10LnVzcERhdGEsbi5zZW5kQmVhY29uKCl9KSwoZnVuY3Rpb24odCl7bi5zZW5kQmVhY29uKCl9KSl9LGNhbGxDbXBGcm9tU2FmZWZyYW1lOmZ1bmN0aW9uKG4sdCxlLG8pe3dpbmRvdy4kc2YuZXh0LnJlZ2lzdGVyKDEsMSwoZnVuY3Rpb24obixhKXtcImNtcFJldHVyblwiPT09bj9lKGFbdF0pOm8oKX0pKSx3aW5kb3cuJHNmLmV4dC5jbXAobil9LGNtcENhbGxiYWNrczp7fSxjYWxsQ21wV2hpbGVJbklmcmFtZTpmdW5jdGlvbihuLHQsZSxvKXtjb25zdCBhPTI9PT1jbXBWZXJzaW9uP1wiX190Y2ZhcGlcIjpcIl9fY21wXCIscj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksYz1gJHthfUNhbGxgLHM9e1tjXTp7Y29tbWFuZDpuLHBhcmFtZXRlcjpudWxsLGNhbGxJZDpyfX07MSE9PWNtcFZlcnNpb24mJihzW2NdLnZlcnNpb249Y21wVmVyc2lvbiksc292cm4uYXVjdGlvbi5jbXBDYWxsYmFja3Nbcl09ZSx0LnBvc3RNZXNzYWdlKHMsXCIqXCIpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChmdW5jdGlvbihuKXtjb25zdCB0PWAke2F9UmV0dXJuYDtsZXQgZT17fTt0cnl7ZT1cInN0cmluZ1wiPT10eXBlb2Ygbi5kYXRhP0pTT04ucGFyc2Uobi5kYXRhKTpuLmRhdGF9Y2F0Y2gobil7fWlmKGVbdF0mJmVbdF0uY2FsbElkKXtjb25zdCBuPWVbdF07XCJmdW5jdGlvblwiPT10eXBlb2Ygc292cm4uYXVjdGlvbi5jbXBDYWxsYmFja3Nbbi5jYWxsSWRdP3NvdnJuLmF1Y3Rpb24uY21wQ2FsbGJhY2tzW24uY2FsbElkXShuLnJldHVyblZhbHVlLG4uc3VjY2Vzcyk6byhcIkNhbGxiYWNrIG11c3QgYmUgZnVuY3Rpb24gdHlwZS5cIil9fSksITEpfSxsb29rdXBJYWJDb25zZW50OmZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShlLG8pe28mJlwic3RyaW5nXCI9PXR5cGVvZiBlLnRjU3RyaW5nP1widGNsb2FkZWRcIj09PWUuZXZlbnRTdGF0dXN8fFwidXNlcmFjdGlvbmNvbXBsZXRlXCI9PT1lLmV2ZW50U3RhdHVzfHxcImNtcHVpc2hvd25cIj09PWUuZXZlbnRTdGF0dXMmJmUudGNTdHJpbmcubGVuZ3RoPjAmJiEwPT09ZS5wdXJwb3NlT25lVHJlYXRtZW50P24oZSk6dChcIkNvbnNlbnQgc3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuXCIpOnQoXCJDTVAgdW5hYmxlIHRvIHJlZ2lzdGVyIGNhbGxiYWNrIGZ1bmN0aW9uLiAgUGxlYXNlIGNoZWNrIENNUCBzZXR1cC5cIil9Y29uc3Qgbz1mdW5jdGlvbigpe2NvbnN0IGU9e307ZnVuY3Rpb24gbygpe2UuZ2V0Q29uc2VudERhdGEmJmUuZ2V0VmVuZG9yQ29uc2VudHM/bihlKTohZS5oYXNPd25Qcm9wZXJ0eShcImdldENvbnNlbnREYXRhXCIpfHwhZS5oYXNPd25Qcm9wZXJ0eShcImdldFZlbmRvckNvbnNlbnRzXCIpfHxlLmdldENvbnNlbnREYXRhJiZlLmdldFZlbmRvckNvbnNlbnRzfHx0KFwiQ29uc2VudCBzdHJpbmcgaXMgYmxhbmsuXCIpfXJldHVybntjb25zZW50RGF0YUNhbGxiYWNrOmZ1bmN0aW9uKG4pe2UuZ2V0Q29uc2VudERhdGE9bixvKCl9LHZlbmRvckNvbnNlbnRzQ2FsbGJhY2s6ZnVuY3Rpb24obil7ZS5nZXRWZW5kb3JDb25zZW50cz1uLG8oKX19fSgpLHtjbXBGcmFtZTphLGNtcEZ1bmN0aW9uOnJ9PWZ1bmN0aW9uKCl7bGV0IG4sdCxlPXdpbmRvdztmb3IoOyFuOyl7dHJ5e2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuX190Y2ZhcGl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGUuX19jbXApe1wiZnVuY3Rpb25cIj09dHlwZW9mIGUuX190Y2ZhcGk/KGNtcFZlcnNpb249Mix0PWUuX190Y2ZhcGkpOihjbXBWZXJzaW9uPTEsdD1lLl9fY21wKSxuPWU7YnJlYWt9fWNhdGNoKG4pe310cnl7aWYoZS5mcmFtZXMuX190Y2ZhcGlMb2NhdG9yKXtjbXBWZXJzaW9uPTIsbj1lO2JyZWFrfX1jYXRjaChuKXt9dHJ5e2lmKGUuZnJhbWVzLl9fY21wTG9jYXRvcil7Y21wVmVyc2lvbj0xLG49ZTticmVha319Y2F0Y2gobil7fWlmKGU9PT13aW5kb3cudG9wKWJyZWFrO2U9ZS5wYXJlbnR9cmV0dXJue2NtcEZyYW1lOm4sY21wRnVuY3Rpb246dH19KCk7aWYoIWEpcmV0dXJuIHQoXCJDTVAgbm90IGZvdW5kLlwiKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiByPzE9PT1jbXBWZXJzaW9uPyhyKFwiZ2V0Q29uc2VudERhdGFcIixudWxsLG8uY29uc2VudERhdGFDYWxsYmFjaykscihcImdldFZlbmRvckNvbnNlbnRzXCIsbnVsbCxvLnZlbmRvckNvbnNlbnRzQ2FsbGJhY2spKToyPT09Y21wVmVyc2lvbiYmcihcImFkZEV2ZW50TGlzdGVuZXJcIixjbXBWZXJzaW9uLGUpOjE9PT1jbXBWZXJzaW9uJiZ3aW5kb3cuJHNmJiZ3aW5kb3cuJHNmLmV4dCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LiRzZi5leHQuY21wPyh0aGlzLmNhbGxDbXBGcm9tU2FmZWZyYW1lKFwiZ2V0Q29uc2VudERhdGFcIixvLmNvbnNlbnREYXRhQ2FsbGJhY2ssdCksdGhpcy5jYWxsQ21wRnJvbVNhZmVmcmFtZShcImdldFZlbmRvckNvbnNlbnRzXCIsby52ZW5kb3JDb25zZW50c0NhbGxiYWNrLHQpKToxPT09Y21wVmVyc2lvbj8odGhpcy5jYWxsQ21wV2hpbGVJbklmcmFtZShcImdldENvbnNlbnREYXRhXCIsYSxvLmNvbnNlbnREYXRhQ2FsbGJhY2ssdCksdGhpcy5jYWxsQ21wV2hpbGVJbklmcmFtZShcImdldFZlbmRvckNvbnNlbnRzXCIsYSxvLnZlbmRvckNvbnNlbnRzQ2FsbGJhY2ssdCkpOjI9PT1jbXBWZXJzaW9uJiZ0aGlzLmNhbGxDbXBXaGlsZUluSWZyYW1lKFwiYWRkRXZlbnRMaXN0ZW5lclwiLGEsZSx0KX0sbG9va3VwQ2NwYUNvbnNlbnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxvPXt1c3BEYXRhOlwiXCIsc3VjY2VzczohMX07dHJ5e2U9d2luZG93Ll9fdXNwYXBpfHx3aW5kb3cudG9wLl9fdXNwYXBpfWNhdGNoKG4pe3Qobil9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSllKFwiZ2V0VVNQRGF0YVwiLDEsKGZ1bmN0aW9uKGUsYSl7by51c3BEYXRhPWUmJmUudXNwU3RyaW5nfHxcIlwiLG8uc3VjY2Vzcz1hLGE/bihvKTp0KCl9KSk7ZWxzZXtmb3IodmFyIGEscj13aW5kb3csYz0obmV3IERhdGUpLmdldFRpbWUoKTshYTspe3RyeXtyLmZyYW1lcy5fX3VzcGFwaUxvY2F0b3ImJihhPXIpfWNhdGNoKG4pe3JldHVybiB2b2lkIHQobil9aWYocj09PXdpbmRvdy50b3ApcmV0dXJuIHZvaWQgdCgpO3I9ci5wYXJlbnR9dmFyIHM9e19fdXNwYXBpQ2FsbDp7Y29tbWFuZDpcImdldFVTUERhdGFcIix2ZXJzaW9uOjEscGFyYW1ldGVyOm51bGwsY2FsbElkOmN9fTthLnBvc3RNZXNzYWdlKHMsXCIqXCIpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChmdW5jdGlvbihlKXtlLmRhdGEmJmUuZGF0YS5fX3VzcGFwaVJldHVybiYmZS5kYXRhLl9fdXNwYXBpUmV0dXJuLmNhbGxJZD09PWMmJihlLmRhdGEuX191c3BhcGlSZXR1cm4uc3VjY2Vzcz9uKGUuZGF0YS5fX3VzcGFwaVJldHVybi5yZXR1cm5WYWx1ZSk6dCgpKX0pLCExKX19fSxzb3Zybi5hdWN0aW9uLnNvdnJuUmVhZHkoKGZ1bmN0aW9uKCl7ITE9PT1zb3Zybi5hdWN0aW9uLmRvTm90VHJhY2soKSYmc292cm4uYXVjdGlvbi5jb25maWd1cmVHZHByQW5kQ2NwYUNvbnNlbnQoKX0pKTsifSwgImhlYWRlcnNTaXplIjogMTY1MywgImJvZHlTaXplIjogMjM2MCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogNDAxM30sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDQzLjQ4MSwgInJlY2VpdmUiOiAxNTE3LjQzM30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI1WiIsICJ0aW1lIjogMTYxMi44NTgsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvcHVibGlzaGVydGFnLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ5MCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIms0N09oM3k5T1RmSTQ0bXhHbXlkSjRpc3NCSFZwejcyd2JzV2xmSFZlTVEtMTY4NDk0Mjg3Ny0wLUFZMWt4MjJLWERFZUJ4MEFEbDVvUzJyMEJUT3h2SWxVQ2lyb0hzYURPZTZkVjhBbGVWaW8xL3Q2cG5SeHlTRkJFODd5alZGcUxTTDZNZDdDeFVUaHVmYz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiMzY0ODMifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1NWNhODAzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVNnY01KbmRMV1llUWpjVU5GVUszcm9wOGU5TTl1R0ZXQThUc2JLQ2ZWbzVHXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09azQ3T2gzeTlPVGZJNDRteEdteWRKNGlzc0JIVnB6NzJ3YnNXbGZIVmVNUS0xNjg0OTQyODc3LTAtQVkxa3gyMktYREVlQngwQURsNW9TMnIwQlRPeHZJbFVDaXJvSHNhRE9lNmRWOEFsZVZpbzEvdDZwblJ4eVNGQkU4N3lqVkZxTFNMNk1kN0N4VVRodWZjPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE3IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9wdWJsaXNoZXJ0YWcuanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtU2djTUpuZExXWWVRamNVTkZVSzNyb3A4ZTlNOXVHRldBOFRzYktDZlZvNUcifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDEwMzI3NSwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiA3NDM4MSwgInRleHQiOiAiIWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGY9KGkucHJvdG90eXBlLmlzQWRCbG9ja2VkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5jcmVhdGVQaXhlbChpLmFsbG93ZWRQaXhlbFVybCxmdW5jdGlvbigpeyh0LmFsbG93ZWRQaXhlbExvYWRlZD0hMCk9PT10LmJsb2NrZWRQaXhlbEZhaWxlZCYmZSghMCl9LGZ1bmN0aW9uKCl7fSksdGhpcy5jcmVhdGVQaXhlbChpLmJsb2NrZWRQaXhlbFVybCxmdW5jdGlvbigpe2UoITEpfSxmdW5jdGlvbigpeyh0LmJsb2NrZWRQaXhlbEZhaWxlZD0hMCk9PT10LmFsbG93ZWRQaXhlbExvYWRlZCYmZSghMCl9KX0saS5wcm90b3R5cGUuY3JlYXRlUGl4ZWw9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7bi5zcmM9ZSxuLmhlaWdodD0xLG4ud2lkdGg9MSxuLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsbi5vbmxvYWQ9dCxuLm9uZXJyb3I9aX0saS5hbGxvd2VkUGl4ZWxVcmw9XCJodHRwczovL3N0YXRpYy5jcml0ZW8ubmV0L2ltYWdlcy9waXhlbC5naWY/Y2g9MVwiLGkuYmxvY2tlZFBpeGVsVXJsPVwiaHR0cHM6Ly9zdGF0aWMuY3JpdGVvLm5ldC9pbWFnZXMvcGl4ZWwuZ2lmP2NoPTJcIixpKTtmdW5jdGlvbiBpKCl7dGhpcy5hbGxvd2VkUGl4ZWxMb2FkZWQ9ITEsdGhpcy5ibG9ja2VkUGl4ZWxGYWlsZWQ9ITF9ZnVuY3Rpb24gdChlKXt0cnl7cmV0dXJuIGUubG9jYWxTdG9yYWdlfWNhdGNoKGUpe3JldHVybn19dmFyIG89KGUucHJvdG90eXBlLmNoZWNrTG9jYWxTdG9yYWdlPWZ1bmN0aW9uKCl7aWYoIXRoaXMubG9jYWxTdG9yYWdlKXJldHVybiExO3ZhciBlPXRoaXMuQ0hFQ0tfU1RPUkFHRV9LRVk7dHJ5e3JldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGUsZSksdGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUucHJvdG90eXBlLnJlbW92ZUl0ZW09ZnVuY3Rpb24oZSl7dGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShlKSx0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUrdGhpcy5FWFBJUkVfU1VGRklYKX0sZS5wcm90b3R5cGUuZ2V0SXRlbT1mdW5jdGlvbihlLHQpe3ZhciBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpLG49dGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlK3RoaXMuRVhQSVJFX1NVRkZJWCksbz1uP3BhcnNlSW50KG4sMTApOi0xO3JldHVybi0xIT09byYmbzxpfHx0JiYoLTE9PT1vfHx0PG8taSk/KHRoaXMucmVtb3ZlSXRlbShlKSxudWxsKTp0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpfSxlLnByb3RvdHlwZS5zZXRJdGVtPWZ1bmN0aW9uKGUsdCxpKXt0cnl7aWYodGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLHQpLGkpe3ZhciBuPShuZXcgRGF0ZSkuZ2V0VGltZSgpK2k7dGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlK3RoaXMuRVhQSVJFX1NVRkZJWCxuLnRvU3RyaW5nKCkpfX1jYXRjaChlKXt9fSxlLnByb3RvdHlwZS5nZXRBbGxJdGVtc0J5UHJlZml4PWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgaSBpbiBsb2NhbFN0b3JhZ2UpMD09PWkuaW5kZXhPZihlKSYmdC5wdXNoKGkpO3JldHVybiB0fSxlKTtmdW5jdGlvbiBlKGUpe3RoaXMuRVhQSVJFX1NVRkZJWD1cIl9leHBpcmVzXCIsdGhpcy5DSEVDS19TVE9SQUdFX0tFWT1cImNyaXRlb19sb2NhbHN0b3JhZ2VfY2hlY2tcIix0aGlzLmxvY2FsU3RvcmFnZT10KGV8fHdpbmRvdyl9dmFyIEU9KG4uY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBufSxuLnByb3RvdHlwZS5hZEJsb2NrRmxhZ0VuYWJsZWQ9ZnVuY3Rpb24oKXtpZighdGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkKXJldHVybiExO3ZhciBlPW4uQURCTE9DS19GTEFHX0tFWTtyZXR1cm4gbnVsbCE9PXRoaXMubG9jYWxTdG9yYWdlSGVscGVyLmdldEl0ZW0oZSl9LG4ucHJvdG90eXBlLmVuYWJsZUFkQmxvY2tGbGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkKXt2YXIgZT1uLkFEQkxPQ0tfRkxBR19LRVk7dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuc2V0SXRlbShlLFwiMVwiLG4uQURCTE9DS19GTEFHX0xJRkVUSU1FKX19LG4ucHJvdG90eXBlLmRpc2FibGVBZEJsb2NrRmxhZz1mdW5jdGlvbigpe2lmKHRoaXMubG9jYWxTdG9yYWdlRW5hYmxlZCl7dmFyIGU9bi5BREJMT0NLX0ZMQUdfS0VZO3RoaXMubG9jYWxTdG9yYWdlSGVscGVyLnJlbW92ZUl0ZW0oZSl9fSxuLnByb3RvdHlwZS5zZXRBZEJsb2NrRmxhZ1RpbWVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5hZEJsb2NrRmxhZ0VuYWJsZWQoKXx8IXRoaXMudGltZXJFbmFibGVkfHx0aGlzLnRpbWVyU3RhcnRlZHx8KHRoaXMudGltZXJTdGFydGVkPSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnRpbWVyRW5hYmxlZCYmKHQucmVmcmVzaEFkYmxvY2tGbGFnKCksdC50aW1lckVuYWJsZWQ9ITEpfSxlKSl9LG4ucHJvdG90eXBlLmRpc2FibGVBZEJsb2NrRmxhZ1RpbWVyPWZ1bmN0aW9uKCl7dGhpcy50aW1lckVuYWJsZWQ9ITEsdGhpcy5hZEJsb2NrRmxhZ0VuYWJsZWQoKSYmdGhpcy5yZWZyZXNoQWRibG9ja0ZsYWcoKX0sbi5wcm90b3R5cGUucmVmcmVzaEFkYmxvY2tGbGFnPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczsobmV3IGYpLmlzQWRCbG9ja2VkKGZ1bmN0aW9uKGUpe2U/dC5lbmFibGVBZEJsb2NrRmxhZygpOnQuZGlzYWJsZUFkQmxvY2tGbGFnKCl9KX0sbi5BREJMT0NLX0ZMQUdfS0VZPVwiY3JpdGVvX2FkYmxvY2tfZmxhZ1wiLG4uQURCTE9DS19GTEFHX0xJRkVUSU1FPTg2NGU1LG4pO2Z1bmN0aW9uIG4oKXt0aGlzLmxvY2FsU3RvcmFnZUhlbHBlcj1uZXcgbyx0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQ9dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuY2hlY2tMb2NhbFN0b3JhZ2UoKSx0aGlzLnRpbWVyRW5hYmxlZD0hMCx0aGlzLnRpbWVyU3RhcnRlZD0hMX12YXIgcj1mdW5jdGlvbihlLHQpe3JldHVybihyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihlW2ldPXRbaV0pfSkoZSx0KX07ZnVuY3Rpb24gYShlLHQpe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9cihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KGkucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyBpKX12YXIgUz1mdW5jdGlvbigpe3JldHVybihTPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxpPTEsbj1hcmd1bWVudHMubGVuZ3RoO2k8bjtpKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW2ldKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gcyhlLHQpe3ZhciBpPXt9O2Zvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0LmluZGV4T2Yobik8MCYmKGlbbl09ZVtuXSk7aWYobnVsbCE9ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iobj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO288bi5sZW5ndGg7bysrKXQuaW5kZXhPZihuW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuW29dKSYmKGlbbltvXV09ZVtuW29dXSl9cmV0dXJuIGl9ZnVuY3Rpb24gZChlLHQsaSxuKXt2YXIgbyxyPWFyZ3VtZW50cy5sZW5ndGgsYT1yPDM/dDpudWxsPT09bj9uPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxpKTpuO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZShlLHQsaSxuKTtlbHNlIGZvcih2YXIgcz1lLmxlbmd0aC0xOzA8PXM7cy0tKShvPWVbc10pJiYoYT0ocjwzP28oYSk6MzxyP28odCxpLGEpOm8odCxpKSl8fGEpO3JldHVybiAzPHImJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGksYSksYX1mdW5jdGlvbiBjKGksbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7bihlLHQsaSl9fWZ1bmN0aW9uIGwoZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShlLHQpfWZ1bmN0aW9uIHUoZSxhLHMsZCl7cmV0dXJuIG5ldyhzPXN8fFByb21pc2UpKGZ1bmN0aW9uKGksdCl7ZnVuY3Rpb24gbihlKXt0cnl7cihkLm5leHQoZSkpfWNhdGNoKGUpe3QoZSl9fWZ1bmN0aW9uIG8oZSl7dHJ5e3IoZC50aHJvdyhlKSl9Y2F0Y2goZSl7dChlKX19ZnVuY3Rpb24gcihlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKTooKHQ9ZS52YWx1ZSlpbnN0YW5jZW9mIHM/dDpuZXcgcyhmdW5jdGlvbihlKXtlKHQpfSkpLnRoZW4obixvKX1yKChkPWQuYXBwbHkoZSxhfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBwKGksbil7dmFyIG8scixhLGUscz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZhWzBdKXRocm93IGFbMV07cmV0dXJuIGFbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gZT17bmV4dDp0KDApLHRocm93OnQoMSkscmV0dXJuOnQoMil9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZTtmdW5jdGlvbiB0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYobyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO3M7KXRyeXtpZihvPTEsciYmKGE9MiZ0WzBdP3IucmV0dXJuOnRbMF0/ci50aHJvd3x8KChhPXIucmV0dXJuKSYmYS5jYWxsKHIpLDApOnIubmV4dCkmJiEoYT1hLmNhbGwocix0WzFdKSkuZG9uZSlyZXR1cm4gYTtzd2l0Y2gocj0wLGEmJih0PVsyJnRbMF0sYS52YWx1ZV0pLHRbMF0pe2Nhc2UgMDpjYXNlIDE6YT10O2JyZWFrO2Nhc2UgNDpyZXR1cm4gcy5sYWJlbCsrLHt2YWx1ZTp0WzFdLGRvbmU6ITF9O2Nhc2UgNTpzLmxhYmVsKysscj10WzFdLHQ9WzBdO2NvbnRpbnVlO2Nhc2UgNzp0PXMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoYT0wPChhPXMudHJ5cykubGVuZ3RoJiZhW2EubGVuZ3RoLTFdKSYmKDY9PT10WzBdfHwyPT09dFswXSkpe3M9MDtjb250aW51ZX1pZigzPT09dFswXSYmKCFhfHx0WzFdPmFbMF0mJnRbMV08YVszXSkpe3MubGFiZWw9dFsxXTticmVha31pZig2PT09dFswXSYmcy5sYWJlbDxhWzFdKXtzLmxhYmVsPWFbMV0sYT10O2JyZWFrfWlmKGEmJnMubGFiZWw8YVsyXSl7cy5sYWJlbD1hWzJdLHMub3BzLnB1c2godCk7YnJlYWt9YVsyXSYmcy5vcHMucG9wKCkscy50cnlzLnBvcCgpO2NvbnRpbnVlfXQ9bi5jYWxsKGkscyl9Y2F0Y2goZSl7dD1bNixlXSxyPTB9ZmluYWxseXtvPWE9MH1pZig1JnRbMF0pdGhyb3cgdFsxXTtyZXR1cm57dmFsdWU6dFswXT90WzFdOnZvaWQgMCxkb25lOiEwfX0oW3QsZV0pfX19ZnVuY3Rpb24gaChlLHQpe2Zvcih2YXIgaSBpbiBlKXQuaGFzT3duUHJvcGVydHkoaSl8fCh0W2ldPWVbaV0pfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsaT10JiZlW3RdLG49MDtpZihpKXJldHVybiBpLmNhbGwoZSk7aWYoZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGUmJm4+PWUubGVuZ3RoJiYoZT12b2lkIDApLHt2YWx1ZTplJiZlW24rK10sZG9uZTohZX19fTt0aHJvdyBuZXcgVHlwZUVycm9yKHQ/XCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiOlwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKX1mdW5jdGlvbiBnKGUsdCl7dmFyIGk9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl07aWYoIWkpcmV0dXJuIGU7dmFyIG4sbyxyPWkuY2FsbChlKSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT10fHwwPHQtLSkmJiEobj1yLm5leHQoKSkuZG9uZTspYS5wdXNoKG4udmFsdWUpfWNhdGNoKGUpe289e2Vycm9yOmV9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihpPXIucmV0dXJuKSYmaS5jYWxsKHIpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX1mdW5jdGlvbiBtKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWU9ZS5jb25jYXQoZyhhcmd1bWVudHNbdF0pKTtyZXR1cm4gZX1mdW5jdGlvbiB5KCl7Zm9yKHZhciBlPTAsdD0wLGk9YXJndW1lbnRzLmxlbmd0aDt0PGk7dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIG49QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxpO3QrKylmb3IodmFyIHI9YXJndW1lbnRzW3RdLGE9MCxzPXIubGVuZ3RoO2E8czthKyssbysrKW5bb109clthXTtyZXR1cm4gbn1mdW5jdGlvbiBiKGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYj8odGhpcy52PWUsdGhpcyk6bmV3IGIoZSl9ZnVuY3Rpb24gQyhlLHQsaSl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7dmFyIG8scj1pLmFwcGx5KGUsdHx8W10pLGE9W107cmV0dXJuIG89e30sbihcIm5leHRcIiksbihcInRocm93XCIpLG4oXCJyZXR1cm5cIiksb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbztmdW5jdGlvbiBuKG4pe3Jbbl0mJihvW25dPWZ1bmN0aW9uKGkpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpezE8YS5wdXNoKFtuLGksZSx0XSl8fHMobixpKX0pfSl9ZnVuY3Rpb24gcyhlLHQpe3RyeXsoaT1yW2VdKHQpKS52YWx1ZSBpbnN0YW5jZW9mIGI/UHJvbWlzZS5yZXNvbHZlKGkudmFsdWUudikudGhlbihkLGMpOmwoYVswXVsyXSxpKX1jYXRjaChlKXtsKGFbMF1bM10sZSl9dmFyIGl9ZnVuY3Rpb24gZChlKXtzKFwibmV4dFwiLGUpfWZ1bmN0aW9uIGMoZSl7cyhcInRocm93XCIsZSl9ZnVuY3Rpb24gbChlLHQpe2UodCksYS5zaGlmdCgpLGEubGVuZ3RoJiZzKGFbMF1bMF0sYVswXVsxXSl9fWZ1bmN0aW9uIHcobil7dmFyIGUsbztyZXR1cm4gZT17fSx0KFwibmV4dFwiKSx0KFwidGhyb3dcIixmdW5jdGlvbihlKXt0aHJvdyBlfSksdChcInJldHVyblwiKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiB0KHQsaSl7ZVt0XT1uW3RdP2Z1bmN0aW9uKGUpe3JldHVybihvPSFvKT97dmFsdWU6YihuW3RdKGUpKSxkb25lOlwicmV0dXJuXCI9PT10fTppP2koZSk6ZX06aX19ZnVuY3Rpb24gSShkKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTt2YXIgZSx0PWRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiB0P3QuY2FsbChkKTooZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB2P3YoZCk6ZFtTeW1ib2wuaXRlcmF0b3JdKCksZT17fSxpKFwibmV4dFwiKSxpKFwidGhyb3dcIiksaShcInJldHVyblwiKSxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlKTtmdW5jdGlvbiBpKHMpe2Vbc109ZFtzXSYmZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7dmFyIGksbixvLHI7YT1kW3NdKGEpLGk9ZSxuPXQsbz1hLmRvbmUscj1hLnZhbHVlLFByb21pc2UucmVzb2x2ZShyKS50aGVuKGZ1bmN0aW9uKGUpe2koe3ZhbHVlOmUsZG9uZTpvfSl9LG4pfSl9fX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInJhd1wiLHt2YWx1ZTp0fSk6ZS5yYXc9dCxlfWZ1bmN0aW9uIEEoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBpIGluIGUpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmKHRbaV09ZVtpXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9ZnVuY3Rpb24gUihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gVChlLHQpe2lmKCF0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtyZXR1cm4gdC5nZXQoZSl9ZnVuY3Rpb24gUChlLHQsaSl7aWYoIXQuaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO3JldHVybiB0LnNldChlLGkpLGl9dmFyIGs9KEIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oZSx0LGksbil7dmFyIG89dm9pZCAwIT09dGhpcy5kYXRhP1wiUE9TVFwiOlwiR0VUXCIscj10aGlzLmdldFhNTEh0dHBSZXF1ZXN0KG8sZSx0LGksbik7aWYodm9pZCAwIT09cilyLnNlbmQodGhpcy5kYXRhKTtlbHNle3ZhciBhPXRoaXMuZ2V0WERvbWFpblJlcXVlc3QobyxlLHQsaSxuKTt2b2lkIDAhPT1hJiZhLnNlbmQodGhpcy5kYXRhKX19LEIucHJvdG90eXBlLmdldFhNTEh0dHBSZXF1ZXN0PWZ1bmN0aW9uKGUsdCxpLG4sbyl7dmFyIHI9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKFwid2l0aENyZWRlbnRpYWxzXCJpbiByKXJldHVybiByLm9wZW4oZSx0aGlzLnVybCwhMCksci50aW1lb3V0PW98fEIuTE9DQUxfUEFTU0JBQ0tfVElNRU9VVCx0aGlzLmNvbnRlbnRUeXBlP3Iuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtdHlwZVwiLHRoaXMuY29udGVudFR5cGUpOlwiUE9TVFwiPT09ZSYmci5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC10eXBlXCIsXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIiksci53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHMsci5vbmxvYWQ9ZnVuY3Rpb24oKXs0PT09ci5yZWFkeVN0YXRlJiYyMDA9PT1yLnN0YXR1cz90KHIucmVzcG9uc2VUZXh0KTppKHIucmVhZHlTdGF0ZSxyLnN0YXR1cyl9LHIub25lcnJvcj1mdW5jdGlvbigpe2kodm9pZCAwLHZvaWQgMCl9LG4mJihyLm9udGltZW91dD1uKSxyfSxCLnByb3RvdHlwZS5nZXRYRG9tYWluUmVxdWVzdD1mdW5jdGlvbihlLHQsaSxuLG8pe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBYRG9tYWluUmVxdWVzdCl7dmFyIHI9bmV3IFhEb21haW5SZXF1ZXN0O3JldHVybiByLnRpbWVvdXQ9b3x8Qi5MT0NBTF9QQVNTQkFDS19USU1FT1VULHIub3BlbihlLHRoaXMudXJsKSxyLm9ubG9hZD1mdW5jdGlvbigpe3ZvaWQgMCE9PXIucmVzcG9uc2VUZXh0P3Qoci5yZXNwb25zZVRleHQpOmkodm9pZCAwLHZvaWQgMCl9LHIub25lcnJvciYmKHIub25lcnJvcj1mdW5jdGlvbigpe2kodm9pZCAwLHZvaWQgMCl9KSxyLm9udGltZW91dCYmbiYmKHIub250aW1lb3V0PW4pLHJ9fSxCLkxPQ0FMX1BBU1NCQUNLX1RJTUVPVVQ9M2U0LEIpLE0seDtmdW5jdGlvbiBCKGUsdCxpLG4pe3ZvaWQgMD09PW4mJihuPSEwKSx0aGlzLnVybD1lLHRoaXMuZGF0YT10LHRoaXMuY29udGVudFR5cGU9aSx0aGlzLndpdGhDcmVkZW50aWFscz1ufXg9TT1NfHx7fSx4W3guRXJyb3I9MF09XCJFcnJvclwiLHhbeC5XYXJuaW5nPTFdPVwiV2FybmluZ1wiLHhbeC5EZWJ1Zz0yXT1cIkRlYnVnXCI7dmFyIE89W1wiY29sb3I6ICNmZmY7XCIsXCJiYWNrZ3JvdW5kOiAjZmY4ZjFjO1wiLFwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiLFwicGFkZGluZzogMXB4IDRweDtcIixcImJvcmRlci1yYWRpdXM6IDNweDtcIl0uam9pbihcIiBcIiksRD0oRi5Mb2c9ZnVuY3Rpb24oZSx0KXtpZighKEYuTE9HTEVWRUw8ZSkpe3ZhciBpPU1bZV0udG9VcHBlckNhc2UoKSxuPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LG89MDxuLmluZGV4T2YoXCJNU0lFIFwiKXx8MDxuLmluZGV4T2YoXCJUcmlkZW50L1wiKTt3aW5kb3cuY29uc29sZSYmKG8/Y29uc29sZS5sb2coXCJbUHViVGFnXSBcIitpK1wiOiBcIit0KTpjb25zb2xlLmxvZyhcIiVjUHViVGFnXCIsTyxpK1wiOiBcIit0KSl9fSxGLkRlYnVnPWZ1bmN0aW9uKGUpe0YuTG9nKE0uRGVidWcsZSl9LEYuV2FybmluZz1mdW5jdGlvbihlKXtGLkxvZyhNLldhcm5pbmcsZSl9LEYuRXJyb3I9ZnVuY3Rpb24oZSl7Ri5Mb2coTS5FcnJvcixlKX0sRi5MT0dMRVZFTD1NLkVycm9yLEYpO2Z1bmN0aW9uIEYoKXt9ZnVuY3Rpb24gTihlKXtELkxPR0xFVkVMPWV9dmFyIFU9ZnVuY3Rpb24oKXt9LEw9ZnVuY3Rpb24obyl7ZnVuY3Rpb24gZShlLHQpe3ZhciBpPW8uY2FsbCh0aGlzKXx8dGhpcztpLmNvbnRhaW5lcklkPXQ7dmFyIG49ZS5nZXRFbGVtZW50QnlJZCh0KTtyZXR1cm4gbj9pLmVsZW1lbnQ9bjpELkVycm9yKFwiVGFyZ2V0IGVsZW1lbnQgJ1wiK3QrXCInIG5vdCBmb3VuZCBpbiB0aGUgZG9jdW1lbnRcIiksaX1yZXR1cm4gYShlLG8pLGUucHJvdG90eXBlLlJlc2l6ZUZyYW1lPWZ1bmN0aW9uKGUsdCl7fSxlLnByb3RvdHlwZS5Xcml0ZT1mdW5jdGlvbihlKXt0aGlzLmVsZW1lbnQmJih0aGlzLmVsZW1lbnQuaW5uZXJIVE1MPWUpfSxlLnByb3RvdHlwZS5Mb2FkU2NyaXB0PWZ1bmN0aW9uKGUpe2UrPS0xPT09ZS5pbmRleE9mKFwiP1wiKT9cIj9cIjpcIiZcIixlKz1cImNvbnRhaW5lcmlkPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmNvbnRhaW5lcklkKTt2YXIgdD1uZXcgayhlKTt0LnNlbmQoZnVuY3Rpb24oZSl7ZXZhbChlKX0sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7fSl9LGV9KFUpLFc9KEg9VSxhKHosSCksei5wcm90b3R5cGUuUmVzaXplRnJhbWU9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3JiZ0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCl7dmFyIGk9dGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQ7aS53aWR0aD1lLnRvU3RyaW5nKCksaS5oZWlnaHQ9dC50b1N0cmluZygpfX0sei5wcm90b3R5cGUuV3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5kb2N1bWVudC5vcGVuKCksdGhpcy5kb2N1bWVudC53cml0ZShlKSx0aGlzLmRvY3VtZW50LmNsb3NlKCl9LHoucHJvdG90eXBlLkxvYWRTY3JpcHQ9ZnVuY3Rpb24oZSl7dGhpcy5Xcml0ZShcIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J1wiK2UrXCInPjxcXC9zY3JpcHQ+XCIpfSx6KSxIO2Z1bmN0aW9uIHooZSl7dmFyIHQ9SC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiB0LmRvY3VtZW50PWUsdH12YXIgRz0ocS5wcm90b3R5cGUuZXZhbD1mdW5jdGlvbihlKXt9LHEpO2Z1bmN0aW9uIHEoZSl7dGhpcy5uYW1lPWV9ZnVuY3Rpb24gSyhlKXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZSl7cmV0dXJufX12YXIgVj0xLGo9KFkucHJvdG90eXBlLmdldENNUEZyYW1lPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dGhpcy5jdXJyZW50V2luZG93LGk9MDtpPDEwOysraSl7dHJ5e3QuZnJhbWVzLl9fdXNwYXBpTG9jYXRvciYmKGU9dCl9Y2F0Y2goZSl7fWlmKHQ9PT10aGlzLmN1cnJlbnRXaW5kb3cudG9wKWJyZWFrO3Q9dC5wYXJlbnR9cmV0dXJuIGV9LFkucHJvdG90eXBlLmhhc0NhbGxlckZ1bmN0aW9uSW5XaW5kb3c9ZnVuY3Rpb24oKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLmN1cnJlbnRXaW5kb3cuX191c3BhcGl9LFkucHJvdG90eXBlLnJlYWR5VG9SZXRyaWV2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0NhbGxlckZ1bmN0aW9uSW5XaW5kb3coKXx8dm9pZCAwIT09dGhpcy5nZXRDTVBGcmFtZSgpfSxZLnByb3RvdHlwZS5yZXRyaWV2ZUNvbnNlbnQ9ZnVuY3Rpb24oaSl7dmFyIG49dGhpcyxvPSExLHI9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvPSEwLG4ubG9nZ2VyKFwiVGltZW91dDogVW5hYmxlIHRvIHJlc29sdmUgQ0NQQSBjb25zZW50IGFmdGVyIFwiK24udGltZW91dCtcIm1zXCIpLGkodm9pZCAwKX0sdGhpcy50aW1lb3V0KTt0aGlzLmV4ZWN1dGVDb21tYW5kKFwiZ2V0VVNQRGF0YVwiLFYsZnVuY3Rpb24oZSx0KXtvfHwoY2xlYXJUaW1lb3V0KHIpLHQ/KG4ubG9nZ2VyKFwiQ0NQQSBjb25zZW50IHJldHJpZXZlZFwiKSxuLnByb2Nlc3NSZXNwb25zZURhdGEoZSxpKSk6KG4ubG9nZ2VyKFwiRXJyb3IgcmV0cmlldmluZyBDQ1BBIGNvbnNlbnQgZGF0YSBmcm9tIENNUFwiKSxpKHZvaWQgMCkpKX0pfSxZLnByb3RvdHlwZS5wcm9jZXNzUmVzcG9uc2VEYXRhPWZ1bmN0aW9uKGUsdCl7ZT90KGUpOih0aGlzLmxvZ2dlcihcIlVuYWJsZSB0byByZWFkIENDUEEgY29uc2VudCBkYXRhIGZyb20gQ01QXCIpLHQodm9pZCAwKSl9LFkucHJvdG90eXBlLmV4ZWN1dGVDb21tYW5kPWZ1bmN0aW9uKGUsdCxpKXt2YXIgcj10aGlzO2lmKCF0aGlzLmhhc0NhbGxlckZ1bmN0aW9uSW5XaW5kb3coKSl7dGhpcy5sb2dnZXIoXCJObyBDQ1BBIENNUCBkZWZpbmVkIG9uIGN1cnJlbnQgZnJhbWVcIik7dmFyIGE9dGhpcy5nZXRDTVBGcmFtZSgpO3RoaXMuY3VycmVudFdpbmRvdy5fX3VzcGFwaT1mdW5jdGlvbihlLHQsaSl7aWYoIWEpcmV0dXJuIHIubG9nZ2VyKFwiQ0NQQSBDTVAgbm90IGZvdW5kIGluIGFueSBmcmFtZVwiKSx2b2lkIGkoe21zZzpcIkNDUEEgQ01QIG5vdCBmb3VuZCBpbiBhbnkgZnJhbWVcIn0sITEpO3ZhciBuPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTApLG89e19fdXNwYXBpQ2FsbDp7Y29tbWFuZDplLHBhcmFtZXRlcjp0LGNhbGxJZDpufX07ci51c3BhcGlDYWxsYmFja3Nbbl09aSxhLnBvc3RNZXNzYWdlKG8sXCIqXCIpfSx0aGlzLmN1cnJlbnRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixmdW5jdGlvbihlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZS5kYXRhP0soZS5kYXRhKTplLmRhdGE7aWYodCYmdC5fX3VzcGFwaVJldHVybiYmdC5fX3VzcGFwaVJldHVybi5jYWxsSWQmJnQuX191c3BhcGlSZXR1cm4ucmV0dXJuVmFsdWUpe3ZhciBpPXQuX191c3BhcGlSZXR1cm47ci51c3BhcGlDYWxsYmFja3MmJnIudXNwYXBpQ2FsbGJhY2tzW2kuY2FsbElkXSYmKHIudXNwYXBpQ2FsbGJhY2tzW2kuY2FsbElkXShpLnJldHVyblZhbHVlLGkuc3VjY2VzcyksZGVsZXRlIHIudXNwYXBpQ2FsbGJhY2tzW2kuY2FsbElkXSl9fSwhMSl9dGhpcy5jdXJyZW50V2luZG93Ll9fdXNwYXBpKGUsdCxpKX0sWS5wcm90b3R5cGUuaGFzVXNlck9wdE91dD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS51c3BTdHJpbmd8fFwiMVlOWVwiPT09ZS51c3BTdHJpbmcudG9VcHBlckNhc2UoKXx8XCIxWU5OXCI9PT1lLnVzcFN0cmluZy50b1VwcGVyQ2FzZSgpfHxcIjFZTi1cIj09PWUudXNwU3RyaW5nLnRvVXBwZXJDYXNlKCl8fFwiMS1OLVwiPT09ZS51c3BTdHJpbmcudG9VcHBlckNhc2UoKXx8XCIxLS0tXCI9PT1lLnVzcFN0cmluZyl9LFkpO2Z1bmN0aW9uIFkoZSx0LGkpe3ZvaWQgMD09PWkmJihpPWZ1bmN0aW9uKGUpe30pLHRoaXMudXNwYXBpQ2FsbGJhY2tzPXt9LHRoaXMuY3VycmVudFdpbmRvdz1lLHRoaXMudGltZW91dD10LnVzcEFwaVRpbWVvdXQsdGhpcy5sb2dnZXI9aX12YXIgSj0oWC5wcm90b3R5cGUuZ2V0UmVhZHlUb1JldHJpZXZlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50Y2Z2MkNvbnNlbnRQcm92aWRlci5oYXNDYWxsZXJGdW5jdGlvbkluRnJhbWUoKT90aGlzLnRjZnYyQ29uc2VudFByb3ZpZGVyOnRoaXMudGNmdjFDb25zZW50UHJvdmlkZXIuaGFzQ2FsbGVyRnVuY3Rpb25JbkZyYW1lKCk/dGhpcy50Y2Z2MUNvbnNlbnRQcm92aWRlcjp2b2lkIDAhPT10aGlzLnRjZnYyQ29uc2VudFByb3ZpZGVyLmdldENNUEZyYW1lKCk/dGhpcy50Y2Z2MkNvbnNlbnRQcm92aWRlcjp2b2lkIDAhPT10aGlzLnRjZnYxQ29uc2VudFByb3ZpZGVyLmdldENNUEZyYW1lKCk/dGhpcy50Y2Z2MUNvbnNlbnRQcm92aWRlcjp2b2lkIDB9LFgucHJvdG90eXBlLnJldHJpZXZlQ29uc2VudEZvclBhc3NiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0UmVhZHlUb1JldHJpZXZlUHJvdmlkZXIoKTt2b2lkIDA9PT10JiYodGhpcy5sb2dnZXIoXCJObyBjb21wYXRpYmxlIEdEUFIgcHJpdmFjeSBwcm92aWRlciBmb3VuZFwiKSxlKHZvaWQgMCkpLHQ9PT10aGlzLnRjZnYxQ29uc2VudFByb3ZpZGVyP3RoaXMudGNmdjFDb25zZW50UHJvdmlkZXIucmV0cmlldmVDb25zZW50Rm9yUGFzc2JhY2soZSk6dD09PXRoaXMudGNmdjJDb25zZW50UHJvdmlkZXImJnRoaXMudGNmdjJDb25zZW50UHJvdmlkZXIucmV0cmlldmVDb25zZW50KGUpfSxYLnByb3RvdHlwZS5yZXRyaWV2ZUNvbnNlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRSZWFkeVRvUmV0cmlldmVQcm92aWRlcigpO3ZvaWQgMD09PXQmJih0aGlzLmxvZ2dlcihcIk5vIGNvbXBhdGlibGUgR0RQUiBwcml2YWN5IHByb3ZpZGVyIGZvdW5kXCIpLGUodm9pZCAwKSksbnVsbD09dHx8dC5yZXRyaWV2ZUNvbnNlbnQoZSl9LFgucHJvdG90eXBlLnJlYWR5VG9SZXRyaWV2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRjZnYyQ29uc2VudFByb3ZpZGVyLnJlYWR5VG9SZXRyaWV2ZSgpfHx0aGlzLnRjZnYxQ29uc2VudFByb3ZpZGVyLnJlYWR5VG9SZXRyaWV2ZSgpfSxYKTtmdW5jdGlvbiBYKGUsdCxpKXt2b2lkIDA9PT1pJiYoaT1mdW5jdGlvbihlKXt9KSx0aGlzLnRjZnYxQ29uc2VudFByb3ZpZGVyPWUsdGhpcy50Y2Z2MkNvbnNlbnRQcm92aWRlcj10LHRoaXMubG9nZ2VyPWl9dmFyIFo9OTEsUT0oJC5wcm90b3R5cGUuZ2V0Q01QRnJhbWU9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD10aGlzLmN1cnJlbnRXaW5kb3csaT0wO2k8MTA7KytpKXt0cnl7dC5mcmFtZXMuX19jbXBMb2NhdG9yJiYoZT10KX1jYXRjaChlKXt9aWYodD09PXRoaXMuY3VycmVudFdpbmRvdy50b3ApYnJlYWs7dD10LnBhcmVudH1yZXR1cm4gZX0sJC5wcm90b3R5cGUuaGFzQ2FsbGVyRnVuY3Rpb25JbkZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5jdXJyZW50V2luZG93Ll9fY21wfSwkLnByb3RvdHlwZS5yZWFkeVRvUmV0cmlldmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNDYWxsZXJGdW5jdGlvbkluRnJhbWUoKXx8dm9pZCAwIT09dGhpcy5nZXRDTVBGcmFtZSgpfSwkLnByb3RvdHlwZS5waW5nV2l0aFRpbWVvdXQ9ZnVuY3Rpb24obixlLHQsaSl7ZnVuY3Rpb24gbyhlLHQpe3IubG9nZ2VyKHQpLGNsZWFyVGltZW91dChlKSxpKCl9dmFyIHI9dGhpcztyZXR1cm4gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe28obixcIlRpbWVvdXQ6IFVuYWJsZSB0byBnZXQgcGluZyByZXR1cm4gYWZ0ZXIgXCIrZStcIm1zXCIpfSxlKTtyLmV4ZWN1dGVDb21tYW5kKFwicGluZ1wiLG51bGwsZnVuY3Rpb24oZSx0KXtjbGVhclRpbWVvdXQoaSksdD8oci5sb2dnZXIoXCJHRFBSIENNUCBwaW5nIHJldHVybmVkXCIpLCEwIT09ZS5jbXBMb2FkZWQmJm8obixcIkdEUFIgcGluZyByZXR1cm5lZCBjbXBMb2FkZWQgd2hpY2ggaXMgbm90IHRydWVcIiksci5sb2dnZXIoXCJHRFBSIHBpbmcgcmV0dXJuZWQgY21wTG9hZGVkIHdoaWNoIGlzIHRydWVcIikpOm8obixcIkVycm9yIHNlbmRpbmcgcGluZyB0byBHRFBSIENNUFwiKX0pfSx0KX0sJC5wcm90b3R5cGUucmV0cmlldmVDb25zZW50PWZ1bmN0aW9uKGUpe3RoaXMuZXhlY3V0ZVJldHJpZXZlQ29uc2VudChcImdldENvbnNlbnREYXRhXCIsbnVsbCxlKX0sJC5wcm90b3R5cGUucmV0cmlldmVDb25zZW50Rm9yUGFzc2JhY2s9ZnVuY3Rpb24oZSl7dGhpcy5leGVjdXRlUmV0cmlldmVDb25zZW50KFwiZ2V0VmVuZG9yQ29uc2VudHNcIixbWl0sZSl9LCQucHJvdG90eXBlLmV4ZWN1dGVSZXRyaWV2ZUNvbnNlbnQ9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPXRoaXMsbz0hMSxyPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bz0hMCxuLmxvZ2dlcihcIlRpbWVvdXQ6IFVuYWJsZSB0byByZXNvbHZlIEdEUFIgY29uc2VudCBhZnRlciBcIituLnRpbWVvdXQrXCJtc1wiKSxpKHZvaWQgMCl9LHRoaXMudGltZW91dCksYT10aGlzLnBpbmdXaXRoVGltZW91dChyLHRoaXMucGluZ1RpbWVvdXQsdGhpcy5waW5nRGVsYXksZnVuY3Rpb24oKXtvPSEwLG4ubG9nZ2VyKFwiVGltZW91dDogVW5hYmxlIHRvIHBpbmcgR0RQUiBBUEkgYWZ0ZXIgXCIrbi5waW5nVGltZW91dCtcIm1zXCIpLGkodm9pZCAwKX0pO3RoaXMuZXhlY3V0ZUNvbW1hbmQoZSx0LGZ1bmN0aW9uKGUsdCl7Y2xlYXJUaW1lb3V0KGEpLG98fChjbGVhclRpbWVvdXQociksdD8obi5sb2dnZXIoXCJHRFBSIGNvbnNlbnQgcmV0cmlldmVkXCIpLG4ucHJvY2Vzc0NvbnNlbnREYXRhKGUsaSkpOihuLmxvZ2dlcihcIkVycm9yIHJldHJpZXZpbmcgR0RQUiBjb25zZW50IGRhdGEgZnJvbSBDTVBcIiksaSh2b2lkIDApKSl9KX0sJC5wcm90b3R5cGUucHJvY2Vzc0NvbnNlbnREYXRhPWZ1bmN0aW9uKGUsdCl7aWYoZSl7dmFyIGk9e307dm9pZCAwIT09ZS5jb25zZW50RGF0YSYmKGkuY29uc2VudERhdGE9ZS5jb25zZW50RGF0YSksdm9pZCAwIT09ZS5nZHByQXBwbGllcyYmKGkuZ2RwckFwcGxpZXM9ISFlLmdkcHJBcHBsaWVzKSx0KGkpfWVsc2UgdGhpcy5sb2dnZXIoXCJVbmFibGUgdG8gcmVhZCBHRFBSIGNvbnNlbnQgZGF0YSBmcm9tIENNUFwiKSx0KHZvaWQgMCl9LCQucHJvdG90eXBlLmV4ZWN1dGVDb21tYW5kPWZ1bmN0aW9uKGUsdCxpKXt2YXIgcj10aGlzO2lmKCF0aGlzLmhhc0NhbGxlckZ1bmN0aW9uSW5GcmFtZSgpKXt0aGlzLmxvZ2dlcihcIk5vIEdEUFIgQ01QIGRlZmluZWQgb24gY3VycmVudCBmcmFtZVwiKTt2YXIgYT10aGlzLmdldENNUEZyYW1lKCk7dGhpcy5jdXJyZW50V2luZG93Ll9fY21wPWZ1bmN0aW9uKGUsdCxpKXtpZighYSlyZXR1cm4gci5sb2dnZXIoXCJHRFBSIENNUCBub3QgZm91bmQgaW4gYW55IGZyYW1lXCIpLHZvaWQgaSh7bXNnOlwiR0RQUiBDTVAgbm90IGZvdW5kIGluIGFueSBmcmFtZVwifSwhMSk7dmFyIG49TWF0aC5yYW5kb20oKS50b1N0cmluZygxMCksbz17X19jbXBDYWxsOntjb21tYW5kOmUscGFyYW1ldGVyOnQsY2FsbElkOm59fTtyLmNtcENhbGxiYWNrc1tuXT1pLGEucG9zdE1lc3NhZ2UobyxcIipcIil9LHRoaXMuY3VycmVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGZ1bmN0aW9uKGUpe3ZhciB0PVwic3RyaW5nXCI9PXR5cGVvZiBlLmRhdGE/SyhlLmRhdGEpOmUuZGF0YTtpZih0JiZ0Ll9fY21wUmV0dXJuJiZ0Ll9fY21wUmV0dXJuLmNhbGxJZCYmdC5fX2NtcFJldHVybi5yZXR1cm5WYWx1ZSl7dmFyIGk9dC5fX2NtcFJldHVybjtyLmNtcENhbGxiYWNrcyYmci5jbXBDYWxsYmFja3NbaS5jYWxsSWRdJiYoci5jbXBDYWxsYmFja3NbaS5jYWxsSWRdKGkucmV0dXJuVmFsdWUsaS5zdWNjZXNzKSxkZWxldGUgci5jbXBDYWxsYmFja3NbaS5jYWxsSWRdKX19LCExKX10aGlzLmN1cnJlbnRXaW5kb3cuX19jbXAoZSx0LGkpfSwkKTtmdW5jdGlvbiAkKGUsdCxpKXt2b2lkIDA9PT1pJiYoaT1mdW5jdGlvbihlKXt9KSx0aGlzLmNtcENhbGxiYWNrcz17fSx0aGlzLmN1cnJlbnRXaW5kb3c9ZSx0aGlzLnRpbWVvdXQ9dC50Y2ZUaW1lb3V0LHRoaXMucGluZ1RpbWVvdXQ9dC50Y2ZQaW5nVGltZW91dCx0aGlzLnBpbmdEZWxheT10LnRjZlBpbmdEZWxheSx0aGlzLmxvZ2dlcj1pfXZhciBlZT05MSx0ZT0yLGllPShuZS5wcm90b3R5cGUuZ2V0Q01QRnJhbWU9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD10aGlzLmN1cnJlbnRXaW5kb3csaT0wO2k8MTA7KytpKXt0cnl7dC5mcmFtZXMuX190Y2ZhcGlMb2NhdG9yJiYoZT10KX1jYXRjaChlKXt9aWYodD09PXRoaXMuY3VycmVudFdpbmRvdy50b3ApYnJlYWs7dD10LnBhcmVudH1yZXR1cm4gZX0sbmUucHJvdG90eXBlLmhhc0NhbGxlckZ1bmN0aW9uSW5GcmFtZT1mdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuY3VycmVudFdpbmRvdy5fX3RjZmFwaX0sbmUucHJvdG90eXBlLnJlYWR5VG9SZXRyaWV2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc0NhbGxlckZ1bmN0aW9uSW5GcmFtZSgpfHx2b2lkIDAhPT10aGlzLmdldENNUEZyYW1lKCl9LG5lLnByb3RvdHlwZS5waW5nV2l0aFRpbWVvdXQ9ZnVuY3Rpb24oaSxlLHQsbil7ZnVuY3Rpb24gbyhlLHQpe3IubG9nZ2VyKHQpLGNsZWFyVGltZW91dChlKSxuKCl9dmFyIHI9dGhpcztyZXR1cm4gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe28oaSxcIlRpbWVvdXQ6IFVuYWJsZSB0byBnZXQgVENGdjIgcGluZyByZXR1cm4gYWZ0ZXIgXCIrZStcIm1zXCIpfSxlKTtyLmV4ZWN1dGVDb21tYW5kKFwicGluZ1wiLHRlLGZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dCh0KSxyLmxvZ2dlcihcIlRDRnYyIENNUCBwaW5nIHJldHVybmVkIGluIG1zXCIpLFwiZXJyb3JcIj09PWUuY21wU3RhdHVzP28oaSxcIkVycm9yIHN0YXR1cyBvbiBwaW5nIHRvIFRDRnYyIENNUFwiKTooITAhPT1lLmNtcExvYWRlZCYmbyhpLFwiVENGdjIgcGluZyByZXR1cm5lZCBjbXBMb2FkZWQgd2hpY2ggaXMgbm90IHRydWVcIiksci5sb2dnZXIoXCJUQ0Z2MiBwaW5nIHJldHVybmVkIGNtcExvYWRlZCB3aGljaCBpcyB0cnVlXCIpKX0pfSx0KX0sbmUucHJvdG90eXBlLnJldHJpZXZlQ29uc2VudD1mdW5jdGlvbihpKXt2YXIgbj10aGlzLG89ITEscj13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe289ITAsbi5sb2dnZXIoXCJUaW1lb3V0OiBVbmFibGUgdG8gcmVzb2x2ZSBUQ0Z2MiBjb25zZW50IGFmdGVyIFwiK24udGltZW91dCtcIm1zXCIpLGkodm9pZCAwKX0sdGhpcy50aW1lb3V0KSxhPXRoaXMucGluZ1dpdGhUaW1lb3V0KHIsdGhpcy5waW5nVGltZW91dCx0aGlzLnBpbmdEZWxheSxmdW5jdGlvbigpe289ITAsbi5sb2dnZXIoXCJUaW1lb3V0OiBVbmFibGUgdG8gcGluZyBUQ0Z2MiBBUEkgYWZ0ZXIgXCIrbi5waW5nVGltZW91dCtcIm1zXCIpLGkodm9pZCAwKX0pO3RoaXMuZXhlY3V0ZUNvbW1hbmQoXCJnZXRUQ0RhdGFcIix0ZSxmdW5jdGlvbihlLHQpe2NsZWFyVGltZW91dChhKSxvfHwoY2xlYXJUaW1lb3V0KHIpLHQ/KG4ubG9nZ2VyKFwiVENGdjIgY29uc2VudCByZXRyaWV2ZWQgaW4gbXNcIiksbi5wcm9jZXNzUmVzcG9uc2VEYXRhKGUsaSkpOihuLmxvZ2dlcihcIkVycm9yIHJldHJpZXZpbmcgVENGdjIgY29uc2VudCBkYXRhIGZyb20gQ01QXCIpLGkodm9pZCAwKSkpfSxbZWVdKX0sbmUucHJvdG90eXBlLnByb2Nlc3NSZXNwb25zZURhdGE9ZnVuY3Rpb24oZSx0KXtpZihlKXt2YXIgaT17fTt2b2lkIDAhPT1lLnRjU3RyaW5nJiYoaS5jb25zZW50RGF0YT1lLnRjU3RyaW5nKSx2b2lkIDAhPT1lLmdkcHJBcHBsaWVzJiYoaS5nZHByQXBwbGllcz0hIWUuZ2RwckFwcGxpZXMpLGkudmVyc2lvbj1lLnRjZlBvbGljeVZlcnNpb24/ZS50Y2ZQb2xpY3lWZXJzaW9uOnRlLHQoaSl9ZWxzZSB0aGlzLmxvZ2dlcihcIlVuYWJsZSB0byByZWFkIEdEUFIgY29uc2VudCBkYXRhIGZyb20gQ01QXCIpLHQodm9pZCAwKX0sbmUucHJvdG90eXBlLmV4ZWN1dGVDb21tYW5kPWZ1bmN0aW9uKGUsdCxpLG4pe3ZhciBhPXRoaXM7aWYoIXRoaXMuaGFzQ2FsbGVyRnVuY3Rpb25JbkZyYW1lKCkpe3RoaXMubG9nZ2VyKFwiTm8gVENGdjIgQ01QIGRlZmluZWQgb24gY3VycmVudCBmcmFtZVwiKTt2YXIgcz10aGlzLmdldENNUEZyYW1lKCk7dGhpcy5jdXJyZW50V2luZG93Ll9fdGNmYXBpPWZ1bmN0aW9uKGUsdCxpLG4pe2lmKCFzKXJldHVybiBhLmxvZ2dlcihcIlRDRnYyIENNUCBub3QgZm91bmQgaW4gYW55IGZyYW1lXCIpLHZvaWQgaSh7bXNnOlwiVENGdjIgQ01QIG5vdCBmb3VuZCBpbiBhbnkgZnJhbWVcIn0sITEpO3ZhciBvPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTApLHI9e19fdGNmYXBpQ2FsbDp7Y29tbWFuZDplLHZlcnNpb246dCxwYXJhbWV0ZXI6bixjYWxsSWQ6b319O2EuY21wQ2FsbGJhY2tzW29dPWkscy5wb3N0TWVzc2FnZShyLFwiKlwiKX0sdGhpcy5jdXJyZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsZnVuY3Rpb24oZSl7dmFyIHQ9XCJzdHJpbmdcIj09dHlwZW9mIGUuZGF0YT9LKGUuZGF0YSk6ZS5kYXRhO2lmKHQmJnQuX190Y2ZhcGlSZXR1cm4mJnQuX190Y2ZhcGlSZXR1cm4uY2FsbElkJiZ0Ll9fdGNmYXBpUmV0dXJuLnJldHVyblZhbHVlKXt2YXIgaT10Ll9fdGNmYXBpUmV0dXJuO2EuY21wQ2FsbGJhY2tzJiZhLmNtcENhbGxiYWNrc1tpLmNhbGxJZF0mJlwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY21wQ2FsbGJhY2tzW2kuY2FsbElkXSYmKGEuY21wQ2FsbGJhY2tzW2kuY2FsbElkXShpLnJldHVyblZhbHVlLGkuc3VjY2VzcyksZGVsZXRlIGEuY21wQ2FsbGJhY2tzW2kuY2FsbElkXSl9fSwhMSl9dGhpcy5jdXJyZW50V2luZG93Ll9fdGNmYXBpKGUsdCxpLG4pfSxuZSk7ZnVuY3Rpb24gbmUoZSx0LGkpe3ZvaWQgMD09PWkmJihpPWZ1bmN0aW9uKGUpe30pLHRoaXMuY21wQ2FsbGJhY2tzPXt9LHRoaXMuY3VycmVudFdpbmRvdz1lLHRoaXMudGltZW91dD10LnRjZlRpbWVvdXQsdGhpcy5waW5nVGltZW91dD10LnRjZlBpbmdUaW1lb3V0LHRoaXMucGluZ0RlbGF5PXQudGNmUGluZ0RlbGF5LHRoaXMubG9nZ2VyPWl9ZnVuY3Rpb24gb2UoKXtyZXR1cm57dXNwQXBpVGltZW91dDpwYXJzZUludChcIjUwXCIsMTApLHRjZlRpbWVvdXQ6cGFyc2VJbnQoXCIxMDAwMFwiLDEwKSx0Y2ZQaW5nVGltZW91dDpNYXRoLm1pbihwYXJzZUludChcIjEwMDAwXCIsMTApLHBhcnNlSW50KFwiNTBcIiwxMCkpLHRjZlBpbmdEZWxheTpNYXRoLm1pbihwYXJzZUludChcIjEwMDAwXCIsMTApLHBhcnNlSW50KFwiMTAwMFwiLDEwKSl9fWZ1bmN0aW9uIHJlKGUpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtyZXR1cm59fXZhciBhZT0oc2UucHJvdG90eXBlLnNpbGVudE1vZGVFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIGU9c2UuU0lMRU5UX01PREVfS0VZO3JldHVybiB0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQmJm51bGwhPT10aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5nZXRJdGVtKGUpfSxzZS5wcm90b3R5cGUuZW5hYmxlU2lsZW50TW9kZT1mdW5jdGlvbihlKXtpZih0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQpe3ZhciB0PXNlLlNJTEVOVF9NT0RFX0tFWTt0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5zZXRJdGVtKHQsXCIxXCIsZSl9fSxzZS5TSUxFTlRfTU9ERV9LRVk9XCJjcml0ZW9fc2lsZW50X21vZGVcIixzZSk7ZnVuY3Rpb24gc2UoKXt0aGlzLmxvY2FsU3RvcmFnZUhlbHBlcj1uZXcgbyx0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQ9dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuY2hlY2tMb2NhbFN0b3JhZ2UoKX1mdW5jdGlvbiBkZSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfXZhciBjZT0obGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgrXCJ4XCIrdGhpcy5oZWlnaHR9LGxlKTtmdW5jdGlvbiBsZShlLHQpe3RoaXMud2lkdGg9ZSx0aGlzLmhlaWdodD10fXZhciB1ZT0ocGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJJbXBJZFwiK3RoaXMuaW1wcmVzc2lvbklkfSxwZSk7ZnVuY3Rpb24gcGUoZSl7dGhpcy5pbXByZXNzaW9uSWQ9ZX12YXIgaGU9KGZlPXVlLGEodmUsZmUpLHZlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBmZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKStcIl9TaXplXCIrdGhpcy5zaXplK1wiX05ldHdvcmtJZFwiK3RoaXMubmV0d29ya0lkfSx2ZSksZmU7ZnVuY3Rpb24gdmUoZSx0LGkpe3ZhciBuPWZlLmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gbi5zaXplPXQsbi5uZXR3b3JrSWQ9aSxufXZhciBnZT0obWU9dWUsYSh5ZSxtZSkseWUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG1lLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpK1wiX1pvbmVJZFwiK3RoaXMuem9uZUlkfSx5ZSksbWU7ZnVuY3Rpb24geWUoZSx0KXt2YXIgaT1tZS5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIGkuem9uZUlkPXQsaX12YXIgYmU9KENlLnByb3RvdHlwZS5jcmVhdGVLZXlzRnJvbVNsb3RSZXF1ZXN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMudXNlWm9uZUlkSW50ZWdyYXRpb24pcmV0dXJuW25ldyBnZShlLmltcElkLGUuem9uZUlkKV07Zm9yKHZhciB0PVtdLGk9MCxuPWUuc2l6ZXM7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV07dC5wdXNoKG5ldyBoZShlLmltcElkLG8sdGhpcy5uZXR3b3JrSWQpKX1yZXR1cm4gdH0sQ2UucHJvdG90eXBlLmNyZWF0ZUtleUZyb21TbG90UmVzcG9uc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudXNlWm9uZUlkSW50ZWdyYXRpb24/bmV3IGdlKGUuaW1waWQsZS56b25laWQpOm5ldyBoZShlLmltcGlkLG5ldyBjZShlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLm5ldHdvcmtJZCl9LENlLnByb3RvdHlwZS5jcmVhdGVLZXlGcm9tQmlkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVzZVpvbmVJZEludGVncmF0aW9uP25ldyBnZShlLmltcHJlc3Npb25JZCxlLnpvbmVJZCk6bmV3IGhlKGUuaW1wcmVzc2lvbklkLG5ldyBjZShlLndpZHRoLGUuaGVpZ2h0KSx0aGlzLm5ldHdvcmtJZCl9LENlKTtmdW5jdGlvbiBDZShlLHQpe3RoaXMudXNlWm9uZUlkSW50ZWdyYXRpb249ZSx0aGlzLm5ldHdvcmtJZD10fXZhciB3ZT0oSWUudXNlWm9uZUlkSW50ZWdyYXRpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dHx8MD09PWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLnNpemVzJiYwPGUuc2l6ZXMubGVuZ3RofSkubGVuZ3RofSxJZS5wcm90b3R5cGUuZ2V0QnlTbG90S2V5PWZ1bmN0aW9uKGUsdCl7dmFyIGk9dC50b1N0cmluZygpO2lmKGkgaW4gZSl7dmFyIG49ZVtpXTtpZih2b2lkIDAhPT1uKXJldHVybiB2b2lkIDAhPT1uLmJpZCYmdm9pZCAwIT09bi5leHBpcmF0aW9uJiZuLmV4cGlyYXRpb248ZGUoKSYmKG4uYmlkPXZvaWQgMCxuLmV4cGlyYXRpb249dm9pZCAwKSxufXJldHVybnt9fSxJZS5wcm90b3R5cGUuc2V0QnlTbG90S2V5PWZ1bmN0aW9uKGUsdCxpKXt2YXIgbj10LnRvU3RyaW5nKCk7dm9pZCAwIT09aS5iaWR8fHZvaWQgMCE9PWkuZXhwaXJhdGlvbiYmaS5leHBpcmF0aW9uPmRlKCk/ZVtuXT1pOm4gaW4gZSYmZGVsZXRlIGVbbl19LEllLnByb3RvdHlwZS5maWx0ZXJOb0JpZFNsb3RzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2lmKHRoaXMubG9jYWxTdG9yYWdlRW5hYmxlZClmb3IodmFyIGk9dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuZ2V0SXRlbShJZS5CSURDQUNIRV9TVE9SQUdFX0tFWSksbj1pJiZyZShpKXx8e30sbz0wLHI9ZTtvPHIubGVuZ3RoO28rKyl7Zm9yKHZhciBhPXJbb10scz1bXSxkPTAsYz10aGlzLnNsb3RLZXlGYWN0b3J5LmNyZWF0ZUtleXNGcm9tU2xvdFJlcXVlc3QoYSk7ZDxjLmxlbmd0aDtkKyspe3ZhciBsPWNbZF07dGhpcy5nZXRCaWRGcm9tTWFwKG4sbCwwKSE9PUllLk5PX0JJRCYmKGwgaW5zdGFuY2VvZiBoZT9zLnB1c2gobC5zaXplKTp0LnB1c2goYSkpfTA8cy5sZW5ndGgmJihhLnNpemVzPXMsdC5wdXNoKGEpKX1yZXR1cm4gdH0sSWUucHJvdG90eXBlLmdldFJlcXVlc3RDYWNoZWRCaWRzPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9NWUzKTt2YXIgaT17fTtpZih0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQpe2Zvcih2YXIgbj10aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5nZXRJdGVtKEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZKSxvPW4mJnJlKG4pfHx7fSxyPTAsYT1lO3I8YS5sZW5ndGg7cisrKWZvcih2YXIgcz1hW3JdLGQ9MCxjPXRoaXMuc2xvdEtleUZhY3RvcnkuY3JlYXRlS2V5c0Zyb21TbG90UmVxdWVzdChzKTtkPGMubGVuZ3RoO2QrKyl7dmFyIGw9Y1tkXSx1PXRoaXMuZ2V0QmlkRnJvbU1hcChvLGwsdCk7dm9pZCAwIT09dSYmdSE9PUllLk5PX0JJRCYmKGlbcy5zbG90SWRdPXUpfXRoaXMubG9jYWxTdG9yYWdlSGVscGVyLnNldEl0ZW0oSWUuQklEQ0FDSEVfU1RPUkFHRV9LRVksSlNPTi5zdHJpbmdpZnkobykpfXJldHVybiBpfSxJZS5wcm90b3R5cGUuZ2V0QmlkPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9NWUzKSx0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQpe3ZhciBpPXRoaXMubG9jYWxTdG9yYWdlSGVscGVyLmdldEl0ZW0oSWUuQklEQ0FDSEVfU1RPUkFHRV9LRVkpLG49aSYmcmUoaSl8fHt9LG89dGhpcy5nZXRCaWRGcm9tTWFwKG4sZSx0KTtyZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuc2V0SXRlbShJZS5CSURDQUNIRV9TVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShuKSksb319LEllLnByb3RvdHlwZS5nZXRCaWRGcm9tTWFwPWZ1bmN0aW9uKGUsdCxpKXt2b2lkIDA9PT1pJiYoaT01ZTMpO3ZhciBuPXRoaXMuZ2V0QnlTbG90S2V5KGUsdCk7cmV0dXJuIHZvaWQgMD09PW4uYmlkJiZuLmV4cGlyYXRpb24mJm4uZXhwaXJhdGlvbj5kZSgpP0llLk5PX0JJRDowPGkmJnZvaWQgMCE9PW4uYmlkPyhkZWxldGUgZVt0LnRvU3RyaW5nKCldLG4uYmlkKTp2b2lkIDB9LEllLnByb3RvdHlwZS5zdG9yZVJlc3BvbnNlQmlkcz1mdW5jdGlvbihlKXtpZih0aGlzLmxvY2FsU3RvcmFnZUVuYWJsZWQpe2Zvcih2YXIgdD10aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5nZXRJdGVtKEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZKSxuPXQmJnJlKHQpfHx7fSxpPWZ1bmN0aW9uKGkpe3ZhciBlPW8uc2xvdEtleUZhY3RvcnkuY3JlYXRlS2V5RnJvbVNsb3RSZXNwb25zZShpLnNsb3QpO28ubW9kaWZ5Q2FjaGUobixlLGZ1bmN0aW9uKGUpe3ZhciB0PWRlKCkrMWUzKmkudHRsOyh2b2lkIDA9PT1lLmV4cGlyYXRpb258fGUuZXhwaXJhdGlvbjx0KSYmKGUuYmlkPWkuc2xvdCxlLmV4cGlyYXRpb249dCl9KX0sbz10aGlzLHI9MCxhPWU7cjxhLmxlbmd0aDtyKyspaShhW3JdKTt0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5zZXRJdGVtKEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZLEpTT04uc3RyaW5naWZ5KG4pKX19LEllLnByb3RvdHlwZS5zdG9yZVJlcXVlc3ROb0JpZHM9ZnVuY3Rpb24oZSl7aWYodGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkKXtmb3IodmFyIHQ9dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuZ2V0SXRlbShJZS5CSURDQUNIRV9TVE9SQUdFX0tFWSksbz10JiZyZSh0KXx8e30saT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXIuc2xvdEtleUZhY3RvcnkuY3JlYXRlS2V5c0Zyb21TbG90UmVxdWVzdCh0LnNsb3QpO2U8aS5sZW5ndGg7ZSsrKXt2YXIgbj1pW2VdO3IubW9kaWZ5Q2FjaGUobyxuLGZ1bmN0aW9uKGUpe2UuYmlkPXZvaWQgMCxlLmV4cGlyYXRpb249TWF0aC5tYXgoZS5leHBpcmF0aW9ufHwwLGRlKCkrMWUzKnQudHRsKX0pfX0scj10aGlzLG49MCxhPWU7bjxhLmxlbmd0aDtuKyspaShhW25dKTt0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5zZXRJdGVtKEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZLEpTT04uc3RyaW5naWZ5KG8pKX19LEllLnByb3RvdHlwZS5yZW1vdmVCaWQ9ZnVuY3Rpb24odCl7aWYodGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkKXt2YXIgZT10aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5nZXRJdGVtKEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZKSxpPWUmJnJlKGUpfHx7fSxuPXRoaXMuc2xvdEtleUZhY3RvcnkuY3JlYXRlS2V5RnJvbUJpZCh0KTt0aGlzLm1vZGlmeUNhY2hlKGksbixmdW5jdGlvbihlKXt2b2lkIDAhPT1lLmJpZCYmZS5iaWQuc2xvdGlkPT09dC5zbG90SWQmJihlLmJpZD12b2lkIDAsZS5leHBpcmF0aW9uPXZvaWQgMCl9KSx0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5zZXRJdGVtKEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZLEpTT04uc3RyaW5naWZ5KGkpKX19LEllLnByb3RvdHlwZS5tb2RpZnlDYWNoZT1mdW5jdGlvbihlLHQsaSl7dmFyIG49dGhpcy5nZXRCeVNsb3RLZXkoZSx0KTtpKG4pLHRoaXMuc2V0QnlTbG90S2V5KGUsdCxuKX0sSWUucHJvdG90eXBlLmNsZWFuVXBMZWdhY3lMb2NhbFN0b3JhZ2VJdGVtcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuZ2V0QWxsSXRlbXNCeVByZWZpeChcImNyaXRlb19wdF9jZGJfYmlkY2FjaGVfXCIpO2U8dC5sZW5ndGg7ZSsrKXt2YXIgaT10W2VdO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGkpfX0sSWUucHJvdG90eXBlLmNsZWFyRXhwaXJlZEl0ZW1zPWZ1bmN0aW9uKCl7aWYodGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkKXtmb3IodmFyIGU9dGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuZ2V0SXRlbShJZS5CSURDQUNIRV9TVE9SQUdFX0tFWSksdD1lJiZyZShlKXx8e30saT0wLG49T2JqZWN0LmtleXModCk7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV0scj10W29dO3ZvaWQgMCE9PXImJnZvaWQgMCE9PXIuZXhwaXJhdGlvbiYmci5leHBpcmF0aW9uPGRlKCkmJmRlbGV0ZSB0W29dfXRoaXMubG9jYWxTdG9yYWdlSGVscGVyLnNldEl0ZW0oSWUuQklEQ0FDSEVfU1RPUkFHRV9LRVksSlNPTi5zdHJpbmdpZnkodCkpLHRoaXMuY2xlYW5VcExlZ2FjeUxvY2FsU3RvcmFnZUl0ZW1zKCl9fSxJZS5OT19CSUQ9XCJub2JpZFwiLEllLkJJRENBQ0hFX1NUT1JBR0VfS0VZPVwiY3JpdGVvX3B0X2NkYl9iaWRjYWNoZW1hcFwiLEllKTtmdW5jdGlvbiBJZShlLHQpe3RoaXMubG9jYWxTdG9yYWdlSGVscGVyPW5ldyBvLHRoaXMubG9jYWxTdG9yYWdlRW5hYmxlZD10aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5jaGVja0xvY2FsU3RvcmFnZSgpLHRoaXMuc2xvdEtleUZhY3Rvcnk9bmV3IGJlKGUsdCl9dmFyIEVlPShTZS5wcm90b3R5cGUuZmlsdGVyTm9CaWRTbG90cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmJpZE1hbmFnZXIuZmlsdGVyTm9CaWRTbG90cyhlKTtyZXR1cm4gdGhpcy5jb250ZXh0LnNob3VsZElnbm9yZVNpbGVudE1vZGU/KHQubGVuZ3RoIT09ZS5sZW5ndGgmJnRoaXMuY29udGV4dC5zZXRTaWxlbnRNb2RlSWdub3JlZCYmdGhpcy5jb250ZXh0LnNldFNpbGVudE1vZGVJZ25vcmVkKCksZSk6dH0sU2UucHJvdG90eXBlLnNpbGVudE1vZGVFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIGU9ITE7cmV0dXJuIHRoaXMuc2lsZW50TW9kZU1hbmFnZXIuc2lsZW50TW9kZUVuYWJsZWQoKSYmKHRoaXMuY29udGV4dC5zaG91bGRJZ25vcmVTaWxlbnRNb2RlJiZ0aGlzLmNvbnRleHQuc2V0U2lsZW50TW9kZUlnbm9yZWQ/dGhpcy5jb250ZXh0LnNldFNpbGVudE1vZGVJZ25vcmVkKCk6ZT0hMCksZX0sU2UucHJvdG90eXBlLmdldENhY2hlZEJpZHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYmlkTWFuYWdlci5nZXRSZXF1ZXN0Q2FjaGVkQmlkcyhlKX0sU2UucHJvdG90eXBlLnJlbW92ZUJpZD1mdW5jdGlvbihlKXt0aGlzLmJpZE1hbmFnZXIucmVtb3ZlQmlkKGUpfSxTZS5wcm90b3R5cGUuaGFuZGxlUmVzcG9uc2U9ZnVuY3Rpb24oZSx0LGksbil7dmFyIG89aS50aW1lX3RvX25leHRfY2FsbDswPG8mJihELkRlYnVnKFwiR2xvYmFsIHNpbGVudCBtb2RlIGVuYWJsZWQgZm9yIFwiK28rXCIgc2Vjb25kc1wiKSx0aGlzLnNpbGVudE1vZGVNYW5hZ2VyLmVuYWJsZVNpbGVudE1vZGUoMWUzKm8pKTt2YXIgcj17fTtpZihpLnNsb3RzKWZvcih2YXIgYT0wLHM9aS5zbG90czthPHMubGVuZ3RoO2ErKykoZz1zW2FdKS50dGwmJihyW2cuaW1wX2lkXT1nLnR0bCk7dmFyIGQ9W107aWYodC5zbG90cylmb3IodmFyIGM9MCxsPXQuc2xvdHM7YzxsLmxlbmd0aDtjKyspe3ZhciB1PTA7KGc9bFtjXSkuc2xvdGlkIGluIHImJih1PXJbZy5zbG90aWRdLGRlbGV0ZSByW2cuc2xvdGlkXSksMDx1JiYoRC5EZWJ1ZyhcIkJpZCBmb3Igc2xvdCAnXCIrZy5pbXBpZCtcIicgY2FjaGVkIGZvciBcIit1K1wiIHNlY29uZHNcIiksZC5wdXNoKHtzbG90OmcsdHRsOnV9KSl9dGhpcy5iaWRNYW5hZ2VyLnN0b3JlUmVzcG9uc2VCaWRzKGQpO3ZhciBwPVtdO2Zvcih2YXIgaCBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoaCkpZm9yKHZhciBmPTAsdj1lO2Y8di5sZW5ndGg7ZisrKXt2YXIgZzsoZz12W2ZdKS5zbG90SWQ9PT1oJiYodT1yW2hdLEQuRGVidWcoXCJTaWxlbnQgbW9kZSBmb3Igc2xvdCAnXCIrZy5pbXBJZCtcIicgZW5hYmxlZCBmb3IgXCIrdStcIiBzZWNvbmRzXCIpLHAucHVzaCh7c2xvdDpnLHR0bDp1fSkpfXRoaXMuYmlkTWFuYWdlci5zdG9yZVJlcXVlc3ROb0JpZHMocCl9LFNlLnByb3RvdHlwZS5jbGVhckV4cGlyZWRJdGVtcz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2UuYmlkTWFuYWdlci5jbGVhckV4cGlyZWRJdGVtcygpfSwzZTMpfSxTZSk7ZnVuY3Rpb24gU2UoZSx0LGkpe3ZhciBuPXdlLnVzZVpvbmVJZEludGVncmF0aW9uKHQsaSk7dGhpcy5iaWRNYW5hZ2VyPW5ldyB3ZShuLGkpLHRoaXMuc2lsZW50TW9kZU1hbmFnZXI9bmV3IGFlLHRoaXMuY29udGV4dD1lfWZ1bmN0aW9uIF9lKGUpe3ZhciB0PVwibnVtYmVyXCI9PXR5cGVvZiB3aW5kb3cuUFJFQklEX1RJTUVPVVQ/d2luZG93LlBSRUJJRF9USU1FT1VUOnZvaWQgMDtyZXR1cm4gZSYmdD9NYXRoLm1pbihlLHQpOmV8fHR8fHZvaWQgMH1mdW5jdGlvbiBBZSgpe3ZhciBpPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgcGVyZm9ybWFuY2Uubm93JiYoaSs9cGVyZm9ybWFuY2Uubm93KCkpLFwieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4XCIucmVwbGFjZSgvW3h5XS9nLGZ1bmN0aW9uKGUpe3ZhciB0PShpKzE2Kk1hdGgucmFuZG9tKCkpJTE2fDA7cmV0dXJuIGk9TWF0aC5mbG9vcihpLzE2KSwoXCJ4XCI9PT1lP3Q6MyZ0fDgpLnRvU3RyaW5nKDE2KX0pfXZhciBSZT05NixUZT1mdW5jdGlvbihlLHQsaSxuLG8scixhLHMsZCxjLGwsdSxwLGgsZix2KXt0aGlzLnB1Ymxpc2hlclRhZ1ZlcnNpb249ZSx0aGlzLnNsb3RzPXQsdGhpcy5lbGFwc2VkPWksdGhpcy5pc1RpbWVvdXQ9bix0aGlzLmFkYXB0ZXJTdGFydEVsYXBzZWQ9byx0aGlzLmNkYkNhbGxTdGFydEVsYXBzZWQ9cix0aGlzLmNkYkNhbGxFbmRFbGFwc2VkPWEsdGhpcy5hZGFwdGVyRW5kRWxhcHNlZD1zLHRoaXMuYWRhcHRlclRpbWVvdXQ9ZCx0aGlzLmFkYXB0ZXJJc1RpbWVvdXQ9Yyx0aGlzLnRpbWVUb0ZpcnN0Qnl0ZT1sLHRoaXMuaWQ9dSx0aGlzLnNpbGVudE1vZGVSZXF1ZXN0Q291bnQ9cCx0aGlzLmxvY2FsU3RvcmFnZUtleUNvdW50PWgsdGhpcy5jb25uZWN0aW9uRXN0YWJsaXNobWVudFRpbWU9Zix0aGlzLmRvbWFpbkxvb2t1cFRpbWU9dn0sUGU9ZnVuY3Rpb24oZSx0LGksbixvKXt0aGlzLmltcHJlc3Npb25JZD1lLHRoaXMuem9uZUlkPXQsdGhpcy5hZFVuaXRJZD1pLHRoaXMuY2FjaGVkQmlkVXNlZD1uLHRoaXMuaXNEc2M9b30sa2U9KE1lLnByb3RvdHlwZS53aXRoRWxhcHNlZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lbGFwc2VkPU1hdGgucm91bmQoZSksdGhpc30sTWUucHJvdG90eXBlLndpdGhJc1RpbWVvdXQ9ZnVuY3Rpb24oZSl7cmV0dXJuKHRoaXMuaXNUaW1lb3V0PWUpJiZ0aGlzLmV2ZW50cy5wdXNoKHtldmVudElkOlwiQ2RiQ2FsbFRpbWVvdXRcIn0pLHRoaXN9LE1lLnByb3RvdHlwZS53aXRoQWRhcHRlclN0YXJ0RWxhcHNlZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGFwdGVyU3RhcnRFbGFwc2VkPU1hdGgucm91bmQoZSksdGhpcy5ldmVudHMucHVzaCh7ZXZlbnRJZDpcIkFkYXB0ZXJCaWRTdGFydFwiLGVsYXBzZWQ6dGhpcy5hZGFwdGVyU3RhcnRFbGFwc2VkfSksdGhpc30sTWUucHJvdG90eXBlLndpdGhDZGJDYWxsU3RhcnRFbGFwc2VkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNkYkNhbGxTdGFydEVsYXBzZWQ9TWF0aC5yb3VuZChlKSx0aGlzLmV2ZW50cy5wdXNoKHtldmVudElkOlwiQ2RiQ2FsbFN0YXJ0XCIsZWxhcHNlZDp0aGlzLmNkYkNhbGxTdGFydEVsYXBzZWR9KSx0aGlzfSxNZS5wcm90b3R5cGUud2l0aENkYkNhbGxFbmRFbGFwc2VkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNkYkNhbGxFbmRFbGFwc2VkPU1hdGgucm91bmQoZSksdGhpcy5ldmVudHMucHVzaCh7ZXZlbnRJZDpcIkNkYkNhbGxFbmRcIixlbGFwc2VkOnRoaXMuY2RiQ2FsbEVuZEVsYXBzZWR9KSx0aGlzfSxNZS5wcm90b3R5cGUud2l0aEFkYXB0ZXJFbmRFbGFwc2VkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkYXB0ZXJFbmRFbGFwc2VkPU1hdGgucm91bmQoZSksdGhpcy5ldmVudHMucHVzaCh7ZXZlbnRJZDpcIkFkYXB0ZXJCaWRFbmRcIixlbGFwc2VkOnRoaXMuYWRhcHRlckVuZEVsYXBzZWR9KSx0aGlzfSxNZS5wcm90b3R5cGUud2l0aEFkYXB0ZXJUaW1lb3V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkYXB0ZXJUaW1lb3V0PWUmJk1hdGgucm91bmQoZSksdGhpcy5ldmVudHMucHVzaCh7ZXZlbnRJZDpcIkFkYXB0ZXJUaW1lb3V0XCIsZWxhcHNlZDp0aGlzLmFkYXB0ZXJUaW1lb3V0fSksdGhpc30sTWUucHJvdG90eXBlLndpdGhTbG90SWRzTWF0Y2hlZEJ5Q2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIDA8KHRoaXMuc2xvdElkc01hdGNoZWRCeUNhY2hlPWUpLmxlbmd0aCYmdGhpcy5ldmVudHMucHVzaCh7ZXZlbnRJZDpcIkNhY2hlZEJpZFVzZWRcIixzbG90czp0aGlzLnNsb3RJZHNNYXRjaGVkQnlDYWNoZX0pLHRoaXN9LE1lLnByb3RvdHlwZS53aXRoVGltZVRvRmlyc3RCeXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRpbWVUb0ZpcnN0Qnl0ZT1lJiZNYXRoLnJvdW5kKGUpLHRoaXMudGltZVRvRmlyc3RCeXRlJiZ0aGlzLmV2ZW50cy5wdXNoKHtldmVudElkOlwiVGltZVRvRmlyc3RCeXRlXCIsZWxhcHNlZDp0aGlzLnRpbWVUb0ZpcnN0Qnl0ZX0pLHRoaXN9LE1lLnByb3RvdHlwZS53aXRoQ29ubmVjdGlvbkVzdGFibGlzaG1lbnRUaW1lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNvbm5lY3Rpb25Fc3RhYmxpc2htZW50VGltZT1lJiZNYXRoLnJvdW5kKGUpLHRoaXMuY29ubmVjdGlvbkVzdGFibGlzaG1lbnRUaW1lJiZ0aGlzLmV2ZW50cy5wdXNoKHtldmVudElkOlwiVGNwQ29ubmVjdGlvbkVsYXBzZWRUaW1lXCIsZWxhcHNlZDp0aGlzLmNvbm5lY3Rpb25Fc3RhYmxpc2htZW50VGltZX0pLHRoaXN9LE1lLnByb3RvdHlwZS53aXRoRG9tYWluTG9va3VwVGltZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb21haW5Mb29rdXBUaW1lPWUmJk1hdGgucm91bmQoZSksdGhpcy5kb21haW5Mb29rdXBUaW1lJiZ0aGlzLmV2ZW50cy5wdXNoKHtldmVudElkOlwiRG9tYWluTG9va3VwRWxhcHNlZFRpbWVcIixlbGFwc2VkOnRoaXMuZG9tYWluTG9va3VwVGltZX0pLHRoaXN9LE1lLnByb3RvdHlwZS53aXRoQ2xpZW50UmVxdWVzdElkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsaWVudFJlcXVlc3RJZD1lLHRoaXN9LE1lLnByb3RvdHlwZS5hZGRTbG90PWZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBvPTA8dGhpcy5zbG90SWRzTWF0Y2hlZEJ5Q2FjaGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pLmxlbmd0aDtyZXR1cm4gdGhpcy5zbG90cy5wdXNoKG5ldyBQZSh0LGUsaSxvLG4pKSx0aGlzfSxNZS5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdm9pZCAwIT09dGhpcy5hZGFwdGVyVGltZW91dCYmKGU9dGhpcy5hZGFwdGVyRW5kRWxhcHNlZD50aGlzLmFkYXB0ZXJUaW1lb3V0KSxuZXcgVGUoUmUsdGhpcy5zbG90cyx0aGlzLmVsYXBzZWQsdGhpcy5pc1RpbWVvdXQsdGhpcy5hZGFwdGVyU3RhcnRFbGFwc2VkLHRoaXMuY2RiQ2FsbFN0YXJ0RWxhcHNlZCx0aGlzLmNkYkNhbGxFbmRFbGFwc2VkLHRoaXMuYWRhcHRlckVuZEVsYXBzZWQsdGhpcy5hZGFwdGVyVGltZW91dCxlLHRoaXMudGltZVRvRmlyc3RCeXRlLHRoaXMuY2xpZW50UmVxdWVzdElkLHRoaXMubWV0cmljc01hbmFnZXIuZ2V0U2lsZW50TW9kZVJlcXVlc3RDb3VudCghMCksdGhpcy5tZXRyaWNzTWFuYWdlci5nZXRMb2NhbFN0b3JhZ2VLZXlDb3VudCgpLHRoaXMuY29ubmVjdGlvbkVzdGFibGlzaG1lbnRUaW1lLHRoaXMuZG9tYWluTG9va3VwVGltZSl9LE1lLnByb3RvdHlwZS5idWlsZEV2ZW50cz1mdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMuY2xpZW50UmVxdWVzdElkKXJldHVybntyZXF1ZXN0SWQ6dGhpcy5jbGllbnRSZXF1ZXN0SWQsZXZlbnRzOnRoaXMuZXZlbnRzfTt0aHJvdyBuZXcgRXJyb3IoXCJidWlsZEV2ZW50cygpIGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhIHJlcXVlc3RJZCFcIil9LE1lKTtmdW5jdGlvbiBNZShlKXt0aGlzLmVsYXBzZWQ9MCx0aGlzLmlzVGltZW91dD0hMSx0aGlzLmFkYXB0ZXJTdGFydEVsYXBzZWQ9MCx0aGlzLmNkYkNhbGxTdGFydEVsYXBzZWQ9MCx0aGlzLmNkYkNhbGxFbmRFbGFwc2VkPTAsdGhpcy5hZGFwdGVyRW5kRWxhcHNlZD0wLHRoaXMuc2xvdElkc01hdGNoZWRCeUNhY2hlPVtdLHRoaXMuc2xvdHM9W10sdGhpcy5ldmVudHM9W10sdGhpcy5tZXRyaWNzTWFuYWdlcj1lfXZhciB4ZT0oQmUucHJvdG90eXBlLmdldFJlcXVlc3Q9ZnVuY3Rpb24oKXtyZXR1cm57ZmVlZGJhY2tzOnRoaXMuZmVlZGJhY2tzfX0sQmUucHJvdG90eXBlLmdldFVybD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVybEJ1aWxkZXIuYnVpbGRDc21VcmwodGhpcy5wcm9maWxlSWQsdGhpcy5hZGFwdGVyVmVyc2lvbix0aGlzLndyYXBwZXJWZXJzaW9uKX0sQmUpO2Z1bmN0aW9uIEJlKGUsdCxpLG4sbyl7dGhpcy51cmxCdWlsZGVyPWUsdGhpcy5wcm9maWxlSWQ9dCx0aGlzLmFkYXB0ZXJWZXJzaW9uPW4sdGhpcy53cmFwcGVyVmVyc2lvbj1vLHRoaXMuZmVlZGJhY2tzPWl9dmFyIE9lPShOZS5nZW5lcmF0ZUNhY2hlQnVzdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoOTk5OTk5OTk5OTkqTWF0aC5yYW5kb20oKSl9LE5lKSxEZSxGZTtmdW5jdGlvbiBOZSgpe31mdW5jdGlvbiBVZShlKXtzd2l0Y2goZS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJhbXBcIjpyZXR1cm4gRGUuQU1QO2RlZmF1bHQ6cmV0dXJuIERlLlVuc3BlY2lmaWVkfX1GZT1EZT1EZXx8e30sRmVbRmUuVW5zcGVjaWZpZWQ9MF09XCJVbnNwZWNpZmllZFwiLEZlW0ZlLkFNUD0xXT1cIkFNUFwiO3ZhciBMZT0oV2UucHJvdG90eXBlLmJ1aWxkVXJsPWZ1bmN0aW9uKGUsdCxpLG4sbyl7dm9pZCAwPT09aSYmKGk9RGUuVW5zcGVjaWZpZWQpO3ZhciByPVdlLkNSSVRFT19CSURERVJfVVJMK3RoaXMuZ2V0SGFuZGxlclBhdGgoKTtyZXR1cm4gcis9XCI/cHR2PVwiK1JlLCEwPT09dC5pc0FkQmxvY2tlZCYmKHIrPVwiJmFicD0xXCIpLHI9dGhpcy5hcHBlbmRDb21tb25QYXJhbWV0ZXJzKHIsZSxuLG8pLHIrPXQuY3RvSWRPblB1Ymxpc2hlckRvbWFpbj9cIiZpZGNweT1cIit0LmN0b0lkT25QdWJsaXNoZXJEb21haW46XCJcIixyKz10LnNlY3VyZUlkP1wiJnNpZD1cIit0LnNlY3VyZUlkOlwiXCIscis9dC5pc09wdE91dD9cIiZvcHRvdXQ9MVwiOlwiXCIscis9dC5idW5kbGU/XCImYnVuZGxlPVwiK3QuYnVuZGxlOlwiXCIsaSE9PURlLlVuc3BlY2lmaWVkJiYocis9XCImaW09XCIraSkscis9dC5zaWxlbnRNb2RlSWdub3JlZD9cIiZzbWk9MVwiOlwiXCIscis9XCImY2I9XCIrU3RyaW5nKE9lLmdlbmVyYXRlQ2FjaGVCdXN0ZXIoKSkscis9dC5nZXRDb250ZXh0RmxhZ3MoKX0sV2UucHJvdG90eXBlLmJ1aWxkQ3NtVXJsPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbj1XZS5DUklURU9fQklEREVSX1VSTCtXZS5DUklURU9fQ1NNX0hBTkRMRVI7cmV0dXJuIG4rPVwiP3B0dj1cIitSZSx0aGlzLmFwcGVuZENvbW1vblBhcmFtZXRlcnMobixlLHQsaSl9LFdlLnByb3RvdHlwZS5idWlsZEVycm9yVXJsPWZ1bmN0aW9uKCl7cmV0dXJuIFdlLkNSSVRFT19CSURERVJfVVJMK1dlLkNSSVRFT19FUlJPUl9IQU5ETEVSfSxXZS5wcm90b3R5cGUuYnVpbGRDc21FdmVudHNVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gV2UuQ1JJVEVPX0JJRERFUl9VUkwrV2UuQ1JJVEVPX0NTTV9FVkVOVFNfSEFORExFUn0sV2UucHJvdG90eXBlLmJ1aWxkQ3NtQ291bnRlcnNVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gV2UuQ1JJVEVPX0JJRERFUl9VUkwrV2UuQ1JJVEVPX0NTTV9DT1VOVEVSU19IQU5ETEVSfSxXZS5wcm90b3R5cGUuYXBwZW5kQ29tbW9uUGFyYW1ldGVycz1mdW5jdGlvbihlLHQsaSxuKXtyZXR1cm4gZSs9XCImcHJvZmlsZUlkPVwiK1N0cmluZyh0KSx2b2lkIDAhPT1pJiYoZSs9XCImYXY9XCIrU3RyaW5nKGkpKSx2b2lkIDAhPT1uJiYoZSs9XCImd3Y9XCIrZW5jb2RlVVJJQ29tcG9uZW50KG4pKSxlfSxXZS5wcm90b3R5cGUuZ2V0SGFuZGxlclBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hdWRpdE1vZGU/V2UuQ1JJVEVPX0JJRERFUl9BVURJVF9IQU5ETEVSOldlLkNSSVRFT19CSURERVJfSEFORExFUn0sV2UuQ1JJVEVPX0JJRERFUl9VUkw9XCJodHRwczovL2JpZGRlci5jcml0ZW8uY29tL1wiLFdlLkNSSVRFT19CSURERVJfSEFORExFUj1cImNkYlwiLFdlLkNSSVRFT19DU01fSEFORExFUj1cImNzbVwiLFdlLkNSSVRFT19DU01fRVZFTlRTX0hBTkRMRVI9XCJjc20vZXZlbnRzXCIsV2UuQ1JJVEVPX0NTTV9DT1VOVEVSU19IQU5ETEVSPVwiY3NtL2NvdW50ZXJzXCIsV2UuQ1JJVEVPX0VSUk9SX0hBTkRMRVI9XCJlcnJvclwiLFdlLkNSSVRFT19CSURERVJfQVVESVRfSEFORExFUj1cInByZWJpZC9hdWRpdFwiLFdlKTtmdW5jdGlvbiBXZShlKXt2b2lkIDA9PT1lJiYoZT0hMSksdGhpcy5hdWRpdE1vZGU9ZX12YXIgSGU9KHplLnByb3RvdHlwZS5nZXRNYW5hZ2VyTWV0cmljcz1mdW5jdGlvbigpe3ZhciBlPXRoaXMubG9jYWxTdG9yYWdlSGVscGVyLmdldEl0ZW0oemUuTUFOQUdFUl9NRVRSSUNTX1NUT1JBR0VfS0VZKTtpZihudWxsPT1lKXJldHVybnt9O3ZhciB0PXJlKGUpO3JldHVybiB2b2lkIDA9PT10P3t9OnR9LHplLnByb3RvdHlwZS5zZXRNYW5hZ2VyTWV0cmljcz1mdW5jdGlvbihlKXt0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5zZXRJdGVtKHplLk1BTkFHRVJfTUVUUklDU19TVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShlKSl9LHplLnByb3RvdHlwZS5nZXRTaWxlbnRNb2RlUmVxdWVzdENvdW50PWZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgdD10aGlzLmdldE1hbmFnZXJNZXRyaWNzKCkuc2lsZW50TW9kZVJlcXVlc3RDb3VudDtyZXR1cm4gZSYmdGhpcy5yZXNldFNpbGVudE1vZGVSZXF1ZXN0Q291bnQoKSxpc05hTih0KT8wOnR9LHplLnByb3RvdHlwZS5pbmNTaWxlbnRNb2RlUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRNYW5hZ2VyTWV0cmljcygpO2Uuc2lsZW50TW9kZVJlcXVlc3RDb3VudD1pc05hTihlLnNpbGVudE1vZGVSZXF1ZXN0Q291bnQpPzE6ZS5zaWxlbnRNb2RlUmVxdWVzdENvdW50KzEsdGhpcy5zZXRNYW5hZ2VyTWV0cmljcyhlKX0semUucHJvdG90eXBlLnJlc2V0U2lsZW50TW9kZVJlcXVlc3RDb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0TWFuYWdlck1ldHJpY3MoKTtlLnNpbGVudE1vZGVSZXF1ZXN0Q291bnQ9MCx0aGlzLnNldE1hbmFnZXJNZXRyaWNzKGUpfSx6ZS5wcm90b3R5cGUuZ2V0TG9jYWxTdG9yYWdlS2V5Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2VIZWxwZXIuZ2V0QWxsSXRlbXNCeVByZWZpeChcImNyaXRlb19cIikubGVuZ3RoK3RoaXMubG9jYWxTdG9yYWdlSGVscGVyLmdldEFsbEl0ZW1zQnlQcmVmaXgoXCJjdG9fXCIpLmxlbmd0aH0semUucHJvdG90eXBlLnNlbmRNZXRyaWM9ZnVuY3Rpb24oZSl7dGhpcy5zZW5kTWV0cmljcyhbZV0pfSx6ZS5wcm90b3R5cGUuc2VuZE1ldHJpY3M9ZnVuY3Rpb24oZSl7aWYoIShlLmxlbmd0aDw9MCkpe3ZhciB0PW5ldyB4ZSh0aGlzLnVybEJ1aWxkZXIsdGhpcy5wcm9maWxlSWQsZSx0aGlzLmFkYXB0ZXJWZXJzaW9uLHRoaXMud3JhcHBlclZlcnNpb24pLGk9dC5nZXRVcmwoKSxuPUpTT04uc3RyaW5naWZ5KHQuZ2V0UmVxdWVzdCgpKTtuYXZpZ2F0b3Iuc2VuZEJlYWNvbiYmbmF2aWdhdG9yLnNlbmRCZWFjb24oaSxuKX19LHplLk1BTkFHRVJfTUVUUklDU19TVE9SQUdFX0tFWT1cImNyaXRlb19wdF9jZGJfbW5ncl9tZXRyaWNzXCIsemUuRVZFTlRTX01FVFJJQ1NfU1RPUkFHRV9LRVk9XCJjcml0ZW9fcHRfY2RiX2V2ZW50c19tZXRyaWNzXCIsemUuQ09VTlRFUlNfTUVUUklDU19TVE9SQUdFX0tFWT1cImNyaXRlb19wdF9jZGJfY291bnRlcnNfbWV0cmljc1wiLHplKTtmdW5jdGlvbiB6ZShlLHQsaSxuKXt0aGlzLnVybEJ1aWxkZXI9bmV3IExlLHRoaXMucHJvZmlsZUlkPWUsdGhpcy5hZGFwdGVyVmVyc2lvbj10LHRoaXMud3JhcHBlclZlcnNpb249aSx0aGlzLmxvY2FsU3RvcmFnZUhlbHBlcj1ufHxuZXcgb312YXIgR2U9KHFlLnByb3RvdHlwZS5pc1ZhbGlkPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5zbG90cy5sZW5ndGh9LHFlLnByb3RvdHlwZS5nZXRSZXF1ZXN0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MCxpPXRoaXMuc2xvdHM7dDxpLmxlbmd0aDt0Kyspe3ZhciBuPWlbdF0sbz17c2xvdGlkOm4uc2xvdElkLGltcGlkOm4uaW1wSWR9O2lmKHZvaWQgMCE9PW4uem9uZUlkJiYoby56b25laWQ9bi56b25lSWQpLHZvaWQgMCE9PW4ubmF0aXZlQ2FsbGJhY2smJihvLm5hdGl2ZT0hMCksdm9pZCAwIT09bi50cmFuc2FjdGlvbklkJiYoby50cmFuc2FjdGlvbmlkPW4udHJhbnNhY3Rpb25JZCksdm9pZCAwIT09bi5wdWJsaXNoZXJTdWJJZCYmKG8ucHVibGlzaGVyc3ViaWQ9bi5wdWJsaXNoZXJTdWJJZCksdm9pZCAwIT09bi5zaXplcyl7Zm9yKHZhciByPVtdLGE9MCxzPW4uc2l6ZXM7YTxzLmxlbmd0aDthKyspe3ZhciBkPXNbYV07ci5wdXNoKGQud2lkdGgrXCJ4XCIrZC5oZWlnaHQpfW8uc2l6ZXM9cn1pZih2b2lkIDAhPT1uLnZpZGVvKXt2YXIgYz17cGxheWVyc2l6ZXM6dGhpcy5wYXJzZVBsYXllclNpemVzKG4udmlkZW8ucGxheWVyc2l6ZSksbWltZXM6bi52aWRlby5taW1lcyxwcm90b2NvbHM6bi52aWRlby5wcm90b2NvbHMsbWF4ZHVyYXRpb246bi52aWRlby5tYXhkdXJhdGlvbixhcGk6bi52aWRlby5hcGksc2tpcDpuLnZpZGVvLnNraXAscGxhY2VtZW50Om4udmlkZW8ucGxhY2VtZW50LHBsYXliYWNrbWV0aG9kOm4udmlkZW8ucGxheWJhY2ttZXRob2QsbWluZHVyYXRpb246bi52aWRlby5taW5kdXJhdGlvbixzdGFydGRlbGF5Om4udmlkZW8uc3RhcnRkZWxheX07by52aWRlbz1jfWlmKHZvaWQgMCE9PXRoaXMudmlld3BvcnRDb21wdXRlcil7dmFyIGw9dGhpcy52aWV3cG9ydENvbXB1dGVyLmdldFNsb3RQb3NpdGlvbihuKTt2b2lkIDAhPT1sJiYoby5wb3NpdGlvbj17dG9wOmwudG9wLGxlZnQ6bC5sZWZ0fSl9dm9pZCAwIT09bi5leHQmJihvLmV4dD1uLmV4dCksZS5wdXNoKG8pfXZhciB1PXtjZWg6dGhpcy5jb250ZXh0LmNlaCx1c3BPcHRvdXQ6dGhpcy5jb250ZXh0LmNjcGFPcHRvdXQsZXh0OnRoaXMuY29udGV4dC51c2VyRXh0fSxwPXtwdWJsaXNoZXI6e3VybDp0aGlzLmNvbnRleHQuaGlnaGVzdEFjY2Vzc2libGVVcmwsZXh0OnRoaXMuY29udGV4dC5wdWJsaXNoZXJFeHR9LHNsb3RzOmUsdXNlcjp1fTtpZih2b2lkIDAhPT10aGlzLm5ldHdvcmtJZCYmKHAucHVibGlzaGVyLm5ldHdvcmtpZD10aGlzLm5ldHdvcmtJZCksdGhpcy5wcml2YWN5V3JhcHBlciYmKHRoaXMucHJpdmFjeVdyYXBwZXIuZ2RwckNvbnNlbnQmJihwLmdkcHJDb25zZW50PXRoaXMucHJpdmFjeVdyYXBwZXIuZ2RwckNvbnNlbnQpLHRoaXMucHJpdmFjeVdyYXBwZXIuY2NwYUlhYkNvbnNlbnQmJih1LnVzcElhYj10aGlzLnByaXZhY3lXcmFwcGVyLmNjcGFJYWJDb25zZW50LnVzcFN0cmluZykpLHZvaWQgMCE9PXRoaXMudmlld3BvcnRDb21wdXRlcil7dmFyIGg9dGhpcy52aWV3cG9ydENvbXB1dGVyLmdldFZpZXdwb3J0KCk7cC52aWV3cG9ydD17d2lkdGg6aC53aWR0aCxoZWlnaHQ6aC5oZWlnaHQsc2Nyb2xsVG9wOmguc2Nyb2xsVG9wLHNjcm9sbExlZnQ6aC5zY3JvbGxMZWZ0fX1yZXR1cm4gdm9pZCAwIT09dGhpcy5hZGFwdGVyVGltZW91dCYmKHAudG1heD10aGlzLmFkYXB0ZXJUaW1lb3V0KSx2b2lkIDAhPT10aGlzLmF1Y3Rpb25TdGFydCYmKHAuYXVjdGlvblN0YXJ0PXRoaXMuYXVjdGlvblN0YXJ0KSx2b2lkIDAhPT10aGlzLmNsaWVudFJlcXVlc3RJZCYmKHAuaWQ9dGhpcy5jbGllbnRSZXF1ZXN0SWQpLHZvaWQgMCE9PXRoaXMudXNlcklkcyYmKHAuZWlkcz10aGlzLnVzZXJJZHMpLHB9LHFlLnBhcnNlUGxheWVyU2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gZVswXStcInhcIitlWzFdfSxxZS5wcm90b3R5cGUucGFyc2VQbGF5ZXJTaXplcz1mdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlWzBdKT9lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gcWUucGFyc2VQbGF5ZXJTaXplKGUpfSk6W3FlLnBhcnNlUGxheWVyU2l6ZShlKV19LHFlLnByb3RvdHlwZS5nZXRVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cmxCdWlsZGVyLmJ1aWxkVXJsKHRoaXMucHJvZmlsZUlkLHRoaXMuY29udGV4dCx0aGlzLmludGVncmF0aW9uTW9kZSx0aGlzLmFkYXB0ZXJWZXJzaW9uLHRoaXMud3JhcHBlclZlcnNpb24pfSxxZSk7ZnVuY3Rpb24gcWUoZSx0LGksbixvLHIsYSxzLGQsYyxsLHUscCxoKXt0aGlzLnNsb3RzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy51cmxCdWlsZGVyPWksdGhpcy5wcm9maWxlSWQ9bix0aGlzLmludGVncmF0aW9uTW9kZT1vfHxEZS5VbnNwZWNpZmllZCx0aGlzLm5ldHdvcmtJZD1yLHRoaXMuYWRhcHRlclZlcnNpb249YSx0aGlzLnByaXZhY3lXcmFwcGVyPXMsdGhpcy53cmFwcGVyVmVyc2lvbj1kLHRoaXMudmlld3BvcnRDb21wdXRlcj1jLHRoaXMuYWRhcHRlclRpbWVvdXQ9bCx0aGlzLmNsaWVudFJlcXVlc3RJZD11LHRoaXMudXNlcklkcz1wLHRoaXMuYXVjdGlvblN0YXJ0PWh9ZnVuY3Rpb24gS2UoZSl7dmFyIHQ9e3Nsb3RzOnZvaWQgMCx0aW1lX3RvX25leHRfY2FsbDowfTtyZXR1cm4gdm9pZCAwIT09ZS5leGQmJih2b2lkIDAhPT1lLmV4ZC50aW1lX3RvX25leHRfY2FsbCYmKHQudGltZV90b19uZXh0X2NhbGw9ZS5leGQudGltZV90b19uZXh0X2NhbGwpLHQuc2xvdHM9ZS5leGQuc2xvdHMsZGVsZXRlIGUuZXhkKSx0fXZhciBWZT0oamUuQ3JlYXRlUnVubmluZz1mdW5jdGlvbigpe3ZhciBlPW5ldyBqZTtyZXR1cm4gZS5zdGFydCgpLGV9LGplLkNyZWF0ZVdpdGhTdGFydFRpbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGplKCExKTtyZXR1cm4gdC5zdGFydFRpbWU9ZSx0fSxqZS5UaW1lU2luY2VQYWdlTG9hZD1mdW5jdGlvbigpe2lmKHdpbmRvdy5wZXJmb3JtYW5jZSl7aWYod2luZG93LnBlcmZvcm1hbmNlLm5vdylyZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpO2lmKHdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcmJndpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0KXJldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpLXBlcmZvcm1hbmNlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnR9cmV0dXJuIDB9LGplLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3RoaXMuc3RhcnRUaW1lPXRoaXMubm93KCl9LGplLnByb3RvdHlwZS5lbGFwc2VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm93KCktdGhpcy5zdGFydFRpbWV9LGplKTtmdW5jdGlvbiBqZShlKXt2b2lkIDA9PT1lJiYoZT0hMCksZSYmd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2Uubm93P3RoaXMubm93PXdpbmRvdy5wZXJmb3JtYW5jZS5ub3cuYmluZCh3aW5kb3cucGVyZm9ybWFuY2UpOkRhdGUubm93P3RoaXMubm93PURhdGUubm93OnRoaXMubm93PWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fWZ1bmN0aW9uIFllKGUpe2lmKHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXMpZm9yKHZhciB0PXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzKCksaT10Lmxlbmd0aC0xOzA8PWk7LS1pKXt2YXIgbj10W2ldO2lmKG4ubmFtZT09PWUmJm4uZHVyYXRpb24pcmV0dXJuIE1hdGgucm91bmQobi5kdXJhdGlvbil9fXZhciBKZT0oWGUucHJvdG90eXBlLnNlbmRSZXF1ZXN0PWZ1bmN0aW9uKGUpe3RoaXMudXJsPWUsdGhpcy5zZW5kVGltZT1WZS5DcmVhdGVSdW5uaW5nKCksdGhpcy5idWlsZGVyLndpdGhDZGJDYWxsU3RhcnRFbGFwc2VkKHRoaXMudGltZXIuZWxhcHNlZCgpKX0sWGUucHJvdG90eXBlLnJlcXVlc3RSZWNlaXZlZD1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0hMSksdGhpcy5idWlsZGVyLndpdGhFbGFwc2VkKFllKHRoaXMudXJsKXx8dGhpcy5zZW5kVGltZS5lbGFwc2VkKCkpLHRoaXMuYnVpbGRlci53aXRoQ2RiQ2FsbEVuZEVsYXBzZWQodGhpcy50aW1lci5lbGFwc2VkKCkpLHRoaXMuYnVpbGRlci53aXRoSXNUaW1lb3V0KGUpfSxYZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe2lmKHRoaXMuYnVpbGRlci53aXRoQWRhcHRlckVuZEVsYXBzZWQodGhpcy50aW1lci5lbGFwc2VkKCkpLGUmJjAhPT1lLmxlbmd0aClmb3IodmFyIHQ9MCxpPWU7dDxpLmxlbmd0aDt0Kyspe3ZhciBuPWlbdF07dGhpcy5idWlsZGVyLmFkZFNsb3Qobi5pbXBfaWQsbi56b25lX2lkLG4uYWRfdW5pdF9pZCxuLmlzX2RzYyl9ZWxzZSB0aGlzLmJ1aWxkZXIuYWRkU2xvdChcIlwiKTt2YXIgbz1YZS5nZXRMYXN0Q2RiVGltaW5nKCk7cmV0dXJuIHZvaWQgMCE9PW8mJih0aGlzLmJ1aWxkZXIud2l0aFRpbWVUb0ZpcnN0Qnl0ZShYZS5jb21wdXRlVGltZVRvRmlyc3RCeXRlKG8pKSx0aGlzLmJ1aWxkZXIud2l0aENvbm5lY3Rpb25Fc3RhYmxpc2htZW50VGltZShYZS5jb21wdXRlQ29ubmVjdGlvbkVzdGFibGlzaG1lbnRUaW1lKG8pKSx0aGlzLmJ1aWxkZXIud2l0aERvbWFpbkxvb2t1cFRpbWUoWGUuY29tcHV0ZURvbWFpbkxvb2t1cFRpbWUobykpKSx0aGlzLmJ1aWxkKCl9LFhlLmdldExhc3RDZGJUaW1pbmc9ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT13aW5kb3cucGVyZm9ybWFuY2UmJnZvaWQgMCE9PXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSl7dmFyIGU9d2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoXCJyZXNvdXJjZVwiKTtpZih2b2lkIDAhPT1lKXt2YXIgdD1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gMDw9ZS5uYW1lLmluZGV4T2YoXCJjZGJcIil9KTtyZXR1cm4gdm9pZCAwIT09dCYmMDx0Lmxlbmd0aD90W3QubGVuZ3RoLTFdOnZvaWQgMH19fSxYZS5jb21wdXRlVGltZVRvRmlyc3RCeXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVzcG9uc2VTdGFydCxpPWUucmVxdWVzdFN0YXJ0O2lmKHZvaWQgMCE9PXQmJnZvaWQgMCE9PWkpcmV0dXJuIHQtaX0sWGUuY29tcHV0ZUNvbm5lY3Rpb25Fc3RhYmxpc2htZW50VGltZT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbm5lY3RFbmQtZS5jb25uZWN0U3RhcnQ7cmV0dXJuIGlzTmFOKHQpP3ZvaWQgMDp0fSxYZS5jb21wdXRlRG9tYWluTG9va3VwVGltZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRvbWFpbkxvb2t1cEVuZC1lLmRvbWFpbkxvb2t1cFN0YXJ0O3JldHVybiBpc05hTih0KT92b2lkIDA6dH0sWGUucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVpbGRlci5idWlsZCgpfSxYZSk7ZnVuY3Rpb24gWGUoZSx0LGksbil7dGhpcy5idWlsZGVyPWUsdGhpcy50aW1lcj12b2lkIDAhPT10P1ZlLkNyZWF0ZVdpdGhTdGFydFRpbWUodCk6VmUuQ3JlYXRlUnVubmluZygpO3ZhciBvPXRoaXMudGltZXIuZWxhcHNlZCgpO3RoaXMuYnVpbGRlci53aXRoQWRhcHRlclN0YXJ0RWxhcHNlZChvKSx0aGlzLmJ1aWxkZXIud2l0aENsaWVudFJlcXVlc3RJZChufHxBZSgpKSx2b2lkIDAhPT1pJiZ0aGlzLmJ1aWxkZXIud2l0aEFkYXB0ZXJUaW1lb3V0KGkpfXZhciBaZT0oUWU9RyxhKCRlLFFlKSwkZS5wcm90b3R5cGUuc2V0R0RQUkNvbnNlbnQ9ZnVuY3Rpb24oZSl7dGhpcy5nZHByQ29uc2VudD1lfSwkZS5wcm90b3R5cGUuc2V0Q0NQQUlhYkNvbnNlbnQ9ZnVuY3Rpb24oZSl7dGhpcy5jY3BhSWFiQ29uc2VudD1lfSwkZS5wcm90b3R5cGUuZ2V0TWV0cmljQnVpbGRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1ldHJpY0J1aWxkZXJ9LCRlLnByb3RvdHlwZS5nZXRNZXRyaWNzTWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1ldHJpY3NNYW5hZ2VyfSwkZS5wcm90b3R5cGUuZXZhbD1mdW5jdGlvbihlKXt0aGlzLmV2YWxXaXRoVGltZW91dChlLHZvaWQgMCl9LCRlLnByb3RvdHlwZS5ldmFsV2l0aFRpbWVvdXQ9ZnVuY3Rpb24obixlKXt2YXIgbz10aGlzLHI9QWUoKSx0PSRlLmdldENyaXRlb0FkYXB0ZXJCaWRSZXF1ZXN0KCksaT0kZS5nZXRSZXF1ZXN0QXVjdGlvblN0YXJ0KHQpLGE9ZXx8X2UodCYmdC50aW1lb3V0KSxzPW5ldyBKZSh0aGlzLm1ldHJpY0J1aWxkZXIsaSxhLHIpLGQ9bmV3IEdlKHRoaXMuc2xvdHMsbi5jb250ZXh0LHRoaXMudXJsQnVpbGRlcix0aGlzLnByb2ZpbGVJZCx0aGlzLmludGVncmF0aW9uTW9kZSx0aGlzLm5ldHdvcmtJZCx0aGlzLmFkYXB0ZXJWZXJzaW9uLHtjY3BhSWFiQ29uc2VudDp0aGlzLmNjcGFJYWJDb25zZW50LGdkcHJDb25zZW50OnRoaXMuZ2RwckNvbnNlbnR9LHZvaWQgMCx0aGlzLnZpZXdwb3J0Q29tcHV0ZXIsYSxyLHZvaWQgMCxNYXRoLnJvdW5kKG5ldyBEYXRlLzFlMykpO2lmKCFkLmlzVmFsaWQoKXx8XCJ1bmRlZmluZWRcIj09dHlwZW9mIEpTT04pcmV0dXJuIEQuRGVidWcoXCJSZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBpdCBkb2VzbnQgY29udGFpbiBhbnkgc2xvdFwiKSx2b2lkIHRoaXMuY2FsbGJhY2tFcnJvcih2b2lkIDAsdm9pZCAwKTt2YXIgYz1kLmdldFJlcXVlc3QoKSxsPUpTT04uc3RyaW5naWZ5KGMpLHU9ZC5nZXRVcmwoKSxwPW5ldyBrKHUsbCxcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiKTtzLnNlbmRSZXF1ZXN0KHUpLHAuc2VuZChmdW5jdGlvbihlKXt0cnl7cy5yZXF1ZXN0UmVjZWl2ZWQoKTt2YXIgdD1yZShlKXx8e30saT1LZSh0KTt2b2lkIDAhPT1vLmNhbGxiYWNrU3VjY2VzcyYmby5jYWxsYmFja1N1Y2Nlc3MoSlNPTi5zdHJpbmdpZnkodCksaSksby5tZXRyaWNzTWFuYWdlci5zZW5kTWV0cmljKHMuZmluaXNoKGkuc2xvdHMpKX1jYXRjaChlKXtvLnJlcG9ydEFzeW5jUmVxdWVzdEV4Y2VwdGlvbihuLFwib25TdWNjZXNzXCIsZSl9bi5jb250ZXh0LnJlbW90ZUxvZ2dpbmcuc2VuZEVycm9yUmVwb3J0KG8udXJsQnVpbGRlcixyKX0sZnVuY3Rpb24oZSx0KXt0cnl7cy5yZXF1ZXN0UmVjZWl2ZWQoKSx2b2lkIDAhPT1vLmNhbGxiYWNrRXJyb3ImJm8uY2FsbGJhY2tFcnJvcihlLHQpLG8ubWV0cmljc01hbmFnZXIuc2VuZE1ldHJpYyhzLmZpbmlzaCgpKX1jYXRjaChlKXtvLnJlcG9ydEFzeW5jUmVxdWVzdEV4Y2VwdGlvbihuLFwib25FcnJvclwiLGUpfW4uY29udGV4dC5yZW1vdGVMb2dnaW5nLnNlbmRFcnJvclJlcG9ydChvLnVybEJ1aWxkZXIscil9LGZ1bmN0aW9uKCl7dHJ5e3MucmVxdWVzdFJlY2VpdmVkKCEwKSx2b2lkIDAhPT1vLmNhbGxiYWNrVGltZW91dCYmby5jYWxsYmFja1RpbWVvdXQoKSxvLm1ldHJpY3NNYW5hZ2VyLnNlbmRNZXRyaWMocy5maW5pc2goKSl9Y2F0Y2goZSl7by5yZXBvcnRBc3luY1JlcXVlc3RFeGNlcHRpb24obixcIm9uVGltZW91dFwiLGUpfW4uY29udGV4dC5yZW1vdGVMb2dnaW5nLnNlbmRFcnJvclJlcG9ydChvLnVybEJ1aWxkZXIscil9LHRoaXMudGltZW91dCl9LCRlLnByb3RvdHlwZS5yZXBvcnRBc3luY1JlcXVlc3RFeGNlcHRpb249ZnVuY3Rpb24oZSx0LGkpe3ZhciBuPWkuc3RhY2s/aS5zdGFjazppLnRvU3RyaW5nKCk7ZS5jb250ZXh0LnJlbW90ZUxvZ2dpbmcubG9nKFwiRXhjZXB0aW9uXCIsXCJFeGNlcHRpb24gY2F1Z2h0IGluIEFzeW5jUmVxdWVzdCBcIit0K1wiIGNhbGxiYWNrOlxcblwiK24pLEQuRXJyb3IoXCJFcnJvciBcIit0K1wiOlxcblxcdFwiK24pfSwkZS5nZXRDcml0ZW9BZGFwdGVyQmlkUmVxdWVzdD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2luZG93LnBianMuX2JpZHNSZXF1ZXN0ZWQuZmluZChmdW5jdGlvbihlKXtyZXR1cm5cImNyaXRlb1wiPT09ZS5iaWRkZXJDb2RlfSl9Y2F0Y2goZSl7cmV0dXJufX0sJGUuZ2V0UmVxdWVzdEF1Y3Rpb25TdGFydD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5hdWN0aW9uU3RhcnR9LCRlLk5BTUU9XCJkaXJlY3RiaWRkaW5nXCIsJGUpLFFlO2Z1bmN0aW9uICRlKGUsdCxpLG4sbyxyLGEscyxkLGMsbCx1KXt2YXIgcD1RZS5jYWxsKHRoaXMsJGUuTkFNRSl8fHRoaXM7cmV0dXJuIHAucHJvZmlsZUlkPWUscC51cmxCdWlsZGVyPXQscC5zbG90cz1pLHAubWV0cmljc01hbmFnZXI9dXx8bmV3IEhlKGUpLHAubWV0cmljQnVpbGRlcj1uZXcga2UocC5tZXRyaWNzTWFuYWdlcikscC5jYWxsYmFja1N1Y2Nlc3M9bixwLmNhbGxiYWNrRXJyb3I9byxwLmNhbGxiYWNrVGltZW91dD1yLHAudGltZW91dD1hLHAubmV0d29ya0lkPXMscC5pbnRlZ3JhdGlvbk1vZGU9ZCxwLmFkYXB0ZXJWZXJzaW9uPWMscC52aWV3cG9ydENvbXB1dGVyPWwscH12YXIgZXQ9KHR0PUcsYShpdCx0dCksaXQucHJvdG90eXBlLmV2YWw9ZnVuY3Rpb24odCl7dmFyIGk9dGhpcyxlPXRoaXMudGNmQ29tcGF0aWJsZUNvbnNlbnRQcm92aWRlci5yZWFkeVRvUmV0cmlldmUoKSxuPXRoaXMuY2NwYUNvbnNlbnRQcm92aWRlci5yZWFkeVRvUmV0cmlldmUoKTtpZihlfHxuKXt2YXIgbyxyLGE9W107ZSYmYS5wdXNoKFEpLG4mJmEucHVzaChqKSxlJiZ0aGlzLnRjZkNvbXBhdGlibGVDb25zZW50UHJvdmlkZXIucmV0cmlldmVDb25zZW50KGZ1bmN0aW9uKGUpe2Euc3BsaWNlKGEuaW5kZXhPZihcIkdEUFJcIiksMSksMD09PWEubGVuZ3RoP2kuZXZhbFdpdGhDbXAodCxlLHIpOm89ZX0pLG4mJnRoaXMuY2NwYUNvbnNlbnRQcm92aWRlci5yZXRyaWV2ZUNvbnNlbnQoZnVuY3Rpb24oZSl7YS5zcGxpY2UoYS5pbmRleE9mKFwiQ0NQQVwiKSwxKSwwPT09YS5sZW5ndGg/aS5ldmFsV2l0aENtcCh0LG8sZSk6cj1lfSl9ZWxzZSB0aGlzLmV2YWxXaXRoQ21wKHQsdm9pZCAwLHZvaWQgMCl9LGl0LnByb3RvdHlwZS5ldmFsV2l0aENtcD1mdW5jdGlvbihlLHQsaSl7dmFyIG49dGhpcztpZih0aGlzLmNhY2hlLnNpbGVudE1vZGVFbmFibGVkKCkpcmV0dXJuIEQuRGVidWcoXCJSZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSB0aGUgZ2xvYmFsIHNpbGVudCBtb2RlIGlzIGVuYWJsZWRcIiksdGhpcy5nZXRNZXRyaWNzTWFuYWdlcigpLmluY1NpbGVudE1vZGVSZXF1ZXN0Q291bnQoKSx2b2lkIHRoaXMuY2FsbGJhY2tTdWNjZXNzKFwiXCIsdm9pZCAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4ub25UaW1lb3V0KCl9LHRoaXMudGltZW91dHx8M2UzKSx0aGlzLmRpcmVjdEJpZGRpbmdFdmVudC5zZXRHRFBSQ29uc2VudCh0KSx0aGlzLmRpcmVjdEJpZGRpbmdFdmVudC5zZXRDQ1BBSWFiQ29uc2VudChpKSx0aGlzLmRpcmVjdEJpZGRpbmdFdmVudC5ldmFsV2l0aFRpbWVvdXQoZSx0aGlzLnRpbWVvdXQpfSxpdC5wcm90b3R5cGUub25TdWNjZXNzPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5oYXNSZXNwb25kZWQ9ITAsdm9pZCAwIT09dCl7dmFyIGk9cmUoZSk7dGhpcy5jYWNoZS5oYW5kbGVSZXNwb25zZSh0aGlzLnNsb3RzLGksdCx0aGlzLmhhc1RpbWVvdXRlZCl9dGhpcy5oYXNUaW1lb3V0ZWR8fHRoaXMuY2FsbGJhY2tTdWNjZXNzKGUsdCksdGhpcy5jYWNoZS5jbGVhckV4cGlyZWRJdGVtcygpfSxpdC5wcm90b3R5cGUub25FcnJvcj1mdW5jdGlvbihlLHQpe3RoaXMuaGFzUmVzcG9uZGVkPSEwLHRoaXMuaGFzVGltZW91dGVkfHx0aGlzLmNhbGxiYWNrRXJyb3IoZSx0KSx0aGlzLmNhY2hlLmNsZWFyRXhwaXJlZEl0ZW1zKCl9LGl0LnByb3RvdHlwZS5vbkh0dHBUaW1lb3V0PWZ1bmN0aW9uKCl7dGhpcy5oYXNSZXNwb25kZWQ9ITAsdGhpcy5oYXNUaW1lb3V0ZWR8fHRoaXMuY2FsbGJhY2tUaW1lb3V0KCksdGhpcy5jYWNoZS5jbGVhckV4cGlyZWRJdGVtcygpfSxpdC5wcm90b3R5cGUub25UaW1lb3V0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuaGFzUmVzcG9uZGVkKXt0aGlzLmhhc1RpbWVvdXRlZD0hMDt2YXIgdD10aGlzLmNhY2hlLmdldENhY2hlZEJpZHModGhpcy5zbG90cyksZT1PYmplY3Qua2V5cyh0KSxpPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7MD09PU9iamVjdC5rZXlzKHQpLmxlbmd0aD90aGlzLmNhbGxiYWNrVGltZW91dCgpOihELkRlYnVnKFwiQ2FjaGVkIGJpZHMgcmV0dXJuZWQgYmVjYXVzZSBvZiB0aW1lb3V0OiBbJ1wiK2kubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmltcGlkfSkuam9pbihcIicsICdcIikrXCInXVwiKSx0aGlzLmdldE1ldHJpY0J1aWxkZXIoKS53aXRoU2xvdElkc01hdGNoZWRCeUNhY2hlKGUpLHRoaXMuY2FsbGJhY2tTdWNjZXNzKEpTT04uc3RyaW5naWZ5KHtzbG90czppfSksdm9pZCAwKSl9fSxpdC5wcm90b3R5cGUuZ2V0TWV0cmljQnVpbGRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpcmVjdEJpZGRpbmdFdmVudC5nZXRNZXRyaWNCdWlsZGVyKCl9LGl0LnByb3RvdHlwZS5nZXRNZXRyaWNzTWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpcmVjdEJpZGRpbmdFdmVudC5nZXRNZXRyaWNzTWFuYWdlcigpfSxpdC5wcm90b3R5cGUuZ2V0QmlkQ2FjaGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYWNoZX0saXQuTkFNRT1cImRpcmVjdGJpZGRpbmdcIixpdCksdHQ7ZnVuY3Rpb24gaXQoZSx0LGksbixvLHIsYSxzLGQsYyxsLHUscCxoKXt2YXIgZj10dC5jYWxsKHRoaXMsaXQuTkFNRSl8fHRoaXMsdj1NYXRoLm1heCgxMCooYXx8M2UzKSwzZTMpO2YuY2FjaGU9bmV3IEVlKHdpbmRvdy5jcml0ZW9fcHVidGFnLmNvbnRleHQsaSxzKSxmLmRpcmVjdEJpZGRpbmdFdmVudD1uZXcgWmUoZSx0LGYuY2FjaGUuZmlsdGVyTm9CaWRTbG90cyhpKSxmdW5jdGlvbihlLHQpe3JldHVybiBmLm9uU3VjY2VzcyhlLHQpfSxmdW5jdGlvbihlLHQpe3JldHVybiBmLm9uRXJyb3IoZSx0KX0sZnVuY3Rpb24oKXtyZXR1cm4gZi5vbkh0dHBUaW1lb3V0KCl9LHYscyxkLGMsbCx1KSxmLnNsb3RzPWksZi5jYWxsYmFja1N1Y2Nlc3M9bixmLmNhbGxiYWNrRXJyb3I9byxmLmNhbGxiYWNrVGltZW91dD1yLGYudGltZW91dD1hLGYuaGFzVGltZW91dGVkPSExLGYuaGFzUmVzcG9uZGVkPSExO3ZhciBnPW9lKCk7cmV0dXJuIGYudGNmQ29tcGF0aWJsZUNvbnNlbnRQcm92aWRlcj1wfHxuZXcgSihuZXcgUSh3aW5kb3csZyxELldhcm5pbmcpLG5ldyBpZSh3aW5kb3csZyxELldhcm5pbmcpLEQuV2FybmluZyksZi5jY3BhQ29uc2VudFByb3ZpZGVyPWh8fG5ldyBqKHdpbmRvdyxnLEQuV2FybmluZyksZn12YXIgbnQ9KG90PUcsYShydCxvdCkscnQucHJvdG90eXBlLmV2YWw9ZnVuY3Rpb24oZSl7dGhpcy5jYWxsYmFjayYmdGhpcy5jYWxsYmFjay5hcHBseSh0aGlzKX0scnQuTkFNRT1cImdlbmVyaWNFdmVudFwiLHJ0KSxvdDtmdW5jdGlvbiBydChlKXt2YXIgdD1vdC5jYWxsKHRoaXMscnQuTkFNRSl8fHRoaXM7cmV0dXJuIHQuY2FsbGJhY2s9ZSx0fXZhciBhdD0oc3QucHJvdG90eXBlLmdlbmVyYXRlUmFuZG9tSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikucmVwbGFjZSgvW15hLXpdKy9nLFwiXCIpLnN1YnN0cigwLDYpfSxzdCk7ZnVuY3Rpb24gc3QoZSx0LGksbixvLHIsYSl7dGhpcy5pZD10aGlzLmdlbmVyYXRlUmFuZG9tSWQoKSx0aGlzLnNsb3RJZD1lLHRoaXMuaW1wcmVzc2lvbklkPXQsdGhpcy5jcG09aSx0aGlzLndpZHRoPW4sdGhpcy5oZWlnaHQ9byx0aGlzLnpvbmVJZD1yLHRoaXMuZGVhbENvZGU9YX12YXIgZHQ9KGN0PWF0LGEobHQsY3QpLGx0LnByb3RvdHlwZS5HZW5lcmF0ZUV2ZW50PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGUuUmVzaXplRnJhbWUodGhpcy53aWR0aCx0aGlzLmhlaWdodCksbmV3IG50KGZ1bmN0aW9uKCl7cmV0dXJuIGUuTG9hZFNjcmlwdCh0LmRpc3BsYXlVcmwpfSl9LGx0LnByb3RvdHlwZS5HZW5lcmF0ZU1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm57ZGlzcGxheVVybDp0aGlzLmRpc3BsYXlVcmx9fSxsdCksY3Q7ZnVuY3Rpb24gbHQoZSx0LGksbixvLHIsYSxzKXt2YXIgZD1jdC5jYWxsKHRoaXMsZSx0LGksbixvLHIscyl8fHRoaXM7cmV0dXJuIGQuZGlzcGxheVVybD1hLGR9dmFyIHV0PShwdD1hdCxhKGh0LHB0KSxodC5wcm90b3R5cGUuR2VuZXJhdGVFdmVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiBlLlJlc2l6ZUZyYW1lKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLG5ldyBudChmdW5jdGlvbigpe3JldHVybiBlLldyaXRlKHQuY3JlYXRpdmUpfSl9LGh0LnByb3RvdHlwZS5HZW5lcmF0ZU1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm57Y3JlYXRpdmU6dGhpcy5jcmVhdGl2ZX19LGh0KSxwdDtmdW5jdGlvbiBodChlLHQsaSxuLG8scixhLHMpe3ZhciBkPXB0LmNhbGwodGhpcyxlLHQsaSxuLG8scixzKXx8dGhpcztyZXR1cm4gZC5jcmVhdGl2ZT1hLGR9dmFyIGZ0PSh2dD1hdCxhKGd0LHZ0KSxndC5wcm90b3R5cGUuR2VuZXJhdGVFdmVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVyblwiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXMubmF0aXZlQ2FsbGJhY2s/KEQuRXJyb3IoXCInbmF0aXZlQ2FsbGJhY2snIHBhcmFtZXRlciBpcyBub3QgYSBmdW5jdGlvbiBpbiBwbGFjZW1lbnRzIG9iamVjdFwiKSxuZXcgbnQodm9pZCAwKSk6XCJvYmplY3RcIiE9dHlwZW9mIHRoaXMubmF0aXZlUGF5bG9hZD8oRC5FcnJvcihcIiduYXRpdmVQYXlsb2FkJyBwYXJhbWV0ZXIgaXMgbm90IGFuIG9iamVjdCBpbiBwbGFjZW1lbnRzIG9iamVjdFwiKSxuZXcgbnQodm9pZCAwKSk6bmV3IG50KGZ1bmN0aW9uKCl7cmV0dXJuIHQubmF0aXZlQ2FsbGJhY2sodC5uYXRpdmVQYXlsb2FkKX0pfSxndC5wcm90b3R5cGUuR2VuZXJhdGVNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJue25hdGl2ZVBheWxvYWQ6dGhpcy5uYXRpdmVQYXlsb2FkfX0sZ3QpLHZ0O2Z1bmN0aW9uIGd0KGUsdCxpLG4sbyxyLGEscyxkKXt2YXIgYz12dC5jYWxsKHRoaXMsZSx0LGksbixvLHIsZCl8fHRoaXM7cmV0dXJuIGMubmF0aXZlQ2FsbGJhY2s9YSxjLm5hdGl2ZVBheWxvYWQ9cyxjfWZ1bmN0aW9uIG10KGUsdCxpLG4sbyxyLGEscyxkLGMsbCl7cmV0dXJuIHZvaWQgMCE9PWEmJnZvaWQgMCE9PXM/bmV3IGZ0KGUsdCxpLG4sbyxyLGEscyxsKTp2b2lkIDA9PT1kfHx2b2lkIDAhPT1jJiZcIjxzY3JpcHRcIiE9PWMuc3Vic3RyKDAsNyk/dm9pZCAwIT09Yz9uZXcgdXQoZSx0LGksbixvLHIsYyxsKTp2b2lkIDA6bmV3IGR0KGUsdCxpLG4sbyxyLGQsbCl9dmFyIHl0PShidC50cnlJbnNlcnRQbGFjZWhvbGRlcj1mdW5jdGlvbihlLHQsaSl7dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobnVsbD09PW4pcmV0dXJuIEQuV2FybmluZyhcIlVuYWJsZSB0byBpbnNlcnQgYWQgcGxhY2Vob2xkZXIgOiBpbXByZXNzaW9uIGlkIFwiK2UrXCIgbm90IGZvdW5kLlwiKSwhMTtpZihuLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIoKSksIXQmJnRoaXMuaXNWaXNpYmxlKG4pKXJldHVybiEwO3RoaXMucmVtb3ZlUGxhY2Vob2xkZXIoZSxpKTt2YXIgbz1uLnBhcmVudEVsZW1lbnQ7aWYobnVsbD09PW8pcmV0dXJuITE7dmFyIHI9dGhpcy5jcmVhdGVDbG9uZShuKTtyZXR1cm4gby5pbnNlcnRCZWZvcmUocixuKSxyLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIoKSksdGhpcy5pc1Zpc2libGUocik/KGlbZV09ciwhMCk6KEQuV2FybmluZyhcIkFkIHBsYWNlaG9sZGVyIGNyZWF0ZWQgYnV0IG5vdCB2aXNpYmxlIDogY2FuJ3QgcmVuZGVyLlwiKSxvLnJlbW92ZUNoaWxkKHIpLCExKX0sYnQuaXNWaXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiAwIT09ZS5vZmZzZXRXaWR0aCYmMCE9PWUub2Zmc2V0SGVpZ2h0JiYwIT09ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aH0sYnQuY3JlYXRlQ2xvbmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbG9uZU5vZGUoITEpO3JldHVybiB0LmlkPXRoaXMuZ2VuZXJhdGVSYW5kb21JZCgpLHQuY2xhc3NOYW1lPVwiXCIsXCJub25lXCI9PT10LnN0eWxlLmRpc3BsYXkmJnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJkaXNwbGF5XCIpLFwiU1BBTlwiPT09dC50YWdOYW1lJiYodC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIiksZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLHR9LGJ0LmdlbmVyYXRlUmFuZG9tSWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9XCIxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIix0PVwiXCIsaT0wO2k8MjA7aSsrKXt2YXIgbj1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqZS5sZW5ndGgpO3QrPWUuY2hhckF0KG4pfXJldHVybiB0fSxidC5jcmVhdGVQbGFjZWhvbGRlcj1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cmV0dXJuIGUuc3R5bGUud2lkdGg9XCIxcHhcIixlLnN0eWxlLmhlaWdodD1cIjFweFwiLGUuc3R5bGUuZGlzcGxheT1cImJsb2NrXCIsZS5jbGFzc05hbWU9YnQuUExBQ0VIT0xERVJfTkFNRSxlfSxidC5yZW1vdmVQbGFjZWhvbGRlcj1mdW5jdGlvbihlLHQpe3ZhciBpPXRbZV07dm9pZCAwIT09aSYmbnVsbCE9PWkucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpO3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO2lmKG51bGwhPT1uKWZvcih2YXIgbz0wLHI9bi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGJ0LlBMQUNFSE9MREVSX05BTUUpO288ci5sZW5ndGg7bysrKXt2YXIgYT1yW29dO251bGwhPT1hLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKX19LGJ0Lmluc2VydEFkSUZyYW1lPWZ1bmN0aW9uKGUsdCl7dmFyIGksbj10W2VdO2lmKHZvaWQgMCE9PW4paT1uO2Vsc2V7dmFyIG89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobnVsbD09PW8pcmV0dXJuIG51bGw7aT1vfWZvcih2YXIgcj0wLGE9aS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGJ0LlBMQUNFSE9MREVSX05BTUUpO3I8YS5sZW5ndGg7cisrKXtmb3IodmFyIHM9YVtyXSxkPTAsYz1zLmNoaWxkTm9kZXM7ZDxjLmxlbmd0aDtkKyspe3ZhciBsPWNbZF07bnVsbCE9PWwucGFyZW50Tm9kZSYmbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGwpfXZhciB1PXRoaXMuY3JlYXRlQWRJRnJhbWUoKTtyZXR1cm4gcy5hcHBlbmRDaGlsZCh1KSxzLnN0eWxlLndpZHRoPVwiXCIscy5zdHlsZS5oZWlnaHQ9XCJcIixzLnN0eWxlLmRpc3BsYXk9XCJcIix1fXJldHVybiBudWxsfSxidC5jcmVhdGVBZElGcmFtZT1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7cmV0dXJuIGUuc2Nyb2xsaW5nPVwibm9cIixlLm1hcmdpbldpZHRoPVwiMFwiLGUubWFyZ2luSGVpZ2h0PVwiMFwiLGUuZnJhbWVCb3JkZXI9XCIwXCIsZS5zdHlsZS5ib3JkZXI9XCIwXCIsZS5zdHlsZS52ZXJ0aWNhbEFsaWduPVwiYm90dG9tXCIsZX0sYnQucmVtb3ZlUGxhY2Vob2xkZXJzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIG49MCxvPWU7bjxvLmxlbmd0aDtuKyspe3ZhciByPW9bbl0uaW1wSWQ7LTE9PT10LmluZGV4T2YocikmJmJ0LnJlbW92ZVBsYWNlaG9sZGVyKHIsaSl9fSxidC50cnlJbnNlcnRQbGFjZWhvbGRlcnM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgbj1bXSxvPTAscj1lO288ci5sZW5ndGg7bysrKXt2YXIgYT1yW29dLHM9YS5pbXBJZDtidC50cnlJbnNlcnRQbGFjZWhvbGRlcihzLHQsaSkmJm4ucHVzaChhKX1yZXR1cm4gbn0sYnQuUExBQ0VIT0xERVJfTkFNRT1cImNyaXRlb19wbGFjZWhvbGRlclwiLGJ0KTtmdW5jdGlvbiBidCgpe31mdW5jdGlvbiBDdCh0KXt3aW5kb3cuZ29vZ2xldGFnPXdpbmRvdy5nb29nbGV0YWd8fHt9LHdpbmRvdy5nb29nbGV0YWcuY21kPXdpbmRvdy5nb29nbGV0YWcuY21kfHxbXSx3aW5kb3cuZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCl7dmFyIGU9d3Qod2luZG93Lmdvb2dsZXRhZy5wdWJhZHMoKS5nZXRTbG90cygpKTt0KGUpfSl9ZnVuY3Rpb24gd3QoZSl7Zm9yKHZhciB0PVtdLGk9d2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aHx8ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxuPXdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQsbz0wLHI9ZTtvPHIubGVuZ3RoO28rKyl7Zm9yKHZhciBhPXJbb10scz1hLmdldFNsb3RFbGVtZW50SWQoKSxkPVtdLGM9MCxsPWEuZ2V0U2l6ZXMoaSxuKXx8YS5nZXRTaXplcygpO2M8bC5sZW5ndGg7YysrKXt2YXIgdT1sW2NdO1wiZnVuY3Rpb25cIj09dHlwZW9mIHUuZ2V0V2lkdGgmJnUuZ2V0V2lkdGgoKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdS5nZXRIZWlnaHQmJnUuZ2V0SGVpZ2h0KCkmJmQucHVzaCh1LmdldFdpZHRoKCkrXCJ4XCIrdS5nZXRIZWlnaHQoKSl9cyYmMDxkLmxlbmd0aCYmdC5wdXNoKHtzbG90SWQ6cyxzaXplczpkfSl9cmV0dXJuIHR9ZnVuY3Rpb24gSXQoKXtyZXR1cm4gRXQobnVsbCxudWxsKX1mdW5jdGlvbiBFdChlLHQsaSl7dmFyIG49e2NydF9wYjpbZV0sY3J0X2JpZGlkOlt0XX07cmV0dXJuIHZvaWQgMCE9PWkmJihuPVMoUyh7fSxuKSx7Y3J0X2RlYWw6W2ldfSkpLG59dmFyIFN0PShfdC5wcm90b3R5cGUuc2V0S2V5VmFsdWVzRm9yQWxsU2xvdHM9ZnVuY3Rpb24odCl7dmFyIGk9dGhpczt0aGlzLmdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0KXQuaGFzT3duUHJvcGVydHkoZSkmJihpLmdvb2dsZXRhZy5wdWJhZHMoKS5jbGVhclRhcmdldGluZyhlKSxpLmdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoZSx0W2VdK1wiXCIpKX0pfSxfdC5wcm90b3R5cGUuc2V0S2V5VmFsdWVQZXJTbG90PWZ1bmN0aW9uKHQsaSl7dmFyIG49dGhpcy5nb29nbGV0YWcucHViYWRzKCkuZ2V0U2xvdHMoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0U2xvdEVsZW1lbnRJZCgpPT09dH0pOzA9PT1uLmxlbmd0aD9ELldhcm5pbmcoXCJObyBnb29nbGV0YWcgc2xvdCBmb3VuZCBmb3Igc2xvdElkOiBcIit0KToxPG4ubGVuZ3RoP0QuV2FybmluZyhcIk1vcmUgdGhhbiBvbmUgZ29vZ2xldGFnIHNsb3QgZm91bmQgZm9yIHNsb3RJZDogXCIrdCk6dGhpcy5nb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gaSlpLmhhc093blByb3BlcnR5KGUpJiYoblswXS5jbGVhclRhcmdldGluZyhlKSxuWzBdLnNldFRhcmdldGluZyhlLGlbZV0rXCJcIikpfSl9LF90LnByb3RvdHlwZS5yZXNldEtleVZhbHVlc0ZvclNsb3RzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1JdCgpO3RoaXMuZ29vZ2xldGFnLnB1YmFkcygpLmdldFNsb3RzKCkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybi0xIT09dC5pbmRleE9mKGUuZ2V0U2xvdEVsZW1lbnRJZCgpKX0pLmZvckVhY2goZnVuY3Rpb24odCl7ZS5nb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gaSlpLmhhc093blByb3BlcnR5KGUpJiZ0LmNsZWFyVGFyZ2V0aW5nKGUpfSl9KX0sX3QpO2Z1bmN0aW9uIF90KCl7dm9pZCAwPT09d2luZG93Lmdvb2dsZXRhZyYmKHdpbmRvdy5nb29nbGV0YWc9e30pLHRoaXMuZ29vZ2xldGFnPXdpbmRvdy5nb29nbGV0YWcsdGhpcy5nb29nbGV0YWcuY21kPXRoaXMuZ29vZ2xldGFnLmNtZHx8W119ZnVuY3Rpb24gQXQoZSx0KXtpZihlKXt2YXIgaTt0cnl7aT1ldmFsKFwiKFwiK2UrXCIpXCIpfWNhdGNoKGUpe3JldHVybiB2b2lkIEQuRXJyb3IoXCJFcnJvciBldmFsdWF0aW5nIHRoZSBmdW5jdGlvbjogXCIrZSl9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaSlyZXR1cm4gaS5hcHBseShpLHQpO0QuRXJyb3IoXCJUaGUgcGFzc2VkIHZhbHVlIGlzIG5vdCBhIGZ1bmN0aW9uXCIpfWVsc2UgRC5FcnJvcihcIkNhbm5vdCBleGVjdXRlIGFuIGVtcHR5IGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIFJ0KGUsdCxpKXtyZXR1cm4gdHlwZW9mIGVbdF09PT1pP2VbdF06dm9pZCAwfXZhciBUdD1mdW5jdGlvbihlLHQpe3RoaXMudG9wPWUsdGhpcy5sZWZ0PXR9LFB0PWZ1bmN0aW9uKGUsdCxpLG4pe3RoaXMud2lkdGg9ZSx0aGlzLmhlaWdodD10LHRoaXMuc2Nyb2xsVG9wPWksdGhpcy5zY3JvbGxMZWZ0PW59LGt0PShNdC5nZXRIaWdoZXN0QWNjZXNzaWJsZVdpbmRvdz1mdW5jdGlvbihlKXt2YXIgdD1lLGk9ITE7dHJ5e2Zvcig7dC5wYXJlbnQuZG9jdW1lbnQhPT10LmRvY3VtZW50Oyl7aWYoIXQucGFyZW50LmRvY3VtZW50KXtpPSEwO2JyZWFrfXQ9dC5wYXJlbnR9fWNhdGNoKGUpe2k9ITB9cmV0dXJue3RvcEZyYW1lOnQsZXJyOml9fSxNdC5nZXRIaWdoZXN0QWNjZXNzaWJsZVVybD1mdW5jdGlvbihlKXt2YXIgdD1lLnRvcEZyYW1lO2lmKCFlLmVycilyZXR1cm4gdC5sb2NhdGlvbi5ocmVmO3RyeXt2YXIgaT10LnRvcC5sb2NhdGlvbi5ocmVmO2lmKGkpcmV0dXJuIGl9Y2F0Y2goZSl7fXRyeXt2YXIgbj10LmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucztpZihuKXJldHVybiBuW24ubGVuZ3RoLTFdfWNhdGNoKGUpe31yZXR1cm4gdC5kb2N1bWVudC5yZWZlcnJlcn0sTXQuaW5JZnJhbWU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHdpbmRvdy5zZWxmIT09d2luZG93LnRvcH1jYXRjaChlKXtyZXR1cm4hMH19LE10KTtmdW5jdGlvbiBNdCgpe312YXIgeHQ9KEJ0LnByb3RvdHlwZS5nZXRWaWV3cG9ydD1mdW5jdGlvbigpe3ZhciBlPWt0LmdldEhpZ2hlc3RBY2Nlc3NpYmxlV2luZG93KHdpbmRvdykudG9wRnJhbWUsdD1lLmRvY3VtZW50LGk9ZS5pbm5lcldpZHRofHx0LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxuPWUuaW5uZXJIZWlnaHR8fHQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxvPXQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8dC5ib2R5JiZ0LmJvZHkuc2Nyb2xsVG9wfHwwLHI9dC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8dC5ib2R5JiZ0LmJvZHkuc2Nyb2xsTGVmdHx8MDtyZXR1cm4gbmV3IFB0KGksbixvLHIpfSxCdC5wcm90b3R5cGUuZ2V0U2xvdFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW1wSWQsaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtpZihudWxsIT09aSl7dmFyIG49aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gbmV3IFR0KG4udG9wLG4ubGVmdCl9fSxCdCk7ZnVuY3Rpb24gQnQoKXt9dmFyIE90PShEdC5jcmVhdGVMaW5lSXRlbVJhbmdlc0Zyb21TdHJpbmc9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLGk9MCxuPWUuc3BsaXQoXCI7XCIpO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldLHI9by5zcGxpdChcIi4uXCIpLGE9RHQucm91bmRUb0RlY2ltYWwoclswXSwyKSxzPXJbMV0uc3BsaXQoXCI6XCIpLGQ9RHQucm91bmRUb0RlY2ltYWwoc1swXSwyKSxjPUR0LnJvdW5kVG9EZWNpbWFsKHNbMV0sMik7aWYoaXNOYU4oYSl8fGlzTmFOKGQpfHxpc05hTihjKXx8MD09PWMpe0QuV2FybmluZyhcIkNvdWxkIG5vdCBwYXJzZSByYW5nZSBwYXJhbWV0ZXI6IFwiK28pO2JyZWFrfWlmKGE8MHx8ZDwwfHxjPDApe0QuV2FybmluZyhcIlBvc2l0aXZlIHZhbHVlcyBtdXN0IGJlIHNldCBmb3IgcmFuZ2UgYm91bmRzOiBcIitvKTticmVha312YXIgbD1kLWEsdT0xMDAqbC8oMTAwKmMpLHA9dT09PU1hdGguZmxvb3IodSk7ZDxhP0QuV2FybmluZyhcIkxvd2VyIGJvdW5kIChcIithK1wiKSBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgKFwiK2QrXCIpXCIpOnA/dC5wdXNoKG5ldyBEdChhLGQsYykpOkQuV2FybmluZyhcIlJhbmdlIChcIitsK1wiKSBpcyBub3QgZGl2aXNpYmxlIGJ5IGluY3JlbWVudCAoXCIrYytcIilcIil9cmV0dXJuIHQuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlLnVwcGVyQm91bmQ+dC51cHBlckJvdW5kPzE6dC51cHBlckJvdW5kPmUudXBwZXJCb3VuZD8tMTowfSksdH0sRHQuZ2V0RGVmYXVsdERlbnNlTGluZUl0ZW1SYW5nZXM9ZnVuY3Rpb24oKXtyZXR1cm5bbmV3IER0KDAsMywuMDEpLG5ldyBEdCgzLDgsLjA1KSxuZXcgRHQoOCwyMCwuNSldfSxEdC5jb21wdXRlTGluZUl0ZW1QcmljZWJhbmRWYWx1ZT1mdW5jdGlvbihlLHQpezA9PT10Lmxlbmd0aCYmKHQ9RHQuZ2V0RGVmYXVsdERlbnNlTGluZUl0ZW1SYW5nZXMoKSk7Zm9yKHZhciBpPTAsbj10O2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKGU8PW8udXBwZXJCb3VuZCYmZT5vLmxvd2VyQm91bmQpe3ZhciByPU1hdGguZmxvb3IoZS9vLmluY3JlbWVudCsxZS00KSpvLmluY3JlbWVudDtyZXR1cm4gRHQuZm9ybWF0UHJpY2VCYW5kKHIpfX1yZXR1cm4gZTx0WzBdLmxvd2VyQm91bmQ/dm9pZCAwOmU9PT10WzBdLmxvd2VyQm91bmQ/RHQuZm9ybWF0UHJpY2VCYW5kKHRbMF0ubG93ZXJCb3VuZCk6RHQuZm9ybWF0UHJpY2VCYW5kKHRbdC5sZW5ndGgtMV0udXBwZXJCb3VuZCl9LER0LmZvcm1hdFByaWNlQmFuZD1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0ZpeGVkKDIpfSxEdC5yb3VuZFRvRGVjaW1hbD1mdW5jdGlvbihlLHQpe3ZhciBpPXBhcnNlRmxvYXQoZSksbj1NYXRoLnBvdygxMCx0KTtyZXR1cm4gTWF0aC5yb3VuZChpKm4pL259LER0KTtmdW5jdGlvbiBEdChlLHQsaSl7dGhpcy5sb3dlckJvdW5kPWUsdGhpcy51cHBlckJvdW5kPXQsdGhpcy5pbmNyZW1lbnQ9aX12YXIgRnQ9KE50LnByb3RvdHlwZS5hZGRQYXJhbWV0ZXI9ZnVuY3Rpb24oZSx0KXt0aGlzLnBhcmFtUGFyc2VyW2UudG9Mb3dlckNhc2UoKV09dH0sTnQucHJvdG90eXBlLnRyeUZpbGxQYXJhbWV0ZXJzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKHZvaWQgMCE9PWVbdF0pe3ZhciBpPXQudG9Mb3dlckNhc2UoKTt0aGlzLnBhcmFtUGFyc2VyW2ldP3RoaXMucGFyYW1QYXJzZXJbaV0oZVt0XSk6RC5XYXJuaW5nKFwiVW5rbm93biBwYXJhbWV0ZXI6IFwiK3QpfX0sTnQpO2Z1bmN0aW9uIE50KCl7dmFyIHQ9dGhpczt0aGlzLmludGVncmF0aW9uTW9kZT1EZS5VbnNwZWNpZmllZCx0aGlzLnBhcmFtUGFyc2VyPXt9LHRoaXMuYWRkUGFyYW1ldGVyKFwiaW50ZWdyYXRpb25Nb2RlXCIsZnVuY3Rpb24oZSl7dC5pbnRlZ3JhdGlvbk1vZGU9VWUoZSl9KX12YXIgVXQ9KEx0PUZ0LGEoV3QsTHQpLFd0KSxMdDtmdW5jdGlvbiBXdChlKXt2YXIgdD1MdC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiB0LmJpZElkPXZvaWQgMCx0LmRvY3VtZW50PXdpbmRvdy5kb2N1bWVudCx0LmNvbnRhaW5lcklkPXZvaWQgMCx0LmFkZFBhcmFtZXRlcihcImJpZElkXCIsZnVuY3Rpb24oZSl7dC5iaWRJZD1lfSksdC5hZGRQYXJhbWV0ZXIoXCJkb2N1bWVudFwiLGZ1bmN0aW9uKGUpe3QuZG9jdW1lbnQ9ZX0pLHQuYWRkUGFyYW1ldGVyKFwiY29udGFpbmVySWRcIixmdW5jdGlvbihlKXt0LmNvbnRhaW5lcklkPWV9KSxMdC5wcm90b3R5cGUudHJ5RmlsbFBhcmFtZXRlcnMuY2FsbCh0LGUpLHR9dmFyIEh0PWZ1bmN0aW9uKGUsdCxpLG4sbyxyLGEscyxkKXt0aGlzLnNsb3RJZD1BZSgpLnJlcGxhY2UoLy0vZyxcIlwiKSx0aGlzLmltcElkPWUsdGhpcy56b25lSWQ9dCx0aGlzLm5hdGl2ZUNhbGxiYWNrPWksdGhpcy50cmFuc2FjdGlvbklkPW4sdGhpcy5zaXplcz1vLHRoaXMucHVibGlzaGVyU3ViSWQ9cix0aGlzLm1lZGlhVHlwZXM9YSx0aGlzLnZpZGVvPXMsdGhpcy5leHQ9ZH0senQ9KEd0PUZ0LGEocXQsR3QpLHF0KSxHdDtmdW5jdGlvbiBxdChlKXt2YXIgbz1HdC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLnNsb3RJZD12b2lkIDAsby56b25lSWQ9dm9pZCAwLG8uc2l6ZXM9W10sby5uYXRpdmVDYWxsYmFjaz12b2lkIDAsby5wdWJsaXNoZXJTdWJJZD12b2lkIDAsby5leHQ9dm9pZCAwLG8uYWRkUGFyYW1ldGVyKFwic2xvdGlkXCIsZnVuY3Rpb24oZSl7by5zbG90SWQ9ZX0pLG8uYWRkUGFyYW1ldGVyKFwiem9uZWlkXCIsZnVuY3Rpb24oZSl7by56b25lSWQ9ZX0pLG8uYWRkUGFyYW1ldGVyKFwic2l6ZXNcIixmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxpPWU7dDxpLmxlbmd0aDt0Kyspe3ZhciBuPWlbdF0uc3BsaXQoXCJ4XCIpO28uc2l6ZXMucHVzaChuZXcgY2UocGFyc2VJbnQoblswXSwxMCkscGFyc2VJbnQoblsxXSwxMCkpKX19KSxvLmFkZFBhcmFtZXRlcihcIm5hdGl2ZWNhbGxiYWNrXCIsZnVuY3Rpb24oZSl7by5uYXRpdmVDYWxsYmFjaz1lfSksby5hZGRQYXJhbWV0ZXIoXCJwdWJsaXNoZXJTdWJJZFwiLGZ1bmN0aW9uKGUpe28ucHVibGlzaGVyU3ViSWQ9ZX0pLG8uYWRkUGFyYW1ldGVyKFwiZXh0XCIsZnVuY3Rpb24oZSl7by5leHQ9ZX0pLEd0LnByb3RvdHlwZS50cnlGaWxsUGFyYW1ldGVycy5jYWxsKG8sZSksb312YXIgS3Q9KFZ0PUZ0LGEoWXQsVnQpLFl0LnByb3RvdHlwZS5kZXNlcmlhbGl6ZVBsYWNlbWVudElucHV0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxpPTAsbj1lO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldLHI9bmV3IHp0KG8pO3QucHVzaChuZXcgSHQoci5zbG90SWQsci56b25lSWQsci5uYXRpdmVDYWxsYmFjayx2b2lkIDAsci5zaXplcyxyLnB1Ymxpc2hlclN1YklkLHZvaWQgMCx2b2lkIDAsci5leHQpKX1yZXR1cm4gdH0sWXQpLFZ0LGp0O2Z1bmN0aW9uIFl0KGUpe3ZhciB0PVZ0LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHQucGxhY2VtZW50cz12b2lkIDAsdC5uZXR3b3JrSWQ9dm9pZCAwLHQuYWRkUGFyYW1ldGVyKFwibmV0d29ya0lkXCIsZnVuY3Rpb24oZSl7dC5uZXR3b3JrSWQ9ZX0pLHQuYWRkUGFyYW1ldGVyKFwicGxhY2VtZW50c1wiLGZ1bmN0aW9uKGUpe3QucGxhY2VtZW50cz10LmRlc2VyaWFsaXplUGxhY2VtZW50SW5wdXQoZSl9KSxWdC5wcm90b3R5cGUudHJ5RmlsbFBhcmFtZXRlcnMuY2FsbCh0LGUpLHR9dmFyIEp0PTE4NCxYdD0yNzU7ZnVuY3Rpb24gWnQoZSx0LGkpe3RpKGUsSnQsdCxpKX1mdW5jdGlvbiBRdCh0LGksbil7Q3QoZnVuY3Rpb24oZSl7ZS5sZW5ndGg8PTA/RC5XYXJuaW5nKFwiTm8gR29vZ2xlIHRhZyBwbGFjZW1lbnRzIGhhdmUgYmVlbiByZXRyaWV2ZWQsIG5vIGJpZCB3aWxsIGJlIHJlcXVlc3RlZC5cIik6dGkoe25ldHdvcmtJZDp0LHBsYWNlbWVudHM6ZX0sSnQsaSxuKX0pfWZ1bmN0aW9uICR0KGUsdCxpKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSlRdChlLHQsaSk7ZWxzZXt2YXIgbj1SdChlLFwibmV0d29ya0lkXCIsXCJudW1iZXJcIiksbz1SdChlLFwicGxhY2VtZW50c1wiLFwib2JqZWN0XCIpLHI9UnQoZSxcImNhbGxiYWNrXCIsXCJmdW5jdGlvblwiKSxhPVJ0KGUsXCJ0aW1lb3V0XCIsXCJmdW5jdGlvblwiKTt2b2lkIDA9PT1vP1F0KG4scixhKTp0aSh7bmV0d29ya0lkOm4scGxhY2VtZW50czp3dChvKX0sSnQscixhKX19dmFyIGVpPXt9O2Z1bmN0aW9uIHRpKGUsdCxtLGkpe3ZhciB5PW5ldyBLdChlKTtpZihsaSh5KSl7dmFyIG49bmV3IHh0LGI9d2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dCxvPUUuY3JlYXRlKCk7aWYoby5hZEJsb2NrRmxhZ0VuYWJsZWQoKSl7dD1YdCxiLmlzQWRCbG9ja2VkPSEwO3ZhciByPXl0LnRyeUluc2VydFBsYWNlaG9sZGVycyh5LnBsYWNlbWVudHMsITAsYi5jbG9uZUJ5SW1wcmVzc2lvbklkKTtpZigwPT09ci5sZW5ndGgpcmV0dXJuO3kucGxhY2VtZW50cz1yO3ZhciBhPW07bT1mdW5jdGlvbihlKXt2b2lkIDAhPT1hJiZhKGUpLGUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD15dC5pbnNlcnRBZElGcmFtZShlLmltcHJlc3Npb25JZCxiLmNsb25lQnlJbXByZXNzaW9uSWQpO251bGwhPT10JiZhaShlLmlkLHQuY29udGVudERvY3VtZW50KX0pfX1mb3IodmFyIHM9ZnVuY3Rpb24oKXt5dC5yZW1vdmVQbGFjZWhvbGRlcnMoeS5wbGFjZW1lbnRzLFtdLGIuY2xvbmVCeUltcHJlc3Npb25JZCksKG5ldyBmKS5pc0FkQmxvY2tlZChmdW5jdGlvbihlKXtlP28uZW5hYmxlQWRCbG9ja0ZsYWcoKTpvLmRpc2FibGVBZEJsb2NrRmxhZygpfSksdm9pZCAwIT09bSYmbShbXSl9LGQ9bmV3IGV0KHQsbmV3IExlKCExKSx5LnBsYWNlbWVudHMsZnVuY3Rpb24oZSl7dmFyIGE9W10sdD1yZShlKTtpZih2b2lkIDAhPT10JiZ2b2lkIDAhPT10LnNsb3RzKXt2YXIgcz17fTtpZih0Lmludm9jYXRpb25fY29kZXMpZm9yKHZhciBpPTAsbj10Lmludm9jYXRpb25fY29kZXM7aTxuLmxlbmd0aDtpKyspZm9yKHZhciBvPW5baV0scj0wLGQ9by5zbG90X2lkcztyPGQubGVuZ3RoO3IrKyl7dmFyIGM9ZFtyXTtzW2NdPW8uaW52b2NhdGlvbl9jb2RlfWZvcih2YXIgbD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dm9pZCAwLGk9MCxuPXkucGxhY2VtZW50cztpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXTtpZihvLm5hdGl2ZUNhbGxiYWNrJiZvLmltcElkPT09dC5pbXBpZCl7ZT1vLm5hdGl2ZUNhbGxiYWNrO2JyZWFrfX0hZSYmdC5zbG90aWQgaW4gcyYmKGU9ZnVuY3Rpb24oZSl7QXQoc1t0LnNsb3RpZF0sW2VdKX0pO3ZhciByPW10KHQuc2xvdGlkLHQuaW1waWQsdC5jcG0sdC53aWR0aCx0LmhlaWdodCx0LnpvbmVpZCxlLHQubmF0aXZlLHQuZGlzcGxheXVybCx0LmNyZWF0aXZlLHQuZGVhbCk7dm9pZCAwIT09ciYmKHdpbmRvdy5jcml0ZW9fcHVidGFnLnN0YW5kYWxvbmVCaWRkZXIuYmlkc1tyLmlkXT1yLGEucHVzaChyLmltcHJlc3Npb25JZCkpfSx1PTAscD10LnNsb3RzO3U8cC5sZW5ndGg7dSsrKXtsKHBbdV0pfXQuZ3JhbnVsYXJpdHkmJmlpKHQuZ3JhbnVsYXJpdHkpfWlmKHl0LnJlbW92ZVBsYWNlaG9sZGVycyh5LnBsYWNlbWVudHMsYSxiLmNsb25lQnlJbXByZXNzaW9uSWQpLHZvaWQgMCE9PW0pe2Zvcih2YXIgaD1bXSxmPTAsdj15LnBsYWNlbWVudHM7Zjx2Lmxlbmd0aDtmKyspe3ZhciBnPXZbZl07aC5wdXNoKGcuaW1wSWQpfW0oZGkoe2ltcHJlc3Npb25JZHM6aH0pKX19LHMscyxpfHwzZTMseS5uZXR3b3JrSWQseS5pbnRlZ3JhdGlvbk1vZGUsdm9pZCAwLG4pLGM9W10sbD0wLHU9eS5wbGFjZW1lbnRzO2w8dS5sZW5ndGg7bCsrKXt2YXIgcD11W2xdO2MucHVzaChwLmltcElkKSxlaVtwLnNsb3RJZF09ZC5nZXRNZXRyaWNCdWlsZGVyKCk7dmFyIGg9ZC5nZXRCaWRDYWNoZSgpO2p0PWgsdm9pZCAwPT09cC5leHQmJnZvaWQgMCE9PWIuc2xvdHNFeHQmJnZvaWQgMCE9PWIuc2xvdHNFeHRbcC5pbXBJZF0mJihwLmV4dD1iLnNsb3RzRXh0W3AuaW1wSWRdKX13aW5kb3cuY3JpdGVvX3B1YnRhZy5zdGFuZGFsb25lQmlkZGVyLmltcElkcz1jLHdpbmRvdy5jcml0ZW9fcHVidGFnLnB1c2goZCl9fWZ1bmN0aW9uIGlpKGUpe3ZhciB0PU90LmNyZWF0ZUxpbmVJdGVtUmFuZ2VzRnJvbVN0cmluZyhlKTt3aW5kb3cuY3JpdGVvX3B1YnRhZy5zdGFuZGFsb25lQmlkZGVyLmxpbmVJdGVtUmFuZ2VzPXR9ZnVuY3Rpb24gbmkoKXt2YXIgZT1uZXcgU3Q7ZS5yZXNldEtleVZhbHVlc0ZvclNsb3RzKHdpbmRvdy5jcml0ZW9fcHVidGFnLnN0YW5kYWxvbmVCaWRkZXIuaW1wSWRzKTt2YXIgdD13aW5kb3cuY3JpdGVvX3B1YnRhZy5zdGFuZGFsb25lQmlkZGVyLmxpbmVJdGVtUmFuZ2VzLGk9dWkoKTtmb3IodmFyIG4gaW4gaSlpZihpLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1yaShpW25dLHQpO3ZvaWQgMCE9PW8mJmUuc2V0S2V5VmFsdWVQZXJTbG90KG4sbyl9fWZ1bmN0aW9uIG9pKGUsdCl7cmV0dXJuIHJpKGUsT3QuY3JlYXRlTGluZUl0ZW1SYW5nZXNGcm9tU3RyaW5nKHQpKX1mdW5jdGlvbiByaShlLHQpe3ZhciBpPU90LmNvbXB1dGVMaW5lSXRlbVByaWNlYmFuZFZhbHVlKGUuY3BtLHQpO3JldHVybiB2b2lkIDA9PT1pP3ZvaWQgMDpFdChpLGUuaWQsZS5kZWFsQ29kZSl9ZnVuY3Rpb24gYWkoZSx0KXt2YXIgaT1uZXcgVXQoXCJzdHJpbmdcIj09dHlwZW9mIGU/e2JpZElkOmUsZG9jdW1lbnQ6dH06ZSk7aWYoaS5iaWRJZCl7dmFyIG49dm9pZCAwIT09aS5jb250YWluZXJJZD9uZXcgTChpLmRvY3VtZW50LGkuY29udGFpbmVySWQpOm5ldyBXKGkuZG9jdW1lbnQpO3NpKGkuYmlkSWQsbil9ZWxzZSBELkVycm9yKFwiWW91IG11c3QgcHJvdmlkZSBhIGJpZElkIHRvIHRoZSBSZW5kZXJBZCBjYWxsXCIpfWZ1bmN0aW9uIHNpKGUsdCl7dmFyIGk9d2luZG93LmNyaXRlb19wdWJ0YWcuc3RhbmRhbG9uZUJpZGRlci5iaWRzO2lmKGkuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBuPWlbZV0sbz1uLkdlbmVyYXRlRXZlbnQodCk7d2luZG93LmNyaXRlb19wdWJ0YWcucHVzaChvKSx2b2lkIDAhPT1qdCYmanQucmVtb3ZlQmlkKG4pLGRlbGV0ZSBpW2VdfWVsc2UgRC5FcnJvcihcIkNvdWxkIG5vdCByZW5kZXIgYmlkIHdpdGggaWQ6IFwiK2UpfWZ1bmN0aW9uIGRpKGUpe3ZhciB0PXdpbmRvdy5jcml0ZW9fcHVidGFnLnN0YW5kYWxvbmVCaWRkZXIuYmlkcztpZihudWxsPT09dClyZXR1cm5bXTt2YXIgaT13aW5kb3cuY3JpdGVvX3B1YnRhZy5zdGFuZGFsb25lQmlkZGVyLmxpbmVJdGVtUmFuZ2VzLG49W107Zm9yKHZhciBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIHI9dFtvXTtpZighZXx8IWUuaW1wcmVzc2lvbklkc3x8LTEhPT1lLmltcHJlc3Npb25JZHMuaW5kZXhPZihyLmltcHJlc3Npb25JZCkpe2lmKDA8aS5sZW5ndGgpe3ZhciBhPU90LmNvbXB1dGVMaW5lSXRlbVByaWNlYmFuZFZhbHVlKHIuY3BtLGkpO3IuY3BtX2J1Y2tldD1hfW4ucHVzaChyKX19cmV0dXJuIG59ZnVuY3Rpb24gY2koZSx0KXt2b2lkIDA9PT10JiYodD0xKTt2YXIgaT1kaSh7aW1wcmVzc2lvbklkczpbZV19KTtyZXR1cm4gaS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY3BtLWUuY3BtfSkuc2xpY2UoMCxNYXRoLm1pbihNYXRoLm1heCh0LDApLGkubGVuZ3RoKSl9ZnVuY3Rpb24gbGkoZSl7aWYodm9pZCAwPT09ZS5wbGFjZW1lbnRzKXJldHVybiBELkVycm9yKFwiTWlzc2luZyAncGxhY2VtZW50cycgcGFyYW1ldGVyXCIpLCExO2lmKDA9PT1lLnBsYWNlbWVudHMubGVuZ3RoKXJldHVybiBELkVycm9yKFwiJ3BsYWNlbWVudHMnIHBhcmFtZXRlciBpcyBlbXB0eVwiKSwhMTtmb3IodmFyIHQ9MCxpPWUucGxhY2VtZW50czt0PGkubGVuZ3RoO3QrKyl7dmFyIG49aVt0XTtpZihwaShuLmltcElkKSlyZXR1cm4gRC5FcnJvcihcIk1pc3NpbmcgJ3Nsb3RJZCcgcGFyYW1ldGVyIGluIHBsYWNlbWVudHMgb2JqZWN0XCIpLCExO2lmKHBpKG4uem9uZUlkKSYmKHBpKG4uc2l6ZXMpfHxwaShlLm5ldHdvcmtJZCkpKXJldHVybiBELkVycm9yKFwiTWlzc2luZyB6b25lIGluZm9ybWF0aW9uOiBzcGVjaWZ5IGVpdGhlciBhIHpvbmVJZCBvciBhIG5ldHdvcmtJZCBhbmQgYSB6b25lIHNpemVcIiksITE7aWYodm9pZCAwIT09bi5uYXRpdmVDYWxsYmFjayYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbi5uYXRpdmVDYWxsYmFjaylyZXR1cm4gRC5FcnJvcihcIiduYXRpdmVDYWxsYmFjaycgcGFyYW1ldGVyIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHBsYWNlbWVudHMgb2JqZWN0XCIpLCExfXJldHVybiEwfWZ1bmN0aW9uIHVpKCl7dmFyIGU9e30sdD13aW5kb3cuY3JpdGVvX3B1YnRhZy5zdGFuZGFsb25lQmlkZGVyLmJpZHM7Zm9yKHZhciBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIG49dFtpXTtpZihlLmhhc093blByb3BlcnR5KG4uaW1wcmVzc2lvbklkKSllW24uaW1wcmVzc2lvbklkXS5jcG08bi5jcG0mJihlW24uaW1wcmVzc2lvbklkXT1uKTtlbHNlIGVbbi5pbXByZXNzaW9uSWRdPW59cmV0dXJuIGV9ZnVuY3Rpb24gcGkoZSl7cmV0dXJuIHZvaWQgMD09PWV8fGUrXCJcIj09XCJcIn1mdW5jdGlvbiBoaShlKXt3aW5kb3cuY3JpdGVvX3B1YnRhZy5jb250ZXh0LmNlaD1lfWZ1bmN0aW9uIGZpKGUpe3dpbmRvdy5jcml0ZW9fcHVidGFnLmNvbnRleHQuY2NwYU9wdG91dD1lfWZ1bmN0aW9uIHZpKGUpe3dpbmRvdy5jcml0ZW9fcHVidGFnLmNvbnRleHQucHVibGlzaGVyRXh0PWV9ZnVuY3Rpb24gZ2koZSl7d2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dC51c2VyRXh0PWV9ZnVuY3Rpb24gbWkoZSl7d2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dC5zbG90c0V4dD1lfXZhciB5aT0oYmkuU3RhbmRhbG9uZT1mdW5jdGlvbihvLHIsYSl7WnQoe2ludGVncmF0aW9ubW9kZTpcImFtcFwiLHBsYWNlbWVudHM6W3tzbG90aWQ6by5zbG90LHpvbmVpZDpvLnpvbmUsc2l6ZXM6W28ud2lkdGgrXCJ4XCIrby5oZWlnaHRdfV19LGZ1bmN0aW9uKGUpe2lmKFwiREZQXCI9PT1vLmFkc2VydmVyKXtiaS5saXN0ZW5Gb3JDcmVhdGl2ZVJlcXVlc3RzKGUpO2Zvcih2YXIgdD0wLGk9ZTt0PGkubGVuZ3RoO3QrKyl7dmFyIG49b2koaVt0XSxvLmxpbmVJdGVtUmFuZ2VzKTt2b2lkIDAhPT1uJiZhKG4pfTA9PT1lLmxlbmd0aCYmYSh7fSl9cihudWxsKX0sby50aW1lb3V0KX0sYmkubGlzdGVuRm9yQ3JlYXRpdmVSZXF1ZXN0cz1mdW5jdGlvbihzKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixmdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEgaW5zdGFuY2VvZiBPYmplY3Q/ZS5kYXRhOnJlKGUuZGF0YSk7aWYodCYmdC5iaWRJZCYmZS5zb3VyY2UpZm9yKHZhciBpPTAsbj1zO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKG8uaWQ9PT10LmJpZElkKXt2YXIgcj1lLnNvdXJjZSxhPW8uR2VuZXJhdGVNZXNzYWdlKCk7YS5tZXNzYWdlPVwiQ3JpdGVvIGNyZWF0aXZlXCIsci5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShhKSxcIipcIil9fX0sITEpfSxiaSk7ZnVuY3Rpb24gYmkoKXt9ZnVuY3Rpb24gQ2koKXtyZXR1cm4gd2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dC5nZXRJZGZzKCl9ZnVuY3Rpb24gd2koZSl7d2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dC5zZXRJZGZzKGUpfWZ1bmN0aW9uIElpKGUpe3dpbmRvdy5jcml0ZW9fcHVidGFnLmNvbnRleHQuY2VoPWV9dmFyIEVpPWZ1bmN0aW9uKGUsdCxpLG4sbyxyLGEscyxkLGMpe3RoaXMucGxheWVyc2l6ZT1lLHRoaXMubWltZXM9dCx0aGlzLnByb3RvY29scz1pLHRoaXMubWF4ZHVyYXRpb249bix0aGlzLmFwaT1vLHRoaXMuc2tpcD1yLHRoaXMucGxhY2VtZW50PWEsdGhpcy5wbGF5YmFja21ldGhvZD1zLHRoaXMubWluZHVyYXRpb249ZCx0aGlzLnN0YXJ0ZGVsYXk9Y30sU2k9MjgwLF9pPTVlMyxBaSxSaTtSaT1BaT1BaXx8e30sUmkuTmF0aXZlPVwibmF0aXZlXCIsUmkuQmFubmVyPVwiYmFubmVyXCIsUmkuVmlkZW89XCJ2aWRlb1wiO3ZhciBUaT0oUGkucHJvdG90eXBlLmhhc1ZhbGlkTmF0aXZlUGFyYW1zPWZ1bmN0aW9uKGUpe3JldHVybiEoZS5uYXRpdmVQYXJhbXMmJihlLm5hdGl2ZVBhcmFtcy5pbWFnZSYmITAhPT1lLm5hdGl2ZVBhcmFtcy5pbWFnZS5zZW5kSWR8fGUubmF0aXZlUGFyYW1zLmljb24mJiEwIT09ZS5uYXRpdmVQYXJhbXMuaWNvbi5zZW5kSWR8fGUubmF0aXZlUGFyYW1zLmNsaWNrVXJsJiYhMCE9PWUubmF0aXZlUGFyYW1zLmNsaWNrVXJsLnNlbmRJZHx8ZS5uYXRpdmVQYXJhbXMuZGlzcGxheVVybCYmITAhPT1lLm5hdGl2ZVBhcmFtcy5kaXNwbGF5VXJsLnNlbmRJZHx8ZS5uYXRpdmVQYXJhbXMucHJpdmFjeUxpbmsmJiEwIT09ZS5uYXRpdmVQYXJhbXMucHJpdmFjeUxpbmsuc2VuZElkfHxlLm5hdGl2ZVBhcmFtcy5wcml2YWN5SWNvbiYmITAhPT1lLm5hdGl2ZVBhcmFtcy5wcml2YWN5SWNvbi5zZW5kSWQpKX0sUGkucHJvdG90eXBlLnNldEVuYWJsZVNlbmRBbGxCaWRzPWZ1bmN0aW9uKGUpe3RoaXMuZW5hYmxlU2VuZEFsbEJpZHM9ZX0sUGkucHJvdG90eXBlLmJ1aWxkQ2RiVXJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXJsfSxQaS5wcm90b3R5cGUuYnVpbGRDZGJSZXF1ZXN0PWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5zaWxlbnRNb2RlRW5hYmxlZCgpKXJldHVybiBELkRlYnVnKFwiUmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgdGhlIGdsb2JhbCBzaWxlbnQgbW9kZSBpcyBlbmFibGVkXCIpLHZvaWQgdGhpcy5tZXRyaWNzTWFuYWdlci5pbmNTaWxlbnRNb2RlUmVxdWVzdENvdW50KCk7aWYodGhpcy5yZXF1ZXN0QnVpbGRlci5pc1ZhbGlkKCkpe3ZhciBlPU1hdGgubWluKCh0aGlzLnRpbWVvdXR8fF9pKSsxZTMsX2kpO3JldHVybiB0aGlzLmFkQmxvY2tGbGFnTWFuYWdlci5zZXRBZEJsb2NrRmxhZ1RpbWVyKGUpLHRoaXMudGltZXIuc2VuZFJlcXVlc3QodGhpcy51cmwpLHRoaXMucmVxdWVzdEJ1aWxkZXIuZ2V0UmVxdWVzdCgpfUQuRGVidWcoXCJSZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBpdCBkb2VzbnQgY29udGFpbiBhbnkgc2xvdFwiKX0sUGkuR2V0QWxsQWRhcHRlcnM9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LkNyaXRlby5wcmViaWRfYWRhcHRlcnN9LFBpLkdldEFkYXB0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJzdHJpbmdcIj09dHlwZW9mIGU/ZTplLmJpZFJlcXVlc3RzWzBdLmF1Y3Rpb25JZCxpPVBpLkdldEFsbEFkYXB0ZXJzKCk7aWYoaSYmdCBpbiBpKXJldHVybiBpW3RdfSxQaS5jcmVhdGVDcml0ZW9OYXRpdmVBZFdpdGhDYWxsYmFjaz1mdW5jdGlvbihlLHQsaSl7cmV0dXJuIHdpbmRvdy5jcml0ZW9fcHJlYmlkX25hdGl2ZV9zbG90cz13aW5kb3cuY3JpdGVvX3ByZWJpZF9uYXRpdmVfc2xvdHN8fHt9LHdpbmRvdy5jcml0ZW9fcHJlYmlkX25hdGl2ZV9zbG90c1tlXT17Y2FsbGJhY2s6aSxwYXlsb2FkOnR9LCc8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj5cXG4gICAgICAgICAgICB2YXIgd2luID0gd2luZG93O1xcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkge1xcbiAgICAgICAgICAgICAgICB3aW4gPSB3aW4ucGFyZW50O1xcbiAgICAgICAgICAgICAgICBpZiAod2luLmNyaXRlb19wcmViaWRfbmF0aXZlX3Nsb3RzKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VTbG90ID0gd2luLmNyaXRlb19wcmViaWRfbmF0aXZlX3Nsb3RzW1wiJytlKydcIl07XFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVNsb3QuY2FsbGJhY2socmVzcG9uc2VTbG90LnBheWxvYWQpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICA8XFwvc2NyaXB0Pid9LFBpLmNyZWF0ZVByZWJpZE5hdGl2ZUFkPWZ1bmN0aW9uKGUpe3JldHVybnt0aXRsZTplLnByb2R1Y3RzWzBdLnRpdGxlLGJvZHk6ZS5wcm9kdWN0c1swXS5kZXNjcmlwdGlvbixzcG9uc29yZWRCeTplLmFkdmVydGlzZXIuZGVzY3JpcHRpb24saWNvbjplLmFkdmVydGlzZXIubG9nbyxpbWFnZTplLnByb2R1Y3RzWzBdLmltYWdlLGNsaWNrVXJsOmUucHJvZHVjdHNbMF0uY2xpY2tfdXJsLHByaXZhY3lMaW5rOmUucHJpdmFjeS5vcHRvdXRfY2xpY2tfdXJsLHByaXZhY3lJY29uOmUucHJpdmFjeS5vcHRvdXRfaW1hZ2VfdXJsLGN0YTplLnByb2R1Y3RzWzBdLmNhbGxfdG9fYWN0aW9uLHByaWNlOmUucHJvZHVjdHNbMF0ucHJpY2UsaW1wcmVzc2lvblRyYWNrZXJzOmUuaW1wcmVzc2lvbl9waXhlbHMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVybH0pfX0sUGkucHJvdG90eXBlLmdldEJpZFJlcXVlc3RGb3JTbG90PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLGk9dGhpcy5iaWRSZXF1ZXN0czt0PGkubGVuZ3RoO3QrKyl7dmFyIG49aVt0XTtpZihuLmFkVW5pdENvZGU9PT1lLmltcGlkJiYoIW4ucGFyYW1zLnpvbmVJZHx8cGFyc2VJbnQobi5wYXJhbXMuem9uZUlkLDEwKT09PWUuem9uZWlkKSlyZXR1cm4gbn19LFBpLnByb3RvdHlwZS5nZXRTbG90Rm9yQWRVbml0Q29kZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxpPXRoaXMuc2xvdHM7dDxpLmxlbmd0aDt0Kyspe3ZhciBuPWlbdF07aWYobiYmbi5pbXBJZD09PWUpcmV0dXJuIG59fSxQaS5nZXRWaWRlb0luZm9Gcm9tQmlkUmVxdWVzdD1mdW5jdGlvbihlKXtpZihQaS5oYXNWaWRlb01lZGlhVHlwZShlKSlyZXR1cm4gbmV3IEVpKGUubWVkaWFUeXBlcy52aWRlby5wbGF5ZXJTaXplLGUubWVkaWFUeXBlcy52aWRlby5taW1lcyxlLm1lZGlhVHlwZXMudmlkZW8ucHJvdG9jb2xzLGUubWVkaWFUeXBlcy52aWRlby5tYXhkdXJhdGlvbixlLm1lZGlhVHlwZXMudmlkZW8uYXBpLGUucGFyYW1zLnZpZGVvLnNraXAsZS5wYXJhbXMudmlkZW8ucGxhY2VtZW50LGUucGFyYW1zLnZpZGVvLnBsYXliYWNrbWV0aG9kLGUucGFyYW1zLnZpZGVvLm1pbmR1cmF0aW9uLGUucGFyYW1zLnZpZGVvLnN0YXJ0ZGVsYXkpfSxQaS5oYXNWaWRlb01lZGlhVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5wYXJhbXMmJnZvaWQgMCE9PWUucGFyYW1zLnZpZGVvJiYhKHZvaWQgMD09PWUubWVkaWFUeXBlc3x8dm9pZCAwPT09ZS5tZWRpYVR5cGVzLnZpZGVvKX0sUGkucHJvdG90eXBlLmludGVycHJldFJlc3BvbnNlPWZ1bmN0aW9uKGUsdCl7dGhpcy50aW1lci5yZXF1ZXN0UmVjZWl2ZWQoKSx0aGlzLmFkQmxvY2tGbGFnTWFuYWdlci5kaXNhYmxlQWRCbG9ja0ZsYWdUaW1lcigpO3ZhciBpPUtlKGUpLG49e307aWYodm9pZCAwIT09aS5zbG90cylmb3IodmFyIG89MCxyPWkuc2xvdHM7bzxyLmxlbmd0aDtvKyspblsoYz1yW29dKS5pbXBfaWRdPWM7dmFyIGE9W107aWYoZS5zbG90cyYmQXJyYXkuaXNBcnJheShlLnNsb3RzKSlmb3IodmFyIHM9MCxkPWUuc2xvdHM7czxkLmxlbmd0aDtzKyspe3ZhciBjPWRbc10sbD10aGlzLmdldEJpZFJlcXVlc3RGb3JTbG90KGMpO2lmKGwpaWYoITA9PT13aW5kb3cuY3JpdGVvX3B1YnRhZy5jb250ZXh0LmlzQWRCbG9ja2VkKXtpZih2b2lkIDAhPT0odj1tdChjLnNsb3RpZCxjLmltcGlkLGMuY3BtLGMud2lkdGgsYy5oZWlnaHQsYy56b25laWQsbC5wYXJhbXMubmF0aXZlQ2FsbGJhY2ssYy5uYXRpdmUsYy5kaXNwbGF5dXJsLGMuY3JlYXRpdmUsYy5kZWFsKSkmJnl0LnRyeUluc2VydFBsYWNlaG9sZGVyKGwuYWRVbml0Q29kZSwhMCx3aW5kb3cuY3JpdGVvX3B1YnRhZy5jb250ZXh0LmNsb25lQnlJbXByZXNzaW9uSWQpKXt2YXIgdT15dC5pbnNlcnRBZElGcmFtZShsLmFkVW5pdENvZGUsd2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dC5jbG9uZUJ5SW1wcmVzc2lvbklkKTtpZihudWxsIT11KXt2YXIgcD1uZXcgVyh1LmNvbnRlbnREb2N1bWVudCk7di5HZW5lcmF0ZUV2ZW50KHApLmV2YWwod2luZG93LmNyaXRlb19wdWJ0YWcpfX19ZWxzZXt2YXIgaD1sLmJpZElkLGY9Yy50dGx8fG5bYy5zbG90aWRdJiZuW2Muc2xvdGlkXS50dGx8fDYwLHY9e3JlcXVlc3RJZDpoLGFkSWQ6QWUoKSxjcG06Yy5jcG0sY3VycmVuY3k6Yy5jdXJyZW5jeSxuZXRSZXZlbnVlOiEwLHR0bDpmLGNyZWF0aXZlSWQ6aCx3aWR0aDpjLndpZHRoLGhlaWdodDpjLmhlaWdodCxkZWFsSWQ6Yy5kZWFsfTtpZihjLm5hdGl2ZSlpZihsLnBhcmFtcy5uYXRpdmVDYWxsYmFjayl2LmFkPVBpLmNyZWF0ZUNyaXRlb05hdGl2ZUFkV2l0aENhbGxiYWNrKGgsYy5uYXRpdmUsbC5wYXJhbXMubmF0aXZlQ2FsbGJhY2spO2Vsc2V7aWYodGhpcy5lbmFibGVTZW5kQWxsQmlkcyl7RC5FcnJvcihcIk5vdCBzdXBwb3J0aW5nIG5vbiBtZWRpYXRpb24gbW9kZVwiKTtjb250aW51ZX12Lm5hdGl2ZT1QaS5jcmVhdGVQcmViaWROYXRpdmVBZChjLm5hdGl2ZSksdi5tZWRpYVR5cGU9QWkuTmF0aXZlfWVsc2UgYy52aWRlbz8odi52YXN0VXJsPWMuZGlzcGxheXVybCx2Lm1lZGlhVHlwZT1BaS5WaWRlbyk6di5hZD1jLmNyZWF0aXZlO2EucHVzaCh2KX1lbHNlIEQuRXJyb3IoXCJVbmFibGUgdG8gYmlkIHJlcXVlc3QgZm9yIHNsb3QgXCIrYyl9cmV0dXJuIHRoaXMuY2FjaGUuaGFuZGxlUmVzcG9uc2UodGhpcy5zbG90cyxlLGksITEpLHRoaXMubWV0cmljc01hbmFnZXIuc2VuZE1ldHJpYyh0aGlzLnRpbWVyLmZpbmlzaChpLnNsb3RzKSksdGhpcy5jYWNoZS5jbGVhckV4cGlyZWRJdGVtcygpLGF9LFBpLnByb3RvdHlwZS5oYW5kbGVCaWRXb249ZnVuY3Rpb24oKXt9LFBpLnByb3RvdHlwZS5oYW5kbGVCaWRUaW1lb3V0PWZ1bmN0aW9uKCl7dGhpcy50aW1lci5yZXF1ZXN0UmVjZWl2ZWQoITApLHRoaXMubWV0cmljc01hbmFnZXIuc2VuZE1ldHJpYyh0aGlzLnRpbWVyLmZpbmlzaCgpKSx0aGlzLmNhY2hlLmNsZWFyRXhwaXJlZEl0ZW1zKCl9LFBpLnByb3RvdHlwZS5oYW5kbGVTZXRUYXJnZXRpbmc9ZnVuY3Rpb24oKXt9LFBpLnByb3RvdHlwZS5nZXRCYW5uZXJTaXplcz1mdW5jdGlvbihlKXt2YXIgdCxpO3JldHVybihudWxsPT09KGk9bnVsbD09PSh0PWUubWVkaWFUeXBlcyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuYmFubmVyKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zaXplcyl8fGUuc2l6ZXN8fFtdfSxQaS5wcm90b3R5cGUuZ2V0TmF0aXZlU2l6ZXM9ZnVuY3Rpb24oZSl7dmFyIHQsaSxuO3JldHVybihudWxsPT09KG49bnVsbD09PShpPW51bGw9PT0odD1lLm1lZGlhVHlwZXMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm5hdGl2ZSl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaW1hZ2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnNpemVzKXx8W119LFBpLnByb3RvdHlwZS5nZXRTaXplcz1mdW5jdGlvbihlKXt2YXIgdCxpPXRoaXMuZ2V0QmFubmVyU2l6ZXMoZSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgY2UoZVswXSxlWzFdKX0pLG49dGhpcy5nZXROYXRpdmVTaXplcyhlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBjZShlWzBdLGVbMV0pfSksbz1pLmNvbmNhdChuKTtyZXR1cm4obnVsbD09PSh0PWUubWVkaWFUeXBlcyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubmF0aXZlKSYmKDA9PT1vLmxlbmd0aD9vPVtuZXcgY2UoMiwyKV06by5mb3JFYWNoKGZ1bmN0aW9uKGUsdCxpKXt2b2lkIDA9PT1lLmhlaWdodCYmdm9pZCAwPT09ZS53aWR0aCYmKGlbdF09bmV3IGNlKDIsMikpfSkpLG8uZmlsdGVyKGZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gaS5pbmRleE9mKGUpPT09dH0pfSxQaS5wcm90b3R5cGUuZ2V0Rmxvb3JzRm9yU2l6ZXM9ZnVuY3Rpb24oZSxvLHIpe3ZhciBhPXt9LHQ9ci5nZXRGbG9vcih7Y3VycmVuY3k6XCJFVVJcIixzaXplOlwiKlwiLG1lZGlhVHlwZTpvfSk7aWYoXCJFVVJcIiE9PXQuY3VycmVuY3kpdGhyb3cgbmV3IEVycm9yKFwiQ3VycmVuY3kgZm9yIGZsb29ycyBpcyBub3QgaW4gRVVSLCBvciBjYW5ub3QgYmUgY29udmVydGVkIHRvIEVVUlwiKTtyZXR1cm4gYVtcIipcIl09dC5mbG9vcixlLmZvckVhY2goZnVuY3Rpb24oZSx0LGkpe3ZhciBuPW5ldyBjZShlWzBdLGVbMV0pO2Fbbi50b1N0cmluZygpXT1yLmdldEZsb29yKHtjdXJyZW5jeTpcIkVVUlwiLHNpemU6ZSxtZWRpYVR5cGU6b30pLmZsb29yfSksYX0sUGkpO2Z1bmN0aW9uIFBpKGUsdCxpLG4sbyl7dmFyIHIsYSxzO3RoaXMuZW5hYmxlU2VuZEFsbEJpZHM9ITA7dmFyIGQ9QWUoKTt0aGlzLnRpbWVvdXQ9X2Uobi50aW1lb3V0KSx0aGlzLm1ldHJpY3NNYW5hZ2VyPW5ldyBIZShlLHQsbyksdGhpcy5tZXRyaWNCdWlsZGVyPW5ldyBrZSh0aGlzLm1ldHJpY3NNYW5hZ2VyKSx0aGlzLnRpbWVyPW5ldyBKZSh0aGlzLm1ldHJpY0J1aWxkZXIsbi5zdGFydCx0aGlzLnRpbWVvdXQsZCk7dmFyIGMsbCx1PW5ldyB4dDt0aGlzLmFkQmxvY2tGbGFnTWFuYWdlcj1FLmNyZWF0ZSgpLHRoaXMuYWRCbG9ja0ZsYWdNYW5hZ2VyLmFkQmxvY2tGbGFnRW5hYmxlZCgpJiYoZT1TaSx3aW5kb3cuY3JpdGVvX3B1YnRhZy5jb250ZXh0LmlzQWRCbG9ja2VkPSEwKSx0aGlzLmF1Y3Rpb25JZD1uLmF1Y3Rpb25JZCx0aGlzLmJpZFJlcXVlc3RzPWksdGhpcy5zbG90cz1bXTtmb3IodmFyIHA9ITAsaD0wLGY9aTtoPGYubGVuZ3RoO2grKyl7dmFyIHY9dm9pZCAwOyhDPWZbaF0pLmZwZCYmQy5mcGQuY29udGV4dCYmKHY9Qy5mcGQuY29udGV4dCksQy5wYXJhbXMuZXh0JiYodj1TKFMoe30sdiksQy5wYXJhbXMuZXh0KSkscD10aGlzLmhhc1ZhbGlkTmF0aXZlUGFyYW1zKEMpO3RyeXt2YXIgZz17fTtpZihDLmdldEZsb29yJiYoKG51bGw9PT0ocj1DLm1lZGlhVHlwZXMpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmJhbm5lcikmJihnLmJhbm5lcj10aGlzLmdldEZsb29yc0ZvclNpemVzKHRoaXMuZ2V0QmFubmVyU2l6ZXMoQyksXCJiYW5uZXJcIixDKSksKG51bGw9PT0oYT1DLm1lZGlhVHlwZXMpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLm5hdGl2ZSkmJihnLm5hdGl2ZT10aGlzLmdldEZsb29yc0ZvclNpemVzKHRoaXMuZ2V0TmF0aXZlU2l6ZXMoQyksXCJuYXRpdmVcIixDKSksbnVsbD09PShzPUMubWVkaWFUeXBlcyl8fHZvaWQgMD09PXM/dm9pZCAwOnMudmlkZW8pKXt2YXIgbT1DLm1lZGlhVHlwZXMudmlkZW8ucGxheWVyU2l6ZXx8W107Zy52aWRlbz0wPG0ubGVuZ3RoJiZcIm51bWJlclwiPT10eXBlb2YgbVswXT90aGlzLmdldEZsb29yc0ZvclNpemVzKFttXSxcInZpZGVvXCIsQyk6dGhpcy5nZXRGbG9vcnNGb3JTaXplcyhtLFwidmlkZW9cIixDKX1PYmplY3Qua2V5cyhnKS5sZW5ndGgmJih2PVMoUyh7fSx2KSx7Zmxvb3JzOmd9KSl9Y2F0Y2goZSl7RC5EZWJ1ZyhcIkNvdWxkIG5vdCBwYXJzZSBmbG9vcnMgZnJvbSBQcmViaWQ6IFwiK2UpfXRoaXMuc2xvdHMucHVzaChuZXcgSHQoQy5hZFVuaXRDb2RlLEMucGFyYW1zLnpvbmVJZCxDLnBhcmFtcy5uYXRpdmVDYWxsYmFjayxDLnRyYW5zYWN0aW9uSWQsdGhpcy5nZXRTaXplcyhDKSxDLnBhcmFtcy5wdWJsaXNoZXJTdWJJZCxDLm1lZGlhVHlwZXMsUGkuZ2V0VmlkZW9JbmZvRnJvbUJpZFJlcXVlc3QoQyksdikpLGM9Qy5wYXJhbXMubmV0d29ya0lkfHxjLElpKG4uY2VoKSxDLnBhcmFtcy5pbnRlZ3JhdGlvbk1vZGUmJihsPVVlKEMucGFyYW1zLmludGVncmF0aW9uTW9kZSkpfXB8fEQuV2FybmluZyhcIkFsbCBuYXRpdmUgYXNzZXRzIGNvbnRhaW5pbmcgVVJMIHNob3VsZCBiZSBzZW50IGFzIHBsYWNlaG9sZGVycyB3aXRoIHNlbmRJZChpY29uLCBpbWFnZSwgY2xpY2tVcmwsIHByaXZhY3lMaW5rLCBwcml2YWN5SWNvbilcIik7dmFyIHk9e307bi5nZHByQ29uc2VudCYmKHZvaWQgMCE9PW4uZ2RwckNvbnNlbnQuY29uc2VudFN0cmluZyYmKHkuY29uc2VudERhdGE9bi5nZHByQ29uc2VudC5jb25zZW50U3RyaW5nKSx2b2lkIDAhPT1uLmdkcHJDb25zZW50LmdkcHJBcHBsaWVzJiYoeS5nZHByQXBwbGllcz0hIW4uZ2RwckNvbnNlbnQuZ2RwckFwcGxpZXMpLHkudmVyc2lvbj1uLmdkcHJDb25zZW50LmFwaVZlcnNpb24pO3ZhciBiLEMsdz17dXNwU3RyaW5nOm4udXNwQ29uc2VudH0sST1uZXcgTGUoITEpOzA8aS5sZW5ndGgmJihDPWlbMF0pLnVzZXJJZEFzRWlkcyYmMDxDLnVzZXJJZEFzRWlkcy5sZW5ndGgmJihiPUMudXNlcklkQXNFaWRzKTt3aW5kb3cuY3JpdGVvX3B1YnRhZy5jb250ZXh0LnB1Ymxpc2hlckV4dD1uLnB1Ymxpc2hlckV4dCx3aW5kb3cuY3JpdGVvX3B1YnRhZy5jb250ZXh0LnVzZXJFeHQ9bi51c2VyRXh0LHRoaXMuY2FjaGU9bmV3IEVlKHdpbmRvdy5jcml0ZW9fcHVidGFnLmNvbnRleHQsdGhpcy5zbG90cyxjKSx0aGlzLnJlcXVlc3RCdWlsZGVyPW5ldyBHZSh0aGlzLmNhY2hlLmZpbHRlck5vQmlkU2xvdHModGhpcy5zbG90cyksd2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dCxJLGUsbCxjLHQse2NjcGFJYWJDb25zZW50OncsZ2RwckNvbnNlbnQ6eX0sbyx1LHRoaXMudGltZW91dCxkLGIsbi5zdGFydCksdGhpcy51cmw9dGhpcy5yZXF1ZXN0QnVpbGRlci5nZXRVcmwoKSx3aW5kb3cuQ3JpdGVvLnByZWJpZF9hZGFwdGVycz13aW5kb3cuQ3JpdGVvLnByZWJpZF9hZGFwdGVyc3x8e30sd2luZG93LkNyaXRlby5wcmViaWRfYWRhcHRlcnNbdGhpcy5hdWN0aW9uSWRdPXRoaXN9dmFyIGtpPShNaT1HLGEoT2ksTWkpLE9pLnByb3RvdHlwZS5jYW5FdmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuY29uZGl0aW9uUmVxdWlyZW1lbnR8fHRoaXMuY29uZGl0aW9uUmVxdWlyZW1lbnQuYXBwbHkodGhpcyl9LE9pLnByb3RvdHlwZS5ldmFsPWZ1bmN0aW9uKGUpe3RoaXMuY29uZGl0aW9uLmFwcGx5KHRoaXMpP3RoaXMuZXZlbnRJZlRydWUuZXZhbChlKTp0aGlzLmV2ZW50SWZGYWxzZS5ldmFsKGUpfSxPaS5OQU1FPVwiY29uZGl0aW9uYWxFdmVudFwiLE9pKSxNaSx4aSxCaTtmdW5jdGlvbiBPaShlLHQsaSxuKXt2YXIgbz1NaS5jYWxsKHRoaXMsT2kuTkFNRSl8fHRoaXM7cmV0dXJuIG8uY29uZGl0aW9uPWUsby5ldmVudElmVHJ1ZT10LG8uZXZlbnRJZkZhbHNlPWksby5jb25kaXRpb25SZXF1aXJlbWVudD1uLG99Qmk9eGk9eGl8fHt9LEJpW0JpLkNsYXNzaWM9MF09XCJDbGFzc2ljXCIsQmlbQmkuU3RpY2t5Rm9vdGVyPTFdPVwiU3RpY2t5Rm9vdGVyXCIsQmlbQmkuU2Nyb2xsaW5nQmFubmVyPTJdPVwiU2Nyb2xsaW5nQmFubmVyXCI7dmFyIERpPShGaS5TZXRDb29raWU9ZnVuY3Rpb24oZSx0LGksbixvKXt2b2lkIDA9PT1vJiYobz0hMSk7dmFyIHI9bnx8ZG9jdW1lbnQsYT1yLmxvY2F0aW9uLmhvc3RuYW1lLHM9bmV3IERhdGU7cy5zZXRUaW1lKHMuZ2V0VGltZSgpKzYwKmkqNjAqMWUzKTt2YXIgZD1cImV4cGlyZXM9XCIrcy50b1VUQ1N0cmluZygpO2lmKCFvKXJldHVybiBGaS5zZXRDb29raWVTdHJpbmcoZSx0LGQsdm9pZCAwLHIpLGE7Zm9yKHZhciBjPWEuc3BsaXQoXCIuXCIpLGw9MDtsPGMubGVuZ3RoOysrbCl7dmFyIHU9Yy5zbGljZShjLmxlbmd0aC1sLTEsYy5sZW5ndGgpLmpvaW4oXCIuXCIpO0ZpLnNldENvb2tpZVN0cmluZyhlLHQsZCx1LHIpO3ZhciBwPUZpLkdldENvb2tpZShlLG4pO2lmKHAmJnA9PT10KXJldHVybiB1fXJldHVybiBhfSxGaS5EZWxldGVDb29raWU9ZnVuY3Rpb24oZSx0LGkpe3ZvaWQgMD09PWkmJihpPSExKSxGaS5TZXRDb29raWUoZSxcIlwiLDAsdCxpKX0sRmkuR2V0Q29va2llPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTAsbj0odHx8ZG9jdW1lbnQpLmNvb2tpZS5zcGxpdChcIjtcIik7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV0scj1vLnN1YnN0cigwLG8uaW5kZXhPZihcIj1cIikpLnJlcGxhY2UoL15cXHMrfFxccyskL2csXCJcIiksYT1vLnN1YnN0cihvLmluZGV4T2YoXCI9XCIpKzEpO2lmKHI9PT1lKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoYSl9fSxGaS5zZXRDb29raWVTdHJpbmc9ZnVuY3Rpb24oZSx0LGksbixvKXt2YXIgcj1lK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0KStcIjtcIitpK1wiO1wiO24mJlwiXCIhPT1uJiYocis9XCJkb21haW49LlwiK24rXCI7XCIpLG8uY29va2llPXIrXCJwYXRoPS9cIn0sRmkpO2Z1bmN0aW9uIEZpKCl7fXZhciBOaT0oV2kucHJvdG90eXBlLkNyZWF0ZUFkdmFuY2VkQWRGb3JtYXRDb250YWluZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRGb3JtYXQ9PT14aS5TdGlja3lGb290ZXI/dGhpcy5DcmVhdGVTdGlja3lGb290ZXJDb250YWluZXIoZSk6dGhpcy5hZEZvcm1hdD09PXhpLlNjcm9sbGluZ0Jhbm5lcj90aGlzLkNyZWF0ZVNjcm9sbGluZ0Jhbm5lckNvbnRhaW5lcihlKTp2b2lkIDB9LFdpLnByb3RvdHlwZS5Jc1VzZXJPcHRvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZEZvcm1hdD09PXhpLlN0aWNreUZvb3RlciYmXCJ0cnVlXCI9PT1EaS5HZXRDb29raWUoXCJjdG9fc3RpY2t5X2Nsb3NlZFwiKX0sV2kucHJvdG90eXBlLkNyZWF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcj1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3Quc3R5bGUucG9zaXRpb249XCJmaXhlZFwiLHQuc3R5bGUuekluZGV4PVwiMjE0NzQ4MzY0NlwiLHQuc3R5bGUuYm90dG9tPVwiMFwiLHQuc3R5bGUubGVmdD1cIjBcIix0LnN0eWxlLnBhZGRpbmc9XCIwXCIsdC5zdHlsZS5ib3JkZXJDb2xvcj1cInJnYigxOTYsIDE5NiwgMTk2KVwiLHQuc3R5bGUud2lkdGg9XCIxMDAlXCIsdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9XCJyZ2JhKDI0NSwgMjQ1LCAyNDUsIDAuNTQ5MDIpXCIsdC5zdHlsZS5ib3JkZXJTdHlsZT1cInNvbGlkXCIsdC5zdHlsZS5ib3JkZXJXaWR0aD1cIjFweFwiO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO3QuYXBwZW5kQ2hpbGQoaSksaS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9XCJyZ2IoMjIxLCAyMjEsIDIyMSlcIixpLnN0eWxlLmJhY2tncm91bmRJbWFnZT1cInVybCgnLy9zdGF0aWMuY3JpdGVvLm5ldC9pbWFnZXMvY3JpdGVvL3B1Ymxpc2hlcnRhZy9jbG9zZS5wbmcnKVwiLGkuc3R5bGUuYmFja2dyb3VuZFJlcGVhdD1cIm5vLXJlcGVhdFwiLGkuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPVwiY2VudGVyXCIsaS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIixpLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixpLnN0eWxlLmxlZnQ9XCIwXCIsaS5zdHlsZS50b3A9XCItMjRweFwiLGkuc3R5bGUud2lkdGg9XCIyM3B4XCIsaS5zdHlsZS5oZWlnaHQ9XCIyNHB4XCIsaS5zdHlsZS5ib3JkZXJCb3R0b21Db2xvcj1cIiM2ZDZjNzFcIixpLnN0eWxlLmN1cnNvcj1cInBvaW50ZXJcIixpLm9uY2xpY2s9ZnVuY3Rpb24oKXt0LnN0eWxlLmRpc3BsYXk9XCJub25lXCIsRGkuU2V0Q29va2llKFwiY3RvX3N0aWNreV9jbG9zZWRcIixcInRydWVcIiwyNCl9O3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aWYodC5hcHBlbmRDaGlsZChuKSxuLmlkPVwiY3RvX3N0aWNreVwiLG4uc3R5bGUubWFyZ2luPVwiMCBhdXRvXCIsbi5zdHlsZS5kaXNwbGF5PVwidGFibGVcIix2b2lkIDA9PT1lfHxcIlwiPT09ZSlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO2Vsc2V7dmFyIG89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7bz9vLmFwcGVuZENoaWxkKHQpOkQuRXJyb3IoJ1RhcmdldCBlbGVtZW50IFwiJytlKydcIiBub3QgZm91bmQgaW4gdGhlIGRvY3VtZW50Jyl9cmV0dXJuIG4uaWR9LFdpLnByb3RvdHlwZS5DcmVhdGVTY3JvbGxpbmdCYW5uZXJDb250YWluZXI9ZnVuY3Rpb24oZSl7dmFyIHQsaT10aGlzO2lmKHZvaWQgMD09PWV8fFwiXCI9PT1lKSh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLmlkPVwiY3RvX3Njcm9sbGluZ1wiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7ZWxzZXt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTtpZighbilyZXR1cm4gRC5FcnJvcignVGFyZ2V0IGVsZW1lbnQgXCInK2UrJ1wiIG5vdCBmb3VuZCBpbiB0aGUgZG9jdW1lbnQnKSxlO3Q9bn12YXIgbz10Lm9mZnNldFRvcDtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXI/d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixmdW5jdGlvbigpe2kuU2V0U2Nyb2xsaW5nQ29udGFpbmVyUG9zaXRpb24odCxvKX0sITEpOndpbmRvdy5hdHRhY2hFdmVudChcIm9uc2Nyb2xsXCIsZnVuY3Rpb24oKXtpLlNldFNjcm9sbGluZ0NvbnRhaW5lclBvc2l0aW9uKHQsbyl9KSx0aGlzLlNldFNjcm9sbGluZ0NvbnRhaW5lclBvc2l0aW9uKHQsbyksdC5pZH0sV2kucHJvdG90eXBlLlNldFNjcm9sbGluZ0NvbnRhaW5lclBvc2l0aW9uPWZ1bmN0aW9uKGUsdCl7dC0xMDw9KHdpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3B8fDApPyhlLnN0eWxlLnBvc2l0aW9uPVwiZml4ZWRcIixlLnN0eWxlLnRvcD1cIjEwcHhcIik6KGUuc3R5bGUucG9zaXRpb249XCJzdGF0aWNcIixlLnN0eWxlLnRvcD1cImF1dG9cIil9LFdpKSxVaSxMaTtmdW5jdGlvbiBXaShlKXt0aGlzLmFkRm9ybWF0PWV9TGk9VWk9VWl8fHt9LExpW0xpLkluRnJpZW5kbHlJZnJhbWU9MV09XCJJbkZyaWVuZGx5SWZyYW1lXCIsTGlbTGkuSW5VbmZyaWVuZGx5SWZyYW1lPTJdPVwiSW5VbmZyaWVuZGx5SWZyYW1lXCIsTGlbTGkuRGlyZWN0SW50ZWdyYXRpb249M109XCJEaXJlY3RJbnRlZ3JhdGlvblwiO3ZhciBIaT0oemkudHJ5V3JpdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXRbaS0xXT1hcmd1bWVudHNbaV07cmV0dXJuXCJsb2FkaW5nXCI9PT1lLnJlYWR5U3RhdGUmJihlLndyaXRlLmFwcGx5KGUsdCksITApfSx6aSk7ZnVuY3Rpb24gemkoKXt9dmFyIEdpPShxaS5HZXRBdGZSYXRpbz1mdW5jdGlvbihlLHQpe3ZhciBpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO2lmKGUuZGlzcGxheUNvbnRleHQ9PT1VaS5EaXJlY3RJbnRlZ3JhdGlvbil7aWYobnVsbCE9PWkpcmV0dXJuIHFpLkdldFJhdGlvQWJvdmVGb2xkKGkpO2lmKEhpLnRyeVdyaXRlKGRvY3VtZW50LFwiPGRpdiBpZD0nY29tcHV0ZV92aXNpYmlsaXR5X2hlbHBlcicgd2lkdGg9JzBweCcgaGVpZ2h0PScwcHgnPjwvZGl2PlwiKSl7dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb21wdXRlX3Zpc2liaWxpdHlfaGVscGVyXCIpO2lmKHZvaWQgMCE9PW4pe3ZhciBvPXFpLkdldFJhdGlvQWJvdmVGb2xkKG4pO3JldHVybiBuLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQobiksb319fWlmKGUuZGlzcGxheUNvbnRleHQ9PT1VaS5JbkZyaWVuZGx5SWZyYW1lKXJldHVybiBxaS5HZXRSYXRpb0Fib3ZlRm9sZChmcmFtZUVsZW1lbnQpfSxxaS5HZXRSYXRpb0Fib3ZlRm9sZD1mdW5jdGlvbihlKXt2YXIgdD0obmV3IHh0KS5nZXRWaWV3cG9ydCgpLGk9dC5oZWlnaHQsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dC5zY3JvbGxUb3A7cmV0dXJuIGk+PW4uYm90dG9tK28/MTppPD1uLnRvcCtvPzA6KGktbi50b3AtbykvZS5vZmZzZXRIZWlnaHR9LHFpKTtmdW5jdGlvbiBxaSgpe312YXIgS2k9KFZpPUcsYShKaSxWaSksSmkucHJvdG90eXBlLmV2YWw9ZnVuY3Rpb24oZSl7dGhpcy5kaXNwbGF5UGFyYW1ldGVycy5hdGZSYXRpbz1HaS5HZXRBdGZSYXRpbyhlLmNvbnRleHQsdGhpcy5kaXNwbGF5UGFyYW1ldGVycy5jb250YWluZXJpZCl9LEppLnByb3RvdHlwZS5idWlsZENhc1VybD1mdW5jdGlvbih0LGksbixvLHIpe3ZhciBhPXRoaXMsZT10aGlzLnRjZkNvbXBhdGlibGVDb25zZW50UHJvdmlkZXIucmVhZHlUb1JldHJpZXZlKCkscz10aGlzLmNjcGFDb25zZW50UHJvdmlkZXIucmVhZHlUb1JldHJpZXZlKCk7aWYoZXx8cyl7dmFyIGQsYyxsPVtdO2UmJmwucHVzaChRKSxzJiZsLnB1c2goaiksZSYmdGhpcy50Y2ZDb21wYXRpYmxlQ29uc2VudFByb3ZpZGVyLnJldHJpZXZlQ29uc2VudEZvclBhc3NiYWNrKGZ1bmN0aW9uKGUpe2wuc3BsaWNlKGwuaW5kZXhPZihcIkdEUFJcIiksMSksMD09PWwubGVuZ3RoP3QoYS51cmxCdWlsZGVyLmJ1aWxkVXJsKGEuZGlzcGxheVBhcmFtZXRlcnMsaSxuLG8scixlLGMpKTpkPWV9KSxzJiZ0aGlzLmNjcGFDb25zZW50UHJvdmlkZXIucmV0cmlldmVDb25zZW50KGZ1bmN0aW9uKGUpe2wuc3BsaWNlKGwuaW5kZXhPZihcIkNDUEFcIiksMSksMD09PWwubGVuZ3RoP3QoYS51cmxCdWlsZGVyLmJ1aWxkVXJsKGEuZGlzcGxheVBhcmFtZXRlcnMsaSxuLG8scixkLGUpKTpjPWV9KX1lbHNlIHQodGhpcy51cmxCdWlsZGVyLmJ1aWxkVXJsKHRoaXMuZGlzcGxheVBhcmFtZXRlcnMsaSxuLG8scikpfSxKaSksVmksamksWWk7ZnVuY3Rpb24gSmkoZSx0LGksbixvKXt2YXIgcj1WaS5jYWxsKHRoaXMsZSl8fHRoaXM7ci5kaXNwbGF5UGFyYW1ldGVycz1pLHIudXJsQnVpbGRlcj10O3ZhciBhPW9lKCk7cmV0dXJuIHIudGNmQ29tcGF0aWJsZUNvbnNlbnRQcm92aWRlcj1udWxsIT1uP246bmV3IEoobmV3IFEod2luZG93LGEsRC5XYXJuaW5nKSxuZXcgaWUod2luZG93LGEsRC5XYXJuaW5nKSxELldhcm5pbmcpLHIuY2NwYUNvbnNlbnRQcm92aWRlcj1udWxsIT1vP286bmV3IGood2luZG93LGEsRC5XYXJuaW5nKSxyfVlpPWppPWppfHx7fSxZaVtZaS5BRlI9MF09XCJBRlJcIixZaVtZaS5BSlM9MV09XCJBSlNcIixZaVtZaS5OQVRJVkVBUEk9Ml09XCJOQVRJVkVBUElcIjt2YXIgWGk9KFppPUtpLGEoUWksWmkpLFFpLnByb3RvdHlwZS5ldmFsPWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7WmkucHJvdG90eXBlLmV2YWwuY2FsbCh0aGlzLHQpO3ZhciBuPXRoaXMuZGlzcGxheVBhcmFtZXRlcnMuY29udGFpbmVyaWQsbz10aGlzLmRpc3BsYXlQYXJhbWV0ZXJzLmNhbGxiYWNrU3VjY2VzcyxyPXRoaXMuZGlzcGxheVBhcmFtZXRlcnMuY2FsbGJhY2tFcnJvcjt0aGlzLmJ1aWxkQ2FzVXJsKGZ1bmN0aW9uKGUpe2lmKHQuY29udGV4dC5pc0FkQmxvY2tlZCl7aWYoIWkucmVzcGVjdHNFeWVvRGVhbClyZXR1cm47aS5sb2FkSWZyYW1lKGUsbixvLHIpfWVsc2UgaS5sb2FkSWZyYW1lKGUsbixvLHIpfSx0LmNvbnRleHQsamkuQUZSKX0sUWkucHJvdG90eXBlLmxvYWRJZnJhbWU9ZnVuY3Rpb24oZSx0LGksbil7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtvLnNyYz1lLG8uaWQ9dCtcIl9jdG9faWZyYW1lXCIsby5mcmFtZUJvcmRlcj1cIjBcIixvLnNldEF0dHJpYnV0ZShcImhzcGFjZVwiLFwiMFwiKSxvLnNldEF0dHJpYnV0ZShcInZzcGFjZVwiLFwiMFwiKSxvLm1hcmdpbldpZHRoPVwiMHB4XCIsby5tYXJnaW5IZWlnaHQ9XCIwcHhcIixvLndpZHRoPVwiMTAwJVwiLG8uaGVpZ2h0PVwiMTAwJVwiLG8uc2Nyb2xsaW5nPVwibm9cIixpJiYoby5vbmxvYWQ9aSksbiYmKG8ub25lcnJvcj1uKTt2YXIgcj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtyP3IuYXBwZW5kQ2hpbGQobyk6RC5FcnJvcignVGFyZ2V0IGVsZW1lbnQgXCInK3QrJ1wiIG5vdCBmb3VuZCBpbiB0aGUgZG9jdW1lbnQnKX0sUWkuTkFNRT1cImRpc3BsYXlBZnJcIixRaSksWmk7ZnVuY3Rpb24gUWkoZSx0LGkpe3ZhciBuPVppLmNhbGwodGhpcyxRaS5OQU1FLGUsdCl8fHRoaXM7cmV0dXJuIG4ucmVzcGVjdHNFeWVvRGVhbD1pLG59dmFyICRpPWZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGYoZSx0KXtyZXR1cm4gaC5jYWxsKHRoaXMsZi5OQU1FLGUsdCl8fHRoaXN9cmV0dXJuIGEoZixoKSxmLnByb3RvdHlwZS5ldmFsPWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXM7aC5wcm90b3R5cGUuZXZhbC5jYWxsKHRoaXMsdCk7dmFyIG49dGhpcy5kaXNwbGF5UGFyYW1ldGVycy5jb250YWluZXJpZCxvPXRoaXMuZGlzcGxheVBhcmFtZXRlcnMud2lkdGgscj10aGlzLmRpc3BsYXlQYXJhbWV0ZXJzLmhlaWdodCxlPXRoaXMuZGlzcGxheVBhcmFtZXRlcnMubGF5b3V0LGE9dGhpcy5kaXNwbGF5UGFyYW1ldGVycy5jYWxsYmFja1N1Y2Nlc3Mscz10aGlzLmRpc3BsYXlQYXJhbWV0ZXJzLmNhbGxiYWNrRXJyb3IsZD10aGlzLmRpc3BsYXlQYXJhbWV0ZXJzLnBhc3NiYWNrQ29kZSxjPXRoaXMuZGlzcGxheVBhcmFtZXRlcnMubmF0aXZlQ2FsbGJhY2ssbD10aGlzLmRpc3BsYXlQYXJhbWV0ZXJzLm5hdGl2ZUNhbGxiYWNrTmFtZTtpZih2b2lkIDAhPT1jJiZ2b2lkIDAhPT1sKXRoaXMuYnVpbGRDYXNVcmwoZnVuY3Rpb24oZSl7aS5sb2FkSnNvbnBOYXRpdmVBcGkoZSxsLGMsYSxkKX0sdC5jb250ZXh0LGppLk5BVElWRUFQSSk7ZWxzZSBpZihcIlwiPT09bnx8dm9pZCAwPT09bilELkVycm9yKFwiTm8gY29udGFpbmVyaWQgcHJvdmlkZWRcIik7ZWxzZSBpZih2b2lkIDAhPT1lKXt2YXIgdT1mLkNIQVBJX05BTUUrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGUpKSxwPWZ1bmN0aW9uKCl7dmFyIGU9aS5nZXRDb250YWluZXJTaXplKG4sbyxyKTtpLmJ1aWxkQ2FzVXJsKGZ1bmN0aW9uKGUpe2kubG9hZFNjcmlwdEFzeW5jKGUsdSxhLHMsZCl9LHQuY29udGV4dCx2b2lkIDAsZS53aWR0aCxlLmhlaWdodCl9O3ZvaWQgMCE9PW8mJnZvaWQgMCE9PXI/cCgpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyP3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLHAsITEpOndpbmRvdy5hdHRhY2hFdmVudChcIm9ubG9hZFwiLHApfWVsc2UgdGhpcy5idWlsZENhc1VybChmdW5jdGlvbihlKXtpLmxvYWRTY3JpcHRBc3luYyhlLHZvaWQgMCxhLHMsZCl9LHQuY29udGV4dCl9LGYucHJvdG90eXBlLmxvYWRKc29ucE5hdGl2ZUFwaT1mdW5jdGlvbihlLHQsaSxuLG8pe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7ci50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIsci5zcmM9ZSx3aW5kb3dbdF09ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZSYmMD09PWUucmVzcG9uc2Vfc3RhdHVzPyhpKGUpLHZvaWQgMCE9PW4mJm4oZSkpOnZvaWQgMCE9PW8mJm8oKSx3aW5kb3dbdF09dm9pZCAwLGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQocil9LGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocil9LGYucHJvdG90eXBlLmxvYWRTY3JpcHRBc3luYz1mdW5jdGlvbihlLHQsaSxuLG8pe3ZhciByPW5ldyBrKGUsdCk7ci5zZW5kKGZ1bmN0aW9uKGUpe3ZhciBwYj1vfHxmdW5jdGlvbigpe307ZXZhbChlKSx2b2lkIDAhPT1pJiZpKGUpfSxmdW5jdGlvbihlLHQpe3ZvaWQgMCE9PW8mJm8oKSx2b2lkIDAhPT1uJiZuKGUsdCl9LG8pfSxmLnByb3RvdHlwZS5nZXRDb250YWluZXJTaXplPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSxvPWt0LmluSWZyYW1lKCkscj10fHwobz9kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoOm4/bi5vZmZzZXRXaWR0aDowKSxhPWl8fChvP2RvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0Om4/bi5vZmZzZXRIZWlnaHQ6MCk7cmV0dXJuKDA9PT1yfHwwPT09YXx8cjw4MHx8YTw0MCkmJihyPWE9dm9pZCAwKSx7d2lkdGg6cixoZWlnaHQ6YX19LGYuTkFNRT1cImRpc3BsYXlFdmVudEFzeW5jXCIsZi5DSEFQSV9OQU1FPVwicHVibGlzaGVyQ3JlYXRpdmVDb25maWd1cmF0aW9uXCIsZn0oS2kpLGVuPSh0bj1LaSxhKG5uLHRuKSxubi5wcm90b3R5cGUuZXZhbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RuLnByb3RvdHlwZS5ldmFsLmNhbGwodGhpcyxlKSx0aGlzLmJ1aWxkQ2FzVXJsKGZ1bmN0aW9uKGUpe3QubG9hZFNjcmlwdFN5bmMoZSl9LGUuY29udGV4dCl9LG5uLnByb3RvdHlwZS5sb2FkU2NyaXB0U3luYz1mdW5jdGlvbihlKXtkb2N1bWVudC53cml0ZShcIjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J1wiK2UrXCInPjxcXC9zY3JpcHQ+XCIpfSxubi5OQU1FPVwiZGlzcGxheVN5bmNcIixubiksdG47ZnVuY3Rpb24gbm4oZSx0LGksbil7cmV0dXJuIHRuLmNhbGwodGhpcyxubi5OQU1FLGUsdCxpLG4pfHx0aGlzfXZhciBvbj0ocm49RnQsYShhbixybiksYW4ucHJvdG90eXBlLnBhcnNlQWRGb3JtYXQ9ZnVuY3Rpb24oZSl7c3dpdGNoKGUudG9Mb3dlckNhc2UoKSl7Y2FzZVwic3RpY2t5Zm9vdGVyXCI6cmV0dXJuIHhpLlN0aWNreUZvb3RlcjtjYXNlXCJzY3JvbGxpbmdiYW5uZXJcIjpyZXR1cm4geGkuU2Nyb2xsaW5nQmFubmVyO2RlZmF1bHQ6cmV0dXJuIHhpLkNsYXNzaWN9fSxhbikscm47ZnVuY3Rpb24gYW4oZSl7dmFyIHQ9cm4uY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gdC56b25laWQ9dm9pZCAwLHQuYXN5bmM9dm9pZCAwLHQuY29udGFpbmVyaWQ9dm9pZCAwLHQud2lkdGg9dm9pZCAwLHQuaGVpZ2h0PXZvaWQgMCx0LmNhbGxiYWNrU3VjY2Vzcz12b2lkIDAsdC5jYWxsYmFja0Vycm9yPXZvaWQgMCx0LmNhbGxJZk5vdEFkYmxvY2tlZD12b2lkIDAsdC5wYXNzYmFja0NvZGU9dm9pZCAwLHQucHVibGlzaGVyVXJsPXZvaWQgMCx0Lm92ZXJyaWRlbldwZHQwPXZvaWQgMCx0Lm92ZXJyaWRlbkN0MD12b2lkIDAsdC5sYXlvdXQ9dm9pZCAwLHQuYXRmUmF0aW89dm9pZCAwLHQuYWRGb3JtYXQ9eGkuQ2xhc3NpYyx0Lm5hdGl2ZUNhbGxiYWNrPXZvaWQgMCx0Lm5hdGl2ZUNhbGxiYWNrTmFtZT12b2lkIDAsdC5vdmVycmlkZVpvbmVGbG9vcj0hMCx0LmNvbGxhcHNlQ29udGFpbmVySWZOb3RBZGJsb2NrZWQ9ITAsdC5leHRyYURhdGE9e30sdC5hZGRQYXJhbWV0ZXIoXCJ6b25lSWRcIixmdW5jdGlvbihlKXt0LnpvbmVpZD1lfSksdC5hZGRQYXJhbWV0ZXIoXCJhc3luY1wiLGZ1bmN0aW9uKGUpe3QuYXN5bmM9ITA9PT1lfSksdC5hZGRQYXJhbWV0ZXIoXCJjb250YWluZXJJZFwiLGZ1bmN0aW9uKGUpe3QuY29udGFpbmVyaWQ9ZX0pLHQuYWRkUGFyYW1ldGVyKFwid2lkdGhcIixmdW5jdGlvbihlKXt0LndpZHRoPWV9KSx0LmFkZFBhcmFtZXRlcihcImhlaWdodFwiLGZ1bmN0aW9uKGUpe3QuaGVpZ2h0PWV9KSx0LmFkZFBhcmFtZXRlcihcImNhbGxiYWNrU3VjY2Vzc1wiLGZ1bmN0aW9uKGUpe3QuY2FsbGJhY2tTdWNjZXNzPWV9KSx0LmFkZFBhcmFtZXRlcihcImNhbGxiYWNrRXJyb3JcIixmdW5jdGlvbihlKXt0LmNhbGxiYWNrRXJyb3I9ZX0pLHQuYWRkUGFyYW1ldGVyKFwiY2FsbElmTm90QWRibG9ja2VkXCIsZnVuY3Rpb24oZSl7dC5jYWxsSWZOb3RBZGJsb2NrZWQ9ZX0pLHQuYWRkUGFyYW1ldGVyKFwicGFzc2JhY2tDb2RlXCIsZnVuY3Rpb24oZSl7dC5wYXNzYmFja0NvZGU9ZX0pLHQuYWRkUGFyYW1ldGVyKFwibGF5b3V0XCIsZnVuY3Rpb24oZSl7dC5sYXlvdXQ9ZX0pLHQuYWRkUGFyYW1ldGVyKFwicHVibGlzaGVyQ3JlYXRpdmVDb25maWd1cmF0aW9uXCIsZnVuY3Rpb24oZSl7dC5sYXlvdXQ9ZX0pLHQuYWRkUGFyYW1ldGVyKFwiZXh0cmFEYXRhXCIsZnVuY3Rpb24oZSl7dC5leHRyYURhdGE9ZX0pLHQuYWRkUGFyYW1ldGVyKFwicHVibGlzaGVyVXJsXCIsZnVuY3Rpb24oZSl7dC5wdWJsaXNoZXJVcmw9ZX0pLHQuYWRkUGFyYW1ldGVyKFwid3BkdDBcIixmdW5jdGlvbihlKXt0Lm92ZXJyaWRlbldwZHQwPWV9KSx0LmFkZFBhcmFtZXRlcihcImN0MFwiLGZ1bmN0aW9uKGUpe3Qub3ZlcnJpZGVuQ3QwPWV9KSx0LmFkZFBhcmFtZXRlcihcIm92ZXJyaWRlWm9uZUZsb29yXCIsZnVuY3Rpb24oZSl7dC5vdmVycmlkZVpvbmVGbG9vcj1lfSksdC5hZGRQYXJhbWV0ZXIoXCJjb2xsYXBzZUNvbnRhaW5lcklmTm90QWRibG9ja2VkXCIsZnVuY3Rpb24oZSl7dC5jb2xsYXBzZUNvbnRhaW5lcklmTm90QWRibG9ja2VkPWV9KSx0LmFkZFBhcmFtZXRlcihcImFkRm9ybWF0XCIsZnVuY3Rpb24oZSl7dC5hZEZvcm1hdD10LnBhcnNlQWRGb3JtYXQoZSl9KSx0LmFkZFBhcmFtZXRlcihcIm5hdGl2ZUNhbGxiYWNrXCIsZnVuY3Rpb24oZSl7dC5uYXRpdmVDYWxsYmFjaz1lLHQubmF0aXZlQ2FsbGJhY2tOYW1lPVwiY3JpdGVvX2NiX1wiK0FlKCkucmVwbGFjZSgvLS9nLFwiXCIpfSkscm4ucHJvdG90eXBlLnRyeUZpbGxQYXJhbWV0ZXJzLmNhbGwodCxlKSx0fXZhciBzbj0oZG4ucHJvdG90eXBlLmJ1aWxkVXJsPWZ1bmN0aW9uKGUsdCxpLG4sbyxyLGEpe3ZhciBzO3N3aXRjaChpKXtjYXNlIGppLkFGUjpzPWRuLkNBU19VUkxfQUZSO2JyZWFrO2Nhc2UgamkuTkFUSVZFQVBJOnM9ZG4uQ0FTX1VSTF9OQVRJVkVfQVBJO2JyZWFrO2RlZmF1bHQ6cz1kbi5DQVNfVVJMX0FKU312YXIgZD1zK1wiP3B0dj1cIitSZTtpZighMD09PXQuaXNBZEJsb2NrZWQpe3ZhciBjPXRoaXMuZ2V0QWJwUGFyYW1ldGVyKGUsdCk7ZCs9XCImYWJwPVwiK1N0cmluZyhjKX1mb3IodmFyIGwgaW4gaSE9PWppLkFGUiYmKGQrPXZvaWQgMCE9PWUuY29udGFpbmVyaWQmJlwiXCIhPT1lLmNvbnRhaW5lcmlkP1wiJmNvbnRhaW5lcmlkPVwiK2VuY29kZVVSSUNvbXBvbmVudChlLmNvbnRhaW5lcmlkKTpcIlwiKSxkKz1cIiZ6b25laWQ9XCIrU3RyaW5nKGUuem9uZWlkKSxkKz1uP1wiJndpZHRoPVwiK246XCJcIixkKz1vP1wiJmhlaWdodD1cIitvOlwiXCIsZCs9dC5jdG9JZE9uUHVibGlzaGVyRG9tYWluP1wiJmlkY3B5PVwiK3QuY3RvSWRPblB1Ymxpc2hlckRvbWFpbjpcIlwiLGQrPXQuc2VjdXJlSWQ/XCImc2lkPVwiK3Quc2VjdXJlSWQ6XCJcIixkKz10LmlzT3B0T3V0P1wiJm9wdG91dD0xXCI6XCJcIixkKz10LmJ1bmRsZT9cIiZidW5kbGU9XCIrdC5idW5kbGU6XCJcIixkKz1cIiZjYj1cIitTdHJpbmcoT2UuZ2VuZXJhdGVDYWNoZUJ1c3RlcigpKSxkKz1cIiZub2Rpcz1cIisodC5kaXNpbmc/XCIwXCI6XCIxXCIpLGQrPXQuY2hhcnNldD9cIiZjaGFyc2V0PVwiK3QuY2hhcnNldDpcIlwiLGQrPWUub3ZlcnJpZGVuQ3QwP1wiJmN0MD1cIitlbmNvZGVVUklDb21wb25lbnQoZS5vdmVycmlkZW5DdDApOnQuY3QwP1wiJmN0MD1cIitlbmNvZGVVUklDb21wb25lbnQodC5jdDApOlwiXCIsZCs9ZS5vdmVycmlkZW5XcGR0MD9cIiZ3cGR0MD1cIitlbmNvZGVVUklDb21wb25lbnQoZS5vdmVycmlkZW5XcGR0MCk6dC53cGR0MD9cIiZ3cGR0MD1cIitlbmNvZGVVUklDb21wb25lbnQodC53cGR0MCk6XCJcIixlLnB1Ymxpc2hlclVybCYmKGQrPVwiJnB1Ymxpc2hlcnVybD1cIitlbmNvZGVVUklDb21wb25lbnQoZS5wdWJsaXNoZXJVcmwpKSxkKz10LmdldENvbnRleHRGbGFncygpLGUuZXh0cmFEYXRhKXZvaWQgMCE9PWUuZXh0cmFEYXRhW2xdJiYoZCs9XCImXCIrbCtcIj1cIitlbmNvZGVVUklDb21wb25lbnQoZS5leHRyYURhdGFbbF0pKTtyZXR1cm4gZCs9ZS5wYXNzYmFja0NvZGU/XCImZGxwPTFcIjpcIlwiLGUuaW50ZWdyYXRpb25Nb2RlIT09RGUuVW5zcGVjaWZpZWQmJihkKz1cIiZpbT1cIitlLmludGVncmF0aW9uTW9kZSksZCs9XCImZGM9XCIrdC5kaXNwbGF5Q29udGV4dCx2b2lkIDAhPT1lLmF0ZlJhdGlvJiYoZCs9XCImYXRmcj1cIitNYXRoLnJvdW5kKDEwMCplLmF0ZlJhdGlvKS8xMDApLGQrPXQuaGlnaGVzdEFjY2Vzc2libGVVcmw/XCImbG9jPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0LmhpZ2hlc3RBY2Nlc3NpYmxlVXJsKS5zdWJzdHJpbmcoMCwxNjAwKTpcIlwiLHImJih2b2lkIDAhPT1yLmdkcHJBcHBsaWVzJiYoZCs9XCImZ2RwckFwcD1cIisoci5nZHByQXBwbGllcz9cIjFcIjpcIjBcIikpLHZvaWQgMCE9PXIuY29uc2VudERhdGEmJihkKz1yLmNvbnNlbnREYXRhP1wiJmdkcHJEdGE9XCIrci5jb25zZW50RGF0YTpcIlwiKSx2b2lkIDAhPT1yLnZlcnNpb24mJihkKz1yLnZlcnNpb24/XCImZ2RwclZlcj1cIityLnZlcnNpb246XCJcIikpLGEmJnZvaWQgMCE9PWEudXNwU3RyaW5nJiYoZCs9XCImdXNwSWFiPVwiK2EudXNwU3RyaW5nKSx0LmNjcGFPcHRvdXQmJihkKz1cIiZ1c3BPcHRvdXQ9XCIrdC5jY3BhT3B0b3V0KSx2b2lkIDAhPT1lLm5hdGl2ZUNhbGxiYWNrTmFtZSYmKGQrPVwiJmNhbGxiYWNrPVwiK2UubmF0aXZlQ2FsbGJhY2tOYW1lKSxkfSxkbi5wcm90b3R5cGUuZ2V0QWJwUGFyYW1ldGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQuaXNBZEJsb2NrZWQ/MTowKXwoZS5vdmVycmlkZVpvbmVGbG9vcj8wOjIpfSxkbi5DQVNfVVJMX0FKUz1cImh0dHBzOi8vY2FzLmNyaXRlby5jb20vZGVsaXZlcnkvYWpzLnBocFwiLGRuLkNBU19VUkxfQUZSPVwiaHR0cHM6Ly9jYXMuY3JpdGVvLmNvbS9kZWxpdmVyeS9hZnIucGhwXCIsZG4uQ0FTX1VSTF9OQVRJVkVfQVBJPVwiaHR0cHM6Ly9jYXMuY3JpdGVvLmNvbS9kZWxpdmVyeS8wLjEvbmFwaS5qc29ucFwiLGRuKTtmdW5jdGlvbiBkbigpe312YXIgY249KGxuLnByb3RvdHlwZS5yZXNwZWN0c0V5ZW9EZWFsPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO2lmKCF0aGlzLnJlc3BlY3RzU2l6ZUNvbnN0cmFpbnRzKHQpKXJldHVybiBELkRlYnVnKFwiVGhlIGVsZW1lbnQgXCIrZStcImRvZXMgbm90IHJlc3BlY3QgRXllbyBhY2NlcHRhYmxlIGFkcyBzaXplIGNvbnN0cmFpbnRzXCIpLCExO3ZhciBpPXRoaXMuZ2V0TmV3UmF0aW9zRmVhdHVyZXModCksbj1pLnJlc3BlY3RzQWRSYXRpb0NvbnN0cmFpbnQ7cmV0dXJuIG4/KGxuLmF0ZlJhdGlvPWkubmV3QXRmUmF0aW8sbG4uYnRmUmF0aW89aS5uZXdCdGZSYXRpbyk6RC5EZWJ1ZyhcIlRoZSBlbGVtZW50IFwiK2UrXCJkb2VzIG5vdCByZXNwZWN0IEV5ZW8gYWNjZXB0YWJsZSBhZHMgcmF0aW8gY29uc3RyYWludHNcIiksbn0sbG4ucHJvdG90eXBlLnJlc3BlY3RzU2l6ZUNvbnN0cmFpbnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0QWRMb2NhdGlvbkF0dHJpYnV0ZShlKTtzd2l0Y2godCl7Y2FzZVwiYWJvdmUtY29udGVudFwiOnJldHVybiBlLm9mZnNldEhlaWdodDw9MjAwO2Nhc2VcImluLWNvbnRlbnRcIjpyZXR1cm4hMTtjYXNlXCJiZWxvdy1jb250ZW50XCI6cmV0dXJuIGUub2Zmc2V0SGVpZ2h0PD00MDA7Y2FzZVwic2lkZS1jb250ZW50XCI6cmV0dXJuIGUub2Zmc2V0V2lkdGg8PTM1MDtkZWZhdWx0OnJldHVybiB2b2lkIDAhPT10JiZELkVycm9yKFwiVW5rbm93biBkYXRhLWFkLWxvYyBhdHRyaWJ1dGUgOiBcIit0KSwhMH19LGxuLnByb3RvdHlwZS5nZXRBZExvY2F0aW9uQXR0cmlidXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZShcImRhdGEtYWQtbG9jXCIpfHx2b2lkIDB9LGxuLnByb3RvdHlwZS5nZXROZXdSYXRpb3NGZWF0dXJlcz1mdW5jdGlvbihlKXt2YXIgdD1HaS5HZXRSYXRpb0Fib3ZlRm9sZChlKSxpPWUub2Zmc2V0SGVpZ2h0KmUub2Zmc2V0V2lkdGgsbj1zY3JlZW4ud2lkdGgqc2NyZWVuLmhlaWdodCxvPWxuLmF0ZlJhdGlvK3QqaS9uLHI9bG4uYnRmUmF0aW8rKDEtdCkqaS9uO3JldHVybntyZXNwZWN0c0FkUmF0aW9Db25zdHJhaW50Om88PS4xNSYmcjw9LjI1LG5ld0F0ZlJhdGlvOm8sbmV3QnRmUmF0aW86cn19LGxuLmF0ZlJhdGlvPTAsbG4uYnRmUmF0aW89MCxsbik7ZnVuY3Rpb24gbG4oKXt9ZnVuY3Rpb24gdW4oZSl7dmFyIHQ9bmV3IG9uKGUpO2lmKHQuYXN5bmM9ITEhPT10LmFzeW5jLHZvaWQgMCE9PXQuem9uZWlkKWlmKHZvaWQgMD09PXQubGF5b3V0fHwhMSE9PXQuYXN5bmMpaWYoITAhPT10LmFzeW5jfHx2b2lkIDAhPT10LmNvbnRhaW5lcmlkJiZcIlwiIT09dC5jb250YWluZXJpZHx8dm9pZCAwIT09dC5uYXRpdmVDYWxsYmFjayl7aWYoITE9PT10LmFzeW5jJiZ2b2lkIDAhPT10LnBhc3NiYWNrQ29kZSYmKEQuRXJyb3IoXCJDcml0ZW8uRGlzcGxheUFkIGRvZXMgbm90IHN1cHBvcnQgc3luY2hyb25vdXMgbG9jYWwgcGFzc2JhY2tcIiksdC5wYXNzYmFja0NvZGU9dm9pZCAwKSx0LmFkRm9ybWF0IT09eGkuQ2xhc3NpYyl7dmFyIGk9bmV3IE5pKHQuYWRGb3JtYXQpO2lmKGkuSXNVc2VyT3B0b3V0KCkpcmV0dXJuIHZvaWQgRC5EZWJ1ZyhcIlRoZSB1c2VyIGhhcyBvcHRlZC1vdXQgZm9yIDEgZGF5IHdoZW4gY2xvc2luZyB0aGUgc3RpY2t5IGZvb3Rlci5cIik7dC5jb250YWluZXJpZD1pLkNyZWF0ZUFkdmFuY2VkQWRGb3JtYXRDb250YWluZXIodC5jb250YWluZXJpZCl9dmFyIG47ITE9PT10LmFzeW5jJiZ2b2lkIDAhPT10Lm5hdGl2ZUNhbGxiYWNrJiYoRC5FcnJvcihcIk5hdGl2ZSBBUEkgZG9lcyBub3Qgc3VwcG9ydCBzeW5jaHJvbm91cyBsb2NhbCBwYXNzYmFja1wiKSx0LnBhc3NiYWNrQ29kZT12b2lkIDApLG49bmV3KHQuYXN5bmM/JGk6ZW4pKG5ldyBzbix0KSx3aW5kb3cuY3JpdGVvX3B1YnRhZy5wdXNoKG4pfWVsc2UgRC5FcnJvcihcIk1pc3NpbmcgcGFyYW1ldGVyICdjb250YWluZXJpZCcgZm9yIGFuIGFzeW5jIGRpc3BsYXlcIik7ZWxzZSBELkVycm9yKFwiQ3JpdGVvIGhvc3RlZCBhZHMgb25seSB3b3JrIGluIGFzeW5jIG1vZGVcIik7ZWxzZSBELkVycm9yKFwibWlzc2luZyBwYXJhbWV0ZXIgJ3pvbmVpZCdcIil9ZnVuY3Rpb24gcG4oZSl7dmFyIHQ9bmV3IG9uKGUpO2lmKHZvaWQgMCE9PXQuem9uZWlkKWlmKHZvaWQgMCE9PXQuY29udGFpbmVyaWQmJlwiXCIhPT10LmNvbnRhaW5lcmlkKXt2YXIgaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0LmNvbnRhaW5lcmlkKTtpZihobihpKSl7dmFyIG49d2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dDtpZih2b2lkIDA9PT1uLmlzQWRCbG9ja2VkKShuZXcgZikuaXNBZEJsb2NrZWQoZnVuY3Rpb24oZSl7bi5pc0FkQmxvY2tlZD1lLHdpbmRvdy5jcml0ZW9fcHVidGFnLmV2YWxFdmVudHMoKX0pO3ZhciBvLHIsYT1uZXcgY247bz1uZXcgWGkobmV3IHNuLHQsYS5yZXNwZWN0c0V5ZW9EZWFsKHQuY29udGFpbmVyaWQpKSxyPW5ldyBudChmdW5jdGlvbigpe3QuY29sbGFwc2VDb250YWluZXJJZk5vdEFkYmxvY2tlZCYmKGkuc3R5bGUuZGlzcGxheT1cIm5vbmVcIiksdm9pZCAwIT09dC5jYWxsSWZOb3RBZGJsb2NrZWQmJnQuY2FsbElmTm90QWRibG9ja2VkKCl9KTt2YXIgcztzPW5ldyBraShmdW5jdGlvbigpe3JldHVybiEwPT09d2luZG93LmNyaXRlb19wdWJ0YWcuY29udGV4dC5pc0FkQmxvY2tlZH0sbyxyLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXdpbmRvdy5jcml0ZW9fcHVidGFnLmNvbnRleHQuaXNBZEJsb2NrZWR9KSx3aW5kb3cuY3JpdGVvX3B1YnRhZy5wdXNoKHMpfWVsc2UgRC5FcnJvcihcImNhbid0IGRpc3BsYXkgYWNjZXB0YWJsZSBhZCA6IHRoZSBjb250YWluZXIgXFxcIlwiK3QuY29udGFpbmVyaWQrJ1wiIGlzIG5vdCB2aXNpYmxlJyl9ZWxzZSBELkVycm9yKFwibWlzc2luZyBwYXJhbWV0ZXIgJ2NvbnRhaW5lcmlkJyB0byBkaXNwbGF5IGFjY2VwdGFibGUgYWRzXCIpO2Vsc2UgRC5FcnJvcihcIm1pc3NpbmcgcGFyYW1ldGVyICd6b25laWQnXCIpfWZ1bmN0aW9uIGhuKGUsdCl7aWYoZT09PWRvY3VtZW50KXJldHVybiEwO3ZhciBpPVwidmlzaWJsZVwiPT09ZS5zdHlsZS52aXNpYmlsaXR5O2lmKCFlKXJldHVybiExO2lmKCFlLnBhcmVudE5vZGUpcmV0dXJuITE7aWYoZS5zdHlsZSl7aWYoXCJub25lXCI9PT1lLnN0eWxlLmRpc3BsYXkpcmV0dXJuITE7aWYoXCJoaWRkZW5cIj09PWUuc3R5bGUudmlzaWJpbGl0eSYmITE9PT10KXJldHVybiExfWlmKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKXt2YXIgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlLFwiXCIpO2lmKFwibm9uZVwiPT09bi5kaXNwbGF5KXJldHVybiExO2lmKFwiaGlkZGVuXCI9PT1uLnZpc2liaWxpdHkmJiExPT09dClyZXR1cm4hMTtpPWl8fFwidmlzaWJsZVwiPT09bi52aXNpYmlsaXR5fXZhciBvPWUuY3VycmVudFN0eWxlO2lmKG8pe2lmKFwibm9uZVwiPT09by5kaXNwbGF5KXJldHVybiExO2lmKFwiaGlkZGVuXCI9PT1vLnZpc2liaWxpdHkmJiExPT09dClyZXR1cm4hMTtpPWl8fFwidmlzaWJsZVwiPT09by52aXNpYmlsaXR5fXJldHVybiBobihlLnBhcmVudE5vZGUsbnVsbCE9dD90OmkpfXZhciBmbj0obW4uTG9hZFBvbHlmaWxscz1mdW5jdGlvbigpe21uLkRlZmluZUlzQXJyYXkoKSxtbi5EZWZpbmVJbmRleE9mKCksbW4uRGVmaW5lRmlsdGVyKCl9LG1uLkRlZmluZUlzQXJyYXk9ZnVuY3Rpb24oKXtBcnJheS5pc0FycmF5fHwoQXJyYXkuaXNBcnJheT1mdW5jdGlvbihlKXtyZXR1cm5cIltvYmplY3QgQXJyYXldXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9KX0sbW4uRGVmaW5lSW5kZXhPZj1mdW5jdGlvbigpe0FycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT10aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoXCIndGhpcycgaXMgbnVsbCBvciBub3QgZGVmaW5lZFwiKTt2YXIgaT10aGlzLmxlbmd0aDtpZigwPT09aSlyZXR1cm4tMTtpZihpPD10KXJldHVybi0xO2Zvcih2YXIgbj1NYXRoLm1heCgwPD10P3Q6aS1NYXRoLmFicyh0KSwwKTtuPGk7KXtpZihuIGluIHRoaXMmJnRoaXNbbl09PT1lKXJldHVybiBuO24rK31yZXR1cm4tMX0pfSxtbi5EZWZpbmVGaWx0ZXI9ZnVuY3Rpb24oKXtBcnJheS5wcm90b3R5cGUuZmlsdGVyfHwoQXJyYXkucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT10aGlzfHx2b2lkIDA9PT10aGlzKXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIHQ9dGhpcy5sZW5ndGg7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yO2Zvcih2YXIgaT1bXSxuPTI8PWFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzFdOnZvaWQgMCxvPTA7bzx0O28rKylpZihvIGluIHRoaXMpe3ZhciByPXRoaXNbb107ZS5jYWxsKG4scixvLHRoaXMpJiZpLnB1c2gocil9cmV0dXJuIGl9KX0sbW4pLHZuLGduO2Z1bmN0aW9uIG1uKCl7fWZ1bmN0aW9uIHluKHQsaSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgMCE9PWk/aTp0fX1mdW5jdGlvbiBibihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtyZXR1cm4gdC5ocmVmPWUse3Byb3RvY29sOnQucHJvdG9jb2wsaG9zdDp0Lmhvc3QsaG9zdG5hbWU6dC5ob3N0bmFtZSxwYXRobmFtZTpcIi9cIj09PXQucGF0aG5hbWVbMF0/dC5wYXRobmFtZS5zbGljZSgxKTp0LnBhdGhuYW1lLHNlYXJjaDp0LnNlYXJjaCxocmVmOnQuaHJlZn19Z249dm49dm58fHt9LGduW2duLk5vbmU9MF09XCJOb25lXCIsZ25bZ24uQ29va2llPTFdPVwiQ29va2llXCIsZ25bZ24uTG9jYWxTdG9yYWdlPTJdPVwiTG9jYWxTdG9yYWdlXCI7dmFyIENuPSh3bi5pc1NhZmFyaUJyb3dzZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2god24uU0FGQVJJX0NIRUNLX1JFR0VYKX0sd24uaXNBbmRyb2lkQnJvd3Nlcj1mdW5jdGlvbigpe3JldHVybi0xPG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiYW5kcm9pZFwiKX0sd24uaXNGaXJlZm94QnJvd3Nlcj1mdW5jdGlvbigpe3JldHVybi0xPG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZmlyZWZveFwiKX0sd24uaXNFZGdlQ2hyb21pdW1Ccm93c2VyPWZ1bmN0aW9uKCl7cmV0dXJuLTE8bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJlZGcvXCIpfSx3bi5pc0VkZ2VMZWdhY3lCcm93c2VyPWZ1bmN0aW9uKCl7cmV0dXJuLTE8bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJlZGdlL1wiKX0sd24ucHJvdG90eXBlLnN5bmNocm9uaXplQ3JpdGVvVWlkPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbj10aGlzO2lmKChlfHx3bi5pc1NhZmFyaUJyb3dzZXIoKXx8d24uaXNBbmRyb2lkQnJvd3NlcigpfHx3bi5pc0ZpcmVmb3hCcm93c2VyKCl8fHduLmlzRWRnZUNocm9taXVtQnJvd3NlcigpfHx3bi5pc0VkZ2VMZWdhY3lCcm93c2VyKCkpJiYodCYmKHRoaXMudGNmVjJDb25zZW50U3RyaW5nPXQpLGkmJih0aGlzLnRjZlZlcnNpb249aSksdGhpcy50b3BXaW4uYWRkRXZlbnRMaXN0ZW5lcikpaWYoXCJjb21wbGV0ZVwiPT09dGhpcy50b3BEb2MucmVhZHlTdGF0ZSl0aGlzLmFwcGVuZEd1bUlmcmFtZUlmRG9lc05vdEV4aXN0KCk7ZWxzZXt2YXIgbz1mdW5jdGlvbigpe24udG9wRG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsbyksbi50b3BXaW4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIixvKSxuLmFwcGVuZEd1bUlmcmFtZUlmRG9lc05vdEV4aXN0KCl9O3RoaXMudG9wV2luLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsbywhMSksdGhpcy50b3BEb2MuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixvLCExKX19LHduLnByb3RvdHlwZS5hcHBlbmRHdW1JZnJhbWVJZkRvZXNOb3RFeGlzdD1mdW5jdGlvbigpe3ZhciByPXRoaXMsZT10aGlzLmNyZWF0ZUd1bUlmcmFtZSgpO3RoaXMudG9wRG9jLmdldEVsZW1lbnRCeUlkKHduLlNZTkNGUkFNRV9JRCl8fCh0aGlzLnRvcFdpbi5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YTtpZih0JiZ0LmlzQ3JpdGVvTWVzc2FnZSlpZihlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHQub3B0b3V0KXIuc2V0Q2xpZW50U2lkZU9wdE91dCgpLHIuZGVsZXRlQ2xpZW50U2lkZVVpZCgpLHIuZGVsZXRlQ2xpZW50U2lkZVNlY3VyZUlkKCksci5kZWxldGVCdW5kbGUoKTtlbHNle2lmKHQudWlkJiZyLnNldENsaWVudFNpZGVVaWQodC51aWQpLHQuY2FsbGJhY2tzKWZvcih2YXIgaT0wLG49XCJzdHJpbmdcIj09dHlwZW9mIHQuY2FsbGJhY2tzP1t0LmNhbGxiYWNrc106dC5jYWxsYmFja3M7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV07KG5ldyBJbWFnZSkuc3JjPW99ZWxzZSB0LmJ1bmRsZSYmci5zZXRCdW5kbGUodC5idW5kbGUpO3QucmVtb3ZlU2lkP3IuZGVsZXRlQ2xpZW50U2lkZVNlY3VyZUlkKCk6dC5zaWQmJnIuc2V0Q2xpZW50U2lkZVNlY3VyZUlkKHQuc2lkKX19LCEwKSx0aGlzLnRvcERvYy5ib2R5LmFwcGVuZENoaWxkKGUpKX0sd24ucHJvdG90eXBlLmdldENsaWVudFNpZGVVaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGcm9tQWxsU3RvcmFnZXMod24uR1VJRF9DT09LSUVfTkFNRSl9LHduLnByb3RvdHlwZS5zZXRDbGllbnRTaWRlVWlkPWZ1bmN0aW9uKGUpe3RoaXMud3JpdGVPbkFsbFN0b3JhZ2VzKHduLkdVSURfQ09PS0lFX05BTUUsZSx3bi5HVUlEX1JFVEVOVElPTl9USU1FX0hPVVIpfSx3bi5wcm90b3R5cGUuZGVsZXRlQ2xpZW50U2lkZVVpZD1mdW5jdGlvbigpe3RoaXMuZGVsZXRlRnJvbUFsbFN0b3JhZ2Uod24uR1VJRF9DT09LSUVfTkFNRSl9LHduLnByb3RvdHlwZS5nZXRCdW5kbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGcm9tQWxsU3RvcmFnZXMod24uQlVORExFX0NPT0tJRV9OQU1FKX0sd24ucHJvdG90eXBlLnNldEJ1bmRsZT1mdW5jdGlvbihlKXt0aGlzLndyaXRlT25BbGxTdG9yYWdlcyh3bi5CVU5ETEVfQ09PS0lFX05BTUUsZSx3bi5HVUlEX1JFVEVOVElPTl9USU1FX0hPVVIpfSx3bi5wcm90b3R5cGUuZGVsZXRlQnVuZGxlPWZ1bmN0aW9uKCl7dGhpcy5kZWxldGVGcm9tQWxsU3RvcmFnZSh3bi5CVU5ETEVfQ09PS0lFX05BTUUpfSx3bi5wcm90b3R5cGUuZ2V0Q2xpZW50U2lkZU9wdE91dD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0RnJvbUFsbFN0b3JhZ2VzKHduLk9QVE9VVF9DT09LSUVfTkFNRSk7cmV0dXJue3ZhbHVlOlwiMVwiPT09ZS52YWx1ZSxvcmlnaW46ZS5vcmlnaW59fSx3bi5wcm90b3R5cGUuc2V0Q2xpZW50U2lkZU9wdE91dD1mdW5jdGlvbigpe3RoaXMud3JpdGVPbkFsbFN0b3JhZ2VzKHduLk9QVE9VVF9DT09LSUVfTkFNRSxcIjFcIix3bi5PUFRPVVRfUkVURU5USU9OX1RJTUVfSE9VUil9LHduLnByb3RvdHlwZS5nZXRDbGllbnRTaWRlU2VjdXJlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGcm9tQWxsU3RvcmFnZXMod24uU0VDVVJFX0lEX0NPT0tJRV9OQU1FKX0sd24ucHJvdG90eXBlLnNldENsaWVudFNpZGVTZWN1cmVJZD1mdW5jdGlvbihlKXt0aGlzLndyaXRlT25BbGxTdG9yYWdlcyh3bi5TRUNVUkVfSURfQ09PS0lFX05BTUUsZSx3bi5HVUlEX1JFVEVOVElPTl9USU1FX0hPVVIpfSx3bi5wcm90b3R5cGUuZGVsZXRlQ2xpZW50U2lkZVNlY3VyZUlkPWZ1bmN0aW9uKCl7dGhpcy5kZWxldGVGcm9tQWxsU3RvcmFnZSh3bi5TRUNVUkVfSURfQ09PS0lFX05BTUUpfSx3bi5wcm90b3R5cGUuZ2V0Q2xpZW50U2lkZUxvY2FsV2ViSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGcm9tQWxsU3RvcmFnZXMod24uTE9DQUxfV0VCX0lEX0NPT0tJRV9OQU1FKX0sd24ucHJvdG90eXBlLmNoZWNrQ29va2llc0FyZVdyaXRlYWJsZT1mdW5jdGlvbigpe3ZhciBlPVwiY3RvX3dyaXRlYWJsZVwiO0RpLlNldENvb2tpZShlLFwiMVwiLDEsdGhpcy50b3BEb2MsITApO3ZhciB0PVwiMVwiPT09RGkuR2V0Q29va2llKGUsdGhpcy50b3BEb2MpO3JldHVybiBEaS5EZWxldGVDb29raWUoZSx0aGlzLnRvcERvYywhMCksdH0sd24ucHJvdG90eXBlLmNyZWF0ZUd1bUlmcmFtZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMudG9wRG9jLmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7cmV0dXJuIGUuc3JjPXRoaXMuYnVpbGRTeW5jZnJhbWVTcmMoKSxlLmlkPXduLlNZTkNGUkFNRV9JRCxlLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsZX0sd24ucHJvdG90eXBlLndyaXRlT25BbGxTdG9yYWdlcz1mdW5jdGlvbihlLHQsaSl7dGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkJiZ0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5zZXRJdGVtKGUsdCksRGkuU2V0Q29va2llKGUsdCxpLHRoaXMudG9wRG9jLCEwKX0sd24ucHJvdG90eXBlLmdldEZyb21BbGxTdG9yYWdlcz1mdW5jdGlvbihlKXt2YXIgdCxpPURpLkdldENvb2tpZShlLHRoaXMudG9wRG9jKTtyZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkJiYodD10aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5nZXRJdGVtKGUpfHx2b2lkIDApLHt2YWx1ZTppfHx0LG9yaWdpbjooaSYmdm4uQ29va2llKXwodCYmdm4uTG9jYWxTdG9yYWdlKX19LHduLnByb3RvdHlwZS5kZWxldGVGcm9tQWxsU3RvcmFnZT1mdW5jdGlvbihlKXtEaS5EZWxldGVDb29raWUoZSx0aGlzLnRvcERvYywhMCksdGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkJiZ0aGlzLmxvY2FsU3RvcmFnZUhlbHBlci5yZW1vdmVJdGVtKGUpfSx3bi5wcm90b3R5cGUuZ2V0VGxkPWZ1bmN0aW9uKCl7dmFyIGU9RGkuU2V0Q29va2llKHduLlRMRF9URVNUX0NPT0tJRV9OQU1FLFwidGVzdFwiLDEsdGhpcy50b3BEb2MsITApO3JldHVybiBEaS5EZWxldGVDb29raWUod24uVExEX1RFU1RfQ09PS0lFX05BTUUsdGhpcy50b3BEb2MsITApLGV9LHduLnByb3RvdHlwZS5idWlsZFN5bmNmcmFtZVNyYz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0Q2xpZW50U2lkZVVpZCgpLHQ9dGhpcy5nZXRDbGllbnRTaWRlT3B0T3V0KCksaT10aGlzLmdldENsaWVudFNpZGVTZWN1cmVJZCgpLG49dGhpcy5nZXRDbGllbnRTaWRlTG9jYWxXZWJJZCgpLG89dGhpcy5nZXRCdW5kbGUoKSxyPXRoaXMuZ2V0VGxkKCksYT1lbmNvZGVVUklDb21wb25lbnQoYm4odGhpcy50b3BVcmwpLmhvc3RuYW1lKSxzPVJlLGQ9dGhpcy5jYW5Xcml0ZUNvb2tpZXMsYz1cImh0dHBzOi8vZ3VtLmNyaXRlby5jb20vc3luY2ZyYW1lP3RvcFVybD1cIithKyh0aGlzLmlzRGVidWc/XCImZGVidWc9MVwiOlwiXCIpKyh0aGlzLnRjZlYyQ29uc2VudFN0cmluZz9cIiZnZHByU3RyaW5nPVwiK3RoaXMudGNmVjJDb25zZW50U3RyaW5nOlwiXCIpKyh0aGlzLnRjZlZlcnNpb24/XCImZ2RwclN0cmluZ1ZlcnNpb249XCIrdGhpcy50Y2ZWZXJzaW9uOlwiXCIpO3JldHVybiBjKz1cIiNcIitKU09OLnN0cmluZ2lmeSh7b3B0b3V0OnQsdWlkOmUsc2lkOmksb3JpZ2luOlwicHVibGlzaGVydGFnXCIsdmVyc2lvbjpzLGx3aWQ6bix0bGQ6cixidW5kbGU6byx0b3BVcmw6YSxjdzpkfSl9LHduLkdVSURfQ09PS0lFX05BTUU9XCJjdG9faWRjcHlcIix3bi5HVUlEX1JFVEVOVElPTl9USU1FX0hPVVI9OTM2MCx3bi5TRUNVUkVfSURfQ09PS0lFX05BTUU9XCJjdG9fc2lkXCIsd24uTE9DQUxfV0VCX0lEX0NPT0tJRV9OQU1FPVwiY3RvX2x3aWRcIix3bi5CVU5ETEVfQ09PS0lFX05BTUU9XCJjdG9fYnVuZGxlXCIsd24uT1BUT1VUX0NPT0tJRV9OQU1FPVwiY3RvX29wdG91dFwiLHduLk9QVE9VVF9SRVRFTlRJT05fVElNRV9IT1VSPTQzMjAwLHduLlRMRF9URVNUX0NPT0tJRV9OQU1FPVwiY3RvX3B1Yl90ZXN0X3RsZFwiLHduLlNZTkNGUkFNRV9JRD1cImNyaXRlby1zeW5jZnJhbWVcIix3bi5TQUZBUklfQ0hFQ0tfUkVHRVg9L15Nb3ppbGxhXFwvNVxcLjAgXFwoW14pXStcXCkgQXBwbGVXZWJLaXRcXC9bXiBdKyBcXChLSFRNTCwgbGlrZSBHZWNrb1xcKSBWZXJzaW9uXFwvKFteIF0rKSggTW9iaWxlXFwvW14gXSspPyBTYWZhcmlcXC9bXiBdKyQvaSx3bik7ZnVuY3Rpb24gd24oZSx0LGkpe3RoaXMuaXNEZWJ1Zz10LHRoaXMudG9wV2luPWUsdGhpcy50b3BEb2M9ZS5kb2N1bWVudCx0aGlzLmxvY2FsU3RvcmFnZUhlbHBlcj1uZXcgbyh0aGlzLnRvcFdpbiksdGhpcy5sb2NhbFN0b3JhZ2VFbmFibGVkPXRoaXMubG9jYWxTdG9yYWdlSGVscGVyLmNoZWNrTG9jYWxTdG9yYWdlKCksdGhpcy5jYW5Xcml0ZUNvb2tpZXM9dGhpcy5jaGVja0Nvb2tpZXNBcmVXcml0ZWFibGUoKSx0aGlzLnRvcFVybD1pfXZhciBJbj1mdW5jdGlvbihlLHQpe3RoaXMuZXJyb3JUeXBlPWUsdGhpcy5tZXNzYWdlcz10fSxFbj1mdW5jdGlvbihlLHQsaSl7dGhpcy5lbnZpcm9ubWVudD1lLHRoaXMuZXJyb3JzPXQsdGhpcy5yZXF1ZXN0SWQ9aX0sU249KF9uLnByb3RvdHlwZS53aXRoTWVzc2FnZT1mdW5jdGlvbihlLHQpe3JldHVybiBlIGluIHRoaXMubWVzc2FnZXN8fCh0aGlzLm1lc3NhZ2VzW2VdPW5ldyBBcnJheSksdGhpcy5tZXNzYWdlc1tlXS5wdXNoKHQpLHRoaXN9LF9uLnByb3RvdHlwZS53aXRoUmVxdWVzdElkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlcXVlc3RJZD1lLHRoaXN9LF9uLnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbigpe3ZhciBlPUFycmF5KCk7Zm9yKHZhciB0IGluIHRoaXMubWVzc2FnZXMpbnVsbCE9dCYmZS5wdXNoKG5ldyBJbih0LHRoaXMubWVzc2FnZXNbdF0pKTtyZXR1cm4gbmV3IEVuKHRoaXMuZW52aXJvbm1lbnQsZSx0aGlzLnJlcXVlc3RJZCl9LF9uKTtmdW5jdGlvbiBfbihlKXt0aGlzLm1lc3NhZ2VzPXt9LHRoaXMuZW52aXJvbm1lbnQ9ZX12YXIgQW49KFJuLnByb3RvdHlwZS5yZXBvcnRQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvdWxkU2VuZH0sUm4ucHJvdG90eXBlLnNlbmRFcnJvclJlcG9ydD1mdW5jdGlvbihlLHQpe2lmKHRoaXMuc2hvdWxkU2VuZCl7dm9pZCAwIT09dCYmdGhpcy5idWlsZGVyLndpdGhSZXF1ZXN0SWQodCk7dmFyIGk9dGhpcy5idWlsZGVyLmJ1aWxkKCksbj1lLmJ1aWxkRXJyb3JVcmwoKTtuKz10aGlzLmRlYnVnP1wiP2RlYnVnPTFcIjpcIlwiO3ZhciBvPUpTT04uc3RyaW5naWZ5KGkpO25hdmlnYXRvci5zZW5kQmVhY29uJiZuYXZpZ2F0b3Iuc2VuZEJlYWNvbihuLG8pLHRoaXMuc2hvdWxkU2VuZD0hMSx0aGlzLmJ1aWxkZXI9bmV3IFNuKFJuLmVudmlyb25tZW50KX19LFJuLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24oZSx0KXt0aGlzLnNob3VsZFNlbmQ9ITAsdGhpcy5idWlsZGVyLndpdGhNZXNzYWdlKGUsdCl9LFJuLmVudmlyb25tZW50PVwiUHVibGlzaGVyVGFnIFZlcnNpb24gXCIrUmUsUm4pO2Z1bmN0aW9uIFJuKGUpe3ZvaWQgMD09PWUmJihlPSExKSx0aGlzLmJ1aWxkZXI9bmV3IFNuKFJuLmVudmlyb25tZW50KSx0aGlzLnNob3VsZFNlbmQ9ITEsdGhpcy5kZWJ1Zz1lfXZhciBUbj0oUG4ucHJvdG90eXBlLmdldENvbnRleHRGbGFncz1mdW5jdGlvbigpe3ZhciBlPVwiXCI7cmV0dXJuIGUrPXRoaXMuZGVidWdNb2RlP1wiJmRlYnVnPTFcIjpcIlwiLGUrPXRoaXMubm9Mb2c/XCImbm9sb2c9MVwiOlwiXCJ9LFBuLnByb3RvdHlwZS5nZXREaXNwbGF5Q29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4ga3QuaW5JZnJhbWUoKT9lLmVycj9VaS5JblVuZnJpZW5kbHlJZnJhbWU6VWkuSW5GcmllbmRseUlmcmFtZTpVaS5EaXJlY3RJbnRlZ3JhdGlvbn0sUG4ucHJvdG90eXBlLmdldFF1ZXJ5U3RyaW5nUGFyYW1zPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LGk9ZS5zcGxpdChcIj9cIik7aWYoMTxpLmxlbmd0aClmb3IodmFyIG49MCxvPWlbMV0uc3BsaXQoXCImXCIpO248by5sZW5ndGg7bisrKXt2YXIgcj1vW25dLnNwbGl0KFwiPVwiKTt0W3luKHJbMF0pXT15bihyWzFdKX1yZXR1cm4gdH0sUG4ucHJvdG90eXBlLnN5bmNocm9uaXplQ3JpdGVvVWlkPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5jb29raWVTeW5jaHJvbml6ZXJGYWN0b3J5KCk7dGhpcy5jdG9JZE9uUHVibGlzaGVyRG9tYWluPWkuZ2V0Q2xpZW50U2lkZVVpZCgpLnZhbHVlLHRoaXMuaXNPcHRPdXQ9aS5nZXRDbGllbnRTaWRlT3B0T3V0KCkudmFsdWUsdGhpcy5zZWN1cmVJZD1pLmdldENsaWVudFNpZGVTZWN1cmVJZCgpLnZhbHVlLHRoaXMuYnVuZGxlPWkuZ2V0QnVuZGxlKCkudmFsdWUsaS5zeW5jaHJvbml6ZUNyaXRlb1VpZCghMSxlLHQpfSxQbi5wcm90b3R5cGUuZ2V0SWRmcz1mdW5jdGlvbigpe3JldHVybltcIlwiLHRoaXMuc2VjdXJlSWRdLmpvaW4oXCI6XCIpfSxQbi5wcm90b3R5cGUuc2V0SWRmcz1mdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KFwiOlwiKTt0WzFdJiYodGhpcy5zZWN1cmVJZD10WzFdKX0sUG4ucHJvdG90eXBlLmNvbXB1dGVTaG91bGRJZ25vcmVTaWxlbnRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMTAwKk1hdGgucmFuZG9tKCkpPDV9LFBuLnByb3RvdHlwZS5zZXRTaWxlbnRNb2RlSWdub3JlZD1mdW5jdGlvbigpe3RoaXMuc2lsZW50TW9kZUlnbm9yZWQ9ITB9LFBuLnByb3RvdHlwZS5yZXRyaWV2ZVByaXZhY3lDb25zZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudGNmQ29tcGF0aWJsZUNvbnNlbnRQcm92aWRlci5yZWFkeVRvUmV0cmlldmUoKSxpPXRoaXMuY2NwYUNvbnNlbnRQcm92aWRlci5yZWFkeVRvUmV0cmlldmUoKTtlfHxpfHx0KHZvaWQgMCx2b2lkIDApO3ZhciBuLG8scj1bXTtlJiZyLnB1c2goSiksaSYmci5wdXNoKGopLGUmJnRoaXMudGNmQ29tcGF0aWJsZUNvbnNlbnRQcm92aWRlci5yZXRyaWV2ZUNvbnNlbnQoZnVuY3Rpb24oZSl7ci5zcGxpY2Uoci5pbmRleE9mKFwiVENGXCIpLDEpLDA9PT1yLmxlbmd0aD90KG8sZSk6bj1lfSksaSYmdGhpcy5jY3BhQ29uc2VudFByb3ZpZGVyLnJldHJpZXZlQ29uc2VudChmdW5jdGlvbihlKXtyLnNwbGljZShyLmluZGV4T2YoXCJDQ1BBXCIpLDEpLDA9PT1yLmxlbmd0aD90KGUsbik6bz1lfSl9LFBuKTtmdW5jdGlvbiBQbihlLHQsaSxuLG8pe3ZhciByPXRoaXM7dGhpcy5jbG9uZUJ5SW1wcmVzc2lvbklkPXt9LHRoaXMuY2hhcnNldD1lLmNoYXJzZXR8fGUuY2hhcmFjdGVyU2V0fHxcIlwiO3ZhciBhPWt0LmdldEhpZ2hlc3RBY2Nlc3NpYmxlV2luZG93KHQpO3RoaXMuZGlzcGxheUNvbnRleHQ9dGhpcy5nZXREaXNwbGF5Q29udGV4dChhKSx0aGlzLmhpZ2hlc3RBY2Nlc3NpYmxlVXJsPWt0LmdldEhpZ2hlc3RBY2Nlc3NpYmxlVXJsKGEpO3ZhciBzPW9lKCk7dGhpcy5jY3BhQ29uc2VudFByb3ZpZGVyPWl8fG5ldyBqKHQscyxELldhcm5pbmcpO3ZhciBkPW5ldyBRKHQscyxELldhcm5pbmcpLGM9bmV3IGllKHQscyxELldhcm5pbmcpO3RoaXMudGNmQ29tcGF0aWJsZUNvbnNlbnRQcm92aWRlcj1vfHxuZXcgSihkLGMsRC5XYXJuaW5nKSx0aGlzLmNvb2tpZVN5bmNocm9uaXplckZhY3Rvcnk9bnx8ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENuKGEudG9wRnJhbWUsci5kZWJ1Z01vZGUsci5oaWdoZXN0QWNjZXNzaWJsZVVybCl9LHRoaXMucmV0cmlldmVQcml2YWN5Q29uc2VudChmdW5jdGlvbihlLHQpe3IuY2NwYUNvbnNlbnRQcm92aWRlci5oYXNVc2VyT3B0T3V0KGUpfHxyLnN5bmNocm9uaXplQ3JpdGVvVWlkKG51bGw9PXQ/dm9pZCAwOnQuY29uc2VudERhdGEsbnVsbD09dD92b2lkIDA6dC52ZXJzaW9uKX0pO3ZhciBsPXRoaXMuZ2V0UXVlcnlTdHJpbmdQYXJhbXModGhpcy5oaWdoZXN0QWNjZXNzaWJsZVVybCk7dGhpcy5kZWJ1Z01vZGU9XCIxXCI9PT1sLnBidF9kZWJ1Z3x8ITEsdGhpcy5ub0xvZz1cIjFcIj09PWwucGJ0X25vbG9nfHwhMSx0aGlzLnNob3VsZElnbm9yZVNpbGVudE1vZGU9dGhpcy5jb21wdXRlU2hvdWxkSWdub3JlU2lsZW50TW9kZSgpLHRoaXMuc2lsZW50TW9kZUlnbm9yZWQ9ITEsdGhpcy5yZW1vdGVMb2dnaW5nPW5ldyBBbih0aGlzLmRlYnVnTW9kZSksdGhpcy5kZWJ1Z01vZGUmJk4oTS5EZWJ1ZyksdGhpcy5sb2NhdGlvbj10LmxvY2F0aW9uLHRoaXMuZGlzaW5nPSExLHRoaXMuY3QwPXZvaWQgMCx0aGlzLndwZHQwPXZvaWQgMCx0aGlzLmlzQWRCbG9ja2VkPXZvaWQgMCx0aGlzLnJ0YVZhck5hbWVzPVtdfXZhciBrbj1mdW5jdGlvbigpe3RoaXMuYmlkcz17fSx0aGlzLmxpbmVJdGVtUmFuZ2VzPVtdLHRoaXMuaW1wSWRzPVtdfTtmdW5jdGlvbiBNbihlKXtyZXR1cm5cImNvbmRpdGlvbmFsRXZlbnRcIj09PWUubmFtZX12YXIgeG49KEJuLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgaT0wLG49ZTtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXTt0aGlzLmV2ZW50cy5wdXNoKG8pfXRoaXMuZXZhbEV2ZW50cygpfSxCbi5wcm90b3R5cGUuZXZhbEV2ZW50cz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5ldmVudHMubGVuZ3RoOyl7dmFyIHQ9dGhpcy5ldmVudHNbZV07aWYoTW4odCkmJiF0LmNhbkV2YWwoKSllKys7ZWxzZXt2YXIgaT10aGlzLmV2ZW50cy5zcGxpY2UoZSwxKTt0cnl7aVswXS5ldmFsKHRoaXMpfWNhdGNoKGUpe0QuRXJyb3IoXCJBbiBleGNlcHRpb24gb2NjdXJyZWQgcHJvY2Vzc2luZyBhbiBldmVudDogXCIrZS50b1N0cmluZygpKX19fX0sQm4uVkVSU0lPTj1SZSxCbik7ZnVuY3Rpb24gQm4oKXt0aGlzLnN0YW5kYWxvbmVCaWRkZXI9bmV3IGtuLHRoaXMuZXZlbnRzPVtdLHRoaXMuY29udGV4dD1uZXcgVG4oZG9jdW1lbnQsd2luZG93KSxELkRlYnVnKFwiUHVibGlzaGVyIFRhZyBsb2FkZWRcIil9ZnVuY3Rpb24gT24oZSl7ZnVuY3Rpb24gdCgpe3RyeXtyZXR1cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Y2goZSl7RC5FcnJvcihcIkV4Y2VwdGlvbiBjYXVnaHQ6IFwiK2UudG9TdHJpbmcoKSl9fXZhciBpPWU7Zm9yKHZhciBuIGluIHQucHJvdG90eXBlPWkucHJvdG90eXBlLGkpaS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09aVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gRG4oZSl7Zm9yKHZhciB0IGluIGUpaWYodCBpbiBlKXt2YXIgaT1lW3RdO1wiZnVuY3Rpb25cIj09dHlwZW9mIGk/ZVt0XT1PbihpKTpcIm9iamVjdFwiPT10eXBlb2YgaSYmKGVbdF09RG4oaSkpfXJldHVybiBlfWZ1bmN0aW9uIEZuKGUpe3ZhciB0PXtwdXNoOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2lmKHZvaWQgMCE9PWUpZm9yKHZhciBpPTAsbj1lO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO1wiZnVuY3Rpb25cIj09dHlwZW9mIG8mJk9uKG8pKCl9fX07cmV0dXJuIGUmJkFycmF5LmlzQXJyYXkoZSkmJnQucHVzaC5hcHBseSh0LGUpLHR9ZnVuY3Rpb24gTm4oZSl7fWZ1bmN0aW9uIFVuKGUpe312YXIgTG49XCJjcnRnX2NvbnRlbnRcIixXbj1cImNydGdfcnRhXCIsSG49MjA2O2Z1bmN0aW9uIHpuKCl7d2luZG93LkNyaXRlby5wYXNzYmFja0V2ZW50cz1Gbih3aW5kb3cuQ3JpdGVvLnBhc3NiYWNrRXZlbnRzKX1mdW5jdGlvbiBHbihlLHQpe3RpKGUsSG4sem4sdCl9ZnVuY3Rpb24gcW4oZSx0LGksbil7dmFyIG87XCJzdHJpbmdcIj09dHlwZW9mIGU/bz1lOihvPVJ0KGUsXCJhZFVuaXRcIixcInN0cmluZ1wiKSx0PVJ0KGUsXCJwYXNzYmFja1wiLFwiZnVuY3Rpb25cIiksaT1SdChlLFwiY3VzdG9tUmVuZGVyRnVuY3Rpb25cIixcImZ1bmN0aW9uXCIpLG49UnQoZSxcIm1pbmltdW1CaWRQcmljZVwiLFwibnVtYmVyXCIpKSx2b2lkIDAhPT1vP3ZvaWQgMCE9PXQ/KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkmJihpPWZ1bmN0aW9uKGUpe2FpKHtiaWRJZDplLmlkLGNvbnRhaW5lcklkOm99KX0pLHdpbmRvdy5Dcml0ZW8ucGFzc2JhY2tFdmVudHM9d2luZG93LkNyaXRlby5wYXNzYmFja0V2ZW50c3x8W10sd2luZG93LkNyaXRlby5wYXNzYmFja0V2ZW50cy5wdXNoKGZ1bmN0aW9uKCl7dmFyIGU9Y2kobylbMF07ZSYmKHZvaWQgMD09PW58fGUuY3BtPm4pP2koZSk6dChvKX0pKTpELkVycm9yKFwiQSBwYXNzYmFjayBjYWxsYmFjayBzaG91bGQgYmUgcHJvdmlkZWRcIik6RC5FcnJvcihcIkFuIGFkVW5pdCBzdHJpbmcgcGFyYW1ldGVyIHNob3VsZCBiZSBwcm92aWRlZFwiKX13aW5kb3cuY3JpdGVvX3B1YnRhZ3x8KGZuLkxvYWRQb2x5ZmlsbHMoKSx3aW5kb3cuY3JpdGVvX3B1YnRhZz1uZXcgeG4pLHdpbmRvdy5Dcml0ZW89RG4oe0NhbGxSVEE6Tm4sU2V0VGFyZ2V0aW5nOlVuLERpc3BsYXlBZDp1bixEaXNwbGF5QWNjZXB0YWJsZUFkSWZBZGJsb2NrZWQ6cG4sQ29tcHV0ZVN0YW5kYWxvbmVERlBUYXJnZXRpbmc6b2ksR2V0QmlkczpkaSxHZXRCaWRzRm9yQWRVbml0OmNpLFJlbmRlckFkOmFpLFJlcXVlc3RCaWRzOlp0LFJlcXVlc3RCaWRzT25Hb29nbGVUYWdTbG90czokdCxTZXRERlBLZXlWYWx1ZVRhcmdldGluZzpuaSxTZXRMaW5lSXRlbVJhbmdlczppaSxTZXRDZWg6SWksU2V0Q0NQQUV4cGxpY2l0T3B0T3V0OmZpLFNldFB1Ymxpc2hlckV4dDp2aSxTZXRVc2VyRXh0OmdpLFNldFNsb3RzRXh0Om1pLFBhc3NiYWNrOntSZXF1ZXN0QmlkczpHbixSZW5kZXJBZDpxbn0sUHViVGFnOntBZGFwdGVyczp7QU1QOnlpLFByZWJpZDpUaX0sQ29udGV4dDp7U2V0SWRmczp3aSxHZXRJZGZzOkNpfSxEaXJlY3RCaWRkaW5nOntEaXJlY3RCaWRkaW5nRXZlbnQ6ZXQsRGlyZWN0QmlkZGluZ1Nsb3Q6SHQsRGlyZWN0QmlkZGluZ1VybEJ1aWxkZXI6TGUsU2l6ZTpjZX0sUlRBOntEZWZhdWx0Q3J0Z0NvbnRlbnROYW1lOkxuLERlZmF1bHRDcnRnUnRhQ29va2llTmFtZTpXbn19LGV2ZW50czp3aW5kb3cuQ3JpdGVvP3dpbmRvdy5Dcml0ZW8uZXZlbnRzOltdLHBhc3NiYWNrRXZlbnRzOndpbmRvdy5Dcml0ZW8/d2luZG93LkNyaXRlby5wYXNzYmFja0V2ZW50czpbXSx1c2VQcmViaWRFdmVudHM6IXdpbmRvdy5Dcml0ZW98fHdpbmRvdy5Dcml0ZW8udXNlUHJlYmlkRXZlbnRzfSksd2luZG93LkNyaXRlby5ldmVudHM9Rm4od2luZG93LkNyaXRlby5ldmVudHMpfSgpOyJ9LCAiaGVhZGVyc1NpemUiOiAxNjQyLCAiYm9keVNpemUiOiAyODg5NCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMzA1MzZ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA0OC4xMTMsICJyZWNlaXZlIjogMTU2NC43NDV9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyNVoiLCAidGltZSI6IDE2NTYuOTMxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2Fwc3RhZy5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0ODQsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJUeENLbjlQcjNRY1ZiTVdLaXluWmx4SWFpbGU2dUZJMW1GdHoweXIyaFA4LTE2ODQ5NDI4NzctMC1BWG4ybWRocWg0VEVUQ3lFWjcvNFlBd2ZxRkVqc1RMT01BWjNpcUhTR1ROeDhjWmkwM1RTN1pNYTIvdEloYUxVOENZejVUb2RRbzgwUWw4cGpXd2ZvR1U9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQxIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NTYxYWRlMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE3IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1ia0tFN1dqSnFSa250bllLZzU1bUxxc0xiRVBHNEFkR25UZnV3bnBLZzdtY1wiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVR4Q0tuOVByM1FjVmJNV0tpeW5abHhJYWlsZTZ1RkkxbUZ0ejB5cjJoUDgtMTY4NDk0Mjg3Ny0wLUFYbjJtZGhxaDRURVRDeUVaNy80WUF3ZnFGRWpzVExPTUFaM2lxSFNHVE54OGNaaTAzVFM3Wk1hMi90SWhhTFU4Q1l6NVRvZFFvODBRbDhwald3Zm9HVT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYXBzdGFnLmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJrS0U3V2pKcVJrbnRuWUtnNTVtTHFzTGJFUEc0QWRHblRmdXducEtnN21jIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAxMDQ1NTMsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogNzc5MzgsICJ0ZXh0IjogIi8qISBhbWF6b24tZHRiLWphdmFzY3JpcHQtYXBpIC0gYXBzdGFnIC0gdjcuNTMuMDEgLSAyMDIwLTA4LTI0IDEwOjQyOjA1ICovXG4hZnVuY3Rpb24odCl7dmFyIGU9e307ZnVuY3Rpb24gbihyKXtpZihlW3JdKXJldHVybiBlW3JdLmV4cG9ydHM7dmFyIGk9ZVtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIHRbcl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsbiksaS5sPSEwLGkuZXhwb3J0c31uLm09dCxuLmM9ZSxuLmQ9ZnVuY3Rpb24odCxlLHIpe24ubyh0LGUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ucj1mdW5jdGlvbih0KXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24odCxlKXtpZigxJmUmJih0PW4odCkpLDgmZSlyZXR1cm4gdDtpZig0JmUmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6dH0pLDImZSYmXCJzdHJpbmdcIiE9dHlwZW9mIHQpZm9yKHZhciBpIGluIHQpbi5kKHIsaSxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0uYmluZChudWxsLGkpKTtyZXR1cm4gcn0sbi5uPWZ1bmN0aW9uKHQpe3ZhciBlPXQmJnQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB0LmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O3JldHVybiBuLmQoZSxcImFcIixlKSxlfSxuLm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LG4ucD1cIlwiLG4obi5zPTIyKX0oW2Z1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtuLmQoZSxcImJcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSxcImNcIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSxcImRcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSxcImFcIiwoZnVuY3Rpb24oKXtyZXR1cm4gYn0pKTt2YXIgcj1uKDEpLGk9big4KSxvPW4oMiksYz1uKDQpLGE9big2KSx1PU9iamVjdChyLm4pKDEwKSxzPVtdO2Z1bmN0aW9uIGQodCxlKXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3RyeXsobnx8T2JqZWN0KGMuZCkoXCJlcnJvcnNcIikpJiZjb25zb2xlLmVycm9yKHQpO3ZhciByPXt0czpEYXRlLm5vdygpLHVybDplbmNvZGVVUklDb21wb25lbnQoT2JqZWN0KGEuZikod2luZG93KSkscjplbmNvZGVVUklDb21wb25lbnQoT2JqZWN0KGEuZykod2luZG93KSksX3R5cGU6XCJhcHNMaWJyYXJ5RXJyb3JcIixlOntldDp0Lm5hbWUsZWw6ZSxtc2c6dC5tZXNzYWdlfX07cmV0dXJuIHMucHVzaChyKSxvLmEuZGlzcGF0Y2goe3R5cGU6XCJMT0dfRVJST1JcIixlcnJvcjpyfSksISF1JiYoT2JqZWN0KGkuYikociksITApfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IodCl9cmV0dXJuITF9ZnVuY3Rpb24gbCh0LGUsbil7dmFyIHI9ISgzPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSl8fGFyZ3VtZW50c1szXTtyZXR1cm4gZCh7bmFtZTplLG1lc3NhZ2U6XCJcIi5jb25jYXQodCxcIiB3YXMgb2YgdHlwZSAnXCIpLmNvbmNhdChlLFwiJyBpbnN0ZWFkIG9mICdcIikuY29uY2F0KG4sXCInXCIpfSxcIlR5cGVFcnJvci1cIi5jb25jYXQodCkscil9ZnVuY3Rpb24gZih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RyeXtyZXR1cm4gdC5hcHBseShudWxsLGFyZ3VtZW50cyl9Y2F0Y2godCl7cmV0dXJuIGQodCxlLCEwKSxudWxsfX19ZnVuY3Rpb24gYih0KXsoMTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXXx8T2JqZWN0KGMuZCkoXCJlcnJvcnNcIikpJiZjb25zb2xlLndhcm4odCl9ITA9PT1PYmplY3QoYy5jKShcImV4cG9zZUVycm9yc1wiKSYmKHdpbmRvdy5hcHN0YWdFcnJvcnM9cyl9LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQpe3JldHVybihyPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9KSh0KX1mdW5jdGlvbiBpKHQpe3RyeXt2YXIgZT1wYXJzZUludCh0LDEwKTtpZighaXNOYU4oZSkpcmV0dXJuIShlPD0wKSYmKDEwMDw9ZXx8MTAwKk1hdGgucmFuZG9tKCk8PWUpfWNhdGNoKHQpe31yZXR1cm4hMX1mdW5jdGlvbiBvKHQsZSl7dmFyIG49cGFyc2VJbnQoZSwxMCkscj1bXSxpPTA7aWYoIXModCkpcmV0dXJuIHI7aWYoaXNOYU4obil8fG48MSlyZXR1cm5bdF07Zm9yKHZhciBvPXQubGVuZ3RoO2k8bzspe3ZhciBjPWk7aSs9bixyLnB1c2godC5zbGljZShjLGkpKX1yZXR1cm4gcn1mdW5jdGlvbiBjKCl7cmV0dXJuXCJcIi5jb25jYXQoTWF0aC5yb3VuZCgxZTEyKk1hdGgucmFuZG9tKCkpKS5jb25jYXQoRGF0ZS5ub3coKSl9ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLG49bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09ZVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqZS5sZW5ndGgpXTtyZXR1cm4gbi5qb2luKFwiXCIpfWZ1bmN0aW9uIHUodCl7cmV0dXJuXCJvYmplY3RcIj09PXIodCkmJm51bGwhPT10fWZ1bmN0aW9uIHModCl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gdSh0KSYmdm9pZCAwIT09dFtlXSYmXCJcIiE9PXRbZV19ZnVuY3Rpb24gbCgpe3ZhciB0PVwiYW16bl9sc1Rlc3RcIjt0cnl7cmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0LHQpLHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19ZnVuY3Rpb24gZih0LGUpe3JldHVybi0xIT09dC5pbmRleE9mKGUpfWZ1bmN0aW9uIGIoKXtyZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KFwiOyBcIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdChcIj1cIil9KSl9ZnVuY3Rpb24gcCh0KXt2YXIgZT1uZXcgRGF0ZTtyZXR1cm4gZS5zZXREYXRlKGUuZ2V0RGF0ZSgpK3QpLGUudG9VVENTdHJpbmcoKX1mdW5jdGlvbiBnKHQpe3RyeXt2YXIgZT10LmlubmVyV2lkdGh8fHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHx0LmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgsbj10LmlubmVySGVpZ2h0fHx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fHQuZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7cmV0dXJuXCJcIi5jb25jYXQoZSxcInhcIikuY29uY2F0KG4pfWNhdGNoKHQpe31yZXR1cm5cInhcIn1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh0KS5zcGxpdChcIj9cIilbMF0uc3BsaXQoXCIjXCIpWzBdPT09ZGVjb2RlVVJJQ29tcG9uZW50KGUpLnNwbGl0KFwiP1wiKVswXS5zcGxpdChcIiNcIilbMF19ZnVuY3Rpb24geSh0KXt2YXIgZT1PYmplY3Qua2V5cyh0KTtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmxlbmd0aD09PWUubGVuZ3RofW4uZChlLFwiblwiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLFwiY1wiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLFwiZVwiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLFwiZlwiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLFwibFwiLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLFwia1wiLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLFwibVwiLChmdW5jdGlvbigpe3JldHVybiBkfSkpLG4uZChlLFwiaVwiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLFwialwiLChmdW5jdGlvbigpe3JldHVybiBmfSkpLG4uZChlLFwiZFwiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLFwiZ1wiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLFwiaFwiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBtfSkpLG4uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiB5fSkpfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKGUsXCJhXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSk7dmFyIHIsaT1uKDMpLG89bigxKSxjPW4oNCk7ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gdSh0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9hKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6YShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH1mdW5jdGlvbiBkKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBsKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX0odCl8fGZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGwodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20obik6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2wodCxlKTp2b2lkIDB9fSh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBsKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkoZSk7bjxlO24rKylyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZigpe3ZhciB0PTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7QUFYUmVxczpbXSxhYXhWaWV3YWJpbGl0eUVuYWJsZWQ6ITEsYmlkQ29uZmlnczp7fSxiaWRSZXFzOnt9LGJzUGl4ZWxzOnt9LGNmZzp7djotMSxDU01fSlM6XCIvL2MuYW1hem9uLWFkc3lzdGVtLmNvbS9hYXgyL2NzbS5qcy5nelwiLENTTV9SVEJfQ09NTVVOSUNBVE9SX0pTOlwiLy9jLmFtYXpvbi1hZHN5c3RlbS5jb20vYmFvLWNzbS9hcHMtY29tbS9hcHNfY3NtLmpzXCIsREVCVUdfQVBQX0hUTUw6XCIvL2MuYW1hem9uLWFkc3lzdGVtLmNvbS9hYXgyL2RlYnVnQXBwLmh0bWxcIixERUJVR19BUFBfSFRNTF9WMjpcIi8vYy5hbWF6b24tYWRzeXN0ZW0uY29tL2FheDIvZGVidWdfYXBwX3YyLmh0bWxcIixERUZBVUxUX1RJTUVPVVQ6MmUzLERUQl9QQVRIOlwiL2UvZHRiXCIsVEVTVF9QQVRIX0ZSRVFVRU5DWTowLFRFU1RfQklEX0VORFBPSU5UOm51bGwsVEVTVF9QQVRIX0xBVEVOQ1lfU0FNUExFX1JBVEU6bnVsbCxQSVhFTF9QQVRIOlwiL3gvcHgvXCIsTEFURU5DWV9TQU1QTElOR19SQVRFOjEsQ09PS0lFX01BVENIX0RFTEFZOjAsTUFYX1NMT1RTX1BFUl9SRVFVRVNUOjEsQ0ZfUk9VVElOR19SQVRFOjEwMCxTTE9UX1JFTkRFUl9TQU1QTElOR19SQVRFOjF9LGNtcEZpcmVkOiExLGNvbmZpZzp7cHViSUQ6XCJcIn0sZGlzcGxheUFkU2VydmVyOntub0JpZFNsb3RJRHM6W10sc2hvdWxkU2FtcGxlUmVuZGVyOiExLHNsb3RSZW5kZXJFbmRlZFNldDohMX0sZXJyb3JzOltdLGV2ZW50TG9nOltdLGV4cGVyaW1lbnRzOnt9LGdhbVNsb3RGZXRjaExvZzpbXSxnYW1TbG90UmVuZGVyUGl4ZWw6e2FheFJlcU9mZnNldDowLGdhbVNsb3RGZXRjaExvZ09mZnNldDowfSxnZHByOm51bGwsZ2RwclF1ZTpbXSxob3N0czp7REVGQVVMVF9BQVhfQklEX0hPU1Q6XCJhYXguYW1hem9uLWFkc3lzdGVtLmNvbVwiLERFRkFVTFRfQUFYX1BJWEVMX0hPU1Q6XCJhYXguYW1hem9uLWFkc3lzdGVtLmNvbVwifSxROltdLHNsb3RCaWRzOnt9LHNsb3RJZE1hcDpbXSxzeW5jOTE3OiExLHRhcmdldGluZ0tleXM6e319LGU9MTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJue0FBWFJlcXM6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJSRUNPUkRfQUFYX1JFUVVFU1RcIjpyZXR1cm5bXS5jb25jYXQoZCh0KSxbZS5kYXRhXSk7Y2FzZVwiUkVDT1JEX0FBWF9SRVFfUFJPUFwiOnJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuKHQ9dSh7fSx0KSkuYmlkUmVxSUQ9PT1lLmJpZFJlcUlEJiYodFtlLmtleV09ZS52YWx1ZSksdH0pKTtkZWZhdWx0OnJldHVybiBkKHQpfX0odC5BQVhSZXFzLGUpLGFheFZpZXdhYmlsaXR5RW5hYmxlZDpmdW5jdGlvbih0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIlNFVF9WSUVXQUJJTElUWVwiOnJldHVybiBlLnZpZXdhYmlsaXR5O2RlZmF1bHQ6cmV0dXJuIHR9fSh0LmFheFZpZXdhYmlsaXR5RW5hYmxlZCxlKSxiaWRDb25maWdzOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiUkVDT1JEX09SSUdJTkFMX0JJRF9DT05GSUdcIjpyZXR1cm4gdSh7fSx0LHMoe30sZS5iaWRDb25maWcuYmlkUmVxSUQsZS5iaWRDb25maWcpKTtkZWZhdWx0OnJldHVybiB1KHt9LHQpfX0odC5iaWRDb25maWdzLGUpLGJpZFJlcXM6ZnVuY3Rpb24odCxlKXt2YXIgbjtzd2l0Y2goZS50eXBlKXtjYXNlXCJBRERfQ0hVTktFRF9SRVFVRVNUU1wiOnJldHVybiB1KHt9LHQscyh7fSxlLmZpZCx1KHt9LHRbZS5maWRdLHtuZXR3b3JrUmVxczpuZXcgQXJyYXkoZS5udW1DaHVua3MpfSkpKTtjYXNlXCJORVdfRkVUQ0hfQklEX1JFUVVFU1RcIjpyZXR1cm4gdSh7fSx0LHMoe30sZS5maWQse3B0bzplLnB0byxoYXNDYWxsYmFja0V4ZWN1dGVkOiExLG5ldHdvcmtSZXFzOltdfSkpO2Nhc2VcIlJFQ09SRF9DQUxMQkFDS1wiOnJldHVybiB1KHt9LHQscyh7fSxlLmZpZCx1KHt9LHRbZS5maWRdLHtoYXNDYWxsYmFja0V4ZWN1dGVkOiEwfSkpKTtjYXNlXCJSRUNPUkRfTkVUV09SS19FWENIQU5HRVwiOnZhciByPXRbZS5maWRdLm5ldHdvcmtSZXFzO3JldHVybiByW2UubmV0d29ya0lEXT11KHt9LHJbZS5uZXR3b3JrSURdLChzKG49e30sXCJcIi5jb25jYXQoZS5leGNoYW5nZVR5cGUsXCJUaW1lXCIpLGUudGltZXN0YW1wKSxzKG4sXCJpbkZsaWdodFwiLFwicmVxdWVzdFwiPT09ZS5leGNoYW5nZVR5cGUpLG4pKSx1KHt9LHQscyh7fSxlLmZpZCx1KHt9LHRbZS5maWRdLHtuZXR3b3JrUmVxczpyfSkpKTtjYXNlXCJSRUNPUkRfVElNRU9VVFwiOnJldHVybiB1KHt9LHQscyh7fSxlLmZpZCx1KHt9LHRbZS5maWRdLHtuZXR3b3JrUmVxczp0W2UuZmlkXS5uZXR3b3JrUmVxcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmluRmxpZ2h0P3Uoe30sdCx7dGltZU91dDplLnRpbWVPdXR9KTp0fSkpfSkpKTtkZWZhdWx0OnJldHVybiB1KHt9LHQpfX0odC5iaWRSZXFzLGUpLGJzUGl4ZWxzOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiUkVDT1JEX0JJRF9JTkZPX1NFTlRcIjpyZXR1cm4gdSh7fSx0LHMoe30sZS5iaWRJbmZvLmlpZCxlLmJpZEluZm8uc3RhdGUpKTtkZWZhdWx0OnJldHVybiB1KHt9LHQpfX0odC5ic1BpeGVscyxlKSxjZmc6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJTRVRfQ0ZHXCI6cmV0dXJuIHUoe30sdCx7fSxlLmNmZyk7ZGVmYXVsdDpyZXR1cm4gdSh7fSx0KX19KHQuY2ZnLGUpLGNtcEZpcmVkOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiQ01QX0ZJUkVEXCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4gdH19KHQuY21wRmlyZWQsZSksY29uZmlnOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiU0VUX0NPTkZJR1wiOnJldHVybiB1KHt9LGUuY29uZmlnLHtnZHByOnUoe2NtcFRpbWVvdXQ6ZS5kZWZhdWx0Q21wVGltZW91dH0sZS5jb25maWcuZ2RwciksaXNTZWxmU2VydmVQdWI6dm9pZCAwIT09ZS5jb25maWcucHViSUQmJjU8PWUuY29uZmlnLnB1YklELmxlbmd0aH0pO2RlZmF1bHQ6cmV0dXJuIHUoe30sdCl9fSh0LmNvbmZpZyxlKSxkaXNwbGF5QWRTZXJ2ZXI6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJTTE9UX1JFTkRFUl9FTkRFRF9TRVRcIjpyZXR1cm4gdSh7fSx0LHtzbG90UmVuZGVyRW5kZWRTZXQ6ITB9KTtjYXNlXCJOT19CSURfT05fQURTRVJWRVJfU0xPVFNcIjpyZXR1cm4gdSh7fSx0LHtub0JpZFNsb3RJRHM6dC5ub0JpZFNsb3RJRHMuY29uY2F0KGUuc2xvdElEcyl9KTtjYXNlXCJSRVFVRVNURURfQklEX0ZPUl9BRFNFUlZFUl9TTE9UU1wiOnJldHVybiB1KHt9LHQse25vQmlkU2xvdElEczp0Lm5vQmlkU2xvdElEcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiFPYmplY3Qoby5qKShlLnNsb3RJRHMsdCl9KSl9KTtjYXNlXCJTSE9VTERfU0FNUExFX1NMT1RfUkVOREVSXCI6cmV0dXJuIHUoe30sdCx7c2hvdWxkU2FtcGxlUmVuZGVyOmUudmFsdWV9KTtkZWZhdWx0OnJldHVybiB1KHt9LHQse25vQmlkU2xvdElEczpkKHQubm9CaWRTbG90SURzKX0pfX0odC5kaXNwbGF5QWRTZXJ2ZXIsZSksZXJyb3JzOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiTE9HX0VSUk9SXCI6cmV0dXJuW10uY29uY2F0KGQodCksW3Uoe30sZS5lcnJvcildKTtkZWZhdWx0OnJldHVybiBkKHQpfX0odC5lcnJvcnMsZSksZXZlbnRMb2c6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJMT0dfRVZFTlRcIjpyZXR1cm5bXS5jb25jYXQoZCh0KSxbdSh7fSxlLmV2ZW50KV0pO2RlZmF1bHQ6cmV0dXJuIGQodCl9fSh0LmV2ZW50TG9nLGUpLGV4cGVyaW1lbnRzOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiU0hPVUxEX0NIVU5LX1JFUVVFU1RTXCI6cmV0dXJuIHUoe2NodW5rUmVxdWVzdHM6ITA9PT10LnNob3VsZFNhbXBsZUxhdGVuY3kmJmUudmFsdWV9LHQpO2Nhc2VcIlNIT1VMRF9DRl9ST1VURVwiOnJldHVybiB1KHt9LHQse3Nob3VsZENGUm91dGU6ZS52YWx1ZX0pO2Nhc2VcIlNIT1VMRF9TQU1QTEVfTEFURU5DWVwiOnJldHVybiB1KHt9LHQse3Nob3VsZFNhbXBsZUxhdGVuY3k6ZS52YWx1ZX0pO2Nhc2VcIlNIT1VMRF9VU0VfVEVTVF9CSURfRU5EUE9JTlRcIjpyZXR1cm4gdSh7fSx0LHtzaG91bGRVc2VUZXN0QmlkRW5kcG9pbnQ6ZS52YWx1ZX0pO2RlZmF1bHQ6cmV0dXJuIHUoe30sdCl9fSh0LmV4cGVyaW1lbnRzLGUpLGdhbVNsb3RGZXRjaExvZzpmdW5jdGlvbih0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIkxPR19HQU1fRVZFTlRcIjpyZXR1cm5bXS5jb25jYXQoZCh0KSxbdSh7fSxlLmV2ZW50KV0pO2RlZmF1bHQ6cmV0dXJuIGQodCl9fSh0LmdhbVNsb3RGZXRjaExvZyxlKSxnYW1TbG90UmVuZGVyUGl4ZWw6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJVUERBVEVfUkVOREVSX09GRlNFVFNcIjpyZXR1cm4gdSh7fSx0LHt9LGUub2Zmc2V0cyk7ZGVmYXVsdDpyZXR1cm4gdSh7fSx0KX19KHQuZ2FtU2xvdFJlbmRlclBpeGVsLGUpLGdkcHI6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJTRVRfR0RQUl9DT05GSUdcIjpyZXR1cm4gbnVsbD09PWUuY29uZmlnP251bGw6dSh7fSxlLmNvbmZpZyk7ZGVmYXVsdDpyZXR1cm4gbnVsbD09PXQ/dDp1KHt9LHQpfX0odC5nZHByLGUpLGdkcHJRdWU6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJBRERfR0RQUl9RVUVfSVRFTVwiOnJldHVybltdLmNvbmNhdChkKHQpLFtlLmZ1bmNdKTtjYXNlXCJDTEVBUl9HRFBSX1FVRVwiOnJldHVybltdO2RlZmF1bHQ6cmV0dXJuIGQodCl9fSh0LmdkcHJRdWUsZSksaG9zdHM6ZnVuY3Rpb24odCxlKXtzd2l0Y2goZS50eXBlKXtjYXNlXCJTRVRfSE9TVFwiOnJldHVybiB1KHt9LHQscyh7fSxlLmhvc3ROYW1lLGUuaG9zdFZhbHVlKSk7ZGVmYXVsdDpyZXR1cm4gdSh7fSx0KX19KHQuaG9zdHMsZSksUTpmdW5jdGlvbih0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIlNFVF9RXCI6cmV0dXJuIGQoZS5RKTtkZWZhdWx0OnJldHVybiBkKHQpfX0odC5RLGUpLHNsb3RCaWRzOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiQklEX1NUQVRFX0NIQU5HRVwiOnJldHVybiB1KHt9LHQscyh7fSxlLnNsb3RJRCx0W2Uuc2xvdElEXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Ll90YXJnZXRpbmdTZXRJRD09PWUuX3RhcmdldGluZ1NldElEJiYodC5iaWRTdGF0ZT1lLmJpZFN0YXRlLGUuYmlkU3RhdGU9PT1pLmIucmVuZGVyZWQ/dC50aW1pbmcucmVuZGVyVGltZT1lLnRzOmUuYmlkU3RhdGU9PT1pLmIuc2V0JiZ0LnRpbWluZy5zZXRBdFRpbWVzLnB1c2goZS50cykpLHR9KSkpKTtjYXNlXCJVUERBVEVfQklEX0lORk9fUFJPUFwiOnJldHVybiB2b2lkIDA9PT10W2Uuc2xvdElEXXx8dFtlLnNsb3RJRF0uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaGVzQmlkQ2FjaGVJZChlLmlpZCl9KSkubGVuZ3RoPDE/dSh7fSx0KTp1KHt9LHQscyh7fSxlLnNsb3RJRCx0W2Uuc2xvdElEXS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoZXNCaWRDYWNoZUlkKGUuaWlkKSYmKHRbZS5rZXldPWUudmFsdWUpLHR9KSkpKTtjYXNlXCJVUERBVEVfU0xPVF9CSURTXCI6cmV0dXJuIHUoe30sdCx7fSxlLmJpZHMucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBPYmplY3Qoby5tKShlLG4uc2xvdElEKT9lW24uc2xvdElEXT1bXS5jb25jYXQoZChlW24uc2xvdElEXSksW25dKTpPYmplY3Qoby5tKSh0LG4uc2xvdElEKT9lW24uc2xvdElEXT1bXS5jb25jYXQoZCh0W24uc2xvdElEXSksW25dKTplW24uc2xvdElEXT1bbl0sZX0pLHt9KSk7ZGVmYXVsdDpyZXR1cm4gdSh7fSx0KX19KHQuc2xvdEJpZHMsZSksc2xvdElkTWFwOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZVwiQUREX1NMT1RfSURcIjpyZXR1cm4tMT09PXQuaW5kZXhPZihlLnNsb3RJRCk/W10uY29uY2F0KGQodCksW2Uuc2xvdElEXSk6dDtkZWZhdWx0OnJldHVybiB0fX0odC5zbG90SWRNYXAsZSksc3luYzkxNzpmdW5jdGlvbih0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIlNFVF9TWU5DXzkxN1wiOnJldHVybiBlLnZhbHVlO2RlZmF1bHQ6cmV0dXJuIHR9fSh0LnN5bmM5MTcsZSksdGFyZ2V0aW5nS2V5czpmdW5jdGlvbih0LGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIlVQREFURV9TTE9UX0JJRFNcIjpyZXR1cm4gdSh7fSx0LHt9LGUuYmlkcy5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIE9iamVjdChvLm0pKHQsbi5zbG90SUQpP2Vbbi5zbG90SURdPVtdLmNvbmNhdChkKHRbbi5zbG90SURdKSxkKChuLmJpZENvbmZpZy50YXJnZXRpbmc/bi5iaWRDb25maWcudGFyZ2V0aW5nOmkuZykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4tMT09PXRbbi5zbG90SURdLmluZGV4T2YoZSl9KSkpKTplW24uc2xvdElEXT1uLmJpZENvbmZpZy50YXJnZXRpbmc/bi5iaWRDb25maWcudGFyZ2V0aW5nOmkuZyxlfSkse30pKTtkZWZhdWx0OnJldHVybiB1KHt9LHQpfX0odC50YXJnZXRpbmdLZXlzLGUpfX12YXIgYj17Z2V0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sZGlzcGF0Y2g6ZnVuY3Rpb24odCl7cj1mKHIsdCl9fTtPYmplY3QoYy5kKShcInJlZHV4XCIpJiZPYmplY3Qoby5pKSgpJiZPYmplY3Qoby5tKSh3aW5kb3csXCJfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fXCIpJiYoYj13aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyhmKSksYi5kaXNwYXRjaCh7dHlwZTpcIk5PT1BcIn0pfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKGUsXCJnXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsXCJ1XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsXCJiXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsXCJmXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsXCJ0XCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKGUsXCJkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsXCJlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsXCJjXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHB9KSksbi5kKGUsXCJuXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGd9KSksbi5kKGUsXCJsXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG19KSksbi5kKGUsXCJtXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsXCJrXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsXCJzXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsXCJoXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsXCJyXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIE99KSksbi5kKGUsXCJxXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSksbi5kKGUsXCJqXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksbi5kKGUsXCJwXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSksbi5kKGUsXCJpXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIER9KSksbi5kKGUsXCJhXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEV9KSksbi5kKGUsXCJvXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEl9KSk7dmFyIHIsaSxvPVtcImFtem5iaWRcIixcImFtem5paWRcIixcImFtem5zelwiLFwiYW16bnBcIl0sYz1bXCJhbXpuYmlkXCIsXCJhbXpuaWlkXCIsXCJhbXpucFwiLFwicl9hbXpuYmlkXCIsXCJyX2Ftem5paWRcIixcInJfYW16bnBcIl07KGk9cj1yfHx7fSkubmV3PVwiTkVXXCIsaS5leHBvc2VkPVwiRVhQT1NFRFwiLGkuc2V0PVwiU0VUXCIsaS5yZW5kZXJlZD1cIlJFTkRFUkVEXCI7dmFyIGEsdSxzLGQ9XCJhcHN0YWdEZWJ1Z1wiLGw9W1wicmVkdXhcIixcImZha2VfYmlkc1wiLFwidmVyYm9zZVwiLFwiY29uc29sZVwiLFwiY29uc29sZV92MlwiLFwiZXJyb3JzXCJdLGY9XCJhcHN0YWdEZWJ1Z0hlaWdodFwiLGI9XCJhcHN0YWdERUJVR1wiLHA9XCJhcHN0YWdDZmdcIixnPTAsbT0wOyh1PWE9YXx8e30pLmFtem5iaWQ9XCJ0ZXN0QmlkXCIsdS5hbXpuaWlkPVwidGVzdEltcHJlc3Npb25cIix1LmFtem5wPVwidGVzdFBcIix1LmNyaWQ9XCJ0ZXN0Q3JpZFwiLChzfHwocz17fSkpLnZpZGVvPVwidlwiO3ZhciB5LGgsTyxqLHY9W1wiYW16bmJpZFwiLFwiYW16bnBcIl07KGg9eT15fHx7fSkuX19hcHNpZD1cImNrXCIsaC5fX2Fwc19pZF9wPVwiY2twXCIsaC5hcHNfZXh0XzkxNz1cInN0XCIsKGo9Tz1PfHx7fSkubm9SZXF1ZXN0PVwiMFwiLGouYmlkSW5GbGlnaHQ9XCIxXCIsai5ub0JpZD1cIjJcIjt2YXIgUz1cIjYwMFwiLF89XCI3LjUzLjAxXCIsdz1cImh0dHBzOi8vXCIsRD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBYTUxIdHRwUmVxdWVzdCYmdm9pZCAwIT09KG5ldyBYTUxIdHRwUmVxdWVzdCkud2l0aENyZWRlbnRpYWxzLEU9XCJhcHN0YWdMT0FERURcIixJPTEzfSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKGUsXCJhXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsXCJiXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG19KSksbi5kKGUsXCJkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KSksbi5kKGUsXCJjXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEV9KSksbi5kKGUsXCJlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFR9KSk7dmFyIHI9bigyKSxpPW4oMSksbz1uKDMpLGM9big5KSxhPW4oOCksdT1uKDApLHM9W1wiZ2V0TG9nXCIsXCJnZXRTdGF0ZVwiXTtmdW5jdGlvbiBkKHQsZSxuKXt0cnl7c3dpdGNoKE9iamVjdChpLmopKHMsdCkmJihPYmplY3QodS5iKShuZXcgRXJyb3IoXCJEZWJ1ZyBjYWxsIG1hZGU6IFwiLmNvbmNhdCh0KSksXCJkZWJ1Z1B1YmxpY0FwaS1jYWxsLVwiLmNvbmNhdCh0KSkscz1zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT10fSkpKSx0KXtjYXNlXCJnZXRMb2dcIjpyZXR1cm4gci5hLmdldFN0YXRlKCkuZXZlbnRMb2c7Y2FzZVwiZ2V0U3RhdGVcIjpyZXR1cm4gci5hLmdldFN0YXRlKCk7Y2FzZVwiZW5hYmxlXCI6cmV0dXJuIEQoXCJmYWtlX2JpZHNcIiwhMCksXCJERUJVRyBNT0RFIEVOQUJMRURcIjtjYXNlXCJkaXNhYmxlXCI6cmV0dXJuIEQoXCJmYWtlX2JpZHNcIiwhMSksXCJERUJVRyBNT0RFIERJU0FCTEVEXCI7Y2FzZVwiZW5hYmxlQ29uc29sZVwiOnJldHVybiBtKCExLFwiY29tbWFuZFwiKSxcIkRlYnVnIGNvbnNvbGUgZW5hYmxlZFwiO2Nhc2VcImVuYWJsZUNvbnNvbGVWMlwiOnJldHVybiBtKCEwLFwiY29tbWFuZFwiKSxcIkRlYnVnIGNvbnNvbGUgdjIgZW5hYmxlZFwiO2Nhc2VcImRpc2FibGVDb25zb2xlXCI6cmV0dXJuIGZ1bmN0aW9uKCl7dHJ5e0QoXCJjb25zb2xlXCIsITEpLEQoXCJjb25zb2xlX3YyXCIsITEpLG51bGwhPT1sJiZkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGwpLGc9ITEsT2JqZWN0KGkuaSkoKSYmd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKG8uZCl9Y2F0Y2godCl7T2JqZWN0KHUuYikodCxcImRpc2FibGVEZWJ1Z0NvbnNvbGVcIiwhMCl9fSgpLFwiRGVidWcgY29uc29sZSBkaXNhYmxlZFwiO2Nhc2VcInNldERlYnVnXCI6cmV0dXJuIEQoZSxuKT9cIlNldCBkZWJ1ZyBtb2RlICdcIi5jb25jYXQoZSxcIicgdG8gJ1wiKS5jb25jYXQobixcIidcIik6XCJGYWlsZWQgdG8gc2V0IGRlYnVnIG1vZGUgJ1wiLmNvbmNhdChlLFwiJyB0byAnXCIpLmNvbmNhdChuLFwiJ1wiKTtkZWZhdWx0OnJldHVyblwidW5rbm93biBkZWJ1ZyBhcmd1bWVudFwifX1jYXRjaChlKXtyZXR1cm4gT2JqZWN0KHUuYikoZSxcImRlYnVnUHVibGljQXBpXCIsITApLFwiZXJyb3JcIn19dmFyIGwsZixiLHAsZz0hMTtmdW5jdGlvbiBtKCl7dmFyIHQ9MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxlPTE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06dm9pZCAwO3RyeXtpZihEKHQ/XCJjb25zb2xlX3YyXCI6XCJjb25zb2xlXCIsITApLGcpcmV0dXJuO3ZhciBuPXt1cmw6dD9yLmEuZ2V0U3RhdGUoKS5jZmcuREVCVUdfQVBQX0hUTUxfVjI6ci5hLmdldFN0YXRlKCkuY2ZnLkRFQlVHX0FQUF9IVE1MLG9ubG9hZDp5LG9uZXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0KHUuYikobmV3IEVycm9yKFwiRXJyb3IgTG9hZGluZyBEZWJ1ZyBDb25zb2xlXCIpLFwiZW5hYmxlRGVidWdDb25zb2xlLVwiLmNvbmNhdCh0P1widjJcIjpcInYxXCIsXCItb25lcnJvclwiKSwhMCl9fTtPYmplY3QoYy5kKShuKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXt2YXIgbj17X3R5cGU6XCJkZWJ1Z0xvYWRcIixtb2RlOnQ/MjoxfTtPYmplY3QoaS5tKShyLmEuZ2V0U3RhdGUoKS5jb25maWcsXCJwdWJJRFwiKSYmKG4uc3JjPXIuYS5nZXRTdGF0ZSgpLmNvbmZpZy5wdWJJRCksbnVsbCE9PWUmJihuLm1ldGhvZD1lKSxPYmplY3QoYS5iKShuKX1jYXRjaChuKXtPYmplY3QodS5iKShuLFwiZW5hYmxlRGVidWdDb25zb2xlLXNldFRpbWVvdXRcIiwhMCl9fSksNWUzKX1jYXRjaChuKXtPYmplY3QodS5iKShuLFwiZW5hYmxlRGVidWdDb25zb2xlXCIsITApfX1mdW5jdGlvbiB5KHQpe3RyeXt2YXIgZT10LnJlc3BvbnNlVGV4dDtsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTt2YXIgbj0yMDA7dyhcImNvbnNvbGVfdjJcIikmJihuPTMzMCksT2JqZWN0KGkuaSkoKSYmbnVsbCE9PXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShvLmQpJiYobj1wYXJzZUludCh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oby5kKSwxMCkpLChpc05hTihuKXx8bj53aW5kb3cuaW5uZXJIZWlnaHQpJiYobj0yMDApLGwuc3R5bGUuYmFja2dyb3VuZD1cIiNlYWVkZWRcIixsLnN0eWxlLnpJbmRleD1cIjIxNDc0ODM2NDdcIixsLnN0eWxlLmJvdHRvbT1cIjBcIixsLnN0eWxlLnBvc2l0aW9uPVwiZml4ZWQgIWltcG9ydGFudFwiLGwuc3R5bGUuZGlzcGxheT1cImJsb2NrICFpbXBvcnRhbnRcIixsLnN0eWxlLmxlZnQ9XCIwXCIsbC5zdHlsZS5yaWdodD1cIjBcIixsLnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChuLFwicHhcIiksZi5zdHlsZS5jdXJzb3I9XCJyb3ctcmVzaXplXCIsZi5zdHlsZS5oZWlnaHQ9XCIycHhcIixmLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixmLnN0eWxlLnRvcD1cIjBcIixmLnN0eWxlLmxlZnQ9XCIwXCIsZi5zdHlsZS5yaWdodD1cIjBcIixmLnN0eWxlLmJhY2tncm91bmRDb2xvcj1cIlJHQkEoMCwwLDAsMClcIixsLmFwcGVuZENoaWxkKGYpLGIuZnJhbWVCb3JkZXI9XCIwXCIsYi5tYXJnaW5IZWlnaHQ9XCIwXCIsYi5tYXJnaW5XaWR0aD1cIjBcIixiLnNjcm9sbGluZz1cIm5vXCIsYi5pZD1cImFwc3RhZy1kZWJ1Zy1pZnJhbWVcIixiLnNyYz1cImFib3V0OmJsYW5rXCIsYi5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIixiLnN0eWxlLndpZHRoPVwiMTAwJVwiLGIuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KG4sXCJweFwiKSxsLmFwcGVuZENoaWxkKGIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobCksbnVsbCE9PWIuY29udGVudERvY3VtZW50JiYoYi5jb250ZW50RG9jdW1lbnQub3BlbigpLGIuY29udGVudERvY3VtZW50LndyaXRlKGUpLGIuY29udGVudERvY3VtZW50LmNsb3NlKCkpLGYuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGopfWNhdGNoKHQpe09iamVjdCh1LmIpKHQsXCJyZW5kZXJEZWJ1Z0NvbnNvbGVcIiwhMCl9fWZ1bmN0aW9uIGgodCl7dHJ5e3ZhciBlPXdpbmRvdy5pbm5lckhlaWdodC10LmNsaWVudFk7cmV0dXJuIGU8MjAwJiYoZT0yMDApLGwuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KGUsXCJweFwiKSxiLnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChlLFwicHhcIiksZX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcInJlc2l6ZURlYnVnQ29uc29sZVwiLCEwKSwyMDB9fWZ1bmN0aW9uIE8odCl7dHJ5e3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbiYmdC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCksdC5jYW5jZWxCdWJibGU9ITAsdC5yZXR1cm5WYWx1ZT0hMX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcInByZXZlbnRFdmVudFwiLCEwKSwhMX19ZnVuY3Rpb24gaigpe3RyeXt2b2lkIDA9PT1wJiYoKHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuc3R5bGUucG9zaXRpb249XCJmaXhlZFwiLHAuc3R5bGUubGVmdD1cIjBcIixwLnN0eWxlLnJpZ2h0PVwiMFwiLHAuc3R5bGUudG9wPVwiMFwiLHAuc3R5bGUuYm90dG9tPVwiMFwiLHAuc3R5bGUuekluZGV4PVwiOTk5OTk5OTk5OVwiKSxsLmFwcGVuZENoaWxkKHApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLFMpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdil9Y2F0Y2godCl7T2JqZWN0KHUuYikodCxcInJlc2l6ZUJhck1vdXNlRG93bkxpc3RlbmVyXCIsITApfX1mdW5jdGlvbiB2KHQpe3RyeXtyZXR1cm4gaCh0KSxPKHQpfWNhdGNoKHQpe3JldHVybiBPYmplY3QodS5iKSh0LFwicmVzaXplQmFyTW91c2VNb3ZlTGlzdGVuZXJcIiwhMCksITF9fWZ1bmN0aW9uIFModCl7dHJ5e251bGwhPT1wJiZsLnJlbW92ZUNoaWxkKHApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsUyk7dmFyIGU9aCh0KTtyZXR1cm4gT2JqZWN0KGkuaSkoKSYmd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKG8uZCxcIlwiLmNvbmNhdChlKSksTyh0KX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcInJlc2l6ZUJhck1vdXNlVXBMaXN0ZW5lclwiLCEwKSwhMX19ZnVuY3Rpb24gXygpe3RyeXtpZighT2JqZWN0KGkuaSkoKSlyZXR1cm5bXTt2YXIgdD13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oby5mKTtudWxsPT09dHx8XCJmYWxzZVwiPT09dD90PVwiW11cIjpcInRydWVcIj09PXQmJih0PSdbXCJmYWtlX2JpZHNcIl0nKTt2YXIgZT1bXTt0cnl7ZT1KU09OLnBhcnNlKHQpfWNhdGNoKHQpe31yZXR1cm4gT2JqZWN0KGkuaykoZSl8fChlPVtdKSxlLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChpLmopKG8udCx0KX0pKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcImdldEN1cnJlbnREZWJ1Z0FycmF5XCIpLFtdfX1mdW5jdGlvbiB3KHQpe3RyeXtyZXR1cm4gT2JqZWN0KGkuaikoXygpLHQpfWNhdGNoKHQpe3JldHVybiBPYmplY3QodS5iKSh0LFwiaXNEZWJ1Z0VuYWJsZWRcIiksITF9fWZ1bmN0aW9uIEQodCxlKXt0cnl7aWYoIU9iamVjdChpLmkpKCkpcmV0dXJuO2lmKC0xPT09by50LmluZGV4T2YodCkpcmV0dXJuO3ZhciBuPV8oKTtyZXR1cm4gZSYmLTE9PT1uLmluZGV4T2YodCk/bi5wdXNoKHQpOmV8fChuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXR9KSkpLDA9PT1uLmxlbmd0aD93aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oby5mKTp3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oby5mLEpTT04uc3RyaW5naWZ5KG4pKSxUKCksMX1jYXRjaChlKXtyZXR1cm4gdm9pZCBPYmplY3QodS5iKShlLFwic2V0RGVidWdNb2RlXCIpfX1mdW5jdGlvbiBFKHQpe3ZhciBlPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3RyeXtpZihPYmplY3QoaS5tKSh3aW5kb3csby5lKSYmT2JqZWN0KGkubSkod2luZG93W28uZV0sdCkpcmV0dXJuIHdpbmRvd1tvLmVdW3RdfWNhdGNoKHQpe09iamVjdCh1LmIpKHQsXCJnZXREZWJ1Z1ZhbHVlXCIpfXJldHVybiBlfXZhciBJPVtdO2Z1bmN0aW9uIFQoKXt0cnl7XygpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTE9PT1JLmluZGV4T2YodCl9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0KHUuYikobmV3IEVycm9yKFwiRGVidWcgbWV0aG9kIGVuYWJsZWQ6IFwiLmNvbmNhdCh0KSksXCJkZWJ1Z1B1YmxpY0FwaS1lbmFibGVkLVwiLmNvbmNhdCh0KSwhMCksSS5wdXNoKHQpfSkpfWNhdGNoKHQpe09iamVjdCh1LmIpKHQsXCJwaXhlbERlYnVnTW9kZXNcIil9fX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBEfSkpLG4uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBFfSkpO3ZhciByPW4oMSksaT1uKDEyKSxvPW4oMCk7ZnVuY3Rpb24gYyh0KXtyZXR1cm4oYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSkodCl9ZnVuY3Rpb24gYSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUmJnUodC5wcm90b3R5cGUsZSksbiYmdSh0LG4pLHR9ZnVuY3Rpb24gZCh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmZnVuY3Rpb24odCxlKXsoT2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfSh0LGUpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGUsbixyLGk9Yih0KTtpZihmdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCYmIVJlZmxlY3QuY29uc3RydWN0LnNoYW0pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiAxO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksMX1jYXRjaCh0KXtyZXR1cm59fX0oKSl7dmFyIG89Yih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLG8pfWVsc2UgZT1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbj10aGlzLCEocj1lKXx8XCJvYmplY3RcIiE9PWMocikmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHI/ZihuKTpyfX1mdW5jdGlvbiBmKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuKGI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0pKHQpfWZ1bmN0aW9uIHAodCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciBnPWZ1bmN0aW9uKCl7ZChlLGkuYyk7dmFyIHQ9bChlKTtmdW5jdGlvbiBlKG4pe3ZhciBpO3JldHVybiBhKHRoaXMsZSkscChmKGk9dC5jYWxsKHRoaXMsbi50YXJnZXRJZCxPYmplY3Qoci5tKShuLFwiaW52Q29kZVwiKT9uLmludkNvZGU6T2JqZWN0KHIubSkobixcInRhZ0lkXCIpP24udGFnSWQ6bi50YXJnZXRJZCkpLFwicmF3U2xvdFwiLHZvaWQgMCkscChmKGkpLFwibWVkaWFUeXBlXCIsXCJkaXNwbGF5XCIpLGkucmF3U2xvdD1uLGl9cmV0dXJuIHMoZSxbe2tleTpcInJlcG9ydEVycm9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtPYmplY3Qoby5iKSh0LFwiQXBuU2xvdC1cIi5jb25jYXQoZSkpfX0se2tleTpcImluaXRLZXl3b3Jkc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e09iamVjdChyLm0pKHRoaXMucmF3U2xvdCxcImtleXdvcmRzXCIpfHwodGhpcy5yYXdTbG90LmtleXdvcmRzPXt9KX1jYXRjaCh0KXt0aGlzLnJlcG9ydEVycm9yKHQsXCJpbml0S2V5d29yZHNcIil9fX0se2tleTpcInNldFRhcmdldGluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dHJ5e3RoaXMuaW5pdEtleXdvcmRzKCksdGhpcy5yYXdTbG90LmtleXdvcmRzW3RdPWV9Y2F0Y2godCl7dGhpcy5yZXBvcnRFcnJvcih0LFwic2V0VGFyZ2V0aW5nXCIpfX19LHtrZXk6XCJnZXRUYXJnZXRpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMuaW5pdEtleXdvcmRzKCksT2JqZWN0KHIubSkodGhpcy5yYXdTbG90LmtleXdvcmRzLHQpP1t0aGlzLnJhd1Nsb3Qua2V5d29yZHNbdF1dOltdfWNhdGNoKHQpe3JldHVybiB0aGlzLnJlcG9ydEVycm9yKHQsXCJnZXRUYXJnZXRpbmdcIiksW119fX0se2tleTpcImNsZWFyVGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dHJ5e3RoaXMuaW5pdEtleXdvcmRzKCksZGVsZXRlIHRoaXMucmF3U2xvdC5rZXl3b3Jkc1t0XX1jYXRjaCh0KXt0aGlzLnJlcG9ydEVycm9yKHQsXCJjbGVhclRhcmdldGluZ1wiKX19fSx7a2V5Olwic2l6ZXNcIixnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHRoaXMucmF3U2xvdC5zaXplc31jYXRjaCh0KXtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcih0LFwic2l6ZXNcIiksW119fX1dKSxlfSgpLG09ZnVuY3Rpb24oKXtkKGUsaS5iKTt2YXIgdD1sKGUpO2Z1bmN0aW9uIGUoKXt2YXIgbjthKHRoaXMsZSk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkociksbz0wO288cjtvKyspaVtvXT1hcmd1bWVudHNbb107cmV0dXJuIHAoZihuPXQuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQoaSkpKSxcImlzU3VwcG9ydGVkXCIsITApLG59cmV0dXJuIHMoZSxbe2tleTpcInJlcG9ydEVycm9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtPYmplY3Qoby5iKSh0LFwiQXBwTmV4dXNBZFNlcnZlci1cIi5jb25jYXQoZSkpfX0se2tleTpcImNtZFF1ZXVlUHVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RyeXt3aW5kb3cuYXBudGFnLmFucS5wdXNoKHQpfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcImNtZFF1ZXVlUHVzaFwiKX19fSx7a2V5Olwic2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0cnl7aWYoIU9iamVjdChyLm0pKHdpbmRvdyxcImFwbnRhZ1wiKXx8IU9iamVjdChyLm0pKHdpbmRvdy5hcG50YWcsXCJyZXF1ZXN0c1wiKSlyZXR1cm47T2JqZWN0KHIubSkod2luZG93LmFwbnRhZy5yZXF1ZXN0cyxcImtleXdvcmRzXCIpfHwod2luZG93LmFwbnRhZy5yZXF1ZXN0cy5rZXl3b3Jkcz17fSksd2luZG93LmFwbnRhZy5yZXF1ZXN0cy5rZXl3b3Jkc1t0XT1lfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcInNldFRhcmdldGluZ1wiKX19fSx7a2V5OlwiZ2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dHJ5e2lmKCFPYmplY3Qoci5tKSh3aW5kb3csXCJhcG50YWdcIil8fCFPYmplY3Qoci5tKSh3aW5kb3cuYXBudGFnLFwicmVxdWVzdHNcIikpcmV0dXJuW107T2JqZWN0KHIubSkod2luZG93LmFwbnRhZy5yZXF1ZXN0cyxcImtleXdvcmRzXCIpfHwod2luZG93LmFwbnRhZy5yZXF1ZXN0cy5rZXl3b3Jkcz17fSk7dmFyIGU9d2luZG93LmFwbnRhZy5yZXF1ZXN0cy5rZXl3b3Jkc1t0XTtyZXR1cm4gdm9pZCAwPT09ZT9bXTpbZV19Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImdldFRhcmdldGluZ1wiKSxbXX19fSx7a2V5OlwiY2xlYXJUYXJnZXRpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0cnl7T2JqZWN0KHIubSkod2luZG93LFwiYXBudGFnXCIpJiZPYmplY3Qoci5tKSh3aW5kb3cuYXBudGFnLFwicmVxdWVzdHNcIikmJk9iamVjdChyLm0pKHdpbmRvdy5hcG50YWcucmVxdWVzdHMsXCJrZXl3b3Jkc1wiKSYmZGVsZXRlIHdpbmRvdy5hcG50YWcucmVxdWVzdHMua2V5d29yZHNbdF19Y2F0Y2godCl7dGhpcy5yZXBvcnRFcnJvcih0LFwiY2xlYXJUYXJnZXRpbmdcIil9fX0se2tleTpcImhhc0FkU2VydmVyT2JqZWN0TG9hZGVkXCIsdmFsdWU6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIE9iamVjdChyLm0pKHdpbmRvdyxcImFwbnRhZ1wiKSYmT2JqZWN0KHIubSkod2luZG93LmFwbnRhZyxcImxvYWRlZFwiKSYmITA9PT13aW5kb3cuYXBudGFnLmxvYWRlZH1jYXRjaCh0KXtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcih0LFwiaGFzQWRTZXJ2ZXJPYmplY3RMb2FkZWRcIiksITF9fX0se2tleTpcImlzQ29tbWFuZFF1ZXVlRGVmaW5lZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBPYmplY3Qoci5tKSh3aW5kb3csXCJhcG50YWdcIikmJk9iamVjdChyLm0pKHdpbmRvdy5hcG50YWcsXCJhbnFcIil9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImlzQ29tbWFuZFF1ZXVlRGVmaW5lZFwiKSwhMX19fSx7a2V5OlwiZ2V0U2xvdHNcIix2YWx1ZTpmdW5jdGlvbigpe3RyeXt2YXIgdD1bXTtyZXR1cm4gT2JqZWN0KHIubSkod2luZG93LFwiYXBudGFnXCIpJiZPYmplY3Qoci5tKSh3aW5kb3cuYXBudGFnLFwicmVxdWVzdHNcIikmJk9iamVjdChyLm0pKHdpbmRvdy5hcG50YWcucmVxdWVzdHMsXCJ0YWdzXCIpJiZPYmplY3Qoci5sKSh3aW5kb3cuYXBudGFnLnJlcXVlc3RzLnRhZ3MpJiZPYmplY3Qua2V5cyh3aW5kb3cuYXBudGFnLnJlcXVlc3RzLnRhZ3MpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXdpbmRvdy5hcG50YWcucmVxdWVzdHMudGFnc1tlXTt0LnB1c2gobmV3IGcobikpfSkpLHR9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImdldFNsb3RzXCIpLFtdfX19XSksZX0oKSx5PW4oMTQpO2Z1bmN0aW9uIGgodCl7cmV0dXJuKGg9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIE8odCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsci5rZXkscil9fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4oaj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0pKHQsZSl9ZnVuY3Rpb24gdih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gdH1mdW5jdGlvbiBTKHQpe3JldHVybihTPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9KSh0KX1mdW5jdGlvbiBfKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH12YXIgdz1mdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmaih0LGUpfShjLGkuYik7dmFyIHQsZSxuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlLG4scixpPVModCk7aWYoZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3QmJiFSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4gMTt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLDF9Y2F0Y2godCl7cmV0dXJufX19KCkpe3ZhciBvPVModGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxvKX1lbHNlIGU9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG49dGhpcywhKHI9ZSl8fFwib2JqZWN0XCIhPT1oKHIpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByP3Yobik6cn19KGMpO2Z1bmN0aW9uIGMoKXt2YXIgdDshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLGMpO2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7aSsrKXJbaV09YXJndW1lbnRzW2ldO3JldHVybiBfKHYodD1uLmNhbGwuYXBwbHkobixbdGhpc10uY29uY2F0KHIpKSksXCJpc1N1cHBvcnRlZFwiLCEwKSxfKHYodCksXCJuZWVkTmV3QmlkT2JqZWN0XCIsITApLHR9cmV0dXJuIHQ9YywoZT1be2tleTpcInJlcG9ydEVycm9yXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtPYmplY3Qoby5iKSh0LFwiU21hcnRBZFNlcnZlci1cIi5jb25jYXQoZSkpfX0se2tleTpcImNtZFF1ZXVlUHVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RyeXt3aW5kb3cuc2FzLmNtZC5wdXNoKHQpfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcImNtZFF1ZXVlUHVzaFwiKX19fSx7a2V5OlwiaGFzQWRTZXJ2ZXJPYmplY3RMb2FkZWRcIix2YWx1ZTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gT2JqZWN0KHIubSkod2luZG93LFwic2FzXCIpJiZPYmplY3Qoci5tKSh3aW5kb3cuc2FzLFwiX19zbWFydExvYWRlZFwiKSYmITA9PT13aW5kb3cuc2FzLl9fc21hcnRMb2FkZWR9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImhhc0FkU2VydmVyT2JqZWN0TG9hZGVkXCIpLCExfX19LHtrZXk6XCJpc0NvbW1hbmRRdWV1ZURlZmluZWRcIix2YWx1ZTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gT2JqZWN0KHIubSkod2luZG93LFwic2FzXCIpJiZPYmplY3Qoci5tKSh3aW5kb3cuc2FzLFwiY21kXCIpfWNhdGNoKHQpe3JldHVybiB0aGlzLnJlcG9ydEVycm9yKHQsXCJpc0NvbW1hbmRRdWV1ZURlZmluZWRcIiksITF9fX1dKSYmTyh0LnByb3RvdHlwZSxlKSxjfSgpLEQ9bmV3IGkuYjtmdW5jdGlvbiBFKHQpe3RyeXtzd2l0Y2godCl7Y2FzZVwiYXBwbmV4dXNcIjpEPW5ldyBtO2JyZWFrO2Nhc2VcImdvb2dsZXRhZ1wiOkQ9bmV3IHkuYTticmVhaztjYXNlXCJzYXNcIjpEPW5ldyB3O2JyZWFrO2RlZmF1bHQ6RD1uZXcgaS5ifX1jYXRjaCh0KXtPYmplY3Qoby5iKSh0LFwic2V0RGlzcGxheUFkU2VydmVyXCIpfX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtuLmQoZSxcImJcIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSxcImlcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSxcImZcIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSxcImdcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSxcImNcIiwoZnVuY3Rpb24oKXtyZXR1cm4gYn0pKSxuLmQoZSxcImRcIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSxcImVcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSxcImhcIiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKSxuLmQoZSxcImFcIiwoZnVuY3Rpb24oKXtyZXR1cm4gaH0pKTt2YXIgcj1uKDQpLGk9bigxKSxvPW4oMCksYz1uKDMpLGE9bigyKTtmdW5jdGlvbiB1KHQpe3JldHVybih1PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9KSh0KX1mdW5jdGlvbiBzKHQpe3RyeXtyZXR1cm4gdC5zcGxpdChcIl9cIikucG9wKCl9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChvLmIpKHQsXCJnZXRBbXBBbXpuQmlkVmFsdWVcIiksXCJcIn19ZnVuY3Rpb24gZCh0KXt0cnl7cmV0dXJuIU9iamVjdChpLm0pKHQsXCJzbG90c1wiKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KG8uYikodCxcImlzQUFYUHVudFwiKSwhMH19ZnVuY3Rpb24gbCh0KXt0cnl7dmFyIGUsbj1PYmplY3Qoci5jKShcInVybFwiKTtpZihudWxsIT09bilyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KG4pO3RyeXtlPXQudG9wLmxvY2F0aW9uLmhyZWZ9Y2F0Y2godCl7ZT1udWxsfWlmKG51bGw9PT1lfHwhZXx8dm9pZCAwPT09ZSl7ZT1cIlwiO3RyeXt0LnRvcCE9PXQuc2VsZiYmKGU9dC5kb2N1bWVudC5yZWZlcnJlcil9Y2F0Y2godCl7fX1yZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKHQpe3JldHVybiBPYmplY3Qoby5iKSh0LFwiZ2V0Q3VycmVudFVybFwiKSxcIlwifX1mdW5jdGlvbiBmKHQpe3RyeXt2YXIgZSxuPVwiXCIsaT1PYmplY3Qoci5jKShcInVybFwiKTtpZihudWxsIT09aSlyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGkpO3RyeXt0cnl7ZT10LnRvcC5kb2N1bWVudC5yZWZlcnJlcn1jYXRjaChuKXtlPXQuZG9jdW1lbnQucmVmZXJyZXJ9bj1lbmNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2gobil7fXJldHVybiBufWNhdGNoKG4pe3JldHVybiBPYmplY3Qoby5iKShuLFwiZ2V0UmVmZXJyZXJVcmxcIiksXCJcIn19ZnVuY3Rpb24gYigpe3RyeXt2YXIgdD17Y29va2llc1BhcmFtczpcIlwifTtyZXR1cm4gT2JqZWN0KGkuZCkoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlWzBdaW4gYy5oKXN3aXRjaChlWzBdKXtjYXNlXCJhcHNfZXh0XzkxN1wiOnQuZmI9ZVsxXTticmVhaztkZWZhdWx0OnQuY29va2llc1BhcmFtcys9XCImXCIuY29uY2F0KGMuaFtlWzBdXSxcIj1cIikuY29uY2F0KGVbMV0pfX0pKSx0LmZifHxhLmEuZ2V0U3RhdGUoKS5zeW5jOTE3fHxhLmEuZGlzcGF0Y2goe3R5cGU6XCJTRVRfU1lOQ185MTdcIix2YWx1ZTohMH0pLHR9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChvLmIpKHQsXCJnZXRBcHNGaXJzdFBhcnR5Q29va2llc1wiKSx7Y29va2llc1BhcmFtczpcIlwifX19ZnVuY3Rpb24gcCh0KXt0cnl7dmFyIGU9YS5hLmdldFN0YXRlKCkuY29uZmlnLmJsb2NrZWRCaWRkZXJzO09iamVjdChpLm0pKHQsXCJibG9ja2VkQmlkZGVyc1wiKSYmT2JqZWN0KGkuaykodC5ibG9ja2VkQmlkZGVycykmJihlPXQuYmxvY2tlZEJpZGRlcnMpO3ZhciBuPVwiXCI7cmV0dXJuIE9iamVjdChpLmspKGUpJiYobj1KU09OLnN0cmluZ2lmeShlKSksbn1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KG8uYikodCxcImdldEJsb2NrZWRCaWRkZXJzXCIsITApLFwiXCJ9fWZ1bmN0aW9uIGcoKXt0cnl7aWYoIU9iamVjdChpLmkpKCkpcmV0dXJuIGMubjt2YXIgdD1hLmEuZ2V0U3RhdGUoKTtyZXR1cm4gT2JqZWN0KGkubSkodCxcImNmZ1wiKSYmT2JqZWN0KGkubSkodC5jZmcsXCJ2XCIpJiYtMSE9PXQuY2ZnLnY/dC5jZmcudjpudWxsfWNhdGNoKHQpe3JldHVybiBPYmplY3Qoby5iKSh0LFwiZ2V0Q2ZnVmVyc2lvblwiKSxudWxsfX1mdW5jdGlvbiBtKHQpe3RyeXtpZigtMT09PVtcInN0cmluZ1wiLFwibnVtYmVyXCJdLmluZGV4T2YodSh0KSkpcmV0dXJuITE7dmFyIGU9TWF0aC5mbG9vcihOdW1iZXIodCkpO2lmKGU+Yy5sKXJldHVybiBlfWNhdGNoKHQpe09iamVjdChvLmIpKHQsXCJwYXJzZVRpbWVvdXRcIiwhMCl9cmV0dXJuITF9ZnVuY3Rpb24geSh0LGUpe3RyeXt2YXIgbj1tKHQudGltZW91dCk7cmV0dXJuITE9PT1uJiYobj1tKGUuY29uZmlnLmJpZFRpbWVvdXQpKSwhMT09PW4mJihuPW0oZS5jZmcuREVGQVVMVF9USU1FT1VUKSksbn1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KG8uYikodCxcImdldFRpbWVvdXRcIiwhMCksMmUzfX1mdW5jdGlvbiBoKHQsZSl7dmFyIG4scj0hMTtmdW5jdGlvbiBpKGUpe2lmKCFyKXRyeXt0KGUpfWNhdGNoKGUpe09iamVjdChvLmIpKGUsXCJleGVjdXRlRnVuY3Rpb25PbmNlV2l0aFRpbWVvdXQtd3JhcHBlZEZ1bmN0aW9uXCIsITApfWNsZWFyVGltZW91dChuKSxyPSEwfXRyeXtyZXR1cm4gbj1zZXRUaW1lb3V0KGksZSwhMCksaS5iaW5kKG51bGwsITEpfWNhdGNoKGUpe3JldHVybiBPYmplY3Qoby5iKShlLFwiZXhlY3V0ZUZ1bmN0aW9uT25jZVdpdGhUaW1lb3V0XCIsITApLGZ1bmN0aW9uKCl7fX19fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKGUsXCJhXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGd9KSksbi5kKGUsXCJiXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG19KSksbi5kKGUsXCJkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsXCJoXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksbi5kKGUsXCJlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIE99KSksbi5kKGUsXCJjXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGp9KSksbi5kKGUsXCJpXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsXCJnXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIFN9KSksbi5kKGUsXCJmXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSk7dmFyIHI9bigyKSxpPW4oNCksbz1uKDMpLGM9bigxKSxhPW4oOSksdT1uKDApLHM9big2KSxkPW4oMTApO2Z1bmN0aW9uIGwodCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGYodCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/bChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe3AodCxlLG5bZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmwoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gYih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gcCh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9dmFyIGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsdCkscCh0aGlzLFwiYmlkQ29uZmlnXCIsdm9pZCAwKSxwKHRoaXMsXCJiaWRTdGF0ZVwiLG8uYi5uZXcpLHAodGhpcyxcIl90YXJnZXRpbmdTZXRJRFwiLHZvaWQgMCkscCh0aGlzLFwidGltaW5nXCIse3NldEF0VGltZXM6W119KSxwKHRoaXMsXCJwaXhlbFNlbnRcIiwhMSkscCh0aGlzLFwiYmlkUmVxSURcIixcIlwiKSxwKHRoaXMsXCJob3N0XCIsdm9pZCAwKSxwKHRoaXMsXCJldlwiLHZvaWQgMCkscCh0aGlzLFwiY2ZlXCIsdm9pZCAwKSxwKHRoaXMsXCJpc0FtcFwiLCExKSxwKHRoaXMsXCJkb2NcIix2b2lkIDApLHAodGhpcyxcImluaGVyaXRTaXplXCIsdm9pZCAwKSx0aGlzLmJpZENvbmZpZz1lLHRoaXMuX3RhcmdldGluZ1NldElEPU9iamVjdChjLmUpKCl9dmFyIGUsbjtyZXR1cm4gZT10LChuPVt7a2V5OlwicmVwb3J0RXJyb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1uJiZuO09iamVjdCh1LmIpKHQsXCJCaWQtXCIuY29uY2F0KGUpLHIpfX0se2tleTpcIm1hdGNoZXNCaWRDYWNoZUlkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0cnl7cmV0dXJuIHRoaXMuYmlkQ29uZmlnLnRhcmdldGluZy5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7cmV0dXJuIG58fC0xIT09ci5pbmRleE9mKFwiYW16bmlpZFwiKSYmZS5iaWRDb25maWdbcl09PT10fSksITEpfWNhdGNoKHQpe3JldHVybiB0aGlzLnJlcG9ydEVycm9yKHQsXCJtYXRjaGVzQmlkQ2FjaGVJZFwiKSwhMX19fSx7a2V5OlwidGFyZ2V0aW5nXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0cnl7cmV0dXJuIHRoaXMuYmlkQ29uZmlnLnRhcmdldGluZy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwiJlwiLmNvbmNhdChlLFwiPVwiKS5jb25jYXQodC5iaWRDb25maWdbZV0pfSkpLmpvaW4oXCJcIil9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcInRhcmdldGluZ1wiKSxcIlwifX19LHtrZXk6XCJiaWRPYmplY3RcIixnZXQ6ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9e3Nsb3RJRDp0aGlzLmJpZENvbmZpZy5zbG90SUQsYW16bmlpZDp0aGlzLmJpZENvbmZpZy5hbXpuaWlkLGFtem5iaWQ6dGhpcy5iaWRDb25maWcuYW16bmJpZCxhbXpucDp0aGlzLmJpZENvbmZpZy5hbXpucCxhbXpuc3o6dGhpcy5iaWRDb25maWcuYW16bnN6LHNpemU6dGhpcy5iaWRDb25maWcuYW16bnN6fTtyZXR1cm5cInZpZGVvXCIhPT10aGlzLmJpZENvbmZpZy5tZWRpYVR5cGUmJlwidlwiIT09dGhpcy5iaWRDb25maWcubWVkaWFUeXBlfHwodC5tZWRpYVR5cGU9XCJ2aWRlb1wiLHQucXNQYXJhbXM9dGhpcy50YXJnZXRpbmcsdC5lbmNvZGVkUXNQYXJhbXM9ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudGFyZ2V0aW5nKSx0LnJfYW16bmJpZD10aGlzLmJpZENvbmZpZy5yX2Ftem5iaWQsdC5yX2Ftem5paWQ9dGhpcy5iaWRDb25maWcucl9hbXpuaWlkLHQucl9hbXpucD10aGlzLmJpZENvbmZpZy5yX2Ftem5wKSx0fWNhdGNoKHQpe3JldHVybiB0aGlzLnJlcG9ydEVycm9yKHQsXCJiaWRPYmplY3RcIiwhMCkse3Nsb3RJRDpcIlwiLGFtem5paWQ6XCJlcnJvclwiLGFtem5iaWQ6XCJlcnJvclwiLGFtem5wOlwiZXJyb3JcIixhbXpuc3o6XCJlcnJvclwiLHNpemU6XCJlcnJvclwifX19fSx7a2V5OlwibmV3QmlkT2JqZWN0XCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0cnl7dmFyIGU9e3Nsb3RJRDp0aGlzLmJpZENvbmZpZy5zbG90SUQsc2l6ZTp0aGlzLmJpZENvbmZpZy5hbXpuc3osbWVkaWFUeXBlOlwidmlkZW9cIj09PXRoaXMuYmlkQ29uZmlnLm1lZGlhVHlwZT9cInZcIjp0aGlzLmJpZENvbmZpZy5tZWRpYVR5cGUsdGFyZ2V0aW5nOnt9LGhlbHBlcnM6e3RhcmdldGluZ0tleXM6dGhpcy5iaWRDb25maWcudGFyZ2V0aW5nLHFzUGFyYW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHQudGFyZ2V0aW5nfSxlbmNvZGVkUXNQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQudGFyZ2V0aW5nKX19fTtyZXR1cm4gdGhpcy5iaWRDb25maWcubWV0YS5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPXQuYmlkQ29uZmlnW25dfSkpLHRoaXMuYmlkQ29uZmlnLnRhcmdldGluZy5mb3JFYWNoKChmdW5jdGlvbihuKXtlLnRhcmdldGluZ1tuXT10LmJpZENvbmZpZ1tuXX0pKSx2b2lkIDAhPT10aGlzLnNsb3RJRCYmLTEhPT10aGlzLnNsb3RJRC5pbmRleE9mKFwiX1wiKSYmKGUuc2FzVGFyZ2V0aW5nPXRoaXMuYmlkQ29uZmlnLnRhcmdldGluZy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwiXCIuY29uY2F0KGUsXCJfXCIpLmNvbmNhdCh0LnNsb3RJRC5zcGxpdChcIl9cIilbMV0sXCI9XCIpLmNvbmNhdCh0LmJpZENvbmZpZ1tlXSl9KSkuam9pbihcIjtcIikpLGV9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcIm5ld0JpZE9iamVjdFwiLCEwKSx7c2xvdElEOlwiXCIsc2l6ZTpcIlwiLG1lZGlhVHlwZTpcImRcIix0YXJnZXRpbmc6e30saGVscGVyczp7dGFyZ2V0aW5nS2V5czpbXSxxc1BhcmFtczpmdW5jdGlvbigpe3JldHVyblwiXCJ9LGVuY29kZWRRc1BhcmFtczpmdW5jdGlvbigpe3JldHVyblwiXCJ9fX19fX0se2tleTpcInNsb3RJRFwiLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gdGhpcy5iaWRDb25maWcuc2xvdElEfWNhdGNoKHQpe3JldHVybiB0aGlzLnJlcG9ydEVycm9yKHQsXCJzbG90SURcIiksXCJcIn19fV0pJiZiKGUucHJvdG90eXBlLG4pLHR9KCksbT1PYmplY3QoYy5mKShvLm8pO2Z1bmN0aW9uIHkodCxlKXt0cnl7dmFyIG49ci5hLmdldFN0YXRlKCksZD17fSxsPU9iamVjdChpLmMpKFwiaG9zdFwiLG4uaG9zdHMuREVGQVVMVF9BQVhfQklEX0hPU1QpLGI9bi5jZmcuRFRCX1BBVEgscD1cImJpZFwiO24uZXhwZXJpbWVudHMuc2hvdWxkVXNlVGVzdEJpZEVuZHBvaW50JiZudWxsIT09bi5jZmcuVEVTVF9CSURfRU5EUE9JTlQmJihwPW4uY2ZnLlRFU1RfQklEX0VORFBPSU5UKTt2YXIgZz17c3JjOm4uY29uZmlnLnB1YklELHU6T2JqZWN0KHMuZikod2luZG93KSxwcjpPYmplY3Qocy5nKSh3aW5kb3cpLHBpZDptLGNiOnQuYmlkUmVxSUQsd3M6T2JqZWN0KGMuaCkod2luZG93KSx2Om8uaix0OmUsc2xvdHM6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBPYmplY3QoYS5jKSh0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGU7aWYoT2JqZWN0KGMubSkodCxcIm1lZGlhVHlwZVwiKSYmXCJ2aWRlb1wiPT09dC5tZWRpYVR5cGUpZT10LmFheFNsb3Q7ZWxzZXtpZighKE9iamVjdChjLm0pKHQsXCJzaXplc1wiKSYmMDx0LnNpemVzLmxlbmd0aCYmT2JqZWN0KGMubSkodCxcInNsb3RJRFwiKSkpcmV0dXJuIE9iamVjdCh1LmIpKHtuYW1lOlwiU2xvdEVycm9yXCIsbWVzc2FnZTpcIlRoZXJlIHdhcyBhbiBlcnJvciB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIHNsb3Q6IFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeSh0LnJhd1Nsb3QpKX0sXCJidWlsZFNsb3RzVXJsUGFyYW0taW52YWxpZFNsb3RcIiwhMCkse2lkOlwiRVJST1JcIixtdDpvLmsudmlkZW8sZXJyb3I6ITB9O3ZhciBuPXQuYWF4U2xvdDtPYmplY3QoYy5tKSh0LFwic2xvdE5hbWVcIikmJnQuc2xvdE5hbWUhPT10LnNsb3RJRCYmKHIuYS5kaXNwYXRjaCh7dHlwZTpcIkFERF9TTE9UX0lEXCIsc2xvdElEOnQuc2xvdElEfSksbi5zZD1cIlwiLmNvbmNhdChyLmEuZ2V0U3RhdGUoKS5zbG90SWRNYXAuaW5kZXhPZih0LnNsb3RJRCkpLG4uc249dC5zbG90TmFtZSksZT1ufXJldHVybiBlfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuITAhPT10LmVycm9yfSkpKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcImJ1aWxkU2xvdHNVcmxQYXJhbVwiLCEwKSxcIlwifX0odC5zbG90cykscGo6ZnVuY3Rpb24odCxlKXt0cnl7dmFyIG49Zih7fSxPYmplY3QoYy5sKSh0LmNvbmZpZy5wYXJhbXMpP3QuY29uZmlnLnBhcmFtczp7fSx7fSxPYmplY3QoYy5sKShlLnBhcmFtcyk/ZS5wYXJhbXM6e30pO3JldHVybiAwPT09T2JqZWN0LmtleXMobikubGVuZ3RoP1wiXCI6T2JqZWN0KGEuYykobil9Y2F0Y2godCl7cmV0dXJuIE9iamVjdCh1LmIpKHQsXCJnZXRCaWRQYXJhbXNcIiwhMCksXCJcIn19KG4sdCksY2ZndjpPYmplY3Qocy5lKSgpLGJiOk9iamVjdChzLmQpKHQpfTtpZihcIltdXCI9PT1nLnNsb3RzfHxcIlwiPT09Zy5zbG90cyl0aHJvdyBuZXcgRXJyb3IoXCJObyBzbG90cyBhdmFpbGFibGUgZm9yIGJpZCByZXF1ZXN0XCIpO2lmKHIuYS5kaXNwYXRjaCh7dHlwZTpcIlJFQ09SRF9BQVhfUkVRVUVTVFwiLGRhdGE6e2JpZENvbmZpZzp0LGJpZFJlcUlEOnQuYmlkUmVxSUQsdGltZW91dDplLHdzOmcud3MsdXJsOmcudSxycVRzOkRhdGUubm93KCl9fSksbi5leHBlcmltZW50cy5jaHVua1JlcXVlc3RzKXt2YXIgeT10LmJpZFJlcUlELnNwbGl0KFwiLVwiKTtyLmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfTkVUV09SS19FWENIQU5HRVwiLGZpZDp5WzBdLG5ldHdvcmtJRDpwYXJzZUludCh5WzFdLDEwKSx0aW1lc3RhbXA6RGF0ZS5ub3coKSxleGNoYW5nZVR5cGU6XCJyZXF1ZXN0XCJ9KX1uLmNvbmZpZy5pc1NlbGZTZXJ2ZVB1YiYmKGcucHViaWQ9Zy5zcmMsZy5zcmM9NjAwKTt2YXIgaD1PYmplY3Qocy5jKSgpO2guZmImJihkWzkxN109aC5mYixnW28uaC5hcHNfZXh0XzkxN109T2JqZWN0KGEuYykoZCkpO3ZhciBPLGo9T2JqZWN0KGkuYykoXCJiaWRQYXJhbXNcIik7T2JqZWN0KGMubCkoaikmJihnPWYoe30sZyx7fSxqKSksT2JqZWN0KGMubCkobi5nZHByKSYmKE9iamVjdChjLm0pKG4uZ2RwcixcImVuYWJsZWRcIikmJihnLmdkcHJlPWVuY29kZVVSSUNvbXBvbmVudChuLmdkcHIuZW5hYmxlZCkpLE9iamVjdChjLm0pKG4uZ2RwcixcImNvbnNlbnRcIikmJihnLmdkcHJjPWVuY29kZVVSSUNvbXBvbmVudChuLmdkcHIuY29uc2VudCkpLE89T2JqZWN0KGMubSkobi5nZHByLFwibG9nXCIpP0pTT04ucGFyc2Uobi5nZHByLmxvZyk6e30sZy5nZHBybD1PYmplY3QoYS5jKShPKSk7dmFyIHY9T2JqZWN0LmtleXMoZykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KGMubSkoZyx0KSYmXCJ1bmRlZmluZWRcIiE9PWdbdF0mJlwiXCIhPT1nW3RdJiZudWxsIT09Z1t0XX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblwiXCIuY29uY2F0KHQsXCI9XCIpLmNvbmNhdChnW3RdKX0pKS5qb2luKFwiJlwiKTtoLmNvb2tpZXNQYXJhbXMmJih2Kz1oLmNvb2tpZXNQYXJhbXMpO3ZhciBTPVwiXCIuY29uY2F0KG8ucCkuY29uY2F0KGwpLmNvbmNhdChiLFwiL1wiKS5jb25jYXQocCxcIj9cIikuY29uY2F0KHYpO3JldHVybiByLmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfQUFYX1JFUV9QUk9QXCIsYmlkUmVxSUQ6dC5iaWRSZXFJRCxrZXk6XCJ1cmxMZW5ndGhcIix2YWx1ZTpTLmxlbmd0aH0pLFN9Y2F0Y2godCl7cmV0dXJuIE9iamVjdCh1LmIpKHQsXCJidWlsZEJpZFVybFwiLCEwKSxcIlwifX1mdW5jdGlvbiBoKHQsZSl7dHJ5e3JldHVybiBPYmplY3QoYy5tKSh0LFwiY29uZmlnXCIpJiZPYmplY3QoYy5tKSh0LmNvbmZpZyxcImRlYWxzXCIpJiYhMD09PXQuY29uZmlnLmRlYWxzfHwhMD09PWUubmVlZE5ld0JpZE9iamVjdH1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcImlzTmV3QmlkT2JqZWN0UmVxdWlyZWRcIiksITF9fWZ1bmN0aW9uIE8odCxlKXtyZXR1cm4gbmV3IGcoe3NpemU6XCIweDBcIixjcmlkOlwiXCIsc2xvdElEOnQsbWVkaWFUeXBlOlwiZFwiLG1ldGE6W1wic2xvdElEXCIsXCJtZWRpYVR5cGVcIixcInNpemVcIl0sYW16bmJpZDplLGFtem5paWQ6XCJcIixhbXpucDplLGFtem5zejpcIjB4MFwiLHRhcmdldGluZzpbXCJhbXpuaWlkXCIsXCJhbXpuYmlkXCIsXCJhbXpucFwiLFwiYW16bnN6XCJdfSl9ZnVuY3Rpb24gaih0LGUsbil7dHJ5e3ZhciByLGk9dC5tYXAoZC5jKSxhPWUuc2xvdHMuZmlsdGVyKGQuZCkubWFwKGQuYykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hT2JqZWN0KGMuaikoaSx0KX0pKTtyZXR1cm4gcj1uP28uci5iaWRJbkZsaWdodDpvLnIubm9CaWQsdC5jb25jYXQoYS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBPKHQscil9KSkpfWNhdGNoKGUpe3JldHVybiBPYmplY3QodS5iKShlLFwiYWRkU3RhdGVUcmFja2luZ0JpZHNUb1JlYWxCaWRzXCIpLHR9fWZ1bmN0aW9uIHYodCl7dHJ5e2lmKE9iamVjdChjLm0pKHQsXCJzbG90c1wiKSl7dmFyIGU9ci5hLmdldFN0YXRlKCkuc2xvdElkTWFwO3Quc2xvdHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bnVsbCE9PXQuc2xvdElELm1hdGNoKC9eXFxkKyQvKSYmcGFyc2VJbnQodC5zbG90SUQsMTApPGUubGVuZ3RoJiYodC5zbG90SUQ9ZVtwYXJzZUludCh0LnNsb3RJRCwxMCldKX0pKX19Y2F0Y2godCl7T2JqZWN0KHUuYikodCxcIm1hcFNsb3RJRFZhbHVlc1wiKX19ZnVuY3Rpb24gUyh0KXt0cnl7aWYoT2JqZWN0KGMuaikoci5hLmdldFN0YXRlKCkuZGlzcGxheUFkU2VydmVyLm5vQmlkU2xvdElEcyx0LnNsb3RJRCkpcmV0dXJuITE7dmFyIGU9ci5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZFJlcUlEPT09dC5iaWRSZXFJRH0pKVswXTtyZXR1cm4hKE9iamVjdChjLm0pKGUsXCJycVRzXCIpJiZEYXRlLm5vdygpLWUucnFUcz4yNGU0KSYmKCEoT2JqZWN0KGMubSkoZSxcInVybFwiKSYmIU9iamVjdChjLmIpKGUudXJsLE9iamVjdChzLmYpKHdpbmRvdykpKSYmdC5iaWRTdGF0ZSE9PW8uYi5yZW5kZXJlZCl9Y2F0Y2goZSl7cmV0dXJuIE9iamVjdCh1LmIpKGUsXCJpc0JpZEVsaWdpYmxlXCIpLCExfX1mdW5jdGlvbiBfKHQpe3RyeXt2YXIgZT10Lm1hcChkLmMpLG49ci5hLmdldFN0YXRlKCk7cmV0dXJuIE9iamVjdC5rZXlzKG4uc2xvdEJpZHMpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChjLmopKGUsdCl9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBpPW4uc2xvdEJpZHNbZV0uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5iaWRTdGF0ZT09PW8uYi5uZXd9KSkuZmlsdGVyKFMpO2lmKDA8aS5sZW5ndGgpe3ZhciBjPWlbaS5sZW5ndGgtMV07ci5hLmRpc3BhdGNoKHt0eXBlOlwiQklEX1NUQVRFX0NIQU5HRVwiLHNsb3RJRDplLF90YXJnZXRpbmdTZXRJRDpjLl90YXJnZXRpbmdTZXRJRCxiaWRTdGF0ZTpvLmIuZXhwb3NlZH0pLHRbZV09Y31yZXR1cm4gdH0pLHt9KX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHUuYikodCxcImdldE5ld1Nsb3RCaWRzQW5kRXhwb3NlRm9yUmVxdWVzdGVkU2xvdHNcIikse319fX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiY1wiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLFwiZFwiLChmdW5jdGlvbigpe3JldHVybiBnfSkpO3ZhciByPW4oMyksaT1uKDIpLG89big0KSxjPW4oMSksYT1uKDApLHU9W10scz0hMSxkPVtdO2Z1bmN0aW9uIGwodCl7dmFyIGU9bmV3IEltYWdlO3JldHVybiBlLnNyYz10LGQucHVzaChlKSxlfWZ1bmN0aW9uIGYodCl7dHJ5e2lmKHMpe3ZhciBlPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PWkuYS5nZXRTdGF0ZSgpLGU9dC5jZmcuUElYRUxfUEFUSCxuPXQuaG9zdHMuREVGQVVMVF9BQVhfUElYRUxfSE9TVCxjPU9iamVjdChvLmMpKFwicGl4ZWxIb3N0XCIsbik7cmV0dXJuXCJcIi5jb25jYXQoci5wKS5jb25jYXQoYykuY29uY2F0KGUpfWNhdGNoKHQpe3JldHVybiBPYmplY3QoYS5iKSh0LFwiYnVpbGRQaXhlbEJhc2VVcmxcIiksXCJcIn19KCk7cmV0dXJuIHZvaWQgMD09PXQuYmlkSWQ/ZSs9XCJwL1BIL1wiOmUrPVwiXCIuY29uY2F0KHQuYmlkSWQsXCIvXCIpLGwoZSs9ZnVuY3Rpb24odCl7dHJ5e3QuX3RsPVwiYXBzLXRhZ1wiO3ZhciBlPWkuYS5nZXRTdGF0ZSgpLG49bnVsbCxvPVwiXCI7T2JqZWN0KGMubSkoZSxcImNvbmZpZ1wiKSYmT2JqZWN0KGMubSkoZS5jb25maWcsXCJwdWJJRFwiKSYmXCJcIiE9PWUuY29uZmlnLnB1YklEJiYobj1lLmNvbmZpZy5pc1NlbGZTZXJ2ZVB1YixvPWUuY29uZmlnLnB1YklEKSxudWxsIT09biYmKG4/KHQuc3JjPXIucSx0LnB1YmlkPW8pOnQuc3JjPW8pLHQubHY9ci5qO3ZhciB1PUpTT04uc3RyaW5naWZ5KHQpO3JldHVybiB1PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdC5yZXBsYWNlKC9cXFxcLnsxfS9nLFwiXCIpfWNhdGNoKHQpe3JldHVybiBPYmplY3QoYS5iKSh0LFwiZXNjYXBlSnNvbkZvckFheFwiKSxcIlwifX0odSksdT1lbmNvZGVVUklDb21wb25lbnQodSl9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChhLmIpKHQsXCJvYmplY3RUb1VybFBhdGhcIiksXCJcIn19KHQucGF5bG9hZCkpfXJldHVybiB1LnB1c2godCksITF9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChhLmIpKHQsXCJzZW5kUGl4ZWxcIiksITF9fWZ1bmN0aW9uIGIodCl7cmV0dXJuIGYoe3BheWxvYWQ6dH0pfWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gZih7cGF5bG9hZDplLGJpZElkOnR9KX1mdW5jdGlvbiBnKCl7dHJ5e2lmKHMpcmV0dXJuO3M9ITAsdS5mb3JFYWNoKGYpfWNhdGNoKHQpe09iamVjdChhLmIpKHQsXCJzZW5kUGl4ZWxzXCIpfX0hMD09PU9iamVjdChvLmMpKFwiZXhwb3NlUGl4ZWxzXCIpJiYod2luZG93LmFwc3RhZ1BpeGVsUXVldWU9dSx3aW5kb3cuYXBzdGFnUGl4ZWxzU2VudD1kKX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiZFwiLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLFwiY1wiLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciByPW4oMCk7ZnVuY3Rpb24gaSh0KXt2YXIgZT10LnVybCxuPXQub25sb2FkLGk9dC5vbmVycm9yLG89dC5vbnRpbWVvdXQsYz10LndpdGhDcmVkZW50aWFsczt0cnl7dmFyIGE9bmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdDthLm9ubG9hZD1uLmJpbmQobnVsbCxhKSx2b2lkIDAhPT1pJiYoYS5vbmVycm9yPWkpLHZvaWQgMCE9PW8mJihhLm9udGltZW91dD1vKSx2b2lkIDAhPT1jJiYoYS53aXRoQ3JlZGVudGlhbHM9YyksYS5vcGVuKFwiR0VUXCIsZSksYS5zZW5kKG51bGwpfWNhdGNoKHQpe09iamVjdChyLmIpKHQsXCJ4aHJHZXRcIil9fWZ1bmN0aW9uIG8odCxlLG4saSl7dHJ5e2lmKHZvaWQgMD09PW4mJihuPWRvY3VtZW50KSx2b2lkIDA9PT10KXJldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUoITApLCExO3ZhciBvPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF18fG4uYm9keS5maXJzdENoaWxkLGE9bi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2lmKGEudHlwZT1cInRleHQvamF2YXNjcmlwdFwiLGEuYXN5bmM9ITAsYS5zcmM9dCxlJiZjKGEsZSksYyhhLGl8fGZ1bmN0aW9uKCl7T2JqZWN0KHIuYikobmV3IEVycm9yKFwiRXJyb3IgTG9hZGluZyBTY3JpcHQgVGFnXCIpLFwibG9hZFNjcmlwdFRhZy1vbmVycm9yXCIpfSxbXSxcIm9uZXJyb3JcIiksbnVsbCE9PW8ucGFyZW50Tm9kZSlyZXR1cm4gby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG8pLCEwfWNhdGNoKHQpe09iamVjdChyLmIpKHQsXCJsb2FkU2NyaXB0VGFnXCIsITApfXJldHVybiExfWZ1bmN0aW9uIGModCxlKXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06W10saT0zPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106XCJvbmxvYWRcIjt0cnl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKHRbaV09ZnVuY3Rpb24oKXtlLmFwcGx5KG51bGwsbil9LCEwKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHIuYikodCxcImFkZENhbGxiYWNrRnVuY3Rpb25cIiksITF9fWZ1bmN0aW9uIGEodCl7dHJ5e3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoKHQpe3JldHVybiBPYmplY3Qoci5iKSh0LFwib2JqVG9VcmxQYXJhbVwiKSxcIlwifX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtuLmQoZSxcImJcIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSxcImFcIiwoZnVuY3Rpb24oKXtyZXR1cm4gY30pKSxuLmQoZSxcImRcIiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSxcImNcIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKTt2YXIgcj1uKDApLGk9bigxKTtmdW5jdGlvbiBvKHQpe3ZhciBlPVtdO3RyeXt0Lmhhc0FkU2VydmVyT2JqZWN0TG9hZGVkKCkmJihlPXQuZ2V0U2xvdHMoKSl9Y2F0Y2godCl7T2JqZWN0KHIuYikodCxcImdldERpc3BsYXlBZFNlcnZlclNsb3RzXCIpfXJldHVybiBlfWZ1bmN0aW9uIGModCl7dHJ5e3JldHVybiBPYmplY3QoaS5tKSh0LFwic2l6ZXNcIikmJk9iamVjdChpLmspKHQuc2l6ZXMpJiYwIT09dC5zaXplcy5sZW5ndGh9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChyLmIpKHQsXCJkb2VzU2xvdEhhdmVTaXplc1wiKSwhMX19ZnVuY3Rpb24gYSh0KXt0cnl7cmV0dXJuXCJ2aWRlb1wiIT09dC5tZWRpYVR5cGV9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChyLmIpKHQsXCJpc0Rpc3BsYXlTbG90XCIpLCEwfX1mdW5jdGlvbiB1KHQpe3RyeXtyZXR1cm4gdC5zbG90SUR9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChyLmIpKHQsXCJnZXRTbG90SURcIiksXCJcIn19fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKGUsXCJhXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSksbi5kKGUsXCJjXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsXCJiXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsXCJlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsXCJmXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsXCJkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSk7ZnVuY3Rpb24gcih0LGUpe3RyeXtyZXR1cm5cIm51bWJlclwiIT10eXBlb2YgdFtlXT8wOk1hdGgucm91bmQodFtlXSl9Y2F0Y2godCl7cmV0dXJuIDB9fWZ1bmN0aW9uIGkodCxlKXt0cnl7dmFyIG49byh0LGUpWzBdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59Y2F0Y2godCl7fXJldHVybiBudWxsfWZ1bmN0aW9uIG8odCxlKXt0cnl7cmV0dXJuIHQucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShcInJlc291cmNlXCIpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGUudGVzdCh0Lm5hbWUpfSkpfWNhdGNoKHQpe3JldHVybltdfX1mdW5jdGlvbiBjKHQsZSl7dHJ5e3ZhciBuPXQucGVyZm9ybWFuY2UudGltaW5nW2VdO3JldHVybiB2b2lkIDA9PT1uPzA6bn1jYXRjaCh0KXtyZXR1cm4gMH19ZnVuY3Rpb24gYSh0KXt0cnl7aWYoMD09PVtcInJlZGlyZWN0U3RhcnRcIixcInJlZGlyZWN0RW5kXCIsXCJkb21haW5Mb29rdXBTdGFydFwiLFwiZG9tYWluTG9va3VwRW5kXCIsXCJjb25uZWN0U3RhcnRcIixcImNvbm5lY3RFbmRcIixcInJlcXVlc3RTdGFydFwiLFwicmVzcG9uc2VTdGFydFwiLFwic2VjdXJlQ29ubmVjdGlvblN0YXJ0XCJdLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZStyKHQsbil9KSwwKSlyZXR1cm4gbnVsbDt2YXIgZT1yKHQsXCJmZXRjaFN0YXJ0XCIpO3JldHVybltcImRvbWFpbkxvb2t1cFN0YXJ0XCIsXCJkb21haW5Mb29rdXBFbmRcIixcImNvbm5lY3RTdGFydFwiLFwiY29ubmVjdEVuZFwiXS5yZWR1Y2UoKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG4mJnIodCxpKT09PWV9KSwhMCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHUoKXt0cnl7dmFyIHQ9d2luZG93LnBlcmZvcm1hbmNlLnRpbWVPcmlnaW47cmV0dXJuIHZvaWQgMD09PXQmJih0PXdpbmRvdy5wZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0KSx0fWNhdGNoKHQpe3JldHVybiAwfX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtuLmQoZSxcImJcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSxcImNcIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSxcImFcIiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKTt2YXIgcj1uKDEpLGk9bigwKTtmdW5jdGlvbiBvKHQpe3JldHVybihvPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9KSh0KX1mdW5jdGlvbiBjKHQsZSl7dmFyIG49T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYocj1yLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4oYT1cInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQsZSl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm51bGwhPT0odD1kKHQpKTspO3JldHVybiB0fSh0LGUpO2lmKHIpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKTtyZXR1cm4gaS5nZXQ/aS5nZXQuY2FsbChuKTppLnZhbHVlfX0pKHQsZSxufHx0KX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuKHU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfWZ1bmN0aW9uIHModCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHR9ZnVuY3Rpb24gZCh0KXtyZXR1cm4oZD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSkodCl9ZnVuY3Rpb24gbCh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gZih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gYih0LGUsbil7cmV0dXJuIGUmJmYodC5wcm90b3R5cGUsZSksbiYmZih0LG4pLHR9ZnVuY3Rpb24gcCh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9dmFyIGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bCh0aGlzLHQpLHAodGhpcyxcImlzU3VwcG9ydGVkXCIsITEpLHAodGhpcyxcIm5lZWROZXdCaWRPYmplY3RcIiwhMSl9cmV0dXJuIGIodCxbe2tleTpcImNtZFF1ZXVlUHVzaFwiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleTpcInNsb3RSZW5kZXJFbmRlZEV2ZW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5Olwic2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OlwiZ2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LHtrZXk6XCJjbGVhclRhcmdldGluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleTpcImhhc0FkU2VydmVyT2JqZWN0TG9hZGVkXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hMX19LHtrZXk6XCJpc0NvbW1hbmRRdWV1ZURlZmluZWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiExfX0se2tleTpcImdldFNsb3RzXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19XSksdH0oKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4scil7bCh0aGlzLHQpLHAodGhpcyxcIm1lZGlhVHlwZVwiLFwiZGlzcGxheVwiKSxwKHRoaXMsXCJzbG90SURcIix2b2lkIDApLHAodGhpcyxcInNsb3ROYW1lXCIsdm9pZCAwKSxwKHRoaXMsXCJzbG90UGFyYW1zXCIsdm9pZCAwKSxwKHRoaXMsXCJyYXdTbG90XCIsdm9pZCAwKSx0aGlzLnNsb3RJRD1lLHRoaXMuc2xvdE5hbWU9bix0aGlzLnNsb3RQYXJhbXM9cn1yZXR1cm4gYih0LFt7a2V5OlwicmVwb3J0RXJyb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe09iamVjdChpLmIpKHQsXCJTbG90LVwiLmNvbmNhdChlKSl9fSx7a2V5Olwic2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXt9fSx7a2V5OlwiZ2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LHtrZXk6XCJjbGVhclRhcmdldGluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7fX0se2tleTpcInNpemVzXCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119fSx7a2V5Olwic2xvdENvbmZpZ1wiLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm57c2xvdElEOnRoaXMuc2xvdElELHNsb3ROYW1lOnRoaXMuc2xvdE5hbWUsc2l6ZXM6dGhpcy5zaXplc319Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcInNsb3RDb25maWdcIikse3Nsb3RJRDpcIlwiLHNsb3ROYW1lOlwiXCIsc2l6ZXM6W119fX19LHtrZXk6XCJhYXhTbG90UGFyYW1zXCIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0cnl7cmV0dXJuIE9iamVjdChyLm0pKHRoaXMsXCJzbG90UGFyYW1zXCIpJiZPYmplY3Qoci5sKSh0aGlzLnNsb3RQYXJhbXMpP09iamVjdC5rZXlzKHRoaXMuc2xvdFBhcmFtcykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gdChlKXt0cnl7cmV0dXJuIE9iamVjdChyLmspKGUpPzA8ZS5sZW5ndGgmJmUucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlJiZ0KG4pfSksITApOlwic3RyaW5nXCI9PXR5cGVvZiBlJiYwPGUubGVuZ3RofWNhdGNoKGUpe3JldHVybiBPYmplY3QoaS5iKShlLFwidmFsaWRhdGVTbG90UGFyYW1WYWx1ZVwiKSwhMX19KHQuc2xvdFBhcmFtc1tlXSl9KSkucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlW25dPXQuc2xvdFBhcmFtc1tuXSxlfSkse30pOnZvaWQgMH1jYXRjaCh0KXtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcih0LFwiYWF4U2xvdFBhcmFtc1wiKSx0aGlzLnNsb3RQYXJhbXN9fX0se2tleTpcImFheFNsb3RcIixnZXQ6ZnVuY3Rpb24oKXt0cnl7dmFyIHQ9e3NkOnRoaXMuc2xvdElELHM6dGhpcy5zaXplcy5maWx0ZXIoci5rKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmpvaW4oXCJ4XCIpfSkpLGt2OnRoaXMuYWF4U2xvdFBhcmFtc307cmV0dXJuIHRoaXMuc2xvdElEIT09dGhpcy5zbG90TmFtZSYmKHQuc249dGhpcy5zbG90TmFtZSksdH1jYXRjaCh0KXtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcih0LFwiYWF4U2xvdFwiKSx7c2Q6XCJcIixzOltdLGt2Ont9fX19fV0pLHR9KCkseT1mdW5jdGlvbigpeyFmdW5jdGlvbih0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmdSh0LGUpfShlLG0pO3ZhciB0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlLG4scixpPWQodCk7aWYoZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3QmJiFSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4gMTt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLDF9Y2F0Y2godCl7cmV0dXJufX19KCkpe3ZhciBjPWQodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxjKX1lbHNlIGU9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG49dGhpcywhKHI9ZSl8fFwib2JqZWN0XCIhPT1vKHIpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByP3Mobik6cn19KGUpO2Z1bmN0aW9uIGUobil7dmFyIHI7cmV0dXJuIGwodGhpcyxlKSxwKHMocj10LmNhbGwodGhpcyxuLnNsb3RJRCxuLnNsb3ROYW1lLG4uc2xvdFBhcmFtcykpLFwicmF3U2xvdFwiLHZvaWQgMCkscChzKHIpLFwiaGFzUmVwb3J0ZWRJbnZhbGlkU2l6ZUVycm9yXCIsITEpLHAocyhyKSxcImhhc1JlcG9ydGVkV29ya2luZ0ludmFsaWRTaXplRXJyb3JcIiwhMSksci5tZWRpYVR5cGU9XCJ2aWRlb1wiPT09bi5tZWRpYVR5cGU/XCJ2aWRlb1wiOlwiZGlzcGxheVwiLHIucmF3U2xvdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9jKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cCh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6YyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH0oe30sbikscn1yZXR1cm4gYihlLFt7a2V5OlwicmVwb3J0RXJyb3JcIix2YWx1ZTpmdW5jdGlvbih0LGUpe09iamVjdChpLmIpKHQsXCJBYXhTbG90LVwiLmNvbmNhdChlKSl9fSx7a2V5OlwiYWF4U2xvdFwiLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm5cInZpZGVvXCI9PT10aGlzLnJhd1Nsb3QubWVkaWFUeXBlP3tpZDp0aGlzLnNsb3RJRCxtdDpcInZcIixrdjp0aGlzLmFheFNsb3RQYXJhbXN9OmEoZChlLnByb3RvdHlwZSksXCJhYXhTbG90XCIsdGhpcyl9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImFheFNsb3RcIikse3NkOlwiXCIsczpbXX19fX0se2tleTpcInNpemVzXCIsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3ZhciB0PVtdLGU9L15bMC05XSt4WzAtOV0rJC87T2JqZWN0KHIubSkodGhpcy5yYXdTbG90LFwic2l6ZXNcIikmJk9iamVjdChyLmspKHRoaXMucmF3U2xvdC5zaXplcykmJih0PTA8dGhpcy5yYXdTbG90LnNpemVzLmxlbmd0aCYmIU9iamVjdChyLmspKHRoaXMucmF3U2xvdC5zaXplc1swXSk/W3RoaXMucmF3U2xvdC5zaXplc106dGhpcy5yYXdTbG90LnNpemVzKSx0Lmxlbmd0aD09PSh0PXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIuaykodCkmJjI9PT10Lmxlbmd0aHx8MT09PXQubGVuZ3RoJiZcInN0cmluZ1wiPT10eXBlb2YgdFswXSYmZS50ZXN0KHRbMF0pfSkpKS5sZW5ndGh8fHRoaXMuaGFzUmVwb3J0ZWRJbnZhbGlkU2l6ZUVycm9yfHwodGhpcy5yZXBvcnRFcnJvcih7bmFtZTpcIkludmFsaWRTaXplXCIsbWVzc2FnZTpcIkludmFsaWQgU2l6ZTogXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHRoaXMucmF3U2xvdC5zaXplcykpfSxcInNpemVzLWludmFsaWRcIiksdGhpcy5oYXNSZXBvcnRlZEludmFsaWRTaXplRXJyb3I9ITApO3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gMiE9PXQubGVuZ3RofSkpO3JldHVybiAwPG4ubGVuZ3RoJiYhdGhpcy5oYXNSZXBvcnRlZFdvcmtpbmdJbnZhbGlkU2l6ZUVycm9yJiYodGhpcy5yZXBvcnRFcnJvcih7bmFtZTpcIkludmFsaWRCdXRXb3JraW5nU2l6ZVwiLG1lc3NhZ2U6XCJJbnZhbGlkIGJ1dCB3b3JraW5nIHNpemVzOiBcIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkobikpfSxcInNpemVzLWludmFsaWQtd29ya2luZ1wiKSx0aGlzLmhhc1JlcG9ydGVkV29ya2luZ0ludmFsaWRTaXplRXJyb3I9ITApLHR9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcInNpemVzXCIpLFtdfX19XSksZX0oKX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciByPW4oMCksaT1uKDEpO2Z1bmN0aW9uIG8odCl7cmV0dXJuKG89XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIGModCl7dHJ5e3JldHVybiBmdW5jdGlvbih0KXt0cnl7aWYoIWEodCxbXCJudW1iZXJcIixcInN0cmluZ1wiXSkpcmV0dXJuITE7aWYoaXNOYU4odCkpcmV0dXJuITE7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuITA7dmFyIGU9cGFyc2VJbnQodCwxMCk7cmV0dXJuIWlzTmFOKGUpfWNhdGNoKHQpe3JldHVybiBPYmplY3Qoci5iKSh0LFwiaXNOdW1iZXJcIiksITB9fSh0KXx8dm9pZCAwPT09dH1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KHIuYikodCxcImlzTnVtYmVyT3JVbmRlZmluZWRcIiksITB9fWZ1bmN0aW9uIGEodCxlKXt0cnl7cmV0dXJuIE9iamVjdChpLmopKGUsbyh0KSl9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChyLmIpKHQsXCJpc1Zhck9mVHlwZXNcIiksITB9fX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBtfSkpO3ZhciByPW4oMSksaT1uKDEyKSxvPW4oMCk7ZnVuY3Rpb24gYyh0KXtyZXR1cm4oYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSkodCl9ZnVuY3Rpb24gYSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gdSh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGUmJnUodC5wcm90b3R5cGUsZSksbiYmdSh0LG4pLHR9ZnVuY3Rpb24gZCh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmZnVuY3Rpb24odCxlKXsoT2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfSh0LGUpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGUsbixyLGk9Yih0KTtpZihmdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCYmIVJlZmxlY3QuY29uc3RydWN0LnNoYW0pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiAxO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksMX1jYXRjaCh0KXtyZXR1cm59fX0oKSl7dmFyIG89Yih0aGlzKS5jb25zdHJ1Y3RvcjtlPVJlZmxlY3QuY29uc3RydWN0KGksYXJndW1lbnRzLG8pfWVsc2UgZT1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbj10aGlzLCEocj1lKXx8XCJvYmplY3RcIiE9PWMocikmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHI/ZihuKTpyfX1mdW5jdGlvbiBmKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuKGI9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0pKHQpfWZ1bmN0aW9uIHAodCxlLG4pe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bix0fXZhciBnPWZ1bmN0aW9uKCl7ZChlLGkuYyk7dmFyIHQ9bChlKTtmdW5jdGlvbiBlKG4pe3ZhciByO3JldHVybiBhKHRoaXMsZSkscChmKHI9dC5jYWxsKHRoaXMsbi5nZXRTbG90RWxlbWVudElkKCksbi5nZXRBZFVuaXRQYXRoKCkpKSxcInJhd1Nsb3RcIix2b2lkIDApLHAoZihyKSxcIm1lZGlhVHlwZVwiLFwiZGlzcGxheVwiKSxyLnJhd1Nsb3Q9bixyfXJldHVybiBzKGUsW3trZXk6XCJyZXBvcnRFcnJvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7T2JqZWN0KG8uYikodCxcIkdwdFNsb3QtXCIuY29uY2F0KGUpKX19LHtrZXk6XCJzZXRUYXJnZXRpbmdcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RyeXt0aGlzLnJhd1Nsb3Quc2V0VGFyZ2V0aW5nKHQsZSl9Y2F0Y2godCl7dGhpcy5yZXBvcnRFcnJvcih0LFwic2V0VGFyZ2V0aW5nXCIpfX19LHtrZXk6XCJnZXRUYXJnZXRpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0cnl7cmV0dXJuIHRoaXMucmF3U2xvdC5nZXRUYXJnZXRpbmcodCl9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImdldFRhcmdldGluZ1wiKSxbXX19fSx7a2V5OlwiY2xlYXJUYXJnZXRpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXt0cnl7dGhpcy5yYXdTbG90LmNsZWFyVGFyZ2V0aW5nKHQpfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcImNsZWFyVGFyZ2V0aW5nXCIpfX19LHtrZXk6XCJzaXplc1wiLGdldDpmdW5jdGlvbigpe3RyeXt2YXIgdD1PYmplY3Qoci5oKSh3aW5kb3cpLnNwbGl0KFwieFwiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBOdW1iZXIodCl9KSk7cmV0dXJuIHRoaXMucmF3U2xvdC5nZXRTaXplcyh0WzBdLHRbMV0pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuXCJmbHVpZFwiIT09dH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblt0LmdldFdpZHRoKCksdC5nZXRIZWlnaHQoKV19KSl9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcInNpemVzXCIpLFtdfX19XSksZX0oKSxtPWZ1bmN0aW9uKCl7ZChlLGkuYik7dmFyIHQ9bChlKTtmdW5jdGlvbiBlKCl7dmFyIG47YSh0aGlzLGUpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7bysrKWlbb109YXJndW1lbnRzW29dO3JldHVybiBwKGYobj10LmNhbGwuYXBwbHkodCxbdGhpc10uY29uY2F0KGkpKSksXCJpc1N1cHBvcnRlZFwiLCEwKSxufXJldHVybiBzKGUsW3trZXk6XCJyZXBvcnRFcnJvclwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7T2JqZWN0KG8uYikodCxcIkdvb2dsZXRhZ0FkU2VydmVyLVwiLmNvbmNhdChlKSl9fSx7a2V5OlwiY21kUXVldWVQdXNoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dHJ5e3dpbmRvdy5nb29nbGV0YWcuY21kLnB1c2godCl9Y2F0Y2godCl7dGhpcy5yZXBvcnRFcnJvcih0LFwiY21kUXVldWVQdXNoXCIpfX19LHtrZXk6XCJzbG90UmVuZGVyRW5kZWRFdmVudFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RyeXt3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcygpLmFkZEV2ZW50TGlzdGVuZXIoXCJzbG90UmVuZGVyRW5kZWRcIiwoZnVuY3Rpb24oZSl7dmFyIG49bmV3IGcoZS5zbG90KTt0KG4pfSkpfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcInNsb3RSZW5kZXJFbmRlZEV2ZW50XCIpfX19LHtrZXk6XCJzZXRUYXJnZXRpbmdcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RyeXt3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyh0LGUpfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcInNldFRhcmdldGluZ1wiKX19fSx7a2V5OlwiZ2V0VGFyZ2V0aW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcygpLmdldFRhcmdldGluZyh0KX1jYXRjaCh0KXtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcih0LFwiZ2V0VGFyZ2V0aW5nXCIpLFtdfX19LHtrZXk6XCJjbGVhclRhcmdldGluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3RyeXt3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcygpLmNsZWFyVGFyZ2V0aW5nKHQpfWNhdGNoKHQpe3RoaXMucmVwb3J0RXJyb3IodCxcImNsZWFyVGFyZ2V0aW5nXCIpfX19LHtrZXk6XCJoYXNBZFNlcnZlck9iamVjdExvYWRlZFwiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBPYmplY3Qoci5tKSh3aW5kb3csXCJnb29nbGV0YWdcIikmJk9iamVjdChyLm0pKHdpbmRvdy5nb29nbGV0YWcsXCJhcGlSZWFkeVwiKSYmITA9PT13aW5kb3cuZ29vZ2xldGFnLmFwaVJlYWR5fWNhdGNoKHQpe3JldHVybiB0aGlzLnJlcG9ydEVycm9yKHQsXCJoYXNBZFNlcnZlck9iamVjdExvYWRlZFwiKSwhMX19fSx7a2V5OlwiaXNDb21tYW5kUXVldWVEZWZpbmVkXCIsdmFsdWU6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIE9iamVjdChyLm0pKHdpbmRvdyxcImdvb2dsZXRhZ1wiKSYmT2JqZWN0KHIubSkod2luZG93Lmdvb2dsZXRhZyxcImNtZFwiKX1jYXRjaCh0KXtyZXR1cm4gdGhpcy5yZXBvcnRFcnJvcih0LFwiaXNDb21tYW5kUXVldWVEZWZpbmVkXCIpLCExfX19LHtrZXk6XCJnZXRTbG90c1wiLHZhbHVlOmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcygpLmdldFNsb3RzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGcodCl9KSl9Y2F0Y2godCl7cmV0dXJuIHRoaXMucmVwb3J0RXJyb3IodCxcImdldFNsb3RzXCIpLFtdfX19XSksZX0oKX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBofSkpO3ZhciByPW4oMSksaT1uKDApO2Z1bmN0aW9uIG8odCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGModCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/byhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2EodCxlLG5bZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOm8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gYSh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9ZnVuY3Rpb24gdSh0KXtyZXR1cm4odT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSkodCl9TnVtYmVyLmlzSW50ZWdlcj1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbih0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgdCYmaXNGaW5pdGUodCkmJk1hdGguZmxvb3IodCk9PT10fTt2YXIgcyxkPVsxLDEsMyw1XSxsPTAsZj0hMSxiPVwiLXRpbWVvdXRcIixwPW51bGwsZz17fTtmdW5jdGlvbiBtKHQsZSl7dHJ5e2lmKHA9bnVsbCxPYmplY3Qoci5tKSh3aW5kb3csdC5jbXBHbG9iYWx2MikmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvd1t0LmNtcEdsb2JhbHYyXSlwPVwidGNmdjJcIjtlbHNle2lmKCFPYmplY3Qoci5tKSh3aW5kb3csdC5jbXBHbG9iYWwpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiB3aW5kb3dbdC5jbXBHbG9iYWxdKXJldHVybiBlKHtlcnJvcjpcIm5vLWNtcFwifSksdm9pZChsPGQubGVuZ3RoJiYoc2V0VGltZW91dChtLDFlMypkW2xdLHQsZSksbCsrKSk7cD1cImNtcFwifXNldFRpbWVvdXQoZSx0LmNtcFRpbWVvdXQse3RpbWVvdXQ6ITB9LCEwKTt0cnl7XCJjbXBcIj09PXA/d2luZG93W3QuY21wR2xvYmFsXShcImdldENvbnNlbnREYXRhXCIsbnVsbCxlKTp3aW5kb3dbdC5jbXBHbG9iYWx2Ml0oXCJnZXRUQ0RhdGFcIiwyLGUpfWNhdGNoKHQpe2Uoe2Vycm9yOlwiXCIuY29uY2F0KHAsXCItaW50ZXJuYWwtZXJyb3JcIil9KSxPYmplY3QoaS5iKSh0LFwiZ2V0Q21wQ29uZmlnLVwiLmNvbmNhdChwKSwhMCl9fWNhdGNoKHQpe09iamVjdChpLmIpKHQsXCJnZXRDbXBDb25maWdcIiwhMCl9fWZ1bmN0aW9uIHkodCl7XCJib29sZWFuXCI9PXR5cGVvZih0PWMoe30sdCkpLmVuYWJsZWQmJih0LmVuYWJsZWQ9dC5lbmFibGVkPzE6MCk7dmFyIGU9Yyh7fSx0KTt0cnl7T2JqZWN0LmtleXMoZykuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJzdHJpbmdcIj09dHlwZW9mIGdbdF0mJi0xIT09Z1t0XS5pbmRleE9mKFwiL1wiKSYmKGdbdF09ZW5jb2RlVVJJQ29tcG9uZW50KGdbdF0pKX0pKSxlLmxvZz1KU09OLnN0cmluZ2lmeShnKX1jYXRjaCh0KXtPYmplY3QoaS5iKSh0LFwic3RyaW5naWZ5QW5kQ2FsbENhbGxiYWNrXCIpfXMoZSl9ZnVuY3Rpb24gaCh0LGUpe3A9bnVsbCxsPTAsZj0hKGc9e30pLGI9XCItdGltZW91dFwiO3RyeXtzPU9iamVjdChpLmQpKGUsXCJHZHByQ2FsbGJhY2tcIiksdD1cIm9iamVjdFwiIT09dSh0KXx8bnVsbD09PXQ/e306Yyh7fSx0KSwhKGc9e2NtcEdsb2JhbDp0LmNtcEdsb2JhbCxjbXBHbG9iYWx2Mjp0LmNtcEdsb2JhbHYyLGNtcFRpbWVvdXQ6dC5jbXBUaW1lb3V0LGVuYWJsZWQ6dC5lbmFibGVkfSk9PT10LmVuYWJsZWR8fDA9PT10LmVuYWJsZWQ/Zy5zdGF0dXM9XCJleHBsaWNpdC1uby1nZHByXCI6ITA9PT10LmVuYWJsZWR8fDE9PT10LmVuYWJsZWQ/Zy5zdGF0dXM9T2JqZWN0KHIubSkodCxcImNvbnNlbnRcIik/XCJleHBsaWNpdC1jb25zZW50LXBhc3NlZFwiOlwiZXhwbGljaXQtbm8tY29uc2VudC1wYXNzZWRcIjp2b2lkIDAhPT10LmVuYWJsZWQmJihnLnN0YXR1cz1PYmplY3Qoci5tKSh0LFwiY29uc2VudFwiKT9cIm1hbGZvcm1lZC13aXRoLWNvbnNlbnRcIjpcIm1hbGZvcm1lZC13aXRob3V0LWNvbnNlbnRcIiksXCJzdHJpbmdcIiE9dHlwZW9mIHQuY21wR2xvYmFsJiYodC5jbXBHbG9iYWw9XCJfX2NtcFwiKSxcInN0cmluZ1wiIT10eXBlb2YgdC5jbXBHbG9iYWx2MiYmKHQuY21wR2xvYmFsdjI9XCJfX3RjZmFwaVwiKSxOdW1iZXIuaXNJbnRlZ2VyKHQuY21wVGltZW91dCl8fCh0LmNtcFRpbWVvdXQ9NTApO3ZhciBuPXQsbz1mdW5jdGlvbih0KXt0cnl7dmFyIGU9e2xvZzpKU09OLnN0cmluZ2lmeShnKX07cmV0dXJuIHZvaWQgMD09PXQuZW5hYmxlZD9lOiExPT09dC5lbmFibGVkPyhlLmVuYWJsZWQ9MCxlKTooTnVtYmVyLmlzSW50ZWdlcih0LmVuYWJsZWQpP2UuZW5hYmxlZD10LmVuYWJsZWQ6ZS5lbmFibGVkPTEsMD09PWUuZW5hYmxlZHx8XCJzdHJpbmdcIj09dHlwZW9mIHQuY29uc2VudCYmKGUuY29uc2VudD10LmNvbnNlbnQpLGUpfWNhdGNoKHQpe3JldHVybiBPYmplY3QoaS5iKSh0LFwicGFyc2VQdWJDb25maWdcIiwhMCkse319fShuKTtpZih2b2lkIDAhPT1vLmVuYWJsZWQpcmV0dXJuIHZvaWQgeShvKTttKG4sZnVuY3Rpb24odCxlLG4pe2lmKCEwIT09Znx8IU9iamVjdChyLm0pKGUsXCJ0aW1lb3V0XCIpfHwhZS50aW1lb3V0KXtmPSEwO3RyeXtpZihPYmplY3Qoci5tKShlLFwiZXJyb3JcIikpcmV0dXJuIGcuc3RhdHVzPWUuZXJyb3Isdm9pZCB5KHQpO2lmKCFufHxcIm9iamVjdFwiIT09dShlKXx8bnVsbD09PWUpcmV0dXJuIGcuc3RhdHVzPVwiXCIuY29uY2F0KHAsXCItZXJyb3JcIiksdm9pZCB5KHQpO2lmKE9iamVjdChyLm0pKGUsXCJ0aW1lb3V0XCIpJiZlLnRpbWVvdXQpcmV0dXJuIGcuc3RhdHVzPVwiXCIuY29uY2F0KHApLmNvbmNhdChiKSx2b2lkIHkodCk7Zy5zdGF0dXM9XCJcIi5jb25jYXQocCxcIi1zdWNjZXNzXCIpLE9iamVjdChyLm0pKGUsXCJ0Y1N0cmluZ1wiKT90LmNvbnNlbnQ9ZS50Y1N0cmluZzpPYmplY3Qoci5tKShlLFwiY29uc2VudERhdGFcIikmJih0LmNvbnNlbnQ9ZS5jb25zZW50RGF0YSksdC5lbmFibGVkPWUuZ2RwckFwcGxpZXM/MTowLDA9PT10LmVuYWJsZWQmJmRlbGV0ZSB0LmNvbnNlbnQseSh0KX1jYXRjaChlKXtyZXR1cm4gT2JqZWN0KGkuYikoZSxcInBhcnNlQ21wUmVzcG9uc2VcIiwhMCksZy5zdGF0dXM9XCJmdW5jLWVycm9yXCIsdm9pZCB5KHQpfX19LmJpbmQobnVsbCx7fSkpfWNhdGNoKHQpe2Z8fGUoe2xvZzone1wic3RhdHVzXCI6XCJnbG9iYWwtZnVuYy1lcnJvclwifSd9KSxmPSEwLE9iamVjdChpLmIpKHQsXCJnZXRHZHByQ29uZmlnXCIsITApfX19LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDAhPT10LmFtem5paWR9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdm9pZCAwIT09dC5rdk1hcH1mdW5jdGlvbiBvKHQpe3JldHVybiB2b2lkIDAhPT10Lmh0bWwmJnZvaWQgMCE9PXQuZXYmJnZvaWQgMCE9PXQuYW16bmlpZH1uLmQoZSxcImNcIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKSxuLmQoZSxcImJcIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSxcImFcIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKX0sZnVuY3Rpb24odCxlLG4pe1widXNlIHN0cmljdFwiO24uZChlLFwiY1wiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLFwiYVwiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLFwiYlwiLChmdW5jdGlvbigpe3JldHVybiBhfSkpO3ZhciByPW4oMCksaT1uKDEpO2Z1bmN0aW9uIG8odCl7dHJ5e3JldHVybiEoIU9iamVjdChpLm0pKHQsXCIkc2ZcIil8fCFPYmplY3QoaS5tKSh0LiRzZixcImV4dFwiKSl9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChyLmIpKHQsXCJpc1NhZmVGcmFtZVwiKSwhMX19ZnVuY3Rpb24gYyh0LGUpe3RyeXt2YXIgbj1lLmlubmVyV2lkdGgsaT1lLmlubmVySGVpZ2h0LG89cGFyc2VJbnQodFswXSwxMCksYz1wYXJzZUludCh0WzFdLDEwKSxhPW8tbix1PWMtaSxzPWUuc2ZBUEl8fGUuJHNmLmV4dDtzJiYobj09PW8mJmk9PT1jfHwocy5yZWdpc3RlcihvLGMpLHMuZXhwYW5kKHtyOmEsYjp1LHB1c2g6ITB9KSkpfWNhdGNoKHQpe09iamVjdChyLmIpKHQsXCJleHBhbmRTZlwiKX19ZnVuY3Rpb24gYSh0KXt0cnl7cmV0dXJuIDE9PT10LmlubmVyV2lkdGgmJjE9PT10LmlubmVySGVpZ2h0fWNhdGNoKHQpe3JldHVybiBPYmplY3Qoci5iKSh0LFwiaXMxeDFDcmVhdGl2ZVwiKSwhMX19fSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKGUsXCJiXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsXCJhXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIHI9bigzKSxpPW4oMSksbz1uKDApO2Z1bmN0aW9uIGModCl7dHJ5e3JldHVybiBPYmplY3QoaS5tKSh0LFwiZGVidWdcIil9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChvLmIpKHQsXCJpc0Fwc3RhZ0xpYnJhcnlcIiksITF9fWZ1bmN0aW9uIGEodCl7dHJ5e3JldHVybiEhT2JqZWN0KGkubSkodCxyLmEpJiYhMD09PXRbci5hXX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KG8uYikodCxcImhhc0Fwc3RhZ0pzTG9hZGVkXCIpLCExfX19LCwsLGZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigyMyl9LGZ1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtuLnIoZSk7dmFyIE50PW4oMTUpLHF0PW4oMiksVXQ9big2KSxNdD1uKDEpLEZ0PW4oMTApLEd0PW4oNCksUXQ9bigzKSxIdD1uKDExKSxYdD1uKDE3KSxWdD1uKDgpLEt0PW4oMCksSnQ9big5KSxXdD1uKDE0KSxyPW4oMTgpLFl0PW4oNSksJHQ9big3KSxadD1uKDEyKSx0ZT1uKDE2KSxlZT1uKDEzKTtmdW5jdGlvbiBuZSh0KXtyZXR1cm4gYSh0KXx8Yyh0KXx8byh0KXx8aSgpfWZ1bmN0aW9uIGkoKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX1mdW5jdGlvbiBvKHQsZSl7aWYodCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIHUodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20obik6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3UodCxlKTp2b2lkIDB9fWZ1bmN0aW9uIGModCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdCh0KSlyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBhKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHUodCl9ZnVuY3Rpb24gdSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KGUpO248ZTtuKyspcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHModCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHJlKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP3MoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6cyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiBpZSh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9ZnVuY3Rpb24gb2UodCl7cmV0dXJuKG9lPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIHR9KSh0KX10cnl7dmFyIGQ9T2JqZWN0KHIuYikod2luZG93LmFwc3RhZyk7ZD9PYmplY3QoS3QuYikobmV3IEVycm9yKFwiYXBzdGFnIGhhcyBhbHJlYWR5IGxvYWRlZCAtIHByZXZlbnRpbmcgZHVwbGljYXRlIGxvYWRcIiksXCJhcHN0YWctZHVwbGljYXRlTG9hZFwiLCEwKTooT2JqZWN0KHIuYSkod2luZG93KSYmT2JqZWN0KEt0LmIpKG5ldyBFcnJvcihcImFwc3RhZyB3YXMgbG9hZGVkIGFuZCB0aGVuIGRlc3Ryb3llZFwiKSxcImFwc3RhZy1kZXN0cm95UmVsb2FkXCIsITApLHdpbmRvdy5hcHN0YWdMT0FERUQ9ITAsZnVuY3Rpb24oKXt2YXIgcj1PYmplY3QoSHQuZSkod2luZG93LFwibmF2aWdhdGlvblN0YXJ0XCIpLHQ9XCJsc1wiLGU9T2JqZWN0KEd0LmQpKFwiY29uc29sZVwiKXx8ZnVuY3Rpb24oKXt0cnl7cmV0dXJuLTEhPT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKFwiYW16bl9kZWJ1Z19jb25zb2xlPTFcIikmJih0PVwidXJsXCIsITApfWNhdGNoKHQpe3JldHVybiExfX0oKSxuPU9iamVjdChHdC5kKShcImNvbnNvbGVfdjJcIil8fGZ1bmN0aW9uKCl7dHJ5e3JldHVybi0xIT09d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihcImFtem5fZGVidWdfY29uc29sZT0yXCIpJiYodD1cInVybFwiLCEwKX1jYXRjaCh0KXtyZXR1cm4hMX19KCkscztmdW5jdGlvbiBpKHQpe3RyeXt0LnRzPURhdGUubm93KCkscXQuYS5kaXNwYXRjaCh7dHlwZTpcIkxPR19FVkVOVFwiLGV2ZW50OnR9KX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9sb2dFdmVudFwiKX19ZnVuY3Rpb24gbyh0KXtmdW5jdGlvbiBlKHQpe3RyeXtpZighcXQuYS5nZXRTdGF0ZSgpLmNtcEZpcmVkKXtxdC5hLmRpc3BhdGNoKHt0eXBlOlwiQ01QX0ZJUkVEXCJ9KTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpO2Uuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixlLnNyYz10LGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSl9fWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2RvQ29va2llTWF0Y2gtcmVhZHlcIil9fXRyeXtcImxvYWRpbmdcIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwoZnVuY3Rpb24oKXtlKHQpfSksITEpOmUodCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZG9Db29raWVNYXRjaFwiKX19ZnVuY3Rpb24gYyh0KXt0cnl7dmFyIGU9cXQuYS5nZXRTdGF0ZSgpLmNmZy5DT09LSUVfTUFUQ0hfREVMQVk7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7T2JqZWN0KE10Lm0pKHQsXCJjbXBcIik/byh0LmNtcCk6T2JqZWN0KE10Lm0pKHQsXCJjbXBqc1wiKSYmT2JqZWN0KEp0LmIpKHQuY21wanMpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3RyeUNvb2tpZU1hdGNoLXNldFRpbWVvdXRcIil9fSksZSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfdHJ5Q29va2llTWF0Y2hcIil9fWZ1bmN0aW9uIGEodCl7dHJ5e3JldHVybiFxdC5hLmdldFN0YXRlKCkuZXhwZXJpbWVudHMuY2h1bmtSZXF1ZXN0c3x8MD09PXF0LmEuZ2V0U3RhdGUoKS5iaWRSZXFzW3Quc3BsaXQoXCItXCIpWzBdXS5uZXR3b3JrUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmluRmxpZ2h0fSkpLmxlbmd0aH1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfaXNSZXF1ZXN0Q29tcGxldGVcIiksMX19ZnVuY3Rpb24gdSh0LGUpe3RyeXshcXQuYS5nZXRTdGF0ZSgpLmJpZFJlcXNbdF0uaGFzQ2FsbGJhY2tFeGVjdXRlZCYmYSh0KSYmKHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfQ0FMTEJBQ0tcIixmaWQ6dH0pLGUoKSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfY2hlY2tBbmRDYWxsQ2FsbGJhY2tcIil9fWZ1bmN0aW9uIGQodCl7dHJ5e3F0LmEuZ2V0U3RhdGUoKS5leHBlcmltZW50cy5jaHVua1JlcXVlc3RzJiZxdC5hLmRpc3BhdGNoKHt0eXBlOlwiUkVDT1JEX05FVFdPUktfRVhDSEFOR0VcIixmaWQ6dFswXSx0aW1lc3RhbXA6RGF0ZS5ub3coKSxleGNoYW5nZVR5cGU6XCJyZXNwb25zZVwiLG5ldHdvcmtJRDpwYXJzZUludCh0WzFdLDEwKX0pfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3JlY29yZFJlc3BvbnNlXCIpfX1mdW5jdGlvbiBmKHQscixlKXt2YXIgaT1lLnNwbGl0KFwiLVwiKSxuPXt1cmw6dCx3aXRoQ3JlZGVudGlhbHM6ITAsb25sb2FkOmZ1bmN0aW9uIHQoZSl7dHJ5e2QoaSk7dmFyIG49ZS5yZXNwb25zZVRleHQ7ZXZhbChuKSx1KGlbMF0scil9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfeGhyQmlkLW9ubG9hZFwiLCEwKX19LG9uZXJyb3I6ZnVuY3Rpb24oKXt0cnl7ZChpKSx1KGlbMF0scil9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfeGhyQmlkLW9uZXJyb3JcIiwhMCl9fX07dHJ5e09iamVjdChKdC5kKShuKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl94aHJCaWRcIiwhMCksZChpKSx1KGlbMF0scil9fWZ1bmN0aW9uIGwodCl7dHJ5e3ZhciBlPW5ldyBEYXRlO3JldHVybiBlLnNldFRpbWUoZS5nZXRUaW1lKCkrMWUzKnQpLGUudG9VVENTdHJpbmcoKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfZ2V0Q29va2llRXhwaXJ5XCIpLFwiVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVRcIn19ZnVuY3Rpb24gYih0KXt0cnl7T2JqZWN0KE10Lm0pKHQsXCJjclwiKSYmdC5jci5mb3JFYWNoKChmdW5jdGlvbih0KXtkb2N1bWVudC5jb29raWU9XCJcIi5jb25jYXQodC5rLFwiPVwiKS5jb25jYXQodC52LFwiO2V4cGlyZXM9XCIpLmNvbmNhdCgtMSE9PXQuZXhwP2wodC5leHApOk9iamVjdChNdC5nKSgzNjUpLFwiO3BhdGg9LztcIil9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfc2V0Rmlyc3RQYXJ0eUNvb2tpZXNcIil9fWZ1bmN0aW9uIHAodCl7dHJ5e2lmKE9iamVjdChNdC5tKSh0LFwiY2JcIikpe3F0LmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfQUFYX1JFUV9QUk9QXCIsYmlkUmVxSUQ6dC5jYixrZXk6XCJyZXNUc1wiLHZhbHVlOkRhdGUubm93KCl9KTt2YXIgZT1uZXcgUmVnRXhwKFwiZS9kdGIvYmlkLipjYj1cIi5jb25jYXQodC5jYikpO3F0LmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfQUFYX1JFUV9QUk9QXCIsYmlkUmVxSUQ6dC5jYixrZXk6XCJwZXJmXCIsdmFsdWU6T2JqZWN0KEh0LmMpKHdpbmRvdyxlKX0pfU9iamVjdChNdC5tKSh0LFwiY2ZnXCIpJiZxdC5hLmRpc3BhdGNoKHt0eXBlOlwiU0VUX0NGR1wiLGNmZzp0LmNmZ30pLEoodCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZG9PbkFheFJlc3BvbnNlXCIsITApfX1mdW5jdGlvbiBnKHQpe3RyeXtpZihjKHQpLGIodCksT2JqZWN0KE10Lm0pKHQsXCJjZmdcIikmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKFF0LmMsSlNPTi5zdHJpbmdpZnkodC5jZmcpKSxPYmplY3QoTXQubSkodCxcInN0XCIpJiZPYmplY3QoTXQuaikodC5zdCw5MTcpJiZxdC5hLmdldFN0YXRlKCkuc3luYzkxNyl7cXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNFVF9TWU5DXzkxN1wiLHZhbHVlOiExfSk7dHJ5e2soKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9fZXJyb3ItZG9GYlN5bmNfX1wiKX19bSh0KSxPYmplY3QoVXQuaSkodCl8fE9iamVjdChWdC5kKSgpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2RvQWZ0ZXJBYXhSZXNwb25zZVwiLCEwKX19ZnVuY3Rpb24gbSh0KXt0cnl7aWYoT2JqZWN0KE10Lm0pKHQsXCJmcFwiKSl7dmFyIGU9dC5mcDtPYmplY3QoTXQubSkoZSxcImxlbmd0aFwiKSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmQ/dC5kOjA7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtPYmplY3QoVnQuYykodC5zKX0pLGUpfSkpfX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcImZpcmVBQVhQaXhlbHNcIil9fWZ1bmN0aW9uIHkoKXt0cnl7cXQuYS5nZXRTdGF0ZSgpLlEuZm9yRWFjaCgoZnVuY3Rpb24odCl7XCJpXCI9PT10WzBdP3dpbmRvdy5hcHN0YWcuaW5pdC5hcHBseShudWxsLHRbMV0pOndpbmRvdy5hcHN0YWcuZmV0Y2hCaWRzLmFwcGx5KG51bGwsdFsxXSl9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfUUhhbmRsZXJcIiwhMCl9fWZ1bmN0aW9uIGgodCl7dHJ5e09iamVjdChlZS5iKSh0LnB1YklELFtcInN0cmluZ1wiLFwibnVtYmVyXCJdKT9cIm51bWJlclwiPT10eXBlb2YgdC5wdWJJRCYmKHQucHViSUQ9XCJcIi5jb25jYXQodC5wdWJJRCkpOk9iamVjdChLdC5jKShcImluaXQuY29uZmlnLnB1YklEXCIsb2UodC5wdWJJRCksXCJzdHJpbmdcIiksT2JqZWN0KGVlLmIpKHQuYWRTZXJ2ZXIsW1widW5kZWZpbmVkXCIsXCJzdHJpbmdcIl0pfHxPYmplY3QoS3QuYykoXCJpbml0LmNvbmZpZy5hZFNlcnZlclwiLG9lKHQuYWRTZXJ2ZXIpLFwic3RyaW5nXCIpLE9iamVjdChlZS5hKSh0LmJpZFRpbWVvdXQpfHwoXCJzdHJpbmdcIj09dHlwZW9mIHQuYmlkVGltZW91dD9PYmplY3QoS3QuYikoe25hbWU6XCJzdHJpbmctXCIuY29uY2F0KHQuYmlkVGltZW91dCksbWVzc2FnZTpcImluaXQuY29uZmlnLmJpZFRpbWVvdXQgd2FzIGEgbm9uLW51bWVyaWMgc3RyaW5nICdcIi5jb25jYXQodC5iaWRUaW1lb3V0LFwiJ1wiKX0sXCJUeXBlRXJyb3ItaW5pdC5jb25maWcuYmlkVGltZW91dFwiLCEwKTpPYmplY3QoS3QuYykoXCJpbml0LmNvbmZpZy5iaWRUaW1lb3V0XCIsb2UodC5iaWRUaW1lb3V0KSxcIm51bWJlclwiKSksT2JqZWN0KGVlLmIpKHQuZ2RwcixbXCJ1bmRlZmluZWRcIixcIm9iamVjdFwiXSk/XCJvYmplY3RcIj09PW9lKHQuZ2RwcikmJihPYmplY3QoZWUuYSkodC5nZHByLmNtcFRpbWVvdXQpfHwoT2JqZWN0KGVlLmIpKHQuZ2Rwci5jbXBUaW1lb3V0LFtcInN0cmluZ1wiLFwidW5kZWZpbmVkXCJdKT9PYmplY3QoS3QuYikoe25hbWU6XCJzdHJpbmctXCIuY29uY2F0KHQuYmlkVGltZW91dCksbWVzc2FnZTpcImluaXQuY29uZmlnLmdkcHIuY21wVGltZW91dCB3YXMgYSBub24tbnVtZXJpYyBzdHJpbmcgJ1wiLmNvbmNhdCh0LmdkcHIuY21wVGltZW91dCxcIidcIil9LFwiVHlwZUVycm9yLWluaXQuY29uZmlnLmdkcHIuY21wVGltZW91dFwiLCEwKTpPYmplY3QoS3QuYykoXCJpbml0LmNvbmZpZy5nZHByLmNtcFRpbWVvdXRcIixvZSh0LmdkcHIuY21wVGltZW91dCksXCJudW1iZXJcIikpKTpPYmplY3QoS3QuYykoXCJpbml0LmNvbmZpZy5nZHByXCIsb2UodC5nZHByKSxcIm9iamVjdFwiKSxPYmplY3QoTXQubSkodCxcInBhcmFtc1wiKSYmIU9iamVjdChNdC5sKSh0LnBhcmFtcyk/T2JqZWN0KEt0LmMpKFwiaW5pdC5jb25maWcucGFyYW1zXCIsb2UodC5wYXJhbXMpLFwib2JqZWN0XCIpOk9iamVjdChNdC5tKSh0LFwicGFyYW1zXCIpJiZPYmplY3Qua2V5cyh0LnBhcmFtcykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQucGFyYW1zW2VdfHxcIm51bWJlclwiPT10eXBlb2YgdC5wYXJhbXNbZV18fChPYmplY3QoTXQuaykodC5wYXJhbXNbZV0pPyEhdC5wYXJhbXNbZV0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0JiYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKX0pLCEwKXx8KE9iamVjdChLdC5iKSh7bmFtZTpcIm5vbi1zdHJpbmcgYXJyYXkgaXRlbVwiLG1lc3NhZ2U6XCInaW5pdC5jb25maWcucGFyYW1zLlwiLmNvbmNhdChlLFwiIGNvbnRhaW5zIGEgbm9uLXN0cmluZyBpdGVtXCIpfSxcIlR5cGVFcnJvci1pbml0LmNvbmZpZy5wYXJhbXMuXCIuY29uY2F0KGUpLCEwKSwhMSk6KE9iamVjdChLdC5jKShcImluaXQuY29uZmlnLnBhcmFtcy5cIi5jb25jYXQoZSksb2UodC5wYXJhbXNbZV0pLFwic3RyaW5nJyBvciAnYXJyYXlcIiksITEpKX0pKSxPYmplY3QoTXQubSkodCxcImJsb2NrZWRCaWRkZXJzXCIpJiYhT2JqZWN0KE10LmspKHQuYmxvY2tlZEJpZGRlcnMpP09iamVjdChLdC5jKShcImluaXQuY29uZmlnLmJsb2NrZWRCaWRkZXJzXCIsb2UodC5ibG9ja2VkQmlkZGVycyksXCJhcnJheVwiKTpPYmplY3QoTXQubSkodCxcImJsb2NrZWRCaWRkZXJzXCIpJiZPYmplY3QoTXQuaykodC5ibG9ja2VkQmlkZGVycykmJih0LmJsb2NrZWRCaWRkZXJzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxcIm51bWJlclwiPT10eXBlb2YgZSl9KSwhMCl8fE9iamVjdChLdC5iKSh7bmFtZTpcIm5vbi1zdHJpbmcgYXJyYXkgaXRlbVwiLG1lc3NhZ2U6XCInaW5pdC5jb25maWcuYmxvY2tlZEJpZGRlcnMgY29udGFpbnMgYSBub24tc3RyaW5nIGl0ZW1cIn0sXCJUeXBlRXJyb3ItaW5pdC5jb25maWcuYmxvY2tlZEJpZGRlcnNcIiwhMCkpLE9iamVjdChlZS5iKSh0LnNpbXBsZXJHUFQsW1widW5kZWZpbmVkXCIsXCJib29sZWFuXCJdKXx8T2JqZWN0KEt0LmMpKFwiaW5pdC5jb25maWcuc2ltcGxlckdQVFwiLG9lKHQuc2ltcGxlckdQVCksXCJib29sZWFuXCIpLE9iamVjdChlZS5iKSh0LmRlYWxzLFtcInVuZGVmaW5lZFwiLFwiYm9vbGVhblwiXSl8fE9iamVjdChLdC5jKShcImluaXQuY29uZmlnLmRlYWxzXCIsb2UodC5kZWFscyksXCJib29sZWFuXCIpfWNhdGNoKGUpe09iamVjdChLdC5iKShlLFwiX3ZhbGlkYXRlQW5kU3RvcmVDb25maWctdmFsaWRhdGVDb25maWdcIil9dHJ5e3ZhciBlPXF0LmEuZ2V0U3RhdGUoKS5jb25maWc7T2JqZWN0KE10Lm0pKGUsXCJwdWJJRFwiKSYmT2JqZWN0KE10Lm0pKHQsXCJwdWJJRFwiKSYmZS5wdWJJRCE9PXQucHViSUQmJk9iamVjdChLdC5iKShuZXcgRXJyb3IoXCJgYXBzdGFnLmluaXRgIHdhcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgcHViSURzIChcIi5jb25jYXQoZS5wdWJJRCxcIiB0aGVuIFwiKS5jb25jYXQodC5wdWJJRCxcIilcIikpLFwiX3ZhbGlkYXRlQW5kU3RvcmVDb25maWctZGlmZlB1YklkXCIsITApLHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJTRVRfR0RQUl9DT05GSUdcIixjb25maWc6bnVsbH0pLHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJTRVRfQ09ORklHXCIsY29uZmlnOnQsZGVmYXVsdENtcFRpbWVvdXQ6cXQuYS5nZXRTdGF0ZSgpLmNmZy5HRFBSX0NNUF9USU1FT1VUfSl9Y2F0Y2goZSl7T2JqZWN0KEt0LmIpKGUsXCJfdmFsaWRhdGVBbmRTdG9yZUNvbmZpZ1wiLCEwKX19ZnVuY3Rpb24gTyh0KXt0cnl7dmFyIGU9dC5zbG90SUQ7aWYoT2JqZWN0KE10Lm0pKHQuYmlkQ29uZmlnLFwibWVkaWFUeXBlXCIpJiZcInZcIj09PXQuYmlkQ29uZmlnLm1lZGlhVHlwZSlyZXR1cm47aWYoIVl0LmEuaGFzQWRTZXJ2ZXJPYmplY3RMb2FkZWQoKSlyZXR1cm4gdm9pZCBPYmplY3QoS3QuYSkoXCJkaXNwbGF5QWRTZXJ2ZXIgT2JqZWN0IGhhc24ndCBiZWVuIGRlZmluZWRcIiwhMCk7aWYoIVl0LmEuaXNDb21tYW5kUXVldWVEZWZpbmVkKCkpcmV0dXJuIHZvaWQgT2JqZWN0KEt0LmEpKFwiZGlzcGxheUFkU2VydmVyIE9iamVjdCdzIGNtZCBxdWV1ZSBoYXNuJ3QgYmVlbiBkZWZpbmVkXCIsITApO1l0LmEuaGFzQWRTZXJ2ZXJPYmplY3RMb2FkZWQoKT9udWxsIT09aihlKT9BKHQpOk9iamVjdChLdC5hKShcIlwiLmNvbmNhdChlLFwiIGlzbid0IGRlZmluZWQgd2hlbiB0cnlpbmcgdG8gc2V0IGFtYXpvbiBiaWQhXCIpKTpZdC5hLmNtZFF1ZXVlUHVzaCgoZnVuY3Rpb24oKXtPKHQpfSkpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3NhZmVBcHBseVNsb3RUYXJnZXRpbmdcIiwhMCl9fWZ1bmN0aW9uIGoodCl7dmFyIGU9bnVsbDt0cnl7ZT1PYmplY3QoRnQuYikoWXQuYSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zbG90SUQ9PT10fSkpWzBdfHxudWxsfWNhdGNoKGUpe09iamVjdChLdC5iKShlLFwiX2dldEFkU2VydmVyU2xvdFwiKX1yZXR1cm4gZX1mdW5jdGlvbiB2KHQpe3RyeXt2YXIgZT1xdC5hLmdldFN0YXRlKCkudGFyZ2V0aW5nS2V5c1t0LnNsb3RJRF07WXQuYS5oYXNBZFNlcnZlck9iamVjdExvYWRlZCgpJiZPYmplY3QoTXQuaykoZSkmJmUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIDA8dC5nZXRUYXJnZXRpbmcoZSkubGVuZ3RoJiZ0LmNsZWFyVGFyZ2V0aW5nKGUpfSkpfWNhdGNoKGUpe09iamVjdChLdC5iKShlLFwiX2NsZWFyVGFyZ2V0aW5nRnJvbVNsb3RcIiwhMCl9fWZ1bmN0aW9uIFModCl7dHJ5e2lmKE9iamVjdChNdC5tKShxdC5hLmdldFN0YXRlKCkuc2xvdEJpZHMsdC5zbG90SUQpKXt2YXIgZT1xdC5hLmdldFN0YXRlKCkuc2xvdEJpZHNbdC5zbG90SURdLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmlkU3RhdGU9PT1RdC5iLnNldH0pKVswXTtlJiZlLmJpZFN0YXRlPT09UXQuYi5zZXQmJnF0LmEuZGlzcGF0Y2goe3R5cGU6XCJCSURfU1RBVEVfQ0hBTkdFXCIsc2xvdElEOnQuc2xvdElELF90YXJnZXRpbmdTZXRJRDplLl90YXJnZXRpbmdTZXRJRCxiaWRTdGF0ZTpRdC5iLmV4cG9zZWR9KX19Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfY2xlYXJCaWRTZXRPblNsb3RcIiwhMCl9fWZ1bmN0aW9uIF8odCxlKXt0cnl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KE10LmopKGUsdCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKS5sZW5ndGg9PT10Lmxlbmd0aH1jYXRjaCh0KXtyZXR1cm4gdm9pZCBPYmplY3QoS3QuYikodCxcIl9oYXNBbGxJdGVtc0luQXJyYXlcIil9fWZ1bmN0aW9uIHcoKXt2YXIgdD17fTt0cnl7T2JqZWN0LmtleXMocXQuYS5nZXRTdGF0ZSgpLnNsb3RCaWRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1xdC5hLmdldFN0YXRlKCkuc2xvdEJpZHNbZV0uZmlsdGVyKCR0LmcpOzA8bi5sZW5ndGgmJih0W2VdPW4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm57cnFUczpxdC5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZFJlcUlEPT09dC5iaWRSZXFJRH0pKVswXS5ycVRzLGJpZDp0fX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucnFUcz5lLnJxVHM/dDplfSkpLmJpZCl9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZ2V0Q3VycmVudFNsb3RCaWRzXCIsITApfXJldHVybiB0fWZ1bmN0aW9uIEQodCxlKXt0cnl7cmV0dXJuIE9iamVjdChNdC5rKShxdC5hLmdldFN0YXRlKCkudGFyZ2V0aW5nS2V5c1t0XSk/ZT9bXCJhbXpuaWlkX3NwXCJdOnF0LmEuZ2V0U3RhdGUoKS50YXJnZXRpbmdLZXlzW3RdLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTE8dC5pbmRleE9mKFwiYW16bmlpZFwiKSYmdC5pbmRleE9mKFwiYW16bmlpZF9zcFwiKTwwfSkpOltcImFtem5paWRcIl19Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiX2dldEFsbEJpZElkS2V5c1wiKSxbXX19ZnVuY3Rpb24gRSh0LGUpe3ZhciBuLHI7dHJ5e3ZhciBpPXF0LmEuZ2V0U3RhdGUoKS5zbG90QmlkcztPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbihvKXtpW29dLmZvckVhY2goKGZ1bmN0aW9uKGkpe0QobyxlKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpLmJpZENvbmZpZ1tlXT09PXQmJihuPWksXCJhbXpuaWlkX3NwXCI9PT1lP3I9XCJzcFwiOlwiYW16bmlpZFwiIT09ZSYmKHI9ZS5zdWJzdHIoMCxlLmluZGV4T2YoXCJhbXpuaWlkXCIpKSkpfSkpfSkpfSkpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2ZpbmRTbG90QmlkQnlCaWRJRFwiLCEwKX1yZXR1cm57c2xvdEJpZDpuLGRlYWxJZDpyfX1mdW5jdGlvbiBJKHQsZSxuKXt2YXIgcj1cIlwiO3RyeXtlLmJpZENvbmZpZ1tuK1wiYW16bmlpZFwiXT09PXQmJihyPW4uc3BsaXQoXCJfXCIpLnBvcCgpLnRyaW0oKSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZ2V0UE1QQmlkU2l6ZVwiKX1yZXR1cm4gcn1mdW5jdGlvbiBUKHQpe3RyeXtpZih2b2lkIDA9PT10LnNsb3RzKXJldHVybltdO3ZhciBlPXt9O3JldHVybiB0LnNsb3RzLmZvckVhY2goKGZ1bmN0aW9uKHQpe1widmlkZW9cIiE9PXQubWVkaWFUeXBlP2VbdC5zbG90SURdPW5ldyAkdC5hKHQpOigwPD10LnNsb3RJRC5pbmRleE9mKFwicnN2LVwiKSYmKHQ9e3Nsb3RJRDp0LnNsb3RJRC5zdWJzdHJpbmcoNCkscl9hbXpuYmlkOnQuYW16bmJpZCxyX2Ftem5paWQ6dC5hbXpuaWlkLHJfYW16bnA6dC5hbXpucCxtZWRpYVR5cGU6XCJ2aWRlb1wiLHRhcmdldGluZzpbXCJyX2Ftem5iaWRcIixcInJfYW16bmlpZFwiLFwicl9hbXpucFwiXSxhbXpuc3o6dC5hbXpuc3osc2l6ZTp0LnNpemUsY3JpZDp0LmNyaWQsbWV0YTp0Lm1ldGF9KSxPYmplY3QoTXQubSkoZSx0LnNsb3RJRCk/dC50YXJnZXRpbmcuZm9yRWFjaCgoZnVuY3Rpb24obil7ZVt0LnNsb3RJRF0uYmlkQ29uZmlnW25dPXRbbl0sLTE9PT1lW3Quc2xvdElEXS5iaWRDb25maWcudGFyZ2V0aW5nLmluZGV4T2YobikmJmVbdC5zbG90SURdLmJpZENvbmZpZy50YXJnZXRpbmcucHVzaChuKX0pKTplW3Quc2xvdElEXT1uZXcgJHQuYSh0KSl9KSksT2JqZWN0LmtleXMoZSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfbWVyZ2VWaWRlb0JpZHNcIiksW119fWZ1bmN0aW9uIFIodCl7dmFyIGU9VCh0KSxuPVtdO3RyeXtuPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRSZXFJRD10LmNiLGUuaG9zdD10Lmhvc3QsZS5ldj10LmV2LGUuY2ZlPXQuY2ZlLGV9KSl9Y2F0Y2goZSl7T2JqZWN0KEt0LmIpKGUsXCJfY29udmVydEFheFJlc3BvbnNlXCIpfXJldHVybiBufWZ1bmN0aW9uIEEodCl7dHJ5e3ZhciBlPXQuc2xvdElELG49dC5fdGFyZ2V0aW5nU2V0SUQscj10LmJpZENvbmZpZy50YXJnZXRpbmc/dC5iaWRDb25maWcudGFyZ2V0aW5nOkJ0KFwiZGlzcGxheVwiKTtpZih0LmJpZFN0YXRlPT09UXQuYi5zZXQpcmV0dXJuO3ZhciBpPWooZSk7bnVsbCE9PWkmJihTKGkpLE9iamVjdC5rZXlzKHQuYmlkQ29uZmlnKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoTXQuaikocix0KX0pKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gaS5zZXRUYXJnZXRpbmcoZSx0LmJpZENvbmZpZ1tlXSl9KSkscXQuYS5kaXNwYXRjaCh7dHlwZTpcIkJJRF9TVEFURV9DSEFOR0VcIixzbG90SUQ6ZSxfdGFyZ2V0aW5nU2V0SUQ6bixiaWRTdGF0ZTpRdC5iLnNldCx0czpEYXRlLm5vdygpfSkpfWNhdGNoKGUpe09iamVjdChLdC5iKShlLFwiX2FwcGx5VGFyZ2V0aW5nVG9BZFNlcnZlclNsb3RcIiwhMCl9fWZ1bmN0aW9uIEModCl7dHJ5e3ZhciBlPXcoKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF0mJk8oZVt0XSl9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfYXBwbHlTdXBwbGllZFNsb3RCaWRzVG9BZFNlcnZlck9iamVjdFwiLCEwKX19ZnVuY3Rpb24gUCgpe3RyeXt2YXIgdD13KCk7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIE8odFtlXSl9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfYXBwbHlBbGxDdXJyZW50U2xvdEJpZHNUYXJnZXRpbmdUb0FkU2VydmVyT2JqZWN0XCIsITApfX1mdW5jdGlvbiB6KHQpe3RyeXt0P0ModCk6UCgpLHF0LmEuZ2V0U3RhdGUoKS5kaXNwbGF5QWRTZXJ2ZXIuc2xvdFJlbmRlckVuZGVkU2V0fHwoWXQuYS5jbWRRdWV1ZVB1c2goKGZ1bmN0aW9uKCl7dHJ5e1l0LmEuc2xvdFJlbmRlckVuZGVkRXZlbnQoKGZ1bmN0aW9uKHQpe3RyeXt2KHQpLFModCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfYXBwbHlTbG90VGFyZ2V0aW5nLWNtZFF1ZXVlLXNsb3RDYlwiLCEwKX19KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfYXBwbHlTbG90VGFyZ2V0aW5nLWNtZFF1ZXVlXCIsITApfX0pKSxxdC5hLmRpc3BhdGNoKHt0eXBlOlwiU0xPVF9SRU5ERVJfRU5ERURfU0VUXCJ9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfYXBwbHlTbG90VGFyZ2V0aW5nXCIsITApfX1mdW5jdGlvbiBrKCl7dmFyIHQ9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLGU9XCIxODgxMTQxMzgyMTY2MTgzXCI7ZnVuY3Rpb24gbih0KXt0cnl7dmFyIGU9SlNPTi5wYXJzZSh0KSxuPWUuZmJUb2tlbixyPW5ldyBEYXRlKHBhcnNlSW50KGUuZXhwQWZ0ZXIsMTApKS50b1VUQ1N0cmluZygpO2RvY3VtZW50LmNvb2tpZT1cImFwc19leHRfOTE3PVwiLmNvbmNhdChuLFwiOyBleHBpcmVzPVwiKS5jb25jYXQocil9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZG9GYlN5bmMtc2V0RmJDb29raWVcIil9fWZ1bmN0aW9uIHIoZSl7dHJ5eyFmdW5jdGlvbih0LGUsbil7dHJ5eyFmdW5jdGlvbih0LGUpe3RyeXt2YXIgbj17dXJsOnQsd2l0aENyZWRlbnRpYWxzOiEwLG9ubG9hZDpmdW5jdGlvbih0KXtyZXR1cm4gZSh0LnJlc3BvbnNlVGV4dCl9fTtPYmplY3QoSnQuZCkobil9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZG9GYlN5bmMtc2VuZFRva2VuUmVxdWVzdFwiKX19KGZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVyblwiXCIuY29uY2F0KFwiaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL2F1ZGllbmNlbmV0d29yay90b2tlbi91cGRhdGVcIixcIj9wYXJ0bmVyPVwiKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KHQpLFwiJnZyX3Rva2VuPVwiKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfZG9GYlN5bmMtZ2V0VXBkYXRlVXJsXCIpLFwiXCJ9fSh0LGUpLG4pfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2RvRmJTeW5jLWdldFY0VG9rZW5cIil9fShlLGZ1bmN0aW9uKCl7dHJ5e2Zvcih2YXIgZT1cIlZSX1wiLG49MDtuPDE5NzsrK24pZSs9dC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKSk7cmV0dXJuIGV9Y2F0Y2goZSl7cmV0dXJuIE9iamVjdChLdC5iKShlLFwiX2RvRmJTeW5jLWdldFZyVG9rZW5cIiksXCJcIn19KCksbil9Y2F0Y2goZSl7T2JqZWN0KEt0LmIpKGUsXCJfZG9GYlN5bmMtZ2V0VG9rZW5SZXNwb25zZVwiKX19dHJ5e1wiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/cihlKTp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwoZnVuY3Rpb24oKXtyKGUpfSkpfWNhdGNoKGUpe09iamVjdChLdC5iKShlLFwiX2RvRmJTeW5jXCIpfX1mdW5jdGlvbiBCKHQsZSl7ZnVuY3Rpb24gbigpe2lmKCFpKWlmKDIwPD1vKyspT2JqZWN0KEt0LmIpKHtuYW1lOlwiTG9vcEVycm9yXCIsbWVzc2FnZTpcIlRvbyBtYW55IGF0dGVtcHRzIHRvIGFwcGVuZCB0byBkb2N1bWVudC5ib2R5XCJ9LFwiX3NhZmVEb2N1bWVudEJvZHlBcHBlbmRDaGlsZC1jYWxsYmFjay1sb29wc1wiLCEwKTtlbHNle3RyeXtpZih0JiZ0LmJvZHkmJm51bGwhPT10LmJvZHkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuYm9keS5hcHBlbmRDaGlsZClyZXR1cm4gdC5ib2R5LmFwcGVuZENoaWxkKGUpLHIoKSx2b2lkKGk9ITApfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3NhZmVEb2N1bWVudEJvZHlBcHBlbmRDaGlsZC1jYWxsYmFja1wiKX1zZXRUaW1lb3V0KG4sMTAwKX19dmFyIHI9Mjxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmZ1bmN0aW9uKCl7fSxpPSExLG89MDt0cnl7XCJjb21wbGV0ZVwiPT09dC5yZWFkeVN0YXRlfHxcImludGVyYWN0aXZlXCI9PT10LnJlYWR5U3RhdGU/bigpOnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixuKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9zYWZlRG9jdW1lbnRCb2R5QXBwZW5kQ2hpbGRcIil9fWZ1bmN0aW9uIHgodCl7dHJ5e3ZhciBlLG47cmV0dXJuIGU9XCJcIi5jb25jYXQodC5ob3N0KS5jb25jYXQocXQuYS5nZXRTdGF0ZSgpLmNmZy5EVEJfUEFUSCxcIi9pbXBcIiksbj1cIlwiLmNvbmNhdCh0Lmhvc3QpLmNvbmNhdChxdC5hLmdldFN0YXRlKCkuY2ZnLkRUQl9QQVRILFwiL2FkbVwiKSx0LmNmZXx8dC5pc0FtcD9uOmV9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiZGV0ZXJtaW5lQ3JlYXRpdmVGZXRjaEVuZHBvaW50XCIpLFwiXCJ9fWZ1bmN0aW9uIEwodCl7dHJ5e3ZhciBlLG49XCI/Yj1cIi5jb25jYXQodC5iaWRJRCxcIiZybmQ9XCIpLmNvbmNhdChPYmplY3QoTXQuZSkoKSk7cmV0dXJuIE9iamVjdChNdC5tKSh0LFwicHBcIikmJihuKz1cIiZwcD1cIi5jb25jYXQodC5wcCkpLE9iamVjdChNdC5tKSh0LFwiYW16bnBcIikmJihuKz1cIiZwPVwiLmNvbmNhdCh0LmFtem5wKSksT2JqZWN0KE10Lm0pKHQsXCJjcklEXCIpJiYobis9XCImY3JpZD1cIi5jb25jYXQodC5jcklEKSksT2JqZWN0KE10Lm0pKHQsXCJpc1NoYXJlZFBNUFwiKSYmITA9PT10LmlzU2hhcmVkUE1QJiYobis9XCImc3A9dHJ1ZVwiKSxPYmplY3QoTXQubSkod2luZG93LFwiY29uZmlhbnRcIikmJihuKz1cIiZlcD0lN0IlMjJjZSUyMiUzQSUyMjElMjIlN0RcIiksZT14KHQpLHQuZmlmP1wiXCIuY29uY2F0KGUsXCJqXCIpLmNvbmNhdChuKTpcIlwiLmNvbmNhdChlLFwiaVwiKS5jb25jYXQobil9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiX2NyZWF0aXZlVVJMXCIpLFwiXCJ9fWZ1bmN0aW9uIE4odCl7dHJ5e3ZhciBlPXQuZG9jLmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7cmV0dXJuIGUuZnJhbWVCb3JkZXI9XCIwXCIsZS5tYXJnaW5IZWlnaHQ9XCIwXCIsZS5tYXJnaW5XaWR0aD1cIjBcIixlLnN0eWxlLm1hcmdpblRvcD1cIjBcIixlLnN0eWxlLm1hcmdpbkxlZnQ9XCIwXCIsZS5zY3JvbGxpbmc9XCJub1wiLHQuaW5oZXJpdFNpemU/KGUuc3R5bGUud2lkdGg9XCIxMDAlXCIsZS5zdHlsZS5oZWlnaHQ9XCIxMDAlXCIpOihlLnN0eWxlLndpZHRoPVwiXCIuY29uY2F0KHQuc2l6ZXNbMF0sXCJweFwiKSxlLnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdCh0LnNpemVzWzFdLFwicHhcIikpLGV9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiX2Jhc2VJZnJhbWVcIiksd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIil9fWZ1bmN0aW9uIHEodCl7dHJ5e2lmKE9iamVjdChNdC5tKSh0LFwiYmlkVHlwZVwiKSl7dmFyIGU9dC5rdk1hcDtzd2l0Y2godC5iaWRUeXBlKXtjYXNlXCJzaGFyZWRQTVBcIjpyZXR1cm57YmlkSUQ6ZS5hbXpuaWlkX3NwWzBdLHBwOmUuYW16bmJpZF9zcFswXSxzaXplczplLmFtem5zel9zcFswXS5zcGxpdChcInhcIiksYW16bnA6ZS5hbXpucF9zcFswXSxpc1NoYXJlZFBNUDp0LmlzU2hhcmVkUE1QfTtjYXNlXCJwcmVmZXJyZWRQTVBcIjppZihPYmplY3QodGUuYikodCkmJk9iamVjdChNdC5tKSh0LFwiYW16bmRlYWxcIikpe3ZhciBuPXQuYW16bmRlYWwuc3BsaXQoXCJfXCIpLnBvcCgpLnRyaW0oKTtyZXR1cm57YmlkSUQ6ZVtcIlwiLmNvbmNhdCh0LmFtem5kZWFsLFwiYW16bmlpZFwiKV1bMF0sc2l6ZXM6X3Qobil9fWJyZWFrO2Nhc2VcIm9wZW5BdWN0aW9uXCI6aWYoT2JqZWN0KHRlLmIpKHQpJiZPYmplY3QoTXQubSkodCxcImt2TWFwXCIpKXJldHVybntiaWRJRDplLmFtem5paWRbMF0scHA6T2JqZWN0KFV0LmIpKGUuYW16bmJpZFswXSksYW16bnA6ZS5hbXpucFswXSxzaXplczplLmFtem5zelswXS5zcGxpdChcInhcIil9O2lmKE9iamVjdCh0ZS5jKSh0KSlyZXR1cm57YmlkSUQ6dC5hbXpuaWlkLHBwOk9iamVjdChVdC5iKSh0LmFtem5iaWQpLGFtem5wOnQuYW16bnAsc2l6ZXM6dC5hbXpuc3ouc3BsaXQoXCJ4XCIpfTticmVhaztkZWZhdWx0Ok9iamVjdChLdC5iKSh7bmFtZTpcIkludmFsaWQgQU1QIEJpZCBUeXBlOiBcIi5jb25jYXQodC5iaWRUeXBlKSxtZXNzYWdlOlwiTm8gdmFsaWQgQU1QIGJpZCB0eXBlXCJ9LFwiZ2V0QW1wQWREYXRhLWludmFsaWRCaWRUeXBlXCIpfX19Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJnZXRBbXBBZERhdGFcIil9cmV0dXJue2JpZElEOlwiRVJST1JcIixzaXplczpbXX19ZnVuY3Rpb24gVSh0LGUpe3RyeXt2YXIgbj1udWxsO2lmKHZvaWQgMCE9PWUmJk9iamVjdChNdC5tKShlLFwiYW1wRW52XCIpJiZlLmFtcEVudiYmKG49ZSxPYmplY3QoTXQubSkoZSxcImJpZFR5cGVcIikmJlwic2hhcmVkUE1QXCI9PT1lLmJpZFR5cGU/bi5pc1NoYXJlZFBNUD0hMDpuLmlzU2hhcmVkUE1QPSExLG4uZG9jdW1lbnQ9dCxuLmFtem5ob3N0PW4ua3ZNYXAuYW16bmhvc3RbMF0pLHZ0KHQpJiYoKG49dCkuYmlkVHlwZT1cIm9wZW5BdWN0aW9uXCIsbi5hbXBFbnY9ITApLG51bGw9PT1uKXJldHVybiB2b2lkIE9iamVjdChLdC5iKShuZXcgRXJyb3IoXCJJbnZhbGlkIEFNUCBwYXJhbWV0ZXJzXCIpLFwiX3JlbmRlckFtcEltcHJlc3Npb24taW52YWxpZFBhcmFtc1wiLCEwKTt2YXIgcj1xKG4pO2lmKFwiRVJST1JcIj09PXIuYmlkSUQpcmV0dXJuO2lmKHIuZG9jPW4uZG9jdW1lbnQsci5ob3N0PW4uYW16bmhvc3QucmVwbGFjZShcImh0dHA6Ly9cIixcImh0dHBzOi8vXCIpLHIuYWRJRD1cImFtem5hZFwiLmNvbmNhdChPYmplY3QoTXQuZSkoKSksci5pc0FtcD1uLmFtcEVudixyLmlzU2Y9T2JqZWN0KFh0LmMpKHdpbmRvdykscXQuYS5nZXRTdGF0ZSgpLmFheFZpZXdhYmlsaXR5RW5hYmxlZClyZXR1cm4gdm9pZCBFdChyLHIuZG9jKTtGKHIpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3JlbmRlckFtcEltcHJlc3Npb25cIil9fWZ1bmN0aW9uIE0odCl7dmFyIGU7ZnVuY3Rpb24gbihuKXt0cnl7aWYobiYmIXQuaGFzUmVuZGVyZWQmJk9iamVjdChLdC5iKSh7bmFtZTpcIlJlbmRlclRpbWVvdXRcIixtZXNzYWdlOlwicmVuZGVyQWQgd2FzIGNhbGxlZCBmcm9tIHRpbWVvdXRcIn0sXCJfX2xvYWRBZEludG9GcmllbmRseUlmcmFtZS1yZW5kZXJBZC10aW1lb3V0XCIpLG51bGw9PT1lLmNvbnRlbnREb2N1bWVudClyZXR1cm4gdm9pZCBPYmplY3QoS3QuYikoe25hbWU6XCJOb0RvY3VtZW50XCIsbWVzc2FnZTpcImlmcmFtZS5jb250ZW50RG9jdW1lbnQgd2FzIG51bGwgaW5zaWRlIHJlbmRlckFkXCJ9LFwiX19sb2FkQWRJbnRvRnJpZW5kbHlJZnJhbWUtcmVuZGVyQWQtbm9Eb2N1bWVudFwiLCEwKTtpZih0Lmhhc1JlbmRlcmVkKXJldHVybiB2b2lkIE9iamVjdChLdC5iKSh7bmFtZTpcIkR1cGVSZW5kZXJcIixtZXNzYWdlOlwiUmVuZGVyIHdhcyBjYWxsZWQgdHdpY2VcIn0sXCJfX2xvYWRBZEludG9GcmllbmRseUlmcmFtZS1yZW5kZXJBZC1yZXJlbmRlclwiLCEwKTt0Lmhhc1JlbmRlcmVkPSEwLGUuY29udGVudERvY3VtZW50Lm9wZW4oKSxlLmNvbnRlbnREb2N1bWVudC53cml0ZSh0Lmh0bWwpLGUuY29udGVudERvY3VtZW50LmNsb3NlKCl9Y2F0Y2gobil7T2JqZWN0KEt0LmIpKG4sXCJfX2xvYWRBZEludG9GcmllbmRseUlmcmFtZS1yZW5kZXJBZFwiKX19dHJ5e2lmKHZvaWQgMD09PXQuaHRtbCl0aHJvdyBuZXcgRXJyb3IoXCJObyBIVE1MIGF2YWlsYWJsZSBmb3IgYWQsIG1vc3QgbGlrZWx5IHRoZSBjcmVhdGl2ZSBoYXMgZXhwaXJlZFwiKTt0PXJlKHtoYXNSZW5kZXJlZDohMX0sdCksKGU9Tih0KSkuaWQ9XCJhcHN0YWctZi1pZnJhbWUtXCIuY29uY2F0KE9iamVjdChNdC5lKSgpKSxCKHQuZG9jLGUsKGZ1bmN0aW9uKCl7dmFyIHQ9bi5iaW5kKG51bGwsITEpO3RyeXtudWxsIT09ZS5jb250ZW50RG9jdW1lbnQmJk9iamVjdChNdC5qKShbXCJjb21wbGV0ZVwiLFwiaW50ZXJhY3RpdmVcIl0sZS5jb250ZW50RG9jdW1lbnQucmVhZHlTdGF0ZSk/dCgpOm51bGwhPT1lLmNvbnRlbnREb2N1bWVudCYmXCJ1bmluaXRpYWxpemVkXCIhPT1lLmNvbnRlbnREb2N1bWVudC5yZWFkeVN0YXRlP2UuY29udGVudERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsdCk6ZS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLHQpLHNldFRpbWVvdXQobiwxZTMsITApfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2xvYWRBZEludG9GcmllbmRseUlmcmFtZS1zZXRBdHRyaWJ1dGVzXCIpfX0pKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9sb2FkQWRJbnRvRnJpZW5kbHlJZnJhbWVcIiwhMCl9fWZ1bmN0aW9uIEYodCl7dmFyIGU9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntzdGF0ZXM6e2NzbUxvYWRlZDohMSxpZnJhbWVMb2FkZWQ6ITEsc2hvdWxkUnVuVmlld2FiaWxpdHk6ITF9fSxuPTI8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMl06dm9pZCAwO3RyeXt2YXIgcj1OKHQpO2lmKHIuaWQ9dC5hZElELHIuc2V0QXR0cmlidXRlKFwic2FuZGJveFwiLFwiYWxsb3ctZm9ybXMgYWxsb3ctcG9pbnRlci1sb2NrIGFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3ggYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25cIiksT2JqZWN0KEd0LmQpKFwiZmFrZV9iaWRzXCIpKXt2YXIgaT0nPGJvZHkgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRkY5OTAwO1wiPicuY29uY2F0KDUwPHBhcnNlSW50KHQuc2l6ZXNbMV0sMTApP1wiPGgzPmFwc3RhZyBUZXN0IENyZWF0aXZlPC9oMz5cIjpcIlwiLFwiPGg0PmFtem5paWQgLSBcIikuY29uY2F0KHQuYmlkSUQsXCIgfCBhbXpuYmlkOiBcIikuY29uY2F0KHQucHAsXCIgfCBzaXplOiBcIikuY29uY2F0KHQuc2l6ZXMuam9pbihcInhcIiksXCI8L2g0PjwvYm9keT5cIik7ci5zcmM9XCJqYXZhc2NyaXB0OidcIi5jb25jYXQoaSxcIidcIil9ZWxzZSByLnNyYz1MKHQpO3QuaXNBbXAmJnQuaXNTZiYmT2JqZWN0KFh0LmIpKHdpbmRvdykmJk9iamVjdChYdC5hKSh0LnNpemVzLHdpbmRvdyksQih0LmRvYyxyKSwoZS5pZnJhbWU9cikub25sb2FkPWZ1bmN0aW9uKCl7ZS5zdGF0ZXMuaWZyYW1lTG9hZGVkPSEwLG4mJm4oKX19Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfbG9hZEFkSW50b1VuZnJpZW5kbHlJZnJhbWVcIiwhMCl9fWZ1bmN0aW9uIEcodCl7dmFyIGU9dC5zdGF0ZXMsbj10LmRvYyxyPXQuYmlkSUQsaT10LmlmcmFtZTt0cnl7aWYoT2JqZWN0KE10LmEpKGUpKXJldHVybjt2YXIgbztlLnNob3VsZFJ1blZpZXdhYmlsaXR5PSExLE9iamVjdChNdC5tKSh3aW5kb3csXCJhbXpuY3NtXCIpP289d2luZG93LmFtem5jc206dm9pZCAwIT09biYmbnVsbCE9PW4uZGVmYXVsdFZpZXcmJk9iamVjdChNdC5tKShuLmRlZmF1bHRWaWV3LFwiYW16bmNzbVwiKSYmKG89bi5kZWZhdWx0Vmlldy5hbXpuY3NtKSx2b2lkIDAhPT1uJiZ2b2lkIDAhPT1vJiZPYmplY3QoTXQubSkobyxcInJtRFwiKSYmKG8uaG9zdD1PYmplY3QoR3QuYykoXCJob3N0XCIscXQuYS5nZXRTdGF0ZSgpLmhvc3RzLkRFRkFVTFRfQUFYX1BJWEVMX0hPU1QpLG8ucm1EKGkscixuLmRlZmF1bHRWaWV3LG4scXQuYS5nZXRTdGF0ZSgpLmNvbmZpZy5wdWJJRCkpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3RyaWdnZXJWaWV3YWJpbGl0eVwiKX19ZnVuY3Rpb24gUSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0cnl7dmFyIHI9T2JqZWN0KCR0LmYpKGUuc2xvdHMpLGk9T2JqZWN0LmtleXMociksbz1bXTtuJiYocXQuYS5kaXNwYXRjaCh7dHlwZTpcIlJFQ09SRF9BQVhfUkVRX1BST1BcIixiaWRSZXFJRDplLmJpZFJlcUlELGtleTpcInRpbWVkT3V0QXRcIix2YWx1ZTpEYXRlLm5vdygpfSkscXQuYS5nZXRTdGF0ZSgpLmV4cGVyaW1lbnRzLmNodW5rUmVxdWVzdHMmJnF0LmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfVElNRU9VVFwiLGZpZDplLmJpZFJlcUlELHRpbWVPdXQ6RGF0ZS5ub3coKX0pKSxpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKE9iamVjdChNdC5tKShyLHQpKXt2YXIgZT1yW3RdO09iamVjdCgkdC5oKShxdC5hLmdldFN0YXRlKCksWXQuYSl8fE9iamVjdChNdC5tKShlLmJpZENvbmZpZyxcImFtem5iaWRcIik/T2JqZWN0KE10Lm0pKGUuYmlkQ29uZmlnLFwiYW16bnBcIil8fChlLmJpZENvbmZpZy5hbXpucD1cIlwiKTplPU9iamVjdCgkdC5lKShlLnNsb3RJRCxRdC5yLm5vQmlkKSxvLnB1c2goZSl9fSkpLFl0LmEuaXNTdXBwb3J0ZWQmJihvPU9iamVjdCgkdC5jKShvLGUsbikpO3ZhciBjPXtmcm9tVGltZW91dDpufSxhPU9iamVjdCgkdC5oKShxdC5hLmdldFN0YXRlKCksWXQuYSk7dChvLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGE/dC5uZXdCaWRPYmplY3Q6dC5iaWRPYmplY3R9KSksYyl9Y2F0Y2gobil7T2JqZWN0KEt0LmIpKG4sXCJfYmlkQ2FsbGJhY2tIYW5kbGVyXCIsITApfX19ZnVuY3Rpb24gSCh0LGUpe3RyeXt2YXIgbjtuPXQuZGVmYXVsdFZpZXcmJnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50P3QuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50OndpbmRvdy5mcmFtZUVsZW1lbnQsZS5pbmhlcml0U2l6ZXx8KG4uc3R5bGUud2lkdGg9XCJcIi5jb25jYXQoZS5zaXplc1swXSxcInB4XCIpLG4uc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KGUuc2l6ZXNbMV0sXCJweFwiKSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfcmVzaXplSWZyYW1lXCIpfX1mdW5jdGlvbiBYKHQpe3RyeXtyZXR1cm5cIlwiLmNvbmNhdCh0WzBdLFwieFwiKS5jb25jYXQodFsxXSl9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiX3NpemVBcnJheVRvU3JpbmdcIiksXCJ4XCJ9fWZ1bmN0aW9uIFYodCl7dHJ5e3JldHVybiAxPT09dC5sZW5ndGg/WCh0WzBdKTpYKHRbTWF0aC5mbG9vcih0Lmxlbmd0aCpNYXRoLnJhbmRvbSgpKV0pfWNhdGNoKHQpe3JldHVybiBPYmplY3QoS3QuYikodCxcIl9waWNrUmFuZG9tU2l6ZUZvck1vY2tCaWRcIiwhMCksXCJcIn19ZnVuY3Rpb24gSyh0LGUpe3RyeXt2YXIgbixyPU9iamVjdChHdC5jKShcImhvc3RcIixxdC5hLmdldFN0YXRlKCkuaG9zdHMuREVGQVVMVF9BQVhfQklEX0hPU1QpLGk9T2JqZWN0KFV0LmYpKHdpbmRvdyksbz10LmJpZFJlcUlELGM9T2JqZWN0KE10LmgpKHdpbmRvdyksYT1PYmplY3QoR3QuYykoXCJ0ZXN0QmlkVGltZW91dFwiLDIwMCk7cXQuYS5kaXNwYXRjaCh7dHlwZTpcIlJFQ09SRF9BQVhfUkVRVUVTVFwiLGRhdGE6e2JpZENvbmZpZzp0LHRpbWVvdXQ6YSxiaWRSZXFJRDpvLHdzOmMsdXJsOmkscnFUczpEYXRlLm5vdygpfX0pLG49dC5zbG90cy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlLG49Vih0LnNpemVzKSxyPVwidGVzdERlYWxcIi5jb25jYXQoT2JqZWN0KE10LmUpKCksXCJfXCIpLmNvbmNhdChuKSxpPVwidGVzdERlYWxJaS1cIi5jb25jYXQoT2JqZWN0KE10LmUpKCkpLG89Vih0LnNpemVzKSxjPShpZShlPXtzbG90SUQ6dC5zbG90SUQsY3JpZDpcIlwiLmNvbmNhdChRdC5tLmNyaWQsXCItXCIpLmNvbmNhdChPYmplY3QoTXQuZSkoKSksc2l6ZTpvLGFtem5paWQ6XCJcIi5jb25jYXQoUXQubS5hbXpuaWlkLFwiLVwiKS5jb25jYXQoT2JqZWN0KE10LmUpKCkpLGFtem5iaWQ6UXQubS5hbXpuYmlkLGFtem5wOlF0Lm0uYW16bnAsYW16bnN6Om8sYW16bmlpZF9zcDpcIlwiLmNvbmNhdChRdC5tLmFtem5paWQsXCItXCIpLmNvbmNhdChPYmplY3QoTXQuZSkoKSksYW16bmJpZF9zcDpcIlwiLmNvbmNhdChRdC5tLmFtem5iaWQsXCJTUFwiKSxhbXpucF9zcDpcIlwiLmNvbmNhdChRdC5tLmFtem5wLFwiU1BcIiksYW16bnN6X3NwOlYodC5zaXplcyksYW16bmRlYWxzOltyXX0sXCJcIi5jb25jYXQocixcImFtem5paWRcIiksaSksaWUoZSxcIm1lZGlhVHlwZVwiLFwiZFwiKSxpZShlLFwibWV0YVwiLFtcInNsb3RJRFwiLFwibWVkaWFUeXBlXCIsXCJzaXplXCJdKSxpZShlLFwidGFyZ2V0aW5nXCIsW1wiYW16bmlpZFwiLFwiYW16bmJpZFwiLFwiYW16bnBcIixcImFtem5zelwiLFwiYW16bmlpZF9zcFwiLFwiYW16bmJpZF9zcFwiLFwiYW16bnBfc3BcIixcImFtem5zel9zcFwiLFwiYW16bmRlYWxfc3BcIixcImFtem5kZWFsc1wiLFwiXCIuY29uY2F0KHIsXCJhbXpuaWlkXCIpXSksZSk7XCJ2aWRlb1wiPT09dC5tZWRpYVR5cGUmJihjLm1lZGlhVHlwZT1cInZpZGVvXCIsYy5hbXpuYmlkPVwidl9cIi5jb25jYXQoYy5hbXpuYmlkKSk7dmFyIGE9bmV3ICR0LmEoYyk7cmV0dXJuIE9iamVjdCgkdC5oKShxdC5hLmdldFN0YXRlKCksWXQuYSk/YS5uZXdCaWRPYmplY3Q6YS5iaWRPYmplY3R9KSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt3aW5kb3cuYXBzdGFnLmJpZHMoe3Nsb3RzOm4saG9zdDpyLHN0YXR1czpcIm9rXCIsY2I6b30pLGUoITApfSksYSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZG9Nb2NrQmlkXCIsITApfX1mdW5jdGlvbiBKKHQpe3RyeXt2YXIgZT1xdC5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZFJlcUlEPT09dC5jYn0pKVswXTtpZihlJiZlLmJpZENvbmZpZyYmZS5iaWRDb25maWcuc2xvdHMpe3ZhciBuPWUuYmlkQ29uZmlnLnNsb3RzLmZpbHRlcihGdC5kKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsb3RJRH0pKSxyPU9iamVjdChNdC5tKSh0LFwic2xvdHNcIik/dC5zbG90cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsb3RJRH0pKTpbXSxpPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hT2JqZWN0KE10LmopKHIsdCl9KSk7cXQuYS5kaXNwYXRjaCh7dHlwZTpcIk5PX0JJRF9PTl9BRFNFUlZFUl9TTE9UU1wiLHNsb3RJRHM6aX0pLFl0LmEuaGFzQWRTZXJ2ZXJPYmplY3RMb2FkZWQoKT8kKCk6WXQuYS5pc0NvbW1hbmRRdWV1ZURlZmluZWQoKSYmWXQuYS5jbWRRdWV1ZVB1c2goKGZ1bmN0aW9uKCl7JCgpfSkpfX1jYXRjaChlKXtPYmplY3QoS3QuYikoZSxcIl9kZXRlcm1pbmVOb0JpZFN0YXRlRm9yQWRTZXJ2ZXJPYmplY3RcIil9fWZ1bmN0aW9uIFcodCl7cmV0dXJuIE9iamVjdChNdC5qKShxdC5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LnJlc1RzfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmlkQ29uZmlnLnNsb3RzfSkpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSl9KSxbXSkubWFwKEZ0LmMpLHQpfWZ1bmN0aW9uIFkodCl7dHJ5e3ZhciBlPXQuZ2V0VGFyZ2V0aW5nKFwiYW16bmJpZFwiKTtyZXR1cm4gMDxlLmxlbmd0aCYmMjxlWzBdLmxlbmd0aH1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfaXNSZWFsQW16bmJpZFRhcmdldGluZ1NldE9uU2xvdFwiKSwxfX1mdW5jdGlvbiAkKCl7dHJ5e1l0LmEuaGFzQWRTZXJ2ZXJPYmplY3RMb2FkZWQoKSYmXCIxXCI9PT1ZdC5hLmdldFRhcmdldGluZyhcImFtem5iaWRcIilbMF0mJnR0KCksT2JqZWN0KEZ0LmIpKFl0LmEpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyFPYmplY3QoTXQuaikocXQuYS5nZXRTdGF0ZSgpLmRpc3BsYXlBZFNlcnZlci5ub0JpZFNsb3RJRHMsdC5zbG90SUQpfHxXKHQuc2xvdElEKXx8WSh0KXx8XCIyXCI9PT10LmdldFRhcmdldGluZyhcImFtem5iaWRcIilbMF18fFooXCJub0JpZFwiLHQpfSkpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2FwcGx5Tm9CaWRGcm9tQUFYU3RhdGVcIil9fWZ1bmN0aW9uIFoodCxlKXtRdC5zLmZvckVhY2goKGZ1bmN0aW9uKG4pe3JldHVybiBlLnNldFRhcmdldGluZyhuLFF0LnJbdF0pfSkpfWZ1bmN0aW9uIHR0KCl7UXQucy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gWXQuYS5jbGVhclRhcmdldGluZyh0KX0pKX1mdW5jdGlvbiBldCh0KXt0cnl7dmFyIGU9e190eXBlOlwiZHVwZVBpeGVsXCIsZGQ6RGF0ZS5ub3coKS10LnRpbWluZy5yZW5kZXJUaW1lfTtPYmplY3QoVnQuYSkodC5iaWRDb25maWcuYW16bmlpZCxlKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9zZW5kRHVwZUJpZFBpeGVsXCIpfX1mdW5jdGlvbiBudCgpe3RyeXt2YXIgdD1PYmplY3QoSHQuYykod2luZG93LG5ldyBSZWdFeHAoXCJhYXgyL2Fwc3RhZy5qc1wiKSk7aWYobnVsbCE9PXQpe3ZhciBlPXtfdHlwZTpcImxpYkxhdGVuY3lcIixwaWQ6JHQuYixuczpyLGZzOk9iamVjdChIdC5hKSh0LFwiZmV0Y2hTdGFydFwiKSxyZTpPYmplY3QoSHQuYSkodCxcInJlc3BvbnNlRW5kXCIpfSxuPU9iamVjdChIdC5mKSh0KTtudWxsIT09biYmKGUuYz1uPzE6MCksc2V0VGltZW91dChWdC5iLDFlMyxlKX19Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfc2VuZEluaXRMYXRlbmN5UGl4ZWxcIil9fSFmdW5jdGlvbigpe2lmKE9iamVjdChNdC5pKSgpKXt2YXIgdD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShRdC5jKTtpZih0KXt2YXIgZT1KU09OLnBhcnNlKHQpO251bGwhPT1lJiZxdC5hLmRpc3BhdGNoKHt0eXBlOlwiU0VUX0NGR1wiLGNmZzplfSl9fX0oKSxzPXtyZW5kZXJUaW1lczp7fX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsKGZ1bmN0aW9uKHQpe2lmKE9iamVjdChNdC5sKSh0LmRhdGEpJiZPYmplY3QoTXQubSkodC5kYXRhLFwiY29uZmlhbnREYXRhXCIpKXt2YXIgZT10LmRhdGEuY29uZmlhbnREYXRhLG49ZS5pZDtpZihPYmplY3QoTXQubSkoZSxcInJlbmRlclN0YXJ0XCIpfHxPYmplY3QoTXQubSkoZSxcInJlbmRlckVuZFwiKSl7dmFyIHI9ZS5yZW5kZXJTdGFydCxpPWUucmVuZGVyRW5kO2lmKHIpcy5yZW5kZXJUaW1lc1tuXT1yO2Vsc2UgaWYoaSYmMCE9PXMucmVuZGVyVGltZXNbbl0pe3ZhciBvPWktcy5yZW5kZXJUaW1lc1tuXSxjPXtfdHlwZTpcImlmcmFtZVJlbmRlclwiLGM6XCJkdGJcIixwaWQ6JHQuYixjcnQ6b307T2JqZWN0KFZ0LmIpKGMpfX1lbHNle3ZhciBhPXQuZGF0YS5jb25maWFudERhdGEsdT17X3R5cGU6XCJjb25maWFudEJsb2NrXCIsYzpcImR0YlwiLHRwYnI6MSxwaWQ6JHQuYixiaWQ6YS5iaWQsYnQ6YS5idCxpc2I6YS5pc2IscHJvcGlkOmEucHJvcGlkLHRhZ2lkOmEudGFnaWQsaW1wZGF0YTpKU09OLnN0cmluZ2lmeShhLmltcGRhdGEpfTtPYmplY3QoVnQuYikodSl9fX0pLCEwKTt2YXIgcnQ9MCxpdDtmdW5jdGlvbiBvdCgpe3RyeXtpZighT2JqZWN0KE10Lm0pKHdpbmRvdyxcImdvb2dsZXRhZ1wiKXx8IU9iamVjdChNdC5tKSh3aW5kb3cuZ29vZ2xldGFnLFwiY21kXCIpKXJldHVybiB2b2lkKCsrcnQ8NSYmc2V0VGltZW91dChvdCwxMDApKTsobmV3IFd0LmEpLmNtZFF1ZXVlUHVzaCgoZnVuY3Rpb24oKXt0cnl7d2luZG93Lmdvb2dsZXRhZy5wdWJhZHMoKS5hZGRFdmVudExpc3RlbmVyKFwic2xvdFJlcXVlc3RlZFwiLChmdW5jdGlvbih0KXt0cnl7dmFyIGU9dC5zbG90O3F0LmEuZGlzcGF0Y2goe3R5cGU6XCJMT0dfR0FNX0VWRU5UXCIsZXZlbnQ6cmUoe30sbmV3IFd0LmIoZSkuc2xvdENvbmZpZyx7dHM6RGF0ZS5ub3coKSx0YXJnZXRpbmc6ZS5nZXRUYXJnZXRpbmdNYXAoKX0pfSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfaW5pdGlhbGl6ZVNsb3RSZXF1ZXN0ZWRFdmVudExpc3RlbmVyLWNtZFF1ZXVlLWxpc3RlbmVyXCIpfX0pKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9pbml0aWFsaXplU2xvdFJlcXVlc3RlZEV2ZW50TGlzdGVuZXItY21kUXVldWVcIil9fSkpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2luaXRpYWxpemVTbG90UmVxdWVzdGVkRXZlbnRMaXN0ZW5lclwiKX19ZnVuY3Rpb24gY3QodCl7dHJ5e3ZhciBlPXQuQUFYUmVxcy5zbGljZSh0LmdhbVNsb3RSZW5kZXJQaXhlbC5hYXhSZXFPZmZzZXQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZS5iaWRDb25maWcuc2xvdHMpfSksW10pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHJlKHt9LHQse3R5cGU6XCJhXCJ9KX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVyblwidmlkZW9cIiE9PXQubWVkaWFUeXBlfSkpLG49dC5nYW1TbG90RmV0Y2hMb2cuc2xpY2UodC5nYW1TbG90UmVuZGVyUGl4ZWwuZ2FtU2xvdEZldGNoTG9nT2Zmc2V0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiByZSh7fSx0LHt0eXBlOlwiZ1wifSl9KSkscj1bXS5jb25jYXQobmUoZSksbmUobikpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dFtlLnNsb3RJRF0mJih0W2Uuc2xvdElEXT17c2Q6ZS5zbG90SUQsYTp7YzowfSxnOntjOjB9fSksdFtlLnNsb3RJRF1bZS50eXBlXS5jKyssdFtlLnNsb3RJRF1bZS50eXBlXS5zPWUuc2l6ZXMsdFtlLnNsb3RJRF1bZS50eXBlXS5zbj1lLnNsb3ROYW1lfHxcIlwiLHR9KSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKHIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHJbdF19KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuYS5jfHwwIT09dC5nLmN9KSl9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiZ2V0U2xvdEZldGNoQ291bnRzXCIpLFtdfX1mdW5jdGlvbiBhdCgpe3RyeXt2YXIgdD1xdC5hLmdldFN0YXRlKCksZT1jdCh0KTswPE9iamVjdC5rZXlzKGUpLmxlbmd0aCYmKE9iamVjdChNdC5jKShlLDUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXtzbG90czplLHBpZDokdC5iLHVybDpPYmplY3QoVXQuZikod2luZG93KS5zcGxpdChcIj9cIilbMF0sd3M6T2JqZWN0KE10LmgpKHdpbmRvdykscHViaWQ6dC5jb25maWcucHViSUQsX3R5cGU6XCJzbG90UmVuZGVyc1wifTtPYmplY3QoVnQuYikobil9KSkscXQuYS5kaXNwYXRjaCh7dHlwZTpcIlVQREFURV9SRU5ERVJfT0ZGU0VUU1wiLG9mZnNldHM6e2FheFJlcU9mZnNldDp0LkFBWFJlcXMubGVuZ3RoLGdhbVNsb3RGZXRjaExvZ09mZnNldDp0LmdhbVNsb3RGZXRjaExvZy5sZW5ndGh9fSkpfWNhdGNoKGUpe09iamVjdChLdC5iKShlLFwic2VuZERpc3BsYXlBZFNlcnZlclJlbmRlclBpeGVsXCIpfX1mdW5jdGlvbiB1dCgpe3NldEludGVydmFsKChmdW5jdGlvbigpe2F0KCl9KSw1ZTMpfWZ1bmN0aW9uIHN0KCl7dHJ5e3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dHJ5e3ZhciB0PWJ0KCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hT2JqZWN0KE10Lm0pKHF0LmEuZ2V0U3RhdGUoKS5ic1BpeGVscyx0LmlpZCl8fHQuc3RhdGUhPT1xdC5hLmdldFN0YXRlKCkuYnNQaXhlbHNbdC5paWRdfSkpO3QmJnQubGVuZ3RoJiYwPHQubGVuZ3RoJiYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KFZ0LmEpKHQuaWlkLGZ0KHQpKX0pKSxkdCh0KSk7dmFyIGU9e2ZldGNoU3RhcnQ6XCJhXCIsZG9tYWluTG9va3VwU3RhcnQ6XCJiXCIsZG9tYWluTG9va3VwRW5kOlwiY1wiLGNvbm5lY3RTdGFydDpcImRcIixzZWN1cmVDb25uZWN0aW9uU3RhcnQ6XCJlXCIsY29ubmVjdEVuZDpcImZcIixyZXF1ZXN0U3RhcnQ6XCJnXCIscmVzcG9uc2VTdGFydDpcImhcIixyZXNwb25zZUVuZDpcImlcIn07T2JqZWN0LmtleXMocXQuYS5nZXRTdGF0ZSgpLnNsb3RCaWRzKS5mb3JFYWNoKChmdW5jdGlvbih0KXtxdC5hLmdldFN0YXRlKCkuc2xvdEJpZHNbdF0uZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoT2JqZWN0KE10Lm0pKG4uYmlkQ29uZmlnLFwiYW16bmlpZFwiKSYmIW4ucGl4ZWxTZW50KXt2YXIgcj1xdC5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJpZFJlcUlEPT09bi5iaWRSZXFJRH0pKVswXTtpZihcIm9iamVjdFwiPT09b2UocikmJm51bGwhPT1yKXt2YXIgaT1yLnJxVHMtT2JqZWN0KEh0LmQpKCksbz17cGlkOiR0LmIsbnM6ci5iaWRDb25maWcuc2xvdHMubGVuZ3RoLGZpZDpuLmJpZFJlcUlELGZicnE6ci5ycVRzLF90eXBlOlwibGF0ZW5jeUJkXCJ9O1wib2JqZWN0XCI9PT1vZShyLnBlcmYpJiZudWxsIT09ci5wZXJmJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QoTXQubSkocixcInBlcmZcIikmJjAhPT1PYmplY3QoSHQuYSkoci5wZXJmLHQpJiYob1tlW3RdXT1PYmplY3QoSHQuYSkoci5wZXJmLHQpLWkpfSkpLG8uaj1yLnJlc1RzLXIucnFUcyxPYmplY3QoVnQuYSkobi5iaWRDb25maWcuYW16bmlpZCxvKSxxdC5hLmRpc3BhdGNoKHt0eXBlOlwiVVBEQVRFX0JJRF9JTkZPX1BST1BcIixzbG90SUQ6dCxpaWQ6bi5iaWRDb25maWcuYW16bmlpZCxrZXk6XCJwaXhlbFNlbnRcIix2YWx1ZTohMH0pfX19KSl9KSksc3QoKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9zZW5kQmlkc1NldE9uREZQUGl4ZWwtdGltZW91dFwiKX19KSw1ZTMpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX3NlbmRCaWRzU2V0T25ERlBQaXhlbFwiKX19ZnVuY3Rpb24gZHQodCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gcXQuYS5kaXNwYXRjaCh7dHlwZTpcIlJFQ09SRF9CSURfSU5GT19TRU5UXCIsYmlkSW5mbzp0fSl9KSl9ZnVuY3Rpb24gZnQodCl7dHJ5e3ZhciBlPWx0KHQuZmlkKSxuPXtzdGF0dXM6dC5zdGF0ZSxwdWJpZDpxdC5hLmdldFN0YXRlKCkuY29uZmlnLnB1YklELF90eXBlOlwiYmlkU2V0UGl4ZWxcIix0b2E6T2JqZWN0KE10Lm0pKGUucmVxLFwidGltZWRPdXRBdFwiKT9lLnJlcS50aW1lZE91dEF0OjAsZmJycTplLnJlcS5ycVRzLHB0bzplLnJlcS50aW1lb3V0LG5zOmUucmVxLmJpZENvbmZpZy5zbG90cy5sZW5ndGgsYmxhOmUucmVxLnJlc1RzLWUucmVxLnJxVHMscmVxaW5kZXg6ZS5pbmRleCxmaWQ6dC5maWQsdGJzOjB9O3F0LmEuZ2V0U3RhdGUoKS5jZmcuQ0hVTktfQklEX1JFUVVFU1RTX1BST1BPUlRJT04mJihuLmVpZD1xdC5hLmdldFN0YXRlKCkuZXhwZXJpbWVudHMuY2h1bmtSZXF1ZXN0cz8yOjEsbi5mYmluZGV4PWUuZmJJbmRleCxuLmZibnM9cXQuYS5nZXRTdGF0ZSgpLmJpZENvbmZpZ3NbcGFyc2VJbnQodC5maWQuc3BsaXQoXCItXCIpWzBdLDEwKV0uc2xvdHMubGVuZ3RoKTt2YXIgcj1xdC5hLmdldFN0YXRlKCkuZXhwZXJpbWVudHM7T2JqZWN0KE10Lm0pKHIsXCJzaG91bGRVc2VUZXN0QmlkRW5kcG9pbnRcIikmJihuLnRicz1yLnNob3VsZFVzZVRlc3RCaWRFbmRwb2ludD8yOjEpLHQuZGVsdGEmJihuLmRlbGF5PXQuZGVsdGEpO3ZhciBpPWUucmVxLnBlcmY7cmV0dXJuIHZvaWQgMCE9PWkmJihuLnVsPWUucmVxLnVybExlbmd0aCxuLmVzPU9iamVjdChIdC5hKShpLFwiZW5jb2RlZEJvZHlTaXplXCIpKSxufWNhdGNoKHQpe3JldHVybiBPYmplY3QoS3QuYikodCxcIl9tYXBCaWRJbmZvVG9QaXhlbFwiKSx7X3R5cGU6XCJiaWRTZXRQaXhlbFwiLHN0YXR1czotMSxwdWJpZDpcIlwiLHRvYTowLGZicnE6MCxwdG86MCxuczowLGJsYTowLHJlcWluZGV4OjAsZmlkOlwiXCIsdGJzOjB9fX1mdW5jdGlvbiBsdCh0KXt2YXIgZT1xdC5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZFJlcUlEPT09dH0pKVswXSxuPXF0LmEuZ2V0U3RhdGUoKS5BQVhSZXFzLmluZGV4T2YoZSkrMSxyPXtyZXE6ZSxpbmRleDpuLGZiSW5kZXg6bn07cmV0dXJuIHIuaW5kZXg9cXQuYS5nZXRTdGF0ZSgpLkFBWFJlcXMuaW5kZXhPZihyLnJlcSkrMSxxdC5hLmdldFN0YXRlKCkuZXhwZXJpbWVudHMuY2h1bmtSZXF1ZXN0cyYmKHIuZmJJbmRleD1xdC5hLmdldFN0YXRlKCkuQUFYUmVxcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xPT09dC5iaWRSZXFJRC5pbmRleE9mKFwiLVwiKXx8XCIwXCI9PT10LmJpZFJlcUlELnNwbGl0KFwiLVwiKVsxXX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJpZFJlcUlELnNwbGl0KFwiLVwiKVswXX0pKS5pbmRleE9mKHQuc3BsaXQoXCItXCIpWzBdKSsxKSxyfWZ1bmN0aW9uIGJ0KCl7dHJ5e3ZhciB0PXl0KCksZT1bXTtyZXR1cm4gbnVsbD09PXR8fE9iamVjdC5rZXlzKHF0LmEuZ2V0U3RhdGUoKS5zbG90QmlkcykuZm9yRWFjaCgoZnVuY3Rpb24obil7XCJ2aWRlb1wiIT09cXQuYS5nZXRTdGF0ZSgpLnNsb3RCaWRzW25dWzBdLmJpZENvbmZpZy5tZWRpYVR5cGUmJnF0LmEuZ2V0U3RhdGUoKS5zbG90Qmlkc1tuXS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoTXQubSkodC5iaWRDb25maWcsXCJhbXpuaWlkXCIpfSkpLmZvckVhY2goKGZ1bmN0aW9uKHIpe2lmKG51bGwhPT10KXt2YXIgaT17c3RhdGU6LTEsc2xvdElEOm4saWlkOnIuYmlkQ29uZmlnLmFtem5paWQsZmlkOnIuYmlkUmVxSUR9LG89W10sYz1bXTtpZihuIGluIHQmJihvPXRbbl0uZmV0Y2hlZEF0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuQUFYUmVxSW5mbyYmdC5BQVhSZXFJbmZvLmJpZFJlcUlEPT09ci5iaWRSZXFJRH0pKSxjPXRbbl0udGFyZ2V0ZWRBdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldGluZz09PXIuYmlkQ29uZmlnLmFtem5paWR9KSkpLDA8by5sZW5ndGg/MDxvLmxlbmd0aCYmYy5sZW5ndGg+PW8ubGVuZ3RoJiZvLnNsaWNlKG8ubGVuZ3RoLTEpWzBdLnRzPmMuc2xpY2Uoby5sZW5ndGgtMSlbMF0udHM/MT09PXRbbl0uZmV0Y2hXaXRoSUlELmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1yLmJpZENvbmZpZy5hbXpuaWlkfSkpLmxlbmd0aD9pLnN0YXRlPTE6aS5zdGF0ZT00Ok9iamVjdChNdC5qKSh0W25dLmZldGNoV2l0aElJRCxyLmJpZENvbmZpZy5hbXpuaWlkKT9pLnN0YXRlPTM6aS5zdGF0ZT0yOmkuc3RhdGU9MCwxPT09aS5zdGF0ZXx8Mj09PWkuc3RhdGUpe3ZhciBhPXF0LmEuZ2V0U3RhdGUoKS5BQVhSZXFzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmlkUmVxSUQ9PT1yLmJpZFJlcUlEfSkpWzBdLnJlc1RzLHU9cHQoYSx0W25dLmZldGNoZWRBdCwyPT09aS5zdGF0ZSk7dSYmT2JqZWN0KE10Lm0pKHUsXCJ0c1wiKSYmKGkuZGVsdGE9YS11LnRzKX1lLnB1c2goaSl9fSkpfSkpLGV9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiX2dldEJpZFNldEluZm9cIiksW119fWZ1bmN0aW9uIHB0KHQsZSxuKXt2YXIgcj1lLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9dC1lLnRzO3JldHVybiFuJiZyPD0wPy1yOm4mJjA8PXI/cjpudWxsfSkpO3JldHVybiBlW2d0KHIpXX1mdW5jdGlvbiBndCh0KXtmb3IodmFyIGU9LTEsbj0tMSxyPTA7cjx0Lmxlbmd0aDtyKyspbnVsbCE9PXRbcl0mJigtMT09PW58fHRbcl08ZSkmJihlPXRbbj1yXSk7cmV0dXJuIG59ZnVuY3Rpb24gbXQodCxlKXtyZXR1cm4gcXQuYS5nZXRTdGF0ZSgpLkFBWFJlcXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KE10LmopKHQuYmlkQ29uZmlnLnNsb3RzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xvdElEfSkpLGUpfSkpW3RdfWZ1bmN0aW9uIHl0KCl7dHJ5e2lmKCFZdC5hLmhhc0FkU2VydmVyT2JqZWN0TG9hZGVkKCkpcmV0dXJuIG51bGw7dmFyIHQ9cXQuYS5nZXRTdGF0ZSgpLmdhbVNsb3RGZXRjaExvZy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7T2JqZWN0KE10Lm0pKHQsZS5zbG90SUQpfHwodFtlLnNsb3RJRF09e2ZldGNoZWRBdDpbXSx0YXJnZXRlZEF0OltdfSk7dmFyIG49dFtlLnNsb3RJRF07cmV0dXJuIG4uZmV0Y2hlZEF0LnB1c2goe3RzOmUudHMsQUFYUmVxSW5mbzptdChuLmZldGNoZWRBdC5sZW5ndGgsZS5zbG90SUQpfSksT2JqZWN0KE10Lm0pKGUudGFyZ2V0aW5nLFwiYW16bmlpZFwiKSYmMDxlLnRhcmdldGluZy5hbXpuaWlkLmxlbmd0aD9uLnRhcmdldGVkQXQucHVzaCh7dHM6ZS50cy0xLHRhcmdldGluZzplLnRhcmdldGluZy5hbXpuaWlkWzBdfSk6bi50YXJnZXRlZEF0LnB1c2goe3RzOmUudHMtMSx0YXJnZXRpbmc6XCJcIn0pLHR9KSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKE9iamVjdChNdC5tKSh0LGUpKXt2YXIgbj10W2VdO24uZmV0Y2hXaXRoSUlEPW4uZmV0Y2hlZEF0Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9cHQodC50cyxuLnRhcmdldGVkQXQsITApO3JldHVybiBlP2UudGFyZ2V0aW5nOjB9KSksdFtlXT1ufX0pKSx0fWNhdGNoKHQpe3JldHVybiBPYmplY3QoS3QuYikodCxcIl9nZXRERlBTbG90RmV0Y2hlc1wiKSxudWxsfX1mdW5jdGlvbiBodCgpe3RyeXtZdC5hLmhhc0FkU2VydmVyT2JqZWN0TG9hZGVkKCk/WihcIm5vUmVxdWVzdFwiLFl0LmEpOll0LmEuaXNDb21tYW5kUXVldWVEZWZpbmVkKCkmJll0LmEuY21kUXVldWVQdXNoKChmdW5jdGlvbigpe1ooXCJub1JlcXVlc3RcIixZdC5hKX0pKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9hcHBseU5vUmVxdWVzdFRvQUFYU3RhdGVcIil9fWZ1bmN0aW9uIE90KHQpe3RyeXtZdC5hLmlzQ29tbWFuZFF1ZXVlRGVmaW5lZCgpJiYocXQuYS5kaXNwYXRjaCh7dHlwZTpcIlJFUVVFU1RFRF9CSURfRk9SX0FEU0VSVkVSX1NMT1RTXCIsc2xvdElEczp0fSksWXQuYS5jbWRRdWV1ZVB1c2goKGZ1bmN0aW9uKCl7dHJ5e3ZhciBlPU9iamVjdChGdC5iKShZdC5hKTtcIjBcIj09PVl0LmEuZ2V0VGFyZ2V0aW5nKFwiYW16bmJpZFwiKVswXSYmdHQoKSxfKHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dH0pKSxlLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xvdElEfSkpKT9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdChNdC5qKSh0LGUuc2xvdElEKSYmIVkoZSkmJlooXCJiaWRJbkZsaWdodFwiLGUpfSkpOll0LmEuY21kUXVldWVQdXNoKChmdW5jdGlvbigpe3RyeXtaKFwiYmlkSW5GbGlnaHRcIixZdC5hKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9zZXRSZXF1ZXN0VG9BQVhJbkZsaWdodFN0YXRlLWNtZFF1ZXVlLWNtZFF1ZXVlXCIpfX0pKX1jYXRjaChlKXtPYmplY3QoS3QuYikoZSxcIl9zZXRSZXF1ZXN0VG9BQVhJbkZsaWdodFN0YXRlLWNtZFF1ZXVlXCIpfX0pKSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfc2V0UmVxdWVzdFRvQUFYSW5GbGlnaHRTdGF0ZVwiKX19ZnVuY3Rpb24ganQoKXt0cnl7cmV0dXJuIE9iamVjdChNdC5tKSh3aW5kb3csXCJBTVBfQ09OVEVYVF9EQVRBXCIpJiZPYmplY3QoTXQubSkod2luZG93LkFNUF9DT05URVhUX0RBVEEsXCJ0YWdOYW1lXCIpJiZcIkFNUC1BRFwiPT09d2luZG93LkFNUF9DT05URVhUX0RBVEEudGFnTmFtZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBPYmplY3QoS3QuYikodCxcIl9pc0luQW1wQWRcIil9fWZ1bmN0aW9uIHZ0KHQpe3RyeXtyZXR1cm4gT2JqZWN0KE10Lm0pKHQsXCJ0eXBlXCIpJiYhKHQgaW5zdGFuY2VvZiBEb2N1bWVudCkmJlwiYW1wXCI9PT10LnR5cGV9Y2F0Y2godCl7cmV0dXJuIE9iamVjdChLdC5iKSh0LFwiX2lzTGVnYWN5QW1wQ3JlYXRpdmVcIiksITF9fWZ1bmN0aW9uIFN0KHQsZSl7dHJ5e3JldHVybiB2b2lkIDAhPT1lJiZPYmplY3QoTXQubSkoZSxcImFtcEVudlwiKSYmZS5hbXBFbnZ8fHZ0KHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIE9iamVjdChLdC5iKSh0LFwiX2lzQW1wSW1wcmVzc2lvblwiKX19ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHQuc3BsaXQoXCJ4XCIpfWZ1bmN0aW9uIHd0KHQsZSxuKXt0cnl7T2JqZWN0KFZ0LmQpKCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfcmVuZGVySW1wLXBpeGVsc1wiKX10cnl7aWYoU3QodCxuKSYmanQoKSlyZXR1cm4gdm9pZCBVKHQsbik7MSE9PWFyZ3VtZW50cy5sZW5ndGh8fE9iamVjdCh0ZS5hKSh0KXx8T2JqZWN0KEt0LmIpKHttZXNzYWdlOkpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHQpKSxuYW1lOlwiSW5jb3JyZWN0SnNvbnBcIn0sXCJfcmVuZGVySW1wLUluY29ycmVjdEFyZ0pzb25QXCIpO3ZhciByPSExO1wic3RyaW5nXCI9PXR5cGVvZiBlJiYwPT09ZS5pbmRleE9mKFwic3B8XCIpJiYoZT1lLnN1YnN0cmluZygzKSxyPSEwKTt2YXIgaSxvPWV8fHQuYW16bmlpZCxjPUUobyxyKSxhPWMuc2xvdEJpZCx1PWMuZGVhbElkO2lmKGEpe2lmKGk9dSYmMTw9dS5sZW5ndGg/X3QoXCJzcFwiPT09dT9hLmJpZENvbmZpZy5hbXpuc3pfc3A6SShvLGEsdSkpOl90KGEuYmlkQ29uZmlnLmFtem5zeiksMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgTSh7ZG9jOmEuZG9jLGJpZElEOmEuYmlkQ29uZmlnLmFtem5paWQsc2l6ZXM6aSxodG1sOnQuaHRtbCxpbmhlcml0U2l6ZTphLmluaGVyaXRTaXplfHwhMX0pO2EuYmlkU3RhdGU9PT1RdC5iLnJlbmRlcmVkJiZldChhKSxxdC5hLmRpc3BhdGNoKHt0eXBlOlwiQklEX1NUQVRFX0NIQU5HRVwiLHNsb3RJRDphLnNsb3RJRCxfdGFyZ2V0aW5nU2V0SUQ6YS5fdGFyZ2V0aW5nU2V0SUQsYmlkU3RhdGU6UXQuYi5yZW5kZXJlZCx0czpEYXRlLm5vdygpfSk7dmFyIHM9YS5ob3N0LGQ9XCJhbXpuYWRcIi5jb25jYXQoTWF0aC5yb3VuZCgxZTYqTWF0aC5yYW5kb20oKSkpLGw9e2JpZElEOm8sZG9jOnQscHA6RHQoXCJhbXpuYmlkXCIsYSx1KSxob3N0OnMsYWRJRDpkLHNpemVzOmksYW16bnA6RHQoXCJhbXpucFwiLGEsdSksY3JJRDpEdChcImNyaWRcIixhLHUpLGZpZjohMSxkZWFsSWQ6dSxpc1NoYXJlZFBNUDpyLGNmZTphLmNmZSxpbmhlcml0U2l6ZTpPYmplY3QoTXQubCkobikmJk9iamVjdChNdC5tKShuLFwiaW5oZXJpdFNpemVcIikmJiEwPT09bi5pbmhlcml0U2l6ZX07XCIxXCI9PT1hLmJpZENvbmZpZy5maWY/KGwuZmlmPSEwLHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJVUERBVEVfQklEX0lORk9fUFJPUFwiLHNsb3RJRDphLnNsb3RJRCxpaWQ6ZSxrZXk6XCJkb2NcIix2YWx1ZTp0fSkscXQuYS5kaXNwYXRjaCh7dHlwZTpcIlVQREFURV9CSURfSU5GT19QUk9QXCIsc2xvdElEOmEuc2xvdElELGlpZDplLGtleTpcImluaGVyaXRTaXplXCIsdmFsdWU6bC5pbmhlcml0U2l6ZX0pLE9iamVjdChKdC5iKShMKGwpLChmdW5jdGlvbigpe30pLGRvY3VtZW50LChmdW5jdGlvbigpe3JldHVybiBPYmplY3QoS3QuYikobmV3IEVycm9yKFwiRXJyb3IgTG9hZGluZyBKU09OUCBSZW5kZXIgQ2FsbGJhY2tcIiksXCJyZW5kZXJJbXAtZmlmLWNhbGxiYWNrLWxvYWRcIiwhMCl9KSkpOnF0LmEuZ2V0U3RhdGUoKS5hYXhWaWV3YWJpbGl0eUVuYWJsZWQ/RXQobCx0KTpGKGwpLEgodCxsKX1lbHNlIE9iamVjdChLdC5iKShuZXcgRXJyb3IoXCJJbnZhbGlkIGJpZCBJRCB0cmllZCB0byByZW5kZXJcIiksXCJfcmVuZGVySW1wLWludmFsaWRJZFwiLCEwKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9yZW5kZXJJbXBcIiwhMCl9fWZ1bmN0aW9uIER0KHQsZSxuKXt0cnl7dmFyIHI9XCJcIjtpZih2b2lkIDAhPT1uJiYxPD1uLmxlbmd0aCl7dmFyIGk9XCJcIi5jb25jYXQodCxcIl9zcFwiKTtcInNwXCI9PT1uJiZPYmplY3QoTXQubSkoZS5iaWRDb25maWcsaSkmJihyPWUuYmlkQ29uZmlnW2ldKX1lbHNlIE9iamVjdChNdC5tKShlLmJpZENvbmZpZyx0KSYmKHI9ZS5iaWRDb25maWdbdF0pO3JldHVybiByfWNhdGNoKHQpe3JldHVybiBPYmplY3QoS3QuYikodCxcIl9nZXRQcm9wZXJCaWRJbmZvVmFsdWVcIiksXCJcIn19ZnVuY3Rpb24gRXQodCxlKXt0cnl7dmFyIG49ZS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO24udHlwZT1cInRleHQvamF2YXNjcmlwdFwiLG4uYXN5bmM9ITA7dmFyIHI9e2RvYzplLGJpZElEOnQuYmlkSUQsc3RhdGVzOntjc21Mb2FkZWQ6ITEsaWZyYW1lTG9hZGVkOiExLHNob3VsZFJ1blZpZXdhYmlsaXR5OiEwfX0saT1HLmJpbmQobnVsbCxyKTtPYmplY3QoSnQuYSkobiwoZnVuY3Rpb24oKXtyLnN0YXRlcy5jc21Mb2FkZWQ9ITAsaSgpfSkpO3RyeXtuLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KFZ0LmIpKHtfdHlwZTpcImNzbV9mYWlsXCIsdHM6RGF0ZS5ub3coKSxtc2c6dC5tZXNzYWdlfSl9KSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfbG9hZFZpZXdhYmlsaXR5QWQtY3NtXCIpfUYodCxyLGkpLG4uc3JjPXF0LmEuZ2V0U3RhdGUoKS5jZmcuQ1NNX0pTLEIoZSxuKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcIl9sb2FkVmlld2FiaWxpdHlBZFwiKX19ZnVuY3Rpb24gSXQodCl7dHJ5e09iamVjdCgkdC5pKSh0KSxwKHQpLE9iamVjdChNdC5tKSh0LFwic2xvdHNcIikmJihxdC5hLmRpc3BhdGNoKHt0eXBlOlwiVVBEQVRFX1NMT1RfQklEU1wiLGJpZHM6Uih0KX0pLE9iamVjdChNdC5tKSh0LFwiZXZcIikmJnF0LmEuZGlzcGF0Y2goe3R5cGU6XCJTRVRfVklFV0FCSUxJVFlcIix2aWV3YWJpbGl0eTp0LmV2fSksT2JqZWN0KE10Lm0pKHQsXCJjZm5cIikmJnF0LmEuZGlzcGF0Y2goe3R5cGU6XCJTRVRfQ0ZHXCIsY2ZnOntDU01fSlM6XCIvL1wiPT09dC5jZm4uc3Vic3RyaW5nKDAsMik/dC5jZm46XCIvL2MuYW1hem9uLWFkc3lzdGVtLmNvbS9cIi5jb25jYXQodC5jZm4pfX0pKSxnKHQpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX2JpZHNcIiwhMCl9fWZ1bmN0aW9uIFR0KCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHF0LmEuZ2V0U3RhdGUoKS5jZmcuTUFYX1NMT1RTX1BFUl9SRVFVRVNUJiYwPHF0LmEuZ2V0U3RhdGUoKS5jZmcuTUFYX1NMT1RTX1BFUl9SRVFVRVNUfWZ1bmN0aW9uIFJ0KHQsZSl7dHJ5e3ZhciBuPUN0LmJpbmQobnVsbCx0LGUpO3ZvaWQgMD09PXF0LmEuZ2V0U3RhdGUoKS5nZHByfHxudWxsPT09cXQuYS5nZXRTdGF0ZSgpLmdkcHI/KHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJBRERfR0RQUl9RVUVfSVRFTVwiLGZ1bmM6bn0pLDE9PT1xdC5hLmdldFN0YXRlKCkuZ2RwclF1ZS5sZW5ndGgmJk9iamVjdChOdC5hKShxdC5hLmdldFN0YXRlKCkuY29uZmlnLmdkcHIsQXQpKTpuKCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfY2hlY2tHZHByQW5kRmV0Y2hCaWRzXCIsITApfX1mdW5jdGlvbiBBdCh0KXt0cnl7cXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNFVF9HRFBSX0NPTkZJR1wiLGNvbmZpZzp0fSkscXQuYS5nZXRTdGF0ZSgpLmdkcHJRdWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSkpLHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJDTEVBUl9HRFBSX1FVRVwifSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfZ2RwckNhbGxiYWNrXCIpfX1mdW5jdGlvbiBDdCh0LGUpe3RyeXtPYmplY3QoZWUuYikoZSxbXCJmdW5jdGlvblwiLFwidW5kZWZpbmVkXCJdKXx8T2JqZWN0KEt0LmMpKFwiZmV0Y2hCaWRzLmNhbGxiYWNrXCIsb2UoZSksXCJmdW5jdGlvblwiKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT1mdW5jdGlvbigpe30pLE9iamVjdChNdC5sKSh0KXx8KE9iamVjdChLdC5jKShcImZldGNoQmlkcy5iaWRDb25maWdcIixvZSh0KSxcIm9iamVjdFwiKSx0PXt9KSxPYmplY3QoZWUuYSkodC50aW1lb3V0KXx8KFwic3RyaW5nXCI9PXR5cGVvZiB0LnRpbWVvdXQ/T2JqZWN0KEt0LmIpKHtuYW1lOlwic3RyaW5nLVwiLmNvbmNhdCh0LnRpbWVvdXQpLG1lc3NhZ2U6XCJmZXRjaEJpZHMuYmlkQ29uZmlnLnRpbWVvdXQgd2FzIGEgbm9uLW51bWVyaWMgc3RyaW5nICdcIi5jb25jYXQodC50aW1lb3V0LFwiJ1wiKX0sXCJUeXBlRXJyb3ItZmV0Y2hCaWRzLmJpZENvbmZpZy50aW1lb3V0XCIsITApOk9iamVjdChLdC5jKShcImZldGNoQmlkcy5iaWRDb25maWcudGltZW91dFwiLG9lKHQudGltZW91dCksXCJudW1iZXJcIikpLE9iamVjdChNdC5tKSh0LFwicGFyYW1zXCIpJiYhT2JqZWN0KE10LmwpKHQucGFyYW1zKT9PYmplY3QoS3QuYykoXCJmZXRjaEJpZHMuYmlkQ29uZmlnLnBhcmFtc1wiLG9lKHQucGFyYW1zKSxcIm9iamVjdFwiKTpPYmplY3QoTXQubSkodCxcInBhcmFtc1wiKSYmT2JqZWN0KE10LmwpKHQucGFyYW1zKSYmT2JqZWN0LmtleXModC5wYXJhbXMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiEodm9pZCAwPT09dC5wYXJhbXN8fFwic3RyaW5nXCIhPXR5cGVvZiB0LnBhcmFtc1tlXSYmXCJudW1iZXJcIiE9dHlwZW9mIHQucGFyYW1zW2VdJiYoT2JqZWN0KE10LmspKHQucGFyYW1zW2VdKT8hdC5wYXJhbXNbZV0ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0JiYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fFwibnVtYmVyXCI9PXR5cGVvZiBlKX0pLCEwKSYmKE9iamVjdChLdC5iKSh7bmFtZTpcIm5vbi1zdHJpbmcgYXJyYXkgaXRlbVwiLG1lc3NhZ2U6XCInZmV0Y2hCaWRzLmJpZENvbmZpZy5wYXJhbXMuXCIuY29uY2F0KGUsXCIgY29udGFpbnMgYSBub24tc3RyaW5nIGl0ZW1cIil9LFwiVHlwZUVycm9yLWZldGNoQmlkcy5iaWRDb25maWcucGFyYW1zLlwiLmNvbmNhdChlKSwhMCksMSk6KE9iamVjdChLdC5jKShcImZldGNoQmlkcy5iaWRDb25maWcucGFyYW1zLlwiLmNvbmNhdChlKSxvZSh0LnBhcmFtc1tlXSksXCJzdHJpbmcnIG9yICdhcnJheVwiKSwxKSkpfSkpLE9iamVjdChNdC5tKSh0LFwiYmxvY2tlZEJpZGRlcnNcIikmJiFPYmplY3QoTXQuaykodC5ibG9ja2VkQmlkZGVycyk/T2JqZWN0KEt0LmMpKFwiZmV0Y2hCaWRzLmJpZENvbmZpZy5ibG9ja2VkQmlkZGVyc1wiLG9lKHQuYmxvY2tlZEJpZGRlcnMpLFwiYXJyYXlcIik6T2JqZWN0KE10Lm0pKHQsXCJibG9ja2VkQmlkZGVyc1wiKSYmT2JqZWN0KE10LmspKHQuYmxvY2tlZEJpZGRlcnMpJiYodC5ibG9ja2VkQmlkZGVycy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpfSksITApfHxPYmplY3QoS3QuYikoe25hbWU6XCJub24tc3RyaW5nIGFycmF5IGl0ZW1cIixtZXNzYWdlOlwiJ2ZldGNoQmlkcy5iaWRDb25maWcuYmxvY2tlZEJpZGRlcnMgY29udGFpbnMgYSBub24tc3RyaW5nIGl0ZW1cIn0sXCJUeXBlRXJyb3ItZmV0Y2hCaWRzLmJpZENvbmZpZy5ibG9ja2VkQmlkZGVyc1wiLCEwKSksT2JqZWN0KE10Lm0pKHQsXCJzbG90c1wiKSYmIU9iamVjdChNdC5rKSh0LnNsb3RzKSYmT2JqZWN0KEt0LmMpKFwiZmV0Y2hCaWRzLmJpZENvbmZpZy5zbG90c1wiLG9lKHQuc2xvdHMpLFwiYXJyYXlcIil9Y2F0Y2gobil7T2JqZWN0KEt0LmIpKG4sXCJfZmV0Y2hCaWRzLXZhbGlkYXRpb25cIiwhMCl9dmFyIG49cXQuYS5nZXRTdGF0ZSgpLmNvbmZpZy5zaW1wbGVyR1BULHI9cmUoe30sdCx7YmlkUmVxSUQ6XCJcIi5jb25jYXQocXQuYS5nZXRTdGF0ZSgpLkFBWFJlcXMubGVuZ3RoKSxzbG90czpbXSxuZXR3b3JrUmVxczpbXX0pLGk9ITE7dHJ5eyEwPT09biYmKCFPYmplY3QoTXQubSkodCxcInNsb3RzXCIpfHxPYmplY3QoTXQubSkodCxcInNsb3RzXCIpJiZPYmplY3QoTXQuaykodC5zbG90cykmJjA8dC5zbG90cy5sZW5ndGgmJk9iamVjdChNdC5tKSh0LnNsb3RzWzBdLFwiZ2V0U2xvdEVsZW1lbnRJZFwiKSk/MD09PU9iamVjdChGdC5iKShZdC5hKS5sZW5ndGg/KE9iamVjdChLdC5iKShuZXcgRXJyb3IoXCJmZXRjaEJpZHMgd2FzIGNhbGxlZCBpbiBzaW1wbGVyR1BUIG1vZGUgYmVmb3JlIGFueSBzbG90cyB3ZXJlIGRlZmluZWQgaW4gR1BUXCIpLFwiX2ZldGNoQmlkcy1zaW1wbGVyR3B0LU5vU2xvdHNcIiwhMCksaT0hMCxyLnNsb3RzPVtdKToodC5zbG90cz9yLnNsb3RzPXQuc2xvdHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFd0LmIodCl9KSk6ci5zbG90cz1PYmplY3QoRnQuYikoWXQuYSksci5zbG90cz1yLnNsb3RzLmZpbHRlcihGdC5hKSwwPT09ci5zbG90cy5sZW5ndGgmJihPYmplY3QoS3QuYikobmV3IEVycm9yKFwiTm8gR1BUIHNsb3RzIHByb3ZpZGVkIHRvIGFwc3RhZy5mZXRjaEJpZHMoKSBoYWQgdmFsaWQgc2l6ZXNcIiksXCJfZmV0Y2hCaWRzLXNpbXBsZXJHcHQtTm9WYWxpZFNpemVzXCIsITApLGk9ITApKTpPYmplY3QoTXQubSkodCxcInNsb3RzXCIpJiZPYmplY3QoTXQuaykodC5zbG90cykmJihyLnNsb3RzPXQuc2xvdHMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFp0LmEodCl9KSkpfWNhdGNoKG4pe09iamVjdChLdC5iKShuLFwiX2ZldGNoQmlkcy1nZXRTbG90c1wiLCEwKX12YXIgbyxjPU9iamVjdChVdC5oKShyLHF0LmEuZ2V0U3RhdGUoKSk7dHJ5e2U9T2JqZWN0KFV0LmEpKFEoZSxyKSxjKX1jYXRjaChuKXtPYmplY3QoS3QuYikobixcIl9mZXRjaEJpZHMtd3JhcENhbGxiYWNrXCIsITApfXRyeXtpZigwPT09ci5zbG90cy5sZW5ndGgpcmV0dXJuITE9PT1pJiZPYmplY3QoS3QuYikobmV3IEVycm9yKFwiTm8gc2xvdHMgcHJvdmlkZWQgdG8gYXBzdGFnLmZldGNoQmlkc1wiKSxcIl9mZXRjaEJpZHMtbm9TbG90c1wiLCEwKSx2b2lkIHNldFRpbWVvdXQoZS5iaW5kKG51bGwsW10pLDEwKTtpZihPdChyLnNsb3RzLmZpbHRlcihGdC5kKS5tYXAoRnQuYykpLHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJORVdfRkVUQ0hfQklEX1JFUVVFU1RcIixmaWQ6ci5iaWRSZXFJRCxwdG86Y30pLHF0LmEuZGlzcGF0Y2goe3R5cGU6XCJSRUNPUkRfT1JJR0lOQUxfQklEX0NPTkZJR1wiLGJpZENvbmZpZzpyfSksT2JqZWN0KEd0LmQpKFwiZmFrZV9iaWRzXCIpKUsocixlKTtlbHNlIGlmKFF0LmkpaWYocXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNIT1VMRF9DSFVOS19SRVFVRVNUU1wiLHZhbHVlOk9iamVjdChNdC5uKShxdC5hLmdldFN0YXRlKCkuY2ZnLkNIVU5LX0JJRF9SRVFVRVNUU19QUk9QT1JUSU9OKX0pLHF0LmEuZ2V0U3RhdGUoKS5leHBlcmltZW50cy5jaHVua1JlcXVlc3RzJiZUdCgpKXtvPVB0KHIpO2Zvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKW9bYV0uYmlkUmVxSUQ9XCJcIi5jb25jYXQoci5iaWRSZXFJRCxcIi1cIikuY29uY2F0KGEpO3F0LmEuZGlzcGF0Y2goe3R5cGU6XCJBRERfQ0hVTktFRF9SRVFVRVNUU1wiLGZpZDpyLmJpZFJlcUlELG51bUNodW5rczpvLmxlbmd0aH0pLG8uZm9yRWFjaCgoZnVuY3Rpb24odCl7ZihPYmplY3QoJHQuZCkodCxjKSxlLHQuYmlkUmVxSUQpfSkpfWVsc2UgZihPYmplY3QoJHQuZCkocixjKSxlLHIuYmlkUmVxSUQpO2Vsc2UgT2JqZWN0KEp0LmIpKE9iamVjdCgkdC5kKShyLGMpLGUpfWNhdGNoKG4pe09iamVjdChLdC5iKShuLFwiX2ZldGNoQmlkc1wiLCEwKX19ZnVuY3Rpb24gUHQodCl7dHJ5e2Zvcih2YXIgZT1NYXRoLmNlaWwodC5zbG90cy5sZW5ndGgvcXQuYS5nZXRTdGF0ZSgpLmNmZy5NQVhfU0xPVFNfUEVSX1JFUVVFU1QpLG49bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXt2YXIgaT1yKnF0LmEuZ2V0U3RhdGUoKS5jZmcuTUFYX1NMT1RTX1BFUl9SRVFVRVNUO25bcl09e3Nsb3RzOnQuc2xvdHMuc2xpY2UoaSxpK3F0LmEuZ2V0U3RhdGUoKS5jZmcuTUFYX1NMT1RTX1BFUl9SRVFVRVNUKX19cmV0dXJuIG4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcmUoe30sdCx7fSxlKX0pKX1jYXRjaChlKXtyZXR1cm4gT2JqZWN0KEt0LmIpKGUsXCJjaHVua0NvbmZpZ1wiLCEwKSxbXX19ZnVuY3Rpb24genQodCl7dHJ5e09iamVjdChNdC5tKShxdC5hLmdldFN0YXRlKCkuY29uZmlnLFwiYWRTZXJ2ZXJcIik/WXQuYS5pc1N1cHBvcnRlZD8oeih0KSwkKCkpOk9iamVjdChLdC5iKShuZXcgRXJyb3IoXCJhcHN0YWcuc2V0RGlzcGxheUJpZHMgY2FsbGVkIHdpdGggdW5zdXBwb3J0ZWQgYWQgc2VydmVyOiBcIi5jb25jYXQocXQuYS5nZXRTdGF0ZSgpLmNvbmZpZy5hZFNlcnZlcikpLFwiX3NldERpc3BsYXlCaWRzLWludmFsaWRBZFNlcnZlclwiLCEwKTpPYmplY3QoS3QuYikobmV3IEVycm9yKFwiYXBzdGFnLnNldERpc3BsYXlCaWRzIGNhbGxlZCB3aXRob3V0IHNwZWNpZnlpbmcgYWQgc2VydmVyXCIpLFwiX3NldERpc3BsYXlCaWRzLW5vQWRTZXJ2ZXJcIiwhMCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfc2V0RGlzcGxheUJpZHNcIiwhMCl9fWZ1bmN0aW9uIGt0KHQsZSl7dHJ5e2godCksT2JqZWN0KFl0LmIpKHQuYWRTZXJ2ZXIpLGh0KCl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJfaW5pdFwiKX1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlKCl9ZnVuY3Rpb24gQnQoKXt2YXIgdD0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJkaXNwbGF5XCI7dHJ5e3N3aXRjaCh0KXtjYXNlXCJkaXNwbGF5XCI6cmV0dXJuIFF0Lmc7Y2FzZVwidmlkZW9cIjpyZXR1cm4gUXQudTtkZWZhdWx0OnJldHVybiBPYmplY3QoJHQuaCkocXQuYS5nZXRTdGF0ZSgpLFl0LmEpJiZPYmplY3QoTXQuaykocXQuYS5nZXRTdGF0ZSgpLnRhcmdldGluZ0tleXNbdF0pP3F0LmEuZ2V0U3RhdGUoKS50YXJnZXRpbmdLZXlzW3RdOltdfX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfdGFyZ2V0aW5nS2V5c1wiLCEwKSxbXX19ZnVuY3Rpb24geHQoKXt0cnl7cmV0dXJuIHF0LmEuZ2V0U3RhdGUoKS5BQVhSZXFzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5iaWRDb25maWcuc2xvdHMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2Uuc2xvdElEXT1lLnNsb3ROYW1lLHR9KSx0KX0pLHt9KX1jYXRjaCh0KXtyZXR1cm4gT2JqZWN0KEt0LmIpKHQsXCJfZ2V0U2xvdElkVG9OYW1lTWFwcGluZ1wiLCEwKSx7fX19ZnVuY3Rpb24gTHQodCxlKXt2YXIgbj1lO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKHttZXRob2Q6dCxhcmdzOmFyZ3VtZW50c30pLG4uYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fXRyeXtPYmplY3QoTXQubSkod2luZG93LFwiYXBzdGFnXCIpJiZPYmplY3QoTXQubSkod2luZG93LmFwc3RhZyxcIl9RXCIpJiYwPHdpbmRvdy5hcHN0YWcuX1EubGVuZ3RoJiZxdC5hLmRpc3BhdGNoKHt0eXBlOlwiU0VUX1FcIixROndpbmRvdy5hcHN0YWcuX1F9KX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcImFwc3RhZy1zdG9yZVFcIiwhMCl9d2luZG93LmFwc3RhZz0oaXQ9e3B1bnQ6SXQsaW5pdDprdCxkZWJ1ZzpHdC5hLF9nZXRTbG90SWRUb05hbWVNYXBwaW5nOnh0LHRhcmdldGluZ0tleXM6QnQsZmV0Y2hCaWRzOlJ0LHNldERpc3BsYXlCaWRzOnp0LHJlbmRlckltcDp3dCxiaWRzOkl0fSxPYmplY3Qua2V5cyhpdCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aXRbdF09THQodCxpdFt0XSksaXRbdF09T2JqZWN0KEt0LmQpKGl0W3RdLHQpfSkpLG4/T2JqZWN0KEd0LmIpKCEwLHQpOmUmJk9iamVjdChHdC5iKSghMSx0KSwhMD09PU9iamVjdChHdC5jKShcImV4cG9zZUFwaVwiKSYmKGl0Ll9hcGk9e19nZXRCaWRTZXRJbmZvOmJ0LF9hcHBseVRhcmdldGluZ1RvR1BUU2xvdDpBLGRpc3BhdGNoOnF0LmEuZGlzcGF0Y2gsX2NsZWFyVGFyZ2V0aW5nRnJvbUdQVFNsb3Q6dixfY2xlYXJCaWRTZXRPblNsb3Q6UyxfZG9GYlN5bmM6ayxfZ2V0Q3VycmVudFNsb3RCaWRzOncsX2NyZWF0aXZlVVJMOkwsZ2V0U2xvdEZldGNoQ291bnRzOmN0LGJ1aWxkQmlkVXJsOiR0LmR9KSxpdCksZnVuY3Rpb24oKXt0cnl7aWYocXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNIT1VMRF9DRl9ST1VURVwiLHZhbHVlOk9iamVjdChNdC5uKShxdC5hLmdldFN0YXRlKCkuY2ZnLkNGX1JPVVRJTkdfUkFURSl9KSxxdC5hLmdldFN0YXRlKCkuZXhwZXJpbWVudHMuc2hvdWxkQ0ZSb3V0ZSYmcXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNFVF9IT1NUXCIsaG9zdE5hbWU6XCJERUZBVUxUX0FBWF9CSURfSE9TVFwiLGhvc3RWYWx1ZTpcImMuYW1hem9uLWFkc3lzdGVtLmNvbVwifSkscXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNIT1VMRF9TQU1QTEVfTEFURU5DWVwiLHZhbHVlOk9iamVjdChNdC5uKShxdC5hLmdldFN0YXRlKCkuY2ZnLkxBVEVOQ1lfU0FNUExJTkdfUkFURSl9KSxudWxsIT09cXQuYS5nZXRTdGF0ZSgpLmNmZy5URVNUX0JJRF9FTkRQT0lOVCl7dmFyIHQ9T2JqZWN0KE10Lm4pKHF0LmEuZ2V0U3RhdGUoKS5jZmcuVEVTVF9QQVRIX0ZSRVFVRU5DWSk7cXQuYS5kaXNwYXRjaCh7dHlwZTpcIlNIT1VMRF9VU0VfVEVTVF9CSURfRU5EUE9JTlRcIix2YWx1ZTp0fSksdCYmbnVsbCE9PXF0LmEuZ2V0U3RhdGUoKS5jZmcuVEVTVF9QQVRIX0xBVEVOQ1lfU0FNUExFX1JBVEUmJnF0LmEuZGlzcGF0Y2goe3R5cGU6XCJTSE9VTERfU0FNUExFX0xBVEVOQ1lcIix2YWx1ZTpPYmplY3QoTXQubikocXQuYS5nZXRTdGF0ZSgpLmNmZy5URVNUX1BBVEhfTEFURU5DWV9TQU1QTEVfUkFURSl9KX1xdC5hLmRpc3BhdGNoKHt0eXBlOlwiU0hPVUxEX1NBTVBMRV9TTE9UX1JFTkRFUlwiLHZhbHVlOk9iamVjdChNdC5uKShxdC5hLmdldFN0YXRlKCkuY2ZnLlNMT1RfUkVOREVSX1NBTVBMSU5HX1JBVEUpfSk7dmFyIGU9cXQuYS5nZXRTdGF0ZSgpOyhlLmV4cGVyaW1lbnRzLnNob3VsZFNhbXBsZUxhdGVuY3l8fGUuZGlzcGxheUFkU2VydmVyLnNob3VsZFNhbXBsZVJlbmRlcikmJm90KCksZS5kaXNwbGF5QWRTZXJ2ZXIuc2hvdWxkU2FtcGxlUmVuZGVyJiZ1dCgpLGUuZXhwZXJpbWVudHMuc2hvdWxkU2FtcGxlTGF0ZW5jeSYmKG50KCksc3QoKSl9Y2F0Y2godCl7T2JqZWN0KEt0LmIpKHQsXCJhcHN0YWctc2FtcGxlTGF0ZW5jeVwiKX10cnl7eSgpfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiYXBzdGFnLWRvTGFzdFwiKX1pZighanQoKSl0cnl7dmFyIG49ZnVuY3Rpb24odCl7dCYmXCJvYmplY3RcIiE9PW9lKHQpfHwodD1cIlJlcXVlc3QgVGltZW91dCBvciBFcnJvclwiKSxPYmplY3QoS3QuYikoe21lc3NhZ2U6XCJjc20tcnRiLWNvbW0tanMgbG9hZGluZyBmYWlsZWRcIixuYW1lOnR9LFwiX19jc20tcnRiLWNvbW0tanNfX1wiKX07T2JqZWN0KEp0LmQpKHt1cmw6cXQuYS5nZXRTdGF0ZSgpLmNmZy5DU01fUlRCX0NPTU1VTklDQVRPUl9KUyxvbmxvYWQ6ZnVuY3Rpb24gdChlKXtlLnJlYWR5U3RhdGU9PT1YTUxIdHRwUmVxdWVzdC5ET05FJiYyMDA9PT1lLnN0YXR1cz9ldmFsKGUucmVzcG9uc2VUZXh0KTpuKEpTT04uc3RyaW5naWZ5KHtzdGF0dXM6ZS5zdGF0dXNUZXh0LHJlc3BvbnNlOmUucmVzcG9uc2VYTUx9KSl9LG9uZXJyb3I6bixvbnRpbWVvdXQ6bn0pfWNhdGNoKHQpe09iamVjdChLdC5iKSh0LFwiX19sb2FkLWNzbS1ydGItY29tbS1qc19fXCIpfU9iamVjdChHdC5lKSgpfSgpfSgpKX1jYXRjaCh0KXtPYmplY3QoS3QuYikodCxcImFwc3RhZ1wiKX19XSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHN0YWcuanMubWFwIn0sICJoZWFkZXJzU2l6ZSI6IDE2MzYsICJib2R5U2l6ZSI6IDI2NjE1LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAyODI1MX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDM5LjkwNCwgInJlY2VpdmUiOiAxNjE3LjAyN30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI1WiIsICJ0aW1lIjogNjYuNTQ4LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2dwdC5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0ODEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI4RGxXU2U4RVVFV3ZMYjFVZXZBMkFSdzhOZXZGZkYubTNNM3RERWNIczJ3LTE2ODQ5NDI4NzUtMC1BZitPZlI2c2Z1NHhUeVZUTmVkNWM0OWdWQ1EvczBjSlhpb25lMklRU2J2SUFFOTlOYmRQUndBc2E2ZTdqTXdQcWZKVitwWWhLcTcyQUNDd0NXNThNTjA9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQwIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGQ0ZWJmMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE1IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1SRUJ6RTZEbzdlTGduSldBc2d0NDV2VkVUejZMTnBXMWlaWUF0eUtTcHE2OFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPThEbFdTZThFVUVXdkxiMVVldkEyQVJ3OE5ldkZmRi5tM00zdERFY0hzMnctMTY4NDk0Mjg3NS0wLUFmK09mUjZzZnU0eFR5VlROZWQ1YzQ5Z1ZDUS9zMGNKWGlvbmUySVFTYnZJQUU5OU5iZFBSd0FzYTZlN2pNd1BxZkpWK3BZaEtxNzJBQ0N3Q1c1OE1OMD07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvZ3B0LmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVJFQnpFNkRvN2VMZ25KV0FzZ3Q0NXZWRVR6NkxOcFcxaVpZQXR5S1NwcTY4In0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA1NTYxOCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAzNjk0NywgInRleHQiOiAiKGZ1bmN0aW9uKEUpe3ZhciB3aW5kb3c9dGhpczsvKlxuXG4gQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy5cbiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cbnZhciBhYT1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX0sYmE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfSxjYT1mdW5jdGlvbihhKXthPVtcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcihcIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3RcIik7fSxkYT1jYSh0aGlzKSxlYT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT09dHlwZW9mIFN5bWJvbChcInhcIiksbT17fSxoYT17fSxuPWZ1bmN0aW9uKGEsYil7dmFyIGM9aGFbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM/YzphW2JdfSxxPWZ1bmN0aW9uKGEsYixjKXtpZihiKWE6e3ZhciBkPWEuc3BsaXQoXCIuXCIpO2E9MT09PWQubGVuZ3RoO3ZhciBlPWRbMF0sZjshYSYmZSBpbiBtP2Y9bTpmPWRhO2ZvcihlPTA7ZTxkLmxlbmd0aC0xO2UrKyl7dmFyIGc9ZFtlXTtpZighKGcgaW4gZikpYnJlYWsgYTtmPWZbZ119ZD1kW2QubGVuZ3RoLTFdO2M9ZWEmJlwiZXM2XCI9PT1jP2ZbZF06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE/YmEobSxkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYoaGFbZF09ZWE/ZGEuU3ltYm9sKGQpOlwiJGpzY3AkXCIrZCxkPWhhW2RdLGJhKGYsZCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfX07cShcIlN5bWJvbFwiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oZSxmKXt0aGlzLmE9ZTtiYSh0aGlzLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ9KX07Yi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgYz0wLGQ9ZnVuY3Rpb24oZSl7aWYodGhpcyBpbnN0YW5jZW9mIGQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvclwiKTtyZXR1cm4gbmV3IGIoXCJqc2NvbXBfc3ltYm9sX1wiKyhlfHxcIlwiKStcIl9cIitjKyssZSl9O3JldHVybiBkfSxcImVzNlwiKTtxKFwiU3ltYm9sLml0ZXJhdG9yXCIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTthPSgwLG0uU3ltYm9sKShcIlN5bWJvbC5pdGVyYXRvclwiKTtmb3IodmFyIGI9XCJBcnJheSBJbnQ4QXJyYXkgVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBJbnQxNkFycmF5IFVpbnQxNkFycmF5IEludDMyQXJyYXkgVWludDMyQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheVwiLnNwbGl0KFwiIFwiKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWRhW2JbY11dO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBkLnByb3RvdHlwZVthXSYmYmEoZC5wcm90b3R5cGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGlhKGFhKHRoaXMpKX19KX1yZXR1cm4gYX0sXCJlczZcIik7dmFyIGlhPWZ1bmN0aW9uKGEpe2E9e25leHQ6YX07YVtuKG0uU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3JldHVybiBhfSxyPWZ1bmN0aW9uKGEpe3ZhciBiPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBtLlN5bWJvbCYmbihtLlN5bWJvbCxcIml0ZXJhdG9yXCIpJiZhW24obS5TeW1ib2wsXCJpdGVyYXRvclwiKV07cmV0dXJuIGI/Yi5jYWxsKGEpOntuZXh0OmFhKGEpfX0samE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9W107IShiPWEubmV4dCgpKS5kb25lOyljLnB1c2goYi52YWx1ZSk7cmV0dXJuIGN9LGthPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQXJyYXk/YTpqYShyKGEpKX0sbGE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1hO3JldHVybiBuZXcgYn0sbWE7aWYoZWEmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZiltYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgbmE7YTp7dmFyIG9hPXtXOiEwfSxwYT17fTt0cnl7cGEuX19wcm90b19fPW9hO25hPXBhLlc7YnJlYWsgYX1jYXRjaChhKXt9bmE9ITF9bWE9bmE/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErXCIgaXMgbm90IGV4dGVuc2libGVcIik7cmV0dXJuIGF9Om51bGx9dmFyIHFhPW1hLHJhPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9bGEoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYocWEpcWEoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKFwicHJvdG90eXBlXCIhPWMpaWYoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpe3ZhciBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxjLGQpfWVsc2UgYVtjXT1iW2NdfSx0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfTtxKFwiQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXthOnt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7Zm9yKHZhciBlPWQubGVuZ3RoLGY9MDtmPGU7ZisrKWlmKGIuY2FsbChjLGRbZl0sZixkKSl7Yj1mO2JyZWFrIGF9Yj0tMX1yZXR1cm4gYn19LFwiZXM2XCIpO3ZhciBzYT1mdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS5cIitjK1wiIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkXCIpO2lmKGIgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuXCIrYytcIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvblwiKTtyZXR1cm4gYStcIlwifTtxKFwiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3ZhciBkPXNhKHRoaXMsYixcInN0YXJ0c1dpdGhcIiksZT1kLmxlbmd0aCxmPWIubGVuZ3RoO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsZC5sZW5ndGgpKTtmb3IodmFyIGc9MDtnPGYmJmM8ZTspaWYoZFtjKytdIT1iW2crK10pcmV0dXJuITE7cmV0dXJuIGc+PWZ9fSxcImVzNlwiKTt2YXIgdGE9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYSs9XCJcIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGY9YysrO3JldHVybnt2YWx1ZTpiKGYsYVtmXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtuKG0uU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBlfTtxKFwiQXJyYXkucHJvdG90eXBlLmtleXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIHRhKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGJ9KX19LFwiZXM2XCIpO3EoXCJBcnJheS5wcm90b3R5cGUudmFsdWVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiB0YSh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGN9KX19LFwiZXM4XCIpO3EoXCJPYmplY3QuaXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9PT1jPzAhPT1ifHwxL2I9PT0xL2M6YiE9PWImJmMhPT1jfX0sXCJlczZcIik7cShcIkFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcigwPmMmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGY9ZFtjXTtpZihmPT09Ynx8bihPYmplY3QsXCJpc1wiKS5jYWxsKE9iamVjdCxmLGIpKXJldHVybiEwfXJldHVybiExfX0sXCJlczdcIik7cShcIlN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuLTEhPT1zYSh0aGlzLGIsXCJpbmNsdWRlc1wiKS5pbmRleE9mKGIsY3x8MCl9fSxcImVzNlwiKTtxKFwiV2Vha01hcFwiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gYyhnKXt2YXIgaD10eXBlb2YgZztyZXR1cm5cIm9iamVjdFwiPT09aCYmbnVsbCE9PWd8fFwiZnVuY3Rpb25cIj09PWh9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgZz1PYmplY3Quc2VhbCh7fSksaD1PYmplY3Quc2VhbCh7fSksaz1uZXcgYShbW2csMl0sW2gsM11dKTtpZigyIT1rLmdldChnKXx8MyE9ay5nZXQoaCkpcmV0dXJuITE7ay5kZWxldGUoZyk7ay5zZXQoaCw0KTtyZXR1cm4hay5oYXMoZykmJjQ9PWsuZ2V0KGgpfWNhdGNoKGwpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgZD1cIiRqc2NvbXBfaGlkZGVuX1wiK01hdGgucmFuZG9tKCksZT0wLGY9ZnVuY3Rpb24oZyl7dGhpcy5hPShlKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoZyl7Zz1yKGcpO2Zvcih2YXIgaDshKGg9Zy5uZXh0KCkpLmRvbmU7KWg9aC52YWx1ZSx0aGlzLnNldChoWzBdLGhbMV0pfX07Zi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsaCl7aWYoIWMoZykpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIFdlYWtNYXAga2V5XCIpO2lmKCF0KGcsZCkpe3ZhciBrPW5ldyBiO2JhKGcsZCx7dmFsdWU6a30pfWlmKCF0KGcsZCkpdGhyb3cgRXJyb3IoXCJXZWFrTWFwIGtleSBmYWlsOiBcIitnKTtnW2RdW3RoaXMuYV09aDtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ0KGcsZCk/Z1tkXVt0aGlzLmFdOnZvaWQgMH07Zi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ0KGcsZCkmJnQoZ1tkXSx0aGlzLmEpfTtmLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZyl7cmV0dXJuIGMoZykmJnQoZyxkKSYmdChnW2RdLHRoaXMuYSk/ZGVsZXRlIGdbZF1bdGhpcy5hXTohMX07cmV0dXJuIGZ9LFwiZXM2XCIpO3EoXCJNYXBcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhYS5wcm90b3R5cGUuZW50cmllc3x8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBoPU9iamVjdC5zZWFsKHt4OjR9KSxrPW5ldyBhKHIoW1toLFwic1wiXV0pKTtpZihcInNcIiE9ay5nZXQoaCl8fDEhPWsuc2l6ZXx8ay5nZXQoe3g6NH0pfHxrLnNldCh7eDo0fSxcInRcIikhPWt8fDIhPWsuc2l6ZSlyZXR1cm4hMTt2YXIgbD1rLmVudHJpZXMoKSxwPWwubmV4dCgpO2lmKHAuZG9uZXx8cC52YWx1ZVswXSE9aHx8XCJzXCIhPXAudmFsdWVbMV0pcmV0dXJuITE7cD1sLm5leHQoKTtyZXR1cm4gcC5kb25lfHw0IT1wLnZhbHVlWzBdLnh8fFwidFwiIT1wLnZhbHVlWzFdfHwhbC5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaChmYSl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPW5ldyBtLldlYWtNYXAsYz1mdW5jdGlvbihoKXt0aGlzLmI9e307dGhpcy5hPWYoKTt0aGlzLnNpemU9MDtpZihoKXtoPXIoaCk7Zm9yKHZhciBrOyEoaz1oLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLHRoaXMuc2V0KGtbMF0sa1sxXSl9fTtjLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oaCxrKXtoPTA9PT1oPzA6aDt2YXIgbD1kKHRoaXMsaCk7bC5saXN0fHwobC5saXN0PXRoaXMuYltsLmlkXT1bXSk7bC5pP2wuaS52YWx1ZT1rOihsLmk9e25leHQ6dGhpcy5hLGw6dGhpcy5hLmwsaGVhZDp0aGlzLmEsa2V5OmgsdmFsdWU6a30sbC5saXN0LnB1c2gobC5pKSx0aGlzLmEubC5uZXh0PWwuaSx0aGlzLmEubD1sLmksdGhpcy5zaXplKyspO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oaCl7aD1kKHRoaXMsaCk7cmV0dXJuIGguaSYmaC5saXN0PyhoLmxpc3Quc3BsaWNlKGguaW5kZXgsMSksaC5saXN0Lmxlbmd0aHx8ZGVsZXRlIHRoaXMuYltoLmlkXSxoLmkubC5uZXh0PWguaS5uZXh0LGguaS5uZXh0Lmw9aC5pLmwsaC5pLmhlYWQ9bnVsbCx0aGlzLnNpemUtLSwhMCk6ITF9O2MucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5iPXt9O3RoaXMuYT10aGlzLmEubD1mKCk7dGhpcy5zaXplPTB9O2MucHJvdG90eXBlLmhhcz1mdW5jdGlvbihoKXtyZXR1cm4hIWQodGhpcyxoKS5pfTtjLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oaCl7cmV0dXJuKGg9ZCh0aGlzLGgpLmkpJiZoLnZhbHVlfTtjLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm5baC5rZXksaC52YWx1ZV19KX07Yy5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgua2V5fSl9O2MucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgudmFsdWV9KX07Yy5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihoLGspe2Zvcih2YXIgbD10aGlzLmVudHJpZXMoKSxwOyEocD1sLm5leHQoKSkuZG9uZTspcD1wLnZhbHVlLGguY2FsbChrLHBbMV0scFswXSx0aGlzKX07Yy5wcm90b3R5cGVbbihtLlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1jLnByb3RvdHlwZS5lbnRyaWVzO3ZhciBkPWZ1bmN0aW9uKGgsayl7dmFyIGw9ayYmdHlwZW9mIGs7XCJvYmplY3RcIj09bHx8XCJmdW5jdGlvblwiPT1sP2IuaGFzKGspP2w9Yi5nZXQoayk6KGw9XCJcIisgKytnLGIuc2V0KGssbCkpOmw9XCJwX1wiK2s7dmFyIHA9aC5iW2xdO2lmKHAmJnQoaC5iLGwpKWZvcihoPTA7aDxwLmxlbmd0aDtoKyspe3ZhciBmYT1wW2hdO2lmKGshPT1rJiZmYS5rZXkhPT1mYS5rZXl8fGs9PT1mYS5rZXkpcmV0dXJue2lkOmwsbGlzdDpwLGluZGV4OmgsaTpmYX19cmV0dXJue2lkOmwsbGlzdDpwLGluZGV4Oi0xLGk6dm9pZCAwfX0sZT1mdW5jdGlvbihoLGspe3ZhciBsPWguYTtyZXR1cm4gaWEoZnVuY3Rpb24oKXtpZihsKXtmb3IoO2wuaGVhZCE9aC5hOylsPWwubDtmb3IoO2wubmV4dCE9bC5oZWFkOylyZXR1cm4gbD1sLm5leHQse2RvbmU6ITEsdmFsdWU6ayhsKX07bD1udWxsfXJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19KX0sZj1mdW5jdGlvbigpe3ZhciBoPXt9O3JldHVybiBoLmw9aC5uZXh0PWguaGVhZD1ofSxnPTA7cmV0dXJuIGN9LFwiZXM2XCIpO3EoXCJTZXRcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhYS5wcm90b3R5cGUuZW50cmllc3x8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt4OjR9KSxkPW5ldyBhKHIoW2NdKSk7aWYoIWQuaGFzKGMpfHwxIT1kLnNpemV8fGQuYWRkKGMpIT1kfHwxIT1kLnNpemV8fGQuYWRkKHt4OjR9KSE9ZHx8MiE9ZC5zaXplKXJldHVybiExO3ZhciBlPWQuZW50cmllcygpLGY9ZS5uZXh0KCk7aWYoZi5kb25lfHxmLnZhbHVlWzBdIT1jfHxmLnZhbHVlWzFdIT1jKXJldHVybiExO2Y9ZS5uZXh0KCk7cmV0dXJuIGYuZG9uZXx8Zi52YWx1ZVswXT09Y3x8NCE9Zi52YWx1ZVswXS54fHxmLnZhbHVlWzFdIT1mLnZhbHVlWzBdPyExOmUubmV4dCgpLmRvbmV9Y2F0Y2goZyl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGMpe3RoaXMuYT1uZXcgbS5NYXA7aWYoYyl7Yz1yKGMpO2Zvcih2YXIgZDshKGQ9Yy5uZXh0KCkpLmRvbmU7KXRoaXMuYWRkKGQudmFsdWUpfXRoaXMuc2l6ZT10aGlzLmEuc2l6ZX07Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGMpe2M9MD09PWM/MDpjO3RoaXMuYS5zZXQoYyxjKTt0aGlzLnNpemU9dGhpcy5hLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihjKXtjPXRoaXMuYS5kZWxldGUoYyk7dGhpcy5zaXplPXRoaXMuYS5zaXplO3JldHVybiBjfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYS5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuYS5oYXMoYyl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmVudHJpZXMoKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5hLFwidmFsdWVzXCIpLmNhbGwodGhpcy5hKX07Yi5wcm90b3R5cGUua2V5cz1uKGIucHJvdG90eXBlLFwidmFsdWVzXCIpO2IucHJvdG90eXBlW24obS5TeW1ib2wsXCJpdGVyYXRvclwiKV09bihiLnByb3RvdHlwZSxcInZhbHVlc1wiKTtiLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGMsZCl7dmFyIGU9dGhpczt0aGlzLmEuZm9yRWFjaChmdW5jdGlvbihmKXtyZXR1cm4gYy5jYWxsKGQsZixmLGUpfSl9O3JldHVybiBifSxcImVzNlwiKTt2YXIgdT10aGlzfHxzZWxmLHdhPWZ1bmN0aW9uKGEpe2lmKGEmJmEhPXUpcmV0dXJuIHVhKGEuZG9jdW1lbnQpO251bGw9PT12YSYmKHZhPXVhKHUuZG9jdW1lbnQpKTtyZXR1cm4gdmF9LHhhPS9eW1xcdysvXy1dK1s9XXswLDJ9JC8sdmE9bnVsbCx1YT1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLnF1ZXJ5U2VsZWN0b3ImJmEucXVlcnlTZWxlY3RvcihcInNjcmlwdFtub25jZV1cIikpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSYmeGEudGVzdChhKT9hOlwiXCJ9LHlhPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdChcIi5cIik7Zm9yKHZhciBiPXUsYz0wO2M8YS5sZW5ndGg7YysrKWlmKGI9YlthW2NdXSxudWxsPT1iKXJldHVybiBudWxsO3JldHVybiBifSx6YT1mdW5jdGlvbigpe30sdj1mdW5jdGlvbihhKXthLkM9dm9pZCAwO2EuZj1mdW5jdGlvbigpe3JldHVybiBhLkM/YS5DOmEuQz1uZXcgYX19LENhPWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxBYSkmJmFbQWFdfHwoYVtBYV09KytCYSl9LEFhPVwiY2xvc3VyZV91aWRfXCIrKDFFOSpNYXRoLnJhbmRvbSgpPj4+MCksQmE9MCxEYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sdz1EYXRlLm5vdyx4PWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hfTt2YXIgRWE7dmFyIHk9ZnVuY3Rpb24oYSxiKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYix2b2lkIDApfSxGYT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLHZvaWQgMCl9LEdhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhLGIsdm9pZCAwKX0sSGE9ZnVuY3Rpb24oYSxiKXthOntmb3IodmFyIGM9YS5sZW5ndGgsZD1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYmYi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpe2I9ZTticmVhayBhfWI9LTF9cmV0dXJuIDA+Yj9udWxsOlwic3RyaW5nXCI9PT10eXBlb2YgYT9hLmNoYXJBdChiKTphW2JdfSxJYT1mdW5jdGlvbihhLGIpe2E6e2Zvcih2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGQ9YS5sZW5ndGgtMTswPD1kO2QtLSlpZihkIGluIGMmJmIuY2FsbCh2b2lkIDAsY1tkXSxkLGEpKXtiPWQ7YnJlYWsgYX1iPS0xfXJldHVybiAwPmI/bnVsbDpcInN0cmluZ1wiPT09dHlwZW9mIGE/YS5jaGFyQXQoYik6YVtiXX0sSmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMDw9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX07dmFyIEthPWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7Ynx8KGM9YSgpLGI9ITApO3JldHVybiBjfX07dmFyIExhPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07dmFyIHo9ZnVuY3Rpb24oYSxiKXt0aGlzLmI9YT09PU1hJiZifHxcIlwiO3RoaXMuYz1OYX07ei5wcm90b3R5cGUubT0hMDt6LnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn07dmFyIE9hPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgeiYmYS5jb25zdHJ1Y3Rvcj09PXomJmEuYz09PU5hP2EuYjpcInR5cGVfZXJyb3I6Q29uc3RcIn0sQT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHooTWEsYSl9LE5hPXt9LE1hPXt9O3ZhciBCPWZ1bmN0aW9uKGEsYil7dGhpcy5jPWI9PT1QYT9hOlwiXCJ9O0IucHJvdG90eXBlLm09ITA7Qi5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmMudG9TdHJpbmcoKX07Qi5wcm90b3R5cGUuQj0hMDtCLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIDF9O3ZhciBRYT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEImJmEuY29uc3RydWN0b3I9PT1CP2EuYzpcInR5cGVfZXJyb3I6VHJ1c3RlZFJlc291cmNlVXJsXCJ9LFRhPWZ1bmN0aW9uKGEpe3ZhciBiPU9hKEEoXCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS91Zi8le2lkfT9lcnM9JXtlcnN9XCIpKTtpZighUmEudGVzdChiKSl0aHJvdyBFcnJvcihcIkludmFsaWQgVHJ1c3RlZFJlc291cmNlVXJsIGZvcm1hdDogXCIrYik7dmFyIGM9Yi5yZXBsYWNlKFNhLGZ1bmN0aW9uKGQsZSl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpKXRocm93IEVycm9yKCdGb3VuZCBtYXJrZXIsIFwiJytlKydcIiwgaW4gZm9ybWF0IHN0cmluZywgXCInK2IrJ1wiLCBidXQgbm8gdmFsaWQgbGFiZWwgbWFwcGluZyBmb3VuZCBpbiBhcmdzOiAnK0pTT04uc3RyaW5naWZ5KGEpKTtkPWFbZV07cmV0dXJuIGQgaW5zdGFuY2VvZiB6P09hKGQpOmVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpfSk7cmV0dXJuIG5ldyBCKGMsUGEpfSxTYT0vJXsoXFx3Kyl9L2csUmE9L14oKGh0dHBzOik/XFwvXFwvWzAtOWEtei46W1xcXS1dK1xcL3xcXC9bXi9cXFxcXXxbXjovXFxcXCVdK1xcL3xbXjovXFxcXCVdKls/I118YWJvdXQ6YmxhbmsjKS9pLFVhPS9eKFtePyNdKikoXFw/W14jXSopPygjW1xcc1xcU10qKT8vLFBhPXt9LFZhPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYylyZXR1cm4gYz9hK2VuY29kZVVSSUNvbXBvbmVudChjKTpcIlwiO2Zvcih2YXIgZCBpbiBjKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGQpKXt2YXIgZT1jW2RdO2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIGc9ZVtmXTtudWxsIT1nJiYoYnx8KGI9YSksYis9KGIubGVuZ3RoPmEubGVuZ3RoP1wiJlwiOlwiXCIpK2VuY29kZVVSSUNvbXBvbmVudChkKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGcpKSl9fXJldHVybiBifTt2YXIgV2E9ZnVuY3Rpb24oYSl7cmV0dXJuL15bXFxzXFx4YTBdKihbXFxzXFxTXSo/KVtcXHNcXHhhMF0qJC8uZXhlYyhhKVsxXX0sZGI9ZnVuY3Rpb24oYSl7aWYoIVhhLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZihcIiZcIikmJihhPWEucmVwbGFjZShZYSxcIiZhbXA7XCIpKTstMSE9YS5pbmRleE9mKFwiPFwiKSYmKGE9YS5yZXBsYWNlKFphLFwiJmx0O1wiKSk7LTEhPWEuaW5kZXhPZihcIj5cIikmJihhPWEucmVwbGFjZSgkYSxcIiZndDtcIikpOy0xIT1hLmluZGV4T2YoJ1wiJykmJihhPWEucmVwbGFjZShhYixcIiZxdW90O1wiKSk7LTEhPWEuaW5kZXhPZihcIidcIikmJihhPWEucmVwbGFjZShiYixcIiYjMzk7XCIpKTstMSE9YS5pbmRleE9mKFwiXFx4MDBcIikmJihhPWEucmVwbGFjZShjYixcIiYjMDtcIikpO3JldHVybiBhfSxZYT0vJi9nLFphPS88L2csJGE9Lz4vZyxhYj0vXCIvZyxiYj0vJy9nLGNiPS9cXHgwMC9nLFhhPS9bXFx4MDAmPD5cIiddLyxmYj1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YT1XYShTdHJpbmcoYSkpLnNwbGl0KFwiLlwiKTtiPVdhKFN0cmluZyhiKSkuc3BsaXQoXCIuXCIpO2Zvcih2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCksZT0wOzA9PWMmJmU8ZDtlKyspe3ZhciBmPWFbZV18fFwiXCIsZz1iW2VdfHxcIlwiO2Rve2Y9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZil8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtnPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGcpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07aWYoMD09ZlswXS5sZW5ndGgmJjA9PWdbMF0ubGVuZ3RoKWJyZWFrO2M9ZWIoMD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKSwwPT1nWzFdLmxlbmd0aD8wOnBhcnNlSW50KGdbMV0sMTApKXx8ZWIoMD09ZlsyXS5sZW5ndGgsMD09Z1syXS5sZW5ndGgpfHxlYihmWzJdLGdbMl0pO2Y9ZlszXTtnPWdbM119d2hpbGUoMD09Yyl9cmV0dXJuIGN9LGViPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfTt2YXIgQz1mdW5jdGlvbihhLGIpe3RoaXMuYz1iPT09Z2I/YTpcIlwifTtDLnByb3RvdHlwZS5tPSEwO0MucHJvdG90eXBlLmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jLnRvU3RyaW5nKCl9O0MucHJvdG90eXBlLkI9ITA7Qy5wcm90b3R5cGUuYj1mdW5jdGlvbigpe3JldHVybiAxfTt2YXIgaGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBDJiZhLmNvbnN0cnVjdG9yPT09Qz9hLmM6XCJ0eXBlX2Vycm9yOlNhZmVVcmxcIn0saWI9L14oPzphdWRpb1xcLyg/OjNncHAyfDNncHB8YWFjfEwxNnxtaWRpfG1wM3xtcDR8bXBlZ3xvZ2F8b2dnfG9wdXN8eC1tNGF8eC1tYXRyb3NrYXx4LXdhdnx3YXZ8d2VibSl8Zm9udFxcL1xcdyt8aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnB8eC1pY29uKXx0ZXh0XFwvY3N2fHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm18cXVpY2t0aW1lfHgtbWF0cm9za2EpKSg/OjtcXHcrPSg/Olxcdyt8XCJbXFx3Oyw9IF0rXCIpKSokL2ksamI9L15kYXRhOiguKik7YmFzZTY0LFthLXowLTkrXFwvXSs9KiQvaSxrYj0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwKTp8W146Lz8jXSooPzpbLz8jXXwkKSkvaSxnYj17fSxsYj1uZXcgQyhcImFib3V0OmludmFsaWQjekNsb3N1cmV6XCIsZ2IpO3ZhciBEO2E6e3ZhciBtYj11Lm5hdmlnYXRvcjtpZihtYil7dmFyIG5iPW1iLnVzZXJBZ2VudDtpZihuYil7RD1uYjticmVhayBhfX1EPVwiXCJ9O3ZhciBGPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmM9Yz09PW9iP2E6XCJcIjt0aGlzLmc9Yn07Ri5wcm90b3R5cGUuQj0hMDtGLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ307Ri5wcm90b3R5cGUubT0hMDtGLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy50b1N0cmluZygpfTt2YXIgcGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBGJiZhLmNvbnN0cnVjdG9yPT09Rj9hLmM6XCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCJ9LHFiPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBGKXJldHVybiBhO3ZhciBiPVwib2JqZWN0XCI9PXR5cGVvZiBhLGM9bnVsbDtiJiZhLkImJihjPWEuYigpKTthPWRiKGImJmEubT9hLmEoKTpTdHJpbmcoYSkpO3JldHVybiBuZXcgRihhLGMsb2IpfSxyYj0vXlthLXpBLVowLTktXSskLyxzYj17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sdWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz17c3JjOmF9LGQ9e307YT17fTtmb3IodmFyIGUgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxlKSYmKGFbZV09Y1tlXSk7Zm9yKGUgaW4gZClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKSYmKGFbZV09ZFtlXSk7aWYoYilmb3IoZSBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGUpKXt2YXIgZj1lLnRvTG93ZXJDYXNlKCk7aWYoZiBpbiBjKXRocm93IEVycm9yKFwiXCIpO2YgaW4gZCYmZGVsZXRlIGFbZl07YVtlXT1iW2VdfWI9bnVsbDtlPVwiXCI7aWYoYSlmb3IoZyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGcpKXtpZighcmIudGVzdChnKSl0aHJvdyBFcnJvcihcIlwiKTtkPWFbZ107aWYobnVsbCE9ZCl7Yz1nO2lmKGQgaW5zdGFuY2VvZiB6KWQ9T2EoZCk7ZWxzZXtpZihcInN0eWxlXCI9PWMudG9Mb3dlckNhc2UoKSl0aHJvdyBFcnJvcihcIlwiKTtpZigvXm9uL2kudGVzdChjKSl0aHJvdyBFcnJvcihcIlwiKTtpZihjLnRvTG93ZXJDYXNlKClpbiBzYilpZihkIGluc3RhbmNlb2YgQilkPVFhKGQpLnRvU3RyaW5nKCk7ZWxzZSBpZihkIGluc3RhbmNlb2YgQylkPWhiKGQpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkKWQgaW5zdGFuY2VvZiBDfHwoZD1cIm9iamVjdFwiPT10eXBlb2YgZCYmZC5tP2QuYSgpOlN0cmluZyhkKSxrYi50ZXN0KGQpP2Q9bmV3IEMoZCxnYik6KGQ9U3RyaW5nKGQpLGQ9ZC5yZXBsYWNlKC8oJTBBfCUwRCkvZyxcIlwiKSxkPShmPWQubWF0Y2goamIpKSYmaWIudGVzdChmWzFdKT9uZXcgQyhkLGdiKTpudWxsKSksZD0oZHx8bGIpLmEoKTtlbHNlIHRocm93IEVycm9yKFwiXCIpO31kLm0mJihkPWQuYSgpKTtjPWMrJz1cIicrZGIoU3RyaW5nKGQpKSsnXCInO2UrPVwiIFwiK2N9fXZhciBnPVwiPHNjcmlwdFwiK2U7ZT12b2lkIDA7bnVsbD09ZT9lPVtdOkFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7ITA9PT1MYS5zY3JpcHQ/Zys9XCI+XCI6KGI9dGIoZSksZys9XCI+XCIrcGIoYikudG9TdHJpbmcoKStcIlxceDNjL3NjcmlwdD5cIixiPWIuYigpKTsoYT1hJiZhLmRpcikmJigvXihsdHJ8cnRsfGF1dG8pJC9pLnRlc3QoYSk/Yj0wOmI9bnVsbCk7cmV0dXJuIG5ldyBGKGcsYixvYil9LHdiPWZ1bmN0aW9uKGEpe3ZhciBiPXFiKHZiKSxjPWIuYigpLGQ9W10sZT1mdW5jdGlvbihmKXtBcnJheS5pc0FycmF5KGYpP3koZixlKTooZj1xYihmKSxkLnB1c2gocGIoZikudG9TdHJpbmcoKSksZj1mLmIoKSwwPT1jP2M9ZjowIT1mJiZjIT1mJiYoYz1udWxsKSl9O3koYSxlKTtyZXR1cm4gbmV3IEYoZC5qb2luKHBiKGIpLnRvU3RyaW5nKCkpLGMsb2IpfSx0Yj1mdW5jdGlvbihhKXtyZXR1cm4gd2IoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9LG9iPXt9LHZiPW5ldyBGKHUudHJ1c3RlZFR5cGVzJiZ1LnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fFwiXCIsMCxvYik7dmFyIHhiPWZ1bmN0aW9uKGEsYil7YS53cml0ZShwYihiKSl9LHliPWZ1bmN0aW9uKGEsYil7YS5zcmM9UWEoYik7KGI9d2EoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGIpfTt2YXIgemI9ZnVuY3Rpb24oYSl7emJbXCIgXCJdKGEpO3JldHVybiBhfTt6YltcIiBcIl09emE7dmFyIEFiPXt9LEJiPW51bGw7dmFyIEc9ZnVuY3Rpb24oKXt9LENiPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksSD1mdW5jdGlvbihhLGIsYyxkKXthLmE9bnVsbDtifHwoYj1bXSk7YS5BPXZvaWQgMDthLmM9LTE7YS5oPWI7YTp7aWYoYj1hLmgubGVuZ3RoKXstLWI7dmFyIGU9YS5oW2JdO2lmKCEobnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpfHxDYiYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXthLmc9Yi1hLmM7YS5iPWU7YnJlYWsgYX19YS5nPU51bWJlci5NQVhfVkFMVUV9YS5vPXt9O2lmKGMpZm9yKGI9MDtiPGMubGVuZ3RoO2IrKyllPWNbYl0sZTxhLmc/KGUrPWEuYyxhLmhbZV09YS5oW2VdfHxEYik6KEViKGEpLGEuYltlXT1hLmJbZV18fERiKTtpZihkJiZkLmxlbmd0aClmb3IoYj0wO2I8ZC5sZW5ndGg7YisrKUZiKGEsZFtiXSl9LERiPVtdLEViPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZythLmM7YS5oW2JdfHwoYS5iPWEuaFtiXT17fSl9LEk9ZnVuY3Rpb24oYSxiKXtpZihiPGEuZyl7Yis9YS5jO3ZhciBjPWEuaFtiXTtyZXR1cm4gYz09PURiP2EuaFtiXT1bXTpjfWlmKGEuYilyZXR1cm4gYz1hLmJbYl0sYz09PURiP2EuYltiXT1bXTpjfSxKPWZ1bmN0aW9uKGEsYixjKXthPUkoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9LEdiPWZ1bmN0aW9uKGEsYil7YT1JKGEsYik7YT1udWxsPT1hP2E6K2E7cmV0dXJuIG51bGw9PWE/MDphfSxLPWZ1bmN0aW9uKGEsYixjKXtiPGEuZz9hLmhbYithLmNdPWM6KEViKGEpLGEuYltiXT1jKTtyZXR1cm4gYX0sRmI9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZCxlPTA7ZTxiLmxlbmd0aDtlKyspe3ZhciBmPWJbZV0sZz1JKGEsZik7bnVsbCE9ZyYmKGM9ZixkPWcsSyhhLGYsdm9pZCAwKSl9cmV0dXJuIGM/KEsoYSxjLGQpLGMpOjB9LEhiPWZ1bmN0aW9uKGEsYixjKXthLmF8fChhLmE9e30pO2lmKCFhLmFbY10pe3ZhciBkPUkoYSxjKTtkJiYoYS5hW2NdPW5ldyBiKGQpKX1yZXR1cm4gYS5hW2NdfSxMPWZ1bmN0aW9uKGEsYixjKXthLmF8fChhLmE9e30pO2lmKCFhLmFbY10pe2Zvcih2YXIgZD1JKGEsYyksZT1bXSxmPTA7ZjxkLmxlbmd0aDtmKyspZVtmXT1uZXcgYihkW2ZdKTthLmFbY109ZX1iPWEuYVtjXTtiPT1EYiYmKGI9YS5hW2NdPVtdKTtyZXR1cm4gYn0sSWI9ZnVuY3Rpb24oYSxiLGMpe2EuYXx8KGEuYT17fSk7Yz1jfHxbXTtmb3IodmFyIGQ9W10sZT0wO2U8Yy5sZW5ndGg7ZSsrKWRbZV09Y1tlXS5oO2EuYVtiXT1jO0soYSxiLGQpfTtHLnByb3RvdHlwZS5qPUNiP2Z1bmN0aW9uKCl7dmFyIGE9VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OO1VpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBiO3ZvaWQgMD09PWImJihiPTApO2lmKCFCYil7QmI9e307Zm9yKHZhciBjPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIi5zcGxpdChcIlwiKSxkPVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxlPTA7NT5lO2UrKyl7dmFyIGY9Yy5jb25jYXQoZFtlXS5zcGxpdChcIlwiKSk7QWJbZV09Zjtmb3IodmFyIGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXTt2b2lkIDA9PT1CYltoXSYmKEJiW2hdPWcpfX19Yj1BYltiXTtjPVtdO2ZvcihkPTA7ZDx0aGlzLmxlbmd0aDtkKz0zKXt2YXIgaz10aGlzW2RdLGw9KGU9ZCsxPHRoaXMubGVuZ3RoKT90aGlzW2QrMV06MDtoPShmPWQrMjx0aGlzLmxlbmd0aCk/dGhpc1tkKzJdOjA7Zz1rPj4yO2s9KGsmMyk8PDR8bD4+NDtsPShsJjE1KTw8MnxoPj42O2gmPTYzO2Z8fChoPTY0LGV8fChsPTY0KSk7Yy5wdXNoKGJbZ10sYltrXSxiW2xdfHxcIlwiLGJbaF18fFwiXCIpfXJldHVybiBjLmpvaW4oXCJcIil9O3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5oJiZ0aGlzLmgsSmIpfWZpbmFsbHl7VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OPWF9fTpmdW5jdGlvbigpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmgmJnRoaXMuaCxKYil9O3ZhciBKYj1mdW5jdGlvbihhLGIpe3JldHVyblwibnVtYmVyXCIhPT10eXBlb2YgYnx8IWlzTmFOKGIpJiZJbmZpbml0eSE9PWImJi1JbmZpbml0eSE9PWI/YjpTdHJpbmcoYil9O3ZhciBMYj1mdW5jdGlvbihhKXtyZXR1cm4gYT9uZXcgS2IoOT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudCk6RWF8fChFYT1uZXcgS2IpfSxLYj1mdW5jdGlvbihhKXt0aGlzLmE9YXx8dS5kb2N1bWVudHx8ZG9jdW1lbnR9O0tiLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYTthPVN0cmluZyhhKTtcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiPT09Yi5jb250ZW50VHlwZSYmKGE9YS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYi5jcmVhdGVFbGVtZW50KGEpfTtLYi5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oYSxiKXthLmFwcGVuZENoaWxkKGIpfTt2YXIgTmI9ZnVuY3Rpb24oYSl7TWIoKTtyZXR1cm4gbmV3IEIoYSxQYSl9LE1iPXphO3ZhciBPYj1mdW5jdGlvbigpe3JldHVybi0xIT1ELmluZGV4T2YoXCJpUGFkXCIpfHwtMSE9RC5pbmRleE9mKFwiQW5kcm9pZFwiKSYmLTE9PUQuaW5kZXhPZihcIk1vYmlsZVwiKXx8LTEhPUQuaW5kZXhPZihcIlNpbGtcIil9O3ZhciBQYj0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC8sUWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ZGVjb2RlVVJJKGEpOmF9O3ZhciBVYj1mdW5jdGlvbihhLGIpe3ZhciBjPVJiKCk7cmV0dXJuIWMmJiFTYigpJiYoYz1NYXRoLnJhbmRvbSgpLGM8Yik/KGM9VGIodSksYVtNYXRoLmZsb29yKGMqYS5sZW5ndGgpXSk6bnVsbH0sVGI9ZnVuY3Rpb24oYSl7aWYoIWEuY3J5cHRvKXJldHVybiBNYXRoLnJhbmRvbSgpO3RyeXt2YXIgYj1uZXcgVWludDMyQXJyYXkoMSk7YS5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGIpO3JldHVybiBiWzBdLzY1NTM2LzY1NTM2fWNhdGNoKGMpe3JldHVybiBNYXRoLnJhbmRvbSgpfX0sVmI9ZnVuY3Rpb24oYSxiKXtpZihhKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiLmNhbGwodm9pZCAwLGFbY10sYyxhKX0sU2I9S2EoZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChbXCJHb29nbGUgV2ViIFByZXZpZXdcIixcIk1lZGlhcGFydG5lcnMtR29vZ2xlXCIsXCJHb29nbGUtUmVhZC1BbG91ZFwiLFwiR29vZ2xlLUFkd29yZHNcIl0sV2Isdm9pZCAwKXx8MUUtND5NYXRoLnJhbmRvbSgpfSksUmI9S2EoZnVuY3Rpb24oKXtyZXR1cm4gV2IoXCJNU0lFXCIpfSksV2I9ZnVuY3Rpb24oYSl7cmV0dXJuLTEhPUQuaW5kZXhPZihhKX0sWGI9L14oLT9bMC05Ll17MSwzMH0pJC8sWWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGIudGVzdChhKSYmKGE9TnVtYmVyKGEpLCFpc05hTihhKSk/YTp2b2lkIDA9PWI/bnVsbDpifSxaYj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2EoKX1jYXRjaChhKXt9fSwkYj1LYShmdW5jdGlvbigpe3JldHVybiBPYigpfHwtMT09RC5pbmRleE9mKFwiaVBvZFwiKSYmLTE9PUQuaW5kZXhPZihcImlQaG9uZVwiKSYmLTE9PUQuaW5kZXhPZihcIkFuZHJvaWRcIikmJi0xPT1ELmluZGV4T2YoXCJJRU1vYmlsZVwiKT9PYigpPzE6MDoyfSksYWM9ZnVuY3Rpb24oKXt2YXIgYT12b2lkIDA9PT1hP3dpbmRvdzphO2lmKGE9UWIoYS5sb2NhdGlvbi5ocmVmLm1hdGNoKFBiKVszXXx8bnVsbCkpe3ZhciBiPWEubGVuZ3RoO2lmKDA9PWIpYT0wO2Vsc2V7Zm9yKHZhciBjPTMwNTQxOTg5NixkPTA7ZDxiO2QrKyljXj0oYzw8NSkrKGM+PjIpK2EuY2hhckNvZGVBdChkKSY0Mjk0OTY3Mjk1O2E9MDxjP2M6NDI5NDk2NzI5NitjfX1lbHNlIGE9bnVsbDtyZXR1cm4gYX07dmFyIGJjPWZ1bmN0aW9uKCl7fTt2YXIgY2M9ZnVuY3Rpb24oYSxiKXthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0c3x8KGEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzPVtdKTt2YXIgYz1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7Yy5zcmM9YjthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cy5wdXNoKGMpfSxlYz1mdW5jdGlvbihhKXt2YXIgYj1cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9Z3B0X2R1cGVpZFwiO1ZiKGEsZnVuY3Rpb24oYyxkKXtjJiYoYis9XCImXCIrZCtcIj1cIitlbmNvZGVVUklDb21wb25lbnQoYykpfSk7ZGMoYil9LGRjPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdztiLmZldGNoP2IuZmV0Y2goYSx7a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwiLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsbW9kZTpcIm5vLWNvcnNcIn0pOmNjKGIsYSl9O3ZhciBmYz17fTt2YXIgZ2M9ZnVuY3Rpb24oKXt9LGhjPWZ1bmN0aW9uKGEsYil7aWYoYiE9PWZjKXRocm93IEVycm9yKFwiQmFkIHNlY3JldFwiKTt0aGlzLmE9YX07cmEoaGMsZ2MpO2hjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O25ldyBoYyhcImFib3V0OmJsYW5rXCIsZmMpO25ldyBoYyhcImFib3V0OmludmFsaWQjelRTelwiLGZjKTt2YXIgamM9ZnVuY3Rpb24oYSl7SCh0aGlzLGEsaWMsbnVsbCl9O3goamMsRyk7dmFyIGljPVs2XTt2YXIga2M9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RyeXt2YXIgZz1hLmEsaD1hLmNyZWF0ZUVsZW1lbnQoXCJTQ1JJUFRcIik7aC5hc3luYz0hMDt5YihoLGIpO2cuaGVhZC5hcHBlbmRDaGlsZChoKTtoLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsZnVuY3Rpb24oKXtlKCk7ZCYmZy5oZWFkLnJlbW92ZUNoaWxkKGgpfSk7aC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixmdW5jdGlvbigpezA8Yz9rYyhhLGIsYy0xLGQsZSxmKTooZCYmZy5oZWFkLnJlbW92ZUNoaWxkKGgpLGYoKSl9KX1jYXRjaChrKXtmKCl9fTt2YXIgbGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb2N1bWVudCxjPUxiKGEpLGQ9ZnVuY3Rpb24oKXtpZighYS5mcmFtZXMuZ29vZ2xlZmNQcmVzZW50KWlmKGIuYm9keSl7dmFyIGU9Yy5jcmVhdGVFbGVtZW50KFwiSUZSQU1FXCIpO2Uuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtlLnN0eWxlLndpZHRoPVwiMHB4XCI7ZS5zdHlsZS5oZWlnaHQ9XCIwcHhcIjtlLnN0eWxlLmJvcmRlcj1cIm5vbmVcIjtlLnN0eWxlLnpJbmRleD1cIi0xMDAwXCI7ZS5zdHlsZS5sZWZ0PVwiLTEwMDBweFwiO2Uuc3R5bGUudG9wPVwiLTEwMDBweFwiO2UubmFtZT1cImdvb2dsZWZjUHJlc2VudFwiO2IuYm9keS5hcHBlbmRDaGlsZChlKX1lbHNlIGEuc2V0VGltZW91dChkLDUpfTtkKCl9O3ZhciBtYz1mdW5jdGlvbihhLGIpe3RoaXMuYT1hO3RoaXMuYj1MYih0aGlzLmEpO3RoaXMuYz1ifTttYy5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt0cnl7bGModGhpcy5hKSxuYyh0aGlzKX1jYXRjaChhKXt9fTt2YXIgbmM9ZnVuY3Rpb24oYSl7dmFyIGI9VGEoe2lkOmEuYyxlcnM6M30pO2tjKGEuYixiLDAsITEsZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7fSl9O3ZhciBvYz1mdW5jdGlvbihhLGIpe3ZhciBjPXZvaWQgMD09PWM/e306Yzt0aGlzLmVycm9yPWE7dGhpcy5jb250ZXh0PWIuY29udGV4dDt0aGlzLm1zZz1iLm1lc3NhZ2V8fFwiXCI7dGhpcy5pZD1iLmlkfHxcImpzZXJyb3JcIjt0aGlzLm1ldGE9Y307dmFyIHBjPW51bGwscWM9ZnVuY3Rpb24oKXtpZihudWxsPT09cGMpe3BjPVwiXCI7dHJ5e3ZhciBhPVwiXCI7dHJ5e2E9dS50b3AubG9jYXRpb24uaGFzaH1jYXRjaChjKXthPXUubG9jYXRpb24uaGFzaH1pZihhKXt2YXIgYj1hLm1hdGNoKC9cXGJkZWlkPShbXFxkLF0rKS8pO3BjPWI/YlsxXTpcIlwifX1jYXRjaChjKXt9fXJldHVybiBwY307dmFyIHRjPWZ1bmN0aW9uKGEpe0godGhpcyxhLHJjLHNjKX07eCh0YyxHKTt2YXIgcmM9WzIsOF0sc2M9W1szLDQsNV0sWzYsN11dO3ZhciB1Yz1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8hYTphfSx2Yz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0hMSxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWFbZF0uY2FsbCgpO2lmKGU9PWIpcmV0dXJuIGU7bnVsbD09ZSYmKGM9ITApfWlmKCFjKXJldHVybiFifSx4Yz1mdW5jdGlvbihhLGIpe3ZhciBjPUwoYSx0YywyKTtpZighYy5sZW5ndGgpcmV0dXJuIHdjKGEsYik7YT1KKGEsMSwwKTtpZigxPT1hKXJldHVybiB1Yyh4YyhjWzBdLGIpKTtjPUdhKGMsZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHhjKGQsYil9fSk7c3dpdGNoKGEpe2Nhc2UgMjpyZXR1cm4gdmMoYywhMSk7Y2FzZSAzOnJldHVybiB2YyhjLCEwKX19LHdjPWZ1bmN0aW9uKGEsYil7dmFyIGM9RmIoYSxzY1swXSk7YTp7c3dpdGNoKGMpe2Nhc2UgMzp2YXIgZD1KKGEsMywwKTticmVhayBhO2Nhc2UgNDpkPUooYSw0LDApO2JyZWFrIGE7Y2FzZSA1OmQ9SihhLDUsMCk7YnJlYWsgYX1kPXZvaWQgMH1pZihkJiYoYj0oYj1iW2NdKSYmYltkXSkpe3RyeXt2YXIgZT1iLmFwcGx5KG51bGwsSShhLDgpKX1jYXRjaChmKXtyZXR1cm59Yj1KKGEsMSwwKTtpZig0PT1iKXJldHVybiEhZTtkPW51bGwhPWU7aWYoNT09YilyZXR1cm4gZDtpZigxMj09YilhPUooYSw3LFwiXCIpO2Vsc2UgYTp7c3dpdGNoKGMpe2Nhc2UgNDphPUdiKGEsNik7YnJlYWsgYTtjYXNlIDU6YT1KKGEsNyxcIlwiKTticmVhayBhfWE9dm9pZCAwfWlmKG51bGwhPWEpe2lmKDY9PWIpcmV0dXJuIGU9PT1hO2lmKDk9PWIpcmV0dXJuIDA9PWZiKGUsYSk7aWYoZClzd2l0Y2goYil7Y2FzZSA3OnJldHVybiBlPGE7Y2FzZSA4OnJldHVybiBlPmE7Y2FzZSAxMjpyZXR1cm4obmV3IFJlZ0V4cChhKSkudGVzdChlKTtjYXNlIDEwOnJldHVybi0xPT1mYihlLGEpO2Nhc2UgMTE6cmV0dXJuIDE9PWZiKGUsYSl9fX19LHljPWZ1bmN0aW9uKGEsYil7cmV0dXJuIWF8fCEoIWJ8fCF4YyhhLGIpKX07dmFyIEFjPWZ1bmN0aW9uKGEpe0godGhpcyxhLHpjLG51bGwpfTt4KEFjLEcpO3ZhciB6Yz1bNF07dmFyIE09ZnVuY3Rpb24oYSl7SCh0aGlzLGEsQmMsQ2MpfTt4KE0sRyk7dmFyIERjPWZ1bmN0aW9uKGEpe0godGhpcyxhLG51bGwsbnVsbCl9O3goRGMsRyk7dmFyIEJjPVs1XSxDYz1bWzEsMiwzLDYsN11dO3ZhciBOPWZ1bmN0aW9uKCl7dmFyIGE9e307dGhpcy5hPShhWzNdPXt9LGFbNF09e30sYVs1XT17fSxhKX07dihOKTt2YXIgRWM9L150cnVlJC8udGVzdChcImZhbHNlXCIpO3ZhciBGYz1FYyxHYz1mdW5jdGlvbihhLGIpe3N3aXRjaChiKXtjYXNlIDE6cmV0dXJuIEooYSwxLDApO2Nhc2UgMjpyZXR1cm4gSihhLDIsMCk7Y2FzZSAzOnJldHVybiBKKGEsMywwKTtjYXNlIDY6cmV0dXJuIEooYSw2LDApO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxIYz1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBudWxsO3N3aXRjaChiKXtjYXNlIDE6cmV0dXJuIGE9SShhLDEpLGE9bnVsbD09YT9hOiEhYSxudWxsPT1hPyExOmE7Y2FzZSA3OnJldHVybiBKKGEsMyxcIlwiKTtjYXNlIDI6cmV0dXJuIEdiKGEsMik7Y2FzZSAzOnJldHVybiBKKGEsMyxcIlwiKTtjYXNlIDY6cmV0dXJuIEkoYSw0KTtkZWZhdWx0OnJldHVybiBudWxsfX0sSWM9S2EoZnVuY3Rpb24oKXtpZighRmMpcmV0dXJue307dHJ5e3ZhciBhPXdpbmRvdy5zZXNzaW9uU3RvcmFnZSYmd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJHR0RGU1NLXCIpO2lmKGEpcmV0dXJuIEpTT04ucGFyc2UoYSl9Y2F0Y2goYil7fXJldHVybnt9fSksTGM9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kPzA6ZDt2YXIgZT1JYygpO2lmKGVbYV0mJm51bGwhPWVbYV1bYl0pcmV0dXJuIGVbYV1bYl07Yj1KYyhkKVthXVtiXTtpZighYilyZXR1cm4gYztiPW5ldyBNKGIpO2I9S2MoYik7YT1IYyhiLGEpO3JldHVybiBudWxsIT1hP2E6Y30sS2M9ZnVuY3Rpb24oYSl7dmFyIGI9Ti5mKCkuYTtpZihiKXt2YXIgYz1JYShMKGEsRGMsNSksZnVuY3Rpb24oZCl7cmV0dXJuIHljKEhiKGQsdGMsMSksYil9KTtpZihjKXJldHVybiBIYihjLEFjLDIpfXJldHVybiBIYihhLEFjLDQpfSxNYz1mdW5jdGlvbigpe3RoaXMuYT17fTt0aGlzLmI9W119O3YoTWMpO3ZhciBOYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuISFMYygxLGEsdm9pZCAwPT09Yj8hMTpiLGMpfSxPYz1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iPzA6YjthPU51bWJlcihMYygyLGEsYixjKSk7cmV0dXJuIGlzTmFOKGEpP2I6YX0sUGM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBMYygzLGEsdm9pZCAwPT09Yj9cIlwiOmIsYyl9LFFjPWZ1bmN0aW9uKGEsYixjKXtiPXZvaWQgMD09PWI/W106YjtyZXR1cm4gTGMoNixhLGIsYyl9LEpjPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O3JldHVybiBNYy5mKCkuYVthXXx8KE1jLmYoKS5hW2FdPShiWzFdPXt9LGJbMl09e30sYlszXT17fSxiWzZdPXt9LGIpKX0sUmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KYyhiKTtWYihhLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIFZiKGQsZnVuY3Rpb24oZixnKXtyZXR1cm4gY1tlXVtnXT1mfSl9KX0sU2M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KYyhiKTt5KGEsZnVuY3Rpb24oZCl7dmFyIGU9RmIoZCxDY1swXSksZj1HYyhkLGUpO2YmJihjW2VdW2ZdPWQuaCl9KX0sVGM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KYyhiKTt5KGEsZnVuY3Rpb24oZCl7dmFyIGU9bmV3IE0oZCksZj1GYihlLENjWzBdKTsoZT1HYyhlLGYpKSYmKGNbZl1bZV18fChjW2ZdW2VdPWQpKX0pfSxVYz1mdW5jdGlvbigpe3JldHVybiBHYShuKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsTWMuZigpLmEpLGZ1bmN0aW9uKGEpe3JldHVybiBOdW1iZXIoYSl9KX0sVmM9ZnVuY3Rpb24oYSl7SmEoTWMuZigpLmIsYSl8fFJjKEpjKDQpLGEpfTt2YXIgTz1mdW5jdGlvbihhKXt0aGlzLm1ldGhvZE5hbWU9YX0sV2M9bmV3IE8oMSksWGM9bmV3IE8oMTUpLFljPW5ldyBPKDIpLFpjPW5ldyBPKDMpLCRjPW5ldyBPKDQpLGFkPW5ldyBPKDUpLGJkPW5ldyBPKDYpLGNkPW5ldyBPKDcpLGRkPW5ldyBPKDgpLGVkPW5ldyBPKDkpLGZkPW5ldyBPKDEwKSxnZD1uZXcgTygxMSksaGQ9bmV3IE8oMTIpLGlkPW5ldyBPKDEzKSxqZD1uZXcgTygxNCksUD1mdW5jdGlvbihhLGIsYyl7Yy5oYXNPd25Qcm9wZXJ0eShhLm1ldGhvZE5hbWUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoYyxTdHJpbmcoYS5tZXRob2ROYW1lKSx7dmFsdWU6Yn0pfSxRPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYlthLm1ldGhvZE5hbWVdfHxjfHxmdW5jdGlvbigpe319LGtkPWZ1bmN0aW9uKGEpe1AoYWQsTmMsYSk7UChiZCxPYyxhKTtQKGNkLFBjLGEpO1AoZGQsUWMsYSk7UChpZCxUYyxhKTtQKFhjLFZjLGEpfSxsZD1mdW5jdGlvbihhKXtQKCRjLGZ1bmN0aW9uKGIpe04uZigpLmE9Yn0sYSk7UChlZCxmdW5jdGlvbihiLGMpe3ZhciBkPU4uZigpO2QuYVszXVtiXXx8KGQuYVszXVtiXT1jKX0sYSk7UChmZCxmdW5jdGlvbihiLGMpe3ZhciBkPU4uZigpO2QuYVs0XVtiXXx8KGQuYVs0XVtiXT1jKX0sYSk7UChnZCxmdW5jdGlvbihiLGMpe3ZhciBkPU4uZigpO2QuYVs1XVtiXXx8KGQuYVs1XVtiXT1jKX0sYSk7UChqZCxmdW5jdGlvbihiKXtmb3IodmFyIGM9Ti5mKCksZD1yKFszLDQsNV0pLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWU9ZS52YWx1ZSxEYShjLmFbZV0sYltlXSl9LGEpfSxtZD1mdW5jdGlvbihhKXthLmhhc093blByb3BlcnR5KFwiaW5pdC1kb25lXCIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImluaXQtZG9uZVwiLHt2YWx1ZTohMH0pfTt2YXIgbmQ9ZnVuY3Rpb24oKXt0aGlzLmE9ZnVuY3Rpb24oKXt9O3RoaXMuYj1mdW5jdGlvbigpe3JldHVybltdfX0sb2Q9ZnVuY3Rpb24oYSxiLGMpe2EuYT1mdW5jdGlvbihkKXtRKFljLGIsZnVuY3Rpb24oKXtyZXR1cm5bXX0pKGQsYyl9O2EuYj1mdW5jdGlvbigpe3JldHVybiBRKFpjLGIsZnVuY3Rpb24oKXtyZXR1cm5bXX0pKGMpfX07dihuZCk7dmFyIHBkPWZ1bmN0aW9uKGEsYil7dHJ5e2E6e3ZhciBjPWEuc3BsaXQoXCIuXCIpO2E9dTtmb3IodmFyIGQ9MCxlO2Q8Yy5sZW5ndGg7ZCsrKWlmKGU9YSxhPWFbY1tkXV0sbnVsbD09YSl7dmFyIGY9bnVsbDticmVhayBhfWY9XCJmdW5jdGlvblwiPT09dHlwZW9mIGE/ZVtjW2QtMV1dKCk6YX1pZih0eXBlb2YgZj09PWIpcmV0dXJuIGZ9Y2F0Y2goZyl7fX0scWQ9ZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzWzNdPShhWzhdPWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gbnVsbCE9eWEoYil9Y2F0Y2goYyl7fX0sYVs5XT1mdW5jdGlvbihiKXt0cnl7dmFyIGM9eWEoYil9Y2F0Y2goZCl7cmV0dXJufWlmKGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIGMpYz1jJiZjLnRvU3RyaW5nJiZjLnRvU3RyaW5nKCksYj1cInN0cmluZ1wiPT09dHlwZW9mIGMmJi0xIT1jLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpO3JldHVybiBifSxhWzEwXT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3c9PXdpbmRvdy50b3B9LGFbNl09ZnVuY3Rpb24oYil7cmV0dXJuIEphKG5kLmYoKS5iKCkscGFyc2VJbnQoYiwxMCkpfSxhWzI3XT1mdW5jdGlvbihiKXtiPXBkKGIsXCJib29sZWFuXCIpO3JldHVybiB2b2lkIDAhPT1iP2I6dm9pZCAwfSxhKTthPXt9O3RoaXNbNF09KGFbM109ZnVuY3Rpb24oKXtyZXR1cm4gJGIoKX0sYVs2XT1mdW5jdGlvbihiKXtiPXBkKGIsXCJudW1iZXJcIik7cmV0dXJuIHZvaWQgMCE9PWI/Yjp2b2lkIDB9LGEpO2E9e307dGhpc1s1XT0oYVsyXT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZn0sYVszXT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2luZG93LnRvcC5sb2NhdGlvbi5oYXNofWNhdGNoKGIpe3JldHVyblwiXCJ9fSxhWzRdPWZ1bmN0aW9uKGIpe2I9cGQoYixcInN0cmluZ1wiKTtyZXR1cm4gdm9pZCAwIT09Yj9iOnZvaWQgMH0sYSl9O3YocWQpO3ZhciByZD1mdW5jdGlvbigpe3ZhciBhPXZvaWQgMD09PWE/dTphO3JldHVybiBhLmdnZWFjfHwoYS5nZ2VhYz17fSl9O3ZhciB0ZD1mdW5jdGlvbihhKXtIKHRoaXMsYSxzZCxudWxsKX07eCh0ZCxHKTt2YXIgc2Q9WzJdO3RkLnByb3RvdHlwZS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiBKKHRoaXMsMSwwKX07dGQucHJvdG90eXBlLnM9ZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzLDcsMCl9O3ZhciB2ZD1mdW5jdGlvbihhKXtIKHRoaXMsYSx1ZCxudWxsKX07eCh2ZCxHKTt2YXIgdWQ9WzJdO3ZkLnByb3RvdHlwZS5zPWZ1bmN0aW9uKCl7cmV0dXJuIEoodGhpcyw1LDApfTt2YXIgeGQ9ZnVuY3Rpb24oYSl7SCh0aGlzLGEsd2QsbnVsbCl9O3goeGQsRyk7dmFyIFI9ZnVuY3Rpb24oYSl7SCh0aGlzLGEseWQsbnVsbCl9O3goUixHKTt2YXIgd2Q9WzEsNCwyLDNdLHlkPVsyXTtSLnByb3RvdHlwZS5zPWZ1bmN0aW9uKCl7cmV0dXJuIEoodGhpcywxLDApfTt2YXIgemQ9WzEyLDEzXSxBZD1mdW5jdGlvbigpe30sQmQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dm9pZCAwPT09ZD97fTpkO2Q9dm9pZCAwPT09ZS5LPyExOmUuSzt2YXIgZj12b2lkIDA9PT1lLk0/e306ZS5NO2U9dm9pZCAwPT09ZS5TP1tdOmUuUzthLmE9YjthLmo9ZDthLmc9ZjtiPXt9O2EuYj0oYltjXT1lLGJbNF09W10sYik7YS5jPXt9OyhjPXFjKCkpJiZ5KGMuc3BsaXQoXCIsXCIpfHxbXSxmdW5jdGlvbihnKXsoZz1wYXJzZUludChnLDEwKSkmJihhLmNbZ109ITApfSk7cmV0dXJuIGF9LEdkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPUNkKGEuYSxiKTtpZihlLmxlbmd0aCl7OSE9PWImJihhLmE9RGQoYS5hLGIpKTt2YXIgZj1KYSh6ZCxiKTt5KGUsZnVuY3Rpb24oZyl7aWYoZz1FZChhLGcsYykpe3ZhciBoPWcuZ2V0SWQoKTtkLnB1c2goaCk7RmQoYSxoLGY/NDpjKTt2YXIgaz1MKGcsTSwyKTtrJiYoZj95KFVjKCksZnVuY3Rpb24obCl7cmV0dXJuIFNjKGssbCl9KTpTYyhrLGMpKX19KX1yZXR1cm4gZH0sRmQ9ZnVuY3Rpb24oYSxiLGMpe2EuYltjXXx8KGEuYltjXT1bXSk7YT1hLmJbY107SmEoYSxiKT9lYyh7ZWlkczpKU09OLnN0cmluZ2lmeShhKSxkdXA6Yn0pOmEucHVzaChiKX0sSGQ9ZnVuY3Rpb24oYSxiKXthLmEucHVzaC5hcHBseShhLmEsa2EoRmEoR2EoYixmdW5jdGlvbihjKXtyZXR1cm4gbmV3IFIoYyl9KSxmdW5jdGlvbihjKXtyZXR1cm4hSmEoemQsYy5zKCkpfSkpKX0sRWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU4uZigpLmE7aWYoIXljKEhiKGIsdGMsMyksZCkpcmV0dXJuIG51bGw7dmFyIGU9TChiLHRkLDIpLGY9ZS5sZW5ndGgqSihiLDEsMCksZz1KKGIsNiwwKTtpZihnKXtmPWRbNF07c3dpdGNoKGMpe2Nhc2UgMjp2YXIgaD1mWzhdO2JyZWFrO2Nhc2UgMTpoPWZbN119Zj1udWxsO2lmKGgpdHJ5e2Y9aChnKX1jYXRjaChrKXt9bnVsbD09PWYmJihmPU1hdGguZmxvb3IoMUUzKlRiKHdpbmRvdykpKTtiPUlkKGIsZik7cmV0dXJuIWJ8fGQmJiF5YyhIYihiLHRjLDMpLGQpP251bGw6SmQoYSxbYl0sMSl9Zz1kP0ZhKGUsZnVuY3Rpb24oayl7cmV0dXJuIHljKEhiKGssdGMsMyksZCl9KTplO3JldHVybiBnLmxlbmd0aD8oYj1KKGIsNCwwKSk/S2QoYSxiLGYsZyk6SmQoYSxnLGYvMUUzKTpudWxsfSxLZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1udWxsIT1hLmdbYl0/YS5nW2JdOjFFMztpZigwPj1lKXJldHVybiBudWxsO2Q9SmQoYSxkLGMvZSk7YS5nW2JdPWQ/MDplLWM7cmV0dXJuIGR9LEpkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmMsZT1IYShiLGZ1bmN0aW9uKGYpe3JldHVybiEhZFtmLmdldElkKCldfSk7cmV0dXJuIGU/ZTphLmo/bnVsbDpVYihiLGMpfSxMZD1mdW5jdGlvbihhLGIpe1AoV2MsZnVuY3Rpb24oYyl7YS5jW2NdPSEwfSxiKTtQKFljLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIEdkKGEsYyxkKX0sYik7UChaYyxmdW5jdGlvbihjKXtyZXR1cm4oYS5iW2NdfHxbXSkuY29uY2F0KGEuYls0XSl9LGIpO1AoaGQsZnVuY3Rpb24oYyl7cmV0dXJuIEhkKGEsYyl9LGIpfTt2KEFkKTt2YXIgQ2Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1IYShhLGZ1bmN0aW9uKGMpe3JldHVybiBjLnMoKT09Yn0pKSYmTChhLHZkLDIpfHxbXX0sRGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRmEoYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5zKCkhPWJ9KX0sSWQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1MKGEsdGQsMiksZD1jLmxlbmd0aCxlPUooYSwxLDApO2E9SihhLDgsMCk7dmFyIGY9KGItYSklZDtyZXR1cm4gYjxhfHxiLWEtZj49ZCplLTE/bnVsbDpjW2ZdfTt2YXIgTWQ9ZnVuY3Rpb24oKXt0aGlzLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8hMTpifTt0aGlzLmM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8wOmJ9O3RoaXMuYT1mdW5jdGlvbigpe319LE5kPWZ1bmN0aW9uKGEsYixjKXthLmI9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gUShhZCxiKShkLGUsYyl9O2EuYz1mdW5jdGlvbihkLGUpe3JldHVybiBRKGJkLGIpKGQsZSxjKX07YS5hPWZ1bmN0aW9uKCl7UShYYyxiKShjKX19O3YoTWQpO3ZhciBTPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/ITE6YjtyZXR1cm4gTWQuZigpLmIoYSxiKX07dmFyIE9kPWZ1bmN0aW9uKCl7dGhpcy5hPWZ1bmN0aW9uKCl7fX07dihPZCk7dmFyIFBkPWZ1bmN0aW9uKGEpe09kLmYoKS5hKGEpfTt2YXIgU2Q9ZnVuY3Rpb24oYSl7dmFyIGI9UWQuZigpLGM9e0s6VCgyMTEpLE06VCgyMjcpLFM6VCgyMjYpfSxkPXZvaWQgMCxlPTI7ZD12b2lkIDA9PT1kP3JkKCk6ZDtlPXZvaWQgMD09PWU/MDplO2QuaGFzT3duUHJvcGVydHkoXCJpbml0LWRvbmVcIik/KFEoaGQsZCkoR2EoTChhLFIsMiksZnVuY3Rpb24oZil7cmV0dXJuIGYuaH0pKSxRKGlkLGQpKEdhKEwoYSxNLDEpLGZ1bmN0aW9uKGYpe3JldHVybiBmLmh9KSxlKSxiJiZRKGpkLGQpKGIpLFJkKGQsZSkpOihMZChCZChBZC5mKCksTChhLFIsMiksZSxjKSxkKSxrZChkKSxsZChkKSxtZChkKSxSZChkLGUpLFNjKEwoYSxNLDEpLGUpLEZjPUZjfHwhKCFjfHwhYy5YKSxQZChxZC5mKCkpLGImJlBkKGIpKX0sUmQ9ZnVuY3Rpb24oYSxiKXthPXZvaWQgMD09PWE/cmQoKTphO2I9dm9pZCAwPT09Yj8wOmI7dmFyIGM9YSxkPWI7ZD12b2lkIDA9PT1kPzA6ZDtvZChuZC5mKCksYyxkKTtjPWE7Yj12b2lkIDA9PT1iPzA6YjtOZChNZC5mKCksYyxiKTtPZC5mKCkuYT1RKGpkLGEpO01kLmYoKS5hKCl9O3ZhciBUZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9XCJzY3JpcHRcIjtkPXZvaWQgMD09PWQ/XCJcIjpkO3ZhciBlPWEuY3JlYXRlRWxlbWVudChcImxpbmtcIik7dHJ5e2UucmVsPVwicHJlbG9hZFwiO2lmKGIgaW5zdGFuY2VvZiBCKXZhciBmPVFhKGIpLnRvU3RyaW5nKCk7ZWxzZXtpZihiIGluc3RhbmNlb2YgQyl2YXIgZz1oYihiKTtlbHNle2lmKGIgaW5zdGFuY2VvZiBDKXZhciBoPWI7ZWxzZSBiPVwib2JqZWN0XCI9PXR5cGVvZiBiJiZiLm0/Yi5hKCk6U3RyaW5nKGIpLGtiLnRlc3QoYil8fChiPVwiYWJvdXQ6aW52YWxpZCN6Q2xvc3VyZXpcIiksaD1uZXcgQyhiLGdiKTtnPWhiKGgpfWY9Z31lLmhyZWY9Zn1jYXRjaChrKXtyZXR1cm59ZCYmKGUuYXM9ZCk7YyYmZS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGMpO2lmKGE9YS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0pdHJ5e2EuYXBwZW5kQ2hpbGQoZSl9Y2F0Y2goayl7fX07dmFyIFVkPS9eXFwuZ29vZ2xlXFwuKGNvbT9cXC4pP1thLXpdezIsM30kLyxWZD0vXFwuKGNufGNvbVxcLmJpfGRvfHNsfGJhfGJ5fG1hfGFtKSQvLFdkPWZ1bmN0aW9uKGEpe3JldHVybiBVZC50ZXN0KGEpJiYhVmQudGVzdChhKX0sWGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xcV10vZyxmdW5jdGlvbihiKXtyZXR1cm5cIiYjXCIrYi5jaGFyQ29kZUF0KCkrXCI7XCJ9KX0sVT11LFlkPWZ1bmN0aW9uKGEsYil7YT1cImh0dHBzOi8vYWRzZXJ2aWNlXCIrKGIrXCIvYWRzaWQvaW50ZWdyYXRvci5cIithKTtiPVtcImRvbWFpbj1cIitlbmNvZGVVUklDb21wb25lbnQodS5sb2NhdGlvbi5ob3N0bmFtZSldO1ZbM10+PXcoKSYmYi5wdXNoKFwiYWRzaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFZbMV0pKTtyZXR1cm4gYStcIj9cIitiLmpvaW4oXCImXCIpfSxWLFcsWmQ9ZnVuY3Rpb24oKXtVPXU7Vj1VLmdvb2dsZVRva2VuPVUuZ29vZ2xlVG9rZW58fHt9O3ZhciBhPXcoKTtWWzFdJiZWWzNdPmEmJjA8VlsyXXx8KFZbMV09XCJcIixWWzJdPS0xLFZbM109LTEsVls0XT1cIlwiLFZbNl09XCJcIik7Vz1VLmdvb2dsZUlNU3RhdGU9VS5nb29nbGVJTVN0YXRlfHx7fTtXZChXWzFdKXx8KFdbMV09XCIuZ29vZ2xlLmNvbVwiKTtBcnJheS5pc0FycmF5KFdbNV0pfHwoV1s1XT1bXSk7XCJib29sZWFuXCIhPT10eXBlb2YgV1s2XSYmKFdbNl09ITEpO0FycmF5LmlzQXJyYXkoV1s3XSl8fChXWzddPVtdKTtcIm51bWJlclwiIT09dHlwZW9mIFdbOF0mJihXWzhdPTApfSwkZD1mdW5jdGlvbihhKXt0cnl7YSgpfWNhdGNoKGIpe3Uuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGI7fSwwKX19LGJlPWZ1bmN0aW9uKGEpe1wiY29tcGxldGVcIj09dS5kb2N1bWVudC5yZWFkeVN0YXRlfHxcImxvYWRlZFwiPT11LmRvY3VtZW50LnJlYWR5U3RhdGV8fHUuZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmdS5kb2N1bWVudC5jdXJyZW50U2NyaXB0LmFzeW5jP2FlKDMpOmEoKX0sY2U9MCxkZT17dTpmdW5jdGlvbigpe3JldHVybiAwPFdbOF19LEc6ZnVuY3Rpb24oKXtXWzhdKyt9LE86ZnVuY3Rpb24oKXswPFdbOF0mJldbOF0tLX0sUDpmdW5jdGlvbigpe1dbOF09MH0sdjpmdW5jdGlvbigpe30sVDpmdW5jdGlvbigpe3JldHVybiExfSxMOmZ1bmN0aW9uKCl7cmV0dXJuIFdbNV19LEo6JGR9LGVlPXt1OmZ1bmN0aW9uKCl7cmV0dXJuIFdbNl19LEc6ZnVuY3Rpb24oKXtXWzZdPSEwfSxPOmZ1bmN0aW9uKCl7V1s2XT0hMX0sUDpmdW5jdGlvbigpe1dbNl09ITF9LHY6ZnVuY3Rpb24oKXt9LFQ6ZnVuY3Rpb24oKXtyZXR1cm5cIi5nb29nbGUuY29tXCIhPVdbMV0mJjI8KytjZX0sTDpmdW5jdGlvbigpe3JldHVybiBXWzddfSxKOmZ1bmN0aW9uKGEpe2JlKGZ1bmN0aW9uKCl7JGQoYSl9KX19LGFlPWZ1bmN0aW9uKGEpezFFLTU+TWF0aC5yYW5kb20oKSYmY2ModSxcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9aW1lcnImZXJyPVwiK2EpfTtkZS52PWZ1bmN0aW9uKCl7aWYoIWRlLnUoKSl7dmFyIGE9dS5kb2N1bWVudCxiPWZ1bmN0aW9uKGUpe2U9WWQoXCJqc1wiLGUpO3ZhciBmPVpiKCk7VGQoYSxlLGYpO2Y9YS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2YudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2Yub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiB1LnByb2Nlc3NHb29nbGVUb2tlbih7fSwyKX07ZT1OYihlKTt5YihmLGUpO3RyeXsoYS5oZWFkfHxhLmJvZHl8fGEuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChmKSxkZS5HKCl9Y2F0Y2goZyl7fX0sYz1XWzFdO2IoYyk7XCIuZ29vZ2xlLmNvbVwiIT1jJiZiKFwiLmdvb2dsZS5jb21cIik7Yj17fTt2YXIgZD0oYi5uZXdUb2tlbj1cIkZCVFwiLGIpO3Uuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB1LnByb2Nlc3NHb29nbGVUb2tlbihkLDEpfSwxRTMpfX07ZWUudj1mdW5jdGlvbigpe2lmKCFlZS51KCkpe3ZhciBhPXUuZG9jdW1lbnQsYj1ZZChcInN5bmMuanNcIixXWzFdKSxjPVpiKCk7VGQoYSxiLGMpO2I9WGQoYik7dmFyIGQ9emIoXCJzY3JpcHRcIiksZT1cIlwiO2MmJihlPSdub25jZT1cIicrWGQoYykrJ1wiJyk7dmFyIGY9XCI8XCIrZCsnIHNyYz1cIicrYisnXCIgJytlK1wiPjwvXCIrZCtcIj48XCIrKGQrXCIgXCIrZSsnPnByb2Nlc3NHb29nbGVUb2tlblN5bmMoe1wibmV3VG9rZW5cIjpcIkZCU1wifSw1KTs8LycrZCtcIj5cIik7YmUoZnVuY3Rpb24oKXthLndyaXRlKGYpO2VlLkcoKX0pfX07dmFyIGZlPWZ1bmN0aW9uKGEpe1pkKCk7VlszXT49dygpJiZWWzJdPj13KCl8fGEudigpfSxoZT1mdW5jdGlvbigpe3UucHJvY2Vzc0dvb2dsZVRva2VuPXUucHJvY2Vzc0dvb2dsZVRva2VufHxmdW5jdGlvbihhLGIpe3JldHVybiBnZShkZSxhLGIpfTtmZShkZSl9LGllPWZ1bmN0aW9uKCl7dS5wcm9jZXNzR29vZ2xlVG9rZW5TeW5jPXUucHJvY2Vzc0dvb2dsZVRva2VuU3luY3x8ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2UoZWUsYSxiKX07ZmUoZWUpfSxnZT1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iP3t9OmI7Yz12b2lkIDA9PT1jPzA6Yzt2YXIgZD1iLm5ld1Rva2VufHxcIlwiLGU9XCJOVFwiPT1kLGY9cGFyc2VJbnQoYi5mcmVzaExpZmV0aW1lU2Vjc3x8XCJcIiwxMCksZz1wYXJzZUludChiLnZhbGlkTGlmZXRpbWVTZWNzfHxcIlwiLDEwKSxoPWJbXCIxcF9qYXJcIl18fFwiXCI7Yj1iLnB1Y3JkfHxcIlwiO1pkKCk7MT09Yz9hLlAoKTphLk8oKTtpZighZCYmYS5UKCkpV2QoXCIuZ29vZ2xlLmNvbVwiKSYmKFdbMV09XCIuZ29vZ2xlLmNvbVwiKSxhLnYoKTtlbHNle3ZhciBrPVUuZ29vZ2xlVG9rZW49VS5nb29nbGVUb2tlbnx8e30sbD0wPT1jJiZkJiZcInN0cmluZ1wiPT09dHlwZW9mIGQmJiFlJiZcIm51bWJlclwiPT09dHlwZW9mIGYmJjA8ZiYmXCJudW1iZXJcIj09PXR5cGVvZiBnJiYwPGcmJlwic3RyaW5nXCI9PT10eXBlb2YgaDtlPWUmJiFhLnUoKSYmKCEoVlszXT49dygpKXx8XCJOVFwiPT1WWzFdKTt2YXIgcD0hKFZbM10+PXcoKSkmJjAhPWM7aWYobHx8ZXx8cCllPXcoKSxmPWUrMUUzKmYsZz1lKzFFMypnLGFlKGMpLGtbNV09YyxrWzFdPWQsa1syXT1mLGtbM109ZyxrWzRdPWgsa1s2XT1iLFpkKCk7aWYobHx8IWEudSgpKXtjPWEuTCgpO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspYS5KKGNbZF0pO2MubGVuZ3RoPTB9fX07dmFyIGplPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT91OmE7cmV0dXJuKGE9YS5wZXJmb3JtYW5jZSkmJmEubm93P2Eubm93KCk6bnVsbH07dmFyIFg9dS5wZXJmb3JtYW5jZSxrZT0hIShYJiZYLm1hcmsmJlgubWVhc3VyZSYmWC5jbGVhck1hcmtzKSxsZT1LYShmdW5jdGlvbigpe3ZhciBhO2lmKGE9a2UpYT1xYygpLGE9ISFhLmluZGV4T2YmJjA8PWEuaW5kZXhPZihcIjEzMzdcIik7cmV0dXJuIGF9KTt2YXIgbWU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYT12b2lkIDA9PT1hP251bGw6YTt0aGlzLmc9dm9pZCAwPT09Yj9cImpzZXJyb3JcIjpiO3RoaXMuYj1udWxsO3RoaXMuYz12b2lkIDA9PT1jPy4wMTpjO3RoaXMubz10aGlzLmp9LG5lPWZ1bmN0aW9uKGEsYil7YS5iPWJ9O21lLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yz12b2lkIDA9PT1jP3RoaXMuYzpjO2U9dm9pZCAwPT09ZT90aGlzLmc6ZTtpZihNYXRoLnJhbmRvbSgpPmMpcmV0dXJuITE7Yi5lcnJvciYmYi5tZXRhJiZiLmlkfHwoYj1uZXcgb2MoYix7Y29udGV4dDphLGlkOmV9KSk7aWYoZHx8dGhpcy5iKWIubWV0YT17fSx0aGlzLmImJnRoaXMuYihiLm1ldGEpLGQmJmQoYi5tZXRhKTt1Lmdvb2dsZV9qc19lcnJvcnM9dS5nb29nbGVfanNfZXJyb3JzfHxbXTt1Lmdvb2dsZV9qc19lcnJvcnMucHVzaChiKTt1LmVycm9yX3JlcF9sb2FkZWR8fChiPXUuZG9jdW1lbnQsYz1OYih1LmxvY2F0aW9uLnByb3RvY29sK1wiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvZXJyX3JlcC5qc1wiKSxhPWIuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSx5YihhLFwic3RyaW5nXCI9PT10eXBlb2YgYz9OYihjKTpjKSwoYj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdKSYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYiksdS5lcnJvcl9yZXBfbG9hZGVkPSEwKTtyZXR1cm4hMX07dmFyIG9lPWZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBjPWEuYSYmYS5hLnN0YXJ0KFwiNDIwXCIsMyk7YigpO2EuYSYmYyYmYS5hLmEoYyl9Y2F0Y2goZCl7aWYoYS5hJiZjJiYoYj1jKSYmWCYmbGUoKSYmKFguY2xlYXJNYXJrcyhcImdvb2dfXCIrYi5sYWJlbCtcIl9cIitiLnVuaXF1ZUlkK1wiX3N0YXJ0XCIpLFguY2xlYXJNYXJrcyhcImdvb2dfXCIrYi5sYWJlbCtcIl9cIitiLnVuaXF1ZUlkK1wiX2VuZFwiKSksIWEubyg0MjAsZCxhLmMsdm9pZCAwLGEuZykpdGhyb3cgZDt9fTt2YXIgcGU9QShcImdwdC9wdWJhZHNfaW1wbF9cIikscWU9QShcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L1wiKTt2YXIgcmU9ZnVuY3Rpb24oYSl7dmFyIGI9amUoYSk7YiYmKGI9e2xhYmVsOlwiMVwiLHR5cGU6OSx2YWx1ZTpifSxhPWEuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1hLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdLDIwNDg+YS5sZW5ndGgmJmEucHVzaChiKSl9LHNlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD13aW5kb3c7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9amUoKSxmPTM7dHJ5e3ZhciBnPWIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGspe2Y9MTM7aWYoYylyZXR1cm4gYyhhLGspLGc7dGhyb3cgazt9ZmluYWxseXtpZihkLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmZSl7dmFyIGg9amUoKXx8MDtlPXtsYWJlbDphLnRvU3RyaW5nKCksdmFsdWU6ZSxkdXJhdGlvbjpoLWUsdHlwZTpmfTtmPWQuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1kLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdOzIwNDg+Zi5sZW5ndGgmJmYucHVzaChlKX19cmV0dXJuIGd9fSx0ZT1mdW5jdGlvbihhLGIpe3JldHVybiBzZShhLGIsZnVuY3Rpb24oYyxkKXsobmV3IG1lKS5qKGMsZCl9KX07ZnVuY3Rpb24gWShhLGIpe3JldHVybiBudWxsPT1iP1wiJlwiK2ErXCI9bnVsbFwiOlwiJlwiK2ErXCI9XCIrTWF0aC5mbG9vcihiKX12YXIgdWU9bmV3IG0uU2V0O2Z1bmN0aW9uIHZlKGEpe2E9YS5pZDtyZXR1cm4gdWUuaGFzKGEpfHxuKGEsXCJzdGFydHNXaXRoXCIpLmNhbGwoYSxcImdvb2dsZV9hZHNfaWZyYW1lX1wiKXx8bihhLFwic3RhcnRzV2l0aFwiKS5jYWxsKGEsXCJhc3dpZnRcIil9ZnVuY3Rpb24gd2UoYSxiKXtiPXZvaWQgMD09PWI/NDpiO2lmKCFhKXJldHVybiExO2lmKHZlKGEpKXJldHVybiEwO2lmKDA+PWIpcmV0dXJuITE7YT1yKGEuY2hpbGROb2Rlcyk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZih3ZShjLnZhbHVlLGItMSkpcmV0dXJuITA7cmV0dXJuITF9dmFyIHhlPWZ1bmN0aW9uKCl7dGhpcy5OPXRoaXMuVT10aGlzLlY9dGhpcy5iPXRoaXMuQT10aGlzLm89dGhpcy5nPTA7dGhpcy5SPSExO3RoaXMuRD10aGlzLmo9dGhpcy5jPTA7dmFyIGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIltkYXRhLWdvb2dsZS1xdWVyeS1pZF1cIik7dGhpcy5JPWE/YS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1xdWVyeS1pZFwiKTpudWxsO3RoaXMuRj1udWxsO3RoaXMuSD0hMTt0aGlzLmE9dGUoNjQxLHRoaXMuYS5iaW5kKHRoaXMpKX07cmEoeGUsYmMpO3ZhciB6ZT1mdW5jdGlvbigpe3ZhciBhPW5ldyB4ZTtpZihTKDIwMykmJiF3aW5kb3cuZ29vZ2xlX3BsbWV0cmljcyYmd2luZG93LlBlcmZvcm1hbmNlT2JzZXJ2ZXIpe3dpbmRvdy5nb29nbGVfcGxtZXRyaWNzPSEwO2Zvcih2YXIgYj1yKFtcImxheW91dC1zaGlmdFwiLFwibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50XCIsXCJmaXJzdC1pbnB1dFwiLFwibG9uZ3Rhc2tcIl0pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSx5ZShhKS5vYnNlcnZlKHt0eXBlOmMsYnVmZmVyZWQ6IVMoMjQwKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmxvYWRcIixhLmEpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsYS5hKX19LHllPWZ1bmN0aW9uKGEpe2EuRnx8KGEuRj1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcih0ZSg2NDAsZnVuY3Rpb24oYil7dmFyIGM9ITE7Yj1yKGIuZ2V0RW50cmllcygpKTtmb3IodmFyIGQ9Yi5uZXh0KCk7IWQuZG9uZTtkPWIubmV4dCgpKXN3aXRjaChkPWQudmFsdWUsZC5lbnRyeVR5cGUpe2Nhc2UgXCJsYXlvdXQtc2hpZnRcIjppZighYyl7dHJ5e2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZ29vZ2xldGFnJiZnb29nbGV0YWcucHViYWRzKXt2YXIgZT1nb29nbGV0YWcucHViYWRzKCk7dWUuY2xlYXIoKTtmb3IodmFyIGY9cihlLmdldFNsb3RzKCkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXVlLmFkZChnLnZhbHVlLmdldFNsb3RJZCgpLmdldERvbUlkKCkpfX1jYXRjaChwKXt9Yz0hMH12YXIgaD1hO2lmKCFkLmhhZFJlY2VudElucHV0JiYoIVMoMjQxKXx8LjAxPGQudmFsdWUpKXtoLmcrPU51bWJlcihkLnZhbHVlKTtOdW1iZXIoZC52YWx1ZSk+aC5vJiYoaC5vPU51bWJlcihkLnZhbHVlKSk7aC5BKz0xO2E6e2lmKGQuc291cmNlcyl7dmFyIGs9cihkLnNvdXJjZXMpO2Zvcih2YXIgbD1rLm5leHQoKTshbC5kb25lO2w9ay5uZXh0KCkpaWYod2UobC52YWx1ZS5ub2RlKSl7az0hMDticmVhayBhfX1rPSExfWsmJihoLmIrPWQudmFsdWUsaC5WKyspfWJyZWFrO2Nhc2UgXCJsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnRcIjphLlU9TWF0aC5mbG9vcihkLnJlbmRlclRpbWV8fGQubG9hZFRpbWUpO2JyZWFrO2Nhc2UgXCJmaXJzdC1pbnB1dFwiOmEuTj1OdW1iZXIoKGQucHJvY2Vzc2luZ1N0YXJ0LWQuc3RhcnRUaW1lKS50b0ZpeGVkKDMpKTthLlI9ITA7YnJlYWs7Y2FzZSBcImxvbmd0YXNrXCI6YS5jKz1kLmR1cmF0aW9uLGQuZHVyYXRpb24+YS5qJiYoYS5qPWQuZHVyYXRpb24pLGEuRCs9MX19KSkpO3JldHVybiBhLkZ9O3hlLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dmFyIGE7aWYoYT0hdGhpcy5IKWE9ZG9jdW1lbnQsYT0yPT09KHt2aXNpYmxlOjEsaGlkZGVuOjIscHJlcmVuZGVyOjMscHJldmlldzo0LHVubG9hZGVkOjV9W2EudmlzaWJpbGl0eVN0YXRlfHxhLndlYmtpdFZpc2liaWxpdHlTdGF0ZXx8YS5tb3pWaXNpYmlsaXR5U3RhdGV8fFwiXCJdfHwwKTtpZihhKXt0aGlzLkg9ITA7eWUodGhpcykudGFrZVJlY29yZHMoKTthPVwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD1wbG1ldHJpY3NcIjt3aW5kb3cuTGF5b3V0U2hpZnQmJihhKz1cIiZjbHM9XCIrdGhpcy5nLnRvRml4ZWQoMyksYSs9XCImbWxzPVwiK3RoaXMuby50b0ZpeGVkKDMpLGErPVkoXCJubHNcIix0aGlzLkEpLHdpbmRvdy5MYXlvdXRTaGlmdEF0dHJpYnV0aW9uJiYoYSs9XCImY2FzPVwiK3RoaXMuYi50b0ZpeGVkKDMpLGErPVkoXCJuYXNcIix0aGlzLlYpKSk7d2luZG93Lkxhcmdlc3RDb250ZW50ZnVsUGFpbnQmJihhKz1ZKFwibGNwXCIsdGhpcy5VKSk7d2luZG93LlBlcmZvcm1hbmNlRXZlbnRUaW1pbmcmJnRoaXMuUiYmKGErPVkoXCJmaWRcIix0aGlzLk4pKTt3aW5kb3cuUGVyZm9ybWFuY2VMb25nVGFza1RpbWluZyYmKGErPVkoXCJjYnRcIix0aGlzLmMpLGErPVkoXCJtYnRcIix0aGlzLmopLGErPVkoXCJubHRcIix0aGlzLkQpKTtmb3IodmFyIGI9MCxjPXIoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpZnJhbWVcIikpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXZlKGQudmFsdWUpJiZiKys7YSs9WShcIm5pZlwiLGIpO2I9d2luZG93Lmdvb2dsZV91bmlxdWVfaWQ7YSs9WShcImlmaVwiLFwibnVtYmVyXCI9PT10eXBlb2YgYj9iOjApO2I9bmQuZigpLmIoKTthKz1cIiZlaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGIuam9pbigpKTthKz1cIiZ0b3A9XCIrKHU9PT11LnRvcD8xOjApO2lmKHRoaXMuSSliPVwiJnFxaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuSSk7ZWxzZXtpZihcIm51bWJlclwiIT09dHlwZW9mIHUuZ29vZ19wdnNpZCl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHUsXCJnb29nX3B2c2lkXCIse3ZhbHVlOk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygyLDUyKSl9KX1jYXRjaChlKXt9Yj1ZKFwicHZzaWRcIixOdW1iZXIodS5nb29nX3B2c2lkKXx8LTEpfXdpbmRvdy5mZXRjaChhK2Ise2tlZXBhbGl2ZTohMCxjcmVkZW50aWFsczpcImluY2x1ZGVcIixyZWRpcmVjdDpcImZvbGxvd1wiLG1ldGhvZDpcImdldFwiLG1vZGU6XCJuby1jb3JzXCJ9KX19O3ZhciBBZT1be2lzc3Vlck9yaWdpbjpcImh0dHBzOi8vYWRzZXJ2aWNlLmdvb2dsZS5jb21cIixpc3N1YW5jZVBhdGg6XCIvdHQvaVwiLHJlZGVtcHRpb25QYXRoOlwiL3R0L3JcIn1dLENlPWZ1bmN0aW9uKGEpe3RoaXMuYz1BZTt0aGlzLmI9YTt0aGlzLmE9QmUodGhpcyl9O3JhKENlLGJjKTt2YXIgQmU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5jLm1hcChmdW5jdGlvbihjKXtyZXR1cm57aXNzdWVyT3JpZ2luOmMuaXNzdWVyT3JpZ2luLHN0YXRlOmRvY3VtZW50Lmhhc1RydXN0VG9rZW4/MTowfX0pO2EuYihiKTtyZXR1cm4gYn0sRGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW4oYS5hLFwiZmluZEluZGV4XCIpLmNhbGwoYS5hLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzc3Vlck9yaWdpbj09PWJ9KTswPD1kJiYoYS5hW2RdLnN0YXRlPWMsYS5iKGEuYSkpfSxFZT1mdW5jdGlvbihhKXtkb2N1bWVudC5oYXNUcnVzdFRva2VuJiZhLmMuZm9yRWFjaChmdW5jdGlvbihiKXt3aW5kb3cuZmV0Y2goYi5pc3N1ZXJPcmlnaW4rYi5yZWRlbXB0aW9uUGF0aCx7a2VlcGFsaXZlOiEwLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsdHJ1c3RUb2tlbjp7dHlwZTpcInNyci10b2tlbi1yZWRlbXB0aW9uXCIsaXNzdWVyOmIuaXNzdWVyT3JpZ2luLHJlZnJlc2hQb2xpY3k6XCJub25lXCJ9fSkudGhlbihmdW5jdGlvbihjKXtpZighYy5vayl0aHJvdyBFcnJvcihjLnN0YXR1cytcIjogTmV0d29yayByZXNwb25zZSB3YXMgbm90IG9rIVwiKTtEZShhLGIuaXNzdWVyT3JpZ2luLDYpfSkuY2F0Y2goZnVuY3Rpb24oYyl7YyYmXCJOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvclwiPT09Yy5uYW1lP0RlKGEsYi5pc3N1ZXJPcmlnaW4sNik6RGUoYSxiLmlzc3Vlck9yaWdpbiw1KX0pO0RlKGEsYi5pc3N1ZXJPcmlnaW4sMil9KX07dmFyIEZlPVtcInBsYXRmb3JtXCIsXCJwbGF0Zm9ybVZlcnNpb25cIixcImFyY2hpdGVjdHVyZVwiLFwibW9kZWxcIixcInVhRnVsbFZlcnNpb25cIl0sR2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubmF2aWdhdG9yJiZhLm5hdmlnYXRvci51c2VyQWdlbnREYXRhJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5uYXZpZ2F0b3IudXNlckFnZW50RGF0YS5nZXRIaWdoRW50cm9weVZhbHVlcz9hLm5hdmlnYXRvci51c2VyQWdlbnREYXRhLmdldEhpZ2hFbnRyb3B5VmFsdWVzKEZlKS50aGVuKGZ1bmN0aW9uKGIpe3ZhciBjPW5ldyBqYztjPUsoYywxLGIucGxhdGZvcm0pO2M9SyhjLDIsYi5wbGF0Zm9ybVZlcnNpb24pO2M9SyhjLDMsYi5hcmNoaXRlY3R1cmUpO2M9SyhjLDQsYi5tb2RlbCk7cmV0dXJuIEsoYyw1LGIudWFGdWxsVmVyc2lvbil9KTpudWxsfTt2YXIgSGU9ZnVuY3Rpb24oKXtyZXR1cm4gdS5nb29nbGV0YWd8fCh1Lmdvb2dsZXRhZz17fSl9LEllPWZ1bmN0aW9uKGEsYil7dmFyIGM9SGUoKTtjLmhhc093blByb3BlcnR5KGEpfHwoY1thXT1iKX0sSmU9ZnVuY3Rpb24oYSxiKXthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoXCJvbmxvYWRcIixiKX07dmFyIFo9ezI0NzpcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0XCIsNzouMDIsMTM6MTUwMCwyMzouMDAxLDM3Oi4wMSwzODouMDAxLDU4OjEsMTUwOlwiXCIsMjExOiExLDI1MzohMSwxNTI6W10sMTcyOm51bGwsMTkxOlwiXCIsMTkyOlwiXCIsMTkwOlwiXCIsMjQ1Ont9LDE4MDpudWxsLDI0NjpbXSwyMjc6e30sMjI2OltdLDI0ODowLDIyODpcIi8vd3d3Lmdvb2dsZXRhZ3NlcnZpY2VzLmNvbS9wdWJjb25zb2xlL1wiLDI1MDpudWxsLDI1MjpudWxsLDI1MTpudWxsfTtaWzZdPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPyEwOmI7dHJ5e2Zvcih2YXIgYz1udWxsO2MhPWE7Yz1hLGE9YS5wYXJlbnQpc3dpdGNoKGEubG9jYXRpb24ucHJvdG9jb2wpe2Nhc2UgXCJodHRwczpcIjpyZXR1cm4hMDtjYXNlIFwiZmlsZTpcIjpyZXR1cm4gYjtjYXNlIFwiaHR0cDpcIjpyZXR1cm4hMX19Y2F0Y2goZCl7fXJldHVybiEwfSh3aW5kb3cpO1pbNDldPShuZXcgRGF0ZSkuZ2V0VGltZSgpO1pbMzZdPS9edHJ1ZSQvLnRlc3QoXCJmYWxzZVwiKTtaWzE0OF09RWM7WlsyMjFdPS9edHJ1ZSQvLnRlc3QoXCJcIik7WlsyMDRdPVliKFwie3tNT0R9fVwiLC0xKTt2YXIgS2U9ZnVuY3Rpb24oKXtEYSh0aGlzLFopfTt2KEtlKTt2YXIgVD1mdW5jdGlvbihhKXtyZXR1cm4gS2UuZigpW2FdfSxMZT1IZSgpLE1lPUtlLmYoKTtEYShNZSxMZS5fdmFyc18pO0xlLl92YXJzXz1NZTt2YXIgTmU9bmV3IG0uV2Vha01hcCxPZT1mdW5jdGlvbihhLGIpe2E9W2FdO2Zvcih2YXIgYz1iLmxlbmd0aC0xOzA8PWM7LS1jKWEucHVzaCh0eXBlb2YgYltjXSxiW2NdKTtyZXR1cm4gYS5qb2luKFwiXFx4MEJcIil9O3ZhciBQZT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9PZTpiO3ZhciBjPUNhKGEpLGQ9ZnVuY3Rpb24oZSl7ZT1yKGUpO2UubmV4dCgpO2U9amEoZSk7cmV0dXJuIGIoYyxlKX07cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgZj1bXSxnPTA7Zzxhcmd1bWVudHMubGVuZ3RoOysrZylmW2ddPWFyZ3VtZW50c1tnXTtnPXRoaXN8fHU7dmFyIGg9TmUuZ2V0KGcpO2h8fChoPXt9LE5lLnNldChnLGgpKTtnPWg7aD1bdGhpc10uY29uY2F0KGthKGYpKTtmPWQ/ZChoKTpoO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnLGYpKWc9Z1tmXTtlbHNle3ZhciBrPXIoaCk7aD1rLm5leHQoKS52YWx1ZTtrPWphKGspO2g9YS5hcHBseShoLGspO2c9Z1tmXT1ofXJldHVybiBnfX0oZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuc3JjPy9eKD86aHR0cHM/Oik/XFwvXFwvKD86d3d3XFwuZ29vZ2xldGFnc2VydmljZXNcXC5jb218c2VjdXJlcHViYWRzXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KVxcL3RhZ1xcL2pzXFwvZ3B0KD86X1thLXpdKykqXFwuanMvLnRlc3QoYS5zcmMpPzA6MToyfSxmdW5jdGlvbihhLGIpe3JldHVybiBhK1wiXFx4MEJcIisoYiYmYlswXSYmYlswXS5zcmMpfSksUWU9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PVBlKFQoMTcyKSl9O3ZhciBSZT1mdW5jdGlvbigpe3JldHVybiBZYihcIjlcIil8fDB9O0llKFwiZ2V0VmVyc2lvblwiLGZ1bmN0aW9uKCl7cmV0dXJuXCIyMDIwMDgyNzAxXCJ9KTt2YXIgUWQ9ZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzWzNdPShhWzNdPVFlLGFbMl09VCgzNiksYVsxN109ZnVuY3Rpb24oYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZF09YXJndW1lbnRzW2RdO3JldHVybiBuKGMsXCJpbmNsdWRlc1wiKS5jYWxsKGMsU3RyaW5nKGFjKCkpKX0sYVsyMV09ZnVuY3Rpb24oKXtyZXR1cm4gVCgxNDgpfSxhKTthPXt9O3RoaXNbNF09KGFbMV09ZnVuY3Rpb24oKXtyZXR1cm4gVCgyMDQpfSxhWzRdPVJlLGEpO2E9e307dGhpc1s1XT0oYVs1XT1mdW5jdGlvbigpe3ZhciBiPVQoMTcyKTtyZXR1cm4gYj9RYihiLnNyYy5tYXRjaChQYilbM118fG51bGwpOnZvaWQgMH0sYSl9O3YoUWQpO3ZhciBTZT1bXSxUZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgeGQoVCgyNDYpKTthPW5ldyB4ZChhfHxTZSk7aWYoIUwoYixNLDEpLmxlbmd0aCYmTChhLE0sMSkubGVuZ3RoKXt2YXIgYz1MKGEsTSwxKTtJYihiLDEsYyl9IUwoYixSLDIpLmxlbmd0aCYmTChhLFIsMikubGVuZ3RoJiYoYT1MKGEsUiwyKSxJYihiLDIsYSkpO1NkKGIpfTt2YXIgVWU9ZnVuY3Rpb24oYSl7aWYoYT1hLnNjcmlwdHMpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl07aWYoLTE8Yy5zcmMuaW5kZXhPZihcIi90YWcvanMvZ3B0XCIpKXJldHVybiBjfXJldHVybiBudWxsfSxWZT1mdW5jdGlvbihhKXt2YXIgYj1hLmN1cnJlbnRTY3JpcHQ7cmV0dXJuXCJjb21wbGV0ZVwiIT1hLnJlYWR5U3RhdGUmJlwibG9hZGVkXCIhPWEucmVhZHlTdGF0ZSYmIShiJiZiLmFzeW5jKX0sV2U9ZnVuY3Rpb24oKXt2YXIgYT1bUygzOTMpP0EoXCJodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vXCIpOnFlLHBlLEEoXCIyMDIwMDgyNzAxXCIpLEEoXCIuanNcIildO2Zvcih2YXIgYj1cIlwiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1PYShhW2NdKTthPW5ldyBCKGIsUGEpO3ZhciBkPXZvaWQgMD09PWQ/MDpkOyhkPU1kLmYoKS5jKDI0LGQpKT8oZD1TdHJpbmcoZCksYT1VYS5leGVjKFFhKGEpLnRvU3RyaW5nKCkpLGI9YVszXXx8XCJcIixkPW5ldyBCKGFbMV0rVmEoXCI/XCIsYVsyXXx8XCJcIixkKStWYShcIiNcIixiLHZvaWQgMCksUGEpKTpkPWE7cmV0dXJuIGR9LFhlPWZ1bmN0aW9uKGEsYixjKXthPWEuY3VycmVudFNjcmlwdHx8VWUoYSk7S2UuZigpWzE3Ml09YTtuZXcgVGUoYik7bmQuZigpLmEoMTIpO25kLmYoKS5hKDUpO1MoMjAwKXx8UygyMjApfHwoYj1UKDE1MCksWmQoKSxXZChiKSYmKFdbMV09YikpO1MoMzEyKSYmRWUobmV3IENlKGZ1bmN0aW9uKGQpe0tlLmYoKVsyNTBdPWR9KSk7UygzNjMpJiYoYj1HZShjKSkmJmIudGhlbihmdW5jdGlvbihkKXtkPWQuaigpO0tlLmYoKVsyNTFdPWR9KTtiPVwiXCI7UygzNDkpJiZhJiZhLmhhc0F0dHJpYnV0ZShcImRhdGEtbG9hZC1mY1wiKSYmKGI9YS5nZXRBdHRyaWJ1dGUoXCJkYXRhLW5ldHdvcmstaWRcIikpJiYobmV3IG1jKGMsYikpLnN0YXJ0KCl9LFllPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1IZSgpO2E9YXx8ZC5maWZXaW58fHdpbmRvdztiPWJ8fGEuZG9jdW1lbnQ7dmFyIGU9ZC5maWZXaW4/d2luZG93OmE7SWUoXCJjbWRcIixbXSk7aWYoZC5ldmFsU2NyaXB0cylkLmV2YWxTY3JpcHRzKCk7ZWxzZXtYZShiLGMsYSk7dHJ5e3plKCl9Y2F0Y2goayl7fXJlKGEpO2E9V2UoKTtjPVMoMjAwKXx8UygyMzkpO2lmKFZlKGIpKXt2YXIgZj1cImdwdC1pbXBsLVwiK01hdGgucmFuZG9tKCk7dHJ5e3hiKGIsdWIoYSx7aWQ6Zixub25jZTp3YSgpfSkpfWNhdGNoKGspe31iLmdldEVsZW1lbnRCeUlkKGYpJiYoZC5fbG9hZFN0YXJ0ZWRfPSEwLGN8fGllKCkpfWlmKCFkLl9sb2FkU3RhcnRlZF8pe2N8fGhlKCk7Yj1kLmZpZldpbj9lLmRvY3VtZW50OmI7dmFyIGc9Yi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO3liKGcsYSk7Zy5hc3luYz0hMDt2YXIgaD1iLmhlYWR8fGIuYm9keXx8Yi5kb2N1bWVudEVsZW1lbnQ7XCJjb21wbGV0ZVwiIT09ZS5kb2N1bWVudC5yZWFkeVN0YXRlJiZkLmZpZldpbj9KZShlLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgaC5hcHBlbmRDaGlsZChnKX0pOmguYXBwZW5kQ2hpbGQoZyk7ZC5fbG9hZFN0YXJ0ZWRfPSEwfX19O3ZhciBaZTthOnt0cnl7aWYoQXJyYXkuaXNBcnJheShFKSl7WmU9RTticmVhayBhfX1jYXRjaChhKXt9WmU9W119KGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1uZXcgbWUobnVsbCxcImdwdF9leGNlcHRpb25cIiwuMDEpO25lKGQsZnVuY3Rpb24oZSl7ZS5tZXRob2RJZD00MjB9KTtvZShkLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEsYixjKX0pfSkodm9pZCAwLHZvaWQgMCxaZSk7fSkuY2FsbCh0aGlzLmdvb2dsZXRhZyYmZ29vZ2xldGFnLmZpZldpbj9nb29nbGV0YWcuZmlmV2luLnBhcmVudDp0aGlzLFtbWzI2OSxudWxsLG51bGwsWzFdXSxbMzUxLG51bGwsbnVsbCxbMV1dLFtudWxsLDcsbnVsbCxbbnVsbCwwLjFdXSxbMzQ3LG51bGwsbnVsbCxbMV1dLFszMjIsbnVsbCxudWxsLFsxXV0sWzIwLG51bGwsbnVsbCxudWxsLFtbWzEsW1s0LG51bGwsMV1dXSxbMV1dXV0sW251bGwsNDUsbnVsbCxbbnVsbCwwLjVdXSxbMjUyLG51bGwsbnVsbCxbMV1dLFszNzQsbnVsbCxudWxsLFsxXV0sWzI5MyxudWxsLG51bGwsWzFdXSxbMzMzLG51bGwsbnVsbCxbMV1dLFsyOTYsbnVsbCxudWxsLFsxXV0sW251bGwsNjEsbnVsbCxbbnVsbCwwLjAwMV1dLFsyNzUsbnVsbCxudWxsLFsxXV0sWzI3NCxudWxsLG51bGwsWzFdXSxbMjU4LG51bGwsbnVsbCxbMV1dLFsyOTEsbnVsbCxudWxsLFsxXV0sWzMyNyxudWxsLG51bGwsWzFdXSxbMzUyLG51bGwsbnVsbCxbMV1dLFszMjYsbnVsbCxudWxsLFsxXV0sWzM1OCxudWxsLG51bGwsWzFdXSxbbnVsbCw4LG51bGwsW251bGwsLTFdXSxbMjM3LG51bGwsbnVsbCxudWxsLFtbWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wiZ29vZ2xldGFnLmZpZldpblwiXV0sWzFdXV1dLFtudWxsLDI4LG51bGwsW251bGwsMC4wMV1dLFszNzIsbnVsbCxudWxsLFsxXV0sW251bGwsNTEsbnVsbCxbbnVsbCwxMDAwXV0sWzEzOSxudWxsLG51bGwsWzFdXSxbODksbnVsbCxudWxsLFsxXV0sW251bGwsNDIwLG51bGwsW251bGwsMl1dLFsyMzksbnVsbCxudWxsLFsxXV0sWzM5MSxudWxsLG51bGwsWzFdXSxbMzI5LG51bGwsbnVsbCxbMV1dLFtudWxsLG51bGwsMixbbnVsbCxudWxsLFwiMS0wLTM3XCJdXSxbNDExLG51bGwsbnVsbCxbMV1dLFtudWxsLDU5LG51bGwsW251bGwsMV1dLFszNDAsbnVsbCxudWxsLFsxXV0sWzIxNSxudWxsLG51bGwsWzFdXSxbMzc3LG51bGwsbnVsbCxbMV1dLFtudWxsLDM5LG51bGwsW251bGwsNzJdXSxbbnVsbCwzOCxudWxsLFtudWxsLDI0XV0sW251bGwsNDAsbnVsbCxbbnVsbCw1XV0sW251bGwsMzMsbnVsbCxbbnVsbCwyNTBdXSxbMzMwLG51bGwsbnVsbCxbMV1dLFs0MDMsbnVsbCxudWxsLFsxXV0sWzM1NCxudWxsLG51bGwsWzFdXSxbMzg4LG51bGwsbnVsbCxbMV1dLFs0MDUsbnVsbCxudWxsLFsxXV0sWzIzOCxudWxsLG51bGwsbnVsbCxbW1s0LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcImdvb2dsZXRhZy5maWZXaW5cIl1dLFsxXV1dXSxbbnVsbCwzMixudWxsLFtdXV0sW1s0LFtbbnVsbCxbWzQ0NzEzNzgzXV1dLFtudWxsLFtbNDQ3MTQ0NDksW1tudWxsLDcsbnVsbCxbbnVsbCwxXV1dXSxbNjc2OTgyOTYxLFtbbnVsbCw3LG51bGwsW251bGwsMC40XV0sWzIxMixudWxsLG51bGwsWzFdXV1dLFs2NzY5ODI5OTYsW1tudWxsLDcsbnVsbCxbbnVsbCwxXV1dXV1dLFtudWxsLFtbNDQ3MTY4MzMsW1tudWxsLDcsbnVsbCxbbnVsbCwwLjAzXV0sWzIxMixudWxsLG51bGwsWzFdXV1dLFs0NDcxOTU3MCxbW251bGwsNyxudWxsLFtudWxsLDAuMDNdXSxbMjEyLG51bGwsbnVsbCxbMV1dXV1dXSxbbnVsbCxbWzQ0NzE3OTc4LFtbbnVsbCw3LG51bGwsW251bGwsMC4wMl1dLFsyMTIsbnVsbCxudWxsLFsxXV1dXSxbNDQ3MTk4MDMsW1tudWxsLDcsbnVsbCxbbnVsbCwwLjAyXV0sWzIxMixudWxsLG51bGwsWzFdXV1dLFs0NDcxOTgwNCxbW251bGwsNyxudWxsLFtudWxsLDAuMDJdXSxbMjEyLG51bGwsbnVsbCxbMV1dXV0sWzY3Njk4MjY4MV1dXSxbbnVsbCxbWzQ0NzE4MDM0LFtbbnVsbCw3LG51bGwsW251bGwsMC4wMl1dLFsyMTIsbnVsbCxudWxsLFsxXV1dXSxbNDQ3MTk1MTMsW1tudWxsLDcsbnVsbCxbbnVsbCwwLjAyXV0sWzIxMixudWxsLG51bGwsWzFdXV1dXV0sW251bGwsW1syMTA2NTY5M10sWzIxMDY1Njk0XSxbMjEwNjU2OTVdLFsyMTA2NTY5NyxbWzI2NyxudWxsLG51bGwsWzFdXV1dXV0sW251bGwsW1syMTA2NzAzNl0sWzIxMDY3MDM3LFtbMTM2LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDM4LFtbMTM2LG51bGwsbnVsbCxbMV1dLFsxMzcsbnVsbCxudWxsLFsxXV1dXV1dXV0sWzMsW1tudWxsLFtbNDQ3MTY4MzBdLFs0NDcxNjgzMV0sWzQ0NzE3NzQyXSxbNDQ3MTc3NDNdXV0sW251bGwsW1s0NDcxNjgzMl0sWzQ0NzE3NzQ0XSxbNDQ3MTc3NDVdXV0sW251bGwsW1s0NDcxNzc0N11dXSxbbnVsbCxbWzQ0NzE4MTg5XV1dLFtudWxsLFtbNjc2OTgyNjgwXV1dLFtudWxsLFtbNjc2OTgyODYzXSxbNjc2OTgyODgyXV1dLFtudWxsLFtbNjc2OTgyOTYwXSxbNjc2OTgyOTk0XSxbNjc2OTgyOTk4XV1dLFtudWxsLFtbNjc2OTgyOTc1XSxbNjc2OTgyOTgwXV1dLFtudWxsLFtbMTMzNyxbWzc3LG51bGwsbnVsbCxbMV1dLFs3OCxudWxsLG51bGwsWzFdXSxbODUsbnVsbCxudWxsLFsxXV0sWzgwLG51bGwsbnVsbCxbMV1dLFs3NixudWxsLG51bGwsWzFdXSxbODQsbnVsbCxudWxsLFsxXV0sWzE4OCxudWxsLG51bGwsWzFdXV1dXV0sWzUsW1syMDE5NDgxMixbWzIwLG51bGwsbnVsbCxbMV1dXV0sWzIwMTk0ODEzXV0sbnVsbCwzXSxbNTAwLFtbMjEwNjA2OTddLFsyMTA2MDY5OCxbWzg3LG51bGwsbnVsbCxbMV1dXV1dLFsyLFtbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NjYxM1wiXV0sWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wiVWludDhBcnJheVwiXV0sWzQsbnVsbCwxMV1dXV0sWzEsW1syMTA2MjMzMF0sWzIxMDYyMzMxLFtbbnVsbCw4LG51bGwsW251bGwsODAwXV1dXSxbMjEwNjIzMzIsW1tudWxsLDgsbnVsbCxbbnVsbCwxMDAwMF1dXV1dLG51bGwsM10sWzEsW1syMTA2Mjk3MF0sWzIxMDYyOTcxLFtbMTA5LG51bGwsbnVsbCxbMV1dXV1dXSxbNSxbWzIxMDYzMDQ2XSxbMjEwNjMwNDddLFsyMTA2MzA0OF1dLFsyLFtbNCxudWxsLDddLFs0LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcIlRleHREZWNvZGVyXCJdXSxbNCxudWxsLDEwXV1dLDldLFtudWxsLFtbMjEwNjM2MzVdLFsyMTA2MzYzNixbWzEwNCxudWxsLG51bGwsWzFdXV1dXSxudWxsLDIyXSxbMSxbWzIxMDYzNjY5XSxbMjEwNjM2NzBdXSxbNCxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJUZXh0RGVjb2RlclwiXV0sOV0sWzUwLFtbMjEwNjQxNjldLFsyMTA2NDE3MCxbWzE2OCxudWxsLG51bGwsWzFdXV1dXV0sWzEwLFtbMjEwNjQzNjVdLFsyMTA2NDM2NixbW251bGwsbnVsbCxudWxsLFtudWxsLG51bGwsbnVsbCxbXCJ1X3R6XCJdXSxudWxsLDddXV0sWzIxMDY0MzY3LFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInVfaGlzXCJdXSxudWxsLDddXV0sWzIxMDY0MzY4LFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInVfYWhcIixcInVfYXdcIl1dLG51bGwsN11dXSxbMjEwNjQzNjksW1tudWxsLG51bGwsbnVsbCxbbnVsbCxudWxsLG51bGwsW1widV9jZFwiXV0sbnVsbCw3XV1dLFsyMTA2NDM3MCxbW251bGwsbnVsbCxudWxsLFtudWxsLG51bGwsbnVsbCxbXCJ1X25wbHVnXCJdXSxudWxsLDddXV0sWzIxMDY0MzcxLFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInVfbm1pbWVcIl1dLG51bGwsN11dXSxbMjEwNjQzNzIsW1tudWxsLG51bGwsbnVsbCxbbnVsbCxudWxsLG51bGwsW1wiZmxhc2hcIl1dLG51bGwsN11dXV0sbnVsbCwxNV0sW251bGwsW1syMTA2NDQxMV0sWzIxMDY0NDEyLFtbMTQ0LG51bGwsbnVsbCxbMV1dXV1dXSxbMTAsW1syMTA2NTExMl0sWzIxMDY1MTEzLFtbMTYyLG51bGwsbnVsbCxbMV1dXV1dXSxbMTAsW1syMTA2NTEzOF0sWzIxMDY1MTM5LFtbMTQ4LG51bGwsbnVsbCxbMV1dXV1dXSxbbnVsbCxbWzIxMDY1MTk4LFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInZcIixcIjEtMC0zN1wiXV0sbnVsbCwxXV1dLFsyMTA2NTE5OSxbW251bGwsbnVsbCwyLFtudWxsLG51bGwsXCIxLTAtMzdcIl1dXV1dXSxbMSxbWzIxMDY1MzUyXSxbMjEwNjUzNTMsW1sxMjMsbnVsbCxudWxsLFsxXV1dXV1dLFs1MCxbWzIxMDY1NTE2XSxbMjEwNjU1MTcsW1s0OSxudWxsLG51bGwsWzFdXV1dXV0sWzUwLFtbMjEwNjU5NzVdLFsyMTA2NTk3NixbWzMxOSxudWxsLG51bGwsWzFdXV1dXV0sWzEwMDAsW1syMTA2NjA5MCxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDldLFs3LG51bGwsbnVsbCwxLG51bGwsMTVdXV1dLFsyMTA2NjA5MSxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDE0XSxbNyxudWxsLG51bGwsMSxudWxsLDIwXV1dXSxbMjEwNjYwOTIsbnVsbCxbMixbWzgsbnVsbCxudWxsLDEsbnVsbCwxOV0sWzcsbnVsbCxudWxsLDEsbnVsbCwyNV1dXV0sWzIxMDY2MDkzLG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsMjRdLFs3LG51bGwsbnVsbCwxLG51bGwsMzBdXV1dLFsyMTA2NjA5NCxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDI5XSxbNyxudWxsLG51bGwsMSxudWxsLDM1XV1dXSxbMjEwNjYwOTUsbnVsbCxbMixbWzgsbnVsbCxudWxsLDEsbnVsbCwzNF0sWzcsbnVsbCxudWxsLDEsbnVsbCw0MF1dXV0sWzIxMDY2MDk2LG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsMzldLFs3LG51bGwsbnVsbCwxLG51bGwsNDVdXV1dLFsyMTA2NjA5NyxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDQ0XSxbNyxudWxsLG51bGwsMSxudWxsLDUwXV1dXV0sWzQsbnVsbCwzXV0sWzEwLFtbMjEwNjYyODhdLFsyMTA2NjI4OSxbW251bGwsNTIsbnVsbCxbbnVsbCwxXV0sW251bGwsNTYsbnVsbCxbbnVsbCw2MDBdXSxbbnVsbCw0NyxudWxsLFtudWxsLDFdXSxbbnVsbCw1NSxudWxsLFtudWxsLDE4MF1dLFtudWxsLDQ2LG51bGwsW251bGwsMV1dXV1dXSxbMSxbWzIxMDY2NTYwXSxbMjEwNjY1NjEsW1szNjQsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY2NzgxXSxbMjEwNjY3ODJdXV0sWzEwLFtbMjEwNjY4ODNdLFsyMTA2Njg4NCxbWzg3LG51bGwsbnVsbCxbMV1dXV1dXSxbNTAsW1syMTA2NjkwNF0sWzIxMDY2OTA4LFtbbnVsbCwzOTUsbnVsbCxbbnVsbCwyXV1dXV1dLFs1MCxbWzIxMDY2OTkyXSxbMjEwNjY5OTMsW1s0MTAsbnVsbCxudWxsLFsxXV1dXV1dLFs1MCxbWzIxMDY2OTk0XSxbMjEwNjY5OTUsW1s0MDQsbnVsbCxudWxsLFsxXV1dXV1dLFtudWxsLFtbMjEwNjcwNDldLFsyMTA2NzA1MF0sWzIxMDY3MDUxXV1dLFtudWxsLFtbMjEwNjcwNzNdLFsyMTA2NzA3NixbWzM5MCxudWxsLG51bGwsWzFdXSxbMTc3LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDc3LFtbMzk5LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDc4LFtbMzg5LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDc5LFtbMzg5LG51bGwsbnVsbCxbMV1dLFszOTIsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY3MTI2XSxbMjEwNjcxMjcsW1s0MjEsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY3MTkyXSxbMjEwNjcxOTMsW1s5OCxudWxsLG51bGwsWzFdXV1dLFsyMTA2NzE5NCxbWzk4LG51bGwsbnVsbCxbMV1dXV1dXSxbNTAsW1syMTA2NzE5OV0sWzIxMDY3MjAwLFtbMTkwMixudWxsLG51bGwsWzFdXSxbMzg1LG51bGwsbnVsbCxbMV1dLFszODcsbnVsbCxudWxsLFsxXV1dXSxbMjEwNjcyMDEsW1sxOTAyLG51bGwsbnVsbCxbMV1dLFszODUsbnVsbCxudWxsLFsxXV1dXV0sbnVsbCwyOV0sWzEwLFtbMjEwNjcyMjNdLFsyMTA2NzIyNCxbWzQyMixudWxsLG51bGwsWzFdXV1dXV0sWzEwLFtbMjEwNjcyNTddLFsyMTA2NzI1OCxbWzQxMyxudWxsLG51bGwsWzFdXSxbbnVsbCw0MTQsbnVsbCxbbnVsbCwwLjVdXV1dLFsyMTA2NzI1OSxbWzQxMyxudWxsLG51bGwsWzFdXSxbbnVsbCw0MTQsbnVsbCxbbnVsbCwxXV1dXV1dLFsxMCxbWzIxMDY3MjcyXSxbMjEwNjcyNzMsW1s0MTIsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY3MjgyXSxbMjEwNjcyODMsW1s0MTgsbnVsbCxudWxsLFsxXV1dXV1dLFtudWxsLFtbMjEwNjcyOTcsW1s0MDYsbnVsbCxudWxsLFtdLFtbWzQsbnVsbCw5LG51bGwsbnVsbCxudWxsLG51bGwsW1wiQXJyYXkuZnJvbVwiXV0sWzFdXV1dXV0sWzIxMDY3MzAyXSxbMjEwNjczMDMsW1s0MDYsbnVsbCxudWxsLFsxXV1dXV1dLFsxMDAsW1syMTA2NzMwN10sWzIxMDY3MzA4LFtbNDE5LG51bGwsbnVsbCxbMV1dXV1dXSxbMTAwMCxbWzIyMzE2NDM3LG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsLTFdLFs3LG51bGwsbnVsbCwxLG51bGwsNV1dXV0sWzIyMzE2NDM4LG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsNF0sWzcsbnVsbCxudWxsLDEsbnVsbCwxMF1dXV1dLFs0LG51bGwsM11dXV0sWzEzLFtbMTAwMCxbWzIxMDY2ODE5LG51bGwsWzIsW1sxMixudWxsLG51bGwsbnVsbCw0LG51bGwsXCJMaW51eC4qQ2hyb21lXCIsW1wibmF2aWdhdG9yLnVzZXJBZ2VudFwiXV0sWzQsbnVsbCwyNyxudWxsLG51bGwsbnVsbCxudWxsLFtcIm5hdmlnYXRvci5jb25uZWN0aW9uLnNhdmVEYXRhXCJdXV1dXV1dLFsxMDAsW1syMTA2NTcyNixudWxsLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY1NzI1XCJdXV0sWzIxMDY1NzI3LFtbMjQwLG51bGwsbnVsbCxbMV1dXSxbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NTcyNVwiXV1dLFsyMTA2NTcyOCxbWzI0MSxudWxsLG51bGwsWzFdXV0sWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjU3MjVcIl1dXV0sWzQsbnVsbCw5LG51bGwsbnVsbCxudWxsLG51bGwsW1wiTGF5b3V0U2hpZnRcIl1dXSxbNTAsW1syMTA2NjM5Ml0sWzIxMDY2MzkzLFtbMzM4LG51bGwsbnVsbCxbMV1dXV1dXSxbNTAwLFtbMjEwNjY2MTRdLFsyMTA2NjYxNSxbWzc3LG51bGwsbnVsbCxbMV1dLFs3OCxudWxsLG51bGwsWzFdXSxbODUsbnVsbCxudWxsLFsxXV0sWzgwLG51bGwsbnVsbCxbMV1dLFs3NixudWxsLG51bGwsWzFdXV1dXSxbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NjYxM1wiXV1dLFs1MCxbWzIxMDY2ODA2XSxbMjEwNjY4MDcsW1szNzAsbnVsbCxudWxsLFsxXV1dXV1dLFsxMDAwLFtbMjEwNjY5NzAsbnVsbCxbMixbWzYsbnVsbCxudWxsLDYsbnVsbCw4NTgyNDAwLG51bGwsW1wiX19nc2FFeHAuaWRcIl1dLFsxLFtbNixudWxsLG51bGwsbnVsbCw0LG51bGwsXCJcIixbXCJmcmFtZUVsZW1lbnQuc3JjXCJdXV1dXV1dLFsyMTA2Njk3MSxudWxsLFsyLFtbNixudWxsLG51bGwsNixudWxsLDg1ODI0MDAsbnVsbCxbXCJfX2dzYUV4cC5pZFwiXV0sWzYsbnVsbCxudWxsLG51bGwsNCxudWxsLFwiXCIsW1wiZnJhbWVFbGVtZW50LnNyY1wiXV1dXV0sWzIxMDY2OTcyLG51bGwsWzIsW1s1LG51bGwsbnVsbCw2LG51bGwsbnVsbCxudWxsLFtcIl9fZ3NhRXhwLmlkXCJdXSxbMSxbWzYsbnVsbCxudWxsLDYsbnVsbCw4NTgyNDAwLG51bGwsW1wiX19nc2FFeHAuaWRcIl1dXV1dXV1dXSxbMTAwMCxbWzIxMDY2OTczLG51bGwsWzIsW1sxMixudWxsLG51bGwsbnVsbCw0LG51bGwsXCJMaW51eC4qQ2hyb21lXCIsW1wibmF2aWdhdG9yLnVzZXJBZ2VudFwiXV0sWzEsW1s2LG51bGwsbnVsbCxudWxsLDQsbnVsbCxcIlwiLFtcImZyYW1lRWxlbWVudC5zcmNcIl1dXV0sWzEsW1s1LG51bGwsbnVsbCw2LG51bGwsbnVsbCxudWxsLFtcIl9fZ3NhRXhwLmlkXCJdXV1dXV1dLFsyMTA2Njk3NCxudWxsLFsyLFtbMTIsbnVsbCxudWxsLG51bGwsNCxudWxsLFwiTGludXguKkNocm9tZVwiLFtcIm5hdmlnYXRvci51c2VyQWdlbnRcIl1dLFs2LG51bGwsbnVsbCxudWxsLDQsbnVsbCxcIlwiLFtcImZyYW1lRWxlbWVudC5zcmNcIl1dLFsxLFtbNSxudWxsLG51bGwsNixudWxsLG51bGwsbnVsbCxbXCJfX2dzYUV4cC5pZFwiXV1dXV1dXV1dLFsxMDAsW1syMTA2NzA4N10sWzIxMDY3MDg4LFtbNzgsbnVsbCxudWxsLFsxXV1dXV0sWzIsW1s0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2NjEzXCJdXV1dXSxbNTAsW1syMTA2NzIwMl0sWzIxMDY3MjAzLFtbMTkwMixudWxsLG51bGwsWzFdXV1dXSxudWxsLDI5XV1dLFs2LFtbbnVsbCxbWzIwMjA1NDk0XSxbMjAyMDU0OTVdXV0sW251bGwsW1syMTA2MjM3OSxbWzIzLG51bGwsbnVsbCxbMV1dXV1dXSxbMTAwMCxbWzIxMDY3MDIyLG51bGwsWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjY5MDRcIl1dXSxbMjEwNjcwMjYsbnVsbCxbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NjkwOFwiXV1dXSxbNCxudWxsLDE5XV0sWzEwMDAsW1syMTA2NzAyNyxudWxsLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2OTA0XCJdXV0sWzIxMDY3MDMxLG51bGwsWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjY5MDhcIl1dXV0sWzEsW1s0LG51bGwsMTldXV1dXV0sWzUsW1sxMDAwLFtbMjEwNjI4MTIsW1syMyxudWxsLG51bGwsWzFdXV0sWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wiX2dtcHRubFwiXV1dXSxbMTIsbnVsbCxudWxsLG51bGwsMixudWxsLFwidG9kYXlcXFxcLmxpbmVcXFxcLm1lLy4rLyhtYWlufGFydGljbGUpXCJdXSxbMTAwMCxbWzIxMDY0MTEzLFtbMjMsbnVsbCxudWxsLFsxXV1dLFs0LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcIndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuX2dtcHRubFwiXV1dXSxbMTIsbnVsbCxudWxsLG51bGwsMixudWxsLFwidG9kYXlcXFxcLmxpbmVcXFxcLm1lLy4rLyhtYWlufGFydGljbGUpXCJdXSxbMTAsW1syMTA2NTY0NV0sWzIxMDY1NjQ2LFtbMzA1LG51bGwsbnVsbCxbMV1dXV1dLFs0LG51bGwsOSxudWxsLG51bGwsbnVsbCxudWxsLFtcIndpbmRvdy5mZXRjaFwiXV1dLFsxLFtbMjEwNjYwMjhdLFsyMTA2NjAyOSxbWzIwMCxudWxsLG51bGwsWzFdXV1dLFsyMTA2NjAzMCxbWzIyMCxudWxsLG51bGwsWzFdXV1dXSxudWxsLDI0XSxbNTAsW1syMTA2NjAzMV0sWzIxMDY2MDMyLFtbMjM5LG51bGwsbnVsbCxbMV1dXV1dLG51bGwsMjRdLFsxLFtbMjEwNjYzOTBdLFsyMTA2NjM5MSxbWzM0NixudWxsLG51bGwsWzFdXV1dXV0sWzUwLFtbMjEwNjY0NjVdLFsyMTA2NjQ2NixbWzMwMixudWxsLG51bGwsWzFdXV1dXV0sWzUsW1syMTA2NjgwOF0sWzIxMDY2ODA5LFtbMzYxLG51bGwsbnVsbCxbMV1dLFszNjAsbnVsbCxudWxsLFsxXV1dXV1dLFs1MCxbWzIxMDY2OTI4XSxbMjEwNjY5MjksW1syMzksbnVsbCxudWxsLFsxXV0sWzQwNSxudWxsLG51bGwsWzFdXV1dXSxudWxsLDI0XSxbMTAsW1syMTA2Njk4NF0sWzIxMDY2OTg1XSxbMjEwNjY5ODZdXSxudWxsLDI5XSxbMTAwMCxbWzIxMDY2OTg3LG51bGwsWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjY5ODRcIl1dXSxbMjEwNjY5ODgsW1tudWxsLDI0LG51bGwsW251bGwsMjEwNjY5ODhdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY2OTg4XV1dLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2OTg1XCJdXV0sWzIxMDY2OTg5LFtbbnVsbCwyNCxudWxsLFtudWxsLDIxMDY2OTg5XV0sWzM5MyxudWxsLG51bGwsWzFdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY2OTg5XV1dLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2OTg2XCJdXV1dLFsxMixudWxsLG51bGwsbnVsbCw1LG51bGwsXCJ3d3dcXFxcLmdvb2dsZXRhZ3NlcnZpY2VzXFxcXC5jb21cIl0sMjldLFsxMCxbWzIxMDY3MDU2XSxbMjEwNjcwNTcsW1szMTIsbnVsbCxudWxsLFsxXV1dXV0sbnVsbCwyMV0sWzEwMCxbWzIxMDY3MDU4XSxbMjEwNjcwNTksW1szMTIsbnVsbCxudWxsLFsxXV1dXV0sWzQsbnVsbCw5LG51bGwsbnVsbCxudWxsLG51bGwsW1wiZG9jdW1lbnQuaGFzVHJ1c3RUb2tlblwiXV0sMjFdLFs1MCxbWzIxMDY3MTE4XSxbMjEwNjcxMTksW1szNzMsbnVsbCxudWxsLFsxXV1dXV1dLFsxMDAwLFtbMjEwNjczMDksW1tudWxsLDcsbnVsbCxbbnVsbCwxXV0sW251bGwsMjQsbnVsbCxbbnVsbCwyMTA2NzMwOV1dLFs2MCxudWxsLG51bGwsWzFdXSxbbnVsbCwyOCxudWxsLFtudWxsLDAuMV1dLFtudWxsLDI1LG51bGwsW251bGwsMjEwNjczMDldXV0sWzYsbnVsbCxudWxsLDQsbnVsbCw2XV0sWzIxMDY3MzEwLFtbbnVsbCw3LG51bGwsW251bGwsMV1dLFtudWxsLDI0LG51bGwsW251bGwsMjEwNjczMTBdXSxbNjAsbnVsbCxudWxsLFsxXV0sW251bGwsMjgsbnVsbCxbbnVsbCwwLjFdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY3MzEwXV1dLFs2LG51bGwsbnVsbCw0LG51bGwsN11dXSxbNCxudWxsLDNdLDFdLFsxMDAwLFtbMjEwNjczMzAsW1tudWxsLDcsbnVsbCxbbnVsbCwxXV0sW251bGwsMjQsbnVsbCxbbnVsbCwyMTA2NzMzMF1dLFs2MCxudWxsLG51bGwsWzFdXSxbbnVsbCwyOCxudWxsLFtudWxsLDAuMV1dLFtudWxsLDI1LG51bGwsW251bGwsMjEwNjczMzBdXV0sWzYsbnVsbCxudWxsLDQsbnVsbCw4XV0sWzIxMDY3MzMxLFtbbnVsbCw3LG51bGwsW251bGwsMV1dLFtudWxsLDI0LG51bGwsW251bGwsMjEwNjczMzFdXSxbNjAsbnVsbCxudWxsLFsxXV0sW251bGwsMjgsbnVsbCxbbnVsbCwwLjFdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY3MzMxXV1dLFs2LG51bGwsbnVsbCw0LG51bGwsOV1dXSxbNCxudWxsLDNdLDFdXV0sWzEyLFtbMjAsW1syMTA2NTcyNF0sWzIxMDY1NzI1LFtbMjAzLG51bGwsbnVsbCxbMV1dXV1dLFs0LG51bGwsOSxudWxsLG51bGwsbnVsbCxudWxsLFtcIkxheW91dFNoaWZ0XCJdXV0sWzEsW1syMTA2NTc4NF1dXSxbMSxbWzIxMDY1Nzg1LG51bGwsWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wibmF2aWdhdG9yLmNvbm5lY3Rpb24uc2F2ZURhdGFcIl1dXV1dLFsxLFtbMjEwNjU3ODYsbnVsbCxbNCxudWxsLDI3LG51bGwsbnVsbCxudWxsLG51bGwsW1wibmF2aWdhdG9yLmNvbm5lY3Rpb24uc2F2ZURhdGFcIl1dXV1dLFsxLFtbMjEwNjU3ODcsbnVsbCxbMSxbWzQsbnVsbCwyNyxudWxsLG51bGwsbnVsbCxudWxsLFtcIm5hdmlnYXRvci5jb25uZWN0aW9uLnNhdmVEYXRhXCJdXV1dXV1dLFsxLFtbMjEwNjU3OTgsbnVsbCxbMixbWzUsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wibG9jYWxTdG9yYWdlXCJdXSxbNCxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJsb2NhbFN0b3JhZ2VcIl1dXV1dXV0sWzEsW1syMTA2NTc5OSxudWxsLFsyLFtbNSxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJsb2NhbFN0b3JhZ2VcIl1dLFsxLFtbNCxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJsb2NhbFN0b3JhZ2VcIl1dXV1dXV1dXSxbMSxbWzIxMDY2NDM4LG51bGwsWzEsW1s1LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcImxvY2FsU3RvcmFnZVwiXV1dXV1dXSxbNTAsW1syMTA2NjUzMl0sWzIxMDY2NTMzLFtbMzYzLG51bGwsbnVsbCxbMV1dXV1dLG51bGwsMjVdLFs1MDAsW1syMTA2NjUzNF0sWzIxMDY2NTM1LFtbMzYzLG51bGwsbnVsbCxbMV1dXV1dLFs0LG51bGwsOSxudWxsLG51bGwsbnVsbCxudWxsLFtcIm5hdmlnYXRvci51c2VyQWdlbnREYXRhLmdldEhpZ2hFbnRyb3B5VmFsdWVzXCJdXSwyNV0sWzEwLFtbMjEwNjY2MTJdLFsyMTA2NjYxMyxbWzgzLG51bGwsbnVsbCxbMV1dLFs4NCxudWxsLG51bGwsWzFdXV1dXV0sWzUwLFtbMjEwNjY3MDVdLFsyMTA2NjcwNixbWzM4MixudWxsLG51bGwsWzFdXV1dXV0sWzEwLFtbNDQ3MjU2MjNdLFs0NDcyNTYyNCxbWzE5MDEsbnVsbCxudWxsLFsxXV1dXV0sbnVsbCwyOF1dXV1dKVxuIn0sICJoZWFkZXJzU2l6ZSI6IDE2MzMsICJib2R5U2l6ZSI6IDE4NjcxLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAyMDMwNH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDYyLjU4LCAicmVjZWl2ZSI6IDMuOTY4fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjVaIiwgInRpbWUiOiA1Mi4zMjcsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvYXN0LmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ4MSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIlRVOWJwNkJMWG9nQTBwdjk5WXBtRldvM0FfVVBUWGNiN19TVDNCZlBfeDAtMTY4NDk0Mjg3NS0wLUFTT3l1S2VPc3RnU25RY1hlNVlhMDE2ZStkaDZJYkp2dDlyay9tKzJWYkxUZDFjZmhPSmxxSXoxVysvS0tDSFBRUmtUQnJYL0VqY09sTTU3RDFXSGU0Yz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ0ZGFmNDkzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTUgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVplZnRqSEJoYmtvZlRlVndaSmFiRmQ2NDRhZWh5MmJhelVFdEZKRldDazZjXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09VFU5YnA2QkxYb2dBMHB2OTlZcG1GV28zQV9VUFRYY2I3X1NUM0JmUF94MC0xNjg0OTQyODc1LTAtQVNPeXVLZU9zdGdTblFjWGU1WWEwMTZlK2RoNkliSnZ0OXJrL20rMlZiTFRkMWNmaE9KbHFJejFXKy9LS0NIUFFSa1RCclgvRWpjT2xNNTdEMVdIZTRjPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE1IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9hc3QuanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtWmVmdGpIQmhia29mVGVWd1pKYWJGZDY0NGFlaHkyYmF6VUV0RkpGV0NrNmMifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDg2NjY0LCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsICJjb21wcmVzc2lvbiI6IDU2MzkxLCAidGV4dCI6ICIvKiEgQVNUIHYwLjMxLjAgVXBkYXRlZDogMjAyMC0wNy0xNSAqLyFmdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKGEpe2lmKHRbYV0pcmV0dXJuIHRbYV0uZXhwb3J0czt2YXIgcj10W2FdPXtpOmEsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVthXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxuKSxyLmw9ITAsci5leHBvcnRzfW4ubT1lLG4uYz10LG4uZD1mdW5jdGlvbihlLHQsYSl7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0OmF9KX0sbi5yPWZ1bmN0aW9uKGUpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmXCJvYmplY3RcIj09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgYT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG4ucihhKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSksMiZ0JiZcInN0cmluZ1wiIT10eXBlb2YgZSlmb3IodmFyIHIgaW4gZSluLmQoYSxyLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwscikpO3JldHVybiBhfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LFwiYVwiLHQpLHR9LG4ubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sbi5wPVwiXCIsbihuLnM9MSl9KFtmdW5jdGlvbihlKXtlLmV4cG9ydHM9e206e1VUX0lGUkFNRTpcInV0aWZfXCIsVVRfRElWOlwiZGl2X3V0aWZfXCJ9LGo6e1dBUk46XCJXQVJOXCJ9LGU6e0RFQlVHX01PREU6XCJhc3RfZGVidWdcIixBU1RfRE9OR0xFOlwiYXN0X2RvbmdsZVwiLEFTVF9ERUJVR19NRU1CRVI6XCJhc3RfZGVidWdfbWVtYmVyXCIsQVNUX0RFQlVHX0JJRERFUjpcImFzdF9kZWJ1Z19iaWRkZXJcIixBU1RfVEVTVDpcImFzdF90ZXN0XCIsQVNUX1RPT0xLSVQ6XCJhc3RfdG9vbGtpdFwiLEFTVF9PVkVSUklERTp7QkFTRTpcImFzdF9vdmVycmlkZV9cIixESVY6XCJkaXZcIixJTkRFWDpcImluZGV4XCIsVEFHX0lEOlwidGFnX2lkXCIsSU5WX0NPREU6XCJpbnZfY29kZVwiLFBVQkxJU0hFUl9JRDpcInB1Ymxpc2hlcl9pZFwifX0sbDp7VU5ERUZJTkVEOlwidW5kZWZpbmVkXCIsT0JKRUNUOlwib2JqZWN0XCIsU1RSSU5HOlwic3RyaW5nXCIsTlVNQkVSOlwibnVtYmVyXCJ9LGM6e0lFOlwibXNpZVwiLE9QRVJBOlwib3BlcmFcIn0sbjp7TE9BREVEOlwibG9hZGVkXCIsSU1QUkVTU0lPTjpcImltcHJlc3Npb25cIn0sZjp7VVRfQkFTRTpcIi91dC92M1wiLElNUEJVUzpcImliLmFkbnhzLmNvbVwiLFVUX1BSRUJJRDpcIi91dC92My9wcmViaWRcIn0scTp7TUVESUFfVFlQRTpcIm1lZGlhX3R5cGVcIixDUkVBVElWRV9JRDpcImNyZWF0aXZlX2lkXCIsQURfVFlQRTpcImFkX3R5cGVcIixCQU5ORVI6XCJiYW5uZXJcIixWSURFTzpcInZpZGVvXCIsQ09OVEVOVDpcImNvbnRlbnRcIixVVUlEOlwidXVpZFwifSxrOntCQU5ORVI6XCJiYW5uZXJcIixOQVRJVkU6XCJuYXRpdmVcIixWSURFTzpcInZpZGVvXCJ9LGE6e0NSRUFUSVZFX0lEOlwiY3JlYXRpdmVfaWRcIixOT1RJRlk6XCJub3RpZnlfdXJsXCIsTk9BRDpcIm5vX2FkX3VybFwiLElNUF9VUkxTOlwiaW1wcmVzc2lvbl91cmxzXCIsVFJBQ0tFUlM6XCJ0cmFja2Vyc1wifSxkOntSVEI6XCJydGJcIixDU006XCJjc21cIixTU006XCJzc21cIn0sYjp7QkFOTkVSOlwiYmFubmVyXCIsTkFUSVZFOlwibmF0aXZlXCIsVklERU86XCJ2aWRlb1wifSxpOntWSURFT19NRURJQVRJT05fSlM6XCIvL2FjZG4uYWRueHMuY29tL3ZpZGVvL2FzdE1lZGlhdGlvbi9Bc3RNZWRpYXRpb25NYW5hZ2VyLmpzXCIsQkFOTkVSX01FRElBVElPTl9KUzpcIi8vYWNkbi5hZG54cy5jb20vYXN0L21lZGlhdGlvbi8wLjMxLjAvbWVkaWF0aW9uLmpzXCIsU0FGRV9GUkFNRV9VUkw6XCIvL2FjZG4uYWRueHMuY29tL2FzdC9zYWZlZnJhbWUvc3RhdGljLzAuMzEuMC9odG1sL3NhZmVmcmFtZS12Mi5odG1sXCIsQ0ROX09SSUdJTjpcImFjZG4uYWRueHMuY29tXCJ9LGc6e1JFUVVFU1Q6XCJhZFJlcXVlc3RlZFwiLEFWQUlMQUJMRTpcImFkQXZhaWxhYmxlXCIsTE9BREVEOlwiYWRMb2FkZWRcIixMT0FERURfTUVESUFURUQ6XCJhZExvYWRlZE1lZGlhdGVkXCIsTk9fQklEX01FRElBVEVEOlwiYWROb0JpZE1lZGlhdGVkXCIsUkVRVUVTVF9GQUlMOlwiYWRSZXF1ZXN0RmFpbHVyZVwiLE5PX0JJRDpcImFkTm9CaWRcIixERUZBVUxUOlwiYWREZWZhdWx0XCIsRVJST1I6XCJhZEVycm9yXCIsQ09MTEFQU0U6XCJhZENvbGxhcHNlXCIsQkFEX1JFUVVFU1Q6XCJhZEJhZFJlcXVlc3RcIn0scDp7QVJSQVk6XCJBcnJheVwiLFNUUklORzpcIlN0cmluZ1wiLEZVTkM6XCJGdW5jdGlvblwiLE5VTTpcIk51bWJlclwiLE9CSjpcIk9iamVjdFwiLEJPT0w6XCJCb29sZWFuXCJ9LG86e0RFRkFVTFRfWklOREVYOjNlMyxTVEFUVVM6e1JFQURZOlwicmVhZHlcIixOT1RJRllfRVhQQU5ERUQ6XCJleHBhbmRlZFwiLE5PVElGWV9DT0xMQVBTRUQ6XCJjb2xsYXBzZWRcIixOT1RJRllfRVJST1I6XCJlcnJvclwiLEZPQ1VTX0NIQU5HRTpcImZvY3VzLWNoYW5nZVwiLEdFT01fVVBEQVRFOlwiZ2VvbS11cGRhdGVcIixDTVA6XCJjbXBcIn19LGg6e0NSRUFUSVZFOlwiY3JlYXRpdmVcIn19fSxmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmZnVuY3Rpb24oKXt0cnl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcInhcIix7fSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpfHwoT2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKGUsdCxuKXtlW3RdPW4udmFsdWV9KTt2YXIgYSxyPSc8ZGl2IGNsYXNzPVwiYW5jb29raWUtaGVhZGVyXCIgaWQ9XCJhbmNvb2tpZS1jb250YWluZXJcIj5cXG4gIDxkaXYgaWQ9XCJhbmNvb2tpZS1uYXZcIj5cXG4gICAgPGRpdj48L2Rpdj5cXG4gIDwvZGl2PlxcbiAgPGRpdiBpZD1cImFuY29va2llLXNsaWRlclwiPlxcbiAgICA8cCBpZD1cImFuY29va2llLW1zZ1wiPllvdXIgYnJvd3NlciBibG9ja3MgM3JkIHBhcnR5IGNvb2tpZXMgYnkgZGVmYXVsdC4gQnkgY2xpY2tpbmcgb24gcGFnZSB5b3UgYWxsb3cgb3VyIHBhcnRuZXIgQXBwTmV4dXMgdG8gcGxhY2UgY29va2llcyB0byBzaG93IHJlbGV2YW50IGFkcy4gUmVhZCBtb3JlIG9yIG9wdCBvdXQgb2YgdGhlc2UgY29va2llcyA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXBwbmV4dXMuY29tL2VuL2NvbXBhbnkvcGxhdGZvcm0tcHJpdmFjeS1wb2xpY3kjY2hvaWNlc1wiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiY29sb3I6ICM0ZjRmNGY7XCI+aGVyZTwvYT4uIFRoaXMgbm90aWNlIGFwcGVhcnMgb25jZSA8L3A+XFxuICAgIDxkaXYgaWQ9XCJhbmNvb2tpZS1jbG9zZVwiPiZ0aW1lczwvZGl2PlxcbiAgPC9kaXY+XFxuPC9kaXY+XFxuJyxpPVwiLmFuY29va2llLWhlYWRlciB7XFxuICBiYWNrZ3JvdW5kOiAjZDNkM2QzO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgbWluLWhlaWdodDogMzhweDtcXG59XFxuXFxuLmFuY29va2llLWhlYWRlciAqIHtcXG4gIGZvbnQtc2l6ZTogMTJweDtcXG4gIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogIzU1NTtcXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbi5hbmNvb2tpZS1oZWFkZXIgcCB7XFxuICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCAzOHB4O1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG59XFxuXFxuLmFuY29va2llLWhlYWRlciBhOmxpbmssXFxuLmFuY29va2llLWhlYWRlciBhOmhvdmVyLFxcbi5hbmNvb2tpZS1oZWFkZXIgYTp2aXNpdGVkLFxcbi5hbmNvb2tpZS1oZWFkZXIgYTphY3RpdmUge1xcbiAgY29sb3I6ICNlNmU2ZTY7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxufVxcblxcbi5hbmNvb2tpZS1oZWFkZXIge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgb3BhY2l0eTogMC45O1xcbn1cXG5cXG4uYW5jb29raWUtaGVhZGVyICoge1xcbiAgZm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbiNhbmNvb2tpZS1tc2cge1xcbiAgaGVpZ2h0OiAzNHB4O1xcbiAgb3BhY2l0eTogMDtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjI0cHgpIHtcXG4gIC5hbmNvb2tpZS1oZWFkZXIgKiB7XFxuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgI2FuY29va2llLW1zZyB7XFxuICAgIGhlaWdodDogMjBweDtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogNzY4cHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSB7XFxuICAuYW5jb29raWUtaGVhZGVyIHtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgfVxcbn1cXG5cXG4uYW5jb29raWUtaGVhZGVyIHtcXG4gIHotaW5kZXg6IDk5OTk7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG5cXG4jYW5jb29raWUtc2xpZGVyIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nOiAxMHB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuI2FuY29va2llLXNsaWRlciBwIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBvcGFjaXR5OiAwO1xcbiAgLXdlYmtpdC1jb2x1bW4tZ2FwOiAyMHB4O1xcbiAgLXdlYmtpdC1jb2x1bW4tcnVsZS13aWR0aDogMDtcXG59XFxuXFxuI2FuY29va2llLW5hdiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IDA7XFxuICB0b3A6IC0xMXB4O1xcbiAgei1pbmRleDogMjAwO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG4jYW5jb29raWUtbmF2IGRpdiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwYWRkaW5nOiAwIDEwcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDNkM2QzO1xcbiAgYm9yZGVyLXJhZGl1czogMTBweCAxMHB4IDAgMDtcXG59XFxuXFxuI2FuY29va2llLW5hdiBzcGFuIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiA2cHg7XFxuICBoZWlnaHQ6IDZweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBtYXJnaW46IDFweCAycHg7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMSk7XFxuICAtd2Via2l0LW9wYWNpdHk6IDAuNTtcXG59XFxuXFxuI2FuY29va2llLW5hdiBzcGFuLnNlbGVjdGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyLCAxKTtcXG4gIC13ZWJraXQtb3BhY2l0eTogMTtcXG59XFxuXFxuI2FuY29va2llLWNsb3NlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiA1cHg7XFxuICBib3R0b206IDIwcHg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcXG59XFxuXCI7ZnVuY3Rpb24gbyhlKXtzLnNldFBhcmVudE5vZGUoZSkscy5nZXRDb250YWluZXIoKS5xdWVyeVNlbGVjdG9yKFwiI2FuY29va2llLWNsb3NlXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGZ1bmN0aW9uKCl7ZS5yZW1vdmUoKX0pO3ZhciB0LG49ZnVuY3Rpb24oKXt2YXIgZT1zLmdldFNsaWRlckVsZW1lbnQoKSxuPWQoZSkscj1zLmdldE1lc3NhZ2VFbGVtZW50KCk7ci5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgLXdlYmtpdC1jb2x1bW4td2lkdGg6IFwiK24rXCJweDtcIik7dmFyIGk9cy5nZXROYXYoKTtpLmlubmVySFRNTD1cIlwiLGNsZWFyVGltZW91dCh0KSx0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGEpLHIuc3R5bGUud2Via2l0VHJhbnNpdGlvbj1cIm9wYWNpdHkgMC4zcyBlYXNlLW91dFwiLHIuc3R5bGUub3BhY2l0eT0xO3ZhciB0PWUuc2Nyb2xsV2lkdGgrMTAsbz1NYXRoLnJvdW5kKHQvbik7MTxvJiYoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVwiPHNwYW4gY2xhc3M9c2VsZWN0ZWQ+PC9zcGFuPlwiLG49MTtuPDI7bisrKXQrPVwiPHNwYW4+PC9zcGFuPlwiO2UuaW5uZXJIVE1MPXR9KGkpLGZ1bmN0aW9uKCl7dmFyIGUsdD1kKHMuZ2V0U2xpZGVyRWxlbWVudCgpKSxuPXtjeWNsZXM6Mixpc0ZpcnN0U2xpZGU6ITB9O2E9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtuLmN5Y2xlc3x8Y2xlYXJJbnRlcnZhbChhKSxlPW4uaXNGaXJzdFNsaWRlPzE6MCxuPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1zLmdldE1lc3NhZ2VFbGVtZW50KCk7YS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPVwib3BhY2l0eSAwLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSBcIit0K1wicyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMSlcIixhLnN0eWxlLndlYmtpdFRyYW5zZm9ybT1cInRyYW5zbGF0ZVgoXCIrZStcInB4KVwiLDA9PWUmJm4uY3ljbGVzLS0sbi5pc0ZpcnN0U2xpZGU9IW4uaXNGaXJzdFNsaWRlO2Zvcih2YXIgcj1zLmdldENvbnRhaW5lcigpLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzcGFuXCIpLGk9MDtpPHIubGVuZ3RoO2krKylcInNlbGVjdGVkXCI9PT1yW2ldLmNsYXNzTmFtZT9yW2ldLnJlbW92ZUF0dHJpYnV0ZShcImNsYXNzXCIpOnJbaV0uc2V0QXR0cmlidXRlKFwiY2xhc3NcIixcInNlbGVjdGVkXCIpO3JldHVybiBufSgtMSplKnQsMS4yLG4pfSwzZTMpfSgpKX0sMzAwKX07bigpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsbil9dmFyIHM9ZnVuY3Rpb24oKXt2YXIgZSx0LG4sYSxyO3JldHVybntnZXRDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gZXx8KGU9ci5xdWVyeVNlbGVjdG9yKFwiI2FuY29va2llLWNvbnRhaW5lclwiKSksZX0sZ2V0TWVzc2FnZUVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdHx8KHQ9ci5xdWVyeVNlbGVjdG9yKFwiI2FuY29va2llLW1zZ1wiKSksdH0sZ2V0U2xpZGVyRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiBufHwobj1yLnF1ZXJ5U2VsZWN0b3IoXCIjYW5jb29raWUtc2xpZGVyXCIpKSxufSxnZXROYXY6ZnVuY3Rpb24oKXtyZXR1cm4gYXx8KGE9ci5xdWVyeVNlbGVjdG9yKFwiI2FuY29va2llLW5hdiBkaXZcIikpLGF9LHNldFBhcmVudE5vZGU6ZnVuY3Rpb24oZSl7cj1lfX19KCk7ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5vZmZzZXRXaWR0aH12YXIgdT1cImh0dHA6Ly9pYi5hZG54cy5jb20vc2VnP2FkZD0xJnJlZGlyPVwiLGM9XCIvL2liLmFkbnhzLmNvbS9nZXR1aWRqXCIsbD0hMTtmdW5jdGlvbiBmKCl7bHx8KGw9ITAsL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT8oZnVuY3Rpb24oKXtpZihcInRydWVcIiE9PWRvY3VtZW50LmNvb2tpZS5yZXBsYWNlKC8oPzooPzpefC4qO1xccyopYW5Db29raWVzZXRGb290ZXJcXHMqXFw9XFxzKihbXjtdKikuKiQpfF4uKiQvLFwiJDFcIikpe3ZhciBlPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtlLmlkPVwiY29va2llbXNnLXNsaWRlclwiO3ZhciB0PSc8c3R5bGUgbWVkaWE9XCJzY3JlZW5cIj4nK2krXCI8L3N0eWxlPlwiO3JldHVybiBlLmlubmVySFRNTD10K3IsZX0oKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLG8oZSksZG9jdW1lbnQuY29va2llPVwiYW5Db29raWVzZXRGb290ZXI9dHJ1ZTsgZXhwaXJlcz1GcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVFwifX0oKSxmdW5jdGlvbihlLHQpe3ZhciBuO3RyeXtuPW5ldyBYTUxIdHRwUmVxdWVzdH1jYXRjaChlKXtyZXR1cm59bi5vcGVuKFwiR0VUXCIsZSksbi53aXRoQ3JlZGVudGlhbHM9ITAsbi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT09bi5yZWFkeVN0YXRlJiYyMDA9PT1uLnN0YXR1cyl0cnl7dmFyIGU9SlNPTi5wYXJzZShuLnJlc3BvbnNlVGV4dCk7dChlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0sbi5zZW5kKCl9KGMscCkpOmNvbnNvbGUubG9nKFwiTm90IHNhZmFyaSwgc2tpcHBpbmcgbGluayBvdmVycmlkZVwiKSl9ZnVuY3Rpb24gcChlKXtjb25zb2xlLmxvZyhlLnVpZCksMD09PShwYXJzZUludChlLnVpZCwxMCl8fDApJiZmdW5jdGlvbigpe2NvbnNvbGUubG9nKFwiUGVyZm9taW5nIGxpbmsgb3ZlcnJpZGUuXCIpO2Zvcih2YXIgZT0wO2U8ZG9jdW1lbnQubGlua3MubGVuZ3RoO2UrKyl7dmFyIHQ9ZG9jdW1lbnQubGlua3NbZV07dC5ocmVmPXUrZW5jb2RlVVJJQ29tcG9uZW50KHQuaHJlZil9fSgpfXZhciBnPW4oMCksbT1nLnAuQVJSQVksdj1nLnAuU1RSSU5HLGg9Zy5wLkZVTkMseT1nLnAuTlVNLGI9Zy5wLk9CSix3PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksST0hMSxfPWcuZS5ERUJVR19NT0RFLEU9Zy5sLlVOREVGSU5FRCxUPWcuZC5SVEIsaz1nLmQuQ1NNLHg9Zy5kLlNTTSxTPWcuaCxBPW51bGw7dHJ5e0E9XCJvYmplY3RcIj09dHlwZW9mIGNvbnNvbGUuaW5mbz9jb25zb2xlLmluZm86Y29uc29sZS5pbmZvLmJpbmQod2luZG93LmNvbnNvbGUpfWNhdGNoKGUpe312YXIgUj1mdW5jdGlvbihlLHQsbixhKXtlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKHQsbixhKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KFwib25cIit0LG4pfSxOPWZ1bmN0aW9uKGUsdCxuLGEpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcj9lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLGEpOmUuZGV0YWNoRXZlbnQmJmUuZGV0YWNoRXZlbnQoXCJvblwiK3Qsbil9LEQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09XCJbb2JqZWN0IFwiK3QrXCJdXCJ9LEM9ZnVuY3Rpb24oZSl7cmV0dXJuIEQoZSxiKX0scT1mdW5jdGlvbihlKXtyZXR1cm4gRChlLGgpfSxPPWZ1bmN0aW9uKGUpe3JldHVybiBEKGUsdil9LE09ZnVuY3Rpb24oZSl7cmV0dXJuIEQoZSxtKX0sUD1mdW5jdGlvbihlKXtyZXR1cm4gRChlLHkpfSxCPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiEwO2lmKE0oZSl8fE8oZSkpcmV0dXJuIDA9PT1lLmxlbmd0aDtmb3IodmFyIHQgaW4gZSlpZih3LmNhbGwoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0sVT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nfSxGPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IERhdGU7cmV0dXJuXCJbXCIrZS5nZXRIb3VycygpK1wiOlwiK2UuZ2V0TWludXRlcygpK1wiOlwiK2UuZ2V0U2Vjb25kcygpK1wiOlwiK2UuZ2V0TWlsbGlzZWNvbmRzKCkrXCJdIFwifSxMPWZ1bmN0aW9uKGUpe2lmKEsoKSYmVSgpKXt2YXIgdD1GKCksbj1kZSgpP1wiU0FGRUZSQU1FIE1FU1NBR0U6IFwiOlwiTUVTU0FHRTogXCI7Y29uc29sZS5sb2codCtuK2UpfX0sej1mdW5jdGlvbihlKXtpZihLKCkmJlUoKSl7dmFyIHQ9RigpLG49ZGUoKT9cIlNBRkVGUkFNRSBXQVJOOiBcIjpcIldBUk46IFwiO2NvbnNvbGUud2Fybj9jb25zb2xlLndhcm4odCtuK2UpOmNvbnNvbGUubG9nKHQrbitlKX19LFc9ZnVuY3Rpb24oZSx0KXtpZihLKCkmJlUoKSl7dmFyIG49dHx8XCJHRU5FUkFMX0VSUk9SXCIsYT1GKCkscj1kZSgpP1wiU0FGRUZSQU1FIFwiOlwiXCI7Y29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yKGErcituK1wiOiBcIitlKTpjb25zb2xlLmxvZyhhK3IrbitcIjogXCIrZSl9fSxqPWZ1bmN0aW9uKGUpe0soKSYmVSgpJiZjb25zb2xlLnRpbWVTdGFtcCYmY29uc29sZS50aW1lU3RhbXAoZSl9LFY9ZnVuY3Rpb24oZSx0KXtpZihLKCkmJlUoKSl7dmFyIG49RigpO2lmKEEpe3QmJjAhPT10Lmxlbmd0aHx8KHQ9XCJcIik7dmFyIGE9ZGUoKT9cIlNBRkVGUkFNRSBJTkZPOiBcIjpcIklORk86IFwiO0EobithK2UrKFwiXCI9PT10P1wiXCI6XCIgOiBwYXJhbXMgOiBcIiksdCl9fX0sSD1mdW5jdGlvbihlLHQsbil7dmFyIGE9ZS5kb2N1bWVudCxyPWEuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtyLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIixyLmFzeW5jPSEwLG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4mJihyLnJlYWR5U3RhdGU/ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtcImxvYWRlZFwiIT09ci5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPT1yLnJlYWR5U3RhdGV8fChyLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLG4oKSl9OnIub25sb2FkPWZ1bmN0aW9uKCl7bigpfSksci5zcmM9dDt2YXIgaT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKTtyZXR1cm4oaT1pLmxlbmd0aD9pOmEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpKS5sZW5ndGgmJihpPWlbMF0pLmluc2VydEJlZm9yZShyLGkuZmlyc3RDaGlsZCkscn0sWD1mdW5jdGlvbigpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3JldHVyblwieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4XCIucmVwbGFjZSgvW3h5XS9nLGZ1bmN0aW9uKHQpe3ZhciBuPShlKzE2Kk1hdGgucmFuZG9tKCkpJTE2fDA7cmV0dXJuIGU9TWF0aC5mbG9vcihlLzE2KSwoXCJ4XCI9PT10P246MyZufDgpLnRvU3RyaW5nKDE2KX0pfSxKPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT12b2lkIDA7aWYobj1cImFueF9cIituKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLGUmJnQpeyhhPW5ldyBJbWFnZSkuaWQ9bixhLnNyYz10LGEuaGVpZ2h0PTAsYS53aWR0aD0wLGEuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixhLm9ubG9hZD1mdW5jdGlvbigpe3RyeXt0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcyl9Y2F0Y2goZSl7fX07dHJ5e2UuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKX1jYXRjaChlKXtXKFwiRXJyb3IgbG9nZ2luZyBpbXByZXNzaW9uIGZvciB0YWc6IFwiK24rXCIgOlwiK2UubWVzc2FnZSl9fX0sRz1mdW5jdGlvbihlLHQpe2lmKCFCKGUpKXtpZihxKGUuZm9yRWFjaCkpcmV0dXJuIGUuZm9yRWFjaCh0KTt2YXIgbj0wLGE9ZS5sZW5ndGg7aWYoYT4wKWZvcig7bjxhO24rKyl0KGVbbl0sbixlKTtlbHNlIGZvcihuIGluIGUpdy5jYWxsKGUsbikmJnQoZVtuXSxuLGUpfX0sWT1mdW5jdGlvbihlLHQpe2lmKEIoZSkpcmV0dXJuITE7Zm9yKHZhciBuPWUubGVuZ3RoO24tLTspaWYoZVtuXT09PXQpcmV0dXJuITA7cmV0dXJuITF9LEs9ZnVuY3Rpb24oKXtyZXR1cm4hIWRlKCl8fChpZSgpLmFwbnRhZz1pZSgpLmFwbnRhZ3x8e30sYXBudGFnJiYhMT09PWFwbnRhZy5kZWJ1ZyYmITE9PT1JJiYoYXBudGFnLmRlYnVnPVwiVFJVRVwiPT09ZWUoXykudG9VcHBlckNhc2UoKSxJPSEwKSwhKCFhcG50YWd8fCFhcG50YWcuZGVidWcpKX0sJD1mdW5jdGlvbihlKXt2YXIgdD1hcG50YWcucmVxdWVzdHMudGFnc1tlXSxuPXQmJnQuaW5pdENvbGxhcHNlZCxhPW4mJm4uZXhwYW5kQnkmJmxlKFMpLmluZGV4T2Yobi5leHBhbmRCeSk+PTA7cmV0dXJuIG4mJmF9LFE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIWUmJi0xIT09ZS5pbmRleE9mKHQpfSxaPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB3aW5kb3cudG9wLmxvY2F0aW9uLnNlYXJjaH1jYXRjaChlKXt0cnl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2h9Y2F0Y2goZSl7cmV0dXJuXCJcIn19fSxlZT1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBSZWdFeHAoXCJbXFxcXD8mXVwiK2UrXCI9KFteJiNdKilcIikuZXhlYyh0fHxaKCkpO3JldHVybiBudWxsPT09bj9cIlwiOmRlY29kZVVSSUNvbXBvbmVudChuWzFdLnJlcGxhY2UoL1xcKy9nLFwiIFwiKSl9LHRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHk/ZS5oYXNPd25Qcm9wZXJ0eSh0KTp0eXBlb2YgZVt0XSE9PUUmJmUuY29uc3RydWN0b3IucHJvdG90eXBlW3RdIT09ZVt0XX0sbmU9ZnVuY3Rpb24oZSx0KXtpZihCKGUpKXJldHVybltdO2lmKHEoZS5tYXApKXJldHVybiBlLm1hcCh0KTt2YXIgbj1bXTtyZXR1cm4gRyhlLGZ1bmN0aW9uKGEscil7bi5wdXNoKHQoYSxyLGUpKX0pLG59LGFlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD9uOk8odCk/dDpQKHQpP3QudG9TdHJpbmcoKTp2b2lkIHooXCJVbnN1cG9ydGVkIHR5cGUgZm9yIHBhcmFtOiBcIitlK1wiIHJlcXVpcmVkIHR5cGU6IFN0cmluZ1wiKX0scmU9ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIG51bGw9PXQ/YTpEKHQsbik/dDooeihcIlVuc3Vwb3J0ZWQgdHlwZSBmb3IgcGFyYW06IFwiK2UrXCIgcmVxdWlyZWQgdHlwZTogXCIrbiksbj09PXkmJih0PU51bWJlcih0KSksaXNOYU4odCk/YTp0KX0saWU9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93fSxvZT1mdW5jdGlvbihlKXtpZihlJiZlLmxlbmd0aD4wKXtpZihlWzBdW1RdKXJldHVybiBlWzBdW1RdO2lmKGVbMF1ba10pcmV0dXJuIGVbMF1ba107aWYoZVswXVt4XSlyZXR1cm4gZVswXVt4XX19LHNlPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwhKGUgaW5zdGFuY2VvZiBPYmplY3QpKXJldHVybiBlO3ZhciB0PWUgaW5zdGFuY2VvZiBBcnJheT9bXTp7fTtmb3IodmFyIG4gaW4gZSl0W25dPXNlKGVbbl0pO3JldHVybiB0fTtmdW5jdGlvbiBkZSgpe3JldHVybiEodHlwZW9mICRzZj09PUV8fCEkc2YuZXh0KSYmISEkc2YuZXh0LmRlYnVnfXZhciB1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZy5tLlVUX0RJVitlLnRhcmdldElkfSxjZT1mdW5jdGlvbigpe3JldHVybiBpZSgpLmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sK1wiLy9cIitnLmkuQ0ROX09SSUdJTn0sbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fSxmZT1mdW5jdGlvbihlLHQpe3ZhciBuPXZvaWQgMDtpZihxKGUpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlJiYobj1lLmFwcGx5KHR8fHRoaXMsYXJndW1lbnRzKSxlPW51bGwpLG59fSxwZT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybltcImRlYnVnXCIsXCJkaXNwbGF5ZWRcIixcImluaXRpYWxIZWlnaHRcIixcImluaXRpYWxXaWR0aFwiLFwibWVtYmVyXCIsXCJzaG93VGFnQ2FsbGVkXCIsXCJzaXplc1wiLFwidGFyZ2V0SWRcIixcInV0Q2FsbGVkXCIsXCJ1dERpdklkXCIsXCJ1dGlmcmFtZUlkXCIsXCJ1dWlkXCIsXCJrZXl3b3Jkc1wiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe25bdF09ZVt0XX0pLHQmJihuLm9uPXQub24sbi5vZmY9dC5vZmYsbi5tb2RpZnlUYWc9dC5tb2RpZnlUYWcsbi5zZXRLZXl3b3Jkcz10LnNldEtleXdvcmRzKSxufSxnZT1mdW5jdGlvbihlKXthcG50YWcucmVxdWVzdHMudGFncz1hcG50YWcucmVxdWVzdHMudGFnc3x8e307dmFyIHQ9ITA7cmV0dXJuIHR5cGVvZiBhcG50YWcucmVxdWVzdHMudGFnc1tlXT09PUUmJih0PSExKSx0fSxtZT1mdW5jdGlvbigpe2FwbnRhZy5yZXF1ZXN0cy5oYXNMZWZ0PSExLEcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24oZSx0KXtlLmRpc3BsYXllZHx8ZS5wcmViaWR8fGUuaXNNZWRpYXRlZHx8KHoodCtcIiBpcyBub3QgZGlzcGxheWVkLlwiLGcuai5XQVJOKSxhcG50YWcucmVxdWVzdHMuaGFzTGVmdD0hMCl9KSxhcG50YWcucmVxdWVzdHMuaGFzTGVmdHx8TChcImFsbCBUYWdzIGFyZSBkaXNwbGF5ZWQuXCIpfSx2ZT1BcnJheS5wcm90b3R5cGUuc2xpY2UsaGU9bmUoZy5nLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkseWU9ZnVuY3Rpb24oKXt2YXIgZT17fSx0PXt9O3JldHVybiB0Lm9uPWZ1bmN0aW9uKHQsbixhKXtpZihmdW5jdGlvbihlKXtyZXR1cm4gWShoZSxlKX0odCkpe3ZhciByPXt9O3Jbbl09YSxlW3RdPWVbdF18fFtdLGVbdF0ucHVzaChyKX1lbHNlIFcoXCJXcm9uZyBldmVudCBuYW1lIDogXCIrdCtcIiBWYWxpZCBldmVudCBuYW1lcyA6XCIraGUpfSx0LmVtaXQ9ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsbil7dmFyIGE9blswXSxyPXZlLmNhbGwobiwxKTtMKFwiRW1pdHRpbmcgZXZlbnQgZm9yOiBcIit0K1wiIGZvciBhZCB0YWc6IFwiK2EpLEcoZVt0XSxmdW5jdGlvbihlKXt2YXIgdD1cIlwiO2lmKG51bGwhPSh0PXRlKGUsXCIqXCIpP2VbXCIqXCJdOmVbYV0pJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXRyeXt0LmFwcGx5KG51bGwscil9Y2F0Y2goZSl7VyhcImV2ZW50cy5fZGlzcGF0Y2g6IEVycm9yIGV4ZWN1dGluZyBldmVudCBoYW5kbGVyIGZ1bmN0aW9uOiBcIitlLm1lc3NhZ2UpfX0pfSh0LHZlLmNhbGwoYXJndW1lbnRzLDEpKX0sdC5vZmY9ZnVuY3Rpb24odCxuLGEpe0IoZVt0XSl8fEcoZVt0XSxmdW5jdGlvbihlKXtcIipcIj09PW4mJm51bGwhPT1lW09iamVjdC5rZXlzKGUpWzBdXSYmdm9pZCAwIT09ZVtPYmplY3Qua2V5cyhlKVswXV0/dm9pZCAwIT09YSYmT2JqZWN0LnZhbHVlcyhlKSE9PWF8fChlW09iamVjdC5rZXlzKGUpWzBdXT1udWxsKTpudWxsIT09ZVtuXSYmdm9pZCAwIT09ZVtuXSYmKHZvaWQgMCE9PWEmJmVbbl0hPT1hfHwoZVtuXT1udWxsKSl9KX0sdC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sdH0oKSxiZT1cImh0dHBzOlwiPT09aWUoKS5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD9cImh0dHBzOlwiOlwiaHR0cDpcIix3ZT1bXSxJZT0hMSxfZT1iZStnLmkuVklERU9fTUVESUFUSU9OX0pTLEVlPWJlK2cuaS5CQU5ORVJfTUVESUFUSU9OX0pTLFRlPWcucS5BRF9UWVBFLGtlPWcuYi5CQU5ORVIseGU9Zy5iLlZJREVPLFNlPWZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiBlJiZHKGUsZnVuY3Rpb24oZSl7XCJjc21cIj09PWUuY29udGVudF9zb3VyY2UmJih0PSEwKX0pLHR9LEFlPWZ1bmN0aW9uKGUpe3ZhciB0PWtlO3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wJiZlWzBdW1RlXT09PXhlJiYodD14ZSksdH0sUmU9ZnVuY3Rpb24oZSx0LG4sYSl7ZT09PXhlJiYobnVsbCE9PXQmJndlLnB1c2godCksSWUmJndpbmRvdy5BUE5WaWRlb19Bc3RNZWRpYXRpb25NYW5hZ2VyP0cod2UsZnVuY3Rpb24oZSl7aWYoIWUuY2FsbGVkKXRyeXt3aW5kb3cuQVBOVmlkZW9fQXN0TWVkaWF0aW9uTWFuYWdlci5zZWxlY3RBZChlLnV1aWQsZSxuLGEpLGUuY2FsbGVkPSEwfWNhdGNoKGUpe1coXCJFcnJvciBpbnZva2luZyB2aWRlbyBtZWRpYXRpb25cIixcIm1lZGlhdGlvbm1hbmFnZXIuanNcIixlKX19KTooSCh3aW5kb3csX2UsZnVuY3Rpb24oKXtSZSh4ZSxudWxsLG4sYSl9KSxJZT0hMCkpfSxOZT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiBHKGUsZnVuY3Rpb24oZSl7ZS51dWlkPT09dC51dWlkJiZlLm1lZGlhdGlvbk9wdGlvbnMmJihuPWUubWVkaWF0aW9uT3B0aW9ucyl9KSxufSxEZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc01lZGlhdGVkfHxlLmlzUnRiVmlkZW9GYWxsYmFjaz9lLmFkUmVzcG9uc2UuYWQ6ZS5hZFJlc3BvbnNlLmFkc1swXX0sQ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNNZWRpYXRlZHx8ZS5pc1J0YlZpZGVvRmFsbGJhY2t8fChlLmFkUmVzcG9uc2UuYWQ9ZS5hZFJlc3BvbnNlLmFkc1swXSksZX0scWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250ZW50X3NvdXJjZSxuPWUuYWRfdHlwZTtpZih0KXJldHVybiBlW3RdW25dfSxPZT1mdW5jdGlvbihlLHQpe3ZhciBuPVwiPHNjcmlwdD5cIjtyZXR1cm4gbis9XCJ2YXIgQVBOX21hY3JvcyA9IHt9O1wiLG4rPSdBUE5fbWFjcm9zLnV1aWQgPSBcIicrZSsnXCI7JyxuKz1cIkFQTl9tYWNyb3MuZW5hYmxlTWVkaWF0aW9uRXZlbnRzID0gXCIrYXBudGFnLnJlcXVlc3RzLmVuYWJsZU1lZGlhdGlvbkV2ZW50cytcIjtcIixuKz1cIkFQTl9tYWNyb3MuZXhwYW5kQnlDcmVhdGl2ZSA9IFwiKyQoZSkrXCI7XCIsbis9XCJBUE5fbWFjcm9zLmFkcyA9IFwiLG4rPSd3aW5kb3cucGFyZW50LmFwbnRhZy5nZXRBZE1hcmt1cChcIicrZSsnXCIsIFwiJyt0LnV1aWQrJ1wiKTsnLG4rPVwiO1wiLG4rPVwiZG9jdW1lbnQud3JpdGUoJzxzY3InICsgJ2lwdCBzcmM9XFxcIlwiK0VlK1wiXFxcIj48L3NjcicgKyAnaXB0PicpO1wiLG4rPVwiPFxcL3NjcmlwdD5cIn0sTWU9W10sUGU9Zy5lLkFTVF9PVkVSUklERSxCZT1QZS5CQVNFLFVlPUJlK1BlLkRJVixGZT1CZStQZS5JTkRFWCxMZT1CZStQZS5UQUdfSUQsemU9QmUrUGUuSU5WX0NPREUsV2U9XCJmb3JjZV9jcmVhdGl2ZV9pZFwiLGplPXZvaWQgMDtmdW5jdGlvbiBWZShlKXtyZXR1cm4gZWUoZSxqZSl9ZnVuY3Rpb24gSGUoZSx0LG4pe3ZhciBhPU51bWJlcih0KTtpZihpc05hTihhKSlXKFwiRm9yY2UgQ3JlYXRpdmUgbXVzdCBiZSBhIG51bWJlclwiKTtlbHNle2VbV2VdPWEsYXBudGFnLnRlc3Q9ITA7dmFyIHI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsO3JldHVybiBHKHQsZnVuY3Rpb24odCl7dC51dWlkPT09ZS51dWlkJiYobj10LnRhcmdldElkKX0pLG59KGUsbik7TChcIkZvcmNlIENyZWF0aXZlIGluIHVzZSBmb3IgdGFyZ2V0SWQ6IFwiK3IpfX12YXIgWGU9dm9pZCAwO3RyeXtYZT13aW5kb3cubG9jYWxTdG9yYWdlfWNhdGNoKGUpe3ooXCJsb2NhbFN0b3JhZ2Ugbm90IGF2YWlsYWJsZSBmb3IgY3VycmVudCBicm93c2VyXCIpfXZhciBKZT1YZSxHZT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9ZnVuY3Rpb24oKXt2YXIgdD1bXSxuPXZvaWQgMDtkb3t0cnl7bj1uP24ucGFyZW50OmU7dHJ5e3QucHVzaCh7cmVmZXJyZXI6bi5kb2N1bWVudC5yZWZlcnJlcnx8bnVsbCxsb2NhdGlvbjpuLmxvY2F0aW9uLmhyZWZ8fG51bGwsaXNUb3A6bj09PWUudG9wfSl9Y2F0Y2goYSl7dC5wdXNoKHtyZWZlcnJlcjpudWxsLGxvY2F0aW9uOm51bGwsaXNUb3A6bj09PWUudG9wfSkseihcIlRyeWluZyB0byBhY2Nlc3MgY3Jvc3MgZG9tYWluIGlmcmFtZS4gQ29udGludWluZyB3aXRob3V0IHJlZmVycmVyIGFuZCBsb2NhdGlvblwiKX19Y2F0Y2goZSl7cmV0dXJuIHQucHVzaCh7cmVmZXJyZXI6bnVsbCxsb2NhdGlvbjpudWxsLGlzVG9wOiExfSksdH19d2hpbGUobiE9PWUudG9wKTtyZXR1cm4gdH0oKSxuPWZ1bmN0aW9uKCl7dHJ5e2lmKCFlLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucylyZXR1cm47cmV0dXJuIGUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zfWNhdGNoKGUpe319KCk7aWYobilmb3IodmFyIGE9MCxyPW4ubGVuZ3RoO2E8cjthKyspdFthXS5hbmNlc3Rvcj1uW2FdO3JldHVybiB0fXJldHVybiBmdW5jdGlvbigpe3RyeXt2YXIgZT10KCksbj1lLmxlbmd0aC0xLGE9bnVsbCE9PWVbbl0ubG9jYXRpb258fG4+MCYmbnVsbCE9PWVbbi0xXS5yZWZlcnJlcixyPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49bnVsbCxhPW51bGwscj1udWxsLGk9bnVsbCxvPW51bGwscz1udWxsLGQ9dm9pZCAwO2ZvcihkPWUubGVuZ3RoLTE7ZD49MDtkLS0pe3RyeXthPWVbZF0ubG9jYXRpb259Y2F0Y2goZSl7fWlmKGEpbj1lbmNvZGVVUklDb21wb25lbnQoYSksdC5wdXNoKG4pLHN8fChzPW4pO2Vsc2UgaWYoMCE9PWQpe3I9ZVtkLTFdO3RyeXtpPXIucmVmZXJyZXIsbz1yLmFuY2VzdG9yfWNhdGNoKGUpe31pPyhuPWVuY29kZVVSSUNvbXBvbmVudChpKSx0LnB1c2gobiksc3x8KHM9bikpOm8/KG49ZW5jb2RlVVJJQ29tcG9uZW50KG8pLHQucHVzaChuKSxzfHwocz1uKSk6dC5wdXNoKG51bGwpfWVsc2UgdC5wdXNoKG51bGwpfXJldHVybntzdGFjazp0LGRldGVjdGVkUmVmZXJlclVybDpzfX0oZSk7cmV0dXJue3JlZmVyZXI6ci5kZXRlY3RlZFJlZmVyZXJVcmwscmVhY2hlZFRvcDphLG51bUlmcmFtZXM6bixzdGFjazpyLnN0YWNrfX1jYXRjaChlKXt9fX0od2luZG93KSxZZT1nLnAuU1RSSU5HLEtlPWcucC5OVU0sJGU9Zy5wLkJPT0wsUWU9Zy5lLkFTVF9ET05HTEUsWmU9Zy5lLkFTVF9UT09MS0lULGV0PWcuZS5BU1RfVEVTVCx0dD1nLmUuQVNUX0RFQlVHX01FTUJFUixudD1nLmUuQVNUX0RFQlVHX0JJRERFUjtmdW5jdGlvbiBhdChlKXt2YXIgdD1bXTtyZXR1cm4gRyhlLGZ1bmN0aW9uKGUsbil7aWYoTShlKSl7dmFyIGE9W107RyhlLGZ1bmN0aW9uKGUpeyhlPWFlKFwia2V5d29yZHMuXCIrbixlKSkmJmEucHVzaChlKX0pLGU9YX1lbHNle2lmKGU9YWUoXCJrZXl3b3Jkcy5cIituLGUpLCFPKGUpKXJldHVybjtlPVtlXX12YXIgcj17a2V5Om4sdmFsdWU6ZX07dC5wdXNoKHIpfSksdH12YXIgcnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj17fTtpZihNKGUpJiYyPT09ZS5sZW5ndGgmJiFNKGVbMF0pKW4ud2lkdGg9cGFyc2VJbnQoZVswXSwxMCksbi5oZWlnaHQ9cGFyc2VJbnQoZVsxXSwxMCksdC5wdXNoKG4pO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGUpZm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciByPWVbYV07KG49e30pLndpZHRoPXBhcnNlSW50KHJbMF0sMTApLG4uaGVpZ2h0PXBhcnNlSW50KHJbMV0sMTApLHQucHVzaChuKX1yZXR1cm4gdH0saXQ9ZnVuY3Rpb24oZSx0LG4sYSl7dmFyIHI9e307ZS5kaXNhYmxlUHNhJiZHKGUudGFncyxmdW5jdGlvbihlKXtlLmRpc2FibGVQc2E9ITB9KSxlLmdkcHJfY29uc2VudCYmKHIuZ2Rwcl9jb25zZW50PWUuZ2Rwcl9jb25zZW50KSxlLnVzX3ByaXZhY3kmJihyLnVzX3ByaXZhY3k9ZS51c19wcml2YWN5KSxlLmdlb092ZXJyaWRlJiYoci5nZW9fb3ZlcnJpZGU9e2NvdW50cnlfY29kZTplLmdlb092ZXJyaWRlLmNvdW50cnlDb2RlLHBvc3RhbF9jb2RlOmUuZ2VvT3ZlcnJpZGUuemlwfSk7dmFyIGk9W10sbz0wO0coZS50YWdzLGZ1bmN0aW9uKGUpe2lmKCFlLnV0Q2FsbGVkJiZlLm1lbWJlcj09PXQmJmZ1bmN0aW9uKGUpe2lmKCFhKXJldHVybiEwO3ZhciB0PSExO3JldHVybiBHKGEsZnVuY3Rpb24obil7ZS50YXJnZXRJZD09PW4mJih0PSEwKX0pLHR9KGUpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD17fTtpZihlLnV1aWQ9WCgpLCFCKGUuc2l6ZXMpKXt2YXIgbj1ydChlLnNpemVzKTtCKG4pfHwodC5zaXplcz1uLHQucHJpbWFyeV9zaXplPW5bMF0pfWlmKCFCKGUucHJpdmF0ZVNpemVzKSl7dmFyIGE9cnQoZS5wcml2YXRlU2l6ZXMpO0IoYSl8fCh0LnByaXZhdGVfc2l6ZXM9YSl9aWYoZS5zdXBwbHlUeXBlJiZPKGUuc3VwcGx5VHlwZSkmJih0LnN1cHBseV90eXBlPWUuc3VwcGx5VHlwZSksZS5wdWJDbGljayYmTyhlLnB1YkNsaWNrKSYmKHQucHViY2xpY2s9e3VybDplLnB1YkNsaWNrfSksZS5wdWJDbGlja0VuYyYmTyhlLnB1YkNsaWNrRW5jKSYmKHQucHViY2xpY2tlbmM9e3VybDplLnB1YkNsaWNrRW5jfSksZS5yZXNlcnZlJiYoUChlLnJlc2VydmUpfHxNKGUucmVzZXJ2ZSkpJiYodC5yZXNlcnZlPWUucmVzZXJ2ZSksZS5leHRJbnZDb2RlJiZPKGUuZXh0SW52Q29kZSkmJih0LmV4dF9pbnZfY29kZT1lLmV4dEludkNvZGUpLHQudXVpZD1lLnV1aWQsZS50YWdJZCYmKHQuaWQ9ZS50YWdJZCksZS5mb3JtYXRzJiYodC5mb3JtYXRzPWUuZm9ybWF0cyksZS5wb3NpdGlvbiYmKFwiYWJvdmVcIj09PWUucG9zaXRpb24/dC5wb3NpdGlvbj0xOlwiYmVsb3dcIj09PWUucG9zaXRpb24/dC5wb3NpdGlvbj0yOnQucG9zaXRpb249MCksZS5pbnZDb2RlJiYodC5jb2RlPWUuaW52Q29kZSksZS5wcmViaWQmJih0LnByZWJpZD1lLnByZWJpZCksZS5leHRlcm5hbEltcElkJiYodC5leHRlcm5hbF9pbXBfaWQ9ZS5leHRlcm5hbEltcElkKSwhMD09PWUuYWxsb3dTbWFsbGVyU2l6ZXM/dC5hbGxvd19zbWFsbGVyX3NpemVzPSEwOnQuYWxsb3dfc21hbGxlcl9zaXplcz0hMSwhMD09PWUuZGlzYWJsZVBzYSYmKHQuZGlzYWJsZV9wc2E9ITApLGUuYWxsb3dlZEZvcm1hdHMmJih0LmFkX3R5cGVzPWUuYWxsb3dlZEZvcm1hdHMpLCEwIT09ZS51c2VQbXRSdWxlJiYhMSE9PWUudXNlUG10UnVsZXx8KHQudXNlX3BtdF9ydWxlPWUudXNlUG10UnVsZSksIUIoZS52aWRlbykpe3ZhciByPWUudmlkZW8saT17fTtyLmlkJiYoaS5pZD1yLmlkKSxCKHIubWltZXMpfHwoaS5taW1lcz1yLm1pbWVzKSxyLm1heER1cmF0aW9uJiYoaS5tYXhkdXJhdGlvbj1yLm1heER1cmF0aW9uKSxyLm1pbkR1cmF0aW9uJiYoaS5taW5kdXJhdGlvbj1yLm1pbkR1cmF0aW9uKSxyLnN0YXJ0RGVsYXkmJihpLnN0YXJ0ZGVsYXk9ci5zdGFydERlbGF5KSxyLnNraXBwYWJsZSYmKGkuc2tpcHBhYmxlPXIuc2tpcHBhYmxlKSxyLnNraXBPZmZzZXQmJihpLnNraXBvZmZzZXQ9ci5za2lwT2Zmc2V0KSxCKHIucGxheWJhY2tNZXRob2QpfHwoaS5wbGF5YmFja19tZXRob2Q9ci5wbGF5YmFja01ldGhvZCksQihyLmZyYW1ld29ya3MpfHwoaS5mcmFtZXdvcmtzPXIuZnJhbWV3b3JrcyksdC52aWRlbz1pfWlmKCFCKGUubmF0aXZlKSl7dmFyIG89ZS5uYXRpdmUscz17fTtvLnJlbmRlcmVyX2lkJiYocy5yZW5kZXJlcl9pZD1vLnJlbmRlcmVyX2lkKSxvLnBsYWNlbWVudF90eXBlJiYocy5wbGFjZW1lbnRfdHlwZT1vLnBsYWNlbWVudF90eXBlKTt2YXIgZD17fTtvLmlkJiYoZC5pZD1vLmlkKSxvLnRpdGxlJiYoZC50aXRsZT1vLnRpdGxlKSxvLmJvZHkmJihkLmRlc2NyaXB0aW9uPW8uYm9keSksby5zcG9uc29yZWRCeSYmKGQuc3BvbnNvcmVkX2J5PW8uc3BvbnNvcmVkQnkpLG8uaW1hZ2UmJihkLm1haW5faW1hZ2U9by5pbWFnZSxCKGQubWFpbl9pbWFnZS5zaXplcykmJihkLm1haW5faW1hZ2Uuc2l6ZXM9W3t9XSkpLG8uaWNvbiYmKGQuaWNvbj1vLmljb24sQihkLmljb24uc2l6ZXMpJiYoZC5pY29uLnNpemVzPVt7fV0pKSxvLmN0YSYmKGQuY3RhdGV4dD1vLmN0YSksby5kZXNjMiYmKGQuZGVzYzI9by5kZXNjMiksby5yYXRpbmcmJihkLnJhdGluZz1vLnJhdGluZyksby5kaXNwbGF5VXJsJiYoZC5kaXNwbGF5dXJsPW8uZGlzcGxheVVybCksby5saWtlcyYmKGQubGlrZXM9by5saWtlcyksby5kb3dubG9hZHMmJihkLmRvd25sb2Fkcz1vLmRvd25sb2Fkcyksby5wcmljZSYmKGQucHJpY2U9by5wcmljZSksby5zYWxlUHJpY2UmJihkLnNhbGVwcmljZT1vLnNhbGVQcmljZSksby5waG9uZSYmKGQucGhvbmU9by5waG9uZSksby5hZGRyZXNzJiYoZC5hZGRyZXNzPW8uYWRkcmVzcyksby52aWRlbyYmKGQudmlkZW89e3JlcXVpcmVkOm8udmlkZW8ucmVxdWlyZWR8fCExLG1pbl9kdXJhdGlvbjpvLnZpZGVvLm1pbkR1cmF0aW9ufHwwLG1heF9kdXJhdGlvbjpvLnZpZGVvLm1heER1cmF0aW9ufSksby5wcml2YWN5U3VwcG9ydGVkJiYoZC5wcml2YWN5X3N1cHBvcnRlZD0hMCksZCYmKHMubGF5b3V0cz1bZF0pLHQuYWRfdHlwZXM9dC5hZF90eXBlc3x8W10sLTE9PT10LmFkX3R5cGVzLmluZGV4T2YoXCJuYXRpdmVcIikmJnQuYWRfdHlwZXMucHVzaChcIm5hdGl2ZVwiKSx0Lm5hdGl2ZT1zfWlmKCFCKGUua2V5d29yZHMpKXt2YXIgdT1hdChlLmtleXdvcmRzKTt0LmtleXdvcmRzPXV9aWYoZS5mb3JjZUNyZWF0aXZlSWQpe3ZhciBjPU51bWJlcihlLmZvcmNlQ3JlYXRpdmVJZCk7aXNOYU4oYyk/VyhcIkZvcmNlIENyZWF0aXZlIG11c3QgYmUgYSBudW1iZXJcIik6KHQuZm9yY2VfY3JlYXRpdmVfaWQ9YyxMKFwiRm9yY2UgQ3JlYXRpdmUgaW4gdXNlIGZvciB0YXJnZXRJZDogXCIrZS50YXJnZXRJZCkpfXJldHVybiBlLm5vYmlkSWZVbnNvbGQmJih0Lm5vYmlkX2lmX3Vuc29sZD0hMCksZS50cmFmZmljU291cmNlQ29kZSYmKHQudHJhZmZpY19zb3VyY2VfY29kZT1lLnRyYWZmaWNTb3VyY2VDb2RlLnRvU3RyaW5nKCkpLGUuY3VzdG9tUHViTG9nJiYoTyhlLmN1c3RvbVB1YkxvZyk/dC5jdXN0b21fcHViX2xvZz1lLmN1c3RvbVB1YkxvZzpXKFwiY3VzdG9tUHViTG9nIG11c3QgYmUgYSBzdHJpbmdcIikpLHR9KGUpO2UudXRDYWxsZWQ9ITAsZS50YWdOdW1iZXI9byxvKyssaS5wdXNoKG4pfX0pLGZ1bmN0aW9uKGUsdCxuKXtpZihRKGplfHxaKCksQmUpKXt2YXIgYT12b2lkIDAscj12b2lkIDAsaT12b2lkIDAsbz12b2lkIDAscz12b2lkIDAsZD12b2lkIDA7aWYoIUIoVmUoRmUpKSlmb3IoTWU9VmUoRmUpLnNwbGl0KFwiLFwiKSxhPTA7YTxNZS5sZW5ndGg7YSsrKXtzPU1lW2FdLnNwbGl0KFwiOlwiKTt2YXIgdT1OdW1iZXIoc1swXSk7aWYoaXNOYU4odSl8fHZvaWQgMD09PXRbdV0pVyhcIkludmFsaWQgYXN0X292ZXJyaWRlIHZhbHVlIGZvciBpbmRleCA6IFwiK3UpO2Vsc2V7ZD1udWxsO3ZhciBjPW51bGw7Zm9yKG89MDtvPG4ubGVuZ3RoO28rKylvPT09dSYmKGM9bltvXS51dWlkKTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV0udXVpZD09PWMmJkhlKHRbaV0sc1sxXSxlKX19aWYoIUIoVmUoVWUpKSlmb3IoTWU9VmUoVWUpLnNwbGl0KFwiLFwiKSxhPTA7YTxNZS5sZW5ndGg7YSsrKXtzPU1lW2FdLnNwbGl0KFwiOlwiKTt2YXIgbD1udWxsLGY9T2JqZWN0LmtleXMoZSk7Zm9yKGk9MDtpPGYubGVuZ3RoO2krKylzWzBdPT09ZltpXSYmKGw9ZVtmW2ldXS51dWlkKTtpZihsKWZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS51dWlkPT09bCYmSGUodFtyXSxzWzFdLGUpO2Vsc2UgVyhcIkludmFsaWQgYXN0X292ZXJyaWRlIHZhbHVlIGZvciB0YXJnZXQgZGl2IGlkIDogXCIrc1swXSl9aWYoIUIoVmUoTGUpKSlmb3IoTWU9VmUoTGUpLnNwbGl0KFwiLFwiKSxhPTA7YTxNZS5sZW5ndGg7YSsrKXtzPU1lW2FdLnNwbGl0KFwiOlwiKTt2YXIgcD0hMTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKShkPXRbcl0pLmlkPT09TnVtYmVyKHNbMF0pJiYoSGUoZCxzWzFdLGUpLHA9ITApO3B8fFcoXCJJbnZhbGlkIGFzdF9vdmVycmlkZSB2YWx1ZSBmb3IgdGFnIGlkIDogXCIrc1swXSl9aWYoIUIoVmUoemUpKSlmb3IoTWU9VmUoemUpLnNwbGl0KFwiLFwiKSxhPTA7YTxNZS5sZW5ndGg7YSsrKXtzPU1lW2FdLnNwbGl0KFwiOlwiKTt2YXIgZz0hMTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKShkPXRbcl0pLmNvZGU9PT1zWzBdJiYoSGUoZCxzWzFdLGUpLGc9ITApO2d8fFcoXCJJbnZhbGlkIGFzdF9vdmVycmlkZSB2YWx1ZSBmb3IgaW52Q29kZSA6IFwiK3NbMF0pfX19KGUudGFncyxpLG4pO3ZhciBzPUdlKCksZD17cmRfcmVmOnMucmVmZXJlcixyZF90b3A6cy5yZWFjaGVkVG9wLHJkX2lmczpzLm51bUlmcmFtZXMscmRfc3RrOnMuc3RhY2suam9pbihcIixcIil9O3IucmVmZXJyZXJfZGV0ZWN0aW9uPWQsci50YWdzPWksci51dWlkPVgoKSxyLm1lbWJlcl9pZD10LHIuc2RrPXtzb3VyY2U6XCJhc3RcIix2ZXJzaW9uOlwiMC4zMS4wXCJ9O3ZhciB1PW51bGw7aWYoQihlLmtleXdvcmRzKT9CKGUudGFyZ2V0aW5nUGFyYW1zKXx8KHU9YXQoZS50YXJnZXRpbmdQYXJhbXMpLHIua2V5d29yZHM9dSk6KHU9YXQoZS5rZXl3b3Jkcyksci5rZXl3b3Jkcz11KSwhQihlLnVzZXIpJiYoci51c2VyPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2lmKCFCKGUpKXtlLmV4dGVybmFsVWlkJiZPKGUuZXh0ZXJuYWxVaWQpJiYodC5leHRlcm5hbF91aWQ9ZS5leHRlcm5hbFVpZCksQihlLnNlZ21lbnRzKXx8KHQuc2VnbWVudHM9ZS5zZWdtZW50cyk7dmFyIG49cmUoXCJ1c2VyLmFnZVwiLGUuYWdlLEtlKTt0LmFnZT1uO3ZhciBhPXJlKFwidXNlci5nZW5kZXJcIixlLmdlbmRlcixLZSk7dC5nZW5kZXI9YTt2YXIgcj1yZShcInVzZXIubGFuZ3VhZ2VcIixlLmxhbmd1YWdlLFllKTt0Lmxhbmd1YWdlPXI7dmFyIGk9cmUoXCJ1c2VyLmRudFwiLGUuZG50LCRlKTt0LmRudD1pfXJldHVybiB0fShlLnVzZXIpLCFCKGUudXNlci51c2VySWRzKSkpe3ZhciBjPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBNKGUpP0coZSxmdW5jdGlvbihlKXtpZihDKGUpJiZPKGUudHlwZSkmJk8oZS5pZCkpaWYoXCJjcml0ZW9cIj09PWUudHlwZSl7dmFyIG49e3NvdXJjZTpcImNyaXRlby5jb21cIixpZDplLmlkfTt0LnB1c2gobil9ZWxzZSBpZihcInR0ZFwiPT09ZS50eXBlKXt2YXIgYT17c291cmNlOlwiYWRzZXJ2ZXIub3JnXCIsaWQ6ZS5pZCxydGlfcGFydG5lcjpcIlRESURcIn07dC5wdXNoKGEpfWVsc2UgdC5wdXNoKGUpO2Vsc2UgeihcIkludmFsaWQgdXNlcklkIG9iamVjdFwiLGUpfSk6eihcIkludmFsaWQgdXNlcklkc1wiLGUpLHR9KGUudXNlci51c2VySWRzKTtyLmVpZHM9Y31CKGUuZGV2aWNlKXx8KHIuZGV2aWNlPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49ZS5kZXZpY2U7aWYoIUIobikpe0Iobi51c2VyYWdlbnQpfHwodC51c2VyYWdlbnQ9bi51c2VyYWdlbnQpLEIobi5nZW8pfHwodC5nZW89bi5nZW8pLEIobi5pcCl8fCh0LmlwPW4uaXApLEIobi5kZXZpY2VUeXBlKXx8KHQuZGV2aWNldHlwZT1uLmRldmljZVR5cGUpLEIobi5tYWtlKXx8KHQubWFrZT1uLm1ha2UpLEIobi5tb2RlbCl8fCh0Lm1vZGVsPW4ubW9kZWwpLEIobi5vcyl8fCh0Lm9zPW4ub3MpLEIobi5vc1ZlcnNpb24pfHwodC5vc192ZXJzaW9uPW4ub3NWZXJzaW9uKSxCKG4uY2Fycmllcil8fCh0LmNhcnJpZXI9bi5jYXJyaWVyKTt2YXIgYT1yZShcImRldmljZS5jb25uZWN0aW9uVHlwZVwiLG4uY29ubmVjdGlvblR5cGUsS2UpO3QuY29ubmVjdGlvbnR5cGU9YSxCKG4ubWNjKXx8KHQubWNjPW4ubWNjKSxCKG4ubW5jKXx8KHQubW5jPW4ubW5jKSxCKG4ubG10KXx8KHQubG10PW4ubG10KSxCKG4uZGV2aWNlSWQpfHwodC5kZXZpY2VfaWQ9bi5kZXZpY2VJZCk7dmFyIHI9cmUoXCJkZXZpY2UuZGV2VGltZVwiLG4uZGV2VGltZSxLZSk7dC5kZXZ0aW1lPXJ9cmV0dXJuIHR9KGUpKSxCKGUuYXBwKXx8KHIuYXBwPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49ZS5hcHA7cmV0dXJuIEIobil8fEIobi5hcHBpZCl8fCh0LmFwcGlkPW4uYXBwaWQpLHR9KGUpKSxCKGUuc2l0ZSl8fChyLnNpdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9e30sbj1lLnNpdGU7cmV0dXJuIEIobil8fEIobi5pZCl8fCh0LmlkPW4uaWQpLHR9KGUpKSxlLnB1Ymxpc2hlcklkJiYoci5wdWJsaXNoZXJfaWQ9ZS5wdWJsaXNoZXJJZCksZS5hdWN0aW9uVGltZW91dCYmKHIuYXVjdGlvbl90aW1lb3V0X21zPWUuYXVjdGlvblRpbWVvdXQpLHIudGFncz1pO3ZhciBsPWVlKFFlKSxmPUplJiZKZS5nZXRJdGVtKFFlKSxwPWx8fGFwbnRhZy5kb25nbGV8fGY7cCYmIWFwbnRhZy5kb25nbGUmJihhcG50YWcuZG9uZ2xlPXApLCgoZWUoWmUpfHxhcG50YWcudG9vbGtpdCkmJnB8fCFCKGUudG9vbGtpdCkpJiYoci50b29sa2l0PXtlbmFibGVkOiEwLGRvbmdsZTpwfHxlLnRvb2xraXQuZG9uZ2xlfSk7dmFyIGc9ZWUodHQpO2cmJlwiXCIhPT1nJiYoYXBudGFnLmRlYnVnX21lbWJlcj1nKTt2YXIgbT1lZShudCk7bSYmXCJcIiE9PW0mJihhcG50YWcuZGVidWdfYmlkZGVyPW0pO3ZhciB2PVwiVFJVRVwiPT09ZWUoZXQpLnRvVXBwZXJDYXNlKCk7aWYodiYmXCJcIiE9PXYmJihhcG50YWcudGVzdD12KSxhcG50YWcudGVzdHx8YXBudGFnLmRlYnVnJiYhQihhcG50YWcuZG9uZ2xlKSl7dmFyIGg9XCJcIjthcG50YWcuZGVidWdfbWVtYmVyJiYoaD1hcG50YWcuZGVidWdfbWVtYmVyKTt2YXIgeT1mdW5jdGlvbihlLHQsbil7dmFyIGE9e307cmV0dXJuIGFwbnRhZy5kZWJ1ZyYmIUIodCkmJihhLmVuYWJsZWQ9ITAsZSYmKGEubWVtYmVyX2lkPU51bWJlcihlKSksdCYmKGEuZG9uZ2xlPVN0cmluZyh0KSksbiYmKGEuYmlkZGVyX2lkPU51bWJlcihuKSksYS5kZWJ1Z190aW1lb3V0PTFlMyksYXBudGFnLnRlc3QmJihhLnRlc3Q9YXBudGFnLnRlc3QpLGF9KGgsYXBudGFnLmRvbmdsZSxhcG50YWcuZGVidWdfYmlkZGVyKTtyLmRlYnVnPXl9cmV0dXJuIHJ9LG90PWcuZC5SVEIsc3Q9Zy5xLkJBTk5FUixkdD1nLnEuQ09OVEVOVCx1dD1cImh0dHBzOlwiPT09aWUoKS5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD9cImh0dHBzOlwiOlwiaHR0cDpcIixjdD1mdW5jdGlvbihlLHQpe3ZhciBuPXZvaWQgMCxhPWZ1bmN0aW9uKGUpe3JldHVybiBnLm0uVVRfSUZSQU1FK2UudGFyZ2V0SWQrXCJfXCIrWCgpfShlKSxyPWllKCk7aWYoKG49bnVsbCE9PXIuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk/ci5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTpyLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIikpLmlkPWEsZS5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHxlLmVuYWJsZVNhZmVGcmFtZSl7TChcInRhcmdldElkOiBcIitlLnRhcmdldElkK1wiIGlzIHVzaW5nIHNhZmVGcmFtZS4gTG9hZGluZyB0aGlzIGFkIGludG8gc2FuZGJveGVkIGlmcmFtZVwiKTt2YXIgaT12b2lkIDA7dC5yZW5kZXJlcl91cmw/aT1cIlxceDNjIS0tIHJlbmRlcmVyIGxvYWRpbmcgaW4gU0YtLVxceDNlXCI6ZS5pc0Jhbm5lck1lZGlhdGlvbj9pPWFwbnRhZy5nZXRBZE1hcmt1cChlLnRhcmdldElkLGUudXVpZCk6ZS5pc1ZpZGVvTWVkaWF0aW9uP2k9ZS5hZFJlc3BvbnNlLmFkW290XVtzdF1bZHRdOihpPW10KGUpLGk9XCJcIisoaT1pLnJlcGxhY2UoXCIvJi9nXCIsXCImYW1wO1wiKS5yZXBsYWNlKFwiLzwvZ1wiLFwiJmx0O1wiKS5yZXBsYWNlKFwiLz4vZ1wiLFwiJmd0O1wiKS5yZXBsYWNlKCcvXCIvZycsXCImcXVvdDtcIikucmVwbGFjZShcIi8nL2dcIixcIiYjMzk7XCIpKSk7dmFyIG89ZS5jdXJXaW5kb3c7ZGVsZXRlIGUuY3VyV2luZG93O3ZhciBzPXt0YXJnZXRJZDplLnRhcmdldElkLGFkOmksaG9zdDpyLmxvY2F0aW9uLnByb3RvY29sK1wiLy9cIityLmxvY2F0aW9uLmhvc3QsZ2VvbTplLmdlb20sZGVidWc6SygpLGhhc0ZvY3VzOmRvY3VtZW50Lmhhc0ZvY3VzKCksaG9zdFNmU3VwcG9ydDplLnNhZmVmcmFtZSxpc01lZGlhdGVkOmUuaXNNZWRpYXRlZCxyZW5kZXJlclVybDp0LnJlbmRlcmVyX3VybCxlbmFibGVNZWRpYXRpb25FdmVudHM6YXBudGFnLnJlcXVlc3RzLmVuYWJsZU1lZGlhdGlvbkV2ZW50cyxleHBhbmRCeUNyZWF0aXZlOiQoZS50YXJnZXRJZCksY3VycmVudFRhZzplfTtlLnNhZmVmcmFtZS5tZXRhJiYocy5tZXRhPWUuc2FmZWZyYW1lLm1ldGEpLG4ubmFtZT1KU09OLnN0cmluZ2lmeShzKSxlLmN1cldpbmRvdz1vLGUuc2FmZWZyYW1lLnNhbmRib3gmJihuLnNhbmRib3g9XCJhbGxvdy1mb3JtcyBhbGxvdy1tb2RhbHMgYWxsb3ctb3JpZW50YXRpb24tbG9jayBhbGxvdy1wb2ludGVyLWxvY2sgYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCBhbGxvdy1wcmVzZW50YXRpb24gYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0c1wiKX1lbHNlIG4ubmFtZT1hO3JldHVybiBuLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGUuaW5pdGlhbEhlaWdodCksbi5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLGUuaW5pdGlhbFdpZHRoKSxuLnRhYkluZGV4PVwiLTFcIixuLndpZHRoPWUuaW5pdGlhbFdpZHRoK1wicHhcIixuLmhlaWdodD1lLmluaXRpYWxIZWlnaHQrXCJweFwiLG4uYm9yZGVyPVwiMFwiLG4uaHNwYWNlPVwiMFwiLG4udnNwYWNlPVwiMFwiLG4ubWFyZ2luV2lkdGg9XCIwXCIsbi5tYXJnaW5IZWlnaHQ9XCIwXCIsbi5zdHlsZS5ib3JkZXI9XCIwXCIsbi5zY3JvbGxpbmc9XCJub1wiLG4uZnJhbWVCb3JkZXI9XCIwXCIsZS5jdXN0b21JZnJhbWVQcm9wcyYmRyhlLmN1c3RvbUlmcmFtZVByb3BzLGZ1bmN0aW9uKGUsdCl7blt0XT1lfSksbn0sbHQ9ZnVuY3Rpb24oZSx0KXtpZih0LmFsd2F5c1VzZVhEb21haW5JZnJhbWV8fHQuZW5hYmxlU2FmZUZyYW1lKWUuc3JjPXV0K2cuaS5TQUZFX0ZSQU1FX1VSTDtlbHNle3ZhciBuO249bXQodCk7dHJ5e2UuY29udGVudFdpbmRvdy5jb250ZW50cz1ufWNhdGNoKHQpe2Uuc3JjPVwiamF2YXNjcmlwdDpkb2N1bWVudC53cml0ZSgnPHNjcmlwdD5kb2N1bWVudC5kb21haW49XFxcIlwiK2RvY3VtZW50LmRvbWFpbitcIlxcXCI8XFwvc2NyaXB0PicpXCIsZS5jb250ZW50V2luZG93LmNvbnRlbnRzPW59dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJiYXNlXCIpLHI9dm9pZCAwO2EubGVuZ3RoJiYocj1hLnRhcmdldCxhWzBdLnRhcmdldD1cIl9zZWxmXCIpLGUuc3JjPSdqYXZhc2NyaXB0OndpbmRvd1tcImNvbnRlbnRzXCJdOycsYS5sZW5ndGgmJihhWzBdLnRhcmdldD1yKX19LGZ0PWZ1bmN0aW9uKGUsdCl7aWYodC5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHx0LmVuYWJsZVNhZmVGcmFtZSllLnNyYz11dCtnLmkuU0FGRV9GUkFNRV9VUkw7ZWxzZXt2YXIgbixhPWZ1bmN0aW9uKGUpe3ZhciB0PXZvaWQgMDt0cnl7dD1lLmNvbnRlbnRXaW5kb3c/ZS5jb250ZW50V2luZG93LmRvY3VtZW50OmUuY29udGVudERvY3VtZW50LmRvY3VtZW50P2UuY29udGVudERvY3VtZW50LmRvY3VtZW50OmUuY29udGVudERvY3VtZW50fWNhdGNoKGUpe1coXCJFcnJvciBnZXR0aW5nIGlmcmFtZSBkb2N1bWVudDogXCIrZSl9cmV0dXJuIHR9KGUpO249bXQodCksYS5vcGVuKFwidGV4dC9odG1sXCIsXCJyZXBsYWNlXCIpLGEud3JpdGUobiksYS5jbG9zZSgpfX0scHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdHJhdGVneSxuPWUuZGF0YSxhPWllKCkuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTthLndpZHRoPTAsYS5oZWlnaHQ9MCxhLmJvcmRlcj1cIjBcIixhLmhzcGFjZT1cIjBcIixhLnZzcGFjZT1cIjBcIixhLnRhYkluZGV4PVwiLTFcIixhLm1hcmdpbldpZHRoPVwiMFwiLGEubWFyZ2luSGVpZ2h0PVwiMFwiLGEuc3R5bGUuYm9yZGVyPVwiMFwiLGEuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixhLnNjcm9sbGluZz1cIm5vXCIsYS5mcmFtZUJvcmRlcj1cIjBcIixcIldpdGhDb250ZW50XCI9PT10JiZmdW5jdGlvbihlLHQpe2d0KGUpLGUuY29udGVudFdpbmRvdy5kb2N1bWVudC5vcGVuKCksZS5jb250ZW50V2luZG93LmRvY3VtZW50LndyaXRlKHQpLGUuY29udGVudFdpbmRvdy5kb2N1bWVudC5jbG9zZSgpfShhLG4pLFwiV2l0aEF0dHJpYnV0ZXNcIj09PXQmJmZ1bmN0aW9uKGUsdCl7ZS5zcmM9dC5zcmMsZS5pZD10LmlkLGd0KGUpfShhLG4pfTtmdW5jdGlvbiBndChlKXt2YXIgdD1pZSgpLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKTt0Lmxlbmd0aCYmdFswXS5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBtdChlKXt2YXIgdD1lLnRhcmdldElkLG49XCJcIjtpZihlLmlzTWVkaWF0ZWQpbj1lLmFkLm1lZGlhdGVkQ29udGVudCxMKFwiSW52b2tpbmcgbWVkaWF0aW9uIGZvciBkaXNwbGF5aW5nIGJhbm5lciBhZDogXCIrdCk7ZWxzZSBpZihlLmFkUmVzcG9uc2UmJjE9PT1lLmFkUmVzcG9uc2UuYWRzLmxlbmd0aCl7bj1vZShlLmFkUmVzcG9uc2UuYWRzKVtzdF1bZHRdfXJldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIGE9ZnVuY3Rpb24oZSx0KXtpZih0KXJldHVyblwiXCI7cmV0dXJuJ3dpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24oZSkge1xcbiAgICAgICAgaWYod2luZG93LnBhcmVudCAmJiB3aW5kb3cucGFyZW50LmFwbnRhZykge1xcbiAgICAgICAgICB3aW5kb3cucGFyZW50LmFwbnRhZy5yZWNvcmRFcnJvckV2ZW50KGUsXCInK2UrJ1wiKTtcXG4gICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuICAgICAgfTsnfShlLG4pO3JldHVybic8IURPQ1RZUEUgSFRNTCBQVUJMSUMgXCItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTlwiIFwiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkXCI+PGh0bWw+PGhlYWQ+XFxuICAgIDxzY3JpcHQ+aW5EYXBJRj10cnVlO1xcbiAgICBhcG50YWdfdGFyZ2V0SWQgPSBcIicrZSsnXCI7XFxuICAgICcrYSsnXFxuICAgIDxcXC9zY3JpcHQ+PC9oZWFkPlxcbiAgICA8Ym9keT5cXG4gICAgPHNjcmlwdD5cXG4gICAgZG9jdW1lbnQuYm9keS5pZCA9IFwiJytlKydcIjtcXG4gICAgPFxcL3NjcmlwdD5cXG4gICAgJyt0K1wiXFxuICAgIDwvYm9keT48L2h0bWw+XCJ9KHQsbixlLmFsd2F5c1VzZVhEb21haW5JZnJhbWV8fGUuZW5hYmxlU2FmZUZyYW1lKX12YXIgdnQ9e307ZnVuY3Rpb24gaHQoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gRyhhcG50YWcucmVxdWVzdHMudGFncyxmdW5jdGlvbihuKXtlPT09bi51dWlkJiYodD1uKX0pLHR9KGUudXVpZCk7aWYodGhpcy50YXJnZXRJZD1uLnRhcmdldElkLGUubm9iaWQpcmV0dXJuIHRoaXMubm9iaWQ9ITAsdGhpcy50YWdJZD1lLnRhZ19pZCx0aGlzLmF1Y3Rpb25JZD1lLmF1Y3Rpb25faWQsdGhpcztlLmFkcyYmZS5hZHMubGVuZ3RoLHRoaXMudGFnSWQ9ZS50YWdfaWQsdGhpcy5hdWN0aW9uSWQ9ZS5hdWN0aW9uX2lkO3ZhciBhPXR8fGUuYWRzWzBdLHI9dGhpcztHKF90KGEpLGZ1bmN0aW9uKGUsdCl7clt0XT1lfSk7dmFyIGk9dm9pZCAwLG89dm9pZCAwLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107QihlLnNpemVzKXx8KHQ9cnQoZS5zaXplcykpO3JldHVybiB0fShuKTtNKHMpJiZzWzBdJiYoaT1zWzBdLmhlaWdodCxvPXNbMF0ud2lkdGgpO3ZhciBkPWEuY29udGVudF9zb3VyY2U/YS5jb250ZW50X3NvdXJjZTpcInJ0YlwiO2lmKGFbZF0mJmFbZF0uYmFubmVyKXRoaXMuYmFubmVyPXt3aWR0aDphW2RdLmJhbm5lci53aWR0aCxoZWlnaHQ6YVtkXS5iYW5uZXIuaGVpZ2h0LGNvbnRlbnQ6YVtkXS5iYW5uZXIuY29udGVudCx0cmFja2VyczphW2RdLnRyYWNrZXJzfSxpPWFbZF0uYmFubmVyLmhlaWdodCxvPWFbZF0uYmFubmVyLndpZHRoO2Vsc2UgaWYoYS5ydGImJmEucnRiLnZpZGVvKXt2YXIgdT1hLnJ0Yi52aWRlbzt0aGlzLnZpZGVvPXtkdXJhdGlvbjp1LmR1cmF0aW9uX21zLHBsYXliYWNrTWV0aG9kczp1LnBsYXliYWNrX21ldGhvZHMsZnJhbWV3b3Jrczp1LmZyYW1ld29ya3MsY29udGVudDp1LmNvbnRlbnQsdHJhY2tlcnM6YS5ydGIudHJhY2tlcnN9fWVsc2UgaWYoYS5ydGImJmEucnRiW2cuay5OQVRJVkVdKXt2YXIgYz1hLnJ0YltnLmsuTkFUSVZFXTt0aGlzW2cuay5OQVRJVkVdPUV0KGMpLHl0KGEsdGhpcy50YXJnZXRJZCl9dGhpcy5oZWlnaHQ9aSx0aGlzLndpZHRoPW99dmFyIHl0PWZ1bmN0aW9uKGUsdCl7aWYoZS52aWV3YWJpbGl0eSYmZS52aWV3YWJpbGl0eS5jb25maWcpe3ZhciBuPWUudmlld2FiaWxpdHkuY29uZmlnO1wic3RyaW5nXCI9PXR5cGVvZiB0JiYobj1uLnJlcGxhY2UoXCIlbmF0aXZlX2RvbV9pZCVcIix0KSxLKCkmJm51bGw9PT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSYmeihcIk5vIGVsZW1lbnQgZm91bmQgaW4gdGhlIHBhZ2UgZm9yIHRoZSBuYXRpdmUgY3JlYXRpdmUgXCIrdCtcIiwgc2VlIGh0dHBzOi8vd2lraS5hcHBuZXh1cy5jb20vZGlzcGxheS9zZGsvRGVmaW5lVGFnICd0YXJnZXRJZCdcIikpLHB0KHtzdHJhdGVneTpcIldpdGhDb250ZW50XCIsZGF0YTpufSl9fSxidD1mdW5jdGlvbihlLHQpe2lmKCFlfHwhZS51dWlkKXJldHVybnt9O2lmKHZ0W2UudXVpZF0mJiF0KXJldHVybiB2dFtlLnV1aWRdO3RyeXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgaHQoZSx0KX0oZSx0KTtyZXR1cm4gdHx8KHZ0W2UudXVpZF09biksbn1jYXRjaChlKXtXKFwiYWRNYW5hZ2VyLmdldEFkT2JqOiBFcnJvciB0cnlpbmcgdG8gaW5zdGFudGlhdGUgbmV3IGFkT2JqOiBcIitlLm1lc3NhZ2UpfX0sd3Q9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWUuYWRSZXNwb25zZSYmZS5hZFJlc3BvbnNlLmFkcyYmZS5hZFJlc3BvbnNlLmFkcy5sZW5ndGgscj1hJiZlLmFkUmVzcG9uc2UuYWRzW2EtMV0uYWRfdHlwZT09PWcuYi5OQVRJVkU7cmV0dXJuIGUuaXNNZWRpYXRlZCYmciYmIW4/YnQoZS5hZFJlc3BvbnNlLGUuYWRSZXNwb25zZS5hZHNbYS0xXSk6YnQoZS5hZFJlc3BvbnNlLG4pfTt2YXIgSXQ9ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJue2NvZGU6YSxlcnJNZXNzYWdlOmV8fG4ubWVzc2FnZSxleGNlcHRpb246bix0YXJnZXRJZDp0fX07ZnVuY3Rpb24gX3QoZSl7cmV0dXJue2FkVHlwZTplLmFkX3R5cGUsYnV5ZXJNZW1iZXJJZDplLmJ1eWVyX21lbWJlcl9pZCxzb3VyY2U6ZS5jb250ZW50X3NvdXJjZSxjcG06ZS5jcG0sY3JlYXRpdmVJZDplLmNyZWF0aXZlX2lkLG1lZGlhU3VidHlwZUlkOmUubWVkaWFfc3VidHlwZV9pZCxtZWRpYVR5cGVJZDplLm1lZGlhX3R5cGVfaWQsYnJhbmRDYXRlZ29yeUlkOmUuYnJhbmRfY2F0ZWdvcnlfaWQsZGVhbElkOmUuZGVhbF9pZH19ZnVuY3Rpb24gRXQoZSl7cmV0dXJue3R5cGU6ZS50eXBlLHRpdGxlOmUudGl0bGUsYm9keTplLmRlc2MsZGVzYzI6ZS5kZXNjMixmdWxsVGV4dDplLmZ1bGxfdGV4dCxpY29uOmUuaWNvbixpbWFnZTplLm1haW5faW1nLGN0YTplLmN0YXRleHQsc3BvbnNvcmVkQnk6ZS5zcG9uc29yZWQsaW1wcmVzc2lvblRyYWNrZXJzOmUuaW1wcmVzc2lvbl90cmFja2VycyxjbGlja1RyYWNrZXJzOmUubGluayYmZS5saW5rLmNsaWNrX3RyYWNrZXJzLGNsaWNrVXJsOmUubGluayYmZS5saW5rLnVybCxjbGlja0ZhbGxiYWNrVXJsOmUubGluayYmZS5saW5rLmZhbGxiYWNrX3VybCxqYXZhc2NyaXB0VHJhY2tlcnM6ZS5qYXZhc2NyaXB0X3RyYWNrZXJzLHZpZGVvOmUudmlkZW8scHJpdmFjeUxpbms6ZS5wcml2YWN5X2xpbmsscmF0aW5nOmUucmF0aW5nLGRpc3BsYXlVcmw6ZS5kaXNwbGF5dXJsLGxpa2VzOmUubGlrZXMsZG93bmxvYWRzOmUuZG93bmxvYWRzLHByaWNlOmUucHJpY2Usc2FsZVByaWNlOmUuc2FsZXByaWNlLHBob25lOmUucGhvbmUsYWRkcmVzczplLmFkZHJlc3MsY3VzdG9tVGl0bGUxOmUudGl0bGUxLGN1c3RvbVRpdGxlMjplLnRpdGxlMixjdXN0b21UaXRsZTM6ZS50aXRsZTMsY3VzdG9tVGl0bGU0OmUudGl0bGU0LGN1c3RvbVRpdGxlNTplLnRpdGxlNSxjdXN0b21Cb2R5MTplLmJvZHkxLGN1c3RvbUJvZHkyOmUuYm9keTIsY3VzdG9tQm9keTM6ZS5ib2R5MyxjdXN0b21Cb2R5NDplLmJvZHk0LGN1c3RvbUJvZHk1OmUuYm9keTUsY3VzdG9tQ3RhMTplLmN0YXRleHQxLGN1c3RvbUN0YTI6ZS5jdGF0ZXh0MixjdXN0b21DdGEzOmUuY3RhdGV4dDMsY3VzdG9tQ3RhNDplLmN0YXRleHQ0LGN1c3RvbUN0YTU6ZS5jdGF0ZXh0NSxjdXN0b21EaXNwbGF5VXJsMTplLmRpc3BsYXl1cmwxLGN1c3RvbURpc3BsYXlVcmwyOmUuZGlzcGxheXVybDIsY3VzdG9tRGlzcGxheVVybDM6ZS5kaXNwbGF5dXJsMyxjdXN0b21EaXNwbGF5VXJsNDplLmRpc3BsYXl1cmw0LGN1c3RvbURpc3BsYXlVcmw1OmUuZGlzcGxheXVybDUsY3VzdG9tU29jaWFsVXJsMTplLnNvY2lhbHVybDEsY3VzdG9tU29jaWFsVXJsMjplLnNvY2lhbHVybDIsY3VzdG9tU29jaWFsVXJsMzplLnNvY2lhbHVybDMsY3VzdG9tU29jaWFsVXJsNDplLnNvY2lhbHVybDQsY3VzdG9tU29jaWFsVXJsNTplLnNvY2lhbHVybDUsY3VzdG9tSW1hZ2UxOmUuaW1hZ2UxLGN1c3RvbUltYWdlMjplLmltYWdlMixjdXN0b21JbWFnZTM6ZS5pbWFnZTMsY3VzdG9tSW1hZ2U0OmUuaW1hZ2U0LGN1c3RvbUltYWdlNTplLmltYWdlNSxjdXN0b21JY29uMTplLmljb24xLGN1c3RvbUljb24yOmUuaWNvbjIsY3VzdG9tSWNvbjM6ZS5pY29uMyxjdXN0b21JY29uNDplLmljb240LGN1c3RvbUljb241OmUuaWNvbjUsY3VzdG9tU29jaWFsSWNvbjE6ZS5zb2NpYWxpY29uMSxjdXN0b21Tb2NpYWxJY29uMjplLnNvY2lhbGljb24yLGN1c3RvbVNvY2lhbEljb24zOmUuc29jaWFsaWNvbjMsY3VzdG9tU29jaWFsSWNvbjQ6ZS5zb2NpYWxpY29uNCxjdXN0b21Tb2NpYWxJY29uNTplLnNvY2lhbGljb241fX12YXIgVHQ9ZnVuY3Rpb24oKXt2YXIgZT12b2lkIDAsdD17fTtyZXR1cm57Z2V0SW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gZXx8KGU9e2FkZDpmdW5jdGlvbihlLG4pe3RbZV09bn0sZ2V0SWZyYW1lOmZ1bmN0aW9uKGUpe3JldHVybiB0ZSh0LGUpP3RbZV06bnVsbH0sZ2V0SWZyYW1lczpmdW5jdGlvbigpe3JldHVybiB0fSxyZXNldEluc3RhbmNlOmZ1bmN0aW9uKCl7dD17fX19KSxlfX19KCksa3Q9d2luZG93LmRvY3VtZW50LHh0PVwiY29tcGF0TW9kZVwiLFN0PVwiZG9jdW1lbnRFbGVtZW50XCIsQXQ9XCJub2RlVHlwZVwiLFJ0PVwiaGlkZGVuXCIsTnQ9XCJhdXRvXCIsRHQ9XCJjb250YWluc1wiLEN0PTEwLHF0PVwic2Nyb2xsXCIsT3Q9XCJnZXRBdHRyaWJ1dGVcIixNdD1cInNldEF0dHJpYnV0ZVwiLFB0PVwicmVtb3ZlQXR0cmlidXRlXCIsQnQ9XCJjbGlwXCIsVXQ9d2luZG93Lk51bWJlcixGdD1VdCYmVXQuTUFYX1ZBTFVFLEx0PS0xKkZ0LHp0PVwiY29tcGFyZURvY3VtZW50UG9zaXRpb25cIixXdD1cIm9iamVjdFwiLGp0PVwic3RyaW5nXCIsVnQ9XCJudW1iZXJcIixIdD1cInRvTG93ZXJDYXNlXCIsWHQ9XCJ0b0ZpeGVkXCIsSnQ9XCJlbGVtZW50RnJvbVBvaW50XCIsR3Q9XCJsZW5ndGhcIixZdD1cIm92ZXJmbG93XCIsS3Q9XCJkb2N1bWVudFwiLCR0PVwib25zY3JvbGxcIixRdD13aW5kb3cuU3RyaW5nLFp0PXdpbmRvdy5NYXRoLGVuPU1hdGgubWF4LHRuPU1hdGgubWluLG5uPU1hdGgucm91bmQsYW49d2luZG93LHJuPXdpbmRvdy5uYXZpZ2F0b3Isb249cm4udXNlckFnZW50fHxcIlwiLHNuPSEoIXdpbmRvdy5BY3RpdmVYT2JqZWN0JiZcIkFjdGl2ZVhPYmplY3RcImluIHdpbmRvdykmJmFuJiZcIkFjdGl2ZVhPYmplY3RcImluIGFuLGRuPW51bGwsdW49ITAsY249ITEsbG49ZnVuY3Rpb24oKXt2YXIgZSx0PXt9O3QuaWU9dC5vcGVyYT10LmdlY2tvPXQud2Via2l0PXQuc2FmYXJpPXQuY2hyb21lPXQuYWlyPXQuaXBvZD10LmlwYWQ9dC5pcGhvbmU9dC5hbmRyb2lkPXQud2Vib3M9dC5zaWxrPXQubm9kZWpzPXQucGhhbnRvbWpzPTAsdC5tb2JpbGU9dC5pb3M9dC5jYWphPXJuJiZybi5jYWphVmVyc2lvbjt2YXIgbj1vbjtuJiYoRm4oL0tIVE1MLyxuKSYmKHQud2Via2l0PTEpLEZuKC9JRU1vYmlsZXxYQkxXUDcvLG4pJiYodC5tb2JpbGU9XCJ3aW5kb3dzXCIpLEZuKC9GZW5uZWMvLG4pJiYodC5tb2JpbGU9XCJnZWNrb1wiKSwoZT1VbihuLC9BcHBsZVdlYktpdFxcLyhbXlxcc10qKS8sMSkpJiYodC53ZWJraXQ9Qm4oZSksdC5zYWZhcmk9dC53ZWJraXQsRm4oL1BoYW50b21KUy8sbikmJihlPVVuKG4sL1BoYW50b21KU1xcLyhbXlxcc10qKS8sMSkpJiYodC5waGFudG9tanM9Qm4oZSkpLEZuKC8gTW9iaWxlXFwvLyxuKXx8Rm4oL2lQYWR8aVBvZHxpUGhvbmUvLG4pPyh0Lm1vYmlsZT1cIkFwcGxlXCIsZT0oZT1VbihuLC9PUyAoW15cXHNdKikvLDEpKSYmQm4oZS5yZXBsYWNlKFwiX1wiLFwiLlwiKSksdC5pb3M9ZSx0LmlwYWQ9dC5pcG9kPXQuaXBob25lPTAsKGU9VW4obiwvaVBhZHxpUG9kfGlQaG9uZS8sMCkpJiYodFtlW0h0XSgpXT10LmlvcykpOigoZT1VbihuLC9Ob2tpYU5bXlxcL10qfEFuZHJvaWQgXFxkXFwuXFxkfHdlYk9TXFwvXFxkXFwuXFxkLywwKSkmJih0Lm1vYmlsZT1lKSxGbigvd2ViT1MvLG4pJiYodC5tb2JpbGU9XCJXZWJPU1wiLChlPVVuKG4sL3dlYk9TXFwvKFteXFxzXSopOy8sMSkpJiYodC53ZWJvcz1CbihlKSkpLEZuKC8gQW5kcm9pZC8sbikmJih0Lm1vYmlsZT1cIkFuZHJvaWRcIiwoZT1VbihuLC9BbmRyb2lkIChbXlxcc10qKTsvLDEpKSYmKHQuYW5kcm9pZD1CbihlKSkpLEZuKC9TaWxrLyxuKSYmKGU9VW4obiwvU2lsa1xcLyhbXlxcc10qKVxcKS8sMSkpJiYodC5zaWxrPUJuKGUpKSksKGU9bi5tYXRjaCgvKENocm9tZXxDck1vKVxcLyhbXlxcc10qKS8pKSYmZVsxXSYmZVsyXT8odC5jaHJvbWU9Qm4oZVsyXSksdC5zYWZhcmk9MCxcIkNyTW9cIj09PWVbMV0mJih0Lm1vYmlsZT1cImNocm9tZVwiKSk6KGU9VW4obiwvQWRvYmVBSVJcXC8oW15cXHNdKikvKSkmJih0LmFpcj1lWzBdKSksdC53ZWJraXR8fCgoZT1VbihuLC9PcGVyYVtcXHNcXC9dKFteXFxzXSopLywxKSk/KHQub3BlcmE9Qm4oZSksKGU9VW4obiwvT3BlcmEgTWluaVteO10qLywwKSkmJih0Lm1vYmlsZT1lKSk6KGU9VW4obiwvTVNJRVxccyhbXjtdKikvLDEpKT90LmllPUJuKGUpOihlPVVuKG4sL0dlY2tvXFwvKFteXFxzXSopLykpJiYodC5nZWNrbz0xLChlPVVuKG4sL3J2OihbXlxcc1xcKV0qKS8sMSkpJiYodC5nZWNrbz1CbihlKSkpKSk7cmV0dXJuIHR9KCksZm49bG4uaWV8fDAscG49bG4ud2Via2l0fHwwLGduPWxuLmdlY2tvfHwwLG1uPWxuLm9wZXJhfHwwLHZuPTAsaG49e30seW49cXQrXCJXaWR0aFwiLGJuPXF0K1wiSGVpZ2h0XCIsd249cXQrXCJUb3BcIixJbj1xdCtcIkxlZnRcIixfbj1cIm9mZnNldFBhcmVudFwiLEVuPVwib2Zmc2V0VG9wXCIsVG49XCJvZmZzZXRMZWZ0XCIsa249XCJvZmZzZXRXaWR0aFwiLHhuPVwib2Zmc2V0SGVpZ2h0XCIsU249XCJjbGllbnRXaWR0aFwiLEFuPVwiY2xpZW50SGVpZ2h0XCIsUm49XCJpbm5lcldpZHRoXCIsTm49XCJpbm5lckhlaWdodFwiLERuPVwicGFyZW50Tm9kZVwiO2Z1bmN0aW9uIENuKGUpe3ZhciB0LG4sYSxyLGksbyxzLGQsdSxjPXt0OjAsbDowLHI6MCxiOjAsdzowLGg6MCx6OjB9LGw9XCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIixmPTAscD0wLGc9MCxtPTAsdj1jbixoPVZuKGUpfHxhbltLdF0seT1oW3h0XSxiPWguZG9jdW1lbnRNb2RlfHwwO2lmKHFuKGUpKXRyeXtpZihpPXpuKGUpLHQ9SG4oZSksbj0kbihlKSxjLmw9ZVtUbl18fDAsYy50PWVbRW5dfHwwLGE9ZSxyPWRuLHY9Z258fHBuPjUxOSwhKGU9PT10KSYmZVtsXSlzbiYmKCFifHxiPjAmJmI8OHx8XCJCYWNrQ29tcGF0XCI9PT15KSYmKHM9dC5jbGllbnRMZWZ0LGQ9dC5jbGllbnRUb3ApLHU9ZVtsXSgpLGMudD11LnRvcCxjLmw9dS5sZWZ0LChzfHxkKSYmKGMubC09cyxjLnQtPWQpLChuLnl8fG4ueCkmJighbG4uaW9zfHxsbi5pb3M+PTQuMikmJihjLmwrPW4ueCxjLnQrPW4ueSk7ZWxzZXtmb3IoOyhhPWFbX25dKSYmcW4oYSkmJnIhPT1hOylzPWFbVG5dLGQ9YVtFbl0sYy50Kz1kLGMubCs9cyx2JiYoYz1XbihhLGMpKSxyPWE7aWYoXCJmaXhlZFwiIT1pLnBvc2l0aW9uKXtmb3IoYT1lLHI9ZG47KGE9YVtEbl0pJiZxbihhKSYmciE9PWEmJmEhPXQ7KWY9YVt3bl0scD1hW0luXSxnbiYmXCJ2aXNpYmxlXCIhPShvPXpuKGEpKVtZdF0mJihjPVduKGEsYyxvKSksKGZ8fHApJiYoYy5sLT1wLGMudC09Zikscj1hO2MubCs9bi54LGMudCs9bi55fWVsc2UgYy5sKz1uLngsYy50Kz1uLnl9ZT09dD8obT1lW0FuXSxnPWVbU25dKToobT1lW3huXSxnPWVba25dKSxjLmI9Yy50K20sYy5yPWMubCtnLGMudz1lbihnLDApLGMuaD1lbihtLDApLGMuej1pLnpJbmRleH1jYXRjaChlKXtjPXt0OjAsbDowLHI6MCxiOjAsdzowLGg6MCx6OjB9fXJldHVybiBjfWZ1bmN0aW9uIHFuKGUpe3JldHVybiAxPT09T24oZSl9ZnVuY3Rpb24gT24oZSl7cmV0dXJuIEpuKGUmJmUubm9kZVR5cGUsLTEpfWZ1bmN0aW9uIE1uKGUpe3JldHVybihlPVBuKGUpKSYmLTE9PWUuc2VhcmNoKC9cXEQrL2cpP3VuOmUmJi0xIT1lLnNlYXJjaCgvcHgvZ2kpP3VuOnZvaWQgMH1mdW5jdGlvbiBQbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gdD09anQ/ZTp0IT1WdHx8ZT90PT1XdCYmZSYmZS5qb2luP2Uuam9pbihcIlwiKTohMT09PWU/XCJmYWxzZVwiOiEwPT09ZT9cInRydWVcIjplP1F0KGUpOlwiXCI6XCIwXCJ9ZnVuY3Rpb24gQm4oZSl7dmFyIHQ9MDtyZXR1cm4gcGFyc2VGbG9hdChlLnJlcGxhY2UoL1xcLi9nLGZ1bmN0aW9uKCl7cmV0dXJuIDE9PXQrKz9cIlwiOlwiLlwifSkpfWZ1bmN0aW9uIFVuKGUsdCxuKXt2YXIgYT1lJiZlLm1hdGNoKHQpO3JldHVybiBuPT1kbj9hOmEmJmFbbl18fGRufWZ1bmN0aW9uIEZuKGUsdCl7cmV0dXJuIGUudGVzdCh0KX1mdW5jdGlvbiBMbihlKXt2YXIgdCxuPWRuO3RyeXtlJiYoKG49ZS5wYXJlbnRXaW5kb3d8fGUuZGVmYXVsdFZpZXd8fGRuKXx8KG49KHQ9Vm4oZSkpJiYodC5wYXJlbnRXaW5kb3d8fHQuZGVmYXVsdFZpZXcpfHxkbikpfWNhdGNoKGUpe249ZG59cmV0dXJuIG59ZnVuY3Rpb24gem4oZSl7dmFyIHQ7aWYoTG4oZSkuZ2V0Q29tcHV0ZWRTdHlsZSl0cnl7dD1MbihlKS5nZXRDb21wdXRlZFN0eWxlKGUsZG4pfWNhdGNoKGUpe3Q9ZG59ZWxzZSB0cnl7dD1lLmN1cnJlbnRTdHlsZX1jYXRjaChlKXt0PWRufXJldHVybiB0fWZ1bmN0aW9uIFduKGUsdCxuKXt2YXIgYT0wLHI9MDtyZXR1cm4obj1ufHx6bihlKSkmJihhPW4uYm9yZGVyVG9wV2lkdGgscj1uLmJvcmRlckxlZnRXaWR0aCxhPU1uKGEpP0puKGEsMCk6MCxyPU1uKHIpP0puKHIsMCk6MCxnbiYmL150KD86YWJsZXxkfGh8cnxoZWFkfGZvb3QpJC9pLnRlc3QoWW4oZSkpJiYoYT1yPTApKSwodD10fHx7dDowLGw6MH0pLnQrPWEsdC5sKz1yLHR9ZnVuY3Rpb24gam4oZSl7cmV0dXJuIGUmJihlLnBhcmVudE5vZGV8fGUucGFyZW50RWxlbWVudCl9ZnVuY3Rpb24gVm4oZSl7dmFyIHQ9ZG47dHJ5e2UmJih0PTk9PU9uKGUpP2U6ZVtLdF18fGUub3duZXJEb2N1bWVudHx8ZG4pfWNhdGNoKGUpe3Q9ZG59cmV0dXJuIHR9ZnVuY3Rpb24gSG4oZSl7dmFyIHQ9ZSYmVm4oZSl8fGt0LG49dFt4dF0sYT10W1N0XTtyZXR1cm4gbiYmIW1uJiZcIkNTUzFDb21wYXRcIiE9biYmKGE9dC5ib2R5KSxhfWZ1bmN0aW9uIFhuKGUpe3ZhciB0LG4sYSxyLGk9Wy0xLC0xLC0xLC0xXSxvPVtCdCtcIlRvcFwiLEJ0K1wiUmlnaHRcIixCdCtcIkJvdHRvbVwiLEJ0K1wiTGVmdFwiXSxzPTA7aWYoIWUpcmV0dXJuIGk7aWYoZm4pZm9yKDtuPW9bc107KU1uKHQ9ZVtuXSkmJih0PUpuKHQsLTEpKT49MCYmKGlbc109dCkscysrO2Vsc2UgaWYoKHQ9ZVtCdF0pJiYtMSE9dC5zZWFyY2goL1xcZCsvZykpZm9yKHI9KGk9KGk9KHQ9dC5yZXBsYWNlKC9cXHcrXFwoKFteXFwpXSo/KVxcKS9nLFwiJDFcIikpLnNwbGl0KFwiIFwiKSlbR3RdPD0xP2kuc3BsaXQoXCIsXCIpOmkpW0d0XSxzPTA7ci0tOylNbihhPWlbc10pP2lbc109Sm4oYSwtMSk6aVtzXT0tMSxzKys7cmV0dXJuIGl9ZnVuY3Rpb24gSm4oZSx0LG4sYSl7aWYodHlwZW9mIGUhPVZ0KXRyeXtlPWU/cGFyc2VGbG9hdChlKTpVdC5OYU59Y2F0Y2godCl7ZT1VdC5OYU59cmV0dXJuIGE9PWRuJiYoYT1GdCksbj09ZG4mJihuPUx0KSwoaXNOYU4oZSl8fGU8bnx8ZT5hKSYmdCE9ZG4/dDplfWZ1bmN0aW9uIEduKGUsdCl7dmFyIG49Y24sYT1lJiZlW0F0XXx8LTEscj10JiZ0W0F0XXx8LTE7aWYoMT09YSYmLTEhPXIpaWYoZVtEdF0paWYobW58fDE9PXIpbj1lW0R0XSh0KTtlbHNlIGZvcig7dDspe2lmKGU9PT10KXtuPXVuO2JyZWFrfXQ9dC5wYXJlbnROb2RlfWVsc2UgZVt6dF0mJihuPWU9PT10fHwhISgxNiZlW3p0XSh0KSkpO3JldHVybiBufWZ1bmN0aW9uIFluKGUpe3JldHVybiBlJiYxPT1lW0F0XSYmZS50YWdOYW1lW0h0XSgpfHxcIlwifWZ1bmN0aW9uIEtuKGUsdCxuKXt0cnl7YXJndW1lbnRzW0d0XT4yP249PT1kbj9lW1B0XSh0KToobj1QbihuKSxcImNsYXNzXCI9PXRbSHRdKCk/ZS5jbGFzc05hbWU9bjplW010XSh0LG4pKTpuPVBuKGVbT3RdKHQpKX1jYXRjaChlKXtuPVwiXCJ9cmV0dXJuIG59ZnVuY3Rpb24gJG4oZSl7dmFyIHQsbixhLHIsaT17eDowLHk6MCx3OjAsaDowfSxvPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjAsc2Nyb2xsV2lkdGg6MCxzY3JvbGxIZWlnaHQ6MH0scz0wLGQ9MDtyZXR1cm4gbj0odD1WbihlKXx8a3QpW1N0XXx8byxyPXQuYm9keXx8bywoYT10LmRlZmF1bHRWaWV3KSYmKHM9Sm4oYS5wYWdlWE9mZnNldCwwKSxkPUpuKGEucGFnZVlPZmZzZXQsMCkpLGkueD1lbihuLnNjcm9sbExlZnQsci5zY3JvbGxMZWZ0LHMpLGkueT1lbihuLnNjcm9sbFRvcCxyLnNjcm9sbFRvcCxkKSxpLnc9ZW4obi5zY3JvbGxXaWR0aCxyLnNjcm9sbFdpZHRoLDApLGkuaD1lbihuLnNjcm9sbEhlaWdodCxyLnNjcm9sbEhlaWdodCwwKSxpfWZ1bmN0aW9uIFFuKGUsdCxuKXt2YXIgYSxyLGksbyxzLGQsdSxjLGwsZixwLGcsbSx2LGgseSxiLHcsSSxfLEUsVCxrLHgsUyxBLFIsTixELEMscSxPLE0sUCxCLFU9ZSYmam4oZSksRj1IbihlKSxMPUNuKGUpLHo9Q24oRiksVz0kbihGKSxqPWZ1bmN0aW9uKGUpe3ZhciB0PUhuKGUpLG49MCxhPTA7cmV0dXJuIHQmJihuPXQuc2Nyb2xsV2lkdGh8fDAsYT10LnNjcm9sbEhlaWdodHx8MCkse3Q6MCxsOjAsYjphLHI6bix3Om4saDphfX0oZSksVj17dDowLGw6MCxyOjAsYjowLHc6MCxoOjB9LEg9e3Q6MCxsOjAscjowLGI6MCx4czowLHlzOjAseGl2OjAseWl2OjAsaXY6MCx3OjAsaDowfSxYPVtdLEo9Y24sRz17bGVmdDpkbixyaWdodDpkbix0b3A6ZG4sYm90dG9tOmRufTtpZih0PXQmJlwib2JqZWN0XCI9PXR5cGVvZiB0P3Q6e30sVSlmb3IoYT16LnQscj16LmwsaT16LnIsbz16LmI7KHU9em4oVSkpJiYoXCJibG9ja1wiIT11LmRpc3BsYXkmJlwiYWJzb2x1dGVcIiE9dS5wb3NpdGlvbiYmXCJub25lXCI9PXUuZmxvYXQmJlwibm9uZVwiPT11LmNsZWFyfHwoSj1VPT1GLGY9KFA9Q24oVSkpLnQscD1QLmwsZz1QLnIsbT1QLmIsXz11W1l0K1wiWFwiXSxFPXVbWXQrXCJZXCJdLFQ9dVtZdF0saz1KP1stMSwtMSwtMSwtMV06WG4odSksQj1jbixKPyh2PVcudyxiPVcuaCk6KHY9VVt5bl0sYj1VW2JuXSksaD1VW2tuXSx3PVVbeG5dLHk9VVtTbl0sST1VW0FuXSwhZCYmaD55JiYoZD1oLXkpLCFzJiZ3PkkmJihzPXctSSksSj8odj55JiYoKHA9MCk+ciYmKHI9cCksKGc9KGFuW1JuXXx8aCkrVy54KTxpJiYoaT1nKSksYj5JJiYoKGY9MCk+YSYmKGE9ZiksKG09KGFuW05uXXx8dykrVy55KTxvJiYobz1tKSkpOihkJiZnLXA9PWgmJihnLT1kKSxzJiZtLWY9PXcmJihtLT1zKSxfIT1SdCYmXyE9cXQmJl8hPU50JiZUIT1SdCYmVCE9cXQmJlQhPU50fHwocD5yJiYocj1wLEcubGVmdD1VKSxnPGkmJihpPWcsRy5yaWdodD1VKSxfPT1xdHx8VD09cXQ/KFgucHVzaChVKSxCPXVuKTooXz09TnR8fFQ9PU50KSYmdj55JiYoWC5wdXNoKFUpLEI9dW4pKSxrWzNdPjAmJihOPXAra1szXSk+ciYmKHI9TixHLmxlZnQ9VSksa1sxXT4wJiYoRD1nK2tbMV0pPGkmJihpPUQsRy5yaWdodD1VKSxFIT1SdCYmRSE9cXQmJkUhPU50JiZUIT1SdCYmVCE9cXQmJlQhPU50fHwoZj5hJiYoYT1mLEcudG9wPVUpLG08byYmKG89bSxHLmJvdHRvbT1VKSxCfHwoRT09cXR8fFQ9PXF0PyhYLnB1c2goVSksQj11bik6KEU9PU50fHxUPT1OdCkmJmI+SSYmKFgucHVzaChVKSxCPXVuKSkpLGtbMF0+MCYmKEE9ZitrWzBdKT5hJiYoYT1BLEcudG9wPVUpLGtbMl0+MCYmKFI9UC50K2tbMl0pPG8mJihvPVIsRy5ib3R0b209VSkpKSxVIT1GKSYmKFU9am4oVSkpJiZZbihVKTspO3JldHVybihWPXt0OmVuKGEsMCksbDplbihyLDApLHI6ZW4oaSwwKSxiOmVuKG8sMCl9KS53PWVuKFYuci1WLmwsMCksVi5oPWVuKFYuYi1WLnQsMCkscD1MLmwsZz1MLnIsZj1MLnQsYz1nLXAsbD0obT1MLmIpLWYsTj1WLmwsRD1WLnIsQT1WLnQsRC1OLChSPVYuYiktQSxTPShTPShTPXRuKG0sUiktZW4oZixBKSk8MD8wOlMpPmw/bDpTLHg9KHg9KHg9dG4oZyxEKS1lbihwLE4pKTwwPzA6eCk+Yz9jOngsSC50PUE8Zj9SPD1mPzA6ZW4oZi1BLDApOjAsSC5iPVI+bT9tPD1BPzA6ZW4oUi1tLDApOjAsSC5sPU48cD9EPD1wPzA6Ujw9Zj8wOm08PUE/MDplbihwLU4sMCk6MCxILnI9RD5nP2c8PU4/MDpSPD1mPzA6ZW4oRC1nLDApOjAsSC53PWVuKEguci1ILmwsMCksSC5oPWVuKEguYi1ILnQsMCksSC54aXY9Yz4wP0puKCh4L2MpW1h0XSgyKSk6MCxILnlpdj1sPjA/Sm4oKFMvbClbWHRdKDIpKTowLEguaXY9Yz4wfHxsPjA/Sm4oKHgqUy8oYypsKSlbWHRdKDIpKTowLEguY2l2PTAsbiYmSC5pdj4uNDkmJihDPShNPWZ1bmN0aW9uKGUpe3ZhciB0LG4sYSxyLGksbyxzLGQsdSxjLGwsZixwLGcsbSx2LGg9Q24oZSkseT1WbihlKSxiPUhuKHkpLHc9aC50LEk9aC5sLF89Q3QsRT1bXSxUPTA7aWYoRS5vbj0wLHQ9aC53LG49aC5oLGk9YT1ubih0L18pLG89cj1ubihuL18pLHQ8PTF8fG48PTF8fGE8MXx8cjwxKXJldHVybiBFO2lmKG09KHY9JG4oKSkueSxnPXYueCxmPUkrdCxwPXcrbix5JiZiJiZ5W0p0XSl7Zm9yKDtpPHQ7KXtmb3Iobz1yO288bjspZD13K28sKHM9SStpKTw9ZiYmZDw9cCYmRS5wdXNoKHt4OnMseTpkLG9uOjB9KSxvKz1yO2krPWF9Zm9yKDt1PUVbVCsrXTspcz1lbih1LngtZywwKSxzPXRuKHMsdS54KSxkPWVuKHUueS1tLDApLGQ9dG4oZCx1LnkpLDAhPXM/MCE9ZD8obD15W0p0XShzLGQpKSYmbCE9PWImJmwhPT1lJiYhR24obCxlKSYmKChjPUtuKGwsXCJpZFwiKSl8fEtuKGwsXCJpZFwiLGM9UG4oW1wiZ2VvbV9pbnRlclwiLFwiX1wiLChuZXcgRGF0ZSkuZ2V0VGltZSgpLFwiX1wiLFp0LnJvdW5kKDEwMCpadC5yYW5kb20oKSksXCJfXCIsdm4rK10pKSx1Lm9uPWMsRS5vbisrKToodS5vbj1cIiF5LW9mZnNjcmVlblwiLEUub24rKyk6KHUub249XCIheC1vZmZzY3JlZW5cIixFLm9uKyspfXJldHVybiBFfShlKSlbR3RdLChxPUpuKE0ub24sMCkpJiYoTz0xLUpuKChxL0MpW1h0XSgyKSwwKSxILmNpdj1ILml2PU8pKSx0LnJlY3Q9TCx0LmNsaXBSZWN0PVYsdC5kb2NSZWN0PWosWFtHdF0/KHQuaXNSb290PWNuLHQuY2FuU2Nyb2xsPXVuLEgueHM9ISFzLEgueXM9ISFkKTp6LmI+PVYuYnx8ei5yPj1WLnI/KHQuaXNSb290PXVuLEgueHM9ISEoai53PnoudyYmcyksSC55cz0hIShqLmg+ei5oJiZkKSx0LmNhblNjcm9sbD1qLnc+ei53fHxqLmg+ei5oKTpILnlzPUgueHM9dC5pc1Jvb3Q9dC5jYW5TY3JvbGw9Y24sdC5zY3JvbGxOb2Rlcz1YLHQuY2xpcE5vZGVzPUcsdC5leHBSZWN0PUgsSH1mdW5jdGlvbiBabihlLHQsbil7dmFyIGEscixpLG8scyxkLHUsYyxsLGYscCxnLG09e30sdj17fTtpZihRbih0LHYsdW4pLCFuJiYhdi5pc1Jvb3QmJnYuY2FuU2Nyb2xsJiYoKHI9di5leHBSZWN0KS54c3x8ci55cykpe3RhKGUpLGE9W10saG5bZV09YTtmb3IodmFyIGg9MDtoPHYuc2Nyb2xsTm9kZXMubGVuZ3RoO2grKyl7dmFyIHk9di5zY3JvbGxOb2Rlc1toXSxiPXt9O2Iubm9kZT15LGJbJHRdPWZ1bmN0aW9uKHQpe2VhKHQsZSx5KX0sUih5LHF0LGJbJHRdKSxhLnB1c2goYil9fXJldHVybiBtLndpbj0ocz1vJiZMbihvKXx8YW4sZD1zLmlubmVySGVpZ2h0fHwwLHU9cy5pbm5lcldpZHRofHwwLGM9cy5zY3JlZW5ZfHxzLnNjcmVlblRvcHx8MCxsPWQrYyxmPXMuc2NyZWVuWHx8cy5zY3JlZW5MZWZ0fHwwLHA9dStmLGc9SG4obyksZHx8dXx8IWd8fChkPWcuY2xpZW50SGVpZ2h0fHwwLHA9ZisodT1nLmNsaWVudFdpZHRofHwwKSxsPWMrZCkse3Q6YyxsOmYsYjpsLHI6cCx3OnUsaDpkfSksbS5wYXI9di5jbGlwUmVjdCxyPXYuZXhwUmVjdCwoaT12LnJlY3QpLml2PXIuaXYsaS54aXY9ci54aXYsaS55aXY9ci55aXYsZGVsZXRlIHIuaXYsZGVsZXRlIHIueGl2LGRlbGV0ZSByLnlpdixtLmV4cD1yLG0uc2VsZj1pLG19ZnVuY3Rpb24gZWEoZSx0LG4pe3ZhciBhPWhuW3RdO2lmKGEpZm9yKHZhciByPTA7cjxhLmxlbmd0aDtyKyspe3ZhciBpPWFbcl07aWYoaS5ub2RlPT09bil7aS50SUQmJihjbGVhclRpbWVvdXQoaS50SUQpLGRlbGV0ZSBpLnRJRCksaS50SUQ9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPVR0KCkuZ2V0SWZyYW1lKHQpO2UmJk1hKGUuaWZyYW1lLHQsWm4odCxlLmlmcmFtZSx1bikpfSxTYSk7YnJlYWt9fX1mdW5jdGlvbiB0YShlKXt2YXIgdCxuPWhuW2VdO2lmKG4pZm9yKDt0PW4ucG9wKCk7KXQudElEJiZjbGVhclRpbWVvdXQodC50SUQpLE4odC5ub2RlLHF0LHRbJHRdKSx0Lm5vZGU9dFskdF09ZG4saG5bZV09ZG47ZGVsZXRlIGhuW2VdfXZhciBuYT1pZSgpO2Z1bmN0aW9uIGFhKGUpe3B0KHtzdHJhdGVneTpcIldpdGhBdHRyaWJ1dGVzXCIsZGF0YTp7aWQ6XCJpdHVuZXMtbGF1bmNoLXN0b3JlXCIsc3JjOmUuZGV0YWlsLnVybH19KX12YXIgcmE9W10saWE9e30sb2E9e30sc2E9W10sZGE9e30sdWE9ZmUoZnVuY3Rpb24oKXtSKG5hLFwiZm9jdXNcIixEYSksUihuYSxcImJsdXJcIixDYSksUihuYSxcInJlc2l6ZVwiLEJhKSxSKG5hLFwic2Nyb2xsXCIsQmEpLFIobmEsXCJ1bmxvYWRcIixmdW5jdGlvbigpe3RyeXtOKG5hLFwiZm9jdXNcIixEYSksTihuYSxcImJsdXJcIixDYSksTihuYSxcInJlc2l6ZVwiLEJhKSxOKG5hLFwic2Nyb2xsXCIsQmEpLFVhKCl9Y2F0Y2goZSl7fX0pfSksY2E9aWUoKSxsYT0hMSxmYT17fSxwYT12b2lkIDAsZ2E9e30sbWE9ZnVuY3Rpb24oKXtyZXR1cm4gZmF9LHZhPWZ1bmN0aW9uKCl7cmV0dXJuIGdhfSxoYT1mdW5jdGlvbihlKXtlPyhwYT1RKGUsXCJodHRwXCIpfHxRKGUsXCJodHRwc1wiKT9lOlwiaHR0cHM6Ly9cIitlLEwoXCJTZXR0aW5nIGVuZHBvaW50IHRvOiBcIitwYSkpOlcoXCJDYW5ub3Qgc2V0IGFuIGVtcHR5IGVuZHBvaW50XCIpfSx5YT1mdW5jdGlvbihlKXtsYT1lfTt2YXIgYmE9dm9pZCAwLHdhPXZvaWQgMCxJYT0hMCxfYT1mdW5jdGlvbihlLHQpe3ZhciBuPXQsYT12b2lkIDAscj12b2lkIDA7ZnVuY3Rpb24gaShlKXt2YXIgdD1JYT9cInRjU3RyaW5nXCI6XCJjb25zZW50RGF0YVwiO0lhJiZlJiZlLmdkcHJBcHBsaWVzJiZlLnB1cnBvc2UmJmUucHVycG9zZS5jb25zZW50cyYmITE9PT1lLnB1cnBvc2UuY29uc2VudHNbMV0mJnlhKCEwKTt2YXIgbj17Y29uc2VudF9zdHJpbmc6ZT9lW3RdOnZvaWQgMCxjb25zZW50X3JlcXVpcmVkOmU/ZS5nZHByQXBwbGllczp2b2lkIDB9O3dhLmdkcHJfY29uc2VudD1ufWZ1bmN0aW9uIG8oZSl7Y2xlYXJUaW1lb3V0KGEpLGkoYmEpLGZlKHMoZSkpfWZ1bmN0aW9uIHMoZSl7ZSYmeihlK1wiIFJlc3VtaW5nIHJlcXVlc3Qgd2l0aG91dCBjb25zZW50IGluZm9ybWF0aW9uLlwiKSxuKCl9aWYoKHdhPWUpLmNvbnNlbnRNYW5hZ2VtZW50JiYod2EuY29uc2VudE1hbmFnZW1lbnQuZGlzYWJsZWR8fHdhLmNvbnNlbnRNYW5hZ2VtZW50LnRjZiYmd2EuY29uc2VudE1hbmFnZW1lbnQudGNmLmRpc2FibGVkKSlyZXR1cm4gZmUocygpKTt2YXIgZD0xZTQ7aWYod2EuY29uc2VudE1hbmFnZW1lbnQmJlAod2EuY29uc2VudE1hbmFnZW1lbnQudGltZW91dCkmJihkPXdhLmNvbnNlbnRNYW5hZ2VtZW50LnRpbWVvdXQpLGJhKXJldHVybiBpKGJhKSxmZShzKCkpO2E9c2V0VGltZW91dChmdW5jdGlvbigpe28oYmE/XCJcIjpcIkNNUCB3b3JrZmxvdyBleGNlZWRlZCB0aW1lb3V0IHRocmVzaG9sZC5cIil9LGQpLGZ1bmN0aW9uKGUsdCl7dmFyIG49e307dHJ5eyhyPXdpbmRvdy5fX3RjZmFwaXx8d2luZG93LnRvcC5fX3RjZmFwaSl8fChyPXdpbmRvdy5fX2NtcHx8d2luZG93LnRvcC5fX2NtcCkmJihJYT0hMSl9Y2F0Y2goZSl7fWlmKHEocikpcihJYT9cImFkZEV2ZW50TGlzdGVuZXJcIjpcImdldENvbnNlbnREYXRhXCIsbnVsbCxlKTtlbHNlIGlmKHdpbmRvdy4kc2YmJndpbmRvdy4kc2YuZXh0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuJHNmLmV4dC5jbXApSWE9ITEsbz1PYmplY3Qua2V5cyh3YS50YWdzKSxzPXJ0KHdhLnRhZ3Nbb1swXV0uc2l6ZXMpLHdpbmRvdy4kc2YuZXh0LnJlZ2lzdGVyKHNbMF0ud2lkdGgsc1swXS5oZWlnaHQsZnVuY3Rpb24odCxuKXtcImNtcFJldHVyblwiPT09dCYmZShuLnZlbmRvckNvbnNlbnREYXRhKX0pLHdpbmRvdy4kc2YuZXh0LmNtcChcImdldENvbnNlbnREYXRhXCIpO2Vsc2V7Zm9yKHZhciBhPXdpbmRvdyxpPXZvaWQgMDshaTspe3RyeXsoYS5mcmFtZXMuX190Y2ZhcGlMb2NhdG9yfHxhLmZyYW1lcy5fX2NtcExvY2F0b3IpJiYoaT1hKSxhLmZyYW1lcy5fX2NtcExvY2F0b3ImJihJYT0hMSl9Y2F0Y2goZSl7fWlmKGE9PT13aW5kb3cudG9wKWJyZWFrO2E9YS5wYXJlbnR9aWYoIWkpcmV0dXJuIHQoXCJDTVAgbm90IGZvdW5kLlwiKTshZnVuY3Rpb24odCl7dmFyIGE9SWE/XCJfX3RjZmFwaVwiOlwiX19jbXBcIjtmdW5jdGlvbiByKGUpe3ZhciB0PUlhP1wiX190Y2ZhcGlSZXR1cm5cIjpcIl9fY21wUmV0dXJuXCIsYT1cInN0cmluZ1wiPT10eXBlb2YgZS5kYXRhJiZlLmRhdGEuaW5jbHVkZXModCk/SlNPTi5wYXJzZShlLmRhdGEpOmUuZGF0YTtpZihhW3RdKXt2YXIgcj1hW3RdO25bci5jYWxsSWRdKHIucmV0dXJuVmFsdWUsci5zdWNjZXNzKSxJYXx8ZGVsZXRlIG5bci5jYWxsSWRdfX1mdW5jdGlvbiBpKHQsbil7SWF8fE4od2luZG93LFwibWVzc2FnZVwiLHIsITEpLGUodCxuKX13aW5kb3dbYV09ZnVuY3Rpb24oZSxyLGkpe3ZhciBvLHMsZCx1PVwiXCIrTWF0aC5yYW5kb20oKSxjPShkPXtjb21tYW5kOmUscGFyYW1ldGVyOnIsY2FsbElkOnV9LChzPWErXCJDYWxsXCIpaW4obz17fSk/T2JqZWN0LmRlZmluZVByb3BlcnR5KG8scyx7dmFsdWU6ZCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm9bc109ZCxvKTtuW3VdPWksdC5wb3N0TWVzc2FnZShjLFwiKlwiKX0sUih3aW5kb3csXCJtZXNzYWdlXCIsciwhMSksSWE/d2luZG93Ll9fdGNmYXBpKFwiYWRkRXZlbnRMaXN0ZW5lclwiLG51bGwsaSk6d2luZG93Ll9fY21wKFwiZ2V0Q29uc2VudERhdGFcIixudWxsLGkpfShpKX12YXIgbyxzfShmdW5jdGlvbiBlKHQsbil7SWE/ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKCl7ciYmcihcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiwyLGZ1bmN0aW9uKCl7fSxlKX1uJiZcIm9iamVjdFwiPT10eXBlb2YgdCYmXCJzdHJpbmdcIj09dHlwZW9mIHQudGNTdHJpbmc/XCJ1c2VyYWN0aW9uY29tcGxldGVcIj09PXQuZXZlbnRTdGF0dXN8fFwidGNsb2FkZWRcIj09PXQuZXZlbnRTdGF0dXM/KGQoKSxjbGVhclRpbWVvdXQoYSksaShiYT10KSxmZShzKCkpKTpcImNtcHVpc2hvd25cIj09PXQuZXZlbnRTdGF0dXMmJihiYT10LHQudGNTdHJpbmcmJnQucHVycG9zZU9uZVRyZWF0bWVudCYmKGQoKSxjbGVhclRpbWVvdXQoYSksaShiYSksZmUocygpKSkpOm8oXCJDTVAgcmV0dXJuZWQgdW5leHBlY3RlZCBjb25zZW50T2JqZWN0IGR1cmluZyBsb29rdXAgcHJvY2VzczsgcmV0dXJuZWQgdmFsdWUgd2FzIChcIit0K1wiKVwiKX0oKTpcIm9iamVjdFwiIT10eXBlb2YgdHx8XCJzdHJpbmdcIiE9dHlwZW9mIHQuY29uc2VudERhdGF8fFwiXCI9PT10LmNvbnNlbnREYXRhP28oXCJDTVAgcmV0dXJuZWQgdW5leHBlY3RlZCBjb25zZW50T2JqZWN0IGR1cmluZyBsb29rdXAgcHJvY2VzczsgcmV0dXJuZWQgdmFsdWUgd2FzIChcIit0K1wiKVwiKTooY2xlYXJUaW1lb3V0KGEpLGkoYmE9dCksZmUocygpKSl9LG8pfSxFYT1nLnAuTlVNLFRhPTAsa2E9MCx4YT0wLFNhPTUwMCxBYT0yLFJhPWZ1bmN0aW9uKGUpe0woXCJFeHBhbmQgaWZyYW1lIHN0YXJ0ZWQgYnkgaG9zdFwiKTt2YXIgdD0hMSxuPSExLGE9MCxyPTAsaT0wLG89MCxzPXZvaWQgMCxkPXZvaWQgMCx1PWllKCkuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZy5tLlVUX0RJVitlLnRhcmdldElkKSxjPVR0LmdldEluc3RhbmNlKCkuZ2V0SWZyYW1lKGUudGFyZ2V0SWQpLGw9Yy5pZnJhbWUuc3R5bGUsZj11LnN0eWxlO2YuZGlzcGxheT1cIlwiO3ZhciBwPXBhcnNlSW50KGYud2lkdGgsMTApLG09cGFyc2VJbnQoZi5oZWlnaHQsMTApO2lmKGlzTmFOKHApJiYocD0wKSxpc05hTihtKSYmKG09MCksZS5ib3VuZHMubXVsdGlEaXI/KGk9cCsoZD1yZShcImRhdGEuYm91bmRzLmxlZnRcIixlLmJvdW5kcy5sZWZ0LEVhKSkrcmUoXCJkYXRhLmJvdW5kcy5yaWdodFwiLGUuYm91bmRzLnJpZ2h0LEVhKSxvPW0rKHM9cmUoXCJkYXRhLmJvdW5kcy50b3BcIixlLmJvdW5kcy50b3AsRWEpKStyZShcImRhdGEuYm91bmRzLmJvdHRvbVwiLGUuYm91bmRzLmJvdHRvbSxFYSkscz8ocj0tMSpzLG49ITApOnI9MCxkPyhhPS0xKmQsdD0hMCk6YT0wKTooaT0odD0oYT1lLmJvdW5kcy54KTwwKT9wKy0xKmE6cCthLG89KG49KHI9ZS5ib3VuZHMueSk8MCk/bSstMSpyOm0rciksIShpPD1wJiZvPD1tKSl7bC53aWR0aD1pK1wicHhcIixsLmhlaWdodD1vK1wicHhcIix0JiYobC5sZWZ0PWErXCJweFwiKSxuJiYobC50b3A9citcInB4XCIpLGwuekluZGV4PWcuby5ERUZBVUxUX1pJTkRFWCxsLnBvc2l0aW9uPVwicmVsYXRpdmVcIixmLnBvc2l0aW9uPVwicmVsYXRpdmVcIixlLmJvdW5kcy5wdXNoPyhmLndpZHRoPWkrXCJweFwiLGYuaGVpZ2h0PW8rXCJweFwiKTooZi53aWR0aD1wK1wicHhcIixmLmhlaWdodD1tK1wicHhcIik7dmFyIHY9ZnVuY3Rpb24oKXshZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW4uaWZyYW1lLmNvbnRlbnRXaW5kb3cscj17fTtyLnRhcmdldElkPXQudGFyZ2V0SWQsci5zdGF0dXM9ZSxyLmdlb209TmEodC50YXJnZXRJZCxuLmlmcmFtZSksemEoYSxKU09OLnN0cmluZ2lmeShyKSxjZSgpKX0oZy5vLlNUQVRVUy5OT1RJRllfRVhQQU5ERUQsZSxjKX07ZS5leHQmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmV4dC50d2VlblRpbWU/ZnVuY3Rpb24oZSx0LG4sYSl7dmFyIHI9dC5zdHlsZTtyLnRyYW5zaXRpb249XCJoZWlnaHQgXCIrZS5leHQudHdlZW5UaW1lK1wibXMgZWFzZVwiLHIuaGVpZ2h0PW4scltcIm92ZXJmbG93LXlcIl09XCJoaWRkZW5cIixSKHQsXCJ0cmFuc2l0aW9uZW5kXCIsZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiZhKCl9KX0oZSx1LG8sdik6digpfX07dmFyIE5hPWZ1bmN0aW9uKGUsdCl7dmFyIG49Wm4oZSx0KTtyZXR1cm4gbi5hbng9ZnVuY3Rpb24oKXt0cnl7aWYodm9pZCAwIT09d2luZG93LnRvcC5sb2NhdGlvbi5ocmVmKXt2YXIgZT13aW5kb3csdD0wLG49MDtkb3t0Kz1lLnBhZ2VZT2Zmc2V0fHxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGUuZG9jdW1lbnQuYm9keS5zY3JvbGxUb3Asbis9ZS5wYWdlWE9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdHx8ZS5kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsZT1lLnBhcmVudH13aGlsZShlLnBhcmVudCE9PXdpbmRvdy50b3ApO3JldHVybntzY3JvbGxUb3A6dCxzY3JvbGxMZWZ0Om59fX1jYXRjaChlKXt9cmV0dXJue3Njcm9sbFRvcDowLHNjcm9sbExlZnQ6MH19KCksbn0sRGE9ZnVuY3Rpb24oKXtxYSghMCl9LENhPWZ1bmN0aW9uKCl7cWEoITEpfTtmdW5jdGlvbiBxYShlKXtPYSgpLGthPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHQsbjt0PWUsbj1UdC5nZXRJbnN0YW5jZSgpLmdldElmcmFtZXMoKSxHKG4sZnVuY3Rpb24oZSxuKXt2YXIgYT1hcG50YWcucmVxdWVzdHMudGFnc1tuXTtpZihhLmFsd2F5c1VzZVhEb21haW5JZnJhbWV8fGEuZW5hYmxlU2FmZUZyYW1lKXt2YXIgcj1lLmlmcmFtZS5jb250ZW50V2luZG93LGk9e307aS50YXJnZXRJZD1uLGkudmFsdWU9dCxpLnN0YXR1cz1nLm8uU1RBVFVTLkZPQ1VTX0NIQU5HRSx6YShyLEpTT04uc3RyaW5naWZ5KGkpLGNlKCkpfX0pLE9hKCl9LEFhKX1mdW5jdGlvbiBPYSgpe2thJiYoY2xlYXJUaW1lb3V0KGthKSxrYT0wKX12YXIgTWE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWUuY29udGVudFdpbmRvdyxyPXt9O3IudGFyZ2V0SWQ9dCxyLmdlb209bixyLnN0YXR1cz1nLm8uU1RBVFVTLkdFT01fVVBEQVRFLHphKGEsSlNPTi5zdHJpbmdpZnkociksY2UoKSl9LFBhPWZ1bmN0aW9uKGUsdCl7TWEoZSx0LE5hKHQsZSkpfTt2YXIgQmE9ZnVuY3Rpb24oKXtUYXx8KFRhPXdpbmRvdy5zZXRUaW1lb3V0KExhLFNhKSl9LFVhPWZ1bmN0aW9uKCl7dmFyIGU9VHQuZ2V0SW5zdGFuY2UoKS5nZXRJZnJhbWVzKCk7RyhlLGZ1bmN0aW9uKGUsdCl7dmFyIG49YXBudGFnLnJlcXVlc3RzLnRhZ3NbdF07KG4uYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8bi5lbmFibGVTYWZlRnJhbWUpJiYoY2xlYXJJbnRlcnZhbCh4YSkseGE9MCx0YSh0KSl9KX0sRmE9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPVR0LmdldEluc3RhbmNlKCkuZ2V0SWZyYW1lKG4pLmlmcmFtZS5jb250ZW50V2luZG93O3phKGEse21lc3NhZ2VUeXBlOmUsbWVzc2FnZVBheWxvYWQ6dCxzdGF0dXM6XCJub3RpZnlcIix0YXJnZXRJZDpufSxjZSgpKX07ZnVuY3Rpb24gTGEoKXt2YXIgZT1UdC5nZXRJbnN0YW5jZSgpLmdldElmcmFtZXMoKTtHKGUsZnVuY3Rpb24oZSx0KXt2YXIgbj1hcG50YWcucmVxdWVzdHMudGFnc1t0XTsobi5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHxuLmVuYWJsZVNhZmVGcmFtZSkmJlBhKGUuaWZyYW1lLHQpfSksVGEmJihjbGVhclRpbWVvdXQoVGEpLFRhPTApfXZhciB6YT1mdW5jdGlvbihlLHQsbil7XCJzdHJpbmdcIiE9dHlwZW9mIHQmJih0PUpTT04uc3RyaW5naWZ5KHQpKSxlLnBvc3RNZXNzYWdlKHQsbil9LFdhPWZ1bmN0aW9uKCl7dmFyIGU9e30sdD1bXSxuPVwiXCI7cmV0dXJue2ludm9rZU5vdGlmeTpmdW5jdGlvbihuLGEscil7dC5wdXNoKG8obixhLHIpKSxHKGUsZnVuY3Rpb24oZSl7ZS5hZGROb3RpZnlNZXNzYWdlKG8obixhLHIpKSxlLnN0YXR1cyE9PUhhJiZpKGUpfSl9LGxvYWRSZW5kZXJlcjpmdW5jdGlvbih0LG4pe3ZhciBpPW4ucmVuZGVyZXJfaWQ7aWYodC5lbmFibGVTYWZlRnJhbWUmJighd2luZG93LiRzZnx8IXdpbmRvdy4kc2YuZXh0KSlyZXR1cm4gaT1mdW5jdGlvbihlLHQpe3JldHVybiB0LnJlbmRlcmVyX2lkK1wiX1wiK2UudGFyZ2V0SWR9KHQsbiksdm9pZChlW2ldPWQobi5yZW5kZXJlcl91cmwsaSx0KSk7dmFyIG89ZVtpXTtpZihvKXt2YXIgcz1lW2ldO28uc3RhdHVzPT09WGE/KGModCksYShzLHQsciksdC5kaXNwbGF5ZWQ9ITApOm8uYWRkVGFnKHQpfWVsc2UgSCh3aW5kb3csbi5yZW5kZXJlcl91cmwpLGVbaV09ZChuLnJlbmRlcmVyX3VybCxpLHQpfSxzZXRSZW5kZXJlclN0YXR1czpmdW5jdGlvbih0LG4pe3ZhciBhPWVbdF07YSYmKGEuc3RhdHVzPW4saShhKSl9LHJlZ2lzdGVyUmVuZGVyZXI6ZnVuY3Rpb24odCxvLHMpe2lmKG49cyxvPWZ1bmN0aW9uKGUpe2lmKHEoZSkpcmV0dXJue3JlbmRlckFkOmUsbm90aWZ5OmZ1bmN0aW9uKCl7fX07aWYoQyhlKSYmcShlLnJlbmRlckFkKSlyZXR1cm57cmVuZGVyQWQ6ZS5yZW5kZXJBZCxub3RpZnk6ZS5ub3RpZnl9fShvKSx0JiZlW3RdJiZDKG8pKXt2YXIgZD1lW3RdO2QucmVuZGVyRm49by5yZW5kZXJBZCxkLm5vdGlmeUZuPW8ubm90aWZ5LGQuc3RhdHVzPVhhLHdpbmRvdy5jdXJyZW50VGFnJiZ3aW5kb3cuY3VycmVudFRhZy5lbmFibGVTYWZlRnJhbWUmJih1PXdpbmRvdy5jdXJyZW50VGFnLGw9dCxmPVhhLHA9e25hbWU6XCJ1cGRhdGVSZW5kZXJTdGF0dXNcIix0YXJnZXRJZDp1LnRhcmdldElkLHJJZDpsLHN0YXR1czpmfSx6YSh3aW5kb3cucGFyZW50LHAsbikpLGkoZCksRyhkLmdldFRhZ3MoKSxmdW5jdGlvbihlKXtlLmRpc3BsYXllZHx8KGMoZSksYShkLnJlbmRlckZuLGUsZnVuY3Rpb24oZSx0KXtyKGUsdCxkKX0pLGUuZGlzcGxheWVkPSEwKX0pfWVsc2UgVyhcImFzdC5qc1wiLFwicmVnaXN0ZXJSZW5kZXJlciBtdXN0IGJlIGNhbGxlZCB3aXRoIChpZCwgY2JGbilcIik7dmFyIHUsbCxmLHB9LGNsZWFyU3RhdGU6ZnVuY3Rpb24oKXtlPXt9LHQ9W119fTtmdW5jdGlvbiBhKGUsdCxuKXtxKGUpP2UuY2FsbChhcG50YWcsdCxuKTpDKGUpJiYocShlLnJlbmRlckZuKT9lLnJlbmRlckZuLmNhbGwoYXBudGFnLHQsbik6VyhcIkVycm9yIGludm9raW5nIHJlbmRlcmVyT2JqLnJlbmRlckFkKCkuIHJlbmRlckFkIG11c3QgYmUgYSBmdW5jdGlvblwiKSl9ZnVuY3Rpb24gcihlLHQsYSl7YSYmYS5pc1NhZmVGcmFtZT9mdW5jdGlvbihlLHQpe3ZhciBhPXtuYW1lOlwiZW1pdEV2ZW50XCIsY21kOltlLHRdfTtpZih6YSh3aW5kb3cucGFyZW50LGEsbiksYXBudGFnLm1vY2tTZkxpc3RuZXImJmFwbnRhZy5tb2NrU2ZMaXN0bmVyLmhhbmRsZXIpe2FwbnRhZy5tb2NrU2ZMaXN0bmVyLmhhbmRsZXIoYXBudGFnLm1vY2tTZkxpc3RuZXIuYWRPYmopO3ZhciByPXtuYW1lOlwicmVzaXplQWRcIix0YXJnZXRJZDplLGNtZDpbXCJhdXRvXCIsXCJhdXRvXCJdfTt6YSh3aW5kb3cucGFyZW50LHIsbil9fShlLHQpOmFwbnRhZy5lbWl0RXZlbnQoZSx0KX1mdW5jdGlvbiBpKGUpe3EoZS5ub3RpZnlGbikmJkcoZS5nZXROb3RpZnlNZXNzYWdlcygpLGZ1bmN0aW9uKHQpe3Quc2VudHx8KHQuc2VudD0hMCxlLm5vdGlmeUZuKHQubWVzc2FnZVR5cGUsdC5tZXNzYWdlUGF5bG9hZCkpfSl9ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue21lc3NhZ2VUeXBlOmUsbWVzc2FnZVBheWxvYWQ6dCx0YXJnZXRJZDpuLHNlbnQ6ITF9fWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBhPVtdLHI9W107dGhpcy5nZXRUYWdzPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHRoaXMuYWRkVGFnPWZ1bmN0aW9uKGUpe2EucHVzaChlKX0sdGhpcy5hZGROb3RpZnlNZXNzYWdlPWZ1bmN0aW9uKGUpe3IucHVzaChlKX0sdGhpcy5nZXROb3RpZnlNZXNzYWdlcz1mdW5jdGlvbigpe3JldHVybiByfSx0aGlzLnVybD1lLHRoaXMuaWQ9dCx0aGlzLnN0YXR1cz1IYSx0aGlzLnJlbmRlckZuPWZ1bmN0aW9uKCl7fSx0aGlzLm5vdGlmeUZuPXUsdGhpcy5pc1NhZmVGcmFtZT1uLmVuYWJsZVNhZmVGcmFtZXx8ITEsdGhpcy5hZGRUYWcobil9ZnVuY3Rpb24gZChlLG4sYSl7dmFyIHI9bmV3IHMoZSxuLGEpO3JldHVybiBmdW5jdGlvbihlKXtHKHQsZnVuY3Rpb24odCl7ZS5hZGROb3RpZnlNZXNzYWdlKHQpfSl9KHIpLHJ9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPXRoaXMuZ2V0VGFncygpWzBdLnRhcmdldElkO0ZhKGUsdCxuKX1mdW5jdGlvbiBjKGUpe2lmKCFlfHwhZS5pc01lZGlhdGVkKXt2YXIgdD1EZShlKTtKKHdpbmRvdy5kb2N1bWVudC5ib2R5LHRbamFdLHRbVmFdKX19fSgpLGphPWcuYS5OT1RJRlksVmE9Zy5hLkNSRUFUSVZFX0lELEhhPVwibG9hZGluZ1wiLFhhPVwibG9hZGVkXCI7dmFyIEphPWZ1bmN0aW9uKGUpe2lmKGUpe2lmKGUubWVtYmVyJiYoYXBudGFnLnJlcXVlc3RzLm1lbWJlcj1OdW1iZXIoZS5tZW1iZXIpKSxlLnRhcmdldGluZ1BhcmFtcyYmKGFwbnRhZy5yZXF1ZXN0cy50YXJnZXRpbmdQYXJhbXM9ZS50YXJnZXRpbmdQYXJhbXMseihcInRhcmdldGluZ1BhcmFtcyB3aWxsIGJlIGRlcHJlY2F0ZWQgc29vbi4gUGxlYXNlIHVzZSBrZXl3b3JkcyBpbnN0ZWFkXCIpKSxlLmtleXdvcmRzJiYoYXBudGFnLnJlcXVlc3RzLmtleXdvcmRzPWUua2V5d29yZHMpLGUudXNlciYmKGFwbnRhZy5yZXF1ZXN0cy51c2VyPWUudXNlciksZS5hcHAmJihhcG50YWcucmVxdWVzdHMuYXBwPWUuYXBwKSxlLmRldmljZSYmKGFwbnRhZy5yZXF1ZXN0cy5kZXZpY2U9ZS5kZXZpY2UpLGUuZ2VvT3ZlcnJpZGUpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuY291bnRyeUNvZGU7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJjI9PT10Lmxlbmd0aCl7dmFyIG49ZS56aXA7aWYoIShcInN0cmluZ1wiIT10eXBlb2Ygbnx8bi5sZW5ndGg8MSkpcmV0dXJue2NvdW50cnlDb2RlOnQudG9VcHBlckNhc2UoKSx6aXA6bn07eihcIklnbm9yaW5nIGdlb092ZXJpZGUgb3B0aW9ucywgSW52YWxpZCB6aXAgY29kZSwgaXQgc2hvdWxkIGJlIG9mIHR5cGUgU3RyaW5nIGFuZCBvZiBhdGxlYXN0IDEgY2hhcmFjdGVyLlwiKX1lbHNlIHooXCJJZ25vcmluZyBnZW9PdmVyaWRlIG9wdGlvbnMsIEludmFsaWQgY291bnRyeSBjb2RlLCBpdCBzaG91bGQgYmUgb2YgdHlwZSBTdHJpbmcgYW5kIG9mIDIgY2hhcmFjdGVycy5cIil9KGUuZ2VvT3ZlcnJpZGUpO3QmJihhcG50YWcucmVxdWVzdHMuZ2VvT3ZlcnJpZGU9dCl9ZS5zaXRlJiYoYXBudGFnLnJlcXVlc3RzLnNpdGU9ZS5zaXRlKSxlLmRpc2FibGVQc2EmJihhcG50YWcucmVxdWVzdHMuZGlzYWJsZVBzYT0hMCksYXBudGFnLnJlcXVlc3RzLmVuYWJsZVNhZmVGcmFtZT0hMSxlLmVuYWJsZVNhZmVGcmFtZSYmKHVhKCksYXBudGFnLnJlcXVlc3RzLmVuYWJsZVNhZmVGcmFtZT0hMCksZS5wdWJsaXNoZXJJZCYmKGFwbnRhZy5yZXF1ZXN0cy5wdWJsaXNoZXJJZD1lLnB1Ymxpc2hlcklkKSxlLmNvbnNlbnRNYW5hZ2VtZW50JiYoYXBudGFnLnJlcXVlc3RzLmNvbnNlbnRNYW5hZ2VtZW50PWUuY29uc2VudE1hbmFnZW1lbnQpLGUuYXVjdGlvblRpbWVvdXQmJihhcG50YWcucmVxdWVzdHMuYXVjdGlvblRpbWVvdXQ9ZS5hdWN0aW9uVGltZW91dCksZS5lbmFibGVNZWRpYXRpb25FdmVudHMmJihhcG50YWcucmVxdWVzdHMuZW5hYmxlTWVkaWF0aW9uRXZlbnRzPSEwKSxlLnVzX3ByaXZhY3kmJihPKGUudXNfcHJpdmFjeSk/YXBudGFnLnJlcXVlc3RzLnVzX3ByaXZhY3k9ZS51c19wcml2YWN5OnooXCJJZ25vcmluZyB1c19wcml2YWN5LCBpdCBzaG91bGQgYmUgYSBzdHJpbmdcIikpfX0sR2E9dm9pZCAwLFlhPWZ1bmN0aW9uKGUpe2lmKCFmdW5jdGlvbihlKXtpZihNKGUpJiZlLmxlbmd0aD4wKXJldHVybiEwO3JldHVybiBWKFwiTm8gc2l6ZSBtYXBwaW5nIGRlZmluZWRcIiksITF9KGUuc2l6ZU1hcHBpbmcpKXJldHVybiBlLnNpemVzO3ZhciB0LG4sYSxyPShuPXR8fEdhfHxpZSgpLGE9bi5kb2N1bWVudCxuLmlubmVyV2lkdGg/bi5pbm5lcldpZHRoOmEuYm9keS5jbGllbnRXaWR0aD9hLmJvZHkuY2xpZW50V2lkdGg6YS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg/YS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg6MCksaT12b2lkIDA7aWYoIXIpe2k9ZS5zaXplTWFwcGluZ1swXTtmb3IodmFyIG89MDtvPGUuc2l6ZU1hcHBpbmcubGVuZ3RoO28rKylwYXJzZUludChlLnNpemVNYXBwaW5nW29dLm1pbldpZHRoLDEwKT5wYXJzZUludChpLm1pbldpZHRoLDEwKSYmKGk9ZS5zaXplTWFwcGluZ1tvXSk7cmV0dXJuIGkuc2l6ZXM/aS5zaXplczplLnNpemVzfWZvcih2YXIgcz1cIlwiLGQ9ZS5zaXplTWFwcGluZy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5taW5XaWR0aC10Lm1pbldpZHRofSksdT0wO3U8ZC5sZW5ndGg7dSsrKXI+PWRbdV0ubWluV2lkdGgmJihpPWRbdV0pO3JldHVybiBpJiZpLnNpemVzPyhzPWkuc2l6ZXMsTChcInRhZyA6IFwiK2UudGFyZ2V0SWQrXCIgcmVzaXplZCBiYXNlZCBvbiBkZXZpY2Ugd2lkdGggdG8gOiBcIitzKSk6TChcInRhZyA6IFwiK2UudGFyZ2V0SWQrXCIgbm90IG1hcHBlZCB0byBhbnkgc2l6ZXMgZm9yIGRldmljZSB3aWR0aC4gVGhpcyByZXF1ZXN0IHdpbGwgYmUgc3VwcHJlc3NlZC5cIiksc307dmFyIEthPWcubC5VTkRFRklORUQ7ZnVuY3Rpb24gJGEoZSx0KXt2YXIgbj0hMSxhPWU7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGg/KGE9Y2EuYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0sZS5zaXplcyYmYS5zaXplTWFwcGluZz9uPSEwOmUuc2l6ZU1hcHBpbmcmJiFhLnNpemVNYXBwaW5nJiYobj0hMCkpOih0PWUudGFyZ2V0SWQsZS5zaXplcyYmZS5zaXplTWFwcGluZyYmKG49ITApKSxuKXJldHVybiBXKFwic2l6ZXMgYW5kIHNpemVNYXBwaW5nIGJvdGggY2Fubm90IGJlIGRlZmluZWQgZm9yIHRhcmdldElkOiBcIit0KSwhMTtpZihlLnNpemVNYXBwaW5nKXt2YXIgcj1ZYShlKTtpZihcIlwiPT09cilyZXR1cm5cIlwiO2Uuc2l6ZXM9cn1yZXR1cm4hMH12YXIgUWE9ZnVuY3Rpb24oZSl7aWYoZS5yaWQmJihhcG50YWcucmVxdWVzdHMua2V5d29yZHMucmlkPWUucmlkKSxlLnByb3ZpZGVyX2lkJiYoYXBudGFnLnJlcXVlc3RzLmtleXdvcmRzLnByb3ZpZGVyX2lkPWUucHJvdmlkZXJfaWQpLGUuZGVidWcmJihhcG50YWcuZGVidWc9ZS5kZWJ1ZyksZS5hc3RUb29sa2l0JiZlLmFzdERvbmdsZSYmKGFwbnRhZy5yZXF1ZXN0cy50b29sa2l0PXtlbmFibGVkOiEwLGRvbmdsZTplLmFzdERvbmdsZX0pLGUuc2l6ZSlXKFwiU2l6ZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHNpemVzIGluc3RlYWQuXCIpO2Vsc2UgaWYoZS5tZW1iZXI/ZS5tZW1iZXI9TnVtYmVyKGUubWVtYmVyKTplLm1lbWJlcj1hcG50YWcucmVxdWVzdHMubWVtYmVyLGUubWVtYmVyfHwoZS5tZW1iZXI9XCJub25lXCIpLGUudGFnSWR8fGUuaW52Q29kZSYmZS5tZW1iZXIpe2lmKGUuc2l6ZU1hcHBpbmcpaWYoISRhKGUpKXJldHVybiB2b2lkIFcoXCJ0YWcgbm90IG1hcHBlZCB0byBhbnkgc2l6ZXMgZm9yIGRldmljZSB3aWR0aDogXCIrZS50YXJnZXRJZCk7dHJ5e3ZhciB0PWUudGFyZ2V0SWQsbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUubWVtYmVyO3JldHVybiBhcG50YWcucmVxdWVzdHM9YXBudGFnLnJlcXVlc3RzfHx7fSxhcG50YWcucmVxdWVzdHMudGFncz1hcG50YWcucmVxdWVzdHMudGFnc3x8e30sYXBudGFnLnJlcXVlc3RzLnV0Q2FsbGVkPWFwbnRhZy5yZXF1ZXN0cy51dENhbGxlZHx8ITEsYXBudGFnLnJlcXVlc3RzLmhhc0xlZnQ9YXBudGFnLnJlcXVlc3RzLmhhc0xlZnR8fCExLGFwbnRhZy5yZXF1ZXN0cy5jYkNhbGxlZD1hcG50YWcucmVxdWVzdHMuY2JDYWxsZWR8fCExLGFwbnRhZy5yZXF1ZXN0cy5lbmFibGVTYWZlRnJhbWUmJihlLmVuYWJsZVNhZmVGcmFtZT0hMCksZS5zYWZlZnJhbWU9c2UoZGEpfHx7fSx0ZShlLFwic2FmZWZyYW1lQ29uZmlnXCIpJiYodGUoZS5zYWZlZnJhbWVDb25maWcsXCJhbGxvd0V4cGFuc2lvbkJ5UHVzaFwiKSYmKGUuc2FmZWZyYW1lLmV4cGFuc2lvbkJ5UHVzaD1lLnNhZmVmcmFtZUNvbmZpZy5hbGxvd0V4cGFuc2lvbkJ5UHVzaCksdGUoZS5zYWZlZnJhbWVDb25maWcsXCJhbGxvd0V4cGFuc2lvbkJ5T3ZlcmxheVwiKSYmKGUuc2FmZWZyYW1lLmV4cGFuc2lvbkJ5T3ZlcmxheT1lLnNhZmVmcmFtZUNvbmZpZy5hbGxvd0V4cGFuc2lvbkJ5T3ZlcmxheSksdGUoZS5zYWZlZnJhbWVDb25maWcsXCJzYW5kYm94XCIpJiYoZS5zYWZlZnJhbWUuc2FuZGJveD1lLnNhZmVmcmFtZUNvbmZpZy5zYW5kYm94KSx0ZShlLnNhZmVmcmFtZUNvbmZpZyxcIm1ldGFcIikmJihlLnNhZmVmcmFtZS5tZXRhPWUuc2FmZWZyYW1lQ29uZmlnLm1ldGEpKSxhcG50YWcucmVxdWVzdHMudGFnc1t0XT1lLGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnV0Q2FsbGVkPWFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnV0Q2FsbGVkfHwhMSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5zaG93VGFnQ2FsbGVkPWFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnNob3dUYWdDYWxsZWR8fCExLGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLmRpc3BsYXllZD1hcG50YWcucmVxdWVzdHMudGFnc1t0XS5kaXNwbGF5ZWR8fCExLGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLmluaXRpYWxIZWlnaHQ9MSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5pbml0aWFsV2lkdGg9MSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5vbj1hcG50YWcub25FdmVudHx8dm9pZCAwLGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLm9mZj1hcG50YWcub2ZmRXZlbnR8fHZvaWQgMCxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5zZXRTaXplcz1hcG50YWcuc2V0U2l6ZXN8fHZvaWQgMCxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5tb2RpZnlUYWc9YXBudGFnLm1vZGlmeVRhZ3x8dm9pZCAwLGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnJlZnJlc2g9ZnVuY3Rpb24oKXtyZXR1cm4gYXBudGFnLnJlZnJlc2godGhpcy50YXJnZXRJZCl9LGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnNldEtleXdvcmRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFwbnRhZy5zZXRLZXl3b3Jkcyh0aGlzLnRhcmdldElkLGUsdCl9LGlhW25dPXR5cGVvZiBpYVtuXT09PUthP1tdOmlhW25dLGlhW25dLnB1c2goZS50YXJnZXRJZCksdmEoKVtlLnRhcmdldElkXSYmKGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnNob3dUYWdDYWxsZWQ9ITApLGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdfShlLHQpO3JldHVybiBMKFwiZGVmaW5lVGFnIGNhbGxlZCBmb3I6IFwiK3QpLGFwbnRhZy5yZXF1ZXN0cyYmITA9PT1hcG50YWcucmVxdWVzdHMudXRDYWxsZWQmJiFhcG50YWcucmVxdWVzdHMudGFnc1t0XS51dENhbGxlZCYmTChcIkEgcGxhY2VtZW50IHdhcyBsb2FkZWQgYWZ0ZXIgdXQgY2FsbCB3YXMgc3RhcnRlZC4gVGhlc2UgYWQgY2FsbHMgd2lsbCBub3QgYmUgY29vcmRpbmF0ZWRcIiksbn1jYXRjaChlKXtXKFwiYnVpbGRBZFRhZ0NvbnRhaW5lcjogXCIrZS5tZXNzYWdlKX19ZWxzZSBXKFwidGFnSWQgb3IgKGludkNvZGUgJiBtZW1iZXJJZCkgc2hvdWxkIGJlIGRlZmluZWQgZm9yIHRhcmdldElkOiBcIitlLnRhcmdldElkKX0sWmE9ZnVuY3Rpb24oZSl7ZT1lLnJlcGxhY2UoLyhcXG4pL2csXCI8YnI+XCIpLGU9bnIoKStlO3ZhciB0PWRvY3VtZW50LmJvZHksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO24uaWQ9XCJhcHBuZXh1c19kZWJ1Z193aW5kb3dcIjt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2Euc3R5bGUud2lkdGg9XCIxMDAlXCIsYS5zdHlsZS5oZWlnaHQ9XCI0MDBweFwiLGEuc3R5bGUuY2xlYXI9XCJib3RoXCIsdC5pbnNlcnRCZWZvcmUoYSxudWxsKTt2YXIgcj1uLnN0eWxlO3IucG9zaXRpb249XCJmaXhlZFwiLHIuYm90dG9tPVwiMHB4XCIsci5sZWZ0PVwiMHB4XCIsci53aWR0aD1cIjEwMCVcIixyLmhlaWdodD1cIjQ1MHB4XCIsci5vdmVyZmxvdz1cImhpZGRlblwiLHJbXCJib3JkZXItdG9wXCJdPVwiMXB4IHNvbGlkXCIscltcInotaW5kZXhcIl09OTk5OTk5LHIuYmFja2dyb3VuZD1cIndoaXRlXCIsdC5pbnNlcnRCZWZvcmUobixudWxsKTt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2kuc3R5bGUud2lkdGg9XCIxMDAlXCIsaS5zdHlsZS5oZWlnaHQ9XCIzMHB4XCI7dmFyIG89dHIoKTtuLmFwcGVuZENoaWxkKG8pO3ZhciBzPW8uY29udGVudFdpbmRvdy5kb2N1bWVudDtvLm9ubG9hZD1mdW5jdGlvbigpe2Zvcih2YXIgZT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYnJcIiksdD1lLmxlbmd0aCxuPTAsYT12b2lkIDA7bjx0LTE7bisrKVwiYnJcIj09PSgoYT1lW25dLm5leHRTaWJsaW5nKSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSYmKGEuc3R5bGUuZGlzcGxheT1cIm5vbmVcIil9O3Mub3BlbigpLHMud3JpdGUoZSkscy53cml0ZShcIjxcXC9zY3JpcHQ+XCIpLHMuY2xvc2UoKX0sZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bnIoKStlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4nXFxuICAgICAgPHRhYmxlIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgYmxhY2s7IGJvcmRlci1yYWRpdXM6IDVweDsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IG1hcmdpbjogMWVtOyBwYWRkaW5nOiAuNWVtXCI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZCBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDVlbTtcIj48Yj5UYXJnZXQmbmJzcDtJRDwvYj48L3RkPlxcbiAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj4nK2FyKGUpK1wiPC90ZD5cXG4gICAgICAgIDwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5DcmVhdGl2ZSBJRDwvYj48L3RkPlxcbiAgICAgICAgICA8dGQ+XCIraXIoZSxcImNyZWF0aXZlX2lkXCIpK1wiPC90ZD5cXG4gICAgICAgIDwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5CdXllciBNZW1iZXIgSUQ8L2I+PC90ZD5cXG4gICAgICAgICAgPHRkPlwiK2lyKGUsXCJidXllcl9tZW1iZXJfaWRcIikrXCI8L3RkPjwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5DcmVhdGl2ZSBTaXplPC9iPjwvdGQ+XFxuICAgICAgICAgIDx0ZD5cIitmdW5jdGlvbihlKXtpZihlLm5vYmlkKXJldHVybiBycjt2YXIgdD1udWxsLG49bnVsbCxhPWUuYWRzJiZlLmFkcy5sZW5ndGg/ZS5hZHNbMF06e307cmV0dXJuIGEucnRiJiZhLnJ0Yi5iYW5uZXImJih0PWEucnRiLmJhbm5lci5oZWlnaHQsbj1hLnJ0Yi5iYW5uZXIud2lkdGgpLHQmJm4/bitcIiB4IFwiK3Q6XCJcIn0oZSkrXCI8L3RkPlxcbiAgICAgICAgPC90cj5cXG4gICAgICAgIDx0cj5cXG4gICAgICAgICAgPHRkPjxiPkF2YWlsYWJsZSBTaXplczwvYj48L3RkPlxcbiAgICAgICAgICA8dGQ+XCIrZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PWFyKGUpLG49YXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0uc2l6ZXM7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG4pfWNhdGNoKGUpe3JldHVyblwiXCJ9fShlKStcIjwvdGQ+PC90cj5cXG4gICAgICAgIDx0cj5cXG4gICAgICAgICAgPHRkPjxiPldpbm5pbmcgQmlkPC9iPjwvdGQ+XFxuICAgICAgICAgIDx0ZD5cIitpcihlLFwiY3BtXCIpK1wiPC90ZD48L3RyPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQ+PGI+RGVtYW5kIFNvdXJjZTwvYj48L3RkPlxcbiAgICAgICAgICA8dGQ+XCIrZnVuY3Rpb24oZSl7aWYoZS5ub2JpZClyZXR1cm4gcnI7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXBudGFnLnJlcXVlc3RzLnRhZ3M7aWYoZS5hZHMubGVuZ3RoJiZlLmFkc1swXS5zZWxsZXJfbWVtYmVyX2lkKXJldHVybiBlLmFkc1swXS5zZWxsZXJfbWVtYmVyX2lkO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJnRbbl0udXVpZD09PWUudXVpZClyZXR1cm4gdFtuXS5tZW1iZXI7cmV0dXJuIG51bGx9KGUpO3JldHVybiBlLmFkc1swXS5jc20/XCJDU01cIjplLmFkc1swXS5idXllcl9tZW1iZXJfaWQ9PT10fHxlLmFkc1swXS5kZWFsX2lkP2UuYWRzWzBdLmJ1eWVyX21lbWJlcl9pZCE9PXQmJmUuYWRzWzBdLmRlYWxfaWQ/XCJEZWFsXCI6ZS5hZHNbMF0uYnV5ZXJfbWVtYmVyX2lkPT09dD9cIkRpcmVjdFwiOlwiXCI6XCJSVEJcIn0oZSkrXCI8L3RkPjwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5BZCBUeXBlPC9iPjwvdGQ+XFxuICAgICAgICAgIDx0ZD5cIitpcihlLFwiYWRfdHlwZVwiKStcIjwvdGQ+PC90cj5cXG4gICAgICAgIDx0cj5cXG4gICAgICAgICAgPHRkPjxiPk1lZGlhIFR5cGU8L2I+PC90ZD5cXG4gICAgICAgICAgPHRkPlwiK2lyKGUsXCJtZWRpYV90eXBlX2lkXCIpKyc8L3RkPjwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZCBzdHlsZT1cImNvbG9yOiAjNTU1OyBmb250LXNpemU6IHNtYWxsZXI7IHBhZGRpbmctdG9wOiAuNWVtO1wiIGNvbHNwYW49XCIyXCI+XFxuICAgICAgICAgICAgQ29uc29sZSBBZCBQcm9maWxlOlxcbiAgICAgICAgICAgIDxhIGhyZWY9XCInK2Z1bmN0aW9uKGUpe3JldHVyblwiLy9jb25zb2xlLmFwcG5leHVzLmNvbS9hZC1xdWFsaXR5P2lkPVwiK2UucGxhY2VtZW50LnB1Ymxpc2hlci5pZH0oZSkrJ1wiIHRhcmdldD1cIl9ibGFua1wiPicrZS5hZF9wcm9maWxlX2lkK1wiPC9hPlxcbiAgICAgICAgICAgIFwiK2Z1bmN0aW9uKGUpe3JldHVybiBlLmFkcz8nfCA8YSBocmVmPVwiLy9pYi5hZG54cy5jb20vY3I/aWQ9JytlLmFkc1swXS5jcmVhdGl2ZV9pZCsnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q3JlYXRpdmUgUHJldmlldzxhLz4nOlwiXCJ9KGUpK1wiXFxuICAgICAgICAgIDwvdGQ+XFxuICAgICAgICA8L3RyPlxcbiAgICAgIDwvdGFibGU+XFxuICAgIFwifSkuam9pbihcIiBcIiksbj1kb2N1bWVudC5ib2R5LGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTthLmlkPVwiYXBwbmV4dXNfZGVidWdfd2luZG93XCI7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyLnN0eWxlLndpZHRoPVwiMTAwJVwiLHIuc3R5bGUuaGVpZ2h0PVwiNDAwcHhcIixyLnN0eWxlLmNsZWFyPVwiYm90aFwiLG4uaW5zZXJ0QmVmb3JlKHIsbnVsbCk7dmFyIGk9YS5zdHlsZTtpLnBvc2l0aW9uPVwiZml4ZWRcIixpLmJvdHRvbT1cIjBweFwiLGkubGVmdD1cIjBweFwiLGkud2lkdGg9XCIxMDAlXCIsaS5oZWlnaHQ9XCI0NTBweFwiLGkub3ZlcmZsb3c9XCJoaWRkZW5cIixpW1wiYm9yZGVyLXRvcFwiXT1cIjFweCBzb2xpZFwiLGlbXCJ6LWluZGV4XCJdPTk5OTk5OSxpLmJhY2tncm91bmQ9XCJ3aGl0ZVwiLG4uaW5zZXJ0QmVmb3JlKGEsbnVsbCk7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtvLnN0eWxlLndpZHRoPVwiMTAwJVwiLG8uc3R5bGUuaGVpZ2h0PVwiMzBweFwiO3ZhciBzPXRyKCk7YS5hcHBlbmRDaGlsZChzKTt2YXIgZD1zLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7ZC5vcGVuKCksZC53cml0ZSh0KSxkLmNsb3NlKCl9O2Z1bmN0aW9uIHRyKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtyZXR1cm4gZS5pZD1cImFwcG5leHVzLWRlYnVnLWNvbnNvbGUtbG9hZGVyXCIsZS5oZWlnaHQ9XCIxMDAlXCIsZS53aWR0aD1cIjEwMCVcIixlLmJvcmRlcj1cIjBweFwiLGUuaHNwYWNlPVwiMFwiLGUudnNwYWNlPVwiMFwiLGUubWFyZ2luV2lkdGg9XCIwXCIsZS5tYXJnaW5IZWlnaHQ9XCIwXCIsZS5zdHlsZS5ib3JkZXI9XCIwXCIsZS5mcmFtZUJvcmRlcj1cIjBcIixlfWZ1bmN0aW9uIG5yKCl7dmFyIGU9dm9pZCAwO3JldHVybiBKZSYmKGU9SmUuZ2V0SXRlbShcImFzdF9kb25nbGVcIikpLCc8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206MTBweDtcIj48c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OmJvbGRcIj5BU1QgRG9uZ2xlIFZhbHVlOjwvc3Bhbj4gPGlucHV0XFxuICAgICAgICAgICAgaWQ9XCJhc3QtZG9uZ2xlLWlucHV0XCJcXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXFxuICAgICAgICAgICAgbGVuZ3RoPVwiNDAwXCJcXG4gICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6NXB4O1wiXFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhc3RfZG9uZ2xlIHZhbHVlXCJcXG4gICAgICAgICAgICBvbmtleXVwPWlmKCcrSmUrXCIpe1wiK0plK1wiLnNldEl0ZW0oJ2FzdF9kb25nbGUnLGV2ZW50LnRhcmdldC52YWx1ZSl9O1xcbiAgICAgICAgICAgIHZhbHVlPVwiK2UrXCJcXG4gICAgICAgICAvPjwvZGl2PlwifWZ1bmN0aW9uIGFyKGUpe3RyeXtyZXR1cm4gT2JqZWN0LmtleXMoYXBudGFnLnJlcXVlc3RzLnRhZ3MpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0udXVpZD09PWUudXVpZH0pWzBdfWNhdGNoKGUpe3JldHVyblwiXCJ9fXZhciBycj0nPHNwYW4gc3R5bGU9XCJjb2xvcjogI2NjY1wiPm5vYmlkPC9zcGFuPic7ZnVuY3Rpb24gaXIoZSx0KXtpZihlLm5vYmlkKXJldHVybiBycjt2YXIgbj1lLmFkcyYmZS5hZHNbMF1bdF07cmV0dXJuIG58fDA9PT1uP246XCJcIn12YXIgb3I9ZnVuY3Rpb24oKXt2YXIgZT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuKC8od2Via2l0KVsgXFwvXShbXFx3Ll0rKS8uZXhlYyhlKXx8LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXFwvXShbXFx3Ll0rKS8uZXhlYyhlKXx8Lyhtc2llKSAoW1xcdy5dKykvLmV4ZWMoZSl8fGUuaW5kZXhPZihcImNvbXBhdGlibGVcIik8MCYmLyhtb3ppbGxhKSg/Oi4qPyBydjooW1xcdy5dKyl8KS8uZXhlYyhlKXx8W10pWzFdfSxzcj1nLmIuQkFOTkVSLGRyPWcuYi5OQVRJVkUsdXI9Zy5xLkFEX1RZUEUsY3I9Zy5iLlZJREVPLGxyPWcucS5CQU5ORVIsZnI9Zy5xLkNPTlRFTlQscHI9Zy5hLkNSRUFUSVZFX0lELGdyPWcuaCxtcj1nLmEuSU1QX1VSTFMsdnI9Zy5hLk5PQUQsaHI9Zy5sLk9CSkVDVCx5cj1nLmQuUlRCLGJyPWcuYS5UUkFDS0VSUyx3cj1nLmwuVU5ERUZJTkVELElyPWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciByPXZvaWQgMCxpPXZvaWQgMCxvPXZvaWQgMCxzPWUuYWRSZXNwb25zZTshZnVuY3Rpb24oZSl7aWYoZS5hZFJlc3BvbnNlJiZlLmFkUmVzcG9uc2UuYWRzKXt2YXIgdD1vZShlLmFkUmVzcG9uc2UuYWRzKTtpZih0LmJhbm5lcil7dmFyIG49ZS5pbml0Q29sbGFwc2VkLGE9biYmbi5leHBhbmRCeSYmbGUoZ3IpLmluZGV4T2Yobi5leHBhbmRCeSk+PTA7biYmIWEmJnooXCJUYWdJRCBcIitlLnRhZ0lkK1wiIGluaXRDb2xsYXBzZWQgaXMgc2V0IGJ1dCBleHBhbmRCeSBpcyBub3QgcmVjb2duaXplZCwgaW5pdGlhbCBzaXplIHdpbGwgbm90IGJlIGNvbGxhcHNlZFwiKSxlLmluaXRpYWxIZWlnaHQ9YT8wOnQuYmFubmVyLmhlaWdodCxlLmluaXRpYWxXaWR0aD1hPzA6dC5iYW5uZXIud2lkdGh9fX0oZSk7dmFyIGQsdT1EZShlKTtpZih0eXBlb2YgdT09PXdyfHxudWxsPT09dXx8dHlwZW9mIHUuZXJyb3IhPT13cilyZXR1cm4gZD1zLHZvaWQgSih3aW5kb3cuZG9jdW1lbnQuYm9keSxkW3ZyXSxkLnV1aWQpO2lmKHMmJmUuc2hvd1RhZ0NhbGxlZCYmIWZ1bmN0aW9uKGUsdCl7aWYodC5yZW5kZXJlcl91cmwmJnQucmVuZGVyZXJfaWQpe2lmKGUudXNlc1JlbmRlcmVyPSEwLDI9PT10LnJlbmRlcmVyX2lkJiZlLmVuYWJsZVNhZmVGcmFtZSYmKGUuc2FmZWZyYW1lLmV4cGFuc2lvbkJ5UHVzaD0hMCxlLmN1c3RvbUlmcmFtZVByb3BzPXtzdHlsZTpcIm92ZXJmbG93OmhpZGRlblwiLGFsbG93OlwiYXV0b3BsYXlcIn0pLCFlLmVuYWJsZVNhZmVGcmFtZSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1xZSh0KTtpZih0eXBlb2Ygbj09PXdyKXJldHVybiB2b2lkIFcoXCJObyBDb250ZW50IFNvdXJjZSBGb3VuZFwiKTt0W3QuYWRfdHlwZV09bjtDZShlKSxXYS5sb2FkUmVuZGVyZXIoZSx0KX0oZSx0KSwhMDtXYS5sb2FkUmVuZGVyZXIoZSx0KX19KGUsdSkpe2lmKHVbdXJdPT09ZHImJiFlLnVzZXNSZW5kZXJlcilyZXR1cm4gTChcIlJlbmRlciBmb3IgdGhlIGZvbGxvd2luZyBhZCBzaG91bGQgYmUgaGFuZGxlZCBvdXRzaWRlIG9mIGFzdC5qcyA6XCIrZS50YXJnZXRJZCksZS5kaXNwbGF5ZWQ9ITAsbz1idChlLmFkUmVzcG9uc2UpLHllLmVtaXQoZy5nLkxPQURFRCxlLnRhcmdldElkLG8pLHZvaWQgaihcIlRoZSBcIitlLnRhcmdldElkK1wiIGFkIGlzIGxvYWRlZC5cIik7aWYodVt1cl0hPT1jcnx8ZS51c2VzUmVuZGVyZXIpe2lmKHVbdXJdPT09c3J8fGUudXNlc1JlbmRlcmVyKXtpZih1LmNvbnRlbnRfc291cmNlPT09eXImJiFlLnVzZXNSZW5kZXJlcil7dmFyIGM9dVt5cl1bbHJdO2lmKEIoYyl8fHR5cGVvZiBjIT09aHIpcmV0dXJuIHZvaWQgVyhcIlJlc3BvbnNlIGhhcyBubyBiYW5uZXIgb2JqZWN0XCIpO2lmKCF0ZShjLGZyKSlyZXR1cm4gdm9pZCBXKFwiUmVzcG9uc2UgaGFzIG5vIGJhbm5lciBjb250ZW50XCIpO2lmKCF0ZShjLFwid2lkdGhcIikpcmV0dXJuIHZvaWQgVyhcIlJlc3BvbnNlIGhhcyBubyBiYW5uZXIgd2lkdGhcIik7aWYoIXRlKGMsXCJoZWlnaHRcIikpcmV0dXJuIHZvaWQgVyhcIlJlc3BvbnNlIGhhcyBubyBiYW5uZXIgaGVpZ2h0XCIpfXZhciBsPXZvaWQgMDt0ZShuLGUudGFyZ2V0SWQpJiYobD1uW2UudGFyZ2V0SWRdKTt2YXIgZj12b2lkIDA7aWYoZS5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHxlLmVuYWJsZVNhZmVGcmFtZSl7YSgpO3ZhciBwPShmPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLnRhcmdldElkKSkuc3R5bGUuaGVpZ2h0LG09Zi5zdHlsZS53aWR0aDtmLnN0eWxlLmhlaWdodD1lLmluaXRpYWxIZWlnaHQsZi5zdHlsZS53aWR0aD1lLmluaXRpYWxXaWR0aCxmLnN0eWxlLmhlaWdodD1wLGYuc3R5bGUud2lkdGg9bX12YXIgdj1zZSh0KTt0ZShlLnNhZmVmcmFtZSxcImV4cGFuc2lvbkJ5UHVzaFwiKSYmKHYuZXhwYW5zaW9uQnlQdXNoPWUuc2FmZWZyYW1lLmV4cGFuc2lvbkJ5UHVzaCksdGUoZS5zYWZlZnJhbWUsXCJleHBhbnNpb25CeU92ZXJsYXlcIikmJih2LmV4cGFuc2lvbkJ5T3ZlcmxheT1lLnNhZmVmcmFtZS5leHBhbnNpb25CeU92ZXJsYXkpLHRlKGUuc2FmZWZyYW1lLFwic2FuZGJveFwiKSYmKHYuc2FuZGJveD1lLnNhZmVmcmFtZS5zYW5kYm94KSx0ZShlLnNhZmVmcmFtZSxcIm1ldGFcIikmJih2Lm1ldGE9ZS5zYWZlZnJhbWUubWV0YSksZS5zYWZlZnJhbWU9dixpPWZ1bmN0aW9uKGUpe3ZhciB0PXZvaWQgMCxuPXVlKGUpLGE9ZS5jdXJXaW5kb3d8fHdpbmRvdzt0PWEuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik/YS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuKTphLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIix0LmlkPW4sdH0oZSksKGUuYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8ZS5lbmFibGVTYWZlRnJhbWUpJiYoaS5zdHlsZS5oZWlnaHQ9ZS5pbml0aWFsSGVpZ2h0K1wicHhcIixpLnN0eWxlLndpZHRoPWUuaW5pdGlhbFdpZHRoK1wicHhcIixpLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiLGYuYXBwZW5kQ2hpbGQoaSksZS5nZW9tPWZ1bmN0aW9uKGUsdCl7TChcIkdlb20gc3RhcnRpbmdcIik7dmFyIG49TmEoZSx0KTtyZXR1cm4gMD09PXhhJiYoeGE9c2V0SW50ZXJ2YWwoQmEsMWUzKSksbn0oZS50YXJnZXRJZCxpKSkscj1jdChlLHUpO3ZhciBoPVR0LmdldEluc3RhbmNlKCkseT17fTtpZih5LmlmcmFtZT1yLHkub3JpZ2luYWxXaWR0aD1lLmluaXRpYWxXaWR0aCx5Lm9yaWdpbmFsSGVpZ2h0PWUuaW5pdGlhbEhlaWdodCxoLmFkZChlLnRhcmdldElkLHkpLG5bZS50YXJnZXRJZF09cix0eXBlb2YgbCE9PXdyJiZ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobC5pZCk/aS5yZXBsYWNlQ2hpbGQocixsKTppLmFwcGVuZENoaWxkKHIpLGUuZGlzcGxheWVkPSEwLHdpbmRvdy5kb2N1bWVudC5ib2R5KXRyeXshZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW9yKCkscj0oZS5jdXJXaW5kb3d8fHdpbmRvdykuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZS50YXJnZXRJZCk7aWYocil7ZS5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHxlLmVuYWJsZVNhZmVGcmFtZXx8KHIuYXBwZW5kQ2hpbGQodCksdC5zdHlsZS5kaXNwbGF5PVwiaW5saW5lXCIpLGUudXREaXZJZD10LmlkLGUudXRpZnJhbWVJZD1uLmlkLGE9PT1nLmMuSUV8fGE9PT1nLmMuT1BFUkE/bHQobixlKTpmdChuLGUpO3ZhciBpPWUuYWRSZXNwb25zZS5hZHM/ZS5hZFJlc3BvbnNlLmFkc1swXTplLmFkUmVzcG9uc2UuYWQ7aWYodm9pZCAwPT09aSlyZXR1cm4gdm9pZCB6KFwiTm8gYWQgZm91bmQgaW4gcmVzcG9uc2UsIG5vdGhpbmcgdG8gZGlzcGxheS5cIik7KCFlLmlzTWVkaWF0ZWQmJiFlLnVzZXNSZW5kZXJlcnx8ZS5hZFJlc3BvbnNlLmFkJiZcInJ0YlwiPT09ZS5hZFJlc3BvbnNlLmFkLmNvbnRlbnRfc291cmNlKSYmKCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lW3lyXVticl1bMF1bbXJdLGE9MDthPG4ubGVuZ3RoO2ErKylKKHQucGFyZW50RWxlbWVudCxuW2FdLGVbcHJdKX0oaSxuKSxMKFwiV2luIG5vdGlmaWNhdGlvbiBzZW50IGZvciBhZCB0YWc6IFwiK2UudGFyZ2V0SWQpKTt2YXIgbz1xZShpKSxzPU51bWJlcihyLnN0eWxlLndpZHRoLnJlcGxhY2UoL1teXFxkXFwuXFwtXS9nLFwiXCIpKTshaXNOYU4ocykmJnM+by53aWR0aCYmKFwiY2VudGVyXCI9PT1lLnByb21vQWxpZ25tZW50P3Iuc2V0QXR0cmlidXRlKFwiYWxpZ25cIixcImNlbnRlclwiKTpyLnNldEF0dHJpYnV0ZShcImFsaWduXCIsXCJsZWZ0XCIpKSxMKFwiVGhlIFwiK2UudGFyZ2V0SWQrXCIgYWQgaXMgbG9hZGVkLlwiKSxqKFwiVGhlIFwiK2UudGFyZ2V0SWQrXCIgYWQgaXMgbG9hZGVkLlwiKTt2YXIgZD1idChlLmFkUmVzcG9uc2UpO2UudXNlc1JlbmRlcmVyfHxhcG50YWcucmVxdWVzdHMuZW5hYmxlTWVkaWF0aW9uRXZlbnRzJiZlLmlzTWVkaWF0ZWR8fHllLmVtaXQoZy5nLkxPQURFRCxlLnRhcmdldElkLGQpfWVsc2UgeihcIk5vIGRpdiBlbGVtZW50IGZvdW5kIGZvciBkaXNwbGF5IGFkLiBUaGlzIGFkIHdpbGwgbm90IHNob3cuIERpdiBpZDogXCIrZS50YXJnZXRJZCl9KGUsaSxyKX1jYXRjaChlKXtXKFwiRXJyb3IgcmVuZGVyaW5nIGFkOiBcIixlKX1lbHNlIFcoXCJFcnJvciByZW5kZXJpbmcgYWQ6IHdpbmRvdy5kb2N1bWVudC5ib2R5IGlzIHVuZGVmaW5lZFwiKX1lbHNlIFcoXCJFcnJvciByZW5kZXJpbmcgYWQ6IHVua25vd24gdHlwZVwiKTtyZXR1cm4gZS50YXJnZXRJZH16KFwiUmVzcG9uc2UgaGFzIG5vIHJlbmRlcmVyIGZvciB2aWRlb1wiKX19O3ZhciBfcj1nLmIuTkFUSVZFLEVyPWcuYi5CQU5ORVIsVHI9Zy5iLlZJREVPLGtyPWcubC5VTkRFRklORUQ7ZnVuY3Rpb24geHIoZSx0LG4pe0woXCJyZW5kZXJBZCBpcyBjYWxsZWRcIiksRyhhcG50YWcucmVxdWVzdHMudGFncyxmdW5jdGlvbihlKXtpZihlLnV1aWQ9PT10KXtlLmFkUmVzcG9uc2U9bjt0cnl7aWYobi5hZCYmbi5hZC5hZF90eXBlPT09RXIpe3ZhciBhPW4uYWQuY29udGVudF9zb3VyY2U7ZS5hZD17bWVkaWF0ZWRDb250ZW50Om4uYWRbYV0uYmFubmVyLmNvbnRlbnR9LGUuaW5pdGlhbEhlaWdodD1uLmFkW2FdLmJhbm5lci5oZWlnaHQsZS5pbml0aWFsV2lkdGg9bi5hZFthXS5iYW5uZXIud2lkdGh9fWNhdGNoKGUpe1coXCJFcnJvciB3aGlsZSBzZXR0aW5nIG1lZGlhdGVkIGNvbnRlbnQgZm9yIGJhbm5lciBpbiByZW5kZXJBZFwiK2UpfXZhciByPUlyKGUsZGEsbWEoKSx1YSk7cmEucHVzaChyKX19KX1mdW5jdGlvbiBTcihlLHQsbil7dmFyIGE9dm9pZCAwO2lmKGUudXVpZD09PXQudXVpZClpZighMD09PXQubm9iaWQpTChcIk5vIGJpZCBmb3IgdGFyZ2V0SWQ6XCIrZS50YXJnZXRJZCksYT1idCh0KSx5ZS5lbWl0KGcuZy5OT19CSUQsbixhKTtlbHNlIGlmKGUuYWRSZXNwb25zZT10LGUudXRDYWxsZWQ9ITAsYT1idCh0KSx5ZS5lbWl0KGcuZy5BVkFJTEFCTEUsbixhKSwhZS5wcmViaWQmJiFlLmRpc3BsYXllZCl7dmFyIHI9SXIoZSxkYSxtYSgpLHVhKTtyYS5wdXNoKHIpfX1mdW5jdGlvbiBBcihlLHQpe3ZhciBuPW51bGw7aWYoYXBudGFnLnJlcXVlc3RzLmNiQ2FsbGVkPSEwLHR5cGVvZiBlPT09a3J8fG51bGw9PT1lfHxlLmVycm9yKXt2YXIgYT1cIm1hbGZvcm1lZCByZXNwb25zZSBmcm9tIGFkIHNlcnZlclwiO2UmJmUuZXJyb3ImJihhPWUuZXJyb3IpLFcoXCJFcnJvciByZXNwb25zZSBmcm9tIGltcGJ1czogXCIrYSk7dmFyIHI9e307dHJ5e3I9SlNPTi5wYXJzZSh0KX1jYXRjaChlKXt9RyhhcG50YWcucmVxdWVzdHMudGFncyxmdW5jdGlvbihlLHQpe3ZhciBpPUl0KGEsdCx2b2lkIDAsMjAwKTtlJiYobj1idChlLmFkUmVzcG9uc2UpKSxHKHIudGFncyxmdW5jdGlvbihhKXthLnV1aWQ9PT1lLnV1aWQmJnllLmVtaXQoZy5nLkJBRF9SRVFVRVNULHQsaSxuKX0pfSl9ZWxzZSBlLmRlYnVnJiZlLmRlYnVnLmRlYnVnX2luZm8mJlphKGUuZGVidWcuZGVidWdfaW5mbyksZS50b29sa2l0JiZlLnRvb2xraXQuZW5hYmxlZCYmZXIoZS50YWdzKSxHKGUudGFncyxmdW5jdGlvbihlKXtpZihlLmVycm9yKUcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24odCl7aWYodC51dWlkPT09ZS51dWlkKXt2YXIgbj1cIlRoZXJlIHdhcyBhbiBleGNlcHRpb24gZnJvbSB0YXJnZXRJZDpcIit0LnRhcmdldElkK1wiIHRoaXMgdXN1YWxseSBtZWFucyB0aGVyZSBpcyBhIHNldHVwIGVycm9yIG9uIHRoZSB0YWcgKGludmFsaWQgSUQgZXRjKVwiO1cobixlLmVycm9yKTt2YXIgYT1JdChuLHQudGFyZ2V0SWQsdm9pZCAwLDIwMCk7eWUuZW1pdChnLmcuQkFEX1JFUVVFU1QsdC50YXJnZXRJZCxhKX19KTtlbHNle2lmKGUuYWRzJiZlLmFkcy5sZW5ndGgmJmUuYWRzWzBdLmFkX3R5cGU9PT1fcilpZighZnVuY3Rpb24oZSl7dmFyIHQ9e30sbj12b2lkIDA7RyhzYSxmdW5jdGlvbih0KXt0LnV1aWQ9PT1lLnV1aWQmJihuPXQpfSksbiYmKHQ9bi5uYXRpdmUpO3ZhciBhPVtdO0codCxmdW5jdGlvbihlLHQpeyEwPT09ZS5yZXF1aXJlZCYmYS5wdXNoKHQpfSk7dmFyIHI9YnQoZSksaT1bXTtHKHIubmF0aXZlLGZ1bmN0aW9uKGUsdCl7QihlKXx8aS5wdXNoKHQpfSk7dmFyIG89aS5sZW5ndGg+MDtyZXR1cm4gRyhhLGZ1bmN0aW9uKGUpe289byYmaS5pbmRleE9mKGUpPi0xfSksb30oZSkpcmV0dXJuIHZvaWQgVyhcInJlcXVpcmVkIG5hdGl2ZSBhc3NldHMgbWlzc2luZyBmcm9tIHJlc3BvbnNlXCIpO3ZhciB0PWUuYWRzLGE9U2UodCkscj1lLnJ0Yl92aWRlb19mYWxsYmFjaztHKGFwbnRhZy5yZXF1ZXN0cy50YWdzLGF8fHI/ZnVuY3Rpb24ocixpKXtpZihyLnV1aWQ9PT1lLnV1aWQpe3IudXRDYWxsZWQ9ITAsYT9yLmlzTWVkaWF0ZWQ9ITA6ci5pc1J0YlZpZGVvRmFsbGJhY2s9ITA7dmFyIG89QWUodCkscz1OZShhcG50YWcucmVxdWVzdHMudGFncyxlKTtpZihvPT09VHIpci5pc1ZpZGVvTWVkaWF0aW9uPSEwLG49YnQoZSkseWUuZW1pdChnLmcuQVZBSUxBQkxFLGksbiksUmUobyxlLHMseHIpO2Vsc2V7ci5pc0Jhbm5lck1lZGlhdGlvbj0hMDt2YXIgZD1PZShyLnRhcmdldElkLGUpO2UuYWQ9e2FkX3R5cGU6RXJ9LHIuYWQ9e21lZGlhdGVkQ29udGVudDpkfSxTcihyLGUsaSl9fX06ZnVuY3Rpb24odCxuKXtTcih0LGUsbil9KX19KSxhcG50YWcucmVxdWVzdHMuY2hlY2tEaXNwbGF5JiZtZSgpfXZhciBScj0xLE5yPXZvaWQgMCxEcj12b2lkIDAsQ3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LGE9dm9pZCAwO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9e3VzX3ByaXZhY3k6ZT9lLnVzcFN0cmluZzp2b2lkIDB9O0RyLnVzX3ByaXZhY3k9dC51c19wcml2YWN5fWZ1bmN0aW9uIGkoZSl7Y2xlYXJUaW1lb3V0KGEpLHIoKSxmZShvKGUpKX1mdW5jdGlvbiBvKGUpe2UmJnooZStcIiBSZXN1bWluZyByZXF1ZXN0IHdpdGhvdXQgQ0NQQSBVU1AgY29uc2VudCBpbmZvcm1hdGlvbi5cIiksbigpfWlmKChEcj1lKS5jb25zZW50TWFuYWdlbWVudCYmKERyLmNvbnNlbnRNYW5hZ2VtZW50LmRpc2FibGVkfHxEci5jb25zZW50TWFuYWdlbWVudC51c3AmJkRyLmNvbnNlbnRNYW5hZ2VtZW50LnVzcC5kaXNhYmxlZCkpcmV0dXJuIGZlKG8oKSk7dmFyIHM9MWU0O2lmKERyLmNvbnNlbnRNYW5hZ2VtZW50JiZQKERyLmNvbnNlbnRNYW5hZ2VtZW50LnRpbWVvdXQpJiYocz1Eci5jb25zZW50TWFuYWdlbWVudC50aW1lb3V0KSxOcilyZXR1cm4gcihOciksZmUobygpKTthPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpKFwiQ0NQQSBVU1AgQ01QIHdvcmtmbG93IGV4Y2VlZGVkIHRpbWVvdXQgdGhyZXNob2xkLlwiKX0scyksZnVuY3Rpb24oZSx0KXt2YXIgbj17fSxhPXZvaWQgMDt0cnl7YT13aW5kb3cuX191c3BhcGl8fHdpbmRvdy50b3AuX191c3BhcGl9Y2F0Y2goZSl7fWlmKHEoYSkpYShcImdldFVTUERhdGFcIixScixlKTtlbHNle2Zvcih2YXIgcj13aW5kb3csaT12b2lkIDA7IWk7KXt0cnl7ci5mcmFtZXMuX191c3BhcGlMb2NhdG9yJiYoaT1yKX1jYXRjaChlKXt9aWYocj09PXdpbmRvdy50b3ApYnJlYWs7cj1yLnBhcmVudH1pZighaSlyZXR1cm4gdChcIkNDUEEgVVNQIENNUCBub3QgZm91bmQuXCIpOyFmdW5jdGlvbih0KXtmdW5jdGlvbiBhKGUpe3ZhciB0PVwic3RyaW5nXCI9PXR5cGVvZiBlLmRhdGEmJmUuZGF0YS5pbmNsdWRlcyhcInVzcGFwaVJldHVyblwiKT9KU09OLnBhcnNlKGUuZGF0YSk6ZS5kYXRhO2lmKHQuX191c3BhcGlSZXR1cm4pe3ZhciBhPXQuX191c3BhcGlSZXR1cm47blthLmNhbGxJZF0oYS5yZXR1cm5WYWx1ZSxhLnN1Y2Nlc3MpLGRlbGV0ZSBuW2EuY2FsbElkXX19d2luZG93Ll9fdXNwYXBpPWZ1bmN0aW9uKGUsYSxyKXt2YXIgaT1cIlwiK01hdGgucmFuZG9tKCksbz17X191c3BhcGlDYWxsOntjb21tYW5kOmUsdmVyc2lvbjphLGNhbGxJZDppfX07bltpXT1yLHQucG9zdE1lc3NhZ2UobyxcIipcIil9LFIod2luZG93LFwibWVzc2FnZVwiLGEsITEpLHdpbmRvdy5fX3VzcGFwaShcImdldFVTUERhdGFcIixScixmdW5jdGlvbih0KXtOKHdpbmRvdyxcIm1lc3NhZ2VcIixhLCExKSxlKHQpfSl9KGkpfX0oZnVuY3Rpb24oZSl7XCJvYmplY3RcIiE9dHlwZW9mIGV8fFwic3RyaW5nXCIhPXR5cGVvZiBlLnVzcFN0cmluZ3x8XCJcIj09PWUudXNwU3RyaW5nP2koXCJDQ1BBIFVTUCBDTVAgcmV0dXJuZWQgdW5leHBlY3RlZCBjb25zZW50T2JqZWN0IGR1cmluZyBsb29rdXAgcHJvY2VzczsgcmV0dXJuZWQgdmFsdWUgd2FzIChcIitlK1wiKVwiKTooY2xlYXJUaW1lb3V0KGEpLHIoTnI9ZSksZmUobygpKSl9LGkpfTtmdW5jdGlvbiBxcihlLHQsbixhLHIpe0coaWFbdF0sZnVuY3Rpb24odCl7IWZ1bmN0aW9uKGUsdCxuLGEscil7MD09PW4mJihlPVwiRmFpbHVyZSB0byBjb250YWN0IGVuZHBvaW50LiBUaGlzIGNhbiBiZSBjYXVzZWQgYnkgaW52YWxpZCBDT1JTIGhlYWRlcnMgb3IgZmFpbHVyZSBvZiBzZXJ2ZXIgdG8gcmVzcG9uZC5cIik7dmFyIGk9YXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0sbz12b2lkIDA7aSYmKG89YnQoaS5hZFJlc3BvbnNlKSk7dmFyIHM9SXQoZSx0LHIsbik7eWUuZW1pdChhLHQscyxvKX0oZSx0LG4sYSxyKX0pfXZhciBPcj1mdW5jdGlvbihlLHQpe3ZhciBuPWNhLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudXJsKyhlLnVybC5pbmRleE9mKFwiP1wiKSsxP1wiJlwiOlwiP1wiKStcImNiPWFwbnRhZy5oYW5kbGVDYiZxPVwiK2VuY29kZVVSSShlLmRhdGEpfShlKSxyPUgobixhKTthcG50YWcucmVxdWVzdHMudXRDYWxsZWQ9ITAsci5vbmxvYWQ9ZnVuY3Rpb24oKXtMKFwiSlNPTlAgZmFsbGJhY2sgdXNlZCBpbnN0ZWFkIG9mIFBPU1QuXCIpfSxyLm9uZXJyb3I9ZnVuY3Rpb24obil7aWYoIWFwbnRhZy5yZXF1ZXN0cy5lcnJvclJlcG9ydGVkKXt2YXIgYT1cIlVua25vd24gc2NyaXB0IGVycm9yIGNvbnRhY3RpbmcgZW5kcG9pbnQgb3ZlciBKU09OUC4gRW5kcG9pbnQ6IFwiK2UudXJsO3FyKGEsdCxcIi0xXCIsZy5nLlJFUVVFU1RfRkFJTCxuKSxXKGEpfX0sci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24obil7aWYoIShcImxvYWRlZFwiIT09ci5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPT1yLnJlYWR5U3RhdGV8fGFwbnRhZy5yZXF1ZXN0cy5jYkNhbGxlZHx8YXBudGFnLnJlcXVlc3RzLmVycm9yUmVwb3J0ZWQpKXthcG50YWcucmVxdWVzdHMuZXJyb3JSZXBvcnRlZD0hMDt2YXIgYT1cIlVua25vd24gbmV0d29yayBlcnJvciBjb250YWN0aW5nIGVuZHBvaW50IG92ZXIgSlNPTlAuIEVuZHBvaW50OiBcIitlLnVybDtxcihhLHQsXCItMVwiLGcuZy5SRVFVRVNUX0ZBSUwsbiksVyhhKX19fSxNcj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGF0YSxhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPW51bGw7aWYoMjAwPT09YS5zdGF0dXMpdHJ5e2U9SlNPTi5wYXJzZShhLnJlc3BvbnNlVGV4dCksYXBudGFnLmhhbmRsZUNiKGUsbil9Y2F0Y2goZSl7VyhcImZhaWxlZCB0byBwYXJzZSBhZCByZXNwb25zZSBmcm9tIGltcGJ1czogXCIrZS5tZXNzYWdlKSxxcihlLm1lc3NhZ2UsdCxhLnN0YXR1cyxnLmcuUkVRVUVTVF9GQUlMLGUpfWVsc2UgVyhhLnN0YXR1cytcIiA6IFwiK2Euc3RhdHVzVGV4dCkscXIoYS5zdGF0dXNUZXh0LHQsYS5zdGF0dXMsZy5nLlJFUVVFU1RfRkFJTCl9LGEub25lcnJvcj1mdW5jdGlvbihuKXt2YXIgYT1uLnRhcmdldC5zdGF0dXM7cXIoXCJFcnJvciBjb250YWN0aW5nIGltcGJ1cyBlbmRwb2ludDogXCIrZS51cmwrXCIgaHR0cCByZXNwb25zZSBjb2RlOlwiK2EsdCxhLGcuZy5SRVFVRVNUX0ZBSUwpfSxhLm9wZW4oXCJQT1NUXCIsZS51cmwsITApLGEuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLFwidGV4dC9wbGFpblwiKSxhLndpdGhDcmVkZW50aWFscz0hbGE7dHJ5e2Euc2VuZChuKSxhcG50YWcucmVxdWVzdHMudXRDYWxsZWQ9ITB9Y2F0Y2gobil7VyhcIkVycm9yIG1ha2luZyBQT1NUIHJlcXVlc3Q6IFwiK24pLE9yKGUsdCl9fSxQcj1mdW5jdGlvbihlKXt2YXIgdCxuPXt9LGE9KHQ9ITEsRyhhcG50YWcucmVxdWVzdHMudGFncyxmdW5jdGlvbihlKXtlLnByZWJpZCYmKHQ9ITApfSksdD9wYStnLmYuVVRfUFJFQklEOnBhK2cuZi5VVF9CQVNFKTtyZXR1cm4gbi51cmw9YSxuLmRhdGE9SlNPTi5zdHJpbmdpZnkoZSksbn0sQnI9ZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oZSl7RyhhcG50YWcucmVxdWVzdHMudGFncyxmdW5jdGlvbihlKXtlLnV0Q2FsbGVkfHx5ZS5lbWl0KGcuZy5SRVFVRVNULGUudGFyZ2V0SWQpfSksaihcIkFkIGlzIHJlcXVlc3RlZCBmb3IgbWVtYmVyIFwiK2UpfShlKTt2YXIgbj1pdChhcG50YWcucmVxdWVzdHMsZSxzYSx0KTtuPWZ1bmN0aW9uKGUpe2lmKGllKCkuY29udGV4dCYmXCJBTVAtQURcIj09PWllKCkuY29udGV4dC50YWdOYW1lKXtlLmlzX2FtcD0hMDt2YXIgdD1pZSgpLmNvbnRleHQuY29uc2VudFNoYXJlZERhdGE7aWYodCl7dmFyIG49e2NvbnNlbnRfc3RyaW5nOnQuY29uc2VudFN0cmluZyxjb25zZW50X3JlcXVpcmVkOnQuY29uc2VudFJlcXVpcmVkfTtlLmdkcHJfY29uc2VudD1ufX1yZXR1cm4gZX0obik7dmFyIGE9UHIobik7QihuLnRhZ3MpP3ooXCJhc3QubG9hZFRhZ3NCeU1lbWJlcklkOiBubyBkZWZpbmVkIHRhZ3MgYXQgdGhpcyBwb2ludCBzbyBubyAvVVQgcmVxdWVzdCB3aWxsIGJlIG1hZGVcIik6XCJ3aXRoQ3JlZGVudGlhbHNcImluIG5ldyBYTUxIdHRwUmVxdWVzdD9NcihhLGUpOk9yKGEsZSl9LFVyPWZ1bmN0aW9uKGUpe0coaWEsZnVuY3Rpb24odCxuKXtpZihcIm5vbmVcIj09PW4pQnIobixlKTtlbHNle3ZhciBhPU51bWJlcihuKTtpc05hTihhKT9XKFwiSW52YWxpZCB2YWx1ZSBmb3IgbWVtYmVyXCIpOkJyKGEsZSl9fSl9LEZyPWZ1bmN0aW9uKGUpe2U9ZXx8bmUoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0SWR9KSxNKGUpfHwoZT1bZV0pO3ZhciB0PSExLG49ITE7X2EoYXBudGFnLnJlcXVlc3RzLGZ1bmN0aW9uKCl7dD0hMCxuJiZVcihlKX0pLENyKGFwbnRhZy5yZXF1ZXN0cyxmdW5jdGlvbigpe249ITAsdCYmVXIoZSl9KX07ZnVuY3Rpb24gTHIoZSl7aWYoTChcImdldFRhZyBjYWxsZWQgZm9yIHRhZyBcIitlKSxnZShlKSlyZXR1cm4gZSYmb2FbZV0/b2FbZV06dm9pZCAwO1coXCJ0aGUgXCIrZStcIiB0YWcgaXMgbm90IGRlZmluZWQuXCIsZy5qLldBUk4pfXZhciB6cj1mdW5jdGlvbihlKXthcG50YWcucmVxdWVzdHMudXRDYWxsZWQ9ITEsYXBudGFnLnJlcXVlc3RzLmhhc0xlZnQ9ITEsYXBudGFnLnJlcXVlc3RzLmNiQ2FsbGVkPSExLGFwbnRhZy5yZXF1ZXN0cy5lcnJvclJlcG9ydGVkPSExO3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiAwPT09ZS5sZW5ndGg/YXBudGFnLnJlcXVlc3RzLnRhZ3M6KEcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24obixhKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdPT09YSYmKHRbYV09bil9KSx0KX0oZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIE0oZSk/dD1lOk8oZSkmJnQucHVzaChlKSx0fShlKSk7Ryh0LGZ1bmN0aW9uKGUsdCl7RyhyYSxmdW5jdGlvbihlKXtpZih0PT09ZSl7dmFyIG49Y2EuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYoIW4pcmV0dXJuO2Zvcig7bi5oYXNDaGlsZE5vZGVzKCk7KW4ucmVtb3ZlQ2hpbGQobi5maXJzdENoaWxkKX19KX0pLEcodCxmdW5jdGlvbihlKXtlLnV0Q2FsbGVkPSExLGUuZGlzcGxheWVkPSExLGUuaXNNZWRpYXRlZD0hMSxlLmlzQmFubmVyTWVkaWF0aW9uPSExLGUuaXNWaWRlb01lZGlhdGlvbj0hMSxlLmFkPXt9fSk7dHJ5e0ZyKCl9Y2F0Y2goZSl7VyhcInJlZnJlc2hUYWdzIFwiK2UubWVzc2FnZSl9fTt2YXIgV3I9Zy5iLk5BVElWRSxqcj1nLmIuVklERU8sVnI9Zy5sLlVOREVGSU5FRCxIcj1nLmwuTlVNQkVSLFhyPWcuYS5OT0FEO1IoY2EsXCJtZXNzYWdlXCIsZnVuY3Rpb24oZSl7aWYoZS5vcmlnaW49PT1jZSgpJiZcInN0cmluZ1wiPT10eXBlb2YgZS5kYXRhKXtWKFwiRGF0YSBzZW50IGZyb20gY3JlYXRpdmVcIixlLmRhdGEpO3ZhciB0PXZvaWQgMDt0cnl7dD1KU09OLnBhcnNlKGUuZGF0YSl9Y2F0Y2godCl7cmV0dXJuIHZvaWQoXCJub2JpZFwiPT09ZS5kYXRhP0woXCJObyBiaWQgcmVzcG9uc2UgcmV0dXJuZWRcIik6VyhcIkludmFsaWQgZGF0YSBmcm9tIGNyZWF0aXZlOiBcIitlLmRhdGEpKX1pZih0ZSh0LFwiZXZlbnRUeXBlXCIpKVwiYWRFcnJvclwiPT09dC5ldmVudFR5cGUmJndpbmRvdy5hcG50YWcucmVjb3JkRXJyb3JFdmVudCh0LmV4Y2VwdGlvbix0LnRhcmdldElkKTtlbHNlIHN3aXRjaCh0Lm5hbWUpe2Nhc2VcImV4cGFuZFwiOlJhKHQpO2JyZWFrO2Nhc2VcImNvbGxhcHNlXCI6IWZ1bmN0aW9uKGUpe0woXCJDb2xsYXBzZSBpZnJhbWUgc3RhcnRlZCBieSBob3N0XCIpO3ZhciB0PWllKCkuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZy5tLlVUX0RJVitlLnRhcmdldElkKS5zdHlsZSxuPVR0LmdldEluc3RhbmNlKCkuZ2V0SWZyYW1lKGUudGFyZ2V0SWQpLGE9bi5pZnJhbWUuc3R5bGUscj1uLm9yaWdpbmFsV2lkdGgsaT1uLm9yaWdpbmFsSGVpZ2h0O2UuZXh0JiYoMD09PWUuZXh0LndpZHRoJiYocj0wKSwwPT09ZS5leHQuaGVpZ2h0JiYoaT0wKSksYS5sZWZ0PVwiXCIsYS50b3A9XCIwcHhcIix0LndpZHRoPXIrXCJweFwiLGEud2lkdGg9citcInB4XCIsdC5oZWlnaHQ9aStcInB4XCIsYS5oZWlnaHQ9aStcInB4XCIsYS56SW5kZXg9XCJcIjt2YXIgbz1uLmlmcmFtZS5jb250ZW50V2luZG93LHM9e307cy50YXJnZXRJZD1lLnRhcmdldElkLHMuZ2VvbT1OYShlLnRhcmdldElkLG4uaWZyYW1lKSxzLnN0YXR1cz1nLm8uU1RBVFVTLk5PVElGWV9DT0xMQVBTRUQsemEobyxKU09OLnN0cmluZ2lmeShzKSxjZSgpKX0odCk7YnJlYWs7Y2FzZVwiY21wXCI6IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1hcG50YWcucmVxdWVzdHMuZ2Rwcl9jb25zZW50LG49VHQuZ2V0SW5zdGFuY2UoKS5nZXRJZnJhbWUoZS50YXJnZXRJZCkuaWZyYW1lLmNvbnRlbnRXaW5kb3csYT17dGFyZ2V0SWQ6ZS50YXJnZXRJZCxnZHByX2NvbnNlbnQ6dCxzdGF0dXM6Zy5vLlNUQVRVUy5DTVB9O3phKG4sYSxjZSgpKX1hcG50YWcucmVxdWVzdHMuZ2Rwcl9jb25zZW50P3QoKTpfYShhcG50YWcucmVxdWVzdHMsdCl9KHQpO2JyZWFrO2Nhc2VcInJlc2l6ZUFkXCI6YXBudGFnLnJlc2l6ZUFkKHQudGFyZ2V0SWQsdC5jbWQpO2JyZWFrO2Nhc2VcIm1lZGlhdGVkTmF0aXZlXCI6YXBudGFnLmhhbmRsZU1lZGlhdGlvbkJpZCh0LnRhcmdldElkLHQuY29udGVudCk7YnJlYWs7Y2FzZVwiZW1pdEV2ZW50XCI6YXBudGFnLmVtaXRFdmVudC5hcHBseShudWxsLHQuY21kKTticmVhaztjYXNlXCJtZXNzYWdlXCI6YnJlYWs7Y2FzZVwidXBkYXRlUmVuZGVyU3RhdHVzXCI6V2Euc2V0UmVuZGVyZXJTdGF0dXModC5ySWQrXCJfXCIrdC50YXJnZXRJZCx0LnN0YXR1cyk7YnJlYWs7Y2FzZVwic2V0UGFyZW50RGl2U3R5bGVEZWZhdWx0UHJvcFwiOnZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcubS5VVF9ESVYrdC50YXJnZXRJZCk7Ryh0LmNtZCxmdW5jdGlvbihlLHQpe1wiXCI9PT1uLnN0eWxlW3RdJiYobi5zdHlsZVt0XT1lKX0pfX19KSxkYS5leHBhbnNpb25CeVB1c2g9ITEsZGEuZXhwYW5zaW9uQnlPdmVybGF5PSEwLGRhLnJlYWRDb29raWU9ITEsZGEud3JpdGVDb29raWU9ITEsZGEuc2FuZGJveD0hMSxmdW5jdGlvbigpe2lmKC8oaVBob25lKS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpdHJ5e1IobmEuZG9jdW1lbnQsXCJhcG50YWdfaVR1bmVzTGF1bmNoXCIsYWEpfWNhdGNoKGUpe319KCk7dHJ5e2NvbnNvbGUuaW5mbz9jb25zb2xlLmluZm8oXCJBU1QgbGlicmFyeSBsb2FkZWQ6IDAuMzEuMFwiKTpjb25zb2xlLmxvZyhcIkFTVCBsaWJyYXJ5IGxvYWRlZDogMC4zMS4wXCIpfWNhdGNoKGUpe31jYS5hcG50YWc9dHlwZW9mIGNhLmFwbnRhZyE9PVZyP2NhLmFwbnRhZzp7fTt2YXIgSnI9Y2EuYXBudGFnO2Z1bmN0aW9uIEdyKGUpe3ZhciB0PXt9O3JldHVybiBHKEpyLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24obil7ZSE9PW4udXVpZCYmZSE9PW4udGFyZ2V0SWR8fCh0PW4pfSksdH1Kci5hbnE9SnIuYW5xfHxbXSxKci5kZWJ1Zz1Kci5kZWJ1Z3x8ITEsSnIuZG9uZ2xlPUpyLmRvbmdsZXx8dm9pZCAwLEpyLnRlc3Q9SnIudGVzdHx8ITEsSnIubG9hZGVkPSEwLEpyLnJlcXVlc3RzPUpyLnJlcXVlc3RzfHx7fSxKci5yZXF1ZXN0cy5rZXl3b3Jkcz1Kci5yZXF1ZXN0cy5rZXl3b3Jkc3x8e30saGEoZy5mLklNUEJVUyksSnIucmVxdWVzdHMudGFnc09uUGFnZUNvdW50PUpyLnJlcXVlc3RzLnRhZ3NPblBhZ2VDb3VudHx8MCxKci5yZXF1ZXN0cy53YWl0T25UYWdzQ291bnQ9SnIucmVxdWVzdHMud2FpdE9uVGFnc0NvdW50fHwwLEpyLnJlcXVlc3RzLnNob3dUYWdEZWZpbmVkTWFwPUpyLnJlcXVlc3RzLnNob3dUYWdEZWZpbmVkTWFwfHx2YSgpLEpyLmhpZ2hsaWdodEFkPWZ1bmN0aW9uKGUpe2lmKFYoXCJJbnZva2luZyBhcG50YWcuaGlnaGxpZ2h0QWRcIixhcmd1bWVudHMpLGUpe3ZhciB0PW1hKClbZV07dCYmKHQuc3R5bGUuYm9yZGVyPVwiM3B4IHNvbGlkICNlNjczMDBcIil9fSxKci5hbnEucHVzaD1mdW5jdGlvbihlKXtlLmNhbGwoKX0sSnIuc2V0RW5kcG9pbnQ9ZnVuY3Rpb24oZSl7VihcIkludm9raW5nIGFwbnRhZy5zZXRFbmRwb2ludFwiLGFyZ3VtZW50cyksaGEoZSl9LEpyLnNldFBhZ2VPcHRzPWZ1bmN0aW9uKGUpe1YoXCJJbnZva2luZyBhcG50YWcuc2V0UGFnZU9wdHNcIixhcmd1bWVudHMpLEphKGUpfSxKci5kZWZpbmVUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIFYoXCJJbnZva2luZyBhcG50YWcuZGVmaW5lVGFnXCIsYXJndW1lbnRzKSxmdW5jdGlvbihlKXtWKFwiSW52b2tpbmcgYXBudGFnLmRlZmluZVRhZ1wiLGFyZ3VtZW50cyk7dmFyIHQ9UWEoZSk7aWYodCl7aWYoc2EucHVzaCh0KSxvYVt0LnRhcmdldElkXSlyZXR1cm4gb2FbdC50YXJnZXRJZF07dmFyIG49e3RhcmdldElkOnQudGFyZ2V0SWQsb246dC5vbixvZmY6dC5vZmYsbW9kaWZ5VGFnOnQubW9kaWZ5VGFnLHNldEtleXdvcmRzOnQuc2V0S2V5d29yZHN9O3JldHVybiBvYVt0LnRhcmdldElkXT1uLG59VyhcIk5vIGFkIHdpbGwgYmUgcmVxdWVzdGVkIGZvciB0YXJnZXRJZDogXCIrZS50YXJnZXRJZCl9KGUpfSxKci5nZXRUYWc9ZnVuY3Rpb24oZSl7aWYoIWV8fGdlKGUpKXt2YXIgdD12b2lkIDAsbj12b2lkIDA7cmV0dXJuIGU/KG49THIoZSksdD1wZShKci5yZXF1ZXN0cy50YWdzW2VdLG4pKToodD17fSxPYmplY3Qua2V5cyhKci5yZXF1ZXN0cy50YWdzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe249THIoZSksdFtlXT1wZShKci5yZXF1ZXN0cy50YWdzW2VdLG4pfSkpLHR9VyhlK1wiIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKX0sSnIuZ2V0QWRXcmFwPWZ1bmN0aW9uKGUpe2lmKFYoXCJJbnZva2luZyBhcG50YWcuZ2V0QWRXcmFwXCIsYXJndW1lbnRzKSxnZShlKSlyZXR1cm4gZSYmSnIucmVxdWVzdHMudGFncyYmSnIucmVxdWVzdHMudGFnc1tlXSYmSnIucmVxdWVzdHMudGFnc1tlXS5hZFdyYXA/SnIucmVxdWVzdHMudGFnc1tlXS5hZFdyYXA6dm9pZCAwO1coXCJ0aGUgXCIrZStcIiB0YWcgaXMgbm90IGRlZmluZWQuXCIsZy5qLldBUk4pfSxKci5zZXRTaXplcz1mdW5jdGlvbihlLHQpe1YoXCJJbnZva2luZyBhcG50YWcuc2V0U2l6ZXNcIixhcmd1bWVudHMpLGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9ZSxlPXRoaXMudGFyZ2V0SWQpLGdlKGUpP0pyLnJlcXVlc3RzLnRhZ3NbZV0uc2l6ZXM9dDpXKFwidGhlIFwiK2UrXCIgdGFnIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKX0sSnIubW9kaWZ5VGFnPWZ1bmN0aW9uKGUsdCl7VihcIkludm9raW5nIGFwbnRhZy5tb2RpZnlUYWdcIixhcmd1bWVudHMpO3ZhciBuPXt9O2FyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9ZSxlPXRoaXMudGFyZ2V0SWQpLGdlKGUpPygodC5zaXplc3x8dC5zaXplTWFwcGluZykmJiRhKHQsZSksRyhKci5yZXF1ZXN0cy50YWdzW2VdLGZ1bmN0aW9uKGUsdCl7blt0XT1lfSksRyh0LGZ1bmN0aW9uKGUsdCl7blt0XT1lfSksSnIucmVxdWVzdHMudGFnc1tlXT1uKTpXKFwidGhlIFwiK2UrXCIgdGFnIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKX0sSnIuc2V0S2V5d29yZHM9ZnVuY3Rpb24oZSx0LG4pe1YoXCJJbnZva2luZyBhcG50YWcuc2V0S2V5d29yZHNcIixhcmd1bWVudHMpO3ZhciBhPXt9O1wib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dD9nZShlKT8oRyhKci5yZXF1ZXN0cy50YWdzW2VdLGZ1bmN0aW9uKGUsdCl7YVt0XT1lfSksYS5rZXl3b3Jkcz1hLmtleXdvcmRzfHx7fSxcIm9iamVjdFwiPT10eXBlb2YgbiYmbnVsbCE9PW4mJiEwPT09bi5vdmVycmlkZUtleVZhbHVlP0codCxmdW5jdGlvbihlLHQpe2Eua2V5d29yZHNbdF09ZX0pOkcodCxmdW5jdGlvbihlLHQpe3RlKGEua2V5d29yZHMsdCk/TShhLmtleXdvcmRzW3RdKT9hLmtleXdvcmRzW3RdPWEua2V5d29yZHNbdF0uY29uY2F0KGUpOmEua2V5d29yZHNbdF09W2Eua2V5d29yZHNbdF1dLmNvbmNhdChlKTphLmtleXdvcmRzW3RdPWV9KSxKci5yZXF1ZXN0cy50YWdzW2VdPWEpOlcoXCJ0aGUgXCIrZStcIiB0YWcgaXMgbm90IGRlZmluZWQuXCIsZy5qLldBUk4pOnooXCJ1bmFibGUgdG8gc2V0IGtleXdvcmRzIGl0IHNob3VsZCBiZSBhbiBvYmplY3RcIil9LEpyLm9uRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKFYoXCJJbnZva2luZyBhcG50YWcub25FdmVudFwiLGFyZ3VtZW50cyksMj09PWFyZ3VtZW50cy5sZW5ndGgmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJnR5cGVvZiB0aGlzLnRhcmdldElkPT09VnIpbj10LHQ9XCIqXCI7ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoPDMmJihuPXQsdD10aGlzLnRhcmdldElkLCFnZSh0KSkpcmV0dXJuIHZvaWQgVyhcInRoZSBcIit0K1wiIHRhZyBpcyBub3QgZGVmaW5lZC5cIixnLmouV0FSTik7eWUub24oZSx0LG4pfSxKci5vZmZFdmVudD1mdW5jdGlvbihlLHQsbil7aWYoVihcIkludm9raW5nIGFwbnRhZy5vZmZFdmVudFwiLGFyZ3VtZW50cyksMT09PWFyZ3VtZW50cy5sZW5ndGgmJnR5cGVvZiB0aGlzLnRhcmdldElkPT09VnIpdD1cIipcIjtlbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9dGhpcy50YXJnZXRJZCwhZ2UodCkpKXJldHVybiB2b2lkIFcoXCJ0aGUgXCIrdCtcIiB0YWcgaXMgbm90IGRlZmluZWQuXCIsZy5qLldBUk4pO2lmKE0oZSkpZm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspeWUub2ZmKGVbYV0sdCxuKTtlbHNlIHllLm9mZihlLHQsbil9LEpyLmxvYWRUYWdzPWZ1bmN0aW9uKGUpe1YoXCJJbnZva2luZyBhcG50YWcubG9hZFRhZ3NcIixhcmd1bWVudHMpLEZyKGUpfSxKci5yZWZyZXNoPWZ1bmN0aW9uKGUpe1YoXCJJbnZva2luZyBhcG50YWcucmVmcmVzaFwiLGFyZ3VtZW50cyksenIoZSl9LEpyLnJlc2l6ZUFkPWZ1bmN0aW9uKGUsdCl7VihcIkludm9raW5nIGFwbnRhZy5yZXNpemVBZFwiLGFyZ3VtZW50cyksZnVuY3Rpb24oZSx0KXt2YXIgbj0wLGE9MDtNKHQpJiYyPT09dC5sZW5ndGg/KGE9dFswXSxuPXRbMV0pOlcoXCJyZXNpemVBZCBtdXN0IGJlIGludm9rZWQgd2l0aCBhICh0YXJnZXRJZCxbd2lkdGgsIGhlaWdodF0pXCIpO3ZhciByPW1hKClbZV07aWYocil7dmFyIGk9THIoZSksbz11ZShpKSxzPWNhLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG8pO2lmKHMpe3Muc3R5bGUuaGVpZ2h0PW4scy5zdHlsZS53aWR0aD1hLHIuaGVpZ2h0PW4rXCJweFwiLHIud2lkdGg9YStcInB4XCIsci5oZWlnaHQ9bixyLndpZHRoPWE7dmFyIGQ9YXBudGFnLnJlcXVlc3RzLnRhZ3NbZV07aWYoZCYmIWQuZW5hYmxlU2FmZUZyYW1lJiYoXCJub25lXCIhPT1zLnN0eWxlLmRpc3BsYXkmJjA9PT1uJiYwPT09YT8oZC5zdHlsZURpc3BsYXk9cy5zdHlsZS5kaXNwbGF5LHMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIik6XCJub25lXCI9PT1zLnN0eWxlLmRpc3BsYXkmJjAhPT1uJiYwIT09YSYmKHMuc3R5bGUuZGlzcGxheT1kLnN0eWxlRGlzcGxheXx8XCJpbmxpbmVcIikpLEwoXCJSZXNpemVBZCBzdWNjZXNzZnVsIGZvciB0YXJnZXRJZDogXCIrZSksZCYmZC5pc01lZGlhdGVkJiZyLmNvbnRlbnRXaW5kb3cpe3ZhciB1PWllKCksYz11LmxvY2F0aW9uLnByb3RvY29sK1wiLy9cIit1LmxvY2F0aW9uLmhvc3QsbD17bmFtZTpcInJlc2l6ZUFkXCIsc2l6ZTpbYSxuXX07ci5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGwpLGMpfX1lbHNlIFcoXCJGYWlsZWQgdG8gZmluZCB0YXJnZXQgZm9yIHJlc2l6ZUFkOiBcIitlKX1lbHNlIFcoXCJGYWlsZWQgdG8gZmluZCB0YXJnZXQgZm9yIHJlc2l6ZUFkIDogXCIrZSl9KGUsdCl9LEpyLmVuYWJsZUNvb2tpZVNldD1mdW5jdGlvbigpe3ooXCJhcG50YWcuZW5hYmxlQ29va2llU2V0IGhhcyBiZWVuIGRlcHJlY2lhdGVkXCIpLGZ1bmN0aW9uKGUpe2UmJmUub3ZlcnJpZGUmJih1PWUub3ZlcnJpZGUpLGUmJmUuY29va2llVXJsJiYoYz1lLmNvb2tpZVVybCk7dmFyIHQ9d2luZG93LmFkZEV2ZW50TGlzdGVuZXI/XCJhZGRFdmVudExpc3RlbmVyXCI6XCJhdHRhY2hFdmVudFwiLG49d2luZG93W3RdLGE9XCJhdHRhY2hFdmVudFwiPT10P1wib25sb2FkXCI6XCJsb2FkXCI7XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZXx8XCJpbnRlcmFjdGl2ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9mKCk6bihhLGZ1bmN0aW9uKGUpe2YoKX0sITEpfSgpfSxKci5jb2xsYXBzZUFkPWZ1bmN0aW9uKGUsdCxuKXtWKFwiSW52b2tpbmcgYXBudGFnLmNvbGxhcHNlQWRcIixhcmd1bWVudHMpLHooXCJhcG50YWcuY29sbGFwc2VBZCBoYXMgYmVlbiBkZXByZWNpYXRlZCwgUGxlYXNlIHVzZSBhcG50YWcucmVzaXplQWRcIik7dmFyIGE9MCxyPTAsaT1McihlKTtpZihpKXt2YXIgbz11ZShpKTt0eXBlb2YgdD09PUhyJiYoYT10KSx0eXBlb2Ygbj09PUhyJiYocj1uKTt2YXIgcz1jYS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvKTtpZihudWxsIT09cyl7SnIucmVzaXplQWQoZSxbcixhXSkscy5zdHlsZS5oZWlnaHQ9YSxzLnN0eWxlLndpZHRoPXIscy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO3ZhciBkPUpyLnJlcXVlc3RzLnRhZ3NbZV0sdT1idChkLmFkUmVzcG9uc2UpO3llLmVtaXQoZy5nLkNPTExBUFNFLGUsdSl9ZWxzZSBXKFwiQ29sbGFwc2VBZCBmYWlsZWQgdG8gZmluZCBhZCBkaXYgOiBcIitlKX1lbHNlIFcoXCJDb2xsYXBzZUFkIGZhaWxlZCB0byBmaW5kIHRhcmdldElkIDogXCIrZSl9LEpyLnNob3dUYWc9ZnVuY3Rpb24oZSx0KXtWKFwiSW52b2tpbmcgYXBudGFnLnNob3dUYWdcIixhcmd1bWVudHMpLGZ1bmN0aW9uKGUsdCl7aWYoTChcInNob3dUYWcgY2FsbGVkIGZvciBcIitlKSx2YSgpW2VdPSEwLGdlKGUpKXt2YXIgbj1hcG50YWcucmVxdWVzdHMudGFnc1tlXTtpZihuLnNob3dUYWdDYWxsZWQ9ITAsbi5jdXJXaW5kb3c9dCxuLmRpc3BsYXllZClyZXR1cm4gdm9pZCB6KFwiQXR0ZW1wdGluZyB0byBkaXNwbGF5IGFkIHRoYXQgaXMgYWxyZWFkeSBkaXNwbGF5ZWQsIHdpbGwgbm90IHJlbmRlciB0aGlzIGFkIGFnYWluOiBcIitlKTtpZihhcG50YWcucmVxdWVzdHMudXRDYWxsZWQpaWYobi5hZFJlc3BvbnNlKXt2YXIgYT1JcihuLGRhLG1hKCksdWEpO3JhLnB1c2goYSksYXBudGFnLnJlcXVlc3RzLmhhc0xlZnQmJm1lKCl9ZWxzZSBhcG50YWcucmVxdWVzdHMuY2hlY2tEaXNwbGF5PSEwO2Vsc2UgeihlK1wiIDogc2hvd1RhZygpIGNhbGxlZCBiZWZvcmUgYWQgcmVxdWVzdCB3YXMgbWFkZS4gVGhpcyBwbGFjZW1lbnQgbWlnaHQgbm90IGRpc3BsYXkgaWYgYSBzdWJzZXF1ZW50IGxvYWRUYWdzKCkgY2FsbCBpcyBub3QgbWFkZVwiKX1lbHNlIEwoXCJ0aGUgXCIrZStcIiB0YWcgd2FzIGxvYWRlZCBiZWZvcmUgdGhlIGFkIHBsYWNlbWVudCB3YXMgYXZhaWxhYmxlLlwiLGcuai5XQVJOKX0oZSx0PXR8fGNhKX0sSnIuc2V0UGFnZVRhcmdldGluZz1mdW5jdGlvbihlLHQpe1YoXCJJbnZva2luZyBhcG50YWcuc2V0UGFnZVRhcmdldGluZ1wiLGFyZ3VtZW50cyksSnIucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zJiZlJiZ0JiYoSnIucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zW2VdPXQpfSxKci5nZXRQYWdlVGFyZ2V0aW5nPWZ1bmN0aW9uKGUpe2lmKFYoXCJJbnZva2luZyBhcG50YWcuZ2V0UGFnZVRhcmdldGluZ1wiLGFyZ3VtZW50cyksSnIucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zJiZlKXJldHVybiBKci5yZXF1ZXN0cy50YXJnZXRpbmdQYXJhbXNbZV19LEpyLmNsZWFyUGFnZVRhcmdldGluZz1mdW5jdGlvbihlKXtWKFwiSW52b2tpbmcgYXBudGFnLmNsZWFyUGFnZVRhcmdldGluZ1wiLGFyZ3VtZW50cyksSnIucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zJiZlJiZkZWxldGUgSnIucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zW2VdfSxKci5lbmFibGVEZWJ1Zz1mdW5jdGlvbigpe0pyLmRlYnVnPSEwLFYoXCJJbnZva2luZyBhcG50YWcuZW5hYmxlRGVidWdcIixhcmd1bWVudHMpfSxKci5kaXNhYmxlRGVidWc9ZnVuY3Rpb24oKXtWKFwiSW52b2tpbmcgYXBudGFnLmRpc2FibGVEZWJ1Z1wiLGFyZ3VtZW50cyksSnIuZGVidWc9ITF9LEpyLm5vdGlmeT1mdW5jdGlvbihlLHQsbil7ZT9XYS5pbnZva2VOb3RpZnkoZSx0LG4pOlcoXCJhcG50YWcubm90aWZ5IG11c3QgYmUgY2FsbGVkIHdpdGggYG1lc3NhZ2VUeXBlYFwiKX0sSnIucmVnaXN0ZXJSZW5kZXJlcj1mdW5jdGlvbihlLHQpe1YoXCJJbnZva2luZyBhcG50YWcucmVnaXN0ZXJSZW5kZXJlclwiLGFyZ3VtZW50cyksV2EucmVnaXN0ZXJSZW5kZXJlcihlLHQpfSxKci5nZXRBc3RWZXJzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIFYoXCJJbnZva2luZyBhcG50YWcuZ2V0QXN0VmVyc2lvblwiKSxcIjAuMzEuMFwifSxKci5yZWNvcmRFcnJvckV2ZW50PWZ1bmN0aW9uKGUsdCl7VihcIkludm9raW5nIGFwbnRhZy5yZWNvcmRFcnJvckV2ZW50XCIsYXJndW1lbnRzKTt2YXIgbj1Kci5yZXF1ZXN0cy50YWdzW3RdLGE9YnQobi5hZFJlc3BvbnNlKSxyPUl0KGUubWVzc2FnZSx0LGUsMjAwKTt5ZS5lbWl0KGcuZy5FUlJPUix0LHIsYSl9LEpyLmNsZWFyUmVxdWVzdD1mdW5jdGlvbigpe1YoXCJJbnZva2luZyBhcG50YWcuY2xlYXJSZXF1ZXN0XCIsYXJndW1lbnRzKSxKci5yZXF1ZXN0cz17fSxKci5yZXF1ZXN0cy50YWdzPXt9LGdhPXt9LFR0LmdldEluc3RhbmNlKCkucmVzZXRJbnN0YW5jZSgpLGZ1bmN0aW9uKGUpe2ZhPWV9KHt9KX0sSnIuaGFuZGxlQ2I9ZnVuY3Rpb24oZSx0KXtWKFwiSW52b2tpbmcgYXBudGFnLmhhbmRsZUNiXCIsYXJndW1lbnRzKTt0cnl7QXIoZSx0KX1jYXRjaChlKXt2YXIgbj1lLm1lc3NhZ2U/ZS5tZXNzYWdlOmU7VyhcIkludGVybmFsIEFTVCBlcnJvciA6IFwiLGUpO3FyKG4sdm9pZCAwLDIwMCxnLmcuQkFEX1JFUVVFU1QsZSl9fSxKci5lbWl0RXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe24mJm4uY29udGVudF9zb3VyY2UmJiFKci5yZXF1ZXN0cy5lbmFibGVNZWRpYXRpb25FdmVudHN8fChWKFwiSW52b2tpbmcgYXBudGFnLmVtaXRFdmVudFwiLGFyZ3VtZW50cyksZnVuY3Rpb24oZSx0LG4pe3ZhciBhPUdyKGUpLHI9d3QoYSxlLG4pO0woXCJoYW5kbGluZyBldmVudCBmb3IgRE9NIElEOiAgXCIrci50YXJnZXRJZCtcIiBldmVudFR5cGUgOiBcIit0KSwodD10PT09Zy5uLkxPQURFRD9cImFkTG9hZGVkXCI6dCk9PT1nLmcuTE9BREVEfHx0PT09Zy5nLkxPQURFRF9NRURJQVRFRHx8dD09PWcuZy5OT19CSURfTUVESUFURUQ/eWUuZW1pdCh0LHIudGFyZ2V0SWQscik6eWUuZW1pdCh0LHIudGFyZ2V0SWQpO3Q9PT1nLmcuTk9fQklEJiZhLmlzTWVkaWF0ZWQmJihpPWEuYWRSZXNwb25zZSxKKHdpbmRvdy5kb2N1bWVudC5ib2R5LGlbWHJdLGkudXVpZCkpO3ZhciBpfShlLHQsbikpfSxKci5nZXRBZE1hcmt1cD1mdW5jdGlvbihlLHQpe2lmKEpyLnJlcXVlc3RzLnRhZ3MmJkpyLnJlcXVlc3RzLnRhZ3NbZV0pe3ZhciBuPUpyLnJlcXVlc3RzLnRhZ3NbZV07aWYobi51dWlkPT09dClyZXR1cm4gbi5hZFJlc3BvbnNlLmFkc319LEpyLnNldFNhZmVGcmFtZUNvbmZpZz1mdW5jdGlvbihlKXt0ZShlLFwiYWxsb3dFeHBhbnNpb25CeVB1c2hcIikmJihkYS5leHBhbnNpb25CeVB1c2g9ZS5hbGxvd0V4cGFuc2lvbkJ5UHVzaCksdGUoZSxcImFsbG93RXhwYW5zaW9uQnlPdmVybGF5XCIpJiYoZGEuZXhwYW5zaW9uQnlPdmVybGF5PWUuYWxsb3dFeHBhbnNpb25CeU92ZXJsYXkpLHRlKGUsXCJzYW5kYm94XCIpJiYoZGEuc2FuZGJveD1lLnNhbmRib3gpLHRlKGUsXCJtZXRhXCIpJiYoZGEubWV0YT1lLm1ldGEpfSxKci5maXJlSW1wcmVzc2lvblRyYWNrZXJzPWZ1bmN0aW9uKGUpe2lmKCFlLmltcHJlc3Npb25UcmFja2Vyc0ZpcmVkKXtlLmltcHJlc3Npb25UcmFja2Vyc0ZpcmVkPSEwLFYoXCJGaXJpbmcgaW1wcmVzc2lvbiB0cmFja2VycyBmb3JcIixlLnRhZ0lkKTt2YXIgdD1lLm5hdGl2ZSYmZS5uYXRpdmUuaW1wcmVzc2lvblRyYWNrZXJzO3QmJnQubGVuZ3RoJiZ0LmZvckVhY2goZnVuY3Rpb24oZSl7SihjYS5kb2N1bWVudC5ib2R5LGUpfSk7dmFyIG49ZS5uYXRpdmUmJmUubmF0aXZlLmphdmFzY3JpcHRUcmFja2VycztuJiZwdCh7c3RyYXRlZ3k6XCJXaXRoQ29udGVudFwiLGRhdGE6bn0pfX0sSnIuYXR0YWNoQ2xpY2tUcmFja2Vycz1mdW5jdGlvbihlLHQpe3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO24/KFYoXCJBdHRhY2hpbmcgY2xpY2sgdHJhY2sgaGFuZGxlciB0b1wiLHQpLFIobixcImNsaWNrXCIsZnVuY3Rpb24oKXt2YXIgdD1lLm5hdGl2ZSYmZS5uYXRpdmUuY2xpY2tUcmFja2Vyczt0JiZ0Lmxlbmd0aCYmKFYoXCJGaXJpbmcgY2xpY2sgdHJhY2tlcnMgZm9yXCIsZS50YWdJZCksdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe0ooY2EuZG9jdW1lbnQuYm9keSxlKX0pKX0pKTpXKFwiSFRNTCBlbGVtZW50IHdpdGggaWQgXCIrdCtcIiBub3QgZm91bmQsIGNsaWNrIHRyYWNrZXJzIG5vdCBhdHRhY2hlZFwiKX0sSnIuY2hlY2tBZEF2YWlsYWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9YXBudGFnLnJlcXVlc3RzLnRhZ3NbZV0sbj10JiZ0LmFkUmVzcG9uc2UsYT10JiZ0LnV0Q2FsbGVkJiYhdC5zaG93VGFnQ2FsbGVkJiZuJiZidChuKTtyZXR1cm4gZnVuY3Rpb24oZSl7YSYmKG4ubm9iaWR8fGUucmVzb2x2ZShhKSxuLm5vYmlkJiZlLnJlamVjdCgpKX19KGUpfSxKci5oYW5kbGVNZWRpYXRpb25CaWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1HcihlKTtmdW5jdGlvbiBhKCl7SnIucmVzaXplQWQoZSxbMCwwXSl9aWYodC5yZW5kZXJlcl91cmwpbi5kaXNwbGF5ZWQ9ITEsdC50YXJnZXRJZD1lLHQuYWRfdHlwZT09PWpyJiYoZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PUpyLnJlcXVlc3RzLnRhZ3NbZV0uYWRSZXNwb25zZS5hZHMsbj10W3QubGVuZ3RoLTFdO0pyLnJlcXVlc3RzLnRhZ3NbZV0uYWRSZXNwb25zZS5hZHM9W25dfWNhdGNoKGUpe1YoXCJUcnlpbmcgdG8gc2V0IGFkcmVzcG9uc2UgZm9yIHZpZGVvIHJlbmRlcmVyXCIsZSl9fShuLnRhcmdldElkKSxuLmVuYWJsZVNhZmVGcmFtZSYmZnVuY3Rpb24oZSl7dmFyIHQ9VHQuZ2V0SW5zdGFuY2UoKS5nZXRJZnJhbWUoZSk7dCYmdC5pZnJhbWUmJih0LmlmcmFtZS5hbGxvdz1cImF1dG9wbGF5XCIsdC5pZnJhbWUuc3R5bGU9XCJvdmVyZmxvdzpoaWRkZW5cIil9KG4udGFyZ2V0SWQpKSxuLmVuYWJsZVNhZmVGcmFtZT9mdW5jdGlvbihlKXt2YXIgdD1UdC5nZXRJbnN0YW5jZSgpLmdldElmcmFtZShlLnRhcmdldElkKS5pZnJhbWUuY29udGVudFdpbmRvdztkZWxldGUgZS5jdXJXaW5kb3c7dmFyIG49e3N0YXR1czpcIm5hdGl2ZUFzc2VtYmx5XCIsdGFyZ2V0SWQ6ZS50YXJnZXRJZH07emEodCxKU09OLnN0cmluZ2lmeShuKSxjZSgpKX0obik6V2EubG9hZFJlbmRlcmVyKG4sdCksYSgpO2Vsc2V7dmFyIHI9YnQobi5hZFJlc3BvbnNlLHQpO3IuYWRUeXBlPT09V3ImJmEoKSx5ZS5lbWl0KGcuZy5MT0FERUQsZSxyKX19O2ooXCJBU1QgbGlicmFyeSBsb2FkZWRcIiksZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPEpyLmFucS5sZW5ndGg7ZSsrKXR5cGVvZiBKci5hbnFbZV0uY2FsbGVkPT09VnImJihKci5hbnFbZV0uY2FsbCgpLEpyLmFucVtlXS5jYWxsZWQ9ITApfSgpLEpyLnJlcXVlc3RzLmNoZWNrRGlzcGxheXx8ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7ZnVuY3Rpb24gbigpe3R8fCh0PSEwLGUoKSl9aWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcilkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLG4sITEpO2Vsc2UgaWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe3ZhciBhPXZvaWQgMDt0cnl7YT1udWxsIT09d2luZG93LmZyYW1lRWxlbWVudH1jYXRjaChlKXt9aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiYhYSl7dmFyIHI9ZnVuY3Rpb24oKXtpZighdCl0cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKFwibGVmdFwiKSxuKCl9Y2F0Y2goZSl7c2V0VGltZW91dChyLDEwKX19O3IoKX1kb2N1bWVudC5hdHRhY2hFdmVudChcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiLGZ1bmN0aW9uKCl7XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmbigpfSl9aWYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsbiwhMSk7ZWxzZSBpZih3aW5kb3cuYXR0YWNoRXZlbnQpd2luZG93LmF0dGFjaEV2ZW50KFwib25sb2FkXCIsbik7ZWxzZXt2YXIgaT13aW5kb3cub25sb2FkO3dpbmRvdy5vbmxvYWQ9ZnVuY3Rpb24oKXtpJiZpKCksbigpfX19KG1lKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuZGVmaW5lJiZ3aW5kb3cuZGVmaW5lLmFtZCYmd2luZG93LmRlZmluZShcImFwcG5leHVzQXN0XCIsW10sZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmFwbnRhZ30pfV0pOyJ9LCAiaGVhZGVyc1NpemUiOiAxNjMzLCAiYm9keVNpemUiOiAzMDI3MywgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMzE5MDZ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA0Ny44MDYsICJyZWNlaXZlIjogNC41MjF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyNloiLCAidGltZSI6IDQwLjM2LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3BhZ2V2aWV3LmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ4NiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIlhEQXlqOFI0bjdxZTBZT0VRQjVIZnRMZGNXSi44LnR1TTBEM0tXVlVqR1ktMTY4NDk0Mjg3NS0wLUFSRUs0K1QrQTBnME9GNzZhQXhCaG1YYlp2Y0EzL1U5eU1ucnppczJzUlgwKzNTK3drZ3NseDRKSENkR0dseDRQQWpwZElGam4rMGN4WlY3UVBhYjFvZz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ0ZTBmYmQzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTUgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVJoaHpKb2djQ3Q2UVZwWlFacDJWRVNrRlpLTmI0clltdm1LWm9LTWlFR0M4XCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09WERBeWo4UjRuN3FlMFlPRVFCNUhmdExkY1dKLjgudHVNMEQzS1dWVWpHWS0xNjg0OTQyODc1LTAtQVJFSzQrVCtBMGcwT0Y3NmFBeEJobVhiWnZjQTMvVTl5TW5yemlzMnNSWDArM1Mrd2tnc2x4NEpIQ2RHR2x4NFBBanBkSUZqbiswY3haVjdRUGFiMW9nPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE1IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9wYWdldmlldy5qcy5kb3dubG9hZCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1SaGh6Sm9nY0N0NlFWcFpRWnAyVkVTa0ZaS05iNHJZbXZtS1pvS01pRUdDOCJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifV0sICJjb250ZW50IjogeyJzaXplIjogNDI1LCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsICJjb21wcmVzc2lvbiI6IDEyOCwgInRleHQiOiAiZnVuY3Rpb24gbG9nUGFnZVZpZXcoYXBwbGljYXRpb24sIHBhZ2UsIHNlc3Npb24sIHNlcnZlciwgY29tZWZyb20pIHtcbiBpZih0eXBlb2Ygc2VydmVyID09IFwidW5kZWZpbmVkXCIpIHNlcnZlciA9ICdodHRwOi8vdHJhY2sudW50ZC5jb20nO1xuIGlmKHR5cGVvZiBzZXNzaW9uID09IFwidW5kZWZpbmVkXCIpIHNlc3Npb24gPSAnZGVmYXVsdCc7XG4gaWYodHlwZW9mIGNvbWVmcm9tID09IFwidW5kZWZpbmVkXCIpIGNvbWVmcm9tID0gJyc7IFxuIHZhciBpbWcgPSAnPGltZyBzcmM9JytzZXJ2ZXIrJy9zL3B2P3M9OTk5OTk5JmE9JythcHBsaWNhdGlvbisnJnA9JytwYWdlKycmZD11bmtub3duJmk9JytzZXNzaW9uKycmY2Y9Jytjb21lZnJvbSsnJnNydD0wJmNydD0wJiB3aWR0aD0xIGhlaWdodD0xIGJvcmRlcj0wPic7XG4gZG9jdW1lbnQud3JpdGUoaW1nKTtcbn0ifSwgImhlYWRlcnNTaXplIjogMTYzOCwgImJvZHlTaXplIjogMjk3LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxOTM1fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzYuNTQxLCAicmVjZWl2ZSI6IDMuODE5fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjZaIiwgInRpbWUiOiAxNzAzLjI5MSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9wdWJhZHNfaW1wbF8yMDIwMDgyNzAxLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDUwMCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIlNsVmZJVFNYYlUzcDcyVHYyZmNuWTl1djdRUlloXzViQS51Q1lqa3g2REUtMTY4NDk0Mjg3Ny0wLUFTY2owZHdNTEhKbmxLdmluOVV4SFJSU1FUU1hvNkYzYWVjTnJQL2Rvb2g1VVd5aTFCL0NaK3JkVzM0TDdXVytLdnNteEpuME5JN09PRnIrU2FkZGxLRT0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1NjViMzAzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbWZYUnFtcEc2NFNjS05IVDNiaVFkMmk1QUJ1Wk5MaUt0Z1g0WjNLSGhrM21EXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09U2xWZklUU1hiVTNwNzJUdjJmY25ZOXV2N1FSWWhfNWJBLnVDWWpreDZERS0xNjg0OTQyODc3LTAtQVNjajBkd01MSEpubEt2aW45VXhIUlJTUVRTWG82RjNhZWNOclAvZG9vaDVVV3lpMUIvQ1orcmRXMzRMN1dXK0t2c214Sm4wTkk3T09GcitTYWRkbEtFPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE3IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9wdWJhZHNfaW1wbF8yMDIwMDgyNzAxLmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWZYUnFtcEc2NFNjS05IVDNiaVFkMmk1QUJ1Wk5MaUt0Z1g0WjNLSGhrM21EIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyNjc5MzUsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMTc0MzQ5LCAidGV4dCI6ICIoZnVuY3Rpb24oXyl7LypcblxuIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuXG4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiovXG52YXIgY2EsZWEsaWEsa2EsbWEsbmEsdGEsemEsQmEsSWEsTGEsTWEsTmEsT2EsUWEsU2EsV2EsWGEsWWEsWmEsY2IsZmIsaWIsamIsZ2IsbmIscGIscmIsemIsR2IsSGIsS2IsUmIsVGIsVWIsVmIsWmIseiwkYixhYyxiYyxjYyxkYyx0LGVjLGZjLGdjLENiLGhjLGljLG1jLG5jLG9jLENjLEZjLEdjLEVjLERjLEljLEpjLEtjLExjLEJiLE5jLE9jLFBjLFFjLFRjLEs7Y2E9ZnVuY3Rpb24oYSl7dmFyIGI9MD5hO2E9TWF0aC5hYnMoYSk7dmFyIGM9YT4+PjA7YT1NYXRoLmZsb29yKChhLWMpLzQyOTQ5NjcyOTYpO2E+Pj49MDtiJiYoYT1+YT4+PjAsYz0ofmM+Pj4wKSsxLDQyOTQ5NjcyOTU8YyYmKGM9MCxhKyssNDI5NDk2NzI5NTxhJiYoYT0wKSkpO2FhPWM7YmE9YX07ZWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YS5wYXNzaXZlJiZkYSgpP2E6YS5jYXB0dXJlfHwhMTohMX07aWE9ZnVuY3Rpb24oKXtyZXR1cm4gZmEoXy5yLnRvcCxcIkdvb2dsZVNldE5QQVwiKXx8ZmEoaGEoKSxcIkdvb2dsZVNldE5QQVwiKX07a2E9ZnVuY3Rpb24oYSl7aWYoYSE9PWphKXRocm93IEVycm9yKFwiQmFkIHNlY3JldFwiKTt9O21hPWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09bGEpdHJ5e2xhPW51bGx9Y2F0Y2goYSl7bGE9bnVsbCxjb25zb2xlLmxvZyhhKX1yZXR1cm4gbGF9O25hPWZ1bmN0aW9uKGEsYil7aWYoIShhIGluc3RhbmNlb2YgYikpdGhyb3cgRXJyb3IoXCJ3cm9uZyB0eXBlXCIpO307dGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1vYShhLGIpfHxwYShhLGIpOzE9PT1fLnJhKDM5NSkmJmMmJiFzYShjKSYmKGE9cGEoYSxiKS5wYXJlbnRFbGVtZW50KSYmYSE9PWIuYm9keSYmKGM9YSk7cmV0dXJuIGN9O3phPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iLnNsb3QsZT1iLmNhLGY9dGEoZCxhKTtpZighZilyZXR1cm4gbnVsbDtiPXVhKGYpO2lmKCFiKXJldHVybiBiO3ZhciBnPWY9PT1wYShkLGEpLGg9Z3x8MT09PV8ucmEoMzk1KSxrPXZhKGZ1bmN0aW9uKCl7dmFyIG09Zz9wYShkLGEpOmY7cmV0dXJuIG0mJndhKG0sd2luZG93KXx8e319KTtlPXhhKGUpWzBdO3ZhciBsPSExO0FycmF5LmlzQXJyYXkoZSkmJihsPWM/aDowPT1iLngmJlwiY2VudGVyXCI9PWsoKVtcInRleHQtYWxpZ25cIl0pO2wmJihiLngrPU1hdGgucm91bmQoTWF0aC5tYXgoMCwoZz9mLmNsaWVudFdpZHRoOmYucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aCktZVswXSkvMikpO2gmJihiLnkrPU1hdGgucm91bmQoTWF0aC5taW4ocGFyc2VJbnQoaygpW1wicGFkZGluZy10b3BcIl0sMTApfHwwLGYuY2xpZW50SGVpZ2h0KSksbHx8KGM9Zi5jbGllbnRXaWR0aCxiLngrPU1hdGgucm91bmQoTWF0aC5taW4ocGFyc2VJbnQoaygpW1wicGFkZGluZy1sZWZ0XCJdLDEwKXx8MCxjKSkpKTtyZXR1cm4gYiYmc2EoZik/YjpuZXcgXy55YSgtMTIyNDU5MzMsLTEyMjQ1OTMzKX07QmE9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93LGM9ITA7Yz12b2lkIDA9PT1jPyExOmM7bmV3IHQuUHJvbWlzZShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGYoKXtnLm9ubG9hZD1udWxsO2cub25lcnJvcj1udWxsO2IuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChnKX12YXIgZz1iLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7Zy5vbmxvYWQ9ZnVuY3Rpb24oKXtmKCk7ZCgpfTtnLm9uZXJyb3I9ZnVuY3Rpb24oKXtmKCk7ZSh2b2lkIDApfTtnLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIjtBYShnLGEpO2MmJlwiY29tcGxldGVcIiE9PWIuZG9jdW1lbnQucmVhZHlTdGF0ZT9fLnYoYixcImxvYWRcIixmdW5jdGlvbigpe2IuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChnKX0pOmIuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChnKX0pfTtJYT1mdW5jdGlvbihhKXtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBjKCl7dmFyIGQsZSxmLGc7cmV0dXJuIERhKGMsZnVuY3Rpb24oaCl7c3dpdGNoKGguail7Y2FzZSAxOnJldHVybiBkPVwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9nZXRjb25maWcvc29kYXI/c3Y9MjAwJnRpZD1cIithLmorKFwiJnR2PVwiK2EubCtcIiZzdD1cIikrYS5lYixlPXZvaWQgMCxoLkE9MixFYShoLEZhKGQpLDQpO2Nhc2UgNDplPWgubztHYShoLDMpO2JyZWFrO2Nhc2UgMjpIYShoKTtjYXNlIDM6aWYoIWUpcmV0dXJuIGgucmV0dXJuKHZvaWQgMCk7Zj1hLm9ifHxlLnNvZGFyX3F1ZXJ5X2lkO2c9dm9pZCAwPT09ZS5yY19lbmFibGU/XCJuXCI6ZS5yY19lbmFibGU7cmV0dXJuIGYmJmUuYmdfaGFzaF9iYXNlbmFtZSYmZS5iZ19iaW5hcnk/aC5yZXR1cm4oe2NvbnRleHQ6YS52LE9jOmUuYmdfaGFzaF9iYXNlbmFtZSxOYzplLmJnX2JpbmFyeSxnZDphLmorXCJfXCIrYS5sLG9iOmYsZWI6YS5lYixBYjpnfSk6aC5yZXR1cm4odm9pZCAwKX19KX0pfTtMYT1mdW5jdGlvbihhKXtDYSh0aGlzLGZ1bmN0aW9uIGMoKXt2YXIgZDtyZXR1cm4gRGEoYyxmdW5jdGlvbihlKXtpZigxPT1lLmopcmV0dXJuIEVhKGUsSWEoYSksMik7aWYoZD1lLm8pe3ZhciBmPVwic29kYXIyXCI7Zj12b2lkIDA9PT1mP1wic29kYXIyXCI6Zjt2YXIgZz13aW5kb3csaD1nLkdvb2dsZUdjTEtoT21zO2gmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBoLnB1c2h8fChoPWcuR29vZ2xlR2NMS2hPbXM9W10pO3ZhciBrPXt9O2gucHVzaCgoay5fY3R4Xz1kLmNvbnRleHQsay5fYmd2Xz1kLk9jLGsuX2JncF89ZC5OYyxrLl9saV89ZC5nZCxrLl9qa189ZC5vYixrLl9zdF89ZC5lYixrLl9yY189ZC5BYixrKSk7aWYoaD1nLkdvb2dsZURYNVlLVVNrKWcuR29vZ2xlRFg1WUtVU2s9dm9pZCAwLGhbMV0oKTtmPUphKEthLHtiYXNlbmFtZTpmfSk7QmEoZil9cmV0dXJuIGUucmV0dXJuKGQpfSl9KX07TWE9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yKFwic2NyaXB0W25vbmNlXVwiKSk/YS5ub25jZXx8YS5nZXRBdHRyaWJ1dGUoXCJub25jZVwiKXx8XCJcIjpcIlwifTtOYT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj93aW5kb3c6YjtpZih4KGEsNSkpdHJ5e3JldHVybiBiLmxvY2FsU3RvcmFnZX1jYXRjaChjKXt9cmV0dXJuIG51bGx9O09hPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP2RvY3VtZW50OmI7cmV0dXJuIHgoYSw1KT9iLmNvb2tpZTpudWxsfTtRYT1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP2RvY3VtZW50OmM7Yj1PYShiLGMpO3JldHVybiBudWxsPT09Yj9udWxsOihuZXcgUGEoe2Nvb2tpZTpifSkpLmdldChhKXx8XCJcIn07U2E9ZnVuY3Rpb24oYSl7YT1fLlJhKGEuc3BsaXQoL1xccysvKSxmdW5jdGlvbihiKXtyZXR1cm4oYj0vXigtP1xcZCspKHB4fCUpJC8uZXhlYyhiKSk/e3ZhbHVlOnBhcnNlRmxvYXQoYlsxXSksdHlwZTpiWzJdfTp7dmFsdWU6MCx0eXBlOlwicHhcIn19KTthWzFdPWFbMV18fGFbMF07YVsyXT1hWzJdfHxhWzBdO2FbM109YVszXXx8YVsxXTtyZXR1cm4gYX07V2E9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuWzBdO2E9XCJudW1iZXJcIj09PXR5cGVvZiBhP1thXTphO2E9Xy5UYShhLGZ1bmN0aW9uKGIpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYiYmMDw9YiYmMT49Yj8hMDohMX0pO1VhKGEpO1ZhKGEsZnVuY3Rpb24oYixjKXtyZXR1cm4gYi1jfSk7cmV0dXJuIGF9O1hhPWZ1bmN0aW9uKGEpe3RyeXt2YXIgYj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGMpe31yZXR1cm4gYj97dG9wOmIudG9wLHJpZ2h0OmIucmlnaHQsYm90dG9tOmIuYm90dG9tLGxlZnQ6Yi5sZWZ0LHdpZHRoOmIud2lkdGh8fGIucmlnaHQtYi5sZWZ0LGhlaWdodDpiLmhlaWdodHx8Yi5ib3R0b20tYi50b3B9Ont0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MCx3aWR0aDowLGhlaWdodDowfX07WWE9ZnVuY3Rpb24oYSl7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBhfHxcInN0cmluZ1wiPT09dHlwZW9mIGF9O1phPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIHZvaWQgMDpjYXNlIG51bGw6Y2FzZSAyOnJldHVybiExO2Nhc2UgMDpjYXNlIDE6cmV0dXJuITA7ZGVmYXVsdDp0aHJvdyBFcnJvcihcIlVuZXhwZWN0ZWQgZW5jcnlwdGlvbiBtb2RlOiBcIithKTt9fTtjYj1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdyxiPSRhKCk7dmFyIGM9dm9pZCAwPT09Yz9hYjpjO2lmKF8ueSgyMTUpJiYhYS5nb29nX3Nkcl9sKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImdvb2dfc2RyX2xcIix7dmFsdWU6ITB9KTt2YXIgZD1mdW5jdGlvbigpe3ZhciBlPV8ucmEoMzcpLGY9ZnVuY3Rpb24oKXtjKGEsXCJncHRcIixiLFN0cmluZyhiYihhKSkpfTtlP2Euc2V0VGltZW91dChmLGUpOmYoKX07XCJjb21wbGV0ZVwiPT09YS5kb2N1bWVudC5yZWFkeVN0YXRlP2QoKTpfLnYoYSxcImxvYWRcIixkKX19O2ZiPWZ1bmN0aW9uKGEpe3ZhciBiPWRiKGEpO3JldHVybih6PVtcImdvb2dsZV9kZWJ1Z1wiLFwiZGZwZGViXCIsXCJnb29nbGVfY29uc29sZVwiLFwiZ29vZ2xlX2ZvcmNlX2NvbnNvbGVcIixcImdvb2dmY1wiXSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihjKXt2YXIgZD1iLnNlYXJjaChlYik7Yjp7dmFyIGU9MDtmb3IodmFyIGY9Yy5sZW5ndGg7MDw9KGU9Yi5pbmRleE9mKGMsZSkpJiZlPGQ7KXt2YXIgZz1iLmNoYXJDb2RlQXQoZS0xKTtpZigzOD09Z3x8NjM9PWcpaWYoZz1iLmNoYXJDb2RlQXQoZStmKSwhZ3x8NjE9PWd8fDM4PT1nfHwzNT09ZylicmVhayBiO2UrPWYrMX1lPS0xfWlmKDA+ZSljPW51bGw7ZWxzZXtmPWIuaW5kZXhPZihcIiZcIixlKTtpZigwPmZ8fGY+ZClmPWQ7ZSs9Yy5sZW5ndGgrMTtjPWRlY29kZVVSSUNvbXBvbmVudChiLnN1YnN0cihlLGYtZSkucmVwbGFjZSgvXFwrL2csXCIgXCIpKX1yZXR1cm4gbnVsbCE9PWN9KXx8bnVsbH07aWI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXZvaWQgMD09PWQ/e306ZDtnYihhLGIsYyxkKTtzd2l0Y2goYSl7Y2FzZSAwOmNhc2UgOTphPWhiKCksKGM9YS5nZXQoYikuSWEpPyhiPShCKGMsNCl8fDApKzEsRChjLDQsYiksYS5zZXQoYykpOmdiKDExLGIsbnVsbCx7fSl9fTtqYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD97fTpkO2diKGEsYixjLGQpfTtnYj1mdW5jdGlvbihhLGIsYyxkKXtrYihcImdwdF8zcGxpYlwiLGZ1bmN0aW9uKGUpe2xiKGUpO0UoZSxcImNcIixhKTtjJiZFKGUsXCJlbVwiLGMpO0UoZSxcImxpZFwiLGIpO18uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGQpLmZvckVhY2goZnVuY3Rpb24oZil7RShlLGYsZFtmXSl9KX0pfTtuYj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gbWIoNjU5LGMsZnVuY3Rpb24oZSxmKXtqYigxLGEsZi5tZXNzYWdlKTtyZXR1cm4gdC5Qcm9taXNlLnJlc29sdmUobnVsbCl9KS50aGVuKGZ1bmN0aW9uKGUpe2QmJmQoKTtiLiRiKGUpO2U9aGIoKS5zZXQoYik7ZS5lcnJvck1lc3NhZ2UmJmpiKGUuaW5mbyxhLGUuZXJyb3JNZXNzYWdlKTtyZXR1cm4gYn0pfTtwYj1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iP2Z1bmN0aW9uKCl7fTpiO3JldHVybiBuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjKGIoKSl9LGEpfSl9O3JiPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP2Z1bmN0aW9uKCl7fTpiO3JldHVybiBuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGMpe3ZhciBkPWZ1bmN0aW9uKCl7YyhiKCkpO18ucWIoYSxcImxvYWRcIixkKX07Xy52KGEsXCJsb2FkXCIsZCl9KX07emI9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgc2IsYj1uZXcgdGIoYS5GKSxjPW5ldyB1YihiLkYpLGQ9bmV3IHZiKGMubSksZT1uZXcgd2I7eGIoZSxbYSxiLGMsZF0pO3liKGUpfTtHYj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9BYjpiO3ZhciBjPUJiKGEpLGQ9ZnVuY3Rpb24oZil7Zj1fLkYoZik7Zi5uZXh0KCk7Zj1DYihmKTtyZXR1cm4gYihjLGYpfSxlPWZ1bmN0aW9uKGYpe3ZhciBnPV8uRihmKTtmPWcubmV4dCgpLnZhbHVlO2c9Q2IoZyk7cmV0dXJuIGEuYXBwbHkoZixnKX07cmV0dXJuIGZ1bmN0aW9uKGYpe2Zvcih2YXIgZz1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoOysraClnW2hdPWFyZ3VtZW50c1toXTtoPXRoaXN8fF8ucjt2YXIgaz1EYi5nZXQoaCk7a3x8KGs9e30sRGIuc2V0KGgsaykpO3JldHVybiBFYihrLFt0aGlzXS5jb25jYXQoXy5GYihnKSksZSxkKX19O0hiPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPTA7ZT12b2lkIDA9PT1lP1wiXCI6ZTtjPXZvaWQgMD09PWM/ZnVuY3Rpb24obCl7cmV0dXJuISFsfTpjO2Q9dm9pZCAwPT09ZD9cIixcIjpkO3ZhciBmPVtdLGc9ITE7YT1fLkYoYSk7Zm9yKHZhciBoPWEubmV4dCgpOyFoLmRvbmU7aD1hLm5leHQoKSl7aD1iKGgudmFsdWUpO3ZhciBrPWMoaCk7Zz1nfHxrO2YucHVzaChTdHJpbmcoaz9oOmUpKX1yZXR1cm4gZz9mLmpvaW4oZCk6bnVsbH07S2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxmdW5jdGlvbigpe3JldHVybiEwfTthPUliKGEpO3ZhciBkPVtdO18uSmIoYSxmdW5jdGlvbihlLGYpe2U9ZS5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIGMoaCxmKX0pO2lmKGUubGVuZ3RoKXtlPWUubWFwKGVuY29kZVVSSUNvbXBvbmVudCk7dmFyIGc9ZW5jb2RlVVJJQ29tcG9uZW50KGYpO2QucHVzaChnK1wiPVwiK2Uuam9pbigpKX19KTtyZXR1cm4gZH07UmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9cGEoYSxjKTtpZihlKWlmKF8ueSgzOTkpKXt2YXIgZj1hLmdldFNsb3RJZCgpO2lmKCFMYi5oYXMoZikpe0xiLmFkZChmKTt2YXIgZz1uZXcgKG51bGwhPT0oZD1iLkludGVyc2VjdGlvbk9ic2VydmVyKSYmdm9pZCAwIT09ZD9kOk1iKShHKDc1NSxmdW5jdGlvbihtKXsobT1fLkYobSkubmV4dCgpLnZhbHVlKSYmMD09PW0uaW50ZXJzZWN0aW9uUmF0aW8mJigobT1wYShhLGMpKSYmTmIobSwhMSksaCgpKX0pLHt0aHJlc2hvbGQ6MH0pO2cub2JzZXJ2ZShlKTt2YXIgaD1mdW5jdGlvbigpe2cuZGlzY29ubmVjdCgpO0xiLmRlbGV0ZShmKTtrKCk7bCgpfSxrPU9iKEkuQigpLFBiLGYsNzU2LGZ1bmN0aW9uKG0pe20uaXNFbXB0eXx8aCgpfSksbD1PYihJLkIoKSxRYixmLDc1NixmdW5jdGlvbigpe05iKHBhKGEsYyksITEpO2goKX0pfX1lbHNlIE5iKGUsITEpfTtUYj1mdW5jdGlvbihhLGIsYyxkKXtrYihcImdwdF9zelwiLGZ1bmN0aW9uKGUpe0UoZSxcInJcIixTYihhKSk7RShlLFwid1wiLGMud2lkdGgpO0UoZSxcImhcIixjLmhlaWdodCk7YiYmRShlLFwiZlwiLGIpO251bGwhPWQmJkUoZSxcImFcIixOdW1iZXIoZCkpfSx7dmE6Xy5yYSgyOCl9KX07VWI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYil7cmV0dXJuIHZvaWQgc2V0VGltZW91dChiLGEpfSl9O1ZiPWZ1bmN0aW9uKGEsYil7cmV0dXJuXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj9uZXcgTWIoYix7cm9vdE1hcmdpbjphfSk6bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGIse3Jvb3RNYXJnaW46YX0pfTtaYj1mdW5jdGlvbigpe1diKFwicHViYWRzUmVhZHlcIiwhMCk7aWYoXy55KDIwNikpe3ZhciBhPTA7T2JqZWN0LmRlZmluZVByb3BlcnR5KFhiKCksXCJwdWJhZHNSZWFkeVwiLHtnZXQ6ZnVuY3Rpb24oKXs1PmEmJmtiKFwiZ3B0X3B1YmFkc19yZWFkeVwiLGZ1bmN0aW9uKGIpeysrYTtsYihiKTt2YXIgYz1FcnJvcihcInB1YmFkc1JlYWR5XCIpO0UoYixcInN0YWNrXCIsWWIoYy5zdGFjayxjLm1lc3NhZ2UpKX0se3ZhOi4xfSk7cmV0dXJuITB9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9fTskYj1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07YWM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTtiYz1mdW5jdGlvbihhKXthPVtcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcihcIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3RcIik7fTtjYz1iYyh0aGlzKTtkYz1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT09dHlwZW9mIFN5bWJvbChcInhcIik7dD17fTtlYz17fTtfLkE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lY1tiXTtpZihudWxsPT1jKXJldHVybiBhW2JdO2M9YVtjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmFbYl19O2ZjPWZ1bmN0aW9uKGEsYixjKXtpZihiKWE6e3ZhciBkPWEuc3BsaXQoXCIuXCIpO2E9MT09PWQubGVuZ3RoO3ZhciBlPWRbMF0sZjshYSYmZSBpbiB0P2Y9dDpmPWNjO2ZvcihlPTA7ZTxkLmxlbmd0aC0xO2UrKyl7dmFyIGc9ZFtlXTtpZighKGcgaW4gZikpYnJlYWsgYTtmPWZbZ119ZD1kW2QubGVuZ3RoLTFdO2M9ZGMmJlwiZXM2XCI9PT1jP2ZbZF06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE/YWModCxkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYoZWNbZF09ZGM/Y2MuU3ltYm9sKGQpOlwiJGpzY3AkXCIrZCxkPWVjW2RdLGFjKGYsZCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfX07ZmMoXCJTeW1ib2xcIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGUsZil7dGhpcy5qPWU7YWModGhpcyxcImRlc2NyaXB0aW9uXCIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmfSl9O2IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyIGM9MCxkPWZ1bmN0aW9uKGUpe2lmKHRoaXMgaW5zdGFuY2VvZiBkKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3JcIik7cmV0dXJuIG5ldyBiKFwianNjb21wX3N5bWJvbF9cIisoZXx8XCJcIikrXCJfXCIrYysrLGUpfTtyZXR1cm4gZH0sXCJlczZcIik7ZmMoXCJTeW1ib2wuaXRlcmF0b3JcIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO2E9KDAsdC5TeW1ib2wpKFwiU3ltYm9sLml0ZXJhdG9yXCIpO2Zvcih2YXIgYj1cIkFycmF5IEludDhBcnJheSBVaW50OEFycmF5IFVpbnQ4Q2xhbXBlZEFycmF5IEludDE2QXJyYXkgVWludDE2QXJyYXkgSW50MzJBcnJheSBVaW50MzJBcnJheSBGbG9hdDMyQXJyYXkgRmxvYXQ2NEFycmF5XCIuc3BsaXQoXCIgXCIpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9Y2NbYltjXV07XCJmdW5jdGlvblwiPT09dHlwZW9mIGQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGQucHJvdG90eXBlW2FdJiZhYyhkLnByb3RvdHlwZSxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZ2MoJGIodGhpcykpfX0pfXJldHVybiBhfSxcImVzNlwiKTtnYz1mdW5jdGlvbihhKXthPXtuZXh0OmF9O2FbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3JldHVybiBhfTtfLkY9ZnVuY3Rpb24oYSl7dmFyIGI9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHQuU3ltYm9sJiZfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKSYmYVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV07cmV0dXJuIGI/Yi5jYWxsKGEpOntuZXh0OiRiKGEpfX07Q2I9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9W107IShiPWEubmV4dCgpKS5kb25lOyljLnB1c2goYi52YWx1ZSk7cmV0dXJuIGN9O18uRmI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBBcnJheT9hOkNiKF8uRihhKSl9O2hjPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbigpe307Yi5wcm90b3R5cGU9YTtyZXR1cm4gbmV3IGJ9O2lmKGRjJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBfLkEoT2JqZWN0LFwic2V0UHJvdG90eXBlT2ZcIikpaWM9Xy5BKE9iamVjdCxcInNldFByb3RvdHlwZU9mXCIpO2Vsc2V7dmFyIGpjO2E6e3ZhciBrYz17YTohMH0sbGM9e307dHJ5e2xjLl9fcHJvdG9fXz1rYztqYz1sYy5hO2JyZWFrIGF9Y2F0Y2goYSl7fWpjPSExfWljPWpjP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhK1wiIGlzIG5vdCBleHRlbnNpYmxlXCIpO3JldHVybiBhfTpudWxsfW1jPWljO18uSj1mdW5jdGlvbihhLGIpe2EucHJvdG90eXBlPWhjKGIucHJvdG90eXBlKTthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2lmKG1jKW1jKGEsYik7ZWxzZSBmb3IodmFyIGMgaW4gYilpZihcInByb3RvdHlwZVwiIT1jKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXX07bmM9ZnVuY3Rpb24oKXt0aGlzLm09ITE7dGhpcy5sPW51bGw7dGhpcy5vPXZvaWQgMDt0aGlzLmo9MTt0aGlzLkQ9dGhpcy5BPTA7dGhpcy52PW51bGx9O29jPWZ1bmN0aW9uKGEpe2lmKGEubSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTthLm09ITB9O25jLnByb3RvdHlwZS5DPWZ1bmN0aW9uKGEpe3RoaXMubz1hfTt2YXIgcGM9ZnVuY3Rpb24oYSxiKXthLnY9e25jOmIsY2Q6ITB9O2Euaj1hLkF8fGEuRH07bmMucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihhKXt0aGlzLnY9e3JldHVybjphfTt0aGlzLmo9dGhpcy5EfTt2YXIgRWE9ZnVuY3Rpb24oYSxiLGMpe2Euaj1jO3JldHVybnt2YWx1ZTpifX0sR2E9ZnVuY3Rpb24oYSxiKXthLmo9YjthLkE9MH0sSGE9ZnVuY3Rpb24oYSl7YS5BPTA7dmFyIGI9YS52Lm5jO2Eudj1udWxsO3JldHVybiBifSxxYz1mdW5jdGlvbihhKXt0aGlzLmo9bmV3IG5jO3RoaXMubD1hfSx0Yz1mdW5jdGlvbihhLGIpe29jKGEuaik7dmFyIGM9YS5qLmw7aWYoYylyZXR1cm4gcmMoYSxcInJldHVyblwiaW4gYz9jW1wicmV0dXJuXCJdOmZ1bmN0aW9uKGQpe3JldHVybnt2YWx1ZTpkLGRvbmU6ITB9fSxiLGEuai5yZXR1cm4pO2Euai5yZXR1cm4oYik7cmV0dXJuIHNjKGEpfSxyYz1mdW5jdGlvbihhLGIsYyxkKXt0cnl7dmFyIGU9Yi5jYWxsKGEuai5sLGMpO2lmKCEoZSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkl0ZXJhdG9yIHJlc3VsdCBcIitlK1wiIGlzIG5vdCBhbiBvYmplY3RcIik7aWYoIWUuZG9uZSlyZXR1cm4gYS5qLm09ITEsZTt2YXIgZj1lLnZhbHVlfWNhdGNoKGcpe3JldHVybiBhLmoubD1udWxsLHBjKGEuaixnKSxzYyhhKX1hLmoubD1udWxsO2QuY2FsbChhLmosZik7cmV0dXJuIHNjKGEpfSxzYz1mdW5jdGlvbihhKXtmb3IoO2Euai5qOyl0cnl7dmFyIGI9YS5sKGEuaik7aWYoYilyZXR1cm4gYS5qLm09ITEse3ZhbHVlOmIudmFsdWUsZG9uZTohMX19Y2F0Y2goYyl7YS5qLm89dm9pZCAwLHBjKGEuaixjKX1hLmoubT0hMTtpZihhLmoudil7Yj1hLmoudjthLmoudj1udWxsO2lmKGIuY2QpdGhyb3cgYi5uYztyZXR1cm57dmFsdWU6Yi5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX0sdWM9ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe29jKGEuaik7YS5qLmw/Yj1yYyhhLGEuai5sLm5leHQsYixhLmouQyk6KGEuai5DKGIpLGI9c2MoYSkpO3JldHVybiBifTt0aGlzLnRocm93PWZ1bmN0aW9uKGIpe29jKGEuaik7YS5qLmw/Yj1yYyhhLGEuai5sW1widGhyb3dcIl0sYixhLmouQyk6KHBjKGEuaixiKSxiPXNjKGEpKTtyZXR1cm4gYn07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIHRjKGEsYil9O3RoaXNbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSxEYT1mdW5jdGlvbihhLGIpe2I9bmV3IHVjKG5ldyBxYyhiKSk7bWMmJmEucHJvdG90eXBlJiZtYyhiLGEucHJvdG90eXBlKTtyZXR1cm4gYn07ZmMoXCJSZWZsZWN0LnNldFByb3RvdHlwZU9mXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTptYz9mdW5jdGlvbihiLGMpe3RyeXtyZXR1cm4gbWMoYixjKSwhMH1jYXRjaChkKXtyZXR1cm4hMX19Om51bGx9LFwiZXM2XCIpO2ZjKFwiT2JqZWN0LnNldFByb3RvdHlwZU9mXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fG1jfSxcImVzNlwiKTt2YXIgdmM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYil9LHljPWRjJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBfLkEoT2JqZWN0LFwiYXNzaWduXCIpP18uQShPYmplY3QsXCJhc3NpZ25cIik6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoZClmb3IodmFyIGUgaW4gZCl2YyhkLGUpJiYoYVtlXT1kW2VdKX1yZXR1cm4gYX07ZmMoXCJPYmplY3QuYXNzaWduXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fHljfSxcImVzNlwiKTtmYyhcIlByb21pc2VcIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7dGhpcy5qPW51bGx9ZnVuY3Rpb24gYyhnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIGU/ZzpuZXcgZShmdW5jdGlvbihoKXtoKGcpfSl9aWYoYSlyZXR1cm4gYTtiLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGcpe2lmKG51bGw9PXRoaXMuail7dGhpcy5qPVtdO3ZhciBoPXRoaXM7dGhpcy52KGZ1bmN0aW9uKCl7aC5tKCl9KX10aGlzLmoucHVzaChnKX07dmFyIGQ9Y2Muc2V0VGltZW91dDtiLnByb3RvdHlwZS52PWZ1bmN0aW9uKGcpe2QoZywwKX07Yi5wcm90b3R5cGUubT1mdW5jdGlvbigpe2Zvcig7dGhpcy5qJiZ0aGlzLmoubGVuZ3RoOyl7dmFyIGc9dGhpcy5qO3RoaXMuaj1bXTtmb3IodmFyIGg9MDtoPGcubGVuZ3RoOysraCl7dmFyIGs9Z1toXTtnW2hdPW51bGw7dHJ5e2soKX1jYXRjaChsKXt0aGlzLm8obCl9fX10aGlzLmo9bnVsbH07Yi5wcm90b3R5cGUubz1mdW5jdGlvbihnKXt0aGlzLnYoZnVuY3Rpb24oKXt0aHJvdyBnO30pfTt2YXIgZT1mdW5jdGlvbihnKXt0aGlzLmw9MDt0aGlzLm09dm9pZCAwO3RoaXMuaj1bXTt2YXIgaD10aGlzLnYoKTt0cnl7ZyhoLnJlc29sdmUsaC5yZWplY3QpfWNhdGNoKGspe2gucmVqZWN0KGspfX07ZS5wcm90b3R5cGUudj1mdW5jdGlvbigpe2Z1bmN0aW9uIGcobCl7cmV0dXJuIGZ1bmN0aW9uKG0pe2t8fChrPSEwLGwuY2FsbChoLG0pKX19dmFyIGg9dGhpcyxrPSExO3JldHVybntyZXNvbHZlOmcodGhpcy5HKSxyZWplY3Q6Zyh0aGlzLm8pfX07ZS5wcm90b3R5cGUuRz1mdW5jdGlvbihnKXtpZihnPT09dGhpcyl0aGlzLm8obmV3IFR5cGVFcnJvcihcIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGZcIikpO2Vsc2UgaWYoZyBpbnN0YW5jZW9mIGUpdGhpcy5IKGcpO2Vsc2V7YTpzd2l0Y2godHlwZW9mIGcpe2Nhc2UgXCJvYmplY3RcIjp2YXIgaD1udWxsIT1nO2JyZWFrIGE7Y2FzZSBcImZ1bmN0aW9uXCI6aD0hMDticmVhayBhO2RlZmF1bHQ6aD0hMX1oP3RoaXMuVShnKTp0aGlzLkEoZyl9fTtlLnByb3RvdHlwZS5VPWZ1bmN0aW9uKGcpe3ZhciBoPXZvaWQgMDt0cnl7aD1nLnRoZW59Y2F0Y2goayl7dGhpcy5vKGspO3JldHVybn1cImZ1bmN0aW9uXCI9PXR5cGVvZiBoP3RoaXMuSShoLGcpOnRoaXMuQShnKX07ZS5wcm90b3R5cGUubz1mdW5jdGlvbihnKXt0aGlzLkMoMixnKX07ZS5wcm90b3R5cGUuQT1mdW5jdGlvbihnKXt0aGlzLkMoMSxnKX07ZS5wcm90b3R5cGUuQz1mdW5jdGlvbihnLGgpe2lmKDAhPXRoaXMubCl0aHJvdyBFcnJvcihcIkNhbm5vdCBzZXR0bGUoXCIrZytcIiwgXCIraCtcIik6IFByb21pc2UgYWxyZWFkeSBzZXR0bGVkIGluIHN0YXRlXCIrdGhpcy5sKTt0aGlzLmw9Zzt0aGlzLm09aDt0aGlzLkQoKX07ZS5wcm90b3R5cGUuRD1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuail7Zm9yKHZhciBnPTA7Zzx0aGlzLmoubGVuZ3RoOysrZylmLmwodGhpcy5qW2ddKTt0aGlzLmo9bnVsbH19O3ZhciBmPW5ldyBiO2UucHJvdG90eXBlLkg9ZnVuY3Rpb24oZyl7dmFyIGg9dGhpcy52KCk7Zy52YihoLnJlc29sdmUsaC5yZWplY3QpfTtlLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGcsaCl7dmFyIGs9dGhpcy52KCk7dHJ5e2cuY2FsbChoLGsucmVzb2x2ZSxrLnJlamVjdCl9Y2F0Y2gobCl7ay5yZWplY3QobCl9fTtlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gayhxLHcpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHE/ZnVuY3Rpb24odSl7dHJ5e2wocSh1KSl9Y2F0Y2goQyl7bShDKX19Ond9dmFyIGwsbSxuPW5ldyBlKGZ1bmN0aW9uKHEsdyl7bD1xO209d30pO3RoaXMudmIoayhnLGwpLGsoaCxtKSk7cmV0dXJuIG59O2UucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGcpfTtlLnByb3RvdHlwZS52Yj1mdW5jdGlvbihnLGgpe2Z1bmN0aW9uIGsoKXtzd2l0Y2gobC5sKXtjYXNlIDE6ZyhsLm0pO2JyZWFrO2Nhc2UgMjpoKGwubSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihcIlVuZXhwZWN0ZWQgc3RhdGU6IFwiK2wubCk7fX12YXIgbD10aGlzO251bGw9PXRoaXMuaj9mLmwoayk6dGhpcy5qLnB1c2goayl9O2UucmVzb2x2ZT1jO2UucmVqZWN0PWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgZShmdW5jdGlvbihoLGspe2soZyl9KX07ZS5yYWNlPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgZShmdW5jdGlvbihoLGspe2Zvcih2YXIgbD1fLkYoZyksbT1sLm5leHQoKTshbS5kb25lO209bC5uZXh0KCkpYyhtLnZhbHVlKS52YihoLGspfSl9O2UuYWxsPWZ1bmN0aW9uKGcpe3ZhciBoPV8uRihnKSxrPWgubmV4dCgpO3JldHVybiBrLmRvbmU/YyhbXSk6bmV3IGUoZnVuY3Rpb24obCxtKXtmdW5jdGlvbiBuKHUpe3JldHVybiBmdW5jdGlvbihDKXtxW3VdPUM7dy0tOzA9PXcmJmwocSl9fXZhciBxPVtdLHc9MDtkbyBxLnB1c2godm9pZCAwKSx3KyssYyhrLnZhbHVlKS52YihuKHEubGVuZ3RoLTEpLG0pLGs9aC5uZXh0KCk7d2hpbGUoIWsuZG9uZSl9KX07cmV0dXJuIGV9LFwiZXM2XCIpO3ZhciB6Yz1mdW5jdGlvbihhLGIsYyl7YSBpbnN0YW5jZW9mIFN0cmluZyYmKGE9U3RyaW5nKGEpKTtmb3IodmFyIGQ9YS5sZW5ndGgsZT0wO2U8ZDtlKyspe3ZhciBmPWFbZV07aWYoYi5jYWxsKGMsZixlLGEpKXJldHVybntpOmUsS2M6Zn19cmV0dXJue2k6LTEsS2M6dm9pZCAwfX07ZmMoXCJBcnJheS5wcm90b3R5cGUuZmluZEluZGV4XCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiB6Yyh0aGlzLGIsYykuaX19LFwiZXM2XCIpO3ZhciBBYz1mdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS5cIitjK1wiIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkXCIpO2lmKGIgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuXCIrYytcIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvblwiKTtyZXR1cm4gYStcIlwifTtmYyhcIlN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGhcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9QWModGhpcyxiLFwiZW5kc1dpdGhcIik7dm9pZCAwPT09YyYmKGM9ZC5sZW5ndGgpO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsZC5sZW5ndGgpKTtmb3IodmFyIGU9Yi5sZW5ndGg7MDxlJiYwPGM7KWlmKGRbLS1jXSE9YlstLWVdKXJldHVybiExO3JldHVybiAwPj1lfX0sXCJlczZcIik7ZmMoXCJBcnJheS5wcm90b3R5cGUuZmluZFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gemModGhpcyxiLGMpLktjfX0sXCJlczZcIik7dmFyIEJjPWZ1bmN0aW9uKGEsYil7YSBpbnN0YW5jZW9mIFN0cmluZyYmKGErPVwiXCIpO3ZhciBjPTAsZD0hMSxlPXtuZXh0OmZ1bmN0aW9uKCl7aWYoIWQmJmM8YS5sZW5ndGgpe3ZhciBmPWMrKztyZXR1cm57dmFsdWU6YihmLGFbZl0pLGRvbmU6ITF9fWQ9ITA7cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX19O2VbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBlfTtmYyhcIkFycmF5LnByb3RvdHlwZS5rZXlzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBCYyh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBifSl9fSxcImVzNlwiKTtmYyhcIkFycmF5LnByb3RvdHlwZS52YWx1ZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIEJjKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gY30pfX0sXCJlczhcIik7ZmMoXCJPYmplY3QuaXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9PT1jPzAhPT1ifHwxL2I9PT0xL2M6YiE9PWImJmMhPT1jfX0sXCJlczZcIik7ZmMoXCJBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcztkIGluc3RhbmNlb2YgU3RyaW5nJiYoZD1TdHJpbmcoZCkpO3ZhciBlPWQubGVuZ3RoO2M9Y3x8MDtmb3IoMD5jJiYoYz1NYXRoLm1heChjK2UsMCkpO2M8ZTtjKyspe3ZhciBmPWRbY107aWYoZj09PWJ8fF8uQShPYmplY3QsXCJpc1wiKS5jYWxsKE9iamVjdCxmLGIpKXJldHVybiEwfXJldHVybiExfX0sXCJlczdcIik7ZmMoXCJTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybi0xIT09QWModGhpcyxiLFwiaW5jbHVkZXNcIikuaW5kZXhPZihiLGN8fDApfX0sXCJlczZcIik7ZmMoXCJXZWFrTWFwXCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31mdW5jdGlvbiBjKGcpe3ZhciBoPXR5cGVvZiBnO3JldHVyblwib2JqZWN0XCI9PT1oJiZudWxsIT09Z3x8XCJmdW5jdGlvblwiPT09aH1pZihmdW5jdGlvbigpe2lmKCFhfHwhT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBnPU9iamVjdC5zZWFsKHt9KSxoPU9iamVjdC5zZWFsKHt9KSxrPW5ldyBhKFtbZywyXSxbaCwzXV0pO2lmKDIhPWsuZ2V0KGcpfHwzIT1rLmdldChoKSlyZXR1cm4hMTtrLmRlbGV0ZShnKTtrLnNldChoLDQpO3JldHVybiFrLmhhcyhnKSYmND09ay5nZXQoaCl9Y2F0Y2gobCl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBkPVwiJGpzY29tcF9oaWRkZW5fXCIrTWF0aC5yYW5kb20oKSxlPTAsZj1mdW5jdGlvbihnKXt0aGlzLmo9KGUrPU1hdGgucmFuZG9tKCkrMSkudG9TdHJpbmcoKTtpZihnKXtnPV8uRihnKTtmb3IodmFyIGg7IShoPWcubmV4dCgpKS5kb25lOyloPWgudmFsdWUsdGhpcy5zZXQoaFswXSxoWzFdKX19O2YucHJvdG90eXBlLnNldD1mdW5jdGlvbihnLGgpe2lmKCFjKGcpKXRocm93IEVycm9yKFwiSW52YWxpZCBXZWFrTWFwIGtleVwiKTtpZighdmMoZyxkKSl7dmFyIGs9bmV3IGI7YWMoZyxkLHt2YWx1ZTprfSl9aWYoIXZjKGcsZCkpdGhyb3cgRXJyb3IoXCJXZWFrTWFwIGtleSBmYWlsOiBcIitnKTtnW2RdW3RoaXMual09aDtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ2YyhnLGQpP2dbZF1bdGhpcy5qXTp2b2lkIDB9O2YucHJvdG90eXBlLmhhcz1mdW5jdGlvbihnKXtyZXR1cm4gYyhnKSYmdmMoZyxkKSYmdmMoZ1tkXSx0aGlzLmopfTtmLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZyl7cmV0dXJuIGMoZykmJnZjKGcsZCkmJnZjKGdbZF0sdGhpcy5qKT9kZWxldGUgZ1tkXVt0aGlzLmpdOiExfTtyZXR1cm4gZn0sXCJlczZcIik7ZmMoXCJNYXBcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhXy5BKGEucHJvdG90eXBlLFwiZW50cmllc1wiKXx8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBoPU9iamVjdC5zZWFsKHt4OjR9KSxrPW5ldyBhKF8uRihbW2gsXCJzXCJdXSkpO2lmKFwic1wiIT1rLmdldChoKXx8MSE9ay5zaXplfHxrLmdldCh7eDo0fSl8fGsuc2V0KHt4OjR9LFwidFwiKSE9a3x8MiE9ay5zaXplKXJldHVybiExO3ZhciBsPV8uQShrLFwiZW50cmllc1wiKS5jYWxsKGspLG09bC5uZXh0KCk7aWYobS5kb25lfHxtLnZhbHVlWzBdIT1ofHxcInNcIiE9bS52YWx1ZVsxXSlyZXR1cm4hMTttPWwubmV4dCgpO3JldHVybiBtLmRvbmV8fDQhPW0udmFsdWVbMF0ueHx8XCJ0XCIhPW0udmFsdWVbMV18fCFsLm5leHQoKS5kb25lPyExOiEwfWNhdGNoKG4pe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgYj1uZXcgdC5XZWFrTWFwLGM9ZnVuY3Rpb24oaCl7dGhpcy5sPXt9O3RoaXMuaj1mKCk7dGhpcy5zaXplPTA7aWYoaCl7aD1fLkYoaCk7Zm9yKHZhciBrOyEoaz1oLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLHRoaXMuc2V0KGtbMF0sa1sxXSl9fTtjLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oaCxrKXtoPTA9PT1oPzA6aDt2YXIgbD1kKHRoaXMsaCk7bC5saXN0fHwobC5saXN0PXRoaXMubFtsLmlkXT1bXSk7bC5qYT9sLmphLnZhbHVlPWs6KGwuamE9e25leHQ6dGhpcy5qLERhOnRoaXMuai5EYSxoZWFkOnRoaXMuaixrZXk6aCx2YWx1ZTprfSxsLmxpc3QucHVzaChsLmphKSx0aGlzLmouRGEubmV4dD1sLmphLHRoaXMuai5EYT1sLmphLHRoaXMuc2l6ZSsrKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGgpe2g9ZCh0aGlzLGgpO3JldHVybiBoLmphJiZoLmxpc3Q/KGgubGlzdC5zcGxpY2UoaC5pbmRleCwxKSxoLmxpc3QubGVuZ3RofHxkZWxldGUgdGhpcy5sW2guaWRdLGguamEuRGEubmV4dD1oLmphLm5leHQsaC5qYS5uZXh0LkRhPWguamEuRGEsaC5qYS5oZWFkPW51bGwsdGhpcy5zaXplLS0sITApOiExfTtjLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubD17fTt0aGlzLmo9dGhpcy5qLkRhPWYoKTt0aGlzLnNpemU9MH07Yy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGgpe3JldHVybiEhZCh0aGlzLGgpLmphfTtjLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oaCl7cmV0dXJuKGg9ZCh0aGlzLGgpLmphKSYmaC52YWx1ZX07Yy5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuW2gua2V5LGgudmFsdWVdfSl9O2MucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3JldHVybiBoLmtleX0pfTtjLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3JldHVybiBoLnZhbHVlfSl9O2MucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oaCxrKXtmb3IodmFyIGw9Xy5BKHRoaXMsXCJlbnRyaWVzXCIpLmNhbGwodGhpcyksbTshKG09bC5uZXh0KCkpLmRvbmU7KW09bS52YWx1ZSxoLmNhbGwoayxtWzFdLG1bMF0sdGhpcyl9O2MucHJvdG90eXBlW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1fLkEoYy5wcm90b3R5cGUsXCJlbnRyaWVzXCIpO3ZhciBkPWZ1bmN0aW9uKGgsayl7dmFyIGw9ayYmdHlwZW9mIGs7XCJvYmplY3RcIj09bHx8XCJmdW5jdGlvblwiPT1sP2IuaGFzKGspP2w9Yi5nZXQoayk6KGw9XCJcIisgKytnLGIuc2V0KGssbCkpOmw9XCJwX1wiK2s7dmFyIG09aC5sW2xdO2lmKG0mJnZjKGgubCxsKSlmb3IoaD0wO2g8bS5sZW5ndGg7aCsrKXt2YXIgbj1tW2hdO2lmKGshPT1rJiZuLmtleSE9PW4ua2V5fHxrPT09bi5rZXkpcmV0dXJue2lkOmwsbGlzdDptLGluZGV4OmgsamE6bn19cmV0dXJue2lkOmwsbGlzdDptLGluZGV4Oi0xLGphOnZvaWQgMH19LGU9ZnVuY3Rpb24oaCxrKXt2YXIgbD1oLmo7cmV0dXJuIGdjKGZ1bmN0aW9uKCl7aWYobCl7Zm9yKDtsLmhlYWQhPWguajspbD1sLkRhO2Zvcig7bC5uZXh0IT1sLmhlYWQ7KXJldHVybiBsPWwubmV4dCx7ZG9uZTohMSx2YWx1ZTprKGwpfTtsPW51bGx9cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX0pfSxmPWZ1bmN0aW9uKCl7dmFyIGg9e307cmV0dXJuIGguRGE9aC5uZXh0PWguaGVhZD1ofSxnPTA7cmV0dXJuIGN9LFwiZXM2XCIpO2ZjKFwiU2V0XCIsZnVuY3Rpb24oYSl7aWYoZnVuY3Rpb24oKXtpZighYXx8XCJmdW5jdGlvblwiIT10eXBlb2YgYXx8IV8uQShhLnByb3RvdHlwZSxcImVudHJpZXNcIil8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIE9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgYz1PYmplY3Quc2VhbCh7eDo0fSksZD1uZXcgYShfLkYoW2NdKSk7aWYoIWQuaGFzKGMpfHwxIT1kLnNpemV8fGQuYWRkKGMpIT1kfHwxIT1kLnNpemV8fGQuYWRkKHt4OjR9KSE9ZHx8MiE9ZC5zaXplKXJldHVybiExO3ZhciBlPV8uQShkLFwiZW50cmllc1wiKS5jYWxsKGQpLGY9ZS5uZXh0KCk7aWYoZi5kb25lfHxmLnZhbHVlWzBdIT1jfHxmLnZhbHVlWzFdIT1jKXJldHVybiExO2Y9ZS5uZXh0KCk7cmV0dXJuIGYuZG9uZXx8Zi52YWx1ZVswXT09Y3x8NCE9Zi52YWx1ZVswXS54fHxmLnZhbHVlWzFdIT1mLnZhbHVlWzBdPyExOmUubmV4dCgpLmRvbmV9Y2F0Y2goZyl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGMpe3RoaXMuaj1uZXcgdC5NYXA7aWYoYyl7Yz1fLkYoYyk7Zm9yKHZhciBkOyEoZD1jLm5leHQoKSkuZG9uZTspdGhpcy5hZGQoZC52YWx1ZSl9dGhpcy5zaXplPXRoaXMuai5zaXplfTtiLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYyl7Yz0wPT09Yz8wOmM7dGhpcy5qLnNldChjLGMpO3RoaXMuc2l6ZT10aGlzLmouc2l6ZTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGMpe2M9dGhpcy5qLmRlbGV0ZShjKTt0aGlzLnNpemU9dGhpcy5qLnNpemU7cmV0dXJuIGN9O2IucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5qLmNsZWFyKCk7dGhpcy5zaXplPTB9O2IucHJvdG90eXBlLmhhcz1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5qLmhhcyhjKX07Yi5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiBfLkEodGhpcy5qLFwiZW50cmllc1wiKS5jYWxsKHRoaXMuail9O2IucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBfLkEodGhpcy5qLFwidmFsdWVzXCIpLmNhbGwodGhpcy5qKX07Yi5wcm90b3R5cGUua2V5cz1fLkEoYi5wcm90b3R5cGUsXCJ2YWx1ZXNcIik7Yi5wcm90b3R5cGVbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildPV8uQShiLnByb3RvdHlwZSxcInZhbHVlc1wiKTtiLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGMsZCl7dmFyIGU9dGhpczt0aGlzLmouZm9yRWFjaChmdW5jdGlvbihmKXtyZXR1cm4gYy5jYWxsKGQsZixmLGUpfSl9O3JldHVybiBifSxcImVzNlwiKTtmYyhcIk51bWJlci5pc0Zpbml0ZVwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuXCJudW1iZXJcIiE9PXR5cGVvZiBiPyExOiFpc05hTihiKSYmSW5maW5pdHkhPT1iJiYtSW5maW5pdHkhPT1ifX0sXCJlczZcIik7ZmMoXCJOdW1iZXIuaXNJbnRlZ2VyXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gXy5BKE51bWJlcixcImlzRmluaXRlXCIpLmNhbGwoTnVtYmVyLGIpP2I9PT1NYXRoLmZsb29yKGIpOiExfX0sXCJlczZcIik7ZmMoXCJBcnJheS5mcm9tXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMsZCl7Yz1udWxsIT1jP2M6ZnVuY3Rpb24oaCl7cmV0dXJuIGh9O3ZhciBlPVtdLGY9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHQuU3ltYm9sJiZfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKSYmYltfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZil7Yj1mLmNhbGwoYik7Zm9yKHZhciBnPTA7IShmPWIubmV4dCgpKS5kb25lOyllLnB1c2goYy5jYWxsKGQsZi52YWx1ZSxnKyspKX1lbHNlIGZvcihmPWIubGVuZ3RoLGc9MDtnPGY7ZysrKWUucHVzaChjLmNhbGwoZCxiW2ddLGcpKTtyZXR1cm4gZX19LFwiZXM2XCIpO2ZjKFwiQXJyYXkucHJvdG90eXBlLmVudHJpZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIEJjKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm5bYixjXX0pfX0sXCJlczZcIik7Xy5yPXRoaXN8fHNlbGY7Q2M9ZnVuY3Rpb24oYSxiKXthPWEuc3BsaXQoXCIuXCIpO3ZhciBjPV8ucjthWzBdaW4gY3x8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGMuZXhlY1NjcmlwdHx8Yy5leGVjU2NyaXB0KFwidmFyIFwiK2FbMF0pO2Zvcih2YXIgZDthLmxlbmd0aCYmKGQ9YS5zaGlmdCgpKTspYS5sZW5ndGh8fHZvaWQgMD09PWI/Y1tkXSYmY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0/Yz1jW2RdOmM9Y1tkXT17fTpjW2RdPWJ9O0ZjPWZ1bmN0aW9uKGEpe2lmKGEmJmEhPV8ucilyZXR1cm4gRGMoYS5kb2N1bWVudCk7bnVsbD09PUVjJiYoRWM9RGMoXy5yLmRvY3VtZW50KSk7cmV0dXJuIEVjfTtHYz0vXltcXHcrL18tXStbPV17MCwyfSQvO0VjPW51bGw7RGM9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoXCJzY3JpcHRbbm9uY2VdXCIpKSYmKGE9YS5ub25jZXx8YS5nZXRBdHRyaWJ1dGUoXCJub25jZVwiKSkmJkdjLnRlc3QoYSk/YTpcIlwifTtfLkhjPWZ1bmN0aW9uKCl7fTtJYz1mdW5jdGlvbihhKXthLmJiPXZvaWQgMDthLkI9ZnVuY3Rpb24oKXtyZXR1cm4gYS5iYj9hLmJiOmEuYmI9bmV3IGF9fTtKYz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm5cIm9iamVjdFwiIT1iP2I6YT9BcnJheS5pc0FycmF5KGEpP1wiYXJyYXlcIjpiOlwibnVsbFwifTtLYz1mdW5jdGlvbihhKXt2YXIgYj1KYyhhKTtyZXR1cm5cImFycmF5XCI9PWJ8fFwib2JqZWN0XCI9PWImJlwibnVtYmVyXCI9PXR5cGVvZiBhLmxlbmd0aH07TGM9ZnVuY3Rpb24oYSl7cmV0dXJuXCJmdW5jdGlvblwiPT1KYyhhKX07Xy5NYz1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm5cIm9iamVjdFwiPT1iJiZudWxsIT1hfHxcImZ1bmN0aW9uXCI9PWJ9O0JiPWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxOYykmJmFbTmNdfHwoYVtOY109KytPYyl9O05jPVwiY2xvc3VyZV91aWRfXCIrKDFFOSpNYXRoLnJhbmRvbSgpPj4+MCk7T2M9MDtQYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuY2FsbC5hcHBseShhLmJpbmQsYXJndW1lbnRzKX07UWM9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O18uUmM9ZnVuY3Rpb24oYSxiLGMpe0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiYtMSE9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQudG9TdHJpbmcoKS5pbmRleE9mKFwibmF0aXZlIGNvZGVcIik/Xy5SYz1QYzpfLlJjPVFjO3JldHVybiBfLlJjLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Xy5TYz1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07VGM9RGF0ZS5ub3c7Sz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5wcm90b3R5cGU9bmV3IGM7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YX07dmFyIENhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dm9pZCAwO3JldHVybiBuZXcgKGN8fChjPXQuUHJvbWlzZSkpKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gZihrKXt0cnl7aChiLm5leHQoaykpfWNhdGNoKGwpe2UobCl9fWZ1bmN0aW9uIGcoayl7dHJ5e2goYltcInRocm93XCJdKGspKX1jYXRjaChsKXtlKGwpfX1mdW5jdGlvbiBoKGspe2suZG9uZT9kKGsudmFsdWUpOihuZXcgYyhmdW5jdGlvbihsKXtsKGsudmFsdWUpfSkpLnRoZW4oZixnKX1oKChiPWIuYXBwbHkoYSx2b2lkIDApKS5uZXh0KCkpfSl9O3ZhciBVYzt2YXIgV2MsWmMsWWMsYWQsYmQsY2QsVWEsVmEsZWQsZGQsZmQsZ2QsaGQ7Xy5WYz1mdW5jdGlvbihhLGIpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLHZvaWQgMCl9O18uVGE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGEsYix2b2lkIDApfTtfLlJhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhLGIsdm9pZCAwKX07V2M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGEsYiwwKX07Xy5YYz1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYix2b2lkIDApfTtaYz1mdW5jdGlvbihhLGIpe2I9WWMoYSxiKTtyZXR1cm4gMD5iP251bGw6XCJzdHJpbmdcIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19O1ljPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxlPTA7ZTxjO2UrKylpZihlIGluIGQmJmIuY2FsbCh2b2lkIDAsZFtlXSxlLGEpKXJldHVybiBlO3JldHVybi0xfTtfLiRjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA8PUFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLHZvaWQgMCl9O2FkPWZ1bmN0aW9uKGEsYil7Yj1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGEsYix2b2lkIDApO3ZhciBjOyhjPTA8PWIpJiZBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYSxiLDEpO3JldHVybiBjfTtiZD1mdW5jdGlvbihhKXt2YXIgYj1hLmxlbmd0aDtpZigwPGIpe2Zvcih2YXIgYz1BcnJheShiKSxkPTA7ZDxiO2QrKyljW2RdPWFbZF07cmV0dXJuIGN9cmV0dXJuW119O2NkPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX07VWE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9MCxkPTA7ZDxhLmxlbmd0aDspe3ZhciBlPWFbZCsrXTt2YXIgZj1lO2Y9Xy5NYyhmKT9cIm9cIitCYihmKToodHlwZW9mIGYpLmNoYXJBdCgwKStmO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGYpfHwoYltmXT0hMCxhW2MrK109ZSl9YS5sZW5ndGg9Y307VmE9ZnVuY3Rpb24oYSxiKXthLnNvcnQoYnx8ZGQpfTtlZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1BcnJheShhLmxlbmd0aCksZD0wO2Q8YS5sZW5ndGg7ZCsrKWNbZF09e2luZGV4OmQsdmFsdWU6YVtkXX07dmFyIGU9Ynx8ZGQ7VmEoYyxmdW5jdGlvbihmLGcpe3JldHVybiBlKGYudmFsdWUsZy52YWx1ZSl8fGYuaW5kZXgtZy5pbmRleH0pO2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspYVtkXT1jW2RdLnZhbHVlfTtkZD1mdW5jdGlvbihhLGIpe3JldHVybiBhPmI/MTphPGI/LTE6MH07ZmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWJ9O2dkPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXt9LGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGU9YVtkXSxmPWIuY2FsbCh2b2lkIDAsZSxkLGEpO3ZvaWQgMCE9PWYmJihjW2ZdfHwoY1tmXT1bXSkpLnB1c2goZSl9cmV0dXJuIGN9O2hkPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKEFycmF5LmlzQXJyYXkoZCkpZm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKz04MTkyKWZvcih2YXIgZj1oZC5hcHBseShudWxsLGNkKGQsZSxlKzgxOTIpKSxnPTA7ZzxmLmxlbmd0aDtnKyspYi5wdXNoKGZbZ10pO2Vsc2UgYi5wdXNoKGQpfXJldHVybiBifTt2YXIgaWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdmE9ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYztyZXR1cm4gZnVuY3Rpb24oKXtifHwoYz1hKCksYj0hMCk7cmV0dXJuIGN9fSxqZD1mdW5jdGlvbihhKXt2YXIgYj1hO3JldHVybiBmdW5jdGlvbigpe2lmKGIpe3ZhciBjPWI7Yj1udWxsO2MoKX19fSxrZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9MCxlPSExLGY9W10sZz1mdW5jdGlvbigpe2Q9MDtlJiYoZT0hMSxoKCkpfSxoPWZ1bmN0aW9uKCl7ZD1fLnIuc2V0VGltZW91dChnLGIpO2EuYXBwbHkoYyxmKX07cmV0dXJuIGZ1bmN0aW9uKGspe2Y9YXJndW1lbnRzO2Q/ZT0hMDpoKCl9fTt2YXIgbGQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMgaW4gYSliLmNhbGwodm9pZCAwLGFbY10sYyxhKX0sbWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYX0sbmQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMgaW4gYSlpZihiLmNhbGwodm9pZCAwLGFbY10sYyxhKSlyZXR1cm4gY30sb2Q9XCJjb25zdHJ1Y3RvciBoYXNPd25Qcm9wZXJ0eSBpc1Byb3RvdHlwZU9mIHByb3BlcnR5SXNFbnVtZXJhYmxlIHRvTG9jYWxlU3RyaW5nIHRvU3RyaW5nIHZhbHVlT2ZcIi5zcGxpdChcIiBcIikscGQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZCxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKHZhciBmPTA7ZjxvZC5sZW5ndGg7ZisrKWM9b2RbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX0scWQ9ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aDtpZigxPT1iJiZBcnJheS5pc0FycmF5KGFyZ3VtZW50c1swXSkpcmV0dXJuIHFkLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtmb3IodmFyIGM9e30sZD0wO2Q8YjtkKyspY1thcmd1bWVudHNbZF1dPSEwO3JldHVybiBjfTt2YXIgdGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmo9YT09PXJkJiZifHxcIlwiO3RoaXMubD1zZH07dGQucHJvdG90eXBlLmxiPSEwO3RkLnByb3RvdHlwZS5OYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O3ZhciB1ZD1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIHRkJiZhLmNvbnN0cnVjdG9yPT09dGQmJmEubD09PXNkP2EuajpcInR5cGVfZXJyb3I6Q29uc3RcIn0sdmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB0ZChyZCxhKX0sc2Q9e30scmQ9e307dmFyIHhkPWZ1bmN0aW9uKGEsYil7dGhpcy5qPWI9PT13ZD9hOlwiXCJ9O3hkLnByb3RvdHlwZS5sYj0hMDt4ZC5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnRvU3RyaW5nKCl9O3ZhciB5ZD1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIHhkJiZhLmNvbnN0cnVjdG9yPT09eGQ/YS5qOlwidHlwZV9lcnJvcjpUcnVzdGVkUmVzb3VyY2VVcmxcIn0sSmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz11ZChhKTtpZighemQudGVzdChjKSl0aHJvdyBFcnJvcihcIkludmFsaWQgVHJ1c3RlZFJlc291cmNlVXJsIGZvcm1hdDogXCIrYyk7YT1jLnJlcGxhY2UoQWQsZnVuY3Rpb24oZCxlKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZSkpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgXCInK2UrJ1wiLCBpbiBmb3JtYXQgc3RyaW5nLCBcIicrYysnXCIsIGJ1dCBubyB2YWxpZCBsYWJlbCBtYXBwaW5nIGZvdW5kIGluIGFyZ3M6ICcrSlNPTi5zdHJpbmdpZnkoYikpO2Q9YltlXTtyZXR1cm4gZCBpbnN0YW5jZW9mIHRkP3VkKGQpOmVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpfSk7cmV0dXJuIEJkKGEpfSxBZD0vJXsoXFx3Kyl9L2csemQ9L14oKGh0dHBzOik/XFwvXFwvWzAtOWEtei46W1xcXS1dK1xcL3xcXC9bXi9cXFxcXXxbXjovXFxcXCVdK1xcL3xbXjovXFxcXCVdKls/I118YWJvdXQ6YmxhbmsjKS9pLENkPS9eKFtePyNdKikoXFw/W14jXSopPygjW1xcc1xcU10qKT8vLHdkPXt9LEJkPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgeGQoYSx3ZCl9LERkPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYylyZXR1cm4gYz9hK2VuY29kZVVSSUNvbXBvbmVudChjKTpcIlwiO2Zvcih2YXIgZCBpbiBjKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGQpKXt2YXIgZT1jW2RdO2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIGc9ZVtmXTtudWxsIT1nJiYoYnx8KGI9YSksYis9KGIubGVuZ3RoPmEubGVuZ3RoP1wiJlwiOlwiXCIpK2VuY29kZVVSSUNvbXBvbmVudChkKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGcpKSl9fXJldHVybiBifTt2YXIgRWQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aC1iLmxlbmd0aDtyZXR1cm4gMDw9YyYmYS5pbmRleE9mKGIsYyk9PWN9LEZkPWZ1bmN0aW9uKGEpe3JldHVybi9eW1xcc1xceGEwXSokLy50ZXN0KGEpfSxHZD1mdW5jdGlvbihhKXtyZXR1cm4vXltcXHNcXHhhMF0qKFtcXHNcXFNdKj8pW1xcc1xceGEwXSokLy5leGVjKGEpWzFdfSxIZD0vJi9nLElkPS88L2csSmQ9Lz4vZyxLZD0vXCIvZyxMZD0vJy9nLE1kPS9cXHgwMC9nLE5kPS9bXFx4MDAmPD5cIiddLyxQZD1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YT1HZChTdHJpbmcoYSkpLnNwbGl0KFwiLlwiKTtiPUdkKFN0cmluZyhiKSkuc3BsaXQoXCIuXCIpO2Zvcih2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCksZT0wOzA9PWMmJmU8ZDtlKyspe3ZhciBmPWFbZV18fFwiXCIsZz1iW2VdfHxcIlwiO2Rve2Y9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZil8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtnPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGcpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07aWYoMD09ZlswXS5sZW5ndGgmJjA9PWdbMF0ubGVuZ3RoKWJyZWFrO2M9T2QoMD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKSwwPT1nWzFdLmxlbmd0aD8wOnBhcnNlSW50KGdbMV0sMTApKXx8T2QoMD09ZlsyXS5sZW5ndGgsMD09Z1syXS5sZW5ndGgpfHxPZChmWzJdLGdbMl0pO2Y9ZlszXTtnPWdbM119d2hpbGUoMD09Yyl9cmV0dXJuIGN9LE9kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfTt2YXIgVGQsUWQ7Xy5SZD1mdW5jdGlvbihhLGIpe3RoaXMuaj1iPT09UWQ/YTpcIlwifTtfLlJkLnByb3RvdHlwZS5sYj0hMDtfLlJkLnByb3RvdHlwZS5OYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07Xy5TZD1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uUmQmJmEuY29uc3RydWN0b3I9PT1fLlJkP2EuajpcInR5cGVfZXJyb3I6U2FmZVVybFwifTtUZD0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwKTp8W146Lz8jXSooPzpbLz8jXXwkKSkvaTtfLlVkPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBfLlJkKXJldHVybiBhO2E9XCJvYmplY3RcIj09dHlwZW9mIGEmJmEubGI/YS5OYSgpOlN0cmluZyhhKTtUZC50ZXN0KGEpfHwoYT1cImFib3V0OmludmFsaWQjekNsb3N1cmV6XCIpO3JldHVybiBuZXcgXy5SZChhLFFkKX07UWQ9e307dmFyIFZkO2E6e3ZhciBXZD1fLnIubmF2aWdhdG9yO2lmKFdkKXt2YXIgWGQ9V2QudXNlckFnZW50O2lmKFhkKXtWZD1YZDticmVhayBhfX1WZD1cIlwifXZhciBMPWZ1bmN0aW9uKGEpe3JldHVybi0xIT1WZC5pbmRleE9mKGEpfSxZZD1mdW5jdGlvbihhKXtmb3IodmFyIGI9LyhcXHdbXFx3IF0rKVxcLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/L2csYz1bXSxkO2Q9Yi5leGVjKGEpOyljLnB1c2goW2RbMV0sZFsyXSxkWzNdfHx2b2lkIDBdKTtyZXR1cm4gY307dmFyIFpkPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJUcmlkZW50XCIpfHxMKFwiTVNJRVwiKX0sJGQ9ZnVuY3Rpb24oKXtyZXR1cm4gTChcIkZpcmVmb3hcIil8fEwoXCJGeGlPU1wiKX0sYmU9ZnVuY3Rpb24oKXtyZXR1cm4gTChcIlNhZmFyaVwiKSYmIShhZSgpfHxMKFwiQ29hc3RcIil8fEwoXCJPcGVyYVwiKXx8TChcIkVkZ2VcIil8fEwoXCJFZGcvXCIpfHxMKFwiT1BSXCIpfHwkZCgpfHxMKFwiU2lsa1wiKXx8TChcIkFuZHJvaWRcIikpfSxhZT1mdW5jdGlvbigpe3JldHVybihMKFwiQ2hyb21lXCIpfHxMKFwiQ3JpT1NcIikpJiYhTChcIkVkZ2VcIil9LGRlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShlKXtlPVpjKGUsZCk7cmV0dXJuIGNbZV18fFwiXCJ9dmFyIGI9VmQ7aWYoWmQoKSlyZXR1cm4gY2UoYik7Yj1ZZChiKTt2YXIgYz17fTtfLlZjKGIsZnVuY3Rpb24oZSl7Y1tlWzBdXT1lWzFdfSk7dmFyIGQ9Xy5TYyhtZCxjKTtyZXR1cm4gTChcIk9wZXJhXCIpP2EoW1wiVmVyc2lvblwiLFwiT3BlcmFcIl0pOkwoXCJFZGdlXCIpP2EoW1wiRWRnZVwiXSk6TChcIkVkZy9cIik/YShbXCJFZGdcIl0pOmFlKCk/YShbXCJDaHJvbWVcIixcIkNyaU9TXCIsXCJIZWFkbGVzc0Nocm9tZVwiXSk6KGI9YlsyXSkmJmJbMV18fFwiXCJ9LGNlPWZ1bmN0aW9uKGEpe3ZhciBiPS9ydjogKihbXFxkXFwuXSopLy5leGVjKGEpO2lmKGImJmJbMV0pcmV0dXJuIGJbMV07Yj1cIlwiO3ZhciBjPS9NU0lFICsoW1xcZFxcLl0rKS8uZXhlYyhhKTtpZihjJiZjWzFdKWlmKGE9L1RyaWRlbnRcXC8oXFxkLlxcZCkvLmV4ZWMoYSksXCI3LjBcIj09Y1sxXSlpZihhJiZhWzFdKXN3aXRjaChhWzFdKXtjYXNlIFwiNC4wXCI6Yj1cIjguMFwiO2JyZWFrO2Nhc2UgXCI1LjBcIjpiPVwiOS4wXCI7YnJlYWs7Y2FzZSBcIjYuMFwiOmI9XCIxMC4wXCI7YnJlYWs7Y2FzZSBcIjcuMFwiOmI9XCIxMS4wXCJ9ZWxzZSBiPVwiNy4wXCI7ZWxzZSBiPWNbMV07cmV0dXJuIGJ9O3ZhciBmZT1mdW5jdGlvbihhLGIsYyl7dGhpcy5qPWM9PT1lZT9hOlwiXCJ9O2ZlLnByb3RvdHlwZS5sYj0hMDtmZS5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnRvU3RyaW5nKCl9O3ZhciBlZT17fTt2YXIgQWE9ZnVuY3Rpb24oYSxiKXthLnNyYz15ZChiKTsoYj1GYyhhLm93bmVyRG9jdW1lbnQmJmEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykpJiZhLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsYil9O3ZhciBnZSxoZSxpZSxqZSxsZTtnZT1mdW5jdGlvbihhKXtOZC50ZXN0KGEpJiYoLTEhPWEuaW5kZXhPZihcIiZcIikmJihhPWEucmVwbGFjZShIZCxcIiZhbXA7XCIpKSwtMSE9YS5pbmRleE9mKFwiPFwiKSYmKGE9YS5yZXBsYWNlKElkLFwiJmx0O1wiKSksLTEhPWEuaW5kZXhPZihcIj5cIikmJihhPWEucmVwbGFjZShKZCxcIiZndDtcIikpLC0xIT1hLmluZGV4T2YoJ1wiJykmJihhPWEucmVwbGFjZShLZCxcIiZxdW90O1wiKSksLTEhPWEuaW5kZXhPZihcIidcIikmJihhPWEucmVwbGFjZShMZCxcIiYjMzk7XCIpKSwtMSE9YS5pbmRleE9mKFwiXFx4MDBcIikmJihhPWEucmVwbGFjZShNZCxcIiYjMDtcIikpKTtyZXR1cm4gYX07aGU9U3RyaW5nLnByb3RvdHlwZS5yZXBlYXQ/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBlYXQoYil9OmZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5KGIrMSkuam9pbihhKX07aWU9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7dmFyIGI9YS5pbmRleE9mKFwiLlwiKTstMT09YiYmKGI9YS5sZW5ndGgpO3JldHVybiBoZShcIjBcIixNYXRoLm1heCgwLDItYikpK2F9O2plPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMjE0NzQ4MzY0OCpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNikrTWF0aC5hYnMoTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpXlRjKCkpLnRvU3RyaW5nKDM2KX07Xy5rZT1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLnJlcGxhY2UoL1xcLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07bGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xcc10rKShbYS16XSkvZyxmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMrZC50b1VwcGVyQ2FzZSgpfSl9O3ZhciBhYT0wLGJhPTA7dmFyIG1lPWZ1bmN0aW9uKCl7dGhpcy5qPVtdfTttZS5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5sZW5ndGh9O3ZhciBuZT1mdW5jdGlvbihhKXt2YXIgYj1hLmo7YS5qPVtdO3JldHVybiBifSxvZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9YWEsYz1iYTswPGN8fDEyNzxiOylhLmoucHVzaChiJjEyN3wxMjgpLGI9KGI+Pj43fGM8PDI1KT4+PjAsYz4+Pj03O2Euai5wdXNoKGIpfSxwZT1mdW5jdGlvbihhLGIpe2Zvcig7MTI3PGI7KWEuai5wdXNoKGImMTI3fDEyOCksYj4+Pj03O2Euai5wdXNoKGIpfTt2YXIgcWU9ZnVuY3Rpb24oKXtyZXR1cm4gTChcImlQaG9uZVwiKSYmIUwoXCJpUG9kXCIpJiYhTChcImlQYWRcIil9O3ZhciByZT1mdW5jdGlvbihhKXtyZVtcIiBcIl0oYSk7cmV0dXJuIGF9O3JlW1wiIFwiXT1fLkhjO3ZhciBzZT1mdW5jdGlvbihhLGIpe3RyeXtyZXR1cm4gcmUoYVtiXSksITB9Y2F0Y2goYyl7fXJldHVybiExfSxFYj1mdW5jdGlvbihhLGIsYyxkKXtkPWQ/ZChiKTpiO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKT9hW2RdOmFbZF09YyhiKX07dmFyIHRlLHZlLHdlLHhlLHllLHplLEFlLEJlLENlLERlLEVlLEZlO3RlPUwoXCJPcGVyYVwiKTtfLnVlPVpkKCk7dmU9TChcIkVkZ2VcIik7d2U9dmV8fF8udWU7eGU9TChcIkdlY2tvXCIpJiYhKC0xIT1WZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJ3ZWJraXRcIikmJiFMKFwiRWRnZVwiKSkmJiEoTChcIlRyaWRlbnRcIil8fEwoXCJNU0lFXCIpKSYmIUwoXCJFZGdlXCIpO3llPS0xIT1WZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJ3ZWJraXRcIikmJiFMKFwiRWRnZVwiKTt6ZT15ZSYmTChcIk1vYmlsZVwiKTtBZT1MKFwiQW5kcm9pZFwiKTtCZT1xZSgpO0NlPUwoXCJpUGFkXCIpO0RlPUwoXCJpUG9kXCIpO0VlPWZ1bmN0aW9uKCl7dmFyIGE9Xy5yLmRvY3VtZW50O3JldHVybiBhP2EuZG9jdW1lbnRNb2RlOnZvaWQgMH07YTp7dmFyIEdlPVwiXCIsSGU9ZnVuY3Rpb24oKXt2YXIgYT1WZDtpZih4ZSlyZXR1cm4vcnY6KFteXFwpO10rKShcXCl8OykvLmV4ZWMoYSk7aWYodmUpcmV0dXJuL0VkZ2VcXC8oW1xcZFxcLl0rKS8uZXhlYyhhKTtpZihfLnVlKXJldHVybi9cXGIoPzpNU0lFfHJ2KVs6IF0oW15cXCk7XSspKFxcKXw7KS8uZXhlYyhhKTtpZih5ZSlyZXR1cm4vV2ViS2l0XFwvKFxcUyspLy5leGVjKGEpO2lmKHRlKXJldHVybi8oPzpWZXJzaW9uKVsgXFwvXT8oXFxTKykvLmV4ZWMoYSl9KCk7SGUmJihHZT1IZT9IZVsxXTpcIlwiKTtpZihfLnVlKXt2YXIgSWU9RWUoKTtpZihudWxsIT1JZSYmSWU+cGFyc2VGbG9hdChHZSkpe0ZlPVN0cmluZyhJZSk7YnJlYWsgYX19RmU9R2V9dmFyIEplPUZlLEtlPXt9LExlPWZ1bmN0aW9uKGEpe3JldHVybiBFYihLZSxhLGZ1bmN0aW9uKCl7cmV0dXJuIDA8PVBkKEplLGEpfSl9LE1lO2lmKF8uci5kb2N1bWVudCYmXy51ZSl7dmFyIE5lPUVlKCk7TWU9TmU/TmU6cGFyc2VJbnQoSmUsMTApfHx2b2lkIDB9ZWxzZSBNZT12b2lkIDA7dmFyIE9lPU1lO3ZhciBQZT1hZSgpLFFlPWJlKCkmJiEocWUoKXx8TChcImlQYWRcIil8fEwoXCJpUG9kXCIpKTt2YXIgUmU9e30sU2U9bnVsbCxUZT14ZXx8eWUmJiFRZXx8dGV8fFwiZnVuY3Rpb25cIj09dHlwZW9mIF8uci5idG9hLFVlPWZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9MCk7aWYoIVNlKXtTZT17fTtmb3IodmFyIGM9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLnNwbGl0KFwiXCIpLGQ9W1wiKy89XCIsXCIrL1wiLFwiLV89XCIsXCItXy5cIixcIi1fXCJdLGU9MDs1PmU7ZSsrKXt2YXIgZj1jLmNvbmNhdChkW2VdLnNwbGl0KFwiXCIpKTtSZVtlXT1mO2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgaD1mW2ddO3ZvaWQgMD09PVNlW2hdJiYoU2VbaF09Zyl9fX1iPVJlW2JdO2M9W107Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrPTMpe3ZhciBrPWFbZF0sbD0oZT1kKzE8YS5sZW5ndGgpP2FbZCsxXTowO2g9KGY9ZCsyPGEubGVuZ3RoKT9hW2QrMl06MDtnPWs+PjI7az0oayYzKTw8NHxsPj40O2w9KGwmMTUpPDwyfGg+PjY7aCY9NjM7Znx8KGg9NjQsZXx8KGw9NjQpKTtjLnB1c2goYltnXSxiW2tdLGJbbF18fFwiXCIsYltoXXx8XCJcIil9cmV0dXJuIGMuam9pbihcIlwiKX0sVmU9ZnVuY3Rpb24oYSxiKXtpZihUZSYmIWIpYT1fLnIuYnRvYShhKTtlbHNle2Zvcih2YXIgYz1bXSxkPTAsZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgZj1hLmNoYXJDb2RlQXQoZSk7MjU1PGYmJihjW2QrK109ZiYyNTUsZj4+PTgpO2NbZCsrXT1mfWE9VWUoYyxiKX1yZXR1cm4gYX07dmFyIFdlPWZ1bmN0aW9uKCl7dGhpcy52PVtdO3RoaXMubD0wO3RoaXMuaj1uZXcgbWV9LFhlPWZ1bmN0aW9uKGEsYil7cGUoYS5qLDgqYisyKTtiPW5lKGEuaik7YS52LnB1c2goYik7YS5sKz1iLmxlbmd0aDtiLnB1c2goYS5sKTtyZXR1cm4gYn0sWWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnBvcCgpO2ZvcihjPWEubCthLmoubGVuZ3RoKCktYzsxMjc8YzspYi5wdXNoKGMmMTI3fDEyOCksYz4+Pj03LGEubCsrO2IucHVzaChjKTthLmwrK30sWmU9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW5ldyBVaW50OEFycmF5KGEubCthLmoubGVuZ3RoKCkpLGM9YS52LGQ9Yy5sZW5ndGgsZT0wLGY9MDtmPGQ7ZisrKXt2YXIgZz1jW2ZdO2Iuc2V0KGcsZSk7ZSs9Zy5sZW5ndGh9Yz1uZShhLmopO2Iuc2V0KGMsZSk7YS52PVtiXTtyZXR1cm4gYn0sJGU9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPWMmJm51bGwhPWMpaWYocGUoYS5qLDgqYiksYT1hLmosMDw9YylwZShhLGMpO2Vsc2V7Zm9yKGI9MDs5PmI7YisrKWEuai5wdXNoKGMmMTI3fDEyOCksYz4+PTc7YS5qLnB1c2goMSl9fSxhZj1mdW5jdGlvbihhLGIsYyl7bnVsbCE9YyYmbnVsbCE9YyYmKHBlKGEuaiw4KmIpLGE9YS5qLGNhKGMpLG9lKGEpKX0sYmY9ZnVuY3Rpb24oYSxiLGMpe251bGwhPWMmJm51bGwhPWMmJihwZShhLmosOCpiKSxhPWEuaixjYShjKSxvZShhKSl9LGNmPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT1jKXtiPVhlKGEsYik7Zm9yKHZhciBkPWEuaixlPTA7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWMuY2hhckNvZGVBdChlKTtpZigxMjg+ZilkLmoucHVzaChmKTtlbHNlIGlmKDIwNDg+ZilkLmoucHVzaChmPj42fDE5MiksZC5qLnB1c2goZiY2M3wxMjgpO2Vsc2UgaWYoNjU1MzY+ZilpZig1NTI5Njw9ZiYmNTYzMTk+PWYmJmUrMTxjLmxlbmd0aCl7dmFyIGc9Yy5jaGFyQ29kZUF0KGUrMSk7NTYzMjA8PWcmJjU3MzQzPj1nJiYoZj0xMDI0KihmLTU1Mjk2KStnLTU2MzIwKzY1NTM2LGQuai5wdXNoKGY+PjE4fDI0MCksZC5qLnB1c2goZj4+MTImNjN8MTI4KSxkLmoucHVzaChmPj42JjYzfDEyOCksZC5qLnB1c2goZiY2M3wxMjgpLGUrKyl9ZWxzZSBkLmoucHVzaChmPj4xMnwyMjQpLGQuai5wdXNoKGY+PjYmNjN8MTI4KSxkLmoucHVzaChmJjYzfDEyOCl9WWUoYSxiKX19LGVmPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1kZjtudWxsIT1jJiYoYj1YZShhLGIpLGQoYyxhKSxZZShhLGIpKX0sZmY9ZnVuY3Rpb24oYSxiLGMsZCl7aWYobnVsbCE9Yylmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9WGUoYSxiKTtkKGNbZV0sYSk7WWUoYSxmKX19O3ZhciBNPWZ1bmN0aW9uKCl7fSxnZj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LGtmPWZ1bmN0aW9uKGEsYixjLGQpe2Euaj1udWxsO2J8fChiPVtdKTthLkM9dm9pZCAwO2Eudj0tMTthLmlhPWI7YTp7aWYoYj1hLmlhLmxlbmd0aCl7LS1iO3ZhciBlPWEuaWFbYl07aWYoIShudWxsPT09ZXx8XCJvYmplY3RcIiE9dHlwZW9mIGV8fEFycmF5LmlzQXJyYXkoZSl8fGdmJiZlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2Eubz1iLWEudjthLmw9ZTticmVhayBhfX1hLm89TnVtYmVyLk1BWF9WQUxVRX1hLkE9e307aWYoYylmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKWU9Y1tiXSxlPGEubz8oZSs9YS52LGEuaWFbZV09YS5pYVtlXXx8aGYpOihqZihhKSxhLmxbZV09YS5sW2VdfHxoZik7aWYoZCYmZC5sZW5ndGgpZm9yKGI9MDtiPGQubGVuZ3RoO2IrKyl7ZT1jPXZvaWQgMDtmb3IodmFyIGY9YSxnPWRbYl0saD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgaz1nW2hdLGw9QihmLGspO251bGwhPWwmJihlPWssYz1sLEQoZixrLHZvaWQgMCkpfWUmJkQoZixlLGMpfX0saGY9W10samY9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vK2EudjthLmlhW2JdfHwoYS5sPWEuaWFbYl09e30pfSxCPWZ1bmN0aW9uKGEsYil7aWYoYjxhLm8pe2IrPWEudjt2YXIgYz1hLmlhW2JdO3JldHVybiBjPT09aGY/YS5pYVtiXT1bXTpjfWlmKGEubClyZXR1cm4gYz1hLmxbYl0sYz09PWhmP2EubFtiXT1bXTpjfSxsZj1mdW5jdGlvbihhLGIpe2E9QihhLGIpO3JldHVybiBudWxsPT1hP2E6K2F9LHg9ZnVuY3Rpb24oYSxiKXthPUIoYSxiKTtyZXR1cm4gbnVsbD09YT9hOiEhYX0sbWY9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWF8fFwic3RyaW5nXCI9PT10eXBlb2YgYT9hOmdmJiZhIGluc3RhbmNlb2YgVWludDhBcnJheT9VZShhKTpudWxsfSxuZj1mdW5jdGlvbihhLGIsYyl7YT1CKGEsYik7cmV0dXJuIG51bGw9PWE/YzphfSxvZj1mdW5jdGlvbihhKXthPXgoYSwxMik7cmV0dXJuIG51bGw9PWE/ITE6YX0scGY9ZnVuY3Rpb24oYSl7YT1sZihhLDIpO3JldHVybiBudWxsPT1hPzE6YX0sRD1mdW5jdGlvbihhLGIsYyl7YjxhLm8/YS5pYVtiK2Eudl09YzooamYoYSksYS5sW2JdPWMpO3JldHVybiBhfSxyZj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHFmKGEsYixjLCExKX0scWY9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9PWQ/RChhLGIsYyk6YjxhLm8/YS5pYVtiK2Eudl09bnVsbDooamYoYSksZGVsZXRlIGEubFtiXSk7cmV0dXJuIGF9LHNmPWZ1bmN0aW9uKGEsYixjKXtCKGEsYikucHVzaChjKX0sTz1mdW5jdGlvbihhLGIsYyl7YS5qfHwoYS5qPXt9KTtpZighYS5qW2NdKXt2YXIgZD1CKGEsYyk7ZCYmKGEualtjXT1uZXcgYihkKSl9cmV0dXJuIGEualtjXX0sdWY9ZnVuY3Rpb24oYSxiLGMpe3RmKGEsYixjKTtiPWEualtjXTtiPT1oZiYmKGI9YS5qW2NdPVtdKTtyZXR1cm4gYn0sdGY9ZnVuY3Rpb24oYSxiLGMpe2Euanx8KGEuaj17fSk7aWYoIWEualtjXSl7Zm9yKHZhciBkPUIoYSxjKSxlPVtdLGY9MDtmPGQubGVuZ3RoO2YrKyllW2ZdPW5ldyBiKGRbZl0pO2EualtjXT1lfX0sdmY9ZnVuY3Rpb24oYSxiLGMpe2Euanx8KGEuaj17fSk7dmFyIGQ9Yz9jLmlhOmM7YS5qW2JdPWM7cmV0dXJuIEQoYSxiLGQpfSx3Zj1mdW5jdGlvbihhLGIsYyl7YS5qfHwoYS5qPXt9KTtjPWN8fFtdO2Zvcih2YXIgZD1bXSxlPTA7ZTxjLmxlbmd0aDtlKyspZFtlXT1jW2VdLmlhO2EualtiXT1jO3JldHVybiBEKGEsYixkKX0seGY9ZnVuY3Rpb24oYSxiLGMsZCl7dGYoYSxkLGIpO3ZhciBlPWEualtiXTtlfHwoZT1hLmpbYl09W10pO2M9Yz9jOm5ldyBkO2E9QihhLGIpO2UucHVzaChjKTthLnB1c2goYy5pYSl9O00ucHJvdG90eXBlLm09Z2Y/ZnVuY3Rpb24oKXt2YXIgYT1VaW50OEFycmF5LnByb3RvdHlwZS50b0pTT047VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIFVlKHRoaXMpfTt0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaWEmJnRoaXMuaWEseWYpfWZpbmFsbHl7VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OPWF9fTpmdW5jdGlvbigpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlhJiZ0aGlzLmlhLHlmKX07dmFyIHlmPWZ1bmN0aW9uKGEsYil7cmV0dXJuXCJudW1iZXJcIiE9PXR5cGVvZiBifHwhaXNOYU4oYikmJkluZmluaXR5IT09YiYmLUluZmluaXR5IT09Yj9iOlN0cmluZyhiKX0semY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGEoYj9KU09OLnBhcnNlKGIpOm51bGwpfSxBZj1mdW5jdGlvbihhKXtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IodmFyIGI9QXJyYXkoYS5sZW5ndGgpLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXTtudWxsIT1kJiYoYltjXT1cIm9iamVjdFwiPT10eXBlb2YgZD9BZihkKTpkKX1yZXR1cm4gYn1pZihnZiYmYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIG5ldyBVaW50OEFycmF5KGEpO2I9e307Zm9yKGMgaW4gYSlkPWFbY10sbnVsbCE9ZCYmKGJbY109XCJvYmplY3RcIj09dHlwZW9mIGQ/QWYoZCk6ZCk7cmV0dXJuIGJ9O3ZhciBCZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhCZixNKTt2YXIgQ2Y9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soQ2YsTSk7dmFyIERmPWRvY3VtZW50LEVmPXdpbmRvdzt2YXIgRmY9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soRmYsTSk7dmFyIEdmPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKEdmLE0pO3ZhciBQYT1mdW5jdGlvbihhKXt0aGlzLmo9YXx8e2Nvb2tpZTpcIlwifX07UGEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ITE7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjKXt2YXIgZT1jLnllO2Q9Yy52ZHx8ITE7dmFyIGY9Yy5kb21haW58fHZvaWQgMDt2YXIgZz1jLnBhdGh8fHZvaWQgMDt2YXIgaD1jLndjfWlmKC9bOz1cXHNdLy50ZXN0KGEpKXRocm93IEVycm9yKCdJbnZhbGlkIGNvb2tpZSBuYW1lIFwiJythKydcIicpO2lmKC9bO1xcclxcbl0vLnRlc3QoYikpdGhyb3cgRXJyb3IoJ0ludmFsaWQgY29va2llIHZhbHVlIFwiJytiKydcIicpO3ZvaWQgMD09PWgmJihoPS0xKTtjPWY/XCI7ZG9tYWluPVwiK2Y6XCJcIjtnPWc/XCI7cGF0aD1cIitnOlwiXCI7ZD1kP1wiO3NlY3VyZVwiOlwiXCI7aD0wPmg/XCJcIjowPT1oP1wiO2V4cGlyZXM9XCIrKG5ldyBEYXRlKDE5NzAsMSwxKSkudG9VVENTdHJpbmcoKTpcIjtleHBpcmVzPVwiKyhuZXcgRGF0ZShUYygpKzFFMypoKSkudG9VVENTdHJpbmcoKTt0aGlzLmouY29va2llPWErXCI9XCIrYitjK2craCtkKyhudWxsIT1lP1wiO3NhbWVzaXRlPVwiK2U6XCJcIil9O1BhLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YStcIj1cIixkPSh0aGlzLmouY29va2llfHxcIlwiKS5zcGxpdChcIjtcIiksZT0wLGY7ZTxkLmxlbmd0aDtlKyspe2Y9R2QoZFtlXSk7aWYoMD09Zi5sYXN0SW5kZXhPZihjLDApKXJldHVybiBmLnN1YnN0cihjLmxlbmd0aCk7aWYoZj09YSlyZXR1cm5cIlwifXJldHVybiBifTtQYS5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLmouY29va2llfTt2YXIgSGY9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9KG5ldyBQYShhKSkuZ2V0KFwiREFUQV9VU0VfQ09OU0VOVFwiLFwiXCIpKT9hOm51bGx9LElmPWZ1bmN0aW9uKGEpe3ZhciBiPShiPShuZXcgUGEoYSkpLmdldChcIkZDQ0RDRlwiLFwiXCIpKT9iOm51bGw7dHJ5e3ZhciBjPWI/emYoRmYsYik6bnVsbH1jYXRjaChkKXtjPW51bGx9aWYoIWMpcmV0dXJuIEhmKGEpO2M9TyhjLEdmLDMpO2lmKCFjfHxudWxsPT1CKGMsMSkpcmV0dXJuIEhmKGEpO2E9QihjLDIpO2I9RGF0ZS5ub3coKTtpZihhKXtpZihiPGF8fGI+YSszMzY5NkU2KXJldHVybiBudWxsfWVsc2UgcmV0dXJuIG51bGw7cmV0dXJuIEIoYywxKX07dmFyIEtmPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxKZixudWxsKX07SyhLZixNKTt2YXIgSmY9WzEsMiwzLDRdO3ZhciBkYTtkYT12YShmdW5jdGlvbigpe3ZhciBhPSExO3RyeXt2YXIgYj1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe2E9ITB9fSk7Xy5yLmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsbnVsbCxiKX1jYXRjaChjKXt9cmV0dXJuIGF9KTtfLnY9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcj8oYS5hZGRFdmVudExpc3RlbmVyKGIsYyxlYShkKSksITApOiExfTtfLnFiPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBhLnJlbW92ZUV2ZW50TGlzdGVuZXI/KGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsZWEoZCkpLCEwKTohMX07dmFyIExmPWZ1bmN0aW9uKGEpe3RoaXMuaj10aGlzLm89dGhpcy5BPTA7dGhpcy5sPWE7dGhpcy5tPXRoaXMudj0wfTtMZi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3RoaXMuQSs9YS5BO3RoaXMubys9YS5vO3RoaXMuais9YS5qO3RoaXMubCs9YS5sO3RoaXMudis9YS52O3RoaXMubSs9YS5tfTt2YXIgT2Y9ZnVuY3Rpb24oYSxiLGMpe1wibnVtYmVyXCI9PT10eXBlb2YgYT8odGhpcy5qPU1mKGEsYnx8MCxjfHwxKSxOZih0aGlzLGN8fDEpKTpfLk1jKGEpPyh0aGlzLmo9TWYoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSksTmYodGhpcyxhLmdldERhdGUoKSkpOih0aGlzLmo9bmV3IERhdGUoVGMoKSksYT10aGlzLmouZ2V0RGF0ZSgpLHRoaXMuai5zZXRIb3VycygwKSx0aGlzLmouc2V0TWludXRlcygwKSx0aGlzLmouc2V0U2Vjb25kcygwKSx0aGlzLmouc2V0TWlsbGlzZWNvbmRzKDApLE5mKHRoaXMsYSkpfSxNZj1mdW5jdGlvbihhLGIsYyl7Yj1uZXcgRGF0ZShhLGIsYyk7MDw9YSYmMTAwPmEmJmIuc2V0RnVsbFllYXIoYi5nZXRGdWxsWWVhcigpLTE5MDApO3JldHVybiBifTtfLnA9T2YucHJvdG90eXBlO18ucC5nZXRGdWxsWWVhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmouZ2V0RnVsbFllYXIoKX07Xy5wLmdldE1vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXRNb250aCgpfTtfLnAuZ2V0RGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmouZ2V0RGF0ZSgpfTtfLnAuZ2V0VGltZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmouZ2V0VGltZSgpfTtfLnAuc2V0PWZ1bmN0aW9uKGEpe3RoaXMuaj1uZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKX07Xy5wLmFkZD1mdW5jdGlvbihhKXtpZihhLkF8fGEubyl7dmFyIGI9dGhpcy5nZXRNb250aCgpK2EubysxMiphLkEsYz10aGlzLmdldEZ1bGxZZWFyKCkrTWF0aC5mbG9vcihiLzEyKTtiJT0xMjswPmImJihiKz0xMik7YTp7c3dpdGNoKGIpe2Nhc2UgMTp2YXIgZD0wIT1jJTR8fDA9PWMlMTAwJiYwIT1jJTQwMD8yODoyOTticmVhayBhO2Nhc2UgNTpjYXNlIDg6Y2FzZSAxMDpjYXNlIDM6ZD0zMDticmVhayBhfWQ9MzF9ZD1NYXRoLm1pbihkLHRoaXMuZ2V0RGF0ZSgpKTt0aGlzLmouc2V0RGF0ZSgxKTt0aGlzLmouc2V0RnVsbFllYXIoYyk7dGhpcy5qLnNldE1vbnRoKGIpO3RoaXMuai5zZXREYXRlKGQpfWEuaiYmKGE9bmV3IERhdGUoKG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSx0aGlzLmdldE1vbnRoKCksdGhpcy5nZXREYXRlKCksMTIpKS5nZXRUaW1lKCkrODY0RTUqYS5qKSx0aGlzLmouc2V0RGF0ZSgxKSx0aGlzLmouc2V0RnVsbFllYXIoYS5nZXRGdWxsWWVhcigpKSx0aGlzLmouc2V0TW9udGgoYS5nZXRNb250aCgpKSx0aGlzLmouc2V0RGF0ZShhLmdldERhdGUoKSksTmYodGhpcyxhLmdldERhdGUoKSkpfTtfLnAueWI9ZnVuY3Rpb24oYSl7cmV0dXJuW3RoaXMuZ2V0RnVsbFllYXIoKSxpZSh0aGlzLmdldE1vbnRoKCkrMSksaWUodGhpcy5nZXREYXRlKCkpXS5qb2luKGE/XCItXCI6XCJcIil9O18ucC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnliKCl9O3ZhciBOZj1mdW5jdGlvbihhLGIpe2EuZ2V0RGF0ZSgpIT1iJiZhLmouc2V0VVRDSG91cnMoYS5qLmdldFVUQ0hvdXJzKCkrKGEuZ2V0RGF0ZSgpPGI/MTotMSkpfTtPZi5wcm90b3R5cGUudmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudmFsdWVPZigpfTt2YXIgUGY9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dGhpcy5qPVwibnVtYmVyXCI9PT10eXBlb2YgYT9uZXcgRGF0ZShhLGJ8fDAsY3x8MSxkfHwwLGV8fDAsZnx8MCxnfHwwKTpuZXcgRGF0ZShhJiZhLmdldFRpbWU/YS5nZXRUaW1lKCk6VGMoKSl9O0soUGYsT2YpO3ZhciBRZj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgUGY7Yi5qLnNldFRpbWUoYSk7cmV0dXJuIGJ9O1BmLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7T2YucHJvdG90eXBlLmFkZC5jYWxsKHRoaXMsYSk7YS5sJiZ0aGlzLmouc2V0VVRDSG91cnModGhpcy5qLmdldFVUQ0hvdXJzKCkrYS5sKTthLnYmJnRoaXMuai5zZXRVVENNaW51dGVzKHRoaXMuai5nZXRVVENNaW51dGVzKCkrYS52KTthLm0mJnRoaXMuai5zZXRVVENTZWNvbmRzKHRoaXMuai5nZXRVVENTZWNvbmRzKCkrYS5tKX07UGYucHJvdG90eXBlLnliPWZ1bmN0aW9uKGEpe3ZhciBiPU9mLnByb3RvdHlwZS55Yi5jYWxsKHRoaXMsYSk7cmV0dXJuIGE/YitcIlRcIitpZSh0aGlzLmouZ2V0SG91cnMoKSkrXCI6XCIraWUodGhpcy5qLmdldE1pbnV0ZXMoKSkrXCI6XCIraWUodGhpcy5qLmdldFNlY29uZHMoKSk6YitcIlRcIitpZSh0aGlzLmouZ2V0SG91cnMoKSkraWUodGhpcy5qLmdldE1pbnV0ZXMoKSkraWUodGhpcy5qLmdldFNlY29uZHMoKSl9O1BmLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnliKCl9O3ZhciBSZj0hXy51ZXx8OTw9TnVtYmVyKE9lKSxTZj1fLnVlfHx0ZXx8eWU7Xy55YT1mdW5jdGlvbihhLGIpe3RoaXMueD12b2lkIDAhPT1hP2E6MDt0aGlzLnk9dm9pZCAwIT09Yj9iOjB9O18ueWEucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3JldHVybiB0aGlzfTtfLnlhLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc307Xy55YS5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7cmV0dXJuIHRoaXN9O18uVGY9ZnVuY3Rpb24oYSxiKXt0aGlzLndpZHRoPWE7dGhpcy5oZWlnaHQ9Yn07Xy5wPV8uVGYucHJvdG90eXBlO18ucC5hc3BlY3RSYXRpbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRoL3RoaXMuaGVpZ2h0fTtfLnAuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiEodGhpcy53aWR0aCp0aGlzLmhlaWdodCl9O18ucC5jZWlsPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5wLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLnAucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O3ZhciBXZixZZixYZixhZyxiZyxkZyxoZyxpZyxVZjtXZj1mdW5jdGlvbihhKXtyZXR1cm4gYT9uZXcgVWYoXy5WZihhKSk6VWN8fChVYz1uZXcgVWYpfTtZZj1mdW5jdGlvbihhLGIpe2xkKGIsZnVuY3Rpb24oYyxkKXtjJiZcIm9iamVjdFwiPT10eXBlb2YgYyYmYy5sYiYmKGM9Yy5OYSgpKTtcInN0eWxlXCI9PWQ/YS5zdHlsZS5jc3NUZXh0PWM6XCJjbGFzc1wiPT1kP2EuY2xhc3NOYW1lPWM6XCJmb3JcIj09ZD9hLmh0bWxGb3I9YzpYZi5oYXNPd25Qcm9wZXJ0eShkKT9hLnNldEF0dHJpYnV0ZShYZltkXSxjKTowPT1kLmxhc3RJbmRleE9mKFwiYXJpYS1cIiwwKXx8MD09ZC5sYXN0SW5kZXhPZihcImRhdGEtXCIsMCk/YS5zZXRBdHRyaWJ1dGUoZCxjKTphW2RdPWN9KX07WGY9e2NlbGxwYWRkaW5nOlwiY2VsbFBhZGRpbmdcIixjZWxsc3BhY2luZzpcImNlbGxTcGFjaW5nXCIsY29sc3BhbjpcImNvbFNwYW5cIixmcmFtZWJvcmRlcjpcImZyYW1lQm9yZGVyXCIsaGVpZ2h0OlwiaGVpZ2h0XCIsbWF4bGVuZ3RoOlwibWF4TGVuZ3RoXCIsbm9uY2U6XCJub25jZVwiLHJvbGU6XCJyb2xlXCIscm93c3BhbjpcInJvd1NwYW5cIix0eXBlOlwidHlwZVwiLHVzZW1hcDpcInVzZU1hcFwiLHZhbGlnbjpcInZBbGlnblwiLHdpZHRoOlwid2lkdGhcIn07Xy4kZj1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQ7YT1fLlpmKGEpP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keTtyZXR1cm4gbmV3IF8uVGYoYS5jbGllbnRXaWR0aCxhLmNsaWVudEhlaWdodCl9O2FnPWZ1bmN0aW9uKGEpe3JldHVybiBhLnNjcm9sbGluZ0VsZW1lbnQ/YS5zY3JvbGxpbmdFbGVtZW50OiF5ZSYmXy5aZihhKT9hLmRvY3VtZW50RWxlbWVudDphLmJvZHl8fGEuZG9jdW1lbnRFbGVtZW50fTtfLmNnPWZ1bmN0aW9uKGEpe3JldHVybiBhP2JnKGEpOndpbmRvd307Ymc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50V2luZG93fHxhLmRlZmF1bHRWaWV3fTtkZz1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChoKXtoJiZiLmFwcGVuZENoaWxkKFwic3RyaW5nXCI9PT10eXBlb2YgaD9hLmNyZWF0ZVRleHROb2RlKGgpOmgpfWZvcih2YXIgZT0yO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jW2VdO2lmKCFLYyhmKXx8Xy5NYyhmKSYmMDxmLm5vZGVUeXBlKWQoZik7ZWxzZXthOntpZihmJiZcIm51bWJlclwiPT10eXBlb2YgZi5sZW5ndGgpe2lmKF8uTWMoZikpe3ZhciBnPVwiZnVuY3Rpb25cIj09dHlwZW9mIGYuaXRlbXx8XCJzdHJpbmdcIj09dHlwZW9mIGYuaXRlbTticmVhayBhfWlmKExjKGYpKXtnPVwiZnVuY3Rpb25cIj09dHlwZW9mIGYuaXRlbTticmVhayBhfX1nPSExfV8uVmMoZz9iZChmKTpmLGQpfX19O18uZWc9ZnVuY3Rpb24oYSxiKXtiPVN0cmluZyhiKTtcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiPT09YS5jb250ZW50VHlwZSYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KGIpfTtfLlpmPWZ1bmN0aW9uKGEpe3JldHVyblwiQ1NTMUNvbXBhdFwiPT1hLmNvbXBhdE1vZGV9O18uZmc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEucGFyZW50Tm9kZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk6bnVsbH07Xy5nZz1mdW5jdGlvbihhKXt2YXIgYjtpZihTZiYmIShfLnVlJiZMZShcIjlcIikmJiFMZShcIjEwXCIpJiZfLnIuU1ZHRWxlbWVudCYmYSBpbnN0YW5jZW9mIF8uci5TVkdFbGVtZW50KSYmKGI9YS5wYXJlbnRFbGVtZW50KSlyZXR1cm4gYjtiPWEucGFyZW50Tm9kZTtyZXR1cm4gXy5NYyhiKSYmMT09Yi5ub2RlVHlwZT9iOm51bGx9O18uVmY9ZnVuY3Rpb24oYSl7cmV0dXJuIDk9PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnR8fGEuZG9jdW1lbnR9O2hnPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5jb250ZW50V2luZG93fHwoYS5jb250ZW50RG9jdW1lbnQ/Xy5jZyhhLmNvbnRlbnREb2N1bWVudCk6bnVsbCl9Y2F0Y2goYil7fXJldHVybiBudWxsfTtpZz1mdW5jdGlvbihhLGIpe2lmKDk9PWEubm9kZVR5cGUpdmFyIGM9W2EuZG9jdW1lbnRFbGVtZW50XTtlbHNlIGZvcihjPVtdLGE9YS5sYXN0RWxlbWVudENoaWxkO2E7YT1hLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpYy5wdXNoKGEpO2Zvcig7MDxjLmxlbmd0aDspe2E9Yy5wb3AoKTtpZihiKGEpKXJldHVybiBhO2ZvcihhPWEubGFzdEVsZW1lbnRDaGlsZDthO2E9YS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKWMucHVzaChhKX1yZXR1cm4gbnVsbH07VWY9ZnVuY3Rpb24oYSl7dGhpcy5qPWF8fF8uci5kb2N1bWVudHx8ZG9jdW1lbnR9O1VmLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmosZT1hcmd1bWVudHMsZj1TdHJpbmcoZVswXSksZz1lWzFdO2lmKCFSZiYmZyYmKGcubmFtZXx8Zy50eXBlKSl7Zj1bXCI8XCIsZl07Zy5uYW1lJiZmLnB1c2goJyBuYW1lPVwiJyxnZShnLm5hbWUpLCdcIicpO2lmKGcudHlwZSl7Zi5wdXNoKCcgdHlwZT1cIicsZ2UoZy50eXBlKSwnXCInKTt2YXIgaD17fTtwZChoLGcpO2RlbGV0ZSBoLnR5cGU7Zz1ofWYucHVzaChcIj5cIik7Zj1mLmpvaW4oXCJcIil9Zj1fLmVnKGQsZik7ZyYmKFwic3RyaW5nXCI9PT10eXBlb2YgZz9mLmNsYXNzTmFtZT1nOkFycmF5LmlzQXJyYXkoZyk/Zi5jbGFzc05hbWU9Zy5qb2luKFwiIFwiKTpZZihmLGcpKTsyPGUubGVuZ3RoJiZkZyhkLGYsZSk7cmV0dXJuIGZ9O3ZhciBqZz1mdW5jdGlvbihhLGIpe3JldHVybiBfLmVnKGEuaixiKX07dmFyIGxnPWZ1bmN0aW9uKGEpe2tnKCk7cmV0dXJuIEJkKGEpfSxrZz1fLkhjO3ZhciBtZz1mdW5jdGlvbigpe3JldHVybiBMKFwiaVBhZFwiKXx8TChcIkFuZHJvaWRcIikmJiFMKFwiTW9iaWxlXCIpfHxMKFwiU2lsa1wiKX07dmFyIG9nLHBnLGViO18ubmc9L14oPzooW146Lz8jLl0rKTopPyg/OlxcL1xcLyg/OihbXlxcXFwvPyNdKilAKT8oW15cXFxcLz8jXSo/KSg/OjooWzAtOV0rKSk/KD89W1xcXFwvPyNdfCQpKT8oW14/I10rKT8oPzpcXD8oW14jXSopKT8oPzojKFtcXHNcXFNdKikpPyQvO29nPWZ1bmN0aW9uKGEpe3JldHVybiBhP2RlY29kZVVSSShhKTphfTtwZz1mdW5jdGlvbihhLGIsYyl7aWYoQXJyYXkuaXNBcnJheShiKSlmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKylwZyhhLFN0cmluZyhiW2RdKSxjKTtlbHNlIG51bGwhPWImJmMucHVzaChhKyhcIlwiPT09Yj9cIlwiOlwiPVwiK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYikpKSl9O2ViPS8jfCQvO3ZhciBxZyxzZyxoYSxyZyx0Zyx1Zyx3YSx4Zyx3Zyx5Zyx6ZyxCZyxDZyx2ZyxFZyxGZyxEZyxHZyxJZyxKZyxLZyxMZyxNZyxOZyxPZyxQZyxmYSxRZyxSZyxTZyxVZyxXZyxZZywkZyxhaCxaZyxiaCxjaCxkaCxlaCxmaCxnaCxoaCxpaCxqaCxiYixraCxsaCxtaDtxZz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuISFhJiZudWxsIT1hLmxvY2F0aW9uLmhyZWYmJnNlKGEsXCJmb29cIil9Y2F0Y2goYil7cmV0dXJuITF9fTtzZz1mdW5jdGlvbihhKXtmb3IodmFyIGI9Xy5yLGM9MDtiJiY0MD5jKysmJighcWcoYil8fCFhKGIpKTspYj1yZyhiKX07aGE9ZnVuY3Rpb24oKXt2YXIgYT1fLnI7c2coZnVuY3Rpb24oYil7YT1iO3JldHVybiExfSk7cmV0dXJuIGF9O3JnPWZ1bmN0aW9uKGEpe3RyeXt2YXIgYj1hLnBhcmVudDtpZihiJiZiIT1hKXJldHVybiBifWNhdGNoKGMpe31yZXR1cm4gbnVsbH07dGc9ZnVuY3Rpb24oYSl7cmV0dXJuIHFnKGEudG9wKT9hLnRvcDpudWxsfTt1Zz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtBYShjLFwic3RyaW5nXCI9PT10eXBlb2YgYj9sZyhiKTpiKTtyZXR1cm4oYT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdKSYmYS5wYXJlbnROb2RlPyhhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsYSksYyk6bnVsbH07d2E9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5nZXRDb21wdXRlZFN0eWxlP2IuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpOmEuY3VycmVudFN0eWxlfTt4Zz1mdW5jdGlvbihhLGIpe2lmKCF2ZygpKXt2YXIgYz1NYXRoLnJhbmRvbSgpO2lmKGM8YilyZXR1cm4gYz13ZyhfLnIpLGFbTWF0aC5mbG9vcihjKmEubGVuZ3RoKV19cmV0dXJuIG51bGx9O3dnPWZ1bmN0aW9uKGEpe2lmKCFhLmNyeXB0bylyZXR1cm4gTWF0aC5yYW5kb20oKTt0cnl7dmFyIGI9bmV3IFVpbnQzMkFycmF5KDEpO2EuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhiKTtyZXR1cm4gYlswXS82NTUzNi82NTUzNn1jYXRjaChjKXtyZXR1cm4gTWF0aC5yYW5kb20oKX19O18uSmI9ZnVuY3Rpb24oYSxiLGMpe2lmKGEpZm9yKHZhciBkIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsZCkmJmIuY2FsbChjLGFbZF0sZCxhKX07eWc9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYikpcmV0dXJuITE7cmV0dXJuITB9O3pnPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO18uSmIoYSxmdW5jdGlvbihjLGQpe2IucHVzaChkKX0pO3JldHVybiBifTtfLkFnPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO18uSmIoYSxmdW5jdGlvbihjKXtiLnB1c2goYyl9KTtyZXR1cm4gYn07Qmc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmQoYSxmdW5jdGlvbihjLGQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKSYmYihjLGQpfSl9O0NnPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA9PWIpcmV0dXJuIDA7Zm9yKHZhciBjPTMwNTQxOTg5NixkPTA7ZDxiO2QrKyljXj0oYzw8NSkrKGM+PjIpK2EuY2hhckNvZGVBdChkKSY0Mjk0OTY3Mjk1O3JldHVybiAwPGM/Yzo0Mjk0OTY3Mjk2K2N9O3ZnPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIF8uWGMoW1wiR29vZ2xlIFdlYiBQcmV2aWV3XCIsXCJNZWRpYXBhcnRuZXJzLUdvb2dsZVwiLFwiR29vZ2xlLVJlYWQtQWxvdWRcIixcIkdvb2dsZS1BZHdvcmRzXCJdLERnKXx8MUUtND5NYXRoLnJhbmRvbSgpfSk7RWc9ZnVuY3Rpb24oYSl7cmV0dXJuIHZnKCk/bnVsbDpNYXRoLmZsb29yKDFFMyp3ZyhhKSl9O0ZnPWZ1bmN0aW9uKGEsYil7dHJ5e2lmKGEpcmV0dXJuIGEuc2V0SXRlbShcImdvb2dsZV9leHBlcmltZW50X21vZFwiLGIpLGJ9Y2F0Y2goYyl7fXJldHVybiBudWxsfTtEZz1mdW5jdGlvbihhKXtyZXR1cm4tMSE9VmQuaW5kZXhPZihhKX07R2c9L14oLT9bMC05Ll17MSwzMH0pJC87Xy5IZz1mdW5jdGlvbihhLGIpe3JldHVybiBHZy50ZXN0KGEpJiYoYT1OdW1iZXIoYSksIWlzTmFOKGEpKT9hOnZvaWQgMD09Yj9udWxsOmJ9O0lnPWZ1bmN0aW9uKCl7cmV0dXJuL150cnVlJC8udGVzdChcImZhbHNlXCIpfTtKZz1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj8hMDpiO3RyeXtmb3IodmFyIGM9bnVsbDtjIT1hO2M9YSxhPWEucGFyZW50KXN3aXRjaChhLmxvY2F0aW9uLnByb3RvY29sKXtjYXNlIFwiaHR0cHM6XCI6cmV0dXJuITA7Y2FzZSBcImZpbGU6XCI6cmV0dXJuIGI7Y2FzZSBcImh0dHA6XCI6cmV0dXJuITF9fWNhdGNoKGQpe31yZXR1cm4hMH07S2c9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuXCJcIjt2YXIgYj0vLipbJiM/XWdvb2dsZV9kZWJ1Zyg9W14mXSopPygmLiopPyQvO3RyeXt2YXIgYz1iLmV4ZWMoZGVjb2RlVVJJQ29tcG9uZW50KGEpKTtpZihjKXJldHVybiBjWzFdJiYxPGNbMV0ubGVuZ3RoP2NbMV0uc3Vic3RyaW5nKDEpOlwidHJ1ZVwifWNhdGNoKGQpe31yZXR1cm5cIlwifTtMZz17TWQ6XCJhbGxvdy1mb3Jtc1wiLE5kOlwiYWxsb3ctbW9kYWxzXCIsT2Q6XCJhbGxvdy1vcmllbnRhdGlvbi1sb2NrXCIsUGQ6XCJhbGxvdy1wb2ludGVyLWxvY2tcIixRZDpcImFsbG93LXBvcHVwc1wiLFJkOlwiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94XCIsU2Q6XCJhbGxvdy1wcmVzZW50YXRpb25cIixUZDpcImFsbG93LXNhbWUtb3JpZ2luXCIsVWQ6XCJhbGxvdy1zY3JpcHRzXCIsVmQ6XCJhbGxvdy10b3AtbmF2aWdhdGlvblwiLFdkOlwiYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uXCJ9O01nPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIF8uQWcoTGcpfSk7Tmc9ZnVuY3Rpb24oYSl7dmFyIGI9TWcoKTtyZXR1cm4gYS5sZW5ndGg/Xy5UYShiLGZ1bmN0aW9uKGMpe3JldHVybiFfLiRjKGEsYyl9KTpifTtPZz1mdW5jdGlvbigpe3ZhciBhPV8uZWcoZG9jdW1lbnQsXCJJRlJBTUVcIiksYj17fTtfLlZjKE1nKCksZnVuY3Rpb24oYyl7YS5zYW5kYm94JiZhLnNhbmRib3guc3VwcG9ydHMmJmEuc2FuZGJveC5zdXBwb3J0cyhjKSYmKGJbY109ITApfSk7cmV0dXJuIGJ9O1BnPWZ1bmN0aW9uKGEpe2E9YSYmYS50b1N0cmluZyYmYS50b1N0cmluZygpO3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYSYmLTEhPWEuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIil9O2ZhPWZ1bmN0aW9uKGEsYil7dHJ5e3JldHVybiEoIWEuZnJhbWVzfHwhYS5mcmFtZXNbYl0pfWNhdGNoKGMpe3JldHVybiExfX07UWc9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDs1MD5jOysrYyl7aWYoZmEoYSxiKSlyZXR1cm4gYTtpZighKGE9cmcoYSkpKWJyZWFrfXJldHVybiBudWxsfTtSZz12YShmdW5jdGlvbigpe3JldHVybiFtZygpJiYoTChcImlQb2RcIil8fEwoXCJpUGhvbmVcIil8fEwoXCJBbmRyb2lkXCIpfHxMKFwiSUVNb2JpbGVcIikpPzI6bWcoKT8xOjB9KTtTZz1mdW5jdGlvbihhLGIpe3ZhciBjO2ZvcihjPXZvaWQgMD09PWM/MTAwOmM7YSYmYy0tOyl7aWYoYT09YilyZXR1cm4hMDthPWEucGFyZW50RWxlbWVudH1yZXR1cm4hMX07Xy5YZz1mdW5jdGlvbihhLGIpe2Euc3R5bGUuc2V0UHJvcGVydHk/Xy5KYihiLGZ1bmN0aW9uKGMsZCl7YS5zdHlsZS5zZXRQcm9wZXJ0eShkLGMsXCJpbXBvcnRhbnRcIil9KTphLnN0eWxlLmNzc1RleHQ9Xy5UZyhVZyhfLlZnKGEuc3R5bGUuY3NzVGV4dCksV2coYixmdW5jdGlvbihjKXtyZXR1cm4gYytcIiAhaW1wb3J0YW50XCJ9KSkpfTtVZz1fLkEoT2JqZWN0LFwiYXNzaWduXCIpfHxmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihkKWZvcih2YXIgZSBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGUpJiYoYVtlXT1kW2VdKX1yZXR1cm4gYX07V2c9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkO2ZvcihkIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsZCkmJihjW2RdPWIuY2FsbCh2b2lkIDAsYVtkXSxkLGEpKTtyZXR1cm4gY307WWc9ZnVuY3Rpb24oYSxiLGMpe2ZvcihjPXZvaWQgMD09PWM/MTAwOmM7YSYmYy0tJiYhMSE9PWIoYSk7KWE9YS5wYXJlbnRFbGVtZW50fTskZz1mdW5jdGlvbihhKXtyZXR1cm4gWmcoYSxmdW5jdGlvbihiKXtyZXR1cm5cImZpeGVkXCI9PWIucG9zaXRpb258fFwic3RpY2t5XCI9PWIucG9zaXRpb259KX07YWg9ZnVuY3Rpb24oYSl7cmV0dXJuIFpnKGEsZnVuY3Rpb24oYil7cmV0dXJuXCJsZWZ0XCI9PWJbXCJmbG9hdFwiXXx8XCJyaWdodFwiPT1iW1wiZmxvYXRcIl18fFwibGVmdFwiPT1iLmNzc0Zsb2F0fHxcInJpZ2h0XCI9PWIuY3NzRmxvYXR9KX07Wmc9ZnVuY3Rpb24oYSxiKXt2YXIgYztmb3IoYz12b2lkIDA9PT1jPzEwMDpjO2EmJmMtLTspe3ZhciBkPXdhKGEsd2luZG93KTtpZihkKXtpZihiKGQpKXJldHVybiEwO2E9YS5wYXJlbnRFbGVtZW50fX1yZXR1cm4hMX07Ymg9ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIG51bGw7YT1hLnRyYW5zZm9ybTtpZighYSlyZXR1cm4gbnVsbDthPWEucmVwbGFjZSgvXi4qXFwoKFswLTkuLCAtXSspXFwpJC8sXCIkMVwiKS5zcGxpdCgvLCAvKTtyZXR1cm4gNiE9YS5sZW5ndGg/bnVsbDpfLlJhKGEscGFyc2VGbG9hdCl9O18uVGc9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy5KYihhLGZ1bmN0aW9uKGMsZCl7bnVsbCE9YyYmXCJcIiE9PWMmJmIucHVzaChkK1wiOlwiK2MpfSk7cmV0dXJuIGIubGVuZ3RoP2Iuam9pbihcIjtcIikrXCI7XCI6XCJcIn07Xy5WZz1mdW5jdGlvbihhKXt2YXIgYj17fTtpZihhKXt2YXIgYz0vXFxzKjpcXHMqLztfLlZjKChhfHxcIlwiKS5zcGxpdCgvXFxzKjtcXHMqLyksZnVuY3Rpb24oZCl7aWYoZCl7dmFyIGU9ZC5zcGxpdChjKTtkPWVbMF07ZT1lWzFdO2QmJmUmJihiW2QudG9Mb3dlckNhc2UoKV09ZSl9fSl9cmV0dXJuIGJ9O2NoPWZ1bmN0aW9uKGEsYil7YSYmYS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1jb250YWluZXItaWRcIixiKX07ZGg9ZnVuY3Rpb24oYSl7Xy5yLmNvbnNvbGUmJl8uci5jb25zb2xlLndhcm4mJl8uci5jb25zb2xlLndhcm4oYSl9O2VoPWZ1bmN0aW9uKGEsYil7Yj1ZYyhhLGIpO2lmKDA8PWIpe3ZhciBjPWFbYl07QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKTtyZXR1cm4gY31yZXR1cm4gbnVsbH07Zmg9W107Z2g9ZnVuY3Rpb24oKXt2YXIgYT1maDtmaD1bXTthPV8uRihhKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKXtiPWIudmFsdWU7dHJ5e2IoKX1jYXRjaChjKXt9fX07aGg9ZnVuY3Rpb24oYSl7ZmgucHVzaChhKTsxPT1maC5sZW5ndGgmJih0LlByb21pc2U/dC5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGdoKTp3aW5kb3cuc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZShnaCk6c2V0VGltZW91dChnaCwwKSl9O2loPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xcXFwobnxyfFxcXFwpL2csZnVuY3Rpb24oYixjKXtyZXR1cm5cIm5cIj09Yz9cIlxcblwiOlwiclwiPT1jP1wiXFxyXCI6XCJcXFxcXCJ9KX07amg9ZnVuY3Rpb24oKXt2YXIgYT12b2lkIDA9PT1hP3dpbmRvdzphO3JldHVybihhPW9nKGEubG9jYXRpb24uaHJlZi5tYXRjaChfLm5nKVszXXx8bnVsbCkpP0NnKGEpOm51bGx9O2JiPWZ1bmN0aW9uKGEpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgYS5nb29nX3B2c2lkKXRyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImdvb2dfcHZzaWRcIix7dmFsdWU6TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk1hdGgucG93KDIsNTIpKX0pfWNhdGNoKGIpe31yZXR1cm4gTnVtYmVyKGEuZ29vZ19wdnNpZCl8fC0xfTtraD1mdW5jdGlvbihhKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGEmJmlzRmluaXRlKGEpJiYwPT1hJTEmJjA8YX07bGg9ZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT1hfHxraChhKX07bWg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2MuaWQ9YTtjLnRleHRDb250ZW50PWI7Xy5YZyhjLHtoZWlnaHQ6XCIyNHB4XCIsXCJsaW5lLWhlaWdodFwiOlwiMjRweFwiLFwidGV4dC1hbGlnblwiOlwiY2VudGVyXCIsXCJ2ZXJ0aWNhbC1hbGlnblwiOlwibWlkZGxlXCIsY29sb3I6XCJ3aGl0ZVwiLFwiYmFja2dyb3VuZC1jb2xvclwiOlwiYmxhY2tcIixtYXJnaW46XCIwXCIsXCJmb250LWZhbWlseVwiOlwiUm9ib3RvXCIsXCJmb250LXN0eWxlXCI6XCJub3JtYWxcIixcImZvbnQtd2VpZ2h0XCI6XCI1MDBcIixcImZvbnQtc2l6ZVwiOlwiMTFweFwiLFwibGV0dGVyLXNwYWNpbmdcIjpcIjAuMDhlbVwifSk7cmV0dXJuIGN9O3ZhciBuaD17aGU6MCxiZToxLGFlOjIsJGQ6MyxrZTo0LGxlOjUsZmU6NixjZTo3fTt2YXIgcGg9ZnVuY3Rpb24oKXtyZXR1cm4gZmEoXy5yLnRvcCxcImdvb2dsZWZjUHJlc2VudFwiKX0scWg9ZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQ7dHJ5e3ZhciBjPUlmKGIpO3ZhciBkPWM/emYoS2YsYyk6bnVsbH1jYXRjaChlKXtkPW51bGx9aWYoIWQpcmV0dXJuIDA7aWYoeChkLDcpKXJldHVybiA0O2lmKGEpe2lmKF8uJGMoQihkLDMpLGEpKXJldHVybiAyO2lmKF8uJGMoQihkLDQpLGEpKXJldHVybiAzfXJldHVybiAxfSxyaD12YShmdW5jdGlvbigpe3ZhciBhPS9bPyZdZmMoY29uc2VudCk/PWFsd2F5c3Nob3coWyYjXXwkKS87dHJ5e3JldHVybiBhLnRlc3QoXy5yLnRvcC5sb2NhdGlvbi5ocmVmKX1jYXRjaChiKXtyZXR1cm4gYS50ZXN0KF8uci5sb2NhdGlvbi5ocmVmKX19KSxzaD1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPXpnKG5oKS5sZW5ndGgsZT1bXSxmPTA7ZjxkO2YrKyllW2ZdPTA7cmgoKSYmKGE9ITApO2VbMF09YT8xOjI7ZD12b2lkIDAhPT1jP2M6aWEoKTtlWzVdPWQ/MToyO2VbNF09MjtjPSEhXy5yLmdvb2dsZWZjfHxwaCgpO2VbMV09Yz8xOjI7Zj1xaChiKTswIT1mP2I9e3FjOmYscmM6M306KGY9Xy5yLnRvcCxiPXtxYzpmYShmLFwiZ29vZ2xlZmNJbmFjdGl2ZVwiKT80OmImJmZhKGYsXCJnb29nbGVmY1BBLVwiK2IpPzI6ZmEoZixcImdvb2dsZWZjTlBBXCIpPzM6MCxyYzoyfSk7Zj1iO2I9Zi5xYztlW2YucmNdPWI7aWYoIWQpYTpzd2l0Y2goYil7Y2FzZSAyOmNhc2UgNDpkPSExO2JyZWFrIGE7Y2FzZSAzOmQ9ITA7YnJlYWsgYTtjYXNlIDE6ZD1hO2JyZWFrIGE7ZGVmYXVsdDpkPSh2b2lkIDA9PT1jPyExOmMpJiZhfXJldHVybntEZTpiLHJkOmQseWQ6MD09YiYmYSYmYywkYzplLmpvaW4oXCIuXCIpfX0sdGg9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9c2goYSxiLGQpO2UueWQ/Xy5yLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aChhLGIsYyxkKX0sMUUzKTpjKGUpfTt2YXIgdWg9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0sodWgsTSk7Xy5QPWZ1bmN0aW9uKCl7dGhpcy5sYT10aGlzLmxhO3RoaXMuVT10aGlzLlV9O18uUC5wcm90b3R5cGUubGE9ITE7Xy5QLnByb3RvdHlwZS56YT1mdW5jdGlvbigpe3RoaXMubGF8fCh0aGlzLmxhPSEwLHRoaXMudigpKX07Xy53aD1mdW5jdGlvbihhLGIpe18uUihhLF8uU2ModmgsYikpfTtfLlI9ZnVuY3Rpb24oYSxiKXthLmxhP2IoKTooYS5VfHwoYS5VPVtdKSxhLlUucHVzaChiKSl9O18uUC5wcm90b3R5cGUudj1mdW5jdGlvbigpe2lmKHRoaXMuVSlmb3IoO3RoaXMuVS5sZW5ndGg7KXRoaXMuVS5zaGlmdCgpKCl9O3ZhciB2aD1mdW5jdGlvbihhKXthJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnphJiZhLnphKCl9O3ZhciB4aD1mdW5jdGlvbihhKXt0aGlzLmw9MDt0aGlzLnY9YXx8MTAwO3RoaXMuaj1bXX07eGgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmpbdGhpcy5sXTt0aGlzLmpbdGhpcy5sXT1hO3RoaXMubD0odGhpcy5sKzEpJXRoaXMudjtyZXR1cm4gYn07eGgucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXthPXloKHRoaXMsYSk7cmV0dXJuIHRoaXMualthXX07eGgucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe2E9eWgodGhpcyxhKTt0aGlzLmpbYV09Yn07eGgucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09dGhpcy5qLmxlbmd0aH07dmFyIHpoPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmoubGVuZ3RoLGM9W10sZD1hLmoubGVuZ3RoLWEuai5sZW5ndGg7ZDxiO2QrKyljLnB1c2goYS5nZXQoZCkpO3JldHVybiBjfSx5aD1mdW5jdGlvbihhLGIpe2lmKGI+PWEuai5sZW5ndGgpdGhyb3cgRXJyb3IoXCJPdXQgb2YgYm91bmRzIGV4Y2VwdGlvblwiKTtyZXR1cm4gYS5qLmxlbmd0aDxhLnY/YjooYS5sK051bWJlcihiKSklYS52fTt2YXIgQmg9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz9mdW5jdGlvbigpe3JldHVybiEwfTpjO18uUC5jYWxsKHRoaXMpO3ZhciBkPXRoaXM7dGhpcy5vPWM7dGhpcy5qPW5ldyB4aCgxMDApO3RoaXMubD1bXTt2YXIgZT1mdW5jdGlvbihmKXtpZihkLm8oZikmJiFkLmxhKXtkLmouYWRkKGYpO2Zvcih2YXIgZz1fLkYoZC5sKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSlBaChoLnZhbHVlLGYpfX07Xy52KGEsYixlKSYmXy5SKHRoaXMsZnVuY3Rpb24oKXtfLnFiKGEsYixlKX0pfTtfLkooQmgsXy5QKTt2YXIgQWg9ZnVuY3Rpb24oYSxiKXt0cnl7YShiKX1jYXRjaChjKXtcInVuZGVmaW5lZFwiIT09dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoYyl9fSxDaD1mdW5jdGlvbihhLGIpe2lmKGEubGEpcmV0dXJuIGZ1bmN0aW9uKCl7fTtmb3IodmFyIGM9e30sZD0wO2Q8YS5qLmoubGVuZ3RoO2M9e0ZiOmMuRmJ9LGQrKyljLkZiPWEuai5nZXQoZCksaGgoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgQWgoYixlLkZiKX19KGMpKTthLmwucHVzaChiKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhZChhLmwsYil9fTtCaC5wcm90b3R5cGUudj1mdW5jdGlvbigpe18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuajthLmoubGVuZ3RoPTA7YS5sPTA7dGhpcy5sLmxlbmd0aD0wfTt2YXIgRWg7Xy5EaD1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnRvcD1hO3RoaXMucmlnaHQ9Yjt0aGlzLmJvdHRvbT1jO3RoaXMubGVmdD1kfTtFaD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uRGgoYS50b3AsYS5yaWdodCxhLmJvdHRvbSxhLmxlZnQpfTtfLkRoLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguY2VpbCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmNlaWwodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmNlaWwodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Xy5EaC5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguZmxvb3IodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5mbG9vcih0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307Xy5EaC5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGgucm91bmQodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5yb3VuZCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307dmFyIEZoPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMubGVmdD1hO3RoaXMudG9wPWI7dGhpcy53aWR0aD1jO3RoaXMuaGVpZ2h0PWR9LEdoPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5EaChhLnRvcCxhLmxlZnQrYS53aWR0aCxhLnRvcCthLmhlaWdodCxhLmxlZnQpfSxIaD1mdW5jdGlvbihhLGIpe3ZhciBjPU1hdGgubWF4KGEubGVmdCxiLmxlZnQpLGQ9TWF0aC5taW4oYS5sZWZ0K2Eud2lkdGgsYi5sZWZ0K2Iud2lkdGgpO2lmKGM8PWQpe3ZhciBlPU1hdGgubWF4KGEudG9wLGIudG9wKTthPU1hdGgubWluKGEudG9wK2EuaGVpZ2h0LGIudG9wK2IuaGVpZ2h0KTtpZihlPD1hKXJldHVybiBuZXcgRmgoYyxlLGQtYyxhLWUpfXJldHVybiBudWxsfTtGaC5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLmNlaWwodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLmNlaWwodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5jZWlsKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O0ZoLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtGaC5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307dmFyIEloPXtcIkFNUC1DQVJPVVNFTFwiOlwiYWNcIixcIkFNUC1GWC1GTFlJTkctQ0FSUEVUXCI6XCJmY1wiLFwiQU1QLUxJR0hUQk9YXCI6XCJsYlwiLFwiQU1QLVNUSUNLWS1BRFwiOlwic2FcIn0sSmg9ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP18ucjphO3ZhciBiPWEuY29udGV4dHx8YS5BTVBfQ09OVEVYVF9EQVRBO2lmKCFiKXRyeXtiPWEucGFyZW50LmNvbnRleHR8fGEucGFyZW50LkFNUF9DT05URVhUX0RBVEF9Y2F0Y2goYyl7fXRyeXtpZihiJiZiLnBhZ2VWaWV3SWQmJmIuY2Fub25pY2FsVXJsKXJldHVybiBifWNhdGNoKGMpe31yZXR1cm4gbnVsbH0sS2g9ZnVuY3Rpb24oKXt2YXIgYT1KaCgpO3JldHVybiBhJiZhLm1vZGU/K2EubW9kZS52ZXJzaW9ufHxudWxsOm51bGx9LExoPWZ1bmN0aW9uKCl7dmFyIGE9SmgoKTtpZihhJiZhLmNvbnRhaW5lcil7YT1hLmNvbnRhaW5lci5zcGxpdChcIixcIik7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyliLnB1c2goSWhbYVtjXV18fFwieFwiKTtyZXR1cm4gYi5qb2luKCl9cmV0dXJuIG51bGx9LE1oPWZ1bmN0aW9uKCl7dmFyIGE9SmgoKTtyZXR1cm4gYSYmYS5pbml0aWFsSW50ZXJzZWN0aW9ufSxOaD1mdW5jdGlvbigpe3ZhciBhPUpoKCk7dmFyIGI7cmV0dXJuKGE9YSYmKGI9YS5pbml0aWFsTGF5b3V0UmVjdCkmJlwibnVtYmVyXCI9PT10eXBlb2YgYi50b3AmJlwibnVtYmVyXCI9PT10eXBlb2YgYi5sZWZ0JiZcIm51bWJlclwiPT09dHlwZW9mIGIud2lkdGgmJlwibnVtYmVyXCI9PT10eXBlb2YgYi5oZWlnaHQ/bmV3IEZoKGIubGVmdCxiLnRvcCxiLndpZHRoLGIuaGVpZ2h0KTpudWxsKT9uZXcgXy55YShhLmxlZnQsYS50b3ApOihiPU1oKCkpJiZfLk1jKGIucm9vdEJvdW5kcyk/bmV3IF8ueWEoYi5yb290Qm91bmRzLmxlZnQrYi5ib3VuZGluZ0NsaWVudFJlY3QubGVmdCxiLnJvb3RCb3VuZHMudG9wK2IuYm91bmRpbmdDbGllbnRSZWN0LnRvcCk6bnVsbH0sT2g9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YXx8SmgoKSk/cWcoYS5tYXN0ZXIpP2EubWFzdGVyOm51bGw6bnVsbH0sUWg9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5hbXBJbmFib3hJZnJhbWVzPWEuYW1wSW5hYm94SWZyYW1lc3x8W10sZj1mdW5jdGlvbigpe30sZz1mdW5jdGlvbihrKXtpZihhLmFtcEluYWJveEluaXRpYWxpemVkKWYoKTtlbHNle3ZhciBsLG09XCJhbXAtaW5pLWxvYWRcIj09PWsuZGF0YTthLmFtcEluYWJveFBlbmRpbmdNZXNzYWdlcyYmIW0mJihsPS9eYW1wLShcXGR7MTUsMjB9KT8vLmV4ZWMoay5kYXRhKSkmJihhLmFtcEluYWJveFBlbmRpbmdNZXNzYWdlcy5wdXNoKGspLFBoKGEsbFsxXSkpfX0saD1mdW5jdGlvbigpe307YiYmKGUucHVzaChiKSxoPWZ1bmN0aW9uKCl7YS5BTVAmJmEuQU1QLmluYWJveFVucmVnaXN0ZXJJZnJhbWUmJmEuQU1QLmluYWJveFVucmVnaXN0ZXJJZnJhbWUoYik7YWQoZSxiKTtmKCl9KTtpZihhLmFtcEluYWJveEluaXRpYWxpemVkKXJldHVybiBoO2EuYW1wSW5hYm94UGVuZGluZ01lc3NhZ2VzPWEuYW1wSW5hYm94UGVuZGluZ01lc3NhZ2VzfHxbXTtjJiYvXlxcZHsxNSwyMH0kLy50ZXN0KGMpJiZQaChhLGMpO2Q/Zj1DaChkLGcpOmUuZ29vZ2xlX2FtcF9saXN0ZW5lcl9hZGRlZHx8KGUuZ29vZ2xlX2FtcF9saXN0ZW5lcl9hZGRlZD0hMCxfLnYoYSxcIm1lc3NhZ2VcIixnKSxmPWZ1bmN0aW9uKCl7Xy5xYihhLFwibWVzc2FnZVwiLGcpfSk7cmV0dXJuIGh9LFBoPWZ1bmN0aW9uKGEsYil7YS5hbXBJbmFib3hJbml0aWFsaXplZHx8YiYmIS9eXFxkezE1LDIwfSQvLnRlc3QoYil8fGEuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyQ9XCJhbXA0YWRzLWhvc3QtdjAuanNcIl0nKXx8dWcoYS5kb2N1bWVudCxiP0phKHZkKFwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvcnR2LyV7YW1wVmVyc2lvbn0vYW1wNGFkcy1ob3N0LXYwLmpzXCIpLHthbXBWZXJzaW9uOmJ9KTpCZCh1ZCh2ZChcImh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnL2FtcDRhZHMtaG9zdC12MC5qc1wiKSkpKX0sUmg9ISFKaCgpJiZfLnIhPV8uci50b3AsU2g9ZnVuY3Rpb24oYSl7YT1KaChhKTtpZighYXx8IV8uTWMoYS5kYXRhKXx8XCJzdHJpbmdcIiE9PXR5cGVvZiBhLmRhdGEudHlwZSlyZXR1cm4gbnVsbDthPWEuZGF0YS50eXBlLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJkb3VibGVjbGlja1wiPT1hfHxcImFkc2Vuc2VcIj09YT9udWxsOmF9O3ZhciBWaCxVaDtfLlRoPWZ1bmN0aW9uKGEsYil7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHN8fChhLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cz1bXSk7dmFyIGM9YS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO2Muc3JjPWI7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHMucHVzaChjKX07Vmg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9XCIrYjtfLkpiKGEsZnVuY3Rpb24oZCxlKXtkJiYoYys9XCImXCIrZStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoZCkpfSk7VWgoYyl9O1VoPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdztiLmZldGNoP2IuZmV0Y2goYSx7a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwiLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsbW9kZTpcIm5vLWNvcnNcIn0pOl8uVGgoYixhKX07dmFyIGphPXt9O3ZhciBsYTt2YXIgV2g9ZnVuY3Rpb24oKXt9LFhoPWZ1bmN0aW9uKGEsYil7a2EoYik7dGhpcy5qPWF9O18uSihYaCxXaCk7WGgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTt2YXIgWWg9ZnVuY3Rpb24oKXt9LFpoPWZ1bmN0aW9uKGEsYil7a2EoYik7dGhpcy5qPWF9O18uSihaaCxZaCk7WmgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyICRoPWZ1bmN0aW9uKCl7fSxhaT1mdW5jdGlvbihhLGIpe2thKGIpO3RoaXMuaj1hfTtfLkooYWksJGgpO2FpLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07bmV3IFpoKFwiYWJvdXQ6YmxhbmtcIixqYSk7bmV3IFpoKFwiYWJvdXQ6aW52YWxpZCN6VFN6XCIsamEpO3ZhciBkaSxmaSxnaSxoaSxpaSxuaSxOYjtfLmNpPWZ1bmN0aW9uKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpKGI9Xy5iaShhLGIpKSYmKGEuc3R5bGVbYl09Yyk7ZWxzZSBmb3IodmFyIGQgaW4gYil7Yz1hO3ZhciBlPWJbZF0sZj1fLmJpKGMsZCk7ZiYmKGMuc3R5bGVbZl09ZSl9fTtkaT17fTtfLmJpPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZGlbYl07aWYoIWMpe3ZhciBkPV8ua2UoYik7Yz1kO3ZvaWQgMD09PWEuc3R5bGVbZF0mJihkPSh5ZT9cIldlYmtpdFwiOnhlP1wiTW96XCI6Xy51ZT9cIm1zXCI6dGU/XCJPXCI6bnVsbCkrbGUoZCksdm9pZCAwIT09YS5zdHlsZVtkXSYmKGM9ZCkpO2RpW2JdPWN9cmV0dXJuIGN9O18uZWk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLlZmKGEpO3JldHVybiBjLmRlZmF1bHRWaWV3JiZjLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihhPWMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKT9hW2JdfHxhLmdldFByb3BlcnR5VmFsdWUoYil8fFwiXCI6XCJcIn07Zmk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5laShhLGIpfHwoYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGVbYl06bnVsbCl8fGEuc3R5bGUmJmEuc3R5bGVbYl19O2dpPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChiKXtyZXR1cm57bGVmdDowLHRvcDowLHJpZ2h0OjAsYm90dG9tOjB9fX07aGk9ZnVuY3Rpb24oYSl7aWYoXy51ZSYmISg4PD1OdW1iZXIoT2UpKSlyZXR1cm4gYS5vZmZzZXRQYXJlbnQ7dmFyIGI9Xy5WZihhKSxjPWZpKGEsXCJwb3NpdGlvblwiKSxkPVwiZml4ZWRcIj09Y3x8XCJhYnNvbHV0ZVwiPT1jO2ZvcihhPWEucGFyZW50Tm9kZTthJiZhIT1iO2E9YS5wYXJlbnROb2RlKWlmKDExPT1hLm5vZGVUeXBlJiZhLmhvc3QmJihhPWEuaG9zdCksYz1maShhLFwicG9zaXRpb25cIiksZD1kJiZcInN0YXRpY1wiPT1jJiZhIT1iLmRvY3VtZW50RWxlbWVudCYmYSE9Yi5ib2R5LCFkJiYoYS5zY3JvbGxXaWR0aD5hLmNsaWVudFdpZHRofHxhLnNjcm9sbEhlaWdodD5hLmNsaWVudEhlaWdodHx8XCJmaXhlZFwiPT1jfHxcImFic29sdXRlXCI9PWN8fFwicmVsYXRpdmVcIj09YykpcmV0dXJuIGE7cmV0dXJuIG51bGx9O2lpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uVmYoYSksYz1uZXcgXy55YSgwLDApO3ZhciBkPWI/Xy5WZihiKTpkb2N1bWVudDtkPSFfLnVlfHw5PD1OdW1iZXIoT2UpfHxfLlpmKFdmKGQpLmopP2QuZG9jdW1lbnRFbGVtZW50OmQuYm9keTtpZihhPT1kKXJldHVybiBjO2E9Z2koYSk7ZD1XZihiKS5qO2I9YWcoZCk7ZD1iZyhkKTtiPV8udWUmJkxlKFwiMTBcIikmJmQucGFnZVlPZmZzZXQhPWIuc2Nyb2xsVG9wP25ldyBfLnlhKGIuc2Nyb2xsTGVmdCxiLnNjcm9sbFRvcCk6bmV3IF8ueWEoZC5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0LGQucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKTtjLng9YS5sZWZ0K2IueDtjLnk9YS50b3ArYi55O3JldHVybiBjfTtfLmppPWZ1bmN0aW9uKGEpe2E9Z2koYSk7cmV0dXJuIG5ldyBfLnlhKGEubGVmdCxhLnRvcCl9O18ua2k9ZnVuY3Rpb24oYSxiKXtcIm51bWJlclwiPT10eXBlb2YgYSYmKGE9KGI/TWF0aC5yb3VuZChhKTphKStcInB4XCIpO3JldHVybiBhfTtfLmxpPWZ1bmN0aW9uKGEsYil7aWYoXCJub25lXCIhPWZpKGIsXCJkaXNwbGF5XCIpKXJldHVybiBhKGIpO3ZhciBjPWIuc3R5bGUsZD1jLmRpc3BsYXksZT1jLnZpc2liaWxpdHksZj1jLnBvc2l0aW9uO2MudmlzaWJpbGl0eT1cImhpZGRlblwiO2MucG9zaXRpb249XCJhYnNvbHV0ZVwiO2MuZGlzcGxheT1cImlubGluZVwiO2E9YShiKTtjLmRpc3BsYXk9ZDtjLnBvc2l0aW9uPWY7Yy52aXNpYmlsaXR5PWU7cmV0dXJuIGF9O18ubWk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0LGQ9eWUmJiFiJiYhYztyZXR1cm4odm9pZCAwPT09Ynx8ZCkmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PyhhPWdpKGEpLG5ldyBfLlRmKGEucmlnaHQtYS5sZWZ0LGEuYm90dG9tLWEudG9wKSk6bmV3IF8uVGYoYixjKX07bmk9ZnVuY3Rpb24oYSl7aWYoIWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXJldHVybiBudWxsO2E9Xy5saShnaSxhKTtyZXR1cm4gbmV3IF8uVGYoYS5yaWdodC1hLmxlZnQsYS5ib3R0b20tYS50b3ApfTtOYj1mdW5jdGlvbihhLGIpe2Euc3R5bGUuZGlzcGxheT1iP1wiXCI6XCJub25lXCJ9O3ZhciBwaT1mdW5jdGlvbigpe3ZhciBhPW9pKCk7XCJnb29nbGVfb25sb2FkX2ZpcmVkXCJpbiBhfHwoYS5nb29nbGVfb25sb2FkX2ZpcmVkPSExLF8udihhLFwibG9hZFwiLGZ1bmN0aW9uKCl7YS5nb29nbGVfb25sb2FkX2ZpcmVkPSEwfSkpfSxxaT1mdW5jdGlvbigpe3ZhciBhPXZvaWQgMD09PWE/RWY6YTt0cnl7cmV0dXJuIGEuaGlzdG9yeS5sZW5ndGh9Y2F0Y2goYil7cmV0dXJuIDB9fSxyaT1mdW5jdGlvbihhKXthPU9oKEpoKGEpKXx8YTthPWEuZ29vZ2xlX3VuaXF1ZV9pZDtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGE/YTowfSxzaT0hIXdpbmRvdy5nb29nbGVfYXN5bmNfaWZyYW1lX2lkLHRpPXNpJiZ3aW5kb3cucGFyZW50fHx3aW5kb3csb2k9ZnVuY3Rpb24oKXtpZihzaSYmIXFnKHRpKSl7dmFyIGE9XCIuXCIrRGYuZG9tYWluO3RyeXtmb3IoOzI8YS5zcGxpdChcIi5cIikubGVuZ3RoJiYhcWcodGkpOylEZi5kb21haW49YT1hLnN1YnN0cihhLmluZGV4T2YoXCIuXCIpKzEpLHRpPXdpbmRvdy5wYXJlbnR9Y2F0Y2goYil7fXFnKHRpKXx8KHRpPXdpbmRvdyl9cmV0dXJuIHRpfSx1aT1mdW5jdGlvbigpe3ZhciBhLGI9d2luZG93LkFjdGl2ZVhPYmplY3Q7aWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoKXtpZigoYT1uYXZpZ2F0b3IucGx1Z2luc1tcIlNob2Nrd2F2ZSBGbGFzaFwiXSkmJmEuZGVzY3JpcHRpb24pcmV0dXJuIGEuZGVzY3JpcHRpb24ucmVwbGFjZSgvKFthLXpBLVpdfFxccykrLyxcIlwiKS5yZXBsYWNlKC8oXFxzKStyLyxcIi5cIil9ZWxzZXtpZihuYXZpZ2F0b3IudXNlckFnZW50JiYwPD1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJXaW5kb3dzIENFXCIpKXt2YXIgYz0zO2ZvcihhPTE7YTspdHJ5e2E9bmV3IGIoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC5cIisoYysxKSksYysrfWNhdGNoKGQpe2E9bnVsbH1yZXR1cm4gYy50b1N0cmluZygpfWlmKFpkKCkpe2E9bnVsbDt0cnl7YT1uZXcgYihcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjdcIil9Y2F0Y2goZCl7Yz0wO3RyeXthPW5ldyBiKFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNlwiKSxjPTYsYS5BbGxvd1NjcmlwdEFjY2Vzcz1cImFsd2F5c1wifWNhdGNoKGUpe2lmKDY9PT1jKXJldHVybiBjLnRvU3RyaW5nKCl9dHJ5e2E9bmV3IGIoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaFwiKX1jYXRjaChlKXt9fWlmKGEpcmV0dXJuIGM9YS5HZXRWYXJpYWJsZShcIiR2ZXJzaW9uXCIpLnNwbGl0KFwiIFwiKVsxXSxjLnJlcGxhY2UoLywvZyxcIi5cIil9fXJldHVyblwiMFwifTt2YXIgdmk9ZnVuY3Rpb24oYSl7cmV0dXJuXCJDU1MxQ29tcGF0XCI9PWEuY29tcGF0TW9kZT9hLmRvY3VtZW50RWxlbWVudDphLmJvZHl9LHdpPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP18ucjpiO2E9YS5zY3JvbGxpbmdFbGVtZW50fHx2aShhKTtyZXR1cm4gbmV3IF8ueWEoYi5wYWdlWE9mZnNldHx8YS5zY3JvbGxMZWZ0LGIucGFnZVlPZmZzZXR8fGEuc2Nyb2xsVG9wKX0sc2E9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiEoIWF8fCEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpKX1jYXRjaChiKXtyZXR1cm4hMX19O3ZhciB4aT1mdW5jdGlvbihhLGIsYyl7YSYmbnVsbCE9PWImJmIhPWIudG9wJiYoYj1iLnRvcCk7dHJ5e3JldHVybih2b2lkIDA9PT1jPzA6Yyk/KG5ldyBfLlRmKGIuaW5uZXJXaWR0aCxiLmlubmVySGVpZ2h0KSkucm91bmQoKTpfLiRmKGJ8fHdpbmRvdykucm91bmQoKX1jYXRjaChkKXtyZXR1cm4gbmV3IF8uVGYoLTEyMjQ1OTMzLC0xMjI0NTkzMyl9fTt2YXIgeWk9ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiZhLnRvcD09YX0semk9ZnVuY3Rpb24oYSxiLGMsZCl7Yz1jfHxhLmdvb2dsZV9hZF93aWR0aDtkPWR8fGEuZ29vZ2xlX2FkX2hlaWdodDtpZih5aShhKSlyZXR1cm4hMTt2YXIgZT1iLmRvY3VtZW50RWxlbWVudDtpZihjJiZkKXt2YXIgZj0xLGc9MTthLmlubmVySGVpZ2h0PyhmPWEuaW5uZXJXaWR0aCxnPWEuaW5uZXJIZWlnaHQpOmUmJmUuY2xpZW50SGVpZ2h0PyhmPWUuY2xpZW50V2lkdGgsZz1lLmNsaWVudEhlaWdodCk6Yi5ib2R5JiYoZj1iLmJvZHkuY2xpZW50V2lkdGgsZz1iLmJvZHkuY2xpZW50SGVpZ2h0KTtpZihnPjIqZHx8Zj4yKmMpcmV0dXJuITF9cmV0dXJuITB9LEFpPWZ1bmN0aW9uKCl7dmFyIGE9b2koKTtpZihhPT1hLnRvcClyZXR1cm4gMDtmb3IoO2EmJmEhPWEudG9wJiZxZyhhKTthPWEucGFyZW50KXtpZihhLnNmXylyZXR1cm4gMjtpZihhLiRzZilyZXR1cm4gMztpZihhLmluR3B0SUYpcmV0dXJuIDQ7aWYoYS5pbkRhcElGKXJldHVybiA1fXJldHVybiAxfTt2YXIgQmk9Wy9eaHR0cHM/OlxcL1xcLyhzZWN1cmUpP3B1YmFkc1xcLmdcXC5kb3VibGVjbGlja1xcLm5ldCg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcLyhnb29nbGVhZHN8YWR4KVxcLmdcXC5kb3VibGVjbGlja1xcLm5ldCg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcLyg/IWFkeClhZC4qXFwuZG91YmxlY2xpY2tcXC5uZXQoOlxcZCspPygkfFxcLykvaSwvXmh0dHBzPzpcXC9cXC8odHBjfHBhZ2VhZDIpXFwuZ29vZ2xlc3luZGljYXRpb25cXC5jb20oOlxcZCspPygkfFxcLykvaSwvXmh0dHBzPzpcXC9cXC93d3dcXC5nb29nbGV0YWdzZXJ2aWNlc1xcLmNvbSg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcL2Fkc2VydmljZVxcLmdvb2dsZVxcLihjb20/XFwuKT9bYS16XXsyLDN9KDpcXGQrKT8oJHxcXC8pL2ldLENpPWZ1bmN0aW9uKGEpe3JldHVybiBfLlhjKEJpLGZ1bmN0aW9uKGIpe3JldHVybiBiLnRlc3QoYSl9KX0sRGk9ZnVuY3Rpb24oYSl7aWYoYT0vWy1cXHddK1xcLlstXFx3XSskLy5leGVjKGEpKXthPWFbMF0udG9Mb3dlckNhc2UoKTtmb3IodmFyIGI9MCxjPTA7YzxhLmxlbmd0aDsrK2MpYj0zMSpiK2EuY2hhckNvZGVBdChjKT4+PjA7c3dpdGNoKGIpe2Nhc2UgMTk2NzI2MTM2NDpyZXR1cm4gMDtjYXNlIDMxNDc0OTM1NDY6cmV0dXJuIDE7Y2FzZSAxNTY3MzQ2NDYxOnJldHVybiAyO2Nhc2UgMjE4MzA0MTgzODpyZXR1cm4gMztjYXNlIDc2MzIzNjI3OTpyZXR1cm4gNDtjYXNlIDEzNDIyNzk4MDE6cmV0dXJuIDU7Y2FzZSA1MjY4MzE3Njk6cmV0dXJuIDY7Y2FzZSAzNTI4MDYwMDI6cmV0dXJuIDc7Y2FzZSAyNzU1MDQ4OTI1OnJldHVybiA4O2Nhc2UgMzMwNjg0ODQwNzpyZXR1cm4gOTtjYXNlIDIyMDcwMDA5MjA6cmV0dXJuIDEwO2Nhc2UgNDg0MDM3MDQwOnJldHVybiAxMTtjYXNlIDM1MDY4NzEwNTU6cmV0dXJuIDEyO2Nhc2UgNjcyMTQzODQ4OnJldHVybiAxMztjYXNlIDI1Mjg3NTEyMjY6cmV0dXJuIDE0O2Nhc2UgMjc0NDg1NDc2ODpyZXR1cm4gMTU7Y2FzZSAzNzAzMjc4NjY1OnJldHVybiAxNjtjYXNlIDIwMTQ3NDkxNzM6cmV0dXJuIDE3O2Nhc2UgMTMzMDYzODI0OnJldHVybiAxODtjYXNlIDI3NDkzMzQ2MDI6cmV0dXJuIDE5O2Nhc2UgMzEzMTIzOTg0NTpyZXR1cm4gMjA7Y2FzZSAyMDc0MDg2NzYzOnJldHVybiAyMTtjYXNlIDc5NTc3MjQ5MzpyZXR1cm4gMjI7Y2FzZSAyOTA4NTc4MTk6cmV0dXJuIDIzO2Nhc2UgMzAzNTk0NzYwNjpyZXR1cm4gMjQ7Y2FzZSAyOTgzMTM4MDAzOnJldHVybiAyNTtjYXNlIDIxOTcxMzg2NzY6cmV0dXJuIDI2O2Nhc2UgNDIxNjAxNjE2NTpyZXR1cm4gMjc7Y2FzZSAyMzk4MDM1MjQ6cmV0dXJuIDI4O2Nhc2UgOTc1OTkzNTc5OnJldHVybiAyOTtjYXNlIDE3OTQ5NDAzMzk6cmV0dXJuIDMwO2Nhc2UgMTMxNDQyOTE4NjpyZXR1cm4gMzE7Y2FzZSAxNjQzNjE4OTM3OnJldHVybiAzMjtjYXNlIDQ5NzE1OTk4MjpyZXR1cm4gMzM7Y2FzZSAzODgyMjM5NjYxOnJldHVybiAzNH19cmV0dXJuLTF9LEVpPWZ1bmN0aW9uKGEpe2lmKCFhLmxlbmd0aClyZXR1cm4gMDtmb3IodmFyIGI9W10sYz0wOzM0Pj1jO2MrKyliW2NdPTA7Zm9yKGM9YS5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9RGkoYVtjXSk7MDw9ZCYmKGJbMzQtZF09MSl9cmV0dXJuIHBhcnNlSW50KGIuam9pbihcIlwiKSwyKX07dmFyIEZpPWZ1bmN0aW9uKGEsYil7dmFyIGM9dm9pZCAwPT09Yz97fTpjO3RoaXMuZXJyb3I9YTt0aGlzLmNvbnRleHQ9Yi5jb250ZXh0O3RoaXMubXNnPWIubWVzc2FnZXx8XCJcIjt0aGlzLmlkPWIuaWR8fFwianNlcnJvclwiO3RoaXMubWV0YT1jfTt2YXIgSGk9ZnVuY3Rpb24oYSl7YT0odGhpcy5sPWF8fF8ucil8fF8ucjt0aGlzLnY9YS50b3A9PWE/MTpxZyhhLnRvcCk/MjozOzMhPXRoaXMudiYmRGF0ZS5wYXJzZShfLnIudG9wLmRvY3VtZW50Lmxhc3RNb2RpZmllZCk7dmFyIGI9dGhpcy5sLGM9Ynx8Xy5yO2E9W107dmFyIGQ9bnVsbDtkb3t2YXIgZT1jO2lmKHFnKGUpKXt2YXIgZj1lLmxvY2F0aW9uLmhyZWY7ZD1lLmRvY3VtZW50JiZlLmRvY3VtZW50LnJlZmVycmVyfHxudWxsfWVsc2UgZj1kLGQ9bnVsbDthLnB1c2gobmV3IEdpKGZ8fFwiXCIsZSkpO3RyeXtjPWUucGFyZW50fWNhdGNoKGcpe2M9bnVsbH19d2hpbGUoYyYmZSE9Yyk7ZT0wO2ZvcihjPWEubGVuZ3RoLTE7ZTw9YzsrK2UpYVtlXS5kZXB0aD1jLWU7ZT1ifHxfLnI7aWYoZS5sb2NhdGlvbiYmZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMmJmUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zLmxlbmd0aD09YS5sZW5ndGgtMSlmb3IoYj0xO2I8YS5sZW5ndGg7KytiKWM9YVtiXSxjLnVybHx8KGMudXJsPWUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zW2ItMV18fFwiXCIsYy5lZD0hMCk7dGhpcy5qPWF9LEppPWZ1bmN0aW9uKGEpe3ZhciBiPWEubC5kb2N1bWVudCYmYS5sLmRvY3VtZW50LnNjcmlwdHM/YS5sLmRvY3VtZW50LnNjcmlwdHM6W107aWYoIWIpcmV0dXJuIDA7Zm9yKHZhciBjPVtdLGQ9Yi5sZW5ndGgtMTswPD1kJiYyNj5jLmxlbmd0aDspYltkXS5zcmMmJmMudW5zaGlmdChiW2RdLnNyYyksZC0tO3JldHVybiBJaShhLGMpfSxJaT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9KGE9YS5qW01hdGgubWF4KGEuai5sZW5ndGgtMSwwKV0udXJsfHxudWxsKSYmb2coYS5tYXRjaChfLm5nKVszXXx8bnVsbCksZT1NYXRoLm1pbihiLmxlbmd0aCwyNiksZj0wO2Y8ZTtmKyspYT1udWxsIT1iW2ZdJiZvZyhiW2ZdLm1hdGNoKF8ubmcpWzNdfHxudWxsKXx8XCJcIixjKj00LGEmJihkJiZhPT1kP2MrPTM6Q2koYltmXSk/Yys9MjphJiYwPD1EaShhKSYmKGMrPTEpKTtyZXR1cm4gY30sS2k9ZnVuY3Rpb24oYSl7YT1hLmwuZG9jdW1lbnQmJmEubC5kb2N1bWVudC5zY3JpcHRzP2EubC5kb2N1bWVudC5zY3JpcHRzOltdO2lmKCFhKXJldHVybiAwO2Zvcih2YXIgYj1bXSxjPWEubGVuZ3RoLTE7MDw9YztjLS0pe3ZhciBkPWFbY107ZCYmbnVsbCE9ZC5zcmMmJmIucHVzaChvZyhkLnNyYy5tYXRjaChfLm5nKVszXXx8bnVsbCkpfXJldHVybiBFaShiKX0sR2k9ZnVuY3Rpb24oYSxiKXt0aGlzLnVybD1hO3RoaXMuTD1iO3RoaXMuZWQ9ITE7dGhpcy5kZXB0aD1udWxsfTt2YXIgTGk9bnVsbCxNaT1mdW5jdGlvbigpe2lmKG51bGw9PT1MaSl7TGk9XCJcIjt0cnl7dmFyIGE9XCJcIjt0cnl7YT1fLnIudG9wLmxvY2F0aW9uLmhhc2h9Y2F0Y2goYyl7YT1fLnIubG9jYXRpb24uaGFzaH1pZihhKXt2YXIgYj1hLm1hdGNoKC9cXGJkZWlkPShbXFxkLF0rKS8pO0xpPWI/YlsxXTpcIlwifX1jYXRjaChjKXt9fXJldHVybiBMaX07dmFyIFBpO18uTmk9ZnVuY3Rpb24oKXt2YXIgYT1fLnIucGVyZm9ybWFuY2U7cmV0dXJuIGEmJmEubm93JiZhLnRpbWluZz9NYXRoLmZsb29yKGEubm93KCkrYS50aW1pbmcubmF2aWdhdGlvblN0YXJ0KTpUYygpfTtfLk9pPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9fLnI6YTtyZXR1cm4oYT1hLnBlcmZvcm1hbmNlKSYmYS5ub3c/YS5ub3coKTpudWxsfTtQaT1mdW5jdGlvbihhKXt2YXIgYj1fLnIucGVyZm9ybWFuY2U7cmV0dXJuIGImJmIudGltaW5nJiZiLnRpbWluZ1thXXx8MH07dmFyIFFpPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5sYWJlbD1hO3RoaXMudHlwZT1iO3RoaXMudmFsdWU9Yzt0aGlzLmR1cmF0aW9uPXZvaWQgMD09PWQ/MDpkO3RoaXMudW5pcXVlSWQ9TWF0aC5yYW5kb20oKTt0aGlzLnNsb3RJZD1lfTt2YXIgUmk9Xy5yLnBlcmZvcm1hbmNlLFNpPSEhKFJpJiZSaS5tYXJrJiZSaS5tZWFzdXJlJiZSaS5jbGVhck1hcmtzKSxUaT12YShmdW5jdGlvbigpe3ZhciBhO2lmKGE9U2kpYT1NaSgpLGE9ISFhLmluZGV4T2YmJjA8PWEuaW5kZXhPZihcIjEzMzdcIik7cmV0dXJuIGF9KSxVaT1mdW5jdGlvbihhLGIpe3RoaXMuZXZlbnRzPVtdO3RoaXMubD1ifHxfLnI7dmFyIGM9bnVsbDtiJiYoYi5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlPWIuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZXx8W10sdGhpcy5ldmVudHM9Yi5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlLGM9Yi5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcpO3RoaXMuaj1UaSgpfHwobnVsbCE9Yz9jOk1hdGgucmFuZG9tKCk8YSl9LFZpPWZ1bmN0aW9uKGEpe2EmJlJpJiZUaSgpJiYoUmkuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX3N0YXJ0XCIpLFJpLmNsZWFyTWFya3MoXCJnb29nX1wiK2EubGFiZWwrXCJfXCIrYS51bmlxdWVJZCtcIl9lbmRcIikpfSxXaT1mdW5jdGlvbihhLGIsYyxkLGUsZil7YS5qJiYoYj1uZXcgUWkoYixjLGQsdm9pZCAwPT09ZT8wOmUsZiksIWEuanx8MjA0ODxhLmV2ZW50cy5sZW5ndGh8fGEuZXZlbnRzLnB1c2goYikpfTtVaS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5qKXJldHVybiBudWxsO3ZhciBjPV8uT2koKXx8Xy5OaSgpO2E9bmV3IFFpKGEsYixjKTtiPVwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfc3RhcnRcIjtSaSYmVGkoKSYmUmkubWFyayhiKTtyZXR1cm4gYX07dmFyIFhpPWZ1bmN0aW9uKGEsYil7aWYoYS5qJiZcIm51bWJlclwiPT09dHlwZW9mIGIudmFsdWUpe3ZhciBjPV8uT2koKXx8Xy5OaSgpO2IuZHVyYXRpb249Yy1iLnZhbHVlO2M9XCJnb29nX1wiK2IubGFiZWwrXCJfXCIrYi51bmlxdWVJZCtcIl9lbmRcIjtSaSYmVGkoKSYmUmkubWFyayhjKTshYS5qfHwyMDQ4PGEuZXZlbnRzLmxlbmd0aHx8YS5ldmVudHMucHVzaChiKX19LFlpPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLk9pKCk7ZCYmV2koYSxiLDksZCwwLGMpfTt2YXIgWWI9ZnVuY3Rpb24oYSxiKXt0cnl7LTE9PWEuaW5kZXhPZihiKSYmKGE9YitcIlxcblwiK2EpO2Zvcih2YXIgYzthIT1jOyljPWEsYT1hLnJlcGxhY2UoLygoaHR0cHM/OlxcLy4uKlxcLylbXlxcLzpdKjpcXGQrKD86LnxcXG4pKilcXDIvLFwiJDFcIik7cmV0dXJuIGEucmVwbGFjZSgvXFxuICovZyxcIlxcblwiKX1jYXRjaChkKXtyZXR1cm4gYn19O3ZhciBaaT1JZygpO3ZhciAkaT1mdW5jdGlvbihhKXt0aGlzLm1ldGhvZE5hbWU9YX0sYWo9bmV3ICRpKDEpLGJqPW5ldyAkaSgxNSksY2o9bmV3ICRpKDIpLGRqPW5ldyAkaSgzKSxlaj1uZXcgJGkoNSksZmo9bmV3ICRpKDYpLGdqPW5ldyAkaSg3KSxoaj1uZXcgJGkoOCksaWo9bmV3ICRpKDE0KSxqaj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGJbYS5tZXRob2ROYW1lXXx8Y3x8ZnVuY3Rpb24oKXt9fTt2YXIga2o9ZnVuY3Rpb24oKXt0aGlzLmw9ZnVuY3Rpb24oKXt9O3RoaXMudj1mdW5jdGlvbigpe3JldHVybltdfTt0aGlzLmo9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGxqPWZ1bmN0aW9uKGEsYixjKXthLmw9amooYWosYixmdW5jdGlvbigpe30pO2Eudj1mdW5jdGlvbihkKXtyZXR1cm4gamooY2osYixmdW5jdGlvbigpe3JldHVybltdfSkoZCxjKX07YS5qPWZ1bmN0aW9uKCl7cmV0dXJuIGpqKGRqLGIsZnVuY3Rpb24oKXtyZXR1cm5bXX0pKGMpfX07SWMoa2opO3ZhciBtaj1mdW5jdGlvbihhKXtrai5CKCkubChhKX0sbmo9ZnVuY3Rpb24oYSl7cmV0dXJuIGtqLkIoKS52KGEpfTt2YXIgb2o9ZnVuY3Rpb24oKXt0aGlzLmw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8hMTpifTt0aGlzLnY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8wOmJ9O3RoaXMubz1mdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iP1wiXCI6Yn07dGhpcy5tPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9dm9pZCAwPT09Yj9bXTpifTt0aGlzLmo9ZnVuY3Rpb24oKXt9fSxwaj1mdW5jdGlvbihhLGIsYyl7YS5sPWZ1bmN0aW9uKGQsZSl7cmV0dXJuIGpqKGVqLGIpKGQsZSxjKX07YS52PWZ1bmN0aW9uKGQsZSl7cmV0dXJuIGpqKGZqLGIpKGQsZSxjKX07YS5vPWZ1bmN0aW9uKGQsZSl7cmV0dXJuIGpqKGdqLGIpKGQsZSxjKX07YS5tPWZ1bmN0aW9uKGQsZSl7cmV0dXJuIGpqKGhqLGIpKGQsZSxjKX07YS5qPWZ1bmN0aW9uKCl7amooYmosYikoYyl9fSxxajtJYyhvaik7Xy55PWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/ITE6YjtyZXR1cm4gb2ouQigpLmwoYSxiKX07Xy5yYT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj8wOmI7cmV0dXJuIG9qLkIoKS52KGEsYil9O3FqPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/XCJcIjpiO3JldHVybiBvai5CKCkubyhhLGIpfTtfLnJqPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/W106YjtyZXR1cm4gb2ouQigpLm0oYSxiKX07dmFyIHNqPXt9LHRqPShzai5jb21wYW5pb25fYWRzPVwiY29tcGFuaW9uQWRzXCIsc2ouY29udGVudD1cImNvbnRlbnRcIixzai5wdWJsaXNoZXJfYWRzPVwicHViYWRzXCIsc2opLHVqPWZ1bmN0aW9uKGEpe3JldHVybiBhKydDb3JyZWxhdG9yIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSBzZWUgdGhlIEdvb2dsZSBBZCBNYW5hZ2VyIGhlbHAgcGFnZSBvbiBcIlBhZ2V2aWV3cyBpbiBHUFRcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vYWRtYW5hZ2VyL2Fuc3dlci8xODMyODE/aGw9ZW4nfTt2YXIgWGI9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yLmdvb2dsZXRhZ3x8KF8uci5nb29nbGV0YWc9e30pfSxXYj1mdW5jdGlvbihhLGIpe3ZhciBjPVhiKCk7Yy5oYXNPd25Qcm9wZXJ0eShhKXx8KGNbYV09Yil9LHZqPWZ1bmN0aW9uKGEsYil7YS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixiLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KFwib25sb2FkXCIsYil9O3ZhciB3aj1uZXcgdC5NYXAseGo9bmV3IHQuTWFwLHlqPWZ1bmN0aW9uKCl7fSx6aj1mdW5jdGlvbihhLGIpe3JldHVybiBhIGluc3RhbmNlb2YgYnx8YSBpbnN0YW5jZW9mIHlqJiYoYT13ai5nZXQoYSksYSBpbnN0YW5jZW9mIGIpP2E6bnVsbH0sQWo9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9dGpbYV0pP1hiKClbYV0oKTpudWxsfTt2YXIgQmo9ezI0NzpcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0XCIsNzouMDIsMTM6MTUwMCwyMzouMDAxLDM3Oi4wMSwzODouMDAxLDU4OjEsMTUwOlwiXCIsMjExOiExLDI1MzohMSwxNTI6W10sMTcyOm51bGwsMTkxOlwiXCIsMTkyOlwiXCIsMTkwOlwiXCIsMjQ1Ont9LDE4MDpudWxsLDI0NjpbXSwyMjc6e30sMjI2OltdLDI0ODowLDIyODpcIi8vd3d3Lmdvb2dsZXRhZ3NlcnZpY2VzLmNvbS9wdWJjb25zb2xlL1wiLDI1MDpudWxsLDI1MjpudWxsLDI1MTpudWxsfSxFaixGaixHaixIajtCals2XT1KZyh3aW5kb3cpO0JqWzQ5XT0obmV3IERhdGUpLmdldFRpbWUoKTtCalszNl09SWcoKTtCalsxNDhdPVppO0JqWzIyMV09SWcoKTtCalsyMDRdPV8uSGcoXCItMVwiLC0xKTt2YXIgQ2o9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gQmopdGhpc1thXT1CalthXX07SWMoQ2opO18uRGo9ZnVuY3Rpb24oYSl7cmV0dXJuIENqLkIoKVthXX07RWo9WGIoKTtGaj1Dai5CKCk7R2o9RWouX3ZhcnNfO2ZvcihIaiBpbiBHailGaltIal09R2pbSGpdO0VqLl92YXJzXz1Gajt2YXIgSmo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLElqLG51bGwpfTtLKEpqLE0pO3ZhciBJaj1bMl0sS2o9ZnVuY3Rpb24oYSl7cmV0dXJuIEIoYSwxKX0sTGo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDEsYil9LE1qPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQoYSwyLGJ8fFtdKX07dmFyIE5qPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKE5qLE0pO3ZhciBPaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhPaixNKTt2YXIgUGo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soUGosTSk7dmFyIFFqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQoYSwzLGIpfTt2YXIgU2o9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLFJqLG51bGwpfTtLKFNqLE0pO3ZhciBSaj1bMiwzLDcsMTRdLFRqPWZ1bmN0aW9uKGEsYil7d2YoYSwyLGIpfSxVaj1mdW5jdGlvbihhKXtyZXR1cm4gTyhhLE9qLDI1KX07dmFyIFZqPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKFZqLE0pO3ZhciBXaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMSxiKX0sWGo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDIsYil9LFlqPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFZqO3JldHVybiBEKGEsMywhMCl9O3ZhciBaaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhaaixNKTt2YXIgYms9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGFrLG51bGwpfTtLKGJrLE0pO3ZhciBhaz1bMl07dmFyIGRrPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxjayxudWxsKX07SyhkayxNKTt2YXIgY2s9WzMsNCw1LDYsOCw5XTtkay5wcm90b3R5cGUuZ2V0QWRVbml0UGF0aD1mdW5jdGlvbigpe3JldHVybiBCKHRoaXMsMSl9O3ZhciBlaz1mdW5jdGlvbihhLGIpe0QoYSwyLGIpfTtkay5wcm90b3R5cGUuZ2V0Q2xpY2tVcmw9ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLDcpfTt2YXIgZms9ZnVuY3Rpb24oYSxiKXt3ZihhLDksYil9LGdrPWZ1bmN0aW9uKGEpe3JldHVybiBuZihhLDE1LDApfTt2YXIgaGs9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJjI9PWEubGVuZ3RoP18ueSgzNjApP2toKGFbMF0pJiZraChhWzFdKTpsaChhWzBdKSYmbGgoYVsxXSk6XCJzdHJpbmdcIj09PXR5cGVvZiBhJiZcImZsdWlkXCI9PWF9LGlrPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpJiYyPT1hLmxlbmd0aCYmbGgoYVswXSkmJmxoKGFbMV0pfSxqaz1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9YaihXaihuZXcgVmosYVswXSksYVsxXSk6WWooKX0sbGs9ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYoa2soYSkpYi5wdXNoKGprKGEpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDsrK2Mpe3ZhciBkPWFbY107a2soZCkmJmIucHVzaChqayhkKSk7YTp7dmFyIGU9W1wiZmx1aWRcIl07aWYoS2MoZCkmJktjKGUpJiZkLmxlbmd0aD09ZS5sZW5ndGgpe2Zvcih2YXIgZj1kLmxlbmd0aCxnPWZkLGg9MDtoPGY7aCsrKWlmKCFnKGRbaF0sZVtoXSkpe2Q9ITE7YnJlYWsgYX1kPSEwfWVsc2UgZD0hMX1kJiZiLnB1c2goWWooKSl9cmV0dXJuIGJ9LG1rPWZ1bmN0aW9uKGEpe2lmKCFhfHwhQXJyYXkuaXNBcnJheShhKXx8MiE9PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF07YT1hWzFdO2lmKFwibnVtYmVyXCI9PT10eXBlb2YgYiYmMDw9YiliPU1hdGguZmxvb3IoYik7ZWxzZSBpZihudWxsIT09YilyZXR1cm4gbnVsbDtpZihcIm51bWJlclwiPT09dHlwZW9mIGEmJjA8PWEpYT1NYXRoLmZsb29yKGEpO2Vsc2UgaWYobnVsbCE9PWEpcmV0dXJuIG51bGw7cmV0dXJuIFhqKFdqKG5ldyBWaixiKSxhKX0sbms9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCxjPW51bGw7dmFyIGQ9YSYmKEFycmF5LmlzQXJyYXkoYS5maXhlZCl8fFwiZmx1aWRcIj09PWEuZml4ZWQpO3ZhciBlPV8ueSg0MTkpJiZhJiZBcnJheS5pc0FycmF5KGEubWF4KTtpZihhJiYhQXJyYXkuaXNBcnJheShhKSYmKGR8fGUpKXtpZihkPWxrKGEuZml4ZWQpLGM9bWsoYS5tYXgpKWEubWluPygoYj1tayhhLm1pbikpJiZudWxsPT09QihiLDEpJiZXaihiLDApLGImJm51bGw9PT1CKGIsMikmJlhqKGIsMCkpOmI9WGooV2oobmV3IFZqLDApLDApfWVsc2UgZD1sayhhKTtpZihhJiYhQXJyYXkuaXNBcnJheShhKSl7aWYoYS5tYXgmJiFjKXRocm93IEVycm9yKFwiSW52YWxpZCBHUFQgbWF4aW11bSBzaXplOiBcIitKU09OLnN0cmluZ2lmeShhKSk7aWYoYS5taW4mJiFiKXRocm93IEVycm9yKFwiSW52YWxpZCBHUFQgbWF4aW11bSBzaXplOiBcIitKU09OLnN0cmluZ2lmeShhKSk7fWlmKGMpe2lmKDA9PT1CKGMsMSl8fDA9PT1CKGMsMikpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBzaXplLCBtYXhpbXVtcyBjYW5ub3QgYmUgemVybzogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO2lmKGIpe2U9QihiLDEpO3ZhciBmPUIoYywxKTtpZihudWxsIT1lJiZudWxsIT1mJiZlPmYpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBzaXplOiBtaW5pbXVtIHdpZHRoIGxhcmdlciB0aGFuIG1heGltdW0gd2lkdGg6IFwiK0pTT04uc3RyaW5naWZ5KGEpKTtlPUIoYiwyKTtmPUIoYywyKTtpZihudWxsIT1lJiZudWxsIT1mJiZlPmYpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBzaXplOiBtaW5pbXVtIGhlaWdodCBsYXJnZXIgdGhhbiBtYXhpbXVtIGhlaWdodDogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO319ZC5sZW5ndGh8fF8ueSg0MTkpJiZjfHxkaChcIkludmFsaWQgR1BUIGZpeGVkIHNpemUgc3BlY2lmaWNhdGlvbjogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO2MmJmI/KGE9bmV3IFpqLGM9dmYoYSwxLGMpLGI9dmYoYywyLGIpKTpiPW51bGw7cmV0dXJue1hjOmQsSGE6Yn19LGtrPWZ1bmN0aW9uKGEpe2lmKF8ueSgzNjEpKXJldHVybiBoayhhKTtpZihBcnJheS5pc0FycmF5KGEpJiYxPGEubGVuZ3RoKXt2YXIgYj1cIm51bWJlclwiPT09dHlwZW9mIGFbMF0mJlwibnVtYmVyXCI9PT10eXBlb2YgYVsxXTthPSFfLnkoMzYwKXx8MDxhWzBdJiYwPGFbMV07cmV0dXJuIGImJmF9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhJiZcImZsdWlkXCI9PWF9O3ZhciBvaz1mdW5jdGlvbihhLGIpe2E9Xy5BKGEsXCJmaW5kXCIpLmNhbGwoYSxmdW5jdGlvbihjKXtjPU8oYyxWaiwxKTtyZXR1cm4gQihjLDEpPD1CKGIsMSkmJkIoYywyKTw9QihiLDIpfSk7cmV0dXJuIG51bGw9PWE/bnVsbDp1ZihhLFZqLDIpfSxwaz1mdW5jdGlvbihhKXtpZighQXJyYXkuaXNBcnJheShhKXx8MiE9YS5sZW5ndGgpdGhyb3cgRXJyb3IoXCJFYWNoIG1hcHBpbmcgZW50cnkgaGFzIHRvIGJlIGFuIGFycmF5IG9mIHNpemUgMlwiKTt2YXIgYj1hWzBdO2lmKCFpayhiKSl0aHJvdyBFcnJvcihcIlNpemUgaGFzIHRvIGJlIGFuIGFycmF5IG9mIHR3byBub24tbmVnYXRpdmUgaW50ZWdlcnNcIik7Yj1YaihXaihuZXcgVmosYlswXSksYlsxXSk7aWYoQXJyYXkuaXNBcnJheShhWzFdKSYmMD09YVsxXS5sZW5ndGgpYT1bXTtlbHNlIGlmKGE9bGsoYVsxXSksMD09YS5sZW5ndGgpdGhyb3cgRXJyb3IoXCJBdCBsZWFzdCBvbmUgc2xvdCBzaXplIG11c3QgYmUgcHJlc2VudFwiKTt2YXIgYz1uZXcgYms7Yj12ZihjLDEsYik7cmV0dXJuIHdmKGIsMixhKX07dmFyIHFrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGImJlwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDx1ZihhLGJrLDYpLmxlbmd0aD9vayh1ZihhLGJrLDYpLFhqKFdqKG5ldyBWaixiKSxjKSk6dWYoYSxWaiw1KX0seGE9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93LGM9bnVsbDtiLnRvcD09YiYmKGI9eGkoITEsYiksYz1xayhhLGIud2lkdGgsYi5oZWlnaHQpKTtudWxsPT1jJiYoYz1xayhhKSk7cmV0dXJuIGMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiB4KGQsMyk/XCJmbHVpZFwiOltCKGQsMSksQihkLDIpXX0pfSxTYj1mdW5jdGlvbihhKXtpZihfLnkoNDE5KSYmMD09eGEoYSkubGVuZ3RoJiZudWxsIT1CKGEsMTYpKXJldHVyblwiMXgxXCI7dmFyIGI9W10sYz0hMTthPV8uRih4YShhKSk7Zm9yKHZhciBkPWEubmV4dCgpOyFkLmRvbmU7ZD1hLm5leHQoKSlkPWQudmFsdWUsQXJyYXkuaXNBcnJheShkKT9iLnB1c2goZC5qb2luKFwieFwiKSk6XCJmbHVpZFwiPT1kP2M9ITA6Yi5wdXNoKGQpO2MmJmIudW5zaGlmdChcIjMyMHg1MFwiKTtyZXR1cm4gYi5qb2luKFwifFwiKX0scms9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBjPTAsZD1bXTthJiYoZC5wdXNoKGEuZ2V0QWRVbml0UGF0aCgpKSxkLnB1c2goU2IoYSkpLGQucHVzaChCKGEsMikpKTtpZihiKXthPVtdO2Zvcih2YXIgZT0wO2ImJjI1PmU7Yj1iLnBhcmVudE5vZGUsKytlKTk9PT1iLm5vZGVUeXBlP2EucHVzaChcIlwiKTphLnB1c2goYi5pZCk7KGI9YS5qb2luKCkpJiZkLnB1c2goYil9MDxkLmxlbmd0aCYmKGM9Q2coZC5qb2luKFwiOlwiKSkpO3JldHVybiBjLnRvU3RyaW5nKCl9LHNrPWZ1bmN0aW9uKGEpe3JldHVybiAwIT09YSYmMSE9PWF9O3ZhciB0az1mdW5jdGlvbigpe3ZhciBhPV8ueSg4NSl8fF8ueSg4NCk7Xy5yLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZz1hfHxfLnIuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nO1VpLmNhbGwodGhpcyxhPzE6MCxfLnIpO3RoaXMudj0wfTtfLkoodGssVWkpO0ljKHRrKTt2YXIgdms9ZnVuY3Rpb24oYSxiLGMpe2lmKEIoYiwxOCkpcmV0dXJuIEIoYiwxOCk7YT1jLmdldChhLmdldFNsb3RJZCgpKTtyZXR1cm4gbnVsbCE9YT91ayhhKTpudWxsfSx3az1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gbnVsbCE9dWsoYyk/ITA6YS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT12ayhlLGJbZS5nZXRTbG90RWxlbWVudElkKCldLGQpfSl9LHhrPWZ1bmN0aW9uKGEpe2lmKF8ueSgxNjgpfHwxNTM2MD49YS5sZW5ndGgpcmV0dXJuIGE7dmFyIGI9Xy55KDE2NCkmJi8mc3VwcG9ydGluZ191cmxzPS8udGVzdChhKSxjPWE7aWYoMTUzNjA8Yy5sZW5ndGgpe3ZhciBkPWI/LTE6Yy5sYXN0SW5kZXhPZihcIiZcIiwxNTM1Mik7LTEhPT1kP2M9Yy5zdWJzdHJpbmcoMCxkKTooYz1jLnN1YnN0cmluZygwLDE1MzUyKSxjPWMucmVwbGFjZSgvJVxcdz8kLyxcIlwiKSxiJiYoYz1jLnJlcGxhY2UoLyZbXj1dKj0/JC8sXCJcIikpKTtjKz1cIiZ0cnVuYz0xXCJ9Yj1jO1dpKHRrLkIoKSwoOSkudG9TdHJpbmcoKSw5LGEubGVuZ3RoLWIubGVuZ3RoKzgpO3JldHVybiBifSx5az1mdW5jdGlvbihhKXt2YXIgYj1hO1wiYWJvdXQ6YmxhbmtcIiE9YSYmKGI9Yi5yZXBsYWNlKC88L2csXCIlM0NcIikucmVwbGFjZSgvPi9nLFwiJTNFXCIpLnJlcGxhY2UoL1wiL2csXCIlMjJcIikucmVwbGFjZSgvJy9nLFwiJTI3XCIpLC9eaHR0cHM/OlxcL1xcLy8udGVzdChiKXx8KGI9XCJ1bmtub3duOlwiK2IpKTtyZXR1cm4gYn0sems9ZnVuY3Rpb24oKXtyZXR1cm5cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb21cIn0sZGI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb2N1bWVudDtyZXR1cm4geWkoYSk/Yi5VUkw6Yi5yZWZlcnJlcn0sdWE9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPXdpbmRvdy50b3AsYz1uZXcgXy55YSgwLDApLGQ9Xy5jZyhfLlZmKGEpKTtpZihzZShkLFwicGFyZW50XCIpKXtkb3t2YXIgZT1kPT1iP2lpKGEpOl8uamkoYSk7Yy54Kz1lLng7Yy55Kz1lLnl9d2hpbGUoZCYmZCE9YiYmZCE9ZC5wYXJlbnQmJihhPWQuZnJhbWVFbGVtZW50KSYmKGQ9ZC5wYXJlbnQpKX12YXIgZj1jfWNhdGNoKGcpe2Y9bmV3IF8ueWEoLTEyMjQ1OTMzLC0xMjI0NTkzMyl9cmV0dXJuIGZ9LEFrPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZihcImdvb2dsZV9wcmV2aWV3PVwiLGEubGFzdEluZGV4T2YoXCI/XCIpKSxjPWEuaW5kZXhPZihcIiZcIixiKTstMT09YyYmKGM9YS5sZW5ndGgtMSwtLWIpO3JldHVybiBhLnN1YnN0cmluZygwLGIpK2Euc3Vic3RyaW5nKGMrMSxhLmxlbmd0aCl9LEJrPXZhKGZ1bmN0aW9uKCl7cmV0dXJuXCJYTUxIdHRwUmVxdWVzdFwiaW4gd2luZG93JiZcIndpdGhDcmVkZW50aWFsc1wiaW4gbmV3IFhNTEh0dHBSZXF1ZXN0fSksQ2s9dmEoZnVuY3Rpb24oKXtyZXR1cm4hXy51ZSYmIXZlfSksRGs9dmEoZnVuY3Rpb24oKXtyZXR1cm4hXy51ZSYmIXZlfSksRWs9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zcGxpdCgvXFxyXFxufFxccnxcXG4vKS5sZW5ndGg7XCJFcnJvclwiPT1hLnNsaWNlKDAsNSkmJmItLTtyZXR1cm4gYn0sRms9dmEoZnVuY3Rpb24oKXtyZXR1cm4hIUtnKF8uci5sb2NhdGlvbi5ocmVmKX0pLEdrPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3BsaXQoXCIvXCIpO3JldHVyblwiL1wiPT1hLmNoYXJBdCgwKSYmMjw9Yi5sZW5ndGg/YlsxXTpcIi9cIiE9YS5jaGFyQXQoMCkmJjE8PWIubGVuZ3RoP2JbMF06XCJcIn0sSGs9ZnVuY3Rpb24oYSl7dmFyIGI9W107Yj1hLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gR2soYy5nZXRBZFVuaXRQYXRoKCkpfSk7VWEoYik7cmV0dXJuIGJ9LElrPWZ1bmN0aW9uKGEpe3JldHVybiBhPyhhPW5pKGEpKSYmYS5mbG9vcigpOm51bGx9LEprPWZ1bmN0aW9uKGEpe3JldHVybiEhYSYmISFCKGEsMSl9LEtrPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXt9LGQ9Xy5GKF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGIpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7ZT1lLnZhbHVlO3ZhciBmPWJbZV07Zj1uZXcgZi5jb25zdHJ1Y3RvcihBZihmLmlhKSk7Y1tlXT1mfXJldHVybntOOm5ldyBhLmNvbnN0cnVjdG9yKEFmKGEuaWEpKSxSOmN9fSxMaz12YShmdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5jcnlwdG98fHdpbmRvdy5tc0NyeXB0bztpZih2b2lkIDAhPT1hKXt2YXIgYj1uZXcgVWludDhBcnJheSgxNik7YS5nZXRSYW5kb21WYWx1ZXMoYil9ZWxzZSBmb3IoYj1BcnJheSgxNiksYT0wOzE2PmE7KythKWJbYV09TWF0aC5mbG9vcigyNTUqTWF0aC5yYW5kb20oKSk7YT1cIlwiO2I9Xy5GKGIpO2Zvcih2YXIgYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLDE1Pj1jJiYoYSs9XCIwXCIpLGErPWMudG9TdHJpbmcoMTYpO3JldHVybiBhfSksTWs9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLlI7cmV0dXJuIHgoYi5OLDYpfHx4KGNbYS5nZXRTbG90RWxlbWVudElkKCldLDE3KT9udWxsOnBhKGEpfSxOaz1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMiw1MikpfSxPaz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPXdpKHRvcC5kb2N1bWVudCx0b3ApLnksZT1kK2IuaGVpZ2h0KihjKzEpO3JldHVybiBhLnk+PWQmJmEueTw9ZX1jYXRjaChmKXtyZXR1cm4hMH19LFBrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1wYShhLnNsb3QsYiksZT1kJiYyPT09Xy5yYSgzOTUpJiZcIm5vbmVcIj09PWQuc3R5bGUuZGlzcGxheTtlJiYoZC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIik7YT16YShiLGEsYyk7ZSYmKGQuc3R5bGUuZGlzcGxheT1cIm5vbmVcIik7cmV0dXJuIGF9LFFrPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO3JldHVybiBiLmxvY2F0aW9uP2IuVVJMU2VhcmNoUGFyYW1zPyhhPWIuVVJMU2VhcmNoUGFyYW1zPyhuZXcgYi5VUkxTZWFyY2hQYXJhbXMoYi5sb2NhdGlvbi5zZWFyY2gpKS5nZXQoYSk6bnVsbCkmJmEubGVuZ3RoP2E6bnVsbDooYT0obmV3IFJlZ0V4cChcIls/Jl1cIithK1wiPShbXiZdKilcIikpLmV4ZWMoYi5sb2NhdGlvbi5zZWFyY2gpKT9kZWNvZGVVUklDb21wb25lbnQoYVsxXSk6bnVsbDpudWxsfSxSaz1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj93aW5kb3c6YjtyZXR1cm4hIVFrKGEsYil9LFNrPWZ1bmN0aW9uKGEpe3JldHVybiEhYSYmKG51bGwhPUIoYSwxKXx8ISF4KGEsNikpfSxUaz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFNrKGIpfHw0PT1nayhhKXx8NT09PWdrKGEpfHxjfSxVaz1mdW5jdGlvbihhKXtyZXR1cm5cImdvb2dsZV9hZHNfaWZyYW1lX1wiK2EudG9TdHJpbmcoKX0sVms9ZnVuY3Rpb24oYSl7cmV0dXJuIFVrKGEpK1wiX19jb250YWluZXJfX1wifSxvYT1mdW5jdGlvbihhLGIpe2I9cGEoYSxiKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz1WayhhLmdldFNsb3RJZCgpKTtyZXR1cm4gaWcoYixmdW5jdGlvbihkKXtyZXR1cm4gZC5pZD09PWN9KX07dmFyICRhPWZ1bmN0aW9uKCl7cmV0dXJuXCIyMDIwMDgyNzAxXCJ9O1diKFwiZ2V0VmVyc2lvblwiLCRhKTt2YXIgV2s9ZnVuY3Rpb24oYSxiLGMpe2I9dm9pZCAwPT09Yj9cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb21cIjpiO2lmKG51bGw9PWN8fDA+Y3x8MTxjKWM9Xy5EaigyMyk7dGhpcy52PU1hdGgucmFuZG9tKCk7dGhpcy5BPXRoaXMudjxjO3RoaXMuaj1hO3RoaXMubT1iYihfLnIpO3RoaXMubz1iO3RoaXMubD17cHZzaWQ6dGhpcy5tfX0sRT1mdW5jdGlvbihhLGIsYyl7XCJzdHJpbmdcIiE9dHlwZW9mIGMmJihjPVN0cmluZyhjKSk7L15cXHcrJC8udGVzdChiKSYmYyYmKGEubFtiXT1jKX0sWWs9ZnVuY3Rpb24oYSxiLGMpe2I9dm9pZCAwPT09Yj9udWxsOmI7Yz12b2lkIDA9PT1jPyExOmM7Yj12b2lkIDA9PT1iP251bGw6YjtjPXZvaWQgMD09PWM/ITE6YztpZihGaygpKWI9ITA7ZWxzZXt2YXIgZD1hLkE7YiYmMDw9YiYmKGQ9KGM/YS52Ok1hdGgucmFuZG9tKCkpPGIpO2I9ZCYmISFhLmp9YiYmKF8ueSgzMDUpP1ZoKGEubCxhLmopOihhPVhrKGEpfHxcIlwiLF8uVGgod2luZG93LGEpKSl9LFhrPWZ1bmN0aW9uKGEpe3ZhciBiPWEubytcIi9wYWdlYWQvZ2VuXzIwND9pZD1cIitlbmNvZGVVUklDb21wb25lbnQoYS5qKTtfLkpiKGEubCxmdW5jdGlvbihjLGQpe2MmJihiKz1cIiZcIitkK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChjKSl9KTtyZXR1cm4gYn0sbGI9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/Wms6YjtFKGEsXCJ2cmdcIiwkYSgpKTt2YXIgYz1IayhiKTtjLmxlbmd0aCYmKDM+PWMubGVuZ3RoP0UoYSxcIm53X2lkXCIsYy5qb2luKCkpOihjPWMuc2xpY2UoMCwzKSxjLnB1c2goXCJfX2V4dHJhX19cIiksRShhLFwibndfaWRcIixjLmpvaW4oKSkpKTtFKGEsXCJuc2xvdHNcIixiLmxlbmd0aC50b1N0cmluZygpKTtiPWtqLkIoKS5qKCk7Yi5sZW5ndGgmJkUoYSxcImVpZFwiLGIuam9pbigpKTtFKGEsXCJwdWJfdXJsXCIsZG9jdW1lbnQuVVJMKX0sa2I9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz97fTpjO3ZhciBkPWMueGV8fFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiO2M9Yy52YTtpZih2b2lkIDA9PT1jfHwwPmN8fDE8YyljPV8uRGooMjMpO01hdGgucmFuZG9tKCk8YyYmKGE9bmV3IFdrKGEsZCksYihhKSxZayhhLDEsITApKX0sWms9W107dmFyICRrPV8uRGooMzgpLGFsPWZ1bmN0aW9uKGEsYil7YT17bWV0aG9kSWQ6YX07Yi5uYW1lJiYoYS5uYW1lPWIubmFtZSk7Yi5tZXNzYWdlJiYoYS5tZXNzYWdlPWIubWVzc2FnZS5zdWJzdHJpbmcoMCw1MTIpKTtiLmZpbGVOYW1lJiYoYS5maWxlTmFtZT1iLmZpbGVOYW1lKTtiLmxpbmVOdW1iZXImJihhLmxpbmVOdW1iZXI9Yi5saW5lTnVtYmVyKTtiLnN0YWNrJiYoYS5zdGFjaz1ZYihiLnN0YWNrLFwiXCIpKTtyZXR1cm4gYX0sY2w9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz8hMTpjO2JsKGEsYik7aWYoIWMpdGhyb3cgYjt9LGJsPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/JGs6YztpZighYi5pc1JlcG9ydGVkKXRyeXtiLmlzUmVwb3J0ZWQ9ITA7dmFyIGQ9YWwoYSxiKSxlPW5ldyBXayhcImdwdF9leGNlcHRpb25cIik7dHJ5e2xiKGUpfWNhdGNoKGYpe31fLkpiKGQsZnVuY3Rpb24oZixnKXtyZXR1cm4gRShlLGcsZil9KTtZayhlLGMpfWNhdGNoKGYpe319LFM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBHKGEsYixjLF8ueSgxNDQpKX0sRz1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ITE6ZDtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBmPVtdLGc9MDtnPGFyZ3VtZW50cy5sZW5ndGg7KytnKWZbZ109YXJndW1lbnRzW2ddO2c9ITE7dmFyIGg9bnVsbCxrPWN8fGNsLGw9dGsuQigpO3RyeXt2YXIgbT1fLnkoODUpO20mJmwmJihoPWwuc3RhcnQoYS50b1N0cmluZygpLDMpKTt2YXIgbj1iLmFwcGx5KHRoaXMsZik7Zz0hMDttJiZsJiZYaShsLGgpfWNhdGNoKHcpe2c/YmwoMTEwLHcpOm49ay5jYWxsKHRoaXMsYSx3KSxWaShoKX1pZihkJiYuMT5NYXRoLnJhbmRvbSgpKXRyeXt2YXIgcT1FcnJvcigpO2tiKFwiZ3B0X2FwaV91c2FnZVwiLGZ1bmN0aW9uKHcpe0UodyxcIm1ldGhvZElkXCIsYSk7RSh3LFwiYXJnc1wiLGYubGVuZ3RoKTtFKHcsXCJzdGFja1wiLFliKHEuc3RhY2sscS5tZXNzYWdlKSk7bGIodyl9LHt2YToxfSl9Y2F0Y2godyl7fXJldHVybiBufX0sbWI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBHKGEsYixjLCExKSgpfTt2YXIgZGw9ZnVuY3Rpb24oYSl7dGhpcy5wdXNoPVMoNzYsZnVuY3Rpb24oYil7cmV0dXJuIGEucHVzaC5hcHBseShhLGFyZ3VtZW50cyl9KX07Xy5KKGRsLHlqKTt2YXIgZWw9ZnVuY3Rpb24oKXtfLlAuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuWD1uZXcgdC5NYXB9O18uSihlbCxfLlApO2VsLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dGhpcy5YLmNsZWFyKCl9O2VsLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5pZCxkLGU7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gZygpe3ZhciBoLGs9dGhpcyxsLG0sbixxO3JldHVybiBEYShnLGZ1bmN0aW9uKHcpe2lmKDE9PXcuailyZXR1cm4gaD1kb2N1bWVudC5jcmVhdGVFdmVudChcIkN1c3RvbUV2ZW50XCIpLGguaW5pdEN1c3RvbUV2ZW50KGMsITAsITAsYiksRWEodywwLDIpO2w9bnVsbCE9PShkPWsuWC5nZXQoYykpJiZ2b2lkIDAhPT1kP2Q6bmV3IHQuU2V0O209Xy5GKGwpO2ZvcihuPW0ubmV4dCgpOyFuLmRvbmU7bj1tLm5leHQoKSl7cT1uLnZhbHVlO3RyeXtxKGgpfWNhdGNoKHUpe1wiZnVuY3Rpb25cIj09PXR5cGVvZihudWxsPT09KGU9d2luZG93LmNvbnNvbGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmVycm9yKSYmY29uc29sZS5lcnJvcih1KX19dy5qPTB9KX0pfTt2YXIgZmw9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/W106Yjt0aGlzLmw9YTt0aGlzLmo9Yn07ZmwucHJvdG90eXBlLmdldE1lc3NhZ2VJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O2ZsLnByb3RvdHlwZS5nZXRNZXNzYWdlQXJncz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O3ZhciBobD1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMubD1uZXcgRGF0ZTt0aGlzLkE9ZCYmZ2woZCk7dGhpcy5tPWMmJmdsKGMpO3RoaXMubz1hO3RoaXMudj1iO3RoaXMuaj1lfTtfLnA9aGwucHJvdG90eXBlO18ucC5nZXRTbG90PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQX07Xy5wLmdldFNlcnZpY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tfTtfLnAuZ2V0TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTtfLnAuZ2V0VGltZXN0YW1wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubH07Xy5wLmdldE1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52fTtfLnAuZ2V0UmVmZXJlbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07Xy5wLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sLnRvVGltZVN0cmluZygpK1wiOiBcIitpbFt0aGlzLm9dK1wiOiBcIit0aGlzLnY7dGhpcy5qJiYoYSs9XCIgRHVyYXRpb246IFwiKyh0aGlzLmwuZ2V0VGltZSgpLXRoaXMuai5nZXRUaW1lc3RhbXAoKS5nZXRUaW1lKCkpK1wibXMuXCIpO3JldHVybiBhfTtfLnAuZ2V0U2VydmljZT1TKDc2MyxobC5wcm90b3R5cGUuZ2V0U2VydmljZSk7dmFyIGlsPVtcIkRlYnVnXCIsXCJJbmZvXCIsXCJXYXJuaW5nXCIsXCJFcnJvclwiLFwiRmF0YWxcIl07dmFyIGpsPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyB4aCgxRTMpfSxrbD1mdW5jdGlvbihhLGIpe3JldHVybiB6aChhLmopLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5nZXRTbG90KCk9PT1ifSl9LGxsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpoKGEuaikuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLmdldExldmVsKCk+PWJ9KX07amwucHJvdG90eXBlLmxvZz1mdW5jdGlvbihhLGIsYyxkLGUpe2E9bmV3IGhsKGEsYix2b2lkIDA9PT1jP251bGw6Yyx2b2lkIDA9PT1kP251bGw6ZCx2b2lkIDA9PT1lP251bGw6ZSk7dGhpcy5qLmFkZChhKTtyZXR1cm4gYX07amwucHJvdG90eXBlLmluZm89ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMubG9nKDEsYSxiLGMsZCl9O2psLnByb3RvdHlwZS5KPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmxvZygyLGEsYixjLGQpfTtqbC5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMubG9nKDMsYSxiLGMsZCl9O0ljKGpsKTt2YXIgbWw9dmEoZnVuY3Rpb24oKXt2YXIgYT1fLnJqKDUpLmluZGV4T2YoU3RyaW5nKGpoKCkpKTthPV8ucmooNilbYV18fFwiXCI7dmFyIGI9dm9pZCAwPT09Yj93aW5kb3cuZG9jdW1lbnQ6YjtpZihhJiZiLmhlYWQpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIpO2MuaHR0cEVxdWl2PVwib3JpZ2luLXRyaWFsXCI7Yy5jb250ZW50PWE7Yi5oZWFkLmFwcGVuZENoaWxkKGMpfX0pLG5sPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/bmF2aWdhdG9yOmI7bWwoKTtiPVwic2NoZWR1bGluZ1wiaW4gYiYmXCJpc0lucHV0UGVuZGluZ1wiaW4gYi5zY2hlZHVsaW5nJiZiLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcoKTt2YXIgYz1fLnJhKDMxKTtiJiZNYXRoLnJhbmRvbSgpPGMmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtrYihcImdwdF9pbnB1dF9wZW5kaW5nXCIsZnVuY3Rpb24oZCl7bGIoZCk7RShkLFwiY3R4XCIsYSk7RShkLFwiY29yclwiLGJiKF8ucikpO3ZhciBlPUVycm9yKFwiaW5wdXRQZW5kaW5nXCIpO0UoZCxcInN0YWNrXCIsWWIoZS5zdGFjayxlLm1lc3NhZ2UpKX0se3ZhOjF9KX0sMSk7cmV0dXJuIGJ9O3ZhciBvbD1mdW5jdGlvbigpe2VsLmNhbGwodGhpcyl9O18uSihvbCxlbCk7dmFyIGdsPWZ1bmN0aW9uKGEpe3ZhciBiPXhqLmdldChhKTtpZighYil7dmFyIGM9Yj1hLkdhKCk7d2ouc2V0KGMsYSk7eGouc2V0KGEsYyl9cmV0dXJuIGJ9O3ZhciBUPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtmb3IodmFyIGM9W10sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDsrK2QpY1tkXT1hcmd1bWVudHNbZF07cmV0dXJuIG5ldyBmbChhLF8uRmIoYykuY29uY2F0KCkpfX0scGw9ZnVuY3Rpb24oYSl7cmV0dXJuXCJbXCIrYS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBiP1wiJ1wiK2IrXCInXCI6QXJyYXkuaXNBcnJheShiKT9wbChiKTpTdHJpbmcoYil9KS5qb2luKFwiLCBcIikrXCJdXCJ9LHFsPWZ1bmN0aW9uKGEsYil7Yj1wbChiKTtiPWIuc3Vic3RyaW5nKDEsYi5sZW5ndGgtMSk7cmV0dXJuIG5ldyBmbCg5NixbYSxiXSl9LHJsPVQoMiksc2w9VCgzKSx0bD1UKDQpLHVsPVQoNSksdmw9VCg2KSx3bD1UKDEyKSx4bD1UKDE0KSx5bD1UKDE2KSx6bD1UKDE3KSxBbD1UKDE5KSxCbD1UKDIwKSxDbD1UKDIzKSxEbD1UKDI2KSxFbD1UKDI3KSxGbD1UKDI4KSxHbD1UKDMwKSxIbD1UKDMxKSxJbD1UKDM0KSxKbD1UKDM1KSxLbD1UKDM2KSxMbD1UKDM3KSxNbD1UKDM4KSxObD1UKDQwKSxPbD1UKDQzKSxQbD1UKDQ0KSxRbD1UKDQ2KSxSbD1UKDQ3KSxTbD1UKDQ4KSxUbD1UKDUwKSxVbD1UKDU3KSxWbD1UKDU4KSxXbD1UKDU5KSxYbD1UKDYwKSxZbD1UKDYxKSxabD1UKDYyKSwkbD1UKDYzKSxhbT1UKDY0KSxibT1UKDY2KSxjbT1UKDY4KSxkbT1UKDcwKSxlbT1UKDcxKSxmbT1UKDc0KSxnbT1UKDc2KSxobT1UKDc4KSxpbT1UKDc5KSxqbT1UKDgwKSxrbT1UKDgyKSxsbT1UKDg0KSxtbT1UKDg1KSxubT1UKDg3KSxvbT1UKDg4KSxwbT1UKDkwKSxxbT1UKDkyKSxybT1UKDkzKSxzbT1UKDk0KSx0bT1UKDk1KSx1bT1UKDk5KSx2bT1UKDEwMCksd209VCgxMDEpLHhtPVQoMTAyKSx5bT1UKDEwMyksem09VCgxMDQpLEFtPVQoMTA1KSxCbT1UKDEwNiksQ209VCgxMDcpLERtPVQoMTA4KSxFbT1UKDEwOSksRm09VCgxMTApLEdtPVQoMTExKSxIbT1UKDExMyksSW09VCgxMTQpLEptPVQoMTE1KSxLbT1UKDExNiksTG09VCgxMTcpLE1tPVQoMTE4KSxObT1UKDExOSk7dmFyIE9tPWZ1bmN0aW9uKCl7ZWwuY2FsbCh0aGlzKTt0aGlzLkE9dGhpcy5qPTB9O18uSihPbSxvbCk7T20ucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkbCh0aGlzKX07T20ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWpsLkIoKSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoOysrYyl0cnl7XCJmdW5jdGlvblwiPT09dHlwZW9mIGFyZ3VtZW50c1tjXSYmKGFyZ3VtZW50c1tjXSgpLHRoaXMuaisrKX1jYXRjaChkKXt0aGlzLkErKyx3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZXJyb3ImJndpbmRvdy5jb25zb2xlLmVycm9yKFwiRXhjZXB0aW9uIGluIHF1ZXVlZCBHUFQgY29tbWFuZFwiLGQpLGIuZXJyb3IoR2woU3RyaW5nKGQubWVzc2FnZSkpKX1iLmluZm8oSGwoU3RyaW5nKHRoaXMuaiksU3RyaW5nKHRoaXMuQSkpKTtyZXR1cm4gdGhpcy5qfTt2YXIgUW09ZnVuY3Rpb24oKXtPbS5jYWxsKHRoaXMpO3ZhciBhPXRoaXM7dGhpcy5vPVtdO3RoaXMuQz0hMTt0aGlzLm09dGhpcy5sPTA7dGhpcy5EPUcoNjM1LGZ1bmN0aW9uKCl7YS5sPTA7UG0oYSl9KX07Xy5KKFFtLE9tKTt2YXIgUm09ZnVuY3Rpb24oYSl7cmV0dXJuIGEuQ3x8IWEuby5sZW5ndGg/MDpfLnkoMTcxKT8xOl8ueSgxNzApP25sKDEpPzE6MDpfLnkoMjQ3KSYmbmwoMSk/MjowfSxTbT1mdW5jdGlvbihhKXthLmx8fChhLmw9c2V0VGltZW91dChhLkQsXy5yYSgyMykpKX0sUG09ZnVuY3Rpb24oYSl7aWYoYS5sKXtpZighYS5DKXJldHVybjtjbGVhclRpbWVvdXQoYS5sKTthLmw9MH1mb3IodmFyIGI9amwuQigpO2Euby5sZW5ndGg7KXt2YXIgYz1hLm8uc2hpZnQoKTt0cnl7YygpLGEuaisrfWNhdGNoKGUpe2EuQSsrLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoXCJFeGNlcHRpb24gaW4gcXVldWVkIEdQVCBjb21tYW5kXCIsZSksYi5lcnJvcihHbChTdHJpbmcoZS5tZXNzYWdlKSkpfWM9Um0oYSk7aWYoMT09PWMpe1NtKGEpO2JyZWFrfWVsc2UgMj09PWMmJihhLm09YS5tfHxfLk5pKCkpfWIuaW5mbyhIbChTdHJpbmcoYS5qKSxTdHJpbmcoYS5BKSkpO2lmKGEubSl7dmFyIGQ9Xy5OaSgpLWEubTthLm09MDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQga2IoXCJncHRfaW5wdXRfcGVuZGluZ1wiLGZ1bmN0aW9uKGUpe2xiKGUpO0UoZSxcImN0eFwiLDQpO0UoZSxcImNvcnJcIixiYihfLnIpKTtFKGUsXCJwdHJcIixkKX0se3ZhOjF9KX0sMSl9fSxUbT1mdW5jdGlvbihhLGIpe2Eubz1fLkZiKGEubykuY29uY2F0KF8uRmIoYi5maWx0ZXIoTGMpKSk7Xy55KDE3MykmJjE9PT1SbShhKT9TbShhKTpQbShhKX07UW0ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKWJbY109YXJndW1lbnRzW2NdO3RoaXMuQz1fLnkoMTcyKTtUbSh0aGlzLGIpO3JldHVybiB0aGlzLmp9O3ZhciBVbT1mdW5jdGlvbigpe2lmKF8ueSgxNzYpKXt2YXIgYT1YYigpLmNtZDtpZighYXx8QXJyYXkuaXNBcnJheShhKSl7dmFyIGI9bmV3IFFtO1hiKCkuY21kPWdsKGIpO2EmJjA8YS5sZW5ndGgmJlRtKGIsYSl9fWVsc2UgaWYoYT1YYigpLmNtZCwhYXx8QXJyYXkuaXNBcnJheShhKSliPW5ldyBPbSxYYigpLmNtZD1nbChiKSxhJiYwPGEubGVuZ3RoJiZiLnB1c2guYXBwbHkoYixhKX07VW09Ryg3NyxVbSk7dmFyIFZtPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKFZtLE0pO3ZhciBYbT1mdW5jdGlvbihhKXtrZih0aGlzLGEsV20sbnVsbCl9O0soWG0sTSk7dmFyIFdtPVsxM107dmFyIFptPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxZbSxudWxsKX07SyhabSxNKTt2YXIgWW09WzEzXTt2YXIgJG09ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soJG0sTSk7dmFyIGFuPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGFuLE0pO3ZhciBkbj1mdW5jdGlvbihhKXtrZih0aGlzLGEsYm4sY24pfTtLKGRuLE0pO3ZhciBlbj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhlbixNKTt2YXIgYm49WzE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDQ1LDIzLDI3LDI4LDM4XSxjbj1bWzQsNDFdLFszOSw0OF1dO2VuLnByb3RvdHlwZS5nZXRIdG1sPWZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcywxKX07dmFyIGduPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxmbixudWxsKX07SyhnbixNKTt2YXIgaG49ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soaG4sTSk7dmFyIGZuPVsxXSxqbj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgaG47cmV0dXJuIHFmKGIsMSxhLDApfSxrbj1mdW5jdGlvbihhLGIpe3JldHVybiBxZihhLDIsYiwwKX0sbG49ZnVuY3Rpb24oYSxiKXt4ZihhLDEsYixobil9O3ZhciBubj1mdW5jdGlvbihhLGIpe3ZhciBjPXdpbmRvdzthOnt0cnl7aWYoYSl7dmFyIGQ9YS5nZXRJdGVtKFwiZ29vZ2xlX2V4cGVyaW1lbnRfbW9kXCIpO2JyZWFrIGF9fWNhdGNoKGgpe31kPW51bGx9dmFyIGU9ZHx8XCJcIjtkPW51bGw7dHJ5e2lmKGQ9emYoZ24sZSksZSl7dmFyIGY9emYoZ24sZSk7bG4oZixrbihqbigxKSwtMSkpO2YubSgpfX1jYXRjaChoKXttbihlKSxkPW5ldyBnbn1mPXVmKGQsaG4sMSk7aWYoZj1aYyhmLGZ1bmN0aW9uKGgpe3JldHVybiBuZihoLDEsMCk9PT1ifSkpe3ZhciBnPW5mKGYsMiwwKTtpZihudWxsPT09Z3x8aXNOYU4oZykpbW4oZSk7ZWxzZSByZXR1cm4gZ31jPUVnKGMpO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2Y/a24oZixjKTpsbihkLGtuKGpuKGIpLGMpKTtyZXR1cm4gRmcoYSxkLm0oKSk/YzpudWxsfSxtbj1mdW5jdGlvbihhKXsuMDE+TWF0aC5yYW5kb20oKSYmVmgoe2RhdGE6YX0sXCJsc190YW1wXCIpfTt2YXIgb249e30scG49KG9uWzNdPVwiaHR0cHM6Ly9zMC4ybWRuLm5ldC9hZHMvcmljaG1lZGlhL3N0dWRpby9tdS90ZW1wbGF0ZXMvaGlmaS9oaWZpLmpzXCIsb24pLHFuPXt9LHJuPShxblszXT1cImh0dHBzOi8vczAuMm1kbi5uZXQvYWRzL3JpY2htZWRpYS9zdHVkaW9fY2FuYXJ5L211L3RlbXBsYXRlcy9oaWZpL2hpZmlfY2FuYXJ5LmpzXCIscW4pO3ZhciBzbj1mdW5jdGlvbihhKXt0aGlzLmo9YTt0aGlzLmw9amUoKX0sdG49ZnVuY3Rpb24oYSl7dmFyIGI9e307Xy5WYyhhLGZ1bmN0aW9uKGMpe2JbYy5qXT1jLmx9KTtyZXR1cm4gYn07dmFyIHZuLHduLHhuO3ZuPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPV8udW4oZG9jdW1lbnQpfTtfLnVuPWZ1bmN0aW9uKGEpe3JldHVybnt2aXNpYmxlOjEsaGlkZGVuOjIscHJlcmVuZGVyOjMscHJldmlldzo0LHVubG9hZGVkOjV9W2EudmlzaWJpbGl0eVN0YXRlfHxhLndlYmtpdFZpc2liaWxpdHlTdGF0ZXx8YS5tb3pWaXNpYmlsaXR5U3RhdGV8fFwiXCJdfHwwfTt3bj1mdW5jdGlvbihhKXt2YXIgYjthLnZpc2liaWxpdHlTdGF0ZT9iPVwidmlzaWJpbGl0eWNoYW5nZVwiOmEubW96VmlzaWJpbGl0eVN0YXRlP2I9XCJtb3p2aXNpYmlsaXR5Y2hhbmdlXCI6YS53ZWJraXRWaXNpYmlsaXR5U3RhdGUmJihiPVwid2Via2l0dmlzaWJpbGl0eWNoYW5nZVwiKTtyZXR1cm4gYn07eG49ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEuaGlkZGVuP2EuaGlkZGVuOm51bGwhPWEubW96SGlkZGVuP2EubW96SGlkZGVuOm51bGwhPWEud2Via2l0SGlkZGVuP2Eud2Via2l0SGlkZGVuOm51bGx9O3ZhciB6bix5bjt6bj1mdW5jdGlvbigpe3RoaXMud2FzUGxhVGFnUHJvY2Vzc2VkPSExO3RoaXMud2FzUmVhY3RpdmVBZENvbmZpZ1JlY2VpdmVkPXt9O3RoaXMuYWRDb3VudD17fTt0aGlzLndhc1JlYWN0aXZlQWRWaXNpYmxlPXt9O3RoaXMuc3RhdGVGb3JUeXBlPXt9O3RoaXMucmVhY3RpdmVUeXBlRW5hYmxlZEluQXNmZT17fTt0aGlzLndhc1JlYWN0aXZlVGFnUmVxdWVzdFNlbnQ9ITE7dGhpcy5yZWFjdGl2ZVR5cGVEaXNhYmxlZEJ5UHVibGlzaGVyPXt9O3RoaXMudGFnU3BlY2lmaWNTdGF0ZT17fTt0aGlzLmltcHJvdmVDb2xsaXNpb25EZXRlY3Rpb249MTt0aGlzLm1lc3NhZ2VWYWxpZGF0aW9uRW5hYmxlZD0hMTt0aGlzLmZsb2F0aW5nQWRzU3RhY2tpbmc9bmV3IHlufTtfLkFuPWZ1bmN0aW9uKGEpe2EuZ29vZ2xlX3JlYWN0aXZlX2Fkc19nbG9iYWxfc3RhdGU/bnVsbD09YS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZS5mbG9hdGluZ0Fkc1N0YWNraW5nJiYoYS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZS5mbG9hdGluZ0Fkc1N0YWNraW5nPW5ldyB5bik6YS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZT1uZXcgem47cmV0dXJuIGEuZ29vZ2xlX3JlYWN0aXZlX2Fkc19nbG9iYWxfc3RhdGV9O3luPWZ1bmN0aW9uKCl7dGhpcy5tYXhaSW5kZXhSZXN0cmljdGlvbnM9e307dGhpcy5uZXh0UmVzdHJpY3Rpb25JZD0wO3RoaXMubWF4WkluZGV4TGlzdGVuZXJzPVtdfTt2YXIgQm4sRm4sR24sSG47Qm49NzI4KjEuMzg7Xy5Dbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhlaWdodD49YS5pbm5lcldpZHRofTtfLkVuPWZ1bmN0aW9uKGEpe3ZhciBiPV8uRG4oYSkuY2xpZW50V2lkdGg7YT1hLmlubmVyV2lkdGg7cmV0dXJuIGImJmE/Yi9hOjB9O0ZuPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9Xy5EbihhKS5jbGllbnRXaWR0aCk/YT4odm9pZCAwPT09Yj80MjA6Yik/MzI3Njg6MzIwPmE/NjU1MzY6MDoxNjM4NH07R249ZnVuY3Rpb24oYSl7cmV0dXJuKGE9Xy5FbihhKSk/MS4wNTxhPzI2MjE0NDouOTU+YT81MjQyODg6MDoxMzEwNzJ9O18uRG49ZnVuY3Rpb24oYSl7YT1hLmRvY3VtZW50O3ZhciBiPXt9O2EmJihiPVwiQ1NTMUNvbXBhdFwiPT1hLmNvbXBhdE1vZGU/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5KTtyZXR1cm4gYnx8e319O0huPWZ1bmN0aW9uKGEpe3ZhciBiPV8uQW4od2luZG93KTtiLmFkQ291bnQ9Yi5hZENvdW50fHx7fTtiLmFkQ291bnRbYV09Yi5hZENvdW50W2FdKzF8fDF9O18uSW49ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWEucGFnZVlPZmZzZXQ/KGEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHxhLmRvY3VtZW50LmJvZHkucGFyZW50Tm9kZXx8YS5kb2N1bWVudC5ib2R5KS5zY3JvbGxUb3A6YS5wYWdlWU9mZnNldH07dmFyIEpuPWZ1bmN0aW9uKGEpe2E6e2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgYz1fLnI7dmFyIGQ9YVtiXTt2YXIgZT1jLmRvY3VtZW50O2UuZWxlbWVudEZyb21Qb2ludChkLngsZC55KTt2YXIgZj1kLng7ZD1kLnk7ZS5oYXNPd25Qcm9wZXJ0eShcIl9nb29nX2VmcF9jYWxsZWRfXCIpfHwoZS5fZ29vZ19lZnBfY2FsbGVkXz1lLmVsZW1lbnRGcm9tUG9pbnQoZixkKSk7aWYoZT1lLmVsZW1lbnRGcm9tUG9pbnQoZixkKSlpZihcImZpeGVkXCI9PWZpKGUsXCJwb3NpdGlvblwiKSljPWU7ZWxzZXtjOntjPWMuZG9jdW1lbnQ7Zm9yKGU9ZS5vZmZzZXRQYXJlbnQ7ZSYmZSE9Yy5ib2R5O2U9ZS5vZmZzZXRQYXJlbnQpaWYoXCJmaXhlZFwiPT1maShlLFwicG9zaXRpb25cIikpe2M9ZTticmVhayBjfWM9bnVsbH1jPWM/YzpudWxsfWVsc2UgYz1udWxsO2lmKGMpe2E9YzticmVhayBhfX1hPW51bGx9cmV0dXJuIG51bGwhPWF9LEtuPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5yLmlubmVyV2lkdGg7Zm9yKHZhciBkPVtdLGU9MDszPmU7ZSsrKWZvcih2YXIgZj0wOzM+ZjtmKyspZC5wdXNoKHt4OmYvMipjLHk6YStlLzIqKGItYSl9KTtyZXR1cm4gZH07dmFyIExuLE1uO0xuPWZ1bmN0aW9uKGEpe3RyeXthLnNldEl0ZW0oXCJfX3N0b3JhZ2VfdGVzdF9fXCIsXCJfX3N0b3JhZ2VfdGVzdF9fXCIpO3ZhciBiPWEuZ2V0SXRlbShcIl9fc3RvcmFnZV90ZXN0X19cIik7YS5yZW1vdmVJdGVtKFwiX19zdG9yYWdlX3Rlc3RfX1wiKTtyZXR1cm5cIl9fc3RvcmFnZV90ZXN0X19cIj09Yn1jYXRjaChjKXtyZXR1cm4hMX19O18uTm49ZnVuY3Rpb24oYSl7dHJ5e2lmKG51bGw9PWF8fCFMbihhKSlyZXR1cm4gbnVsbDt2YXIgYj1hLmdldEl0ZW0oXCJfX2xzdl9fXCIpO2lmKCFiKXJldHVybltdO3RyeXt2YXIgYz1KU09OLnBhcnNlKGIpfWNhdGNoKGQpe31yZXR1cm4hQXJyYXkuaXNBcnJheShjKXx8Xy5YYyhjLGZ1bmN0aW9uKGQpe3JldHVybiFfLkEoTnVtYmVyLFwiaXNJbnRlZ2VyXCIpLmNhbGwoTnVtYmVyLGQpfSk/KGEucmVtb3ZlSXRlbShcIl9fbHN2X19cIiksW10pOk1uKGMpfWNhdGNoKGQpe3JldHVybiBudWxsfX07TW49ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP1tdOmE7dmFyIGI9RGF0ZS5ub3coKTtyZXR1cm4gXy5UYShhLGZ1bmN0aW9uKGMpe3JldHVybiAzNkU1PmItY30pfTtfLk9uPWZ1bmN0aW9uKGEpe3JldHVybiEhYSYmMT5hLmxlbmd0aH07dmFyIFBuPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0wO3RyeXtkfD1hIT1hLnRvcD81MTI6MCxkfD1hLm5hdmlnYXRvciYmL0FuZHJvaWQgMi8udGVzdChhLm5hdmlnYXRvci51c2VyQWdlbnQpPzEwNDg1NzY6MH1jYXRjaChnKXtkfD0zMn12YXIgZT0wO3RyeXtlfD1GbihhLDI1MDApO2lmKF8ueSgzMDkpKXt2YXIgZj1fLkRuKGEpLmNsaWVudEhlaWdodDtlfD1mPzMyMD5mPy0yMTQ3NDgzNjQ4OjA6MTA3Mzc0MTgyNH1lfD1HbihhKTtiJiYhXy5PbihfLk5uKGMpKSYmKGV8PTEzNDIxNzcyOCl9Y2F0Y2goZyl7ZXw9MzJ9cmV0dXJuIGR8ZX07dmFyIFFuPWZ1bmN0aW9uKCl7dmFyIGE9e307cmV0dXJuIGEuYWRzZW5zZV9jaGFubmVsX2lkcz1cImNoYW5uZWxcIixhLmFkc2Vuc2VfYWRfdHlwZXM9XCJhZF90eXBlXCIsYS5hZHNlbnNlX2FkX2Zvcm1hdD1cImZvcm1hdFwiLGEuYWRzZW5zZV9iYWNrZ3JvdW5kX2NvbG9yPVwiY29sb3JfYmdcIixhLmFkc2Vuc2VfYm9yZGVyX2NvbG9yPVwiY29sb3JfYm9yZGVyXCIsYS5hZHNlbnNlX2xpbmtfY29sb3I9XCJjb2xvcl9saW5rXCIsYS5hZHNlbnNlX3RleHRfY29sb3I9XCJjb2xvcl90ZXh0XCIsYS5hZHNlbnNlX3VybF9jb2xvcj1cImNvbG9yX3VybFwiLGEucGFnZV91cmw9XCJ1cmxcIixhLmFkc2Vuc2VfYWxsb3dfZXhwYW5kYWJsZV9hZHM9XCJlYVwiLGEuYWRzZW5zZV9lbmNvZGluZz1cIm9lXCIsYS5hZHNlbnNlX2ZhbWlseV9zYWZlPVwiYWRzYWZlXCIsYS5hZHNlbnNlX2ZsYXNoX3ZlcnNpb249XCJmbGFzaFwiLGEuYWRzZW5zZV9mb250X2ZhY2U9XCJmXCIsYS5hZHNlbnNlX2hpbnRzPVwiaGludHNcIixhLmFkc2Vuc2Vfa2V5d29yZF90eXBlPVwia3dfdHlwZVwiLGEuYWRzZW5zZV9rZXl3b3Jkcz1cImt3XCIsYS5hZHNlbnNlX3Rlc3RfbW9kZT1cImFkdGVzdFwiLGEuYWx0ZXJuYXRlX2FkX2lmcmFtZV9jb2xvcj1cImFsdF9jb2xvclwiLGEuYWx0ZXJuYXRlX2FkX3VybD1cImFsdGVybmF0ZV9hZF91cmxcIixhLmRlbW9ncmFwaGljX2FnZT1cImN1c3RfYWdlXCIsYS5kZW1vZ3JhcGhpY19nZW5kZXI9XCJjdXN0X2dlbmRlclwiLGEuZG9jdW1lbnRfbGFuZ3VhZ2U9XCJobFwiLGF9O3ZhciBSbj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPW51bGw7QXJyYXkuaXNBcnJheShkKT9mPWQ6S2MoZCk/Zj1fLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksZCk6ZD9mPVtkXTpfLnkoMjYyKXx8KGY9W10pO3ZhciBnPVwic3RyaW5nXCI9PT10eXBlb2YgYyYmIUZkKGMpLGg9Xy55KDI2Mik/ISFmJiZmLmV2ZXJ5KGZ1bmN0aW9uKGspe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2Yga30pOiEwO2cmJmg/KF8ueSgyNjIpfHwoZj1mLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gU3RyaW5nKGspfSkpLChkPSh6PXVmKGIsSmosOSksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24oayl7cmV0dXJuIEtqKGspPT09Y30pKT9NaihkLGYpOihkPU1qKExqKG5ldyBKaixjKSxmKSx4ZihiLDksZCxKaikpLGUuaW5mbyh6bChjLGYuam9pbigpLGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEpKTplLkoocWwoXCJTbG90LnNldFRhcmdldGluZ1wiLFtjLGRdKSxudWxsLGEpfSxTbj1mdW5jdGlvbihhLGIsYyxkKXtpZihudWxsPT1jfHxcIm9iamVjdFwiIT09dHlwZW9mIGMpZC5lcnJvcihxbChcIlNsb3QudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcFwiLFtjXSksbnVsbCxhKTtlbHNlIGZvcih2YXIgZT1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYykpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKWY9Zi52YWx1ZSxSbihhLGIsZixjW2ZdLGQpfTt2YXIgVG49ZnVuY3Rpb24oKXt0aGlzLmw9e307dGhpcy5qPW5ldyBTajtEKHRoaXMuaiwyNixOaygpKTsoXy55KDQxNykmJjI9PT1SZygpfHxfLkRqKDM2KSkmJkQodGhpcy5qLDE1LCEwKX0sVW49ZnVuY3Rpb24oYSl7dmFyIGI9VG4uQigpLGM9QihhLDIpO2MmJiFiLmwuaGFzT3duUHJvcGVydHkoYykmJihiLmxbY109YSl9LFZuPWZ1bmN0aW9uKCl7cmV0dXJuIFRuLkIoKS5sfSxXbj1mdW5jdGlvbihhLGIpe3JldHVybiBhLmxbYl18fG51bGx9O0ljKFRuKTt2YXIgWG49XCJcIixZbj1udWxsLFpuPWZ1bmN0aW9uKCl7WG58fChYbj1xaigyKXx8XCIxLTAtMzdcIik7cmV0dXJuIFhufSwkbj1mdW5jdGlvbigpe2lmKG51bGw9PVluKXtmb3IodmFyIGE9Xy5yaigxKSxiPVtdLGM9MDtjPGEubGVuZ3RoO2MrPTIpcGcoYVtjXSxhW2MrMV0sYik7WW49Yi5qb2luKFwiJlwiKX1yZXR1cm4gWW59LGFvPWZ1bmN0aW9uKGEpe3ZhciBiPWpsLkIoKSxjPW5ldyBQajtpZighYXx8IV8uTWMoYSkpcmV0dXJuIG51bGw7dmFyIGQ9ITE7Xy5KYihhLGZ1bmN0aW9uKGUsZil7c3dpdGNoKGYpe2Nhc2UgXCJhbGxvd092ZXJsYXlFeHBhbnNpb25cIjpcImJvb2xlYW5cIj09PXR5cGVvZiBlP0QoYywxLGEuYWxsb3dPdmVybGF5RXhwYW5zaW9uKTooYi5lcnJvcih3bShcImFsbG93T3ZlcmxheUV4cGFuc2lvblwiLFN0cmluZyhhLmFsbG93T3ZlcmxheUV4cGFuc2lvbikpKSxkPSEwKTticmVhaztjYXNlIFwiYWxsb3dQdXNoRXhwYW5zaW9uXCI6XCJib29sZWFuXCI9PT10eXBlb2YgZT9EKGMsMixhLmFsbG93UHVzaEV4cGFuc2lvbik6KGIuZXJyb3Iod20oXCJhbGxvd1B1c2hFeHBhbnNpb25cIixTdHJpbmcoYS5hbGxvd1B1c2hFeHBhbnNpb24pKSksZD0hMCk7YnJlYWs7Y2FzZSBcInNhbmRib3hcIjohMD09PWU/UWooYyxhLnNhbmRib3gpOihiLmVycm9yKHdtKFwic2FuZGJveFwiLFN0cmluZyhhLnNhbmRib3gpKSksZD0hMCk7YnJlYWs7Y2FzZSBcInVzZVVuaXF1ZURvbWFpblwiOlwiYm9vbGVhblwiPT09dHlwZW9mIGU/RChjLDQsYS51c2VVbmlxdWVEb21haW4pOm51bGwhPT1lJiYoYi5lcnJvcih3bShcInVzZVVuaXF1ZURvbWFpblwiLFN0cmluZyhhLnVzZVVuaXF1ZURvbWFpbikpKSxkPSEwKTticmVhaztkZWZhdWx0OmIuSih2bShmKSl9fSk7cmV0dXJuIGQ/bnVsbDpjfSxibz1mdW5jdGlvbihhKXt2YXIgYj1uZXcgUGo7YT1fLkYoYSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZihjPWMudmFsdWUpe2lmKG51bGwhPUIoYywxKSl7dmFyIGQ9eChjLDEpO0QoYiwxLGQpfW51bGwhPUIoYywyKSYmKGQ9eChjLDIpLEQoYiwyLGQpKTtudWxsIT1CKGMsMykmJlFqKGIseChjLDMpKTtudWxsIT1CKGMsNCkmJihjPXgoYyw0KSxEKGIsNCxjKSl9cmV0dXJuIGJ9O3ZhciBjbz1mdW5jdGlvbihhLGIpe3RoaXMubD1hO3RoaXMuaj1ifTtjby5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTtjby5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyIGZvPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1qbC5CKCksZD1XbihUbi5CKCksYS5nZXRTbG90RWxlbWVudElkKCkpO3RoaXMuc2V0PVMoNDAsZnVuY3Rpb24oZSxmKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGV8fCFmfHx2b2lkIDA9PT1RbigpW2VdKXJldHVybiBjLkoocWwoXCJTbG90LnNldFwiLFtlLGZdKSxudWxsLGEpLGI7dmFyIGc9KHo9dWYoZCxKaiwzKSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCk9PT1lfSk7Zz9NaihnLFtmXSk6KGc9TGoobmV3IEpqLGUpLHNmKGcsMixmKSx4ZihkLDMsZyxKaikpO3JldHVybiBifSk7dGhpcy5nZXQ9Uyg0MSxmdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGUpcmV0dXJuIGMuSihxbChcIlNsb3QuZ2V0XCIsW2VdKSxudWxsLGEpLG51bGw7dmFyIGY9KHo9dWYoZCxKaiwzKSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihnKXtyZXR1cm4gS2ooZyk9PT1lfSk7cmV0dXJuKGY9ZiYmQihmLDIpKT9mWzBdOm51bGx9KTt0aGlzLmdldEF0dHJpYnV0ZUtleXM9Uyg0MixmdW5jdGlvbigpe3JldHVybiB1ZihkLEpqLDMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gS2ooZSl9KX0pO3RoaXMuYWRkU2VydmljZT1TKDQzLGZ1bmN0aW9uKGUpe2U9d2ouZ2V0KGUpO2lmKCFlKXJldHVybiBjLkooc20oYS5nZXRTbG90SWQoKS50b1N0cmluZygpKSxudWxsLGEpLGI7aWYoKHo9QihkLDQpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixlLlooKSkpcmV0dXJuIGMuSih3bChlLlooKSxhLmdldFNsb3RJZCgpLnRvU3RyaW5nKCkpLGUsYSksYjtlLnhhKGEsZCk7cmV0dXJuIGJ9KTt0aGlzLmRlZmluZVNpemVNYXBwaW5nPVMoNDQsZnVuY3Rpb24oZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgRXJyb3IoXCJTaXplIG1hcHBpbmcgaGFzIHRvIGJlIGFuIGFycmF5XCIpO2U9ZS5tYXAocGspO3dmKGQsNixlKTtyZXR1cm4gYn0sZnVuY3Rpb24oZSxmKXtibChlLGYpO2RoKFwiSW5jb3JyZWN0IHVzYWdlIG9mIGdvb2dsZXRhZy5TbG90IGRlZmluZVNpemVNYXBwaW5nOiBcIitmLm1lc3NhZ2UpO3JldHVybiBifSk7dGhpcy5zZXRDbGlja1VybD1TKDQ1LGZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZSlyZXR1cm4gYy5KKHFsKFwiU2xvdC5zZXRDbGlja1VybFwiLFtlXSksbnVsbCxhKSxiO0QoZCw3LGUpO3JldHVybiBifSk7dGhpcy5zZXRDYXRlZ29yeUV4Y2x1c2lvbj1TKDQ2LGZ1bmN0aW9uKGUpe1wic3RyaW5nXCIhPT10eXBlb2YgZXx8RmQoZSk/Yy5KKHFsKFwiU2xvdC5zZXRDYXRlZ29yeUV4Y2x1c2lvblwiLFtlXSksbnVsbCxhKTooKHo9QihkLDgpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixlKXx8c2YoZCw4LGUpLGMuaW5mbyh4bChlKSxudWxsLGEpKTtyZXR1cm4gYn0pO3RoaXMuY2xlYXJDYXRlZ29yeUV4Y2x1c2lvbnM9Uyg0NyxmdW5jdGlvbigpe0QoZCw4LFtdKTtjLmluZm8oeWwoKSxudWxsLGEpO3JldHVybiBifSk7dGhpcy5nZXRDYXRlZ29yeUV4Y2x1c2lvbnM9Uyg0OCxmdW5jdGlvbigpe3JldHVybiBCKGQsOCkuc2xpY2UoKX0pO3RoaXMuc2V0VGFyZ2V0aW5nPVMoNDksZnVuY3Rpb24oZSxmKXtSbihhLGQsZSxmLGMpO3JldHVybiBifSk7dGhpcy51cGRhdGVUYXJnZXRpbmdGcm9tTWFwPVMoNjQ5LGZ1bmN0aW9uKGUpe1NuKGEsZCxlLGMpO3JldHVybiBifSk7dGhpcy5jbGVhclRhcmdldGluZz1TKDUwLGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIGZrKGQsW10pLGMuaW5mbyhBbChhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhKSxiO3ZhciBmPXVmKGQsSmosOSksZz1fLkEoZixcImZpbmRJbmRleFwiKS5jYWxsKGYsZnVuY3Rpb24oaCl7cmV0dXJuIEtqKGgpPT09ZX0pO2lmKDA+ZylyZXR1cm4gYy5KKHhtKGUsYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSksYjtmLnNwbGljZShnLDEpO2ZrKGQsZik7Yy5pbmZvKHltKGUsYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSk7cmV0dXJuIGJ9KTt0aGlzLmdldFRhcmdldGluZz1TKDUxLGZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZSlyZXR1cm4gYy5KKHFsKFwiU2xvdC5nZXRUYXJnZXRpbmdcIixbZV0pLG51bGwsYSksW107dmFyIGY9KHo9dWYoZCxKaiw5KSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihnKXtyZXR1cm4gS2ooZyk9PT1lfSk7cmV0dXJuIGY/QihmLDIpLnNsaWNlKCk6W119KTt0aGlzLmdldFRhcmdldGluZ0tleXM9Uyg1MixmdW5jdGlvbigpe3JldHVybiB1ZihkLEpqLDkpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gS2ooZSl9KX0pO3RoaXMuc2V0Q29sbGFwc2VFbXB0eURpdj1TKDUzLGZ1bmN0aW9uKGUsZil7Zj12b2lkIDA9PT1mPyExOmY7aWYoXCJib29sZWFuXCIhPT10eXBlb2YgZXx8XCJib29sZWFuXCIhPT10eXBlb2YgZilyZXR1cm4gYy5KKHFsKFwiU2xvdC5zZXRDb2xsYXBzZUVtcHR5RGl2XCIsW2UsZl0pLG51bGwsYSksYjtEKGQsMTAsZSk7RChkLDExLGUmJmYpO2tiKFwiZ3B0X2NlZFwiLGZ1bmN0aW9uKGcpe3ZhciBoPXgoZCwxMSk/XCJ0XCI6XCJmXCI7RShnLFwic2NcIixoKTtFKGcsXCJsZXZlbFwiLFwic2xvdFwiKTtsYihnKX0pO2YmJiFlJiZjLkooQmwoYS5nZXRTbG90SWQoKS50b1N0cmluZygpKSxudWxsLGEpO3JldHVybiBifSk7dGhpcy5nZXRBZFVuaXRQYXRoPVMoNTQsZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRBZFVuaXRQYXRoKCl9KTt0aGlzLmdldFNsb3RFbGVtZW50SWQ9Uyg1OTgsZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRTbG90RWxlbWVudElkKCl9KTt0aGlzLnNldEZvcmNlU2FmZUZyYW1lPVMoNTUsZnVuY3Rpb24oZSl7aWYoXCJib29sZWFuXCIhPT10eXBlb2YgZSlyZXR1cm4gYy5KKGZtKFwiU2xvdC5zZXRGb3JjZVNhZmVGcmFtZVwiLFN0cmluZyhlKSksbnVsbCxhKSxiO0QoZCwxMixlKTtyZXR1cm4gYn0pO3RoaXMuc2V0U2FmZUZyYW1lQ29uZmlnPVMoNTYsZnVuY3Rpb24oZSl7dmFyIGY9YW8oZSk7aWYoIWYpcmV0dXJuIGMuZXJyb3IocWwoXCJTbG90LnNldFNhZmVGcmFtZUNvbmZpZ1wiLFtlXSksbnVsbCxhKSxiO3ZmKGQsMTMsZik7cmV0dXJuIGJ9KTt0aGlzLmdldFJlc3BvbnNlSW5mb3JtYXRpb249UygzNTUsZnVuY3Rpb24oKXtyZXR1cm4gYS5IfSk7dGhpcy5nZXROYW1lPVMoMTcwLGZ1bmN0aW9uKCl7d2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoXCJnZXROYW1lIG9uIGdvb2dsZXRhZy5TbG90IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIGdldEFkVW5pdFBhdGggaW5zdGVhZC5cIik7dmFyIGU9bmV3IFdrKFwic2xvdF9nZXRfbmFtZVwiKTtsYihlKTtZayhlKTtyZXR1cm4gYS5vLmdldEFkVW5pdFBhdGgoKX0pO3RoaXMuZ2V0U2xvdElkPVMoNTc5LGZ1bmN0aW9uKCl7cmV0dXJuIGdsKGEuZ2V0U2xvdElkKCkpfSk7dGhpcy5nZXRTZXJ2aWNlcz1TKDU4MCxmdW5jdGlvbigpe3JldHVybiBCKGQsNCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBBaihlKX0pfSk7dGhpcy5nZXRTaXplcz1TKDU4MSxmdW5jdGlvbihlLGYpe3JldHVybihlPXFrKGQsZSxmKSk/ZS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIHgoZywzKT9cImZsdWlkXCI6bmV3IGNvKEIoZywxKSxCKGcsMikpfSk6bnVsbH0pO3RoaXMuZ2V0Q2xpY2tVcmw9Uyg1ODIsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9QihkLDcpP2QuZ2V0Q2xpY2tVcmwoKTpcIlwifSk7dGhpcy5nZXRUYXJnZXRpbmdNYXA9Uyg1ODMsZnVuY3Rpb24oKXtmb3IodmFyIGU9e30sZj1fLkYodWYoZCxKaiw5KSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZz1nLnZhbHVlLGVbS2ooZyldPUIoZywyKTtyZXR1cm4gZX0pO3RoaXMuZ2V0T3V0T2ZQYWdlPVMoNTg0LGZ1bmN0aW9uKCl7cmV0dXJuIDAhPWdrKGQpfSk7dGhpcy5nZXRDb2xsYXBzZUVtcHR5RGl2PVMoNTg1LGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPUIoZCwxMCk/eChkLDEwKTpudWxsfSk7dGhpcy5nZXREaXZTdGFydHNDb2xsYXBzZWQ9Uyg1ODYsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9QihkLDExKT94KGQsMTEpOm51bGx9KTt0aGlzLmdldENvbnRlbnRVcmw9Uyg1ODcsZnVuY3Rpb24oKXtyZXR1cm4gYS5UKCl9KTt0aGlzLmdldEZpcnN0TG9vaz1TKDU4OCxmdW5jdGlvbigpe2RoKFwiVGhlIGdldEZpcnN0TG9vayBtZXRob2Qgb2YgZ29vZ2xldGFnLlNsb3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVwZGF0ZSB5b3VyIGNvZGUgdG8gbm8gbG9uZ2VyIGNhbGwgdGhpcyBtZXRob2QuXCIpO3JldHVybiAwfSk7dGhpcy5nZXRFc2NhcGVkUWVtUXVlcnlJZD1TKDU5MSxmdW5jdGlvbigpe3JldHVybiBlbyhhKX0pO3RoaXMuZ2V0SHRtbD1TKDU5MixmdW5jdGlvbigpe3JldHVybiBhLmdldEh0bWwoKX0pfTtfLkooZm8seWopO3ZhciBnbz1mdW5jdGlvbigpe3RoaXMuc291cmNlQWdub3N0aWNMaW5lSXRlbUlkPXRoaXMuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkPXRoaXMubGluZUl0ZW1JZD10aGlzLmNyZWF0aXZlSWQ9dGhpcy5jYW1wYWlnbklkPXRoaXMuYWR2ZXJ0aXNlcklkPW51bGw7dGhpcy5pc0JhY2tmaWxsPSExO3RoaXMuZW5jcnlwdGVkVHJvdWJsZXNob290aW5nSW5mbz10aGlzLmNyZWF0aXZlVGVtcGxhdGVJZD10aGlzLmNvbXBhbnlJZHM9dGhpcy55aWVsZEdyb3VwSWRzPW51bGx9O3ZhciBobz1mdW5jdGlvbihhKXt0aGlzLmdldElkPVMoNTkzLGZ1bmN0aW9uKCl7cmV0dXJuIGEub30pO3RoaXMuZ2V0QWRVbml0UGF0aD1TKDU5NCxmdW5jdGlvbigpe3JldHVybiBhLmdldEFkVW5pdFBhdGgoKX0pO3RoaXMuZ2V0TmFtZT1TKDU5NSxmdW5jdGlvbigpe3ZhciBiPW5ldyBXayhcInNsb3RfaWRfZ2V0X25hbWVcIik7bGIoYik7WWsoYik7cmV0dXJuIGEubH0pO3RoaXMudG9TdHJpbmc9Uyg1OTYsZnVuY3Rpb24oKXtyZXR1cm4gYS50b1N0cmluZygpfSk7dGhpcy5nZXREb21JZD1TKDU5NyxmdW5jdGlvbigpe3JldHVybiBhLmp9KX07Xy5KKGhvLHlqKTt2YXIgaW89ZnVuY3Rpb24oYSxiLGMpe2VsLmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5iYj1iO3RoaXMubz10aGlzLmwrXCJfXCIrdGhpcy5iYjt0aGlzLmo9Y307Xy5KKGlvLG9sKTtpby5wcm90b3R5cGUuZ2V0QWRVbml0UGF0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O2lvLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmJ9O2lvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O2lvLnByb3RvdHlwZS5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgaG8odGhpcyl9O3ZhciBrbz1mdW5jdGlvbihhKXtlbC5jYWxsKHRoaXMpO3RoaXMubz1hO3RoaXMuQz1qbC5CKCk7Xy55KDQxMil8fHRoaXMuQy5pbmZvKHJsKHRoaXMuby50b1N0cmluZygpKSxudWxsLHRoaXMpO3RoaXMuUD10aGlzLkQ9dGhpcy5WPW51bGw7dGhpcy5UPWZ1bmN0aW9uKCl7cmV0dXJuXCJcIn07dGhpcy5HPW51bGw7dGhpcy5tPUdrKHRoaXMuby5nZXRBZFVuaXRQYXRoKCkpO3RoaXMuJGE9XCJcIjt0aGlzLkg9bnVsbDt0aGlzLmVjPSExO3RoaXMuQT0wO3RoaXMuWT10aGlzLm1jPW51bGw7am8odGhpcyk7dGhpcy5PPVwiXCI7dGhpcy5qPW51bGw7dGhpcy5JPVwiXCI7dGhpcy5LPVtdO3RoaXMuTT1bXTt0aGlzLlc9MH07Xy5KKGtvLG9sKTt2YXIgbG89ZnVuY3Rpb24oYSxiKXthLksucHVzaChiKX0sbW89ZnVuY3Rpb24oYSxiKXthLk0ucHVzaChiKX07a28ucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmbyh0aGlzKX07a28ucHJvdG90eXBlLmdldEFkVW5pdFBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vLmdldEFkVW5pdFBhdGgoKX07a28ucHJvdG90eXBlLmdldFNsb3RFbGVtZW50SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vLmp9O3ZhciBwYT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9kb2N1bWVudDpiO3JldHVybiBhLm1jfHxiLmdldEVsZW1lbnRCeUlkKGEuby5qKX07a28ucHJvdG90eXBlLmdldFNsb3RJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O3ZhciBubz1mdW5jdGlvbihhLGIpe2EuVD1ifSxvbz1mdW5jdGlvbihhKXtfLnkoNDEyKXx8YS5DLmluZm8odGwoYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSxhLlYpfTtrby5wcm90b3R5cGUuVGE9ZnVuY3Rpb24oKXtfLnkoNDEyKXx8KHRoaXMuRD10aGlzLkMuaW5mbyh1bCh0aGlzLmdldEFkVW5pdFBhdGgoKSksbnVsbCx0aGlzKSl9O3ZhciBwbz1mdW5jdGlvbihhKXtfLnkoNDEyKXx8KGEuUD1hLkMuaW5mbyh2bChhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhLGEuRCkpfTtrby5wcm90b3R5cGUubWI9ZnVuY3Rpb24oKXtfLnkoNDEyKXx8KHRoaXMuRz10aGlzLkd8fF8uTmkoKSl9O3ZhciBybz1mdW5jdGlvbihhKXthLkc9bnVsbDthLkg9bnVsbDthLmo9bnVsbDthLkk9XCJcIjtfLnkoNDE4KXx8cW8oYSxcIlwiKTtmb3IodmFyIGI9Xy5GKGEuSyksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLGMoKTthLksubGVuZ3RoPTB9LHNvPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1fLkYoYS5NKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsYygpO2EuTS5sZW5ndGg9MH0sdG89ZnVuY3Rpb24oYSxiKXthLmo9YjtpZighYS5qfHx4KGEuaiw4KSliPW51bGw7ZWxzZXtiPW5ldyBnbzt2YXIgYz0hIXgoYS5qLDkpO2IuaXNCYWNrZmlsbD1jO3ZhciBkPUIoYS5qLDE1KSxlPUIoYS5qLDE2KTtkLmxlbmd0aCYmZS5sZW5ndGgmJihiLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZD1kWzBdLGIuc291cmNlQWdub3N0aWNMaW5lSXRlbUlkPWVbMF0sY3x8KGIuY3JlYXRpdmVJZD1kWzBdLGIubGluZUl0ZW1JZD1lWzBdLChjPUIoYS5qLDIyKSkmJmMubGVuZ3RoJiYoYi5jcmVhdGl2ZVRlbXBsYXRlSWQ9Y1swXSkpKTtCKGEuaiwxNykubGVuZ3RoJiYoYz1CKGEuaiwxNylbMF0sYi5hZHZlcnRpc2VySWQ9Yyk7QihhLmosMTgpLmxlbmd0aCYmKGM9QihhLmosMTgpWzBdLGIuY2FtcGFpZ25JZD1jKTtCKGEuaiwxOSkubGVuZ3RoJiYoYz1CKGEuaiwxOSksYi55aWVsZEdyb3VwSWRzPWMpO0IoYS5qLDIwKS5sZW5ndGgmJihjPUIoYS5qLDIwKSxiLmNvbXBhbnlJZHM9Yyk7Yz1CKGEuaiw0NSk7Yz1jLmxlbmd0aCYmXCJzdHJpbmdcIiE9PXR5cGVvZiBjWzBdP18uUmEoYyxtZik6YztjLmxlbmd0aCYmKGIuZW5jcnlwdGVkVHJvdWJsZXNob290aW5nSW5mbz1jWzBdKX1hLkg9Yn0sZW89ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaiYmQihhLmosMzQpfHxcIlwifTtrby5wcm90b3R5cGUuZ2V0SHRtbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQmFja2ZpbGwoKT8od2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKFwiVGhpcyBhZCdzIGh0bWwgY2Fubm90IGJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBnZXRIdG1sIG1ldGhvZCBvbiBnb29nbGV0YWcuU2xvdC4gUmV0dXJuaW5nIHRoZSBlbXB0eSBzdHJpbmcgaW5zdGVhZC5cIiksXCJcIik6dGhpcy5JfTtrby5wcm90b3R5cGUuaXNCYWNrZmlsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmo/ISF4KHRoaXMuaiw5KTpudWxsfTtrby5wcm90b3R5cGUudj1mdW5jdGlvbigpe29sLnByb3RvdHlwZS52LmNhbGwodGhpcyk7c28odGhpcyk7Xy55KDQxMil8fHRoaXMuQy5pbmZvKHVtKHRoaXMuby50b1N0cmluZygpKSxudWxsLHRoaXMpfTt2YXIgam89ZnVuY3Rpb24oYSxiKXtifHwoYj0rK3RrLkIoKS52KTthLmw9Yn0sdW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYj1vYShhLGIpKT9iLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZVtpZD1cIicrVWsoYS5vKSsnXCJdJyk6bnVsbH0scW89ZnVuY3Rpb24oYSxiKXthLk89Ynx8XCJcIn07dmFyIHZvPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT97fTphO3ZhciBiPXZvaWQgMD09PWI/e306Yjt0aGlzLmw9YTt0aGlzLmo9Yn0sd289ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIShiJiZiIGluIGEubCkpcmV0dXJuITE7aWYodm9pZCAwPT09ZHx8ZHx8IWEualtiXSlhLmpbYl09Y3x8XCJcIjtyZXR1cm4hMH0sdWs9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuai5wYWdlX3VybHx8bnVsbH0seG89ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10sZj1iLmo7Xy5KYihkLGZ1bmN0aW9uKGcsaCl7aWYoZyl7Zz17cGI6Z307dmFyIGs9ZltoXSxsPVtdO2EuZm9yRWFjaChmdW5jdGlvbihtLG4peyhtPWMuZ2V0KG0uZ2V0U2xvdElkKCkpKSYmbS5qW2hdJiYobFtuXT1tLmpbaF0pfSk7aWYobC5sZW5ndGh8fGspbC5sZW5ndGgmJihnLnpkPWwpLGsmJihnLm5kPWspLGUucHVzaChnKX19KTtyZXR1cm4gZX07dmFyIHlvPWZ1bmN0aW9uKGEpe3RoaXMuaWQ9YX0sem89bmV3IHlvKDEpLEFvPW5ldyB5bygyKSxCbz1uZXcgeW8oMyksQ289bmV3IHlvKDIxKSxQYj1uZXcgeW8oNCksRG89bmV3IHlvKDUpLEVvPW5ldyB5byg3KSxGbz1uZXcgeW8oOCksR289bmV3IHlvKDkpLEhvPW5ldyB5bygxMCksSW89bmV3IHlvKDExKSxKbz1uZXcgeW8oMTIpLEtvPW5ldyB5bygxMyksTG89bmV3IHlvKDE0KSxNbz1uZXcgeW8oMTUpLE5vPW5ldyB5bygxNiksT289bmV3IHlvKDE3KSxRYj1uZXcgeW8oMTgpO3ZhciBJPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyB0Lk1hcDt0aGlzLmw9Xy55KDQwMyl9LFFvPWZ1bmN0aW9uKGEsYixjLGQpe1BvKGEsYixudWxsLGQpO1BvKGEsYixjLGQpfSxTbz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gUm8oYSxiLG51bGwsYyxkKX0sT2I9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gUm8oYSxiLGMsZCxlKX0sUm89ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1HKGQsZSxmdW5jdGlvbihoLGspe2NsKGgsaywhMCl9KSxnPVRvKGIsYyk7Yj1hLmouZ2V0KGcpO2J8fChiPVtdLGEuai5zZXQoZyxiKSk7Yi5wdXNoKGYpO3JldHVybiBmdW5jdGlvbigpe3ZhciBoPWEuai5nZXQoZyk7aCYmKGFkKGgsZiksaC5sZW5ndGh8fGEuai5kZWxldGUoZykpfX0sVG89ZnVuY3Rpb24oYSxiKXthPWEuaWQ7cmV0dXJuIGI/YStcIl9cIitiOlN0cmluZyhhKX0sUG89ZnVuY3Rpb24oYSxiLGMsZCl7Yz1hLmouZ2V0KFRvKGIsYykpfHxbXTtiPXt9O2M9Xy5GKGMpO2Zvcih2YXIgZT1jLm5leHQoKTshZS5kb25lO2I9e3JiOmIucmJ9LGU9Yy5uZXh0KCkpYi5yYj1lLnZhbHVlLGEubD90LlByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uKCl7Zi5yYihkKX19KGIpKTpiLnJiKGQpfTtJYyhJKTt2YXIgVW8sVm8sV28sWG87VW89bnVsbDtWbz1mdW5jdGlvbigpe3ZhciBhPVFuKCk7dGhpcy5qPW5ldyB0Lk1hcDt0aGlzLm89YTt0aGlzLmw9bmV3IHZvKGEpO3RoaXMudj0hMX07V289ZnVuY3Rpb24oKXtyZXR1cm4gVW89VW98fG5ldyBWb307WG89ZnVuY3Rpb24oYSxiKXtpZighXy55KDQxMil8fCFhLmouZ2V0KGIpKXthLmouc2V0KGIse1NhOiEwLGljOm5ldyB2byhhLm8pLHdhOm51bGwsU2I6XCJcIn0pO18uUihiLGZ1bmN0aW9uKCl7YS5qLmRlbGV0ZShiKX0pO3ZhciBjPWIuZ2V0U2xvdElkKCk7Xy55KDQxMikmJihfLlIoYixPYihJLkIoKSxJbyxjLDc2NCxmdW5jdGlvbigpe3ZhciBkPWEuai5nZXQoYik7ZC5vYz1fLk5pKCk7bG8oYixmdW5jdGlvbigpe2Qub2M9dm9pZCAwfSl9KSksXy5SKGIsT2IoSS5CKCksQ28sYyw3NjcsZnVuY3Rpb24oKXt2YXIgZD1hLmouZ2V0KGIpO2QuRGM9Xy5OaSgpO2xvKGIsZnVuY3Rpb24oKXtkLkRjPXZvaWQgMH0pfSkpLF8uUihiLE9iKEkuQigpLFBiLGMsNzY1LGZ1bmN0aW9uKCl7dmFyIGQ9YS5qLmdldChiKTtkLkNjPV8uTmkoKTtsbyhiLGZ1bmN0aW9uKCl7ZC5DYz12b2lkIDB9KX0pKSxfLlIoYixPYihJLkIoKSxEbyxjLDc2NixmdW5jdGlvbigpe3ZhciBkPWEuai5nZXQoYik7ZC51Yz1fLk5pKCk7bG8oYixmdW5jdGlvbigpe2QudWM9dm9pZCAwfSl9KSkpO18ueSg0MTgpJiZfLlIoYixPYihJLkIoKSxKbyxjLDc3MyxmdW5jdGlvbihkKXt2YXIgZT1hLmouZ2V0KGIpO2UuU2I9QihkLDMzKXx8XCJcIjttbyhiLGZ1bmN0aW9uKCl7ZS5TYj1cIlwifSl9KSl9fTtfLllvPWZ1bmN0aW9uKGEsYil7aWYoIV8ueSg0MjIpKXt2YXIgYz1iLmo/TyhiLmosQmYsNTApOm51bGw7aWYoYyYmKG51bGwhPUIoYywxKXx8eChjLDYpKSlyZXR1cm4hMX1yZXR1cm4gYS5qLmdldChiKSYmYS5qLmdldChiKS5TYX07Xy5abz1mdW5jdGlvbihhLGIpe2Euai5nZXQoYikmJihhLmouZ2V0KGIpLlNhPSExKX07Xy4kbz1mdW5jdGlvbihhLGIpe2Euai5nZXQoYikmJihhLmouZ2V0KGIpLlNhPSEwKX07Vm8ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJbQWREYXRhOlwiK18uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSx0aGlzLmosZnVuY3Rpb24oYSl7YT1fLkYoYSk7dmFyIGI9YS5uZXh0KCkudmFsdWU7YS5uZXh0KCk7cmV0dXJuIGIudG9TdHJpbmcoKX0pLmpvaW4oKStcIl1cIn07dmFyIGFwPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuai5oYXMoYil9LGJwPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyB0Lk1hcDthPV8uRihfLkEoYS5qLFwiZW50cmllc1wiKS5jYWxsKGEuaikpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpe3ZhciBkPV8uRihjLnZhbHVlKTtjPWQubmV4dCgpLnZhbHVlO2Q9ZC5uZXh0KCkudmFsdWU7Yi5zZXQoYy5nZXRTbG90SWQoKSxkLmljKX1yZXR1cm4gYn0sY3A9ZnVuY3Rpb24oYSxiKXtiLmZvckVhY2goZnVuY3Rpb24oYyl7YS5qLmRlbGV0ZShjKX0pfSxkcD1mdW5jdGlvbihhLGIsYyl7YS5qLmdldChiKSYmKGEuai5nZXQoYikud2E9Yyl9LGVwPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9YS5qLmdldChiKSkmJmEud2F9LGZwPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9YS5qLmdldChiKSkmJmEuRGN8fG51bGx9LGdwPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9YS5qLmdldChiKSkmJmEuQ2N8fG51bGx9LGhwPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9YS5qLmdldChiKSkmJmEudWN8fG51bGx9O3ZhciBqcD1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcj1TKDg2LGZ1bmN0aW9uKGMsZCl7YS5hZGRFdmVudExpc3RlbmVyKGMsZCk7cmV0dXJuIGJ9KTt0aGlzLmdldFNsb3RzPVMoNTczLGZ1bmN0aW9uKCl7cmV0dXJuIGEubC5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGdsKGMpfSl9KTt0aGlzLmdldFNsb3RJZE1hcD1TKDU3NCxmdW5jdGlvbigpe2Zvcih2YXIgYz17fSxkPV8uRihhLmwpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWU9ZS52YWx1ZSxjW2UuZ2V0U2xvdElkKCkudG9TdHJpbmcoKV09Z2woZSk7cmV0dXJuIGN9KTt0aGlzLmVuYWJsZT1TKDg3LGZ1bmN0aW9uKCl7cmV0dXJuIGlwKGEpfSxibCk7dGhpcy5nZXROYW1lPVMoNTc1LGZ1bmN0aW9uKCl7cmV0dXJuIGEuWigpfSl9O18uSihqcCx5aik7dmFyIGtwPXtSRVdBUkRFRDo0LFRPUF9BTkNIT1I6MixCT1RUT01fQU5DSE9SOjMsSU5URVJTVElUSUFMOjV9LGxwPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDI6cmV0dXJuIDI7Y2FzZSAzOnJldHVybiAxO2Nhc2UgNTpyZXR1cm4gODtkZWZhdWx0OnJldHVybiBudWxsfX0sbXA9ZnVuY3Rpb24oKXt2YXIgYT1YYigpO2EuZW51bXN8fChhLmVudW1zPXtPdXRPZlBhZ2VGb3JtYXQ6a3B9KX07dmFyIG5wPWZ1bmN0aW9uKCl7dGhpcy5sPVtdO3RoaXMudj1bXTt0aGlzLmo9e319LG9wPWZ1bmN0aW9uKGEsYil7aWYoIV8uQShhLmwsXCJpbmNsdWRlc1wiKS5jYWxsKGEubCxiKSlzd2l0Y2goYil7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIGM7aWYoYz1fLnkoMTE2KT9ybltiXTpwbltiXSl7dmFyIGQ9YitcIl9ob3N0cGFnZV9saWJyYXJ5XCI7aWYoYz11Zyhkb2N1bWVudCxsZyhjKSkpYy5pZD1kfWEubC5wdXNoKGIpO2I9bmV3IHNuKGIpO2Eudi5wdXNoKGIpO2E9WGIoKTthLmhvc3RwYWdlTGlicmFyeVRva2Vuc3x8KGEuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zPXt9KTthLmhvc3RwYWdlTGlicmFyeVRva2Vuc1tiLmpdPWIubH19LHBwPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEualtiXXx8W119O0ljKG5wKTt2YXIgcXA9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuaj1mdW5jdGlvbigpe3JldHVybiExfTt0aGlzLmw9XCJcIjt0aGlzLnY9bnVsbDt2YXIgYj1Ubi5CKCksYz17fTt0aGlzWzNdPShjWzE5XT1mdW5jdGlvbigpe3JldHVybiEheChiLmosMTApfSxjWzE0XT1CayxjWzEzXT1mdW5jdGlvbihkKXtmb3IodmFyIGU9W10sZj0wO2Y8YXJndW1lbnRzLmxlbmd0aDsrK2YpZVtmXT1hcmd1bWVudHNbZl07cmV0dXJuIGUuc29tZShmdW5jdGlvbihnKXtyZXR1cm4gMD09YS5sLmxhc3RJbmRleE9mKGcsMCl9KX0sY1sxMl09ZnVuY3Rpb24oKXtyZXR1cm4hIXgoYi5qLDYpfSxjWzExXT12bixjWzE1XT1mdW5jdGlvbihkKXtyZXR1cm4gYS5qKGQpfSxjWzddPWZ1bmN0aW9uKCl7cmV0dXJuISghXy5yLmNyeXB0b3x8IV8uci5jcnlwdG8uc3VidGxlKX0sY1sxXT1mdW5jdGlvbigpe3JldHVybiAwPT1SZygpfSxjKTtjPXt9O3RoaXNbNF09KGNbOF09ZnVuY3Rpb24oZCl7cmV0dXJuIG5uKGEudixkKX0sYyk7dGhpc1s1XT17fX07SWMocXApO3ZhciBycD17Z2U6XCJpbXByZXNzaW9uVmlld2FibGVcIixtZTpcInJld2FyZGVkU2xvdENhbmNlbGVkXCIsbmU6XCJyZXdhcmRlZFNsb3RDbG9zZWRcIixvZTpcInJld2FyZGVkU2xvdENvbXBsZXRlZFwiLHBlOlwicmV3YXJkZWRTbG90R3JhbnRlZFwiLHFlOlwicmV3YXJkZWRTbG90UmVhZHlcIixyZTpcInNsb3RBZGRlZFwiLHNlOlwic2xvdE9ubG9hZFwiLHRlOlwic2xvdFJlbmRlckVuZGVkXCIsdWU6XCJzbG90UmVxdWVzdGVkXCIsdmU6XCJzbG90UmVzcG9uc2VSZWNlaXZlZFwiLHdlOlwic2xvdFZpc2liaWxpdHlDaGFuZ2VkXCJ9LHNwPWZ1bmN0aW9uKGEsYil7dGhpcy5zbG90PWE7dGhpcy5zZXJ2aWNlTmFtZT1ifSx0cD1mdW5jdGlvbihhLGIpe3NwLmNhbGwodGhpcyxhLGIpO3RoaXMuaXNFbXB0eT0hMTt0aGlzLnNsb3RDb250ZW50Q2hhbmdlZD0hMDt0aGlzLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZD10aGlzLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZD10aGlzLmxpbmVJdGVtSWQ9dGhpcy5sYWJlbElkcz10aGlzLmNyZWF0aXZlVGVtcGxhdGVJZD10aGlzLmNyZWF0aXZlSWQ9dGhpcy5jYW1wYWlnbklkPXRoaXMuYWR2ZXJ0aXNlcklkPXRoaXMuc2l6ZT1udWxsO3RoaXMuaXNCYWNrZmlsbD0hMTt0aGlzLmNvbXBhbnlJZHM9dGhpcy55aWVsZEdyb3VwSWRzPW51bGx9O18uSih0cCxzcCk7dmFyIHVwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoodXAsc3ApO3ZhciB2cD1mdW5jdGlvbihhLGIsYyl7c3AuY2FsbCh0aGlzLGEsYik7dGhpcy5pblZpZXdQZXJjZW50YWdlPWN9O18uSih2cCxzcCk7dmFyIHdwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkood3Asc3ApO3ZhciB4cD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHhwLHNwKTt2YXIgeXA9ZnVuY3Rpb24oYSxiLGMsZCl7c3AuY2FsbCh0aGlzLGEsYik7dGhpcy5tYWtlUmV3YXJkZWRWaXNpYmxlPWM7dGhpcy5wYXlsb2FkPWR9O18uSih5cCxzcCk7dmFyIHpwPWZ1bmN0aW9uKGEsYixjKXtzcC5jYWxsKHRoaXMsYSxiKTt0aGlzLnBheWxvYWQ9Y307Xy5KKHpwLHNwKTt2YXIgQXA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihBcCxzcCk7dmFyIEJwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooQnAsc3ApO3ZhciBDcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKENwLHNwKTt2YXIgRHA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihEcCxzcCk7dmFyIEVwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooRXAsc3ApO3ZhciBGcD1uZXcgdC5NYXAsR3A9bmV3IHQuU2V0LEhwPWZ1bmN0aW9uKCl7ZWwuY2FsbCh0aGlzKTtHcC5hZGQodGhpcyk7dGhpcy5sPVtdO3RoaXMuaj0hMTt0aGlzLks9bmV3IHQuTWFwO3RoaXMubG9nPWpsLkIoKTt0aGlzLmxvZy5pbmZvKEpsKHRoaXMuWigpKSx0aGlzKTt0aGlzLkE9W119O18uSihIcCxvbCk7SHAucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBqcCh0aGlzKX07SHAucHJvdG90eXBlLmdldFZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm5cInVudmVyc2lvbmVkXCJ9O3ZhciBpcD1mdW5jdGlvbihhKXtpZighYS5qKXthLmo9ITA7YS5OYigpO2Zvcih2YXIgYj1fLkYoYS5BKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7Yz1jLnZhbHVlO3RyeXtjKCl9Y2F0Y2goZCl7fX1hLkEubGVuZ3RoPTB9fSxJcD1mdW5jdGlvbihhLGIpe2lmKGEuail0cnl7YigpfWNhdGNoKGMpe31lbHNlIGEuQS5wdXNoKGIpfTtIcC5wcm90b3R5cGUueGE9ZnVuY3Rpb24oYSxiKXt0aGlzLmwucHVzaChhKTt2YXIgYz1uZXcgeHAoZ2woYSksdGhpcy5aKCkpO0pwKHRoaXMsXCJzbG90QWRkZWRcIixjKTt0aGlzLmxvZy5pbmZvKE5sKHRoaXMuWigpLGEuZ2V0QWRVbml0UGF0aCgpKSx0aGlzLGEpO3NmKGIsNCx0aGlzLlooKSl9O0hwLnByb3RvdHlwZS5kZXN0cm95U2xvdHM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sLGM9Yi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIF8uQShhLFwiaW5jbHVkZXNcIikuY2FsbChhLGQpfSk7Yy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2FkKGIsZCl9KTtyZXR1cm4gY307dmFyIEtwPWZ1bmN0aW9uKGEsYil7a2IoXCJncHRfY2FsbGJhY2tfdXNhZ2VcIixmdW5jdGlvbihjKXtsYihjKTtFKGMsXCJ0eXBlXCIsYik7dmFyIGQ9YS5sLmZpbHRlcihmdW5jdGlvbihmKXtfLnkoNDEyKT8oZj1XbygpLmouZ2V0KGYpLGY9ISghZnx8IWYub2MpKTpmPTA8Zi5BO3JldHVybiBmfSkubGVuZ3RoLGU9YS5sLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gXy55KDQxMik/ISFncChXbygpLGYpOiEhZi5EfSkubGVuZ3RoO0UoYyxcIm5mZXRjaFwiLGQpO0UoYyxcIm5yZW5kXCIsZSl9KX07SHAucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgYnx8XCJzdHJpbmdcIiE9PXR5cGVvZiBhKXJldHVybiBhPXFsKFwiU2VydmljZS5hZGRFdmVudExpc3RlbmVyXCIsW2EsYl0pLHRoaXMubG9nLkooYSx0aGlzKSx0aGlzO2lmKF8ueSg0MTYpJiZcInJld2FyZGVkU2xvdENhbmNlbGVkXCI9PT1hKXZhciBjPSExO2Vsc2UgYTp7Zm9yKGMgaW4gcnApaWYocnBbY109PWEpe2M9ITA7YnJlYWsgYX1jPSExfWlmKCFjKXJldHVybiB0aGlzLmxvZy5KKHJtKGEpLHRoaXMpLHRoaXM7Yz1McCh0aGlzLGEpO18ueSg0MDkpJiZfLkEoYyxcImluY2x1ZGVzXCIpLmNhbGwoYyxiKXx8Yy5wdXNoKGIpO0twKHRoaXMsYSk7cmV0dXJuIHRoaXN9O3ZhciBKcD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9THAoYSxiKTtkLmxlbmd0aCYmaGgoZnVuY3Rpb24oKXtmb3IodmFyIGU9Xy5GKGQpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXtmPWYudmFsdWU7dHJ5e2YoYyl9Y2F0Y2goayl7Zj1rJiZcInN0cmluZ1wiPT09dHlwZW9mIGsubmFtZT9rLm5hbWU6bnVsbDt2YXIgZz1rJiZcInN0cmluZ1wiPT09dHlwZW9mIGsubWVzc2FnZT9rLm1lc3NhZ2U6bnVsbCxoPVwiXCI7ZiYmZz9oPWYrXCI6IFwiK2c6Zj9oPWY6ZyYmKGg9Zyk7YS5sb2cuSihxbShoKSxhKTt3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihrKX19fSl9LExwPWZ1bmN0aW9uKGEsYil7YT1fLnkoNDA5KT9GcDphLks7dmFyIGM9YS5nZXQoYil8fFtdO2Euc2V0KGIsYyk7cmV0dXJuIGN9O3ZhciBNcD1mdW5jdGlvbigpe3RoaXMuaj17fTt0aGlzLmw9amwuQigpfTtNcC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3RoaXMualthLlooKV09YX07TXAucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDthIGluIHRoaXMuaiYmKGI9dGhpcy5qW2FdKTtyZXR1cm4gYn07dmFyIE5wPWZ1bmN0aW9uKCl7dmFyIGE9TXAuQigpO25qKDYpO18uSmIoYS5qLGZ1bmN0aW9uKGIpe2Iuaj9hLmwuaW5mbyhNbCgpLGIpOmlwKGIpfSl9O01wLnByb3RvdHlwZS5kZXN0cm95U2xvdHM9ZnVuY3Rpb24oYSl7Xy5KYih0aGlzLmosZnVuY3Rpb24oYil7cmV0dXJuIGIuZGVzdHJveVNsb3RzKGEpfSl9O0ljKE1wKTtXYihcImVuYWJsZVNlcnZpY2VzXCIsRyg5MSxmdW5jdGlvbigpe2lmKF8ueSg0MDYpKXtuaig2KTtmb3IodmFyIGE9Xy5GKF8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxHcCkpLGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKWlwKGIudmFsdWUpfWVsc2UgTnAoKX0pKTt2YXIgT3A9ZnVuY3Rpb24oYSl7cmV0dXJuISFCZyhrcCxmdW5jdGlvbihiKXtyZXR1cm4gYj09YX0pfSxScD1mdW5jdGlvbihhKXtyZXR1cm4oej1IayhQcChRcC5CKCkpKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosYSl9LFNwPWpkKGZ1bmN0aW9uKCl7ZGgoXCJUaGUgZ29vZ2xldGFnLnB1YmFkcygpLmRlZmluZVBhc3NiYWNrIGZ1bmN0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFRoZSBmdW5jdGlvbiBtYXkgYnJlYWsgaW4gY2VydGFpbiBjb250ZXh0cywgc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2RvdWJsZWNsaWNrLWdwdC9ndWlkZXMvcGFzc2JhY2stdGFncyNjb25zdHJ1Y3RfcGFzc2JhY2tfdGFncyBmb3IgaG93IHRvIGNvcnJlY3RseSBjcmVhdGUgYSBwYXNzYmFjay5cIil9KSxUcD1mdW5jdGlvbihhKXt2YXIgYj1fLnIhPV8uci50b3A/NTEyOjA7aWYoYilyZXR1cm4gYjt2YXIgYz1fLkFuKF8ucik7dmFyIGQ9Yy5hZENvdW50PzE9PWF8fDI9PWE/ISghYy5hZENvdW50WzFdJiYhYy5hZENvdW50WzJdKTooZD1jLmFkQ291bnRbYV0pJiYyNyE9PWEmJjI2IT09YSYmMTAhPT1hJiY0MCE9PWE/MTw9ZDohMTohMTtkJiYoYnw9NjQpO2MuaW1wcm92ZUNvbGxpc2lvbkRldGVjdGlvbj0xO2M9MD09PVJnKCk7c3dpdGNoKGEpe2Nhc2UgMjpjYXNlIDE6YyYmKGJ8PTUzNjg3MDkxMik7Yz1fLnkoMzg2KT92b2lkIDA6NDIwO2M9dm9pZCAwPT09Yz9CbjpjO2Q9MDt0cnl7ZHw9Xy5yIT1fLnIudG9wPzUxMjowO3ZhciBlPU1hdGgubWluKF8uci5zY3JlZW4ud2lkdGh8fDAsXy5yLnNjcmVlbi5oZWlnaHR8fDApO2R8PWU/MzIwPmU/ODE5MjowOjIwNDg7dmFyIGY7aWYoZj1fLnIubmF2aWdhdG9yKXt2YXIgZz1fLnIubmF2aWdhdG9yLnVzZXJBZ2VudDtmPS9GaXJlZm94Ly50ZXN0KGcpfHwvQW5kcm9pZCAyLy50ZXN0KGcpfHwvaVBob25lIE9TIFszNF1fLy50ZXN0KGcpfHwvV2luZG93cyBQaG9uZSAoPzpPUyApP1s2N10vLnRlc3QoZyl9ZHw9Zj8xMDQ4NTc2OjB9Y2F0Y2goaCl7ZHw9MzJ9ZT1kO2Y9MDt0cnl7Znw9Xy5DbihfLnIpPzA6OCxmfD1GbihfLnIsYyksZnw9R24oXy5yKX1jYXRjaChoKXtmfD0zMn1nPSExO2lmKCFfLnkoMjY5KSl7c3dpdGNoKGEpe2Nhc2UgMjphPUtuKDAsTWF0aC5yb3VuZChfLnIuaW5uZXJXaWR0aC8zMjAqNTArMTUpKTtnPUpuKGEpO2JyZWFrO2Nhc2UgMTppZihhPV8ueSgxOTAxKSlhPV8uci5pbm5lckhlaWdodCxhPUtuKGEtTWF0aC5yb3VuZChfLnIuaW5uZXJXaWR0aC8zMjAqNTArMTUpLGEpLGE9Sm4oYSk7Zz1hfWcmJihmfD0xNjc3NzIxNil9cmV0dXJuIGJ8ZXxmO2Nhc2UgODpyZXR1cm4hXy55KDQwMCkmJmMmJihifD01MzY4NzA5MTIpLGJ8UG4oXy5yLCExLG51bGwpO2RlZmF1bHQ6cmV0dXJuIGJ8MzJ9fSxRcD1mdW5jdGlvbigpe3RoaXMuaj1uZXcgdC5NYXA7dGhpcy5vPW5ldyB0Lk1hcDt0aGlzLmw9bmV3IHQuTWFwO3RoaXMudj1qbC5CKCk7cXAuQigpLmo9UnB9O1FwLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMsZT12b2lkIDA9PT1jP3t9OmM7Yz12b2lkIDA9PT1lLmtiP3ZvaWQgMDplLmtiO3ZhciBmPXZvaWQgMD09PWUuemM/ITE6ZS56YyxnPXZvaWQgMD09PWUuaW5zdGFuY2U/dm9pZCAwOmUuaW5zdGFuY2U7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhfHwwPj1hLmxlbmd0aHx8IWIpcmV0dXJue307ZT1scCh2b2lkIDA9PT1lLmZvcm1hdD8wOmUuZm9ybWF0KTtpZihudWxsIT1lKXtpZihUcChlKSlyZXR1cm57fTtIbihlKX1mJiZTcCgpO2Y9dm9pZCAwPT09Zz90aGlzLm8uZ2V0KGEpfHxOdW1iZXIoZik6Zzt2YXIgaD1jfHxcImdwdF91bml0X1wiK2ErXCJfXCIrZjtiPVVwKGEsZixiLGgpO2lmKCFiKXJldHVybiB0aGlzLnYuZXJyb3IoRmwoaCkpLHt9O2M9Yi5zbG90O2c9Yi5jYTt2YXIgaz1iLnNsb3RJZDt0aGlzLm8uc2V0KGEsZisxKTt0aGlzLmouc2V0KGssYyk7dGhpcy5sLnNldChoLGspO18uUihrLGZ1bmN0aW9uKCl7ZC5qLmRlbGV0ZShrKTtkLmwuZGVsZXRlKGgpfSk7WmsucHVzaChjKTtyZXR1cm57c2xvdDpjLEZhOmd9fTt2YXIgUHA9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxfLkEoYS5qLFwidmFsdWVzXCIpLmNhbGwoYS5qKSl9LFZwPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO3BwKG5wLkIoKSxhKS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyhjPXVvKGMsZG9jdW1lbnQpKSYmYi5wdXNoKGMuY29udGVudFdpbmRvdyl9KTtyZXR1cm4gYn0sV3A9ZnVuY3Rpb24oYSl7YT1fLkYoYSk7Zm9yKHZhciBiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSl7Yj1iLnZhbHVlO3ZhciBjPVRuLkIoKSxkPWIuZ2V0U2xvdEVsZW1lbnRJZCgpLGU9Yy5sW2RdO2RlbGV0ZSBjLmxbZF07Yz1lO3ZoKGIpO2M9bHAoZ2soYykpO251bGwhPWMmJihkPV8uQW4od2luZG93KSwoZT1kLmFkQ291bnQmJmQuYWRDb3VudFtjXSkmJihkLmFkQ291bnRbY109ZS0xKSk7YWQoWmssYil9fSxYcD1mdW5jdGlvbihhLGIpe2lmKGImJiFBcnJheS5pc0FycmF5KGIpKXJldHVybiBhLnYuSihxbChcImdvb2dsZXRhZy5kZXN0cm95U2xvdHNcIixbYl0pKSwhMTtiPyhVYShiKSxhPWIuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBkJiYhZC5sYX0pKTphPVBwKGEpO2lmKCFhfHwwPT1hLmxlbmd0aClyZXR1cm4hMTtpZihfLnkoNDA2KSl7Yj1fLkYoXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LEdwKSk7Zm9yKHZhciBjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljLnZhbHVlLmRlc3Ryb3lTbG90cyhhKX1lbHNlIE1wLkIoKS5kZXN0cm95U2xvdHMoYSk7V3AoYSk7cmV0dXJuITB9LFlwPWZ1bmN0aW9uKGEsYil7YT1fLkYoXy5BKGEuaixcInZhbHVlc1wiKS5jYWxsKGEuaikpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpaWYoYz1jLnZhbHVlLGMuZ2V0U2xvdElkKCkuaj09PWIpcmV0dXJuIGM7cmV0dXJuIG51bGx9LFpwPWZ1bmN0aW9uKGEpe3ZhciBiPVFwLkIoKTthPXpqKGEsa28pO3JldHVybiEhYSYmYi5qLmhhcyhhLmdldFNsb3RJZCgpKX0sJHA9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kPyExOmQ7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYodm9pZCAwPT09Y3x8XCJzdHJpbmdcIj09PXR5cGVvZiBjKSl7dmFyIGU9UXAuQigpO3JldHVybiBlJiZlLmFkZChhLGIse2tiOmMsemM6ZH0pfXJldHVybnt9fSxhcT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuKGE9JHAoYSxiLGMpLnNsb3QpJiZnbChhKXx8bnVsbH0sYnE9ZnVuY3Rpb24oYSl7dmFyIGI9UXAuQigpO3JldHVybiBiJiZudWxsPT1hP1hwKGIpOmImJkFycmF5LmlzQXJyYXkoYSk/KGE9YS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHpqKGMsa28pfSksWHAoYixhKSk6ITF9LGNxPWZ1bmN0aW9uKGEsYil7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhfHwhKG51bGw9PWJ8fFwic3RyaW5nXCI9PT10eXBlb2YgYnx8XCJudW1iZXJcIj09PXR5cGVvZiBiJiZPcChiKSkpcmV0dXJuIG51bGw7YTp7dmFyIGM9XCJudW1iZXJcIj09PXR5cGVvZiBiP2I6MTtiPVwic3RyaW5nXCI9PT10eXBlb2YgYj9iOnZvaWQgMDtiPVFwLkIoKS5hZGQoYSxbMSwxXSx7a2I6Yixmb3JtYXQ6Y30pO2E9Yi5zbG90O2I9Yi5GYTtpZihhJiZiKXtpZig1PT09YyYmXy55KDMyMykpe2M9bnVsbDticmVhayBhfUQoYiwxNSxjKX1jPWF8fG51bGx9cmV0dXJuIGMmJmdsKGMpfSxVcD1mdW5jdGlvbihhLGIsYyxkKXtpZihRcC5CKCkubC5oYXMoZCkpcmV0dXJuIG51bGw7dmFyIGU9bmV3IGRrO2VrKEQoZSwxLGEpLGQpO2M9bmsoYyk7dmFyIGY9Yy5IYTt3ZihlLDUsYy5YYyk7bnVsbCE9PWYmJnZmKGUsMTYsZik7VW4oZSk7dmFyIGc9bmV3IGlvKGEsYixkKSxoPW5ldyBrbyhnKTtfLndoKGgsZyk7aWYoXy55KDQxMikpe2psLkIoKS5pbmZvKHJsKGcudG9TdHJpbmcoKSksbnVsbCxoKTt2YXIgaz1udWxsLGw9bnVsbDtfLlIoaCxmdW5jdGlvbigpe2psLkIoKS5pbmZvKHVtKGcudG9TdHJpbmcoKSksbnVsbCxoKTtsPWs9bnVsbH0pO18uUihoLE9iKEkuQigpLElvLGcsNzY4LGZ1bmN0aW9uKCl7az1qbC5CKCkuaW5mbyhzbChoLmdldEFkVW5pdFBhdGgoKSksbnVsbCxoKTtXaSh0ay5CKCksXCI3XCIsOSxoLkEtMSwwLGgubCl9KSk7Xy5SKGgsT2IoSS5CKCksSm8sZyw3NjksZnVuY3Rpb24oKXtqbC5CKCkuaW5mbyh0bChoLmdldEFkVW5pdFBhdGgoKSksbnVsbCxoLGspO2s9bnVsbH0pKTtfLlIoaCxPYihJLkIoKSxDbyxnLDc3MCxmdW5jdGlvbigpe2w9amwuQigpLmluZm8odWwoaC5nZXRBZFVuaXRQYXRoKCkpLG51bGwsaCl9KSk7Xy5SKGgsT2IoSS5CKCksUGIsZyw3NzEsZnVuY3Rpb24oKXtqbC5CKCkuaW5mbyh2bChoLmdldEFkVW5pdFBhdGgoKSksbnVsbCxoLGwpO2w9bnVsbH0pKX1yZXR1cm57c2xvdDpoLGNhOmUsc2xvdElkOmd9fTtJYyhRcCk7YXE9Ryg3NCxhcSk7YnE9Ryg3NSxicSk7Y3E9Ryg3MyxjcSk7dmFyIGRxPUcoOTUsZnVuY3Rpb24oYSl7dmFyIGI9amwuQigpO3ZhciBjPW51bGw7dmFyIGQ9XCJcIjtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpe2Q9YTt2YXIgZT1ZcChRcC5CKCksZCl9ZWxzZSBfLk1jKGEpJiYxPT1hLm5vZGVUeXBlPyhjPWEsZD1jLmlkLGU9WXAoUXAuQigpLGQpKTplPXpqKGEsa28pO2lmKGUpe2lmKGE9VG4uQigpLmosZD1XbihUbi5CKCksZS5nZXRTbG90RWxlbWVudElkKCkpKXthPUtrKGEsVm4oKSk7aWYoXy55KDQyMykpe2lmKHgoZCwxOSkpcmV0dXJufWVsc2UgaWYoZS5lYylyZXR1cm47ZS5tYz1jO2lmKHBhKGUpfHxzayhnayhkKSkpZm9yKF8ueSg0MjMpP0QoZCwxOSwhMCk6ZS5lYz0hMCxiPV8uRihCKGQsNCkpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9QWooYy52YWx1ZSksYz16aihjLEhwKSxjLmomJmMuWGIoYSxlKTtlbHNlIGIuSihDbChTdHJpbmcoZC5nZXRBZFVuaXRQYXRoKCkpLFN0cmluZyhCKGQsMikpKSxudWxsLGUpfX1lbHNlIGQ/Yi5lcnJvcihFbChTdHJpbmcoZCkpKTpiLmVycm9yKERsKFN0cmluZyhhKSkpfSk7dmFyIEthPXZkKFwiaHR0cHM6Ly90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tL3NvZGFyLyV7YmFzZW5hbWV9LmpzXCIpO3ZhciBGYT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHQuUHJvbWlzZShmdW5jdGlvbihiLGMpe3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtkLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2QucmVhZHlTdGF0ZT09PWQuRE9ORSYmKDIwMDw9ZC5zdGF0dXMmJjMwMD5kLnN0YXR1cz9iKEpTT04ucGFyc2UoZC5yZXNwb25zZVRleHQpKTpjKCkpfTtkLm9wZW4oXCJHRVRcIixhLCEwKTtkLnNlbmQoKX0pfTt2YXIgZXE9ZnVuY3Rpb24oYSl7dGhpcy5qPWEuajt0aGlzLmw9YS5sO3RoaXMudj1hLnY7dGhpcy5vYj1hLm9iO3RoaXMuTD1hLkw7dGhpcy5lYj1hLmViO3RoaXMuQWI9YS5BYn0sZnE9ZnVuY3Rpb24oYSxiKXt0aGlzLmo9YTt0aGlzLmw9Yjt0aGlzLnY9XCJwdFwiO3RoaXMuTD13aW5kb3c7dGhpcy5lYj1cImVudlwiO3RoaXMuQWI9XCJuXCJ9O3ZhciBocT1mdW5jdGlvbihhKXtrZih0aGlzLGEsZ3EsbnVsbCl9O0soaHEsTSk7dmFyIGlxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGlxLE0pO3ZhciBqcT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhqcSxNKTt2YXIga3E9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soa3EsTSk7dmFyIGdxPVsxLDJdLGxxPWZ1bmN0aW9uKGEsYil7dmFyIGM9QihhLDEpO251bGwhPWMmJmJmKGIsMSxjKTtjPU8oYSxqcSwyKTtudWxsIT1jJiZlZihiLDIsYyk7Yz1PKGEsanEsMyk7bnVsbCE9YyYmZWYoYiwzLGMpO2M9QihhLDQpO251bGwhPWMmJmNmKGIsNCxjKTtjPUIoYSw1KTtudWxsIT1jJiZjZihiLDUsYyl9LGRmPWZ1bmN0aW9uKGEsYil7dmFyIGM9QihhLDEpO251bGwhPWMmJmJmKGIsMSxjKTtjPUIoYSwyKTtudWxsIT1jJiZiZihiLDIsYyk7Yz1CKGEsMyk7bnVsbCE9YyYmYmYoYiwzLGMpfTtpcS5wcm90b3R5cGUuJGI9ZnVuY3Rpb24oYSl7RCh0aGlzLDQsYSl9O3ZhciBtcT1mdW5jdGlvbihhLGIpe3ZhciBjPUIoYSwxKTtudWxsIT1jJiZjZihiLDEsYyk7Yz1CKGEsMik7bnVsbCE9YyYmY2YoYiwyLGMpO2M9QihhLDMpO251bGwhPWMmJmFmKGIsMyxjKTtjPUIoYSw0KTtudWxsIT1jJiYkZShiLDQsYyk7Yz1CKGEsNSk7bnVsbCE9YyYmJGUoYiw1LGMpO2M9QihhLDYpO251bGwhPWMmJiRlKGIsNixjKX07a3EucHJvdG90eXBlLiRiPWZ1bmN0aW9uKGEpe0QodGhpcywyLGEpfTt2YXIgbnE9ZnVuY3Rpb24oYSl7dmFyIGI9KG5ldyBQZikuZ2V0VGltZSgpO3JldHVybiBEKGEsMyxiKX07dmFyIG9xPW5hdmlnYXRvcixwcT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gb3EuamF2YUVuYWJsZWQoKX1jYXRjaChhKXtyZXR1cm4hMX19LHFxPWZ1bmN0aW9uKGEpe3ZhciBiPTEsYztpZih2b2lkIDAhPWEmJlwiXCIhPWEpZm9yKGI9MCxjPWEubGVuZ3RoLTE7MDw9YztjLS0pe3ZhciBkPWEuY2hhckNvZGVBdChjKTtiPShiPDw2JjI2ODQzNTQ1NSkrZCsoZDw8MTQpO2Q9YiYyNjYzMzgzMDQ7Yj0wIT1kP2JeZD4+MjE6Yn1yZXR1cm4gYn0scnE9ZnVuY3Rpb24oYSxiKXtpZighYXx8XCJub25lXCI9PWEpcmV0dXJuIDE7YT1TdHJpbmcoYSk7XCJhdXRvXCI9PWEmJihhPWIsXCJ3d3cuXCI9PWEuc3Vic3RyaW5nKDAsNCkmJihhPWEuc3Vic3RyaW5nKDQsYS5sZW5ndGgpKSk7cmV0dXJuIHFxKGEudG9Mb3dlckNhc2UoKSl9LHNxPS9eXFxzKl9nYT1cXHMqMVxcLihcXGQrKVteLl0qXFwuKC4qPylcXHMqJC8sdHE9L15bXj1dKz1cXHMqR0ExXFwuKFxcZCspW14uXSpcXC4oLio/KVxccyokLyx1cT0vXlxccypfZ2E9XFxzKigpKGFtcC1bXFx3Li1dezIyLDY0fSkkLzt2YXIgd3E9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLHZxLG51bGwpfTtLKHdxLE0pO3ZhciB2cT1bMTVdLHhxPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IHdxLGI9Xy55KDc2KTtyZXR1cm4gcmYoYSw3LGIpfTt2YXIgeXE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soeXEsTSk7dmFyIHpxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKHpxLE0pO0JkKHVkKHZkKFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvb3NkLmpzXCIpKSk7dmFyIEFxPWZ1bmN0aW9uKGEsYil7aWYoISh3aW5kb3cmJk1hdGgucmFuZG9tJiZuYXZpZ2F0b3IpKXJldHVybi0xO2lmKHdpbmRvdy5fX2dvb2dsZV9hZF91cmxzKXt2YXIgYz13aW5kb3cuX19nb29nbGVfYWRfdXJsczt0cnl7aWYoYyYmYy5nZXRPc2VJZCgpKXJldHVybiBjLmdldE9zZUlkKCl9Y2F0Y2goZSl7fX1pZighd2luZG93Ll9fZ29vZ2xlX2FkX3VybHNfaWQpe2M9d2luZG93Lmdvb2dsZV9lbmFibGVfb3NlO2lmKCEwPT09Yyl2YXIgZD0yO2Vsc2UhMSE9PWMmJihkPXhnKFswXSxhKSxudWxsPT1kJiYoKGQ9eGcoWzJdLGIpKXx8KGQ9MykpKTtpZighZClyZXR1cm4gMDt3aW5kb3cuX19nb29nbGVfYWRfdXJsc19pZD1kfXJldHVybiB3aW5kb3cuX19nb29nbGVfYWRfdXJsc19pZH07dmFyIEJxPWZ1bmN0aW9uKCl7fTtfLnA9QnEucHJvdG90eXBlO18ucC5nZXROZXdCbG9ja3M9ZnVuY3Rpb24oKXt9O18ucC5zZXR1cE9zZT1mdW5jdGlvbigpe307Xy5wLmdldE9zZUlkPWZ1bmN0aW9uKCl7cmV0dXJuLTF9O18ucC5nZXRDb3JyZWxhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuXCJcIn07Xy5wLm51bUJsb2Nrcz1mdW5jdGlvbigpe3JldHVybiAwfTtfLnAucmVnaXN0ZXJBZEJsb2NrPWZ1bmN0aW9uKCl7fTtfLnAudW5sb2FkQWRCbG9jaz1mdW5jdGlvbigpe307Xy5wLnNldExvYWRPc2RKc09uUHViV2luZG93PWZ1bmN0aW9uKCl7fTt2YXIgQ3E9bmV3IFVpKDEsb2koKSksRHE9ZnVuY3Rpb24oKXt2YXIgYT1vaSgpO2EmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmIWEuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nJiYoQ3Euaj0hMSxDcS5ldmVudHMhPUNxLmwuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZSYmKFRpKCkmJl8uVmMoQ3EuZXZlbnRzLFZpKSxDcS5ldmVudHMubGVuZ3RoPTApKX07KGZ1bmN0aW9uKCl7dmFyIGE9b2koKTthJiZhLmRvY3VtZW50JiYoXCJjb21wbGV0ZVwiPT1hLmRvY3VtZW50LnJlYWR5U3RhdGU/RHEoKTpDcS5qJiZfLnYoYSxcImxvYWRcIixmdW5jdGlvbigpe0RxKCl9KSl9KSgpO0RhdGUubm93KCk7dmFyIEVxPWZ1bmN0aW9uKGEsYixjKXthJiYoYz9fLnYoYSxcImxvYWRcIixiKTpfLnFiKGEsXCJsb2FkXCIsYikpfSxGcT1mdW5jdGlvbigpe3ZhciBhPShvaSgpfHxfLnIpLmdvb2dsZV9vc2RfYW1jYjtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9LEdxPUJkKHVkKHZkKFwiaHR0cHM6Ly93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL2FjdGl2ZXZpZXcvanMvY3VycmVudC9vc2QuanNcIikpKSxIcT1mdW5jdGlvbihhKXthPXtjYjp2b2lkIDA9PT1hP1wiL3IyMDEwMDEwMVwiOmF9O3ZhciBiPXlkKEdxKS50b1N0cmluZygpO2I9Q2QuZXhlYyhiKTt2YXIgYz1iWzNdfHxcIlwiO3JldHVybiBCZChiWzFdK0RkKFwiP1wiLGJbMl18fFwiXCIsYSkrRGQoXCIjXCIsYyx2b2lkIDApKX07dmFyIElxPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWImJmIubD9iLmw6MDt0aGlzLm89Yj9iLm86XCJcIjt0aGlzLmo9YiYmYi5qP2IuajpbXTt0aGlzLnY9ITA7aWYoYilmb3IoYT0wO2E8dGhpcy5qLmxlbmd0aDsrK2EpdGhpcy5qW2FdLm89ITB9LEtxPWZ1bmN0aW9uKGEpe3ZhciBiPWEudj9vaSgpOl8ucjthPUpxO2I9Ynx8Xy5yO2IuZ29vZ2xlX29zZF9sb2FkZWQ/YT0hMToodWcoYi5kb2N1bWVudCxhKSxhPWIuZ29vZ2xlX29zZF9sb2FkZWQ9ITApO2EmJnBpKCl9O18ucD1JcS5wcm90b3R5cGU7Xy5wLmdldE5ld0Jsb2Nrcz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmoubGVuZ3RoLGQ9MDtkPGM7ZCsrKXt2YXIgZT10aGlzLmpbZF07IWUudiYmZS5qJiYoZS52PSEwLGEoZS5qLGUuQSxlLkcsZS5sLHZvaWQgMCxlLm8sZS5DLGUuVSxlLkQpKX1iJiYoKG9pKCl8fF8ucikuZ29vZ2xlX29zZF9hbWNiPWEpfTtfLnAuc2V0dXBPc2U9ZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRPc2VJZCgpKXJldHVybiB0aGlzLmdldE9zZUlkKCk7dmFyIGI9QXEoTHEsTXEpO2lmKCFiKXJldHVybiAwO3RoaXMubD1iO3RoaXMubz1TdHJpbmcoYXx8MCk7cmV0dXJuIHRoaXMuZ2V0T3NlSWQoKX07Xy5wLmdldE9zZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdyYmTWF0aC5yYW5kb20mJm5hdmlnYXRvcj90aGlzLmw6LTF9O18ucC5nZXRDb3JyZWxhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307Xy5wLm51bUJsb2Nrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoubGVuZ3RofTtfLnAucmVnaXN0ZXJBZEJsb2NrPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2c9dm9pZCAwPT09Zz9mdW5jdGlvbigpe306ZztjPUZxKCk7ZT1fLk5pKCl8fC0xO2Y9Xy5yLnBhZ2VZT2Zmc2V0OzA8PWZ8fChmPS0xKTtjJiZkP2MoZCxhLGIsITEsdm9pZCAwLCExLGcsZSxmKTooZz1uZXcgTnEoYSxiLGQsZyxlLGYpLHRoaXMuai5wdXNoKGcpLEVxKGQsZy5tLCEwKSxKcXx8KF8uVGgoXy5yLFwiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD1vc2Qmcj1vbSZycz1cIitiKyhcIiZyZXE9XCIrYSkpLEpxPUhxKFwiL3IyMDEwMDEwMVwiKSksS3EodGhpcykpfTtfLnAudW5sb2FkQWRCbG9jaz1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jPyExOmM7Yj10aGlzLnY/b2koKTp3aW5kb3c7dm9pZCAwIT09Yi5Hb29nX09zZF9VbmxvYWRBZEJsb2NrJiZiLkdvb2dfT3NkX1VubG9hZEFkQmxvY2soYSk7YyYmKGM9ZWgodGhpcy5qLGZ1bmN0aW9uKGQpe3JldHVybiBkLmo9PWF9KSkmJkVxKGEsYy5tLCExKX07Xy5wLnNldExvYWRPc2RKc09uUHViV2luZG93PWZ1bmN0aW9uKGEpe3RoaXMudj1hfTt2YXIgT3E9ZnVuY3Rpb24oKXt2YXIgYT1vaSgpLGI9YS5fX2dvb2dsZV9hZF91cmxzO2lmKCFiKXJldHVybiBhLl9fZ29vZ2xlX2FkX3VybHM9bmV3IElxKGEpO3RyeXtpZigwPD1iLmdldE9zZUlkKCkpcmV0dXJuIGJ9Y2F0Y2goYyl7fXRyeXtyZXR1cm4gYS5fX2dvb2dsZV9hZF91cmxzPW5ldyBJcShhLGIpfWNhdGNoKGMpe3JldHVybiBhLl9fZ29vZ2xlX2FkX3VybHM9bmV3IElxKGEpfX0sSnE9bnVsbCxNcT0wLExxPTAsTnE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPXRoaXM7ZD12b2lkIDA9PT1kP18uSGM6ZDt0aGlzLkE9YTt0aGlzLkc9Yjt0aGlzLmo9Yzt0aGlzLm89dGhpcy52PXRoaXMubD0hMTt0aGlzLkM9ZDt0aGlzLlU9dm9pZCAwPT09ZT8tMTplO3RoaXMuRD12b2lkIDA9PT1mPy0xOmY7dGhpcy5tPWZ1bmN0aW9uKCl7cmV0dXJuIGcubD0hMH19O0NjKFwiR29vZ19BZFNlbnNlX2dldEFkQWRhcHRlckluc3RhbmNlXCIsT3EpO0NjKFwiR29vZ19BZFNlbnNlX09zZEFkYXB0ZXJcIixJcSk7dmFyIFBxPVtcImF1dG9cIixcImluaGVyaXRcIixcIjEwMCVcIl0sUXE9UHEuY29uY2F0KFtcIm5vbmVcIl0pLFJxPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtlPXZvaWQgMD09PWU/MTA6ZTtmPXZvaWQgMD09PWY/MTA6ZjtiPWIuc3R5bGVTaGVldHM7aWYoIWIpcmV0dXJuITE7dmFyIGc9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3RvcjtlPS0xPT1lP0luZmluaXR5OmU7Zj0tMT09Zj9JbmZpbml0eTpmO2Zvcih2YXIgaD0wO2g8TWF0aC5taW4oYi5sZW5ndGgsZSk7KytoKXt2YXIgaz12b2lkIDA7dHJ5e3ZhciBsPWJbaF0sbT1udWxsO3RyeXttPWwuY3NzUnVsZXN8fGwucnVsZXN9Y2F0Y2goSCl7aWYoMTU9PUguY29kZSl0aHJvdyBILnN0eWxlU2hlZXQ9bCxIO31rPW19Y2F0Y2goSCl7Y29udGludWV9aWYoayYmMDxrLmxlbmd0aClmb3IobT0wO208TWF0aC5taW4oay5sZW5ndGgsZik7KyttKXt2YXIgbj1rW21dLHE7aWYocT0xPT1uLnR5cGUpe3E9bjt2YXIgdz1jO3E9Zy5jYWxsKGEscS5zZWxlY3RvclRleHQpJiZ3KHEpfWlmKCFxJiYocT1kJiY0PT1uLnR5cGUpKWE6e3E9YTt3PWM7Zm9yKHZhciB1PWYsQz0wO0M8TWF0aC5taW4obi5jc3NSdWxlcy5sZW5ndGgsdSk7QysrKXt2YXIgUT1uLmNzc1J1bGVzW0NdLE49dztpZihnLmNhbGwocSxRLnNlbGVjdG9yVGV4dCkmJk4oUSkpe3E9ITA7YnJlYWsgYX19cT0hMX1pZihxKXJldHVybiEwfX1yZXR1cm4hMX0sVHE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXZvaWQgMD09PWQ/MTA6ZDt2YXIgZT12b2lkIDA9PT1lPzEwOmU7aWYoIWEpcmV0dXJuITA7dmFyIGY9ITA7WWcoYSxmdW5jdGlvbihnKXtyZXR1cm4gZj1TcShnLGIsITEsZCxlKX0sdm9pZCAwPT09Yz8xMDA6Yyk7cmV0dXJuIGZ9LFNxPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS5zdHlsZTtyZXR1cm4gZiYmZi5oZWlnaHQmJiFfLiRjKFBxLGYuaGVpZ2h0KXx8ZiYmZi5tYXhIZWlnaHQmJiFfLiRjKFFxLGYubWF4SGVpZ2h0KXx8UnEoYSxiLmRvY3VtZW50LGZ1bmN0aW9uKGcpe3ZhciBoPWcuc3R5bGUuaGVpZ2h0O2c9Zy5zdHlsZVtcIm1heC1oZWlnaHRcIl07cmV0dXJuIGgmJiFfLiRjKFBxLGgpfHxnJiYhXy4kYyhRcSxnKX0sYyxkLGUpPyExOiEwfTt2YXIgVXE9dm9pZCAwO3ZhciBWcT1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/d2luZG93OmE7cmV0dXJuIGEuX2dtcHRubD9cImFmbWEtZ3B0LXNkay1hXCI6YS53ZWJraXQmJmEud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyYmYS53ZWJraXQubWVzc2FnZUhhbmRsZXJzLl9nbXB0bmw/XCJhZm1hLWdwdC1zZGstaVwiOm51bGx9LFdxPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO3ZhciBjPVZxKGIpO2lmKCFjKXJldHVybiBudWxsO3ZhciBkPW51bGw7dHJ5e1wiYWZtYS1ncHQtc2RrLWFcIj09Yz9kPWIuX2dtcHRubC5wbShcIkdBTT1cIixhKXx8XCI1XCI6KGQ9Yi5fX2dtcHRubF9ufHxcIjVcIixiLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuX2dtcHRubC5wb3N0TWVzc2FnZShcIkdBTT1cIikpfWNhdGNoKGUpe3JldHVyblwiM1wifXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgZD9kOlwiM1wifTt2YXIgWHE9ZnVuY3Rpb24oKXt0aGlzLmw9W107dGhpcy5qPS0xfTtYcS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPyEwOmI7MDw9YSYmNTI+YSYmMD09PWElMSYmdGhpcy5sW2FdIT1iJiYodGhpcy5sW2FdPWIsdGhpcy5qPS0xKX07WHEucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4hIXRoaXMubFthXX07dmFyIFlxPWZ1bmN0aW9uKGEpey0xPT1hLmomJihhLmo9V2MoYS5sLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYz9iK01hdGgucG93KDIsZCk6Yn0pKTtyZXR1cm4gYS5qfTt2YXIgWnE9MCwkcT1CZCh1ZCh2ZChcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2V4cGFuc2lvbl9lbWJlZC5qc1wiKSkpO3ZhciBhcj1mdW5jdGlvbigpe3RoaXMuaj1mdW5jdGlvbigpe319O0ljKGFyKTt2YXIgYnI9ZnVuY3Rpb24oKXt2YXIgYT1xcC5CKCk7YXIuQigpLmooYSl9O3ZhciBjcj1mdW5jdGlvbigpe3ZhciBhPXZvaWQgMCxiPTI7aWYodm9pZCAwPT09YSl7dmFyIGM9dm9pZCAwPT09Yz9fLnI6YzthPWMuZ2dlYWN8fChjLmdnZWFjPXt9KX1iPXZvaWQgMD09PWI/MDpiO2M9YTt2YXIgZD1iO2Q9dm9pZCAwPT09ZD8wOmQ7bGooa2ouQigpLGMsZCk7Yz1hO2I9dm9pZCAwPT09Yj8wOmI7cGoob2ouQigpLGMsYik7YXIuQigpLmo9amooaWosYSk7b2ouQigpLmooKX07dmFyIGRyPWZ1bmN0aW9uKCl7dGhpcy5qPXdpbmRvdzt0aGlzLmw9MH0sZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt3YzpCKGIsMiktYS5qLkRhdGUubm93KCkvMUUzLHBhdGg6QihiLDMpLGRvbWFpbjpCKGIsNCksdmQ6ITF9LGU9QihiLDEpLGY9YS5qLmRvY3VtZW50O2Y9dm9pZCAwPT09Zj9kb2N1bWVudDpmO3goYyw1KSYmKG5ldyBQYShmKSkuc2V0KFwiX19nYWRzXCIsZSxkKTt4KGMsNSkmJi4wMT5hLmouTWF0aC5yYW5kb20oKSYmKGM9UWEoXCJfX2dhZHNcIixjLGEuai5kb2N1bWVudCksVmgoe2RvbWFpbjpCKGIsNCksaG9zdDphLmoubG9jYXRpb24uaG9zdCxzdWNjZXNzOmM9PT1CKGIsMSk/XCIxXCI6XCIwXCJ9LFwiZ2ZwX2N3X3N0YXR1c1wiKSl9O3ZhciBmcj12YShmdW5jdGlvbigpe3JldHVybiEoQ2V8fERlfHxCZSkmJihQZXx8eGV8fHdlKX0pLGdyPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZD12b2lkIDA9PT1kP1wiXCI6ZDt2YXIgZj1hLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO3RyeXtmLnJlbD1jLGYuaHJlZj0tMSE9Yy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJzdHlsZXNoZWV0XCIpP3lkKGIpLnRvU3RyaW5nKCk6YiBpbnN0YW5jZW9mIHhkP3lkKGIpLnRvU3RyaW5nKCk6YiBpbnN0YW5jZW9mIF8uUmQ/Xy5TZChiKTpfLlNkKF8uVWQoYikpfWNhdGNoKGcpe3JldHVybiBudWxsfWQmJlwicHJlbG9hZFwiPT1jJiYoZi5hcz1kKTtlJiZmLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsZSk7YT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtpZighYSlyZXR1cm4gbnVsbDt0cnl7YS5hcHBlbmRDaGlsZChmKX1jYXRjaChnKXt9cmV0dXJuIGZ9O3ZhciBocj0vXlxcLmdvb2dsZVxcLihjb20/XFwuKT9bYS16XXsyLDN9JC8saXI9L1xcLihjbnxjb21cXC5iaXxkb3xzbHxiYXxieXxtYXxhbSkkLyxqcj1fLnIsbHI9ZnVuY3Rpb24oYSl7YT1cImh0dHBzOi8vYWRzZXJ2aWNlXCIrKGErXCIvYWRzaWQvaW50ZWdyYXRvci5qc1wiKTt2YXIgYj1bXCJkb21haW49XCIrZW5jb2RlVVJJQ29tcG9uZW50KF8uci5sb2NhdGlvbi5ob3N0bmFtZSldO2tyWzNdPj1UYygpJiZiLnB1c2goXCJhZHNpZD1cIitlbmNvZGVVUklDb21wb25lbnQoa3JbMV0pKTtyZXR1cm4gYStcIj9cIitiLmpvaW4oXCImXCIpfSxrcixtcixucj1mdW5jdGlvbigpe2pyPV8ucjtrcj1qci5nb29nbGVUb2tlbj1qci5nb29nbGVUb2tlbnx8e307dmFyIGE9VGMoKTtrclsxXSYma3JbM10+YSYmMDxrclsyXXx8KGtyWzFdPVwiXCIsa3JbMl09LTEsa3JbM109LTEsa3JbNF09XCJcIixrcls2XT1cIlwiKTttcj1qci5nb29nbGVJTVN0YXRlPWpyLmdvb2dsZUlNU3RhdGV8fHt9O2E9bXJbMV07aHIudGVzdChhKSYmIWlyLnRlc3QoYSl8fChtclsxXT1cIi5nb29nbGUuY29tXCIpO0FycmF5LmlzQXJyYXkobXJbNV0pfHwobXJbNV09W10pO1wiYm9vbGVhblwiIT09dHlwZW9mIG1yWzZdJiYobXJbNl09ITEpO0FycmF5LmlzQXJyYXkobXJbN10pfHwobXJbN109W10pO1wibnVtYmVyXCIhPT10eXBlb2YgbXJbOF0mJihtcls4XT0wKX0sb3I9e0xiOmZ1bmN0aW9uKCl7cmV0dXJuIDA8bXJbOF19LG9kOmZ1bmN0aW9uKCl7bXJbOF0rK30scGQ6ZnVuY3Rpb24oKXswPG1yWzhdJiZtcls4XS0tfSxxZDpmdW5jdGlvbigpe21yWzhdPTB9LEFlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LHBjOmZ1bmN0aW9uKCl7cmV0dXJuIG1yWzVdfSxrYzpmdW5jdGlvbihhKXt0cnl7YSgpfWNhdGNoKGIpe18uci5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYjt9LDApfX0sQmM6ZnVuY3Rpb24oKXtpZighb3IuTGIoKSl7dmFyIGE9Xy5yLmRvY3VtZW50LGI9ZnVuY3Rpb24oZSl7ZT1scihlKTthOnt0cnl7dmFyIGY9RmMoKTticmVhayBhfWNhdGNoKGcpe31mPXZvaWQgMH1ncihhLGUsXCJwcmVsb2FkXCIsXCJzY3JpcHRcIixmKTtmPWEuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtmLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIjtmLm9uZXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yLnByb2Nlc3NHb29nbGVUb2tlbih7fSwyKX07ZT1sZyhlKTtBYShmLGUpO3RyeXsoYS5oZWFkfHxhLmJvZHl8fGEuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChmKSxvci5vZCgpfWNhdGNoKGcpe319LGM9bXJbMV07YihjKTtcIi5nb29nbGUuY29tXCIhPWMmJmIoXCIuZ29vZ2xlLmNvbVwiKTtiPXt9O3ZhciBkPShiLm5ld1Rva2VuPVwiRkJUXCIsYik7Xy5yLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gXy5yLnByb2Nlc3NHb29nbGVUb2tlbihkLDEpfSwxRTMpfX19LHByPWZ1bmN0aW9uKGEpe25yKCk7dmFyIGI9anIuZ29vZ2xlVG9rZW5bNV18fDA7YSYmKDAhPWJ8fGtyWzNdPj1UYygpP29yLmtjKGEpOihvci5wYygpLnB1c2goYSksb3IuQmMoKSkpO2tyWzNdPj1UYygpJiZrclsyXT49VGMoKXx8b3IuQmMoKX0scXI9ZnVuY3Rpb24oYSl7Xy5yLnByb2Nlc3NHb29nbGVUb2tlbj1fLnIucHJvY2Vzc0dvb2dsZVRva2VufHxmdW5jdGlvbihiLGMpe3ZhciBkPWI7ZD12b2lkIDA9PT1kP3t9OmQ7Yz12b2lkIDA9PT1jPzA6YztiPWQubmV3VG9rZW58fFwiXCI7dmFyIGU9XCJOVFwiPT1iLGY9cGFyc2VJbnQoZC5mcmVzaExpZmV0aW1lU2Vjc3x8XCJcIiwxMCksZz1wYXJzZUludChkLnZhbGlkTGlmZXRpbWVTZWNzfHxcIlwiLDEwKSxoPWRbXCIxcF9qYXJcIl18fFwiXCI7ZD1kLnB1Y3JkfHxcIlwiO25yKCk7MT09Yz9vci5xZCgpOm9yLnBkKCk7dmFyIGs9anIuZ29vZ2xlVG9rZW49anIuZ29vZ2xlVG9rZW58fHt9LGw9MD09YyYmYiYmXCJzdHJpbmdcIj09PXR5cGVvZiBiJiYhZSYmXCJudW1iZXJcIj09PXR5cGVvZiBmJiYwPGYmJlwibnVtYmVyXCI9PT10eXBlb2YgZyYmMDxnJiZcInN0cmluZ1wiPT09dHlwZW9mIGg7ZT1lJiYhb3IuTGIoKSYmKCEoa3JbM10+PVRjKCkpfHxcIk5UXCI9PWtyWzFdKTt2YXIgbT0hKGtyWzNdPj1UYygpKSYmMCE9YztpZihsfHxlfHxtKWU9VGMoKSxmPWUrMUUzKmYsZz1lKzFFMypnLDFFLTU+TWF0aC5yYW5kb20oKSYmXy5UaChfLnIsXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9nZW5fMjA0P2lkPWltZXJyJmVycj1cIitjKSxrWzVdPWMsa1sxXT1iLGtbMl09ZixrWzNdPWcsa1s0XT1oLGtbNl09ZCxucigpO2lmKGx8fCFvci5MYigpKXtjPW9yLnBjKCk7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKylvci5rYyhjW2JdKTtjLmxlbmd0aD0wfX07cHIoYSl9O3ZhciBNYj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj97fTpiO3RoaXMucm9vdD1iLnJvb3Q/Yi5yb290Om51bGw7dGhpcy5DPWIucm9vdE1hcmdpbj9TYShiLnJvb3RNYXJnaW4pOlt7dmFsdWU6MCx0eXBlOlwicHhcIn0se3ZhbHVlOjAsdHlwZTpcInB4XCJ9LHt2YWx1ZTowLHR5cGU6XCJweFwifSx7dmFsdWU6MCx0eXBlOlwicHhcIn1dO3RoaXMucm9vdE1hcmdpbj1fLlJhKHRoaXMuQyxmdW5jdGlvbihjKXtyZXR1cm5cIlwiK2MudmFsdWUrYy50eXBlfSkuam9pbihcIiBcIik7dGhpcy5VPVdhKGIudGhyZXNob2xkKTt0aGlzLkQ9YTt0aGlzLmo9W107dGhpcy5vPVtdO3RoaXMubT0hMTt0aGlzLmw9bnVsbDt0aGlzLnY9a2QodGhpcy5BLDEwMCx0aGlzKX0scnI9ZnVuY3Rpb24oYSl7aWYoYS5yb290KXZhciBiPVhhKGEucm9vdCk7ZWxzZXt2YXIgYz1fLiRmKHdpbmRvdyk7Yj17dG9wOjAscmlnaHQ6Yy53aWR0aCxib3R0b206Yy5oZWlnaHQsbGVmdDowLHdpZHRoOmMud2lkdGgsaGVpZ2h0OmMuaGVpZ2h0fX1hPV8uUmEoYS5DLGZ1bmN0aW9uKGQsZSl7cmV0dXJuXCJweFwiPT1kLnR5cGU/ZC52YWx1ZTpkLnZhbHVlKihlJTI/Yi53aWR0aDpiLmhlaWdodCkvMTAwfSk7cmV0dXJue3RvcDpiLnRvcC1hWzBdLHJpZ2h0OmIucmlnaHQrYVsxXSxib3R0b206Yi5ib3R0b20rYVsyXSxsZWZ0OmIubGVmdC1hWzNdLHdpZHRoOmIud2lkdGgrYVsxXSthWzNdLGhlaWdodDpiLmhlaWdodCthWzBdK2FbMl19fSxzcj1mdW5jdGlvbihhLGIsYyl7aWYoIWJ8fGIuaXNJbnRlcnNlY3RpbmchPWMuaXNJbnRlcnNlY3RpbmcpcmV0dXJuITA7dmFyIGQ9Yi5pbnRlcnNlY3Rpb25SYXRpbyxlPWMuaW50ZXJzZWN0aW9uUmF0aW87cmV0dXJuIGQ9PWU/ITE6Xy5YYyhhLlUsZnVuY3Rpb24oZil7cmV0dXJuIGY8ZCE9ZjxlfSl9O01iLnByb3RvdHlwZS5BPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXJyKHRoaXMpO18uVmModGhpcy5qLGZ1bmN0aW9uKGMpe3ZhciBkPWMudGFyZ2V0LGU9WGEoZCksZj1lLndpZHRoKmUuaGVpZ2h0O3ZhciBnPU1hdGgubWF4KGIudG9wLGUudG9wKTt2YXIgaD1NYXRoLm1pbihiLnJpZ2h0LGUucmlnaHQpLGs9TWF0aC5taW4oYi5ib3R0b20sZS5ib3R0b20pLGw9TWF0aC5tYXgoYi5sZWZ0LGUubGVmdCksbT1oLWwsbj1rLWc7Zz0wPD1tJiYwPD1uP3t0b3A6ZyxyaWdodDpoLGJvdHRvbTprLGxlZnQ6bCx3aWR0aDptLGhlaWdodDpufTpudWxsO2g9ISFnO2s9Zz9nLndpZHRoKmcuaGVpZ2h0OjA7Zj1mP2svZjpoPzE6MDtrPShrPXdpbmRvdy5wZXJmb3JtYW5jZSkmJmsubm93P2subm93KCk6MDtkPXtib3VuZGluZ0NsaWVudFJlY3Q6ZSxpbnRlcnNlY3Rpb25SYXRpbzpmLGludGVyc2VjdGlvblJlY3Q6Z3x8e3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9LGlzSW50ZXJzZWN0aW5nOmgscm9vdEJvdW5kczpiLHRhcmdldDpkLHRpbWU6a307c3IoYSxjLmphLGQpJiZhLm8ucHVzaChkKTtjLmphPWR9KTt0aGlzLm8ubGVuZ3RoJiZ0aGlzLkQodHIodGhpcyksdGhpcyl9O01iLnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKGEpe18uWGModGhpcy5qLGZ1bmN0aW9uKGIpe3JldHVybiBiLnRhcmdldD09YX0pfHwodGhpcy5qLnB1c2goe3RhcmdldDphLGphOm51bGx9KSx0aGlzLkEoKSx0aGlzLm18fCh0aGlzLm09ITAsXy52KF8ucixcInNjcm9sbFwiLHRoaXMudiksXy52KF8ucixcInJlc2l6ZVwiLHRoaXMudiksXy5yLk11dGF0aW9uT2JzZXJ2ZXImJiF0aGlzLmwmJih0aGlzLmw9bmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy52KSx0aGlzLmwub2JzZXJ2ZShfLnIuZG9jdW1lbnQse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pKSkpfTtNYi5wcm90b3R5cGUudW5vYnNlcnZlPWZ1bmN0aW9uKGEpe3RoaXMuaj1fLlRhKHRoaXMuaixmdW5jdGlvbihiKXtyZXR1cm4gYi50YXJnZXQhPWF9KTswPT10aGlzLmoubGVuZ3RoJiZ0aGlzLmRpc2Nvbm5lY3QoKX07TWIucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLm09ITE7dGhpcy5qLmxlbmd0aD0wO18ucWIoXy5yLFwic2Nyb2xsXCIsdGhpcy52KTtfLnFiKF8ucixcInJlc2l6ZVwiLHRoaXMudik7dGhpcy5sJiYodGhpcy5sLmRpc2Nvbm5lY3QoKSx0aGlzLmw9bnVsbCl9O3ZhciB0cj1mdW5jdGlvbihhKXt2YXIgYj1fLkZiKGEubykuY29uY2F0KCk7YS5vLmxlbmd0aD0wO3JldHVybiBifTtfLnVyPWZ1bmN0aW9uKCl7dmFyIGE9Xy5EaigzOCk7dGhpcy5qPXZvaWQgMD09PWE/LjAxOmE7dGhpcy52PXRoaXMubH07Xy51ci5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIsYyxkLGUpe2M9dm9pZCAwPT09Yz90aGlzLmo6YztpZihNYXRoLnJhbmRvbSgpPmMpcmV0dXJuITE7Yi5lcnJvciYmYi5tZXRhJiZiLmlkfHwoYj1uZXcgRmkoYix7Y29udGV4dDphLGlkOnZvaWQgMD09PWU/XCJncHRfZXhjZXB0aW9uXCI6ZX0pKTtkJiYoYi5tZXRhPXt9LGQmJmQoYi5tZXRhKSk7Xy5yLmdvb2dsZV9qc19lcnJvcnM9Xy5yLmdvb2dsZV9qc19lcnJvcnN8fFtdO18uci5nb29nbGVfanNfZXJyb3JzLnB1c2goYik7Xy5yLmVycm9yX3JlcF9sb2FkZWR8fCh1ZyhfLnIuZG9jdW1lbnQsbGcoXy5yLmxvY2F0aW9uLnByb3RvY29sK1wiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvZXJyX3JlcC5qc1wiKSksXy5yLmVycm9yX3JlcF9sb2FkZWQ9ITApO3JldHVybiExfTt2YXIgdnI9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe18uUC5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuc3RhdHVzPTE7dGhpcy5sPWI7dGhpcy5BPWM7dGhpcy5LPWQ7dGhpcy5uYj0hIWU7dGhpcy5vPU1hdGgucmFuZG9tKCk7dGhpcy5DPXt9O3RoaXMuaj1udWxsO3RoaXMuRD0oMCxfLlJjKSh0aGlzLkksdGhpcyk7dGhpcy5HPWZ9O18uSih2cixfLlApO3ZyLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEpe2lmKGEub3JpZ2luPT09dGhpcy5BJiYodGhpcy5uYnx8YS5zb3VyY2U9PXRoaXMubCkpe3ZhciBiPW51bGw7dHJ5e2I9SlNPTi5wYXJzZShhLmRhdGEpfWNhdGNoKGMpe31pZihfLk1jKGIpJiYoYT1iLmksYi5jPT09dGhpcy5tJiZhIT10aGlzLm8pKXtpZigyIT09dGhpcy5zdGF0dXMpdHJ5e3RoaXMuc3RhdHVzPTIsd3IodGhpcyksdGhpcy5qJiYodGhpcy5qKCksdGhpcy5qPW51bGwpfWNhdGNoKGMpe31hPWIucztiPWIucDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEmJihcInN0cmluZ1wiPT09dHlwZW9mIGJ8fF8uTWMoYikpJiZ0aGlzLkMuaGFzT3duUHJvcGVydHkoYSkpdGhpcy5DW2FdKGIpfX19O3ZhciB3cj1mdW5jdGlvbihhKXt2YXIgYj17fTtiLmM9YS5tO2IuaT1hLm87YS5HJiYoYi5lPWEuRyk7YS5sLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGIpLGEuQSl9O3ZyLnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7aWYoMT09PXRoaXMuc3RhdHVzKXt0cnl7dGhpcy5sLnBvc3RNZXNzYWdlJiZ3cih0aGlzKX1jYXRjaChhKXt9d2luZG93LnNldFRpbWVvdXQoKDAsXy5SYykodGhpcy5ILHRoaXMpLDUwKX19O3ZyLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKGEpe2EmJih0aGlzLmo9YSk7Xy52KHdpbmRvdyxcIm1lc3NhZ2VcIix0aGlzLkQpO3RoaXMuSyYmdGhpcy5IKCl9O3ZhciB4cj1mdW5jdGlvbihhLGIsYyl7YS5DW2JdPWN9LHlyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fTtkLmM9YS5tO2QuaT1hLm87ZC5zPWI7ZC5wPWM7dHJ5e2EubC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShkKSxhLkEpfWNhdGNoKGUpe319O3ZyLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9MztfLnFiKHdpbmRvdyxcIm1lc3NhZ2VcIix0aGlzLkQpO18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpfTt2YXIgenI9ZnVuY3Rpb24oKXt0aGlzLmo9W107dGhpcy5sPVtdO3RoaXMudj1bXX0sQXI9ZnVuY3Rpb24oYSxiKXthLmwucHVzaChiKX07dmFyIEJyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmo9bmV3IHQuUHJvbWlzZShmdW5jdGlvbihiLGMpe2EucmVzb2x2ZT1iO2EucmVqZWN0PWN9KX07dmFyIENyPWZ1bmN0aW9uKGEpe2E9RXJyb3IuY2FsbCh0aGlzLGEpO3RoaXMubWVzc2FnZT1hLm1lc3NhZ2U7XCJzdGFja1wiaW4gYSYmKHRoaXMuc3RhY2s9YS5zdGFjayk7Xy5BKE9iamVjdCxcInNldFByb3RvdHlwZU9mXCIpLmNhbGwoT2JqZWN0LHRoaXMsQ3IucHJvdG90eXBlKTt0aGlzLm5hbWU9XCJJbnB1dEVycm9yXCJ9O18uSihDcixFcnJvcik7dmFyIERyPWZ1bmN0aW9uKCl7dGhpcy5sPW5ldyBCcn0sRXI9ZnVuY3Rpb24oKXtEci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihFcixEcik7dmFyIFU9ZnVuY3Rpb24oYSxiKXthLnZ8fChhLmo9YixhLmwucmVzb2x2ZShiKSl9LEZyPWZ1bmN0aW9uKGEpe2Eudnx8KGEuaj1udWxsLGEubC5yZXNvbHZlKG51bGwpKX07Y2MuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRXIucHJvdG90eXBlLHttOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sLmp9fSx2Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMub3x8dm9pZCAwIT09dGhpcy5qfX19KTt2YXIgR3I9ZnVuY3Rpb24oYSl7dGhpcy5sPW5ldyBCcjt0aGlzLnY9YX07Xy5KKEdyLERyKTt2YXIgSHI9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEudi5qfTtjYy5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhHci5wcm90b3R5cGUse3ZhbHVlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52Lmp9fSxlcnJvcjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudi5vfX19KTt2YXIgSXI9ZnVuY3Rpb24oKXtHci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihJcixHcik7Y2MuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSXIucHJvdG90eXBlLHt2YWx1ZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudi5qfX19KTt2YXIgSnI9ZnVuY3Rpb24oKXtFci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihKcixFcik7SnIucHJvdG90eXBlLm5vdGlmeT1mdW5jdGlvbigpe0ZyKHRoaXMpfTt2YXIgS3I9ZnVuY3Rpb24oKXtfLlAuY2FsbCh0aGlzKTt2YXIgYT10aGlzO3RoaXMubz1uZXcgenI7dGhpcy5tYT0hMTtfLlIodGhpcyxmdW5jdGlvbigpe3ZhciBiPWEubztiLmoubGVuZ3RoPTA7Yi52Lmxlbmd0aD0wO2IubC5sZW5ndGg9MH0pfTtfLkooS3IsXy5QKTtLci5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBiKCl7dmFyIGM9dGhpcyxkLGU7cmV0dXJuIERhKGIsZnVuY3Rpb24oZil7c3dpdGNoKGYuail7Y2FzZSAxOmlmKGMubWEpcmV0dXJuIGYucmV0dXJuKCk7Yy5tYT0hMDtkPWMuby5sLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gZy5tfSk7Zi5BPTI7cmV0dXJuIEVhKGYsdC5Qcm9taXNlLmFsbChkKSw0KTtjYXNlIDQ6aWYoYy5sYSl7Zi5qPTU7YnJlYWt9THIoYyk7cmV0dXJuIEVhKGYsYy5qKCksNSk7Y2FzZSA1OkdhKGYsMCk7YnJlYWs7Y2FzZSAyOmU9SGEoZik7aWYoYy5sYSlyZXR1cm4gZi5yZXR1cm4oKTtlIGluc3RhbmNlb2YgQ3J8fChNcihjLGUpLGMuby5qLmxlbmd0aCYmTnIoYyxuZXcgQ3IoZS5tZXNzYWdlKSkpO2Yuaj0wfX0pfSl9O0tyLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IEVyO3RoaXMuby5qLnB1c2goYSk7cmV0dXJuIGF9O3ZhciBPcj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgSnI7YS5vLmoucHVzaChiKTtyZXR1cm4gYn0sVj1mdW5jdGlvbihhLGIpe0FyKGEubyxiKTtiPW5ldyBJcihiKTthLm8udi5wdXNoKGIpO3JldHVybiBifSxXPWZ1bmN0aW9uKGEsYil7QXIoYS5vLGIpO3JldHVybiBuZXcgR3IoYil9LExyPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9Xy5GKGEuby52KSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7aWYoIUhyKGQudmFsdWUpKXRocm93IEVycm9yKFwibWlzc2luZyBpbnB1dDogXCIrYS5pZCgpK1wiL1wiK2IpOysrYn19LE5yPWZ1bmN0aW9uKGEsYil7YT1fLkYoYS5vLmopO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpaWYoYz1jLnZhbHVlLCFjLnYpe3ZhciBkPWI7Yy5vPWQ7Yy5sLnJlamVjdChkKX19O3ZhciB3Yj1mdW5jdGlvbigpe18uUC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5qPVtdfTtfLkood2IsXy5QKTt2YXIgeGI9ZnVuY3Rpb24oYSxiKXtiPV8uRihiKTtmb3IodmFyIGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxfLndoKGEsYyksYS5qLnB1c2goYyl9LFg9ZnVuY3Rpb24oYSxiKXt4YihhLFtiXSl9LHliPWZ1bmN0aW9uKGEpe2lmKGEuai5sZW5ndGgpe2E9Xy5GKGEuaik7Zm9yKHZhciBiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSliLnZhbHVlLnN0YXJ0KCl9fTt3Yi5wcm90b3R5cGUudj1mdW5jdGlvbigpe18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpO3RoaXMuai5sZW5ndGg9MH07dmFyIFByPWZ1bmN0aW9uKCl7dGhpcy5qPVtdfSxScj1mdW5jdGlvbihhLGIsYyxkLGUpe2Euai5wdXNoKG5ldyBRcihiLGMsZCxlKSl9LFNyPWZ1bmN0aW9uKGEsYixjLGQpe1JyKGEsYixjLGQrXCJweFwiLHZvaWQgMCl9LFRyPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmoubGVuZ3RoLTE7MDw9YjtiLS0pe3ZhciBjPWEualtiXTtjLmw/KGMudi5zdHlsZS5yZW1vdmVQcm9wZXJ0eShjLmopLGMudi5zdHlsZS5zZXRQcm9wZXJ0eShjLmosU3RyaW5nKGMubyksYy5tKSk6Yy52LnN0eWxlW2Mual09Yy5vfWEuai5sZW5ndGg9MH0sUXI9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy52PWE7dGhpcy5qPSh0aGlzLmw9ISh2b2lkIDA9PT1kfHwhYS5zdHlsZXx8IWEuc3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eSkpP1N0cmluZyhiKS5yZXBsYWNlKC8oW0EtWl0pL2csXCItJDFcIikudG9Mb3dlckNhc2UoKTpiO3RoaXMubz10aGlzLmw/YS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHRoaXMuaik6YS5zdHlsZVt0aGlzLmpdO3RoaXMubT10aGlzLmw/YS5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KHRoaXMuaik6dm9pZCAwO3RoaXMubD8oYS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0aGlzLmopLGEuc3R5bGUuc2V0UHJvcGVydHkodGhpcy5qLFN0cmluZyhjKSxkKSk6YS5zdHlsZVt0aGlzLmpdPVN0cmluZyhjKX07dmFyIFVyLFZyO1VyPXtvdmVyZmxvdzpcImhpZGRlblwiLHBvc2l0aW9uOlwiZml4ZWRcIn07Xy5Xcj1mdW5jdGlvbihhLGIpe2lmKCFhLmJvZHkpcmV0dXJuIG51bGw7dmFyIGM9bmV3IFZyO2MuYXBwbHkoYSxiKTtyZXR1cm4gZnVuY3Rpb24oKXtfLmNpKGEuYm9keSx7ZmlsdGVyOmMuaix3ZWJraXRGaWx0ZXI6Yy5qLG92ZXJmbG93OmMudixwb3NpdGlvbjpjLm8sdG9wOmMubX0pO2Iuc2Nyb2xsVG8oMCxjLmwpfX07VnI9ZnVuY3Rpb24oKXt0aGlzLmo9dGhpcy5tPXRoaXMubz10aGlzLnY9bnVsbDt0aGlzLmw9MH07VnIucHJvdG90eXBlLmFwcGx5PWZ1bmN0aW9uKGEsYil7dGhpcy52PWEuYm9keS5zdHlsZS5vdmVyZmxvdzt0aGlzLm89YS5ib2R5LnN0eWxlLnBvc2l0aW9uO3RoaXMubT1hLmJvZHkuc3R5bGUudG9wO3RoaXMuaj1hLmJvZHkuc3R5bGUuZmlsdGVyP2EuYm9keS5zdHlsZS5maWx0ZXI6YS5ib2R5LnN0eWxlLndlYmtpdEZpbHRlcjt0aGlzLmw9Xy5JbihiKTtfLmNpKGEuYm9keSxcInRvcFwiLC10aGlzLmwrXCJweFwiKTtfLmNpKGEuYm9keSxVcil9O18uWHI9ZnVuY3Rpb24oKXt0aGlzLmo9bnVsbH07SWMoXy5Ycik7dmFyIFlyPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPzUwMDpiO18uUC5jYWxsKHRoaXMpO3RoaXMubD1hO3RoaXMuaj1udWxsO3RoaXMubT17fTt0aGlzLkE9MDt0aGlzLkM9Yjt0aGlzLm89bnVsbH07Xy5KKFlyLF8uUCk7WXIucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXt0aGlzLm09e307dGhpcy5vJiYoXy5xYih0aGlzLmwsXCJtZXNzYWdlXCIsdGhpcy5vKSxkZWxldGUgdGhpcy5vKTtkZWxldGUgdGhpcy5tO2RlbGV0ZSB0aGlzLmw7ZGVsZXRlIHRoaXMuajtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKX07dmFyICRyPWZ1bmN0aW9uKGEpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmwuX191c3BhcGl8fG51bGwhPVpyKGEpfSxicz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O2lmKCRyKGEpKXt2YXIgZD1qZChmdW5jdGlvbigpe3JldHVybiBiKGMpfSk7YXMoYSxmdW5jdGlvbihlLGYpe2YmJihjPWUpO2QoKX0pO3NldFRpbWVvdXQoZCxhLkMpfWVsc2UgYihjKX0sYXM9ZnVuY3Rpb24oYSxiKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5sLl9fdXNwYXBpKWE9YS5sLl9fdXNwYXBpLGEoXCJnZXRVU1BEYXRhXCIsMSxiKTtlbHNlIGlmKFpyKGEpKXtjcyhhKTt2YXIgYz0rK2EuQTthLm1bY109YjthLmomJihiPXt9LGEuai5wb3N0TWVzc2FnZSgoYi5fX3VzcGFwaUNhbGw9e2NvbW1hbmQ6XCJnZXRVU1BEYXRhXCIsdmVyc2lvbjoxLGNhbGxJZDpjfSxiKSxcIipcIikpfX0sWnI9ZnVuY3Rpb24oYSl7aWYoYS5qKXJldHVybiBhLmo7YS5qPVFnKGEubCxcIl9fdXNwYXBpTG9jYXRvclwiKTtyZXR1cm4gYS5qfSxjcz1mdW5jdGlvbihhKXthLm98fChhLm89ZnVuY3Rpb24oYil7dHJ5e3ZhciBjO1wic3RyaW5nXCI9PT10eXBlb2YgYi5kYXRhP2M9SlNPTi5wYXJzZShiLmRhdGEpOmM9Yi5kYXRhO3ZhciBkPWMuX191c3BhcGlSZXR1cm47YS5tW2QuY2FsbElkXShkLnJldHVyblZhbHVlLGQuc3VjY2Vzcyl9Y2F0Y2goZSl7fX0sXy52KGEubCxcIm1lc3NhZ2VcIixhLm8pKX07dmFyIGRzPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGRzLE0pO3ZhciBmcz1mdW5jdGlvbihhKXtrZih0aGlzLGEsZXMsbnVsbCl9O0soZnMsTSk7dmFyIGVzPVsxLDJdO3ZhciBncz1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhncyxNKTt2YXIgaHM9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soaHMsTSk7dmFyIGlzPWZ1bmN0aW9uKGEpe18uUC5jYWxsKHRoaXMpO3RoaXMubD1hO3RoaXMubz10aGlzLmo9bnVsbDt0aGlzLm09e307dGhpcy5BPTA7dGhpcy5qfHwodGhpcy5sLmdvb2dsZWZjP3RoaXMuaj10aGlzLmw6dGhpcy5qPVFnKHRoaXMubCxcImdvb2dsZWZjUHJlc2VudFwiKSl9O18uSihpcyxfLlApO3ZhciBrcz1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGMpe2lmKGEuailpZihhLmo9PT1hLmwpe3ZhciBkPWEubC5nb29nbGVmY3x8e307ZC5fX2ZjaT1kLl9fZmNpfHxbXTtkLl9fZmNpLnB1c2goYixjKX1lbHNlIGpzKGEpLGQ9YS5BKyssYS5tW2RdPWMsYz17fSxhLmoucG9zdE1lc3NhZ2UoKGMuX19mY2lDYWxsPXtjb21tYW5kOmIsY2FsbElkOmR9LGMpLFwiKlwiKX0pfSxqcz1mdW5jdGlvbihhKXthLm98fChhLm89ZnVuY3Rpb24oYil7dHJ5e3ZhciBjPW5ldyBocyhKU09OLnBhcnNlKGIuZGF0YS5fX2ZjaVJldHVybikpOygwLGEubVtCKGMsMSldKShjKX1jYXRjaChkKXt9fSxfLnYoYS5sLFwibWVzc2FnZVwiLGEubykpfSxscz1mdW5jdGlvbihhLGIsYyxkKXtpZighYilyZXR1cm4gdC5Qcm9taXNlLnJlc29sdmUobnVsbCk7dmFyIGU9TyhiLGRzLDMpO2I9TyhiLGdzLDIpO3JldHVybiBlJiZiJiYxPT09QihiLDEpJiYyPT09QihlLDEpP2tzKGEsXCJnZXRNMjVDb25zZW50XCIpLnRoZW4oZnVuY3Rpb24oZil7dmFyIGc9TyhmLGZzLDQpO2lmKGcpe2lmKGY9ZCxjKXt2YXIgaD1CKGcsMSk7aCYmXy5BKGgsXCJpbmNsdWRlc1wiKS5jYWxsKGgsYykmJihmPSExKTsoZz1CKGcsMikpJiZfLkEoZyxcImluY2x1ZGVzXCIpLmNhbGwoZyxjKSYmKGY9ITApfX1lbHNlIGY9bnVsbDtyZXR1cm4gZn0pOnQuUHJvbWlzZS5yZXNvbHZlKG51bGwpfTt2YXIgbXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMCE9PWEudGNTdHJpbmcmJlwic3RyaW5nXCIhPT10eXBlb2YgYS50Y1N0cmluZ3x8dm9pZCAwIT09YS5nZHByQXBwbGllcyYmXCJib29sZWFuXCIhPT10eXBlb2YgYS5nZHByQXBwbGllc3x8dm9pZCAwIT09YS5saXN0ZW5lcklkJiZcIm51bWJlclwiIT09dHlwZW9mIGEubGlzdGVuZXJJZHx8dm9pZCAwIT09YS5hZGR0bENvbnNlbnQmJlwic3RyaW5nXCIhPT10eXBlb2YgYS5hZGR0bENvbnNlbnQ/MjphLmNtcFN0YXR1cyYmXCJlcnJvclwiIT09YS5jbXBTdGF0dXM/MDozfSxucz1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj81MDA6YjtfLlAuY2FsbCh0aGlzKTt0aGlzLmw9YTt0aGlzLmo9bnVsbDt0aGlzLm09e307dGhpcy5BPTA7dGhpcy5DPWI7dGhpcy5vPW51bGx9O18uSihucyxfLlApO25zLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7dGhpcy5tPXt9O3RoaXMubyYmKF8ucWIodGhpcy5sLFwibWVzc2FnZVwiLHRoaXMubyksZGVsZXRlIHRoaXMubyk7ZGVsZXRlIHRoaXMubTtkZWxldGUgdGhpcy5sO2RlbGV0ZSB0aGlzLmo7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyl9O3ZhciBwcz1mdW5jdGlvbihhKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5sLl9fdGNmYXBpfHxudWxsIT1vcyhhKX07bnMucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7cXModGhpcyxcImFkZEV2ZW50TGlzdGVuZXJcIixmdW5jdGlvbihiLGMpe2I9Yz9iOnt9O2IuaW50ZXJuYWxFcnJvclN0YXRlPW1zKGIpOzAhPT1iLmludGVybmFsRXJyb3JTdGF0ZSYmKGIudGNTdHJpbmc9XCJ0Y3VuYXZhaWxhYmxlXCIpO2EoYil9KX07bnMucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7YSYmYS5saXN0ZW5lcklkJiZxcyh0aGlzLFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLG51bGwsYS5saXN0ZW5lcklkKX07dmFyIHNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9e2ludGVybmFsRXJyb3JTdGF0ZTowfSxkPWpkKGZ1bmN0aW9uKCl7cmV0dXJuIGIoYyl9KSxlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnRjU3RyaW5nPVwidGN1bmF2YWlsYWJsZVwiO2MuaW50ZXJuYWxFcnJvclN0YXRlPTE7ZCgpfSxhLkMpO3FzKGEsXCJhZGRFdmVudExpc3RlbmVyXCIsZnVuY3Rpb24oZixnKXtlJiYoY2xlYXJUaW1lb3V0KGUpLGU9MCk7ZyYmKGM9Zik7Yy5pbnRlcm5hbEVycm9yU3RhdGU9bXMoYyk7MCE9Yy5pbnRlcm5hbEVycm9yU3RhdGUmJihjLnRjU3RyaW5nPVwidGN1bmF2YWlsYWJsZVwiKTtpZigwIT1jLmludGVybmFsRXJyb3JTdGF0ZXx8cnMoYykpcXMoYSxcInJlbW92ZUV2ZW50TGlzdGVuZXJcIixudWxsLGMubGlzdGVuZXJJZCksZCgpfSl9LHFzPWZ1bmN0aW9uKGEsYixjLGQpe2N8fChjPWZ1bmN0aW9uKCl7fSk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEubC5fX3RjZmFwaSlhPWEubC5fX3RjZmFwaSxhKGIsMixjLGQpO2Vsc2UgaWYob3MoYSkpe3RzKGEpO3ZhciBlPSsrYS5BO2EubVtlXT1jO2EuaiYmKGM9e30sYS5qLnBvc3RNZXNzYWdlKChjLl9fdGNmYXBpQ2FsbD17Y29tbWFuZDpiLHZlcnNpb246MixjYWxsSWQ6ZSxwYXJhbWV0ZXI6ZH0sYyksXCIqXCIpKX1lbHNlIGMoe30sITEpfSxvcz1mdW5jdGlvbihhKXtpZihhLmopcmV0dXJuIGEuajthLmo9UWcoYS5sLFwiX190Y2ZhcGlMb2NhdG9yXCIpO3JldHVybiBhLmp9LHRzPWZ1bmN0aW9uKGEpe2Eub3x8KGEubz1mdW5jdGlvbihiKXt0cnl7dmFyIGM7XCJzdHJpbmdcIj09PXR5cGVvZiBiLmRhdGE/Yz1KU09OLnBhcnNlKGIuZGF0YSk6Yz1iLmRhdGE7dmFyIGQ9Yy5fX3RjZmFwaVJldHVybjthLm1bZC5jYWxsSWRdKGQucmV0dXJuVmFsdWUsZC5zdWNjZXNzKX1jYXRjaChlKXt9fSxfLnYoYS5sLFwibWVzc2FnZVwiLGEubykpfSxycz1mdW5jdGlvbihhKXtyZXR1cm4hMT09PWEuZ2RwckFwcGxpZXN8fFwiZXJyb3JcIj09PWEuY21wU3RhdHVzfHxfLnkoMTkwMikmJjAhPT1hLmludGVybmFsRXJyb3JTdGF0ZXx8XCJsb2FkZWRcIj09PWEuY21wU3RhdHVzJiYoXCJ0Y2xvYWRlZFwiPT09YS5ldmVudFN0YXR1c3x8XCJ1c2VyYWN0aW9uY29tcGxldGVcIj09PWEuZXZlbnRTdGF0dXMpPyEwOiExfTt2YXIgdXM9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4gYTt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuLTE8Yy5pbmRleE9mKFwiPCFkb2N0eXBlXCIpfHwtMTxjLmluZGV4T2YoXCI8aHRtbFwiKT9hOlwiPGh0bWw+PGhlYWQ+XCIrKHZvaWQgMD09PWI/XCJcIjpiKStcIjwvaGVhZD48Ym9keT5cIithK1wiPC9ib2R5PjwvaHRtbD5cIn07dmFyIHZzPXZkKFwiZ3B0L3B1YmFkc19pbXBsX1wiKSx3cz12ZChcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L1wiKTt2YXIgeHM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMudj1FaChhKTt0aGlzLmw9RWgoYik7dGhpcy5vPWM7dGhpcy5qPUVoKGQpO3RoaXMubT1lO3RoaXMuQT1mfSx5cz1mdW5jdGlvbihhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe3dpbmRvd0Nvb3Jkc190OmEudi50b3Asd2luZG93Q29vcmRzX3I6YS52LnJpZ2h0LHdpbmRvd0Nvb3Jkc19iOmEudi5ib3R0b20sd2luZG93Q29vcmRzX2w6YS52LmxlZnQsZnJhbWVDb29yZHNfdDphLmwudG9wLGZyYW1lQ29vcmRzX3I6YS5sLnJpZ2h0LGZyYW1lQ29vcmRzX2I6YS5sLmJvdHRvbSxmcmFtZUNvb3Jkc19sOmEubC5sZWZ0LHN0eWxlWkluZGV4OmEubyxhbGxvd2VkRXhwYW5zaW9uX3Q6YS5qLnRvcCxhbGxvd2VkRXhwYW5zaW9uX3I6YS5qLnJpZ2h0LGFsbG93ZWRFeHBhbnNpb25fYjphLmouYm90dG9tLGFsbG93ZWRFeHBhbnNpb25fbDphLmoubGVmdCx4SW5WaWV3OmEubSx5SW5WaWV3OmEuQX0pfSx6cz1mdW5jdGlvbihhLGIpe3ZhciBjPXdpbmRvdyxkPWMuc2NyZWVuWHx8Yy5zY3JlZW5MZWZ0fHwwLGU9Yy5zY3JlZW5ZfHxjLnNjcmVlblRvcHx8MDtjPW5ldyBfLkRoKGUsZCsoYy5vdXRlcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fDApLGUrKGMub3V0ZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fDApLGQpO3ZhciBmPWlpKGEpO2Q9Xy5saShfLm1pLGEpO3ZhciBnPW5ldyBGaChmLngsZi55LGQud2lkdGgsZC5oZWlnaHQpO2Q9R2goZyk7ZT1TdHJpbmcoZmkoYSxcInpJbmRleFwiKSk7dmFyIGg9bmV3IF8uRGgoMCxJbmZpbml0eSxJbmZpbml0eSwwKTtmb3IodmFyIGs9V2YoYSksbD1rLmouYm9keSxtPWsuai5kb2N1bWVudEVsZW1lbnQsbj1hZyhrLmopO2E9aGkoYSk7KWlmKCEoXy51ZSYmMD09YS5jbGllbnRXaWR0aHx8eWUmJjA9PWEuY2xpZW50SGVpZ2h0JiZhPT1sKSYmYSE9bCYmYSE9bSYmXCJ2aXNpYmxlXCIhPWZpKGEsXCJvdmVyZmxvd1wiKSl7dmFyIHE9aWkoYSksdz1uZXcgXy55YShhLmNsaWVudExlZnQsYS5jbGllbnRUb3ApO3EueCs9dy54O3EueSs9dy55O2gudG9wPU1hdGgubWF4KGgudG9wLHEueSk7aC5yaWdodD1NYXRoLm1pbihoLnJpZ2h0LHEueCthLmNsaWVudFdpZHRoKTtoLmJvdHRvbT1NYXRoLm1pbihoLmJvdHRvbSxxLnkrYS5jbGllbnRIZWlnaHQpO2gubGVmdD1NYXRoLm1heChoLmxlZnQscS54KX1hPW4uc2Nyb2xsTGVmdDtuPW4uc2Nyb2xsVG9wO2gubGVmdD1NYXRoLm1heChoLmxlZnQsYSk7aC50b3A9TWF0aC5tYXgoaC50b3Asbik7az1fLiRmKGJnKGsuail8fHdpbmRvdyk7aC5yaWdodD1NYXRoLm1pbihoLnJpZ2h0LGEray53aWR0aCk7aC5ib3R0b209TWF0aC5taW4oaC5ib3R0b20sbitrLmhlaWdodCk7aD0oaD0wPD1oLnRvcCYmMDw9aC5sZWZ0JiZoLmJvdHRvbT5oLnRvcCYmaC5yaWdodD5oLmxlZnQ/aDpudWxsKT9uZXcgRmgoaC5sZWZ0LGgudG9wLGgucmlnaHQtaC5sZWZ0LGguYm90dG9tLWgudG9wKTpudWxsO2I/KGs9Yi5ib3VuZGluZ0NsaWVudFJlY3QsYj1uZXcgRmgoZi54LWsubGVmdCxmLnktay50b3AsYi5yb290Qm91bmRzLndpZHRoLGIucm9vdEJvdW5kcy5oZWlnaHQpKTpiPWg7az1oP0hoKGcsaCk6bnVsbDtoPWY9MDtrJiYhKG5ldyBfLlRmKGsud2lkdGgsay5oZWlnaHQpKS5pc0VtcHR5KCkmJihmPWsud2lkdGgvZy53aWR0aCxoPWsuaGVpZ2h0L2cuaGVpZ2h0KTtrPW5ldyBfLkRoKDAsMCwwLDApO2lmKGE9YikoZz1IaChnLGIpKT8obj1HaChiKSxsPUdoKGcpLGE9bC5yaWdodCE9bi5sZWZ0JiZuLnJpZ2h0IT1sLmxlZnQsbj1sLmJvdHRvbSE9bi50b3AmJm4uYm90dG9tIT1sLnRvcCxhPSgwIT1nLndpZHRofHxhKSYmKDAhPWcuaGVpZ2h0fHxuKSk6YT0hMTthJiYoaz1uZXcgXy5EaChNYXRoLm1heChkLnRvcC1iLnRvcCwwKSxNYXRoLm1heChiLmxlZnQrYi53aWR0aC1kLnJpZ2h0LDApLE1hdGgubWF4KGIudG9wK2IuaGVpZ2h0LWQuYm90dG9tLDApLE1hdGgubWF4KGQubGVmdC1iLmxlZnQsMCkpKTtyZXR1cm4gbmV3IHhzKGMsZCxlLGssZixoKX07dmFyIEFzPWZ1bmN0aW9uKGEpe3RoaXMubT1hO3RoaXMubz1udWxsO3RoaXMuSD10aGlzLnN0YXR1cz0wO3RoaXMubD1udWxsO3RoaXMubWE9XCJzZmNoYW5uZWxcIithfTt2YXIgQnM9ITEsQ3M9XCJcIixEcz1mdW5jdGlvbihhKXthPWEubWF0Y2goL1tcXGRdKy9nKTtpZighYSlyZXR1cm5cIlwiO2EubGVuZ3RoPTM7cmV0dXJuIGEuam9pbihcIi5cIil9OyhmdW5jdGlvbigpe2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IucGx1Z2lucy5sZW5ndGgpe3ZhciBhPW5hdmlnYXRvci5wbHVnaW5zW1wiU2hvY2t3YXZlIEZsYXNoXCJdO2lmKGEmJihCcz0hMCxhLmRlc2NyaXB0aW9uKSl7Q3M9RHMoYS5kZXNjcmlwdGlvbik7cmV0dXJufWlmKG5hdmlnYXRvci5wbHVnaW5zW1wiU2hvY2t3YXZlIEZsYXNoIDIuMFwiXSl7QnM9ITA7Q3M9XCIyLjAuMC4xMVwiO3JldHVybn19aWYobmF2aWdhdG9yLm1pbWVUeXBlcyYmbmF2aWdhdG9yLm1pbWVUeXBlcy5sZW5ndGgmJihhPW5hdmlnYXRvci5taW1lVHlwZXNbXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiXSxCcz0hKCFhfHwhYS5lbmFibGVkUGx1Z2luKSkpe0NzPURzKGEuZW5hYmxlZFBsdWdpbi5kZXNjcmlwdGlvbik7cmV0dXJufWlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBBY3RpdmVYT2JqZWN0KXt0cnl7dmFyIGI9bmV3IEFjdGl2ZVhPYmplY3QoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC43XCIpO0JzPSEwO0NzPURzKGIuR2V0VmFyaWFibGUoXCIkdmVyc2lvblwiKSk7cmV0dXJufWNhdGNoKGMpe310cnl7Yj1uZXcgQWN0aXZlWE9iamVjdChcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjZcIik7QnM9ITA7Q3M9XCI2LjAuMjFcIjtyZXR1cm59Y2F0Y2goYyl7fXRyeXtiPW5ldyBBY3RpdmVYT2JqZWN0KFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2hcIiksQnM9ITAsQ3M9RHMoYi5HZXRWYXJpYWJsZShcIiR2ZXJzaW9uXCIpKX1jYXRjaChjKXt9fX0pKCk7dmFyIEVzPUJzLEZzPUNzO3ZhciBHcz1mdW5jdGlvbihhKXt0aGlzLmo9YX07dmFyIEhzPWZ1bmN0aW9uKGEsYil7dGhpcy53Yj1hO3RoaXMueGI9Yjt0aGlzLmw9dGhpcy5qPSExfTt2YXIgSXM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe2s9dm9pZCAwPT09az9bXTprO3RoaXMubT1hO3RoaXMubD1iO3RoaXMudj1jO3RoaXMucGVybWlzc2lvbnM9ZDt0aGlzLm89ZTt0aGlzLkE9Zjt0aGlzLm5iPWc7dGhpcy5ob3N0cGFnZUxpYnJhcnlUb2tlbnM9azt0aGlzLmo9XCJcIjt0aGlzLmFiPWh9O3ZhciBKcz1mdW5jdGlvbihhLGIpe3RoaXMubD1hO3RoaXMubz1ifTtKcy5wcm90b3R5cGUuaj1mdW5jdGlvbihhKXt0aGlzLm8mJmEmJihhLnNlbnRpbmVsPXRoaXMubyk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpfTt2YXIgS3M9ZnVuY3Rpb24oYSxiLGMpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWM/XCJcIjpjKTt0aGlzLnZlcnNpb249Yn07Xy5KKEtzLEpzKTtLcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsdmVyc2lvbjp0aGlzLnZlcnNpb259KX07dmFyIExzPWZ1bmN0aW9uKGEsYixjLGQpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWQ/XCJcIjpkKTt0aGlzLm09Yjt0aGlzLnY9Y307Xy5KKExzLEpzKTtMcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsaW5pdGlhbFdpZHRoOnRoaXMubSxpbml0aWFsSGVpZ2h0OnRoaXMudn0pfTt2YXIgTXM9ZnVuY3Rpb24oYSxiLGMpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWM/XCJcIjpjKTt0aGlzLnY9Yn07Xy5KKE1zLEpzKTtNcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsZGVzY3JpcHRpb246dGhpcy52fSl9O3ZhciBOcz1mdW5jdGlvbihhLGIsYyxkKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1kP1wiXCI6ZCk7dGhpcy52PWI7dGhpcy5wdXNoPWN9O18uSihOcyxKcyk7TnMucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sLGV4cGFuZF90OnRoaXMudi50b3AsZXhwYW5kX3I6dGhpcy52LnJpZ2h0LGV4cGFuZF9iOnRoaXMudi5ib3R0b20sZXhwYW5kX2w6dGhpcy52LmxlZnQscHVzaDp0aGlzLnB1c2h9KX07dmFyIE9zPWZ1bmN0aW9uKGEsYil7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yj9cIlwiOmIpfTtfLkooT3MsSnMpO09zLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubH0pfTt2YXIgUHM9ZnVuY3Rpb24oYSxiLGMpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWM/XCJcIjpjKTt0aGlzLm09Yn07Xy5KKFBzLEpzKTtQcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXt1aWQ6dGhpcy5sLG5ld0dlb21ldHJ5OnlzKHRoaXMubSl9O3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMsYSl9O3ZhciBRcz1mdW5jdGlvbihhLGIsYyxkLGUsZil7UHMuY2FsbCh0aGlzLGEsYyx2b2lkIDA9PT1mP1wiXCI6Zik7dGhpcy5zdWNjZXNzPWI7dGhpcy52PWQ7dGhpcy5wdXNoPWV9O18uSihRcyxQcyk7UXMucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT17dWlkOnRoaXMubCxzdWNjZXNzOnRoaXMuc3VjY2VzcyxuZXdHZW9tZXRyeTp5cyh0aGlzLm0pLGV4cGFuZF90OnRoaXMudi50b3AsZXhwYW5kX3I6dGhpcy52LnJpZ2h0LGV4cGFuZF9iOnRoaXMudi5ib3R0b20sZXhwYW5kX2w6dGhpcy52LmxlZnQscHVzaDp0aGlzLnB1c2h9O3RoaXMubyYmKGEuc2VudGluZWw9dGhpcy5vKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSl9O3ZhciBScz1mdW5jdGlvbihhLGIsYyxkKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1kP1wiXCI6ZCk7dGhpcy53aWR0aD1iO3RoaXMuaGVpZ2h0PWN9O18uSihScyxKcyk7UnMucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sLHdpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSl9O3ZhciBTcz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWM7ZiYmKGY9XCI/XCIrZik7Yj0odm9pZCAwPT09ZT9cIi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiOmUpKyhcIi9zYWZlZnJhbWUvXCIrYitcIi9odG1sL2NvbnRhaW5lci5odG1sXCIrZik7ZT1hO2ZvcihmPTA7ZSE9ZS5wYXJlbnQ7KWYrKyxlPWUucGFyZW50OyhlPWYpJiYoYis9KGM/XCImXCI6XCI/XCIpK1wibj1cIitlKTsoYz1kKXx8KGM9SmcoYSwhMSkpO3JldHVybihjP1wiaHR0cHM6XCI6XCJodHRwOlwiKStifTt2YXIgVHM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXdpbmRvdztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1fLk9pKCksZj0zO3RyeXt2YXIgZz1iLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1jYXRjaChrKXtmPTEzO2lmKGMpcmV0dXJuIGMoYSxrKSxnO3Rocm93IGs7fWZpbmFsbHl7aWYoZC5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcmJmUpe3ZhciBoPV8uT2koKXx8MDtlPXtsYWJlbDphLnRvU3RyaW5nKCksdmFsdWU6ZSxkdXJhdGlvbjpoLWUsdHlwZTpmfTtmPWQuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1kLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdOzIwNDg+Zi5sZW5ndGgmJmYucHVzaChlKX19cmV0dXJuIGd9fTt2YXIgWXM9ZnVuY3Rpb24oYSl7QXMuY2FsbCh0aGlzLGEudW5pcXVlSWQpO3ZhciBiPXRoaXM7dGhpcy5EPWEuaGQ7dGhpcy5HPTE9PWEuc2l6ZTt0aGlzLlY9bmV3IEhzKGEucGVybWlzc2lvbnMud2ImJiF0aGlzLkcsYS5wZXJtaXNzaW9ucy54YiYmIXRoaXMuRyk7dGhpcy5BPWEuVGI7dGhpcy5rYT1hLmhvc3RwYWdlTGlicmFyeVRva2Vuc3x8W107dmFyIGM9d2luZG93LmxvY2F0aW9uO3RoaXMuZmE9XCJmaWxlOlwiPT1jLnByb3RvY29sP1wiKlwiOmMucHJvdG9jb2wrXCIvL1wiK2MuaG9zdDt0aGlzLmdhPSEhYS5uYjtjPSExPT09YS5KYz9cImh0dHBzOlwiOndpbmRvdy5sb2NhdGlvbi5wcm90b2NvbDt0aGlzLlQ9YS5FYz9cIi8vXCIrYS5FYytcIi5zYWZlZnJhbWUuZ29vZ2xlc3luZGljYXRpb24uY29tXCI6XCIvL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb21cIjt0aGlzLmVhPVphKGEuYWIpP1wiaHR0cHM6Ly9zZWN1cmVmcmFtZS5kb3VibGVjbGljay5uZXRcIjpjK3RoaXMuVDt0aGlzLlc9ISFhLlNjO3RoaXMuYmE9VXMoYSk7dGhpcy52PW5ldyBQcjtWcyh0aGlzLGEuVGIsYS5zaXplKTt0aGlzLm89dGhpcy5hYT16cyhhLlRiKTt0aGlzLk09YS50ZHx8XCIxLTAtMzdcIjt0aGlzLmRhPWEuUGN8fFwiXCI7dGhpcy5YPXZvaWQgMD09PWEuYWI/bnVsbDphLmFiO1dzKHRoaXMsYSk7dGhpcy5QPW51bGw7dGhpcy5JPVRzKDQxMixmdW5jdGlvbigpe3JldHVybiBYcyhiKX0sYS5yYSk7dGhpcy5LPS0xO3RoaXMuQz0wO3RoaXMuVT1udWxsOyFhLkNlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJ8fEFlfHx6ZXx8KHRoaXMuVT1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoVHMoNDE0LGZ1bmN0aW9uKGUpe2IuUD1lW2UubGVuZ3RoLTFdO1hzKGIpfSxhLnJhKSkpO3RoaXMubD1uZXcgdnIodGhpcy5tYSx0aGlzLmouY29udGVudFdpbmRvdyx0aGlzLmVhLCExKTt4cih0aGlzLmwsXCJpbml0X2RvbmVcIiwoMCxfLlJjKSh0aGlzLk1iLHRoaXMpKTt4cih0aGlzLmwsXCJyZWdpc3Rlcl9kb25lXCIsKDAsXy5SYykodGhpcy5XYix0aGlzKSk7eHIodGhpcy5sLFwicmVwb3J0X2Vycm9yXCIsKDAsXy5SYykodGhpcy5ZYix0aGlzKSk7eHIodGhpcy5sLFwiZXhwYW5kX3JlcXVlc3RcIiwoMCxfLlJjKSh0aGlzLktiLHRoaXMpKTt4cih0aGlzLmwsXCJjb2xsYXBzZV9yZXF1ZXN0XCIsKDAsXy5SYykodGhpcy5JYix0aGlzKSk7eHIodGhpcy5sLFwiY3JlYXRpdmVfZ2VvbWV0cnlfdXBkYXRlXCIsKDAsXy5SYykodGhpcy5PLHRoaXMpKTt0aGlzLmwuY29ubmVjdCgoMCxfLlJjKSh0aGlzLlFiLHRoaXMpKTt2YXIgZD1Ucyg0MTUsZnVuY3Rpb24oKXtiLmomJihiLmoubmFtZT1cIlwiLGEueWMmJmEueWMoKSxfLnFiKGIuaixcImxvYWRcIixkKSl9LGEucmEpO18udih0aGlzLmosXCJsb2FkXCIsZCk7dGhpcy5NYj1Ucyg0MTMsdGhpcy5NYixhLnJhKTt0aGlzLldiPVRzKDQxNyx0aGlzLldiLGEucmEpO3RoaXMuWWI9VHMoNDE5LHRoaXMuWWIsYS5yYSk7dGhpcy5LYj1Ucyg0MTEsdGhpcy5LYixhLnJhKTt0aGlzLkliPVRzKDQwOSx0aGlzLkliLGEucmEpO3RoaXMuTz1Ucyg0MTAsdGhpcy5PLGEucmEpO3RoaXMuUWI9VHMoNDE2LHRoaXMuUWIsYS5yYSl9O18uSihZcyxBcyk7dmFyIFZzPWZ1bmN0aW9uKGEsYixjKXthLkc/KGIuc3R5bGUud2lkdGg9Xy5raShcIjEwMCVcIiwhMCksYi5zdHlsZS5oZWlnaHQ9Xy5raShcImF1dG9cIiwhMCkpOihiLnN0eWxlLndpZHRoPV8ua2koYy53aWR0aCwhMCksYi5zdHlsZS5oZWlnaHQ9Xy5raShjLmhlaWdodCwhMCkpfSxXcz1mdW5jdGlvbihhLGIpe3ZhciBjPVdmKGEuQSksZD1iLmNvbnRlbnQ7ZD1hLk0rXCI7XCIrZC5sZW5ndGgrXCI7XCIrZDt2YXIgZT1uZXcgSXMoYS5tLGEuZmEsYS5hYSxhLlYsbmV3IEdzKHtzaGFyZWQ6e3NmX3ZlcjphLk0sY2tfb246bmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQ/MTowLGZsYXNoX3ZlcjpFcz9GczpcIjBcIn19KSxhLkcsYS5nYSxhLlgsYS5rYSk7dmFyIGY9e307Zi51aWQ9ZS5tO2YuaG9zdFBlZXJOYW1lPWUubDtmLmluaXRpYWxHZW9tZXRyeT15cyhlLnYpO3ZhciBnPWUucGVybWlzc2lvbnM7Zz1KU09OLnN0cmluZ2lmeSh7ZXhwYW5kQnlPdmVybGF5Omcud2IsZXhwYW5kQnlQdXNoOmcueGIscmVhZENvb2tpZTpnLmosd3JpdGVDb29raWU6Zy5sfSk7Zj0oZi5wZXJtaXNzaW9ucz1nLGYubWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkoZS5vLmopLGYucmVwb3J0Q3JlYXRpdmVHZW9tZXRyeT1lLkEsZi5pc0RpZmZlcmVudFNvdXJjZVdpbmRvdz1lLm5iLGYuZ29vZ19zYWZlZnJhbWVfaGx0PXRuKGUuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zKSxmLmVuY3J5cHRpb25Nb2RlPWUuYWIsZik7ZS5qJiYoZi5zZW50aW5lbD1lLmopO2U9SlNPTi5zdHJpbmdpZnkoZik7ZT1kK2U7ZD0hMT09PWIuSmM7aWYoYS5XJiZiLnNpemUgaW5zdGFuY2VvZiBfLlRmKXtmPVphKGIuYWIpP1wiaHR0cHM6Ly9zZWN1cmVmcmFtZS5kb3VibGVjbGljay5uZXRcIjpiZyhjLmopLmxvY2F0aW9uLnByb3RvY29sK2EuVDtnPWIudGM7dmFyIGg9Yi5zaXplLGs9YmcoV2YoYS5BKS5qKTtacXx8dWcoay5kb2N1bWVudCwkcSk7WnErKztrLmdvb2dsZV9lYXNfcXVldWU9ay5nb29nbGVfZWFzX3F1ZXVlfHxbXTtrLmdvb2dsZV9lYXNfcXVldWUucHVzaCh7YTpnLGI6ZixjOmgud2lkdGgsZDpoLmhlaWdodCxlOlwic2YtZ2RuLWV4cC1cIitacSxmOnZvaWQgMCxnOnZvaWQgMCxoOnZvaWQgMCxpOnZvaWQgMH0pfWc9Yi5zaXplO3ZhciBsPWIud2EsbT1iLmFkfHxcIlwiO2Y9Zy53aWR0aDtoPWcuaGVpZ2h0O2c9XCJcIjthLkcmJihoPWY9MCxnPVwibWluLXdpZHRoOjEwMCVcIik7az17fTtrLmlkPWIudGM7ay50aXRsZT1tO2submFtZT1lO2I9YmcoYy5qKTtkPVphKGEuWCk/XCJodHRwczovL3NlY3VyZWZyYW1lLmRvdWJsZWNsaWNrLm5ldC9jb250YWluZXIuaHRtbD9lY3M9XCIrbDpTcyhiLGEuTSxhLmRhLGQsYS5UKTtlPVtdO2EuVyYmKGI9S2coYi5sb2NhdGlvbi5ocmVmKSxlLnB1c2goWzA8Yi5sZW5ndGg/XCJnb29nbGVfZGVidWdcIisoYj9cIj1cIitiOlwiXCIpK1wiJlwiOlwiXCIsXCJ4cGM9XCIsXCJzZi1nZG4tZXhwLVwiK2EubSxcIiZwPVwiLGVuY29kZVVSSUNvbXBvbmVudChfLnIuZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpLFwiLy9cIixlbmNvZGVVUklDb21wb25lbnQoXy5yLmRvY3VtZW50LmxvY2F0aW9uLmhvc3QpXS5qb2luKFwiXCIpKSk7ZS5sZW5ndGgmJihkKz1cIiNcIitlLmpvaW4oXCImXCIpKTtiPShrLnNyYz1kLGsuc2Nyb2xsaW5nPVwibm9cIixrLm1hcmdpbldpZHRoPVwiMFwiLGsubWFyZ2luSGVpZ2h0PVwiMFwiLGsud2lkdGg9U3RyaW5nKGYpLGsuaGVpZ2h0PVN0cmluZyhoKSxrW1wiZGF0YS1pcy1zYWZlZnJhbWVcIl09XCJ0cnVlXCIsayk7bnVsbCE9PWEuYmEmJihiLnNhbmRib3g9YS5iYSk7ZD1nO2U9e307ZD0oZS5mcmFtZWJvcmRlcj0wLGUuYWxsb3dUcmFuc3BhcmVuY3k9XCJ0cnVlXCIsZS5zdHlsZT1cImJvcmRlcjowO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtcIisodm9pZCAwPT09ZD9cIlwiOmQpLGUuc3JjPVwiYWJvdXQ6YmxhbmtcIixlKTtiJiZwZChkLGIpO2M9Yy5sKFwiSUZSQU1FXCIsZCk7YS5BLmFwcGVuZENoaWxkKGMpO2Euaj1jfTtfLnA9WXMucHJvdG90eXBlO18ucC5RYj1mdW5jdGlvbigpe3RoaXMuVSYmdGhpcy5qP3RoaXMuVS5vYnNlcnZlKHRoaXMuaik6KF8udih3aW5kb3csXCJyZXNpemVcIix0aGlzLkkpLF8udih3aW5kb3csXCJzY3JvbGxcIix0aGlzLkkpKX07Xy5wLk1iPWZ1bmN0aW9uKGEpe3RyeXtpZigwIT10aGlzLnN0YXR1cyl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBhbHJlYWR5IGluaXRpYWxpemVkXCIpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJzdHJpbmdcIiE9PXR5cGVvZiBiLnZlcnNpb24pdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO3ZhciBjPW5ldyBLcyhiLnVpZCxiLnZlcnNpb24sYi5zZW50aW5lbCk7aWYodGhpcy5tIT1jLmx8fHRoaXMuTSE9Yy52ZXJzaW9uKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTt0aGlzLnN0YXR1cz0xfWNhdGNoKGQpe3RoaXMuRC5lcnJvcihcIkludmFsaWQgSU5JVElBTElaRV9ET05FIG1lc3NhZ2UuIFJlYXNvbjogXCIrZC5tZXNzYWdlKX19O18ucC5XYj1mdW5jdGlvbihhKXt0cnl7aWYoMSE9dGhpcy5zdGF0dXMpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgbm90IGluaXRpYWxpemVkXCIpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmluaXRpYWxXaWR0aHx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmluaXRpYWxIZWlnaHQpdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO2lmKHRoaXMubSE9KG5ldyBMcyhiLnVpZCxiLmluaXRpYWxXaWR0aCxiLmluaXRpYWxIZWlnaHQsYi5zZW50aW5lbCkpLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO3RoaXMuc3RhdHVzPTJ9Y2F0Y2goYyl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBSRUdJU1RFUl9ET05FIG1lc3NhZ2UuIFJlYXNvbjogXCIrYy5tZXNzYWdlKX19O18ucC5ZYj1mdW5jdGlvbihhKXt0cnl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcInN0cmluZ1wiIT09dHlwZW9mIGIuZGVzY3JpcHRpb24pdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO3ZhciBjPW5ldyBNcyhiLnVpZCxiLmRlc2NyaXB0aW9uLGIuc2VudGluZWwpO2lmKHRoaXMubSE9Yy5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTt0aGlzLkQuaW5mbyhcIkV4dCByZXBvcnRlZCBhbiBlcnJvci4gRGVzY3JpcHRpb246IFwiK2Mudil9Y2F0Y2goZCl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBSRVBPUlRfRVJST1IgbWVzc2FnZS4gUmVhc29uOiBcIitkLm1lc3NhZ2UpfX07Xy5wLktiPWZ1bmN0aW9uKGEpe3RyeXtpZigyIT10aGlzLnN0YXR1cyl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBpcyBub3QgcmVnaXN0ZXJlZFwiKTtpZigwIT10aGlzLkgpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgaXMgbm90IGNvbGxhcHNlZFwiKTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCl8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5leHBhbmRfdHx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmV4cGFuZF9yfHxcIm51bWJlclwiIT09dHlwZW9mIGIuZXhwYW5kX2J8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5leHBhbmRfbHx8XCJib29sZWFuXCIhPT10eXBlb2YgYi5wdXNoKXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIEpTT04gbWVzc2FnZVwiKTt2YXIgYz1uZXcgTnMoYi51aWQsbmV3IF8uRGgoYi5leHBhbmRfdCxiLmV4cGFuZF9yLGIuZXhwYW5kX2IsYi5leHBhbmRfbCksYi5wdXNoLGIuc2VudGluZWwpO2lmKHRoaXMubSE9Yy5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTtpZighKDA8PWMudi50b3AmJjA8PWMudi5sZWZ0JiYwPD1jLnYuYm90dG9tJiYwPD1jLnYucmlnaHQpKXRocm93IEVycm9yKFwiSW52YWxpZCBleHBhbnNpb24gYW1vdW50c1wiKTt2YXIgZDtpZihkPWMucHVzaCYmdGhpcy5WLnhifHwhYy5wdXNoJiZ0aGlzLlYud2Ipe3ZhciBlPWMudixmPWMucHVzaCxnPXRoaXMubz16cyh0aGlzLmopO2lmKGUudG9wPD1nLmoudG9wJiZlLnJpZ2h0PD1nLmoucmlnaHQmJmUuYm90dG9tPD1nLmouYm90dG9tJiZlLmxlZnQ8PWcuai5sZWZ0KXtpZighZilmb3IodmFyIGg9dGhpcy5qLnBhcmVudE5vZGU7aCYmaC5zdHlsZTtoPWgucGFyZW50Tm9kZSlScih0aGlzLnYsaCxcIm92ZXJmbG93WFwiLFwidmlzaWJsZVwiLFwiaW1wb3J0YW50XCIpLFJyKHRoaXMudixoLFwib3ZlcmZsb3dZXCIsXCJ2aXNpYmxlXCIsXCJpbXBvcnRhbnRcIik7dmFyIGs9dGhpcy5vLmwsbD10aGlzLm8ubCxtPUdoKG5ldyBGaCgwLDAsay5yaWdodC1rLmxlZnQsbC5ib3R0b20tbC50b3ApKTtfLk1jKGUpPyhtLnRvcC09ZS50b3AsbS5yaWdodCs9ZS5yaWdodCxtLmJvdHRvbSs9ZS5ib3R0b20sbS5sZWZ0LT1lLmxlZnQpOihtLnRvcC09ZSxtLnJpZ2h0Kz1OdW1iZXIodm9pZCAwKSxtLmJvdHRvbSs9TnVtYmVyKHZvaWQgMCksbS5sZWZ0LT1OdW1iZXIodm9pZCAwKSk7UnIodGhpcy52LHRoaXMuQSxcInBvc2l0aW9uXCIsXCJyZWxhdGl2ZVwiKTtScih0aGlzLnYsdGhpcy5qLFwicG9zaXRpb25cIixcImFic29sdXRlXCIpO2Y/KFNyKHRoaXMudix0aGlzLkEsXCJ3aWR0aFwiLG0ucmlnaHQtbS5sZWZ0KSxTcih0aGlzLnYsdGhpcy5BLFwiaGVpZ2h0XCIsbS5ib3R0b20tbS50b3ApKTpScih0aGlzLnYsdGhpcy5qLFwiekluZGV4XCIsXCIxMDAwMFwiKTtTcih0aGlzLnYsdGhpcy5qLFwid2lkdGhcIixtLnJpZ2h0LW0ubGVmdCk7U3IodGhpcy52LHRoaXMuaixcImhlaWdodFwiLG0uYm90dG9tLW0udG9wKTtTcih0aGlzLnYsdGhpcy5qLFwibGVmdFwiLG0ubGVmdCk7U3IodGhpcy52LHRoaXMuaixcInRvcFwiLG0udG9wKTt0aGlzLkg9Mjt0aGlzLm89enModGhpcy5qKTtkPSEwfWVsc2UgZD0hMX1hPWQ7eXIodGhpcy5sLFwiZXhwYW5kX3Jlc3BvbnNlXCIsKG5ldyBRcyh0aGlzLm0sYSx0aGlzLm8sYy52LGMucHVzaCkpLmooKSk7aWYoIWEpdGhyb3cgRXJyb3IoXCJWaWV3cG9ydCBvciBkb2N1bWVudCBib2R5IG5vdCBsYXJnZSBlbm91Z2ggdG8gZXhwYW5kIGludG8uXCIpO31jYXRjaChuKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIEVYUEFORF9SRVFVRVNUIG1lc3NhZ2UuIFJlYXNvbjogXCIrbi5tZXNzYWdlKX19O18ucC5JYj1mdW5jdGlvbihhKXt0cnl7aWYoMiE9dGhpcy5zdGF0dXMpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgaXMgbm90IHJlZ2lzdGVyZWRcIik7aWYoMiE9dGhpcy5IKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGlzIG5vdCBleHBhbmRlZFwiKTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCkpdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO2lmKHRoaXMubSE9KG5ldyBPcyhiLnVpZCxiLnNlbnRpbmVsKSkubCl0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7VHIodGhpcy52KTt0aGlzLkg9MDt0aGlzLmomJih0aGlzLm89enModGhpcy5qKSk7eXIodGhpcy5sLFwiY29sbGFwc2VfcmVzcG9uc2VcIiwobmV3IFBzKHRoaXMubSx0aGlzLm8pKS5qKCkpfWNhdGNoKGMpe3RoaXMuRC5lcnJvcihcIkludmFsaWQgQ09MTEFQU0VfUkVRVUVTVCBtZXNzYWdlLiBSZWFzb246IFwiK2MubWVzc2FnZSl9fTt2YXIgWHM9ZnVuY3Rpb24oYSl7aWYoMT09YS5zdGF0dXN8fDI9PWEuc3RhdHVzKXN3aXRjaChhLkMpe2Nhc2UgMDpacyhhKTthLks9d2luZG93LnNldFRpbWVvdXQoKDAsXy5SYykoYS5ZLGEpLDFFMyk7YS5DPTE7YnJlYWs7Y2FzZSAxOmEuQz0yO2JyZWFrO2Nhc2UgMjphLkM9Mn19O1lzLnByb3RvdHlwZS5PPWZ1bmN0aW9uKGEpe3RyeXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCl8fFwibnVtYmVyXCIhPT10eXBlb2YgYi53aWR0aHx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmhlaWdodHx8Yi5zZW50aW5lbCYmXCJzdHJpbmdcIiE9PXR5cGVvZiBiLnNlbnRpbmVsKXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIEpTT04gbWVzc2FnZVwiKTt2YXIgYz1uZXcgUnMoYi51aWQsYi53aWR0aCxiLmhlaWdodCxiLnNlbnRpbmVsKTtpZih0aGlzLm0hPWMubCl0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7dmFyIGQ9U3RyaW5nKGMuaGVpZ2h0KTt0aGlzLkc/ZCE9dGhpcy5qLmhlaWdodCYmKHRoaXMuai5oZWlnaHQ9ZCxYcyh0aGlzKSk6dGhpcy5ELmVycm9yKFwiR290IENyZWF0aXZlR2VvbWV0cnlVcGRhdGUgbWVzc2FnZSBpbiBub24tZmx1aWRjb250YWluZXIuIFRoZSBjb250YWluZXIgaXMgbm90IHJlc2l6ZWQuXCIpfWNhdGNoKGUpe3RoaXMuRC5lcnJvcihcIkludmFsaWQgQ1JFQVRJVkVfR0VPTUVUUllfVVBEQVRFIG1lc3NhZ2UuIFJlYXNvbjogXCIrZS5tZXNzYWdlKX19O1lzLnByb3RvdHlwZS5ZPWZ1bmN0aW9uKCl7aWYoMT09dGhpcy5zdGF0dXN8fDI9PXRoaXMuc3RhdHVzKXN3aXRjaCh0aGlzLkMpe2Nhc2UgMTp0aGlzLkM9MDticmVhaztjYXNlIDI6WnModGhpcyksdGhpcy5LPXdpbmRvdy5zZXRUaW1lb3V0KCgwLF8uUmMpKHRoaXMuWSx0aGlzKSwxRTMpLHRoaXMuQz0xfX07dmFyIFpzPWZ1bmN0aW9uKGEpe2Eubz16cyhhLmosYS5QKTthLlA9bnVsbDt5cihhLmwsXCJnZW9tZXRyeV91cGRhdGVcIiwobmV3IFBzKGEubSxhLm8pKS5qKCkpfSxVcz1mdW5jdGlvbihhKXt2YXIgYj1udWxsO2EuRmMmJihiPWEuRmMpO3JldHVybiBudWxsPT1iP251bGw6Yi5qb2luKFwiIFwiKX0sJHM9W1wiYWxsb3ctbW9kYWxzXCIsXCJhbGxvdy1vcmllbnRhdGlvbi1sb2NrXCIsXCJhbGxvdy1wcmVzZW50YXRpb25cIl0sYXQ9W1wiYWxsb3ctdG9wLW5hdmlnYXRpb25cIl0sYnQ9W1wiYWxsb3ctc2FtZS1vcmlnaW5cIl0sY3Q9TmcoXy5GYigkcykuY29uY2F0KF8uRmIoYXQpKSksZHQ9TmcoXy5GYigkcykuY29uY2F0KF8uRmIoYnQpKSksZXQ9TmcoXy5GYigkcykuY29uY2F0KF8uRmIoYXQpLF8uRmIoYnQpKSksZnQ9TmcoXy5GYigkcykuY29uY2F0KF8uRmIoYXQpLFtcImFsbG93LXBvaW50ZXItbG9ja1wiXSkpO3ZhciBhYj1mdW5jdGlvbihhLGIsYyxkKXt0cnl7dmFyIGU9bmV3IGZxKGIsYyk7ZS5vYj1kO2UuTD1hO0xhKG5ldyBlcShlKSl9Y2F0Y2goZil7fX07dmFyIGd0PWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGd0LE0pO2d0LnByb3RvdHlwZS5nZXRUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcyw0KX07dmFyIGh0PWZ1bmN0aW9uKCl7fTt2YXIgaXQ9Wy4wNSwuMSwuMiwuNV0sanQ9WzAsLjUsMV0sa3Q9ZnVuY3Rpb24oYSl7YT10ZyhhKTtpZighYSlyZXR1cm4tMTt0cnl7dmFyIGI9dmkoYS5kb2N1bWVudCk7dmFyIGM9bmV3IF8uVGYoYi5jbGllbnRXaWR0aCxiLmNsaWVudEhlaWdodCl9Y2F0Y2goZCl7Yz1uZXcgXy5UZigtMTIyNDU5MzMsLTEyMjQ1OTMzKX1yZXR1cm4tMTIyNDU5MzM9PWMud2lkdGh8fC0xMjI0NTkzMz09Yy5oZWlnaHQ/LTE6Yy53aWR0aCpjLmhlaWdodH0sbHQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD5hP1tdOl8uUmEoaXQsZnVuY3Rpb24oYyl7cmV0dXJuIE1hdGgubWluKGEvYipjLDEpfSl9LG90PWZ1bmN0aW9uKGEpe3RoaXMuaj1hLkw7dGhpcy5sPWEua2I7dGhpcy5EPWEuVmE7dGhpcy5vPW51bGw7dGhpcy5tPWEucmE7dGhpcy52PW10KHRoaXMpO3RoaXMuVT1hLnhkfHwhMTt0aGlzLkM9YS56ZXx8ITE7dGhpcy5BPW51bGw7dGhpcy5DJiZudCh0aGlzKX07b3QucHJvdG90eXBlLmdldFNsb3RJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O3ZhciBxdD1mdW5jdGlvbihhLGIpe2lmKGEudil7aWYobnVsbCE9YS5vKXt0cnl7cHQoYSxNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKSwwLDAsMCwhMSl9Y2F0Y2goYyl7YS5tJiZhLm0oYyl9YS52JiZhLnYudW5vYnNlcnZlKGEubCk7YS5BPW51bGx9YS5vPWI7YS52Lm9ic2VydmUoYS5sKTthLkMmJihwZXJmb3JtYW5jZS5ub3coKSxhLmwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseG4oYS5qLmRvY3VtZW50KXx8dGcoYS5qKSxhLkE9bmV3IGh0KX19LG10PWZ1bmN0aW9uKGEpe3ZhciBiPWEubC5vZmZzZXRXaWR0aCphLmwub2Zmc2V0SGVpZ2h0LGM9a3QoYS5qKTtiPV8uRmIoanQpLmNvbmNhdChfLkZiKGx0KGMsYikpKTtVYShiKTtyZXR1cm4gXy5yLkludGVyc2VjdGlvbk9ic2VydmVyP25ldyBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIHJ0KGEsZCl9LHt0aHJlc2hvbGQ6Yn0pOm5ldyBNYihmdW5jdGlvbihkKXtyZXR1cm4gcnQoYSxkKX0se3RocmVzaG9sZDpifSl9LHJ0PWZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBjPWt0KGEuaik7Xy5WYyhiLGZ1bmN0aW9uKGQpe3ZhciBlPU1hdGgucm91bmQoZC50aW1lKSxmPWQuYm91bmRpbmdDbGllbnRSZWN0LndpZHRoKmQuYm91bmRpbmdDbGllbnRSZWN0LmhlaWdodCxnPWQuaW50ZXJzZWN0aW9uUmVjdC53aWR0aCpkLmludGVyc2VjdGlvblJlY3QuaGVpZ2h0O2Q9ZC5pc0ludGVyc2VjdGluZzthLlUmJnB0KGEsZSxmLGcsYyxkKX0pfWNhdGNoKGQpe2EubSYmYS5tKGQpfX0scHQ9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKG51bGw9PWEubyl0aHJvdyBFcnJvcihcIk5vdCBBdHRhY2hlZC5cIik7dmFyIGc9bmV3IGd0O2M9RChnLDEsYyk7ZD1EKGMsMixkKTtlPUQoZCwzLGUpO2I9RChlLDQsYik7Yj1EKGIsNSxmKTtmPW5ldyBXZTtlPUIoYiw0KTtudWxsIT1lJiZhZihmLDQsZSk7ZT1CKGIsMik7bnVsbCE9ZSYmYWYoZiwyLGUpO2U9QihiLDEpO251bGwhPWUmJmFmKGYsMSxlKTtlPUIoYiwzKTtudWxsIT1lJiZhZihmLDMsZSk7ZT1CKGIsNSk7bnVsbCE9ZSYmKGI9ZSxudWxsIT1iJiYocGUoZi5qLDQwKSxmLmouai5wdXNoKGI/MTowKSkpO2Y9WmUoZik7Zj1VZShmLDQpO1dpKGEuRCxcIjFcIiwxMCxmLHZvaWQgMCxhLm8pfSxudD1mdW5jdGlvbihhKXt2YXIgYj13bihhLmouZG9jdW1lbnQpO2ImJl8udihhLmouZG9jdW1lbnQsYixmdW5jdGlvbigpe2EuQSYmcGVyZm9ybWFuY2Uubm93KCl9KX07dmFyIHN0PWZ1bmN0aW9uKGEpe3JldHVybiBhLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIDY9PT1iLnN0YXRlfSl9LHR0PWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5BKGEsXCJmaW5kXCIpLmNhbGwoYSxmdW5jdGlvbihkKXtyZXR1cm4gNj09PWQuc3RhdGV9KTtpZighYylyZXR1cm4gbnVsbDthPWEubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLmlzc3Vlck9yaWdpbn0pO2M9e3R5cGU6XCJzZW5kLXNyclwiLGlzc3VlcjpjLmlzc3Vlck9yaWdpbixpc3N1ZXJzOmEscmVmcmVzaFBvbGljeTpcIm5vbmVcIixzaWduUmVxdWVzdERhdGE6XCJpbmNsdWRlXCIsaW5jbHVkZVRpbWVzdGFtcEhlYWRlcjohMCxhZGRpdGlvbmFsU2lnbmVkSGVhZGVyczpbXCJzZWMtdGltZVwiLFwiU2VjLVNpZ25lZC1SZWRlbXB0aW9uLVJlY29yZFwiXX07YiYmMDxfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxiKS5sZW5ndGgmJihjLmFkZGl0aW9uYWxTaWduaW5nRGF0YT1WZShKU09OLnN0cmluZ2lmeShiKSwzKSk7cmV0dXJuIGN9LHV0PWZ1bmN0aW9uKGEpe3ZhciBiPV8uRGooMjUwKSxjPV8uRGooMjUyKTtpZihhLnNldFRydXN0VG9rZW4mJnN0KGIpKXRyeXt2YXIgZD10dChiLGMpO2QmJmEuc2V0VHJ1c3RUb2tlbihkKX1jYXRjaChlKXt9fTt2YXIgdnQ9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLkludGVyc2VjdGlvbk9ic2VydmVyP25ldyBhLkludGVyc2VjdGlvbk9ic2VydmVyKGMsYik6bmV3IE1iKGMsYil9LHd0PWZ1bmN0aW9uKGEsYixjKXtfLnYoYSxiLGMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfLnFiKGEsYixjKX19LHh0PW51bGwseXQ9ZnVuY3Rpb24oKXt4dD1fLk5pKCl9LHp0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bnVsbD09PXh0PyhfLnYoYSxcIm1vdXNlbW92ZVwiLHl0LHtwYXNzaXZlOiEwfSksXy52KGEsXCJzY3JvbGxcIix5dCx7cGFzc2l2ZTohMH0pLHl0KCksITEpOl8uTmkoKS14dD49MUUzKmI6ITF9LEF0PWZ1bmN0aW9uKGEpe3ZhciBiPWEuTCxjPWEuZWxlbWVudCxkPWEuRGQsZT1hLkFkLGY9dm9pZCAwPT09YS5IYz8wOmEuSGMsZz1hLkhiLGg9YS5UYyxrPXZvaWQgMD09PWEueGM/ITA6YS54YyxsPW51bGwsbT0hMSxuPSExLHE9W10sdz0odm9pZCAwPT09YS56Yj92dDphLnpiKShiLHZvaWQgMD09PWEub3B0aW9ucz97fTphLm9wdGlvbnMsZnVuY3Rpb24odSxDKXt0cnl7dmFyIFE9ZnVuY3Rpb24oKXtxLmxlbmd0aHx8KGUmJihxLnB1c2god3QoYyxcIm1vdXNlZW50ZXJcIixmdW5jdGlvbigpe209ITA7USgpfSkpLHEucHVzaCh3dChjLFwibW91c2VsZWF2ZVwiLGZ1bmN0aW9uKCl7bT0hMTtRKCl9KSkpLHEucHVzaCh3dChiLmRvY3VtZW50LFwidmlzaWJpbGl0eWNoYW5nZVwiLGZ1bmN0aW9uKCl7cmV0dXJuIFEoKX0pKSk7dmFyIE49enQoYixmKSxIPXhuKGIuZG9jdW1lbnQpO2lmKG4mJiFtJiYhTiYmIUgpbD1sfHxiLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt6dChiLGYpP1EoKTooZygpLEMuZGlzY29ubmVjdCgpKX0sMUUzKmQpO2Vsc2UgaWYoa3x8bXx8Tnx8SCliLmNsZWFyVGltZW91dChsKSxsPW51bGx9O249dVt1Lmxlbmd0aC0xXS5pc0ludGVyc2VjdGluZztRKCl9Y2F0Y2goTil7aCYmaChOKX19KTt3Lm9ic2VydmUoYyk7cmV0dXJuIGZ1bmN0aW9uKCl7dy5kaXNjb25uZWN0KCk7Zm9yKHZhciB1PV8uRihxKSxDPXUubmV4dCgpOyFDLmRvbmU7Qz11Lm5leHQoKSlDPUMudmFsdWUsQygpO251bGwhPWwmJmIuY2xlYXJUaW1lb3V0KGwpfX07dmFyIEJ0PWZ1bmN0aW9uKCl7dmFyIGE9QihUbi5CKCkuaiwyNik7dGhpcy5qPW51bGw7dGhpcy5sPTA7dGhpcy52PWF9LEN0PWZ1bmN0aW9uKGEpe2lmKCFhLmope3ZhciBiPV8uRGooNyk7SnE9SHEoKTtNcT1iO0xxPTA7aWYoIVpkKCl8fDA8PVBkKGRlKCksMTEpKWI9T3EoKTtlbHNle2I9b2koKTt2YXIgYz1iLl9fZ29vZ2xlX2FkX3VybHM7Yj1jP2M6Yi5fX2dvb2dsZV9hZF91cmxzPW5ldyBCcX1hLmo9YjthLmw9YS5qLnNldHVwT3NlKGEudil9cmV0dXJuIGEuan07QnQucHJvdG90eXBlLmdldE9zZUlkPWZ1bmN0aW9uKCl7dGhpcy5sfHwodGhpcy5sPUFxKDAsXy5Eaig3KSkpO3JldHVybiB0aGlzLmx9O3ZhciBEdD0wLEV0PWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFBmO3RoaXMud2E9YS5qLmdldFVUQ0Z1bGxZZWFyKCkraWUoYS5qLmdldFVUQ01vbnRoKCkrMSkraWUoYS5qLmdldFVUQ0RhdGUoKSk7dGhpcy5qPVtdO3RoaXMudj1OYU47dGhpcy5JPVwianNvbl9odG1sXCI7dGhpcy5HPVwiZmlmXCI7dGhpcy5FYT0xO3RoaXMuVT1bXTt0aGlzLkphPXRoaXMuV2E9dGhpcy5YYT1OYU47dGhpcy5vPTA7dGhpcy5LPXRoaXMuSD10aGlzLkQ9XCJcIjt0aGlzLm09W107dGhpcy5sPTA7dGhpcy5DPW5ldyB0Lk1hcDt0aGlzLkE9bmV3IHQuTWFwfSxGdD1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0U2xvdElkKCk7Yj1hLkMuZ2V0KGMpO2J8fChiPXdpbmRvdz09d2luZG93LnRvcD8oKytEdCkudG9TdHJpbmcoMzYpOmplKCksYS5DLnNldChjLGIpLF8uUihjLGZ1bmN0aW9uKCl7YS5DLmRlbGV0ZShjKX0pKTtyZXR1cm4gYn0sR3Q9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldFNsb3RJZCgpO2EuQS5zZXQoYyxiLmwpO18uUihjLGZ1bmN0aW9uKCl7YS5BLmRlbGV0ZShjKX0pfSxIdD1mdW5jdGlvbihhLGIpe3JldHVybiBhLkEuZ2V0KGIuZ2V0U2xvdElkKCkpfHxiLmx9O3ZhciBJdD1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSExLGc9ZnVuY3Rpb24oKXshZiYmKF8ueSg0MTIpP2ZwKGUsYik6Yi5EKSYmKGMoKSxmPSEwKX07KGQ9ZCYmYS5jb250ZW50V2luZG93P18ucmEoNSk6MCkmJjIhPWR8fF8udihhLFwibG9hZFwiLGcpO2QmJmEuY29udGVudFdpbmRvdyYmXy52KGEuY29udGVudFdpbmRvdyxcImFtcC1pbmktbG9hZFwiLGcpfTt2YXIgSnQ9bnVsbCxLdD0hMSxMdD0hMSxNdD0hMSxOdD1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/Xy5yOmE7aWYoIUx0KXt2YXIgYj1uZXcgV2soXCJncHRfcHViY29uc29sZV9sb2FkZWRcIik7bGIoYik7RShiLFwicGFyYW1cIixTdHJpbmcoZmIoYSkpKTtFKGIsXCJhcGlcIixTdHJpbmcoTXQpKTtZayhiLDEpO2I9XCJodHRwczpcIitfLkRqKDIyOCkrXCJsb2FkZXIuanNcIjt1ZyhhLmRvY3VtZW50LGxnKGIpKTtMdD0hMH19LE90PUcoOTQsZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP18ucjphO1hiKCkuX3B1YmNvbnNvbGVfZGlzYWJsZV98fG51bGwhPT1mYihhKSYmTnQoYSl9KSxQdD1mdW5jdGlvbihhLGIpeyFYYigpLl9wdWJjb25zb2xlX2Rpc2FibGVfJiYoYT1RYShcImdvb2dsZV9wdWJjb25zb2xlXCIsYSxiKSkmJihhPWEuc3BsaXQoXCJ8XCIpLDA8YS5sZW5ndGgmJihcIjFcIj09YVswXXx8XCIwXCI9PWFbMF0pJiZOdCgpKX07XCJjb21wbGV0ZVwiPT09Xy5yLmRvY3VtZW50LnJlYWR5U3RhdGU/T3QoKTp2aihfLnIsZnVuY3Rpb24oKXtPdCgpfSk7V2IoXCJkaXNhYmxlUHVibGlzaGVyQ29uc29sZVwiLFMoOTMsZnVuY3Rpb24oKXtYYigpLl9wdWJjb25zb2xlX2Rpc2FibGVfPSEwfSkpO1diKFwib25QdWJDb25zb2xlSnNMb2FkXCIsUyg3MzEsZnVuY3Rpb24oKXtLdCYmKFhiKCkuY29uc29sZS5vcGVuQ29uc29sZShKdCksSnQ9bnVsbCxLdD0hMSl9KSk7V2IoXCJvcGVuQ29uc29sZVwiLFMoNzMyLGZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9cIlwiOmE7TXQ9ITA7WGImJlhiKCkuY29uc29sZT9YYigpLmNvbnNvbGUub3BlbkNvbnNvbGUoYSk6KGEmJihKdD1hKSxLdD0hMCxOdCgpKX0pKTt2YXIgUXQ9ZnVuY3Rpb24oKXt2YXIgYT1qbC5CKCk7dGhpcy5nZXRBbGxFdmVudHM9Uyg1NjMsZnVuY3Rpb24oKXtyZXR1cm4gTHQ/emgoYS5qKS5zbGljZSgpOltdfSk7dGhpcy5nZXRFdmVudHNCeVNsb3Q9Uyg1NjUsZnVuY3Rpb24oYil7cmV0dXJuIEx0P2tsKGEsYikuc2xpY2UoKTpbXX0pO3RoaXMuZ2V0RXZlbnRzQnlMZXZlbD1TKDU2NixmdW5jdGlvbihiKXtyZXR1cm4gTHQ/bGwoYSxiKS5zbGljZSgpOltdfSl9O18uSihRdCx5aik7dmFyIFJ0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1qbC5CKCksZD1Ubi5CKCkuaixlPVduKFRuLkIoKSxhLmouZ2V0U2xvdEVsZW1lbnRJZCgpKTt0aGlzLnNldD1TKDgzLGZ1bmN0aW9uKGYsZyl7YS5zZXQoZixnKTtyZXR1cm4gYn0pO3RoaXMuZ2V0PVMoODQsZnVuY3Rpb24oZil7cmV0dXJuIGEuZ2V0KGYpfSk7dGhpcy5zZXRDbGlja1VybD1TKDc5LGZ1bmN0aW9uKGYpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZilyZXR1cm4gYy5KKHFsKFwiU2xvdC5zZXRDbGlja1VybFwiLFtmXSksbnVsbCxhLmopLGI7RChlLDcsZik7cmV0dXJuIGJ9KTt0aGlzLnNldFRhcmdldGluZz1TKDgxLGZ1bmN0aW9uKGYsZyl7Um4oYS5qLGUsZixnLGMpO3JldHVybiBifSk7dGhpcy51cGRhdGVUYXJnZXRpbmdGcm9tTWFwPVMoODUsZnVuY3Rpb24oZil7U24oYS5qLGUsZixjKTtyZXR1cm4gYn0pO3RoaXMuZGlzcGxheT1TKDc4LGZ1bmN0aW9uKCl7Xy55KDQyMykmJkQoZSwxOSwhMCk7dmFyIGY9S2soZCxWbigpKTthLmRpc3BsYXkoZil9KTt0aGlzLnNldFRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ9Uyg4MCxmdW5jdGlvbihmKXtpZigwPT09Znx8MT09PWYpe3ZhciBnPVVqKGQpfHxuZXcgT2o7RChnLDUsZik7dmYoZCwyNSxnKX1yZXR1cm4gYn0pO3RoaXMuc2V0Rm9yY2VTYWZlRnJhbWU9Uyg1NjcsZnVuY3Rpb24oZil7aWYoXCJib29sZWFuXCIhPT10eXBlb2YgZilyZXR1cm4gYy5KKGZtKFwiUGFzc2JhY2tTbG90LnNldEZvcmNlU2FmZUZyYW1lXCIsU3RyaW5nKGYpKSxudWxsLGEuaiksYjtEKGUsMTIsZik7cmV0dXJuIGJ9KTt0aGlzLnNldFRhZ0ZvclVuZGVyQWdlT2ZDb25zZW50PVMoNDQ4LGZ1bmN0aW9uKGYpe2lmKDA9PT1mfHwxPT09Zil7dmFyIGc9VWooZCl8fG5ldyBPajtEKGcsNixmKTt2ZihkLDI1LGcpfXJldHVybiBifSl9O18uSihSdCx5aik7dmFyIFN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGMpe3JldHVybiB6aihjLGIpfSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiEhY30pfSxUdD1mdW5jdGlvbihhKXt2YXIgYj1xcC5CKCksYz1bXTthPV8uRihhKTtmb3IodmFyIGQ9YS5uZXh0KCk7IWQuZG9uZTtkPWEubmV4dCgpKXtkPWQudmFsdWU7Yi5sPWQ7dmFyIGU9bmooOSk7MT09PWUubGVuZ3RoJiYoYy5wdXNoKGQpLGMucHVzaChkK1wiLVwiK2VbMF0pKX1yZXR1cm4gY30sVXQ9amQoZnVuY3Rpb24oKXtyZXR1cm4gZGgoXCJnb29nbGVfRGlzYWJsZUluaXRpYWxMb2FkIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gUGxlYXNlIHVzZSBnb29nbGV0YWcucHViYWRzKCkuaXNJbml0aWFsTG9hZERpc2FibGVkKCkgaW5zdGVhZCB0byBjaGVjayBpZiBpbml0aWFsIGxvYWQgaGFzIGJlZW4gZGlzYWJsZWQuXCIpfSksVnQ9ZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LFwiZ29vZ2xlX0Rpc2FibGVJbml0aWFsTG9hZFwiLHtnZXQ6ZnVuY3Rpb24oKXtVdCgpO3JldHVybiEwfSxzZXQ6ZnVuY3Rpb24oKXtVdCgpfSxjb25maWd1cmFibGU6ITB9KX0sY3U9ZnVuY3Rpb24oYSxiKXtqcC5jYWxsKHRoaXMsYSk7dmFyIGM9dGhpcyxkPWpsLkIoKSxlPVRuLkIoKS5qLGY9Vm4oKSxnPSExO3RoaXMuc2V0VGFyZ2V0aW5nPVMoMSxmdW5jdGlvbihoLGspe3ZhciBsPW51bGw7XCJzdHJpbmdcIj09PXR5cGVvZiBrP2w9W2tdOkFycmF5LmlzQXJyYXkoayk/bD1rOktjKGspJiYobD1fLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksaykpO3ZhciBtPVwic3RyaW5nXCI9PT10eXBlb2YgaCYmIUZkKGgpO2w9Xy55KDE4MCk/bDpsJiZoZChsKTt2YXIgbj0hIWwmJmwuZXZlcnkoZnVuY3Rpb24ocSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBxfSk7aWYoIW18fCFuKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldFRhcmdldGluZ1wiLFtoLGtdKSxhKSxjO2s9KHo9dWYoZSxKaiwyKSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihxKXtyZXR1cm4gS2oocSk9PT1ofSk7aWYoXCJncHQtYmV0YVwiPT09aCl7aWYoYS5qKXJldHVybiBkLkooQm0obC5qb2luKCkpKSxjO2lmKGspcmV0dXJuIGQuSihDbShsLmpvaW4oKSkpLGM7bD1UdChsKX1rP01qKGssbCk6KGs9TWooTGoobmV3IEpqLGgpLGwpLHhmKGUsMixrLEpqKSk7ZC5pbmZvKG9tKGgsbC5qb2luKCksYS5aKCkpLGEpO3JldHVybiBjfSk7dGhpcy5jbGVhclRhcmdldGluZz1TKDIsZnVuY3Rpb24oaCl7aWYodm9pZCAwPT09aClyZXR1cm4gVGooZSxbXSksZC5pbmZvKHptKGEuWigpKSxhKSxjO2lmKFwiZ3B0LWJldGFcIj09PWgpcmV0dXJuIGQuSihEbShoKSksYzt2YXIgaz11ZihlLEpqLDIpLGw9Xy5BKGssXCJmaW5kSW5kZXhcIikuY2FsbChrLGZ1bmN0aW9uKG0pe3JldHVybiBLaihtKT09PWh9KTtpZigwPmwpcmV0dXJuIGQuSihsbShoLGEuWigpKSxhKSxjO2suc3BsaWNlKGwsMSk7VGooZSxrKTtkLmluZm8oa20oaCxhLlooKSksYSk7cmV0dXJuIGN9KTt0aGlzLmdldFRhcmdldGluZz1TKDM4LGZ1bmN0aW9uKGgpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaClyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5nZXRUYXJnZXRpbmdcIixbaF0pLGEpLFtdO3ZhciBrPSh6PXVmKGUsSmosMiksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24obCl7cmV0dXJuIEtqKGwpPT09aH0pO3JldHVybiBrP0IoaywyKS5zbGljZSgpOltdfSk7dGhpcy5nZXRUYXJnZXRpbmdLZXlzPVMoMzksZnVuY3Rpb24oKXtyZXR1cm4gdWYoZSxKaiwyKS5tYXAoZnVuY3Rpb24oaCl7cmV0dXJuIEtqKGgpfSl9KTt0aGlzLnNldENhdGVnb3J5RXhjbHVzaW9uPVMoMyxmdW5jdGlvbihoKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGh8fEZkKGgpKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldENhdGVnb3J5RXhjbHVzaW9uXCIsW2hdKSxhKSxjOyh6PUIoZSwzKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosaCl8fHNmKGUsMyxoKTtkLmluZm8obW0oaCksYSk7cmV0dXJuIGN9KTt0aGlzLmNsZWFyQ2F0ZWdvcnlFeGNsdXNpb25zPVMoNCxmdW5jdGlvbigpe0QoZSwzLFtdKTtkLmluZm8obm0oKSxhKTtyZXR1cm4gY30pO3RoaXMuZGlzYWJsZUluaXRpYWxMb2FkPVMoNSxmdW5jdGlvbigpeyFhLmp8fF8ueSg0MTApPyhEKGUsNCwhMCksZ3x8KGc9ITAsVnQoKSkpOmQuSihZbChcImRpc2FibGVJbml0aWFsTG9hZFwiLFwicHViYWRzXCIpLGEpfSk7dGhpcy5lbmFibGVTaW5nbGVSZXF1ZXN0PVMoNixmdW5jdGlvbigpe2lmKGEuaiYmIXgoZSw2KSlyZXR1cm4gZC5KKFhsKFwiZW5hYmxlU2luZ2xlUmVxdWVzdFwiKSxhKSwhMTtkLmluZm8oJGwoXCJzaW5nbGUgcmVxdWVzdFwiKSxhKTtEKGUsNiwhMCk7cmV0dXJuITB9KTt0aGlzLmVuYWJsZUFzeW5jUmVuZGVyaW5nPVMoNyxmdW5jdGlvbigpe3JldHVybiEwfSk7dGhpcy5lbmFibGVTeW5jUmVuZGVyaW5nPVMoOCxmdW5jdGlvbigpe2RoKFwiR1BUIHN5bmNocm9ub3VzIHJlbmRlcmluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCBhZHMgd2lsbCBiZSByZXF1ZXN0ZWQgYW5kIHJlbmRlcmVkIGFzeW5jaHJvbm91c2x5LiBTZWUgaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vYWRtYW5hZ2VyL2Fuc3dlci85MjEyNTk0IGZvciBtb3JlIGRldGFpbHMuXCIpO3JldHVybiExfSk7dGhpcy5lbmFibGVMYXp5TG9hZD1TKDQ4NSxmdW5jdGlvbihoKXt2YXIgaz1uZXcgTmo7RChrLDEsODAwKTtEKGssMiw0MDApO0QoaywzLDMpO2lmKF8uTWMoaCkpe3ZhciBsPWguZmV0Y2hNYXJnaW5QZXJjZW50O1wibnVtYmVyXCI9PT10eXBlb2YgbCYmKDA8PWw/RChrLDEsbCk6LTE9PWwmJkQoaywxLHZvaWQgMCkpO2w9aC5yZW5kZXJNYXJnaW5QZXJjZW50O1wibnVtYmVyXCI9PT10eXBlb2YgbCYmKDA8PWw/RChrLDIsbCk6LTE9PWwmJkQoaywyLHZvaWQgMCkpO2g9aC5tb2JpbGVTY2FsaW5nO1wibnVtYmVyXCI9PT10eXBlb2YgaCYmKDA8aD9EKGssMyxoKTotMT09aCYmRChrLDMsMSkpfXZmKGUsNSxrKX0pO3RoaXMuc2V0Q2VudGVyaW5nPVMoOSxmdW5jdGlvbihoKXtoPSEhaDtkLmluZm8oYW0oXCJjZW50ZXJpbmdcIixTdHJpbmcoaCkpLGEpO0QoZSwxNSxoKX0pO3RoaXMuZGVmaW5lUGFzc2JhY2s9UygxMCxmdW5jdGlvbihoLGspe3JldHVybihoPVd0KGEsaCxrKS5zbG90KSYmZ2woaCl9KTt0aGlzLnJlZnJlc2g9UygxMSxmdW5jdGlvbihoLGspe2s9dm9pZCAwPT09az97fTprO2gmJiFBcnJheS5pc0FycmF5KGgpfHwhXy5NYyhrKXx8ay5jaGFuZ2VDb3JyZWxhdG9yJiZcImJvb2xlYW5cIiE9PXR5cGVvZiBrLmNoYW5nZUNvcnJlbGF0b3I/ZC5KKHFsKFwiUHViQWRzU2VydmljZS5yZWZyZXNoXCIsW2gsa10uZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiB2b2lkIDAhPT1sfSkpLGEpOihrJiYwPT1rLmNoYW5nZUNvcnJlbGF0b3J8fEQoZSwyNixOaygpKSxoPWg/U3QoaCxiKTphLmwsWHQoYSxLayhlLGYpLGgpKX0pO3RoaXMuZW5hYmxlVmlkZW9BZHM9UygxMixmdW5jdGlvbigpe0QoZSwyMSwhMCk7WXQoYSxlKX0pO3RoaXMuc2V0VmlkZW9Db250ZW50PVMoMTMsZnVuY3Rpb24oaCxrKXtEKGUsMjEsITApO0QoZSwyMixTdHJpbmcoaHx8XCJcIikpO0QoZSwyMyxTdHJpbmcoa3x8XCJcIikpO1l0KGEsZSl9KTt0aGlzLmNvbGxhcHNlRW1wdHlEaXZzPVMoMTQsZnVuY3Rpb24oaCl7aD12b2lkIDA9PT1oPyExOmg7eChlLDExKT9kLkooaW0oKSxhKTphLmo/ZC5KKFhsKFwiY29sbGFwc2VFbXB0eURpdnNcIiksYSk6KGgmJkQoZSwxMCwhMCksa2IoXCJncHRfY2VkXCIsZnVuY3Rpb24oayl7RShrLFwic2NcIixoP1widFwiOlwiZlwiKTtFKGssXCJsZXZlbFwiLFwicGFnZVwiKTtsYihrKX0pLGQuaW5mbyhobShTdHJpbmcoISFoKSksYSksRChlLDExLCEwKSk7cmV0dXJuISF4KGUsMTEpfSk7dGhpcy5jbGVhcj1TKDE1LGZ1bmN0aW9uKGgpe3JldHVybiBBcnJheS5pc0FycmF5KGgpPyhoPVN0KGgsYiksWnQoYSxlLGYsaCkpOlp0KGEsZSxmLGgpfSk7dGhpcy5zZXRMb2NhdGlvbj1TKDE2LGZ1bmN0aW9uKGgpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaClyZXR1cm4gZC5KKGdtKFwiQWRkcmVzc1wiKSksYztEKGUsOCxoKTtyZXR1cm4gY30pO3RoaXMuc2V0Q29va2llT3B0aW9ucz1TKDE3LGZ1bmN0aW9uKGgpe2lmKDAhPT1oJiYxIT09aClyZXR1cm4gZC5KKFdsKFN0cmluZyhoKSksYSksYztEKGUsMjQsaCk7cmV0dXJuIGN9KTt0aGlzLnNldFRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ9UygxOCxmdW5jdGlvbihoKXtpZigxIT09aCYmMCE9PWgpcmV0dXJuIGQuSihwbShTdHJpbmcoaCkpLGEpLGM7dmFyIGs9VWooZSl8fG5ldyBPajtEKGssNSxoKTt2ZihlLDI1LGspO3JldHVybiBjfSk7dGhpcy5jbGVhclRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ9UygxOSxmdW5jdGlvbigpe3ZhciBoPVVqKGUpO2lmKCFoKXJldHVybiBjO0QoaCw1LHZvaWQgMCk7dmYoZSwyNSxoKTtyZXR1cm4gY30pO3RoaXMuc2V0UHVibGlzaGVyUHJvdmlkZWRJZD1TKDIwLGZ1bmN0aW9uKGgpe2g9U3RyaW5nKGgpO2Euaj9kLkooWmwoXCJzZXRQdWJsaXNoZXJQcm92aWRlZElkXCIsaCksYSk6KGQuaW5mbyhhbShcIlBQSURcIixoKSxhKSxEKGUsMTYsaCkpO3JldHVybiBjfSk7dGhpcy5zZXQ9UygyMSxmdW5jdGlvbihoLGspe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaHx8IWgubGVuZ3RofHx2b2lkIDA9PT1RbigpW2hdfHxcInN0cmluZ1wiIT09dHlwZW9mIGspcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0XCIsW2gsa10pLGEpLGM7dmFyIGw9KHo9dWYoZSxKaiwxNCksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24obSl7cmV0dXJuIEtqKG0pPT09aH0pO2w/TWoobCxba10pOihsPUxqKG5ldyBKaixoKSxzZihsLDIsaykseGYoZSwxNCxsLEpqKSk7ZC5pbmZvKEtsKGgsU3RyaW5nKGspLGEuWigpKSxhKTtyZXR1cm4gY30pO3RoaXMuZ2V0PVMoMjIsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBoKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLmdldFwiLFtoXSksYSksbnVsbDt2YXIgaz0oej11ZihlLEpqLDE0KSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihsKXtyZXR1cm4gS2oobCk9PT1ofSk7cmV0dXJuKGs9ayYmQihrLDIpKT9rWzBdOm51bGx9KTt0aGlzLmdldEF0dHJpYnV0ZUtleXM9UygyMyxmdW5jdGlvbigpe3JldHVybiB1ZihlLEpqLDE0KS5tYXAoZnVuY3Rpb24oaCl7cmV0dXJuIEtqKGgpfSl9KTt0aGlzLmRpc3BsYXk9UygyNCxmdW5jdGlvbihoLGssbCxtKXtyZXR1cm4gdm9pZCBhLmRpc3BsYXkoaCxrLHZvaWQgMD09PWw/XCJcIjpsLHZvaWQgMD09PW0/XCJcIjptKX0pO3RoaXMudXBkYXRlQ29ycmVsYXRvcj1TKDI1LGZ1bmN0aW9uKCl7ZGgodWooXCJ1cGRhdGVcIikpO2QuSihKbSgpLGEpO0QoZSwyNixOaygpKTtyZXR1cm4gY30pO3RoaXMuZGVmaW5lT3V0T2ZQYWdlUGFzc2JhY2s9UygzNSxmdW5jdGlvbihoKXt2YXIgaz1XdChhLGgsWzEsMV0pO2g9ay5zbG90OyhrPWsuRmEpJiZEKGssMTUsMSk7cmV0dXJuIGgmJmdsKGgpfSk7dGhpcy5zZXRGb3JjZVNhZmVGcmFtZT1TKDM2LGZ1bmN0aW9uKGgpe2lmKFwiYm9vbGVhblwiIT09dHlwZW9mIGgpcmV0dXJuIGQuSihmbShTdHJpbmcoaCkpLGEpLGM7RChlLDEzLGgpO3JldHVybiBjfSk7dGhpcy5zZXRTYWZlRnJhbWVDb25maWc9UygzNyxmdW5jdGlvbihoKXt2YXIgaz1hbyhoKTtpZighaylyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5zZXRTYWZlRnJhbWVDb25maWdcIixbaF0pLGEpLGM7dmYoZSwxOCxrKTtyZXR1cm4gY30pO3RoaXMuc2V0UmVxdWVzdE5vblBlcnNvbmFsaXplZEFkcz1TKDQ0NSxmdW5jdGlvbihoKXtpZigwIT09aCYmMSE9PWgpYS5sb2cuSihFbShTdHJpbmcoaCkpLGEpO2Vsc2UgaWYoXy55KDM3Mykpe3ZhciBrPVRuLkIoKS5qO2lmKCFVaihrKSl7dmFyIGw9bmV3IE9qO3ZmKGssMjUsbCl9az1VaihrKTtEKGssOCwhIWgpfWVsc2UgaWYoaCl7aWYoKGg9aGEoKSkmJmguZnJhbWVzJiYhaC5mcmFtZXMuR29vZ2xlU2V0TlBBKXRyeXtrPWguZG9jdW1lbnQ7bD1uZXcgVWYoayk7dmFyIG09ay5ib2R5fHxrLmhlYWQmJmsuaGVhZC5wYXJlbnRFbGVtZW50O2lmKG0pe3ZhciBuPWpnKGwsXCJJRlJBTUVcIik7bi5uYW1lPVwiR29vZ2xlU2V0TlBBXCI7bi5pZD1cIkdvb2dsZVNldE5QQVwiO24uc2V0QXR0cmlidXRlKFwic3R5bGVcIixcImRpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDtsZWZ0Oi05OTlweDt0b3A6LTk5OXB4O3dpZHRoOjBweDtoZWlnaHQ6MHB4O1wiKTttLmFwcGVuZENoaWxkKG4pfX1jYXRjaChxKXt9fWVsc2UoaD1oYSgpLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiR29vZ2xlU2V0TlBBXCIpKSYmaC5wYXJlbnROb2RlJiZoLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCk7cmV0dXJuIGN9KTt0aGlzLnNldFRhZ0ZvclVuZGVyQWdlT2ZDb25zZW50PVMoNDQ3LGZ1bmN0aW9uKGgpe2g9dm9pZCAwPT09aD8yOmg7aWYoMiE9PWgmJjAhPT1oJiYxIT09aClyZXR1cm4gZC5KKEZtKFN0cmluZyhoKSksYSksYzt2YXIgaz1VaihlKXx8bmV3IE9qO0Qoayw2LGgpO3ZmKGUsMjUsayk7cmV0dXJuIGN9KTt0aGlzLmdldENvcnJlbGF0b3I9UygyNyxmdW5jdGlvbigpe3JldHVybiBTdHJpbmcoQihlLDI2KSl9KTt0aGlzLmdldFRhZ1Nlc3Npb25Db3JyZWxhdG9yPVMoNjMxLGZ1bmN0aW9uKCl7cmV0dXJuICR0KCkuT30pO3RoaXMuZ2V0VmlkZW9Db250ZW50PVMoMzAsZnVuY3Rpb24oKXtyZXR1cm4gYXUoYSxlKX0pO3RoaXMuZ2V0VmVyc2lvbj1TKDU2OCxmdW5jdGlvbigpe3JldHVybiBhLmdldFZlcnNpb24oKX0pO3RoaXMuZm9yY2VFeHBlcmltZW50PVMoNTY5LGZ1bmN0aW9uKGgpe2g9cGFyc2VJbnQoaCwxMCk7MDxoJiZtaihoKX0pO3RoaXMuc2V0Q29ycmVsYXRvcj1TKDI4LGZ1bmN0aW9uKGgpe2RoKHVqKFwic2V0XCIpKTtkLkooSW0oKSxhKTtpZih5aSh3aW5kb3cpKXJldHVybiBjO2lmKCFraChoKSlyZXR1cm4gZC5KKHRtKFN0cmluZyhoKSksYSksYztEKGUsMjYsaCk7RChlLDI3LCEwKTtyZXR1cm4gY30pO3RoaXMubWFya0FzQW1wPVMoNTcwLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYnUoYSl9KTt0aGlzLmlzU1JBPVMoNTcxLGZ1bmN0aW9uKCl7cmV0dXJuISF4KGUsNil9KTt0aGlzLnNldEltYUNvbnRlbnQ9UygzMjgsZnVuY3Rpb24oaCxrKXtudWxsIT1CKGUsMjIpPyhEKGUsMjEsITApLEQoZSwyMixTdHJpbmcoaHx8XCJcIikpLEQoZSwyMyxTdHJpbmcoa3x8XCJcIikpLFl0KGEsZSkpOihEKGUsMjEsITApLFl0KGEsZSksXCJzdHJpbmdcIj09PXR5cGVvZiBoJiZEKGUsMTksaCksXCJzdHJpbmdcIj09PXR5cGVvZiBrJiZEKGUsMjAsaykpfSk7dGhpcy5nZXRJbWFDb250ZW50PVMoMzI5LGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPUIoZSwyMik/YXUoYSxlKTphLmo/e3ZpZDpCKGUsMTkpfHxcIlwiLGNtc2lkOkIoZSwyMCl8fFwiXCJ9Om51bGx9KTt0aGlzLmlzSW5pdGlhbExvYWREaXNhYmxlZD1TKDU3MixmdW5jdGlvbigpe3JldHVybiEheChlLDQpfSk7dGhpcy5hZGRTdXBwb3J0aW5nVXJsPVMoNjM0LGZ1bmN0aW9uKGgpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaHx8IWgubWF0Y2goXy5uZylbMV0pcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2UuYWRkU3VwcG9ydGluZ1VybFwiLFtoXSksYSksYzsoej1CKGUsNyksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGgpfHxzZihlLDcsaCk7cmV0dXJuIGN9KTt0aGlzLnNldFByaXZhY3lTZXR0aW5ncz1TKDY0OCxmdW5jdGlvbihoKXtpZighXy5NYyhoKSlyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5zZXRQcml2YWN5U2V0dGluZ3NcIixbaF0pLGEpLGM7dmFyIGs9VWooZSl8fG5ldyBPaixsPWgucmVzdHJpY3REYXRhUHJvY2Vzc2luZyxtPWguY2hpbGREaXJlY3RlZFRyZWF0bWVudCxuPWgudW5kZXJBZ2VPZkNvbnNlbnQ7aD1oLmxpbWl0ZWRBZHM7XCJib29sZWFuXCI9PT10eXBlb2YgbD9EKGssMSxsKTp2b2lkIDAhPT1sJiZkLkooZm0oU3RyaW5nKGwpKSxhKTtfLnkoMzk3KXx8KFwiYm9vbGVhblwiPT09dHlwZW9mIGg/RChrLDksaCk6dm9pZCAwIT09aCYmZC5KKGZtKFN0cmluZyhoKSksYSkpO3ZvaWQgMCE9PW4mJihudWxsPT09bj9EKGssNiwyKTohMT09PW4/RChrLDYsMCk6ITA9PT1uP0Qoayw2LDEpOmQuSihGbShTdHJpbmcobikpLGEpKTt2b2lkIDAhPT1tJiYobnVsbD09PW0/RChrLDUsdm9pZCAwKTohMT09PW0/RChrLDUsMCk6ITA9PT1tP0Qoayw1LDEpOmQuSihwbShTdHJpbmcobSkpLGEpKTt2ZihlLDI1LGspO3JldHVybiBjfSl9O18uSihjdSxqcCk7dmFyIGR1PWZ1bmN0aW9uKGEsYil7YTp7Yj1iWzBdO2E9YVswXTtmb3IodmFyIGM9ZGQsZD1NYXRoLm1pbihiLmxlbmd0aCxhLmxlbmd0aCksZT0wO2U8ZDtlKyspe3ZhciBmPWMoYltlXSxhW2VdKTtpZigwIT1mKXtiPWY7YnJlYWsgYX19Yj1kZChiLmxlbmd0aCxhLmxlbmd0aCl9cmV0dXJuIGJ9LGV1PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPVtdLGM9ITEsZD1qbC5CKCk7dGhpcy5hZGRTaXplPUcoODgsZnVuY3Rpb24oZSxmKXt2YXIgZzsoZz0haWsoZSkpfHwoZz0hKGhrKGYpfHxBcnJheS5pc0FycmF5KGYpJiZmLmV2ZXJ5KGhrKSkpO2lmKGcpcmV0dXJuIGM9ITAsZC5KKHFsKFwiU2l6ZU1hcHBpbmdCdWlsZGVyLmFkZFNpemVcIixbZSxmXSkpLGE7Yi5wdXNoKFtlLGZdKTtyZXR1cm4gYX0pO3RoaXMuYnVpbGQ9Ryg4OSxmdW5jdGlvbigpe2lmKGMpcmV0dXJuIGQuSihJbCgpKSxudWxsO2VkKGIsZHUpO3JldHVybiBifSl9O3ZhciBmdT1mdW5jdGlvbigpe3RoaXMuZXJyb3JNZXNzYWdlPXRoaXMuaW5mbz10aGlzLmVycm9yPXRoaXMuSWE9bnVsbH0sZ3U9ZnVuY3Rpb24oYSxiKXthLklhPWI7cmV0dXJuIGF9O2Z1LnByb3RvdHlwZS5nZXRFcnJvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yfTt2YXIgaHU9ZnVuY3Rpb24oYSxiKXthLmVycm9yTWVzc2FnZT1iO3JldHVybiBhfSxpdT1mdW5jdGlvbigpe3RoaXMuY2FjaGU9e319LGhiPWZ1bmN0aW9uKCl7anV8fChrdT1fLnJhKDM4LGt1KSxsdT1fLnJhKDM5LGx1KSxqdT1uZXcgaXUpO3JldHVybiBqdX0sbXU9ZnVuY3Rpb24oYSl7dmFyIGI9QihhLDMpO2lmKCFiKXJldHVybiAzO2lmKCFCKGEsMikpcmV0dXJuIDQ7YT1uZXcgUGY7dmFyIGM9UWYoYik7Yy5hZGQobmV3IExmKGx1KSk7aWYoYS5nZXRUaW1lKCk+Yy5nZXRUaW1lKCkpcmV0dXJuIDI7Yj1RZihiKTtiLmFkZChuZXcgTGYoa3UpKTtyZXR1cm4gYS5nZXRUaW1lKCk+Yi5nZXRUaW1lKCk/MTowfTtpdS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBmdTtpZih0aGlzLmNhY2hlW2FdKXJldHVybiBndShiLHRoaXMuY2FjaGVbYV0pO3ZhciBjPVwiXCI7dHJ5e2M9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiX0dFU1BTSy1cIithKX1jYXRjaChkKXtyZXR1cm4gYi5lcnJvcj02LGh1KGIsZC5tZXNzYWdlKX1pZighYylyZXR1cm4gbmV3IGZ1O2I9bnVsbDt0cnl7Yj16ZihrcSxjKX1jYXRjaChkKXtyZXR1cm4gYT1uZXcgZnUsYS5lcnJvcj01LGh1KGEsZC5tZXNzYWdlKX1iJiYodGhpcy5jYWNoZVthXT1iKTtyZXR1cm4gZ3UobmV3IGZ1LGIpfTtpdS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEpe25xKGEpO3ZhciBiPUIoYSwxKXx8XCJcIixjPVwiX0dFU1BTSy1cIitiLGQ9Z3UobmV3IGZ1LGEpO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYyxhLm0oKSl9Y2F0Y2goZSl7ZC5pbmZvPTcsaHUoZCxlLm1lc3NhZ2UpfXRoaXMuY2FjaGVbYl09YTtyZXR1cm4gZH07dmFyIGp1PW51bGwsa3U9MjQsbHU9NzI7dmFyIG51PWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MTAwO2EmJmEhPWImJi0tZDspXy5YZyhhLGMpLGE9YS5wYXJlbnRFbGVtZW50fSxvdT1mdW5jdGlvbihhLGIsYyxkLGUpe18uWGcoYSx7XCJtYXJnaW4tbGVmdFwiOlwiMHB4XCIsXCJtYXJnaW4tcmlnaHRcIjpcIjBweFwifSk7dmFyIGY9e1wiei1pbmRleFwiOlN0cmluZyhfLnJhKDMyLDUpKX07XCJhYnNvbHV0ZVwiIT09ZC5wb3NpdGlvbiYmXCJmaXhlZFwiIT09ZC5wb3NpdGlvbiYmXCJyZWxhdGl2ZVwiIT09ZC5wb3NpdGlvbiYmKGYucG9zaXRpb249XCJyZWxhdGl2ZVwiKTt2YXIgZz1cInJ0bFwiPT1kLmRpcmVjdGlvbixoPSgoZSYmLTEyMjQ1OTMzIT09ZS53aWR0aD9lLndpZHRoOmIuaW5uZXJXaWR0aCktYykvMjtkPWZ1bmN0aW9uKCl7dmFyIGs9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O3JldHVybiBnP2gtazprLWh9O2I9ZCgpOzAhPT1iJiYoYz1mdW5jdGlvbihrKXtnP2ZbXCJtYXJnaW4tcmlnaHRcIl09aytcInB4XCI6ZltcIm1hcmdpbi1sZWZ0XCJdPWsrXCJweFwifSxjKC1iKSxfLlhnKGEsZiksZD1kKCksMCE9PWQmJmIhPT1kJiYoYyhiLyhkLWIpKmIpLF8uWGcoYSxmKSkpO3JldHVybiEwfSxxdT1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9Yi5zbG90LGg9U2IoYi5jYSk7Xy5yLnNldFRpbWVvdXQoRyg0NTksZnVuY3Rpb24oKXtyZXR1cm4gcHUoYSxnLGMsZCxlLGgsZil9KSw1MDApfSxwdT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtpZihfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpe3ZhciBoPW51bGwsaz11byhiLGEpfHxwYShiLGEpLGw9Ryg0NTksZnVuY3Rpb24obSl7aWYobT1tJiZtWzBdKXt2YXIgbj1tLmJvdW5kaW5nQ2xpZW50UmVjdCxxPXdpbmRvdy5pbm5lcldpZHRoLHc9TWF0aC5yb3VuZChuLmxlZnQpLHU9TWF0aC5yb3VuZChuLnJpZ2h0KSxDPTA+dysyLFE9MDx1LShxKzIpO2lmKG0uaW50ZXJzZWN0aW9uUmF0aW8+PTEtKCgwPD1NYXRoLnJvdW5kKG4ubGVmdCk/MDoyKSsoTWF0aC5yb3VuZChuLnJpZ2h0KTw9d2luZG93LmlubmVyV2lkdGg/MDoyKSkvZHx8Q3x8USlrYihnLGZ1bmN0aW9uKE4pe2lmKEN8fFEpe3ZhciBIPW5ldyBYcTtILnNldCg4KTtydShrKSYmSC5zZXQoMTApO0g9WXEoSCl9ZWxzZSBIPXN1KGEsYik7dmFyIHFhPXR1KGIsayxlKSxvYj1xYS5kZDtxYT1xYS5mZDtsYihOKTtFKE4sXCJxaWRcIixlbyhiKSk7RShOLFwiaXVcIixiLmdldEFkVW5pdFBhdGgoKSk7RShOLFwiZVwiLFN0cmluZyhIKSk7QyYmRShOLFwib2ZsXCIsU3RyaW5nKHcpKTtRJiZFKE4sXCJvZnJcIixTdHJpbmcodS1xKSk7RShOLFwicmV0XCIsZCtcInhcIitlKTtFKE4sXCJyZXFcIixmKTtFKE4sXCJibVwiLFN0cmluZyhjKSk7RShOLFwiZWZoXCIsTnVtYmVyKG9iKSk7RShOLFwic3RrXCIsTnVtYmVyKHFhKSk7RShOLFwiaWZpXCIscmkod2luZG93KSk7Xy55KDYwKSYmRShOLFwiaXNjXCIsMSl9LHt2YTpfLnJhKDcpfSksaCYmaC51bm9ic2VydmUoayl9fSk7ayYmKGg9bmV3IF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcihsLHt0aHJlc2hvbGQ6WzFdfSksaC5vYnNlcnZlKGspKX19LHN1PWZ1bmN0aW9uKGEsYil7dmFyIGM9dW8oYixhKXx8cGEoYixhKSxkPW5ldyBYcTt0cnl7dmFyIGU9ZnVuY3Rpb24oSCxxYSl7cmV0dXJuIGEuZWxlbWVudHNGcm9tUG9pbnQoSCxxYSl9LGY9Yy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxnPWYubGVmdCxoPWYudG9wLGs9Zi53aWR0aCxsPWYuaGVpZ2h0LG09d2EocGEoYixhKSx3aW5kb3cpO2lmKFwiaGlkZGVuXCI9PW0udmlzaWJpbGl0eXx8XCJub25lXCI9PW0uZGlzcGxheSlyZXR1cm4gWXEoZCk7dmFyIG49cGFyc2VJbnQobVtcImJvcmRlci10b3Atd2lkdGhcIl18fDAsMTApKzE7Yj1nK2s7bD1oK2w7dmFyIHE9ZShnK24rMixoK24pO3ZhciB3PWUoYi1uLTIsaCtuKTt2YXIgdT1lKGItbi0yLGwtbik7dmFyIEM9ZShnK24rMixsLW4pO3ZhciBRPWUoYi8yLGwtbil9Y2F0Y2goSCl7cmV0dXJuIGQuc2V0KDEpLFlxKGQpfWlmKCEocSYmcS5sZW5ndGgmJncmJncubGVuZ3RoJiZ1JiZ1Lmxlbmd0aCYmQyYmQy5sZW5ndGgmJlEmJlEubGVuZ3RoKSlyZXR1cm4gZC5zZXQoNyksWXEoZCk7ZT1mdW5jdGlvbihILHFhKXtmb3IodmFyIG9iPSExLHdjPTA7d2M8SC5sZW5ndGg7d2MrKyl7dmFyIHhjPUhbd2NdO2lmKG9iKXt2YXIgb2g9d2EoeGMsd2luZG93KTtpZihcImhpZGRlblwiIT1vaC52aXNpYmlsaXR5JiYhJGcoeGMpJiYhTihjLHhjKSl7ZC5zZXQocWEpO1wiYWJzb2x1dGVcIj09b2gucG9zaXRpb24mJmQuc2V0KDExKTticmVha319ZWxzZSBjPT14YyYmKG9iPSEwKX19O2FoKGMpJiZkLnNldCg5KTt2YXIgTj1mdW5jdGlvbihILHFhKXtyZXR1cm4gU2coSCxxYSl8fFNnKHFhLEgpfTtnPXFbMF07Yz09Z3x8TihjLGcpfHwkZyhnKXx8ZC5zZXQoMik7Zz13WzBdO2M9PWd8fE4oYyxnKXx8JGcoZyl8fGQuc2V0KDMpO2c9dVswXTtjPT1nfHxOKGMsZyl8fCRnKGcpfHxkLnNldCg0KTtnPUNbMF07Yz09Z3x8TihjLGcpfHwkZyhnKXx8ZC5zZXQoNSk7aWYoJGcoYykpcmV0dXJuIFlxKGQpO2UocSwxMik7ZSh3LDEzKTtlKHUsMTQpO2UoQywxNSk7ZShRLDYpO3JldHVybiBZcShkKX0scnU9ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYz0hMSxkPSExO3JldHVybiBaZyhhLGZ1bmN0aW9uKGUpe1wibm93cmFwXCI9PWUud2hpdGVTcGFjZSYmKGQ9ITApO2lmKFwic2Nyb2xsXCI9PWUub3ZlcmZsb3dYfHxcImF1dG9cIj09ZS5vdmVyZmxvd1gpYz0hMDtcImZsZXhcIj09ZS5kaXNwbGF5JiYoYj0hMCk7cmV0dXJuIGImJmMmJmR9KX0sdXU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSYmKGE9TyhhLFZqLDEpKT9CKGEsMSl8fGIuaW5uZXJXaWR0aDowfSx2dT1mdW5jdGlvbihhLGIpe3JldHVybiBhJiYoYT1PKGEsVmosMSkpP0IoYSwyKXx8Yi5pbm5lckhlaWdodDowfSx3dT1mdW5jdGlvbihhKXtyZXR1cm4gYSYmKGE9TyhhLFZqLDIpKT9CKGEsMSl8fDA6MH0seHU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJihhPU8oYSxWaiwyKSk/QihhLDIpfHwwOjB9LHR1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0oYT1wYShhKSkmJndhKGEsd2luZG93KSxlPWQ/XCJhYnNvbHV0ZVwiIT1kLnBvc2l0aW9uOiEwLGY9ITEsZz1hJiZhLnBhcmVudEVsZW1lbnQsaD0hMTtZZyhiLGZ1bmN0aW9uKGspe3ZhciBsPWsuc3R5bGU7aWYoZSlpZihofHwoaD1rPT1nKSllPVNxKGssXy5yLCEwLC0xLC0xKTtlbHNle2w9bCYmbC5oZWlnaHQ7dmFyIG09KGwmJl8uQShsLFwiZW5kc1dpdGhcIikuY2FsbChsLFwicHhcIikmJnBhcnNlSW50KGwsMTApfHwwKT49YzshbHx8bXx8XCJzdHJpbmdcIj09PXR5cGVvZiBsJiZfLkEoUHEsXCJpbmNsdWRlc1wiKS5jYWxsKFBxLGwpfHwoZT0hMSl9Znx8KGs9d2EoayxfLnIpLFwic3RpY2t5XCIhPWsucG9zaXRpb24mJlwiZml4ZWRcIiE9ay5wb3NpdGlvbil8fChmPSEwKTtyZXR1cm4hKGYmJiFlKX0sMTAwKTtyZXR1cm57ZGQ6ZSxmZDpmfX0seXU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zbG90Oyh6PXhhKGEuY2EpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixcImZsdWlkXCIpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7a2IoXCJncHRfZmx1aWRfc3pcIixmdW5jdGlvbihjKXt2YXIgZD11byhiLGRvY3VtZW50KTtkPWQ/bmkoZCk6bnVsbDtFKGMsXCJzelwiLGQ/ZC53aWR0aCtcInhcIitkLmhlaWdodDpcIm51bGxcIik7RShjLFwicXFpZFwiLGVvKGIpKX0pfSwyNTApfTt2YXIgWT1mdW5jdGlvbigpe0tyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKFksS3IpO3ZhciBNcj1mdW5jdGlvbihhLGIpe2JsKGEuaWQoKSxiKTt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZXJyb3ImJndpbmRvdy5jb25zb2xlLmVycm9yKGIpfSx6dT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPW51bGwsZz1HKGIsZSk7Xy52KGMsZCxnKSYmKGY9ZnVuY3Rpb24oKXtyZXR1cm4gXy5xYihjLGQsZyl9LF8uUihhLGYpKTtyZXR1cm4gZn0sQXU9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmQ7Yj1uZXcgQmgoYixjLEcoYS5pZCgpLGQpKTtfLndoKGEsYik7cmV0dXJuIGJ9O3ZhciB0Yj1mdW5jdGlvbihhKXtZLmNhbGwodGhpcyk7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1WKHRoaXMsYSl9O18uSih0YixZKTt0Yi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm0udmFsdWUsYj17fSxjPWhiKCksZD1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYSkpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXtlPWUudmFsdWU7dmFyIGY9YVtlXSxnPWMuZ2V0KGUpO2lmKGcuZ2V0RXJyb3IoKSlpYihnLmdldEVycm9yKCksZSxnLmVycm9yTWVzc2FnZSk7ZWxzZXsoZz1nLklhKXx8KGc9bmV3IGtxLGc9RChnLDEsZSksZz1EKGcsNCwwKSxnPUQoZyw1LDApLGc9RChnLDYsMCksZz1ucShnKSk7YTp7aWYoKEIoZyw0KXx8MCk+PV8ucmEoNDApKXt2YXIgaD1CKGcsNil8fDA7dmFyIGs9TWF0aC5wb3coMixoKSxsPUIoZyw1KXx8MDtpZihsPj1rKUQoZyw1LDApLEQoZyw0LDApLEQoZyw2LGgrMSk7ZWxzZXtEKGcsNSxsKzEpO2g9ITA7YnJlYWsgYX19aD0hMX1ofHwoej1fLnJqKDEwKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosZSl8fChiW2VdPXtQYjpmLElhOmd9KX19VSh0aGlzLkYsYil9O3RiLnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NTV9O3ZhciB1Yj1mdW5jdGlvbihhKXtZLmNhbGwodGhpcyk7dGhpcy5BPXRoaXMubCgpO3RoaXMubT10aGlzLmwoKTt0aGlzLkM9Vih0aGlzLGEpfTtfLkoodWIsWSk7dWIucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcyxiPXt9LGM9W10sZD10aGlzLkMudmFsdWUsZT1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9ZFtmXSxoPWcuUGI7Zz1nLklhO3ZhciBrPW11KGcpO3N3aXRjaChrKXtjYXNlIDA6Yy5wdXNoKHQuUHJvbWlzZS5yZXNvbHZlKGcpKTticmVhaztjYXNlIDE6YltmXT17SWE6ZyxQYjpofTtjLnB1c2godC5Qcm9taXNlLnJlc29sdmUoZykpO2JyZWFrO2Nhc2UgMzpjYXNlIDI6Y2FzZSA0OjM9PT1rJiZqYig5LGYpLGcuJGIobnVsbCksYy5wdXNoKEJ1KGYsZyxoKSl9fVUodGhpcy5tLGIpO3QuUHJvbWlzZS5hbGwoYykudGhlbihmdW5jdGlvbihsKXt2YXIgbT17fTtsLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHE9QihuLDIpO3EmJihtW0IobiwxKV09cSl9KTtVKGEuQSxtKX0pfTt2YXIgQnU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8ucmEoMzMpLGU9KG5ldyBQZikuZ2V0VGltZSgpLGY9MztyZXR1cm4gdC5Qcm9taXNlLnJhY2UoW3BiKGQpLGMudGhlbihmdW5jdGlvbihnKXtmPTI7cmV0dXJuIHQuUHJvbWlzZS5yYWNlKFtwYihkLShlLShuZXcgUGYpLmdldFRpbWUoKSkpLG5iKGEsYixnLGZ1bmN0aW9uKCl7cmV0dXJuIGY9bnVsbH0pXSl9KV0pLnRoZW4oZnVuY3Rpb24oKXtmJiZqYihmLGEpO3JldHVybiBifSl9O3ViLnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NTh9O3ZhciBzYj1mdW5jdGlvbigpe1kuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuRj10aGlzLmwoKX07Xy5KKHNiLFkpO3NiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9e30sYj1YYigpJiZYYigpLmVuY3J5cHRlZFNpZ25hbFNvdXJjZXx8e307Xy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYikuZm9yRWFjaChmdW5jdGlvbihnKXthW2ddPXQuUHJvbWlzZS5yZXNvbHZlKGJbZ10pfSk7Zm9yKHZhciBjPXdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0W2RhdGEtZW5jcnlwdGVkLXNpZ25hbC1zb3VyY2UtaWRdXCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7ZD17S2E6ZC5LYX0sZSsrKXt2YXIgZj1jW2VdO2QuS2E9Zi5nZXRBdHRyaWJ1dGUoXCJkYXRhLWVuY3J5cHRlZC1zaWduYWwtc291cmNlLWlkXCIpO2FbZC5LYV09YVtkLkthXXx8cmIoZixmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oKXtpZihiW2cuS2FdKXJldHVybiBiW2cuS2FdO2liKDAsZy5LYSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuUHJvbWlzZS5yZXNvbHZlKG51bGwpfX19KGQpKX1VKHRoaXMuRixhKX07c2IucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY1MH07dmFyIHZiPWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLm09Vih0aGlzLGEpfTtfLkoodmIsWSk7dmIucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm0udmFsdWU7cmIod2luZG93KS50aGVuKGZ1bmN0aW9uKCl7Zm9yKHZhciBiPXt9LGM9Xy5GKF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7Yj17c2I6Yi5zYixHYjpiLkdifSxkPWMubmV4dCgpKWIuc2I9ZC52YWx1ZSxkPWFbYi5zYl0sYi5HYj1kLklhLGQuUGIudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZil7bmIoZS5zYixlLkdiLGYpfX0oYikpfSl9O3ZiLnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjJ9O3ZhciBDdT1mdW5jdGlvbihhKXt2YXIgYj1cInBlcmZvcm1hbmNlXCJpbiB3aW5kb3cmJlwibm93XCJpbiBwZXJmb3JtYW5jZT9wZXJmb3JtYW5jZS5ub3cuYmluZChwZXJmb3JtYW5jZSk6VGM7Zm9yKGE9YigpK2E7YigpPGE7KTtiKCl9LER1PWZ1bmN0aW9uKGEsYil7Yj49YS5sZW5ndGh8fChDdShhW2JdKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIER1KGEsKytiKX0pKX0sRXU9ZnVuY3Rpb24oYSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JldHVybiBEdShhLDApfSl9LEZ1PWZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpe3ZhciBhPV8ucmooMik7YS5sZW5ndGgmJihhPWEubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBfLkhnKGIsMCl9KSxFdShhKSl9fTt2YXIgR3U9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3csYj1uZXcgeXEsYz1uZXcgenEsZD1iYihfLnIpO3FmKGIsMSxkLDApO2Q9a2ouQigpLmooKS5qb2luKCk7cWYoYiw1LGQsXCJcIik7cWYoYiwyLDEsMCk7dmYoYywxLGIpO2I9eHEoKTtkPV8ueSg3Nyk7Yj1yZihiLDgsZCk7ZD1fLnkoNzgpO2I9cmYoYiw5LGQpO2I9cmYoYiwxMCwhMCk7ZD1fLnkoODApO2I9cmYoYiwxMyxkKTtkPV8ueSg4MSk7Yj1yZihiLDE0LGQpO2I9cmYoYiwxNiwhMCk7dmYoYywyLGIpO2EuZ29vZ2xlX3J1bV9jb25maWc9Yy5pYTtjPV8ueSgxODgpP1wiX2RlYnVnXCI6XCJcIjt1ZyhhLmRvY3VtZW50LGxnKFwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvcGFnZWFkL2pzL3J1bVwiK2MrXCIuanNcIikpfTt2YXIgSHU9MCxJdT1mdW5jdGlvbigpe3RyeXtjcigpO2JyKCk7dmFyIGE9Xy5EaigxNTIpO2EmJmEuZm9yRWFjaChmdW5jdGlvbigpe3JldHVybiBtaihhKX0pO25qKDEzKTtuaigzKX1jYXRjaChiKXtjbCg0MDgsYiwhMCl9fSxKdT1HKDI5NyxmdW5jdGlvbigpe3ZhciBhPV8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKSk7YT1fLkYoYSk7Zm9yKHZhciBiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSl7dmFyIGM9Yi52YWx1ZTtiPWM7dmFyIGQ9Yy5zcmM7aWYoZCYmKC0xIT1kLmluZGV4T2YoXCIvdGFnL2pzL2dwdC5qc1wiKXx8LTEhPWQuaW5kZXhPZihcIi90YWcvanMvZ3B0X21vYmlsZS5qc1wiKSkmJiFiLmdvb2dsZXRhZ19leGVjdXRlZCYmYy50ZXh0Q29udGVudCl7Yi5nb29nbGV0YWdfZXhlY3V0ZWQ9ITA7Yj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO3ZhciBlPWQ9dm9pZCAwO2M9Yy50ZXh0Q29udGVudDtjPW51bGwhPT0oZD1udWxsPT09KGU9bWEoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0KGMpKSYmdm9pZCAwIT09ZD9kOmM7Yz1uZXcgWGgoYyxqYSk7bmEoYyxYaCk7Yi50ZXh0Q29udGVudD1jLmo7KGM9Yi5vd25lckRvY3VtZW50JiZiLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpJiZjIT09d2luZG93P2M9TWEoYy5kb2N1bWVudCk6KHZvaWQgMD09PVVxJiYoVXE9TWEoZG9jdW1lbnQpKSxjPVVxKTtjJiZiLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsYyk7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChiKTtkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGIpfX19LGZ1bmN0aW9uKGEsYil7YmwoYSxiKTt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZXJyb3ImJndpbmRvdy5jb25zb2xlLmVycm9yKGIpfSksS3U9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3csYj1uZXcgaXMoYSksYz1uZXcgbnMoYSksZD1uZXcgWXIoYSk7a2IoXCJjbXBNZXRcIixmdW5jdGlvbihlKXtsYihlKTtFKGUsXCJmY1wiLGIuaj8xOjApO0UoZSxcInRjZnYxXCIsYS5fX2NtcD8xOjApO0UoZSxcInRjZnYyXCIscHMoYyk/MTowKTtFKGUsXCJ1c3BcIiwkcihkKT8xOjApO0UoZSxcInB0dFwiLDE3KX0se3ZhOl8ucmEoNjEpfSl9LEx1PWZ1bmN0aW9uKCl7SHU9Xy5OaSgpO0l1KCk7dHJ5e2lmKF8ucmEoNjEpJiZLdSgpLEZ1KCksV2IoXCJkZWZpbmVPdXRPZlBhZ2VTbG90XCIsY3EpLFdiKFwiZGVmaW5lU2xvdFwiLGFxKSxXYihcImRlZmluZVVuaXRcIixhcSksV2IoXCJkZXN0cm95U2xvdHNcIixicSksV2IoXCJnZXRXaW5kb3dzVGhhdENhbkNvbW11bmljYXRlV2l0aEhvc3RwYWdlTGlicmFyeVwiLFZwKSxXYihcImRpc3BsYXlcIixkcSksbXAoKSxXYihcImdldEV2ZW50TG9nXCIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFF0fSksV2IoXCJzaXplTWFwcGluZ1wiLEcoOTAsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGV1fSkpLFdiKFwiYXBpUmVhZHlcIiwhMCksWGIoKS5maWZXaW4mJlwiY29tcGxldGVcIiE9ZG9jdW1lbnQucmVhZHlTdGF0ZT92aih3aW5kb3csZnVuY3Rpb24oKXt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe1VtKCl9LDApfSk6VW0oKSxKdSgpLCFfLkRqKDIyMSkmJl8ueSgzMTEpJiZ6YigpLChfLnkoODQpfHx0ay5CKCkuaikmJkd1KCksXy55KDM0NikmJkZjKCkpe3ZhciBhPW5ldyBXayhcImdwdF9ub25jZV9jc3BcIik7bGIoYSk7WWsoYSl9fWNhdGNoKGIpe2NsKDEwNixiKX19O3ZhciBEYj1uZXcgdC5XZWFrTWFwLEFiPWZ1bmN0aW9uKGEsYil7YT1bYV07Zm9yKHZhciBjPWIubGVuZ3RoLTE7MDw9YzstLWMpYS5wdXNoKHR5cGVvZiBiW2NdLGJbY10pO3JldHVybiBhLmpvaW4oXCJcXHgwQlwiKX07dmFyIE11PUdiKGZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLnNyYz8vXig/Omh0dHBzPzopP1xcL1xcLyg/Ond3d1xcLmdvb2dsZXRhZ3NlcnZpY2VzXFwuY29tfHNlY3VyZXB1YmFkc1xcLmdcXC5kb3VibGVjbGlja1xcLm5ldClcXC90YWdcXC9qc1xcL2dwdCg/Ol9bYS16XSspKlxcLmpzLy50ZXN0KGEuc3JjKT8wOjE6Mn0sZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStcIlxceDBCXCIrKGImJmJbMF0mJmJbMF0uc3JjKX0pO3ZhciBOdT1udWxsLE91PWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZTtpZighKGU9IWIpKXt2YXIgZjtpZighKGY9IVRxKGIsYyx2b2lkIDA9PT1kPzEwMDpkKSkpe2E6e2Rve3ZhciBnPXdhKGIsYyk7aWYoZyYmXCJmaXhlZFwiPT1nLnBvc2l0aW9uKXt2YXIgaD0hMTticmVhayBhfX13aGlsZShiPWIucGFyZW50RWxlbWVudCk7aD0hMH1mPSFofWU9Zn1lJiYoYS5oZWlnaHQ9LTEpfWNhdGNoKGspe2Eud2lkdGg9LTEsYS5oZWlnaHQ9LTF9fSxJYj1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1fLkYodWYoYSxKaiw5KSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZD1kLnZhbHVlLGJbS2ooZCldPUIoZCwyKTthPUIoYSw4KTthLmxlbmd0aCYmbnVsbD09Yi5leGNsX2NhdCYmKGIuZXhjbF9jYXQ9YSk7cmV0dXJuIGJ9LFB1PWZ1bmN0aW9uKGEsYil7dmFyIGM9e307Xy5KYihhLGZ1bmN0aW9uKGQsZSl7aWYoYltlXSl7dmFyIGY9YltlXS5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIF8uQShkLFwiaW5jbHVkZXNcIikuY2FsbChkLGcpfSk7Zi5sZW5ndGgmJihjW2VdPWYpfX0pO3JldHVybiBjfSxRdT1mdW5jdGlvbihhKXt2YXIgYj0hMSxjPXVmKGEsSmosMikubWFwKGZ1bmN0aW9uKGQpe3ZhciBlPUtqKGQpO2I9XCJleGNsX2NhdFwiPT09ZTtkPUIoZCwyKTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChkLmpvaW4oKSl9KTthPUIoYSwzKTshYiYmYS5sZW5ndGgmJmMucHVzaChlbmNvZGVVUklDb21wb25lbnQoXCJleGNsX2NhdFwiKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoYS5qb2luKCkpKTtyZXR1cm4gY30sUnU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Zz12b2lkIDA9PT1nPyExOmc7dGhpcy52PWI7dGhpcy5EPWM7dGhpcy5tPWE7dGhpcy5tb2RlbD1kO3RoaXMubz1lO3RoaXMuaj1mO3RoaXMuQz1bXTt0aGlzLmw9XCJcIjt0aGlzLkk9UW4oKTt0aGlzLkE9W107dGhpcy5VPVtdO3RoaXMuSD1xZChfLnJqKDcpKTt0aGlzLkc9IWd8fCFfLnkoMjk0KX0sVXU9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj93aW5kb3c6Yjt2YXIgYz1hLm1vZGVsLmo7aWYoIUFycmF5LmlzQXJyYXkoYykpcmV0dXJuXCJcIjtpZihhLm0pMD09Yy5sZW5ndGgmJihjPVBwKFFwLkIoKSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBhcChhLnYsZSl9KSk7ZWxzZXtpZigwPT1jLmxlbmd0aClyZXR1cm5cIlwiOzE8Yy5sZW5ndGgmJihjPVtjWzBdXSl9dmFyIGQ9ISFHbihfLnIpO2M9Yy5maWx0ZXIoZnVuY3Rpb24oZSl7dmFyIGY9YS5qLlJbZS5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiBkJiY0PT1nayhmKT8oamwuQigpLkooSG0oU3RyaW5nKGUuZ2V0QWRVbml0UGF0aCgpKSkpLCExKTohMH0pO2lmKCFjLmxlbmd0aClyZXR1cm5cIlwiOzMwPGMubGVuZ3RoJiYoamwuQigpLkooQW0oXCIzMFwiLFN0cmluZyhjLmxlbmd0aCksU3RyaW5nKGMubGVuZ3RoLTMwKSkpLGM9Yy5zbGljZSgwLDMwKSk7U3UoYSxjLGIpO1R1KGEpO3JldHVybiBhLmx9LFZ1PWZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBjPWIudG9wO3ZhciBkPXdpKGMuZG9jdW1lbnQsYyl9Y2F0Y2goZSl7ZD1uZXcgXy55YSgtMTIyNDU5MzMsLTEyMjQ1OTMzKX1aKGEsXCJzY3JfeFwiLE1hdGgucm91bmQoZC54KSx7bmE6ITB9KTtaKGEsXCJzY3JfeVwiLE1hdGgucm91bmQoZC55KSx7bmE6ITB9KX0sV3U9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93LGM9T2EoYS5vLGIuZG9jdW1lbnQpfHxcIlwiO3ZhciBkPWIuZG9jdW1lbnQuZG9tYWluO3ZhciBlPWIuaGlzdG9yeS5sZW5ndGgsZj1iLnNjcmVlbixnPWIuZG9jdW1lbnQucmVmZXJyZXI7aWYoSmgoKSlkPW9pKCkuZ2FHbG9iYWx8fHt9O2Vsc2V7dmFyIGg9TWF0aC5yb3VuZCgobmV3IERhdGUpLmdldFRpbWUoKS8xRTMpLGs9Yi5nb29nbGVfYW5hbHl0aWNzX2RvbWFpbl9uYW1lO2Q9XCJ1bmRlZmluZWRcIj09dHlwZW9mIGs/cnEoXCJhdXRvXCIsZCk6cnEoayxkKTt2YXIgbD0tMTxjLmluZGV4T2YoXCJfX3V0bWE9XCIrZCtcIi5cIiksbT0tMTxjLmluZGV4T2YoXCJfX3V0bWI9XCIrZCksbjsobj0oT2goKXx8b2koKSkuZ2FHbG9iYWwpfHwobj17fSwoT2goKXx8b2koKSkuZ2FHbG9iYWw9bik7dmFyIHE9ITE7aWYobClnPWMuc3BsaXQoXCJfX3V0bWE9XCIrZCtcIi5cIilbMV0uc3BsaXQoXCI7XCIpWzBdLnNwbGl0KFwiLlwiKSxtP24uc2lkPWdbM106bi5zaWR8fChuLnNpZD1oK1wiXCIpLG4udmlkPWdbMF0rXCIuXCIrZ1sxXSxuLmZyb21fY29va2llPSEwO2Vsc2V7bi5zaWR8fChuLnNpZD1oK1wiXCIpO2lmKCFuLnZpZCl7cT0hMDttPU1hdGgucm91bmQoMjE0NzQ4MzY0NypNYXRoLnJhbmRvbSgpKTtsPVtvcS5hcHBOYW1lLG9xLnZlcnNpb24sb3EubGFuZ3VhZ2U/b3EubGFuZ3VhZ2U6b3EuYnJvd3Nlckxhbmd1YWdlLG9xLnBsYXRmb3JtLG9xLnVzZXJBZ2VudCxwcSgpPzE6MF0uam9pbihcIlwiKTtmP2wrPWYud2lkdGgrXCJ4XCIrZi5oZWlnaHQrZi5jb2xvckRlcHRoOl8uci5qYXZhJiZfLnIuamF2YS5hd3QmJihmPV8uci5qYXZhLmF3dC5Ub29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U2NyZWVuU2l6ZSgpLGwrPWYuc2NyZWVuLndpZHRoK1wieFwiK2Yuc2NyZWVuLmhlaWdodCk7bD1sK2MrKGd8fFwiXCIpO2ZvcihnPWwubGVuZ3RoOzA8ZTspbCs9ZS0tXmcrKztuLnZpZD0obV5xcShsKSYyMTQ3NDgzNjQ3KStcIi5cIitofW4uZnJvbV9jb29raWU9ITF9aWYoIW4uY2lkKXtiOmZvcihoPTk5OSxrJiYoaz0wPT1rLmluZGV4T2YoXCIuXCIpP2suc3Vic3RyKDEpOmssaD1rLnNwbGl0KFwiLlwiKS5sZW5ndGgpLGs9OTk5LGM9Yy5zcGxpdChcIjtcIiksZz0wO2c8Yy5sZW5ndGg7ZysrKWlmKGY9c3EuZXhlYyhjW2ddKXx8dHEuZXhlYyhjW2ddKXx8dXEuZXhlYyhjW2ddKSl7ZT1mWzFdfHwwO2lmKGU9PWgpe3ZhciB3PWZbMl07YnJlYWsgYn1lPGsmJihrPWUsdz1mWzJdKX1xJiZ3JiYtMSE9dy5zZWFyY2goL15cXGQrXFwuXFxkKyQvKT8obi52aWQ9dyxuLmZyb21fY29va2llPSEwKTp3IT1uLnZpZCYmKG4uY2lkPXcpfW4uZGg9ZDtuLmhpZHx8KG4uaGlkPU1hdGgucm91bmQoMjE0NzQ4MzY0NypNYXRoLnJhbmRvbSgpKSk7ZD1ufVooYSxcImdhX3ZpZFwiLGQudmlkLHskOiExfSk7WihhLFwiZ2Ffc2lkXCIsZC5zaWQseyQ6ITF9KTtaKGEsXCJnYV9oaWRcIixkLmhpZCx7JDohMX0pO1ooYSxcImdhX2ZjXCIsZC5mcm9tX2Nvb2tpZSx7JDohMX0pO1ooYSxcImdhX2NpZFwiLGQuY2lkLHskOiExfSk7WihhLFwiZ2Ffd3BpZHNcIixiLmdvb2dsZV9hbmFseXRpY3NfdWFjY3QpfSxYdT1mdW5jdGlvbihhLGIpe2lmKF8ueSgzNzApKXRyeXt2YXIgYz1iLmV4dGVybmFsJiZiLmV4dGVybmFsLmdldEhvc3RFbnZpcm9ubWVudFZhbHVlJiZiLmV4dGVybmFsLmdldEhvc3RFbnZpcm9ubWVudFZhbHVlLmJpbmQoYi5leHRlcm5hbCk7aWYoYyl7dmFyIGQ9cGFyc2VJbnQoSlNPTi5wYXJzZShjKFwib3MtbW9kZVwiKSlbXCJvcy1tb2RlXCJdLDEwKTswPD1kJiZaKGEsXCJ3c21cIixkKzEpfX1jYXRjaChlKXt9fSxTdT1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP3dpbmRvdzpjO3ZhciBkPWMuZG9jdW1lbnQsZT1hLmouTjtaKGEsXCJnZGZwX3JlcVwiLDEseyQ6ITF9KTtaKGEsXCJwdnNpZFwiLGEubW9kZWwudik7WihhLFwiY29ycmVsYXRvclwiLEIoZSwyNikpO1ooYSxcIm91dHB1dFwiLGEubW9kZWwuSSx7JDohMX0pO1ooYSxcImltcGxcIixhLm1vZGVsLkcseyQ6ITF9KTtfLnkoMjAwKXx8KDA9PW5mKGUsMjQsMCkmJihaKGEsXCJhZHNpZFwiLGEubW9kZWwuRCksWihhLFwicHVjcmRcIixhLm1vZGVsLkspKSxaKGEsXCJqYXJcIixhLm1vZGVsLkgpKTtZdShhKTtpc05hTihhLm1vZGVsLldhKXx8WihhLFwicG9kXCIsYS5tb2RlbC5XYSx7JDohMX0pO2lzTmFOKGEubW9kZWwuWGEpfHxaKGEsXCJwcG9zXCIsYS5tb2RlbC5YYSx7JDohMX0pO2lzTmFOKGEubW9kZWwuSmEpfHxaKGEsXCJzY29yXCIsYS5tb2RlbC5KYSx7JDohMX0pO1p1KGEpO1ooYSxcInZyZ1wiLCRhKCkpOyR1KGEpO2F2KGEpO2J2KGEsYlswXS5tKTtaKGEsXCJzY1wiLF8uRGooNik/MTowLHtuYTohMH0pO3dpbmRvdy5wb3N0TWVzc2FnZSYmWihhLFwic2Z2XCIsWm4oKSk7WihhLFwiZWNzXCIsYS5tb2RlbC53YSk7Y3YoYSxiLGQpO2R2KGEpO2V2KGEsYik7ZnYoYSxiKTtndihhLGMpO1JrKFwiZ29vZ2xlX3ByZXZpZXdcIikmJlooYSxcImdjdFwiLFFrKFwiZ29vZ2xlX3ByZXZpZXdcIikpO2lmKGEudi52KXtaKGEsXCJpc19hbXBcIixcIjFcIik7WihhLFwiYW1wX3ZcIixLaCgpKTtaKGEsXCJhY3RcIixMaCgpKTtSaCYmIS9eaHR0cHM6XFwvXFwvZC1cXGQrXFwuYW1wcHJvamVjdFxcLm5ldFxcL1xcZCtcXC9mcmFtZVxcLmh0bWwkLy50ZXN0KGMubG9jYXRpb24uaHJlZikmJlooYSxcImF0aVwiLDEpO3ZhciBmPVNoKGMpO2YmJlooYSxcImFwblwiLGYuc3Vic3RyKDAsMTApKTt0cnl7dmFyIGc9SlNPTi5wYXJzZShjLmNvbnRleHQuY2FjaGVkRnJhbWVOYW1lXyk7Zy5hdHRyaWJ1dGVzJiZnLmF0dHJpYnV0ZXMudXNlU2FtZURvbWFpblJlbmRlcmluZ1VudGlsRGVwcmVjYXRlZCYmWihhLFwiYXNkXCIsMSl9Y2F0Y2goayl7fX0ocWcoYy50b3ApfHxQZyh3aW5kb3cuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpKSYmWihhLFwiYWJ4ZVwiLDEpO18uRGooMjUzKSYmKGY9cWooMTApKSYmWihhLFwiZXhwZmxhZ3NcIixmKTtodihhLGIsYyk7Zj17fTtmLnVfdHo9LShuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtmLnVfaGlzPXFpKCk7Zi51X2phdmE9ISFFZi5uYXZpZ2F0b3ImJlwidW5rbm93blwiIT09dHlwZW9mIEVmLm5hdmlnYXRvci5qYXZhRW5hYmxlZCYmISFFZi5uYXZpZ2F0b3IuamF2YUVuYWJsZWQmJkVmLm5hdmlnYXRvci5qYXZhRW5hYmxlZCgpO0VmLnNjcmVlbiYmKGYudV9oPUVmLnNjcmVlbi5oZWlnaHQsZi51X3c9RWYuc2NyZWVuLndpZHRoLGYudV9haD1FZi5zY3JlZW4uYXZhaWxIZWlnaHQsZi51X2F3PUVmLnNjcmVlbi5hdmFpbFdpZHRoLGYudV9jZD1FZi5zY3JlZW4uY29sb3JEZXB0aCk7RWYubmF2aWdhdG9yJiZFZi5uYXZpZ2F0b3IucGx1Z2lucyYmKGYudV9ucGx1Zz1FZi5uYXZpZ2F0b3IucGx1Z2lucy5sZW5ndGgpO0VmLm5hdmlnYXRvciYmRWYubmF2aWdhdG9yLm1pbWVUeXBlcyYmKGYudV9ubWltZT1FZi5uYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCk7aXYoYSxmKTtqdihhKTt0cnl7dmFyIGg9dWkoKX1jYXRjaChrKXtoPVwiMFwifVooYSxcImZsYXNoXCIsaCx7JDohMSxuYTohMH0pO2t2KGEsYixjKTtsdihhLGMpOyhfLnkoODQpfHx0ay5CKCkuaikmJlooYSxcInJ1bWNcIixhLm1vZGVsLnYseyQ6ITF9KTtfLnkoODMpJiZaKGEsXCJydW1lXCIsMSx7JDohMX0pO1ooYSxcInZpc1wiLF8udW4oZCkseyQ6ITF9KTswPT09TXUoXy5EaigxNzIpKXx8WihhLFwic3Rzc1wiLE11KF8uRGooMTcyKSkpOyFhLnYudiYmbXYoYykmJlooYSxcImFycFwiLDEseyQ6ITF9KTtfLnIubmF2aWdhdG9yJiZfLnIubmF2aWdhdG9yLmRldmljZU1lbW9yeSYmWihhLFwiZG1jXCIsXy5yLm5hdmlnYXRvci5kZXZpY2VNZW1vcnkpO1Z1KGEsYyk7bnYoYSxiLGMpO292KGEsYixjKTswPGEubW9kZWwubS5sZW5ndGgmJlooYSxcInBzdHNcIixhLm1vZGVsLm0pO1d1KGEpO1h1KGEsYyk7Xy55KDIzKSYmKFooYSxcImpzXCIsVnEoYykpLFooYSxcIm1zXCIsV3EoYS5tb2RlbC52LnRvU3RyaW5nKCksYykpKTtwdihhLGMsYik7cXYoYSxiLGMpO2I9QihlLDcpO2M9Xy5EaigyNTEpO18ueSgzNjMpJiZjJiZaKGEsXCJ1YWNoXCIsVmUoYywzKSk7Xy55KDMxMikmJihjPV8uRGooMjUwKSkmJjA8Yy5sZW5ndGgmJlooYSxcInR0X3N0YXRlXCIsVmUoSlNPTi5zdHJpbmdpZnkoYyksMykpO18ueSgxNjQpJiZiLmxlbmd0aCYmWihhLFwic3VwcG9ydGluZ191cmxzXCIsYi5tYXAoZnVuY3Rpb24oayl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChrKX0pKTtydihhKX0sbnY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9W107Yj1fLkYoYik7Zm9yKHZhciBmPWIubmV4dCgpOyFmLmRvbmU7Zj1iLm5leHQoKSl7Zj1mLnZhbHVlO3ZhciBnPXBhKGYpO2c9YmgoZyYmZy5wYXJlbnRFbGVtZW50JiZ3YShnLnBhcmVudEVsZW1lbnQsYyl8fG51bGwpO2lmKCFnfHwxPT1nWzBdJiYxPT1nWzNdKXt2YXIgaD0oZz1wYShmKSkmJmcucGFyZW50RWxlbWVudCxrPUlrKGgpfHxuZXcgXy5UZigwLDApO091KGssaCxjKTtkLnB1c2goay53aWR0aCtcInhcIitrLmhlaWdodCk7Zj1JayhwYShmKSl8fG5ldyBfLlRmKDAsMCk7T3UoZixnLGMsMSk7LTE9PWsuaGVpZ2h0JiYoZi5oZWlnaHQ9LTEpO2UucHVzaChmLndpZHRoK1wieFwiK2YuaGVpZ2h0KX1lbHNlIGQucHVzaChcIi0xeC0xXCIpLGUucHVzaChcIi0xeC0xXCIpfVooYSxcInBzelwiLGQse3FhOlwifFwifSk7WihhLFwibXN6XCIsZSx7cWE6XCJ8XCJ9KX0sb3Y9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuai5SO2I9Yi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGRbZS5nZXRTbG90RWxlbWVudElkKCldfSk7Yi5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1CKGUsMTYpfSkmJihaKGEsXCJydGdzXCIsYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPUIoZSwxNik/MCE9eGEoZSkubGVuZ3RoP1wiMVwiOlwiMlwiOlwiMFwifSkse3FhOlwiIVwifSksWihhLFwibWF4X3dcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdXUoTyhlLFpqLDE2KSxjKX0pLHtxYTpcIiFcIn0pLFooYSxcIm1heF9oXCIsYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHZ1KE8oZSxaaiwxNiksYyl9KSx7cWE6XCIhXCJ9KSxaKGEsXCJtaW5fd1wiLGIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB3dShPKGUsWmosMTYpKX0pLHtxYTpcIiFcIn0pLFooYSxcIm1pbl9oXCIsYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHh1KE8oZSxaaiwxNikpfSkse3FhOlwiIVwifSkpfSxzdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W107aWYobnVsbCE9PWEmJmEhPWEudG9wKXt2YXIgZT14aSghMSxhKS53aWR0aDsoLTEyMjQ1OTMzPT09Ynx8LTEyMjQ1OTMzPT09ZXx8ZTxiKSYmZC5wdXNoKDgpfS0xMjI0NTkzMyE9YiYmKGU9MStfLnJhKDQ1KSxiKmU8YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGg/ZC5wdXNoKDEwKTpjJiZfLnkoNDEzKSYmKGM9MStfLnJhKDQxNCksYS5vdXRlcldpZHRoKmM8YiYmZC5wdXNoKDEwKSkpO3JldHVybiBkfSxwdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1bXSxmPVtdLGc9Xy55KDQxMSksaD0wIT09UmcoKSxrPWc/eGkoITAsYixoKS53aWR0aDpudWxsO2cmJihkPXN2KGIsayxoKSk7Yy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBtPW5ldyBYcSxuPXBhKGwpO2w9MDtpZihuKXtnfHwoaz14aSghMCxiLGgpLndpZHRoLGQ9c3YoYixrLGgpKTtmb3IodmFyIHE9MDtuJiYxMDA+cTtxKyssbj1uLnBhcmVudEVsZW1lbnQpe3ZhciB3PXdhKG4sYik7aWYodyl7aWYody5vdmVyZmxvd1kmJlwidmlzaWJsZVwiIT09dy5vdmVyZmxvd1kpe20uc2V0KDIpO3ZhciB1PUlrKG4pO3UmJihsPWw/TWF0aC5taW4obCx1LndpZHRoKTp1LndpZHRoKTtpZihtLmdldCg5KSlicmVha31cInN0aWNreVwiIT09dy5wb3NpdGlvbiYmXCJmaXhlZFwiIT09dy5wb3NpdGlvbnx8bS5zZXQoOSk7XCJub25lXCI9PT13LmRpc3BsYXkmJm0uc2V0KDcpO1wiSUZSQU1FXCI9PT1uLm5vZGVOYW1lJiYodz1wYXJzZUludCh3LndpZHRoLDEwKSx3PGsmJihtLnNldCg4KSxsPWw/TWF0aC5taW4odyxsKTp3KSl9ZWxzZSBtLnNldCgzKX19ZWxzZSBtLnNldCgxKTtkLmZvckVhY2goZnVuY3Rpb24oQyl7cmV0dXJuIG0uc2V0KEMpfSk7ZS5wdXNoKFlxKG0pKTtmLnB1c2gobCl9KTtaKGEsXCJmd3NcIixlKTtaKGEsXCJvaHdcIixmKX0sdXY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9W10sZj1hLmosZz1mLlIsaD0hIXgoZi5OLDE1KTtpZihhLm0pYi5mb3JFYWNoKGZ1bmN0aW9uKGspe2s9UGsoe3Nsb3Q6ayxjYTpnW2suZ2V0U2xvdEVsZW1lbnRJZCgpXX0sYyxoKXx8dHY7ZC5wdXNoKE1hdGgucm91bmQoay54KSk7ZS5wdXNoKE1hdGgucm91bmQoay55KSl9KTtlbHNlIGlmKGI9KGEudi52P05oKCk6bnVsbCl8fFBrKHtzbG90OmJbMF0sY2E6Z1tiWzBdLmdldFNsb3RFbGVtZW50SWQoKV19LGMsaCkpZC5wdXNoKE1hdGgucm91bmQoYi54KSksZS5wdXNoKE1hdGgucm91bmQoYi55KSk7WihhLFwiYWR4c1wiLGQpO1ooYSxcImFkeXNcIixlKX0scXY9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhLm0pe3ZhciBkPW51bGwsZT1udWxsO3RyeXtkPXdpKGMudG9wLmRvY3VtZW50LGMudG9wKS55fWNhdGNoKGgpe3JldHVybn12YXIgZj1hLmosZz1mLlI7Zj0hIXgoZi5OLDE1KTsoYj1Qayh7c2xvdDpiWzBdLGNhOmdbYlswXS5nZXRTbG90RWxlbWVudElkKCldfSxjLmRvY3VtZW50LGYpKSYmKGU9TWF0aC5yb3VuZChiLnkpKTtjPXhpKCEwLGMpLmhlaWdodDtlJiYtMTIyNDU5MzMhPT1lJiYtMTIyNDU5MzMhPT1jJiYoZTxkK2M/WihhLFwiYnR2aVwiLDAse25hOiEwfSk6KGQ9Xy5EaigyNDgpKzEsQ2ouQigpWzI0OF09ZCxaKGEsXCJidHZpXCIsZCkpKX19LHZ2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLlI7cmV0dXJuIGIubWFwKGEubT9mdW5jdGlvbihkKXt2YXIgZT1jW2QuZ2V0U2xvdEVsZW1lbnRJZCgpXSxmO18ueSgzNjQpP2Y9ZC4kYXx8cmsoZSxNayhkLGEuaikpOmY9cmsoZSk7cmV0dXJuIGQuJGE9Zn06ZnVuY3Rpb24oZCl7dmFyIGU9YS5qLlJbZC5nZXRTbG90RWxlbWVudElkKCldO2U9ZC4kYXx8cmsoZSxNayhkLGEuaikpO3JldHVybiBkLiRhPWV9KS5qb2luKFwiLFwiKX0sa3Y9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz93aW5kb3c6Yzt2YXIgZD1jLmRvY3VtZW50O2I9KF8ueSgzNjQpP3goYS5qLk4sNik6YS5tKT91ayhhLnYubCk6dmsoYlswXSxhLmouUltiWzBdLmdldFNsb3RFbGVtZW50SWQoKV0sYnAoYS52KSl8fHVrKGEudi5sKTt2YXIgZT1SayhcImdvb2dsZV9wcmV2aWV3XCIpLGY9ZT9BayhkLlVSTCk6ZC5VUkw7ZT1lP0FrKGQucmVmZXJyZXIpOmQucmVmZXJyZXI7ZD0hMTtpZihudWxsIT1iKXt2YXIgZz1mO3lpKGMpfHwoZT1cIlwiLGQ9ITApfWVsc2UgYj1mO2Eudi52JiYoZT0oZT1KaCgpKSYmZS5yZWZlcnJlcik7Zj1uZXcgSGkoYyk7dmFyIGg9Zi5qWzBdLmRlcHRoLGs9aCYmMDxoO2lmKGsmJihaKGEsXCJuaGRcIixoKSxjLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucykpe2M9W107aD1NYXRoLm1pbihmLmoubGVuZ3RoLDI3KTtmb3IodmFyIGw9MTtsPGg7bCsrKWYualtsXSYmZi5qW2xdLnVybCYmKGNbbC0xXT1mLmpbbF0udXJsKTtjPUlpKGYsYy5yZXZlcnNlKCkpO1ooYSxcImlhZ1wiLGMpO2M9Zi5qO2g9W107Zm9yKGw9Yy5sZW5ndGgtMTswPGw7bC0tKXt2YXIgbT1jW2xdO20mJm51bGwhPW0udXJsJiZoLnB1c2gob2cobS51cmwubWF0Y2goXy5uZylbM118fG51bGwpKX1jPUVpKGgpOzA8YyYmWihhLFwibWRvXCIsYyl9WihhLFwidXJsXCIsYik7Yz1iO2g9Xy5EaigyNTIpfHx7fTtoLnVybD1jO0NqLkIoKVsyNTJdPWg7bnVsbCE9ZyYmZyE9YiYmWihhLFwibG9jXCIsZyk7WihhLFwicmVmXCIsZSk7ayYmKGc9Zi5qW01hdGgubWF4KGYuai5sZW5ndGgtMSwwKV0udXJsKSYmWihhLFwidG9wXCIsZD9vZyhnLm1hdGNoKF8ubmcpWzNdfHxudWxsKTpnKX0sbHY9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7dmFyIGM9Yi5kb2N1bWVudCxkPWMuc2NyaXB0cztkJiZaKGEsXCJkc3N6XCIsZC5sZW5ndGgpO2I9bmV3IEhpKGIpO1ooYSxcImljc2dcIixKaShiKSx7bmE6ITB9KTtiPUtpKGIpO1ooYSxcIm1zb1wiLGIpO2I9RXJyb3IoKTtpZihiLnN0YWNrKXtkPUVrKGIuc3RhY2spO2QtPTEzO2lmKDA+ZCl7ZD0wO3ZhciBlPW5ldyBXayhcImdwdF9uZWdhdGl2ZV9zdGFja190cmFjZVwiLHprKCksXy5EaigyMykpO2xiKGUsUHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGFwKGEudixmKX0pKTtFKGUsXCJzdGFja1RyYWNlXCIsYi5zdGFjayk7WWsoZSl9WihhLFwic3RkXCIsZCx7bmE6ITB9KX1jLmN1cnJlbnRTY3JpcHQmJmMuY3VycmVudFNjcmlwdC50ZXh0JiZaKGEsXCJjc2xcIixjLmN1cnJlbnRTY3JpcHQudGV4dC5sZW5ndGgpfSx3dj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5SO2E9Yi5tYXAoZnVuY3Rpb24oZCl7ZD1jW2QuZ2V0U2xvdEVsZW1lbnRJZCgpXTtyZXR1cm4gSWIoZCl9KTtmb3IoYj1hLnNoaWZ0KCl8fHt9O2EubGVuZ3RoOyliPVB1KGIsYS5zaGlmdCgpKTtyZXR1cm4gYn0sZXY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouUixkO18ueSg0OSkmJjE8Yi5sZW5ndGg/ZD14dihhLGIpOmQ9Yi5tYXAoZnVuY3Rpb24oZSl7ZT1jW2UuZ2V0U2xvdEVsZW1lbnRJZCgpXTtyZXR1cm4gS2IoZSkuam9pbihcIiZcIil9KTtiPWQ7Yi5qb2luKFwifFwiKS5sZW5ndGg9PWQubGVuZ3RoLTEmJihiPW51bGwpO1ooYSxcInByZXZfc2NwXCIsYix7cWE6XCJ8XCJ9KX0seHY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouUixkPVtdLGU9d3YoYSxiKTtiLmZvckVhY2goZnVuY3Rpb24oZyl7Zz1jW2cuZ2V0U2xvdEVsZW1lbnRJZCgpXTtnPUtiKGcsZnVuY3Rpb24oaCxrKXtrPWVba107cmV0dXJuIWt8fCFfLkEoayxcImluY2x1ZGVzXCIpLmNhbGwoayxoKX0pO2QucHVzaChnLmpvaW4oXCImXCIpKX0pO3ZhciBmPVtdO18uSmIoZSxmdW5jdGlvbihnLGgpe2c9Zy5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KTtoPWVuY29kZVVSSUNvbXBvbmVudChoKTtmLnB1c2goaCtcIj1cIitnLmpvaW4oKSl9KTtmLmxlbmd0aCYmWihhLFwiY3NwXCIsZix7cWE6XCImXCJ9KTtyZXR1cm4gZH0saXY9ZnVuY3Rpb24oYSxiKXtfLkpiKGIsZnVuY3Rpb24oYyxkKXtaKGEsZCxjLHskOiExfSl9KX0sJHU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5qLk47MCE9bmYoYiwyNCwwKSYmWihhLFwiY29cIixuZihiLDI0LDApLHtuYTohMH0pfSxidj1mdW5jdGlvbihhLGIpe2lmKCFfLnkoMzY3KSl7dmFyIGM9Xy5EaigyMjEpO2I9c2goYyxiKTtiLnJkJiZaKGEsXCJucGFcIiwxKTtaKGEsXCJndWNpXCIsYi4kYyl9fSxhdj1mdW5jdGlvbihhKXt2YXIgYj1VaihhLmouTil8fG5ldyBPajshMD09PXgoYiwxKSYmWihhLFwicmRwXCIsXCIxXCIpOyEwPT09eChiLDkpJiZaKGEsXCJsdGRcIixcIjFcIik7dmFyIGM9QihhLm8sMik7YyYmWihhLFwiZ2Rwcl9jb25zZW50XCIsYyk7bnVsbCE9QihhLm8sMykmJihjPXgoYS5vLDMpLFooYSxcImdkcHJcIixjP1wiMVwiOlwiMFwiLHtuYTohMH0pKTsoYz1CKGEubyw0KSkmJlooYSxcImFkZHRsX2NvbnNlbnRcIixjKTsoYz1CKGEubyw3KSkmJlooYSxcInRjZmVcIixjKTsoYz1CKGEubywxKSkmJlooYSxcInVzX3ByaXZhY3lcIixjKTsoeChhLm8sNil8fF8ueSgzNzMpJiZ4KGIsOCkpJiZaKGEsXCJucGFcIiwxKTtjPW5mKGIsNiwyKTsyIT09YyYmWihhLFwidGZ1YVwiLGMse25hOiEwfSk7bnVsbCE9QihiLDUpJiYoYj1CKGIsNSksWihhLFwidGZjZFwiLGIse25hOiEwfSkpfSxkdj1mdW5jdGlvbihhKXt2YXIgYj1hLmouTjsxIT1uZihiLDI0LDApJiZudWxsIT1CKGIsMTYpJiZaKGEsXCJwcGlkXCIsQihiLDE2KSx7bmE6ITB9KX0sZnY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmosZD1jLk4sZT1jLlJbYlswXS5nZXRTbG90RWxlbWVudElkKCldO2M9MSE9YS5tb2RlbC5FYTtlPSEheChlLDE3KTtiPXdrKGIsYS5qLlIsYS52LmwsYnAoYS52KSk7ZD14KGQsMjcpfHwhMTt2YXIgZj0zPT1hLm1vZGVsLkVhLGc9bmV3IFhxO2cuc2V0KDAsYyk7Zy5zZXQoMSxlKTtnLnNldCgyLGIpO2cuc2V0KDMsZCk7Zy5zZXQoNCxmKTtjPVlxKGcpOzA8YyYmWihhLFwiZXJpXCIsYyl9LGd2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLk4sZD1RdShjKTtaKGEsXCJjdXN0X3BhcmFtc1wiLGQse3FhOlwiJlwifSk7aWYoYS5EJiYwPT1uZihjLDI0LDApKXtkPVFhKFwiX19nYWRzXCIsYS5vLGEuRC5qLmRvY3VtZW50KTtaKGEsXCJjb29raWVcIixkLHtuYTohMH0pO3ZhciBlPWEuRDtpZigwPT09ZS5sKXt2YXIgZj1hLm87aWYoUWEoXCJfX2dhZHNcIixmLGUuai5kb2N1bWVudCkpZj0hMDtlbHNle3ZhciBnPWUuai5kb2N1bWVudDtnPXZvaWQgMD09PWc/ZG9jdW1lbnQ6Zzt4KGYsNSkmJihuZXcgUGEoZykpLnNldChcIkdvb2dsZUFkU2VydmluZ1Rlc3RcIixcIkdvb2RcIix2b2lkIDApO2lmKGc9XCJHb29kXCI9PT1RYShcIkdvb2dsZUFkU2VydmluZ1Rlc3RcIixmLGUuai5kb2N1bWVudCkpe3ZhciBoPWUuai5kb2N1bWVudDtoPXZvaWQgMD09PWg/ZG9jdW1lbnQ6aDt4KGYsNSkmJihmPW5ldyBQYShoKSxmLmdldChcIkdvb2dsZUFkU2VydmluZ1Rlc3RcIiksZi5zZXQoXCJHb29nbGVBZFNlcnZpbmdUZXN0XCIsXCJcIix7d2M6MCxwYXRoOnZvaWQgMCxkb21haW46dm9pZCAwfSkpfWY9Z31lLmw9Zj8yOjF9Mj09PWUubCYmIWQmJlooYSxcImNvb2tpZV9lbmFibGVkXCIsXCIxXCIse25hOiEwfSl9KGQ9QihjLDgpKT8oNTA8ZC5sZW5ndGgmJihkPWQuc3Vic3RyaW5nKDAsNTApKSxkPVwiYSBcIitWZSgncm9sZToxIHByb2R1Y2VyOjEyIGxvYzpcIicrKGQrJ1wiJykpKTpkPVwiXCI7ZCYmWihhLFwidXVsZVwiLGQpOzA9PW5mKGMsMjQsMCkmJihjPWIuZG9jdW1lbnQsKGI9KHVrKGEudi5sKXx8ZGIoYikpIT1jLlVSTD9jLmRvbWFpbjpcIlwiKSYmWihhLFwiY2RtXCIsYikpO18ueSg2KXx8KGI9bmV3IFhxLF8uci5TVkdFbGVtZW50JiZfLnIuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TJiZiLnNldCgwKSxjPU9nKCksY1tcImFsbG93LXRvcC1uYXZpZ2F0aW9uLWJ5LXVzZXItYWN0aXZhdGlvblwiXSYmYi5zZXQoMSksY1tcImFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveFwiXSYmYi5zZXQoMiksXy5yLmNyeXB0byYmXy5yLmNyeXB0by5zdWJ0bGUmJmIuc2V0KDMpLF8uci5UZXh0RGVjb2RlciYmXy5yLlRleHRFbmNvZGVyJiZiLnNldCg0KSxiPVlxKGIpLFooYSxcImJjXCIsYikpfSxodj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yy5kb2N1bWVudDswPG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgXCIpJiZ3byhhLnYubCxcImFkc2Vuc2VfZW5jb2RpbmdcIixkLmNoYXJzZXQsITEpO2lmKCF1ayhhLnYubCkpe3RyeXt2YXIgZT1NYXRoLnJvdW5kKERhdGUucGFyc2UoYy5kb2N1bWVudC5sYXN0TW9kaWZpZWQpLzFFMyl8fG51bGx9Y2F0Y2gobSl7ZT1udWxsfVooYSxcImxtdFwiLGU/ZS50b1N0cmluZygpOm51bGwpfWU9Xy55KDQzKT9fLk5pKCk6KG5ldyBEYXRlKS5nZXRUaW1lKCk7WihhLFwiZHRcIixlLHskOiExfSk7dHJ5e2U9SHU7dmFyIGY9TWF0aC5taW4oUGkoXCJkb21Mb2FkaW5nXCIpfHxJbmZpbml0eSxQaShcImRvbUludGVyYWN0aXZlXCIpfHxJbmZpbml0eSk7dmFyIGc9SW5maW5pdHk9PWY/TWF0aC5tYXgoUGkoXCJyZXNwb25zZUVuZFwiKSxQaShcIm5hdmlnYXRpb25TdGFydFwiKSk6ZjswPGcmJmU+PWcmJihaKGEsXCJkbHRcIixnLHskOiExfSksWihhLFwiaWR0XCIsZS1nLHskOiExfSkpfWNhdGNoKG0pe1ooYSxcImlkdFwiLC05LHskOiExfSksYmwoNDc5LG0pfWlmKG51bGw9PU51KXthOntnPWMubmF2aWdhdG9yO2Y9Zy51c2VyQWdlbnQ7ZT1nLnBsYXRmb3JtO3ZhciBoPS9XZWJLaXRcXC8oXFxkKykvLGs9L3J2OihcXGQrXFwuXFxkKykvLGw9L3J2OjFcXC44KFteLl18XFwuMCkvO2lmKC9XaW58TWFjfExpbnV4fGlQYWR8aVBvZHxpUGhvbmUvLnRlc3QoZSkmJiEvXk9wZXJhLy50ZXN0KGYpJiYoaD0oaC5leGVjKGYpfHxbMCwwXSlbMV0saz0oay5leGVjKGYpfHxbMCwwXSlbMV0sL1dpbi8udGVzdChlKSYmL1RyaWRlbnQvLnRlc3QoZikmJjExPD1kLmRvY3VtZW50TW9kZXx8IWgmJlwiR2Vja29cIj09PWcucHJvZHVjdCYmMjc8PWsmJiFsLnRlc3QoZil8fDUzNjw9aCkpe2c9ITA7YnJlYWsgYX1nPSExfWY9emkoYyxjLmRvY3VtZW50LDUwMCwzMDApO051PWcmJiFmfU51fHxaKGEsXCJlYVwiLFwiMFwiLHtuYTohMH0pO2Y9Zz1vaSgpO2ZvcihlPTA7ZyYmZyE9Zy5wYXJlbnQ7KWc9Zy5wYXJlbnQsZSsrLHFnKGcpJiYoZj1nKTtlPWY7Zz1lLmxvY2F0aW9uLmhyZWY7ZT09ZS50b3A/Zz17dXJsOmcsdmM6ITB9OihmPSExLChsPWUuZG9jdW1lbnQpJiZsLnJlZmVycmVyJiYoZz1sLnJlZmVycmVyLGUucGFyZW50PT1lLnRvcCYmKGY9ITApKSwoZT1lLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucykmJihlPWVbZS5sZW5ndGgtMV0pJiYtMT09Zy5pbmRleE9mKGUpJiYoZj0hMSxnPWUpLGc9e3VybDpnLHZjOmZ9KTtmPWc7Zz16aShvaSgpLGQsYy5nb29nbGVfYWRfd2lkdGgsYy5nb29nbGVfYWRfaGVpZ2h0KTtmPWYudmM7ZT1vaSgpO2U9ZS50b3A9PWU/MDpxZyhlLnRvcCk/MToyO2w9NDtnfHwxIT1lP2d8fDIhPWU/ZyYmMT09ZT9sPTc6ZyYmMj09ZSYmKGw9OCk6bD02Omw9NTtmJiYobHw9MTYpO2c9XCJcIitsO0FpKCk7WihhLFwiZnJtXCIsZ3x8bnVsbCk7Zz1hLnYudj8oZz1NaCgpKSYmXy5NYyhnLnJvb3RCb3VuZHMpP25ldyBfLlRmKGcucm9vdEJvdW5kcy53aWR0aCxnLnJvb3RCb3VuZHMuaGVpZ2h0KTpudWxsOnhpKCEwLGMsXy55KDI4MCkmJjAhPT1SZygpKTtnJiYoYS5qLm9hPWcsWihhLFwiYml3XCIsZy53aWR0aCksWihhLFwiYmloXCIsZy5oZWlnaHQpKTsheWkoYykmJihnPXhpKCExLGMpKSYmKFooYSxcImlzd1wiLGcud2lkdGgpLFooYSxcImlzaFwiLGcuaGVpZ2h0KSk7YS5tb2RlbC5vJiZaKGEsXCJvaWRcIixhLm1vZGVsLm8pO3V2KGEsYixkKTtaKGEsXCJhZGtzXCIsdnYoYSxiKSk7ZD0wO3ZvaWQgMD09PV8uci5wb3N0TWVzc2FnZSYmKGR8PTEpOzA8ZCYmWihhLFwib3NkXCIsZCk7eXYoYSk7ZD14byhiLGEudi5sLGJwKGEudiksYS5JKTtaKGEsXCJhZHNlbnNlUGFyYW1ldGVyc1wiLGQseyQ6ITF9KTtkPXJpKGMpO2EuRz8oWihhLFwiaWZpXCIsZCsxKSxkPWMsYj1iLmxlbmd0aCxiPXZvaWQgMD09PWI/MTpiLGQ9T2goSmgoZCkpfHxkLGQuZ29vZ2xlX3VuaXF1ZV9pZD0oZC5nb29nbGVfdW5pcXVlX2lkfHwwKStiKTpaKGEsXCJpZmlcIixkKTtudWxsIT09YyYmYyE9Yy50b3A/KGI9W2MuZG9jdW1lbnQuVVJMXSxjLm5hbWUmJmIucHVzaChjLm5hbWUpLGM9eGkoITEsYywhMSksYi5wdXNoKGMud2lkdGgudG9TdHJpbmcoKSksYi5wdXNoKGMuaGVpZ2h0LnRvU3RyaW5nKCkpLGM9Q2coYi5qb2luKFwiXCIpKSk6Yz0wOzAhPWMmJlooYSxcImlma1wiLGMudG9TdHJpbmcoKSl9LGp2PWZ1bmN0aW9uKGEpe3ZhciBiPV8uci5kZXZpY2VQaXhlbFJhdGlvOyhiPVwibnVtYmVyXCI9PT10eXBlb2YgYj8rYi50b0ZpeGVkKDMpOm51bGwpJiZaKGEsXCJ1X3NkXCIsYix7JDohMX0pfSxadT1mdW5jdGlvbihhKXtaKGEsXCJlaWRcIixhLm1vZGVsLlUpO3ZhciBiPU1pKCkuc3BsaXQoXCIsXCIpO2ImJlooYSxcImRlYnVnX2V4cGVyaW1lbnRfaWRcIixiKX0sY3Y9ZnVuY3Rpb24oYSxiLGMpe2IuZm9yRWFjaChmdW5jdGlvbihsKXt6dihhLGwuZ2V0QWRVbml0UGF0aCgpKX0pO3ZhciBkPWEuaixlPWQuTixmPWQuUjtkPWIubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBmW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXX0pO1ooYSxcIml1X3BhcnRzXCIsYS5BKTtaKGEsXCJlbmNfcHJldl9pdXNcIixhLlUpO1ooYSxcInByZXZfaXVfc3pzXCIsZC5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIFNiKGwpfSkuam9pbigpKTtpZihkLnNvbWUoZnVuY3Rpb24obCl7cmV0dXJuKHo9eGEobCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LFwiZmx1aWRcIil9KSl7dmFyIGc9ZC5tYXAoZnVuY3Rpb24obCl7cmV0dXJuKHo9eGEobCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LFwiZmx1aWRcIik/XCJoZWlnaHRcIjpcIjBcIn0pO1ooYSxcImZsdWlkXCIsZyl9WihhLFwiZnNmc1wiLEhiKGIsZnVuY3Rpb24obCl7bD0obD1mW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXSkmJngobCwxMik7dmFyIG09ISF4KGUsMTMpO3JldHVybihudWxsPT1sP206bCk/MTowfSkpO1ooYSxcImZzYnNcIixIYihiLGZ1bmN0aW9uKGwpe3ZhciBtPWEuaixuPW0uTjtsPW0uUltsLmdldFNsb3RFbGVtZW50SWQoKV07bj1PKG4sUGosMTgpO3JldHVybigobD1sJiZPKGwsUGosMTMpKSYmbnVsbCE9QihsLDMpP3gobCwzKTpuJiZ4KG4sMykpPzE6MH0pKTtBdihhLGIpO0J2KGEsZltiWzBdLmdldFNsb3RFbGVtZW50SWQoKV0pOyhnPUN2KGQpKSYmWihhLFwiaXN0c1wiLGcpO1ooYSxcImZhc1wiLEhiKGQsZnVuY3Rpb24obCl7cmV0dXJuIGxwKGdrKGwpKX0pKTsoZz1EdihkLGZ1bmN0aW9uKGwpe3JldHVybiA0PT1nayhsKX0pKSYmWihhLFwicmJ2c1wiLGcpO18ueSg5OCkmJihiPUR2KGIsZnVuY3Rpb24obCl7dmFyIG09ZltsLmdldFNsb3RFbGVtZW50SWQoKV0sbjtpZihuPSFscChnayhtKSkpe249bnVsbDtBcnJheS5pc0FycmF5KHhhKG0pWzBdKSYmKG49Xy5GKHhhKG0pWzBdKSxtPW4ubmV4dCgpLnZhbHVlLG49bi5uZXh0KCkudmFsdWUsbj17d2lkdGg6bSxoZWlnaHQ6bn0pO2E6e3ZhciBxPXRhKGwsYyk7bD17R2M6bixsYzohMX07dmFyIHc9dm9pZCAwPT09bD97fTpsO2w9dm9pZCAwPT09dy5HYz9udWxsOncuR2M7bT12b2lkIDA9PT13LmpkPzEwMDp3LmpkO249dm9pZCAwPT09dy5DZD81MDp3LkNkO3c9dm9pZCAwPT09dy5sYz8hMDp3LmxjO2Zvcih2YXIgdT1UYygpLEM9ITE7cTspe2lmKCFtLS18fFRjKCktdT49bil7bj0hMTticmVhayBhfXN3aXRjaChxLm5vZGVUeXBlKXtjYXNlIDk6dHJ5e3ZhciBRPXEucGFyZW50V2luZG93fHxxLmRlZmF1bHRWaWV3O2lmKFEpe3ZhciBOPVEuZnJhbWVFbGVtZW50O2lmKE4mJnFnKFEucGFyZW50KSl7cT1OO2JyZWFrfX19Y2F0Y2goeGMpe31xPW51bGw7YnJlYWs7Y2FzZSAxOnZhciBIPXEscWE7aWYocWE9dyl7Yjp7dHJ5e2lmKDA8SC5vZmZzZXRXaWR0aCYmMDxILm9mZnNldEhlaWdodCYmSC5zdHlsZSYmXCJub25lXCIhPT1ILnN0eWxlLmRpc3BsYXkmJlwiaGlkZGVuXCIhPT1ILnN0eWxlLnZpc2liaWxpdHkmJighSC5zdHlsZS5vcGFjaXR5fHwwIT09TnVtYmVyKEguc3R5bGUub3BhY2l0eSkpKXt2YXIgb2I9SC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt2YXIgd2M9MDxvYi5yaWdodCYmMDxvYi5ib3R0b207YnJlYWsgYn19Y2F0Y2goeGMpe313Yz0hMX1xYT0hd2N9aWYocWEpe249ITE7YnJlYWsgYX1DfHwoL15odG1sfGJvZHkkL2kudGVzdChILnRhZ05hbWUpP0M9bnVsbDooQz1ILnN0eWxlLnBvc2l0aW9ufHwod2EoSCx3aW5kb3cpfHx7fSkucG9zaXRpb24sQz0vXmZpeGVkL2kudGVzdChDKT9IOm51bGwpLEM9ISFDJiYoIWx8fEMub2Zmc2V0V2lkdGgqQy5vZmZzZXRIZWlnaHQ8PTQqbC53aWR0aCpsLmhlaWdodCkpO3E9cS5wYXJlbnROb2RlfX1uPUN9fXJldHVybiBufSkpJiZaKGEsXCJwZnhzXCIsYik7dmFyIGg9e307ZC5mb3JFYWNoKGZ1bmN0aW9uKGwpeyhsPWwuZ2V0Q2xpY2tVcmwoKSkmJihoW2xdPShoW2xdfHwwKSsxKX0pO2lmKCF5ZyhoKSl7Yj1uZXcgV2soXCJncHRfc3JhX3NldGNsaWNrdXJsXCIpO3ZhciBrPVtdO18uSmIoaCxmdW5jdGlvbihsLG0pe2sucHVzaChtLmxlbmd0aCtcIjpcIitsKX0pO0UoYixcImxlbmZyZXFzXCIsay5qb2luKCkpO2xiKGIpO1lrKGIsXy5Eaig1OCkpfX0sQnY9ZnVuY3Rpb24oYSxiKXsoXy55KDM2NCk/eChhLmouTiw2KTphLm0pfHwhYi5nZXRDbGlja1VybCgpfHxaKGEsXCJjbGlja1wiLGIuZ2V0Q2xpY2tVcmwoKSl9LEV2PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspaWYoXCJcIiE9YltjXSl7Zm9yKHZhciBkPSExLGU9MDtlPGEuQS5sZW5ndGg7ZSsrKWlmKGJbY109PWEuQVtlXSl7ZD0hMDticmVha31kfHxhLkEucHVzaChiW2NdKX19LEZ2PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVwiXCIsZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtpZigwPGQpYys9XCIvXCI7ZWxzZSBpZihcIlwiPT1iWzBdKWNvbnRpbnVlO2Zvcih2YXIgZT0wO2U8YS5BLmxlbmd0aDtlKyspaWYoYltkXT09YS5BW2VdKXtjKz1lO2JyZWFrfX1yZXR1cm4gY30senY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1cIlwiO1wiXCIhPWImJihiPWIuc3BsaXQoXCIvXCIpLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC5yZXBsYWNlKC8sL2csXCI6XCIpfSksRXYoYSxiKSxjPUZ2KGEsYikpO2EuVS5wdXNoKGMpfSxDdj1mdW5jdGlvbihhKXtyZXR1cm4gRHYoYSxmdW5jdGlvbihiKXtyZXR1cm4gMCE9Z2soYil9KX0sRHY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgWHE7YS5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7Yy5zZXQoYS5sZW5ndGgtZS0xLGIoZCkpfSk7cmV0dXJuIFlxKGMpfSx5dj1mdW5jdGlvbihhKXt2YXIgYj1hLm1vZGVsLmoubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBGdChhLm1vZGVsLGMpfSk7WihhLFwidWNpc1wiLGIse3FhOlwifFwifSl9LFl1PWZ1bmN0aW9uKGEpe3ZhciBiPWEuai5OO3goYiwyMSkmJihaKGEsXCJoeHZhXCIsMSx7JDohMX0pLFooYSxcImNtc2lkXCIsQihiLDIzKSksWihhLFwidmlkXCIsQihiLDIyKSkpfSxBdj1mdW5jdGlvbihhLGIpe3ZhciBjPUhiKGIsZnVuY3Rpb24oZCl7ZD1kLlc7dmFyIGU9Xy5PaSgpO3JldHVybiBNYXRoLnJvdW5kKE1hdGgubWluKChkJiZlP2UtZDowKS8xRTMsMTgwMCkpfSx2b2lkIDAsXCJ+XCIpO1ooYSxcInJpc1wiLGMpO2I9SGIoYixmdW5jdGlvbihkKXthLkcmJihkLlc9Xy5PaSgpfHwwLGQuQSsrKTtyZXR1cm4gZC5BLTF9KTtaKGEsXCJyY3NcIixiKX0scnY9ZnVuY3Rpb24oYSl7aWYoIV8uRGooMjIxKSYmXy55KDMwOCkpe3ZhciBiPW5ldyBocTtmb3IodmFyIGM9W10sZD0vXl9HRVNQU0stKC4rKSQvLGU9MDtlPHdpbmRvdy5sb2NhbFN0b3JhZ2UubGVuZ3RoO2UrKyl7dmFyIGY9KGQuZXhlYyh3aW5kb3cubG9jYWxTdG9yYWdlLmtleShlKSl8fFtdKVsxXTtmJiZjLnB1c2goZil9Yz1fLkYoYyk7Zm9yKGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWQ9ZC52YWx1ZSxlPWhiKCkuZ2V0KGQpLGUuZ2V0RXJyb3IoKT9pYihlLmdldEVycm9yKCksZCxlLmVycm9yTWVzc2FnZSk6KGQ9ZS5JYSwwIT09bXUoZCkmJjEhPT1tdShkKXx8eGYoYiwyLGQsa3EpKTt1ZihiLGtxLDIpLmxlbmd0aD8oYz1uZXcgV2UsZD11ZihiLGlxLDEpLDA8ZC5sZW5ndGgmJmZmKGMsMSxkLGxxKSxkPXVmKGIsa3EsMiksMDxkLmxlbmd0aCYmZmYoYywyLGQsbXEpLGI9VWUoWmUoYyksdm9pZCAwKSk6Yj1udWxsO1ooYSxcImEzcFwiLGIpfX0sWj1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/e306ZDthLkhbYl18fHZvaWQgMD09PWN8fG51bGw9PT1jfHxhLkMucHVzaCh7cGI6Yix2YWx1ZTpjLG9wdGlvbnM6ZH0pfSxUdT1mdW5jdGlvbihhKXt2YXIgYj1fLnkoMzg3KSYmIXgoYS5vLDUpP1wiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9nYW1wYWQvYWRzP1wiOlwiXCIrXy5EaigyNDcpK1wiL2dhbXBhZC9hZHM/XCI7YS5sPWI7Zm9yKGI9MDtiPGEuQy5sZW5ndGg7YisrKXt2YXIgYz1hLkNbYl07aWYoXCJhZHNlbnNlUGFyYW1ldGVyc1wiPT09Yy5wYilHdihhLGMpO2Vsc2V7dmFyIGQ9SHYoYyk7aWYoSXYoYSxiLGMsZCkpYnJlYWt9fX0sSHY9ZnVuY3Rpb24oYSl7dmFyIGI9YS52YWx1ZSxjPWEub3B0aW9ucyxkPXZvaWQgMD09PWMuJD8hMDpjLiQ7YT12b2lkIDA9PT1jLnFhP1wiLFwiOmMucWE7Yz12b2lkIDA9PT1jLm5hPyExOmMubmE7cmV0dXJuIF8uTWMoYik/QXJyYXkuaXNBcnJheShiKSYmYi5sZW5ndGg/Yi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEp2KGUsZCl9KS5qb2luKEp2KGEsZCkpOm51bGw6bnVsbD09Ynx8IWMmJjA9PWI/bnVsbDpKdihiLGQpfSxJdj1mdW5jdGlvbihhLGIsYyxkKXtpZighZClyZXR1cm4hMTt2YXIgZT1jLnBiLGY9Yy52YWx1ZTtjPWMub3B0aW9ucztjPXZvaWQgMD09PWMuJD8hMDpjLiQ7ZD1lK1wiPVwiK2Q7aWYoXy55KDE2OCkmJjE1MzUyPD1hLmwubGVuZ3RoK2QubGVuZ3RoKXtpZihcInN1cHBvcnRpbmdfdXJsc1wiPT1lKWZvcihkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBnPShkP0p2KFwiLFwiLGMpOlwiJlwiK2UrXCI9XCIpK0p2KGZbZF0sYyk7aWYoMTUzNTI8YS5sLmxlbmd0aCtnLmxlbmd0aClicmVhazthLmwrPWd9a2IoXCJncHRfdXJsX3RydW5jXCIsZnVuY3Rpb24oaCl7RShoLFwibHBzXCIsYS5DLnNsaWNlKGIpLmZpbHRlcihmdW5jdGlvbihrKXtyZXR1cm4hIUh2KGspfSkubWFwKGZ1bmN0aW9uKGspe3JldHVybiBrLnBifSkuam9pbigpKTtsYihoKX0pO2EubCs9XCImdHJ1bmM9MVwiO3JldHVybiEwfVwiP1wiIT09YS5sW2EubC5sZW5ndGgtMV0mJihhLmwrPVwiJlwiKTthLmwrPWQ7cmV0dXJuITF9LEd2PWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1bXTtiPV8uRihBcnJheS5pc0FycmF5KGIudmFsdWUpP2IudmFsdWU6W10pO2Zvcih2YXIgZT1iLm5leHQoKTshZS5kb25lO2U9Yi5uZXh0KCkpe3ZhciBmPWUudmFsdWU7ZT1mLnBiO3ZhciBnPWYubmQsaD1mLnpkO2Y9Zz9lbmNvZGVVUklDb21wb25lbnQoZy50b1N0cmluZygpKTpcIlwiO2g/KGc9aC5tYXAoZnVuY3Rpb24oayl7cmV0dXJuIGs/ZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudChrKSk6XCJcIn0pLmpvaW4oXCIsXCIpLGQucHVzaChlK1wiLFwiK2VuY29kZVVSSUNvbXBvbmVudChmKStcIixcIitnKSk6ZyYmXCJ1cmxcIiE9ZSYmYy5wdXNoKGUrXCI9XCIrZil9Yy5sZW5ndGgmJihhLmwrPVwiJlwiK2Muam9pbihcIiZcIikpO2QubGVuZ3RoJiYoYS5sKz1cIiZzcHM9XCIrZC5qb2luKFwifFwiKSl9LG12PWZ1bmN0aW9uKGEpe2E9cWcoYS50b3ApP2EudG9wOmE7cmV0dXJuIF8uTWMoYS5BTVApJiYhIUJnKGEuQU1QLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIS9eaW5hYm94L2kudGVzdChjKX0pfSxKdj1mdW5jdGlvbihhLGIpe2E9YS50b1N0cmluZygpO3JldHVybiBiP2VuY29kZVVSSUNvbXBvbmVudChhKTphfSx0dj1uZXcgXy55YSgtOSwtOSk7dmFyIEt2PW51bGwsTnY9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuaj1uZXcgdC5TZXQ7dGhpcy5sPW5ldyB0Lk1hcDt0aGlzLnY9dGsuQigpO18udihfLnIsXCJET01Db250ZW50TG9hZGVkXCIsRygzMzQsZnVuY3Rpb24oKXtmb3IodmFyIGI9Xy5GKF8uQShhLmosXCJ2YWx1ZXNcIikuY2FsbChhLmopKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsTHYoYSxjKSYmYS5qLmRlbGV0ZShjKX0pKTtTbyhJLkIoKSxObyw3MjQsZnVuY3Rpb24oYil7KGI9UXAuQigpLmouZ2V0KGIpfHxudWxsKSYmTXYoYSxiKX0pO1NvKEkuQigpLE9vLDcyNSxmdW5jdGlvbihiKXtpZihiPVFwLkIoKS5qLmdldChiKXx8bnVsbCl7dmFyIGM9YS5sLmdldChiKTtudWxsIT1jP3F0KGMsYi5sKTpNdihhLGIpfX0pfSxNdj1mdW5jdGlvbihhLGIpe0x2KGEsYik/YS5qLmRlbGV0ZShiKTooYS5qLmFkZChiKSxfLlIoYixmdW5jdGlvbigpe2Euai5kZWxldGUoYil9KSl9LEx2PWZ1bmN0aW9uKGEsYil7dmFyIGM9cGEoYixfLnIuZG9jdW1lbnQpO2lmKGMmJlwiRElWXCI9PWMubm9kZU5hbWUpe3ZhciBkPV8ueSg4Nyk7Yz1uZXcgb3Qoe0w6Xy5yLFZhOmEudixrYjpjLHJhOmZ1bmN0aW9uKGUpe2JsKDMzNixlLDEpfSx4ZDpkfSk7aWYoYy52KXJldHVybiBxdChjLGIubCksYS5sLnNldChiLGMpLGxvKGIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmwuZGVsZXRlKGIpfSksITB9cmV0dXJuITF9O3ZhciBMYj1uZXcgdC5TZXQ7dmFyIE92PWZ1bmN0aW9uKGEsYil7Yj1lbmNvZGVVUklDb21wb25lbnQoYik7Yj1CZChcImRhdGE6dGV4dC9odG1sLFwiK2IpO2Euc3JjPXlkKGIpLnRvU3RyaW5nKCl9O3ZhciBQdj1mdW5jdGlvbihhLGIpe3JldHVybiBNYXRoLm1heChcInN0cmluZ1wiPT09dHlwZW9mIGE/Xy5BKGEsXCJlbmRzV2l0aFwiKS5jYWxsKGEsXCJweFwiKT9wYXJzZUludChhLDEwKTowOmEsYikrXCJweFwifSxRdj1mdW5jdGlvbihhLGIsYyxkLGUpe2E9amcobmV3IFVmKGEpLFwiRElWXCIpO2EuaWQ9YzthLm5hbWU9YztjPWEuc3R5bGU7Yy5ib3JkZXI9XCIwcHQgbm9uZVwiO2QmJihjLm1hcmdpbj1cImF1dG9cIixjLnRleHRBbGlnbj1cImNlbnRlclwiKTtlJiYoZD1BcnJheS5pc0FycmF5KGUpLGMud2lkdGg9ZD9lWzBdK1wicHhcIjpcIjEwMCVcIixjLmhlaWdodD1kP2VbMV0rXCJweFwiOlwiMCVcIik7Yi5hcHBlbmRDaGlsZChhKTtyZXR1cm4gYX0sU3Y9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxtLG4pe3ZhciBxPVJ2LHc9bnAuQigpLnYsdTtBcnJheS5pc0FycmF5KGQpP3U9bmV3IF8uVGYoZFswXSxkWzFdKTp1PTE7ZD1ofHx4KGYsNCl8fF8ueSgyNDIpJiZudWxsPT1CKGYsNCk/TGsoKTp2b2lkIDA7Zz1nfHx2b2lkIDA7Xy55KDM1NCl8fChnPV8ueSgzMzgpP2Z0OmN0LGc9eChmLDMpP2c6dm9pZCAwKTtyZXR1cm4gbmV3IFlzKHtUYjphLHRjOmIsYWQ6cSxjb250ZW50Om51bGw9PT1sP3VzKGMpOlwiPHN0YXJ0Z3VhcmQ+XCIrYytcIjxlbmRndWFyZD5cIixzaXplOnUsaGQ6e2luZm86ZnVuY3Rpb24oKXt9LEo6ZnVuY3Rpb24oKXt9LGVycm9yOmZ1bmN0aW9uKCl7fX0sU2M6ayx5YzplLEZjOmcscGVybWlzc2lvbnM6e3diOm51bGwhPUIoZiwxKT8hIXgoZiwxKTohaCx4YjpudWxsIT1CKGYsMik/ISF4KGYsMik6ITF9LG5iOiEhWGIoKS5maWZXaW4sdGQ6Wm4oKSxQYzokbigpLEpjOiExLGhvc3RwYWdlTGlicmFyeVRva2Vuczp3LHJhOmJsLGFiOm51bGw9PT1sP3ZvaWQgMDpsLHVuaXF1ZUlkOm4sd2E6bSxFYzpkfSl9LFR2PWZ1bmN0aW9uKGEsYil7dmFyIGM9VHMoNDk1LGZ1bmN0aW9uKCl7YS5yZW1vdmVFdmVudExpc3RlbmVyKFwibG9hZFwiLGMpO2IoKX0sYmwpO2EuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixjKX0sVXY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXZvaWQgMD09PWQ/ITA6ZDt2YXIgZT12b2lkIDA9PT1lPyEwOmU7Yj11cyhiLFwiPHNjcmlwdD52YXIgaW5EYXBJRj10cnVlLGluR3B0SUY9dHJ1ZTtcXHgzYy9zY3JpcHQ+XCIpO3RyeXt2YXIgZj1hLmNvbnRlbnRXaW5kb3c/YS5jb250ZW50V2luZG93LmRvY3VtZW50OmEuY29udGVudERvY3VtZW50O2QmJiRkKCkmJmYub3BlbihcInRleHQvaHRtbFwiLFwicmVwbGFjZVwiKTtjKCk7Zi53cml0ZShiKTthLmNvbnRlbnRXaW5kb3cmJmEuY29udGVudFdpbmRvdy5oaXN0b3J5JiZhLmNvbnRlbnRXaW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUmJkVkKGEuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmLFwiI1wiKSYmYS5jb250ZW50V2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsXCJcIixcIiNcIitNYXRoLnJhbmRvbSgpKTtlJiZmLmNsb3NlKCl9Y2F0Y2goZyl7Y2woNjUzLGcsITApfX0sVnY9ZnVuY3Rpb24oYSl7dHJ5e1R2KGEsZnVuY3Rpb24oKXthLnJlbW92ZUF0dHJpYnV0ZShcIm5hbWVcIil9KSxPdihhLCc8c2NyaXB0PmRvY3VtZW50Lm9wZW4oXCJ0ZXh0L2h0bWxcIixcInJlcGxhY2VcIik7dmFyIGE9d2luZG93Lm5hbWU7d2luZG93Lm5hbWU9XCJcIjtkb2N1bWVudC53cml0ZShhKTtkb2N1bWVudC5jbG9zZSgpO1xceDNjL3NjcmlwdD4nKX1jYXRjaChiKXtjbCg2NjgsYiwhMCl9fTt2YXIgV3Y9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5yYSg4LC0xKTtyZXR1cm4tMSE9Yj9iOm51bGwhPUIoYSwxKT9udWxsIT1CKGEsMykmJjAhPVJnKCk/QihhLDEpKmxmKGEsMyk6QihhLDEpOm51bGx9LFh2PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1CKGEsMik/bnVsbCE9QihhLDMpJiYwIT1SZygpP0IoYSwyKSpsZihhLDMpOkIoYSwyKTpudWxsfSxZdj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgTmo7YT1fLkYoYSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSl7Yz1jLnZhbHVlO2lmKG51bGwhPUIoYywxKSl7dmFyIGQ9QihjLDEpO0QoYiwxLGQpfW51bGwhPUIoYywyKSYmKGQ9QihjLDIpLEQoYiwyLGQpKTtudWxsIT1CKGMsMykmJihjPWxmKGMsMyksRChiLDMsYykpfXJldHVybiBifTt2YXIgWnY9ZnVuY3Rpb24oKXt0aGlzLm1vZHVsZT0yfTtadi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMubW9kdWxlKX07Xy4kdj1uZXcgWnY7dmFyIGF3LGJ3LGV3O2F3PXt9O2J3PShhd1syXT17a2Q6XCJwYWdlX2xldmVsX2Fkc1wifSxhdyk7Xy5jdz1mdW5jdGlvbigpe3RoaXMubD17fTt0aGlzLmo9Ynd9O18uZHc9ZnVuY3Rpb24oYSxiKXtiPWIubW9kdWxlO2EubFtiXT1hLmxbYl18fG5ldyBCcjtyZXR1cm4gYS5sW2JdfTtldz1mdW5jdGlvbihhLGIpe3ZhciBjPWIubW9kdWxlO2I9XCJfZ3B0X2pzX2xvYWRfXCIrYytcIl9cIjt2YXIgZD1HKDM0MCxmdW5jdGlvbihlKXtpZihhLmpbY10mJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlKXt2YXIgZj1hLmpbY107Zj0odm9pZCAwPT09Zi5RYz9bXTpmLlFjKS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIF8uZHcoYSxnKS5qfSk7dC5Qcm9taXNlLmFsbChmKS50aGVuKGZ1bmN0aW9uKCl7ZS5jYWxsKF8ucixfKX0pfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShYYigpLGIse3ZhbHVlOmZ1bmN0aW9uKGUpe2lmKGQpe3ZhciBmPWQ7ZD1udWxsO2YoZSl9fSx3cml0YWJsZTohMSxlbnVtZXJhYmxlOiExfSl9O18uY3cucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5kdyh0aGlzLGEpLGM9dGhpcy5qW2EubW9kdWxlXS5rZCxkPV8ueSgzOTMpP1wiaHR0cHM6Ly93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL1wiOndzLk5hKCksZT12cy5OYSgpLGY9JGEoKTt2YXIgZz1fLnJhKDI1KTtjPWQrZStjK1wiX1wiK2YrXCIuanNcIjtnJiYoYys9XCI/XCIrZyk7Zz1jO2V3KHRoaXMsYSk7dWcoZG9jdW1lbnQsbGcoZykpO3JldHVybiBiLmp9O0ljKF8uY3cpO18uY3cucHJvdG90eXBlLmxvYWQ9R2IoXy5jdy5wcm90b3R5cGUubG9hZCk7dmFyIFJ2PVwiM3JkIHBhcnR5IGFkIGNvbnRlbnRcIjtXYihcInNldEFkSWZyYW1lVGl0bGVcIixTKDcyOSxmdW5jdGlvbihhKXtSdj1hfSkpO3ZhciBmdz1mdW5jdGlvbihhLGIsYyl7ZWwuY2FsbCh0aGlzKTt0aGlzLmw9YztEKHRoaXMubCwxNywhMCk7dGhpcy5qPWE7Yi54YSh0aGlzLmosYyk7dGhpcy5vPWJ9O18uSihmdyxvbCk7ZncucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBSdCh0aGlzKX07ZncucHJvdG90eXBlLmRpc3BsYXk9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5qLmdldFNsb3RFbGVtZW50SWQoKTtkb2N1bWVudC53cml0ZSgnPGRpdiBpZD1cIicrZ2UoYikrJ1wiPjwvZGl2PicpO3BhKHRoaXMuaik/Z3codGhpcy5vLGEsdGhpcy5qKTprYihcImdwdF9wYl93cml0ZVwiLGZ1bmN0aW9uKGMpe2xiKGMpfSl9O2Z3LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXtcInBhZ2VfdXJsXCI9PWEmJmImJkQodGhpcy5sLDE4LFN0cmluZyhiKSk7cmV0dXJuIHRoaXN9O2Z3LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJwYWdlX3VybFwiIT09YT9udWxsOkIodGhpcy5sLDE4KX07dmFyIGh3PWZ1bmN0aW9uKCl7dGhpcy5qPXt9fSxqdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7YyYmKGQ9XCIvL1wiK2MrXCIuc2FmZWZyYW1lLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiKTtjPVNzKGIsWm4oKSwkbigpLCEwLGQpO2EualtjXXx8KGEualtjXT0xLGZyKCk/aXcoYSxjKTpYYigpLmZpZldpbnx8KGI9Yi5kb2N1bWVudCxhPWpnKG5ldyBVZihiKSxcIklGUkFNRVwiKSxhLnNyYz1jLGEuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwiLGEuc3R5bGUuZGlzcGxheT1cIm5vbmVcIixiPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIiksMDxiLmxlbmd0aCYmKGI9YltiLmxlbmd0aC0xXSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiLm5leHRTaWJsaW5nKSkpKX0saXc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ncihkb2N1bWVudCxiLFwicHJlZmV0Y2hcIixcIlwiKTtjJiZfLnYoYyxcImxvYWRcIixmdW5jdGlvbigpe2EualtiXT0zO2MmJl8uZmcoYyl9KX07SWMoaHcpO3ZhciBrdz1mdW5jdGlvbihhLGIsYyxkKXtfLlIoYSxDaChiLEcoNTA2LGZ1bmN0aW9uKGUpe2U9SlNPTi5wYXJzZShlLmRhdGEpO2UubWVzc2FnZT09PWMmJmQoZSl9KSkpfTt2YXIgbHc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtfLlAuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9Yjt0aGlzLm09Yzt0aGlzLmhhPWQ7dGhpcy5vPW51bGw7dGhpcy5BPW5ldyBVZihhKTt0aGlzLkM9ZX07Xy5KKGx3LF8uUCk7dmFyIG13PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jLnVhLGU9Yy5VYSxmPWMuTWEsZz1jLlpjLGg9Yy5iYyxrPWMucWIsbD1jLkpiLG09Yy5pc0JhY2tmaWxsLG49Yy5PYixxPWMuYWMsdz1jLmNjO2M9Yy5VY3x8XCJcIjtlJiZlLnNldEF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLXF1ZXJ5LWlkXCIsYyk7WWkodGsuQigpLFwiNVwiLGEuc2xvdC5sKTt2YXIgdT1hLnNsb3QuZ2V0U2xvdElkKCk7Xy55KDQxMik/UW8oSS5CKCksQ28sdSk6YS5zbG90LlRhKCk7YS5vPWEubChcImhlaWdodFwiPT09Zz9cImZsdWlkXCI6W2Iud2lkdGgsYi5oZWlnaHRdLHt1YTpkLE1hOmYsYmM6aCxxYjprLEpiOmwsaXNCYWNrZmlsbDptLE9iOm4sYWM6cSxjYzp3fSk7cSYmY2goYS5vLHEpO18ueSg0MTIpfHxwbyhhLnNsb3QpO1FvKEkuQigpLFBiLHUse3NpemU6Yn0pO2I9Xy5yYSgxOSk7aWYoMDxiKXt2YXIgQz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7UW8oSS5CKCksem8sdSl9LDFFMypiKTtfLlIoYSxmdW5jdGlvbigpe3JldHVybiB2b2lkIGNsZWFyVGltZW91dChDKX0pfXJldHVybiBhLm99O2x3LnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oYSl7YSYmYS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWxvYWQtY29tcGxldGVcIiwhMCk7UW8oSS5CKCksS28sdGhpcy5zbG90LmdldFNsb3RJZCgpKTtZaSh0ay5CKCksXCI2XCIsdGhpcy5zbG90LmwpfTtsdy5wcm90b3R5cGUudj1mdW5jdGlvbigpe18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpO3ZhciBhPXBhKHRoaXMuc2xvdCx0aGlzLkEuaik7YSYmYS5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1xdWVyeS1pZFwiKTt0aGlzLm89bnVsbH07dmFyIG53PWZ1bmN0aW9uKCl7bHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoobncsbHcpO3ZhciBvdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9VWsoYS5zbG90LmdldFNsb3RJZCgpKSxlPWEuQS5qO2E9UnY7ZT12b2lkIDA9PT1lP2RvY3VtZW50OmU7ZT1qZyhuZXcgVWYoZSksXCJJRlJBTUVcIik7ZS5pZD1kO2UudGl0bGU9YTtlLm5hbWU9Y3x8ZDtBcnJheS5pc0FycmF5KGIpP251bGwhPWJbMF0mJm51bGwhPWJbMV0mJihlLndpZHRoPVN0cmluZyhiWzBdKSxlLmhlaWdodD1TdHJpbmcoYlsxXSkpOihlLndpZHRoPVwiMTAwJVwiLGUuaGVpZ2h0PVwiMFwiKTtlLmFsbG93VHJhbnNwYXJlbmN5PVwidHJ1ZVwiO2Uuc2Nyb2xsaW5nPVwibm9cIjtlLm1hcmdpbldpZHRoPVwiMFwiO2UubWFyZ2luSGVpZ2h0PVwiMFwiO2UuZnJhbWVCb3JkZXI9XCIwXCI7ZS5zdHlsZS5ib3JkZXI9XCIwXCI7ZS5zdHlsZS52ZXJ0aWNhbEFsaWduPVwiYm90dG9tXCI7cmV0dXJuIGV9LHB3PWZ1bmN0aW9uKGEsYixjLGQpe2QuYXBwZW5kQ2hpbGQoYik7XCJzdHJpbmdcIiE9PXR5cGVvZiBjJiYoYi53aWR0aD1TdHJpbmcoY1swXSksYi5oZWlnaHQ9U3RyaW5nKGNbMV0pKTt2YXIgZT1fLnJhKDQyMCk7aWYoMD09PWUpSXQoYixhLnNsb3QsZnVuY3Rpb24oKXtyZXR1cm4gYS5sb2FkZWQoYil9LGEuQyxhLm0pO2Vsc2V7dmFyIGY9Ryg3NzQsZnVuY3Rpb24oKXtpZigyPT09ZXx8KF8ueSg0MTIpP2ZwKGEubSxhLnNsb3QpOmEuc2xvdC5EKSlhLmxvYWRlZChiKSxfLnFiKGIsXCJsb2FkXCIsZil9KTtfLnYoYixcImxvYWRcIixmKX19O3ZhciBxdz1mdW5jdGlvbigpe253LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHF3LG53KTtxdy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIpe3ZhciBjPWIuTWE7Yj1vdyh0aGlzLGEsYi51YSk7VnYoYik7cHcodGhpcyxiLGEsYyk7cmV0dXJuIGJ9O3F3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciBydz1mdW5jdGlvbigpe253LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHJ3LG53KTtydy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIpe3ZhciBjPWIudWE7Yj1iLk1hO3ZhciBkPW93KHRoaXMsYSk7dHJ5e092KGQsYyl9Y2F0Y2goZSl7Y2woNjU0LGUsITApfXB3KHRoaXMsZCxhLGIpO3JldHVybiBkfTtydy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgc3c9ZnVuY3Rpb24oKXtsdy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihzdyxsdyk7c3cucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9Yi51YSxlPWIuTWEsZj1iLmJjLGc9Yi5xYixoPWIuSmIsaz1iLmlzQmFja2ZpbGwsbD1iLk9iLG09Yi5hYyxuPWIuY2MscT10aGlzLmhhO2I9cS5OO3E9cS5SW3RoaXMuc2xvdC5nZXRTbG90RWxlbWVudElkKCldO2Y9UWoobmV3IFBqLCEhZik7bnVsbCE9biYmRChmLDQsbik7Zj1ibyhbZixPKGIsUGosMTgpLHEmJk8ocSxQaiwxMyldKTt2YXIgdz1TdHJpbmcoeChmLDQpKTtudWxsIT1uJiZuIT09eChmLDQpJiZqbC5CKCkuSihLbSh3LFN0cmluZyhuKSkpO2t8fGtiKFwiZ3B0X3NmX3JcIixmdW5jdGlvbihDKXtsYihDKTtFKEMsXCJHQU1cIixTdHJpbmcobikpO0UoQyxcIkZpbmFsXCIsdyl9KTtoPWg/QihoLDIpOm51bGw7Yj1lcCh0aGlzLm0sdGhpcy5zbG90KTt2YXIgdT1TdihlLFVrKHRoaXMuc2xvdC5nZXRTbG90SWQoKSksZCxhLGZ1bmN0aW9uKCl7cmV0dXJuIGMubG9hZGVkKHUuail9LGYsZ3x8bnVsbCwhIWssISFsLGgsYixtKTtfLlIodGhpcyxmdW5jdGlvbigpe3RyeXsxMDAhPXUuc3RhdHVzJiYoMj09dS5IJiYoVHIodS52KSx1Lkg9MCksd2luZG93LmNsZWFyVGltZW91dCh1LkspLHUuSz0tMSx1LkM9Myx1LmwmJih1LmwuemEoKSx1Lmw9bnVsbCksdS5VJiZ1Lmo/dS5VLnVub2JzZXJ2ZSh1LmopOihfLnFiKHdpbmRvdyxcInJlc2l6ZVwiLHUuSSksXy5xYih3aW5kb3csXCJzY3JvbGxcIix1LkkpKSx1LkEmJnUuaiYmdS5BPT1fLmdnKHUuaikmJnUuQS5yZW1vdmVDaGlsZCh1LmopLHUuaj1udWxsLHUuQT1udWxsLHUuVSYmKHUuVS5kaXNjb25uZWN0KCksdS5VPW51bGwpLHUuc3RhdHVzPTEwMCl9Y2F0Y2goQyl7fX0pO3JldHVybiB1Lmp9O3N3LnByb3RvdHlwZS5sb2FkZWQ9ZnVuY3Rpb24oYSl7bHcucHJvdG90eXBlLmxvYWRlZC5jYWxsKHRoaXMsYSk7YT10aGlzLmhhLlJbdGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKV07eXUoe3Nsb3Q6dGhpcy5zbG90LGNhOmF9KX07c3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIHR3PWZ1bmN0aW9uKCl7bncuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoodHcsbncpO3R3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi51YSxkPWIuTWE7Yj1iLnFiO3ZhciBlPW93KHRoaXMsYSk7YiYmZS5zZXRBdHRyaWJ1dGUoXCJzYW5kYm94XCIsYi5qb2luKFwiIFwiKSk7LTE9PVZkLmluZGV4T2YoXCJpUGhvbmVcIikmJihlLnNyY2RvYz1cIlwiKTtwdyh0aGlzLGUsYSxkKTtVdihlLGMsZnVuY3Rpb24oKXt9KTtyZXR1cm4gZX07dHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMH07dmFyIHV3PWZ1bmN0aW9uKCl7bncuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoodXcsbncpO3V3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi51YSxkPWIuTWEsZT1iLnFiO2I9b3codGhpcyxhKTt0cnl7ZT1lfHx2b2lkIDA7ZT12b2lkIDA9PT1lP2R0OmU7Yi5zZXRBdHRyaWJ1dGUoXCJzYW5kYm94XCIsZS5qb2luKFwiIFwiKSk7dmFyIGY9bmV3IGZlKGMsbnVsbCxlZSk7Yi5zcmNkb2M9ZiBpbnN0YW5jZW9mIGZlJiZmLmNvbnN0cnVjdG9yPT09ZmU/Zi5qOlwidHlwZV9lcnJvcjpTYWZlSHRtbFwifWNhdGNoKGcpe2NsKDY1NixnLCEwKX1wdyh0aGlzLGIsYSxkKTtyZXR1cm4gYn07dXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIHZ3PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ZG9jdW1lbnQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gbmV3IHR3KGYsYixjLGQsZSk7Y2FzZSAyOnJldHVybiBuZXcgcncoZixiLGMsZCxlKTtjYXNlIDM6cmV0dXJuIG5ldyB1dyhmLGIsYyxkLGUpO2Nhc2UgNDpyZXR1cm4gbmV3IHF3KGYsYixjLGQsZSk7ZGVmYXVsdDpyZXR1cm4gbmV3IHN3KGYsYixjLGQsZSl9fTt2YXIgd3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxtLG4scSx3LHUsQyxRLE4sSCxxYSxvYil7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuTT1iO3RoaXMuaGE9Yzt0aGlzLkw9ZDt0aGlzLm09dGhpcy5sKCk7dGhpcy5BPXRoaXMubCgpO3RoaXMuSD10aGlzLmwoKTt0aGlzLkM9dGhpcy5sKCk7dGhpcy5HPXRoaXMubCgpO3RoaXMuRD10aGlzLmwoKTt0aGlzLkk9dGhpcy5sKCk7dGhpcy5YPVYodGhpcyxlKTtBcih0aGlzLm8sZik7dGhpcy5kYT1WKHRoaXMsZyk7dGhpcy5QPVYodGhpcyxoKTt0aGlzLmJhPVYodGhpcyxrKTt0aGlzLmFhPVYodGhpcyxsKTtBcih0aGlzLm8sb2IpO3RoaXMuTz1XKHRoaXMsbSk7dGhpcy5UPVcodGhpcyxuKTt0aGlzLlY9Vyh0aGlzLHEpO3RoaXMuVz1XKHRoaXMsdyk7dGhpcy5mYT1XKHRoaXMsdSk7dGhpcy5nYT1XKHRoaXMsQyk7dGhpcy5ZPVcodGhpcyxRKTt0aGlzLks9Vyh0aGlzLE4pO3RoaXMuZWE9Vyh0aGlzLEgpO3RoaXMua2E9Vyh0aGlzLHFhKX07Xy5KKHd3LFkpO3d3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODB9O3d3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLmRhLnZhbHVlLGM9dGhpcy5QLnZhbHVlLGQ9dncodGhpcy5hYS52YWx1ZSx0aGlzLnNsb3QsdGhpcy5NLHRoaXMuaGEsSHIodGhpcy5PKSk7Xy53aCh0aGlzLGQpO3ZhciBlPXRoaXMuVC52YWx1ZSxmPW51bGwhPT0oYT1udWxsPT09ZXx8dm9pZCAwPT09ZT92b2lkIDA6bWYoZS5nZXRIdG1sKCkpKSYmdm9pZCAwIT09YT9hOnRoaXMuWC52YWx1ZTtpZihudWxsPT1mKXRocm93IEVycm9yKFwiaW52YWxpZCBodG1sXCIpO3ZhciBnPXRoaXMuYmEudmFsdWU7dGhpcy5zbG90Lkk9Zjt2YXIgaD1tdyhkLGcse3VhOmYsVWE6YixNYTpjLFVjOnRoaXMuVi52YWx1ZSxaYzp0aGlzLlcudmFsdWUsYmM6dGhpcy5mYS52YWx1ZSxxYjp0aGlzLmdhLnZhbHVlLEpiOmUsaXNCYWNrZmlsbDp0aGlzLlkudmFsdWUsT2I6dGhpcy5LLnZhbHVlLGFjOnRoaXMuZWEudmFsdWUsY2M6dGhpcy5rYS52YWx1ZX0pOzQ9PT1nayh0aGlzLmhhLlJbdGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKV0pPyhiPUF1KHRoaXMsdGhpcy5MLFwibWVzc2FnZVwiLGZ1bmN0aW9uKGspe2lmKGguY29udGVudFdpbmRvdyE9PWsuc291cmNlKXZhciBsPSExO2Vsc2UgdHJ5e2w9XCJyZXdhcmRlZFwiPT09SlNPTi5wYXJzZShrLmRhdGEpLnR5cGV9Y2F0Y2gobSl7bD0hMX1yZXR1cm4gbH0pLFUodGhpcy5DLGIpKTpGcih0aGlzLkMpO1UodGhpcy5tLGgpO1UodGhpcy5BLGQuaigpKTtkPUF1KHRoaXMsd2luZG93LFwibWVzc2FnZVwiLGZ1bmN0aW9uKGspe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2Ygay5kYXRhJiYtMSE9PWsuZGF0YS5pbmRleE9mKFwiY3JlYXRpdmVfZ2VvbWV0cnlfdXBkYXRlXCIpJiZrLnNvdXJjZT09PWguY29udGVudFdpbmRvd30pO1UodGhpcy5HLGQpO2Q9QXUodGhpcyx3aW5kb3csXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrLmRhdGEmJigwPT1rLmRhdGEubGFzdEluZGV4T2YoXCJ2aXNpYmlsaXR5LWNoYW5nZWQtXCIsMCl8fFwiaW1wcmVzc2lvbi12aWV3YWJsZVwiPT09ay5kYXRhKSYmay5zb3VyY2U9PT1oLmNvbnRlbnRXaW5kb3d9KTtVKHRoaXMuRCxkKTtVKHRoaXMuSSxBdSh0aGlzLGgsXCJsb2FkXCIpKTtkPUF1KHRoaXMsd2luZG93LFwibWVzc2FnZVwiLGZ1bmN0aW9uKGspe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2Ygay5kYXRhJiYwPT1rLmRhdGEubGFzdEluZGV4T2YoXCJhbXAtXCIsMCkmJiFfLnkoMTExKSYmay5zb3VyY2U9PT1oLmNvbnRlbnRXaW5kb3d9KTtVKHRoaXMuSCxkKX07dmFyIHh3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwpe1kuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLnNsb3Q9Yjt0aGlzLmNhPWM7dGhpcy5vYT1kO3RoaXMuRj1Pcih0aGlzKTt0aGlzLkE9Vyh0aGlzLGUpO3RoaXMuSD1WKHRoaXMsZik7dGhpcy5EPVYodGhpcyxnKTt0aGlzLkc9Vih0aGlzLGgpO3RoaXMuQz1XKHRoaXMsayk7dGhpcy5JPVYodGhpcyxsKX07Xy5KKHh3LFkpO3h3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTl9O3h3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLkgudmFsdWUsYz10aGlzLkQudmFsdWU7Yy5zdHlsZS53aWR0aD1cIlwiO2Muc3R5bGUuaGVpZ2h0PVwiXCI7aWYoXCJoZWlnaHRcIiE9PXRoaXMuQS52YWx1ZSl7dmFyIGQ9bnVsbCE9PShhPXRoaXMuQy52YWx1ZSkmJnZvaWQgMCE9PWE/YTowLGU9dGhpcy5HLnZhbHVlLGY9dGhpcy5JLnZhbHVlLGc9e3Nsb3Q6dGhpcy5zbG90LGNhOnRoaXMuY2F9LGg9ITE7c3dpdGNoKGQpe2Nhc2UgMTpjYXNlIDI6aD10aGlzLm07dmFyIGs9dGhpcy5vYSxsPWcuc2xvdDt2YXIgbT1lLndpZHRoLG49ZS5oZWlnaHQscT0wO3ZhciB3PTA7dmFyIHU9eGEoZy5jYSk7dT1fLkYodSk7Zm9yKHZhciBDPXUubmV4dCgpOyFDLmRvbmU7Qz11Lm5leHQoKSlpZihDPUMudmFsdWUsQXJyYXkuaXNBcnJheShDKSl7dmFyIFE9Xy5GKEMpO0M9US5uZXh0KCkudmFsdWU7UT1RLm5leHQoKS52YWx1ZTtxPEMmJihxPUMpO3c8USYmKHc9USl9dz1bcSx3XTtxPXdbMF08bTtuPXdbMV08bjtxfHxuPyh3PW0rXCJweFwiLHU9e1wibWF4LWhlaWdodFwiOlwibm9uZVwiLFwibWF4LXdpZHRoXCI6dyxwYWRkaW5nOlwiMHB4XCIsd2lkdGg6d30sbiYmKHUuaGVpZ2h0PVwiYXV0b1wiKSxudShjLGIsdSksYz17fSxxJiZtPnBhcnNlSW50KGYud2lkdGgsMTApJiYoYy53aWR0aD13LGNbXCJtYXgtd2lkdGhcIl09dyksbiYmKGMuaGVpZ2h0PVwiYXV0b1wiLGNbXCJtYXgtaGVpZ2h0XCJdPVwibm9uZVwiKSx5ZyhjKT9jPSExOihjW1wicGFkZGluZy1cIisoXCJsdHJcIj09Zi5kaXJlY3Rpb24/XCJsZWZ0XCI6XCJyaWdodFwiKV09XCIwcHhcIixfLlhnKGIsYyksYz0hMCkpOmM9ITE7Yjpzd2l0Y2gobT1lLndpZHRoLG49aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3d8fF8ucixkKXtjYXNlIDI6Yj1vdShiLG4sbSxmLGspO2JyZWFrIGI7Y2FzZSAxOmlmKGs9Yi5wYXJlbnRFbGVtZW50KWlmKGY9SWsoaykpe3E9Zi53aWR0aDtmPXdhKHBhKGwsbi5kb2N1bWVudCksbik7bD1mLnBvc2l0aW9uO3U9cGFyc2VJbnQoZi53aWR0aCwxMCl8fDA7dz13YShrLG4pO1E9XCJydGxcIj09dy5kaXJlY3Rpb24/XCJSaWdodFwiOlwiTGVmdFwiO2s9US50b0xvd2VyQ2FzZSgpO249XCJhYnNvbHV0ZVwiPT1sPzA6cGFyc2VJbnQod1tcInBhZGRpbmdcIitRXSwxMCk7dz1wYXJzZUludCh3W1wiYm9yZGVyXCIrUStcIldpZHRoXCJdLDEwKTtDPWJoKGYpO1E9KEMmJkNbNF18fDApKihcIlJpZ2h0XCI9PVE/LTE6MSk7bT1NYXRoLm1heChNYXRoLnJvdW5kKChxLU1hdGgubWF4KHUsbSkpLzIpLDApO3E9e307dT1DJiZDWzNdfHwxO2lmKDEhPShDJiZDWzBdfHwxKXx8MSE9dSlDWzBdPTEsQ1szXT0xLHEudHJhbnNmb3JtPVwibWF0cml4KFwiK0Muam9pbihcIixcIikrXCIpXCI7dT0wO3N3aXRjaChsKXtjYXNlIFwiZml4ZWRcIjpjYXNlIFwicmVsYXRpdmVcIjp1PXBhcnNlRmxvYXQoZltrXSl8fDA7YnJlYWs7Y2FzZSBcImFic29sdXRlXCI6cVtrXT1cIjBcIn1xW1wibWFyZ2luLVwiK2tdPW0tbi13LXUtUStcInB4XCI7Xy5YZyhiLHEpO2I9ITB9ZWxzZSBiPSExO2Vsc2UgYj0hMTticmVhayBiO2RlZmF1bHQ6Yj0hMX1jfHxiPyhxdShoLGcsZCxlLndpZHRoLGUuaGVpZ2h0LFwiZ3B0X3Nsb3RleHBcIiksaD0hMCk6aD0hMTticmVhaztjYXNlIDM6aD10aGlzLm0sbT10aGlzLm9hLGw9ZS53aWR0aCxrPWUuaGVpZ2h0LGs+PShwYXJzZUludChmLmhlaWdodCwxMCl8fDApfHxcIm5vbmVcIj09Zi5kaXNwbGF5fHxcImhpZGRlblwiPT1mLnZpc2liaWxpdHl8fCFtfHwtMTIyNDU5MzM9PT1tLndpZHRofHxiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTw9bS5oZWlnaHQ/aD0hMTooZj17aGVpZ2h0OmsrXCJweFwifSxudShjLGIsZiksXy5YZyhiLGYpLHF1KGgsZywzLGwsayxcImdwdF9zbG90cmVkXCIpLGg9ITApfSFoJiZfLnkoMjEyKSYmcXUodGhpcy5tLGcsMCxlLndpZHRoLGUuaGVpZ2h0LFwiZ3B0X3BnYnJrXCIpO1RiKHRoaXMuY2EsdGhpcy5BLnZhbHVlLGUsZCl9dGhpcy5GLm5vdGlmeSgpfTt2YXIgeXc9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMubT1udWxsO3RoaXMuRz1XKHRoaXMsYSk7dGhpcy5EPVcodGhpcyxiKTt0aGlzLkM9Vyh0aGlzLGMpO3RoaXMuQT1WKHRoaXMsZCl9O18uSih5dyxZKTt5dy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzE3fTt5dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLkQudmFsdWUsYz10aGlzLkcudmFsdWU7bnVsbD09dGhpcy5DLnZhbHVlfHxifHxudWxsPT1jfHwoYj1DaCh0aGlzLkEudmFsdWUsRyg1MDQsZnVuY3Rpb24oZCl7XCJpbXByZXNzaW9uLXZpZXdhYmxlXCI9PT1kLmRhdGE/UG8oYyxNbyxudWxsLHttYjohMH0pOjA9PT1kLmRhdGEuaW5kZXhPZihcInZpc2liaWxpdHktY2hhbmdlZC1cIikmJihkPS9edmlzaWJpbGl0eS1jaGFuZ2VkLShcXGQrKFxcLlxcZCspPykkLy5leGVjKGQuZGF0YSkpJiYoZD1OdW1iZXIoZFsxXSksMDw9ZCYmMT49ZCYmKDAhPT1kJiYxIT09ZHx8ZCE9PWEubSkmJihudWxsIT09YS5tfHwwPGQpJiYoYS5tPWQsUG8oYyxNbyxudWxsLHttYjohMSxpblZpZXdQZXJjZW50YWdlOisoMTAwKmQpLnRvRml4ZWQoMil9KSkpfSkpLF8uUih0aGlzLGIpKX07dmFyIHp3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwpe1kuY2FsbCh0aGlzKTt0aGlzLks9Vyh0aGlzLGEpO3RoaXMuTT1XKHRoaXMsYik7dGhpcy5JPVcodGhpcyxjKTt0aGlzLkg9Vyh0aGlzLGQpO3RoaXMuTz1XKHRoaXMsZSk7dGhpcy5BPVYodGhpcyxmKTt0aGlzLm09Vih0aGlzLGcpO3RoaXMuQz1WKHRoaXMsaCk7dGhpcy5EPVYodGhpcyxrKTt0aGlzLkc9Vih0aGlzLGwpfTtfLkooencsWSk7encucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcxOH07encucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKEF3KHRoaXMpKXt2YXIgYj10aGlzLkMudmFsdWUsYz10aGlzLkEudmFsdWUsZD10aGlzLm0udmFsdWU7Xy5jaShkLFwidmlzaWJpbGl0eVwiLFwiaGlkZGVuXCIpO18uY2koZCxcIm1pbi13aWR0aFwiLFwiMTAwJVwiKTtiPyhfLmNpKGMsXCJtaW4td2lkdGhcIixcIjEwMCVcIiksYj1DaCh0aGlzLkcudmFsdWUsRyg1MDUsZnVuY3Rpb24oKXt2YXIgZT1jLmNvbnRlbnREb2N1bWVudDtlP0J3KGEsYyxkLGUuYm9keS5vZmZzZXRXaWR0aCxlLmJvZHkub2Zmc2V0SGVpZ2h0KTprYihcImdwdF9hbXBfZmx1aWRfbm9faWZyYW1lZG9jXCIsZnVuY3Rpb24oZil7bGIoZil9KX0pKSxfLlIodGhpcyxiKSk6KGI9Q2godGhpcy5ELnZhbHVlLEcoNTA0LGZ1bmN0aW9uKGUpe3ZhciBmPWEuQS52YWx1ZSxnPWEubS52YWx1ZTtpZigtMSE9PWUuZGF0YS5pbmRleE9mKFwiY3JlYXRpdmVfZ2VvbWV0cnlfdXBkYXRlXCIpKXRyeXt2YXIgaD1KU09OLnBhcnNlKGUuZGF0YSksaz1hLk8udmFsdWU7aWYobnVsbCE9ayYmXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIj09PWgucyYmaC5jPT09XCJzZmNoYW5uZWxcIitrJiZoLnApe3ZhciBsPUpTT04ucGFyc2UoaC5wKTtsLnVpZD09PWsmJlwibnVtYmVyXCI9PT10eXBlb2YgbC53aWR0aCYmXCJudW1iZXJcIj09PXR5cGVvZiBsLmhlaWdodCYmQncoYSxmLGcsbC53aWR0aCxsLmhlaWdodCl9fWNhdGNoKG0pe319KSksXy5SKHRoaXMsYikpfX07dmFyIEF3PWZ1bmN0aW9uKGEpe3ZhciBiPSFhLkMudmFsdWUmJiEoXy55KDI2Nyl8fF8ueSgyNjMpfHxfLnkoMjg2KSk7cmV0dXJuIG51bGw9PWEuSC52YWx1ZXx8YS5JLnZhbHVlfHxcImhlaWdodFwiIT09YS5NLnZhbHVlfHxiPyExOiEwfSxCdz1mdW5jdGlvbihhLGIsYyxkLGUpe2Iuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsU3RyaW5nKGUpKTtiLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsU3RyaW5nKGQpKTtfLmNpKGMsXCJ2aXNpYmlsaXR5XCIsXCJ2aXNpYmxlXCIpO0N3KGEsZSxkKX0sQ3c9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSy52YWx1ZTtrYihcImdwdF9mbHVpZF9zelwiLGZ1bmN0aW9uKGUpe0UoZSxcInN6XCIsYytcInhcIitiKTtFKGUsXCJxcWlkXCIsZHx8XCJcIik7bGIoZSk7RShlLFwiZmZcIiwxKX0pfTt2YXIgRHc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtZLmNhbGwodGhpcyk7dGhpcy5MPWE7dGhpcy5tPVcodGhpcyxiKTt0aGlzLkE9Vih0aGlzLGMpO3RoaXMuQz1WKHRoaXMsZCk7dGhpcy5EPVYodGhpcyxlKX07Xy5KKER3LFkpO0R3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODV9O0R3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGEsYjtpZighXy55KDExMSkmJiF0aGlzLkMudmFsdWUpe3ZhciBjPXRoaXMuRC52YWx1ZSxkPXRoaXMuQS52YWx1ZSxlPW51bGwhPT0oYj1udWxsPT09KGE9dGhpcy5tLnZhbHVlKXx8dm9pZCAwPT09YT92b2lkIDA6QihhLDEpKSYmdm9pZCAwIT09Yj9iOlwiXCIsZj1RaCh0aGlzLkwsZCxlLGMpO18uUih0aGlzLGZ1bmN0aW9uKCl7dHJ5e2YoKX1jYXRjaChnKXtibCg0OTMsZyl9fSl9fTt2YXIgRXc9Lyg8aGVhZChcXHMrW14+XSopPz4pL2ksRnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtZLmNhbGwodGhpcyk7dGhpcy51YT1hO3RoaXMubT10aGlzLmwoKTt0aGlzLkE9Vyh0aGlzLGIpO3RoaXMuQz1XKHRoaXMsYyk7dGhpcy5EPVcodGhpcyxkKTt0aGlzLkc9Vyh0aGlzLGUpfTtfLkooRncsWSk7RncucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2NX07RncucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnVhfHxcIlwiO2lmKCFKayh0aGlzLkEudmFsdWUpfHxIcih0aGlzLkMpKVUodGhpcy5tLGEpO2Vsc2V7dmFyIGI9ISF0aGlzLkQudmFsdWUsYz0hIXRoaXMuRy52YWx1ZTtjfHwkZCgpfHwoYT1hLnJlcGxhY2UoRXcsXy55KDIyMyk/XCIkMTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1TZWN1cml0eS1Qb2xpY3kgY29udGVudD1cXFwic2NyaXB0LXNyYyBodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy87b2JqZWN0LXNyYyAnbm9uZSc7Y2hpbGQtc3JjIGJsb2I6O2ZyYW1lLXNyYyBodHRwczovL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vYjRhL2I0YS1ydW5uZXIuaHRtbFxcXCI+XCI6XCIkMTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1TZWN1cml0eS1Qb2xpY3kgY29udGVudD1cXFwic2NyaXB0LXNyYyBodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy87b2JqZWN0LXNyYyAnbm9uZSc7Y2hpbGQtc3JjIGJsb2I6O2ZyYW1lLXNyYyAnbm9uZSdcXFwiPlwiKSk7YiYmIWMmJihhPWEucmVwbGFjZShFdywnJDE8bWV0YSBuYW1lPVwicmVmZXJyZXJcIiBjb250ZW50PVwib3JpZ2luXCI+JykpO1UodGhpcy5tLGEpfX07dmFyIEd3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLnNsb3RJZD1iO3RoaXMubT1jO3RoaXMuQz1kO3RoaXMuemI9Zzt0aGlzLkQ9Vyh0aGlzLGUpO3RoaXMuQT1WKHRoaXMsZil9O18uSihHdyxZKTtHdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjg2fTtHdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYixjLGQ9dGhpcy5ELnZhbHVlLGU9bnVsbD09PWR8fHZvaWQgMD09PWQ/dm9pZCAwOkIoZCwxKSxmPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDpwZihkKSxnPW51bGwhPT0oYj1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6QihkLDMpKSYmdm9pZCAwIT09Yj9iOjA7ZD1udWxsIT09KGM9bnVsbD09PWR8fHZvaWQgMD09PWQ/dm9pZCAwOngoZCw1KSkmJnZvaWQgMCE9PWM/YzohMTtlJiZmJiYoZT1BdCh7TDp0aGlzLkwsZWxlbWVudDp0aGlzLkEudmFsdWUsQWQ6MD09PXRoaXMubSxIYzpnLERkOmUsSGI6ZnVuY3Rpb24oKXtRbyhhLkMsem8sYS5zbG90SWQpfSxvcHRpb25zOnt0aHJlc2hvbGQ6Zn0seGM6ZCxUYzpmdW5jdGlvbihoKXtjbCg2MTUsaCwhMCl9LHpiOnRoaXMuemJ9KSxfLlIodGhpcyxlKSl9O3ZhciBIdz1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5mb3JtYXQ9YTt0aGlzLkM9Yjt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVcodGhpcyxjKTt0aGlzLkE9Vyh0aGlzLGQpfTtfLkooSHcsWSk7SHcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcyMH07SHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkEudmFsdWU7aWYobnVsbD09YSlGcih0aGlzLkYpO2Vsc2V7dmFyIGI9TWF0aC5yb3VuZCguMyp0aGlzLkMpOzIhPT10aGlzLmZvcm1hdCYmMyE9PXRoaXMuZm9ybWF0fHwhSHIodGhpcy5tKXx8IW9mKHRoaXMubS52YWx1ZSl8fDA+PWJ8fGE8PWI/VSh0aGlzLkYsYSk6VSh0aGlzLkYsYil9fTt2YXIgSXc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLk49Yjt0aGlzLm09ZDt0aGlzLkY9dGhpcy5sKCk7dGhpcy5BPTI9PT1jfHwzPT09Yzt0aGlzLkM9Vih0aGlzLGUpO3RoaXMuRD1WKHRoaXMsZil9O18uSihJdyxZKTtJdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjc0fTtJdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuQy52YWx1ZSxiPVZrKHRoaXMuc2xvdC5nZXRTbG90SWQoKSksYz1pZyhhLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09Yn0pLGQ9Yz9jOlF2KHRoaXMubSxhLGIsISF4KHRoaXMuTiwxNSkpO3RoaXMuRC52YWx1ZSYmIXgodGhpcy5OLDE1KSYmKGQuc3R5bGUuZGlzcGxheT1cImlubGluZS1ibG9ja1wiKTt0aGlzLkE/bW8odGhpcy5zbG90LGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgXy5mZyhkKX0pOl8uUih0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgXy5mZyhkKX0pO1UodGhpcy5GLGQpfTt2YXIgSnc9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dGhpcy5MPWE7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1WKHRoaXMsYil9O18uSihKdyxZKTtKdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk4fTtKdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXdhKHRoaXMubS52YWx1ZSx0aGlzLkwpO251bGw9PWE/RnIodGhpcy5GKTpVKHRoaXMuRixhKX07dmFyIEt3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe1kuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLmZvcm1hdD1iO3RoaXMuc2xvdD1jO3RoaXMuTD1kO3RoaXMuRj1Pcih0aGlzKTt0aGlzLkE9Vyh0aGlzLGUpO3RoaXMuQz1WKHRoaXMsZik7dGhpcy5EPVYodGhpcyxnKX07Xy5KKEt3LFkpO0t3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODJ9O0t3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYigpe3ZhciBjPXRoaXMsZCxlLGYsZyxoLGs7cmV0dXJuIERhKGIsZnVuY3Rpb24obCl7aWYoMT09bC5qKXJldHVybiBkPWMsKDI9PT1jLmZvcm1hdHx8Mz09PWMuZm9ybWF0KSYmSHIoYy5BKSYmb2YoYy5BLnZhbHVlKT9FYShsLF8uY3cuQigpLmxvYWQoXy4kdiksMik6bC5yZXR1cm4oKTtlPWwubztmPWUuWWM7aWYoYy5sYSlyZXR1cm4gbC5yZXR1cm4oKTtnPV8uWW8oYy5tLGMuc2xvdCk7aD1jLkQudmFsdWU7az1jLkMudmFsdWU7Xy5YZyhrLHtcIm1heC1oZWlnaHRcIjpcIjMwdmhcIixvdmVyZmxvdzpcImhpZGRlblwifSk7THc/THcuSGQoayk6KEx3PW5ldyBmKGMuZm9ybWF0LGssYy5MLGgsYy5tLGMuc2xvdCksTHcud2QoKSxtbyhjLnNsb3QsZnVuY3Rpb24oKXtMdyYmKEx3LnphKCksTHc9bnVsbCk7ZyYmXy4kbyhkLm0sZC5zbG90KX0pKTtfLlIoYyxmdW5jdGlvbigpe3JldHVybiBfLmZnKGspfSk7Yy5GLm5vdGlmeSgpO2wuaj0wfSl9KX07dmFyIEx3PW51bGw7dmFyIE13PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuaGE9Yjt0aGlzLkM9Yzt0aGlzLkc9ZDt0aGlzLlZhPWU7dGhpcy5BPWY7dGhpcy5tPWc7dGhpcy5EPVcodGhpcyxoKX07Xy5KKE13LFkpO013LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3NTh9O013LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGEsYj1wYSh0aGlzLnNsb3QsdGhpcy5tKTtiJiZiLnNldEF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLXF1ZXJ5LWlkXCIsbnVsbCE9PShhPXRoaXMuRC52YWx1ZSkmJnZvaWQgMCE9PWE/YTpcIlwiKTtZaSh0aGlzLlZhLFwiNVwiLHRoaXMuc2xvdC5sKTthPXRoaXMuc2xvdC5nZXRTbG90SWQoKTtfLnkoNDEyKT9Rbyh0aGlzLkEsQ28sYSk6dGhpcy5zbG90LlRhKCk7Yj1fLnkoMTIzKTt2YXIgYztpZihfLllvKHRoaXMuQyx0aGlzLnNsb3QpKXt2YXIgZD10aGlzLmhhLGU9ZC5OO2Q9ZC5SW3RoaXMuc2xvdC5nZXRTbG90RWxlbWVudElkKCldO2ImJih0aGlzLkcmJlJiKHRoaXMuc2xvdCx3aW5kb3csdGhpcy5tKSxybyh0aGlzLnNsb3QpKTsoYnx8IXVvKHRoaXMuc2xvdCx0aGlzLm0pKSYmKG51bGwhPT0oYz14KGQsMTApKSYmdm9pZCAwIT09Yz9jOngoZSwxMSkpJiYhXy55KDM5MCkmJlJiKHRoaXMuc2xvdCx3aW5kb3csdGhpcy5tKX1Rbyh0aGlzLkEsUGIsYSx7aXNFbXB0eTohMCxzbG90Q29udGVudENoYW5nZWQ6Yn0pfTt2YXIgTnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtZLmNhbGwodGhpcyk7dGhpcy5MPWE7dGhpcy5tPVcodGhpcyxiKTt0aGlzLkM9Vih0aGlzLGMpO3RoaXMuQT1WKHRoaXMsZCk7dGhpcy5EPVYodGhpcyxlKX07Xy5KKE53LFkpO053LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MjF9O053LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGMsZCxlPXRoaXMubS52YWx1ZSxmPW51bGw9PT0oYj1udWxsPT09ZXx8dm9pZCAwPT09ZT92b2lkIDA6QihlLDEpKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi50b1VwcGVyQ2FzZSgpO2U9bnVsbD09PShjPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDpCKGUsMikpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnRvVXBwZXJDYXNlKCk7aWYoZiYmZSl7dmFyIGc9dGhpcy5DLnZhbHVlLGg9dGhpcy5BLnZhbHVlLGs9dGhpcy5ELnZhbHVlLGw9ay5zdHlsZS5oZWlnaHQsbT1rLnN0eWxlLndpZHRoLG49ay5zdHlsZS5kaXNwbGF5LHE9ay5zdHlsZS5wb3NpdGlvbix3PW1oKGcuaWQrXCJfdG9wXCIsZiksdT1taChnLmlkK1wiX2JvdHRvbVwiLGUpO18uWGcodSx7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHRvcDpcImNhbGMoMTAwdmggLSA0OHB4KVwifSk7ay5hcHBlbmRDaGlsZCh3KTtrLmFwcGVuZENoaWxkKHUpO18uWGcoaCx7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDpcIjI0cHhcIixjbGlwOlwicmVjdCgwLCBhdXRvLCBhdXRvLCAwKVwiLHdpZHRoOlwiMTAwdndcIixoZWlnaHQ6XCJjYWxjKDEwMHZoIC0gNDhweClcIn0pO18uWGcoZyx7cG9zaXRpb246XCJmaXhlZFwiLHRvcDpcIjBcIixoZWlnaHQ6XCIxMDB2aFwifSk7Xy5YZyhrLHtwb3NpdGlvbjpcInJlbGF0aXZlXCIsZGlzcGxheToobnVsbD09PShkPXRoaXMuTC5zY3JlZW4ub3JpZW50YXRpb24pfHx2b2lkIDA9PT1kPzA6ZC5hbmdsZSk/XCJub25lXCI6XCJibG9ja1wiLHdpZHRoOlwiMTAwdndcIixoZWlnaHQ6XCIxMDB2aFwifSk7enUodGhpcyw3MjIsdGhpcy5MLFwib3JpZW50YXRpb25jaGFuZ2VcIixmdW5jdGlvbigpe3ZhciBDOyhudWxsPT09KEM9YS5MLnNjcmVlbi5vcmllbnRhdGlvbil8fHZvaWQgMD09PUM/MDpDLmFuZ2xlKT9fLlhnKGsse2Rpc3BsYXk6XCJub25lXCJ9KTpfLlhnKGsse2Rpc3BsYXk6XCJibG9ja1wifSl9KTtfLlIodGhpcyxmdW5jdGlvbigpe18uZmcodyk7Xy5mZyh1KTtrLnN0eWxlLnBvc2l0aW9uPXE7ay5zdHlsZS5oZWlnaHQ9bDtrLnN0eWxlLndpZHRoPW07ay5zdHlsZS5kaXNwbGF5PW59KX19O3ZhciBPdz1mdW5jdGlvbihhLGIsYyxkLGUsZil7WS5jYWxsKHRoaXMpO3RoaXMuZm9ybWF0PWE7dGhpcy5tPWI7dGhpcy5GPU9yKHRoaXMpO3RoaXMuQT1XKHRoaXMsYyk7dGhpcy5EPVYodGhpcyxkKTt0aGlzLkc9Vih0aGlzLGUpO3RoaXMuQz1XKHRoaXMsZil9O18uSihPdyxZKTtPdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjgzfTtPdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGIoKXt2YXIgYz10aGlzLGQsZSxmLGcsaCxrLGwsbSxuO3JldHVybiBEYShiLGZ1bmN0aW9uKHEpe2lmKDE9PXEuail7ZD1jLkEudmFsdWU7aWYoIWR8fDUhPT1jLmZvcm1hdClyZXR1cm4gcS5yZXR1cm4oKTtlPWMuRy52YWx1ZTtmPWMuRC52YWx1ZTtyZXR1cm4gRWEocSxfLmN3LkIoKS5sb2FkKF8uJHYpLDIpfWc9cS5vO2g9Zy5iZDtpZihjLmxhKXJldHVybiBxLnJldHVybigpO2s9bmV3IF8udXI7bD1uZXcgaCh3aW5kb3csZixlLGssXy55KDQwMSkmJmMubS53aWR0aD5jLm0uaGVpZ2h0LGMuQy52YWx1ZSk7Xy53aChjLGwpO2wuTGMoKTttPXVmKGQsVm0sMTMpO2Zvcih2YXIgdz17fSx1PV8uRihtKSxDPXUubmV4dCgpOyFDLmRvbmU7Qz11Lm5leHQoKSlDPUMudmFsdWUsd1tCKEMsMSldPUIoQywyKTtuPXc7bC5BYyhuKTtjLkYubm90aWZ5KCk7cS5qPTB9KX0pfTt2YXIgUHc9ZnVuY3Rpb24oKXtZLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLkY9T3IodGhpcyl9O18uSihQdyxZKTtQdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjYzfTtQdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGIoKXt2YXIgYz10aGlzO3JldHVybiBEYShiLGZ1bmN0aW9uKGQpe2lmKDE9PWQuail7dmFyIGU9UXc/MDpfLnJhKDE2KSxmPV8ucmEoMTcpO2U9TWF0aC5tYXgoZSxmKTswPGUmJihRdz0hMCxDdShlKSk7cmV0dXJuIEVhKGQsUncoYyksMil9Yy5GLm5vdGlmeSgpO2Quaj0wfSl9KX07dmFyIFJ3PWZ1bmN0aW9uKGEpe3JldHVybiBDYShhLGZ1bmN0aW9uIGMoKXt2YXIgZDtyZXR1cm4gRGEoYyxmdW5jdGlvbihlKXtkPV8ucmEoMTgpOzA8ZD9lPUVhKGUsVWIoZCksMCk6Xy55KDE2OSkmJm5sKDIpP2U9RWEoZSxVYigwKSwwKTooZS5qPTAsZT12b2lkIDApO3JldHVybiBlfSl9KX0sUXc9ITE7dmFyIFN3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7WS5jYWxsKHRoaXMpO3RoaXMuQT1hO3RoaXMub2E9Yjt0aGlzLm09bnVsbDt0aGlzLkY9dGhpcy5sKCk7QXIodGhpcy5vLGMpO3RoaXMuRD1WKHRoaXMsZCk7dGhpcy5IPVYodGhpcyxlKTt0aGlzLkc9Vyh0aGlzLGYpO3RoaXMuQz1XKHRoaXMsZyk7dGhpcy5JPVcodGhpcyxoKX07Xy5KKFN3LFkpO1N3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjZ9O1N3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGM9bmV3IE5qO0hyKHRoaXMuQykmJihEKGMsMix0aGlzLkMudmFsdWUpLEQoYywzLDEpKTt0aGlzLkEmJihjPVl2KFt0aGlzLkEsY10pKTtjPVh2KGMpO3ZhciBkPW51bGwhPT0oYj10aGlzLkkudmFsdWUpJiZ2b2lkIDAhPT1iP2I6dm9pZCAwO2lmKG51bGw9PWN8fDA+Y3x8MD09PWQpVSh0aGlzLkYsITEpO2Vsc2V7dmFyIGU9dGhpcy5ELnZhbHVlLGY9dGhpcy5ILnZhbHVlO251bGwhPWYmJk9rKGYsdGhpcy5vYSxjLzEwMCk/KGtiKFwiZ3B0X2VyXCIsZnVuY3Rpb24oZyl7dmFyIGg7RShnLFwicXFpZFwiLG51bGwhPT0oaD1hLkcudmFsdWUpJiZ2b2lkIDAhPT1oP2g6XCJcIil9LHt2YTpfLnJhKDIwKX0pLFUodGhpcy5GLCExKSk6Xy55KDE0NSk/VSh0aGlzLkYsITEpOlR3KHRoaXMsYyxkLGUpfX07dmFyIFR3PWZ1bmN0aW9uKGEsYixjLGQpe3NhKGQpPyhhLm09VmIoYitcIiVcIixHKDI5MSxmdW5jdGlvbihlLGYpe2U9Xy5GKGUpO2Zvcih2YXIgZz1lLm5leHQoKTshZy5kb25lO2c9ZS5uZXh0KCkpaWYoZz1nLnZhbHVlLCEoMD49Zy5pbnRlcnNlY3Rpb25SYXRpbykpe2YudW5vYnNlcnZlKGcudGFyZ2V0KTtVKGEuRiwhMCk7YnJlYWt9fSkpLG51bGwhPWMmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtVKGEuRiwhMCk7YS5tJiZhLm0uZGlzY29ubmVjdCgpfSxjKSxhLm0ub2JzZXJ2ZShkKSxfLlIoYSxmdW5jdGlvbigpe2EubSYmYS5tLmRpc2Nvbm5lY3QoKX0pKTpVKGEuRiwhMSl9O3ZhciBVdz1mdW5jdGlvbihhLGIpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLm09Yjt0aGlzLkY9dGhpcy5sKCl9O18uSihVdyxZKTtVdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzA2fTtVdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPU5hKHRoaXMubSx0aGlzLkwpO2E/VSh0aGlzLkYsYSk6RnIodGhpcy5GKX07dmFyIFZ3PWZ1bmN0aW9uKGEsYixjLGQsZSl7WS5jYWxsKHRoaXMpO3RoaXMuQT1hO3RoaXMubT1iO3RoaXMuQz1XKHRoaXMsYyk7dGhpcy5EPVYodGhpcyxkKTt0aGlzLkc9Vyh0aGlzLGUpfTtfLkooVncsWSk7VncucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcxM307VncucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkcudmFsdWU7aWYoIUprKHRoaXMuQy52YWx1ZSkmJmEmJnRoaXMubS5nZXRPc2VJZCgpKXt2YXIgYj10aGlzLkQudmFsdWUsYz1DdCh0aGlzLm0pO2MucmVnaXN0ZXJBZEJsb2NrKFwiP2VpZD1cIitrai5CKCkuaigpLmpvaW4oXCIsXCIpK1wiJmFkaz1cIit0aGlzLkEsMyxcImxkamhcIixiLDAsMCxHKHRoaXMuaWQoKSxmdW5jdGlvbihkLGUpezA8PWUmJlBvKGEsTW8sbnVsbCx7bWI6ZCxpblZpZXdQZXJjZW50YWdlOmV9KX0pKTtfLlIodGhpcyxmdW5jdGlvbigpe3RyeXtjLnVubG9hZEFkQmxvY2soYiwhMSxfLnkoMTAxKSl9Y2F0Y2goZCl7fX0pfX07dmFyIFd3PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLm9hPWI7dGhpcy5tPW5ldyBVZjt0aGlzLkY9T3IodGhpcyk7QXIodGhpcy5vLGMpO3RoaXMuQT1XKHRoaXMsZCl9O18uSihXdyxZKTtXdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjY0fTtXdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYoXy55KDIwKSl7dmFyIGI9dGhpcy5tLmosYz13bihiKSxkPWZ1bmN0aW9uKCl7dmFyIGY9YS5BLnZhbHVlO3JldHVybiBudWxsIT1mJiZPayhmLGEub2EsMCl9O2lmKHhuKGIpJiZjJiYoMDx0aGlzLnNsb3QuQS0xfHwhZCgpKSYmYyl7dmFyIGU9enUodGhpcywzMjQsYixjLGZ1bmN0aW9uKCl7eG4oYil8fChlJiZlKCksYS5GLm5vdGlmeSgpKX0pO2lmKGUpcmV0dXJufX10aGlzLkYubm90aWZ5KCl9O3ZhciBZdz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbil7ZT12b2lkIDA9PT1lP25ldyBkbjplO2Y9dm9pZCAwPT09Zj9cIlwiOmY7Zz12b2lkIDA9PT1nP1wiXCI6ZztoPXZvaWQgMD09PWg/LTE6aDtrPXZvaWQgMD09PWs/bmV3IHRrOms7bD12b2lkIDA9PT1sP25ldyBJOmw7bT12b2lkIDA9PT1tP25ldyBucDptO249dm9pZCAwPT09bj9uZXcgZHI6bjtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5oYT1iO3RoaXMuQz1jO3RoaXMuc2E9ZDt0aGlzLkJhPWU7dGhpcy5rYT1mO3RoaXMud2E9Zzt0aGlzLkNhPWg7dGhpcy5WYT1rO3RoaXMuQWE9bDt0aGlzLlA9bTt0aGlzLnRhPW47dGhpcy5nYT1bXTtYdyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsNCl9KTt0aGlzLlg9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDYpfSk7dGhpcy5mYT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsNyl9KTt0aGlzLnBhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSw4KX0pO3RoaXMuRz1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMTApfSk7WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDE1KX0pO3RoaXMuRD1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMzQpfSk7dGhpcy5tPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxDZiw0Myl9KTt0aGlzLkE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLGVuLDQxKX0pO3RoaXMuSD1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsOSl9KTt0aGlzLk09WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDEyKX0pO3RoaXMuVD1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsQmYsNTApfSk7dGhpcy5XPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxabSw0OCl9KTt0aGlzLkk9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLFhtLDM5KX0pO3RoaXMuVj1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMzYpfSk7dGhpcy5PPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSwxMyl9KTt0aGlzLmFhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSwzKX0pO3RoaXMuSz1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsNDkpfSk7dGhpcy5kYT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMjkpfSk7dGhpcy5lYT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMzApfSk7dGhpcy5ZPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxhbiw1MSl9KTt0aGlzLmJhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSw1Mil9KX07Xy5KKFl3LFkpO3ZhciBYdz1mdW5jdGlvbihhLGIpe3ZhciBjPVkucHJvdG90eXBlLmwuY2FsbChhKTthLmdhLnB1c2goe0Y6YyxWYzpifSk7cmV0dXJuIGN9O1l3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MDB9O1l3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7aWYoXy55KDQwNCkpe3ZhciBhPXRoaXMua2E7dmFyIGI9dGhpcy5zbG90O3RoaXMuaWQoKTt2YXIgYz1KU09OLnBhcnNlKGEpO2M9XCJvYmplY3RcIj09PXR5cGVvZiBjP2M6bnVsbDt2YXIgZD1CZyhjLGlkKTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGR8fG51bGw9PT1jfHx2b2lkIDA9PT1jfHwhY1tkXSl0aHJvdyBFcnJvcihcImludmFsaWQgYWQgdW5pdCBwYXRoOiBcIitkKTtpZighYil0aHJvdyBFcnJvcihcIm1pc3Npbmcgc2xvdDogXCIrZCk7Yj1jW2RdO2lmKEFycmF5LmlzQXJyYXkoYikpYT1uZXcgZG4oYi5zbGljZSgpKTtlbHNlIHRocm93IEVycm9yKFwiZGljdGlvbmFyeSBub3QgYW4gYXJyYXk6IFwiK2EpO29vKHRoaXMuc2xvdCk7Yj10aGlzLnNsb3QubDtjPUIoYSwzNCl8fFwiXCI7dGhpcy5WYS5qJiYoXy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zPV8uci5nb29nbGVfdGltaW5nX3BhcmFtc3x8e30sXy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zW1wicXFpZC5cIitiXT1jKTtCKGEsMjcpLmZvckVhY2gobWopO25qKDQpO1p3KHRoaXMsYSk7JHcodGhpcyxhKX1lbHNlICR3KHRoaXMsdGhpcy5CYSl9O3ZhciAkdz1mdW5jdGlvbihhLGIpe2E9Xy5GKGEuZ2EpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpe3ZhciBkPWMudmFsdWU7Yz1kLkY7ZD1kLlZjO2Q9ZChiKTtudWxsIT1kP1UoYyxkKTpGcihjKX19LFp3PWZ1bmN0aW9uKGEsYil7ZHAoYS5DLGEuc2xvdCxhLndhKTt2YXIgYz1hLmhhLlJbYS5zbG90LmdldFNsb3RFbGVtZW50SWQoKV07YyYmKHRvKGEuc2xvdCxiKSxxbyhhLnNsb3QsQihiLDMzKSksUW8oYS5BYSxKbyxhLnNsb3QuZ2V0U2xvdElkKCksYiksbnVsbCE9QihiLDIzKSYmQihiLDIzKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe29wKGEuUCxkKTt2YXIgZT1hLlAsZj1hLnNsb3Q7ZS5qW2RdfHwoZS5qW2RdPVtdKTtlLmpbZF0ucHVzaChmKX0pLHVmKGIsJG0sMTQpLmxlbmd0aCYmZXIoYS50YSx1ZihiLCRtLDE0KVswXSxhLnNhKSxfLnkoNDIyKT9UayhjLE8oYixCZiw1MCksISF4KGIsMTEpKSYmKF8uWm8oYS5DLGEuc2xvdCksU2soTyhiLEJmLDUwKSkmJm1vKGEuc2xvdCxmdW5jdGlvbigpe18uJG8oYS5DLGEuc2xvdCl9KSk6KDQ9PWdrKGMpfHw1PT09Z2soYyl8fHgoYiwxMSkpJiZfLlpvKGEuQyxhLnNsb3QpLHgoYiw4KXx8am8oYS5zbG90LGEuQ2EpKX07dmFyIGF4PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vyh0aGlzLGEpO3RoaXMuQT1WKHRoaXMsYil9O18uSihheCxZKTtheC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzYyfTtheC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPUhyKHRoaXMubSk7YT10aGlzLkEudmFsdWU/Xy55KDI2MykmJkRrKCkmJmE/MjpfLnkoMjY3KSYmQ2soKSYmYT8zOl8ueSgyODYpJiZEaygpJiZhPzQ6MTowO1UodGhpcy5GLGEpfTt2YXIgYng9ZnVuY3Rpb24oYSxiLGMsZCxlKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90SWQ9YTt0aGlzLmhhPWI7dGhpcy5tPWM7dGhpcy5BPWQ7QXIodGhpcy5vLGUpfTtfLkooYngsWSk7YngucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5Nn07YngucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2t3KHRoaXMsdGhpcy5tLFwiY2xvc2VkXCIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBjeChhKX0pO18ueSg0MTYpfHxrdyh0aGlzLHRoaXMubSxcImNhbmNlbGVkXCIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBjeChhKX0pfTt2YXIgY3g9ZnVuY3Rpb24oYSl7UW8oYS5BLEdvLGEuc2xvdElkLGEuaGEpO2EuemEoKX07dmFyIGR4PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMuQT1iO3RoaXMubT1jO0FyKHRoaXMubyxkKX07Xy5KKGR4LFkpO2R4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTd9O2R4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztrdyh0aGlzLHRoaXMuQSxcImNvbXBsZXRlZFwiLGZ1bmN0aW9uKCl7UW8oYS5tLEhvLGEuc2xvdElkKTthLnphKCl9KX07dmFyIGV4PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMuQT1iO3RoaXMubT1jO0FyKHRoaXMubyxkKX07Xy5KKGV4LFkpO2V4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTR9O2V4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuc2xvdElkLGM9dGhpcy5tO2t3KHRoaXMsdGhpcy5BLFwiZ3JhbnRlZFwiLGZ1bmN0aW9uKGQpe3ZhciBlO1FvKGMsRm8sYixudWxsIT09KGU9ZC5wYXlsb2FkKSYmdm9pZCAwIT09ZT9lOm51bGwpO2EuemEoKX0pfTt2YXIgZng9e3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixsZWZ0OlwiMFwiLHRvcDpcIjBcIn0sZ3g9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuVWE9Yjt0aGlzLkw9Yzt0aGlzLkY9T3IodGhpcyk7QXIodGhpcy5vLGQpfTtfLkooZ3gsWSk7Z3gucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5M307Z3gucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9Xy55KDM3NCkmJjA9PT1SZygpP1wicmdiYSgxLDEsMSwwLjUpXCI6XCJ3aGl0ZVwiO18uWGcodGhpcy5VYSxfLkEoT2JqZWN0LFwiYXNzaWduXCIpLmNhbGwoT2JqZWN0LHtcImJhY2tncm91bmQtY29sb3JcIjpiLG9wYWNpdHk6XCIxXCIscG9zaXRpb246XCJmaXhlZFwiLG1hcmdpbjpcIjBcIixwYWRkaW5nOlwiMFwiLFwiei1pbmRleFwiOlwiMjE0NzQ4MzY0N1wiLGRpc3BsYXk6XCJibG9ja1wifSxmeCkpO18uUih0aGlzLF8uV3IodGhpcy5MLmRvY3VtZW50LHRoaXMuTCkpO2hnKHRoaXMubSkucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe3R5cGU6XCJyZXdhcmRlZFwiLG1lc3NhZ2U6XCJ2aXNpYmxlXCJ9KSxcIipcIik7dGhpcy5MPT09dGhpcy5MLnRvcCYmKHRoaXMuTC5sb2NhdGlvbi5oYXNoPVwiZ29vZ19yZXdhcmRlZFwiLF8uUih0aGlzLGZ1bmN0aW9uKCl7XCJnb29nX3Jld2FyZGVkXCI9PT1hLkwubG9jYXRpb24uaGFzaCYmKGEuTC5sb2NhdGlvbi5oYXNoPVwiXCIpfSkpO3RoaXMuRi5ub3RpZnkoKX07dmFyIGh4PWZ1bmN0aW9uKGEsYixjKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5MPWI7QXIodGhpcy5vLGMpfTtfLkooaHgsWSk7aHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5NX07aHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtpZih0aGlzLkw9PT10aGlzLkwudG9wKXZhciBhPWhnKHRoaXMubSksYj16dSh0aGlzLDUwMyx0aGlzLkwsXCJoYXNoY2hhbmdlXCIsZnVuY3Rpb24oYyl7RWQoYy5vbGRVUkwsXCIjZ29vZ19yZXdhcmRlZFwiKSYmKGEucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe3R5cGU6XCJyZXdhcmRlZFwiLG1lc3NhZ2U6XCJiYWNrX2J1dHRvblwifSksXCIqXCIpLGIoKSl9KX07dmFyIGl4PWZ1bmN0aW9uKGEsYixjKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90SWQ9YTt0aGlzLm09Yjt0aGlzLkY9T3IodGhpcyk7dGhpcy5BPVYodGhpcyxjKX07Xy5KKGl4LFkpO2l4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTJ9O2l4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGM9dGhpcy5BLnZhbHVlLGQ9dGhpcy5zbG90SWQsZT10aGlzLm07Xy5SKHRoaXMsT2IoZSxCbyxkLDY3NyxmdW5jdGlvbigpe2EuRi5ub3RpZnkoKTthLnphKCl9KSk7UW8oZSxFbyxkLHttYWtlUmV3YXJkZWRWaXNpYmxlOmpkKGZ1bmN0aW9uKCl7UW8oZSxCbyxkKX0pLHBheWxvYWQ6bnVsbCE9PShiPWMucGF5bG9hZCkmJnZvaWQgMCE9PWI/YjpudWxsfSl9O3ZhciBqeD17d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGxlZnQ6XCIwXCIsdG9wOlwiMFwifSxreD17d2lkdGg6XCI2MCVcIixoZWlnaHQ6XCI2MCVcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoLTUwJSwgLTUwJSlcIixsZWZ0OlwiNTAlXCIsdG9wOlwiNTAlXCJ9LGx4PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuQT1iO3RoaXMuRj10aGlzLmwoKX07Xy5KKGx4LFkpO2x4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTF9O2x4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPV8ueSgzNzQpJiYwPT09UmcoKTtfLlhnKHRoaXMubSxfLkEoT2JqZWN0LFwiYXNzaWduXCIpLmNhbGwoT2JqZWN0LHtwb3NpdGlvbjpcImFic29sdXRlXCJ9LGI/a3g6angpKTtrdyh0aGlzLHRoaXMuQSxcInByZWZldGNoZWRcIixmdW5jdGlvbihjKXtyZXR1cm4gdm9pZCBVKGEuRixjKX0pfTt2YXIgbXg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90SWQ9YTt0aGlzLmhhPWI7dGhpcy5mb3JtYXQ9Yzt0aGlzLkw9ZDt0aGlzLm09ZTt0aGlzLkE9Vih0aGlzLGYpO3RoaXMuRD1XKHRoaXMsZyk7dGhpcy5DPVYodGhpcyxoKX07Xy5KKG14LFkpO214LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODh9O214LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7aWYoND09PXRoaXMuZm9ybWF0KXt2YXIgYT10aGlzLkEudmFsdWUsYj10aGlzLkQudmFsdWUsYz10aGlzLkMudmFsdWU7aWYoIWIpdGhyb3cgRXJyb3IoXCJtaXNzaW5nIG1lc3NhZ2UgYnVzIGlucHV0XCIpO3ZhciBkPW5ldyB3YjtfLndoKHRoaXMsZCk7dmFyIGU9bmV3IGx4KGEsYik7WChkLGUpO2U9bmV3IGl4KHRoaXMuc2xvdElkLHRoaXMubSxlLkYpO1goZCxlKTtjPW5ldyBneChhLGMsdGhpcy5MLGUuRik7WChkLGMpO1goZCxuZXcgaHgoYSx0aGlzLkwsYy5GKSk7WChkLG5ldyBleCh0aGlzLnNsb3RJZCxiLHRoaXMubSxlLkYpKTtYKGQsbmV3IGJ4KHRoaXMuc2xvdElkLHRoaXMuaGEsYix0aGlzLm0sZS5GKSk7WChkLG5ldyBkeCh0aGlzLnNsb3RJZCxiLHRoaXMubSxlLkYpKTt5YihkKX19O3ZhciBueD1mdW5jdGlvbihhLGIsYyxkLGUsZil7WS5jYWxsKHRoaXMpO3RoaXMuTj1hO3RoaXMuUj1iO3RoaXMuTD1jO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vyh0aGlzLGQpO3RoaXMuQT1XKHRoaXMsZSk7dGhpcy5DPVcodGhpcyxmKX07Xy5KKG54LFkpO254LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2Njl9O254LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE7aWYoIShhPUhyKHRoaXMuQSkpKXthPXRoaXMuUjt2YXIgYj10aGlzLkw7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO2E9ISEocWooMyl8fGEmJm51bGwhPUIoYSwxNikmJlJrKFwiZ29vZ2xlX3JhbmdlX2RlYnVnXCIsYikpfWE/VSh0aGlzLkYsITApOihhPShKayh0aGlzLm0udmFsdWUpP3godGhpcy5SLDEyKXx8eCh0aGlzLk4sMTMpOiExKXx8ISF0aGlzLkMudmFsdWUsVSh0aGlzLkYsISFhKSl9O3ZhciBveD1mdW5jdGlvbihhLGIsYyxkLGUsZil7WS5jYWxsKHRoaXMpO3RoaXMuTj1hO3RoaXMuY2E9Yjt0aGlzLkY9dGhpcy5sKCk7dGhpcy5DPVYodGhpcyxjKTt0aGlzLm09Vyh0aGlzLGQpO3RoaXMuQT1XKHRoaXMsZSk7dGhpcy5EPVcodGhpcyxmKX07Xy5KKG94LFkpO294LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MTl9O294LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5tLnZhbHVlLGI9dGhpcy5DLnZhbHVlO2lmKDM9PT1iJiZfLnkoMzg4KSlVKHRoaXMuRixldCk7ZWxzZXtpZigxPT09YiYmXy55KDM1NCkpe2lmKGE9dGhpcy5ELnZhbHVlLGE9UWoobmV3IFBqLGEpLHgoYm8oW2EsTyh0aGlzLk4sUGosMTgpLE8odGhpcy5jYSxQaiwxMyldKSwzKSl7VSh0aGlzLkYsXy55KDMzOCk/ZnQ6Y3QpO3JldHVybn19ZWxzZSBpZigwPT09YiYmYSYmXy55KHRoaXMuQS52YWx1ZT8xMzY6MTM3KSl7VSh0aGlzLkYsY3QpO3JldHVybn1Gcih0aGlzLkYpfX07dmFyIHB4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5jYT1iO3RoaXMuST1jO3RoaXMud2luZG93PWQ7dGhpcy5HPXRoaXMubCgpO3RoaXMuQT10aGlzLmwoKTt0aGlzLkM9dGhpcy5sKCk7dGhpcy5tPXFqKDMpLnNwbGl0KFwiLFwiKTt0aGlzLkQ9Xy5yaigzKTt0aGlzLkhhPW51bGwhPUIoYiwxNik/TyhiLFpqLDE2KTpudWxsO3RoaXMuSD1RayhcImdvb2dsZV9yYW5nZV9kZWJ1Z1wiLHRoaXMud2luZG93KTt0aGlzLks9Vyh0aGlzLGUpO3RoaXMuVD1XKHRoaXMsZik7dGhpcy5NPVcodGhpcyxnKTt0aGlzLk89Vih0aGlzLGgpO3RoaXMuUD1WKHRoaXMsayl9O18uSihweCxZKTtweC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjgxfTtweC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhO2lmKGE9ISEodGhpcy5tLmxlbmd0aHx8dGhpcy5IYSYmdGhpcy5IKSl7dmFyIGI7YjppZih0aGlzLm0ubGVuZ3RoKXtpZih0aGlzLkQubGVuZ3RoJiYoYT10aGlzLnNsb3QuZ2V0QWRVbml0UGF0aCgpLnNwbGl0KFwiL1wiKSwhXy5BKHRoaXMuRCxcImluY2x1ZGVzXCIpLmNhbGwodGhpcy5ELGFbYS5sZW5ndGgtMV0pKSl7YT0hMTticmVhayBifWE9ITB9ZWxzZSBhPSExO3ZhciBjPWE7YT1jP3F4KHRoaXMpOm51bGw7aWYoYyYmYSl7Yz10aGlzLlAudmFsdWU7dmFyIGQ9SWsoYy5wYXJlbnRFbGVtZW50KTtkPW51bGwhPT0oYj1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6ZC53aWR0aCkmJnZvaWQgMCE9PWI/YjowO2I9XCJwXCI9PT10aGlzLm1bMF07dmFyIGU9TnVtYmVyKHRoaXMubVswXSk7aWYoYj1cImZcIj09PXRoaXMubVswXT90aGlzLkk6ZSYmMDxlP2U6Yj9NYXRoLm1pbihkLHRoaXMuSSk6bnVsbCl7ZT1hLndpZHRoO3ZhciBmPWEuaGVpZ2h0LGc9dGhpcy5tWzFdLGg9TnVtYmVyKGcpO2U9XCJyYXRpb1wiPT09ZyYmZT9NYXRoLmZsb29yKGYvZSpiKTpoJiYwPGg/ZipoOmY7cngodGhpcyxiLGUsc3goYixlLFwiPHA+UmVxdWVzdGVkIHNpemU6XCIrYS53aWR0aCtcInhcIithLmhlaWdodCtcIjwvcD5cIiksYjw9ZD8xOjIsYyk7YT0hMH1lbHNlIGE9ITF9ZWxzZSBhPSExO2lmKCFhKWE6aWYodGhpcy5IYSYmdGhpcy5IKXthPXV1KHRoaXMuSGEsdGhpcy53aW5kb3cpO2M9dnUodGhpcy5IYSx0aGlzLndpbmRvdyk7ZD13dSh0aGlzLkhhKTtiPXh1KHRoaXMuSGEpO3N3aXRjaCh0aGlzLkgpe2Nhc2UgXCJtYXhcIjplPWE7Zj1jO2JyZWFrO2Nhc2UgXCJtaW5cIjplPWQ7Zj1iO2JyZWFrO2Nhc2UgXCJiYW5uZXJcIjplPWE7Zj05MD5jP2M6OTA8Yj9iOjkwO2JyZWFrO2Nhc2UgXCJza3lzY3JhcGVyXCI6ZT05MD5hP2E6OTA8ZD9kOjkwO2Y9YzticmVhaztkZWZhdWx0OmE9ITE7YnJlYWsgYX1yeCh0aGlzLGUsZixzeChlLGYsXCI8cD5NaW5pbXVtIHNpemU6XCIrZCtcInhcIitiK1wiPC9wPjxwPk1heGltdW0gc2l6ZTpcIisoYStcInhcIitjK1wiPC9wPjxkaXYgaWQ9dG9vd2lkZSBzdHlsZT1cXFwiZGlzcGxheTpub25lOyBiYWNrZ3JvdW5kOiNmYWFcXFwiPlNsb3QgZG9lcyBub3QgZml0IGhvcml6b250YWxseTxzY3JpcHQ+bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlKSA9PiB7dG9vd2lkZS5zdHlsZS5kaXNwbGF5ID0gICAoZVtlLmxlbmd0aC0xXS5ib3VuZGluZ0NsaWVudFJlY3Qud2lkdGggPiAgICBlW2UubGVuZ3RoLTFdLmludGVyc2VjdGlvblJlY3Qud2lkdGgpID8gJ2Jsb2NrJyA6ICdub25lJzt9LHt0aHJlc2hvbGQ6MX0pLm9ic2VydmUoZG9jdW1lbnQuYm9keSk7XFx4M2Mvc2NyaXB0PjwvZGl2PlwiKSkpO2E9ITB9ZWxzZSBhPSExfWlmKCFhKXthPXRoaXMuVC52YWx1ZTtpZihudWxsPT1hKXRocm93IEVycm9yKFwiTWlzc2luZyAnd2lkdGgnLlwiKTtjPXRoaXMuTS52YWx1ZTtpZihudWxsPT1jKXRocm93IEVycm9yKFwiTWlzc2luZyAnaGVpZ2h0Jy5cIik7ZD10aGlzLk8udmFsdWU7aWYobnVsbD09ZCl0aHJvdyBFcnJvcihcIk1pc3NpbmcgJ2h0bWxJbnB1dCcuXCIpO3J4KHRoaXMsYSxjLGQpfX07dmFyIHF4PWZ1bmN0aW9uKGEpe2E9eGEoYS5jYSlbMF07cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJmEuZXZlcnkoZnVuY3Rpb24oYil7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBifSk/bmV3IF8uVGYoYVswXSxhWzFdKTpudWxsfSxzeD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuJzxodG1sPjxib2R5IHN0eWxlPVwiaGVpZ2h0OicrKGItMitcInB4O3dpZHRoOlwiKyhhLTIrJ3B4O2JhY2tncm91bmQtY29sb3I6I2RkZDtjb2xvcjojMDAwO2JvcmRlcjoxcHggc29saWQgI2YwMDtcIj4nKSkrYysoXCI8cD5SZW5kZXJlZCBzaXplOlwiK2ErXCJ4XCIrYitcIjwvcD48L2JvZHk+PC9odG1sPlwiKX0scng9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2U9dm9pZCAwPT09ZT9hLksudmFsdWU6ZTtVKGEuQSxuZXcgXy5UZihiLGMpKTtVKGEuRyxkKTtudWxsPT1lP0ZyKGEuQyk6VShhLkMsZSk7ZiYmXy5jaShmLFwib3BhY2l0eVwiLC41KX07dmFyIHR4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLlVhPWI7dGhpcy5BPWM7dGhpcy5DPWQ7dGhpcy5EPWU7dGhpcy5tPWY7dGhpcy5HPWc7dGhpcy5GPXRoaXMubCgpfTtfLkoodHgsWSk7dHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY3M307dHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKG51bGwhPXRoaXMuVWEpdXgodGhpcyx0aGlzLlVhKSxVKHRoaXMuRix0aGlzLlVhKTtlbHNlIGlmKHNrKHRoaXMubSkpVSh0aGlzLkYsdngodGhpcykpO2Vsc2V7dmFyIGI9U28odGhpcy5HLEFvLHRoaXMuaWQoKSxmdW5jdGlvbihjKXtjLmlkPT09YS5BJiYoYigpLHV4KGEsYyksVShhLkYsYykpfSk7Xy5SKHRoaXMsYil9fTt2YXIgdng9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5lZyhkb2N1bWVudCxcIklOU1wiKTtiLmlkPWEuQTtfLlhnKGIse2Rpc3BsYXk6XCJub25lXCJ9KTthLkQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGIpOzI9PT1hLm18fDM9PT1hLm0/bW8oYS5zbG90LGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgXy5mZyhiKX0pOl8uUihhLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgXy5mZyhiKX0pO3JldHVybiBifSx1eD1mdW5jdGlvbihhLGIpe2lmKDIhPT1hLm0mJjMhPT1hLm0pe3ZhciBjPV8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxiLmNoaWxkTm9kZXMpO2M9Xy5GKGMpO2Zvcih2YXIgZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZD1kLnZhbHVlLDE9PT1kLm5vZGVUeXBlJiZkLmlkIT09YS5DJiZfLmZnKGQpO18ueSgzODkpP2Iuc3R5bGUuZGlzcGxheT1cImZsZXhcIjpOYihiLCEwKX19O3ZhciB3eD1mdW5jdGlvbihhKXtZLmNhbGwodGhpcyk7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1WKHRoaXMsYSl9O18uSih3eCxZKTt3eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjc2fTt3eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXVhKHRoaXMubS52YWx1ZSk7VSh0aGlzLkYsYSl9O3ZhciB4eD1mdW5jdGlvbihhLGIpe1kuY2FsbCh0aGlzKTt2YXIgYz10aGlzO3RoaXMuc2xvdD1hO3RoaXMubT1iO3RoaXMuRj10aGlzLmwoKTt0aGlzLkE9amQoZnVuY3Rpb24oKXtjLnNsb3QubWIoKTtRbyhjLm0sRG8sYy5zbG90LmdldFNsb3RJZCgpKX0pO3RoaXMuQz1rZChmdW5jdGlvbigpe3ZhciBkPWMuaW5WaWV3UGVyY2VudGFnZTtRbyhjLm0sTG8sYy5zbG90LmdldFNsb3RJZCgpLGQpfSwyMDApfTtfLkooeHgsWSk7eHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcxNH07eHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9bmV3IEksYz1TbyhiLE1vLHRoaXMuaWQoKSxmdW5jdGlvbihkKXt2YXIgZT1kLmluVmlld1BlcmNlbnRhZ2U7ZC5tYiYmYS5BKCk7dm9pZCAwPT09ZXx8aXNOYU4oZSl8fChlPU1hdGguZmxvb3IoZSksYS5pblZpZXdQZXJjZW50YWdlIT09ZSYmKGEuaW5WaWV3UGVyY2VudGFnZT1lLGEuQygpKSl9KTtfLlIodGhpcyxjKTtVKHRoaXMuRixiKX07dmFyIHl4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuLHEsdyx1LEMsUSxOLEgscWEsb2Isd2MseGMsb2gsWnosJHosYUEsYkEsY0EsZEEsZUEsZkEpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLkg9Yjt0aGlzLmhhPWM7dGhpcy51YT1kO3RoaXMuZ2E9ZTt0aGlzLm9hPWY7dGhpcy5iYT1nO3RoaXMuWD1oO3RoaXMuVmE9azt0aGlzLkQ9bDt0aGlzLkE9bTt0aGlzLkw9bjt0aGlzLm09cTt0aGlzLkc9dzt0aGlzLkM9dTt0aGlzLks9Qzt0aGlzLlQ9UTt0aGlzLnBhPU47dGhpcy5zYT1IO3RoaXMuYWE9cWE7dGhpcy50YT1vYjt0aGlzLk89d2M7dGhpcy5JPXhjO3RoaXMuVj1vaDt0aGlzLmZhPVp6O3RoaXMuUD0kejt0aGlzLmthPWFBO3RoaXMuTT1iQTt0aGlzLmRhPWNBO3RoaXMuWT1kQTt0aGlzLmVhPWVBO3RoaXMuVz1WKHRoaXMsZkEpfTtfLkooeXgsWSk7eXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDc1N307eXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgd2I7Xy53aCh0aGlzLGEpO2lmKHRoaXMuVy52YWx1ZXx8UmsoXCJnb29nbGVfbm9yZW5kZXJcIikpe3ZhciBiPW5ldyBNdyh0aGlzLnNsb3QsdGhpcy5oYSx0aGlzLkgsdGhpcy5nYSx0aGlzLlZhLHRoaXMuRCx0aGlzLkEsdGhpcy5HKTtYKGEsYil9ZWxzZXtiPXRoaXMuaGE7dmFyIGM9Yi5OLGQ9Yi5SO2I9dGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKTt2YXIgZT1kW2JdLGY9Z2soZSksZz10aGlzLnNsb3QuZ2V0U2xvdElkKCksaD1uZXcgVXcodGhpcy5MLnRvcCx0aGlzLmJhKTtYKGEsaCk7dmFyIGs9bmV3IFB3O1goYSxrKTtiPW5ldyB0eCh0aGlzLnNsb3QscGEodGhpcy5zbG90LHRoaXMuQSksYixWayh0aGlzLnNsb3QuZ2V0U2xvdElkKCkpLHRoaXMuQSxmLHRoaXMuRCk7WChhLGIpO3ZhciBsPW5ldyBGdyh0aGlzLnVhLHRoaXMubSx0aGlzLkMsdGhpcy5LLHRoaXMuVCk7WChhLGwpO3ZhciBtPW5ldyBueChjLGUsdGhpcy5MLHRoaXMubSx0aGlzLkMsdGhpcy5UKTtYKGEsbSk7ZD1uZXcgSXcodGhpcy5zbG90LGMsZix0aGlzLkEsYi5GLG0uRik7WChhLGQpO3ZhciBuPW5ldyB3eChkLkYpO1goYSxuKTtrPW5ldyBXdyh0aGlzLnNsb3QsdGhpcy5vYSxrLkYsbi5GKTtYKGEsayk7az1uZXcgU3coTyhjLE5qLDUpLHRoaXMub2Esay5GLGQuRixuLkYsdGhpcy5HLHRoaXMucGEsdGhpcy5zYSk7WChhLGspO249bmV3IEh3KGYsdGhpcy5vYS5oZWlnaHQsdGhpcy5NLHRoaXMuTyk7WChhLG4pO2w9bmV3IHB4KHRoaXMuc2xvdCxlLHRoaXMub2Eud2lkdGgsdGhpcy5MLHRoaXMuYWEsdGhpcy50YSx0aGlzLk8sbC5tLGIuRik7WChhLGwpO249bmV3IEp3KHRoaXMuTCxiLkYpO1goYSxuKTtuPW5ldyB4dyh0aGlzLkEsdGhpcy5zbG90LGUsdGhpcy5vYSx0aGlzLkksYi5GLGQuRixsLkEsbC5DLG4uRik7WChhLG4pO209bmV3IGF4KHRoaXMubSxtLkYpO1goYSxtKTtjPW5ldyBveChjLGUsbS5GLHRoaXMubSx0aGlzLkssdGhpcy5WKTtYKGEsYyk7Yz1uZXcgd3codGhpcy5zbG90LHRoaXMuSCx0aGlzLmhhLHRoaXMuTCxsLkcsay5GLGIuRixkLkYsbC5BLG0uRix0aGlzLm0sdGhpcy5DLHRoaXMuRyx0aGlzLkksdGhpcy5WLGMuRix0aGlzLkssdGhpcy5mYSx0aGlzLlAsdGhpcy5rYSxuLkYpO1goYSxjKTtlPW5ldyBLdyh0aGlzLkgsZix0aGlzLnNsb3QsdGhpcy5MLHRoaXMuTSxjLm0sYi5GKTtYKGEsZSk7aD1uZXcgT3coZix0aGlzLm9hLHRoaXMuZGEsYy5tLGIuRixoLkYpO1goYSxoKTtoPW5ldyBEdyh0aGlzLkwsdGhpcy5tLGMubSxjLkEsYy5IKTtYKGEsaCk7aD1uZXcgR3codGhpcy5MLGcsUmcoKSx0aGlzLkQsdGhpcy5ZLGMubSk7WChhLGgpO2Y9bmV3IG14KGcsdGhpcy5oYSxmLHRoaXMuTCx0aGlzLkQsYy5tLGMuQyxiLkYpO1goYSxmKTtmPW5ldyB4eCh0aGlzLnNsb3QsdGhpcy5EKTtYKGEsZik7Zz1uZXcgVncodGhpcy5zbG90LiRhLHRoaXMuWCx0aGlzLm0sYy5tLGYuRik7WChhLGcpO2c9bmV3IHp3KHRoaXMuRyx0aGlzLkksdGhpcy5DLHRoaXMubSx0aGlzLlAsYy5tLGQuRixjLkEsYy5HLGMuSSk7WChhLGcpO2Y9bmV3IHl3KGYuRix0aGlzLkMsdGhpcy5tLGMuRCk7WChhLGYpO2I9bmV3IE53KHRoaXMuTCx0aGlzLmVhLGMubSxkLkYsYi5GKTtYKGEsYil9eWIoYSl9O3ZhciB6eD1mdW5jdGlvbigpe3RoaXMuaj1uZXcgdC5NYXB9LEF4PWZ1bmN0aW9uKGEsYil7dmFyIGM7YiYmKG51bGw9PT0oYz1hLmouZ2V0KGIpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy56YSgpLGEuai5kZWxldGUoYikpfSxCeD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7QXgoYSxiKTt2YXIgbD1uZXcgd2IsbT14aSghMCx3aW5kb3cpLG49ZS5OLHE9ZS5SW2IuZ2V0U2xvdEVsZW1lbnRJZCgpXTtmPW5ldyBZdyhiLGUsYyxrLGYpO1gobCxmKTt2YXIgdz1uZXcgVXcod2luZG93LnRvcCxrKTtYKGwsdyk7dmFyIHU9bmV3IFB3O1gobCx1KTtrPW5ldyB0eChiLHBhKGIsaCksYi5nZXRTbG90RWxlbWVudElkKCksVmsoYi5nZXRTbG90SWQoKSksaCxnayhxKSxJLkIoKSk7WChsLGspO3ZhciBDPW5ldyBGdyhnLGYubSxmLkEsZi5ILGYuTSk7WChsLEMpO3ZhciBRPW5ldyBueChuLHEsd2luZG93LGYubSxmLkEsZi5NKTtYKGwsUSk7Zz1uZXcgSXcoYixuLGdrKHEpLGgsay5GLFEuRik7WChsLGcpO3ZhciBOPW5ldyB3eChnLkYpO1gobCxOKTt1PW5ldyBXdyhiLG0sdS5GLE4uRik7WChsLHUpO3U9bmV3IFN3KE8obixOaiw1KSxtLHUuRixnLkYsTi5GLGYuRCxmLmRhLGYuZWEpO1gobCx1KTtOPW5ldyBIdyhnayhxKSxtLmhlaWdodCxmLkksZi5YKTtYKGwsTik7Qz1uZXcgcHgoYixxLG0ud2lkdGgsd2luZG93LGYuVixmLmZhLE4uRixDLm0say5GKTtYKGwsQyk7Tj1uZXcgSncod2luZG93LGsuRik7WChsLE4pO2g9bmV3IHh3KGgsYixxLG0sZi5HLGsuRixnLkYsQy5BLEMuQyxOLkYpO1gobCxoKTttPW5ldyBheChmLm0sUS5GKTtYKGwsbSk7bj1uZXcgb3gobixxLG0uRixmLm0sZi5ILGYuTyk7WChsLG4pO249bmV3IHd3KGIsYyxlLHdpbmRvdyxDLkcsdS5GLGsuRixnLkYsQy5BLG0uRixmLm0sZi5BLGYuRCxmLkcsZi5PLG4uRixmLkgsZi5hYSxmLkssZi5iYSxoLkYpO1gobCxuKTtjPW5ldyBLdyhjLGdrKHEpLGIsd2luZG93LGYuSSxuLm0say5GKTtYKGwsYyk7Yz1uZXcgT3coZ2socSksZS5vYSxmLlcsbi5tLGsuRix3LkYpO1gobCxjKTtjPW5ldyBEdyh3aW5kb3csZi5tLG4ubSxuLkEsbi5IKTtYKGwsYyk7Yz1uZXcgR3cod2luZG93LGIuZ2V0U2xvdElkKCksUmcoKSxJLkIoKSxmLlQsbi5tKTtYKGwsYyk7ZT1uZXcgbXgoYi5nZXRTbG90SWQoKSxlLGdrKHEpLHdpbmRvdyxJLkIoKSxuLm0sbi5DLGsuRik7WChsLGUpO2U9bmV3IHh4KGIsSS5CKCkpO1gobCxlKTtkPW5ldyBWdyhiLiRhLGQsZi5tLG4ubSxlLkYpO1gobCxkKTtkPW5ldyB6dyhmLkQsZi5HLGYuQSxmLm0sZi5LLG4ubSxnLkYsbi5BLG4uRyxuLkkpO1gobCxkKTtkPW5ldyB5dyhlLkYsZi5BLGYubSxuLkQpO1gobCxkKTtmPW5ldyBOdyh3aW5kb3csZi5ZLG4ubSxnLkYsay5GKTtYKGwsZik7YS5qLnNldChiLGwpO18uUihiLGZ1bmN0aW9uKCl7QXgoYSxiKX0pO18ueSgzMzYpJiZsbyhiLGZ1bmN0aW9uKCl7QXgoYSxiKX0pO3liKGwpfSxDeD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbixxLHcpe0F4KGEsYik7dmFyIHU9bmV3IHdiO2s9bmV3IFl3KGIsZSxjLGgsbmV3IGRuLGssbCxtLHRrLkIoKSxJLkIoKSxxLHcpO1godSxrKTtjPW5ldyB5eChiLGMsZSxmLG4seGkoITAsd2luZG93KSxoLGQsdGsuQigpLEkuQigpLGcsd2luZG93LGsubSxrLkQsay5BLGsuSCxrLk0say5kYSxrLmVhLGsuVixrLmZhLGsuWCxrLkcsay5PLGsuYWEsay5LLGsuYmEsay5JLGsuVyxrLlQsay5ZLGsucGEpO1godSxjKTt5Yih1KTthLmouc2V0KGIsdSk7Xy5SKGIsZnVuY3Rpb24oKXtBeChhLGIpfSk7Xy55KDMzNikmJmxvKGIsZnVuY3Rpb24oKXtBeChhLGIpfSl9O3ZhciBEeD1mdW5jdGlvbihhLGIsYyl7dGhpcy51cmw9YTt0aGlzLmw9Yjt0aGlzLndpdGhDcmVkZW50aWFscz1jO3RoaXMubz0wO3RoaXMudj0hMTt0aGlzLmo9bmV3IFhNTEh0dHBSZXF1ZXN0fSxHeD1mdW5jdGlvbihhKXthLmoub3BlbihcIkdFVFwiLGEudXJsKTthLmoud2l0aENyZWRlbnRpYWxzPWEud2l0aENyZWRlbnRpYWxzO18ueSgzMTIpJiZ1dChhLmopO2Euai5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtFeChhLCExKX07YS5qLm9ubG9hZD1mdW5jdGlvbigpe0V4KGEsITApfTthLmoub25lcnJvcj1mdW5jdGlvbigpe0Z4KGEubCxFcnJvcihcIlhIUiBlcnJvclwiKSl9O2Euai5zZW5kKCl9LEV4PWZ1bmN0aW9uKGEsYil7dHJ5e2lmKDM9PT1hLmoucmVhZHlTdGF0ZXx8ND09PWEuai5yZWFkeVN0YXRlKWlmKDMwMDw9YS5qLnN0YXR1cylhLnZ8fEZ4KGEubCxFcnJvcihcInhocl9lcnItXCIrYS5qLnN0YXR1cykpLGEudj0hMDtlbHNle3ZhciBjPWEuai5yZXNwb25zZVRleHQuc3Vic3RyKGEubyk7aWYoYyl7dmFyIGQ9YS5sO2lmKGMpaWYoMSE9PWQuaiYmMiE9PWQuailGeChkLEVycm9yKFwic3RhdGUgZXJyOiAoXCIrKFtkLmosZC5sLmxlbmd0aF0uam9pbigpK1wiKVwiKSkpO2Vsc2V7ZC5sJiYoYz1kLmwrYyk7dmFyIGU9MCxmPSExO2Rve3ZhciBnPWMuaW5kZXhPZihcIlxcblwiLGUpO2Y9LTEhPT1nO2lmKCFmKWJyZWFrO3ZhciBoPWQsaz1jLnN1YnN0cihlLGctZSk7aWYoMT09PWguailoLnY9aywrK2gubyxoLmo9MjtlbHNle3RyeXtoLm0oaC5vLGgudixpaChrKSksaC52PVwiXCJ9Y2F0Y2gobSl7fWguaj0xfWU9ZysxfXdoaWxlKGYmJmU8Yy5sZW5ndGgpO2QubD1jLnN1YnN0cihlKX19YS5vPWEuai5yZXNwb25zZVRleHQubGVuZ3RoO2lmKGImJjQ9PT1hLmoucmVhZHlTdGF0ZSl7dmFyIGw9YS5sOzEhPT1sLmp8fGwubD9GeChsLEVycm9yKFwic3RhdGUgZXJyIChcIisoW2wuaixsLmwubGVuZ3RoXS5qb2luKCkrXCIpXCIpKSk6KGwuaj0zLGwuQygpKX19fWNhdGNoKG0pe0Z4KGEubCxtKX19O3ZhciBIeD1mdW5jdGlvbihhLGIsYyl7dGhpcy5tPWE7dGhpcy5BPWI7dGhpcy5DPWM7dGhpcy52PVwiXCI7dGhpcy5vPS0xO3RoaXMuaj0xO3RoaXMubD1cIlwifSxGeD1mdW5jdGlvbihhLGIpe2Euaj00O3RyeXthLkEoYil9Y2F0Y2goYyl7fX07dmFyIEl4PWZ1bmN0aW9uKCl7aWYoYmUoKSl7aWYoXy55KDEwOSkmJjA8PVBkKGRlKCksMTIpKXJldHVybiExO2lmKDA8PVBkKGRlKCksMTEpKXJldHVybiEwfWVsc2UgaWYoJGQoKSYmMDw9UGQoZGUoKSw2NSkpcmV0dXJuITA7cmV0dXJuITF9LEp4PWZ1bmN0aW9uKGEsYil7Xy55KDIwMCk/YigpOkl4KCk/cXIoRyhhLGIpKTooXy55KDIzOSkmJnFyKG51bGwpLGIoKSl9LEt4PWZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGMpe2ZhKF8uci50b3AsXCJnb29nbGVmY0xvYWRlZFwiKT9jKCk6c2V0VGltZW91dChmdW5jdGlvbigpe2IoRyg2NzgsYykpfSwyMCl9O3BoKCkmJl8ueSgzMDIpP2IoYSk6YSgpfSxMeD1mdW5jdGlvbihhKXt2YXIgYj1waCgpO18uci5nb29nbGVmYyYmIWImJmtiKFwiZ3B0X2ZjX2hhc19uYW1lc3BhY2VfYnV0X25vX2lmcmFtZXNcIixmdW5jdGlvbihjKXtsYihjKTtFKGMsXCJuZXR3b3JrSWRcIixhKX0se3ZhOjF9KX0sTXg9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uRGooMjIxKSxlPWEuai5sZW5ndGg/YS5qWzBdLm06XCJcIjthPXZvaWQgMDtfLnkoMzczKSYmKGE9ISghYnx8IXgoYiw4KSksYj1pYSgpLCFhJiZiJiZrYihcImdwdF9ucGFfdXNlc19pZnJhbWVfbm90X2FwaVwiLGZ1bmN0aW9uKGYpe2xiKGYpO0UoZixcIm5ldHdvcmtJZFwiLGUpfSx7dmE6MX0pKTt0aChkLGUsRyg0NTEsYyksYSl9LE54PWZ1bmN0aW9uKGEsYil7YT1uZXcgbnMoXy5jZyhhKSk7Xy55KDI3NCkmJnBzKGEpPyhqbC5CKCkuaW5mbyhNbSgpKSxzcyhhLEcoNjYxLGZ1bmN0aW9uKGMpe2IoYyl9KSkpOmIobnVsbCl9LE94PWZ1bmN0aW9uKGEsYil7YT1uZXcgWXIoXy5jZyhhKSk7aWYoJHIoYSkpe3ZhciBjPUcoNjYwLGZ1bmN0aW9uKGQpe2QmJlwic3RyaW5nXCI9PT10eXBlb2YgZC51c3BTdHJpbmc/YihkLnVzcFN0cmluZyk6YihudWxsKX0pO2psLkIoKS5pbmZvKExtKCkpO2JzKGEsYyl9ZWxzZSBiKG51bGwpfSxQeD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0xRTMqXy5yYSg0NywxKSxmPWZ1bmN0aW9uKGcpe3JldHVybiBNYXRoLm1heCgwLE1hdGgucm91bmQoKGUtKGEtZykpLzFFMykpfTtkPV8ueSg0MjEpP2QuZ2V0KGIuZ2V0U2xvdElkKCkpfHxudWxsOmIuWTtpZihudWxsPT09ZClyZXR1cm4gMDtzd2l0Y2goXy5yYShiLmlzQmFja2ZpbGwoKT81Mjo0Nikpe2Nhc2UgMDpyZXR1cm4gZihkKTtjYXNlIDE6cmV0dXJuIF8ueSg0MTIpPyhiPWdwKGMsYikpP2YoYik6LTE6KGI9Yi5QKT9mKGIuZ2V0VGltZXN0YW1wKCkuZ2V0VGltZSgpKTotMTtjYXNlIDI6cmV0dXJuIF8ueSg0MTIpPyhiPWhwKGMsYikpP2YoYik6LTE6KGI9Yi5HKT9mKGIpOi0xfXJldHVybiAwfSxReD1mdW5jdGlvbihhKXthLmxlbmd0aCYmKGE9YVswXSxZaSh0ay5CKCksXCIzXCIsYS5sKSl9LFJ4PWZ1bmN0aW9uKGEpe2E9YSBpbnN0YW5jZW9mIEVycm9yP2E6RXJyb3IoKTthLm1lc3NhZ2U9YS5tZXNzYWdlfHxcInN0cm1fZXJyXCI7Y2woMjg5LGEsITApfSxTeD1mdW5jdGlvbihhKXt2YXIgYj1fLk5pKCk7YT1fLkYoYSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSljLnZhbHVlLlk9Yn0sVHg9ZnVuY3Rpb24oYSxiKXtpZihfLnkoMTc3KSlyZXR1cm4hMTthPXgoYSwxMSk7bnVsbD09YSYmKGE9eChiLDEwKSk7cmV0dXJuISFhfSxVeD1udWxsLFZ4PW51bGwsV3g9ZnVuY3Rpb24oKXt2YXIgYT1XbygpO3ZhciBiPVZ4PVZ4fHxuZXcgZHI7dGhpcy5qPWE7dGhpcy5HPWI7dGhpcy5LPW5wLkIoKTt0aGlzLnY9bmV3IHQuTWFwO3RoaXMubD1uZXcgdC5NYXA7dGhpcy5DPW5ldyB0Lk1hcDt0aGlzLkk9R2IodGhpcy5JKTt0aGlzLm09RygyOTEsdGhpcy5tKTt0aGlzLlg9UmsoXCJnb29nbGVfbm9mZXRjaFwiKTt0aGlzLlk9UmsoXCJnb29nbGVfbm9yZW5kZXJcIik7dGhpcy5EPU5hTjt0aGlzLlU9bmV3IEJ0O3RoaXMuVz0wO3RoaXMuTz1iYihfLnIpO3RoaXMuVj17fTt0aGlzLlQ9dGhpcy5QPU5hTjt0aGlzLkE9e307dGhpcy5vPXt9O3RoaXMuTT1uZXcgeng7dGhpcy5IPUcoNjQzLHRoaXMuSCl9LCR0PWZ1bmN0aW9uKCl7cmV0dXJuIFV4PVV4fHxuZXcgV3h9LFl4PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1kLnNsb3Q7ZD1kLmNhO2lmKF8uWW8oYS5qLGcpKXtpZihlKXt2YXIgaD17fTtoW2cuZ2V0U2xvdEVsZW1lbnRJZCgpXT1kO1h4KGEsW2ddLGYsaCl9aWYoZXx8IXVvKGcsYykpYT14KGQsMTApLG51bGw9PWEmJihhPXgoZiwxMSkpLGEmJiFfLnkoMzkwKSYmUmIoZyxiLGMpfX0sWng9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2RwKGEuaixiLGUud2EpO2lmKGY9Zi5SW2IuZ2V0U2xvdEVsZW1lbnRJZCgpXSl0byhiLGQpLF8ueSg0MTgpfHxxbyhiLEIoZCwzMykpLFFvKEkuQigpLEpvLGIuZ2V0U2xvdElkKCksZCksbnVsbCE9QihkLDIzKSYmQihkLDIzKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe29wKGEuSyxnKTt2YXIgaD1hLks7aC5qW2ddfHwoaC5qW2ddPVtdKTtoLmpbZ10ucHVzaChiKX0pLHVmKGQsJG0sMTQpLmxlbmd0aCYmZXIoYS5HLHVmKGQsJG0sMTQpWzBdLGMpLF8ueSg0MjIpP1RrKGYsTyhkLEJmLDUwKSwhIXgoZCwxMSkpJiYoXy5abyhhLmosYiksU2soTyhkLEJmLDUwKSkmJm1vKGIsZnVuY3Rpb24oKXtfLiRvKGEuaixiKX0pKTooND09Z2soZil8fDU9PWdrKGYpfHx4KGQsMTEpKSYmXy5abyhhLmosYikseChkLDgpfHxqbyhiLEh0KGUsYikpfTtXeC5wcm90b3R5cGUuST1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7Yj12b2lkIDA9PT1iPyExOmI7cmV0dXJuIF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcj9uZXcgXy5yLkludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGMubShkLGUsYil9LHtyb290TWFyZ2luOmF9KTpuZXcgTWIoZnVuY3Rpb24oZCxlKXtyZXR1cm4gYy5tKGQsZSxiKX0se3Jvb3RNYXJnaW46YX0pfTtXeC5wcm90b3R5cGUubT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcztjPXZvaWQgMD09PWM/ITE6YzthLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoY3x8ISgwPj1lLmludGVyc2VjdGlvblJhdGlvKSl7Yi51bm9ic2VydmUoZS50YXJnZXQpO2U9ZS50YXJnZXQuaWQ7dmFyIGY9ZC52LmdldChlKTtmJiYoZi5IYigpLGQudi5kZWxldGUoZSkpfX0pfTt2YXIgJHg9ZnVuY3Rpb24oYSxiKXtpZighYi5sZW5ndGgpcmV0dXJuW107dmFyIGM9YlswXS5tO3JldHVybiBfLnkoNDE4KT9QcChRcC5CKCkpLm1hcChmdW5jdGlvbihkKXtkPWQubSE9Y3x8Xy5BKGIsXCJpbmNsdWRlc1wiKS5jYWxsKGIsZCk/XCJcIjooZD1hLmouai5nZXQoZCkpJiZkLlNifHxcIlwiO3JldHVybiBkfSkuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiEhZH0pOlBwKFFwLkIoKSkuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBhcChhLmosZCkmJmQubT09YyYmISFkLk8mJiFfLkEoYixcImluY2x1ZGVzXCIpLmNhbGwoYixkKX0pLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC5PfSl9LGF5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW5ldyBFdDtlLkk9XCJsZGpoXCI7ZD14KGQuTiw2KXx8Xy55KDM2NCk/XCJmaWZzXCI6XCJmaWZcIjtlLkc9ZDtlLnY9YS5PO2UuRWE9YztlLmo9YjthPV8uRihiKTtmb3IoYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpR3QoZSxiLnZhbHVlKTtyZXR1cm4gZX0sZHk9ZnVuY3Rpb24oYSxiLGMsZCl7bmooMik7YnkoYSxiKTtyZXR1cm4gVXUoY3koYSwhIXgoZC5OLDYpfHxfLnkoMzY0KSxiLGMsZCkpfSxjeT1mdW5jdGlvbihhLGIsYyxkLGUsZil7cmV0dXJuIG5ldyBSdShiLGEuaixhLkcsYyxkLGUsdm9pZCAwPT09Zj8hMTpmKX0sYnk9ZnVuY3Rpb24oYSxiKXtiLlU9a2ouQigpLmooKTtiLm89YS5VLmdldE9zZUlkKCk7Xy55KDIwMCl8fChucigpLGIuRD1rclsxXSxucigpLGIuSD1rcls0XSxucigpLGIuSz1rcls2XSk7Yi5XYT1hLlA7Yi5YYT1hLlQ7Yi5KYT1hLkQ7Yi5tPSR4KGEsYi5qKX0sZ3k9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZXkoYSxiLGQpO2lmKFwiYm9vbGVhblwiPT09dHlwZW9mIGUpZXx8ZnkoYSxiLGMsZCk7ZWxzZSByZXR1cm4gZS50aGVuKEcoNzUwLGZ1bmN0aW9uKCl7ZnkoYSxiLGMsZCl9KSl9LGV5PWZ1bmN0aW9uKGEsYixjKXtiPWIuajt2YXIgZD1jLk4sZT1jLlIsZj1PKGQsTmosNSl8fG5ldyBOajtjPV8ueSgyOTYpO2Y9V3YoZik7aWYobnVsbD09ZilyZXR1cm4gYz90LlByb21pc2UucmVzb2x2ZSgpOiExO3ZhciBnPU1hdGgubWF4KGYvMTAwLDApO2lmKCFiLmV2ZXJ5KGZ1bmN0aW9uKGwpe3ZhciBtPWVbbC5nZXRTbG90RWxlbWVudElkKCldLG47aWYobj1zYShwYShsKSkpbj13aW5kb3csbD17c2xvdDpsLGNhOm19LG09ISF4KGQsMTUpLChsPVBrKGwsbi5kb2N1bWVudCxtKSkmJi0xMjI0NTkzMyE9bC55PyhuPXhpKCEwLG4pLG49T2sobCxuLGcpKTpuPSEwLG49IW47cmV0dXJuIG59KSlyZXR1cm4gYz90LlByb21pc2UucmVzb2x2ZSgpOiExO2M9YS5JKGYrXCIlXCIpO3ZhciBoPW5ldyBCcjtmPXt9O2I9Xy5GKGIpO2Zvcih2YXIgaz1iLm5leHQoKTshay5kb25lO2Y9e2liOmYuaWIsdWI6Zi51Yn0saz1iLm5leHQoKSlrPWsudmFsdWUsZi51Yj1rLmdldFNsb3RFbGVtZW50SWQoKSxmLmliPXBhKGspLGYuaWImJihhLnYuc2V0KGYudWIse0hiOmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgaC5yZXNvbHZlKCl9LGxkOmN9KSxjLm9ic2VydmUoZi5pYiksbG8oayxmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaHkoYSxsLmliLGwudWIpfX0oZikpKTtyZXR1cm4gaC5qfSxmeT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1iLmo7YS52LmdldChlWzBdLmdldFNsb3RFbGVtZW50SWQoKSkmJmUuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgZz1mLmdldFNsb3RFbGVtZW50SWQoKTtoeShhLHBhKGYpLGcpfSk7aXkoYSxiLGMsZCl9LGl5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPSsrYS5XO2IubD1lO2EuVltlXT1iLmo7ZT1keShhLGIsYyxkKTtqeShhLGUsYixjLGQpO2I9Yi5qO2Q9KGQ9TyhkLk4sUGosMTgpKSYmbnVsbCE9QihkLDQpP3goZCw0KTpfLnkoMjQyKTtqdyhody5CKCksd2luZG93LExrKCkpO2R8fGp3KGh3LkIoKSx3aW5kb3cpO2lmKF8ueSg0MjEpKWZvcihkPV8uTmkoKSxjPXt9LGI9Xy5GKGIpLGU9Yi5uZXh0KCk7IWUuZG9uZTtjPXtZYTpjLllhfSxlPWIubmV4dCgpKWMuWWE9ZS52YWx1ZSxhLkMuaGFzKGMuWWEuZ2V0U2xvdElkKCkpfHxfLlIoYy5ZYSxmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLkMuZGVsZXRlKGYuWWEuZ2V0U2xvdElkKCkpfX0oYykpLGEuQy5zZXQoYy5ZYS5nZXRTbG90SWQoKSxkKTtlbHNlIFN4KGIpfSxteT1mdW5jdGlvbihhLGIsYyxkKXtiPWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3ZhciBmPWUuZ2V0U2xvdElkKCksZz1hLmwuZ2V0KGYpO2c/MCE9Xy5yYSg0NikmJl8uQShPYmplY3QsXCJhc3NpZ25cIikuY2FsbChPYmplY3QsZyx7b3B0aW9uczpjLGhhOmR9KTooYS5sLnNldChmLHtoYTpkLG9wdGlvbnM6YyxJYzpudWxsfSksXy5SKGYsZnVuY3Rpb24oKXthLmwuZGVsZXRlKGYpfSkpO2xvKGUsZnVuY3Rpb24oKXtyZXR1cm4ga3koYSxlKX0pO3JldHVybiFnfSk7Yi5sZW5ndGgmJmx5KGEsYixjLGQpfSxseT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1fLk5pKCk7Yj1nZChiLGZ1bmN0aW9uKGYpe3JldHVybiBQeChlLGYsYS5qLGEuQyl9KTtfLkpiKGIsZnVuY3Rpb24oZixnKXtpZihcIjBcIj09PWcpbnkoYSxmLGMsZCk7ZWxzZSBpZihcIi0xXCI9PT1nKW95KGEsZik7ZWxzZXt2YXIgaD1wYXJzZUludChnLDEwKTtmLmZvckVhY2goZnVuY3Rpb24oayl7amwuQigpLkooR20oU3RyaW5nKGgpLGsuZ2V0QWRVbml0UGF0aCgpKSl9KTtueShhLGYsYyxkLDFFMypoKX19KX0sb3k9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtiPV8uRihiKTtmb3IodmFyIGQ9Yi5uZXh0KCk7IWQuZG9uZTtjPXt5YTpjLnlhLFphOmMuWmEsamI6Yy5qYixmYjpjLmZiLHRiOmMudGJ9LGQ9Yi5uZXh0KCkpe2MueWE9ZC52YWx1ZTtjLnRiPV8ucmEoYy55YS5pc0JhY2tmaWxsKCk/NTI6NDYpO2MuWmE9W107Yy5qYj1udWxsO2MuZmI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYpe3ZhciBnPWEubC5nZXQoZS55YS5nZXRTbG90SWQoKSk7dHJ5e255KGEsW2UueWFdLGcub3B0aW9ucyxnLmhhLGY/MDoxRTMqXy5yYSg0NywxKSl9ZmluYWxseXtmPV8uRihlLlphKTtmb3IoZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZz1nLnZhbHVlLGcoKTtlLlphLmxlbmd0aD0wO251bGwhPT1lLmpiJiZjbGVhclRpbWVvdXQoZS5qYil9fX0oYyk7aWYoZD0xRTMqXy5yYShjLnlhLmlzQmFja2ZpbGwoKT81Njo1NSkpYS5sLmdldChjLnlhLmdldFNsb3RJZCgpKSxjLmpiPXNldFRpbWVvdXQoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmIoITApfX0oYyksZCk7c3dpdGNoKGMudGIpe2Nhc2UgMjpjLlphLnB1c2goT2IoSS5CKCksRG8sYy55YS5nZXRTbG90SWQoKSw2ODQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmIoKX19KGMpKSk7Y2FzZSAxOmMuWmEucHVzaChPYihJLkIoKSxQYixjLnlhLmdldFNsb3RJZCgpLDY4NCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZil7Zj1mLmlzRW1wdHk7KDIhPT1lLnRifHxmKSYmZS5mYigpfX0oYykpKTticmVhaztkZWZhdWx0OnJldHVybn19fSxreT1mdW5jdGlvbihhLGIpe3ZhciBjPWEubC5nZXQoYi5nZXRTbG90SWQoKSk7YyYmKF8ueSgzMTgpJiZfLnIuY2xlYXJUaW1lb3V0KGMuSWMpLGEubC5kZWxldGUoYi5nZXRTbG90SWQoKSkpfSxueT1mdW5jdGlvbihhLGIsYyxkLGUpe2U9dm9pZCAwPT09ZT8wOmU7dmFyIGY9Xy5OaSgpLGc9ZnVuY3Rpb24oKXt2YXIgaD0oZXx8MCktKF8uTmkoKS1mKTtpZigwPGgpe2g9c2V0VGltZW91dChHKDM3NSxmdW5jdGlvbigpe3B5KGEsYixjLGQpfSksaCk7Zm9yKHZhciBrPV8uRihiKSxsPWsubmV4dCgpOyFsLmRvbmU7bD1rLm5leHQoKSlpZihsPWEubC5nZXQobC52YWx1ZS5nZXRTbG90SWQoKSkpbC5JYz1ofWVsc2UgcHkoYSxiLGMsZCl9O18ueSg0MDUpP2coKTpKeCgzNDcsZyl9LHB5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWQuTixmPWQuUjtiLmZvckVhY2goZnVuY3Rpb24oayl7a3koYSxrKX0pO3ZhciBnPWdkKGIsZnVuY3Rpb24oayl7az1mW2suZ2V0U2xvdEVsZW1lbnRJZCgpXTtyZXR1cm4gMCE9eGEoaykubGVuZ3RofHxfLnkoNDE5KSYmbnVsbCE9QihrLDE2KX0pO2lmKGdbITFdKXt2YXIgaD1fLkYoZ1shMV0pO2ZvcihiPWgubmV4dCgpOyFiLmRvbmU7Yj1oLm5leHQoKSliPWIudmFsdWUsWXgoYSx3aW5kb3csZG9jdW1lbnQse3Nsb3Q6YixjYTpkLlJbYi5nZXRTbG90RWxlbWVudElkKCldfSwhMCxlKX1pZihiPWdbITBdKWlmKGU9Yy5FYSxiLmZvckVhY2goZnVuY3Rpb24oayl7MDxrLkEmJmpvKGspO2FwKGEuaixrKSYmcm8oayl9KSx2b2lkIDAhPT1jLkphJiYoYS5EPWMuSmEpLGEuUD1jLldhfHxOYU4sYS5UPWMuWGF8fE5hTiwhYS5YKWlmKHgoZC5OLDYpfHxfLnkoMzY0KSljPXF5KGIsYlswXS5tLGQpLHJ5KGEsZCxjLGUpO2Vsc2UgZm9yKGM9Xy5GKGIpLGI9Yy5uZXh0KCk7IWIuZG9uZTtiPWMubmV4dCgpKXJ5KGEsZCxbW2IudmFsdWVdXSxlKX0sWHg9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dm9pZCAwPT09ZT93aW5kb3c6ZTtpZighXy55KDMzNikpZm9yKHZhciBmPV8uRihiKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlBeChhLk0sZy52YWx1ZSk7YT1fLkYoYik7Zm9yKGc9YS5uZXh0KCk7IWcuZG9uZTtnPWEubmV4dCgpKWc9Zy52YWx1ZSxUeChkW2cuZ2V0U2xvdEVsZW1lbnRJZCgpXSxjKSYmUmIoZyxlLGUuZG9jdW1lbnQpLHJvKGcpO3JldHVybiEwfSxoeT1mdW5jdGlvbihhLGIsYyl7aWYoYil7dmFyIGQ9YS52LmdldChjKTtkJiYoZC5sZC51bm9ic2VydmUoYiksYS52LmRlbGV0ZShjKSl9fSxzeT1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ZG9jdW1lbnQ6ZDt2YXIgZSxmLGcsaD0wLGs9ZCxsPWZ1bmN0aW9uKCl7aCsrO2lmKDM9PT1oKXt2YXIgdT1mLEM9ZSxRPWcsTj1uZXcgdWgsSD1VaihjLk4pO0g9SCYmeChILDkpO2lmKF8ueSgzOTYpKUQoTiw1LCExKTtlbHNlIGlmKHUpe2lmKEg9IUgpcnModSk/ITE9PT11LmdkcHJBcHBsaWVzfHxcInRjdW5hdmFpbGFibGVcIj09PXUudGNTdHJpbmc/SD0hMDp1LnB1cnBvc2UmJnUudmVuZG9yPyhIPXUudmVuZG9yLmNvbnNlbnRzLChIPSEoIUh8fCFIW1wiNzU1XCJdKSkmJnUucHVycG9zZU9uZVRyZWF0bWVudCYmXCJERVwiPT09dS5wdWJsaXNoZXJDQz9IPSEwOkgmJihIPXUucHVycG9zZS5jb25zZW50cyxIPSEoIUh8fCFIW1wiMVwiXSkpKTpIPSExOkg9ITE7SD1EKE4sNSxIKTtIPUQoSCwyLHUudGNTdHJpbmcpO0g9RChILDQsdS5hZGR0bENvbnNlbnR8fFwiXCIpO0QoSCw3LHUuaW50ZXJuYWxFcnJvclN0YXRlKTt2b2lkIDAhPT11LmdkcHJBcHBsaWVzJiZEKE4sMyx1LmdkcHJBcHBsaWVzKTtcInRjdW5hdmFpbGFibGVcIj09PXUudGNTdHJpbmc/amwuQigpLmluZm8oTm0oXCJmYWlsZWRcIikpOmpsLkIoKS5pbmZvKE5tKFwic3VjY2VlZGVkXCIpKX1lbHNlIEQoTiw1LCFIKTtDJiZEKE4sMSxDKTtudWxsIT09USYmRChOLDYsUSk7YihOKX19O0x4KGEuai5sZW5ndGg/YS5qWzBdLm06XCJcIik7dmFyIG09ZnVuY3Rpb24oKXtOeChrLGZ1bmN0aW9uKHUpe2Y9dTtsKCl9KTtPeChrLGZ1bmN0aW9uKHUpe2U9dTtsKCl9KX07aWYoXy55KDM2Nykpe3ZhciBuPW5ldyBpcyhfLmNnKGQpKSxxPWEuai5sZW5ndGg/YS5qWzBdLm06XCJcIix3PV8uRGooMjIxKTtkPW4uaj9rcyhuLFwibG9hZGVkXCIpOnQuUHJvbWlzZS5yZXNvbHZlKCk7ZC50aGVuKGZ1bmN0aW9uKHUpe3JldHVybiBscyhuLHUscSx3KX0pLnRoZW4oZnVuY3Rpb24odSl7Zz11O2woKX0pO2QudGhlbihtKX1lbHNlIEt4KGZ1bmN0aW9uKCl7TXgoYSxVaihjLk4pLGwpO20oKX0pfSx1eT1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ZG9jdW1lbnQ6ZDtzeShiLGZ1bmN0aW9uKGUpe18ueSg0MDUpJiZ4KGUsNSk/SngoNzU5LGZ1bmN0aW9uKCl7dHkoYSxiLGUsYyxkKX0pOnR5KGEsYixlLGMsZCk7UHQoZSxkKX0sYyxkKX0sdHk9ZnVuY3Rpb24oYSxiLGMsZCxlKXtlPXZvaWQgMD09PWU/ZG9jdW1lbnQ6ZTt2YXIgZj1OYShjKTtxcC5CKCkudj1mO3ZhciBnPWQuTixoPWQuUjtiLmo9Yi5qLmZpbHRlcihmdW5jdGlvbihtKXttPW0uZ2V0U2xvdEVsZW1lbnRJZCgpOyhtPTUhPT1nayhoW21dKSl8fChtPTA9PVBuKHdpbmRvdywhMCxmKSk7cmV0dXJuIG19KTtpZihiLmoubGVuZ3RoKXtmb3IodmFyIGs9Xy5GKGIuaiksbD1rLm5leHQoKTshbC5kb25lO2w9ay5uZXh0KCkpdnkoZSxsLnZhbHVlLGQpO2lmKGw9Z3koYSxiLGMsZCkpbC50aGVuKEcoNzUxLGZ1bmN0aW9uKCl7Zm9yKHZhciBtPV8uRihiLmopLG49bS5uZXh0KCk7IW4uZG9uZTtuPW0ubmV4dCgpKW49bi52YWx1ZSx3eSgwLG4sZyxoW24uZ2V0U2xvdEVsZW1lbnRJZCgpXSl9KSk7ZWxzZSBmb3IoYT1fLkYoYi5qKSxsPWEubmV4dCgpOyFsLmRvbmU7bD1hLm5leHQoKSlsPWwudmFsdWUsd3koMCxsLGcsaFtsLmdldFNsb3RFbGVtZW50SWQoKV0pfX0scXk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdO2E9Z2QoYSxmdW5jdGlvbihlKXtyZXR1cm4gZS5tfSk7Xy5KYihhLGZ1bmN0aW9uKGUsZil7ZT1fLnkoNjUpP3h5KGUsYyk6ZTtmPT1iP2QudW5zaGlmdChlKTpkLnB1c2goZSl9KTtyZXR1cm4gZH0scnk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZG9jdW1lbnQ7aWYoYyl7Yz1fLkYoYyk7Zm9yKHZhciBmPWMubmV4dCgpOyFmLmRvbmU7Zj1jLm5leHQoKSlmPWF5KGEsZi52YWx1ZSxkLGIpLHV5KGEsZixiLGUpfX0sd3k9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dm9pZCAwPT09ZT93aW5kb3c6ZTtUeChkLGMpJiYhYi5qJiZSYihiLGUsZS5kb2N1bWVudCl9LHZ5PWZ1bmN0aW9uKGEsYixjKXtpZighb2EoYixhKSl7dmFyIGQ9cGEoYixhKTtpZihkKXt2YXIgZT1jLk47Yz1jLlJbYi5nZXRTbG90RWxlbWVudElkKCldO3ZhciBmPXhhKGMpO2lmKDA9PWYubGVuZ3RoKWM9bnVsbDtlbHNle2M9ZlswXS5zbGljZSgpO2lmKDE8Zi5sZW5ndGgpe3ZhciBnO2I6aWYoKGc9cGEoYixhKSkmJmcuc3R5bGUuaGVpZ2h0JiZnLnN0eWxlLndpZHRoKXtnPVtnLnN0eWxlLndpZHRoLGcuc3R5bGUuaGVpZ2h0XTtmb3IodmFyIGg9MDtoPGcubGVuZ3RoOysraClpZigyPGdbaF0ubGVuZ3RoJiZcInB4XCI9PWdbaF0uc3Vic3RyaW5nKGdbaF0ubGVuZ3RoLTIpKWdbaF09cGFyc2VJbnQoZ1toXSwxMCk7ZWxzZXtnPW51bGw7YnJlYWsgYn19ZWxzZSBnPW51bGw7Yz1nfHxjfWlmKF8ueSgzOTIpKWZvcihmPV8uRihmKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlpZihnPWcudmFsdWUsQXJyYXkuaXNBcnJheShnKSYmISgyNTA8Z1sxXSkpaWYoQXJyYXkuaXNBcnJheShjKSl7aWYoaD1fLkYoZyksZz1oLm5leHQoKS52YWx1ZSxoPWgubmV4dCgpLnZhbHVlLDI1MD49aCYmaD5jWzFdJiYoY1sxXT1oKSwxMDw9ZyYmZzxjWzBdfHwxMD5jWzBdKWNbMF09Z31lbHNlIGM9Z31pZihfLnkoMzg5KSl7aWYoYT0hMT09PXgoZSwxNSksQXJyYXkuaXNBcnJheShjKSYmKGI9d2EoZCx3aW5kb3cpfHxkLnN0eWxlKSlpZihjPV8uRihjKSxlPWMubmV4dCgpLnZhbHVlLGM9Yy5uZXh0KCkudmFsdWUsZC5zdHlsZS5taW5XaWR0aD1QdihiLm1pbldpZHRoLGUpLGQuc3R5bGUubWluSGVpZ2h0PVB2KGIubWluSGVpZ2h0LGMpLGM9Yi5kaXNwbGF5LChlPVwibm9uZVwiPT09Yyl8fFwiZmxleFwiPT09Y3x8YyYmXy5BKGMsXCJlbmRzV2l0aFwiKS5jYWxsKGMsXCJibG9ja1wiKSljPWIuYWxpZ25JdGVtcyxmPVtcIm5vcm1hbFwiLFwiY2VudGVyXCIsXCJ1bnNldFwiLFwiXCJdLF8uQShmLFwiaW5jbHVkZXNcIikuY2FsbChmLGIuanVzdGlmeUNvbnRlbnQpJiZfLkEoZixcImluY2x1ZGVzXCIpLmNhbGwoZixjKSYmKGQuc3R5bGUuYWxpZ25JdGVtcz1cImNlbnRlclwiLGF8fChkLnN0eWxlLmp1c3RpZnlDb250ZW50PVwiY2VudGVyXCIpLGV8fChkLnN0eWxlLmRpc3BsYXk9XCJmbGV4XCIpKX1lbHNlIFF2KGEsZCxWayhiLmdldFNsb3RJZCgpKSwhIXgoZSwxNSksYyl9fX0seHk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLk4sZD1iLlIsZT1mdW5jdGlvbihnKXtnPWRbZy5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiAwPT1nayhnKX0sZj1bXTthLmZvckVhY2goZnVuY3Rpb24oZyl7aWYoZShnKSl7dmFyIGg9ZFtnLmdldFNsb3RFbGVtZW50SWQoKV07aD1Qayh7c2xvdDpnLGNhOmh9LGRvY3VtZW50LCEheChjLDE1KSl8fHt9O2YucHVzaCh7amM6dm9pZCAwPT09aC55P0luZmluaXR5OmgueSxzbG90Omd9KX19KTtlZChmLGZ1bmN0aW9uKGcsaCl7cmV0dXJuIGRkKGcuamMsaC5qYyl9KTtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIGUoZyk/Zi5zaGlmdCgpLnNsb3Q6Z30pfSxqeT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPXZvaWQgMD09PWY/Xy5yLmRvY3VtZW50OmY7dmFyIGc9dm9pZCAwPT09Zz9SeDpnO3ZhciBoPWMuajthLm9bYy5sXT1oLnNsaWNlKCk7dmFyIGs9Ryg2NDYsZnVuY3Rpb24obSxuLHEpe3ZhciB3PWY7dz12b2lkIDA9PT13P2RvY3VtZW50Onc7Xy55KDQwNCk/eXkoYSxjLGQsZSxtLG4scSx3KTp6eShhLGMsZCxlLG0sbixxLHcpfSksbD1HKDY0NyxmdW5jdGlvbigpe2Zvcih2YXIgbT1jLmwsbj1hLm9bbV18fFtdLHE9MDtxPG4ubGVuZ3RoOysrcSlpZihuW3FdKXt2YXIgdz1uZXcgZG47dz0ne1wiZW1wdHlcIjonK0Qodyw4LCEwKS5tKCkrXCJ9XCI7dmFyIHU9YSxDPWMsUT1kLE49ZSxIPXEscWE9dm9pZCAwO3FhPXZvaWQgMD09PXFhP2RvY3VtZW50OnFhO18ueSg0MDQpP3l5KHUsQyxRLE4sSCx3LFwiXCIscWEpOnp5KHUsQyxRLE4sSCx3LFwiXCIscWEpfWRlbGV0ZSBhLm9bbV07Y2IoKX0pO2c9RygyODksZyk7Yj15ayh4ayhiKSk7UXgoaCk7az1uZXcgSHgoayxnLGwpO2w9IV8ueSgzODUpfHwhIXgoZCw1KTtHeChuZXcgRHgoYixrLHZvaWQgMD09PWw/ITA6bCkpO2g9Xy5GKGgpO2ZvcihrPWgubmV4dCgpOyFrLmRvbmU7az1oLm5leHQoKSlrPWsudmFsdWUsXy55KDQxMil8fF8ueSg0MTIpfHwoay5WPWsuQy5pbmZvKHNsKGsuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGspLFdpKHRrLkIoKSxcIjdcIiw5LGsuQS0xLDAsay5sKSxrLkQ9bnVsbCxrLlA9bnVsbCksUW8oSS5CKCksSW8say5nZXRTbG90SWQoKSksYS5IKGssYixlKX07V3gucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiLGMpe2lmKHgoYy5OLDYpfHxfLnkoMzY0KSl7dmFyIGQ9YXkodGhpcyxbYV0sMSxjKTtieSh0aGlzLGQpO3ZhciBlPWN5KHRoaXMsXy55KDM2NCksZCxuZXcgdWgsYywhMCk7bm8oYSx2YShmdW5jdGlvbigpe3JldHVybiB4ayhVdShlKSl9KSl9ZWxzZSBubyhhLGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KX07dmFyIHp5PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7aD12b2lkIDA9PT1oP2RvY3VtZW50Omg7dmFyIGs9Yi5sLGw9YS5vW2tdfHxbXSxtPWxbZV07bFtlXT1udWxsO3RyeXt2YXIgbj1KU09OLnBhcnNlKGYpO3ZhciBxPV8uTWMobik/bjpudWxsfWNhdGNoKHcpe3E9bnVsbH1sPShlPXEpJiZCZyhlLGlkKTtlPWUmJmVbbF07ZT1cInN0cmluZ1wiPT09dHlwZW9mIGwmJkFycmF5LmlzQXJyYXkoZSk/bmV3IGRuKGUuc2xpY2UoKSk6bnVsbDtpZihtKWlmKGEuQVtrXXx8KGEuQVtrXT0hMCxZaSh0ay5CKCksXCI0XCIsSHQoYixtKSkpLF8ueSg0MTIpfHxvbyhtKSxlKXtmPXRrLkIoKTtrPW0ubDtsPUIoZSwzNCl8fFwiXCI7Zi5qJiYoXy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zPV8uci5nb29nbGVfdGltaW5nX3BhcmFtc3x8e30sXy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zW1wicXFpZC5cIitrXT1sKTtmPUIoZSwyNyk7Zj1fLkYoZik7Zm9yKGs9Zi5uZXh0KCk7IWsuZG9uZTtrPWYubmV4dCgpKW1qKGsudmFsdWUpO25qKDQpO1p4KGEsbSxjLGUsYixkKTttLmxhfHwoeChlLDgpfHxhLlk/KGI9aCxjPWVvKG0pLChnPXBhKG0sYikpJiZnLnNldEF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLXF1ZXJ5LWlkXCIsYyksWWkodGsuQigpLFwiNVwiLG0ubCksXy55KDQxMik/UW8oSS5CKCksQ28sbS5nZXRTbG90SWQoKSk6bS5UYSgpLGM9Xy55KDEyMyksWXgoYSxfLnIsYix7c2xvdDptLGNhOmQuUlttLmdldFNsb3RFbGVtZW50SWQoKV19LGMsZC5OKSxRbyhJLkIoKSxQYixtLmdldFNsb3RJZCgpLHtpc0VtcHR5OiEwLHNsb3RDb250ZW50Q2hhbmdlZDpjfSkpOkJ4KGEuTSxtLGEuaixhLlUsZCxlLGcsaCxjKSl9ZWxzZSBibCg2NDYsRXJyb3IoXCJpbnZhbGlkIHJlc3BvbnNlOiBcIitmKSk7ZWxzZSBibCg2NDYsRXJyb3IoXCJtaXNzaW5nIHNsb3Q6IFwiK2wpKX0seXk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtoPXZvaWQgMD09PWg/ZG9jdW1lbnQ6aDt2YXIgaz1iLmwsbD1hLm9ba118fFtdLG09bFtlXTtsW2VdPW51bGw7bT8oYS5BW2tdfHwoYS5BW2tdPSEwLFlpKHRrLkIoKSxcIjRcIixIdChiLG0pKSksbS5sYXx8KGU9aCxoPWQuTixoPVR4KGQuUlttLmdldFNsb3RFbGVtZW50SWQoKV0saCksQ3goYS5NLG0sYS5qLGEuVSxkLGcsZSxjLGYsYi53YSxIdChiLG0pLGgsYS5LLGEuRykpKTpibCg2NDYsRXJyb3IoXCJtaXNzaW5nIHNsb3Q6IFwiK2YpKX07dmFyIEF5PWZ1bmN0aW9uKGEsYixjKXt0aGlzLmo9YTt0aGlzLmw9Yjt0aGlzLm9wdGlvbnM9Y30sQnk9ZnVuY3Rpb24oYSl7dGhpcy5wdWJhZHM9YTt0aGlzLmo9bmV3IHQuU2V0O3RoaXMubD17fX0sQ3k9ZnVuY3Rpb24oYSxiLGMpe2lmKHgoYi5OLDQpKXJldHVybltdO2lmKCF4KGIuTiw2KXx8Yi5SW2MuZ2V0U2xvdEVsZW1lbnRJZCgpXSYmeChiLlJbYy5nZXRTbG90RWxlbWVudElkKCldLDE3KSlyZXR1cm4gYS5qLmFkZChjKSxfLlIoYyxmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuai5kZWxldGUoYyl9KSxbY107Yj1bXTtmb3IodmFyIGQ9e30sZT1fLkYoYS5wdWJhZHMubCksZj1lLm5leHQoKTshZi5kb25lO2Q9e0xhOmQuTGF9LGY9ZS5uZXh0KCkpZC5MYT1mLnZhbHVlLGEuai5oYXMoZC5MYSl8fChhLmouYWRkKGQuTGEpLF8uUihkLkxhLGZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuai5kZWxldGUoZy5MYSl9fShkKSksYi5wdXNoKGQuTGEpKTtyZXR1cm4gYn07QnkucHJvdG90eXBlLmRpc3BsYXk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1DeSh0aGlzLGEsYik7RHkodGhpcy5wdWJhZHMsYyxhLHtFYToxfSk7YT1iLmdldEFkVW5pdFBhdGgoKTtpZigoYj10aGlzLmxbYV0pJiYhXy55KDMxOSkpe2I9Xy5GKGIpO2ZvcihjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsRHkodGhpcy5wdWJhZHMsYy5qLGMubCxjLm9wdGlvbnMpO2RlbGV0ZSB0aGlzLmxbYV19fTt2YXIgRnk9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoXy55KDMxOSkpSXAoYS5wdWJhZHMsRyg2OTAsZnVuY3Rpb24oKXtmb3IodmFyIGg9e30saz1fLkYoYyksbD1rLm5leHQoKTshbC5kb25lO2g9e2diOmguZ2J9LGw9ay5uZXh0KCkpaC5nYj1sLnZhbHVlLGEuai5hZGQoaC5nYiksXy5SKGguZ2IsZnVuY3Rpb24obSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5qLmRlbGV0ZShtLmdiKX19KGgpKTtEeShhLnB1YmFkcyxjLGIsZCl9KSk7ZWxzZSBpZihhLnB1YmFkcy5qKXtmb3IodmFyIGU9e30sZj1fLkYoYyksZz1mLm5leHQoKTshZy5kb25lO2U9e2hiOmUuaGJ9LGc9Zi5uZXh0KCkpZS5oYj1nLnZhbHVlLGEuai5hZGQoZS5oYiksXy5SKGUuaGIsZnVuY3Rpb24oaCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5qLmRlbGV0ZShoLmhiKX19KGUpKTtEeShhLnB1YmFkcyxjLGIsZCl9ZWxzZSBjLmxlbmd0aCYmeChiLk4sNik/KGU9Y1swXS5nZXRBZFVuaXRQYXRoKCksZj1hLmxbZV18fFtdLGYucHVzaChuZXcgQXkoYyxiLGQpKSxhLmxbZV09Zik6RXkoYS5wdWJhZHMpfSxHeT1mdW5jdGlvbigpe0hwLmNhbGwodGhpcyk7dGhpcy5tPXRoaXMuQz0hMTtfLnkoODcpJiYoS3Z8fHdpbmRvdy5wZXJmb3JtYW5jZSYmUGcod2luZG93LnBlcmZvcm1hbmNlLm5vdykmJihLdj1uZXcgTnYpKTt0aGlzLm89bmV3IEJ5KHRoaXMpfTtfLkooR3ksSHApO18ucD1HeS5wcm90b3R5cGU7Xy5wLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjdSh0aGlzLGtvKX07Xy5wLmRpc3BsYXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yz12b2lkIDA9PT1jP1wiXCI6YztkPXZvaWQgMD09PWQ/XCJcIjpkO3ZhciBlPVwiXCI7aWYoYylpZihfLk1jKGMpJiYxPT1jLm5vZGVUeXBlKXt2YXIgZj1jO2U9Zi5pZH1lbHNlIGU9YztpcCh0aGlzKTtiPSRwKGEsYixlKTthPWIuc2xvdDtiPWIuRmE7YSYmYiYmKGYmJiFlJiYoZi5pZD1hLmdldFNsb3RJZCgpLmopLHRoaXMueGEoYSxiKSxEKGIsNyxkKSxkcShmfHxhLmdldFNsb3RJZCgpLmopKX07Xy5wLk5iPWZ1bmN0aW9uKCl7dmFyIGE9VG4uQigpLmo7aWYoeChhLDYpfHxfLnkoMzIwKSl7SHkodGhpcyxhKTtmb3IodmFyIGI9Xy5GKHRoaXMubCksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpSXkodGhpcyxjLnZhbHVlKX1ZdCh0aGlzLGEpO3RoaXMubSYmYnUodGhpcyk7WmIoKX07Xy5wLlo9ZnVuY3Rpb24oKXtyZXR1cm5cInB1Ymxpc2hlcl9hZHNcIn07Xy5wLnhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpczt4KGIsMTcpfHxJeSh0aGlzLGEpO3ZhciBkPWEuZ2V0U2xvdElkKCk7UW8oSS5CKCksTm8sZCxkKTtfLlIoYSxPYihJLkIoKSxFbyxkLDcwMSxmdW5jdGlvbihlKXt2YXIgZj1lLm1ha2VSZXdhcmRlZFZpc2libGU7ZT1lLnBheWxvYWQ7cmV0dXJuIEpwKGMsXCJyZXdhcmRlZFNsb3RSZWFkeVwiLG5ldyB5cChnbChhKSxjLlooKSxmLGUpKX0pKTtfLlIoYSxPYihJLkIoKSxGbyxkLDcwMixmdW5jdGlvbihlKXtyZXR1cm4gSnAoYyxcInJld2FyZGVkU2xvdEdyYW50ZWRcIixuZXcgenAoZ2woYSksYy5aKCksZSkpfSkpO18uUihhLE9iKEkuQigpLEdvLGQsNzAzLGZ1bmN0aW9uKCl7Xy55KDQxNil8fEpwKGMsXCJyZXdhcmRlZFNsb3RDYW5jZWxlZFwiLG5ldyBBcChnbChhKSxjLlooKSkpO0pwKGMsXCJyZXdhcmRlZFNsb3RDbG9zZWRcIixuZXcgQnAoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxIbyxkLDcwNCxmdW5jdGlvbigpe3JldHVybiBKcChjLFwicmV3YXJkZWRTbG90Q29tcGxldGVkXCIsbmV3IENwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksSW8sZCw3MDUsZnVuY3Rpb24oKXtyZXR1cm4gSnAoYyxcInNsb3RSZXF1ZXN0ZWRcIixuZXcgRHAoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxQYixkLDcwOCxmdW5jdGlvbihlKXt2YXIgZj1lLnNpemUsZz1lLnNsb3RDb250ZW50Q2hhbmdlZCxoPWUuaXNFbXB0eTtlPW5ldyB0cChnbChhKSxcInB1Ymxpc2hlcl9hZHNcIik7aCYmKGUuaXNFbXB0eT1oKTtnJiYoZS5zbG90Q29udGVudENoYW5nZWQ9Zyk7Zz1hLkg7ZiYmZyYmKGUuc2l6ZT1bZi53aWR0aCxmLmhlaWdodF0sZS5zb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQ9Zy5zb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQsZS5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQ9Zy5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQsZS5pc0JhY2tmaWxsPWcuaXNCYWNrZmlsbCxlLmNyZWF0aXZlSWQ9Zy5jcmVhdGl2ZUlkLGUubGluZUl0ZW1JZD1nLmxpbmVJdGVtSWQsZS5jcmVhdGl2ZVRlbXBsYXRlSWQ9Zy5jcmVhdGl2ZVRlbXBsYXRlSWQsZS5hZHZlcnRpc2VySWQ9Zy5hZHZlcnRpc2VySWQsZS5jYW1wYWlnbklkPWcuY2FtcGFpZ25JZCxlLnlpZWxkR3JvdXBJZHM9Zy55aWVsZEdyb3VwSWRzLGUuY29tcGFueUlkcz1nLmNvbXBhbnlJZHMpO0pwKGMsXCJzbG90UmVuZGVyRW5kZWRcIixlKX0pKTtfLlIoYSxPYihJLkIoKSxKbyxkLDcwOSxmdW5jdGlvbigpe3JldHVybiBKcChjLFwic2xvdFJlc3BvbnNlUmVjZWl2ZWRcIixuZXcgRXAoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxLbyxkLDcxMCxmdW5jdGlvbigpe3JldHVybiBKcChjLFwic2xvdE9ubG9hZFwiLG5ldyB3cChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLERvLGQsNzE1LGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJpbXByZXNzaW9uVmlld2FibGVcIixuZXcgdXAoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxMbyxkLDcxNixmdW5jdGlvbihlKXtyZXR1cm4gSnAoYyxcInNsb3RWaXNpYmlsaXR5Q2hhbmdlZFwiLG5ldyB2cChnbChhKSxjLlooKSxlKSl9KSk7Xy5SKGEsT2IoSS5CKCksem8sZCw2MTQsZnVuY3Rpb24oKXt2YXIgZT1Ubi5CKCkuajtlPUtrKGUsVm4oKSk7bXkoJHQoKSxbYV0se0VhOjJ9LGUpfSkpO18uUihhLE9iKEkuQigpLEdvLGQsNjg3LGZ1bmN0aW9uKGUpe1h4KCR0KCksW2FdLGUuTixlLlIpfSkpO0hwLnByb3RvdHlwZS54YS5jYWxsKHRoaXMsYSxiKX07Xy5wLlhiPWZ1bmN0aW9uKGEsYil7aXAodGhpcyk7SHkodGhpcyxhLk4pO0l5KHRoaXMsYik7dGhpcy5sb2cuaW5mbyhUbCgpKTt2YXIgYz14KGEuTiw2KTtpZihhcChXbygpLGIpJiYoY3x8IWIuaikpe2lmKGMmJigkdCgpLGM9cGEoYixkb2N1bWVudCkpKXt2YXIgZD1JLkIoKTtQbyhkLEFvLG51bGwsYyl9eChhLk4sNCkmJiFfLnkoMzk0KSYmd3koJHQoKSxiLGEuTixhLlJbYi5nZXRTbG90RWxlbWVudElkKCldKTt0aGlzLm8uZGlzcGxheShhLGIpfX07dmFyIEl5PWZ1bmN0aW9uKGEsYil7YS5qJiZYbyhXbygpLGIpO2lmKGEuail7dmFyIGM9V24oVG4uQigpLGIuZ2V0U2xvdEVsZW1lbnRJZCgpKTtpZihjKXtjPXVmKGMsSmosMyk7Yz1fLkYoYyk7Zm9yKHZhciBkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTtkPUIoZSwyKTtpZigoZT1LaihlKSkmJmQmJmQubGVuZ3RoKXt2YXIgZjtpZihmPWFwKFdvKCksYikpe3ZhciBnPVdvKCk7Zj1kWzBdO2Y9KGc9Zy5qLmdldChiKSkmJndvKGcuaWMsZSxmKX1mfHxhLmxvZy5KKFZsKGUsZFswXSxiLmdldEFkVW5pdFBhdGgoKSksYSxiKX19fX19LEh5PWZ1bmN0aW9uKGEsYil7aWYoKF8ueSgxNDgpfHwhYS5DKSYmYS5qKXthLkM9ITA7Yj11ZihiLEpqLDE0KTtiPV8uRihiKTtmb3IodmFyIGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1jLnZhbHVlO2M9QihkLDIpO2lmKChkPUtqKGQpKSYmYyYmYy5sZW5ndGgpe3ZhciBlPVdvKCk7d28oZS5sLGQsY1swXSl8fGEubG9nLkooVWwoZCxjWzBdKSxhKX19fX0sV3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYnx8MD49Yi5sZW5ndGh8fCFjKXJldHVybiBhLmxvZy5lcnJvcihxbChcIlB1YkFkc1NlcnZpY2UuZGVmaW5lUGFzc2JhY2tcIixbYixjXSkpLHtzbG90Om51bGwsRmE6bnVsbH07Yz0kcChiLGMsdm9pZCAwLCEwKTtiPWMuc2xvdDtjPWMuRmE7aWYoIWJ8fCFjKXJldHVybntzbG90Om51bGwsRmE6bnVsbH07RChjLDE3LCEwKTtyZXR1cm57c2xvdDpuZXcgZncoYixhLGMpLEZhOmN9fSxndz1mdW5jdGlvbihhLGIsYyl7aXAoYSk7WG8oV28oKSxjKTtfLnkoNDIzKXx8KGMuZWM9ITApO2Euby5kaXNwbGF5KGIsYyl9LFh0PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPUp5KGEsYyk7aWYoZS5sZW5ndGgpe2lmKF8ueSgxMDQpKXtpcChhKTtjPV8uRihjKTtmb3IodmFyIGY9Yy5uZXh0KCk7IWYuZG9uZTtmPWMubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9Yi5SW2YuZ2V0U2xvdEVsZW1lbnRJZCgpXTthLnhhKGYsZyl9fUZ5KGEubyxiLGUsZHx8e0VhOjJ9KX1lbHNlIGEubG9nLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnJlZnJlc2hcIixbY10uZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiB2b2lkIDAhPT1ofSkpLGEpfSxEeT1mdW5jdGlvbihhLGIsYyxkKXthLmxvZy5pbmZvKGRtKCksYSk7aWYoS3koYixkLGMpJiYxIT09ZC5FYSlmb3IoYT1fLkYoYiksYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpYz1iLnZhbHVlLGI9SS5CKCksYz1jLmdldFNsb3RJZCgpLFBvKGIsT28sbnVsbCxjKX0sS3k9ZnVuY3Rpb24oYSxiLGMpe2E9YS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGFwKFdvKCksZSl9KTt2YXIgZD1hLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gXy5ZbyhXbygpLGUpfSk7aWYoIWQubGVuZ3RoKXJldHVybiBudWxsO215KCR0KCksZCxiLGMpO3JldHVybiBhfSxhdT1mdW5jdGlvbihhLGIpe3JldHVybiBhLmo/e3ZpZDpCKGIsMjIpfHxcIlwiLGNtc2lkOkIoYiwyMyl8fFwiXCJ9Om51bGx9LFl0PWZ1bmN0aW9uKGEsYil7eChiLDIxKSYmYS5qJiYoJHQoKS5EPU5rKCkpfSxMeT1mdW5jdGlvbihhLGIsYyxkKXthPWI/SnkoYSxiKTpQcChRcC5CKCkpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gYXAoV28oKSxmKX0pO2I9Xy5GKGEpO2Zvcih2YXIgZT1iLm5leHQoKTshZS5kb25lO2U9Yi5uZXh0KCkpZT1lLnZhbHVlLHNvKGUpLGU9ZS5nZXRTbG90SWQoKSxRbyhJLkIoKSxRYixlLGUpO3JldHVybiBYeCgkdCgpLGEsYyxkKX0sWnQ9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWEuailyZXR1cm4gYS5sb2cuSihjbSgpLGEpLCExO3ZhciBlPW51bGw7aWYoZCYmKGU9SnkoYSxkKSwwPT1lLmxlbmd0aCkpcmV0dXJuIGEubG9nLkoocWwoXCJQdWJBZHNTZXJ2aWNlLmNsZWFyXCIsW2RdLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gdm9pZCAwIT09Zn0pKSxhKSwhMTthLmxvZy5pbmZvKGVtKCksYSk7cmV0dXJuIEx5KGEsZSxiLGMpfTtHeS5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe2lmKHRoaXMuailyZXR1cm4gJGEoKX07dmFyIEp5PWZ1bmN0aW9uKGEsYil7dmFyIGM9W107aWYoIUFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGM7Yi5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7KGQ9emooZCxrbykpJiYhZC5sYT9jLnB1c2goZCk6YS5sb2cuSihqbShTdHJpbmcoZSkpLGEpfSk7cmV0dXJuIGN9LGJ1PWZ1bmN0aW9uKGEpe2EubT0hMDtpZihhLmope1dvKCkudj0hMDthPW5ldyBXayhcImdwdF9tYXJrQXNBbXBcIix6aygpLF8uRGooMjMpKTtsYihhLFBwKFFwLkIoKSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBhcChXbygpLGUpfSkpO3RyeXt2YXIgYj1TaChfLnIpO2ImJkUoYSxcIm50eXBlXCIsYik7dmFyIGM9Xy5yLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucyxkPW51bGwhPWM/Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4oKC9eKD86aHR0cHM/OlxcL1xcLyk/KFteXFwvXFw/OiNdKykvaS5leGVjKGUpfHxbXSlbMV18fGUpLnN1YnN0cigwLDIwKX0pOltdO0UoYSxcIm9zdFwiLGQuc2xpY2UoMCwxMCkuam9pbigpKX1jYXRjaChlKXt9WWsoYSl9fTtHeS5wcm90b3R5cGUuZGVzdHJveVNsb3RzPWZ1bmN0aW9uKGEpe3ZhciBiPUhwLnByb3RvdHlwZS5kZXN0cm95U2xvdHMuY2FsbCh0aGlzLGEpO2lmKCFiLmxlbmd0aClyZXR1cm4gYjtpZih0aGlzLmope3ZhciBjPVRuLkIoKS5qO0x5KHRoaXMsYSxjLFZuKCkpO2NwKFdvKCksYSl9cmV0dXJuIGJ9O3ZhciBFeT1mdW5jdGlvbihhKXt2YXIgYj1ibSgpO2EubG9nLkooYixhKX07SWMoR3kpO3ZhciBNeT1HKDI2LGZ1bmN0aW9uKCl7dmFyIGE9TXAuQigpLGI9Xy5BKGEsXCJmaW5kXCIpLmNhbGwoYSxcInB1Ymxpc2hlcl9hZHNcIik7Ynx8KGI9bmV3IEd5LGEuYWRkKGIpKTtyZXR1cm4gYn0pO1diKFwicHViYWRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2woXy55KDQwNik/R3kuQigpOk15KCkpfSk7dmFyIFZ5PWZ1bmN0aW9uKGEsYil7anAuY2FsbCh0aGlzLGEpO3ZhciBjPXRoaXM7dGhpcy5zZXQ9Uyg1NzYsZnVuY3Rpb24oZCxlKXthLnNldChkLGUpO3JldHVybiBjfSk7dGhpcy5nZXQ9Uyg1NzcsZnVuY3Rpb24oZCl7cmV0dXJuIGEuZ2V0KGQpfSk7dGhpcy5nZXRBdHRyaWJ1dGVLZXlzPVMoNTc4LGZ1bmN0aW9uKCl7cmV0dXJuIHpnKGEubSl9KTt0aGlzLmRpc3BsYXk9Uyg1NTgsZnVuY3Rpb24oZCxlLGYsZyl7cmV0dXJuIGEuZGlzcGxheShkLGUsdm9pZCAwPT09Zj9cIlwiOmYsdm9pZCAwPT09Zz9cIlwiOmcpfSk7dGhpcy5ub3RpZnlVbmZpbGxlZFNsb3RzPVMoNjksZnVuY3Rpb24oZCl7YS5TYSYmTnkoYSxPeShhLGQpKX0pO3RoaXMuaXNSb2FkYmxvY2tpbmdTdXBwb3J0ZWQ9UygxMTEsZnVuY3Rpb24oKXtyZXR1cm4gUHkoYSl9KTt0aGlzLnJlZnJlc2hBbGxTbG90cz1TKDYwLGZ1bmN0aW9uKCl7YS5TYSYmTnkoYSl9KTt0aGlzLnNldFZpZGVvU2Vzc2lvbj1TKDYxLGZ1bmN0aW9uKGQsZSxmKXthLkc9ZDthLkM9ZTthLkQ9Zn0pO3RoaXMuZ2V0RGlzcGxheUFkc0NvcnJlbGF0b3I9Uyg2MixmdW5jdGlvbihkKXtyZXR1cm4gUXkoYSx2b2lkIDA9PT1kP1wiXCI6ZCl9KTt0aGlzLmdldFZpZGVvU3RyZWFtQ29ycmVsYXRvcj1TKDYzLGZ1bmN0aW9uKCl7aWYoKF8ueSg0MDYpP0d5LkIoKTpNeSgpKS5qKXt2YXIgZD0kdCgpLkQ7ZD1pc05hTihkKT8wOmR9ZWxzZSBkPTA7cmV0dXJuIGR9KTt0aGlzLmlzU2xvdEFQZXJzaXN0ZW50Um9hZGJsb2NrPVMoNjQsZnVuY3Rpb24oZCl7ZD16aihkLGIpO3JldHVybiEhZCYmUnkoYSxkKX0pO3RoaXMub25JbXBsZW1lbnRhdGlvbkxvYWRlZD1TKDY1LGZ1bmN0aW9uKCl7YS5sb2cuaW5mbyhTbChcIkdQVCBDb21wYW5pb25BZHNcIiksYSl9KTt0aGlzLmZpbGxTbG90PVMoNjYsZnVuY3Rpb24oZCxlKXtkPXpqKGQsYik7dmFyIGY7aWYoZj0hIWQpZCYmWnAoZCkmJmUmJlwic3RyaW5nXCI9PT10eXBlb2YgZT8oU3koYSxkKS5jb250ZW50PWUsZj1UeShhLGQpKTpmPSExO3JldHVybiBmfSk7dGhpcy5zbG90UmVuZGVyRW5kZWQ9Uyg2NyxmdW5jdGlvbihkLGUsZil7cmV0dXJuKGQ9emooZCxiKSkmJlV5KGEsZCxlLGYpfSk7dGhpcy5zZXRSZWZyZXNoVW5maWxsZWRTbG90cz1TKDU5LGZ1bmN0aW9uKGQpe1wiYm9vbGVhblwiPT09dHlwZW9mIGQmJihhLlNhPWQpfSl9O18uSihWeSxqcCk7dmFyIFh5PWZ1bmN0aW9uKGEsYil7anAuY2FsbCh0aGlzLGEpO3RoaXMuc2V0Q29udGVudD1TKDcyLGZ1bmN0aW9uKGMsZCl7cmV0dXJuKGM9emooYyxiKSkmJld5KGEsYyxkKX0pO3RoaXMuZGlzcGxheT1TKDU2MixmdW5jdGlvbihjLGQsZSxmKXtyZXR1cm4gYS5kaXNwbGF5KGMsZCx2b2lkIDA9PT1lP1wiXCI6ZSx2b2lkIDA9PT1mP1wiXCI6Zil9KX07Xy5KKFh5LGpwKTt2YXIgWXk9ZnVuY3Rpb24oKXtIcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihZeSxIcCk7WXkuQj1mdW5jdGlvbigpe3Rocm93IEVycm9yKFwiTXVzdCBiZSBvdmVycmlkZGVuXCIpO307dmFyIFp5PWZ1bmN0aW9uKCl7WXkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMubz1uZXcgdC5NYXA7dGhpcy5tPXt9O3RoaXMuU2E9ITE7dGhpcy5HPTA7dGhpcy5EPXRoaXMuQz12b2lkIDA7dGhpcy5IPXRoaXMuST0hMX07Xy5KKFp5LFl5KTtaeS5CPVl5LkI7Xy5wPVp5LnByb3RvdHlwZTtfLnAuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFZ5KHRoaXMsa28pfTtfLnAuc2V0PWZ1bmN0aW9uKGEsYil7XCJzdHJpbmdcIj09PXR5cGVvZiBhJiZhLmxlbmd0aD8odGhpcy5tW2FdPWIsdGhpcy5sb2cuaW5mbyhLbChhLFN0cmluZyhiKSx0aGlzLlooKSksdGhpcyxudWxsKSk6dGhpcy5sb2cuSihMbChTdHJpbmcoYSksU3RyaW5nKGIpLHRoaXMuWigpKSx0aGlzLG51bGwpO3JldHVybiB0aGlzfTtfLnAuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBudWxsIT09KGI9dGhpcy5tW2FdKSYmdm9pZCAwIT09Yj9iOm51bGx9O18ucC5kaXNwbGF5PWZ1bmN0aW9uKGEsYixjLGQpe2M9dm9pZCAwPT09Yz9cIlwiOmM7ZD12b2lkIDA9PT1kP1wiXCI6ZDtpcCh0aGlzKTtiPSRwKGEsYixjKTthPWIuc2xvdDtiPWIuRmE7dGhpcy54YShhLGIpO0QoYiw3LGQpO2RxKGEuZ2V0U2xvdElkKCkuail9O18ucC54YT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7Xy5SKGEsT2IoSS5CKCksSm8sYS5nZXRTbG90SWQoKSw3NTIsZnVuY3Rpb24oZCl7eChkLDExKSYmKFN5KGMsYSkuaj0hMCl9KSk7WXkucHJvdG90eXBlLnhhLmNhbGwodGhpcyxhLGIpfTtfLnAuTmI9ZnVuY3Rpb24oKXskeSh0aGlzKX07dmFyIFB5PWZ1bmN0aW9uKGEpe3ZhciBiPV8ueSg0MDYpP0d5LkIoKTpNeSgpO2lmKCFiLmopcmV0dXJuITE7dmFyIGM9Yi5sO2E9YS5sO3JldHVybiBjLmxlbmd0aCE9PWEubGVuZ3RoPyExOiFhLnNvbWUoZnVuY3Rpb24oZCl7cmV0dXJuIV8uQShjLFwiaW5jbHVkZXNcIikuY2FsbChjLGQpfSl9LFF5PWZ1bmN0aW9uKGEsYil7KGI9dm9pZCAwPT09Yj9cIlwiOmIpJiYhYS5IJiZrYihcImltYV9zZGtfdlwiLGZ1bmN0aW9uKGQpe2EuSD0hMDtFKGQsXCJ2XCIsYil9KTt2YXIgYz1Ubi5CKCkuajtyZXR1cm4gU3RyaW5nKEIoYywyNikpfSxOeT1mdW5jdGlvbihhLGIpe3ZhciBjPV8ueSg0MDYpP0d5LkIoKTpNeSgpLGQ9VG4uQigpLmosZT1WbigpO2lmKGMuail7dmFyIGY9e0VhOjN9O3ZvaWQgMCE9PWEuRyYmKGYuSmE9YS5HKTthLkMmJihmLldhPWEuQyk7YS5EJiYoZi5YYT1hLkQpO2E9bnVsbCE9PWImJnZvaWQgMCE9PWI/YjphLmw7ZD1LayhkLGUpO2YuSmEmJlwibnVtYmVyXCIhPT10eXBlb2YgZi5KYXx8Zi5XYSYmXCJudW1iZXJcIiE9PXR5cGVvZiBmLldhfHxmLlhhJiZcIm51bWJlclwiIT09dHlwZW9mIGYuWGF8fFh0KGMsZCxhLGYpfWVsc2UgYS5sb2cuZXJyb3IoT2woXCJQdWJBZHNcIixcInJlZnJlc2hcIikpfSxSeT1mdW5jdGlvbihhLGIpe3ZhciBjO2lmKChfLnkoNDA2KT9HeS5CKCk6TXkoKSkuaiYmWnAoYikpcmV0dXJuIGE9YS5vLmdldChiLmdldFNsb3RJZCgpKSxudWxsIT09KGM9bnVsbD09PWF8fHZvaWQgMD09PWE/dm9pZCAwOmEuaikmJnZvaWQgMCE9PWM/YzohMTthLmxvZy5lcnJvcihQbCgpKTtyZXR1cm4hMX0sT3k9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIF8uQShhLmwsXCJmaW5kXCIpLmNhbGwoYS5sLGZ1bmN0aW9uKGQpe3JldHVybiBkLmdldFNsb3RJZCgpLnRvU3RyaW5nKCk9PT1jfSl9KS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuISFjfSl9O1p5LnByb3RvdHlwZS5aPWZ1bmN0aW9uKCl7cmV0dXJuXCJjb21wYW5pb25fYWRzXCJ9O3ZhciAkeT1mdW5jdGlvbihhKXttYig3MCxmdW5jdGlvbigpe2lmKCFhLkkpe3ZhciBiPWRvY3VtZW50O2EubG9nLmluZm8oUWwoXCJHUFQgQ29tcGFuaW9uQWRzXCIpLGEpO3ZhciBjLGQsZT1udWxsIT09KGQ9bnVsbD09PShjPW1hKCkpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNyZWF0ZVNjcmlwdFVSTChcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfY29tcGFuaW9uX2FkLmpzXCIpKSYmdm9pZCAwIT09ZD9kOlwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19jb21wYW5pb25fYWQuanNcIjtjPW5ldyBhaShlLGphKTtuYShjLGFpKTt1ZyhiLEJkKGMuai50b1N0cmluZygpKSk7YS5JPSEwfX0sZnVuY3Rpb24oYixjKXtibChiLGMpO2EubG9nLmVycm9yKFJsKFwiR1BUIENvbXBhbmlvbkFkc1wiKSxhKX0pfSxUeT1mdW5jdGlvbihhLGIpe2lmKCFhLmp8fFJ5KGEsYikpcmV0dXJuITE7dmFyIGM9cGEoYik7aWYoIWMpcmV0dXJuITE7dmFyIGQ9KGEuby5nZXQoYi5nZXRTbG90SWQoKSl8fHt9KS5jb250ZW50O2lmKHZvaWQgMD09PWQpcmV0dXJuITE7YS5vLmRlbGV0ZShiLmdldFNsb3RJZCgpKTtiLlRhKCk7Yy5pbm5lckhUTUw9ZDtwbyhiKTtkPWM9bnVsbDt2YXIgZT1XbihUbi5CKCksYi5nZXRTbG90RWxlbWVudElkKCkpO2UmJjE9PT11ZihlLFZqLDUpLmxlbmd0aCYmbnVsbCE9Qih1ZihlLFZqLDUpWzBdLDEpJiZudWxsIT1CKHVmKGUsVmosNSlbMF0sMikmJihjPUIodWYoZSxWaiw1KVswXSwxKSxkPUIodWYoZSxWaiw1KVswXSwyKSk7VXkoYSxiLGMsZCk7cmV0dXJuITB9O1p5LnByb3RvdHlwZS5YYj1mdW5jdGlvbihhLGIpe1R5KHRoaXMsYil9O3ZhciBVeT1mdW5jdGlvbihhLGIsYyxkKXtiPW5ldyB0cChnbChiKSxhLlooKSk7bnVsbCE9YyYmbnVsbCE9ZCYmKGIuc2l6ZT1bYyxkXSk7SnAoYSxcInNsb3RSZW5kZXJFbmRlZFwiLGIpfSxTeT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuby5nZXQoYi5nZXRTbG90SWQoKSk7Y3x8KGM9e30sYS5vLnNldChiLmdldFNsb3RJZCgpLGMpLF8uUihiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuby5kZWxldGUoYi5nZXRTbG90SWQoKSl9KSk7cmV0dXJuIGN9LGF6PWZ1bmN0aW9uKCl7cmV0dXJuIG1iKDU3LGZ1bmN0aW9uKCl7dmFyIGE9TXAuQigpLGI9Xy5BKGEsXCJmaW5kXCIpLmNhbGwoYSxcImNvbXBhbmlvbl9hZHNcIik7Ynx8KGI9bmV3IFp5LGEuYWRkKGIpKTtyZXR1cm4gYn0pfTtJYyhaeSk7V2IoXCJjb21wYW5pb25BZHNcIixmdW5jdGlvbigpe3JldHVybiBnbChfLnkoNDA2KT9aeS5CKCk6YXooKSl9KTt2YXIgYno9ZnVuY3Rpb24oKXtIcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihieixIcCk7YnouQj1mdW5jdGlvbigpe3Rocm93IEVycm9yKFwiTXVzdCBiZSBvdmVycmlkZGVuXCIpO307dmFyIGN6PWZ1bmN0aW9uKCl7YnouYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMubz1uZXcgdC5NYXB9O18uSihjeixieik7Y3ouQj1iei5CO2N6LnByb3RvdHlwZS5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgWHkodGhpcyxrbyl9O2N6LnByb3RvdHlwZS5aPWZ1bmN0aW9uKCl7cmV0dXJuXCJjb250ZW50XCJ9O2N6LnByb3RvdHlwZS5kaXNwbGF5PWZ1bmN0aW9uKGEsYixjLGQpe2M9dm9pZCAwPT09Yz9cIlwiOmM7ZD12b2lkIDA9PT1kP1wiXCI6ZDtpcCh0aGlzKTtiPSRwKGEsYixjKTthPWIuc2xvdDtiPWIuRmE7dGhpcy54YShhLGIpO0QoYiw3LGQpO2RxKGEuZ2V0U2xvdElkKCkuail9O2N6LnByb3RvdHlwZS5kZXN0cm95U2xvdHM9ZnVuY3Rpb24oYSl7YT1iei5wcm90b3R5cGUuZGVzdHJveVNsb3RzLmNhbGwodGhpcyxhKTtmb3IodmFyIGI9Xy5GKGEpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXRoaXMuby5kZWxldGUoYy52YWx1ZS5nZXRTbG90SWQoKSk7cmV0dXJuIGF9O3ZhciBkej1mdW5jdGlvbihhLGIpe3ZhciBjPWEuby5nZXQoYi5nZXRTbG90SWQoKSksZD1wYShiKTshKGMmJnZvaWQgMCE9PWMuY29udGVudCYmZCYmYS5qKXx8YyYmYy5UYXx8KGMuVGE9ITAsZC5pbm5lckhUTUw9Yy5jb250ZW50LEpwKGEsXCJzbG90UmVuZGVyRW5kZWRcIixuZXcgdHAoZ2woYiksYS5aKCkpKSl9O2N6LnByb3RvdHlwZS5OYj1mdW5jdGlvbigpe307Y3oucHJvdG90eXBlLlhiPWZ1bmN0aW9uKGEsYil7ZHoodGhpcyxiKX07dmFyIFd5PWZ1bmN0aW9uKGEsYixjKXtpZihacChiKSYmXCJzdHJpbmdcIj09PXR5cGVvZiBjJiZjLmxlbmd0aCl7dmFyIGQ9YS5vLmdldChiLmdldFNsb3RJZCgpKTtkP2QuY29udGVudD1jOmEuby5zZXQoYi5nZXRTbG90SWQoKSx7Y29udGVudDpjLFRhOnZvaWQgMH0pO18uUihiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5vLmRlbGV0ZShiLmdldFNsb3RJZCgpKX0pO2R6KGEsYil9fSxlej1mdW5jdGlvbigpe3JldHVybiBtYig3MSxmdW5jdGlvbigpe3ZhciBhPU1wLkIoKSxiPV8uQShhLFwiZmluZFwiKS5jYWxsKGEsXCJjb250ZW50XCIpO2J8fChiPW5ldyBjeixhLmFkZChiKSk7cmV0dXJuIGJ9KX07SWMoY3opO1diKFwiY29udGVudFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGdsKF8ueSg0MDYpP2N6LkIoKTpleigpKX0pO2lmKHdpbmRvdy5nb29nbGV0YWcuZXZhbFNjcmlwdHMpd2luZG93Lmdvb2dsZXRhZy5ldmFsU2NyaXB0cygpO2Vsc2V7dmFyIGZ6PXdpbmRvdyxnej1fLk9pKGZ6KTtpZihneil7dmFyIGh6PXtsYWJlbDpcIjJcIix0eXBlOjksdmFsdWU6Z3p9LGl6PWZ6Lmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWU9ZnouZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZXx8W107MjA0OD5pei5sZW5ndGgmJml6LnB1c2goaHopfVdiKFwiZXZhbFNjcmlwdHNcIixmdW5jdGlvbigpe0p1KCl9KTtMdSgpfTt9KS5jYWxsKHRoaXMse30pO1xuIn0sICJoZWFkZXJzU2l6ZSI6IDE2NTIsICJib2R5U2l6ZSI6IDkzNTg2LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA5NTIzOH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDM1LjAzMSwgInJlY2VpdmUiOiAxNjY4LjI2fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjZaIiwgInRpbWUiOiA0Ni4wMjUwMDAwMDAwMDAwMDYsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvZi50eHQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDcxLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiYXpzYTM3TzFRSC4zeVFoX09HU0YzWW42RmN1bXhra2I2bGxCdGcyNjhLRS0xNjg0OTQyODc1LTAtQVFkV0JITFdCbE93cEo5RGJZMjcvRzdLczE4MlU5Q2NDSXMxbVgvNVRVQzlQTEhqRWxLZWowOGdNYWNycitZWkE4bjVwMlRYMGVSUTV2Z21rTXAvRkUwPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MSJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDRlNDgwODM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNSBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtVTRwQVV5c2E4WVlNTmFzVk1iRENqU25ibXZYSEs5cWc2bnRFVE01Y1BpVlJcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1henNhMzdPMVFILjN5UWhfT0dTRjNZbjZGY3VteGtrYjZsbEJ0ZzI2OEtFLTE2ODQ5NDI4NzUtMC1BUWRXQkhMV0JsT3dwSjlEYlkyNy9HN0tzMTgyVTlDY0NJczFtWC81VFVDOVBMSGpFbEtlajA4Z01hY3JyK1laQThuNXAyVFgwZVJRNXZnbWtNcC9GRTA9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTUgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2YudHh0In0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVU0cEFVeXNhOFlZTU5hc1ZNYkRDalNuYm12WEhLOXFnNm50RVRNNWNQaVZSIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAxMDksICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAicHJvY2Vzc0dvb2dsZVRva2VuKHtcIm5ld1Rva2VuXCI6XCJOVFwiLFwidmFsaWRMaWZldGltZVNlY3NcIjozMDAsXCJmcmVzaExpZmV0aW1lU2Vjc1wiOjMwMCxcIjFwX2phclwiOlwiXCIsXCJwdWNyZFwiOlwiXCJ9KTsifSwgImhlYWRlcnNTaXplIjogMTYyMywgImJvZHlTaXplIjogMTI5LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNzUyfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogNDEuMzg2LCAicmVjZWl2ZSI6IDQuNjM5fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjZaIiwgInRpbWUiOiA5NjcuNzcyLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3NpYy5jc3MiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvY3NzLCovKjtxPTAuMSJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDg4LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiTkUubXk2N2h2amd3SS5HcjRTbTBneHY1WEtoeE9ZT1VqdXNfZGFnMFcwSS0xNjg0OTQyODc2LTAtQWM0WVNPblAxWnVWTkQzbXhTTjFLWVR1b1hGbmEzT2dRbUVGcVNWSms5MUhrT0tQZWEwUjBReGVUTmRhcUxVQWIrTTdtNnBXOGRkS3NOSUpCeDN4Z1NrPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGMxZGJhNWM3YS1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtUzFkRm15emJLaU1uTm5CcHRNc2Y2c2tKdVBSVlduUFozbmJZdDJFaTZkWVNcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1ORS5teTY3aHZqZ3dJLkdyNFNtMGd4djVYS2h4T1lPVWp1c19kYWcwVzBJLTE2ODQ5NDI4NzYtMC1BYzRZU09uUDFadVZORDNteFNOMUtZVHVvWEZuYTNPZ1FtRUZxU1ZKazkxSGtPS1BlYTBSMFF4ZVROZGFxTFVBYitNN202cFc4ZGRLc05JSkJ4M3hnU2s9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTYgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3NpYy5jc3MifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtUzFkRm15emJLaU1uTm5CcHRNc2Y2c2tKdVBSVlduUFozbmJZdDJFaTZkWVMifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA3MzAyLCAibWltZVR5cGUiOiAidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiA1Njc5LCAidGV4dCI6ICIudHludC1hZC1jb250YWluZXJ7dGV4dC1hbGlnbjpsZWZ0fS50eW50LWFkLWNvbnRhaW5lciAudHludC1hZC1mcmFtZSwudHludC1hZC1jb250YWluZXIgLnR5bnQtYWQtZnJhbWUtY29udGFpbmVye21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6bm9uZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDowfS50eW50LWFkLWNvbnRhaW5lciAudHludC1hZC1mcmFtZS1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9QG1lZGlhIHByaW50ey50eW50LWFkLWNvbnRhaW5lcntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0udHludC1uby10cmFuc2l0aW9ue3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnQ7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0udHludC16ZXJvLW1hcmdpbnttYXJnaW4tbGVmdDowIWltcG9ydGFudH0udHludC1vbmVweC1tYXJnaW57bWFyZ2luLWxlZnQ6MXB4IWltcG9ydGFudH0udHludC1uby1sZWZ0LXBvc2l0aW9ue2xlZnQ6YXV0byFpbXBvcnRhbnR9LnR5bnQtbm8tcmlnaHQtcG9zaXRpb257cmlnaHQ6YXV0byFpbXBvcnRhbnR9LnR5bnQtY2xlYXJmaXg6YWZ0ZXJ7Y29udGVudDpcIlwiO2Rpc3BsYXk6dGFibGU7Y2xlYXI6Ym90aH0udHludC1oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudH0udHludC1ub3Qtdmlld2FibGV7d2lkdGg6MCFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9LnR5bnQtZGlzcGxheS10YWJsZXtkaXNwbGF5OnRhYmxlIWltcG9ydGFudH0udHludC10cmFuc3BhcmVudC1maXhlZC1lbGVtZW50e3Bvc2l0aW9uOmZpeGVkO2JvdHRvbTowO2xlZnQ6MDtib3JkZXI6bm9uZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOjAgMH0udHludC1hZC1mZW5jZS50eW50LWFkLWZlbmNlLXN0YXJ0cG9zLXJpZ2h0e21hcmdpbi1yaWdodDowIWltcG9ydGFudH0udHludC12aWV3YWJpbGl0eXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fS50eW50LXZpZXdhYmlsaXR5PmRpdntwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDtwYWRkaW5nOjAhaW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVuIWltcG9ydGFudH0udHludC1hZC1leHBhbnNpb257ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmV9LnR5bnQtYWQtZXhwYW5zaW9uLnR5bnQtYWQtY29sbGFwc2U+LnR5bnQtYWQtY29udGFpbmVye2hlaWdodDowfS50eW50LWFkLWV4cGFuc2lvbj4udHludC1hZC1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVufS50eW50LWFkLWNvbGxhcHNlKy50eW50LXZpZXdhYmlsaXR5PmRpdnt0b3A6MCFpbXBvcnRhbnR9LnR5bnQtYWQtc2Nyb2xsZXJ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDo0OTk5O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fS50eW50LWFkLXNjcm9sbGVyLnR5bnQtYWQtc2Nyb2xsZXItb3BlbntvdmVyZmxvdzpoaWRkZW59LnR5bnQtYWQtc2Nyb2xsZXI+LnR5bnQtYWQtY29udGFpbmVye2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuO2xlZnQ6MDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH0udHludC1hZC1zY3JvbGxlcj4udHludC1hZC1jb250YWluZXI+LnR5bnQtaW5mZWVke2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxMDB2aDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpmaXhlZDt0b3A6MDtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JvcmRlcjowO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS50eW50LWFkLXNjcm9sbGVyPi50eW50LWFkLWNvbnRhaW5lcj4udHludC1pbmZlZWQ+ZGl2e21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fS50eW50LWFkLXNjcm9sbGVyPi50eW50LWFkLWNvbnRhaW5lcj4udHludC1hZC1kaXNjbG9zdXJle3BhZGRpbmc6NXB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udHludC1hZC1zY3JvbGxlcj4udHludC1hZC1jb250YWluZXI+LnR5bnQtYWQtZGlzY2xvc3VyZS50eW50LWFkLWRpc2Nsb3N1cmUtYm90dG9te3RvcDphdXRvO2JvdHRvbTowfS50eW50LWFkLXNjcm9sbGVyPi50eW50LWFkLWNvbnRhaW5lcj4udHludC1hZC1zY3JvbGxlci12aWV3YWJpbGl0eXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjAhaW1wb3J0YW50O21hcmdpbjphdXRvIWltcG9ydGFudH0udHludC1hZC1kaXNwbGF5e2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH0udHludC1hZC1kaXNwbGF5Pi50eW50LWFkLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjB9LnR5bnQtYWQtZGlzcGxheT4udHludC1hZC1jb250YWluZXI+LnR5bnQtaW5mZWVke2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxcmVtO292ZXJmbG93OmhpZGRlbn0udHludC1hZC1kaXNwbGF5Pi50eW50LWFkLWNvbnRhaW5lcj4udHludC1pbmZlZWQudHludC1ub3Qtdmlld2FibGV7ZmxvYXQ6bGVmdH0udHludC1hZC1wYXJhbGxheHtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzppbml0aWFsO2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6IzAwMDt6LWluZGV4OjQ5OTk7bWFyZ2luOjAgYXV0byFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX0udHludC1hZC1wYXJhbGxheD4udHludC1hZC1jb250YWluZXJ7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O292ZXJmbG93OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NsaXA6cmVjdChhdXRvLGF1dG8sYXV0byxhdXRvKTttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH0udHludC1hZC1wYXJhbGxheD4udHludC1hZC1jb250YWluZXI+LnR5bnQtaW5mZWVke2hlaWdodDoxMDB2aDttYXJnaW46MCBhdXRvIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOmZpeGVkO3RvcDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfS50eW50LWFkLXBhcmFsbGF4Pi50eW50LWFkLWNvbnRhaW5lcj4udHludC1pbmZlZWQ+LnR5bnQtYWQtZnJhbWUtY29udGFpbmVye3dpZHRoOjEwMCU7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfS50eW50LWFkLXBhcmFsbGF4Pi50eW50LWFkLWNvbnRhaW5lcj4udHludC1hZC1kaXNjbG9zdXJle3BhZGRpbmc6MnB4fS50eW50LWFkLWRpc2Nsb3N1cmV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Y29sb3I6I2ZmZjtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MTBweCFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Ym94LXNoYWRvdzojMDAwIDAgMXB4IDEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94fS50eW50LWluZmVlZHtwb3NpdGlvbjpyZWxhdGl2ZX0udHludC1pbmZlZWQ+LnR5bnQtY2xvc2UtYnV0dG9uLWNpcmNsZXtyaWdodDowO3RvcDowfS50eW50LWluZmVlZC50eW50LW5vdC12aWV3YWJsZXtmbG9hdDpsZWZ0O2NsZWFyOmJvdGh9Lmludmlldy1sZXZlbC0we3Bvc2l0aW9uOnJlbGF0aXZlfS5pbnZpZXctbGV2ZWwtMC50eW50LXRhbGxib3l7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7ei1pbmRleDoyMTQ3NDgzNjQ2O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5pbnZpZXctbGV2ZWwtMC50eW50LXRhbGxib3kgLmludmlldy1sZXZlbC0xe3Bvc2l0aW9uOmZpeGVkO292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5pbnZpZXctbGV2ZWwtMC50eW50LXRhbGxib3kgLmludmlldy1sZXZlbC0xIC50eW50LWNsb3NlLWJ0bi1jb250YWluZXJ7ZmxvYXQ6cmlnaHR9Lmludmlldy1sZXZlbC0wLnR5bnQtdGFsbGJveSAuaW52aWV3LWxldmVsLTEgLnR5bnQtYWQtZnJhbWUtY29udGFpbmVye2JhY2tncm91bmQ6I2ZmZjtjbGVhcjpib3RofS5pbnZpZXctbGV2ZWwtMC50eW50LWxhenlib3l7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyIWltcG9ydGFudDttYXJnaW46MDtwYWRkaW5nOjA7Ym90dG9tOjA7dG9wOmF1dG87dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7ei1pbmRleDoyOTk5OTk5O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5pbnZpZXctbGV2ZWwtMC50eW50LWxhenlib3kgLmludmlldy1sZXZlbC0xe292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOjA7cGFkZGluZzowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApO3RyYW5zaXRpb246dHJhbnNmb3JtIC40czttYXgtd2lkdGg6Y2FsYygxMDAlIC0gLjFweCl9Lmludmlldy1sZXZlbC0wLnR5bnQtbGF6eWJveSAuaW52aWV3LWxldmVsLTEgLnR5bnQtY2xvc2UtYnRuLWNvbnRhaW5lcntoZWlnaHQ6MH0uaW52aWV3LWxldmVsLTAudHludC1sYXp5Ym95IC5pbnZpZXctbGV2ZWwtMSAudHludC1jbG9zZS1idG4tY29udGFpbmVyPi50eW50LWNsb3NlLWJ0bnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSl9Lmludmlldy1sZXZlbC0wIC5pbnZpZXctbGV2ZWwtMS50eW50LW5vdC12aWV3YWJsZXtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfS50eW50LWNsb3NlLWJ0bntjdXJzb3I6cG9pbnRlcn0udHludC1jbG9zZS1idG4tY29udGFpbmVye3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpyaWdodH0udHludC1jbG9zZS1idG4tY29udGFpbmVyPi50eW50LWNsb3NlLWJ0bntib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjM1KTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwO3BhZGRpbmc6NHB4IDZweCAzcHggNnB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNTUpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjIpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjc1KTtsaW5lLWhlaWdodDoxLjI7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjAgMCAtMnB4IDB9LnR5bnQtY2xvc2UtYnRuLWNvbnRhaW5lcj4udHludC1jbG9zZS1idG46aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC44KTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjgpO2NvbG9yOiNmZmZ9LnR5bnQtY2xvc2UtYnRuLWNvbnRhaW5lcj4udHludC1jbG9zZS1idG4udHludC1hZHgtY2xvc2UtYnV0dG9ue3BhZGRpbmctYm90dG9tOjlweH0udHludC1tb2JpbGUtY2xvc2UtYnV0dG9uIC50eW50LWNsb3NlLWJ0bntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTBweCAwIDhweCAwO2ZvbnQtc2l6ZToxOHB4O3RleHQtYWxpZ246Y2VudGVyfS50eW50LW1vYmlsZS1jbG9zZS1idXR0b24gLnR5bnQtY2xvc2UtYnRuIC5jaGV2cm9ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNHB4O2xlZnQ6NXB4fS50eW50LW1vYmlsZS1jbG9zZS1idXR0b24gLnR5bnQtY2xvc2UtYnRuIC5jaGV2cm9uLXJpZ2h0e2xlZnQ6YXV0bztyaWdodDo1cHh9LnR5bnQtbW9iaWxlLWNsb3NlLWJ1dHRvbiAudHludC1jbG9zZS1idG4gLmNoZXZyb246YWZ0ZXIsLnR5bnQtbW9iaWxlLWNsb3NlLWJ1dHRvbiAudHludC1jbG9zZS1idG4gLmNoZXZyb246YmVmb3Jle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTFweDtoZWlnaHQ6MnB4O2JhY2tncm91bmQtY29sb3I6I2QzZDNkMztjb250ZW50OicnfS50eW50LW1vYmlsZS1jbG9zZS1idXR0b24gLnR5bnQtY2xvc2UtYnRuIC5jaGV2cm9uOmJlZm9yZXt0b3A6M3B4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0udHludC1tb2JpbGUtY2xvc2UtYnV0dG9uIC50eW50LWNsb3NlLWJ0biAuY2hldnJvbi1yaWdodDpiZWZvcmV7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LnR5bnQtbW9iaWxlLWNsb3NlLWJ1dHRvbiAudHludC1jbG9zZS1idG4gLmNoZXZyb246YWZ0ZXJ7dG9wOjdweDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0udHludC1tb2JpbGUtY2xvc2UtYnV0dG9uIC50eW50LWNsb3NlLWJ0biAuY2hldnJvbi1yaWdodDphZnRlcnt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9LnR5bnQtY2xvc2UtYnV0dG9uLWNpcmNsZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4O2hlaWdodDozMHB4O3BhZGRpbmc6NXB4IWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7dG9wOi0yMHB4O3JpZ2h0Oi01cHg7ei1pbmRleDoyMTQ3NDgzNjQ2O2ZvbnQtc2l6ZToxNnB4O2JveC1zaXppbmc6Y29udGVudC1ib3g7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS50eW50LWNsb3NlLWJ1dHRvbi1jaXJjbGU6YWZ0ZXJ7Y29udGVudDpcIlxcMDBkN1wiO2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6NzAwO3Bvc2l0aW9uOnJlbGF0aXZlfS50eW50LWNsb3NlLWJ1dHRvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6XCJcIjtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7YmFja2dyb3VuZC1jb2xvcjojMDAwO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7bWFyZ2luOjVweDt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGV9In0sICJoZWFkZXJzU2l6ZSI6IDE2MTMsICJib2R5U2l6ZSI6IDE2MjMsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDMyMzZ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDExLCAiY29ubmVjdCI6IDQuNDAxLCAic3NsIjogMTAuODA3LCAic2VuZCI6IDAsICJ3YWl0IjogOTQ4LjA4MywgInJlY2VpdmUiOiA0LjQ3fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjZaIiwgInRpbWUiOiAxNzUwLjAwNTk5OTk5OTk5OTksICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvYXV0aG9yaXplIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ3NSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIldKaXJmSmdoOV81bkV2MXk5dXh0cERheG9qZmxMa1NHVThNYjgyc3g1YzAtMTY4NDk0Mjg3Ny0wLUFReE5SWlhmSW4vS2wxbnNYNGlJSlBKL2xHUXJuZituZjRlKzl4bWMxVlI0SWhuaHc2MVJVdHQ2dS80Y2diOVBNNWNlekl5NTFCajNudkhFMDBYbnIwaz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDAifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1NmFiN2MzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbWV5RWFnMk1uWGdlbnA0eGs0aGVuZW1pOW51MUR5V2RrbVRkOWFFOXgxQ3RGXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09V0ppcmZKZ2g5XzVuRXYxeTl1eHRwRGF4b2pmbExrU0dVOE1iODJzeDVjMC0xNjg0OTQyODc3LTAtQVF4TlJaWGZJbi9LbDFuc1g0aUlKUEovbEdRcm5mK25mNGUrOXhtYzFWUjRJaG5odzYxUlV0dDZ1LzRjZ2I5UE01Y2V6SXk1MUJqM252SEUwMFhucjBrPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE3IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9hdXRob3JpemUifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtZXlFYWcyTW5YZ2VucDR4azRoZW5lbWk5bnUxRHlXZGttVGQ5YUU5eDFDdEYifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDE0NjAsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogNTk3LCAidGV4dCI6ICIvKiovIHR5cGVvZiBfdHludF9qcC5hN3B1dmRreDIgPT09ICdmdW5jdGlvbicgJiYgX3R5bnRfanAuYTdwdXZka3gyKHtcInVzUHJpdmFjeVwiOlwiMVlOTlwiLFwidmVyc2lvblwiOlwiMy42LjFcIixcImFnZW50XCI6XCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvODQuMC40MTQ3LjEzNSBTYWZhcmkvNTM3LjM2XCIsXCJwcm9kdWN0XCI6XCJpbnZpZXdcIixcInVzZXJJZFwiOlwiXCIsXCJzZXNzaW9uSWRcIjpcImQ0ZnU1MG1pLWJmZHRnN2FhLWp3M2k3d3BmLWF6NXA3eDduXCIsXCJwdWJsaXNoZXJVUkxcIjpcImh0dHBzOi8vbXkuanVuby5jb20vc3RhcnQvbG9naW4uZG9cIixcInJlZmVycmVyVVJMXCI6XCJodHRwczovL215Lmp1bm8uY29tL3N0YXJ0L2xvZ2luLmRvP2NmPXNwXCIsXCJwdWJsaXNoZXJJZFwiOlwiYUh2VldNdGU0cjU0b01hS2xnWWo4dVwiLFwicHVibGlzaGVyXCI6XCJzdGFydC5uZXR6ZXJvLm5ldFwiLFwidmlld3BvcnRXaWR0aFwiOlwiMTkwOFwiLFwidmlld3BvcnRIZWlnaHRcIjpcIjc0MlwiLFwic2NyZWVuV2lkdGhcIjpcIjE5MDhcIixcInNjcmVlbkhlaWdodFwiOlwiODUzXCIsXCJzY3JvbGxYXCI6XCIwXCIsXCJzY3JvbGxZXCI6XCIwXCIsXCJwYWdlVmlzaWJpbGl0eVwiOlwidmlzaWJsZVwiLFwicGFnZVdpZHRoXCI6XCIxOTA4XCIsXCJwYWdlSGVpZ2h0XCI6XCI3NDJcIixcImNhbGxiYWNrXCI6XCJfdHludF9qcC5hN3B1dmRreDJcIixcImlwXCI6XCIxNzQuMTM4LjE4My4zNFwiLFwiZGV2aWNlRmFtaWx5XCI6XCJkZXNrdG9wXCIsXCJicm93c2VyXCI6XCJDaHJvbWUgODQuMC40MTQ3XCIsXCJicm93c2VyRmFtaWx5XCI6XCJDaHJvbWVcIixcIm9zXCI6XCJXaW5kb3dzIDEwLjAuMFwiLFwidmlld3BvcnREaW1lbnNpb25zXCI6XCIxOTA4eDc0MlwiLFwicmVzb2x1dGlvblwiOlwiMTkwOHg4NTNcIixcInNjcm9sbFBvc2l0aW9uXCI6XCIwOjBcIixcInBhZ2VEaW1lbnNpb25zXCI6XCIxOTA4eDc0MlwiLFwiZGV2aWNlT3JpZW50YXRpb25cIjpcImxhbmRzY2FwZVwiLFwiZGV2aWNlXCI6XCJkZXNrdG9wXCIsXCJkbnRFbmFibGVkXCI6MCxcImNvdW50cnlcIjpcIlVTXCIsXCJ1c1N0YXRlXCI6XCJcIixcIm1ldHJvXCI6bnVsbCxcImRlcHRoXCI6XCJzaGFsbG93XCIsXCJyZWZlcnJlclwiOlwidW5rbm93blwiLFwiZ2RwckVsaWdpYmxlXCI6MCxcImZpcnN0U2VlblwiOjE1OTg3NDI0MTU1NzksXCJzZXNzaW9uRHVyYXRpb25cIjowLFwiQUJUZXN0QnVja2V0XCI6e1wiYXN0X3Jlc2VydmVcIjpcIjFcIixcInByaWNlX2Zsb29yX3N0cmF0ZWd5XCI6XCJkZWZhdWx0XCIsXCJwcmViaWRfdGltZW91dFwiOlwiMjAwMFwifSxcImNvbnRlbnRDYXRlZ29yeUlkXCI6XCIwXCIsXCJkblwiOntcImdtXCI6XCI1OFwiLFwiZ2ZcIjpcIjM5XCIsXCJhZzFcIjpcIjFcIixcImFnMlwiOlwiMTBcIixcImFnM1wiOlwiODVcIn0sXCJpdlwiOntcIml2dFwiOjEyLFwiaXZhXCI6NDUsXCJpdmJcIjoyNyxcIml2Y1wiOjIwLFwiaXZkXCI6NixcIml2ZVwiOjEsXCJpdnBcIjo3NixcIm9zclwiOjc4fSxcImRhdGFDZW50ZXJcIjpcInN0ZWFkZmFzdC1jaGlcIixcImhvc3RuYW1lXCI6XCJzaWMtMDAyLWNoaS1kb2NrZXJcIn0pOyJ9LCAiaGVhZGVyc1NpemUiOiAxNjI3LCAiYm9keVNpemUiOiA4NjMsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDI0OTB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA0NS44NiwgInJlY2VpdmUiOiAxNzA0LjE0Nn0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI2WiIsICJ0aW1lIjogOTI2LjI0MiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy90cmFuc2xhdGVlbGVtZW50LmNzcyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9jc3MsKi8qO3E9MC4xIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1MDEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJTTWQudE10SE5nVEpSc3Y0UnRCSGhsRklGZGtVZm53U2llWjhhc1VWX2I4LTE2ODQ5NDI4NzYtMC1BZGJ5Rlh6K3BnVXZkZjNtVTU0TW4vSC95Y20zNVFHa1BJSzRuTGpid0txUXhJSTJXOTBhcml2RjFvc09GR3RvRGgxRlMwdVAvR2V1MzhCc3BJcUJOMFU9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ0YzE5MjUzMGY5LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2NzczsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1XaHFkZ3JyTTg5R1RKdm9OUGJpMjkxTW1FNEoxN3FpNTE2V0NGalpWUDZLWlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVNNZC50TXRITmdUSlJzdjRSdEJIaGxGSUZka1VmbndTaWVaOGFzVVZfYjgtMTY4NDk0Mjg3Ni0wLUFkYnlGWHorcGdVdmRmM21VNTRNbi9IL3ljbTM1UUdrUElLNG5MamJ3S3FReElJMlc5MGFyaXZGMW9zT0ZHdG9EaDFGUzB1UC9HZXUzOEJzcElxQk4wVT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNiBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvdHJhbnNsYXRlZWxlbWVudC5jc3MifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtV2hxZGdyck04OUdUSnZvTlBiaTI5MU1tRTRKMTdxaTUxNldDRmpaVlA2S1oifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAxODcyNCwgIm1pbWVUeXBlIjogInRleHQvY3NzOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMTUwNzgsICJ0ZXh0IjogIi8qIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICovXG4uZ29vZy10ZS1iYW5uZXItZnJhbWV7bGVmdDowcHg7dG9wOjBweDtoZWlnaHQ6MzlweDt3aWR0aDoxMDAlO3otaW5kZXg6MTAwMDAwMDE7cG9zaXRpb246Zml4ZWQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzZiOTBkYTttYXJnaW46MDstbW96LWJveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OTk5OTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OTk5OTtib3gtc2hhZG93OjAgMCA4cHggMXB4ICM5OTk5OTk7X3Bvc2l0aW9uOmFic29sdXRlfS5nb29nLXRlLW1lbnUtZnJhbWV7ei1pbmRleDoxMDAwMDAwMjtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTstbW96LWJveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5OTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTk5OTk7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTk5OTk7X3Bvc2l0aW9uOmFic29sdXRlfS5nb29nLXRlLWZ0YWItZnJhbWV7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkNWQ1ZDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzliOWI5Yjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZThlOGU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2Q1ZDVkNTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyO3pvb206MTsqZGlzcGxheTppbmxpbmV9Lmdvb2ctdGUtZ2FkZ2V0LWljb257bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHg7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtib3JkZXI6bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lmdvb2ctdGUtY29tYm97bWFyZ2luLWxlZnQ6NHB4O21hcmdpbi1yaWdodDo0cHg7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7KnZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZ29vZy10ZS1nYWRnZXQgLmdvb2ctdGUtY29tYm97bWFyZ2luOjRweCAwfS5nb29nLWxvZ28tbGluaywuZ29vZy1sb2dvLWxpbms6bGluaywuZ29vZy1sb2dvLWxpbms6dmlzaXRlZCwuZ29vZy1sb2dvLWxpbms6aG92ZXIsLmdvb2ctbG9nby1saW5rOmFjdGl2ZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpib2xkO2NvbG9yOiM0NDQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Lmdvb2ctdGUtYmFubmVyIC5nb29nLWxvZ28tbGluaywuZ29vZy1jbG9zZS1saW5re2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjBweCAxMHB4fS5nb29nLXRlLWJhbm5lciAuZ29vZy1sb2dvLWxpbmt7cGFkZGluZy10b3A6MnB4O3BhZGRpbmctbGVmdDo0cHh9Lmdvb2ctdGUtY29tYm8sLmdvb2ctdGUtYmFubmVyICosLmdvb2ctdGUtZnRhYiAqLC5nb29nLXRlLW1lbnUgKiwuZ29vZy10ZS1tZW51MiAqLC5nb29nLXRlLWJhbGxvb24gKntmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTBwdH0uZ29vZy10ZS1iYW5uZXJ7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZTRlZmZiO292ZXJmbG93OmhpZGRlbn0uZ29vZy10ZS1iYW5uZXIgaW1ne2JvcmRlcjpub25lfS5nb29nLXRlLWJhbm5lci1jb250ZW50e2NvbG9yOiMwMDB9Lmdvb2ctdGUtYmFubmVyLWNvbnRlbnQgaW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZ29vZy10ZS1iYW5uZXItaW5mb3tjb2xvcjojNjY2O3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW4tdG9wOjBweDtmb250LXNpemU6N3B0fS5nb29nLXRlLWJhbm5lci1tYXJnaW57d2lkdGg6OHB4fS5nb29nLXRlLWJ1dHRvbntib3JkZXItY29sb3I6I2U3ZTdlNztib3JkZXItc3R5bGU6bm9uZSBzb2xpZCBzb2xpZCBub25lO2JvcmRlci13aWR0aDowIDFweCAxcHggMH0uZ29vZy10ZS1idXR0b24gZGl2e2JvcmRlci1jb2xvcjojY2NjY2NjICM5OTk5OTkgIzk5OTk5OSAjY2NjY2NjO2JvcmRlci1yaWdodDoxcHggc29saWQgIzk5OTk5OTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtoZWlnaHQ6MjBweH0uZ29vZy10ZS1idXR0b24gYnV0dG9ue2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjIwcHg7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOnRvcDt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtYnV0dG9uIGJ1dHRvbjphY3RpdmV7YmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwICNjY2NjY2N9Lmdvb2ctdGUtZnRhYnttYXJnaW46MHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZnRhYi1saW5re3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEwcHQ7Ym9yZGVyOjFweCBvdXRzZXQgIzg4ODtwYWRkaW5nOjZweCAxMHB4O3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjBweDt0b3A6MHB4fS5nb29nLXRlLWZ0YWItbGluayBpbWd7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHg7d2lkdGg6MTlweDtoZWlnaHQ6MTlweDtib3JkZXI6bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lmdvb2ctdGUtZnRhYi1saW5rIHNwYW57dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lmdvb2ctZmxvYXQtdG9wIC5nb29nLXRlLWZ0YWItbGlua3twYWRkaW5nOjJweCAycHg7Ym9yZGVyLXRvcC13aWR0aDowcHh9Lmdvb2ctZmxvYXQtYm90dG9tIC5nb29nLXRlLWZ0YWItbGlua3twYWRkaW5nOjJweCAycHg7Ym9yZGVyLWJvdHRvbS13aWR0aDowcHh9Lmdvb2ctdGUtbWVudS12YWx1ZXt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMDAwMGNjO3doaXRlLXNwYWNlOm5vd3JhcDttYXJnaW4tbGVmdDo0cHg7bWFyZ2luLXJpZ2h0OjRweH0uZ29vZy10ZS1tZW51LXZhbHVlIHNwYW57dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uZ29vZy10ZS1tZW51LXZhbHVlIGltZ3ttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweH0uZ29vZy10ZS1nYWRnZXQtc2ltcGxlIC5nb29nLXRlLW1lbnUtdmFsdWV7Y29sb3I6IzAwMH0uZ29vZy10ZS1nYWRnZXQtc2ltcGxlIC5nb29nLXRlLW1lbnUtdmFsdWUgc3Bhbnt0ZXh0LWRlY29yYXRpb246bm9uZX0uZ29vZy10ZS1tZW51e2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MnB4IHNvbGlkICNjM2Q5ZmY7b3ZlcmZsb3cteTpzY3JvbGw7b3ZlcmZsb3cteDpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5nb29nLXRlLW1lbnUtaXRlbXtwYWRkaW5nOjNweDt0ZXh0LWRlY29yYXRpb246bm9uZX0uZ29vZy10ZS1tZW51LWl0ZW0sLmdvb2ctdGUtbWVudS1pdGVtOmxpbmt7Y29sb3I6IzAwMDBjYztiYWNrZ3JvdW5kOiNmZmZmZmZ9Lmdvb2ctdGUtbWVudS1pdGVtOnZpc2l0ZWR7Y29sb3I6IzU1MWE4Yn0uZ29vZy10ZS1tZW51LWl0ZW06aG92ZXJ7YmFja2dyb3VuZDojYzNkOWZmfS5nb29nLXRlLW1lbnUtaXRlbTphY3RpdmV7Y29sb3I6IzAwMDBjY30uZ29vZy10ZS1tZW51MntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjNmI5MGRhO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjRweH0uZ29vZy10ZS1tZW51Mi1jb2xwYWR7d2lkdGg6MTZweH0uZ29vZy10ZS1tZW51Mi1zZXBhcmF0b3J7bWFyZ2luOjZweCAwO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjojYWFhO292ZXJmbG93OmhpZGRlbn0uZ29vZy10ZS1tZW51Mi1pdGVtIGRpdiwuZ29vZy10ZS1tZW51Mi1pdGVtLXNlbGVjdGVkIGRpdntwYWRkaW5nOjRweH0uZ29vZy10ZS1tZW51Mi1pdGVtIC5pbmRpY2F0b3J7ZGlzcGxheTpub25lfS5nb29nLXRlLW1lbnUyLWl0ZW0tc2VsZWN0ZWQgLmluZGljYXRvcntkaXNwbGF5OmF1dG99Lmdvb2ctdGUtbWVudTItaXRlbS1zZWxlY3RlZCAudGV4dHtwYWRkaW5nLWxlZnQ6NHB4O3BhZGRpbmctcmlnaHQ6NHB4fS5nb29nLXRlLW1lbnUyLWl0ZW0sLmdvb2ctdGUtbWVudTItaXRlbS1zZWxlY3RlZHt0ZXh0LWRlY29yYXRpb246bm9uZX0uZ29vZy10ZS1tZW51Mi1pdGVtIGRpdiwuZ29vZy10ZS1tZW51Mi1pdGVtOmxpbmsgZGl2LC5nb29nLXRlLW1lbnUyLWl0ZW06dmlzaXRlZCBkaXYsLmdvb2ctdGUtbWVudTItaXRlbTphY3RpdmUgZGl2e2NvbG9yOiMwMDAwY2M7YmFja2dyb3VuZDojZmZmZmZmfS5nb29nLXRlLW1lbnUyLWl0ZW06aG92ZXIgZGl2e2NvbG9yOiNmZmZmZmY7YmFja2dyb3VuZDojMzM2NmNjfS5nb29nLXRlLW1lbnUyLWl0ZW0tc2VsZWN0ZWQgZGl2LC5nb29nLXRlLW1lbnUyLWl0ZW0tc2VsZWN0ZWQ6bGluayBkaXYsLmdvb2ctdGUtbWVudTItaXRlbS1zZWxlY3RlZDp2aXNpdGVkIGRpdiwuZ29vZy10ZS1tZW51Mi1pdGVtLXNlbGVjdGVkOmhvdmVyIGRpdiwuZ29vZy10ZS1tZW51Mi1pdGVtLXNlbGVjdGVkOmFjdGl2ZSBkaXZ7Y29sb3I6IzAwMDtmb250LXdlaWdodDpib2xkfS5nb29nLXRlLWJhbGxvb257YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTstbW96LWJvcmRlci1yYWRpdXM6MTBweDtib3JkZXItcmFkaXVzOjEwcHh9Lmdvb2ctdGUtYmFsbG9vbi1mcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCAjNmI5MGRhOy1tb3otYm94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTk5OTk7LXdlYmtpdC1ib3gtc2hhZG93OjAgM3B4IDhweCAycHggIzk5OTk5OTtib3gtc2hhZG93OjAgM3B4IDhweCAycHggIzk5OTk5OTstbW96LWJvcmRlci1yYWRpdXM6OHB4O2JvcmRlci1yYWRpdXM6OHB4fS5nb29nLXRlLWJhbGxvb24gaW1ne2JvcmRlcjpub25lfS5nb29nLXRlLWJhbGxvb24tdGV4dHttYXJnaW4tdG9wOjZweH0uZ29vZy10ZS1iYWxsb29uLXppcHB5e21hcmdpbi10b3A6NnB4O3doaXRlLXNwYWNlOm5vd3JhcH0uZ29vZy10ZS1iYWxsb29uLXppcHB5ICp7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWJhbGxvb24temlwcHkgLm1pbnVze2JhY2tncm91bmQtaW1hZ2U6dXJsKC8vd3d3Lmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9Lmdvb2ctdGUtYmFsbG9vbi16aXBweSAucGx1c3tiYWNrZ3JvdW5kLWltYWdlOnVybCgvL3d3dy5nb29nbGUuY29tL2ltYWdlcy96aXBweV9wbHVzX3NtLmdpZil9Lmdvb2ctdGUtYmFsbG9vbi16aXBweSBzcGFue2NvbG9yOiMwMGM7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcjttYXJnaW46MCA0cHh9Lmdvb2ctdGUtYmFsbG9vbi1mb3Jte21hcmdpbjo2cHggMCAwIDB9Lmdvb2ctdGUtYmFsbG9vbi1mb3JtIGZvcm17bWFyZ2luOjB9Lmdvb2ctdGUtYmFsbG9vbi1mb3JtIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uZ29vZy10ZS1iYWxsb29uLWZvb3RlcnttYXJnaW46NnB4IDAgNHB4IDB9Lmdvb2ctdGUtc3Bpbm5lci1wb3N7ei1pbmRleDoxMDAwO3Bvc2l0aW9uOmZpeGVkO3RyYW5zaXRpb24tZGVsYXk6MC42cztsZWZ0Oi0xMDAwcHg7dG9wOi0xMDAwcHh9Lmdvb2ctdGUtc3Bpbm5lci1hbmltYXRpb257YmFja2dyb3VuZDojY2NjO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I2ZmZiB1cmwoLy93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAwLjZzIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjQpO29wYWNpdHk6MH0uZ29vZy10ZS1zcGlubmVyLWFuaW1hdGlvbi1zaG93e3RyYW5zZm9ybTpzY2FsZSgwLjUpO29wYWNpdHk6MX0uZ29vZy10ZS1zcGlubmVye21hcmdpbjoycHggMCAwIDJweDthbmltYXRpb246Z29vZy10ZS1zcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBnb29nLXRlLXNwaW5uZXItcm90YXRvcnswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfX0uZ29vZy10ZS1zcGlubmVyLXBhdGh7c3Ryb2tlLWRhc2hhcnJheToxODc7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2U6IzQyODVmNDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjthbmltYXRpb246Z29vZy10ZS1zcGlubmVyLWRhc2ggMS40cyBlYXNlLWluLW91dCBpbmZpbml0ZX1Aa2V5ZnJhbWVzIGdvb2ctdGUtc3Bpbm5lci1kYXNoezAle3N0cm9rZS1kYXNob2Zmc2V0OjE4N301MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6NDYuNzU7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MTg3O3RyYW5zZm9ybTpyb3RhdGUoNDUwZGVnKX19I2dvb2ctZ3QtdHQgaHRtbCwjZ29vZy1ndC10dCBib2R5LCNnb29nLWd0LXR0IGRpdiwjZ29vZy1ndC10dCBzcGFuLCNnb29nLWd0LXR0IGlmcmFtZSwjZ29vZy1ndC10dCBoMSwjZ29vZy1ndC10dCBoMiwjZ29vZy1ndC10dCBoMywjZ29vZy1ndC10dCBoNCwjZ29vZy1ndC10dCBoNSwjZ29vZy1ndC10dCBoNiwjZ29vZy1ndC10dCBwLCNnb29nLWd0LXR0IGEsI2dvb2ctZ3QtdHQgaW1nLCNnb29nLWd0LXR0IG9sLCNnb29nLWd0LXR0IHVsLCNnb29nLWd0LXR0IGxpLCNnb29nLWd0LXR0IHRhYmxlLCNnb29nLWd0LXR0IGZvcm0sI2dvb2ctZ3QtdHQgdGJvZHksI2dvb2ctZ3QtdHQgdHIsI2dvb2ctZ3QtdHQgdGR7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2ZvbnQtc2l6ZToxMDAlO2ZvbnQ6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmxlZnQ7bGluZS1oZWlnaHQ6bm9ybWFsfSNnb29nLWd0LXR0IG9sLCNnb29nLWd0LXR0IHVse2xpc3Qtc3R5bGU6bm9uZX0jZ29vZy1ndC10dCB0YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MH0jZ29vZy1ndC10dCBjYXB0aW9uLCNnb29nLWd0LXR0IHRoLCNnb29nLWd0LXR0IHRke3RleHQtYWxpZ246bGVmdDtmb250LXdlaWdodDpub3JtYWx9I2dvb2ctZ3QtdHQgaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9ZGl2I2dvb2ctZ3QtdHR7cGFkZGluZzoxMHB4IDE0cHh9I2dvb2ctZ3QtdHR7Y29sb3I6IzIyMjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWVlO2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTstbW96LWJveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTstd2Via2l0LWJveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHQ7d2lkdGg6NDIwcHg7cGFkZGluZzoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDB9I2dvb2ctZ3QtdHQgLm9yaWdpbmFsLXRleHQsLmd0LWhsLWxheWVye2NsZWFyOmJvdGg7Zm9udC1zaXplOjEwcHQ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpqdXN0aWZ5O3dpZHRoOjEwMCV9I2dvb2ctZ3QtdHQgLnRpdGxle2NvbG9yOiM5OTk7Zm9udC1mYW1pbHk6YXJpYWwsc2Fucy1zZXJpZjttYXJnaW46NHB4IDA7dGV4dC1hbGlnbjpsZWZ0fSNnb29nLWd0LXR0IC5jbG9zZS1idXR0b257ZGlzcGxheTpub25lfSNnb29nLWd0LXR0IC5sb2dve2Zsb2F0OmxlZnQ7bWFyZ2luOjBweH0jZ29vZy1ndC10dCAuYWN0aXZpdHktbGlua3N7ZGlzcGxheTppbmxpbmUtYmxvY2t9I2dvb2ctZ3QtdHQgLnN0YXJ0ZWQtYWN0aXZpdHktY29udGFpbmVye2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlfSNnb29nLWd0LXR0IC5hY3Rpdml0eS1yb290e21hcmdpbi10b3A6MjBweH0jZ29vZy1ndC10dCAubGVmdHtmbG9hdDpsZWZ0fSNnb29nLWd0LXR0IC5yaWdodHtmbG9hdDpyaWdodH0jZ29vZy1ndC10dCAuYm90dG9te21pbi1oZWlnaHQ6MTVweDtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MSV9I2dvb2ctZ3QtdHQgLnN0YXR1cy1tZXNzYWdle2JhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCMyOTkxMGQgMCUsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjMjk5MTBkIDAlLCMyMGFmMGUgMTAwJSk7YmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCMyOTkxMGQgMCUsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCMyOTkxMGQgMCUsIzIwYWYwZSAxMDAlKTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0b3AsIzI5OTEwZCAwJSwjMjBhZjBlIDEwMCUpO2JhY2tncm91bmQ6IzI5OTEwZDtib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzppbnNldCAwcHggMnB4IDJweCAjMWU2NjA5Oy1tb3otYm94LXNoYWRvdzppbnNldCAwcHggMnB4IDJweCAjMWU2NjA5Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggMnB4IDJweCAjMWU2NjA5O2NvbG9yOndoaXRlO2ZvbnQtc2l6ZTo5cHQ7Zm9udC13ZWlnaHQ6Ym9sZGVyO21hcmdpbi10b3A6MTJweDtwYWRkaW5nOjZweDt0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjMWU2NjA5fSNnb29nLWd0LXR0IC5hY3Rpdml0eS1saW5re2NvbG9yOiMxMTU1Y2M7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7bWFyZ2luLXJpZ2h0OjE1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmV9I2dvb2ctZ3QtdHQgdGV4dGFyZWF7Zm9udC1mYW1pbHk6YXJpYWw7cmVzaXplOnZlcnRpY2FsO3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToxMHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czoxcHg7LW1vei1ib3JkZXItcmFkaXVzOjFweDtib3JkZXItcmFkaXVzOjFweDtib3JkZXI6MXB4IHNvbGlkICNkOWQ5ZDk7Ym9yZGVyLXRvcDoxcHggc29saWQgc2lsdmVyO2ZvbnQtc2l6ZToxM3B4O2hlaWdodDphdXRvO292ZXJmbG93LXk6YXV0bztwYWRkaW5nOjFweH0jZ29vZy1ndC10dCB0ZXh0YXJlYTpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4zKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4zKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7Ym9yZGVyOjFweCBzb2xpZCAjNGQ5MGZlO291dGxpbmU6bm9uZX0jZ29vZy1ndC10dCAuYWN0aXZpdHktY2FuY2Vse21hcmdpbi1yaWdodDoxMHB4fSNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybXttaW4taGVpZ2h0OjI1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctdG9wOjhweH0jZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm17bWFyZ2luLWJvdHRvbTo1cHg7bWFyZ2luLWJvdHRvbTowcHh9I2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDo1NHB4OyptaW4td2lkdGg6NzBweDtib3JkZXI6MXB4IHNvbGlkICNkY2RjZGM7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzQ0NDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDpib2xkO2hlaWdodDoyN3B4O291dGxpbmU6MDtwYWRkaW5nOjAgOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoyN3B4O21hcmdpbjowIDE2cHggMCAwO2JveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpOy1tb3otYm94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstd2Via2l0LWJvcmRlci1yYWRpdXM6MnB4Oy1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHg7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAwLjIxOHM7LW1vei10cmFuc2l0aW9uOmFsbCAwLjIxOHM7LW8tdHJhbnNpdGlvbjphbGwgMC4yMThzO3RyYW5zaXRpb246YWxsIDAuMjE4cztiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKCNmNWY1ZjUpLHRvKCNmMWYxZjEpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmNWY1ZjUsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9I2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0OmhvdmVye2JvcmRlcjoxcHggc29saWQgI2M2YzZjNjtjb2xvcjojMjIyOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4wczstbW96LXRyYW5zaXRpb246YWxsIDAuMHM7LW8tdHJhbnNpdGlvbjphbGwgMC4wczt0cmFuc2l0aW9uOmFsbCAwLjBzO2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGZyb20oI2Y4ZjhmOCksdG8oI2YxZjFmMSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCNmOGY4ZjgsI2YxZjFmMSl9I2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0OmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNjNmM2YzY7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmNmY2ZjY7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKCNmNmY2ZjYpLHRvKCNmMWYxZjEpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmNmY2ZjYsI2YxZjFmMSk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjZjZmNmY2LCNmMWYxZjEpfSNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dDpmb2N1cyAjZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQuZm9jdXMgI2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0OmFjdGl2ZSwjZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQ6Zm9jdXM6YWN0aXZlLCNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dDouZm9jdXM6YWN0aXZle2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsMC41KTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsMC41KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsMC41KX0jZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQ6Zm9jdXMsI2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0LmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7ei1pbmRleDo0IWltcG9ydGFudH0jZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQuc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWVlZWVlO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sZnJvbSgjZWVlZWVlKSx0bygjZTBlMGUwKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2VlZWVlZSwjZTBlMGUwKTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjZWVlZWVlLCNlMGUwZTApO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsI2VlZWVlZSwjZTBlMGUwKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2VlZWVlZSwjZTBlMGUwKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0b3AsI2VlZWVlZSwjZTBlMGUwKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IDFweCAycHggcmdiYSgwLDAsMCwwLjEpOy1tb3otYm94LXNoYWRvdzppbnNldCAwcHggMXB4IDJweCByZ2JhKDAsMCwwLDAuMSk7Ym94LXNoYWRvdzppbnNldCAwcHggMXB4IDJweCByZ2JhKDAsMCwwLDAuMSk7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2NvbG9yOiMzMzN9I2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0LmFjdGl2aXR5LXN1Ym1pdHtjb2xvcjp3aGl0ZTtib3JkZXItY29sb3I6IzMwNzllZDtiYWNrZ3JvdW5kLWNvbG9yOiM0ZDkwZmU7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9tKCM0ZDkwZmUpLHRvKCM0Nzg3ZWQpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzQ3ODdlZCk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpfSNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dC5hY3Rpdml0eS1zdWJtaXQ6aG92ZXIgI2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0LmFjdGl2aXR5LXN1Ym1pdDpmb2N1cywjZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQuYWN0aXZpdHktc3VibWl0LmZvY3VzICNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dC5hY3Rpdml0eS1zdWJtaXQ6YWN0aXZle2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzM1N2FlODtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGZyb20oIzRkOTBmZSksdG8oIzM1N2FlOCkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzM1N2FlOCk7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjMzU3YWU4KTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzM1N2FlOCk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzM1N2FlOCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG9wLCM0ZDkwZmUsIzM1N2FlOCl9I2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0LmFjdGl2aXR5LXN1Ym1pdDpob3Zlcntib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDBweCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMHB4IDFweCAxcHggcmdiYSgwLDAsMCwwLjEpOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwcHggMXB4IDFweCByZ2JhKDAsMCwwLDAuMSl9I2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0OmZvY3VzLCNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dC5mb2N1cywjZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQ6YWN0aXZlLCNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dDpob3ZlciwjZ29vZy1ndC10dCAudHJhbnNsYXRlLWZvcm0gLmFjdGl2aXR5LWZvcm0gaW5wdXQuYWN0aXZpdHktc3VibWl0OmZvY3VzLCNnb29nLWd0LXR0IC50cmFuc2xhdGUtZm9ybSAuYWN0aXZpdHktZm9ybSBpbnB1dC5hY3Rpdml0eS1zdWJtaXQuZm9jdXMsI2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0LmFjdGl2aXR5LXN1Ym1pdDphY3RpdmUsI2dvb2ctZ3QtdHQgLnRyYW5zbGF0ZS1mb3JtIC5hY3Rpdml0eS1mb3JtIGlucHV0LmFjdGl2aXR5LXN1Ym1pdDpob3Zlcntib3JkZXItY29sb3I6IzMwNzllZH0jZ29vZy1ndC10dCAuZ3JheXtjb2xvcjojOTk5O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWZ9I2dvb2ctZ3QtdHQgLmFsdC1oZWxwZXItdGV4dHtjb2xvcjojOTk5O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luOjE1cHggMHB4IDVweCAwcHh9I2dvb2ctZ3QtdHQgLmFsdC1lcnJvci10ZXh0e2NvbG9yOiM4MDA7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZTo5cHR9Lmdvb2ctdGV4dC1oaWdobGlnaHR7YmFja2dyb3VuZC1jb2xvcjojYzlkN2YxOy13ZWJraXQtYm94LXNoYWRvdzoycHggMnB4IDRweCAjOTk5OWFhOy1tb3otYm94LXNoYWRvdzoycHggMnB4IDRweCAjOTk5OWFhO2JveC1zaGFkb3c6MnB4IDJweCA0cHggIzk5OTlhYTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmV9I2dvb2ctZ3QtdHQgLmFsdC1tZW51Lmdvb2ctbWVudXtiYWNrZ3JvdW5kOiNmZmZmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkZGRkOy13ZWJraXQtYm94LXNoYWRvdzowcHggM3B4IDNweCAjODg4Oy1tb3otYm94LXNoYWRvdzowcHggMnB4IDIwcHggIzg4ODtib3gtc2hhZG93OjBweCAycHggNHB4ICM5OWE7bWluLXdpZHRoOjA7b3V0bGluZTpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjIwMDB9I2dvb2ctZ3QtdHQgLmFsdC1tZW51IC5nb29nLW1lbnVpdGVte2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MnB4IDVweCA1cHg7bWFyZ2luLXJpZ2h0OjBweDtib3JkZXItc3R5bGU6bm9uZX0jZ29vZy1ndC10dCAuYWx0LW1lbnUgZGl2Lmdvb2ctbWVudWl0ZW06aG92ZXJ7YmFja2dyb3VuZDojZGRkfSNnb29nLWd0LXR0IC5hbHQtbWVudSAuZ29vZy1tZW51aXRlbSBoMXtmb250LXNpemU6MTAwJTtmb250LXdlaWdodDpib2xkO21hcmdpbjo0cHggMHB4fSNnb29nLWd0LXR0IC5hbHQtbWVudSAuZ29vZy1tZW51aXRlbSBzdHJvbmd7Y29sb3I6IzM0NWFhZH0jZ29vZy1ndC10dCAuZ29vZy1zdWJtZW51LWFycm93e3RleHQtYWxpZ246cmlnaHQ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDtsZWZ0OmF1dG99I2dvb2ctZ3QtdHQgLmdvb2ctbWVudWl0ZW0tcnRsIC5nb29nLXN1Ym1lbnUtYXJyb3d7dGV4dC1hbGlnbjpsZWZ0O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDphdXRvfSNnb29nLWd0LXR0IC5ndC1obC10ZXh0LCNnb29nLWd0LXR0IC50cmFucy10YXJnZXQtaGlnaGxpZ2h0e2JhY2tncm91bmQtY29sb3I6I2YxZWEwMDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3gtc2hhZG93OnJnYmEoMCwwLDAsLjUpIDNweCAzcHggNHB4Oy13ZWJraXQtYm94LXNoYWRvdzpyZ2JhKDAsMCwwLC41KSAzcHggM3B4IDRweDtib3gtc2hhZG93OnJnYmEoMCwwLDAsLjUpIDNweCAzcHggNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfSNnb29nLWd0LXR0IC50cmFucy10YXJnZXQtaGlnaGxpZ2h0e2NvbG9yOiMyMjJ9I2dvb2ctZ3QtdHQgLmd0LWhsLWxheWVye2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0jZ29vZy1ndC10dCAudHJhbnMtdGFyZ2V0LCNnb29nLWd0LXR0IC50cmFucy10YXJnZXQgLnRyYW5zLXRhcmdldC1oaWdobGlnaHR7YmFja2dyb3VuZC1jb2xvcjojYzlkN2YxO2JvcmRlci1yYWRpdXM6NHB4IDRweCAwcHggMHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDBweCAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjRweCA0cHggMHB4IDBweDstbW96LWJveC1zaGFkb3c6cmdiYSgwLDAsMCwuNSkgM3B4IDNweCA0cHg7LXdlYmtpdC1ib3gtc2hhZG93OnJnYmEoMCwwLDAsLjUpIDNweCAzcHggNHB4O2JveC1zaGFkb3c6cmdiYSgwLDAsMCwuNSkgM3B4IDNweCA0cHg7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAzcHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfSNnb29nLWd0LXR0IHNwYW46Zm9jdXN7b3V0bGluZTpub25lfSNnb29nLWd0LXR0IC50cmFucy1lZGl0e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjFweCBzb2xpZCAjNGQ5MGZlO2JvcmRlci1yYWRpdXM6MGVtOy13ZWJraXQtYm9yZGVyLXJhZGl1czowZW07LW1vei1ib3JkZXItcmFkaXVzOjBlbTttYXJnaW46LTJweDtwYWRkaW5nOjFweH0jZ29vZy1ndC10dCAuZ3QtdHJhbnMtaGlnaGxpZ2h0LWx7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkIHJlZDttYXJnaW4tbGVmdDotMnB4fSNnb29nLWd0LXR0IC5ndC10cmFucy1oaWdobGlnaHQtcntib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJlZDttYXJnaW4tcmlnaHQ6LTJweH0jZ29vZy1ndC10dCAjYWx0LWlucHV0e3BhZGRpbmc6MnB4fSNnb29nLWd0LXR0ICNhbHQtaW5wdXQtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjJweCAycHggM3B4O21hcmdpbjowO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMzMzO2JvcmRlcjoxcHggc29saWQgI2Q5ZDlkOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYzBjMGMwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcDtoZWlnaHQ6MjFweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjFweH0jZ29vZy1ndC10dCAjYWx0LWlucHV0LXRleHQ6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjYjliOWI5O2JvcmRlci10b3A6MXB4IHNvbGlkICNhMGEwYTA7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAxcHggMnB4IHJnYmEoMCwwLDAsMC4xKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMHB4IDFweCAycHggcmdiYSgwLDAsMCwwLjEpO2JveC1zaGFkb3c6aW5zZXQgMHB4IDFweCAycHggcmdiYSgwLDAsMCwwLjEpfSNnb29nLWd0LXR0ICNhbHQtaW5wdXQtdGV4dDpmb2N1c3std2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IDFweCAycHggcmdiYSgwLDAsMCwwLjMpOy1tb3otYm94LXNoYWRvdzppbnNldCAwcHggMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7Ym94LXNoYWRvdzppbnNldCAwcHggMXB4IDJweCByZ2JhKDAsMCwwLDAuMyk7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzRkOTBmZX0jZ29vZy1ndC10dCAjYWx0LWlucHV0LXN1Ym1pdHtmb250LXNpemU6MTFweDtwYWRkaW5nOjJweCA2cHggM3B4O21hcmdpbjowIDAgMCAycHg7aGVpZ2h0OjIxcHh9In0sICJoZWFkZXJzU2l6ZSI6IDE2MjYsICJib2R5U2l6ZSI6IDM2NDYsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDUyNzJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDA3LCAiY29ubmVjdCI6IDQuMzE4LCAic3NsIjogMTAuMDMzLCAic2VuZCI6IDAsICJ3YWl0IjogOTA2LjUxMSwgInJlY2VpdmUiOiA1LjM3M30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI2WiIsICJ0aW1lIjogMTc4Ni4zNDIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvcHYiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDUyOSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIi5wOWJWVzJPOExsOUVNQXdPdFoxeUp0TmQ5VWlDbnYyMU9CeG80WWlpNWctMTY4NDk0Mjg3Ny0wLUFkRlNRRElZMkd5eUE4czdHME91Tkg2Vm1QNWFBTnNwKzRENU5zSldoVFQ2YVpRV2NaZTNzbXZjR2FMN0ZKQm4yOE0vOUpoZTVyS094cTRlTndLM2NsYz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1NmZiZTQzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICI0MyJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogImltYWdlL2dpZiJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE3IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcIlFtY2pzUHJ0M1ZoVGNCUGc1RjdlVFNmeHNuUVRuS0h0cUV0N1pwQVFCS3VtVFZcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT0ucDliVlcyTzhMbDlFTUF3T3RaMXlKdE5kOVVpQ252MjFPQnhvNFlpaTVnLTE2ODQ5NDI4NzctMC1BZEZTUURJWTJHeXlBOHM3RzBPdU5INlZtUDVhQU5zcCs0RDVOc0pXaFRUNmFaUVdjWmUzc212Y0dhTDdGSkJuMjhNLzlKaGU1cktPeHE0ZU53SzNjbGM9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTcgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3B2In0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWNqc1BydDNWaFRjQlBnNUY3ZVRTZnhzblFUbktIdHFFdDdacEFRQkt1bVRWIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA0MywgIm1pbWVUeXBlIjogImltYWdlL2dpZiIsICJjb21wcmVzc2lvbiI6IDAsICJ0ZXh0IjogIlIwbEdPRGxoQVFBQkFJQUFBUC8vL3dBQUFDSDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUNSQUVBT3c9PSIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMTU5MiwgImJvZHlTaXplIjogNDMsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE2MzV9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAzNS4yMTcsICJyZWNlaXZlIjogMTc1MS4xMjV9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyNloiLCAidGltZSI6IDQ5LjUxMDk5OTk5OTk5OTk5NiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9qcXVlcnktMS4xMi4zLm1pbi5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0OTUsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJlV3EzMzZDbld6OWp2OTgzRlJsa0l1UVRfRl9kQ3E2UzZCU0E1MzJPSFFZLTE2ODQ5NDI4NzUtMC1BYzdqK2ZRcUNLVzRQMFUwbW9kMHVnOGUxcjdvbzlHaFF4TmJ4TGg0TUpGRlhpdkk4ZEE0bUd3WksybC9kSm1XUDFRSWRlTGs5ZDRvNS96R3ZEdzRlZlE9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQwIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGU4ODViMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE1IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1ZTEcyNXRjTkhKRjdIbTIzcWJpdFNhVzZWV1BMNlFia2J5YlBIVzNnRkoxTlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPWVXcTMzNkNuV3o5anY5ODNGUmxrSXVRVF9GX2RDcTZTNkJTQTUzMk9IUVktMTY4NDk0Mjg3NS0wLUFjN2orZlFxQ0tXNFAwVTBtb2QwdWc4ZTFyN29vOUdoUXhOYnhMaDRNSkZGWGl2SThkQTRtR3daSzJsL2RKbVdQMVFJZGVMazlkNG81L3pHdkR3NGVmUT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvanF1ZXJ5LTEuMTIuMy5taW4uanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtWUxHMjV0Y05ISkY3SG0yM3FiaXRTYVc2VldQTDZRYmtieWJQSFczZ0ZKMU4ifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDk3MTc5LCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsICJjb21wcmVzc2lvbiI6IDYzMjkzLCAidGV4dCI6ICIvKiEgalF1ZXJ5IHYxLjEyLjMgfCAoYykgalF1ZXJ5IEZvdW5kYXRpb24gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi9cbiFmdW5jdGlvbihhLGIpe1wib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiKTtyZXR1cm4gYihhKX06YihhKX0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9YS5kb2N1bWVudCxlPWMuc2xpY2UsZj1jLmNvbmNhdCxnPWMucHVzaCxoPWMuaW5kZXhPZixpPXt9LGo9aS50b1N0cmluZyxrPWkuaGFzT3duUHJvcGVydHksbD17fSxtPVwiMS4xMi4zXCIsbj1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbi5mbi5pbml0KGEsYil9LG89L15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLHA9L14tbXMtLyxxPS8tKFtcXGRhLXpdKS9naSxyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07bi5mbj1uLnByb3RvdHlwZT17anF1ZXJ5Om0sY29uc3RydWN0b3I6bixzZWxlY3RvcjpcIlwiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTplLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1uLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiBuLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhuLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmI+Yz9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6Zyxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LG4uZXh0ZW5kPW4uZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKFwiYm9vbGVhblwiPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSxcIm9iamVjdFwiPT10eXBlb2YgZ3x8bi5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09PWkmJihnPXRoaXMsaC0tKTtpPmg7aCsrKWlmKG51bGwhPShlPWFyZ3VtZW50c1toXSkpZm9yKGQgaW4gZSlhPWdbZF0sYz1lW2RdLGchPT1jJiYoaiYmYyYmKG4uaXNQbGFpbk9iamVjdChjKXx8KGI9bi5pc0FycmF5KGMpKSk/KGI/KGI9ITEsZj1hJiZuLmlzQXJyYXkoYSk/YTpbXSk6Zj1hJiZuLmlzUGxhaW5PYmplY3QoYSk/YTp7fSxnW2RdPW4uZXh0ZW5kKGosZixjKSk6dm9pZCAwIT09YyYmKGdbZF09YykpO3JldHVybiBnfSxuLmV4dGVuZCh7ZXhwYW5kbzpcImpRdWVyeVwiKyhtK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xcRC9nLFwiXCIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxub29wOmZ1bmN0aW9uKCl7fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVyblwiZnVuY3Rpb25cIj09PW4udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm5cImFycmF5XCI9PT1uLnR5cGUoYSl9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hJiZhPT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEudG9TdHJpbmcoKTtyZXR1cm4hbi5pc0FycmF5KGEpJiZiLXBhcnNlRmxvYXQoYikrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHxcIm9iamVjdFwiIT09bi50eXBlKGEpfHxhLm5vZGVUeXBlfHxuLmlzV2luZG93KGEpKXJldHVybiExO3RyeXtpZihhLmNvbnN0cnVjdG9yJiYhay5jYWxsKGEsXCJjb25zdHJ1Y3RvclwiKSYmIWsuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxcImlzUHJvdG90eXBlT2ZcIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYoIWwub3duRmlyc3QpZm9yKGIgaW4gYSlyZXR1cm4gay5jYWxsKGEsYik7Zm9yKGIgaW4gYSk7cmV0dXJuIHZvaWQgMD09PWJ8fGsuY2FsbChhLGIpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErXCJcIjpcIm9iamVjdFwiPT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT10eXBlb2YgYT9pW2ouY2FsbChhKV18fFwib2JqZWN0XCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmbi50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHAsXCJtcy1cIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTA7aWYocyhhKSl7Zm9yKGM9YS5sZW5ndGg7Yz5kO2QrKylpZihiLmNhbGwoYVtkXSxkLGFbZF0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoZCBpbiBhKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9cIlwiOihhK1wiXCIpLnJlcGxhY2UobyxcIlwiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLFwic3RyaW5nXCI9PXR5cGVvZiBhP1thXTphKTpnLmNhbGwoYyxhKSksY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYil7aWYoaClyZXR1cm4gaC5jYWxsKGIsYSxjKTtmb3IoZD1iLmxlbmd0aCxjPWM/MD5jP01hdGgubWF4KDAsZCtjKTpjOjA7ZD5jO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGIpe3ZhciBjPStiLmxlbmd0aCxkPTAsZT1hLmxlbmd0aDt3aGlsZShjPmQpYVtlKytdPWJbZCsrXTtpZihjIT09Yyl3aGlsZSh2b2lkIDAhPT1iW2RdKWFbZSsrXT1iW2QrK107cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztnPmY7ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZz0wLGg9W107aWYocyhhKSlmb3IoZD1hLmxlbmd0aDtkPmc7ZysrKWU9YihhW2ddLGcsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO2Vsc2UgZm9yKGcgaW4gYSllPWIoYVtnXSxnLGMpLG51bGwhPWUmJmgucHVzaChlKTtyZXR1cm4gZi5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxmO3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBiJiYoZj1hW2JdLGI9YSxhPWYpLG4uaXNGdW5jdGlvbihhKT8oYz1lLmNhbGwoYXJndW1lbnRzLDIpLGQ9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGUuY2FsbChhcmd1bWVudHMpKSl9LGQuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxuLmd1aWQrKyxkKTp2b2lkIDB9LG5vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDpsfSksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYobi5mbltTeW1ib2wuaXRlcmF0b3JdPWNbU3ltYm9sLml0ZXJhdG9yXSksbi5lYWNoKFwiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2xcIi5zcGxpdChcIiBcIiksZnVuY3Rpb24oYSxiKXtpW1wiW29iamVjdCBcIitiK1wiXVwiXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiBzKGEpe3ZhciBiPSEhYSYmXCJsZW5ndGhcImluIGEmJmEubGVuZ3RoLGM9bi50eXBlKGEpO3JldHVyblwiZnVuY3Rpb25cIj09PWN8fG4uaXNXaW5kb3coYSk/ITE6XCJhcnJheVwiPT09Y3x8MD09PWJ8fFwibnVtYmVyXCI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciB0PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9XCJzaXp6bGVcIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2EoKSx6PWdhKCksQT1nYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPTE8PDMxLEQ9e30uaGFzT3duUHJvcGVydHksRT1bXSxGPUUucG9wLEc9RS5wdXNoLEg9RS5wdXNoLEk9RS5zbGljZSxKPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtkPmM7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVybi0xfSxLPVwiY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWRcIixMPVwiW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZl1cIixNPVwiKD86XFxcXFxcXFwufFtcXFxcdy1dfFteXFxcXHgwMC1cXFxceGEwXSkrXCIsTj1cIlxcXFxbXCIrTCtcIiooXCIrTStcIikoPzpcIitMK1wiKihbKl4kfCF+XT89KVwiK0wrXCIqKD86JygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwifChcIitNK1wiKSl8KVwiK0wrXCIqXFxcXF1cIixPPVwiOihcIitNK1wiKSg/OlxcXFwoKCgnKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcJ10pKiknfFxcXCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFxcXFwiXSkqKVxcXCIpfCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpW1xcXFxdXXxcIitOK1wiKSopfC4qKVxcXFwpfClcIixQPW5ldyBSZWdFeHAoTCtcIitcIixcImdcIiksUT1uZXcgUmVnRXhwKFwiXlwiK0wrXCIrfCgoPzpefFteXFxcXFxcXFxdKSg/OlxcXFxcXFxcLikqKVwiK0wrXCIrJFwiLFwiZ1wiKSxSPW5ldyBSZWdFeHAoXCJeXCIrTCtcIiosXCIrTCtcIipcIiksUz1uZXcgUmVnRXhwKFwiXlwiK0wrXCIqKFs+K35dfFwiK0wrXCIpXCIrTCtcIipcIiksVD1uZXcgUmVnRXhwKFwiPVwiK0wrXCIqKFteXFxcXF0nXFxcIl0qPylcIitMK1wiKlxcXFxdXCIsXCJnXCIpLFU9bmV3IFJlZ0V4cChPKSxWPW5ldyBSZWdFeHAoXCJeXCIrTStcIiRcIiksVz17SUQ6bmV3IFJlZ0V4cChcIl4jKFwiK00rXCIpXCIpLENMQVNTOm5ldyBSZWdFeHAoXCJeXFxcXC4oXCIrTStcIilcIiksVEFHOm5ldyBSZWdFeHAoXCJeKFwiK00rXCJ8WypdKVwiKSxBVFRSOm5ldyBSZWdFeHAoXCJeXCIrTiksUFNFVURPOm5ldyBSZWdFeHAoXCJeXCIrTyksQ0hJTEQ6bmV3IFJlZ0V4cChcIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcXFwoXCIrTCtcIiooZXZlbnxvZGR8KChbKy1dfCkoXFxcXGQqKW58KVwiK0wrXCIqKD86KFsrLV18KVwiK0wrXCIqKFxcXFxkKyl8KSlcIitMK1wiKlxcXFwpfClcIixcImlcIiksYm9vbDpuZXcgUmVnRXhwKFwiXig/OlwiK0srXCIpJFwiLFwiaVwiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cChcIl5cIitMK1wiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFxcXChcIitMK1wiKigoPzotXFxcXGQpP1xcXFxkKilcIitMK1wiKlxcXFwpfCkoPz1bXi1dfCQpXCIsXCJpXCIpfSxYPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWT0vXmhcXGQkL2ksWj0vXltee10rXFx7XFxzKlxcW25hdGl2ZSBcXHcvLCQ9L14oPzojKFtcXHctXSspfChcXHcrKXxcXC4oW1xcdy1dKykpJC8sXz0vWyt+XS8sYWE9Lyd8XFxcXC9nLGJhPW5ldyBSZWdFeHAoXCJcXFxcXFxcXChbXFxcXGRhLWZdezEsNn1cIitMK1wiP3woXCIrTCtcIil8LilcIixcImlnXCIpLGNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1cIjB4XCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGRhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlYSl7SD17YXBwbHk6RS5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZmEoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3PWImJmIub3duZXJEb2N1bWVudCx4PWI/Yi5ub2RlVHlwZTo5O2lmKGQ9ZHx8W10sXCJzdHJpbmdcIiE9dHlwZW9mIGF8fCFhfHwxIT09eCYmOSE9PXgmJjExIT09eClyZXR1cm4gZDtpZighZSYmKChiP2Iub3duZXJEb2N1bWVudHx8Yjp2KSE9PW4mJm0oYiksYj1ifHxuLHApKXtpZigxMSE9PXgmJihvPSQuZXhlYyhhKSkpaWYoZj1vWzFdKXtpZig5PT09eCl7aWYoIShqPWIuZ2V0RWxlbWVudEJ5SWQoZikpKXJldHVybiBkO2lmKGouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNlIGlmKHcmJihqPXcuZ2V0RWxlbWVudEJ5SWQoZikpJiZ0KGIsaikmJmouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNle2lmKG9bMl0pcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChmPW9bM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gSC5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksZH1pZihjLnFzYSYmIUFbYStcIiBcIl0mJighcXx8IXEudGVzdChhKSkpe2lmKDEhPT14KXc9YixzPWE7ZWxzZSBpZihcIm9iamVjdFwiIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXsoaz1iLmdldEF0dHJpYnV0ZShcImlkXCIpKT9rPWsucmVwbGFjZShhYSxcIlxcXFwkJlwiKTpiLnNldEF0dHJpYnV0ZShcImlkXCIsaz11KSxyPWcoYSksaD1yLmxlbmd0aCxsPVYudGVzdChrKT9cIiNcIitrOlwiW2lkPSdcIitrK1wiJ11cIjt3aGlsZShoLS0pcltoXT1sK1wiIFwiK3FhKHJbaF0pO3M9ci5qb2luKFwiLFwiKSx3PV8udGVzdChhKSYmb2EoYi5wYXJlbnROb2RlKXx8Yn1pZihzKXRyeXtyZXR1cm4gSC5hcHBseShkLHcucXVlcnlTZWxlY3RvckFsbChzKSksZH1jYXRjaCh5KXt9ZmluYWxseXtrPT09dSYmYi5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKX19fXJldHVybiBpKGEucmVwbGFjZShRLFwiJDFcIiksYixkLGUpfWZ1bmN0aW9uIGdhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYytcIiBcIik+ZC5jYWNoZUxlbmd0aCYmZGVsZXRlIGJbYS5zaGlmdCgpXSxiW2MrXCIgXCJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaGEoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBpYShhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamEoYSxiKXt2YXIgYz1hLnNwbGl0KFwifFwiKSxlPWMubGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8QyktKH5hLnNvdXJjZUluZGV4fHxDKTtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbGEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBtYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihcImlucHV0XCI9PT1jfHxcImJ1dHRvblwiPT09YykmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBoYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixoYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIG9hKGEpe3JldHVybiBhJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmYX1jPWZhLnN1cHBvcnQ9e30sZj1mYS5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/XCJIVE1MXCIhPT1iLm5vZGVOYW1lOiExfSxtPWZhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1uLmRvY3VtZW50RWxlbWVudCxwPSFmKG4pLChlPW4uZGVmYXVsdFZpZXcpJiZlLnRvcCE9PWUmJihlLmFkZEV2ZW50TGlzdGVuZXI/ZS5hZGRFdmVudExpc3RlbmVyKFwidW5sb2FkXCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoXCJvbnVubG9hZFwiLGRhKSksYy5hdHRyaWJ1dGVzPWlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmNsYXNzTmFtZT1cImlcIiwhYS5nZXRBdHRyaWJ1dGUoXCJjbGFzc05hbWVcIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudChcIlwiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1aLnRlc3Qobi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9aWEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhbi5nZXRFbGVtZW50c0J5TmFtZXx8IW4uZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoYmEsY2EpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoXCJpZFwiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGJhLGNhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2RlKFwiaWRcIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lP2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk6Yy5xc2E/Yi5xdWVyeVNlbGVjdG9yQWxsKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoXCIqXCI9PT1hKXt3aGlsZShjPWZbZSsrXSkxPT09Yy5ub2RlVHlwZSYmZC5wdXNoKGMpO3JldHVybiBkfXJldHVybiBmfSxkLmZpbmQuQ0xBU1M9Yy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGIpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT1aLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD1cIjxhIGlkPSdcIit1K1wiJz48L2E+PHNlbGVjdCBpZD0nXCIrdStcIi1cXHJcXFxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PlwiLGEucXVlcnlTZWxlY3RvckFsbChcIlttc2FsbG93Y2FwdHVyZV49JyddXCIpLmxlbmd0aCYmcS5wdXNoKFwiWypeJF09XCIrTCtcIiooPzonJ3xcXFwiXFxcIilcIiksYS5xdWVyeVNlbGVjdG9yQWxsKFwiW3NlbGVjdGVkXVwiKS5sZW5ndGh8fHEucHVzaChcIlxcXFxbXCIrTCtcIiooPzp2YWx1ZXxcIitLK1wiKVwiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbaWR+PVwiK3UrXCItXVwiKS5sZW5ndGh8fHEucHVzaChcIn49XCIpLGEucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aHx8cS5wdXNoKFwiOmNoZWNrZWRcIiksYS5xdWVyeVNlbGVjdG9yQWxsKFwiYSNcIit1K1wiKypcIikubGVuZ3RofHxxLnB1c2goXCIuIy4rWyt+XVwiKX0pLGlhKGZ1bmN0aW9uKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudChcImlucHV0XCIpO2Iuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwiaGlkZGVuXCIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKFwibmFtZVwiLFwiRFwiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZT1kXVwiKS5sZW5ndGgmJnEucHVzaChcIm5hbWVcIitMK1wiKlsqXiR8IX5dPz1cIiksYS5xdWVyeVNlbGVjdG9yQWxsKFwiOmVuYWJsZWRcIikubGVuZ3RofHxxLnB1c2goXCI6ZW5hYmxlZFwiLFwiOmRpc2FibGVkXCIpLGEucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIikscS5wdXNoKFwiLC4qOlwiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9Wi50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZpYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLFwiZGl2XCIpLHMuY2FsbChhLFwiW3MhPScnXTp4XCIpLHIucHVzaChcIiE9XCIsTyl9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbihcInxcIikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKFwifFwiKSksYj1aLnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxaLnRlc3Qoby5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJEb2N1bWVudD09PXYmJnQodixiKT8xOms/SihrLGEpLUooayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxmPWIucGFyZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1uPzE6ZT8tMTpmPzE6az9KKGssYSktSihrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGthKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9rYShnW2RdLGhbZF0pOmdbZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZmEubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYShhLG51bGwsbnVsbCxiKX0sZmEubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFQsXCI9JyQxJ11cIiksYy5tYXRjaGVzU2VsZWN0b3ImJnAmJiFBW2IrXCIgXCJdJiYoIXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYShiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGZhLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZELmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoXCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiBcIithKX0sZmEudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWZhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz1cIlwiLGQ9MCxmPWEubm9kZVR5cGU7aWYoZil7aWYoMT09PWZ8fDk9PT1mfHwxMT09PWYpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9ZmEuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGEsbWF0Y2g6VyxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6e1wiPlwiOntkaXI6XCJwYXJlbnROb2RlXCIsZmlyc3Q6ITB9LFwiIFwiOntkaXI6XCJwYXJlbnROb2RlXCJ9LFwiK1wiOntkaXI6XCJwcmV2aW91c1NpYmxpbmdcIixmaXJzdDohMH0sXCJ+XCI6e2RpcjpcInByZXZpb3VzU2libGluZ1wifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0ucmVwbGFjZShiYSxjYSksYVszXT0oYVszXXx8YVs0XXx8YVs1XXx8XCJcIikucmVwbGFjZShiYSxjYSksXCJ+PVwiPT09YVsyXSYmKGFbM109XCIgXCIrYVszXStcIiBcIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksXCJudGhcIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8ZmEuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooXCJldmVuXCI9PT1hWzNdfHxcIm9kZFwiPT09YVszXSkpLGFbNV09KyhhWzddK2FbOF18fFwib2RkXCI9PT1hWzNdKSk6YVszXSYmZmEuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFcuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8XCJcIjpjJiZVLnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoXCIpXCIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoYmEsY2EpLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCIqXCI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthK1wiIFwiXTtyZXR1cm4gYnx8KGI9bmV3IFJlZ0V4cChcIihefFwiK0wrXCIpXCIrYStcIihcIitMK1wifCQpXCIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoXCJzdHJpbmdcIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpfHxcIlwiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9ZmEuYXR0cihkLGEpO3JldHVybiBudWxsPT1lP1wiIT1cIj09PWI6Yj8oZSs9XCJcIixcIj1cIj09PWI/ZT09PWM6XCIhPVwiPT09Yj9lIT09YzpcIl49XCI9PT1iP2MmJjA9PT1lLmluZGV4T2YoYyk6XCIqPVwiPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6XCIkPVwiPT09Yj9jJiZlLnNsaWNlKC1jLmxlbmd0aCk9PT1jOlwifj1cIj09PWI/KFwiIFwiK2UucmVwbGFjZShQLFwiIFwiKStcIiBcIikuaW5kZXhPZihjKT4tMTpcInw9XCI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jK1wiLVwiOiExKTohMH19LENISUxEOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9XCJudGhcIiE9PWEuc2xpY2UoMCwzKSxnPVwibGFzdFwiIT09YS5zbGljZSgtNCksaD1cIm9mLXR5cGVcIj09PWI7cmV0dXJuIDE9PT1kJiYwPT09ZT9mdW5jdGlvbihhKXtyZXR1cm4hIWEucGFyZW50Tm9kZX06ZnVuY3Rpb24oYixjLGkpe3ZhciBqLGssbCxtLG4sbyxwPWYhPT1nP1wibmV4dFNpYmxpbmdcIjpcInByZXZpb3VzU2libGluZ1wiLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPVwib25seVwiPT09YSYmIW8mJlwibmV4dFNpYmxpbmdcIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmcyl7bT1xLGw9bVt1XXx8KG1bdV09e30pLGs9bFttLnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSx0PW4mJmpbMl0sbT1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobT0rK24mJm0mJm1bcF18fCh0PW49MCl8fG8ucG9wKCkpaWYoMT09PW0ubm9kZVR5cGUmJisrdCYmbT09PWIpe2tbYV09W3csbix0XTticmVha319ZWxzZSBpZihzJiYobT1iLGw9bVt1XXx8KG1bdV09e30pLGs9bFttLnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSx0PW4pLHQ9PT0hMSl3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigoaD9tLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1tLm5vZGVUeXBlKSYmKyt0JiYocyYmKGw9bVt1XXx8KG1bdV09e30pLGs9bFttLnVuaXF1ZUlEXXx8KGxbbS51bmlxdWVJRF09e30pLGtbYV09W3csdF0pLG09PT1iKSlicmVhaztyZXR1cm4gdC09ZSx0PT09ZHx8dCVkPT09MCYmdC9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8ZmEuZXJyb3IoXCJ1bnN1cHBvcnRlZCBwc2V1ZG86IFwiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLFwiXCIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGEoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUooYSxmW2ddKSxhW2RdPSEoY1tkXT1mW2ddKX0pOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsMCxjKX0pOmV9fSxwc2V1ZG9zOntub3Q6aGEoZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWgoYS5yZXBsYWNlKFEsXCIkMVwiKSk7cmV0dXJuIGRbdV0/aGEoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksYlswXT1udWxsLCFjLnBvcCgpfX0pLGhhczpoYShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGZhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aGEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKGJhLGNhKSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzpoYShmdW5jdGlvbihhKXtyZXR1cm4gVi50ZXN0KGF8fFwiXCIpfHxmYS5lcnJvcihcInVuc3VwcG9ydGVkIGxhbmc6IFwiK2EpLGE9YS5yZXBsYWNlKGJhLGNhKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6Yi5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKXx8Yi5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhK1wiLVwiKTt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PWImJiEhYS5jaGVja2VkfHxcIm9wdGlvblwiPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFkudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iJiZcImJ1dHRvblwiPT09YS50eXBlfHxcImJ1dHRvblwiPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm5cImlucHV0XCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJlwidGV4dFwiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKXx8XCJ0ZXh0XCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpuYShmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmEoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYi0xXX0pLGVxOm5hKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmEoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6bmEoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxsdDpuYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5hKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYShiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQucHNldWRvc1tiXT1tYShiKTtmdW5jdGlvbiBwYSgpe31wYS5wcm90b3R5cGU9ZC5maWx0ZXJzPWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBhLGc9ZmEudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYStcIiBcIl07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXtjJiYhKGU9Ui5leGVjKGgpKXx8KGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9Uy5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShRLFwiIFwiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1XW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/ZmEuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBxYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9XCJcIjtjPmI7YisrKWQrPWFbYl0udmFsdWU7cmV0dXJuIGR9ZnVuY3Rpb24gcmEoYSxiLGMpe3ZhciBkPWIuZGlyLGU9YyYmXCJwYXJlbnROb2RlXCI9PT1kLGY9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqLGs9W3csZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihqPWJbdV18fChiW3VdPXt9KSxpPWpbYi51bmlxdWVJRF18fChqW2IudW5pcXVlSURdPXt9KSwoaD1pW2RdKSYmaFswXT09PXcmJmhbMV09PT1mKXJldHVybiBrWzJdPWhbMl07aWYoaVtkXT1rLGtbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiBzYShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB0YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWZhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB1YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoYyYmIWMoZixkLGUpfHwoZy5wdXNoKGYpLGomJmIucHVzaChoKSkpO3JldHVybiBnfWZ1bmN0aW9uIHZhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXZhKGQpKSxlJiYhZVt1XSYmKGU9dmEoZSxmKSksaGEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dGEoYnx8XCIqXCIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp1YShwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9dWEocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0ooZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pdPWwpKX19ZWxzZSByPXVhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTpILmFwcGx5KGcscil9KX1mdW5jdGlvbiB3YShhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlW1wiIFwiXSxpPWc/MTowLGs9cmEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1ifSxoLCEwKSxsPXJhKGZ1bmN0aW9uKGEpe3JldHVybiBKKGIsYSk+LTF9LGgsITApLG09W2Z1bmN0aW9uKGEsYyxkKXt2YXIgZT0hZyYmKGR8fGMhPT1qKXx8KChiPWMpLm5vZGVUeXBlP2soYSxjLGQpOmwoYSxjLGQpKTtyZXR1cm4gYj1udWxsLGV9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JhKHNhKG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFrO3JldHVybiB2YShpPjEmJnNhKG0pLGk+MSYmcWEoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1ZTpcIiBcIj09PWFbaS0yXS50eXBlP1wiKlwiOlwiXCJ9KSkucmVwbGFjZShRLFwiJDFcIiksYyxlPmkmJndhKGEuc2xpY2UoaSxlKSksZj5lJiZ3YShhPWEuc2xpY2UoZSkpLGY+ZSYmcWEoYSkpfW0ucHVzaChjKX1yZXR1cm4gc2EobSl9ZnVuY3Rpb24geGEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbyxxLHI9MCxzPVwiMFwiLHQ9ZiYmW10sdT1bXSx2PWoseD1mfHxlJiZkLmZpbmQuVEFHKFwiKlwiLGspLHk9dys9bnVsbD09dj8xOk1hdGgucmFuZG9tKCl8fC4xLHo9eC5sZW5ndGg7Zm9yKGsmJihqPWc9PT1ufHxnfHxrKTtzIT09eiYmbnVsbCE9KGw9eFtzXSk7cysrKXtpZihlJiZsKXtvPTAsZ3x8bC5vd25lckRvY3VtZW50PT09bnx8KG0obCksaD0hcCk7d2hpbGUocT1hW28rK10paWYocShsLGd8fG4saCkpe2kucHVzaChsKTticmVha31rJiYodz15KX1jJiYoKGw9IXEmJmwpJiZyLS0sZiYmdC5wdXNoKGwpKX1pZihyKz1zLGMmJnMhPT1yKXtvPTA7d2hpbGUocT1iW28rK10pcSh0LHUsZyxoKTtpZihmKXtpZihyPjApd2hpbGUocy0tKXRbc118fHVbc118fCh1W3NdPUYuY2FsbChpKSk7dT11YSh1KX1ILmFwcGx5KGksdSksayYmIWYmJnUubGVuZ3RoPjAmJnIrYi5sZW5ndGg+MSYmZmEudW5pcXVlU29ydChpKX1yZXR1cm4gayYmKHc9eSxqPXYpLHR9O3JldHVybiBjP2hhKGYpOmZ9cmV0dXJuIGg9ZmEuY29tcGlsZT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYStcIiBcIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9d2EoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHhhKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1mYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGUsZil7dmFyIGksaixrLGwsbSxuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGEmJmEsbz0hZiYmZyhhPW4uc2VsZWN0b3J8fGEpO2lmKGU9ZXx8W10sMT09PW8ubGVuZ3RoKXtpZihqPW9bMF09b1swXS5zbGljZSgwKSxqLmxlbmd0aD4yJiZcIklEXCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChrLm1hdGNoZXNbMF0ucmVwbGFjZShiYSxjYSksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVcubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBsYWNlKGJhLGNhKSxfLnRlc3QoalswXS50eXBlKSYmb2EoYi5wYXJlbnROb2RlKXx8YikpKXtpZihqLnNwbGljZShpLDEpLGE9Zi5sZW5ndGgmJnFhKGopLCFhKXJldHVybiBILmFwcGx5KGUsZiksZTticmVha319fXJldHVybihufHxoKGEsbykpKGYsYiwhcCxlLCFifHxfLnRlc3QoYSkmJm9hKGIucGFyZW50Tm9kZSl8fGIpLGV9LGMuc29ydFN0YWJsZT11LnNwbGl0KFwiXCIpLnNvcnQoQikuam9pbihcIlwiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpfSksaWEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPVwiPGEgaHJlZj0nIyc+PC9hPlwiLFwiI1wiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIil9KXx8amEoXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjP3ZvaWQgMDphLmdldEF0dHJpYnV0ZShiLFwidHlwZVwiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD1cIjxpbnB1dC8+XCIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIiksXCJcIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKX0pfHxqYShcInZhbHVlXCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHxcImlucHV0XCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksaWEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIil9KXx8amEoSyxmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOmFbYl09PT0hMD9iLnRvTG93ZXJDYXNlKCk6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZC5zcGVjaWZpZWQ/ZC52YWx1ZTpudWxsfSksZmF9KGEpO24uZmluZD10LG4uZXhwcj10LnNlbGVjdG9ycyxuLmV4cHJbXCI6XCJdPW4uZXhwci5wc2V1ZG9zLG4udW5pcXVlU29ydD1uLnVuaXF1ZT10LnVuaXF1ZVNvcnQsbi50ZXh0PXQuZ2V0VGV4dCxuLmlzWE1MRG9jPXQuaXNYTUwsbi5jb250YWlucz10LmNvbnRhaW5zO3ZhciB1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPXZvaWQgMCE9PWM7d2hpbGUoKGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlKWlmKDE9PT1hLm5vZGVUeXBlKXtpZihlJiZuKGEpLmlzKGMpKWJyZWFrO2QucHVzaChhKX1yZXR1cm4gZH0sdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30sdz1uLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHg9L148KFtcXHctXSspXFxzKlxcLz8+KD86PFxcL1xcMT58KSQvLHk9L14uW146I1xcW1xcLixdKiQvO2Z1bmN0aW9uIHooYSxiLGMpe2lmKG4uaXNGdW5jdGlvbihiKSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBiKXtpZih5LnRlc3QoYikpcmV0dXJuIG4uZmlsdGVyKGIsYSxjKTtiPW4uZmlsdGVyKGIsYSl9cmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBuLmluQXJyYXkoYSxiKT4tMSE9PWN9KX1uLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9XCI6bm90KFwiK2ErXCIpXCIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bi5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTpuLmZpbmQubWF0Y2hlcyhhLG4uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbi5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZihcInN0cmluZ1wiIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobi5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyluLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9uLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcitcIiBcIithOmEsY30sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh6KHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayh6KHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISF6KHRoaXMsXCJzdHJpbmdcIj09dHlwZW9mIGEmJncudGVzdChhKT9uKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIEEsQj0vXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0qKSkkLyxDPW4uZm4uaW5pdD1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZjtpZighYSlyZXR1cm4gdGhpcztpZihjPWN8fEEsXCJzdHJpbmdcIj09dHlwZW9mIGEpe2lmKGU9XCI8XCI9PT1hLmNoYXJBdCgwKSYmXCI+XCI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTpCLmV4ZWMoYSksIWV8fCFlWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8YykuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoZVsxXSl7aWYoYj1iIGluc3RhbmNlb2Ygbj9iWzBdOmIsbi5tZXJnZSh0aGlzLG4ucGFyc2VIVE1MKGVbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6ZCwhMCkpLHgudGVzdChlWzFdKSYmbi5pc1BsYWluT2JqZWN0KGIpKWZvcihlIGluIGIpbi5pc0Z1bmN0aW9uKHRoaXNbZV0pP3RoaXNbZV0oYltlXSk6dGhpcy5hdHRyKGUsYltlXSk7cmV0dXJuIHRoaXN9aWYoZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJmYucGFyZW50Tm9kZSl7aWYoZi5pZCE9PWVbMl0pcmV0dXJuIEEuZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09Zn1yZXR1cm4gdGhpcy5jb250ZXh0PWQsdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpuLmlzRnVuY3Rpb24oYSk/XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGMucmVhZHk/Yy5yZWFkeShhKTphKG4pOih2b2lkIDAhPT1hLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLG4ubWFrZUFycmF5KGEsdGhpcykpfTtDLnByb3RvdHlwZT1uLmZuLEE9bihkKTt2YXIgRD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxFPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O24uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1uKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobi5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXcudGVzdChhKXx8XCJzdHJpbmdcIiE9dHlwZW9mIGE/bihhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbi5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP24udW5pcXVlU29ydChmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/XCJzdHJpbmdcIj09dHlwZW9mIGE/bi5pbkFycmF5KHRoaXNbMF0sbihhKSk6bi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhuLnVuaXF1ZVNvcnQobi5tZXJnZSh0aGlzLmdldCgpLG4oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRihhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiB1KGEsXCJwYXJlbnROb2RlXCIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB1KGEsXCJwYXJlbnROb2RlXCIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEYoYSxcIm5leHRTaWJsaW5nXCIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBGKGEsXCJwcmV2aW91c1NpYmxpbmdcIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHUoYSxcIm5leHRTaWJsaW5nXCIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiB1KGEsXCJwcmV2aW91c1NpYmxpbmdcIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHUoYSxcIm5leHRTaWJsaW5nXCIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHUoYSxcInByZXZpb3VzU2libGluZ1wiLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gdigoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG4ubm9kZU5hbWUoYSxcImlmcmFtZVwiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50Om4ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPW4ubWFwKHRoaXMsYixjKTtyZXR1cm5cIlVudGlsXCIhPT1hLnNsaWNlKC01KSYmKGQ9YyksZCYmXCJzdHJpbmdcIj09dHlwZW9mIGQmJihlPW4uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihFW2FdfHwoZT1uLnVuaXF1ZVNvcnQoZSkpLEQudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgRz0vXFxTKy9nO2Z1bmN0aW9uIEgoYSl7dmFyIGI9e307cmV0dXJuIG4uZWFjaChhLm1hdGNoKEcpfHxbXSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifW4uQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9XCJzdHJpbmdcIj09dHlwZW9mIGE/SChhKTpuLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmPVtdLGc9W10saD0tMSxpPWZ1bmN0aW9uKCl7Zm9yKGU9YS5vbmNlLGQ9Yj0hMDtnLmxlbmd0aDtoPS0xKXtjPWcuc2hpZnQoKTt3aGlsZSgrK2g8Zi5sZW5ndGgpZltoXS5hcHBseShjWzBdLGNbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2UmJihoPWYubGVuZ3RoLGM9ITEpfWEubWVtb3J5fHwoYz0hMSksYj0hMSxlJiYoZj1jP1tdOlwiXCIpfSxqPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGMmJiFiJiYoaD1mLmxlbmd0aC0xLGcucHVzaChjKSksZnVuY3Rpb24gZChiKXtuLmVhY2goYixmdW5jdGlvbihiLGMpe24uaXNGdW5jdGlvbihjKT9hLnVuaXF1ZSYmai5oYXMoYyl8fGYucHVzaChjKTpjJiZjLmxlbmd0aCYmXCJzdHJpbmdcIiE9PW4udHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBuLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUoKGM9bi5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxoPj1jJiZoLS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bi5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGY9Yz1cIlwiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWZ9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCxjfHxqLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfSxuLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1tcInJlc29sdmVcIixcImRvbmVcIixuLkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLFwicmVzb2x2ZWRcIl0sW1wicmVqZWN0XCIsXCJmYWlsXCIsbi5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSxcInJlamVjdGVkXCJdLFtcIm5vdGlmeVwiLFwicHJvZ3Jlc3NcIixuLkNhbGxiYWNrcyhcIm1lbW9yeVwiKV1dLGM9XCJwZW5kaW5nXCIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGMpe24uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bi5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZuLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhjLm5vdGlmeSkuZG9uZShjLnJlc29sdmUpLmZhaWwoYy5yZWplY3QpOmNbZlswXStcIldpdGhcIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/bi5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixuLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rXCJXaXRoXCJdKHRoaXM9PT1lP2Q6dGhpcyxhcmd1bWVudHMpLHRoaXN9LGVbZlswXStcIldpdGhcIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1lLmNhbGwoYXJndW1lbnRzKSxkPWMubGVuZ3RoLGY9MSE9PWR8fGEmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2Q6MCxnPTE9PT1mP2E6bi5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZS5jYWxsKGFyZ3VtZW50cyk6ZCxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGQ+MSlmb3IoaT1uZXcgQXJyYXkoZCksaj1uZXcgQXJyYXkoZCksaz1uZXcgQXJyYXkoZCk7ZD5iO2IrKyljW2JdJiZuLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5wcm9ncmVzcyhoKGIsaixpKSkuZG9uZShoKGIsayxjKSkuZmFpbChnLnJlamVjdCk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEk7bi5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbi5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxuLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9uLnJlYWR5V2FpdCsrOm4ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tbi5yZWFkeVdhaXQ6bi5pc1JlYWR5KXx8KG4uaXNSZWFkeT0hMCxhIT09ITAmJi0tbi5yZWFkeVdhaXQ+MHx8KEkucmVzb2x2ZVdpdGgoZCxbbl0pLG4uZm4udHJpZ2dlckhhbmRsZXImJihuKGQpLnRyaWdnZXJIYW5kbGVyKFwicmVhZHlcIiksbihkKS5vZmYoXCJyZWFkeVwiKSkpKX19KTtmdW5jdGlvbiBKKCl7ZC5hZGRFdmVudExpc3RlbmVyPyhkLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsSyksYS5yZW1vdmVFdmVudExpc3RlbmVyKFwibG9hZFwiLEspKTooZC5kZXRhY2hFdmVudChcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiLEspLGEuZGV0YWNoRXZlbnQoXCJvbmxvYWRcIixLKSl9ZnVuY3Rpb24gSygpeyhkLmFkZEV2ZW50TGlzdGVuZXJ8fFwibG9hZFwiPT09YS5ldmVudC50eXBlfHxcImNvbXBsZXRlXCI9PT1kLnJlYWR5U3RhdGUpJiYoSigpLG4ucmVhZHkoKSl9bi5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe2lmKCFJKWlmKEk9bi5EZWZlcnJlZCgpLFwiY29tcGxldGVcIj09PWQucmVhZHlTdGF0ZXx8XCJsb2FkaW5nXCIhPT1kLnJlYWR5U3RhdGUmJiFkLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbClhLnNldFRpbWVvdXQobi5yZWFkeSk7ZWxzZSBpZihkLmFkZEV2ZW50TGlzdGVuZXIpZC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLEspLGEuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixLKTtlbHNle2QuYXR0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixLKSxhLmF0dGFjaEV2ZW50KFwib25sb2FkXCIsSyk7dmFyIGM9ITE7dHJ5e2M9bnVsbD09YS5mcmFtZUVsZW1lbnQmJmQuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGUpe31jJiZjLmRvU2Nyb2xsJiYhZnVuY3Rpb24gZigpe2lmKCFuLmlzUmVhZHkpe3RyeXtjLmRvU2Nyb2xsKFwibGVmdFwiKX1jYXRjaChiKXtyZXR1cm4gYS5zZXRUaW1lb3V0KGYsNTApfUooKSxuLnJlYWR5KCl9fSgpfXJldHVybiBJLnByb21pc2UoYil9LG4ucmVhZHkucHJvbWlzZSgpO3ZhciBMO2ZvcihMIGluIG4obCkpYnJlYWs7bC5vd25GaXJzdD1cIjBcIj09PUwsbC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PSExLG4oZnVuY3Rpb24oKXt2YXIgYSxiLGMsZTtjPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdLGMmJmMuc3R5bGUmJihiPWQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlPWQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweFwiLGMuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoYiksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGIuc3R5bGUuem9vbSYmKGIuc3R5bGUuY3NzVGV4dD1cImRpc3BsYXk6aW5saW5lO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjFcIixsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9YT0zPT09Yi5vZmZzZXRXaWR0aCxhJiYoYy5zdHlsZS56b29tPTEpKSxjLnJlbW92ZUNoaWxkKGUpKX0pLGZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2wuZGVsZXRlRXhwYW5kbz0hMDt0cnl7ZGVsZXRlIGEudGVzdH1jYXRjaChiKXtsLmRlbGV0ZUV4cGFuZG89ITF9YT1udWxsfSgpO3ZhciBNPWZ1bmN0aW9uKGEpe3ZhciBiPW4ubm9EYXRhWyhhLm5vZGVOYW1lK1wiIFwiKS50b0xvd2VyQ2FzZSgpXSxjPSthLm5vZGVUeXBlfHwxO3JldHVybiAxIT09YyYmOSE9PWM/ITE6IWJ8fGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoXCJjbGFzc2lkXCIpPT09Yn0sTj0vXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sTz0vKFtBLVpdKS9nO2Z1bmN0aW9uIFAoYSxiLGMpe2lmKHZvaWQgMD09PWMmJjE9PT1hLm5vZGVUeXBlKXt2YXIgZD1cImRhdGEtXCIrYi5yZXBsYWNlKE8sXCItJDFcIikudG9Mb3dlckNhc2UoKTtpZihjPWEuZ2V0QXR0cmlidXRlKGQpLFwic3RyaW5nXCI9PXR5cGVvZiBjKXt0cnl7Yz1cInRydWVcIj09PWM/ITA6XCJmYWxzZVwiPT09Yz8hMTpcIm51bGxcIj09PWM/bnVsbDorYytcIlwiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bi5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwO1xufXJldHVybiBjfWZ1bmN0aW9uIFEoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoXCJkYXRhXCIhPT1ifHwhbi5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmXCJ0b0pTT05cIiE9PWIpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gUihhLGIsZCxlKXtpZihNKGEpKXt2YXIgZixnLGg9bi5leHBhbmRvLGk9YS5ub2RlVHlwZSxqPWk/bi5jYWNoZTphLGs9aT9hW2hdOmFbaF0mJmg7aWYoayYmaltrXSYmKGV8fGpba10uZGF0YSl8fHZvaWQgMCE9PWR8fFwic3RyaW5nXCIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bi5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm4ubm9vcH0pLFwib2JqZWN0XCIhPXR5cGVvZiBiJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBifHwoZT9qW2tdPW4uZXh0ZW5kKGpba10sYik6altrXS5kYXRhPW4uZXh0ZW5kKGpba10uZGF0YSxiKSksZz1qW2tdLGV8fChnLmRhdGF8fChnLmRhdGE9e30pLGc9Zy5kYXRhKSx2b2lkIDAhPT1kJiYoZ1tuLmNhbWVsQ2FzZShiKV09ZCksXCJzdHJpbmdcIj09dHlwZW9mIGI/KGY9Z1tiXSxudWxsPT1mJiYoZj1nW24uY2FtZWxDYXNlKGIpXSkpOmY9ZyxmfX1mdW5jdGlvbiBTKGEsYixjKXtpZihNKGEpKXt2YXIgZCxlLGY9YS5ub2RlVHlwZSxnPWY/bi5jYWNoZTphLGg9Zj9hW24uZXhwYW5kb106bi5leHBhbmRvO2lmKGdbaF0pe2lmKGImJihkPWM/Z1toXTpnW2hdLmRhdGEpKXtuLmlzQXJyYXkoYik/Yj1iLmNvbmNhdChuLm1hcChiLG4uY2FtZWxDYXNlKSk6YiBpbiBkP2I9W2JdOihiPW4uY2FtZWxDYXNlKGIpLGI9YiBpbiBkP1tiXTpiLnNwbGl0KFwiIFwiKSksZT1iLmxlbmd0aDt3aGlsZShlLS0pZGVsZXRlIGRbYltlXV07aWYoYz8hUShkKTohbi5pc0VtcHR5T2JqZWN0KGQpKXJldHVybn0oY3x8KGRlbGV0ZSBnW2hdLmRhdGEsUShnW2hdKSkpJiYoZj9uLmNsZWFuRGF0YShbYV0sITApOmwuZGVsZXRlRXhwYW5kb3x8ZyE9Zy53aW5kb3c/ZGVsZXRlIGdbaF06Z1toXT12b2lkIDApfX19bi5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7XCJhcHBsZXQgXCI6ITAsXCJlbWJlZCBcIjohMCxcIm9iamVjdCBcIjpcImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMFwifSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBhPWEubm9kZVR5cGU/bi5jYWNoZVthW24uZXhwYW5kb11dOmFbbi5leHBhbmRvXSwhIWEmJiFRKGEpfSxkYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUihhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyhhLGIpfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoYSxiLGMsITApfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3JldHVybiBTKGEsYiwhMCl9fSksbi5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1uLmRhdGEoZiksMT09PWYubm9kZVR5cGUmJiFuLl9kYXRhKGYsXCJwYXJzZWRBdHRyc1wiKSkpe2M9Zy5sZW5ndGg7d2hpbGUoYy0tKWdbY10mJihkPWdbY10ubmFtZSwwPT09ZC5pbmRleE9mKFwiZGF0YS1cIikmJihkPW4uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLFAoZixkLGVbZF0pKSk7bi5fZGF0YShmLFwicGFyc2VkQXR0cnNcIiwhMCl9cmV0dXJuIGV9cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIGE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5kYXRhKHRoaXMsYSl9KTphcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5kYXRhKHRoaXMsYSxiKX0pOmY/UChmLGEsbi5kYXRhKGYsYSkpOnZvaWQgMH0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHxcImZ4XCIpK1wicXVldWVcIixkPW4uX2RhdGEoYSxiKSxjJiYoIWR8fG4uaXNBcnJheShjKT9kPW4uX2RhdGEoYSxiLG4ubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8fFtdKTp2b2lkIDB9LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fFwiZnhcIjt2YXIgYz1uLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW4uX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7bi5kZXF1ZXVlKGEsYil9O1wiaW5wcm9ncmVzc1wiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKFwiZnhcIj09PWImJmMudW5zaGlmdChcImlucHJvZ3Jlc3NcIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YitcInF1ZXVlSG9va3NcIjtyZXR1cm4gbi5fZGF0YShhLGMpfHxuLl9kYXRhKGEsYyx7ZW1wdHk6bi5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKS5hZGQoZnVuY3Rpb24oKXtuLl9yZW1vdmVEYXRhKGEsYitcInF1ZXVlXCIpLG4uX3JlbW92ZURhdGEoYSxjKX0pfSl9fSksbi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgYSYmKGI9YSxhPVwiZnhcIixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9uLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPW4ucXVldWUodGhpcyxhLGIpO24uX3F1ZXVlSG9va3ModGhpcyxhKSxcImZ4XCI9PT1hJiZcImlucHJvZ3Jlc3NcIiE9PWNbMF0mJm4uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe24uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8XCJmeFwiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPW4uRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07XCJzdHJpbmdcIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8XCJmeFwiO3doaWxlKGctLSljPW4uX2RhdGEoZltnXSxhK1wicXVldWVIb29rc1wiKSxjJiZjLmVtcHR5JiYoZCsrLGMuZW1wdHkuYWRkKGgpKTtyZXR1cm4gaCgpLGUucHJvbWlzZShiKX19KSxmdW5jdGlvbigpe3ZhciBhO2wuc2hyaW5rV3JhcEJsb2Nrcz1mdW5jdGlvbigpe2lmKG51bGwhPWEpcmV0dXJuIGE7YT0hMTt2YXIgYixjLGU7cmV0dXJuIGM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0sYyYmYy5zdHlsZT8oYj1kLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZT1kLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksZS5zdHlsZS5jc3NUZXh0PVwicG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHhcIixjLmFwcGVuZENoaWxkKGUpLmFwcGVuZENoaWxkKGIpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBiLnN0eWxlLnpvb20mJihiLnN0eWxlLmNzc1RleHQ9XCItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjFweDt3aWR0aDoxcHg7em9vbToxXCIsYi5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLnN0eWxlLndpZHRoPVwiNXB4XCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChlKSxhKTp2b2lkIDB9fSgpO3ZhciBUPS9bKy1dPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdWystXT9cXGQrfCkvLnNvdXJjZSxVPW5ldyBSZWdFeHAoXCJeKD86KFsrLV0pPXwpKFwiK1QrXCIpKFthLXolXSopJFwiLFwiaVwiKSxWPVtcIlRvcFwiLFwiUmlnaHRcIixcIkJvdHRvbVwiLFwiTGVmdFwiXSxXPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSxcIm5vbmVcIj09PW4uY3NzKGEsXCJkaXNwbGF5XCIpfHwhbi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl9O2Z1bmN0aW9uIFgoYSxiLGMsZCl7dmFyIGUsZj0xLGc9MjAsaD1kP2Z1bmN0aW9uKCl7cmV0dXJuIGQuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIG4uY3NzKGEsYixcIlwiKX0saT1oKCksaj1jJiZjWzNdfHwobi5jc3NOdW1iZXJbYl0/XCJcIjpcInB4XCIpLGs9KG4uY3NzTnVtYmVyW2JdfHxcInB4XCIhPT1qJiYraSkmJlUuZXhlYyhuLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fFwiLjVcIixrLz1mLG4uc3R5bGUoYSxiLGsraik7d2hpbGUoZiE9PShmPWgoKS9pKSYmMSE9PWYmJi0tZyl9cmV0dXJuIGMmJihrPStrfHwraXx8MCxlPWNbMV0/aysoY1sxXSsxKSpjWzJdOitjWzJdLGQmJihkLnVuaXQ9aixkLnN0YXJ0PWssZC5lbmQ9ZSkpLGV9dmFyIFk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7dmFyIGg9MCxpPWEubGVuZ3RoLGo9bnVsbD09YztpZihcIm9iamVjdFwiPT09bi50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpWShhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxuLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobihhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxaPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLCQ9LzwoW1xcdzotXSspLyxfPS9eJHxcXC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksYWE9L15cXHMrLyxiYT1cImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xkaWFsb2d8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhlYWRlcnxoZ3JvdXB8bWFpbnxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cGljdHVyZXxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGVtcGxhdGV8dGltZXx2aWRlb1wiO2Z1bmN0aW9uIGNhKGEpe3ZhciBiPWJhLnNwbGl0KFwifFwiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9IWZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGI9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYz1kLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTthLmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLGwubGVhZGluZ1doaXRlc3BhY2U9Mz09PWEuZmlyc3RDaGlsZC5ub2RlVHlwZSxsLnRib2R5PSFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGJvZHlcIikubGVuZ3RoLGwuaHRtbFNlcmlhbGl6ZT0hIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJsaW5rXCIpLmxlbmd0aCxsLmh0bWw1Q2xvbmU9XCI8Om5hdj48LzpuYXY+XCIhPT1kLmNyZWF0ZUVsZW1lbnQoXCJuYXZcIikuY2xvbmVOb2RlKCEwKS5vdXRlckhUTUwsYy50eXBlPVwiY2hlY2tib3hcIixjLmNoZWNrZWQ9ITAsYi5hcHBlbmRDaGlsZChjKSxsLmFwcGVuZENoZWNrZWQ9Yy5jaGVja2VkLGEuaW5uZXJIVE1MPVwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiLGwubm9DbG9uZUNoZWNrZWQ9ISFhLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxiLmFwcGVuZENoaWxkKGEpLGM9ZC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiksYy5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJyYWRpb1wiKSxjLnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIixcImNoZWNrZWRcIiksYy5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsXCJ0XCIpLGEuYXBwZW5kQ2hpbGQoYyksbC5jaGVja0Nsb25lPWEuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGwubm9DbG9uZUV2ZW50PSEhYS5hZGRFdmVudExpc3RlbmVyLGFbbi5leHBhbmRvXT0xLGwuYXR0cmlidXRlcz0hYS5nZXRBdHRyaWJ1dGUobi5leHBhbmRvKX0oKTt2YXIgZGE9e29wdGlvbjpbMSxcIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz5cIixcIjwvc2VsZWN0PlwiXSxsZWdlbmQ6WzEsXCI8ZmllbGRzZXQ+XCIsXCI8L2ZpZWxkc2V0PlwiXSxhcmVhOlsxLFwiPG1hcD5cIixcIjwvbWFwPlwiXSxwYXJhbTpbMSxcIjxvYmplY3Q+XCIsXCI8L29iamVjdD5cIl0sdGhlYWQ6WzEsXCI8dGFibGU+XCIsXCI8L3RhYmxlPlwiXSx0cjpbMixcIjx0YWJsZT48dGJvZHk+XCIsXCI8L3Rib2R5PjwvdGFibGU+XCJdLGNvbDpbMixcIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+XCIsXCI8L2NvbGdyb3VwPjwvdGFibGU+XCJdLHRkOlszLFwiPHRhYmxlPjx0Ym9keT48dHI+XCIsXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIl0sX2RlZmF1bHQ6bC5odG1sU2VyaWFsaXplP1swLFwiXCIsXCJcIl06WzEsXCJYPGRpdj5cIixcIjwvZGl2PlwiXX07ZGEub3B0Z3JvdXA9ZGEub3B0aW9uLGRhLnRib2R5PWRhLnRmb290PWRhLmNvbGdyb3VwPWRhLmNhcHRpb249ZGEudGhlYWQsZGEudGg9ZGEudGQ7ZnVuY3Rpb24gZWEoYSxiKXt2YXIgYyxkLGU9MCxmPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8XCIqXCIpOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGw/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fFwiKlwiKTp2b2lkIDA7aWYoIWYpZm9yKGY9W10sYz1hLmNoaWxkTm9kZXN8fGE7bnVsbCE9KGQ9Y1tlXSk7ZSsrKSFifHxuLm5vZGVOYW1lKGQsYik/Zi5wdXNoKGQpOm4ubWVyZ2UoZixlYShkLGIpKTtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmbi5ub2RlTmFtZShhLGIpP24ubWVyZ2UoW2FdLGYpOmZ9ZnVuY3Rpb24gZmEoYSxiKXtmb3IodmFyIGMsZD0wO251bGwhPShjPWFbZF0pO2QrKyluLl9kYXRhKGMsXCJnbG9iYWxFdmFsXCIsIWJ8fG4uX2RhdGEoYltkXSxcImdsb2JhbEV2YWxcIikpfXZhciBnYT0vPHwmIz9cXHcrOy8saGE9Lzx0Ym9keS9pO2Z1bmN0aW9uIGlhKGEpe1oudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIGphKGEsYixjLGQsZSl7Zm9yKHZhciBmLGcsaCxpLGosayxtLG89YS5sZW5ndGgscD1jYShiKSxxPVtdLHI9MDtvPnI7cisrKWlmKGc9YVtyXSxnfHwwPT09ZylpZihcIm9iamVjdFwiPT09bi50eXBlKGcpKW4ubWVyZ2UocSxnLm5vZGVUeXBlP1tnXTpnKTtlbHNlIGlmKGdhLnRlc3QoZykpe2k9aXx8cC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGo9KCQuZXhlYyhnKXx8W1wiXCIsXCJcIl0pWzFdLnRvTG93ZXJDYXNlKCksbT1kYVtqXXx8ZGEuX2RlZmF1bHQsaS5pbm5lckhUTUw9bVsxXStuLmh0bWxQcmVmaWx0ZXIoZykrbVsyXSxmPW1bMF07d2hpbGUoZi0tKWk9aS5sYXN0Q2hpbGQ7aWYoIWwubGVhZGluZ1doaXRlc3BhY2UmJmFhLnRlc3QoZykmJnEucHVzaChiLmNyZWF0ZVRleHROb2RlKGFhLmV4ZWMoZylbMF0pKSwhbC50Ym9keSl7Zz1cInRhYmxlXCIhPT1qfHxoYS50ZXN0KGcpP1wiPHRhYmxlPlwiIT09bVsxXXx8aGEudGVzdChnKT8wOmk6aS5maXJzdENoaWxkLGY9ZyYmZy5jaGlsZE5vZGVzLmxlbmd0aDt3aGlsZShmLS0pbi5ub2RlTmFtZShrPWcuY2hpbGROb2Rlc1tmXSxcInRib2R5XCIpJiYhay5jaGlsZE5vZGVzLmxlbmd0aCYmZy5yZW1vdmVDaGlsZChrKX1uLm1lcmdlKHEsaS5jaGlsZE5vZGVzKSxpLnRleHRDb250ZW50PVwiXCI7d2hpbGUoaS5maXJzdENoaWxkKWkucmVtb3ZlQ2hpbGQoaS5maXJzdENoaWxkKTtpPXAubGFzdENoaWxkfWVsc2UgcS5wdXNoKGIuY3JlYXRlVGV4dE5vZGUoZykpO2kmJnAucmVtb3ZlQ2hpbGQoaSksbC5hcHBlbmRDaGVja2VkfHxuLmdyZXAoZWEocSxcImlucHV0XCIpLGlhKSxyPTA7d2hpbGUoZz1xW3IrK10paWYoZCYmbi5pbkFycmF5KGcsZCk+LTEpZSYmZS5wdXNoKGcpO2Vsc2UgaWYoaD1uLmNvbnRhaW5zKGcub3duZXJEb2N1bWVudCxnKSxpPWVhKHAuYXBwZW5kQ2hpbGQoZyksXCJzY3JpcHRcIiksaCYmZmEoaSksYyl7Zj0wO3doaWxlKGc9aVtmKytdKV8udGVzdChnLnR5cGV8fFwiXCIpJiZjLnB1c2goZyl9cmV0dXJuIGk9bnVsbCxwfSFmdW5jdGlvbigpe3ZhciBiLGMsZT1kLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7Zm9yKGIgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPVwib25cIitiLChsW2JdPWMgaW4gYSl8fChlLnNldEF0dHJpYnV0ZShjLFwidFwiKSxsW2JdPWUuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2U9bnVsbH0oKTt2YXIga2E9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLGxhPS9ea2V5LyxtYT0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sbmE9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLG9hPS9eKFteLl0qKSg/OlxcLiguKyl8KS87ZnVuY3Rpb24gcGEoKXtyZXR1cm4hMH1mdW5jdGlvbiBxYSgpe3JldHVybiExfWZ1bmN0aW9uIHJhKCl7dHJ5e3JldHVybiBkLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1mdW5jdGlvbiBzYShhLGIsYyxkLGUsZil7dmFyIGcsaDtpZihcIm9iamVjdFwiPT10eXBlb2YgYil7XCJzdHJpbmdcIiE9dHlwZW9mIGMmJihkPWR8fGMsYz12b2lkIDApO2ZvcihoIGluIGIpc2EoYSxoLGMsZCxiW2hdLGYpO3JldHVybiBhfWlmKG51bGw9PWQmJm51bGw9PWU/KGU9YyxkPWM9dm9pZCAwKTpudWxsPT1lJiYoXCJzdHJpbmdcIj09dHlwZW9mIGM/KGU9ZCxkPXZvaWQgMCk6KGU9ZCxkPWMsYz12b2lkIDApKSxlPT09ITEpZT1xYTtlbHNlIGlmKCFlKXJldHVybiBhO3JldHVybiAxPT09ZiYmKGc9ZSxlPWZ1bmN0aW9uKGEpe3JldHVybiBuKCkub2ZmKGEpLGcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmd1aWQ9Zy5ndWlkfHwoZy5ndWlkPW4uZ3VpZCsrKSksYS5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC5hZGQodGhpcyxiLGUsZCxjKX0pfW4uZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG8scCxxLHI9bi5fZGF0YShhKTtpZihyKXtjLmhhbmRsZXImJihpPWMsYz1pLmhhbmRsZXIsZT1pLnNlbGVjdG9yKSxjLmd1aWR8fChjLmd1aWQ9bi5ndWlkKyspLChnPXIuZXZlbnRzKXx8KGc9ci5ldmVudHM9e30pLChrPXIuaGFuZGxlKXx8KGs9ci5oYW5kbGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJ1bmRlZmluZWRcIj09dHlwZW9mIG58fGEmJm4uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDpuLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8XCJcIikubWF0Y2goRyl8fFtcIlwiXSxoPWIubGVuZ3RoO3doaWxlKGgtLSlmPW9hLmV4ZWMoYltoXSl8fFtdLG89cT1mWzFdLHA9KGZbMl18fFwiXCIpLnNwbGl0KFwiLlwiKS5zb3J0KCksbyYmKGo9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW4uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm4uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKFwiLlwiKX0saSksKG09Z1tvXSl8fChtPWdbb109W10sbS5kZWxlZ2F0ZUNvdW50PTAsai5zZXR1cCYmai5zZXR1cC5jYWxsKGEsZCxwLGspIT09ITF8fChhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKG8saywhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudChcIm9uXCIrbyxrKSkpLGouYWRkJiYoai5hZGQuY2FsbChhLGwpLGwuaGFuZGxlci5ndWlkfHwobC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGwpOm0ucHVzaChsKSxuLmV2ZW50Lmdsb2JhbFtvXT0hMCk7YT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uaGFzRGF0YShhKSYmbi5fZGF0YShhKTtpZihyJiYoaz1yLmV2ZW50cykpe2I9KGJ8fFwiXCIpLm1hdGNoKEcpfHxbXCJcIl0saj1iLmxlbmd0aDt3aGlsZShqLS0paWYoaD1vYS5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHxcIlwiKS5zcGxpdChcIi5cIikuc29ydCgpLG8pe2w9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxvLG09a1tvXXx8W10saD1oWzJdJiZuZXcgUmVnRXhwKFwiKF58XFxcXC4pXCIrcC5qb2luKFwiXFxcXC4oPzouKlxcXFwufClcIikrXCIoXFxcXC58JClcIiksaT1mPW0ubGVuZ3RoO3doaWxlKGYtLSlnPW1bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKFwiKipcIiE9PWR8fCFnLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksZy5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxnKSk7aSYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEscCxyLmhhbmRsZSkhPT0hMXx8bi5yZW1vdmVFdmVudChhLG8sci5oYW5kbGUpLGRlbGV0ZSBrW29dKX1lbHNlIGZvcihvIGluIGspbi5ldmVudC5yZW1vdmUoYSxvK2Jbal0sYyxkLCEwKTtuLmlzRW1wdHlPYmplY3QoaykmJihkZWxldGUgci5oYW5kbGUsbi5fcmVtb3ZlRGF0YShhLFwiZXZlbnRzXCIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGUsZil7dmFyIGcsaCxpLGosbCxtLG8scD1bZXx8ZF0scT1rLmNhbGwoYixcInR5cGVcIik/Yi50eXBlOmIscj1rLmNhbGwoYixcIm5hbWVzcGFjZVwiKT9iLm5hbWVzcGFjZS5zcGxpdChcIi5cIik6W107aWYoaT1tPWU9ZXx8ZCwzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJiFuYS50ZXN0KHErbi5ldmVudC50cmlnZ2VyZWQpJiYocS5pbmRleE9mKFwiLlwiKT4tMSYmKHI9cS5zcGxpdChcIi5cIikscT1yLnNoaWZ0KCksci5zb3J0KCkpLGg9cS5pbmRleE9mKFwiOlwiKTwwJiZcIm9uXCIrcSxiPWJbbi5leHBhbmRvXT9iOm5ldyBuLkV2ZW50KHEsXCJvYmplY3RcIj09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWY/MjozLGIubmFtZXNwYWNlPXIuam9pbihcIi5cIiksYi5ybmFtZXNwYWNlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoXCIoXnxcXFxcLilcIityLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKStcIihcXFxcLnwkKVwiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWUpLGM9bnVsbD09Yz9bYl06bi5tYWtlQXJyYXkoYyxbYl0pLGw9bi5ldmVudC5zcGVjaWFsW3FdfHx7fSxmfHwhbC50cmlnZ2VyfHxsLnRyaWdnZXIuYXBwbHkoZSxjKSE9PSExKSl7aWYoIWYmJiFsLm5vQnViYmxlJiYhbi5pc1dpbmRvdyhlKSl7Zm9yKGo9bC5kZWxlZ2F0ZVR5cGV8fHEsbmEudGVzdChqK3EpfHwoaT1pLnBhcmVudE5vZGUpO2k7aT1pLnBhcmVudE5vZGUpcC5wdXNoKGkpLG09aTttPT09KGUub3duZXJEb2N1bWVudHx8ZCkmJnAucHVzaChtLmRlZmF1bHRWaWV3fHxtLnBhcmVudFdpbmRvd3x8YSl9bz0wO3doaWxlKChpPXBbbysrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW8+MT9qOmwuYmluZFR5cGV8fHEsZz0obi5fZGF0YShpLFwiZXZlbnRzXCIpfHx7fSlbYi50eXBlXSYmbi5fZGF0YShpLFwiaGFuZGxlXCIpLGcmJmcuYXBwbHkoaSxjKSxnPWgmJmlbaF0sZyYmZy5hcHBseSYmTShpKSYmKGIucmVzdWx0PWcuYXBwbHkoaSxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO2lmKGIudHlwZT1xLCFmJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFsLl9kZWZhdWx0fHxsLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksYyk9PT0hMSkmJk0oZSkmJmgmJmVbcV0mJiFuLmlzV2luZG93KGUpKXttPWVbaF0sbSYmKGVbaF09bnVsbCksbi5ldmVudC50cmlnZ2VyZWQ9cTt0cnl7ZVtxXSgpfWNhdGNoKHMpe31uLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbSYmKGVbaF09bSl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1uLmV2ZW50LmZpeChhKTt2YXIgYixjLGQsZixnLGg9W10saT1lLmNhbGwoYXJndW1lbnRzKSxqPShuLl9kYXRhKHRoaXMsXCJldmVudHNcIil8fHt9KVthLnR5cGVdfHxbXSxrPW4uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihpWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSE9PSExKXtoPW4uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsaiksYj0wO3doaWxlKChmPWhbYisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3VycmVudFRhcmdldD1mLmVsZW0sYz0wO3doaWxlKChnPWYuaGFuZGxlcnNbYysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpYS5ybmFtZXNwYWNlJiYhYS5ybmFtZXNwYWNlLnRlc3QoZy5uYW1lc3BhY2UpfHwoYS5oYW5kbGVPYmo9ZyxhLmRhdGE9Zy5kYXRhLGQ9KChuLmV2ZW50LnNwZWNpYWxbZy5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGcuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWQmJihhLnJlc3VsdD1kKT09PSExJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5cGUmJihcImNsaWNrXCIhPT1hLnR5cGV8fGlzTmFOKGEuYnV0dG9uKXx8YS5idXR0b248MSkpZm9yKDtpIT10aGlzO2k9aS5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1pLm5vZGVUeXBlJiYoaS5kaXNhYmxlZCE9PSEwfHxcImNsaWNrXCIhPT1hLnR5cGUpKXtmb3IoZD1bXSxjPTA7aD5jO2MrKylmPWJbY10sZT1mLnNlbGVjdG9yK1wiIFwiLHZvaWQgMD09PWRbZV0mJihkW2VdPWYubmVlZHNDb250ZXh0P24oZSx0aGlzKS5pbmRleChpKT4tMTpuLmZpbmQoZSx0aGlzLG51bGwsW2ldKS5sZW5ndGgpLGRbZV0mJmQucHVzaChmKTtkLmxlbmd0aCYmZy5wdXNoKHtlbGVtOmksaGFuZGxlcnM6ZH0pfXJldHVybiBoPGIubGVuZ3RoJiZnLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczpiLnNsaWNlKGgpfSksZ30sZml4OmZ1bmN0aW9uKGEpe2lmKGFbbi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGUsZj1hLnR5cGUsZz1hLGg9dGhpcy5maXhIb29rc1tmXTtofHwodGhpcy5maXhIb29rc1tmXT1oPW1hLnRlc3QoZik/dGhpcy5tb3VzZUhvb2tzOmxhLnRlc3QoZik/dGhpcy5rZXlIb29rczp7fSksZT1oLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGgucHJvcHMpOnRoaXMucHJvcHMsYT1uZXcgbi5FdmVudChnKSxiPWUubGVuZ3RoO3doaWxlKGItLSljPWVbYl0sYVtjXT1nW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFyZ2V0PWcuc3JjRWxlbWVudHx8ZCksMz09PWEudGFyZ2V0Lm5vZGVUeXBlJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5tZXRhS2V5PSEhYS5tZXRhS2V5LGguZmlsdGVyP2guZmlsdGVyKGEsZyk6YX0scHJvcHM6XCJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBkZXRhaWwgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoXCIuc3BsaXQoXCIgXCIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczpcImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGVcIi5zcGxpdChcIiBcIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWEud2hpY2gmJihhLndoaWNoPW51bGwhPWIuY2hhckNvZGU/Yi5jaGFyQ29kZTpiLmtleUNvZGUpLGF9fSxtb3VzZUhvb2tzOntwcm9wczpcImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudFwiLnNwbGl0KFwiIFwiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZz1iLmJ1dHRvbixoPWIuZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGU9YS50YXJnZXQub3duZXJEb2N1bWVudHx8ZCxmPWUuZG9jdW1lbnRFbGVtZW50LGM9ZS5ib2R5LGEucGFnZVg9Yi5jbGllbnRYKyhmJiZmLnNjcm9sbExlZnR8fGMmJmMuc2Nyb2xsTGVmdHx8MCktKGYmJmYuY2xpZW50TGVmdHx8YyYmYy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZiYmZi5zY3JvbGxUb3B8fGMmJmMuc2Nyb2xsVG9wfHwwKS0oZiYmZi5jbGllbnRUb3B8fGMmJmMuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmaCYmKGEucmVsYXRlZFRhcmdldD1oPT09YS50YXJnZXQ/Yi50b0VsZW1lbnQ6aCksYS53aGljaHx8dm9pZCAwPT09Z3x8KGEud2hpY2g9MSZnPzE6MiZnPzM6NCZnPzI6MCksYX19LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT1yYSgpJiZ0aGlzLmZvY3VzKXRyeXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGEpe319LGRlbGVnYXRlVHlwZTpcImZvY3VzaW5cIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09cmEoKSYmdGhpcy5ibHVyPyh0aGlzLmJsdXIoKSwhMSk6dm9pZCAwfSxkZWxlZ2F0ZVR5cGU6XCJmb2N1c291dFwifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBuLm5vZGVOYW1lKHRoaXMsXCJpbnB1dFwiKSYmXCJjaGVja2JveFwiPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG4ubm9kZU5hbWUoYS50YXJnZXQsXCJhXCIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW4uZXh0ZW5kKG5ldyBuLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO24uZXZlbnQudHJpZ2dlcihkLG51bGwsYiksZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbi5yZW1vdmVFdmVudD1kLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1cIm9uXCIrYjthLmRldGFjaEV2ZW50JiYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGFbZF0mJihhW2RdPW51bGwpLGEuZGV0YWNoRXZlbnQoZCxjKSl9LG4uRXZlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4uRXZlbnQ/KGEmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmYS5yZXR1cm5WYWx1ZT09PSExP3BhOnFhKTp0aGlzLnR5cGU9YSxiJiZuLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxuLm5vdygpLHZvaWQodGhpc1tuLmV4cGFuZG9dPSEwKSk6bmV3IG4uRXZlbnQoYSxiKX0sbi5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm4uRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOnFhLGlzUHJvcGFnYXRpb25TdG9wcGVkOnFhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOnFhLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXBhLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cGEsYSYmIXRoaXMuaXNTaW11bGF0ZWQmJihhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXBhLGEmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxuLmVhY2goe21vdXNlZW50ZXI6XCJtb3VzZW92ZXJcIixtb3VzZWxlYXZlOlwibW91c2VvdXRcIixwb2ludGVyZW50ZXI6XCJwb2ludGVyb3ZlclwiLHBvaW50ZXJsZWF2ZTpcInBvaW50ZXJvdXRcIn0sZnVuY3Rpb24oYSxiKXtuLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fG4uY29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLGwuc3VibWl0fHwobi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub2RlTmFtZSh0aGlzLFwiZm9ybVwiKT8hMTp2b2lkIG4uZXZlbnQuYWRkKHRoaXMsXCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXRcIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxjPW4ubm9kZU5hbWUoYixcImlucHV0XCIpfHxuLm5vZGVOYW1lKGIsXCJidXR0b25cIik/bi5wcm9wKGIsXCJmb3JtXCIpOnZvaWQgMDtjJiYhbi5fZGF0YShjLFwic3VibWl0XCIpJiYobi5ldmVudC5hZGQoYyxcInN1Ym1pdC5fc3VibWl0XCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0QnViYmxlPSEwfSksbi5fZGF0YShjLFwic3VibWl0XCIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0QnViYmxlJiYoZGVsZXRlIGEuX3N1Ym1pdEJ1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmbi5ldmVudC5zaW11bGF0ZShcInN1Ym1pdFwiLHRoaXMucGFyZW50Tm9kZSxhKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG4ubm9kZU5hbWUodGhpcyxcImZvcm1cIik/ITE6dm9pZCBuLmV2ZW50LnJlbW92ZSh0aGlzLFwiLl9zdWJtaXRcIil9fSksbC5jaGFuZ2V8fChuLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBrYS50ZXN0KHRoaXMubm9kZU5hbWUpPyhcImNoZWNrYm94XCIhPT10aGlzLnR5cGUmJlwicmFkaW9cIiE9PXRoaXMudHlwZXx8KG4uZXZlbnQuYWRkKHRoaXMsXCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlXCIsZnVuY3Rpb24oYSl7XCJjaGVja2VkXCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdENoYW5nZWQ9ITApfSksbi5ldmVudC5hZGQodGhpcyxcImNsaWNrLl9jaGFuZ2VcIixmdW5jdGlvbihhKXt0aGlzLl9qdXN0Q2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdENoYW5nZWQ9ITEpLG4uZXZlbnQuc2ltdWxhdGUoXCJjaGFuZ2VcIix0aGlzLGEpfSkpLCExKTp2b2lkIG4uZXZlbnQuYWRkKHRoaXMsXCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlXCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7a2EudGVzdChiLm5vZGVOYW1lKSYmIW4uX2RhdGEoYixcImNoYW5nZVwiKSYmKG4uZXZlbnQuYWRkKGIsXCJjaGFuZ2UuX2NoYW5nZVwiLGZ1bmN0aW9uKGEpeyF0aGlzLnBhcmVudE5vZGV8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxuLmV2ZW50LnNpbXVsYXRlKFwiY2hhbmdlXCIsdGhpcy5wYXJlbnROb2RlLGEpfSksbi5fZGF0YShiLFwiY2hhbmdlXCIsITApKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7cmV0dXJuIHRoaXMhPT1ifHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8XCJyYWRpb1wiIT09Yi50eXBlJiZcImNoZWNrYm94XCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBuLmV2ZW50LnJlbW92ZSh0aGlzLFwiLl9jaGFuZ2VcIiksIWthLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksbC5mb2N1c2lufHxuLmVhY2goe2ZvY3VzOlwiZm9jdXNpblwiLGJsdXI6XCJmb2N1c291dFwifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe24uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxuLmV2ZW50LmZpeChhKSl9O24uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1uLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbi5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW4uX2RhdGEoZCxiKS0xO2U/bi5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG4uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG4uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gc2EodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBzYSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixuKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlK1wiLlwiK2QubmFtZXNwYWNlOmQub3JpZ1R5cGUsZC5zZWxlY3RvcixkLmhhbmRsZXIpLHRoaXM7aWYoXCJvYmplY3RcIj09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJldHVybiBiIT09ITEmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9cWEpLHRoaXMuZWFjaChmdW5jdGlvbigpe24uZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/bi5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9fSk7dmFyIHRhPS8galF1ZXJ5XFxkKz1cIig/Om51bGx8XFxkKylcIi9nLHVhPW5ldyBSZWdFeHAoXCI8KD86XCIrYmErXCIpW1xcXFxzLz5dXCIsXCJpXCIpLHZhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcXHc6LV0rKVtePl0qKVxcLz4vZ2ksd2E9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2kseGE9L2NoZWNrZWRcXHMqKD86W149XXw9XFxzKi5jaGVja2VkLikvaSx5YT0vXnRydWVcXC8oLiopLyx6YT0vXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2csQWE9Y2EoZCksQmE9QWEuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTtmdW5jdGlvbiBDYShhLGIpe3JldHVybiBuLm5vZGVOYW1lKGEsXCJ0YWJsZVwiKSYmbi5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsXCJ0clwiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGJvZHlcIilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0Ym9keVwiKSk6YX1mdW5jdGlvbiBEYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bi5maW5kLmF0dHIoYSxcInR5cGVcIikpK1wiL1wiK2EudHlwZSxhfWZ1bmN0aW9uIEVhKGEpe3ZhciBiPXlhLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZShcInR5cGVcIiksYX1mdW5jdGlvbiBGYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZuLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW4uX2RhdGEoYSksZz1uLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyluLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW4uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBHYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWwubm9DbG9uZUV2ZW50JiZiW24uZXhwYW5kb10pe2U9bi5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyluLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobi5leHBhbmRvKX1cInNjcmlwdFwiPT09YyYmYi50ZXh0IT09YS50ZXh0PyhEYShiKS50ZXh0PWEudGV4dCxFYShiKSk6XCJvYmplY3RcIj09PWM/KGIucGFyZW50Tm9kZSYmKGIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MKSxsLmh0bWw1Q2xvbmUmJmEuaW5uZXJIVE1MJiYhbi50cmltKGIuaW5uZXJIVE1MKSYmKGIuaW5uZXJIVE1MPWEuaW5uZXJIVE1MKSk6XCJpbnB1dFwiPT09YyYmWi50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOlwib3B0aW9uXCI9PT1jP2IuZGVmYXVsdFNlbGVjdGVkPWIuc2VsZWN0ZWQ9YS5kZWZhdWx0U2VsZWN0ZWQ6XCJpbnB1dFwiIT09YyYmXCJ0ZXh0YXJlYVwiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19ZnVuY3Rpb24gSGEoYSxiLGMsZCl7Yj1mLmFwcGx5KFtdLGIpO3ZhciBlLGcsaCxpLGosayxtPTAsbz1hLmxlbmd0aCxwPW8tMSxxPWJbMF0scj1uLmlzRnVuY3Rpb24ocSk7aWYocnx8bz4xJiZcInN0cmluZ1wiPT10eXBlb2YgcSYmIWwuY2hlY2tDbG9uZSYmeGEudGVzdChxKSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWEuZXEoZSk7ciYmKGJbMF09cS5jYWxsKHRoaXMsZSxmLmh0bWwoKSkpLEhhKGYsYixjLGQpfSk7aWYobyYmKGs9amEoYixhWzBdLm93bmVyRG9jdW1lbnQsITEsYSxkKSxlPWsuZmlyc3RDaGlsZCwxPT09ay5jaGlsZE5vZGVzLmxlbmd0aCYmKGs9ZSksZXx8ZCkpe2ZvcihpPW4ubWFwKGVhKGssXCJzY3JpcHRcIiksRGEpLGg9aS5sZW5ndGg7bz5tO20rKylnPWssbSE9PXAmJihnPW4uY2xvbmUoZywhMCwhMCksaCYmbi5tZXJnZShpLGVhKGcsXCJzY3JpcHRcIikpKSxjLmNhbGwoYVttXSxnLG0pO2lmKGgpZm9yKGo9aVtpLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG4ubWFwKGksRWEpLG09MDtoPm07bSsrKWc9aVttXSxfLnRlc3QoZy50eXBlfHxcIlwiKSYmIW4uX2RhdGEoZyxcImdsb2JhbEV2YWxcIikmJm4uY29udGFpbnMoaixnKSYmKGcuc3JjP24uX2V2YWxVcmwmJm4uX2V2YWxVcmwoZy5zcmMpOm4uZ2xvYmFsRXZhbCgoZy50ZXh0fHxnLnRleHRDb250ZW50fHxnLmlubmVySFRNTHx8XCJcIikucmVwbGFjZSh6YSxcIlwiKSkpO2s9ZT1udWxsfXJldHVybiBhfWZ1bmN0aW9uIElhKGEsYixjKXtmb3IodmFyIGQsZT1iP24uZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGQ9ZVtmXSk7ZisrKWN8fDEhPT1kLm5vZGVUeXBlfHxuLmNsZWFuRGF0YShlYShkKSksZC5wYXJlbnROb2RlJiYoYyYmbi5jb250YWlucyhkLm93bmVyRG9jdW1lbnQsZCkmJmZhKGVhKGQsXCJzY3JpcHRcIikpLGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSk7cmV0dXJuIGF9bi5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh2YSxcIjwkMT48LyQyPlwiKX0sY2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1uLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihsLmh0bWw1Q2xvbmV8fG4uaXNYTUxEb2MoYSl8fCF1YS50ZXN0KFwiPFwiK2Eubm9kZU5hbWUrXCI+XCIpP2Y9YS5jbG9uZU5vZGUoITApOihCYS5pbm5lckhUTUw9YS5vdXRlckhUTUwsQmEucmVtb3ZlQ2hpbGQoZj1CYS5maXJzdENoaWxkKSksIShsLm5vQ2xvbmVFdmVudCYmbC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bi5pc1hNTERvYyhhKSkpZm9yKGQ9ZWEoZiksaD1lYShhKSxnPTA7bnVsbCE9KGU9aFtnXSk7KytnKWRbZ10mJkdhKGUsZFtnXSk7aWYoYilpZihjKWZvcihoPWh8fGVhKGEpLGQ9ZHx8ZWEoZiksZz0wO251bGwhPShlPWhbZ10pO2crKylGYShlLGRbZ10pO2Vsc2UgRmEoYSxmKTtyZXR1cm4gZD1lYShmLFwic2NyaXB0XCIpLGQubGVuZ3RoPjAmJmZhKGQsIWkmJmVhKGEsXCJzY3JpcHRcIikpLGQ9aD1lPW51bGwsZn0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW4uZXhwYW5kbyxqPW4uY2FjaGUsaz1sLmF0dHJpYnV0ZXMsbT1uLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxNKGQpKSYmKGY9ZFtpXSxnPWYmJmpbZl0pKXtpZihnLmV2ZW50cylmb3IoZSBpbiBnLmV2ZW50cyltW2VdP24uZXZlbnQucmVtb3ZlKGQsZSk6bi5yZW1vdmVFdmVudChkLGUsZy5oYW5kbGUpO2pbZl0mJihkZWxldGUgaltmXSxrfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgZC5yZW1vdmVBdHRyaWJ1dGU/ZFtpXT12b2lkIDA6ZC5yZW1vdmVBdHRyaWJ1dGUoaSksYy5wdXNoKGYpKX19fSksbi5mbi5leHRlbmQoe2RvbU1hbmlwOkhhLGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gSWEodGhpcyxhLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3JldHVybiBJYSh0aGlzLGEpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBZKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/bi50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8ZCkuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBIYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9Q2EodGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1DYSh0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0oYT10aGlzW2JdKTtiKyspezE9PT1hLm5vZGVUeXBlJiZuLmNsZWFuRGF0YShlYShhLCExKSk7d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTthLm9wdGlvbnMmJm4ubm9kZU5hbWUoYSxcInNlbGVjdFwiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UodGEsXCJcIik6dm9pZCAwO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBhJiYhd2EudGVzdChhKSYmKGwuaHRtbFNlcmlhbGl6ZXx8IXVhLnRlc3QoYSkpJiYobC5sZWFkaW5nV2hpdGVzcGFjZXx8IWFhLnRlc3QoYSkpJiYhZGFbKCQuZXhlYyhhKXx8W1wiXCIsXCJcIl0pWzFdLnRvTG93ZXJDYXNlKCldKXthPW4uaHRtbFByZWZpbHRlcihhKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihuLmNsZWFuRGF0YShlYShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPVtdO3JldHVybiBIYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihiKXt2YXIgYz10aGlzLnBhcmVudE5vZGU7bi5pbkFycmF5KHRoaXMsYSk8MCYmKG4uY2xlYW5EYXRhKGVhKHRoaXMpKSxjJiZjLnJlcGxhY2VDaGlsZChiLHRoaXMpKX0sYSl9fSksbi5lYWNoKHthcHBlbmRUbzpcImFwcGVuZFwiLHByZXBlbmRUbzpcInByZXBlbmRcIixpbnNlcnRCZWZvcmU6XCJiZWZvcmVcIixpbnNlcnRBZnRlcjpcImFmdGVyXCIscmVwbGFjZUFsbDpcInJlcGxhY2VXaXRoXCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZj1uKGEpLGg9Zi5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbihmW2RdKVtiXShjKSxnLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBKYSxLYT17SFRNTDpcImJsb2NrXCIsQk9EWTpcImJsb2NrXCJ9O2Z1bmN0aW9uIExhKGEsYil7dmFyIGM9bihiLmNyZWF0ZUVsZW1lbnQoYSkpLmFwcGVuZFRvKGIuYm9keSksZD1uLmNzcyhjWzBdLFwiZGlzcGxheVwiKTtyZXR1cm4gYy5kZXRhY2goKSxkfWZ1bmN0aW9uIE1hKGEpe3ZhciBiPWQsYz1LYVthXTtyZXR1cm4gY3x8KGM9TGEoYSxiKSxcIm5vbmVcIiE9PWMmJmN8fChKYT0oSmF8fG4oXCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+XCIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oSmFbMF0uY29udGVudFdpbmRvd3x8SmFbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9TGEoYSxiKSxKYS5kZXRhY2goKSksS2FbYV09YyksY312YXIgTmE9L15tYXJnaW4vLE9hPW5ldyBSZWdFeHAoXCJeKFwiK1QrXCIpKD8hcHgpW2EteiVdKyRcIixcImlcIiksUGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9LFFhPWQuZG9jdW1lbnRFbGVtZW50OyFmdW5jdGlvbigpe3ZhciBiLGMsZSxmLGcsaCxpPWQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxqPWQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpZihqLnN0eWxlKXtqLnN0eWxlLmNzc1RleHQ9XCJmbG9hdDpsZWZ0O29wYWNpdHk6LjVcIixsLm9wYWNpdHk9XCIwLjVcIj09PWouc3R5bGUub3BhY2l0eSxsLmNzc0Zsb2F0PSEhai5zdHlsZS5jc3NGbG9hdCxqLnN0eWxlLmJhY2tncm91bmRDbGlwPVwiY29udGVudC1ib3hcIixqLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9XCJcIixsLmNsZWFyQ2xvbmVTdHlsZT1cImNvbnRlbnQtYm94XCI9PT1qLnN0eWxlLmJhY2tncm91bmRDbGlwLGk9ZC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGkuc3R5bGUuY3NzVGV4dD1cImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlXCIsai5pbm5lckhUTUw9XCJcIixpLmFwcGVuZENoaWxkKGopLGwuYm94U2l6aW5nPVwiXCI9PT1qLnN0eWxlLmJveFNpemluZ3x8XCJcIj09PWouc3R5bGUuTW96Qm94U2l6aW5nfHxcIlwiPT09ai5zdHlsZS5XZWJraXRCb3hTaXppbmcsbi5leHRlbmQobCx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWImJmsoKSxmfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksZX0scGl4ZWxNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksY30scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksYn0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksZ30scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWImJmsoKSxofX0pO2Z1bmN0aW9uIGsoKXt2YXIgayxsLG09ZC5kb2N1bWVudEVsZW1lbnQ7bS5hcHBlbmRDaGlsZChpKSxqLnN0eWxlLmNzc1RleHQ9XCItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3RvcDoxJTt3aWR0aDo1MCVcIixiPWU9aD0hMSxjPWc9ITAsYS5nZXRDb21wdXRlZFN0eWxlJiYobD1hLmdldENvbXB1dGVkU3R5bGUoaiksYj1cIjElXCIhPT0obHx8e30pLnRvcCxoPVwiMnB4XCI9PT0obHx8e30pLm1hcmdpbkxlZnQsZT1cIjRweFwiPT09KGx8fHt3aWR0aDpcIjRweFwifSkud2lkdGgsai5zdHlsZS5tYXJnaW5SaWdodD1cIjUwJVwiLGM9XCI0cHhcIj09PShsfHx7bWFyZ2luUmlnaHQ6XCI0cHhcIn0pLm1hcmdpblJpZ2h0LGs9ai5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLGsuc3R5bGUuY3NzVGV4dD1qLnN0eWxlLmNzc1RleHQ9XCItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjBcIixrLnN0eWxlLm1hcmdpblJpZ2h0PWsuc3R5bGUud2lkdGg9XCIwXCIsai5zdHlsZS53aWR0aD1cIjFweFwiLGc9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShrKXx8e30pLm1hcmdpblJpZ2h0KSxqLnJlbW92ZUNoaWxkKGspKSxqLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsZj0wPT09ai5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCxmJiYoai5zdHlsZS5kaXNwbGF5PVwiXCIsai5pbm5lckhUTUw9XCI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+XCIsaz1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGRcIiksa1swXS5zdHlsZS5jc3NUZXh0PVwibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZVwiLGY9MD09PWtbMF0ub2Zmc2V0SGVpZ2h0LGYmJihrWzBdLnN0eWxlLmRpc3BsYXk9XCJcIixrWzFdLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsZj0wPT09a1swXS5vZmZzZXRIZWlnaHQpKSxtLnJlbW92ZUNoaWxkKGkpfX19KCk7dmFyIFJhLFNhLFRhPS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLzthLmdldENvbXB1dGVkU3R5bGU/KFJhPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHlsZShiKX0sU2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxSYShhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxcIlwiIT09ZyYmdm9pZCAwIT09Z3x8bi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPW4uc3R5bGUoYSxiKSksYyYmIWwucGl4ZWxNYXJnaW5SaWdodCgpJiZPYS50ZXN0KGcpJiZOYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpLHZvaWQgMD09PWc/ZzpnK1wiXCJ9KTpRYS5jdXJyZW50U3R5bGUmJihSYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5jdXJyZW50U3R5bGV9LFNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8UmEoYSksZz1jP2NbYl06dm9pZCAwLG51bGw9PWcmJmgmJmhbYl0mJihnPWhbYl0pLE9hLnRlc3QoZykmJiFUYS50ZXN0KGIpJiYoZD1oLmxlZnQsZT1hLnJ1bnRpbWVTdHlsZSxmPWUmJmUubGVmdCxmJiYoZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQpLGgubGVmdD1cImZvbnRTaXplXCI9PT1iP1wiMWVtXCI6ZyxnPWgucGl4ZWxMZWZ0K1wicHhcIixoLmxlZnQ9ZCxmJiYoZS5sZWZ0PWYpKSx2b2lkIDA9PT1nP2c6ZytcIlwifHxcImF1dG9cIn0pO2Z1bmN0aW9uIFVhKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBhKCk/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXZhciBWYT0vYWxwaGFcXChbXildKlxcKS9pLFdhPS9vcGFjaXR5XFxzKj1cXHMqKFteKV0qKS9pLFhhPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxZYT1uZXcgUmVnRXhwKFwiXihcIitUK1wiKSguKikkXCIsXCJpXCIpLFphPXtwb3NpdGlvbjpcImFic29sdXRlXCIsdmlzaWJpbGl0eTpcImhpZGRlblwiLGRpc3BsYXk6XCJibG9ja1wifSwkYT17bGV0dGVyU3BhY2luZzpcIjBcIixmb250V2VpZ2h0OlwiNDAwXCJ9LF9hPVtcIldlYmtpdFwiLFwiT1wiLFwiTW96XCIsXCJtc1wiXSxhYj1kLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGU7ZnVuY3Rpb24gYmIoYSl7aWYoYSBpbiBhYilyZXR1cm4gYTt2YXIgYj1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc2xpY2UoMSksYz1fYS5sZW5ndGg7d2hpbGUoYy0tKWlmKGE9X2FbY10rYixhIGluIGFiKXJldHVybiBhfWZ1bmN0aW9uIGNiKGEsYil7Zm9yKHZhciBjLGQsZSxmPVtdLGc9MCxoPWEubGVuZ3RoO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihmW2ddPW4uX2RhdGEoZCxcIm9sZGRpc3BsYXlcIiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8XCJub25lXCIhPT1jfHwoZC5zdHlsZS5kaXNwbGF5PVwiXCIpLFwiXCI9PT1kLnN0eWxlLmRpc3BsYXkmJlcoZCkmJihmW2ddPW4uX2RhdGEoZCxcIm9sZGRpc3BsYXlcIixNYShkLm5vZGVOYW1lKSkpKTooZT1XKGQpLChjJiZcIm5vbmVcIiE9PWN8fCFlKSYmbi5fZGF0YShkLFwib2xkZGlzcGxheVwiLGU/YzpuLmNzcyhkLFwiZGlzcGxheVwiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiZcIm5vbmVcIiE9PWQuc3R5bGUuZGlzcGxheSYmXCJcIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fFwiXCI6XCJub25lXCIpKTtyZXR1cm4gYX1mdW5jdGlvbiBkYihhLGIsYyl7dmFyIGQ9WWEuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMV0tKGN8fDApKSsoZFsyXXx8XCJweFwiKTpifWZ1bmN0aW9uIGViKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD9cImJvcmRlclwiOlwiY29udGVudFwiKT80Olwid2lkdGhcIj09PWI/MTowLGc9MDs0PmY7Zis9MilcIm1hcmdpblwiPT09YyYmKGcrPW4uY3NzKGEsYytWW2ZdLCEwLGUpKSxkPyhcImNvbnRlbnRcIj09PWMmJihnLT1uLmNzcyhhLFwicGFkZGluZ1wiK1ZbZl0sITAsZSkpLFwibWFyZ2luXCIhPT1jJiYoZy09bi5jc3MoYSxcImJvcmRlclwiK1ZbZl0rXCJXaWR0aFwiLCEwLGUpKSk6KGcrPW4uY3NzKGEsXCJwYWRkaW5nXCIrVltmXSwhMCxlKSxcInBhZGRpbmdcIiE9PWMmJihnKz1uLmNzcyhhLFwiYm9yZGVyXCIrVltmXStcIldpZHRoXCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiBmYihiLGMsZSl7dmFyIGY9ITAsZz1cIndpZHRoXCI9PT1jP2Iub2Zmc2V0V2lkdGg6Yi5vZmZzZXRIZWlnaHQsaD1SYShiKSxpPWwuYm94U2l6aW5nJiZcImJvcmRlci1ib3hcIj09PW4uY3NzKGIsXCJib3hTaXppbmdcIiwhMSxoKTtpZihkLm1zRnVsbHNjcmVlbkVsZW1lbnQmJmEudG9wIT09YSYmYi5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKGc9TWF0aC5yb3VuZCgxMDAqYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtjXSkpLDA+PWd8fG51bGw9PWcpe2lmKGc9U2EoYixjLGgpLCgwPmd8fG51bGw9PWcpJiYoZz1iLnN0eWxlW2NdKSxPYS50ZXN0KGcpKXJldHVybiBnO2Y9aSYmKGwuYm94U2l6aW5nUmVsaWFibGUoKXx8Zz09PWIuc3R5bGVbY10pLGc9cGFyc2VGbG9hdChnKXx8MH1yZXR1cm4gZytlYihiLGMsZXx8KGk/XCJib3JkZXJcIjpcImNvbnRlbnRcIiksZixoKStcInB4XCJ9bi5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1TYShhLFwib3BhY2l0eVwiKTtyZXR1cm5cIlwiPT09Yz9cIjFcIjpjfX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOntcImZsb2F0XCI6bC5jc3NGbG9hdD9cImNzc0Zsb2F0XCI6XCJzdHlsZUZsb2F0XCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGUsZixnLGg9bi5jYW1lbENhc2UoYiksaT1hLnN0eWxlO2lmKGI9bi5jc3NQcm9wc1toXXx8KG4uY3NzUHJvcHNbaF09YmIoaCl8fGgpLGc9bi5jc3NIb29rc1tiXXx8bi5jc3NIb29rc1toXSx2b2lkIDA9PT1jKXJldHVybiBnJiZcImdldFwiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdO2lmKGY9dHlwZW9mIGMsXCJzdHJpbmdcIj09PWYmJihlPVUuZXhlYyhjKSkmJmVbMV0mJihjPVgoYSxiLGUpLGY9XCJudW1iZXJcIiksbnVsbCE9YyYmYz09PWMmJihcIm51bWJlclwiPT09ZiYmKGMrPWUmJmVbM118fChuLmNzc051bWJlcltoXT9cIlwiOlwicHhcIikpLGwuY2xlYXJDbG9uZVN0eWxlfHxcIlwiIT09Y3x8MCE9PWIuaW5kZXhPZihcImJhY2tncm91bmRcIil8fChpW2JdPVwiaW5oZXJpdFwiKSwhKGcmJlwic2V0XCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW4uY2FtZWxDYXNlKGIpO3JldHVybiBiPW4uY3NzUHJvcHNbaF18fChuLmNzc1Byb3BzW2hdPWJiKGgpfHxoKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sZyYmXCJnZXRcImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPVNhKGEsYixkKSksXCJub3JtYWxcIj09PWYmJmIgaW4gJGEmJihmPSRhW2JdKSxcIlwiPT09Y3x8Yz8oZT1wYXJzZUZsb2F0KGYpLGM9PT0hMHx8aXNGaW5pdGUoZSk/ZXx8MDpmKTpmfX0pLG4uZWFjaChbXCJoZWlnaHRcIixcIndpZHRoXCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz9YYS50ZXN0KG4uY3NzKGEsXCJkaXNwbGF5XCIpKSYmMD09PWEub2Zmc2V0V2lkdGg/UGEoYSxaYSxmdW5jdGlvbigpe3JldHVybiBmYihhLGIsZCl9KTpmYihhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJlJhKGEpO3JldHVybiBkYihhLGMsZD9lYihhLGIsZCxsLmJveFNpemluZyYmXCJib3JkZXItYm94XCI9PT1uLmNzcyhhLFwiYm94U2l6aW5nXCIsITEsZSksZSk6MCl9fX0pLGwub3BhY2l0eXx8KG4uY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIFdhLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fFwiXCIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrXCJcIjpiP1wiMVwiOlwiXCJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW4uaXNOdW1lcmljKGIpP1wiYWxwaGEob3BhY2l0eT1cIisxMDAqYitcIilcIjpcIlwiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHxcIlwiO2Muem9vbT0xLChiPj0xfHxcIlwiPT09YikmJlwiXCI9PT1uLnRyaW0oZi5yZXBsYWNlKFZhLFwiXCIpKSYmYy5yZW1vdmVBdHRyaWJ1dGUmJihjLnJlbW92ZUF0dHJpYnV0ZShcImZpbHRlclwiKSxcIlwiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPVZhLnRlc3QoZik/Zi5yZXBsYWNlKFZhLGUpOmYrXCIgXCIrZSl9fSksbi5jc3NIb29rcy5tYXJnaW5SaWdodD1VYShsLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9QYShhLHtkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCJ9LFNhLFthLFwibWFyZ2luUmlnaHRcIl0pOnZvaWQgMH0pLG4uY3NzSG9va3MubWFyZ2luTGVmdD1VYShsLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihhLGIpe1xucmV0dXJuIGI/KHBhcnNlRmxvYXQoU2EoYSxcIm1hcmdpbkxlZnRcIikpfHwobi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk/YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LVBhKGEse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSk6MCkpK1wicHhcIjp2b2lkIDB9KSxuLmVhY2goe21hcmdpbjpcIlwiLHBhZGRpbmc6XCJcIixib3JkZXI6XCJXaWR0aFwifSxmdW5jdGlvbihhLGIpe24uY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj1cInN0cmluZ1wiPT10eXBlb2YgYz9jLnNwbGl0KFwiIFwiKTpbY107ND5kO2QrKyllW2ErVltkXStiXT1mW2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxOYS50ZXN0KGEpfHwobi5jc3NIb29rc1thK2JdLnNldD1kYil9KSxuLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihuLmlzQXJyYXkoYikpe2ZvcihkPVJhKGEpLGU9Yi5sZW5ndGg7ZT5nO2crKylmW2JbZ11dPW4uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9uLnN0eWxlKGEsYixjKTpuLmNzcyhhLGIpfSxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1codGhpcyk/bih0aGlzKS5zaG93KCk6bih0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBnYihhLGIsYyxkLGUpe3JldHVybiBuZXcgZ2IucHJvdG90eXBlLmluaXQoYSxiLGMsZCxlKX1uLlR3ZWVuPWdiLGdiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Z2IsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsdGhpcy5lYXNpbmc9ZXx8bi5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChuLmNzc051bWJlcltjXT9cIlwiOlwicHhcIil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPWdiLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpnYi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1nYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOmdiLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LGdiLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1nYi5wcm90b3R5cGUsZ2IucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiAxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsIT1hLmVsZW1bYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW2EucHJvcF0/YS5lbGVtW2EucHJvcF06KGI9bi5jc3MoYS5lbGVtLGEucHJvcCxcIlwiKSxiJiZcImF1dG9cIiE9PWI/YjowKX0sc2V0OmZ1bmN0aW9uKGEpe24uZnguc3RlcFthLnByb3BdP24uZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGw9PWEuZWxlbS5zdHlsZVtuLmNzc1Byb3BzW2EucHJvcF1dJiYhbi5jc3NIb29rc1thLnByb3BdP2EuZWxlbVthLnByb3BdPWEubm93Om4uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpfX19LGdiLnByb3BIb29rcy5zY3JvbGxUb3A9Z2IucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbi5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVsdDpcInN3aW5nXCJ9LG4uZng9Z2IucHJvdG90eXBlLmluaXQsbi5meC5zdGVwPXt9O3ZhciBoYixpYixqYj0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sa2I9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBsYigpe3JldHVybiBhLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtoYj12b2lkIDB9KSxoYj1uLm5vdygpfWZ1bmN0aW9uIG1iKGEsYil7dmFyIGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VltlXSxkW1wibWFyZ2luXCIrY109ZFtcInBhZGRpbmdcIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBuYihhLGIsYyl7Zm9yKHZhciBkLGU9KHFiLnR3ZWVuZXJzW2JdfHxbXSkuY29uY2F0KHFiLnR3ZWVuZXJzW1wiKlwiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gb2IoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbT10aGlzLG89e30scD1hLnN0eWxlLHE9YS5ub2RlVHlwZSYmVyhhKSxyPW4uX2RhdGEoYSxcImZ4c2hvd1wiKTtjLnF1ZXVlfHwoaD1uLl9xdWV1ZUhvb2tzKGEsXCJmeFwiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxtLmFsd2F5cyhmdW5jdGlvbigpe20uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG4ucXVldWUoYSxcImZ4XCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKFwiaGVpZ2h0XCJpbiBifHxcIndpZHRoXCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bi5jc3MoYSxcImRpc3BsYXlcIiksaz1cIm5vbmVcIj09PWo/bi5fZGF0YShhLFwib2xkZGlzcGxheVwiKXx8TWEoYS5ub2RlTmFtZSk6aixcImlubGluZVwiPT09ayYmXCJub25lXCI9PT1uLmNzcyhhLFwiZmxvYXRcIikmJihsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJlwiaW5saW5lXCIhPT1NYShhLm5vZGVOYW1lKT9wLnpvb209MTpwLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIikpLGMub3ZlcmZsb3cmJihwLm92ZXJmbG93PVwiaGlkZGVuXCIsbC5zaHJpbmtXcmFwQmxvY2tzKCl8fG0uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxqYi5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fFwidG9nZ2xlXCI9PT1lLGU9PT0ocT9cImhpZGVcIjpcInNob3dcIikpe2lmKFwic2hvd1wiIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29udGludWU7cT0hMH1vW2RdPXImJnJbZF18fG4uc3R5bGUoYSxkKX1lbHNlIGo9dm9pZCAwO2lmKG4uaXNFbXB0eU9iamVjdChvKSlcImlubGluZVwiPT09KFwibm9uZVwiPT09aj9NYShhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I/XCJoaWRkZW5cImluIHImJihxPXIuaGlkZGVuKTpyPW4uX2RhdGEoYSxcImZ4c2hvd1wiLHt9KSxmJiYoci5oaWRkZW49IXEpLHE/bihhKS5zaG93KCk6bS5kb25lKGZ1bmN0aW9uKCl7bihhKS5oaWRlKCl9KSxtLmRvbmUoZnVuY3Rpb24oKXt2YXIgYjtuLl9yZW1vdmVEYXRhKGEsXCJmeHNob3dcIik7Zm9yKGIgaW4gbyluLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1uYihxP3JbZF06MCxkLG0pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PVwid2lkdGhcIj09PWR8fFwiaGVpZ2h0XCI9PT1kPzE6MCkpfX1mdW5jdGlvbiBwYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPW4uY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sbi5pc0FycmF5KGYpJiYoZT1mWzFdLGY9YVtjXT1mWzBdKSxjIT09ZCYmKGFbZF09ZixkZWxldGUgYVtjXSksZz1uLmNzc0hvb2tzW2RdLGcmJlwiZXhwYW5kXCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24gcWIoYSxiLGMpe3ZhciBkLGUsZj0wLGc9cWIucHJlZmlsdGVycy5sZW5ndGgsaD1uLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxlbX0pLGk9ZnVuY3Rpb24oKXtpZihlKXJldHVybiExO2Zvcih2YXIgYj1oYnx8bGIoKSxjPU1hdGgubWF4KDAsai5zdGFydFRpbWUrai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxnPTAsaT1qLnR3ZWVucy5sZW5ndGg7aT5nO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtqLGYsY10pLDE+ZiYmaT9jOihoLnJlc29sdmVXaXRoKGEsW2pdKSwhMSl9LGo9aC5wcm9taXNlKHtlbGVtOmEscHJvcHM6bi5leHRlbmQoe30sYiksb3B0czpuLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6bi5lYXNpbmcuX2RlZmF1bHR9LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpoYnx8bGIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW4uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI/KGgubm90aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbaixiXSkpOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IocGIoayxqLm9wdHMuc3BlY2lhbEVhc2luZyk7Zz5mO2YrKylpZihkPXFiLnByZWZpbHRlcnNbZl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiBuLmlzRnVuY3Rpb24oZC5zdG9wKSYmKG4uX3F1ZXVlSG9va3Moai5lbGVtLGoub3B0cy5xdWV1ZSkuc3RvcD1uLnByb3h5KGQuc3RvcCxkKSksZDtyZXR1cm4gbi5tYXAoayxuYixqKSxuLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYmai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxuLmZ4LnRpbWVyKG4uZXh0ZW5kKGkse2VsZW06YSxhbmltOmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpfW4uQW5pbWF0aW9uPW4uZXh0ZW5kKHFiLHt0d2VlbmVyczp7XCIqXCI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBYKGMuZWxlbSxhLFUuZXhlYyhiKSxjKSxjfV19LHR3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtuLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVtcIipcIl0pOmE9YS5tYXRjaChHKTtmb3IodmFyIGMsZD0wLGU9YS5sZW5ndGg7ZT5kO2QrKyljPWFbZF0scWIudHdlZW5lcnNbY109cWIudHdlZW5lcnNbY118fFtdLHFiLnR3ZWVuZXJzW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcnM6W29iXSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP3FiLnByZWZpbHRlcnMudW5zaGlmdChhKTpxYi5wcmVmaWx0ZXJzLnB1c2goYSl9fSksbi5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmXCJvYmplY3RcIj09dHlwZW9mIGE/bi5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxuLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIW4uaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIGQuZHVyYXRpb249bi5meC5vZmY/MDpcIm51bWJlclwiPT10eXBlb2YgZC5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5kdXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsbnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT1cImZ4XCIpLGQub2xkPWQuY29tcGxldGUsZC5jb21wbGV0ZT1mdW5jdGlvbigpe24uaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZSYmbi5kZXF1ZXVlKHRoaXMsZC5xdWV1ZSl9LGR9LG4uZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKFcpLmNzcyhcIm9wYWNpdHlcIiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bi5pc0VtcHR5T2JqZWN0KGEpLGY9bi5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPXFiKHRoaXMsbi5leHRlbmQoe30sYSksZik7KGV8fG4uX2RhdGEodGhpcyxcImZpbmlzaFwiKSkmJmIuc3RvcCghMCl9O3JldHVybiBnLmZpbmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHxcImZ4XCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYStcInF1ZXVlSG9va3NcIixmPW4udGltZXJzLGc9bi5fZGF0YSh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZrYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxuLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8XCJmeFwiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYixjPW4uX2RhdGEodGhpcyksZD1jW2ErXCJxdWV1ZVwiXSxlPWNbYStcInF1ZXVlSG9va3NcIl0sZj1uLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbi5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxuLmVhY2goW1widG9nZ2xlXCIsXCJzaG93XCIsXCJoaWRlXCJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bi5mbltiXTtuLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8XCJib29sZWFuXCI9PXR5cGVvZiBhP2MuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShtYihiLCEwKSxhLGQsZSl9fSksbi5lYWNoKHtzbGlkZURvd246bWIoXCJzaG93XCIpLHNsaWRlVXA6bWIoXCJoaWRlXCIpLHNsaWRlVG9nZ2xlOm1iKFwidG9nZ2xlXCIpLGZhZGVJbjp7b3BhY2l0eTpcInNob3dcIn0sZmFkZU91dDp7b3BhY2l0eTpcImhpZGVcIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eTpcInRvZ2dsZVwifX0sZnVuY3Rpb24oYSxiKXtuLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLG4udGltZXJzPVtdLG4uZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGI9bi50aW1lcnMsYz0wO2ZvcihoYj1uLm5vdygpO2M8Yi5sZW5ndGg7YysrKWE9YltjXSxhKCl8fGJbY10hPT1hfHxiLnNwbGljZShjLS0sMSk7Yi5sZW5ndGh8fG4uZnguc3RvcCgpLGhiPXZvaWQgMH0sbi5meC50aW1lcj1mdW5jdGlvbihhKXtuLnRpbWVycy5wdXNoKGEpLGEoKT9uLmZ4LnN0YXJ0KCk6bi50aW1lcnMucG9wKCl9LG4uZnguaW50ZXJ2YWw9MTMsbi5meC5zdGFydD1mdW5jdGlvbigpe2lifHwoaWI9YS5zZXRJbnRlcnZhbChuLmZ4LnRpY2ssbi5meC5pbnRlcnZhbCkpfSxuLmZ4LnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFySW50ZXJ2YWwoaWIpLGliPW51bGx9LG4uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG4uZm4uZGVsYXk9ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj1uLmZ4P24uZnguc3BlZWRzW2JdfHxiOmIsYz1jfHxcImZ4XCIsdGhpcy5xdWV1ZShjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9YS5zZXRUaW1lb3V0KGMsYik7ZC5zdG9wPWZ1bmN0aW9uKCl7YS5jbGVhclRpbWVvdXQoZSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYj1kLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSxjPWQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxlPWQuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiKSxmPWUuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIpKTtjPWQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxjLnNldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiLFwidFwiKSxjLmlubmVySFRNTD1cIiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPlwiLGE9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIilbMF0sYi5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJjaGVja2JveFwiKSxjLmFwcGVuZENoaWxkKGIpLGE9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIilbMF0sYS5zdHlsZS5jc3NUZXh0PVwidG9wOjFweFwiLGwuZ2V0U2V0QXR0cmlidXRlPVwidFwiIT09Yy5jbGFzc05hbWUsbC5zdHlsZT0vdG9wLy50ZXN0KGEuZ2V0QXR0cmlidXRlKFwic3R5bGVcIikpLGwuaHJlZk5vcm1hbGl6ZWQ9XCIvYVwiPT09YS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLGwuY2hlY2tPbj0hIWIudmFsdWUsbC5vcHRTZWxlY3RlZD1mLnNlbGVjdGVkLGwuZW5jdHlwZT0hIWQuY3JlYXRlRWxlbWVudChcImZvcm1cIikuZW5jdHlwZSxlLmRpc2FibGVkPSEwLGwub3B0RGlzYWJsZWQ9IWYuZGlzYWJsZWQsYj1kLmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSxiLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIiksbC5pbnB1dD1cIlwiPT09Yi5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSxiLnZhbHVlPVwidFwiLGIuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwicmFkaW9cIiksbC5yYWRpb1ZhbHVlPVwidFwiPT09Yi52YWx1ZX0oKTt2YXIgcmI9L1xcci9nLHNiPS9bXFx4MjBcXHRcXHJcXG5cXGZdKy9nO24uZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1uLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9XCJcIjpcIm51bWJlclwiPT10eXBlb2YgZT9lKz1cIlwiOm4uaXNBcnJheShlKSYmKGU9bi5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9cIlwiOmErXCJcIn0pKSxiPW4udmFsSG9va3NbdGhpcy50eXBlXXx8bi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJlwic2V0XCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsXCJ2YWx1ZVwiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1uLnZhbEhvb2tzW2UudHlwZV18fG4udmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiZcImdldFwiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSxcInZhbHVlXCIpKT9jOihjPWUudmFsdWUsXCJzdHJpbmdcIj09dHlwZW9mIGM/Yy5yZXBsYWNlKHJiLFwiXCIpOm51bGw9PWM/XCJcIjpjKX19fSksbi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1uLmZpbmQuYXR0cihhLFwidmFsdWVcIik7cmV0dXJuIG51bGwhPWI/YjpuLnRyaW0obi50ZXh0KGEpKS5yZXBsYWNlKHNiLFwiIFwiKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQ9YS5vcHRpb25zLGU9YS5zZWxlY3RlZEluZGV4LGY9XCJzZWxlY3Qtb25lXCI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sKGMuc2VsZWN0ZWR8fGk9PT1lKSYmKGwub3B0RGlzYWJsZWQ/IWMuZGlzYWJsZWQ6bnVsbD09PWMuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikpJiYoIWMucGFyZW50Tm9kZS5kaXNhYmxlZHx8IW4ubm9kZU5hbWUoYy5wYXJlbnROb2RlLFwib3B0Z3JvdXBcIikpKXtpZihiPW4oYykudmFsKCksZilyZXR1cm4gYjtnLnB1c2goYil9cmV0dXJuIGd9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT1hLm9wdGlvbnMsZj1uLm1ha2VBcnJheShiKSxnPWUubGVuZ3RoO3doaWxlKGctLSlpZihkPWVbZ10sbi5pbkFycmF5KG4udmFsSG9va3Mub3B0aW9uLmdldChkKSxmKT4tMSl0cnl7ZC5zZWxlY3RlZD1jPSEwfWNhdGNoKGgpe2Quc2Nyb2xsSGVpZ2h0fWVsc2UgZC5zZWxlY3RlZD0hMTtyZXR1cm4gY3x8KGEuc2VsZWN0ZWRJbmRleD0tMSksZX19fX0pLG4uZWFjaChbXCJyYWRpb1wiLFwiY2hlY2tib3hcIl0sZnVuY3Rpb24oKXtuLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5pc0FycmF5KGIpP2EuY2hlY2tlZD1uLmluQXJyYXkobihhKS52YWwoKSxiKT4tMTp2b2lkIDB9fSxsLmNoZWNrT258fChuLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKFwidmFsdWVcIik/XCJvblwiOmEudmFsdWV9KX0pO3ZhciB0Yix1Yix2Yj1uLmV4cHIuYXR0ckhhbmRsZSx3Yj0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHhiPWwuZ2V0U2V0QXR0cmlidXRlLHliPWwuaW5wdXQ7bi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWSh0aGlzLG4uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgYS5nZXRBdHRyaWJ1dGU/bi5wcm9wKGEsYixjKTooMT09PWYmJm4uaXNYTUxEb2MoYSl8fChiPWIudG9Mb3dlckNhc2UoKSxlPW4uYXR0ckhvb2tzW2JdfHwobi5leHByLm1hdGNoLmJvb2wudGVzdChiKT91Yjp0YikpLHZvaWQgMCE9PWM/bnVsbD09PWM/dm9pZCBuLnJlbW92ZUF0dHIoYSxiKTplJiZcInNldFwiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOihhLnNldEF0dHJpYnV0ZShiLGMrXCJcIiksYyk6ZSYmXCJnZXRcImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOihkPW4uZmluZC5hdHRyKGEsYiksbnVsbD09ZD92b2lkIDA6ZCkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKCFsLnJhZGlvVmFsdWUmJlwicmFkaW9cIj09PWImJm4ubm9kZU5hbWUoYSxcImlucHV0XCIpKXt2YXIgYz1hLnZhbHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZShcInR5cGVcIixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPTAsZj1iJiZiLm1hdGNoKEcpO2lmKGYmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZltlKytdKWQ9bi5wcm9wRml4W2NdfHxjLG4uZXhwci5tYXRjaC5ib29sLnRlc3QoYyk/eWImJnhifHwhd2IudGVzdChjKT9hW2RdPSExOmFbbi5jYW1lbENhc2UoXCJkZWZhdWx0LVwiK2MpXT1hW2RdPSExOm4uYXR0cihhLGMsXCJcIiksYS5yZW1vdmVBdHRyaWJ1dGUoeGI/YzpkKX19KSx1Yj17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj09PSExP24ucmVtb3ZlQXR0cihhLGMpOnliJiZ4Ynx8IXdiLnRlc3QoYyk/YS5zZXRBdHRyaWJ1dGUoIXhiJiZuLnByb3BGaXhbY118fGMsYyk6YVtuLmNhbWVsQ2FzZShcImRlZmF1bHQtXCIrYyldPWFbY109ITAsY319LG4uZWFjaChuLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1xcdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz12YltiXXx8bi5maW5kLmF0dHI7eWImJnhifHwhd2IudGVzdChiKT92YltiXT1mdW5jdGlvbihhLGIsZCl7dmFyIGUsZjtyZXR1cm4gZHx8KGY9dmJbYl0sdmJbYl09ZSxlPW51bGwhPWMoYSxiLGQpP2IudG9Mb3dlckNhc2UoKTpudWxsLHZiW2JdPWYpLGV9OnZiW2JdPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6YVtuLmNhbWVsQ2FzZShcImRlZmF1bHQtXCIrYildP2IudG9Mb3dlckNhc2UoKTpudWxsfX0pLHliJiZ4Ynx8KG4uYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLm5vZGVOYW1lKGEsXCJpbnB1dFwiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOnRiJiZ0Yi5zZXQoYSxiLGMpfX0pLHhifHwodGI9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPVwiXCIsXCJ2YWx1ZVwiPT09Y3x8Yj09PWEuZ2V0QXR0cmlidXRlKGMpP2I6dm9pZCAwfX0sdmIuaWQ9dmIubmFtZT12Yi5jb29yZHM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZcIlwiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG4udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6dGIuc2V0fSxuLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7dGIuc2V0KGEsXCJcIj09PWI/ITE6YixjKX19LG4uZWFjaChbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLGZ1bmN0aW9uKGEsYil7bi5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVyblwiXCI9PT1jPyhhLnNldEF0dHJpYnV0ZShiLFwiYXV0b1wiKSxjKTp2b2lkIDB9fX0pKSxsLnN0eWxlfHwobi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0fHx2b2lkIDB9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9YitcIlwifX0pO3ZhciB6Yj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSxBYj0vXig/OmF8YXJlYSkkL2k7bi5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWSh0aGlzLG4ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1uLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gMT09PWYmJm4uaXNYTUxEb2MoYSl8fChiPW4ucHJvcEZpeFtiXXx8YixlPW4ucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJlwic2V0XCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJlwiZ2V0XCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bi5maW5kLmF0dHIoYSxcInRhYmluZGV4XCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOnpiLnRlc3QoYS5ub2RlTmFtZSl8fEFiLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BGaXg6e1wiZm9yXCI6XCJodG1sRm9yXCIsXCJjbGFzc1wiOlwiY2xhc3NOYW1lXCJ9fSksbC5ocmVmTm9ybWFsaXplZHx8bi5lYWNoKFtcImhyZWZcIixcInNyY1wiXSxmdW5jdGlvbihhLGIpe24ucHJvcEhvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKGIsNCl9fX0pLGwub3B0U2VsZWN0ZWR8fChuLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksbi5lYWNoKFtcInRhYkluZGV4XCIsXCJyZWFkT25seVwiLFwibWF4TGVuZ3RoXCIsXCJjZWxsU3BhY2luZ1wiLFwiY2VsbFBhZGRpbmdcIixcInJvd1NwYW5cIixcImNvbFNwYW5cIixcInVzZU1hcFwiLFwiZnJhbWVCb3JkZXJcIixcImNvbnRlbnRFZGl0YWJsZVwiXSxmdW5jdGlvbigpe24ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxsLmVuY3R5cGV8fChuLnByb3BGaXguZW5jdHlwZT1cImVuY29kaW5nXCIpO3ZhciBCYj0vW1xcdFxcclxcblxcZl0vZztmdW5jdGlvbiBDYihhKXtyZXR1cm4gbi5hdHRyKGEsXCJjbGFzc1wiKXx8XCJcIn1uLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0wO2lmKG4uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYixDYih0aGlzKSkpfSk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChHKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1DYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYoXCIgXCIrZStcIiBcIikucmVwbGFjZShCYixcIiBcIikpe2c9MDt3aGlsZShmPWJbZysrXSlkLmluZGV4T2YoXCIgXCIrZitcIiBcIik8MCYmKGQrPWYrXCIgXCIpO2g9bi50cmltKGQpLGUhPT1oJiZuLmF0dHIoYyxcImNsYXNzXCIsaCl9fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYobi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLENiKHRoaXMpKSl9KTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKFwiY2xhc3NcIixcIlwiKTtpZihcInN0cmluZ1wiPT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEcpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPUNiKGMpLGQ9MT09PWMubm9kZVR5cGUmJihcIiBcIitlK1wiIFwiKS5yZXBsYWNlKEJiLFwiIFwiKSl7Zz0wO3doaWxlKGY9YltnKytdKXdoaWxlKGQuaW5kZXhPZihcIiBcIitmK1wiIFwiKT4tMSlkPWQucmVwbGFjZShcIiBcIitmK1wiIFwiLFwiIFwiKTtoPW4udHJpbShkKSxlIT09aCYmbi5hdHRyKGMsXCJjbGFzc1wiLGgpfX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIGImJlwic3RyaW5nXCI9PT1jP2I/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOm4uaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYyl7bih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLENiKHRoaXMpLGIpLGIpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsZCxlLGY7aWYoXCJzdHJpbmdcIj09PWMpe2Q9MCxlPW4odGhpcyksZj1hLm1hdGNoKEcpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlIHZvaWQgMCE9PWEmJlwiYm9vbGVhblwiIT09Y3x8KGI9Q2IodGhpcyksYiYmbi5fZGF0YSh0aGlzLFwiX19jbGFzc05hbWVfX1wiLGIpLG4uYXR0cih0aGlzLFwiY2xhc3NcIixifHxhPT09ITE/XCJcIjpuLl9kYXRhKHRoaXMsXCJfX2NsYXNzTmFtZV9fXCIpfHxcIlwiKSl9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPTA7Yj1cIiBcIithK1wiIFwiO3doaWxlKGM9dGhpc1tkKytdKWlmKDE9PT1jLm5vZGVUeXBlJiYoXCIgXCIrQ2IoYykrXCIgXCIpLnJlcGxhY2UoQmIsXCIgXCIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9fSksbi5lYWNoKFwiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudVwiLnNwbGl0KFwiIFwiKSxmdW5jdGlvbihhLGIpe24uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG4uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KTt2YXIgRGI9YS5sb2NhdGlvbixFYj1uLm5vdygpLEZiPS9cXD8vLEdiPS8oLCl8KFxcW3x7KXwofXxdKXxcIig/OlteXCJcXFxcXFxyXFxuXXxcXFxcW1wiXFxcXFxcL2JmbnJ0XXxcXFxcdVtcXGRhLWZBLUZdezR9KSpcIlxccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXFxkKVxcZCsoPzpcXC5cXGQrfCkoPzpbZUVdWystXT9cXGQrfCkvZztuLnBhcnNlSlNPTj1mdW5jdGlvbihiKXtpZihhLkpTT04mJmEuSlNPTi5wYXJzZSlyZXR1cm4gYS5KU09OLnBhcnNlKGIrXCJcIik7dmFyIGMsZD1udWxsLGU9bi50cmltKGIrXCJcIik7cmV0dXJuIGUmJiFuLnRyaW0oZS5yZXBsYWNlKEdiLGZ1bmN0aW9uKGEsYixlLGYpe3JldHVybiBjJiZiJiYoZD0wKSwwPT09ZD9hOihjPWV8fGIsZCs9IWYtIWUsXCJcIil9KSk/RnVuY3Rpb24oXCJyZXR1cm4gXCIrZSkoKTpuLmVycm9yKFwiSW52YWxpZCBKU09OOiBcIitiKX0sbi5wYXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYyxkO2lmKCFifHxcInN0cmluZ1wiIT10eXBlb2YgYilyZXR1cm4gbnVsbDt0cnl7YS5ET01QYXJzZXI/KGQ9bmV3IGEuRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYixcInRleHQveG1sXCIpKTooYz1uZXcgYS5BY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTERPTVwiKSxjLmFzeW5jPVwiZmFsc2VcIixjLmxvYWRYTUwoYikpfWNhdGNoKGUpe2M9dm9pZCAwfXJldHVybiBjJiZjLmRvY3VtZW50RWxlbWVudCYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJwYXJzZXJlcnJvclwiKS5sZW5ndGh8fG4uZXJyb3IoXCJJbnZhbGlkIFhNTDogXCIrYiksY307dmFyIEhiPS8jLiokLyxJYj0vKFs/Jl0pXz1bXiZdKi8sSmI9L14oLio/KTpbIFxcdF0qKFteXFxyXFxuXSopXFxyPyQvZ20sS2I9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sTGI9L14oPzpHRVR8SEVBRCkkLyxNYj0vXlxcL1xcLy8sTmI9L14oW1xcdy4rLV0rOikoPzpcXC9cXC8oPzpbXlxcLz8jXSpAfCkoW15cXC8/IzpdKikoPzo6KFxcZCspfCl8KS8sT2I9e30sUGI9e30sUWI9XCIqL1wiLmNvbmNhdChcIipcIiksUmI9RGIuaHJlZixTYj1OYi5leGVjKFJiLnRvTG93ZXJDYXNlKCkpfHxbXTtmdW5jdGlvbiBUYihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXtcInN0cmluZ1wiIT10eXBlb2YgYiYmKGM9YixiPVwiKlwiKTt2YXIgZCxlPTAsZj1iLnRvTG93ZXJDYXNlKCkubWF0Y2goRyl8fFtdO2lmKG4uaXNGdW5jdGlvbihjKSl3aGlsZShkPWZbZSsrXSlcIitcIj09PWQuY2hhckF0KDApPyhkPWQuc2xpY2UoMSl8fFwiKlwiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gVWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09UGI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxuLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2Yganx8Znx8ZVtqXT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxpfXJldHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbXCIqXCJdJiZnKFwiKlwiKX1mdW5jdGlvbiBWYihhLGIpe3ZhciBjLGQsZT1uLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZuLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKFwiKlwiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZSYmKGU9YS5taW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtVHlwZVwiKSk7aWYoZSlmb3IoZyBpbiBoKWlmKGhbZ10mJmhbZ10udGVzdChlKSl7aS51bnNoaWZ0KGcpO2JyZWFrfWlmKGlbMF1pbiBjKWY9aVswXTtlbHNle2ZvcihnIGluIGMpe2lmKCFpWzBdfHxhLmNvbnZlcnRlcnNbZytcIiBcIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gWGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZihcIipcIj09PWYpZj1pO2Vsc2UgaWYoXCIqXCIhPT1pJiZpIT09Zil7aWYoZz1qW2krXCIgXCIrZl18fGpbXCIqIFwiK2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KFwiIFwiKSxoWzFdPT09ZiYmKGc9altpK1wiIFwiK2hbMF1dfHxqW1wiKiBcIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYoZj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbXCJ0aHJvd3NcIl0pYj1nKGIpO2Vsc2UgdHJ5e2I9ZyhiKX1jYXRjaChsKXtyZXR1cm57c3RhdGU6XCJwYXJzZXJlcnJvclwiLGVycm9yOmc/bDpcIk5vIGNvbnZlcnNpb24gZnJvbSBcIitpK1wiIHRvIFwiK2Z9fX1yZXR1cm57c3RhdGU6XCJzdWNjZXNzXCIsZGF0YTpifX1uLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6UmIsdHlwZTpcIkdFVFwiLGlzTG9jYWw6S2IudGVzdChTYlsxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOlwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsYWNjZXB0czp7XCIqXCI6UWIsdGV4dDpcInRleHQvcGxhaW5cIixodG1sOlwidGV4dC9odG1sXCIseG1sOlwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLGpzb246XCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIn0sY29udGVudHM6e3htbDovXFxieG1sXFxiLyxodG1sOi9cXGJodG1sLyxqc29uOi9cXGJqc29uXFxiL30scmVzcG9uc2VGaWVsZHM6e3htbDpcInJlc3BvbnNlWE1MXCIsdGV4dDpcInJlc3BvbnNlVGV4dFwiLGpzb246XCJyZXNwb25zZUpTT05cIn0sY29udmVydGVyczp7XCIqIHRleHRcIjpTdHJpbmcsXCJ0ZXh0IGh0bWxcIjohMCxcInRleHQganNvblwiOm4ucGFyc2VKU09OLFwidGV4dCB4bWxcIjpuLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9WYihWYihhLG4uYWpheFNldHRpbmdzKSxiKTpWYihuLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpUYihPYiksYWpheFRyYW5zcG9ydDpUYihQYiksYWpheDpmdW5jdGlvbihiLGMpe1wib2JqZWN0XCI9PXR5cGVvZiBiJiYoYz1iLGI9dm9pZCAwKSxjPWN8fHt9O3ZhciBkLGUsZixnLGgsaSxqLGssbD1uLmFqYXhTZXR1cCh7fSxjKSxtPWwuY29udGV4dHx8bCxvPWwuY29udGV4dCYmKG0ubm9kZVR5cGV8fG0uanF1ZXJ5KT9uKG0pOm4uZXZlbnQscD1uLkRlZmVycmVkKCkscT1uLkNhbGxiYWNrcyhcIm9uY2UgbWVtb3J5XCIpLHI9bC5zdGF0dXNDb2RlfHx7fSxzPXt9LHQ9e30sdT0wLHY9XCJjYW5jZWxlZFwiLHc9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZigyPT09dSl7aWYoIWspe2s9e307d2hpbGUoYj1KYi5leGVjKGcpKWtbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9a1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT11P2c6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4gdXx8KGE9dFtjXT10W2NdfHxhLHNbYV09YiksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gdXx8KGwubWltZVR5cGU9YSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihhKXt2YXIgYjtpZihhKWlmKDI+dSlmb3IoYiBpbiBhKXJbYl09W3JbYl0sYVtiXV07ZWxzZSB3LmFsd2F5cyhhW3cuc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHY7cmV0dXJuIGomJmouYWJvcnQoYikseSgwLGIpLHRoaXN9fTtpZihwLnByb21pc2UodykuY29tcGxldGU9cS5hZGQsdy5zdWNjZXNzPXcuZG9uZSx3LmVycm9yPXcuZmFpbCxsLnVybD0oKGJ8fGwudXJsfHxSYikrXCJcIikucmVwbGFjZShIYixcIlwiKS5yZXBsYWNlKE1iLFNiWzFdK1wiLy9cIiksbC50eXBlPWMubWV0aG9kfHxjLnR5cGV8fGwubWV0aG9kfHxsLnR5cGUsbC5kYXRhVHlwZXM9bi50cmltKGwuZGF0YVR5cGV8fFwiKlwiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEcpfHxbXCJcIl0sbnVsbD09bC5jcm9zc0RvbWFpbiYmKGQ9TmIuZXhlYyhsLnVybC50b0xvd2VyQ2FzZSgpKSxsLmNyb3NzRG9tYWluPSEoIWR8fGRbMV09PT1TYlsxXSYmZFsyXT09PVNiWzJdJiYoZFszXXx8KFwiaHR0cDpcIj09PWRbMV0/XCI4MFwiOlwiNDQzXCIpKT09PShTYlszXXx8KFwiaHR0cDpcIj09PVNiWzFdP1wiODBcIjpcIjQ0M1wiKSkpKSxsLmRhdGEmJmwucHJvY2Vzc0RhdGEmJlwic3RyaW5nXCIhPXR5cGVvZiBsLmRhdGEmJihsLmRhdGE9bi5wYXJhbShsLmRhdGEsbC50cmFkaXRpb25hbCkpLFViKE9iLGwsYyx3KSwyPT09dSlyZXR1cm4gdztpPW4uZXZlbnQmJmwuZ2xvYmFsLGkmJjA9PT1uLmFjdGl2ZSsrJiZuLmV2ZW50LnRyaWdnZXIoXCJhamF4U3RhcnRcIiksbC50eXBlPWwudHlwZS50b1VwcGVyQ2FzZSgpLGwuaGFzQ29udGVudD0hTGIudGVzdChsLnR5cGUpLGY9bC51cmwsbC5oYXNDb250ZW50fHwobC5kYXRhJiYoZj1sLnVybCs9KEZiLnRlc3QoZik/XCImXCI6XCI/XCIpK2wuZGF0YSxkZWxldGUgbC5kYXRhKSxsLmNhY2hlPT09ITEmJihsLnVybD1JYi50ZXN0KGYpP2YucmVwbGFjZShJYixcIiQxXz1cIitFYisrKTpmKyhGYi50ZXN0KGYpP1wiJlwiOlwiP1wiKStcIl89XCIrRWIrKykpLGwuaWZNb2RpZmllZCYmKG4ubGFzdE1vZGlmaWVkW2ZdJiZ3LnNldFJlcXVlc3RIZWFkZXIoXCJJZi1Nb2RpZmllZC1TaW5jZVwiLG4ubGFzdE1vZGlmaWVkW2ZdKSxuLmV0YWdbZl0mJncuc2V0UmVxdWVzdEhlYWRlcihcIklmLU5vbmUtTWF0Y2hcIixuLmV0YWdbZl0pKSwobC5kYXRhJiZsLmhhc0NvbnRlbnQmJmwuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSkmJncuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLGwuY29udGVudFR5cGUpLHcuc2V0UmVxdWVzdEhlYWRlcihcIkFjY2VwdFwiLGwuZGF0YVR5cGVzWzBdJiZsLmFjY2VwdHNbbC5kYXRhVHlwZXNbMF1dP2wuYWNjZXB0c1tsLmRhdGFUeXBlc1swXV0rKFwiKlwiIT09bC5kYXRhVHlwZXNbMF0/XCIsIFwiK1FiK1wiOyBxPTAuMDFcIjpcIlwiKTpsLmFjY2VwdHNbXCIqXCJdKTtmb3IoZSBpbiBsLmhlYWRlcnMpdy5zZXRSZXF1ZXN0SGVhZGVyKGUsbC5oZWFkZXJzW2VdKTtpZihsLmJlZm9yZVNlbmQmJihsLmJlZm9yZVNlbmQuY2FsbChtLHcsbCk9PT0hMXx8Mj09PXUpKXJldHVybiB3LmFib3J0KCk7dj1cImFib3J0XCI7Zm9yKGUgaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pd1tlXShsW2VdKTtpZihqPVViKFBiLGwsYyx3KSl7aWYody5yZWFkeVN0YXRlPTEsaSYmby50cmlnZ2VyKFwiYWpheFNlbmRcIixbdyxsXSksMj09PXUpcmV0dXJuIHc7bC5hc3luYyYmbC50aW1lb3V0PjAmJihoPWEuc2V0VGltZW91dChmdW5jdGlvbigpe3cuYWJvcnQoXCJ0aW1lb3V0XCIpfSxsLnRpbWVvdXQpKTt0cnl7dT0xLGouc2VuZChzLHkpfWNhdGNoKHgpe2lmKCEoMj51KSl0aHJvdyB4O3koLTEseCl9fWVsc2UgeSgtMSxcIk5vIFRyYW5zcG9ydFwiKTtmdW5jdGlvbiB5KGIsYyxkLGUpe3ZhciBrLHMsdCx2LHgseT1jOzIhPT11JiYodT0yLGgmJmEuY2xlYXJUaW1lb3V0KGgpLGo9dm9pZCAwLGc9ZXx8XCJcIix3LnJlYWR5U3RhdGU9Yj4wPzQ6MCxrPWI+PTIwMCYmMzAwPmJ8fDMwND09PWIsZCYmKHY9V2IobCx3LGQpKSx2PVhiKGwsdix3LGspLGs/KGwuaWZNb2RpZmllZCYmKHg9dy5nZXRSZXNwb25zZUhlYWRlcihcIkxhc3QtTW9kaWZpZWRcIikseCYmKG4ubGFzdE1vZGlmaWVkW2ZdPXgpLHg9dy5nZXRSZXNwb25zZUhlYWRlcihcImV0YWdcIikseCYmKG4uZXRhZ1tmXT14KSksMjA0PT09Ynx8XCJIRUFEXCI9PT1sLnR5cGU/eT1cIm5vY29udGVudFwiOjMwND09PWI/eT1cIm5vdG1vZGlmaWVkXCI6KHk9di5zdGF0ZSxzPXYuZGF0YSx0PXYuZXJyb3Isaz0hdCkpOih0PXksIWImJnl8fCh5PVwiZXJyb3JcIiwwPmImJihiPTApKSksdy5zdGF0dXM9Yix3LnN0YXR1c1RleHQ9KGN8fHkpK1wiXCIsaz9wLnJlc29sdmVXaXRoKG0sW3MseSx3XSk6cC5yZWplY3RXaXRoKG0sW3cseSx0XSksdy5zdGF0dXNDb2RlKHIpLHI9dm9pZCAwLGkmJm8udHJpZ2dlcihrP1wiYWpheFN1Y2Nlc3NcIjpcImFqYXhFcnJvclwiLFt3LGwsaz9zOnRdKSxxLmZpcmVXaXRoKG0sW3cseV0pLGkmJihvLnRyaWdnZXIoXCJhamF4Q29tcGxldGVcIixbdyxsXSksLS1uLmFjdGl2ZXx8bi5ldmVudC50cmlnZ2VyKFwiYWpheFN0b3BcIikpKX1yZXR1cm4gd30sZ2V0SlNPTjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4uZ2V0KGEsYixjLFwianNvblwiKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uZ2V0KGEsdm9pZCAwLGIsXCJzY3JpcHRcIil9fSksbi5lYWNoKFtcImdldFwiLFwicG9zdFwiXSxmdW5jdGlvbihhLGIpe25bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG4uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG4uYWpheChuLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sbi5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksbi5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbi5hamF4KHt1cmw6YSx0eXBlOlwiR0VUXCIsZGF0YVR5cGU6XCJzY3JpcHRcIixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsXCJ0aHJvd3NcIjohMH0pfSxuLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9bihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmMT09PWEuZmlyc3RDaGlsZC5ub2RlVHlwZSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBuLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPW4odGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9bi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7bih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe24ubm9kZU5hbWUodGhpcyxcImJvZHlcIil8fG4odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pO2Z1bmN0aW9uIFliKGEpe3JldHVybiBhLnN0eWxlJiZhLnN0eWxlLmRpc3BsYXl8fG4uY3NzKGEsXCJkaXNwbGF5XCIpfWZ1bmN0aW9uIFpiKGEpe3doaWxlKGEmJjE9PT1hLm5vZGVUeXBlKXtpZihcIm5vbmVcIj09PVliKGEpfHxcImhpZGRlblwiPT09YS50eXBlKXJldHVybiEwO2E9YS5wYXJlbnROb2RlfXJldHVybiExfW4uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gbC5yZWxpYWJsZUhpZGRlbk9mZnNldHMoKT9hLm9mZnNldFdpZHRoPD0wJiZhLm9mZnNldEhlaWdodDw9MCYmIWEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg6WmIoYSl9LG4uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIW4uZXhwci5maWx0ZXJzLmhpZGRlbihhKX07dmFyICRiPS8lMjAvZyxfYj0vXFxbXFxdJC8sYWM9L1xccj9cXG4vZyxiYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksY2M9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIGRjKGEsYixjLGQpe3ZhciBlO2lmKG4uaXNBcnJheShiKSluLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fF9iLnRlc3QoYSk/ZChhLGUpOmRjKGErXCJbXCIrKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT1lP2I6XCJcIikrXCJdXCIsZSxjLGQpfSk7ZWxzZSBpZihjfHxcIm9iamVjdFwiIT09bi50eXBlKGIpKWQoYSxiKTtlbHNlIGZvcihlIGluIGIpZGMoYStcIltcIitlK1wiXVwiLGJbZV0sYyxkKX1uLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1uLmlzRnVuY3Rpb24oYik/YigpOm51bGw9PWI/XCJcIjpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW4uYWpheFNldHRpbmdzJiZuLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW4uaXNQbGFpbk9iamVjdChhKSluLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKWRjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oXCImXCIpLnJlcGxhY2UoJGIsXCIrXCIpfSxuLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG4ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1uLnByb3AodGhpcyxcImVsZW1lbnRzXCIpO3JldHVybiBhP24ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW4odGhpcykuaXMoXCI6ZGlzYWJsZWRcIikmJmNjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiFiYy50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwhWi50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPW4odGhpcykudmFsKCk7cmV0dXJuIG51bGw9PWM/bnVsbDpuLmlzQXJyYXkoYyk/bi5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGFjLFwiXFxyXFxuXCIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoYWMsXCJcXHJcXG5cIil9fSkuZ2V0KCl9fSksbi5hamF4U2V0dGluZ3MueGhyPXZvaWQgMCE9PWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzTG9jYWw/aWMoKTpkLmRvY3VtZW50TW9kZT44P2hjKCk6L14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmaGMoKXx8aWMoKX06aGM7dmFyIGVjPTAsZmM9e30sZ2M9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudChcIm9udW5sb2FkXCIsZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gZmMpZmNbYV0odm9pZCAwLCEwKX0pLGwuY29ycz0hIWdjJiZcIndpdGhDcmVkZW50aWFsc1wiaW4gZ2MsZ2M9bC5hamF4PSEhZ2MsZ2MmJm4uYWpheFRyYW5zcG9ydChmdW5jdGlvbihiKXtpZighYi5jcm9zc0RvbWFpbnx8bC5jb3JzKXt2YXIgYztyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe3ZhciBmLGc9Yi54aHIoKSxoPSsrZWM7aWYoZy5vcGVuKGIudHlwZSxiLnVybCxiLmFzeW5jLGIudXNlcm5hbWUsYi5wYXNzd29yZCksYi54aHJGaWVsZHMpZm9yKGYgaW4gYi54aHJGaWVsZHMpZ1tmXT1iLnhockZpZWxkc1tmXTtiLm1pbWVUeXBlJiZnLm92ZXJyaWRlTWltZVR5cGUmJmcub3ZlcnJpZGVNaW1lVHlwZShiLm1pbWVUeXBlKSxiLmNyb3NzRG9tYWlufHxkW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXXx8KGRbXCJYLVJlcXVlc3RlZC1XaXRoXCJdPVwiWE1MSHR0cFJlcXVlc3RcIik7Zm9yKGYgaW4gZCl2b2lkIDAhPT1kW2ZdJiZnLnNldFJlcXVlc3RIZWFkZXIoZixkW2ZdK1wiXCIpO2cuc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCksYz1mdW5jdGlvbihhLGQpe3ZhciBmLGksajtpZihjJiYoZHx8ND09PWcucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIGZjW2hdLGM9dm9pZCAwLGcub25yZWFkeXN0YXRlY2hhbmdlPW4ubm9vcCxkKTQhPT1nLnJlYWR5U3RhdGUmJmcuYWJvcnQoKTtlbHNle2o9e30sZj1nLnN0YXR1cyxcInN0cmluZ1wiPT10eXBlb2YgZy5yZXNwb25zZVRleHQmJihqLnRleHQ9Zy5yZXNwb25zZVRleHQpO3RyeXtpPWcuc3RhdHVzVGV4dH1jYXRjaChrKXtpPVwiXCJ9Znx8IWIuaXNMb2NhbHx8Yi5jcm9zc0RvbWFpbj8xMjIzPT09ZiYmKGY9MjA0KTpmPWoudGV4dD8yMDA6NDA0fWomJmUoZixpLGosZy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSl9LGIuYXN5bmM/ND09PWcucmVhZHlTdGF0ZT9hLnNldFRpbWVvdXQoYyk6Zy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZmNbaF09YzpjKCl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYyh2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gaGMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gaWMoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKX1jYXRjaChiKXt9fW4uYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6XCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdFwifSxjb250ZW50czp7c2NyaXB0Oi9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL30sY29udmVydGVyczp7XCJ0ZXh0IHNjcmlwdFwiOmZ1bmN0aW9uKGEpe3JldHVybiBuLmdsb2JhbEV2YWwoYSksYX19fSksbi5hamF4UHJlZmlsdGVyKFwic2NyaXB0XCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9XCJHRVRcIixhLmdsb2JhbD0hMSl9KSxuLmFqYXhUcmFuc3BvcnQoXCJzY3JpcHRcIixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPWQuaGVhZHx8bihcImhlYWRcIilbMF18fGQuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7Yj1kLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiksYi5hc3luYz0hMCxhLnNjcmlwdENoYXJzZXQmJihiLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxiLnNyYz1hLnVybCxiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpeyhjfHwhYi5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGIucmVhZHlTdGF0ZSkpJiYoYi5vbmxvYWQ9Yi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSxiPW51bGwsY3x8ZigyMDAsXCJzdWNjZXNzXCIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgamM9W10sa2M9Lyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztuLmFqYXhTZXR1cCh7anNvbnA6XCJjYWxsYmFja1wiLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1qYy5wb3AoKXx8bi5leHBhbmRvK1wiX1wiK0ViKys7cmV0dXJuIHRoaXNbYV09ITAsYX19KSxuLmFqYXhQcmVmaWx0ZXIoXCJqc29uIGpzb25wXCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGtjLnRlc3QoYi51cmwpP1widXJsXCI6XCJzdHJpbmdcIj09dHlwZW9mIGIuZGF0YSYmMD09PShiLmNvbnRlbnRUeXBlfHxcIlwiKS5pbmRleE9mKFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpJiZrYy50ZXN0KGIuZGF0YSkmJlwiZGF0YVwiKTtyZXR1cm4gaHx8XCJqc29ucFwiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGtjLFwiJDFcIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KEZiLnRlc3QoYi51cmwpP1wiJlwiOlwiP1wiKStiLmpzb25wK1wiPVwiK2UpLGIuY29udmVydGVyc1tcInNjcmlwdCBqc29uXCJdPWZ1bmN0aW9uKCl7cmV0dXJuIGd8fG4uZXJyb3IoZStcIiB3YXMgbm90IGNhbGxlZFwiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT1cImpzb25cIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWY/bihhKS5yZW1vdmVQcm9wKGUpOmFbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMuanNvbnBDYWxsYmFjayxqYy5wdXNoKGUpKSxnJiZuLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1mPXZvaWQgMH0pLFwic2NyaXB0XCIpOnZvaWQgMH0pLG4ucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtpZighYXx8XCJzdHJpbmdcIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7XCJib29sZWFuXCI9PXR5cGVvZiBiJiYoYz1iLGI9ITEpLGI9Ynx8ZDt2YXIgZT14LmV4ZWMoYSksZj0hYyYmW107cmV0dXJuIGU/W2IuY3JlYXRlRWxlbWVudChlWzFdKV06KGU9amEoW2FdLGIsZiksZiYmZi5sZW5ndGgmJm4oZikucmVtb3ZlKCksbi5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX07dmFyIGxjPW4uZm4ubG9hZDtuLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBhJiZsYylyZXR1cm4gbGMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoXCIgXCIpO3JldHVybiBoPi0xJiYoZD1uLnRyaW0oYS5zbGljZShoLGEubGVuZ3RoKSksYT1hLnNsaWNlKDAsaCkpLG4uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiZcIm9iamVjdFwiPT10eXBlb2YgYiYmKGU9XCJQT1NUXCIpLGcubGVuZ3RoPjAmJm4uYWpheCh7dXJsOmEsdHlwZTplfHxcIkdFVFwiLGRhdGFUeXBlOlwiaHRtbFwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7Zj1hcmd1bWVudHMsZy5odG1sKGQ/bihcIjxkaXY+XCIpLmFwcGVuZChuLnBhcnNlSFRNTChhKSkuZmluZChkKTphKX0pLmFsd2F5cyhjJiZmdW5jdGlvbihhLGIpe2cuZWFjaChmdW5jdGlvbigpe2MuYXBwbHkodGhpcyxmfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KX0pLHRoaXN9LG4uZWFjaChbXCJhamF4U3RhcnRcIixcImFqYXhTdG9wXCIsXCJhamF4Q29tcGxldGVcIixcImFqYXhFcnJvclwiLFwiYWpheFN1Y2Nlc3NcIixcImFqYXhTZW5kXCJdLGZ1bmN0aW9uKGEsYil7bi5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG4uZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBuLmdyZXAobi50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9O2Z1bmN0aW9uIG1jKGEpe3JldHVybiBuLmlzV2luZG93KGEpP2E6OT09PWEubm9kZVR5cGU/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9bi5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1uLmNzcyhhLFwicG9zaXRpb25cIiksbD1uKGEpLG09e307XCJzdGF0aWNcIj09PWsmJihhLnN0eWxlLnBvc2l0aW9uPVwicmVsYXRpdmVcIiksaD1sLm9mZnNldCgpLGY9bi5jc3MoYSxcInRvcFwiKSxpPW4uY3NzKGEsXCJsZWZ0XCIpLGo9KFwiYWJzb2x1dGVcIj09PWt8fFwiZml4ZWRcIj09PWspJiZuLmluQXJyYXkoXCJhdXRvXCIsW2YsaV0pPi0xLGo/KGQ9bC5wb3NpdGlvbigpLGc9ZC50b3AsZT1kLmxlZnQpOihnPXBhcnNlRmxvYXQoZil8fDAsZT1wYXJzZUZsb2F0KGkpfHwwKSxuLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsbi5leHRlbmQoe30saCkpKSxudWxsIT1iLnRvcCYmKG0udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG0ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLFwidXNpbmdcImluIGI/Yi51c2luZy5jYWxsKGEsbSk6bC5jc3MobSl9fSxuLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWE/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oYil7bi5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBiLGMsZD17dG9wOjAsbGVmdDowfSxlPXRoaXNbMF0sZj1lJiZlLm93bmVyRG9jdW1lbnQ7aWYoZilyZXR1cm4gYj1mLmRvY3VtZW50RWxlbWVudCxuLmNvbnRhaW5zKGIsZSk/KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1tYyhmKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dGhpc1swXTtyZXR1cm5cImZpeGVkXCI9PT1uLmNzcyhkLFwicG9zaXRpb25cIik/Yj1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLG4ubm9kZU5hbWUoYVswXSxcImh0bWxcIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz1uLmNzcyhhWzBdLFwiYm9yZGVyVG9wV2lkdGhcIiwhMCksYy5sZWZ0Kz1uLmNzcyhhWzBdLFwiYm9yZGVyTGVmdFdpZHRoXCIsITApKSx7dG9wOmIudG9wLWMudG9wLW4uY3NzKGQsXCJtYXJnaW5Ub3BcIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LW4uY3NzKGQsXCJtYXJnaW5MZWZ0XCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50O3doaWxlKGEmJiFuLm5vZGVOYW1lKGEsXCJodG1sXCIpJiZcInN0YXRpY1wiPT09bi5jc3MoYSxcInBvc2l0aW9uXCIpKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fFFhfSl9fSksbi5lYWNoKHtzY3JvbGxMZWZ0OlwicGFnZVhPZmZzZXRcIixzY3JvbGxUb3A6XCJwYWdlWU9mZnNldFwifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO24uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9bWMoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bihmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bihmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbi5lYWNoKFtcInRvcFwiLFwibGVmdFwiXSxmdW5jdGlvbihhLGIpe24uY3NzSG9va3NbYl09VWEobC5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9U2EoYSxiKSxPYS50ZXN0KGMpP24oYSkucG9zaXRpb24oKVtiXStcInB4XCI6Yyk6dm9pZCAwO1xufSl9KSxuLmVhY2goe0hlaWdodDpcImhlaWdodFwiLFdpZHRoOlwid2lkdGhcIn0sZnVuY3Rpb24oYSxiKXtuLmVhY2goe3BhZGRpbmc6XCJpbm5lclwiK2EsY29udGVudDpiLFwiXCI6XCJvdXRlclwiK2F9LGZ1bmN0aW9uKGMsZCl7bi5mbltkXT1mdW5jdGlvbihkLGUpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgmJihjfHxcImJvb2xlYW5cIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwP1wibWFyZ2luXCI6XCJib3JkZXJcIik7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIG4uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbXCJjbGllbnRcIithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbXCJzY3JvbGxcIithXSxlW1wic2Nyb2xsXCIrYV0sYi5ib2R5W1wib2Zmc2V0XCIrYV0sZVtcIm9mZnNldFwiK2FdLGVbXCJjbGllbnRcIithXSkpOnZvaWQgMD09PWQ/bi5jc3MoYixjLGcpOm4uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksbi5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxkKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsXCIqKlwiKTp0aGlzLm9mZihiLGF8fFwiKipcIixjKX19KSxuLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG4uZm4uYW5kU2VsZj1uLmZuLmFkZEJhY2ssXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoXCJqcXVlcnlcIixbXSxmdW5jdGlvbigpe3JldHVybiBufSk7dmFyIG5jPWEualF1ZXJ5LG9jPWEuJDtyZXR1cm4gbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1uJiYoYS4kPW9jKSxiJiZhLmpRdWVyeT09PW4mJihhLmpRdWVyeT1uYyksbn0sYnx8KGEualF1ZXJ5PWEuJD1uKSxufSk7In0sICJoZWFkZXJzU2l6ZSI6IDE2NDcsICJib2R5U2l6ZSI6IDMzODg2LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAzNTUzM30sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDQyLjAzOCwgInJlY2VpdmUiOiA3LjQ3M30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI2WiIsICJ0aW1lIjogOTAuMzQxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2Jvb3RzdHJhcC5taW4uY3NzIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2NzcywqLyo7cT0wLjEifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ5OCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIm1xZUszcU1EbHdpQk56eGJLa1h1RlRVb0NBOFF1VWF4bW8xRkZFVF9YRjQtMTY4NDk0Mjg3NS0wLUFhUVJLai93ZXh5YkUzRUZnekxvT1REL2l0bUphcXhmQ1FTYnQzOThqRDgzUXZJV05pRXUwM1dqbkYzT001Qll3SXRQem5EeVMzdnl2R1FpdU1iTHBucz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDAifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ0YzFjZTUzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2NzczsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE1IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1iZERNZU01NTMzYndGUUU3TFp2VVNqVllOS0NwWlhSR1B4UVJrM01GNWVkWVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPW1xZUszcU1EbHdpQk56eGJLa1h1RlRVb0NBOFF1VWF4bW8xRkZFVF9YRjQtMTY4NDk0Mjg3NS0wLUFhUVJLai93ZXh5YkUzRUZnekxvT1REL2l0bUphcXhmQ1FTYnQzOThqRDgzUXZJV05pRXUwM1dqbkYzT001Qll3SXRQem5EeVMzdnl2R1FpdU1iTHBucz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYm9vdHN0cmFwLm1pbi5jc3MifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtYmRETWVNNTUzM2J3RlFFN0xadlVTalZZTktDcFpYUkdQeFFSazNNRjVlZFkifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDEwMTU5NSwgIm1pbWVUeXBlIjogInRleHQvY3NzOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogODQ0ODIsICJ0ZXh0IjogIi8qIVxuICogQm9vdHN0cmFwIHYzLjEuMCAoaHR0cDovL2dldGJvb3RzdHJhcC5jb20pXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE0IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKi9cblxuLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovaHRtbHtmb250LWZhbWlseTpzYW5zLXNlcmlmOy1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCV9Ym9keXttYXJnaW46MH1hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWFpbixuYXYsc2VjdGlvbixzdW1tYXJ5e2Rpc3BsYXk6YmxvY2t9YXVkaW8sY2FudmFzLHByb2dyZXNzLHZpZGVve2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfWF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7aGVpZ2h0OjB9W2hpZGRlbl0sdGVtcGxhdGV7ZGlzcGxheTpub25lfWF7YmFja2dyb3VuZDowIDB9YTphY3RpdmUsYTpob3ZlcntvdXRsaW5lOjB9YWJiclt0aXRsZV17Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkfWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMH1kZm57Zm9udC1zdHlsZTppdGFsaWN9aDF7Zm9udC1zaXplOjJlbTttYXJnaW46LjY3ZW0gMH1tYXJre2JhY2tncm91bmQ6I2ZmMDtjb2xvcjojMDAwfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vwe3RvcDotLjVlbX1zdWJ7Ym90dG9tOi0uMjVlbX1pbWd7Ym9yZGVyOjB9c3ZnOm5vdCg6cm9vdCl7b3ZlcmZsb3c6aGlkZGVufWZpZ3VyZXttYXJnaW46MWVtIDQwcHh9aHJ7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7aGVpZ2h0OjB9cHJle292ZXJmbG93OmF1dG99Y29kZSxrYmQscHJlLHNhbXB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7bWFyZ2luOjB9YnV0dG9ue292ZXJmbG93OnZpc2libGV9YnV0dG9uLHNlbGVjdHt0ZXh0LXRyYW5zZm9ybTpub25lfWJ1dHRvbixodG1sIGlucHV0W3R5cGU9YnV0dG9uXSxpbnB1dFt0eXBlPXJlc2V0XSxpbnB1dFt0eXBlPXN1Ym1pdF17LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtjdXJzb3I6cG9pbnRlcn1idXR0b25bZGlzYWJsZWRdLGh0bWwgaW5wdXRbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixpbnB1dDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MDtwYWRkaW5nOjB9aW5wdXR7bGluZS1oZWlnaHQ6bm9ybWFsfWlucHV0W3R5cGU9Y2hlY2tib3hdLGlucHV0W3R5cGU9cmFkaW9de2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9aW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9aW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLGlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1maWVsZHNldHtib3JkZXI6MXB4IHNvbGlkIHNpbHZlcjttYXJnaW46MCAycHg7cGFkZGluZzouMzVlbSAuNjI1ZW0gLjc1ZW19bGVnZW5ke2JvcmRlcjowO3BhZGRpbmc6MH10ZXh0YXJlYXtvdmVyZmxvdzphdXRvfW9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OjcwMH10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MH10ZCx0aHtwYWRkaW5nOjB9QG1lZGlhIHByaW50eyp7dGV4dC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7Y29sb3I6IzAwMCFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudH1hLGE6dmlzaXRlZHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWFbaHJlZl06YWZ0ZXJ7Y29udGVudDpcIiAoXCIgYXR0cihocmVmKSBcIilcIn1hYmJyW3RpdGxlXTphZnRlcntjb250ZW50OlwiIChcIiBhdHRyKHRpdGxlKSBcIilcIn1hW2hyZWZePVwiamF2YXNjcmlwdDpcIl06YWZ0ZXIsYVtocmVmXj1cIiNcIl06YWZ0ZXJ7Y29udGVudDpcIlwifXByZSxibG9ja3F1b3Rle2JvcmRlcjoxcHggc29saWQgIzk5OTtwYWdlLWJyZWFrLWluc2lkZTphdm9pZH10aGVhZHtkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH10cixpbWd7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9aW1ne21heC13aWR0aDoxMDAlIWltcG9ydGFudH1wLGgyLGgze29ycGhhbnM6Mzt3aWRvd3M6M31oMixoM3twYWdlLWJyZWFrLWFmdGVyOmF2b2lkfXNlbGVjdHtiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fS5uYXZiYXJ7ZGlzcGxheTpub25lfS50YWJsZSB0ZCwudGFibGUgdGh7YmFja2dyb3VuZC1jb2xvcjojZmZmIWltcG9ydGFudH0uYnRuPi5jYXJldCwuZHJvcHVwPi5idG4+LmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzAwMCFpbXBvcnRhbnR9LmxhYmVse2JvcmRlcjoxcHggc29saWQgIzAwMH0udGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlIWltcG9ydGFudH0udGFibGUtYm9yZGVyZWQgdGgsLnRhYmxlLWJvcmRlcmVkIHRke2JvcmRlcjoxcHggc29saWQgI2RkZCFpbXBvcnRhbnR9fSp7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fTpiZWZvcmUsOmFmdGVyey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH1odG1se2ZvbnQtc2l6ZTo2Mi41JTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKX1ib2R5e2ZvbnQtZmFtaWx5OlwiSGVsdmV0aWNhIE5ldWVcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQyODU3MTQyOTtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ZmZn1pbnB1dCxidXR0b24sc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdH1he2NvbG9yOiM0MjhiY2E7dGV4dC1kZWNvcmF0aW9uOm5vbmV9YTpob3ZlcixhOmZvY3Vze2NvbG9yOiMyYTY0OTY7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1hOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweH1maWd1cmV7bWFyZ2luOjB9aW1ne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uaW1nLXJlc3BvbnNpdmV7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30uaW1nLXJvdW5kZWR7Ym9yZGVyLXJhZGl1czo2cHh9LmltZy10aHVtYm5haWx7cGFkZGluZzo0cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mjk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dDt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1pbi1vdXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG99LmltZy1jaXJjbGV7Ym9yZGVyLXJhZGl1czo1MCV9aHJ7bWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MjBweDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWVlfS5zci1vbmx5e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47Y2xpcDpyZWN0KDAsMCwwLDApO2JvcmRlcjowfWgxLGgyLGgzLGg0LGg1LGg2LC5oMSwuaDIsLmgzLC5oNCwuaDUsLmg2e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuMTtjb2xvcjppbmhlcml0fWgxIHNtYWxsLGgyIHNtYWxsLGgzIHNtYWxsLGg0IHNtYWxsLGg1IHNtYWxsLGg2IHNtYWxsLC5oMSBzbWFsbCwuaDIgc21hbGwsLmgzIHNtYWxsLC5oNCBzbWFsbCwuaDUgc21hbGwsLmg2IHNtYWxsLGgxIC5zbWFsbCxoMiAuc21hbGwsaDMgLnNtYWxsLGg0IC5zbWFsbCxoNSAuc21hbGwsaDYgLnNtYWxsLC5oMSAuc21hbGwsLmgyIC5zbWFsbCwuaDMgLnNtYWxsLC5oNCAuc21hbGwsLmg1IC5zbWFsbCwuaDYgLnNtYWxse2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxO2NvbG9yOiM5OTl9aDEsLmgxLGgyLC5oMixoMywuaDN7bWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MTBweH1oMSBzbWFsbCwuaDEgc21hbGwsaDIgc21hbGwsLmgyIHNtYWxsLGgzIHNtYWxsLC5oMyBzbWFsbCxoMSAuc21hbGwsLmgxIC5zbWFsbCxoMiAuc21hbGwsLmgyIC5zbWFsbCxoMyAuc21hbGwsLmgzIC5zbWFsbHtmb250LXNpemU6NjUlfWg0LC5oNCxoNSwuaDUsaDYsLmg2e21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHh9aDQgc21hbGwsLmg0IHNtYWxsLGg1IHNtYWxsLC5oNSBzbWFsbCxoNiBzbWFsbCwuaDYgc21hbGwsaDQgLnNtYWxsLC5oNCAuc21hbGwsaDUgLnNtYWxsLC5oNSAuc21hbGwsaDYgLnNtYWxsLC5oNiAuc21hbGx7Zm9udC1zaXplOjc1JX1oMSwuaDF7Zm9udC1zaXplOjM2cHh9aDIsLmgye2ZvbnQtc2l6ZTozMHB4fWgzLC5oM3tmb250LXNpemU6MjRweH1oNCwuaDR7Zm9udC1zaXplOjE4cHh9aDUsLmg1e2ZvbnQtc2l6ZToxNHB4fWg2LC5oNntmb250LXNpemU6MTJweH1we21hcmdpbjowIDAgMTBweH0ubGVhZHttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6MjAwO2xpbmUtaGVpZ2h0OjEuNH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmxlYWR7Zm9udC1zaXplOjIxcHh9fXNtYWxsLC5zbWFsbHtmb250LXNpemU6ODUlfWNpdGV7Zm9udC1zdHlsZTpub3JtYWx9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRleHQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtanVzdGlmeXt0ZXh0LWFsaWduOmp1c3RpZnl9LnRleHQtbXV0ZWR7Y29sb3I6Izk5OX0udGV4dC1wcmltYXJ5e2NvbG9yOiM0MjhiY2F9YS50ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6IzMwNzFhOX0udGV4dC1zdWNjZXNze2NvbG9yOiMzYzc2M2R9YS50ZXh0LXN1Y2Nlc3M6aG92ZXJ7Y29sb3I6IzJiNTQyY30udGV4dC1pbmZve2NvbG9yOiMzMTcwOGZ9YS50ZXh0LWluZm86aG92ZXJ7Y29sb3I6IzI0NTI2OX0udGV4dC13YXJuaW5ne2NvbG9yOiM4YTZkM2J9YS50ZXh0LXdhcm5pbmc6aG92ZXJ7Y29sb3I6IzY2NTEyY30udGV4dC1kYW5nZXJ7Y29sb3I6I2E5NDQ0Mn1hLnRleHQtZGFuZ2VyOmhvdmVye2NvbG9yOiM4NDM1MzR9LmJnLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2F9YS5iZy1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQtY29sb3I6IzMwNzFhOX0uYmctc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDh9YS5iZy1zdWNjZXNzOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2MxZTJiM30uYmctaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjd9YS5iZy1pbmZvOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2FmZDllZX0uYmctd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9YS5iZy13YXJuaW5nOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y3ZWNiNX0uYmctZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2YyZGVkZX1hLmJnLWRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlNGI5Yjl9LnBhZ2UtaGVhZGVye3BhZGRpbmctYm90dG9tOjlweDttYXJnaW46NDBweCAwIDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZX11bCxvbHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxMHB4fXVsIHVsLG9sIHVsLHVsIG9sLG9sIG9se21hcmdpbi1ib3R0b206MH0ubGlzdC11bnN0eWxlZHtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtaW5saW5le3BhZGRpbmctbGVmdDowO2xpc3Qtc3R5bGU6bm9uZX0ubGlzdC1pbmxpbmU+bGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXJpZ2h0OjVweH0ubGlzdC1pbmxpbmU+bGk6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjB9ZGx7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MjBweH1kdCxkZHtsaW5lLWhlaWdodDoxLjQyODU3MTQyOX1kdHtmb250LXdlaWdodDo3MDB9ZGR7bWFyZ2luLWxlZnQ6MH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bGVmdDt3aWR0aDoxNjBweDtjbGVhcjpsZWZ0O3RleHQtYWxpZ246cmlnaHQ7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5kbC1ob3Jpem9udGFsIGRke21hcmdpbi1sZWZ0OjE4MHB4fX1hYmJyW3RpdGxlXSxhYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVde2N1cnNvcjpoZWxwO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjOTk5fS5pbml0aWFsaXNte2ZvbnQtc2l6ZTo5MCU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJsb2NrcXVvdGV7cGFkZGluZzoxMHB4IDIwcHg7bWFyZ2luOjAgMCAyMHB4O2ZvbnQtc2l6ZToxNy41cHg7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkICNlZWV9YmxvY2txdW90ZSBwOmxhc3QtY2hpbGQsYmxvY2txdW90ZSB1bDpsYXN0LWNoaWxkLGJsb2NrcXVvdGUgb2w6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9YmxvY2txdW90ZSBmb290ZXIsYmxvY2txdW90ZSBzbWFsbCxibG9ja3F1b3RlIC5zbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTo4MCU7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mjk7Y29sb3I6Izk5OX1ibG9ja3F1b3RlIGZvb3RlcjpiZWZvcmUsYmxvY2txdW90ZSBzbWFsbDpiZWZvcmUsYmxvY2txdW90ZSAuc21hbGw6YmVmb3Jle2NvbnRlbnQ6J1xcMjAxNCBcXDAwQTAnfS5ibG9ja3F1b3RlLXJldmVyc2UsYmxvY2txdW90ZS5wdWxsLXJpZ2h0e3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICNlZWU7Ym9yZGVyLWxlZnQ6MDt0ZXh0LWFsaWduOnJpZ2h0fS5ibG9ja3F1b3RlLXJldmVyc2UgZm9vdGVyOmJlZm9yZSxibG9ja3F1b3RlLnB1bGwtcmlnaHQgZm9vdGVyOmJlZm9yZSwuYmxvY2txdW90ZS1yZXZlcnNlIHNtYWxsOmJlZm9yZSxibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YmVmb3JlLC5ibG9ja3F1b3RlLXJldmVyc2UgLnNtYWxsOmJlZm9yZSxibG9ja3F1b3RlLnB1bGwtcmlnaHQgLnNtYWxsOmJlZm9yZXtjb250ZW50OicnfS5ibG9ja3F1b3RlLXJldmVyc2UgZm9vdGVyOmFmdGVyLGJsb2NrcXVvdGUucHVsbC1yaWdodCBmb290ZXI6YWZ0ZXIsLmJsb2NrcXVvdGUtcmV2ZXJzZSBzbWFsbDphZnRlcixibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YWZ0ZXIsLmJsb2NrcXVvdGUtcmV2ZXJzZSAuc21hbGw6YWZ0ZXIsYmxvY2txdW90ZS5wdWxsLXJpZ2h0IC5zbWFsbDphZnRlcntjb250ZW50OidcXDAwQTAgXFwyMDE0J31ibG9ja3F1b3RlOmJlZm9yZSxibG9ja3F1b3RlOmFmdGVye2NvbnRlbnQ6XCJcIn1hZGRyZXNze21hcmdpbi1ib3R0b206MjBweDtmb250LXN0eWxlOm5vcm1hbDtsaW5lLWhlaWdodDoxLjQyODU3MTQyOX1jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTpNZW5sbyxNb25hY28sQ29uc29sYXMsXCJDb3VyaWVyIE5ld1wiLG1vbm9zcGFjZX1jb2Rle3BhZGRpbmc6MnB4IDRweDtmb250LXNpemU6OTAlO2NvbG9yOiNjNzI1NGU7YmFja2dyb3VuZC1jb2xvcjojZjlmMmY0O3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmFkaXVzOjRweH1rYmR7cGFkZGluZzoycHggNHB4O2ZvbnQtc2l6ZTo5MCU7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggMCByZ2JhKDAsMCwwLC4yNSl9cHJle2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo5LjVweDttYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mjk7d29yZC1icmVhazpicmVhay1hbGw7d29yZC13cmFwOmJyZWFrLXdvcmQ7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NHB4fXByZSBjb2Rle3BhZGRpbmc6MDtmb250LXNpemU6aW5oZXJpdDtjb2xvcjppbmhlcml0O3doaXRlLXNwYWNlOnByZS13cmFwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowfS5wcmUtc2Nyb2xsYWJsZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXk6c2Nyb2xsfS5jb250YWluZXJ7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bztwYWRkaW5nLWxlZnQ6MTVweDtwYWRkaW5nLXJpZ2h0OjE1cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7d2lkdGg6NzUwcHh9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29udGFpbmVye3dpZHRoOjk3MHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpey5jb250YWluZXJ7d2lkdGg6MTE3MHB4fX0uY29udGFpbmVyLWZsdWlke21hcmdpbi1yaWdodDphdXRvO21hcmdpbi1sZWZ0OmF1dG87cGFkZGluZy1sZWZ0OjE1cHg7cGFkZGluZy1yaWdodDoxNXB4fS5yb3d7bWFyZ2luLWxlZnQ6LTE1cHg7bWFyZ2luLXJpZ2h0Oi0xNXB4fS5jb2wteHMtMSwuY29sLXNtLTEsLmNvbC1tZC0xLC5jb2wtbGctMSwuY29sLXhzLTIsLmNvbC1zbS0yLC5jb2wtbWQtMiwuY29sLWxnLTIsLmNvbC14cy0zLC5jb2wtc20tMywuY29sLW1kLTMsLmNvbC1sZy0zLC5jb2wteHMtNCwuY29sLXNtLTQsLmNvbC1tZC00LC5jb2wtbGctNCwuY29sLXhzLTUsLmNvbC1zbS01LC5jb2wtbWQtNSwuY29sLWxnLTUsLmNvbC14cy02LC5jb2wtc20tNiwuY29sLW1kLTYsLmNvbC1sZy02LC5jb2wteHMtNywuY29sLXNtLTcsLmNvbC1tZC03LC5jb2wtbGctNywuY29sLXhzLTgsLmNvbC1zbS04LC5jb2wtbWQtOCwuY29sLWxnLTgsLmNvbC14cy05LC5jb2wtc20tOSwuY29sLW1kLTksLmNvbC1sZy05LC5jb2wteHMtMTAsLmNvbC1zbS0xMCwuY29sLW1kLTEwLC5jb2wtbGctMTAsLmNvbC14cy0xMSwuY29sLXNtLTExLC5jb2wtbWQtMTEsLmNvbC1sZy0xMSwuY29sLXhzLTEyLC5jb2wtc20tMTIsLmNvbC1tZC0xMiwuY29sLWxnLTEye3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MXB4O3BhZGRpbmctbGVmdDoxNXB4O3BhZGRpbmctcmlnaHQ6MTVweH0uY29sLXhzLTEsLmNvbC14cy0yLC5jb2wteHMtMywuY29sLXhzLTQsLmNvbC14cy01LC5jb2wteHMtNiwuY29sLXhzLTcsLmNvbC14cy04LC5jb2wteHMtOSwuY29sLXhzLTEwLC5jb2wteHMtMTEsLmNvbC14cy0xMntmbG9hdDpsZWZ0fS5jb2wteHMtMTJ7d2lkdGg6MTAwJX0uY29sLXhzLTExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY2JX0uY29sLXhzLTEwe3dpZHRoOjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLXhzLTl7d2lkdGg6NzUlfS5jb2wteHMtOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NiV9LmNvbC14cy03e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC14cy02e3dpZHRoOjUwJX0uY29sLXhzLTV7d2lkdGg6NDEuNjY2NjY2NjY2NjY2NjclfS5jb2wteHMtNHt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC14cy0ze3dpZHRoOjI1JX0uY29sLXhzLTJ7d2lkdGg6MTYuNjY2NjY2NjY2NjY2NjY0JX0uY29sLXhzLTF7d2lkdGg6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wteHMtcHVsbC0xMntyaWdodDoxMDAlfS5jb2wteHMtcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC14cy1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLXhzLXB1bGwtOXtyaWdodDo3NSV9LmNvbC14cy1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wteHMtcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC14cy1wdWxsLTZ7cmlnaHQ6NTAlfS5jb2wteHMtcHVsbC01e3JpZ2h0OjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLXhzLXB1bGwtNHtyaWdodDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC14cy1wdWxsLTN7cmlnaHQ6MjUlfS5jb2wteHMtcHVsbC0ye3JpZ2h0OjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC14cy1wdWxsLTF7cmlnaHQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wteHMtcHVsbC0we3JpZ2h0OjB9LmNvbC14cy1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLXhzLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC14cy1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMzMzMzMzQlfS5jb2wteHMtcHVzaC05e2xlZnQ6NzUlfS5jb2wteHMtcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wteHMtcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMzMzMzMzM2JX0uY29sLXhzLXB1c2gtNntsZWZ0OjUwJX0uY29sLXhzLXB1c2gtNXtsZWZ0OjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLXhzLXB1c2gtNHtsZWZ0OjMzLjMzMzMzMzMzMzMzMzMzJX0uY29sLXhzLXB1c2gtM3tsZWZ0OjI1JX0uY29sLXhzLXB1c2gtMntsZWZ0OjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC14cy1wdXNoLTF7bGVmdDo4LjMzMzMzMzMzMzMzMzMzMiV9LmNvbC14cy1wdXNoLTB7bGVmdDowfS5jb2wteHMtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC14cy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NjY2NjYlfS5jb2wteHMtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLXhzLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLXhzLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjY2NjY2JX0uY29sLXhzLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC14cy1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNvbC14cy1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY2NjY2NyV9LmNvbC14cy1vZmZzZXQtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC14cy1vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9LmNvbC14cy1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY2NjY2NjQlfS5jb2wteHMtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wteHMtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNvbC1zbS0xLC5jb2wtc20tMiwuY29sLXNtLTMsLmNvbC1zbS00LC5jb2wtc20tNSwuY29sLXNtLTYsLmNvbC1zbS03LC5jb2wtc20tOCwuY29sLXNtLTksLmNvbC1zbS0xMCwuY29sLXNtLTExLC5jb2wtc20tMTJ7ZmxvYXQ6bGVmdH0uY29sLXNtLTEye3dpZHRoOjEwMCV9LmNvbC1zbS0xMXt3aWR0aDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC1zbS0xMHt3aWR0aDo4My4zMzMzMzMzMzMzMzMzNCV9LmNvbC1zbS05e3dpZHRoOjc1JX0uY29sLXNtLTh7d2lkdGg6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wtc20tN3t3aWR0aDo1OC4zMzMzMzMzMzMzMzMzMzYlfS5jb2wtc20tNnt3aWR0aDo1MCV9LmNvbC1zbS01e3dpZHRoOjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLXNtLTR7d2lkdGg6MzMuMzMzMzMzMzMzMzMzMzMlfS5jb2wtc20tM3t3aWR0aDoyNSV9LmNvbC1zbS0ye3dpZHRoOjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC1zbS0xe3dpZHRoOjguMzMzMzMzMzMzMzMzMzMyJX0uY29sLXNtLXB1bGwtMTJ7cmlnaHQ6MTAwJX0uY29sLXNtLXB1bGwtMTF7cmlnaHQ6OTEuNjY2NjY2NjY2NjY2NjYlfS5jb2wtc20tcHVsbC0xMHtyaWdodDo4My4zMzMzMzMzMzMzMzMzNCV9LmNvbC1zbS1wdWxsLTl7cmlnaHQ6NzUlfS5jb2wtc20tcHVsbC04e3JpZ2h0OjY2LjY2NjY2NjY2NjY2NjY2JX0uY29sLXNtLXB1bGwtN3tyaWdodDo1OC4zMzMzMzMzMzMzMzMzMzYlfS5jb2wtc20tcHVsbC02e3JpZ2h0OjUwJX0uY29sLXNtLXB1bGwtNXtyaWdodDo0MS42NjY2NjY2NjY2NjY2NyV9LmNvbC1zbS1wdWxsLTR7cmlnaHQ6MzMuMzMzMzMzMzMzMzMzMzMlfS5jb2wtc20tcHVsbC0ze3JpZ2h0OjI1JX0uY29sLXNtLXB1bGwtMntyaWdodDoxNi42NjY2NjY2NjY2NjY2NjQlfS5jb2wtc20tcHVsbC0xe3JpZ2h0OjguMzMzMzMzMzMzMzMzMzMyJX0uY29sLXNtLXB1bGwtMHtyaWdodDowfS5jb2wtc20tcHVzaC0xMntsZWZ0OjEwMCV9LmNvbC1zbS1wdXNoLTExe2xlZnQ6OTEuNjY2NjY2NjY2NjY2NjYlfS5jb2wtc20tcHVzaC0xMHtsZWZ0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLXNtLXB1c2gtOXtsZWZ0Ojc1JX0uY29sLXNtLXB1c2gtOHtsZWZ0OjY2LjY2NjY2NjY2NjY2NjY2JX0uY29sLXNtLXB1c2gtN3tsZWZ0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1zbS1wdXNoLTZ7bGVmdDo1MCV9LmNvbC1zbS1wdXNoLTV7bGVmdDo0MS42NjY2NjY2NjY2NjY2NyV9LmNvbC1zbS1wdXNoLTR7bGVmdDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1zbS1wdXNoLTN7bGVmdDoyNSV9LmNvbC1zbS1wdXNoLTJ7bGVmdDoxNi42NjY2NjY2NjY2NjY2NjQlfS5jb2wtc20tcHVzaC0xe2xlZnQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtc20tcHVzaC0we2xlZnQ6MH0uY29sLXNtLW9mZnNldC0xMnttYXJnaW4tbGVmdDoxMDAlfS5jb2wtc20tb2Zmc2V0LTExe21hcmdpbi1sZWZ0OjkxLjY2NjY2NjY2NjY2NjY2JX0uY29sLXNtLW9mZnNldC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMzMzMzMzMzMzNCV9LmNvbC1zbS1vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9LmNvbC1zbS1vZmZzZXQtOHttYXJnaW4tbGVmdDo2Ni42NjY2NjY2NjY2NjY2NiV9LmNvbC1zbS1vZmZzZXQtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzMzMzMzMzMzMzYlfS5jb2wtc20tb2Zmc2V0LTZ7bWFyZ2luLWxlZnQ6NTAlfS5jb2wtc20tb2Zmc2V0LTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY2NjY2NjY2NjclfS5jb2wtc20tb2Zmc2V0LTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzMzMzMzMzMzMzMlfS5jb2wtc20tb2Zmc2V0LTN7bWFyZ2luLWxlZnQ6MjUlfS5jb2wtc20tb2Zmc2V0LTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY2NjY2NjY2NjY0JX0uY29sLXNtLW9mZnNldC0xe21hcmdpbi1sZWZ0OjguMzMzMzMzMzMzMzMzMzMyJX0uY29sLXNtLW9mZnNldC0we21hcmdpbi1sZWZ0OjB9fUBtZWRpYSAobWluLXdpZHRoOjk5MnB4KXsuY29sLW1kLTEsLmNvbC1tZC0yLC5jb2wtbWQtMywuY29sLW1kLTQsLmNvbC1tZC01LC5jb2wtbWQtNiwuY29sLW1kLTcsLmNvbC1tZC04LC5jb2wtbWQtOSwuY29sLW1kLTEwLC5jb2wtbWQtMTEsLmNvbC1tZC0xMntmbG9hdDpsZWZ0fS5jb2wtbWQtMTJ7d2lkdGg6MTAwJX0uY29sLW1kLTExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY2JX0uY29sLW1kLTEwe3dpZHRoOjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLW1kLTl7d2lkdGg6NzUlfS5jb2wtbWQtOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NiV9LmNvbC1tZC03e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1tZC02e3dpZHRoOjUwJX0uY29sLW1kLTV7d2lkdGg6NDEuNjY2NjY2NjY2NjY2NjclfS5jb2wtbWQtNHt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1tZC0ze3dpZHRoOjI1JX0uY29sLW1kLTJ7d2lkdGg6MTYuNjY2NjY2NjY2NjY2NjY0JX0uY29sLW1kLTF7d2lkdGg6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtbWQtcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtbWQtcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC1tZC1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLW1kLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1tZC1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wtbWQtcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1tZC1wdWxsLTZ7cmlnaHQ6NTAlfS5jb2wtbWQtcHVsbC01e3JpZ2h0OjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLW1kLXB1bGwtNHtyaWdodDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1tZC1wdWxsLTN7cmlnaHQ6MjUlfS5jb2wtbWQtcHVsbC0ye3JpZ2h0OjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC1tZC1wdWxsLTF7cmlnaHQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtbWQtcHVsbC0we3JpZ2h0OjB9LmNvbC1tZC1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLW1kLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC1tZC1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMzMzMzMzQlfS5jb2wtbWQtcHVzaC05e2xlZnQ6NzUlfS5jb2wtbWQtcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wtbWQtcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMzMzMzMzM2JX0uY29sLW1kLXB1c2gtNntsZWZ0OjUwJX0uY29sLW1kLXB1c2gtNXtsZWZ0OjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLW1kLXB1c2gtNHtsZWZ0OjMzLjMzMzMzMzMzMzMzMzMzJX0uY29sLW1kLXB1c2gtM3tsZWZ0OjI1JX0uY29sLW1kLXB1c2gtMntsZWZ0OjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC1tZC1wdXNoLTF7bGVmdDo4LjMzMzMzMzMzMzMzMzMzMiV9LmNvbC1tZC1wdXNoLTB7bGVmdDowfS5jb2wtbWQtb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1tZC1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NjY2NjYlfS5jb2wtbWQtb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLW1kLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLW1kLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjY2NjY2JX0uY29sLW1kLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1tZC1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNvbC1tZC1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY2NjY2NyV9LmNvbC1tZC1vZmZzZXQtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1tZC1vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9LmNvbC1tZC1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY2NjY2NjQlfS5jb2wtbWQtb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtbWQtb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsuY29sLWxnLTEsLmNvbC1sZy0yLC5jb2wtbGctMywuY29sLWxnLTQsLmNvbC1sZy01LC5jb2wtbGctNiwuY29sLWxnLTcsLmNvbC1sZy04LC5jb2wtbGctOSwuY29sLWxnLTEwLC5jb2wtbGctMTEsLmNvbC1sZy0xMntmbG9hdDpsZWZ0fS5jb2wtbGctMTJ7d2lkdGg6MTAwJX0uY29sLWxnLTExe3dpZHRoOjkxLjY2NjY2NjY2NjY2NjY2JX0uY29sLWxnLTEwe3dpZHRoOjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLWxnLTl7d2lkdGg6NzUlfS5jb2wtbGctOHt3aWR0aDo2Ni42NjY2NjY2NjY2NjY2NiV9LmNvbC1sZy03e3dpZHRoOjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1sZy02e3dpZHRoOjUwJX0uY29sLWxnLTV7d2lkdGg6NDEuNjY2NjY2NjY2NjY2NjclfS5jb2wtbGctNHt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1sZy0ze3dpZHRoOjI1JX0uY29sLWxnLTJ7d2lkdGg6MTYuNjY2NjY2NjY2NjY2NjY0JX0uY29sLWxnLTF7d2lkdGg6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtbGctcHVsbC0xMntyaWdodDoxMDAlfS5jb2wtbGctcHVsbC0xMXtyaWdodDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC1sZy1wdWxsLTEwe3JpZ2h0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLWxnLXB1bGwtOXtyaWdodDo3NSV9LmNvbC1sZy1wdWxsLTh7cmlnaHQ6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wtbGctcHVsbC03e3JpZ2h0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1sZy1wdWxsLTZ7cmlnaHQ6NTAlfS5jb2wtbGctcHVsbC01e3JpZ2h0OjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLWxnLXB1bGwtNHtyaWdodDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1sZy1wdWxsLTN7cmlnaHQ6MjUlfS5jb2wtbGctcHVsbC0ye3JpZ2h0OjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC1sZy1wdWxsLTF7cmlnaHQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtbGctcHVsbC0we3JpZ2h0OjB9LmNvbC1sZy1wdXNoLTEye2xlZnQ6MTAwJX0uY29sLWxnLXB1c2gtMTF7bGVmdDo5MS42NjY2NjY2NjY2NjY2NiV9LmNvbC1sZy1wdXNoLTEwe2xlZnQ6ODMuMzMzMzMzMzMzMzMzMzQlfS5jb2wtbGctcHVzaC05e2xlZnQ6NzUlfS5jb2wtbGctcHVzaC04e2xlZnQ6NjYuNjY2NjY2NjY2NjY2NjYlfS5jb2wtbGctcHVzaC03e2xlZnQ6NTguMzMzMzMzMzMzMzMzMzM2JX0uY29sLWxnLXB1c2gtNntsZWZ0OjUwJX0uY29sLWxnLXB1c2gtNXtsZWZ0OjQxLjY2NjY2NjY2NjY2NjY3JX0uY29sLWxnLXB1c2gtNHtsZWZ0OjMzLjMzMzMzMzMzMzMzMzMzJX0uY29sLWxnLXB1c2gtM3tsZWZ0OjI1JX0uY29sLWxnLXB1c2gtMntsZWZ0OjE2LjY2NjY2NjY2NjY2NjY2NCV9LmNvbC1sZy1wdXNoLTF7bGVmdDo4LjMzMzMzMzMzMzMzMzMzMiV9LmNvbC1sZy1wdXNoLTB7bGVmdDowfS5jb2wtbGctb2Zmc2V0LTEye21hcmdpbi1sZWZ0OjEwMCV9LmNvbC1sZy1vZmZzZXQtMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjY2NjY2NjY2NjYlfS5jb2wtbGctb2Zmc2V0LTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzMzMzMzMzMzM0JX0uY29sLWxnLW9mZnNldC05e21hcmdpbi1sZWZ0Ojc1JX0uY29sLWxnLW9mZnNldC04e21hcmdpbi1sZWZ0OjY2LjY2NjY2NjY2NjY2NjY2JX0uY29sLWxnLW9mZnNldC03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMzMzMzMzMzMzNiV9LmNvbC1sZy1vZmZzZXQtNnttYXJnaW4tbGVmdDo1MCV9LmNvbC1sZy1vZmZzZXQtNXttYXJnaW4tbGVmdDo0MS42NjY2NjY2NjY2NjY2NyV9LmNvbC1sZy1vZmZzZXQtNHttYXJnaW4tbGVmdDozMy4zMzMzMzMzMzMzMzMzMyV9LmNvbC1sZy1vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9LmNvbC1sZy1vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjY2NjY2NjY2NjQlfS5jb2wtbGctb2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzMzMzMzMzMzMzIlfS5jb2wtbGctb2Zmc2V0LTB7bWFyZ2luLWxlZnQ6MH19dGFibGV7bWF4LXdpZHRoOjEwMCU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH10aHt0ZXh0LWFsaWduOmxlZnR9LnRhYmxle3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToyMHB4fS50YWJsZT50aGVhZD50cj50aCwudGFibGU+dGJvZHk+dHI+dGgsLnRhYmxlPnRmb290PnRyPnRoLC50YWJsZT50aGVhZD50cj50ZCwudGFibGU+dGJvZHk+dHI+dGQsLnRhYmxlPnRmb290PnRyPnRke3BhZGRpbmc6OHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDI5O3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS50YWJsZT50aGVhZD50cj50aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2RkZH0udGFibGU+Y2FwdGlvbit0aGVhZD50cjpmaXJzdC1jaGlsZD50aCwudGFibGU+Y29sZ3JvdXArdGhlYWQ+dHI6Zmlyc3QtY2hpbGQ+dGgsLnRhYmxlPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkPnRoLC50YWJsZT5jYXB0aW9uK3RoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLC50YWJsZT5jb2xncm91cCt0aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwudGFibGU+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQ+dGR7Ym9yZGVyLXRvcDowfS50YWJsZT50Ym9keSt0Ym9keXtib3JkZXItdG9wOjJweCBzb2xpZCAjZGRkfS50YWJsZSAudGFibGV7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50YWJsZS1jb25kZW5zZWQ+dGhlYWQ+dHI+dGgsLnRhYmxlLWNvbmRlbnNlZD50Ym9keT50cj50aCwudGFibGUtY29uZGVuc2VkPnRmb290PnRyPnRoLC50YWJsZS1jb25kZW5zZWQ+dGhlYWQ+dHI+dGQsLnRhYmxlLWNvbmRlbnNlZD50Ym9keT50cj50ZCwudGFibGUtY29uZGVuc2VkPnRmb290PnRyPnRke3BhZGRpbmc6NXB4fS50YWJsZS1ib3JkZXJlZHtib3JkZXI6MXB4IHNvbGlkICNkZGR9LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoLC50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aCwudGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGgsLnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkLC50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZCwudGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGR7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfS50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aCwudGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGR7Ym9yZGVyLWJvdHRvbS13aWR0aDoycHh9LnRhYmxlLXN0cmlwZWQ+dGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGQsLnRhYmxlLXN0cmlwZWQ+dGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGh7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS50YWJsZS1ob3Zlcj50Ym9keT50cjpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHI6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fXRhYmxlIGNvbFtjbGFzcyo9Y29sLV17cG9zaXRpb246c3RhdGljO2Zsb2F0Om5vbmU7ZGlzcGxheTp0YWJsZS1jb2x1bW59dGFibGUgdGRbY2xhc3MqPWNvbC1dLHRhYmxlIHRoW2NsYXNzKj1jb2wtXXtwb3NpdGlvbjpzdGF0aWM7ZmxvYXQ6bm9uZTtkaXNwbGF5OnRhYmxlLWNlbGx9LnRhYmxlPnRoZWFkPnRyPnRkLmFjdGl2ZSwudGFibGU+dGJvZHk+dHI+dGQuYWN0aXZlLC50YWJsZT50Zm9vdD50cj50ZC5hY3RpdmUsLnRhYmxlPnRoZWFkPnRyPnRoLmFjdGl2ZSwudGFibGU+dGJvZHk+dHI+dGguYWN0aXZlLC50YWJsZT50Zm9vdD50cj50aC5hY3RpdmUsLnRhYmxlPnRoZWFkPnRyLmFjdGl2ZT50ZCwudGFibGU+dGJvZHk+dHIuYWN0aXZlPnRkLC50YWJsZT50Zm9vdD50ci5hY3RpdmU+dGQsLnRhYmxlPnRoZWFkPnRyLmFjdGl2ZT50aCwudGFibGU+dGJvZHk+dHIuYWN0aXZlPnRoLC50YWJsZT50Zm9vdD50ci5hY3RpdmU+dGh7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5hY3RpdmU6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLmFjdGl2ZTpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHIuYWN0aXZlOmhvdmVyPnRkLC50YWJsZS1ob3Zlcj50Ym9keT50ci5hY3RpdmU6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4fS50YWJsZT50aGVhZD50cj50ZC5zdWNjZXNzLC50YWJsZT50Ym9keT50cj50ZC5zdWNjZXNzLC50YWJsZT50Zm9vdD50cj50ZC5zdWNjZXNzLC50YWJsZT50aGVhZD50cj50aC5zdWNjZXNzLC50YWJsZT50Ym9keT50cj50aC5zdWNjZXNzLC50YWJsZT50Zm9vdD50cj50aC5zdWNjZXNzLC50YWJsZT50aGVhZD50ci5zdWNjZXNzPnRkLC50YWJsZT50Ym9keT50ci5zdWNjZXNzPnRkLC50YWJsZT50Zm9vdD50ci5zdWNjZXNzPnRkLC50YWJsZT50aGVhZD50ci5zdWNjZXNzPnRoLC50YWJsZT50Ym9keT50ci5zdWNjZXNzPnRoLC50YWJsZT50Zm9vdD50ci5zdWNjZXNzPnRoe2JhY2tncm91bmQtY29sb3I6I2RmZjBkOH0udGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuc3VjY2Vzczpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHI+dGguc3VjY2Vzczpob3ZlciwudGFibGUtaG92ZXI+dGJvZHk+dHIuc3VjY2Vzczpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHIuc3VjY2Vzczpob3Zlcj50aHtiYWNrZ3JvdW5kLWNvbG9yOiNkMGU5YzZ9LnRhYmxlPnRoZWFkPnRyPnRkLmluZm8sLnRhYmxlPnRib2R5PnRyPnRkLmluZm8sLnRhYmxlPnRmb290PnRyPnRkLmluZm8sLnRhYmxlPnRoZWFkPnRyPnRoLmluZm8sLnRhYmxlPnRib2R5PnRyPnRoLmluZm8sLnRhYmxlPnRmb290PnRyPnRoLmluZm8sLnRhYmxlPnRoZWFkPnRyLmluZm8+dGQsLnRhYmxlPnRib2R5PnRyLmluZm8+dGQsLnRhYmxlPnRmb290PnRyLmluZm8+dGQsLnRhYmxlPnRoZWFkPnRyLmluZm8+dGgsLnRhYmxlPnRib2R5PnRyLmluZm8+dGgsLnRhYmxlPnRmb290PnRyLmluZm8+dGh7YmFja2dyb3VuZC1jb2xvcjojZDllZGY3fS50YWJsZS1ob3Zlcj50Ym9keT50cj50ZC5pbmZvOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5pbmZvOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50ci5pbmZvOmhvdmVyPnRkLC50YWJsZS1ob3Zlcj50Ym9keT50ci5pbmZvOmhvdmVyPnRoe2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM30udGFibGU+dGhlYWQ+dHI+dGQud2FybmluZywudGFibGU+dGJvZHk+dHI+dGQud2FybmluZywudGFibGU+dGZvb3Q+dHI+dGQud2FybmluZywudGFibGU+dGhlYWQ+dHI+dGgud2FybmluZywudGFibGU+dGJvZHk+dHI+dGgud2FybmluZywudGFibGU+dGZvb3Q+dHI+dGgud2FybmluZywudGFibGU+dGhlYWQ+dHIud2FybmluZz50ZCwudGFibGU+dGJvZHk+dHIud2FybmluZz50ZCwudGFibGU+dGZvb3Q+dHIud2FybmluZz50ZCwudGFibGU+dGhlYWQ+dHIud2FybmluZz50aCwudGFibGU+dGJvZHk+dHIud2FybmluZz50aCwudGFibGU+dGZvb3Q+dHIud2FybmluZz50aHtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9LnRhYmxlLWhvdmVyPnRib2R5PnRyPnRkLndhcm5pbmc6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyPnRoLndhcm5pbmc6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGQsLnRhYmxlLWhvdmVyPnRib2R5PnRyLndhcm5pbmc6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZmFmMmNjfS50YWJsZT50aGVhZD50cj50ZC5kYW5nZXIsLnRhYmxlPnRib2R5PnRyPnRkLmRhbmdlciwudGFibGU+dGZvb3Q+dHI+dGQuZGFuZ2VyLC50YWJsZT50aGVhZD50cj50aC5kYW5nZXIsLnRhYmxlPnRib2R5PnRyPnRoLmRhbmdlciwudGFibGU+dGZvb3Q+dHI+dGguZGFuZ2VyLC50YWJsZT50aGVhZD50ci5kYW5nZXI+dGQsLnRhYmxlPnRib2R5PnRyLmRhbmdlcj50ZCwudGFibGU+dGZvb3Q+dHIuZGFuZ2VyPnRkLC50YWJsZT50aGVhZD50ci5kYW5nZXI+dGgsLnRhYmxlPnRib2R5PnRyLmRhbmdlcj50aCwudGFibGU+dGZvb3Q+dHIuZGFuZ2VyPnRoe2JhY2tncm91bmQtY29sb3I6I2YyZGVkZX0udGFibGUtaG92ZXI+dGJvZHk+dHI+dGQuZGFuZ2VyOmhvdmVyLC50YWJsZS1ob3Zlcj50Ym9keT50cj50aC5kYW5nZXI6aG92ZXIsLnRhYmxlLWhvdmVyPnRib2R5PnRyLmRhbmdlcjpob3Zlcj50ZCwudGFibGUtaG92ZXI+dGJvZHk+dHIuZGFuZ2VyOmhvdmVyPnRoe2JhY2tncm91bmQtY29sb3I6I2ViY2NjY31AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LnRhYmxlLXJlc3BvbnNpdmV7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjE1cHg7b3ZlcmZsb3cteTpoaWRkZW47b3ZlcmZsb3cteDpzY3JvbGw7LW1zLW92ZXJmbG93LXN0eWxlOi1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtib3JkZXI6MXB4IHNvbGlkICNkZGQ7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxle21hcmdpbi1ib3R0b206MH0udGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGhlYWQ+dHI+dGgsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRib2R5PnRyPnRoLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Zm9vdD50cj50aCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGU+dGhlYWQ+dHI+dGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlPnRib2R5PnRyPnRkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZT50Zm9vdD50cj50ZHt3aGl0ZS1zcGFjZTpub3dyYXB9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfS50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLC50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwudGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6Zmlyc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjB9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRoOmxhc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmxhc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyPnRkOmxhc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjB9LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGgsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGgsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyOmxhc3QtY2hpbGQ+dGQsLnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGR7Ym9yZGVyLWJvdHRvbTowfX1maWVsZHNldHtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7bWluLXdpZHRoOjB9bGVnZW5ke2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nOjA7bWFyZ2luLWJvdHRvbToyMHB4O2ZvbnQtc2l6ZToyMXB4O2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6IzMzMztib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1fWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206NXB4O2ZvbnQtd2VpZ2h0OjcwMH1pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fWlucHV0W3R5cGU9cmFkaW9dLGlucHV0W3R5cGU9Y2hlY2tib3hde21hcmdpbjo0cHggMCAwO21hcmdpbi10b3A6MXB4IFxcOTtsaW5lLWhlaWdodDpub3JtYWx9aW5wdXRbdHlwZT1maWxlXXtkaXNwbGF5OmJsb2NrfWlucHV0W3R5cGU9cmFuZ2Vde2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX1zZWxlY3RbbXVsdGlwbGVdLHNlbGVjdFtzaXplXXtoZWlnaHQ6YXV0b31pbnB1dFt0eXBlPWZpbGVdOmZvY3VzLGlucHV0W3R5cGU9cmFkaW9dOmZvY3VzLGlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQ7b3V0bGluZTo1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7b3V0bGluZS1vZmZzZXQ6LTJweH1vdXRwdXR7ZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDo3cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mjk7Y29sb3I6IzU1NX0uZm9ybS1jb250cm9se2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtoZWlnaHQ6MzRweDtwYWRkaW5nOjZweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDI5O2NvbG9yOiM1NTU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7LXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1c30uZm9ybS1jb250cm9sOmZvY3Vze2JvcmRlci1jb2xvcjojNjZhZmU5O291dGxpbmU6MDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDhweCByZ2JhKDEwMiwxNzUsMjMzLC42KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA4cHggcmdiYSgxMDIsMTc1LDIzMywuNil9LmZvcm0tY29udHJvbDotbW96LXBsYWNlaG9sZGVye2NvbG9yOiM5OTl9LmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjojOTk5O29wYWNpdHk6MX0uZm9ybS1jb250cm9sOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjojOTk5fS5mb3JtLWNvbnRyb2w6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0uZm9ybS1jb250cm9sW2Rpc2FibGVkXSwuZm9ybS1jb250cm9sW3JlYWRvbmx5XSxmaWVsZHNldFtkaXNhYmxlZF0gLmZvcm0tY29udHJvbHtjdXJzb3I6bm90LWFsbG93ZWQ7YmFja2dyb3VuZC1jb2xvcjojZWVlO29wYWNpdHk6MX10ZXh0YXJlYS5mb3JtLWNvbnRyb2x7aGVpZ2h0OmF1dG99aW5wdXRbdHlwZT1kYXRlXXtsaW5lLWhlaWdodDozNHB4fS5mb3JtLWdyb3Vwe21hcmdpbi1ib3R0b206MTVweH0ucmFkaW8sLmNoZWNrYm94e2Rpc3BsYXk6YmxvY2s7bWluLWhlaWdodDoyMHB4O21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHg7cGFkZGluZy1sZWZ0OjIwcHh9LnJhZGlvIGxhYmVsLC5jaGVja2JveCBsYWJlbHtkaXNwbGF5OmlubGluZTtmb250LXdlaWdodDo0MDA7Y3Vyc29yOnBvaW50ZXJ9LnJhZGlvIGlucHV0W3R5cGU9cmFkaW9dLC5yYWRpby1pbmxpbmUgaW5wdXRbdHlwZT1yYWRpb10sLmNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLC5jaGVja2JveC1pbmxpbmUgaW5wdXRbdHlwZT1jaGVja2JveF17ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDotMjBweH0ucmFkaW8rLnJhZGlvLC5jaGVja2JveCsuY2hlY2tib3h7bWFyZ2luLXRvcDotNXB4fS5yYWRpby1pbmxpbmUsLmNoZWNrYm94LWlubGluZXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLWxlZnQ6MjBweDttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlO2ZvbnQtd2VpZ2h0OjQwMDtjdXJzb3I6cG9pbnRlcn0ucmFkaW8taW5saW5lKy5yYWRpby1pbmxpbmUsLmNoZWNrYm94LWlubGluZSsuY2hlY2tib3gtaW5saW5le21hcmdpbi10b3A6MDttYXJnaW4tbGVmdDoxMHB4fWlucHV0W3R5cGU9cmFkaW9dW2Rpc2FibGVkXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtkaXNhYmxlZF0sLnJhZGlvW2Rpc2FibGVkXSwucmFkaW8taW5saW5lW2Rpc2FibGVkXSwuY2hlY2tib3hbZGlzYWJsZWRdLC5jaGVja2JveC1pbmxpbmVbZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSBpbnB1dFt0eXBlPXJhZGlvXSxmaWVsZHNldFtkaXNhYmxlZF0gaW5wdXRbdHlwZT1jaGVja2JveF0sZmllbGRzZXRbZGlzYWJsZWRdIC5yYWRpbyxmaWVsZHNldFtkaXNhYmxlZF0gLnJhZGlvLWlubGluZSxmaWVsZHNldFtkaXNhYmxlZF0gLmNoZWNrYm94LGZpZWxkc2V0W2Rpc2FibGVkXSAuY2hlY2tib3gtaW5saW5le2N1cnNvcjpub3QtYWxsb3dlZH0uaW5wdXQtc217aGVpZ2h0OjMwcHg7cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9c2VsZWN0LmlucHV0LXNte2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHh9dGV4dGFyZWEuaW5wdXQtc20sc2VsZWN0W211bHRpcGxlXS5pbnB1dC1zbXtoZWlnaHQ6YXV0b30uaW5wdXQtbGd7aGVpZ2h0OjQ2cHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MS4zMztib3JkZXItcmFkaXVzOjZweH1zZWxlY3QuaW5wdXQtbGd7aGVpZ2h0OjQ2cHg7bGluZS1oZWlnaHQ6NDZweH10ZXh0YXJlYS5pbnB1dC1sZyxzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWxne2hlaWdodDphdXRvfS5oYXMtZmVlZGJhY2t7cG9zaXRpb246cmVsYXRpdmV9Lmhhcy1mZWVkYmFjayAuZm9ybS1jb250cm9se3BhZGRpbmctcmlnaHQ6NDIuNXB4fS5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFja3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjVweDtyaWdodDowO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtsaW5lLWhlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyfS5oYXMtc3VjY2VzcyAuaGVscC1ibG9jaywuaGFzLXN1Y2Nlc3MgLmNvbnRyb2wtbGFiZWwsLmhhcy1zdWNjZXNzIC5yYWRpbywuaGFzLXN1Y2Nlc3MgLmNoZWNrYm94LC5oYXMtc3VjY2VzcyAucmFkaW8taW5saW5lLC5oYXMtc3VjY2VzcyAuY2hlY2tib3gtaW5saW5le2NvbG9yOiMzYzc2M2R9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2x7Ym9yZGVyLWNvbG9yOiMzYzc2M2Q7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSl9Lmhhcy1zdWNjZXNzIC5mb3JtLWNvbnRyb2w6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMyYjU0MmM7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggIzY3YjE2ODtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggIzY3YjE2OH0uaGFzLXN1Y2Nlc3MgLmlucHV0LWdyb3VwLWFkZG9ue2NvbG9yOiMzYzc2M2Q7Ym9yZGVyLWNvbG9yOiMzYzc2M2Q7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4fS5oYXMtc3VjY2VzcyAuZm9ybS1jb250cm9sLWZlZWRiYWNre2NvbG9yOiMzYzc2M2R9Lmhhcy13YXJuaW5nIC5oZWxwLWJsb2NrLC5oYXMtd2FybmluZyAuY29udHJvbC1sYWJlbCwuaGFzLXdhcm5pbmcgLnJhZGlvLC5oYXMtd2FybmluZyAuY2hlY2tib3gsLmhhcy13YXJuaW5nIC5yYWRpby1pbmxpbmUsLmhhcy13YXJuaW5nIC5jaGVja2JveC1pbmxpbmV7Y29sb3I6IzhhNmQzYn0uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6IzhhNmQzYjstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uaGFzLXdhcm5pbmcgLmZvcm0tY29udHJvbDpmb2N1c3tib3JkZXItY29sb3I6IzY2NTEyYzstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjYzBhMTZiO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjYzBhMTZifS5oYXMtd2FybmluZyAuaW5wdXQtZ3JvdXAtYWRkb257Y29sb3I6IzhhNmQzYjtib3JkZXItY29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9Lmhhcy13YXJuaW5nIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7Y29sb3I6IzhhNmQzYn0uaGFzLWVycm9yIC5oZWxwLWJsb2NrLC5oYXMtZXJyb3IgLmNvbnRyb2wtbGFiZWwsLmhhcy1lcnJvciAucmFkaW8sLmhhcy1lcnJvciAuY2hlY2tib3gsLmhhcy1lcnJvciAucmFkaW8taW5saW5lLC5oYXMtZXJyb3IgLmNoZWNrYm94LWlubGluZXtjb2xvcjojYTk0NDQyfS5oYXMtZXJyb3IgLmZvcm0tY29udHJvbHtib3JkZXItY29sb3I6I2E5NDQ0Mjstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uaGFzLWVycm9yIC5mb3JtLWNvbnRyb2w6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM4NDM1MzQ7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggI2NlODQ4Mztib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggI2NlODQ4M30uaGFzLWVycm9yIC5pbnB1dC1ncm91cC1hZGRvbntjb2xvcjojYTk0NDQyO2JvcmRlci1jb2xvcjojYTk0NDQyO2JhY2tncm91bmQtY29sb3I6I2YyZGVkZX0uaGFzLWVycm9yIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7Y29sb3I6I2E5NDQ0Mn0uZm9ybS1jb250cm9sLXN0YXRpY3ttYXJnaW4tYm90dG9tOjB9LmhlbHAtYmxvY2t7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjVweDttYXJnaW4tYm90dG9tOjEwcHg7Y29sb3I6IzczNzM3M31AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmZvcm0taW5saW5lIC5mb3JtLWdyb3Vwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2x7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6YXV0bzt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5jb250cm9sLWxhYmVse21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvcm0taW5saW5lIC5yYWRpbywuZm9ybS1pbmxpbmUgLmNoZWNrYm94e2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7cGFkZGluZy1sZWZ0OjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAucmFkaW8gaW5wdXRbdHlwZT1yYWRpb10sLmZvcm0taW5saW5lIC5jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XXtmbG9hdDpub25lO21hcmdpbi1sZWZ0OjB9LmZvcm0taW5saW5lIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFja3t0b3A6MH19LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1sYWJlbCwuZm9ybS1ob3Jpem9udGFsIC5yYWRpbywuZm9ybS1ob3Jpem9udGFsIC5jaGVja2JveCwuZm9ybS1ob3Jpem9udGFsIC5yYWRpby1pbmxpbmUsLmZvcm0taG9yaXpvbnRhbCAuY2hlY2tib3gtaW5saW5le21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7cGFkZGluZy10b3A6N3B4fS5mb3JtLWhvcml6b250YWwgLnJhZGlvLC5mb3JtLWhvcml6b250YWwgLmNoZWNrYm94e21pbi1oZWlnaHQ6MjdweH0uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3Vwe21hcmdpbi1sZWZ0Oi0xNXB4O21hcmdpbi1yaWdodDotMTVweH0uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWNvbnRyb2wtc3RhdGlje3BhZGRpbmctdG9wOjdweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1sYWJlbHt0ZXh0LWFsaWduOnJpZ2h0fX0uZm9ybS1ob3Jpem9udGFsIC5oYXMtZmVlZGJhY2sgLmZvcm0tY29udHJvbC1mZWVkYmFja3t0b3A6MDtyaWdodDoxNXB4fS5idG57ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTowO2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7d2hpdGUtc3BhY2U6bm93cmFwO3BhZGRpbmc6NnB4IDEycHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mjk7Ym9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstby11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmJ0bjpmb2N1c3tvdXRsaW5lOnRoaW4gZG90dGVkO291dGxpbmU6NXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtb2Zmc2V0Oi0ycHh9LmJ0bjpob3ZlciwuYnRuOmZvY3Vze2NvbG9yOiMzMzM7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmJ0bjphY3RpdmUsLmJ0bi5hY3RpdmV7b3V0bGluZTowO2JhY2tncm91bmQtaW1hZ2U6bm9uZTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSk7Ym94LXNoYWRvdzppbnNldCAwIDNweCA1cHggcmdiYSgwLDAsMCwuMTI1KX0uYnRuLmRpc2FibGVkLC5idG5bZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRue2N1cnNvcjpub3QtYWxsb3dlZDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6LjY1O2ZpbHRlcjphbHBoYShvcGFjaXR5PTY1KTstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9LmJ0bi1kZWZhdWx0e2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojY2NjfS5idG4tZGVmYXVsdDpob3ZlciwuYnRuLWRlZmF1bHQ6Zm9jdXMsLmJ0bi1kZWZhdWx0OmFjdGl2ZSwuYnRuLWRlZmF1bHQuYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWRlZmF1bHR7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNlYmViZWI7Ym9yZGVyLWNvbG9yOiNhZGFkYWR9LmJ0bi1kZWZhdWx0OmFjdGl2ZSwuYnRuLWRlZmF1bHQuYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWRlZmF1bHR7YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4tZGVmYXVsdC5kaXNhYmxlZCwuYnRuLWRlZmF1bHRbZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRlZmF1bHQsLmJ0bi1kZWZhdWx0LmRpc2FibGVkOmhvdmVyLC5idG4tZGVmYXVsdFtkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDpob3ZlciwuYnRuLWRlZmF1bHQuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0OmZvY3VzLC5idG4tZGVmYXVsdC5kaXNhYmxlZDphY3RpdmUsLmJ0bi1kZWZhdWx0W2Rpc2FibGVkXTphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGVmYXVsdDphY3RpdmUsLmJ0bi1kZWZhdWx0LmRpc2FibGVkLmFjdGl2ZSwuYnRuLWRlZmF1bHRbZGlzYWJsZWRdLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kZWZhdWx0LmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOiNjY2N9LmJ0bi1kZWZhdWx0IC5iYWRnZXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMzM30uYnRuLXByaW1hcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7Ym9yZGVyLWNvbG9yOiMzNTdlYmR9LmJ0bi1wcmltYXJ5OmhvdmVyLC5idG4tcHJpbWFyeTpmb2N1cywuYnRuLXByaW1hcnk6YWN0aXZlLC5idG4tcHJpbWFyeS5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMyNzZiMTtib3JkZXItY29sb3I6IzI4NWU4ZX0uYnRuLXByaW1hcnk6YWN0aXZlLC5idG4tcHJpbWFyeS5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmJ0bi1wcmltYXJ5LmRpc2FibGVkLC5idG4tcHJpbWFyeVtkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tcHJpbWFyeSwuYnRuLXByaW1hcnkuZGlzYWJsZWQ6aG92ZXIsLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmhvdmVyLC5idG4tcHJpbWFyeS5kaXNhYmxlZDpmb2N1cywuYnRuLXByaW1hcnlbZGlzYWJsZWRdOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnk6Zm9jdXMsLmJ0bi1wcmltYXJ5LmRpc2FibGVkOmFjdGl2ZSwuYnRuLXByaW1hcnlbZGlzYWJsZWRdOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnkuZGlzYWJsZWQuYWN0aXZlLC5idG4tcHJpbWFyeVtkaXNhYmxlZF0uYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXByaW1hcnkuYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzQyOGJjYTtib3JkZXItY29sb3I6IzM1N2ViZH0uYnRuLXByaW1hcnkgLmJhZGdle2NvbG9yOiM0MjhiY2E7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzVjYjg1Yztib3JkZXItY29sb3I6IzRjYWU0Y30uYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1zdWNjZXNzOmZvY3VzLC5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNDdhNDQ3O2JvcmRlci1jb2xvcjojMzk4NDM5fS5idG4tc3VjY2VzczphY3RpdmUsLmJ0bi1zdWNjZXNzLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmJ0bi1zdWNjZXNze2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1zdWNjZXNzLC5idG4tc3VjY2Vzcy5kaXNhYmxlZDpob3ZlciwuYnRuLXN1Y2Nlc3NbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6aG92ZXIsLmJ0bi1zdWNjZXNzLmRpc2FibGVkOmZvY3VzLC5idG4tc3VjY2Vzc1tkaXNhYmxlZF06Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzczpmb2N1cywuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQ6YWN0aXZlLC5idG4tc3VjY2Vzc1tkaXNhYmxlZF06YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXN1Y2Nlc3M6YWN0aXZlLC5idG4tc3VjY2Vzcy5kaXNhYmxlZC5hY3RpdmUsLmJ0bi1zdWNjZXNzW2Rpc2FibGVkXS5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tc3VjY2Vzcy5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNWNiODVjO2JvcmRlci1jb2xvcjojNGNhZTRjfS5idG4tc3VjY2VzcyAuYmFkZ2V7Y29sb3I6IzVjYjg1YztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJ0bi1pbmZve2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNWJjMGRlO2JvcmRlci1jb2xvcjojNDZiOGRhfS5idG4taW5mbzpob3ZlciwuYnRuLWluZm86Zm9jdXMsLmJ0bi1pbmZvOmFjdGl2ZSwuYnRuLWluZm8uYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWluZm97Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzOWIzZDc7Ym9yZGVyLWNvbG9yOiMyNjlhYmN9LmJ0bi1pbmZvOmFjdGl2ZSwuYnRuLWluZm8uYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWluZm97YmFja2dyb3VuZC1pbWFnZTpub25lfS5idG4taW5mby5kaXNhYmxlZCwuYnRuLWluZm9bZGlzYWJsZWRdLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWluZm8sLmJ0bi1pbmZvLmRpc2FibGVkOmhvdmVyLC5idG4taW5mb1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzpob3ZlciwuYnRuLWluZm8uZGlzYWJsZWQ6Zm9jdXMsLmJ0bi1pbmZvW2Rpc2FibGVkXTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvOmZvY3VzLC5idG4taW5mby5kaXNhYmxlZDphY3RpdmUsLmJ0bi1pbmZvW2Rpc2FibGVkXTphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4taW5mbzphY3RpdmUsLmJ0bi1pbmZvLmRpc2FibGVkLmFjdGl2ZSwuYnRuLWluZm9bZGlzYWJsZWRdLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1pbmZvLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiM1YmMwZGU7Ym9yZGVyLWNvbG9yOiM0NmI4ZGF9LmJ0bi1pbmZvIC5iYWRnZXtjb2xvcjojNWJjMGRlO2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYnRuLXdhcm5pbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNmMGFkNGU7Ym9yZGVyLWNvbG9yOiNlZWEyMzZ9LmJ0bi13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZzpmb2N1cywuYnRuLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZy5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZ3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2VkOWMyODtib3JkZXItY29sb3I6I2Q1ODUxMn0uYnRuLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZy5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4td2FybmluZ3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmJ0bi13YXJuaW5nLmRpc2FibGVkLC5idG4td2FybmluZ1tkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG4td2FybmluZywuYnRuLXdhcm5pbmcuZGlzYWJsZWQ6aG92ZXIsLmJ0bi13YXJuaW5nW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmhvdmVyLC5idG4td2FybmluZy5kaXNhYmxlZDpmb2N1cywuYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmc6Zm9jdXMsLmJ0bi13YXJuaW5nLmRpc2FibGVkOmFjdGl2ZSwuYnRuLXdhcm5pbmdbZGlzYWJsZWRdOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi13YXJuaW5nOmFjdGl2ZSwuYnRuLXdhcm5pbmcuZGlzYWJsZWQuYWN0aXZlLC5idG4td2FybmluZ1tkaXNhYmxlZF0uYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLXdhcm5pbmcuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2YwYWQ0ZTtib3JkZXItY29sb3I6I2VlYTIzNn0uYnRuLXdhcm5pbmcgLmJhZGdle2NvbG9yOiNmMGFkNGU7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZDk1MzRmO2JvcmRlci1jb2xvcjojZDQzZjNhfS5idG4tZGFuZ2VyOmhvdmVyLC5idG4tZGFuZ2VyOmZvY3VzLC5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2Vye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojZDIzMjJkO2JvcmRlci1jb2xvcjojYWMyOTI1fS5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlci5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5idG4tZGFuZ2Vye2JhY2tncm91bmQtaW1hZ2U6bm9uZX0uYnRuLWRhbmdlci5kaXNhYmxlZCwuYnRuLWRhbmdlcltkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tZGFuZ2VyLC5idG4tZGFuZ2VyLmRpc2FibGVkOmhvdmVyLC5idG4tZGFuZ2VyW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXI6aG92ZXIsLmJ0bi1kYW5nZXIuZGlzYWJsZWQ6Zm9jdXMsLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlcjpmb2N1cywuYnRuLWRhbmdlci5kaXNhYmxlZDphY3RpdmUsLmJ0bi1kYW5nZXJbZGlzYWJsZWRdOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmJ0bi1kYW5nZXI6YWN0aXZlLC5idG4tZGFuZ2VyLmRpc2FibGVkLmFjdGl2ZSwuYnRuLWRhbmdlcltkaXNhYmxlZF0uYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWRhbmdlci5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZDk1MzRmO2JvcmRlci1jb2xvcjojZDQzZjNhfS5idG4tZGFuZ2VyIC5iYWRnZXtjb2xvcjojZDk1MzRmO2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYnRuLWxpbmt7Y29sb3I6IzQyOGJjYTtmb250LXdlaWdodDo0MDA7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czowfS5idG4tbGluaywuYnRuLWxpbms6YWN0aXZlLC5idG4tbGlua1tkaXNhYmxlZF0sZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGlua3tiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZX0uYnRuLWxpbmssLmJ0bi1saW5rOmhvdmVyLC5idG4tbGluazpmb2N1cywuYnRuLWxpbms6YWN0aXZle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uYnRuLWxpbms6aG92ZXIsLmJ0bi1saW5rOmZvY3Vze2NvbG9yOiMyYTY0OTY7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tbGlua1tkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5idG4tbGluazpob3ZlciwuYnRuLWxpbmtbZGlzYWJsZWRdOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuYnRuLWxpbms6Zm9jdXN7Y29sb3I6Izk5OTt0ZXh0LWRlY29yYXRpb246bm9uZX0uYnRuLWxne3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzM7Ym9yZGVyLXJhZGl1czo2cHh9LmJ0bi1zbXtwYWRkaW5nOjVweCAxMHB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH0uYnRuLXhze3BhZGRpbmc6MXB4IDVweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmJ0bi1ibG9ja3tkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5idG4tYmxvY2srLmJ0bi1ibG9ja3ttYXJnaW4tdG9wOjVweH1pbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWJsb2NrLGlucHV0W3R5cGU9cmVzZXRdLmJ0bi1ibG9jayxpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWJsb2Nre3dpZHRoOjEwMCV9LmZhZGV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIGxpbmVhcn0uZmFkZS5pbntvcGFjaXR5OjF9LmNvbGxhcHNle2Rpc3BsYXk6bm9uZX0uY29sbGFwc2UuaW57ZGlzcGxheTpibG9ja30uY29sbGFwc2luZ3twb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10cmFuc2l0aW9uOmhlaWdodCAuMzVzIGVhc2U7dHJhbnNpdGlvbjpoZWlnaHQgLjM1cyBlYXNlfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6J0dseXBoaWNvbnMgSGFsZmxpbmdzJztzcmM6dXJsKC4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90KTtzcmM6dXJsKC4uL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90PyNpZWZpeCkgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLndvZmYpIGZvcm1hdCgnd29mZicpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnR0ZikgZm9ybWF0KCd0cnVldHlwZScpLHVybCguLi9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLnN2ZyNnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIpIGZvcm1hdCgnc3ZnJyl9LmdseXBoaWNvbntwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtZmFtaWx5OidHbHlwaGljb25zIEhhbGZsaW5ncyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9LmdseXBoaWNvbi1hc3RlcmlzazpiZWZvcmV7Y29udGVudDpcIlxcMmFcIn0uZ2x5cGhpY29uLXBsdXM6YmVmb3Jle2NvbnRlbnQ6XCJcXDJiXCJ9LmdseXBoaWNvbi1ldXJvOmJlZm9yZXtjb250ZW50OlwiXFwyMGFjXCJ9LmdseXBoaWNvbi1taW51czpiZWZvcmV7Y29udGVudDpcIlxcMjIxMlwifS5nbHlwaGljb24tY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6XCJcXDI2MDFcIn0uZ2x5cGhpY29uLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OlwiXFwyNzA5XCJ9LmdseXBoaWNvbi1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6XCJcXDI3MGZcIn0uZ2x5cGhpY29uLWdsYXNzOmJlZm9yZXtjb250ZW50OlwiXFxlMDAxXCJ9LmdseXBoaWNvbi1tdXNpYzpiZWZvcmV7Y29udGVudDpcIlxcZTAwMlwifS5nbHlwaGljb24tc2VhcmNoOmJlZm9yZXtjb250ZW50OlwiXFxlMDAzXCJ9LmdseXBoaWNvbi1oZWFydDpiZWZvcmV7Y29udGVudDpcIlxcZTAwNVwifS5nbHlwaGljb24tc3RhcjpiZWZvcmV7Y29udGVudDpcIlxcZTAwNlwifS5nbHlwaGljb24tc3Rhci1lbXB0eTpiZWZvcmV7Y29udGVudDpcIlxcZTAwN1wifS5nbHlwaGljb24tdXNlcjpiZWZvcmV7Y29udGVudDpcIlxcZTAwOFwifS5nbHlwaGljb24tZmlsbTpiZWZvcmV7Y29udGVudDpcIlxcZTAwOVwifS5nbHlwaGljb24tdGgtbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMTBcIn0uZ2x5cGhpY29uLXRoOmJlZm9yZXtjb250ZW50OlwiXFxlMDExXCJ9LmdseXBoaWNvbi10aC1saXN0OmJlZm9yZXtjb250ZW50OlwiXFxlMDEyXCJ9LmdseXBoaWNvbi1vazpiZWZvcmV7Y29udGVudDpcIlxcZTAxM1wifS5nbHlwaGljb24tcmVtb3ZlOmJlZm9yZXtjb250ZW50OlwiXFxlMDE0XCJ9LmdseXBoaWNvbi16b29tLWluOmJlZm9yZXtjb250ZW50OlwiXFxlMDE1XCJ9LmdseXBoaWNvbi16b29tLW91dDpiZWZvcmV7Y29udGVudDpcIlxcZTAxNlwifS5nbHlwaGljb24tb2ZmOmJlZm9yZXtjb250ZW50OlwiXFxlMDE3XCJ9LmdseXBoaWNvbi1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMThcIn0uZ2x5cGhpY29uLWNvZzpiZWZvcmV7Y29udGVudDpcIlxcZTAxOVwifS5nbHlwaGljb24tdHJhc2g6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjBcIn0uZ2x5cGhpY29uLWhvbWU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjFcIn0uZ2x5cGhpY29uLWZpbGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjJcIn0uZ2x5cGhpY29uLXRpbWU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjNcIn0uZ2x5cGhpY29uLXJvYWQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjRcIn0uZ2x5cGhpY29uLWRvd25sb2FkLWFsdDpiZWZvcmV7Y29udGVudDpcIlxcZTAyNVwifS5nbHlwaGljb24tZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjZcIn0uZ2x5cGhpY29uLXVwbG9hZDpiZWZvcmV7Y29udGVudDpcIlxcZTAyN1wifS5nbHlwaGljb24taW5ib3g6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMjhcIn0uZ2x5cGhpY29uLXBsYXktY2lyY2xlOmJlZm9yZXtjb250ZW50OlwiXFxlMDI5XCJ9LmdseXBoaWNvbi1yZXBlYXQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMzBcIn0uZ2x5cGhpY29uLXJlZnJlc2g6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMzFcIn0uZ2x5cGhpY29uLWxpc3QtYWx0OmJlZm9yZXtjb250ZW50OlwiXFxlMDMyXCJ9LmdseXBoaWNvbi1sb2NrOmJlZm9yZXtjb250ZW50OlwiXFxlMDMzXCJ9LmdseXBoaWNvbi1mbGFnOmJlZm9yZXtjb250ZW50OlwiXFxlMDM0XCJ9LmdseXBoaWNvbi1oZWFkcGhvbmVzOmJlZm9yZXtjb250ZW50OlwiXFxlMDM1XCJ9LmdseXBoaWNvbi12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OlwiXFxlMDM2XCJ9LmdseXBoaWNvbi12b2x1bWUtZG93bjpiZWZvcmV7Y29udGVudDpcIlxcZTAzN1wifS5nbHlwaGljb24tdm9sdW1lLXVwOmJlZm9yZXtjb250ZW50OlwiXFxlMDM4XCJ9LmdseXBoaWNvbi1xcmNvZGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwMzlcIn0uZ2x5cGhpY29uLWJhcmNvZGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNDBcIn0uZ2x5cGhpY29uLXRhZzpiZWZvcmV7Y29udGVudDpcIlxcZTA0MVwifS5nbHlwaGljb24tdGFnczpiZWZvcmV7Y29udGVudDpcIlxcZTA0MlwifS5nbHlwaGljb24tYm9vazpiZWZvcmV7Y29udGVudDpcIlxcZTA0M1wifS5nbHlwaGljb24tYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNDRcIn0uZ2x5cGhpY29uLXByaW50OmJlZm9yZXtjb250ZW50OlwiXFxlMDQ1XCJ9LmdseXBoaWNvbi1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNDZcIn0uZ2x5cGhpY29uLWZvbnQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNDdcIn0uZ2x5cGhpY29uLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNDhcIn0uZ2x5cGhpY29uLWl0YWxpYzpiZWZvcmV7Y29udGVudDpcIlxcZTA0OVwifS5nbHlwaGljb24tdGV4dC1oZWlnaHQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNTBcIn0uZ2x5cGhpY29uLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNTFcIn0uZ2x5cGhpY29uLWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNTJcIn0uZ2x5cGhpY29uLWFsaWduLWNlbnRlcjpiZWZvcmV7Y29udGVudDpcIlxcZTA1M1wifS5nbHlwaGljb24tYWxpZ24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNTRcIn0uZ2x5cGhpY29uLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNTVcIn0uZ2x5cGhpY29uLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNTZcIn0uZ2x5cGhpY29uLWluZGVudC1sZWZ0OmJlZm9yZXtjb250ZW50OlwiXFxlMDU3XCJ9LmdseXBoaWNvbi1pbmRlbnQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNThcIn0uZ2x5cGhpY29uLWZhY2V0aW1lLXZpZGVvOmJlZm9yZXtjb250ZW50OlwiXFxlMDU5XCJ9LmdseXBoaWNvbi1waWN0dXJlOmJlZm9yZXtjb250ZW50OlwiXFxlMDYwXCJ9LmdseXBoaWNvbi1tYXAtbWFya2VyOmJlZm9yZXtjb250ZW50OlwiXFxlMDYyXCJ9LmdseXBoaWNvbi1hZGp1c3Q6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNjNcIn0uZ2x5cGhpY29uLXRpbnQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNjRcIn0uZ2x5cGhpY29uLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNjVcIn0uZ2x5cGhpY29uLXNoYXJlOmJlZm9yZXtjb250ZW50OlwiXFxlMDY2XCJ9LmdseXBoaWNvbi1jaGVjazpiZWZvcmV7Y29udGVudDpcIlxcZTA2N1wifS5nbHlwaGljb24tbW92ZTpiZWZvcmV7Y29udGVudDpcIlxcZTA2OFwifS5nbHlwaGljb24tc3RlcC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDpcIlxcZTA2OVwifS5nbHlwaGljb24tZmFzdC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDpcIlxcZTA3MFwifS5nbHlwaGljb24tYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNzFcIn0uZ2x5cGhpY29uLXBsYXk6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNzJcIn0uZ2x5cGhpY29uLXBhdXNlOmJlZm9yZXtjb250ZW50OlwiXFxlMDczXCJ9LmdseXBoaWNvbi1zdG9wOmJlZm9yZXtjb250ZW50OlwiXFxlMDc0XCJ9LmdseXBoaWNvbi1mb3J3YXJkOmJlZm9yZXtjb250ZW50OlwiXFxlMDc1XCJ9LmdseXBoaWNvbi1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNzZcIn0uZ2x5cGhpY29uLXN0ZXAtZm9yd2FyZDpiZWZvcmV7Y29udGVudDpcIlxcZTA3N1wifS5nbHlwaGljb24tZWplY3Q6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwNzhcIn0uZ2x5cGhpY29uLWNoZXZyb24tbGVmdDpiZWZvcmV7Y29udGVudDpcIlxcZTA3OVwifS5nbHlwaGljb24tY2hldnJvbi1yaWdodDpiZWZvcmV7Y29udGVudDpcIlxcZTA4MFwifS5nbHlwaGljb24tcGx1cy1zaWduOmJlZm9yZXtjb250ZW50OlwiXFxlMDgxXCJ9LmdseXBoaWNvbi1taW51cy1zaWduOmJlZm9yZXtjb250ZW50OlwiXFxlMDgyXCJ9LmdseXBoaWNvbi1yZW1vdmUtc2lnbjpiZWZvcmV7Y29udGVudDpcIlxcZTA4M1wifS5nbHlwaGljb24tb2stc2lnbjpiZWZvcmV7Y29udGVudDpcIlxcZTA4NFwifS5nbHlwaGljb24tcXVlc3Rpb24tc2lnbjpiZWZvcmV7Y29udGVudDpcIlxcZTA4NVwifS5nbHlwaGljb24taW5mby1zaWduOmJlZm9yZXtjb250ZW50OlwiXFxlMDg2XCJ9LmdseXBoaWNvbi1zY3JlZW5zaG90OmJlZm9yZXtjb250ZW50OlwiXFxlMDg3XCJ9LmdseXBoaWNvbi1yZW1vdmUtY2lyY2xlOmJlZm9yZXtjb250ZW50OlwiXFxlMDg4XCJ9LmdseXBoaWNvbi1vay1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwODlcIn0uZ2x5cGhpY29uLWJhbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwOTBcIn0uZ2x5cGhpY29uLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUwOTFcIn0uZ2x5cGhpY29uLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OlwiXFxlMDkyXCJ9LmdseXBoaWNvbi1hcnJvdy11cDpiZWZvcmV7Y29udGVudDpcIlxcZTA5M1wifS5nbHlwaGljb24tYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDpcIlxcZTA5NFwifS5nbHlwaGljb24tc2hhcmUtYWx0OmJlZm9yZXtjb250ZW50OlwiXFxlMDk1XCJ9LmdseXBoaWNvbi1yZXNpemUtZnVsbDpiZWZvcmV7Y29udGVudDpcIlxcZTA5NlwifS5nbHlwaGljb24tcmVzaXplLXNtYWxsOmJlZm9yZXtjb250ZW50OlwiXFxlMDk3XCJ9LmdseXBoaWNvbi1leGNsYW1hdGlvbi1zaWduOmJlZm9yZXtjb250ZW50OlwiXFxlMTAxXCJ9LmdseXBoaWNvbi1naWZ0OmJlZm9yZXtjb250ZW50OlwiXFxlMTAyXCJ9LmdseXBoaWNvbi1sZWFmOmJlZm9yZXtjb250ZW50OlwiXFxlMTAzXCJ9LmdseXBoaWNvbi1maXJlOmJlZm9yZXtjb250ZW50OlwiXFxlMTA0XCJ9LmdseXBoaWNvbi1leWUtb3BlbjpiZWZvcmV7Y29udGVudDpcIlxcZTEwNVwifS5nbHlwaGljb24tZXllLWNsb3NlOmJlZm9yZXtjb250ZW50OlwiXFxlMTA2XCJ9LmdseXBoaWNvbi13YXJuaW5nLXNpZ246YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMDdcIn0uZ2x5cGhpY29uLXBsYW5lOmJlZm9yZXtjb250ZW50OlwiXFxlMTA4XCJ9LmdseXBoaWNvbi1jYWxlbmRhcjpiZWZvcmV7Y29udGVudDpcIlxcZTEwOVwifS5nbHlwaGljb24tcmFuZG9tOmJlZm9yZXtjb250ZW50OlwiXFxlMTEwXCJ9LmdseXBoaWNvbi1jb21tZW50OmJlZm9yZXtjb250ZW50OlwiXFxlMTExXCJ9LmdseXBoaWNvbi1tYWduZXQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMTJcIn0uZ2x5cGhpY29uLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMTNcIn0uZ2x5cGhpY29uLWNoZXZyb24tZG93bjpiZWZvcmV7Y29udGVudDpcIlxcZTExNFwifS5nbHlwaGljb24tcmV0d2VldDpiZWZvcmV7Y29udGVudDpcIlxcZTExNVwifS5nbHlwaGljb24tc2hvcHBpbmctY2FydDpiZWZvcmV7Y29udGVudDpcIlxcZTExNlwifS5nbHlwaGljb24tZm9sZGVyLWNsb3NlOmJlZm9yZXtjb250ZW50OlwiXFxlMTE3XCJ9LmdseXBoaWNvbi1mb2xkZXItb3BlbjpiZWZvcmV7Y29udGVudDpcIlxcZTExOFwifS5nbHlwaGljb24tcmVzaXplLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OlwiXFxlMTE5XCJ9LmdseXBoaWNvbi1yZXNpemUtaG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDpcIlxcZTEyMFwifS5nbHlwaGljb24taGRkOmJlZm9yZXtjb250ZW50OlwiXFxlMTIxXCJ9LmdseXBoaWNvbi1idWxsaG9ybjpiZWZvcmV7Y29udGVudDpcIlxcZTEyMlwifS5nbHlwaGljb24tYmVsbDpiZWZvcmV7Y29udGVudDpcIlxcZTEyM1wifS5nbHlwaGljb24tY2VydGlmaWNhdGU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMjRcIn0uZ2x5cGhpY29uLXRodW1icy11cDpiZWZvcmV7Y29udGVudDpcIlxcZTEyNVwifS5nbHlwaGljb24tdGh1bWJzLWRvd246YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMjZcIn0uZ2x5cGhpY29uLWhhbmQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMjdcIn0uZ2x5cGhpY29uLWhhbmQtbGVmdDpiZWZvcmV7Y29udGVudDpcIlxcZTEyOFwifS5nbHlwaGljb24taGFuZC11cDpiZWZvcmV7Y29udGVudDpcIlxcZTEyOVwifS5nbHlwaGljb24taGFuZC1kb3duOmJlZm9yZXtjb250ZW50OlwiXFxlMTMwXCJ9LmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMzFcIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OlwiXFxlMTMyXCJ9LmdseXBoaWNvbi1jaXJjbGUtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMzNcIn0uZ2x5cGhpY29uLWNpcmNsZS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OlwiXFxlMTM0XCJ9LmdseXBoaWNvbi1nbG9iZTpiZWZvcmV7Y29udGVudDpcIlxcZTEzNVwifS5nbHlwaGljb24td3JlbmNoOmJlZm9yZXtjb250ZW50OlwiXFxlMTM2XCJ9LmdseXBoaWNvbi10YXNrczpiZWZvcmV7Y29udGVudDpcIlxcZTEzN1wifS5nbHlwaGljb24tZmlsdGVyOmJlZm9yZXtjb250ZW50OlwiXFxlMTM4XCJ9LmdseXBoaWNvbi1icmllZmNhc2U6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxMzlcIn0uZ2x5cGhpY29uLWZ1bGxzY3JlZW46YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNDBcIn0uZ2x5cGhpY29uLWRhc2hib2FyZDpiZWZvcmV7Y29udGVudDpcIlxcZTE0MVwifS5nbHlwaGljb24tcGFwZXJjbGlwOmJlZm9yZXtjb250ZW50OlwiXFxlMTQyXCJ9LmdseXBoaWNvbi1oZWFydC1lbXB0eTpiZWZvcmV7Y29udGVudDpcIlxcZTE0M1wifS5nbHlwaGljb24tbGluazpiZWZvcmV7Y29udGVudDpcIlxcZTE0NFwifS5nbHlwaGljb24tcGhvbmU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNDVcIn0uZ2x5cGhpY29uLXB1c2hwaW46YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNDZcIn0uZ2x5cGhpY29uLXVzZDpiZWZvcmV7Y29udGVudDpcIlxcZTE0OFwifS5nbHlwaGljb24tZ2JwOmJlZm9yZXtjb250ZW50OlwiXFxlMTQ5XCJ9LmdseXBoaWNvbi1zb3J0OmJlZm9yZXtjb250ZW50OlwiXFxlMTUwXCJ9LmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0OmJlZm9yZXtjb250ZW50OlwiXFxlMTUxXCJ9LmdseXBoaWNvbi1zb3J0LWJ5LWFscGhhYmV0LWFsdDpiZWZvcmV7Y29udGVudDpcIlxcZTE1MlwifS5nbHlwaGljb24tc29ydC1ieS1vcmRlcjpiZWZvcmV7Y29udGVudDpcIlxcZTE1M1wifS5nbHlwaGljb24tc29ydC1ieS1vcmRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNTRcIn0uZ2x5cGhpY29uLXNvcnQtYnktYXR0cmlidXRlczpiZWZvcmV7Y29udGVudDpcIlxcZTE1NVwifS5nbHlwaGljb24tc29ydC1ieS1hdHRyaWJ1dGVzLWFsdDpiZWZvcmV7Y29udGVudDpcIlxcZTE1NlwifS5nbHlwaGljb24tdW5jaGVja2VkOmJlZm9yZXtjb250ZW50OlwiXFxlMTU3XCJ9LmdseXBoaWNvbi1leHBhbmQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNThcIn0uZ2x5cGhpY29uLWNvbGxhcHNlLWRvd246YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNTlcIn0uZ2x5cGhpY29uLWNvbGxhcHNlLXVwOmJlZm9yZXtjb250ZW50OlwiXFxlMTYwXCJ9LmdseXBoaWNvbi1sb2ctaW46YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNjFcIn0uZ2x5cGhpY29uLWZsYXNoOmJlZm9yZXtjb250ZW50OlwiXFxlMTYyXCJ9LmdseXBoaWNvbi1sb2ctb3V0OmJlZm9yZXtjb250ZW50OlwiXFxlMTYzXCJ9LmdseXBoaWNvbi1uZXctd2luZG93OmJlZm9yZXtjb250ZW50OlwiXFxlMTY0XCJ9LmdseXBoaWNvbi1yZWNvcmQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNjVcIn0uZ2x5cGhpY29uLXNhdmU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNjZcIn0uZ2x5cGhpY29uLW9wZW46YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNjdcIn0uZ2x5cGhpY29uLXNhdmVkOmJlZm9yZXtjb250ZW50OlwiXFxlMTY4XCJ9LmdseXBoaWNvbi1pbXBvcnQ6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNjlcIn0uZ2x5cGhpY29uLWV4cG9ydDpiZWZvcmV7Y29udGVudDpcIlxcZTE3MFwifS5nbHlwaGljb24tc2VuZDpiZWZvcmV7Y29udGVudDpcIlxcZTE3MVwifS5nbHlwaGljb24tZmxvcHB5LWRpc2s6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNzJcIn0uZ2x5cGhpY29uLWZsb3BweS1zYXZlZDpiZWZvcmV7Y29udGVudDpcIlxcZTE3M1wifS5nbHlwaGljb24tZmxvcHB5LXJlbW92ZTpiZWZvcmV7Y29udGVudDpcIlxcZTE3NFwifS5nbHlwaGljb24tZmxvcHB5LXNhdmU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNzVcIn0uZ2x5cGhpY29uLWZsb3BweS1vcGVuOmJlZm9yZXtjb250ZW50OlwiXFxlMTc2XCJ9LmdseXBoaWNvbi1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDpcIlxcZTE3N1wifS5nbHlwaGljb24tdHJhbnNmZXI6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNzhcIn0uZ2x5cGhpY29uLWN1dGxlcnk6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxNzlcIn0uZ2x5cGhpY29uLWhlYWRlcjpiZWZvcmV7Y29udGVudDpcIlxcZTE4MFwifS5nbHlwaGljb24tY29tcHJlc3NlZDpiZWZvcmV7Y29udGVudDpcIlxcZTE4MVwifS5nbHlwaGljb24tZWFycGhvbmU6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxODJcIn0uZ2x5cGhpY29uLXBob25lLWFsdDpiZWZvcmV7Y29udGVudDpcIlxcZTE4M1wifS5nbHlwaGljb24tdG93ZXI6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxODRcIn0uZ2x5cGhpY29uLXN0YXRzOmJlZm9yZXtjb250ZW50OlwiXFxlMTg1XCJ9LmdseXBoaWNvbi1zZC12aWRlbzpiZWZvcmV7Y29udGVudDpcIlxcZTE4NlwifS5nbHlwaGljb24taGQtdmlkZW86YmVmb3Jle2NvbnRlbnQ6XCJcXGUxODdcIn0uZ2x5cGhpY29uLXN1YnRpdGxlczpiZWZvcmV7Y29udGVudDpcIlxcZTE4OFwifS5nbHlwaGljb24tc291bmQtc3RlcmVvOmJlZm9yZXtjb250ZW50OlwiXFxlMTg5XCJ9LmdseXBoaWNvbi1zb3VuZC1kb2xieTpiZWZvcmV7Y29udGVudDpcIlxcZTE5MFwifS5nbHlwaGljb24tc291bmQtNS0xOmJlZm9yZXtjb250ZW50OlwiXFxlMTkxXCJ9LmdseXBoaWNvbi1zb3VuZC02LTE6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxOTJcIn0uZ2x5cGhpY29uLXNvdW5kLTctMTpiZWZvcmV7Y29udGVudDpcIlxcZTE5M1wifS5nbHlwaGljb24tY29weXJpZ2h0LW1hcms6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxOTRcIn0uZ2x5cGhpY29uLXJlZ2lzdHJhdGlvbi1tYXJrOmJlZm9yZXtjb250ZW50OlwiXFxlMTk1XCJ9LmdseXBoaWNvbi1jbG91ZC1kb3dubG9hZDpiZWZvcmV7Y29udGVudDpcIlxcZTE5N1wifS5nbHlwaGljb24tY2xvdWQtdXBsb2FkOmJlZm9yZXtjb250ZW50OlwiXFxlMTk4XCJ9LmdseXBoaWNvbi10cmVlLWNvbmlmZXI6YmVmb3Jle2NvbnRlbnQ6XCJcXGUxOTlcIn0uZ2x5cGhpY29uLXRyZWUtZGVjaWR1b3VzOmJlZm9yZXtjb250ZW50OlwiXFxlMjAwXCJ9LmNhcmV0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7bWFyZ2luLWxlZnQ6MnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3JkZXItdG9wOjRweCBzb2xpZDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0uZHJvcGRvd257cG9zaXRpb246cmVsYXRpdmV9LmRyb3Bkb3duLXRvZ2dsZTpmb2N1c3tvdXRsaW5lOjB9LmRyb3Bkb3duLW1lbnV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjEwMCU7bGVmdDowO3otaW5kZXg6MTAwMDtkaXNwbGF5Om5vbmU7ZmxvYXQ6bGVmdDttaW4td2lkdGg6MTYwcHg7cGFkZGluZzo1cHggMDttYXJnaW46MnB4IDAgMDtsaXN0LXN0eWxlOm5vbmU7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KTtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsMCwwLC4xNzUpO2JveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsMCwwLC4xNzUpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveH0uZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wZG93bi1tZW51IC5kaXZpZGVye2hlaWdodDoxcHg7bWFyZ2luOjlweCAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTV9LmRyb3Bkb3duLW1lbnU+bGk+YXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDIwcHg7Y2xlYXI6Ym90aDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40Mjg1NzE0Mjk7Y29sb3I6IzMzMzt3aGl0ZS1zcGFjZTpub3dyYXB9LmRyb3Bkb3duLW1lbnU+bGk+YTpob3ZlciwuZHJvcGRvd24tbWVudT5saT5hOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMyNjI2MjY7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YSwuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTowO2JhY2tncm91bmQtY29sb3I6IzQyOGJjYX0uZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YSwuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3ZlciwuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1c3tjb2xvcjojOTk5fS5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVyLC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5vcGVuPi5kcm9wZG93bi1tZW51e2Rpc3BsYXk6YmxvY2t9Lm9wZW4+YXtvdXRsaW5lOjB9LmRyb3Bkb3duLW1lbnUtcmlnaHR7bGVmdDphdXRvO3JpZ2h0OjB9LmRyb3Bkb3duLW1lbnUtbGVmdHtsZWZ0OjA7cmlnaHQ6YXV0b30uZHJvcGRvd24taGVhZGVye2Rpc3BsYXk6YmxvY2s7cGFkZGluZzozcHggMjBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQyODU3MTQyOTtjb2xvcjojOTk5fS5kcm9wZG93bi1iYWNrZHJvcHtwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDt0b3A6MDt6LWluZGV4Ojk5MH0ucHVsbC1yaWdodD4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30uZHJvcHVwIC5jYXJldCwubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmNhcmV0e2JvcmRlci10b3A6MDtib3JkZXItYm90dG9tOjRweCBzb2xpZDtjb250ZW50OlwiXCJ9LmRyb3B1cCAuZHJvcGRvd24tbWVudSwubmF2YmFyLWZpeGVkLWJvdHRvbSAuZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87Ym90dG9tOjEwMCU7bWFyZ2luLWJvdHRvbToxcHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnV7bGVmdDphdXRvO3JpZ2h0OjB9Lm5hdmJhci1yaWdodCAuZHJvcGRvd24tbWVudS1sZWZ0e2xlZnQ6MDtyaWdodDphdXRvfX0uYnRuLWdyb3VwLC5idG4tZ3JvdXAtdmVydGljYWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfS5idG4tZ3JvdXA+LmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG57cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdH0uYnRuLWdyb3VwPi5idG46aG92ZXIsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmhvdmVyLC5idG4tZ3JvdXA+LmJ0bjpmb2N1cywuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46Zm9jdXMsLmJ0bi1ncm91cD4uYnRuOmFjdGl2ZSwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46YWN0aXZlLC5idG4tZ3JvdXA+LmJ0bi5hY3RpdmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLmFjdGl2ZXt6LWluZGV4OjJ9LmJ0bi1ncm91cD4uYnRuOmZvY3VzLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpmb2N1c3tvdXRsaW5lOjB9LmJ0bi1ncm91cCAuYnRuKy5idG4sLmJ0bi1ncm91cCAuYnRuKy5idG4tZ3JvdXAsLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4sLmJ0bi1ncm91cCAuYnRuLWdyb3VwKy5idG4tZ3JvdXB7bWFyZ2luLWxlZnQ6LTFweH0uYnRuLXRvb2xiYXJ7bWFyZ2luLWxlZnQ6LTVweH0uYnRuLXRvb2xiYXIgLmJ0bi1ncm91cCwuYnRuLXRvb2xiYXIgLmlucHV0LWdyb3Vwe2Zsb2F0OmxlZnR9LmJ0bi10b29sYmFyPi5idG4sLmJ0bi10b29sYmFyPi5idG4tZ3JvdXAsLmJ0bi10b29sYmFyPi5pbnB1dC1ncm91cHttYXJnaW4tbGVmdDo1cHh9LmJ0bi1ncm91cD4uYnRuOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpe2JvcmRlci1yYWRpdXM6MH0uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwPi5idG46Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpLC5idG4tZ3JvdXA+LmRyb3Bkb3duLXRvZ2dsZTpub3QoOmZpcnN0LWNoaWxkKXtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cHtmbG9hdDpsZWZ0fS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZD4uYnRuOmxhc3QtY2hpbGQsLmJ0bi1ncm91cD4uYnRuLWdyb3VwOmZpcnN0LWNoaWxkPi5kcm9wZG93bi10b2dnbGV7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowfS5idG4tZ3JvdXA+LmJ0bi1ncm91cDpsYXN0LWNoaWxkPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MH0uYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGU6YWN0aXZlLC5idG4tZ3JvdXAub3BlbiAuZHJvcGRvd24tdG9nZ2xle291dGxpbmU6MH0uYnRuLWdyb3VwLXhzPi5idG57cGFkZGluZzoxcHggNXB4O2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNTtib3JkZXItcmFkaXVzOjNweH0uYnRuLWdyb3VwLXNtPi5idG57cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjU7Ym9yZGVyLXJhZGl1czozcHh9LmJ0bi1ncm91cC1sZz4uYnRue3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjEuMzM7Ym9yZGVyLXJhZGl1czo2cHh9LmJ0bi1ncm91cD4uYnRuKy5kcm9wZG93bi10b2dnbGV7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweH0uYnRuLWdyb3VwPi5idG4tbGcrLmRyb3Bkb3duLXRvZ2dsZXtwYWRkaW5nLWxlZnQ6MTJweDtwYWRkaW5nLXJpZ2h0OjEycHh9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGV7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgM3B4IDVweCByZ2JhKDAsMCwwLC4xMjUpO2JveC1zaGFkb3c6aW5zZXQgMCAzcHggNXB4IHJnYmEoMCwwLDAsLjEyNSl9LmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGUuYnRuLWxpbmt7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lfS5idG4gLmNhcmV0e21hcmdpbi1sZWZ0OjB9LmJ0bi1sZyAuY2FyZXR7Ym9yZGVyLXdpZHRoOjVweCA1cHggMDtib3JkZXItYm90dG9tLXdpZHRoOjB9LmRyb3B1cCAuYnRuLWxnIC5jYXJldHtib3JkZXItd2lkdGg6MCA1cHggNXB4fS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXAsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZGlzcGxheTpibG9jaztmbG9hdDpub25lO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCV9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwPi5idG57ZmxvYXQ6bm9uZX0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4rLmJ0bi1ncm91cCwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0biwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXArLmJ0bi1ncm91cHttYXJnaW4tdG9wOi0xcHg7bWFyZ2luLWxlZnQ6MH0uYnRuLWdyb3VwLXZlcnRpY2FsPi5idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKXtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpPi5idG57Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpPi5idG46bGFzdC1jaGlsZCwuYnRuLWdyb3VwLXZlcnRpY2FsPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ6bm90KDpsYXN0LWNoaWxkKT4uZHJvcGRvd24tdG9nZ2xle2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpPi5idG46Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9LmJ0bi1ncm91cC1qdXN0aWZpZWR7ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlO3RhYmxlLWxheW91dDpmaXhlZDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmJ0bi1ncm91cC1qdXN0aWZpZWQ+LmJ0biwuYnRuLWdyb3VwLWp1c3RpZmllZD4uYnRuLWdyb3Vwe2Zsb2F0Om5vbmU7ZGlzcGxheTp0YWJsZS1jZWxsO3dpZHRoOjElfS5idG4tZ3JvdXAtanVzdGlmaWVkPi5idG4tZ3JvdXAgLmJ0bnt3aWR0aDoxMDAlfVtkYXRhLXRvZ2dsZT1idXR0b25zXT4uYnRuPmlucHV0W3R5cGU9cmFkaW9dLFtkYXRhLXRvZ2dsZT1idXR0b25zXT4uYnRuPmlucHV0W3R5cGU9Y2hlY2tib3hde2Rpc3BsYXk6bm9uZX0uaW5wdXQtZ3JvdXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTp0YWJsZTtib3JkZXItY29sbGFwc2U6c2VwYXJhdGV9LmlucHV0LWdyb3VwW2NsYXNzKj1jb2wtXXtmbG9hdDpub25lO3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0uaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbHtmbG9hdDpsZWZ0O3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbTowfS5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6NDZweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoxLjMzO2JvcmRlci1yYWRpdXM6NnB4fXNlbGVjdC5pbnB1dC1ncm91cC1sZz4uZm9ybS1jb250cm9sLHNlbGVjdC5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24sc2VsZWN0LmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6NDZweDtsaW5lLWhlaWdodDo0NnB4fXRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsdGV4dGFyZWEuaW5wdXQtZ3JvdXAtbGc+LmlucHV0LWdyb3VwLWFkZG9uLHRleHRhcmVhLmlucHV0LWdyb3VwLWxnPi5pbnB1dC1ncm91cC1idG4+LmJ0bixzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLWxnPi5mb3JtLWNvbnRyb2wsc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYWRkb24sc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1sZz4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OmF1dG99LmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1hZGRvbiwuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWJ0bj4uYnRue2hlaWdodDozMHB4O3BhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41O2JvcmRlci1yYWRpdXM6M3B4fXNlbGVjdC5pbnB1dC1ncm91cC1zbT4uZm9ybS1jb250cm9sLHNlbGVjdC5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYWRkb24sc2VsZWN0LmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+LmJ0bntoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4fXRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsdGV4dGFyZWEuaW5wdXQtZ3JvdXAtc20+LmlucHV0LWdyb3VwLWFkZG9uLHRleHRhcmVhLmlucHV0LWdyb3VwLXNtPi5pbnB1dC1ncm91cC1idG4+LmJ0bixzZWxlY3RbbXVsdGlwbGVdLmlucHV0LWdyb3VwLXNtPi5mb3JtLWNvbnRyb2wsc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYWRkb24sc2VsZWN0W211bHRpcGxlXS5pbnB1dC1ncm91cC1zbT4uaW5wdXQtZ3JvdXAtYnRuPi5idG57aGVpZ2h0OmF1dG99LmlucHV0LWdyb3VwLWFkZG9uLC5pbnB1dC1ncm91cC1idG4sLmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2x7ZGlzcGxheTp0YWJsZS1jZWxsfS5pbnB1dC1ncm91cC1hZGRvbjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpLC5pbnB1dC1ncm91cC1idG46bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAgLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1yYWRpdXM6MH0uaW5wdXQtZ3JvdXAtYWRkb24sLmlucHV0LWdyb3VwLWJ0bnt3aWR0aDoxJTt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5pbnB1dC1ncm91cC1hZGRvbntwYWRkaW5nOjZweCAxMnB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxO2NvbG9yOiM1NTU7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjRweH0uaW5wdXQtZ3JvdXAtYWRkb24uaW5wdXQtc217cGFkZGluZzo1cHggMTBweDtmb250LXNpemU6MTJweDtib3JkZXItcmFkaXVzOjNweH0uaW5wdXQtZ3JvdXAtYWRkb24uaW5wdXQtbGd7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjE4cHg7Ym9yZGVyLXJhZGl1czo2cHh9LmlucHV0LWdyb3VwLWFkZG9uIGlucHV0W3R5cGU9cmFkaW9dLC5pbnB1dC1ncm91cC1hZGRvbiBpbnB1dFt0eXBlPWNoZWNrYm94XXttYXJnaW4tdG9wOjB9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6Zmlyc3QtY2hpbGQsLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4tZ3JvdXA+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5kcm9wZG93bi10b2dnbGUsLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksLmlucHV0LWdyb3VwLWJ0bjpsYXN0LWNoaWxkPi5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKT4uYnRue2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MH0uaW5wdXQtZ3JvdXAtYWRkb246Zmlyc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjB9LmlucHV0LWdyb3VwIC5mb3JtLWNvbnRyb2w6bGFzdC1jaGlsZCwuaW5wdXQtZ3JvdXAtYWRkb246bGFzdC1jaGlsZCwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0biwuaW5wdXQtZ3JvdXAtYnRuOmxhc3QtY2hpbGQ+LmJ0bi1ncm91cD4uYnRuLC5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uZHJvcGRvd24tdG9nZ2xlLC5pbnB1dC1ncm91cC1idG46Zmlyc3QtY2hpbGQ+LmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwuaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCk+LmJ0bntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5pbnB1dC1ncm91cC1hZGRvbjpsYXN0LWNoaWxke2JvcmRlci1sZWZ0OjB9LmlucHV0LWdyb3VwLWJ0bntwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LmlucHV0LWdyb3VwLWJ0bj4uYnRue3Bvc2l0aW9uOnJlbGF0aXZlfS5pbnB1dC1ncm91cC1idG4+LmJ0bisuYnRue21hcmdpbi1sZWZ0Oi0xcHh9LmlucHV0LWdyb3VwLWJ0bj4uYnRuOmhvdmVyLC5pbnB1dC1ncm91cC1idG4+LmJ0bjpmb2N1cywuaW5wdXQtZ3JvdXAtYnRuPi5idG46YWN0aXZle3otaW5kZXg6Mn0uaW5wdXQtZ3JvdXAtYnRuOmZpcnN0LWNoaWxkPi5idG4sLmlucHV0LWdyb3VwLWJ0bjpmaXJzdC1jaGlsZD4uYnRuLWdyb3Vwe21hcmdpbi1yaWdodDotMXB4fS5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuLC5pbnB1dC1ncm91cC1idG46bGFzdC1jaGlsZD4uYnRuLWdyb3Vwe21hcmdpbi1sZWZ0Oi0xcHh9Lm5hdnttYXJnaW4tYm90dG9tOjA7cGFkZGluZy1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfS5uYXY+bGl7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9ja30ubmF2PmxpPmF7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHggMTVweH0ubmF2PmxpPmE6aG92ZXIsLm5hdj5saT5hOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubmF2PmxpLmRpc2FibGVkPmF7Y29sb3I6Izk5OX0ubmF2PmxpLmRpc2FibGVkPmE6aG92ZXIsLm5hdj5saS5kaXNhYmxlZD5hOmZvY3Vze2NvbG9yOiM5OTk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6bm90LWFsbG93ZWR9Lm5hdiAub3Blbj5hLC5uYXYgLm9wZW4+YTpob3ZlciwubmF2IC5vcGVuPmE6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlci1jb2xvcjojNDI4YmNhfS5uYXYgLm5hdi1kaXZpZGVye2hlaWdodDoxcHg7bWFyZ2luOjlweCAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTV9Lm5hdj5saT5hPmltZ3ttYXgtd2lkdGg6bm9uZX0ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ubmF2LXRhYnM+bGl7ZmxvYXQ6bGVmdDttYXJnaW4tYm90dG9tOi0xcHh9Lm5hdi10YWJzPmxpPmF7bWFyZ2luLXJpZ2h0OjJweDtsaW5lLWhlaWdodDoxLjQyODU3MTQyOTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDB9Lm5hdi10YWJzPmxpPmE6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNlZWUgI2VlZSAjZGRkfS5uYXYtdGFicz5saS5hY3RpdmU+YSwubmF2LXRhYnM+bGkuYWN0aXZlPmE6aG92ZXIsLm5hdi10YWJzPmxpLmFjdGl2ZT5hOmZvY3Vze2NvbG9yOiM1NTU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0fS5uYXYtdGFicy5uYXYtanVzdGlmaWVke3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbTowfS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpe2Zsb2F0Om5vbmV9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YXt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjVweH0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uZHJvcGRvd24gLmRyb3Bkb3duLW1lbnV7dG9wOmF1dG87bGVmdDphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saXtkaXNwbGF5OnRhYmxlLWNlbGw7d2lkdGg6MSV9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+bGk+YXttYXJnaW4tYm90dG9tOjB9fS5uYXYtdGFicy5uYXYtanVzdGlmaWVkPmxpPmF7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hLC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YTpob3ZlciwubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LXRhYnMubmF2LWp1c3RpZmllZD5saT5he2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMH0ubmF2LXRhYnMubmF2LWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLm5hdi1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLC5uYXYtdGFicy5uYXYtanVzdGlmaWVkPi5hY3RpdmU+YTpmb2N1c3tib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9fS5uYXYtcGlsbHM+bGl7ZmxvYXQ6bGVmdH0ubmF2LXBpbGxzPmxpPmF7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi1waWxscz5saStsaXttYXJnaW4tbGVmdDoycHh9Lm5hdi1waWxscz5saS5hY3RpdmU+YSwubmF2LXBpbGxzPmxpLmFjdGl2ZT5hOmhvdmVyLC5uYXYtcGlsbHM+bGkuYWN0aXZlPmE6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2F9Lm5hdi1zdGFja2VkPmxpe2Zsb2F0Om5vbmV9Lm5hdi1zdGFja2VkPmxpK2xpe21hcmdpbi10b3A6MnB4O21hcmdpbi1sZWZ0OjB9Lm5hdi1qdXN0aWZpZWR7d2lkdGg6MTAwJX0ubmF2LWp1c3RpZmllZD5saXtmbG9hdDpub25lfS5uYXYtanVzdGlmaWVkPmxpPmF7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTo1cHh9Lm5hdi1qdXN0aWZpZWQ+LmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e3RvcDphdXRvO2xlZnQ6YXV0b31AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdi1qdXN0aWZpZWQ+bGl7ZGlzcGxheTp0YWJsZS1jZWxsO3dpZHRoOjElfS5uYXYtanVzdGlmaWVkPmxpPmF7bWFyZ2luLWJvdHRvbTowfX0ubmF2LXRhYnMtanVzdGlmaWVke2JvcmRlci1ib3R0b206MH0ubmF2LXRhYnMtanVzdGlmaWVkPmxpPmF7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmEsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6aG92ZXIsLm5hdi10YWJzLWp1c3RpZmllZD4uYWN0aXZlPmE6Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjZGRkfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2LXRhYnMtanVzdGlmaWVkPmxpPmF7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwfS5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hLC5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmhvdmVyLC5uYXYtdGFicy1qdXN0aWZpZWQ+LmFjdGl2ZT5hOmZvY3Vze2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn19LnRhYi1jb250ZW50Pi50YWItcGFuZXtkaXNwbGF5Om5vbmV9LnRhYi1jb250ZW50Pi5hY3RpdmV7ZGlzcGxheTpibG9ja30ubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnV7bWFyZ2luLXRvcDotMXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5uYXZiYXJ7cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDo1MHB4O21hcmdpbi1ib3R0b206MjBweDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFye2JvcmRlci1yYWRpdXM6NHB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1oZWFkZXJ7ZmxvYXQ6bGVmdH19Lm5hdmJhci1jb2xsYXBzZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXg6dmlzaWJsZTtwYWRkaW5nLXJpZ2h0OjE1cHg7cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTphdXRvfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWNvbGxhcHNle3dpZHRoOmF1dG87Ym9yZGVyLXRvcDowO2JveC1zaGFkb3c6bm9uZX0ubmF2YmFyLWNvbGxhcHNlLmNvbGxhcHNle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTowO292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fS5uYXZiYXItY29sbGFwc2UuaW57b3ZlcmZsb3cteTp2aXNpYmxlfS5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1zdGF0aWMtdG9wIC5uYXZiYXItY29sbGFwc2UsLm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1jb2xsYXBzZXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9fS5jb250YWluZXI+Lm5hdmJhci1oZWFkZXIsLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWhlYWRlciwuY29udGFpbmVyPi5uYXZiYXItY29sbGFwc2UsLmNvbnRhaW5lci1mbHVpZD4ubmF2YmFyLWNvbGxhcHNle21hcmdpbi1yaWdodDotMTVweDttYXJnaW4tbGVmdDotMTVweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LmNvbnRhaW5lcj4ubmF2YmFyLWhlYWRlciwuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItaGVhZGVyLC5jb250YWluZXI+Lm5hdmJhci1jb2xsYXBzZSwuY29udGFpbmVyLWZsdWlkPi5uYXZiYXItY29sbGFwc2V7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MH19Lm5hdmJhci1zdGF0aWMtdG9we3otaW5kZXg6MTAwMDtib3JkZXItd2lkdGg6MCAwIDFweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1zdGF0aWMtdG9we2JvcmRlci1yYWRpdXM6MH19Lm5hdmJhci1maXhlZC10b3AsLm5hdmJhci1maXhlZC1ib3R0b217cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDtsZWZ0OjA7ei1pbmRleDoxMDMwfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZpeGVkLXRvcCwubmF2YmFyLWZpeGVkLWJvdHRvbXtib3JkZXItcmFkaXVzOjB9fS5uYXZiYXItZml4ZWQtdG9we3RvcDowO2JvcmRlci13aWR0aDowIDAgMXB4fS5uYXZiYXItZml4ZWQtYm90dG9te2JvdHRvbTowO21hcmdpbi1ib3R0b206MDtib3JkZXItd2lkdGg6MXB4IDAgMH0ubmF2YmFyLWJyYW5ke2Zsb2F0OmxlZnQ7cGFkZGluZzoxNXB4O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIwcHg7aGVpZ2h0OjIwcHh9Lm5hdmJhci1icmFuZDpob3ZlciwubmF2YmFyLWJyYW5kOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyPi5jb250YWluZXIgLm5hdmJhci1icmFuZCwubmF2YmFyPi5jb250YWluZXItZmx1aWQgLm5hdmJhci1icmFuZHttYXJnaW4tbGVmdDotMTVweH19Lm5hdmJhci10b2dnbGV7cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjE1cHg7cGFkZGluZzo5cHggMTBweDttYXJnaW4tdG9wOjhweDttYXJnaW4tYm90dG9tOjhweDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NHB4fS5uYXZiYXItdG9nZ2xlOmZvY3Vze291dGxpbmU6MH0ubmF2YmFyLXRvZ2dsZSAuaWNvbi1iYXJ7ZGlzcGxheTpibG9jazt3aWR0aDoyMnB4O2hlaWdodDoycHg7Ym9yZGVyLXJhZGl1czoxcHh9Lm5hdmJhci10b2dnbGUgLmljb24tYmFyKy5pY29uLWJhcnttYXJnaW4tdG9wOjRweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci10b2dnbGV7ZGlzcGxheTpub25lfX0ubmF2YmFyLW5hdnttYXJnaW46Ny41cHggLTE1cHh9Lm5hdmJhci1uYXY+bGk+YXtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjEwcHg7bGluZS1oZWlnaHQ6MjBweH1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnV7cG9zaXRpb246c3RhdGljO2Zsb2F0Om5vbmU7d2lkdGg6YXV0bzttYXJnaW4tdG9wOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtib3gtc2hhZG93Om5vbmV9Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YSwubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVye3BhZGRpbmc6NXB4IDE1cHggNXB4IDI1cHh9Lm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YXtsaW5lLWhlaWdodDoyMHB4fS5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1c3tiYWNrZ3JvdW5kLWltYWdlOm5vbmV9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLW5hdntmbG9hdDpsZWZ0O21hcmdpbjowfS5uYXZiYXItbmF2Pmxpe2Zsb2F0OmxlZnR9Lm5hdmJhci1uYXY+bGk+YXtwYWRkaW5nLXRvcDoxNXB4O3BhZGRpbmctYm90dG9tOjE1cHh9Lm5hdmJhci1uYXYubmF2YmFyLXJpZ2h0Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0Oi0xNXB4fX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7Lm5hdmJhci1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5uYXZiYXItcmlnaHR7ZmxvYXQ6cmlnaHQhaW1wb3J0YW50fX0ubmF2YmFyLWZvcm17bWFyZ2luLWxlZnQ6LTE1cHg7bWFyZ2luLXJpZ2h0Oi0xNXB4O3BhZGRpbmc6MTBweCAxNXB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpLDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjEpLDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMSk7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWJvdHRvbTo4cHh9QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5uYXZiYXItZm9ybSAuZm9ybS1ncm91cHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAuZm9ybS1jb250cm9se2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOmF1dG87dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAuY29udHJvbC1sYWJlbHttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5uYXZiYXItZm9ybSAucmFkaW8sLm5hdmJhci1mb3JtIC5jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctbGVmdDowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubmF2YmFyLWZvcm0gLnJhZGlvIGlucHV0W3R5cGU9cmFkaW9dLC5uYXZiYXItZm9ybSAuY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF17ZmxvYXQ6bm9uZTttYXJnaW4tbGVmdDowfS5uYXZiYXItZm9ybSAuaGFzLWZlZWRiYWNrIC5mb3JtLWNvbnRyb2wtZmVlZGJhY2t7dG9wOjB9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLWZvcm0gLmZvcm0tZ3JvdXB7bWFyZ2luLWJvdHRvbTo1cHh9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLWZvcm17d2lkdGg6YXV0bztib3JkZXI6MDttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmV9Lm5hdmJhci1mb3JtLm5hdmJhci1yaWdodDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDotMTVweH19Lm5hdmJhci1uYXY+bGk+LmRyb3Bkb3duLW1lbnV7bWFyZ2luLXRvcDowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowfS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXZiYXItbmF2PmxpPi5kcm9wZG93bi1tZW51e2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowfS5uYXZiYXItYnRue21hcmdpbi10b3A6OHB4O21hcmdpbi1ib3R0b206OHB4fS5uYXZiYXItYnRuLmJ0bi1zbXttYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4fS5uYXZiYXItYnRuLmJ0bi14c3ttYXJnaW4tdG9wOjE0cHg7bWFyZ2luLWJvdHRvbToxNHB4fS5uYXZiYXItdGV4dHttYXJnaW4tdG9wOjE1cHg7bWFyZ2luLWJvdHRvbToxNXB4fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubmF2YmFyLXRleHR7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDoxNXB4O21hcmdpbi1yaWdodDoxNXB4fS5uYXZiYXItdGV4dC5uYXZiYXItcmlnaHQ6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH19Lm5hdmJhci1kZWZhdWx0e2JhY2tncm91bmQtY29sb3I6I2Y4ZjhmODtib3JkZXItY29sb3I6I2U3ZTdlN30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1icmFuZHtjb2xvcjojNzc3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWJyYW5kOmZvY3Vze2NvbG9yOiM1ZTVlNWU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10ZXh0e2NvbG9yOiM3Nzd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2PmxpPmF7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+bGk+YTpob3ZlciwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+bGk+YTpmb2N1c3tjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5hY3RpdmU+YSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uYWN0aXZlPmE6Zm9jdXN7Y29sb3I6IzU1NTtiYWNrZ3JvdW5kLWNvbG9yOiNlN2U3ZTd9Lm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YTpob3ZlciwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXN7Y29sb3I6I2NjYztiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLXRvZ2dsZXtib3JkZXItY29sb3I6I2RkZH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGU6aG92ZXIsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItdG9nZ2xlOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2RkZH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci10b2dnbGUgLmljb24tYmFye2JhY2tncm91bmQtY29sb3I6Izg4OH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1mb3Jte2JvcmRlci1jb2xvcjojZTdlN2U3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdj4ub3Blbj5hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2U3ZTdlNztjb2xvcjojNTU1fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+bGk+YXtjb2xvcjojNzc3fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5hOmZvY3Vze2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6aG92ZXIsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpmb2N1c3tjb2xvcjojNTU1O2JhY2tncm91bmQtY29sb3I6I2U3ZTdlN30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLm5hdmJhci1kZWZhdWx0IC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVyLC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1c3tjb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9fS5uYXZiYXItZGVmYXVsdCAubmF2YmFyLWxpbmt7Y29sb3I6Izc3N30ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiMzMzN9Lm5hdmJhci1pbnZlcnNle2JhY2tncm91bmQtY29sb3I6IzIyMjtib3JkZXItY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1icmFuZHtjb2xvcjojOTk5fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWJyYW5kOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci10ZXh0e2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2PmxpPmF7Y29sb3I6Izk5OX0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+bGk+YTpob3ZlciwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+bGk+YTpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5hY3RpdmU+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmFjdGl2ZT5hOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uYWN0aXZlPmE6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwODA4MDh9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2Pi5kaXNhYmxlZD5hLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4uZGlzYWJsZWQ+YTpob3ZlciwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXY+LmRpc2FibGVkPmE6Zm9jdXN7Y29sb3I6IzQ0NDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXRvZ2dsZXtib3JkZXItY29sb3I6IzMzM30ubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGU6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItdG9nZ2xlOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzMzM30ubmF2YmFyLWludmVyc2UgLm5hdmJhci10b2dnbGUgLmljb24tYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1mb3Jte2JvcmRlci1jb2xvcjojMTAxMDEwfS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdj4ub3Blbj5hOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzA4MDgwODtjb2xvcjojZmZmfUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRyb3Bkb3duLWhlYWRlcntib3JkZXItY29sb3I6IzA4MDgwOH0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnUgLmRpdmlkZXJ7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT5saT5he2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3ZlciwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDgwODA4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLW5hdiAub3BlbiAuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YSwubmF2YmFyLWludmVyc2UgLm5hdmJhci1uYXYgLm9wZW4gLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbmF2IC5vcGVuIC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3Vze2NvbG9yOiM0NDQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH19Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbGlua3tjb2xvcjojOTk5fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWxpbms6aG92ZXJ7Y29sb3I6I2ZmZn0uYnJlYWRjcnVtYntwYWRkaW5nOjhweCAxNXB4O21hcmdpbi1ib3R0b206MjBweDtsaXN0LXN0eWxlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlci1yYWRpdXM6NHB4fS5icmVhZGNydW1iPmxpe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5icmVhZGNydW1iPmxpK2xpOmJlZm9yZXtjb250ZW50OlwiL1xcMDBhMFwiO3BhZGRpbmc6MCA1cHg7Y29sb3I6I2NjY30uYnJlYWRjcnVtYj4uYWN0aXZle2NvbG9yOiM5OTl9LnBhZ2luYXRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1sZWZ0OjA7bWFyZ2luOjIwcHggMDtib3JkZXItcmFkaXVzOjRweH0ucGFnaW5hdGlvbj5saXtkaXNwbGF5OmlubGluZX0ucGFnaW5hdGlvbj5saT5hLC5wYWdpbmF0aW9uPmxpPnNwYW57cG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6bGVmdDtwYWRkaW5nOjZweCAxMnB4O2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDI5O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MjhiY2E7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDttYXJnaW4tbGVmdDotMXB4fS5wYWdpbmF0aW9uPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24+bGk6Zmlyc3QtY2hpbGQ+c3BhbnttYXJnaW4tbGVmdDowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4fS5wYWdpbmF0aW9uPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbj5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ucGFnaW5hdGlvbj5saT5hOmhvdmVyLC5wYWdpbmF0aW9uPmxpPnNwYW46aG92ZXIsLnBhZ2luYXRpb24+bGk+YTpmb2N1cywucGFnaW5hdGlvbj5saT5zcGFuOmZvY3Vze2NvbG9yOiMyYTY0OTY7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlci1jb2xvcjojZGRkfS5wYWdpbmF0aW9uPi5hY3RpdmU+YSwucGFnaW5hdGlvbj4uYWN0aXZlPnNwYW4sLnBhZ2luYXRpb24+LmFjdGl2ZT5hOmhvdmVyLC5wYWdpbmF0aW9uPi5hY3RpdmU+c3Bhbjpob3ZlciwucGFnaW5hdGlvbj4uYWN0aXZlPmE6Zm9jdXMsLnBhZ2luYXRpb24+LmFjdGl2ZT5zcGFuOmZvY3Vze3otaW5kZXg6Mjtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyOGJjYTtib3JkZXItY29sb3I6IzQyOGJjYTtjdXJzb3I6ZGVmYXVsdH0ucGFnaW5hdGlvbj4uZGlzYWJsZWQ+c3BhbiwucGFnaW5hdGlvbj4uZGlzYWJsZWQ+c3Bhbjpob3ZlciwucGFnaW5hdGlvbj4uZGlzYWJsZWQ+c3Bhbjpmb2N1cywucGFnaW5hdGlvbj4uZGlzYWJsZWQ+YSwucGFnaW5hdGlvbj4uZGlzYWJsZWQ+YTpob3ZlciwucGFnaW5hdGlvbj4uZGlzYWJsZWQ+YTpmb2N1c3tjb2xvcjojOTk5O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2RkZDtjdXJzb3I6bm90LWFsbG93ZWR9LnBhZ2luYXRpb24tbGc+bGk+YSwucGFnaW5hdGlvbi1sZz5saT5zcGFue3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxOHB4fS5wYWdpbmF0aW9uLWxnPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24tbGc+bGk6Zmlyc3QtY2hpbGQ+c3Bhbntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweH0ucGFnaW5hdGlvbi1sZz5saTpsYXN0LWNoaWxkPmEsLnBhZ2luYXRpb24tbGc+bGk6bGFzdC1jaGlsZD5zcGFue2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHh9LnBhZ2luYXRpb24tc20+bGk+YSwucGFnaW5hdGlvbi1zbT5saT5zcGFue3BhZGRpbmc6NXB4IDEwcHg7Zm9udC1zaXplOjEycHh9LnBhZ2luYXRpb24tc20+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbT5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS5wYWdpbmF0aW9uLXNtPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbT5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0ucGFnZXJ7cGFkZGluZy1sZWZ0OjA7bWFyZ2luOjIwcHggMDtsaXN0LXN0eWxlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXJ9LnBhZ2VyIGxpe2Rpc3BsYXk6aW5saW5lfS5wYWdlciBsaT5hLC5wYWdlciBsaT5zcGFue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6NXB4IDE0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjE1cHh9LnBhZ2VyIGxpPmE6aG92ZXIsLnBhZ2VyIGxpPmE6Zm9jdXN7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5wYWdlciAubmV4dD5hLC5wYWdlciAubmV4dD5zcGFue2Zsb2F0OnJpZ2h0fS5wYWdlciAucHJldmlvdXM+YSwucGFnZXIgLnByZXZpb3VzPnNwYW57ZmxvYXQ6bGVmdH0ucGFnZXIgLmRpc2FibGVkPmEsLnBhZ2VyIC5kaXNhYmxlZD5hOmhvdmVyLC5wYWdlciAuZGlzYWJsZWQ+YTpmb2N1cywucGFnZXIgLmRpc2FibGVkPnNwYW57Y29sb3I6Izk5OTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y3Vyc29yOm5vdC1hbGxvd2VkfS5sYWJlbHtkaXNwbGF5OmlubGluZTtwYWRkaW5nOi4yZW0gLjZlbSAuM2VtO2ZvbnQtc2l6ZTo3NSU7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjE7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Ym9yZGVyLXJhZGl1czouMjVlbX0ubGFiZWxbaHJlZl06aG92ZXIsLmxhYmVsW2hyZWZdOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmxhYmVsOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYnRuIC5sYWJlbHtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweH0ubGFiZWwtZGVmYXVsdHtiYWNrZ3JvdW5kLWNvbG9yOiM5OTl9LmxhYmVsLWRlZmF1bHRbaHJlZl06aG92ZXIsLmxhYmVsLWRlZmF1bHRbaHJlZl06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpncmF5fS5sYWJlbC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6IzQyOGJjYX0ubGFiZWwtcHJpbWFyeVtocmVmXTpob3ZlciwubGFiZWwtcHJpbWFyeVtocmVmXTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiMzMDcxYTl9LmxhYmVsLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNWNiODVjfS5sYWJlbC1zdWNjZXNzW2hyZWZdOmhvdmVyLC5sYWJlbC1zdWNjZXNzW2hyZWZdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzQ0OWQ0NH0ubGFiZWwtaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM1YmMwZGV9LmxhYmVsLWluZm9baHJlZl06aG92ZXIsLmxhYmVsLWluZm9baHJlZl06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojMzFiMGQ1fS5sYWJlbC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2YwYWQ0ZX0ubGFiZWwtd2FybmluZ1tocmVmXTpob3ZlciwubGFiZWwtd2FybmluZ1tocmVmXTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNlYzk3MWZ9LmxhYmVsLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGZ9LmxhYmVsLWRhbmdlcltocmVmXTpob3ZlciwubGFiZWwtZGFuZ2VyW2hyZWZdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2M5MzAyY30uYmFkZ2V7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjEwcHg7cGFkZGluZzozcHggN3B4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmO2xpbmUtaGVpZ2h0OjE7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6Izk5OTtib3JkZXItcmFkaXVzOjEwcHh9LmJhZGdlOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYnRuIC5iYWRnZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweH0uYnRuLXhzIC5iYWRnZXt0b3A6MDtwYWRkaW5nOjFweCA1cHh9YS5iYWRnZTpob3ZlcixhLmJhZGdlOmZvY3Vze2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9YS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlPi5iYWRnZSwubmF2LXBpbGxzPi5hY3RpdmU+YT4uYmFkZ2V7Y29sb3I6IzQyOGJjYTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm5hdi1waWxscz5saT5hPi5iYWRnZXttYXJnaW4tbGVmdDozcHh9Lmp1bWJvdHJvbntwYWRkaW5nOjMwcHg7bWFyZ2luLWJvdHRvbTozMHB4O2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5qdW1ib3Ryb24gaDEsLmp1bWJvdHJvbiAuaDF7Y29sb3I6aW5oZXJpdH0uanVtYm90cm9uIHB7bWFyZ2luLWJvdHRvbToxNXB4O2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjIwMH0uY29udGFpbmVyIC5qdW1ib3Ryb257Ym9yZGVyLXJhZGl1czo2cHh9Lmp1bWJvdHJvbiAuY29udGFpbmVye21heC13aWR0aDoxMDAlfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NzY4cHgpey5qdW1ib3Ryb257cGFkZGluZy10b3A6NDhweDtwYWRkaW5nLWJvdHRvbTo0OHB4fS5jb250YWluZXIgLmp1bWJvdHJvbntwYWRkaW5nLWxlZnQ6NjBweDtwYWRkaW5nLXJpZ2h0OjYwcHh9Lmp1bWJvdHJvbiBoMSwuanVtYm90cm9uIC5oMXtmb250LXNpemU6NjNweH19LnRodW1ibmFpbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6NHB4O21hcmdpbi1ib3R0b206MjBweDtsaW5lLWhlaWdodDoxLjQyODU3MTQyOTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLWluLW91dH0udGh1bWJuYWlsPmltZywudGh1bWJuYWlsIGE+aW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b31hLnRodW1ibmFpbDpob3ZlcixhLnRodW1ibmFpbDpmb2N1cyxhLnRodW1ibmFpbC5hY3RpdmV7Ym9yZGVyLWNvbG9yOiM0MjhiY2F9LnRodW1ibmFpbCAuY2FwdGlvbntwYWRkaW5nOjlweDtjb2xvcjojMzMzfS5hbGVydHtwYWRkaW5nOjE1cHg7bWFyZ2luLWJvdHRvbToyMHB4O2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo0cHh9LmFsZXJ0IGg0e21hcmdpbi10b3A6MDtjb2xvcjppbmhlcml0fS5hbGVydCAuYWxlcnQtbGlua3tmb250LXdlaWdodDo3MDB9LmFsZXJ0PnAsLmFsZXJ0PnVse21hcmdpbi1ib3R0b206MH0uYWxlcnQ+cCtwe21hcmdpbi10b3A6NXB4fS5hbGVydC1kaXNtaXNzYWJsZXtwYWRkaW5nLXJpZ2h0OjM1cHh9LmFsZXJ0LWRpc21pc3NhYmxlIC5jbG9zZXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTJweDtyaWdodDotMjFweDtjb2xvcjppbmhlcml0fS5hbGVydC1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6I2RmZjBkODtib3JkZXItY29sb3I6I2Q2ZTljNjtjb2xvcjojM2M3NjNkfS5hbGVydC1zdWNjZXNzIGhye2JvcmRlci10b3AtY29sb3I6I2M5ZTJiM30uYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGlua3tjb2xvcjojMmI1NDJjfS5hbGVydC1pbmZve2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmNztib3JkZXItY29sb3I6I2JjZThmMTtjb2xvcjojMzE3MDhmfS5hbGVydC1pbmZvIGhye2JvcmRlci10b3AtY29sb3I6I2E2ZTFlY30uYWxlcnQtaW5mbyAuYWxlcnQtbGlua3tjb2xvcjojMjQ1MjY5fS5hbGVydC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZjZjhlMztib3JkZXItY29sb3I6I2ZhZWJjYztjb2xvcjojOGE2ZDNifS5hbGVydC13YXJuaW5nIGhye2JvcmRlci10b3AtY29sb3I6I2Y3ZTFiNX0uYWxlcnQtd2FybmluZyAuYWxlcnQtbGlua3tjb2xvcjojNjY1MTJjfS5hbGVydC1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlO2JvcmRlci1jb2xvcjojZWJjY2QxO2NvbG9yOiNhOTQ0NDJ9LmFsZXJ0LWRhbmdlciBocntib3JkZXItdG9wLWNvbG9yOiNlNGI5YzB9LmFsZXJ0LWRhbmdlciAuYWxlcnQtbGlua3tjb2xvcjojODQzNTM0fUAtd2Via2l0LWtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3tmcm9te2JhY2tncm91bmQtcG9zaXRpb246NDBweCAwfXRve2JhY2tncm91bmQtcG9zaXRpb246MCAwfX1Aa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVze2Zyb217YmFja2dyb3VuZC1wb3NpdGlvbjo0MHB4IDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9fS5wcm9ncmVzc3tvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjIwcHg7bWFyZ2luLWJvdHRvbToyMHB4O2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5wcm9ncmVzcy1iYXJ7ZmxvYXQ6bGVmdDt3aWR0aDowO2hlaWdodDoxMDAlO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjE1KTtib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjE1KTstd2Via2l0LXRyYW5zaXRpb246d2lkdGggLjZzIGVhc2U7dHJhbnNpdGlvbjp3aWR0aCAuNnMgZWFzZX0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFye2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4fS5wcm9ncmVzcy5hY3RpdmUgLnByb2dyZXNzLWJhcnstd2Via2l0LWFuaW1hdGlvbjpwcm9ncmVzcy1iYXItc3RyaXBlcyAycyBsaW5lYXIgaW5maW5pdGU7YW5pbWF0aW9uOnByb2dyZXNzLWJhci1zdHJpcGVzIDJzIGxpbmVhciBpbmZpbml0ZX0ucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNWNiODVjfS5wcm9ncmVzcy1zdHJpcGVkIC5wcm9ncmVzcy1iYXItc3VjY2Vzc3tiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCl9LnByb2dyZXNzLWJhci1pbmZve2JhY2tncm91bmQtY29sb3I6IzViYzBkZX0ucHJvZ3Jlc3Mtc3RyaXBlZCAucHJvZ3Jlc3MtYmFyLWluZm97YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy1iYXItd2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmMGFkNGV9LnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci13YXJuaW5ne2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMjUlLHRyYW5zcGFyZW50IDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgNzUlLHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3MtYmFyLWRhbmdlcntiYWNrZ3JvdW5kLWNvbG9yOiNkOTUzNGZ9LnByb2dyZXNzLXN0cmlwZWQgLnByb2dyZXNzLWJhci1kYW5nZXJ7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgMjUlLHRyYW5zcGFyZW50IDI1JSx0cmFuc3BhcmVudCA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDUwJSxyZ2JhKDI1NSwyNTUsMjU1LC4xNSkgNzUlLHRyYW5zcGFyZW50IDc1JSx0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDI1JSx0cmFuc3BhcmVudCAyNSUsdHJhbnNwYXJlbnQgNTAlLHJnYmEoMjU1LDI1NSwyNTUsLjE1KSA1MCUscmdiYSgyNTUsMjU1LDI1NSwuMTUpIDc1JSx0cmFuc3BhcmVudCA3NSUsdHJhbnNwYXJlbnQpfS5tZWRpYSwubWVkaWEtYm9keXtvdmVyZmxvdzpoaWRkZW47em9vbToxfS5tZWRpYSwubWVkaWEgLm1lZGlhe21hcmdpbi10b3A6MTVweH0ubWVkaWE6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS5tZWRpYS1vYmplY3R7ZGlzcGxheTpibG9ja30ubWVkaWEtaGVhZGluZ3ttYXJnaW46MCAwIDVweH0ubWVkaWE+LnB1bGwtbGVmdHttYXJnaW4tcmlnaHQ6MTBweH0ubWVkaWE+LnB1bGwtcmlnaHR7bWFyZ2luLWxlZnQ6MTBweH0ubWVkaWEtbGlzdHtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9Lmxpc3QtZ3JvdXB7bWFyZ2luLWJvdHRvbToyMHB4O3BhZGRpbmctbGVmdDowfS5saXN0LWdyb3VwLWl0ZW17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHggMTVweDttYXJnaW4tYm90dG9tOi0xcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZH0ubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxke2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweH0ubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0ubGlzdC1ncm91cC1pdGVtPi5iYWRnZXtmbG9hdDpyaWdodH0ubGlzdC1ncm91cC1pdGVtPi5iYWRnZSsuYmFkZ2V7bWFyZ2luLXJpZ2h0OjVweH1hLmxpc3QtZ3JvdXAtaXRlbXtjb2xvcjojNTU1fWEubGlzdC1ncm91cC1pdGVtIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjojMzMzfWEubGlzdC1ncm91cC1pdGVtOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtOmZvY3Vze3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX1hLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1c3t6LWluZGV4OjI7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7Ym9yZGVyLWNvbG9yOiM0MjhiY2F9YS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZyxhLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmU6aG92ZXIgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5nLGEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpmb2N1cyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgLmxpc3QtZ3JvdXAtaXRlbS10ZXh0LGEubGlzdC1ncm91cC1pdGVtLmFjdGl2ZTpob3ZlciAubGlzdC1ncm91cC1pdGVtLXRleHQsYS5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlOmZvY3VzIC5saXN0LWdyb3VwLWl0ZW0tdGV4dHtjb2xvcjojZTFlZGY3fS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzc3tjb2xvcjojM2M3NjNkO2JhY2tncm91bmQtY29sb3I6I2RmZjBkOH1hLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNze2NvbG9yOiMzYzc2M2R9YS5saXN0LWdyb3VwLWl0ZW0tc3VjY2VzcyAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3M6Zm9jdXN7Y29sb3I6IzNjNzYzZDtiYWNrZ3JvdW5kLWNvbG9yOiNkMGU5YzZ9YS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmU6aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5hY3RpdmU6Zm9jdXN7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMzYzc2M2Q7Ym9yZGVyLWNvbG9yOiMzYzc2M2R9Lmxpc3QtZ3JvdXAtaXRlbS1pbmZve2NvbG9yOiMzMTcwOGY7YmFja2dyb3VuZC1jb2xvcjojZDllZGY3fWEubGlzdC1ncm91cC1pdGVtLWluZm97Y29sb3I6IzMxNzA4Zn1hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIC5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3tjb2xvcjppbmhlcml0fWEubGlzdC1ncm91cC1pdGVtLWluZm86aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW0taW5mbzpmb2N1c3tjb2xvcjojMzE3MDhmO2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM31hLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZSxhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpob3ZlcixhLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmFjdGl2ZTpmb2N1c3tjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzMxNzA4Zjtib3JkZXItY29sb3I6IzMxNzA4Zn0ubGlzdC1ncm91cC1pdGVtLXdhcm5pbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTN9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZ3tjb2xvcjojOGE2ZDNifWEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgLmxpc3QtZ3JvdXAtaXRlbS1oZWFkaW5ne2NvbG9yOmluaGVyaXR9YS5saXN0LWdyb3VwLWl0ZW0td2FybmluZzpob3ZlcixhLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nOmZvY3Vze2NvbG9yOiM4YTZkM2I7YmFja2dyb3VuZC1jb2xvcjojZmFmMmNjfWEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlLGEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmhvdmVyLGEubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcuYWN0aXZlOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojOGE2ZDNiO2JvcmRlci1jb2xvcjojOGE2ZDNifS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2Vye2NvbG9yOiNhOTQ0NDI7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlfWEubGlzdC1ncm91cC1pdGVtLWRhbmdlcntjb2xvcjojYTk0NDQyfWEubGlzdC1ncm91cC1pdGVtLWRhbmdlciAubGlzdC1ncm91cC1pdGVtLWhlYWRpbmd7Y29sb3I6aW5oZXJpdH1hLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXI6aG92ZXIsYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyOmZvY3Vze2NvbG9yOiNhOTQ0NDI7YmFja2dyb3VuZC1jb2xvcjojZWJjY2NjfWEubGlzdC1ncm91cC1pdGVtLWRhbmdlci5hY3RpdmUsYS5saXN0LWdyb3VwLWl0ZW0tZGFuZ2VyLmFjdGl2ZTpob3ZlcixhLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIuYWN0aXZlOmZvY3Vze2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojYTk0NDQyO2JvcmRlci1jb2xvcjojYTk0NDQyfS5saXN0LWdyb3VwLWl0ZW0taGVhZGluZ3ttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTo1cHh9Lmxpc3QtZ3JvdXAtaXRlbS10ZXh0e21hcmdpbi1ib3R0b206MDtsaW5lLWhlaWdodDoxLjN9LnBhbmVse21hcmdpbi1ib3R0b206MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjRweDstd2Via2l0LWJveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KTtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LnBhbmVsLWJvZHl7cGFkZGluZzoxNXB4fS5wYW5lbD4ubGlzdC1ncm91cHttYXJnaW4tYm90dG9tOjB9LnBhbmVsPi5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW17Ym9yZGVyLXdpZHRoOjFweCAwO2JvcmRlci1yYWRpdXM6MH0ucGFuZWw+Lmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjB9LnBhbmVsPi5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjB9LnBhbmVsPi5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4fS5wYW5lbD4ubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnBhbmVsLWhlYWRpbmcrLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjB9LnBhbmVsPi50YWJsZSwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxle21hcmdpbi1ib3R0b206MH0ucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50aGVhZDpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmZpcnN0LWNoaWxkPnRib2R5OmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmZpcnN0LWNoaWxkPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6Zmlyc3QtY2hpbGQ+dGhlYWQ6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6Zmlyc3QtY2hpbGQ+LnRhYmxlOmZpcnN0LWNoaWxkPnRoZWFkOmZpcnN0LWNoaWxkPnRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpmaXJzdC1jaGlsZD50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpmaXJzdC1jaGlsZD4udGFibGU6Zmlyc3QtY2hpbGQ+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGg6bGFzdC1jaGlsZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHh9LnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Ym9keTpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHh9LnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRib2R5Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU6bGFzdC1jaGlsZD4udGFibGU6bGFzdC1jaGlsZD50Zm9vdDpsYXN0LWNoaWxkPnRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlOmxhc3QtY2hpbGQ+LnRhYmxlOmxhc3QtY2hpbGQ+dGJvZHk6bGFzdC1jaGlsZD50cjpsYXN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZTpsYXN0LWNoaWxkPi50YWJsZTpsYXN0LWNoaWxkPnRmb290Omxhc3QtY2hpbGQ+dHI6bGFzdC1jaGlsZCB0aDpsYXN0LWNoaWxke2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweH0ucGFuZWw+LnBhbmVsLWJvZHkrLnRhYmxlLC5wYW5lbD4ucGFuZWwtYm9keSsudGFibGUtcmVzcG9uc2l2ZXtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS5wYW5lbD4udGFibGU+dGJvZHk6Zmlyc3QtY2hpbGQ+dHI6Zmlyc3QtY2hpbGQgdGgsLnBhbmVsPi50YWJsZT50Ym9keTpmaXJzdC1jaGlsZD50cjpmaXJzdC1jaGlsZCB0ZHtib3JkZXItdG9wOjB9LnBhbmVsPi50YWJsZS1ib3JkZXJlZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVke2JvcmRlcjowfS5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGg6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50aDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmZpcnN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI+dGQ6Zmlyc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cj50ZDpmaXJzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0OjB9LnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50aDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGg6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRoOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRib2R5PnRyPnRkOmxhc3QtY2hpbGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cj50ZDpsYXN0LWNoaWxkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI+dGQ6bGFzdC1jaGlsZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyPnRkOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjB9LnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cjpmaXJzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmZpcnN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6Zmlyc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50aGVhZD50cjpmaXJzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6Zmlyc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpmaXJzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmZpcnN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGZvb3Q+dHI6Zmlyc3QtY2hpbGQ+dGR7Ym9yZGVyLXRvcDowfS5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6bGFzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmxhc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50aCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGgsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRoLC5wYW5lbD4udGFibGUtYm9yZGVyZWQ+dGhlYWQ+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmU+LnRhYmxlLWJvcmRlcmVkPnRoZWFkPnRyOmxhc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1ib3JkZXJlZD50Ym9keT50cjpsYXN0LWNoaWxkPnRkLC5wYW5lbD4udGFibGUtcmVzcG9uc2l2ZT4udGFibGUtYm9yZGVyZWQ+dGJvZHk+dHI6bGFzdC1jaGlsZD50ZCwucGFuZWw+LnRhYmxlLWJvcmRlcmVkPnRmb290PnRyOmxhc3QtY2hpbGQ+dGQsLnBhbmVsPi50YWJsZS1yZXNwb25zaXZlPi50YWJsZS1ib3JkZXJlZD50Zm9vdD50cjpsYXN0LWNoaWxkPnRke2JvcmRlci1ib3R0b206MH0ucGFuZWw+LnRhYmxlLXJlc3BvbnNpdmV7Ym9yZGVyOjA7bWFyZ2luLWJvdHRvbTowfS5wYW5lbC1oZWFkaW5ne3BhZGRpbmc6MTBweCAxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweH0ucGFuZWwtaGVhZGluZz4uZHJvcGRvd24gLmRyb3Bkb3duLXRvZ2dsZXtjb2xvcjppbmhlcml0fS5wYW5lbC10aXRsZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNnB4O2NvbG9yOmluaGVyaXR9LnBhbmVsLXRpdGxlPmF7Y29sb3I6aW5oZXJpdH0ucGFuZWwtZm9vdGVye3BhZGRpbmc6MTBweCAxNXB4O2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0ucGFuZWwtZ3JvdXB7bWFyZ2luLWJvdHRvbToyMHB4fS5wYW5lbC1ncm91cCAucGFuZWx7bWFyZ2luLWJvdHRvbTowO2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OmhpZGRlbn0ucGFuZWwtZ3JvdXAgLnBhbmVsKy5wYW5lbHttYXJnaW4tdG9wOjVweH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWhlYWRpbmd7Ym9yZGVyLWJvdHRvbTowfS5wYW5lbC1ncm91cCAucGFuZWwtaGVhZGluZysucGFuZWwtY29sbGFwc2UgLnBhbmVsLWJvZHl7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0ucGFuZWwtZ3JvdXAgLnBhbmVsLWZvb3Rlcntib3JkZXItdG9wOjB9LnBhbmVsLWdyb3VwIC5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LnBhbmVsLWRlZmF1bHR7Ym9yZGVyLWNvbG9yOiNkZGR9LnBhbmVsLWRlZmF1bHQ+LnBhbmVsLWhlYWRpbmd7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLWNvbG9yOiNkZGR9LnBhbmVsLWRlZmF1bHQ+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2RkZH0ucGFuZWwtZGVmYXVsdD4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNkZGR9LnBhbmVsLXByaW1hcnl7Ym9yZGVyLWNvbG9yOiM0MjhiY2F9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmd7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7Ym9yZGVyLWNvbG9yOiM0MjhiY2F9LnBhbmVsLXByaW1hcnk+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6IzQyOGJjYX0ucGFuZWwtcHJpbWFyeT4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiM0MjhiY2F9LnBhbmVsLXN1Y2Nlc3N7Ym9yZGVyLWNvbG9yOiNkNmU5YzZ9LnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWhlYWRpbmd7Y29sb3I6IzNjNzYzZDtiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDg7Ym9yZGVyLWNvbG9yOiNkNmU5YzZ9LnBhbmVsLXN1Y2Nlc3M+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2Q2ZTljNn0ucGFuZWwtc3VjY2Vzcz4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNkNmU5YzZ9LnBhbmVsLWluZm97Ym9yZGVyLWNvbG9yOiNiY2U4ZjF9LnBhbmVsLWluZm8+LnBhbmVsLWhlYWRpbmd7Y29sb3I6IzMxNzA4ZjtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjc7Ym9yZGVyLWNvbG9yOiNiY2U4ZjF9LnBhbmVsLWluZm8+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2JjZThmMX0ucGFuZWwtaW5mbz4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNiY2U4ZjF9LnBhbmVsLXdhcm5pbmd7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmd7Y29sb3I6IzhhNmQzYjtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNmYWViY2N9LnBhbmVsLXdhcm5pbmc+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2ZhZWJjY30ucGFuZWwtd2FybmluZz4ucGFuZWwtZm9vdGVyKy5wYW5lbC1jb2xsYXBzZSAucGFuZWwtYm9keXtib3JkZXItYm90dG9tLWNvbG9yOiNmYWViY2N9LnBhbmVsLWRhbmdlcntib3JkZXItY29sb3I6I2ViY2NkMX0ucGFuZWwtZGFuZ2VyPi5wYW5lbC1oZWFkaW5ne2NvbG9yOiNhOTQ0NDI7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlO2JvcmRlci1jb2xvcjojZWJjY2QxfS5wYW5lbC1kYW5nZXI+LnBhbmVsLWhlYWRpbmcrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci10b3AtY29sb3I6I2ViY2NkMX0ucGFuZWwtZGFuZ2VyPi5wYW5lbC1mb290ZXIrLnBhbmVsLWNvbGxhcHNlIC5wYW5lbC1ib2R5e2JvcmRlci1ib3R0b20tY29sb3I6I2ViY2NkMX0ud2VsbHttaW4taGVpZ2h0OjIwcHg7cGFkZGluZzoxOXB4O21hcmdpbi1ib3R0b206MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyOjFweCBzb2xpZCAjZTNlM2UzO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDUpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA1KX0ud2VsbCBibG9ja3F1b3Rle2JvcmRlci1jb2xvcjojZGRkO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xNSl9LndlbGwtbGd7cGFkZGluZzoyNHB4O2JvcmRlci1yYWRpdXM6NnB4fS53ZWxsLXNte3BhZGRpbmc6OXB4O2JvcmRlci1yYWRpdXM6M3B4fS5jbG9zZXtmbG9hdDpyaWdodDtmb250LXNpemU6MjFweDtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MTtjb2xvcjojMDAwO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtvcGFjaXR5Oi4yO2ZpbHRlcjphbHBoYShvcGFjaXR5PTIwKX0uY2xvc2U6aG92ZXIsLmNsb3NlOmZvY3Vze2NvbG9yOiMwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNTtmaWx0ZXI6YWxwaGEob3BhY2l0eT01MCl9YnV0dG9uLmNsb3Nle3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubW9kYWwtb3BlbntvdmVyZmxvdzpoaWRkZW59Lm1vZGFse2Rpc3BsYXk6bm9uZTtvdmVyZmxvdzphdXRvO292ZXJmbG93LXk6c2Nyb2xsO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO3otaW5kZXg6MTA1MDstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtvdXRsaW5lOjB9Lm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZ3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMjUlKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yNSUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMjUlKTstd2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0Oy1tb3otdHJhbnNpdGlvbjotbW96LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7LW8tdHJhbnNpdGlvbjotby10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0O3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlLW91dH0ubW9kYWwuaW4gLm1vZGFsLWRpYWxvZ3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKX0ubW9kYWwtZGlhbG9ne3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOmF1dG87bWFyZ2luOjEwcHh9Lm1vZGFsLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzk5OTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCA5cHggcmdiYSgwLDAsMCwuNSk7Ym94LXNoYWRvdzowIDNweCA5cHggcmdiYSgwLDAsMCwuNSk7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O291dGxpbmU6MH0ubW9kYWwtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxMDQwO2JhY2tncm91bmQtY29sb3I6IzAwMH0ubW9kYWwtYmFja2Ryb3AuZmFkZXtvcGFjaXR5OjA7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCl9Lm1vZGFsLWJhY2tkcm9wLmlue29wYWNpdHk6LjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApfS5tb2RhbC1oZWFkZXJ7cGFkZGluZzoxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTU7bWluLWhlaWdodDoxNi40Mjg1NzE0MjlweH0ubW9kYWwtaGVhZGVyIC5jbG9zZXttYXJnaW4tdG9wOi0ycHh9Lm1vZGFsLXRpdGxle21hcmdpbjowO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDI5fS5tb2RhbC1ib2R5e3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MjBweH0ubW9kYWwtZm9vdGVye21hcmdpbi10b3A6MTVweDtwYWRkaW5nOjE5cHggMjBweCAyMHB4O3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNX0ubW9kYWwtZm9vdGVyIC5idG4rLmJ0bnttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLWJvdHRvbTowfS5tb2RhbC1mb290ZXIgLmJ0bi1ncm91cCAuYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweH0ubW9kYWwtZm9vdGVyIC5idG4tYmxvY2srLmJ0bi1ibG9ja3ttYXJnaW4tbGVmdDowfUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KXsubW9kYWwtZGlhbG9ne3dpZHRoOjYwMHB4O21hcmdpbjozMHB4IGF1dG99Lm1vZGFsLWNvbnRlbnR7LXdlYmtpdC1ib3gtc2hhZG93OjAgNXB4IDE1cHggcmdiYSgwLDAsMCwuNSk7Ym94LXNoYWRvdzowIDVweCAxNXB4IHJnYmEoMCwwLDAsLjUpfS5tb2RhbC1zbXt3aWR0aDozMDBweH0ubW9kYWwtbGd7d2lkdGg6OTAwcHh9fS50b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAzMDtkaXNwbGF5OmJsb2NrO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ7b3BhY2l0eTowO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApfS50b29sdGlwLmlue29wYWNpdHk6Ljk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9OTApfS50b29sdGlwLnRvcHttYXJnaW4tdG9wOi0zcHg7cGFkZGluZzo1cHggMH0udG9vbHRpcC5yaWdodHttYXJnaW4tbGVmdDozcHg7cGFkZGluZzowIDVweH0udG9vbHRpcC5ib3R0b217bWFyZ2luLXRvcDozcHg7cGFkZGluZzo1cHggMH0udG9vbHRpcC5sZWZ0e21hcmdpbi1sZWZ0Oi0zcHg7cGFkZGluZzowIDVweH0udG9vbHRpcC1pbm5lcnttYXgtd2lkdGg6MjAwcHg7cGFkZGluZzozcHggOHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6NHB4fS50b29sdGlwLWFycm93e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0udG9vbHRpcC50b3AgLnRvb2x0aXAtYXJyb3d7Ym90dG9tOjA7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItd2lkdGg6NXB4IDVweCAwO2JvcmRlci10b3AtY29sb3I6IzAwMH0udG9vbHRpcC50b3AtbGVmdCAudG9vbHRpcC1hcnJvd3tib3R0b206MDtsZWZ0OjVweDtib3JkZXItd2lkdGg6NXB4IDVweCAwO2JvcmRlci10b3AtY29sb3I6IzAwMH0udG9vbHRpcC50b3AtcmlnaHQgLnRvb2x0aXAtYXJyb3d7Ym90dG9tOjA7cmlnaHQ6NXB4O2JvcmRlci13aWR0aDo1cHggNXB4IDA7Ym9yZGVyLXRvcC1jb2xvcjojMDAwfS50b29sdGlwLnJpZ2h0IC50b29sdGlwLWFycm93e3RvcDo1MCU7bGVmdDowO21hcmdpbi10b3A6LTVweDtib3JkZXItd2lkdGg6NXB4IDVweCA1cHggMDtib3JkZXItcmlnaHQtY29sb3I6IzAwMH0udG9vbHRpcC5sZWZ0IC50b29sdGlwLWFycm93e3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCA1cHg7Ym9yZGVyLWxlZnQtY29sb3I6IzAwMH0udG9vbHRpcC5ib3R0b20gLnRvb2x0aXAtYXJyb3d7dG9wOjA7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItd2lkdGg6MCA1cHggNXB4O2JvcmRlci1ib3R0b20tY29sb3I6IzAwMH0udG9vbHRpcC5ib3R0b20tbGVmdCAudG9vbHRpcC1hcnJvd3t0b3A6MDtsZWZ0OjVweDtib3JkZXItd2lkdGg6MCA1cHggNXB4O2JvcmRlci1ib3R0b20tY29sb3I6IzAwMH0udG9vbHRpcC5ib3R0b20tcmlnaHQgLnRvb2x0aXAtYXJyb3d7dG9wOjA7cmlnaHQ6NXB4O2JvcmRlci13aWR0aDowIDVweCA1cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAwfS5wb3BvdmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt6LWluZGV4OjEwMTA7ZGlzcGxheTpub25lO21heC13aWR0aDoyNzZweDtwYWRkaW5nOjFweDt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTtib3JkZXItcmFkaXVzOjZweDstd2Via2l0LWJveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsMCwwLC4yKTtib3gtc2hhZG93OjAgNXB4IDEwcHggcmdiYSgwLDAsMCwuMik7d2hpdGUtc3BhY2U6bm9ybWFsfS5wb3BvdmVyLnRvcHttYXJnaW4tdG9wOi0xMHB4fS5wb3BvdmVyLnJpZ2h0e21hcmdpbi1sZWZ0OjEwcHh9LnBvcG92ZXIuYm90dG9te21hcmdpbi10b3A6MTBweH0ucG9wb3Zlci5sZWZ0e21hcmdpbi1sZWZ0Oi0xMHB4fS5wb3BvdmVyLXRpdGxle21hcmdpbjowO3BhZGRpbmc6OHB4IDE0cHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE4cHg7YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo1cHggNXB4IDAgMH0ucG9wb3Zlci1jb250ZW50e3BhZGRpbmc6OXB4IDE0cHh9LnBvcG92ZXIgLmFycm93LC5wb3BvdmVyIC5hcnJvdzphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0ucG9wb3ZlciAuYXJyb3d7Ym9yZGVyLXdpZHRoOjExcHh9LnBvcG92ZXIgLmFycm93OmFmdGVye2JvcmRlci13aWR0aDoxMHB4O2NvbnRlbnQ6XCJcIn0ucG9wb3Zlci50b3AgLmFycm93e2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xMXB4O2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItdG9wLWNvbG9yOiM5OTk7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4yNSk7Ym90dG9tOi0xMXB4fS5wb3BvdmVyLnRvcCAuYXJyb3c6YWZ0ZXJ7Y29udGVudDpcIiBcIjtib3R0b206MXB4O21hcmdpbi1sZWZ0Oi0xMHB4O2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LnBvcG92ZXIucmlnaHQgLmFycm93e3RvcDo1MCU7bGVmdDotMTFweDttYXJnaW4tdG9wOi0xMXB4O2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiM5OTk7Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjI1KX0ucG9wb3Zlci5yaWdodCAuYXJyb3c6YWZ0ZXJ7Y29udGVudDpcIiBcIjtsZWZ0OjFweDtib3R0b206LTEwcHg7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZn0ucG9wb3Zlci5ib3R0b20gLmFycm93e2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi0xMXB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiM5OTk7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4yNSk7dG9wOi0xMXB4fS5wb3BvdmVyLmJvdHRvbSAuYXJyb3c6YWZ0ZXJ7Y29udGVudDpcIiBcIjt0b3A6MXB4O21hcmdpbi1sZWZ0Oi0xMHB4O2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LnBvcG92ZXIubGVmdCAuYXJyb3d7dG9wOjUwJTtyaWdodDotMTFweDttYXJnaW4tdG9wOi0xMXB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiM5OTk7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMjUpfS5wb3BvdmVyLmxlZnQgLmFycm93OmFmdGVye2NvbnRlbnQ6XCIgXCI7cmlnaHQ6MXB4O2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOiNmZmY7Ym90dG9tOi0xMHB4fS5jYXJvdXNlbHtwb3NpdGlvbjpyZWxhdGl2ZX0uY2Fyb3VzZWwtaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9LmNhcm91c2VsLWlubmVyPi5pdGVte2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXRyYW5zaXRpb246LjZzIGVhc2UtaW4tb3V0IGxlZnQ7dHJhbnNpdGlvbjouNnMgZWFzZS1pbi1vdXQgbGVmdH0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW0+aW1nLC5jYXJvdXNlbC1pbm5lcj4uaXRlbT5hPmltZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvO2xpbmUtaGVpZ2h0OjF9LmNhcm91c2VsLWlubmVyPi5hY3RpdmUsLmNhcm91c2VsLWlubmVyPi5uZXh0LC5jYXJvdXNlbC1pbm5lcj4ucHJldntkaXNwbGF5OmJsb2NrfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZle2xlZnQ6MH0uY2Fyb3VzZWwtaW5uZXI+Lm5leHQsLmNhcm91c2VsLWlubmVyPi5wcmV2e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LmNhcm91c2VsLWlubmVyPi5uZXh0e2xlZnQ6MTAwJX0uY2Fyb3VzZWwtaW5uZXI+LnByZXZ7bGVmdDotMTAwJX0uY2Fyb3VzZWwtaW5uZXI+Lm5leHQubGVmdCwuY2Fyb3VzZWwtaW5uZXI+LnByZXYucmlnaHR7bGVmdDowfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLmxlZnR7bGVmdDotMTAwJX0uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZS5yaWdodHtsZWZ0OjEwMCV9LmNhcm91c2VsLWNvbnRyb2x7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2JvdHRvbTowO3dpZHRoOjE1JTtvcGFjaXR5Oi41O2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKTtmb250LXNpemU6MjBweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC42KX0uY2Fyb3VzZWwtY29udHJvbC5sZWZ0e2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCxjb2xvci1zdG9wKHJnYmEoMCwwLDAsLjUpIDApLGNvbG9yLXN0b3AocmdiYSgwLDAsMCwuMDAwMSkgMTAwJSkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJnYmEoMCwwLDAsLjUpIDAscmdiYSgwLDAsMCwuMDAwMSkgMTAwJSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjODAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzAwMDAwMDAwJywgR3JhZGllbnRUeXBlPTEpfS5jYXJvdXNlbC1jb250cm9sLnJpZ2h0e2xlZnQ6YXV0bztyaWdodDowO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCxjb2xvci1zdG9wKHJnYmEoMCwwLDAsLjAwMDEpIDApLGNvbG9yLXN0b3AocmdiYSgwLDAsMCwuNSkgMTAwJSkpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJnYmEoMCwwLDAsLjAwMDEpIDAscmdiYSgwLDAsMCwuNSkgMTAwJSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjMDAwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzgwMDAwMDAwJywgR3JhZGllbnRUeXBlPTEpfS5jYXJvdXNlbC1jb250cm9sOmhvdmVyLC5jYXJvdXNlbC1jb250cm9sOmZvY3Vze291dGxpbmU6MDtjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lO29wYWNpdHk6Ljk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9OTApfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLXByZXYsLmNhcm91c2VsLWNvbnRyb2wgLmljb24tbmV4dCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdCwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tcmlnaHR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt6LWluZGV4OjU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29uLWNoZXZyb24tbGVmdHtsZWZ0OjUwJX0uY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0LC5jYXJvdXNlbC1jb250cm9sIC5nbHlwaGljb24tY2hldnJvbi1yaWdodHtyaWdodDo1MCV9LmNhcm91c2VsLWNvbnRyb2wgLmljb24tcHJldiwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1uZXh0e3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7bWFyZ2luLXRvcDotMTBweDttYXJnaW4tbGVmdDotMTBweDtmb250LWZhbWlseTpzZXJpZn0uY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2OmJlZm9yZXtjb250ZW50OidcXDIwMzknfS5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHQ6YmVmb3Jle2NvbnRlbnQ6J1xcMjAzYSd9LmNhcm91c2VsLWluZGljYXRvcnN7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjEwcHg7bGVmdDo1MCU7ei1pbmRleDoxNTt3aWR0aDo2MCU7bWFyZ2luLWxlZnQ6LTMwJTtwYWRkaW5nLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXJ9LmNhcm91c2VsLWluZGljYXRvcnMgbGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDttYXJnaW46MXB4O3RleHQtaW5kZW50Oi05OTlweDtib3JkZXI6MXB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czoxMHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6IzAwMCBcXDk7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmV7bWFyZ2luOjA7d2lkdGg6MTJweDtoZWlnaHQ6MTJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmNhcm91c2VsLWNhcHRpb257cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxNSU7cmlnaHQ6MTUlO2JvdHRvbToyMHB4O3otaW5kZXg6MTA7cGFkZGluZy10b3A6MjBweDtwYWRkaW5nLWJvdHRvbToyMHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjYpfS5jYXJvdXNlbC1jYXB0aW9uIC5idG57dGV4dC1zaGFkb3c6bm9uZX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KXsuY2Fyb3VzZWwtY29udHJvbCAuZ2x5cGhpY29ucy1jaGV2cm9uLWxlZnQsLmNhcm91c2VsLWNvbnRyb2wgLmdseXBoaWNvbnMtY2hldnJvbi1yaWdodCwuY2Fyb3VzZWwtY29udHJvbCAuaWNvbi1wcmV2LC5jYXJvdXNlbC1jb250cm9sIC5pY29uLW5leHR7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDttYXJnaW4tdG9wOi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4O2ZvbnQtc2l6ZTozMHB4fS5jYXJvdXNlbC1jYXB0aW9ue2xlZnQ6MjAlO3JpZ2h0OjIwJTtwYWRkaW5nLWJvdHRvbTozMHB4fS5jYXJvdXNlbC1pbmRpY2F0b3Jze2JvdHRvbToyMHB4fX0uY2xlYXJmaXg6YmVmb3JlLC5jbGVhcmZpeDphZnRlciwuY29udGFpbmVyOmJlZm9yZSwuY29udGFpbmVyOmFmdGVyLC5jb250YWluZXItZmx1aWQ6YmVmb3JlLC5jb250YWluZXItZmx1aWQ6YWZ0ZXIsLnJvdzpiZWZvcmUsLnJvdzphZnRlciwuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmJlZm9yZSwuZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwOmFmdGVyLC5idG4tdG9vbGJhcjpiZWZvcmUsLmJ0bi10b29sYmFyOmFmdGVyLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDpiZWZvcmUsLmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWdyb3VwOmFmdGVyLC5uYXY6YmVmb3JlLC5uYXY6YWZ0ZXIsLm5hdmJhcjpiZWZvcmUsLm5hdmJhcjphZnRlciwubmF2YmFyLWhlYWRlcjpiZWZvcmUsLm5hdmJhci1oZWFkZXI6YWZ0ZXIsLm5hdmJhci1jb2xsYXBzZTpiZWZvcmUsLm5hdmJhci1jb2xsYXBzZTphZnRlciwucGFnZXI6YmVmb3JlLC5wYWdlcjphZnRlciwucGFuZWwtYm9keTpiZWZvcmUsLnBhbmVsLWJvZHk6YWZ0ZXIsLm1vZGFsLWZvb3RlcjpiZWZvcmUsLm1vZGFsLWZvb3RlcjphZnRlcntjb250ZW50OlwiIFwiO2Rpc3BsYXk6dGFibGV9LmNsZWFyZml4OmFmdGVyLC5jb250YWluZXI6YWZ0ZXIsLmNvbnRhaW5lci1mbHVpZDphZnRlciwucm93OmFmdGVyLC5mb3JtLWhvcml6b250YWwgLmZvcm0tZ3JvdXA6YWZ0ZXIsLmJ0bi10b29sYmFyOmFmdGVyLC5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bi1ncm91cDphZnRlciwubmF2OmFmdGVyLC5uYXZiYXI6YWZ0ZXIsLm5hdmJhci1oZWFkZXI6YWZ0ZXIsLm5hdmJhci1jb2xsYXBzZTphZnRlciwucGFnZXI6YWZ0ZXIsLnBhbmVsLWJvZHk6YWZ0ZXIsLm1vZGFsLWZvb3RlcjphZnRlcntjbGVhcjpib3RofS5jZW50ZXItYmxvY2t7ZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0IWltcG9ydGFudH0ucHVsbC1sZWZ0e2Zsb2F0OmxlZnQhaW1wb3J0YW50fS5oaWRle2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnNob3d7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmludmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbn0udGV4dC1oaWRle2ZvbnQ6MC8wIGE7Y29sb3I6dHJhbnNwYXJlbnQ7dGV4dC1zaGFkb3c6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5oaWRkZW57ZGlzcGxheTpub25lIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiFpbXBvcnRhbnR9LmFmZml4e3Bvc2l0aW9uOmZpeGVkfUAtbXMtdmlld3BvcnR7d2lkdGg6ZGV2aWNlLXdpZHRofS52aXNpYmxlLXhzLHRyLnZpc2libGUteHMsdGgudmlzaWJsZS14cyx0ZC52aXNpYmxlLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpey52aXNpYmxlLXhze2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fXRhYmxlLnZpc2libGUteHN7ZGlzcGxheTp0YWJsZX10ci52aXNpYmxlLXhze2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10aC52aXNpYmxlLXhzLHRkLnZpc2libGUteHN7ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19LnZpc2libGUtc20sdHIudmlzaWJsZS1zbSx0aC52aXNpYmxlLXNtLHRkLnZpc2libGUtc217ZGlzcGxheTpub25lIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTkxcHgpey52aXNpYmxlLXNte2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fXRhYmxlLnZpc2libGUtc217ZGlzcGxheTp0YWJsZX10ci52aXNpYmxlLXNte2Rpc3BsYXk6dGFibGUtcm93IWltcG9ydGFudH10aC52aXNpYmxlLXNtLHRkLnZpc2libGUtc217ZGlzcGxheTp0YWJsZS1jZWxsIWltcG9ydGFudH19LnZpc2libGUtbWQsdHIudmlzaWJsZS1tZCx0aC52aXNpYmxlLW1kLHRkLnZpc2libGUtbWR7ZGlzcGxheTpub25lIWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KXsudmlzaWJsZS1tZHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLW1ke2Rpc3BsYXk6dGFibGV9dHIudmlzaWJsZS1tZHtkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9dGgudmlzaWJsZS1tZCx0ZC52aXNpYmxlLW1ke2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9fS52aXNpYmxlLWxnLHRyLnZpc2libGUtbGcsdGgudmlzaWJsZS1sZyx0ZC52aXNpYmxlLWxne2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsudmlzaWJsZS1sZ3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLWxne2Rpc3BsYXk6dGFibGV9dHIudmlzaWJsZS1sZ3tkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9dGgudmlzaWJsZS1sZyx0ZC52aXNpYmxlLWxne2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9fUBtZWRpYSAobWF4LXdpZHRoOjc2N3B4KXsuaGlkZGVuLXhzLHRyLmhpZGRlbi14cyx0aC5oaWRkZW4teHMsdGQuaGlkZGVuLXhze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo5OTFweCl7LmhpZGRlbi1zbSx0ci5oaWRkZW4tc20sdGguaGlkZGVuLXNtLHRkLmhpZGRlbi1zbXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1pbi13aWR0aDo5OTJweCkgYW5kIChtYXgtd2lkdGg6MTE5OXB4KXsuaGlkZGVuLW1kLHRyLmhpZGRlbi1tZCx0aC5oaWRkZW4tbWQsdGQuaGlkZGVuLW1ke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjEyMDBweCl7LmhpZGRlbi1sZyx0ci5oaWRkZW4tbGcsdGguaGlkZGVuLWxnLHRkLmhpZGRlbi1sZ3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludCx0ci52aXNpYmxlLXByaW50LHRoLnZpc2libGUtcHJpbnQsdGQudmlzaWJsZS1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH10YWJsZS52aXNpYmxlLXByaW50e2Rpc3BsYXk6dGFibGV9dHIudmlzaWJsZS1wcmludHtkaXNwbGF5OnRhYmxlLXJvdyFpbXBvcnRhbnR9dGgudmlzaWJsZS1wcmludCx0ZC52aXNpYmxlLXByaW50e2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9fUBtZWRpYSBwcmludHsuaGlkZGVuLXByaW50LHRyLmhpZGRlbi1wcmludCx0aC5oaWRkZW4tcHJpbnQsdGQuaGlkZGVuLXByaW50e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fSJ9LCAiaGVhZGVyc1NpemUiOiAxNjMzLCAiYm9keVNpemUiOiAxNzExMywgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTg3NDZ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDA4LCAiY29ubmVjdCI6IDkuMTI5LCAic3NsIjogMTMuNTc0LCAic2VuZCI6IDAsICJ3YWl0IjogNjAuNTk4LCAicmVjZWl2ZSI6IDcuMDMyfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjZaIiwgInRpbWUiOiA4MS44MzMsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvY29tbW9uLXJlZGVzaWduLmNzcyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9jc3MsKi8qO3E9MC4xIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1MDAsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJiVWJDaXpldVQydGZnWEhEMEFEUmc1MTVNMGRDS0MxbU5PWHBlTVI1RFVVLTE2ODQ5NDI4NzUtMC1BVW9FOWZSWkJJU1d5VzRMR3pOVEhDMWdhT0YyRC8xOTAwK1VuWkFEZWg3U24wMDNRaVlZaFFyWHRTK3l1amwwZGRDeUxpZ1ZNSUp2RVpmeGVHUDhHYU09IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQxIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGM4ZDk1MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNSBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtZWExeGhuQUNxOUZjNlIzNTdRaVpzOUZnaENQVVpQOUdZSlVRaVVvUmQ1MWVcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1iVWJDaXpldVQydGZnWEhEMEFEUmc1MTVNMGRDS0MxbU5PWHBlTVI1RFVVLTE2ODQ5NDI4NzUtMC1BVW9FOWZSWkJJU1d5VzRMR3pOVEhDMWdhT0YyRC8xOTAwK1VuWkFEZWg3U24wMDNRaVlZaFFyWHRTK3l1amwwZGRDeUxpZ1ZNSUp2RVpmeGVHUDhHYU09OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTUgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2NvbW1vbi1yZWRlc2lnbi5jc3MifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtZWExeGhuQUNxOUZjNlIzNTdRaVpzOUZnaENQVVpQOUdZSlVRaVVvUmQ1MWUifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDIyOTE0LCAibWltZVR5cGUiOiAidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAxNzk2MywgInRleHQiOiAiLypcbiogVGhpcyBpcyB0aGUgbWFpbiBmaWxlLCBjb250YWluaW5nIGFsbW9zdCBhbGwgdGhlIGNzcyBydWxlcyBmb3IgdGhlIFN0YXJ0IFBhZ2UuICBQbGVhc2UgZGVmaW5lIGF5dGhpbmcgdGhhdCBnZXRzIHJlLXVzZWRcbiogaW4gdGhlIHZhcmlhYmxlcyBzZWN0aW9uIChjb2xvcnMsIGZvbnQgc2l6ZXMgZXRjLi4uKSBpbiBvcmRlciB0byBtYWtlIGNvZGUgbW9yZSBtYWludGFpbmFibGUuICBJZiBzb21ldGhpbmcgaXMgdmVyeSBcbiAqIHNwZWNpZmljIHRvIGEgY2VydGFpbiBmcm9udCBkb29yLCB0aGVuIGRlZmluZSBpdCBpdCdzIG93biBzY3NzIGZpbGUuXG4qIFxuICogVGFibGUgb2YgQ29udGVudHNcbiogMS4gRnVuY3Rpb24gRGVmaW5pdGlvbnNcbiogMi4gVmFyaWFibGUgRGVmaW5pdGlvbnNcbiogMy4gTWl4aW4gRGVmaW5pdGlvbnNcbiogNC4gQmFzZSBDbGFzc2VzIC0gdG8gYmUgZXh0ZW5kZWRcbiogNS4gQ1NTMyBOYXZpZ2F0aW9uXG4qIDYuIEhlbHBmdWwgUmVzcG9uc2l2ZSBVSSBEZWZpbml0aW9uc1xuKiA3LiBIZWxwZnVsIFN0eWxlIENsYXNzZXNcbiogOC4gTWFpbiBCdWlsZGluZyBCbG9ja3NcbiovXG4vKiBAZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IG5leGFCb29rO1xuICBzcmM6IGxvY2FsKFwiTmV4YSBCb29rXCIpLCBsb2NhbChcIk5leGEtQm9va1wiKSwgdXJsKC9yZWRlc2lnbi9jb21tb24vZm9udHMvTmV4YS1Cb29rLm90Zik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7IH1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogbmV4YUxpZ2h0O1xuICBzcmM6IGxvY2FsKFwiTmV4YSBMaWdodFwiKSwgbG9jYWwoXCJOZXhhLUxpZ2h0XCIpLCB1cmwoL3JlZGVzaWduL2NvbW1vbi9mb250cy9OZXhhTGlnaHQub3RmKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBuZXhhQm9sZDtcbiAgc3JjOiBsb2NhbChcIk5leGEgQm9sZFwiKSwgbG9jYWwoXCJOZXhhLUJvbGRcIiksIHVybCgvcmVkZXNpZ24vY29tbW9uL2ZvbnRzL05leGFCb2xkLm90Zik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7IH0gKi9cbi8qIE9tbmVzQmxhY2tJdGFsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT21uZXNCbGFja0l0YWxpYztcbiAgc3JjOiBsb2NhbChcIk9tbmVzQmxhY2stSXRhbGljXCIpLCBsb2NhbChcIk9tbmVzQmxhY2stSXRhbGljXCIpLCB1cmwoL3JlZGVzaWduL2NvbW1vbi9mb250cy9PbW5lc0JsYWNrLUl0YWxpYy5vdGYpO1xuICBmb250LXdlaWdodDogbm9ybWFsOyB9XG5ib2R5IHtcbiAgZm9udC1zaXplOiAxLjE1ZW07IH1cblxuLypsb2dpbiBwYWdlIHN0eWxlcyAtIHN0YXJ0Ki9cbi5tYXJnaW4wIHtcbiAgbWFyZ2luOiAwcHggIWltcG9ydGFudDsgfVxuXG4ubVJpZ2h0NSB7XG4gIG1hcmdpbi1yaWdodDogNXB4OyB9XG5cbi5tYXJnaW4zNCB7XG4gIG1hcmdpbi1sZWZ0OiAzNHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1yaWdodDogMzRweCAhaW1wb3J0YW50OyB9XG5cbi53aWR0aDI1NSB7XG4gIHdpZHRoOiAyNTVweDtcbiAgKndpZHRoOiAyNDBweDsgfVxuXG4uZm9udE5leGFsaWdodCB7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7IH1cblxuLmZvcm0tc2lnbmluIHtcbiAgd2lkdGg6IDI2ZW07XG4gIGhlaWdodDogYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LWZhbWlseTogbmV4YUxpZ2h0OyB9XG5cbi5wYWRkaW5nMjkge1xuICBwYWRkaW5nLXJpZ2h0OiAxLjgxMjVlbTtcbiAgcGFkZGluZy1sZWZ0OiAxLjgxMjVlbTsgfVxuXG4ucFJpZ2h0MTAge1xuICBwYWRkaW5nLXJpZ2h0OiAxMHB4OyB9XG5cbi53aWR0aDMwIHtcbiAgd2lkdGg6IDMwcHg7IH1cblxuLndpZHRoODIge1xuICB3aWR0aDogODJweDsgfVxuXG4ucFRvcDcge1xuICBwYWRkaW5nLXRvcDogN3B4OyB9XG5cbi53aWR0aDYyIHtcbiAgd2lkdGg6IDYycHg7IH1cblxuLnBUb3A5IHtcbiAgcGFkZGluZy10b3A6IDlweDsgfVxuXG4uc2lnbmluIHtcbiAgZm9udC1zaXplOiAxLjhlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuMWVtIDEuMjVlbTtcbiAgZm9udC1mYW1pbHk6IE9tbmVzQmxhY2tJdGFsaWMgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogI0U3M0MzMCAhaW1wb3J0YW50O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIC1tcy1ib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVlbTsgfVxuXG4uc2lnbmluOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI0U3M0MzMDsgfVxuXG4uc2lnbnVwIHtcbiAgY29sb3I6ICM3MmM0ZDY7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBmb250LXNpemU6IDEuMmVtO1xuICBtYXJnaW4tbGVmdDogMC4zMTI1ZW07XG4gIHZlcnRpY2FsLWFsaWduOiBib3R0b207IH1cblxuLnNpZ251cGhvdmVyIGE6aG92ZXIge1xuICBjb2xvcjogIzcyYzRkNjsgfVxuXG4uY29sb3JSZWQge1xuICBjb2xvcjogcmVkOyB9XG5cbi5mb3Jnb3RJZCB7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIGNvbG9yOiAjMDA3OEEwOyB9XG5cbi5mb3Jnb3RJZCBhOmhvdmVyIHtcbiAgY29sb3I6ICMwMDc4QTA7IH1cblxuLndlbGNvbWVTaWduIHtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDtcbiAgZm9udC1zaXplOiAxLjhlbTtcbiAgY29sb3I6ICMwMDc4QTA7XG4gIHBhZGRpbmctYm90dG9tOiA1cHg7IH1cblxuLmtlZXBTaWduZWQge1xuICBjb2xvcjogIzAwNzhhMDtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDsgfVxuXG4ja2VlcG1lc2lnbmVkaW4ge1xuICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi10b3A6IDJweCAhaW1wb3J0YW50O1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgb3V0bGluZTogMXB4IHNvbGlkIHJlZDtcbiAgLW1vei1hcHBlYXJhbmNlOiBjaGVja2JveDtcbiAgLW8tYXBwZWFyYW5jZTogbm9uZTsgfVxuXG4uc2VjT3JUZXh0IHtcbiAgaGVpZ2h0OiAycHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6IHJlZDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogLTAuN2VtO1xuICBmb250LXNpemU6IDEuNGVtO1xuICBmb250LWZhbWlseTogbmV4YUxpZ2h0OyB9XG5cbi5jcmVhdGVOZXdBY2NvdW50IHtcbiAgZm9udC1zaXplOiAxLjllbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuMWVtIDAuNGVtO1xuICBmb250LWZhbWlseTogT21uZXNCbGFja0l0YWxpYyAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiAjRjdBODFCICFpbXBvcnRhbnQ7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgLW1zLWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNWVtOyB9XG5cbi5jcmVhdGVOZXdBY2NvdW50OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI2Y3YTcwMDsgfVxuXG4ucGFkZGluZ1RvcDYge1xuICBwYWRkaW5nLXRvcDogNnB4OyB9XG5cbi5wYWRkaW5nVG9wNSB7XG4gIHBhZGRpbmctdG9wOiAwLjMxMjVlbTsgfVxuXG4ucGFkZGluZ0JvdHRvbTMge1xuICBwYWRkaW5nLWJvdHRvbTogMC4xODc1ZW07IH1cblxuLnBhZGRpbmdUb3AxMCB7XG4gIHBhZGRpbmctdG9wOiAwLjYyNWVtOyB9XG5cbi5wYWRkaW5nVG9wMTUge1xuICBwYWRkaW5nLXRvcDogMC45Mzc1ZW07IH1cblxuLnBhZGRpbmdMZWZ0MTAge1xuICBwYWRkaW5nLWxlZnQ6IDAuNjI1ZW07IH1cblxuLndpZHRoNTAge1xuICB3aWR0aDogMy4xMjVlbTsgfVxuXG4ud2lkdGgyNjUge1xuICB3aWR0aDogMTYuNTYyNWVtOyB9XG5cbi5zZWNQYWRkaW5nIHtcbiAgcGFkZGluZzogMC42MjVlbSAwLjMxMjVlbSAwLjYyNWVtIDAuOTM3NWVtOyB9XG5cbi5wYWRkaW5nNzUge1xuICBwYWRkaW5nLXRvcDogNC42ODc1ZW07IH1cblxuLnBhZGRpbmdCb3R0b20xNSB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjkzNzVlbTsgfVxuXG4ucGFkZGluZ0JvdHRvbTUge1xuICBwYWRkaW5nLWJvdHRvbTogMC4zMTI1ZW07IH1cblxuLm1hcmdpbkJvdHRvbTE4IHtcbiAgbWFyZ2luLWJvdHRvbTogMS4xMjVlbTsgfVxuXG4uZkxlZnQge1xuICBmbG9hdDogbGVmdDsgfVxuXG4uZlJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0OyB9XG5cbi5jUG9pbnRlciB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4uZXJyb3JhbGVydCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2YxZjA7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmMzMzMztcbiAgd2lkdGg6IDIyLjVlbTtcbiAgbWFyZ2luLWxlZnQ6IDEuN2VtOyB9XG5cbi8qIGNoZWNrIGJveCAqL1xuLmZvcm0tc2lnbmluIC5jaGVja2JveCB7XG4gIG1hcmdpbi1ib3R0b206IDAuOTM3NWVtO1xuICBtYXJnaW4tdG9wOiAwcHg7IH1cblxuLyogbG9naW4gaWQgYW5kIHBhc3N3b3JkIHRleHQgZmlsZWRzICovXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRleHRcIl0sXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdIHtcbiAgZm9udC1zaXplOiAxLjM3NWVtO1xuICBib3JkZXI6IDFweCBzb2xpZCByZWQ7XG4gIGhlaWdodDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogMC45Mzc1ZW07XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgYmFja2dyb3VuZDogI0ZGRkZGRjsgfVxuXG4uYWRiZ01hcmdpbiB7XG4gIG1hcmdpbjogMCAzLjc1ZW07IH1cblxuLmFsaWduQ2VudGVyIHtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLCBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0ge1xuICBwYWRkaW5nOiAwLjRlbTsgfVxuXG4ubGlzdFR5cGUge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfVxuXG4uZGlzcFBhZGRpbmcge1xuICBwYWRkaW5nLWJvdHRvbTogMWVtOyB9XG5cbi5ib3JkZXJOb25lIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi5jb2xvckJsdWUge1xuICBjb2xvcjogIzJmNmY4ODsgfVxuXG4uYlRvcFJlZCB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZWQ7IH1cblxuLmNvbG9yR3JleSB7XG4gIGNvbG9yOiAjOTI5Mjk1OyB9XG5cbi50RGVjb3JhdGlvblVsIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLnBhZGRpbmdCb3R0b20yNSB7XG4gIHBhZGRpbmctYm90dG9tOiAxLjU2MjVlbTsgfVxuXG4uZm9udDFlbUJvbGQge1xuICBmb250LXNpemU6IDFlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmZvbnQwN2VtIHtcbiAgZm9udC1zaXplOiAwLjdlbTsgfVxuXG4uZXJyb3JNc2cge1xuICBmb250LXNpemU6IDEuNGVtO1xuICBmb250LWZhbWlseTpuZXhhTGlnaHQ7IH1cblxuLnBCb3R0b20wNSB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjVlbTsgfVxuXG4vKmxvZ2luIHBhZ2Ugc3R5bGVzIC0gZW5kKi9cbi8qaGVhZGVyIC0gc3RhcnQqL1xuYnV0dG9uOmhvdmVyLCBidXR0b246Zm9jdXMsIC5idXR0b246aG92ZXIsIC5idXR0b246Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjdBNTAwOyB9XG5cbi5uYXZCYXJTaWduSW4ge1xuICBiYWNrZ3JvdW5kOiBub25lIHJlcGVhdCBzY3JvbGwgMCAwICNGQzY3MTk7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LWZhbWlseTogT21uZXNCbGFja0l0YWxpYztcbiAgZm9udC1zaXplOiAxLjNlbTtcbiAgcGFkZGluZzogMC4yZW0gMC45Mzc1ZW0gMC4xZW07IH1cblxuLm5hdkJhclNpZ25Jbjpob3ZlciwgLm5hdkJhclNpZ25Jbjpmb2N1cywgLnNlYXJjaEJ0bjpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNmZmZmZmY7IH1cblxuLnNlYXJjaEJ0biB7XG4gIGJhY2tncm91bmQ6IG5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgIzcyQzRENjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kOiAjNzJjNGQ2O1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtZmFtaWx5OiBPbW5lc0JsYWNrSXRhbGljO1xuICBmb250LXNpemU6IDEuODZlbTtcbiAgbWFyZ2luLWxlZnQ6IDAuMzEyNWVtO1xuICBwYWRkaW5nOiAwLjUyZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLnNlYXJjaEJveFR4dCB7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMGVtO1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDBlbTtcbiAgLW1zLWJvcmRlci1yYWRpdXM6IDBlbTtcbiAgYm9yZGVyLXJhZGl1czogMGVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHdpZHRoOiAzNDVweCAhaW1wb3J0YW50O1xuICB3aWR0aDogMzE1cHhcXDkgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogNDBweFxcOSAhaW1wb3J0YW50OyB9XG5cbi5zZWFyY2hCb3hUeHQ6Zm9jdXMge1xuICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG4gIC1tb3otYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgb3V0bGluZTogbm9uZTsgfVxuXG4ubmF2QmFyQm9yZGVyIHtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmNmE3MDQgIWltcG9ydGFudDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2NjY2MgIWltcG9ydGFudDsgfVxuXG4ubmF2QmFyQm9yZGVyIGxpID4gYSB7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7XG4gIGZvbnQtc2l6ZTogMS4yNWVtICFpbXBvcnRhbnQ7IH1cblxuLypDU1MgZm9yIHRoZSBzdGFydCBwYWdlIHRvcC1yaWdodCBjb3JuZXIgaWNvbnMqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcInBpY3RvLWdlbmVyYWxcIjtcbiAgc3JjOiB1cmwoXCIvcmVkZXNpZ24vY29tbW9uL2ZvbnRzL3BpY3RvLWZvdW5kcnktZ2VuZXJhbC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL3JlZGVzaWduL2NvbW1vbi9mb250cy9waWN0by1mb3VuZHJ5LWdlbmVyYWwuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgdXJsKFwiL3JlZGVzaWduL2NvbW1vbi9mb250cy9waWN0by1mb3VuZHJ5LWdlbmVyYWwud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIvcmVkZXNpZ24vY29tbW9uL2ZvbnRzL3BpY3RvLWZvdW5kcnktZ2VuZXJhbC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi9yZWRlc2lnbi9jb21tb24vZm9udHMvcGljdG8tZm91bmRyeS1nZW5lcmFsLnN2ZyNwaWN0by1mb3VuZHJ5LWdlbmVyYWxcIikgZm9ybWF0KFwic3ZnXCIpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJwaWN0by1ob3VzZWhvbGRcIjtcbiAgc3JjOiB1cmwoXCIvcmVkZXNpZ24vY29tbW9uL2ZvbnRzL3BpY3RvLWZvdW5kcnktaG91c2Vob2xkLmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIvcmVkZXNpZ24vY29tbW9uL2ZvbnRzL3BpY3RvLWZvdW5kcnktaG91c2Vob2xkLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi9yZWRlc2lnbi9jb21tb24vZm9udHMvcGljdG8tZm91bmRyeS1ob3VzZWhvbGQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIvcmVkZXNpZ24vY29tbW9uL2ZvbnRzL3BpY3RvLWZvdW5kcnktaG91c2Vob2xkLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiL3JlZGVzaWduL2NvbW1vbi9mb250cy9waWN0by1mb3VuZHJ5LWhvdXNlaG9sZC5zdmcjcGljdG8tZm91bmRyeS1nZW5lcmFsXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG4ucGljdG8tbWFpbDpiZWZvcmUsIC5waWN0by10b3JzbzpiZWZvcmUge1xuICBmb250LWZhbWlseTogXCJwaWN0by1nZW5lcmFsXCI7IH1cblxuLnBpY3RvLWhvbWU6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwicGljdG8taG91c2Vob2xkXCI7IH1cblxuLnBpY3RvLW1haWw6YmVmb3JlLCAucGljdG8tdG9yc286YmVmb3JlLCAucGljdG8taG9tZTpiZWZvcmUge1xuICBjb2xvcjogI0ZGNjYxQjtcbiAgZm9udC1zaXplOiAyLjhlbTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi5waWN0by1tYWlsOmhvdmVyLCAucGljdG8tdG9yc286aG92ZXIsIC5waWN0by1ob21lOmhvdmVyLCAjcHJvZmlsZTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4ucGljdG8tbWFpbDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjE0Y1wiO1xuICBtYXJnaW4tbGVmdDogLTAuNWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi5waWN0by10b3JzbzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjFhNFwiOyB9XG5cbi5waWN0by1ob21lOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMTE0XCI7IH1cblxuLnBvcG92ZXIge1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDBlbTtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAwZW07XG4gIC1tcy1ib3JkZXItcmFkaXVzOiAwZW07XG4gIGJvcmRlci1yYWRpdXM6IDBlbTtcbiAgYm9yZGVyOiAycHggc29saWQgI2ZmYjY5MyAhaW1wb3J0YW50OyB9XG5cbiNwb3BvdmVyIHtcbiAgb3BhY2l0eTogMC45ICFpbXBvcnRhbnQ7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCkgIWltcG9ydGFudDsgfVxuXG4ucG9wb3Zlci5ib3R0b20gLmFycm93IHtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTExcHg7XG4gIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICM5OTk7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNGRDhBNEU7XG4gIHRvcDogLTExcHg7IH1cblxuLnBvcG92ZXJkYXRhIHtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZmI2OTM7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDtcbiAgcGFkZGluZy10b3A6IDNweDtcbiAgcGFkZGluZy1ib3R0b206IDNweDsgfVxuXG4ucG9wb3ZlcmRhdGEgYSB7XG4gIGNvbG9yOiAjNjU2NDZBOyB9XG5cbi5wb3BvdmVyZGF0YSBhOmhvdmVyIHtcbiAgY29sb3I6ICM2NTY0NkE7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4ucG9wb3Zlci1jb250ZW50IHtcbiAgd2lkdGg6IDEzZW0gIWltcG9ydGFudDtcbiAgcGFkZGluZzogMTFweCA5cHggIWltcG9ydGFudDsgfVxuXG4jdW5yZWFkQ291bnQge1xuICBjb2xvcjogIzAwMzM5OTtcbiAgei1pbmRleDogNzAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbi5zaWdub3V0IHtcbiAgY29sb3I6ICM3MkM0RDYgIWltcG9ydGFudDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDsgfVxuXG4vKmhlYWRlciAtIGVuZCovXG4vKmNvbnRhaW5lciAtIHN0YXJ0Ki9cbi50aWxlSGVhZGVyIHtcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNmN2E3MDA7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdhNzAwO1xuICBwYWRkaW5nOiAwLjJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC4zZW07XG4gIGJhY2tncm91bmQ6ICNGN0Y3RjY7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7XG4gIGZvbnQtc2l6ZTogMS41ZW07IH1cblxuLnRpbGVGb290ZXIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y3YTcwMDsgfVxuXG4uY0JvdGgge1xuICBjbGVhcjogYm90aDsgfVxuXG4ucExlZnQzMCB7XG4gIHBhZGRpbmctbGVmdDogMzBweDsgfVxuXG4ucExlZnQxMmVtIHtcbiAgcGFkZGluZy1sZWZ0OiAxMmVtOyB9XG5cbi5wVG9wMWVtIHtcbiAgcGFkZGluZy10b3A6IDFlbTsgfVxuXG4ubWFyZ2luQXV0byB7XG4gIG1hcmdpbjogYXV0bzsgfVxuXG4ubWFyZ2luTGVmdDQyIHtcbiAgbWFyZ2luLWxlZnQ6IDQycHg7IH1cblxuLyogdGlsZXMgKi9cbiNjb250YWluZXIgPiAuY29sdW1ucywgI2NvbnRhaW5lciA+IC5jb2x1bW5zID4gLnJvdywgI2NvbnRhaW5lciA+IC5jb2x1bW5zID4gLnJvdyA+IC5jb2x1bW5zIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuXG4jeDAxV3JhcCwgI3gwMldyYXAsICN4MDNXcmFwLCAjeDA0V3JhcCwgI3gwNldyYXAsICN4MDdXcmFwLCAjeDA4V3JhcCwgI3gwOVdyYXAsICN4MTBXcmFwLCAjeDEyV3JhcCwgI01pZGRsZVdyYXAge1xuICBtYXJnaW46IDBlbSAwLjhlbSAxZW0gMC44ZW07XG4gIGJhY2tncm91bmQ6ICNGN0Y3RjY7IH1cblxuI1RvcFdyYXAsICNUb3AzV3JhcCB7XG4gIG1hcmdpbjogMGVtIDAuOGVtIDFlbSAwLjhlbTsgfVxuXG4jUmlnaHQxV3JhcCwgI1JpZ2h0MldyYXAsICNMZWZ0V3JhcCB7XG4gIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOyB9XG5cbiNMZWZ0V3JhcCB7XG4gIG1hcmdpbi1yaWdodDogMC44ZW07IH1cblxuI1JpZ2h0MVdyYXAsICNSaWdodDJXcmFwIHtcbiAgbWFyZ2luLWxlZnQ6IDAuOGVtOyB9XG5cbiNMZWZ0V3JhcCB7XG4gIHdpZHRoOiAxNjBweDtcbiAgaGVpZ2h0OiA2MDBweDsgfVxuXG4jTWlkZGxlV3JhcCB7XG4gIHdpZHRoOiA2MTJweDtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbiN4MDFXcmFwIHtcbiAgd2lkdGg6IDYxMnB4O1xuICBoZWlnaHQ6IGF1dG87IH1cblxuI3gwMldyYXAge1xuICB3aWR0aDogNjEycHg7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4jeDAzV3JhcCB7XG4gIHdpZHRoOiAzMDBweDtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbiN4MDRXcmFwIHtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IGF1dG87IH1cblxuI3gwNldyYXAge1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4jeDA3V3JhcCB7XG4gIHdpZHRoOiAzMDBweDtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbiN4MDhXcmFwIHtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IDI5NXB4OyB9XG5cbiN4MDlXcmFwIHtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IGF1dG87IH1cblxuI1RvcFdyYXAge1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMjUwcHg7IH1cblxuI1RvcDNXcmFwIHtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IDEwMHB4OyB9XG5cbiN4MTBXcmFwIHtcbiAgd2lkdGg6IDMwMHB4O1xuICBoZWlnaHQ6IGF1dG87IH1cblxuI3gxMldyYXAge1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMjk2cHg7IH1cblxuI1JpZ2h0MVdyYXAge1xuICB3aWR0aDogMTYwcHg7XG4gIGhlaWdodDogNjAwcHg7IH1cblxuI1JpZ2h0MldyYXAge1xuICB3aWR0aDogMTYwcHg7XG4gIGhlaWdodDogMzAwcHg7IH1cblxuI0JvdHRvbVdyYXAge1xuICB3aWR0aDogNzI4cHg7XG4gIGhlaWdodDogOTBweDsgfVxuXG4ud2lkdGgyNTAge1xuICB3aWR0aDogMjUwcHg7IH1cblxuLndpZHRoMzUge1xuICB3aWR0aDogMzVweDsgfVxuXG4vKmNvbnRhaW5lciAtIGVuZCovXG4vKmZvb3RlciAtIHN0YXJ0Ki9cbi52QWxpZ25Cb3R0b20ge1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207IH1cblxuLmZiSWNvbiB7XG4gIHdpZHRoOiAxLjYyNWVtO1xuICBoZWlnaHQ6IDEuNjI1ZW07XG4gIG1hcmdpbi1sZWZ0OiA1cHg7IH1cblxuLnR3aXR0ZXJJY29uIHtcbiAgd2lkdGg6IDEuNjI1ZW07XG4gIGhlaWdodDogMS41NWVtOyB9XG5cbmZvb3RlciB1bCB7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG5mb290ZXIgYSB7XG4gIGNvbG9yOiAjNzc3NzdiICFpbXBvcnRhbnQ7IH1cblxuLmZvb3RlclBhZGRpbmcge1xuICBwYWRkaW5nOiAyMHB4IDBweCA1cHggMHB4OyB9XG5cbi5jb3B5UmlnaHQge1xuICBmb250LWZhbWlseTogbmV4YUxpZ2h0O1xuICBiYWNrZ3JvdW5kOiAjNzc3NzdiO1xuICBjb2xvcjogI2ZmZjtcbiAgaGVpZ2h0OiA0MHB4O1xuICBmb250LXNpemU6IDEuNWVtOyB9XG5cbi5uYXYgPiBsaSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9XG5cbi8qZm9vdGVyIC0gZW5kKi9cbi5uby1ndXR0ZXIgW2NsYXNzKj1cIi0xXCJdLCBbY2xhc3MqPVwiLTJcIl0sIFtjbGFzcyo9XCItM1wiXSwgW2NsYXNzKj1cIi00XCJdLCBbY2xhc3MqPVwiLTVcIl0sIFtjbGFzcyo9XCItNlwiXSwgW2NsYXNzKj1cIi03XCJdLCBbY2xhc3MqPVwiLThcIl0sIFtjbGFzcyo9XCItOVwiXSwgW2NsYXNzKj1cIi0xMFwiXSwgW2NsYXNzKj1cIi0xMVwiXSB7XG4gIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cblxuLmNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMjgwcHggIWltcG9ydGFudDtcbiAgcGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLndpZHRoMjIwIHtcbiAgd2lkdGg6IDIyMHB4OyB9XG5cbi53aWR0aDEyMCB7XG4gIHdpZHRoOiAxMjBweDsgfVxuXG4ud2lkdGgxMDUge1xuICB3aWR0aDogMTA1cHg7IH1cblxuLndpZHRoNzUwIHtcbiAgd2lkdGg6IDc1MHB4OyB9XG5cbi53aWR0aDU5MCB7XG4gIHdpZHRoOiA1OTBweDsgfVxuXG4ud2lkdGgzMTAge1xuICB3aWR0aDogMzEwcHg7IH1cblxuLm1Ub3A3IHtcbiAgbWFyZ2luLXRvcDogN3B4OyB9XG5cbi5wVG9wMTAge1xuICBwYWRkaW5nLXRvcDogMTBweDsgfVxuXG4jY29udGFpbmVyID4gLmNvbC1tZC0yIHtcbiAgd2lkdGg6IDE2NXB4ICFpbXBvcnRhbnQ7IH1cblxuI2NvbnRhaW5lciA+IC5jb2wtbWQtNSB7XG4gIHdpZHRoOiA2MjVweCAhaW1wb3J0YW50OyB9XG5cbiNjb250YWluZXIgPiAuY29sLW1kLTMge1xuICB3aWR0aDogMzEwcHggIWltcG9ydGFudDsgfVxuXG4jY29udGFpbmVyID4gLmNvbC1tZC01ID4gLnJvdyB7XG4gIG1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7IH1cblxuLnJvdyB7XG4gIG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDsgfVxuXG4jY29udGFpbmVyID4gLmNvbC1tZC01ID4gLnJvdyA+IC5jb2wtbWQtNiB7XG4gIHdpZHRoOiAzMTBweCAhaW1wb3J0YW50OyB9XG5cbi5uYXZiYXItbmF2ID4gbGkgPiBhIHtcbiAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMS4yNWVtO1xuICBjb2xvcjogIzc3Nzc3NzsgfVxuXG4ubmF2YmFyLW5hdiA+IGxpID4gYTpob3ZlciwgLm5hdmJhci1uYXYgPiBsaS5hY3RpdmUsIC5uYXZiYXItbmF2ID4gLmFjdGl2ZSA+IGEsIC5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhOmZvY3VzIHtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfVxuXG5mb290ZXIgLm5hdmJhci1uYXYgPiBsaSA+IGE6aG92ZXIge1xuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbi5uYXZiYXItbmF2ID4gbGkuYWN0aXZlLCAubmF2YmFyLW5hdiA+IC5hY3RpdmUgPiBhLCAubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiAuYWN0aXZlID4gYTpmb2N1cyB7XG4gIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyB9XG5cbmZvb3RlciAucm93IHtcbiAgbWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50OyB9XG5cbmZvb3RlciBpZnJhbWUgLnJvdyB7XG4gIG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDsgfVxuXG4jZm9vdGVyTmF2IHtcbiAgZm9udC1zaXplOiAwLjg0ZW0gIWltcG9ydGFudDsgfVxuXG4jZm9vdGVyTmF2ID4gbGkgPiBhIHtcbiAgcGFkZGluZy10b3A6IDNweCAhaW1wb3J0YW50OyB9XG5cbi5uYXZiYXIge1xuICBtaW4taGVpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50OyB9XG5cbi5uYXZiYXItZGVmYXVsdCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7IH1cblxuLm5hdmJhci1mb3JtIHtcbiAgcGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7IH1cblxuaGVhZGVyIHtcbiAgbWluLWhlaWdodDogOGVtOyB9XG5cbi5tUmlnbnQyZW0ge1xuICBtYXJnaW4tcmlnaHQ6IDJlbTsgfVxuXG4ubVRvcDA1ZW0ge1xuICBtYXJnaW4tdG9wOiAwLjVlbTsgfVxuXG4ubVRvcDFlbSB7XG4gIG1hcmdpbi10b3A6IDFlbTsgfVxuXG4ubVRvcDJlbSB7XG4gIG1hcmdpbi10b3A6IDJlbTsgfVxuXG4ubVRvcDI1ZW0ge1xuICBtYXJnaW4tdG9wOiAyLjVlbTsgfVxuXG4ubVRvcDNlbSB7XG4gIG1hcmdpbi10b3A6IDNlbTsgfVxuXG4ubVRvcDI1ZW0ge1xuICBtYXJnaW4tdG9wOiAyLjVlbTsgfVxuXG4ubVRvcDQ4ZW0ge1xuICBtYXJnaW4tdG9wOiA0LjhlbTsgfVxuXG4ubVRvcDQyZW0ge1xuICBtYXJnaW4tdG9wOiA0LjJlbTsgfVxuXG4ucExlZnQxZW0ge1xuICBwYWRkaW5nLWxlZnQ6IDFlbTsgfVxuXG4ubUxlZnQyNWVtIHtcbiAgbWFyZ2luLWxlZnQ6IDIuNWVtOyB9XG5cbi5wTGVmdDI1ZW0ge1xuICBwYWRkaW5nLWxlZnQ6IDIuNWVtOyB9XG5cbi5oZWlnaHQ1NSB7XG4gIGhlaWdodDogNTVweDsgfVxuXG4uaGVpZ2h0NTAge1xuICBoZWlnaHQ6IDUwcHg7IH1cblxuLmhlaWdodDQwIHtcbiAgaGVpZ2h0OiA0MHB4OyB9XG5cbi5wVG9wMjAge1xuICBwYWRkaW5nLXRvcDogMjBweDsgfVxuXG4ucFRvcDEwIHtcbiAgcGFkZGluZy10b3A6IDEwcHg7IH1cblxuLnBUb3A3IHtcbiAgcGFkZGluZy10b3A6IDdweDsgfVxuXG4ud2VsY29tZSB7XG4gIGNvbG9yOiAjZmY2NjFiO1xuICBmb250LWZhbWlseTogbmV4YUxpZ2h0O1xuICBmb250LXNpemU6IDEuMmVtO1xuICBtYXJnaW4tdG9wOiAxMHB4OyB9XG5cbi53ZWxjb21lMSB7XG4gIGNvbG9yOiAjZmY2NjFiO1xuICBmb250LWZhbWlseTogbmV4YUxpZ2h0O1xuICBmb250LXNpemU6IDEuMmVtOyB9XG5cbiN3ZWJNYWlsIHtcbiAgbWFyZ2luLWxlZnQ6IDY1cHg7XG4gIGhlaWdodDogMzBweDsgfVxuXG51bCB7XG4gIHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7IH1cblxuc2VsZWN0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y3YTcwMCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwLjRlbSAhaW1wb3J0YW50OyB9XG5cbi5tb3ZpZWxpc3RpbmdzIHtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLm5hdmJhci1mb3JtIC5mb3JtLWdyb3VwIHtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wOyB9XG5cbi5tZW51YmFyIHtcbiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2Y2YTcwNCAhaW1wb3J0YW50O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjY2NjYyAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHBhZGRpbmctdG9wOiA0cHg7IH1cblxuLm1lbnViYXIgdWwge1xuICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDsgfVxuXG4ubWVudWJhciB1bCBsaSB7XG4gIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDsgfVxuXG4ubWVudWJhciB1bCBsaSBhIHtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDtcbiAgZm9udC1zaXplOiAxLjI2ZW0gIWltcG9ydGFudDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjNzc3Nzc3ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAtNHB4OyB9XG5cbi5tZW51YmFyIHVsIGxpIGE6bGluayAubWVudWJhciB1bCBsaSBhOmFjdGl2ZSAubWVudWJhciB1bCBsaSBhOnZpc2l0ZWQge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgY29sb3I6ICMzMzMgIWltcG9ydGFudDsgfVxuXG4ubWVudWJhciB1bCBsaSBhOmhvdmVyIHtcbiAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogI2Y3YTUwMCAhaW1wb3J0YW50OyB9XG5cbi5hY3RpdmUge1xuICAvKiBiYWNrZ3JvdW5kOiAjZjdhNTAwICFpbXBvcnRhbnQ7IFxuICBwYWRkaW5nOiA4cHggMTBweCAhaW1wb3J0YW50OyBcbiAgY29sb3I6ICM3Nzc3NzcgIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDEwcHggIWltcG9ydGFudDsgKi9cbiAgbWFyZ2luLXRvcDogLTI1cHg7XG4gfVxuIFxuLmRlZmF1bHRMaW5rIHtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIHBhZGRpbmctYm90dG9tOiA0cHggIWltcG9ydGFudDtcbiAgcGFkZGluZy10b3A6IDRweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjNzc3OyB9XG5cbi5tb2RhbC1kaWFsb2cge1xuICBtYXJnaW46IDMwcHggYXV0bztcbiAgd2lkdGg6IDcwMHB4O1xuICB6LWluZGV4OiA5OTk5ICFpbXBvcnRhbnQ7IH1cblxuLm1vZGFsLWhlYWRlciB7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIGJvcmRlci1ib3R0b206IDBweCAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiAxNi40Mjg1NzE0MjlweDsgfVxuXG4ubW9kYWwtZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbiAgcGFkZGluZzogMTlweCA0MHB4IDIwcHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuICBib3JkZXItdG9wOiAwcHggIWltcG9ydGFudDsgfVxuXG4ubW9kYWxib3JkZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjRjdBODFCOyB9XG5cbi50aXRsZWJhciB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDtcbiAgY29sb3I6ICNmNjk4NmU7XG4gIHBhZGRpbmctdG9wOiAxNnB4O1xuICBwYWRkaW5nLWxlZnQ6IDI1cHg7IH1cblxuLnN1YnRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDI1cHg7XG4gIGNvbG9yOiAjNTg1ODVjOyB9XG5cbi5tb2RhbGJvZHkge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7XG4gIGNvbG9yOiAjZjY5ODZlO1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7IH1cblxuLmJ0biB7XG4gIHBhZGRpbmc6IDVweCAxMnB4IDJweCAxMnB4OyB9XG5cbi50YWtldGhldG91ciB7XG4gIHdpZHRoOiAyMzZweDtcbiAgZm9udC1zaXplOiAxLjllbTtcbiAgY29sb3I6ICNmZmY7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBwYWRkaW5nOiAwLjNlbSAwLjRlbSAwLjE1ZW0gMC40ZW07XG4gIGZvbnQtZmFtaWx5OiBPbW5lc0JsYWNrSXRhbGljICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICNGN0E4MUIgIWltcG9ydGFudDtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIC1tb3otYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICAtbXMtYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjI1ZW07IH1cblxuLnRha2V0aGV0b3VyOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI0Y3QTgxQjtcbiAgY29sb3I6ICNmZmY7IH1cblxuLnJldGFrZXRvdXIge1xuICB3aWR0aDogMjM2cHg7XG4gIGZvbnQtc2l6ZTogMS45ZW07XG4gIGNvbG9yOiAjZmZmO1xuICBsaW5lLWhlaWdodDogMTtcbiAgcGFkZGluZzogMC4zZW0gMC40ZW0gMC4xNWVtIDAuNGVtO1xuICBmb250LWZhbWlseTogT21uZXNCbGFja0l0YWxpYztcbiAgYmFja2dyb3VuZDogI0Y3QTgxQiAhaW1wb3J0YW50O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIC1tcy1ib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVlbTsgfVxuXG4ucmV0YWtldG91cjpob3ZlciB7XG4gIGJhY2tncm91bmQ6ICNGN0E4MUI7XG4gIGNvbG9yOiAjZmZmOyB9XG5cbi5idG5jbG9zZSB7XG4gIHdpZHRoOiAxMjBweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBiYWNrZ3JvdW5kOiAjOEI4QzhFO1xuICBjb2xvcjogI0IzQjRCNTtcbiAgZm9udC1mYW1pbHk6IG5leGFMaWdodDsgfVxuXG4uYnRuY2xvc2U6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjOEI4QzhFO1xuICBjb2xvcjogI2IzYjRiNTsgfVxuXG4uZG9udHNob3cge1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMnB4OyB9XG5cbi5jbG9zZSB7XG4gIGZsb2F0OiByaWdodDtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgb3BhY2l0eTogLjU7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG4gIGhlaWdodDogMjNweDtcbiAgd2lkdGg6IDIzcHggIWltcG9ydGFudDsgfVxuXG5idXR0b24uY2xvc2Uge1xuICBwYWRkaW5nOiAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IDAgMDtcbiAgYm9yZGVyOiAycHggc29saWQgI0Y3QTgxQiAhaW1wb3J0YW50O1xuICBjb2xvcjogI0Y3QTgxQjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbmJ1dHRvbi5jbG9zZTpob3ZlciB7XG4gIGNvbG9yOiAjRjdBODFCOyB9XG5cbi5wb3B1cGNsb3NlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiAtMTBweDtcbiAgdG9wOiAtOHB4OyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIG9yYW5nZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBvdXRsaW5lOiBub25lO1xuICBib3gtc2hhZG93OiAwIDAgNXB4IDBweCBncmF5IGluc2V0OyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ106aG92ZXIge1xuICBib3gtc2hhZG93OiAwIDAgNXB4IDBweCBvcmFuZ2UgaW5zZXQ7IH1cblxuaW5wdXRbdHlwZT0ncmFkaW8nXTpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA2MCU7XG4gIGhlaWdodDogNjAlO1xuICBtYXJnaW46IDIwJSBhdXRvO1xuICBib3JkZXItcmFkaXVzOiA1MCU7IH1cblxuaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkOmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7IH1cblxuLmZvb3RlckNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7IH1cblxuLmZvb3RlckNlbnRlclNpZ25pbiB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIG1hcmdpbi1sZWZ0OiAxNDVweDsgfVxuXG4uYnRuUHJldmlvdXMge1xuICB3aWR0aDogMTQ1cHg7XG4gIGZvbnQtc2l6ZTogMTlweDtcbiAgYmFja2dyb3VuZDogIzhCOEM4RTtcbiAgY29sb3I6ICNCM0I0QjU7XG4gIGZvbnQtZmFtaWx5OiBuZXhhTGlnaHQ7IH1cblxuLmJ0blByZXZpb3VzOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzhCOEM4RTtcbiAgY29sb3I6ICNiM2I0YjU7IH1cblxuLmJ0bk5leHQge1xuICB3aWR0aDogMTQ1cHg7XG4gIGZvbnQtc2l6ZTogMS45ZW07XG4gIGNvbG9yOiAjZmZmO1xuICBsaW5lLWhlaWdodDogMTtcbiAgcGFkZGluZzogMC4zZW0gMC40ZW0gMC4xNWVtIDAuNGVtO1xuICBmb250LWZhbWlseTogT21uZXNCbGFja0l0YWxpYyAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiAjRjdBODFCICFpbXBvcnRhbnQ7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgLW1zLWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4yNWVtOyB9XG5cbi5idG5OZXh0OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI0Y3QTgxQjtcbiAgY29sb3I6ICNmZmY7IH1cblxuLnRpcHNIaWdobGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDc3Nzc3NzU7IH1cblxuLnRpcHNIaWdobGlnaHQxIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiA3Nzc3Nzc1OyB9XG5cbi5vdmVybGF5VGV4dCB7XG4gIGNvbG9yOiBncmV5O1xuICBmb250LXNpemU6IDEzcHg7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4OyB9XG5cbi5vdmVybGF5VGV4dDEge1xuICBjb2xvcjogZ3JleTtcbiAgZm9udC1zaXplOiAxM3B4OyB9XG5cbi5hcnJvd1RvcCB7XG4gIG1hcmdpbi10b3A6IC0xMzBweDtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICBmbG9hdDogcmlnaHQ7IH1cblxuLnByb2ZpbGVJbWcge1xuICBtYXJnaW4tdG9wOiAtMTg1cHg7XG4gIG1hcmdpbi1yaWdodDogMjBweDtcbiAgZmxvYXQ6IHJpZ2h0OyB9XG5cbi5zaWduaW5BcnJvd1RvcCB7XG4gIG1hcmdpbi10b3A6IC05NXB4O1xuICBtYXJnaW4tcmlnaHQ6IDYwcHg7XG4gIGZsb2F0OiByaWdodDsgfVxuXG4uc2luZ2luQXJyb3cge1xuICBtYXJnaW4tdG9wOiAtOTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICBmbG9hdDogcmlnaHQ7IH1cblxuLmNvbnRlblRhYkFycm93IHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBtYXJnaW4tdG9wOiAyNXB4O1xuICBtYXJnaW4tbGVmdDogMTVweDsgfVxuXG4ubGVmdEFyb3cge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHJpZ2h0OiA2MHB4OyB9XG5cbi5yaWdodEFycm93IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiA1NnB4OyB9XG5cbi5tb2RhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnQ7IH1cblxuLnBSZWxhdGl2ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4ubUxlZnQyMCB7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4OyB9XG5cbiNhZEJhY2tncm91bmQge1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5mb290ZXJCcmFuZDEge1xuICBwYWRkaW5nOiAwLjZlbTtcbiAgcGFkZGluZy1sZWZ0OiAyZW07XG4gIHBhZGRpbmctdG9wOiAwLjhlbTtcbiAgZm9udC1zaXplOiAxMHB0OyB9XG5cbi5zb2NpYWxJY29uczEge1xuICBwYWRkaW5nOiAwLjdlbTtcbiAgcGFkZGluZy1yaWdodDogMmVtO1xuICBmb250LXNpemU6IDEwcHQ7IH1cblxuLyogRGVza3RvcHMgYW5kIGxhcHRvcHMgLS0tLS0tLS0tLS0gKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIyNHB4KSB7XG4gICNMZWZ0MldyYXAge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgICBtYXJnaW4tbGVmdDogNTBweDtcbiAgICBtYXJnaW4tdG9wOiA4MHB4OyB9XG5cbiAgLnRyYW5zIHtcbiAgICB3aWR0aDogMjZlbTtcbiAgICBtYXJnaW4tbGVmdDogMjVweDtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgIGJhY2tncm91bmQ6IHdoaXRlIHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9OTApO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuOTsgfVxuXG4gIC5mb290ZXJyb3cge1xuICAgIHBhZGRpbmc6IDBweCA2NXB4OyB9XG5cbiAgLmZvb3RlckJyYW5kIHtcbiAgICBwYWRkaW5nOiAwLjZlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDJlbTtcbiAgICBwYWRkaW5nLXRvcDogMC44ZW07XG4gICAgZm9udC1zaXplOiAxMHB0OyB9XG5cbiAgLnNvY2lhbEljb25zIHtcbiAgICBwYWRkaW5nOiAwLjdlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyZW07XG4gICAgZm9udC1zaXplOiAxMHB0OyB9IH1cbi8qIGlQYWRzIChwb3J0cmFpdCBhbmQgbGFuZHNjYXBlKSAtLS0tLS0tLS0tLSAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogNzY4cHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSB7XG4gICNMZWZ0MldyYXAge1xuICAgIGhlaWdodDogMjUwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHggIWltcG9ydGFudDtcbiAgICBtYXJnaW4tdG9wOiAzMHB4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDMwMHB4OyB9XG5cbiAgLnRyYW5zIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZSB0cmFuc3BhcmVudDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTkwKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAwLjk7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHggIWltcG9ydGFudDtcbiAgICBtYXJnaW4tdG9wOiAzMHB4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDI2ZW07IH1cblxuICAuZm9vdGVycm93IHtcbiAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDsgfVxuXG4gIC5mb290ZXJCcmFuZCB7XG4gICAgcGFkZGluZzogMC42ZW07XG4gICAgcGFkZGluZy1sZWZ0OiAyZW07XG4gICAgcGFkZGluZy10b3A6IDAuOGVtO1xuICAgIGZvbnQtc2l6ZTogMTBwdDsgfVxuXG4gIC5zb2NpYWxJY29ucyB7XG4gICAgcGFkZGluZzogMC43ZW07XG4gICAgcGFkZGluZy1yaWdodDogMmVtO1xuICAgIGZvbnQtc2l6ZTogMTBwdDsgfSB9XG4vKiBTbWFydHBob25lcyAocG9ydHJhaXQgYW5kIGxhbmRzY2FwZSkgLS0tLS0tLS0tLS0gKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDMyMHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQ4MHB4KSB7XG4gICNMZWZ0MldyYXAge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAwcHggIWltcG9ydGFudDtcbiAgICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7IH1cblxuICAudHJhbnMge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlIHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9OTApO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgICBtYXJnaW4tbGVmdDogMTBweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi10b3A6IDMwcHggIWltcG9ydGFudDtcbiAgICB3aWR0aDogMjZlbTsgfVxuXG4gIC5mb290ZXJyb3cge1xuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50OyB9XG5cbiAgLmZvb3RlckJyYW5kIHtcbiAgICBwYWRkaW5nOiAwLjFlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMmVtO1xuICAgIHBhZGRpbmctdG9wOiAxLjJlbTtcbiAgICBmb250LXNpemU6IDhwdDsgfVxuXG4gIC5zb2NpYWxJY29ucyB7XG4gICAgcGFkZGluZzogMC4xZW07XG4gICAgcGFkZGluZy1yaWdodDogMC4yZW07XG4gICAgcGFkZGluZy10b3A6IDEuMWVtO1xuICAgIGZvbnQtc2l6ZTogOHB0OyB9XG5cbiAgLm1hcmdpbjM0IHtcbiAgICBtYXJnaW46IDBweCAhaW1wb3J0YW50OyB9XG5cbiAgLmJUb3BSZWQge1xuICAgIGJvcmRlcjogbm9uZTsgfVxuXG4gIC5jZW50ZXItYmxvY2sge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuICAuZm9vdGVyUGFkZGluZyB7XG4gICAgcGFkZGluZzogMjBweDsgfSB9XG4ifSwgImhlYWRlcnNTaXplIjogMTYzNSwgImJvZHlTaXplIjogNDk1MSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogNjU4Nn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDc1LjYxLCAicmVjZWl2ZSI6IDYuMjIzfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjdaIiwgInRpbWUiOiA0NS42OSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zcC1yZWRlc2lnbi5jc3MiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvY3NzLCovKjtxPTAuMSJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDk2LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiY3llU3lnY3o5ZkkwTDlFQTlXVXZ2Vy5DbGxXMl9zNVZHOGRJcHgyRFZYRS0xNjg0OTQyODc1LTAtQVRjSUcyYy9YRmtTZ0wxM2xZL3dqNXJockY2WDlrdTF0ZDFRY2pjNDVGRXBUZnNmQ3dJanVibXlZUnJyZjBSWmFWTVhKV2Z2eldWWElOZXE2RXBIR2hVPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MSJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDRkMGU1NTM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvY3NzOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTUgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVRjN21yV2hHbjh5SDZ1R2pKdW9zYnBNazU0UThqNXF2MXhwQlhWUDRQbVF4XCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09Y3llU3lnY3o5ZkkwTDlFQTlXVXZ2Vy5DbGxXMl9zNVZHOGRJcHgyRFZYRS0xNjg0OTQyODc1LTAtQVRjSUcyYy9YRmtTZ0wxM2xZL3dqNXJockY2WDlrdTF0ZDFRY2pjNDVGRXBUZnNmQ3dJanVibXlZUnJyZjBSWmFWTVhKV2Z2eldWWElOZXE2RXBIR2hVPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE1IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9zcC1yZWRlc2lnbi5jc3MifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtVGM3bXJXaEduOHlINnVHakp1b3NicE1rNTRROGo1cXYxeHBCWFZQNFBtUXgifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDQ1NDE2LCAibWltZVR5cGUiOiAidGV4dC9jc3M7IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAzNTgwMCwgInRleHQiOiAiaHRtbCAqe1xyXG5cdGZvbnQtZmFtaWx5OmhlbHZldGljYSwgYXJpYWwgIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcbmJvZHkge1xyXG5mb250LWZhbWlseTphcmlhbCwgaGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xyXG5mb250LXNpemU6MTJweDtcclxuYmFja2dyb3VuZC1jb2xvcjojZmZmO1xyXG5tYXJnaW46MDtcclxucGFkZGluZzowO1xyXG59XHJcblxyXG50ZCB7XHJcbmZvbnQtc2l6ZToxMnB4O1xyXG59XHJcblxyXG4vKiBOZXcgc3RhcnRwYWdlIGZpeGVkIGhlYWRlciBjc3MgKi9cclxuY29kZXtcclxuY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcclxucGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XHJcbmJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhIGltcG9ydGFudDtcclxuZm9udC1zaXplOjEwMCUhIGltcG9ydGFudDtcclxufVxyXG5cclxuLnNwQ29udGFpbmVye1xyXG5cdFx0d2lkdGg6MTAyMHB4ICEgaW1wb3J0YW50O1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcclxuXHRcdHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xyXG5cdFx0bWFyZ2luOiAwIGF1dG87XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHRcdFxyXG59ICBcclxuLmZpeGVkUG9ze1xyXG5cdFx0cG9zaXRpb246Zml4ZWQ7XHJcbn0gIFxyXG4uZnJpZ2h0e1xyXG5cdFx0ZmxvYXQ6cmlnaHQ7XHJcbn1cclxuXHJcbi5mbGVmdHtcclxuXHRcdGZsb2F0OmxlZnQ7XHJcbn1cclxuLnJlbFBvc2l0aW9ue1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4uYWJzUG9zaXRpb257XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuLmRpc2FibGVke1xyXG4gICAgICAgZGlzcGxheTpub25lO1xyXG59XHJcbi5lbmFibGVke1xyXG4gICAgICAgZGlzcGxheTpibG9jaztcclxufVxyXG4uY2JvdGh7XHJcblx0XHRjbGVhcjpib3RoO1xyXG59XHJcbi5sZWZ0Q29se1xyXG4gICAgICAgd2lkdGg6IDE3MHB4O1xyXG4gICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG59XHJcbi5taWRDb2x7XHJcbiAgICAgICB3aWR0aDogNTQwcHg7XHJcbiAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgIHBhZGRpbmctbGVmdDogOHB4O1xyXG4gICAgICAgcGFkZGluZy1yaWdodDogN3B4O1xyXG59XHJcbi5yaWdodENvbHtcclxuICAgICAgIHdpZHRoOiAzMTBweDtcclxuICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4ubGlua3MsIC5saW5rczphY3RpdmUsIC5saW5rczpob3ZlciB7XHJcbiAgICAgICBjb2xvcjojMDAzMzk5ICFpbXBvcnRhbnQ7XHJcbiAgICAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lICFpbXBvcnRhbnQ7XHJcbiAgICAgICBmb250LXNpemU6MTJweDtcclxuICAgICAgIGZvbnQtd2VpZ2h0OmJvbGQ7XHJcbn1cclxuLm1vcmUge1xyXG5cdFx0ZGlzcGxheTogaW5saW5lO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDE2cHg7XHJcblx0XHRmb250LXNpemU6MTRweCAhaW1wb3J0YW50O1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdFx0Y29sb3I6ICMwMDMzOTk7XHJcblx0XHRcclxufVxyXG4jdG9wbmV3c19tb3Jle1xyXG5cdGRpc3BsYXk6IGlubGluZTtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxNnB4O1xyXG5cdFx0Zm9udC1zaXplOjE0cHggIWltcG9ydGFudDtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgIWltcG9ydGFudDtcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdGNvbG9yOiAjMDAzMzk5O1xyXG5cdFxyXG59XHJcbiN0b3BuZXdzX21vcmUgYXtcclxuXHRcdGNvbG9yOiMwMDMzOTkgIWltcG9ydGFudDtcclxufVxyXG4jY3JpbWVuZXdzX21vcmV7XHJcblx0ZGlzcGxheTogaW5saW5lO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDE2cHg7XHJcblx0XHRmb250LXNpemU6MTRweCAhaW1wb3J0YW50O1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAhaW1wb3J0YW50O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdFx0Y29sb3I6ICMwMDMzOTk7XHJcblx0XHJcbn1cclxuI2NyaW1lbmV3c19tb3JlIGF7XHJcblx0XHRjb2xvcjojMDAzMzk5ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5tb3JlIGF7XHJcblx0XHRjb2xvcjojMDAzMzk5ICFpbXBvcnRhbnQ7XHJcbn1cclxuLnNwb25zb3JMb2dve1xyXG5cdFx0ZmxvYXQ6cmlnaHQ7XHJcblx0XHRkaXNwbGF5OmlubGluZTtcclxuXHRcdGZvbnQtc2l6ZTogMTJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdGNvbG9yOiAjOTk5OTk5O1x0XHJcbn1cclxuLmtleVdvcmR7XHJcblx0XHR0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xyXG5cdFx0Y29sb3I6I0ZGMzMwMDtcclxuXHRcdGZvbnQtc2l6ZToxMnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG59XHJcblxyXG4ua2V5V29yZE5ve1xyXG5cdFx0Zm9udC1zaXplOjE0cHg7XHJcblx0XHRmb250LXdlaWdodDpib2xkO1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdFx0Y29sb3I6IzAwMDAwMDtcclxufVxyXG5cclxuXHJcbi50aWxlSGVhZGluZ0xpbmV7XHJcblx0XHRib3JkZXI6MXB4IHNvbGlkICNEMUQxRDE7XHJcblx0XHRtYXJnaW4tdG9wOjBweDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDVweDtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udGlsZUhlYWRpbmd7XHJcblx0XHRtYXJnaW4tYm90dG9tOjBweDtcclxuXHRcdGZvbnQtc2l6ZToxNnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRjb2xvcjogIzY2NjY2NjtcclxuXHRcdG1hcmdpbi1sZWZ0OiAzcHg7XHJcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4ud2VhdGhlck1vZGFsIHtcclxuXHR0b3A6IDA7XHJcblx0bGVmdDogMDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDUxLDUxLDUxLDAuOCk7XHJcbiAgICBkaXNwbGF5OiBub25lOyAvKiBIaWRkZW4gYnkgZGVmYXVsdCAqL1xyXG4gICAgcG9zaXRpb246IGZpeGVkOyAvKiBTdGF5IGluIHBsYWNlICovXHJcbiAgICB6LWluZGV4OiA3Nzc3Nzc1OyAvKiBTaXQgb24gdG9wICovXHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7IC8qIEZ1bGwgd2lkdGggKi9cclxuICAgIGhlaWdodDogMTAwJTsgLyogRnVsbCBoZWlnaHQgKi9cclxuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIEVuYWJsZSBzY3JvbGwgaWYgbmVlZGVkICovXHJcbn1cclxuXHJcbi5sb2NhdGlvbkVkaXRNb2RhbENvbnRlbnR7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xyXG4gICAgbWFyZ2luOiAxNSUgYXV0bzsgLyogMTUlIGZyb20gdGhlIHRvcCBhbmQgY2VudGVyZWQgKi9cclxuICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjMDAzMzk5O1xyXG4gICAgd2lkdGg6IDgwJTtcclxuICAgIG1heC13aWR0aDogMzUwcHg7XHJcbiAgICAgLyogQ291bGQgYmUgbW9yZSBvciBsZXNzLCBkZXBlbmRpbmcgb24gc2NyZWVuIHNpemUgKi9cclxufVxyXG5cclxuI3VzZXJDb25zZW50Rm9yQWRzUG9wdXBDb250ZW50IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNENkQ2RDY7XHJcbiAgICBwYWRkaW5nOiAxMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIHdpZHRoOiAxMDIwcHg7XHJcbiAgICBwb3NpdGlvbjpmaXhlZDtcclxuICAgIGJvdHRvbTowcHg7XHJcbiAgICB6LWluZGV4Ojc3Nzc3Nzc7XHJcbiAgICBvdmVyZmxvdzpoaWRkZW47XHJcbn1cclxuI3VzZXJDb25zZW50Rm9yQWRzUG9wdXB7XHJcblx0ZGlzcGxheTpub25lO1xyXG5cdG1hcmdpbjowcHggYXV0bztcclxuXHR3aWR0aDoxMDIwcHg7XHJcbn1cclxuXHJcbiNzdGF0aWNIZWFkZXJ7XHJcbmhlaWdodDoxMTFweCAhaW1wb3J0YW50O1xyXG59XHJcbiNoZWFkZXJ7XHJcblx0XHR0b3A6MHB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO1xyXG5cdFx0ei1pbmRleDogNzc3Nzc3MDtcclxuXHRcdHBhZGRpbmctdG9wOjEwcHg7XHJcbn1cclxuI2hkaXZpZGVye1xyXG5cdFx0cGFkZGluZy10b3A6MTAwcHg7XHJcblx0XHRib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO1xyXG59XHJcbiNsb2dve1xyXG5cdFx0bGVmdDo1cHg7XHJcblx0XHRwYWRkaW5nLXRvcDoxNXB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuLmhlYWRlckFkRGl2LCAjVG9wMkFke1x0XHRcclxuXHRcdHJpZ2h0OjBweCAhaW1wb3J0YW50O1xyXG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XHJcblx0XHR0b3A6IDEwcHg7XHJcbn1cclxuLmZvb3RlckFkRGl2e1xyXG5cdHJpZ2h0OjBweCAhaW1wb3J0YW50O1xyXG5cdHBvc2l0aW9uOmFic29sdXRlO1xyXG59XHJcbiNzYnV0dG9ue1xyXG53aWR0aDo4OXB4O1xyXG5iYWNrZ3JvdW5kLWNvbG9yOiMwMDk3MDA7XHJcbmNvbG9yOndoaXRlO1xyXG5ib3JkZXI6bm9uZTtcclxuZm9udC1zaXplOjE0MCU7XHJcbmJvcmRlci1yYWRpdXM6MnB4O1xyXG5mb250LXdlaWdodDpib2xkO1xyXG5oZWlnaHQ6MzVweDtcclxubWFyZ2luLWxlZnQ6NXB4O1xyXG59XHJcbiAjc3ViYnV0dG9ue1xyXG4gICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgIGJhY2tncm91bmQtY29sb3I6IzAwMzM5OTtcclxuICAgICAgIGNvbG9yOndoaXRlO1xyXG4gICAgICAgYm9yZGVyOm5vbmU7XHJcbiAgICAgICBmb250LXNpemU6MTQwJTtcclxuICAgICAgIGJvcmRlci1yYWRpdXM6NXB4O1xyXG4gICAgICAgZm9udC13ZWlnaHQ6Ym9sZDtcclxuICAgICAgIGhlaWdodDo0MHB4O1xyXG4gICAgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcclxuICAgICAgIGZsb2F0OnJpZ2h0ICEgaW1wb3J0YW50O1xyXG59XHJcbiNzaWduSW5CdXR0b24sICNlbWFpbEJ1dHRvbntcclxuICAgICAgIHdpZHRoOjEwMCU7XHJcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiMwMDMzOTk7XHJcbiAgICAgICBjb2xvcjp3aGl0ZTtcclxuICAgICAgIGJvcmRlcjpub25lO1xyXG4gICAgICAgZm9udC1zaXplOjE4cHg7XHJcbiAgICAgICBib3JkZXItcmFkaXVzOjVweDtcclxuICAgICAgIGZvbnQtZmFtaWx5Om5leGFCb2xkO1xyXG4gICAgICAgcGFkZGluZzogOHB4IDA7XHJcbiAgICAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xyXG4gICAgICAgZmxvYXQ6cmlnaHQgISBpbXBvcnRhbnQ7XHJcbiAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbiNzYXZlV2VhdGhlckJ1dHRvbiwgI3NhdmVXZWF0aGVyQnV0dG9uMSB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogIzAwMzM5OTtcclxuXHRjb2xvcjogd2hpdGU7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGZvbnQtc2l6ZTogMThweDtcclxuXHRib3JkZXItcmFkaXVzOiA1cHg7XHJcblx0Zm9udC1mYW1pbHk6IG5leGFCb2xkO1xyXG5cdHBhZGRpbmc6IDhweCAzMHB4O1xyXG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuI3NpZ25PdXRCdXR0b24sI2VkaXRXZWF0aGVyQnV0dG9ue1xyXG4gICAgICAgbGluZS1oZWlnaHQ6IDJlbTtcclxuICAgICAgIGNvbG9yOiAjMDAzMzk5O1xyXG4gICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICAgICBmb250LWZhbWlseTpuZXhhQm9vaztcclxuICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3NpZ25PdXQsI2VkaXRXZWF0aGVye1xyXG5cdFx0ZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI3NpZ25PdXR7XHJcblx0XHRib3R0b206IDBweDtcclxuXHRcdHJpZ2h0OiAwcHg7XHJcbn1cclxuXHJcbiNzaWduSW57XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4jZW1haWx7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4jc2VhcmNoVGlsZXtcclxuICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgICAgICB6LWluZGV4Ojc3Nzc3Njk7XHJcbiBcdCAgIGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtcclxuICAgICAgIFxyXG59XHJcbiNmZF9uZXdzZXJfdG9wbmV3cyBhLCAjZmRfbmV3c2VyX3VzV29ybGQgYSwgI2ZkX25ld3Nlcl9lbnRlcnRhaW5tZW50IGEsICNmZF9uZXdzZXJfc2NpZW5jZSBhLCAjZmRfbmV3c2VyX3Nwb3J0cyBhLCNmZF9uZXdzZXJfY3JpbWVuZXdzIGEge1xyXG5cdFx0Y29sb3I6IzAwMzM5OSAhaW1wb3J0YW50O1xyXG5cdFx0Zm9udC1zaXplOjE1LjVweCAhaW1wb3J0YW50O1x0XHRcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdFx0XHRcclxufVxyXG5cclxuLyogI2ZkX25ld3Nlcl9zcG9ydHMgYSB7XHJcblx0XHRjb2xvcjojMDAzMzk5ICFpbXBvcnRhbnQ7XHJcblx0XHRmb250LXNpemU6MTRweCAhaW1wb3J0YW50O1x0XHRcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdFx0XHRcclxufSAqL1xyXG5cclxuI2ZkX25ld3Nlcl90b3BuZXdzIHAsICNmZF9uZXdzZXJfdXNXb3JsZCBwLCAjZmRfbmV3c2VyX2VudGVydGFpbm1lbnQgcCwgI2ZkX25ld3Nlcl9zY2llbmNlIHAsICNmZF9uZXdzZXJfc3BvcnRzIHAsI2ZkX25ld3Nlcl9jcmltZW5ld3MgcCB7XHJcblx0XHRjb2xvcjojMDAwMDAwICFpbXBvcnRhbnQ7XHJcblx0XHRmb250LXNpemU6MTNweCAhaW1wb3J0YW50O1xyXG5cclxufVxyXG5cclxuI2ZkX25ld3Nlcl90b3BuZXdzIGxpLCAjZmRfbmV3c2VyX3VzV29ybGQgbGksICNmZF9uZXdzZXJfZW50ZXJ0YWlubWVudCBsaSwgI2ZkX25ld3Nlcl9zY2llbmNlIGxpLCNmZF9uZXdzZXJfY3JpbWVuZXdzIGxpIHtcclxuXHRcdGNvbG9yOiMwMDMzOTkgIWltcG9ydGFudDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxNnB4O1xyXG5cdFx0LXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDVweDtcclxuXHRcdFxyXG59XHJcblxyXG4jZmRfbmV3c2VyX3Nwb3J0cyBsaXtcclxuXHRcdGNvbG9yOiMwMDMzOTkgIWltcG9ydGFudDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxNnB4O1xyXG5cdFx0LXdlYmtpdC1tYXJnaW4tc3RhcnQ6IDE4cHg7XHJcblx0XHRcclxufVxyXG5cclxuI2ZkX25ld3Nlcl9zcG9ydHMgdWwge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMHB4O1xyXG59XHJcblxyXG4jZmRfbmV3c2VyX3RvcG5ld3MsICNmZF9uZXdzZXJfdXNXb3JsZCwgI2ZkX25ld3Nlcl9lbnRlcnRhaW5tZW50LCAjZmRfbmV3c2VyX3NjaWVuY2UsICNmZF9uZXdzZXJfc3BvcnRzLCNmZF9uZXdzZXJfY3JpbWVuZXdze1xyXG5cdFx0cGFkZGluZy1ib3R0b206IDdweDtcclxufVxyXG5cclxuI3NlYXJjaEJhcntcclxuXHRcdHBhZGRpbmctdG9wOiA3cHg7XHJcblx0XHRmbG9hdDpsZWZ0O1xyXG5cdFx0cGFkZGluZy1yaWdodDogN3B4O1x0XHJcblx0XHRtYXJnaW4tbGVmdDoxcHg7XHRcclxufVxyXG5cclxuI3NlYXJjaHtcclxuXHRcdHdpZHRoOjYwM3B4O1xyXG5cdFx0Lyogd2lkdGg6IDU1MHB4OyAqL1xyXG5cdFx0aGVpZ2h0OiAzNXB4O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgIzliOWI5YjtcclxuXHRcdGZvbnQtc2l6ZToxNHB4O1xyXG59XHJcbiN0b3BTZWFyY2hlc0RpdntcclxuXHRcdHBhZGRpbmctdG9wOiAzcHg7XHJcblx0XHRmb250LWZhbWlseTogbmV4YUJvb2s7XHJcblx0XHRkaXNwbGF5OnRhYmxlO1xyXG5cdFx0Lyogd2lkdGg6MzU1cHg7ICovXHJcbn1cclxuXHJcbiN0b3BTZWFyY2hlc3tcclxuXHRcdGZvbnQtc2l6ZToxNHB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6Ym9sZDtcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdGNvbG9yOiMwMDAwMDA7XHJcbn1cclxuXHJcbiNzZWFyY2hUZXh0RGl2e1xyXG5cdFx0bGluZS1oZWlnaHQ6IDIuNWVtO1xyXG59XHJcbiNzZGl2aWRlcntcclxucGFkZGluZy10b3A6NjBweDtcclxuYm9yZGVyLWJvdHRvbToycHggc29saWQgIzAwMDAwMDtcclxufVxyXG4jbGRpdmlkZXJ7XHJcbi8qIHBhZGRpbmctdG9wOjYwcHg7ICovXHJcbmJvcmRlci1ib3R0b206MnB4IHNvbGlkICMwMDAwMDA7XHJcbndpZHRoOjEwMjBweDtcclxuei1pbmRleDogNzc3Nzc3MDtcclxufVxyXG4jbWFpbkNvbnRlbnR7XHJcblx0XHRwYWRkaW5nLXRvcDo4NXB4O1xyXG59XHJcblxyXG4jTGVmdEFkV3JhcHBlcntcclxuXHRcdHdpZHRoOjE2MHB4O1xyXG5cdFx0aGVpZ2h0OjYwMHB4O1xyXG5cdFx0XHJcbn1cclxuI3VzZWZ1bExpbmtze1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OjEuOWVtO1xyXG59XHJcblxyXG4udGVtcGVyYXR1cmV7XHJcblx0Zm9udC1zaXplOiAyMHB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRjb2xvcjojMzMzICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiNtYWlsc3tcclxuXHRcdGZvbnQtc2l6ZToyNHB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6Ym9sZDtcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5jaXR5IHtcclxuXHRmb250LXNpemU6IDE0cHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdGNvbG9yOiMzMzMgIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcbiNuZXdzVGlsZSwgI3VzV29ybGRUaWxlLCAjZW50ZXJ0YWlubWVudFRpbGUsICNzY2llbmNlVGlsZSwgI3Nwb25zb3JlZENvbnRlbnRUaWxlX21pZENvbCwgI3ZpZGVvTmV3c1RpbGUsICN2aWRlb05ld3NUaWxlQ2Fyb3VzZWx7XHJcblx0XHRwYWRkaW5nLWJvdHRvbToxMHB4O1xyXG59XHJcblxyXG4jd2VsY29tZVRpbGV7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxufVxyXG5cclxuI3dlYXRoZXIsICNtYWlsc1RpbGV7XHJcblx0XHR3aWR0aDogMzUlO1xyXG59XHJcblxyXG5cclxuI2J1dHRvbnN7XHJcblx0XHR3aWR0aDozMCU7XHJcblx0XHRtYXJnaW4tdG9wOjVweDtcclxufVxyXG5cclxuI1RvcDFBZFdyYXBwZXIsICNCb3R0b21SaWdodEFkV3JhcHBlcntcclxuXHRcdHdpZHRoOjMwMHB4O1xyXG5cdFx0aGVpZ2h0OjI1MHB4O1xyXG59XHJcbiNDdXN0b21DZW50ZXJXcmFwcGVye1xyXG5cdFx0d2lkdGg6NTI1cHg7XHJcblx0XHRoZWlnaHQ6MzI1cHg7XHJcbn1cclxuXHJcbiNCb3R0b21SaWdodEFkV3JhcHBlcntcclxuXHRcdG1hcmdpbi10b3A6NXB4O1xyXG5cdFx0bWFyZ2luLWJvdHRvbToxMHB4O1xyXG59XHJcblxyXG4jc3BvbnNvcmVkQ29udGVudF9yaWdodENvbHtcclxuXHRcdCB0ZXh0LWFsaWduOmNlbnRlcjtcclxuXHRcdCBiYWNrZ3JvdW5kLWNvbG9yOiNjY2NjY2M7XHJcblx0XHQgd2lkdGg6MzAwcHg7XHJcblx0XHQgbWluLWhlaWdodDo0MDBweDtcclxufVxyXG5cclxuXHJcbiNzcG9uc29yZWRDb250ZW50VGlsZV9yaWdodENvbHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbn1cclxuXHJcbiN3ZWF0aGVyU3BvbnNvckxvZ297XHJcblx0XHRtYXJnaW4tdG9wOiAzcHg7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuI3VwZGF0ZVdlYXRoZXJUZXh0LCAjdXNlckNvbnNlbnRUZXh0e1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG59XHJcblxyXG4jd2VhdGhlckVycm9ye1xyXG5cdFx0Zm9udC1zaXplOiAxMnB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHRjb2xvcjogcmVkO1xyXG5cdFx0d2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiN6aXBDb2Rle1xyXG5cdFx0bWFyZ2luLXRvcDogMTVweDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XHJcblx0XHRoZWlnaHQ6IDM1cHg7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRmb250LWZhbWlseTogbmV4YUJvb2s7XHJcbn1cclxuXHJcbiNzYXZlV2VhdGhlcntcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG5cclxuXHJcbiN3ZWF0aGVyQ2xvc2V7XHJcblx0XHRtYXJnaW4tdG9wOiAtMTNweDtcclxuXHRcdG1hcmdpbi1yaWdodDogLTEzcHg7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuI2NpdHlTZWFyY2hMb2dvIHtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0Y3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jY2l0eVNlYXJjaExvZ28gaW5wdXQge1xyXG5cdG1hcmdpbi10b3A6IDE1cHg7XHJcblx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHRoZWlnaHQ6IDM1cHg7XHJcblx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHR3aWR0aDogNzAlO1xyXG59XHJcblxyXG4jY2l0eVNlYXJjaExvZ28gaW1nIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0d2lkdGg6IDExJTtcclxuXHR0b3A6IDE2cHg7XHJcblx0aGVpZ2h0OiAzM3B4O1xyXG5cdG1hcmdpbi1sZWZ0OiAtMzVweDtcclxufVxyXG4jbmV3YWNjb3VudF9idXR0b257XHJcblx0Y29sb3I6ICNmZmY7XHJcbn1cclxuLyoqKioqKioqKioqKioqKioqKioqKiovXHJcbi8qKioqKioqKioqKkZvb3RlcioqKioqKioqKioqL1xyXG4uZXRfcGJfY29kZV8wIHsgbWFyZ2luLWxlZnQ6IDVweCAhaW1wb3J0YW50OyB9XHJcbi5ldF9wYl9jb2x1bW5fMjpiZWZvcmUgeyB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50O31cclxuLmV0X3BiX2NvbHVtbl8xe3dpZHRoOjMzMHB4ICFpbXBvcnRhbnQ7fSBcclxuLmV0X3BiX2NvbHVtbl8yIHsgd2lkdGg6IGF1dG87fVxyXG4uZXRfcGJfdGV4dF8wIHsgYm9yZGVyOiAxcHggYmxhY2sgc29saWQ7d2lkdGg6IDcyOHB4O2hlaWdodDogOTBweDttYXJnaW4tbGVmdDoyMHB4OyB9XHJcbi5ldF9wYl9yb3dfMSB7IHBhZGRpbmctdG9wOiAwcHggIWltcG9ydGFudDttYXJnaW4tdG9wOi0xMnB4ICFpbXBvcnRhbnQ7IH1cclxuLmV0X3BiX3Jvd18yIHtwYWRkaW5nLXRvcDo3MHB4ICFpbXBvcnRhbnQ7fVxyXG4uZXRfcGJfc2VjdGlvbl8wLmV0X3BiX3NlY3Rpb24geyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgfVxyXG4uZXRfcGJfcm93XzAgeyBwYWRkaW5nLWJvdHRvbTogMHB4ICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50OyB9XHJcbi5ldF9wYl9kaXZpZGVyXzAgeyBwb3NpdGlvbjogaW5pdGlhbDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDAwMDAwO31cclxuLmV0X3BiX2RpdmlkZXJfMDpiZWZvcmUgeyBib3JkZXItdG9wLWNvbG9yOiAjMDIwMjAyOyBib3JkZXItdG9wLXdpZHRoOiA0cHg7IH1cclxuLmV0X3BiX3NlY3Rpb25fMCB7IHBhZGRpbmctdG9wOiAxMHB4ICFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50OyB9XHJcbi5ldF9wYl9jb2x1bW4geyBmbG9hdDogbGVmdDt9XHJcbi5ldF9wYl9jb2x1bW5fNF80IHtmbG9hdDogaW5pdGlhbDt9XHJcbmZvb3RlciBhe2NvbG9yOiMwMDMzOTkgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lICFpbXBvcnRhbnQ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtZmFtaWx5Om5leGFCb29rO31cclxuZm9vdGVyIC5jb3B5cmlnaHR7Y29sb3I6IzAwMzM5OSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5Om5leGFCb29rO3BhZGRpbmctdG9wOjI3JSAhaW1wb3J0YW50O31cclxuLmZvb3Rlck5hdjF7bWFyZ2luOiAwcHggMHB4OyB3aWR0aDphdXRvO31cclxuLmZvb3Rlck5hdjJ7bWFyZ2luOjBweCA1MHB4OyB3aWR0aDphdXRvO31cclxuI0JvdHRvbUFke3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjBweCAhaW1wb3J0YW50O31cclxuI0JvdHRvbTJBZHtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowcHggIWltcG9ydGFudDt9XHJcbi8qKioqKioqKioqRm9vdGVyKioqKioqKioqKioqKi9cclxuXHJcbi8qIGE6bGluayxhOmFjdGl2ZSxhOnZpc2l0ZWQge1xyXG50ZXh0LWRlY29yYXRpb246bm9uZTtcclxuY29sb3I6IzAwNDE4MjtcclxufSAqL1xyXG5cclxuI3BhZ2Uge1xyXG50ZXh0LWFsaWduOmxlZnQ7XHJcbm1hcmdpbi1sZWZ0OmF1dG87XHJcbm1hcmdpbi1yaWdodDphdXRvO1xyXG53aWR0aDo5NjBweDtcclxufVxyXG5cclxuI2NlbnRlciB7XHJcbnRleHQtYWxpZ246bGVmdDtcclxuZmxvYXQ6bGVmdDtcclxufVxyXG5cclxuI2NlbnRlcjIge1xyXG50ZXh0LWFsaWduOmxlZnQ7XHJcbndpZHRoOjY2MHB4O1xyXG5mbG9hdDpsZWZ0O1xyXG59XHJcblxyXG4jY29sTGVmdFJlZGVzaWduIHtcclxuX21hcmdpbi10b3A6MDtcclxud2lkdGg6MzQ4cHg7XHJcbmZsb2F0OmxlZnQ7XHJcbn1cclxuXHJcbiNjb2xMZWZ0VG9wUmVkZXNpZ24ge1xyXG5fbWFyZ2luLXRvcDowO1xyXG53aWR0aDozMzhweDtcclxuZmxvYXQ6bGVmdDtcclxufVxyXG5cclxuI2NvbFJpZ2h0UmVkZXNpZ24ge1xyXG5fbWFyZ2luLXRvcDowO1xyXG53aWR0aDozMDBweDtcclxuZmxvYXQ6bGVmdDtcclxufVxyXG5cclxuI2NvbFJpZ2h0VG9wUmVkZXNpZ24ge1xyXG5fbWFyZ2luLXRvcDowO1xyXG53aWR0aDozMDBweDtcclxufVxyXG5cclxuI2NvbFJpZ2h0Qm90dG9tUmVkZXNpZ257XHJcbl9tYXJnaW4tdG9wOjA7XHJcbndpZHRoOjMwMHB4O1xyXG59XHJcbiBcclxuI2J0bSB7XHJcbnBvc2l0aW9uOnJlbGF0aXZlO1xyXG50ZXh0LWFsaWduOmxlZnQ7XHJcbndpZHRoOjk2MHB4O1xyXG59XHJcblxyXG4jZm9vdGVyIHtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbm1hcmdpbi10b3A6NTBweDtcclxufVxyXG5cclxuLnNlYXJjaCB7XHJcbm1hcmdpbi1sZWZ0OmF1dG87XHJcbm1hcmdpbi1yaWdodDphdXRvO1xyXG53aWR0aDo2NjBweDtcclxufVxyXG5cclxuZm9ybSB7XHJcbm1hcmdpbjowO1xyXG59XHJcblxyXG5pbWcge1xyXG5ib3JkZXI6MDtcclxufVxyXG5cclxuI2N1c3RvbWl6ZUhlYWRlciB7XHJcbndpZHRoOjk1NXB4O1xyXG5oZWlnaHQ6MzFweDtcclxuZm9udC1zaXplOjE2cHg7XHJcbmNvbG9yOiMwMDA7XHJcbmZvbnQtZmFtaWx5OmFyaWFsO1xyXG5mb250LXdlaWdodDo3MDA7XHJcbmZsb2F0OmxlZnQ7XHJcbmJvcmRlci1ib3R0b206MnB4IHNvbGlkICNkMmQyZDI7XHJcbmJvcmRlci1sZWZ0OjFweCBzb2xpZCAjZmZmO1xyXG5ib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNmZmY7XHJcbm1hcmdpbi1ib3R0b206MTJweDtcclxufVxyXG5cclxuI2N1c3RvbWl6ZUVycm9ycyB7XHJcbmNvbG9yOnJlZDtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbmZvbnQtc2l6ZToxNHB4O1xyXG5mb250LXdlaWdodDpib2xkO1xyXG59XHJcblxyXG4jc3ViSGVhZGVycyB7XHJcbmhlaWdodDozMXB4O1xyXG5wb3NpdGlvbjpyZWxhdGl2ZTtcclxudG9wOjFweDtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6MDtcclxufVxyXG5cclxuLmN1c3RvbWl6ZS1kb25lIHtcclxuY3Vyc29yOnBvaW50ZXI7XHJcbm1hcmdpbi1sZWZ0OjEzcHg7XHJcbnZlcnRpY2FsLWFsaWduOmJvdHRvbTtcclxufVxyXG5cclxuLnc5NiB7XHJcbndpZHRoOjk2cHg7XHJcbn1cclxuXHJcbi53MTI1IHtcclxud2lkdGg6MTI1cHg7XHJcbn1cclxuXHJcbi50YWJFbmQge1xyXG5iYWNrZ3JvdW5kOiNmZmYgbm9uZSByZXBlYXQgc2Nyb2xsIDAgMDtcclxuYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDZkNmQ2O1xyXG5ib3JkZXItdG9wOjFweCBzb2xpZCAjZDZkNmQ2O1xyXG5mbG9hdDpsZWZ0O1xyXG5oZWlnaHQ6MzJweDtcclxubWFyZ2luOjFweCAwIDA7XHJcbn1cclxuXHJcbi50YWIge1xyXG5iYWNrZ3JvdW5kOiNlOWU5ZTk7XHJcbmZvbnQ6Ym9sZCAxMnB4IEFyaWFsO1xyXG5jb2xvcjojNDQ3MmEwO1xyXG5jdXJzb3I6cG9pbnRlcjtcclxuYm9yZGVyLXRvcDoxcHggc29saWQgI2Q2ZDZkNjtcclxuYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDZkNmQ2O1xyXG5mbG9hdDpsZWZ0O1xyXG50ZXh0LWFsaWduOmNlbnRlcjtcclxuaGVpZ2h0OjMycHg7XHJcbm1hcmdpbjoxcHggMCAwO1xyXG59XHJcblxyXG4udGFiIC5hY3RpdmUge1xyXG5mb250OmJvbGQgMTJweCBBcmlhbDtcclxuY29sb3I6IzdmN2Y3ZjtcclxuYm9yZGVyLXRvcDoxcHggc29saWQgI2Q2ZDZkNjtcclxuYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDZkNmQ2O1xyXG5iYWNrZ3JvdW5kOiNmZmY7XHJcbmZsb2F0OmxlZnQ7XHJcbmhlaWdodDozMnB4O1xyXG5tYXJnaW46MXB4IDAgMDtcclxufVxyXG5cclxuLnRhYnRpdGxlIHtcclxuYm9yZGVyOjFweCBzb2xpZCAjZmZmO1xyXG5oZWlnaHQ6MjVweDtcclxuX2hlaWdodDozMHB4O1xyXG5wYWRkaW5nLXRvcDo0cHg7XHJcbmZvbnQtZmFtaWx5OmFyaWFsO1xyXG5mb250LXdlaWdodDo3MDA7XHJcbmZvbnQtc2l6ZToxM3B4O1xyXG5jb2xvcjojMDA0MTgyO1xyXG59XHJcblxyXG4uYWN0aXZlIC50YWJ0aXRsZSB7XHJcbmJhY2tncm91bmQ6I2ZmZjtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbmhlaWdodDoyOXB4O1xyXG5faGVpZ2h0OjMxcHg7XHJcbnBhZGRpbmctdG9wOjRweDtcclxuZm9udC1mYW1pbHk6YXJpYWw7XHJcbmZvbnQtd2VpZ2h0OjcwMDtcclxuZm9udC1zaXplOjEzcHg7XHJcbmNvbG9yOiM3NDc0NzQ7XHJcbn1cclxuXHJcbi5EZXNjQ29udGVudEJveCB7XHJcbmZsb2F0OmxlZnQ7XHJcbndpZHRoOjMxM3B4O1xyXG5mb250LWZhbWlseTphcmlhbDtcclxuY29sb3I6IzAwMDtcclxuZm9udC1zaXplOjEycHg7XHJcbmZvbnQtd2VpZ2h0OjQwMDtcclxufVxyXG5cclxuI0xheW91dFRhYmxlIHtcclxuZmxvYXQ6bGVmdDtcclxud2lkdGg6MzY3cHg7XHJcbnBhZGRpbmctYm90dG9tOjEwcHg7XHJcbn1cclxuXHJcbiNMYXlvdXRTdHJ1Y3R1cmUge1xyXG5mbG9hdDpsZWZ0O1xyXG53aWR0aDozNTJweDtcclxuaGVpZ2h0OjMwNHB4O1xyXG5ib3JkZXI6MXB4IHNvbGlkICNkNmQ2ZDY7XHJcbm92ZXJmbG93LXk6c2Nyb2xsO1xyXG5vdmVyZmxvdy14OmhpZGRlbjtcclxucGFkZGluZy1ib3R0b206OHB4O1xyXG59XHJcblxyXG4uaGFsZmxheW91dCB7XHJcbm1hcmdpbi10b3A6MTJweDtcclxufVxyXG5cclxuLmRyYWduZHJvcCB7XHJcbndpZHRoOjE1MHB4O1xyXG5oZWlnaHQ6NTJweDtcclxuYm9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO1xyXG59XHJcblxyXG4uZ3JhZGllbnQge1xyXG53aWR0aDoxNDlweDtcclxuaGVpZ2h0OjIwcHg7XHJcbmJvcmRlci1ib3R0b206MXB4IHNvbGlkICNkY2RjZGM7XHJcbmJhY2tncm91bmQtaW1hZ2U6dXJsKCcvc3RhdGljL3N0YXJ0L3ZpZXcvaW1nL3NwL2dyZXlncmFkaWVudC1iY2suZ2lmJyk7XHJcbmJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xyXG59XHJcblxyXG4uZ2ZvbnQge1xyXG53aWR0aDoxMjJweDtcclxuZm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxuZm9udC1zaXplOjExcHg7XHJcbmZvbnQtd2VpZ2h0OjcwMDtcclxubWFyZ2luLWxlZnQ6MTJweDtcclxucGFkZGluZy10b3A6M3B4O1xyXG5mbG9hdDpsZWZ0O1xyXG59XHJcblxyXG4jYXJyYW5nZUNvbnRlbnRDb250YWluZXIge1xyXG5mbG9hdDpsZWZ0O1xyXG53aWR0aDoxMTNweDtcclxuaGVpZ2h0OjgycHg7XHJcbmJvcmRlcjoxcHggc29saWQgI2Q2ZDZkNjtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbmZvbnQtZmFtaWx5OmFyaWFsO1xyXG5jb2xvcjojMDAwO1xyXG5mb250LXNpemU6MTJweDtcclxuZm9udC13ZWlnaHQ6NzAwO1xyXG5iYWNrZ3JvdW5kOiNmNmY2ZjY7XHJcbn1cclxuXHJcbiNCYWNrZ3JvdW5kVGFibGUge1xyXG5mbG9hdDpsZWZ0O1xyXG53aWR0aDozNTJweDtcclxucGFkZGluZy1ib3R0b206MTBweDtcclxufVxyXG5cclxuLnc5NXtcclxud2lkdGg6OTVweDtcclxufVxyXG5cclxuI0JhY2tncm91bmRTdHJ1Y3R1cmUge1xyXG5mbG9hdDpsZWZ0O1xyXG53aWR0aDozNDhweDtcclxuaGVpZ2h0OjMwNHB4O1xyXG5ib3JkZXI6MXB4IHNvbGlkICNkNmQ2ZDY7XHJcbm92ZXJmbG93LXk6c2Nyb2xsO1xyXG5vdmVyZmxvdy14OmhpZGRlbjtcclxucGFkZGluZy1ib3R0b206NHB4O1xyXG59XHJcblxyXG4jQmFja2dyb3VuZHRpbGVzQ29udGFpbmVyIHtcclxuZmxvYXQ6bGVmdDtcclxud2lkdGg6MzI3cHg7XHJcbmhlaWdodDozMDBweDtcclxucGFkZGluZzo1cHg7XHJcbn1cclxuXHJcbi50aWxlc091dGVye1xyXG5mbG9hdDpsZWZ0O1xyXG5oZWlnaHQ6NzRweDtcclxubWFyZ2luOjRweDtcclxuY3Vyc29yOnBvaW50ZXI7XHJcbmJvcmRlcjoxcHggc29saWQgI2Q2ZDZkNjtcclxufVxyXG5cclxuLnRpbGVzIHtcclxuZmxvYXQ6bGVmdDtcclxuYm9yZGVyOjJweCBzb2xpZCAjRkZGRkZGO1xyXG5oZWlnaHQ6NzBweDtcclxuX2hlaWdodDo3MnB4O1xyXG5jdXJzb3I6cG9pbnRlcjtcclxufVxyXG5cclxuLnRpbGVzT24ge1xyXG5mbG9hdDpsZWZ0O1xyXG5ib3JkZXI6MnB4IHNvbGlkICNmZjAwMDA7XHJcbn1cclxuXHJcbiNkb25lU3RydWN0dXJlIHtcclxuZmxvYXQ6cmlnaHQ7XHJcbm1hcmdpbi1ib3R0b206MTBweDtcclxucGFkZGluZy1yaWdodDoyNzBweDtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG59XHJcblxyXG4uY3VzdG9taXplY29udGVudCB7XHJcbmJvcmRlcjoxcHggc29saWQgI2Q2ZDZkNjtcclxud2lkdGg6OTU1cHg7XHJcbmZsb2F0OmxlZnQ7XHJcbn1cclxuXHJcbiNsZWZ0TmF2LWN1cnJlbnRtZW0tcmVkZXNpZ24ge1xyXG5iYWNrZ3JvdW5kOiNmZmZmZmY7XHJcbm1hcmdpbi1ib3R0b206OXB4O1xyXG53aWR0aDogMTI3cHg7XHJcbn1cclxuXHJcbiNsZWZ0TmF2LXJlZGVzaWduIHtcclxuZm9udC1zaXplOjExcHg7XHJcbnRleHQtYWxpZ246bGVmdDtcclxud2lkdGg6MTI3cHg7XHJcbm1hcmdpbi1yaWdodDoxMHB4O1xyXG5mbG9hdDpsZWZ0O1xyXG59XHJcblxyXG4jbGVmdE5hdi1yZWRlc2lnbiBoMiB7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5jb2xvcjojNjY2O1xyXG5tYXJnaW46MDtcclxufVxyXG5cclxuI2xlZnROYXYtcmVkZXNpZ24gdWwge1xyXG5saXN0LXN0eWxlOm5vbmU7XHJcbnBhZGRpbmc6MDtcclxubWFyZ2luOjA7XHJcbn1cclxuXHJcbmJvZHkuY3VzdG9tQmcgI2xlZnROYXYtcmVkZXNpZ24gdWwge1xyXG5wYWRkaW5nLWxlZnQ6M3B4O1xyXG5tYXJnaW46MCAwIDEwcHg7XHJcbn1cclxuXHJcbiNsZWZ0TmF2LXJlZGVzaWduIGxpIHtcclxubWFyZ2luLWJvdHRvbToycHg7XHJcbn1cclxuXHJcbiNsZWZ0TmF2LXJlZGVzaWduIGE6bGluaywjbGVmdE5hdi1yZWRlc2lnbiBhOmFjdGl2ZSwjbGVmdE5hdi1yZWRlc2lnbiBhOnZpc2l0ZWQge1xyXG5saW5lLWhlaWdodDoxNXB4O1xyXG50ZXh0LWRlY29yYXRpb246bm9uZTtcclxuY29sb3I6IzAwNDE4MjtcclxuZm9udC13ZWlnaHQ6NDAwO1xyXG5wYWRkaW5nOjJweCAwO1xyXG59XHJcblxyXG4jbGVmdE5hdi1yZWRlc2lnbiAubmV3IGE6bGluaywjbGVmdE5hdi1yZWRlc2lnbiAubmV3IGE6YWN0aXZlLCNsZWZ0TmF2LXJlZGVzaWduIC5uZXcgYTp2aXNpdGVkIHtcclxuZm9udC13ZWlnaHQ6NDAwO1xyXG5jb2xvcjojMDA0MTgyO1xyXG59XHJcblxyXG4jbGVmdE5hdi1yZWRlc2lnbiAubmV3IGE6aG92ZXIge1xyXG5mb250LXdlaWdodDo0MDA7XHJcbmNvbG9yOnJlZDtcclxufVxyXG5cclxuLmN1ck1lbUhlYWRpbmcge1xyXG5jb2xvcjojNjY2O1xyXG5mb250LXdlaWdodDo3MDA7XHJcbm1hcmdpbi1ib3R0b206M3B4O1xyXG5tYXJnaW4tcmlnaHQ6MDtcclxucGFkZGluZy1ib3R0b206M3B4O1xyXG5wYWRkaW5nLXRvcDogNHB4O1xyXG59XHJcblxyXG5ib2R5LmN1c3RvbUJnIC5jdXJNZW1IZWFkaW5nLCBib2R5LmN1c3RvbUJnIC50aWxlX2hlYWRpbmdfY29udGVudF9iLCBib2R5LmN1c3RvbUJnIGRpdi5mZWVkX2hlYWRsaW5lcyB1bCB7XHJcbnBhZGRpbmctbGVmdDoxMHB4O1xyXG59IFxyXG5cclxuLmN1ck1lbUxpbmtzIHtcclxuY29sb3I6Izk5OTtcclxufVxyXG5cclxuI3NlcnZpY2VzTGlua3MtYiB7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5mb250LXdlaWdodDo0MDA7XHJcbmNvbG9yOiMwMDQxODI7XHJcbnBhZGRpbmc6N3B4IDAgMHB4IDA7XHJcbmJhY2tncm91bmQ6I2ZmZmZmZjtcclxud2lkdGg6IDEyN3B4O1xyXG59XHJcblxyXG5ib2R5LmN1c3RvbUJnICNzZXJ2aWNlc0xpbmtzLWIge1xyXG5tYXJnaW4tYm90dG9tOjlweDtcclxufVxyXG5cclxuI3NlcnZpY2VzTGlua3MtYiB1bCB7XHJcbmxpc3Qtc3R5bGU6bm9uZTtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6MDtcclxufVxyXG5cclxuI3NlcnZpY2VzTGlua3MtYiBsaSB7XHJcbnRleHQtYWxpZ246Y2VudGVyO1xyXG53aGl0ZS1zcGFjZTpub3dyYXA7XHJcbmZsb2F0OmxlZnQ7XHJcbm1hcmdpbjowIDhweCA1cHggMDtcclxufVxyXG5cclxuI3NlcnZpY2VzTGlua3MtYiBsaSBhOmxpbmssI3NlcnZpY2VzTGlua3MtYiBsaSBhOmFjdGl2ZSwjc2VydmljZXNMaW5rcy1iIGxpIGE6dmlzaXRlZCB7XHJcbmNvbG9yOiMwMDQxODI7XHJcbn1cclxuXHJcbiNzZXJ2aWNlc0xpbmtzLWIgbGkgYTpob3ZlciB7XHJcbmNvbG9yOnJlZDtcclxufVxyXG5cclxuI3NlcnZpY2VzTGlua3MtYiBpbWcge1xyXG52ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XHJcbm1hcmdpbi1yaWdodDo0cHg7XHJcbn1cclxuXHJcbi5kcmFnX3JpZ2h0IHtcclxubWFyZ2luLWJvdHRvbToxMHB4O1xyXG53aWR0aDozMDBweDtcclxuYmFja2dyb3VuZDojZmZmZmZmO1xyXG59XHJcblxyXG4uZHJhZ2ZiIHtcclxud2lkdGg6MzAwcHg7XHJcbm1hcmdpbi1ib3R0b206IDEwcHg7XHJcbn1cclxuLnRpbGVfZml4IHtcclxub3ZlcmZsb3c6aGlkZGVuO1xyXG59XHJcblxyXG4jY2hlY2tpbmdNZXNzYWdlQ291bnR7XHJcbnBhZGRpbmc6NnB4IDAgNnB4IDEwcHg7XHJcbn1cclxuXHJcbiNub3RNZXNzYWdlQ291bnRJRTV7XHJcbnBhZGRpbmc6NnB4IDAgNnB4IDA7XHJcbn1cclxuXHJcbmJvZHkuY3VzdG9tQmcgLmNvbnRhaW5lckJvcmRlcntcclxuYm9yZGVyLWNvbG9yOiNlMGUwZTA7XHJcbn1cclxuXHJcbi5jb250YWluZXJCb3JkZXJ7XHJcbmJvcmRlcjoxcHggc29saWQgI0ZGRkZGRjtcclxufVxyXG5cclxuYm9keS5jdXN0b21CZyAudGlsZV9oZWFkaW5nX2Ige1xyXG5iYWNrZ3JvdW5kOiB1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC90aWxlaGVhZF9iY2tnMy5naWYpIHJlcGVhdC14OyBcclxuYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnRpbGVfaGVhZGluZ19iIHtcclxuYmFja2dyb3VuZDogI2ZmZmZmZjsgXHJcbmJvcmRlci1ib3R0b206MnB4IHNvbGlkICNjYmNiY2I7XHJcbn1cclxuXHJcbi50aWxlX2hlYWRpbmdfY29udGVudF9iIHtcclxuZm9udC1zaXplOjE0cHg7XHJcbmZvbnQtd2VpZ2h0OjcwMDtcclxuY29sb3I6IzY2NjtcclxucGFkZGluZzo0cHggMTBweCAycHggMHB4O1xyXG59XHJcblxyXG4udGlsZV9oZWFkaW5nX2NvbnRlbnRfYiBhOmxpbmssLnRpbGVfaGVhZGluZ19jb250ZW50X2IgYTphY3RpdmUsLnRpbGVfaGVhZGluZ19jb250ZW50X2IgYTp2aXNpdGVkIHtcclxuZm9udC13ZWlnaHQ6NDAwO1xyXG50ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xyXG59XHJcblxyXG4udGlsZSB1bCB7XHJcbmxpc3Qtc3R5bGU6bm9uZTtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6MnB4IDEwcHggNXB4O1xyXG59XHJcblxyXG4udGlsZSB1bCBsaSB7XHJcbmJhY2tncm91bmQ6dXJsKC9zdGF0aWMvc3RhcnQvdmlldy9pbWcvc3AvbGlzdF9kb3QuZ2lmKSBuby1yZXBlYXQgbGVmdDtcclxucGFkZGluZy1sZWZ0OjZweDtcclxufVxyXG5cclxuLnRpbGVFeHRyYSB7XHJcbmJhY2tncm91bmQtY29sb3I6I2ZiZmJmYjtcclxuYm9yZGVyLXRvcDoxcHggc29saWQgI2RjZGNkYztcclxucGFkZGluZzoxMHB4IDA7XHJcbn1cclxuXHJcbi50aWxlRXh0cmEgdWwge1xyXG53aWR0aDoxNTBweDtcclxuZmxvYXQ6bGVmdDtcclxucGFkZGluZzowO1xyXG59XHJcblxyXG4jc2xpZGVyMSB7XHJcbndpZHRoOjI5M3B4O1xyXG5vdmVyZmxvdzpoaWRkZW47XHJcbnBhZGRpbmc6NXB4IDAgMCAzcHg7XHJcbn1cclxuXHJcbiN3ZWxjb21le1xyXG5vdmVyZmxvdzpoaWRkZW47XHJcbmJvcmRlci1sZWZ0OjFweCBzb2xpZCAjY2JjYmNiO1xyXG5ib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjYmNiY2I7XHJcbmJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjYmNiY2I7XHJcbn1cclxuXHJcbiN3ZWxjb21lLXNpZ24taW4taWR7XHJcbndpZHRoOjMwMHB4O1xyXG59XHJcblxyXG4uZW1haWwtYWNjZXNzLXRleHR7XHJcbmZsb2F0OmxlZnQ7XHJcbmZvbnQ6bm9ybWFsIDEycHggYXJpYWw7XHJcbmNvbG9yOiM2NjY2NjY7XHJcbn1cclxuXHJcbiNzbGlkZXIxIC52aWV3cG9ydCB7XHJcbmZsb2F0OmxlZnQ7XHJcbndpZHRoOjI2MnB4O1xyXG5oZWlnaHQ6MzNweDtcclxub3ZlcmZsb3c6aGlkZGVuO1xyXG5wb3NpdGlvbjpyZWxhdGl2ZTtcclxufVxyXG5cclxuI3NsaWRlcjEgLmJ1dHRvbnMge1xyXG5mbG9hdDpsZWZ0O1xyXG5vdmVyZmxvdzpoaWRkZW47XHJcbnBvc2l0aW9uOnJlbGF0aXZlO1xyXG59XHJcblxyXG4jcHJldmJ1dHRvbiAuZGlzYWJsZSB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtMzI2cHg7XHJcbndpZHRoOjhweDtcclxuaGVpZ2h0OjI5cHg7XHJcbmN1cnNvcjpkZWZhdWx0O1xyXG59XHJcblxyXG4jbmV4dGJ1dHRvbiAuZGlzYWJsZSB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtNTQ5cHg7XHJcbndpZHRoOjhweDtcclxuaGVpZ2h0OjI5cHg7XHJcbmN1cnNvcjpkZWZhdWx0O1xyXG59XHJcblxyXG4jc2xpZGVyMSAub3ZlcnZpZXcge1xyXG53aWR0aDoyNzJweDtcclxubGlzdC1zdHlsZTpub25lO1xyXG5wb3NpdGlvbjphYnNvbHV0ZTtcclxubGVmdDowO1xyXG50b3A6MDtcclxuZm9udDpub3JtYWwgMTBweCBhcmlhbDtcclxuY29sb3I6IzAwNDE4MjtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6MDtcclxufVxyXG5cclxuI3NsaWRlcjEgLm92ZXJ2aWV3IGxpIHtcclxuZmxvYXQ6bGVmdDtcclxuaGVpZ2h0OjI5cHg7XHJcbnRleHQtYWxpZ246Y2VudGVyO1xyXG5wYWRkaW5nOjFweDtcclxufVxyXG5cclxuLmVtYWlsLXRleHQge1xyXG5mb250LXNpemU6MTBweDtcclxudGV4dC1hbGlnbjpyaWdodDtcclxufVxyXG5cclxuLnBhZHRvcDQge1xyXG5wYWRkaW5nLXRvcDo0cHg7XHJcbn1cclxuXHJcbi5jYXJvdXNlbC1pbWcge1xyXG53aWR0aDo4cHg7XHJcbmhlaWdodDoyOXB4O1xyXG59XHJcblxyXG4uY2Fyb3VzZWwtbG9nby1pbWcge1xyXG5wYWRkaW5nLWxlZnQ6M3B4O1xyXG5mb250LXNpemU6MTJweDtcclxud2lkdGg6NzJweDtcclxufVxyXG5cclxuLmxwYWRkaW5nOCB7XHJcbnBhZGRpbmctbGVmdDo4cHg7XHJcbn1cclxuXHJcbi5scGFkZGluZzEwIHtcclxucGFkZGluZy1sZWZ0OjEwcHg7XHJcbn1cclxuXHJcbi5scGFkZGluZzQge1xyXG5wYWRkaW5nLWxlZnQ6NHB4O1xyXG59XHJcblxyXG4ubHBhZGRpbmcxOSB7XHJcbnBhZGRpbmctbGVmdDoxOXB4O1xyXG59XHJcblxyXG4ubGVmdGFsaWduIHtcclxudGV4dC1hbGlnbjpsZWZ0O1xyXG59XHJcblxyXG4uZW1haWwtY2Fyb3VzZWwtc3ByaXRlIHtcclxuYmFja2dyb3VuZDp1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC9lbWFpbC1jYXJvdXNlbC1zcHJpdGUtdHIucG5nKSBuby1yZXBlYXQ7XHJcbn1cclxuXHJcbi5jYXJvdXNlbC1hb2wtZW1haWwge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDtcclxud2lkdGg6MTVweDtcclxuaGVpZ2h0OjE3cHg7XHJcbm1hcmdpbjowIDAgMCAxNnB4O1xyXG59XHJcblxyXG4uY2Fyb3VzZWwtYmwtZW1haWwge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTY3cHg7XHJcbndpZHRoOjE1cHg7XHJcbmhlaWdodDoxNXB4O1xyXG59XHJcblxyXG4uY2Fyb3VzZWwtZ21haWwge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTEzMnB4O1xyXG53aWR0aDoxOHB4O1xyXG5oZWlnaHQ6MTNweDtcclxubWFyZ2luOjAgMCAwIDRweDtcclxufVxyXG5cclxuLmNhcm91c2VsLWhvdG1haWwge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE5NXB4O1xyXG53aWR0aDoyNXB4O1xyXG5oZWlnaHQ6MTZweDtcclxubWFyZ2luOjJweCAwIDAgNXB4O1xyXG59XHJcblxyXG4uY2Fyb3VzZWwtanVuby1lbWFpbCB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtMjYxcHg7XHJcbndpZHRoOjE1cHg7XHJcbmhlaWdodDoxNXB4O1xyXG59XHJcblxyXG4uY2Fyb3VzZWwtbGVmdC1hcnJvdy1kaXNhYmxlZCB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtMzI2cHg7XHJcbndpZHRoOjhweDtcclxuaGVpZ2h0OjI5cHg7XHJcbn1cclxuXHJcbi5jYXJvdXNlbC1sZWZ0LWFycm93LWVuYWJsZWQge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTQwNXB4O1xyXG53aWR0aDo4cHg7XHJcbmhlaWdodDoyOXB4O1xyXG59XHJcblxyXG4uY2Fyb3VzZWwtbnotZW1haWwge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTQ4NHB4O1xyXG53aWR0aDoxNXB4O1xyXG5oZWlnaHQ6MTVweDtcclxudmVydGljYWwtYWxpZ246bWlkZGxlO1xyXG5tYXJnaW46MCAwIDNweCA1cHg7XHJcbn1cclxuXHJcbi5jYXJvdXNlbC1yaWdodC1hcnJvdy1kaXNhYmxlZCB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtNTQ5cHg7XHJcbndpZHRoOjhweDtcclxuaGVpZ2h0OjI5cHg7XHJcbn1cclxuXHJcbi5jYXJvdXNlbC1yaWdodC1hcnJvdy1lbmFibGVkIHtcclxuYmFja2dyb3VuZC1wb3NpdGlvbjowIC02MjhweDtcclxud2lkdGg6OHB4O1xyXG5oZWlnaHQ6MjlweDtcclxufVxyXG5cclxuLmNhcm91c2VsLXlhaG9vLWVtYWlsIHtcclxuYmFja2dyb3VuZC1wb3NpdGlvbjowIC03MDdweDtcclxud2lkdGg6MjRweDtcclxuaGVpZ2h0OjE0cHg7XHJcbm1hcmdpbjowIDAgM3B4IDRweDtcclxufVxyXG5cclxuI3RpbGVIZWFkTmV3cyBkZCBpbWcge1xyXG5tYXJnaW4tbGVmdDowO1xyXG59XHJcblxyXG4jdGlsZUhlYWROZXdzIGR0IHtcclxucGFkZGluZy1yaWdodDo0cHg7XHJcbn1cclxuXHJcbi5xdW90ZXNTbWFsbCB7XHJcbmZvbnQtc2l6ZTo5cHg7XHJcbn1cclxuXHJcbiN0cmFuc0JhY2sge1xyXG5wb3NpdGlvbjphYnNvbHV0ZTtcclxubGVmdDowO1xyXG50b3A6MDtcclxuei1pbmRleDo5OTk7XHJcbndpZHRoOjElO1xyXG5oZWlnaHQ6MDtcclxucGFkZGluZzoxMHB4O1xyXG5maWx0ZXI6YWxwaGEob3BhY2l0eT01MCk7XHJcbi1tb3otb3BhY2l0eTouNTA7XHJcbm9wYWNpdHk6LjUwO1xyXG50ZXh0LWFsaWduOmNlbnRlcjtcclxuYmFja2dyb3VuZC1jb2xvcjojMmY1ZGFhO1xyXG52aXNpYmlsaXR5OmhpZGRlbjtcclxucGFkZGluZzoxMHB4O1xyXG59XHJcblxyXG4jcG9wTCB7XHJcbnBvc2l0aW9uOmFic29sdXRlO1xyXG5sZWZ0OjE1MHB4O1xyXG50b3A6NzVweDtcclxuei1pbmRleDoxMDAwO1xyXG5ib3JkZXI6NXB4IHNvbGlkICMyZjVkYWE7XHJcbmJhY2tncm91bmQtY29sb3I6IzJmNWRhYTtcclxuZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbnZpc2liaWxpdHk6aGlkZGVuO1xyXG5wYWRkaW5nOjA7XHJcbn1cclxuXHJcbiNwb3BMIGEuY2xvc2U6bGluayxhLmNsb3NlOnZpc2l0ZWQge1xyXG5mbG9hdDpyaWdodDtcclxuZm9udC1zaXplOjExcHg7XHJcbmZvbnQtd2VpZ2h0OjkwMDtcclxudGV4dC1hbGlnbjpjZW50ZXI7XHJcbmNvbG9yOiNmZmY7XHJcbmJhY2tncm91bmQtY29sb3I6IzJmNWRhYTtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6NXB4O1xyXG59XHJcblxyXG4jcG9wTCBhLmNsb3NlOmhvdmVyLGEuY2xvc2U6YWN0aXZlIHtcclxuY29sb3I6I2ZmZjtcclxufVxyXG5cclxuI3BvcEwgYTpsaW5rLCNwb3BMIGE6YWN0aXZlLCNwb3BMIGE6dmlzaXRlZCwjcG9wTCBhOmhvdmVyIHtcclxuZGlzcGxheTpibG9jaztcclxuZmxvYXQ6cmlnaHQ7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5mb250LXdlaWdodDo3MDA7XHJcbnRleHQtYWxpZ246Y2VudGVyO1xyXG5jb2xvcjojZmZmO1xyXG5wYWRkaW5nOjVweDtcclxufVxyXG5cclxuZGl2LmZlZWRfaGVhZGxpbmVzIHVsIHtcclxubGlzdC1zdHlsZTpub25lO1xyXG5jb2xvcjojMDAwO1xyXG5tYXJnaW46MDtcclxucGFkZGluZzo1cHggMTBweCA1cHggMDtcclxufVxyXG5cclxuZGl2LmZlZWRfaGVhZGxpbmVzIHVsIGxpIHtcclxuYmFja2dyb3VuZDp1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC9mZWVkLXNxdWFyZS5naWYpIG5vLXJlcGVhdCBsZWZ0O1xyXG5wYWRkaW5nLWxlZnQ6NnB4O1xyXG5jb2xvcjojMDAzZDdhO1xyXG59XHJcblxyXG5kaXYuZmVlZF9oZWFkbGluZXMgdWwgbGkgYTpsaW5rLGE6YWN0aXZlLGE6dmlzaXRlZCB7XHJcbnRleHQtZGVjb3JhdGlvbjpub25lO1xyXG5jb2xvcjojMDA0MTgyO1xyXG59XHJcblxyXG5kaXYuZmVlZF9oZWFkbGluZXMgdWwgbGkgYTpob3ZlciB7XHJcbnRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XHJcbmNvbG9yOnJlZDtcclxufVxyXG5cclxuZGl2LmZlZWRfZm9vdGVyIHtcclxud2lkdGg6MTAwJTtcclxubWFyZ2luOjA7XHJcbn1cclxuXHJcbmRpdi5mZWVkX2Zvb3Rlcl9sZWZ0IHtcclxuZmxvYXQ6bGVmdDtcclxuZm9udC1zaXplOjExcHg7XHJcbmZvbnQtd2VpZ2h0OjcwMDtcclxucGFkZGluZzoycHggMjFweCAwIDZweDtcclxufVxyXG5cclxuZGl2LmZlZWRfZm9vdGVyX3JpZ2h0IHtcclxuZmxvYXQ6cmlnaHQ7XHJcbmZvbnQtc2l6ZTo5cHg7XHJcbnBhZGRpbmc6MnB4IDAgMCAwcHg7XHJcbn1cclxuXHJcbiNsaXN0MSwjbGlzdDIge1xyXG5saXN0LXN0eWxlLXR5cGU6bm9uZTtcclxuZmxvYXQ6bGVmdDtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6MCAwIDAgMTJweDtcclxuei1pbmRleDoxMDAwO1xyXG5wb3NpdGlvbjpyZWxhdGl2ZTtcclxufVxyXG5cclxuLnBsYWNlSG9sZGVyIHtcclxuYmFja2dyb3VuZC1jb2xvcjojRkZGIWltcG9ydGFudDtcclxuYm9yZGVyOjFweCBkYXNoZWQgZ3JheSFpbXBvcnRhbnQ7XHJcbndpZHRoOjE1MHB4O1xyXG5oZWlnaHQ6NTJweDtcclxuX21hcmdpbi10b3A6MTJweDtcclxuX2Rpc3BsYXk6aW5saW5lO1xyXG4qbWFyZ2luLXRvcDoxMnB4O1xyXG4qZGlzcGxheTppbmxpbmU7XHJcbn1cclxuXHJcbi5zZWxCZyB7XHJcbmJvcmRlcjoxcHggc29saWQgcmVkO1xyXG53aWR0aDoxNTBweDtcclxuaGVpZ2h0OjUycHg7XHJcbn1cclxuXHJcbi5hcnJvd0RpdiB7XHJcbmN1cnNvcjpwb2ludGVyO1xyXG5mbG9hdDpsZWZ0O1xyXG5wYWRkaW5nLWxlZnQ6MTZweDtcclxuZm9udC13ZWlnaHQ6bm9ybWFsO1xyXG59XHJcblxyXG4uc3ByaXRlQXJyb3cge1xyXG5iYWNrZ3JvdW5kLWltYWdlOnVybCgnL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC9hcnJvd3Mtc3ByaXRlcy5wbmcnKTtcclxufVxyXG5cclxuLmVuYWJsZUFycm93IC5kb3duQXJyb3cge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTU5cHg7XHJcbndpZHRoOjEzcHg7XHJcbmhlaWdodDo5cHg7XHJcbn1cclxuXHJcbi5lbmFibGVBcnJvdyAudXBBcnJvdyB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtMTc3cHg7XHJcbndpZHRoOjEzcHg7XHJcbmhlaWdodDo5cHg7XHJcbn1cclxuXHJcbi5kaXNhYmxlQXJyb3cgLmRvd25BcnJvdyB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAwO1xyXG53aWR0aDoxM3B4O1xyXG5oZWlnaHQ6OXB4O1xyXG59XHJcblxyXG4uZGlzYWJsZUFycm93IC51cEFycm93IHtcclxuYmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMThweDtcclxud2lkdGg6MTNweDtcclxuaGVpZ2h0OjlweDtcclxufVxyXG5cclxuLmRpc2FibGVBcnJvdyB7XHJcbmNvbG9yOiNhY2FjYWM7XHJcbn1cclxuXHJcbi5lbmFibGVBcnJvdyB7XHJcbmNvbG9yOiMwMDA7XHJcbn1cclxuXHJcbi5zdWJIZWFkZXJUb3BJbmRlbnQge1xyXG5mbG9hdDpsZWZ0O1xyXG5oZWlnaHQ6MjRweDtcclxud2lkdGg6OTUzcHg7XHJcbn1cclxuXHJcbi5zdWJIZWFkZXJMZWZ0SW5kZW50IHtcclxuZmxvYXQ6bGVmdDtcclxuaGVpZ2h0OjEwMHB4O1xyXG53aWR0aDoxOHB4O1xyXG59XHJcblxyXG4uRGVzY0NvbnRlbnQge1xyXG5mbG9hdDpsZWZ0O1xyXG53aWR0aDoyNjVweDtcclxufVxyXG5cclxuLmltZy1kaXJlY3Rpb24ge1xyXG5tYXJnaW4tcmlnaHQ6NnB4O1xyXG5tYXJnaW4tdG9wOjRweDtcclxuZmxvYXQ6cmlnaHQ7XHJcbn1cclxuXHJcbi50aWxlLWNvbnRlbnQge1xyXG53aWR0aDoxMjhweDtcclxubWFyZ2luLWxlZnQ6OXB4O1xyXG59XHJcblxyXG4uaG9yaXpvbnRhbC1vbmUge1xyXG5ib3JkZXI6MXB4IHNvbGlkICNmNWY1ZjU7XHJcbnBvc2l0aW9uOnJlbGF0aXZlO1xyXG50b3A6M3B4O1xyXG59XHJcblxyXG4uaG9yaXpvbnRhbC10d28tSUUge1xyXG5ib3JkZXI6MXB4IHNvbGlkICNmNWY1ZjU7XHJcbmZsb2F0OmxlZnQ7XHJcbnBvc2l0aW9uOnJlbGF0aXZlO1xyXG50b3A6NXB4O1xyXG59XHJcblxyXG4uaG9yaXpvbnRhbC10d28ge1xyXG5ib3JkZXI6MXB4IHNvbGlkICNmNWY1ZjU7XHJcbnBvc2l0aW9uOnJlbGF0aXZlO1xyXG50b3A6NXB4O1xyXG59XHJcblxyXG4udG1hcmdpbjMge1xyXG5tYXJnaW4tdG9wOjNweDtcclxufVxyXG5cclxuLnRtYXJnaW4yIHtcclxubWFyZ2luLXRvcDoycHg7XHJcbn1cclxuXHJcbi50cGFkZGluZzgge1xyXG5wYWRkaW5nLXRvcDo4cHg7XHJcbn1cclxuXHJcbi5icGFkZGluZzgge1xyXG5wYWRkaW5nLWJvdHRvbTo4cHg7XHJcbn1cclxuXHJcbi5jdXN0b21pemUtbGluayB7XHJcbnRleHQtZGVjb3JhdGlvbjpub25lO1xyXG5jdXJzb3I6cG9pbnRlcjtcclxuZm9udC1mYW1pbHk6YXJpYWw7XHJcbmNvbG9yOiMwMDQxODI7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG59XHJcblxyXG4ubG1hcmdpbjIge1xyXG5tYXJnaW4tbGVmdDoycHg7XHJcbn1cclxuXHJcbiNkaXNwY29udGVudCB7XHJcbmRpc3BsYXk6bm9uZTtcclxudGV4dC1hbGlnbjpsZWZ0O1xyXG5wb3NpdGlvbjphYnNvbHV0ZTtcclxud2lkdGg6OTBweDtcclxuYm9yZGVyOjFweCBzb2xpZCAjZTBlMGUwO1xyXG5iYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7XHJcbm1hcmdpbi10b3A6NnB4O1xyXG5ib3gtc2hhZG93OiAzcHggM3B4IDNweCAjZTBlMGUwO1xyXG4td2Via2l0LWJveC1zaGFkb3c6IDNweCAzcHggM3B4ICNlMGUwZTA7XHJcbi1tb3otYm94LXNoYWRvdzogM3B4IDNweCAzcHggI2UwZTBlMDtcclxufVxyXG5cclxuI3VsLXN0eWxlcyB7XHJcbmxpc3Qtc3R5bGUtdHlwZTpub25lO1xyXG5kaXNwbGF5OmluaGVyaXQ7XHJcbmN1cnNvcjpwb2ludGVyO1xyXG5tYXJnaW46MDtcclxucGFkZGluZzowO1xyXG59XHJcblxyXG4uY3VzdG9tTEkge1xyXG5oZWlnaHQ6MjRweDtcclxufVxyXG5cclxuI3dlYXRoZXItYXJlYSB7XHJcbmZsb2F0OmxlZnQ7XHJcbnBhZGRpbmctdG9wOjNweDtcclxucGFkZGluZy1sZWZ0OjEwcHg7XHJcbmRpc3BsYXk6bm9uZTtcclxufVxyXG5cclxuI2NhbmNlbGVkaXRXZWF0aGVyIHtcclxudGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG59XHJcblxyXG4jYWNjdXdlYXRoZXIge1xyXG5mb250LXNpemU6MTBweDtcclxuY29sb3I6IzAwMDAwMDtcclxuaGVpZ2h0OjE4cHg7XHJcbndpZHRoOjE1MHB4O1xyXG5ib3JkZXI6MXB4IHNvbGlkICNkMWQxZDE7XHJcbl9wYWRkaW5nLXRvcDoycHg7XHJcbn1cclxuXHJcbiN3ZWF0aGVyZHJvcGRvd24tY2xvc2Uge1xyXG5mb250LXNpemU6MTFweDtcclxuZm9udC13ZWlnaHQ6NzAwO1xyXG5jb2xvcjojOWY5ZjlmO1xyXG5wYWRkaW5nLWxlZnQ6MnB4O1xyXG5wYWRkaW5nLXJpZ2h0OjJweDtcclxufVxyXG5cclxuI3dlYXRoZXJPcHRpb25zIHtcclxud2lkdGg6MjcwcHg7XHJcbmJvcmRlcjoxcHggc29saWQgI2QxZDFkMTtcclxuYmFja2dyb3VuZC1jb2xvcjojZmZmO1xyXG5wb3NpdGlvbjphYnNvbHV0ZTtcclxuZGlzcGxheTpub25lO1xyXG56LWluZGV4Ojc3Nzc3NzE7XHJcbnRvcDoyNXB4O1xyXG59XHJcblxyXG4jd2VhdGhlcnJlc3VsdHMge1xyXG53aWR0aDoyNTFweDtcclxubWFyZ2luOjAgOXB4IDlweCAxMHB4O1xyXG59XHJcblxyXG4udHBhZGRpbmcxNSB7XHJcbnBhZGRpbmctdG9wOjE1cHg7XHJcbn1cclxuXHJcbi5kcm9wZG93bi1jbG9zZSB7XHJcbmZsb2F0OnJpZ2h0O1xyXG5tYXJnaW4tdG9wOjRweDtcclxubWFyZ2luLXJpZ2h0OjJweDtcclxufVxyXG5cclxuI2Ryb3Bkb3duLW1hdGNoZXMge1xyXG5mb250LWZhbWlseTphcmlhbDtcclxuZm9udC1zaXplOjEzcHg7XHJcbmZvbnQtd2VpZ2h0OjcwMDtcclxucGFkZGluZy10b3A6MTBweDtcclxufVxyXG5cclxuI2Ryb3Bkb3duLXNlbGVjdC1jaXR5IHtcclxuZm9udC1mYW1pbHk6YXJpYWw7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5tYXJnaW4tdG9wOjEycHg7XHJcbn1cclxuXHJcbi5ycGFkZGluZzcge1xyXG5wYWRkaW5nLXJpZ2h0OjdweDtcclxufVxyXG5cclxuI3dlYXRoZXJWYWx1ZXMge1xyXG5mb250LWZhbWlseTphcmlhbDtcclxuZm9udC1zaXplOjEycHg7XHJcbmNvbG9yOiMwMDQxODI7XHJcbmN1cnNvcjpwb2ludGVyO1xyXG5vdmVyZmxvdy15OmF1dG87XHJcbmJvcmRlcjoxcHggc29saWQgI2QxZDFkMTtcclxuaGVpZ2h0OjE2NnB4O1xyXG53aWR0aDoyNDlweDtcclxufVxyXG5cclxuI3dlYXRoZXJWYWx1ZXMgZGl2IHtcclxuaGVpZ2h0OjE0cHg7XHJcbmJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjZDFkMWQxO1xyXG5wYWRkaW5nOjRweCA3cHg7XHJcbn1cclxuXHJcbi5zcHJpdGUtZG9uZS1idG4tbGF5b3V0e1xyXG5iYWNrZ3JvdW5kOiB1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC9kb25lLWdvLXNwcml0ZS5wbmcpIG5vLXJlcGVhdCB0b3AgbGVmdDtcclxuYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xyXG53aWR0aDo4N3B4O1xyXG5oZWlnaHQ6MThweDtcclxuY3Vyc29yOnBvaW50ZXI7XHJcbn0gXHJcblxyXG4uc3ByaXRlLXdlYXRoZXItZ297XHJcbmJhY2tncm91bmQ6IHVybCgvc3RhdGljL3N0YXJ0L3ZpZXcvaW1nL3NwL2RvbmUtZ28tc3ByaXRlLnBuZykgbm8tcmVwZWF0IHRvcCBsZWZ0O1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTY4cHg7XHJcbndpZHRoOiA0MHB4O1xyXG5oZWlnaHQ6MjBweDtcclxuY3Vyc29yOnBvaW50ZXI7XHJcbn1cclxuXHJcbi50cGFkZGluZzMge1xyXG5wYWRkaW5nLXRvcDozcHg7XHJcbn1cclxuXHJcbi5sbWFyZ2luOCB7XHJcbm1hcmdpbi1sZWZ0OjhweDtcclxufVxyXG5cclxuLndlYXRoZXItdGVtcCB7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5jb2xvcjojMDAwO1xyXG5tYXJnaW4tbGVmdDozcHg7XHJcbm1hcmdpbi1yaWdodDozcHg7XHJcbn1cclxuXHJcbi5lZGl0LWZvbnQge1xyXG50ZXh0LWRlY29yYXRpb246bm9uZTtcclxuZm9udC1zaXplOjExcHg7XHJcbm1hcmdpbi1sZWZ0OjZweDtcclxubWFyZ2luLXJpZ2h0OjZweDtcclxuY29sb3I6IzAwNDE4MjtcclxufVxyXG5cclxuLmZjb2xvci1lZGl0IHtcclxuZm9udC1zaXplOjExcHg7XHJcbmNvbG9yOiNjYmNiY2I7XHJcbn1cclxuXHJcbi53ZWF0aGVyLWltYWdlIHtcclxubWFyZ2luLXRvcDo4cHg7XHJcbm1hcmdpbi1sZWZ0OjVweDtcclxubWFyZ2luLXJpZ2h0OjhweDtcclxufVxyXG5cclxuI3NpZ25pbm91dCB7XHJcbmZsb2F0OmxlZnQ7XHJcbmJvcmRlci1yaWdodDoxcHggc29saWQgI2UwZTBlMDtcclxucGFkZGluZy10b3A6OHB4O1xyXG5wYWRkaW5nLWJvdHRvbTo3cHg7XHJcbn1cclxuXHJcbi53ZWxjb21lbm90ZSB7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5jb2xvcjojNjY2O1xyXG5wYWRkaW5nLXJpZ2h0OjhweDtcclxuYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZTBlMGUwO1xyXG59XHJcblxyXG4ucm1hcmdpbjgge1xyXG5tYXJnaW4tcmlnaHQ6OHB4O1xyXG59XHJcblxyXG4ubG1hcmdpbjYge1xyXG5tYXJnaW4tbGVmdDo2cHg7XHJcbn1cclxuXHJcbi5mb250LWJvbGQge1xyXG5mb250LXNpemU6MTFweDtcclxuZm9udC13ZWlnaHQ6NzAwO1xyXG59XHJcblxyXG4ubG9nb3V0LWNhc2Uge1xyXG5oZWlnaHQ6NzRweDtcclxuYmFja2dyb3VuZC1pbWFnZTp1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC9ncmFkaWVudC1zb3V0LmdpZik7XHJcbmJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjM2MzYzM7XHJcbmJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xyXG59XHJcblxyXG5cclxuI3NpZ25vdXQtY29udGVudCB7XHJcbndpZHRoOjUyNXB4O1xyXG5mb250LXdlaWdodDo3MDA7XHJcbmNvbG9yOiMwMDA7XHJcbmZvbnQtc2l6ZToyMnB4O1xyXG5mbG9hdDpsZWZ0O1xyXG59XHJcblxyXG4jc2lnbmluLXBsZWFzZSB7XHJcbndpZHRoOjUyNXB4O1xyXG5jb2xvcjojNjY2O1xyXG5mb250LXNpemU6MjBweDtcclxuZm9udC13ZWlnaHQ6NDAwO1xyXG5mbG9hdDpsZWZ0O1xyXG59XHJcblxyXG4uc2lnbmluLWFycm93IHtcclxuZmxvYXQ6bGVmdDtcclxud2lkdGg6NDM0cHg7XHJcbn1cclxuXHJcbi5zaWduaW4tbXNnIHtcclxuZmxvYXQ6bGVmdDtcclxud2lkdGg6OTYwcHg7XHJcbnBhZGRpbmc6NXB4IDAgMCAwcHg7XHJcbn1cclxuXHJcbi5zaWduaW4tbXNnSW57XHJcbmZsb2F0OmxlZnQ7XHJcbndpZHRoOjUyNXB4O1xyXG59XHJcblxyXG4jbG9naW4tb3ZlcmxheSB7XHJcbnBvc2l0aW9uOmFic29sdXRlO1xyXG5kaXNwbGF5Om5vbmU7XHJcbndpZHRoOjI0NXB4O1xyXG5ib3JkZXI6MXB4IHNvbGlkICM5MDkwOTA7XHJcbmJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xyXG56LWluZGV4OjEwNTI7XHJcbn1cclxuXHJcbi5ycGFkZGluZzMge1xyXG5wYWRkaW5nLXJpZ2h0OjNweDtcclxufVxyXG5cclxuLmRlY29yYXRlTm9uZSB7XHJcbnRleHQtZGVjb3JhdGlvbjpub25lO1xyXG59XHJcblxyXG4ucm1hcmdpbjEwIHtcclxubWFyZ2luLXJpZ2h0OjEwcHg7XHJcbn1cclxuXHJcbi5zaWduaW4tdGV4dCB7XHJcbmZvbnQtZmFtaWx5OkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcbmZvbnQtd2VpZ2h0OjQwMDtcclxuZm9udC1zaXplOjExcHg7XHJcbmNvbG9yOiMwMDA7XHJcbmZsb2F0OmxlZnQ7XHJcbnZlcnRpY2FsLWFsaWduOmJvdHRvbTtcclxucGFkZGluZy10b3A6M3B4O1xyXG59XHJcblxyXG5hLmZvcmdvdCB7XHJcbmZvbnQtZmFtaWx5OkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcbmZvbnQtc2l6ZToxMXB4O1xyXG5jb2xvcjojMDA0MTgyO1xyXG50ZXh0LWRlY29yYXRpb246bm9uZTtcclxufVxyXG5cclxuI2ZvcmdvdC1wYXNzd29yZCB7XHJcbndpZHRoOjE3M3B4O1xyXG5oZWlnaHQ6MjBweDtcclxuZmxvYXQ6bGVmdDtcclxufVxyXG5cclxuI2xvZ2luLWltYWdlIHtcclxud2lkdGg6NDBweDtcclxuaGVpZ2h0OjIwcHg7XHJcbmZsb2F0OmxlZnQ7XHJcbnRleHQtYWxpZ246cmlnaHQ7XHJcbn1cclxuXHJcbi5mTGVmdCB7XHJcbmZsb2F0OmxlZnQ7XHJcbn1cclxuXHJcbi5tbDEwIHtcclxubWFyZ2luLWxlZnQ6MTBweDtcclxufVxyXG5cclxuLnRpcHNPdmVybGF5IHtcclxuZmlsdGVyOmFscGhhKG9wYWNpdHk9Nik7XHJcbmJhY2tncm91bmQtY29sb3I6IzAwMDAwMDtcclxucG9zaXRpb246Zml4ZWQ7XHJcbnotaW5kZXg6Nzc3Nzc3MTtcclxuX3Bvc2l0aW9uOmFic29sdXRlO1xyXG5vcGFjaXR5OjAuMjtcclxuZGlzcGxheTpub25lO1xyXG50b3A6MDtcclxubGVmdDowO1xyXG5mb250LXNpemU6MDtcclxubGluZS1oZWlnaHQ6MDtcclxub3ZlcmZsb3c6YXV0bztcclxufVxyXG5cclxuI3RpcHNIaWdobGlnaHQge1xyXG5maWx0ZXI6YWxwaGEob3BhY2l0eT0wKTtcclxub3BhY2l0eTowO1xyXG5iYWNrZ3JvdW5kLWNvbG9yOiNmZmY7XHJcbnBvc2l0aW9uOmFic29sdXRlO1xyXG56LWluZGV4Ojc3Nzc3NzUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnRpcHNIaWdobGl0ZUJnIHtcclxuICAgIGJhY2tncm91bmQ6IG5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgI0ZDRkNGQztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDc3Nzc3NzQgIWltcG9ydGFudDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7XHJcblx0LW1vei1ib3JkZXItcmFkaXVzOjNweDtcclxuXHRib3JkZXItcmFkaXVzOjNweDtcclxufVxyXG5cclxuI3RpcHNUaGVhdGVyIHtcclxuei1pbmRleDo3Nzc3Nzk4O1xyXG5wb3NpdGlvbjphYnNvbHV0ZTtcclxuZGlzcGxheTpub25lO1xyXG59XHJcblxyXG4jdGlwc0NvbnRhaW5lciB7XHJcbmJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XHJcbn1cclxuXHJcbi50aXBzQ29udGFpbmVyIHtcclxuZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtcclxub3BhY2l0eToxO1xyXG5ib3JkZXI6MnB4IHNvbGlkICNhOWE5YTk7XHJcbndpZHRoOjM1NHB4O1xyXG5mbG9hdDpsZWZ0O1xyXG5iYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7XHJcbmJhY2tncm91bmQtY29sb3I6I2ZmZmZmZTtcclxucG9zaXRpb246YWJzb2x1dGU7XHJcbn1cclxuXHJcbiN0aXBzTGlzdCB7XHJcbm1hcmdpbjowO1xyXG59XHJcblxyXG4jdGlwc0J1bGxldHMge1xyXG5tYXJnaW46MDtcclxucGFkZGluZzoxMHB4O1xyXG59XHJcblxyXG4udGlwcy10b3BTZWN0aW9uIHtcclxucGFkZGluZzogMTBweDtcclxuYmFja2dyb3VuZDogI2Y3ZjdmNztcclxuaGVpZ2h0OiAzNXB4O1xyXG5ib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcclxufVxyXG5cclxuLnBhZHRvcDI2e1xyXG5wYWRkaW5nLXRvcDoyNnB4O1xyXG59XHJcblxyXG4uY2xvc2VPdmVyTGF5IHtcclxuY29sb3I6IzAwNDE4MjtcclxudGV4dC1kZWNvcmF0aW9uOm5vbmU7XHJcbn1cclxuXHJcbi5jbG9zZVR4dCB7XHJcbmZvbnQ6Ym9sZCAxMnB4IEFyaWFsO1xyXG5jb2xvcjojMDA0MTgyO1xyXG5tYXJnaW46M3B4IDJweCAwIDA7XHJcbn1cclxuXHJcbi5jbG9zZUljb24ge1xyXG5tYXJnaW4tdG9wOi00cHg7XHJcbn1cclxuXHJcbi5zcFRpcHMtY2xvc2VJY29uLCAjd2VhdGhlckNsb3NlIHtcclxuZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbmZvbnQtc2l6ZTogMjRweDtcclxuY29sb3I6ICM1NTU7XHJcbmZvbnQtZmFtaWx5OiBuZXhhQm9sZDtcclxucGFkZGluZzogMHB4IDVweDtcclxuYm9yZGVyOiAxcHggc29saWQgIzU1NTtcclxuYm9yZGVyLXJhZGl1czogM3B4O1xyXG5saW5lLWhlaWdodDogMC45ZW07XHJcbn1cclxuXHJcbi5zcFRpcHMtY2xvc2VJY29uOmhvdmVyLCAjd2VhdGhlckNsb3NlOmhvdmVyIHtcclxuZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbmZvbnQtc2l6ZTogMjRweDtcclxuY29sb3I6ICNmZmY7XHJcbmZvbnQtZmFtaWx5OiBuZXhhQm9sZDtcclxucGFkZGluZzogMHB4IDVweDtcclxuYm9yZGVyOiAxcHggc29saWQgI0ZGMzMwMDtcclxuYm9yZGVyLXJhZGl1czogM3B4O1xyXG5iYWNrZ3JvdW5kLWNvbG9yOiAjRkYzMzAwO1xyXG5saW5lLWhlaWdodDogMC45ZW07XHJcbn1cclxuXHJcbi50aXBzLWNvbnRlbnQtdGl0bGUge1xyXG5mb250LXNpemU6MTJweDtcclxuZm9udC13ZWlnaHQ6NzAwO1xyXG50ZXh0LWFsaWduOmxlZnQ7XHJcbmZvbnQtZmFtaWx5OiBuZXhhQm9sZDtcclxuY29sb3I6ICM1NTUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnRpcHMtY29udGVudC10aXRsZTEge1xyXG5mb250LXNpemU6MTRweDtcclxuZm9udC13ZWlnaHQ6NzAwO1xyXG59XHJcblxyXG4udGlwcy1jb250ZW50LWJvZHkge1xyXG5mb250LXNpemU6MTJweDtcclxucGFkZGluZy10b3A6MTNweDtcclxudGV4dC1hbGlnbjpsZWZ0O1xyXG5mb250LWZhbWlseTogbmV4YUJvb2s7XHJcbmNvbG9yOiAjNTU1ICFpbXBvcnRhbnQ7XHJcbnBhZGRpbmctYm90dG9tOiAxM3B4O1xyXG59XHJcblxyXG4udGlwcy1jb250ZW50LWJvZHkxIHtcclxuZm9udC1zaXplOjEycHg7XHJcbn1cclxuXHJcbi50aXBzRm9vdGVyIHtcclxuaGVpZ2h0OjI5cHg7XHJcbn1cclxuXHJcbi5zcFRpcHMge1xyXG4gLyogYmFja2dyb3VuZDp1cmwoXCIvc3RhdGljL3N0YXJ0L3ZpZXcvaW1nL3NwL3Rvb2wtdGlwcy9zcC10b29sdGlwcy1zcHJpdGUucG5nXCIpIG5vLXJlcGVhdDsgKi9cclxuYmFja2dyb3VuZC1wb3NpdGlvbjowIC0zMzVweDtcclxud2lkdGg6MXB4O1xyXG5oZWlnaHQ6MjZweDtcclxufVxyXG5cclxuLnNwVGlwcy1hY3RpdmVCdWxsZXRUaXAge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTEzMXB4O1xyXG5mb250LXNpemU6OHB4O1xyXG5oZWlnaHQ6MTBweDtcclxud2lkdGg6MTBweDtcclxufVxyXG5cclxuLnNwVGlwcy1pbkFjdGl2ZUJ1bGxldFRpcCB7XHJcbmJhY2tncm91bmQtcG9zaXRpb246MCAtNzFweDtcclxuZm9udC1zaXplOjhweDtcclxuaGVpZ2h0OjEwcHg7XHJcbndpZHRoOjEwcHg7XHJcbn1cclxuXHJcbi5zcFRpcHMtbmV4dFRpcCB7XHJcbm1hcmdpbi1yaWdodDogMTBweDtcclxucGFkZGluZzogNXB4O1xyXG5wYWRkaW5nOiA1cHggMTVweDtcclxuYm9yZGVyOiAxcHggc29saWQgIzAwMzM5OTtcclxud2lkdGg6IGF1dG87XHJcbm1hcmdpbi1yaWdodDogMTBweDtcclxuYm9yZGVyLXJhZGl1czogM3B4O1xyXG5mb250LWZhbWlseTogbmV4YUJvb2s7XHJcbmNvbG9yOiB3aGl0ZTtcclxubWFyZ2luLWJvdHRvbTogMTBweDtcclxuYmFja2dyb3VuZC1jb2xvcjojMDAzMzk5O1xyXG59XHJcblxyXG4uc3BUaXBzLXByZXZpb3VzVGlwe1xyXG5tYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbnBhZGRpbmc6IDVweDtcclxucGFkZGluZzogNXB4IDE1cHg7XHJcbmJvcmRlcjogMXB4IHNvbGlkICMwMDMzOTk7XHJcbndpZHRoOiBhdXRvO1xyXG5tYXJnaW4tbGVmdDogMTBweDtcclxuYm9yZGVyLXJhZGl1czogM3B4O1xyXG5mb250LWZhbWlseTogbmV4YUJvb2s7XHJcbmNvbG9yOiB3aGl0ZTtcclxubWFyZ2luLWJvdHRvbTogMTBweDtcclxuYmFja2dyb3VuZC1jb2xvcjojMDAzMzk5O1xyXG59XHJcblxyXG5cclxuXHJcbi5zcFRpcHMtZG9uZUxlZnRDbnIge1xyXG5iYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTQxMXB4O1xyXG53aWR0aDo1cHg7XHJcbmhlaWdodDoyNnB4O1xyXG59XHJcblxyXG4udGlwc1JlZEJnIHtcclxubWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5wYWRkaW5nOiA1cHg7XHJcbnBhZGRpbmc6IDVweCAxNXB4O1xyXG5ib3JkZXI6IDFweCBzb2xpZCAjMDAzMzk5O1xyXG53aWR0aDogYXV0bztcclxubWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5ib3JkZXItcmFkaXVzOiAzcHg7XHJcbmZvbnQtZmFtaWx5OiBuZXhhQm9sZDtcclxuY29sb3I6IHdoaXRlO1xyXG5tYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5iYWNrZ3JvdW5kLWNvbG9yOiMwMDMzOTk7XHJcbn1cclxuXHJcbi5zcFRpcHMtZG9uZVJpZ2h0Q25yIHtcclxuYmFja2dyb3VuZC1wb3NpdGlvbjowIC00ODdweDtcclxud2lkdGg6NXB4O1xyXG5oZWlnaHQ6MjZweDtcclxufVxyXG5cclxuI3RpcFBvaW50ZXIge1xyXG5wb3NpdGlvbjphYnNvbHV0ZTtcclxuei1pbmRleDo3Nzc3Nzk4O1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1hcnJvdzEge1xyXG56LWluZGV4OjEwMTA7XHJcbn1cclxuXHJcbi50aXBQb2ludGVyLWFycm93MiB7XHJcbnotaW5kZXg6MTAxMTtcclxufVxyXG5cclxuLnRpcFBvaW50ZXItdG9wLC50aXBQb2ludGVyLWJvdHRvbSB7XHJcbmhlaWdodDoxOHB4O1xyXG53aWR0aDozMnB4O1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1ib3R0b20xIHtcclxuaGVpZ2h0OjIxcHg7XHJcbndpZHRoOjM3cHg7XHJcbn1cclxuXHJcbi50aXBQb2ludGVyLWxlZnQsLnRpcFBvaW50ZXItcmlnaHQge1xyXG5oZWlnaHQ6MzJweDtcclxud2lkdGg6MThweDtcclxufVxyXG5cclxuLnRpcFBvaW50ZXItYXJyb3cge1xyXG53aWR0aDowO1xyXG5oZWlnaHQ6MDtcclxubGluZS1oZWlnaHQ6MDtcclxucG9zaXRpb246YWJzb2x1dGU7XHJcbmZvbnQtc2l6ZTowO1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1ib3R0b20xIC50aXBQb2ludGVyLWFycm93MSB7XHJcbmJvcmRlci10b3A6MCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLWJvdHRvbToyMXB4IHNvbGlkICNiN2I3Yjc7XHJcbmJvcmRlci1sZWZ0OjE5cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbmJvcmRlci1yaWdodDoxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG50b3A6MDtcclxubGVmdDowO1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1ib3R0b20xIC50aXBQb2ludGVyLWFycm93MiB7XHJcbmJvcmRlci10b3A6MCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLWJvdHRvbToxOHB4IHNvbGlkICNmZmZmZmU7XHJcbmJvcmRlci1sZWZ0OjE3cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbmJvcmRlci1yaWdodDoxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG50b3A6M3B4O1xyXG5sZWZ0OjJweDtcclxufVxyXG5cclxuLnRpcFBvaW50ZXItYm90dG9tIC50aXBQb2ludGVyLWFycm93MSB7XHJcbmJvcmRlci10b3A6MCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLWJvdHRvbToxOHB4IHNvbGlkICNhOWE5YTk7XHJcbmJvcmRlci1sZWZ0OjE2cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbmJvcmRlci1yaWdodDoxNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG50b3A6MDtcclxubGVmdDowO1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1ib3R0b20gLnRpcFBvaW50ZXItYXJyb3cyIHtcclxuYm9yZGVyLXRvcDowIHNvbGlkIHRyYW5zcGFyZW50O1xyXG5ib3JkZXItYm90dG9tOjE1cHggc29saWQgI2Y3ZjdmNztcclxuYm9yZGVyLWxlZnQ6MTNweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLXJpZ2h0OjEzcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbnRvcDo0cHg7XHJcbmxlZnQ6M3B4O1xyXG59XHJcblxyXG4udGlwUG9pbnRlci10b3AgLnRpcFBvaW50ZXItYXJyb3cxIHtcclxuYm9yZGVyLXRvcDoxOHB4IHNvbGlkICNhOWE5YTk7XHJcbmJvcmRlci1ib3R0b206MCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLWxlZnQ6MTZweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLXJpZ2h0OjE2cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbnRvcDowO1xyXG5sZWZ0OjA7XHJcbn1cclxuXHJcbi50aXBQb2ludGVyLXRvcCAudGlwUG9pbnRlci1hcnJvdzIge1xyXG5ib3JkZXItdG9wOjE1cHggc29saWQgI2ZmZjtcclxuYm9yZGVyLWJvdHRvbTowIHNvbGlkIHRyYW5zcGFyZW50O1xyXG5ib3JkZXItbGVmdDoxM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG5ib3JkZXItcmlnaHQ6MTNweCBzb2xpZCB0cmFuc3BhcmVudDtcclxudG9wOi0xcHg7XHJcbmxlZnQ6M3B4O1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1yaWdodCAudGlwUG9pbnRlci1hcnJvdzEge1xyXG5ib3JkZXItcmlnaHQ6MThweCBzb2xpZCAjYTlhOWE5O1xyXG5ib3JkZXItbGVmdDowIHNvbGlkIHRyYW5zcGFyZW50O1xyXG5ib3JkZXItdG9wOjE2cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbmJvcmRlci1ib3R0b206MTZweCBzb2xpZCB0cmFuc3BhcmVudDtcclxudG9wOjA7XHJcbmxlZnQ6MDtcclxufVxyXG5cclxuLnRpcFBvaW50ZXItcmlnaHQgLnRpcFBvaW50ZXItYXJyb3cyIHtcclxuYm9yZGVyLXJpZ2h0OjE1cHggc29saWQgI2ZmZjtcclxuYm9yZGVyLWxlZnQ6MCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLXRvcDoxM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG5ib3JkZXItYm90dG9tOjEzcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbnRvcDozcHg7XHJcbmxlZnQ6NHB4O1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1sZWZ0IC50aXBQb2ludGVyLWFycm93MSB7XHJcbmJvcmRlci1sZWZ0OjE4cHggc29saWQgI2E5YTlhOTtcclxuYm9yZGVyLXJpZ2h0OjAgc29saWQgdHJhbnNwYXJlbnQ7XHJcbmJvcmRlci10b3A6MTZweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLWJvdHRvbToxNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG50b3A6MDtcclxubGVmdDowO1xyXG59XHJcblxyXG4udGlwUG9pbnRlci1sZWZ0IC50aXBQb2ludGVyLWFycm93MiB7XHJcbmJvcmRlci1sZWZ0OjE1cHggc29saWQgI2ZmZjtcclxuYm9yZGVyLXJpZ2h0OjAgc29saWQgdHJhbnNwYXJlbnQ7XHJcbmJvcmRlci10b3A6MTNweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuYm9yZGVyLWJvdHRvbToxM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG50b3A6M3B4O1xyXG5sZWZ0Oi0xcHg7XHJcbn1cclxuXHJcbi53ZWF0aGVyVGlwc0xpc3Qge1xyXG5saXN0LXN0eWxlLXR5cGU6bm9uZTtcclxubWFyZ2luOjA7XHJcbnBhZGRpbmc6MTBweDtcclxufVxyXG5cclxuI3dlYXRoZXJUaXBzQ29udGFpbmVyIHtcclxuYm9yZGVyOjJweCBzb2xpZCAjYjdiN2I3O1xyXG5kaXNwbGF5Om5vbmU7XHJcbndpZHRoOjI3OHB4O1xyXG5iYWNrZ3JvdW5kLWltYWdlOnVybCgvc3RhdGljL3N0YXJ0L3ZpZXcvaW1nL3NwL3Rvb2wtdGlwcy93ZWF0aGVyLWJjay5naWYpO1xyXG56LWluZGV4OiAxMDUzO1xyXG59XHJcblxyXG5hOmhvdmVyLCNsZWZ0TmF2LXJlZGVzaWduIGE6aG92ZXIsICN0aXBzQ2xvc2VCdG4gYTpob3ZlciB7XHJcbnRleHQtZGVjb3JhdGlvbjpub25lO1xyXG5jb2xvcjpyZWQ7XHJcbn1cclxuXHJcbi5ib2xkZWQsI3dlYXRoZXJUZW1wLC53ZWF0aGVyVGVtcCwjd2VhdGhlckxvd1RlbXAsLmZib2xkIHtcclxuZm9udC13ZWlnaHQ6NzAwO1xyXG59XHJcblxyXG4uY2xkLGltZy5hZCB7XHJcbm1hcmdpbi1ib3R0b206MTBweDtcclxufVxyXG5cclxuI3NreXNjcmFwZXIzIHtcclxudGV4dC1hbGlnbjpsZWZ0O1xyXG5tYXJnaW4tbGVmdDoxMHB4O1xyXG5fbWFyZ2luLWxlZnQ6M3B4O1xyXG5mbG9hdDpsZWZ0O1xyXG5tYXJnaW4tdG9wOjA7XHJcbl9tYXJnaW4tdG9wOjBweDtcclxufVxyXG5cclxuI3NreXNjcmFwZXIyIHtcclxudGV4dC1hbGlnbjpsZWZ0O1xyXG5tYXJnaW4tbGVmdDoxMHB4O1xyXG5fbWFyZ2luLWxlZnQ6M3B4O1xyXG5mbG9hdDpsZWZ0O1xyXG5tYXJnaW4tdG9wOjA7XHJcbl9tYXJnaW4tdG9wOi0xN3B4O1xyXG59XHJcblxyXG4uY2xyLGRpdi5mZWVkX2NsZWFyIHtcclxuY2xlYXI6Ym90aDtcclxufVxyXG5cclxuI3N1YkhlYWRlcjEsI3N1YkhlYWRlcjIge1xyXG5mbG9hdDpsZWZ0O1xyXG53aWR0aDo5NTNweDtcclxuZGlzcGxheTpub25lO1xyXG59XHJcblxyXG4jc3ViSGVhZGVyMiB7XHJcbmRpc3BsYXk6bm9uZTtcclxufVxyXG5cclxuI3NlcnZpY2VzTGlua3MtYiBsaS5sYXN0LCN0aWxlSGVhZE5ld3MgZHQgaW1nIHtcclxubWFyZ2luLXJpZ2h0OjA7XHJcbn1cclxuXHJcbi5kcmFnX2IsLmRyYWdfbGVmdCB7XHJcbm1hcmdpbi1ib3R0b206MTBweDtcclxud2lkdGg6MzM4cHg7XHJcbmJhY2tncm91bmQ6I2ZmZmZmZjtcclxufVxyXG5cclxuLnRpbGVFeHRyYSBsaSwudGlwc1RoZWF0ZXIgdWwge1xyXG5saXN0LXN0eWxlLXR5cGU6bm9uZTtcclxufVxyXG5cclxuLmNwb2ludGVyLC5jQnV0dG9uSXRlbUhvdmVyIHtcclxuY3Vyc29yOnBvaW50ZXI7XHJcbn1cclxuXHJcbi5jZW50ZXJhbGlnbiwjc3RvY2tzICNzdG9ja3NEaXNwbGF5IHRoLmNoYW5nZSB7XHJcbnRleHQtYWxpZ246Y2VudGVyO1xyXG59XHJcblxyXG4jbmV3cywjc2hvcCB7XHJcbmJvcmRlci1jb2xvcjojZGNkY2RjO1xyXG59XHJcblxyXG4jdGlwc0xpc3QgbGkge1xyXG5kaXNwbGF5Om5vbmU7XHJcbn1cclxuXHJcbi5yb3VuZGVkLWJveCB7XHJcbi13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7XHJcbi1tb3otYm9yZGVyLXJhZGl1czo2cHg7XHJcbmJvcmRlci1yYWRpdXM6NnB4O1xyXG59XHJcblxyXG4jb3ZlcmxheSB7XHJcbmRpc3BsYXk6bm9uZTtcclxuZmlsdGVyOmFscGhhKG9wYWNpdHk9Nik7XHJcbn1cclxuXHJcbi5mUmlnaHQge1xyXG5mbG9hdDpyaWdodDtcclxufVxyXG5cclxuI3dlYXRoZXJGb3JlY2FzdHtcclxuZmxvYXQ6bGVmdDtcclxufVxyXG5cclxuLmN1c3RvbWl6ZS10aWxle1xyXG5ib3JkZXItbGVmdDoxcHggc29saWQgI2QzZDNkMztcclxufVxyXG5cclxuLmFuY2hvckJHeyAgICBcclxuYmFja2dyb3VuZDogdXJsKCcvc3RhdGljL3N0YXJ0L3ZpZXcvaW1nL3NwL2N1c3QtaG92ZXItYmcuZ2lmJykgcmVwZWF0IDAgMDtcclxuYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlIWltcG9ydGFudDtcclxufVxyXG5cclxuLmN1c3RvbUxpbmtze1xyXG5ib3JkZXI6MXB4IHNvbGlkICNGRkZGRkY7XHJcbnBhZGRpbmc6NXB4IDAgMCA2cHg7IFxyXG5tYXJnaW46NXB4O1xyXG59XHJcblxyXG4jTGF5b3V0U2VsZWN0ZWQgYTpob3ZlciBkaXYsICNCYWNrZ3JvdW5kU2VsZWN0ZWQgYTpob3ZlciBkaXYge1xyXG50ZXh0LWRlY29yYXRpb246bm9uZTtcclxuYmFja2dyb3VuZDogdXJsKCcvc3RhdGljL3N0YXJ0L3ZpZXcvaW1nL3NwL2N1c3QtaG92ZXItYmcuZ2lmJykgcmVwZWF0IDAgMDtcclxuYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlIWltcG9ydGFudDtcclxufVxyXG5cclxuLmZjb2xvci1saW5le1xyXG5mb250LWZhbWlseTphcmlhbDtcclxuY29sb3I6I2NiY2JjYjtcclxuZm9udC1zaXplOjE0cHg7XHJcbmZvbnQtd2VpZ2h0Om5vcm1hbDtcclxufVxyXG4vKlxyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcblx0T29wcyBlcnJvciBjb250YWluZXJcclxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4qL1xyXG4uZXJyb3JDb250YWluZXJ7XHJcbmZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7XHJcbm9wYWNpdHk6MTtcclxuYm9yZGVyOjlweCBzb2xpZCAjNTg1ODU4O1xyXG53aWR0aDo0MDVweDtcclxuZmxvYXQ6bGVmdDtcclxuYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O1xyXG5iYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmU7XHJcbnBvc2l0aW9uOmFic29sdXRlO1xyXG56LWluZGV4Ojc3Nzc3OTg7XHJcbmRpc3BsYXk6bm9uZTtcclxudGV4dC1hbGlnbjpsZWZ0O1xyXG59XHJcblxyXG4uZXJyb3ItY29udGVudC1ib2R5e1xyXG5mb250LWZhbWlseTphcmlhbDtcclxuY29sb3I6IzAwMDAwMDtcclxuZm9udC1zaXplOjE0cHg7XHJcbmZvbnQtd2VpZ2h0Om5vcm1hbDtcclxucGFkZGluZy10b3A6OHB4O1xyXG59XHJcblxyXG5cclxuLmVycm9yLWNvbnRlbnQtdGl0bGV7XHJcbmZvbnQtZmFtaWx5OkFyaWFsIFVuaWNvZGUgTVM7XHJcbmNvbG9yOiMzMzMzMzM7XHJcbmZvbnQtc2l6ZToyMHB4O1xyXG5mb250LXdlaWdodDo3MDA7XHJcbn1cclxuXHJcbi5ldGlwc0xpc3R7XHJcbm1hcmdpbi1sZWZ0OjMycHg7XHJcbn1cclxuXHJcbi5ldGlwc0Zvb3RlciB7XHJcbmhlaWdodDo0M3B4O1xyXG5ib3JkZXItdG9wOjFweCBzb2xpZCAjZDFkMWQxO1xyXG5wYWRkaW5nLXJpZ2h0OjlweDtcclxuYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmV0aXBzRm9vdGVyMSB7XHJcbnBhZGRpbmctYm90dG9tOiAzNHB4O1xyXG5ib3JkZXItdG9wOjFweCBzb2xpZCAjZDFkMWQxO1xyXG5wYWRkaW5nLXJpZ2h0OjlweDtcclxuYmFja2dyb3VuZDogI2YwZjBmMDtcclxufVxyXG5cclxuLmVycm9yVHJ5QnRue1xyXG5jdXJzb3I6cG9pbnRlcjtcclxuZmxvYXQ6cmlnaHQ7XHJcbm1hcmdpbi10b3A6MTJweDtcclxufVxyXG5cclxuZXJyb3JUcnlCdG4xe1xyXG5jdXJzb3I6cG9pbnRlcjtcclxuZmxvYXQ6cmlnaHQ7XHJcbn1cclxuXHJcbi5lcnJvckNvbnRlbnR7XHJcbnBhZGRpbmctcmlnaHQ6OXB4O1xyXG5tYXJnaW4tYm90dG9tOjI0cHg7XHJcbn1cclxuXHJcbi5lY2xvc2VJY29uIHtcclxucGFkZGluZzo1cHggMCAwIDBweDtcclxufVxyXG5cclxuI2hpZGVXZWF0aGVyT3ZlcmxheSB7XHJcbmN1cnNvcjpwb2ludGVyO1xyXG59XHJcblxyXG4jcmVzdG9yZURlZmF1bHRidXR0b257XHJcbmN1cnNvcjpwb2ludGVyO1xyXG59IDBweDtcclxufVxyXG5cclxuI2hpZGVXZWF0aGVyT3ZlcmxheSB7XHJcbmN1cnNvcjpwb2ludGVyO1xyXG59XHJcblxyXG4jcmVzdG9yZURlZmF1bHRidXR0b257XHJcbmN1cnNvcjpwb2ludGVyO1xyXG59XHJcblxyXG4ud2VhdGhlckhvdmVyIHtcclxudGV4dC1kZWNvcmF0aW9uOm5vbmU7XHJcbmNvbG9yOiNmZjAwMDA7XHJcbmN1cnNvcjpwb2ludGVyO1xyXG59XHJcblxyXG4uYWNjdXdlYXRoZXJMb2dve1xyXG5jdXJzb3I6cG9pbnRlcjtcclxufVxyXG5cclxuLmVtYWlsLWFjY2Vzcy1jb250YWluZXJ7XHJcbmhlaWdodDoxN3B4O1xyXG5tYXJnaW46MTBweCAycHg7XHJcbn1cclxuXHJcbiNtZXNzYWdlQ29udGFpbmVye1xyXG5jb2xvcjojMDA0MTgyO1xyXG5mb250LXNpemU6MTJweDtcclxuZGlzcGxheTpub25lO1xyXG59XHJcblxyXG4uc3BJbnB1dHtcclxuZm9udC1mYW1pbHk6IHZlcmRhbmEsIHNhbnMtc2VyaWY7IGNvbG9yOiAjMDAwMDAwOyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxldHRlci1zcGFjaW5nOiAtMC41cHg7XHJcbm1hcmdpbjowOyBwYWRkaW5nOjJweDsgd2lkdGg6OTJweDsgaGVpZ2h0OjIwcHg7IGJvcmRlcjowOyBcclxuYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYztcclxuYmFja2dyb3VuZC1pbWFnZTp1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC8wOS9tZW1iZXItaWQtcmVkZXNpZ24uZ2lmKTsgXHJcbmJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcclxufVxyXG5cclxuLnNwY3VzdElucHV0e1xyXG5mb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcclxubWFyZ2luOjA7IHBhZGRpbmc6NHB4OyB3aWR0aDoxNjBweDsgaGVpZ2h0OjI2cHg7IGJvcmRlcjowOyBcclxuYm9yZGVyOiAxcHggc29saWQgI2NjY2NjYztcclxuYmFja2dyb3VuZC1pbWFnZTp1cmwoL3N0YXRpYy9zdGFydC92aWV3L2ltZy9zcC8wOS9taWQtY3VzdG9taXplLmdpZik7IFxyXG5iYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XHJcbn1cclxuXHJcbiNzcC1ncmFkaWVudCB7XHJcbndpZHRoOjEwMCU7XHJcbmhlaWdodDozNHB4O1xyXG5iYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtcclxufVxyXG5cclxuLnNwLWdyYWRpZW50IHtcclxucG9zaXRpb246Zml4ZWQ7XHJcbnRvcDowO1xyXG5sZWZ0OjA7XHJcbmJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xyXG59XHJcblxyXG4uYm9keVJlZGVzaWduU1B7XHJcbm1hcmdpbjowO1xyXG5wYWRkaW5nOjM0cHggMCAwIDA7XHJcbl9wYWRkaW5nOjAgMCAwIDA7XHJcbm92ZXJmbG93OmhpZGRlbjsgXHJcbnBvc2l0aW9uOnJlbGF0aXZlO1xyXG59XHJcblxyXG4ubWFpbkNvbnRlbnRIb2xkZXJ7XHJcbm92ZXJmbG93OmF1dG87XHJcbmhlaWdodDoxMDAlO1xyXG53aWR0aDoxMDAlO1xyXG59XHJcblxyXG4uc3AtZ3JhZC1kZWZhdWx0e1xyXG53aWR0aDo5NjBweDtcclxufVxyXG5cclxuLnNwLWdyYWQtZGl2e1xyXG5vdmVyZmxvdzppbmhlcml0O1xyXG5taW4td2lkdGg6IDkwN3B4O1xyXG59XHJcbi5mZWVkSW1ne1xyXG5cdHdpZHRoOjIwJTtcclxufVxyXG4uZmVlZFRleHQgYXtcclxuXHRcdGNvbG9yOiMwMDMzOTkgIWltcG9ydGFudDtcclxuXHRcdGZvbnQtc2l6ZToxNHB4ICFpbXBvcnRhbnQ7XHRcdFxyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG59XHJcbi5mZWVkVGV4dCBwe1xyXG5cdGNvbG9yOiMwMDAwMDAgIWltcG9ydGFudDtcclxuXHRmb250LXNpemU6MTJweCAhaW1wb3J0YW50O1xyXG5cdFxyXG59XHJcbi5mZWVkVGV4dHtcclxud2lkdGg6ODAlO1xyXG5mbG9hdDpyaWdodDtcclxuZGlzcGxheTpibG9jaztcclxucGFkZGluZy1sZWZ0OjVweDtcclxufVxyXG4uc2xpZGVyMSwgLnNsaWRlcjIsIC5zbGlkZXIzLCAuc2xpZGVyNCwgLnNsaWRlcjV7XHJcblx0bWFyZ2luLXRvcDoycHg7XHJcbn1cclxuLmxvZ29fY2Fyb3VzZWx7XHJcblx0ZGlzcGxheTogLW1zLWZsZXhib3g7XHJcblx0ZGlzcGxheTotd2Via2l0LWZsZXg7XHJcblx0ZGlzcGxheTppbmxpbmUtZmxleDtcclxuXHRcclxuXHRcclxufVxyXG4udFJpZ2h0e1xyXG5cdHRleHQtYWxpZ246cmlnaHQ7XHJcblx0cGFkZGluZy1sZWZ0OjIyMHB4O1xyXG5cdFxyXG59XHJcbiNjYXJvdXNlbExvZ297XHJcblx0Zm9udC1mYW1pbHk6bmV4YUJvb2s7XHJcblx0Y29sb3I6ICM5OTk5OTk7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbn1cclxuICNzdGF0aWNGb290ZXJ7XHJcbiAgICAgICAgICAgICAgICAgd2lkdGg6MTAyMHB4O31cclxuICAgICAgICAgICAgICAgICBcclxuLyoqKioqKioqKlRvcCBzZWFyY2hlcyAqKioqKioqKiovXHJcbiAucG9wU2VhcmNoLWhlYWRlciB7XHJcbiAgICAgICAgZm9udC1zaXplOjE0cHg7XHJcblx0XHRmb250LXdlaWdodDpib2xkO1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1xyXG5cdFx0Y29sb3I6IzAwMDAwMDtcclxuXHRcdG1hcmdpbi10b3A6MHB4ICFpbXBvcnRhbnQ7XHJcblx0XHRwYWRkaW5nLXRvcDo1cHggIWltcG9ydGFudDtcclxuXHRcdG1hcmdpbi1ib3R0b206MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgICAgLnNlYXJjaFJvdyB7XHJcbiAgICAgICAgYm9yZGVyOiAwcHg7XHJcbiAgICAgICAgZGlzcGxheTp0YWJsZS1yb3c7XHJcbiAgICAgIH1cclxuICAgICAgLnNlYXJjaENvbCBhe1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XHJcblx0XHRjb2xvcjojRkYzMzAwICFpbXBvcnRhbnQ7XHJcblx0XHRmb250LXNpemU6MTJweDtcclxuXHRcdGZvbnQtZmFtaWx5OiBuZXhhQm9vaztcclxuXHRcdFxyXG5cdFx0XHJcbiAgICAgIH1cclxuICAgICAgIC5zZWFyY2hDb2xOIGF7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcclxuXHRcdGNvbG9yOiNGRjMzMDAgIWltcG9ydGFudDtcclxuXHRcdGZvbnQtc2l6ZToxNHB4O1xyXG5cdFx0Zm9udC1mYW1pbHk6IG5leGFCb29rO1x0XHRcclxuICAgICAgfVxyXG4gICAgICAuc2VhcmNoQ29se1xyXG4gICAgICAgIHdpZHRoOjUwJTtcclxuICAgICAgICBkaXNwbGF5OnRhYmxlLWNlbGw7XHJcbiAgICAgICAgcGFkZGluZzoxcHggMHB4O1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIC5zZWFyY2hDb2xOe1xyXG4gICAgICAgIHdpZHRoOmF1dG87XHJcbiAgICAgICAgZGlzcGxheTp0YWJsZS1jZWxsO1xyXG4gICAgICAgIHBhZGRpbmc6MXB4IDBweDtcclxuICAgICAgICB3aWR0aDoxMCU7XHJcbiAgICAgIH1cclxuICAgICAgLnBvcFNlYXJjaC1saW5re1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kICggbWluLWRldmljZS1oZWlnaHQ6IDEwNDVweCApIHsgXHJcbiAgICAgICAgICAgICAgICAgI3N0YXRpY0Zvb3RlcntcclxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246Zml4ZWQ7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjtcclxuICAgICAgICAgICAgICAgICAgYm90dG9tOjA7XHJcbiAgICAgICAgICAgICAgICAgIHotaW5kZXg6Nzc3Nzc3MDtcclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgLmV0X3BiX3NlY3Rpb25fMHtcclxuICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIGhye1xyXG4gICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDowcHggIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgICAgIGJvcmRlci10b3A6MHB4O1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAjbWFpbkNvbnRlbnR7XHJcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOjEzMHB4O1xyXG4gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gXHJcbiAvKioqKioqKioqKioqKioqKk1vYmlsZSB2aWV3IGZvciBmb290ZXIqKioqKioqKioqKi9cclxuIFxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgIC8qICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoIG1pbi13aWR0aDogMTM1MHB4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgIC5ldF9wYl9yb3cgeyBwYWRkaW5nOiAyN3B4IDA7IH1cclxuICAgICAgICAgICAgICAgICAgICAgLmV0X3BiX3NlY3Rpb24geyBwYWRkaW5nOiA1NHB4IDA7IH1cclxuICAgICAgICAgICAgICAgICAgICAgLnNpbmdsZS5ldF9wYl9wYWdlYnVpbGRlcl9sYXlvdXQuZXRfZnVsbF93aWR0aF9wYWdlIC5ldF9wb3N0X21ldGFfd3JhcHBlciB7IHBhZGRpbmctdG9wOiA4MXB4OyB9XHJcbiAgICAgICAgICAgICAgICAgICAgIC5ldF9wYl9zZWN0aW9uLmV0X3BiX3NlY3Rpb25fZmlyc3QgeyBwYWRkaW5nLXRvcDogaW5oZXJpdDsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAuZXRfcGJfZnVsbHdpZHRoX3NlY3Rpb24geyBwYWRkaW5nOiAwOyB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKCBtYXgtd2lkdGg6IDk4MHB4ICkgeyAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoIG1heC13aWR0aDogNzY3cHggKSB7ICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICggbWF4LXdpZHRoOiAxMDI1cHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgLmV0X3BiX3RleHRfMHttYXJnaW4tdG9wOiAxMHB4O31cclxuICAgICAgICAgICAgICAgICAgICAgLmV0X3BiX2NvbHVtbl8xe3dpZHRoOiAxMDAlOyAhaW1wb3J0YW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAuZXRfcGJfY29sdW1uXzJ7d2lkdGg6IDEwMCU7ICFpbXBvcnRhbnR9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKCBtaW4td2lkdGg6IDEwMjZweCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAuZXRfcGJfY29sdW1uXzEgeyB3aWR0aDogYXV0bzt9XHJcbiAgICAgICAgICAgICAgICAgICAgIC5ldF9wYl9jb2x1bW5fMiB7IHdpZHRoOiBhdXRvO31cclxuICAgICAgICAgICAgICAgICAgICAgLmV0X3BiX3RleHRfMHttYXJnaW4tdG9wOiAycHg7fVxyXG4gICAgICAgICAgICAgIH0gKi9cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbi8qKioqKioqKldlYXRoZXIgdGlsZSoqKioqKioqKioqICovXHJcbiN3ZWF0aGVyIHtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbiN3ZWF0aGVyVGFicyBsaSB7XHJcblx0ZGlzcGxheTogaW5saW5lLXRhYmxlO1xyXG5cdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2M4YzhjODtcclxuXHRiYWNrZ3JvdW5kOiAjZjdmNmY1O1xyXG5cdGxpc3Qtc3R5bGU6IG5vbmU7XHJcblx0bWFyZ2luOiAwcHggIWltcG9ydGFudDtcclxuXHRwYWRkaW5nOiAycHggM3B4IDJweCAycHg7XHJcblx0Y3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jVGFiMSwgI1RhYjIsICNUYWIzIHtcclxuXHR3aWR0aDogOTVweDtcclxuXHRoZWlnaHQ6IDIyMHB4O1xyXG59XHJcblxyXG4jd2VhdGhlclRpbGVDaXR5IHtcclxuXHRjb2xvcjogIzY2NjY2NiAhaW1wb3J0YW50O1xyXG5cdGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4jZWRpdFdlYXRoZXJCeUNpdHkgYSB7XHJcblx0Y29sb3I6ICMwMDMzOTkgIWltcG9ydGFudDtcclxuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50O1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHR6LWluZGV4OiA3Nzc3Nzc2O1xyXG59XHJcblxyXG4jd2VhdGhlclRhYnMgcCB7XHJcblx0cGFkZGluZy10b3A6IDJweDtcclxuXHRjb2xvcjogIzAwYWZiZTtcclxuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZvbnQtc2l6ZTogMTJweDtcclxufVxyXG5cclxuLnRlbXAge1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxuXHRwYWRkaW5nLXRvcDogMnB4O1xyXG59XHJcblxyXG4uY29uZGl0aW9uIHtcclxuXHR3aWR0aDogODlweDtcclxuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcblx0cGFkZGluZy10b3A6IDEwcHg7XHJcblx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjJlbTtcclxuXHRmb250LWZhbWlseTogbmV4YUJvb2s7XHJcbn1cclxuXHJcbi5yZWFsVGVtcCwgLndlYXRoZXJEYXRlIHtcclxuXHRmb250LXNpemU6IDEycHg7XHJcblx0Y29sb3I6ICM5OTk7XHJcbn1cclxuLlRpbGV0ZW1wZXJhdHVyZSBzdWIge1xyXG5cdGZvbnQtc2l6ZTogMTBweDtcclxuXHRjb2xvcjogIzk5OTtcclxufVxyXG4uVGFiQWN0aXZlIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XHJcblx0Ym94LXNoYWRvdzogMHB4IDJweCAxMHB4IDJweCAjYzhjOGM4O1xyXG5cdC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDJweCAxMHB4IDJweCAjYzhjOGM4O1xyXG5cdC1tb3otYm94LXNoYWRvdzogMHB4IDJweCAycHggMTBweCAjYzhjOGM4O1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHR6LWluZGV4OiA5OTk7XHJcblx0d2lkdGg6IDEwMnB4ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNmMDU1MTQ7XHJcbn1cclxuXHJcbi5UYWJBY3RpdmUgLmNvbmRpdGlvbiB7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0Zm9udC1zaXplOiAxNXB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxZW07XHJcbn1cclxuXHJcbi5UYWJBY3RpdmUgLlRpbGV0ZW1wZXJhdHVyZSB7XHJcblx0Zm9udC1zaXplOiAyMHB4O1xyXG59XHJcblxyXG4uVGFiQWN0aXZlIC5yZWFsVGVtcCB7XHJcblx0Zm9udC1zaXplOiAxMy40cHg7XHJcbn1cclxuXHJcbi5UYWJBY3RpdmUgLndlYXRoZXJEYXRlIHtcclxuXHRmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbi5UYWJBY3RpdmUgI3NlZUhvdXJseUJ0biB7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcclxuXHRmb250LXNpemU6IDE0cHg7XHJcbn1cclxuXHJcbi5UYWJBY3RpdmUgI3NlZUhvdXJseUJ0biAjYXJyb3cgaW1nIHtcclxuXHR3aWR0aDogMTlweDtcclxufVxyXG5cclxuLlRhYkFjdGl2ZSAud2VhdGhlck1vcmUge1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLlRhYkluYWN0aXZlOmhvdmVyIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWZlZmVmICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiNjaXR5RGl2IHtcclxuXHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG59XHJcblxyXG4ud2VhdGhlck1vcmUgYSB7XHJcblx0Y29sb3I6ICNmMDU1MTQ7XHJcbn1cclxuXHJcbi53ZWF0aGVyTW9yZSBhOmhvdmVyIHtcclxuXHRjb2xvcjogI2I3M2YwYztcclxufVxyXG5cclxuLndlYXRoZXJNb3JlIHtcclxuXHRcclxufVxyXG5cclxuI3NlZUhvdXJseUJ0biB7XHJcblx0Y29sb3I6ICNmMDU1MTQ7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZTFlMDtcclxuXHRwYWRkaW5nOiA1cHggNXB4IDVweCAycHg7XHJcblx0bWFyZ2luLXRvcDogLTEwcHg7XHJcbn1cclxuXHJcbiNzZWVIb3VybHlCdG46aG92ZXIge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNkYmRhZDkgIWltcG9ydGFudDtcclxufVxyXG5cclxuI3NlZUhvdXJseUJ0biAjYXJyb3cge1xyXG5cdGZsb2F0OiByaWdodDtcclxuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5UaWxldGVtcGVyYXR1cmUge1xyXG5cdGZvbnQtc2l6ZTogMThweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHRmb250LWZhbWlseTogbmV4YUJvb2s7XHJcblx0Y29sb3I6ICMzMzMgIWltcG9ydGFudDtcclxuXHRwYWRkaW5nLXRvcDogMnB4O1xyXG59XHJcblxyXG4jd2VhdGhlclRhYnMgcCB7XHJcblx0bWFyZ2luOiAwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLndlYXRoZXJJY29uIHtcclxuXHRwYWRkaW5nLXRvcDogMTdweDtcclxufVxyXG5cclxuLmluZm8ge1xyXG5cdGhlaWdodDogMTk5cHg7XHJcbn1cclxuXHJcbiNsaXN0IHtcclxuXHRmbG9hdDogbGVmdDtcclxuXHRtYXJnaW4tYm90dG9tOiA1cHg7XHJcblx0d2lkdGg6IDcwJTtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuLyoqKioqKioqKioqKioqTXV0bGlzdGVwLUxvZ2luKioqKioqKioqKioqKioqKioqKioqL1xyXG4gLyogI3Bhc3N3b3JkRmllbGQsIC5zaWduaW57XHJcblx0ZGlzcGxheTpub25lO1xyXG59XHJcbiNidG5Db250e1xyXG5cdHRleHQtYWxpZ246Y2VudGVyO1xyXG5cdGZvbnQtc2l6ZToxNHB4O1xyXG5cdFxyXG59ICAqL1xyXG4jRWRpdGFibGVVc2VySUR7XHJcblx0ZGlzcGxheTpub25lO1xyXG59XHJcbiNsb2dpbkJ1dHRvbnN7XHJcblx0ZGlzcGxheTppbmxpbmU7XHJcbn1cclxuICNiYWNrYnRue1xyXG4gY29sb3I6d2hpdGUgIWltcG9ydGFudDtcclxuXHRmb250LXNpemU6IDEuOGVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIHBhZGRpbmc6IDAuMWVtIDEuMjVlbTtcclxuICBmb250LWZhbWlseTogT21uZXNCbGFja0l0YWxpYyAhaW1wb3J0YW50O1xyXG4gIGJhY2tncm91bmQ6ICNFNzNDMzAgIWltcG9ydGFudDtcclxuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcclxuICAtbW96LWJvcmRlci1yYWRpdXM6IDAuMjVlbTtcclxuICAtbXMtYm9yZGVyLXJhZGl1czogMC4yNWVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVlbTsgXHJcbn0gXHJcblxyXG4jdXNlckNvbnNlbnRCdXR0b25ze1xyXG5cdHRleHQtYWxpZ246cmlnaHQ7XHJcblx0dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xyXG59XHJcbi5jb29raWVQb2xpY3lMaW5re1xyXG5cdHRleHQtZGVjb3JhdGlvbiA6IHVuZGVybGluZTtcclxuXHRjb2xvcjojMDA0MTgyO1xyXG59XHJcblxyXG4jYWxsb3dCdXR0b257XHJcblx0YmFja2dyb3VuZC1jb2xvcjogIzAwMzM5OTtcclxuXHRjb2xvcjogd2hpdGU7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGZvbnQtc2l6ZTogMTJweDtcclxuXHRib3JkZXItcmFkaXVzOiA1cHg7XHJcblx0Zm9udC1mYW1pbHk6IG5leGFCb2xkO1xyXG5cdHBhZGRpbmc6IDVweCA4cHg7XHJcblx0dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRtYXJnaW4tbGVmdDo1cHg7XHJcblx0XHJcblx0XHJcbn0ifSwgImhlYWRlcnNTaXplIjogMTYzMSwgImJvZHlTaXplIjogOTYxNiwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTEyNDd9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAzOC42NSwgInJlY2VpdmUiOiA3LjA0fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjdaIiwgInRpbWUiOiA0Mi4xODksICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvY29tbW9uLXJlZGVzaWduLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQ5MywgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogInVTdW1mVDl5OTgzUzVpMnBtemk4cDJSbm51aTdKbWZ3WnY4MFFSUnBEUXctMTY4NDk0Mjg3NS0wLUFVRlUwQ25SQWhwVmFGUU1JQ3RhNDZYWkFXd1ZwYmhURmYvVDROcWw3ckRXaUkzVjVoYzdWQXhHNm40MVFNbE55Y2RjcHByTXVVMVdYQi9wRXBLdmR4UT0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ0ZWQ4YzYzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTUgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVF4bUVIcjVVTjNhcEVkZEJrS0hVMWtrODlhWTd1UEF1Vkp4NEdTQUFEUFBxXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09dVN1bWZUOXk5ODNTNWkycG16aThwMlJubnVpN0ptZndadjgwUVJScERRdy0xNjg0OTQyODc1LTAtQVVGVTBDblJBaHBWYUZRTUlDdGE0NlhaQVd3VnBiaFRGZi9UNE5xbDdyRFdpSTNWNWhjN1ZBeEc2bjQxUU1sTnljZGNwcHJNdVUxV1hCL3BFcEt2ZHhRPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE1IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9jb21tb24tcmVkZXNpZ24uanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtUXhtRUhyNVVOM2FwRWRkQmtLSFUxa2s4OWFZN3VQQXVWSng0R1NBQURQUHEifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDkwNTEsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogNjM0NSwgInRleHQiOiAidmFyIGNvdW50PTA7XG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe3RyeXskKFwiI3BvcG92ZXJcIikucG9wb3Zlcih7b2Zmc2V0OjEwLHRyaWdnZXI6XCJtYW51YWxcIixwbGFjZW1lbnQ6XCJib3R0b21cIixodG1sOnRydWUsY29udGVudDpmdW5jdGlvbigpe3JldHVybiAkKFwiI2Rpc3BsYXlDb250ZW50XCIpLmh0bWwoKX19KS5jbGljayhmdW5jdGlvbihjKXskKHRoaXMpLnBvcG92ZXIoXCJ0b2dnbGVcIik7Yy5wcmV2ZW50RGVmYXVsdCgpfSl9Y2F0Y2goYSl7fSQoXCIjcG9wb3ZlclwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIucG9wb3ZlclwiKS5jc3Moe29wYWNpdHk6XCIwLjg2XCIsdG9wOlwiNDhweFwifSl9KTt2YXIgYj1jYXBpZCE9XCJcIj8kKFwiLmRlZmF1bHRUZXh0MlwiKS52YWwoKTpcIlwiO2lmKCQoXCIuZGVmYXVsdFRleHRcIikudmFsKCk9PVwiXCImJiQoXCIuZGVmYXVsdFRleHQxXCIpLnZhbCgpPT1cIlwiJiZiPT1cIlwiKSQoXCIuZGVmYXVsdFRleHQsLmRlZmF1bHRUZXh0MSwuZGVmYXVsdFRleHQyXCIpLmNzcyhcInRleHQtYWxpZ25cIixcImNlbnRlclwiKTtcbmVsc2V7aWYoJChcIi5kZWZhdWx0VGV4dFwiKS52YWwoKSE9XCJcIil7JChcIi5kZWZhdWx0VGV4dFwiKS5jc3MoXCJ0ZXh0LWFsaWduXCIsXCJsZWZ0XCIpOyQoXCIuZGVmYXVsdFRleHQxLC5kZWZhdWx0VGV4dDJcIikuY3NzKFwidGV4dC1hbGlnblwiLFwiY2VudGVyXCIpfWlmKCQoXCIuZGVmYXVsdFRleHQxXCIpLnZhbCgpIT1cIlwiKXskKFwiLmRlZmF1bHRUZXh0MVwiKS5jc3MoXCJ0ZXh0LWFsaWduXCIsXCJsZWZ0XCIpOyQoXCIuZGVmYXVsdFRleHQyXCIpLmNzcyhcInRleHQtYWxpZ25cIixcImNlbnRlclwiKX19JChcIi5kZWZhdWx0VGV4dCwuZGVmYXVsdFRleHQxLC5kZWZhdWx0VGV4dDJcIikuZm9jdXMoZnVuY3Rpb24oKXskKHRoaXMpLmNzcyhcInRleHQtYWxpZ25cIixcImxlZnRcIik7aWYoJCh0aGlzKS52YWwoKT09XCJVc2VyIElEXCJ8fCQodGhpcykudmFsKCk9PVwiUGFzc3dvcmRcInx8JCh0aGlzKS52YWwoKT09XCJTZWN1cml0eSBDb2RlXCIpJCh0aGlzKS52YWwoXCJcIik7JCh0aGlzKS5kYXRhKFwicGxhY2Vob2xkZXJcIiwkKHRoaXMpLmF0dHIoXCJwbGFjZWhvbGRlclwiKSk7XG4kKHRoaXMpLmF0dHIoXCJwbGFjZWhvbGRlclwiLFwiXCIpfSkuYmx1cihmdW5jdGlvbigpeyQodGhpcykudmFsKCk9PVwiXCI/JCh0aGlzKS5jc3MoXCJ0ZXh0LWFsaWduXCIsXCJjZW50ZXJcIik6JCh0aGlzKS5jc3MoXCJ0ZXh0LWFsaWduXCIsXCJsZWZ0XCIpOyQodGhpcykuYXR0cihcInBsYWNlaG9sZGVyXCIsJCh0aGlzKS5kYXRhKFwicGxhY2Vob2xkZXJcIikpfSk7JChcIiN3ZWJNYWlsXCIpLmhvdmVyKGZ1bmN0aW9uKCl7JChcIiN3ZWJNYWlsXCIpLmNzcyhcImN1cnNvclwiLFwicG9pbnRlclwiKX0pOyQoXCIjd2ViTWFpbFwiKS5jbGljayhmdW5jdGlvbigpe3dpbmRvdy5vcGVuKHNjaGVtZSt3ZWJtYWlsU2VydmVyK1wiLz9jZj1TUDJcIixcIl9ibGFua1wiKX0pfSk7JChkb2N1bWVudCkubW91c2V1cChmdW5jdGlvbihhKXskKFwiLnBvcG92ZXJcIikuaGFzKGEudGFyZ2V0KS5sZW5ndGg9PT0wJiYkKFwiLnBvcG92ZXJcIikudG9nZ2xlQ2xhc3MoXCJpblwiKS5yZW1vdmUoKX0pO1xuZnVuY3Rpb24gb25seUNhcHRjaGEoYSl7aWYoYS5jYXB0Y2hhVHlwZWRXb3JkLnZhbHVlLmxlbmd0aD09MCl7YWxlcnQoXCJDYXB0Y2hhIHJlcXVpcmVkIVwiKTthLmNhcHRjaGFUeXBlZFdvcmQuZm9jdXMoKTtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZnVuY3Rpb24gdmFsaWRhdGVVc2VySWQoYSl7YT0kLnRyaW0oYSk7aWYoYS5sZW5ndGg9PTB8fGE9PVwiVXNlciBJRFwiKXthbGVydChcIlVzZXIgSUQgcmVxdWlyZWQhXCIpOyQoXCIudXNlck5leHRcIikucHJvcChcImRpc2FibGVkXCIsZmFsc2UpOyQoXCJodG1sXCIpLmNzcyhcImN1cnNvclwiLFwiYXV0b1wiKTskKFwiI21lbWJlcklkXCIpLmZvY3VzKCk7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gbG9nb25WYWxpZGF0ZShhKXtpZighYXJlQ29va2llc0VuYWJsZWQoKSlyZXR1cm4gZmFsc2U7dmFyIGI9JC50cmltKGEubWVtYmVySWQudmFsdWUpO2EubWVtYmVySWQudmFsdWU9JC50cmltKGEubWVtYmVySWQudmFsdWUpO2lmKGIubGVuZ3RoPT0wfHxiPT1cIlVzZXIgSURcIil7YWxlcnQoXCJVc2VyIElEIHJlcXVpcmVkIVwiKTthLm1lbWJlcklkLmZvY3VzKCk7cmV0dXJuIGZhbHNlfWlmKGEucGFzc3dvcmQudmFsdWUubGVuZ3RoPT0wfHxhLnBhc3N3b3JkLnZhbHVlPT1cIlBhc3N3b3JkXCIpe2FsZXJ0KFwiUGFzc3dvcmQgcmVxdWlyZWQhXCIpO2EucGFzc3dvcmQuZm9jdXMoKTtyZXR1cm4gZmFsc2V9aWYoY2FwaWQhPVwiXCIpaWYoYS5jYXB0Y2hhVHlwZWRXb3JkLnZhbHVlLmxlbmd0aD09MHx8YS5jYXB0Y2hhVHlwZWRXb3JkLnZhbHVlPT1cIlNlY3VyaXR5IENvZGVcIil7YWxlcnQoXCJDYXB0Y2hhIHJlcXVpcmVkIVwiKTthLmNhcHRjaGFUeXBlZFdvcmQuZm9jdXMoKTtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBnZXRDb29raWVWYWx1ZShhKXt2YXIgYj1kb2N1bWVudC5jb29raWUsYz1iLmluZGV4T2YoYStcIj1cIik7aWYoYz09LTEpcmV0dXJuIG51bGw7YT1jK2EubGVuZ3RoO2M9Yi5pbmRleE9mKFwiO1wiLGEpO2lmKGM9PS0xKWM9Yi5sZW5ndGg7Yj1iLnN1YnN0cmluZyhhLGMpO2lmKGIuY2hhckF0KDApPT1cIj1cIiliPWIuc3Vic3RyaW5nKDEsYi5sZW5ndGgpO3JldHVybiBifWZ1bmN0aW9uIHNldFRha2VBVG91ckNvb2tpZShhLGIsYyl7ZXhwaXJlPVwiO2V4cGlyZXM9VHVlLCAzMSBEZWMgMjAxNSAwMTowMTowMSBHTVRcIjtpZihhcmd1bWVudHMubGVuZ3RoPjIpe21zZWNzPWMqMjQqNjAqNjAqMUUzKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO3RoZW49bmV3IERhdGUobXNlY3MpO2V4cGlyZT1cIjtleHBpcmVzPVwiK3RoZW4udG9HTVRTdHJpbmcoKX12YXIgZD1nZXRDb29raWVEb21haW4oKTtkb2N1bWVudC5jb29raWU9YStcIj1cIitiK2V4cGlyZStcIjtwYXRoPS9cIitkfVxuZnVuY3Rpb24gc2V0RG9udFNob3dDb29raWUoYSxiLGMpe2V4cGlyZT1cIjtleHBpcmVzPVR1ZSwgMzEgRGVjIDIwMTUgMDE6MDE6MDEgR01UXCI7aWYoYXJndW1lbnRzLmxlbmd0aD4yKXttc2Vjcz1jKjI0KjYwKjYwKjFFMysobmV3IERhdGUpLmdldFRpbWUoKTt0aGVuPW5ldyBEYXRlKG1zZWNzKTtleHBpcmU9XCI7ZXhwaXJlcz1cIit0aGVuLnRvR01UU3RyaW5nKCl9dmFyIGQ9Z2V0Q29va2llRG9tYWluKCk7ZG9jdW1lbnQuY29va2llPWErXCI9XCIrYitleHBpcmUrXCI7cGF0aD0vXCIrZH1cbmZ1bmN0aW9uIHNldEtlZXBNZVNpZ25pbihhLGIsYyl7ZXhwaXJlPVwiO2V4cGlyZXM9VHVlLCAzMSBEZWMgMjAyNCAwMTowMTowMSBHTVRcIjtpZihhcmd1bWVudHMubGVuZ3RoPjIpe21zZWNzPWMqMjQqNjAqNjAqMUUzKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO3RoZW49bmV3IERhdGUobXNlY3MpO2V4cGlyZT1cIjtleHBpcmVzPVwiK3RoZW4udG9HTVRTdHJpbmcoKX12YXIgZD1nZXRDb29raWVEb21haW4oKTtkb2N1bWVudC5jb29raWU9YStcIj1cIitiK2V4cGlyZStcIjtwYXRoPS9cIitkfVxuZnVuY3Rpb24gc2V0VG9vbFRpcFNob3duKGEsYixjKXtleHBpcmU9XCI7ZXhwaXJlcz1UdWUsIDMxIERlYyAyMDE1IDAxOjAxOjAxIEdNVFwiO2lmKGFyZ3VtZW50cy5sZW5ndGg+Mil7bXNlY3M9YyoyNCo2MCo2MCoxRTMrKG5ldyBEYXRlKS5nZXRUaW1lKCk7dGhlbj1uZXcgRGF0ZShtc2Vjcyk7ZXhwaXJlPVwiO2V4cGlyZXM9XCIrdGhlbi50b0dNVFN0cmluZygpfXZhciBkPWdldENvb2tpZURvbWFpbigpO2RvY3VtZW50LmNvb2tpZT1hK1wiPVwiK2IrZXhwaXJlK1wiO3BhdGg9L1wiK2R9dmFyIGhyZWY9ZG9jdW1lbnQubG9jYXRpb24uaHJlZjtcbmZ1bmN0aW9uIGdldENvb2tpZURvbWFpbigpe3ZhciBhPVwiXCI7aWYoaHJlZi5pbmRleE9mKFwiLm5ldHplcm8ubmV0XCIpIT0tMSlhPVwiOyBkb21haW49Lm5ldHplcm8ubmV0XCI7aWYoaHJlZi5pbmRleE9mKFwiLmp1bm8uY29tXCIpIT0tMSlhPVwiOyBkb21haW49Lmp1bm8uY29tXCI7aWYoaHJlZi5pbmRleE9mKFwiLm15Ymx1ZWxpZ2h0LmNvbVwiKSE9LTEpYT1cIjsgZG9tYWluPS5teWJsdWVsaWdodC5jb21cIjtyZXR1cm4gYX1cbmZ1bmN0aW9uIGdldFVucmVhZEVtYWlsQ291bnQoYSxiKXt2YXIgYz17c2Vzc2lvbl90eXBlOlwiTkVXX01BSUxfTk9USUZJQ0FUSU9OXCIsY2xpZW50Olwic3BcIixjb21tYW5kOlwiZ2V0bmV3bWFpbFwiLHVucmVhZG1haWw6MSxmb3JtYXQ6XCJqc29uXCJ9OyQuZXh0ZW5kKGMsYik7JC5hamF4KHt0eXBlOlwiR0VUXCIsZGF0YVR5cGU6XCJqc29ucFwiLGNyb3NzRG9tYWluOnRydWUsanNvbnA6XCJqc29ucF9jYWxsYmFja1wiLHVybDpsb2NhdGlvbi5wcm90b2NvbCtcIi8vXCIrYStcIi9uZXdtYWlsXCIsZGF0YTpjfSkuc3VjY2VzcyhmdW5jdGlvbihkKXtpZihkKXtkPXBhcnNlSW50KGQubmV3TWFpbERldGFpbHMudWNvdW50UlMsMTApO2lmKGQhPT0wKXtpZighKGQ+MCYmZDw9OTkpKWlmKGQ+OTkpZD1cIjk5K1wifWVsc2UgZD1cIm5vXCI7JChcIiN1bnJlYWRDb3VudFwiKS5lbXB0eSgpLnRleHQoZCk7JChcIiNtYWlsc1wiKS5zaG93KCl9fSl9XG5mdW5jdGlvbiBnZXRQaG9uZU51bWJlcihhKXtpZihhPT1cIk5cIilkb2N1bWVudC53cml0ZShcIjEtODAwLTYzOC05Mzc2XCIpO2Vsc2UgYT09XCJKXCI/ZG9jdW1lbnQud3JpdGUoXCIxLTgwMC02NTQtNTg2NlwiKTpkb2N1bWVudC53cml0ZShcIjEtODAwLTUyMi0wODM5XCIpfWZ1bmN0aW9uIHJpZ2h0cyhhKXt3aW5kb3cub3BlbihcImh0dHA6Ly9cIithK1wiL3N0YXJ0L2xhbmRpbmcuZG8/cGFnZT13d3cvcG9wdXAveW91cnByaXZhY3lyaWdodHNcIixcInNlY3VyZVwiLFwidGl0bGViYXI9bm8sdG9vbGJhcj1ubyxsb2NhdGlvbj1ubyxkaXJlY3Rvcmllcz1ubyxzdGF0dXM9bm8sbWVudWJhcj1ubyxyZXNpemFibGU9bm8sY29weWhpc3Rvcnk9bm8sc2Nyb2xsYmFycz1ubyxsZWZ0PTMwLHRvcD0xMCx3aWR0aD00NTAsaGVpZ2h0PTYyMFwiKX0oZnVuY3Rpb24oYSl7YS5zdXBwb3J0LnBsYWNlaG9sZGVyPVwicGxhY2Vob2xkZXJcImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKX0pKGpRdWVyeSk7XG4kKGZ1bmN0aW9uKCl7aWYoISQuc3VwcG9ydC5wbGFjZWhvbGRlcil7JChcIltwbGFjZWhvbGRlcl1cIikuZm9jdXMoZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpPT0kKHRoaXMpLmF0dHIoXCJwbGFjZWhvbGRlclwiKSYmJCh0aGlzKS52YWwoXCJcIil9KS5ibHVyKGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKT09XCJcIiYmJCh0aGlzKS52YWwoJCh0aGlzKS5hdHRyKFwicGxhY2Vob2xkZXJcIikpfSkuYmx1cigpOyQoXCJbcGxhY2Vob2xkZXJdXCIpLnBhcmVudHMoXCJsb2dpblwiKS5zdWJtaXQoZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoXCJbcGxhY2Vob2xkZXJdXCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpPT0kKHRoaXMpLmF0dHIoXCJwbGFjZWhvbGRlclwiKSYmJCh0aGlzKS52YWwoXCJcIil9KX0pfX0pO1xuZnVuY3Rpb24gZ2V0QWJzRGltZW5zaW9uKGEpe3ZhciBiPWEub2Zmc2V0KCk7cmV0dXJue2xlZnQ6Yi5sZWZ0LHRvcDpiLnRvcCx3aWR0aDphLm91dGVyV2lkdGgoKSxoZWlnaHQ6YS5vdXRlckhlaWdodCgpfX1cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7dmFyIGE9JChcIi5tZW51YmFyXCIpLGI9JChcIiN4MDlXcmFwXCIpLGM9JChcIiN4MDRXcmFwXCIpOyQoXCIubmF2QmFyU2lnbkluXCIpOyQoXCIucGljdG8tdG9yc29cIik7JChcIi50YWtldGhldG91clwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIud2VsY29tZU92bFwiKS5tb2RhbChcImhpZGVcIik7JChcIi5zaWduaW5PdmxcIikubW9kYWwoXCJzaG93XCIpLmNzcyh7aGVpZ2h0OlwiNDAwcHhcIixsZWZ0OlwiNjQ1cHhcIn0pO3dpbmRvdy5zY3JvbGxUbygwLDApfSk7JChcIi5zaWduaW5PdmxOZXh0XCIpLmNsaWNrKGZ1bmN0aW9uKCl7JChcIi5zaWduaW5PdmxcIikubW9kYWwoXCJoaWRlXCIpOyQoXCIuYWRkb25zT3ZsXCIpLm1vZGFsKFwic2hvd1wiKS5jc3Moe2hlaWdodDpcIjQwMHB4XCIsbGVmdDpcIjQzMHB4XCJ9KTt3aW5kb3cuc2Nyb2xsVG8oMCwwKX0pOyQoXCIuYWRkb25zT3ZsTmV4dFwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIuYWRkb25zT3ZsXCIpLm1vZGFsKFwiaGlkZVwiKTtnZXRBYnNEaW1lbnNpb24oYSk7XG4kKFwiLmNvbnRlbnR0YWJzT3ZsXCIpLm1vZGFsKFwic2hvd1wiKS5jc3MoXCJ0b3BcIixcIjEwMHB4XCIpOyQoXCIubWVudWJhclwiKS5hZGRDbGFzcyhcInRpcHNIaWdobGlnaHRcIil9KTskKFwiLmNvbnRlbnROZXh0XCIpLmNsaWNrKGZ1bmN0aW9uKCl7JChcIi5jb250ZW50dGFic092bFwiKS5tb2RhbChcImhpZGVcIik7JChcIi53ZWF0aGVyT3ZsXCIpLm1vZGFsKFwic2hvd1wiKS5jc3Moe2hlaWdodDpcIjQwMHB4XCIsbGVmdDpcIjkwcHhcIix0b3A6JChcIiN4MDlXcmFwXCIpLm9mZnNldCgpLnRvcC05MCtcInB4XCJ9KTskKFwiaHRtbCwgYm9keVwiKS5hbmltYXRlKHtzY3JvbGxUb3A6JChcIiN4MDlXcmFwXCIpLm9mZnNldCgpLnRvcC05MH0sMkUzKTtnZXRBYnNEaW1lbnNpb24oYik7JChcIi5tZW51YmFyXCIpLnJlbW92ZUNsYXNzKFwidGlwc0hpZ2hsaWdodFwiKTskKFwiI3gwOVdyYXBcIikuYWRkQ2xhc3MoXCJ0aXBzSGlnaGxpZ2h0XCIpfSk7JChcIi53ZWF0aGVyTmV4dFwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIud2VhdGhlck92bFwiKS5tb2RhbChcImhpZGVcIik7XG4kKFwiLnN0b2Nrc092bFwiKS5tb2RhbChcInNob3dcIikuY3NzKHtoZWlnaHQ6XCI0MDBweFwiLGxlZnQ6XCI3OTVweFwiLHRvcDokKFwiI3gwNFdyYXBcIikub2Zmc2V0KCkudG9wLTkwK1wicHhcIn0pOyQoXCJodG1sLCBib2R5XCIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKFwiI3gwNFdyYXBcIikub2Zmc2V0KCkudG9wLTkwfSwyRTMpO2dldEFic0RpbWVuc2lvbihjKTskKFwiI3gwOVdyYXBcIikucmVtb3ZlQ2xhc3MoXCJ0aXBzSGlnaGxpZ2h0XCIpOyQoXCIjeDA0V3JhcFwiKS5hZGRDbGFzcyhcInRpcHNIaWdobGlnaHRcIil9KTskKFwiLnN0b2Nrc05leHRcIikuY2xpY2soZnVuY3Rpb24oKXskKFwiLnN0b2Nrc092bFwiKS5tb2RhbChcImhpZGVcIik7JChcIi50aGFua092bFwiKS5tb2RhbChcInNob3dcIik7JChcIiN4MDRXcmFwXCIpLnJlbW92ZUNsYXNzKFwidGlwc0hpZ2hsaWdodFwiKTt3aW5kb3cuc2Nyb2xsVG8oMCwwKX0pOyQoXCIucmV0YWtldG91clwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIudGhhbmtPdmxcIikubW9kYWwoXCJoaWRlXCIpO1xuJChcIi5zaWduaW5PdmxcIikubW9kYWwoXCJzaG93XCIpLmNzcyh7aGVpZ2h0OlwiNDAwcHhcIixsZWZ0OlwiNTIwcHhcIix0b3A6JChcIi5uYXZCYXJTaWduSW5cIikub2Zmc2V0KCkudG9wK1wicHhcIn0pO3dpbmRvdy5zY3JvbGxUbygwLDApfSk7JChcIi5zaWduaW5PdmxQcmV2XCIpLmNsaWNrKGZ1bmN0aW9uKCl7JChcIi5zaWduaW5PdmxcIikubW9kYWwoXCJoaWRlXCIpOyQoXCIud2VsY29tZU92bFwiKS5tb2RhbChcInNob3dcIik7d2luZG93LnNjcm9sbFRvKDAsMCl9KTskKFwiLmFkZG9uc3ByZXZcIikuY2xpY2soZnVuY3Rpb24oKXskKFwiLmFkZG9uc092bFwiKS5tb2RhbChcImhpZGVcIik7JChcIi5zaWduaW5PdmxcIikubW9kYWwoXCJzaG93XCIpO3dpbmRvdy5zY3JvbGxUbygwLDApfSk7JChcIi5jb250ZW50UHJldlwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIuY29udGVudHRhYnNPdmxcIikubW9kYWwoXCJoaWRlXCIpOyQoXCIuYWRkb25zT3ZsXCIpLm1vZGFsKFwic2hvd1wiKS5jc3Moe2hlaWdodDpcIjQwMHB4XCIsbGVmdDpcIjQzMHB4XCJ9KTtcbiQoXCIubWVudWJhclwiKS5yZW1vdmVDbGFzcyhcInRpcHNIaWdobGlnaHRcIik7d2luZG93LnNjcm9sbFRvKDAsMCl9KTskKFwiLndlYXRoZXJQcnZcIikuY2xpY2soZnVuY3Rpb24oKXskKFwiLndlYXRoZXJPdmxcIikubW9kYWwoXCJoaWRlXCIpOyQoXCIuY29udGVudHRhYnNPdmxcIikubW9kYWwoXCJzaG93XCIpO3dpbmRvdy5zY3JvbGxUbygwLDApO2dldEFic0RpbWVuc2lvbihhKTskKFwiI3gwOVdyYXBcIikucmVtb3ZlQ2xhc3MoXCJ0aXBzSGlnaGxpZ2h0XCIpOyQoXCIubWVudWJhclwiKS5hZGRDbGFzcyhcInRpcHNIaWdobGlnaHRcIil9KTskKFwiLnN0b2Nrc1ByZXZcIikuY2xpY2soZnVuY3Rpb24oKXskKFwiLnN0b2Nrc092bFwiKS5tb2RhbChcImhpZGVcIik7JChcIi53ZWF0aGVyT3ZsXCIpLm1vZGFsKFwic2hvd1wiKTskKFwiaHRtbCwgYm9keVwiKS5hbmltYXRlKHtzY3JvbGxUb3A6JChcIiN4MDlXcmFwXCIpLm9mZnNldCgpLnRvcC05MH0sMkUzKTtnZXRBYnNEaW1lbnNpb24oYyk7JChcIiN4MDRXcmFwXCIpLnJlbW92ZUNsYXNzKFwidGlwc0hpZ2hsaWdodFwiKTtcbiQoXCIjeDA5V3JhcFwiKS5hZGRDbGFzcyhcInRpcHNIaWdobGlnaHRcIil9KX0pO2Z1bmN0aW9uIHVzZXJDb25zZW50Rm9yQWRzQ29va2llKGEsYixjLGQsZixnKXt2YXIgZT1uZXcgRGF0ZTtlLnNldFRpbWUoZS5nZXRUaW1lKCkpO2lmKGMpYz1jKjM2NSoyNCo2MCo2MCoxRTM7ZT1uZXcgRGF0ZShlLmdldFRpbWUoKStjKTtkb2N1bWVudC5jb29raWU9YStcIj1cIitlc2NhcGUoYikrKGM/XCI7ZXhwaXJlcz1cIitlLnRvVVRDU3RyaW5nKCk6XCJcIikrKGQ/XCI7cGF0aD1cIitkOlwiXCIpKyhmP1wiO2RvbWFpbj1cIitmOlwiXCIpKyhnP1wiO3NlY3VyZVwiOlwiXCIpfVxuZnVuY3Rpb24gc2hvd1VzZXJDb25zZW50T3ZlcmxheSgpe3ZhciBhPWdldENvb2tpZVZhbHVlKFwidV9jb25zZW50XCIpO2lmKGE9PW51bGwpeyQoXCIuc3BBZHNcIikuaGlkZSgpOyQoXCIjdXNlckNvbnNlbnRGb3JBZHNQb3B1cFwiKS5zaG93KCl9ZWxzZSBpZihhLmluZGV4T2YoXCJ5XCIpIT0tMSl7JChcIi5zcEFkc1wiKS5zaG93KCk7JChcIiNBZExvYWRlclwiKS5sb2FkKFwibGFuZGluZy5kbz9wYWdlPWFkc0RlY2xhcmF0aW9uXCIpfX1cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7JChcIiNhbGxvd0J1dHRvblwiKS5jbGljayhmdW5jdGlvbigpeyQoXCIuc3BBZHNcIikuc2hvdygpO2xvY2F0aW9uLnRvU3RyaW5nKCkuaW5kZXhPZihcImxvZ2luLmRvXCIpIT0tMT9sb2NhdGlvbi5yZWxvYWQoKTokKFwiI0FkTG9hZGVyXCIpLmxvYWQoXCJsYW5kaW5nLmRvP3BhZ2U9YWRzRGVjbGFyYXRpb25cIik7JChcIiN1c2VyQ29uc2VudEZvckFkc1BvcHVwXCIpLmhpZGUoKTt1c2VyQ29uc2VudEZvckFkc0Nvb2tpZShcInVfY29uc2VudFwiLFwiMXlcIixcIjE5XCIsXCIvXCIsZW52RG9tYWluLGZhbHNlKTtpZihnZXRDb29raWVWYWx1ZShcIkxPR0lOXCIpIT1udWxsJiZnZXRDb29raWVWYWx1ZShcInVfY29uc2VudFwiKS5pbmRleE9mKFwieVwiKSE9LTEpeyhJbWFnZT9uZXcgSW1hZ2UoMSwxKTp1bmRlZmluZWQpLnNyYz1cIi9zdGFydC9zcC5kbz9hY3Rpb249dXBkYXRlQ1BUZXJtc1wiO3VzZXJDb25zZW50Rm9yQWRzQ29va2llKFwidV9jb25zZW50XCIsXCIweVwiLFwiMTlcIixcblwiL1wiLGVudkRvbWFpbixmYWxzZSl9fSl9KTtcbiJ9LCAiaGVhZGVyc1NpemUiOiAxNjQ1LCAiYm9keVNpemUiOiAyNzA2LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA0MzUxfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzUuMzQxLCAicmVjZWl2ZSI6IDYuODQ4fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjdaIiwgInRpbWUiOiA1Mi4yODcsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvbW9iaWxlLWRldGVjdC5taW4uanMuZG93bmxvYWQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDk1LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiWlVzcndvY29EZEJ2QUp6aktxNWh0SmVxV1Y5UktqM3dwdmtkcXFKbG5vNC0xNjg0OTQyODc2LTAtQVFmUkl1L3Z6K3IyYjVKQVlmWlZHT3A3dTZLWFJKNy9aUFhDRmVualRlcEZPOEp6S2swc0p3WlovallWUjRneVNvc1BIbU9jRDZYTll2aUNlc00rWVNzPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MiJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDRmMDkxZTM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtWFpONGp5WDVENHZHR2lQVVdZRmRpTFlmWWUzN0RwYlJkdmM5cGdCelNMcmpcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1aVXNyd29jb0RkQnZBSnpqS3E1aHRKZXFXVjlSS2ozd3B2a2RxcUpsbm80LTE2ODQ5NDI4NzYtMC1BUWZSSXUvdnorcjJiNUpBWWZaVkdPcDd1NktYUko3L1pQWENGZW5qVGVwRk84SnpLazBzSndaWi9qWVZSNGd5U29zUEhtT2NENlhOWXZpQ2VzTStZU3M9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTYgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL21vYmlsZS1kZXRlY3QubWluLmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVhaTjRqeVg1RDR2R0dpUFVXWUZkaUxZZlllMzdEcGJSZHZjOXBnQnpTTHJqIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzNTcxNywgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAyMDY0NCwgInRleHQiOiAiLyohIG1vYmlsZS1kZXRlY3QgLSB2MS4yLjEgLSAyMDE1LTA3LTE5XG5odHRwczovL2dpdGh1Yi5jb20vaGdvZWJsL21vYmlsZS1kZXRlY3QuanMgKi8hZnVuY3Rpb24oYSxiKXthKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYShhLGIpe3JldHVybiBudWxsIT1hJiZudWxsIT1iJiZhLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gYyhhKXtmb3IodmFyIGIgaW4gYSlnLmNhbGwoYSxiKSYmKGFbYl09bmV3IFJlZ0V4cChhW2JdLFwiaVwiKSl9ZnVuY3Rpb24gZChhLGIpe3RoaXMudWE9YXx8XCJcIix0aGlzLl9jYWNoZT17fSx0aGlzLm1heFBob25lV2lkdGg9Ynx8NjAwfXZhciBlPXt9O2UubW9iaWxlRGV0ZWN0UnVsZXM9e3Bob25lczp7aVBob25lOlwiXFxcXGJpUGhvbmVcXFxcYnxcXFxcYmlQb2RcXFxcYlwiLEJsYWNrQmVycnk6XCJCbGFja0JlcnJ5fFxcXFxiQkIxMFxcXFxifHJpbVswLTldK1wiLEhUQzpcIkhUQ3xIVEMuKihTZW5zYXRpb258RXZvfFZpc2lvbnxFeHBsb3Jlcnw2ODAwfDgxMDB8ODkwMHxBNzI3MnxTNTEwZXxDMTEwZXxMZWdlbmR8RGVzaXJlfFQ4MjgyKXxBUFg1MTVDS1R8UXRlazkwOTB8QVBBOTI5MktUfEhEX21pbml8U2Vuc2F0aW9uLipaNzEwZXxQRzg2MTAwfFo3MTVlfERlc2lyZS4qKEE4MTgxfEhEKXxBRFI2MjAwfEFEUjY0MDBMfEFEUjY0MjV8MDAxSFR8SW5zcGlyZSA0R3xBbmRyb2lkLipcXFxcYkVWT1xcXFxifFQtTW9iaWxlIEcxfFo1MjBtXCIsTmV4dXM6XCJOZXh1cyBPbmV8TmV4dXMgU3xHYWxheHkuKk5leHVzfEFuZHJvaWQuKk5leHVzLipNb2JpbGV8TmV4dXMgNHxOZXh1cyA1fE5leHVzIDZcIixEZWxsOlwiRGVsbC4qU3RyZWFrfERlbGwuKkFlcm98RGVsbC4qVmVudWV8REVMTC4qVmVudWUgUHJvfERlbGwgRmxhc2h8RGVsbCBTbW9rZXxEZWxsIE1pbmkgM2lYfFhDRDI4fFhDRDM1fFxcXFxiMDAxRExcXFxcYnxcXFxcYjEwMURMXFxcXGJ8XFxcXGJHUzAxXFxcXGJcIixNb3Rvcm9sYTpcIk1vdG9yb2xhfERST0lEWHxEUk9JRCBCSU9OSUN8XFxcXGJEcm9pZFxcXFxiLipCdWlsZHxBbmRyb2lkLipYb29tfEhSSTM5fE1PVC18QTEyNjB8QTE2ODB8QTU1NXxBODUzfEE4NTV8QTk1M3xBOTU1fEE5NTZ8TW90b3JvbGEuKkVMRUNUUklGWXxNb3Rvcm9sYS4qaTF8aTg2N3xpOTQwfE1CMjAwfE1CMzAwfE1CNTAxfE1CNTAyfE1CNTA4fE1CNTExfE1CNTIwfE1CNTI1fE1CNTI2fE1CNjExfE1CNjEyfE1CNjMyfE1CODEwfE1CODU1fE1CODYwfE1CODYxfE1CODY1fE1CODcwfE1FNTAxfE1FNTAyfE1FNTExfE1FNTI1fE1FNjAwfE1FNjMyfE1FNzIyfE1FODExfE1FODYwfE1FODYzfE1FODY1fE1UNjIwfE1UNzEwfE1UNzE2fE1UNzIwfE1UODEwfE1UODcwfE1UOTE3fE1vdG9yb2xhLipUSVRBTklVTXxXWDQzNXxXWDQ0NXxYVDMwMHxYVDMwMXxYVDMxMXxYVDMxNnxYVDMxN3xYVDMxOXxYVDMyMHxYVDM5MHxYVDUwMnxYVDUzMHxYVDUzMXxYVDUzMnxYVDUzNXxYVDYwM3xYVDYxMHxYVDYxMXxYVDYxNXxYVDY4MXxYVDcwMXxYVDcwMnxYVDcxMXxYVDcyMHxYVDgwMHxYVDgwNnxYVDg2MHxYVDg2MnxYVDg3NXxYVDg4MnxYVDg4M3xYVDg5NHxYVDkwMXxYVDkwN3xYVDkwOXxYVDkxMHxYVDkxMnxYVDkyOHxYVDkyNnxYVDkxNXxYVDkxOXxYVDkyNXxYVDEwMjF8XFxcXGJNb3RvIEVcXFxcYlwiLFNhbXN1bmc6XCJTYW1zdW5nfFNNLUc5MjUwfEdULTE5MzAwfFNHSC1JMzM3fEJHVC1TNTIzMHxHVC1CMjEwMHxHVC1CMjcwMHxHVC1CMjcxMHxHVC1CMzIxMHxHVC1CMzMxMHxHVC1CMzQxMHxHVC1CMzczMHxHVC1CMzc0MHxHVC1CNTUxMHxHVC1CNTUxMnxHVC1CNTcyMnxHVC1CNjUyMHxHVC1CNzMwMHxHVC1CNzMyMHxHVC1CNzMzMHxHVC1CNzM1MHxHVC1CNzUxMHxHVC1CNzcyMnxHVC1CNzgwMHxHVC1DMzAxMHxHVC1DMzAxMXxHVC1DMzA2MHxHVC1DMzIwMHxHVC1DMzIxMnxHVC1DMzIxMkl8R1QtQzMyNjJ8R1QtQzMyMjJ8R1QtQzMzMDB8R1QtQzMzMDBLfEdULUMzMzAzfEdULUMzMzAzS3xHVC1DMzMxMHxHVC1DMzMyMnxHVC1DMzMzMHxHVC1DMzM1MHxHVC1DMzUwMHxHVC1DMzUxMHxHVC1DMzUzMHxHVC1DMzYzMHxHVC1DMzc4MHxHVC1DNTAxMHxHVC1DNTIxMnxHVC1DNjYyMHxHVC1DNjYyNXxHVC1DNjcxMnxHVC1FMTA1MHxHVC1FMTA3MHxHVC1FMTA3NXxHVC1FMTA4MHxHVC1FMTA4MXxHVC1FMTA4NXxHVC1FMTA4N3xHVC1FMTEwMHxHVC1FMTEwN3xHVC1FMTExMHxHVC1FMTEyMHxHVC1FMTEyNXxHVC1FMTEzMHxHVC1FMTE2MHxHVC1FMTE3MHxHVC1FMTE3NXxHVC1FMTE4MHxHVC1FMTE4MnxHVC1FMTIwMHxHVC1FMTIxMHxHVC1FMTIyNXxHVC1FMTIzMHxHVC1FMTM5MHxHVC1FMjEwMHxHVC1FMjEyMHxHVC1FMjEyMXxHVC1FMjE1MnxHVC1FMjIyMHxHVC1FMjIyMnxHVC1FMjIzMHxHVC1FMjIzMnxHVC1FMjI1MHxHVC1FMjM3MHxHVC1FMjU1MHxHVC1FMjY1MnxHVC1FMzIxMHxHVC1FMzIxM3xHVC1JNTUwMHxHVC1JNTUwM3xHVC1JNTcwMHxHVC1JNTgwMHxHVC1JNTgwMXxHVC1JNjQxMHxHVC1JNjQyMHxHVC1JNzExMHxHVC1JNzQxMHxHVC1JNzUwMHxHVC1JODAwMHxHVC1JODE1MHxHVC1JODE2MHxHVC1JODE5MHxHVC1JODMyMHxHVC1JODMzMHxHVC1JODM1MHxHVC1JODUzMHxHVC1JODcwMHxHVC1JODcwM3xHVC1JODkxMHxHVC1JOTAwMHxHVC1JOTAwMXxHVC1JOTAwM3xHVC1JOTAxMHxHVC1JOTAyMHxHVC1JOTAyM3xHVC1JOTA3MHxHVC1JOTA4MnxHVC1JOTEwMHxHVC1JOTEwM3xHVC1JOTIyMHxHVC1JOTI1MHxHVC1JOTMwMHxHVC1JOTMwNXxHVC1JOTUwMHxHVC1JOTUwNXxHVC1NMzUxMHxHVC1NNTY1MHxHVC1NNzUwMHxHVC1NNzYwMHxHVC1NNzYwM3xHVC1NODgwMHxHVC1NODkxMHxHVC1ONzAwMHxHVC1TMzExMHxHVC1TMzMxMHxHVC1TMzM1MHxHVC1TMzM1M3xHVC1TMzM3MHxHVC1TMzY1MHxHVC1TMzY1M3xHVC1TMzc3MHxHVC1TMzg1MHxHVC1TNTIxMHxHVC1TNTIyMHxHVC1TNTIyOXxHVC1TNTIzMHxHVC1TNTIzM3xHVC1TNTI1MHxHVC1TNTI1M3xHVC1TNTI2MHxHVC1TNTI2M3xHVC1TNTI3MHxHVC1TNTMwMHxHVC1TNTMzMHxHVC1TNTM1MHxHVC1TNTM2MHxHVC1TNTM2M3xHVC1TNTM2OXxHVC1TNTM4MHxHVC1TNTM4MER8R1QtUzU1NjB8R1QtUzU1NzB8R1QtUzU2MDB8R1QtUzU2MDN8R1QtUzU2MTB8R1QtUzU2MjB8R1QtUzU2NjB8R1QtUzU2NzB8R1QtUzU2OTB8R1QtUzU3NTB8R1QtUzU3ODB8R1QtUzU4MzB8R1QtUzU4Mzl8R1QtUzYxMDJ8R1QtUzY1MDB8R1QtUzcwNzB8R1QtUzcyMDB8R1QtUzcyMjB8R1QtUzcyMzB8R1QtUzcyMzN8R1QtUzcyNTB8R1QtUzc1MDB8R1QtUzc1MzB8R1QtUzc1NTB8R1QtUzc1NjJ8R1QtUzc3MTB8R1QtUzgwMDB8R1QtUzgwMDN8R1QtUzg1MDB8R1QtUzg1MzB8R1QtUzg2MDB8U0NILUEzMTB8U0NILUE1MzB8U0NILUE1NzB8U0NILUE2MTB8U0NILUE2MzB8U0NILUE2NTB8U0NILUE3OTB8U0NILUE3OTV8U0NILUE4NTB8U0NILUE4NzB8U0NILUE4OTB8U0NILUE5MzB8U0NILUE5NTB8U0NILUE5NzB8U0NILUE5OTB8U0NILUkxMDB8U0NILUkxMTB8U0NILUk0MDB8U0NILUk0MDV8U0NILUk1MDB8U0NILUk1MTB8U0NILUk1MTV8U0NILUk2MDB8U0NILUk3MzB8U0NILUk3NjB8U0NILUk3NzB8U0NILUk4MzB8U0NILUk5MTB8U0NILUk5MjB8U0NILUk5NTl8U0NILUxDMTF8U0NILU4xNTB8U0NILU4zMDB8U0NILVIxMDB8U0NILVIzMDB8U0NILVIzNTF8U0NILVI0MDB8U0NILVI0MTB8U0NILVQzMDB8U0NILVUzMTB8U0NILVUzMjB8U0NILVUzNTB8U0NILVUzNjB8U0NILVUzNjV8U0NILVUzNzB8U0NILVUzODB8U0NILVU0MTB8U0NILVU0MzB8U0NILVU0NTB8U0NILVU0NjB8U0NILVU0NzB8U0NILVU0OTB8U0NILVU1NDB8U0NILVU1NTB8U0NILVU2MjB8U0NILVU2NDB8U0NILVU2NTB8U0NILVU2NjB8U0NILVU3MDB8U0NILVU3NDB8U0NILVU3NTB8U0NILVU4MTB8U0NILVU4MjB8U0NILVU5MDB8U0NILVU5NDB8U0NILVU5NjB8U0NTLTI2VUN8U0dILUExMDd8U0dILUExMTd8U0dILUExMjd8U0dILUExMzd8U0dILUExNTd8U0dILUExNjd8U0dILUExNzd8U0dILUExODd8U0dILUExOTd8U0dILUEyMjd8U0dILUEyMzd8U0dILUEyNTd8U0dILUE0Mzd8U0dILUE1MTd8U0dILUE1OTd8U0dILUE2Mzd8U0dILUE2NTd8U0dILUE2Njd8U0dILUE2ODd8U0dILUE2OTd8U0dILUE3MDd8U0dILUE3MTd8U0dILUE3Mjd8U0dILUE3Mzd8U0dILUE3NDd8U0dILUE3Njd8U0dILUE3Nzd8U0dILUE3OTd8U0dILUE4MTd8U0dILUE4Mjd8U0dILUE4Mzd8U0dILUE4NDd8U0dILUE4Njd8U0dILUE4Nzd8U0dILUE4ODd8U0dILUE4OTd8U0dILUE5Mjd8U0dILUIxMDB8U0dILUIxMzB8U0dILUIyMDB8U0dILUIyMjB8U0dILUMxMDB8U0dILUMxMTB8U0dILUMxMjB8U0dILUMxMzB8U0dILUMxNDB8U0dILUMxNjB8U0dILUMxNzB8U0dILUMxODB8U0dILUMyMDB8U0dILUMyMDd8U0dILUMyMTB8U0dILUMyMjV8U0dILUMyMzB8U0dILUM0MTd8U0dILUM0NTB8U0dILUQzMDd8U0dILUQzNDd8U0dILUQzNTd8U0dILUQ0MDd8U0dILUQ0MTV8U0dILUQ3ODB8U0dILUQ4MDd8U0dILUQ5ODB8U0dILUUxMDV8U0dILUUyMDB8U0dILUUzMTV8U0dILUUzMTZ8U0dILUUzMTd8U0dILUUzMzV8U0dILUU1OTB8U0dILUU2MzV8U0dILUU3MTV8U0dILUU4OTB8U0dILUYzMDB8U0dILUY0ODB8U0dILUkyMDB8U0dILUkzMDB8U0dILUkzMjB8U0dILUk1NTB8U0dILUk1Nzd8U0dILUk2MDB8U0dILUk2MDd8U0dILUk2MTd8U0dILUk2Mjd8U0dILUk2Mzd8U0dILUk2Nzd8U0dILUk3MDB8U0dILUk3MTd8U0dILUk3Mjd8U0dILWk3NDdNfFNHSC1JNzc3fFNHSC1JNzgwfFNHSC1JODI3fFNHSC1JODQ3fFNHSC1JODU3fFNHSC1JODk2fFNHSC1JODk3fFNHSC1JOTAwfFNHSC1JOTA3fFNHSC1JOTE3fFNHSC1JOTI3fFNHSC1JOTM3fFNHSC1JOTk3fFNHSC1KMTUwfFNHSC1KMjAwfFNHSC1MMTcwfFNHSC1MNzAwfFNHSC1NMTEwfFNHSC1NMTUwfFNHSC1NMjAwfFNHSC1OMTA1fFNHSC1ONTAwfFNHSC1ONjAwfFNHSC1ONjIwfFNHSC1ONjI1fFNHSC1ONzAwfFNHSC1ONzEwfFNHSC1QMTA3fFNHSC1QMjA3fFNHSC1QMzAwfFNHSC1QMzEwfFNHSC1QNTIwfFNHSC1QNzM1fFNHSC1QNzc3fFNHSC1RMTA1fFNHSC1SMjEwfFNHSC1SMjIwfFNHSC1SMjI1fFNHSC1TMTA1fFNHSC1TMzA3fFNHSC1UMTA5fFNHSC1UMTE5fFNHSC1UMTM5fFNHSC1UMjA5fFNHSC1UMjE5fFNHSC1UMjI5fFNHSC1UMjM5fFNHSC1UMjQ5fFNHSC1UMjU5fFNHSC1UMzA5fFNHSC1UMzE5fFNHSC1UMzI5fFNHSC1UMzM5fFNHSC1UMzQ5fFNHSC1UMzU5fFNHSC1UMzY5fFNHSC1UMzc5fFNHSC1UNDA5fFNHSC1UNDI5fFNHSC1UNDM5fFNHSC1UNDU5fFNHSC1UNDY5fFNHSC1UNDc5fFNHSC1UNDk5fFNHSC1UNTA5fFNHSC1UNTE5fFNHSC1UNTM5fFNHSC1UNTU5fFNHSC1UNTg5fFNHSC1UNjA5fFNHSC1UNjE5fFNHSC1UNjI5fFNHSC1UNjM5fFNHSC1UNjU5fFNHSC1UNjY5fFNHSC1UNjc5fFNHSC1UNzA5fFNHSC1UNzE5fFNHSC1UNzI5fFNHSC1UNzM5fFNHSC1UNzQ2fFNHSC1UNzQ5fFNHSC1UNzU5fFNHSC1UNzY5fFNHSC1UODA5fFNHSC1UODE5fFNHSC1UODM5fFNHSC1UOTE5fFNHSC1UOTI5fFNHSC1UOTM5fFNHSC1UOTU5fFNHSC1UOTg5fFNHSC1VMTAwfFNHSC1VMjAwfFNHSC1VODAwfFNHSC1WMjA1fFNHSC1WMjA2fFNHSC1YMTAwfFNHSC1YMTA1fFNHSC1YMTIwfFNHSC1YMTQwfFNHSC1YNDI2fFNHSC1YNDI3fFNHSC1YNDc1fFNHSC1YNDk1fFNHSC1YNDk3fFNHSC1YNTA3fFNHSC1YNjAwfFNHSC1YNjEwfFNHSC1YNjIwfFNHSC1YNjMwfFNHSC1YNzAwfFNHSC1YODIwfFNHSC1YODkwfFNHSC1aMTMwfFNHSC1aMTUwfFNHSC1aMTcwfFNHSC1aWDEwfFNHSC1aWDIwfFNIVy1NMTEwfFNQSC1BMTIwfFNQSC1BNDAwfFNQSC1BNDIwfFNQSC1BNDYwfFNQSC1BNTAwfFNQSC1BNTYwfFNQSC1BNjAwfFNQSC1BNjIwfFNQSC1BNjYwfFNQSC1BNzAwfFNQSC1BNzQwfFNQSC1BNzYwfFNQSC1BNzkwfFNQSC1BODAwfFNQSC1BODIwfFNQSC1BODQwfFNQSC1BODgwfFNQSC1BOTAwfFNQSC1BOTQwfFNQSC1BOTYwfFNQSC1ENjAwfFNQSC1ENzAwfFNQSC1ENzEwfFNQSC1ENzIwfFNQSC1JMzAwfFNQSC1JMzI1fFNQSC1JMzMwfFNQSC1JMzUwfFNQSC1JNTAwfFNQSC1JNjAwfFNQSC1JNzAwfFNQSC1MNzAwfFNQSC1NMTAwfFNQSC1NMjIwfFNQSC1NMjQwfFNQSC1NMzAwfFNQSC1NMzA1fFNQSC1NMzIwfFNQSC1NMzMwfFNQSC1NMzUwfFNQSC1NMzYwfFNQSC1NMzcwfFNQSC1NMzgwfFNQSC1NNTEwfFNQSC1NNTQwfFNQSC1NNTUwfFNQSC1NNTYwfFNQSC1NNTcwfFNQSC1NNTgwfFNQSC1NNjEwfFNQSC1NNjIwfFNQSC1NNjMwfFNQSC1NODAwfFNQSC1NODEwfFNQSC1NODUwfFNQSC1NOTAwfFNQSC1NOTEwfFNQSC1NOTIwfFNQSC1NOTMwfFNQSC1OMTAwfFNQSC1OMjAwfFNQSC1OMjQwfFNQSC1OMzAwfFNQSC1ONDAwfFNQSC1aNDAwfFNXQy1FMTAwfFNDSC1pOTA5fEdULU43MTAwfEdULU43MTA1fFNDSC1JNTM1fFNNLU45MDBBfFNHSC1JMzE3fFNHSC1UOTk5THxHVC1TNTM2MEJ8R1QtSTgyNjJ8R1QtUzY4MDJ8R1QtUzYzMTJ8R1QtUzYzMTB8R1QtUzUzMTJ8R1QtUzUzMTB8R1QtSTkxMDV8R1QtSTg1MTB8R1QtUzY3OTBOfFNNLUc3MTA1fFNNLU45MDA1fEdULVM1MzAxfEdULUk5Mjk1fEdULUk5MTk1fFNNLUMxMDF8R1QtUzczOTJ8R1QtUzc1NjB8R1QtQjc2MTB8R1QtSTU1MTB8R1QtUzc1ODJ8R1QtUzc1MzBFfEdULUk4NzUwfFNNLUc5MDA2VnxTTS1HOTAwOFZ8U00tRzkwMDlEfFNNLUc5MDBBfFNNLUc5MDBEfFNNLUc5MDBGfFNNLUc5MDBIfFNNLUc5MDBJfFNNLUc5MDBKfFNNLUc5MDBLfFNNLUc5MDBMfFNNLUc5MDBNfFNNLUc5MDBQfFNNLUc5MDBSNHxTTS1HOTAwU3xTTS1HOTAwVHxTTS1HOTAwVnxTTS1HOTAwVzh8U0hWLUUxNjBLfFNDSC1QNzA5fFNDSC1QNzI5fFNNLVQyNTU4fEdULUk5MjA1XCIsTEc6XCJcXFxcYkxHXFxcXGI7fExHWy0gXT8oQzgwMHxDOTAwfEU0MDB8RTYxMHxFOTAwfEUtOTAwfEYxNjB8RjE4MEt8RjE4MEx8RjE4MFN8NzMwfDg1NXxMMTYwfExTNzQwfExTODQwfExTOTcwfExVNjIwMHxNUzY5MHxNUzY5NXxNUzc3MHxNUzg0MHxNUzg3MHxNUzkxMHxQNTAwfFA3MDB8UDcwNXxWTTY5NnxBUzY4MHxBUzY5NXxBWDg0MHxDNzI5fEU5NzB8R1M1MDV8MjcyfEMzOTV8RTczOUJLfEU5NjB8TDU1Q3xMNzVDfExTNjk2fExTODYwfFA3NjlCS3xQMzUwfFA1MDB8UDUwOXxQODcwfFVOMjcyfFVTNzMwfFZTODQwfFZTOTUwfExOMjcyfExONTEwfExTNjcwfExTODU1fExXNjkwfE1OMjcwfE1ONTEwfFA1MDl8UDc2OXxQOTMwfFVOMjAwfFVOMjcwfFVONTEwfFVONjEwfFVTNjcwfFVTNzQwfFVTNzYwfFVYMjY1fFVYODQwfFZOMjcxfFZONTMwfFZTNjYwfFZTNzAwfFZTNzQwfFZTNzUwfFZTOTEwfFZTOTIwfFZTOTMwfFZYOTIwMHxWWDExMDAwfEFYODQwQXxMVzc3MHxQNTA2fFA5MjV8UDk5OXxFNjEyfEQ5NTV8RDgwMilcIixTb255OlwiU29ueVNUfFNvbnlMVHxTb255RXJpY3Nzb258U29ueUVyaWNzc29uTFQxNWl2fExUMThpfEUxMGl8TFQyOGh8TFQyNnd8U29ueUVyaWNzc29uTVQyN2l8QzUzMDN8QzY5MDJ8QzY5MDN8QzY5MDZ8QzY5NDN8RDI1MzNcIixBc3VzOlwiQXN1cy4qR2FsYXh5fFBhZEZvbmUuKk1vYmlsZVwiLE1pY3JvbWF4OlwiTWljcm9tYXguKlxcXFxiKEEyMTB8QTkyfEE4OHxBNzJ8QTExMXxBMTEwUXxBMTE1fEExMTZ8QTExMHxBOTBTfEEyNnxBNTF8QTM1fEE1NHxBMjV8QTI3fEE4OXxBNjh8QTY1fEE1N3xBOTApXFxcXGJcIixQYWxtOlwiUGFsbVNvdXJjZXxQYWxtXCIsVmVydHU6XCJWZXJ0dXxWZXJ0dS4qTHRkfFZlcnR1LipBc2NlbnR8VmVydHUuKkF5eHRhfFZlcnR1LipDb25zdGVsbGF0aW9uKEZ8UXVlc3QpP3xWZXJ0dS4qTW9uaWthfFZlcnR1LipTaWduYXR1cmVcIixQYW50ZWNoOlwiUEFOVEVDSHxJTS1BODUwU3xJTS1BODQwU3xJTS1BODMwTHxJTS1BODMwS3xJTS1BODMwU3xJTS1BODIwTHxJTS1BODEwS3xJTS1BODEwU3xJTS1BODAwU3xJTS1UMTAwS3xJTS1BNzI1THxJTS1BNzgwTHxJTS1BNzc1Q3xJTS1BNzcwS3xJTS1BNzYwU3xJTS1BNzUwS3xJTS1BNzQwU3xJTS1BNzMwU3xJTS1BNzIwTHxJTS1BNzEwS3xJTS1BNjkwTHxJTS1BNjkwU3xJTS1BNjUwU3xJTS1BNjMwS3xJTS1BNjAwU3xWRUdBIFBUTDIxfFBUMDAzfFA4MDEwfEFEUjkxMEx8UDYwMzB8UDYwMjB8UDkwNzB8UDQxMDB8UDkwNjB8UDUwMDB8Q0RNODk5MnxUWFQ4MDQ1fEFEUjg5OTV8SVMxMVBUfFAyMDMwfFA2MDEwfFA4MDAwfFBUMDAyfElTMDZ8Q0RNODk5OXxQOTA1MHxQVDAwMXxUWFQ4MDQwfFAyMDIwfFA5MDIwfFAyMDAwfFA3MDQwfFA3MDAwfEM3OTBcIixGbHk6XCJJUTIzMHxJUTQ0NHxJUTQ1MHxJUTQ0MHxJUTQ0MnxJUTQ0MXxJUTI0NXxJUTI1NnxJUTIzNnxJUTI1NXxJUTIzNXxJUTI0NXxJUTI3NXxJUTI0MHxJUTI4NXxJUTI4MHxJUTI3MHxJUTI2MHxJUTI1MFwiLFdpa286XCJLSVRFIDRHfEhJR0hXQVl8R0VUQVdBWXxTVEFJUldBWXxEQVJLU0lERXxEQVJLRlVMTHxEQVJLTklHSFR8REFSS01PT058U0xJREV8V0FYIDRHfFJBSU5CT1d8QkxPT018U1VOU0VUfEdPQXxMRU5OWXxCQVJSWXxJR0dZfE9aWll8Q0lOSyBGSVZFfENJTksgUEVBWHxDSU5LIFBFQVggMnxDSU5LIFNMSU18Q0lOSyBTTElNIDJ8Q0lOSyArfENJTksgS0lOR3xDSU5LIFBFQVh8Q0lOSyBTTElNfFNVQkxJTVwiLGlNb2JpbGU6XCJpLW1vYmlsZSAoSVF8aS1TVFlMRXxpZGVhfFpBQXxIaXR6KVwiLFNpbVZhbGxleTpcIlxcXFxiKFNQLTgwfFhULTkzMHxTWC0zNDB8WFQtOTMwfFNYLTMxMHxTUC0zNjB8U1A2MHxTUFQtODAwfFNQLTEyMHxTUFQtODAwfFNQLTE0MHxTUFgtNXxTUFgtOHxTUC0xMDB8U1BYLTh8U1BYLTEyKVxcXFxiXCIsV29sZmdhbmc6XCJBVC1CMjREfEFULUFTNTBIRHxBVC1BUzQwV3xBVC1BUzU1SER8QVQtQVM0NXEyfEFULUIyNkR8QVQtQVM1MFFcIixBbGNhdGVsOlwiQWxjYXRlbFwiLE5pbnRlbmRvOlwiTmludGVuZG8gM0RTXCIsQW1vaTpcIkFtb2lcIixJTlE6XCJJTlFcIixHZW5lcmljUGhvbmU6XCJUYXBhdGFsa3xQREE7fFNBR0VNfFxcXFxibW1wXFxcXGJ8cG9ja2V0fFxcXFxicHNwXFxcXGJ8c3ltYmlhbnxTbWFydHBob25lfHNtYXJ0Zm9ufHRyZW98dXAuYnJvd3Nlcnx1cC5saW5rfHZvZGFmb25lfFxcXFxid2FwXFxcXGJ8bm9raWF8U2VyaWVzNDB8U2VyaWVzNjB8UzYwfFNvbnlFcmljc3NvbnxOOTAwfE1BVUkuKldBUC4qQnJvd3NlclwifSx0YWJsZXRzOntpUGFkOlwiaVBhZHxpUGFkLipNb2JpbGVcIixOZXh1c1RhYmxldDpcIkFuZHJvaWQuKk5leHVzW1xcXFxzXSsoN3w5fDEwKXxeLipBbmRyb2lkLipOZXh1cyg/Oig/IU1vYmlsZSkuKSokXCIsU2Ftc3VuZ1RhYmxldDpcIlNBTVNVTkcuKlRhYmxldHxHYWxheHkuKlRhYnxTQy0wMUN8R1QtUDEwMDB8R1QtUDEwMDN8R1QtUDEwMTB8R1QtUDMxMDV8R1QtUDYyMTB8R1QtUDY4MDB8R1QtUDY4MTB8R1QtUDcxMDB8R1QtUDczMDB8R1QtUDczMTB8R1QtUDc1MDB8R1QtUDc1MTB8U0NILUk4MDB8U0NILUk4MTV8U0NILUk5MDV8U0dILUk5NTd8U0dILUk5ODd8U0dILVQ4NDl8U0dILVQ4NTl8U0dILVQ4Njl8U1BILVAxMDB8R1QtUDMxMDB8R1QtUDMxMDh8R1QtUDMxMTB8R1QtUDUxMDB8R1QtUDUxMTB8R1QtUDYyMDB8R1QtUDczMjB8R1QtUDc1MTF8R1QtTjgwMDB8R1QtUDg1MTB8U0dILUk0OTd8U1BILVA1MDB8U0dILVQ3Nzl8U0NILUk3MDV8U0NILUk5MTV8R1QtTjgwMTN8R1QtUDMxMTN8R1QtUDUxMTN8R1QtUDgxMTB8R1QtTjgwMTB8R1QtTjgwMDV8R1QtTjgwMjB8R1QtUDEwMTN8R1QtUDYyMDF8R1QtUDc1MDF8R1QtTjUxMDB8R1QtTjUxMDV8R1QtTjUxMTB8U0hWLUUxNDBLfFNIVi1FMTQwTHxTSFYtRTE0MFN8U0hWLUUxNTBTfFNIVi1FMjMwS3xTSFYtRTIzMEx8U0hWLUUyMzBTfFNIVy1NMTgwS3xTSFctTTE4MEx8U0hXLU0xODBTfFNIVy1NMTgwV3xTSFctTTMwMFd8U0hXLU0zMDVXfFNIVy1NMzgwS3xTSFctTTM4MFN8U0hXLU0zODBXfFNIVy1NNDMwV3xTSFctTTQ4MEt8U0hXLU00ODBTfFNIVy1NNDgwV3xTSFctTTQ4NVd8U0hXLU00ODZXfFNIVy1NNTAwV3xHVC1JOTIyOHxTQ0gtUDczOXxTQ0gtSTkyNXxHVC1JOTIwMHxHVC1QNTIwMHxHVC1QNTIxMHxHVC1QNTIxMFh8U00tVDMxMXxTTS1UMzEwfFNNLVQzMTBYfFNNLVQyMTB8U00tVDIxMFJ8U00tVDIxMXxTTS1QNjAwfFNNLVA2MDF8U00tUDYwNXxTTS1QOTAwfFNNLVA5MDF8U00tVDIxN3xTTS1UMjE3QXxTTS1UMjE3U3xTTS1QNjAwMHxTTS1UMzEwMHxTR0gtSTQ2N3xYRTUwMHxTTS1UMTEwfEdULVA1MjIwfEdULUk5MjAwWHxHVC1ONTExMFh8R1QtTjUxMjB8U00tUDkwNXxTTS1UMTExfFNNLVQyMTA1fFNNLVQzMTV8U00tVDMyMHxTTS1UMzIwWHxTTS1UMzIxfFNNLVQ1MjB8U00tVDUyNXxTTS1UNTMwTlV8U00tVDIzME5VfFNNLVQzMzBOVXxTTS1UOTAwfFhFNTAwVDFDfFNNLVA2MDVWfFNNLVA5MDVWfFNNLVQzMzdWfFNNLVQ1MzdWfFNNLVQ3MDdWfFNNLVQ4MDdWfFNNLVA2MDBYfFNNLVA5MDBYfFNNLVQyMTBYfFNNLVQyMzB8U00tVDIzMFh8U00tVDMyNXxHVC1QNzUwM3xTTS1UNTMxfFNNLVQzMzB8U00tVDUzMHxTTS1UNzA1Q3xTTS1UNTM1fFNNLVQzMzF8U00tVDgwMHxTTS1UNzAwfFNNLVQ1Mzd8U00tVDgwN3xTTS1QOTA3QXxTTS1UMzM3QXxTTS1UNTM3QXxTTS1UNzA3QXxTTS1UODA3QXxTTS1UMjM3fFNNLVQ4MDdQfFNNLVA2MDdUfFNNLVQyMTdUfFNNLVQzMzdUfFNNLVQ4MDdUfFNNLVQxMTZOUXxTTS1QNTUwfFNNLVQzNTB8U00tVDU1MHxTTS1UOTAwMHxTTS1QOTAwMHxTTS1UNzA1WXxTTS1UODA1XCIsS2luZGxlOlwiS2luZGxlfFNpbGsuKkFjY2VsZXJhdGVkfEFuZHJvaWQuKlxcXFxiKEtGT1R8S0ZUVHxLRkpXSXxLRkpXQXxLRk9URXxLRlNPV0l8S0ZUSFdJfEtGVEhXQXxLRkFQV0l8S0ZBUFdBfFdGSldBRXxLRlNBV0F8S0ZTQVdJfEtGQVNXSSlcXFxcYlwiLFN1cmZhY2VUYWJsZXQ6XCJXaW5kb3dzIE5UIFswLTkuXSs7IEFSTTsuKihUYWJsZXR8QVJNQkpTKVwiLEhQVGFibGV0OlwiSFAgU2xhdGUgKDd8OHwxMCl8SFAgRWxpdGVQYWQgOTAwfGhwLXRhYmxldHxFbGl0ZUJvb2suKlRvdWNofEhQIDh8U2xhdGUgMjF8SFAgU2xhdGVCb29rIDEwXCIsQXN1c1RhYmxldDpcIl4uKlBhZEZvbmUoKD8hTW9iaWxlKS4pKiR8VHJhbnNmb3JtZXJ8VEYxMDF8VEYxMDFHfFRGMzAwVHxURjMwMFRHfFRGMzAwVEx8VEY3MDBUfFRGNzAwS0x8VEY3MDFUfFRGODEwQ3xNRTE3MXxNRTMwMVR8TUUzMDJDfE1FMzcxTUd8TUUzNzBUfE1FMzcyTUd8TUUxNzJWfE1FMTczWHxNRTQwMEN8U2xpZGVyIFNMMTAxfFxcXFxiSzAwRlxcXFxifFxcXFxiSzAwQ1xcXFxifFxcXFxiSzAwRVxcXFxifFxcXFxiSzAwTFxcXFxifFRYMjAxTEF8TUUxNzZDfE1FMTAyQXxcXFxcYk04MFRBXFxcXGJ8TUUzNzJDTHxNRTU2MENHfE1FMzcyQ0d8TUUzMDJLTHwgSzAxMCB8IEswMTcgfE1FNTcyQ3xNRTEwM0t8TUUxNzBDfE1FMTcxQ3xcXFxcYk1FNzBDXFxcXGJ8TUU1ODFDfE1FNTgxQ0x8TUU4NTEwQ3xNRTE4MUNcIixCbGFja0JlcnJ5VGFibGV0OlwiUGxheUJvb2t8UklNIFRhYmxldFwiLEhUQ3RhYmxldDpcIkhUQ19GbHllcl9QNTEyfEhUQyBGbHllcnxIVEMgSmV0c3RyZWFtfEhUQy1QNzE1YXxIVEMgRVZPIFZpZXcgNEd8UEc0MTIwMHxQRzA5NDEwXCIsTW90b3JvbGFUYWJsZXQ6XCJ4b29tfHNob2xlc3R8TVo2MTV8TVo2MDV8TVo1MDV8TVo2MDF8TVo2MDJ8TVo2MDN8TVo2MDR8TVo2MDZ8TVo2MDd8TVo2MDh8TVo2MDl8TVo2MTV8TVo2MTZ8TVo2MTdcIixOb29rVGFibGV0OlwiQW5kcm9pZC4qTm9va3xOb29rQ29sb3J8bm9vayBicm93c2VyfEJOUlYyMDB8Qk5SVjIwMEF8Qk5UVjI1MHxCTlRWMjUwQXxCTlRWNDAwfEJOVFY2MDB8TG9naWNQRCBab29tMlwiLEFjZXJUYWJsZXQ6XCJBbmRyb2lkLio7IFxcXFxiKEExMDB8QTEwMXxBMTEwfEEyMDB8QTIxMHxBMjExfEE1MDB8QTUwMXxBNTEwfEE1MTF8QTcwMHxBNzAxfFc1MDB8VzUwMFB8VzUwMXxXNTAxUHxXNTEwfFc1MTF8VzcwMHxHMTAwfEcxMDBXfEIxLUE3MXxCMS03MTB8QjEtNzExfEExLTgxMHxBMS04MTF8QTEtODMwKVxcXFxifFczLTgxMHxcXFxcYkEzLUExMFxcXFxifFxcXFxiQTMtQTExXFxcXGJcIixUb3NoaWJhVGFibGV0OlwiQW5kcm9pZC4qKEFUMTAwfEFUMTA1fEFUMjAwfEFUMjA1fEFUMjcwfEFUMjc1fEFUMzAwfEFUMzA1fEFUMVM1fEFUNTAwfEFUNTcwfEFUNzAwfEFUODMwKXxUT1NISUJBLipGT0xJT1wiLExHVGFibGV0OlwiXFxcXGJMLTA2Q3xMRy1WOTA5fExHLVY5MDB8TEctVjcwMHxMRy1WNTEwfExHLVY1MDB8TEctVjQxMHxMRy1WNDAwfExHLVZLODEwXFxcXGJcIixGdWppdHN1VGFibGV0OlwiQW5kcm9pZC4qXFxcXGIoRi0wMUR8Ri0wMkZ8Ri0wNUV8Ri0xMER8TTUzMnxRNTcyKVxcXFxiXCIsUHJlc3RpZ2lvVGFibGV0OlwiUE1QMzE3MEJ8UE1QMzI3MEJ8UE1QMzQ3MEJ8UE1QNzE3MEJ8UE1QMzM3MEJ8UE1QMzU3MEN8UE1QNTg3MEN8UE1QMzY3MEJ8UE1QNTU3MEN8UE1QNTc3MER8UE1QMzk3MEJ8UE1QMzg3MEN8UE1QNTU4MEN8UE1QNTg4MER8UE1QNTc4MER8UE1QNTU4OEN8UE1QNzI4MEN8UE1QNzI4MEMzR3xQTVA3MjgwfFBNUDc4ODBEfFBNUDU1OTdEfFBNUDU1OTd8UE1QNzEwMER8UEVSMzQ2NHxQRVIzMjc0fFBFUjM1NzR8UEVSMzg4NHxQRVI1Mjc0fFBFUjU0NzR8UE1QNTA5N0NQUk98UE1QNTA5N3xQTVA3MzgwRHxQTVA1Mjk3Q3xQTVA1Mjk3Q19RVUFEXCIsTGVub3ZvVGFibGV0OlwiSWRlYShUYWJ8UGFkKSggQTF8QTEwfCBLMXwpfFRoaW5rUGFkKFsgXSspP1RhYmxldHxMZW5vdm8uKihTMjEwOXxTMjExMHxTNTAwMHxTNjAwMHxLMzAxMXxBMzAwMHxBMzUwMHxBMTAwMHxBMjEwN3xBMjEwOXxBMTEwN3xBNTUwMHxBNzYwMHxCNjAwMHxCODAwMHxCODA4MCkoLXwpKEZMfEZ8SFZ8SHwpXCIsRGVsbFRhYmxldDpcIlZlbnVlIDExfFZlbnVlIDh8VmVudWUgN3xEZWxsIFN0cmVhayAxMHxEZWxsIFN0cmVhayA3XCIsWWFydmlrVGFibGV0OlwiQW5kcm9pZC4qXFxcXGIoVEFCMjEwfFRBQjIxMXxUQUIyMjR8VEFCMjUwfFRBQjI2MHxUQUIyNjR8VEFCMzEwfFRBQjM2MHxUQUIzNjR8VEFCNDEwfFRBQjQxMXxUQUI0MjB8VEFCNDI0fFRBQjQ1MHxUQUI0NjB8VEFCNDYxfFRBQjQ2NHxUQUI0NjV8VEFCNDY3fFRBQjQ2OHxUQUIwNy0xMDB8VEFCMDctMTAxfFRBQjA3LTE1MHxUQUIwNy0xNTF8VEFCMDctMTUyfFRBQjA3LTIwMHxUQUIwNy0yMDEtM0d8VEFCMDctMjEwfFRBQjA3LTIxMXxUQUIwNy0yMTJ8VEFCMDctMjE0fFRBQjA3LTIyMHxUQUIwNy00MDB8VEFCMDctNDg1fFRBQjA4LTE1MHxUQUIwOC0yMDB8VEFCMDgtMjAxLTNHfFRBQjA4LTIwMS0zMHxUQUIwOS0xMDB8VEFCMDktMjExfFRBQjA5LTQxMHxUQUIxMC0xNTB8VEFCMTAtMjAxfFRBQjEwLTIxMXxUQUIxMC00MDB8VEFCMTAtNDEwfFRBQjEzLTIwMXxUQUIyNzRFVUt8VEFCMjc1RVVLfFRBQjM3NEVVS3xUQUI0NjJFVUt8VEFCNDc0RVVLfFRBQjktMjAwKVxcXFxiXCIsTWVkaW9uVGFibGV0OlwiQW5kcm9pZC4qXFxcXGJPWU9cXFxcYnxMSUZFLiooUDkyMTJ8UDk1MTR8UDk1MTZ8Uzk1MTIpfExJRkVUQUJcIixBcm5vdmFUYWJsZXQ6XCJBTjEwRzJ8QU43YkczfEFON2ZHM3xBTjhHM3xBTjhjRzN8QU43RzN8QU45RzN8QU43ZEczfEFON2RHM1NUfEFON2RHM0NoaWxkUGFkfEFOMTBiRzN8QU4xMGJHM0RUfEFOOUcyXCIsSW50ZW5zb1RhYmxldDpcIklOTTgwMDJLUHxJTk0xMDEwRlB8SU5NODA1TkR8SW50ZW5zbyBUYWJ8VEFCMTAwNFwiLElSVVRhYmxldDpcIk03MDJwcm9cIixNZWdhZm9uVGFibGV0OlwiTWVnYUZvbiBWOXxcXFxcYlpURSBWOVxcXFxifEFuZHJvaWQuKlxcXFxiTVQ3QVxcXFxiXCIsRWJvZGFUYWJsZXQ6XCJFLUJvZGEgKFN1cHJlbWV8SW1wcmVzc3BlZWR8SXp6eWNvbW18RXNzZW50aWFsKVwiLEFsbFZpZXdUYWJsZXQ6XCJBbGx2aWV3LiooVml2YXxBbGxkcm98Q2l0eXxTcGVlZHxBbGwgVFZ8RnJlbnp5fFF1YXNhcnxTaGluZXxUWDF8QVgxfEFYMilcIixBcmNob3NUYWJsZXQ6XCJcXFxcYigxMDFHOXw4MEc5fEExMDFJVClcXFxcYnxRaWxpdmUgOTdSfEFyY2hvczV8XFxcXGJBUkNIT1MgKDcwfDc5fDgwfDkwfDk3fDEwMXxGQU1JTFlQQUR8KShifCkoRzEwfCBDb2JhbHR8IFRJVEFOSVVNKEhEfCl8IFhlbm9ufCBOZW9ufFhTS3wgMnwgWFMgMnwgUExBVElOVU18IENBUkJPTnxHQU1FUEFEKVxcXFxiXCIsQWlub2xUYWJsZXQ6XCJOT1ZPN3xOT1ZPOHxOT1ZPMTB8Tm92bzdBdXJvcmF8Tm92bzdCYXNpY3xOT1ZPN1BBTEFESU58bm92bzktU3BhcmtcIixTb255VGFibGV0OlwiU29ueS4qVGFibGV0fFhwZXJpYSBUYWJsZXR8U29ueSBUYWJsZXQgU3xTTy0wM0V8U0dQVDEyfFNHUFQxM3xTR1BUMTE0fFNHUFQxMjF8U0dQVDEyMnxTR1BUMTIzfFNHUFQxMTF8U0dQVDExMnxTR1BUMTEzfFNHUFQxMzF8U0dQVDEzMnxTR1BUMTMzfFNHUFQyMTF8U0dQVDIxMnxTR1BUMjEzfFNHUDMxMXxTR1AzMTJ8U0dQMzIxfEVCUkQxMTAxfEVCUkQxMTAyfEVCUkQxMjAxfFNHUDM1MXxTR1AzNDF8U0dQNTExfFNHUDUxMnxTR1A1MjF8U0dQNTQxfFNHUDU1MXxTR1A2MjF8U0dQNjEyXCIsUGhpbGlwc1RhYmxldDpcIlxcXFxiKFBJMjAxMHxQSTMwMDB8UEkzMTAwfFBJMzEwNXxQSTMxMTB8UEkzMjA1fFBJMzIxMHxQSTM5MDB8UEk0MDEwfFBJNzAwMHxQSTcxMDApXFxcXGJcIixDdWJlVGFibGV0OlwiQW5kcm9pZC4qKEs4R1R8VTlHVHxVMTBHVHxVMTZHVHxVMTdHVHxVMThHVHxVMTlHVHxVMjBHVHxVMjNHVHxVMzBHVCl8Q1VCRSBVOEdUXCIsQ29ieVRhYmxldDpcIk1JRDEwNDJ8TUlEMTA0NXxNSUQxMTI1fE1JRDExMjZ8TUlENzAxMnxNSUQ3MDE0fE1JRDcwMTV8TUlENzAzNHxNSUQ3MDM1fE1JRDcwMzZ8TUlENzA0MnxNSUQ3MDQ4fE1JRDcxMjd8TUlEODA0MnxNSUQ4MDQ4fE1JRDgxMjd8TUlEOTA0MnxNSUQ5NzQwfE1JRDk3NDJ8TUlENzAyMnxNSUQ3MDEwXCIsTUlEVGFibGV0OlwiTTk3MDF8TTkwMDB8TTkxMDB8TTgwNnxNMTA1MnxNODA2fFQ3MDN8TUlENzAxfE1JRDcxM3xNSUQ3MTB8TUlENzI3fE1JRDc2MHxNSUQ4MzB8TUlENzI4fE1JRDkzM3xNSUQxMjV8TUlEODEwfE1JRDczMnxNSUQxMjB8TUlEOTMwfE1JRDgwMHxNSUQ3MzF8TUlEOTAwfE1JRDEwMHxNSUQ4MjB8TUlENzM1fE1JRDk4MHxNSUQxMzB8TUlEODMzfE1JRDczN3xNSUQ5NjB8TUlEMTM1fE1JRDg2MHxNSUQ3MzZ8TUlEMTQwfE1JRDkzMHxNSUQ4MzV8TUlENzMzXCIsTVNJVGFibGV0OlwiTVNJIFxcXFxiKFByaW1vIDczS3xQcmltbyA3M0x8UHJpbW8gODFMfFByaW1vIDc3fFByaW1vIDkzfFByaW1vIDc1fFByaW1vIDc2fFByaW1vIDczfFByaW1vIDgxfFByaW1vIDkxfFByaW1vIDkwfEVuam95IDcxfEVuam95IDd8RW5qb3kgMTApXFxcXGJcIixTTWlUVGFibGV0OlwiQW5kcm9pZC4qKFxcXFxiTUlEXFxcXGJ8TUlELTU2MHxNVFYtVDEyMDB8TVRWLVBORDUzMXxNVFYtUDExMDF8TVRWLVBORDUzMClcIixSb2NrQ2hpcFRhYmxldDpcIkFuZHJvaWQuKihSSzI4MTh8UksyODA4QXxSSzI5MTh8UkszMDY2KXxSSzI3Mzh8UksyODA4QVwiLEZseVRhYmxldDpcIklRMzEwfEZseSBWaXNpb25cIixicVRhYmxldDpcIihicSk/LiooRWxjYW5vfEN1cmllfEVkaXNvbnxNYXh3ZWxsfEtlcGxlcnxQYXNjYWx8VGVzbGF8SHlwYXRpYXxQbGF0b258TmV3dG9ufExpdmluZ3N0b25lfENlcnZhbnRlc3xBdmFudHxBcXVhcmlzIEUxMCl8TWF4d2VsbC4qTGl0ZXxNYXh3ZWxsLipQbHVzXCIsSHVhd2VpVGFibGV0OlwiTWVkaWFQYWR8TWVkaWFQYWQgNyBZb3V0aHxJREVPUyBTN3xTNy0yMDFjfFM3LTIwMnV8UzctMTAxfFM3LTEwM3xTNy0xMDR8UzctMTA1fFM3LTEwNnxTNy0yMDF8UzctU2xpbVwiLE5lY1RhYmxldDpcIlxcXFxiTi0wNkR8XFxcXGJOLTA4RFwiLFBhbnRlY2hUYWJsZXQ6XCJQYW50ZWNoLipQNDEwMFwiLEJyb25jaG9UYWJsZXQ6XCJCcm9uY2hvLiooTjcwMXxONzA4fE44MDJ8YTcxMClcIixWZXJzdXNUYWJsZXQ6XCJUT1VDSFBBRC4qWzc4OTEwXXxcXFxcYlRPVUNIVEFCXFxcXGJcIixaeW5jVGFibGV0OlwiejEwMDB8Wjk5IDJHfHo5OXx6OTMwfHo5OTl8ejk5MHx6OTA5fFo5MTl8ejkwMFwiLFBvc2l0aXZvVGFibGV0OlwiVEIwN1NUQXxUQjEwU1RBfFRCMDdGVEF8VEIxMEZUQVwiLE5hYmlUYWJsZXQ6XCJBbmRyb2lkLipcXFxcYk5hYmlcIixLb2JvVGFibGV0OlwiS29ibyBUb3VjaHxcXFxcYkswODBcXFxcYnxcXFxcYlZveFxcXFxiIEJ1aWxkfFxcXFxiQXJjXFxcXGIgQnVpbGRcIixEYW5ld1RhYmxldDpcIkRTbGlkZS4qXFxcXGIoNzAwfDcwMVJ8NzAyfDcwM1J8NzA0fDgwMnw5NzB8OTcxfDk3Mnw5NzN8OTc0fDEwMTB8MTAxMilcXFxcYlwiLFRleGV0VGFibGV0OlwiTmF2aVBhZHxUQi03NzJBfFRNLTcwNDV8VE0tNzA1NXxUTS05NzUwfFRNLTcwMTZ8VE0tNzAyNHxUTS03MDI2fFRNLTcwNDF8VE0tNzA0M3xUTS03MDQ3fFRNLTgwNDF8VE0tOTc0MXxUTS05NzQ3fFRNLTk3NDh8VE0tOTc1MXxUTS03MDIyfFRNLTcwMjF8VE0tNzAyMHxUTS03MDExfFRNLTcwMTB8VE0tNzAyM3xUTS03MDI1fFRNLTcwMzdXfFRNLTcwMzhXfFRNLTcwMjdXfFRNLTk3MjB8VE0tOTcyNXxUTS05NzM3V3xUTS0xMDIwfFRNLTk3MzhXfFRNLTk3NDB8VE0tOTc0M1d8VEItODA3QXxUQi03NzFBfFRCLTcyN0F8VEItNzI1QXxUQi03MTlBfFRCLTgyM0F8VEItODA1QXxUQi03MjNBfFRCLTcxNUF8VEItNzA3QXxUQi03MDVBfFRCLTcwOUF8VEItNzExQXxUQi04OTBIRHxUQi04ODBIRHxUQi03OTBIRHxUQi03ODBIRHxUQi03NzBIRHxUQi03MjFIRHxUQi03MTBIRHxUQi00MzRIRHxUQi04NjBIRHxUQi04NDBIRHxUQi03NjBIRHxUQi03NTBIRHxUQi03NDBIRHxUQi03MzBIRHxUQi03MjJIRHxUQi03MjBIRHxUQi03MDBIRHxUQi01MDBIRHxUQi00NzBIRHxUQi00MzFIRHxUQi00MzBIRHxUQi01MDZ8VEItNTA0fFRCLTQ0NnxUQi00MzZ8VEItNDE2fFRCLTE0NlNFfFRCLTEyNlNFXCIsUGxheXN0YXRpb25UYWJsZXQ6XCJQbGF5c3RhdGlvbi4qKFBvcnRhYmxlfFZpdGEpXCIsVHJla3N0b3JUYWJsZXQ6XCJTVDEwNDE2LTF8VlQxMDQxNi0xfFNUNzA0MDgtMXxTVDcwMnh4LTF8U1Q3MDJ4eC0yfFNUODAyMDh8U1Q5NzIxNnxTVDcwMTA0LTJ8VlQxMDQxNi0yfFNUMTAyMTYtMkF8U3VyZlRhYlwiLFB5bGVBdWRpb1RhYmxldDpcIlxcXFxiKFBUQkwxMENFVXxQVEJMMTBDfFBUQkw3MkJDfFBUQkw3MkJDRVV8UFRCTDdDRVV8UFRCTDdDfFBUQkw5MkJDfFBUQkw5MkJDRVV8UFRCTDlDRVV8UFRCTDlDVUt8UFRCTDlDKVxcXFxiXCIsQWR2YW5UYWJsZXQ6XCJBbmRyb2lkLiogXFxcXGIoRTNBfFQzWHxUNUN8VDVCfFQzRXxUM0N8VDNCfFQxSnxUMUZ8VDJBfFQxSHxUMWl8RTFDfFQxLUV8VDUtQXxUNHxFMS1CfFQyQ2l8VDEtQnxUMS1EfE8xLUF8RTEtQXxUMS1BfFQzQXxUNGkpXFxcXGIgXCIsRGFueVRlY2hUYWJsZXQ6XCJHZW5pdXMgVGFiIEczfEdlbml1cyBUYWIgUzJ8R2VuaXVzIFRhYiBRM3xHZW5pdXMgVGFiIEc0fEdlbml1cyBUYWIgUTR8R2VuaXVzIFRhYiBHLUlJfEdlbml1cyBUQUIgR0lJfEdlbml1cyBUQUIgR0lJSXxHZW5pdXMgVGFiIFMxXCIsR2FsYXBhZFRhYmxldDpcIkFuZHJvaWQuKlxcXFxiRzFcXFxcYlwiLE1pY3JvbWF4VGFibGV0OlwiRnVuYm9va3xNaWNyb21heC4qXFxcXGIoUDI1MHxQNTYwfFAzNjB8UDM2MnxQNjAwfFAzMDB8UDM1MHxQNTAwfFAyNzUpXFxcXGJcIixLYXJib25uVGFibGV0OlwiQW5kcm9pZC4qXFxcXGIoQTM5fEEzN3xBMzR8U1Q4fFNUMTB8U1Q3fFNtYXJ0IFRhYjN8U21hcnQgVGFiMilcXFxcYlwiLEFsbEZpbmVUYWJsZXQ6XCJGaW5lNyBHZW5pdXN8RmluZTcgU2hpbmV8RmluZTcgQWlyfEZpbmU4IFN0eWxlfEZpbmU5IE1vcmV8RmluZTEwIEpveXxGaW5lMTEgV2lkZVwiLFBST1NDQU5UYWJsZXQ6XCJcXFxcYihQRU02M3xQTFQxMDIzR3xQTFQxMDQxfFBMVDEwNDR8UExUMTA0NEd8UExUMTA5MXxQTFQ0MzExfFBMVDQzMTFQTHxQTFQ0MzE1fFBMVDcwMzB8UExUNzAzM3xQTFQ3MDMzRHxQTFQ3MDM1fFBMVDcwMzVEfFBMVDcwNDRLfFBMVDcwNDVLfFBMVDcwNDVLQnxQTFQ3MDcxS0d8UExUNzA3MnxQTFQ3MjIzR3xQTFQ3MjI1R3xQTFQ3Nzc3R3xQTFQ3ODEwS3xQTFQ3ODQ5R3xQTFQ3ODUxR3xQTFQ3ODUyR3xQTFQ4MDE1fFBMVDgwMzF8UExUODAzNHxQTFQ4MDM2fFBMVDgwODBLfFBMVDgwODJ8UExUODA4OHxQTFQ4MjIzR3xQTFQ4MjM0R3xQTFQ4MjM1R3xQTFQ4ODE2S3xQTFQ5MDExfFBMVDkwNDVLfFBMVDkyMzNHfFBMVDk3MzV8UExUOTc2MEd8UExUOTc3MEcpXFxcXGJcIixZT05FU1RhYmxldDpcIkJRMTA3OHxCQzEwMDN8QkMxMDc3fFJLOTcwMnxCQzk3MzB8QkM5MDAxfElUOTAwMXxCQzcwMDh8QkM3MDEwfEJDNzA4fEJDNzI4fEJDNzAxMnxCQzcwMzB8QkM3MDI3fEJDNzAyNlwiLENoYW5nSmlhVGFibGV0OlwiVFBDNzEwMnxUUEM3MTAzfFRQQzcxMDV8VFBDNzEwNnxUUEM3MTA3fFRQQzcyMDF8VFBDNzIwM3xUUEM3MjA1fFRQQzcyMTB8VFBDNzcwOHxUUEM3NzA5fFRQQzc3MTJ8VFBDNzExMHxUUEM4MTAxfFRQQzgxMDN8VFBDODEwNXxUUEM4MTA2fFRQQzgyMDN8VFBDODIwNXxUUEM4NTAzfFRQQzkxMDZ8VFBDOTcwMXxUUEM5NzEwMXxUUEM5NzEwM3xUUEM5NzEwNXxUUEM5NzEwNnxUUEM5NzExMXxUUEM5NzExM3xUUEM5NzIwM3xUUEM5NzYwM3xUUEM5NzgwOXxUUEM5NzIwNXxUUEMxMDEwMXxUUEMxMDEwM3xUUEMxMDEwNnxUUEMxMDExMXxUUEMxMDIwM3xUUEMxMDIwNXxUUEMxMDUwM1wiLEdVVGFibGV0OlwiVFgtQTEzMDF8VFgtTTkwMDJ8UTcwMnxrZjAyNlwiLFBvaW50T2ZWaWV3VGFibGV0OlwiVEFCLVA1MDZ8VEFCLW5hdmktNy0zRy1NfFRBQi1QNTE3fFRBQi1QLTUyN3xUQUItUDcwMXxUQUItUDcwM3xUQUItUDcyMXxUQUItUDczMU58VEFCLVA3NDF8VEFCLVA4MjV8VEFCLVA5MDV8VEFCLVA5MjV8VEFCLVBSOTQ1fFRBQi1QTDEwMTV8VEFCLVAxMDI1fFRBQi1QSTEwNDV8VEFCLVAxMzI1fFRBQi1QUk9UQUJbMC05XSt8VEFCLVBST1RBQjI1fFRBQi1QUk9UQUIyNnxUQUItUFJPVEFCMjd8VEFCLVBST1RBQjI2WEx8VEFCLVBST1RBQjItSVBTOXxUQUItUFJPVEFCMzAtSVBTOXxUQUItUFJPVEFCMjVYWEx8VEFCLVBST1RBQjI2LUlQUzEwfFRBQi1QUk9UQUIzMC1JUFMxMFwiLE92ZXJtYXhUYWJsZXQ6XCJPVi0oU3RlZWxDb3JlfE5ld0Jhc2V8QmFzZWNvcmV8QmFzZW9uZXxFeGVsbGVufFF1YXR0b3J8RWR1VGFifFNvbHV0aW9ufEFDVElPTnxCYXNpY1RhYnxUZWRkeVRhYnxNYWdpY1RhYnxTdHJlYW18VEItMDh8VEItMDkpXCIsSENMVGFibGV0OlwiSENMLipUYWJsZXR8Q29ubmVjdC0zRy0yLjB8Q29ubmVjdC0yRy0yLjB8TUUgVGFibGV0IFUxfE1FIFRhYmxldCBVMnxNRSBUYWJsZXQgRzF8TUUgVGFibGV0IFgxfE1FIFRhYmxldCBZMnxNRSBUYWJsZXQgU3luY1wiLERQU1RhYmxldDpcIkRQUyBEcmVhbSA5fERQUyBEdWFsIDdcIixWaXN0dXJlVGFibGV0OlwiVjk3IEhEfGk3NSAzR3xWaXN0dXJlIFY0KCBIRCk/fFZpc3R1cmUgVjUoIEhEKT98VmlzdHVyZSBWMTBcIixDcmVzdGFUYWJsZXQ6XCJDVFAoLSk/ODEwfENUUCgtKT84MTh8Q1RQKC0pPzgyOHxDVFAoLSk/ODM4fENUUCgtKT84ODh8Q1RQKC0pPzk3OHxDVFAoLSk/OTgwfENUUCgtKT85ODd8Q1RQKC0pPzk4OHxDVFAoLSk/OTg5XCIsTWVkaWF0ZWtUYWJsZXQ6XCJcXFxcYk1UODEyNXxNVDgzODl8TVQ4MTM1fE1UODM3N1xcXFxiXCIsQ29uY29yZGVUYWJsZXQ6XCJDb25jb3JkZShbIF0rKT9UYWJ8Q29uQ29yZGUgUmVhZE1hblwiLEdvQ2xldmVyVGFibGV0OlwiR09DTEVWRVIgVEFCfEE3R09DTEVWRVJ8TTEwNDJ8TTc4NDF8TTc0MnxSMTA0MkJLfFIxMDQxfFRBQiBBOTc1fFRBQiBBNzg0MnxUQUIgQTc0MXxUQUIgQTc0MUx8VEFCIE03MjNHfFRBQiBNNzIxfFRBQiBBMTAyMXxUQUIgSTkyMXxUQUIgUjcyMXxUQUIgSTcyMHxUQUIgVDc2fFRBQiBSNzB8VEFCIFI3Ni4yfFRBQiBSMTA2fFRBQiBSODMuMnxUQUIgTTgxM0d8VEFCIEk3MjF8R0NUQTcyMnxUQUIgSTcwfFRBQiBJNzF8VEFCIFM3M3xUQUIgUjczfFRBQiBSNzR8VEFCIFI5M3xUQUIgUjc1fFRBQiBSNzYuMXxUQUIgQTczfFRBQiBBOTN8VEFCIEE5My4yfFRBQiBUNzJ8VEFCIFI4M3xUQUIgUjk3NHxUQUIgUjk3M3xUQUIgQTEwMXxUQUIgQTEwM3xUQUIgQTEwNHxUQUIgQTEwNC4yfFIxMDVCS3xNNzEzR3xBOTcyQkt8VEFCIEE5NzF8VEFCIFI5NzQuMnxUQUIgUjEwNHxUQUIgUjgzLjN8VEFCIEExMDQyXCIsTW9kZWNvbVRhYmxldDpcIkZyZWVUQUIgOTAwMHxGcmVlVEFCIDcuNHxGcmVlVEFCIDcwMDR8RnJlZVRBQiA3ODAwfEZyZWVUQUIgMjA5NnxGcmVlVEFCIDcuNXxGcmVlVEFCIDEwMTR8RnJlZVRBQiAxMDAxIHxGcmVlVEFCIDgwMDF8RnJlZVRBQiA5NzA2fEZyZWVUQUIgOTcwMnxGcmVlVEFCIDcwMDN8RnJlZVRBQiA3MDAyfEZyZWVUQUIgMTAwMnxGcmVlVEFCIDc4MDF8RnJlZVRBQiAxMzMxfEZyZWVUQUIgMTAwNHxGcmVlVEFCIDgwMDJ8RnJlZVRBQiA4MDE0fEZyZWVUQUIgOTcwNHxGcmVlVEFCIDEwMDNcIixWb25pbm9UYWJsZXQ6XCJcXFxcYihBcmd1c1sgX10/U3xEaWFtb25kWyBfXT83OUhEfEVtZXJhbGRbIF9dPzc4RXxMdW5hWyBfXT83MEN8T255eFsgX10/U3xPbnl4WyBfXT9afE9yaW5bIF9dP0hEfE9yaW5bIF9dP1N8T3Rpc1sgX10/U3xTcGVlZFN0YXJbIF9dP1N8TWFnbmV0WyBfXT9NOXxQcmltdXNbIF9dPzk0WyBfXT8zR3xQcmltdXNbIF9dPzk0SER8UHJpbXVzWyBfXT9RU3xBbmRyb2lkLipcXFxcYlE4XFxcXGJ8U2lyaXVzWyBfXT9FVk9bIF9dP1FTfFNpcml1c1sgX10/UVN8U3Bpcml0WyBfXT9TKVxcXFxiXCIsRUNTVGFibGV0OlwiVjA3T1QyfFRNMTA1QXxTMTBPVDF8VFIxMENTMVwiLFN0b3JleFRhYmxldDpcImVaZWVbXyddPyhUYWJ8R28pWzAtOV0rfFRhYkxDN3xMb29uZXkgVHVuZXMgVGFiXCIsVm9kYWZvbmVUYWJsZXQ6XCJTbWFydFRhYihbIF0rKT9bMC05XSt8U21hcnRUYWJJSTEwfFNtYXJ0VGFiSUk3XCIsRXNzZW50aWVsQlRhYmxldDpcIlNtYXJ0WyAnXT9UQUJbIF0rP1swLTldK3xGYW1pbHlbICddP1RBQjJcIixSb3NzTW9vclRhYmxldDpcIlJNLTc5MHxSTS05OTd8Uk1ELTg3OEd8Uk1ELTk3NFJ8Uk1ULTcwNUF8Uk1ULTcwMXxSTUUtNjAxfFJNVC01MDF8Uk1ULTcxMVwiLGlNb2JpbGVUYWJsZXQ6XCJpLW1vYmlsZSBpLW5vdGVcIixUb2xpbm9UYWJsZXQ6XCJ0b2xpbm8gdGFiIFswLTkuXSt8dG9saW5vIHNoaW5lXCIsQXVkaW9Tb25pY1RhYmxldDpcIlxcXFxiQy0yMlF8VDctUUN8VC0xN0J8VC0xN1BcXFxcYlwiLEFNUEVUYWJsZXQ6XCJBbmRyb2lkLiogQTc4IFwiLFNra1RhYmxldDpcIkFuZHJvaWQuKiAoU0tZUEFEfFBIT0VOSVh8Q1lDTE9QUylcIixUZWNub1RhYmxldDpcIlRFQ05PIFA5XCIsSlhEVGFibGV0OlwiQW5kcm9pZC4qXFxcXGIoRjMwMDB8QTMzMDB8SlhENTAwMHxKWEQzMDAwfEpYRDIwMDB8SlhEMzAwQnxKWEQzMDB8UzU4MDB8Uzc4MDB8UzYwMmJ8UzUxMTBifFM3MzAwfFM1MzAwfFM2MDJ8UzYwM3xTNTEwMHxTNTExMHxTNjAxfFM3MTAwYXxQMzAwMEZ8UDMwMDBzfFAxMDF8UDIwMHN8UDEwMDBtfFAyMDBtfFA5MTAwfFAxMDAwc3xTNjYwMGJ8UzkwOHxQMTAwMHxQMzAwfFMxOHxTNjYwMHxTOTEwMClcXFxcYlwiLGlKb3lUYWJsZXQ6XCJUYWJsZXQgKFNwaXJpdCA3fEVzc2VudGlhfEdhbGF0ZWF8RnVzaW9ufE9uaXggN3xMYW5kYXxUaXRhbnxTY29vYnl8RGVveHxTdGVsbGF8VGhlbWlzfEFyZ29ufFVuaXF1ZSA3fFN5Z251c3xIZXhlbnxGaW5pdHkgN3xDcmVhbXxDcmVhbSBYMnxKYWRlfE5lb24gN3xOZXJvbiA3fEthbmR5fFNjYXBlfFNhcGh5ciA3fFJlYmVsfEJpb3h8UmViZWx8UmViZWwgOEdCfE15c3R8RHJhY28gN3xNeXN0fFRhYjctMDA0fE15c3R8VGFkZW8gSm9uZXN8VGFibGV0IEJvaW5nfEFycm93fERyYWNvIER1YWwgQ2FtfEF1cml4fE1pbnR8QW1pdHl8UmV2b2x1dGlvbnxGaW5pdHkgOXxOZW9uIDl8VDl3fEFtaXR5IDRHQiBEdWFsIENhbXxTdG9uZSA0R0J8U3RvbmUgOEdCfEFuZHJvbWVkYXxTaWxrZW58WDJ8QW5kcm9tZWRhIElJfEhhbGxleXxGbGFtZXxTYXBoeXIgOSw3fFRvdWNoIDh8UGxhbmV0fFRyaXRvbnxVbmlxdWUgMTB8SGV4ZW4gMTB8TWVtcGhpcyA0R0J8TWVtcGhpcyA4R0J8T25peCAxMClcIixGWDJUYWJsZXQ6XCJGWDIgUEFEN3xGWDIgUEFEMTBcIixYb3JvVGFibGV0OlwiS2lkc1BBRCA3MDF8UEFEWyBdPzcxMnxQQURbIF0/NzE0fFBBRFsgXT83MTZ8UEFEWyBdPzcxN3xQQURbIF0/NzE4fFBBRFsgXT83MjB8UEFEWyBdPzcyMXxQQURbIF0/NzIyfFBBRFsgXT83OTB8UEFEWyBdPzc5MnxQQURbIF0/OTAwfFBBRFsgXT85NzE1RHxQQURbIF0/OTcxNkRSfFBBRFsgXT85NzE4RFJ8UEFEWyBdPzk3MTlRUnxQQURbIF0/OTcyMFFSfFRlbGVQQUQxMDMwfFRlbGVwYWQxMDMyfFRlbGVQQUQ3MzB8VGVsZVBBRDczMXxUZWxlUEFENzMyfFRlbGVQQUQ3MzVRfFRlbGVQQUQ4MzB8VGVsZVBBRDk3MzB8VGVsZVBBRDc5NXxNZWdhUEFEIDEzMzF8TWVnYVBBRCAxODUxfE1lZ2FQQUQgMjE1MVwiLFZpZXdzb25pY1RhYmxldDpcIlZpZXdQYWQgMTBwaXxWaWV3UGFkIDEwZXxWaWV3UGFkIDEwc3xWaWV3UGFkIEU3MnxWaWV3UGFkN3xWaWV3UGFkIEUxMDB8Vmlld1BhZCA3ZXxWaWV3U29uaWMgVkI3MzN8VkIxMDBhXCIsT2R5c1RhYmxldDpcIkxPT1h8WEVOTzEwfE9EWVNbIC1dKFNwYWNlfEVWT3xYcHJlc3N8Tk9PTil8XFxcXGJYRUxJT1xcXFxifFhlbGlvMTBQcm98WEVMSU83UEhPTkVUQUJ8WEVMSU8xMEVYVFJFTUV8WEVMSU9QVDJ8TkVPX1FVQUQxMFwiLENhcHRpdmFUYWJsZXQ6XCJDQVBUSVZBIFBBRFwiLEljb25iaXRUYWJsZXQ6XCJOZXRUQUJ8TlQtMzcwMnxOVC0zNzAyU3xOVC0zNzAyU3xOVC0zNjAzUHxOVC0zNjAzUHxOVC0wNzA0U3xOVC0wNzA0U3xOVC0zODA1Q3xOVC0zODA1Q3xOVC0wODA2Q3xOVC0wODA2Q3xOVC0wOTA5VHxOVC0wOTA5VHxOVC0wOTA3U3xOVC0wOTA3U3xOVC0wOTAyU3xOVC0wOTAyU1wiLFRlY2xhc3RUYWJsZXQ6XCJUOTggNEd8XFxcXGJQODBcXFxcYnxcXFxcYlg5MEhEXFxcXGJ8WDk4IEFpcnxYOTggQWlyIDNHfFxcXFxiWDg5XFxcXGJ8UDgwIDNHfFxcXFxiWDgwaFxcXFxifFA5OCBBaXJ8XFxcXGJYODlIRFxcXFxifFA5OCAzR3xcXFxcYlA5MEhEXFxcXGJ8UDg5IDNHfFg5OCAzR3xcXFxcYlA3MGhcXFxcYnxQNzlIRCAzR3xHMThkIDNHfFxcXFxiUDc5SERcXFxcYnxcXFxcYlA4OXNcXFxcYnxcXFxcYkE4OFxcXFxifFxcXFxiUDEwSERcXFxcYnxcXFxcYlAxOUhEXFxcXGJ8RzE4IDNHfFxcXFxiUDc4SERcXFxcYnxcXFxcYkE3OFxcXFxifFxcXFxiUDc1XFxcXGJ8RzE3cyAzR3xHMTdoIDNHfFxcXFxiUDg1dFxcXFxifFxcXFxiUDkwXFxcXGJ8XFxcXGJQMTFcXFxcYnxcXFxcYlA5OHRcXFxcYnxcXFxcYlA5OEhEXFxcXGJ8XFxcXGJHMThkXFxcXGJ8XFxcXGJQODVzXFxcXGJ8XFxcXGJQMTFIRFxcXFxifFxcXFxiUDg4c1xcXFxifFxcXFxiQTgwSERcXFxcYnxcXFxcYkE4MHNlXFxcXGJ8XFxcXGJBMTBoXFxcXGJ8XFxcXGJQODlcXFxcYnxcXFxcYlA3OHNcXFxcYnxcXFxcYkcxOFxcXFxifFxcXFxiUDg1XFxcXGJ8XFxcXGJBNzBoXFxcXGJ8XFxcXGJBNzBcXFxcYnxcXFxcYkcxN1xcXFxifFxcXFxiUDE4XFxcXGJ8XFxcXGJBODBzXFxcXGJ8XFxcXGJBMTFzXFxcXGJ8XFxcXGJQODhIRFxcXFxifFxcXFxiQTgwaFxcXFxifFxcXFxiUDc2c1xcXFxifFxcXFxiUDc2aFxcXFxifFxcXFxiUDk4XFxcXGJ8XFxcXGJBMTBIRFxcXFxifFxcXFxiUDc4XFxcXGJ8XFxcXGJQODhcXFxcYnxcXFxcYkExMVxcXFxifFxcXFxiQTEwdFxcXFxifFxcXFxiUDc2YVxcXFxifFxcXFxiUDc2dFxcXFxifFxcXFxiUDc2ZVxcXFxifFxcXFxiUDg1SERcXFxcYnxcXFxcYlA4NWFcXFxcYnxcXFxcYlA4NlxcXFxifFxcXFxiUDc1SERcXFxcYnxcXFxcYlA3NnZcXFxcYnxcXFxcYkExMlxcXFxifFxcXFxiUDc1YVxcXFxifFxcXFxiQTE1XFxcXGJ8XFxcXGJQNzZUaVxcXFxifFxcXFxiUDgxSERcXFxcYnxcXFxcYkExMFxcXFxifFxcXFxiVDc2MFZFXFxcXGJ8XFxcXGJUNzIwSERcXFxcYnxcXFxcYlA3NlxcXFxifFxcXFxiUDczXFxcXGJ8XFxcXGJQNzFcXFxcYnxcXFxcYlA3MlxcXFxifFxcXFxiVDcyMFNFXFxcXGJ8XFxcXGJDNTIwVGlcXFxcYnxcXFxcYlQ3NjBcXFxcYnxcXFxcYlQ3MjBWRVxcXFxifFQ3MjAtM0dFfFQ3MjAtV2lGaVwiLE9uZGFUYWJsZXQ6XCJcXFxcYihWOTc1aXxWaTMwfFZYNTMwfFY3MDF8Vmk2MHxWNzAxc3xWaTUwfFY4MDFzfFY3MTl8Vng2MTB3fFZYNjEwV3xWODE5aXxWaTEwfFZYNTgwV3xWaTEwfFY3MTFzfFY4MTN8VjgxMXxWODIwd3xWODIwfFZpMjB8VjcxMXxWSTMwV3xWNzEyfFY4OTF3fFY5NzJ8VjgxOXd8VjgyMHd8Vmk2MHxWODIwd3xWNzExfFY4MTNzfFY4MDF8VjgxOXxWOTc1c3xWODAxfFY4MTl8VjgxOXxWODE4fFY4MTF8VjcxMnxWOTc1bXxWMTAxd3xWOTYxd3xWODEyfFY4MTh8Vjk3MXxWOTcxc3xWOTE5fFY5ODl8VjExNnd8VjEwMnd8Vjk3M3xWaTQwKVxcXFxiW1xcXFxzXStcIixKYXl0ZWNoVGFibGV0OlwiVFBDLVBBNzYyXCIsQmxhdXB1bmt0VGFibGV0OlwiRW5kZWF2b3VyIDgwME5HfEVuZGVhdm91ciAxMDEwXCIsRGlnbWFUYWJsZXQ6XCJcXFxcYihpRHgxMHxpRHg5fGlEeDh8aUR4N3xpRHhEN3xpRHhEOHxpRHNROHxpRHNRN3xpRHNROHxpRHNEMTB8aURuRDd8M1RTODA0SHxpRHNRMTF8aURqN3xpRHMxMClcXFxcYlwiLEV2b2xpb1RhYmxldDpcIkFSSUFfTWluaV93aWZpfEFyaWFbIF9dTWluaXxFdm9saW8gWDEwfEV2b2xpbyBYN3xFdm9saW8gWDh8XFxcXGJFdm90YWJcXFxcYnxcXFxcYk5ldXJhXFxcXGJcIixMYXZhVGFibGV0OlwiUVBBRCBFNzA0fFxcXFxiSXZvcnlTXFxcXGJ8RS1UQUIgSVZPUll8XFxcXGJFLVRBQlxcXFxiXCIsQ2Vsa29uVGFibGV0OlwiQ1Q2OTV8Q1Q4ODh8Q1RbXFxcXHNdPzkxMHxDVDcgVGFifENUOSBUYWJ8Q1QzIFRhYnxDVDIgVGFifENUMSBUYWJ8QzgyMHxDNzIwfFxcXFxiQ1QtMVxcXFxiXCIsV29sZGVyVGFibGV0OlwibWlUYWIgXFxcXGIoRElBTU9ORHxTUEFDRXxCUk9PS0xZTnxORU98RkxZfE1BTkhBVFRBTnxGVU5LfEVWT0xVVElPTnxTS1l8R09DQVJ8SVJPTnxHRU5JVVN8UE9QfE1JTlR8RVBTSUxPTnxCUk9BRFdBWXxKVU1QfEhPUHxMRUdFTkR8TkVXIEFHRXxMSU5FfEFEVkFOQ0V8RkVFTHxGT0xMT1d8TElLRXxMSU5LfExJVkV8VEhJTkt8RlJFRURPTXxDSElDQUdPfENMRVZFTEFORHxCQUxUSU1PUkUtR0h8SU9XQXxCT1NUT058U0VBVFRMRXxQSE9FTklYfERBTExBU3xJTiAxMDF8TWFzdGVyQ2hlZilcXFxcYlwiLE1pVGFibGV0OlwiXFxcXGJNSSBQQURcXFxcYnxcXFxcYkhNIE5PVEUgMVdcXFxcYlwiLE5pYmlydVRhYmxldDpcIk5pYmlydSBNMXxOaWJpcnUgSnVwaXRlciBPbmVcIixOZXhvVGFibGV0OlwiTkVYTyBOT1ZBfE5FWE8gMTB8TkVYTyBBVklPfE5FWE8gRlJFRXxORVhPIEdPfE5FWE8gRVZPfE5FWE8gM0d8TkVYTyBTTUFSVHxORVhPIEtJRERPfE5FWE8gTU9CSVwiLFViaXNsYXRlVGFibGV0OlwiVWJpU2xhdGVbXFxcXHNdPzdDXCIsUG9ja2V0Qm9va1RhYmxldDpcIlBvY2tldGJvb2tcIixIdWRsOlwiSHVkbCBIVDdTM1wiLFRlbHN0cmFUYWJsZXQ6XCJULUh1YjJcIixHZW5lcmljVGFibGV0OlwiQW5kcm9pZC4qXFxcXGI5N0RcXFxcYnxUYWJsZXQoPyEuKlBDKXxCTlRWMjUwQXxNSUQtV0NETUF8TG9naWNQRCBab29tMnxcXFxcYkE3RUJcXFxcYnxDYXROb3ZhOHxBMV8wN3xDVDcwNHxDVDEwMDJ8XFxcXGJNNzIxXFxcXGJ8cmszMHNka3xcXFxcYkVWT1RBQlxcXFxifE03NThBfEVUOTA0fEFMVU1JVU0xMHxTbWFydGZyZW4gVGFifEVuZGVhdm91ciAxMDEwfFRhYmxldC1QQy00fFRhZ2kgVGFifFxcXFxiTTZwcm9cXFxcYnxDVDEwMjBXfGFyYyAxMEhEfFxcXFxiSm9sbGFcXFxcYlwifSxvc3M6e0FuZHJvaWRPUzpcIkFuZHJvaWRcIixCbGFja0JlcnJ5T1M6XCJibGFja2JlcnJ5fFxcXFxiQkIxMFxcXFxifHJpbSB0YWJsZXQgb3NcIixQYWxtT1M6XCJQYWxtT1N8YXZhbnRnb3xibGF6ZXJ8ZWxhaW5lfGhpcHRvcHxwYWxtfHBsdWNrZXJ8eGlpbm9cIixTeW1iaWFuT1M6XCJTeW1iaWFufFN5bWJPU3xTZXJpZXM2MHxTZXJpZXM0MHxTWUItWzAtOV0rfFxcXFxiUzYwXFxcXGJcIixXaW5kb3dzTW9iaWxlT1M6XCJXaW5kb3dzIENFLiooUFBDfFNtYXJ0cGhvbmV8TW9iaWxlfFswLTldezN9eFswLTldezN9KXxXaW5kb3cgTW9iaWxlfFdpbmRvd3MgUGhvbmUgWzAtOS5dK3xXQ0U7XCIsV2luZG93c1Bob25lT1M6XCJXaW5kb3dzIFBob25lIDguMXxXaW5kb3dzIFBob25lIDguMHxXaW5kb3dzIFBob25lIE9TfFhCTFdQN3xadW5lV1A3fFdpbmRvd3MgTlQgNi5bMjNdOyBBUk07XCIsaU9TOlwiXFxcXGJpUGhvbmUuKk1vYmlsZXxcXFxcYmlQb2R8XFxcXGJpUGFkXCIsTWVlR29PUzpcIk1lZUdvXCIsTWFlbW9PUzpcIk1hZW1vXCIsSmF2YU9TOlwiSjJNRS98XFxcXGJNSURQXFxcXGJ8XFxcXGJDTERDXFxcXGJcIix3ZWJPUzpcIndlYk9TfGhwd09TXCIsYmFkYU9TOlwiXFxcXGJCYWRhXFxcXGJcIixCUkVXT1M6XCJCUkVXXCJ9LHVhczp7Q2hyb21lOlwiXFxcXGJDck1vXFxcXGJ8Q3JpT1N8QW5kcm9pZC4qQ2hyb21lL1suMC05XSogKE1vYmlsZSk/XCIsRG9sZmluOlwiXFxcXGJEb2xmaW5cXFxcYlwiLE9wZXJhOlwiT3BlcmEuKk1pbml8T3BlcmEuKk1vYml8QW5kcm9pZC4qT3BlcmF8TW9iaWxlLipPUFIvWzAtOS5dK3xDb2FzdC9bMC05Ll0rXCIsU2t5ZmlyZTpcIlNreWZpcmVcIixJRTpcIklFTW9iaWxlfE1TSUVNb2JpbGVcIixGaXJlZm94OlwiZmVubmVjfGZpcmVmb3guKm1hZW1vfChNb2JpbGV8VGFibGV0KS4qRmlyZWZveHxGaXJlZm94LipNb2JpbGVcIixCb2x0OlwiYm9sdFwiLFRlYVNoYXJrOlwidGVhc2hhcmtcIixCbGF6ZXI6XCJCbGF6ZXJcIixTYWZhcmk6XCJWZXJzaW9uLipNb2JpbGUuKlNhZmFyaXxTYWZhcmkuKk1vYmlsZXxNb2JpbGVTYWZhcmlcIixUaXplbjpcIlRpemVuXCIsVUNCcm93c2VyOlwiVUMuKkJyb3dzZXJ8VUNXRUJcIixiYWlkdWJveGFwcDpcImJhaWR1Ym94YXBwXCIsYmFpZHVicm93c2VyOlwiYmFpZHVicm93c2VyXCIsRGlpZ29Ccm93c2VyOlwiRGlpZ29Ccm93c2VyXCIsUHVmZmluOlwiUHVmZmluXCIsTWVyY3VyeTpcIlxcXFxiTWVyY3VyeVxcXFxiXCIsT2JpZ29Ccm93c2VyOlwiT2JpZ29cIixOZXRGcm9udDpcIk5GLUJyb3dzZXJcIixHZW5lcmljQnJvd3NlcjpcIk5va2lhQnJvd3NlcnxPdmlCcm93c2VyfE9uZUJyb3dzZXJ8VHdvbmt5QmVhbUJyb3dzZXJ8U0VNQy4qQnJvd3NlcnxGbHlGbG93fE1pbmltb3xOZXRGcm9udHxOb3ZhcnJhLVZpc2lvbnxNUVFCcm93c2VyfE1pY3JvTWVzc2VuZ2VyXCJ9LHByb3BzOntNb2JpbGU6XCJNb2JpbGUvW1ZFUl1cIixCdWlsZDpcIkJ1aWxkL1tWRVJdXCIsVmVyc2lvbjpcIlZlcnNpb24vW1ZFUl1cIixWZW5kb3JJRDpcIlZlbmRvcklEL1tWRVJdXCIsaVBhZDpcImlQYWQuKkNQVVthLXogXStbVkVSXVwiLGlQaG9uZTpcImlQaG9uZS4qQ1BVW2EteiBdK1tWRVJdXCIsaVBvZDpcImlQb2QuKkNQVVthLXogXStbVkVSXVwiLEtpbmRsZTpcIktpbmRsZS9bVkVSXVwiLENocm9tZTpbXCJDaHJvbWUvW1ZFUl1cIixcIkNyaU9TL1tWRVJdXCIsXCJDck1vL1tWRVJdXCJdLENvYXN0OltcIkNvYXN0L1tWRVJdXCJdLERvbGZpbjpcIkRvbGZpbi9bVkVSXVwiLEZpcmVmb3g6XCJGaXJlZm94L1tWRVJdXCIsRmVubmVjOlwiRmVubmVjL1tWRVJdXCIsSUU6W1wiSUVNb2JpbGUvW1ZFUl07XCIsXCJJRU1vYmlsZSBbVkVSXVwiLFwiTVNJRSBbVkVSXTtcIixcIlRyaWRlbnQvWzAtOS5dKzsuKnJ2OltWRVJdXCJdLE5ldEZyb250OlwiTmV0RnJvbnQvW1ZFUl1cIixOb2tpYUJyb3dzZXI6XCJOb2tpYUJyb3dzZXIvW1ZFUl1cIixPcGVyYTpbXCIgT1BSL1tWRVJdXCIsXCJPcGVyYSBNaW5pL1tWRVJdXCIsXCJWZXJzaW9uL1tWRVJdXCJdLFwiT3BlcmEgTWluaVwiOlwiT3BlcmEgTWluaS9bVkVSXVwiLFwiT3BlcmEgTW9iaVwiOlwiVmVyc2lvbi9bVkVSXVwiLFwiVUMgQnJvd3NlclwiOlwiVUMgQnJvd3NlcltWRVJdXCIsTVFRQnJvd3NlcjpcIk1RUUJyb3dzZXIvW1ZFUl1cIixNaWNyb01lc3NlbmdlcjpcIk1pY3JvTWVzc2VuZ2VyL1tWRVJdXCIsYmFpZHVib3hhcHA6XCJiYWlkdWJveGFwcC9bVkVSXVwiLGJhaWR1YnJvd3NlcjpcImJhaWR1YnJvd3Nlci9bVkVSXVwiLElyb246XCJJcm9uL1tWRVJdXCIsU2FmYXJpOltcIlZlcnNpb24vW1ZFUl1cIixcIlNhZmFyaS9bVkVSXVwiXSxTa3lmaXJlOlwiU2t5ZmlyZS9bVkVSXVwiLFRpemVuOlwiVGl6ZW4vW1ZFUl1cIixXZWJraXQ6XCJ3ZWJraXRbIC9dW1ZFUl1cIixHZWNrbzpcIkdlY2tvL1tWRVJdXCIsVHJpZGVudDpcIlRyaWRlbnQvW1ZFUl1cIixQcmVzdG86XCJQcmVzdG8vW1ZFUl1cIixpT1M6XCIgXFxcXGJpP09TXFxcXGIgW1ZFUl1bIDtdezF9XCIsQW5kcm9pZDpcIkFuZHJvaWQgW1ZFUl1cIixCbGFja0JlcnJ5OltcIkJsYWNrQmVycnlbXFxcXHddKy9bVkVSXVwiLFwiQmxhY2tCZXJyeS4qVmVyc2lvbi9bVkVSXVwiLFwiVmVyc2lvbi9bVkVSXVwiXSxCUkVXOlwiQlJFVyBbVkVSXVwiLEphdmE6XCJKYXZhL1tWRVJdXCIsXCJXaW5kb3dzIFBob25lIE9TXCI6W1wiV2luZG93cyBQaG9uZSBPUyBbVkVSXVwiLFwiV2luZG93cyBQaG9uZSBbVkVSXVwiXSxcIldpbmRvd3MgUGhvbmVcIjpcIldpbmRvd3MgUGhvbmUgW1ZFUl1cIixcIldpbmRvd3MgQ0VcIjpcIldpbmRvd3MgQ0UvW1ZFUl1cIixcIldpbmRvd3MgTlRcIjpcIldpbmRvd3MgTlQgW1ZFUl1cIixTeW1iaWFuOltcIlN5bWJpYW5PUy9bVkVSXVwiLFwiU3ltYmlhbi9bVkVSXVwiXSx3ZWJPUzpbXCJ3ZWJPUy9bVkVSXVwiLFwiaHB3T1MvW1ZFUl07XCJdfSx1dGlsczp7Qm90OlwiR29vZ2xlYm90fGZhY2Vib29rZXh0ZXJuYWxoaXR8QWRzQm90LUdvb2dsZXxHb29nbGUgS2V5d29yZCBTdWdnZXN0aW9ufEZhY2Vib3R8WWFuZGV4Qm90fGJpbmdib3R8aWFfYXJjaGl2ZXJ8QWhyZWZzQm90fEV6b29tc3xHU0xGYm90fFdCU2VhcmNoQm90fFR3aXR0ZXJib3R8VHdlZXRtZW1lQm90fFR3aWtsZXxQYXBlckxpQm90fFdvdGJveHxVbndpbmRGZXRjaG9yXCIsTW9iaWxlQm90OlwiR29vZ2xlYm90LU1vYmlsZXxBZHNCb3QtR29vZ2xlLU1vYmlsZXxZYWhvb1NlZWtlci9NMUExLVIyRDJcIixEZXNrdG9wTW9kZTpcIldQRGVza3RvcFwiLFRWOlwiU29ueURUVnxIYmJUVlwiLFdlYktpdDpcIih3ZWJraXQpWyAvXShbXFxcXHcuXSspXCIsQ29uc29sZTpcIlxcXFxiKE5pbnRlbmRvfE5pbnRlbmRvIFdpaVV8TmludGVuZG8gM0RTfFBMQVlTVEFUSU9OfFhib3gpXFxcXGJcIixXYXRjaDpcIlNNLVY3MDBcIn19LGUuZGV0ZWN0TW9iaWxlQnJvd3NlcnM9e2Z1bGxQYXR0ZXJuOi8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllcyg0fDYpMHxzeW1iaWFufHRyZW98dXBcXC4oYnJvd3NlcnxsaW5rKXx2b2RhZm9uZXx3YXB8d2luZG93cyBjZXx4ZGF8eGlpbm8vaSxzaG9ydFBhdHRlcm46LzEyMDd8NjMxMHw2NTkwfDNnc298NHRocHw1MFsxLTZdaXw3NzBzfDgwMnN8YSB3YXxhYmFjfGFjKGVyfG9vfHNcXC0pfGFpKGtvfHJuKXxhbChhdnxjYXxjbyl8YW1vaXxhbihleHxueXx5dyl8YXB0dXxhcihjaHxnbyl8YXModGV8dXMpfGF0dHd8YXUoZGl8XFwtbXxyIHxzICl8YXZhbnxiZShja3xsbHxucSl8YmkobGJ8cmQpfGJsKGFjfGF6KXxicihlfHYpd3xidW1ifGJ3XFwtKG58dSl8YzU1XFwvfGNhcGl8Y2N3YXxjZG1cXC18Y2VsbHxjaHRtfGNsZGN8Y21kXFwtfGNvKG1wfG5kKXxjcmF3fGRhKGl0fGxsfG5nKXxkYnRlfGRjXFwtc3xkZXZpfGRpY2F8ZG1vYnxkbyhjfHApb3xkcygxMnxcXC1kKXxlbCg0OXxhaSl8ZW0obDJ8dWwpfGVyKGljfGswKXxlc2w4fGV6KFs0LTddMHxvc3x3YXx6ZSl8ZmV0Y3xmbHkoXFwtfF8pfGcxIHV8ZzU2MHxnZW5lfGdmXFwtNXxnXFwtbW98Z28oXFwud3xvZCl8Z3IoYWR8dW4pfGhhaWV8aGNpdHxoZFxcLShtfHB8dCl8aGVpXFwtfGhpKHB0fHRhKXxocCggaXxpcCl8aHNcXC1jfGh0KGMoXFwtfCB8X3xhfGd8cHxzfHQpfHRwKXxodShhd3x0Yyl8aVxcLSgyMHxnb3xtYSl8aTIzMHxpYWMoIHxcXC18XFwvKXxpYnJvfGlkZWF8aWcwMXxpa29tfGltMWt8aW5ub3xpcGFxfGlyaXN8amEodHx2KWF8amJyb3xqZW11fGppZ3N8a2RkaXxrZWppfGtndCggfFxcLyl8a2xvbnxrcHQgfGt3Y1xcLXxreW8oY3xrKXxsZShub3x4aSl8bGcoIGd8XFwvKGt8bHx1KXw1MHw1NHxcXC1bYS13XSl8bGlid3xseW54fG0xXFwtd3xtM2dhfG01MFxcL3xtYSh0ZXx1aXx4byl8bWMoMDF8MjF8Y2EpfG1cXC1jcnxtZShyY3xyaSl8bWkobzh8b2F8dHMpfG1tZWZ8bW8oMDF8MDJ8Yml8ZGV8ZG98dChcXC18IHxvfHYpfHp6KXxtdCg1MHxwMXx2ICl8bXdicHxteXdhfG4xMFswLTJdfG4yMFsyLTNdfG4zMCgwfDIpfG41MCgwfDJ8NSl8bjcoMCgwfDEpfDEwKXxuZSgoY3xtKVxcLXxvbnx0Znx3Znx3Z3x3dCl8bm9rKDZ8aSl8bnpwaHxvMmltfG9wKHRpfHd2KXxvcmFufG93ZzF8cDgwMHxwYW4oYXxkfHQpfHBkeGd8cGcoMTN8XFwtKFsxLThdfGMpKXxwaGlsfHBpcmV8cGwoYXl8dWMpfHBuXFwtMnxwbyhja3xydHxzZSl8cHJveHxwc2lvfHB0XFwtZ3xxYVxcLWF8cWMoMDd8MTJ8MjF8MzJ8NjB8XFwtWzItN118aVxcLSl8cXRla3xyMzgwfHI2MDB8cmFrc3xyaW05fHJvKHZlfHpvKXxzNTVcXC98c2EoZ2V8bWF8bW18bXN8bnl8dmEpfHNjKDAxfGhcXC18b298cFxcLSl8c2RrXFwvfHNlKGMoXFwtfDB8MSl8NDd8bWN8bmR8cmkpfHNnaFxcLXxzaGFyfHNpZShcXC18bSl8c2tcXC0wfHNsKDQ1fGlkKXxzbShhbHxhcnxiM3xpdHx0NSl8c28oZnR8bnkpfHNwKDAxfGhcXC18dlxcLXx2ICl8c3koMDF8bWIpfHQyKDE4fDUwKXx0NigwMHwxMHwxOCl8dGEoZ3R8bGspfHRjbFxcLXx0ZGdcXC18dGVsKGl8bSl8dGltXFwtfHRcXC1tb3x0byhwbHxzaCl8dHMoNzB8bVxcLXxtM3xtNSl8dHhcXC05fHVwKFxcLmJ8ZzF8c2kpfHV0c3R8djQwMHx2NzUwfHZlcml8dmkocmd8dGUpfHZrKDQwfDVbMC0zXXxcXC12KXx2bTQwfHZvZGF8dnVsY3x2eCg1Mnw1M3w2MHw2MXw3MHw4MHw4MXw4M3w4NXw5OCl8dzNjKFxcLXwgKXx3ZWJjfHdoaXR8d2koZyB8bmN8bncpfHdtbGJ8d29udXx4NzAwfHlhc1xcLXx5b3VyfHpldG98enRlXFwtL2ksdGFibGV0UGF0dGVybjovYW5kcm9pZHxpcGFkfHBsYXlib29rfHNpbGsvaX07dmFyIGYsZz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3JldHVybiBlLkZBTExCQUNLX1BIT05FPVwiVW5rbm93blBob25lXCIsZS5GQUxMQkFDS19UQUJMRVQ9XCJVbmtub3duVGFibGV0XCIsZS5GQUxMQkFDS19NT0JJTEU9XCJVbmtub3duTW9iaWxlXCIsZj1cImlzQXJyYXlcImluIEFycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfSxmdW5jdGlvbigpe3ZhciBhLGIsZCxoLGksaixrPWUubW9iaWxlRGV0ZWN0UnVsZXM7Zm9yKGEgaW4gay5wcm9wcylpZihnLmNhbGwoay5wcm9wcyxhKSl7Zm9yKGI9ay5wcm9wc1thXSxmKGIpfHwoYj1bYl0pLGk9Yi5sZW5ndGgsaD0wO2k+aDsrK2gpZD1iW2hdLGo9ZC5pbmRleE9mKFwiW1ZFUl1cIiksaj49MCYmKGQ9ZC5zdWJzdHJpbmcoMCxqKStcIihbXFxcXHcuX1xcXFwrXSspXCIrZC5zdWJzdHJpbmcoais1KSksYltoXT1uZXcgUmVnRXhwKGQsXCJpXCIpO2sucHJvcHNbYV09Yn1jKGsub3NzKSxjKGsucGhvbmVzKSxjKGsudGFibGV0cyksYyhrLnVhcyksYyhrLnV0aWxzKSxrLm9zczA9e1dpbmRvd3NQaG9uZU9TOmsub3NzLldpbmRvd3NQaG9uZU9TLFdpbmRvd3NNb2JpbGVPUzprLm9zcy5XaW5kb3dzTW9iaWxlT1N9fSgpLGUuZmluZE1hdGNoPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpaWYoZy5jYWxsKGEsYykmJmFbY10udGVzdChiKSlyZXR1cm4gYztyZXR1cm4gbnVsbH0sZS5nZXRWZXJzaW9uU3RyPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxmLGgsaT1lLm1vYmlsZURldGVjdFJ1bGVzLnByb3BzO2lmKGcuY2FsbChpLGEpKWZvcihjPWlbYV0sZj1jLmxlbmd0aCxkPTA7Zj5kOysrZClpZihoPWNbZF0uZXhlYyhiKSxudWxsIT09aClyZXR1cm4gaFsxXTtyZXR1cm4gbnVsbH0sZS5nZXRWZXJzaW9uPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZS5nZXRWZXJzaW9uU3RyKGEsYik7cmV0dXJuIGM/ZS5wcmVwYXJlVmVyc2lvbk5vKGMpOjAvMH0sZS5wcmVwYXJlVmVyc2lvbk5vPWZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBiPWEuc3BsaXQoL1thLXouXyBcXC9cXC1dL2kpLDE9PT1iLmxlbmd0aCYmKGE9YlswXSksYi5sZW5ndGg+MSYmKGE9YlswXStcIi5cIixiLnNoaWZ0KCksYSs9Yi5qb2luKFwiXCIpKSxOdW1iZXIoYSl9LGUuaXNNb2JpbGVGYWxsYmFjaz1mdW5jdGlvbihhKXtyZXR1cm4gZS5kZXRlY3RNb2JpbGVCcm93c2Vycy5mdWxsUGF0dGVybi50ZXN0KGEpfHxlLmRldGVjdE1vYmlsZUJyb3dzZXJzLnNob3J0UGF0dGVybi50ZXN0KGEuc3Vic3RyKDAsNCkpfSxlLmlzVGFibGV0RmFsbGJhY2s9ZnVuY3Rpb24oYSl7cmV0dXJuIGUuZGV0ZWN0TW9iaWxlQnJvd3NlcnMudGFibGV0UGF0dGVybi50ZXN0KGEpfSxlLnByZXBhcmVEZXRlY3Rpb25DYWNoZT1mdW5jdGlvbihhLGMsZil7aWYoYS5tb2JpbGU9PT1iKXt2YXIgZyxoLGk7cmV0dXJuKGg9ZS5maW5kTWF0Y2goZS5tb2JpbGVEZXRlY3RSdWxlcy50YWJsZXRzLGMpKT8oYS5tb2JpbGU9YS50YWJsZXQ9aCx2b2lkKGEucGhvbmU9bnVsbCkpOihnPWUuZmluZE1hdGNoKGUubW9iaWxlRGV0ZWN0UnVsZXMucGhvbmVzLGMpKT8oYS5tb2JpbGU9YS5waG9uZT1nLHZvaWQoYS50YWJsZXQ9bnVsbCkpOnZvaWQoZS5pc01vYmlsZUZhbGxiYWNrKGMpPyhpPWQuaXNQaG9uZVNpemVkKGYpLFxuaT09PWI/KGEubW9iaWxlPWUuRkFMTEJBQ0tfTU9CSUxFLGEudGFibGV0PWEucGhvbmU9bnVsbCk6aT8oYS5tb2JpbGU9YS5waG9uZT1lLkZBTExCQUNLX1BIT05FLGEudGFibGV0PW51bGwpOihhLm1vYmlsZT1hLnRhYmxldD1lLkZBTExCQUNLX1RBQkxFVCxhLnBob25lPW51bGwpKTplLmlzVGFibGV0RmFsbGJhY2soYyk/KGEubW9iaWxlPWEudGFibGV0PWUuRkFMTEJBQ0tfVEFCTEVULGEucGhvbmU9bnVsbCk6YS5tb2JpbGU9YS50YWJsZXQ9YS5waG9uZT1udWxsKX19LGUubW9iaWxlR3JhZGU9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCE9PWEubW9iaWxlKCk7cmV0dXJuIGEub3MoXCJpT1NcIikmJmEudmVyc2lvbihcImlQYWRcIik+PTQuM3x8YS5vcyhcImlPU1wiKSYmYS52ZXJzaW9uKFwiaVBob25lXCIpPj0zLjF8fGEub3MoXCJpT1NcIikmJmEudmVyc2lvbihcImlQb2RcIik+PTMuMXx8YS52ZXJzaW9uKFwiQW5kcm9pZFwiKT4yLjEmJmEuaXMoXCJXZWJraXRcIil8fGEudmVyc2lvbihcIldpbmRvd3MgUGhvbmUgT1NcIik+PTd8fGEuaXMoXCJCbGFja0JlcnJ5XCIpJiZhLnZlcnNpb24oXCJCbGFja0JlcnJ5XCIpPj02fHxhLm1hdGNoKFwiUGxheWJvb2suKlRhYmxldFwiKXx8YS52ZXJzaW9uKFwid2ViT1NcIik+PTEuNCYmYS5tYXRjaChcIlBhbG18UHJlfFBpeGlcIil8fGEubWF0Y2goXCJocC4qVG91Y2hQYWRcIil8fGEuaXMoXCJGaXJlZm94XCIpJiZhLnZlcnNpb24oXCJGaXJlZm94XCIpPj0xMnx8YS5pcyhcIkNocm9tZVwiKSYmYS5pcyhcIkFuZHJvaWRPU1wiKSYmYS52ZXJzaW9uKFwiQW5kcm9pZFwiKT49NHx8YS5pcyhcIlNreWZpcmVcIikmJmEudmVyc2lvbihcIlNreWZpcmVcIik+PTQuMSYmYS5pcyhcIkFuZHJvaWRPU1wiKSYmYS52ZXJzaW9uKFwiQW5kcm9pZFwiKT49Mi4zfHxhLmlzKFwiT3BlcmFcIikmJmEudmVyc2lvbihcIk9wZXJhIE1vYmlcIik+MTEmJmEuaXMoXCJBbmRyb2lkT1NcIil8fGEuaXMoXCJNZWVHb09TXCIpfHxhLmlzKFwiVGl6ZW5cIil8fGEuaXMoXCJEb2xmaW5cIikmJmEudmVyc2lvbihcIkJhZGFcIik+PTJ8fChhLmlzKFwiVUMgQnJvd3NlclwiKXx8YS5pcyhcIkRvbGZpblwiKSkmJmEudmVyc2lvbihcIkFuZHJvaWRcIik+PTIuM3x8YS5tYXRjaChcIktpbmRsZSBGaXJlXCIpfHxhLmlzKFwiS2luZGxlXCIpJiZhLnZlcnNpb24oXCJLaW5kbGVcIik+PTN8fGEuaXMoXCJBbmRyb2lkT1NcIikmJmEuaXMoXCJOb29rVGFibGV0XCIpfHxhLnZlcnNpb24oXCJDaHJvbWVcIik+PTExJiYhYnx8YS52ZXJzaW9uKFwiU2FmYXJpXCIpPj01JiYhYnx8YS52ZXJzaW9uKFwiRmlyZWZveFwiKT49NCYmIWJ8fGEudmVyc2lvbihcIk1TSUVcIik+PTcmJiFifHxhLnZlcnNpb24oXCJPcGVyYVwiKT49MTAmJiFiP1wiQVwiOmEub3MoXCJpT1NcIikmJmEudmVyc2lvbihcImlQYWRcIik8NC4zfHxhLm9zKFwiaU9TXCIpJiZhLnZlcnNpb24oXCJpUGhvbmVcIik8My4xfHxhLm9zKFwiaU9TXCIpJiZhLnZlcnNpb24oXCJpUG9kXCIpPDMuMXx8YS5pcyhcIkJsYWNrYmVycnlcIikmJmEudmVyc2lvbihcIkJsYWNrQmVycnlcIik+PTUmJmEudmVyc2lvbihcIkJsYWNrQmVycnlcIik8Nnx8YS52ZXJzaW9uKFwiT3BlcmEgTWluaVwiKT49NSYmYS52ZXJzaW9uKFwiT3BlcmEgTWluaVwiKTw9Ni41JiYoYS52ZXJzaW9uKFwiQW5kcm9pZFwiKT49Mi4zfHxhLmlzKFwiaU9TXCIpKXx8YS5tYXRjaChcIk5va2lhTjh8Tm9raWFDN3xOOTcuKlNlcmllczYwfFN5bWJpYW4vM1wiKXx8YS52ZXJzaW9uKFwiT3BlcmEgTW9iaVwiKT49MTEmJmEuaXMoXCJTeW1iaWFuT1NcIik/XCJCXCI6KGEudmVyc2lvbihcIkJsYWNrQmVycnlcIik8NXx8YS5tYXRjaChcIk1TSUVNb2JpbGV8V2luZG93cyBDRS4qTW9iaWxlXCIpfHxhLnZlcnNpb24oXCJXaW5kb3dzIE1vYmlsZVwiKTw9NS4yLFwiQ1wiKX0sZS5kZXRlY3RPUz1mdW5jdGlvbihhKXtyZXR1cm4gZS5maW5kTWF0Y2goZS5tb2JpbGVEZXRlY3RSdWxlcy5vc3MwLGEpfHxlLmZpbmRNYXRjaChlLm1vYmlsZURldGVjdFJ1bGVzLm9zcyxhKX0sZS5nZXREZXZpY2VTbWFsbGVyU2lkZT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuc2NyZWVuLndpZHRoPHdpbmRvdy5zY3JlZW4uaGVpZ2h0P3dpbmRvdy5zY3JlZW4ud2lkdGg6d2luZG93LnNjcmVlbi5oZWlnaHR9LGQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkLG1vYmlsZTpmdW5jdGlvbigpe3JldHVybiBlLnByZXBhcmVEZXRlY3Rpb25DYWNoZSh0aGlzLl9jYWNoZSx0aGlzLnVhLHRoaXMubWF4UGhvbmVXaWR0aCksdGhpcy5fY2FjaGUubW9iaWxlfSxwaG9uZTpmdW5jdGlvbigpe3JldHVybiBlLnByZXBhcmVEZXRlY3Rpb25DYWNoZSh0aGlzLl9jYWNoZSx0aGlzLnVhLHRoaXMubWF4UGhvbmVXaWR0aCksdGhpcy5fY2FjaGUucGhvbmV9LHRhYmxldDpmdW5jdGlvbigpe3JldHVybiBlLnByZXBhcmVEZXRlY3Rpb25DYWNoZSh0aGlzLl9jYWNoZSx0aGlzLnVhLHRoaXMubWF4UGhvbmVXaWR0aCksdGhpcy5fY2FjaGUudGFibGV0fSx1c2VyQWdlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FjaGUudXNlckFnZW50PT09YiYmKHRoaXMuX2NhY2hlLnVzZXJBZ2VudD1lLmZpbmRNYXRjaChlLm1vYmlsZURldGVjdFJ1bGVzLnVhcyx0aGlzLnVhKSksdGhpcy5fY2FjaGUudXNlckFnZW50fSxvczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWNoZS5vcz09PWImJih0aGlzLl9jYWNoZS5vcz1lLmRldGVjdE9TKHRoaXMudWEpKSx0aGlzLl9jYWNoZS5vc30sdmVyc2lvbjpmdW5jdGlvbihhKXtyZXR1cm4gZS5nZXRWZXJzaW9uKGEsdGhpcy51YSl9LHZlcnNpb25TdHI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUuZ2V0VmVyc2lvblN0cihhLHRoaXMudWEpfSxpczpmdW5jdGlvbihiKXtyZXR1cm4gYShiLHRoaXMudXNlckFnZW50KCkpfHxhKGIsdGhpcy5vcygpKXx8YShiLHRoaXMucGhvbmUoKSl8fGEoYix0aGlzLnRhYmxldCgpKXx8YShiLGUuZmluZE1hdGNoKGUubW9iaWxlRGV0ZWN0UnVsZXMudXRpbHMsdGhpcy51YSkpfSxtYXRjaDpmdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIFJlZ0V4cHx8KGE9bmV3IFJlZ0V4cChhLFwiaVwiKSksYS50ZXN0KHRoaXMudWEpfSxpc1Bob25lU2l6ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuaXNQaG9uZVNpemVkKGF8fHRoaXMubWF4UGhvbmVXaWR0aCl9LG1vYmlsZUdyYWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhY2hlLmdyYWRlPT09YiYmKHRoaXMuX2NhY2hlLmdyYWRlPWUubW9iaWxlR3JhZGUodGhpcykpLHRoaXMuX2NhY2hlLmdyYWRlfX0sZC5pc1Bob25lU2l6ZWQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LnNjcmVlbj9mdW5jdGlvbihhKXtyZXR1cm4gMD5hP2I6ZS5nZXREZXZpY2VTbWFsbGVyU2lkZSgpPD1hfTpmdW5jdGlvbigpe30sZC5faW1wbD1lLGR9KX0oZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cylyZXR1cm4gZnVuY3Rpb24oYSl7bW9kdWxlLmV4cG9ydHM9YSgpfTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpcmV0dXJuIGRlZmluZTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXJldHVybiBmdW5jdGlvbihhKXt3aW5kb3cuTW9iaWxlRGV0ZWN0PWEoKX07dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBlbnZpcm9ubWVudFwiKX0oKSk7In0sICJoZWFkZXJzU2l6ZSI6IDE2NDcsICJib2R5U2l6ZSI6IDE1MDczLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNjcyMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDQ0Ljk1MSwgInJlY2VpdmUiOiA3LjMzNn0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI3WiIsICJ0aW1lIjogMTgyOC45MjUsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMval9sb2dvLnBuZyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qLCovKjtxPTAuOCJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTM3LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAib1BHOEFSMng3LnQuenk3Mm5obzdPMGlQV0xRemJiM1hxX0RYem1JYndUay0xNjg0OTQyODc3LTAtQVdFWnhyWWNGcm1FUGNUclhuWm5JRWtzcDJDSW9CaTEvczdzdFJIZ0dqTVNua1ozRWcrTHVLVXYxbWJtNHNPMzFOaVFSZ0tLVzRkdGdES3IvYll1ejd3PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0LVJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MSJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDU3MmM3YTM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtTGVuZ3RoIiwgInZhbHVlIjogIjEwNjI3In0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAiaW1hZ2UvcG5nIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlwiUW1aaGpyZnRmWTdoR2tvQkFqSDd2V3BGV3dLVjNWRHJXZnhTRFZqWWR6MkxZeVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPW9QRzhBUjJ4Ny50Lnp5NzJuaG83TzBpUFdMUXpiYjNYcV9EWHptSWJ3VGstMTY4NDk0Mjg3Ny0wLUFXRVp4clljRnJtRVBjVHJYblpuSUVrc3AyQ0lvQmkxL3M3c3RSSGdHak1TbmtaM0VnK0x1S1V2MW1ibTRzTzMxTmlRUmdLS1c0ZHRnREtyL2JZdXo3dz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMval9sb2dvLnBuZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1aaGpyZnRmWTdoR2tvQkFqSDd2V3BGV3dLVjNWRHJXZnhTRFZqWWR6MkxZeSJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifV0sICJjb250ZW50IjogeyJzaXplIjogMTA2MjcsICJtaW1lVHlwZSI6ICJpbWFnZS9wbmciLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFCRUNBWUFBQURFS25vOUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFCQ2RFVllkRU52YlcxbGJuUUFRMUpGUVZSUFVqb2daMlF0YW5CbFp5QjJNUzR3SUNoMWMybHVaeUJKU2tjZ1NsQkZSeUIyTmpJcExDQnhkV0ZzYVhSNUlEMGdNVEF3Q3J0OGQ2TUFBQ2pLU1VSQlZIaGU3VjBKbEI1RnRaNkVnTXM1b2tjUmdXVDJMUWtnZ2hoa1M0QVhFcExaWndLSTZGTldVVUJJSUNRRVFpSVFzcEdWN0dFUlpGRkJGZ0ZSQVI4K0VsQlJXUjlDSUNMRWgwQUlTY2cyKzMzM3EvNi9uanMxM2YvZnM0UTN4SHpuM0tudVdtN2RxcnBmVjFWMy96MVpyYTJ0a2s1YVdscmFuZmMwck80b3NZaUw3d3lzamlSNk9wc3ZTZjZrK1hvRFBpNTI3aXpzSmtnR0pNMXI4OFhsOWZQRTVldE5TR2ZqeDhIKzdpSWpRWHpwYVVUVlljVkhYSHhTV04xSjlDVE5hL1BadkhIeHV3SjJ0ZlpFNFdOSEVCOVJaYXo0aU1xVFZIell1TGk4Y2ZHOUJkMnhxVGUycDZmUktZTDBSa1RaYWNWSFZKNms0c1BHeGVXTmkrOHQ2STVkdmJFOVBZMlBQVUU2aTg2MktXbGVtOC9tall2dkxlaU9YYjJ4UFQyTnhBVFpWZERaZGlYTmEvUFp2SEh4dlFYZHNhczN0cWVuc1pzZ0daQTByODFuODhiRjl4WjB4NjdlMko2ZVJrYUM0RGF2dmRYYlcyQnRKS0xPdXd2cVRLckw1cmVTRHAzSjJ4WDQraWxFVkJvbENrbnpBVW55Uk1HV1MxYzJTWjd1SU5FTWtnUko4L1UwYkwyK3ZaMjF5UzhQTU01S09rVGxoOFNoTTNtN2lxZzZJRVJVR2lVS1NmTUJTZkpFd1paTFZ6WkpudTRnS3hYR3doclFHZm1vWU92eTYrNnNIWDc1S0RCUFhGNC9uUktIenVUdEtxTHFnRmhFcFVNeUlVbWVyaUtKRGN5enMrelk1UW1TU2FMeXBVT212SDY2bFNna3pkZGRaS3JEVDZmMGR1eHNHN3RNRUNJcURiSXpFVmRYM0hsbkpSMHk1ZlhUcmZpSXlnUFpHVWhTUjVJOC8yN29GRUg4RFhzNjJSbUlxb2RpMHdsN0hBZVc4U1VPbWZMNTZWWXNvdElwT3d0SjlPL00raitPU0V3UWtxTzV1VGs4dG1TeHh4K2xzRjVyYTJmQU1yN0VJVk0rUDkwWElpcU5zck93cy9YdmlvZ21pT3ZEbHBRRXAwMzZwMUZQbTQyMGFCekN4b2dRYVUxYUxpNmRvUy9wNGlIUWF3VTJvUjQ5VERsQXN4NXBaQ1E2eHROcGZJbERwbngrdWk5SjgreEc3MENXWG9NRDV3ck9nNE5XZGFUVytrQVVEU3JiVW9Kak9DUUY1OGpWMWRDWGRQRVF2MjdhdFYzdGRtMXAwZHl0bXFKRWdhK1JTQ0JPcXpScVRyUk5nNVRRSDMzSGJHcENEVzJ3em90Wml5R1BNYk5hMlBKTWk4cFBuUXhaanZtc1hZeXpJWThCM3o2QWNZMk5hSHNick41TXNIcDViTnNFNEJ4cE5qMUpIVlkzWU12RWxVZThGWUMyMmJZVE5oNTIyZU5NVUlJMEJZNkZNL3lodEdpSHRqYkpOZzBlL3U4WDVJR24zNUQ3bmw0bnYzeHlyVHk4NmpWNTVPbS95ME1hNHJ6THN1cDF1WC8xR3BWWDlIaU5PNmZjdjJxdGtkZmx3ZFd2dWZwUTkwUC8vYnJLRy9LZ3l0MlB2aVF2dkxYWmthaFIyOUxjdkZXUGNJWU8wNzhxY0xrMmd1Qk1PeWpWVHZibnVuWHI1S0dISHBMZi92YTM4dGhqanpuNTNlOSs1ODUzN05qUm9lTWJHaHBjbkkzSFFGakhRQm9jbmdQRWVJSmw3UURha0JJRmYzQjlRa0tudFFOQVBJbGkwOVBCdG9mdzY3YnBmbG9jV0w5dEwvWFlkclAvMGdIcHRsNk1EV0IxQWxFWHJVelFKVmJnV3FyT1JZUUVVWUdLVjk5cGtxK1dueS83SDMyZTdEOTBuT1FNR3lmWngxNnM0YVV5NEZnOUhucEp0NlQvc0xGT3NvZENvdE1ISEtmMUhxZDFxdVFPZzR5VDNLSGpwZUNZQzZYZ2lGUGs1cnNmYzdOSjBCWGFDWmhGd0F4RkpvS2cvOUJ4TjkxMGsreTU1NTZTbFpYbHBHL2Z2bUc0ZWZObXpkeitLc3dCQk93Z3hIVzh6Uk4xTmFlK09MMDRobEMvZFJ6R0lXUWM5ZmoyMkR3TWt3QjUvZnBRQi9YUitXdytobEd3K2F5TnRCdjZlSXg4dnQzMjJOb0RJQTdIek1ONGdIMXZ5WklPSFFnQ2xSU2t2TFpSNUpDcThWSmFmWjBVMXkyUWdyTFpVbHc1VjBwcmwwaGg5UTFTVkwyZ1cxSmNzOUNKTzY5U2ZTa3BxV3pUWFZ3elg4TjVUa3FyNXpzcHFWb2dneXVteWVEano1TFZMNnh6dGphNWZrSTd0UEhhQUM2djBoR0VmWGZiYmJjNVF2VHIxNjhkUWI3d2hTL0krKysvSDNZMnIwNEFCc1lPSEdBSGhRTVhkOVdPR2lRN3NBQjFXTmdCdDhmTXkzRGJ0bTFobmJDQmVoRkc2WTBENnJEdEFXeTlRSlROZmg2Q050a3lBTTdSdi9ZQ2tzUk82a0U1MW1ucmhnNmN2LzMyMi9MZ2d3L0tDeSs4a0VySkRDVUluU1lBcW9KSkVFY1F2WGdlTnVaeXlhMzRrZVRXekpXQzZybFNNbWFoRk5RdWtweksrWTRrVVZKUXBYa3lTTWR5aTBJcHFrSVl4T2ZYTEhDU3A4UW9WTUk0cVZLU2xGMHRCeDEzbHF6Zkh1eEhYRGNwSTFwYjlPclRwR0Z3R2swUVFOUFlqN2ZmZnJzanhCNTc3T0ZDeWo3NzdDTmJ0bXdKQjVRZHoyT2UxOWZYeTEvLytsZDU1cGxuNU05Ly9uTVkvdWxQZjVJUFAvelE1ZUZBV2owRTA2eE9PUGlxVmF2azJXZWZsVC8rOFkvdDlOb3JOc0F5ZEFiZ0J6LzRnYnorK3V2dW1GZmtKQTdudytyODV6Ly9LYzgvLzd5ODlOSkw4c29ycjhqTEw3L3Mycmh4bzE1SkZWWS9iYk5BbkJXQXVnRWVreVJvK3cwMzNDQ25uWGFhbkhEQ0NYTDAwVWZMTWNjY0k3VzF0WEx4eFJmTFQzLzYwM0NHcDA1TE1BQTZuM3Z1T1JrNWNxVHJrK3JxYXJucnJydFNxZW1oQklGQmdWRXdGNEltSWdSQlh0a2dNdVRVU1pKWE5sV0tsQmdsdGVxbzVYTmt3S2pycGJoMmNjcUI2Y2h0SVFpUVZ4MFFJU3Brdm53bEE4V1JvMnFKRkZXcU9JSXNjdm1STDA4bFY4dTVNcERLZVZJOGFySWNVM094N0lDdGFyVHI3bFFqMFBlNDY0VzdieUJKSkVFVTdNdzc3N3d6SkFWbUR5NjNQdnZaejdvQnNBUHZYL2w1L3FVdmZTblVZUVY3R1lBRFNDZWdneUNFZnA0RE9NY1Zqem80bzBFKytjbFBobmtJMk1EeWJGTmxaYVd6LzczMzNuUG5oRjJqWndMeXNuM1ErOE1mL3REWll1MzV4Q2MrSWIvODVTOWRIdG9VcHhzMlVwREg5Z1hyQWVrdXZQRENjRGFIOU9uVHg5V0prT2RJMzJ1dnZkejUxNy8rZFhlUkE2alRqdE81NTU0cnMyYk5rclBPT2tzdXYveHlPZjc0NCtXRER6NUlwY1pETitscVhJUUFVTDltdmNpeHAxMGxBeXV1bGNMeXVWSThlcTRjV0xGSUJsVXVsc0hWUzkxeUNNNXVRemgxWVdWcWxvZ0liZjYyV1lQbEYrbnlxazJZSHdUS1RZWHV2R0tXRkkrY0lHT24vVGdrU0F2R3hyRUIxZ2VIYUVOQUVQeEJCaGVENUxDZEdGUjByaDBBQ3B4K3d3YTlTcVR5c2RNUlFweGVCV2FRZ29LQ0RrczBuUC9sTDM5eHprWG5zYzRBK000QzRQZ2YvL2hITzEyVUFRTUd5UGJ0T20ybXdIS1dNRGd1THk5MzdUbnNzTU5rL2ZyMUxzNWVYVzE5NlFENzJNNUxMNzAwYkpjTmNZTURZTDQ0VUJmRXRobjlCNGY5N25lL0c3Ylhrc0VmbHpnNTRJQUQ1TkZISDNVNkFmYkptV2VlS1N0WHJwUlRUam5GM1hnWk5XcFVPUE9rZzNzT3dpWWhiR3RlaTNPbHRaaEJhaStYZ2VYWFNhbnVDd2FYTDNKU01ucUpGSmNGU3lFNHV5L09zVldpMHF5UUdCVEVnUmlsU2tMc1E3RFhLS29KWnBpOG1pVXBndWdTcTB6M1JDUEd5czhlZlY3Z0txRnJPRFlFWjBrSXdzR3lNNGdkRUN5eE1IRFdtWnl1Vk1oam9LaW9LTlFCNFVCalNRUWdyNi9IbnVQWTZzUnloblpZOHNJSkFPWmpTUEFjenNDeXc0WU5jM0VBU0dMcnpRVG1oYk5kZWVXVkhad1YraDk1NUpHdzNuUzZrUWVDUEJUZzk3Ly92U00rOU5uK1p4OHkzdmFEamJmbkVDekpBQkxrMTcvK3RSeHl5Q0Z5NzczM3l1REJnMlhHakJrZCtpMEtXZTNZMFE0QlFWN1hXV2hJM1JWU1ZENHpXUHFVS1RIS2wwcEJ4VXBkRHExUVoyMjcrbmRkc01lWTV3VG5BVWtDS2RWbFZhNHU2WXBPWGliWmVwNnJwSE9iOXZLcGNzVEpWOGliZWhIWXFuMEE4MTFuT3hMQTBYVGRyTEU0U3cyYko2YU1nbnNRWDdCSnQxY2FEakNGY1FBSjRnOFkxdWdXZmpucW9qQU9CTEY2S1B2dnYzK1lEN0JsTE1hTUdkUE9GbHcxNlRDQVBlYU1SaDAyRFdBL1RaZ3dvWjB0bEYvOTZsY3UzYmNCc0xxb3grYWJQSGx5U0FUT1NKa0U3WW9pQnVLNGo4VHN2MmJOR2xjSDJ2ZXZmLzFMNXMyYkp5KysrS0tMczdOcEhBS0NXSEVJbkFnclZSRGs4REZYU0dIRmRIZjF6dGNyZTBIbFVzbXRXcTU3aVdWdXo5QzJUSXFYQW5WNlNQdjRPSUlFeXl2TVdFVVY4NlIwekZMSjBUaEljZTBTVGJ0ZVNrWk9rdk9tM2lZYmRGd2IxWEM5SnFsb2cxdlJhRjM2dUhQZGxPcFowS3lnVFU0MGdzM2RHUVR4eFJJa3FoemovTFR1RXFTdXJzNDVqTDBLWDNMSkpTNk5UbXREbnlRV1hTV0lQYWQrMU1WNnI3dnV1bmFPem1QWVRBRnBFQitYajZGTlp4a3NlOTk2NnkxbkIyMUJ5UG96SVExQm1oeEIxbXhVZ3B3OFVmS3JycEU4M2FCamM0eE5kazZOYnJaMTZSTnVxak5JWVlWdTZGUFNJVjBkUDdoVHBXUngrcGJwRWd1eVJBYlhMcE9jVVhPbG9FWUpXYlZVaWl0dWtFRVZzK1dBcjUwdC8vWENKcmYvd0Z3QmU1MFlnaUErbUVlUXJ1TGVFTkJERlRhM0t3UmhhSStCM2tRUUhKTWdMTWNyNi9ubm4rL1MwWFpjUlZtT2ZRSGc0YWhGZHduQ3F6WDJHZ1RJUVFmblp0dmFhd1UzVFhKemM5MSs2c0FERDNUall0UHQzVWYvVGlTV3BQNXNBWUw0dGtZaEkwSGNES0lFS2F5YzVweTRvR3ErazF4ZDV1RE9rcHRCbktSbWs0aXdRRGYwbUhVWU1yNDlRWUk3VmZsdVZscWh5N2psVXFKTE9SQ2lSUGNlUlhVckpidDhvWlJVNlBKcStHUVpmZVlNMmFqMm9yc2JXdXZWOUlBWUlFaHd4d3BMUkwwcXBtamlsbDdZeFdORG9oTHVUM1p4Z2lBL25ZN0xGNXpqMWluejQ4ck9LeXFPclI0QTUxMGxDTUE0UzBEY3RtWloydWVISUEzdXhOMS8vLzJoZy9NT0hIVCsvZTkvZHlRckxDd015OWp5RU42TkxDc3JjK1dBS0J2ajREYnBIWUdHdEczU2o5QTlTSEdaN2tHd3hJSERwdTR1dVNWWEtNRUcyZy96cWhhcnFQTjdJZE81MU1Mc2xJdGJ5RzRqcmlTcFVDTHBFZ3ZQTzRwcmVZdFhOK3psMDZWMHhLV3k4djVud25mREdwdDNwQWlpZG9NYzJnSG9BczRqSUF5SkVSSkUwMXo2dndGQklIQWEvOHA2eXkyM2hNc2V3SllIN0pLck93U3h4RUE2bmd1VmxwYUdaZUhFUGptUXZucjE2bGg5aUtkZ3RoczNicHdyeDJVWlp5WXJ1SXNGY0JhemRzVWhoaUNBSVVqdDVJQWdlclV2S1YrY0lraXdmd2pJRUM4QktUb0swN2tmSVVGeWxTQllTcEVnMkpEblY4Mlc3SW81VWxCOXZReXF2RWFPT21XeXZLdDhBRUVDSjRlbElBZUNWTWZwSWE2SlFmZW0wb3dnUUhwM0NFTHd1RHNFWVdpUGU0b2dkdVByTDJudXUrOCtOM3Y0UklGWUIrSnhad2xpU1VhWk5HbFNhSWRQV3NTZmNjWVpyZ3pxNU14bWJiRjEySFRjQ2Z2YzV6N245SkJvME1jNk1KYllxS044NGlVV3NrU0pWdWtJRXR6Rm11enVZamxueHNaWkhSekxMRnpSZzAxMm02UDd3czI1TDBnTE51UFlkT3Vza1ZwaVllT1BaUmp1bEpXVWExMWwxOHRBM2J3WFZNNldRWFZ6Wk1DeEY4dXR2MTZUMm52QXl1Q3ZNN3F0RDkxRWdaU2dMUW8yTENXWVE3RDRZc2Z2eWdTaGdDaHdHTHNFZ1R6eHhCT3VEQjJTVG1mQmZ1cktEQUpnaVFTeXdFSDMzbnR2VjhhU2c0VEIvb2o1QWRRTG5WRU9UVnZ0Nno5cjE2NTFEeTU5NHJITkYxMTBrY3RuTHdqcEVENEg4UVhlRm03U3grQTI3M1IxYWpoMzZzbDI2cWsySFQxTzNFd1RJUzRkNU5ETk9BalNOaHVsQ0tLYitaS0toVkphT1U5S3E1UWsxWE9rcEd5cW5Iam05ZkpQblRvYTFNaFd0YkNwS2RVNW1Ebk11UEszSTBGYkZHeFlTa0FReUs1T0VIc2xaWG5HTWZ6ODV6L3ZIbVlTS0FzSHN2cTZReENXQmE2OTl0cXdET3EzTDRoKzlhdGZiVWRPRWdBNnJWNGVXNzJJbzlQLzVDYy9jZnJRWnJ2dlFvaHpsb3V5MVVmNEhBUUJUTE5YWGJqZTJnOUZEcTJab0ZmMGE2U2tMbmoveWozUnJsbnVuTmx0dUZPemhSVTdVOFNLbGkydVVqMFZPb1BvbmdiUE9BcHJWMGdlWmc0dGk0ZUVwWlVMWkdEbEhCbFVNVlA2SC8wRGVlVFo5ZUplYUcrQmRWaExCayswL1FFRmJBZUc4UHFFZWRJUlpOT21UUzRQd0RvUTJtT0FCT0ZnVVBEK2xJVmZqcm9vak92SlRUcHRzZzVwNWRPZi9yUzg4Y1licmh5RmZVckhnN05pZWNReXRwMXhCUEdkZU45OTkzWDVlWVduRGx6MS8vYTN2NlZ5QnFBZHZzNG9jSVppM3U5OTczdnQ5TnNaNWU2NzczWjVraUF0UWRBdEwrc2U1TWpUcjNJRXdUdFk3aVZGdkRKU3QxTDNCaXN5RWlRVFVVQ09vdXJsVWxLN1hITEw1N3Y5U1VHTmJ1UXI1dXRNTWk5NHZXWFVkQms0Y3JLY2ZlVnRnbXM1bGxmWWxEYzI0aVhBdGxrQXNMZnprblJzVW9KUUZ3ZU13amdnYmdiNS95WkluSEJXb2ZQZ2RpamUvMko1QXNkd1B2VFZ4SWtUMjgxR2xFeExMSkFMRCsyUUYxZHhPaTdEeXk2N3JKMkRjMXh3SHFlVDRCS0xNdzZBR3dHMGpiTUk3RVo5ZUlDYVJDOWdOdWxZY2hpQzZCOFE1RFgxd2EvVVhTSUZvNjZXMHRxbGJsa0ZrZ3dvdzBPOWFLZUhKQ1VJeU9EQzhrVXlzRTZYVjdxM0dWQit2UlNkdk5UVlUxUytRQTdTNWQyaEoxMHF6LytqeFpGalc2T1N3bG1LbWFQQkxXRTRGUVBzSkV1V09QdzdFSVFPZ3RuREo0VmRnaUR0eUNPUERQc04vV2lkRmlFSWd2dytTZUlJZ25QMjhmejU4OXVWUlowVTNMSUZrQi8xb2d5T0tlbGdiLzNDWGdqZ3Ywa0FRYnUvK01VdmhtOVlaMEk3Z2dBd3habWpmMUROS3h0YjVMQlRMdE45d215OW9pK1duREs5b3RmZTRBUkxycmhOdWs4UVNzZTgwTFZZQ25TL2dXVVY5THJYMnNjc2xmNG56WmJCMWZNay85aUw1STZIWDNZTEt2UlZzeG9HRzV0Ym05dzdOWGp6azJESEpzVkhRWkQvNzl1OEpBRUVKT25mdjMvb21JaXp5dy9Jd0lFRFF4MkEvVVVsYnFkYUIyZVpkRXNzWHJDcXFxbzZFQXN5Wk1nUWw0NnlkSGJXaHpoZlp4UnNIcFFGU2ZEU0l1dXdiY1J5anErZ1pJTDdUYnFxMUJvMFVFa0Y3ZzhJc2tZWC9JZWVQRjZLS21ickVrdXY5bnFGenl1ZnFZNDhSN0pIWGFjT3pqdFpsRGJuYjBjTzk1QXdrT0JCWWJBMHc2WWZQNG9hT0ViSk4zcTJMdDBXdXoxT3JtN2NTMEhBNFJQa3pFazN5bWE5cUxrK1FQK3B1ZWkvSjFldmNnMisrdXFyWVhIazhvb2RIQ2U3T2tGSUR1c2d2L25OYjl4eUNnNk9lT3ZvSUJESzRBR2REK2pFcStMTWF5WFRKaDBrd1NhYytTMXBNU3NCS09zVGd4SUg2RVU2UW80L2RlQXRiTnR1MjA2ODBadE9MOUdlSURqVTBCWFRQeURJcTF2RXpTQjV1Zzl3VDhmTFp5bFpwc21RTTViSklhZnBabHF2OEhFRWFVY1NRNUNRSk1pamhJTU8vQkFydU5XN1JMTHh0akFlR0o0NFJiNVNQbGJXS1VsaFMxT0RYb25RQjJwblkzMkw3TFBQdnE3Uk0yZk9EQnZMa0oyRjgzVHlVUkhFNXZYTE1jNVA2K2s5Q0s3ZUVOaUQzNGpnMVEyYnhtY2pFRGp3T2VlYzQzU2hqeUM0dW1PdndGbkFPbCttVFRxV05QbjUrV0YrNjZ4NFlBbHd6TGhFNHZMTzEybEIvUVR6VWhmZUVHWmR0czVseTVhNTlFekl3ck1BNTNIUWErdlNjNWo1UHh0YmxTQVRwVlFkR0xkbWl5dXZsUVBycnBWcDk3NGxnOGRvWENhQ2VNU2doRE1JZnZoVW8vc09YY0xsNnA0anQycWxsTmJjSklQS1pza2hJOGZMNDM5OXl5MnR0amZpSXduYVljcVJabTM3TVVjTmt6NVp3VURoZFFObnNuYU83VEJlWGRJSjgrK3FCSWxhMHVDQkdvQ1grS0FMY2ZhS2JoMEpQekN5NEI3RWx6aUMwTmx4TmNmYnRmNFZIZmJoVlhuLzZrOUFuNi9UQXZtUmpoRGp6VGdBZGR0WkM0TDZVZWYwNmROZG5reElFVVNCd05xbU5yWE5JQk9sc0d5Ryt5MTR6b2dKY3RkZkdtWElkM1FaTkdxYVd4NTFoU0FRcEpmV0xaVHNzcG1TanlWVzlXTEpxMXd1cGVXNjdCcDZrYXo0MlI4Y09kelhTblMvZ2RrT2dsKzFnUng3WnZXVHZsbDlaTnEwYWM1a0RnYkFUbUlIeHduejdlb3pDSnlSanYvNDQ0K0hlZkR6V2Q3NkJVbHNQb1pMbHk0TjgvTUhVM0F5cGtNeUxiSHd1MzdPV0NocmlRdDdVSTdqNXg5SDZmUmg4K0NZWk1ITGpaYVVyQmVyamlSd1Q5SWRTQkFYb1FjYVlybi82a2JkZzlSTmRMOG8zRy9ZUkJtL1lwWGN0R3FEN0gvQ1JDbXB3b2NVQW9KZ0x4RklzS1FLU2FJelJXNFpmaFc0eUQzcktISzNjUEZXTUk0WHFlQW51SGo1Y1puazRJR2h4dWNOR3k5VEY5d1hiRGUwblUyTjlVcVE0TDdWaEtzbVNOYWUybEFseGg1S2tqN2FXR3pVQVhhU0gyWUNPdE1TaEIwS2g4RkR0S2pmbERPMHg4WEZ4ZTJjaG5yd2d5bWtrNHdBQnhDd09nZ2NSeEVFT3ZmYmI3OTJGd0FiQWt3alFheE5FRDQ1QjJESGswOCtHZHFLdkJSYmR0R2lSUzQvbGxqVVkvVmlGZ0NzSFFEUFFaQzh2THd3UDJjc09DeCtINDU4N0JQWUg5V3VPTmkrdERvQXZOUGx0d1hoZ2dVTFhIb21kQ1NJK3dQMnBwNmtieElaTWtiSk1PSnlHZnFkaGZLY3ppakhmVS8zRGJvUGNjOHBVak5IT29LVTFxMXdjU0FHQ0lKNC9LNEQrZkg2Zkc3NVBNbXB3SHRYQ3lYbitBbHk5cFhCejJqeE5CeEViVzFza3FibVZsbHk0NDJTMVU4N3VLODJVaHU2VjEvZFlHcllIWUt3US9IWkh6dmd2TkxnRjRYK0xVSG90YnA1akxkS1VRN09ablhoS1hVVU9SZ0MxSUY4akNkQm9Jc09EQUZCN0JYV2hrQVNndGo4Z0wzalEyRTUxbzJmMVdJNWkyTzdKSU5rSWdpV1VIaE5IVHJ0N0lIanFWT250c3NIa0NTK3ZuUmdYcGJidW5XcmZPcFRuM0wxc0MyY0xma1Q0VXhvdTgwTDNVNC9PcjZOSUs5dUVEbjIxRW5TZjhnWjh1UEgzNVZIMW9nY2NQd0ZVbGd4MHpsNEpvSmdwc2dwbStmQ2tycWxMZzhJa1Y4Wi9MWUVzd2cyNm9PVkhBY2NQVmIrODdKbDhvNnVxM2Fvajdpdmt6Um9oNmxkOS96aUFTV0hEa28vN1Z3bFNEK2RSVUFPTkxZN0JLRXo0ZlZ2TzNCMENqZ2pmLzl0OVZtSFp6d0lnakxRd3dGQmlGZTdiWDRTSUc1SnlHTjh6STcyV051d3hQSUpZc0h5U1FpQ2tFNkpMNFRZZktqVExycys4NW5QeUVrbm5SU1N3K3BOUnhES2lTZWU2SFN5TFF6eFMwZllITGNQeVFTVXN4Y2JBak0zN2JQMVF2QmhDTnYvY1FpZnBMY0J4Z1hyZmF6LzErb1NhMGpGQmZJZlNoSjhHK1BiVSs2US9ORTZvOVRPU3hFaFBVRkFDc3djbURGQUREd2hENStqMU9JN1d6T2xwR0tHNUJ4N2ladyticVhnV2cxM1JQMnRlSjFFN2J2dFZ2eGVYQWVsanpaUXBjK2VPTmFHUXJTeDNTRUk4cUJ6Y2F1WW5VZEJoMlpuWjRkNjdDQmdFQkZ2NjhCdm5XMTVPQkIwUkYyeHJSTWdMY29wY0svZURpb0ZhM25tOS9VQ1RPdk1ESUsySVE2dmhOdmxGc3ZZR2N4UGc4UVJoTFpBUDM1YWkzSitXZWpHSjQ0QTVHZVpKQTdzZzg5UlFCcmNVTEIxa1NUNDBncy9VNVFKV1k0UDJpWTB5elhOL1FrMnc0NGd1c1E2Yk1SM1pQblBuaFI4Sk9YcnAwNlQvSk9teU1CVEZ1bXlxRzJESGtjUUxxdndzOW1BSElzbGUvUnNKMFdWczJSUTVUUXBIajVPenIzeVZubFAyNFk2OFo0VjdsaWhrVCs1SGVUUWh1MkJxVkhKMFJlM0lrRVViVENXVzlyd25waEJ6ajc3YktmTERpQ3VsTmhYRUpZZzBBMWhlZUR3d3crUGRLU0hIMzdZcFZ0NzdPQkgyWXQwekR4MmdIbU1wVW82MEtha0JPRXhTYkpreVpKMjVkZ211MjlBYUNYZERFSjc4STB2NXVkU0I3cFJ6NXc1YzF6OTdHTTZlaWJZL3JkOUNqMlk4VkFIaWNHNlI0OGVIYzVXbVJBU0JHWTUwOUErRlJMa2xmZTJ5Nmh2WFNodnZpL3kxSXZiNU9DeUtWS29WLzFjM2FEblZLVitKcHVHSUJERUI4c3FMS2wwRTE1NXZRdzZkYkhPSHRmSWdLTy9MK2ROdVVYZTBVMEg2Z00xM1F6VzJpdzMvL2lXY0taQUE5R1JmYkxRc1RwUWZYWHdlbWdHQVlZT0hlcDAwU2tZWWxuZ3d3NEtBVDNEaHc4UHk5azFPaHdPOE11aGpMVVI2VFlQbHp5K1RTTkdqSWkwZ1dCYUVvSXdMeDBUOFlqREI5YjhlcTJUK1NUSnRBZGhQU0FHeVdIdHdnYWVzd2lkTitrTVF0M0l6N0s0OHdhOXZwMlF1WFBudWp5K3JWRUlDUUpUbkRrb280TGJ2M0RZLzNsN2cxeTc2RlozZk9OZFQwdkpjVmNJdmpZQ2N1VHFNaWtUUVlJN1ZRRko4TlE5cjJLdUZOYk1rLzZqcGt2dXlFa3k2L2JWOG9IYUFQM2JkVFBlcWp0ejdEM3crb2dqZ080M3N2Wk1EWlJLWDVBbEMrZjlaTTkrMklEMTdSWkJBTHhLZ2IxR2xBTmc2Y1VCQUhBY3BSZnh6dVpVZVR1VGZQT2IzM1I1Zkx1aWRObHovSGFCT2lCMEtMenVFV2NIUUh1VDdrSG9pUFlZdU9DQ0Mxdy8rRTdHcTc2Tml5TUlRUElCMy8vKzkxMStsSWVRTEJCOExSR0FrOE1PdGlNSmJCMjRyZTdiaUllZ2JBZjBJMzljLzFtRXYwa0hJZHJQSU1GdDNyLzk3enZ5MUV0clpidmFPbXZwYjZUNGhLdWtxSHloNU5mcHJLQjdpSTRFQ1FSeFNNUHI4ZHlRRjlmTVZYTHA1bjdVVkJsY09WVnVldlJOdDJ3RE9mQS9RSFJvWmN2R1RYTHUyZWNFRFFOQlVuZXQrdlVMYnVtQ0lIdGdMNEpaeE0wbTNTTUk4dUExYjlUSERtU0lEc2IzbEpDSHV1eEFBTGFPRzNHWFRjdVJITlNETDJ2NHR2am5WaS9UOE9LZ0hXUTZsWDB1RVlYT0VNUUM1V2dIUXB6amcyc29nN2F3UFJTck45TU13aENmWndVcGZKdllaMndia0lRZ2ZyOUI3UGUxTEFGeGpqN3hiVXFITERobG15aFFKbldLdzAzMWpmS0JYbFN3ZWI3dzJqdWwrTVNwa25mU0hQY1owcHpxT1VxQXVXNzU1TDZWaXhsRlp3aTNsQnFETHlFdWxBRVY4M1E1dHNCdHlJdkxwMG5SOEV2a2lLcng4dHliU2diVnVVTXJBVG13dE1MWC93YVZEZ3c3encwSVNBSkpOYkpOTUZqQmdQR3BhRlREL1RoME9oMEJndmdwVTZZNFBYYlFjSXlmYitKV29WMnZXdDJBMVc4MzFmNmRIbnhqRm5rb2R2QjV6RFRnMVZkZmJlZVExalo4MThuWFlVRWRjQWEvVFFqNW9OQ0NkVU1uajRrampqZ2kxRUdiL0dXU2ZWQm95OXUyOFJoZmZQVDEyU3YrelRmZjdQSlpHeml6TVlRdTJzb1FIL2pEZzBHN3ZLVnVIbU1jQVArckxYRm9UeERZUTBHVWh1QW5ydkRyOWZ5eWVmZEt5WWxYeVNBM08raHlxVlpuQmQxMGwrZ21IQ0UyNFU1MGlaV3RzMFpCM1JJWitJMFZrbHMyUS9jdFU5ekhGaTZlZnBlOGpWOEVxazU4TnhkQTQvQ3dDTk1nRzJPWm4wblNFUVN3RGc2d2N3RjhoQm5mdXNWQVdZRmV2SXZFZklTdkcrQ2c0WFl3YnZXeURSaHc2c1BHRUxEbFFWQzdwTEhuV0c2Z25PL2dlUEFGMENtaXdIak9JTFk4UXZ6dmt6aWdyQzlBVFUxTnFJZjlZMjNqRE9LRC9XZmI5dWFiYjdxZjNhSzhkVjdyMk4vKzlyZkRQUW5LQW13ejlGQVg5VC93d0FQdU5YWnJtOVdONHl1dXVDTE1qNURINldBSVlvQStTUWwrbUxTbFlZZjdRTUw4Mi85TFNvNmZLS1dqNTdvN1UvaUpMRjVUTDZqQTNrS1hVYlZMbFRRcmRYOXlvNmJkTEVYVks5MXZ5Z3YrNHpJNXZIS3MzUFhvaTdKWnF3STUwTy91TTFVYVlocEhnOWc0LytxYlNaTE1JT3dRbkxQRHNiVDY4cGUvN09xeGRjRU9kT2hycjczbThoRW9hM1VUMEV1ZEdBVG84RzFIbS9EWlMxdS9IWGdPRmtKOFNNR1NEQ0ZzZ3VBM0ZablcwSXlQSXdqZTVpWFM2WUF0Y0VUVWg1a1VyNlZiQjdTNm81WllQR1k3QVI1ek9RcXhPdEZ1WGh4emNuTGNFMjk4bzVpZ1RvVDRPZ21XaS9oYU84dFRGODhaNHNMRlY0YlFMbXRuT3FRSW9oV0dndk9VdEFiL3NVazU2NXo2MFQrOUlRZWRNRllPS3B2dGZzaFVWTDFVWjRiNU1saUpnU2ZtMlJXTEpidHFtZVJWcjNDL044OFpmbzMwUC9KOHVlaTZuOHBMNityRER5M1F0TWNlKzUxN3c5TnZsRDFQSXBsbUVGNXRBS1RoL05aYmIzVURZWmNLN0ZBSVg5TERnTEpEb3pxVmpnMGdMNlo1NmtBN1NIWTZQRi9ab0tQNDVmR05ZTmpCL0Zid1hoaS9TSjd1TmlqdHRBU3g3Zk9YUTFGQXZMVU5nRU5pZlk5MlFTeUpTUkJiQmpwczM2TjlPR2ZiOGZzUWF4OUNqcjNmZnZ6TGc5TlBQMTNPTys4OGQwdStvcUxDM1ZpeE5qQnYxQVdXdi85Z3UyQkRYTnN0d2lmcHlBcXpBd2RHSXlGWW1teFhub0Frd1dkMjZzNlpLUWVPQ0w2VGhkK01ZN2xWTUZyM0lQaHFJbDRyd1FQQmtWZEx3ZkN4VW5maFhIbjgyWFVoTVp3U0ZieHEvWTF2bnVyMkZwWU1hQ3diYkk4elNUcUN2UHZ1dSs2dUJsNmxXTDU4dWJ2YWNIcG5CeUswOWZJYnR0Q0QwSGNVSXFvK1lQejQ4ZTMwUXllUHNZekU4NUtGQ3hlNjd6N2hhUzlzQTNFT1B2amdEdjFoeisrNTU1NTJEaGNIMnVQUElKU2tYMklIMEg0STZrVS9ZT3p3Z3lyb3NiWkZFWVJBWEZRODlQSlhmN2EvSUhCeW50UGgvYjVoT2k1eU5nMWl5MkRHaFAzK1JTVkoreDFCa0EzU2dTQTZnN2hQZWFhK1ZnajFUNys4UVE0ZlBWWktUNXdnSmFOK0pNV2pycEZCRmRPbDZLU3JwWGowanlSNzJFVXkvTXdaOG9zblg1TjN0UUQyTDNpUHFnWC8vcW01UlpZc3ZDSDQ0VDV1MytJT2xaTEUvZzdCaXUyd2RKS09JUGlCdnMyTGppTVovSDBPMHJEa3dsZE1vSU5PWWZYaDJKNlRTRHhHZnJ5N2RkQkJCNFgxY0xDc2NFRHQ0Q0kveGJZZDU3amFzaDZHY1dSaGVoeEIrTDg4YkRzQW5QdHhGa2hEKzdEMHhIcmY2dVNzUkZnOUpBZjZoK0RIMjdCWnh1c3IxSU4yVzJlM2ZZUFErZ3JTYkY0SSs0MzVTUTZDTnNUMW5ZOFlncVNBZGpXb290U3ppWG9OTVJ2Z2Y0YWNQK1hIY21UdEpCazg4aEk1ZVBRNEtUdHZobHk1NUJmeWg3VWZ1RHRlK09JNlRNQ25kNkR3bnJ0L0p2MFAyRmY2S0RINjl0Tkd1THRUMmpnODhET05ROFA4Um1lU2RBUjU2cW1uWEI3ZlNWRUg2Mk1jM2xRbDJKR1pDQUpFZFRZK2ZzRGJqUlRZZ0RvcE5zM2FBYkY5Z0JtTmdEMGtwVzhId2Znb2dxRGVPSUpFd1RvVUhSM0FmNWZDVE14KzlWLytZMTdiZnd5cDA5YlBYeXB5WENEc0EvWVY2MEpmMmZGazM3RWNqckhuZ0kwQSs0dmo1TnVURHUyV1dGYkNBMjBMZnIySGh1SjNHWmhGUUpKTjJ2NzFXdC9helNLNnZYRFBNN0FFZzlUcmJJT2lXN1pzazl0dnYxTm5qUDNVY0cyTUZmZTZTRnZEcklPdzhVbUprbzRnZU0zYTEyYzdFbGRDckduZmVlY2RWNDZEeHpBT3lFdXg1OWFSOEw0UC91MFg2N1FoQlBiWXdXVThaemFrNDNQOUFIVGJKWUoxVmgrMEtZb2cwTmtaZ2dBMkh4MGVncVVyU0FKNytUb05ZY3N3djRWL0RtQzVlZWloaDdhejFZYStNSjU5aDNNYzQvZEJmTUdVL2NRd3lwWjBDQWxpNFlyckg0UnZ2NzFKMThyUHV0a0E3MGlCSWcyNjVNTHVCSk1raGd6UFN1Qk95TitDbi92cDFEUDV5b21TazZOWFVKQUJEYUgwZ2JNR0QvMzRObTRtUWFPdEE5bGpDQjRVY3VBQTY5eHdXTDZUZzNMb1JMelc4SzF2ZmNzNUNuN3BaaDBQK1NHZDZVUUxsTE5PQk9BbnBWaFcwbTVyUHdmWlhoR1JEdWZtMTFDb3k0b0Z6bTM3bVFlM2xxblR5czkvL25PWEx3a3kxY1gzcS9DQmFZQjlUNGZNQk9yaGtndmxWNnhZRVg2NzE1TERIM2VjMnpoOHNoUzM3VmszWjR6dW9JMGdzTlBaQ3VYYUFmb1hUVjMzdjV2bDFOUFBsU2RXUHhPUXBHbXJMcHUwTVpvQlAzOXRiQUpURzZWKzYyYjV3NU5QeUlYbm5TTjdmMm92K2V6ZW41YjlEL2lpNUJUbVNuWmh2dlF2TEpic2doTEp5eStSL0x4aUtjb3RsS0s4Zk1uUHpYTU9HeWQ0YzlVZSsrZTRrOEYzblFCME9EdWRIWVdIYnZobmxyaXZqZ0hnSU5wamdtVUJlNXdVckovQ1FVSTl1RjJKelRqdXh1Qi81SDN0YTE5ekQ3YnczNS93OVhIODd3NzhGMWJheFBwOW5Zd25vdG9Bd1Y0QkQ4YndxMEg4WjFjNEQ0Nng3dStxODBBdkNRTEJMZUE3N3JqRGZRVEJBbWxKNFYrZ0NIeW1GS3VEazA4KzJiMmdpV1ZUU1VtSisrVW16bzg2NmlqM3poajZqR0I1RXE2N01ETUluQW5LTVFQZ1g5SUVzd0pNZjNkVHZhei9FQXNzemRGU0w4MU51c2pDVXo1RWFESDNtNDNHWnRtOGZvTjgrUDRIc25uRCs5SlF2MVcyYnRza1c3ZHZrUSszYjFQWm9lY05zbTFyZzJ4WHFkOEMyU0U3dHRXNzZUQk80TlQyMkQvSE1vWVBBbTFIeHcwUW5jbS93bkhnTFRvenlBVEtSQWxnSGRtbTJYZ09zTFhGNW9WWTJIeSsvWUROai83aHVVK3FwTEIyVUFqb1pGeVVMZW5BTWl3UHNVQWFuSjQrWUIvK2N0eVJoKzNxYXZ0OHBBaUN4a0FzUVpRSWVvNzlCdDdEd2lzaCtLaUlBKzV1NFZqM0pzamV2RVBERkZrd3E5aVpxQU9RWnFVSFlEdVg0R0FCL3RYU0RoNEh3NWExeDExQmxFNkE5U0krYW9CcEp3YzNrNTBXMWlHb3g5YlJYZmgxVzN0UW41OE9XUHZqNEpjaE9KN1V6YmlvUGdGc1c5bCtodDFCQkVFWUJ2K1VCdDJPcWhGRGd1QTM0czY1V1F6SEtyQWQ5amJxYkJLbW80eVZsc0NaM1cvTVZkaG9LMnc0eE1iNTZUZ21jQTRuc1IyRk9BSnBmc2ZGZFNEcjZDNm9BM1hUZ2EwalJ6a3c2cmEySm9HdEI2QU93RS9ET1k1dDN5VUJ5bEVYZ1hQb2dkQmVIRE0rQ2Z4ODl0emFiT3RHSHIrY2J4c1FGZGRaZUVzc1d5a0dEek9KYnN2VjRXRlBXMzM4MTExNnFGTGZvQVpyaU4rUUl3ckhUVTA4c1pKeWJHVUsvdk9UWGh0Y2xuVEkxRWlrb3lQWm1RQTdEMm1RS0dmcmpBTjJCOVlXd0I5YzJoM2x0TFpOY2JEOVkzVlRuMjJuemR0WlJKVkZIQVh3KzdRemZReDdxY2ZhVGYySVl6cUJNblpaRFo5TTBtZWRRY2YvRDhJRDU5SEIzTkhZb0FzdHhHbVVlMkNvRzNPNE4vNzFHVzcrSWdGdWp5ejFEWEQ3bEM2VkFOQVZpRTF6a3VvQUt4YnNHSWc5QnZ5OGdFMUhmaC9vVU1iYmRKU0p5dDlUc0E0QUJCZVlqdllEZE82NGRCL0lSNGZ5NndGOHArbkpkckl1em9iV2xxU0lhNmRQRWdDMkk5NHZZOCtqMHJ1S05BUUJ0Q0wzYndiMG1yOURqWFg5Q2lkWDB1ajJIU1RCcHgxYVdodDA4OTdvVWxpOHNibEo0M1N3VXZtREVCSm93Q3dEeVFUYjBIU05Sc2ZSRWZ5UTVheWpNTTdYbWJTK3pvQjZPTGdFNGlrOUFhdUxKR0RJZUlZK2FYb0tyQTlJMHE0b082TEtJYzZQOThjWnNQWDNCTEpZc2EwY2gwRWNya2FwSzFKcWVjUjRMSk1nbXVDa0xTMFFndm45K0Rnd244MXZqM2RqTno1S3hCQ2tMUzZUeE9VbjR1TGpFSlhmSGhQKytXN3N4czdBYm9Mc3htNmt3Y2VTSVA3NWJ1ekd6b0hJL3dIMzMwSzlGMGtvVUFBQUFBQkpSVTVFcmtKZ2dnPT0iLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDE2MDMsICJib2R5U2l6ZSI6IDEwNjI3LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxMjIzMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDQyLjMsICJyZWNlaXZlIjogMTc4Ni42MjV9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE1LjUyN1oiLCAidGltZSI6IDQyLjMxMiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zcGVlZC1kZXRlY3Rvci5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0OTIsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI5aFhMV2pFd0FWMVYyazcwdjhKeXJSLlo1dGtkZ0dKSnpzZ3dHY3oxNmJ3LTE2ODQ5NDI4NzYtMC1BYW5CbW5TQk5Xanc2Ukl2TXJYODhkcXpoYmYzOXQzRHlPWkNDNjIyTEE3YmVjWUMvMlZ2c2JGWE5TMUtKYUVCc0g2QzhOa2ljR3NrQ0pBQVA1Z3hQU2M9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQyIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGY1OTc2MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1Oazl4MkF3WVNIUFZYOUNpM3lmdDd2VVZNRGpMNVRtWm1wbjhOMVg3WTVpR1wiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPTloWExXakV3QVYxVjJrNzB2OEp5clIuWjV0a2RnR0pKenNnd0djejE2YnctMTY4NDk0Mjg3Ni0wLUFhbkJtblNCTldqdzZSSXZNclg4OGRxemhiZjM5dDNEeU9aQ0M2MjJMQTdiZWNZQy8yVnZzYkZYTlMxS0phRUJzSDZDOE5raWNHc2tDSkFBUDVneFBTYz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNiBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc3BlZWQtZGV0ZWN0b3IuanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtTms5eDJBd1lTSFBWWDlDaTN5ZnQ3dlVWTURqTDVUbVptcG44TjFYN1k1aUcifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDMyMTYsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMTg3NCwgInRleHQiOiAiQ09OTkVDVElPTl9UWVBFX0NPT0tJRV9OQU1FPVwiQ1RcIjtDT05ORUNUSU9OX1RZUEVfQlJPQURCQU5EPVwiMFwiO0NPTk5FQ1RJT05fVFlQRV9ESUFMVVA9XCIxXCI7Q09OTkVDVElPTl9UWVBFX1VOS05PV049XCItMlwiO0VYUElSQVRJT05fSU5URVJWQUw9NztDT05ORUNUSU9OX1NQRUVEX1RIUkVTSE9MRD01NjtDT09LSUVfUEFUSD1cIi9cIjtjb29raWVfZG9tYWluPWRlc3RpbmF0aW9uX3VybD1cIlwiO190aHJvdWdocHV0PTA7X2Nvbm5lY3Rpb25fdHlwZT1cIlwiO19zZW1hcGhvcmVSREI9X3NlbWFwaG9yZUNUPWZhbHNlO2Z1bmN0aW9uIGNhbGxiYWNrKGEsYil7X3Rocm91Z2hwdXQ9YTtfY29ubmVjdGlvbl90eXBlPWI7cnVuKCl9XG5mdW5jdGlvbiBzZXRfZG9tYWluX2Nvb2tpZShhLGIsYyxlLGYsZyl7dmFyIGQ9bmV3IERhdGU7ZC5zZXRUaW1lKGQuZ2V0VGltZSgpKTtpZihjKWM9YyoxRTMqNjAqNjAqMjQ7ZD1uZXcgRGF0ZShkLmdldFRpbWUoKStjKTtkb2N1bWVudC5jb29raWU9YStcIj1cIitlc2NhcGUoYikrKGM/XCI7ZXhwaXJlcz1cIitkLnRvR01UU3RyaW5nKCk6XCJcIikrKGU/XCI7cGF0aD1cIitlOlwiXCIpKyhmP1wiO2RvbWFpbj1cIitmOlwiXCIpKyhnP1wiO3NlY3VyZVwiOlwiXCIpfVxuZnVuY3Rpb24gcnVuKCl7c2V0X3VudGRfY29va2llKCk7aWYobG9jYXRpb24uaHJlZi5tYXRjaChcIm5ldHplcm8ubmV0XCIpIT1udWxsKWNvb2tpZV9kb21haW49XCJuZXR6ZXJvLm5ldFwiO2Vsc2UgaWYobG9jYXRpb24uaHJlZi5tYXRjaChcImp1bm8uY29tXCIpIT1udWxsKWNvb2tpZV9kb21haW49XCJqdW5vLmNvbVwiO2Vsc2UgaWYobG9jYXRpb24uaHJlZi5tYXRjaChcIm15Ymx1ZWxpZ2h0LmNvbVwiKSE9bnVsbCljb29raWVfZG9tYWluPVwibXlibHVlbGlnaHQuY29tXCI7c2V0X2RvbWFpbl9jb29raWUoQ09OTkVDVElPTl9UWVBFX0NPT0tJRV9OQU1FLF9jb25uZWN0aW9uX3R5cGUsRVhQSVJBVElPTl9JTlRFUlZBTCxDT09LSUVfUEFUSCxjb29raWVfZG9tYWluLGZhbHNlKX1mdW5jdGlvbiBzZXRfdW50ZF9jb29raWUoKXtleGVjKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCtcIi8vdHJhY2sudW50ZC5jb20vcy9vYXNyZGI/cGlkPVNEUyZwcm9maWxlPVwiK19jb25uZWN0aW9uX3R5cGUpfVxuZnVuY3Rpb24gZXhlYyhhKXtzZXRUaW1lb3V0KFwic2VuZF9odHRwX3JlcXVlc3QoJ1wiK2ErXCInKVwiLDEwKX1mdW5jdGlvbiBzZW5kX2h0dHBfcmVxdWVzdChhKXt2YXIgYj1JbWFnZT9uZXcgSW1hZ2U6dW5kZWZpbmVkO2lmKGIhPXVuZGVmaW5lZCl7Yi5zcmM9YStcIiZ0cz1cIisobmV3IERhdGUpLmdldFRpbWUoKTtiLmNvbXBsZXRlfHxwYXVzZSgxRTMpfX1mdW5jdGlvbiBwYXVzZShhKXt2YXIgYj1uZXcgRGF0ZSxjPW51bGw7ZG8gYz1uZXcgRGF0ZTt3aGlsZShjLWI8YSl9XG52YXIgQmFuZHdpZHRoQ2hlY2tlcj17c3RhcnRUaW1lOm51bGwsaW5Qcm9ncmVzczpmYWxzZSxkb3dubG9hZFRpbWVzOltdLHNpemVJbkJ5dGVzOjMxMTEsbm9PZlRpbWVzOjAsc3RhbmRhcmREb3dubG9hZFRpbWU6NjUwLHJlcGVhdDozLGNvbm5UeXBlczpbXCIwXCIsXCIxXCJdLGRpZmZlcmVuY2VNYXJnaW46MjUsZG93bmxvYWRVUkw6d2luZG93LmxvY2F0aW9uLnByb3RvY29sK1wiLy93ZWJtYWlsLm5ldHplcm8ubmV0L2ltYWdlcy9oZWFkZXJzL2hkcl9sZ19uZXdfYWNjbF9uLmdpZlwiLGltZ09iajpudWxsLGticHM6MCxjVHlwZTpudWxsLGNoZWNrQmFuZHdpZHRoOmZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib0NsaWVudENhcHNcIik7aWYodHlwZW9mIGEhPVwidW5kZWZpbmVkXCImJmEhPVwiXCIpY2FsbGJhY2soYSxhKTtlbHNle2lmKGImJnR5cGVvZiBiLmNvbm5lY3Rpb25UeXBlIT09XCJ1bmRlZmluZWRcIilpZihiLmNvbm5lY3Rpb25UeXBlPT1cIm1vZGVtXCIpe2E9XG4wO2NhbGxiYWNrKGEsYSk7cmV0dXJufWVsc2UgaWYoYi5jb25uZWN0aW9uVHlwZT09XCJsYW5cIil7YT0xO2NhbGxiYWNrKGEsYSk7cmV0dXJufXRoaXMuaW5Qcm9ncmVzcz10cnVlO2ltZ09iaj1uZXcgSW1hZ2U7aW1nT2JqLm9ubG9hZD10aGlzLmRvd25sb2FkZWQ7dGhpcy5zdGFydFRpbWU9bmV3IERhdGU7aW1nT2JqLnNyYz10aGlzLmRvd25sb2FkVVJMK1wiP3RzPVwiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfX0sZG93bmxvYWRlZDpmdW5jdGlvbigpe0JhbmR3aWR0aENoZWNrZXIubm9PZlRpbWVzKz0xO0JhbmR3aWR0aENoZWNrZXIuZG93bmxvYWRUaW1lc1tCYW5kd2lkdGhDaGVja2VyLm5vT2ZUaW1lcy0xXT1uZXcgRGF0ZS1CYW5kd2lkdGhDaGVja2VyLnN0YXJ0VGltZTtpZihCYW5kd2lkdGhDaGVja2VyLm5vT2ZUaW1lczxCYW5kd2lkdGhDaGVja2VyLnJlcGVhdClCYW5kd2lkdGhDaGVja2VyLmNoZWNrQmFuZHdpZHRoKCk7ZWxzZXtCYW5kd2lkdGhDaGVja2VyLnJldHVybkJhbmRXaWR0aCgpO1xudGhpcy5pblByb2dyZXNzPWZhbHNlO2NhbGxiYWNrKEJhbmR3aWR0aENoZWNrZXIuZ2V0Q29ubmVjdGlvblNwZWVkKCksQmFuZHdpZHRoQ2hlY2tlci5nZXRDb25uZWN0aW9uVHlwZSgpKX19LHJldHVybkJhbmRXaWR0aDpmdW5jdGlvbigpe3RoaXMuZG93bmxvYWRUaW1lcz10aGlzLmRvd25sb2FkVGltZXMuc29ydCh0aGlzLnNvcnRBc2NlbmRpbmcpO25lYXJlc3ROdW1iZXI9dGhpcy5kb3dubG9hZFRpbWVzWzFdLXRoaXMuZG93bmxvYWRUaW1lc1swXTw9dGhpcy5kb3dubG9hZFRpbWVzWzJdLXRoaXMuZG93bmxvYWRUaW1lc1sxXT9NYXRoLmZsb29yKCh0aGlzLmRvd25sb2FkVGltZXNbMV0rdGhpcy5kb3dubG9hZFRpbWVzWzBdKS8yKTpNYXRoLmZsb29yKCh0aGlzLmRvd25sb2FkVGltZXNbMV0rdGhpcy5kb3dubG9hZFRpbWVzWzJdKS8yKTtlbGFwc2VkVGltZT1uZWFyZXN0TnVtYmVyLzFFMztzaXplSW5LQml0cz10aGlzLnNpemVJbkJ5dGVzKjgvMTAyNDtrYnBzPXNpemVJbktCaXRzL1xuZWxhcHNlZFRpbWUqMC45Mzt0aGlzLmticHM9TWF0aC5yb3VuZChrYnBzLDIpO2NUeXBlPVwiXCI7dGhpcy5jVHlwZT1uZWFyZXN0TnVtYmVyPj10aGlzLnN0YW5kYXJkRG93bmxvYWRUaW1lLXRoaXMuZGlmZmVyZW5jZU1hcmdpbi8xMDAqdGhpcy5zdGFuZGFyZERvd25sb2FkVGltZT90aGlzLmNvbm5UeXBlc1swXTp0aGlzLmNvbm5UeXBlc1sxXX0sc29ydEFzY2VuZGluZzpmdW5jdGlvbihhLGIpe3JldHVybiBhLWJ9LGdldENvbm5lY3Rpb25UeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY1R5cGV9LGdldENvbm5lY3Rpb25TcGVlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmticHN9fTtcbiJ9LCAiaGVhZGVyc1NpemUiOiAxNjQ0LCAiYm9keVNpemUiOiAxMzQyLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAyOTg2fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzQuOTM3LCAicmVjZWl2ZSI6IDcuMzc1fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNS41MjdaIiwgInRpbWUiOiAyNjIwLjcwMzk5OTk5OTk5OTcsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvdHJhbnNsYXRlXzI0ZHAucG5nIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1NDUsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJRb1lLSm9IVG1sWDhtQk1nVklOdUYybGhPcl9QOXlMaTZDRVhoWEltLlRzLTE2ODQ5NDI4NzgtMC1BUU1odit1bjk2R3NRWlVyVGtvMVUvcmFTQkNhTzRzUURKKzV1aVdyd3dOL3JjMnhYaVdjRG05R3hSZjRid3lLRVA1eWZXazJTNC81Z0FCYU5qRHlBNkk9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQtUmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1NzU4ZGEzMGY5LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICI4MjUifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJpbWFnZS9wbmcifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOCBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiXCJRbVZrRmdzUHFxOVBHQ2pSaXNYWmkxY3hkd0xteEc4bXhzVnNIZXYxMjJBaGVpXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09UW9ZS0pvSFRtbFg4bUJNZ1ZJTnVGMmxoT3JfUDl5TGk2Q0VYaFhJbS5Ucy0xNjg0OTQyODc4LTAtQVFNaHYrdW45NkdzUVpVclRrbzFVL3JhU0JDYU80c1FESis1dWlXcnd3Ti9yYzJ4WGlXY0RtOUd4UmY0Ynd5S0VQNXlmV2syUzQvNWdBQmFOakR5QTZJPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE4IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy90cmFuc2xhdGVfMjRkcC5wbmcifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtVmtGZ3NQcXE5UEdDalJpc1haaTFjeGR3TG14RzhteHNWc0hldjEyMkFoZWkifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA4MjUsICJtaW1lVHlwZSI6ICJpbWFnZS9wbmciLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQURBRWxFUVZSNEFiMlRBNWRqV1JSR2F4bGovNTFoMjdadDIzeGx0RzNidHJ0ajJ6YkhNOS9jODdMdXZLQ051bXZ0WXJMM3pUbEpWYXVjSWV1ei9iczNwdi9zMVpSSFQwWVBUbU1lM1JuZEd2TG95cGl3UHZ6eFd3VkkzcnM1ajFjRk9xMzJkSHVyQUltNW5KRGtwWUhPcTJPMzNpckF4Uys4UGFlZXNmVFc1MjhjK0YvNmd0dHpPVkZ6MUFlYnpRdS9QNEJRS0lSZ01DZ1NDQVJFL0g0LzhZZkY3dXBaR21pVUtKZnpRQmZHc1BVSlBKUHA0UFg2bVRqRTVlVUIrSHkrMzZWQW1YanQ2U3owcmhSaThTU003UHZxazFsUlRuU3V5K1BVVlIxME9qT1QrRjhZSUtSM1ViSDhWQmFKWkJLSDcyZXc5R2dXaCsrbE1mOVFqc3RGMWh4d1FTYlR3R3kya3ZUVkFSb0ZSKzlNNGZqRGRNbmNpK1dkR0VOYTRuajhSQVd0MXNEMllTUFo4MFlrQlVqR29iR3NPWlVWeFR0dlpKQk1Ka1VNcmhUSkM5VFNtTFJRcWZVd0dJd1l1YVNXN2NUTHFReVFqRU9pazQ4eTRxMEhiOGhoMHE0Y0h1aFR1S2RMY1RrNk1ub3V2b0VoY3dRTVc3QVdJeFlKR0xXMEZtTldOR0RNeXNiS0FNazR0RkRhd1pFSGFTdy9uc1VodGd2NmZSbjdtY3VKUWMxeGJObC9HdmNleWRndXpCQzI3c1BKU3pkSXpKRUNmTDRjaXRBdTRva2tqTzRVaE5PbDhnNDFPYlJuQ051dVlFSDlkcHk3ZmhzenE5ZXprQVZPcC9QRmdVN2wxRXFVeTRsVis1eVlWN01WSXhiVzRNYjl4N1J3RVpmTFJidVFBcVhTRjRvbE9WR2RRLytHS0VZdmJNRE10UnV3OGNBeFdLMVdNZUJ3T09pVlNJRVhTRXZFNVhLaUhhTmh6eTA4ZmFiQ3dxYXRMSEtDQndncDBMWTIvVWZITnhRVGJZVWNWckl4eWVRYXFEVjZMRzdlanF0M0hzQnV0NWNHdWduQlByK3Nqdi9lWHNpQTA2NmN0V21SdGdYUVprMkJnYzBSS0pSYUdJMG1tTXpta2pGVnZlbVpNdi9NZHovMlBJY2ZlaFQ0dnZzNXJLaTlKZDdlWkRMRFlyRVFieCtnTTN6S2xlaFB2UzZCV0ZGM0czSTJIcTJPQWliNlBQQUFqZW50QW91RU80dC83czNrdFlYbEtwVWE2TW9DaFRIWmYzK3J3THg1MTc1YVVYTUxEeC9KSUpNcG9WWnJvZFZxb2RmclJRd0dBd1YvdjNMOWFiK3ExamovQWE1YndPK3hmbHVRQUFBQUFFbEZUa1N1UW1DQyIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMTU5OSwgImJvZHlTaXplIjogODI1LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAyNDI0fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogODA2LjM5NiwgInJlY2VpdmUiOiAxODE0LjMwOH0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTUuNTI3WiIsICJ0aW1lIjogODYyLjgyMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL3NlbmRlci5qcyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogNDA0LCAic3RhdHVzVGV4dCI6ICJOb3QgRm91bmQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJRY2taNVEzQ2NmcXpGdjd6N283UmoucjBKNEI2ZXJ4T3c4ckFnSDVuWEEwLTE2ODQ5NDI4NzYtMC1BY3ZZd24zWmlUaUQyNlVCL2M5Z1g2Z0VoVjNTWXUvODd5cjhET2Q0cnlQV1RYZ1BJR05NK1Vla0Zab05MQUVRRGpIclBVQXQ3WE5OcVRpdExMeElKbG89IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiRVhQSVJFRCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDRmOTljNTM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09UWNrWjVRM0NjZnF6RnY3ejdvN1JqLnIwSjRCNmVyeE93OHJBZ0g1blhBMC0xNjg0OTQyODc2LTAtQWN2WXduM1ppVGlEMjZVQi9jOWdYNmdFaFYzU1l1Lzg3eXI4RE9kNHJ5UFdUWGdQSUdOTStVZWtGWm9OTEFFUURqSHJQVUF0N1hOTnFUaXRMTHhJSmxvPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE2IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtQ29udGVudC1UeXBlLU9wdGlvbnMiLCAidmFsdWUiOiAibm9zbmlmZiJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIm5ldDo6RVJSX0FCT1JURUQifSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogODYyLjgyMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNi40NjJaIiwgInRpbWUiOiAyMDEuNjgyLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9zZWN1cmUtYXNzZXRzLnJ1Ymljb25wcm9qZWN0LmNvbS91dGlscy94YXBpL211bHRpLXN5bmMuaHRtbD9wPTMzYWNyb3NzJmVuZHBvaW50PXVzLWVhc3QmdXNfcHJpdmFjeT0xWU5OIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAic2VjdXJlLWFzc2V0cy5ydWJpY29ucHJvamVjdC5jb20ifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvdXRpbHMveGFwaS9tdWx0aS1zeW5jLmh0bWw/cD0zM2Fjcm9zcyZlbmRwb2ludD11cy1lYXN0JnVzX3ByaXZhY3k9MVlOTiJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJyZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLWRlc3QiLCAidmFsdWUiOiAiaWZyYW1lIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuYXZpZ2F0ZSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAicCIsICJ2YWx1ZSI6ICIzM2Fjcm9zcyJ9LCB7Im5hbWUiOiAiZW5kcG9pbnQiLCAidmFsdWUiOiAidXMtZWFzdCJ9LCB7Im5hbWUiOiAidXNfcHJpdmFjeSIsICJ2YWx1ZSI6ICIxWU5OIn1dLCAiaGVhZGVyc1NpemUiOiA3MTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDMwMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImFjY2Vzcy1jb250cm9sLWFsbG93LWNyZWRlbnRpYWxzIiwgInZhbHVlIjogInRydWUifSwgeyJuYW1lIjogImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJjb250ZW50LWxlbmd0aCIsICJ2YWx1ZSI6ICIwIn0sIHsibmFtZSI6ICJkYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTYgR01UIn0sIHsibmFtZSI6ICJsb2NhdGlvbiIsICJ2YWx1ZSI6ICJodHRwczovL2V1cy5ydWJpY29ucHJvamVjdC5jb20vdXN5bmMuaHRtbD9wPTMzYWNyb3NzJmVuZHBvaW50PXVzLWVhc3QmdXNfcHJpdmFjeT0xWU5OIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiQWthbWFpR0hvc3QifV0sICJjb250ZW50IjogeyJzaXplIjogLTEsICJtaW1lVHlwZSI6ICJ4LXVua25vd24iLCAiY29tcHJlc3Npb24iOiAwfSwgImhlYWRlcnNTaXplIjogMCwgImJvZHlTaXplIjogMCwgInJlZGlyZWN0VVJMIjogImh0dHBzOi8vZXVzLnJ1Ymljb25wcm9qZWN0LmNvbS91c3luYy5odG1sP3A9MzNhY3Jvc3MmZW5kcG9pbnQ9dXMtZWFzdCZ1c19wcml2YWN5PTFZTk4iLCAiX3RyYW5zZmVyU2l6ZSI6IDB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDEyNi45NzMsICJjb25uZWN0IjogMzUuMzE3LCAic3NsIjogMjQuNzk4LCAic2VuZCI6IDAsICJ3YWl0IjogMTEuMjQ0LCAicmVjZWl2ZSI6IDMuMzV9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICIyMy41NC4xMjguMTkiLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogIioucnViaWNvbnByb2plY3QuY29tIiwgImlzc3VlciI6ICJEaWdpQ2VydCBUTFMgSHlicmlkIEVDQyBTSEEzODQgMjAyMCBDQTEiLCAidmFsaWRGcm9tIjogMTY3ODE0NzIwMCwgInZhbGlkVG8iOiAxNzEyMTg4Nzk5fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuNDcwWiIsICJ0aW1lIjogNDQ5LjIwNiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vc3NjLWNtcy4zM2Fjcm9zcy5jb20vcHMvP3VzX3ByaXZhY3k9MVlOTiZ0cz0xNTk4NzQyNDQwNzk0LjYmcmk9NzAmcnU9aHR0cHMlM0ElMkYlMkZ1cy11Lm9wZW54Lm5ldCUyRnclMkYxLjAlMkZjbSUzRmlkJTNEYzZhNWJhMGQtY2UwMi00MWJkLWExZWEtODQyYzY4YmQ1MTA4JTI2cGglM0Q4ZjVlZDVkNC02NDJjLTQyMjItOTY4YS1kNzA5Yzg3YWMzYzglMjZ1c19wcml2YWN5JTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNnIlM0RodHRwcyUyNTNBJTI1MkYlMjUyRmNtcy14Y2gtY2hpY2Fnby4zM2Fjcm9zcy5jb20lMjUyRm1hdGNoJTI1M0Z1c19wcml2YWN5JTI1M0QlMjQlN0JVU19QUklWQUNZJTdEJTI1MjZiaWRkZXJfaWQlMjUzRDcwJTI1MjZleHRlcm5hbF91c2VyX2lkJTI1M0QiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiOmF1dGhvcml0eSIsICJ2YWx1ZSI6ICJzc2MtY21zLjMzYWNyb3NzLmNvbSJ9LCB7Im5hbWUiOiAiOm1ldGhvZCIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIjpwYXRoIiwgInZhbHVlIjogIi9wcy8/dXNfcHJpdmFjeT0xWU5OJnRzPTE1OTg3NDI0NDA3OTQuNiZyaT03MCZydT1odHRwcyUzQSUyRiUyRnVzLXUub3BlbngubmV0JTJGdyUyRjEuMCUyRmNtJTNGaWQlM0RjNmE1YmEwZC1jZTAyLTQxYmQtYTFlYS04NDJjNjhiZDUxMDglMjZwaCUzRDhmNWVkNWQ0LTY0MmMtNDIyMi05NjhhLWQ3MDljODdhYzNjOCUyNnVzX3ByaXZhY3klM0QlMjQlN0JVU19QUklWQUNZJTdEJTI2ciUzRGh0dHBzJTI1M0ElMjUyRiUyNTJGY21zLXhjaC1jaGljYWdvLjMzYWNyb3NzLmNvbSUyNTJGbWF0Y2glMjUzRnVzX3ByaXZhY3klMjUzRCUyNCU3QlVTX1BSSVZBQ1klN0QlMjUyNmJpZGRlcl9pZCUyNTNENzAlMjUyNmV4dGVybmFsX3VzZXJfaWQlMjUzRCJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJyZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLWRlc3QiLCAidmFsdWUiOiAiaWZyYW1lIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuYXZpZ2F0ZSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAidXNfcHJpdmFjeSIsICJ2YWx1ZSI6ICIxWU5OIn0sIHsibmFtZSI6ICJ0cyIsICJ2YWx1ZSI6ICIxNTk4NzQyNDQwNzk0LjYifSwgeyJuYW1lIjogInJpIiwgInZhbHVlIjogIjcwIn0sIHsibmFtZSI6ICJydSIsICJ2YWx1ZSI6ICJodHRwczovL3VzLXUub3BlbngubmV0L3cvMS4wL2NtP2lkPWM2YTViYTBkLWNlMDItNDFiZC1hMWVhLTg0MmM2OGJkNTEwOCZwaD04ZjVlZDVkNC02NDJjLTQyMjItOTY4YS1kNzA5Yzg3YWMzYzgmdXNfcHJpdmFjeT0ke1VTX1BSSVZBQ1l9JnI9aHR0cHMlM0ElMkYlMkZjbXMteGNoLWNoaWNhZ28uMzNhY3Jvc3MuY29tJTJGbWF0Y2glM0Z1c19wcml2YWN5JTNEJHtVU19QUklWQUNZfSUyNmJpZGRlcl9pZCUzRDcwJTI2ZXh0ZXJuYWxfdXNlcl9pZCUzRCJ9XSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwNCwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogInNlcnZlciIsICJ2YWx1ZSI6ICIzM1hQMDAzIn0sIHsibmFtZSI6ICJ4LTMzeC1zdGF0dXMiLCAidmFsdWUiOiAiMjAwMDIwOCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIm5ldDo6RVJSX0FCT1JURUQifSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAzMy40NDIsICJjb25uZWN0IjogMjA2Ljk1NywgInNzbCI6IDEwNi4xMDQsICJzZW5kIjogMCwgIndhaXQiOiAxMDIuNzAzLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE2LjQ3MVoiLCAidGltZSI6IDIwOC4xNCwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8veC5iaWRzd2l0Y2gubmV0L3N5bmM/c3NwPXRoZTMzYWNyb3NzJnVzX3ByaXZhY3k9MVlOTiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICI6YXV0aG9yaXR5IiwgInZhbHVlIjogInguYmlkc3dpdGNoLm5ldCJ9LCB7Im5hbWUiOiAiOm1ldGhvZCIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIjpwYXRoIiwgInZhbHVlIjogIi9zeW5jP3NzcD10aGUzM2Fjcm9zcyZ1c19wcml2YWN5PTFZTk4ifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJhY2NlcHQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIifSwgeyJuYW1lIjogInJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJpbWFnZSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibm8tY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbeyJuYW1lIjogInNzcCIsICJ2YWx1ZSI6ICJ0aGUzM2Fjcm9zcyJ9LCB7Im5hbWUiOiAidXNfcHJpdmFjeSIsICJ2YWx1ZSI6ICIxWU5OIn1dLCAiaGVhZGVyc1NpemUiOiA1MzUsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDMwMiwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogInR1dWlkIiwgInZhbHVlIjogIjY5ZjU4YWY1LTY1OGItNGRiOC04ZjIwLWQ0OWRmZTdhN2E2ZiJ9LCB7Im5hbWUiOiAiYyIsICJ2YWx1ZSI6ICIxNjg0OTQyODc2In0sIHsibmFtZSI6ICJ0dXVpZF9sdSIsICJ2YWx1ZSI6ICIxNjg0OTQyODc2In0sIHsibmFtZSI6ICJjIiwgInZhbHVlIjogIjE2ODQ5NDI4NzYifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJjYWNoZS1jb250cm9sIiwgInZhbHVlIjogIm5vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIn0sIHsibmFtZSI6ICJjb250ZW50LWxlbmd0aCIsICJ2YWx1ZSI6ICIwIn0sIHsibmFtZSI6ICJkYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTYgR01UIn0sIHsibmFtZSI6ICJsb2NhdGlvbiIsICJ2YWx1ZSI6ICJodHRwczovL3guYmlkc3dpdGNoLm5ldC91bF9jYi9zeW5jP3NzcD10aGUzM2Fjcm9zcyZ1c19wcml2YWN5PTFZTk4ifSwgeyJuYW1lIjogInNldC1jb29raWUiLCAidmFsdWUiOiAidHV1aWQ9NjlmNThhZjUtNjU4Yi00ZGI4LThmMjAtZDQ5ZGZlN2E3YTZmOyBwYXRoPS87IGV4cGlyZXM9VGh1LCAyMy1NYXktMjAyNCAxNTo0MToxNiBHTVQ7IGRvbWFpbj0uYmlkc3dpdGNoLm5ldDsgc2FtZXNpdGU9bm9uZTsgc2VjdXJlIn0sIHsibmFtZSI6ICJzZXQtY29va2llIiwgInZhbHVlIjogImM9MTY4NDk0Mjg3NjsgcGF0aD0vOyBleHBpcmVzPVRodSwgMjMtTWF5LTIwMjQgMTU6NDE6MTYgR01UOyBkb21haW49LmJpZHN3aXRjaC5uZXQ7IHNhbWVzaXRlPW5vbmU7IHNlY3VyZSJ9LCB7Im5hbWUiOiAic2V0LWNvb2tpZSIsICJ2YWx1ZSI6ICJ0dXVpZF9sdT0xNjg0OTQyODc2OyBwYXRoPS87IGV4cGlyZXM9VGh1LCAyMy1NYXktMjAyNCAxNTo0MToxNiBHTVQ7IGRvbWFpbj0uYmlkc3dpdGNoLm5ldDsgc2FtZXNpdGU9bm9uZTsgc2VjdXJlIn0sIHsibmFtZSI6ICJzZXQtY29va2llIiwgInZhbHVlIjogImM9MTY4NDk0Mjg3NjsgcGF0aD0vOyBleHBpcmVzPVRodSwgMjMtTWF5LTIwMjQgMTU6NDE6MTYgR01UOyBkb21haW49LmJpZHN3aXRjaC5uZXQ7IHNhbWVzaXRlPW5vbmU7IHNlY3VyZSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biIsICJjb21wcmVzc2lvbiI6IDB9LCAiaGVhZGVyc1NpemUiOiAwLCAiYm9keVNpemUiOiAwLCAicmVkaXJlY3RVUkwiOiAiaHR0cHM6Ly94LmJpZHN3aXRjaC5uZXQvdWxfY2Ivc3luYz9zc3A9dGhlMzNhY3Jvc3MmdXNfcHJpdmFjeT0xWU5OIiwgIl90cmFuc2ZlclNpemUiOiAwfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAxNTYuNDc0LCAiY29ubmVjdCI6IDI0LjAwMSwgInNzbCI6IDE0LjI3NSwgInNlbmQiOiAwLCAid2FpdCI6IDExLjczOCwgInJlY2VpdmUiOiAxLjY1Mn0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIjMuNzYuOTEuMjM2IiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMiIsICJzdWJqZWN0TmFtZSI6ICIqLmJpZHN3aXRjaC5uZXQiLCAiaXNzdWVyIjogIlNlY3RpZ28gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIgQ0EiLCAidmFsaWRGcm9tIjogMTY3OTUyOTYwMCwgInZhbGlkVG8iOiAxNzExMjM4Mzk5fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuNDcxWiIsICJ0aW1lIjogMTA1Ljg5MDk5OTk5OTk5OTk5LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9zc2MtY21zLjMzYWNyb3NzLmNvbS9wcy8/dXNfcHJpdmFjeT0xWU5OJnRzPTE1OTg3NDI0NDA3OTQuMyZyaT0xJnJ1PWh0dHBzJTNBJTJGJTJGc3luYy5tYXRodGFnLmNvbSUyRnN5bmMlMkZpbWclM0Z1c19wcml2YWN5JTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNm10X2V4aWQlM0Q3MyUyNnJlZGlyJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZjbXMteGNoLWNoaWNhZ28uMzNhY3Jvc3MuY29tJTI1MkZtYXRjaCUyNTNGdXNfcHJpdmFjeSUyNTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNTI2YmlkZGVyX2lkJTI1M0QxJTI1MjZleHRlcm5hbF91c2VyX2lkJTI1M0QlMjU1Qk1NX1VVSUQlMjU1RCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICI6YXV0aG9yaXR5IiwgInZhbHVlIjogInNzYy1jbXMuMzNhY3Jvc3MuY29tIn0sIHsibmFtZSI6ICI6bWV0aG9kIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiOnBhdGgiLCAidmFsdWUiOiAiL3BzLz91c19wcml2YWN5PTFZTk4mdHM9MTU5ODc0MjQ0MDc5NC4zJnJpPTEmcnU9aHR0cHMlM0ElMkYlMkZzeW5jLm1hdGh0YWcuY29tJTJGc3luYyUyRmltZyUzRnVzX3ByaXZhY3klM0QlMjQlN0JVU19QUklWQUNZJTdEJTI2bXRfZXhpZCUzRDczJTI2cmVkaXIlM0RodHRwcyUyNTNBJTI1MkYlMjUyRmNtcy14Y2gtY2hpY2Fnby4zM2Fjcm9zcy5jb20lMjUyRm1hdGNoJTI1M0Z1c19wcml2YWN5JTI1M0QlMjQlN0JVU19QUklWQUNZJTdEJTI1MjZiaWRkZXJfaWQlMjUzRDElMjUyNmV4dGVybmFsX3VzZXJfaWQlMjUzRCUyNTVCTU1fVVVJRCUyNTVEIn0sIHsibmFtZSI6ICI6c2NoZW1lIiwgInZhbHVlIjogImh0dHBzIn0sIHsibmFtZSI6ICJhY2NlcHQiLCAidmFsdWUiOiAiaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qLCovKjtxPTAuOCJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJyZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLWRlc3QiLCAidmFsdWUiOiAiaW1hZ2UifSwgeyJuYW1lIjogInNlYy1mZXRjaC1tb2RlIiwgInZhbHVlIjogIm5vLWNvcnMifSwgeyJuYW1lIjogInNlYy1mZXRjaC1zaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogInVzZXItYWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW3sibmFtZSI6ICJ1c19wcml2YWN5IiwgInZhbHVlIjogIjFZTk4ifSwgeyJuYW1lIjogInRzIiwgInZhbHVlIjogIjE1OTg3NDI0NDA3OTQuMyJ9LCB7Im5hbWUiOiAicmkiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAicnUiLCAidmFsdWUiOiAiaHR0cHM6Ly9zeW5jLm1hdGh0YWcuY29tL3N5bmMvaW1nP3VzX3ByaXZhY3k9JHtVU19QUklWQUNZfSZtdF9leGlkPTczJnJlZGlyPWh0dHBzJTNBJTJGJTJGY21zLXhjaC1jaGljYWdvLjMzYWNyb3NzLmNvbSUyRm1hdGNoJTNGdXNfcHJpdmFjeSUzRCR7VVNfUFJJVkFDWX0lMjZiaWRkZXJfaWQlM0QxJTI2ZXh0ZXJuYWxfdXNlcl9pZCUzRCU1Qk1NX1VVSUQlNUQifV0sICJoZWFkZXJzU2l6ZSI6IDgxNCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjA0LCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogIjMzWFAwMDYifSwgeyJuYW1lIjogIngtMzN4LXN0YXR1cyIsICJ2YWx1ZSI6ICIyMDAwMjA4In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDAsICJtaW1lVHlwZSI6ICJ4LXVua25vd24iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIiLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDcyLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA3Mn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDEwNC43NjQsICJyZWNlaXZlIjogMS4xMjd9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICI2Ny4yMDIuMTA1LjIzIiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMyIsICJzdWJqZWN0TmFtZSI6ICIqLjMzYWNyb3NzLmNvbSIsICJpc3N1ZXIiOiAiU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQSIsICJ2YWxpZEZyb20iOiAxNjYyNDIyNDAwLCAidmFsaWRUbyI6IDE2OTYxMTgzOTl9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNi40NzFaIiwgInRpbWUiOiAzNDMuNzU4LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9tYXRjaC5hZHNydnIub3JnL3RyYWNrL2NtZi9nZW5lcmljP3R0ZF9waWQ9ZjB2MzVldyZ0dGRfdHBpPTEmdXNfcHJpdmFjeT0xWU5OIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAibWF0Y2guYWRzcnZyLm9yZyJ9LCB7Im5hbWUiOiAiOm1ldGhvZCIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIjpwYXRoIiwgInZhbHVlIjogIi90cmFjay9jbWYvZ2VuZXJpYz90dGRfcGlkPWYwdjM1ZXcmdHRkX3RwaT0xJnVzX3ByaXZhY3k9MVlOTiJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciJ9LCB7Im5hbWUiOiAicmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogImltYWdlIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuby1jb3JzIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtc2l0ZSIsICJ2YWx1ZSI6ICJjcm9zcy1zaXRlIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAidHRkX3BpZCIsICJ2YWx1ZSI6ICJmMHYzNWV3In0sIHsibmFtZSI6ICJ0dGRfdHBpIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogInVzX3ByaXZhY3kiLCAidmFsdWUiOiAiMVlOTiJ9XSwgImhlYWRlcnNTaXplIjogNTcyLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJjYWNoZS1jb250cm9sIiwgInZhbHVlIjogInByaXZhdGUsbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSJ9LCB7Im5hbWUiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiNzAifSwgeyJuYW1lIjogImNvbnRlbnQtdHlwZSIsICJ2YWx1ZSI6ICJpbWFnZS9naWYifSwgeyJuYW1lIjogImRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogInAzcCIsICJ2YWx1ZSI6ICJDUD1cIk5PSSBEU1AgQ09SIENVUiBBRE1vIERFVm8gUFNBbyBQU0RvIE9VUiBTQU1vIEJVUyBVTkkgTkFWXCIifSwgeyJuYW1lIjogInByYWdtYSIsICJ2YWx1ZSI6ICJuby1jYWNoZSJ9LCB7Im5hbWUiOiAieC1hc3BuZXQtdmVyc2lvbiIsICJ2YWx1ZSI6ICI0LjAuMzAzMTkifV0sICJjb250ZW50IjogeyJzaXplIjogNzAsICJtaW1lVHlwZSI6ICJpbWFnZS9naWYiLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJSMGxHT0RsaEFRQUJBSUVBQUFBQUFQLy8vd0FBQUFBQUFDSC9DMDVGVkZORFFWQkZNaTR3QXdFQkFBQWgrUVFCQUFBQUFDd0FBQUFBQVFBQkFBQUlCQUFCQkFRQU93PT0iLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDI2NSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMjY1fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAxNTYuNjA0LCAiY29ubmVjdCI6IDc3Ljk4MywgInNzbCI6IDY4LjU4MywgInNlbmQiOiAwLCAid2FpdCI6IDM3Ljg2NiwgInJlY2VpdmUiOiAyLjcyMn0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIjMuMzMuMjIwLjE1MCIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7InByb3RvY29sIjogIlRMUyAxLjIiLCAic3ViamVjdE5hbWUiOiAiKi5hZHNydnIub3JnIiwgImlzc3VlciI6ICJHbG9iYWxTaWduIEdDQyBSMyBEViBUTFMgQ0EgMjAyMCIsICJ2YWxpZEZyb20iOiAxNjgxMzE4Mjc1LCAidmFsaWRUbyI6IDE3MTU2MTkwNzR9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNi40NzFaIiwgInRpbWUiOiAxMDUuMDA4MDAwMDAwMDAwMDEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL3NzYy1jbXMuMzNhY3Jvc3MuY29tL3BzLz91c19wcml2YWN5PTFZTk4mdHM9MTU5ODc0MjQ0MDc5NC41JnJpPTImcnU9aHR0cHMlM0ElMkYlMkZzc3VtLXNlYy5jYXNhbGVtZWRpYS5jb20lMkZ1c2VybWF0Y2hyZWRpciUzRnMlM0QxOTE3NDAlMjZ1c19wcml2YWN5JTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNmNiJTNEaHR0cHMlMjUzQSUyNTJGJTI1MkZjbXMteGNoLWNoaWNhZ28uMzNhY3Jvc3MuY29tJTI1MkZtYXRjaCUyNTNGdXNfcHJpdmFjeSUyNTNEJTI0JTdCVVNfUFJJVkFDWSU3RCUyNmJpZGRlcl9pZCUyNTNEMiUyNTI2ZXh0ZXJuYWxfdXNlcl9pZCUyNTNEIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAic3NjLWNtcy4zM2Fjcm9zcy5jb20ifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvcHMvP3VzX3ByaXZhY3k9MVlOTiZ0cz0xNTk4NzQyNDQwNzk0LjUmcmk9MiZydT1odHRwcyUzQSUyRiUyRnNzdW0tc2VjLmNhc2FsZW1lZGlhLmNvbSUyRnVzZXJtYXRjaHJlZGlyJTNGcyUzRDE5MTc0MCUyNnVzX3ByaXZhY3klM0QlMjQlN0JVU19QUklWQUNZJTdEJTI2Y2IlM0RodHRwcyUyNTNBJTI1MkYlMjUyRmNtcy14Y2gtY2hpY2Fnby4zM2Fjcm9zcy5jb20lMjUyRm1hdGNoJTI1M0Z1c19wcml2YWN5JTI1M0QlMjQlN0JVU19QUklWQUNZJTdEJTI2YmlkZGVyX2lkJTI1M0QyJTI1MjZleHRlcm5hbF91c2VyX2lkJTI1M0QifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJhY2NlcHQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIifSwgeyJuYW1lIjogInJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJpbWFnZSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibm8tY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbeyJuYW1lIjogInVzX3ByaXZhY3kiLCAidmFsdWUiOiAiMVlOTiJ9LCB7Im5hbWUiOiAidHMiLCAidmFsdWUiOiAiMTU5ODc0MjQ0MDc5NC41In0sIHsibmFtZSI6ICJyaSIsICJ2YWx1ZSI6ICIyIn0sIHsibmFtZSI6ICJydSIsICJ2YWx1ZSI6ICJodHRwczovL3NzdW0tc2VjLmNhc2FsZW1lZGlhLmNvbS91c2VybWF0Y2hyZWRpcj9zPTE5MTc0MCZ1c19wcml2YWN5PSR7VVNfUFJJVkFDWX0mY2I9aHR0cHMlM0ElMkYlMkZjbXMteGNoLWNoaWNhZ28uMzNhY3Jvc3MuY29tJTJGbWF0Y2glM0Z1c19wcml2YWN5JTNEJHtVU19QUklWQUNZfSZiaWRkZXJfaWQlM0QyJTI2ZXh0ZXJuYWxfdXNlcl9pZCUzRCJ9XSwgImhlYWRlcnNTaXplIjogODAyLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDQsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJkYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTUgR01UIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiMzNYUDAwNyJ9LCB7Im5hbWUiOiAieC0zM3gtc3RhdHVzIiwgInZhbHVlIjogIjIwMDAyMDgifV0sICJjb250ZW50IjogeyJzaXplIjogMCwgIm1pbWVUeXBlIjogIngtdW5rbm93biIsICJjb21wcmVzc2lvbiI6IDAsICJ0ZXh0IjogIiIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMCwgImJvZHlTaXplIjogNzIsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDcyfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMTAzLjY2OCwgInJlY2VpdmUiOiAxLjM0fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiNjcuMjAyLjEwNS4yMyIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7InByb3RvY29sIjogIlRMUyAxLjMiLCAic3ViamVjdE5hbWUiOiAiKi4zM2Fjcm9zcy5jb20iLCAiaXNzdWVyIjogIlNlY3RpZ28gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIgQ0EiLCAidmFsaWRGcm9tIjogMTY2MjQyMjQwMCwgInZhbGlkVG8iOiAxNjk2MTE4Mzk5fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuNjA0WiIsICJ0aW1lIjogMTQ2Mi4zNDYsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9ncHQvcHViYWRzX2ltcGxfMjAyMDA4MjcwMS5qcyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICI6YXV0aG9yaXR5IiwgInZhbHVlIjogInNlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldCJ9LCB7Im5hbWUiOiAiOm1ldGhvZCIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIjpwYXRoIiwgInZhbHVlIjogIi9ncHQvcHViYWRzX2ltcGxfMjAyMDA4MjcwMS5qcyJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJpbnRlcnZlbnRpb24iLCAidmFsdWUiOiAiPGh0dHBzOi8vd3d3LmNocm9tZXN0YXR1cy5jb20vZmVhdHVyZS81NzE4NTQ3OTQ2Nzk5MTA0PjsgbGV2ZWw9XCJ3YXJuaW5nXCIifSwgeyJuYW1lIjogInJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJzY3JpcHQifSwgeyJuYW1lIjogInNlYy1mZXRjaC1tb2RlIiwgInZhbHVlIjogIm5vLWNvcnMifSwgeyJuYW1lIjogInNlYy1mZXRjaC1zaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogInVzZXItYWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDU5NiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiYWNjZXB0LXJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiYWdlIiwgInZhbHVlIjogIjE5MDE3NiJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9MjU5MjAwMCxoMy0yOT1cIjo0NDNcIjsgbWE9MjU5MjAwMCJ9LCB7Im5hbWUiOiAiY2FjaGUtY29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIGltbXV0YWJsZSwgbWF4LWFnZT0zMTUzNjAwMCJ9LCB7Im5hbWUiOiAiY29udGVudC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJjb250ZW50LWxlbmd0aCIsICJ2YWx1ZSI6ICI5Mzg3NiJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogInRleHQvamF2YXNjcmlwdCJ9LCB7Im5hbWUiOiAiY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3ktcmVwb3J0LW9ubHkiLCAidmFsdWUiOiAic2FtZS1vcmlnaW47IHJlcG9ydC10bz1cImFkcy1ncHQtc2NzXCIifSwgeyJuYW1lIjogImNyb3NzLW9yaWdpbi1yZXNvdXJjZS1wb2xpY3kiLCAidmFsdWUiOiAiY3Jvc3Mtb3JpZ2luIn0sIHsibmFtZSI6ICJkYXRlIiwgInZhbHVlIjogIk1vbiwgMjIgTWF5IDIwMjMgMTA6NTE6NDEgR01UIn0sIHsibmFtZSI6ICJleHBpcmVzIiwgInZhbHVlIjogIlR1ZSwgMjEgTWF5IDIwMjQgMTA6NTE6NDEgR01UIn0sIHsibmFtZSI6ICJsYXN0LW1vZGlmaWVkIiwgInZhbHVlIjogIlRodSwgMjcgQXVnIDIwMjAgMDg6Mzk6NDQgR01UIn0sIHsibmFtZSI6ICJyZXBvcnQtdG8iLCAidmFsdWUiOiAie1wiZ3JvdXBcIjpcImFkcy1ncHQtc2NzXCIsXCJtYXhfYWdlXCI6MjU5MjAwMCxcImVuZHBvaW50c1wiOlt7XCJ1cmxcIjpcImh0dHBzOi8vY3NwLndpdGhnb29nbGUuY29tL2NzcC9yZXBvcnQtdG8vYWRzLWdwdC1zY3NcIn1dfSJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogInNmZmUifSwgeyJuYW1lIjogInRpbWluZy1hbGxvdy1vcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAidmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIngtY29udGVudC10eXBlLW9wdGlvbnMiLCAidmFsdWUiOiAibm9zbmlmZiJ9LCB7Im5hbWUiOiAieC14c3MtcHJvdGVjdGlvbiIsICJ2YWx1ZSI6ICIwIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDI2NzkzNSwgIm1pbWVUeXBlIjogInRleHQvamF2YXNjcmlwdCIsICJjb21wcmVzc2lvbiI6IDE3MzUzOCwgInRleHQiOiAiKGZ1bmN0aW9uKF8pey8qXG5cbiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLlxuIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4qL1xudmFyIGNhLGVhLGlhLGthLG1hLG5hLHRhLHphLEJhLElhLExhLE1hLE5hLE9hLFFhLFNhLFdhLFhhLFlhLFphLGNiLGZiLGliLGpiLGdiLG5iLHBiLHJiLHpiLEdiLEhiLEtiLFJiLFRiLFViLFZiLFpiLHosJGIsYWMsYmMsY2MsZGMsdCxlYyxmYyxnYyxDYixoYyxpYyxtYyxuYyxvYyxDYyxGYyxHYyxFYyxEYyxJYyxKYyxLYyxMYyxCYixOYyxPYyxQYyxRYyxUYyxLO2NhPWZ1bmN0aW9uKGEpe3ZhciBiPTA+YTthPU1hdGguYWJzKGEpO3ZhciBjPWE+Pj4wO2E9TWF0aC5mbG9vcigoYS1jKS80Mjk0OTY3Mjk2KTthPj4+PTA7YiYmKGE9fmE+Pj4wLGM9KH5jPj4+MCkrMSw0Mjk0OTY3Mjk1PGMmJihjPTAsYSsrLDQyOTQ5NjcyOTU8YSYmKGE9MCkpKTthYT1jO2JhPWF9O2VhPWZ1bmN0aW9uKGEpe3JldHVybiBhP2EucGFzc2l2ZSYmZGEoKT9hOmEuY2FwdHVyZXx8ITE6ITF9O2lhPWZ1bmN0aW9uKCl7cmV0dXJuIGZhKF8uci50b3AsXCJHb29nbGVTZXROUEFcIil8fGZhKGhhKCksXCJHb29nbGVTZXROUEFcIil9O2thPWZ1bmN0aW9uKGEpe2lmKGEhPT1qYSl0aHJvdyBFcnJvcihcIkJhZCBzZWNyZXRcIik7fTttYT1mdW5jdGlvbigpe2lmKHZvaWQgMD09PWxhKXRyeXtsYT1udWxsfWNhdGNoKGEpe2xhPW51bGwsY29uc29sZS5sb2coYSl9cmV0dXJuIGxhfTtuYT1mdW5jdGlvbihhLGIpe2lmKCEoYSBpbnN0YW5jZW9mIGIpKXRocm93IEVycm9yKFwid3JvbmcgdHlwZVwiKTt9O3RhPWZ1bmN0aW9uKGEsYil7dmFyIGM9b2EoYSxiKXx8cGEoYSxiKTsxPT09Xy5yYSgzOTUpJiZjJiYhc2EoYykmJihhPXBhKGEsYikucGFyZW50RWxlbWVudCkmJmEhPT1iLmJvZHkmJihjPWEpO3JldHVybiBjfTt6YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5zbG90LGU9Yi5jYSxmPXRhKGQsYSk7aWYoIWYpcmV0dXJuIG51bGw7Yj11YShmKTtpZighYilyZXR1cm4gYjt2YXIgZz1mPT09cGEoZCxhKSxoPWd8fDE9PT1fLnJhKDM5NSksaz12YShmdW5jdGlvbigpe3ZhciBtPWc/cGEoZCxhKTpmO3JldHVybiBtJiZ3YShtLHdpbmRvdyl8fHt9fSk7ZT14YShlKVswXTt2YXIgbD0hMTtBcnJheS5pc0FycmF5KGUpJiYobD1jP2g6MD09Yi54JiZcImNlbnRlclwiPT1rKClbXCJ0ZXh0LWFsaWduXCJdKTtsJiYoYi54Kz1NYXRoLnJvdW5kKE1hdGgubWF4KDAsKGc/Zi5jbGllbnRXaWR0aDpmLnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGgpLWVbMF0pLzIpKTtoJiYoYi55Kz1NYXRoLnJvdW5kKE1hdGgubWluKHBhcnNlSW50KGsoKVtcInBhZGRpbmctdG9wXCJdLDEwKXx8MCxmLmNsaWVudEhlaWdodCkpLGx8fChjPWYuY2xpZW50V2lkdGgsYi54Kz1NYXRoLnJvdW5kKE1hdGgubWluKHBhcnNlSW50KGsoKVtcInBhZGRpbmctbGVmdFwiXSwxMCl8fDAsYykpKSk7cmV0dXJuIGImJnNhKGYpP2I6bmV3IF8ueWEoLTEyMjQ1OTMzLC0xMjI0NTkzMyl9O0JhPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdyxjPSEwO2M9dm9pZCAwPT09Yz8hMTpjO25ldyB0LlByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKCl7Zy5vbmxvYWQ9bnVsbDtnLm9uZXJyb3I9bnVsbDtiLmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZyl9dmFyIGc9Yi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2cub25sb2FkPWZ1bmN0aW9uKCl7ZigpO2QoKX07Zy5vbmVycm9yPWZ1bmN0aW9uKCl7ZigpO2Uodm9pZCAwKX07Zy50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI7QWEoZyxhKTtjJiZcImNvbXBsZXRlXCIhPT1iLmRvY3VtZW50LnJlYWR5U3RhdGU/Xy52KGIsXCJsb2FkXCIsZnVuY3Rpb24oKXtiLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZyl9KTpiLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZyl9KX07SWE9ZnVuY3Rpb24oYSl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYygpe3ZhciBkLGUsZixnO3JldHVybiBEYShjLGZ1bmN0aW9uKGgpe3N3aXRjaChoLmope2Nhc2UgMTpyZXR1cm4gZD1cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vZ2V0Y29uZmlnL3NvZGFyP3N2PTIwMCZ0aWQ9XCIrYS5qKyhcIiZ0dj1cIithLmwrXCImc3Q9XCIpK2EuZWIsZT12b2lkIDAsaC5BPTIsRWEoaCxGYShkKSw0KTtjYXNlIDQ6ZT1oLm87R2EoaCwzKTticmVhaztjYXNlIDI6SGEoaCk7Y2FzZSAzOmlmKCFlKXJldHVybiBoLnJldHVybih2b2lkIDApO2Y9YS5vYnx8ZS5zb2Rhcl9xdWVyeV9pZDtnPXZvaWQgMD09PWUucmNfZW5hYmxlP1wiblwiOmUucmNfZW5hYmxlO3JldHVybiBmJiZlLmJnX2hhc2hfYmFzZW5hbWUmJmUuYmdfYmluYXJ5P2gucmV0dXJuKHtjb250ZXh0OmEudixPYzplLmJnX2hhc2hfYmFzZW5hbWUsTmM6ZS5iZ19iaW5hcnksZ2Q6YS5qK1wiX1wiK2EubCxvYjpmLGViOmEuZWIsQWI6Z30pOmgucmV0dXJuKHZvaWQgMCl9fSl9KX07TGE9ZnVuY3Rpb24oYSl7Q2EodGhpcyxmdW5jdGlvbiBjKCl7dmFyIGQ7cmV0dXJuIERhKGMsZnVuY3Rpb24oZSl7aWYoMT09ZS5qKXJldHVybiBFYShlLElhKGEpLDIpO2lmKGQ9ZS5vKXt2YXIgZj1cInNvZGFyMlwiO2Y9dm9pZCAwPT09Zj9cInNvZGFyMlwiOmY7dmFyIGc9d2luZG93LGg9Zy5Hb29nbGVHY0xLaE9tcztoJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgaC5wdXNofHwoaD1nLkdvb2dsZUdjTEtoT21zPVtdKTt2YXIgaz17fTtoLnB1c2goKGsuX2N0eF89ZC5jb250ZXh0LGsuX2Jndl89ZC5PYyxrLl9iZ3BfPWQuTmMsay5fbGlfPWQuZ2Qsay5famtfPWQub2Isay5fc3RfPWQuZWIsay5fcmNfPWQuQWIsaykpO2lmKGg9Zy5Hb29nbGVEWDVZS1VTaylnLkdvb2dsZURYNVlLVVNrPXZvaWQgMCxoWzFdKCk7Zj1KYShLYSx7YmFzZW5hbWU6Zn0pO0JhKGYpfXJldHVybiBlLnJldHVybihkKX0pfSl9O01hPWZ1bmN0aW9uKGEpe3JldHVybihhPWEucXVlcnlTZWxlY3RvcihcInNjcmlwdFtub25jZV1cIikpP2Eubm9uY2V8fGEuZ2V0QXR0cmlidXRlKFwibm9uY2VcIil8fFwiXCI6XCJcIn07TmE9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7aWYoeChhLDUpKXRyeXtyZXR1cm4gYi5sb2NhbFN0b3JhZ2V9Y2F0Y2goYyl7fXJldHVybiBudWxsfTtPYT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9kb2N1bWVudDpiO3JldHVybiB4KGEsNSk/Yi5jb29raWU6bnVsbH07UWE9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz9kb2N1bWVudDpjO2I9T2EoYixjKTtyZXR1cm4gbnVsbD09PWI/bnVsbDoobmV3IFBhKHtjb29raWU6Yn0pKS5nZXQoYSl8fFwiXCJ9O1NhPWZ1bmN0aW9uKGEpe2E9Xy5SYShhLnNwbGl0KC9cXHMrLyksZnVuY3Rpb24oYil7cmV0dXJuKGI9L14oLT9cXGQrKShweHwlKSQvLmV4ZWMoYikpP3t2YWx1ZTpwYXJzZUZsb2F0KGJbMV0pLHR5cGU6YlsyXX06e3ZhbHVlOjAsdHlwZTpcInB4XCJ9fSk7YVsxXT1hWzFdfHxhWzBdO2FbMl09YVsyXXx8YVswXTthWzNdPWFbM118fGFbMV07cmV0dXJuIGF9O1dhPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVyblswXTthPVwibnVtYmVyXCI9PT10eXBlb2YgYT9bYV06YTthPV8uVGEoYSxmdW5jdGlvbihiKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGImJjA8PWImJjE+PWI/ITA6ITF9KTtVYShhKTtWYShhLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGItY30pO3JldHVybiBhfTtYYT1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChjKXt9cmV0dXJuIGI/e3RvcDpiLnRvcCxyaWdodDpiLnJpZ2h0LGJvdHRvbTpiLmJvdHRvbSxsZWZ0OmIubGVmdCx3aWR0aDpiLndpZHRofHxiLnJpZ2h0LWIubGVmdCxoZWlnaHQ6Yi5oZWlnaHR8fGIuYm90dG9tLWIudG9wfTp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsd2lkdGg6MCxoZWlnaHQ6MH19O1lhPWZ1bmN0aW9uKGEpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYXx8XCJzdHJpbmdcIj09PXR5cGVvZiBhfTtaYT1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOmNhc2UgMjpyZXR1cm4hMTtjYXNlIDA6Y2FzZSAxOnJldHVybiEwO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIGVuY3J5cHRpb24gbW9kZTogXCIrYSk7fX07Y2I9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3csYj0kYSgpO3ZhciBjPXZvaWQgMD09PWM/YWI6YztpZihfLnkoMjE1KSYmIWEuZ29vZ19zZHJfbCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJnb29nX3Nkcl9sXCIse3ZhbHVlOiEwfSk7dmFyIGQ9ZnVuY3Rpb24oKXt2YXIgZT1fLnJhKDM3KSxmPWZ1bmN0aW9uKCl7YyhhLFwiZ3B0XCIsYixTdHJpbmcoYmIoYSkpKX07ZT9hLnNldFRpbWVvdXQoZixlKTpmKCl9O1wiY29tcGxldGVcIj09PWEuZG9jdW1lbnQucmVhZHlTdGF0ZT9kKCk6Xy52KGEsXCJsb2FkXCIsZCl9fTtmYj1mdW5jdGlvbihhKXt2YXIgYj1kYihhKTtyZXR1cm4oej1bXCJnb29nbGVfZGVidWdcIixcImRmcGRlYlwiLFwiZ29vZ2xlX2NvbnNvbGVcIixcImdvb2dsZV9mb3JjZV9jb25zb2xlXCIsXCJnb29nZmNcIl0sXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24oYyl7dmFyIGQ9Yi5zZWFyY2goZWIpO2I6e3ZhciBlPTA7Zm9yKHZhciBmPWMubGVuZ3RoOzA8PShlPWIuaW5kZXhPZihjLGUpKSYmZTxkOyl7dmFyIGc9Yi5jaGFyQ29kZUF0KGUtMSk7aWYoMzg9PWd8fDYzPT1nKWlmKGc9Yi5jaGFyQ29kZUF0KGUrZiksIWd8fDYxPT1nfHwzOD09Z3x8MzU9PWcpYnJlYWsgYjtlKz1mKzF9ZT0tMX1pZigwPmUpYz1udWxsO2Vsc2V7Zj1iLmluZGV4T2YoXCImXCIsZSk7aWYoMD5mfHxmPmQpZj1kO2UrPWMubGVuZ3RoKzE7Yz1kZWNvZGVVUklDb21wb25lbnQoYi5zdWJzdHIoZSxmLWUpLnJlcGxhY2UoL1xcKy9nLFwiIFwiKSl9cmV0dXJuIG51bGwhPT1jfSl8fG51bGx9O2liPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD12b2lkIDA9PT1kP3t9OmQ7Z2IoYSxiLGMsZCk7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDk6YT1oYigpLChjPWEuZ2V0KGIpLklhKT8oYj0oQihjLDQpfHwwKSsxLEQoYyw0LGIpLGEuc2V0KGMpKTpnYigxMSxiLG51bGwse30pfX07amI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXZvaWQgMD09PWQ/e306ZDtnYihhLGIsYyxkKX07Z2I9ZnVuY3Rpb24oYSxiLGMsZCl7a2IoXCJncHRfM3BsaWJcIixmdW5jdGlvbihlKXtsYihlKTtFKGUsXCJjXCIsYSk7YyYmRShlLFwiZW1cIixjKTtFKGUsXCJsaWRcIixiKTtfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxkKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe0UoZSxmLGRbZl0pfSl9KX07bmI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIG1iKDY1OSxjLGZ1bmN0aW9uKGUsZil7amIoMSxhLGYubWVzc2FnZSk7cmV0dXJuIHQuUHJvbWlzZS5yZXNvbHZlKG51bGwpfSkudGhlbihmdW5jdGlvbihlKXtkJiZkKCk7Yi4kYihlKTtlPWhiKCkuc2V0KGIpO2UuZXJyb3JNZXNzYWdlJiZqYihlLmluZm8sYSxlLmVycm9yTWVzc2FnZSk7cmV0dXJuIGJ9KX07cGI9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9mdW5jdGlvbigpe306YjtyZXR1cm4gbmV3IHQuUHJvbWlzZShmdW5jdGlvbihjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YyhiKCkpfSxhKX0pfTtyYj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9mdW5jdGlvbigpe306YjtyZXR1cm4gbmV3IHQuUHJvbWlzZShmdW5jdGlvbihjKXt2YXIgZD1mdW5jdGlvbigpe2MoYigpKTtfLnFiKGEsXCJsb2FkXCIsZCl9O18udihhLFwibG9hZFwiLGQpfSl9O3piPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IHNiLGI9bmV3IHRiKGEuRiksYz1uZXcgdWIoYi5GKSxkPW5ldyB2YihjLm0pLGU9bmV3IHdiO3hiKGUsW2EsYixjLGRdKTt5YihlKX07R2I9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/QWI6Yjt2YXIgYz1CYihhKSxkPWZ1bmN0aW9uKGYpe2Y9Xy5GKGYpO2YubmV4dCgpO2Y9Q2IoZik7cmV0dXJuIGIoYyxmKX0sZT1mdW5jdGlvbihmKXt2YXIgZz1fLkYoZik7Zj1nLm5leHQoKS52YWx1ZTtnPUNiKGcpO3JldHVybiBhLmFwcGx5KGYsZyl9O3JldHVybiBmdW5jdGlvbihmKXtmb3IodmFyIGc9W10saD0wO2g8YXJndW1lbnRzLmxlbmd0aDsrK2gpZ1toXT1hcmd1bWVudHNbaF07aD10aGlzfHxfLnI7dmFyIGs9RGIuZ2V0KGgpO2t8fChrPXt9LERiLnNldChoLGspKTtyZXR1cm4gRWIoayxbdGhpc10uY29uY2F0KF8uRmIoZykpLGUsZCl9fTtIYj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0wO2U9dm9pZCAwPT09ZT9cIlwiOmU7Yz12b2lkIDA9PT1jP2Z1bmN0aW9uKGwpe3JldHVybiEhbH06YztkPXZvaWQgMD09PWQ/XCIsXCI6ZDt2YXIgZj1bXSxnPSExO2E9Xy5GKGEpO2Zvcih2YXIgaD1hLm5leHQoKTshaC5kb25lO2g9YS5uZXh0KCkpe2g9YihoLnZhbHVlKTt2YXIgaz1jKGgpO2c9Z3x8aztmLnB1c2goU3RyaW5nKGs/aDplKSl9cmV0dXJuIGc/Zi5qb2luKGQpOm51bGx9O0tiPWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8ZnVuY3Rpb24oKXtyZXR1cm4hMH07YT1JYihhKTt2YXIgZD1bXTtfLkpiKGEsZnVuY3Rpb24oZSxmKXtlPWUuZmlsdGVyKGZ1bmN0aW9uKGgpe3JldHVybiBjKGgsZil9KTtpZihlLmxlbmd0aCl7ZT1lLm1hcChlbmNvZGVVUklDb21wb25lbnQpO3ZhciBnPWVuY29kZVVSSUNvbXBvbmVudChmKTtkLnB1c2goZytcIj1cIitlLmpvaW4oKSl9fSk7cmV0dXJuIGR9O1JiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPXBhKGEsYyk7aWYoZSlpZihfLnkoMzk5KSl7dmFyIGY9YS5nZXRTbG90SWQoKTtpZighTGIuaGFzKGYpKXtMYi5hZGQoZik7dmFyIGc9bmV3IChudWxsIT09KGQ9Yi5JbnRlcnNlY3Rpb25PYnNlcnZlcikmJnZvaWQgMCE9PWQ/ZDpNYikoRyg3NTUsZnVuY3Rpb24obSl7KG09Xy5GKG0pLm5leHQoKS52YWx1ZSkmJjA9PT1tLmludGVyc2VjdGlvblJhdGlvJiYoKG09cGEoYSxjKSkmJk5iKG0sITEpLGgoKSl9KSx7dGhyZXNob2xkOjB9KTtnLm9ic2VydmUoZSk7dmFyIGg9ZnVuY3Rpb24oKXtnLmRpc2Nvbm5lY3QoKTtMYi5kZWxldGUoZik7aygpO2woKX0saz1PYihJLkIoKSxQYixmLDc1NixmdW5jdGlvbihtKXttLmlzRW1wdHl8fGgoKX0pLGw9T2IoSS5CKCksUWIsZiw3NTYsZnVuY3Rpb24oKXtOYihwYShhLGMpLCExKTtoKCl9KX19ZWxzZSBOYihlLCExKX07VGI9ZnVuY3Rpb24oYSxiLGMsZCl7a2IoXCJncHRfc3pcIixmdW5jdGlvbihlKXtFKGUsXCJyXCIsU2IoYSkpO0UoZSxcIndcIixjLndpZHRoKTtFKGUsXCJoXCIsYy5oZWlnaHQpO2ImJkUoZSxcImZcIixiKTtudWxsIT1kJiZFKGUsXCJhXCIsTnVtYmVyKGQpKX0se3ZhOl8ucmEoMjgpfSl9O1ViPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGIpe3JldHVybiB2b2lkIHNldFRpbWVvdXQoYixhKX0pfTtWYj1mdW5jdGlvbihhLGIpe3JldHVyblwidW5kZWZpbmVkXCI9PT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IE1iKGIse3Jvb3RNYXJnaW46YX0pOm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihiLHtyb290TWFyZ2luOmF9KX07WmI9ZnVuY3Rpb24oKXtXYihcInB1YmFkc1JlYWR5XCIsITApO2lmKF8ueSgyMDYpKXt2YXIgYT0wO09iamVjdC5kZWZpbmVQcm9wZXJ0eShYYigpLFwicHViYWRzUmVhZHlcIix7Z2V0OmZ1bmN0aW9uKCl7NT5hJiZrYihcImdwdF9wdWJhZHNfcmVhZHlcIixmdW5jdGlvbihiKXsrK2E7bGIoYik7dmFyIGM9RXJyb3IoXCJwdWJhZHNSZWFkeVwiKTtFKGIsXCJzdGFja1wiLFliKGMuc3RhY2ssYy5tZXNzYWdlKSl9LHt2YTouMX0pO3JldHVybiEwfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfX07JGI9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19O2FjPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07YmM9ZnVuY3Rpb24oYSl7YT1bXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSxcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csXCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYsXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoXCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0XCIpO307Y2M9YmModGhpcyk7ZGM9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09PXR5cGVvZiBTeW1ib2woXCJ4XCIpO3Q9e307ZWM9e307Xy5BPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZWNbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM/YzphW2JdfTtmYz1mdW5jdGlvbihhLGIsYyl7aWYoYilhOnt2YXIgZD1hLnNwbGl0KFwiLlwiKTthPTE9PT1kLmxlbmd0aDt2YXIgZT1kWzBdLGY7IWEmJmUgaW4gdD9mPXQ6Zj1jYztmb3IoZT0wO2U8ZC5sZW5ndGgtMTtlKyspe3ZhciBnPWRbZV07aWYoIShnIGluIGYpKWJyZWFrIGE7Zj1mW2ddfWQ9ZFtkLmxlbmd0aC0xXTtjPWRjJiZcImVzNlwiPT09Yz9mW2RdOm51bGw7Yj1iKGMpO251bGwhPWImJihhP2FjKHQsZCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09YyYmKGVjW2RdPWRjP2NjLlN5bWJvbChkKTpcIiRqc2NwJFwiK2QsZD1lY1tkXSxhYyhmLGQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSkpKX19O2ZjKFwiU3ltYm9sXCIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTt2YXIgYj1mdW5jdGlvbihlLGYpe3RoaXMuaj1lO2FjKHRoaXMsXCJkZXNjcmlwdGlvblwiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Zn0pfTtiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O3ZhciBjPTAsZD1mdW5jdGlvbihlKXtpZih0aGlzIGluc3RhbmNlb2YgZCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpO3JldHVybiBuZXcgYihcImpzY29tcF9zeW1ib2xfXCIrKGV8fFwiXCIpK1wiX1wiK2MrKyxlKX07cmV0dXJuIGR9LFwiZXM2XCIpO2ZjKFwiU3ltYm9sLml0ZXJhdG9yXCIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTthPSgwLHQuU3ltYm9sKShcIlN5bWJvbC5pdGVyYXRvclwiKTtmb3IodmFyIGI9XCJBcnJheSBJbnQ4QXJyYXkgVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBJbnQxNkFycmF5IFVpbnQxNkFycmF5IEludDMyQXJyYXkgVWludDMyQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheVwiLnNwbGl0KFwiIFwiKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWNjW2JbY11dO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBkLnByb3RvdHlwZVthXSYmYWMoZC5wcm90b3R5cGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGdjKCRiKHRoaXMpKX19KX1yZXR1cm4gYX0sXCJlczZcIik7Z2M9ZnVuY3Rpb24oYSl7YT17bmV4dDphfTthW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtyZXR1cm4gYX07Xy5GPWZ1bmN0aW9uKGEpe3ZhciBiPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB0LlN5bWJvbCYmXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIikmJmFbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildO3JldHVybiBiP2IuY2FsbChhKTp7bmV4dDokYihhKX19O0NiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjPVtdOyEoYj1hLm5leHQoKSkuZG9uZTspYy5wdXNoKGIudmFsdWUpO3JldHVybiBjfTtfLkZiPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQXJyYXk/YTpDYihfLkYoYSkpfTtoYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifTtpZihkYyYmXCJmdW5jdGlvblwiPT10eXBlb2YgXy5BKE9iamVjdCxcInNldFByb3RvdHlwZU9mXCIpKWljPV8uQShPYmplY3QsXCJzZXRQcm90b3R5cGVPZlwiKTtlbHNle3ZhciBqYzthOnt2YXIga2M9e2E6ITB9LGxjPXt9O3RyeXtsYy5fX3Byb3RvX189a2M7amM9bGMuYTticmVhayBhfWNhdGNoKGEpe31qYz0hMX1pYz1qYz9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYStcIiBpcyBub3QgZXh0ZW5zaWJsZVwiKTtyZXR1cm4gYX06bnVsbH1tYz1pYztfLko9ZnVuY3Rpb24oYSxiKXthLnByb3RvdHlwZT1oYyhiLnByb3RvdHlwZSk7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTtpZihtYyltYyhhLGIpO2Vsc2UgZm9yKHZhciBjIGluIGIpaWYoXCJwcm90b3R5cGVcIiE9YylpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLGMpO2QmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGMsZCl9ZWxzZSBhW2NdPWJbY119O25jPWZ1bmN0aW9uKCl7dGhpcy5tPSExO3RoaXMubD1udWxsO3RoaXMubz12b2lkIDA7dGhpcy5qPTE7dGhpcy5EPXRoaXMuQT0wO3RoaXMudj1udWxsfTtvYz1mdW5jdGlvbihhKXtpZihhLm0pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7YS5tPSEwfTtuYy5wcm90b3R5cGUuQz1mdW5jdGlvbihhKXt0aGlzLm89YX07dmFyIHBjPWZ1bmN0aW9uKGEsYil7YS52PXtuYzpiLGNkOiEwfTthLmo9YS5BfHxhLkR9O25jLnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy52PXtyZXR1cm46YX07dGhpcy5qPXRoaXMuRH07dmFyIEVhPWZ1bmN0aW9uKGEsYixjKXthLmo9YztyZXR1cm57dmFsdWU6Yn19LEdhPWZ1bmN0aW9uKGEsYil7YS5qPWI7YS5BPTB9LEhhPWZ1bmN0aW9uKGEpe2EuQT0wO3ZhciBiPWEudi5uYzthLnY9bnVsbDtyZXR1cm4gYn0scWM9ZnVuY3Rpb24oYSl7dGhpcy5qPW5ldyBuYzt0aGlzLmw9YX0sdGM9ZnVuY3Rpb24oYSxiKXtvYyhhLmopO3ZhciBjPWEuai5sO2lmKGMpcmV0dXJuIHJjKGEsXCJyZXR1cm5cImluIGM/Y1tcInJldHVyblwiXTpmdW5jdGlvbihkKXtyZXR1cm57dmFsdWU6ZCxkb25lOiEwfX0sYixhLmoucmV0dXJuKTthLmoucmV0dXJuKGIpO3JldHVybiBzYyhhKX0scmM9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlPWIuY2FsbChhLmoubCxjKTtpZighKGUgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJdGVyYXRvciByZXN1bHQgXCIrZStcIiBpcyBub3QgYW4gb2JqZWN0XCIpO2lmKCFlLmRvbmUpcmV0dXJuIGEuai5tPSExLGU7dmFyIGY9ZS52YWx1ZX1jYXRjaChnKXtyZXR1cm4gYS5qLmw9bnVsbCxwYyhhLmosZyksc2MoYSl9YS5qLmw9bnVsbDtkLmNhbGwoYS5qLGYpO3JldHVybiBzYyhhKX0sc2M9ZnVuY3Rpb24oYSl7Zm9yKDthLmouajspdHJ5e3ZhciBiPWEubChhLmopO2lmKGIpcmV0dXJuIGEuai5tPSExLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGMpe2Euai5vPXZvaWQgMCxwYyhhLmosYyl9YS5qLm09ITE7aWYoYS5qLnYpe2I9YS5qLnY7YS5qLnY9bnVsbDtpZihiLmNkKXRocm93IGIubmM7cmV0dXJue3ZhbHVlOmIucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19LHVjPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtvYyhhLmopO2Euai5sP2I9cmMoYSxhLmoubC5uZXh0LGIsYS5qLkMpOihhLmouQyhiKSxiPXNjKGEpKTtyZXR1cm4gYn07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtvYyhhLmopO2Euai5sP2I9cmMoYSxhLmoubFtcInRocm93XCJdLGIsYS5qLkMpOihwYyhhLmosYiksYj1zYyhhKSk7cmV0dXJuIGJ9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiB0YyhhLGIpfTt0aGlzW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX0sRGE9ZnVuY3Rpb24oYSxiKXtiPW5ldyB1YyhuZXcgcWMoYikpO21jJiZhLnByb3RvdHlwZSYmbWMoYixhLnByb3RvdHlwZSk7cmV0dXJuIGJ9O2ZjKFwiUmVmbGVjdC5zZXRQcm90b3R5cGVPZlwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6bWM/ZnVuY3Rpb24oYixjKXt0cnl7cmV0dXJuIG1jKGIsYyksITB9Y2F0Y2goZCl7cmV0dXJuITF9fTpudWxsfSxcImVzNlwiKTtmYyhcIk9iamVjdC5zZXRQcm90b3R5cGVPZlwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxtY30sXCJlczZcIik7dmFyIHZjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfSx5Yz1kYyYmXCJmdW5jdGlvblwiPT10eXBlb2YgXy5BKE9iamVjdCxcImFzc2lnblwiKT9fLkEoT2JqZWN0LFwiYXNzaWduXCIpOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKGQpZm9yKHZhciBlIGluIGQpdmMoZCxlKSYmKGFbZV09ZFtlXSl9cmV0dXJuIGF9O2ZjKFwiT2JqZWN0LmFzc2lnblwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHx5Y30sXCJlczZcIik7ZmMoXCJQcm9taXNlXCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3RoaXMuaj1udWxsfWZ1bmN0aW9uIGMoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBlP2c6bmV3IGUoZnVuY3Rpb24oaCl7aChnKX0pfWlmKGEpcmV0dXJuIGE7Yi5wcm90b3R5cGUubD1mdW5jdGlvbihnKXtpZihudWxsPT10aGlzLmope3RoaXMuaj1bXTt2YXIgaD10aGlzO3RoaXMudihmdW5jdGlvbigpe2gubSgpfSl9dGhpcy5qLnB1c2goZyl9O3ZhciBkPWNjLnNldFRpbWVvdXQ7Yi5wcm90b3R5cGUudj1mdW5jdGlvbihnKXtkKGcsMCl9O2IucHJvdG90eXBlLm09ZnVuY3Rpb24oKXtmb3IoO3RoaXMuaiYmdGhpcy5qLmxlbmd0aDspe3ZhciBnPXRoaXMuajt0aGlzLmo9W107Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDsrK2gpe3ZhciBrPWdbaF07Z1toXT1udWxsO3RyeXtrKCl9Y2F0Y2gobCl7dGhpcy5vKGwpfX19dGhpcy5qPW51bGx9O2IucHJvdG90eXBlLm89ZnVuY3Rpb24oZyl7dGhpcy52KGZ1bmN0aW9uKCl7dGhyb3cgZzt9KX07dmFyIGU9ZnVuY3Rpb24oZyl7dGhpcy5sPTA7dGhpcy5tPXZvaWQgMDt0aGlzLmo9W107dmFyIGg9dGhpcy52KCk7dHJ5e2coaC5yZXNvbHZlLGgucmVqZWN0KX1jYXRjaChrKXtoLnJlamVjdChrKX19O2UucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGwpe3JldHVybiBmdW5jdGlvbihtKXtrfHwoaz0hMCxsLmNhbGwoaCxtKSl9fXZhciBoPXRoaXMsaz0hMTtyZXR1cm57cmVzb2x2ZTpnKHRoaXMuRykscmVqZWN0OmcodGhpcy5vKX19O2UucHJvdG90eXBlLkc9ZnVuY3Rpb24oZyl7aWYoZz09PXRoaXMpdGhpcy5vKG5ldyBUeXBlRXJyb3IoXCJBIFByb21pc2UgY2Fubm90IHJlc29sdmUgdG8gaXRzZWxmXCIpKTtlbHNlIGlmKGcgaW5zdGFuY2VvZiBlKXRoaXMuSChnKTtlbHNle2E6c3dpdGNoKHR5cGVvZiBnKXtjYXNlIFwib2JqZWN0XCI6dmFyIGg9bnVsbCE9ZzticmVhayBhO2Nhc2UgXCJmdW5jdGlvblwiOmg9ITA7YnJlYWsgYTtkZWZhdWx0Omg9ITF9aD90aGlzLlUoZyk6dGhpcy5BKGcpfX07ZS5wcm90b3R5cGUuVT1mdW5jdGlvbihnKXt2YXIgaD12b2lkIDA7dHJ5e2g9Zy50aGVufWNhdGNoKGspe3RoaXMubyhrKTtyZXR1cm59XCJmdW5jdGlvblwiPT10eXBlb2YgaD90aGlzLkkoaCxnKTp0aGlzLkEoZyl9O2UucHJvdG90eXBlLm89ZnVuY3Rpb24oZyl7dGhpcy5DKDIsZyl9O2UucHJvdG90eXBlLkE9ZnVuY3Rpb24oZyl7dGhpcy5DKDEsZyl9O2UucHJvdG90eXBlLkM9ZnVuY3Rpb24oZyxoKXtpZigwIT10aGlzLmwpdGhyb3cgRXJyb3IoXCJDYW5ub3Qgc2V0dGxlKFwiK2crXCIsIFwiK2grXCIpOiBQcm9taXNlIGFscmVhZHkgc2V0dGxlZCBpbiBzdGF0ZVwiK3RoaXMubCk7dGhpcy5sPWc7dGhpcy5tPWg7dGhpcy5EKCl9O2UucHJvdG90eXBlLkQ9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLmope2Zvcih2YXIgZz0wO2c8dGhpcy5qLmxlbmd0aDsrK2cpZi5sKHRoaXMualtnXSk7dGhpcy5qPW51bGx9fTt2YXIgZj1uZXcgYjtlLnByb3RvdHlwZS5IPWZ1bmN0aW9uKGcpe3ZhciBoPXRoaXMudigpO2cudmIoaC5yZXNvbHZlLGgucmVqZWN0KX07ZS5wcm90b3R5cGUuST1mdW5jdGlvbihnLGgpe3ZhciBrPXRoaXMudigpO3RyeXtnLmNhbGwoaCxrLnJlc29sdmUsay5yZWplY3QpfWNhdGNoKGwpe2sucmVqZWN0KGwpfX07ZS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihnLGgpe2Z1bmN0aW9uIGsocSx3KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBxP2Z1bmN0aW9uKHUpe3RyeXtsKHEodSkpfWNhdGNoKEMpe20oQyl9fTp3fXZhciBsLG0sbj1uZXcgZShmdW5jdGlvbihxLHcpe2w9cTttPXd9KTt0aGlzLnZiKGsoZyxsKSxrKGgsbSkpO3JldHVybiBufTtlLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxnKX07ZS5wcm90b3R5cGUudmI9ZnVuY3Rpb24oZyxoKXtmdW5jdGlvbiBrKCl7c3dpdGNoKGwubCl7Y2FzZSAxOmcobC5tKTticmVhaztjYXNlIDI6aChsLm0pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIHN0YXRlOiBcIitsLmwpO319dmFyIGw9dGhpcztudWxsPT10aGlzLmo/Zi5sKGspOnRoaXMuai5wdXNoKGspfTtlLnJlc29sdmU9YztlLnJlamVjdD1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24oaCxrKXtrKGcpfSl9O2UucmFjZT1mdW5jdGlvbihnKXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24oaCxrKXtmb3IodmFyIGw9Xy5GKGcpLG09bC5uZXh0KCk7IW0uZG9uZTttPWwubmV4dCgpKWMobS52YWx1ZSkudmIoaCxrKX0pfTtlLmFsbD1mdW5jdGlvbihnKXt2YXIgaD1fLkYoZyksaz1oLm5leHQoKTtyZXR1cm4gay5kb25lP2MoW10pOm5ldyBlKGZ1bmN0aW9uKGwsbSl7ZnVuY3Rpb24gbih1KXtyZXR1cm4gZnVuY3Rpb24oQyl7cVt1XT1DO3ctLTswPT13JiZsKHEpfX12YXIgcT1bXSx3PTA7ZG8gcS5wdXNoKHZvaWQgMCksdysrLGMoay52YWx1ZSkudmIobihxLmxlbmd0aC0xKSxtKSxrPWgubmV4dCgpO3doaWxlKCFrLmRvbmUpfSl9O3JldHVybiBlfSxcImVzNlwiKTt2YXIgemM9ZnVuY3Rpb24oYSxiLGMpe2EgaW5zdGFuY2VvZiBTdHJpbmcmJihhPVN0cmluZyhhKSk7Zm9yKHZhciBkPWEubGVuZ3RoLGU9MDtlPGQ7ZSsrKXt2YXIgZj1hW2VdO2lmKGIuY2FsbChjLGYsZSxhKSlyZXR1cm57aTplLEtjOmZ9fXJldHVybntpOi0xLEtjOnZvaWQgMH19O2ZjKFwiQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gemModGhpcyxiLGMpLml9fSxcImVzNlwiKTt2YXIgQWM9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWEpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlRoZSAndGhpcycgdmFsdWUgZm9yIFN0cmluZy5wcm90b3R5cGUuXCIrYytcIiBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZFwiKTtpZihiIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3IoXCJGaXJzdCBhcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLlwiK2MrXCIgbXVzdCBub3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb25cIik7cmV0dXJuIGErXCJcIn07ZmMoXCJTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3ZhciBkPUFjKHRoaXMsYixcImVuZHNXaXRoXCIpO3ZvaWQgMD09PWMmJihjPWQubGVuZ3RoKTtjPU1hdGgubWF4KDAsTWF0aC5taW4oY3wwLGQubGVuZ3RoKSk7Zm9yKHZhciBlPWIubGVuZ3RoOzA8ZSYmMDxjOylpZihkWy0tY10hPWJbLS1lXSlyZXR1cm4hMTtyZXR1cm4gMD49ZX19LFwiZXM2XCIpO2ZjKFwiQXJyYXkucHJvdG90eXBlLmZpbmRcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIHpjKHRoaXMsYixjKS5LY319LFwiZXM2XCIpO3ZhciBCYz1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiBTdHJpbmcmJihhKz1cIlwiKTt2YXIgYz0wLGQ9ITEsZT17bmV4dDpmdW5jdGlvbigpe2lmKCFkJiZjPGEubGVuZ3RoKXt2YXIgZj1jKys7cmV0dXJue3ZhbHVlOmIoZixhW2ZdKSxkb25lOiExfX1kPSEwO3JldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19fTtlW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1mdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gZX07ZmMoXCJBcnJheS5wcm90b3R5cGUua2V5c1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gQmModGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gYn0pfX0sXCJlczZcIik7ZmMoXCJBcnJheS5wcm90b3R5cGUudmFsdWVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBCYyh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGN9KX19LFwiZXM4XCIpO2ZjKFwiT2JqZWN0LmlzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiBiPT09Yz8wIT09Ynx8MS9iPT09MS9jOmIhPT1iJiZjIT09Y319LFwiZXM2XCIpO2ZjKFwiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXM7ZCBpbnN0YW5jZW9mIFN0cmluZyYmKGQ9U3RyaW5nKGQpKTt2YXIgZT1kLmxlbmd0aDtjPWN8fDA7Zm9yKDA+YyYmKGM9TWF0aC5tYXgoYytlLDApKTtjPGU7YysrKXt2YXIgZj1kW2NdO2lmKGY9PT1ifHxfLkEoT2JqZWN0LFwiaXNcIikuY2FsbChPYmplY3QsZixiKSlyZXR1cm4hMH1yZXR1cm4hMX19LFwiZXM3XCIpO2ZjKFwiU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4tMSE9PUFjKHRoaXMsYixcImluY2x1ZGVzXCIpLmluZGV4T2YoYixjfHwwKX19LFwiZXM2XCIpO2ZjKFwiV2Vha01hcFwiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gYyhnKXt2YXIgaD10eXBlb2YgZztyZXR1cm5cIm9iamVjdFwiPT09aCYmbnVsbCE9PWd8fFwiZnVuY3Rpb25cIj09PWh9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgZz1PYmplY3Quc2VhbCh7fSksaD1PYmplY3Quc2VhbCh7fSksaz1uZXcgYShbW2csMl0sW2gsM11dKTtpZigyIT1rLmdldChnKXx8MyE9ay5nZXQoaCkpcmV0dXJuITE7ay5kZWxldGUoZyk7ay5zZXQoaCw0KTtyZXR1cm4hay5oYXMoZykmJjQ9PWsuZ2V0KGgpfWNhdGNoKGwpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgZD1cIiRqc2NvbXBfaGlkZGVuX1wiK01hdGgucmFuZG9tKCksZT0wLGY9ZnVuY3Rpb24oZyl7dGhpcy5qPShlKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoZyl7Zz1fLkYoZyk7Zm9yKHZhciBoOyEoaD1nLm5leHQoKSkuZG9uZTspaD1oLnZhbHVlLHRoaXMuc2V0KGhbMF0saFsxXSl9fTtmLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZyxoKXtpZighYyhnKSl0aHJvdyBFcnJvcihcIkludmFsaWQgV2Vha01hcCBrZXlcIik7aWYoIXZjKGcsZCkpe3ZhciBrPW5ldyBiO2FjKGcsZCx7dmFsdWU6a30pfWlmKCF2YyhnLGQpKXRocm93IEVycm9yKFwiV2Vha01hcCBrZXkgZmFpbDogXCIrZyk7Z1tkXVt0aGlzLmpdPWg7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLmdldD1mdW5jdGlvbihnKXtyZXR1cm4gYyhnKSYmdmMoZyxkKT9nW2RdW3RoaXMual06dm9pZCAwfTtmLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZyl7cmV0dXJuIGMoZykmJnZjKGcsZCkmJnZjKGdbZF0sdGhpcy5qKX07Zi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ2YyhnLGQpJiZ2YyhnW2RdLHRoaXMuaik/ZGVsZXRlIGdbZF1bdGhpcy5qXTohMX07cmV0dXJuIGZ9LFwiZXM2XCIpO2ZjKFwiTWFwXCIsZnVuY3Rpb24oYSl7aWYoZnVuY3Rpb24oKXtpZighYXx8XCJmdW5jdGlvblwiIT10eXBlb2YgYXx8IV8uQShhLnByb3RvdHlwZSxcImVudHJpZXNcIil8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIE9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgaD1PYmplY3Quc2VhbCh7eDo0fSksaz1uZXcgYShfLkYoW1toLFwic1wiXV0pKTtpZihcInNcIiE9ay5nZXQoaCl8fDEhPWsuc2l6ZXx8ay5nZXQoe3g6NH0pfHxrLnNldCh7eDo0fSxcInRcIikhPWt8fDIhPWsuc2l6ZSlyZXR1cm4hMTt2YXIgbD1fLkEoayxcImVudHJpZXNcIikuY2FsbChrKSxtPWwubmV4dCgpO2lmKG0uZG9uZXx8bS52YWx1ZVswXSE9aHx8XCJzXCIhPW0udmFsdWVbMV0pcmV0dXJuITE7bT1sLm5leHQoKTtyZXR1cm4gbS5kb25lfHw0IT1tLnZhbHVlWzBdLnh8fFwidFwiIT1tLnZhbHVlWzFdfHwhbC5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaChuKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGI9bmV3IHQuV2Vha01hcCxjPWZ1bmN0aW9uKGgpe3RoaXMubD17fTt0aGlzLmo9ZigpO3RoaXMuc2l6ZT0wO2lmKGgpe2g9Xy5GKGgpO2Zvcih2YXIgazshKGs9aC5uZXh0KCkpLmRvbmU7KWs9ay52YWx1ZSx0aGlzLnNldChrWzBdLGtbMV0pfX07Yy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGgsayl7aD0wPT09aD8wOmg7dmFyIGw9ZCh0aGlzLGgpO2wubGlzdHx8KGwubGlzdD10aGlzLmxbbC5pZF09W10pO2wuamE/bC5qYS52YWx1ZT1rOihsLmphPXtuZXh0OnRoaXMuaixEYTp0aGlzLmouRGEsaGVhZDp0aGlzLmosa2V5OmgsdmFsdWU6a30sbC5saXN0LnB1c2gobC5qYSksdGhpcy5qLkRhLm5leHQ9bC5qYSx0aGlzLmouRGE9bC5qYSx0aGlzLnNpemUrKyk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihoKXtoPWQodGhpcyxoKTtyZXR1cm4gaC5qYSYmaC5saXN0PyhoLmxpc3Quc3BsaWNlKGguaW5kZXgsMSksaC5saXN0Lmxlbmd0aHx8ZGVsZXRlIHRoaXMubFtoLmlkXSxoLmphLkRhLm5leHQ9aC5qYS5uZXh0LGguamEubmV4dC5EYT1oLmphLkRhLGguamEuaGVhZD1udWxsLHRoaXMuc2l6ZS0tLCEwKTohMX07Yy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmw9e307dGhpcy5qPXRoaXMuai5EYT1mKCk7dGhpcy5zaXplPTB9O2MucHJvdG90eXBlLmhhcz1mdW5jdGlvbihoKXtyZXR1cm4hIWQodGhpcyxoKS5qYX07Yy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGgpe3JldHVybihoPWQodGhpcyxoKS5qYSkmJmgudmFsdWV9O2MucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3JldHVybltoLmtleSxoLnZhbHVlXX0pfTtjLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm4gaC5rZXl9KX07Yy5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm4gaC52YWx1ZX0pfTtjLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGgsayl7Zm9yKHZhciBsPV8uQSh0aGlzLFwiZW50cmllc1wiKS5jYWxsKHRoaXMpLG07IShtPWwubmV4dCgpKS5kb25lOyltPW0udmFsdWUsaC5jYWxsKGssbVsxXSxtWzBdLHRoaXMpfTtjLnByb3RvdHlwZVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09Xy5BKGMucHJvdG90eXBlLFwiZW50cmllc1wiKTt2YXIgZD1mdW5jdGlvbihoLGspe3ZhciBsPWsmJnR5cGVvZiBrO1wib2JqZWN0XCI9PWx8fFwiZnVuY3Rpb25cIj09bD9iLmhhcyhrKT9sPWIuZ2V0KGspOihsPVwiXCIrICsrZyxiLnNldChrLGwpKTpsPVwicF9cIitrO3ZhciBtPWgubFtsXTtpZihtJiZ2YyhoLmwsbCkpZm9yKGg9MDtoPG0ubGVuZ3RoO2grKyl7dmFyIG49bVtoXTtpZihrIT09ayYmbi5rZXkhPT1uLmtleXx8az09PW4ua2V5KXJldHVybntpZDpsLGxpc3Q6bSxpbmRleDpoLGphOm59fXJldHVybntpZDpsLGxpc3Q6bSxpbmRleDotMSxqYTp2b2lkIDB9fSxlPWZ1bmN0aW9uKGgsayl7dmFyIGw9aC5qO3JldHVybiBnYyhmdW5jdGlvbigpe2lmKGwpe2Zvcig7bC5oZWFkIT1oLmo7KWw9bC5EYTtmb3IoO2wubmV4dCE9bC5oZWFkOylyZXR1cm4gbD1sLm5leHQse2RvbmU6ITEsdmFsdWU6ayhsKX07bD1udWxsfXJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19KX0sZj1mdW5jdGlvbigpe3ZhciBoPXt9O3JldHVybiBoLkRhPWgubmV4dD1oLmhlYWQ9aH0sZz0wO3JldHVybiBjfSxcImVzNlwiKTtmYyhcIlNldFwiLGZ1bmN0aW9uKGEpe2lmKGZ1bmN0aW9uKCl7aWYoIWF8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGF8fCFfLkEoYS5wcm90b3R5cGUsXCJlbnRyaWVzXCIpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGM9T2JqZWN0LnNlYWwoe3g6NH0pLGQ9bmV3IGEoXy5GKFtjXSkpO2lmKCFkLmhhcyhjKXx8MSE9ZC5zaXplfHxkLmFkZChjKSE9ZHx8MSE9ZC5zaXplfHxkLmFkZCh7eDo0fSkhPWR8fDIhPWQuc2l6ZSlyZXR1cm4hMTt2YXIgZT1fLkEoZCxcImVudHJpZXNcIikuY2FsbChkKSxmPWUubmV4dCgpO2lmKGYuZG9uZXx8Zi52YWx1ZVswXSE9Y3x8Zi52YWx1ZVsxXSE9YylyZXR1cm4hMTtmPWUubmV4dCgpO3JldHVybiBmLmRvbmV8fGYudmFsdWVbMF09PWN8fDQhPWYudmFsdWVbMF0ueHx8Zi52YWx1ZVsxXSE9Zi52YWx1ZVswXT8hMTplLm5leHQoKS5kb25lfWNhdGNoKGcpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgYj1mdW5jdGlvbihjKXt0aGlzLmo9bmV3IHQuTWFwO2lmKGMpe2M9Xy5GKGMpO2Zvcih2YXIgZDshKGQ9Yy5uZXh0KCkpLmRvbmU7KXRoaXMuYWRkKGQudmFsdWUpfXRoaXMuc2l6ZT10aGlzLmouc2l6ZX07Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGMpe2M9MD09PWM/MDpjO3RoaXMuai5zZXQoYyxjKTt0aGlzLnNpemU9dGhpcy5qLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihjKXtjPXRoaXMuai5kZWxldGUoYyk7dGhpcy5zaXplPXRoaXMuai5zaXplO3JldHVybiBjfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuai5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuai5oYXMoYyl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5BKHRoaXMuaixcImVudHJpZXNcIikuY2FsbCh0aGlzLmopfTtiLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5BKHRoaXMuaixcInZhbHVlc1wiKS5jYWxsKHRoaXMuail9O2IucHJvdG90eXBlLmtleXM9Xy5BKGIucHJvdG90eXBlLFwidmFsdWVzXCIpO2IucHJvdG90eXBlW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1fLkEoYi5wcm90b3R5cGUsXCJ2YWx1ZXNcIik7Yi5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihjLGQpe3ZhciBlPXRoaXM7dGhpcy5qLmZvckVhY2goZnVuY3Rpb24oZil7cmV0dXJuIGMuY2FsbChkLGYsZixlKX0pfTtyZXR1cm4gYn0sXCJlczZcIik7ZmMoXCJOdW1iZXIuaXNGaW5pdGVcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVyblwibnVtYmVyXCIhPT10eXBlb2YgYj8hMTohaXNOYU4oYikmJkluZmluaXR5IT09YiYmLUluZmluaXR5IT09Yn19LFwiZXM2XCIpO2ZjKFwiTnVtYmVyLmlzSW50ZWdlclwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIF8uQShOdW1iZXIsXCJpc0Zpbml0ZVwiKS5jYWxsKE51bWJlcixiKT9iPT09TWF0aC5mbG9vcihiKTohMX19LFwiZXM2XCIpO2ZjKFwiQXJyYXkuZnJvbVwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjLGQpe2M9bnVsbCE9Yz9jOmZ1bmN0aW9uKGgpe3JldHVybiBofTt2YXIgZT1bXSxmPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB0LlN5bWJvbCYmXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIikmJmJbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGYpe2I9Zi5jYWxsKGIpO2Zvcih2YXIgZz0wOyEoZj1iLm5leHQoKSkuZG9uZTspZS5wdXNoKGMuY2FsbChkLGYudmFsdWUsZysrKSl9ZWxzZSBmb3IoZj1iLmxlbmd0aCxnPTA7ZzxmO2crKyllLnB1c2goYy5jYWxsKGQsYltnXSxnKSk7cmV0dXJuIGV9fSxcImVzNlwiKTtmYyhcIkFycmF5LnByb3RvdHlwZS5lbnRyaWVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiBCYyh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuW2IsY119KX19LFwiZXM2XCIpO18ucj10aGlzfHxzZWxmO0NjPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KFwiLlwiKTt2YXIgYz1fLnI7YVswXWluIGN8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBjLmV4ZWNTY3JpcHR8fGMuZXhlY1NjcmlwdChcInZhciBcIithWzBdKTtmb3IodmFyIGQ7YS5sZW5ndGgmJihkPWEuc2hpZnQoKSk7KWEubGVuZ3RofHx2b2lkIDA9PT1iP2NbZF0mJmNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdP2M9Y1tkXTpjPWNbZF09e306Y1tkXT1ifTtGYz1mdW5jdGlvbihhKXtpZihhJiZhIT1fLnIpcmV0dXJuIERjKGEuZG9jdW1lbnQpO251bGw9PT1FYyYmKEVjPURjKF8uci5kb2N1bWVudCkpO3JldHVybiBFY307R2M9L15bXFx3Ky9fLV0rWz1dezAsMn0kLztFYz1udWxsO0RjPWZ1bmN0aW9uKGEpe3JldHVybihhPWEucXVlcnlTZWxlY3RvciYmYS5xdWVyeVNlbGVjdG9yKFwic2NyaXB0W25vbmNlXVwiKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKFwibm9uY2VcIikpJiZHYy50ZXN0KGEpP2E6XCJcIn07Xy5IYz1mdW5jdGlvbigpe307SWM9ZnVuY3Rpb24oYSl7YS5iYj12b2lkIDA7YS5CPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYmI/YS5iYjphLmJiPW5ldyBhfX07SmM9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuXCJvYmplY3RcIiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT9cImFycmF5XCI6YjpcIm51bGxcIn07S2M9ZnVuY3Rpb24oYSl7dmFyIGI9SmMoYSk7cmV0dXJuXCJhcnJheVwiPT1ifHxcIm9iamVjdFwiPT1iJiZcIm51bWJlclwiPT10eXBlb2YgYS5sZW5ndGh9O0xjPWZ1bmN0aW9uKGEpe3JldHVyblwiZnVuY3Rpb25cIj09SmMoYSl9O18uTWM9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuXCJvYmplY3RcIj09YiYmbnVsbCE9YXx8XCJmdW5jdGlvblwiPT1ifTtCYj1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsTmMpJiZhW05jXXx8KGFbTmNdPSsrT2MpfTtOYz1cImNsb3N1cmVfdWlkX1wiKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO09jPTA7UGM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9O1FjPWZ1bmN0aW9uKGEsYixjKXtpZighYSl0aHJvdyBFcnJvcigpO2lmKDI8YXJndW1lbnRzLmxlbmd0aCl7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7QXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoZSxkKTtyZXR1cm4gYS5hcHBseShiLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShiLGFyZ3VtZW50cyl9fTtfLlJjPWZ1bmN0aW9uKGEsYixjKXtGdW5jdGlvbi5wcm90b3R5cGUuYmluZCYmLTEhPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLnRvU3RyaW5nKCkuaW5kZXhPZihcIm5hdGl2ZSBjb2RlXCIpP18uUmM9UGM6Xy5SYz1RYztyZXR1cm4gXy5SYy5hcHBseShudWxsLGFyZ3VtZW50cyl9O18uU2M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yy5zbGljZSgpO2QucHVzaC5hcHBseShkLGFyZ3VtZW50cyk7cmV0dXJuIGEuYXBwbHkodGhpcyxkKX19O1RjPURhdGUubm93O0s9ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EucHJvdG90eXBlPW5ldyBjO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWF9O3ZhciBDYT1mdW5jdGlvbihhLGIpe3ZhciBjPXZvaWQgMDtyZXR1cm4gbmV3IChjfHwoYz10LlByb21pc2UpKShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGYoayl7dHJ5e2goYi5uZXh0KGspKX1jYXRjaChsKXtlKGwpfX1mdW5jdGlvbiBnKGspe3RyeXtoKGJbXCJ0aHJvd1wiXShrKSl9Y2F0Y2gobCl7ZShsKX19ZnVuY3Rpb24gaChrKXtrLmRvbmU/ZChrLnZhbHVlKToobmV3IGMoZnVuY3Rpb24obCl7bChrLnZhbHVlKX0pKS50aGVuKGYsZyl9aCgoYj1iLmFwcGx5KGEsdm9pZCAwKSkubmV4dCgpKX0pfTt2YXIgVWM7dmFyIFdjLFpjLFljLGFkLGJkLGNkLFVhLFZhLGVkLGRkLGZkLGdkLGhkO18uVmM9ZnVuY3Rpb24oYSxiKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYix2b2lkIDApfTtfLlRhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhLGIsdm9pZCAwKX07Xy5SYT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLHZvaWQgMCl9O1djPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChhLGIsMCl9O18uWGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChhLGIsdm9pZCAwKX07WmM9ZnVuY3Rpb24oYSxiKXtiPVljKGEsYik7cmV0dXJuIDA+Yj9udWxsOlwic3RyaW5nXCI9PT10eXBlb2YgYT9hLmNoYXJBdChiKTphW2JdfTtZYz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZT0wO2U8YztlKyspaWYoZSBpbiBkJiZiLmNhbGwodm9pZCAwLGRbZV0sZSxhKSlyZXR1cm4gZTtyZXR1cm4tMX07Xy4kYz1mdW5jdGlvbihhLGIpe3JldHVybiAwPD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGEsYix2b2lkIDApfTthZD1mdW5jdGlvbihhLGIpe2I9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKTt2YXIgYzsoYz0wPD1iKSYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKTtyZXR1cm4gY307YmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoMDxiKXtmb3IodmFyIGM9QXJyYXkoYiksZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfTtjZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIDI+PWFyZ3VtZW50cy5sZW5ndGg/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIsYyl9O1VhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPTAsZD0wO2Q8YS5sZW5ndGg7KXt2YXIgZT1hW2QrK107dmFyIGY9ZTtmPV8uTWMoZik/XCJvXCIrQmIoZik6KHR5cGVvZiBmKS5jaGFyQXQoMCkrZjtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixmKXx8KGJbZl09ITAsYVtjKytdPWUpfWEubGVuZ3RoPWN9O1ZhPWZ1bmN0aW9uKGEsYil7YS5zb3J0KGJ8fGRkKX07ZWQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9QXJyYXkoYS5sZW5ndGgpLGQ9MDtkPGEubGVuZ3RoO2QrKyljW2RdPXtpbmRleDpkLHZhbHVlOmFbZF19O3ZhciBlPWJ8fGRkO1ZhKGMsZnVuY3Rpb24oZixnKXtyZXR1cm4gZShmLnZhbHVlLGcudmFsdWUpfHxmLmluZGV4LWcuaW5kZXh9KTtmb3IoZD0wO2Q8YS5sZW5ndGg7ZCsrKWFbZF09Y1tkXS52YWx1ZX07ZGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9O2ZkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1ifTtnZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz17fSxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWFbZF0sZj1iLmNhbGwodm9pZCAwLGUsZCxhKTt2b2lkIDAhPT1mJiYoY1tmXXx8KGNbZl09W10pKS5wdXNoKGUpfXJldHVybiBjfTtoZD1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihBcnJheS5pc0FycmF5KGQpKWZvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSs9ODE5Milmb3IodmFyIGY9aGQuYXBwbHkobnVsbCxjZChkLGUsZSs4MTkyKSksZz0wO2c8Zi5sZW5ndGg7ZysrKWIucHVzaChmW2ddKTtlbHNlIGIucHVzaChkKX1yZXR1cm4gYn07dmFyIGlkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LHZhPWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7Ynx8KGM9YSgpLGI9ITApO3JldHVybiBjfX0samQ9ZnVuY3Rpb24oYSl7dmFyIGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXt2YXIgYz1iO2I9bnVsbDtjKCl9fX0sa2Q9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTAsZT0hMSxmPVtdLGc9ZnVuY3Rpb24oKXtkPTA7ZSYmKGU9ITEsaCgpKX0saD1mdW5jdGlvbigpe2Q9Xy5yLnNldFRpbWVvdXQoZyxiKTthLmFwcGx5KGMsZil9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07dmFyIGxkPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpYi5jYWxsKHZvaWQgMCxhW2NdLGMsYSl9LG1kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGwhPT1hJiZiIGluIGF9LG5kPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGEpaWYoYi5jYWxsKHZvaWQgMCxhW2NdLGMsYSkpcmV0dXJuIGN9LG9kPVwiY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mXCIuc3BsaXQoXCIgXCIpLHBkPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQsZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe2Q9YXJndW1lbnRzW2VdO2ZvcihjIGluIGQpYVtjXT1kW2NdO2Zvcih2YXIgZj0wO2Y8b2QubGVuZ3RoO2YrKyljPW9kW2ZdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGMpJiYoYVtjXT1kW2NdKX19LHFkPWZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09YiYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBxZC5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7Zm9yKHZhciBjPXt9LGQ9MDtkPGI7ZCsrKWNbYXJndW1lbnRzW2RdXT0hMDtyZXR1cm4gY307dmFyIHRkPWZ1bmN0aW9uKGEsYil7dGhpcy5qPWE9PT1yZCYmYnx8XCJcIjt0aGlzLmw9c2R9O3RkLnByb3RvdHlwZS5sYj0hMDt0ZC5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgdWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiB0ZCYmYS5jb25zdHJ1Y3Rvcj09PXRkJiZhLmw9PT1zZD9hLmo6XCJ0eXBlX2Vycm9yOkNvbnN0XCJ9LHZkPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdGQocmQsYSl9LHNkPXt9LHJkPXt9O3ZhciB4ZD1mdW5jdGlvbihhLGIpe3RoaXMuaj1iPT09d2Q/YTpcIlwifTt4ZC5wcm90b3R5cGUubGI9ITA7eGQucHJvdG90eXBlLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTt2YXIgeWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiB4ZCYmYS5jb25zdHJ1Y3Rvcj09PXhkP2EuajpcInR5cGVfZXJyb3I6VHJ1c3RlZFJlc291cmNlVXJsXCJ9LEphPWZ1bmN0aW9uKGEsYil7dmFyIGM9dWQoYSk7aWYoIXpkLnRlc3QoYykpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIFRydXN0ZWRSZXNvdXJjZVVybCBmb3JtYXQ6IFwiK2MpO2E9Yy5yZXBsYWNlKEFkLGZ1bmN0aW9uKGQsZSl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGUpKXRocm93IEVycm9yKCdGb3VuZCBtYXJrZXIsIFwiJytlKydcIiwgaW4gZm9ybWF0IHN0cmluZywgXCInK2MrJ1wiLCBidXQgbm8gdmFsaWQgbGFiZWwgbWFwcGluZyBmb3VuZCBpbiBhcmdzOiAnK0pTT04uc3RyaW5naWZ5KGIpKTtkPWJbZV07cmV0dXJuIGQgaW5zdGFuY2VvZiB0ZD91ZChkKTplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3JldHVybiBCZChhKX0sQWQ9LyV7KFxcdyspfS9nLHpkPS9eKChodHRwczopP1xcL1xcL1swLTlhLXouOltcXF0tXStcXC98XFwvW14vXFxcXF18W146L1xcXFwlXStcXC98W146L1xcXFwlXSpbPyNdfGFib3V0OmJsYW5rIykvaSxDZD0vXihbXj8jXSopKFxcP1teI10qKT8oI1tcXHNcXFNdKik/Lyx3ZD17fSxCZD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHhkKGEsd2QpfSxEZD1mdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YylyZXR1cm4gYjtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6XCJcIjtmb3IodmFyIGQgaW4gYylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxkKSl7dmFyIGU9Y1tkXTtlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBnPWVbZl07bnVsbCE9ZyYmKGJ8fChiPWEpLGIrPShiLmxlbmd0aD5hLmxlbmd0aD9cIiZcIjpcIlwiKStlbmNvZGVVUklDb21wb25lbnQoZCkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhnKSkpfX1yZXR1cm4gYn07dmFyIEVkPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfSxGZD1mdW5jdGlvbihhKXtyZXR1cm4vXltcXHNcXHhhMF0qJC8udGVzdChhKX0sR2Q9ZnVuY3Rpb24oYSl7cmV0dXJuL15bXFxzXFx4YTBdKihbXFxzXFxTXSo/KVtcXHNcXHhhMF0qJC8uZXhlYyhhKVsxXX0sSGQ9LyYvZyxJZD0vPC9nLEpkPS8+L2csS2Q9L1wiL2csTGQ9LycvZyxNZD0vXFx4MDAvZyxOZD0vW1xceDAwJjw+XCInXS8sUGQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2E9R2QoU3RyaW5nKGEpKS5zcGxpdChcIi5cIik7Yj1HZChTdHJpbmcoYikpLnNwbGl0KFwiLlwiKTtmb3IodmFyIGQ9TWF0aC5tYXgoYS5sZW5ndGgsYi5sZW5ndGgpLGU9MDswPT1jJiZlPGQ7ZSsrKXt2YXIgZj1hW2VdfHxcIlwiLGc9YltlXXx8XCJcIjtkb3tmPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGYpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07Zz0vKFxcZCopKFxcRCopKC4qKS8uZXhlYyhnKXx8W1wiXCIsXCJcIixcIlwiLFwiXCJdO2lmKDA9PWZbMF0ubGVuZ3RoJiYwPT1nWzBdLmxlbmd0aClicmVhaztjPU9kKDA9PWZbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoZlsxXSwxMCksMD09Z1sxXS5sZW5ndGg/MDpwYXJzZUludChnWzFdLDEwKSl8fE9kKDA9PWZbMl0ubGVuZ3RoLDA9PWdbMl0ubGVuZ3RoKXx8T2QoZlsyXSxnWzJdKTtmPWZbM107Zz1nWzNdfXdoaWxlKDA9PWMpfXJldHVybiBjfSxPZD1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07dmFyIFRkLFFkO18uUmQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmo9Yj09PVFkP2E6XCJcIn07Xy5SZC5wcm90b3R5cGUubGI9ITA7Xy5SZC5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnRvU3RyaW5nKCl9O18uU2Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBfLlJkJiZhLmNvbnN0cnVjdG9yPT09Xy5SZD9hLmo6XCJ0eXBlX2Vycm9yOlNhZmVVcmxcIn07VGQ9L14oPzooPzpodHRwcz98bWFpbHRvfGZ0cCk6fFteOi8/I10qKD86Wy8/I118JCkpL2k7Xy5VZD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5SZClyZXR1cm4gYTthPVwib2JqZWN0XCI9PXR5cGVvZiBhJiZhLmxiP2EuTmEoKTpTdHJpbmcoYSk7VGQudGVzdChhKXx8KGE9XCJhYm91dDppbnZhbGlkI3pDbG9zdXJlelwiKTtyZXR1cm4gbmV3IF8uUmQoYSxRZCl9O1FkPXt9O3ZhciBWZDthOnt2YXIgV2Q9Xy5yLm5hdmlnYXRvcjtpZihXZCl7dmFyIFhkPVdkLnVzZXJBZ2VudDtpZihYZCl7VmQ9WGQ7YnJlYWsgYX19VmQ9XCJcIn12YXIgTD1mdW5jdGlvbihhKXtyZXR1cm4tMSE9VmQuaW5kZXhPZihhKX0sWWQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPS8oXFx3W1xcdyBdKylcXC8oW15cXHNdKylcXHMqKD86XFwoKC4qPylcXCkpPy9nLGM9W10sZDtkPWIuZXhlYyhhKTspYy5wdXNoKFtkWzFdLGRbMl0sZFszXXx8dm9pZCAwXSk7cmV0dXJuIGN9O3ZhciBaZD1mdW5jdGlvbigpe3JldHVybiBMKFwiVHJpZGVudFwiKXx8TChcIk1TSUVcIil9LCRkPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJGaXJlZm94XCIpfHxMKFwiRnhpT1NcIil9LGJlPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJTYWZhcmlcIikmJiEoYWUoKXx8TChcIkNvYXN0XCIpfHxMKFwiT3BlcmFcIil8fEwoXCJFZGdlXCIpfHxMKFwiRWRnL1wiKXx8TChcIk9QUlwiKXx8JGQoKXx8TChcIlNpbGtcIil8fEwoXCJBbmRyb2lkXCIpKX0sYWU9ZnVuY3Rpb24oKXtyZXR1cm4oTChcIkNocm9tZVwiKXx8TChcIkNyaU9TXCIpKSYmIUwoXCJFZGdlXCIpfSxkZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoZSl7ZT1aYyhlLGQpO3JldHVybiBjW2VdfHxcIlwifXZhciBiPVZkO2lmKFpkKCkpcmV0dXJuIGNlKGIpO2I9WWQoYik7dmFyIGM9e307Xy5WYyhiLGZ1bmN0aW9uKGUpe2NbZVswXV09ZVsxXX0pO3ZhciBkPV8uU2MobWQsYyk7cmV0dXJuIEwoXCJPcGVyYVwiKT9hKFtcIlZlcnNpb25cIixcIk9wZXJhXCJdKTpMKFwiRWRnZVwiKT9hKFtcIkVkZ2VcIl0pOkwoXCJFZGcvXCIpP2EoW1wiRWRnXCJdKTphZSgpP2EoW1wiQ2hyb21lXCIsXCJDcmlPU1wiLFwiSGVhZGxlc3NDaHJvbWVcIl0pOihiPWJbMl0pJiZiWzFdfHxcIlwifSxjZT1mdW5jdGlvbihhKXt2YXIgYj0vcnY6ICooW1xcZFxcLl0qKS8uZXhlYyhhKTtpZihiJiZiWzFdKXJldHVybiBiWzFdO2I9XCJcIjt2YXIgYz0vTVNJRSArKFtcXGRcXC5dKykvLmV4ZWMoYSk7aWYoYyYmY1sxXSlpZihhPS9UcmlkZW50XFwvKFxcZC5cXGQpLy5leGVjKGEpLFwiNy4wXCI9PWNbMV0paWYoYSYmYVsxXSlzd2l0Y2goYVsxXSl7Y2FzZSBcIjQuMFwiOmI9XCI4LjBcIjticmVhaztjYXNlIFwiNS4wXCI6Yj1cIjkuMFwiO2JyZWFrO2Nhc2UgXCI2LjBcIjpiPVwiMTAuMFwiO2JyZWFrO2Nhc2UgXCI3LjBcIjpiPVwiMTEuMFwifWVsc2UgYj1cIjcuMFwiO2Vsc2UgYj1jWzFdO3JldHVybiBifTt2YXIgZmU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuaj1jPT09ZWU/YTpcIlwifTtmZS5wcm90b3R5cGUubGI9ITA7ZmUucHJvdG90eXBlLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTt2YXIgZWU9e307dmFyIEFhPWZ1bmN0aW9uKGEsYil7YS5zcmM9eWQoYik7KGI9RmMoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGIpfTt2YXIgZ2UsaGUsaWUsamUsbGU7Z2U9ZnVuY3Rpb24oYSl7TmQudGVzdChhKSYmKC0xIT1hLmluZGV4T2YoXCImXCIpJiYoYT1hLnJlcGxhY2UoSGQsXCImYW1wO1wiKSksLTEhPWEuaW5kZXhPZihcIjxcIikmJihhPWEucmVwbGFjZShJZCxcIiZsdDtcIikpLC0xIT1hLmluZGV4T2YoXCI+XCIpJiYoYT1hLnJlcGxhY2UoSmQsXCImZ3Q7XCIpKSwtMSE9YS5pbmRleE9mKCdcIicpJiYoYT1hLnJlcGxhY2UoS2QsXCImcXVvdDtcIikpLC0xIT1hLmluZGV4T2YoXCInXCIpJiYoYT1hLnJlcGxhY2UoTGQsXCImIzM5O1wiKSksLTEhPWEuaW5kZXhPZihcIlxceDAwXCIpJiYoYT1hLnJlcGxhY2UoTWQsXCImIzA7XCIpKSk7cmV0dXJuIGF9O2hlPVN0cmluZy5wcm90b3R5cGUucmVwZWF0P2Z1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwZWF0KGIpfTpmdW5jdGlvbihhLGIpe3JldHVybiBBcnJheShiKzEpLmpvaW4oYSl9O2llPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO3ZhciBiPWEuaW5kZXhPZihcIi5cIik7LTE9PWImJihiPWEubGVuZ3RoKTtyZXR1cm4gaGUoXCIwXCIsTWF0aC5tYXgoMCwyLWIpKSthfTtqZT1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpK01hdGguYWJzKE1hdGguZmxvb3IoMjE0NzQ4MzY0OCpNYXRoLnJhbmRvbSgpKV5UYygpKS50b1N0cmluZygzNil9O18ua2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cXC0oW2Etel0pL2csZnVuY3Rpb24oYixjKXtyZXR1cm4gYy50b1VwcGVyQ2FzZSgpfSl9O2xlPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoLyhefFtcXHNdKykoW2Etel0pL2csZnVuY3Rpb24oYixjLGQpe3JldHVybiBjK2QudG9VcHBlckNhc2UoKX0pfTt2YXIgYWE9MCxiYT0wO3ZhciBtZT1mdW5jdGlvbigpe3RoaXMuaj1bXX07bWUucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoubGVuZ3RofTt2YXIgbmU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5qO2Euaj1bXTtyZXR1cm4gYn0sb2U9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWFhLGM9YmE7MDxjfHwxMjc8YjspYS5qLnB1c2goYiYxMjd8MTI4KSxiPShiPj4+N3xjPDwyNSk+Pj4wLGM+Pj49NzthLmoucHVzaChiKX0scGU9ZnVuY3Rpb24oYSxiKXtmb3IoOzEyNzxiOylhLmoucHVzaChiJjEyN3wxMjgpLGI+Pj49NzthLmoucHVzaChiKX07dmFyIHFlPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJpUGhvbmVcIikmJiFMKFwiaVBvZFwiKSYmIUwoXCJpUGFkXCIpfTt2YXIgcmU9ZnVuY3Rpb24oYSl7cmVbXCIgXCJdKGEpO3JldHVybiBhfTtyZVtcIiBcIl09Xy5IYzt2YXIgc2U9ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuIHJlKGFbYl0pLCEwfWNhdGNoKGMpe31yZXR1cm4hMX0sRWI9ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kP2QoYik6YjtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsZCk/YVtkXTphW2RdPWMoYil9O3ZhciB0ZSx2ZSx3ZSx4ZSx5ZSx6ZSxBZSxCZSxDZSxEZSxFZSxGZTt0ZT1MKFwiT3BlcmFcIik7Xy51ZT1aZCgpO3ZlPUwoXCJFZGdlXCIpO3dlPXZlfHxfLnVlO3hlPUwoXCJHZWNrb1wiKSYmISgtMSE9VmQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwid2Via2l0XCIpJiYhTChcIkVkZ2VcIikpJiYhKEwoXCJUcmlkZW50XCIpfHxMKFwiTVNJRVwiKSkmJiFMKFwiRWRnZVwiKTt5ZT0tMSE9VmQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwid2Via2l0XCIpJiYhTChcIkVkZ2VcIik7emU9eWUmJkwoXCJNb2JpbGVcIik7QWU9TChcIkFuZHJvaWRcIik7QmU9cWUoKTtDZT1MKFwiaVBhZFwiKTtEZT1MKFwiaVBvZFwiKTtFZT1mdW5jdGlvbigpe3ZhciBhPV8uci5kb2N1bWVudDtyZXR1cm4gYT9hLmRvY3VtZW50TW9kZTp2b2lkIDB9O2E6e3ZhciBHZT1cIlwiLEhlPWZ1bmN0aW9uKCl7dmFyIGE9VmQ7aWYoeGUpcmV0dXJuL3J2OihbXlxcKTtdKykoXFwpfDspLy5leGVjKGEpO2lmKHZlKXJldHVybi9FZGdlXFwvKFtcXGRcXC5dKykvLmV4ZWMoYSk7aWYoXy51ZSlyZXR1cm4vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoYSk7aWYoeWUpcmV0dXJuL1dlYktpdFxcLyhcXFMrKS8uZXhlYyhhKTtpZih0ZSlyZXR1cm4vKD86VmVyc2lvbilbIFxcL10/KFxcUyspLy5leGVjKGEpfSgpO0hlJiYoR2U9SGU/SGVbMV06XCJcIik7aWYoXy51ZSl7dmFyIEllPUVlKCk7aWYobnVsbCE9SWUmJkllPnBhcnNlRmxvYXQoR2UpKXtGZT1TdHJpbmcoSWUpO2JyZWFrIGF9fUZlPUdlfXZhciBKZT1GZSxLZT17fSxMZT1mdW5jdGlvbihhKXtyZXR1cm4gRWIoS2UsYSxmdW5jdGlvbigpe3JldHVybiAwPD1QZChKZSxhKX0pfSxNZTtpZihfLnIuZG9jdW1lbnQmJl8udWUpe3ZhciBOZT1FZSgpO01lPU5lP05lOnBhcnNlSW50KEplLDEwKXx8dm9pZCAwfWVsc2UgTWU9dm9pZCAwO3ZhciBPZT1NZTt2YXIgUGU9YWUoKSxRZT1iZSgpJiYhKHFlKCl8fEwoXCJpUGFkXCIpfHxMKFwiaVBvZFwiKSk7dmFyIFJlPXt9LFNlPW51bGwsVGU9eGV8fHllJiYhUWV8fHRlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBfLnIuYnRvYSxVZT1mdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPTApO2lmKCFTZSl7U2U9e307Zm9yKHZhciBjPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIi5zcGxpdChcIlwiKSxkPVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxlPTA7NT5lO2UrKyl7dmFyIGY9Yy5jb25jYXQoZFtlXS5zcGxpdChcIlwiKSk7UmVbZV09Zjtmb3IodmFyIGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXTt2b2lkIDA9PT1TZVtoXSYmKFNlW2hdPWcpfX19Yj1SZVtiXTtjPVtdO2ZvcihkPTA7ZDxhLmxlbmd0aDtkKz0zKXt2YXIgaz1hW2RdLGw9KGU9ZCsxPGEubGVuZ3RoKT9hW2QrMV06MDtoPShmPWQrMjxhLmxlbmd0aCk/YVtkKzJdOjA7Zz1rPj4yO2s9KGsmMyk8PDR8bD4+NDtsPShsJjE1KTw8MnxoPj42O2gmPTYzO2Z8fChoPTY0LGV8fChsPTY0KSk7Yy5wdXNoKGJbZ10sYltrXSxiW2xdfHxcIlwiLGJbaF18fFwiXCIpfXJldHVybiBjLmpvaW4oXCJcIil9LFZlPWZ1bmN0aW9uKGEsYil7aWYoVGUmJiFiKWE9Xy5yLmJ0b2EoYSk7ZWxzZXtmb3IodmFyIGM9W10sZD0wLGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9YS5jaGFyQ29kZUF0KGUpOzI1NTxmJiYoY1tkKytdPWYmMjU1LGY+Pj04KTtjW2QrK109Zn1hPVVlKGMsYil9cmV0dXJuIGF9O3ZhciBXZT1mdW5jdGlvbigpe3RoaXMudj1bXTt0aGlzLmw9MDt0aGlzLmo9bmV3IG1lfSxYZT1mdW5jdGlvbihhLGIpe3BlKGEuaiw4KmIrMik7Yj1uZShhLmopO2Eudi5wdXNoKGIpO2EubCs9Yi5sZW5ndGg7Yi5wdXNoKGEubCk7cmV0dXJuIGJ9LFllPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5wb3AoKTtmb3IoYz1hLmwrYS5qLmxlbmd0aCgpLWM7MTI3PGM7KWIucHVzaChjJjEyN3wxMjgpLGM+Pj49NyxhLmwrKztiLnB1c2goYyk7YS5sKyt9LFplPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1uZXcgVWludDhBcnJheShhLmwrYS5qLmxlbmd0aCgpKSxjPWEudixkPWMubGVuZ3RoLGU9MCxmPTA7ZjxkO2YrKyl7dmFyIGc9Y1tmXTtiLnNldChnLGUpO2UrPWcubGVuZ3RofWM9bmUoYS5qKTtiLnNldChjLGUpO2Eudj1bYl07cmV0dXJuIGJ9LCRlPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsIT1jJiZudWxsIT1jKWlmKHBlKGEuaiw4KmIpLGE9YS5qLDA8PWMpcGUoYSxjKTtlbHNle2ZvcihiPTA7OT5iO2IrKylhLmoucHVzaChjJjEyN3wxMjgpLGM+Pj03O2Euai5wdXNoKDEpfX0sYWY9ZnVuY3Rpb24oYSxiLGMpe251bGwhPWMmJm51bGwhPWMmJihwZShhLmosOCpiKSxhPWEuaixjYShjKSxvZShhKSl9LGJmPWZ1bmN0aW9uKGEsYixjKXtudWxsIT1jJiZudWxsIT1jJiYocGUoYS5qLDgqYiksYT1hLmosY2EoYyksb2UoYSkpfSxjZj1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9Yyl7Yj1YZShhLGIpO2Zvcih2YXIgZD1hLmosZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jLmNoYXJDb2RlQXQoZSk7aWYoMTI4PmYpZC5qLnB1c2goZik7ZWxzZSBpZigyMDQ4PmYpZC5qLnB1c2goZj4+NnwxOTIpLGQuai5wdXNoKGYmNjN8MTI4KTtlbHNlIGlmKDY1NTM2PmYpaWYoNTUyOTY8PWYmJjU2MzE5Pj1mJiZlKzE8Yy5sZW5ndGgpe3ZhciBnPWMuY2hhckNvZGVBdChlKzEpOzU2MzIwPD1nJiY1NzM0Mz49ZyYmKGY9MTAyNCooZi01NTI5NikrZy01NjMyMCs2NTUzNixkLmoucHVzaChmPj4xOHwyNDApLGQuai5wdXNoKGY+PjEyJjYzfDEyOCksZC5qLnB1c2goZj4+NiY2M3wxMjgpLGQuai5wdXNoKGYmNjN8MTI4KSxlKyspfWVsc2UgZC5qLnB1c2goZj4+MTJ8MjI0KSxkLmoucHVzaChmPj42JjYzfDEyOCksZC5qLnB1c2goZiY2M3wxMjgpfVllKGEsYil9fSxlZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZGY7bnVsbCE9YyYmKGI9WGUoYSxiKSxkKGMsYSksWWUoYSxiKSl9LGZmPWZ1bmN0aW9uKGEsYixjLGQpe2lmKG51bGwhPWMpZm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPVhlKGEsYik7ZChjW2VdLGEpO1llKGEsZil9fTt2YXIgTT1mdW5jdGlvbigpe30sZ2Y9XCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheSxrZj1mdW5jdGlvbihhLGIsYyxkKXthLmo9bnVsbDtifHwoYj1bXSk7YS5DPXZvaWQgMDthLnY9LTE7YS5pYT1iO2E6e2lmKGI9YS5pYS5sZW5ndGgpey0tYjt2YXIgZT1hLmlhW2JdO2lmKCEobnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpfHxnZiYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXthLm89Yi1hLnY7YS5sPWU7YnJlYWsgYX19YS5vPU51bWJlci5NQVhfVkFMVUV9YS5BPXt9O2lmKGMpZm9yKGI9MDtiPGMubGVuZ3RoO2IrKyllPWNbYl0sZTxhLm8/KGUrPWEudixhLmlhW2VdPWEuaWFbZV18fGhmKTooamYoYSksYS5sW2VdPWEubFtlXXx8aGYpO2lmKGQmJmQubGVuZ3RoKWZvcihiPTA7YjxkLmxlbmd0aDtiKyspe2U9Yz12b2lkIDA7Zm9yKHZhciBmPWEsZz1kW2JdLGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIGs9Z1toXSxsPUIoZixrKTtudWxsIT1sJiYoZT1rLGM9bCxEKGYsayx2b2lkIDApKX1lJiZEKGYsZSxjKX19LGhmPVtdLGpmPWZ1bmN0aW9uKGEpe3ZhciBiPWEubythLnY7YS5pYVtiXXx8KGEubD1hLmlhW2JdPXt9KX0sQj1mdW5jdGlvbihhLGIpe2lmKGI8YS5vKXtiKz1hLnY7dmFyIGM9YS5pYVtiXTtyZXR1cm4gYz09PWhmP2EuaWFbYl09W106Y31pZihhLmwpcmV0dXJuIGM9YS5sW2JdLGM9PT1oZj9hLmxbYl09W106Y30sbGY9ZnVuY3Rpb24oYSxiKXthPUIoYSxiKTtyZXR1cm4gbnVsbD09YT9hOithfSx4PWZ1bmN0aW9uKGEsYil7YT1CKGEsYik7cmV0dXJuIG51bGw9PWE/YTohIWF9LG1mPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpnZiYmYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/VWUoYSk6bnVsbH0sbmY9ZnVuY3Rpb24oYSxiLGMpe2E9QihhLGIpO3JldHVybiBudWxsPT1hP2M6YX0sb2Y9ZnVuY3Rpb24oYSl7YT14KGEsMTIpO3JldHVybiBudWxsPT1hPyExOmF9LHBmPWZ1bmN0aW9uKGEpe2E9bGYoYSwyKTtyZXR1cm4gbnVsbD09YT8xOmF9LEQ9ZnVuY3Rpb24oYSxiLGMpe2I8YS5vP2EuaWFbYithLnZdPWM6KGpmKGEpLGEubFtiXT1jKTtyZXR1cm4gYX0scmY9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBxZihhLGIsYywhMSl9LHFmPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kP0QoYSxiLGMpOmI8YS5vP2EuaWFbYithLnZdPW51bGw6KGpmKGEpLGRlbGV0ZSBhLmxbYl0pO3JldHVybiBhfSxzZj1mdW5jdGlvbihhLGIsYyl7QihhLGIpLnB1c2goYyl9LE89ZnVuY3Rpb24oYSxiLGMpe2Euanx8KGEuaj17fSk7aWYoIWEualtjXSl7dmFyIGQ9QihhLGMpO2QmJihhLmpbY109bmV3IGIoZCkpfXJldHVybiBhLmpbY119LHVmPWZ1bmN0aW9uKGEsYixjKXt0ZihhLGIsYyk7Yj1hLmpbY107Yj09aGYmJihiPWEualtjXT1bXSk7cmV0dXJuIGJ9LHRmPWZ1bmN0aW9uKGEsYixjKXthLmp8fChhLmo9e30pO2lmKCFhLmpbY10pe2Zvcih2YXIgZD1CKGEsYyksZT1bXSxmPTA7ZjxkLmxlbmd0aDtmKyspZVtmXT1uZXcgYihkW2ZdKTthLmpbY109ZX19LHZmPWZ1bmN0aW9uKGEsYixjKXthLmp8fChhLmo9e30pO3ZhciBkPWM/Yy5pYTpjO2EualtiXT1jO3JldHVybiBEKGEsYixkKX0sd2Y9ZnVuY3Rpb24oYSxiLGMpe2Euanx8KGEuaj17fSk7Yz1jfHxbXTtmb3IodmFyIGQ9W10sZT0wO2U8Yy5sZW5ndGg7ZSsrKWRbZV09Y1tlXS5pYTthLmpbYl09YztyZXR1cm4gRChhLGIsZCl9LHhmPWZ1bmN0aW9uKGEsYixjLGQpe3RmKGEsZCxiKTt2YXIgZT1hLmpbYl07ZXx8KGU9YS5qW2JdPVtdKTtjPWM/YzpuZXcgZDthPUIoYSxiKTtlLnB1c2goYyk7YS5wdXNoKGMuaWEpfTtNLnByb3RvdHlwZS5tPWdmP2Z1bmN0aW9uKCl7dmFyIGE9VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OO1VpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiBVZSh0aGlzKX07dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlhJiZ0aGlzLmlhLHlmKX1maW5hbGx5e1VpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTj1hfX06ZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pYSYmdGhpcy5pYSx5Zil9O3ZhciB5Zj1mdW5jdGlvbihhLGIpe3JldHVyblwibnVtYmVyXCIhPT10eXBlb2YgYnx8IWlzTmFOKGIpJiZJbmZpbml0eSE9PWImJi1JbmZpbml0eSE9PWI/YjpTdHJpbmcoYil9LHpmPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBhKGI/SlNPTi5wYXJzZShiKTpudWxsKX0sQWY9ZnVuY3Rpb24oYSl7aWYoQXJyYXkuaXNBcnJheShhKSl7Zm9yKHZhciBiPUFycmF5KGEubGVuZ3RoKSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY107bnVsbCE9ZCYmKGJbY109XCJvYmplY3RcIj09dHlwZW9mIGQ/QWYoZCk6ZCl9cmV0dXJuIGJ9aWYoZ2YmJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBuZXcgVWludDhBcnJheShhKTtiPXt9O2ZvcihjIGluIGEpZD1hW2NdLG51bGwhPWQmJihiW2NdPVwib2JqZWN0XCI9PXR5cGVvZiBkP0FmKGQpOmQpO3JldHVybiBifTt2YXIgQmY9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soQmYsTSk7dmFyIENmPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKENmLE0pO3ZhciBEZj1kb2N1bWVudCxFZj13aW5kb3c7dmFyIEZmPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKEZmLE0pO3ZhciBHZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhHZixNKTt2YXIgUGE9ZnVuY3Rpb24oYSl7dGhpcy5qPWF8fHtjb29raWU6XCJcIn19O1BhLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSExO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyl7dmFyIGU9Yy55ZTtkPWMudmR8fCExO3ZhciBmPWMuZG9tYWlufHx2b2lkIDA7dmFyIGc9Yy5wYXRofHx2b2lkIDA7dmFyIGg9Yy53Y31pZigvWzs9XFxzXS8udGVzdChhKSl0aHJvdyBFcnJvcignSW52YWxpZCBjb29raWUgbmFtZSBcIicrYSsnXCInKTtpZigvWztcXHJcXG5dLy50ZXN0KGIpKXRocm93IEVycm9yKCdJbnZhbGlkIGNvb2tpZSB2YWx1ZSBcIicrYisnXCInKTt2b2lkIDA9PT1oJiYoaD0tMSk7Yz1mP1wiO2RvbWFpbj1cIitmOlwiXCI7Zz1nP1wiO3BhdGg9XCIrZzpcIlwiO2Q9ZD9cIjtzZWN1cmVcIjpcIlwiO2g9MD5oP1wiXCI6MD09aD9cIjtleHBpcmVzPVwiKyhuZXcgRGF0ZSgxOTcwLDEsMSkpLnRvVVRDU3RyaW5nKCk6XCI7ZXhwaXJlcz1cIisobmV3IERhdGUoVGMoKSsxRTMqaCkpLnRvVVRDU3RyaW5nKCk7dGhpcy5qLmNvb2tpZT1hK1wiPVwiK2IrYytnK2grZCsobnVsbCE9ZT9cIjtzYW1lc2l0ZT1cIitlOlwiXCIpfTtQYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWErXCI9XCIsZD0odGhpcy5qLmNvb2tpZXx8XCJcIikuc3BsaXQoXCI7XCIpLGU9MCxmO2U8ZC5sZW5ndGg7ZSsrKXtmPUdkKGRbZV0pO2lmKDA9PWYubGFzdEluZGV4T2YoYywwKSlyZXR1cm4gZi5zdWJzdHIoYy5sZW5ndGgpO2lmKGY9PWEpcmV0dXJuXCJcIn1yZXR1cm4gYn07UGEucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5qLmNvb2tpZX07dmFyIEhmPWZ1bmN0aW9uKGEpe3JldHVybihhPShuZXcgUGEoYSkpLmdldChcIkRBVEFfVVNFX0NPTlNFTlRcIixcIlwiKSk/YTpudWxsfSxJZj1mdW5jdGlvbihhKXt2YXIgYj0oYj0obmV3IFBhKGEpKS5nZXQoXCJGQ0NEQ0ZcIixcIlwiKSk/YjpudWxsO3RyeXt2YXIgYz1iP3pmKEZmLGIpOm51bGx9Y2F0Y2goZCl7Yz1udWxsfWlmKCFjKXJldHVybiBIZihhKTtjPU8oYyxHZiwzKTtpZighY3x8bnVsbD09QihjLDEpKXJldHVybiBIZihhKTthPUIoYywyKTtiPURhdGUubm93KCk7aWYoYSl7aWYoYjxhfHxiPmErMzM2OTZFNilyZXR1cm4gbnVsbH1lbHNlIHJldHVybiBudWxsO3JldHVybiBCKGMsMSl9O3ZhciBLZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsSmYsbnVsbCl9O0soS2YsTSk7dmFyIEpmPVsxLDIsMyw0XTt2YXIgZGE7ZGE9dmEoZnVuY3Rpb24oKXt2YXIgYT0hMTt0cnl7dmFyIGI9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXthPSEwfX0pO18uci5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLG51bGwsYil9Y2F0Y2goYyl7fXJldHVybiBhfSk7Xy52PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBhLmFkZEV2ZW50TGlzdGVuZXI/KGEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsZWEoZCkpLCEwKTohMX07Xy5xYj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYS5yZW1vdmVFdmVudExpc3RlbmVyPyhhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLGVhKGQpKSwhMCk6ITF9O3ZhciBMZj1mdW5jdGlvbihhKXt0aGlzLmo9dGhpcy5vPXRoaXMuQT0wO3RoaXMubD1hO3RoaXMubT10aGlzLnY9MH07TGYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt0aGlzLkErPWEuQTt0aGlzLm8rPWEubzt0aGlzLmorPWEuajt0aGlzLmwrPWEubDt0aGlzLnYrPWEudjt0aGlzLm0rPWEubX07dmFyIE9mPWZ1bmN0aW9uKGEsYixjKXtcIm51bWJlclwiPT09dHlwZW9mIGE/KHRoaXMuaj1NZihhLGJ8fDAsY3x8MSksTmYodGhpcyxjfHwxKSk6Xy5NYyhhKT8odGhpcy5qPU1mKGEuZ2V0RnVsbFllYXIoKSxhLmdldE1vbnRoKCksYS5nZXREYXRlKCkpLE5mKHRoaXMsYS5nZXREYXRlKCkpKToodGhpcy5qPW5ldyBEYXRlKFRjKCkpLGE9dGhpcy5qLmdldERhdGUoKSx0aGlzLmouc2V0SG91cnMoMCksdGhpcy5qLnNldE1pbnV0ZXMoMCksdGhpcy5qLnNldFNlY29uZHMoMCksdGhpcy5qLnNldE1pbGxpc2Vjb25kcygwKSxOZih0aGlzLGEpKX0sTWY9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IERhdGUoYSxiLGMpOzA8PWEmJjEwMD5hJiZiLnNldEZ1bGxZZWFyKGIuZ2V0RnVsbFllYXIoKS0xOTAwKTtyZXR1cm4gYn07Xy5wPU9mLnByb3RvdHlwZTtfLnAuZ2V0RnVsbFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmdldEZ1bGxZZWFyKCl9O18ucC5nZXRNb250aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmouZ2V0TW9udGgoKX07Xy5wLmdldERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmdldERhdGUoKX07Xy5wLmdldFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmdldFRpbWUoKX07Xy5wLnNldD1mdW5jdGlvbihhKXt0aGlzLmo9bmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLGEuZ2V0TW9udGgoKSxhLmdldERhdGUoKSl9O18ucC5hZGQ9ZnVuY3Rpb24oYSl7aWYoYS5BfHxhLm8pe3ZhciBiPXRoaXMuZ2V0TW9udGgoKSthLm8rMTIqYS5BLGM9dGhpcy5nZXRGdWxsWWVhcigpK01hdGguZmxvb3IoYi8xMik7YiU9MTI7MD5iJiYoYis9MTIpO2E6e3N3aXRjaChiKXtjYXNlIDE6dmFyIGQ9MCE9YyU0fHwwPT1jJTEwMCYmMCE9YyU0MDA/Mjg6Mjk7YnJlYWsgYTtjYXNlIDU6Y2FzZSA4OmNhc2UgMTA6Y2FzZSAzOmQ9MzA7YnJlYWsgYX1kPTMxfWQ9TWF0aC5taW4oZCx0aGlzLmdldERhdGUoKSk7dGhpcy5qLnNldERhdGUoMSk7dGhpcy5qLnNldEZ1bGxZZWFyKGMpO3RoaXMuai5zZXRNb250aChiKTt0aGlzLmouc2V0RGF0ZShkKX1hLmomJihhPW5ldyBEYXRlKChuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksdGhpcy5nZXRNb250aCgpLHRoaXMuZ2V0RGF0ZSgpLDEyKSkuZ2V0VGltZSgpKzg2NEU1KmEuaiksdGhpcy5qLnNldERhdGUoMSksdGhpcy5qLnNldEZ1bGxZZWFyKGEuZ2V0RnVsbFllYXIoKSksdGhpcy5qLnNldE1vbnRoKGEuZ2V0TW9udGgoKSksdGhpcy5qLnNldERhdGUoYS5nZXREYXRlKCkpLE5mKHRoaXMsYS5nZXREYXRlKCkpKX07Xy5wLnliPWZ1bmN0aW9uKGEpe3JldHVyblt0aGlzLmdldEZ1bGxZZWFyKCksaWUodGhpcy5nZXRNb250aCgpKzEpLGllKHRoaXMuZ2V0RGF0ZSgpKV0uam9pbihhP1wiLVwiOlwiXCIpfTtfLnAudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55YigpfTt2YXIgTmY9ZnVuY3Rpb24oYSxiKXthLmdldERhdGUoKSE9YiYmYS5qLnNldFVUQ0hvdXJzKGEuai5nZXRVVENIb3VycygpKyhhLmdldERhdGUoKTxiPzE6LTEpKX07T2YucHJvdG90eXBlLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnZhbHVlT2YoKX07dmFyIFBmPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3RoaXMuaj1cIm51bWJlclwiPT09dHlwZW9mIGE/bmV3IERhdGUoYSxifHwwLGN8fDEsZHx8MCxlfHwwLGZ8fDAsZ3x8MCk6bmV3IERhdGUoYSYmYS5nZXRUaW1lP2EuZ2V0VGltZSgpOlRjKCkpfTtLKFBmLE9mKTt2YXIgUWY9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFBmO2Iuai5zZXRUaW1lKGEpO3JldHVybiBifTtQZi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe09mLnByb3RvdHlwZS5hZGQuY2FsbCh0aGlzLGEpO2EubCYmdGhpcy5qLnNldFVUQ0hvdXJzKHRoaXMuai5nZXRVVENIb3VycygpK2EubCk7YS52JiZ0aGlzLmouc2V0VVRDTWludXRlcyh0aGlzLmouZ2V0VVRDTWludXRlcygpK2Eudik7YS5tJiZ0aGlzLmouc2V0VVRDU2Vjb25kcyh0aGlzLmouZ2V0VVRDU2Vjb25kcygpK2EubSl9O1BmLnByb3RvdHlwZS55Yj1mdW5jdGlvbihhKXt2YXIgYj1PZi5wcm90b3R5cGUueWIuY2FsbCh0aGlzLGEpO3JldHVybiBhP2IrXCJUXCIraWUodGhpcy5qLmdldEhvdXJzKCkpK1wiOlwiK2llKHRoaXMuai5nZXRNaW51dGVzKCkpK1wiOlwiK2llKHRoaXMuai5nZXRTZWNvbmRzKCkpOmIrXCJUXCIraWUodGhpcy5qLmdldEhvdXJzKCkpK2llKHRoaXMuai5nZXRNaW51dGVzKCkpK2llKHRoaXMuai5nZXRTZWNvbmRzKCkpfTtQZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55YigpfTt2YXIgUmY9IV8udWV8fDk8PU51bWJlcihPZSksU2Y9Xy51ZXx8dGV8fHllO18ueWE9ZnVuY3Rpb24oYSxiKXt0aGlzLng9dm9pZCAwIT09YT9hOjA7dGhpcy55PXZvaWQgMCE9PWI/YjowfTtfLnlhLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguY2VpbCh0aGlzLngpO3RoaXMueT1NYXRoLmNlaWwodGhpcy55KTtyZXR1cm4gdGhpc307Xy55YS5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpO3RoaXMueT1NYXRoLmZsb29yKHRoaXMueSk7cmV0dXJuIHRoaXN9O18ueWEucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGgucm91bmQodGhpcy54KTt0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpO3JldHVybiB0aGlzfTtfLlRmPWZ1bmN0aW9uKGEsYil7dGhpcy53aWR0aD1hO3RoaXMuaGVpZ2h0PWJ9O18ucD1fLlRmLnByb3RvdHlwZTtfLnAuYXNwZWN0UmF0aW89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWR0aC90aGlzLmhlaWdodH07Xy5wLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hKHRoaXMud2lkdGgqdGhpcy5oZWlnaHQpfTtfLnAuY2VpbD1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5jZWlsKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguY2VpbCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O18ucC5mbG9vcj1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5wLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTt2YXIgV2YsWWYsWGYsYWcsYmcsZGcsaGcsaWcsVWY7V2Y9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bmV3IFVmKF8uVmYoYSkpOlVjfHwoVWM9bmV3IFVmKX07WWY9ZnVuY3Rpb24oYSxiKXtsZChiLGZ1bmN0aW9uKGMsZCl7YyYmXCJvYmplY3RcIj09dHlwZW9mIGMmJmMubGImJihjPWMuTmEoKSk7XCJzdHlsZVwiPT1kP2Euc3R5bGUuY3NzVGV4dD1jOlwiY2xhc3NcIj09ZD9hLmNsYXNzTmFtZT1jOlwiZm9yXCI9PWQ/YS5odG1sRm9yPWM6WGYuaGFzT3duUHJvcGVydHkoZCk/YS5zZXRBdHRyaWJ1dGUoWGZbZF0sYyk6MD09ZC5sYXN0SW5kZXhPZihcImFyaWEtXCIsMCl8fDA9PWQubGFzdEluZGV4T2YoXCJkYXRhLVwiLDApP2Euc2V0QXR0cmlidXRlKGQsYyk6YVtkXT1jfSl9O1hmPXtjZWxscGFkZGluZzpcImNlbGxQYWRkaW5nXCIsY2VsbHNwYWNpbmc6XCJjZWxsU3BhY2luZ1wiLGNvbHNwYW46XCJjb2xTcGFuXCIsZnJhbWVib3JkZXI6XCJmcmFtZUJvcmRlclwiLGhlaWdodDpcImhlaWdodFwiLG1heGxlbmd0aDpcIm1heExlbmd0aFwiLG5vbmNlOlwibm9uY2VcIixyb2xlOlwicm9sZVwiLHJvd3NwYW46XCJyb3dTcGFuXCIsdHlwZTpcInR5cGVcIix1c2VtYXA6XCJ1c2VNYXBcIix2YWxpZ246XCJ2QWxpZ25cIix3aWR0aDpcIndpZHRoXCJ9O18uJGY9ZnVuY3Rpb24oYSl7YT1hLmRvY3VtZW50O2E9Xy5aZihhKT9hLmRvY3VtZW50RWxlbWVudDphLmJvZHk7cmV0dXJuIG5ldyBfLlRmKGEuY2xpZW50V2lkdGgsYS5jbGllbnRIZWlnaHQpfTthZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5zY3JvbGxpbmdFbGVtZW50P2Euc2Nyb2xsaW5nRWxlbWVudDoheWUmJl8uWmYoYSk/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudH07Xy5jZz1mdW5jdGlvbihhKXtyZXR1cm4gYT9iZyhhKTp3aW5kb3d9O2JnPWZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudFdpbmRvd3x8YS5kZWZhdWx0Vmlld307ZGc9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoaCl7aCYmYi5hcHBlbmRDaGlsZChcInN0cmluZ1wiPT09dHlwZW9mIGg/YS5jcmVhdGVUZXh0Tm9kZShoKTpoKX1mb3IodmFyIGU9MjtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXTtpZighS2MoZil8fF8uTWMoZikmJjA8Zi5ub2RlVHlwZSlkKGYpO2Vsc2V7YTp7aWYoZiYmXCJudW1iZXJcIj09dHlwZW9mIGYubGVuZ3RoKXtpZihfLk1jKGYpKXt2YXIgZz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBmLml0ZW18fFwic3RyaW5nXCI9PXR5cGVvZiBmLml0ZW07YnJlYWsgYX1pZihMYyhmKSl7Zz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBmLml0ZW07YnJlYWsgYX19Zz0hMX1fLlZjKGc/YmQoZik6ZixkKX19fTtfLmVnPWZ1bmN0aW9uKGEsYil7Yj1TdHJpbmcoYik7XCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIj09PWEuY29udGVudFR5cGUmJihiPWIudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGEuY3JlYXRlRWxlbWVudChiKX07Xy5aZj1mdW5jdGlvbihhKXtyZXR1cm5cIkNTUzFDb21wYXRcIj09YS5jb21wYXRNb2RlfTtfLmZnPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLnBhcmVudE5vZGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpOm51bGx9O18uZ2c9ZnVuY3Rpb24oYSl7dmFyIGI7aWYoU2YmJiEoXy51ZSYmTGUoXCI5XCIpJiYhTGUoXCIxMFwiKSYmXy5yLlNWR0VsZW1lbnQmJmEgaW5zdGFuY2VvZiBfLnIuU1ZHRWxlbWVudCkmJihiPWEucGFyZW50RWxlbWVudCkpcmV0dXJuIGI7Yj1hLnBhcmVudE5vZGU7cmV0dXJuIF8uTWMoYikmJjE9PWIubm9kZVR5cGU/YjpudWxsfTtfLlZmPWZ1bmN0aW9uKGEpe3JldHVybiA5PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50fHxhLmRvY3VtZW50fTtoZz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuY29udGVudFdpbmRvd3x8KGEuY29udGVudERvY3VtZW50P18uY2coYS5jb250ZW50RG9jdW1lbnQpOm51bGwpfWNhdGNoKGIpe31yZXR1cm4gbnVsbH07aWc9ZnVuY3Rpb24oYSxiKXtpZig5PT1hLm5vZGVUeXBlKXZhciBjPVthLmRvY3VtZW50RWxlbWVudF07ZWxzZSBmb3IoYz1bXSxhPWEubGFzdEVsZW1lbnRDaGlsZDthO2E9YS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKWMucHVzaChhKTtmb3IoOzA8Yy5sZW5ndGg7KXthPWMucG9wKCk7aWYoYihhKSlyZXR1cm4gYTtmb3IoYT1hLmxhc3RFbGVtZW50Q2hpbGQ7YTthPWEucHJldmlvdXNFbGVtZW50U2libGluZyljLnB1c2goYSl9cmV0dXJuIG51bGx9O1VmPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfHxfLnIuZG9jdW1lbnR8fGRvY3VtZW50fTtVZi5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5qLGU9YXJndW1lbnRzLGY9U3RyaW5nKGVbMF0pLGc9ZVsxXTtpZighUmYmJmcmJihnLm5hbWV8fGcudHlwZSkpe2Y9W1wiPFwiLGZdO2cubmFtZSYmZi5wdXNoKCcgbmFtZT1cIicsZ2UoZy5uYW1lKSwnXCInKTtpZihnLnR5cGUpe2YucHVzaCgnIHR5cGU9XCInLGdlKGcudHlwZSksJ1wiJyk7dmFyIGg9e307cGQoaCxnKTtkZWxldGUgaC50eXBlO2c9aH1mLnB1c2goXCI+XCIpO2Y9Zi5qb2luKFwiXCIpfWY9Xy5lZyhkLGYpO2cmJihcInN0cmluZ1wiPT09dHlwZW9mIGc/Zi5jbGFzc05hbWU9ZzpBcnJheS5pc0FycmF5KGcpP2YuY2xhc3NOYW1lPWcuam9pbihcIiBcIik6WWYoZixnKSk7MjxlLmxlbmd0aCYmZGcoZCxmLGUpO3JldHVybiBmfTt2YXIgamc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5lZyhhLmosYil9O3ZhciBsZz1mdW5jdGlvbihhKXtrZygpO3JldHVybiBCZChhKX0sa2c9Xy5IYzt2YXIgbWc9ZnVuY3Rpb24oKXtyZXR1cm4gTChcImlQYWRcIil8fEwoXCJBbmRyb2lkXCIpJiYhTChcIk1vYmlsZVwiKXx8TChcIlNpbGtcIil9O3ZhciBvZyxwZyxlYjtfLm5nPS9eKD86KFteOi8/Iy5dKyk6KT8oPzpcXC9cXC8oPzooW15cXFxcLz8jXSopQCk/KFteXFxcXC8/I10qPykoPzo6KFswLTldKykpPyg/PVtcXFxcLz8jXXwkKSk/KFtePyNdKyk/KD86XFw/KFteI10qKSk/KD86IyhbXFxzXFxTXSopKT8kLztvZz1mdW5jdGlvbihhKXtyZXR1cm4gYT9kZWNvZGVVUkkoYSk6YX07cGc9ZnVuY3Rpb24oYSxiLGMpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspcGcoYSxTdHJpbmcoYltkXSksYyk7ZWxzZSBudWxsIT1iJiZjLnB1c2goYSsoXCJcIj09PWI/XCJcIjpcIj1cIitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGIpKSkpfTtlYj0vI3wkLzt2YXIgcWcsc2csaGEscmcsdGcsdWcsd2EseGcsd2cseWcsemcsQmcsQ2csdmcsRWcsRmcsRGcsR2csSWcsSmcsS2csTGcsTWcsTmcsT2csUGcsZmEsUWcsUmcsU2csVWcsV2csWWcsJGcsYWgsWmcsYmgsY2gsZGgsZWgsZmgsZ2gsaGgsaWgsamgsYmIsa2gsbGgsbWg7cWc9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiEhYSYmbnVsbCE9YS5sb2NhdGlvbi5ocmVmJiZzZShhLFwiZm9vXCIpfWNhdGNoKGIpe3JldHVybiExfX07c2c9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPV8ucixjPTA7YiYmNDA+YysrJiYoIXFnKGIpfHwhYShiKSk7KWI9cmcoYil9O2hhPWZ1bmN0aW9uKCl7dmFyIGE9Xy5yO3NnKGZ1bmN0aW9uKGIpe2E9YjtyZXR1cm4hMX0pO3JldHVybiBhfTtyZz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YS5wYXJlbnQ7aWYoYiYmYiE9YSlyZXR1cm4gYn1jYXRjaChjKXt9cmV0dXJuIG51bGx9O3RnPWZ1bmN0aW9uKGEpe3JldHVybiBxZyhhLnRvcCk/YS50b3A6bnVsbH07dWc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7QWEoYyxcInN0cmluZ1wiPT09dHlwZW9mIGI/bGcoYik6Yik7cmV0dXJuKGE9YS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKVswXSkmJmEucGFyZW50Tm9kZT8oYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLGEpLGMpOm51bGx9O3dhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIuZ2V0Q29tcHV0ZWRTdHlsZT9iLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKTphLmN1cnJlbnRTdHlsZX07eGc9ZnVuY3Rpb24oYSxiKXtpZighdmcoKSl7dmFyIGM9TWF0aC5yYW5kb20oKTtpZihjPGIpcmV0dXJuIGM9d2coXy5yKSxhW01hdGguZmxvb3IoYyphLmxlbmd0aCldfXJldHVybiBudWxsfTt3Zz1mdW5jdGlvbihhKXtpZighYS5jcnlwdG8pcmV0dXJuIE1hdGgucmFuZG9tKCk7dHJ5e3ZhciBiPW5ldyBVaW50MzJBcnJheSgxKTthLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYik7cmV0dXJuIGJbMF0vNjU1MzYvNjU1MzZ9Y2F0Y2goYyl7cmV0dXJuIE1hdGgucmFuZG9tKCl9fTtfLkpiPWZ1bmN0aW9uKGEsYixjKXtpZihhKWZvcih2YXIgZCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGQpJiZiLmNhbGwoYyxhW2RdLGQsYSl9O3lnPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpKXJldHVybiExO3JldHVybiEwfTt6Zz1mdW5jdGlvbihhKXt2YXIgYj1bXTtfLkpiKGEsZnVuY3Rpb24oYyxkKXtiLnB1c2goZCl9KTtyZXR1cm4gYn07Xy5BZz1mdW5jdGlvbihhKXt2YXIgYj1bXTtfLkpiKGEsZnVuY3Rpb24oYyl7Yi5wdXNoKGMpfSk7cmV0dXJuIGJ9O0JnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5kKGEsZnVuY3Rpb24oYyxkKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsZCkmJmIoYyxkKX0pfTtDZz1mdW5jdGlvbihhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT1iKXJldHVybiAwO2Zvcih2YXIgYz0zMDU0MTk4OTYsZD0wO2Q8YjtkKyspY149KGM8PDUpKyhjPj4yKSthLmNoYXJDb2RlQXQoZCkmNDI5NDk2NzI5NTtyZXR1cm4gMDxjP2M6NDI5NDk2NzI5NitjfTt2Zz12YShmdW5jdGlvbigpe3JldHVybiBfLlhjKFtcIkdvb2dsZSBXZWIgUHJldmlld1wiLFwiTWVkaWFwYXJ0bmVycy1Hb29nbGVcIixcIkdvb2dsZS1SZWFkLUFsb3VkXCIsXCJHb29nbGUtQWR3b3Jkc1wiXSxEZyl8fDFFLTQ+TWF0aC5yYW5kb20oKX0pO0VnPWZ1bmN0aW9uKGEpe3JldHVybiB2ZygpP251bGw6TWF0aC5mbG9vcigxRTMqd2coYSkpfTtGZz1mdW5jdGlvbihhLGIpe3RyeXtpZihhKXJldHVybiBhLnNldEl0ZW0oXCJnb29nbGVfZXhwZXJpbWVudF9tb2RcIixiKSxifWNhdGNoKGMpe31yZXR1cm4gbnVsbH07RGc9ZnVuY3Rpb24oYSl7cmV0dXJuLTEhPVZkLmluZGV4T2YoYSl9O0dnPS9eKC0/WzAtOS5dezEsMzB9KSQvO18uSGc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gR2cudGVzdChhKSYmKGE9TnVtYmVyKGEpLCFpc05hTihhKSk/YTp2b2lkIDA9PWI/bnVsbDpifTtJZz1mdW5jdGlvbigpe3JldHVybi9edHJ1ZSQvLnRlc3QoXCJmYWxzZVwiKX07Smc9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ITA6Yjt0cnl7Zm9yKHZhciBjPW51bGw7YyE9YTtjPWEsYT1hLnBhcmVudClzd2l0Y2goYS5sb2NhdGlvbi5wcm90b2NvbCl7Y2FzZSBcImh0dHBzOlwiOnJldHVybiEwO2Nhc2UgXCJmaWxlOlwiOnJldHVybiBiO2Nhc2UgXCJodHRwOlwiOnJldHVybiExfX1jYXRjaChkKXt9cmV0dXJuITB9O0tnPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVyblwiXCI7dmFyIGI9Ly4qWyYjP11nb29nbGVfZGVidWcoPVteJl0qKT8oJi4qKT8kLzt0cnl7dmFyIGM9Yi5leGVjKGRlY29kZVVSSUNvbXBvbmVudChhKSk7aWYoYylyZXR1cm4gY1sxXSYmMTxjWzFdLmxlbmd0aD9jWzFdLnN1YnN0cmluZygxKTpcInRydWVcIn1jYXRjaChkKXt9cmV0dXJuXCJcIn07TGc9e01kOlwiYWxsb3ctZm9ybXNcIixOZDpcImFsbG93LW1vZGFsc1wiLE9kOlwiYWxsb3ctb3JpZW50YXRpb24tbG9ja1wiLFBkOlwiYWxsb3ctcG9pbnRlci1sb2NrXCIsUWQ6XCJhbGxvdy1wb3B1cHNcIixSZDpcImFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveFwiLFNkOlwiYWxsb3ctcHJlc2VudGF0aW9uXCIsVGQ6XCJhbGxvdy1zYW1lLW9yaWdpblwiLFVkOlwiYWxsb3ctc2NyaXB0c1wiLFZkOlwiYWxsb3ctdG9wLW5hdmlnYXRpb25cIixXZDpcImFsbG93LXRvcC1uYXZpZ2F0aW9uLWJ5LXVzZXItYWN0aXZhdGlvblwifTtNZz12YShmdW5jdGlvbigpe3JldHVybiBfLkFnKExnKX0pO05nPWZ1bmN0aW9uKGEpe3ZhciBiPU1nKCk7cmV0dXJuIGEubGVuZ3RoP18uVGEoYixmdW5jdGlvbihjKXtyZXR1cm4hXy4kYyhhLGMpfSk6Yn07T2c9ZnVuY3Rpb24oKXt2YXIgYT1fLmVnKGRvY3VtZW50LFwiSUZSQU1FXCIpLGI9e307Xy5WYyhNZygpLGZ1bmN0aW9uKGMpe2Euc2FuZGJveCYmYS5zYW5kYm94LnN1cHBvcnRzJiZhLnNhbmRib3guc3VwcG9ydHMoYykmJihiW2NdPSEwKX0pO3JldHVybiBifTtQZz1mdW5jdGlvbihhKXthPWEmJmEudG9TdHJpbmcmJmEudG9TdHJpbmcoKTtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGEmJi0xIT1hLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpfTtmYT1mdW5jdGlvbihhLGIpe3RyeXtyZXR1cm4hKCFhLmZyYW1lc3x8IWEuZnJhbWVzW2JdKX1jYXRjaChjKXtyZXR1cm4hMX19O1FnPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7NTA+YzsrK2Mpe2lmKGZhKGEsYikpcmV0dXJuIGE7aWYoIShhPXJnKGEpKSlicmVha31yZXR1cm4gbnVsbH07Umc9dmEoZnVuY3Rpb24oKXtyZXR1cm4hbWcoKSYmKEwoXCJpUG9kXCIpfHxMKFwiaVBob25lXCIpfHxMKFwiQW5kcm9pZFwiKXx8TChcIklFTW9iaWxlXCIpKT8yOm1nKCk/MTowfSk7U2c9ZnVuY3Rpb24oYSxiKXt2YXIgYztmb3IoYz12b2lkIDA9PT1jPzEwMDpjO2EmJmMtLTspe2lmKGE9PWIpcmV0dXJuITA7YT1hLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9O18uWGc9ZnVuY3Rpb24oYSxiKXthLnN0eWxlLnNldFByb3BlcnR5P18uSmIoYixmdW5jdGlvbihjLGQpe2Euc3R5bGUuc2V0UHJvcGVydHkoZCxjLFwiaW1wb3J0YW50XCIpfSk6YS5zdHlsZS5jc3NUZXh0PV8uVGcoVWcoXy5WZyhhLnN0eWxlLmNzc1RleHQpLFdnKGIsZnVuY3Rpb24oYyl7cmV0dXJuIGMrXCIgIWltcG9ydGFudFwifSkpKX07VWc9Xy5BKE9iamVjdCxcImFzc2lnblwiKXx8ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoZClmb3IodmFyIGUgaW4gZClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKSYmKGFbZV09ZFtlXSl9cmV0dXJuIGF9O1dnPWZ1bmN0aW9uKGEsYil7dmFyIGM9e30sZDtmb3IoZCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGQpJiYoY1tkXT1iLmNhbGwodm9pZCAwLGFbZF0sZCxhKSk7cmV0dXJuIGN9O1lnPWZ1bmN0aW9uKGEsYixjKXtmb3IoYz12b2lkIDA9PT1jPzEwMDpjO2EmJmMtLSYmITEhPT1iKGEpOylhPWEucGFyZW50RWxlbWVudH07JGc9ZnVuY3Rpb24oYSl7cmV0dXJuIFpnKGEsZnVuY3Rpb24oYil7cmV0dXJuXCJmaXhlZFwiPT1iLnBvc2l0aW9ufHxcInN0aWNreVwiPT1iLnBvc2l0aW9ufSl9O2FoPWZ1bmN0aW9uKGEpe3JldHVybiBaZyhhLGZ1bmN0aW9uKGIpe3JldHVyblwibGVmdFwiPT1iW1wiZmxvYXRcIl18fFwicmlnaHRcIj09YltcImZsb2F0XCJdfHxcImxlZnRcIj09Yi5jc3NGbG9hdHx8XCJyaWdodFwiPT1iLmNzc0Zsb2F0fSl9O1pnPWZ1bmN0aW9uKGEsYil7dmFyIGM7Zm9yKGM9dm9pZCAwPT09Yz8xMDA6YzthJiZjLS07KXt2YXIgZD13YShhLHdpbmRvdyk7aWYoZCl7aWYoYihkKSlyZXR1cm4hMDthPWEucGFyZW50RWxlbWVudH19cmV0dXJuITF9O2JoPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiBudWxsO2E9YS50cmFuc2Zvcm07aWYoIWEpcmV0dXJuIG51bGw7YT1hLnJlcGxhY2UoL14uKlxcKChbMC05LiwgLV0rKVxcKSQvLFwiJDFcIikuc3BsaXQoLywgLyk7cmV0dXJuIDYhPWEubGVuZ3RoP251bGw6Xy5SYShhLHBhcnNlRmxvYXQpfTtfLlRnPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO18uSmIoYSxmdW5jdGlvbihjLGQpe251bGwhPWMmJlwiXCIhPT1jJiZiLnB1c2goZCtcIjpcIitjKX0pO3JldHVybiBiLmxlbmd0aD9iLmpvaW4oXCI7XCIpK1wiO1wiOlwiXCJ9O18uVmc9ZnVuY3Rpb24oYSl7dmFyIGI9e307aWYoYSl7dmFyIGM9L1xccyo6XFxzKi87Xy5WYygoYXx8XCJcIikuc3BsaXQoL1xccyo7XFxzKi8pLGZ1bmN0aW9uKGQpe2lmKGQpe3ZhciBlPWQuc3BsaXQoYyk7ZD1lWzBdO2U9ZVsxXTtkJiZlJiYoYltkLnRvTG93ZXJDYXNlKCldPWUpfX0pfXJldHVybiBifTtjaD1mdW5jdGlvbihhLGIpe2EmJmEuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtY29udGFpbmVyLWlkXCIsYil9O2RoPWZ1bmN0aW9uKGEpe18uci5jb25zb2xlJiZfLnIuY29uc29sZS53YXJuJiZfLnIuY29uc29sZS53YXJuKGEpfTtlaD1mdW5jdGlvbihhLGIpe2I9WWMoYSxiKTtpZigwPD1iKXt2YXIgYz1hW2JdO0FycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7cmV0dXJuIGN9cmV0dXJuIG51bGx9O2ZoPVtdO2doPWZ1bmN0aW9uKCl7dmFyIGE9Zmg7Zmg9W107YT1fLkYoYSk7Zm9yKHZhciBiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSl7Yj1iLnZhbHVlO3RyeXtiKCl9Y2F0Y2goYyl7fX19O2hoPWZ1bmN0aW9uKGEpe2ZoLnB1c2goYSk7MT09ZmgubGVuZ3RoJiYodC5Qcm9taXNlP3QuUHJvbWlzZS5yZXNvbHZlKCkudGhlbihnaCk6d2luZG93LnNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGUoZ2gpOnNldFRpbWVvdXQoZ2gsMCkpfTtpaD1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cXFxcKG58cnxcXFxcKS9nLGZ1bmN0aW9uKGIsYyl7cmV0dXJuXCJuXCI9PWM/XCJcXG5cIjpcInJcIj09Yz9cIlxcclwiOlwiXFxcXFwifSl9O2poPWZ1bmN0aW9uKCl7dmFyIGE9dm9pZCAwPT09YT93aW5kb3c6YTtyZXR1cm4oYT1vZyhhLmxvY2F0aW9uLmhyZWYubWF0Y2goXy5uZylbM118fG51bGwpKT9DZyhhKTpudWxsfTtiYj1mdW5jdGlvbihhKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGEuZ29vZ19wdnNpZCl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJnb29nX3B2c2lkXCIse3ZhbHVlOk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygyLDUyKSl9KX1jYXRjaChiKXt9cmV0dXJuIE51bWJlcihhLmdvb2dfcHZzaWQpfHwtMX07a2g9ZnVuY3Rpb24oYSl7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBhJiZpc0Zpbml0ZShhKSYmMD09YSUxJiYwPGF9O2xoPWZ1bmN0aW9uKGEpe3JldHVybiAwPT09YXx8a2goYSl9O21oPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtjLmlkPWE7Yy50ZXh0Q29udGVudD1iO18uWGcoYyx7aGVpZ2h0OlwiMjRweFwiLFwibGluZS1oZWlnaHRcIjpcIjI0cHhcIixcInRleHQtYWxpZ25cIjpcImNlbnRlclwiLFwidmVydGljYWwtYWxpZ25cIjpcIm1pZGRsZVwiLGNvbG9yOlwid2hpdGVcIixcImJhY2tncm91bmQtY29sb3JcIjpcImJsYWNrXCIsbWFyZ2luOlwiMFwiLFwiZm9udC1mYW1pbHlcIjpcIlJvYm90b1wiLFwiZm9udC1zdHlsZVwiOlwibm9ybWFsXCIsXCJmb250LXdlaWdodFwiOlwiNTAwXCIsXCJmb250LXNpemVcIjpcIjExcHhcIixcImxldHRlci1zcGFjaW5nXCI6XCIwLjA4ZW1cIn0pO3JldHVybiBjfTt2YXIgbmg9e2hlOjAsYmU6MSxhZToyLCRkOjMsa2U6NCxsZTo1LGZlOjYsY2U6N307dmFyIHBoPWZ1bmN0aW9uKCl7cmV0dXJuIGZhKF8uci50b3AsXCJnb29nbGVmY1ByZXNlbnRcIil9LHFoPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50O3RyeXt2YXIgYz1JZihiKTt2YXIgZD1jP3pmKEtmLGMpOm51bGx9Y2F0Y2goZSl7ZD1udWxsfWlmKCFkKXJldHVybiAwO2lmKHgoZCw3KSlyZXR1cm4gNDtpZihhKXtpZihfLiRjKEIoZCwzKSxhKSlyZXR1cm4gMjtpZihfLiRjKEIoZCw0KSxhKSlyZXR1cm4gM31yZXR1cm4gMX0scmg9dmEoZnVuY3Rpb24oKXt2YXIgYT0vWz8mXWZjKGNvbnNlbnQpPz1hbHdheXNzaG93KFsmI118JCkvO3RyeXtyZXR1cm4gYS50ZXN0KF8uci50b3AubG9jYXRpb24uaHJlZil9Y2F0Y2goYil7cmV0dXJuIGEudGVzdChfLnIubG9jYXRpb24uaHJlZil9fSksc2g9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD16ZyhuaCkubGVuZ3RoLGU9W10sZj0wO2Y8ZDtmKyspZVtmXT0wO3JoKCkmJihhPSEwKTtlWzBdPWE/MToyO2Q9dm9pZCAwIT09Yz9jOmlhKCk7ZVs1XT1kPzE6MjtlWzRdPTI7Yz0hIV8uci5nb29nbGVmY3x8cGgoKTtlWzFdPWM/MToyO2Y9cWgoYik7MCE9Zj9iPXtxYzpmLHJjOjN9OihmPV8uci50b3AsYj17cWM6ZmEoZixcImdvb2dsZWZjSW5hY3RpdmVcIik/NDpiJiZmYShmLFwiZ29vZ2xlZmNQQS1cIitiKT8yOmZhKGYsXCJnb29nbGVmY05QQVwiKT8zOjAscmM6Mn0pO2Y9YjtiPWYucWM7ZVtmLnJjXT1iO2lmKCFkKWE6c3dpdGNoKGIpe2Nhc2UgMjpjYXNlIDQ6ZD0hMTticmVhayBhO2Nhc2UgMzpkPSEwO2JyZWFrIGE7Y2FzZSAxOmQ9YTticmVhayBhO2RlZmF1bHQ6ZD0odm9pZCAwPT09Yz8hMTpjKSYmYX1yZXR1cm57RGU6YixyZDpkLHlkOjA9PWImJmEmJmMsJGM6ZS5qb2luKFwiLlwiKX19LHRoPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXNoKGEsYixkKTtlLnlkP18uci5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGgoYSxiLGMsZCl9LDFFMyk6YyhlKX07dmFyIHVoPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKHVoLE0pO18uUD1mdW5jdGlvbigpe3RoaXMubGE9dGhpcy5sYTt0aGlzLlU9dGhpcy5VfTtfLlAucHJvdG90eXBlLmxhPSExO18uUC5wcm90b3R5cGUuemE9ZnVuY3Rpb24oKXt0aGlzLmxhfHwodGhpcy5sYT0hMCx0aGlzLnYoKSl9O18ud2g9ZnVuY3Rpb24oYSxiKXtfLlIoYSxfLlNjKHZoLGIpKX07Xy5SPWZ1bmN0aW9uKGEsYil7YS5sYT9iKCk6KGEuVXx8KGEuVT1bXSksYS5VLnB1c2goYikpfTtfLlAucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtpZih0aGlzLlUpZm9yKDt0aGlzLlUubGVuZ3RoOyl0aGlzLlUuc2hpZnQoKSgpfTt2YXIgdmg9ZnVuY3Rpb24oYSl7YSYmXCJmdW5jdGlvblwiPT10eXBlb2YgYS56YSYmYS56YSgpfTt2YXIgeGg9ZnVuY3Rpb24oYSl7dGhpcy5sPTA7dGhpcy52PWF8fDEwMDt0aGlzLmo9W119O3hoLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5qW3RoaXMubF07dGhpcy5qW3RoaXMubF09YTt0aGlzLmw9KHRoaXMubCsxKSV0aGlzLnY7cmV0dXJuIGJ9O3hoLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7YT15aCh0aGlzLGEpO3JldHVybiB0aGlzLmpbYV19O3hoLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXthPXloKHRoaXMsYSk7dGhpcy5qW2FdPWJ9O3hoLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PXRoaXMuai5sZW5ndGh9O3ZhciB6aD1mdW5jdGlvbihhKXtmb3IodmFyIGI9YS5qLmxlbmd0aCxjPVtdLGQ9YS5qLmxlbmd0aC1hLmoubGVuZ3RoO2Q8YjtkKyspYy5wdXNoKGEuZ2V0KGQpKTtyZXR1cm4gY30seWg9ZnVuY3Rpb24oYSxiKXtpZihiPj1hLmoubGVuZ3RoKXRocm93IEVycm9yKFwiT3V0IG9mIGJvdW5kcyBleGNlcHRpb25cIik7cmV0dXJuIGEuai5sZW5ndGg8YS52P2I6KGEubCtOdW1iZXIoYikpJWEudn07dmFyIEJoPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/ZnVuY3Rpb24oKXtyZXR1cm4hMH06YztfLlAuY2FsbCh0aGlzKTt2YXIgZD10aGlzO3RoaXMubz1jO3RoaXMuaj1uZXcgeGgoMTAwKTt0aGlzLmw9W107dmFyIGU9ZnVuY3Rpb24oZil7aWYoZC5vKGYpJiYhZC5sYSl7ZC5qLmFkZChmKTtmb3IodmFyIGc9Xy5GKGQubCksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpQWgoaC52YWx1ZSxmKX19O18udihhLGIsZSkmJl8uUih0aGlzLGZ1bmN0aW9uKCl7Xy5xYihhLGIsZSl9KX07Xy5KKEJoLF8uUCk7dmFyIEFoPWZ1bmN0aW9uKGEsYil7dHJ5e2EoYil9Y2F0Y2goYyl7XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGMpfX0sQ2g9ZnVuY3Rpb24oYSxiKXtpZihhLmxhKXJldHVybiBmdW5jdGlvbigpe307Zm9yKHZhciBjPXt9LGQ9MDtkPGEuai5qLmxlbmd0aDtjPXtGYjpjLkZifSxkKyspYy5GYj1hLmouZ2V0KGQpLGhoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIEFoKGIsZS5GYil9fShjKSk7YS5sLnB1c2goYik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYWQoYS5sLGIpfX07QmgucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKTt2YXIgYT10aGlzLmo7YS5qLmxlbmd0aD0wO2EubD0wO3RoaXMubC5sZW5ndGg9MH07dmFyIEVoO18uRGg9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy50b3A9YTt0aGlzLnJpZ2h0PWI7dGhpcy5ib3R0b209Yzt0aGlzLmxlZnQ9ZH07RWg9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLkRoKGEudG9wLGEucmlnaHQsYS5ib3R0b20sYS5sZWZ0KX07Xy5EaC5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmNlaWwodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5jZWlsKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5jZWlsKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O18uRGgucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmZsb29yKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguZmxvb3IodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O18uRGgucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLnJvdW5kKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGgucm91bmQodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O3ZhciBGaD1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLmxlZnQ9YTt0aGlzLnRvcD1iO3RoaXMud2lkdGg9Yzt0aGlzLmhlaWdodD1kfSxHaD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8uRGgoYS50b3AsYS5sZWZ0K2Eud2lkdGgsYS50b3ArYS5oZWlnaHQsYS5sZWZ0KX0sSGg9ZnVuY3Rpb24oYSxiKXt2YXIgYz1NYXRoLm1heChhLmxlZnQsYi5sZWZ0KSxkPU1hdGgubWluKGEubGVmdCthLndpZHRoLGIubGVmdCtiLndpZHRoKTtpZihjPD1kKXt2YXIgZT1NYXRoLm1heChhLnRvcCxiLnRvcCk7YT1NYXRoLm1pbihhLnRvcCthLmhlaWdodCxiLnRvcCtiLmhlaWdodCk7aWYoZTw9YSlyZXR1cm4gbmV3IEZoKGMsZSxkLWMsYS1lKX1yZXR1cm4gbnVsbH07RmgucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5jZWlsKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtGaC5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5mbG9vcih0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguZmxvb3IodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307RmgucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O3ZhciBJaD17XCJBTVAtQ0FST1VTRUxcIjpcImFjXCIsXCJBTVAtRlgtRkxZSU5HLUNBUlBFVFwiOlwiZmNcIixcIkFNUC1MSUdIVEJPWFwiOlwibGJcIixcIkFNUC1TVElDS1ktQURcIjpcInNhXCJ9LEpoPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9fLnI6YTt2YXIgYj1hLmNvbnRleHR8fGEuQU1QX0NPTlRFWFRfREFUQTtpZighYil0cnl7Yj1hLnBhcmVudC5jb250ZXh0fHxhLnBhcmVudC5BTVBfQ09OVEVYVF9EQVRBfWNhdGNoKGMpe310cnl7aWYoYiYmYi5wYWdlVmlld0lkJiZiLmNhbm9uaWNhbFVybClyZXR1cm4gYn1jYXRjaChjKXt9cmV0dXJuIG51bGx9LEtoPWZ1bmN0aW9uKCl7dmFyIGE9SmgoKTtyZXR1cm4gYSYmYS5tb2RlPythLm1vZGUudmVyc2lvbnx8bnVsbDpudWxsfSxMaD1mdW5jdGlvbigpe3ZhciBhPUpoKCk7aWYoYSYmYS5jb250YWluZXIpe2E9YS5jb250YWluZXIuc3BsaXQoXCIsXCIpO2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKEloW2FbY11dfHxcInhcIik7cmV0dXJuIGIuam9pbigpfXJldHVybiBudWxsfSxNaD1mdW5jdGlvbigpe3ZhciBhPUpoKCk7cmV0dXJuIGEmJmEuaW5pdGlhbEludGVyc2VjdGlvbn0sTmg9ZnVuY3Rpb24oKXt2YXIgYT1KaCgpO3ZhciBiO3JldHVybihhPWEmJihiPWEuaW5pdGlhbExheW91dFJlY3QpJiZcIm51bWJlclwiPT09dHlwZW9mIGIudG9wJiZcIm51bWJlclwiPT09dHlwZW9mIGIubGVmdCYmXCJudW1iZXJcIj09PXR5cGVvZiBiLndpZHRoJiZcIm51bWJlclwiPT09dHlwZW9mIGIuaGVpZ2h0P25ldyBGaChiLmxlZnQsYi50b3AsYi53aWR0aCxiLmhlaWdodCk6bnVsbCk/bmV3IF8ueWEoYS5sZWZ0LGEudG9wKTooYj1NaCgpKSYmXy5NYyhiLnJvb3RCb3VuZHMpP25ldyBfLnlhKGIucm9vdEJvdW5kcy5sZWZ0K2IuYm91bmRpbmdDbGllbnRSZWN0LmxlZnQsYi5yb290Qm91bmRzLnRvcCtiLmJvdW5kaW5nQ2xpZW50UmVjdC50b3ApOm51bGx9LE9oPWZ1bmN0aW9uKGEpe3JldHVybihhPWF8fEpoKCkpP3FnKGEubWFzdGVyKT9hLm1hc3RlcjpudWxsOm51bGx9LFFoPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuYW1wSW5hYm94SWZyYW1lcz1hLmFtcEluYWJveElmcmFtZXN8fFtdLGY9ZnVuY3Rpb24oKXt9LGc9ZnVuY3Rpb24oayl7aWYoYS5hbXBJbmFib3hJbml0aWFsaXplZClmKCk7ZWxzZXt2YXIgbCxtPVwiYW1wLWluaS1sb2FkXCI9PT1rLmRhdGE7YS5hbXBJbmFib3hQZW5kaW5nTWVzc2FnZXMmJiFtJiYobD0vXmFtcC0oXFxkezE1LDIwfSk/Ly5leGVjKGsuZGF0YSkpJiYoYS5hbXBJbmFib3hQZW5kaW5nTWVzc2FnZXMucHVzaChrKSxQaChhLGxbMV0pKX19LGg9ZnVuY3Rpb24oKXt9O2ImJihlLnB1c2goYiksaD1mdW5jdGlvbigpe2EuQU1QJiZhLkFNUC5pbmFib3hVbnJlZ2lzdGVySWZyYW1lJiZhLkFNUC5pbmFib3hVbnJlZ2lzdGVySWZyYW1lKGIpO2FkKGUsYik7ZigpfSk7aWYoYS5hbXBJbmFib3hJbml0aWFsaXplZClyZXR1cm4gaDthLmFtcEluYWJveFBlbmRpbmdNZXNzYWdlcz1hLmFtcEluYWJveFBlbmRpbmdNZXNzYWdlc3x8W107YyYmL15cXGR7MTUsMjB9JC8udGVzdChjKSYmUGgoYSxjKTtkP2Y9Q2goZCxnKTplLmdvb2dsZV9hbXBfbGlzdGVuZXJfYWRkZWR8fChlLmdvb2dsZV9hbXBfbGlzdGVuZXJfYWRkZWQ9ITAsXy52KGEsXCJtZXNzYWdlXCIsZyksZj1mdW5jdGlvbigpe18ucWIoYSxcIm1lc3NhZ2VcIixnKX0pO3JldHVybiBofSxQaD1mdW5jdGlvbihhLGIpe2EuYW1wSW5hYm94SW5pdGlhbGl6ZWR8fGImJiEvXlxcZHsxNSwyMH0kLy50ZXN0KGIpfHxhLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmMkPVwiYW1wNGFkcy1ob3N0LXYwLmpzXCJdJyl8fHVnKGEuZG9jdW1lbnQsYj9KYSh2ZChcImh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnL3J0di8le2FtcFZlcnNpb259L2FtcDRhZHMtaG9zdC12MC5qc1wiKSx7YW1wVmVyc2lvbjpifSk6QmQodWQodmQoXCJodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy9hbXA0YWRzLWhvc3QtdjAuanNcIikpKSl9LFJoPSEhSmgoKSYmXy5yIT1fLnIudG9wLFNoPWZ1bmN0aW9uKGEpe2E9SmgoYSk7aWYoIWF8fCFfLk1jKGEuZGF0YSl8fFwic3RyaW5nXCIhPT10eXBlb2YgYS5kYXRhLnR5cGUpcmV0dXJuIG51bGw7YT1hLmRhdGEudHlwZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiZG91YmxlY2xpY2tcIj09YXx8XCJhZHNlbnNlXCI9PWE/bnVsbDphfTt2YXIgVmgsVWg7Xy5UaD1mdW5jdGlvbihhLGIpe2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzfHwoYS5nb29nbGVfaW1hZ2VfcmVxdWVzdHM9W10pO3ZhciBjPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtjLnNyYz1iO2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzLnB1c2goYyl9O1ZoPWZ1bmN0aW9uKGEsYil7dmFyIGM9XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9nZW5fMjA0P2lkPVwiK2I7Xy5KYihhLGZ1bmN0aW9uKGQsZSl7ZCYmKGMrPVwiJlwiK2UrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGQpKX0pO1VoKGMpfTtVaD1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3c7Yi5mZXRjaD9iLmZldGNoKGEse2tlZXBhbGl2ZTohMCxjcmVkZW50aWFsczpcImluY2x1ZGVcIixyZWRpcmVjdDpcImZvbGxvd1wiLG1ldGhvZDpcImdldFwiLG1vZGU6XCJuby1jb3JzXCJ9KTpfLlRoKGIsYSl9O3ZhciBqYT17fTt2YXIgbGE7dmFyIFdoPWZ1bmN0aW9uKCl7fSxYaD1mdW5jdGlvbihhLGIpe2thKGIpO3RoaXMuaj1hfTtfLkooWGgsV2gpO1hoLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07dmFyIFloPWZ1bmN0aW9uKCl7fSxaaD1mdW5jdGlvbihhLGIpe2thKGIpO3RoaXMuaj1hfTtfLkooWmgsWWgpO1poLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O3ZhciAkaD1mdW5jdGlvbigpe30sYWk9ZnVuY3Rpb24oYSxiKXtrYShiKTt0aGlzLmo9YX07Xy5KKGFpLCRoKTthaS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnRvU3RyaW5nKCl9O25ldyBaaChcImFib3V0OmJsYW5rXCIsamEpO25ldyBaaChcImFib3V0OmludmFsaWQjelRTelwiLGphKTt2YXIgZGksZmksZ2ksaGksaWksbmksTmI7Xy5jaT1mdW5jdGlvbihhLGIsYyl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKShiPV8uYmkoYSxiKSkmJihhLnN0eWxlW2JdPWMpO2Vsc2UgZm9yKHZhciBkIGluIGIpe2M9YTt2YXIgZT1iW2RdLGY9Xy5iaShjLGQpO2YmJihjLnN0eWxlW2ZdPWUpfX07ZGk9e307Xy5iaT1mdW5jdGlvbihhLGIpe3ZhciBjPWRpW2JdO2lmKCFjKXt2YXIgZD1fLmtlKGIpO2M9ZDt2b2lkIDA9PT1hLnN0eWxlW2RdJiYoZD0oeWU/XCJXZWJraXRcIjp4ZT9cIk1velwiOl8udWU/XCJtc1wiOnRlP1wiT1wiOm51bGwpK2xlKGQpLHZvaWQgMCE9PWEuc3R5bGVbZF0mJihjPWQpKTtkaVtiXT1jfXJldHVybiBjfTtfLmVpPWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5WZihhKTtyZXR1cm4gYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYT1jLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSk/YVtiXXx8YS5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxcIlwiOlwiXCJ9O2ZpPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZWkoYSxiKXx8KGEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlW2JdOm51bGwpfHxhLnN0eWxlJiZhLnN0eWxlW2JdfTtnaT1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYil7cmV0dXJue2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfX19O2hpPWZ1bmN0aW9uKGEpe2lmKF8udWUmJiEoODw9TnVtYmVyKE9lKSkpcmV0dXJuIGEub2Zmc2V0UGFyZW50O3ZhciBiPV8uVmYoYSksYz1maShhLFwicG9zaXRpb25cIiksZD1cImZpeGVkXCI9PWN8fFwiYWJzb2x1dGVcIj09Yztmb3IoYT1hLnBhcmVudE5vZGU7YSYmYSE9YjthPWEucGFyZW50Tm9kZSlpZigxMT09YS5ub2RlVHlwZSYmYS5ob3N0JiYoYT1hLmhvc3QpLGM9ZmkoYSxcInBvc2l0aW9uXCIpLGQ9ZCYmXCJzdGF0aWNcIj09YyYmYSE9Yi5kb2N1bWVudEVsZW1lbnQmJmEhPWIuYm9keSwhZCYmKGEuc2Nyb2xsV2lkdGg+YS5jbGllbnRXaWR0aHx8YS5zY3JvbGxIZWlnaHQ+YS5jbGllbnRIZWlnaHR8fFwiZml4ZWRcIj09Y3x8XCJhYnNvbHV0ZVwiPT1jfHxcInJlbGF0aXZlXCI9PWMpKXJldHVybiBhO3JldHVybiBudWxsfTtpaT1mdW5jdGlvbihhKXt2YXIgYj1fLlZmKGEpLGM9bmV3IF8ueWEoMCwwKTt2YXIgZD1iP18uVmYoYik6ZG9jdW1lbnQ7ZD0hXy51ZXx8OTw9TnVtYmVyKE9lKXx8Xy5aZihXZihkKS5qKT9kLmRvY3VtZW50RWxlbWVudDpkLmJvZHk7aWYoYT09ZClyZXR1cm4gYzthPWdpKGEpO2Q9V2YoYikuajtiPWFnKGQpO2Q9YmcoZCk7Yj1fLnVlJiZMZShcIjEwXCIpJiZkLnBhZ2VZT2Zmc2V0IT1iLnNjcm9sbFRvcD9uZXcgXy55YShiLnNjcm9sbExlZnQsYi5zY3JvbGxUb3ApOm5ldyBfLnlhKGQucGFnZVhPZmZzZXR8fGIuc2Nyb2xsTGVmdCxkLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCk7Yy54PWEubGVmdCtiLng7Yy55PWEudG9wK2IueTtyZXR1cm4gY307Xy5qaT1mdW5jdGlvbihhKXthPWdpKGEpO3JldHVybiBuZXcgXy55YShhLmxlZnQsYS50b3ApfTtfLmtpPWZ1bmN0aW9uKGEsYil7XCJudW1iZXJcIj09dHlwZW9mIGEmJihhPShiP01hdGgucm91bmQoYSk6YSkrXCJweFwiKTtyZXR1cm4gYX07Xy5saT1mdW5jdGlvbihhLGIpe2lmKFwibm9uZVwiIT1maShiLFwiZGlzcGxheVwiKSlyZXR1cm4gYShiKTt2YXIgYz1iLnN0eWxlLGQ9Yy5kaXNwbGF5LGU9Yy52aXNpYmlsaXR5LGY9Yy5wb3NpdGlvbjtjLnZpc2liaWxpdHk9XCJoaWRkZW5cIjtjLnBvc2l0aW9uPVwiYWJzb2x1dGVcIjtjLmRpc3BsYXk9XCJpbmxpbmVcIjthPWEoYik7Yy5kaXNwbGF5PWQ7Yy5wb3NpdGlvbj1mO2MudmlzaWJpbGl0eT1lO3JldHVybiBhfTtfLm1pPWZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0V2lkdGgsYz1hLm9mZnNldEhlaWdodCxkPXllJiYhYiYmIWM7cmV0dXJuKHZvaWQgMD09PWJ8fGQpJiZhLmdldEJvdW5kaW5nQ2xpZW50UmVjdD8oYT1naShhKSxuZXcgXy5UZihhLnJpZ2h0LWEubGVmdCxhLmJvdHRvbS1hLnRvcCkpOm5ldyBfLlRmKGIsYyl9O25pPWZ1bmN0aW9uKGEpe2lmKCFhLmdldEJvdW5kaW5nQ2xpZW50UmVjdClyZXR1cm4gbnVsbDthPV8ubGkoZ2ksYSk7cmV0dXJuIG5ldyBfLlRmKGEucmlnaHQtYS5sZWZ0LGEuYm90dG9tLWEudG9wKX07TmI9ZnVuY3Rpb24oYSxiKXthLnN0eWxlLmRpc3BsYXk9Yj9cIlwiOlwibm9uZVwifTt2YXIgcGk9ZnVuY3Rpb24oKXt2YXIgYT1vaSgpO1wiZ29vZ2xlX29ubG9hZF9maXJlZFwiaW4gYXx8KGEuZ29vZ2xlX29ubG9hZF9maXJlZD0hMSxfLnYoYSxcImxvYWRcIixmdW5jdGlvbigpe2EuZ29vZ2xlX29ubG9hZF9maXJlZD0hMH0pKX0scWk9ZnVuY3Rpb24oKXt2YXIgYT12b2lkIDA9PT1hP0VmOmE7dHJ5e3JldHVybiBhLmhpc3RvcnkubGVuZ3RofWNhdGNoKGIpe3JldHVybiAwfX0scmk9ZnVuY3Rpb24oYSl7YT1PaChKaChhKSl8fGE7YT1hLmdvb2dsZV91bmlxdWVfaWQ7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBhP2E6MH0sc2k9ISF3aW5kb3cuZ29vZ2xlX2FzeW5jX2lmcmFtZV9pZCx0aT1zaSYmd2luZG93LnBhcmVudHx8d2luZG93LG9pPWZ1bmN0aW9uKCl7aWYoc2kmJiFxZyh0aSkpe3ZhciBhPVwiLlwiK0RmLmRvbWFpbjt0cnl7Zm9yKDsyPGEuc3BsaXQoXCIuXCIpLmxlbmd0aCYmIXFnKHRpKTspRGYuZG9tYWluPWE9YS5zdWJzdHIoYS5pbmRleE9mKFwiLlwiKSsxKSx0aT13aW5kb3cucGFyZW50fWNhdGNoKGIpe31xZyh0aSl8fCh0aT13aW5kb3cpfXJldHVybiB0aX0sdWk9ZnVuY3Rpb24oKXt2YXIgYSxiPXdpbmRvdy5BY3RpdmVYT2JqZWN0O2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCl7aWYoKGE9bmF2aWdhdG9yLnBsdWdpbnNbXCJTaG9ja3dhdmUgRmxhc2hcIl0pJiZhLmRlc2NyaXB0aW9uKXJldHVybiBhLmRlc2NyaXB0aW9uLnJlcGxhY2UoLyhbYS16QS1aXXxcXHMpKy8sXCJcIikucmVwbGFjZSgvKFxccykrci8sXCIuXCIpfWVsc2V7aWYobmF2aWdhdG9yLnVzZXJBZ2VudCYmMDw9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiV2luZG93cyBDRVwiKSl7dmFyIGM9Mztmb3IoYT0xO2E7KXRyeXthPW5ldyBiKFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guXCIrKGMrMSkpLGMrK31jYXRjaChkKXthPW51bGx9cmV0dXJuIGMudG9TdHJpbmcoKX1pZihaZCgpKXthPW51bGw7dHJ5e2E9bmV3IGIoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC43XCIpfWNhdGNoKGQpe2M9MDt0cnl7YT1uZXcgYihcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjZcIiksYz02LGEuQWxsb3dTY3JpcHRBY2Nlc3M9XCJhbHdheXNcIn1jYXRjaChlKXtpZig2PT09YylyZXR1cm4gYy50b1N0cmluZygpfXRyeXthPW5ldyBiKFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2hcIil9Y2F0Y2goZSl7fX1pZihhKXJldHVybiBjPWEuR2V0VmFyaWFibGUoXCIkdmVyc2lvblwiKS5zcGxpdChcIiBcIilbMV0sYy5yZXBsYWNlKC8sL2csXCIuXCIpfX1yZXR1cm5cIjBcIn07dmFyIHZpPWZ1bmN0aW9uKGEpe3JldHVyblwiQ1NTMUNvbXBhdFwiPT1hLmNvbXBhdE1vZGU/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5fSx3aT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9fLnI6YjthPWEuc2Nyb2xsaW5nRWxlbWVudHx8dmkoYSk7cmV0dXJuIG5ldyBfLnlhKGIucGFnZVhPZmZzZXR8fGEuc2Nyb2xsTGVmdCxiLnBhZ2VZT2Zmc2V0fHxhLnNjcm9sbFRvcCl9LHNhPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4hKCFhfHwhKGEub2Zmc2V0V2lkdGh8fGEub2Zmc2V0SGVpZ2h0fHxhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKSl9Y2F0Y2goYil7cmV0dXJuITF9fTt2YXIgeGk9ZnVuY3Rpb24oYSxiLGMpe2EmJm51bGwhPT1iJiZiIT1iLnRvcCYmKGI9Yi50b3ApO3RyeXtyZXR1cm4odm9pZCAwPT09Yz8wOmMpPyhuZXcgXy5UZihiLmlubmVyV2lkdGgsYi5pbm5lckhlaWdodCkpLnJvdW5kKCk6Xy4kZihifHx3aW5kb3cpLnJvdW5kKCl9Y2F0Y2goZCl7cmV0dXJuIG5ldyBfLlRmKC0xMjI0NTkzMywtMTIyNDU5MzMpfX07dmFyIHlpPWZ1bmN0aW9uKGEpe3JldHVybiEhYSYmYS50b3A9PWF9LHppPWZ1bmN0aW9uKGEsYixjLGQpe2M9Y3x8YS5nb29nbGVfYWRfd2lkdGg7ZD1kfHxhLmdvb2dsZV9hZF9oZWlnaHQ7aWYoeWkoYSkpcmV0dXJuITE7dmFyIGU9Yi5kb2N1bWVudEVsZW1lbnQ7aWYoYyYmZCl7dmFyIGY9MSxnPTE7YS5pbm5lckhlaWdodD8oZj1hLmlubmVyV2lkdGgsZz1hLmlubmVySGVpZ2h0KTplJiZlLmNsaWVudEhlaWdodD8oZj1lLmNsaWVudFdpZHRoLGc9ZS5jbGllbnRIZWlnaHQpOmIuYm9keSYmKGY9Yi5ib2R5LmNsaWVudFdpZHRoLGc9Yi5ib2R5LmNsaWVudEhlaWdodCk7aWYoZz4yKmR8fGY+MipjKXJldHVybiExfXJldHVybiEwfSxBaT1mdW5jdGlvbigpe3ZhciBhPW9pKCk7aWYoYT09YS50b3ApcmV0dXJuIDA7Zm9yKDthJiZhIT1hLnRvcCYmcWcoYSk7YT1hLnBhcmVudCl7aWYoYS5zZl8pcmV0dXJuIDI7aWYoYS4kc2YpcmV0dXJuIDM7aWYoYS5pbkdwdElGKXJldHVybiA0O2lmKGEuaW5EYXBJRilyZXR1cm4gNX1yZXR1cm4gMX07dmFyIEJpPVsvXmh0dHBzPzpcXC9cXC8oc2VjdXJlKT9wdWJhZHNcXC5nXFwuZG91YmxlY2xpY2tcXC5uZXQoOlxcZCspPygkfFxcLykvaSwvXmh0dHBzPzpcXC9cXC8oZ29vZ2xlYWRzfGFkeClcXC5nXFwuZG91YmxlY2xpY2tcXC5uZXQoOlxcZCspPygkfFxcLykvaSwvXmh0dHBzPzpcXC9cXC8oPyFhZHgpYWQuKlxcLmRvdWJsZWNsaWNrXFwubmV0KDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvKHRwY3xwYWdlYWQyKVxcLmdvb2dsZXN5bmRpY2F0aW9uXFwuY29tKDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvd3d3XFwuZ29vZ2xldGFnc2VydmljZXNcXC5jb20oOlxcZCspPygkfFxcLykvaSwvXmh0dHBzPzpcXC9cXC9hZHNlcnZpY2VcXC5nb29nbGVcXC4oY29tP1xcLik/W2Etel17MiwzfSg6XFxkKyk/KCR8XFwvKS9pXSxDaT1mdW5jdGlvbihhKXtyZXR1cm4gXy5YYyhCaSxmdW5jdGlvbihiKXtyZXR1cm4gYi50ZXN0KGEpfSl9LERpPWZ1bmN0aW9uKGEpe2lmKGE9L1stXFx3XStcXC5bLVxcd10rJC8uZXhlYyhhKSl7YT1hWzBdLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBiPTAsYz0wO2M8YS5sZW5ndGg7KytjKWI9MzEqYithLmNoYXJDb2RlQXQoYyk+Pj4wO3N3aXRjaChiKXtjYXNlIDE5NjcyNjEzNjQ6cmV0dXJuIDA7Y2FzZSAzMTQ3NDkzNTQ2OnJldHVybiAxO2Nhc2UgMTU2NzM0NjQ2MTpyZXR1cm4gMjtjYXNlIDIxODMwNDE4Mzg6cmV0dXJuIDM7Y2FzZSA3NjMyMzYyNzk6cmV0dXJuIDQ7Y2FzZSAxMzQyMjc5ODAxOnJldHVybiA1O2Nhc2UgNTI2ODMxNzY5OnJldHVybiA2O2Nhc2UgMzUyODA2MDAyOnJldHVybiA3O2Nhc2UgMjc1NTA0ODkyNTpyZXR1cm4gODtjYXNlIDMzMDY4NDg0MDc6cmV0dXJuIDk7Y2FzZSAyMjA3MDAwOTIwOnJldHVybiAxMDtjYXNlIDQ4NDAzNzA0MDpyZXR1cm4gMTE7Y2FzZSAzNTA2ODcxMDU1OnJldHVybiAxMjtjYXNlIDY3MjE0Mzg0ODpyZXR1cm4gMTM7Y2FzZSAyNTI4NzUxMjI2OnJldHVybiAxNDtjYXNlIDI3NDQ4NTQ3Njg6cmV0dXJuIDE1O2Nhc2UgMzcwMzI3ODY2NTpyZXR1cm4gMTY7Y2FzZSAyMDE0NzQ5MTczOnJldHVybiAxNztjYXNlIDEzMzA2MzgyNDpyZXR1cm4gMTg7Y2FzZSAyNzQ5MzM0NjAyOnJldHVybiAxOTtjYXNlIDMxMzEyMzk4NDU6cmV0dXJuIDIwO2Nhc2UgMjA3NDA4Njc2MzpyZXR1cm4gMjE7Y2FzZSA3OTU3NzI0OTM6cmV0dXJuIDIyO2Nhc2UgMjkwODU3ODE5OnJldHVybiAyMztjYXNlIDMwMzU5NDc2MDY6cmV0dXJuIDI0O2Nhc2UgMjk4MzEzODAwMzpyZXR1cm4gMjU7Y2FzZSAyMTk3MTM4Njc2OnJldHVybiAyNjtjYXNlIDQyMTYwMTYxNjU6cmV0dXJuIDI3O2Nhc2UgMjM5ODAzNTI0OnJldHVybiAyODtjYXNlIDk3NTk5MzU3OTpyZXR1cm4gMjk7Y2FzZSAxNzk0OTQwMzM5OnJldHVybiAzMDtjYXNlIDEzMTQ0MjkxODY6cmV0dXJuIDMxO2Nhc2UgMTY0MzYxODkzNzpyZXR1cm4gMzI7Y2FzZSA0OTcxNTk5ODI6cmV0dXJuIDMzO2Nhc2UgMzg4MjIzOTY2MTpyZXR1cm4gMzR9fXJldHVybi0xfSxFaT1mdW5jdGlvbihhKXtpZighYS5sZW5ndGgpcmV0dXJuIDA7Zm9yKHZhciBiPVtdLGM9MDszND49YztjKyspYltjXT0wO2ZvcihjPWEubGVuZ3RoLTE7MDw9YztjLS0pe3ZhciBkPURpKGFbY10pOzA8PWQmJihiWzM0LWRdPTEpfXJldHVybiBwYXJzZUludChiLmpvaW4oXCJcIiksMil9O3ZhciBGaT1mdW5jdGlvbihhLGIpe3ZhciBjPXZvaWQgMD09PWM/e306Yzt0aGlzLmVycm9yPWE7dGhpcy5jb250ZXh0PWIuY29udGV4dDt0aGlzLm1zZz1iLm1lc3NhZ2V8fFwiXCI7dGhpcy5pZD1iLmlkfHxcImpzZXJyb3JcIjt0aGlzLm1ldGE9Y307dmFyIEhpPWZ1bmN0aW9uKGEpe2E9KHRoaXMubD1hfHxfLnIpfHxfLnI7dGhpcy52PWEudG9wPT1hPzE6cWcoYS50b3ApPzI6MzszIT10aGlzLnYmJkRhdGUucGFyc2UoXy5yLnRvcC5kb2N1bWVudC5sYXN0TW9kaWZpZWQpO3ZhciBiPXRoaXMubCxjPWJ8fF8ucjthPVtdO3ZhciBkPW51bGw7ZG97dmFyIGU9YztpZihxZyhlKSl7dmFyIGY9ZS5sb2NhdGlvbi5ocmVmO2Q9ZS5kb2N1bWVudCYmZS5kb2N1bWVudC5yZWZlcnJlcnx8bnVsbH1lbHNlIGY9ZCxkPW51bGw7YS5wdXNoKG5ldyBHaShmfHxcIlwiLGUpKTt0cnl7Yz1lLnBhcmVudH1jYXRjaChnKXtjPW51bGx9fXdoaWxlKGMmJmUhPWMpO2U9MDtmb3IoYz1hLmxlbmd0aC0xO2U8PWM7KytlKWFbZV0uZGVwdGg9Yy1lO2U9Ynx8Xy5yO2lmKGUubG9jYXRpb24mJmUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zJiZlLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGg9PWEubGVuZ3RoLTEpZm9yKGI9MTtiPGEubGVuZ3RoOysrYiljPWFbYl0sYy51cmx8fChjLnVybD1lLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2luc1tiLTFdfHxcIlwiLGMuZWQ9ITApO3RoaXMuaj1hfSxKaT1mdW5jdGlvbihhKXt2YXIgYj1hLmwuZG9jdW1lbnQmJmEubC5kb2N1bWVudC5zY3JpcHRzP2EubC5kb2N1bWVudC5zY3JpcHRzOltdO2lmKCFiKXJldHVybiAwO2Zvcih2YXIgYz1bXSxkPWIubGVuZ3RoLTE7MDw9ZCYmMjY+Yy5sZW5ndGg7KWJbZF0uc3JjJiZjLnVuc2hpZnQoYltkXS5zcmMpLGQtLTtyZXR1cm4gSWkoYSxjKX0sSWk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPShhPWEualtNYXRoLm1heChhLmoubGVuZ3RoLTEsMCldLnVybHx8bnVsbCkmJm9nKGEubWF0Y2goXy5uZylbM118fG51bGwpLGU9TWF0aC5taW4oYi5sZW5ndGgsMjYpLGY9MDtmPGU7ZisrKWE9bnVsbCE9YltmXSYmb2coYltmXS5tYXRjaChfLm5nKVszXXx8bnVsbCl8fFwiXCIsYyo9NCxhJiYoZCYmYT09ZD9jKz0zOkNpKGJbZl0pP2MrPTI6YSYmMDw9RGkoYSkmJihjKz0xKSk7cmV0dXJuIGN9LEtpPWZ1bmN0aW9uKGEpe2E9YS5sLmRvY3VtZW50JiZhLmwuZG9jdW1lbnQuc2NyaXB0cz9hLmwuZG9jdW1lbnQuc2NyaXB0czpbXTtpZighYSlyZXR1cm4gMDtmb3IodmFyIGI9W10sYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKXt2YXIgZD1hW2NdO2QmJm51bGwhPWQuc3JjJiZiLnB1c2gob2coZC5zcmMubWF0Y2goXy5uZylbM118fG51bGwpKX1yZXR1cm4gRWkoYil9LEdpPWZ1bmN0aW9uKGEsYil7dGhpcy51cmw9YTt0aGlzLkw9Yjt0aGlzLmVkPSExO3RoaXMuZGVwdGg9bnVsbH07dmFyIExpPW51bGwsTWk9ZnVuY3Rpb24oKXtpZihudWxsPT09TGkpe0xpPVwiXCI7dHJ5e3ZhciBhPVwiXCI7dHJ5e2E9Xy5yLnRvcC5sb2NhdGlvbi5oYXNofWNhdGNoKGMpe2E9Xy5yLmxvY2F0aW9uLmhhc2h9aWYoYSl7dmFyIGI9YS5tYXRjaCgvXFxiZGVpZD0oW1xcZCxdKykvKTtMaT1iP2JbMV06XCJcIn19Y2F0Y2goYyl7fX1yZXR1cm4gTGl9O3ZhciBQaTtfLk5pPWZ1bmN0aW9uKCl7dmFyIGE9Xy5yLnBlcmZvcm1hbmNlO3JldHVybiBhJiZhLm5vdyYmYS50aW1pbmc/TWF0aC5mbG9vcihhLm5vdygpK2EudGltaW5nLm5hdmlnYXRpb25TdGFydCk6VGMoKX07Xy5PaT1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/Xy5yOmE7cmV0dXJuKGE9YS5wZXJmb3JtYW5jZSkmJmEubm93P2Eubm93KCk6bnVsbH07UGk9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5yLnBlcmZvcm1hbmNlO3JldHVybiBiJiZiLnRpbWluZyYmYi50aW1pbmdbYV18fDB9O3ZhciBRaT1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMubGFiZWw9YTt0aGlzLnR5cGU9Yjt0aGlzLnZhbHVlPWM7dGhpcy5kdXJhdGlvbj12b2lkIDA9PT1kPzA6ZDt0aGlzLnVuaXF1ZUlkPU1hdGgucmFuZG9tKCk7dGhpcy5zbG90SWQ9ZX07dmFyIFJpPV8uci5wZXJmb3JtYW5jZSxTaT0hIShSaSYmUmkubWFyayYmUmkubWVhc3VyZSYmUmkuY2xlYXJNYXJrcyksVGk9dmEoZnVuY3Rpb24oKXt2YXIgYTtpZihhPVNpKWE9TWkoKSxhPSEhYS5pbmRleE9mJiYwPD1hLmluZGV4T2YoXCIxMzM3XCIpO3JldHVybiBhfSksVWk9ZnVuY3Rpb24oYSxiKXt0aGlzLmV2ZW50cz1bXTt0aGlzLmw9Ynx8Xy5yO3ZhciBjPW51bGw7YiYmKGIuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1iLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdLHRoaXMuZXZlbnRzPWIuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZSxjPWIuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nKTt0aGlzLmo9VGkoKXx8KG51bGwhPWM/YzpNYXRoLnJhbmRvbSgpPGEpfSxWaT1mdW5jdGlvbihhKXthJiZSaSYmVGkoKSYmKFJpLmNsZWFyTWFya3MoXCJnb29nX1wiK2EubGFiZWwrXCJfXCIrYS51bmlxdWVJZCtcIl9zdGFydFwiKSxSaS5jbGVhck1hcmtzKFwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfZW5kXCIpKX0sV2k9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2EuaiYmKGI9bmV3IFFpKGIsYyxkLHZvaWQgMD09PWU/MDplLGYpLCFhLmp8fDIwNDg8YS5ldmVudHMubGVuZ3RofHxhLmV2ZW50cy5wdXNoKGIpKX07VWkucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuailyZXR1cm4gbnVsbDt2YXIgYz1fLk9pKCl8fF8uTmkoKTthPW5ldyBRaShhLGIsYyk7Yj1cImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX3N0YXJ0XCI7UmkmJlRpKCkmJlJpLm1hcmsoYik7cmV0dXJuIGF9O3ZhciBYaT1mdW5jdGlvbihhLGIpe2lmKGEuaiYmXCJudW1iZXJcIj09PXR5cGVvZiBiLnZhbHVlKXt2YXIgYz1fLk9pKCl8fF8uTmkoKTtiLmR1cmF0aW9uPWMtYi52YWx1ZTtjPVwiZ29vZ19cIitiLmxhYmVsK1wiX1wiK2IudW5pcXVlSWQrXCJfZW5kXCI7UmkmJlRpKCkmJlJpLm1hcmsoYyk7IWEuanx8MjA0ODxhLmV2ZW50cy5sZW5ndGh8fGEuZXZlbnRzLnB1c2goYil9fSxZaT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5PaSgpO2QmJldpKGEsYiw5LGQsMCxjKX07dmFyIFliPWZ1bmN0aW9uKGEsYil7dHJ5ey0xPT1hLmluZGV4T2YoYikmJihhPWIrXCJcXG5cIithKTtmb3IodmFyIGM7YSE9YzspYz1hLGE9YS5yZXBsYWNlKC8oKGh0dHBzPzpcXC8uLipcXC8pW15cXC86XSo6XFxkKyg/Oi58XFxuKSopXFwyLyxcIiQxXCIpO3JldHVybiBhLnJlcGxhY2UoL1xcbiAqL2csXCJcXG5cIil9Y2F0Y2goZCl7cmV0dXJuIGJ9fTt2YXIgWmk9SWcoKTt2YXIgJGk9ZnVuY3Rpb24oYSl7dGhpcy5tZXRob2ROYW1lPWF9LGFqPW5ldyAkaSgxKSxiaj1uZXcgJGkoMTUpLGNqPW5ldyAkaSgyKSxkaj1uZXcgJGkoMyksZWo9bmV3ICRpKDUpLGZqPW5ldyAkaSg2KSxnaj1uZXcgJGkoNyksaGo9bmV3ICRpKDgpLGlqPW5ldyAkaSgxNCksamo9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiW2EubWV0aG9kTmFtZV18fGN8fGZ1bmN0aW9uKCl7fX07dmFyIGtqPWZ1bmN0aW9uKCl7dGhpcy5sPWZ1bmN0aW9uKCl7fTt0aGlzLnY9ZnVuY3Rpb24oKXtyZXR1cm5bXX07dGhpcy5qPWZ1bmN0aW9uKCl7cmV0dXJuW119fSxsaj1mdW5jdGlvbihhLGIsYyl7YS5sPWpqKGFqLGIsZnVuY3Rpb24oKXt9KTthLnY9ZnVuY3Rpb24oZCl7cmV0dXJuIGpqKGNqLGIsZnVuY3Rpb24oKXtyZXR1cm5bXX0pKGQsYyl9O2Euaj1mdW5jdGlvbigpe3JldHVybiBqaihkaixiLGZ1bmN0aW9uKCl7cmV0dXJuW119KShjKX19O0ljKGtqKTt2YXIgbWo9ZnVuY3Rpb24oYSl7a2ouQigpLmwoYSl9LG5qPWZ1bmN0aW9uKGEpe3JldHVybiBrai5CKCkudihhKX07dmFyIG9qPWZ1bmN0aW9uKCl7dGhpcy5sPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/ITE6Yn07dGhpcy52PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/MDpifTt0aGlzLm89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj9cIlwiOmJ9O3RoaXMubT1mdW5jdGlvbihhLGIpe3JldHVybiBiPXZvaWQgMD09PWI/W106Yn07dGhpcy5qPWZ1bmN0aW9uKCl7fX0scGo9ZnVuY3Rpb24oYSxiLGMpe2EubD1mdW5jdGlvbihkLGUpe3JldHVybiBqaihlaixiKShkLGUsYyl9O2Eudj1mdW5jdGlvbihkLGUpe3JldHVybiBqaihmaixiKShkLGUsYyl9O2Eubz1mdW5jdGlvbihkLGUpe3JldHVybiBqaihnaixiKShkLGUsYyl9O2EubT1mdW5jdGlvbihkLGUpe3JldHVybiBqaihoaixiKShkLGUsYyl9O2Euaj1mdW5jdGlvbigpe2pqKGJqLGIpKGMpfX0scWo7SWMob2opO18ueT1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iPyExOmI7cmV0dXJuIG9qLkIoKS5sKGEsYil9O18ucmE9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/MDpiO3JldHVybiBvai5CKCkudihhLGIpfTtxaj1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iP1wiXCI6YjtyZXR1cm4gb2ouQigpLm8oYSxiKX07Xy5yaj1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iP1tdOmI7cmV0dXJuIG9qLkIoKS5tKGEsYil9O3ZhciBzaj17fSx0aj0oc2ouY29tcGFuaW9uX2Fkcz1cImNvbXBhbmlvbkFkc1wiLHNqLmNvbnRlbnQ9XCJjb250ZW50XCIsc2oucHVibGlzaGVyX2Fkcz1cInB1YmFkc1wiLHNqKSx1aj1mdW5jdGlvbihhKXtyZXR1cm4gYSsnQ29ycmVsYXRvciBoYXMgYmVlbiBkZXByZWNhdGVkLiBQbGVhc2Ugc2VlIHRoZSBHb29nbGUgQWQgTWFuYWdlciBoZWxwIHBhZ2Ugb24gXCJQYWdldmlld3MgaW4gR1BUXCIgZm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL2FkbWFuYWdlci9hbnN3ZXIvMTgzMjgxP2hsPWVuJ307dmFyIFhiPWZ1bmN0aW9uKCl7cmV0dXJuIF8uci5nb29nbGV0YWd8fChfLnIuZ29vZ2xldGFnPXt9KX0sV2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1YYigpO2MuaGFzT3duUHJvcGVydHkoYSl8fChjW2FdPWIpfSx2aj1mdW5jdGlvbihhLGIpe2EuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsYiwhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudChcIm9ubG9hZFwiLGIpfTt2YXIgd2o9bmV3IHQuTWFwLHhqPW5ldyB0Lk1hcCx5aj1mdW5jdGlvbigpe30semo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGJ8fGEgaW5zdGFuY2VvZiB5aiYmKGE9d2ouZ2V0KGEpLGEgaW5zdGFuY2VvZiBiKT9hOm51bGx9LEFqPWZ1bmN0aW9uKGEpe3JldHVybihhPXRqW2FdKT9YYigpW2FdKCk6bnVsbH07dmFyIEJqPXsyNDc6XCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldFwiLDc6LjAyLDEzOjE1MDAsMjM6LjAwMSwzNzouMDEsMzg6LjAwMSw1ODoxLDE1MDpcIlwiLDIxMTohMSwyNTM6ITEsMTUyOltdLDE3MjpudWxsLDE5MTpcIlwiLDE5MjpcIlwiLDE5MDpcIlwiLDI0NTp7fSwxODA6bnVsbCwyNDY6W10sMjI3Ont9LDIyNjpbXSwyNDg6MCwyMjg6XCIvL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vcHViY29uc29sZS9cIiwyNTA6bnVsbCwyNTI6bnVsbCwyNTE6bnVsbH0sRWosRmosR2osSGo7QmpbNl09Smcod2luZG93KTtCals0OV09KG5ldyBEYXRlKS5nZXRUaW1lKCk7QmpbMzZdPUlnKCk7QmpbMTQ4XT1aaTtCalsyMjFdPUlnKCk7QmpbMjA0XT1fLkhnKFwiLTFcIiwtMSk7dmFyIENqPWZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIEJqKXRoaXNbYV09QmpbYV19O0ljKENqKTtfLkRqPWZ1bmN0aW9uKGEpe3JldHVybiBDai5CKClbYV19O0VqPVhiKCk7Rmo9Q2ouQigpO0dqPUVqLl92YXJzXztmb3IoSGogaW4gR2opRmpbSGpdPUdqW0hqXTtFai5fdmFyc189Rmo7dmFyIEpqPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxJaixudWxsKX07SyhKaixNKTt2YXIgSWo9WzJdLEtqPWZ1bmN0aW9uKGEpe3JldHVybiBCKGEsMSl9LExqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQoYSwxLGIpfSxNaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMixifHxbXSl9O3ZhciBOaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhOaixNKTt2YXIgT2o9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soT2osTSk7dmFyIFBqPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKFBqLE0pO3ZhciBRaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMyxiKX07dmFyIFNqPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxSaixudWxsKX07SyhTaixNKTt2YXIgUmo9WzIsMyw3LDE0XSxUaj1mdW5jdGlvbihhLGIpe3dmKGEsMixiKX0sVWo9ZnVuY3Rpb24oYSl7cmV0dXJuIE8oYSxPaiwyNSl9O3ZhciBWaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhWaixNKTt2YXIgV2o9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDEsYil9LFhqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQoYSwyLGIpfSxZaj1mdW5jdGlvbigpe3ZhciBhPW5ldyBWajtyZXR1cm4gRChhLDMsITApfTt2YXIgWmo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soWmosTSk7dmFyIGJrPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxhayxudWxsKX07SyhiayxNKTt2YXIgYWs9WzJdO3ZhciBkaz1mdW5jdGlvbihhKXtrZih0aGlzLGEsY2ssbnVsbCl9O0soZGssTSk7dmFyIGNrPVszLDQsNSw2LDgsOV07ZGsucHJvdG90eXBlLmdldEFkVW5pdFBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLDEpfTt2YXIgZWs9ZnVuY3Rpb24oYSxiKXtEKGEsMixiKX07ZGsucHJvdG90eXBlLmdldENsaWNrVXJsPWZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcyw3KX07dmFyIGZrPWZ1bmN0aW9uKGEsYil7d2YoYSw5LGIpfSxnaz1mdW5jdGlvbihhKXtyZXR1cm4gbmYoYSwxNSwwKX07dmFyIGhrPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpJiYyPT1hLmxlbmd0aD9fLnkoMzYwKT9raChhWzBdKSYma2goYVsxXSk6bGgoYVswXSkmJmxoKGFbMV0pOlwic3RyaW5nXCI9PT10eXBlb2YgYSYmXCJmbHVpZFwiPT1hfSxpaz1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKSYmMj09YS5sZW5ndGgmJmxoKGFbMF0pJiZsaChhWzFdKX0sams9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/WGooV2oobmV3IFZqLGFbMF0pLGFbMV0pOllqKCl9LGxrPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2lmKGtrKGEpKWIucHVzaChqayhhKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7KytjKXt2YXIgZD1hW2NdO2trKGQpJiZiLnB1c2goamsoZCkpO2E6e3ZhciBlPVtcImZsdWlkXCJdO2lmKEtjKGQpJiZLYyhlKSYmZC5sZW5ndGg9PWUubGVuZ3RoKXtmb3IodmFyIGY9ZC5sZW5ndGgsZz1mZCxoPTA7aDxmO2grKylpZighZyhkW2hdLGVbaF0pKXtkPSExO2JyZWFrIGF9ZD0hMH1lbHNlIGQ9ITF9ZCYmYi5wdXNoKFlqKCkpfXJldHVybiBifSxtaz1mdW5jdGlvbihhKXtpZighYXx8IUFycmF5LmlzQXJyYXkoYSl8fDIhPT1hLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYj1hWzBdO2E9YVsxXTtpZihcIm51bWJlclwiPT09dHlwZW9mIGImJjA8PWIpYj1NYXRoLmZsb29yKGIpO2Vsc2UgaWYobnVsbCE9PWIpcmV0dXJuIG51bGw7aWYoXCJudW1iZXJcIj09PXR5cGVvZiBhJiYwPD1hKWE9TWF0aC5mbG9vcihhKTtlbHNlIGlmKG51bGwhPT1hKXJldHVybiBudWxsO3JldHVybiBYaihXaihuZXcgVmosYiksYSl9LG5rPWZ1bmN0aW9uKGEpe3ZhciBiPW51bGwsYz1udWxsO3ZhciBkPWEmJihBcnJheS5pc0FycmF5KGEuZml4ZWQpfHxcImZsdWlkXCI9PT1hLmZpeGVkKTt2YXIgZT1fLnkoNDE5KSYmYSYmQXJyYXkuaXNBcnJheShhLm1heCk7aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkmJihkfHxlKSl7aWYoZD1sayhhLmZpeGVkKSxjPW1rKGEubWF4KSlhLm1pbj8oKGI9bWsoYS5taW4pKSYmbnVsbD09PUIoYiwxKSYmV2ooYiwwKSxiJiZudWxsPT09QihiLDIpJiZYaihiLDApKTpiPVhqKFdqKG5ldyBWaiwwKSwwKX1lbHNlIGQ9bGsoYSk7aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkpe2lmKGEubWF4JiYhYyl0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIG1heGltdW0gc2l6ZTogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO2lmKGEubWluJiYhYil0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIG1heGltdW0gc2l6ZTogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO31pZihjKXtpZigwPT09QihjLDEpfHwwPT09QihjLDIpKXRocm93IEVycm9yKFwiSW52YWxpZCBHUFQgc2l6ZSwgbWF4aW11bXMgY2Fubm90IGJlIHplcm86IFwiK0pTT04uc3RyaW5naWZ5KGEpKTtpZihiKXtlPUIoYiwxKTt2YXIgZj1CKGMsMSk7aWYobnVsbCE9ZSYmbnVsbCE9ZiYmZT5mKXRocm93IEVycm9yKFwiSW52YWxpZCBHUFQgc2l6ZTogbWluaW11bSB3aWR0aCBsYXJnZXIgdGhhbiBtYXhpbXVtIHdpZHRoOiBcIitKU09OLnN0cmluZ2lmeShhKSk7ZT1CKGIsMik7Zj1CKGMsMik7aWYobnVsbCE9ZSYmbnVsbCE9ZiYmZT5mKXRocm93IEVycm9yKFwiSW52YWxpZCBHUFQgc2l6ZTogbWluaW11bSBoZWlnaHQgbGFyZ2VyIHRoYW4gbWF4aW11bSBoZWlnaHQ6IFwiK0pTT04uc3RyaW5naWZ5KGEpKTt9fWQubGVuZ3RofHxfLnkoNDE5KSYmY3x8ZGgoXCJJbnZhbGlkIEdQVCBmaXhlZCBzaXplIHNwZWNpZmljYXRpb246IFwiK0pTT04uc3RyaW5naWZ5KGEpKTtjJiZiPyhhPW5ldyBaaixjPXZmKGEsMSxjKSxiPXZmKGMsMixiKSk6Yj1udWxsO3JldHVybntYYzpkLEhhOmJ9fSxraz1mdW5jdGlvbihhKXtpZihfLnkoMzYxKSlyZXR1cm4gaGsoYSk7aWYoQXJyYXkuaXNBcnJheShhKSYmMTxhLmxlbmd0aCl7dmFyIGI9XCJudW1iZXJcIj09PXR5cGVvZiBhWzBdJiZcIm51bWJlclwiPT09dHlwZW9mIGFbMV07YT0hXy55KDM2MCl8fDA8YVswXSYmMDxhWzFdO3JldHVybiBiJiZhfXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYSYmXCJmbHVpZFwiPT1hfTt2YXIgb2s9ZnVuY3Rpb24oYSxiKXthPV8uQShhLFwiZmluZFwiKS5jYWxsKGEsZnVuY3Rpb24oYyl7Yz1PKGMsVmosMSk7cmV0dXJuIEIoYywxKTw9QihiLDEpJiZCKGMsMik8PUIoYiwyKX0pO3JldHVybiBudWxsPT1hP251bGw6dWYoYSxWaiwyKX0scGs9ZnVuY3Rpb24oYSl7aWYoIUFycmF5LmlzQXJyYXkoYSl8fDIhPWEubGVuZ3RoKXRocm93IEVycm9yKFwiRWFjaCBtYXBwaW5nIGVudHJ5IGhhcyB0byBiZSBhbiBhcnJheSBvZiBzaXplIDJcIik7dmFyIGI9YVswXTtpZighaWsoYikpdGhyb3cgRXJyb3IoXCJTaXplIGhhcyB0byBiZSBhbiBhcnJheSBvZiB0d28gbm9uLW5lZ2F0aXZlIGludGVnZXJzXCIpO2I9WGooV2oobmV3IFZqLGJbMF0pLGJbMV0pO2lmKEFycmF5LmlzQXJyYXkoYVsxXSkmJjA9PWFbMV0ubGVuZ3RoKWE9W107ZWxzZSBpZihhPWxrKGFbMV0pLDA9PWEubGVuZ3RoKXRocm93IEVycm9yKFwiQXQgbGVhc3Qgb25lIHNsb3Qgc2l6ZSBtdXN0IGJlIHByZXNlbnRcIik7dmFyIGM9bmV3IGJrO2I9dmYoYywxLGIpO3JldHVybiB3ZihiLDIsYSl9O3ZhciBxaz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBiJiZcIm51bWJlclwiPT09dHlwZW9mIGMmJjA8dWYoYSxiayw2KS5sZW5ndGg/b2sodWYoYSxiayw2KSxYaihXaihuZXcgVmosYiksYykpOnVmKGEsVmosNSl9LHhhPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdyxjPW51bGw7Yi50b3A9PWImJihiPXhpKCExLGIpLGM9cWsoYSxiLndpZHRoLGIuaGVpZ2h0KSk7bnVsbD09YyYmKGM9cWsoYSkpO3JldHVybiBjLm1hcChmdW5jdGlvbihkKXtyZXR1cm4geChkLDMpP1wiZmx1aWRcIjpbQihkLDEpLEIoZCwyKV19KX0sU2I9ZnVuY3Rpb24oYSl7aWYoXy55KDQxOSkmJjA9PXhhKGEpLmxlbmd0aCYmbnVsbCE9QihhLDE2KSlyZXR1cm5cIjF4MVwiO3ZhciBiPVtdLGM9ITE7YT1fLkYoeGEoYSkpO2Zvcih2YXIgZD1hLm5leHQoKTshZC5kb25lO2Q9YS5uZXh0KCkpZD1kLnZhbHVlLEFycmF5LmlzQXJyYXkoZCk/Yi5wdXNoKGQuam9pbihcInhcIikpOlwiZmx1aWRcIj09ZD9jPSEwOmIucHVzaChkKTtjJiZiLnVuc2hpZnQoXCIzMjB4NTBcIik7cmV0dXJuIGIuam9pbihcInxcIil9LHJrPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgYz0wLGQ9W107YSYmKGQucHVzaChhLmdldEFkVW5pdFBhdGgoKSksZC5wdXNoKFNiKGEpKSxkLnB1c2goQihhLDIpKSk7aWYoYil7YT1bXTtmb3IodmFyIGU9MDtiJiYyNT5lO2I9Yi5wYXJlbnROb2RlLCsrZSk5PT09Yi5ub2RlVHlwZT9hLnB1c2goXCJcIik6YS5wdXNoKGIuaWQpOyhiPWEuam9pbigpKSYmZC5wdXNoKGIpfTA8ZC5sZW5ndGgmJihjPUNnKGQuam9pbihcIjpcIikpKTtyZXR1cm4gYy50b1N0cmluZygpfSxzaz1mdW5jdGlvbihhKXtyZXR1cm4gMCE9PWEmJjEhPT1hfTt2YXIgdGs9ZnVuY3Rpb24oKXt2YXIgYT1fLnkoODUpfHxfLnkoODQpO18uci5nb29nbGVfbWVhc3VyZV9qc190aW1pbmc9YXx8Xy5yLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZztVaS5jYWxsKHRoaXMsYT8xOjAsXy5yKTt0aGlzLnY9MH07Xy5KKHRrLFVpKTtJYyh0ayk7dmFyIHZrPWZ1bmN0aW9uKGEsYixjKXtpZihCKGIsMTgpKXJldHVybiBCKGIsMTgpO2E9Yy5nZXQoYS5nZXRTbG90SWQoKSk7cmV0dXJuIG51bGwhPWE/dWsoYSk6bnVsbH0sd2s9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIG51bGwhPXVrKGMpPyEwOmEuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9dmsoZSxiW2UuZ2V0U2xvdEVsZW1lbnRJZCgpXSxkKX0pfSx4az1mdW5jdGlvbihhKXtpZihfLnkoMTY4KXx8MTUzNjA+PWEubGVuZ3RoKXJldHVybiBhO3ZhciBiPV8ueSgxNjQpJiYvJnN1cHBvcnRpbmdfdXJscz0vLnRlc3QoYSksYz1hO2lmKDE1MzYwPGMubGVuZ3RoKXt2YXIgZD1iPy0xOmMubGFzdEluZGV4T2YoXCImXCIsMTUzNTIpOy0xIT09ZD9jPWMuc3Vic3RyaW5nKDAsZCk6KGM9Yy5zdWJzdHJpbmcoMCwxNTM1MiksYz1jLnJlcGxhY2UoLyVcXHc/JC8sXCJcIiksYiYmKGM9Yy5yZXBsYWNlKC8mW149XSo9PyQvLFwiXCIpKSk7Yys9XCImdHJ1bmM9MVwifWI9YztXaSh0ay5CKCksKDkpLnRvU3RyaW5nKCksOSxhLmxlbmd0aC1iLmxlbmd0aCs4KTtyZXR1cm4gYn0seWs9ZnVuY3Rpb24oYSl7dmFyIGI9YTtcImFib3V0OmJsYW5rXCIhPWEmJihiPWIucmVwbGFjZSgvPC9nLFwiJTNDXCIpLnJlcGxhY2UoLz4vZyxcIiUzRVwiKS5yZXBsYWNlKC9cIi9nLFwiJTIyXCIpLnJlcGxhY2UoLycvZyxcIiUyN1wiKSwvXmh0dHBzPzpcXC9cXC8vLnRlc3QoYil8fChiPVwidW5rbm93bjpcIitiKSk7cmV0dXJuIGJ9LHprPWZ1bmN0aW9uKCl7cmV0dXJuXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tXCJ9LGRiPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZG9jdW1lbnQ7cmV0dXJuIHlpKGEpP2IuVVJMOmIucmVmZXJyZXJ9LHVhPWZ1bmN0aW9uKGEpe3RyeXt2YXIgYj13aW5kb3cudG9wLGM9bmV3IF8ueWEoMCwwKSxkPV8uY2coXy5WZihhKSk7aWYoc2UoZCxcInBhcmVudFwiKSl7ZG97dmFyIGU9ZD09Yj9paShhKTpfLmppKGEpO2MueCs9ZS54O2MueSs9ZS55fXdoaWxlKGQmJmQhPWImJmQhPWQucGFyZW50JiYoYT1kLmZyYW1lRWxlbWVudCkmJihkPWQucGFyZW50KSl9dmFyIGY9Y31jYXRjaChnKXtmPW5ldyBfLnlhKC0xMjI0NTkzMywtMTIyNDU5MzMpfXJldHVybiBmfSxBaz1mdW5jdGlvbihhKXt2YXIgYj1hLmluZGV4T2YoXCJnb29nbGVfcHJldmlldz1cIixhLmxhc3RJbmRleE9mKFwiP1wiKSksYz1hLmluZGV4T2YoXCImXCIsYik7LTE9PWMmJihjPWEubGVuZ3RoLTEsLS1iKTtyZXR1cm4gYS5zdWJzdHJpbmcoMCxiKSthLnN1YnN0cmluZyhjKzEsYS5sZW5ndGgpfSxCaz12YShmdW5jdGlvbigpe3JldHVyblwiWE1MSHR0cFJlcXVlc3RcImluIHdpbmRvdyYmXCJ3aXRoQ3JlZGVudGlhbHNcImluIG5ldyBYTUxIdHRwUmVxdWVzdH0pLENrPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIV8udWUmJiF2ZX0pLERrPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIV8udWUmJiF2ZX0pLEVrPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3BsaXQoL1xcclxcbnxcXHJ8XFxuLykubGVuZ3RoO1wiRXJyb3JcIj09YS5zbGljZSgwLDUpJiZiLS07cmV0dXJuIGJ9LEZrPXZhKGZ1bmN0aW9uKCl7cmV0dXJuISFLZyhfLnIubG9jYXRpb24uaHJlZil9KSxHaz1mdW5jdGlvbihhKXt2YXIgYj1hLnNwbGl0KFwiL1wiKTtyZXR1cm5cIi9cIj09YS5jaGFyQXQoMCkmJjI8PWIubGVuZ3RoP2JbMV06XCIvXCIhPWEuY2hhckF0KDApJiYxPD1iLmxlbmd0aD9iWzBdOlwiXCJ9LEhrPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2I9YS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIEdrKGMuZ2V0QWRVbml0UGF0aCgpKX0pO1VhKGIpO3JldHVybiBifSxJaz1mdW5jdGlvbihhKXtyZXR1cm4gYT8oYT1uaShhKSkmJmEuZmxvb3IoKTpudWxsfSxKaz1mdW5jdGlvbihhKXtyZXR1cm4hIWEmJiEhQihhLDEpfSxLaz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz17fSxkPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxiKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe2U9ZS52YWx1ZTt2YXIgZj1iW2VdO2Y9bmV3IGYuY29uc3RydWN0b3IoQWYoZi5pYSkpO2NbZV09Zn1yZXR1cm57TjpuZXcgYS5jb25zdHJ1Y3RvcihBZihhLmlhKSksUjpjfX0sTGs9dmEoZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuY3J5cHRvfHx3aW5kb3cubXNDcnlwdG87aWYodm9pZCAwIT09YSl7dmFyIGI9bmV3IFVpbnQ4QXJyYXkoMTYpO2EuZ2V0UmFuZG9tVmFsdWVzKGIpfWVsc2UgZm9yKGI9QXJyYXkoMTYpLGE9MDsxNj5hOysrYSliW2FdPU1hdGguZmxvb3IoMjU1Kk1hdGgucmFuZG9tKCkpO2E9XCJcIjtiPV8uRihiKTtmb3IodmFyIGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSwxNT49YyYmKGErPVwiMFwiKSxhKz1jLnRvU3RyaW5nKDE2KTtyZXR1cm4gYX0pLE1rPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5SO3JldHVybiB4KGIuTiw2KXx8eChjW2EuZ2V0U2xvdEVsZW1lbnRJZCgpXSwxNyk/bnVsbDpwYShhKX0sTms9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk1hdGgucG93KDIsNTIpKX0sT2s9ZnVuY3Rpb24oYSxiLGMpe3RyeXt2YXIgZD13aSh0b3AuZG9jdW1lbnQsdG9wKS55LGU9ZCtiLmhlaWdodCooYysxKTtyZXR1cm4gYS55Pj1kJiZhLnk8PWV9Y2F0Y2goZil7cmV0dXJuITB9fSxQaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9cGEoYS5zbG90LGIpLGU9ZCYmMj09PV8ucmEoMzk1KSYmXCJub25lXCI9PT1kLnN0eWxlLmRpc3BsYXk7ZSYmKGQuc3R5bGUuZGlzcGxheT1cImJsb2NrXCIpO2E9emEoYixhLGMpO2UmJihkLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpO3JldHVybiBhfSxRaz1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj93aW5kb3c6YjtyZXR1cm4gYi5sb2NhdGlvbj9iLlVSTFNlYXJjaFBhcmFtcz8oYT1iLlVSTFNlYXJjaFBhcmFtcz8obmV3IGIuVVJMU2VhcmNoUGFyYW1zKGIubG9jYXRpb24uc2VhcmNoKSkuZ2V0KGEpOm51bGwpJiZhLmxlbmd0aD9hOm51bGw6KGE9KG5ldyBSZWdFeHAoXCJbPyZdXCIrYStcIj0oW14mXSopXCIpKS5leGVjKGIubG9jYXRpb24uc2VhcmNoKSk/ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV0pOm51bGw6bnVsbH0sUms9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7cmV0dXJuISFRayhhLGIpfSxTaz1mdW5jdGlvbihhKXtyZXR1cm4hIWEmJihudWxsIT1CKGEsMSl8fCEheChhLDYpKX0sVGs9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBTayhiKXx8ND09Z2soYSl8fDU9PT1nayhhKXx8Y30sVWs9ZnVuY3Rpb24oYSl7cmV0dXJuXCJnb29nbGVfYWRzX2lmcmFtZV9cIithLnRvU3RyaW5nKCl9LFZrPWZ1bmN0aW9uKGEpe3JldHVybiBVayhhKStcIl9fY29udGFpbmVyX19cIn0sb2E9ZnVuY3Rpb24oYSxiKXtiPXBhKGEsYik7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9VmsoYS5nZXRTbG90SWQoKSk7cmV0dXJuIGlnKGIsZnVuY3Rpb24oZCl7cmV0dXJuIGQuaWQ9PT1jfSl9O3ZhciAkYT1mdW5jdGlvbigpe3JldHVyblwiMjAyMDA4MjcwMVwifTtXYihcImdldFZlcnNpb25cIiwkYSk7dmFyIFdrPWZ1bmN0aW9uKGEsYixjKXtiPXZvaWQgMD09PWI/XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tXCI6YjtpZihudWxsPT1jfHwwPmN8fDE8YyljPV8uRGooMjMpO3RoaXMudj1NYXRoLnJhbmRvbSgpO3RoaXMuQT10aGlzLnY8Yzt0aGlzLmo9YTt0aGlzLm09YmIoXy5yKTt0aGlzLm89Yjt0aGlzLmw9e3B2c2lkOnRoaXMubX19LEU9ZnVuY3Rpb24oYSxiLGMpe1wic3RyaW5nXCIhPXR5cGVvZiBjJiYoYz1TdHJpbmcoYykpOy9eXFx3KyQvLnRlc3QoYikmJmMmJihhLmxbYl09Yyl9LFlrPWZ1bmN0aW9uKGEsYixjKXtiPXZvaWQgMD09PWI/bnVsbDpiO2M9dm9pZCAwPT09Yz8hMTpjO2I9dm9pZCAwPT09Yj9udWxsOmI7Yz12b2lkIDA9PT1jPyExOmM7aWYoRmsoKSliPSEwO2Vsc2V7dmFyIGQ9YS5BO2ImJjA8PWImJihkPShjP2EudjpNYXRoLnJhbmRvbSgpKTxiKTtiPWQmJiEhYS5qfWImJihfLnkoMzA1KT9WaChhLmwsYS5qKTooYT1YayhhKXx8XCJcIixfLlRoKHdpbmRvdyxhKSkpfSxYaz1mdW5jdGlvbihhKXt2YXIgYj1hLm8rXCIvcGFnZWFkL2dlbl8yMDQ/aWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGEuaik7Xy5KYihhLmwsZnVuY3Rpb24oYyxkKXtjJiYoYis9XCImXCIrZCtcIj1cIitlbmNvZGVVUklDb21wb25lbnQoYykpfSk7cmV0dXJuIGJ9LGxiPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP1prOmI7RShhLFwidnJnXCIsJGEoKSk7dmFyIGM9SGsoYik7Yy5sZW5ndGgmJigzPj1jLmxlbmd0aD9FKGEsXCJud19pZFwiLGMuam9pbigpKTooYz1jLnNsaWNlKDAsMyksYy5wdXNoKFwiX19leHRyYV9fXCIpLEUoYSxcIm53X2lkXCIsYy5qb2luKCkpKSk7RShhLFwibnNsb3RzXCIsYi5sZW5ndGgudG9TdHJpbmcoKSk7Yj1rai5CKCkuaigpO2IubGVuZ3RoJiZFKGEsXCJlaWRcIixiLmpvaW4oKSk7RShhLFwicHViX3VybFwiLGRvY3VtZW50LlVSTCl9LGtiPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/e306Yzt2YXIgZD1jLnhlfHxcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb21cIjtjPWMudmE7aWYodm9pZCAwPT09Y3x8MD5jfHwxPGMpYz1fLkRqKDIzKTtNYXRoLnJhbmRvbSgpPGMmJihhPW5ldyBXayhhLGQpLGIoYSksWWsoYSwxLCEwKSl9LFprPVtdO3ZhciAkaz1fLkRqKDM4KSxhbD1mdW5jdGlvbihhLGIpe2E9e21ldGhvZElkOmF9O2IubmFtZSYmKGEubmFtZT1iLm5hbWUpO2IubWVzc2FnZSYmKGEubWVzc2FnZT1iLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsNTEyKSk7Yi5maWxlTmFtZSYmKGEuZmlsZU5hbWU9Yi5maWxlTmFtZSk7Yi5saW5lTnVtYmVyJiYoYS5saW5lTnVtYmVyPWIubGluZU51bWJlcik7Yi5zdGFjayYmKGEuc3RhY2s9WWIoYi5zdGFjayxcIlwiKSk7cmV0dXJuIGF9LGNsPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/ITE6YztibChhLGIpO2lmKCFjKXRocm93IGI7fSxibD1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jPyRrOmM7aWYoIWIuaXNSZXBvcnRlZCl0cnl7Yi5pc1JlcG9ydGVkPSEwO3ZhciBkPWFsKGEsYiksZT1uZXcgV2soXCJncHRfZXhjZXB0aW9uXCIpO3RyeXtsYihlKX1jYXRjaChmKXt9Xy5KYihkLGZ1bmN0aW9uKGYsZyl7cmV0dXJuIEUoZSxnLGYpfSk7WWsoZSxjKX1jYXRjaChmKXt9fSxTPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gRyhhLGIsYyxfLnkoMTQ0KSl9LEc9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kPyExOmQ7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgZj1bXSxnPTA7Zzxhcmd1bWVudHMubGVuZ3RoOysrZylmW2ddPWFyZ3VtZW50c1tnXTtnPSExO3ZhciBoPW51bGwsaz1jfHxjbCxsPXRrLkIoKTt0cnl7dmFyIG09Xy55KDg1KTttJiZsJiYoaD1sLnN0YXJ0KGEudG9TdHJpbmcoKSwzKSk7dmFyIG49Yi5hcHBseSh0aGlzLGYpO2c9ITA7bSYmbCYmWGkobCxoKX1jYXRjaCh3KXtnP2JsKDExMCx3KTpuPWsuY2FsbCh0aGlzLGEsdyksVmkoaCl9aWYoZCYmLjE+TWF0aC5yYW5kb20oKSl0cnl7dmFyIHE9RXJyb3IoKTtrYihcImdwdF9hcGlfdXNhZ2VcIixmdW5jdGlvbih3KXtFKHcsXCJtZXRob2RJZFwiLGEpO0UodyxcImFyZ3NcIixmLmxlbmd0aCk7RSh3LFwic3RhY2tcIixZYihxLnN0YWNrLHEubWVzc2FnZSkpO2xiKHcpfSx7dmE6MX0pfWNhdGNoKHcpe31yZXR1cm4gbn19LG1iPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gRyhhLGIsYywhMSkoKX07dmFyIGRsPWZ1bmN0aW9uKGEpe3RoaXMucHVzaD1TKDc2LGZ1bmN0aW9uKGIpe3JldHVybiBhLnB1c2guYXBwbHkoYSxhcmd1bWVudHMpfSl9O18uSihkbCx5aik7dmFyIGVsPWZ1bmN0aW9uKCl7Xy5QLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLlg9bmV3IHQuTWFwfTtfLkooZWwsXy5QKTtlbC5wcm90b3R5cGUudj1mdW5jdGlvbigpe18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpO3RoaXMuWC5jbGVhcigpfTtlbC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaWQsZCxlO3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGcoKXt2YXIgaCxrPXRoaXMsbCxtLG4scTtyZXR1cm4gRGEoZyxmdW5jdGlvbih3KXtpZigxPT13LmopcmV0dXJuIGg9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKSxoLmluaXRDdXN0b21FdmVudChjLCEwLCEwLGIpLEVhKHcsMCwyKTtsPW51bGwhPT0oZD1rLlguZ2V0KGMpKSYmdm9pZCAwIT09ZD9kOm5ldyB0LlNldDttPV8uRihsKTtmb3Iobj1tLm5leHQoKTshbi5kb25lO249bS5uZXh0KCkpe3E9bi52YWx1ZTt0cnl7cShoKX1jYXRjaCh1KXtcImZ1bmN0aW9uXCI9PT10eXBlb2YobnVsbD09PShlPXdpbmRvdy5jb25zb2xlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5lcnJvcikmJmNvbnNvbGUuZXJyb3IodSl9fXcuaj0wfSl9KX07dmFyIGZsPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP1tdOmI7dGhpcy5sPWE7dGhpcy5qPWJ9O2ZsLnByb3RvdHlwZS5nZXRNZXNzYWdlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTtmbC5wcm90b3R5cGUuZ2V0TWVzc2FnZUFyZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgaGw9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmw9bmV3IERhdGU7dGhpcy5BPWQmJmdsKGQpO3RoaXMubT1jJiZnbChjKTt0aGlzLm89YTt0aGlzLnY9Yjt0aGlzLmo9ZX07Xy5wPWhsLnByb3RvdHlwZTtfLnAuZ2V0U2xvdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkF9O18ucC5nZXRTZXJ2aWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubX07Xy5wLmdldExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307Xy5wLmdldFRpbWVzdGFtcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O18ucC5nZXRNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudn07Xy5wLmdldFJlZmVyZW5jZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O18ucC50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMubC50b1RpbWVTdHJpbmcoKStcIjogXCIraWxbdGhpcy5vXStcIjogXCIrdGhpcy52O3RoaXMuaiYmKGErPVwiIER1cmF0aW9uOiBcIisodGhpcy5sLmdldFRpbWUoKS10aGlzLmouZ2V0VGltZXN0YW1wKCkuZ2V0VGltZSgpKStcIm1zLlwiKTtyZXR1cm4gYX07Xy5wLmdldFNlcnZpY2U9Uyg3NjMsaGwucHJvdG90eXBlLmdldFNlcnZpY2UpO3ZhciBpbD1bXCJEZWJ1Z1wiLFwiSW5mb1wiLFwiV2FybmluZ1wiLFwiRXJyb3JcIixcIkZhdGFsXCJdO3ZhciBqbD1mdW5jdGlvbigpe3RoaXMuaj1uZXcgeGgoMUUzKX0sa2w9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gemgoYS5qKS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMuZ2V0U2xvdCgpPT09Yn0pfSxsbD1mdW5jdGlvbihhLGIpe3JldHVybiB6aChhLmopLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5nZXRMZXZlbCgpPj1ifSl9O2psLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24oYSxiLGMsZCxlKXthPW5ldyBobChhLGIsdm9pZCAwPT09Yz9udWxsOmMsdm9pZCAwPT09ZD9udWxsOmQsdm9pZCAwPT09ZT9udWxsOmUpO3RoaXMuai5hZGQoYSk7cmV0dXJuIGF9O2psLnByb3RvdHlwZS5pbmZvPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmxvZygxLGEsYixjLGQpfTtqbC5wcm90b3R5cGUuSj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5sb2coMixhLGIsYyxkKX07amwucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmxvZygzLGEsYixjLGQpfTtJYyhqbCk7dmFyIG1sPXZhKGZ1bmN0aW9uKCl7dmFyIGE9Xy5yaig1KS5pbmRleE9mKFN0cmluZyhqaCgpKSk7YT1fLnJqKDYpW2FdfHxcIlwiO3ZhciBiPXZvaWQgMD09PWI/d2luZG93LmRvY3VtZW50OmI7aWYoYSYmYi5oZWFkKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibWV0YVwiKTtjLmh0dHBFcXVpdj1cIm9yaWdpbi10cmlhbFwiO2MuY29udGVudD1hO2IuaGVhZC5hcHBlbmRDaGlsZChjKX19KSxubD1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iP25hdmlnYXRvcjpiO21sKCk7Yj1cInNjaGVkdWxpbmdcImluIGImJlwiaXNJbnB1dFBlbmRpbmdcImluIGIuc2NoZWR1bGluZyYmYi5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nKCk7dmFyIGM9Xy5yYSgzMSk7YiYmTWF0aC5yYW5kb20oKTxjJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7a2IoXCJncHRfaW5wdXRfcGVuZGluZ1wiLGZ1bmN0aW9uKGQpe2xiKGQpO0UoZCxcImN0eFwiLGEpO0UoZCxcImNvcnJcIixiYihfLnIpKTt2YXIgZT1FcnJvcihcImlucHV0UGVuZGluZ1wiKTtFKGQsXCJzdGFja1wiLFliKGUuc3RhY2ssZS5tZXNzYWdlKSl9LHt2YToxfSl9LDEpO3JldHVybiBifTt2YXIgb2w9ZnVuY3Rpb24oKXtlbC5jYWxsKHRoaXMpfTtfLkoob2wsZWwpO3ZhciBnbD1mdW5jdGlvbihhKXt2YXIgYj14ai5nZXQoYSk7aWYoIWIpe3ZhciBjPWI9YS5HYSgpO3dqLnNldChjLGEpO3hqLnNldChhLGMpfXJldHVybiBifTt2YXIgVD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZF09YXJndW1lbnRzW2RdO3JldHVybiBuZXcgZmwoYSxfLkZiKGMpLmNvbmNhdCgpKX19LHBsPWZ1bmN0aW9uKGEpe3JldHVyblwiW1wiK2EubWFwKGZ1bmN0aW9uKGIpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYj9cIidcIitiK1wiJ1wiOkFycmF5LmlzQXJyYXkoYik/cGwoYik6U3RyaW5nKGIpfSkuam9pbihcIiwgXCIpK1wiXVwifSxxbD1mdW5jdGlvbihhLGIpe2I9cGwoYik7Yj1iLnN1YnN0cmluZygxLGIubGVuZ3RoLTEpO3JldHVybiBuZXcgZmwoOTYsW2EsYl0pfSxybD1UKDIpLHNsPVQoMyksdGw9VCg0KSx1bD1UKDUpLHZsPVQoNiksd2w9VCgxMikseGw9VCgxNCkseWw9VCgxNiksemw9VCgxNyksQWw9VCgxOSksQmw9VCgyMCksQ2w9VCgyMyksRGw9VCgyNiksRWw9VCgyNyksRmw9VCgyOCksR2w9VCgzMCksSGw9VCgzMSksSWw9VCgzNCksSmw9VCgzNSksS2w9VCgzNiksTGw9VCgzNyksTWw9VCgzOCksTmw9VCg0MCksT2w9VCg0MyksUGw9VCg0NCksUWw9VCg0NiksUmw9VCg0NyksU2w9VCg0OCksVGw9VCg1MCksVWw9VCg1NyksVmw9VCg1OCksV2w9VCg1OSksWGw9VCg2MCksWWw9VCg2MSksWmw9VCg2MiksJGw9VCg2MyksYW09VCg2NCksYm09VCg2NiksY209VCg2OCksZG09VCg3MCksZW09VCg3MSksZm09VCg3NCksZ209VCg3NiksaG09VCg3OCksaW09VCg3OSksam09VCg4MCksa209VCg4MiksbG09VCg4NCksbW09VCg4NSksbm09VCg4Nyksb209VCg4OCkscG09VCg5MCkscW09VCg5Mikscm09VCg5Myksc209VCg5NCksdG09VCg5NSksdW09VCg5OSksdm09VCgxMDApLHdtPVQoMTAxKSx4bT1UKDEwMikseW09VCgxMDMpLHptPVQoMTA0KSxBbT1UKDEwNSksQm09VCgxMDYpLENtPVQoMTA3KSxEbT1UKDEwOCksRW09VCgxMDkpLEZtPVQoMTEwKSxHbT1UKDExMSksSG09VCgxMTMpLEltPVQoMTE0KSxKbT1UKDExNSksS209VCgxMTYpLExtPVQoMTE3KSxNbT1UKDExOCksTm09VCgxMTkpO3ZhciBPbT1mdW5jdGlvbigpe2VsLmNhbGwodGhpcyk7dGhpcy5BPXRoaXMuaj0wfTtfLkooT20sb2wpO09tLnByb3RvdHlwZS5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgZGwodGhpcyl9O09tLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1qbC5CKCksYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpdHJ5e1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhcmd1bWVudHNbY10mJihhcmd1bWVudHNbY10oKSx0aGlzLmorKyl9Y2F0Y2goZCl7dGhpcy5BKyssd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmVycm9yJiZ3aW5kb3cuY29uc29sZS5lcnJvcihcIkV4Y2VwdGlvbiBpbiBxdWV1ZWQgR1BUIGNvbW1hbmRcIixkKSxiLmVycm9yKEdsKFN0cmluZyhkLm1lc3NhZ2UpKSl9Yi5pbmZvKEhsKFN0cmluZyh0aGlzLmopLFN0cmluZyh0aGlzLkEpKSk7cmV0dXJuIHRoaXMuan07dmFyIFFtPWZ1bmN0aW9uKCl7T20uY2FsbCh0aGlzKTt2YXIgYT10aGlzO3RoaXMubz1bXTt0aGlzLkM9ITE7dGhpcy5tPXRoaXMubD0wO3RoaXMuRD1HKDYzNSxmdW5jdGlvbigpe2EubD0wO1BtKGEpfSl9O18uSihRbSxPbSk7dmFyIFJtPWZ1bmN0aW9uKGEpe3JldHVybiBhLkN8fCFhLm8ubGVuZ3RoPzA6Xy55KDE3MSk/MTpfLnkoMTcwKT9ubCgxKT8xOjA6Xy55KDI0NykmJm5sKDEpPzI6MH0sU209ZnVuY3Rpb24oYSl7YS5sfHwoYS5sPXNldFRpbWVvdXQoYS5ELF8ucmEoMjMpKSl9LFBtPWZ1bmN0aW9uKGEpe2lmKGEubCl7aWYoIWEuQylyZXR1cm47Y2xlYXJUaW1lb3V0KGEubCk7YS5sPTB9Zm9yKHZhciBiPWpsLkIoKTthLm8ubGVuZ3RoOyl7dmFyIGM9YS5vLnNoaWZ0KCk7dHJ5e2MoKSxhLmorK31jYXRjaChlKXthLkErKyx3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZXJyb3ImJndpbmRvdy5jb25zb2xlLmVycm9yKFwiRXhjZXB0aW9uIGluIHF1ZXVlZCBHUFQgY29tbWFuZFwiLGUpLGIuZXJyb3IoR2woU3RyaW5nKGUubWVzc2FnZSkpKX1jPVJtKGEpO2lmKDE9PT1jKXtTbShhKTticmVha31lbHNlIDI9PT1jJiYoYS5tPWEubXx8Xy5OaSgpKX1iLmluZm8oSGwoU3RyaW5nKGEuaiksU3RyaW5nKGEuQSkpKTtpZihhLm0pe3ZhciBkPV8uTmkoKS1hLm07YS5tPTA7c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB2b2lkIGtiKFwiZ3B0X2lucHV0X3BlbmRpbmdcIixmdW5jdGlvbihlKXtsYihlKTtFKGUsXCJjdHhcIiw0KTtFKGUsXCJjb3JyXCIsYmIoXy5yKSk7RShlLFwicHRyXCIsZCl9LHt2YToxfSl9LDEpfX0sVG09ZnVuY3Rpb24oYSxiKXthLm89Xy5GYihhLm8pLmNvbmNhdChfLkZiKGIuZmlsdGVyKExjKSkpO18ueSgxNzMpJiYxPT09Um0oYSk/U20oYSk6UG0oYSl9O1FtLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoOysrYyliW2NdPWFyZ3VtZW50c1tjXTt0aGlzLkM9Xy55KDE3Mik7VG0odGhpcyxiKTtyZXR1cm4gdGhpcy5qfTt2YXIgVW09ZnVuY3Rpb24oKXtpZihfLnkoMTc2KSl7dmFyIGE9WGIoKS5jbWQ7aWYoIWF8fEFycmF5LmlzQXJyYXkoYSkpe3ZhciBiPW5ldyBRbTtYYigpLmNtZD1nbChiKTthJiYwPGEubGVuZ3RoJiZUbShiLGEpfX1lbHNlIGlmKGE9WGIoKS5jbWQsIWF8fEFycmF5LmlzQXJyYXkoYSkpYj1uZXcgT20sWGIoKS5jbWQ9Z2woYiksYSYmMDxhLmxlbmd0aCYmYi5wdXNoLmFwcGx5KGIsYSl9O1VtPUcoNzcsVW0pO3ZhciBWbT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhWbSxNKTt2YXIgWG09ZnVuY3Rpb24oYSl7a2YodGhpcyxhLFdtLG51bGwpfTtLKFhtLE0pO3ZhciBXbT1bMTNdO3ZhciBabT1mdW5jdGlvbihhKXtrZih0aGlzLGEsWW0sbnVsbCl9O0soWm0sTSk7dmFyIFltPVsxM107dmFyICRtPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKCRtLE0pO3ZhciBhbj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhhbixNKTt2YXIgZG49ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGJuLGNuKX07SyhkbixNKTt2YXIgZW49ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soZW4sTSk7dmFyIGJuPVsxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiw0NSwyMywyNywyOCwzOF0sY249W1s0LDQxXSxbMzksNDhdXTtlbi5wcm90b3R5cGUuZ2V0SHRtbD1mdW5jdGlvbigpe3JldHVybiBCKHRoaXMsMSl9O3ZhciBnbj1mdW5jdGlvbihhKXtrZih0aGlzLGEsZm4sbnVsbCl9O0soZ24sTSk7dmFyIGhuPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGhuLE0pO3ZhciBmbj1bMV0sam49ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGhuO3JldHVybiBxZihiLDEsYSwwKX0sa249ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcWYoYSwyLGIsMCl9LGxuPWZ1bmN0aW9uKGEsYil7eGYoYSwxLGIsaG4pfTt2YXIgbm49ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3c7YTp7dHJ5e2lmKGEpe3ZhciBkPWEuZ2V0SXRlbShcImdvb2dsZV9leHBlcmltZW50X21vZFwiKTticmVhayBhfX1jYXRjaChoKXt9ZD1udWxsfXZhciBlPWR8fFwiXCI7ZD1udWxsO3RyeXtpZihkPXpmKGduLGUpLGUpe3ZhciBmPXpmKGduLGUpO2xuKGYsa24oam4oMSksLTEpKTtmLm0oKX19Y2F0Y2goaCl7bW4oZSksZD1uZXcgZ259Zj11ZihkLGhuLDEpO2lmKGY9WmMoZixmdW5jdGlvbihoKXtyZXR1cm4gbmYoaCwxLDApPT09Yn0pKXt2YXIgZz1uZihmLDIsMCk7aWYobnVsbD09PWd8fGlzTmFOKGcpKW1uKGUpO2Vsc2UgcmV0dXJuIGd9Yz1FZyhjKTtpZihudWxsPT09YylyZXR1cm4gbnVsbDtmP2tuKGYsYyk6bG4oZCxrbihqbihiKSxjKSk7cmV0dXJuIEZnKGEsZC5tKCkpP2M6bnVsbH0sbW49ZnVuY3Rpb24oYSl7LjAxPk1hdGgucmFuZG9tKCkmJlZoKHtkYXRhOmF9LFwibHNfdGFtcFwiKX07dmFyIG9uPXt9LHBuPShvblszXT1cImh0dHBzOi8vczAuMm1kbi5uZXQvYWRzL3JpY2htZWRpYS9zdHVkaW8vbXUvdGVtcGxhdGVzL2hpZmkvaGlmaS5qc1wiLG9uKSxxbj17fSxybj0ocW5bM109XCJodHRwczovL3MwLjJtZG4ubmV0L2Fkcy9yaWNobWVkaWEvc3R1ZGlvX2NhbmFyeS9tdS90ZW1wbGF0ZXMvaGlmaS9oaWZpX2NhbmFyeS5qc1wiLHFuKTt2YXIgc249ZnVuY3Rpb24oYSl7dGhpcy5qPWE7dGhpcy5sPWplKCl9LHRuPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O18uVmMoYSxmdW5jdGlvbihjKXtiW2Mual09Yy5sfSk7cmV0dXJuIGJ9O3ZhciB2bix3bix4bjt2bj1mdW5jdGlvbigpe3JldHVybiAwIT1fLnVuKGRvY3VtZW50KX07Xy51bj1mdW5jdGlvbihhKXtyZXR1cm57dmlzaWJsZToxLGhpZGRlbjoyLHByZXJlbmRlcjozLHByZXZpZXc6NCx1bmxvYWRlZDo1fVthLnZpc2liaWxpdHlTdGF0ZXx8YS53ZWJraXRWaXNpYmlsaXR5U3RhdGV8fGEubW96VmlzaWJpbGl0eVN0YXRlfHxcIlwiXXx8MH07d249ZnVuY3Rpb24oYSl7dmFyIGI7YS52aXNpYmlsaXR5U3RhdGU/Yj1cInZpc2liaWxpdHljaGFuZ2VcIjphLm1velZpc2liaWxpdHlTdGF0ZT9iPVwibW96dmlzaWJpbGl0eWNoYW5nZVwiOmEud2Via2l0VmlzaWJpbGl0eVN0YXRlJiYoYj1cIndlYmtpdHZpc2liaWxpdHljaGFuZ2VcIik7cmV0dXJuIGJ9O3huPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hLmhpZGRlbj9hLmhpZGRlbjpudWxsIT1hLm1vekhpZGRlbj9hLm1vekhpZGRlbjpudWxsIT1hLndlYmtpdEhpZGRlbj9hLndlYmtpdEhpZGRlbjpudWxsfTt2YXIgem4seW47em49ZnVuY3Rpb24oKXt0aGlzLndhc1BsYVRhZ1Byb2Nlc3NlZD0hMTt0aGlzLndhc1JlYWN0aXZlQWRDb25maWdSZWNlaXZlZD17fTt0aGlzLmFkQ291bnQ9e307dGhpcy53YXNSZWFjdGl2ZUFkVmlzaWJsZT17fTt0aGlzLnN0YXRlRm9yVHlwZT17fTt0aGlzLnJlYWN0aXZlVHlwZUVuYWJsZWRJbkFzZmU9e307dGhpcy53YXNSZWFjdGl2ZVRhZ1JlcXVlc3RTZW50PSExO3RoaXMucmVhY3RpdmVUeXBlRGlzYWJsZWRCeVB1Ymxpc2hlcj17fTt0aGlzLnRhZ1NwZWNpZmljU3RhdGU9e307dGhpcy5pbXByb3ZlQ29sbGlzaW9uRGV0ZWN0aW9uPTE7dGhpcy5tZXNzYWdlVmFsaWRhdGlvbkVuYWJsZWQ9ITE7dGhpcy5mbG9hdGluZ0Fkc1N0YWNraW5nPW5ldyB5bn07Xy5Bbj1mdW5jdGlvbihhKXthLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlP251bGw9PWEuZ29vZ2xlX3JlYWN0aXZlX2Fkc19nbG9iYWxfc3RhdGUuZmxvYXRpbmdBZHNTdGFja2luZyYmKGEuZ29vZ2xlX3JlYWN0aXZlX2Fkc19nbG9iYWxfc3RhdGUuZmxvYXRpbmdBZHNTdGFja2luZz1uZXcgeW4pOmEuZ29vZ2xlX3JlYWN0aXZlX2Fkc19nbG9iYWxfc3RhdGU9bmV3IHpuO3JldHVybiBhLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlfTt5bj1mdW5jdGlvbigpe3RoaXMubWF4WkluZGV4UmVzdHJpY3Rpb25zPXt9O3RoaXMubmV4dFJlc3RyaWN0aW9uSWQ9MDt0aGlzLm1heFpJbmRleExpc3RlbmVycz1bXX07dmFyIEJuLEZuLEduLEhuO0JuPTcyOCoxLjM4O18uQ249ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIZWlnaHQ+PWEuaW5uZXJXaWR0aH07Xy5Fbj1mdW5jdGlvbihhKXt2YXIgYj1fLkRuKGEpLmNsaWVudFdpZHRoO2E9YS5pbm5lcldpZHRoO3JldHVybiBiJiZhP2IvYTowfTtGbj1mdW5jdGlvbihhLGIpe3JldHVybihhPV8uRG4oYSkuY2xpZW50V2lkdGgpP2E+KHZvaWQgMD09PWI/NDIwOmIpPzMyNzY4OjMyMD5hPzY1NTM2OjA6MTYzODR9O0duPWZ1bmN0aW9uKGEpe3JldHVybihhPV8uRW4oYSkpPzEuMDU8YT8yNjIxNDQ6Ljk1PmE/NTI0Mjg4OjA6MTMxMDcyfTtfLkRuPWZ1bmN0aW9uKGEpe2E9YS5kb2N1bWVudDt2YXIgYj17fTthJiYoYj1cIkNTUzFDb21wYXRcIj09YS5jb21wYXRNb2RlP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keSk7cmV0dXJuIGJ8fHt9fTtIbj1mdW5jdGlvbihhKXt2YXIgYj1fLkFuKHdpbmRvdyk7Yi5hZENvdW50PWIuYWRDb3VudHx8e307Yi5hZENvdW50W2FdPWIuYWRDb3VudFthXSsxfHwxfTtfLkluPWZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hLnBhZ2VZT2Zmc2V0PyhhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8YS5kb2N1bWVudC5ib2R5LnBhcmVudE5vZGV8fGEuZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wOmEucGFnZVlPZmZzZXR9O3ZhciBKbj1mdW5jdGlvbihhKXthOntmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9Xy5yO3ZhciBkPWFbYl07dmFyIGU9Yy5kb2N1bWVudDtlLmVsZW1lbnRGcm9tUG9pbnQoZC54LGQueSk7dmFyIGY9ZC54O2Q9ZC55O2UuaGFzT3duUHJvcGVydHkoXCJfZ29vZ19lZnBfY2FsbGVkX1wiKXx8KGUuX2dvb2dfZWZwX2NhbGxlZF89ZS5lbGVtZW50RnJvbVBvaW50KGYsZCkpO2lmKGU9ZS5lbGVtZW50RnJvbVBvaW50KGYsZCkpaWYoXCJmaXhlZFwiPT1maShlLFwicG9zaXRpb25cIikpYz1lO2Vsc2V7Yzp7Yz1jLmRvY3VtZW50O2ZvcihlPWUub2Zmc2V0UGFyZW50O2UmJmUhPWMuYm9keTtlPWUub2Zmc2V0UGFyZW50KWlmKFwiZml4ZWRcIj09ZmkoZSxcInBvc2l0aW9uXCIpKXtjPWU7YnJlYWsgY31jPW51bGx9Yz1jP2M6bnVsbH1lbHNlIGM9bnVsbDtpZihjKXthPWM7YnJlYWsgYX19YT1udWxsfXJldHVybiBudWxsIT1hfSxLbj1mdW5jdGlvbihhLGIpe3ZhciBjPV8uci5pbm5lcldpZHRoO2Zvcih2YXIgZD1bXSxlPTA7Mz5lO2UrKylmb3IodmFyIGY9MDszPmY7ZisrKWQucHVzaCh7eDpmLzIqYyx5OmErZS8yKihiLWEpfSk7cmV0dXJuIGR9O3ZhciBMbixNbjtMbj1mdW5jdGlvbihhKXt0cnl7YS5zZXRJdGVtKFwiX19zdG9yYWdlX3Rlc3RfX1wiLFwiX19zdG9yYWdlX3Rlc3RfX1wiKTt2YXIgYj1hLmdldEl0ZW0oXCJfX3N0b3JhZ2VfdGVzdF9fXCIpO2EucmVtb3ZlSXRlbShcIl9fc3RvcmFnZV90ZXN0X19cIik7cmV0dXJuXCJfX3N0b3JhZ2VfdGVzdF9fXCI9PWJ9Y2F0Y2goYyl7cmV0dXJuITF9fTtfLk5uPWZ1bmN0aW9uKGEpe3RyeXtpZihudWxsPT1hfHwhTG4oYSkpcmV0dXJuIG51bGw7dmFyIGI9YS5nZXRJdGVtKFwiX19sc3ZfX1wiKTtpZighYilyZXR1cm5bXTt0cnl7dmFyIGM9SlNPTi5wYXJzZShiKX1jYXRjaChkKXt9cmV0dXJuIUFycmF5LmlzQXJyYXkoYyl8fF8uWGMoYyxmdW5jdGlvbihkKXtyZXR1cm4hXy5BKE51bWJlcixcImlzSW50ZWdlclwiKS5jYWxsKE51bWJlcixkKX0pPyhhLnJlbW92ZUl0ZW0oXCJfX2xzdl9fXCIpLFtdKTpNbihjKX1jYXRjaChkKXtyZXR1cm4gbnVsbH19O01uPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9bXTphO3ZhciBiPURhdGUubm93KCk7cmV0dXJuIF8uVGEoYSxmdW5jdGlvbihjKXtyZXR1cm4gMzZFNT5iLWN9KX07Xy5Pbj1mdW5jdGlvbihhKXtyZXR1cm4hIWEmJjE+YS5sZW5ndGh9O3ZhciBQbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9MDt0cnl7ZHw9YSE9YS50b3A/NTEyOjAsZHw9YS5uYXZpZ2F0b3ImJi9BbmRyb2lkIDIvLnRlc3QoYS5uYXZpZ2F0b3IudXNlckFnZW50KT8xMDQ4NTc2OjB9Y2F0Y2goZyl7ZHw9MzJ9dmFyIGU9MDt0cnl7ZXw9Rm4oYSwyNTAwKTtpZihfLnkoMzA5KSl7dmFyIGY9Xy5EbihhKS5jbGllbnRIZWlnaHQ7ZXw9Zj8zMjA+Zj8tMjE0NzQ4MzY0ODowOjEwNzM3NDE4MjR9ZXw9R24oYSk7YiYmIV8uT24oXy5ObihjKSkmJihlfD0xMzQyMTc3MjgpfWNhdGNoKGcpe2V8PTMyfXJldHVybiBkfGV9O3ZhciBRbj1mdW5jdGlvbigpe3ZhciBhPXt9O3JldHVybiBhLmFkc2Vuc2VfY2hhbm5lbF9pZHM9XCJjaGFubmVsXCIsYS5hZHNlbnNlX2FkX3R5cGVzPVwiYWRfdHlwZVwiLGEuYWRzZW5zZV9hZF9mb3JtYXQ9XCJmb3JtYXRcIixhLmFkc2Vuc2VfYmFja2dyb3VuZF9jb2xvcj1cImNvbG9yX2JnXCIsYS5hZHNlbnNlX2JvcmRlcl9jb2xvcj1cImNvbG9yX2JvcmRlclwiLGEuYWRzZW5zZV9saW5rX2NvbG9yPVwiY29sb3JfbGlua1wiLGEuYWRzZW5zZV90ZXh0X2NvbG9yPVwiY29sb3JfdGV4dFwiLGEuYWRzZW5zZV91cmxfY29sb3I9XCJjb2xvcl91cmxcIixhLnBhZ2VfdXJsPVwidXJsXCIsYS5hZHNlbnNlX2FsbG93X2V4cGFuZGFibGVfYWRzPVwiZWFcIixhLmFkc2Vuc2VfZW5jb2Rpbmc9XCJvZVwiLGEuYWRzZW5zZV9mYW1pbHlfc2FmZT1cImFkc2FmZVwiLGEuYWRzZW5zZV9mbGFzaF92ZXJzaW9uPVwiZmxhc2hcIixhLmFkc2Vuc2VfZm9udF9mYWNlPVwiZlwiLGEuYWRzZW5zZV9oaW50cz1cImhpbnRzXCIsYS5hZHNlbnNlX2tleXdvcmRfdHlwZT1cImt3X3R5cGVcIixhLmFkc2Vuc2Vfa2V5d29yZHM9XCJrd1wiLGEuYWRzZW5zZV90ZXN0X21vZGU9XCJhZHRlc3RcIixhLmFsdGVybmF0ZV9hZF9pZnJhbWVfY29sb3I9XCJhbHRfY29sb3JcIixhLmFsdGVybmF0ZV9hZF91cmw9XCJhbHRlcm5hdGVfYWRfdXJsXCIsYS5kZW1vZ3JhcGhpY19hZ2U9XCJjdXN0X2FnZVwiLGEuZGVtb2dyYXBoaWNfZ2VuZGVyPVwiY3VzdF9nZW5kZXJcIixhLmRvY3VtZW50X2xhbmd1YWdlPVwiaGxcIixhfTt2YXIgUm49ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1udWxsO0FycmF5LmlzQXJyYXkoZCk/Zj1kOktjKGQpP2Y9Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGQpOmQ/Zj1bZF06Xy55KDI2Mil8fChmPVtdKTt2YXIgZz1cInN0cmluZ1wiPT09dHlwZW9mIGMmJiFGZChjKSxoPV8ueSgyNjIpPyEhZiYmZi5ldmVyeShmdW5jdGlvbihrKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGt9KTohMDtnJiZoPyhfLnkoMjYyKXx8KGY9Zi5tYXAoZnVuY3Rpb24oayl7cmV0dXJuIFN0cmluZyhrKX0pKSwoZD0oej11ZihiLEpqLDkpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGspe3JldHVybiBLaihrKT09PWN9KSk/TWooZCxmKTooZD1NaihMaihuZXcgSmosYyksZikseGYoYiw5LGQsSmopKSxlLmluZm8oemwoYyxmLmpvaW4oKSxhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhKSk6ZS5KKHFsKFwiU2xvdC5zZXRUYXJnZXRpbmdcIixbYyxkXSksbnVsbCxhKX0sU249ZnVuY3Rpb24oYSxiLGMsZCl7aWYobnVsbD09Y3x8XCJvYmplY3RcIiE9PXR5cGVvZiBjKWQuZXJyb3IocWwoXCJTbG90LnVwZGF0ZVRhcmdldGluZ0Zyb21NYXBcIixbY10pLG51bGwsYSk7ZWxzZSBmb3IodmFyIGU9Xy5GKF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGMpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSlmPWYudmFsdWUsUm4oYSxiLGYsY1tmXSxkKX07dmFyIFRuPWZ1bmN0aW9uKCl7dGhpcy5sPXt9O3RoaXMuaj1uZXcgU2o7RCh0aGlzLmosMjYsTmsoKSk7KF8ueSg0MTcpJiYyPT09UmcoKXx8Xy5EaigzNikpJiZEKHRoaXMuaiwxNSwhMCl9LFVuPWZ1bmN0aW9uKGEpe3ZhciBiPVRuLkIoKSxjPUIoYSwyKTtjJiYhYi5sLmhhc093blByb3BlcnR5KGMpJiYoYi5sW2NdPWEpfSxWbj1mdW5jdGlvbigpe3JldHVybiBUbi5CKCkubH0sV249ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5sW2JdfHxudWxsfTtJYyhUbik7dmFyIFhuPVwiXCIsWW49bnVsbCxabj1mdW5jdGlvbigpe1hufHwoWG49cWooMil8fFwiMS0wLTM3XCIpO3JldHVybiBYbn0sJG49ZnVuY3Rpb24oKXtpZihudWxsPT1Zbil7Zm9yKHZhciBhPV8ucmooMSksYj1bXSxjPTA7YzxhLmxlbmd0aDtjKz0yKXBnKGFbY10sYVtjKzFdLGIpO1luPWIuam9pbihcIiZcIil9cmV0dXJuIFlufSxhbz1mdW5jdGlvbihhKXt2YXIgYj1qbC5CKCksYz1uZXcgUGo7aWYoIWF8fCFfLk1jKGEpKXJldHVybiBudWxsO3ZhciBkPSExO18uSmIoYSxmdW5jdGlvbihlLGYpe3N3aXRjaChmKXtjYXNlIFwiYWxsb3dPdmVybGF5RXhwYW5zaW9uXCI6XCJib29sZWFuXCI9PT10eXBlb2YgZT9EKGMsMSxhLmFsbG93T3ZlcmxheUV4cGFuc2lvbik6KGIuZXJyb3Iod20oXCJhbGxvd092ZXJsYXlFeHBhbnNpb25cIixTdHJpbmcoYS5hbGxvd092ZXJsYXlFeHBhbnNpb24pKSksZD0hMCk7YnJlYWs7Y2FzZSBcImFsbG93UHVzaEV4cGFuc2lvblwiOlwiYm9vbGVhblwiPT09dHlwZW9mIGU/RChjLDIsYS5hbGxvd1B1c2hFeHBhbnNpb24pOihiLmVycm9yKHdtKFwiYWxsb3dQdXNoRXhwYW5zaW9uXCIsU3RyaW5nKGEuYWxsb3dQdXNoRXhwYW5zaW9uKSkpLGQ9ITApO2JyZWFrO2Nhc2UgXCJzYW5kYm94XCI6ITA9PT1lP1FqKGMsYS5zYW5kYm94KTooYi5lcnJvcih3bShcInNhbmRib3hcIixTdHJpbmcoYS5zYW5kYm94KSkpLGQ9ITApO2JyZWFrO2Nhc2UgXCJ1c2VVbmlxdWVEb21haW5cIjpcImJvb2xlYW5cIj09PXR5cGVvZiBlP0QoYyw0LGEudXNlVW5pcXVlRG9tYWluKTpudWxsIT09ZSYmKGIuZXJyb3Iod20oXCJ1c2VVbmlxdWVEb21haW5cIixTdHJpbmcoYS51c2VVbmlxdWVEb21haW4pKSksZD0hMCk7YnJlYWs7ZGVmYXVsdDpiLkoodm0oZikpfX0pO3JldHVybiBkP251bGw6Y30sYm89ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFBqO2E9Xy5GKGEpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpaWYoYz1jLnZhbHVlKXtpZihudWxsIT1CKGMsMSkpe3ZhciBkPXgoYywxKTtEKGIsMSxkKX1udWxsIT1CKGMsMikmJihkPXgoYywyKSxEKGIsMixkKSk7bnVsbCE9QihjLDMpJiZRaihiLHgoYywzKSk7bnVsbCE9QihjLDQpJiYoYz14KGMsNCksRChiLDQsYykpfXJldHVybiBifTt2YXIgY289ZnVuY3Rpb24oYSxiKXt0aGlzLmw9YTt0aGlzLmo9Yn07Y28ucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubH07Y28ucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O3ZhciBmbz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9amwuQigpLGQ9V24oVG4uQigpLGEuZ2V0U2xvdEVsZW1lbnRJZCgpKTt0aGlzLnNldD1TKDQwLGZ1bmN0aW9uKGUsZil7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBlfHwhZnx8dm9pZCAwPT09UW4oKVtlXSlyZXR1cm4gYy5KKHFsKFwiU2xvdC5zZXRcIixbZSxmXSksbnVsbCxhKSxiO3ZhciBnPSh6PXVmKGQsSmosMyksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24oaCl7cmV0dXJuIEtqKGgpPT09ZX0pO2c/TWooZyxbZl0pOihnPUxqKG5ldyBKaixlKSxzZihnLDIsZikseGYoZCwzLGcsSmopKTtyZXR1cm4gYn0pO3RoaXMuZ2V0PVMoNDEsZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBlKXJldHVybiBjLkoocWwoXCJTbG90LmdldFwiLFtlXSksbnVsbCxhKSxudWxsO3ZhciBmPSh6PXVmKGQsSmosMyksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24oZyl7cmV0dXJuIEtqKGcpPT09ZX0pO3JldHVybihmPWYmJkIoZiwyKSk/ZlswXTpudWxsfSk7dGhpcy5nZXRBdHRyaWJ1dGVLZXlzPVMoNDIsZnVuY3Rpb24oKXtyZXR1cm4gdWYoZCxKaiwzKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEtqKGUpfSl9KTt0aGlzLmFkZFNlcnZpY2U9Uyg0MyxmdW5jdGlvbihlKXtlPXdqLmdldChlKTtpZighZSlyZXR1cm4gYy5KKHNtKGEuZ2V0U2xvdElkKCkudG9TdHJpbmcoKSksbnVsbCxhKSxiO2lmKCh6PUIoZCw0KSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosZS5aKCkpKXJldHVybiBjLkood2woZS5aKCksYS5nZXRTbG90SWQoKS50b1N0cmluZygpKSxlLGEpLGI7ZS54YShhLGQpO3JldHVybiBifSk7dGhpcy5kZWZpbmVTaXplTWFwcGluZz1TKDQ0LGZ1bmN0aW9uKGUpe2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IEVycm9yKFwiU2l6ZSBtYXBwaW5nIGhhcyB0byBiZSBhbiBhcnJheVwiKTtlPWUubWFwKHBrKTt3ZihkLDYsZSk7cmV0dXJuIGJ9LGZ1bmN0aW9uKGUsZil7YmwoZSxmKTtkaChcIkluY29ycmVjdCB1c2FnZSBvZiBnb29nbGV0YWcuU2xvdCBkZWZpbmVTaXplTWFwcGluZzogXCIrZi5tZXNzYWdlKTtyZXR1cm4gYn0pO3RoaXMuc2V0Q2xpY2tVcmw9Uyg0NSxmdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGUpcmV0dXJuIGMuSihxbChcIlNsb3Quc2V0Q2xpY2tVcmxcIixbZV0pLG51bGwsYSksYjtEKGQsNyxlKTtyZXR1cm4gYn0pO3RoaXMuc2V0Q2F0ZWdvcnlFeGNsdXNpb249Uyg0NixmdW5jdGlvbihlKXtcInN0cmluZ1wiIT09dHlwZW9mIGV8fEZkKGUpP2MuSihxbChcIlNsb3Quc2V0Q2F0ZWdvcnlFeGNsdXNpb25cIixbZV0pLG51bGwsYSk6KCh6PUIoZCw4KSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosZSl8fHNmKGQsOCxlKSxjLmluZm8oeGwoZSksbnVsbCxhKSk7cmV0dXJuIGJ9KTt0aGlzLmNsZWFyQ2F0ZWdvcnlFeGNsdXNpb25zPVMoNDcsZnVuY3Rpb24oKXtEKGQsOCxbXSk7Yy5pbmZvKHlsKCksbnVsbCxhKTtyZXR1cm4gYn0pO3RoaXMuZ2V0Q2F0ZWdvcnlFeGNsdXNpb25zPVMoNDgsZnVuY3Rpb24oKXtyZXR1cm4gQihkLDgpLnNsaWNlKCl9KTt0aGlzLnNldFRhcmdldGluZz1TKDQ5LGZ1bmN0aW9uKGUsZil7Um4oYSxkLGUsZixjKTtyZXR1cm4gYn0pO3RoaXMudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcD1TKDY0OSxmdW5jdGlvbihlKXtTbihhLGQsZSxjKTtyZXR1cm4gYn0pO3RoaXMuY2xlYXJUYXJnZXRpbmc9Uyg1MCxmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiBmayhkLFtdKSxjLmluZm8oQWwoYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSksYjt2YXIgZj11ZihkLEpqLDkpLGc9Xy5BKGYsXCJmaW5kSW5kZXhcIikuY2FsbChmLGZ1bmN0aW9uKGgpe3JldHVybiBLaihoKT09PWV9KTtpZigwPmcpcmV0dXJuIGMuSih4bShlLGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEpLGI7Zi5zcGxpY2UoZywxKTtmayhkLGYpO2MuaW5mbyh5bShlLGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEpO3JldHVybiBifSk7dGhpcy5nZXRUYXJnZXRpbmc9Uyg1MSxmdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGUpcmV0dXJuIGMuSihxbChcIlNsb3QuZ2V0VGFyZ2V0aW5nXCIsW2VdKSxudWxsLGEpLFtdO3ZhciBmPSh6PXVmKGQsSmosOSksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24oZyl7cmV0dXJuIEtqKGcpPT09ZX0pO3JldHVybiBmP0IoZiwyKS5zbGljZSgpOltdfSk7dGhpcy5nZXRUYXJnZXRpbmdLZXlzPVMoNTIsZnVuY3Rpb24oKXtyZXR1cm4gdWYoZCxKaiw5KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEtqKGUpfSl9KTt0aGlzLnNldENvbGxhcHNlRW1wdHlEaXY9Uyg1MyxmdW5jdGlvbihlLGYpe2Y9dm9pZCAwPT09Zj8hMTpmO2lmKFwiYm9vbGVhblwiIT09dHlwZW9mIGV8fFwiYm9vbGVhblwiIT09dHlwZW9mIGYpcmV0dXJuIGMuSihxbChcIlNsb3Quc2V0Q29sbGFwc2VFbXB0eURpdlwiLFtlLGZdKSxudWxsLGEpLGI7RChkLDEwLGUpO0QoZCwxMSxlJiZmKTtrYihcImdwdF9jZWRcIixmdW5jdGlvbihnKXt2YXIgaD14KGQsMTEpP1widFwiOlwiZlwiO0UoZyxcInNjXCIsaCk7RShnLFwibGV2ZWxcIixcInNsb3RcIik7bGIoZyl9KTtmJiYhZSYmYy5KKEJsKGEuZ2V0U2xvdElkKCkudG9TdHJpbmcoKSksbnVsbCxhKTtyZXR1cm4gYn0pO3RoaXMuZ2V0QWRVbml0UGF0aD1TKDU0LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWRVbml0UGF0aCgpfSk7dGhpcy5nZXRTbG90RWxlbWVudElkPVMoNTk4LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0U2xvdEVsZW1lbnRJZCgpfSk7dGhpcy5zZXRGb3JjZVNhZmVGcmFtZT1TKDU1LGZ1bmN0aW9uKGUpe2lmKFwiYm9vbGVhblwiIT09dHlwZW9mIGUpcmV0dXJuIGMuSihmbShcIlNsb3Quc2V0Rm9yY2VTYWZlRnJhbWVcIixTdHJpbmcoZSkpLG51bGwsYSksYjtEKGQsMTIsZSk7cmV0dXJuIGJ9KTt0aGlzLnNldFNhZmVGcmFtZUNvbmZpZz1TKDU2LGZ1bmN0aW9uKGUpe3ZhciBmPWFvKGUpO2lmKCFmKXJldHVybiBjLmVycm9yKHFsKFwiU2xvdC5zZXRTYWZlRnJhbWVDb25maWdcIixbZV0pLG51bGwsYSksYjt2ZihkLDEzLGYpO3JldHVybiBifSk7dGhpcy5nZXRSZXNwb25zZUluZm9ybWF0aW9uPVMoMzU1LGZ1bmN0aW9uKCl7cmV0dXJuIGEuSH0pO3RoaXMuZ2V0TmFtZT1TKDE3MCxmdW5jdGlvbigpe3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKFwiZ2V0TmFtZSBvbiBnb29nbGV0YWcuU2xvdCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSBnZXRBZFVuaXRQYXRoIGluc3RlYWQuXCIpO3ZhciBlPW5ldyBXayhcInNsb3RfZ2V0X25hbWVcIik7bGIoZSk7WWsoZSk7cmV0dXJuIGEuby5nZXRBZFVuaXRQYXRoKCl9KTt0aGlzLmdldFNsb3RJZD1TKDU3OSxmdW5jdGlvbigpe3JldHVybiBnbChhLmdldFNsb3RJZCgpKX0pO3RoaXMuZ2V0U2VydmljZXM9Uyg1ODAsZnVuY3Rpb24oKXtyZXR1cm4gQihkLDQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gQWooZSl9KX0pO3RoaXMuZ2V0U2l6ZXM9Uyg1ODEsZnVuY3Rpb24oZSxmKXtyZXR1cm4oZT1xayhkLGUsZikpP2UubWFwKGZ1bmN0aW9uKGcpe3JldHVybiB4KGcsMyk/XCJmbHVpZFwiOm5ldyBjbyhCKGcsMSksQihnLDIpKX0pOm51bGx9KTt0aGlzLmdldENsaWNrVXJsPVMoNTgyLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPUIoZCw3KT9kLmdldENsaWNrVXJsKCk6XCJcIn0pO3RoaXMuZ2V0VGFyZ2V0aW5nTWFwPVMoNTgzLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXt9LGY9Xy5GKHVmKGQsSmosOSkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWc9Zy52YWx1ZSxlW0tqKGcpXT1CKGcsMik7cmV0dXJuIGV9KTt0aGlzLmdldE91dE9mUGFnZT1TKDU4NCxmdW5jdGlvbigpe3JldHVybiAwIT1nayhkKX0pO3RoaXMuZ2V0Q29sbGFwc2VFbXB0eURpdj1TKDU4NSxmdW5jdGlvbigpe3JldHVybiBudWxsIT1CKGQsMTApP3goZCwxMCk6bnVsbH0pO3RoaXMuZ2V0RGl2U3RhcnRzQ29sbGFwc2VkPVMoNTg2LGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPUIoZCwxMSk/eChkLDExKTpudWxsfSk7dGhpcy5nZXRDb250ZW50VXJsPVMoNTg3LGZ1bmN0aW9uKCl7cmV0dXJuIGEuVCgpfSk7dGhpcy5nZXRGaXJzdExvb2s9Uyg1ODgsZnVuY3Rpb24oKXtkaChcIlRoZSBnZXRGaXJzdExvb2sgbWV0aG9kIG9mIGdvb2dsZXRhZy5TbG90IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1cGRhdGUgeW91ciBjb2RlIHRvIG5vIGxvbmdlciBjYWxsIHRoaXMgbWV0aG9kLlwiKTtyZXR1cm4gMH0pO3RoaXMuZ2V0RXNjYXBlZFFlbVF1ZXJ5SWQ9Uyg1OTEsZnVuY3Rpb24oKXtyZXR1cm4gZW8oYSl9KTt0aGlzLmdldEh0bWw9Uyg1OTIsZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRIdG1sKCl9KX07Xy5KKGZvLHlqKTt2YXIgZ289ZnVuY3Rpb24oKXt0aGlzLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZD10aGlzLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZD10aGlzLmxpbmVJdGVtSWQ9dGhpcy5jcmVhdGl2ZUlkPXRoaXMuY2FtcGFpZ25JZD10aGlzLmFkdmVydGlzZXJJZD1udWxsO3RoaXMuaXNCYWNrZmlsbD0hMTt0aGlzLmVuY3J5cHRlZFRyb3VibGVzaG9vdGluZ0luZm89dGhpcy5jcmVhdGl2ZVRlbXBsYXRlSWQ9dGhpcy5jb21wYW55SWRzPXRoaXMueWllbGRHcm91cElkcz1udWxsfTt2YXIgaG89ZnVuY3Rpb24oYSl7dGhpcy5nZXRJZD1TKDU5MyxmdW5jdGlvbigpe3JldHVybiBhLm99KTt0aGlzLmdldEFkVW5pdFBhdGg9Uyg1OTQsZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRBZFVuaXRQYXRoKCl9KTt0aGlzLmdldE5hbWU9Uyg1OTUsZnVuY3Rpb24oKXt2YXIgYj1uZXcgV2soXCJzbG90X2lkX2dldF9uYW1lXCIpO2xiKGIpO1lrKGIpO3JldHVybiBhLmx9KTt0aGlzLnRvU3RyaW5nPVMoNTk2LGZ1bmN0aW9uKCl7cmV0dXJuIGEudG9TdHJpbmcoKX0pO3RoaXMuZ2V0RG9tSWQ9Uyg1OTcsZnVuY3Rpb24oKXtyZXR1cm4gYS5qfSl9O18uSihobyx5aik7dmFyIGlvPWZ1bmN0aW9uKGEsYixjKXtlbC5jYWxsKHRoaXMpO3RoaXMubD1hO3RoaXMuYmI9Yjt0aGlzLm89dGhpcy5sK1wiX1wiK3RoaXMuYmI7dGhpcy5qPWN9O18uSihpbyxvbCk7aW8ucHJvdG90eXBlLmdldEFkVW5pdFBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTtpby5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJifTtpby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTtpby5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGhvKHRoaXMpfTt2YXIga289ZnVuY3Rpb24oYSl7ZWwuY2FsbCh0aGlzKTt0aGlzLm89YTt0aGlzLkM9amwuQigpO18ueSg0MTIpfHx0aGlzLkMuaW5mbyhybCh0aGlzLm8udG9TdHJpbmcoKSksbnVsbCx0aGlzKTt0aGlzLlA9dGhpcy5EPXRoaXMuVj1udWxsO3RoaXMuVD1mdW5jdGlvbigpe3JldHVyblwiXCJ9O3RoaXMuRz1udWxsO3RoaXMubT1Hayh0aGlzLm8uZ2V0QWRVbml0UGF0aCgpKTt0aGlzLiRhPVwiXCI7dGhpcy5IPW51bGw7dGhpcy5lYz0hMTt0aGlzLkE9MDt0aGlzLlk9dGhpcy5tYz1udWxsO2pvKHRoaXMpO3RoaXMuTz1cIlwiO3RoaXMuaj1udWxsO3RoaXMuST1cIlwiO3RoaXMuSz1bXTt0aGlzLk09W107dGhpcy5XPTB9O18uSihrbyxvbCk7dmFyIGxvPWZ1bmN0aW9uKGEsYil7YS5LLnB1c2goYil9LG1vPWZ1bmN0aW9uKGEsYil7YS5NLnB1c2goYil9O2tvLnByb3RvdHlwZS5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgZm8odGhpcyl9O2tvLnByb3RvdHlwZS5nZXRBZFVuaXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5nZXRBZFVuaXRQYXRoKCl9O2tvLnByb3RvdHlwZS5nZXRTbG90RWxlbWVudElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5qfTt2YXIgcGE9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ZG9jdW1lbnQ6YjtyZXR1cm4gYS5tY3x8Yi5nZXRFbGVtZW50QnlJZChhLm8uail9O2tvLnByb3RvdHlwZS5nZXRTbG90SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTt2YXIgbm89ZnVuY3Rpb24oYSxiKXthLlQ9Yn0sb289ZnVuY3Rpb24oYSl7Xy55KDQxMil8fGEuQy5pbmZvKHRsKGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEsYS5WKX07a28ucHJvdG90eXBlLlRhPWZ1bmN0aW9uKCl7Xy55KDQxMil8fCh0aGlzLkQ9dGhpcy5DLmluZm8odWwodGhpcy5nZXRBZFVuaXRQYXRoKCkpLG51bGwsdGhpcykpfTt2YXIgcG89ZnVuY3Rpb24oYSl7Xy55KDQxMil8fChhLlA9YS5DLmluZm8odmwoYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSxhLkQpKX07a28ucHJvdG90eXBlLm1iPWZ1bmN0aW9uKCl7Xy55KDQxMil8fCh0aGlzLkc9dGhpcy5HfHxfLk5pKCkpfTt2YXIgcm89ZnVuY3Rpb24oYSl7YS5HPW51bGw7YS5IPW51bGw7YS5qPW51bGw7YS5JPVwiXCI7Xy55KDQxOCl8fHFvKGEsXCJcIik7Zm9yKHZhciBiPV8uRihhLkspLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxjKCk7YS5LLmxlbmd0aD0wfSxzbz1mdW5jdGlvbihhKXtmb3IodmFyIGI9Xy5GKGEuTSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLGMoKTthLk0ubGVuZ3RoPTB9LHRvPWZ1bmN0aW9uKGEsYil7YS5qPWI7aWYoIWEuanx8eChhLmosOCkpYj1udWxsO2Vsc2V7Yj1uZXcgZ287dmFyIGM9ISF4KGEuaiw5KTtiLmlzQmFja2ZpbGw9Yzt2YXIgZD1CKGEuaiwxNSksZT1CKGEuaiwxNik7ZC5sZW5ndGgmJmUubGVuZ3RoJiYoYi5zb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQ9ZFswXSxiLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZD1lWzBdLGN8fChiLmNyZWF0aXZlSWQ9ZFswXSxiLmxpbmVJdGVtSWQ9ZVswXSwoYz1CKGEuaiwyMikpJiZjLmxlbmd0aCYmKGIuY3JlYXRpdmVUZW1wbGF0ZUlkPWNbMF0pKSk7QihhLmosMTcpLmxlbmd0aCYmKGM9QihhLmosMTcpWzBdLGIuYWR2ZXJ0aXNlcklkPWMpO0IoYS5qLDE4KS5sZW5ndGgmJihjPUIoYS5qLDE4KVswXSxiLmNhbXBhaWduSWQ9Yyk7QihhLmosMTkpLmxlbmd0aCYmKGM9QihhLmosMTkpLGIueWllbGRHcm91cElkcz1jKTtCKGEuaiwyMCkubGVuZ3RoJiYoYz1CKGEuaiwyMCksYi5jb21wYW55SWRzPWMpO2M9QihhLmosNDUpO2M9Yy5sZW5ndGgmJlwic3RyaW5nXCIhPT10eXBlb2YgY1swXT9fLlJhKGMsbWYpOmM7Yy5sZW5ndGgmJihiLmVuY3J5cHRlZFRyb3VibGVzaG9vdGluZ0luZm89Y1swXSl9YS5IPWJ9LGVvPWZ1bmN0aW9uKGEpe3JldHVybiBhLmomJkIoYS5qLDM0KXx8XCJcIn07a28ucHJvdG90eXBlLmdldEh0bWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0JhY2tmaWxsKCk/KHdpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihcIlRoaXMgYWQncyBodG1sIGNhbm5vdCBiZSBhY2Nlc3NlZCB1c2luZyB0aGUgZ2V0SHRtbCBtZXRob2Qgb24gZ29vZ2xldGFnLlNsb3QuIFJldHVybmluZyB0aGUgZW1wdHkgc3RyaW5nIGluc3RlYWQuXCIpLFwiXCIpOnRoaXMuSX07a28ucHJvdG90eXBlLmlzQmFja2ZpbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qPyEheCh0aGlzLmosOSk6bnVsbH07a28ucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtvbC5wcm90b3R5cGUudi5jYWxsKHRoaXMpO3NvKHRoaXMpO18ueSg0MTIpfHx0aGlzLkMuaW5mbyh1bSh0aGlzLm8udG9TdHJpbmcoKSksbnVsbCx0aGlzKX07dmFyIGpvPWZ1bmN0aW9uKGEsYil7Ynx8KGI9Kyt0ay5CKCkudik7YS5sPWJ9LHVvPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGI9b2EoYSxiKSk/Yi5xdWVyeVNlbGVjdG9yKCdpZnJhbWVbaWQ9XCInK1VrKGEubykrJ1wiXScpOm51bGx9LHFvPWZ1bmN0aW9uKGEsYil7YS5PPWJ8fFwiXCJ9O3ZhciB2bz1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/e306YTt2YXIgYj12b2lkIDA9PT1iP3t9OmI7dGhpcy5sPWE7dGhpcy5qPWJ9LHdvPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCEoYiYmYiBpbiBhLmwpKXJldHVybiExO2lmKHZvaWQgMD09PWR8fGR8fCFhLmpbYl0pYS5qW2JdPWN8fFwiXCI7cmV0dXJuITB9LHVrPWZ1bmN0aW9uKGEpe3JldHVybiBhLmoucGFnZV91cmx8fG51bGx9LHhvPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVtdLGY9Yi5qO18uSmIoZCxmdW5jdGlvbihnLGgpe2lmKGcpe2c9e3BiOmd9O3ZhciBrPWZbaF0sbD1bXTthLmZvckVhY2goZnVuY3Rpb24obSxuKXsobT1jLmdldChtLmdldFNsb3RJZCgpKSkmJm0ualtoXSYmKGxbbl09bS5qW2hdKX0pO2lmKGwubGVuZ3RofHxrKWwubGVuZ3RoJiYoZy56ZD1sKSxrJiYoZy5uZD1rKSxlLnB1c2goZyl9fSk7cmV0dXJuIGV9O3ZhciB5bz1mdW5jdGlvbihhKXt0aGlzLmlkPWF9LHpvPW5ldyB5bygxKSxBbz1uZXcgeW8oMiksQm89bmV3IHlvKDMpLENvPW5ldyB5bygyMSksUGI9bmV3IHlvKDQpLERvPW5ldyB5byg1KSxFbz1uZXcgeW8oNyksRm89bmV3IHlvKDgpLEdvPW5ldyB5byg5KSxIbz1uZXcgeW8oMTApLElvPW5ldyB5bygxMSksSm89bmV3IHlvKDEyKSxLbz1uZXcgeW8oMTMpLExvPW5ldyB5bygxNCksTW89bmV3IHlvKDE1KSxObz1uZXcgeW8oMTYpLE9vPW5ldyB5bygxNyksUWI9bmV3IHlvKDE4KTt2YXIgST1mdW5jdGlvbigpe3RoaXMuaj1uZXcgdC5NYXA7dGhpcy5sPV8ueSg0MDMpfSxRbz1mdW5jdGlvbihhLGIsYyxkKXtQbyhhLGIsbnVsbCxkKTtQbyhhLGIsYyxkKX0sU289ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIFJvKGEsYixudWxsLGMsZCl9LE9iPWZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIFJvKGEsYixjLGQsZSl9LFJvPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9RyhkLGUsZnVuY3Rpb24oaCxrKXtjbChoLGssITApfSksZz1UbyhiLGMpO2I9YS5qLmdldChnKTtifHwoYj1bXSxhLmouc2V0KGcsYikpO2IucHVzaChmKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaD1hLmouZ2V0KGcpO2gmJihhZChoLGYpLGgubGVuZ3RofHxhLmouZGVsZXRlKGcpKX19LFRvPWZ1bmN0aW9uKGEsYil7YT1hLmlkO3JldHVybiBiP2ErXCJfXCIrYjpTdHJpbmcoYSl9LFBvPWZ1bmN0aW9uKGEsYixjLGQpe2M9YS5qLmdldChUbyhiLGMpKXx8W107Yj17fTtjPV8uRihjKTtmb3IodmFyIGU9Yy5uZXh0KCk7IWUuZG9uZTtiPXtyYjpiLnJifSxlPWMubmV4dCgpKWIucmI9ZS52YWx1ZSxhLmw/dC5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbigpe2YucmIoZCl9fShiKSk6Yi5yYihkKX07SWMoSSk7dmFyIFVvLFZvLFdvLFhvO1VvPW51bGw7Vm89ZnVuY3Rpb24oKXt2YXIgYT1RbigpO3RoaXMuaj1uZXcgdC5NYXA7dGhpcy5vPWE7dGhpcy5sPW5ldyB2byhhKTt0aGlzLnY9ITF9O1dvPWZ1bmN0aW9uKCl7cmV0dXJuIFVvPVVvfHxuZXcgVm99O1hvPWZ1bmN0aW9uKGEsYil7aWYoIV8ueSg0MTIpfHwhYS5qLmdldChiKSl7YS5qLnNldChiLHtTYTohMCxpYzpuZXcgdm8oYS5vKSx3YTpudWxsLFNiOlwiXCJ9KTtfLlIoYixmdW5jdGlvbigpe2Euai5kZWxldGUoYil9KTt2YXIgYz1iLmdldFNsb3RJZCgpO18ueSg0MTIpJiYoXy5SKGIsT2IoSS5CKCksSW8sYyw3NjQsZnVuY3Rpb24oKXt2YXIgZD1hLmouZ2V0KGIpO2Qub2M9Xy5OaSgpO2xvKGIsZnVuY3Rpb24oKXtkLm9jPXZvaWQgMH0pfSkpLF8uUihiLE9iKEkuQigpLENvLGMsNzY3LGZ1bmN0aW9uKCl7dmFyIGQ9YS5qLmdldChiKTtkLkRjPV8uTmkoKTtsbyhiLGZ1bmN0aW9uKCl7ZC5EYz12b2lkIDB9KX0pKSxfLlIoYixPYihJLkIoKSxQYixjLDc2NSxmdW5jdGlvbigpe3ZhciBkPWEuai5nZXQoYik7ZC5DYz1fLk5pKCk7bG8oYixmdW5jdGlvbigpe2QuQ2M9dm9pZCAwfSl9KSksXy5SKGIsT2IoSS5CKCksRG8sYyw3NjYsZnVuY3Rpb24oKXt2YXIgZD1hLmouZ2V0KGIpO2QudWM9Xy5OaSgpO2xvKGIsZnVuY3Rpb24oKXtkLnVjPXZvaWQgMH0pfSkpKTtfLnkoNDE4KSYmXy5SKGIsT2IoSS5CKCksSm8sYyw3NzMsZnVuY3Rpb24oZCl7dmFyIGU9YS5qLmdldChiKTtlLlNiPUIoZCwzMyl8fFwiXCI7bW8oYixmdW5jdGlvbigpe2UuU2I9XCJcIn0pfSkpfX07Xy5Zbz1mdW5jdGlvbihhLGIpe2lmKCFfLnkoNDIyKSl7dmFyIGM9Yi5qP08oYi5qLEJmLDUwKTpudWxsO2lmKGMmJihudWxsIT1CKGMsMSl8fHgoYyw2KSkpcmV0dXJuITF9cmV0dXJuIGEuai5nZXQoYikmJmEuai5nZXQoYikuU2F9O18uWm89ZnVuY3Rpb24oYSxiKXthLmouZ2V0KGIpJiYoYS5qLmdldChiKS5TYT0hMSl9O18uJG89ZnVuY3Rpb24oYSxiKXthLmouZ2V0KGIpJiYoYS5qLmdldChiKS5TYT0hMCl9O1ZvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiW0FkRGF0YTpcIitfLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksdGhpcy5qLGZ1bmN0aW9uKGEpe2E9Xy5GKGEpO3ZhciBiPWEubmV4dCgpLnZhbHVlO2EubmV4dCgpO3JldHVybiBiLnRvU3RyaW5nKCl9KS5qb2luKCkrXCJdXCJ9O3ZhciBhcD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmouaGFzKGIpfSxicD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgdC5NYXA7YT1fLkYoXy5BKGEuaixcImVudHJpZXNcIikuY2FsbChhLmopKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXt2YXIgZD1fLkYoYy52YWx1ZSk7Yz1kLm5leHQoKS52YWx1ZTtkPWQubmV4dCgpLnZhbHVlO2Iuc2V0KGMuZ2V0U2xvdElkKCksZC5pYyl9cmV0dXJuIGJ9LGNwPWZ1bmN0aW9uKGEsYil7Yi5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Euai5kZWxldGUoYyl9KX0sZHA9ZnVuY3Rpb24oYSxiLGMpe2Euai5nZXQoYikmJihhLmouZ2V0KGIpLndhPWMpfSxlcD1mdW5jdGlvbihhLGIpe3JldHVybihhPWEuai5nZXQoYikpJiZhLndhfSxmcD1mdW5jdGlvbihhLGIpe3JldHVybihhPWEuai5nZXQoYikpJiZhLkRjfHxudWxsfSxncD1mdW5jdGlvbihhLGIpe3JldHVybihhPWEuai5nZXQoYikpJiZhLkNjfHxudWxsfSxocD1mdW5jdGlvbihhLGIpe3JldHVybihhPWEuai5nZXQoYikpJiZhLnVjfHxudWxsfTt2YXIganA9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLmFkZEV2ZW50TGlzdGVuZXI9Uyg4NixmdW5jdGlvbihjLGQpe2EuYWRkRXZlbnRMaXN0ZW5lcihjLGQpO3JldHVybiBifSk7dGhpcy5nZXRTbG90cz1TKDU3MyxmdW5jdGlvbigpe3JldHVybiBhLmwubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBnbChjKX0pfSk7dGhpcy5nZXRTbG90SWRNYXA9Uyg1NzQsZnVuY3Rpb24oKXtmb3IodmFyIGM9e30sZD1fLkYoYS5sKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSllPWUudmFsdWUsY1tlLmdldFNsb3RJZCgpLnRvU3RyaW5nKCldPWdsKGUpO3JldHVybiBjfSk7dGhpcy5lbmFibGU9Uyg4NyxmdW5jdGlvbigpe3JldHVybiBpcChhKX0sYmwpO3RoaXMuZ2V0TmFtZT1TKDU3NSxmdW5jdGlvbigpe3JldHVybiBhLlooKX0pfTtfLkooanAseWopO3ZhciBrcD17UkVXQVJERUQ6NCxUT1BfQU5DSE9SOjIsQk9UVE9NX0FOQ0hPUjozLElOVEVSU1RJVElBTDo1fSxscD1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAyOnJldHVybiAyO2Nhc2UgMzpyZXR1cm4gMTtjYXNlIDU6cmV0dXJuIDg7ZGVmYXVsdDpyZXR1cm4gbnVsbH19LG1wPWZ1bmN0aW9uKCl7dmFyIGE9WGIoKTthLmVudW1zfHwoYS5lbnVtcz17T3V0T2ZQYWdlRm9ybWF0OmtwfSl9O3ZhciBucD1mdW5jdGlvbigpe3RoaXMubD1bXTt0aGlzLnY9W107dGhpcy5qPXt9fSxvcD1mdW5jdGlvbihhLGIpe2lmKCFfLkEoYS5sLFwiaW5jbHVkZXNcIikuY2FsbChhLmwsYikpc3dpdGNoKGIpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBjO2lmKGM9Xy55KDExNik/cm5bYl06cG5bYl0pe3ZhciBkPWIrXCJfaG9zdHBhZ2VfbGlicmFyeVwiO2lmKGM9dWcoZG9jdW1lbnQsbGcoYykpKWMuaWQ9ZH1hLmwucHVzaChiKTtiPW5ldyBzbihiKTthLnYucHVzaChiKTthPVhiKCk7YS5ob3N0cGFnZUxpYnJhcnlUb2tlbnN8fChhLmhvc3RwYWdlTGlicmFyeVRva2Vucz17fSk7YS5ob3N0cGFnZUxpYnJhcnlUb2tlbnNbYi5qXT1iLmx9fSxwcD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmpbYl18fFtdfTtJYyhucCk7dmFyIHFwPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dGhpcy5sPVwiXCI7dGhpcy52PW51bGw7dmFyIGI9VG4uQigpLGM9e307dGhpc1szXT0oY1sxOV09ZnVuY3Rpb24oKXtyZXR1cm4hIXgoYi5qLDEwKX0sY1sxNF09QmssY1sxM109ZnVuY3Rpb24oZCl7Zm9yKHZhciBlPVtdLGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7KytmKWVbZl09YXJndW1lbnRzW2ZdO3JldHVybiBlLnNvbWUoZnVuY3Rpb24oZyl7cmV0dXJuIDA9PWEubC5sYXN0SW5kZXhPZihnLDApfSl9LGNbMTJdPWZ1bmN0aW9uKCl7cmV0dXJuISF4KGIuaiw2KX0sY1sxMV09dm4sY1sxNV09ZnVuY3Rpb24oZCl7cmV0dXJuIGEuaihkKX0sY1s3XT1mdW5jdGlvbigpe3JldHVybiEoIV8uci5jcnlwdG98fCFfLnIuY3J5cHRvLnN1YnRsZSl9LGNbMV09ZnVuY3Rpb24oKXtyZXR1cm4gMD09UmcoKX0sYyk7Yz17fTt0aGlzWzRdPShjWzhdPWZ1bmN0aW9uKGQpe3JldHVybiBubihhLnYsZCl9LGMpO3RoaXNbNV09e319O0ljKHFwKTt2YXIgcnA9e2dlOlwiaW1wcmVzc2lvblZpZXdhYmxlXCIsbWU6XCJyZXdhcmRlZFNsb3RDYW5jZWxlZFwiLG5lOlwicmV3YXJkZWRTbG90Q2xvc2VkXCIsb2U6XCJyZXdhcmRlZFNsb3RDb21wbGV0ZWRcIixwZTpcInJld2FyZGVkU2xvdEdyYW50ZWRcIixxZTpcInJld2FyZGVkU2xvdFJlYWR5XCIscmU6XCJzbG90QWRkZWRcIixzZTpcInNsb3RPbmxvYWRcIix0ZTpcInNsb3RSZW5kZXJFbmRlZFwiLHVlOlwic2xvdFJlcXVlc3RlZFwiLHZlOlwic2xvdFJlc3BvbnNlUmVjZWl2ZWRcIix3ZTpcInNsb3RWaXNpYmlsaXR5Q2hhbmdlZFwifSxzcD1mdW5jdGlvbihhLGIpe3RoaXMuc2xvdD1hO3RoaXMuc2VydmljZU5hbWU9Yn0sdHA9ZnVuY3Rpb24oYSxiKXtzcC5jYWxsKHRoaXMsYSxiKTt0aGlzLmlzRW1wdHk9ITE7dGhpcy5zbG90Q29udGVudENoYW5nZWQ9ITA7dGhpcy5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQ9dGhpcy5zb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQ9dGhpcy5saW5lSXRlbUlkPXRoaXMubGFiZWxJZHM9dGhpcy5jcmVhdGl2ZVRlbXBsYXRlSWQ9dGhpcy5jcmVhdGl2ZUlkPXRoaXMuY2FtcGFpZ25JZD10aGlzLmFkdmVydGlzZXJJZD10aGlzLnNpemU9bnVsbDt0aGlzLmlzQmFja2ZpbGw9ITE7dGhpcy5jb21wYW55SWRzPXRoaXMueWllbGRHcm91cElkcz1udWxsfTtfLkoodHAsc3ApO3ZhciB1cD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHVwLHNwKTt2YXIgdnA9ZnVuY3Rpb24oYSxiLGMpe3NwLmNhbGwodGhpcyxhLGIpO3RoaXMuaW5WaWV3UGVyY2VudGFnZT1jfTtfLkoodnAsc3ApO3ZhciB3cD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHdwLHNwKTt2YXIgeHA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih4cCxzcCk7dmFyIHlwPWZ1bmN0aW9uKGEsYixjLGQpe3NwLmNhbGwodGhpcyxhLGIpO3RoaXMubWFrZVJld2FyZGVkVmlzaWJsZT1jO3RoaXMucGF5bG9hZD1kfTtfLkooeXAsc3ApO3ZhciB6cD1mdW5jdGlvbihhLGIsYyl7c3AuY2FsbCh0aGlzLGEsYik7dGhpcy5wYXlsb2FkPWN9O18uSih6cCxzcCk7dmFyIEFwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooQXAsc3ApO3ZhciBCcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEJwLHNwKTt2YXIgQ3A9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihDcCxzcCk7dmFyIERwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooRHAsc3ApO3ZhciBFcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEVwLHNwKTt2YXIgRnA9bmV3IHQuTWFwLEdwPW5ldyB0LlNldCxIcD1mdW5jdGlvbigpe2VsLmNhbGwodGhpcyk7R3AuYWRkKHRoaXMpO3RoaXMubD1bXTt0aGlzLmo9ITE7dGhpcy5LPW5ldyB0Lk1hcDt0aGlzLmxvZz1qbC5CKCk7dGhpcy5sb2cuaW5mbyhKbCh0aGlzLlooKSksdGhpcyk7dGhpcy5BPVtdfTtfLkooSHAsb2wpO0hwLnByb3RvdHlwZS5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcganAodGhpcyl9O0hwLnByb3RvdHlwZS5nZXRWZXJzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuXCJ1bnZlcnNpb25lZFwifTt2YXIgaXA9ZnVuY3Rpb24oYSl7aWYoIWEuail7YS5qPSEwO2EuTmIoKTtmb3IodmFyIGI9Xy5GKGEuQSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe2M9Yy52YWx1ZTt0cnl7YygpfWNhdGNoKGQpe319YS5BLmxlbmd0aD0wfX0sSXA9ZnVuY3Rpb24oYSxiKXtpZihhLmopdHJ5e2IoKX1jYXRjaChjKXt9ZWxzZSBhLkEucHVzaChiKX07SHAucHJvdG90eXBlLnhhPWZ1bmN0aW9uKGEsYil7dGhpcy5sLnB1c2goYSk7dmFyIGM9bmV3IHhwKGdsKGEpLHRoaXMuWigpKTtKcCh0aGlzLFwic2xvdEFkZGVkXCIsYyk7dGhpcy5sb2cuaW5mbyhObCh0aGlzLlooKSxhLmdldEFkVW5pdFBhdGgoKSksdGhpcyxhKTtzZihiLDQsdGhpcy5aKCkpfTtIcC5wcm90b3R5cGUuZGVzdHJveVNsb3RzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubCxjPWIuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBfLkEoYSxcImluY2x1ZGVzXCIpLmNhbGwoYSxkKX0pO2MuZm9yRWFjaChmdW5jdGlvbihkKXthZChiLGQpfSk7cmV0dXJuIGN9O3ZhciBLcD1mdW5jdGlvbihhLGIpe2tiKFwiZ3B0X2NhbGxiYWNrX3VzYWdlXCIsZnVuY3Rpb24oYyl7bGIoYyk7RShjLFwidHlwZVwiLGIpO3ZhciBkPWEubC5maWx0ZXIoZnVuY3Rpb24oZil7Xy55KDQxMik/KGY9V28oKS5qLmdldChmKSxmPSEoIWZ8fCFmLm9jKSk6Zj0wPGYuQTtyZXR1cm4gZn0pLmxlbmd0aCxlPWEubC5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIF8ueSg0MTIpPyEhZ3AoV28oKSxmKTohIWYuRH0pLmxlbmd0aDtFKGMsXCJuZmV0Y2hcIixkKTtFKGMsXCJucmVuZFwiLGUpfSl9O0hwLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGJ8fFwic3RyaW5nXCIhPT10eXBlb2YgYSlyZXR1cm4gYT1xbChcIlNlcnZpY2UuYWRkRXZlbnRMaXN0ZW5lclwiLFthLGJdKSx0aGlzLmxvZy5KKGEsdGhpcyksdGhpcztpZihfLnkoNDE2KSYmXCJyZXdhcmRlZFNsb3RDYW5jZWxlZFwiPT09YSl2YXIgYz0hMTtlbHNlIGE6e2ZvcihjIGluIHJwKWlmKHJwW2NdPT1hKXtjPSEwO2JyZWFrIGF9Yz0hMX1pZighYylyZXR1cm4gdGhpcy5sb2cuSihybShhKSx0aGlzKSx0aGlzO2M9THAodGhpcyxhKTtfLnkoNDA5KSYmXy5BKGMsXCJpbmNsdWRlc1wiKS5jYWxsKGMsYil8fGMucHVzaChiKTtLcCh0aGlzLGEpO3JldHVybiB0aGlzfTt2YXIgSnA9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUxwKGEsYik7ZC5sZW5ndGgmJmhoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPV8uRihkKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7Zj1mLnZhbHVlO3RyeXtmKGMpfWNhdGNoKGspe2Y9ayYmXCJzdHJpbmdcIj09PXR5cGVvZiBrLm5hbWU/ay5uYW1lOm51bGw7dmFyIGc9ayYmXCJzdHJpbmdcIj09PXR5cGVvZiBrLm1lc3NhZ2U/ay5tZXNzYWdlOm51bGwsaD1cIlwiO2YmJmc/aD1mK1wiOiBcIitnOmY/aD1mOmcmJihoPWcpO2EubG9nLkoocW0oaCksYSk7d2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3Ioayl9fX0pfSxMcD1mdW5jdGlvbihhLGIpe2E9Xy55KDQwOSk/RnA6YS5LO3ZhciBjPWEuZ2V0KGIpfHxbXTthLnNldChiLGMpO3JldHVybiBjfTt2YXIgTXA9ZnVuY3Rpb24oKXt0aGlzLmo9e307dGhpcy5sPWpsLkIoKX07TXAucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt0aGlzLmpbYS5aKCldPWF9O01wLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7YSBpbiB0aGlzLmomJihiPXRoaXMualthXSk7cmV0dXJuIGJ9O3ZhciBOcD1mdW5jdGlvbigpe3ZhciBhPU1wLkIoKTtuaig2KTtfLkpiKGEuaixmdW5jdGlvbihiKXtiLmo/YS5sLmluZm8oTWwoKSxiKTppcChiKX0pfTtNcC5wcm90b3R5cGUuZGVzdHJveVNsb3RzPWZ1bmN0aW9uKGEpe18uSmIodGhpcy5qLGZ1bmN0aW9uKGIpe3JldHVybiBiLmRlc3Ryb3lTbG90cyhhKX0pfTtJYyhNcCk7V2IoXCJlbmFibGVTZXJ2aWNlc1wiLEcoOTEsZnVuY3Rpb24oKXtpZihfLnkoNDA2KSl7bmooNik7Zm9yKHZhciBhPV8uRihfLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksR3ApKSxiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSlpcChiLnZhbHVlKX1lbHNlIE5wKCl9KSk7dmFyIE9wPWZ1bmN0aW9uKGEpe3JldHVybiEhQmcoa3AsZnVuY3Rpb24oYil7cmV0dXJuIGI9PWF9KX0sUnA9ZnVuY3Rpb24oYSl7cmV0dXJuKHo9SGsoUHAoUXAuQigpKSksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGEpfSxTcD1qZChmdW5jdGlvbigpe2RoKFwiVGhlIGdvb2dsZXRhZy5wdWJhZHMoKS5kZWZpbmVQYXNzYmFjayBmdW5jdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgZnVuY3Rpb24gbWF5IGJyZWFrIGluIGNlcnRhaW4gY29udGV4dHMsIHNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9kb3VibGVjbGljay1ncHQvZ3VpZGVzL3Bhc3NiYWNrLXRhZ3MjY29uc3RydWN0X3Bhc3NiYWNrX3RhZ3MgZm9yIGhvdyB0byBjb3JyZWN0bHkgY3JlYXRlIGEgcGFzc2JhY2suXCIpfSksVHA9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5yIT1fLnIudG9wPzUxMjowO2lmKGIpcmV0dXJuIGI7dmFyIGM9Xy5BbihfLnIpO3ZhciBkPWMuYWRDb3VudD8xPT1hfHwyPT1hPyEoIWMuYWRDb3VudFsxXSYmIWMuYWRDb3VudFsyXSk6KGQ9Yy5hZENvdW50W2FdKSYmMjchPT1hJiYyNiE9PWEmJjEwIT09YSYmNDAhPT1hPzE8PWQ6ITE6ITE7ZCYmKGJ8PTY0KTtjLmltcHJvdmVDb2xsaXNpb25EZXRlY3Rpb249MTtjPTA9PT1SZygpO3N3aXRjaChhKXtjYXNlIDI6Y2FzZSAxOmMmJihifD01MzY4NzA5MTIpO2M9Xy55KDM4Nik/dm9pZCAwOjQyMDtjPXZvaWQgMD09PWM/Qm46YztkPTA7dHJ5e2R8PV8uciE9Xy5yLnRvcD81MTI6MDt2YXIgZT1NYXRoLm1pbihfLnIuc2NyZWVuLndpZHRofHwwLF8uci5zY3JlZW4uaGVpZ2h0fHwwKTtkfD1lPzMyMD5lPzgxOTI6MDoyMDQ4O3ZhciBmO2lmKGY9Xy5yLm5hdmlnYXRvcil7dmFyIGc9Xy5yLm5hdmlnYXRvci51c2VyQWdlbnQ7Zj0vRmlyZWZveC8udGVzdChnKXx8L0FuZHJvaWQgMi8udGVzdChnKXx8L2lQaG9uZSBPUyBbMzRdXy8udGVzdChnKXx8L1dpbmRvd3MgUGhvbmUgKD86T1MgKT9bNjddLy50ZXN0KGcpfWR8PWY/MTA0ODU3NjowfWNhdGNoKGgpe2R8PTMyfWU9ZDtmPTA7dHJ5e2Z8PV8uQ24oXy5yKT8wOjgsZnw9Rm4oXy5yLGMpLGZ8PUduKF8ucil9Y2F0Y2goaCl7Znw9MzJ9Zz0hMTtpZighXy55KDI2OSkpe3N3aXRjaChhKXtjYXNlIDI6YT1LbigwLE1hdGgucm91bmQoXy5yLmlubmVyV2lkdGgvMzIwKjUwKzE1KSk7Zz1KbihhKTticmVhaztjYXNlIDE6aWYoYT1fLnkoMTkwMSkpYT1fLnIuaW5uZXJIZWlnaHQsYT1LbihhLU1hdGgucm91bmQoXy5yLmlubmVyV2lkdGgvMzIwKjUwKzE1KSxhKSxhPUpuKGEpO2c9YX1nJiYoZnw9MTY3NzcyMTYpfXJldHVybiBifGV8ZjtjYXNlIDg6cmV0dXJuIV8ueSg0MDApJiZjJiYoYnw9NTM2ODcwOTEyKSxifFBuKF8uciwhMSxudWxsKTtkZWZhdWx0OnJldHVybiBifDMyfX0sUXA9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IHQuTWFwO3RoaXMubz1uZXcgdC5NYXA7dGhpcy5sPW5ldyB0Lk1hcDt0aGlzLnY9amwuQigpO3FwLkIoKS5qPVJwfTtRcC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLGU9dm9pZCAwPT09Yz97fTpjO2M9dm9pZCAwPT09ZS5rYj92b2lkIDA6ZS5rYjt2YXIgZj12b2lkIDA9PT1lLnpjPyExOmUuemMsZz12b2lkIDA9PT1lLmluc3RhbmNlP3ZvaWQgMDplLmluc3RhbmNlO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYXx8MD49YS5sZW5ndGh8fCFiKXJldHVybnt9O2U9bHAodm9pZCAwPT09ZS5mb3JtYXQ/MDplLmZvcm1hdCk7aWYobnVsbCE9ZSl7aWYoVHAoZSkpcmV0dXJue307SG4oZSl9ZiYmU3AoKTtmPXZvaWQgMD09PWc/dGhpcy5vLmdldChhKXx8TnVtYmVyKGYpOmc7dmFyIGg9Y3x8XCJncHRfdW5pdF9cIithK1wiX1wiK2Y7Yj1VcChhLGYsYixoKTtpZighYilyZXR1cm4gdGhpcy52LmVycm9yKEZsKGgpKSx7fTtjPWIuc2xvdDtnPWIuY2E7dmFyIGs9Yi5zbG90SWQ7dGhpcy5vLnNldChhLGYrMSk7dGhpcy5qLnNldChrLGMpO3RoaXMubC5zZXQoaCxrKTtfLlIoayxmdW5jdGlvbigpe2Quai5kZWxldGUoayk7ZC5sLmRlbGV0ZShoKX0pO1prLnB1c2goYyk7cmV0dXJue3Nsb3Q6YyxGYTpnfX07dmFyIFBwPWZ1bmN0aW9uKGEpe3JldHVybiBfLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksXy5BKGEuaixcInZhbHVlc1wiKS5jYWxsKGEuaikpfSxWcD1mdW5jdGlvbihhKXt2YXIgYj1bXTtwcChucC5CKCksYSkuZm9yRWFjaChmdW5jdGlvbihjKXsoYz11byhjLGRvY3VtZW50KSkmJmIucHVzaChjLmNvbnRlbnRXaW5kb3cpfSk7cmV0dXJuIGJ9LFdwPWZ1bmN0aW9uKGEpe2E9Xy5GKGEpO2Zvcih2YXIgYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpe2I9Yi52YWx1ZTt2YXIgYz1Ubi5CKCksZD1iLmdldFNsb3RFbGVtZW50SWQoKSxlPWMubFtkXTtkZWxldGUgYy5sW2RdO2M9ZTt2aChiKTtjPWxwKGdrKGMpKTtudWxsIT1jJiYoZD1fLkFuKHdpbmRvdyksKGU9ZC5hZENvdW50JiZkLmFkQ291bnRbY10pJiYoZC5hZENvdW50W2NdPWUtMSkpO2FkKFprLGIpfX0sWHA9ZnVuY3Rpb24oYSxiKXtpZihiJiYhQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS52LkoocWwoXCJnb29nbGV0YWcuZGVzdHJveVNsb3RzXCIsW2JdKSksITE7Yj8oVWEoYiksYT1iLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZCYmIWQubGF9KSk6YT1QcChhKTtpZighYXx8MD09YS5sZW5ndGgpcmV0dXJuITE7aWYoXy55KDQwNikpe2I9Xy5GKF8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxHcCkpO2Zvcih2YXIgYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYy52YWx1ZS5kZXN0cm95U2xvdHMoYSl9ZWxzZSBNcC5CKCkuZGVzdHJveVNsb3RzKGEpO1dwKGEpO3JldHVybiEwfSxZcD1mdW5jdGlvbihhLGIpe2E9Xy5GKF8uQShhLmosXCJ2YWx1ZXNcIikuY2FsbChhLmopKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKWlmKGM9Yy52YWx1ZSxjLmdldFNsb3RJZCgpLmo9PT1iKXJldHVybiBjO3JldHVybiBudWxsfSxacD1mdW5jdGlvbihhKXt2YXIgYj1RcC5CKCk7YT16aihhLGtvKTtyZXR1cm4hIWEmJmIuai5oYXMoYS5nZXRTbG90SWQoKSl9LCRwPWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD8hMTpkO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSYmKHZvaWQgMD09PWN8fFwic3RyaW5nXCI9PT10eXBlb2YgYykpe3ZhciBlPVFwLkIoKTtyZXR1cm4gZSYmZS5hZGQoYSxiLHtrYjpjLHpjOmR9KX1yZXR1cm57fX0sYXE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybihhPSRwKGEsYixjKS5zbG90KSYmZ2woYSl8fG51bGx9LGJxPWZ1bmN0aW9uKGEpe3ZhciBiPVFwLkIoKTtyZXR1cm4gYiYmbnVsbD09YT9YcChiKTpiJiZBcnJheS5pc0FycmF5KGEpPyhhPWEubWFwKGZ1bmN0aW9uKGMpe3JldHVybiB6aihjLGtvKX0pLFhwKGIsYSkpOiExfSxjcT1mdW5jdGlvbihhLGIpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYXx8IShudWxsPT1ifHxcInN0cmluZ1wiPT09dHlwZW9mIGJ8fFwibnVtYmVyXCI9PT10eXBlb2YgYiYmT3AoYikpKXJldHVybiBudWxsO2E6e3ZhciBjPVwibnVtYmVyXCI9PT10eXBlb2YgYj9iOjE7Yj1cInN0cmluZ1wiPT09dHlwZW9mIGI/Yjp2b2lkIDA7Yj1RcC5CKCkuYWRkKGEsWzEsMV0se2tiOmIsZm9ybWF0OmN9KTthPWIuc2xvdDtiPWIuRmE7aWYoYSYmYil7aWYoNT09PWMmJl8ueSgzMjMpKXtjPW51bGw7YnJlYWsgYX1EKGIsMTUsYyl9Yz1hfHxudWxsfXJldHVybiBjJiZnbChjKX0sVXA9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoUXAuQigpLmwuaGFzKGQpKXJldHVybiBudWxsO3ZhciBlPW5ldyBkaztlayhEKGUsMSxhKSxkKTtjPW5rKGMpO3ZhciBmPWMuSGE7d2YoZSw1LGMuWGMpO251bGwhPT1mJiZ2ZihlLDE2LGYpO1VuKGUpO3ZhciBnPW5ldyBpbyhhLGIsZCksaD1uZXcga28oZyk7Xy53aChoLGcpO2lmKF8ueSg0MTIpKXtqbC5CKCkuaW5mbyhybChnLnRvU3RyaW5nKCkpLG51bGwsaCk7dmFyIGs9bnVsbCxsPW51bGw7Xy5SKGgsZnVuY3Rpb24oKXtqbC5CKCkuaW5mbyh1bShnLnRvU3RyaW5nKCkpLG51bGwsaCk7bD1rPW51bGx9KTtfLlIoaCxPYihJLkIoKSxJbyxnLDc2OCxmdW5jdGlvbigpe2s9amwuQigpLmluZm8oc2woaC5nZXRBZFVuaXRQYXRoKCkpLG51bGwsaCk7V2kodGsuQigpLFwiN1wiLDksaC5BLTEsMCxoLmwpfSkpO18uUihoLE9iKEkuQigpLEpvLGcsNzY5LGZ1bmN0aW9uKCl7amwuQigpLmluZm8odGwoaC5nZXRBZFVuaXRQYXRoKCkpLG51bGwsaCxrKTtrPW51bGx9KSk7Xy5SKGgsT2IoSS5CKCksQ28sZyw3NzAsZnVuY3Rpb24oKXtsPWpsLkIoKS5pbmZvKHVsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgpfSkpO18uUihoLE9iKEkuQigpLFBiLGcsNzcxLGZ1bmN0aW9uKCl7amwuQigpLmluZm8odmwoaC5nZXRBZFVuaXRQYXRoKCkpLG51bGwsaCxsKTtsPW51bGx9KSl9cmV0dXJue3Nsb3Q6aCxjYTplLHNsb3RJZDpnfX07SWMoUXApO2FxPUcoNzQsYXEpO2JxPUcoNzUsYnEpO2NxPUcoNzMsY3EpO3ZhciBkcT1HKDk1LGZ1bmN0aW9uKGEpe3ZhciBiPWpsLkIoKTt2YXIgYz1udWxsO3ZhciBkPVwiXCI7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXtkPWE7dmFyIGU9WXAoUXAuQigpLGQpfWVsc2UgXy5NYyhhKSYmMT09YS5ub2RlVHlwZT8oYz1hLGQ9Yy5pZCxlPVlwKFFwLkIoKSxkKSk6ZT16aihhLGtvKTtpZihlKXtpZihhPVRuLkIoKS5qLGQ9V24oVG4uQigpLGUuZ2V0U2xvdEVsZW1lbnRJZCgpKSl7YT1LayhhLFZuKCkpO2lmKF8ueSg0MjMpKXtpZih4KGQsMTkpKXJldHVybn1lbHNlIGlmKGUuZWMpcmV0dXJuO2UubWM9YztpZihwYShlKXx8c2soZ2soZCkpKWZvcihfLnkoNDIzKT9EKGQsMTksITApOmUuZWM9ITAsYj1fLkYoQihkLDQpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPUFqKGMudmFsdWUpLGM9emooYyxIcCksYy5qJiZjLlhiKGEsZSk7ZWxzZSBiLkooQ2woU3RyaW5nKGQuZ2V0QWRVbml0UGF0aCgpKSxTdHJpbmcoQihkLDIpKSksbnVsbCxlKX19ZWxzZSBkP2IuZXJyb3IoRWwoU3RyaW5nKGQpKSk6Yi5lcnJvcihEbChTdHJpbmcoYSkpKX0pO3ZhciBLYT12ZChcImh0dHBzOi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9zb2Rhci8le2Jhc2VuYW1lfS5qc1wiKTt2YXIgRmE9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtkLnJlYWR5U3RhdGU9PT1kLkRPTkUmJigyMDA8PWQuc3RhdHVzJiYzMDA+ZC5zdGF0dXM/YihKU09OLnBhcnNlKGQucmVzcG9uc2VUZXh0KSk6YygpKX07ZC5vcGVuKFwiR0VUXCIsYSwhMCk7ZC5zZW5kKCl9KX07dmFyIGVxPWZ1bmN0aW9uKGEpe3RoaXMuaj1hLmo7dGhpcy5sPWEubDt0aGlzLnY9YS52O3RoaXMub2I9YS5vYjt0aGlzLkw9YS5MO3RoaXMuZWI9YS5lYjt0aGlzLkFiPWEuQWJ9LGZxPWZ1bmN0aW9uKGEsYil7dGhpcy5qPWE7dGhpcy5sPWI7dGhpcy52PVwicHRcIjt0aGlzLkw9d2luZG93O3RoaXMuZWI9XCJlbnZcIjt0aGlzLkFiPVwiblwifTt2YXIgaHE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGdxLG51bGwpfTtLKGhxLE0pO3ZhciBpcT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhpcSxNKTt2YXIganE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soanEsTSk7dmFyIGtxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGtxLE0pO3ZhciBncT1bMSwyXSxscT1mdW5jdGlvbihhLGIpe3ZhciBjPUIoYSwxKTtudWxsIT1jJiZiZihiLDEsYyk7Yz1PKGEsanEsMik7bnVsbCE9YyYmZWYoYiwyLGMpO2M9TyhhLGpxLDMpO251bGwhPWMmJmVmKGIsMyxjKTtjPUIoYSw0KTtudWxsIT1jJiZjZihiLDQsYyk7Yz1CKGEsNSk7bnVsbCE9YyYmY2YoYiw1LGMpfSxkZj1mdW5jdGlvbihhLGIpe3ZhciBjPUIoYSwxKTtudWxsIT1jJiZiZihiLDEsYyk7Yz1CKGEsMik7bnVsbCE9YyYmYmYoYiwyLGMpO2M9QihhLDMpO251bGwhPWMmJmJmKGIsMyxjKX07aXEucHJvdG90eXBlLiRiPWZ1bmN0aW9uKGEpe0QodGhpcyw0LGEpfTt2YXIgbXE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1CKGEsMSk7bnVsbCE9YyYmY2YoYiwxLGMpO2M9QihhLDIpO251bGwhPWMmJmNmKGIsMixjKTtjPUIoYSwzKTtudWxsIT1jJiZhZihiLDMsYyk7Yz1CKGEsNCk7bnVsbCE9YyYmJGUoYiw0LGMpO2M9QihhLDUpO251bGwhPWMmJiRlKGIsNSxjKTtjPUIoYSw2KTtudWxsIT1jJiYkZShiLDYsYyl9O2txLnByb3RvdHlwZS4kYj1mdW5jdGlvbihhKXtEKHRoaXMsMixhKX07dmFyIG5xPWZ1bmN0aW9uKGEpe3ZhciBiPShuZXcgUGYpLmdldFRpbWUoKTtyZXR1cm4gRChhLDMsYil9O3ZhciBvcT1uYXZpZ2F0b3IscHE9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG9xLmphdmFFbmFibGVkKCl9Y2F0Y2goYSl7cmV0dXJuITF9fSxxcT1mdW5jdGlvbihhKXt2YXIgYj0xLGM7aWYodm9pZCAwIT1hJiZcIlwiIT1hKWZvcihiPTAsYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7Yj0oYjw8NiYyNjg0MzU0NTUpK2QrKGQ8PDE0KTtkPWImMjY2MzM4MzA0O2I9MCE9ZD9iXmQ+PjIxOmJ9cmV0dXJuIGJ9LHJxPWZ1bmN0aW9uKGEsYil7aWYoIWF8fFwibm9uZVwiPT1hKXJldHVybiAxO2E9U3RyaW5nKGEpO1wiYXV0b1wiPT1hJiYoYT1iLFwid3d3LlwiPT1hLnN1YnN0cmluZygwLDQpJiYoYT1hLnN1YnN0cmluZyg0LGEubGVuZ3RoKSkpO3JldHVybiBxcShhLnRvTG93ZXJDYXNlKCkpfSxzcT0vXlxccypfZ2E9XFxzKjFcXC4oXFxkKylbXi5dKlxcLiguKj8pXFxzKiQvLHRxPS9eW149XSs9XFxzKkdBMVxcLihcXGQrKVteLl0qXFwuKC4qPylcXHMqJC8sdXE9L15cXHMqX2dhPVxccyooKShhbXAtW1xcdy4tXXsyMiw2NH0pJC87dmFyIHdxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSx2cSxudWxsKX07Syh3cSxNKTt2YXIgdnE9WzE1XSx4cT1mdW5jdGlvbigpe3ZhciBhPW5ldyB3cSxiPV8ueSg3Nik7cmV0dXJuIHJmKGEsNyxiKX07dmFyIHlxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKHlxLE0pO3ZhciB6cT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07Syh6cSxNKTtCZCh1ZCh2ZChcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL29zZC5qc1wiKSkpO3ZhciBBcT1mdW5jdGlvbihhLGIpe2lmKCEod2luZG93JiZNYXRoLnJhbmRvbSYmbmF2aWdhdG9yKSlyZXR1cm4tMTtpZih3aW5kb3cuX19nb29nbGVfYWRfdXJscyl7dmFyIGM9d2luZG93Ll9fZ29vZ2xlX2FkX3VybHM7dHJ5e2lmKGMmJmMuZ2V0T3NlSWQoKSlyZXR1cm4gYy5nZXRPc2VJZCgpfWNhdGNoKGUpe319aWYoIXdpbmRvdy5fX2dvb2dsZV9hZF91cmxzX2lkKXtjPXdpbmRvdy5nb29nbGVfZW5hYmxlX29zZTtpZighMD09PWMpdmFyIGQ9MjtlbHNlITEhPT1jJiYoZD14ZyhbMF0sYSksbnVsbD09ZCYmKChkPXhnKFsyXSxiKSl8fChkPTMpKSk7aWYoIWQpcmV0dXJuIDA7d2luZG93Ll9fZ29vZ2xlX2FkX3VybHNfaWQ9ZH1yZXR1cm4gd2luZG93Ll9fZ29vZ2xlX2FkX3VybHNfaWR9O3ZhciBCcT1mdW5jdGlvbigpe307Xy5wPUJxLnByb3RvdHlwZTtfLnAuZ2V0TmV3QmxvY2tzPWZ1bmN0aW9uKCl7fTtfLnAuc2V0dXBPc2U9ZnVuY3Rpb24oKXt9O18ucC5nZXRPc2VJZD1mdW5jdGlvbigpe3JldHVybi0xfTtfLnAuZ2V0Q29ycmVsYXRvcj1mdW5jdGlvbigpe3JldHVyblwiXCJ9O18ucC5udW1CbG9ja3M9ZnVuY3Rpb24oKXtyZXR1cm4gMH07Xy5wLnJlZ2lzdGVyQWRCbG9jaz1mdW5jdGlvbigpe307Xy5wLnVubG9hZEFkQmxvY2s9ZnVuY3Rpb24oKXt9O18ucC5zZXRMb2FkT3NkSnNPblB1YldpbmRvdz1mdW5jdGlvbigpe307dmFyIENxPW5ldyBVaSgxLG9pKCkpLERxPWZ1bmN0aW9uKCl7dmFyIGE9b2koKTthJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcmJiFhLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmKENxLmo9ITEsQ3EuZXZlbnRzIT1DcS5sLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWUmJihUaSgpJiZfLlZjKENxLmV2ZW50cyxWaSksQ3EuZXZlbnRzLmxlbmd0aD0wKSl9OyhmdW5jdGlvbigpe3ZhciBhPW9pKCk7YSYmYS5kb2N1bWVudCYmKFwiY29tcGxldGVcIj09YS5kb2N1bWVudC5yZWFkeVN0YXRlP0RxKCk6Q3EuaiYmXy52KGEsXCJsb2FkXCIsZnVuY3Rpb24oKXtEcSgpfSkpfSkoKTtEYXRlLm5vdygpO3ZhciBFcT1mdW5jdGlvbihhLGIsYyl7YSYmKGM/Xy52KGEsXCJsb2FkXCIsYik6Xy5xYihhLFwibG9hZFwiLGIpKX0sRnE9ZnVuY3Rpb24oKXt2YXIgYT0ob2koKXx8Xy5yKS5nb29nbGVfb3NkX2FtY2I7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfSxHcT1CZCh1ZCh2ZChcImh0dHBzOi8vd3d3Lmdvb2dsZXRhZ3NlcnZpY2VzLmNvbS9hY3RpdmV2aWV3L2pzL2N1cnJlbnQvb3NkLmpzXCIpKSksSHE9ZnVuY3Rpb24oYSl7YT17Y2I6dm9pZCAwPT09YT9cIi9yMjAxMDAxMDFcIjphfTt2YXIgYj15ZChHcSkudG9TdHJpbmcoKTtiPUNkLmV4ZWMoYik7dmFyIGM9YlszXXx8XCJcIjtyZXR1cm4gQmQoYlsxXStEZChcIj9cIixiWzJdfHxcIlwiLGEpK0RkKFwiI1wiLGMsdm9pZCAwKSl9O3ZhciBJcT1mdW5jdGlvbihhLGIpe3RoaXMubD1iJiZiLmw/Yi5sOjA7dGhpcy5vPWI/Yi5vOlwiXCI7dGhpcy5qPWImJmIuaj9iLmo6W107dGhpcy52PSEwO2lmKGIpZm9yKGE9MDthPHRoaXMuai5sZW5ndGg7KythKXRoaXMualthXS5vPSEwfSxLcT1mdW5jdGlvbihhKXt2YXIgYj1hLnY/b2koKTpfLnI7YT1KcTtiPWJ8fF8ucjtiLmdvb2dsZV9vc2RfbG9hZGVkP2E9ITE6KHVnKGIuZG9jdW1lbnQsYSksYT1iLmdvb2dsZV9vc2RfbG9hZGVkPSEwKTthJiZwaSgpfTtfLnA9SXEucHJvdG90eXBlO18ucC5nZXROZXdCbG9ja3M9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5qLmxlbmd0aCxkPTA7ZDxjO2QrKyl7dmFyIGU9dGhpcy5qW2RdOyFlLnYmJmUuaiYmKGUudj0hMCxhKGUuaixlLkEsZS5HLGUubCx2b2lkIDAsZS5vLGUuQyxlLlUsZS5EKSl9YiYmKChvaSgpfHxfLnIpLmdvb2dsZV9vc2RfYW1jYj1hKX07Xy5wLnNldHVwT3NlPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZ2V0T3NlSWQoKSlyZXR1cm4gdGhpcy5nZXRPc2VJZCgpO3ZhciBiPUFxKExxLE1xKTtpZighYilyZXR1cm4gMDt0aGlzLmw9Yjt0aGlzLm89U3RyaW5nKGF8fDApO3JldHVybiB0aGlzLmdldE9zZUlkKCl9O18ucC5nZXRPc2VJZD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cmJk1hdGgucmFuZG9tJiZuYXZpZ2F0b3I/dGhpcy5sOi0xfTtfLnAuZ2V0Q29ycmVsYXRvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O18ucC5udW1CbG9ja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmxlbmd0aH07Xy5wLnJlZ2lzdGVyQWRCbG9jaz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtnPXZvaWQgMD09PWc/ZnVuY3Rpb24oKXt9Omc7Yz1GcSgpO2U9Xy5OaSgpfHwtMTtmPV8uci5wYWdlWU9mZnNldDswPD1mfHwoZj0tMSk7YyYmZD9jKGQsYSxiLCExLHZvaWQgMCwhMSxnLGUsZik6KGc9bmV3IE5xKGEsYixkLGcsZSxmKSx0aGlzLmoucHVzaChnKSxFcShkLGcubSwhMCksSnF8fChfLlRoKF8ucixcIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9b3NkJnI9b20mcnM9XCIrYisoXCImcmVxPVwiK2EpKSxKcT1IcShcIi9yMjAxMDAxMDFcIikpLEtxKHRoaXMpKX07Xy5wLnVubG9hZEFkQmxvY2s9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz8hMTpjO2I9dGhpcy52P29pKCk6d2luZG93O3ZvaWQgMCE9PWIuR29vZ19Pc2RfVW5sb2FkQWRCbG9jayYmYi5Hb29nX09zZF9VbmxvYWRBZEJsb2NrKGEpO2MmJihjPWVoKHRoaXMuaixmdW5jdGlvbihkKXtyZXR1cm4gZC5qPT1hfSkpJiZFcShhLGMubSwhMSl9O18ucC5zZXRMb2FkT3NkSnNPblB1YldpbmRvdz1mdW5jdGlvbihhKXt0aGlzLnY9YX07dmFyIE9xPWZ1bmN0aW9uKCl7dmFyIGE9b2koKSxiPWEuX19nb29nbGVfYWRfdXJscztpZighYilyZXR1cm4gYS5fX2dvb2dsZV9hZF91cmxzPW5ldyBJcShhKTt0cnl7aWYoMDw9Yi5nZXRPc2VJZCgpKXJldHVybiBifWNhdGNoKGMpe310cnl7cmV0dXJuIGEuX19nb29nbGVfYWRfdXJscz1uZXcgSXEoYSxiKX1jYXRjaChjKXtyZXR1cm4gYS5fX2dvb2dsZV9hZF91cmxzPW5ldyBJcShhKX19LEpxPW51bGwsTXE9MCxMcT0wLE5xPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz10aGlzO2Q9dm9pZCAwPT09ZD9fLkhjOmQ7dGhpcy5BPWE7dGhpcy5HPWI7dGhpcy5qPWM7dGhpcy5vPXRoaXMudj10aGlzLmw9ITE7dGhpcy5DPWQ7dGhpcy5VPXZvaWQgMD09PWU/LTE6ZTt0aGlzLkQ9dm9pZCAwPT09Zj8tMTpmO3RoaXMubT1mdW5jdGlvbigpe3JldHVybiBnLmw9ITB9fTtDYyhcIkdvb2dfQWRTZW5zZV9nZXRBZEFkYXB0ZXJJbnN0YW5jZVwiLE9xKTtDYyhcIkdvb2dfQWRTZW5zZV9Pc2RBZGFwdGVyXCIsSXEpO3ZhciBQcT1bXCJhdXRvXCIsXCJpbmhlcml0XCIsXCIxMDAlXCJdLFFxPVBxLmNvbmNhdChbXCJub25lXCJdKSxScT1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZT12b2lkIDA9PT1lPzEwOmU7Zj12b2lkIDA9PT1mPzEwOmY7Yj1iLnN0eWxlU2hlZXRzO2lmKCFiKXJldHVybiExO3ZhciBnPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm1zTWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3I7ZT0tMT09ZT9JbmZpbml0eTplO2Y9LTE9PWY/SW5maW5pdHk6Zjtmb3IodmFyIGg9MDtoPE1hdGgubWluKGIubGVuZ3RoLGUpOysraCl7dmFyIGs9dm9pZCAwO3RyeXt2YXIgbD1iW2hdLG09bnVsbDt0cnl7bT1sLmNzc1J1bGVzfHxsLnJ1bGVzfWNhdGNoKEgpe2lmKDE1PT1ILmNvZGUpdGhyb3cgSC5zdHlsZVNoZWV0PWwsSDt9az1tfWNhdGNoKEgpe2NvbnRpbnVlfWlmKGsmJjA8ay5sZW5ndGgpZm9yKG09MDttPE1hdGgubWluKGsubGVuZ3RoLGYpOysrbSl7dmFyIG49a1ttXSxxO2lmKHE9MT09bi50eXBlKXtxPW47dmFyIHc9YztxPWcuY2FsbChhLHEuc2VsZWN0b3JUZXh0KSYmdyhxKX1pZighcSYmKHE9ZCYmND09bi50eXBlKSlhOntxPWE7dz1jO2Zvcih2YXIgdT1mLEM9MDtDPE1hdGgubWluKG4uY3NzUnVsZXMubGVuZ3RoLHUpO0MrKyl7dmFyIFE9bi5jc3NSdWxlc1tDXSxOPXc7aWYoZy5jYWxsKHEsUS5zZWxlY3RvclRleHQpJiZOKFEpKXtxPSEwO2JyZWFrIGF9fXE9ITF9aWYocSlyZXR1cm4hMH19cmV0dXJuITF9LFRxPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD12b2lkIDA9PT1kPzEwOmQ7dmFyIGU9dm9pZCAwPT09ZT8xMDplO2lmKCFhKXJldHVybiEwO3ZhciBmPSEwO1lnKGEsZnVuY3Rpb24oZyl7cmV0dXJuIGY9U3EoZyxiLCExLGQsZSl9LHZvaWQgMD09PWM/MTAwOmMpO3JldHVybiBmfSxTcT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWEuc3R5bGU7cmV0dXJuIGYmJmYuaGVpZ2h0JiYhXy4kYyhQcSxmLmhlaWdodCl8fGYmJmYubWF4SGVpZ2h0JiYhXy4kYyhRcSxmLm1heEhlaWdodCl8fFJxKGEsYi5kb2N1bWVudCxmdW5jdGlvbihnKXt2YXIgaD1nLnN0eWxlLmhlaWdodDtnPWcuc3R5bGVbXCJtYXgtaGVpZ2h0XCJdO3JldHVybiBoJiYhXy4kYyhQcSxoKXx8ZyYmIV8uJGMoUXEsZyl9LGMsZCxlKT8hMTohMH07dmFyIFVxPXZvaWQgMDt2YXIgVnE9ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP3dpbmRvdzphO3JldHVybiBhLl9nbXB0bmw/XCJhZm1hLWdwdC1zZGstYVwiOmEud2Via2l0JiZhLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMmJmEud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5fZ21wdG5sP1wiYWZtYS1ncHQtc2RrLWlcIjpudWxsfSxXcT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj93aW5kb3c6Yjt2YXIgYz1WcShiKTtpZighYylyZXR1cm4gbnVsbDt2YXIgZD1udWxsO3RyeXtcImFmbWEtZ3B0LXNkay1hXCI9PWM/ZD1iLl9nbXB0bmwucG0oXCJHQU09XCIsYSl8fFwiNVwiOihkPWIuX19nbXB0bmxfbnx8XCI1XCIsYi53ZWJraXQubWVzc2FnZUhhbmRsZXJzLl9nbXB0bmwucG9zdE1lc3NhZ2UoXCJHQU09XCIpKX1jYXRjaChlKXtyZXR1cm5cIjNcIn1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGQ/ZDpcIjNcIn07dmFyIFhxPWZ1bmN0aW9uKCl7dGhpcy5sPVtdO3RoaXMuaj0tMX07WHEucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj8hMDpiOzA8PWEmJjUyPmEmJjA9PT1hJTEmJnRoaXMubFthXSE9YiYmKHRoaXMubFthXT1iLHRoaXMuaj0tMSl9O1hxLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuISF0aGlzLmxbYV19O3ZhciBZcT1mdW5jdGlvbihhKXstMT09YS5qJiYoYS5qPVdjKGEubCxmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGM/YitNYXRoLnBvdygyLGQpOmJ9KSk7cmV0dXJuIGEuan07dmFyIFpxPTAsJHE9QmQodWQodmQoXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9leHBhbnNpb25fZW1iZWQuanNcIikpKTt2YXIgYXI9ZnVuY3Rpb24oKXt0aGlzLmo9ZnVuY3Rpb24oKXt9fTtJYyhhcik7dmFyIGJyPWZ1bmN0aW9uKCl7dmFyIGE9cXAuQigpO2FyLkIoKS5qKGEpfTt2YXIgY3I9ZnVuY3Rpb24oKXt2YXIgYT12b2lkIDAsYj0yO2lmKHZvaWQgMD09PWEpe3ZhciBjPXZvaWQgMD09PWM/Xy5yOmM7YT1jLmdnZWFjfHwoYy5nZ2VhYz17fSl9Yj12b2lkIDA9PT1iPzA6YjtjPWE7dmFyIGQ9YjtkPXZvaWQgMD09PWQ/MDpkO2xqKGtqLkIoKSxjLGQpO2M9YTtiPXZvaWQgMD09PWI/MDpiO3BqKG9qLkIoKSxjLGIpO2FyLkIoKS5qPWpqKGlqLGEpO29qLkIoKS5qKCl9O3ZhciBkcj1mdW5jdGlvbigpe3RoaXMuaj13aW5kb3c7dGhpcy5sPTB9LGVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17d2M6QihiLDIpLWEuai5EYXRlLm5vdygpLzFFMyxwYXRoOkIoYiwzKSxkb21haW46QihiLDQpLHZkOiExfSxlPUIoYiwxKSxmPWEuai5kb2N1bWVudDtmPXZvaWQgMD09PWY/ZG9jdW1lbnQ6Zjt4KGMsNSkmJihuZXcgUGEoZikpLnNldChcIl9fZ2Fkc1wiLGUsZCk7eChjLDUpJiYuMDE+YS5qLk1hdGgucmFuZG9tKCkmJihjPVFhKFwiX19nYWRzXCIsYyxhLmouZG9jdW1lbnQpLFZoKHtkb21haW46QihiLDQpLGhvc3Q6YS5qLmxvY2F0aW9uLmhvc3Qsc3VjY2VzczpjPT09QihiLDEpP1wiMVwiOlwiMFwifSxcImdmcF9jd19zdGF0dXNcIikpfTt2YXIgZnI9dmEoZnVuY3Rpb24oKXtyZXR1cm4hKENlfHxEZXx8QmUpJiYoUGV8fHhlfHx3ZSl9KSxncj1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9dm9pZCAwPT09ZD9cIlwiOmQ7dmFyIGY9YS5jcmVhdGVFbGVtZW50KFwibGlua1wiKTt0cnl7Zi5yZWw9YyxmLmhyZWY9LTEhPWMudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwic3R5bGVzaGVldFwiKT95ZChiKS50b1N0cmluZygpOmIgaW5zdGFuY2VvZiB4ZD95ZChiKS50b1N0cmluZygpOmIgaW5zdGFuY2VvZiBfLlJkP18uU2QoYik6Xy5TZChfLlVkKGIpKX1jYXRjaChnKXtyZXR1cm4gbnVsbH1kJiZcInByZWxvYWRcIj09YyYmKGYuYXM9ZCk7ZSYmZi5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGUpO2E9YS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07aWYoIWEpcmV0dXJuIG51bGw7dHJ5e2EuYXBwZW5kQ2hpbGQoZil9Y2F0Y2goZyl7fXJldHVybiBmfTt2YXIgaHI9L15cXC5nb29nbGVcXC4oY29tP1xcLik/W2Etel17MiwzfSQvLGlyPS9cXC4oY258Y29tXFwuYml8ZG98c2x8YmF8Ynl8bWF8YW0pJC8sanI9Xy5yLGxyPWZ1bmN0aW9uKGEpe2E9XCJodHRwczovL2Fkc2VydmljZVwiKyhhK1wiL2Fkc2lkL2ludGVncmF0b3IuanNcIik7dmFyIGI9W1wiZG9tYWluPVwiK2VuY29kZVVSSUNvbXBvbmVudChfLnIubG9jYXRpb24uaG9zdG5hbWUpXTtrclszXT49VGMoKSYmYi5wdXNoKFwiYWRzaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGtyWzFdKSk7cmV0dXJuIGErXCI/XCIrYi5qb2luKFwiJlwiKX0sa3IsbXIsbnI9ZnVuY3Rpb24oKXtqcj1fLnI7a3I9anIuZ29vZ2xlVG9rZW49anIuZ29vZ2xlVG9rZW58fHt9O3ZhciBhPVRjKCk7a3JbMV0mJmtyWzNdPmEmJjA8a3JbMl18fChrclsxXT1cIlwiLGtyWzJdPS0xLGtyWzNdPS0xLGtyWzRdPVwiXCIsa3JbNl09XCJcIik7bXI9anIuZ29vZ2xlSU1TdGF0ZT1qci5nb29nbGVJTVN0YXRlfHx7fTthPW1yWzFdO2hyLnRlc3QoYSkmJiFpci50ZXN0KGEpfHwobXJbMV09XCIuZ29vZ2xlLmNvbVwiKTtBcnJheS5pc0FycmF5KG1yWzVdKXx8KG1yWzVdPVtdKTtcImJvb2xlYW5cIiE9PXR5cGVvZiBtcls2XSYmKG1yWzZdPSExKTtBcnJheS5pc0FycmF5KG1yWzddKXx8KG1yWzddPVtdKTtcIm51bWJlclwiIT09dHlwZW9mIG1yWzhdJiYobXJbOF09MCl9LG9yPXtMYjpmdW5jdGlvbigpe3JldHVybiAwPG1yWzhdfSxvZDpmdW5jdGlvbigpe21yWzhdKyt9LHBkOmZ1bmN0aW9uKCl7MDxtcls4XSYmbXJbOF0tLX0scWQ6ZnVuY3Rpb24oKXttcls4XT0wfSxBZTpmdW5jdGlvbigpe3JldHVybiExfSxwYzpmdW5jdGlvbigpe3JldHVybiBtcls1XX0sa2M6ZnVuY3Rpb24oYSl7dHJ5e2EoKX1jYXRjaChiKXtfLnIuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGI7fSwwKX19LEJjOmZ1bmN0aW9uKCl7aWYoIW9yLkxiKCkpe3ZhciBhPV8uci5kb2N1bWVudCxiPWZ1bmN0aW9uKGUpe2U9bHIoZSk7YTp7dHJ5e3ZhciBmPUZjKCk7YnJlYWsgYX1jYXRjaChnKXt9Zj12b2lkIDB9Z3IoYSxlLFwicHJlbG9hZFwiLFwic2NyaXB0XCIsZik7Zj1hLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7Zi50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI7Zi5vbmVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIF8uci5wcm9jZXNzR29vZ2xlVG9rZW4oe30sMil9O2U9bGcoZSk7QWEoZixlKTt0cnl7KGEuaGVhZHx8YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudCkuYXBwZW5kQ2hpbGQoZiksb3Iub2QoKX1jYXRjaChnKXt9fSxjPW1yWzFdO2IoYyk7XCIuZ29vZ2xlLmNvbVwiIT1jJiZiKFwiLmdvb2dsZS5jb21cIik7Yj17fTt2YXIgZD0oYi5uZXdUb2tlbj1cIkZCVFwiLGIpO18uci5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIF8uci5wcm9jZXNzR29vZ2xlVG9rZW4oZCwxKX0sMUUzKX19fSxwcj1mdW5jdGlvbihhKXtucigpO3ZhciBiPWpyLmdvb2dsZVRva2VuWzVdfHwwO2EmJigwIT1ifHxrclszXT49VGMoKT9vci5rYyhhKToob3IucGMoKS5wdXNoKGEpLG9yLkJjKCkpKTtrclszXT49VGMoKSYma3JbMl0+PVRjKCl8fG9yLkJjKCl9LHFyPWZ1bmN0aW9uKGEpe18uci5wcm9jZXNzR29vZ2xlVG9rZW49Xy5yLnByb2Nlc3NHb29nbGVUb2tlbnx8ZnVuY3Rpb24oYixjKXt2YXIgZD1iO2Q9dm9pZCAwPT09ZD97fTpkO2M9dm9pZCAwPT09Yz8wOmM7Yj1kLm5ld1Rva2VufHxcIlwiO3ZhciBlPVwiTlRcIj09YixmPXBhcnNlSW50KGQuZnJlc2hMaWZldGltZVNlY3N8fFwiXCIsMTApLGc9cGFyc2VJbnQoZC52YWxpZExpZmV0aW1lU2Vjc3x8XCJcIiwxMCksaD1kW1wiMXBfamFyXCJdfHxcIlwiO2Q9ZC5wdWNyZHx8XCJcIjtucigpOzE9PWM/b3IucWQoKTpvci5wZCgpO3ZhciBrPWpyLmdvb2dsZVRva2VuPWpyLmdvb2dsZVRva2VufHx7fSxsPTA9PWMmJmImJlwic3RyaW5nXCI9PT10eXBlb2YgYiYmIWUmJlwibnVtYmVyXCI9PT10eXBlb2YgZiYmMDxmJiZcIm51bWJlclwiPT09dHlwZW9mIGcmJjA8ZyYmXCJzdHJpbmdcIj09PXR5cGVvZiBoO2U9ZSYmIW9yLkxiKCkmJighKGtyWzNdPj1UYygpKXx8XCJOVFwiPT1rclsxXSk7dmFyIG09IShrclszXT49VGMoKSkmJjAhPWM7aWYobHx8ZXx8bSllPVRjKCksZj1lKzFFMypmLGc9ZSsxRTMqZywxRS01Pk1hdGgucmFuZG9tKCkmJl8uVGgoXy5yLFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD1pbWVyciZlcnI9XCIrYyksa1s1XT1jLGtbMV09YixrWzJdPWYsa1szXT1nLGtbNF09aCxrWzZdPWQsbnIoKTtpZihsfHwhb3IuTGIoKSl7Yz1vci5wYygpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspb3Iua2MoY1tiXSk7Yy5sZW5ndGg9MH19O3ByKGEpfTt2YXIgTWI9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/e306Yjt0aGlzLnJvb3Q9Yi5yb290P2Iucm9vdDpudWxsO3RoaXMuQz1iLnJvb3RNYXJnaW4/U2EoYi5yb290TWFyZ2luKTpbe3ZhbHVlOjAsdHlwZTpcInB4XCJ9LHt2YWx1ZTowLHR5cGU6XCJweFwifSx7dmFsdWU6MCx0eXBlOlwicHhcIn0se3ZhbHVlOjAsdHlwZTpcInB4XCJ9XTt0aGlzLnJvb3RNYXJnaW49Xy5SYSh0aGlzLkMsZnVuY3Rpb24oYyl7cmV0dXJuXCJcIitjLnZhbHVlK2MudHlwZX0pLmpvaW4oXCIgXCIpO3RoaXMuVT1XYShiLnRocmVzaG9sZCk7dGhpcy5EPWE7dGhpcy5qPVtdO3RoaXMubz1bXTt0aGlzLm09ITE7dGhpcy5sPW51bGw7dGhpcy52PWtkKHRoaXMuQSwxMDAsdGhpcyl9LHJyPWZ1bmN0aW9uKGEpe2lmKGEucm9vdCl2YXIgYj1YYShhLnJvb3QpO2Vsc2V7dmFyIGM9Xy4kZih3aW5kb3cpO2I9e3RvcDowLHJpZ2h0OmMud2lkdGgsYm90dG9tOmMuaGVpZ2h0LGxlZnQ6MCx3aWR0aDpjLndpZHRoLGhlaWdodDpjLmhlaWdodH19YT1fLlJhKGEuQyxmdW5jdGlvbihkLGUpe3JldHVyblwicHhcIj09ZC50eXBlP2QudmFsdWU6ZC52YWx1ZSooZSUyP2Iud2lkdGg6Yi5oZWlnaHQpLzEwMH0pO3JldHVybnt0b3A6Yi50b3AtYVswXSxyaWdodDpiLnJpZ2h0K2FbMV0sYm90dG9tOmIuYm90dG9tK2FbMl0sbGVmdDpiLmxlZnQtYVszXSx3aWR0aDpiLndpZHRoK2FbMV0rYVszXSxoZWlnaHQ6Yi5oZWlnaHQrYVswXSthWzJdfX0sc3I9ZnVuY3Rpb24oYSxiLGMpe2lmKCFifHxiLmlzSW50ZXJzZWN0aW5nIT1jLmlzSW50ZXJzZWN0aW5nKXJldHVybiEwO3ZhciBkPWIuaW50ZXJzZWN0aW9uUmF0aW8sZT1jLmludGVyc2VjdGlvblJhdGlvO3JldHVybiBkPT1lPyExOl8uWGMoYS5VLGZ1bmN0aW9uKGYpe3JldHVybiBmPGQhPWY8ZX0pfTtNYi5wcm90b3R5cGUuQT1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1ycih0aGlzKTtfLlZjKHRoaXMuaixmdW5jdGlvbihjKXt2YXIgZD1jLnRhcmdldCxlPVhhKGQpLGY9ZS53aWR0aCplLmhlaWdodDt2YXIgZz1NYXRoLm1heChiLnRvcCxlLnRvcCk7dmFyIGg9TWF0aC5taW4oYi5yaWdodCxlLnJpZ2h0KSxrPU1hdGgubWluKGIuYm90dG9tLGUuYm90dG9tKSxsPU1hdGgubWF4KGIubGVmdCxlLmxlZnQpLG09aC1sLG49ay1nO2c9MDw9bSYmMDw9bj97dG9wOmcscmlnaHQ6aCxib3R0b206ayxsZWZ0Omwsd2lkdGg6bSxoZWlnaHQ6bn06bnVsbDtoPSEhZztrPWc/Zy53aWR0aCpnLmhlaWdodDowO2Y9Zj9rL2Y6aD8xOjA7az0oaz13aW5kb3cucGVyZm9ybWFuY2UpJiZrLm5vdz9rLm5vdygpOjA7ZD17Ym91bmRpbmdDbGllbnRSZWN0OmUsaW50ZXJzZWN0aW9uUmF0aW86ZixpbnRlcnNlY3Rpb25SZWN0Omd8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MCx3aWR0aDowLGhlaWdodDowfSxpc0ludGVyc2VjdGluZzpoLHJvb3RCb3VuZHM6Yix0YXJnZXQ6ZCx0aW1lOmt9O3NyKGEsYy5qYSxkKSYmYS5vLnB1c2goZCk7Yy5qYT1kfSk7dGhpcy5vLmxlbmd0aCYmdGhpcy5EKHRyKHRoaXMpLHRoaXMpfTtNYi5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbihhKXtfLlhjKHRoaXMuaixmdW5jdGlvbihiKXtyZXR1cm4gYi50YXJnZXQ9PWF9KXx8KHRoaXMuai5wdXNoKHt0YXJnZXQ6YSxqYTpudWxsfSksdGhpcy5BKCksdGhpcy5tfHwodGhpcy5tPSEwLF8udihfLnIsXCJzY3JvbGxcIix0aGlzLnYpLF8udihfLnIsXCJyZXNpemVcIix0aGlzLnYpLF8uci5NdXRhdGlvbk9ic2VydmVyJiYhdGhpcy5sJiYodGhpcy5sPW5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMudiksdGhpcy5sLm9ic2VydmUoXy5yLmRvY3VtZW50LHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiEwLHN1YnRyZWU6ITB9KSkpKX07TWIucHJvdG90eXBlLnVub2JzZXJ2ZT1mdW5jdGlvbihhKXt0aGlzLmo9Xy5UYSh0aGlzLmosZnVuY3Rpb24oYil7cmV0dXJuIGIudGFyZ2V0IT1hfSk7MD09dGhpcy5qLmxlbmd0aCYmdGhpcy5kaXNjb25uZWN0KCl9O01iLnByb3RvdHlwZS5kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5tPSExO3RoaXMuai5sZW5ndGg9MDtfLnFiKF8ucixcInNjcm9sbFwiLHRoaXMudik7Xy5xYihfLnIsXCJyZXNpemVcIix0aGlzLnYpO3RoaXMubCYmKHRoaXMubC5kaXNjb25uZWN0KCksdGhpcy5sPW51bGwpfTt2YXIgdHI9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5GYihhLm8pLmNvbmNhdCgpO2Euby5sZW5ndGg9MDtyZXR1cm4gYn07Xy51cj1mdW5jdGlvbigpe3ZhciBhPV8uRGooMzgpO3RoaXMuaj12b2lkIDA9PT1hPy4wMTphO3RoaXMudj10aGlzLmx9O18udXIucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiLGMsZCxlKXtjPXZvaWQgMD09PWM/dGhpcy5qOmM7aWYoTWF0aC5yYW5kb20oKT5jKXJldHVybiExO2IuZXJyb3ImJmIubWV0YSYmYi5pZHx8KGI9bmV3IEZpKGIse2NvbnRleHQ6YSxpZDp2b2lkIDA9PT1lP1wiZ3B0X2V4Y2VwdGlvblwiOmV9KSk7ZCYmKGIubWV0YT17fSxkJiZkKGIubWV0YSkpO18uci5nb29nbGVfanNfZXJyb3JzPV8uci5nb29nbGVfanNfZXJyb3JzfHxbXTtfLnIuZ29vZ2xlX2pzX2Vycm9ycy5wdXNoKGIpO18uci5lcnJvcl9yZXBfbG9hZGVkfHwodWcoXy5yLmRvY3VtZW50LGxnKF8uci5sb2NhdGlvbi5wcm90b2NvbCtcIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Vycl9yZXAuanNcIikpLF8uci5lcnJvcl9yZXBfbG9hZGVkPSEwKTtyZXR1cm4hMX07dmFyIHZyPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtfLlAuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLnN0YXR1cz0xO3RoaXMubD1iO3RoaXMuQT1jO3RoaXMuSz1kO3RoaXMubmI9ISFlO3RoaXMubz1NYXRoLnJhbmRvbSgpO3RoaXMuQz17fTt0aGlzLmo9bnVsbDt0aGlzLkQ9KDAsXy5SYykodGhpcy5JLHRoaXMpO3RoaXMuRz1mfTtfLkoodnIsXy5QKTt2ci5wcm90b3R5cGUuST1mdW5jdGlvbihhKXtpZihhLm9yaWdpbj09PXRoaXMuQSYmKHRoaXMubmJ8fGEuc291cmNlPT10aGlzLmwpKXt2YXIgYj1udWxsO3RyeXtiPUpTT04ucGFyc2UoYS5kYXRhKX1jYXRjaChjKXt9aWYoXy5NYyhiKSYmKGE9Yi5pLGIuYz09PXRoaXMubSYmYSE9dGhpcy5vKSl7aWYoMiE9PXRoaXMuc3RhdHVzKXRyeXt0aGlzLnN0YXR1cz0yLHdyKHRoaXMpLHRoaXMuaiYmKHRoaXMuaigpLHRoaXMuaj1udWxsKX1jYXRjaChjKXt9YT1iLnM7Yj1iLnA7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYoXCJzdHJpbmdcIj09PXR5cGVvZiBifHxfLk1jKGIpKSYmdGhpcy5DLmhhc093blByb3BlcnR5KGEpKXRoaXMuQ1thXShiKX19fTt2YXIgd3I9ZnVuY3Rpb24oYSl7dmFyIGI9e307Yi5jPWEubTtiLmk9YS5vO2EuRyYmKGIuZT1hLkcpO2EubC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShiKSxhLkEpfTt2ci5wcm90b3R5cGUuSD1mdW5jdGlvbigpe2lmKDE9PT10aGlzLnN0YXR1cyl7dHJ5e3RoaXMubC5wb3N0TWVzc2FnZSYmd3IodGhpcyl9Y2F0Y2goYSl7fXdpbmRvdy5zZXRUaW1lb3V0KCgwLF8uUmMpKHRoaXMuSCx0aGlzKSw1MCl9fTt2ci5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbihhKXthJiYodGhpcy5qPWEpO18udih3aW5kb3csXCJtZXNzYWdlXCIsdGhpcy5EKTt0aGlzLksmJnRoaXMuSCgpfTt2YXIgeHI9ZnVuY3Rpb24oYSxiLGMpe2EuQ1tiXT1jfSx5cj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307ZC5jPWEubTtkLmk9YS5vO2Qucz1iO2QucD1jO3RyeXthLmwucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoZCksYS5BKX1jYXRjaChlKXt9fTt2ci5wcm90b3R5cGUudj1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTM7Xy5xYih3aW5kb3csXCJtZXNzYWdlXCIsdGhpcy5EKTtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKX07dmFyIHpyPWZ1bmN0aW9uKCl7dGhpcy5qPVtdO3RoaXMubD1bXTt0aGlzLnY9W119LEFyPWZ1bmN0aW9uKGEsYil7YS5sLnB1c2goYil9O3ZhciBCcj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5qPW5ldyB0LlByb21pc2UoZnVuY3Rpb24oYixjKXthLnJlc29sdmU9YjthLnJlamVjdD1jfSl9O3ZhciBDcj1mdW5jdGlvbihhKXthPUVycm9yLmNhbGwodGhpcyxhKTt0aGlzLm1lc3NhZ2U9YS5tZXNzYWdlO1wic3RhY2tcImluIGEmJih0aGlzLnN0YWNrPWEuc3RhY2spO18uQShPYmplY3QsXCJzZXRQcm90b3R5cGVPZlwiKS5jYWxsKE9iamVjdCx0aGlzLENyLnByb3RvdHlwZSk7dGhpcy5uYW1lPVwiSW5wdXRFcnJvclwifTtfLkooQ3IsRXJyb3IpO3ZhciBEcj1mdW5jdGlvbigpe3RoaXMubD1uZXcgQnJ9LEVyPWZ1bmN0aW9uKCl7RHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooRXIsRHIpO3ZhciBVPWZ1bmN0aW9uKGEsYil7YS52fHwoYS5qPWIsYS5sLnJlc29sdmUoYikpfSxGcj1mdW5jdGlvbihhKXthLnZ8fChhLmo9bnVsbCxhLmwucmVzb2x2ZShudWxsKSl9O2NjLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEVyLnByb3RvdHlwZSx7bTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubC5qfX0sdjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLm98fHZvaWQgMCE9PXRoaXMuan19fSk7dmFyIEdyPWZ1bmN0aW9uKGEpe3RoaXMubD1uZXcgQnI7dGhpcy52PWF9O18uSihHcixEcik7dmFyIEhyPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hLnYuan07Y2MuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoR3IucHJvdG90eXBlLHt2YWx1ZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudi5qfX0sZXJyb3I6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnYub319fSk7dmFyIElyPWZ1bmN0aW9uKCl7R3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooSXIsR3IpO2NjLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKElyLnByb3RvdHlwZSx7dmFsdWU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnYuan19fSk7dmFyIEpyPWZ1bmN0aW9uKCl7RXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooSnIsRXIpO0pyLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oKXtGcih0aGlzKX07dmFyIEtyPWZ1bmN0aW9uKCl7Xy5QLmNhbGwodGhpcyk7dmFyIGE9dGhpczt0aGlzLm89bmV3IHpyO3RoaXMubWE9ITE7Xy5SKHRoaXMsZnVuY3Rpb24oKXt2YXIgYj1hLm87Yi5qLmxlbmd0aD0wO2Iudi5sZW5ndGg9MDtiLmwubGVuZ3RoPTB9KX07Xy5KKEtyLF8uUCk7S3IucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYigpe3ZhciBjPXRoaXMsZCxlO3JldHVybiBEYShiLGZ1bmN0aW9uKGYpe3N3aXRjaChmLmope2Nhc2UgMTppZihjLm1hKXJldHVybiBmLnJldHVybigpO2MubWE9ITA7ZD1jLm8ubC5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIGcubX0pO2YuQT0yO3JldHVybiBFYShmLHQuUHJvbWlzZS5hbGwoZCksNCk7Y2FzZSA0OmlmKGMubGEpe2Yuaj01O2JyZWFrfUxyKGMpO3JldHVybiBFYShmLGMuaigpLDUpO2Nhc2UgNTpHYShmLDApO2JyZWFrO2Nhc2UgMjplPUhhKGYpO2lmKGMubGEpcmV0dXJuIGYucmV0dXJuKCk7ZSBpbnN0YW5jZW9mIENyfHwoTXIoYyxlKSxjLm8uai5sZW5ndGgmJk5yKGMsbmV3IENyKGUubWVzc2FnZSkpKTtmLmo9MH19KX0pfTtLci5wcm90b3R5cGUubD1mdW5jdGlvbigpe3ZhciBhPW5ldyBFcjt0aGlzLm8uai5wdXNoKGEpO3JldHVybiBhfTt2YXIgT3I9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEpyO2Euby5qLnB1c2goYik7cmV0dXJuIGJ9LFY9ZnVuY3Rpb24oYSxiKXtBcihhLm8sYik7Yj1uZXcgSXIoYik7YS5vLnYucHVzaChiKTtyZXR1cm4gYn0sVz1mdW5jdGlvbihhLGIpe0FyKGEubyxiKTtyZXR1cm4gbmV3IEdyKGIpfSxMcj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPV8uRihhLm8udiksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe2lmKCFIcihkLnZhbHVlKSl0aHJvdyBFcnJvcihcIm1pc3NpbmcgaW5wdXQ6IFwiK2EuaWQoKStcIi9cIitiKTsrK2J9fSxOcj1mdW5jdGlvbihhLGIpe2E9Xy5GKGEuby5qKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKWlmKGM9Yy52YWx1ZSwhYy52KXt2YXIgZD1iO2Mubz1kO2MubC5yZWplY3QoZCl9fTt2YXIgd2I9ZnVuY3Rpb24oKXtfLlAuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaj1bXX07Xy5KKHdiLF8uUCk7dmFyIHhiPWZ1bmN0aW9uKGEsYil7Yj1fLkYoYik7Zm9yKHZhciBjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsXy53aChhLGMpLGEuai5wdXNoKGMpfSxYPWZ1bmN0aW9uKGEsYil7eGIoYSxbYl0pfSx5Yj1mdW5jdGlvbihhKXtpZihhLmoubGVuZ3RoKXthPV8uRihhLmopO2Zvcih2YXIgYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpYi52YWx1ZS5zdGFydCgpfX07d2IucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKTt0aGlzLmoubGVuZ3RoPTB9O3ZhciBQcj1mdW5jdGlvbigpe3RoaXMuaj1bXX0sUnI9ZnVuY3Rpb24oYSxiLGMsZCxlKXthLmoucHVzaChuZXcgUXIoYixjLGQsZSkpfSxTcj1mdW5jdGlvbihhLGIsYyxkKXtScihhLGIsYyxkK1wicHhcIix2b2lkIDApfSxUcj1mdW5jdGlvbihhKXtmb3IodmFyIGI9YS5qLmxlbmd0aC0xOzA8PWI7Yi0tKXt2YXIgYz1hLmpbYl07Yy5sPyhjLnYuc3R5bGUucmVtb3ZlUHJvcGVydHkoYy5qKSxjLnYuc3R5bGUuc2V0UHJvcGVydHkoYy5qLFN0cmluZyhjLm8pLGMubSkpOmMudi5zdHlsZVtjLmpdPWMub31hLmoubGVuZ3RoPTB9LFFyPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMudj1hO3RoaXMuaj0odGhpcy5sPSEodm9pZCAwPT09ZHx8IWEuc3R5bGV8fCFhLnN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkpKT9TdHJpbmcoYikucmVwbGFjZSgvKFtBLVpdKS9nLFwiLSQxXCIpLnRvTG93ZXJDYXNlKCk6Yjt0aGlzLm89dGhpcy5sP2Euc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh0aGlzLmopOmEuc3R5bGVbdGhpcy5qXTt0aGlzLm09dGhpcy5sP2Euc3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eSh0aGlzLmopOnZvaWQgMDt0aGlzLmw/KGEuc3R5bGUucmVtb3ZlUHJvcGVydHkodGhpcy5qKSxhLnN0eWxlLnNldFByb3BlcnR5KHRoaXMuaixTdHJpbmcoYyksZCkpOmEuc3R5bGVbdGhpcy5qXT1TdHJpbmcoYyl9O3ZhciBVcixWcjtVcj17b3ZlcmZsb3c6XCJoaWRkZW5cIixwb3NpdGlvbjpcImZpeGVkXCJ9O18uV3I9ZnVuY3Rpb24oYSxiKXtpZighYS5ib2R5KXJldHVybiBudWxsO3ZhciBjPW5ldyBWcjtjLmFwcGx5KGEsYik7cmV0dXJuIGZ1bmN0aW9uKCl7Xy5jaShhLmJvZHkse2ZpbHRlcjpjLmosd2Via2l0RmlsdGVyOmMuaixvdmVyZmxvdzpjLnYscG9zaXRpb246Yy5vLHRvcDpjLm19KTtiLnNjcm9sbFRvKDAsYy5sKX19O1ZyPWZ1bmN0aW9uKCl7dGhpcy5qPXRoaXMubT10aGlzLm89dGhpcy52PW51bGw7dGhpcy5sPTB9O1ZyLnByb3RvdHlwZS5hcHBseT1mdW5jdGlvbihhLGIpe3RoaXMudj1hLmJvZHkuc3R5bGUub3ZlcmZsb3c7dGhpcy5vPWEuYm9keS5zdHlsZS5wb3NpdGlvbjt0aGlzLm09YS5ib2R5LnN0eWxlLnRvcDt0aGlzLmo9YS5ib2R5LnN0eWxlLmZpbHRlcj9hLmJvZHkuc3R5bGUuZmlsdGVyOmEuYm9keS5zdHlsZS53ZWJraXRGaWx0ZXI7dGhpcy5sPV8uSW4oYik7Xy5jaShhLmJvZHksXCJ0b3BcIiwtdGhpcy5sK1wicHhcIik7Xy5jaShhLmJvZHksVXIpfTtfLlhyPWZ1bmN0aW9uKCl7dGhpcy5qPW51bGx9O0ljKF8uWHIpO3ZhciBZcj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj81MDA6YjtfLlAuY2FsbCh0aGlzKTt0aGlzLmw9YTt0aGlzLmo9bnVsbDt0aGlzLm09e307dGhpcy5BPTA7dGhpcy5DPWI7dGhpcy5vPW51bGx9O18uSihZcixfLlApO1lyLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7dGhpcy5tPXt9O3RoaXMubyYmKF8ucWIodGhpcy5sLFwibWVzc2FnZVwiLHRoaXMubyksZGVsZXRlIHRoaXMubyk7ZGVsZXRlIHRoaXMubTtkZWxldGUgdGhpcy5sO2RlbGV0ZSB0aGlzLmo7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyl9O3ZhciAkcj1mdW5jdGlvbihhKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5sLl9fdXNwYXBpfHxudWxsIT1acihhKX0sYnM9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtpZigkcihhKSl7dmFyIGQ9amQoZnVuY3Rpb24oKXtyZXR1cm4gYihjKX0pO2FzKGEsZnVuY3Rpb24oZSxmKXtmJiYoYz1lKTtkKCl9KTtzZXRUaW1lb3V0KGQsYS5DKX1lbHNlIGIoYyl9LGFzPWZ1bmN0aW9uKGEsYil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEubC5fX3VzcGFwaSlhPWEubC5fX3VzcGFwaSxhKFwiZ2V0VVNQRGF0YVwiLDEsYik7ZWxzZSBpZihacihhKSl7Y3MoYSk7dmFyIGM9KythLkE7YS5tW2NdPWI7YS5qJiYoYj17fSxhLmoucG9zdE1lc3NhZ2UoKGIuX191c3BhcGlDYWxsPXtjb21tYW5kOlwiZ2V0VVNQRGF0YVwiLHZlcnNpb246MSxjYWxsSWQ6Y30sYiksXCIqXCIpKX19LFpyPWZ1bmN0aW9uKGEpe2lmKGEuailyZXR1cm4gYS5qO2Euaj1RZyhhLmwsXCJfX3VzcGFwaUxvY2F0b3JcIik7cmV0dXJuIGEuan0sY3M9ZnVuY3Rpb24oYSl7YS5vfHwoYS5vPWZ1bmN0aW9uKGIpe3RyeXt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGIuZGF0YT9jPUpTT04ucGFyc2UoYi5kYXRhKTpjPWIuZGF0YTt2YXIgZD1jLl9fdXNwYXBpUmV0dXJuO2EubVtkLmNhbGxJZF0oZC5yZXR1cm5WYWx1ZSxkLnN1Y2Nlc3MpfWNhdGNoKGUpe319LF8udihhLmwsXCJtZXNzYWdlXCIsYS5vKSl9O3ZhciBkcz1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhkcyxNKTt2YXIgZnM9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGVzLG51bGwpfTtLKGZzLE0pO3ZhciBlcz1bMSwyXTt2YXIgZ3M9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soZ3MsTSk7dmFyIGhzPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGhzLE0pO3ZhciBpcz1mdW5jdGlvbihhKXtfLlAuY2FsbCh0aGlzKTt0aGlzLmw9YTt0aGlzLm89dGhpcy5qPW51bGw7dGhpcy5tPXt9O3RoaXMuQT0wO3RoaXMuanx8KHRoaXMubC5nb29nbGVmYz90aGlzLmo9dGhpcy5sOnRoaXMuaj1RZyh0aGlzLmwsXCJnb29nbGVmY1ByZXNlbnRcIikpfTtfLkooaXMsXy5QKTt2YXIga3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHQuUHJvbWlzZShmdW5jdGlvbihjKXtpZihhLmopaWYoYS5qPT09YS5sKXt2YXIgZD1hLmwuZ29vZ2xlZmN8fHt9O2QuX19mY2k9ZC5fX2ZjaXx8W107ZC5fX2ZjaS5wdXNoKGIsYyl9ZWxzZSBqcyhhKSxkPWEuQSsrLGEubVtkXT1jLGM9e30sYS5qLnBvc3RNZXNzYWdlKChjLl9fZmNpQ2FsbD17Y29tbWFuZDpiLGNhbGxJZDpkfSxjKSxcIipcIil9KX0sanM9ZnVuY3Rpb24oYSl7YS5vfHwoYS5vPWZ1bmN0aW9uKGIpe3RyeXt2YXIgYz1uZXcgaHMoSlNPTi5wYXJzZShiLmRhdGEuX19mY2lSZXR1cm4pKTsoMCxhLm1bQihjLDEpXSkoYyl9Y2F0Y2goZCl7fX0sXy52KGEubCxcIm1lc3NhZ2VcIixhLm8pKX0sbHM9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWIpcmV0dXJuIHQuUHJvbWlzZS5yZXNvbHZlKG51bGwpO3ZhciBlPU8oYixkcywzKTtiPU8oYixncywyKTtyZXR1cm4gZSYmYiYmMT09PUIoYiwxKSYmMj09PUIoZSwxKT9rcyhhLFwiZ2V0TTI1Q29uc2VudFwiKS50aGVuKGZ1bmN0aW9uKGYpe3ZhciBnPU8oZixmcyw0KTtpZihnKXtpZihmPWQsYyl7dmFyIGg9QihnLDEpO2gmJl8uQShoLFwiaW5jbHVkZXNcIikuY2FsbChoLGMpJiYoZj0hMSk7KGc9QihnLDIpKSYmXy5BKGcsXCJpbmNsdWRlc1wiKS5jYWxsKGcsYykmJihmPSEwKX19ZWxzZSBmPW51bGw7cmV0dXJuIGZ9KTp0LlByb21pc2UucmVzb2x2ZShudWxsKX07dmFyIG1zPWZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDAhPT1hLnRjU3RyaW5nJiZcInN0cmluZ1wiIT09dHlwZW9mIGEudGNTdHJpbmd8fHZvaWQgMCE9PWEuZ2RwckFwcGxpZXMmJlwiYm9vbGVhblwiIT09dHlwZW9mIGEuZ2RwckFwcGxpZXN8fHZvaWQgMCE9PWEubGlzdGVuZXJJZCYmXCJudW1iZXJcIiE9PXR5cGVvZiBhLmxpc3RlbmVySWR8fHZvaWQgMCE9PWEuYWRkdGxDb25zZW50JiZcInN0cmluZ1wiIT09dHlwZW9mIGEuYWRkdGxDb25zZW50PzI6YS5jbXBTdGF0dXMmJlwiZXJyb3JcIiE9PWEuY21wU3RhdHVzPzA6M30sbnM9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/NTAwOmI7Xy5QLmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5qPW51bGw7dGhpcy5tPXt9O3RoaXMuQT0wO3RoaXMuQz1iO3RoaXMubz1udWxsfTtfLkoobnMsXy5QKTtucy5wcm90b3R5cGUudj1mdW5jdGlvbigpe3RoaXMubT17fTt0aGlzLm8mJihfLnFiKHRoaXMubCxcIm1lc3NhZ2VcIix0aGlzLm8pLGRlbGV0ZSB0aGlzLm8pO2RlbGV0ZSB0aGlzLm07ZGVsZXRlIHRoaXMubDtkZWxldGUgdGhpcy5qO18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpfTt2YXIgcHM9ZnVuY3Rpb24oYSl7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEubC5fX3RjZmFwaXx8bnVsbCE9b3MoYSl9O25zLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe3FzKHRoaXMsXCJhZGRFdmVudExpc3RlbmVyXCIsZnVuY3Rpb24oYixjKXtiPWM/Yjp7fTtiLmludGVybmFsRXJyb3JTdGF0ZT1tcyhiKTswIT09Yi5pbnRlcm5hbEVycm9yU3RhdGUmJihiLnRjU3RyaW5nPVwidGN1bmF2YWlsYWJsZVwiKTthKGIpfSl9O25zLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe2EmJmEubGlzdGVuZXJJZCYmcXModGhpcyxcInJlbW92ZUV2ZW50TGlzdGVuZXJcIixudWxsLGEubGlzdGVuZXJJZCl9O3ZhciBzcz1mdW5jdGlvbihhLGIpe3ZhciBjPXtpbnRlcm5hbEVycm9yU3RhdGU6MH0sZD1qZChmdW5jdGlvbigpe3JldHVybiBiKGMpfSksZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy50Y1N0cmluZz1cInRjdW5hdmFpbGFibGVcIjtjLmludGVybmFsRXJyb3JTdGF0ZT0xO2QoKX0sYS5DKTtxcyhhLFwiYWRkRXZlbnRMaXN0ZW5lclwiLGZ1bmN0aW9uKGYsZyl7ZSYmKGNsZWFyVGltZW91dChlKSxlPTApO2cmJihjPWYpO2MuaW50ZXJuYWxFcnJvclN0YXRlPW1zKGMpOzAhPWMuaW50ZXJuYWxFcnJvclN0YXRlJiYoYy50Y1N0cmluZz1cInRjdW5hdmFpbGFibGVcIik7aWYoMCE9Yy5pbnRlcm5hbEVycm9yU3RhdGV8fHJzKGMpKXFzKGEsXCJyZW1vdmVFdmVudExpc3RlbmVyXCIsbnVsbCxjLmxpc3RlbmVySWQpLGQoKX0pfSxxcz1mdW5jdGlvbihhLGIsYyxkKXtjfHwoYz1mdW5jdGlvbigpe30pO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmwuX190Y2ZhcGkpYT1hLmwuX190Y2ZhcGksYShiLDIsYyxkKTtlbHNlIGlmKG9zKGEpKXt0cyhhKTt2YXIgZT0rK2EuQTthLm1bZV09YzthLmomJihjPXt9LGEuai5wb3N0TWVzc2FnZSgoYy5fX3RjZmFwaUNhbGw9e2NvbW1hbmQ6Yix2ZXJzaW9uOjIsY2FsbElkOmUscGFyYW1ldGVyOmR9LGMpLFwiKlwiKSl9ZWxzZSBjKHt9LCExKX0sb3M9ZnVuY3Rpb24oYSl7aWYoYS5qKXJldHVybiBhLmo7YS5qPVFnKGEubCxcIl9fdGNmYXBpTG9jYXRvclwiKTtyZXR1cm4gYS5qfSx0cz1mdW5jdGlvbihhKXthLm98fChhLm89ZnVuY3Rpb24oYil7dHJ5e3ZhciBjO1wic3RyaW5nXCI9PT10eXBlb2YgYi5kYXRhP2M9SlNPTi5wYXJzZShiLmRhdGEpOmM9Yi5kYXRhO3ZhciBkPWMuX190Y2ZhcGlSZXR1cm47YS5tW2QuY2FsbElkXShkLnJldHVyblZhbHVlLGQuc3VjY2Vzcyl9Y2F0Y2goZSl7fX0sXy52KGEubCxcIm1lc3NhZ2VcIixhLm8pKX0scnM9ZnVuY3Rpb24oYSl7cmV0dXJuITE9PT1hLmdkcHJBcHBsaWVzfHxcImVycm9yXCI9PT1hLmNtcFN0YXR1c3x8Xy55KDE5MDIpJiYwIT09YS5pbnRlcm5hbEVycm9yU3RhdGV8fFwibG9hZGVkXCI9PT1hLmNtcFN0YXR1cyYmKFwidGNsb2FkZWRcIj09PWEuZXZlbnRTdGF0dXN8fFwidXNlcmFjdGlvbmNvbXBsZXRlXCI9PT1hLmV2ZW50U3RhdHVzKT8hMDohMX07dmFyIHVzPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuIGE7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybi0xPGMuaW5kZXhPZihcIjwhZG9jdHlwZVwiKXx8LTE8Yy5pbmRleE9mKFwiPGh0bWxcIik/YTpcIjxodG1sPjxoZWFkPlwiKyh2b2lkIDA9PT1iP1wiXCI6YikrXCI8L2hlYWQ+PGJvZHk+XCIrYStcIjwvYm9keT48L2h0bWw+XCJ9O3ZhciB2cz12ZChcImdwdC9wdWJhZHNfaW1wbF9cIiksd3M9dmQoXCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9cIik7dmFyIHhzPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLnY9RWgoYSk7dGhpcy5sPUVoKGIpO3RoaXMubz1jO3RoaXMuaj1FaChkKTt0aGlzLm09ZTt0aGlzLkE9Zn0seXM9ZnVuY3Rpb24oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHt3aW5kb3dDb29yZHNfdDphLnYudG9wLHdpbmRvd0Nvb3Jkc19yOmEudi5yaWdodCx3aW5kb3dDb29yZHNfYjphLnYuYm90dG9tLHdpbmRvd0Nvb3Jkc19sOmEudi5sZWZ0LGZyYW1lQ29vcmRzX3Q6YS5sLnRvcCxmcmFtZUNvb3Jkc19yOmEubC5yaWdodCxmcmFtZUNvb3Jkc19iOmEubC5ib3R0b20sZnJhbWVDb29yZHNfbDphLmwubGVmdCxzdHlsZVpJbmRleDphLm8sYWxsb3dlZEV4cGFuc2lvbl90OmEuai50b3AsYWxsb3dlZEV4cGFuc2lvbl9yOmEuai5yaWdodCxhbGxvd2VkRXhwYW5zaW9uX2I6YS5qLmJvdHRvbSxhbGxvd2VkRXhwYW5zaW9uX2w6YS5qLmxlZnQseEluVmlldzphLm0seUluVmlldzphLkF9KX0senM9ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3csZD1jLnNjcmVlblh8fGMuc2NyZWVuTGVmdHx8MCxlPWMuc2NyZWVuWXx8Yy5zY3JlZW5Ub3B8fDA7Yz1uZXcgXy5EaChlLGQrKGMub3V0ZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHwwKSxlKyhjLm91dGVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fHwwKSxkKTt2YXIgZj1paShhKTtkPV8ubGkoXy5taSxhKTt2YXIgZz1uZXcgRmgoZi54LGYueSxkLndpZHRoLGQuaGVpZ2h0KTtkPUdoKGcpO2U9U3RyaW5nKGZpKGEsXCJ6SW5kZXhcIikpO3ZhciBoPW5ldyBfLkRoKDAsSW5maW5pdHksSW5maW5pdHksMCk7Zm9yKHZhciBrPVdmKGEpLGw9ay5qLmJvZHksbT1rLmouZG9jdW1lbnRFbGVtZW50LG49YWcoay5qKTthPWhpKGEpOylpZighKF8udWUmJjA9PWEuY2xpZW50V2lkdGh8fHllJiYwPT1hLmNsaWVudEhlaWdodCYmYT09bCkmJmEhPWwmJmEhPW0mJlwidmlzaWJsZVwiIT1maShhLFwib3ZlcmZsb3dcIikpe3ZhciBxPWlpKGEpLHc9bmV3IF8ueWEoYS5jbGllbnRMZWZ0LGEuY2xpZW50VG9wKTtxLngrPXcueDtxLnkrPXcueTtoLnRvcD1NYXRoLm1heChoLnRvcCxxLnkpO2gucmlnaHQ9TWF0aC5taW4oaC5yaWdodCxxLngrYS5jbGllbnRXaWR0aCk7aC5ib3R0b209TWF0aC5taW4oaC5ib3R0b20scS55K2EuY2xpZW50SGVpZ2h0KTtoLmxlZnQ9TWF0aC5tYXgoaC5sZWZ0LHEueCl9YT1uLnNjcm9sbExlZnQ7bj1uLnNjcm9sbFRvcDtoLmxlZnQ9TWF0aC5tYXgoaC5sZWZ0LGEpO2gudG9wPU1hdGgubWF4KGgudG9wLG4pO2s9Xy4kZihiZyhrLmopfHx3aW5kb3cpO2gucmlnaHQ9TWF0aC5taW4oaC5yaWdodCxhK2sud2lkdGgpO2guYm90dG9tPU1hdGgubWluKGguYm90dG9tLG4ray5oZWlnaHQpO2g9KGg9MDw9aC50b3AmJjA8PWgubGVmdCYmaC5ib3R0b20+aC50b3AmJmgucmlnaHQ+aC5sZWZ0P2g6bnVsbCk/bmV3IEZoKGgubGVmdCxoLnRvcCxoLnJpZ2h0LWgubGVmdCxoLmJvdHRvbS1oLnRvcCk6bnVsbDtiPyhrPWIuYm91bmRpbmdDbGllbnRSZWN0LGI9bmV3IEZoKGYueC1rLmxlZnQsZi55LWsudG9wLGIucm9vdEJvdW5kcy53aWR0aCxiLnJvb3RCb3VuZHMuaGVpZ2h0KSk6Yj1oO2s9aD9IaChnLGgpOm51bGw7aD1mPTA7ayYmIShuZXcgXy5UZihrLndpZHRoLGsuaGVpZ2h0KSkuaXNFbXB0eSgpJiYoZj1rLndpZHRoL2cud2lkdGgsaD1rLmhlaWdodC9nLmhlaWdodCk7az1uZXcgXy5EaCgwLDAsMCwwKTtpZihhPWIpKGc9SGgoZyxiKSk/KG49R2goYiksbD1HaChnKSxhPWwucmlnaHQhPW4ubGVmdCYmbi5yaWdodCE9bC5sZWZ0LG49bC5ib3R0b20hPW4udG9wJiZuLmJvdHRvbSE9bC50b3AsYT0oMCE9Zy53aWR0aHx8YSkmJigwIT1nLmhlaWdodHx8bikpOmE9ITE7YSYmKGs9bmV3IF8uRGgoTWF0aC5tYXgoZC50b3AtYi50b3AsMCksTWF0aC5tYXgoYi5sZWZ0K2Iud2lkdGgtZC5yaWdodCwwKSxNYXRoLm1heChiLnRvcCtiLmhlaWdodC1kLmJvdHRvbSwwKSxNYXRoLm1heChkLmxlZnQtYi5sZWZ0LDApKSk7cmV0dXJuIG5ldyB4cyhjLGQsZSxrLGYsaCl9O3ZhciBBcz1mdW5jdGlvbihhKXt0aGlzLm09YTt0aGlzLm89bnVsbDt0aGlzLkg9dGhpcy5zdGF0dXM9MDt0aGlzLmw9bnVsbDt0aGlzLm1hPVwic2ZjaGFubmVsXCIrYX07dmFyIEJzPSExLENzPVwiXCIsRHM9ZnVuY3Rpb24oYSl7YT1hLm1hdGNoKC9bXFxkXSsvZyk7aWYoIWEpcmV0dXJuXCJcIjthLmxlbmd0aD0zO3JldHVybiBhLmpvaW4oXCIuXCIpfTsoZnVuY3Rpb24oKXtpZihuYXZpZ2F0b3IucGx1Z2lucyYmbmF2aWdhdG9yLnBsdWdpbnMubGVuZ3RoKXt2YXIgYT1uYXZpZ2F0b3IucGx1Z2luc1tcIlNob2Nrd2F2ZSBGbGFzaFwiXTtpZihhJiYoQnM9ITAsYS5kZXNjcmlwdGlvbikpe0NzPURzKGEuZGVzY3JpcHRpb24pO3JldHVybn1pZihuYXZpZ2F0b3IucGx1Z2luc1tcIlNob2Nrd2F2ZSBGbGFzaCAyLjBcIl0pe0JzPSEwO0NzPVwiMi4wLjAuMTFcIjtyZXR1cm59fWlmKG5hdmlnYXRvci5taW1lVHlwZXMmJm5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoJiYoYT1uYXZpZ2F0b3IubWltZVR5cGVzW1wiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIl0sQnM9ISghYXx8IWEuZW5hYmxlZFBsdWdpbikpKXtDcz1EcyhhLmVuYWJsZWRQbHVnaW4uZGVzY3JpcHRpb24pO3JldHVybn1pZihcInVuZGVmaW5lZFwiIT10eXBlb2YgQWN0aXZlWE9iamVjdCl7dHJ5e3ZhciBiPW5ldyBBY3RpdmVYT2JqZWN0KFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guN1wiKTtCcz0hMDtDcz1EcyhiLkdldFZhcmlhYmxlKFwiJHZlcnNpb25cIikpO3JldHVybn1jYXRjaChjKXt9dHJ5e2I9bmV3IEFjdGl2ZVhPYmplY3QoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC42XCIpO0JzPSEwO0NzPVwiNi4wLjIxXCI7cmV0dXJufWNhdGNoKGMpe310cnl7Yj1uZXcgQWN0aXZlWE9iamVjdChcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoXCIpLEJzPSEwLENzPURzKGIuR2V0VmFyaWFibGUoXCIkdmVyc2lvblwiKSl9Y2F0Y2goYyl7fX19KSgpO3ZhciBFcz1CcyxGcz1Dczt2YXIgR3M9ZnVuY3Rpb24oYSl7dGhpcy5qPWF9O3ZhciBIcz1mdW5jdGlvbihhLGIpe3RoaXMud2I9YTt0aGlzLnhiPWI7dGhpcy5sPXRoaXMuaj0hMX07dmFyIElzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrKXtrPXZvaWQgMD09PWs/W106azt0aGlzLm09YTt0aGlzLmw9Yjt0aGlzLnY9Yzt0aGlzLnBlcm1pc3Npb25zPWQ7dGhpcy5vPWU7dGhpcy5BPWY7dGhpcy5uYj1nO3RoaXMuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zPWs7dGhpcy5qPVwiXCI7dGhpcy5hYj1ofTt2YXIgSnM9ZnVuY3Rpb24oYSxiKXt0aGlzLmw9YTt0aGlzLm89Yn07SnMucHJvdG90eXBlLmo9ZnVuY3Rpb24oYSl7dGhpcy5vJiZhJiYoYS5zZW50aW5lbD10aGlzLm8pO3JldHVybiBKU09OLnN0cmluZ2lmeShhKX07dmFyIEtzPWZ1bmN0aW9uKGEsYixjKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1jP1wiXCI6Yyk7dGhpcy52ZXJzaW9uPWJ9O18uSihLcyxKcyk7S3MucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sLHZlcnNpb246dGhpcy52ZXJzaW9ufSl9O3ZhciBMcz1mdW5jdGlvbihhLGIsYyxkKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1kP1wiXCI6ZCk7dGhpcy5tPWI7dGhpcy52PWN9O18uSihMcyxKcyk7THMucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sLGluaXRpYWxXaWR0aDp0aGlzLm0saW5pdGlhbEhlaWdodDp0aGlzLnZ9KX07dmFyIE1zPWZ1bmN0aW9uKGEsYixjKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1jP1wiXCI6Yyk7dGhpcy52PWJ9O18uSihNcyxKcyk7TXMucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sLGRlc2NyaXB0aW9uOnRoaXMudn0pfTt2YXIgTnM9ZnVuY3Rpb24oYSxiLGMsZCl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09ZD9cIlwiOmQpO3RoaXMudj1iO3RoaXMucHVzaD1jfTtfLkooTnMsSnMpO05zLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCxleHBhbmRfdDp0aGlzLnYudG9wLGV4cGFuZF9yOnRoaXMudi5yaWdodCxleHBhbmRfYjp0aGlzLnYuYm90dG9tLGV4cGFuZF9sOnRoaXMudi5sZWZ0LHB1c2g6dGhpcy5wdXNofSl9O3ZhciBPcz1mdW5jdGlvbihhLGIpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWI/XCJcIjpiKX07Xy5KKE9zLEpzKTtPcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmx9KX07dmFyIFBzPWZ1bmN0aW9uKGEsYixjKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1jP1wiXCI6Yyk7dGhpcy5tPWJ9O18uSihQcyxKcyk7UHMucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT17dWlkOnRoaXMubCxuZXdHZW9tZXRyeTp5cyh0aGlzLm0pfTtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLGEpfTt2YXIgUXM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe1BzLmNhbGwodGhpcyxhLGMsdm9pZCAwPT09Zj9cIlwiOmYpO3RoaXMuc3VjY2Vzcz1iO3RoaXMudj1kO3RoaXMucHVzaD1lfTtfLkooUXMsUHMpO1FzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9e3VpZDp0aGlzLmwsc3VjY2Vzczp0aGlzLnN1Y2Nlc3MsbmV3R2VvbWV0cnk6eXModGhpcy5tKSxleHBhbmRfdDp0aGlzLnYudG9wLGV4cGFuZF9yOnRoaXMudi5yaWdodCxleHBhbmRfYjp0aGlzLnYuYm90dG9tLGV4cGFuZF9sOnRoaXMudi5sZWZ0LHB1c2g6dGhpcy5wdXNofTt0aGlzLm8mJihhLnNlbnRpbmVsPXRoaXMubyk7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpfTt2YXIgUnM9ZnVuY3Rpb24oYSxiLGMsZCl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09ZD9cIlwiOmQpO3RoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD1jfTtfLkooUnMsSnMpO1JzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCx3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH0pfTt2YXIgU3M9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1jO2YmJihmPVwiP1wiK2YpO2I9KHZvaWQgMD09PWU/XCIvL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb21cIjplKSsoXCIvc2FmZWZyYW1lL1wiK2IrXCIvaHRtbC9jb250YWluZXIuaHRtbFwiK2YpO2U9YTtmb3IoZj0wO2UhPWUucGFyZW50OylmKyssZT1lLnBhcmVudDsoZT1mKSYmKGIrPShjP1wiJlwiOlwiP1wiKStcIm49XCIrZSk7KGM9ZCl8fChjPUpnKGEsITEpKTtyZXR1cm4oYz9cImh0dHBzOlwiOlwiaHR0cDpcIikrYn07dmFyIFRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD13aW5kb3c7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9Xy5PaSgpLGY9Mzt0cnl7dmFyIGc9Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Y2goayl7Zj0xMztpZihjKXJldHVybiBjKGEsayksZzt0aHJvdyBrO31maW5hbGx5e2lmKGQuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nJiZlKXt2YXIgaD1fLk9pKCl8fDA7ZT17bGFiZWw6YS50b1N0cmluZygpLHZhbHVlOmUsZHVyYXRpb246aC1lLHR5cGU6Zn07Zj1kLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWU9ZC5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXTsyMDQ4PmYubGVuZ3RoJiZmLnB1c2goZSl9fXJldHVybiBnfX07dmFyIFlzPWZ1bmN0aW9uKGEpe0FzLmNhbGwodGhpcyxhLnVuaXF1ZUlkKTt2YXIgYj10aGlzO3RoaXMuRD1hLmhkO3RoaXMuRz0xPT1hLnNpemU7dGhpcy5WPW5ldyBIcyhhLnBlcm1pc3Npb25zLndiJiYhdGhpcy5HLGEucGVybWlzc2lvbnMueGImJiF0aGlzLkcpO3RoaXMuQT1hLlRiO3RoaXMua2E9YS5ob3N0cGFnZUxpYnJhcnlUb2tlbnN8fFtdO3ZhciBjPXdpbmRvdy5sb2NhdGlvbjt0aGlzLmZhPVwiZmlsZTpcIj09Yy5wcm90b2NvbD9cIipcIjpjLnByb3RvY29sK1wiLy9cIitjLmhvc3Q7dGhpcy5nYT0hIWEubmI7Yz0hMT09PWEuSmM/XCJodHRwczpcIjp3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w7dGhpcy5UPWEuRWM/XCIvL1wiK2EuRWMrXCIuc2FmZWZyYW1lLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiOlwiLy90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tXCI7dGhpcy5lYT1aYShhLmFiKT9cImh0dHBzOi8vc2VjdXJlZnJhbWUuZG91YmxlY2xpY2submV0XCI6Yyt0aGlzLlQ7dGhpcy5XPSEhYS5TYzt0aGlzLmJhPVVzKGEpO3RoaXMudj1uZXcgUHI7VnModGhpcyxhLlRiLGEuc2l6ZSk7dGhpcy5vPXRoaXMuYWE9enMoYS5UYik7dGhpcy5NPWEudGR8fFwiMS0wLTM3XCI7dGhpcy5kYT1hLlBjfHxcIlwiO3RoaXMuWD12b2lkIDA9PT1hLmFiP251bGw6YS5hYjtXcyh0aGlzLGEpO3RoaXMuUD1udWxsO3RoaXMuST1Ucyg0MTIsZnVuY3Rpb24oKXtyZXR1cm4gWHMoYil9LGEucmEpO3RoaXMuSz0tMTt0aGlzLkM9MDt0aGlzLlU9bnVsbDshYS5DZXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyfHxBZXx8emV8fCh0aGlzLlU9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFRzKDQxNCxmdW5jdGlvbihlKXtiLlA9ZVtlLmxlbmd0aC0xXTtYcyhiKX0sYS5yYSkpKTt0aGlzLmw9bmV3IHZyKHRoaXMubWEsdGhpcy5qLmNvbnRlbnRXaW5kb3csdGhpcy5lYSwhMSk7eHIodGhpcy5sLFwiaW5pdF9kb25lXCIsKDAsXy5SYykodGhpcy5NYix0aGlzKSk7eHIodGhpcy5sLFwicmVnaXN0ZXJfZG9uZVwiLCgwLF8uUmMpKHRoaXMuV2IsdGhpcykpO3hyKHRoaXMubCxcInJlcG9ydF9lcnJvclwiLCgwLF8uUmMpKHRoaXMuWWIsdGhpcykpO3hyKHRoaXMubCxcImV4cGFuZF9yZXF1ZXN0XCIsKDAsXy5SYykodGhpcy5LYix0aGlzKSk7eHIodGhpcy5sLFwiY29sbGFwc2VfcmVxdWVzdFwiLCgwLF8uUmMpKHRoaXMuSWIsdGhpcykpO3hyKHRoaXMubCxcImNyZWF0aXZlX2dlb21ldHJ5X3VwZGF0ZVwiLCgwLF8uUmMpKHRoaXMuTyx0aGlzKSk7dGhpcy5sLmNvbm5lY3QoKDAsXy5SYykodGhpcy5RYix0aGlzKSk7dmFyIGQ9VHMoNDE1LGZ1bmN0aW9uKCl7Yi5qJiYoYi5qLm5hbWU9XCJcIixhLnljJiZhLnljKCksXy5xYihiLmosXCJsb2FkXCIsZCkpfSxhLnJhKTtfLnYodGhpcy5qLFwibG9hZFwiLGQpO3RoaXMuTWI9VHMoNDEzLHRoaXMuTWIsYS5yYSk7dGhpcy5XYj1Ucyg0MTcsdGhpcy5XYixhLnJhKTt0aGlzLlliPVRzKDQxOSx0aGlzLlliLGEucmEpO3RoaXMuS2I9VHMoNDExLHRoaXMuS2IsYS5yYSk7dGhpcy5JYj1Ucyg0MDksdGhpcy5JYixhLnJhKTt0aGlzLk89VHMoNDEwLHRoaXMuTyxhLnJhKTt0aGlzLlFiPVRzKDQxNix0aGlzLlFiLGEucmEpfTtfLkooWXMsQXMpO3ZhciBWcz1mdW5jdGlvbihhLGIsYyl7YS5HPyhiLnN0eWxlLndpZHRoPV8ua2koXCIxMDAlXCIsITApLGIuc3R5bGUuaGVpZ2h0PV8ua2koXCJhdXRvXCIsITApKTooYi5zdHlsZS53aWR0aD1fLmtpKGMud2lkdGgsITApLGIuc3R5bGUuaGVpZ2h0PV8ua2koYy5oZWlnaHQsITApKX0sV3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1XZihhLkEpLGQ9Yi5jb250ZW50O2Q9YS5NK1wiO1wiK2QubGVuZ3RoK1wiO1wiK2Q7dmFyIGU9bmV3IElzKGEubSxhLmZhLGEuYWEsYS5WLG5ldyBHcyh7c2hhcmVkOntzZl92ZXI6YS5NLGNrX29uOm5hdmlnYXRvci5jb29raWVFbmFibGVkPzE6MCxmbGFzaF92ZXI6RXM/RnM6XCIwXCJ9fSksYS5HLGEuZ2EsYS5YLGEua2EpO3ZhciBmPXt9O2YudWlkPWUubTtmLmhvc3RQZWVyTmFtZT1lLmw7Zi5pbml0aWFsR2VvbWV0cnk9eXMoZS52KTt2YXIgZz1lLnBlcm1pc3Npb25zO2c9SlNPTi5zdHJpbmdpZnkoe2V4cGFuZEJ5T3ZlcmxheTpnLndiLGV4cGFuZEJ5UHVzaDpnLnhiLHJlYWRDb29raWU6Zy5qLHdyaXRlQ29va2llOmcubH0pO2Y9KGYucGVybWlzc2lvbnM9ZyxmLm1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KGUuby5qKSxmLnJlcG9ydENyZWF0aXZlR2VvbWV0cnk9ZS5BLGYuaXNEaWZmZXJlbnRTb3VyY2VXaW5kb3c9ZS5uYixmLmdvb2dfc2FmZWZyYW1lX2hsdD10bihlLmhvc3RwYWdlTGlicmFyeVRva2VucyksZi5lbmNyeXB0aW9uTW9kZT1lLmFiLGYpO2UuaiYmKGYuc2VudGluZWw9ZS5qKTtlPUpTT04uc3RyaW5naWZ5KGYpO2U9ZCtlO2Q9ITE9PT1iLkpjO2lmKGEuVyYmYi5zaXplIGluc3RhbmNlb2YgXy5UZil7Zj1aYShiLmFiKT9cImh0dHBzOi8vc2VjdXJlZnJhbWUuZG91YmxlY2xpY2submV0XCI6YmcoYy5qKS5sb2NhdGlvbi5wcm90b2NvbCthLlQ7Zz1iLnRjO3ZhciBoPWIuc2l6ZSxrPWJnKFdmKGEuQSkuaik7WnF8fHVnKGsuZG9jdW1lbnQsJHEpO1pxKys7ay5nb29nbGVfZWFzX3F1ZXVlPWsuZ29vZ2xlX2Vhc19xdWV1ZXx8W107ay5nb29nbGVfZWFzX3F1ZXVlLnB1c2goe2E6ZyxiOmYsYzpoLndpZHRoLGQ6aC5oZWlnaHQsZTpcInNmLWdkbi1leHAtXCIrWnEsZjp2b2lkIDAsZzp2b2lkIDAsaDp2b2lkIDAsaTp2b2lkIDB9KX1nPWIuc2l6ZTt2YXIgbD1iLndhLG09Yi5hZHx8XCJcIjtmPWcud2lkdGg7aD1nLmhlaWdodDtnPVwiXCI7YS5HJiYoaD1mPTAsZz1cIm1pbi13aWR0aDoxMDAlXCIpO2s9e307ay5pZD1iLnRjO2sudGl0bGU9bTtrLm5hbWU9ZTtiPWJnKGMuaik7ZD1aYShhLlgpP1wiaHR0cHM6Ly9zZWN1cmVmcmFtZS5kb3VibGVjbGljay5uZXQvY29udGFpbmVyLmh0bWw/ZWNzPVwiK2w6U3MoYixhLk0sYS5kYSxkLGEuVCk7ZT1bXTthLlcmJihiPUtnKGIubG9jYXRpb24uaHJlZiksZS5wdXNoKFswPGIubGVuZ3RoP1wiZ29vZ2xlX2RlYnVnXCIrKGI/XCI9XCIrYjpcIlwiKStcIiZcIjpcIlwiLFwieHBjPVwiLFwic2YtZ2RuLWV4cC1cIithLm0sXCImcD1cIixlbmNvZGVVUklDb21wb25lbnQoXy5yLmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSxcIi8vXCIsZW5jb2RlVVJJQ29tcG9uZW50KF8uci5kb2N1bWVudC5sb2NhdGlvbi5ob3N0KV0uam9pbihcIlwiKSkpO2UubGVuZ3RoJiYoZCs9XCIjXCIrZS5qb2luKFwiJlwiKSk7Yj0oay5zcmM9ZCxrLnNjcm9sbGluZz1cIm5vXCIsay5tYXJnaW5XaWR0aD1cIjBcIixrLm1hcmdpbkhlaWdodD1cIjBcIixrLndpZHRoPVN0cmluZyhmKSxrLmhlaWdodD1TdHJpbmcoaCksa1tcImRhdGEtaXMtc2FmZWZyYW1lXCJdPVwidHJ1ZVwiLGspO251bGwhPT1hLmJhJiYoYi5zYW5kYm94PWEuYmEpO2Q9ZztlPXt9O2Q9KGUuZnJhbWVib3JkZXI9MCxlLmFsbG93VHJhbnNwYXJlbmN5PVwidHJ1ZVwiLGUuc3R5bGU9XCJib3JkZXI6MDt2ZXJ0aWNhbC1hbGlnbjpib3R0b207XCIrKHZvaWQgMD09PWQ/XCJcIjpkKSxlLnNyYz1cImFib3V0OmJsYW5rXCIsZSk7YiYmcGQoZCxiKTtjPWMubChcIklGUkFNRVwiLGQpO2EuQS5hcHBlbmRDaGlsZChjKTthLmo9Y307Xy5wPVlzLnByb3RvdHlwZTtfLnAuUWI9ZnVuY3Rpb24oKXt0aGlzLlUmJnRoaXMuaj90aGlzLlUub2JzZXJ2ZSh0aGlzLmopOihfLnYod2luZG93LFwicmVzaXplXCIsdGhpcy5JKSxfLnYod2luZG93LFwic2Nyb2xsXCIsdGhpcy5JKSl9O18ucC5NYj1mdW5jdGlvbihhKXt0cnl7aWYoMCE9dGhpcy5zdGF0dXMpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgYWxyZWFkeSBpbml0aWFsaXplZFwiKTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCl8fFwic3RyaW5nXCIhPT10eXBlb2YgYi52ZXJzaW9uKXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIEpTT04gbWVzc2FnZVwiKTt2YXIgYz1uZXcgS3MoYi51aWQsYi52ZXJzaW9uLGIuc2VudGluZWwpO2lmKHRoaXMubSE9Yy5sfHx0aGlzLk0hPWMudmVyc2lvbil0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7dGhpcy5zdGF0dXM9MX1jYXRjaChkKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIElOSVRJQUxJWkVfRE9ORSBtZXNzYWdlLiBSZWFzb246IFwiK2QubWVzc2FnZSl9fTtfLnAuV2I9ZnVuY3Rpb24oYSl7dHJ5e2lmKDEhPXRoaXMuc3RhdHVzKXRocm93IEVycm9yKFwiQ29udGFpbmVyIG5vdCBpbml0aWFsaXplZFwiKTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCl8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5pbml0aWFsV2lkdGh8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5pbml0aWFsSGVpZ2h0KXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIEpTT04gbWVzc2FnZVwiKTtpZih0aGlzLm0hPShuZXcgTHMoYi51aWQsYi5pbml0aWFsV2lkdGgsYi5pbml0aWFsSGVpZ2h0LGIuc2VudGluZWwpKS5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTt0aGlzLnN0YXR1cz0yfWNhdGNoKGMpe3RoaXMuRC5lcnJvcihcIkludmFsaWQgUkVHSVNURVJfRE9ORSBtZXNzYWdlLiBSZWFzb246IFwiK2MubWVzc2FnZSl9fTtfLnAuWWI9ZnVuY3Rpb24oYSl7dHJ5e2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJzdHJpbmdcIiE9PXR5cGVvZiBiLmRlc2NyaXB0aW9uKXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIEpTT04gbWVzc2FnZVwiKTt2YXIgYz1uZXcgTXMoYi51aWQsYi5kZXNjcmlwdGlvbixiLnNlbnRpbmVsKTtpZih0aGlzLm0hPWMubCl0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7dGhpcy5ELmluZm8oXCJFeHQgcmVwb3J0ZWQgYW4gZXJyb3IuIERlc2NyaXB0aW9uOiBcIitjLnYpfWNhdGNoKGQpe3RoaXMuRC5lcnJvcihcIkludmFsaWQgUkVQT1JUX0VSUk9SIG1lc3NhZ2UuIFJlYXNvbjogXCIrZC5tZXNzYWdlKX19O18ucC5LYj1mdW5jdGlvbihhKXt0cnl7aWYoMiE9dGhpcy5zdGF0dXMpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgaXMgbm90IHJlZ2lzdGVyZWRcIik7aWYoMCE9dGhpcy5IKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGlzIG5vdCBjb2xsYXBzZWRcIik7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcIm51bWJlclwiIT09dHlwZW9mIGIuZXhwYW5kX3R8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5leHBhbmRfcnx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmV4cGFuZF9ifHxcIm51bWJlclwiIT09dHlwZW9mIGIuZXhwYW5kX2x8fFwiYm9vbGVhblwiIT09dHlwZW9mIGIucHVzaCl0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7dmFyIGM9bmV3IE5zKGIudWlkLG5ldyBfLkRoKGIuZXhwYW5kX3QsYi5leHBhbmRfcixiLmV4cGFuZF9iLGIuZXhwYW5kX2wpLGIucHVzaCxiLnNlbnRpbmVsKTtpZih0aGlzLm0hPWMubCl0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7aWYoISgwPD1jLnYudG9wJiYwPD1jLnYubGVmdCYmMDw9Yy52LmJvdHRvbSYmMDw9Yy52LnJpZ2h0KSl0aHJvdyBFcnJvcihcIkludmFsaWQgZXhwYW5zaW9uIGFtb3VudHNcIik7dmFyIGQ7aWYoZD1jLnB1c2gmJnRoaXMuVi54Ynx8IWMucHVzaCYmdGhpcy5WLndiKXt2YXIgZT1jLnYsZj1jLnB1c2gsZz10aGlzLm89enModGhpcy5qKTtpZihlLnRvcDw9Zy5qLnRvcCYmZS5yaWdodDw9Zy5qLnJpZ2h0JiZlLmJvdHRvbTw9Zy5qLmJvdHRvbSYmZS5sZWZ0PD1nLmoubGVmdCl7aWYoIWYpZm9yKHZhciBoPXRoaXMuai5wYXJlbnROb2RlO2gmJmguc3R5bGU7aD1oLnBhcmVudE5vZGUpUnIodGhpcy52LGgsXCJvdmVyZmxvd1hcIixcInZpc2libGVcIixcImltcG9ydGFudFwiKSxScih0aGlzLnYsaCxcIm92ZXJmbG93WVwiLFwidmlzaWJsZVwiLFwiaW1wb3J0YW50XCIpO3ZhciBrPXRoaXMuby5sLGw9dGhpcy5vLmwsbT1HaChuZXcgRmgoMCwwLGsucmlnaHQtay5sZWZ0LGwuYm90dG9tLWwudG9wKSk7Xy5NYyhlKT8obS50b3AtPWUudG9wLG0ucmlnaHQrPWUucmlnaHQsbS5ib3R0b20rPWUuYm90dG9tLG0ubGVmdC09ZS5sZWZ0KToobS50b3AtPWUsbS5yaWdodCs9TnVtYmVyKHZvaWQgMCksbS5ib3R0b20rPU51bWJlcih2b2lkIDApLG0ubGVmdC09TnVtYmVyKHZvaWQgMCkpO1JyKHRoaXMudix0aGlzLkEsXCJwb3NpdGlvblwiLFwicmVsYXRpdmVcIik7UnIodGhpcy52LHRoaXMuaixcInBvc2l0aW9uXCIsXCJhYnNvbHV0ZVwiKTtmPyhTcih0aGlzLnYsdGhpcy5BLFwid2lkdGhcIixtLnJpZ2h0LW0ubGVmdCksU3IodGhpcy52LHRoaXMuQSxcImhlaWdodFwiLG0uYm90dG9tLW0udG9wKSk6UnIodGhpcy52LHRoaXMuaixcInpJbmRleFwiLFwiMTAwMDBcIik7U3IodGhpcy52LHRoaXMuaixcIndpZHRoXCIsbS5yaWdodC1tLmxlZnQpO1NyKHRoaXMudix0aGlzLmosXCJoZWlnaHRcIixtLmJvdHRvbS1tLnRvcCk7U3IodGhpcy52LHRoaXMuaixcImxlZnRcIixtLmxlZnQpO1NyKHRoaXMudix0aGlzLmosXCJ0b3BcIixtLnRvcCk7dGhpcy5IPTI7dGhpcy5vPXpzKHRoaXMuaik7ZD0hMH1lbHNlIGQ9ITF9YT1kO3lyKHRoaXMubCxcImV4cGFuZF9yZXNwb25zZVwiLChuZXcgUXModGhpcy5tLGEsdGhpcy5vLGMudixjLnB1c2gpKS5qKCkpO2lmKCFhKXRocm93IEVycm9yKFwiVmlld3BvcnQgb3IgZG9jdW1lbnQgYm9keSBub3QgbGFyZ2UgZW5vdWdoIHRvIGV4cGFuZCBpbnRvLlwiKTt9Y2F0Y2gobil7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBFWFBBTkRfUkVRVUVTVCBtZXNzYWdlLiBSZWFzb246IFwiK24ubWVzc2FnZSl9fTtfLnAuSWI9ZnVuY3Rpb24oYSl7dHJ5e2lmKDIhPXRoaXMuc3RhdHVzKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGlzIG5vdCByZWdpc3RlcmVkXCIpO2lmKDIhPXRoaXMuSCl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBpcyBub3QgZXhwYW5kZWRcIik7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpKXRocm93IEVycm9yKFwiQ2Fubm90IHBhcnNlIEpTT04gbWVzc2FnZVwiKTtpZih0aGlzLm0hPShuZXcgT3MoYi51aWQsYi5zZW50aW5lbCkpLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO1RyKHRoaXMudik7dGhpcy5IPTA7dGhpcy5qJiYodGhpcy5vPXpzKHRoaXMuaikpO3lyKHRoaXMubCxcImNvbGxhcHNlX3Jlc3BvbnNlXCIsKG5ldyBQcyh0aGlzLm0sdGhpcy5vKSkuaigpKX1jYXRjaChjKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIENPTExBUFNFX1JFUVVFU1QgbWVzc2FnZS4gUmVhc29uOiBcIitjLm1lc3NhZ2UpfX07dmFyIFhzPWZ1bmN0aW9uKGEpe2lmKDE9PWEuc3RhdHVzfHwyPT1hLnN0YXR1cylzd2l0Y2goYS5DKXtjYXNlIDA6WnMoYSk7YS5LPXdpbmRvdy5zZXRUaW1lb3V0KCgwLF8uUmMpKGEuWSxhKSwxRTMpO2EuQz0xO2JyZWFrO2Nhc2UgMTphLkM9MjticmVhaztjYXNlIDI6YS5DPTJ9fTtZcy5wcm90b3R5cGUuTz1mdW5jdGlvbihhKXt0cnl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcIm51bWJlclwiIT09dHlwZW9mIGIud2lkdGh8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5oZWlnaHR8fGIuc2VudGluZWwmJlwic3RyaW5nXCIhPT10eXBlb2YgYi5zZW50aW5lbCl0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7dmFyIGM9bmV3IFJzKGIudWlkLGIud2lkdGgsYi5oZWlnaHQsYi5zZW50aW5lbCk7aWYodGhpcy5tIT1jLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO3ZhciBkPVN0cmluZyhjLmhlaWdodCk7dGhpcy5HP2QhPXRoaXMuai5oZWlnaHQmJih0aGlzLmouaGVpZ2h0PWQsWHModGhpcykpOnRoaXMuRC5lcnJvcihcIkdvdCBDcmVhdGl2ZUdlb21ldHJ5VXBkYXRlIG1lc3NhZ2UgaW4gbm9uLWZsdWlkY29udGFpbmVyLiBUaGUgY29udGFpbmVyIGlzIG5vdCByZXNpemVkLlwiKX1jYXRjaChlKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIENSRUFUSVZFX0dFT01FVFJZX1VQREFURSBtZXNzYWdlLiBSZWFzb246IFwiK2UubWVzc2FnZSl9fTtZcy5wcm90b3R5cGUuWT1mdW5jdGlvbigpe2lmKDE9PXRoaXMuc3RhdHVzfHwyPT10aGlzLnN0YXR1cylzd2l0Y2godGhpcy5DKXtjYXNlIDE6dGhpcy5DPTA7YnJlYWs7Y2FzZSAyOlpzKHRoaXMpLHRoaXMuSz13aW5kb3cuc2V0VGltZW91dCgoMCxfLlJjKSh0aGlzLlksdGhpcyksMUUzKSx0aGlzLkM9MX19O3ZhciBacz1mdW5jdGlvbihhKXthLm89enMoYS5qLGEuUCk7YS5QPW51bGw7eXIoYS5sLFwiZ2VvbWV0cnlfdXBkYXRlXCIsKG5ldyBQcyhhLm0sYS5vKSkuaigpKX0sVXM9ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDthLkZjJiYoYj1hLkZjKTtyZXR1cm4gbnVsbD09Yj9udWxsOmIuam9pbihcIiBcIil9LCRzPVtcImFsbG93LW1vZGFsc1wiLFwiYWxsb3ctb3JpZW50YXRpb24tbG9ja1wiLFwiYWxsb3ctcHJlc2VudGF0aW9uXCJdLGF0PVtcImFsbG93LXRvcC1uYXZpZ2F0aW9uXCJdLGJ0PVtcImFsbG93LXNhbWUtb3JpZ2luXCJdLGN0PU5nKF8uRmIoJHMpLmNvbmNhdChfLkZiKGF0KSkpLGR0PU5nKF8uRmIoJHMpLmNvbmNhdChfLkZiKGJ0KSkpLGV0PU5nKF8uRmIoJHMpLmNvbmNhdChfLkZiKGF0KSxfLkZiKGJ0KSkpLGZ0PU5nKF8uRmIoJHMpLmNvbmNhdChfLkZiKGF0KSxbXCJhbGxvdy1wb2ludGVyLWxvY2tcIl0pKTt2YXIgYWI9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlPW5ldyBmcShiLGMpO2Uub2I9ZDtlLkw9YTtMYShuZXcgZXEoZSkpfWNhdGNoKGYpe319O3ZhciBndD1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhndCxNKTtndC5wcm90b3R5cGUuZ2V0VGltZT1mdW5jdGlvbigpe3JldHVybiBCKHRoaXMsNCl9O3ZhciBodD1mdW5jdGlvbigpe307dmFyIGl0PVsuMDUsLjEsLjIsLjVdLGp0PVswLC41LDFdLGt0PWZ1bmN0aW9uKGEpe2E9dGcoYSk7aWYoIWEpcmV0dXJuLTE7dHJ5e3ZhciBiPXZpKGEuZG9jdW1lbnQpO3ZhciBjPW5ldyBfLlRmKGIuY2xpZW50V2lkdGgsYi5jbGllbnRIZWlnaHQpfWNhdGNoKGQpe2M9bmV3IF8uVGYoLTEyMjQ1OTMzLC0xMjI0NTkzMyl9cmV0dXJuLTEyMjQ1OTMzPT1jLndpZHRofHwtMTIyNDU5MzM9PWMuaGVpZ2h0Py0xOmMud2lkdGgqYy5oZWlnaHR9LGx0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA+YT9bXTpfLlJhKGl0LGZ1bmN0aW9uKGMpe3JldHVybiBNYXRoLm1pbihhL2IqYywxKX0pfSxvdD1mdW5jdGlvbihhKXt0aGlzLmo9YS5MO3RoaXMubD1hLmtiO3RoaXMuRD1hLlZhO3RoaXMubz1udWxsO3RoaXMubT1hLnJhO3RoaXMudj1tdCh0aGlzKTt0aGlzLlU9YS54ZHx8ITE7dGhpcy5DPWEuemV8fCExO3RoaXMuQT1udWxsO3RoaXMuQyYmbnQodGhpcyl9O290LnByb3RvdHlwZS5nZXRTbG90SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTt2YXIgcXQ9ZnVuY3Rpb24oYSxiKXtpZihhLnYpe2lmKG51bGwhPWEubyl7dHJ5e3B0KGEsTWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSksMCwwLDAsITEpfWNhdGNoKGMpe2EubSYmYS5tKGMpfWEudiYmYS52LnVub2JzZXJ2ZShhLmwpO2EuQT1udWxsfWEubz1iO2Eudi5vYnNlcnZlKGEubCk7YS5DJiYocGVyZm9ybWFuY2Uubm93KCksYS5sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHhuKGEuai5kb2N1bWVudCl8fHRnKGEuaiksYS5BPW5ldyBodCl9fSxtdD1mdW5jdGlvbihhKXt2YXIgYj1hLmwub2Zmc2V0V2lkdGgqYS5sLm9mZnNldEhlaWdodCxjPWt0KGEuaik7Yj1fLkZiKGp0KS5jb25jYXQoXy5GYihsdChjLGIpKSk7VWEoYik7cmV0dXJuIF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcj9uZXcgXy5yLkludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGQpe3JldHVybiBydChhLGQpfSx7dGhyZXNob2xkOmJ9KTpuZXcgTWIoZnVuY3Rpb24oZCl7cmV0dXJuIHJ0KGEsZCl9LHt0aHJlc2hvbGQ6Yn0pfSxydD1mdW5jdGlvbihhLGIpe3RyeXt2YXIgYz1rdChhLmopO18uVmMoYixmdW5jdGlvbihkKXt2YXIgZT1NYXRoLnJvdW5kKGQudGltZSksZj1kLmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCpkLmJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQsZz1kLmludGVyc2VjdGlvblJlY3Qud2lkdGgqZC5pbnRlcnNlY3Rpb25SZWN0LmhlaWdodDtkPWQuaXNJbnRlcnNlY3Rpbmc7YS5VJiZwdChhLGUsZixnLGMsZCl9KX1jYXRjaChkKXthLm0mJmEubShkKX19LHB0PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihudWxsPT1hLm8pdGhyb3cgRXJyb3IoXCJOb3QgQXR0YWNoZWQuXCIpO3ZhciBnPW5ldyBndDtjPUQoZywxLGMpO2Q9RChjLDIsZCk7ZT1EKGQsMyxlKTtiPUQoZSw0LGIpO2I9RChiLDUsZik7Zj1uZXcgV2U7ZT1CKGIsNCk7bnVsbCE9ZSYmYWYoZiw0LGUpO2U9QihiLDIpO251bGwhPWUmJmFmKGYsMixlKTtlPUIoYiwxKTtudWxsIT1lJiZhZihmLDEsZSk7ZT1CKGIsMyk7bnVsbCE9ZSYmYWYoZiwzLGUpO2U9QihiLDUpO251bGwhPWUmJihiPWUsbnVsbCE9YiYmKHBlKGYuaiw0MCksZi5qLmoucHVzaChiPzE6MCkpKTtmPVplKGYpO2Y9VWUoZiw0KTtXaShhLkQsXCIxXCIsMTAsZix2b2lkIDAsYS5vKX0sbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9d24oYS5qLmRvY3VtZW50KTtiJiZfLnYoYS5qLmRvY3VtZW50LGIsZnVuY3Rpb24oKXthLkEmJnBlcmZvcm1hbmNlLm5vdygpfSl9O3ZhciBzdD1mdW5jdGlvbihhKXtyZXR1cm4gYS5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiA2PT09Yi5zdGF0ZX0pfSx0dD1mdW5jdGlvbihhLGIpe3ZhciBjPV8uQShhLFwiZmluZFwiKS5jYWxsKGEsZnVuY3Rpb24oZCl7cmV0dXJuIDY9PT1kLnN0YXRlfSk7aWYoIWMpcmV0dXJuIG51bGw7YT1hLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC5pc3N1ZXJPcmlnaW59KTtjPXt0eXBlOlwic2VuZC1zcnJcIixpc3N1ZXI6Yy5pc3N1ZXJPcmlnaW4saXNzdWVyczphLHJlZnJlc2hQb2xpY3k6XCJub25lXCIsc2lnblJlcXVlc3REYXRhOlwiaW5jbHVkZVwiLGluY2x1ZGVUaW1lc3RhbXBIZWFkZXI6ITAsYWRkaXRpb25hbFNpZ25lZEhlYWRlcnM6W1wic2VjLXRpbWVcIixcIlNlYy1TaWduZWQtUmVkZW1wdGlvbi1SZWNvcmRcIl19O2ImJjA8Xy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYikubGVuZ3RoJiYoYy5hZGRpdGlvbmFsU2lnbmluZ0RhdGE9VmUoSlNPTi5zdHJpbmdpZnkoYiksMykpO3JldHVybiBjfSx1dD1mdW5jdGlvbihhKXt2YXIgYj1fLkRqKDI1MCksYz1fLkRqKDI1Mik7aWYoYS5zZXRUcnVzdFRva2VuJiZzdChiKSl0cnl7dmFyIGQ9dHQoYixjKTtkJiZhLnNldFRydXN0VG9rZW4oZCl9Y2F0Y2goZSl7fX07dmFyIHZ0PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5JbnRlcnNlY3Rpb25PYnNlcnZlcj9uZXcgYS5JbnRlcnNlY3Rpb25PYnNlcnZlcihjLGIpOm5ldyBNYihjLGIpfSx3dD1mdW5jdGlvbihhLGIsYyl7Xy52KGEsYixjKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gXy5xYihhLGIsYyl9fSx4dD1udWxsLHl0PWZ1bmN0aW9uKCl7eHQ9Xy5OaSgpfSx6dD1mdW5jdGlvbihhLGIpe3JldHVybiBiP251bGw9PT14dD8oXy52KGEsXCJtb3VzZW1vdmVcIix5dCx7cGFzc2l2ZTohMH0pLF8udihhLFwic2Nyb2xsXCIseXQse3Bhc3NpdmU6ITB9KSx5dCgpLCExKTpfLk5pKCkteHQ+PTFFMypiOiExfSxBdD1mdW5jdGlvbihhKXt2YXIgYj1hLkwsYz1hLmVsZW1lbnQsZD1hLkRkLGU9YS5BZCxmPXZvaWQgMD09PWEuSGM/MDphLkhjLGc9YS5IYixoPWEuVGMsaz12b2lkIDA9PT1hLnhjPyEwOmEueGMsbD1udWxsLG09ITEsbj0hMSxxPVtdLHc9KHZvaWQgMD09PWEuemI/dnQ6YS56YikoYix2b2lkIDA9PT1hLm9wdGlvbnM/e306YS5vcHRpb25zLGZ1bmN0aW9uKHUsQyl7dHJ5e3ZhciBRPWZ1bmN0aW9uKCl7cS5sZW5ndGh8fChlJiYocS5wdXNoKHd0KGMsXCJtb3VzZWVudGVyXCIsZnVuY3Rpb24oKXttPSEwO1EoKX0pKSxxLnB1c2god3QoYyxcIm1vdXNlbGVhdmVcIixmdW5jdGlvbigpe209ITE7USgpfSkpKSxxLnB1c2god3QoYi5kb2N1bWVudCxcInZpc2liaWxpdHljaGFuZ2VcIixmdW5jdGlvbigpe3JldHVybiBRKCl9KSkpO3ZhciBOPXp0KGIsZiksSD14bihiLmRvY3VtZW50KTtpZihuJiYhbSYmIU4mJiFIKWw9bHx8Yi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7enQoYixmKT9RKCk6KGcoKSxDLmRpc2Nvbm5lY3QoKSl9LDFFMypkKTtlbHNlIGlmKGt8fG18fE58fEgpYi5jbGVhclRpbWVvdXQobCksbD1udWxsfTtuPXVbdS5sZW5ndGgtMV0uaXNJbnRlcnNlY3Rpbmc7USgpfWNhdGNoKE4pe2gmJmgoTil9fSk7dy5vYnNlcnZlKGMpO3JldHVybiBmdW5jdGlvbigpe3cuZGlzY29ubmVjdCgpO2Zvcih2YXIgdT1fLkYocSksQz11Lm5leHQoKTshQy5kb25lO0M9dS5uZXh0KCkpQz1DLnZhbHVlLEMoKTtudWxsIT1sJiZiLmNsZWFyVGltZW91dChsKX19O3ZhciBCdD1mdW5jdGlvbigpe3ZhciBhPUIoVG4uQigpLmosMjYpO3RoaXMuaj1udWxsO3RoaXMubD0wO3RoaXMudj1hfSxDdD1mdW5jdGlvbihhKXtpZighYS5qKXt2YXIgYj1fLkRqKDcpO0pxPUhxKCk7TXE9YjtMcT0wO2lmKCFaZCgpfHwwPD1QZChkZSgpLDExKSliPU9xKCk7ZWxzZXtiPW9pKCk7dmFyIGM9Yi5fX2dvb2dsZV9hZF91cmxzO2I9Yz9jOmIuX19nb29nbGVfYWRfdXJscz1uZXcgQnF9YS5qPWI7YS5sPWEuai5zZXR1cE9zZShhLnYpfXJldHVybiBhLmp9O0J0LnByb3RvdHlwZS5nZXRPc2VJZD1mdW5jdGlvbigpe3RoaXMubHx8KHRoaXMubD1BcSgwLF8uRGooNykpKTtyZXR1cm4gdGhpcy5sfTt2YXIgRHQ9MCxFdD1mdW5jdGlvbigpe3ZhciBhPW5ldyBQZjt0aGlzLndhPWEuai5nZXRVVENGdWxsWWVhcigpK2llKGEuai5nZXRVVENNb250aCgpKzEpK2llKGEuai5nZXRVVENEYXRlKCkpO3RoaXMuaj1bXTt0aGlzLnY9TmFOO3RoaXMuST1cImpzb25faHRtbFwiO3RoaXMuRz1cImZpZlwiO3RoaXMuRWE9MTt0aGlzLlU9W107dGhpcy5KYT10aGlzLldhPXRoaXMuWGE9TmFOO3RoaXMubz0wO3RoaXMuSz10aGlzLkg9dGhpcy5EPVwiXCI7dGhpcy5tPVtdO3RoaXMubD0wO3RoaXMuQz1uZXcgdC5NYXA7dGhpcy5BPW5ldyB0Lk1hcH0sRnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldFNsb3RJZCgpO2I9YS5DLmdldChjKTtifHwoYj13aW5kb3c9PXdpbmRvdy50b3A/KCsrRHQpLnRvU3RyaW5nKDM2KTpqZSgpLGEuQy5zZXQoYyxiKSxfLlIoYyxmdW5jdGlvbigpe2EuQy5kZWxldGUoYyl9KSk7cmV0dXJuIGJ9LEd0PWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRTbG90SWQoKTthLkEuc2V0KGMsYi5sKTtfLlIoYyxmdW5jdGlvbigpe2EuQS5kZWxldGUoYyl9KX0sSHQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5BLmdldChiLmdldFNsb3RJZCgpKXx8Yi5sfTt2YXIgSXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0hMSxnPWZ1bmN0aW9uKCl7IWYmJihfLnkoNDEyKT9mcChlLGIpOmIuRCkmJihjKCksZj0hMCl9OyhkPWQmJmEuY29udGVudFdpbmRvdz9fLnJhKDUpOjApJiYyIT1kfHxfLnYoYSxcImxvYWRcIixnKTtkJiZhLmNvbnRlbnRXaW5kb3cmJl8udihhLmNvbnRlbnRXaW5kb3csXCJhbXAtaW5pLWxvYWRcIixnKX07dmFyIEp0PW51bGwsS3Q9ITEsTHQ9ITEsTXQ9ITEsTnQ9ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP18ucjphO2lmKCFMdCl7dmFyIGI9bmV3IFdrKFwiZ3B0X3B1YmNvbnNvbGVfbG9hZGVkXCIpO2xiKGIpO0UoYixcInBhcmFtXCIsU3RyaW5nKGZiKGEpKSk7RShiLFwiYXBpXCIsU3RyaW5nKE10KSk7WWsoYiwxKTtiPVwiaHR0cHM6XCIrXy5EaigyMjgpK1wibG9hZGVyLmpzXCI7dWcoYS5kb2N1bWVudCxsZyhiKSk7THQ9ITB9fSxPdD1HKDk0LGZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9fLnI6YTtYYigpLl9wdWJjb25zb2xlX2Rpc2FibGVffHxudWxsIT09ZmIoYSkmJk50KGEpfSksUHQ9ZnVuY3Rpb24oYSxiKXshWGIoKS5fcHViY29uc29sZV9kaXNhYmxlXyYmKGE9UWEoXCJnb29nbGVfcHViY29uc29sZVwiLGEsYikpJiYoYT1hLnNwbGl0KFwifFwiKSwwPGEubGVuZ3RoJiYoXCIxXCI9PWFbMF18fFwiMFwiPT1hWzBdKSYmTnQoKSl9O1wiY29tcGxldGVcIj09PV8uci5kb2N1bWVudC5yZWFkeVN0YXRlP090KCk6dmooXy5yLGZ1bmN0aW9uKCl7T3QoKX0pO1diKFwiZGlzYWJsZVB1Ymxpc2hlckNvbnNvbGVcIixTKDkzLGZ1bmN0aW9uKCl7WGIoKS5fcHViY29uc29sZV9kaXNhYmxlXz0hMH0pKTtXYihcIm9uUHViQ29uc29sZUpzTG9hZFwiLFMoNzMxLGZ1bmN0aW9uKCl7S3QmJihYYigpLmNvbnNvbGUub3BlbkNvbnNvbGUoSnQpLEp0PW51bGwsS3Q9ITEpfSkpO1diKFwib3BlbkNvbnNvbGVcIixTKDczMixmdW5jdGlvbihhKXthPXZvaWQgMD09PWE/XCJcIjphO010PSEwO1hiJiZYYigpLmNvbnNvbGU/WGIoKS5jb25zb2xlLm9wZW5Db25zb2xlKGEpOihhJiYoSnQ9YSksS3Q9ITAsTnQoKSl9KSk7dmFyIFF0PWZ1bmN0aW9uKCl7dmFyIGE9amwuQigpO3RoaXMuZ2V0QWxsRXZlbnRzPVMoNTYzLGZ1bmN0aW9uKCl7cmV0dXJuIEx0P3poKGEuaikuc2xpY2UoKTpbXX0pO3RoaXMuZ2V0RXZlbnRzQnlTbG90PVMoNTY1LGZ1bmN0aW9uKGIpe3JldHVybiBMdD9rbChhLGIpLnNsaWNlKCk6W119KTt0aGlzLmdldEV2ZW50c0J5TGV2ZWw9Uyg1NjYsZnVuY3Rpb24oYil7cmV0dXJuIEx0P2xsKGEsYikuc2xpY2UoKTpbXX0pfTtfLkooUXQseWopO3ZhciBSdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9amwuQigpLGQ9VG4uQigpLmosZT1XbihUbi5CKCksYS5qLmdldFNsb3RFbGVtZW50SWQoKSk7dGhpcy5zZXQ9Uyg4MyxmdW5jdGlvbihmLGcpe2Euc2V0KGYsZyk7cmV0dXJuIGJ9KTt0aGlzLmdldD1TKDg0LGZ1bmN0aW9uKGYpe3JldHVybiBhLmdldChmKX0pO3RoaXMuc2V0Q2xpY2tVcmw9Uyg3OSxmdW5jdGlvbihmKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGYpcmV0dXJuIGMuSihxbChcIlNsb3Quc2V0Q2xpY2tVcmxcIixbZl0pLG51bGwsYS5qKSxiO0QoZSw3LGYpO3JldHVybiBifSk7dGhpcy5zZXRUYXJnZXRpbmc9Uyg4MSxmdW5jdGlvbihmLGcpe1JuKGEuaixlLGYsZyxjKTtyZXR1cm4gYn0pO3RoaXMudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcD1TKDg1LGZ1bmN0aW9uKGYpe1NuKGEuaixlLGYsYyk7cmV0dXJuIGJ9KTt0aGlzLmRpc3BsYXk9Uyg3OCxmdW5jdGlvbigpe18ueSg0MjMpJiZEKGUsMTksITApO3ZhciBmPUtrKGQsVm4oKSk7YS5kaXNwbGF5KGYpfSk7dGhpcy5zZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50PVMoODAsZnVuY3Rpb24oZil7aWYoMD09PWZ8fDE9PT1mKXt2YXIgZz1VaihkKXx8bmV3IE9qO0QoZyw1LGYpO3ZmKGQsMjUsZyl9cmV0dXJuIGJ9KTt0aGlzLnNldEZvcmNlU2FmZUZyYW1lPVMoNTY3LGZ1bmN0aW9uKGYpe2lmKFwiYm9vbGVhblwiIT09dHlwZW9mIGYpcmV0dXJuIGMuSihmbShcIlBhc3NiYWNrU2xvdC5zZXRGb3JjZVNhZmVGcmFtZVwiLFN0cmluZyhmKSksbnVsbCxhLmopLGI7RChlLDEyLGYpO3JldHVybiBifSk7dGhpcy5zZXRUYWdGb3JVbmRlckFnZU9mQ29uc2VudD1TKDQ0OCxmdW5jdGlvbihmKXtpZigwPT09Znx8MT09PWYpe3ZhciBnPVVqKGQpfHxuZXcgT2o7RChnLDYsZik7dmYoZCwyNSxnKX1yZXR1cm4gYn0pfTtfLkooUnQseWopO3ZhciBTdD1mdW5jdGlvbihhLGIpe3JldHVybiBhLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gemooYyxiKX0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hIWN9KX0sVHQ9ZnVuY3Rpb24oYSl7dmFyIGI9cXAuQigpLGM9W107YT1fLkYoYSk7Zm9yKHZhciBkPWEubmV4dCgpOyFkLmRvbmU7ZD1hLm5leHQoKSl7ZD1kLnZhbHVlO2IubD1kO3ZhciBlPW5qKDkpOzE9PT1lLmxlbmd0aCYmKGMucHVzaChkKSxjLnB1c2goZCtcIi1cIitlWzBdKSl9cmV0dXJuIGN9LFV0PWpkKGZ1bmN0aW9uKCl7cmV0dXJuIGRoKFwiZ29vZ2xlX0Rpc2FibGVJbml0aWFsTG9hZCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSB1c2UgZ29vZ2xldGFnLnB1YmFkcygpLmlzSW5pdGlhbExvYWREaXNhYmxlZCgpIGluc3RlYWQgdG8gY2hlY2sgaWYgaW5pdGlhbCBsb2FkIGhhcyBiZWVuIGRpc2FibGVkLlwiKX0pLFZ0PWZ1bmN0aW9uKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdyxcImdvb2dsZV9EaXNhYmxlSW5pdGlhbExvYWRcIix7Z2V0OmZ1bmN0aW9uKCl7VXQoKTtyZXR1cm4hMH0sc2V0OmZ1bmN0aW9uKCl7VXQoKX0sY29uZmlndXJhYmxlOiEwfSl9LGN1PWZ1bmN0aW9uKGEsYil7anAuY2FsbCh0aGlzLGEpO3ZhciBjPXRoaXMsZD1qbC5CKCksZT1Ubi5CKCkuaixmPVZuKCksZz0hMTt0aGlzLnNldFRhcmdldGluZz1TKDEsZnVuY3Rpb24oaCxrKXt2YXIgbD1udWxsO1wic3RyaW5nXCI9PT10eXBlb2Ygaz9sPVtrXTpBcnJheS5pc0FycmF5KGspP2w9azpLYyhrKSYmKGw9Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGspKTt2YXIgbT1cInN0cmluZ1wiPT09dHlwZW9mIGgmJiFGZChoKTtsPV8ueSgxODApP2w6bCYmaGQobCk7dmFyIG49ISFsJiZsLmV2ZXJ5KGZ1bmN0aW9uKHEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgcX0pO2lmKCFtfHwhbilyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5zZXRUYXJnZXRpbmdcIixbaCxrXSksYSksYztrPSh6PXVmKGUsSmosMiksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24ocSl7cmV0dXJuIEtqKHEpPT09aH0pO2lmKFwiZ3B0LWJldGFcIj09PWgpe2lmKGEuailyZXR1cm4gZC5KKEJtKGwuam9pbigpKSksYztpZihrKXJldHVybiBkLkooQ20obC5qb2luKCkpKSxjO2w9VHQobCl9az9NaihrLGwpOihrPU1qKExqKG5ldyBKaixoKSxsKSx4ZihlLDIsayxKaikpO2QuaW5mbyhvbShoLGwuam9pbigpLGEuWigpKSxhKTtyZXR1cm4gY30pO3RoaXMuY2xlYXJUYXJnZXRpbmc9UygyLGZ1bmN0aW9uKGgpe2lmKHZvaWQgMD09PWgpcmV0dXJuIFRqKGUsW10pLGQuaW5mbyh6bShhLlooKSksYSksYztpZihcImdwdC1iZXRhXCI9PT1oKXJldHVybiBkLkooRG0oaCkpLGM7dmFyIGs9dWYoZSxKaiwyKSxsPV8uQShrLFwiZmluZEluZGV4XCIpLmNhbGwoayxmdW5jdGlvbihtKXtyZXR1cm4gS2oobSk9PT1ofSk7aWYoMD5sKXJldHVybiBkLkoobG0oaCxhLlooKSksYSksYztrLnNwbGljZShsLDEpO1RqKGUsayk7ZC5pbmZvKGttKGgsYS5aKCkpLGEpO3JldHVybiBjfSk7dGhpcy5nZXRUYXJnZXRpbmc9UygzOCxmdW5jdGlvbihoKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGgpcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2UuZ2V0VGFyZ2V0aW5nXCIsW2hdKSxhKSxbXTt2YXIgaz0oej11ZihlLEpqLDIpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGwpe3JldHVybiBLaihsKT09PWh9KTtyZXR1cm4gaz9CKGssMikuc2xpY2UoKTpbXX0pO3RoaXMuZ2V0VGFyZ2V0aW5nS2V5cz1TKDM5LGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGUsSmosMikubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBLaihoKX0pfSk7dGhpcy5zZXRDYXRlZ29yeUV4Y2x1c2lvbj1TKDMsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBofHxGZChoKSlyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5zZXRDYXRlZ29yeUV4Y2x1c2lvblwiLFtoXSksYSksYzsoej1CKGUsMyksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGgpfHxzZihlLDMsaCk7ZC5pbmZvKG1tKGgpLGEpO3JldHVybiBjfSk7dGhpcy5jbGVhckNhdGVnb3J5RXhjbHVzaW9ucz1TKDQsZnVuY3Rpb24oKXtEKGUsMyxbXSk7ZC5pbmZvKG5tKCksYSk7cmV0dXJuIGN9KTt0aGlzLmRpc2FibGVJbml0aWFsTG9hZD1TKDUsZnVuY3Rpb24oKXshYS5qfHxfLnkoNDEwKT8oRChlLDQsITApLGd8fChnPSEwLFZ0KCkpKTpkLkooWWwoXCJkaXNhYmxlSW5pdGlhbExvYWRcIixcInB1YmFkc1wiKSxhKX0pO3RoaXMuZW5hYmxlU2luZ2xlUmVxdWVzdD1TKDYsZnVuY3Rpb24oKXtpZihhLmomJiF4KGUsNikpcmV0dXJuIGQuSihYbChcImVuYWJsZVNpbmdsZVJlcXVlc3RcIiksYSksITE7ZC5pbmZvKCRsKFwic2luZ2xlIHJlcXVlc3RcIiksYSk7RChlLDYsITApO3JldHVybiEwfSk7dGhpcy5lbmFibGVBc3luY1JlbmRlcmluZz1TKDcsZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3RoaXMuZW5hYmxlU3luY1JlbmRlcmluZz1TKDgsZnVuY3Rpb24oKXtkaChcIkdQVCBzeW5jaHJvbm91cyByZW5kZXJpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgYWRzIHdpbGwgYmUgcmVxdWVzdGVkIGFuZCByZW5kZXJlZCBhc3luY2hyb25vdXNseS4gU2VlIGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL2FkbWFuYWdlci9hbnN3ZXIvOTIxMjU5NCBmb3IgbW9yZSBkZXRhaWxzLlwiKTtyZXR1cm4hMX0pO3RoaXMuZW5hYmxlTGF6eUxvYWQ9Uyg0ODUsZnVuY3Rpb24oaCl7dmFyIGs9bmV3IE5qO0QoaywxLDgwMCk7RChrLDIsNDAwKTtEKGssMywzKTtpZihfLk1jKGgpKXt2YXIgbD1oLmZldGNoTWFyZ2luUGVyY2VudDtcIm51bWJlclwiPT09dHlwZW9mIGwmJigwPD1sP0QoaywxLGwpOi0xPT1sJiZEKGssMSx2b2lkIDApKTtsPWgucmVuZGVyTWFyZ2luUGVyY2VudDtcIm51bWJlclwiPT09dHlwZW9mIGwmJigwPD1sP0QoaywyLGwpOi0xPT1sJiZEKGssMix2b2lkIDApKTtoPWgubW9iaWxlU2NhbGluZztcIm51bWJlclwiPT09dHlwZW9mIGgmJigwPGg/RChrLDMsaCk6LTE9PWgmJkQoaywzLDEpKX12ZihlLDUsayl9KTt0aGlzLnNldENlbnRlcmluZz1TKDksZnVuY3Rpb24oaCl7aD0hIWg7ZC5pbmZvKGFtKFwiY2VudGVyaW5nXCIsU3RyaW5nKGgpKSxhKTtEKGUsMTUsaCl9KTt0aGlzLmRlZmluZVBhc3NiYWNrPVMoMTAsZnVuY3Rpb24oaCxrKXtyZXR1cm4oaD1XdChhLGgsaykuc2xvdCkmJmdsKGgpfSk7dGhpcy5yZWZyZXNoPVMoMTEsZnVuY3Rpb24oaCxrKXtrPXZvaWQgMD09PWs/e306aztoJiYhQXJyYXkuaXNBcnJheShoKXx8IV8uTWMoayl8fGsuY2hhbmdlQ29ycmVsYXRvciYmXCJib29sZWFuXCIhPT10eXBlb2Ygay5jaGFuZ2VDb3JyZWxhdG9yP2QuSihxbChcIlB1YkFkc1NlcnZpY2UucmVmcmVzaFwiLFtoLGtdLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gdm9pZCAwIT09bH0pKSxhKTooayYmMD09ay5jaGFuZ2VDb3JyZWxhdG9yfHxEKGUsMjYsTmsoKSksaD1oP1N0KGgsYik6YS5sLFh0KGEsS2soZSxmKSxoKSl9KTt0aGlzLmVuYWJsZVZpZGVvQWRzPVMoMTIsZnVuY3Rpb24oKXtEKGUsMjEsITApO1l0KGEsZSl9KTt0aGlzLnNldFZpZGVvQ29udGVudD1TKDEzLGZ1bmN0aW9uKGgsayl7RChlLDIxLCEwKTtEKGUsMjIsU3RyaW5nKGh8fFwiXCIpKTtEKGUsMjMsU3RyaW5nKGt8fFwiXCIpKTtZdChhLGUpfSk7dGhpcy5jb2xsYXBzZUVtcHR5RGl2cz1TKDE0LGZ1bmN0aW9uKGgpe2g9dm9pZCAwPT09aD8hMTpoO3goZSwxMSk/ZC5KKGltKCksYSk6YS5qP2QuSihYbChcImNvbGxhcHNlRW1wdHlEaXZzXCIpLGEpOihoJiZEKGUsMTAsITApLGtiKFwiZ3B0X2NlZFwiLGZ1bmN0aW9uKGspe0UoayxcInNjXCIsaD9cInRcIjpcImZcIik7RShrLFwibGV2ZWxcIixcInBhZ2VcIik7bGIoayl9KSxkLmluZm8oaG0oU3RyaW5nKCEhaCkpLGEpLEQoZSwxMSwhMCkpO3JldHVybiEheChlLDExKX0pO3RoaXMuY2xlYXI9UygxNSxmdW5jdGlvbihoKXtyZXR1cm4gQXJyYXkuaXNBcnJheShoKT8oaD1TdChoLGIpLFp0KGEsZSxmLGgpKTpadChhLGUsZixoKX0pO3RoaXMuc2V0TG9jYXRpb249UygxNixmdW5jdGlvbihoKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGgpcmV0dXJuIGQuSihnbShcIkFkZHJlc3NcIikpLGM7RChlLDgsaCk7cmV0dXJuIGN9KTt0aGlzLnNldENvb2tpZU9wdGlvbnM9UygxNyxmdW5jdGlvbihoKXtpZigwIT09aCYmMSE9PWgpcmV0dXJuIGQuSihXbChTdHJpbmcoaCkpLGEpLGM7RChlLDI0LGgpO3JldHVybiBjfSk7dGhpcy5zZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50PVMoMTgsZnVuY3Rpb24oaCl7aWYoMSE9PWgmJjAhPT1oKXJldHVybiBkLkoocG0oU3RyaW5nKGgpKSxhKSxjO3ZhciBrPVVqKGUpfHxuZXcgT2o7RChrLDUsaCk7dmYoZSwyNSxrKTtyZXR1cm4gY30pO3RoaXMuY2xlYXJUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50PVMoMTksZnVuY3Rpb24oKXt2YXIgaD1VaihlKTtpZighaClyZXR1cm4gYztEKGgsNSx2b2lkIDApO3ZmKGUsMjUsaCk7cmV0dXJuIGN9KTt0aGlzLnNldFB1Ymxpc2hlclByb3ZpZGVkSWQ9UygyMCxmdW5jdGlvbihoKXtoPVN0cmluZyhoKTthLmo/ZC5KKFpsKFwic2V0UHVibGlzaGVyUHJvdmlkZWRJZFwiLGgpLGEpOihkLmluZm8oYW0oXCJQUElEXCIsaCksYSksRChlLDE2LGgpKTtyZXR1cm4gY30pO3RoaXMuc2V0PVMoMjEsZnVuY3Rpb24oaCxrKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGh8fCFoLmxlbmd0aHx8dm9pZCAwPT09UW4oKVtoXXx8XCJzdHJpbmdcIiE9PXR5cGVvZiBrKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldFwiLFtoLGtdKSxhKSxjO3ZhciBsPSh6PXVmKGUsSmosMTQpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKG0pe3JldHVybiBLaihtKT09PWh9KTtsP01qKGwsW2tdKToobD1MaihuZXcgSmosaCksc2YobCwyLGspLHhmKGUsMTQsbCxKaikpO2QuaW5mbyhLbChoLFN0cmluZyhrKSxhLlooKSksYSk7cmV0dXJuIGN9KTt0aGlzLmdldD1TKDIyLGZ1bmN0aW9uKGgpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaClyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5nZXRcIixbaF0pLGEpLG51bGw7dmFyIGs9KHo9dWYoZSxKaiwxNCksXy5BKHosXCJmaW5kXCIpKS5jYWxsKHosZnVuY3Rpb24obCl7cmV0dXJuIEtqKGwpPT09aH0pO3JldHVybihrPWsmJkIoaywyKSk/a1swXTpudWxsfSk7dGhpcy5nZXRBdHRyaWJ1dGVLZXlzPVMoMjMsZnVuY3Rpb24oKXtyZXR1cm4gdWYoZSxKaiwxNCkubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBLaihoKX0pfSk7dGhpcy5kaXNwbGF5PVMoMjQsZnVuY3Rpb24oaCxrLGwsbSl7cmV0dXJuIHZvaWQgYS5kaXNwbGF5KGgsayx2b2lkIDA9PT1sP1wiXCI6bCx2b2lkIDA9PT1tP1wiXCI6bSl9KTt0aGlzLnVwZGF0ZUNvcnJlbGF0b3I9UygyNSxmdW5jdGlvbigpe2RoKHVqKFwidXBkYXRlXCIpKTtkLkooSm0oKSxhKTtEKGUsMjYsTmsoKSk7cmV0dXJuIGN9KTt0aGlzLmRlZmluZU91dE9mUGFnZVBhc3NiYWNrPVMoMzUsZnVuY3Rpb24oaCl7dmFyIGs9V3QoYSxoLFsxLDFdKTtoPWsuc2xvdDsoaz1rLkZhKSYmRChrLDE1LDEpO3JldHVybiBoJiZnbChoKX0pO3RoaXMuc2V0Rm9yY2VTYWZlRnJhbWU9UygzNixmdW5jdGlvbihoKXtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBoKXJldHVybiBkLkooZm0oU3RyaW5nKGgpKSxhKSxjO0QoZSwxMyxoKTtyZXR1cm4gY30pO3RoaXMuc2V0U2FmZUZyYW1lQ29uZmlnPVMoMzcsZnVuY3Rpb24oaCl7dmFyIGs9YW8oaCk7aWYoIWspcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0U2FmZUZyYW1lQ29uZmlnXCIsW2hdKSxhKSxjO3ZmKGUsMTgsayk7cmV0dXJuIGN9KTt0aGlzLnNldFJlcXVlc3ROb25QZXJzb25hbGl6ZWRBZHM9Uyg0NDUsZnVuY3Rpb24oaCl7aWYoMCE9PWgmJjEhPT1oKWEubG9nLkooRW0oU3RyaW5nKGgpKSxhKTtlbHNlIGlmKF8ueSgzNzMpKXt2YXIgaz1Ubi5CKCkuajtpZighVWooaykpe3ZhciBsPW5ldyBPajt2ZihrLDI1LGwpfWs9VWooayk7RChrLDgsISFoKX1lbHNlIGlmKGgpe2lmKChoPWhhKCkpJiZoLmZyYW1lcyYmIWguZnJhbWVzLkdvb2dsZVNldE5QQSl0cnl7az1oLmRvY3VtZW50O2w9bmV3IFVmKGspO3ZhciBtPWsuYm9keXx8ay5oZWFkJiZrLmhlYWQucGFyZW50RWxlbWVudDtpZihtKXt2YXIgbj1qZyhsLFwiSUZSQU1FXCIpO24ubmFtZT1cIkdvb2dsZVNldE5QQVwiO24uaWQ9XCJHb29nbGVTZXROUEFcIjtuLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7bGVmdDotOTk5cHg7dG9wOi05OTlweDt3aWR0aDowcHg7aGVpZ2h0OjBweDtcIik7bS5hcHBlbmRDaGlsZChuKX19Y2F0Y2gocSl7fX1lbHNlKGg9aGEoKS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIkdvb2dsZVNldE5QQVwiKSkmJmgucGFyZW50Tm9kZSYmaC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpO3JldHVybiBjfSk7dGhpcy5zZXRUYWdGb3JVbmRlckFnZU9mQ29uc2VudD1TKDQ0NyxmdW5jdGlvbihoKXtoPXZvaWQgMD09PWg/MjpoO2lmKDIhPT1oJiYwIT09aCYmMSE9PWgpcmV0dXJuIGQuSihGbShTdHJpbmcoaCkpLGEpLGM7dmFyIGs9VWooZSl8fG5ldyBPajtEKGssNixoKTt2ZihlLDI1LGspO3JldHVybiBjfSk7dGhpcy5nZXRDb3JyZWxhdG9yPVMoMjcsZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKEIoZSwyNikpfSk7dGhpcy5nZXRUYWdTZXNzaW9uQ29ycmVsYXRvcj1TKDYzMSxmdW5jdGlvbigpe3JldHVybiAkdCgpLk99KTt0aGlzLmdldFZpZGVvQ29udGVudD1TKDMwLGZ1bmN0aW9uKCl7cmV0dXJuIGF1KGEsZSl9KTt0aGlzLmdldFZlcnNpb249Uyg1NjgsZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRWZXJzaW9uKCl9KTt0aGlzLmZvcmNlRXhwZXJpbWVudD1TKDU2OSxmdW5jdGlvbihoKXtoPXBhcnNlSW50KGgsMTApOzA8aCYmbWooaCl9KTt0aGlzLnNldENvcnJlbGF0b3I9UygyOCxmdW5jdGlvbihoKXtkaCh1aihcInNldFwiKSk7ZC5KKEltKCksYSk7aWYoeWkod2luZG93KSlyZXR1cm4gYztpZigha2goaCkpcmV0dXJuIGQuSih0bShTdHJpbmcoaCkpLGEpLGM7RChlLDI2LGgpO0QoZSwyNywhMCk7cmV0dXJuIGN9KTt0aGlzLm1hcmtBc0FtcD1TKDU3MCxmdW5jdGlvbigpe3JldHVybiB2b2lkIGJ1KGEpfSk7dGhpcy5pc1NSQT1TKDU3MSxmdW5jdGlvbigpe3JldHVybiEheChlLDYpfSk7dGhpcy5zZXRJbWFDb250ZW50PVMoMzI4LGZ1bmN0aW9uKGgsayl7bnVsbCE9QihlLDIyKT8oRChlLDIxLCEwKSxEKGUsMjIsU3RyaW5nKGh8fFwiXCIpKSxEKGUsMjMsU3RyaW5nKGt8fFwiXCIpKSxZdChhLGUpKTooRChlLDIxLCEwKSxZdChhLGUpLFwic3RyaW5nXCI9PT10eXBlb2YgaCYmRChlLDE5LGgpLFwic3RyaW5nXCI9PT10eXBlb2YgayYmRChlLDIwLGspKX0pO3RoaXMuZ2V0SW1hQ29udGVudD1TKDMyOSxmdW5jdGlvbigpe3JldHVybiBudWxsIT1CKGUsMjIpP2F1KGEsZSk6YS5qP3t2aWQ6QihlLDE5KXx8XCJcIixjbXNpZDpCKGUsMjApfHxcIlwifTpudWxsfSk7dGhpcy5pc0luaXRpYWxMb2FkRGlzYWJsZWQ9Uyg1NzIsZnVuY3Rpb24oKXtyZXR1cm4hIXgoZSw0KX0pO3RoaXMuYWRkU3VwcG9ydGluZ1VybD1TKDYzNCxmdW5jdGlvbihoKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGh8fCFoLm1hdGNoKF8ubmcpWzFdKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLmFkZFN1cHBvcnRpbmdVcmxcIixbaF0pLGEpLGM7KHo9QihlLDcpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixoKXx8c2YoZSw3LGgpO3JldHVybiBjfSk7dGhpcy5zZXRQcml2YWN5U2V0dGluZ3M9Uyg2NDgsZnVuY3Rpb24oaCl7aWYoIV8uTWMoaCkpcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0UHJpdmFjeVNldHRpbmdzXCIsW2hdKSxhKSxjO3ZhciBrPVVqKGUpfHxuZXcgT2osbD1oLnJlc3RyaWN0RGF0YVByb2Nlc3NpbmcsbT1oLmNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQsbj1oLnVuZGVyQWdlT2ZDb25zZW50O2g9aC5saW1pdGVkQWRzO1wiYm9vbGVhblwiPT09dHlwZW9mIGw/RChrLDEsbCk6dm9pZCAwIT09bCYmZC5KKGZtKFN0cmluZyhsKSksYSk7Xy55KDM5Nyl8fChcImJvb2xlYW5cIj09PXR5cGVvZiBoP0Qoayw5LGgpOnZvaWQgMCE9PWgmJmQuSihmbShTdHJpbmcoaCkpLGEpKTt2b2lkIDAhPT1uJiYobnVsbD09PW4/RChrLDYsMik6ITE9PT1uP0Qoayw2LDApOiEwPT09bj9EKGssNiwxKTpkLkooRm0oU3RyaW5nKG4pKSxhKSk7dm9pZCAwIT09bSYmKG51bGw9PT1tP0Qoayw1LHZvaWQgMCk6ITE9PT1tP0Qoayw1LDApOiEwPT09bT9EKGssNSwxKTpkLkoocG0oU3RyaW5nKG0pKSxhKSk7dmYoZSwyNSxrKTtyZXR1cm4gY30pfTtfLkooY3UsanApO3ZhciBkdT1mdW5jdGlvbihhLGIpe2E6e2I9YlswXTthPWFbMF07Zm9yKHZhciBjPWRkLGQ9TWF0aC5taW4oYi5sZW5ndGgsYS5sZW5ndGgpLGU9MDtlPGQ7ZSsrKXt2YXIgZj1jKGJbZV0sYVtlXSk7aWYoMCE9Zil7Yj1mO2JyZWFrIGF9fWI9ZGQoYi5sZW5ndGgsYS5sZW5ndGgpfXJldHVybiBifSxldT1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1bXSxjPSExLGQ9amwuQigpO3RoaXMuYWRkU2l6ZT1HKDg4LGZ1bmN0aW9uKGUsZil7dmFyIGc7KGc9IWlrKGUpKXx8KGc9IShoayhmKXx8QXJyYXkuaXNBcnJheShmKSYmZi5ldmVyeShoaykpKTtpZihnKXJldHVybiBjPSEwLGQuSihxbChcIlNpemVNYXBwaW5nQnVpbGRlci5hZGRTaXplXCIsW2UsZl0pKSxhO2IucHVzaChbZSxmXSk7cmV0dXJuIGF9KTt0aGlzLmJ1aWxkPUcoODksZnVuY3Rpb24oKXtpZihjKXJldHVybiBkLkooSWwoKSksbnVsbDtlZChiLGR1KTtyZXR1cm4gYn0pfTt2YXIgZnU9ZnVuY3Rpb24oKXt0aGlzLmVycm9yTWVzc2FnZT10aGlzLmluZm89dGhpcy5lcnJvcj10aGlzLklhPW51bGx9LGd1PWZ1bmN0aW9uKGEsYil7YS5JYT1iO3JldHVybiBhfTtmdS5wcm90b3R5cGUuZ2V0RXJyb3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvcn07dmFyIGh1PWZ1bmN0aW9uKGEsYil7YS5lcnJvck1lc3NhZ2U9YjtyZXR1cm4gYX0saXU9ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPXt9fSxoYj1mdW5jdGlvbigpe2p1fHwoa3U9Xy5yYSgzOCxrdSksbHU9Xy5yYSgzOSxsdSksanU9bmV3IGl1KTtyZXR1cm4ganV9LG11PWZ1bmN0aW9uKGEpe3ZhciBiPUIoYSwzKTtpZighYilyZXR1cm4gMztpZighQihhLDIpKXJldHVybiA0O2E9bmV3IFBmO3ZhciBjPVFmKGIpO2MuYWRkKG5ldyBMZihsdSkpO2lmKGEuZ2V0VGltZSgpPmMuZ2V0VGltZSgpKXJldHVybiAyO2I9UWYoYik7Yi5hZGQobmV3IExmKGt1KSk7cmV0dXJuIGEuZ2V0VGltZSgpPmIuZ2V0VGltZSgpPzE6MH07aXUucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgZnU7aWYodGhpcy5jYWNoZVthXSlyZXR1cm4gZ3UoYix0aGlzLmNhY2hlW2FdKTt2YXIgYz1cIlwiO3RyeXtjPXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIl9HRVNQU0stXCIrYSl9Y2F0Y2goZCl7cmV0dXJuIGIuZXJyb3I9NixodShiLGQubWVzc2FnZSl9aWYoIWMpcmV0dXJuIG5ldyBmdTtiPW51bGw7dHJ5e2I9emYoa3EsYyl9Y2F0Y2goZCl7cmV0dXJuIGE9bmV3IGZ1LGEuZXJyb3I9NSxodShhLGQubWVzc2FnZSl9YiYmKHRoaXMuY2FjaGVbYV09Yik7cmV0dXJuIGd1KG5ldyBmdSxiKX07aXUucHJvdG90eXBlLnNldD1mdW5jdGlvbihhKXtucShhKTt2YXIgYj1CKGEsMSl8fFwiXCIsYz1cIl9HRVNQU0stXCIrYixkPWd1KG5ldyBmdSxhKTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGMsYS5tKCkpfWNhdGNoKGUpe2QuaW5mbz03LGh1KGQsZS5tZXNzYWdlKX10aGlzLmNhY2hlW2JdPWE7cmV0dXJuIGR9O3ZhciBqdT1udWxsLGt1PTI0LGx1PTcyO3ZhciBudT1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTEwMDthJiZhIT1iJiYtLWQ7KV8uWGcoYSxjKSxhPWEucGFyZW50RWxlbWVudH0sb3U9ZnVuY3Rpb24oYSxiLGMsZCxlKXtfLlhnKGEse1wibWFyZ2luLWxlZnRcIjpcIjBweFwiLFwibWFyZ2luLXJpZ2h0XCI6XCIwcHhcIn0pO3ZhciBmPXtcInotaW5kZXhcIjpTdHJpbmcoXy5yYSgzMiw1KSl9O1wiYWJzb2x1dGVcIiE9PWQucG9zaXRpb24mJlwiZml4ZWRcIiE9PWQucG9zaXRpb24mJlwicmVsYXRpdmVcIiE9PWQucG9zaXRpb24mJihmLnBvc2l0aW9uPVwicmVsYXRpdmVcIik7dmFyIGc9XCJydGxcIj09ZC5kaXJlY3Rpb24saD0oKGUmJi0xMjI0NTkzMyE9PWUud2lkdGg/ZS53aWR0aDpiLmlubmVyV2lkdGgpLWMpLzI7ZD1mdW5jdGlvbigpe3ZhciBrPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtyZXR1cm4gZz9oLWs6ay1ofTtiPWQoKTswIT09YiYmKGM9ZnVuY3Rpb24oayl7Zz9mW1wibWFyZ2luLXJpZ2h0XCJdPWsrXCJweFwiOmZbXCJtYXJnaW4tbGVmdFwiXT1rK1wicHhcIn0sYygtYiksXy5YZyhhLGYpLGQ9ZCgpLDAhPT1kJiZiIT09ZCYmKGMoYi8oZC1iKSpiKSxfLlhnKGEsZikpKTtyZXR1cm4hMH0scXU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWIuc2xvdCxoPVNiKGIuY2EpO18uci5zZXRUaW1lb3V0KEcoNDU5LGZ1bmN0aW9uKCl7cmV0dXJuIHB1KGEsZyxjLGQsZSxoLGYpfSksNTAwKX0scHU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7aWYoXy5yLkludGVyc2VjdGlvbk9ic2VydmVyKXt2YXIgaD1udWxsLGs9dW8oYixhKXx8cGEoYixhKSxsPUcoNDU5LGZ1bmN0aW9uKG0pe2lmKG09bSYmbVswXSl7dmFyIG49bS5ib3VuZGluZ0NsaWVudFJlY3QscT13aW5kb3cuaW5uZXJXaWR0aCx3PU1hdGgucm91bmQobi5sZWZ0KSx1PU1hdGgucm91bmQobi5yaWdodCksQz0wPncrMixRPTA8dS0ocSsyKTtpZihtLmludGVyc2VjdGlvblJhdGlvPj0xLSgoMDw9TWF0aC5yb3VuZChuLmxlZnQpPzA6MikrKE1hdGgucm91bmQobi5yaWdodCk8PXdpbmRvdy5pbm5lcldpZHRoPzA6MikpL2R8fEN8fFEpa2IoZyxmdW5jdGlvbihOKXtpZihDfHxRKXt2YXIgSD1uZXcgWHE7SC5zZXQoOCk7cnUoaykmJkguc2V0KDEwKTtIPVlxKEgpfWVsc2UgSD1zdShhLGIpO3ZhciBxYT10dShiLGssZSksb2I9cWEuZGQ7cWE9cWEuZmQ7bGIoTik7RShOLFwicWlkXCIsZW8oYikpO0UoTixcIml1XCIsYi5nZXRBZFVuaXRQYXRoKCkpO0UoTixcImVcIixTdHJpbmcoSCkpO0MmJkUoTixcIm9mbFwiLFN0cmluZyh3KSk7USYmRShOLFwib2ZyXCIsU3RyaW5nKHUtcSkpO0UoTixcInJldFwiLGQrXCJ4XCIrZSk7RShOLFwicmVxXCIsZik7RShOLFwiYm1cIixTdHJpbmcoYykpO0UoTixcImVmaFwiLE51bWJlcihvYikpO0UoTixcInN0a1wiLE51bWJlcihxYSkpO0UoTixcImlmaVwiLHJpKHdpbmRvdykpO18ueSg2MCkmJkUoTixcImlzY1wiLDEpfSx7dmE6Xy5yYSg3KX0pLGgmJmgudW5vYnNlcnZlKGspfX0pO2smJihoPW5ldyBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIobCx7dGhyZXNob2xkOlsxXX0pLGgub2JzZXJ2ZShrKSl9fSxzdT1mdW5jdGlvbihhLGIpe3ZhciBjPXVvKGIsYSl8fHBhKGIsYSksZD1uZXcgWHE7dHJ5e3ZhciBlPWZ1bmN0aW9uKEgscWEpe3JldHVybiBhLmVsZW1lbnRzRnJvbVBvaW50KEgscWEpfSxmPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1mLmxlZnQsaD1mLnRvcCxrPWYud2lkdGgsbD1mLmhlaWdodCxtPXdhKHBhKGIsYSksd2luZG93KTtpZihcImhpZGRlblwiPT1tLnZpc2liaWxpdHl8fFwibm9uZVwiPT1tLmRpc3BsYXkpcmV0dXJuIFlxKGQpO3ZhciBuPXBhcnNlSW50KG1bXCJib3JkZXItdG9wLXdpZHRoXCJdfHwwLDEwKSsxO2I9ZytrO2w9aCtsO3ZhciBxPWUoZytuKzIsaCtuKTt2YXIgdz1lKGItbi0yLGgrbik7dmFyIHU9ZShiLW4tMixsLW4pO3ZhciBDPWUoZytuKzIsbC1uKTt2YXIgUT1lKGIvMixsLW4pfWNhdGNoKEgpe3JldHVybiBkLnNldCgxKSxZcShkKX1pZighKHEmJnEubGVuZ3RoJiZ3JiZ3Lmxlbmd0aCYmdSYmdS5sZW5ndGgmJkMmJkMubGVuZ3RoJiZRJiZRLmxlbmd0aCkpcmV0dXJuIGQuc2V0KDcpLFlxKGQpO2U9ZnVuY3Rpb24oSCxxYSl7Zm9yKHZhciBvYj0hMSx3Yz0wO3djPEgubGVuZ3RoO3djKyspe3ZhciB4Yz1IW3djXTtpZihvYil7dmFyIG9oPXdhKHhjLHdpbmRvdyk7aWYoXCJoaWRkZW5cIiE9b2gudmlzaWJpbGl0eSYmISRnKHhjKSYmIU4oYyx4Yykpe2Quc2V0KHFhKTtcImFic29sdXRlXCI9PW9oLnBvc2l0aW9uJiZkLnNldCgxMSk7YnJlYWt9fWVsc2UgYz09eGMmJihvYj0hMCl9fTthaChjKSYmZC5zZXQoOSk7dmFyIE49ZnVuY3Rpb24oSCxxYSl7cmV0dXJuIFNnKEgscWEpfHxTZyhxYSxIKX07Zz1xWzBdO2M9PWd8fE4oYyxnKXx8JGcoZyl8fGQuc2V0KDIpO2c9d1swXTtjPT1nfHxOKGMsZyl8fCRnKGcpfHxkLnNldCgzKTtnPXVbMF07Yz09Z3x8TihjLGcpfHwkZyhnKXx8ZC5zZXQoNCk7Zz1DWzBdO2M9PWd8fE4oYyxnKXx8JGcoZyl8fGQuc2V0KDUpO2lmKCRnKGMpKXJldHVybiBZcShkKTtlKHEsMTIpO2UodywxMyk7ZSh1LDE0KTtlKEMsMTUpO2UoUSw2KTtyZXR1cm4gWXEoZCl9LHJ1PWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9ITEsZD0hMTtyZXR1cm4gWmcoYSxmdW5jdGlvbihlKXtcIm5vd3JhcFwiPT1lLndoaXRlU3BhY2UmJihkPSEwKTtpZihcInNjcm9sbFwiPT1lLm92ZXJmbG93WHx8XCJhdXRvXCI9PWUub3ZlcmZsb3dYKWM9ITA7XCJmbGV4XCI9PWUuZGlzcGxheSYmKGI9ITApO3JldHVybiBiJiZjJiZkfSl9LHV1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJihhPU8oYSxWaiwxKSk/QihhLDEpfHxiLmlubmVyV2lkdGg6MH0sdnU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYSYmKGE9TyhhLFZqLDEpKT9CKGEsMil8fGIuaW5uZXJIZWlnaHQ6MH0sd3U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJihhPU8oYSxWaiwyKSk/QihhLDEpfHwwOjB9LHh1PWZ1bmN0aW9uKGEpe3JldHVybiBhJiYoYT1PKGEsVmosMikpP0IoYSwyKXx8MDowfSx0dT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9KGE9cGEoYSkpJiZ3YShhLHdpbmRvdyksZT1kP1wiYWJzb2x1dGVcIiE9ZC5wb3NpdGlvbjohMCxmPSExLGc9YSYmYS5wYXJlbnRFbGVtZW50LGg9ITE7WWcoYixmdW5jdGlvbihrKXt2YXIgbD1rLnN0eWxlO2lmKGUpaWYoaHx8KGg9az09ZykpZT1TcShrLF8uciwhMCwtMSwtMSk7ZWxzZXtsPWwmJmwuaGVpZ2h0O3ZhciBtPShsJiZfLkEobCxcImVuZHNXaXRoXCIpLmNhbGwobCxcInB4XCIpJiZwYXJzZUludChsLDEwKXx8MCk+PWM7IWx8fG18fFwic3RyaW5nXCI9PT10eXBlb2YgbCYmXy5BKFBxLFwiaW5jbHVkZXNcIikuY2FsbChQcSxsKXx8KGU9ITEpfWZ8fChrPXdhKGssXy5yKSxcInN0aWNreVwiIT1rLnBvc2l0aW9uJiZcImZpeGVkXCIhPWsucG9zaXRpb24pfHwoZj0hMCk7cmV0dXJuIShmJiYhZSl9LDEwMCk7cmV0dXJue2RkOmUsZmQ6Zn19LHl1PWZ1bmN0aW9uKGEpe3ZhciBiPWEuc2xvdDsoej14YShhLmNhKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosXCJmbHVpZFwiKSYmc2V0VGltZW91dChmdW5jdGlvbigpe2tiKFwiZ3B0X2ZsdWlkX3N6XCIsZnVuY3Rpb24oYyl7dmFyIGQ9dW8oYixkb2N1bWVudCk7ZD1kP25pKGQpOm51bGw7RShjLFwic3pcIixkP2Qud2lkdGgrXCJ4XCIrZC5oZWlnaHQ6XCJudWxsXCIpO0UoYyxcInFxaWRcIixlbyhiKSl9KX0sMjUwKX07dmFyIFk9ZnVuY3Rpb24oKXtLci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihZLEtyKTt2YXIgTXI9ZnVuY3Rpb24oYSxiKXtibChhLmlkKCksYik7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmVycm9yJiZ3aW5kb3cuY29uc29sZS5lcnJvcihiKX0senU9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1udWxsLGc9RyhiLGUpO18udihjLGQsZykmJihmPWZ1bmN0aW9uKCl7cmV0dXJuIF8ucWIoYyxkLGcpfSxfLlIoYSxmKSk7cmV0dXJuIGZ9LEF1PWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD9mdW5jdGlvbigpe3JldHVybiEwfTpkO2I9bmV3IEJoKGIsYyxHKGEuaWQoKSxkKSk7Xy53aChhLGIpO3JldHVybiBifTt2YXIgdGI9ZnVuY3Rpb24oYSl7WS5jYWxsKHRoaXMpO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vih0aGlzLGEpfTtfLkoodGIsWSk7dGIucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5tLnZhbHVlLGI9e30sYz1oYigpLGQ9Xy5GKF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGEpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7ZT1lLnZhbHVlO3ZhciBmPWFbZV0sZz1jLmdldChlKTtpZihnLmdldEVycm9yKCkpaWIoZy5nZXRFcnJvcigpLGUsZy5lcnJvck1lc3NhZ2UpO2Vsc2V7KGc9Zy5JYSl8fChnPW5ldyBrcSxnPUQoZywxLGUpLGc9RChnLDQsMCksZz1EKGcsNSwwKSxnPUQoZyw2LDApLGc9bnEoZykpO2E6e2lmKChCKGcsNCl8fDApPj1fLnJhKDQwKSl7dmFyIGg9QihnLDYpfHwwO3ZhciBrPU1hdGgucG93KDIsaCksbD1CKGcsNSl8fDA7aWYobD49aylEKGcsNSwwKSxEKGcsNCwwKSxEKGcsNixoKzEpO2Vsc2V7RChnLDUsbCsxKTtoPSEwO2JyZWFrIGF9fWg9ITF9aHx8KHo9Xy5yaigxMCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGUpfHwoYltlXT17UGI6ZixJYTpnfSl9fVUodGhpcy5GLGIpfTt0Yi5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjU1fTt2YXIgdWI9ZnVuY3Rpb24oYSl7WS5jYWxsKHRoaXMpO3RoaXMuQT10aGlzLmwoKTt0aGlzLm09dGhpcy5sKCk7dGhpcy5DPVYodGhpcyxhKX07Xy5KKHViLFkpO3ViLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMsYj17fSxjPVtdLGQ9dGhpcy5DLnZhbHVlLGU9Xy5GKF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGQpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7Zj1mLnZhbHVlO3ZhciBnPWRbZl0saD1nLlBiO2c9Zy5JYTt2YXIgaz1tdShnKTtzd2l0Y2goayl7Y2FzZSAwOmMucHVzaCh0LlByb21pc2UucmVzb2x2ZShnKSk7YnJlYWs7Y2FzZSAxOmJbZl09e0lhOmcsUGI6aH07Yy5wdXNoKHQuUHJvbWlzZS5yZXNvbHZlKGcpKTticmVhaztjYXNlIDM6Y2FzZSAyOmNhc2UgNDozPT09ayYmamIoOSxmKSxnLiRiKG51bGwpLGMucHVzaChCdShmLGcsaCkpfX1VKHRoaXMubSxiKTt0LlByb21pc2UuYWxsKGMpLnRoZW4oZnVuY3Rpb24obCl7dmFyIG09e307bC5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBxPUIobiwyKTtxJiYobVtCKG4sMSldPXEpfSk7VShhLkEsbSl9KX07dmFyIEJ1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLnJhKDMzKSxlPShuZXcgUGYpLmdldFRpbWUoKSxmPTM7cmV0dXJuIHQuUHJvbWlzZS5yYWNlKFtwYihkKSxjLnRoZW4oZnVuY3Rpb24oZyl7Zj0yO3JldHVybiB0LlByb21pc2UucmFjZShbcGIoZC0oZS0obmV3IFBmKS5nZXRUaW1lKCkpKSxuYihhLGIsZyxmdW5jdGlvbigpe3JldHVybiBmPW51bGx9KV0pfSldKS50aGVuKGZ1bmN0aW9uKCl7ZiYmamIoZixhKTtyZXR1cm4gYn0pfTt1Yi5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjU4fTt2YXIgc2I9ZnVuY3Rpb24oKXtZLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLkY9dGhpcy5sKCl9O18uSihzYixZKTtzYi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXt9LGI9WGIoKSYmWGIoKS5lbmNyeXB0ZWRTaWduYWxTb3VyY2V8fHt9O18uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGIpLmZvckVhY2goZnVuY3Rpb24oZyl7YVtnXT10LlByb21pc2UucmVzb2x2ZShiW2ddKX0pO2Zvcih2YXIgYz13aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFtkYXRhLWVuY3J5cHRlZC1zaWduYWwtc291cmNlLWlkXVwiKSxkPXt9LGU9MDtlPGMubGVuZ3RoO2Q9e0thOmQuS2F9LGUrKyl7dmFyIGY9Y1tlXTtkLkthPWYuZ2V0QXR0cmlidXRlKFwiZGF0YS1lbmNyeXB0ZWQtc2lnbmFsLXNvdXJjZS1pZFwiKTthW2QuS2FdPWFbZC5LYV18fHJiKGYsZnVuY3Rpb24oZyl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYltnLkthXSlyZXR1cm4gYltnLkthXTtpYigwLGcuS2EpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LlByb21pc2UucmVzb2x2ZShudWxsKX19fShkKSl9VSh0aGlzLkYsYSl9O3NiLnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NTB9O3ZhciB2Yj1mdW5jdGlvbihhKXtZLmNhbGwodGhpcyk7dGhpcy5tPVYodGhpcyxhKX07Xy5KKHZiLFkpO3ZiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5tLnZhbHVlO3JiKHdpbmRvdykudGhlbihmdW5jdGlvbigpe2Zvcih2YXIgYj17fSxjPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxhKSksZD1jLm5leHQoKTshZC5kb25lO2I9e3NiOmIuc2IsR2I6Yi5HYn0sZD1jLm5leHQoKSliLnNiPWQudmFsdWUsZD1hW2Iuc2JdLGIuR2I9ZC5JYSxkLlBiLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYpe25iKGUuc2IsZS5HYixmKX19KGIpKX0pfTt2Yi5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjYyfTt2YXIgQ3U9ZnVuY3Rpb24oYSl7dmFyIGI9XCJwZXJmb3JtYW5jZVwiaW4gd2luZG93JiZcIm5vd1wiaW4gcGVyZm9ybWFuY2U/cGVyZm9ybWFuY2Uubm93LmJpbmQocGVyZm9ybWFuY2UpOlRjO2ZvcihhPWIoKSthO2IoKTxhOyk7YigpfSxEdT1mdW5jdGlvbihhLGIpe2I+PWEubGVuZ3RofHwoQ3UoYVtiXSksd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JldHVybiBEdShhLCsrYil9KSl9LEV1PWZ1bmN0aW9uKGEpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXR1cm4gRHUoYSwwKX0pfSxGdT1mdW5jdGlvbigpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKXt2YXIgYT1fLnJqKDIpO2EubGVuZ3RoJiYoYT1hLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gXy5IZyhiLDApfSksRXUoYSkpfX07dmFyIEd1PWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LGI9bmV3IHlxLGM9bmV3IHpxLGQ9YmIoXy5yKTtxZihiLDEsZCwwKTtkPWtqLkIoKS5qKCkuam9pbigpO3FmKGIsNSxkLFwiXCIpO3FmKGIsMiwxLDApO3ZmKGMsMSxiKTtiPXhxKCk7ZD1fLnkoNzcpO2I9cmYoYiw4LGQpO2Q9Xy55KDc4KTtiPXJmKGIsOSxkKTtiPXJmKGIsMTAsITApO2Q9Xy55KDgwKTtiPXJmKGIsMTMsZCk7ZD1fLnkoODEpO2I9cmYoYiwxNCxkKTtiPXJmKGIsMTYsITApO3ZmKGMsMixiKTthLmdvb2dsZV9ydW1fY29uZmlnPWMuaWE7Yz1fLnkoMTg4KT9cIl9kZWJ1Z1wiOlwiXCI7dWcoYS5kb2N1bWVudCxsZyhcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L3BhZ2VhZC9qcy9ydW1cIitjK1wiLmpzXCIpKX07dmFyIEh1PTAsSXU9ZnVuY3Rpb24oKXt0cnl7Y3IoKTticigpO3ZhciBhPV8uRGooMTUyKTthJiZhLmZvckVhY2goZnVuY3Rpb24oKXtyZXR1cm4gbWooYSl9KTtuaigxMyk7bmooMyl9Y2F0Y2goYil7Y2woNDA4LGIsITApfX0sSnU9RygyOTcsZnVuY3Rpb24oKXt2YXIgYT1fLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIikpO2E9Xy5GKGEpO2Zvcih2YXIgYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpe3ZhciBjPWIudmFsdWU7Yj1jO3ZhciBkPWMuc3JjO2lmKGQmJigtMSE9ZC5pbmRleE9mKFwiL3RhZy9qcy9ncHQuanNcIil8fC0xIT1kLmluZGV4T2YoXCIvdGFnL2pzL2dwdF9tb2JpbGUuanNcIikpJiYhYi5nb29nbGV0YWdfZXhlY3V0ZWQmJmMudGV4dENvbnRlbnQpe2IuZ29vZ2xldGFnX2V4ZWN1dGVkPSEwO2I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTt2YXIgZT1kPXZvaWQgMDtjPWMudGV4dENvbnRlbnQ7Yz1udWxsIT09KGQ9bnVsbD09PShlPW1hKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdChjKSkmJnZvaWQgMCE9PWQ/ZDpjO2M9bmV3IFhoKGMsamEpO25hKGMsWGgpO2IudGV4dENvbnRlbnQ9Yy5qOyhjPWIub3duZXJEb2N1bWVudCYmYi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSYmYyE9PXdpbmRvdz9jPU1hKGMuZG9jdW1lbnQpOih2b2lkIDA9PT1VcSYmKFVxPU1hKGRvY3VtZW50KSksYz1VcSk7YyYmYi5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGMpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYik7ZG9jdW1lbnQuaGVhZC5yZW1vdmVDaGlsZChiKX19fSxmdW5jdGlvbihhLGIpe2JsKGEsYik7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmVycm9yJiZ3aW5kb3cuY29uc29sZS5lcnJvcihiKX0pLEt1PWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LGI9bmV3IGlzKGEpLGM9bmV3IG5zKGEpLGQ9bmV3IFlyKGEpO2tiKFwiY21wTWV0XCIsZnVuY3Rpb24oZSl7bGIoZSk7RShlLFwiZmNcIixiLmo/MTowKTtFKGUsXCJ0Y2Z2MVwiLGEuX19jbXA/MTowKTtFKGUsXCJ0Y2Z2MlwiLHBzKGMpPzE6MCk7RShlLFwidXNwXCIsJHIoZCk/MTowKTtFKGUsXCJwdHRcIiwxNyl9LHt2YTpfLnJhKDYxKX0pfSxMdT1mdW5jdGlvbigpe0h1PV8uTmkoKTtJdSgpO3RyeXtpZihfLnJhKDYxKSYmS3UoKSxGdSgpLFdiKFwiZGVmaW5lT3V0T2ZQYWdlU2xvdFwiLGNxKSxXYihcImRlZmluZVNsb3RcIixhcSksV2IoXCJkZWZpbmVVbml0XCIsYXEpLFdiKFwiZGVzdHJveVNsb3RzXCIsYnEpLFdiKFwiZ2V0V2luZG93c1RoYXRDYW5Db21tdW5pY2F0ZVdpdGhIb3N0cGFnZUxpYnJhcnlcIixWcCksV2IoXCJkaXNwbGF5XCIsZHEpLG1wKCksV2IoXCJnZXRFdmVudExvZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBRdH0pLFdiKFwic2l6ZU1hcHBpbmdcIixHKDkwLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBldX0pKSxXYihcImFwaVJlYWR5XCIsITApLFhiKCkuZmlmV2luJiZcImNvbXBsZXRlXCIhPWRvY3VtZW50LnJlYWR5U3RhdGU/dmood2luZG93LGZ1bmN0aW9uKCl7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtVbSgpfSwwKX0pOlVtKCksSnUoKSwhXy5EaigyMjEpJiZfLnkoMzExKSYmemIoKSwoXy55KDg0KXx8dGsuQigpLmopJiZHdSgpLF8ueSgzNDYpJiZGYygpKXt2YXIgYT1uZXcgV2soXCJncHRfbm9uY2VfY3NwXCIpO2xiKGEpO1lrKGEpfX1jYXRjaChiKXtjbCgxMDYsYil9fTt2YXIgRGI9bmV3IHQuV2Vha01hcCxBYj1mdW5jdGlvbihhLGIpe2E9W2FdO2Zvcih2YXIgYz1iLmxlbmd0aC0xOzA8PWM7LS1jKWEucHVzaCh0eXBlb2YgYltjXSxiW2NdKTtyZXR1cm4gYS5qb2luKFwiXFx4MEJcIil9O3ZhciBNdT1HYihmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5zcmM/L14oPzpodHRwcz86KT9cXC9cXC8oPzp3d3dcXC5nb29nbGV0YWdzZXJ2aWNlc1xcLmNvbXxzZWN1cmVwdWJhZHNcXC5nXFwuZG91YmxlY2xpY2tcXC5uZXQpXFwvdGFnXFwvanNcXC9ncHQoPzpfW2Etel0rKSpcXC5qcy8udGVzdChhLnNyYyk/MDoxOjJ9LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErXCJcXHgwQlwiKyhiJiZiWzBdJiZiWzBdLnNyYyl9KTt2YXIgTnU9bnVsbCxPdT1mdW5jdGlvbihhLGIsYyxkKXt0cnl7dmFyIGU7aWYoIShlPSFiKSl7dmFyIGY7aWYoIShmPSFUcShiLGMsdm9pZCAwPT09ZD8xMDA6ZCkpKXthOntkb3t2YXIgZz13YShiLGMpO2lmKGcmJlwiZml4ZWRcIj09Zy5wb3NpdGlvbil7dmFyIGg9ITE7YnJlYWsgYX19d2hpbGUoYj1iLnBhcmVudEVsZW1lbnQpO2g9ITB9Zj0haH1lPWZ9ZSYmKGEuaGVpZ2h0PS0xKX1jYXRjaChrKXthLndpZHRoPS0xLGEuaGVpZ2h0PS0xfX0sSWI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9Xy5GKHVmKGEsSmosOSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWQ9ZC52YWx1ZSxiW0tqKGQpXT1CKGQsMik7YT1CKGEsOCk7YS5sZW5ndGgmJm51bGw9PWIuZXhjbF9jYXQmJihiLmV4Y2xfY2F0PWEpO3JldHVybiBifSxQdT1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O18uSmIoYSxmdW5jdGlvbihkLGUpe2lmKGJbZV0pe3ZhciBmPWJbZV0uZmlsdGVyKGZ1bmN0aW9uKGcpe3JldHVybiBfLkEoZCxcImluY2x1ZGVzXCIpLmNhbGwoZCxnKX0pO2YubGVuZ3RoJiYoY1tlXT1mKX19KTtyZXR1cm4gY30sUXU9ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYz11ZihhLEpqLDIpLm1hcChmdW5jdGlvbihkKXt2YXIgZT1LaihkKTtiPVwiZXhjbF9jYXRcIj09PWU7ZD1CKGQsMik7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoZC5qb2luKCkpfSk7YT1CKGEsMyk7IWImJmEubGVuZ3RoJiZjLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KFwiZXhjbF9jYXRcIikrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGEuam9pbigpKSk7cmV0dXJuIGN9LFJ1PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2c9dm9pZCAwPT09Zz8hMTpnO3RoaXMudj1iO3RoaXMuRD1jO3RoaXMubT1hO3RoaXMubW9kZWw9ZDt0aGlzLm89ZTt0aGlzLmo9Zjt0aGlzLkM9W107dGhpcy5sPVwiXCI7dGhpcy5JPVFuKCk7dGhpcy5BPVtdO3RoaXMuVT1bXTt0aGlzLkg9cWQoXy5yaig3KSk7dGhpcy5HPSFnfHwhXy55KDI5NCl9LFV1PWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/d2luZG93OmI7dmFyIGM9YS5tb2RlbC5qO2lmKCFBcnJheS5pc0FycmF5KGMpKXJldHVyblwiXCI7aWYoYS5tKTA9PWMubGVuZ3RoJiYoYz1QcChRcC5CKCkpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gYXAoYS52LGUpfSkpO2Vsc2V7aWYoMD09Yy5sZW5ndGgpcmV0dXJuXCJcIjsxPGMubGVuZ3RoJiYoYz1bY1swXV0pfXZhciBkPSEhR24oXy5yKTtjPWMuZmlsdGVyKGZ1bmN0aW9uKGUpe3ZhciBmPWEuai5SW2UuZ2V0U2xvdEVsZW1lbnRJZCgpXTtyZXR1cm4gZCYmND09Z2soZik/KGpsLkIoKS5KKEhtKFN0cmluZyhlLmdldEFkVW5pdFBhdGgoKSkpKSwhMSk6ITB9KTtpZighYy5sZW5ndGgpcmV0dXJuXCJcIjszMDxjLmxlbmd0aCYmKGpsLkIoKS5KKEFtKFwiMzBcIixTdHJpbmcoYy5sZW5ndGgpLFN0cmluZyhjLmxlbmd0aC0zMCkpKSxjPWMuc2xpY2UoMCwzMCkpO1N1KGEsYyxiKTtUdShhKTtyZXR1cm4gYS5sfSxWdT1mdW5jdGlvbihhLGIpe3RyeXt2YXIgYz1iLnRvcDt2YXIgZD13aShjLmRvY3VtZW50LGMpfWNhdGNoKGUpe2Q9bmV3IF8ueWEoLTEyMjQ1OTMzLC0xMjI0NTkzMyl9WihhLFwic2NyX3hcIixNYXRoLnJvdW5kKGQueCkse25hOiEwfSk7WihhLFwic2NyX3lcIixNYXRoLnJvdW5kKGQueSkse25hOiEwfSl9LFd1PWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdyxjPU9hKGEubyxiLmRvY3VtZW50KXx8XCJcIjt2YXIgZD1iLmRvY3VtZW50LmRvbWFpbjt2YXIgZT1iLmhpc3RvcnkubGVuZ3RoLGY9Yi5zY3JlZW4sZz1iLmRvY3VtZW50LnJlZmVycmVyO2lmKEpoKCkpZD1vaSgpLmdhR2xvYmFsfHx7fTtlbHNle3ZhciBoPU1hdGgucm91bmQoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMUUzKSxrPWIuZ29vZ2xlX2FuYWx5dGljc19kb21haW5fbmFtZTtkPVwidW5kZWZpbmVkXCI9PXR5cGVvZiBrP3JxKFwiYXV0b1wiLGQpOnJxKGssZCk7dmFyIGw9LTE8Yy5pbmRleE9mKFwiX191dG1hPVwiK2QrXCIuXCIpLG09LTE8Yy5pbmRleE9mKFwiX191dG1iPVwiK2QpLG47KG49KE9oKCl8fG9pKCkpLmdhR2xvYmFsKXx8KG49e30sKE9oKCl8fG9pKCkpLmdhR2xvYmFsPW4pO3ZhciBxPSExO2lmKGwpZz1jLnNwbGl0KFwiX191dG1hPVwiK2QrXCIuXCIpWzFdLnNwbGl0KFwiO1wiKVswXS5zcGxpdChcIi5cIiksbT9uLnNpZD1nWzNdOm4uc2lkfHwobi5zaWQ9aCtcIlwiKSxuLnZpZD1nWzBdK1wiLlwiK2dbMV0sbi5mcm9tX2Nvb2tpZT0hMDtlbHNle24uc2lkfHwobi5zaWQ9aCtcIlwiKTtpZighbi52aWQpe3E9ITA7bT1NYXRoLnJvdW5kKDIxNDc0ODM2NDcqTWF0aC5yYW5kb20oKSk7bD1bb3EuYXBwTmFtZSxvcS52ZXJzaW9uLG9xLmxhbmd1YWdlP29xLmxhbmd1YWdlOm9xLmJyb3dzZXJMYW5ndWFnZSxvcS5wbGF0Zm9ybSxvcS51c2VyQWdlbnQscHEoKT8xOjBdLmpvaW4oXCJcIik7Zj9sKz1mLndpZHRoK1wieFwiK2YuaGVpZ2h0K2YuY29sb3JEZXB0aDpfLnIuamF2YSYmXy5yLmphdmEuYXd0JiYoZj1fLnIuamF2YS5hd3QuVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFNjcmVlblNpemUoKSxsKz1mLnNjcmVlbi53aWR0aCtcInhcIitmLnNjcmVlbi5oZWlnaHQpO2w9bCtjKyhnfHxcIlwiKTtmb3IoZz1sLmxlbmd0aDswPGU7KWwrPWUtLV5nKys7bi52aWQ9KG1ecXEobCkmMjE0NzQ4MzY0NykrXCIuXCIraH1uLmZyb21fY29va2llPSExfWlmKCFuLmNpZCl7Yjpmb3IoaD05OTksayYmKGs9MD09ay5pbmRleE9mKFwiLlwiKT9rLnN1YnN0cigxKTprLGg9ay5zcGxpdChcIi5cIikubGVuZ3RoKSxrPTk5OSxjPWMuc3BsaXQoXCI7XCIpLGc9MDtnPGMubGVuZ3RoO2crKylpZihmPXNxLmV4ZWMoY1tnXSl8fHRxLmV4ZWMoY1tnXSl8fHVxLmV4ZWMoY1tnXSkpe2U9ZlsxXXx8MDtpZihlPT1oKXt2YXIgdz1mWzJdO2JyZWFrIGJ9ZTxrJiYoaz1lLHc9ZlsyXSl9cSYmdyYmLTEhPXcuc2VhcmNoKC9eXFxkK1xcLlxcZCskLyk/KG4udmlkPXcsbi5mcm9tX2Nvb2tpZT0hMCk6dyE9bi52aWQmJihuLmNpZD13KX1uLmRoPWQ7bi5oaWR8fChuLmhpZD1NYXRoLnJvdW5kKDIxNDc0ODM2NDcqTWF0aC5yYW5kb20oKSkpO2Q9bn1aKGEsXCJnYV92aWRcIixkLnZpZCx7JDohMX0pO1ooYSxcImdhX3NpZFwiLGQuc2lkLHskOiExfSk7WihhLFwiZ2FfaGlkXCIsZC5oaWQseyQ6ITF9KTtaKGEsXCJnYV9mY1wiLGQuZnJvbV9jb29raWUseyQ6ITF9KTtaKGEsXCJnYV9jaWRcIixkLmNpZCx7JDohMX0pO1ooYSxcImdhX3dwaWRzXCIsYi5nb29nbGVfYW5hbHl0aWNzX3VhY2N0KX0sWHU9ZnVuY3Rpb24oYSxiKXtpZihfLnkoMzcwKSl0cnl7dmFyIGM9Yi5leHRlcm5hbCYmYi5leHRlcm5hbC5nZXRIb3N0RW52aXJvbm1lbnRWYWx1ZSYmYi5leHRlcm5hbC5nZXRIb3N0RW52aXJvbm1lbnRWYWx1ZS5iaW5kKGIuZXh0ZXJuYWwpO2lmKGMpe3ZhciBkPXBhcnNlSW50KEpTT04ucGFyc2UoYyhcIm9zLW1vZGVcIikpW1wib3MtbW9kZVwiXSwxMCk7MDw9ZCYmWihhLFwid3NtXCIsZCsxKX19Y2F0Y2goZSl7fX0sU3U9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz93aW5kb3c6Yzt2YXIgZD1jLmRvY3VtZW50LGU9YS5qLk47WihhLFwiZ2RmcF9yZXFcIiwxLHskOiExfSk7WihhLFwicHZzaWRcIixhLm1vZGVsLnYpO1ooYSxcImNvcnJlbGF0b3JcIixCKGUsMjYpKTtaKGEsXCJvdXRwdXRcIixhLm1vZGVsLkkseyQ6ITF9KTtaKGEsXCJpbXBsXCIsYS5tb2RlbC5HLHskOiExfSk7Xy55KDIwMCl8fCgwPT1uZihlLDI0LDApJiYoWihhLFwiYWRzaWRcIixhLm1vZGVsLkQpLFooYSxcInB1Y3JkXCIsYS5tb2RlbC5LKSksWihhLFwiamFyXCIsYS5tb2RlbC5IKSk7WXUoYSk7aXNOYU4oYS5tb2RlbC5XYSl8fFooYSxcInBvZFwiLGEubW9kZWwuV2EseyQ6ITF9KTtpc05hTihhLm1vZGVsLlhhKXx8WihhLFwicHBvc1wiLGEubW9kZWwuWGEseyQ6ITF9KTtpc05hTihhLm1vZGVsLkphKXx8WihhLFwic2NvclwiLGEubW9kZWwuSmEseyQ6ITF9KTtadShhKTtaKGEsXCJ2cmdcIiwkYSgpKTskdShhKTthdihhKTtidihhLGJbMF0ubSk7WihhLFwic2NcIixfLkRqKDYpPzE6MCx7bmE6ITB9KTt3aW5kb3cucG9zdE1lc3NhZ2UmJlooYSxcInNmdlwiLFpuKCkpO1ooYSxcImVjc1wiLGEubW9kZWwud2EpO2N2KGEsYixkKTtkdihhKTtldihhLGIpO2Z2KGEsYik7Z3YoYSxjKTtSayhcImdvb2dsZV9wcmV2aWV3XCIpJiZaKGEsXCJnY3RcIixRayhcImdvb2dsZV9wcmV2aWV3XCIpKTtpZihhLnYudil7WihhLFwiaXNfYW1wXCIsXCIxXCIpO1ooYSxcImFtcF92XCIsS2goKSk7WihhLFwiYWN0XCIsTGgoKSk7UmgmJiEvXmh0dHBzOlxcL1xcL2QtXFxkK1xcLmFtcHByb2plY3RcXC5uZXRcXC9cXGQrXFwvZnJhbWVcXC5odG1sJC8udGVzdChjLmxvY2F0aW9uLmhyZWYpJiZaKGEsXCJhdGlcIiwxKTt2YXIgZj1TaChjKTtmJiZaKGEsXCJhcG5cIixmLnN1YnN0cigwLDEwKSk7dHJ5e3ZhciBnPUpTT04ucGFyc2UoYy5jb250ZXh0LmNhY2hlZEZyYW1lTmFtZV8pO2cuYXR0cmlidXRlcyYmZy5hdHRyaWJ1dGVzLnVzZVNhbWVEb21haW5SZW5kZXJpbmdVbnRpbERlcHJlY2F0ZWQmJlooYSxcImFzZFwiLDEpfWNhdGNoKGspe319KHFnKGMudG9wKXx8UGcod2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyKSkmJlooYSxcImFieGVcIiwxKTtfLkRqKDI1MykmJihmPXFqKDEwKSkmJlooYSxcImV4cGZsYWdzXCIsZik7aHYoYSxiLGMpO2Y9e307Zi51X3R6PS0obmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCk7Zi51X2hpcz1xaSgpO2YudV9qYXZhPSEhRWYubmF2aWdhdG9yJiZcInVua25vd25cIiE9PXR5cGVvZiBFZi5uYXZpZ2F0b3IuamF2YUVuYWJsZWQmJiEhRWYubmF2aWdhdG9yLmphdmFFbmFibGVkJiZFZi5uYXZpZ2F0b3IuamF2YUVuYWJsZWQoKTtFZi5zY3JlZW4mJihmLnVfaD1FZi5zY3JlZW4uaGVpZ2h0LGYudV93PUVmLnNjcmVlbi53aWR0aCxmLnVfYWg9RWYuc2NyZWVuLmF2YWlsSGVpZ2h0LGYudV9hdz1FZi5zY3JlZW4uYXZhaWxXaWR0aCxmLnVfY2Q9RWYuc2NyZWVuLmNvbG9yRGVwdGgpO0VmLm5hdmlnYXRvciYmRWYubmF2aWdhdG9yLnBsdWdpbnMmJihmLnVfbnBsdWc9RWYubmF2aWdhdG9yLnBsdWdpbnMubGVuZ3RoKTtFZi5uYXZpZ2F0b3ImJkVmLm5hdmlnYXRvci5taW1lVHlwZXMmJihmLnVfbm1pbWU9RWYubmF2aWdhdG9yLm1pbWVUeXBlcy5sZW5ndGgpO2l2KGEsZik7anYoYSk7dHJ5e3ZhciBoPXVpKCl9Y2F0Y2goayl7aD1cIjBcIn1aKGEsXCJmbGFzaFwiLGgseyQ6ITEsbmE6ITB9KTtrdihhLGIsYyk7bHYoYSxjKTsoXy55KDg0KXx8dGsuQigpLmopJiZaKGEsXCJydW1jXCIsYS5tb2RlbC52LHskOiExfSk7Xy55KDgzKSYmWihhLFwicnVtZVwiLDEseyQ6ITF9KTtaKGEsXCJ2aXNcIixfLnVuKGQpLHskOiExfSk7MD09PU11KF8uRGooMTcyKSl8fFooYSxcInN0c3NcIixNdShfLkRqKDE3MikpKTshYS52LnYmJm12KGMpJiZaKGEsXCJhcnBcIiwxLHskOiExfSk7Xy5yLm5hdmlnYXRvciYmXy5yLm5hdmlnYXRvci5kZXZpY2VNZW1vcnkmJlooYSxcImRtY1wiLF8uci5uYXZpZ2F0b3IuZGV2aWNlTWVtb3J5KTtWdShhLGMpO252KGEsYixjKTtvdihhLGIsYyk7MDxhLm1vZGVsLm0ubGVuZ3RoJiZaKGEsXCJwc3RzXCIsYS5tb2RlbC5tKTtXdShhKTtYdShhLGMpO18ueSgyMykmJihaKGEsXCJqc1wiLFZxKGMpKSxaKGEsXCJtc1wiLFdxKGEubW9kZWwudi50b1N0cmluZygpLGMpKSk7cHYoYSxjLGIpO3F2KGEsYixjKTtiPUIoZSw3KTtjPV8uRGooMjUxKTtfLnkoMzYzKSYmYyYmWihhLFwidWFjaFwiLFZlKGMsMykpO18ueSgzMTIpJiYoYz1fLkRqKDI1MCkpJiYwPGMubGVuZ3RoJiZaKGEsXCJ0dF9zdGF0ZVwiLFZlKEpTT04uc3RyaW5naWZ5KGMpLDMpKTtfLnkoMTY0KSYmYi5sZW5ndGgmJlooYSxcInN1cHBvcnRpbmdfdXJsc1wiLGIubWFwKGZ1bmN0aW9uKGspe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoayl9KSk7cnYoYSl9LG52PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdO2I9Xy5GKGIpO2Zvcih2YXIgZj1iLm5leHQoKTshZi5kb25lO2Y9Yi5uZXh0KCkpe2Y9Zi52YWx1ZTt2YXIgZz1wYShmKTtnPWJoKGcmJmcucGFyZW50RWxlbWVudCYmd2EoZy5wYXJlbnRFbGVtZW50LGMpfHxudWxsKTtpZighZ3x8MT09Z1swXSYmMT09Z1szXSl7dmFyIGg9KGc9cGEoZikpJiZnLnBhcmVudEVsZW1lbnQsaz1JayhoKXx8bmV3IF8uVGYoMCwwKTtPdShrLGgsYyk7ZC5wdXNoKGsud2lkdGgrXCJ4XCIray5oZWlnaHQpO2Y9SWsocGEoZikpfHxuZXcgXy5UZigwLDApO091KGYsZyxjLDEpOy0xPT1rLmhlaWdodCYmKGYuaGVpZ2h0PS0xKTtlLnB1c2goZi53aWR0aCtcInhcIitmLmhlaWdodCl9ZWxzZSBkLnB1c2goXCItMXgtMVwiKSxlLnB1c2goXCItMXgtMVwiKX1aKGEsXCJwc3pcIixkLHtxYTpcInxcIn0pO1ooYSxcIm1zelwiLGUse3FhOlwifFwifSl9LG92PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmouUjtiPWIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBkW2UuZ2V0U2xvdEVsZW1lbnRJZCgpXX0pO2Iuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9QihlLDE2KX0pJiYoWihhLFwicnRnc1wiLGIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1CKGUsMTYpPzAhPXhhKGUpLmxlbmd0aD9cIjFcIjpcIjJcIjpcIjBcIn0pLHtxYTpcIiFcIn0pLFooYSxcIm1heF93XCIsYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHV1KE8oZSxaaiwxNiksYyl9KSx7cWE6XCIhXCJ9KSxaKGEsXCJtYXhfaFwiLGIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB2dShPKGUsWmosMTYpLGMpfSkse3FhOlwiIVwifSksWihhLFwibWluX3dcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gd3UoTyhlLFpqLDE2KSl9KSx7cWE6XCIhXCJ9KSxaKGEsXCJtaW5faFwiLGIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB4dShPKGUsWmosMTYpKX0pLHtxYTpcIiFcIn0pKX0sc3Y9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdO2lmKG51bGwhPT1hJiZhIT1hLnRvcCl7dmFyIGU9eGkoITEsYSkud2lkdGg7KC0xMjI0NTkzMz09PWJ8fC0xMjI0NTkzMz09PWV8fGU8YikmJmQucHVzaCg4KX0tMTIyNDU5MzMhPWImJihlPTErXy5yYSg0NSksYiplPGEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoP2QucHVzaCgxMCk6YyYmXy55KDQxMykmJihjPTErXy5yYSg0MTQpLGEub3V0ZXJXaWR0aCpjPGImJmQucHVzaCgxMCkpKTtyZXR1cm4gZH0scHY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9W10sZj1bXSxnPV8ueSg0MTEpLGg9MCE9PVJnKCksaz1nP3hpKCEwLGIsaCkud2lkdGg6bnVsbDtnJiYoZD1zdihiLGssaCkpO2MuZm9yRWFjaChmdW5jdGlvbihsKXt2YXIgbT1uZXcgWHEsbj1wYShsKTtsPTA7aWYobil7Z3x8KGs9eGkoITAsYixoKS53aWR0aCxkPXN2KGIsayxoKSk7Zm9yKHZhciBxPTA7biYmMTAwPnE7cSsrLG49bi5wYXJlbnRFbGVtZW50KXt2YXIgdz13YShuLGIpO2lmKHcpe2lmKHcub3ZlcmZsb3dZJiZcInZpc2libGVcIiE9PXcub3ZlcmZsb3dZKXttLnNldCgyKTt2YXIgdT1JayhuKTt1JiYobD1sP01hdGgubWluKGwsdS53aWR0aCk6dS53aWR0aCk7aWYobS5nZXQoOSkpYnJlYWt9XCJzdGlja3lcIiE9PXcucG9zaXRpb24mJlwiZml4ZWRcIiE9PXcucG9zaXRpb258fG0uc2V0KDkpO1wibm9uZVwiPT09dy5kaXNwbGF5JiZtLnNldCg3KTtcIklGUkFNRVwiPT09bi5ub2RlTmFtZSYmKHc9cGFyc2VJbnQody53aWR0aCwxMCksdzxrJiYobS5zZXQoOCksbD1sP01hdGgubWluKHcsbCk6dykpfWVsc2UgbS5zZXQoMyl9fWVsc2UgbS5zZXQoMSk7ZC5mb3JFYWNoKGZ1bmN0aW9uKEMpe3JldHVybiBtLnNldChDKX0pO2UucHVzaChZcShtKSk7Zi5wdXNoKGwpfSk7WihhLFwiZndzXCIsZSk7WihhLFwib2h3XCIsZil9LHV2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdLGY9YS5qLGc9Zi5SLGg9ISF4KGYuTiwxNSk7aWYoYS5tKWIuZm9yRWFjaChmdW5jdGlvbihrKXtrPVBrKHtzbG90OmssY2E6Z1trLmdldFNsb3RFbGVtZW50SWQoKV19LGMsaCl8fHR2O2QucHVzaChNYXRoLnJvdW5kKGsueCkpO2UucHVzaChNYXRoLnJvdW5kKGsueSkpfSk7ZWxzZSBpZihiPShhLnYudj9OaCgpOm51bGwpfHxQayh7c2xvdDpiWzBdLGNhOmdbYlswXS5nZXRTbG90RWxlbWVudElkKCldfSxjLGgpKWQucHVzaChNYXRoLnJvdW5kKGIueCkpLGUucHVzaChNYXRoLnJvdW5kKGIueSkpO1ooYSxcImFkeHNcIixkKTtaKGEsXCJhZHlzXCIsZSl9LHF2PWZ1bmN0aW9uKGEsYixjKXtpZighYS5tKXt2YXIgZD1udWxsLGU9bnVsbDt0cnl7ZD13aShjLnRvcC5kb2N1bWVudCxjLnRvcCkueX1jYXRjaChoKXtyZXR1cm59dmFyIGY9YS5qLGc9Zi5SO2Y9ISF4KGYuTiwxNSk7KGI9UGsoe3Nsb3Q6YlswXSxjYTpnW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXX0sYy5kb2N1bWVudCxmKSkmJihlPU1hdGgucm91bmQoYi55KSk7Yz14aSghMCxjKS5oZWlnaHQ7ZSYmLTEyMjQ1OTMzIT09ZSYmLTEyMjQ1OTMzIT09YyYmKGU8ZCtjP1ooYSxcImJ0dmlcIiwwLHtuYTohMH0pOihkPV8uRGooMjQ4KSsxLENqLkIoKVsyNDhdPWQsWihhLFwiYnR2aVwiLGQpKSl9fSx2dj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5SO3JldHVybiBiLm1hcChhLm0/ZnVuY3Rpb24oZCl7dmFyIGU9Y1tkLmdldFNsb3RFbGVtZW50SWQoKV0sZjtfLnkoMzY0KT9mPWQuJGF8fHJrKGUsTWsoZCxhLmopKTpmPXJrKGUpO3JldHVybiBkLiRhPWZ9OmZ1bmN0aW9uKGQpe3ZhciBlPWEuai5SW2QuZ2V0U2xvdEVsZW1lbnRJZCgpXTtlPWQuJGF8fHJrKGUsTWsoZCxhLmopKTtyZXR1cm4gZC4kYT1lfSkuam9pbihcIixcIil9LGt2PWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/d2luZG93OmM7dmFyIGQ9Yy5kb2N1bWVudDtiPShfLnkoMzY0KT94KGEuai5OLDYpOmEubSk/dWsoYS52LmwpOnZrKGJbMF0sYS5qLlJbYlswXS5nZXRTbG90RWxlbWVudElkKCldLGJwKGEudikpfHx1ayhhLnYubCk7dmFyIGU9UmsoXCJnb29nbGVfcHJldmlld1wiKSxmPWU/QWsoZC5VUkwpOmQuVVJMO2U9ZT9BayhkLnJlZmVycmVyKTpkLnJlZmVycmVyO2Q9ITE7aWYobnVsbCE9Yil7dmFyIGc9Zjt5aShjKXx8KGU9XCJcIixkPSEwKX1lbHNlIGI9ZjthLnYudiYmKGU9KGU9SmgoKSkmJmUucmVmZXJyZXIpO2Y9bmV3IEhpKGMpO3ZhciBoPWYualswXS5kZXB0aCxrPWgmJjA8aDtpZihrJiYoWihhLFwibmhkXCIsaCksYy5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMpKXtjPVtdO2g9TWF0aC5taW4oZi5qLmxlbmd0aCwyNyk7Zm9yKHZhciBsPTE7bDxoO2wrKylmLmpbbF0mJmYualtsXS51cmwmJihjW2wtMV09Zi5qW2xdLnVybCk7Yz1JaShmLGMucmV2ZXJzZSgpKTtaKGEsXCJpYWdcIixjKTtjPWYuajtoPVtdO2ZvcihsPWMubGVuZ3RoLTE7MDxsO2wtLSl7dmFyIG09Y1tsXTttJiZudWxsIT1tLnVybCYmaC5wdXNoKG9nKG0udXJsLm1hdGNoKF8ubmcpWzNdfHxudWxsKSl9Yz1FaShoKTswPGMmJlooYSxcIm1kb1wiLGMpfVooYSxcInVybFwiLGIpO2M9YjtoPV8uRGooMjUyKXx8e307aC51cmw9YztDai5CKClbMjUyXT1oO251bGwhPWcmJmchPWImJlooYSxcImxvY1wiLGcpO1ooYSxcInJlZlwiLGUpO2smJihnPWYualtNYXRoLm1heChmLmoubGVuZ3RoLTEsMCldLnVybCkmJlooYSxcInRvcFwiLGQ/b2coZy5tYXRjaChfLm5nKVszXXx8bnVsbCk6Zyl9LGx2PWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO3ZhciBjPWIuZG9jdW1lbnQsZD1jLnNjcmlwdHM7ZCYmWihhLFwiZHNzelwiLGQubGVuZ3RoKTtiPW5ldyBIaShiKTtaKGEsXCJpY3NnXCIsSmkoYikse25hOiEwfSk7Yj1LaShiKTtaKGEsXCJtc29cIixiKTtiPUVycm9yKCk7aWYoYi5zdGFjayl7ZD1FayhiLnN0YWNrKTtkLT0xMztpZigwPmQpe2Q9MDt2YXIgZT1uZXcgV2soXCJncHRfbmVnYXRpdmVfc3RhY2tfdHJhY2VcIix6aygpLF8uRGooMjMpKTtsYihlLFBwKFFwLkIoKSkuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBhcChhLnYsZil9KSk7RShlLFwic3RhY2tUcmFjZVwiLGIuc3RhY2spO1lrKGUpfVooYSxcInN0ZFwiLGQse25hOiEwfSl9Yy5jdXJyZW50U2NyaXB0JiZjLmN1cnJlbnRTY3JpcHQudGV4dCYmWihhLFwiY3NsXCIsYy5jdXJyZW50U2NyaXB0LnRleHQubGVuZ3RoKX0sd3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouUjthPWIubWFwKGZ1bmN0aW9uKGQpe2Q9Y1tkLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIEliKGQpfSk7Zm9yKGI9YS5zaGlmdCgpfHx7fTthLmxlbmd0aDspYj1QdShiLGEuc2hpZnQoKSk7cmV0dXJuIGJ9LGV2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLlIsZDtfLnkoNDkpJiYxPGIubGVuZ3RoP2Q9eHYoYSxiKTpkPWIubWFwKGZ1bmN0aW9uKGUpe2U9Y1tlLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIEtiKGUpLmpvaW4oXCImXCIpfSk7Yj1kO2Iuam9pbihcInxcIikubGVuZ3RoPT1kLmxlbmd0aC0xJiYoYj1udWxsKTtaKGEsXCJwcmV2X3NjcFwiLGIse3FhOlwifFwifSl9LHh2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLlIsZD1bXSxlPXd2KGEsYik7Yi5mb3JFYWNoKGZ1bmN0aW9uKGcpe2c9Y1tnLmdldFNsb3RFbGVtZW50SWQoKV07Zz1LYihnLGZ1bmN0aW9uKGgsayl7az1lW2tdO3JldHVybiFrfHwhXy5BKGssXCJpbmNsdWRlc1wiKS5jYWxsKGssaCl9KTtkLnB1c2goZy5qb2luKFwiJlwiKSl9KTt2YXIgZj1bXTtfLkpiKGUsZnVuY3Rpb24oZyxoKXtnPWcubWFwKGVuY29kZVVSSUNvbXBvbmVudCk7aD1lbmNvZGVVUklDb21wb25lbnQoaCk7Zi5wdXNoKGgrXCI9XCIrZy5qb2luKCkpfSk7Zi5sZW5ndGgmJlooYSxcImNzcFwiLGYse3FhOlwiJlwifSk7cmV0dXJuIGR9LGl2PWZ1bmN0aW9uKGEsYil7Xy5KYihiLGZ1bmN0aW9uKGMsZCl7WihhLGQsYyx7JDohMX0pfSl9LCR1PWZ1bmN0aW9uKGEpe3ZhciBiPWEuai5OOzAhPW5mKGIsMjQsMCkmJlooYSxcImNvXCIsbmYoYiwyNCwwKSx7bmE6ITB9KX0sYnY9ZnVuY3Rpb24oYSxiKXtpZighXy55KDM2Nykpe3ZhciBjPV8uRGooMjIxKTtiPXNoKGMsYik7Yi5yZCYmWihhLFwibnBhXCIsMSk7WihhLFwiZ3VjaVwiLGIuJGMpfX0sYXY9ZnVuY3Rpb24oYSl7dmFyIGI9VWooYS5qLk4pfHxuZXcgT2o7ITA9PT14KGIsMSkmJlooYSxcInJkcFwiLFwiMVwiKTshMD09PXgoYiw5KSYmWihhLFwibHRkXCIsXCIxXCIpO3ZhciBjPUIoYS5vLDIpO2MmJlooYSxcImdkcHJfY29uc2VudFwiLGMpO251bGwhPUIoYS5vLDMpJiYoYz14KGEubywzKSxaKGEsXCJnZHByXCIsYz9cIjFcIjpcIjBcIix7bmE6ITB9KSk7KGM9QihhLm8sNCkpJiZaKGEsXCJhZGR0bF9jb25zZW50XCIsYyk7KGM9QihhLm8sNykpJiZaKGEsXCJ0Y2ZlXCIsYyk7KGM9QihhLm8sMSkpJiZaKGEsXCJ1c19wcml2YWN5XCIsYyk7KHgoYS5vLDYpfHxfLnkoMzczKSYmeChiLDgpKSYmWihhLFwibnBhXCIsMSk7Yz1uZihiLDYsMik7MiE9PWMmJlooYSxcInRmdWFcIixjLHtuYTohMH0pO251bGwhPUIoYiw1KSYmKGI9QihiLDUpLFooYSxcInRmY2RcIixiLHtuYTohMH0pKX0sZHY9ZnVuY3Rpb24oYSl7dmFyIGI9YS5qLk47MSE9bmYoYiwyNCwwKSYmbnVsbCE9QihiLDE2KSYmWihhLFwicHBpZFwiLEIoYiwxNikse25hOiEwfSl9LGZ2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLGQ9Yy5OLGU9Yy5SW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXTtjPTEhPWEubW9kZWwuRWE7ZT0hIXgoZSwxNyk7Yj13ayhiLGEuai5SLGEudi5sLGJwKGEudikpO2Q9eChkLDI3KXx8ITE7dmFyIGY9Mz09YS5tb2RlbC5FYSxnPW5ldyBYcTtnLnNldCgwLGMpO2cuc2V0KDEsZSk7Zy5zZXQoMixiKTtnLnNldCgzLGQpO2cuc2V0KDQsZik7Yz1ZcShnKTswPGMmJlooYSxcImVyaVwiLGMpfSxndj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5OLGQ9UXUoYyk7WihhLFwiY3VzdF9wYXJhbXNcIixkLHtxYTpcIiZcIn0pO2lmKGEuRCYmMD09bmYoYywyNCwwKSl7ZD1RYShcIl9fZ2Fkc1wiLGEubyxhLkQuai5kb2N1bWVudCk7WihhLFwiY29va2llXCIsZCx7bmE6ITB9KTt2YXIgZT1hLkQ7aWYoMD09PWUubCl7dmFyIGY9YS5vO2lmKFFhKFwiX19nYWRzXCIsZixlLmouZG9jdW1lbnQpKWY9ITA7ZWxzZXt2YXIgZz1lLmouZG9jdW1lbnQ7Zz12b2lkIDA9PT1nP2RvY3VtZW50Omc7eChmLDUpJiYobmV3IFBhKGcpKS5zZXQoXCJHb29nbGVBZFNlcnZpbmdUZXN0XCIsXCJHb29kXCIsdm9pZCAwKTtpZihnPVwiR29vZFwiPT09UWEoXCJHb29nbGVBZFNlcnZpbmdUZXN0XCIsZixlLmouZG9jdW1lbnQpKXt2YXIgaD1lLmouZG9jdW1lbnQ7aD12b2lkIDA9PT1oP2RvY3VtZW50Omg7eChmLDUpJiYoZj1uZXcgUGEoaCksZi5nZXQoXCJHb29nbGVBZFNlcnZpbmdUZXN0XCIpLGYuc2V0KFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiLFwiXCIse3djOjAscGF0aDp2b2lkIDAsZG9tYWluOnZvaWQgMH0pKX1mPWd9ZS5sPWY/MjoxfTI9PT1lLmwmJiFkJiZaKGEsXCJjb29raWVfZW5hYmxlZFwiLFwiMVwiLHtuYTohMH0pfShkPUIoYyw4KSk/KDUwPGQubGVuZ3RoJiYoZD1kLnN1YnN0cmluZygwLDUwKSksZD1cImEgXCIrVmUoJ3JvbGU6MSBwcm9kdWNlcjoxMiBsb2M6XCInKyhkKydcIicpKSk6ZD1cIlwiO2QmJlooYSxcInV1bGVcIixkKTswPT1uZihjLDI0LDApJiYoYz1iLmRvY3VtZW50LChiPSh1ayhhLnYubCl8fGRiKGIpKSE9Yy5VUkw/Yy5kb21haW46XCJcIikmJlooYSxcImNkbVwiLGIpKTtfLnkoNil8fChiPW5ldyBYcSxfLnIuU1ZHRWxlbWVudCYmXy5yLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyYmYi5zZXQoMCksYz1PZygpLGNbXCJhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25cIl0mJmIuc2V0KDEpLGNbXCJhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hcIl0mJmIuc2V0KDIpLF8uci5jcnlwdG8mJl8uci5jcnlwdG8uc3VidGxlJiZiLnNldCgzKSxfLnIuVGV4dERlY29kZXImJl8uci5UZXh0RW5jb2RlciYmYi5zZXQoNCksYj1ZcShiKSxaKGEsXCJiY1wiLGIpKX0saHY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMuZG9jdW1lbnQ7MDxuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJNU0lFIFwiKSYmd28oYS52LmwsXCJhZHNlbnNlX2VuY29kaW5nXCIsZC5jaGFyc2V0LCExKTtpZighdWsoYS52LmwpKXt0cnl7dmFyIGU9TWF0aC5yb3VuZChEYXRlLnBhcnNlKGMuZG9jdW1lbnQubGFzdE1vZGlmaWVkKS8xRTMpfHxudWxsfWNhdGNoKG0pe2U9bnVsbH1aKGEsXCJsbXRcIixlP2UudG9TdHJpbmcoKTpudWxsKX1lPV8ueSg0Myk/Xy5OaSgpOihuZXcgRGF0ZSkuZ2V0VGltZSgpO1ooYSxcImR0XCIsZSx7JDohMX0pO3RyeXtlPUh1O3ZhciBmPU1hdGgubWluKFBpKFwiZG9tTG9hZGluZ1wiKXx8SW5maW5pdHksUGkoXCJkb21JbnRlcmFjdGl2ZVwiKXx8SW5maW5pdHkpO3ZhciBnPUluZmluaXR5PT1mP01hdGgubWF4KFBpKFwicmVzcG9uc2VFbmRcIiksUGkoXCJuYXZpZ2F0aW9uU3RhcnRcIikpOmY7MDxnJiZlPj1nJiYoWihhLFwiZGx0XCIsZyx7JDohMX0pLFooYSxcImlkdFwiLGUtZyx7JDohMX0pKX1jYXRjaChtKXtaKGEsXCJpZHRcIiwtOSx7JDohMX0pLGJsKDQ3OSxtKX1pZihudWxsPT1OdSl7YTp7Zz1jLm5hdmlnYXRvcjtmPWcudXNlckFnZW50O2U9Zy5wbGF0Zm9ybTt2YXIgaD0vV2ViS2l0XFwvKFxcZCspLyxrPS9ydjooXFxkK1xcLlxcZCspLyxsPS9ydjoxXFwuOChbXi5dfFxcLjApLztpZigvV2lufE1hY3xMaW51eHxpUGFkfGlQb2R8aVBob25lLy50ZXN0KGUpJiYhL15PcGVyYS8udGVzdChmKSYmKGg9KGguZXhlYyhmKXx8WzAsMF0pWzFdLGs9KGsuZXhlYyhmKXx8WzAsMF0pWzFdLC9XaW4vLnRlc3QoZSkmJi9UcmlkZW50Ly50ZXN0KGYpJiYxMTw9ZC5kb2N1bWVudE1vZGV8fCFoJiZcIkdlY2tvXCI9PT1nLnByb2R1Y3QmJjI3PD1rJiYhbC50ZXN0KGYpfHw1MzY8PWgpKXtnPSEwO2JyZWFrIGF9Zz0hMX1mPXppKGMsYy5kb2N1bWVudCw1MDAsMzAwKTtOdT1nJiYhZn1OdXx8WihhLFwiZWFcIixcIjBcIix7bmE6ITB9KTtmPWc9b2koKTtmb3IoZT0wO2cmJmchPWcucGFyZW50OylnPWcucGFyZW50LGUrKyxxZyhnKSYmKGY9Zyk7ZT1mO2c9ZS5sb2NhdGlvbi5ocmVmO2U9PWUudG9wP2c9e3VybDpnLHZjOiEwfTooZj0hMSwobD1lLmRvY3VtZW50KSYmbC5yZWZlcnJlciYmKGc9bC5yZWZlcnJlcixlLnBhcmVudD09ZS50b3AmJihmPSEwKSksKGU9ZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMpJiYoZT1lW2UubGVuZ3RoLTFdKSYmLTE9PWcuaW5kZXhPZihlKSYmKGY9ITEsZz1lKSxnPXt1cmw6Zyx2YzpmfSk7Zj1nO2c9emkob2koKSxkLGMuZ29vZ2xlX2FkX3dpZHRoLGMuZ29vZ2xlX2FkX2hlaWdodCk7Zj1mLnZjO2U9b2koKTtlPWUudG9wPT1lPzA6cWcoZS50b3ApPzE6MjtsPTQ7Z3x8MSE9ZT9nfHwyIT1lP2cmJjE9PWU/bD03OmcmJjI9PWUmJihsPTgpOmw9NjpsPTU7ZiYmKGx8PTE2KTtnPVwiXCIrbDtBaSgpO1ooYSxcImZybVwiLGd8fG51bGwpO2c9YS52LnY/KGc9TWgoKSkmJl8uTWMoZy5yb290Qm91bmRzKT9uZXcgXy5UZihnLnJvb3RCb3VuZHMud2lkdGgsZy5yb290Qm91bmRzLmhlaWdodCk6bnVsbDp4aSghMCxjLF8ueSgyODApJiYwIT09UmcoKSk7ZyYmKGEuai5vYT1nLFooYSxcImJpd1wiLGcud2lkdGgpLFooYSxcImJpaFwiLGcuaGVpZ2h0KSk7IXlpKGMpJiYoZz14aSghMSxjKSkmJihaKGEsXCJpc3dcIixnLndpZHRoKSxaKGEsXCJpc2hcIixnLmhlaWdodCkpO2EubW9kZWwubyYmWihhLFwib2lkXCIsYS5tb2RlbC5vKTt1dihhLGIsZCk7WihhLFwiYWRrc1wiLHZ2KGEsYikpO2Q9MDt2b2lkIDA9PT1fLnIucG9zdE1lc3NhZ2UmJihkfD0xKTswPGQmJlooYSxcIm9zZFwiLGQpO3l2KGEpO2Q9eG8oYixhLnYubCxicChhLnYpLGEuSSk7WihhLFwiYWRzZW5zZVBhcmFtZXRlcnNcIixkLHskOiExfSk7ZD1yaShjKTthLkc/KFooYSxcImlmaVwiLGQrMSksZD1jLGI9Yi5sZW5ndGgsYj12b2lkIDA9PT1iPzE6YixkPU9oKEpoKGQpKXx8ZCxkLmdvb2dsZV91bmlxdWVfaWQ9KGQuZ29vZ2xlX3VuaXF1ZV9pZHx8MCkrYik6WihhLFwiaWZpXCIsZCk7bnVsbCE9PWMmJmMhPWMudG9wPyhiPVtjLmRvY3VtZW50LlVSTF0sYy5uYW1lJiZiLnB1c2goYy5uYW1lKSxjPXhpKCExLGMsITEpLGIucHVzaChjLndpZHRoLnRvU3RyaW5nKCkpLGIucHVzaChjLmhlaWdodC50b1N0cmluZygpKSxjPUNnKGIuam9pbihcIlwiKSkpOmM9MDswIT1jJiZaKGEsXCJpZmtcIixjLnRvU3RyaW5nKCkpfSxqdj1mdW5jdGlvbihhKXt2YXIgYj1fLnIuZGV2aWNlUGl4ZWxSYXRpbzsoYj1cIm51bWJlclwiPT09dHlwZW9mIGI/K2IudG9GaXhlZCgzKTpudWxsKSYmWihhLFwidV9zZFwiLGIseyQ6ITF9KX0sWnU9ZnVuY3Rpb24oYSl7WihhLFwiZWlkXCIsYS5tb2RlbC5VKTt2YXIgYj1NaSgpLnNwbGl0KFwiLFwiKTtiJiZaKGEsXCJkZWJ1Z19leHBlcmltZW50X2lkXCIsYil9LGN2PWZ1bmN0aW9uKGEsYixjKXtiLmZvckVhY2goZnVuY3Rpb24obCl7enYoYSxsLmdldEFkVW5pdFBhdGgoKSl9KTt2YXIgZD1hLmosZT1kLk4sZj1kLlI7ZD1iLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gZltsLmdldFNsb3RFbGVtZW50SWQoKV19KTtaKGEsXCJpdV9wYXJ0c1wiLGEuQSk7WihhLFwiZW5jX3ByZXZfaXVzXCIsYS5VKTtaKGEsXCJwcmV2X2l1X3N6c1wiLGQubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBTYihsKX0pLmpvaW4oKSk7aWYoZC5zb21lKGZ1bmN0aW9uKGwpe3JldHVybih6PXhhKGwpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixcImZsdWlkXCIpfSkpe3ZhciBnPWQubWFwKGZ1bmN0aW9uKGwpe3JldHVybih6PXhhKGwpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixcImZsdWlkXCIpP1wiaGVpZ2h0XCI6XCIwXCJ9KTtaKGEsXCJmbHVpZFwiLGcpfVooYSxcImZzZnNcIixIYihiLGZ1bmN0aW9uKGwpe2w9KGw9ZltsLmdldFNsb3RFbGVtZW50SWQoKV0pJiZ4KGwsMTIpO3ZhciBtPSEheChlLDEzKTtyZXR1cm4obnVsbD09bD9tOmwpPzE6MH0pKTtaKGEsXCJmc2JzXCIsSGIoYixmdW5jdGlvbihsKXt2YXIgbT1hLmosbj1tLk47bD1tLlJbbC5nZXRTbG90RWxlbWVudElkKCldO249TyhuLFBqLDE4KTtyZXR1cm4oKGw9bCYmTyhsLFBqLDEzKSkmJm51bGwhPUIobCwzKT94KGwsMyk6biYmeChuLDMpKT8xOjB9KSk7QXYoYSxiKTtCdihhLGZbYlswXS5nZXRTbG90RWxlbWVudElkKCldKTsoZz1DdihkKSkmJlooYSxcImlzdHNcIixnKTtaKGEsXCJmYXNcIixIYihkLGZ1bmN0aW9uKGwpe3JldHVybiBscChnayhsKSl9KSk7KGc9RHYoZCxmdW5jdGlvbihsKXtyZXR1cm4gND09Z2sobCl9KSkmJlooYSxcInJidnNcIixnKTtfLnkoOTgpJiYoYj1EdihiLGZ1bmN0aW9uKGwpe3ZhciBtPWZbbC5nZXRTbG90RWxlbWVudElkKCldLG47aWYobj0hbHAoZ2sobSkpKXtuPW51bGw7QXJyYXkuaXNBcnJheSh4YShtKVswXSkmJihuPV8uRih4YShtKVswXSksbT1uLm5leHQoKS52YWx1ZSxuPW4ubmV4dCgpLnZhbHVlLG49e3dpZHRoOm0saGVpZ2h0Om59KTthOnt2YXIgcT10YShsLGMpO2w9e0djOm4sbGM6ITF9O3ZhciB3PXZvaWQgMD09PWw/e306bDtsPXZvaWQgMD09PXcuR2M/bnVsbDp3LkdjO209dm9pZCAwPT09dy5qZD8xMDA6dy5qZDtuPXZvaWQgMD09PXcuQ2Q/NTA6dy5DZDt3PXZvaWQgMD09PXcubGM/ITA6dy5sYztmb3IodmFyIHU9VGMoKSxDPSExO3E7KXtpZighbS0tfHxUYygpLXU+PW4pe249ITE7YnJlYWsgYX1zd2l0Y2gocS5ub2RlVHlwZSl7Y2FzZSA5OnRyeXt2YXIgUT1xLnBhcmVudFdpbmRvd3x8cS5kZWZhdWx0VmlldztpZihRKXt2YXIgTj1RLmZyYW1lRWxlbWVudDtpZihOJiZxZyhRLnBhcmVudCkpe3E9TjticmVha319fWNhdGNoKHhjKXt9cT1udWxsO2JyZWFrO2Nhc2UgMTp2YXIgSD1xLHFhO2lmKHFhPXcpe2I6e3RyeXtpZigwPEgub2Zmc2V0V2lkdGgmJjA8SC5vZmZzZXRIZWlnaHQmJkguc3R5bGUmJlwibm9uZVwiIT09SC5zdHlsZS5kaXNwbGF5JiZcImhpZGRlblwiIT09SC5zdHlsZS52aXNpYmlsaXR5JiYoIUguc3R5bGUub3BhY2l0eXx8MCE9PU51bWJlcihILnN0eWxlLm9wYWNpdHkpKSl7dmFyIG9iPUguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIHdjPTA8b2IucmlnaHQmJjA8b2IuYm90dG9tO2JyZWFrIGJ9fWNhdGNoKHhjKXt9d2M9ITF9cWE9IXdjfWlmKHFhKXtuPSExO2JyZWFrIGF9Q3x8KC9eaHRtbHxib2R5JC9pLnRlc3QoSC50YWdOYW1lKT9DPW51bGw6KEM9SC5zdHlsZS5wb3NpdGlvbnx8KHdhKEgsd2luZG93KXx8e30pLnBvc2l0aW9uLEM9L15maXhlZC9pLnRlc3QoQyk/SDpudWxsKSxDPSEhQyYmKCFsfHxDLm9mZnNldFdpZHRoKkMub2Zmc2V0SGVpZ2h0PD00Kmwud2lkdGgqbC5oZWlnaHQpKTtxPXEucGFyZW50Tm9kZX19bj1DfX1yZXR1cm4gbn0pKSYmWihhLFwicGZ4c1wiLGIpO3ZhciBoPXt9O2QuZm9yRWFjaChmdW5jdGlvbihsKXsobD1sLmdldENsaWNrVXJsKCkpJiYoaFtsXT0oaFtsXXx8MCkrMSl9KTtpZigheWcoaCkpe2I9bmV3IFdrKFwiZ3B0X3NyYV9zZXRjbGlja3VybFwiKTt2YXIgaz1bXTtfLkpiKGgsZnVuY3Rpb24obCxtKXtrLnB1c2gobS5sZW5ndGgrXCI6XCIrbCl9KTtFKGIsXCJsZW5mcmVxc1wiLGsuam9pbigpKTtsYihiKTtZayhiLF8uRGooNTgpKX19LEJ2PWZ1bmN0aW9uKGEsYil7KF8ueSgzNjQpP3goYS5qLk4sNik6YS5tKXx8IWIuZ2V0Q2xpY2tVcmwoKXx8WihhLFwiY2xpY2tcIixiLmdldENsaWNrVXJsKCkpfSxFdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKWlmKFwiXCIhPWJbY10pe2Zvcih2YXIgZD0hMSxlPTA7ZTxhLkEubGVuZ3RoO2UrKylpZihiW2NdPT1hLkFbZV0pe2Q9ITA7YnJlYWt9ZHx8YS5BLnB1c2goYltjXSl9fSxGdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1cIlwiLGQ9MDtkPGIubGVuZ3RoO2QrKyl7aWYoMDxkKWMrPVwiL1wiO2Vsc2UgaWYoXCJcIj09YlswXSljb250aW51ZTtmb3IodmFyIGU9MDtlPGEuQS5sZW5ndGg7ZSsrKWlmKGJbZF09PWEuQVtlXSl7Yys9ZTticmVha319cmV0dXJuIGN9LHp2PWZ1bmN0aW9uKGEsYil7dmFyIGM9XCJcIjtcIlwiIT1iJiYoYj1iLnNwbGl0KFwiL1wiKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQucmVwbGFjZSgvLC9nLFwiOlwiKX0pLEV2KGEsYiksYz1GdihhLGIpKTthLlUucHVzaChjKX0sQ3Y9ZnVuY3Rpb24oYSl7cmV0dXJuIER2KGEsZnVuY3Rpb24oYil7cmV0dXJuIDAhPWdrKGIpfSl9LER2PWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IFhxO2EuZm9yRWFjaChmdW5jdGlvbihkLGUpe2Muc2V0KGEubGVuZ3RoLWUtMSxiKGQpKX0pO3JldHVybiBZcShjKX0seXY9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tb2RlbC5qLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gRnQoYS5tb2RlbCxjKX0pO1ooYSxcInVjaXNcIixiLHtxYTpcInxcIn0pfSxZdT1mdW5jdGlvbihhKXt2YXIgYj1hLmouTjt4KGIsMjEpJiYoWihhLFwiaHh2YVwiLDEseyQ6ITF9KSxaKGEsXCJjbXNpZFwiLEIoYiwyMykpLFooYSxcInZpZFwiLEIoYiwyMikpKX0sQXY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1IYihiLGZ1bmN0aW9uKGQpe2Q9ZC5XO3ZhciBlPV8uT2koKTtyZXR1cm4gTWF0aC5yb3VuZChNYXRoLm1pbigoZCYmZT9lLWQ6MCkvMUUzLDE4MDApKX0sdm9pZCAwLFwiflwiKTtaKGEsXCJyaXNcIixjKTtiPUhiKGIsZnVuY3Rpb24oZCl7YS5HJiYoZC5XPV8uT2koKXx8MCxkLkErKyk7cmV0dXJuIGQuQS0xfSk7WihhLFwicmNzXCIsYil9LHJ2PWZ1bmN0aW9uKGEpe2lmKCFfLkRqKDIyMSkmJl8ueSgzMDgpKXt2YXIgYj1uZXcgaHE7Zm9yKHZhciBjPVtdLGQ9L15fR0VTUFNLLSguKykkLyxlPTA7ZTx3aW5kb3cubG9jYWxTdG9yYWdlLmxlbmd0aDtlKyspe3ZhciBmPShkLmV4ZWMod2luZG93LmxvY2FsU3RvcmFnZS5rZXkoZSkpfHxbXSlbMV07ZiYmYy5wdXNoKGYpfWM9Xy5GKGMpO2ZvcihkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlkPWQudmFsdWUsZT1oYigpLmdldChkKSxlLmdldEVycm9yKCk/aWIoZS5nZXRFcnJvcigpLGQsZS5lcnJvck1lc3NhZ2UpOihkPWUuSWEsMCE9PW11KGQpJiYxIT09bXUoZCl8fHhmKGIsMixkLGtxKSk7dWYoYixrcSwyKS5sZW5ndGg/KGM9bmV3IFdlLGQ9dWYoYixpcSwxKSwwPGQubGVuZ3RoJiZmZihjLDEsZCxscSksZD11ZihiLGtxLDIpLDA8ZC5sZW5ndGgmJmZmKGMsMixkLG1xKSxiPVVlKFplKGMpLHZvaWQgMCkpOmI9bnVsbDtaKGEsXCJhM3BcIixiKX19LFo9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kP3t9OmQ7YS5IW2JdfHx2b2lkIDA9PT1jfHxudWxsPT09Y3x8YS5DLnB1c2goe3BiOmIsdmFsdWU6YyxvcHRpb25zOmR9KX0sVHU9ZnVuY3Rpb24oYSl7dmFyIGI9Xy55KDM4NykmJiF4KGEubyw1KT9cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vZ2FtcGFkL2Fkcz9cIjpcIlwiK18uRGooMjQ3KStcIi9nYW1wYWQvYWRzP1wiO2EubD1iO2ZvcihiPTA7YjxhLkMubGVuZ3RoO2IrKyl7dmFyIGM9YS5DW2JdO2lmKFwiYWRzZW5zZVBhcmFtZXRlcnNcIj09PWMucGIpR3YoYSxjKTtlbHNle3ZhciBkPUh2KGMpO2lmKEl2KGEsYixjLGQpKWJyZWFrfX19LEh2PWZ1bmN0aW9uKGEpe3ZhciBiPWEudmFsdWUsYz1hLm9wdGlvbnMsZD12b2lkIDA9PT1jLiQ/ITA6Yy4kO2E9dm9pZCAwPT09Yy5xYT9cIixcIjpjLnFhO2M9dm9pZCAwPT09Yy5uYT8hMTpjLm5hO3JldHVybiBfLk1jKGIpP0FycmF5LmlzQXJyYXkoYikmJmIubGVuZ3RoP2IubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKdihlLGQpfSkuam9pbihKdihhLGQpKTpudWxsOm51bGw9PWJ8fCFjJiYwPT1iP251bGw6SnYoYixkKX0sSXY9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWQpcmV0dXJuITE7dmFyIGU9Yy5wYixmPWMudmFsdWU7Yz1jLm9wdGlvbnM7Yz12b2lkIDA9PT1jLiQ/ITA6Yy4kO2Q9ZStcIj1cIitkO2lmKF8ueSgxNjgpJiYxNTM1Mjw9YS5sLmxlbmd0aCtkLmxlbmd0aCl7aWYoXCJzdXBwb3J0aW5nX3VybHNcIj09ZSlmb3IoZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgZz0oZD9KdihcIixcIixjKTpcIiZcIitlK1wiPVwiKStKdihmW2RdLGMpO2lmKDE1MzUyPGEubC5sZW5ndGgrZy5sZW5ndGgpYnJlYWs7YS5sKz1nfWtiKFwiZ3B0X3VybF90cnVuY1wiLGZ1bmN0aW9uKGgpe0UoaCxcImxwc1wiLGEuQy5zbGljZShiKS5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuISFIdihrKX0pLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gay5wYn0pLmpvaW4oKSk7bGIoaCl9KTthLmwrPVwiJnRydW5jPTFcIjtyZXR1cm4hMH1cIj9cIiE9PWEubFthLmwubGVuZ3RoLTFdJiYoYS5sKz1cIiZcIik7YS5sKz1kO3JldHVybiExfSxHdj1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9W107Yj1fLkYoQXJyYXkuaXNBcnJheShiLnZhbHVlKT9iLnZhbHVlOltdKTtmb3IodmFyIGU9Yi5uZXh0KCk7IWUuZG9uZTtlPWIubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2U9Zi5wYjt2YXIgZz1mLm5kLGg9Zi56ZDtmPWc/ZW5jb2RlVVJJQ29tcG9uZW50KGcudG9TdHJpbmcoKSk6XCJcIjtoPyhnPWgubWFwKGZ1bmN0aW9uKGspe3JldHVybiBrP2VuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoaykpOlwiXCJ9KS5qb2luKFwiLFwiKSxkLnB1c2goZStcIixcIitlbmNvZGVVUklDb21wb25lbnQoZikrXCIsXCIrZykpOmcmJlwidXJsXCIhPWUmJmMucHVzaChlK1wiPVwiK2YpfWMubGVuZ3RoJiYoYS5sKz1cIiZcIitjLmpvaW4oXCImXCIpKTtkLmxlbmd0aCYmKGEubCs9XCImc3BzPVwiK2Quam9pbihcInxcIikpfSxtdj1mdW5jdGlvbihhKXthPXFnKGEudG9wKT9hLnRvcDphO3JldHVybiBfLk1jKGEuQU1QKSYmISFCZyhhLkFNUCxmdW5jdGlvbihiLGMpe3JldHVybiEvXmluYWJveC9pLnRlc3QoYyl9KX0sSnY9ZnVuY3Rpb24oYSxiKXthPWEudG9TdHJpbmcoKTtyZXR1cm4gYj9lbmNvZGVVUklDb21wb25lbnQoYSk6YX0sdHY9bmV3IF8ueWEoLTksLTkpO3ZhciBLdj1udWxsLE52PWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmo9bmV3IHQuU2V0O3RoaXMubD1uZXcgdC5NYXA7dGhpcy52PXRrLkIoKTtfLnYoXy5yLFwiRE9NQ29udGVudExvYWRlZFwiLEcoMzM0LGZ1bmN0aW9uKCl7Zm9yKHZhciBiPV8uRihfLkEoYS5qLFwidmFsdWVzXCIpLmNhbGwoYS5qKSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLEx2KGEsYykmJmEuai5kZWxldGUoYyl9KSk7U28oSS5CKCksTm8sNzI0LGZ1bmN0aW9uKGIpeyhiPVFwLkIoKS5qLmdldChiKXx8bnVsbCkmJk12KGEsYil9KTtTbyhJLkIoKSxPbyw3MjUsZnVuY3Rpb24oYil7aWYoYj1RcC5CKCkuai5nZXQoYil8fG51bGwpe3ZhciBjPWEubC5nZXQoYik7bnVsbCE9Yz9xdChjLGIubCk6TXYoYSxiKX19KX0sTXY9ZnVuY3Rpb24oYSxiKXtMdihhLGIpP2Euai5kZWxldGUoYik6KGEuai5hZGQoYiksXy5SKGIsZnVuY3Rpb24oKXthLmouZGVsZXRlKGIpfSkpfSxMdj1mdW5jdGlvbihhLGIpe3ZhciBjPXBhKGIsXy5yLmRvY3VtZW50KTtpZihjJiZcIkRJVlwiPT1jLm5vZGVOYW1lKXt2YXIgZD1fLnkoODcpO2M9bmV3IG90KHtMOl8ucixWYTphLnYsa2I6YyxyYTpmdW5jdGlvbihlKXtibCgzMzYsZSwxKX0seGQ6ZH0pO2lmKGMudilyZXR1cm4gcXQoYyxiLmwpLGEubC5zZXQoYixjKSxsbyhiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5sLmRlbGV0ZShiKX0pLCEwfXJldHVybiExfTt2YXIgTGI9bmV3IHQuU2V0O3ZhciBPdj1mdW5jdGlvbihhLGIpe2I9ZW5jb2RlVVJJQ29tcG9uZW50KGIpO2I9QmQoXCJkYXRhOnRleHQvaHRtbCxcIitiKTthLnNyYz15ZChiKS50b1N0cmluZygpfTt2YXIgUHY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5tYXgoXCJzdHJpbmdcIj09PXR5cGVvZiBhP18uQShhLFwiZW5kc1dpdGhcIikuY2FsbChhLFwicHhcIik/cGFyc2VJbnQoYSwxMCk6MDphLGIpK1wicHhcIn0sUXY9ZnVuY3Rpb24oYSxiLGMsZCxlKXthPWpnKG5ldyBVZihhKSxcIkRJVlwiKTthLmlkPWM7YS5uYW1lPWM7Yz1hLnN0eWxlO2MuYm9yZGVyPVwiMHB0IG5vbmVcIjtkJiYoYy5tYXJnaW49XCJhdXRvXCIsYy50ZXh0QWxpZ249XCJjZW50ZXJcIik7ZSYmKGQ9QXJyYXkuaXNBcnJheShlKSxjLndpZHRoPWQ/ZVswXStcInB4XCI6XCIxMDAlXCIsYy5oZWlnaHQ9ZD9lWzFdK1wicHhcIjpcIjAlXCIpO2IuYXBwZW5kQ2hpbGQoYSk7cmV0dXJuIGF9LFN2PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuKXt2YXIgcT1Sdix3PW5wLkIoKS52LHU7QXJyYXkuaXNBcnJheShkKT91PW5ldyBfLlRmKGRbMF0sZFsxXSk6dT0xO2Q9aHx8eChmLDQpfHxfLnkoMjQyKSYmbnVsbD09QihmLDQpP0xrKCk6dm9pZCAwO2c9Z3x8dm9pZCAwO18ueSgzNTQpfHwoZz1fLnkoMzM4KT9mdDpjdCxnPXgoZiwzKT9nOnZvaWQgMCk7cmV0dXJuIG5ldyBZcyh7VGI6YSx0YzpiLGFkOnEsY29udGVudDpudWxsPT09bD91cyhjKTpcIjxzdGFydGd1YXJkPlwiK2MrXCI8ZW5kZ3VhcmQ+XCIsc2l6ZTp1LGhkOntpbmZvOmZ1bmN0aW9uKCl7fSxKOmZ1bmN0aW9uKCl7fSxlcnJvcjpmdW5jdGlvbigpe319LFNjOmsseWM6ZSxGYzpnLHBlcm1pc3Npb25zOnt3YjpudWxsIT1CKGYsMSk/ISF4KGYsMSk6IWgseGI6bnVsbCE9QihmLDIpPyEheChmLDIpOiExfSxuYjohIVhiKCkuZmlmV2luLHRkOlpuKCksUGM6JG4oKSxKYzohMSxob3N0cGFnZUxpYnJhcnlUb2tlbnM6dyxyYTpibCxhYjpudWxsPT09bD92b2lkIDA6bCx1bmlxdWVJZDpuLHdhOm0sRWM6ZH0pfSxUdj1mdW5jdGlvbihhLGIpe3ZhciBjPVRzKDQ5NSxmdW5jdGlvbigpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIixjKTtiKCl9LGJsKTthLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsYyl9LFV2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD12b2lkIDA9PT1kPyEwOmQ7dmFyIGU9dm9pZCAwPT09ZT8hMDplO2I9dXMoYixcIjxzY3JpcHQ+dmFyIGluRGFwSUY9dHJ1ZSxpbkdwdElGPXRydWU7XFx4M2Mvc2NyaXB0PlwiKTt0cnl7dmFyIGY9YS5jb250ZW50V2luZG93P2EuY29udGVudFdpbmRvdy5kb2N1bWVudDphLmNvbnRlbnREb2N1bWVudDtkJiYkZCgpJiZmLm9wZW4oXCJ0ZXh0L2h0bWxcIixcInJlcGxhY2VcIik7YygpO2Yud3JpdGUoYik7YS5jb250ZW50V2luZG93JiZhLmNvbnRlbnRXaW5kb3cuaGlzdG9yeSYmYS5jb250ZW50V2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlJiZFZChhLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZixcIiNcIikmJmEuY29udGVudFdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLFwiXCIsXCIjXCIrTWF0aC5yYW5kb20oKSk7ZSYmZi5jbG9zZSgpfWNhdGNoKGcpe2NsKDY1MyxnLCEwKX19LFZ2PWZ1bmN0aW9uKGEpe3RyeXtUdihhLGZ1bmN0aW9uKCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJuYW1lXCIpfSksT3YoYSwnPHNjcmlwdD5kb2N1bWVudC5vcGVuKFwidGV4dC9odG1sXCIsXCJyZXBsYWNlXCIpO3ZhciBhPXdpbmRvdy5uYW1lO3dpbmRvdy5uYW1lPVwiXCI7ZG9jdW1lbnQud3JpdGUoYSk7ZG9jdW1lbnQuY2xvc2UoKTtcXHgzYy9zY3JpcHQ+Jyl9Y2F0Y2goYil7Y2woNjY4LGIsITApfX07dmFyIFd2PWZ1bmN0aW9uKGEpe3ZhciBiPV8ucmEoOCwtMSk7cmV0dXJuLTEhPWI/YjpudWxsIT1CKGEsMSk/bnVsbCE9QihhLDMpJiYwIT1SZygpP0IoYSwxKSpsZihhLDMpOkIoYSwxKTpudWxsfSxYdj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9QihhLDIpP251bGwhPUIoYSwzKSYmMCE9UmcoKT9CKGEsMikqbGYoYSwzKTpCKGEsMik6bnVsbH0sWXY9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IE5qO2E9Xy5GKGEpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpe2M9Yy52YWx1ZTtpZihudWxsIT1CKGMsMSkpe3ZhciBkPUIoYywxKTtEKGIsMSxkKX1udWxsIT1CKGMsMikmJihkPUIoYywyKSxEKGIsMixkKSk7bnVsbCE9QihjLDMpJiYoYz1sZihjLDMpLEQoYiwzLGMpKX1yZXR1cm4gYn07dmFyIFp2PWZ1bmN0aW9uKCl7dGhpcy5tb2R1bGU9Mn07WnYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLm1vZHVsZSl9O18uJHY9bmV3IFp2O3ZhciBhdyxidyxldzthdz17fTtidz0oYXdbMl09e2tkOlwicGFnZV9sZXZlbF9hZHNcIn0sYXcpO18uY3c9ZnVuY3Rpb24oKXt0aGlzLmw9e307dGhpcy5qPWJ3fTtfLmR3PWZ1bmN0aW9uKGEsYil7Yj1iLm1vZHVsZTthLmxbYl09YS5sW2JdfHxuZXcgQnI7cmV0dXJuIGEubFtiXX07ZXc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm1vZHVsZTtiPVwiX2dwdF9qc19sb2FkX1wiK2MrXCJfXCI7dmFyIGQ9RygzNDAsZnVuY3Rpb24oZSl7aWYoYS5qW2NdJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGY9YS5qW2NdO2Y9KHZvaWQgMD09PWYuUWM/W106Zi5RYykubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBfLmR3KGEsZykuan0pO3QuUHJvbWlzZS5hbGwoZikudGhlbihmdW5jdGlvbigpe2UuY2FsbChfLnIsXyl9KX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoWGIoKSxiLHt2YWx1ZTpmdW5jdGlvbihlKXtpZihkKXt2YXIgZj1kO2Q9bnVsbDtmKGUpfX0sd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMX0pfTtfLmN3LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGEpe3ZhciBiPV8uZHcodGhpcyxhKSxjPXRoaXMualthLm1vZHVsZV0ua2QsZD1fLnkoMzkzKT9cImh0dHBzOi8vd3d3Lmdvb2dsZXRhZ3NlcnZpY2VzLmNvbS9cIjp3cy5OYSgpLGU9dnMuTmEoKSxmPSRhKCk7dmFyIGc9Xy5yYSgyNSk7Yz1kK2UrYytcIl9cIitmK1wiLmpzXCI7ZyYmKGMrPVwiP1wiK2cpO2c9Yztldyh0aGlzLGEpO3VnKGRvY3VtZW50LGxnKGcpKTtyZXR1cm4gYi5qfTtJYyhfLmN3KTtfLmN3LnByb3RvdHlwZS5sb2FkPUdiKF8uY3cucHJvdG90eXBlLmxvYWQpO3ZhciBSdj1cIjNyZCBwYXJ0eSBhZCBjb250ZW50XCI7V2IoXCJzZXRBZElmcmFtZVRpdGxlXCIsUyg3MjksZnVuY3Rpb24oYSl7UnY9YX0pKTt2YXIgZnc9ZnVuY3Rpb24oYSxiLGMpe2VsLmNhbGwodGhpcyk7dGhpcy5sPWM7RCh0aGlzLmwsMTcsITApO3RoaXMuaj1hO2IueGEodGhpcy5qLGMpO3RoaXMubz1ifTtfLkooZncsb2wpO2Z3LnByb3RvdHlwZS5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgUnQodGhpcyl9O2Z3LnByb3RvdHlwZS5kaXNwbGF5PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuai5nZXRTbG90RWxlbWVudElkKCk7ZG9jdW1lbnQud3JpdGUoJzxkaXYgaWQ9XCInK2dlKGIpKydcIj48L2Rpdj4nKTtwYSh0aGlzLmopP2d3KHRoaXMubyxhLHRoaXMuaik6a2IoXCJncHRfcGJfd3JpdGVcIixmdW5jdGlvbihjKXtsYihjKX0pfTtmdy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7XCJwYWdlX3VybFwiPT1hJiZiJiZEKHRoaXMubCwxOCxTdHJpbmcoYikpO3JldHVybiB0aGlzfTtmdy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVyblwicGFnZV91cmxcIiE9PWE/bnVsbDpCKHRoaXMubCwxOCl9O3ZhciBodz1mdW5jdGlvbigpe3RoaXMuaj17fX0sanc9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2MmJihkPVwiLy9cIitjK1wiLnNhZmVmcmFtZS5nb29nbGVzeW5kaWNhdGlvbi5jb21cIik7Yz1TcyhiLFpuKCksJG4oKSwhMCxkKTthLmpbY118fChhLmpbY109MSxmcigpP2l3KGEsYyk6WGIoKS5maWZXaW58fChiPWIuZG9jdW1lbnQsYT1qZyhuZXcgVWYoYiksXCJJRlJBTUVcIiksYS5zcmM9YyxhLnN0eWxlLnZpc2liaWxpdHk9XCJoaWRkZW5cIixhLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsYj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpLDA8Yi5sZW5ndGgmJihiPWJbYi5sZW5ndGgtMV0sYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYi5uZXh0U2libGluZykpKSl9LGl3PWZ1bmN0aW9uKGEsYil7dmFyIGM9Z3IoZG9jdW1lbnQsYixcInByZWZldGNoXCIsXCJcIik7YyYmXy52KGMsXCJsb2FkXCIsZnVuY3Rpb24oKXthLmpbYl09MztjJiZfLmZnKGMpfSl9O0ljKGh3KTt2YXIga3c9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5SKGEsQ2goYixHKDUwNixmdW5jdGlvbihlKXtlPUpTT04ucGFyc2UoZS5kYXRhKTtlLm1lc3NhZ2U9PT1jJiZkKGUpfSkpKX07dmFyIGx3PWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5QLmNhbGwodGhpcyk7dGhpcy5zbG90PWI7dGhpcy5tPWM7dGhpcy5oYT1kO3RoaXMubz1udWxsO3RoaXMuQT1uZXcgVWYoYSk7dGhpcy5DPWV9O18uSihsdyxfLlApO3ZhciBtdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yy51YSxlPWMuVWEsZj1jLk1hLGc9Yy5aYyxoPWMuYmMsaz1jLnFiLGw9Yy5KYixtPWMuaXNCYWNrZmlsbCxuPWMuT2IscT1jLmFjLHc9Yy5jYztjPWMuVWN8fFwiXCI7ZSYmZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1xdWVyeS1pZFwiLGMpO1lpKHRrLkIoKSxcIjVcIixhLnNsb3QubCk7dmFyIHU9YS5zbG90LmdldFNsb3RJZCgpO18ueSg0MTIpP1FvKEkuQigpLENvLHUpOmEuc2xvdC5UYSgpO2Eubz1hLmwoXCJoZWlnaHRcIj09PWc/XCJmbHVpZFwiOltiLndpZHRoLGIuaGVpZ2h0XSx7dWE6ZCxNYTpmLGJjOmgscWI6ayxKYjpsLGlzQmFja2ZpbGw6bSxPYjpuLGFjOnEsY2M6d30pO3EmJmNoKGEubyxxKTtfLnkoNDEyKXx8cG8oYS5zbG90KTtRbyhJLkIoKSxQYix1LHtzaXplOmJ9KTtiPV8ucmEoMTkpO2lmKDA8Yil7dmFyIEM9c2V0VGltZW91dChmdW5jdGlvbigpe1FvKEkuQigpLHpvLHUpfSwxRTMqYik7Xy5SKGEsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBjbGVhclRpbWVvdXQoQyl9KX1yZXR1cm4gYS5vfTtsdy5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKGEpe2EmJmEuc2V0QXR0cmlidXRlKFwiZGF0YS1sb2FkLWNvbXBsZXRlXCIsITApO1FvKEkuQigpLEtvLHRoaXMuc2xvdC5nZXRTbG90SWQoKSk7WWkodGsuQigpLFwiNlwiLHRoaXMuc2xvdC5sKX07bHcucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKTt2YXIgYT1wYSh0aGlzLnNsb3QsdGhpcy5BLmopO2EmJmEucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIik7dGhpcy5vPW51bGx9O3ZhciBudz1mdW5jdGlvbigpe2x3LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKG53LGx3KTt2YXIgb3c9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVVrKGEuc2xvdC5nZXRTbG90SWQoKSksZT1hLkEuajthPVJ2O2U9dm9pZCAwPT09ZT9kb2N1bWVudDplO2U9amcobmV3IFVmKGUpLFwiSUZSQU1FXCIpO2UuaWQ9ZDtlLnRpdGxlPWE7ZS5uYW1lPWN8fGQ7QXJyYXkuaXNBcnJheShiKT9udWxsIT1iWzBdJiZudWxsIT1iWzFdJiYoZS53aWR0aD1TdHJpbmcoYlswXSksZS5oZWlnaHQ9U3RyaW5nKGJbMV0pKTooZS53aWR0aD1cIjEwMCVcIixlLmhlaWdodD1cIjBcIik7ZS5hbGxvd1RyYW5zcGFyZW5jeT1cInRydWVcIjtlLnNjcm9sbGluZz1cIm5vXCI7ZS5tYXJnaW5XaWR0aD1cIjBcIjtlLm1hcmdpbkhlaWdodD1cIjBcIjtlLmZyYW1lQm9yZGVyPVwiMFwiO2Uuc3R5bGUuYm9yZGVyPVwiMFwiO2Uuc3R5bGUudmVydGljYWxBbGlnbj1cImJvdHRvbVwiO3JldHVybiBlfSxwdz1mdW5jdGlvbihhLGIsYyxkKXtkLmFwcGVuZENoaWxkKGIpO1wic3RyaW5nXCIhPT10eXBlb2YgYyYmKGIud2lkdGg9U3RyaW5nKGNbMF0pLGIuaGVpZ2h0PVN0cmluZyhjWzFdKSk7dmFyIGU9Xy5yYSg0MjApO2lmKDA9PT1lKUl0KGIsYS5zbG90LGZ1bmN0aW9uKCl7cmV0dXJuIGEubG9hZGVkKGIpfSxhLkMsYS5tKTtlbHNle3ZhciBmPUcoNzc0LGZ1bmN0aW9uKCl7aWYoMj09PWV8fChfLnkoNDEyKT9mcChhLm0sYS5zbG90KTphLnNsb3QuRCkpYS5sb2FkZWQoYiksXy5xYihiLFwibG9hZFwiLGYpfSk7Xy52KGIsXCJsb2FkXCIsZil9fTt2YXIgcXc9ZnVuY3Rpb24oKXtudy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihxdyxudyk7cXcucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLk1hO2I9b3codGhpcyxhLGIudWEpO1Z2KGIpO3B3KHRoaXMsYixhLGMpO3JldHVybiBifTtxdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgcnc9ZnVuY3Rpb24oKXtudy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihydyxudyk7cncucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnVhO2I9Yi5NYTt2YXIgZD1vdyh0aGlzLGEpO3RyeXtPdihkLGMpfWNhdGNoKGUpe2NsKDY1NCxlLCEwKX1wdyh0aGlzLGQsYSxiKTtyZXR1cm4gZH07cncucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIHN3PWZ1bmN0aW9uKCl7bHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooc3csbHcpO3N3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPWIudWEsZT1iLk1hLGY9Yi5iYyxnPWIucWIsaD1iLkpiLGs9Yi5pc0JhY2tmaWxsLGw9Yi5PYixtPWIuYWMsbj1iLmNjLHE9dGhpcy5oYTtiPXEuTjtxPXEuUlt0aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXTtmPVFqKG5ldyBQaiwhIWYpO251bGwhPW4mJkQoZiw0LG4pO2Y9Ym8oW2YsTyhiLFBqLDE4KSxxJiZPKHEsUGosMTMpXSk7dmFyIHc9U3RyaW5nKHgoZiw0KSk7bnVsbCE9biYmbiE9PXgoZiw0KSYmamwuQigpLkooS20odyxTdHJpbmcobikpKTtrfHxrYihcImdwdF9zZl9yXCIsZnVuY3Rpb24oQyl7bGIoQyk7RShDLFwiR0FNXCIsU3RyaW5nKG4pKTtFKEMsXCJGaW5hbFwiLHcpfSk7aD1oP0IoaCwyKTpudWxsO2I9ZXAodGhpcy5tLHRoaXMuc2xvdCk7dmFyIHU9U3YoZSxVayh0aGlzLnNsb3QuZ2V0U2xvdElkKCkpLGQsYSxmdW5jdGlvbigpe3JldHVybiBjLmxvYWRlZCh1LmopfSxmLGd8fG51bGwsISFrLCEhbCxoLGIsbSk7Xy5SKHRoaXMsZnVuY3Rpb24oKXt0cnl7MTAwIT11LnN0YXR1cyYmKDI9PXUuSCYmKFRyKHUudiksdS5IPTApLHdpbmRvdy5jbGVhclRpbWVvdXQodS5LKSx1Lks9LTEsdS5DPTMsdS5sJiYodS5sLnphKCksdS5sPW51bGwpLHUuVSYmdS5qP3UuVS51bm9ic2VydmUodS5qKTooXy5xYih3aW5kb3csXCJyZXNpemVcIix1LkkpLF8ucWIod2luZG93LFwic2Nyb2xsXCIsdS5JKSksdS5BJiZ1LmomJnUuQT09Xy5nZyh1LmopJiZ1LkEucmVtb3ZlQ2hpbGQodS5qKSx1Lmo9bnVsbCx1LkE9bnVsbCx1LlUmJih1LlUuZGlzY29ubmVjdCgpLHUuVT1udWxsKSx1LnN0YXR1cz0xMDApfWNhdGNoKEMpe319KTtyZXR1cm4gdS5qfTtzdy5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKGEpe2x3LnByb3RvdHlwZS5sb2FkZWQuY2FsbCh0aGlzLGEpO2E9dGhpcy5oYS5SW3RoaXMuc2xvdC5nZXRTbG90RWxlbWVudElkKCldO3l1KHtzbG90OnRoaXMuc2xvdCxjYTphfSl9O3N3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciB0dz1mdW5jdGlvbigpe253LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHR3LG53KTt0dy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIpe3ZhciBjPWIudWEsZD1iLk1hO2I9Yi5xYjt2YXIgZT1vdyh0aGlzLGEpO2ImJmUuc2V0QXR0cmlidXRlKFwic2FuZGJveFwiLGIuam9pbihcIiBcIikpOy0xPT1WZC5pbmRleE9mKFwiaVBob25lXCIpJiYoZS5zcmNkb2M9XCJcIik7cHcodGhpcyxlLGEsZCk7VXYoZSxjLGZ1bmN0aW9uKCl7fSk7cmV0dXJuIGV9O3R3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3ZhciB1dz1mdW5jdGlvbigpe253LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHV3LG53KTt1dy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIpe3ZhciBjPWIudWEsZD1iLk1hLGU9Yi5xYjtiPW93KHRoaXMsYSk7dHJ5e2U9ZXx8dm9pZCAwO2U9dm9pZCAwPT09ZT9kdDplO2Iuc2V0QXR0cmlidXRlKFwic2FuZGJveFwiLGUuam9pbihcIiBcIikpO3ZhciBmPW5ldyBmZShjLG51bGwsZWUpO2Iuc3JjZG9jPWYgaW5zdGFuY2VvZiBmZSYmZi5jb25zdHJ1Y3Rvcj09PWZlP2YuajpcInR5cGVfZXJyb3I6U2FmZUh0bWxcIn1jYXRjaChnKXtjbCg2NTYsZywhMCl9cHcodGhpcyxiLGEsZCk7cmV0dXJuIGJ9O3V3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciB2dz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPWRvY3VtZW50O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIG5ldyB0dyhmLGIsYyxkLGUpO2Nhc2UgMjpyZXR1cm4gbmV3IHJ3KGYsYixjLGQsZSk7Y2FzZSAzOnJldHVybiBuZXcgdXcoZixiLGMsZCxlKTtjYXNlIDQ6cmV0dXJuIG5ldyBxdyhmLGIsYyxkLGUpO2RlZmF1bHQ6cmV0dXJuIG5ldyBzdyhmLGIsYyxkLGUpfX07dmFyIHd3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuLHEsdyx1LEMsUSxOLEgscWEsb2Ipe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLk09Yjt0aGlzLmhhPWM7dGhpcy5MPWQ7dGhpcy5tPXRoaXMubCgpO3RoaXMuQT10aGlzLmwoKTt0aGlzLkg9dGhpcy5sKCk7dGhpcy5DPXRoaXMubCgpO3RoaXMuRz10aGlzLmwoKTt0aGlzLkQ9dGhpcy5sKCk7dGhpcy5JPXRoaXMubCgpO3RoaXMuWD1WKHRoaXMsZSk7QXIodGhpcy5vLGYpO3RoaXMuZGE9Vih0aGlzLGcpO3RoaXMuUD1WKHRoaXMsaCk7dGhpcy5iYT1WKHRoaXMsayk7dGhpcy5hYT1WKHRoaXMsbCk7QXIodGhpcy5vLG9iKTt0aGlzLk89Vyh0aGlzLG0pO3RoaXMuVD1XKHRoaXMsbik7dGhpcy5WPVcodGhpcyxxKTt0aGlzLlc9Vyh0aGlzLHcpO3RoaXMuZmE9Vyh0aGlzLHUpO3RoaXMuZ2E9Vyh0aGlzLEMpO3RoaXMuWT1XKHRoaXMsUSk7dGhpcy5LPVcodGhpcyxOKTt0aGlzLmVhPVcodGhpcyxIKTt0aGlzLmthPVcodGhpcyxxYSl9O18uSih3dyxZKTt3dy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjgwfTt3dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5kYS52YWx1ZSxjPXRoaXMuUC52YWx1ZSxkPXZ3KHRoaXMuYWEudmFsdWUsdGhpcy5zbG90LHRoaXMuTSx0aGlzLmhhLEhyKHRoaXMuTykpO18ud2godGhpcyxkKTt2YXIgZT10aGlzLlQudmFsdWUsZj1udWxsIT09KGE9bnVsbD09PWV8fHZvaWQgMD09PWU/dm9pZCAwOm1mKGUuZ2V0SHRtbCgpKSkmJnZvaWQgMCE9PWE/YTp0aGlzLlgudmFsdWU7aWYobnVsbD09Zil0aHJvdyBFcnJvcihcImludmFsaWQgaHRtbFwiKTt2YXIgZz10aGlzLmJhLnZhbHVlO3RoaXMuc2xvdC5JPWY7dmFyIGg9bXcoZCxnLHt1YTpmLFVhOmIsTWE6YyxVYzp0aGlzLlYudmFsdWUsWmM6dGhpcy5XLnZhbHVlLGJjOnRoaXMuZmEudmFsdWUscWI6dGhpcy5nYS52YWx1ZSxKYjplLGlzQmFja2ZpbGw6dGhpcy5ZLnZhbHVlLE9iOnRoaXMuSy52YWx1ZSxhYzp0aGlzLmVhLnZhbHVlLGNjOnRoaXMua2EudmFsdWV9KTs0PT09Z2sodGhpcy5oYS5SW3RoaXMuc2xvdC5nZXRTbG90RWxlbWVudElkKCldKT8oYj1BdSh0aGlzLHRoaXMuTCxcIm1lc3NhZ2VcIixmdW5jdGlvbihrKXtpZihoLmNvbnRlbnRXaW5kb3chPT1rLnNvdXJjZSl2YXIgbD0hMTtlbHNlIHRyeXtsPVwicmV3YXJkZWRcIj09PUpTT04ucGFyc2Uoay5kYXRhKS50eXBlfWNhdGNoKG0pe2w9ITF9cmV0dXJuIGx9KSxVKHRoaXMuQyxiKSk6RnIodGhpcy5DKTtVKHRoaXMubSxoKTtVKHRoaXMuQSxkLmooKSk7ZD1BdSh0aGlzLHdpbmRvdyxcIm1lc3NhZ2VcIixmdW5jdGlvbihrKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGsuZGF0YSYmLTEhPT1rLmRhdGEuaW5kZXhPZihcImNyZWF0aXZlX2dlb21ldHJ5X3VwZGF0ZVwiKSYmay5zb3VyY2U9PT1oLmNvbnRlbnRXaW5kb3d9KTtVKHRoaXMuRyxkKTtkPUF1KHRoaXMsd2luZG93LFwibWVzc2FnZVwiLGZ1bmN0aW9uKGspe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2Ygay5kYXRhJiYoMD09ay5kYXRhLmxhc3RJbmRleE9mKFwidmlzaWJpbGl0eS1jaGFuZ2VkLVwiLDApfHxcImltcHJlc3Npb24tdmlld2FibGVcIj09PWsuZGF0YSkmJmsuc291cmNlPT09aC5jb250ZW50V2luZG93fSk7VSh0aGlzLkQsZCk7VSh0aGlzLkksQXUodGhpcyxoLFwibG9hZFwiKSk7ZD1BdSh0aGlzLHdpbmRvdyxcIm1lc3NhZ2VcIixmdW5jdGlvbihrKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGsuZGF0YSYmMD09ay5kYXRhLmxhc3RJbmRleE9mKFwiYW1wLVwiLDApJiYhXy55KDExMSkmJmsuc291cmNlPT09aC5jb250ZW50V2luZG93fSk7VSh0aGlzLkgsZCl9O3ZhciB4dz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5zbG90PWI7dGhpcy5jYT1jO3RoaXMub2E9ZDt0aGlzLkY9T3IodGhpcyk7dGhpcy5BPVcodGhpcyxlKTt0aGlzLkg9Vih0aGlzLGYpO3RoaXMuRD1WKHRoaXMsZyk7dGhpcy5HPVYodGhpcyxoKTt0aGlzLkM9Vyh0aGlzLGspO3RoaXMuST1WKHRoaXMsbCl9O18uSih4dyxZKTt4dy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk5fTt4dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy5ILnZhbHVlLGM9dGhpcy5ELnZhbHVlO2Muc3R5bGUud2lkdGg9XCJcIjtjLnN0eWxlLmhlaWdodD1cIlwiO2lmKFwiaGVpZ2h0XCIhPT10aGlzLkEudmFsdWUpe3ZhciBkPW51bGwhPT0oYT10aGlzLkMudmFsdWUpJiZ2b2lkIDAhPT1hP2E6MCxlPXRoaXMuRy52YWx1ZSxmPXRoaXMuSS52YWx1ZSxnPXtzbG90OnRoaXMuc2xvdCxjYTp0aGlzLmNhfSxoPSExO3N3aXRjaChkKXtjYXNlIDE6Y2FzZSAyOmg9dGhpcy5tO3ZhciBrPXRoaXMub2EsbD1nLnNsb3Q7dmFyIG09ZS53aWR0aCxuPWUuaGVpZ2h0LHE9MDt2YXIgdz0wO3ZhciB1PXhhKGcuY2EpO3U9Xy5GKHUpO2Zvcih2YXIgQz11Lm5leHQoKTshQy5kb25lO0M9dS5uZXh0KCkpaWYoQz1DLnZhbHVlLEFycmF5LmlzQXJyYXkoQykpe3ZhciBRPV8uRihDKTtDPVEubmV4dCgpLnZhbHVlO1E9US5uZXh0KCkudmFsdWU7cTxDJiYocT1DKTt3PFEmJih3PVEpfXc9W3Esd107cT13WzBdPG07bj13WzFdPG47cXx8bj8odz1tK1wicHhcIix1PXtcIm1heC1oZWlnaHRcIjpcIm5vbmVcIixcIm1heC13aWR0aFwiOncscGFkZGluZzpcIjBweFwiLHdpZHRoOnd9LG4mJih1LmhlaWdodD1cImF1dG9cIiksbnUoYyxiLHUpLGM9e30scSYmbT5wYXJzZUludChmLndpZHRoLDEwKSYmKGMud2lkdGg9dyxjW1wibWF4LXdpZHRoXCJdPXcpLG4mJihjLmhlaWdodD1cImF1dG9cIixjW1wibWF4LWhlaWdodFwiXT1cIm5vbmVcIikseWcoYyk/Yz0hMTooY1tcInBhZGRpbmctXCIrKFwibHRyXCI9PWYuZGlyZWN0aW9uP1wibGVmdFwiOlwicmlnaHRcIildPVwiMHB4XCIsXy5YZyhiLGMpLGM9ITApKTpjPSExO2I6c3dpdGNoKG09ZS53aWR0aCxuPWguZGVmYXVsdFZpZXd8fGgucGFyZW50V2luZG93fHxfLnIsZCl7Y2FzZSAyOmI9b3UoYixuLG0sZixrKTticmVhayBiO2Nhc2UgMTppZihrPWIucGFyZW50RWxlbWVudClpZihmPUlrKGspKXtxPWYud2lkdGg7Zj13YShwYShsLG4uZG9jdW1lbnQpLG4pO2w9Zi5wb3NpdGlvbjt1PXBhcnNlSW50KGYud2lkdGgsMTApfHwwO3c9d2EoayxuKTtRPVwicnRsXCI9PXcuZGlyZWN0aW9uP1wiUmlnaHRcIjpcIkxlZnRcIjtrPVEudG9Mb3dlckNhc2UoKTtuPVwiYWJzb2x1dGVcIj09bD8wOnBhcnNlSW50KHdbXCJwYWRkaW5nXCIrUV0sMTApO3c9cGFyc2VJbnQod1tcImJvcmRlclwiK1ErXCJXaWR0aFwiXSwxMCk7Qz1iaChmKTtRPShDJiZDWzRdfHwwKSooXCJSaWdodFwiPT1RPy0xOjEpO209TWF0aC5tYXgoTWF0aC5yb3VuZCgocS1NYXRoLm1heCh1LG0pKS8yKSwwKTtxPXt9O3U9QyYmQ1szXXx8MTtpZigxIT0oQyYmQ1swXXx8MSl8fDEhPXUpQ1swXT0xLENbM109MSxxLnRyYW5zZm9ybT1cIm1hdHJpeChcIitDLmpvaW4oXCIsXCIpK1wiKVwiO3U9MDtzd2l0Y2gobCl7Y2FzZSBcImZpeGVkXCI6Y2FzZSBcInJlbGF0aXZlXCI6dT1wYXJzZUZsb2F0KGZba10pfHwwO2JyZWFrO2Nhc2UgXCJhYnNvbHV0ZVwiOnFba109XCIwXCJ9cVtcIm1hcmdpbi1cIitrXT1tLW4tdy11LVErXCJweFwiO18uWGcoYixxKTtiPSEwfWVsc2UgYj0hMTtlbHNlIGI9ITE7YnJlYWsgYjtkZWZhdWx0OmI9ITF9Y3x8Yj8ocXUoaCxnLGQsZS53aWR0aCxlLmhlaWdodCxcImdwdF9zbG90ZXhwXCIpLGg9ITApOmg9ITE7YnJlYWs7Y2FzZSAzOmg9dGhpcy5tLG09dGhpcy5vYSxsPWUud2lkdGgsaz1lLmhlaWdodCxrPj0ocGFyc2VJbnQoZi5oZWlnaHQsMTApfHwwKXx8XCJub25lXCI9PWYuZGlzcGxheXx8XCJoaWRkZW5cIj09Zi52aXNpYmlsaXR5fHwhbXx8LTEyMjQ1OTMzPT09bS53aWR0aHx8Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b208PW0uaGVpZ2h0P2g9ITE6KGY9e2hlaWdodDprK1wicHhcIn0sbnUoYyxiLGYpLF8uWGcoYixmKSxxdShoLGcsMyxsLGssXCJncHRfc2xvdHJlZFwiKSxoPSEwKX0haCYmXy55KDIxMikmJnF1KHRoaXMubSxnLDAsZS53aWR0aCxlLmhlaWdodCxcImdwdF9wZ2Jya1wiKTtUYih0aGlzLmNhLHRoaXMuQS52YWx1ZSxlLGQpfXRoaXMuRi5ub3RpZnkoKX07dmFyIHl3PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLm09bnVsbDt0aGlzLkc9Vyh0aGlzLGEpO3RoaXMuRD1XKHRoaXMsYik7dGhpcy5DPVcodGhpcyxjKTt0aGlzLkE9Vih0aGlzLGQpfTtfLkooeXcsWSk7eXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcxN307eXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9dGhpcy5ELnZhbHVlLGM9dGhpcy5HLnZhbHVlO251bGw9PXRoaXMuQy52YWx1ZXx8Ynx8bnVsbD09Y3x8KGI9Q2godGhpcy5BLnZhbHVlLEcoNTA0LGZ1bmN0aW9uKGQpe1wiaW1wcmVzc2lvbi12aWV3YWJsZVwiPT09ZC5kYXRhP1BvKGMsTW8sbnVsbCx7bWI6ITB9KTowPT09ZC5kYXRhLmluZGV4T2YoXCJ2aXNpYmlsaXR5LWNoYW5nZWQtXCIpJiYoZD0vXnZpc2liaWxpdHktY2hhbmdlZC0oXFxkKyhcXC5cXGQrKT8pJC8uZXhlYyhkLmRhdGEpKSYmKGQ9TnVtYmVyKGRbMV0pLDA8PWQmJjE+PWQmJigwIT09ZCYmMSE9PWR8fGQhPT1hLm0pJiYobnVsbCE9PWEubXx8MDxkKSYmKGEubT1kLFBvKGMsTW8sbnVsbCx7bWI6ITEsaW5WaWV3UGVyY2VudGFnZTorKDEwMCpkKS50b0ZpeGVkKDIpfSkpKX0pKSxfLlIodGhpcyxiKSl9O3ZhciB6dz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsKXtZLmNhbGwodGhpcyk7dGhpcy5LPVcodGhpcyxhKTt0aGlzLk09Vyh0aGlzLGIpO3RoaXMuST1XKHRoaXMsYyk7dGhpcy5IPVcodGhpcyxkKTt0aGlzLk89Vyh0aGlzLGUpO3RoaXMuQT1WKHRoaXMsZik7dGhpcy5tPVYodGhpcyxnKTt0aGlzLkM9Vih0aGlzLGgpO3RoaXMuRD1WKHRoaXMsayk7dGhpcy5HPVYodGhpcyxsKX07Xy5KKHp3LFkpO3p3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MTh9O3p3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZihBdyh0aGlzKSl7dmFyIGI9dGhpcy5DLnZhbHVlLGM9dGhpcy5BLnZhbHVlLGQ9dGhpcy5tLnZhbHVlO18uY2koZCxcInZpc2liaWxpdHlcIixcImhpZGRlblwiKTtfLmNpKGQsXCJtaW4td2lkdGhcIixcIjEwMCVcIik7Yj8oXy5jaShjLFwibWluLXdpZHRoXCIsXCIxMDAlXCIpLGI9Q2godGhpcy5HLnZhbHVlLEcoNTA1LGZ1bmN0aW9uKCl7dmFyIGU9Yy5jb250ZW50RG9jdW1lbnQ7ZT9CdyhhLGMsZCxlLmJvZHkub2Zmc2V0V2lkdGgsZS5ib2R5Lm9mZnNldEhlaWdodCk6a2IoXCJncHRfYW1wX2ZsdWlkX25vX2lmcmFtZWRvY1wiLGZ1bmN0aW9uKGYpe2xiKGYpfSl9KSksXy5SKHRoaXMsYikpOihiPUNoKHRoaXMuRC52YWx1ZSxHKDUwNCxmdW5jdGlvbihlKXt2YXIgZj1hLkEudmFsdWUsZz1hLm0udmFsdWU7aWYoLTEhPT1lLmRhdGEuaW5kZXhPZihcImNyZWF0aXZlX2dlb21ldHJ5X3VwZGF0ZVwiKSl0cnl7dmFyIGg9SlNPTi5wYXJzZShlLmRhdGEpLGs9YS5PLnZhbHVlO2lmKG51bGwhPWsmJlwiY3JlYXRpdmVfZ2VvbWV0cnlfdXBkYXRlXCI9PT1oLnMmJmguYz09PVwic2ZjaGFubmVsXCIrayYmaC5wKXt2YXIgbD1KU09OLnBhcnNlKGgucCk7bC51aWQ9PT1rJiZcIm51bWJlclwiPT09dHlwZW9mIGwud2lkdGgmJlwibnVtYmVyXCI9PT10eXBlb2YgbC5oZWlnaHQmJkJ3KGEsZixnLGwud2lkdGgsbC5oZWlnaHQpfX1jYXRjaChtKXt9fSkpLF8uUih0aGlzLGIpKX19O3ZhciBBdz1mdW5jdGlvbihhKXt2YXIgYj0hYS5DLnZhbHVlJiYhKF8ueSgyNjcpfHxfLnkoMjYzKXx8Xy55KDI4NikpO3JldHVybiBudWxsPT1hLkgudmFsdWV8fGEuSS52YWx1ZXx8XCJoZWlnaHRcIiE9PWEuTS52YWx1ZXx8Yj8hMTohMH0sQnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtiLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLFN0cmluZyhlKSk7Yi5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLFN0cmluZyhkKSk7Xy5jaShjLFwidmlzaWJpbGl0eVwiLFwidmlzaWJsZVwiKTtDdyhhLGUsZCl9LEN3PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLksudmFsdWU7a2IoXCJncHRfZmx1aWRfc3pcIixmdW5jdGlvbihlKXtFKGUsXCJzelwiLGMrXCJ4XCIrYik7RShlLFwicXFpZFwiLGR8fFwiXCIpO2xiKGUpO0UoZSxcImZmXCIsMSl9KX07dmFyIER3PWZ1bmN0aW9uKGEsYixjLGQsZSl7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMubT1XKHRoaXMsYik7dGhpcy5BPVYodGhpcyxjKTt0aGlzLkM9Vih0aGlzLGQpO3RoaXMuRD1WKHRoaXMsZSl9O18uSihEdyxZKTtEdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjg1fTtEdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhLGI7aWYoIV8ueSgxMTEpJiYhdGhpcy5DLnZhbHVlKXt2YXIgYz10aGlzLkQudmFsdWUsZD10aGlzLkEudmFsdWUsZT1udWxsIT09KGI9bnVsbD09PShhPXRoaXMubS52YWx1ZSl8fHZvaWQgMD09PWE/dm9pZCAwOkIoYSwxKSkmJnZvaWQgMCE9PWI/YjpcIlwiLGY9UWgodGhpcy5MLGQsZSxjKTtfLlIodGhpcyxmdW5jdGlvbigpe3RyeXtmKCl9Y2F0Y2goZyl7YmwoNDkzLGcpfX0pfX07dmFyIEV3PS8oPGhlYWQoXFxzK1tePl0qKT8+KS9pLEZ3PWZ1bmN0aW9uKGEsYixjLGQsZSl7WS5jYWxsKHRoaXMpO3RoaXMudWE9YTt0aGlzLm09dGhpcy5sKCk7dGhpcy5BPVcodGhpcyxiKTt0aGlzLkM9Vyh0aGlzLGMpO3RoaXMuRD1XKHRoaXMsZCk7dGhpcy5HPVcodGhpcyxlKX07Xy5KKEZ3LFkpO0Z3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjV9O0Z3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy51YXx8XCJcIjtpZighSmsodGhpcy5BLnZhbHVlKXx8SHIodGhpcy5DKSlVKHRoaXMubSxhKTtlbHNle3ZhciBiPSEhdGhpcy5ELnZhbHVlLGM9ISF0aGlzLkcudmFsdWU7Y3x8JGQoKXx8KGE9YS5yZXBsYWNlKEV3LF8ueSgyMjMpP1wiJDE8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtU2VjdXJpdHktUG9saWN5IGNvbnRlbnQ9XFxcInNjcmlwdC1zcmMgaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvO29iamVjdC1zcmMgJ25vbmUnO2NoaWxkLXNyYyBibG9iOjtmcmFtZS1zcmMgaHR0cHM6Ly90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tL2I0YS9iNGEtcnVubmVyLmh0bWxcXFwiPlwiOlwiJDE8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtU2VjdXJpdHktUG9saWN5IGNvbnRlbnQ9XFxcInNjcmlwdC1zcmMgaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvO29iamVjdC1zcmMgJ25vbmUnO2NoaWxkLXNyYyBibG9iOjtmcmFtZS1zcmMgJ25vbmUnXFxcIj5cIikpO2ImJiFjJiYoYT1hLnJlcGxhY2UoRXcsJyQxPG1ldGEgbmFtZT1cInJlZmVycmVyXCIgY29udGVudD1cIm9yaWdpblwiPicpKTtVKHRoaXMubSxhKX19O3ZhciBHdz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtZLmNhbGwodGhpcyk7dGhpcy5MPWE7dGhpcy5zbG90SWQ9Yjt0aGlzLm09Yzt0aGlzLkM9ZDt0aGlzLnpiPWc7dGhpcy5EPVcodGhpcyxlKTt0aGlzLkE9Vih0aGlzLGYpfTtfLkooR3csWSk7R3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4Nn07R3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYyxkPXRoaXMuRC52YWx1ZSxlPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDpCKGQsMSksZj1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6cGYoZCksZz1udWxsIT09KGI9bnVsbD09PWR8fHZvaWQgMD09PWQ/dm9pZCAwOkIoZCwzKSkmJnZvaWQgMCE9PWI/YjowO2Q9bnVsbCE9PShjPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDp4KGQsNSkpJiZ2b2lkIDAhPT1jP2M6ITE7ZSYmZiYmKGU9QXQoe0w6dGhpcy5MLGVsZW1lbnQ6dGhpcy5BLnZhbHVlLEFkOjA9PT10aGlzLm0sSGM6ZyxEZDplLEhiOmZ1bmN0aW9uKCl7UW8oYS5DLHpvLGEuc2xvdElkKX0sb3B0aW9uczp7dGhyZXNob2xkOmZ9LHhjOmQsVGM6ZnVuY3Rpb24oaCl7Y2woNjE1LGgsITApfSx6Yjp0aGlzLnpifSksXy5SKHRoaXMsZSkpfTt2YXIgSHc9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuZm9ybWF0PWE7dGhpcy5DPWI7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1XKHRoaXMsYyk7dGhpcy5BPVcodGhpcyxkKX07Xy5KKEh3LFkpO0h3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MjB9O0h3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5BLnZhbHVlO2lmKG51bGw9PWEpRnIodGhpcy5GKTtlbHNle3ZhciBiPU1hdGgucm91bmQoLjMqdGhpcy5DKTsyIT09dGhpcy5mb3JtYXQmJjMhPT10aGlzLmZvcm1hdHx8IUhyKHRoaXMubSl8fCFvZih0aGlzLm0udmFsdWUpfHwwPj1ifHxhPD1iP1UodGhpcy5GLGEpOlUodGhpcy5GLGIpfX07dmFyIEl3PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5OPWI7dGhpcy5tPWQ7dGhpcy5GPXRoaXMubCgpO3RoaXMuQT0yPT09Y3x8Mz09PWM7dGhpcy5DPVYodGhpcyxlKTt0aGlzLkQ9Vih0aGlzLGYpfTtfLkooSXcsWSk7SXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY3NH07SXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkMudmFsdWUsYj1Wayh0aGlzLnNsb3QuZ2V0U2xvdElkKCkpLGM9aWcoYSxmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PWJ9KSxkPWM/YzpRdih0aGlzLm0sYSxiLCEheCh0aGlzLk4sMTUpKTt0aGlzLkQudmFsdWUmJiF4KHRoaXMuTiwxNSkmJihkLnN0eWxlLmRpc3BsYXk9XCJpbmxpbmUtYmxvY2tcIik7dGhpcy5BP21vKHRoaXMuc2xvdCxmdW5jdGlvbigpe3JldHVybiB2b2lkIF8uZmcoZCl9KTpfLlIodGhpcyxmdW5jdGlvbigpe3JldHVybiB2b2lkIF8uZmcoZCl9KTtVKHRoaXMuRixkKX07dmFyIEp3PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vih0aGlzLGIpfTtfLkooSncsWSk7SncucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5OH07SncucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT13YSh0aGlzLm0udmFsdWUsdGhpcy5MKTtudWxsPT1hP0ZyKHRoaXMuRik6VSh0aGlzLkYsYSl9O3ZhciBLdz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5mb3JtYXQ9Yjt0aGlzLnNsb3Q9Yzt0aGlzLkw9ZDt0aGlzLkY9T3IodGhpcyk7dGhpcy5BPVcodGhpcyxlKTt0aGlzLkM9Vih0aGlzLGYpO3RoaXMuRD1WKHRoaXMsZyl9O18uSihLdyxZKTtLdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjgyfTtLdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGIoKXt2YXIgYz10aGlzLGQsZSxmLGcsaCxrO3JldHVybiBEYShiLGZ1bmN0aW9uKGwpe2lmKDE9PWwuailyZXR1cm4gZD1jLCgyPT09Yy5mb3JtYXR8fDM9PT1jLmZvcm1hdCkmJkhyKGMuQSkmJm9mKGMuQS52YWx1ZSk/RWEobCxfLmN3LkIoKS5sb2FkKF8uJHYpLDIpOmwucmV0dXJuKCk7ZT1sLm87Zj1lLlljO2lmKGMubGEpcmV0dXJuIGwucmV0dXJuKCk7Zz1fLllvKGMubSxjLnNsb3QpO2g9Yy5ELnZhbHVlO2s9Yy5DLnZhbHVlO18uWGcoayx7XCJtYXgtaGVpZ2h0XCI6XCIzMHZoXCIsb3ZlcmZsb3c6XCJoaWRkZW5cIn0pO0x3P0x3LkhkKGspOihMdz1uZXcgZihjLmZvcm1hdCxrLGMuTCxoLGMubSxjLnNsb3QpLEx3LndkKCksbW8oYy5zbG90LGZ1bmN0aW9uKCl7THcmJihMdy56YSgpLEx3PW51bGwpO2cmJl8uJG8oZC5tLGQuc2xvdCl9KSk7Xy5SKGMsZnVuY3Rpb24oKXtyZXR1cm4gXy5mZyhrKX0pO2MuRi5ub3RpZnkoKTtsLmo9MH0pfSl9O3ZhciBMdz1udWxsO3ZhciBNdz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLmhhPWI7dGhpcy5DPWM7dGhpcy5HPWQ7dGhpcy5WYT1lO3RoaXMuQT1mO3RoaXMubT1nO3RoaXMuRD1XKHRoaXMsaCl9O18uSihNdyxZKTtNdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzU4fTtNdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhLGI9cGEodGhpcy5zbG90LHRoaXMubSk7YiYmYi5zZXRBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1xdWVyeS1pZFwiLG51bGwhPT0oYT10aGlzLkQudmFsdWUpJiZ2b2lkIDAhPT1hP2E6XCJcIik7WWkodGhpcy5WYSxcIjVcIix0aGlzLnNsb3QubCk7YT10aGlzLnNsb3QuZ2V0U2xvdElkKCk7Xy55KDQxMik/UW8odGhpcy5BLENvLGEpOnRoaXMuc2xvdC5UYSgpO2I9Xy55KDEyMyk7dmFyIGM7aWYoXy5Zbyh0aGlzLkMsdGhpcy5zbG90KSl7dmFyIGQ9dGhpcy5oYSxlPWQuTjtkPWQuUlt0aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXTtiJiYodGhpcy5HJiZSYih0aGlzLnNsb3Qsd2luZG93LHRoaXMubSkscm8odGhpcy5zbG90KSk7KGJ8fCF1byh0aGlzLnNsb3QsdGhpcy5tKSkmJihudWxsIT09KGM9eChkLDEwKSkmJnZvaWQgMCE9PWM/Yzp4KGUsMTEpKSYmIV8ueSgzOTApJiZSYih0aGlzLnNsb3Qsd2luZG93LHRoaXMubSl9UW8odGhpcy5BLFBiLGEse2lzRW1wdHk6ITAsc2xvdENvbnRlbnRDaGFuZ2VkOmJ9KX07dmFyIE53PWZ1bmN0aW9uKGEsYixjLGQsZSl7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMubT1XKHRoaXMsYik7dGhpcy5DPVYodGhpcyxjKTt0aGlzLkE9Vih0aGlzLGQpO3RoaXMuRD1WKHRoaXMsZSl9O18uSihOdyxZKTtOdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzIxfTtOdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYixjLGQsZT10aGlzLm0udmFsdWUsZj1udWxsPT09KGI9bnVsbD09PWV8fHZvaWQgMD09PWU/dm9pZCAwOkIoZSwxKSl8fHZvaWQgMD09PWI/dm9pZCAwOmIudG9VcHBlckNhc2UoKTtlPW51bGw9PT0oYz1udWxsPT09ZXx8dm9pZCAwPT09ZT92b2lkIDA6QihlLDIpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy50b1VwcGVyQ2FzZSgpO2lmKGYmJmUpe3ZhciBnPXRoaXMuQy52YWx1ZSxoPXRoaXMuQS52YWx1ZSxrPXRoaXMuRC52YWx1ZSxsPWsuc3R5bGUuaGVpZ2h0LG09ay5zdHlsZS53aWR0aCxuPWsuc3R5bGUuZGlzcGxheSxxPWsuc3R5bGUucG9zaXRpb24sdz1taChnLmlkK1wiX3RvcFwiLGYpLHU9bWgoZy5pZCtcIl9ib3R0b21cIixlKTtfLlhnKHUse3Bvc2l0aW9uOlwicmVsYXRpdmVcIix0b3A6XCJjYWxjKDEwMHZoIC0gNDhweClcIn0pO2suYXBwZW5kQ2hpbGQodyk7ay5hcHBlbmRDaGlsZCh1KTtfLlhnKGgse3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCIyNHB4XCIsY2xpcDpcInJlY3QoMCwgYXV0bywgYXV0bywgMClcIix3aWR0aDpcIjEwMHZ3XCIsaGVpZ2h0OlwiY2FsYygxMDB2aCAtIDQ4cHgpXCJ9KTtfLlhnKGcse3Bvc2l0aW9uOlwiZml4ZWRcIix0b3A6XCIwXCIsaGVpZ2h0OlwiMTAwdmhcIn0pO18uWGcoayx7cG9zaXRpb246XCJyZWxhdGl2ZVwiLGRpc3BsYXk6KG51bGw9PT0oZD10aGlzLkwuc2NyZWVuLm9yaWVudGF0aW9uKXx8dm9pZCAwPT09ZD8wOmQuYW5nbGUpP1wibm9uZVwiOlwiYmxvY2tcIix3aWR0aDpcIjEwMHZ3XCIsaGVpZ2h0OlwiMTAwdmhcIn0pO3p1KHRoaXMsNzIyLHRoaXMuTCxcIm9yaWVudGF0aW9uY2hhbmdlXCIsZnVuY3Rpb24oKXt2YXIgQzsobnVsbD09PShDPWEuTC5zY3JlZW4ub3JpZW50YXRpb24pfHx2b2lkIDA9PT1DPzA6Qy5hbmdsZSk/Xy5YZyhrLHtkaXNwbGF5Olwibm9uZVwifSk6Xy5YZyhrLHtkaXNwbGF5OlwiYmxvY2tcIn0pfSk7Xy5SKHRoaXMsZnVuY3Rpb24oKXtfLmZnKHcpO18uZmcodSk7ay5zdHlsZS5wb3NpdGlvbj1xO2suc3R5bGUuaGVpZ2h0PWw7ay5zdHlsZS53aWR0aD1tO2suc3R5bGUuZGlzcGxheT1ufSl9fTt2YXIgT3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe1kuY2FsbCh0aGlzKTt0aGlzLmZvcm1hdD1hO3RoaXMubT1iO3RoaXMuRj1Pcih0aGlzKTt0aGlzLkE9Vyh0aGlzLGMpO3RoaXMuRD1WKHRoaXMsZCk7dGhpcy5HPVYodGhpcyxlKTt0aGlzLkM9Vyh0aGlzLGYpfTtfLkooT3csWSk7T3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4M307T3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBiKCl7dmFyIGM9dGhpcyxkLGUsZixnLGgsayxsLG0sbjtyZXR1cm4gRGEoYixmdW5jdGlvbihxKXtpZigxPT1xLmope2Q9Yy5BLnZhbHVlO2lmKCFkfHw1IT09Yy5mb3JtYXQpcmV0dXJuIHEucmV0dXJuKCk7ZT1jLkcudmFsdWU7Zj1jLkQudmFsdWU7cmV0dXJuIEVhKHEsXy5jdy5CKCkubG9hZChfLiR2KSwyKX1nPXEubztoPWcuYmQ7aWYoYy5sYSlyZXR1cm4gcS5yZXR1cm4oKTtrPW5ldyBfLnVyO2w9bmV3IGgod2luZG93LGYsZSxrLF8ueSg0MDEpJiZjLm0ud2lkdGg+Yy5tLmhlaWdodCxjLkMudmFsdWUpO18ud2goYyxsKTtsLkxjKCk7bT11ZihkLFZtLDEzKTtmb3IodmFyIHc9e30sdT1fLkYobSksQz11Lm5leHQoKTshQy5kb25lO0M9dS5uZXh0KCkpQz1DLnZhbHVlLHdbQihDLDEpXT1CKEMsMik7bj13O2wuQWMobik7Yy5GLm5vdGlmeSgpO3Euaj0wfSl9KX07dmFyIFB3PWZ1bmN0aW9uKCl7WS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5GPU9yKHRoaXMpfTtfLkooUHcsWSk7UHcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2M307UHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBiKCl7dmFyIGM9dGhpcztyZXR1cm4gRGEoYixmdW5jdGlvbihkKXtpZigxPT1kLmope3ZhciBlPVF3PzA6Xy5yYSgxNiksZj1fLnJhKDE3KTtlPU1hdGgubWF4KGUsZik7MDxlJiYoUXc9ITAsQ3UoZSkpO3JldHVybiBFYShkLFJ3KGMpLDIpfWMuRi5ub3RpZnkoKTtkLmo9MH0pfSl9O3ZhciBSdz1mdW5jdGlvbihhKXtyZXR1cm4gQ2EoYSxmdW5jdGlvbiBjKCl7dmFyIGQ7cmV0dXJuIERhKGMsZnVuY3Rpb24oZSl7ZD1fLnJhKDE4KTswPGQ/ZT1FYShlLFViKGQpLDApOl8ueSgxNjkpJiZubCgyKT9lPUVhKGUsVWIoMCksMCk6KGUuaj0wLGU9dm9pZCAwKTtyZXR1cm4gZX0pfSl9LFF3PSExO3ZhciBTdz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe1kuY2FsbCh0aGlzKTt0aGlzLkE9YTt0aGlzLm9hPWI7dGhpcy5tPW51bGw7dGhpcy5GPXRoaXMubCgpO0FyKHRoaXMubyxjKTt0aGlzLkQ9Vih0aGlzLGQpO3RoaXMuSD1WKHRoaXMsZSk7dGhpcy5HPVcodGhpcyxmKTt0aGlzLkM9Vyh0aGlzLGcpO3RoaXMuST1XKHRoaXMsaCl9O18uSihTdyxZKTtTdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjY2fTtTdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYixjPW5ldyBOajtIcih0aGlzLkMpJiYoRChjLDIsdGhpcy5DLnZhbHVlKSxEKGMsMywxKSk7dGhpcy5BJiYoYz1ZdihbdGhpcy5BLGNdKSk7Yz1YdihjKTt2YXIgZD1udWxsIT09KGI9dGhpcy5JLnZhbHVlKSYmdm9pZCAwIT09Yj9iOnZvaWQgMDtpZihudWxsPT1jfHwwPmN8fDA9PT1kKVUodGhpcy5GLCExKTtlbHNle3ZhciBlPXRoaXMuRC52YWx1ZSxmPXRoaXMuSC52YWx1ZTtudWxsIT1mJiZPayhmLHRoaXMub2EsYy8xMDApPyhrYihcImdwdF9lclwiLGZ1bmN0aW9uKGcpe3ZhciBoO0UoZyxcInFxaWRcIixudWxsIT09KGg9YS5HLnZhbHVlKSYmdm9pZCAwIT09aD9oOlwiXCIpfSx7dmE6Xy5yYSgyMCl9KSxVKHRoaXMuRiwhMSkpOl8ueSgxNDUpP1UodGhpcy5GLCExKTpUdyh0aGlzLGMsZCxlKX19O3ZhciBUdz1mdW5jdGlvbihhLGIsYyxkKXtzYShkKT8oYS5tPVZiKGIrXCIlXCIsRygyOTEsZnVuY3Rpb24oZSxmKXtlPV8uRihlKTtmb3IodmFyIGc9ZS5uZXh0KCk7IWcuZG9uZTtnPWUubmV4dCgpKWlmKGc9Zy52YWx1ZSwhKDA+PWcuaW50ZXJzZWN0aW9uUmF0aW8pKXtmLnVub2JzZXJ2ZShnLnRhcmdldCk7VShhLkYsITApO2JyZWFrfX0pKSxudWxsIT1jJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VShhLkYsITApO2EubSYmYS5tLmRpc2Nvbm5lY3QoKX0sYyksYS5tLm9ic2VydmUoZCksXy5SKGEsZnVuY3Rpb24oKXthLm0mJmEubS5kaXNjb25uZWN0KCl9KSk6VShhLkYsITEpfTt2YXIgVXc9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dGhpcy5MPWE7dGhpcy5tPWI7dGhpcy5GPXRoaXMubCgpfTtfLkooVXcsWSk7VXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcwNn07VXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT1OYSh0aGlzLm0sdGhpcy5MKTthP1UodGhpcy5GLGEpOkZyKHRoaXMuRil9O3ZhciBWdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLkE9YTt0aGlzLm09Yjt0aGlzLkM9Vyh0aGlzLGMpO3RoaXMuRD1WKHRoaXMsZCk7dGhpcy5HPVcodGhpcyxlKX07Xy5KKFZ3LFkpO1Z3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MTN9O1Z3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5HLnZhbHVlO2lmKCFKayh0aGlzLkMudmFsdWUpJiZhJiZ0aGlzLm0uZ2V0T3NlSWQoKSl7dmFyIGI9dGhpcy5ELnZhbHVlLGM9Q3QodGhpcy5tKTtjLnJlZ2lzdGVyQWRCbG9jayhcIj9laWQ9XCIra2ouQigpLmooKS5qb2luKFwiLFwiKStcIiZhZGs9XCIrdGhpcy5BLDMsXCJsZGpoXCIsYiwwLDAsRyh0aGlzLmlkKCksZnVuY3Rpb24oZCxlKXswPD1lJiZQbyhhLE1vLG51bGwse21iOmQsaW5WaWV3UGVyY2VudGFnZTplfSl9KSk7Xy5SKHRoaXMsZnVuY3Rpb24oKXt0cnl7Yy51bmxvYWRBZEJsb2NrKGIsITEsXy55KDEwMSkpfWNhdGNoKGQpe319KX19O3ZhciBXdz1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5vYT1iO3RoaXMubT1uZXcgVWY7dGhpcy5GPU9yKHRoaXMpO0FyKHRoaXMubyxjKTt0aGlzLkE9Vyh0aGlzLGQpfTtfLkooV3csWSk7V3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2NH07V3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKF8ueSgyMCkpe3ZhciBiPXRoaXMubS5qLGM9d24oYiksZD1mdW5jdGlvbigpe3ZhciBmPWEuQS52YWx1ZTtyZXR1cm4gbnVsbCE9ZiYmT2soZixhLm9hLDApfTtpZih4bihiKSYmYyYmKDA8dGhpcy5zbG90LkEtMXx8IWQoKSkmJmMpe3ZhciBlPXp1KHRoaXMsMzI0LGIsYyxmdW5jdGlvbigpe3huKGIpfHwoZSYmZSgpLGEuRi5ub3RpZnkoKSl9KTtpZihlKXJldHVybn19dGhpcy5GLm5vdGlmeSgpfTt2YXIgWXc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxtLG4pe2U9dm9pZCAwPT09ZT9uZXcgZG46ZTtmPXZvaWQgMD09PWY/XCJcIjpmO2c9dm9pZCAwPT09Zz9cIlwiOmc7aD12b2lkIDA9PT1oPy0xOmg7az12b2lkIDA9PT1rP25ldyB0azprO2w9dm9pZCAwPT09bD9uZXcgSTpsO209dm9pZCAwPT09bT9uZXcgbnA6bTtuPXZvaWQgMD09PW4/bmV3IGRyOm47WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuaGE9Yjt0aGlzLkM9Yzt0aGlzLnNhPWQ7dGhpcy5CYT1lO3RoaXMua2E9Zjt0aGlzLndhPWc7dGhpcy5DYT1oO3RoaXMuVmE9azt0aGlzLkFhPWw7dGhpcy5QPW07dGhpcy50YT1uO3RoaXMuZ2E9W107WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDQpfSk7dGhpcy5YPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw2KX0pO3RoaXMuZmE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDcpfSk7dGhpcy5wYT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsOCl9KTt0aGlzLkc9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDEwKX0pO1h3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwxNSl9KTt0aGlzLkQ9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDM0KX0pO3RoaXMubT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsQ2YsNDMpfSk7dGhpcy5BPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxlbiw0MSl9KTt0aGlzLkg9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDkpfSk7dGhpcy5NPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSwxMil9KTt0aGlzLlQ9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLEJmLDUwKX0pO3RoaXMuVz1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsWm0sNDgpfSk7dGhpcy5JPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxYbSwzOSl9KTt0aGlzLlY9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDM2KX0pO3RoaXMuTz1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsMTMpfSk7dGhpcy5hYT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsMyl9KTt0aGlzLks9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDQ5KX0pO3RoaXMuZGE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDI5KX0pO3RoaXMuZWE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gQihxLDMwKX0pO3RoaXMuWT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsYW4sNTEpfSk7dGhpcy5iYT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsNTIpfSl9O18uSihZdyxZKTt2YXIgWHc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ZLnByb3RvdHlwZS5sLmNhbGwoYSk7YS5nYS5wdXNoKHtGOmMsVmM6Yn0pO3JldHVybiBjfTtZdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzAwfTtZdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2lmKF8ueSg0MDQpKXt2YXIgYT10aGlzLmthO3ZhciBiPXRoaXMuc2xvdDt0aGlzLmlkKCk7dmFyIGM9SlNPTi5wYXJzZShhKTtjPVwib2JqZWN0XCI9PT10eXBlb2YgYz9jOm51bGw7dmFyIGQ9QmcoYyxpZCk7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkfHxudWxsPT09Y3x8dm9pZCAwPT09Y3x8IWNbZF0pdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGFkIHVuaXQgcGF0aDogXCIrZCk7aWYoIWIpdGhyb3cgRXJyb3IoXCJtaXNzaW5nIHNsb3Q6IFwiK2QpO2I9Y1tkXTtpZihBcnJheS5pc0FycmF5KGIpKWE9bmV3IGRuKGIuc2xpY2UoKSk7ZWxzZSB0aHJvdyBFcnJvcihcImRpY3Rpb25hcnkgbm90IGFuIGFycmF5OiBcIithKTtvbyh0aGlzLnNsb3QpO2I9dGhpcy5zbG90Lmw7Yz1CKGEsMzQpfHxcIlwiO3RoaXMuVmEuaiYmKF8uci5nb29nbGVfdGltaW5nX3BhcmFtcz1fLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXN8fHt9LF8uci5nb29nbGVfdGltaW5nX3BhcmFtc1tcInFxaWQuXCIrYl09Yyk7QihhLDI3KS5mb3JFYWNoKG1qKTtuaig0KTtadyh0aGlzLGEpOyR3KHRoaXMsYSl9ZWxzZSAkdyh0aGlzLHRoaXMuQmEpfTt2YXIgJHc9ZnVuY3Rpb24oYSxiKXthPV8uRihhLmdhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXt2YXIgZD1jLnZhbHVlO2M9ZC5GO2Q9ZC5WYztkPWQoYik7bnVsbCE9ZD9VKGMsZCk6RnIoYyl9fSxadz1mdW5jdGlvbihhLGIpe2RwKGEuQyxhLnNsb3QsYS53YSk7dmFyIGM9YS5oYS5SW2Euc2xvdC5nZXRTbG90RWxlbWVudElkKCldO2MmJih0byhhLnNsb3QsYikscW8oYS5zbG90LEIoYiwzMykpLFFvKGEuQWEsSm8sYS5zbG90LmdldFNsb3RJZCgpLGIpLG51bGwhPUIoYiwyMykmJkIoYiwyMykuZm9yRWFjaChmdW5jdGlvbihkKXtvcChhLlAsZCk7dmFyIGU9YS5QLGY9YS5zbG90O2UualtkXXx8KGUualtkXT1bXSk7ZS5qW2RdLnB1c2goZil9KSx1ZihiLCRtLDE0KS5sZW5ndGgmJmVyKGEudGEsdWYoYiwkbSwxNClbMF0sYS5zYSksXy55KDQyMik/VGsoYyxPKGIsQmYsNTApLCEheChiLDExKSkmJihfLlpvKGEuQyxhLnNsb3QpLFNrKE8oYixCZiw1MCkpJiZtbyhhLnNsb3QsZnVuY3Rpb24oKXtfLiRvKGEuQyxhLnNsb3QpfSkpOig0PT1nayhjKXx8NT09PWdrKGMpfHx4KGIsMTEpKSYmXy5abyhhLkMsYS5zbG90KSx4KGIsOCl8fGpvKGEuc2xvdCxhLkNhKSl9O3ZhciBheD1mdW5jdGlvbihhLGIpe1kuY2FsbCh0aGlzKTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVcodGhpcyxhKTt0aGlzLkE9Vih0aGlzLGIpfTtfLkooYXgsWSk7YXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDc2Mn07YXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT1Icih0aGlzLm0pO2E9dGhpcy5BLnZhbHVlP18ueSgyNjMpJiZEaygpJiZhPzI6Xy55KDI2NykmJkNrKCkmJmE/MzpfLnkoMjg2KSYmRGsoKSYmYT80OjE6MDtVKHRoaXMuRixhKX07dmFyIGJ4PWZ1bmN0aW9uKGEsYixjLGQsZSl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5oYT1iO3RoaXMubT1jO3RoaXMuQT1kO0FyKHRoaXMubyxlKX07Xy5KKGJ4LFkpO2J4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTZ9O2J4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztrdyh0aGlzLHRoaXMubSxcImNsb3NlZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgY3goYSl9KTtfLnkoNDE2KXx8a3codGhpcyx0aGlzLm0sXCJjYW5jZWxlZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgY3goYSl9KX07dmFyIGN4PWZ1bmN0aW9uKGEpe1FvKGEuQSxHbyxhLnNsb3RJZCxhLmhhKTthLnphKCl9O3ZhciBkeD1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90SWQ9YTt0aGlzLkE9Yjt0aGlzLm09YztBcih0aGlzLm8sZCl9O18uSihkeCxZKTtkeC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk3fTtkeC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7a3codGhpcyx0aGlzLkEsXCJjb21wbGV0ZWRcIixmdW5jdGlvbigpe1FvKGEubSxIbyxhLnNsb3RJZCk7YS56YSgpfSl9O3ZhciBleD1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90SWQ9YTt0aGlzLkE9Yjt0aGlzLm09YztBcih0aGlzLm8sZCl9O18uSihleCxZKTtleC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk0fTtleC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLnNsb3RJZCxjPXRoaXMubTtrdyh0aGlzLHRoaXMuQSxcImdyYW50ZWRcIixmdW5jdGlvbihkKXt2YXIgZTtRbyhjLEZvLGIsbnVsbCE9PShlPWQucGF5bG9hZCkmJnZvaWQgMCE9PWU/ZTpudWxsKTthLnphKCl9KX07dmFyIGZ4PXt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsbGVmdDpcIjBcIix0b3A6XCIwXCJ9LGd4PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLlVhPWI7dGhpcy5MPWM7dGhpcy5GPU9yKHRoaXMpO0FyKHRoaXMubyxkKX07Xy5KKGd4LFkpO2d4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTN9O2d4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPV8ueSgzNzQpJiYwPT09UmcoKT9cInJnYmEoMSwxLDEsMC41KVwiOlwid2hpdGVcIjtfLlhnKHRoaXMuVWEsXy5BKE9iamVjdCxcImFzc2lnblwiKS5jYWxsKE9iamVjdCx7XCJiYWNrZ3JvdW5kLWNvbG9yXCI6YixvcGFjaXR5OlwiMVwiLHBvc2l0aW9uOlwiZml4ZWRcIixtYXJnaW46XCIwXCIscGFkZGluZzpcIjBcIixcInotaW5kZXhcIjpcIjIxNDc0ODM2NDdcIixkaXNwbGF5OlwiYmxvY2tcIn0sZngpKTtfLlIodGhpcyxfLldyKHRoaXMuTC5kb2N1bWVudCx0aGlzLkwpKTtoZyh0aGlzLm0pLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHt0eXBlOlwicmV3YXJkZWRcIixtZXNzYWdlOlwidmlzaWJsZVwifSksXCIqXCIpO3RoaXMuTD09PXRoaXMuTC50b3AmJih0aGlzLkwubG9jYXRpb24uaGFzaD1cImdvb2dfcmV3YXJkZWRcIixfLlIodGhpcyxmdW5jdGlvbigpe1wiZ29vZ19yZXdhcmRlZFwiPT09YS5MLmxvY2F0aW9uLmhhc2gmJihhLkwubG9jYXRpb24uaGFzaD1cIlwiKX0pKTt0aGlzLkYubm90aWZ5KCl9O3ZhciBoeD1mdW5jdGlvbihhLGIsYyl7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuTD1iO0FyKHRoaXMubyxjKX07Xy5KKGh4LFkpO2h4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTV9O2h4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7aWYodGhpcy5MPT09dGhpcy5MLnRvcCl2YXIgYT1oZyh0aGlzLm0pLGI9enUodGhpcyw1MDMsdGhpcy5MLFwiaGFzaGNoYW5nZVwiLGZ1bmN0aW9uKGMpe0VkKGMub2xkVVJMLFwiI2dvb2dfcmV3YXJkZWRcIikmJihhLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHt0eXBlOlwicmV3YXJkZWRcIixtZXNzYWdlOlwiYmFja19idXR0b25cIn0pLFwiKlwiKSxiKCkpfSl9O3ZhciBpeD1mdW5jdGlvbihhLGIsYyl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5tPWI7dGhpcy5GPU9yKHRoaXMpO3RoaXMuQT1WKHRoaXMsYyl9O18uSihpeCxZKTtpeC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjkyfTtpeC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYixjPXRoaXMuQS52YWx1ZSxkPXRoaXMuc2xvdElkLGU9dGhpcy5tO18uUih0aGlzLE9iKGUsQm8sZCw2NzcsZnVuY3Rpb24oKXthLkYubm90aWZ5KCk7YS56YSgpfSkpO1FvKGUsRW8sZCx7bWFrZVJld2FyZGVkVmlzaWJsZTpqZChmdW5jdGlvbigpe1FvKGUsQm8sZCl9KSxwYXlsb2FkOm51bGwhPT0oYj1jLnBheWxvYWQpJiZ2b2lkIDAhPT1iP2I6bnVsbH0pfTt2YXIgang9e3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixsZWZ0OlwiMFwiLHRvcDpcIjBcIn0sa3g9e3dpZHRoOlwiNjAlXCIsaGVpZ2h0OlwiNjAlXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKC01MCUsIC01MCUpXCIsbGVmdDpcIjUwJVwiLHRvcDpcIjUwJVwifSxseD1mdW5jdGlvbihhLGIpe1kuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLkE9Yjt0aGlzLkY9dGhpcy5sKCl9O18uSihseCxZKTtseC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjkxfTtseC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1fLnkoMzc0KSYmMD09PVJnKCk7Xy5YZyh0aGlzLm0sXy5BKE9iamVjdCxcImFzc2lnblwiKS5jYWxsKE9iamVjdCx7cG9zaXRpb246XCJhYnNvbHV0ZVwifSxiP2t4Omp4KSk7a3codGhpcyx0aGlzLkEsXCJwcmVmZXRjaGVkXCIsZnVuY3Rpb24oYyl7cmV0dXJuIHZvaWQgVShhLkYsYyl9KX07dmFyIG14PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5oYT1iO3RoaXMuZm9ybWF0PWM7dGhpcy5MPWQ7dGhpcy5tPWU7dGhpcy5BPVYodGhpcyxmKTt0aGlzLkQ9Vyh0aGlzLGcpO3RoaXMuQz1WKHRoaXMsaCl9O18uSihteCxZKTtteC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjg4fTtteC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2lmKDQ9PT10aGlzLmZvcm1hdCl7dmFyIGE9dGhpcy5BLnZhbHVlLGI9dGhpcy5ELnZhbHVlLGM9dGhpcy5DLnZhbHVlO2lmKCFiKXRocm93IEVycm9yKFwibWlzc2luZyBtZXNzYWdlIGJ1cyBpbnB1dFwiKTt2YXIgZD1uZXcgd2I7Xy53aCh0aGlzLGQpO3ZhciBlPW5ldyBseChhLGIpO1goZCxlKTtlPW5ldyBpeCh0aGlzLnNsb3RJZCx0aGlzLm0sZS5GKTtYKGQsZSk7Yz1uZXcgZ3goYSxjLHRoaXMuTCxlLkYpO1goZCxjKTtYKGQsbmV3IGh4KGEsdGhpcy5MLGMuRikpO1goZCxuZXcgZXgodGhpcy5zbG90SWQsYix0aGlzLm0sZS5GKSk7WChkLG5ldyBieCh0aGlzLnNsb3RJZCx0aGlzLmhhLGIsdGhpcy5tLGUuRikpO1goZCxuZXcgZHgodGhpcy5zbG90SWQsYix0aGlzLm0sZS5GKSk7eWIoZCl9fTt2YXIgbng9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe1kuY2FsbCh0aGlzKTt0aGlzLk49YTt0aGlzLlI9Yjt0aGlzLkw9Yzt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVcodGhpcyxkKTt0aGlzLkE9Vyh0aGlzLGUpO3RoaXMuQz1XKHRoaXMsZil9O18uSihueCxZKTtueC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjY5fTtueC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhO2lmKCEoYT1Icih0aGlzLkEpKSl7YT10aGlzLlI7dmFyIGI9dGhpcy5MO2I9dm9pZCAwPT09Yj93aW5kb3c6YjthPSEhKHFqKDMpfHxhJiZudWxsIT1CKGEsMTYpJiZSayhcImdvb2dsZV9yYW5nZV9kZWJ1Z1wiLGIpKX1hP1UodGhpcy5GLCEwKTooYT0oSmsodGhpcy5tLnZhbHVlKT94KHRoaXMuUiwxMil8fHgodGhpcy5OLDEzKTohMSl8fCEhdGhpcy5DLnZhbHVlLFUodGhpcy5GLCEhYSkpfTt2YXIgb3g9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe1kuY2FsbCh0aGlzKTt0aGlzLk49YTt0aGlzLmNhPWI7dGhpcy5GPXRoaXMubCgpO3RoaXMuQz1WKHRoaXMsYyk7dGhpcy5tPVcodGhpcyxkKTt0aGlzLkE9Vyh0aGlzLGUpO3RoaXMuRD1XKHRoaXMsZil9O18uSihveCxZKTtveC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzE5fTtveC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMubS52YWx1ZSxiPXRoaXMuQy52YWx1ZTtpZigzPT09YiYmXy55KDM4OCkpVSh0aGlzLkYsZXQpO2Vsc2V7aWYoMT09PWImJl8ueSgzNTQpKXtpZihhPXRoaXMuRC52YWx1ZSxhPVFqKG5ldyBQaixhKSx4KGJvKFthLE8odGhpcy5OLFBqLDE4KSxPKHRoaXMuY2EsUGosMTMpXSksMykpe1UodGhpcy5GLF8ueSgzMzgpP2Z0OmN0KTtyZXR1cm59fWVsc2UgaWYoMD09PWImJmEmJl8ueSh0aGlzLkEudmFsdWU/MTM2OjEzNykpe1UodGhpcy5GLGN0KTtyZXR1cm59RnIodGhpcy5GKX19O3ZhciBweD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuY2E9Yjt0aGlzLkk9Yzt0aGlzLndpbmRvdz1kO3RoaXMuRz10aGlzLmwoKTt0aGlzLkE9dGhpcy5sKCk7dGhpcy5DPXRoaXMubCgpO3RoaXMubT1xaigzKS5zcGxpdChcIixcIik7dGhpcy5EPV8ucmooMyk7dGhpcy5IYT1udWxsIT1CKGIsMTYpP08oYixaaiwxNik6bnVsbDt0aGlzLkg9UWsoXCJnb29nbGVfcmFuZ2VfZGVidWdcIix0aGlzLndpbmRvdyk7dGhpcy5LPVcodGhpcyxlKTt0aGlzLlQ9Vyh0aGlzLGYpO3RoaXMuTT1XKHRoaXMsZyk7dGhpcy5PPVYodGhpcyxoKTt0aGlzLlA9Vih0aGlzLGspfTtfLkoocHgsWSk7cHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4MX07cHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYTtpZihhPSEhKHRoaXMubS5sZW5ndGh8fHRoaXMuSGEmJnRoaXMuSCkpe3ZhciBiO2I6aWYodGhpcy5tLmxlbmd0aCl7aWYodGhpcy5ELmxlbmd0aCYmKGE9dGhpcy5zbG90LmdldEFkVW5pdFBhdGgoKS5zcGxpdChcIi9cIiksIV8uQSh0aGlzLkQsXCJpbmNsdWRlc1wiKS5jYWxsKHRoaXMuRCxhW2EubGVuZ3RoLTFdKSkpe2E9ITE7YnJlYWsgYn1hPSEwfWVsc2UgYT0hMTt2YXIgYz1hO2E9Yz9xeCh0aGlzKTpudWxsO2lmKGMmJmEpe2M9dGhpcy5QLnZhbHVlO3ZhciBkPUlrKGMucGFyZW50RWxlbWVudCk7ZD1udWxsIT09KGI9bnVsbD09PWR8fHZvaWQgMD09PWQ/dm9pZCAwOmQud2lkdGgpJiZ2b2lkIDAhPT1iP2I6MDtiPVwicFwiPT09dGhpcy5tWzBdO3ZhciBlPU51bWJlcih0aGlzLm1bMF0pO2lmKGI9XCJmXCI9PT10aGlzLm1bMF0/dGhpcy5JOmUmJjA8ZT9lOmI/TWF0aC5taW4oZCx0aGlzLkkpOm51bGwpe2U9YS53aWR0aDt2YXIgZj1hLmhlaWdodCxnPXRoaXMubVsxXSxoPU51bWJlcihnKTtlPVwicmF0aW9cIj09PWcmJmU/TWF0aC5mbG9vcihmL2UqYik6aCYmMDxoP2YqaDpmO3J4KHRoaXMsYixlLHN4KGIsZSxcIjxwPlJlcXVlc3RlZCBzaXplOlwiK2Eud2lkdGgrXCJ4XCIrYS5oZWlnaHQrXCI8L3A+XCIpLGI8PWQ/MToyLGMpO2E9ITB9ZWxzZSBhPSExfWVsc2UgYT0hMTtpZighYSlhOmlmKHRoaXMuSGEmJnRoaXMuSCl7YT11dSh0aGlzLkhhLHRoaXMud2luZG93KTtjPXZ1KHRoaXMuSGEsdGhpcy53aW5kb3cpO2Q9d3UodGhpcy5IYSk7Yj14dSh0aGlzLkhhKTtzd2l0Y2godGhpcy5IKXtjYXNlIFwibWF4XCI6ZT1hO2Y9YzticmVhaztjYXNlIFwibWluXCI6ZT1kO2Y9YjticmVhaztjYXNlIFwiYmFubmVyXCI6ZT1hO2Y9OTA+Yz9jOjkwPGI/Yjo5MDticmVhaztjYXNlIFwic2t5c2NyYXBlclwiOmU9OTA+YT9hOjkwPGQ/ZDo5MDtmPWM7YnJlYWs7ZGVmYXVsdDphPSExO2JyZWFrIGF9cngodGhpcyxlLGYsc3goZSxmLFwiPHA+TWluaW11bSBzaXplOlwiK2QrXCJ4XCIrYitcIjwvcD48cD5NYXhpbXVtIHNpemU6XCIrKGErXCJ4XCIrYytcIjwvcD48ZGl2IGlkPXRvb3dpZGUgc3R5bGU9XFxcImRpc3BsYXk6bm9uZTsgYmFja2dyb3VuZDojZmFhXFxcIj5TbG90IGRvZXMgbm90IGZpdCBob3Jpem9udGFsbHk8c2NyaXB0Pm5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZSkgPT4ge3Rvb3dpZGUuc3R5bGUuZGlzcGxheSA9ICAgKGVbZS5sZW5ndGgtMV0uYm91bmRpbmdDbGllbnRSZWN0LndpZHRoID4gICAgZVtlLmxlbmd0aC0xXS5pbnRlcnNlY3Rpb25SZWN0LndpZHRoKSA/ICdibG9jaycgOiAnbm9uZSc7fSx7dGhyZXNob2xkOjF9KS5vYnNlcnZlKGRvY3VtZW50LmJvZHkpO1xceDNjL3NjcmlwdD48L2Rpdj5cIikpKTthPSEwfWVsc2UgYT0hMX1pZighYSl7YT10aGlzLlQudmFsdWU7aWYobnVsbD09YSl0aHJvdyBFcnJvcihcIk1pc3NpbmcgJ3dpZHRoJy5cIik7Yz10aGlzLk0udmFsdWU7aWYobnVsbD09Yyl0aHJvdyBFcnJvcihcIk1pc3NpbmcgJ2hlaWdodCcuXCIpO2Q9dGhpcy5PLnZhbHVlO2lmKG51bGw9PWQpdGhyb3cgRXJyb3IoXCJNaXNzaW5nICdodG1sSW5wdXQnLlwiKTtyeCh0aGlzLGEsYyxkKX19O3ZhciBxeD1mdW5jdGlvbihhKXthPXhhKGEuY2EpWzBdO3JldHVybiBBcnJheS5pc0FycmF5KGEpJiZhLmV2ZXJ5KGZ1bmN0aW9uKGIpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYn0pP25ldyBfLlRmKGFbMF0sYVsxXSk6bnVsbH0sc3g9ZnVuY3Rpb24oYSxiLGMpe3JldHVybic8aHRtbD48Ym9keSBzdHlsZT1cImhlaWdodDonKyhiLTIrXCJweDt3aWR0aDpcIisoYS0yKydweDtiYWNrZ3JvdW5kLWNvbG9yOiNkZGQ7Y29sb3I6IzAwMDtib3JkZXI6MXB4IHNvbGlkICNmMDA7XCI+JykpK2MrKFwiPHA+UmVuZGVyZWQgc2l6ZTpcIithK1wieFwiK2IrXCI8L3A+PC9ib2R5PjwvaHRtbD5cIil9LHJ4PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtlPXZvaWQgMD09PWU/YS5LLnZhbHVlOmU7VShhLkEsbmV3IF8uVGYoYixjKSk7VShhLkcsZCk7bnVsbD09ZT9GcihhLkMpOlUoYS5DLGUpO2YmJl8uY2koZixcIm9wYWNpdHlcIiwuNSl9O3ZhciB0eD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5VYT1iO3RoaXMuQT1jO3RoaXMuQz1kO3RoaXMuRD1lO3RoaXMubT1mO3RoaXMuRz1nO3RoaXMuRj10aGlzLmwoKX07Xy5KKHR4LFkpO3R4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NzN9O3R4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZihudWxsIT10aGlzLlVhKXV4KHRoaXMsdGhpcy5VYSksVSh0aGlzLkYsdGhpcy5VYSk7ZWxzZSBpZihzayh0aGlzLm0pKVUodGhpcy5GLHZ4KHRoaXMpKTtlbHNle3ZhciBiPVNvKHRoaXMuRyxBbyx0aGlzLmlkKCksZnVuY3Rpb24oYyl7Yy5pZD09PWEuQSYmKGIoKSx1eChhLGMpLFUoYS5GLGMpKX0pO18uUih0aGlzLGIpfX07dmFyIHZ4PWZ1bmN0aW9uKGEpe3ZhciBiPV8uZWcoZG9jdW1lbnQsXCJJTlNcIik7Yi5pZD1hLkE7Xy5YZyhiLHtkaXNwbGF5Olwibm9uZVwifSk7YS5ELmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChiKTsyPT09YS5tfHwzPT09YS5tP21vKGEuc2xvdCxmdW5jdGlvbigpe3JldHVybiB2b2lkIF8uZmcoYil9KTpfLlIoYSxmdW5jdGlvbigpe3JldHVybiB2b2lkIF8uZmcoYil9KTtyZXR1cm4gYn0sdXg9ZnVuY3Rpb24oYSxiKXtpZigyIT09YS5tJiYzIT09YS5tKXt2YXIgYz1fLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksYi5jaGlsZE5vZGVzKTtjPV8uRihjKTtmb3IodmFyIGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWQ9ZC52YWx1ZSwxPT09ZC5ub2RlVHlwZSYmZC5pZCE9PWEuQyYmXy5mZyhkKTtfLnkoMzg5KT9iLnN0eWxlLmRpc3BsYXk9XCJmbGV4XCI6TmIoYiwhMCl9fTt2YXIgd3g9ZnVuY3Rpb24oYSl7WS5jYWxsKHRoaXMpO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vih0aGlzLGEpfTtfLkood3gsWSk7d3gucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY3Nn07d3gucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT11YSh0aGlzLm0udmFsdWUpO1UodGhpcy5GLGEpfTt2YXIgeHg9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dmFyIGM9dGhpczt0aGlzLnNsb3Q9YTt0aGlzLm09Yjt0aGlzLkY9dGhpcy5sKCk7dGhpcy5BPWpkKGZ1bmN0aW9uKCl7Yy5zbG90Lm1iKCk7UW8oYy5tLERvLGMuc2xvdC5nZXRTbG90SWQoKSl9KTt0aGlzLkM9a2QoZnVuY3Rpb24oKXt2YXIgZD1jLmluVmlld1BlcmNlbnRhZ2U7UW8oYy5tLExvLGMuc2xvdC5nZXRTbG90SWQoKSxkKX0sMjAwKX07Xy5KKHh4LFkpO3h4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MTR9O3h4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPW5ldyBJLGM9U28oYixNbyx0aGlzLmlkKCksZnVuY3Rpb24oZCl7dmFyIGU9ZC5pblZpZXdQZXJjZW50YWdlO2QubWImJmEuQSgpO3ZvaWQgMD09PWV8fGlzTmFOKGUpfHwoZT1NYXRoLmZsb29yKGUpLGEuaW5WaWV3UGVyY2VudGFnZSE9PWUmJihhLmluVmlld1BlcmNlbnRhZ2U9ZSxhLkMoKSkpfSk7Xy5SKHRoaXMsYyk7VSh0aGlzLkYsYil9O3ZhciB5eD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbixxLHcsdSxDLFEsTixILHFhLG9iLHdjLHhjLG9oLFp6LCR6LGFBLGJBLGNBLGRBLGVBLGZBKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5IPWI7dGhpcy5oYT1jO3RoaXMudWE9ZDt0aGlzLmdhPWU7dGhpcy5vYT1mO3RoaXMuYmE9Zzt0aGlzLlg9aDt0aGlzLlZhPWs7dGhpcy5EPWw7dGhpcy5BPW07dGhpcy5MPW47dGhpcy5tPXE7dGhpcy5HPXc7dGhpcy5DPXU7dGhpcy5LPUM7dGhpcy5UPVE7dGhpcy5wYT1OO3RoaXMuc2E9SDt0aGlzLmFhPXFhO3RoaXMudGE9b2I7dGhpcy5PPXdjO3RoaXMuST14Yzt0aGlzLlY9b2g7dGhpcy5mYT1aejt0aGlzLlA9JHo7dGhpcy5rYT1hQTt0aGlzLk09YkE7dGhpcy5kYT1jQTt0aGlzLlk9ZEE7dGhpcy5lYT1lQTt0aGlzLlc9Vih0aGlzLGZBKX07Xy5KKHl4LFkpO3l4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3NTd9O3l4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IHdiO18ud2godGhpcyxhKTtpZih0aGlzLlcudmFsdWV8fFJrKFwiZ29vZ2xlX25vcmVuZGVyXCIpKXt2YXIgYj1uZXcgTXcodGhpcy5zbG90LHRoaXMuaGEsdGhpcy5ILHRoaXMuZ2EsdGhpcy5WYSx0aGlzLkQsdGhpcy5BLHRoaXMuRyk7WChhLGIpfWVsc2V7Yj10aGlzLmhhO3ZhciBjPWIuTixkPWIuUjtiPXRoaXMuc2xvdC5nZXRTbG90RWxlbWVudElkKCk7dmFyIGU9ZFtiXSxmPWdrKGUpLGc9dGhpcy5zbG90LmdldFNsb3RJZCgpLGg9bmV3IFV3KHRoaXMuTC50b3AsdGhpcy5iYSk7WChhLGgpO3ZhciBrPW5ldyBQdztYKGEsayk7Yj1uZXcgdHgodGhpcy5zbG90LHBhKHRoaXMuc2xvdCx0aGlzLkEpLGIsVmsodGhpcy5zbG90LmdldFNsb3RJZCgpKSx0aGlzLkEsZix0aGlzLkQpO1goYSxiKTt2YXIgbD1uZXcgRncodGhpcy51YSx0aGlzLm0sdGhpcy5DLHRoaXMuSyx0aGlzLlQpO1goYSxsKTt2YXIgbT1uZXcgbngoYyxlLHRoaXMuTCx0aGlzLm0sdGhpcy5DLHRoaXMuVCk7WChhLG0pO2Q9bmV3IEl3KHRoaXMuc2xvdCxjLGYsdGhpcy5BLGIuRixtLkYpO1goYSxkKTt2YXIgbj1uZXcgd3goZC5GKTtYKGEsbik7az1uZXcgV3codGhpcy5zbG90LHRoaXMub2Esay5GLG4uRik7WChhLGspO2s9bmV3IFN3KE8oYyxOaiw1KSx0aGlzLm9hLGsuRixkLkYsbi5GLHRoaXMuRyx0aGlzLnBhLHRoaXMuc2EpO1goYSxrKTtuPW5ldyBIdyhmLHRoaXMub2EuaGVpZ2h0LHRoaXMuTSx0aGlzLk8pO1goYSxuKTtsPW5ldyBweCh0aGlzLnNsb3QsZSx0aGlzLm9hLndpZHRoLHRoaXMuTCx0aGlzLmFhLHRoaXMudGEsdGhpcy5PLGwubSxiLkYpO1goYSxsKTtuPW5ldyBKdyh0aGlzLkwsYi5GKTtYKGEsbik7bj1uZXcgeHcodGhpcy5BLHRoaXMuc2xvdCxlLHRoaXMub2EsdGhpcy5JLGIuRixkLkYsbC5BLGwuQyxuLkYpO1goYSxuKTttPW5ldyBheCh0aGlzLm0sbS5GKTtYKGEsbSk7Yz1uZXcgb3goYyxlLG0uRix0aGlzLm0sdGhpcy5LLHRoaXMuVik7WChhLGMpO2M9bmV3IHd3KHRoaXMuc2xvdCx0aGlzLkgsdGhpcy5oYSx0aGlzLkwsbC5HLGsuRixiLkYsZC5GLGwuQSxtLkYsdGhpcy5tLHRoaXMuQyx0aGlzLkcsdGhpcy5JLHRoaXMuVixjLkYsdGhpcy5LLHRoaXMuZmEsdGhpcy5QLHRoaXMua2Esbi5GKTtYKGEsYyk7ZT1uZXcgS3codGhpcy5ILGYsdGhpcy5zbG90LHRoaXMuTCx0aGlzLk0sYy5tLGIuRik7WChhLGUpO2g9bmV3IE93KGYsdGhpcy5vYSx0aGlzLmRhLGMubSxiLkYsaC5GKTtYKGEsaCk7aD1uZXcgRHcodGhpcy5MLHRoaXMubSxjLm0sYy5BLGMuSCk7WChhLGgpO2g9bmV3IEd3KHRoaXMuTCxnLFJnKCksdGhpcy5ELHRoaXMuWSxjLm0pO1goYSxoKTtmPW5ldyBteChnLHRoaXMuaGEsZix0aGlzLkwsdGhpcy5ELGMubSxjLkMsYi5GKTtYKGEsZik7Zj1uZXcgeHgodGhpcy5zbG90LHRoaXMuRCk7WChhLGYpO2c9bmV3IFZ3KHRoaXMuc2xvdC4kYSx0aGlzLlgsdGhpcy5tLGMubSxmLkYpO1goYSxnKTtnPW5ldyB6dyh0aGlzLkcsdGhpcy5JLHRoaXMuQyx0aGlzLm0sdGhpcy5QLGMubSxkLkYsYy5BLGMuRyxjLkkpO1goYSxnKTtmPW5ldyB5dyhmLkYsdGhpcy5DLHRoaXMubSxjLkQpO1goYSxmKTtiPW5ldyBOdyh0aGlzLkwsdGhpcy5lYSxjLm0sZC5GLGIuRik7WChhLGIpfXliKGEpfTt2YXIgeng9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IHQuTWFwfSxBeD1mdW5jdGlvbihhLGIpe3ZhciBjO2ImJihudWxsPT09KGM9YS5qLmdldChiKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuemEoKSxhLmouZGVsZXRlKGIpKX0sQng9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe0F4KGEsYik7dmFyIGw9bmV3IHdiLG09eGkoITAsd2luZG93KSxuPWUuTixxPWUuUltiLmdldFNsb3RFbGVtZW50SWQoKV07Zj1uZXcgWXcoYixlLGMsayxmKTtYKGwsZik7dmFyIHc9bmV3IFV3KHdpbmRvdy50b3Asayk7WChsLHcpO3ZhciB1PW5ldyBQdztYKGwsdSk7az1uZXcgdHgoYixwYShiLGgpLGIuZ2V0U2xvdEVsZW1lbnRJZCgpLFZrKGIuZ2V0U2xvdElkKCkpLGgsZ2socSksSS5CKCkpO1gobCxrKTt2YXIgQz1uZXcgRncoZyxmLm0sZi5BLGYuSCxmLk0pO1gobCxDKTt2YXIgUT1uZXcgbngobixxLHdpbmRvdyxmLm0sZi5BLGYuTSk7WChsLFEpO2c9bmV3IEl3KGIsbixnayhxKSxoLGsuRixRLkYpO1gobCxnKTt2YXIgTj1uZXcgd3goZy5GKTtYKGwsTik7dT1uZXcgV3coYixtLHUuRixOLkYpO1gobCx1KTt1PW5ldyBTdyhPKG4sTmosNSksbSx1LkYsZy5GLE4uRixmLkQsZi5kYSxmLmVhKTtYKGwsdSk7Tj1uZXcgSHcoZ2socSksbS5oZWlnaHQsZi5JLGYuWCk7WChsLE4pO0M9bmV3IHB4KGIscSxtLndpZHRoLHdpbmRvdyxmLlYsZi5mYSxOLkYsQy5tLGsuRik7WChsLEMpO049bmV3IEp3KHdpbmRvdyxrLkYpO1gobCxOKTtoPW5ldyB4dyhoLGIscSxtLGYuRyxrLkYsZy5GLEMuQSxDLkMsTi5GKTtYKGwsaCk7bT1uZXcgYXgoZi5tLFEuRik7WChsLG0pO249bmV3IG94KG4scSxtLkYsZi5tLGYuSCxmLk8pO1gobCxuKTtuPW5ldyB3dyhiLGMsZSx3aW5kb3csQy5HLHUuRixrLkYsZy5GLEMuQSxtLkYsZi5tLGYuQSxmLkQsZi5HLGYuTyxuLkYsZi5ILGYuYWEsZi5LLGYuYmEsaC5GKTtYKGwsbik7Yz1uZXcgS3coYyxnayhxKSxiLHdpbmRvdyxmLkksbi5tLGsuRik7WChsLGMpO2M9bmV3IE93KGdrKHEpLGUub2EsZi5XLG4ubSxrLkYsdy5GKTtYKGwsYyk7Yz1uZXcgRHcod2luZG93LGYubSxuLm0sbi5BLG4uSCk7WChsLGMpO2M9bmV3IEd3KHdpbmRvdyxiLmdldFNsb3RJZCgpLFJnKCksSS5CKCksZi5ULG4ubSk7WChsLGMpO2U9bmV3IG14KGIuZ2V0U2xvdElkKCksZSxnayhxKSx3aW5kb3csSS5CKCksbi5tLG4uQyxrLkYpO1gobCxlKTtlPW5ldyB4eChiLEkuQigpKTtYKGwsZSk7ZD1uZXcgVncoYi4kYSxkLGYubSxuLm0sZS5GKTtYKGwsZCk7ZD1uZXcgencoZi5ELGYuRyxmLkEsZi5tLGYuSyxuLm0sZy5GLG4uQSxuLkcsbi5JKTtYKGwsZCk7ZD1uZXcgeXcoZS5GLGYuQSxmLm0sbi5EKTtYKGwsZCk7Zj1uZXcgTncod2luZG93LGYuWSxuLm0sZy5GLGsuRik7WChsLGYpO2Euai5zZXQoYixsKTtfLlIoYixmdW5jdGlvbigpe0F4KGEsYil9KTtfLnkoMzM2KSYmbG8oYixmdW5jdGlvbigpe0F4KGEsYil9KTt5YihsKX0sQ3g9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxtLG4scSx3KXtBeChhLGIpO3ZhciB1PW5ldyB3YjtrPW5ldyBZdyhiLGUsYyxoLG5ldyBkbixrLGwsbSx0ay5CKCksSS5CKCkscSx3KTtYKHUsayk7Yz1uZXcgeXgoYixjLGUsZixuLHhpKCEwLHdpbmRvdyksaCxkLHRrLkIoKSxJLkIoKSxnLHdpbmRvdyxrLm0say5ELGsuQSxrLkgsay5NLGsuZGEsay5lYSxrLlYsay5mYSxrLlgsay5HLGsuTyxrLmFhLGsuSyxrLmJhLGsuSSxrLlcsay5ULGsuWSxrLnBhKTtYKHUsYyk7eWIodSk7YS5qLnNldChiLHUpO18uUihiLGZ1bmN0aW9uKCl7QXgoYSxiKX0pO18ueSgzMzYpJiZsbyhiLGZ1bmN0aW9uKCl7QXgoYSxiKX0pfTt2YXIgRHg9ZnVuY3Rpb24oYSxiLGMpe3RoaXMudXJsPWE7dGhpcy5sPWI7dGhpcy53aXRoQ3JlZGVudGlhbHM9Yzt0aGlzLm89MDt0aGlzLnY9ITE7dGhpcy5qPW5ldyBYTUxIdHRwUmVxdWVzdH0sR3g9ZnVuY3Rpb24oYSl7YS5qLm9wZW4oXCJHRVRcIixhLnVybCk7YS5qLndpdGhDcmVkZW50aWFscz1hLndpdGhDcmVkZW50aWFscztfLnkoMzEyKSYmdXQoYS5qKTthLmoub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7RXgoYSwhMSl9O2Euai5vbmxvYWQ9ZnVuY3Rpb24oKXtFeChhLCEwKX07YS5qLm9uZXJyb3I9ZnVuY3Rpb24oKXtGeChhLmwsRXJyb3IoXCJYSFIgZXJyb3JcIikpfTthLmouc2VuZCgpfSxFeD1mdW5jdGlvbihhLGIpe3RyeXtpZigzPT09YS5qLnJlYWR5U3RhdGV8fDQ9PT1hLmoucmVhZHlTdGF0ZSlpZigzMDA8PWEuai5zdGF0dXMpYS52fHxGeChhLmwsRXJyb3IoXCJ4aHJfZXJyLVwiK2Euai5zdGF0dXMpKSxhLnY9ITA7ZWxzZXt2YXIgYz1hLmoucmVzcG9uc2VUZXh0LnN1YnN0cihhLm8pO2lmKGMpe3ZhciBkPWEubDtpZihjKWlmKDEhPT1kLmomJjIhPT1kLmopRngoZCxFcnJvcihcInN0YXRlIGVycjogKFwiKyhbZC5qLGQubC5sZW5ndGhdLmpvaW4oKStcIilcIikpKTtlbHNle2QubCYmKGM9ZC5sK2MpO3ZhciBlPTAsZj0hMTtkb3t2YXIgZz1jLmluZGV4T2YoXCJcXG5cIixlKTtmPS0xIT09ZztpZighZilicmVhazt2YXIgaD1kLGs9Yy5zdWJzdHIoZSxnLWUpO2lmKDE9PT1oLmopaC52PWssKytoLm8saC5qPTI7ZWxzZXt0cnl7aC5tKGgubyxoLnYsaWgoaykpLGgudj1cIlwifWNhdGNoKG0pe31oLmo9MX1lPWcrMX13aGlsZShmJiZlPGMubGVuZ3RoKTtkLmw9Yy5zdWJzdHIoZSl9fWEubz1hLmoucmVzcG9uc2VUZXh0Lmxlbmd0aDtpZihiJiY0PT09YS5qLnJlYWR5U3RhdGUpe3ZhciBsPWEubDsxIT09bC5qfHxsLmw/RngobCxFcnJvcihcInN0YXRlIGVyciAoXCIrKFtsLmosbC5sLmxlbmd0aF0uam9pbigpK1wiKVwiKSkpOihsLmo9MyxsLkMoKSl9fX1jYXRjaChtKXtGeChhLmwsbSl9fTt2YXIgSHg9ZnVuY3Rpb24oYSxiLGMpe3RoaXMubT1hO3RoaXMuQT1iO3RoaXMuQz1jO3RoaXMudj1cIlwiO3RoaXMubz0tMTt0aGlzLmo9MTt0aGlzLmw9XCJcIn0sRng9ZnVuY3Rpb24oYSxiKXthLmo9NDt0cnl7YS5BKGIpfWNhdGNoKGMpe319O3ZhciBJeD1mdW5jdGlvbigpe2lmKGJlKCkpe2lmKF8ueSgxMDkpJiYwPD1QZChkZSgpLDEyKSlyZXR1cm4hMTtpZigwPD1QZChkZSgpLDExKSlyZXR1cm4hMH1lbHNlIGlmKCRkKCkmJjA8PVBkKGRlKCksNjUpKXJldHVybiEwO3JldHVybiExfSxKeD1mdW5jdGlvbihhLGIpe18ueSgyMDApP2IoKTpJeCgpP3FyKEcoYSxiKSk6KF8ueSgyMzkpJiZxcihudWxsKSxiKCkpfSxLeD1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihjKXtmYShfLnIudG9wLFwiZ29vZ2xlZmNMb2FkZWRcIik/YygpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKEcoNjc4LGMpKX0sMjApfTtwaCgpJiZfLnkoMzAyKT9iKGEpOmEoKX0sTHg9ZnVuY3Rpb24oYSl7dmFyIGI9cGgoKTtfLnIuZ29vZ2xlZmMmJiFiJiZrYihcImdwdF9mY19oYXNfbmFtZXNwYWNlX2J1dF9ub19pZnJhbWVzXCIsZnVuY3Rpb24oYyl7bGIoYyk7RShjLFwibmV0d29ya0lkXCIsYSl9LHt2YToxfSl9LE14PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1fLkRqKDIyMSksZT1hLmoubGVuZ3RoP2EualswXS5tOlwiXCI7YT12b2lkIDA7Xy55KDM3MykmJihhPSEoIWJ8fCF4KGIsOCkpLGI9aWEoKSwhYSYmYiYma2IoXCJncHRfbnBhX3VzZXNfaWZyYW1lX25vdF9hcGlcIixmdW5jdGlvbihmKXtsYihmKTtFKGYsXCJuZXR3b3JrSWRcIixlKX0se3ZhOjF9KSk7dGgoZCxlLEcoNDUxLGMpLGEpfSxOeD1mdW5jdGlvbihhLGIpe2E9bmV3IG5zKF8uY2coYSkpO18ueSgyNzQpJiZwcyhhKT8oamwuQigpLmluZm8oTW0oKSksc3MoYSxHKDY2MSxmdW5jdGlvbihjKXtiKGMpfSkpKTpiKG51bGwpfSxPeD1mdW5jdGlvbihhLGIpe2E9bmV3IFlyKF8uY2coYSkpO2lmKCRyKGEpKXt2YXIgYz1HKDY2MCxmdW5jdGlvbihkKXtkJiZcInN0cmluZ1wiPT09dHlwZW9mIGQudXNwU3RyaW5nP2IoZC51c3BTdHJpbmcpOmIobnVsbCl9KTtqbC5CKCkuaW5mbyhMbSgpKTticyhhLGMpfWVsc2UgYihudWxsKX0sUHg9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9MUUzKl8ucmEoNDcsMSksZj1mdW5jdGlvbihnKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLnJvdW5kKChlLShhLWcpKS8xRTMpKX07ZD1fLnkoNDIxKT9kLmdldChiLmdldFNsb3RJZCgpKXx8bnVsbDpiLlk7aWYobnVsbD09PWQpcmV0dXJuIDA7c3dpdGNoKF8ucmEoYi5pc0JhY2tmaWxsKCk/NTI6NDYpKXtjYXNlIDA6cmV0dXJuIGYoZCk7Y2FzZSAxOnJldHVybiBfLnkoNDEyKT8oYj1ncChjLGIpKT9mKGIpOi0xOihiPWIuUCk/ZihiLmdldFRpbWVzdGFtcCgpLmdldFRpbWUoKSk6LTE7Y2FzZSAyOnJldHVybiBfLnkoNDEyKT8oYj1ocChjLGIpKT9mKGIpOi0xOihiPWIuRyk/ZihiKTotMX1yZXR1cm4gMH0sUXg9ZnVuY3Rpb24oYSl7YS5sZW5ndGgmJihhPWFbMF0sWWkodGsuQigpLFwiM1wiLGEubCkpfSxSeD1mdW5jdGlvbihhKXthPWEgaW5zdGFuY2VvZiBFcnJvcj9hOkVycm9yKCk7YS5tZXNzYWdlPWEubWVzc2FnZXx8XCJzdHJtX2VyclwiO2NsKDI4OSxhLCEwKX0sU3g9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5OaSgpO2E9Xy5GKGEpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpYy52YWx1ZS5ZPWJ9LFR4PWZ1bmN0aW9uKGEsYil7aWYoXy55KDE3NykpcmV0dXJuITE7YT14KGEsMTEpO251bGw9PWEmJihhPXgoYiwxMCkpO3JldHVybiEhYX0sVXg9bnVsbCxWeD1udWxsLFd4PWZ1bmN0aW9uKCl7dmFyIGE9V28oKTt2YXIgYj1WeD1WeHx8bmV3IGRyO3RoaXMuaj1hO3RoaXMuRz1iO3RoaXMuSz1ucC5CKCk7dGhpcy52PW5ldyB0Lk1hcDt0aGlzLmw9bmV3IHQuTWFwO3RoaXMuQz1uZXcgdC5NYXA7dGhpcy5JPUdiKHRoaXMuSSk7dGhpcy5tPUcoMjkxLHRoaXMubSk7dGhpcy5YPVJrKFwiZ29vZ2xlX25vZmV0Y2hcIik7dGhpcy5ZPVJrKFwiZ29vZ2xlX25vcmVuZGVyXCIpO3RoaXMuRD1OYU47dGhpcy5VPW5ldyBCdDt0aGlzLlc9MDt0aGlzLk89YmIoXy5yKTt0aGlzLlY9e307dGhpcy5UPXRoaXMuUD1OYU47dGhpcy5BPXt9O3RoaXMubz17fTt0aGlzLk09bmV3IHp4O3RoaXMuSD1HKDY0Myx0aGlzLkgpfSwkdD1mdW5jdGlvbigpe3JldHVybiBVeD1VeHx8bmV3IFd4fSxZeD1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9ZC5zbG90O2Q9ZC5jYTtpZihfLllvKGEuaixnKSl7aWYoZSl7dmFyIGg9e307aFtnLmdldFNsb3RFbGVtZW50SWQoKV09ZDtYeChhLFtnXSxmLGgpfWlmKGV8fCF1byhnLGMpKWE9eChkLDEwKSxudWxsPT1hJiYoYT14KGYsMTEpKSxhJiYhXy55KDM5MCkmJlJiKGcsYixjKX19LFp4PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtkcChhLmosYixlLndhKTtpZihmPWYuUltiLmdldFNsb3RFbGVtZW50SWQoKV0pdG8oYixkKSxfLnkoNDE4KXx8cW8oYixCKGQsMzMpKSxRbyhJLkIoKSxKbyxiLmdldFNsb3RJZCgpLGQpLG51bGwhPUIoZCwyMykmJkIoZCwyMykuZm9yRWFjaChmdW5jdGlvbihnKXtvcChhLkssZyk7dmFyIGg9YS5LO2gualtnXXx8KGgualtnXT1bXSk7aC5qW2ddLnB1c2goYil9KSx1ZihkLCRtLDE0KS5sZW5ndGgmJmVyKGEuRyx1ZihkLCRtLDE0KVswXSxjKSxfLnkoNDIyKT9UayhmLE8oZCxCZiw1MCksISF4KGQsMTEpKSYmKF8uWm8oYS5qLGIpLFNrKE8oZCxCZiw1MCkpJiZtbyhiLGZ1bmN0aW9uKCl7Xy4kbyhhLmosYil9KSk6KDQ9PWdrKGYpfHw1PT1nayhmKXx8eChkLDExKSkmJl8uWm8oYS5qLGIpLHgoZCw4KXx8am8oYixIdChlLGIpKX07V3gucHJvdG90eXBlLkk9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2I9dm9pZCAwPT09Yj8hMTpiO3JldHVybiBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihkLGUpe3JldHVybiBjLm0oZCxlLGIpfSx7cm9vdE1hcmdpbjphfSk6bmV3IE1iKGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGMubShkLGUsYil9LHtyb290TWFyZ2luOmF9KX07V3gucHJvdG90eXBlLm09ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7Yz12b2lkIDA9PT1jPyExOmM7YS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGN8fCEoMD49ZS5pbnRlcnNlY3Rpb25SYXRpbykpe2IudW5vYnNlcnZlKGUudGFyZ2V0KTtlPWUudGFyZ2V0LmlkO3ZhciBmPWQudi5nZXQoZSk7ZiYmKGYuSGIoKSxkLnYuZGVsZXRlKGUpKX19KX07dmFyICR4PWZ1bmN0aW9uKGEsYil7aWYoIWIubGVuZ3RoKXJldHVybltdO3ZhciBjPWJbMF0ubTtyZXR1cm4gXy55KDQxOCk/UHAoUXAuQigpKS5tYXAoZnVuY3Rpb24oZCl7ZD1kLm0hPWN8fF8uQShiLFwiaW5jbHVkZXNcIikuY2FsbChiLGQpP1wiXCI6KGQ9YS5qLmouZ2V0KGQpKSYmZC5TYnx8XCJcIjtyZXR1cm4gZH0pLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4hIWR9KTpQcChRcC5CKCkpLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gYXAoYS5qLGQpJiZkLm09PWMmJiEhZC5PJiYhXy5BKGIsXCJpbmNsdWRlc1wiKS5jYWxsKGIsZCl9KS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQuT30pfSxheT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uZXcgRXQ7ZS5JPVwibGRqaFwiO2Q9eChkLk4sNil8fF8ueSgzNjQpP1wiZmlmc1wiOlwiZmlmXCI7ZS5HPWQ7ZS52PWEuTztlLkVhPWM7ZS5qPWI7YT1fLkYoYik7Zm9yKGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKUd0KGUsYi52YWx1ZSk7cmV0dXJuIGV9LGR5PWZ1bmN0aW9uKGEsYixjLGQpe25qKDIpO2J5KGEsYik7cmV0dXJuIFV1KGN5KGEsISF4KGQuTiw2KXx8Xy55KDM2NCksYixjLGQpKX0sY3k9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3JldHVybiBuZXcgUnUoYixhLmosYS5HLGMsZCxlLHZvaWQgMD09PWY/ITE6Zil9LGJ5PWZ1bmN0aW9uKGEsYil7Yi5VPWtqLkIoKS5qKCk7Yi5vPWEuVS5nZXRPc2VJZCgpO18ueSgyMDApfHwobnIoKSxiLkQ9a3JbMV0sbnIoKSxiLkg9a3JbNF0sbnIoKSxiLks9a3JbNl0pO2IuV2E9YS5QO2IuWGE9YS5UO2IuSmE9YS5EO2IubT0keChhLGIuail9LGd5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWV5KGEsYixkKTtpZihcImJvb2xlYW5cIj09PXR5cGVvZiBlKWV8fGZ5KGEsYixjLGQpO2Vsc2UgcmV0dXJuIGUudGhlbihHKDc1MCxmdW5jdGlvbigpe2Z5KGEsYixjLGQpfSkpfSxleT1mdW5jdGlvbihhLGIsYyl7Yj1iLmo7dmFyIGQ9Yy5OLGU9Yy5SLGY9TyhkLE5qLDUpfHxuZXcgTmo7Yz1fLnkoMjk2KTtmPVd2KGYpO2lmKG51bGw9PWYpcmV0dXJuIGM/dC5Qcm9taXNlLnJlc29sdmUoKTohMTt2YXIgZz1NYXRoLm1heChmLzEwMCwwKTtpZighYi5ldmVyeShmdW5jdGlvbihsKXt2YXIgbT1lW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXSxuO2lmKG49c2EocGEobCkpKW49d2luZG93LGw9e3Nsb3Q6bCxjYTptfSxtPSEheChkLDE1KSwobD1QayhsLG4uZG9jdW1lbnQsbSkpJiYtMTIyNDU5MzMhPWwueT8obj14aSghMCxuKSxuPU9rKGwsbixnKSk6bj0hMCxuPSFuO3JldHVybiBufSkpcmV0dXJuIGM/dC5Qcm9taXNlLnJlc29sdmUoKTohMTtjPWEuSShmK1wiJVwiKTt2YXIgaD1uZXcgQnI7Zj17fTtiPV8uRihiKTtmb3IodmFyIGs9Yi5uZXh0KCk7IWsuZG9uZTtmPXtpYjpmLmliLHViOmYudWJ9LGs9Yi5uZXh0KCkpaz1rLnZhbHVlLGYudWI9ay5nZXRTbG90RWxlbWVudElkKCksZi5pYj1wYShrKSxmLmliJiYoYS52LnNldChmLnViLHtIYjpmdW5jdGlvbigpe3JldHVybiB2b2lkIGgucmVzb2x2ZSgpfSxsZDpjfSksYy5vYnNlcnZlKGYuaWIpLGxvKGssZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGh5KGEsbC5pYixsLnViKX19KGYpKSk7cmV0dXJuIGguan0sZnk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yi5qO2Eudi5nZXQoZVswXS5nZXRTbG90RWxlbWVudElkKCkpJiZlLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGc9Zi5nZXRTbG90RWxlbWVudElkKCk7aHkoYSxwYShmKSxnKX0pO2l5KGEsYixjLGQpfSxpeT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT0rK2EuVztiLmw9ZTthLlZbZV09Yi5qO2U9ZHkoYSxiLGMsZCk7ankoYSxlLGIsYyxkKTtiPWIuajtkPShkPU8oZC5OLFBqLDE4KSkmJm51bGwhPUIoZCw0KT94KGQsNCk6Xy55KDI0Mik7ancoaHcuQigpLHdpbmRvdyxMaygpKTtkfHxqdyhody5CKCksd2luZG93KTtpZihfLnkoNDIxKSlmb3IoZD1fLk5pKCksYz17fSxiPV8uRihiKSxlPWIubmV4dCgpOyFlLmRvbmU7Yz17WWE6Yy5ZYX0sZT1iLm5leHQoKSljLllhPWUudmFsdWUsYS5DLmhhcyhjLllhLmdldFNsb3RJZCgpKXx8Xy5SKGMuWWEsZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5DLmRlbGV0ZShmLllhLmdldFNsb3RJZCgpKX19KGMpKSxhLkMuc2V0KGMuWWEuZ2V0U2xvdElkKCksZCk7ZWxzZSBTeChiKX0sbXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yj1iLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgZj1lLmdldFNsb3RJZCgpLGc9YS5sLmdldChmKTtnPzAhPV8ucmEoNDYpJiZfLkEoT2JqZWN0LFwiYXNzaWduXCIpLmNhbGwoT2JqZWN0LGcse29wdGlvbnM6YyxoYTpkfSk6KGEubC5zZXQoZix7aGE6ZCxvcHRpb25zOmMsSWM6bnVsbH0pLF8uUihmLGZ1bmN0aW9uKCl7YS5sLmRlbGV0ZShmKX0pKTtsbyhlLGZ1bmN0aW9uKCl7cmV0dXJuIGt5KGEsZSl9KTtyZXR1cm4hZ30pO2IubGVuZ3RoJiZseShhLGIsYyxkKX0sbHk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy5OaSgpO2I9Z2QoYixmdW5jdGlvbihmKXtyZXR1cm4gUHgoZSxmLGEuaixhLkMpfSk7Xy5KYihiLGZ1bmN0aW9uKGYsZyl7aWYoXCIwXCI9PT1nKW55KGEsZixjLGQpO2Vsc2UgaWYoXCItMVwiPT09ZylveShhLGYpO2Vsc2V7dmFyIGg9cGFyc2VJbnQoZywxMCk7Zi5mb3JFYWNoKGZ1bmN0aW9uKGspe2psLkIoKS5KKEdtKFN0cmluZyhoKSxrLmdldEFkVW5pdFBhdGgoKSkpfSk7bnkoYSxmLGMsZCwxRTMqaCl9fSl9LG95PWZ1bmN0aW9uKGEsYil7dmFyIGM9e307Yj1fLkYoYik7Zm9yKHZhciBkPWIubmV4dCgpOyFkLmRvbmU7Yz17eWE6Yy55YSxaYTpjLlphLGpiOmMuamIsZmI6Yy5mYix0YjpjLnRifSxkPWIubmV4dCgpKXtjLnlhPWQudmFsdWU7Yy50Yj1fLnJhKGMueWEuaXNCYWNrZmlsbCgpPzUyOjQ2KTtjLlphPVtdO2MuamI9bnVsbDtjLmZiPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXt2YXIgZz1hLmwuZ2V0KGUueWEuZ2V0U2xvdElkKCkpO3RyeXtueShhLFtlLnlhXSxnLm9wdGlvbnMsZy5oYSxmPzA6MUUzKl8ucmEoNDcsMSkpfWZpbmFsbHl7Zj1fLkYoZS5aYSk7Zm9yKGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWc9Zy52YWx1ZSxnKCk7ZS5aYS5sZW5ndGg9MDtudWxsIT09ZS5qYiYmY2xlYXJUaW1lb3V0KGUuamIpfX19KGMpO2lmKGQ9MUUzKl8ucmEoYy55YS5pc0JhY2tmaWxsKCk/NTY6NTUpKWEubC5nZXQoYy55YS5nZXRTbG90SWQoKSksYy5qYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmZiKCEwKX19KGMpLGQpO3N3aXRjaChjLnRiKXtjYXNlIDI6Yy5aYS5wdXNoKE9iKEkuQigpLERvLGMueWEuZ2V0U2xvdElkKCksNjg0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmZiKCl9fShjKSkpO2Nhc2UgMTpjLlphLnB1c2goT2IoSS5CKCksUGIsYy55YS5nZXRTbG90SWQoKSw2ODQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGYpe2Y9Zi5pc0VtcHR5OygyIT09ZS50Ynx8ZikmJmUuZmIoKX19KGMpKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fX0sa3k9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmwuZ2V0KGIuZ2V0U2xvdElkKCkpO2MmJihfLnkoMzE4KSYmXy5yLmNsZWFyVGltZW91dChjLkljKSxhLmwuZGVsZXRlKGIuZ2V0U2xvdElkKCkpKX0sbnk9ZnVuY3Rpb24oYSxiLGMsZCxlKXtlPXZvaWQgMD09PWU/MDplO3ZhciBmPV8uTmkoKSxnPWZ1bmN0aW9uKCl7dmFyIGg9KGV8fDApLShfLk5pKCktZik7aWYoMDxoKXtoPXNldFRpbWVvdXQoRygzNzUsZnVuY3Rpb24oKXtweShhLGIsYyxkKX0pLGgpO2Zvcih2YXIgaz1fLkYoYiksbD1rLm5leHQoKTshbC5kb25lO2w9ay5uZXh0KCkpaWYobD1hLmwuZ2V0KGwudmFsdWUuZ2V0U2xvdElkKCkpKWwuSWM9aH1lbHNlIHB5KGEsYixjLGQpfTtfLnkoNDA1KT9nKCk6SngoMzQ3LGcpfSxweT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kLk4sZj1kLlI7Yi5mb3JFYWNoKGZ1bmN0aW9uKGspe2t5KGEsayl9KTt2YXIgZz1nZChiLGZ1bmN0aW9uKGspe2s9ZltrLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIDAhPXhhKGspLmxlbmd0aHx8Xy55KDQxOSkmJm51bGwhPUIoaywxNil9KTtpZihnWyExXSl7dmFyIGg9Xy5GKGdbITFdKTtmb3IoYj1oLm5leHQoKTshYi5kb25lO2I9aC5uZXh0KCkpYj1iLnZhbHVlLFl4KGEsd2luZG93LGRvY3VtZW50LHtzbG90OmIsY2E6ZC5SW2IuZ2V0U2xvdEVsZW1lbnRJZCgpXX0sITAsZSl9aWYoYj1nWyEwXSlpZihlPWMuRWEsYi5mb3JFYWNoKGZ1bmN0aW9uKGspezA8ay5BJiZqbyhrKTthcChhLmosaykmJnJvKGspfSksdm9pZCAwIT09Yy5KYSYmKGEuRD1jLkphKSxhLlA9Yy5XYXx8TmFOLGEuVD1jLlhhfHxOYU4sIWEuWClpZih4KGQuTiw2KXx8Xy55KDM2NCkpYz1xeShiLGJbMF0ubSxkKSxyeShhLGQsYyxlKTtlbHNlIGZvcihjPV8uRihiKSxiPWMubmV4dCgpOyFiLmRvbmU7Yj1jLm5leHQoKSlyeShhLGQsW1tiLnZhbHVlXV0sZSl9LFh4PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXZvaWQgMD09PWU/d2luZG93OmU7aWYoIV8ueSgzMzYpKWZvcih2YXIgZj1fLkYoYiksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpQXgoYS5NLGcudmFsdWUpO2E9Xy5GKGIpO2ZvcihnPWEubmV4dCgpOyFnLmRvbmU7Zz1hLm5leHQoKSlnPWcudmFsdWUsVHgoZFtnLmdldFNsb3RFbGVtZW50SWQoKV0sYykmJlJiKGcsZSxlLmRvY3VtZW50KSxybyhnKTtyZXR1cm4hMH0saHk9ZnVuY3Rpb24oYSxiLGMpe2lmKGIpe3ZhciBkPWEudi5nZXQoYyk7ZCYmKGQubGQudW5vYnNlcnZlKGIpLGEudi5kZWxldGUoYykpfX0sc3k9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kP2RvY3VtZW50OmQ7dmFyIGUsZixnLGg9MCxrPWQsbD1mdW5jdGlvbigpe2grKztpZigzPT09aCl7dmFyIHU9ZixDPWUsUT1nLE49bmV3IHVoLEg9VWooYy5OKTtIPUgmJngoSCw5KTtpZihfLnkoMzk2KSlEKE4sNSwhMSk7ZWxzZSBpZih1KXtpZihIPSFIKXJzKHUpPyExPT09dS5nZHByQXBwbGllc3x8XCJ0Y3VuYXZhaWxhYmxlXCI9PT11LnRjU3RyaW5nP0g9ITA6dS5wdXJwb3NlJiZ1LnZlbmRvcj8oSD11LnZlbmRvci5jb25zZW50cywoSD0hKCFIfHwhSFtcIjc1NVwiXSkpJiZ1LnB1cnBvc2VPbmVUcmVhdG1lbnQmJlwiREVcIj09PXUucHVibGlzaGVyQ0M/SD0hMDpIJiYoSD11LnB1cnBvc2UuY29uc2VudHMsSD0hKCFIfHwhSFtcIjFcIl0pKSk6SD0hMTpIPSExO0g9RChOLDUsSCk7SD1EKEgsMix1LnRjU3RyaW5nKTtIPUQoSCw0LHUuYWRkdGxDb25zZW50fHxcIlwiKTtEKEgsNyx1LmludGVybmFsRXJyb3JTdGF0ZSk7dm9pZCAwIT09dS5nZHByQXBwbGllcyYmRChOLDMsdS5nZHByQXBwbGllcyk7XCJ0Y3VuYXZhaWxhYmxlXCI9PT11LnRjU3RyaW5nP2psLkIoKS5pbmZvKE5tKFwiZmFpbGVkXCIpKTpqbC5CKCkuaW5mbyhObShcInN1Y2NlZWRlZFwiKSl9ZWxzZSBEKE4sNSwhSCk7QyYmRChOLDEsQyk7bnVsbCE9PVEmJkQoTiw2LFEpO2IoTil9fTtMeChhLmoubGVuZ3RoP2EualswXS5tOlwiXCIpO3ZhciBtPWZ1bmN0aW9uKCl7TngoayxmdW5jdGlvbih1KXtmPXU7bCgpfSk7T3goayxmdW5jdGlvbih1KXtlPXU7bCgpfSl9O2lmKF8ueSgzNjcpKXt2YXIgbj1uZXcgaXMoXy5jZyhkKSkscT1hLmoubGVuZ3RoP2EualswXS5tOlwiXCIsdz1fLkRqKDIyMSk7ZD1uLmo/a3MobixcImxvYWRlZFwiKTp0LlByb21pc2UucmVzb2x2ZSgpO2QudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gbHMobix1LHEsdyl9KS50aGVuKGZ1bmN0aW9uKHUpe2c9dTtsKCl9KTtkLnRoZW4obSl9ZWxzZSBLeChmdW5jdGlvbigpe014KGEsVWooYy5OKSxsKTttKCl9KX0sdXk9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kP2RvY3VtZW50OmQ7c3koYixmdW5jdGlvbihlKXtfLnkoNDA1KSYmeChlLDUpP0p4KDc1OSxmdW5jdGlvbigpe3R5KGEsYixlLGMsZCl9KTp0eShhLGIsZSxjLGQpO1B0KGUsZCl9LGMsZCl9LHR5PWZ1bmN0aW9uKGEsYixjLGQsZSl7ZT12b2lkIDA9PT1lP2RvY3VtZW50OmU7dmFyIGY9TmEoYyk7cXAuQigpLnY9Zjt2YXIgZz1kLk4saD1kLlI7Yi5qPWIuai5maWx0ZXIoZnVuY3Rpb24obSl7bT1tLmdldFNsb3RFbGVtZW50SWQoKTsobT01IT09Z2soaFttXSkpfHwobT0wPT1Qbih3aW5kb3csITAsZikpO3JldHVybiBtfSk7aWYoYi5qLmxlbmd0aCl7Zm9yKHZhciBrPV8uRihiLmopLGw9ay5uZXh0KCk7IWwuZG9uZTtsPWsubmV4dCgpKXZ5KGUsbC52YWx1ZSxkKTtpZihsPWd5KGEsYixjLGQpKWwudGhlbihHKDc1MSxmdW5jdGlvbigpe2Zvcih2YXIgbT1fLkYoYi5qKSxuPW0ubmV4dCgpOyFuLmRvbmU7bj1tLm5leHQoKSluPW4udmFsdWUsd3koMCxuLGcsaFtuLmdldFNsb3RFbGVtZW50SWQoKV0pfSkpO2Vsc2UgZm9yKGE9Xy5GKGIuaiksbD1hLm5leHQoKTshbC5kb25lO2w9YS5uZXh0KCkpbD1sLnZhbHVlLHd5KDAsbCxnLGhbbC5nZXRTbG90RWxlbWVudElkKCldKX19LHF5PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXTthPWdkKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUubX0pO18uSmIoYSxmdW5jdGlvbihlLGYpe2U9Xy55KDY1KT94eShlLGMpOmU7Zj09Yj9kLnVuc2hpZnQoZSk6ZC5wdXNoKGUpfSk7cmV0dXJuIGR9LHJ5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWRvY3VtZW50O2lmKGMpe2M9Xy5GKGMpO2Zvcih2YXIgZj1jLm5leHQoKTshZi5kb25lO2Y9Yy5uZXh0KCkpZj1heShhLGYudmFsdWUsZCxiKSx1eShhLGYsYixlKX19LHd5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXZvaWQgMD09PWU/d2luZG93OmU7VHgoZCxjKSYmIWIuaiYmUmIoYixlLGUuZG9jdW1lbnQpfSx2eT1mdW5jdGlvbihhLGIsYyl7aWYoIW9hKGIsYSkpe3ZhciBkPXBhKGIsYSk7aWYoZCl7dmFyIGU9Yy5OO2M9Yy5SW2IuZ2V0U2xvdEVsZW1lbnRJZCgpXTt2YXIgZj14YShjKTtpZigwPT1mLmxlbmd0aCljPW51bGw7ZWxzZXtjPWZbMF0uc2xpY2UoKTtpZigxPGYubGVuZ3RoKXt2YXIgZztiOmlmKChnPXBhKGIsYSkpJiZnLnN0eWxlLmhlaWdodCYmZy5zdHlsZS53aWR0aCl7Zz1bZy5zdHlsZS53aWR0aCxnLnN0eWxlLmhlaWdodF07Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDsrK2gpaWYoMjxnW2hdLmxlbmd0aCYmXCJweFwiPT1nW2hdLnN1YnN0cmluZyhnW2hdLmxlbmd0aC0yKSlnW2hdPXBhcnNlSW50KGdbaF0sMTApO2Vsc2V7Zz1udWxsO2JyZWFrIGJ9fWVsc2UgZz1udWxsO2M9Z3x8Y31pZihfLnkoMzkyKSlmb3IoZj1fLkYoZiksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpaWYoZz1nLnZhbHVlLEFycmF5LmlzQXJyYXkoZykmJiEoMjUwPGdbMV0pKWlmKEFycmF5LmlzQXJyYXkoYykpe2lmKGg9Xy5GKGcpLGc9aC5uZXh0KCkudmFsdWUsaD1oLm5leHQoKS52YWx1ZSwyNTA+PWgmJmg+Y1sxXSYmKGNbMV09aCksMTA8PWcmJmc8Y1swXXx8MTA+Y1swXSljWzBdPWd9ZWxzZSBjPWd9aWYoXy55KDM4OSkpe2lmKGE9ITE9PT14KGUsMTUpLEFycmF5LmlzQXJyYXkoYykmJihiPXdhKGQsd2luZG93KXx8ZC5zdHlsZSkpaWYoYz1fLkYoYyksZT1jLm5leHQoKS52YWx1ZSxjPWMubmV4dCgpLnZhbHVlLGQuc3R5bGUubWluV2lkdGg9UHYoYi5taW5XaWR0aCxlKSxkLnN0eWxlLm1pbkhlaWdodD1QdihiLm1pbkhlaWdodCxjKSxjPWIuZGlzcGxheSwoZT1cIm5vbmVcIj09PWMpfHxcImZsZXhcIj09PWN8fGMmJl8uQShjLFwiZW5kc1dpdGhcIikuY2FsbChjLFwiYmxvY2tcIikpYz1iLmFsaWduSXRlbXMsZj1bXCJub3JtYWxcIixcImNlbnRlclwiLFwidW5zZXRcIixcIlwiXSxfLkEoZixcImluY2x1ZGVzXCIpLmNhbGwoZixiLmp1c3RpZnlDb250ZW50KSYmXy5BKGYsXCJpbmNsdWRlc1wiKS5jYWxsKGYsYykmJihkLnN0eWxlLmFsaWduSXRlbXM9XCJjZW50ZXJcIixhfHwoZC5zdHlsZS5qdXN0aWZ5Q29udGVudD1cImNlbnRlclwiKSxlfHwoZC5zdHlsZS5kaXNwbGF5PVwiZmxleFwiKSl9ZWxzZSBRdihhLGQsVmsoYi5nZXRTbG90SWQoKSksISF4KGUsMTUpLGMpfX19LHh5PWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5OLGQ9Yi5SLGU9ZnVuY3Rpb24oZyl7Zz1kW2cuZ2V0U2xvdEVsZW1lbnRJZCgpXTtyZXR1cm4gMD09Z2soZyl9LGY9W107YS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKGUoZykpe3ZhciBoPWRbZy5nZXRTbG90RWxlbWVudElkKCldO2g9UGsoe3Nsb3Q6ZyxjYTpofSxkb2N1bWVudCwhIXgoYywxNSkpfHx7fTtmLnB1c2goe2pjOnZvaWQgMD09PWgueT9JbmZpbml0eTpoLnksc2xvdDpnfSl9fSk7ZWQoZixmdW5jdGlvbihnLGgpe3JldHVybiBkZChnLmpjLGguamMpfSk7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBlKGcpP2Yuc2hpZnQoKS5zbG90Omd9KX0sank9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj12b2lkIDA9PT1mP18uci5kb2N1bWVudDpmO3ZhciBnPXZvaWQgMD09PWc/Ung6Zzt2YXIgaD1jLmo7YS5vW2MubF09aC5zbGljZSgpO3ZhciBrPUcoNjQ2LGZ1bmN0aW9uKG0sbixxKXt2YXIgdz1mO3c9dm9pZCAwPT09dz9kb2N1bWVudDp3O18ueSg0MDQpP3l5KGEsYyxkLGUsbSxuLHEsdyk6enkoYSxjLGQsZSxtLG4scSx3KX0pLGw9Ryg2NDcsZnVuY3Rpb24oKXtmb3IodmFyIG09Yy5sLG49YS5vW21dfHxbXSxxPTA7cTxuLmxlbmd0aDsrK3EpaWYobltxXSl7dmFyIHc9bmV3IGRuO3c9J3tcImVtcHR5XCI6JytEKHcsOCwhMCkubSgpK1wifVwiO3ZhciB1PWEsQz1jLFE9ZCxOPWUsSD1xLHFhPXZvaWQgMDtxYT12b2lkIDA9PT1xYT9kb2N1bWVudDpxYTtfLnkoNDA0KT95eSh1LEMsUSxOLEgsdyxcIlwiLHFhKTp6eSh1LEMsUSxOLEgsdyxcIlwiLHFhKX1kZWxldGUgYS5vW21dO2NiKCl9KTtnPUcoMjg5LGcpO2I9eWsoeGsoYikpO1F4KGgpO2s9bmV3IEh4KGssZyxsKTtsPSFfLnkoMzg1KXx8ISF4KGQsNSk7R3gobmV3IER4KGIsayx2b2lkIDA9PT1sPyEwOmwpKTtoPV8uRihoKTtmb3Ioaz1oLm5leHQoKTshay5kb25lO2s9aC5uZXh0KCkpaz1rLnZhbHVlLF8ueSg0MTIpfHxfLnkoNDEyKXx8KGsuVj1rLkMuaW5mbyhzbChrLmdldEFkVW5pdFBhdGgoKSksbnVsbCxrKSxXaSh0ay5CKCksXCI3XCIsOSxrLkEtMSwwLGsubCksay5EPW51bGwsay5QPW51bGwpLFFvKEkuQigpLElvLGsuZ2V0U2xvdElkKCkpLGEuSChrLGIsZSl9O1d4LnByb3RvdHlwZS5IPWZ1bmN0aW9uKGEsYixjKXtpZih4KGMuTiw2KXx8Xy55KDM2NCkpe3ZhciBkPWF5KHRoaXMsW2FdLDEsYyk7YnkodGhpcyxkKTt2YXIgZT1jeSh0aGlzLF8ueSgzNjQpLGQsbmV3IHVoLGMsITApO25vKGEsdmEoZnVuY3Rpb24oKXtyZXR1cm4geGsoVXUoZSkpfSkpfWVsc2Ugbm8oYSxmdW5jdGlvbigpe3JldHVybiBifSl9O3ZhciB6eT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2g9dm9pZCAwPT09aD9kb2N1bWVudDpoO3ZhciBrPWIubCxsPWEub1trXXx8W10sbT1sW2VdO2xbZV09bnVsbDt0cnl7dmFyIG49SlNPTi5wYXJzZShmKTt2YXIgcT1fLk1jKG4pP246bnVsbH1jYXRjaCh3KXtxPW51bGx9bD0oZT1xKSYmQmcoZSxpZCk7ZT1lJiZlW2xdO2U9XCJzdHJpbmdcIj09PXR5cGVvZiBsJiZBcnJheS5pc0FycmF5KGUpP25ldyBkbihlLnNsaWNlKCkpOm51bGw7aWYobSlpZihhLkFba118fChhLkFba109ITAsWWkodGsuQigpLFwiNFwiLEh0KGIsbSkpKSxfLnkoNDEyKXx8b28obSksZSl7Zj10ay5CKCk7az1tLmw7bD1CKGUsMzQpfHxcIlwiO2YuaiYmKF8uci5nb29nbGVfdGltaW5nX3BhcmFtcz1fLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXN8fHt9LF8uci5nb29nbGVfdGltaW5nX3BhcmFtc1tcInFxaWQuXCIra109bCk7Zj1CKGUsMjcpO2Y9Xy5GKGYpO2ZvcihrPWYubmV4dCgpOyFrLmRvbmU7az1mLm5leHQoKSltaihrLnZhbHVlKTtuaig0KTtaeChhLG0sYyxlLGIsZCk7bS5sYXx8KHgoZSw4KXx8YS5ZPyhiPWgsYz1lbyhtKSwoZz1wYShtLGIpKSYmZy5zZXRBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1xdWVyeS1pZFwiLGMpLFlpKHRrLkIoKSxcIjVcIixtLmwpLF8ueSg0MTIpP1FvKEkuQigpLENvLG0uZ2V0U2xvdElkKCkpOm0uVGEoKSxjPV8ueSgxMjMpLFl4KGEsXy5yLGIse3Nsb3Q6bSxjYTpkLlJbbS5nZXRTbG90RWxlbWVudElkKCldfSxjLGQuTiksUW8oSS5CKCksUGIsbS5nZXRTbG90SWQoKSx7aXNFbXB0eTohMCxzbG90Q29udGVudENoYW5nZWQ6Y30pKTpCeChhLk0sbSxhLmosYS5VLGQsZSxnLGgsYykpfWVsc2UgYmwoNjQ2LEVycm9yKFwiaW52YWxpZCByZXNwb25zZTogXCIrZikpO2Vsc2UgYmwoNjQ2LEVycm9yKFwibWlzc2luZyBzbG90OiBcIitsKSl9LHl5PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7aD12b2lkIDA9PT1oP2RvY3VtZW50Omg7dmFyIGs9Yi5sLGw9YS5vW2tdfHxbXSxtPWxbZV07bFtlXT1udWxsO20/KGEuQVtrXXx8KGEuQVtrXT0hMCxZaSh0ay5CKCksXCI0XCIsSHQoYixtKSkpLG0ubGF8fChlPWgsaD1kLk4saD1UeChkLlJbbS5nZXRTbG90RWxlbWVudElkKCldLGgpLEN4KGEuTSxtLGEuaixhLlUsZCxnLGUsYyxmLGIud2EsSHQoYixtKSxoLGEuSyxhLkcpKSk6YmwoNjQ2LEVycm9yKFwibWlzc2luZyBzbG90OiBcIitmKSl9O3ZhciBBeT1mdW5jdGlvbihhLGIsYyl7dGhpcy5qPWE7dGhpcy5sPWI7dGhpcy5vcHRpb25zPWN9LEJ5PWZ1bmN0aW9uKGEpe3RoaXMucHViYWRzPWE7dGhpcy5qPW5ldyB0LlNldDt0aGlzLmw9e319LEN5PWZ1bmN0aW9uKGEsYixjKXtpZih4KGIuTiw0KSlyZXR1cm5bXTtpZigheChiLk4sNil8fGIuUltjLmdldFNsb3RFbGVtZW50SWQoKV0mJngoYi5SW2MuZ2V0U2xvdEVsZW1lbnRJZCgpXSwxNykpcmV0dXJuIGEuai5hZGQoYyksXy5SKGMsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmouZGVsZXRlKGMpfSksW2NdO2I9W107Zm9yKHZhciBkPXt9LGU9Xy5GKGEucHViYWRzLmwpLGY9ZS5uZXh0KCk7IWYuZG9uZTtkPXtMYTpkLkxhfSxmPWUubmV4dCgpKWQuTGE9Zi52YWx1ZSxhLmouaGFzKGQuTGEpfHwoYS5qLmFkZChkLkxhKSxfLlIoZC5MYSxmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmouZGVsZXRlKGcuTGEpfX0oZCkpLGIucHVzaChkLkxhKSk7cmV0dXJuIGJ9O0J5LnByb3RvdHlwZS5kaXNwbGF5PWZ1bmN0aW9uKGEsYil7dmFyIGM9Q3kodGhpcyxhLGIpO0R5KHRoaXMucHViYWRzLGMsYSx7RWE6MX0pO2E9Yi5nZXRBZFVuaXRQYXRoKCk7aWYoKGI9dGhpcy5sW2FdKSYmIV8ueSgzMTkpKXtiPV8uRihiKTtmb3IoYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLER5KHRoaXMucHViYWRzLGMuaixjLmwsYy5vcHRpb25zKTtkZWxldGUgdGhpcy5sW2FdfX07dmFyIEZ5PWZ1bmN0aW9uKGEsYixjLGQpe2lmKF8ueSgzMTkpKUlwKGEucHViYWRzLEcoNjkwLGZ1bmN0aW9uKCl7Zm9yKHZhciBoPXt9LGs9Xy5GKGMpLGw9ay5uZXh0KCk7IWwuZG9uZTtoPXtnYjpoLmdifSxsPWsubmV4dCgpKWguZ2I9bC52YWx1ZSxhLmouYWRkKGguZ2IpLF8uUihoLmdiLGZ1bmN0aW9uKG0pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuai5kZWxldGUobS5nYil9fShoKSk7RHkoYS5wdWJhZHMsYyxiLGQpfSkpO2Vsc2UgaWYoYS5wdWJhZHMuail7Zm9yKHZhciBlPXt9LGY9Xy5GKGMpLGc9Zi5uZXh0KCk7IWcuZG9uZTtlPXtoYjplLmhifSxnPWYubmV4dCgpKWUuaGI9Zy52YWx1ZSxhLmouYWRkKGUuaGIpLF8uUihlLmhiLGZ1bmN0aW9uKGgpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuai5kZWxldGUoaC5oYil9fShlKSk7RHkoYS5wdWJhZHMsYyxiLGQpfWVsc2UgYy5sZW5ndGgmJngoYi5OLDYpPyhlPWNbMF0uZ2V0QWRVbml0UGF0aCgpLGY9YS5sW2VdfHxbXSxmLnB1c2gobmV3IEF5KGMsYixkKSksYS5sW2VdPWYpOkV5KGEucHViYWRzKX0sR3k9ZnVuY3Rpb24oKXtIcC5jYWxsKHRoaXMpO3RoaXMubT10aGlzLkM9ITE7Xy55KDg3KSYmKEt2fHx3aW5kb3cucGVyZm9ybWFuY2UmJlBnKHdpbmRvdy5wZXJmb3JtYW5jZS5ub3cpJiYoS3Y9bmV3IE52KSk7dGhpcy5vPW5ldyBCeSh0aGlzKX07Xy5KKEd5LEhwKTtfLnA9R3kucHJvdG90eXBlO18ucC5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgY3UodGhpcyxrbyl9O18ucC5kaXNwbGF5PWZ1bmN0aW9uKGEsYixjLGQpe2M9dm9pZCAwPT09Yz9cIlwiOmM7ZD12b2lkIDA9PT1kP1wiXCI6ZDt2YXIgZT1cIlwiO2lmKGMpaWYoXy5NYyhjKSYmMT09Yy5ub2RlVHlwZSl7dmFyIGY9YztlPWYuaWR9ZWxzZSBlPWM7aXAodGhpcyk7Yj0kcChhLGIsZSk7YT1iLnNsb3Q7Yj1iLkZhO2EmJmImJihmJiYhZSYmKGYuaWQ9YS5nZXRTbG90SWQoKS5qKSx0aGlzLnhhKGEsYiksRChiLDcsZCksZHEoZnx8YS5nZXRTbG90SWQoKS5qKSl9O18ucC5OYj1mdW5jdGlvbigpe3ZhciBhPVRuLkIoKS5qO2lmKHgoYSw2KXx8Xy55KDMyMCkpe0h5KHRoaXMsYSk7Zm9yKHZhciBiPV8uRih0aGlzLmwpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKUl5KHRoaXMsYy52YWx1ZSl9WXQodGhpcyxhKTt0aGlzLm0mJmJ1KHRoaXMpO1piKCl9O18ucC5aPWZ1bmN0aW9uKCl7cmV0dXJuXCJwdWJsaXNoZXJfYWRzXCJ9O18ucC54YT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7eChiLDE3KXx8SXkodGhpcyxhKTt2YXIgZD1hLmdldFNsb3RJZCgpO1FvKEkuQigpLE5vLGQsZCk7Xy5SKGEsT2IoSS5CKCksRW8sZCw3MDEsZnVuY3Rpb24oZSl7dmFyIGY9ZS5tYWtlUmV3YXJkZWRWaXNpYmxlO2U9ZS5wYXlsb2FkO3JldHVybiBKcChjLFwicmV3YXJkZWRTbG90UmVhZHlcIixuZXcgeXAoZ2woYSksYy5aKCksZixlKSl9KSk7Xy5SKGEsT2IoSS5CKCksRm8sZCw3MDIsZnVuY3Rpb24oZSl7cmV0dXJuIEpwKGMsXCJyZXdhcmRlZFNsb3RHcmFudGVkXCIsbmV3IHpwKGdsKGEpLGMuWigpLGUpKX0pKTtfLlIoYSxPYihJLkIoKSxHbyxkLDcwMyxmdW5jdGlvbigpe18ueSg0MTYpfHxKcChjLFwicmV3YXJkZWRTbG90Q2FuY2VsZWRcIixuZXcgQXAoZ2woYSksYy5aKCkpKTtKcChjLFwicmV3YXJkZWRTbG90Q2xvc2VkXCIsbmV3IEJwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksSG8sZCw3MDQsZnVuY3Rpb24oKXtyZXR1cm4gSnAoYyxcInJld2FyZGVkU2xvdENvbXBsZXRlZFwiLG5ldyBDcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLElvLGQsNzA1LGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJzbG90UmVxdWVzdGVkXCIsbmV3IERwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksUGIsZCw3MDgsZnVuY3Rpb24oZSl7dmFyIGY9ZS5zaXplLGc9ZS5zbG90Q29udGVudENoYW5nZWQsaD1lLmlzRW1wdHk7ZT1uZXcgdHAoZ2woYSksXCJwdWJsaXNoZXJfYWRzXCIpO2gmJihlLmlzRW1wdHk9aCk7ZyYmKGUuc2xvdENvbnRlbnRDaGFuZ2VkPWcpO2c9YS5IO2YmJmcmJihlLnNpemU9W2Yud2lkdGgsZi5oZWlnaHRdLGUuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkPWcuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkLGUuc291cmNlQWdub3N0aWNMaW5lSXRlbUlkPWcuc291cmNlQWdub3N0aWNMaW5lSXRlbUlkLGUuaXNCYWNrZmlsbD1nLmlzQmFja2ZpbGwsZS5jcmVhdGl2ZUlkPWcuY3JlYXRpdmVJZCxlLmxpbmVJdGVtSWQ9Zy5saW5lSXRlbUlkLGUuY3JlYXRpdmVUZW1wbGF0ZUlkPWcuY3JlYXRpdmVUZW1wbGF0ZUlkLGUuYWR2ZXJ0aXNlcklkPWcuYWR2ZXJ0aXNlcklkLGUuY2FtcGFpZ25JZD1nLmNhbXBhaWduSWQsZS55aWVsZEdyb3VwSWRzPWcueWllbGRHcm91cElkcyxlLmNvbXBhbnlJZHM9Zy5jb21wYW55SWRzKTtKcChjLFwic2xvdFJlbmRlckVuZGVkXCIsZSl9KSk7Xy5SKGEsT2IoSS5CKCksSm8sZCw3MDksZnVuY3Rpb24oKXtyZXR1cm4gSnAoYyxcInNsb3RSZXNwb25zZVJlY2VpdmVkXCIsbmV3IEVwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksS28sZCw3MTAsZnVuY3Rpb24oKXtyZXR1cm4gSnAoYyxcInNsb3RPbmxvYWRcIixuZXcgd3AoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxEbyxkLDcxNSxmdW5jdGlvbigpe3JldHVybiBKcChjLFwiaW1wcmVzc2lvblZpZXdhYmxlXCIsbmV3IHVwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksTG8sZCw3MTYsZnVuY3Rpb24oZSl7cmV0dXJuIEpwKGMsXCJzbG90VmlzaWJpbGl0eUNoYW5nZWRcIixuZXcgdnAoZ2woYSksYy5aKCksZSkpfSkpO18uUihhLE9iKEkuQigpLHpvLGQsNjE0LGZ1bmN0aW9uKCl7dmFyIGU9VG4uQigpLmo7ZT1LayhlLFZuKCkpO215KCR0KCksW2FdLHtFYToyfSxlKX0pKTtfLlIoYSxPYihJLkIoKSxHbyxkLDY4NyxmdW5jdGlvbihlKXtYeCgkdCgpLFthXSxlLk4sZS5SKX0pKTtIcC5wcm90b3R5cGUueGEuY2FsbCh0aGlzLGEsYil9O18ucC5YYj1mdW5jdGlvbihhLGIpe2lwKHRoaXMpO0h5KHRoaXMsYS5OKTtJeSh0aGlzLGIpO3RoaXMubG9nLmluZm8oVGwoKSk7dmFyIGM9eChhLk4sNik7aWYoYXAoV28oKSxiKSYmKGN8fCFiLmopKXtpZihjJiYoJHQoKSxjPXBhKGIsZG9jdW1lbnQpKSl7dmFyIGQ9SS5CKCk7UG8oZCxBbyxudWxsLGMpfXgoYS5OLDQpJiYhXy55KDM5NCkmJnd5KCR0KCksYixhLk4sYS5SW2IuZ2V0U2xvdEVsZW1lbnRJZCgpXSk7dGhpcy5vLmRpc3BsYXkoYSxiKX19O3ZhciBJeT1mdW5jdGlvbihhLGIpe2EuaiYmWG8oV28oKSxiKTtpZihhLmope3ZhciBjPVduKFRuLkIoKSxiLmdldFNsb3RFbGVtZW50SWQoKSk7aWYoYyl7Yz11ZihjLEpqLDMpO2M9Xy5GKGMpO2Zvcih2YXIgZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7ZD1CKGUsMik7aWYoKGU9S2ooZSkpJiZkJiZkLmxlbmd0aCl7dmFyIGY7aWYoZj1hcChXbygpLGIpKXt2YXIgZz1XbygpO2Y9ZFswXTtmPShnPWcuai5nZXQoYikpJiZ3byhnLmljLGUsZil9Znx8YS5sb2cuSihWbChlLGRbMF0sYi5nZXRBZFVuaXRQYXRoKCkpLGEsYil9fX19fSxIeT1mdW5jdGlvbihhLGIpe2lmKChfLnkoMTQ4KXx8IWEuQykmJmEuail7YS5DPSEwO2I9dWYoYixKaiwxNCk7Yj1fLkYoYik7Zm9yKHZhciBjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTtjPUIoZCwyKTtpZigoZD1LaihkKSkmJmMmJmMubGVuZ3RoKXt2YXIgZT1XbygpO3dvKGUubCxkLGNbMF0pfHxhLmxvZy5KKFVsKGQsY1swXSksYSl9fX19LFd0PWZ1bmN0aW9uKGEsYixjKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGJ8fDA+PWIubGVuZ3RofHwhYylyZXR1cm4gYS5sb2cuZXJyb3IocWwoXCJQdWJBZHNTZXJ2aWNlLmRlZmluZVBhc3NiYWNrXCIsW2IsY10pKSx7c2xvdDpudWxsLEZhOm51bGx9O2M9JHAoYixjLHZvaWQgMCwhMCk7Yj1jLnNsb3Q7Yz1jLkZhO2lmKCFifHwhYylyZXR1cm57c2xvdDpudWxsLEZhOm51bGx9O0QoYywxNywhMCk7cmV0dXJue3Nsb3Q6bmV3IGZ3KGIsYSxjKSxGYTpjfX0sZ3c9ZnVuY3Rpb24oYSxiLGMpe2lwKGEpO1hvKFdvKCksYyk7Xy55KDQyMyl8fChjLmVjPSEwKTthLm8uZGlzcGxheShiLGMpfSxYdD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1KeShhLGMpO2lmKGUubGVuZ3RoKXtpZihfLnkoMTA0KSl7aXAoYSk7Yz1fLkYoYyk7Zm9yKHZhciBmPWMubmV4dCgpOyFmLmRvbmU7Zj1jLm5leHQoKSl7Zj1mLnZhbHVlO3ZhciBnPWIuUltmLmdldFNsb3RFbGVtZW50SWQoKV07YS54YShmLGcpfX1GeShhLm8sYixlLGR8fHtFYToyfSl9ZWxzZSBhLmxvZy5KKHFsKFwiUHViQWRzU2VydmljZS5yZWZyZXNoXCIsW2NdLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gdm9pZCAwIT09aH0pKSxhKX0sRHk9ZnVuY3Rpb24oYSxiLGMsZCl7YS5sb2cuaW5mbyhkbSgpLGEpO2lmKEt5KGIsZCxjKSYmMSE9PWQuRWEpZm9yKGE9Xy5GKGIpLGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKWM9Yi52YWx1ZSxiPUkuQigpLGM9Yy5nZXRTbG90SWQoKSxQbyhiLE9vLG51bGwsYyl9LEt5PWZ1bmN0aW9uKGEsYixjKXthPWEuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBhcChXbygpLGUpfSk7dmFyIGQ9YS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIF8uWW8oV28oKSxlKX0pO2lmKCFkLmxlbmd0aClyZXR1cm4gbnVsbDtteSgkdCgpLGQsYixjKTtyZXR1cm4gYX0sYXU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5qP3t2aWQ6QihiLDIyKXx8XCJcIixjbXNpZDpCKGIsMjMpfHxcIlwifTpudWxsfSxZdD1mdW5jdGlvbihhLGIpe3goYiwyMSkmJmEuaiYmKCR0KCkuRD1OaygpKX0sTHk9ZnVuY3Rpb24oYSxiLGMsZCl7YT1iP0p5KGEsYik6UHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGFwKFdvKCksZil9KTtiPV8uRihhKTtmb3IodmFyIGU9Yi5uZXh0KCk7IWUuZG9uZTtlPWIubmV4dCgpKWU9ZS52YWx1ZSxzbyhlKSxlPWUuZ2V0U2xvdElkKCksUW8oSS5CKCksUWIsZSxlKTtyZXR1cm4gWHgoJHQoKSxhLGMsZCl9LFp0PWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFhLmopcmV0dXJuIGEubG9nLkooY20oKSxhKSwhMTt2YXIgZT1udWxsO2lmKGQmJihlPUp5KGEsZCksMD09ZS5sZW5ndGgpKXJldHVybiBhLmxvZy5KKHFsKFwiUHViQWRzU2VydmljZS5jbGVhclwiLFtkXS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIHZvaWQgMCE9PWZ9KSksYSksITE7YS5sb2cuaW5mbyhlbSgpLGEpO3JldHVybiBMeShhLGUsYixjKX07R3kucHJvdG90eXBlLmdldFZlcnNpb249ZnVuY3Rpb24oKXtpZih0aGlzLmopcmV0dXJuICRhKCl9O3ZhciBKeT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO2lmKCFBcnJheS5pc0FycmF5KGIpKXJldHVybiBjO2IuZm9yRWFjaChmdW5jdGlvbihkLGUpeyhkPXpqKGQsa28pKSYmIWQubGE/Yy5wdXNoKGQpOmEubG9nLkooam0oU3RyaW5nKGUpKSxhKX0pO3JldHVybiBjfSxidT1mdW5jdGlvbihhKXthLm09ITA7aWYoYS5qKXtXbygpLnY9ITA7YT1uZXcgV2soXCJncHRfbWFya0FzQW1wXCIsemsoKSxfLkRqKDIzKSk7bGIoYSxQcChRcC5CKCkpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gYXAoV28oKSxlKX0pKTt0cnl7dmFyIGI9U2goXy5yKTtiJiZFKGEsXCJudHlwZVwiLGIpO3ZhciBjPV8uci5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMsZD1udWxsIT1jP18uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxjKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuKCgvXig/Omh0dHBzPzpcXC9cXC8pPyhbXlxcL1xcPzojXSspL2kuZXhlYyhlKXx8W10pWzFdfHxlKS5zdWJzdHIoMCwyMCl9KTpbXTtFKGEsXCJvc3RcIixkLnNsaWNlKDAsMTApLmpvaW4oKSl9Y2F0Y2goZSl7fVlrKGEpfX07R3kucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXt2YXIgYj1IcC5wcm90b3R5cGUuZGVzdHJveVNsb3RzLmNhbGwodGhpcyxhKTtpZighYi5sZW5ndGgpcmV0dXJuIGI7aWYodGhpcy5qKXt2YXIgYz1Ubi5CKCkuajtMeSh0aGlzLGEsYyxWbigpKTtjcChXbygpLGEpfXJldHVybiBifTt2YXIgRXk9ZnVuY3Rpb24oYSl7dmFyIGI9Ym0oKTthLmxvZy5KKGIsYSl9O0ljKEd5KTt2YXIgTXk9RygyNixmdW5jdGlvbigpe3ZhciBhPU1wLkIoKSxiPV8uQShhLFwiZmluZFwiKS5jYWxsKGEsXCJwdWJsaXNoZXJfYWRzXCIpO2J8fChiPW5ldyBHeSxhLmFkZChiKSk7cmV0dXJuIGJ9KTtXYihcInB1YmFkc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGdsKF8ueSg0MDYpP0d5LkIoKTpNeSgpKX0pO3ZhciBWeT1mdW5jdGlvbihhLGIpe2pwLmNhbGwodGhpcyxhKTt2YXIgYz10aGlzO3RoaXMuc2V0PVMoNTc2LGZ1bmN0aW9uKGQsZSl7YS5zZXQoZCxlKTtyZXR1cm4gY30pO3RoaXMuZ2V0PVMoNTc3LGZ1bmN0aW9uKGQpe3JldHVybiBhLmdldChkKX0pO3RoaXMuZ2V0QXR0cmlidXRlS2V5cz1TKDU3OCxmdW5jdGlvbigpe3JldHVybiB6ZyhhLm0pfSk7dGhpcy5kaXNwbGF5PVMoNTU4LGZ1bmN0aW9uKGQsZSxmLGcpe3JldHVybiBhLmRpc3BsYXkoZCxlLHZvaWQgMD09PWY/XCJcIjpmLHZvaWQgMD09PWc/XCJcIjpnKX0pO3RoaXMubm90aWZ5VW5maWxsZWRTbG90cz1TKDY5LGZ1bmN0aW9uKGQpe2EuU2EmJk55KGEsT3koYSxkKSl9KTt0aGlzLmlzUm9hZGJsb2NraW5nU3VwcG9ydGVkPVMoMTExLGZ1bmN0aW9uKCl7cmV0dXJuIFB5KGEpfSk7dGhpcy5yZWZyZXNoQWxsU2xvdHM9Uyg2MCxmdW5jdGlvbigpe2EuU2EmJk55KGEpfSk7dGhpcy5zZXRWaWRlb1Nlc3Npb249Uyg2MSxmdW5jdGlvbihkLGUsZil7YS5HPWQ7YS5DPWU7YS5EPWZ9KTt0aGlzLmdldERpc3BsYXlBZHNDb3JyZWxhdG9yPVMoNjIsZnVuY3Rpb24oZCl7cmV0dXJuIFF5KGEsdm9pZCAwPT09ZD9cIlwiOmQpfSk7dGhpcy5nZXRWaWRlb1N0cmVhbUNvcnJlbGF0b3I9Uyg2MyxmdW5jdGlvbigpe2lmKChfLnkoNDA2KT9HeS5CKCk6TXkoKSkuail7dmFyIGQ9JHQoKS5EO2Q9aXNOYU4oZCk/MDpkfWVsc2UgZD0wO3JldHVybiBkfSk7dGhpcy5pc1Nsb3RBUGVyc2lzdGVudFJvYWRibG9jaz1TKDY0LGZ1bmN0aW9uKGQpe2Q9emooZCxiKTtyZXR1cm4hIWQmJlJ5KGEsZCl9KTt0aGlzLm9uSW1wbGVtZW50YXRpb25Mb2FkZWQ9Uyg2NSxmdW5jdGlvbigpe2EubG9nLmluZm8oU2woXCJHUFQgQ29tcGFuaW9uQWRzXCIpLGEpfSk7dGhpcy5maWxsU2xvdD1TKDY2LGZ1bmN0aW9uKGQsZSl7ZD16aihkLGIpO3ZhciBmO2lmKGY9ISFkKWQmJlpwKGQpJiZlJiZcInN0cmluZ1wiPT09dHlwZW9mIGU/KFN5KGEsZCkuY29udGVudD1lLGY9VHkoYSxkKSk6Zj0hMTtyZXR1cm4gZn0pO3RoaXMuc2xvdFJlbmRlckVuZGVkPVMoNjcsZnVuY3Rpb24oZCxlLGYpe3JldHVybihkPXpqKGQsYikpJiZVeShhLGQsZSxmKX0pO3RoaXMuc2V0UmVmcmVzaFVuZmlsbGVkU2xvdHM9Uyg1OSxmdW5jdGlvbihkKXtcImJvb2xlYW5cIj09PXR5cGVvZiBkJiYoYS5TYT1kKX0pfTtfLkooVnksanApO3ZhciBYeT1mdW5jdGlvbihhLGIpe2pwLmNhbGwodGhpcyxhKTt0aGlzLnNldENvbnRlbnQ9Uyg3MixmdW5jdGlvbihjLGQpe3JldHVybihjPXpqKGMsYikpJiZXeShhLGMsZCl9KTt0aGlzLmRpc3BsYXk9Uyg1NjIsZnVuY3Rpb24oYyxkLGUsZil7cmV0dXJuIGEuZGlzcGxheShjLGQsdm9pZCAwPT09ZT9cIlwiOmUsdm9pZCAwPT09Zj9cIlwiOmYpfSl9O18uSihYeSxqcCk7dmFyIFl5PWZ1bmN0aW9uKCl7SHAuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooWXksSHApO1l5LkI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcIk11c3QgYmUgb3ZlcnJpZGRlblwiKTt9O3ZhciBaeT1mdW5jdGlvbigpe1l5LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLm89bmV3IHQuTWFwO3RoaXMubT17fTt0aGlzLlNhPSExO3RoaXMuRz0wO3RoaXMuRD10aGlzLkM9dm9pZCAwO3RoaXMuSD10aGlzLkk9ITF9O18uSihaeSxZeSk7WnkuQj1ZeS5CO18ucD1aeS5wcm90b3R5cGU7Xy5wLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWeSh0aGlzLGtvKX07Xy5wLnNldD1mdW5jdGlvbihhLGIpe1wic3RyaW5nXCI9PT10eXBlb2YgYSYmYS5sZW5ndGg/KHRoaXMubVthXT1iLHRoaXMubG9nLmluZm8oS2woYSxTdHJpbmcoYiksdGhpcy5aKCkpLHRoaXMsbnVsbCkpOnRoaXMubG9nLkooTGwoU3RyaW5nKGEpLFN0cmluZyhiKSx0aGlzLlooKSksdGhpcyxudWxsKTtyZXR1cm4gdGhpc307Xy5wLmdldD1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbnVsbCE9PShiPXRoaXMubVthXSkmJnZvaWQgMCE9PWI/YjpudWxsfTtfLnAuZGlzcGxheT1mdW5jdGlvbihhLGIsYyxkKXtjPXZvaWQgMD09PWM/XCJcIjpjO2Q9dm9pZCAwPT09ZD9cIlwiOmQ7aXAodGhpcyk7Yj0kcChhLGIsYyk7YT1iLnNsb3Q7Yj1iLkZhO3RoaXMueGEoYSxiKTtEKGIsNyxkKTtkcShhLmdldFNsb3RJZCgpLmopfTtfLnAueGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO18uUihhLE9iKEkuQigpLEpvLGEuZ2V0U2xvdElkKCksNzUyLGZ1bmN0aW9uKGQpe3goZCwxMSkmJihTeShjLGEpLmo9ITApfSkpO1l5LnByb3RvdHlwZS54YS5jYWxsKHRoaXMsYSxiKX07Xy5wLk5iPWZ1bmN0aW9uKCl7JHkodGhpcyl9O3ZhciBQeT1mdW5jdGlvbihhKXt2YXIgYj1fLnkoNDA2KT9HeS5CKCk6TXkoKTtpZighYi5qKXJldHVybiExO3ZhciBjPWIubDthPWEubDtyZXR1cm4gYy5sZW5ndGghPT1hLmxlbmd0aD8hMTohYS5zb21lKGZ1bmN0aW9uKGQpe3JldHVybiFfLkEoYyxcImluY2x1ZGVzXCIpLmNhbGwoYyxkKX0pfSxReT1mdW5jdGlvbihhLGIpeyhiPXZvaWQgMD09PWI/XCJcIjpiKSYmIWEuSCYma2IoXCJpbWFfc2RrX3ZcIixmdW5jdGlvbihkKXthLkg9ITA7RShkLFwidlwiLGIpfSk7dmFyIGM9VG4uQigpLmo7cmV0dXJuIFN0cmluZyhCKGMsMjYpKX0sTnk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnkoNDA2KT9HeS5CKCk6TXkoKSxkPVRuLkIoKS5qLGU9Vm4oKTtpZihjLmope3ZhciBmPXtFYTozfTt2b2lkIDAhPT1hLkcmJihmLkphPWEuRyk7YS5DJiYoZi5XYT1hLkMpO2EuRCYmKGYuWGE9YS5EKTthPW51bGwhPT1iJiZ2b2lkIDAhPT1iP2I6YS5sO2Q9S2soZCxlKTtmLkphJiZcIm51bWJlclwiIT09dHlwZW9mIGYuSmF8fGYuV2EmJlwibnVtYmVyXCIhPT10eXBlb2YgZi5XYXx8Zi5YYSYmXCJudW1iZXJcIiE9PXR5cGVvZiBmLlhhfHxYdChjLGQsYSxmKX1lbHNlIGEubG9nLmVycm9yKE9sKFwiUHViQWRzXCIsXCJyZWZyZXNoXCIpKX0sUnk9ZnVuY3Rpb24oYSxiKXt2YXIgYztpZigoXy55KDQwNik/R3kuQigpOk15KCkpLmomJlpwKGIpKXJldHVybiBhPWEuby5nZXQoYi5nZXRTbG90SWQoKSksbnVsbCE9PShjPW51bGw9PT1hfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmopJiZ2b2lkIDAhPT1jP2M6ITE7YS5sb2cuZXJyb3IoUGwoKSk7cmV0dXJuITF9LE95PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBfLkEoYS5sLFwiZmluZFwiKS5jYWxsKGEubCxmdW5jdGlvbihkKXtyZXR1cm4gZC5nZXRTbG90SWQoKS50b1N0cmluZygpPT09Y30pfSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiEhY30pfTtaeS5wcm90b3R5cGUuWj1mdW5jdGlvbigpe3JldHVyblwiY29tcGFuaW9uX2Fkc1wifTt2YXIgJHk9ZnVuY3Rpb24oYSl7bWIoNzAsZnVuY3Rpb24oKXtpZighYS5JKXt2YXIgYj1kb2N1bWVudDthLmxvZy5pbmZvKFFsKFwiR1BUIENvbXBhbmlvbkFkc1wiKSxhKTt2YXIgYyxkLGU9bnVsbCE9PShkPW51bGw9PT0oYz1tYSgpKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jcmVhdGVTY3JpcHRVUkwoXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2NvbXBhbmlvbl9hZC5qc1wiKSkmJnZvaWQgMCE9PWQ/ZDpcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL3Nob3dfY29tcGFuaW9uX2FkLmpzXCI7Yz1uZXcgYWkoZSxqYSk7bmEoYyxhaSk7dWcoYixCZChjLmoudG9TdHJpbmcoKSkpO2EuST0hMH19LGZ1bmN0aW9uKGIsYyl7YmwoYixjKTthLmxvZy5lcnJvcihSbChcIkdQVCBDb21wYW5pb25BZHNcIiksYSl9KX0sVHk9ZnVuY3Rpb24oYSxiKXtpZighYS5qfHxSeShhLGIpKXJldHVybiExO3ZhciBjPXBhKGIpO2lmKCFjKXJldHVybiExO3ZhciBkPShhLm8uZ2V0KGIuZ2V0U2xvdElkKCkpfHx7fSkuY29udGVudDtpZih2b2lkIDA9PT1kKXJldHVybiExO2Euby5kZWxldGUoYi5nZXRTbG90SWQoKSk7Yi5UYSgpO2MuaW5uZXJIVE1MPWQ7cG8oYik7ZD1jPW51bGw7dmFyIGU9V24oVG4uQigpLGIuZ2V0U2xvdEVsZW1lbnRJZCgpKTtlJiYxPT09dWYoZSxWaiw1KS5sZW5ndGgmJm51bGwhPUIodWYoZSxWaiw1KVswXSwxKSYmbnVsbCE9Qih1ZihlLFZqLDUpWzBdLDIpJiYoYz1CKHVmKGUsVmosNSlbMF0sMSksZD1CKHVmKGUsVmosNSlbMF0sMikpO1V5KGEsYixjLGQpO3JldHVybiEwfTtaeS5wcm90b3R5cGUuWGI9ZnVuY3Rpb24oYSxiKXtUeSh0aGlzLGIpfTt2YXIgVXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yj1uZXcgdHAoZ2woYiksYS5aKCkpO251bGwhPWMmJm51bGwhPWQmJihiLnNpemU9W2MsZF0pO0pwKGEsXCJzbG90UmVuZGVyRW5kZWRcIixiKX0sU3k9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm8uZ2V0KGIuZ2V0U2xvdElkKCkpO2N8fChjPXt9LGEuby5zZXQoYi5nZXRTbG90SWQoKSxjKSxfLlIoYixmdW5jdGlvbigpe3JldHVybiBhLm8uZGVsZXRlKGIuZ2V0U2xvdElkKCkpfSkpO3JldHVybiBjfSxhej1mdW5jdGlvbigpe3JldHVybiBtYig1NyxmdW5jdGlvbigpe3ZhciBhPU1wLkIoKSxiPV8uQShhLFwiZmluZFwiKS5jYWxsKGEsXCJjb21wYW5pb25fYWRzXCIpO2J8fChiPW5ldyBaeSxhLmFkZChiKSk7cmV0dXJuIGJ9KX07SWMoWnkpO1diKFwiY29tcGFuaW9uQWRzXCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2woXy55KDQwNik/WnkuQigpOmF6KCkpfSk7dmFyIGJ6PWZ1bmN0aW9uKCl7SHAuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooYnosSHApO2J6LkI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcIk11c3QgYmUgb3ZlcnJpZGRlblwiKTt9O3ZhciBjej1mdW5jdGlvbigpe2J6LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLm89bmV3IHQuTWFwfTtfLkooY3osYnopO2N6LkI9YnouQjtjei5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFh5KHRoaXMsa28pfTtjei5wcm90b3R5cGUuWj1mdW5jdGlvbigpe3JldHVyblwiY29udGVudFwifTtjei5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihhLGIsYyxkKXtjPXZvaWQgMD09PWM/XCJcIjpjO2Q9dm9pZCAwPT09ZD9cIlwiOmQ7aXAodGhpcyk7Yj0kcChhLGIsYyk7YT1iLnNsb3Q7Yj1iLkZhO3RoaXMueGEoYSxiKTtEKGIsNyxkKTtkcShhLmdldFNsb3RJZCgpLmopfTtjei5wcm90b3R5cGUuZGVzdHJveVNsb3RzPWZ1bmN0aW9uKGEpe2E9YnoucHJvdG90eXBlLmRlc3Ryb3lTbG90cy5jYWxsKHRoaXMsYSk7Zm9yKHZhciBiPV8uRihhKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl0aGlzLm8uZGVsZXRlKGMudmFsdWUuZ2V0U2xvdElkKCkpO3JldHVybiBhfTt2YXIgZHo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm8uZ2V0KGIuZ2V0U2xvdElkKCkpLGQ9cGEoYik7IShjJiZ2b2lkIDAhPT1jLmNvbnRlbnQmJmQmJmEuail8fGMmJmMuVGF8fChjLlRhPSEwLGQuaW5uZXJIVE1MPWMuY29udGVudCxKcChhLFwic2xvdFJlbmRlckVuZGVkXCIsbmV3IHRwKGdsKGIpLGEuWigpKSkpfTtjei5wcm90b3R5cGUuTmI9ZnVuY3Rpb24oKXt9O2N6LnByb3RvdHlwZS5YYj1mdW5jdGlvbihhLGIpe2R6KHRoaXMsYil9O3ZhciBXeT1mdW5jdGlvbihhLGIsYyl7aWYoWnAoYikmJlwic3RyaW5nXCI9PT10eXBlb2YgYyYmYy5sZW5ndGgpe3ZhciBkPWEuby5nZXQoYi5nZXRTbG90SWQoKSk7ZD9kLmNvbnRlbnQ9YzphLm8uc2V0KGIuZ2V0U2xvdElkKCkse2NvbnRlbnQ6YyxUYTp2b2lkIDB9KTtfLlIoYixmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuby5kZWxldGUoYi5nZXRTbG90SWQoKSl9KTtkeihhLGIpfX0sZXo9ZnVuY3Rpb24oKXtyZXR1cm4gbWIoNzEsZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCksYj1fLkEoYSxcImZpbmRcIikuY2FsbChhLFwiY29udGVudFwiKTtifHwoYj1uZXcgY3osYS5hZGQoYikpO3JldHVybiBifSl9O0ljKGN6KTtXYihcImNvbnRlbnRcIixmdW5jdGlvbigpe3JldHVybiBnbChfLnkoNDA2KT9jei5CKCk6ZXooKSl9KTtpZih3aW5kb3cuZ29vZ2xldGFnLmV2YWxTY3JpcHRzKXdpbmRvdy5nb29nbGV0YWcuZXZhbFNjcmlwdHMoKTtlbHNle3ZhciBmej13aW5kb3csZ3o9Xy5PaShmeik7aWYoZ3ope3ZhciBoej17bGFiZWw6XCIyXCIsdHlwZTo5LHZhbHVlOmd6fSxpej1mei5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlPWZ6Lmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdOzIwNDg+aXoubGVuZ3RoJiZpei5wdXNoKGh6KX1XYihcImV2YWxTY3JpcHRzXCIsZnVuY3Rpb24oKXtKdSgpfSk7THUoKX07fSkuY2FsbCh0aGlzLHt9KTtcbiJ9LCAiaGVhZGVyc1NpemUiOiAwLCAiYm9keVNpemUiOiA5NDM5NywgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogOTQzOTd9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDY0LjYxMywgImNvbm5lY3QiOiA0NjEuMTEyLCAic3NsIjogMjU2Ljk5OCwgInNlbmQiOiAwLCAid2FpdCI6IDIwNi4xMjIsICJyZWNlaXZlIjogNDczLjUwMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyODAwOjNmMDo0MDAxOjgyNDo6MjAwMl0iLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogIiouZy5kb3VibGVjbGljay5uZXQiLCAiaXNzdWVyIjogIkdUUyBDQSAxQzMiLCAidmFsaWRGcm9tIjogMTY4MjMzNzM2MywgInZhbGlkVG8iOiAxNjg5NTk0OTYyfX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuNjQxWiIsICJ0aW1lIjogMzM3LjE1NiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vZXVzLnJ1Ymljb25wcm9qZWN0LmNvbS91c3luYy5odG1sP3A9MzNhY3Jvc3MmZW5kcG9pbnQ9dXMtZWFzdCZ1c19wcml2YWN5PTFZTk4iLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiZXVzLnJ1Ymljb25wcm9qZWN0LmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1EZXN0IiwgInZhbHVlIjogImlmcmFtZSJ9LCB7Im5hbWUiOiAiU2VjLUZldGNoLU1vZGUiLCAidmFsdWUiOiAibmF2aWdhdGUifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1TaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbeyJuYW1lIjogInAiLCAidmFsdWUiOiAiMzNhY3Jvc3MifSwgeyJuYW1lIjogImVuZHBvaW50IiwgInZhbHVlIjogInVzLWVhc3QifSwgeyJuYW1lIjogInVzX3ByaXZhY3kiLCAidmFsdWUiOiAiMVlOTiJ9XSwgImhlYWRlcnNTaXplIjogNTkzLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIyMzMifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiXCI0MDNiOS0xMTktNWVjNzNhMGEzM2QwMFwiIn0sIHsibmFtZSI6ICJMYXN0LU1vZGlmaWVkIiwgInZhbHVlIjogIldlZCwgMDIgTm92IDIwMjIgMDI6MzA6NDQgR01UIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiQXBhY2hlLzIuMi4xNSAoQ2VudE9TKSJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifV0sICJjb250ZW50IjogeyJzaXplIjogMjgxLCAibWltZVR5cGUiOiAidGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiwgImNvbXByZXNzaW9uIjogNDgsICJ0ZXh0IjogIjwhRE9DVFlQRSBodG1sIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOXCIgXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGRcIj5cbjwhLS0gQ29weXJpZ2h0IHRoZSBSdWJpY29uIFByb2plY3QgMjAyMCAtLT5cbjxodG1sPlxuPGhlYWQ+XG4gICAgPHRpdGxlPlVzZXItU3luYzwvdGl0bGU+XG48L2hlYWQ+XG48Ym9keT5cbiAgICA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCJ1c3luYy5qc1wiPjwvc2NyaXB0PlxuPC9ib2R5PlxuPC9odG1sPlxuIn0sICJoZWFkZXJzU2l6ZSI6IDMyMSwgImJvZHlTaXplIjogMjMzLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA1NTR9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDIxNy44MzQsICJjb25uZWN0IjogNTYuMzM2LCAic3NsIjogNDYuNDk0LCAic2VuZCI6IDAsICJ3YWl0IjogMTMuNTUyLCAicmVjZWl2ZSI6IDIuOTR9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICIyMy4zNy40Mi4xMzIiLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogIioucnViaWNvbnByb2plY3QuY29tIiwgImlzc3VlciI6ICJEaWdpQ2VydCBUTFMgSHlicmlkIEVDQyBTSEEzODQgMjAyMCBDQTEiLCAidmFsaWRGcm9tIjogMTY3ODE0NzIwMCwgInZhbGlkVG8iOiAxNzEyMTg4Nzk5fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuNjYzWiIsICJ0aW1lIjogMTMuNzkzOTk5OTk5OTk5OTk5LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly94LmJpZHN3aXRjaC5uZXQvdWxfY2Ivc3luYz9zc3A9dGhlMzNhY3Jvc3MmdXNfcHJpdmFjeT0xWU5OIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogInR1dWlkIiwgInZhbHVlIjogIjY5ZjU4YWY1LTY1OGItNGRiOC04ZjIwLWQ0OWRmZTdhN2E2ZiJ9LCB7Im5hbWUiOiAiYyIsICJ2YWx1ZSI6ICIxNjg0OTQyODc2In0sIHsibmFtZSI6ICJ0dXVpZF9sdSIsICJ2YWx1ZSI6ICIxNjg0OTQyODc2In1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiOmF1dGhvcml0eSIsICJ2YWx1ZSI6ICJ4LmJpZHN3aXRjaC5uZXQifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvdWxfY2Ivc3luYz9zc3A9dGhlMzNhY3Jvc3MmdXNfcHJpdmFjeT0xWU5OIn0sIHsibmFtZSI6ICI6c2NoZW1lIiwgInZhbHVlIjogImh0dHBzIn0sIHsibmFtZSI6ICJhY2NlcHQiLCAidmFsdWUiOiAiaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qLCovKjtxPTAuOCJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJjb29raWUiLCAidmFsdWUiOiAidHV1aWQ9NjlmNThhZjUtNjU4Yi00ZGI4LThmMjAtZDQ5ZGZlN2E3YTZmOyBjPTE2ODQ5NDI4NzY7IHR1dWlkX2x1PTE2ODQ5NDI4NzYifSwgeyJuYW1lIjogInJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJpbWFnZSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibm8tY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbeyJuYW1lIjogInNzcCIsICJ2YWx1ZSI6ICJ0aGUzM2Fjcm9zcyJ9LCB7Im5hbWUiOiAidXNfcHJpdmFjeSIsICJ2YWx1ZSI6ICIxWU5OIn1dLCAiaGVhZGVyc1NpemUiOiA2MzQsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDMwMiwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogInR1dWlkIiwgInZhbHVlIjogIjY5ZjU4YWY1LTY1OGItNGRiOC04ZjIwLWQ0OWRmZTdhN2E2ZiJ9LCB7Im5hbWUiOiAidHV1aWRfbHUiLCAidmFsdWUiOiAiMTY4NDk0Mjg3NiJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImNhY2hlLWNvbnRyb2wiLCAidmFsdWUiOiAibm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogImRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogImxvY2F0aW9uIiwgInZhbHVlIjogIi8vcC5yZmlodWIuY29tL2NtP2luPTEmcHViPTIwNTEzJnNzcD10aGUzM2Fjcm9zcyZnZHByPSZnZHByX2NvbnNlbnQ9In0sIHsibmFtZSI6ICJzZXQtY29va2llIiwgInZhbHVlIjogInR1dWlkPTY5ZjU4YWY1LTY1OGItNGRiOC04ZjIwLWQ0OWRmZTdhN2E2ZjsgcGF0aD0vOyBleHBpcmVzPVRodSwgMjMtTWF5LTIwMjQgMTU6NDE6MTYgR01UOyBkb21haW49LmJpZHN3aXRjaC5uZXQ7IHNhbWVzaXRlPW5vbmU7IHNlY3VyZSJ9LCB7Im5hbWUiOiAic2V0LWNvb2tpZSIsICJ2YWx1ZSI6ICJ0dXVpZF9sdT0xNjg0OTQyODc2OyBwYXRoPS87IGV4cGlyZXM9VGh1LCAyMy1NYXktMjAyNCAxNTo0MToxNiBHTVQ7IGRvbWFpbj0uYmlkc3dpdGNoLm5ldDsgc2FtZXNpdGU9bm9uZTsgc2VjdXJlIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIiwgImNvbXByZXNzaW9uIjogMH0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDAsICJyZWRpcmVjdFVSTCI6ICJodHRwczovL3AucmZpaHViLmNvbS9jbT9pbj0xJnB1Yj0yMDUxMyZzc3A9dGhlMzNhY3Jvc3MmZ2Rwcj0mZ2Rwcl9jb25zZW50PSIsICJfdHJhbnNmZXJTaXplIjogMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDEyLjM5OSwgInJlY2VpdmUiOiAxLjM5NX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIjMuNzYuOTEuMjM2IiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNi42NzhaIiwgInRpbWUiOiAyOTUuNjE3LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9wLnJmaWh1Yi5jb20vY20/aW49MSZwdWI9MjA1MTMmc3NwPXRoZTMzYWNyb3NzJmdkcHI9JmdkcHJfY29uc2VudD0iLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogInAucmZpaHViLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1EZXN0IiwgInZhbHVlIjogImltYWdlIn0sIHsibmFtZSI6ICJTZWMtRmV0Y2gtTW9kZSIsICJ2YWx1ZSI6ICJuby1jb3JzIn0sIHsibmFtZSI6ICJTZWMtRmV0Y2gtU2l0ZSIsICJ2YWx1ZSI6ICJjcm9zcy1zaXRlIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAiaW4iLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAicHViIiwgInZhbHVlIjogIjIwNTEzIn0sIHsibmFtZSI6ICJzc3AiLCAidmFsdWUiOiAidGhlMzNhY3Jvc3MifSwgeyJuYW1lIjogImdkcHIiLCAidmFsdWUiOiAiIn0sIHsibmFtZSI6ICJnZHByX2NvbnNlbnQiLCAidmFsdWUiOiAiIn1dLCAiaGVhZGVyc1NpemUiOiA0NzIsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDMwMiwgInN0YXR1c1RleHQiOiAiRm91bmQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAicnVkIiwgInZhbHVlIjogIkg0c0lBQUFBQUFBQV8tTVNOalUwTVRJMk5qTUhFcWJtSm1abVFGcUl6MUEzTzdVNHd5c3N3ekxjSnk4WkFIMERFd1lsQUFBQSIsICJwYXRoIjogIi8iLCAiZG9tYWluIjogIi5yZmlodWIuY29tIiwgImV4cGlyZXMiOiAiMjAyNC0wNi0xN1QxNTo0MToxNi4wMDBaIiwgInNlY3VyZSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn0sIHsibmFtZSI6ICJydWRzIiwgInZhbHVlIjogIkg0c0lBQUFBQUFBQV8tTVNOalUwTVRJMk5qTUhFcWJtSm1abVFGcUl6MUEzTzdVNHd5c3N3ekxjSnk4WkFIMERFd1lsQUFBQSIsICJwYXRoIjogIi8iLCAiZG9tYWluIjogIi5yZmlodWIuY29tIiwgInNlY3VyZSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn0sIHsibmFtZSI6ICJldWQiLCAidmFsdWUiOiAiSDRzSUFBQUFBQUFBXzF2RndtdG9abUZpYVdKa1lXNW1hV3dDQUZuTDR0QVFBQUFBIiwgInBhdGgiOiAiLyIsICJkb21haW4iOiAiLnJmaWh1Yi5jb20iLCAiZXhwaXJlcyI6ICIyMDI0LTA2LTE3VDE1OjQxOjE2LjAwMFoiLCAic2VjdXJlIjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIwIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTYgR01UIn0sIHsibmFtZSI6ICJMb2NhdGlvbiIsICJ2YWx1ZSI6ICJodHRwczovL3guYmlkc3dpdGNoLm5ldC9zeW5jP2RzcF9pZD0xMTkmdXNlcl9pZD01MTQyMzM2NzIzMzU3NDY2MjMzJmV4cGlyZXM9MzAmc3NwPXRoZTMzYWNyb3NzIn0sIHsibmFtZSI6ICJQM1AiLCAidmFsdWUiOiAiQ1A9XCJOT0kgQ1VSYSBBRE1hIERFVmEgVEFJYSBPVVIgQlVTIElORCBVTkkgQ09NIE5BViBJTlRcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogIkpldHR5KDkuNC41MS52MjAyMzAyMTcpIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogInJ1ZD1INHNJQUFBQUFBQUFfLU1TTmpVME1USTJOak1IRXFibUptWm1RRnFJejFBM083VTR3eXNzd3pMY0p5OFpBSDBERXdZbEFBQUE7IFBhdGg9LzsgRG9tYWluPS5yZmlodWIuY29tOyBFeHBpcmVzPU1vbiwgMTcgSnVuIDIwMjQgMTU6NDE6MTYgR01UOyBTZWN1cmU7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAicnVkcz1INHNJQUFBQUFBQUFfLU1TTmpVME1USTJOak1IRXFibUptWm1RRnFJejFBM083VTR3eXNzd3pMY0p5OFpBSDBERXdZbEFBQUE7IFBhdGg9LzsgRG9tYWluPS5yZmlodWIuY29tOyBTZWN1cmU7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiZXVkPUg0c0lBQUFBQUFBQV8xdkZ3bXRvWm1GaWFXSmtZVzVtYVd3Q0FGbkw0dEFRQUFBQTsgUGF0aD0vOyBEb21haW49LnJmaWh1Yi5jb207IEV4cGlyZXM9TW9uLCAxNyBKdW4gMjAyNCAxNTo0MToxNiBHTVQ7IFNlY3VyZTsgU2FtZVNpdGU9Tm9uZSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biIsICJjb21wcmVzc2lvbiI6IDB9LCAiaGVhZGVyc1NpemUiOiA3NTgsICJib2R5U2l6ZSI6IDAsICJyZWRpcmVjdFVSTCI6ICJodHRwczovL3guYmlkc3dpdGNoLm5ldC9zeW5jP2RzcF9pZD0xMTkmdXNlcl9pZD01MTQyMzM2NzIzMzU3NDY2MjMzJmV4cGlyZXM9MzAmc3NwPXRoZTMzYWNyb3NzIiwgIl90cmFuc2ZlclNpemUiOiA3NTh9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDIwNi4zOTYsICJjb25uZWN0IjogNDMuMjc2LCAic3NsIjogMzEuNTc1LCAic2VuZCI6IDAsICJ3YWl0IjogMTMuMTg3LCAicmVjZWl2ZSI6IDEuMTgzfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiMTkzLjAuMTYwLjEzMCIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuOTM2WiIsICJ0aW1lIjogMzUuMDEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL2V1cy5ydWJpY29ucHJvamVjdC5jb20vdXN5bmMuanMiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiZXVzLnJ1Ymljb25wcm9qZWN0LmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwczovL2V1cy5ydWJpY29ucHJvamVjdC5jb20vdXN5bmMuaHRtbD9wPTMzYWNyb3NzJmVuZHBvaW50PXVzLWVhc3QmdXNfcHJpdmFjeT0xWU5OIn0sIHsibmFtZSI6ICJTZWMtRmV0Y2gtRGVzdCIsICJ2YWx1ZSI6ICJzY3JpcHQifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1Nb2RlIiwgInZhbHVlIjogIm5vLWNvcnMifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1TaXRlIiwgInZhbHVlIjogInNhbWUtb3JpZ2luIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0MzAsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJtYXgtYWdlPTIwMDk2In0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMTAwODUifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNiBHTVQifSwgeyJuYW1lIjogIkV4cGlyZXMiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAyMToxNjoxMiBHTVQifSwgeyJuYW1lIjogIkxhc3QtTW9kaWZpZWQiLCAidmFsdWUiOiAiVHVlLCAyMyBNYXkgMjAyMyAyMToxNjoyMCBHTVQifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJBcGFjaGUvMi4yLjE1IChDZW50T1MpIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1Qb3dlcmVkLUJ5IiwgInZhbHVlIjogIlBIUC81LjMuMyJ9LCB7Im5hbWUiOiAicDNwIiwgInZhbHVlIjogIkNQPVwiTk9JIENVUmEgQURNYSBERVZhIFRBSWEgT1VSICMgQlVTIElORCBVTkkgQ09NIE5BViBJTlRcIiJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzNDg3NCwgIm1pbWVUeXBlIjogInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIsICJjb21wcmVzc2lvbiI6IDI0Nzg5LCAidGV4dCI6ICJ2YXIgY29tbWVudHMgPSAnVXNlci1TeW5jOiBnZW5lcmF0ZWQ6IDIwMjMtMDUtMjMgMTQ6MTY6MjAgUERUJztcbnZhciBydGJfc3luYyA9IHtcInJlc2V0X3JhdGVcIjo0MCxcInR0bFwiOjE0LFwic2FtcGxlXCI6MTAwLFwibWF4X3BpeGVsc1wiOjgsXCJwaXhlbF9zZXRzXCI6e1wicnRiXCI6e1wic2FtcGxlXCI6MTAwLFwicGl4ZWxzXCI6e1wiaWRsXCI6e1wicHJpb3JpdHlcIjo5LFwidHRsXCI6MSxcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWQucmxjZG4uY29tXFwvNzA5NDE0LmdpZlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pZC5ybGNkbi5jb21cXC83MDk0MTQuZ2lmXCJ9LFwicGFydG5lclwiOlwibGl2ZXJhbXBcIn0sXCJrbnNzb1wiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWQua25zc28uY29tXFwvdXN5bmM/cmVkaXI9aHR0cHMlM0ElMkYlMkZzeW5jLmdyYXBoLmJsdWVjYXZhLmNvbSUyRmRzLnBuZyUzRnAlM0QyZWU3YzhkMS01YWZmLTExZWQtOGVlYy00MjAxYWMxMDAwMGMlMjZzZWdtZW50JTNEa2luZXNzb21hZ25pdGUlMjZldmVudCUzRGltcCUyNnVpZCUzRCU3QnVzZXJfdG9rZW4lN0RcIixcInByaW9yaXR5XCI6MjAsXCJzYW1wbGVcIjowLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pZC5rbnNzby5jb21cXC91c3luYz9yZWRpcj1odHRwcyUzQSUyRiUyRnN5bmMuZ3JhcGguYmx1ZWNhdmEuY29tJTJGZHMucG5nJTNGcCUzRDJlZTdjOGQxLTVhZmYtMTFlZC04ZWVjLTQyMDFhYzEwMDAwYyUyNnNlZ21lbnQlM0RraW5lc3NvbWFnbml0ZSUyNmV2ZW50JTNEaW1wJTI2dWlkJTNEJTdCdXNlcl90b2tlbiU3RFwifSxcInBhcnRuZXJcIjpcImtuc3NvXCIsXCJjb3VudHJ5XCI6W1widXNcIixcImNhXCIsXCJteFwiXX0sXCIxMTg1XCI6e1widHRsXCI6NyxcImltZ1wiOlwiaHR0cHM6XFwvXFwvYWQudHVybi5jb21cXC9yXFwvY3M/cGlkPTZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYWQudHVybi5jb21cXC9yXFwvY3M/cGlkPTZcIn0sXCJwcmlvcml0eVwiOjcsXCJwYXJ0bmVyXCI6XCJhbW9iZWVcIn0sXCIxNTEyXCI6e1wicHJpb3JpdHlcIjo1LFwidHRsXCI6MSxcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5tYXRodGFnLmNvbVxcL3N5bmNcXC9pbWc/bXRfZXhpZD05XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMubWF0aHRhZy5jb21cXC9zeW5jXFwvaW1nP210X2V4aWQ9OSZyZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENDIyMiUyNm5pZCUzRDE1MTIlMjZwdXQlM0QlNUJNTV9VVUlEJTVEXCJ9LFwicGFydG5lclwiOlwibWVkaWFtYXRoXCJ9LFwiMTkwMlwiOntcInByaW9yaXR5XCI6MTcsXCJ0dGxcIjoyLFwiaW1nXCI6XCJodHRwczpcXC9cXC9jbXMucXVhbnRzZXJ2ZS5jb21cXC9waXhlbFxcL3AtZTRtM1lrbzZiRllWYy5naWY/aWRtYXRjaD0wXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2Ntcy5xdWFudHNlcnZlLmNvbVxcL3BpeGVsXFwvcC1lNG0zWWtvNmJGWVZjLmdpZj9pZG1hdGNoPTBcIn0sXCJwYXJ0bmVyXCI6XCJxdWFudGNhc3RcIn0sXCIxOTg2XCI6e1wicHJpb3JpdHlcIjo3LFwidHRsXCI6MSxcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWIuYWRueHMuY29tXFwvZ2V0dWlkbmI/aHR0cCUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENDg5NCUyNm5pZCUzRDE5ODYlMjZwdXQlM0QkVUlEJTI2ZXhwaXJlcyUzRDMwXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3NlY3VyZS5hZG54cy5jb21cXC9nZXR1aWRuYj9odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENDg5NCUyNm5pZCUzRDE5ODYlMjZwdXQlM0QkVUlEJTI2ZXhwaXJlcyUzRDMwXCJ9LFwicGFydG5lclwiOlwieGFuZHJcIn0sXCIyMDQ2XCI6e1wicHJpb3JpdHlcIjoxMyxcInR0bFwiOjcsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMDQ2JnB0PW4mYT0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMDQ2JnB0PW4mYT0xXCJ9LFwicGFydG5lclwiOlwiY29udmVyc2FudFwifSxcIjIwODJcIjp7XCJwcmlvcml0eVwiOjE2LFwiaW1nXCI6XCJodHRwczpcXC9cXC91bXMuYWN1aXR5cGxhdGZvcm0uY29tXFwvdHVtP3VtaWQ9MlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bXMuYWN1aXR5cGxhdGZvcm0uY29tXFwvdHVtP3VtaWQ9MlwifSxcInBhcnRuZXJcIjpcImFjdWl0eVwifSxcIjIxMzJcIjp7XCJwcmlvcml0eVwiOjEyLFwiaW1nXCI6XCJodHRwczpcXC9cXC91bS5zaW1wbGkuZmlcXC9yYl9tYXRjaFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bS5zaW1wbGkuZmlcXC9yYl9tYXRjaFwifSxcInBhcnRuZXJcIjpcInNpbXBsaS5maVwifSxcIjIxMzVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2Q1cC5kZTE3YS5jb21cXC9jb29raWVzXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9kNXAuZGUxN2EuY29tXFwvY29va2llc1xcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJkZWx0YS1ydGJcIixcImNvdW50cnlcIjpbXCJzZVwiLFwiZGtcIixcIm5sXCIsXCJkZVwiLFwiZmlcIixcIm5vXCJdfSxcIjIxNDlcIjp7XCJwcmlvcml0eVwiOjYsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2Rpcy5jcml0ZW8uY29tXFwvZGlzXFwvdXNlcnN5bmMuYXNweD9yPTYmcD03MCZjcD1SdWJpY29uJmN1PTEmdXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q2NDM0JTI2bmlkJTNEMjE0OSUyNnB1dCUzRCU0MCU0MENSSVRFT19VU0VSSUQlNDAlNDBcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZGlzLmNyaXRlby5jb21cXC9kaXNcXC91c2Vyc3luYy5hc3B4P3I9NiZwPTcwJmNwPVJ1Ymljb24mY3U9MSZ1cmw9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDY0MzQlMjZuaWQlM0QyMTQ5JTI2cHV0JTNEJTQwJTQwQ1JJVEVPX1VTRVJJRCU0MCU0MFwifSxcInBhcnRuZXJcIjpcImNyaXRlb1wifSxcIjIxNzktbmFcIjp7XCJwcmlvcml0eVwiOjEsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3MuYW1hem9uLWFkc3lzdGVtLmNvbVxcL2RjbT9waWQ9NTBjZDIxYjctZDhkNy00NjE1LTlmYjktYTJiZTgzMWY4NDg4JmlkPVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zLmFtYXpvbi1hZHN5c3RlbS5jb21cXC9kY20/cGlkPTUwY2QyMWI3LWQ4ZDctNDYxNS05ZmI5LWEyYmU4MzFmODQ4OCZpZD1cIn0sXCJwYXJ0bmVyXCI6XCJhbWF6b24tbmEtc3luY1wifSxcIjIxNzktZXVcIjp7XCJwcmlvcml0eVwiOjEsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2FheC1ldS5hbWF6b24tYWRzeXN0ZW0uY29tXFwvc1xcL2RjbT9waWQ9YTM4YThkZGYtMTlhNy00YWI4LWJhMDUtMGE2MWRlOTJhN2U1JmlkPVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9hYXgtZXUuYW1hem9uLWFkc3lzdGVtLmNvbVxcL3NcXC9kY20/cGlkPWEzOGE4ZGRmLTE5YTctNGFiOC1iYTA1LTBhNjFkZTkyYTdlNSZpZD1cIn0sXCJwYXJ0bmVyXCI6XCJhbWF6b24tZXUtc3luY1wifSxcIjIyMzFcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkLnNoYXJlZGlkLm9yZ1xcL3VzeW5jP3JlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q2MjQyMTAlMjZuaWQlM0QyMjMxJTI2cHV0JTNEJTdCdXNlcl90b2tlbiU3RFwiLFwicHJpb3JpdHlcIjoyMCxcInNhbXBsZVwiOjAsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkLnNoYXJlZGlkLm9yZ1xcL3VzeW5jP3JlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q2MjQyMTAlMjZuaWQlM0QyMjMxJTI2cHV0JTNEJTdCdXNlcl90b2tlbiU3RFwifSxcInBhcnRuZXJcIjpcIm15YWRzXCIsXCJjb3VudHJ5XCI6W1widXNcIixcImNhXCIsXCJteFwiXX0sXCIyMjM4XCI6e1wicHJpb3JpdHlcIjoxMCxcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4ZWwtc3luYy5zaXRlc2NvdXQuY29tXFwvZG1wXFwvcGl4ZWxTeW5jP25pZD0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLXN5bmMuc2l0ZXNjb3V0LmNvbVxcL2RtcFxcL3BpeGVsU3luYz9uaWQ9MVwifSxcInBhcnRuZXJcIjpcImJhc2lzXCJ9LFwiMjI0OVwiOntcInR0bFwiOjEsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLmcuZG91YmxlY2xpY2submV0XFwvcGl4ZWw/Z29vZ2xlX25pZD1ydWJpY29uJmdvb2dsZV9jbSZnb29nbGVfc2NcIixcInByaW9yaXR5XCI6MSxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY20uZy5kb3VibGVjbGljay5uZXRcXC9waXhlbD9nb29nbGVfbmlkPXJ1Ymljb24mZ29vZ2xlX2NtJmdvb2dsZV9zY1wifSxcInBhcnRuZXJcIjpcImR2MzYwXCJ9LFwiMjI0OS1EVjM2MC1Ib3N0ZWRcIjp7XCJwcmlvcml0eVwiOjEsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjI0OSZwdD1uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMjQ5JnB0PW5cIn0sXCJwYXJ0bmVyXCI6XCJEVjM2MC1Hb29nbGVcIn0sXCIyMzA3XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9tYXRjaC5hZHNydnIub3JnXFwvdHJhY2tcXC9jbWZcXC9ydWJpY29uXCIsXCJwcmlvcml0eVwiOjEsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL21hdGNoLmFkc3J2ci5vcmdcXC90cmFja1xcL2NtZlxcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJ0aGV0cmFkZWRlc2tcIn0sXCIyMzEzXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yYnAubXhwdGludC5uZXRcXC9zbi5hc2h4XCIsXCJwcmlvcml0eVwiOjE3LFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yYnAubXhwdGludC5uZXRcXC9zbi5hc2h4XCJ9LFwicGFydG5lclwiOlwidmFsYXNzaXNcIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIl19LFwiMjQ5NFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdW0yLmVxYWRzLmNvbVxcL3VtXFwvcmNcIixcInJlZ2lvblwiOltcIm5hXCJdLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bTIuZXFhZHMuY29tOjQ0M1xcL3VtXFwvcmNcIn0sXCJwYXJ0bmVyXCI6XCJlcS1hZHNcIn0sXCIyNTI4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmludGVudGlxLmNvbVxcL3Byb2ZpbGVzX2VuZ2luZVxcL1Byb2ZpbGVzRW5naW5lU2VydmxldD9hdD0yMCZtaT0xMCZkcGk9NTRcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5pbnRlbnRpcS5jb21cXC9wcm9maWxlc19lbmdpbmVcXC9Qcm9maWxlc0VuZ2luZVNlcnZsZXQ/YXQ9MjAmbWk9MTAmZHBpPTU0XCJ9LFwicGFydG5lclwiOlwiaW50ZW50LWlxXCIsXCJjb3VudHJ5XCI6W1widXNcIixcImNhXCJdfSxcIjI1NDBcIjp7XCJwcmlvcml0eVwiOjEzLFwiaW1nXCI6XCJodHRwczpcXC9cXC90ci5ibGlzbWVkaWEuY29tXFwvdjFcXC9hcGlcXC9zeW5jXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90ci5ibGlzbWVkaWEuY29tXFwvdjFcXC9hcGlcXC9zeW5jXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcImJsaXNcIn0sXCIyNTk2XCI6e1widHRsXCI6NyxcInByaW9yaXR5XCI6MjAsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3AucmZpaHViLmNvbVxcL2NtP2luPTEmcHViPTY0XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3AucmZpaHViLmNvbVxcL2NtP2luPTEmcHViPTY0XCJ9LFwicGFydG5lclwiOlwiemV0YVwifSxcIjI2NTBcIjp7XCJwcmlvcml0eVwiOjE4LFwiaW1nXCI6XCJodHRwczpcXC9cXC9tYXRjaC5hZHNieS5iaWR0aGVhdHJlLmNvbVxcL3J1Ymljb25tYXRjaFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9tYXRjaC5hZHNieS5iaWR0aGVhdHJlLmNvbVxcL3J1Ymljb25tYXRjaFwifSxcInBhcnRuZXJcIjpcImJpZC10aGVhdHJlXCJ9LFwiMjY3NlwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYzEuYWRmb3JtLm5ldFxcL3NlcnZpbmdcXC9jb29raWVcXC9tYXRjaD9wYXJ0eT0xMTY0XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2MxLmFkZm9ybS5uZXRcXC9zZXJ2aW5nXFwvY29va2llXFwvbWF0Y2g/cGFydHk9MTE2NFwifSxcInByaW9yaXR5XCI6NixcInBhcnRuZXJcIjpcImFkZm9ybVwifSxcIjI3MzFcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLmN0bnNuZXQuY29tXFwvaW50XFwvY20/ZXhjPTImcmVkaXI9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDE0OTY1JTI2bmlkJTNEMjczMSUyNnB1dCUzRCU1QnVzZXJfaWQlNURcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY20uY3Ruc25ldC5jb21cXC9pbnRcXC9jbT9leGM9MiZyZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMTQ5NjUlMjZuaWQlM0QyNzMxJTI2cHV0JTNEJTVCdXNlcl9pZCU1RFwifSxcInJlZ2lvblwiOltcImV1XCIsXCJhdVwiXSxcInBhcnRuZXJcIjpcImNyaW1zb24tdGFuZ2VyaW5lXCJ9LFwiMjc2MFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwveC5iaWRzd2l0Y2gubmV0XFwvc3luYz9zc3A9cnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC94LmJpZHN3aXRjaC5uZXRcXC9zeW5jP3NzcD1ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiYmlkc3dpdGNoXCJ9LFwiMjgyMFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWQ1LXN5bmMuY29tXFwvaVxcLzE3NVxcLzkuZ2lmXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkNS1zeW5jLmNvbVxcL2lcXC8xNzVcXC85LmdpZlwifSxcInBhcnRuZXJcIjpcInBsYXRmb3JtLTE2MVwiLFwiY291bnRyeVwiOltcIm5sXCIsXCJ1c1wiXX0sXCIyODYxXCI6e1wicHJpb3JpdHlcIjo1LFwiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmlwcmVkaWN0aXZlLmNvbVxcL2RcXC9zeW5jXFwvY29va2llXFwvZ2VuZXJpYz9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9MTcxNDkmbmlkPTI4NjEmcHV0PSR7QURFTFBISUNfQ1VJRH0mZXhwaXJlcz0zMFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmlwcmVkaWN0aXZlLmNvbVxcL2RcXC9zeW5jXFwvY29va2llXFwvZ2VuZXJpYz9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9MTcxNDkmbmlkPTI4NjEmcHV0PSR7QURFTFBISUNfQ1VJRH0mZXhwaXJlcz0zMFwifSxcInBhcnRuZXJcIjpcImFkZWxwaGljXCJ9LFwiMjk2NlwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcnRiLmFkZW50aWZpLmNvbVxcL0Nvb2tpZVN5bmNSdWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3J0Yi5hZGVudGlmaS5jb21cXC9Db29raWVTeW5jUnViaWNvblwifSxcInBhcnRuZXJcIjpcImFkaGVvcmVudFwifSxcIjI5MTVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuc21hcnRhZHNlcnZlci5jb21cXC9nZXR1aWQ/Z2Rwcj0wJnVybD1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMzIxMjglMjZuaWQlM0QyOTE1JTI2cHV0JTNEW3Nhc191aWRdXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuc21hcnRhZHNlcnZlci5jb21cXC9nZXR1aWQ/Z2Rwcj0wJnVybD1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMzIxMjglMjZuaWQlM0QyOTE1JTI2cHV0JTNEW3Nhc191aWRdXCJ9LFwicGFydG5lclwiOlwibGlxdWlkbVwifSxcIjI5NzRcIjp7XCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mjk3NCZwdD1uJmE9MVwiLFwicHJpb3JpdHlcIjoxLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mjk3NCZwdD1uJmE9MVwifSxcInBhcnRuZXJcIjpcInlhaG9vLW9wZW5ydGJcIn0sXCIzNjMyXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yY3AuYy5hcHBpZXIubmV0XFwvcmJjbVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yY3AuYy5hcHBpZXIubmV0XFwvcmJjbVwifSxcInBhcnRuZXJcIjpcImFwcGllclwifSxcIjM2MzZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLnNtYWRleC5jb21cXC9zeW5jP3NtX3A9cmJjJnNtX3I9cmJjXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLnNtYWRleC5jb21cXC9zeW5jP3NtX3A9cmJjJnNtX3I9cmJjXCJ9LFwicGFydG5lclwiOlwic21hZGV4XCJ9LFwiMzY2NFwiOntcInByaW9yaXR5XCI6NixcImltZ1wiOlwiaHR0cHM6XFwvXFwvYnR0cmFjay5jb21cXC9waXhlbFxcL2Nvb2tpZXN5bmM/c291cmNlPWM5MWJmY2NlLWJiNDMtNDZmNy1iMTRlLTU2N2MwYTQzMzJiM1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9idHRyYWNrLmNvbVxcL3BpeGVsXFwvY29va2llc3luYz9zb3VyY2U9YzkxYmZjY2UtYmI0My00NmY3LWIxNGUtNTY3YzBhNDMzMmIzXCJ9LFwicGFydG5lclwiOlwiYmlkdGVsbGVjdFwifSxcIjM2NjhcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3RnLnNvY2RtLmNvbVxcL3J0YlxcL3N5bmM/cHJvdG89cnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90Zy5zb2NkbS5jb21cXC9ydGJcXC9zeW5jP3Byb3RvPXJ1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJzdXBlcnNoaXBcIn0sXCIzNzc4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLXRtLmV2ZXJlc3R0ZWNoLm5ldFxcL3VwaVxcL3BpZFxcL2J0dTRqZDNhP3JlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QxOTE5NDAlMjZuaWQlM0QzNzc4JTI2cHV0JTNEJTI0JTdCVVNFUl9JRCU3RFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLXRtLmV2ZXJlc3R0ZWNoLm5ldFxcL3VwaVxcL3BpZFxcL2J0dTRqZDNhP3JlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QxOTE5NDAlMjZuaWQlM0QzNzc4JTI2cHV0JTNEJTI0JTdCVVNFUl9JRCU3RFwifSxcInBhcnRuZXJcIjpcImFkb2JlXCIsXCJwcmlvcml0eVwiOjExfSxcIjM4MjJcIjp7XCJwcmlvcml0eVwiOjE1LFwiaW1nXCI6XCJodHRwczpcXC9cXC9kc3AuYWRmYXJtMS5hZGl0aW9uLmNvbVxcL2Nvb2tpZVxcLz9zc3A9N1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9kc3AuYWRmYXJtMS5hZGl0aW9uLmNvbVxcL2Nvb2tpZVxcLz9zc3A9N1wifSxcInBhcnRuZXJcIjpcImFjdGl2ZS1hZ2VudFwifSxcIjM4NTZcIjp7XCJwcmlvcml0eVwiOjE1LFwiaW1nXCI6XCJodHRwczpcXC9cXC9hLnRyaWJhbGZ1c2lvbi5jb21cXC9pLm1hdGNoP3A9YjEwJnU9e3J1Ymljb25fdXNlcl90b2tlbn0mcmVkaXJlY3Q9aHR0cHMlM0FcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwJTNGdiUzRDExMTc1NiUyNm5pZCUzRDM4NTYlMjZwdXQlM0QlMjRURl9VU0VSX0lEX0VOQyUyNCUyNmV4cGlyZXMlM0QxODBcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYS50cmliYWxmdXNpb24uY29tXFwvaS5tYXRjaD9wPWIxMCZ1PXtydWJpY29uX3VzZXJfdG9rZW59JnJlZGlyZWN0PWh0dHBzJTNBXFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvdGFwLnBocCUzRnYlM0QxMTE3NTYlMjZuaWQlM0QzODU2JTI2cHV0JTNEJTI0VEZfVVNFUl9JRF9FTkMlMjQlMjZleHBpcmVzJTNEMTgwXCJ9LFwicGFydG5lclwiOlwidmR4LnR2XCJ9LFwiMzg1OFwiOntcInByaW9yaXR5XCI6NixcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5zcnYuc3RhY2thZGFwdC5jb21cXC9zeW5jP25pZD0xNFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLnNydi5zdGFja2FkYXB0LmNvbVxcL3N5bmM/bmlkPTE0XCJ9LFwicGFydG5lclwiOlwic3RhY2thZGFwdFwifSxcIjM5NTZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuYWRvdG1vYi5jb21cXC9jb29raWVcXC9ydWJpY29uP3I9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDEyMzAzNCUyNm5pZCUzRDM5NTYlMjZwdXQlM0QlN0J1c2VyX3Rva2VuJTdEXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuYWRvdG1vYi5jb21cXC9jb29raWVcXC9ydWJpY29uP3I9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDEyMzAzNCUyNm5pZCUzRDM5NTYlMjZwdXQlM0QlN0J1c2VyX3Rva2VuJTdEXCJ9LFwicGFydG5lclwiOlwiQWRvdE1vYlwifSxcIjM5OTJcIjp7XCJwcmlvcml0eVwiOjE2LFwiaW1nXCI6XCJodHRwczpcXC9cXC9iMXN5bmMuemVtYW50YS5jb21cXC91c2Vyc3luY1xcL3J1Ymljb25cXC9cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYjFzeW5jLnplbWFudGEuY29tXFwvdXNlcnN5bmNcXC9ydWJpY29uXFwvXCJ9LFwicGFydG5lclwiOlwiemVtYW50YVwifSxcIjQwMTZcIjp7XCJwcmlvcml0eVwiOjE1LFwiaW1nXCI6XCJodHRwczpcXC9cXC9jci1wMTYubGFkc3AuY29tXFwvY29va2llc2VuZGVyXFwvMTZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3ItcDE2LmxhZHNwLmNvbVxcL2Nvb2tpZXNlbmRlclxcLzE2XCJ9LFwicGFydG5lclwiOlwic28tbmV0bWVkaWFcIixcImNvdW50cnlcIjpbXCJqcFwiXX0sXCI0MDMyXCI6e1wicHJpb3JpdHlcIjoxMixcImltZ1wiOlwiaHR0cHM6XFwvXFwvY20uYWRncnguY29tXFwvYnJpZGdlP0FHX1NFVENPT0tJRSZBR19QSUQ9cnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbS5hZGdyeC5jb21cXC9icmlkZ2U/QUdfU0VUQ09PS0lFJkFHX1BJRD1ydWJpY29uXCJ9LFwicGFydG5lclwiOlwic2Ftc3VuZ1wifSxcIjQxMTJcIjp7XCJwcmlvcml0eVwiOjgsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuMXJ4LmlvXFwvdXNlcnN5bmMyXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLjFyeC5pb1xcL3VzZXJzeW5jMlxcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJyaHl0aG1vbmVcIn0sXCI0MTE0XCI6e1wicHJpb3JpdHlcIjo0LFwiaW1nXCI6XCJodHRwczpcXC9cXC9tYXRjaC5wcm9kLmJpZHIuaW9cXC9jb29raWUtc3luY1xcL3JwP2JlZV9zeW5jX3BhcnRuZXJzPXJwXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL21hdGNoLnByb2QuYmlkci5pb1xcL2Nvb2tpZS1zeW5jXFwvcnA/YmVlX3N5bmNfcGFydG5lcnM9cnBcIn0sXCJwYXJ0bmVyXCI6XCJiZWVzd2F4XCJ9LFwiNDU4NFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvb25ldGFnLXN5cy5jb21cXC9tYXRjaFxcLz9pbnRfaWQ9NFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9vbmV0YWctc3lzLmNvbVxcL21hdGNoXFwvP2ludF9pZD00XCJ9LFwicGFydG5lclwiOlwib25ldGFnXCIsXCJjb3VudHJ5XCI6W1wiaXRcIixcImRlXCIsXCJmclwiLFwic2VcIixcImF0XCIsXCJ1a1wiLFwiZXNcIixcImdyXCIsXCJyb1wiLFwidXNcIl19LFwiNDYwNFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYXBpLnByaW1lY2FzdGVyLm5ldFxcL2FkbG9ndWVcXC9hcGlcXC9zeW5jXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9hcGkucHJpbWVjYXN0ZXIubmV0XFwvYWRsb2d1ZVxcL2FwaVxcL3N5bmNcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwidmlkZW93aXJlXCIsXCJjb3VudHJ5XCI6W1wianBcIl19LFwiNDgwNFwiOntcInByaW9yaXR5XCI6MTgsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3NzYnN5bmMuc21hcnRhZHNlcnZlci5jb21cXC9hcGlcXC9zeW5jP2NhbGxlcklkPTg3XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3NzYnN5bmMuc21hcnRhZHNlcnZlci5jb21cXC9hcGlcXC9zeW5jP2NhbGxlcklkPTg3XCJ9LFwicGFydG5lclwiOlwiZHluYWRtaWNcIn0sXCI0ODU4XCI6e1wicHJpb3JpdHlcIjoxLFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MzY1ODRcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTM2NTg0XCJ9LFwicGFydG5lclwiOlwibGlua2VkaW5cIn0sXCI0OTA2XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLWRzcC5hZC1tLmFzaWFcXC9kc3BcXC9hcGlcXC9zeW5jXFwvc2VuZD9zPXJ1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy1kc3AuYWQtbS5hc2lhXFwvZHNwXFwvYXBpXFwvc3luY1xcL3NlbmQ/cz1ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiY3JhaWRcIixcImNvdW50cnlcIjpbXCJqcFwiXX0sXCI1MTIwXCI6e1wicHJpb3JpdHlcIjoxNSxcImltZ1wiOlwiaHR0cHM6XFwvXFwvYmguY29udGV4dHdlYi5jb21cXC9iaFxcL3J0c2V0P3BpZD01NjA2ODcmZXY9MSZydXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QzOTAyMDAlMjZuaWQlM0Q1MTIwJTI2cHV0JTNEJTI1JTI1VkdVSUQlMjUlMjVcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYmguY29udGV4dHdlYi5jb21cXC9iaFxcL3J0c2V0P3BpZD01NjA2ODcmZXY9MSZydXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QzOTAyMDAlMjZuaWQlM0Q1MTIwJTI2cHV0JTNEJTI1JTI1VkdVSUQlMjUlMjVcIn0sXCJwYXJ0bmVyXCI6XCJwdWxzZXBvaW50XCJ9LFwiNTQ0NlwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZG1wLmJyYW5kLWRpc3BsYXkuY29tXFwvY21cXC9hcGlcXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2RtcC5icmFuZC1kaXNwbGF5LmNvbVxcL2NtXFwvYXBpXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcImtub3JleFwifSxcIjU0NjZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2liLmFkbnhzLmNvbVxcL2dldHVpZD9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9NTY0NTM0Jm5pZD01NDY2JnB1dD0kVUlEXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2liLmFkbnhzLmNvbVxcL2dldHVpZD9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9NTY0NTM0Jm5pZD01NDY2JnB1dD0kVUlEXCJ9LFwicGFydG5lclwiOlwicGxheWdyb3VuZC14eXpcIn0sXCI1NDk4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ydWJpY29uY20uZGlnaXRhbGVhc3QubW9iaVxcL3VzZXJzeW5jXFwvcnViaWNvbi5naWZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcnViaWNvbmNtLmRpZ2l0YWxlYXN0Lm1vYmlcXC91c2Vyc3luY1xcL3J1Ymljb24uZ2lmXCJ9LFwicGFydG5lclwiOlwiZGlnaXRhbC1lYXN0XCJ9LFwiNTUwMFwiOntcInByaW9yaXR5XCI6MTksXCJpbWdcIjpcImh0dHBzOlxcL1xcL2RzLnVuY24uanBcXC9ycFxcLzBcXC9zeW5jXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2RzLnVuY24uanBcXC9ycFxcLzBcXC9zeW5jXCJ9LFwiY291bnRyeVwiOltcImpwXCJdLFwicGFydG5lclwiOlwidW5pY29yblwifSxcIjU1MDRcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2JlYWNvbi5seW54LmNvZ25pdGl2bGFicy5jb21cXC9yYi5naWZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYmVhY29uLmx5bnguY29nbml0aXZsYWJzLmNvbVxcL3JiLmdpZlwifSxcInBhcnRuZXJcIjpcImNvZ25pdGl2XCJ9LFwiNTUwOFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3MuYWRuZWFyLm5ldFxcL3YyXFwvY29va2llc3luY1xcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3MuYWRuZWFyLm5ldFxcL3YyXFwvY29va2llc3luY1xcL3J1Ymljb25cIn0sXCJjb3VudHJ5XCI6W1wiYXVcIixcIm56XCJdLFwicGFydG5lclwiOlwibmVhclwifSxcIjU1MjhcIjp7XCJwcmlvcml0eVwiOjEwLFwiaW1nXCI6XCJodHRwczpcXC9cXC9tYXRjaC5kZWVwaW50ZW50LmNvbVxcL3VzZXJzeW5jXFwvMTQzXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL21hdGNoLmRlZXBpbnRlbnQuY29tXFwvdXNlcnN5bmNcXC8xNDNcIn0sXCJwYXJ0bmVyXCI6XCJkZWVwaW50ZW50XCJ9LFwiNTU3MFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvd3d3LnN0b3J5Z2l6ZS5uZXRcXC9jY21cXC83MjllNGU5NC02M2MzLTQzOGQtOGNlNC0xODRlYjM0ZTcwM2ZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvd3d3LnN0b3J5Z2l6ZS5uZXRcXC9jY21cXC83MjllNGU5NC02M2MzLTQzOGQtOGNlNC0xODRlYjM0ZTcwM2ZcIn0sXCJwYXJ0bmVyXCI6XCJzdG9yeWdpemVcIn0sXCI1NTc4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zLmNvbXBhbnktdGFyZ2V0LmNvbVxcL3NcXC9ycFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zLmNvbXBhbnktdGFyZ2V0LmNvbVxcL3NcXC9ycFwifSxcInBhcnRuZXJcIjpcImRlbWFuZGJhc2VcIn0sXCJ3NTVjXCI6e1wibmlkXCI6MTUyMyxcInByaW9yaXR5XCI6MjAsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwczpcXC9cXC9pLnc1NWMubmV0XFwvcGluZ19tYXRjaC5naWY/ZWk9UlVCSUNPTiZydXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0MjEwJTI2bmlkJTNEMTUyMyUyNnB1dCUzRF93Zml2ZWZpdmVjXyUyNmV4cGlyZXMlM0QzMFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pLnc1NWMubmV0XFwvcGluZ19tYXRjaC5naWY/ZWk9UlVCSUNPTiZydXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0MjEwJTI2bmlkJTNEMTUyMyUyNnB1dCUzRF93Zml2ZWZpdmVjXyUyNmV4cGlyZXMlM0QzMFwifSxcInBhcnRuZXJcIjpcInJva3Utb25ldmlld1wifSxcIjE1MjNleHRcIjp7XCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL2N0aS53NTVjLm5ldFxcL2N0XFwvY21zLTJjLXJ1Ymljb24uaHRtbFwiLFwic2VjdXJlXCI6e1wiaWZyYW1lXCI6XCJodHRwczpcXC9cXC9jdGkudzU1Yy5uZXRcXC9jdFxcL2Ntcy0yYy1ydWJpY29uLmh0bWxcIn0sXCJwYXJ0bmVyXCI6XCJyb2t1LW9uZXZpZXdcIn0sXCJtZWRpYXZpbmUtc2VsbGVyXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC9leGNoYW5nZVxcL3N5bmMucGhwP3A9MTc0MDRcIixcInByaW9yaXR5XCI6MTAsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD0xNzQwNFwifSxcInBhcnRuZXJcIjpcIm1lZGlhdmluZS1zZWxsZXJcIn0sXCJ1bmRlcnRvbmUtc2VsbGVyXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC9leGNoYW5nZVxcL3N5bmMucGhwP3A9MTI3NzZcIixcInByaW9yaXR5XCI6MTUsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD0xMjc3NlwifSxcInBhcnRuZXJcIjpcInVuZGVydG9uZS1zZWxsZXJcIn0sXCJicnhcIjp7XCJwaW5nZG9tX2lkXCI6XCI0MTQ3MDAyXCIsXCJwcmlvcml0eVwiOjUsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yNjU5NFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjY1OTRcIn0sXCJwYXJ0bmVyXCI6XCJicnhcIn0sXCJnb29nXCI6e1wicHJpb3JpdHlcIjoxLFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjU0NzBcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI1NDcwXCJ9LFwicGFydG5lclwiOlwiZ29vZ1wifSxcImE5ZXVcIjp7XCJwcmlvcml0eVwiOjEsXCJzYW1wbGVcIjo1LFwiaW1nXCI6XCJodHRwOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD1hOWV1XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD1hOWV1XCJ9LFwicGFydG5lclwiOlwiYTlldVwiLFwiY291bnRyeVwiOltcImllXCIsXCJnYlwiLFwidWtcIixcImZyXCIsXCJkZVwiLFwiZXNcIixcInB0XCIsXCJpdFwiLFwibm9cIixcInNlXCIsXCJubFwiLFwiYmVcIixcImZpXCIsXCJjaFwiXX0sXCJhOXVzXCI6e1wicHJpb3JpdHlcIjoxLFwic2FtcGxlXCI6NSxcImltZ1wiOlwiaHR0cDpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC9leGNoYW5nZVxcL3N5bmMucGhwP3A9YTl1c1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC9leGNoYW5nZVxcL3N5bmMucGhwP3A9YTl1c1wifSxcInBhcnRuZXJcIjpcImE5dXNcIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIixcIm14XCIsXCJiclwiLFwiYXVcIixcIm56XCIsXCJqcFwiXX19fSxcInJ0Yl9leHRcIjp7XCJzYW1wbGVcIjoxMDAsXCJwaXhlbHNcIjp7fX0sXCJhdWRcIjp7XCJzYW1wbGVcIjoyNSxcInBpeGVsc1wiOntcImJrXCI6e1wicGluZ2RvbV9pZFwiOlwiNjA1NzI4XCIsXCJ0dGxcIjo0LFwiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9M1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9M1wifSxcInBhcnRuZXJcIjpcImJsdWVrYWlcIn0sXCJhYW1cIjp7XCJwaW5nZG9tX2lkXCI6XCI2NjEzMjBcIixcInR0bFwiOjE0LFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9NjQwNFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9NjQwNFwifSxcInBhcnRuZXJcIjpcImFkb2JlXCJ9LFwibmV1XCI6e1wicGluZ2RvbV9pZFwiOlwiMTQxMTE1N1wiLFwidHRsXCI6NyxcInNhbXBsZVwiOjAsXCJpbWdcIjpcImh0dHA6XFwvXFwvYWRhZHZpc29yLm5ldFxcL2Fkc2NvcmVzXFwvZy5waXhlbD9zaWQ9OTIxMjI3MDQ5OFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9hZGFkdmlzb3IubmV0XFwvYWRzY29yZXNcXC9nLnBpeGVsP3NpZD05MjEyMjcwNDk4XCJ9LFwicGFydG5lclwiOlwibmV1c3RhclwiLFwiY291bnRyeVwiOltcInVzXCJdfSxcInR1cm5cIjp7XCJwaW5nZG9tX2lkXCI6XCIxNTA0MDYyXCIsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yNyZhPTFcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI3JmE9MVwifSxcInBhcnRuZXJcIjpcInR1cm4tZG1wXCJ9LFwibW1wdWJcIjp7XCJwaW5nZG9tX2lkXCI6XCIyMTE3MzA2XCIsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwOlxcL1xcL3BpeGVsLm1hdGh0YWcuY29tXFwvc3luY1xcL2ltZz9yZWRpcj1odHRwJTNBJTJGJTJGdG9rZW4ucnViaWNvbnByb2plY3QuY29tJTJGdG9rZW4lM0ZwaWQlM0QzNTkxMiUyNnB1aWQlM0QlNUJNTV9VVUlEJTVEXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLm1hdGh0YWcuY29tXFwvc3luY1xcL2ltZz9yZWRpcj1odHRwcyUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMzU5MTIlMjZwdWlkJTNEJTVCTU1fVVVJRCU1RFwifSxcInBhcnRuZXJcIjpcIm1lZGlhbWF0aC1wdWJcIn0sXCJ0YXBhZC1jcm9zc2RldmljZVwiOntcInR0bFwiOjcsXCJpbWdcIjpcImh0dHA6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTM3NTU2JmE9MVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mzc1NTYmYT0xXCJ9LFwic2FtcGxlXCI6MTAwLFwicHJpb3JpdHlcIjo1LFwicGFydG5lclwiOlwidGFwYWQtY3Jvc3NkZXZpY2VcIn0sXCJkaWdpdHJ1c3RcIjp7XCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cDpcXC9cXC9ydWJpY29uLmRpZ2l0cnUuc3RcXC9kaWdpdHJ1c3Qtc3luY1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ydWJpY29uLmRpZ2l0cnUuc3RcXC9kaWdpdHJ1c3Qtc3luY1wifSxcInNhbXBsZVwiOjAsXCJwYXJ0bmVyXCI6XCJkaWdpdHJ1c3RcIn0sXCJvd25lcklRLWRtcFwiOntcInNhbXBsZVwiOjAsXCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cDpcXC9cXC9weC5vd25lcmlxLm5ldFxcL2V1Y21cXC9wXFwvcmM/cmVkaXI9aHR0cCUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMzM1MyUyNnB1aWQlM0QoT0lRX1VVSUQpXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3B4Lm93bmVyaXEubmV0XFwvZXVjbVxcL3BcXC9yYz9yZWRpcj1odHRwcyUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMzM1MyUyNnB1aWQlM0QoT0lRX1VVSUQpXCJ9LFwicGFydG5lclwiOlwib3duZXJJUS1kbXBcIn0sXCJhOXNcIjp7XCJ0dGxcIjo3LFwic2FtcGxlXCI6MTAwLFwicmVnaW9uXCI6W1widXNcIl0sXCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL3MuYW1hem9uLWFkc3lzdGVtLmNvbVxcL3hcXC8xYzJmZDE0YmYzMTBiNmFmZjY0OVwiLFwic2VjdXJlXCI6e1wiaWZyYW1lXCI6XCJodHRwczpcXC9cXC9zLmFtYXpvbi1hZHN5c3RlbS5jb21cXC94XFwvMWMyZmQxNGJmMzEwYjZhZmY2NDlcIn0sXCJwYXJ0bmVyXCI6XCJhbWF6b24tcHViLXVzLXN5bmNcIn0sXCJhOXMtZXVcIjp7XCJ0dGxcIjo3LFwic2FtcGxlXCI6MTAwLFwicmVnaW9uXCI6W1wiZXVcIl0sXCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL2FheC1ldS5hbWF6b24tYWRzeXN0ZW0uY29tXFwvc1xcL3hcXC8xYzJmZDE0YmYzMTBiNmFmZjY0OVwiLFwic2VjdXJlXCI6e1wiaWZyYW1lXCI6XCJodHRwczpcXC9cXC9hYXgtZXUuYW1hem9uLWFkc3lzdGVtLmNvbVxcL3NcXC94XFwvMWMyZmQxNGJmMzEwYjZhZmY2NDlcIn0sXCJwYXJ0bmVyXCI6XCJhbWF6b24tZXUtc3luY1wifSxcIk1lcmtsZVwiOntcInNhbXBsZVwiOjAsXCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI4NzUyXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yODc1MlwifSxcInBhcnRuZXJcIjpcIk1lcmtsZVwifSxcInNpcmRhdGFcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0zNDQ1OFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MzQ0NThcIn0sXCJzYW1wbGVcIjowLFwicGFydG5lclwiOlwic2lyZGF0YVwifSxcInNlbVwiOntcInR0bFwiOjcsXCJzYW1wbGVcIjo1MCxcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTEwMzYyXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0xMDM2MlwifSxcInBhcnRuZXJcIjpcInNlbWFzaW9cIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIixcIm14XCIsXCJhdVwiLFwiaGtcIixcImluXCIsXCJuelwiLFwic2dcIixcImF0XCIsXCJiZVwiLFwiZGtcIixcImZpXCIsXCJmclwiLFwiZGVcIixcIml0XCIsXCJubFwiLFwiZXNcIixcInNlXCIsXCJjaFwiLFwidWtcIl19LFwic3ByXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90di5zcHJpbmdzZXJ2ZS5jb21cXC9zc3VzZXJzeW5jXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3R2LnNwcmluZ3NlcnZlLmNvbVxcL3NzdXNlcnN5bmNcIn0sXCJwYXJ0bmVyXCI6XCJzcHJpbmdzZXJ2ZVwiLFwiY291bnRyeVwiOltcImRlXCIsXCJjYVwiLFwiZnJcIixcImdiXCIsXCJlc1wiLFwiYnJcIixcImpwXCIsXCJrclwiLFwidHJcIixcInBsXCIsXCJhdVwiLFwibXhcIixcIml0XCIsXCJhclwiLFwiaWRcIixcInBoXCIsXCJ0d1wiLFwibmxcIixcImF0XCIsXCJjaFwiLFwiY2xcIixcIm56XCIsXCJ0aFwiLFwic2VcIixcInNnXCIsXCJka1wiLFwiYmVcIixcImluXCIsXCJub1wiLFwiZmlcIixcInBlXCIsXCJjb1wiLFwibXlcIl19fX0sXCJuZXRzXCI6e1wic2FtcGxlXCI6MTAwLFwicGl4ZWxzXCI6e319LFwicHVic1wiOntcInNhbXBsZVwiOjAsXCJwaXhlbHNcIjp7fX19LFwibm90aWZ5XCI6e1wicnViaWNvblwiOntcInNhbXBsZVwiOjAsXCJpbWdcIjpcImh0dHA6XFwvXFwvdGFwLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3N0YXRzXFwvcnRic3luY1wifX0sXCJwcmlvcml0eVwiOjIwLFwicmVzeW5jXCI6MCxcIm1heF9pZV9wYXJ0bmVyc1wiOjEwMDAsXCJsYXN0TW9kaWZpZWRcIjpcIjIwMTgtMDUtMTAgMDk6MTk6NTlcIixcImRhdGVSZXRyaWV2ZWRcIjpcIjIwMjMtMDUtMjMgMTQ6MTY6MjAgUERUXCJ9O1xuXG5mdW5jdGlvbiBpc1NlbGxlclN5bmMoKXtyZXR1cm4hIXJldHJpZXZlUXVlcnlQYXJhbXMoKS5wfWZ1bmN0aW9uIHNob3VsZFNraXBCdXllclN5bmMoKXtyZXR1cm4gc2tpcEJ1eWVyU3luY3x8ITE9PT1za2lwQnV5ZXJTeW5jP3NraXBCdXllclN5bmM6TWF0aC5mbG9vcigxMDAqTWF0aC5yYW5kb20oKSk8TnVtYmVyKHJ0Yl9zeW5jLnNhbXBsZSk/YWxyZWFkeVJhbk9uUGFnZSgpPyhsb2coXCJza2lwcGluZyBidXllciBzeW5jIGNhdXNlIGFscmVhZHkgcmFuXCIpLHNraXBCdXllclN5bmM9ITApOnNraXBCdXllclN5bmM9ITE6KGxvZyhcInNraXBwaW5nIGJ1eWVyIHN5bmMgZHVlIHRvIHNhbXBsaW5nXCIpLHNraXBCdXllclN5bmM9ITApfWZ1bmN0aW9uIGdldFBhcnRuZXJGY2FwcyhhKXt0cnl7dmFyIGI9SlNPTi5wYXJzZShsc0dldChhKSl9Y2F0Y2goZSl7fXJldHVybiBifHx7fX1mdW5jdGlvbiBnZXRQYXJ0bmVyRmNhcChhLGIpe3JldHVybiBiPyhhW2JdPWFbYl18fGNyZWF0ZU5ld0ZjYXAoKSxhW2JdKTpudWxsfWZ1bmN0aW9uIGlzRXhwaXJlZChhKXtyZXR1cm4hYXx8IWEuZXhwfHxhLmV4cDwobmV3IERhdGUpLmdldFRpbWUoKS8xZTN9ZnVuY3Rpb24gaXNDYXBwZWQoYSl7cmV0dXJuISFhJiZhLmNhcD49Y2FwJiYhaXNFeHBpcmVkKGEpfWZ1bmN0aW9uIGNyZWF0ZU5ld0ZjYXAoKXtyZXR1cm57Y2FwOjAsZXhwOihuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlMytleHBpcmF0aW9ufX1mdW5jdGlvbiBpbmNyZW1lbnRQYXJ0bmVyRmNhcChhKXthLmNhcCsrfWZ1bmN0aW9uIHJlbW92ZUV4cGlyZWRQYXJ0bmVycyhhKXtmb3IodmFyIGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiZpc0V4cGlyZWQoYVtiXSkmJmRlbGV0ZSBhW2JdfWZ1bmN0aW9uIHNhdmVQYXJ0bmVyRmNhcHMoYSxiKXtpZihhKXRyeXtsc1NldChhLEpTT04uc3RyaW5naWZ5KGIpKX1jYXRjaChlKXt9fWZ1bmN0aW9uIGdldENvbnNlbnRXaW5kb3dGb3IoYSl7Zm9yKHZhciBiPXdpbmRvdztiIT09d2luZG93LnRvcDspe2I9Yi5wYXJlbnQ7dHJ5e2lmKGIuZnJhbWVzW2FdKXJldHVybiBifWNhdGNoKGUpe319cmV0dXJuITF9ZnVuY3Rpb24gb3pfb25QaXhlbHNMb2FkZWQoYSl7aWYoYSYmYS5waXhlbHMpZm9yKHZhciBiLGM9MDtjPGEucGl4ZWxzLmxlbmd0aDtjKyspKGI9YS5waXhlbHNbY10udXJsKSYmMD09Yi5pbmRleE9mKFwiaHR0cFwiKSYmKChuZXcgSW1hZ2UpLnNyYz1hcHBlbmRDb25zZW50UVMoYikpfWZ1bmN0aW9uIGdldFJlZmVycmVyKCl7dmFyIGEsYj1kb2N1bWVudC5yZWZlcnJlcjtyZXR1cm4gYiYmYi5sZW5ndGg+MCYmKGE9ZXNjYXBlKGIpKSxhfWZ1bmN0aW9uIHNldENvb2tpZShhLGIsYyl7dmFyIGQ7aWYoYyl7dmFyIGU9bmV3IERhdGU7ZS5zZXRUaW1lKGUuZ2V0VGltZSgpKzI0KmMqNjAqNjAqMWUzKSxkPVwiOyBleHBpcmVzPVwiK2UudG9HTVRTdHJpbmcoKX1lbHNlIGQ9XCJcIjt0cnl7ZG9jdW1lbnQuY29va2llPWErXCI9XCIrZXNjYXBlKGIpK2QrXCI7IHBhdGg9LzsgU2FtZVNpdGU9Tm9uZTsgU2VjdXJlXCJ9Y2F0Y2goZSl7fX1mdW5jdGlvbiBkZWxldGVDb29raWUoYSl7dHJ5e2RvY3VtZW50LmNvb2tpZT1hK1wiPTsgUGF0aD0vOyBFeHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UOyBTYW1lU2l0ZT1Ob25lOyBTZWN1cmVcIn1jYXRjaChlKXt9fWZ1bmN0aW9uIHJlYWRDb29raWUoYSl7dmFyIGI9YStcIj1cIixjPVwiXCI7dHJ5e2M9ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKX1jYXRjaChlKXt9Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe2Zvcih2YXIgZT1jW2RdO1wiIFwiPT1lLmNoYXJBdCgwKTspZT1lLnN1YnN0cmluZygxLGUubGVuZ3RoKTtpZigwPT1lLmluZGV4T2YoYikpcmV0dXJuIHVuZXNjYXBlKGUuc3Vic3RyaW5nKGIubGVuZ3RoLGUubGVuZ3RoKSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdHJpbV93aGl0ZXNwYWNlKGEpe3JldHVybiBhLnJlcGxhY2UoL15cXHMrfFxccyskL2dtLFwiXCIpfWZ1bmN0aW9uIGNvdW50Q29va2llcyhhKXt2YXIgYj1cIlwiO3RyeXtiPWRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIil9Y2F0Y2goZSl7fWZvcih2YXIgYz0wLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXTtlPXRyaW1fd2hpdGVzcGFjZShlKSxhPzA9PWUuaW5kZXhPZihhKSYmYysrOmMrK31yZXR1cm4gY31mdW5jdGlvbiBhZGRTY3JpcHRBc3luYyhhLGIpe3ZhciBjO2M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSxiJiZjLnNldEF0dHJpYnV0ZShcImlkXCIsYiksYy5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJ0ZXh0L2phdmFzY3JpcHRcIiksYT1hLnJlcGxhY2UoL1xccy9nLFwiK1wiKSxjLnNldEF0dHJpYnV0ZShcInNyY1wiLGEpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKS5pdGVtKDApLmFwcGVuZENoaWxkKGMpfWZ1bmN0aW9uIGFkZFNjcmlwdChhLGIpe3ZhciBjPSc8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBTUkM9XCInK2ErJ1wiIGFzeW5jPjxcXC9zY3JpcHQ+Jztkb2N1bWVudC53cml0ZShjKX1mdW5jdGlvbiByZXRyaWV2ZVF1ZXJ5UGFyYW1zKCl7Zm9yKHZhciBhLGI9d2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSksYz1iLnNwbGl0KFwiJlwiKSxkPXt9LGU9MDtlPGMubGVuZ3RoO2UrKylhPWNbZV0uc3BsaXQoXCI9XCIpLGFbMF0mJihkW2RlY29kZVVSSUNvbXBvbmVudChhWzBdKV09ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV18fFwiXCIpKTtyZXR1cm4gZH1mdW5jdGlvbiBnZXRDb3VudHJ5KCl7cmV0dXJuKG5hdmlnYXRvci5sYW5ndWFnZXx8bmF2aWdhdG9yLnVzZXJMYW5ndWFnZXx8XCJcIikuc3Vic3RyKC0yKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGdldFJlZ2lvbihhKXtpZihhKWZvcih2YXIgYiBpbiByZWdpb25Db3VudHJpZXMpaWYocmVnaW9uQ291bnRyaWVzLmhhc093blByb3BlcnR5KGIpJiZyZWdpb25Db3VudHJpZXNbYl0uaW5kZXhPZihhKT4tMSlyZXR1cm4gYjtyZXR1cm5cIlwifWZ1bmN0aW9uIGdldEFsbG93TGlzdCgpe3RyeXt2YXIgYT1cImVtaWx5X2FsbG93bGlzdFwiLGI9c3NHZXQoYSk7aWYoIWIpcmV0dXJuO3JldHVybiBiPWIuc3BsaXQoXCItXCIpLChuZXcgRGF0ZSkuZ2V0VGltZSgpLU51bWJlcihiWzBdKT40NWUzP3ZvaWQgc3NSZW1vdmUoYSk6SlNPTi5wYXJzZShiWzFdKX1jYXRjaChlKXtyZXR1cm4gdm9pZCBsb2coXCJhbGxvd2xpc3QgZXJyb3I6XCIsZSl9fWZ1bmN0aW9uIGdldFF1ZXJ5U3RyaW5nUGFyYW0oYSl7aWYoIWF8fC0xPT09KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2h8fFwiXCIpLmluZGV4T2YoYSkpcmV0dXJuIG51bGw7dmFyIGI9bmV3IFJlZ0V4cChcIls/Jl1cIithK1wiKCg9KFteJl0qKSl8KCZ8JCkpXCIpLGM9Yi5leGVjKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO3JldHVybiFjfHxjLmxlbmd0aDw1P251bGw6ZGVjb2RlVVJJQ29tcG9uZW50KGNbM118fFwiXCIpfWZ1bmN0aW9uIGxvYWRFeHBpcmF0aW9uKCl7dmFyIGE7aWYobG9jYWxTdG9yYWdlQWNjZXNzKWE9bHNHZXQ7ZWxzZXtpZighc2Vzc2lvblN0b3JhZ2VBY2Nlc3MpcmV0dXJuIGxvZyhcIk5vIHN0b3JhZ2UgYWNjZXNzLiBFeHBpcmF0aW9uIG5vdCBsb2FkZWRcIikse307YT1zc0dldH12YXIgYj17fSxjPWEoXCJwdXhcIik7aWYoIWMpcmV0dXJuIGI7dmFyIGQsZSxmPWMuc3BsaXQoXCImXCIpO2Zvcih2YXIgZyBpbiBmKXt2YXIgaD1mW2ddLnNwbGl0KFwiPVwiKTtpZighKGgubGVuZ3RoPDIpKXtkPWhbMF0sZT1oWzFdO3ZhciBpPWUuc3BsaXQoXCIsXCIpO2kubGVuZ3RoPjAmJihiW2RdPXtjcmVhdGVkOmlbMF19KX19cmV0dXJuIGJ9ZnVuY3Rpb24gc2F2ZUV4cGlyYXRpb24oYSl7dmFyIGI7aWYobG9jYWxTdG9yYWdlQWNjZXNzKWI9bHNTZXQ7ZWxzZXtpZighc2Vzc2lvblN0b3JhZ2VBY2Nlc3MpcmV0dXJuIHZvaWQgbG9nKFwiTm8gc3RvcmFnZSBhY2Nlc3MuIEV4cGlyYXRpb24gbm90IHNhdmVkXCIpO2I9c3NTZXR9dmFyIGM9XCJcIjtmb3IobmFtZSBpbiBhKXt2YXIgZD1hW25hbWVdO2MrPW5hbWUrXCI9XCIsYys9ZC5jcmVhdGVkLGMrPVwiJlwifWIoXCJwdXhcIixjKX1mdW5jdGlvbiBpc19leHBpcmVkKGEsYil7cmV0dXJuIWJ8fChhPU51bWJlcihhKSwhKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzM2ZTUtbmV3IERhdGUoMjAxMCwwLDEsMCwwLDAsMCkuZ2V0VGltZSgpLzM2ZTU8bmV3IE51bWJlcihiLmNyZWF0ZWQpKzI0KmEpKX1mdW5jdGlvbiBzaG91bGRGaXJlUGl4ZWwoYSl7dmFyIGI9ZXhwaXJhdGlvbl9pbmZvW2EubmlkXTtpZihiJiYhaXNfZXhwaXJlZChhLmluZm8udHRsfHxhLmNvbnRleHQudHRsfHxydGJfc3luYy50dGwsYikpcmV0dXJuITE7dmFyIGM9MD09YS5pbmZvLnNhbXBsZT9hLmluZm8uc2FtcGxlOmEuaW5mby5zYW1wbGV8fGEuY29udGV4dC5zYW1wbGV8fHJ0Yl9zeW5jLnBpeGVsX3NhbXBsZXx8MDtyZXR1cm4gYz1OdW1iZXIoYyksTWF0aC5mbG9vcigxMDAqTWF0aC5yYW5kb20oKSk8Y31mdW5jdGlvbiBmaXJlUGl4ZWwoYSl7dmFyIGI9TWF0aC5mbG9vcigobmV3IERhdGUpLmdldFRpbWUoKS8zNmU1KSxjPW5ldyBEYXRlKDIwMTAsMCwxLDAsMCwwLDApLmdldFRpbWUoKS8zNmU1O2V4cGlyYXRpb25faW5mb1thLm5pZF09e2NyZWF0ZWQ6Yi1jfTt2YXIgZD1hLmluZm8uc2VjdXJlP2EuaW5mby5zZWN1cmU6YS5pbmZvO2lmKGQpe3ZhciBlPWdldFJlZmVycmVyKCk7aWYoZC5zY3JpcHQpe3ZhciBmPWQuc2NyaXB0O1wicnBcIj09YS5uaWQmJmUmJihmPWFwcGVuZFFTUGFyYW1zKGYsXCJyZj1cIitlKSl9ZC5pbWcmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXsobmV3IEltYWdlKS5zcmM9YXBwZW5kQ29uc2VudFFTKGQuaW1nKX0sMTAwKSxkLmlmcmFtZSYmZG9jdW1lbnQud3JpdGUoXCI8aWZyYW1lIHNyYz0nXCIrYXBwZW5kQ29uc2VudFFTKGQuaWZyYW1lKStcIicgd2lkdGg9JzEnIGhlaWdodD0nMScgZnJhbWVib3JkZXI9JzAnPjwvaWZyYW1lPlwiKSxkLnNjcmlwdCYmYWRkU2NyaXB0KGFwcGVuZENvbnNlbnRRUyhmKSl9fWZ1bmN0aW9uIHNodWZmbGUoYSl7dmFyIGI9YS5sZW5ndGg7aWYoMD09YilyZXR1cm4hMTtmb3IoOy0tYjspe3ZhciBjPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooYisxKSksZD1hW2JdLGU9YVtjXTthW2JdPWUsYVtjXT1kfX1mdW5jdGlvbiBwcmlvcml0aXplKGEpe2Euc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLmluZm8ucHJpb3JpdHktYi5pbmZvLnByaW9yaXR5fSl9ZnVuY3Rpb24gZmlyZVBpeGVsc1RvTWF4KGEsYil7Zm9yKHZhciBjPTA7YzxiJiZjPGEubGVuZ3RoO2MrKylmaXJlUGl4ZWwoYVtjXSl9ZnVuY3Rpb24gZmlyZVJhbmRvbVBpeGVsc0J5UHJpb3JpdHkoYSxiKXt2YXIgYz1zb3J0UGl4ZWxzQnlQcmlvcml0eShhKTthbGxvY2F0ZVBpeGVsQ2FsbHMoYyxiKSxmaXJlWFJhbmRvbVBpeGVscyhjLnAxLGMucDFDYWxscyksZmlyZVhSYW5kb21QaXhlbHMoYy5vdGhlcixjLm90aGVyQ2FsbHMpfWZ1bmN0aW9uIHNvcnRQaXhlbHNCeVByaW9yaXR5KGEpe3ZhciBiPXtwMTpbXSxvdGhlcjpbXX07cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihhKXtzb3J0UGl4ZWwoYSxiKX0pLGJ9ZnVuY3Rpb24gc29ydFBpeGVsKGEsYil7MT09PWEuaW5mby5wcmlvcml0eT9iLnAxLnB1c2goYSk6Yi5vdGhlci5wdXNoKGEpfWZ1bmN0aW9uIGFsbG9jYXRlUGl4ZWxDYWxscyhhLGIpe3ZhciBjPWxvY2FsU3RvcmFnZUFjY2Vzc3x8c2Vzc2lvblN0b3JhZ2VBY2Nlc3MsZD1jPzQ6MixlPWEucDEubGVuZ3RoLGY9YS5vdGhlci5sZW5ndGg7Zm9yKGEucDFDYWxscz1kZXRlcm1pbmVBbGxvY2F0aW9uKGUsZixkKSxhLm90aGVyQ2FsbHM9ZGV0ZXJtaW5lQWxsb2NhdGlvbihmLGUsZCk7YS5wMUNhbGxzK2Eub3RoZXJDYWxscz5iJiZhLm90aGVyQ2FsbHM+MDspYS5vdGhlckNhbGxzLT0xO2Zvcig7YS5wMUNhbGxzK2Eub3RoZXJDYWxscz5iJiZhLnAxQ2FsbHM+MDspYS5wMUNhbGxzLT0xfWZ1bmN0aW9uIGRldGVybWluZUFsbG9jYXRpb24oYSxiLGMpe3ZhciBkPTA7cmV0dXJuIGI8YyYmKGQ9Yy1iKSxNYXRoLm1pbihhLGMrZCl9ZnVuY3Rpb24gZmlyZVhSYW5kb21QaXhlbHMoYSxiKXtmb3IodmFyIGM9MDtjPGI7YysrKXt2YXIgZD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqYS5sZW5ndGgpO2ZpcmVQaXhlbChhLnNwbGljZShkLDEpWzBdKX19ZnVuY3Rpb24gYXJyYXlfY29udGFpbnMoYSxiKXtmb3IoZSBpbiBhKWlmKGI9PWFbZV0pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZGV0ZWN0SUUoKXt2YXIgYT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtyZXR1cm4gYS5pbmRleE9mKFwiTVNJRSBcIik+MHx8KGEuaW5kZXhPZihcIlRyaWRlbnQvXCIpPjB8fGEuaW5kZXhPZihcIkVkZ2UvXCIpPjApfWZ1bmN0aW9uIGRvUGl4ZWxzKCl7dmFyIGE9ITAsYj1bXSxjPVtdO2V4cGlyYXRpb25faW5mbz1sb2FkRXhwaXJhdGlvbigpO3ZhciBkPWdldEFsbG93TGlzdCgpO2QmJmxvZygncmVzdHJpY3RpbmcgdG8gdGhlIGZvbGxvd2luZyBcImFsbG93bGlzdFwiIHBpeGVsczonLGQpO2Zvcih2YXIgZSBpbiBydGJfcGl4ZWxfc2V0KXt2YXIgZj1ydGJfcGl4ZWxfc2V0W2VdLGc9cnRiX3N5bmMucGl4ZWxfc2V0c1tmXTtpZihnKWZvcihtIGluIGcucGl4ZWxzKWlmKCFkfHxkLmluZGV4T2YobSk+LTEpe3ZhciBoPWcucGl4ZWxzW21dO2gucHJpb3JpdHk9aC5wcmlvcml0eXx8Zy5wcmlvcml0eXx8cnRiX3N5bmMucHJpb3JpdHksaXNQaXhlbEFsbG93ZWQoaC5zYW1wbGUsaC5yZWdpb24scmVxdWVzdF9yZWdpb24saC5jb3VudHJ5LHJlcXVlc3RfY291bnRyeSkmJihoLnR0bD1oLnR0bHx8Zy50dGx8fHJ0Yl9zeW5jLnR0bCxiW2IubGVuZ3RoXT17cGl4ZWxfc2V0OmYsbmlkOm0saW5mbzpoLGNvbnRleHQ6Z30pfX1pZihwcmlvcml0aXplKGIpLGRldGVjdElFKCkpe3ZhciBpPXJ0Yl9zeW5jLm1heF9pZV9wYXJ0bmVyc3x8Yi5sZW5ndGg7Yi5zcGxpY2UoaSxiLmxlbmd0aC1pKX1mb3IodmFyIGUgaW4gYil7dmFyIGo9YltlXTtpc19leHBpcmVkKGouaW5mby50dGwsZXhwaXJhdGlvbl9pbmZvW2oubmlkXSkmJjAhPWouaW5mby5zYW1wbGUmJihjW2MubGVuZ3RoXT1qKX1hPTA9PWMubGVuZ3RoLHNodWZmbGUoYykscHJpb3JpdGl6ZShjKTt2YXIgaz1jLmZpbHRlcihzaG91bGRGaXJlUGl4ZWwpLGw9cnRiX3N5bmMubWF4X3BpeGVsc3x8MTtyZWFkQ29va2llKFwia2hhb3NcIik/ZmlyZVBpeGVsc1RvTWF4KGssbCk6ZmlyZVJhbmRvbVBpeGVsc0J5UHJpb3JpdHkoYyxsKTt2YXIgbT1cInJ1Ymljb25cIixoPXJ0Yl9zeW5jLm5vdGlmeVttXSxqPXtuaWQ6bSxpbmZvOmgsY29udGV4dDpydGJfc3luY307c2hvdWxkRmlyZVBpeGVsKGopJiYoai5pbmZvLmltZys9XCI/YWxsZmlyZWQ9XCIrYSxqLmluZm8uaW1nKz1cIiZjb29raWVzPVwiK2NvdW50Q29va2llcygpLGouaW5mby5pbWcrPVwiJmllPVwiKyhkZXRlY3RJRSgpP1widHJ1ZVwiOlwiZmFsc2VcIiksZmlyZVBpeGVsKGopKSxzYXZlRXhwaXJhdGlvbihleHBpcmF0aW9uX2luZm8pfWZ1bmN0aW9uIGlzUGl4ZWxBbGxvd2VkKGEsYixjLGQsZSl7aWYoMD09YSlyZXR1cm4hMTt2YXIgZj0hKCFifHwhYyksZz0hKCFkfHwhZSk7cmV0dXJuIShmfHxnKXx8ZiYmKGI9PWN8fGFycmF5X2NvbnRhaW5zKGIsYykpfHxnJiYoZD09ZXx8YXJyYXlfY29udGFpbnMoZCxlKSl9ZnVuY3Rpb24gZ2V0Q29uc2VudFBhcmFtcyhhLGIsYyl7aWYoITE9PT1jKXJldHVybiBiO3ZhciBkPWJ8fHt9O3JldHVybiBhJiZcIm9iamVjdFwiPT10eXBlb2YgYSYmKGEudXNwU3RyaW5nfHwoZC5nZHByX2NvbnNlbnQ9YS50Y1N0cmluZ3x8YS5jb25zZW50RGF0YSksdm9pZCAwIT09YS5nZHByQXBwbGllcyYmKGQuZ2Rwcj1hLmdkcHJBcHBsaWVzPzE6MCksYS51c3BTdHJpbmcmJihkLnVzX3ByaXZhY3k9ZW5jb2RlVVJJQ29tcG9uZW50KGEudXNwU3RyaW5nKSkpLFwic3RyaW5nXCI9PXR5cGVvZiBhJiYoZC5nZHByX2NvbnNlbnQ9YSksZH1mdW5jdGlvbiBnZXRDb25zZW50UVMoYSl7cmV0dXJuIGE9YXx8e30sW1wiZ2Rwcl9jb25zZW50XCIsXCJnZHByXCIsXCJ1c19wcml2YWN5XCJdLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gdm9pZCAwIT09YVtiXX0pLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYitcIj1cIithW2JdfSkuam9pbihcIiZcIil9ZnVuY3Rpb24gYXBwZW5kUVNQYXJhbXMoYSxiKXtyZXR1cm4gYiYmYSYmKGErPWEubWF0Y2goL1xcPy8pP1wiJlwiOlwiP1wiLGErPWIpLGF9ZnVuY3Rpb24gYXBwZW5kQ29uc2VudFFTKGEpe3JldHVybiBhcHBlbmRRU1BhcmFtcyhhLGdldENvbnNlbnRRUyhjb25zZW50UGFyYW1zKSl9ZnVuY3Rpb24gYXBwZW5kUXVlcnlQYXJhbXMoYSl7YT1hfHx7fTt2YXIgYj1bXCJlbmRwb2ludFwiLFwicmVnaW9uXCIsXCJjb3VudHJ5XCIsXCJwXCJdO3JldHVybiBPYmplY3Qua2V5cyhhKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1iLmluZGV4T2YoYSkmJiFhLm1hdGNoKC9ecnBfLyl9KS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChiKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoYVtiXSl9KS5qb2luKFwiJlwiKX1mdW5jdGlvbiBnZXRDb25zZW50UVNQYXJhbXMoKXt2YXIgYT1nZXRRdWVyeVN0cmluZ1BhcmFtKFwiZ2RwclwiKSxiPWdldFF1ZXJ5U3RyaW5nUGFyYW0oXCJnZHByX2NvbnNlbnRcIiksYz1nZXRRdWVyeVN0cmluZ1BhcmFtKFwidXNfcHJpdmFjeVwiKTtpZihiKXZhciBkPXtnZHByX2NvbnNlbnQ6Yn07cmV0dXJuIGEmJihkPWR8fHt9LGQuZ2Rwcj1cImZhbHNlXCI9PT1hfHxcIjBcIj09PWE/MDoxKSxjJiYoZD1kfHx7fSxkLnVzX3ByaXZhY3k9YyksZH1mdW5jdGlvbiBnZXRDb25zZW50KGEpe2Z1bmN0aW9uIGIoYSxiLGMpezAhPT1mLmxlbmd0aCYmZi5pbmNsdWRlcyhhKSYmKGY9Zi5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIhPT1hfSksY29uc2VudFBhcmFtcz1nZXRDb25zZW50UGFyYW1zKGMsY29uc2VudFBhcmFtcyxiKSwwPT09Zi5sZW5ndGgmJmsoKSl9aWYoIShjb25zZW50UGFyYW1zPWdldENvbnNlbnRRU1BhcmFtcygpKXx8dm9pZCAwPT09Y29uc2VudFBhcmFtcy5nZHByKXZhciBjPWdldENvbnNlbnRXaW5kb3dGb3IoXCJfX3RjZmFwaUxvY2F0b3JcIiksZD1jP251bGw6Z2V0Q29uc2VudFdpbmRvd0ZvcihcIl9fY21wTG9jYXRvclwiKTtpZighY29uc2VudFBhcmFtc3x8IWNvbnNlbnRQYXJhbXMudXNfcHJpdmFjeSl2YXIgZT1nZXRDb25zZW50V2luZG93Rm9yKFwiX191c3BhcGlMb2NhdG9yXCIpO2lmKCFjJiYhZCYmIWUpcmV0dXJuIHZvaWQgYSgpO3ZhciBmPVtdLGc9ITEsaD1cInVzLVwiK01hdGgucmFuZG9tKCksaT1cInVzLVwiK01hdGgucmFuZG9tKCksaj1cInVzLVwiK01hdGgucmFuZG9tKCksaz1mdW5jdGlvbigpe2d8fChnPSEwLGEoKSl9O2lmKGM/KGYucHVzaChcInRjZlwiKSxjLnBvc3RNZXNzYWdlKHtfX3RjZmFwaUNhbGw6e2NhbGxJZDpqLGNvbW1hbmQ6XCJhZGRFdmVudExpc3RlbmVyXCIsdmVyc2lvbjoyfX0sXCIqXCIpKTpkJiYoZi5wdXNoKFwiY21wXCIpLGQucG9zdE1lc3NhZ2Uoe19fY21wQ2FsbDp7Y2FsbElkOmgsY29tbWFuZDpcImdldENvbnNlbnREYXRhXCIscGFyYW1ldGVyOm51bGx9fSxcIipcIikpLGUmJihmLnB1c2goXCJ1c3BcIiksZS5wb3N0TWVzc2FnZSh7X191c3BhcGlDYWxsOntjYWxsSWQ6aSxjb21tYW5kOlwiZ2V0VVNQRGF0YVwiLHZlcnNpb246MX19LFwiKlwiKSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsZnVuY3Rpb24oYSl7dHJ5e2lmKGEmJmEuZGF0YSl7dmFyIGM9XCJzdHJpbmdcIj09dHlwZW9mIGEuZGF0YT9KU09OLnBhcnNlKGEuZGF0YSk6YS5kYXRhLGQ9Yy5fX2NtcFJldHVybixlPWMuX191c3BhcGlSZXR1cm4sZj1jLl9fdGNmYXBpUmV0dXJuO2YmJmYuY2FsbElkPT09aiYmZi5yZXR1cm5WYWx1ZSYmKFwidGNsb2FkZWRcIj09PWYucmV0dXJuVmFsdWUuZXZlbnRTdGF0dXN8fFwidXNlcmFjdGlvbmNvbXBsZXRlXCI9PT1mLnJldHVyblZhbHVlLmV2ZW50U3RhdHVzKT8oY2xlYXJUaW1lb3V0KG0pLGIoXCJ0Y2ZcIixmLnN1Y2Nlc3MsZi5yZXR1cm5WYWx1ZSkpOmQmJmQuY2FsbElkPT09aCYmKGNsZWFyVGltZW91dChuKSxiKFwiY21wXCIsZC5zdWNjZXNzLGQucmV0dXJuVmFsdWUpKSxlJiZlLmNhbGxJZD09PWkmJihjbGVhclRpbWVvdXQobCksYihcInVzcFwiLGUuc3VjY2VzcyxlLnJldHVyblZhbHVlKSl9fWNhdGNoKGUpe319KSxlKXZhciBsPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKFwidXNwXCIsITEpfSwxMDApO2lmKGMpdmFyIG09c2V0VGltZW91dChmdW5jdGlvbigpe2IoXCJ0Y2ZcIiwhMSl9LDUwMCk7ZWxzZSBpZihkKXZhciBuPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKFwiY21wXCIsITEpfSw1MDApfWZ1bmN0aW9uIGNoZWNrQ29va2llcygpe2lmKGRvY3VtZW50Lm5vQ29va2llQWNjZXNzKXJldHVybiBsb2coXCJubyBhY2Nlc3MgdG8gZG9jdW1lbnQuY29va2llLCBydW5uaW5nIHN5bmNzIGFueXdheVwiKSx2b2lkIHJ1blN5bmNzKCk7aWYoIWRvY3VtZW50LmNvb2tpZSl7aWYoc2V0Q29va2llKFwiY2RcIixcImZhbHNlXCIpLCFkb2N1bWVudC5jb29raWUpcmV0dXJuIGxvZyhcIndpbGwgbm90IHJlcXVlc3Qga2hhb3MgY2F1c2UgY2Fubm90IHNldCBjb29raWVzXCIpLHZvaWQgcnVuU3luY3MoKTtkZWxldGVDb29raWUoXCJjZFwiKX1pZihyZWFkQ29va2llKFwia2hhb3NcIikpcnVuU3luY3MoKTtlbHNle2xvZyhcImtoYW9zIG5vdCBzZXQsIG1ha2luZyByZXF1ZXN0IGZvciBraGFvc1wiKTt2YXIgYT1nZXRDb25zZW50UVMoY29uc2VudFBhcmFtcyksYj1sc0dldChcImtoYW9zXCIpLGM9Yj8oYS5sZW5ndGg/XCImXCI6XCJcIikrXCJraGFvcz1cIitiOlwiXCIsZD1uZXcgSW1hZ2U7ZC5vbmxvYWQ9ZnVuY3Rpb24oKXtydW5TeW5jcygpfSxkLnNyYz1cImh0dHBzOi8vdG9rZW4ucnViaWNvbnByb2plY3QuY29tL2toYW9zLmpwZz9cIithK2N9fWZ1bmN0aW9uIGFscmVhZHlSYW5PblBhZ2UoKXtmdW5jdGlvbiBhKCl7c3NSZW1vdmUoYil9aWYoIW5hdmlnYXRvci5jb29raWVFbmFibGVkKXJldHVybiBsb2coXCJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGNvb2tpZXNcIiksITE7dHJ5e3ZhciBiPVwiZW1pbHlSYW5cIjt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcj93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLGEsITEpOndpbmRvdy5hdHRhY2hFdmVudCYmd2luZG93LmF0dGFjaEV2ZW50KFwib251bmxvYWRcIixhKTt2YXIgYz1zc0dldChiKTtpZigoYz1jJiZOdW1iZXIoYykpJiYobmV3IERhdGUpLmdldFRpbWUoKS1jPDNlNSlyZXR1cm4hMDtzc1NldChiLChuZXcgRGF0ZSkuZ2V0VGltZSgpKX1jYXRjaChlKXtyZXR1cm4gbG9nKFwiZmFpbGVkIGNoZWNraW5nIGlmIGFscmVhZHkgcmFuOlwiLGUpLCExfXJldHVybiExfWZ1bmN0aW9uIHNlbGxlclN5bmMoYSxiLGMsZCl7YT1hfHx7fTt2YXIgZT17XCJ1cy13ZXN0XCI6XCJcIixcInVzLWVhc3RcIjpcIlwiLGV1OlwiXCIsYXBhYzpcIlwifSxmPVwiXCI7YS5lbmRwb2ludCBpbiBlJiYoZj1cIi1cIithLmVuZHBvaW50KTt2YXIgZz1bXCJodHRwczovL3BpeGVsXCIsZixcIi5ydWJpY29ucHJvamVjdC5jb20vZXhjaGFuZ2Uvc3luYy5waHA/cD1cIixiXS5qb2luKFwiXCIpO2c9YXBwZW5kUVNQYXJhbXMoZyxhcHBlbmRRdWVyeVBhcmFtcyhhKSksZz1hcHBlbmRRU1BhcmFtcyhnLGFwcGVuZFF1ZXJ5UGFyYW1zKGMpKSxkJiYoZz1hcHBlbmRRU1BhcmFtcyhnLFwia2hhb3M9XCIrZCkpLChuZXcgSW1hZ2UpLnNyYz1nfWZ1bmN0aW9uIGluaXRpYXRlU2VsbGVyU3luYyhhKXtpZighYSlyZXR1cm4hMTt2YXIgYj1nZXRQYXJ0bmVyRmNhcHMoXCJmY2FwXCIpO3JlbW92ZUV4cGlyZWRQYXJ0bmVycyhiKTt2YXIgYz1nZXRQYXJ0bmVyRmNhcChiLGEpLGQ9ITE7cmV0dXJuIGlzQ2FwcGVkKGMpfHwoZD0hMCxpbmNyZW1lbnRQYXJ0bmVyRmNhcChjKSksc2F2ZVBhcnRuZXJGY2FwcyhcImZjYXBcIixiKSxkfWZ1bmN0aW9uIHJ1blN5bmNzKCl7dmFyIGE9cmVhZENvb2tpZShcImtoYW9zXCIpO2lmKCEoYXx8ZG9jdW1lbnQubm9Db29raWVBY2Nlc3N8fGNoZWNrU2FtcGxpbmcoXCJydW5TeW5jcyB3aXRob3V0IGtoYW9zIGNvb2tpZVwiKSkpcmV0dXJuIHZvaWQgbG9nKFwic2tpcHBpbmcgc3luY3MgY2F1c2Ugbm8ga2hhb3MgYW5kIG5vdCBzYW1wbGVkXCIpO2NoZWNrS2hhb3NNYXRjaGVzUHJldmlvdXMoYSk7dmFyIGI9cmV0cmlldmVRdWVyeVBhcmFtcygpLGM9Yi5wO2lmKGMpe2xvZyhcImRvaW5nIHNlbGxlciBzeW5jXCIpO3ZhciBkPWxzR2V0KFwia2hhb3NcIiksZT1zc0dldChcImtoYW9zXCIpO2Muc3BsaXQoXCIsXCIpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gaW5pdGlhdGVTZWxsZXJTeW5jKGEpfSkuZm9yRWFjaChmdW5jdGlvbihjKXtyZXR1cm4gc2VsbGVyU3luYyhiLGMsY29uc2VudFBhcmFtcyxhfHxkfHxlKX0pfXNob3VsZFNraXBCdXllclN5bmMoKXx8KGxvZyhcImRvaW5nIGJ1eWVyIHN5bmNcIiksZG9QaXhlbHMoKSl9ZnVuY3Rpb24gY2hlY2tLaGFvc01hdGNoZXNQcmV2aW91cyhhKXtpZihhKXt2YXIgYj1sc0dldChcImtoYW9zXCIpO2EhPT1iJiYobG9nKFwia2hhb3MgKFwiK2ErXCIpIGRvZXMgbm90IG1hdGNoIHByZXZpb3VzIGtoYW9zIChcIitiK1wiKVwiKSxyZXNldFN5bmNUcmFja2luZygpLGxzU2V0KFwia2hhb3NcIixhKSl9fWZ1bmN0aW9uIHJlc2V0U3luY1RyYWNraW5nKCl7bG9nKFwicmVzZXR0aW5nIHN5bmMgdHJhY2tpbmdcIiksbHNSZW1vdmUoXCJwdXhcIiksbHNSZW1vdmUoXCJmY2FwXCIpfWZ1bmN0aW9uIGNoZWNrU2FtcGxpbmcoYSl7dmFyIGI9TnVtYmVyKHJ0Yl9zeW5jLnJlc2V0X3JhdGUpfHwwO3JldHVybiBNYXRoLmZsb29yKDEwMCpNYXRoLnJhbmRvbSgpKTxiPyhsb2coYSxcIjogcnVubmluZ1wiKSwhMCk6KGxvZyhhLFwiOiBOb3QgcnVubmluZyBkdWUgdG8gc2FtcGxpbmdcIiksITEpfWZ1bmN0aW9uIHN0YXJ0U3luYygpe3JldHVybiBsb2coXCJzdGFydGluZ1wiKSwhKHNob3VsZFNraXBCdXllclN5bmMoKSYmIWlzU2VsbGVyU3luYygpKSYmKGdldENvbnNlbnQoY2hlY2tDb29raWVzKSwhMCl9ZnVuY3Rpb24gbHNHZXQoYSl7dHJ5e3JldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYSl9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUubG9nKFwiTFM6IGZhaWxlZCB0byBnZXQ6XCIsYSksbnVsbH19ZnVuY3Rpb24gbHNTZXQoYSxiKXt0cnl7d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGEsYil9Y2F0Y2goZSl7Y29uc29sZS5sb2coXCJMUzogZmFpbGVkIHRvIHNldDpcIixhLGIpfX1mdW5jdGlvbiBsc1JlbW92ZShhKXt0cnl7d2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGEpfWNhdGNoKGUpe2NvbnNvbGUubG9nKFwiTFM6IGZhaWxlZCB0byByZW1vdmU6XCIsYSl9fWZ1bmN0aW9uIHNzR2V0KGEpe3RyeXtyZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oYSl9Y2F0Y2goZSl7cmV0dXJuIGNvbnNvbGUubG9nKFwiU1M6IGZhaWxlZCB0byBnZXQ6XCIsYSksbnVsbH19ZnVuY3Rpb24gc3NTZXQoYSxiKXt0cnl7d2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0oYSxiKX1jYXRjaChlKXtjb25zb2xlLmxvZyhcIlNTOiBmYWlsZWQgdG8gc2V0OlwiLGEsYil9fWZ1bmN0aW9uIHNzUmVtb3ZlKGEpe3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShhKX1jYXRjaChlKXtjb25zb2xlLmxvZyhcIlNTOiBmYWlsZWQgdG8gcmVtb3ZlOlwiLGEpfX1mdW5jdGlvbiBsb2coKXt0cnl7aWYoXCJ0cnVlXCI9PT1yZWFkQ29va2llKFwiZW1pbHlfZGVidWdcIil8fFwidHJ1ZVwiPT09bHNHZXQoXCJlbWlseV9kZWJ1Z1wiKSl7aWYoIWxvZ1ByZWZpeCl7dmFyIGE9XCJcIitNYXRoLnJhbmRvbSgpO2xvZ1ByZWZpeD1cIkVtaWx5IChcIithLnN1YnN0cmluZyhhLmxlbmd0aC0zKStcIik6XCJ9Y29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxbbG9nUHJlZml4XS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfX1jYXRjaChlKXt9fXZhciBza2lwQnV5ZXJTeW5jLGNvbnNlbnRQYXJhbXMscmVnaW9uQ291bnRyaWVzPXthZjpbXCJhb1wiLFwiYmlcIixcImJqXCIsXCJiZlwiLFwiYndcIixcImNmXCIsXCJjaVwiLFwiY21cIixcImNkXCIsXCJjZ1wiLFwia21cIixcImN2XCIsXCJkalwiLFwiZHpcIixcImVnXCIsXCJlclwiLFwiZWhcIixcImV0XCIsXCJnYVwiLFwiZ2hcIixcImduXCIsXCJnbVwiLFwiZ3dcIixcImdxXCIsXCJrZVwiLFwibHJcIixcImx5XCIsXCJsc1wiLFwibWFcIixcIm1nXCIsXCJtbFwiLFwibXpcIixcIm1yXCIsXCJtdVwiLFwibXdcIixcInl0XCIsXCJuYVwiLFwibmVcIixcIm5nXCIsXCJyZVwiLFwicndcIixcInNkXCIsXCJzblwiLFwic2hcIixcInNsXCIsXCJzb1wiLFwic3NcIixcInN0XCIsXCJzelwiLFwic2NcIixcInRkXCIsXCJ0Z1wiLFwidG5cIixcInR6XCIsXCJ1Z1wiLFwiemFcIixcInptXCIsXCJ6d1wiXSxhbjpbXCJhcVwiLFwidGZcIixcImJ2XCJdLGFzOltcImFmXCIsXCJhZVwiLFwiYW1cIixcImFwXCIsXCJhelwiLFwiYmRcIixcImJoXCIsXCJiblwiLFwiYnRcIixcImNuXCIsXCJoa1wiLFwiaWRcIixcImluXCIsXCJpb1wiLFwiaXJcIixcImlxXCIsXCJpbFwiLFwiam9cIixcImpwXCIsXCJrelwiLFwia2dcIixcImtoXCIsXCJrclwiLFwia3dcIixcImxhXCIsXCJsYlwiLFwibGtcIixcIm1vXCIsXCJtdlwiLFwibW1cIixcIm1uXCIsXCJteVwiLFwibnBcIixcIm9tXCIsXCJwa1wiLFwicGhcIixcImtwXCIsXCJwc1wiLFwicWFcIixcInNhXCIsXCJzZ1wiLFwic3lcIixcInRoXCIsXCJ0alwiLFwidG1cIixcInRsXCIsXCJ0d1wiLFwidXpcIixcInZuXCIsXCJ5ZVwiXSxhdTpbXCJhc1wiLFwiYXVcIixcImNjXCIsXCJja1wiLFwiY3hcIixcImZqXCIsXCJmbVwiLFwiZ3VcIixcImhtXCIsXCJraVwiLFwibWhcIixcIm1wXCIsXCJuY1wiLFwibmZcIixcIm51XCIsXCJuclwiLFwibnpcIixcInBuXCIsXCJwd1wiLFwicGdcIixcInBmXCIsXCJzYlwiLFwidGtcIixcInRvXCIsXCJ0dlwiLFwidW1cIixcInZ1XCIsXCJ3ZlwiLFwid3NcIl0sZXU6W1wiYXhcIixcImFsXCIsXCJhZFwiLFwiYXRcIixcImJlXCIsXCJiZ1wiLFwiYmFcIixcImJ5XCIsXCJjaFwiLFwiY3lcIixcImN6XCIsXCJkZVwiLFwiZGtcIixcImVzXCIsXCJlZVwiLFwiZXVcIixcImZpXCIsXCJmclwiLFwiZm9cIixcInVrXCIsXCJnZVwiLFwiZ2dcIixcImdpXCIsXCJnclwiLFwiaHJcIixcImh1XCIsXCJpbVwiLFwiaWVcIixcImlzXCIsXCJpdFwiLFwiamVcIixcImxpXCIsXCJsdFwiLFwibHVcIixcImx2XCIsXCJtY1wiLFwibWRcIixcIm1rXCIsXCJtdFwiLFwibWVcIixcIm5sXCIsXCJub1wiLFwicGxcIixcInB0XCIsXCJyb1wiLFwicnVcIixcInNqXCIsXCJzbVwiLFwicnNcIixcInNrXCIsXCJzaVwiLFwic2VcIixcInRyXCIsXCJ1YVwiLFwidmFcIl0sbmE6W1wiYXdcIixcImFpXCIsXCJhblwiLFwiYWdcIixcImJxXCIsXCJic1wiLFwiYmxcIixcImJ6XCIsXCJibVwiLFwiYmJcIixcImNhXCIsXCJjclwiLFwiY3VcIixcImN3XCIsXCJreVwiLFwiZG1cIixcImRvXCIsXCJncFwiLFwiZ2RcIixcImdsXCIsXCJndFwiLFwiaG5cIixcImh0XCIsXCJqbVwiLFwia25cIixcImxjXCIsXCJtZlwiLFwibXhcIixcIm1zXCIsXCJtcVwiLFwibmlcIixcInBhXCIsXCJwclwiLFwic3ZcIixcInBtXCIsXCJzeFwiLFwidGNcIixcInR0XCIsXCJ1c1wiLFwidmNcIixcInZnXCIsXCJ2aVwiXSxzYTpbXCJhclwiLFwiYm9cIixcImJyXCIsXCJjbFwiLFwiY29cIixcImVjXCIsXCJma1wiLFwiZ2ZcIixcImd5XCIsXCJwZVwiLFwicHlcIixcImdzXCIsXCJzclwiLFwidXlcIixcInZlXCJdfSxydGJfc3luYz13aW5kb3cucnRiX3N5bmN8fHt9LHJ0Yl9waXhlbF9zZXQ9W1wicnRiXCIsXCJhdWRcIixcIm5ldHNcIixcInB1YnNcIl0scmVxdWVzdF9jb3VudHJ5PWdldFF1ZXJ5U3RyaW5nUGFyYW0oXCJjb1wiKXx8Z2V0Q291bnRyeSgpLHJlcXVlc3RfcmVnaW9uPWdldFF1ZXJ5U3RyaW5nUGFyYW0oXCJnZW9cIil8fGdldFJlZ2lvbihyZXF1ZXN0X2NvdW50cnkpLGV4cGlyYXRpb249ODY0MDAsY2FwPTEsbG9jYWxTdG9yYWdlQWNjZXNzLHNlc3Npb25TdG9yYWdlQWNjZXNzO3RyeXtkb2N1bWVudC5jb29raWUsZG9jdW1lbnQubm9Db29raWVBY2Nlc3M9ITF9Y2F0Y2goZSl7ZG9jdW1lbnQubm9Db29raWVBY2Nlc3M9ITB9dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImFueVwiKSxsb2NhbFN0b3JhZ2VBY2Nlc3M9ITB9Y2F0Y2goZSl7bG9jYWxTdG9yYWdlQWNjZXNzPSExfXRyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcImFueVwiKSxzZXNzaW9uU3RvcmFnZUFjY2Vzcz0hMH1jYXRjaChlKXtzZXNzaW9uU3RvcmFnZUFjY2Vzcz0hMX12YXIgZXhwaXJhdGlvbl9pbmZvLGxvZ1ByZWZpeDtzdGFydFN5bmMoKTsifSwgImhlYWRlcnNTaXplIjogNDI4LCAiYm9keVNpemUiOiAxMDA4NSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTA1MTN9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAzMi4wNDEsICJyZWNlaXZlIjogMi45Njl9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICIyMy4zNy40Mi4xMzIiLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogIioucnViaWNvbnByb2plY3QuY29tIiwgImlzc3VlciI6ICJEaWdpQ2VydCBUTFMgSHlicmlkIEVDQyBTSEEzODQgMjAyMCBDQTEiLCAidmFsaWRGcm9tIjogMTY3ODE0NzIwMCwgInZhbGlkVG8iOiAxNzEyMTg4Nzk5fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuOTQxWiIsICJ0aW1lIjogMTMuMDY5OTk5OTk5OTk5OTk5LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly94LmJpZHN3aXRjaC5uZXQvc3luYz9kc3BfaWQ9MTE5JnVzZXJfaWQ9NTE0MjMzNjcyMzM1NzQ2NjIzMyZleHBpcmVzPTMwJnNzcD10aGUzM2Fjcm9zcyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW3sibmFtZSI6ICJ0dXVpZCIsICJ2YWx1ZSI6ICI2OWY1OGFmNS02NThiLTRkYjgtOGYyMC1kNDlkZmU3YTdhNmYifSwgeyJuYW1lIjogImMiLCAidmFsdWUiOiAiMTY4NDk0Mjg3NiJ9LCB7Im5hbWUiOiAidHV1aWRfbHUiLCAidmFsdWUiOiAiMTY4NDk0Mjg3NiJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAieC5iaWRzd2l0Y2gubmV0In0sIHsibmFtZSI6ICI6bWV0aG9kIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiOnBhdGgiLCAidmFsdWUiOiAiL3N5bmM/ZHNwX2lkPTExOSZ1c2VyX2lkPTUxNDIzMzY3MjMzNTc0NjYyMzMmZXhwaXJlcz0zMCZzc3A9dGhlMzNhY3Jvc3MifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJhY2NlcHQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIifSwgeyJuYW1lIjogImNvb2tpZSIsICJ2YWx1ZSI6ICJ0dXVpZD02OWY1OGFmNS02NThiLTRkYjgtOGYyMC1kNDlkZmU3YTdhNmY7IGM9MTY4NDk0Mjg3NjsgdHV1aWRfbHU9MTY4NDk0Mjg3NiJ9LCB7Im5hbWUiOiAicmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogImltYWdlIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuby1jb3JzIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtc2l0ZSIsICJ2YWx1ZSI6ICJjcm9zcy1zaXRlIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAiZHNwX2lkIiwgInZhbHVlIjogIjExOSJ9LCB7Im5hbWUiOiAidXNlcl9pZCIsICJ2YWx1ZSI6ICI1MTQyMzM2NzIzMzU3NDY2MjMzIn0sIHsibmFtZSI6ICJleHBpcmVzIiwgInZhbHVlIjogIjMwIn0sIHsibmFtZSI6ICJzc3AiLCAidmFsdWUiOiAidGhlMzNhY3Jvc3MifV0sICJoZWFkZXJzU2l6ZSI6IDY1NiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMzAyLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiY3VzdG9tX2RhdGEiLCAidmFsdWUiOiAiIn0sIHsibmFtZSI6ICJic3dfb3JpZ2luX2luaXQiLCAidmFsdWUiOiAiIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiY2FjaGUtY29udHJvbCIsICJ2YWx1ZSI6ICJuby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSJ9LCB7Im5hbWUiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiMCJ9LCB7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAibG9jYXRpb24iLCAidmFsdWUiOiAiLy9zc2MtY21zLjMzYWNyb3NzLmNvbS9wcy8/eGk9MTAmdXNfcHJpdmFjeT0meHU9NjlmNThhZjUtNjU4Yi00ZGI4LThmMjAtZDQ5ZGZlN2E3YTZmIn0sIHsibmFtZSI6ICJzZXQtY29va2llIiwgInZhbHVlIjogImN1c3RvbV9kYXRhPTsgcGF0aD0vOyBleHBpcmVzPU1vbiwgMDEtTWFyLTIwMDQgMDA6MDA6MDAgR01UOyBkb21haW49LmJpZHN3aXRjaC5uZXQ7IHNhbWVzaXRlPW5vbmU7IHNlY3VyZSJ9LCB7Im5hbWUiOiAic2V0LWNvb2tpZSIsICJ2YWx1ZSI6ICJic3dfb3JpZ2luX2luaXQ9OyBwYXRoPS87IGV4cGlyZXM9TW9uLCAwMS1NYXItMjAwNCAwMDowMDowMCBHTVQ7IGRvbWFpbj0uYmlkc3dpdGNoLm5ldDsgc2FtZXNpdGU9bm9uZTsgc2VjdXJlIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIiwgImNvbXByZXNzaW9uIjogMH0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDAsICJyZWRpcmVjdFVSTCI6ICJodHRwczovL3NzYy1jbXMuMzNhY3Jvc3MuY29tL3BzLz94aT0xMCZ1c19wcml2YWN5PSZ4dT02OWY1OGFmNS02NThiLTRkYjgtOGYyMC1kNDlkZmU3YTdhNmYiLCAiX3RyYW5zZmVyU2l6ZSI6IDB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAxMi4xNDksICJyZWNlaXZlIjogMC45MjF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICIzLjc2LjkxLjIzNiIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTYuOTU1WiIsICJ0aW1lIjogMTAzLjI1MjAwMDAwMDAwMDAxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9zc2MtY21zLjMzYWNyb3NzLmNvbS9wcy8/eGk9MTAmdXNfcHJpdmFjeT0meHU9NjlmNThhZjUtNjU4Yi00ZGI4LThmMjAtZDQ5ZGZlN2E3YTZmIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAic3NjLWNtcy4zM2Fjcm9zcy5jb20ifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvcHMvP3hpPTEwJnVzX3ByaXZhY3k9Jnh1PTY5ZjU4YWY1LTY1OGItNGRiOC04ZjIwLWQ0OWRmZTdhN2E2ZiJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciJ9LCB7Im5hbWUiOiAicmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogImltYWdlIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuby1jb3JzIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtc2l0ZSIsICJ2YWx1ZSI6ICJjcm9zcy1zaXRlIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAieGkiLCAidmFsdWUiOiAiMTAifSwgeyJuYW1lIjogInVzX3ByaXZhY3kiLCAidmFsdWUiOiAiIn0sIHsibmFtZSI6ICJ4dSIsICJ2YWx1ZSI6ICI2OWY1OGFmNS02NThiLTRkYjgtOGYyMC1kNDlkZmU3YTdhNmYifV0sICJoZWFkZXJzU2l6ZSI6IDU2NCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjA0LCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE2IEdNVCJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogIjMzWFAwMTUifSwgeyJuYW1lIjogIngtMzN4LXN0YXR1cyIsICJ2YWx1ZSI6ICIyMDAwMjA4In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDAsICJtaW1lVHlwZSI6ICJ4LXVua25vd24iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIiLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDcyLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA3Mn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDEwMi41ODcsICJyZWNlaXZlIjogMC42NjV9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICI2Ny4yMDIuMTA1LjIzIiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNi45NzdaIiwgInRpbWUiOiAxODkuNzY2MDAwMDAwMDAwMDIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbS9raGFvcy5qcGc/dXNfcHJpdmFjeT0xWU5OIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJ0b2tlbi5ydWJpY29ucHJvamVjdC5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cHM6Ly9ldXMucnViaWNvbnByb2plY3QuY29tLyJ9LCB7Im5hbWUiOiAiU2VjLUZldGNoLURlc3QiLCAidmFsdWUiOiAiaW1hZ2UifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1Nb2RlIiwgInZhbHVlIjogIm5vLWNvcnMifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1TaXRlIiwgInZhbHVlIjogInNhbWUtc2l0ZSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbeyJuYW1lIjogInVzX3ByaXZhY3kiLCAidmFsdWUiOiAiMVlOTiJ9XSwgImhlYWRlcnNTaXplIjogNDM3LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibm8tY2FjaGUsbm8tc3RvcmUsbXVzdC1yZXZhbGlkYXRlIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAiaW1hZ2UvanBnIn0sIHsibmFtZSI6ICJFeHBpcmVzIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogIlAzUCIsICJ2YWx1ZSI6ICJDUD1cIk5PSSBDVVJhIEFETWEgREVWYSBUQUlhIE9VUiBCVVMgSU5EIFVOSSBDT00gTkFWIElOVFwiIn0sIHsibmFtZSI6ICJQcmFnbWEiLCAidmFsdWUiOiAibm8tY2FjaGUifSwgeyJuYW1lIjogIlgtUlBIb3N0IiwgInZhbHVlIjogImY1OTgyZjRmOWNjNzllYjJiNDg5ZGRhOGI5MmUzMTQ0In0sIHsibmFtZSI6ICJjb250ZW50LWxlbmd0aCIsICJ2YWx1ZSI6ICIyODQifV0sICJjb250ZW50IjogeyJzaXplIjogMjg0LCAibWltZVR5cGUiOiAiaW1hZ2UvanBnIiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiLzlqLzRBQVFTa1pKUmdBQkFRRUFTQUJJQUFELzJ3QkRBUC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vMndCREFmLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUFSQ0FBQkFBRURBU0lBQWhFQkF4RUIvOFFBRlFBQkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3hBQVVFQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOFFBRkFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvRUFCUVJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FNQXdFQUFoRURFUUEvQUpnQS85az0iLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDI1MiwgImJvZHlTaXplIjogMjg0LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA1MzZ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDE0NS43OTMsICJjb25uZWN0IjogMTguNTg2LCAic3NsIjogMTQuMTY0LCAic2VuZCI6IDAsICJ3YWl0IjogMTAsICJyZWNlaXZlIjogMS4yMjN9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICI2OS4xNzMuMTQ0LjEzOSIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7InByb3RvY29sIjogIlRMUyAxLjIiLCAic3ViamVjdE5hbWUiOiAiKi5ydWJpY29ucHJvamVjdC5jb20iLCAiaXNzdWVyIjogIkRpZ2lDZXJ0IFRMUyBSU0EgU0hBMjU2IDIwMjAgQ0ExIiwgInZhbGlkRnJvbSI6IDE2Nzc5NzQ0MDAsICJ2YWxpZFRvIjogMTcxMjE4ODc5OX19LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3LjE5M1oiLCAidGltZSI6IC0xLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2MuYW1hem9uLWFkc3lzdGVtLmNvbS9iYW8tY3NtL2Fwcy1jb21tL2Fwc19jc20uanMiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIm5ldDo6RVJSX0ZBSUxFRCJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNy44MzRaIiwgInRpbWUiOiA4OTguOTk5LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly90cmFjay5qdW5vLmNvbS9zL3B2P3M9OTk5OTk5JmE9bG9nb24mcD1sb2dvbiZkPXVua25vd24maT03NUM4NzM3MjExQjc5RTEyMDRGODUwNDY1NDk0Qzc2QS5EQ0EtQVMwMSZjZj1zcCZzcnQ9MCZjcnQ9MCYiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogInRyYWNrLmp1bm8uY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiU2VjLUZldGNoLURlc3QiLCAidmFsdWUiOiAiaW1hZ2UifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1Nb2RlIiwgInZhbHVlIjogIm5vLWNvcnMifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1TaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW3sibmFtZSI6ICJzIiwgInZhbHVlIjogIjk5OTk5OSJ9LCB7Im5hbWUiOiAiYSIsICJ2YWx1ZSI6ICJsb2dvbiJ9LCB7Im5hbWUiOiAicCIsICJ2YWx1ZSI6ICJsb2dvbiJ9LCB7Im5hbWUiOiAiZCIsICJ2YWx1ZSI6ICJ1bmtub3duIn0sIHsibmFtZSI6ICJpIiwgInZhbHVlIjogIjc1Qzg3MzcyMTFCNzlFMTIwNEY4NTA0NjU0OTRDNzZBLkRDQS1BUzAxIn0sIHsibmFtZSI6ICJjZiIsICJ2YWx1ZSI6ICJzcCJ9LCB7Im5hbWUiOiAic3J0IiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogImNydCIsICJ2YWx1ZSI6ICIwIn1dLCAiaGVhZGVyc1NpemUiOiA0NzYsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogImNmIiwgInZhbHVlIjogInNwIiwgImRvbWFpbiI6ICJqdW5vLmNvbSIsICJwYXRoIjogIi8ifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLWNhY2hlLHBvc3QtY2hlY2s9MCxwcmUtY2hlY2s9MCJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAiaW1hZ2UvZ2lmIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFeHBpcmVzIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogIktlZXAtQWxpdmUiLCAidmFsdWUiOiAidGltZW91dD0yMCJ9LCB7Im5hbWUiOiAiUDNQIiwgInZhbHVlIjogInBvbGljeXJlZj1cImh0dHA6Ly93d3cuanVuby5jb20vY29tbW9uL3czYy9qdW5vLnhtbFwiLCBDUD1cIkNBTyBEU1AgQ1VSYSBBRE1hIERFVmEgVEFJYSBQU0FhIFBTRGEgT1VSIEJVUyBJTkQgUEhZIE9OTCBVTkkgRklOIENPTSBOQVYgSU5UIERFTSBQUkUgTE9DXCIifSwgeyJuYW1lIjogIlByYWdtYSIsICJ2YWx1ZSI6ICJuby1jYWNoZSJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogIiJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJjZj1zcDsgRG9tYWluPWp1bm8uY29tOyBQYXRoPS8ifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlgtVXNlciIsICJ2YWx1ZSI6ICIifV0sICJjb250ZW50IjogeyJzaXplIjogNDMsICJtaW1lVHlwZSI6ICJpbWFnZS9naWYiLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJSMGxHT0RsaEFRQUJBSUFBQVAvLy93QUFBQ0g1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlDUkFFQU93PT0iLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDQ1MywgImJvZHlTaXplIjogNTUsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDUwOH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogMzAwLjU5MiwgImNvbm5lY3QiOiAyOTguMTQsICJzc2wiOiAxOTkuNTU3LCAic2VuZCI6IDAsICJ3YWl0IjogOTkuMjQ5LCAicmVjZWl2ZSI6IDEuNDYxfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiNjQuMTM2LjQ1LjMyIiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMiIsICJzdWJqZWN0TmFtZSI6ICJ0cmFjay5uZXR6ZXJvLm5ldCIsICJpc3N1ZXIiOiAiR28gRGFkZHkgU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyIiwgInZhbGlkRnJvbSI6IDE2NjMwNjkwOTEsICJ2YWxpZFRvIjogMTY5NTY0MzQ1M319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3LjgzNVoiLCAidGltZSI6IDEwMDcuNDE1OTk5OTk5OTk5OSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vYjk1ZWQ4YTZlNDdmNmQzYTZmMWZkYTc0NzcwMWNjOGUuc2FmZWZyYW1lLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9zYWZlZnJhbWUvMS0wLTM3L2h0bWwvY29udGFpbmVyLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW10sICJjb250ZW50IjogeyJzaXplIjogLTEsICJtaW1lVHlwZSI6ICJ4LXVua25vd24ifSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IC0xLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAtMSwgIl9mYWlsdXJlVGV4dCI6ICJuZXQ6OkVSUl9BQk9SVEVEIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogODAuMjkxLCAiY29ubmVjdCI6IDQ2Mi4wOTcsICJzc2wiOiAyNTguNzA2LCAic2VuZCI6IDAsICJ3YWl0IjogMjA2LjMyMiwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNy44NDZaIiwgInRpbWUiOiA5NDkuODEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vc2FmZWZyYW1lLzEtMC0zNy9odG1sL2NvbnRhaW5lci5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIn0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAibmV0OjpFUlJfQUJPUlRFRCJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDI1Ljc3OSwgImNvbm5lY3QiOiA0NTkuOTUyLCAic3NsIjogMjU2LjE1NCwgInNlbmQiOiAwLCAid2FpdCI6IDIwNy45MjUsICJyZWNlaXZlIjogLTF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1In0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuODQ3WiIsICJ0aW1lIjogOTU3LjM1ODk5OTk5OTk5OTksICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UuaHRtbCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC43In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDY0NywgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIlY2X1ZqVGZjVWtyVjA4Zno3MVowMmoxeENRclExLnlXRVFkV2tvWU5wZVEtMTY4NDk0Mjg3OC0wLUFZM1MxVXZLYWd2YjhoNU5mMlVoenVMOE94M2locFNsdDdPU2Nwb2VZa0VZb0NrY0pWNmNVeG51THhJUFlPbStUT3NoUGxhOWtoNjUxVkNBa3Rnb1ZCST0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDVhODgwZjliOGUtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1hcVZlcEozNUFGaFZkdDZkRmlnZExyMmJGREdkU3dlejJ3anNBVDhvakFhNFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVY2X1ZqVGZjVWtyVjA4Zno3MVowMmoxeENRclExLnlXRVFkV2tvWU5wZVEtMTY4NDk0Mjg3OC0wLUFZM1MxVXZLYWd2YjhoNU5mMlVoenVMOE94M2locFNsdDdPU2Nwb2VZa0VZb0NrY0pWNmNVeG51THhJUFlPbStUT3NoUGxhOWtoNjUxVkNBa3Rnb1ZCST07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOCBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1hcVZlcEozNUFGaFZkdDZkRmlnZExyMmJGREdkU3dlejJ3anNBVDhvakFhNCJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDMwOSwgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDUxLCAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbD5cbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiPjxzY3JpcHQgYXN5bmM9XCJcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiLi9qc3RhZ1wiPjwvc2NyaXB0PjwvaGVhZD48Ym9keT48aWZyYW1lIHNyYz1cIi4vcGQoMikuaHRtbFwiIHdpZHRoPVwiMFwiIGhlaWdodD1cIjBcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj48L2lmcmFtZT48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjExLCAiYm9keVNpemUiOiAyNTgsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE4Njl9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA5NTUuMzY3LCAicmVjZWl2ZSI6IDEuOTkyfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNy44NTBaIiwgInRpbWUiOiA5MTcuODc5LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDEpLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2NTAsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJYd28zQ2pXOTZzWEhJejBGOE9wSmJFOFVxU1pKYTBGakVKbjN0ZzJkXy5nLTE2ODQ5NDI4NzgtMC1BYkxHK1RVemhrenBNV2NwdEE2MkNaZ0Nmd291Ly9YYjY3eVFVR1ZOYnQwQU1EQ1pnZFdzOHliOVdtMzA2UkZtd0FPSzRHa2RxUDhPUnlqTVk1cXphajQ9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1YTllMTYxOGU2LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOCBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtYTlXdnRhNDJKanlMSDVjUU1mZk1zRjFHTkZGWXo2NjZkUTd4WThUb3V1ZHlcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1Yd28zQ2pXOTZzWEhJejBGOE9wSmJFOFVxU1pKYTBGakVKbjN0ZzJkXy5nLTE2ODQ5NDI4NzgtMC1BYkxHK1RVemhrenBNV2NwdEE2MkNaZ0Nmd291Ly9YYjY3eVFVR1ZOYnQwQU1EQ1pnZFdzOHliOVdtMzA2UkZtd0FPSzRHa2RxUDhPUnlqTVk1cXphajQ9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTggR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDEpLmh0bWwifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtYTlXdnRhNDJKanlMSDVjUU1mZk1zRjFHTkZGWXo2NjZkUTd4WThUb3V1ZHkifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzMDksICJtaW1lVHlwZSI6ICJ0ZXh0L2h0bWwiLCAiY29tcHJlc3Npb24iOiA0NiwgInRleHQiOiAiPCFET0NUWVBFIGh0bWw+XG48IS0tIHNhdmVkIGZyb20gdXJsPSgwMDE0KWFib3V0OmludGVybmV0IC0tPlxuPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj48c2NyaXB0IGFzeW5jPVwiXCIgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIi4vanN0YWdcIj48L3NjcmlwdD48L2hlYWQ+PGJvZHk+PGlmcmFtZSBzcmM9XCIuL3BkKDEpLmh0bWxcIiB3aWR0aD1cIjBcIiBoZWlnaHQ9XCIwXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCI+PC9pZnJhbWU+PC9ib2R5PjwvaHRtbD4ifSwgImhlYWRlcnNTaXplIjogMTYxNCwgImJvZHlTaXplIjogMjYzLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxODc3fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogOTEyLjQ4MSwgInJlY2VpdmUiOiA1LjM5OH0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuODUyWiIsICJ0aW1lIjogNzQxLjMxNywgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSgyKS5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjUwLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAib1VTUkcyWUxiV3dxeXZ6cXlFRnFhUFBWMUZNRTBEblNLbFhucnNQam96Zy0xNjg0OTQyODc4LTAtQVZzK0VSY05CREl2aFJoNDlqaDJuQ2lYdXdUOHNwYjNaNkM3cWo3Nm1pTGRraHBsRjluRUhNYlYrbGFXRDZ6N0ttWS9NSllaa1htSEdwRlhEMktDNlNvPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NWE5Y2ZjOTI1Yy1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVZSY2VmTE1SOEJRZmRISmJZQll0dnUyOEF1VVBWd3Zld0JUR3l0OW1xcnlKXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09b1VTUkcyWUxiV3dxeXZ6cXlFRnFhUFBWMUZNRTBEblNLbFhucnNQam96Zy0xNjg0OTQyODc4LTAtQVZzK0VSY05CREl2aFJoNDlqaDJuQ2lYdXdUOHNwYjNaNkM3cWo3Nm1pTGRraHBsRjluRUhNYlYrbGFXRDZ6N0ttWS9NSllaa1htSEdwRlhEMktDNlNvPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE4IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSgyKS5odG1sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVZSY2VmTE1SOEJRZmRISmJZQll0dnUyOEF1VVBWd3Zld0JUR3l0OW1xcnlKIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMzA2LCAibWltZVR5cGUiOiAidGV4dC9odG1sIiwgImNvbXByZXNzaW9uIjogNDYsICJ0ZXh0IjogIjwhRE9DVFlQRSBodG1sPlxuPCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNClhYm91dDppbnRlcm5ldCAtLT5cbjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCI+PHNjcmlwdCBhc3luYz1cIlwiIHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCIuL2pzdGFnXCI+PC9zY3JpcHQ+PC9oZWFkPjxib2R5PjxpZnJhbWUgc3JjPVwiLi9wZC5odG1sXCIgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiPjwvaWZyYW1lPjwvYm9keT48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE2MTQsICJib2R5U2l6ZSI6IDI2MCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTg3NH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDczOS4yNTYsICJyZWNlaXZlIjogMi4wNjF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3Ljg2MFoiLCAidGltZSI6IDkwNy4xMjIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoMykuaHRtbCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC43In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDY1MCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogImc2OEVXZmZ0TExfMGQyWkxjeENUM0FGbzRIS3FwU1NtQ013ckIyb243TFEtMTY4NDk0Mjg3OC0wLUFSTnp1NXBiR0h3NUtrQnZOa3p0OFZ0MWRoS1FRU2V5RjRyU2VFalRYVy90WnZPMWpFZ3RjNDgrZ1dGdGkwR1U4NncwRWRaWWFISXB6Q3FVOWNrb2txZz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDVhYWQ5YTVjN2EtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1UR1I4S0I1R3VtY3Q4ZktHd3Z6cUhhRVplQnZjVnF5SkdaNWg3dFNyZmdmaVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPWc2OEVXZmZ0TExfMGQyWkxjeENUM0FGbzRIS3FwU1NtQ013ckIyb243TFEtMTY4NDk0Mjg3OC0wLUFSTnp1NXBiR0h3NUtrQnZOa3p0OFZ0MWRoS1FRU2V5RjRyU2VFalRYVy90WnZPMWpFZ3RjNDgrZ1dGdGkwR1U4NncwRWRaWWFISXB6Q3FVOWNrb2txZz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOCBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoMykuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1UR1I4S0I1R3VtY3Q4ZktHd3Z6cUhhRVplQnZjVnF5SkdaNWg3dFNyZmdmaSJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDI0MywgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDEyLCAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbD5cbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiPjwvaGVhZD48Ym9keT48c2NyaXB0IGFzeW5jPVwiXCIgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIi4vYXBzdGFnLmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4ifSwgImhlYWRlcnNTaXplIjogMTYxNCwgImJvZHlTaXplIjogMjMxLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxODQ1fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogOTAyLjc5LCAicmVjZWl2ZSI6IDQuMzMyfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNy44NjRaIiwgInRpbWUiOiA0MC4zMzIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoNCkuaHRtbCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC43In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDY1MCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogInhJLjZDUWJJTFNkNzlDUVZYN0Uxamp2ZUk3VDhqOXRmNy5LYXJETVY2aFEtMTY4NDk0Mjg3Ny0wLUFmczhzd0pENUJubXcyUWo5U1o3V2FzNFNwdFgwdU1MTVFuQXhQTHhOOHlTeU1xb2JUQUNDS2lkSko4MDZ0TndmbFM0N2JWVk9kNGcyOWY2TFBnaVhyND0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1YWE5NzQzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNyBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtUHVmOFJ5V1M4elhkMm41QlhhUzU1c2FnUDJxdkFvdGN0UjMxM1U0MzV0VENcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT14SS42Q1FiSUxTZDc5Q1FWWDdFMWpqdmVJN1Q4ajl0ZjcuS2FyRE1WNmhRLTE2ODQ5NDI4NzctMC1BZnM4c3dKRDVCbm13MlFqOVNaN1dhczRTcHRYMHVNTE1RbkF4UEx4Tjh5U3lNcW9iVEFDQ0tpZEpKODA2dE53ZmxTNDdiVlZPZDRnMjlmNkxQZ2lYcjQ9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTcgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDQpLmh0bWwifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtUHVmOFJ5V1M4elhkMm41QlhhUzU1c2FnUDJxdkFvdGN0UjMxM1U0MzV0VEMifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDg2MiwgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDM1OSwgInRleHQiOiAiXG48IS0tIHNhdmVkIGZyb20gdXJsPSgwMDE0KWFib3V0OmludGVybmV0IC0tPlxuPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj48c2NyaXB0IGFzeW5jPVwiXCIgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIi4vZ3B0LmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9XCIuL3B1YmFkc19pbXBsXzIwMjAwODI3MDEuanMuZG93bmxvYWRcIiBhc3luYz1cIlwiPjwvc2NyaXB0PjxsaW5rIHJlbD1cInByZWxvYWRcIiBocmVmPVwiLi9mLnR4dFwiIGFzPVwic2NyaXB0XCI+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiLi9mLnR4dFwiPjwvc2NyaXB0PjxsaW5rIHJlbD1cInByZWZldGNoXCIgaHJlZj1cImh0dHBzOi8vZGQ4ZmNjYTdhMjVmMDQ4ZDI3NGJjYjFmNzVhZDhhOTUuc2FmZWZyYW1lLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9zYWZlZnJhbWUvMS0wLTM3L2h0bWwvY29udGFpbmVyLmh0bWw/bj0xXCI+PGxpbmsgcmVsPVwicHJlZmV0Y2hcIiBocmVmPVwiaHR0cHM6Ly90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tL3NhZmVmcmFtZS8xLTAtMzcvaHRtbC9jb250YWluZXIuaHRtbD9uPTFcIj48L2hlYWQ+PGJvZHk+PGRpdiBpZD1cInR5bnQtZ3B0LXNsb3QtMVwiIGRhdGEtZ29vZ2xlLXF1ZXJ5LWlkPVwiQ05QT2c4X0R3ZXNDRlF6T3lBb2QydGdQelFcIj48ZGl2IGlkPVwiZ29vZ2xlX2Fkc19pZnJhbWVfLzMyODY3MDEwL0FfMzAweDYwMF8zMDB4MjUwXzE2MHg2MDBfMF9fY29udGFpbmVyX19cIiBzdHlsZT1cImJvcmRlcjogMHB0IG5vbmU7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiA2MDBweDtcIj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjI0LCAiYm9keVNpemUiOiA1MDMsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDIxMjd9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAzNy4yODEsICJyZWNlaXZlIjogMy4wNTF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3Ljg3MVoiLCAidGltZSI6IDM3LjM4MjAwMDAwMDAwMDAwNSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg1KS5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjUwLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAicTFqMnZ4N24xNmNsTi5lMnhvTENTSDBUdHQ4Rldyd0dKRmJUblpMMHRhOC0xNjg0OTQyODc3LTAtQWJpS25HMXJMclhTNHVUMmhvanMvWG1ETkQ3THZjekpheU4xcFRIN09WQXlQeUMwUmNaTkNMNVA5S1lPRk5oVHN4VkFub0ZUbi9qUGFNT0lpbE5jekV3PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MSJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDVhZTljODM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE3IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1RdGlQZHJpWGE3aHl1Qk5HOVV6VVQ1bnVocUtLdzNNc1RhYmtRNk5FdGNKZFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPXExajJ2eDduMTZjbE4uZTJ4b0xDU0gwVHR0OEZXcndHSkZiVG5aTDB0YTgtMTY4NDk0Mjg3Ny0wLUFiaUtuRzFyTHJYUzR1VDJob2pzL1htRE5EN0x2Y3pKYXlOMXBUSDdPVkF5UHlDMFJjWk5DTDVQOUtZT0ZOaFRzeFZBbm9GVG4valBhTU9JaWxOY3pFdz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxNyBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoNSkuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1RdGlQZHJpWGE3aHl1Qk5HOVV6VVQ1bnVocUtLdzNNc1RhYmtRNk5FdGNKZCJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifV0sICJjb250ZW50IjogeyJzaXplIjogMjQwLCAibWltZVR5cGUiOiAidGV4dC9odG1sIiwgImNvbXByZXNzaW9uIjogMTEsICJ0ZXh0IjogIjwhRE9DVFlQRSBodG1sPlxuPCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNClhYm91dDppbnRlcm5ldCAtLT5cbjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCI+PC9oZWFkPjxib2R5PjxzY3JpcHQgYXN5bmM9XCJcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiLi9hc3QuanMuZG93bmxvYWRcIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjI0LCAiYm9keVNpemUiOiAyMjksICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE4NTN9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAzMy45OTMsICJyZWNlaXZlIjogMy4zODl9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3LjkyMloiLCAidGltZSI6IDEuMTI2LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2dwdC5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg0KS5odG1sIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0MjMsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE1IEdNVCJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDAifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVJFQnpFNkRvN2VMZ25KV0FzZ3Q0NXZWRVR6NkxOcFcxaVpZQXR5S1NwcTY4In0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVJFQnpFNkRvN2VMZ25KV0FzZ3Q0NXZWRVR6NkxOcFcxaVpZQXR5S1NwcTY4XCIifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCwgQ29udGVudC1SYW5nZSwgWC1DaHVua2VkLU91dHB1dCwgWC1JcGZzLVBhdGgsIFgtSXBmcy1Sb290cywgWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvZ3B0LmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGQ0ZWJmMzdlNC1GUkEifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlLCBSYW5nZSwgVXNlci1BZ2VudCwgWC1SZXF1ZXN0ZWQtV2l0aCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA1NTYxOCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiA1NjY4MywgInRleHQiOiAiKGZ1bmN0aW9uKEUpe3ZhciB3aW5kb3c9dGhpczsvKlxuXG4gQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy5cbiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cbnZhciBhYT1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX0sYmE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfSxjYT1mdW5jdGlvbihhKXthPVtcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcihcIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3RcIik7fSxkYT1jYSh0aGlzKSxlYT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT09dHlwZW9mIFN5bWJvbChcInhcIiksbT17fSxoYT17fSxuPWZ1bmN0aW9uKGEsYil7dmFyIGM9aGFbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM/YzphW2JdfSxxPWZ1bmN0aW9uKGEsYixjKXtpZihiKWE6e3ZhciBkPWEuc3BsaXQoXCIuXCIpO2E9MT09PWQubGVuZ3RoO3ZhciBlPWRbMF0sZjshYSYmZSBpbiBtP2Y9bTpmPWRhO2ZvcihlPTA7ZTxkLmxlbmd0aC0xO2UrKyl7dmFyIGc9ZFtlXTtpZighKGcgaW4gZikpYnJlYWsgYTtmPWZbZ119ZD1kW2QubGVuZ3RoLTFdO2M9ZWEmJlwiZXM2XCI9PT1jP2ZbZF06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE/YmEobSxkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYoaGFbZF09ZWE/ZGEuU3ltYm9sKGQpOlwiJGpzY3AkXCIrZCxkPWhhW2RdLGJhKGYsZCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KSkpfX07cShcIlN5bWJvbFwiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oZSxmKXt0aGlzLmE9ZTtiYSh0aGlzLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ9KX07Yi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTt2YXIgYz0wLGQ9ZnVuY3Rpb24oZSl7aWYodGhpcyBpbnN0YW5jZW9mIGQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvclwiKTtyZXR1cm4gbmV3IGIoXCJqc2NvbXBfc3ltYm9sX1wiKyhlfHxcIlwiKStcIl9cIitjKyssZSl9O3JldHVybiBkfSxcImVzNlwiKTtxKFwiU3ltYm9sLml0ZXJhdG9yXCIsZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gYTthPSgwLG0uU3ltYm9sKShcIlN5bWJvbC5pdGVyYXRvclwiKTtmb3IodmFyIGI9XCJBcnJheSBJbnQ4QXJyYXkgVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBJbnQxNkFycmF5IFVpbnQxNkFycmF5IEludDMyQXJyYXkgVWludDMyQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheVwiLnNwbGl0KFwiIFwiKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWRhW2JbY11dO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBkJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBkLnByb3RvdHlwZVthXSYmYmEoZC5wcm90b3R5cGUsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGlhKGFhKHRoaXMpKX19KX1yZXR1cm4gYX0sXCJlczZcIik7dmFyIGlhPWZ1bmN0aW9uKGEpe2E9e25leHQ6YX07YVtuKG0uU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3JldHVybiBhfSxyPWZ1bmN0aW9uKGEpe3ZhciBiPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBtLlN5bWJvbCYmbihtLlN5bWJvbCxcIml0ZXJhdG9yXCIpJiZhW24obS5TeW1ib2wsXCJpdGVyYXRvclwiKV07cmV0dXJuIGI/Yi5jYWxsKGEpOntuZXh0OmFhKGEpfX0samE9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9W107IShiPWEubmV4dCgpKS5kb25lOyljLnB1c2goYi52YWx1ZSk7cmV0dXJuIGN9LGthPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQXJyYXk/YTpqYShyKGEpKX0sbGE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1hO3JldHVybiBuZXcgYn0sbWE7aWYoZWEmJlwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZiltYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgbmE7YTp7dmFyIG9hPXtXOiEwfSxwYT17fTt0cnl7cGEuX19wcm90b19fPW9hO25hPXBhLlc7YnJlYWsgYX1jYXRjaChhKXt9bmE9ITF9bWE9bmE/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErXCIgaXMgbm90IGV4dGVuc2libGVcIik7cmV0dXJuIGF9Om51bGx9dmFyIHFhPW1hLHJhPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9bGEoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYocWEpcWEoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKFwicHJvdG90eXBlXCIhPWMpaWYoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpe3ZhciBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxjLGQpfWVsc2UgYVtjXT1iW2NdfSx0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfTtxKFwiQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXthOnt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7Zm9yKHZhciBlPWQubGVuZ3RoLGY9MDtmPGU7ZisrKWlmKGIuY2FsbChjLGRbZl0sZixkKSl7Yj1mO2JyZWFrIGF9Yj0tMX1yZXR1cm4gYn19LFwiZXM2XCIpO3ZhciBzYT1mdW5jdGlvbihhLGIsYyl7aWYobnVsbD09YSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS5cIitjK1wiIG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkXCIpO2lmKGIgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuXCIrYytcIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvblwiKTtyZXR1cm4gYStcIlwifTtxKFwiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3ZhciBkPXNhKHRoaXMsYixcInN0YXJ0c1dpdGhcIiksZT1kLmxlbmd0aCxmPWIubGVuZ3RoO2M9TWF0aC5tYXgoMCxNYXRoLm1pbihjfDAsZC5sZW5ndGgpKTtmb3IodmFyIGc9MDtnPGYmJmM8ZTspaWYoZFtjKytdIT1iW2crK10pcmV0dXJuITE7cmV0dXJuIGc+PWZ9fSxcImVzNlwiKTt2YXIgdGE9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYSs9XCJcIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGY9YysrO3JldHVybnt2YWx1ZTpiKGYsYVtmXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtuKG0uU3ltYm9sLFwiaXRlcmF0b3JcIildPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBlfTtxKFwiQXJyYXkucHJvdG90eXBlLmtleXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIHRhKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGJ9KX19LFwiZXM2XCIpO3EoXCJBcnJheS5wcm90b3R5cGUudmFsdWVzXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybiB0YSh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGN9KX19LFwiZXM4XCIpO3EoXCJPYmplY3QuaXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9PT1jPzAhPT1ifHwxL2I9PT0xL2M6YiE9PWImJmMhPT1jfX0sXCJlczZcIik7cShcIkFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcigwPmMmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGY9ZFtjXTtpZihmPT09Ynx8bihPYmplY3QsXCJpc1wiKS5jYWxsKE9iamVjdCxmLGIpKXJldHVybiEwfXJldHVybiExfX0sXCJlczdcIik7cShcIlN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuLTEhPT1zYSh0aGlzLGIsXCJpbmNsdWRlc1wiKS5pbmRleE9mKGIsY3x8MCl9fSxcImVzNlwiKTtxKFwiV2Vha01hcFwiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gYyhnKXt2YXIgaD10eXBlb2YgZztyZXR1cm5cIm9iamVjdFwiPT09aCYmbnVsbCE9PWd8fFwiZnVuY3Rpb25cIj09PWh9aWYoZnVuY3Rpb24oKXtpZighYXx8IU9iamVjdC5zZWFsKXJldHVybiExO3RyeXt2YXIgZz1PYmplY3Quc2VhbCh7fSksaD1PYmplY3Quc2VhbCh7fSksaz1uZXcgYShbW2csMl0sW2gsM11dKTtpZigyIT1rLmdldChnKXx8MyE9ay5nZXQoaCkpcmV0dXJuITE7ay5kZWxldGUoZyk7ay5zZXQoaCw0KTtyZXR1cm4hay5oYXMoZykmJjQ9PWsuZ2V0KGgpfWNhdGNoKGwpe3JldHVybiExfX0oKSlyZXR1cm4gYTt2YXIgZD1cIiRqc2NvbXBfaGlkZGVuX1wiK01hdGgucmFuZG9tKCksZT0wLGY9ZnVuY3Rpb24oZyl7dGhpcy5hPShlKz1NYXRoLnJhbmRvbSgpKzEpLnRvU3RyaW5nKCk7aWYoZyl7Zz1yKGcpO2Zvcih2YXIgaDshKGg9Zy5uZXh0KCkpLmRvbmU7KWg9aC52YWx1ZSx0aGlzLnNldChoWzBdLGhbMV0pfX07Zi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsaCl7aWYoIWMoZykpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIFdlYWtNYXAga2V5XCIpO2lmKCF0KGcsZCkpe3ZhciBrPW5ldyBiO2JhKGcsZCx7dmFsdWU6a30pfWlmKCF0KGcsZCkpdGhyb3cgRXJyb3IoXCJXZWFrTWFwIGtleSBmYWlsOiBcIitnKTtnW2RdW3RoaXMuYV09aDtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ0KGcsZCk/Z1tkXVt0aGlzLmFdOnZvaWQgMH07Zi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ0KGcsZCkmJnQoZ1tkXSx0aGlzLmEpfTtmLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZyl7cmV0dXJuIGMoZykmJnQoZyxkKSYmdChnW2RdLHRoaXMuYSk/ZGVsZXRlIGdbZF1bdGhpcy5hXTohMX07cmV0dXJuIGZ9LFwiZXM2XCIpO3EoXCJNYXBcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhYS5wcm90b3R5cGUuZW50cmllc3x8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBoPU9iamVjdC5zZWFsKHt4OjR9KSxrPW5ldyBhKHIoW1toLFwic1wiXV0pKTtpZihcInNcIiE9ay5nZXQoaCl8fDEhPWsuc2l6ZXx8ay5nZXQoe3g6NH0pfHxrLnNldCh7eDo0fSxcInRcIikhPWt8fDIhPWsuc2l6ZSlyZXR1cm4hMTt2YXIgbD1rLmVudHJpZXMoKSxwPWwubmV4dCgpO2lmKHAuZG9uZXx8cC52YWx1ZVswXSE9aHx8XCJzXCIhPXAudmFsdWVbMV0pcmV0dXJuITE7cD1sLm5leHQoKTtyZXR1cm4gcC5kb25lfHw0IT1wLnZhbHVlWzBdLnh8fFwidFwiIT1wLnZhbHVlWzFdfHwhbC5uZXh0KCkuZG9uZT8hMTohMH1jYXRjaChmYSl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPW5ldyBtLldlYWtNYXAsYz1mdW5jdGlvbihoKXt0aGlzLmI9e307dGhpcy5hPWYoKTt0aGlzLnNpemU9MDtpZihoKXtoPXIoaCk7Zm9yKHZhciBrOyEoaz1oLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLHRoaXMuc2V0KGtbMF0sa1sxXSl9fTtjLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oaCxrKXtoPTA9PT1oPzA6aDt2YXIgbD1kKHRoaXMsaCk7bC5saXN0fHwobC5saXN0PXRoaXMuYltsLmlkXT1bXSk7bC5pP2wuaS52YWx1ZT1rOihsLmk9e25leHQ6dGhpcy5hLGw6dGhpcy5hLmwsaGVhZDp0aGlzLmEsa2V5OmgsdmFsdWU6a30sbC5saXN0LnB1c2gobC5pKSx0aGlzLmEubC5uZXh0PWwuaSx0aGlzLmEubD1sLmksdGhpcy5zaXplKyspO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oaCl7aD1kKHRoaXMsaCk7cmV0dXJuIGguaSYmaC5saXN0PyhoLmxpc3Quc3BsaWNlKGguaW5kZXgsMSksaC5saXN0Lmxlbmd0aHx8ZGVsZXRlIHRoaXMuYltoLmlkXSxoLmkubC5uZXh0PWguaS5uZXh0LGguaS5uZXh0Lmw9aC5pLmwsaC5pLmhlYWQ9bnVsbCx0aGlzLnNpemUtLSwhMCk6ITF9O2MucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5iPXt9O3RoaXMuYT10aGlzLmEubD1mKCk7dGhpcy5zaXplPTB9O2MucHJvdG90eXBlLmhhcz1mdW5jdGlvbihoKXtyZXR1cm4hIWQodGhpcyxoKS5pfTtjLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oaCl7cmV0dXJuKGg9ZCh0aGlzLGgpLmkpJiZoLnZhbHVlfTtjLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm5baC5rZXksaC52YWx1ZV19KX07Yy5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgua2V5fSl9O2MucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgudmFsdWV9KX07Yy5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihoLGspe2Zvcih2YXIgbD10aGlzLmVudHJpZXMoKSxwOyEocD1sLm5leHQoKSkuZG9uZTspcD1wLnZhbHVlLGguY2FsbChrLHBbMV0scFswXSx0aGlzKX07Yy5wcm90b3R5cGVbbihtLlN5bWJvbCxcIml0ZXJhdG9yXCIpXT1jLnByb3RvdHlwZS5lbnRyaWVzO3ZhciBkPWZ1bmN0aW9uKGgsayl7dmFyIGw9ayYmdHlwZW9mIGs7XCJvYmplY3RcIj09bHx8XCJmdW5jdGlvblwiPT1sP2IuaGFzKGspP2w9Yi5nZXQoayk6KGw9XCJcIisgKytnLGIuc2V0KGssbCkpOmw9XCJwX1wiK2s7dmFyIHA9aC5iW2xdO2lmKHAmJnQoaC5iLGwpKWZvcihoPTA7aDxwLmxlbmd0aDtoKyspe3ZhciBmYT1wW2hdO2lmKGshPT1rJiZmYS5rZXkhPT1mYS5rZXl8fGs9PT1mYS5rZXkpcmV0dXJue2lkOmwsbGlzdDpwLGluZGV4OmgsaTpmYX19cmV0dXJue2lkOmwsbGlzdDpwLGluZGV4Oi0xLGk6dm9pZCAwfX0sZT1mdW5jdGlvbihoLGspe3ZhciBsPWguYTtyZXR1cm4gaWEoZnVuY3Rpb24oKXtpZihsKXtmb3IoO2wuaGVhZCE9aC5hOylsPWwubDtmb3IoO2wubmV4dCE9bC5oZWFkOylyZXR1cm4gbD1sLm5leHQse2RvbmU6ITEsdmFsdWU6ayhsKX07bD1udWxsfXJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19KX0sZj1mdW5jdGlvbigpe3ZhciBoPXt9O3JldHVybiBoLmw9aC5uZXh0PWguaGVhZD1ofSxnPTA7cmV0dXJuIGN9LFwiZXM2XCIpO3EoXCJTZXRcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhYS5wcm90b3R5cGUuZW50cmllc3x8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt4OjR9KSxkPW5ldyBhKHIoW2NdKSk7aWYoIWQuaGFzKGMpfHwxIT1kLnNpemV8fGQuYWRkKGMpIT1kfHwxIT1kLnNpemV8fGQuYWRkKHt4OjR9KSE9ZHx8MiE9ZC5zaXplKXJldHVybiExO3ZhciBlPWQuZW50cmllcygpLGY9ZS5uZXh0KCk7aWYoZi5kb25lfHxmLnZhbHVlWzBdIT1jfHxmLnZhbHVlWzFdIT1jKXJldHVybiExO2Y9ZS5uZXh0KCk7cmV0dXJuIGYuZG9uZXx8Zi52YWx1ZVswXT09Y3x8NCE9Zi52YWx1ZVswXS54fHxmLnZhbHVlWzFdIT1mLnZhbHVlWzBdPyExOmUubmV4dCgpLmRvbmV9Y2F0Y2goZyl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPWZ1bmN0aW9uKGMpe3RoaXMuYT1uZXcgbS5NYXA7aWYoYyl7Yz1yKGMpO2Zvcih2YXIgZDshKGQ9Yy5uZXh0KCkpLmRvbmU7KXRoaXMuYWRkKGQudmFsdWUpfXRoaXMuc2l6ZT10aGlzLmEuc2l6ZX07Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGMpe2M9MD09PWM/MDpjO3RoaXMuYS5zZXQoYyxjKTt0aGlzLnNpemU9dGhpcy5hLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihjKXtjPXRoaXMuYS5kZWxldGUoYyk7dGhpcy5zaXplPXRoaXMuYS5zaXplO3JldHVybiBjfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuYS5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuYS5oYXMoYyl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLmVudHJpZXMoKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5hLFwidmFsdWVzXCIpLmNhbGwodGhpcy5hKX07Yi5wcm90b3R5cGUua2V5cz1uKGIucHJvdG90eXBlLFwidmFsdWVzXCIpO2IucHJvdG90eXBlW24obS5TeW1ib2wsXCJpdGVyYXRvclwiKV09bihiLnByb3RvdHlwZSxcInZhbHVlc1wiKTtiLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGMsZCl7dmFyIGU9dGhpczt0aGlzLmEuZm9yRWFjaChmdW5jdGlvbihmKXtyZXR1cm4gYy5jYWxsKGQsZixmLGUpfSl9O3JldHVybiBifSxcImVzNlwiKTt2YXIgdT10aGlzfHxzZWxmLHdhPWZ1bmN0aW9uKGEpe2lmKGEmJmEhPXUpcmV0dXJuIHVhKGEuZG9jdW1lbnQpO251bGw9PT12YSYmKHZhPXVhKHUuZG9jdW1lbnQpKTtyZXR1cm4gdmF9LHhhPS9eW1xcdysvXy1dK1s9XXswLDJ9JC8sdmE9bnVsbCx1YT1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLnF1ZXJ5U2VsZWN0b3ImJmEucXVlcnlTZWxlY3RvcihcInNjcmlwdFtub25jZV1cIikpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSYmeGEudGVzdChhKT9hOlwiXCJ9LHlhPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdChcIi5cIik7Zm9yKHZhciBiPXUsYz0wO2M8YS5sZW5ndGg7YysrKWlmKGI9YlthW2NdXSxudWxsPT1iKXJldHVybiBudWxsO3JldHVybiBifSx6YT1mdW5jdGlvbigpe30sdj1mdW5jdGlvbihhKXthLkM9dm9pZCAwO2EuZj1mdW5jdGlvbigpe3JldHVybiBhLkM/YS5DOmEuQz1uZXcgYX19LENhPWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxBYSkmJmFbQWFdfHwoYVtBYV09KytCYSl9LEFhPVwiY2xvc3VyZV91aWRfXCIrKDFFOSpNYXRoLnJhbmRvbSgpPj4+MCksQmE9MCxEYT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBiKWFbY109YltjXX0sdz1EYXRlLm5vdyx4PWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hfTt2YXIgRWE7dmFyIHk9ZnVuY3Rpb24oYSxiKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGEsYix2b2lkIDApfSxGYT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLHZvaWQgMCl9LEdhPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChhLGIsdm9pZCAwKX0sSGE9ZnVuY3Rpb24oYSxiKXthOntmb3IodmFyIGM9YS5sZW5ndGgsZD1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYmYi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpe2I9ZTticmVhayBhfWI9LTF9cmV0dXJuIDA+Yj9udWxsOlwic3RyaW5nXCI9PT10eXBlb2YgYT9hLmNoYXJBdChiKTphW2JdfSxJYT1mdW5jdGlvbihhLGIpe2E6e2Zvcih2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGQ9YS5sZW5ndGgtMTswPD1kO2QtLSlpZihkIGluIGMmJmIuY2FsbCh2b2lkIDAsY1tkXSxkLGEpKXtiPWQ7YnJlYWsgYX1iPS0xfXJldHVybiAwPmI/bnVsbDpcInN0cmluZ1wiPT09dHlwZW9mIGE/YS5jaGFyQXQoYik6YVtiXX0sSmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMDw9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX07dmFyIEthPWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7Ynx8KGM9YSgpLGI9ITApO3JldHVybiBjfX07dmFyIExhPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07dmFyIHo9ZnVuY3Rpb24oYSxiKXt0aGlzLmI9YT09PU1hJiZifHxcIlwiO3RoaXMuYz1OYX07ei5wcm90b3R5cGUubT0hMDt6LnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYn07dmFyIE9hPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgeiYmYS5jb25zdHJ1Y3Rvcj09PXomJmEuYz09PU5hP2EuYjpcInR5cGVfZXJyb3I6Q29uc3RcIn0sQT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHooTWEsYSl9LE5hPXt9LE1hPXt9O3ZhciBCPWZ1bmN0aW9uKGEsYil7dGhpcy5jPWI9PT1QYT9hOlwiXCJ9O0IucHJvdG90eXBlLm09ITA7Qi5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmMudG9TdHJpbmcoKX07Qi5wcm90b3R5cGUuQj0hMDtCLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIDF9O3ZhciBRYT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEImJmEuY29uc3RydWN0b3I9PT1CP2EuYzpcInR5cGVfZXJyb3I6VHJ1c3RlZFJlc291cmNlVXJsXCJ9LFRhPWZ1bmN0aW9uKGEpe3ZhciBiPU9hKEEoXCJodHRwczovL2Z1bmRpbmdjaG9pY2VzbWVzc2FnZXMuZ29vZ2xlLmNvbS91Zi8le2lkfT9lcnM9JXtlcnN9XCIpKTtpZighUmEudGVzdChiKSl0aHJvdyBFcnJvcihcIkludmFsaWQgVHJ1c3RlZFJlc291cmNlVXJsIGZvcm1hdDogXCIrYik7dmFyIGM9Yi5yZXBsYWNlKFNhLGZ1bmN0aW9uKGQsZSl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpKXRocm93IEVycm9yKCdGb3VuZCBtYXJrZXIsIFwiJytlKydcIiwgaW4gZm9ybWF0IHN0cmluZywgXCInK2IrJ1wiLCBidXQgbm8gdmFsaWQgbGFiZWwgbWFwcGluZyBmb3VuZCBpbiBhcmdzOiAnK0pTT04uc3RyaW5naWZ5KGEpKTtkPWFbZV07cmV0dXJuIGQgaW5zdGFuY2VvZiB6P09hKGQpOmVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpfSk7cmV0dXJuIG5ldyBCKGMsUGEpfSxTYT0vJXsoXFx3Kyl9L2csUmE9L14oKGh0dHBzOik/XFwvXFwvWzAtOWEtei46W1xcXS1dK1xcL3xcXC9bXi9cXFxcXXxbXjovXFxcXCVdK1xcL3xbXjovXFxcXCVdKls/I118YWJvdXQ6YmxhbmsjKS9pLFVhPS9eKFtePyNdKikoXFw/W14jXSopPygjW1xcc1xcU10qKT8vLFBhPXt9LFZhPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYylyZXR1cm4gYz9hK2VuY29kZVVSSUNvbXBvbmVudChjKTpcIlwiO2Zvcih2YXIgZCBpbiBjKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGQpKXt2YXIgZT1jW2RdO2U9QXJyYXkuaXNBcnJheShlKT9lOltlXTtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIGc9ZVtmXTtudWxsIT1nJiYoYnx8KGI9YSksYis9KGIubGVuZ3RoPmEubGVuZ3RoP1wiJlwiOlwiXCIpK2VuY29kZVVSSUNvbXBvbmVudChkKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGcpKSl9fXJldHVybiBifTt2YXIgV2E9ZnVuY3Rpb24oYSl7cmV0dXJuL15bXFxzXFx4YTBdKihbXFxzXFxTXSo/KVtcXHNcXHhhMF0qJC8uZXhlYyhhKVsxXX0sZGI9ZnVuY3Rpb24oYSl7aWYoIVhhLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZihcIiZcIikmJihhPWEucmVwbGFjZShZYSxcIiZhbXA7XCIpKTstMSE9YS5pbmRleE9mKFwiPFwiKSYmKGE9YS5yZXBsYWNlKFphLFwiJmx0O1wiKSk7LTEhPWEuaW5kZXhPZihcIj5cIikmJihhPWEucmVwbGFjZSgkYSxcIiZndDtcIikpOy0xIT1hLmluZGV4T2YoJ1wiJykmJihhPWEucmVwbGFjZShhYixcIiZxdW90O1wiKSk7LTEhPWEuaW5kZXhPZihcIidcIikmJihhPWEucmVwbGFjZShiYixcIiYjMzk7XCIpKTstMSE9YS5pbmRleE9mKFwiXFx4MDBcIikmJihhPWEucmVwbGFjZShjYixcIiYjMDtcIikpO3JldHVybiBhfSxZYT0vJi9nLFphPS88L2csJGE9Lz4vZyxhYj0vXCIvZyxiYj0vJy9nLGNiPS9cXHgwMC9nLFhhPS9bXFx4MDAmPD5cIiddLyxmYj1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YT1XYShTdHJpbmcoYSkpLnNwbGl0KFwiLlwiKTtiPVdhKFN0cmluZyhiKSkuc3BsaXQoXCIuXCIpO2Zvcih2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCksZT0wOzA9PWMmJmU8ZDtlKyspe3ZhciBmPWFbZV18fFwiXCIsZz1iW2VdfHxcIlwiO2Rve2Y9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZil8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtnPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGcpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07aWYoMD09ZlswXS5sZW5ndGgmJjA9PWdbMF0ubGVuZ3RoKWJyZWFrO2M9ZWIoMD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKSwwPT1nWzFdLmxlbmd0aD8wOnBhcnNlSW50KGdbMV0sMTApKXx8ZWIoMD09ZlsyXS5sZW5ndGgsMD09Z1syXS5sZW5ndGgpfHxlYihmWzJdLGdbMl0pO2Y9ZlszXTtnPWdbM119d2hpbGUoMD09Yyl9cmV0dXJuIGN9LGViPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfTt2YXIgQz1mdW5jdGlvbihhLGIpe3RoaXMuYz1iPT09Z2I/YTpcIlwifTtDLnByb3RvdHlwZS5tPSEwO0MucHJvdG90eXBlLmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jLnRvU3RyaW5nKCl9O0MucHJvdG90eXBlLkI9ITA7Qy5wcm90b3R5cGUuYj1mdW5jdGlvbigpe3JldHVybiAxfTt2YXIgaGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBDJiZhLmNvbnN0cnVjdG9yPT09Qz9hLmM6XCJ0eXBlX2Vycm9yOlNhZmVVcmxcIn0saWI9L14oPzphdWRpb1xcLyg/OjNncHAyfDNncHB8YWFjfEwxNnxtaWRpfG1wM3xtcDR8bXBlZ3xvZ2F8b2dnfG9wdXN8eC1tNGF8eC1tYXRyb3NrYXx4LXdhdnx3YXZ8d2VibSl8Zm9udFxcL1xcdyt8aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnB8eC1pY29uKXx0ZXh0XFwvY3N2fHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm18cXVpY2t0aW1lfHgtbWF0cm9za2EpKSg/OjtcXHcrPSg/Olxcdyt8XCJbXFx3Oyw9IF0rXCIpKSokL2ksamI9L15kYXRhOiguKik7YmFzZTY0LFthLXowLTkrXFwvXSs9KiQvaSxrYj0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwKTp8W146Lz8jXSooPzpbLz8jXXwkKSkvaSxnYj17fSxsYj1uZXcgQyhcImFib3V0OmludmFsaWQjekNsb3N1cmV6XCIsZ2IpO3ZhciBEO2E6e3ZhciBtYj11Lm5hdmlnYXRvcjtpZihtYil7dmFyIG5iPW1iLnVzZXJBZ2VudDtpZihuYil7RD1uYjticmVhayBhfX1EPVwiXCJ9O3ZhciBGPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmM9Yz09PW9iP2E6XCJcIjt0aGlzLmc9Yn07Ri5wcm90b3R5cGUuQj0hMDtGLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ307Ri5wcm90b3R5cGUubT0hMDtGLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy50b1N0cmluZygpfTt2YXIgcGI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBGJiZhLmNvbnN0cnVjdG9yPT09Rj9hLmM6XCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCJ9LHFiPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBGKXJldHVybiBhO3ZhciBiPVwib2JqZWN0XCI9PXR5cGVvZiBhLGM9bnVsbDtiJiZhLkImJihjPWEuYigpKTthPWRiKGImJmEubT9hLmEoKTpTdHJpbmcoYSkpO3JldHVybiBuZXcgRihhLGMsb2IpfSxyYj0vXlthLXpBLVowLTktXSskLyxzYj17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sdWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz17c3JjOmF9LGQ9e307YT17fTtmb3IodmFyIGUgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxlKSYmKGFbZV09Y1tlXSk7Zm9yKGUgaW4gZClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKSYmKGFbZV09ZFtlXSk7aWYoYilmb3IoZSBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGUpKXt2YXIgZj1lLnRvTG93ZXJDYXNlKCk7aWYoZiBpbiBjKXRocm93IEVycm9yKFwiXCIpO2YgaW4gZCYmZGVsZXRlIGFbZl07YVtlXT1iW2VdfWI9bnVsbDtlPVwiXCI7aWYoYSlmb3IoZyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGcpKXtpZighcmIudGVzdChnKSl0aHJvdyBFcnJvcihcIlwiKTtkPWFbZ107aWYobnVsbCE9ZCl7Yz1nO2lmKGQgaW5zdGFuY2VvZiB6KWQ9T2EoZCk7ZWxzZXtpZihcInN0eWxlXCI9PWMudG9Mb3dlckNhc2UoKSl0aHJvdyBFcnJvcihcIlwiKTtpZigvXm9uL2kudGVzdChjKSl0aHJvdyBFcnJvcihcIlwiKTtpZihjLnRvTG93ZXJDYXNlKClpbiBzYilpZihkIGluc3RhbmNlb2YgQilkPVFhKGQpLnRvU3RyaW5nKCk7ZWxzZSBpZihkIGluc3RhbmNlb2YgQylkPWhiKGQpO2Vsc2UgaWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkKWQgaW5zdGFuY2VvZiBDfHwoZD1cIm9iamVjdFwiPT10eXBlb2YgZCYmZC5tP2QuYSgpOlN0cmluZyhkKSxrYi50ZXN0KGQpP2Q9bmV3IEMoZCxnYik6KGQ9U3RyaW5nKGQpLGQ9ZC5yZXBsYWNlKC8oJTBBfCUwRCkvZyxcIlwiKSxkPShmPWQubWF0Y2goamIpKSYmaWIudGVzdChmWzFdKT9uZXcgQyhkLGdiKTpudWxsKSksZD0oZHx8bGIpLmEoKTtlbHNlIHRocm93IEVycm9yKFwiXCIpO31kLm0mJihkPWQuYSgpKTtjPWMrJz1cIicrZGIoU3RyaW5nKGQpKSsnXCInO2UrPVwiIFwiK2N9fXZhciBnPVwiPHNjcmlwdFwiK2U7ZT12b2lkIDA7bnVsbD09ZT9lPVtdOkFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7ITA9PT1MYS5zY3JpcHQ/Zys9XCI+XCI6KGI9dGIoZSksZys9XCI+XCIrcGIoYikudG9TdHJpbmcoKStcIlxceDNjL3NjcmlwdD5cIixiPWIuYigpKTsoYT1hJiZhLmRpcikmJigvXihsdHJ8cnRsfGF1dG8pJC9pLnRlc3QoYSk/Yj0wOmI9bnVsbCk7cmV0dXJuIG5ldyBGKGcsYixvYil9LHdiPWZ1bmN0aW9uKGEpe3ZhciBiPXFiKHZiKSxjPWIuYigpLGQ9W10sZT1mdW5jdGlvbihmKXtBcnJheS5pc0FycmF5KGYpP3koZixlKTooZj1xYihmKSxkLnB1c2gocGIoZikudG9TdHJpbmcoKSksZj1mLmIoKSwwPT1jP2M9ZjowIT1mJiZjIT1mJiYoYz1udWxsKSl9O3koYSxlKTtyZXR1cm4gbmV3IEYoZC5qb2luKHBiKGIpLnRvU3RyaW5nKCkpLGMsb2IpfSx0Yj1mdW5jdGlvbihhKXtyZXR1cm4gd2IoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9LG9iPXt9LHZiPW5ldyBGKHUudHJ1c3RlZFR5cGVzJiZ1LnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fFwiXCIsMCxvYik7dmFyIHhiPWZ1bmN0aW9uKGEsYil7YS53cml0ZShwYihiKSl9LHliPWZ1bmN0aW9uKGEsYil7YS5zcmM9UWEoYik7KGI9d2EoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGIpfTt2YXIgemI9ZnVuY3Rpb24oYSl7emJbXCIgXCJdKGEpO3JldHVybiBhfTt6YltcIiBcIl09emE7dmFyIEFiPXt9LEJiPW51bGw7dmFyIEc9ZnVuY3Rpb24oKXt9LENiPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksSD1mdW5jdGlvbihhLGIsYyxkKXthLmE9bnVsbDtifHwoYj1bXSk7YS5BPXZvaWQgMDthLmM9LTE7YS5oPWI7YTp7aWYoYj1hLmgubGVuZ3RoKXstLWI7dmFyIGU9YS5oW2JdO2lmKCEobnVsbD09PWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpfHxDYiYmZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXthLmc9Yi1hLmM7YS5iPWU7YnJlYWsgYX19YS5nPU51bWJlci5NQVhfVkFMVUV9YS5vPXt9O2lmKGMpZm9yKGI9MDtiPGMubGVuZ3RoO2IrKyllPWNbYl0sZTxhLmc/KGUrPWEuYyxhLmhbZV09YS5oW2VdfHxEYik6KEViKGEpLGEuYltlXT1hLmJbZV18fERiKTtpZihkJiZkLmxlbmd0aClmb3IoYj0wO2I8ZC5sZW5ndGg7YisrKUZiKGEsZFtiXSl9LERiPVtdLEViPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZythLmM7YS5oW2JdfHwoYS5iPWEuaFtiXT17fSl9LEk9ZnVuY3Rpb24oYSxiKXtpZihiPGEuZyl7Yis9YS5jO3ZhciBjPWEuaFtiXTtyZXR1cm4gYz09PURiP2EuaFtiXT1bXTpjfWlmKGEuYilyZXR1cm4gYz1hLmJbYl0sYz09PURiP2EuYltiXT1bXTpjfSxKPWZ1bmN0aW9uKGEsYixjKXthPUkoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9LEdiPWZ1bmN0aW9uKGEsYil7YT1JKGEsYik7YT1udWxsPT1hP2E6K2E7cmV0dXJuIG51bGw9PWE/MDphfSxLPWZ1bmN0aW9uKGEsYixjKXtiPGEuZz9hLmhbYithLmNdPWM6KEViKGEpLGEuYltiXT1jKTtyZXR1cm4gYX0sRmI9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZCxlPTA7ZTxiLmxlbmd0aDtlKyspe3ZhciBmPWJbZV0sZz1JKGEsZik7bnVsbCE9ZyYmKGM9ZixkPWcsSyhhLGYsdm9pZCAwKSl9cmV0dXJuIGM/KEsoYSxjLGQpLGMpOjB9LEhiPWZ1bmN0aW9uKGEsYixjKXthLmF8fChhLmE9e30pO2lmKCFhLmFbY10pe3ZhciBkPUkoYSxjKTtkJiYoYS5hW2NdPW5ldyBiKGQpKX1yZXR1cm4gYS5hW2NdfSxMPWZ1bmN0aW9uKGEsYixjKXthLmF8fChhLmE9e30pO2lmKCFhLmFbY10pe2Zvcih2YXIgZD1JKGEsYyksZT1bXSxmPTA7ZjxkLmxlbmd0aDtmKyspZVtmXT1uZXcgYihkW2ZdKTthLmFbY109ZX1iPWEuYVtjXTtiPT1EYiYmKGI9YS5hW2NdPVtdKTtyZXR1cm4gYn0sSWI9ZnVuY3Rpb24oYSxiLGMpe2EuYXx8KGEuYT17fSk7Yz1jfHxbXTtmb3IodmFyIGQ9W10sZT0wO2U8Yy5sZW5ndGg7ZSsrKWRbZV09Y1tlXS5oO2EuYVtiXT1jO0soYSxiLGQpfTtHLnByb3RvdHlwZS5qPUNiP2Z1bmN0aW9uKCl7dmFyIGE9VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OO1VpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBiO3ZvaWQgMD09PWImJihiPTApO2lmKCFCYil7QmI9e307Zm9yKHZhciBjPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIi5zcGxpdChcIlwiKSxkPVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxlPTA7NT5lO2UrKyl7dmFyIGY9Yy5jb25jYXQoZFtlXS5zcGxpdChcIlwiKSk7QWJbZV09Zjtmb3IodmFyIGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXTt2b2lkIDA9PT1CYltoXSYmKEJiW2hdPWcpfX19Yj1BYltiXTtjPVtdO2ZvcihkPTA7ZDx0aGlzLmxlbmd0aDtkKz0zKXt2YXIgaz10aGlzW2RdLGw9KGU9ZCsxPHRoaXMubGVuZ3RoKT90aGlzW2QrMV06MDtoPShmPWQrMjx0aGlzLmxlbmd0aCk/dGhpc1tkKzJdOjA7Zz1rPj4yO2s9KGsmMyk8PDR8bD4+NDtsPShsJjE1KTw8MnxoPj42O2gmPTYzO2Z8fChoPTY0LGV8fChsPTY0KSk7Yy5wdXNoKGJbZ10sYltrXSxiW2xdfHxcIlwiLGJbaF18fFwiXCIpfXJldHVybiBjLmpvaW4oXCJcIil9O3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5oJiZ0aGlzLmgsSmIpfWZpbmFsbHl7VWludDhBcnJheS5wcm90b3R5cGUudG9KU09OPWF9fTpmdW5jdGlvbigpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmgmJnRoaXMuaCxKYil9O3ZhciBKYj1mdW5jdGlvbihhLGIpe3JldHVyblwibnVtYmVyXCIhPT10eXBlb2YgYnx8IWlzTmFOKGIpJiZJbmZpbml0eSE9PWImJi1JbmZpbml0eSE9PWI/YjpTdHJpbmcoYil9O3ZhciBMYj1mdW5jdGlvbihhKXtyZXR1cm4gYT9uZXcgS2IoOT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudCk6RWF8fChFYT1uZXcgS2IpfSxLYj1mdW5jdGlvbihhKXt0aGlzLmE9YXx8dS5kb2N1bWVudHx8ZG9jdW1lbnR9O0tiLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYTthPVN0cmluZyhhKTtcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiPT09Yi5jb250ZW50VHlwZSYmKGE9YS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYi5jcmVhdGVFbGVtZW50KGEpfTtLYi5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oYSxiKXthLmFwcGVuZENoaWxkKGIpfTt2YXIgTmI9ZnVuY3Rpb24oYSl7TWIoKTtyZXR1cm4gbmV3IEIoYSxQYSl9LE1iPXphO3ZhciBPYj1mdW5jdGlvbigpe3JldHVybi0xIT1ELmluZGV4T2YoXCJpUGFkXCIpfHwtMSE9RC5pbmRleE9mKFwiQW5kcm9pZFwiKSYmLTE9PUQuaW5kZXhPZihcIk1vYmlsZVwiKXx8LTEhPUQuaW5kZXhPZihcIlNpbGtcIil9O3ZhciBQYj0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC8sUWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ZGVjb2RlVVJJKGEpOmF9O3ZhciBVYj1mdW5jdGlvbihhLGIpe3ZhciBjPVJiKCk7cmV0dXJuIWMmJiFTYigpJiYoYz1NYXRoLnJhbmRvbSgpLGM8Yik/KGM9VGIodSksYVtNYXRoLmZsb29yKGMqYS5sZW5ndGgpXSk6bnVsbH0sVGI9ZnVuY3Rpb24oYSl7aWYoIWEuY3J5cHRvKXJldHVybiBNYXRoLnJhbmRvbSgpO3RyeXt2YXIgYj1uZXcgVWludDMyQXJyYXkoMSk7YS5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGIpO3JldHVybiBiWzBdLzY1NTM2LzY1NTM2fWNhdGNoKGMpe3JldHVybiBNYXRoLnJhbmRvbSgpfX0sVmI9ZnVuY3Rpb24oYSxiKXtpZihhKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiLmNhbGwodm9pZCAwLGFbY10sYyxhKX0sU2I9S2EoZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChbXCJHb29nbGUgV2ViIFByZXZpZXdcIixcIk1lZGlhcGFydG5lcnMtR29vZ2xlXCIsXCJHb29nbGUtUmVhZC1BbG91ZFwiLFwiR29vZ2xlLUFkd29yZHNcIl0sV2Isdm9pZCAwKXx8MUUtND5NYXRoLnJhbmRvbSgpfSksUmI9S2EoZnVuY3Rpb24oKXtyZXR1cm4gV2IoXCJNU0lFXCIpfSksV2I9ZnVuY3Rpb24oYSl7cmV0dXJuLTEhPUQuaW5kZXhPZihhKX0sWGI9L14oLT9bMC05Ll17MSwzMH0pJC8sWWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGIudGVzdChhKSYmKGE9TnVtYmVyKGEpLCFpc05hTihhKSk/YTp2b2lkIDA9PWI/bnVsbDpifSxaYj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2EoKX1jYXRjaChhKXt9fSwkYj1LYShmdW5jdGlvbigpe3JldHVybiBPYigpfHwtMT09RC5pbmRleE9mKFwiaVBvZFwiKSYmLTE9PUQuaW5kZXhPZihcImlQaG9uZVwiKSYmLTE9PUQuaW5kZXhPZihcIkFuZHJvaWRcIikmJi0xPT1ELmluZGV4T2YoXCJJRU1vYmlsZVwiKT9PYigpPzE6MDoyfSksYWM9ZnVuY3Rpb24oKXt2YXIgYT12b2lkIDA9PT1hP3dpbmRvdzphO2lmKGE9UWIoYS5sb2NhdGlvbi5ocmVmLm1hdGNoKFBiKVszXXx8bnVsbCkpe3ZhciBiPWEubGVuZ3RoO2lmKDA9PWIpYT0wO2Vsc2V7Zm9yKHZhciBjPTMwNTQxOTg5NixkPTA7ZDxiO2QrKyljXj0oYzw8NSkrKGM+PjIpK2EuY2hhckNvZGVBdChkKSY0Mjk0OTY3Mjk1O2E9MDxjP2M6NDI5NDk2NzI5NitjfX1lbHNlIGE9bnVsbDtyZXR1cm4gYX07dmFyIGJjPWZ1bmN0aW9uKCl7fTt2YXIgY2M9ZnVuY3Rpb24oYSxiKXthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0c3x8KGEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzPVtdKTt2YXIgYz1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7Yy5zcmM9YjthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cy5wdXNoKGMpfSxlYz1mdW5jdGlvbihhKXt2YXIgYj1cImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9Z3B0X2R1cGVpZFwiO1ZiKGEsZnVuY3Rpb24oYyxkKXtjJiYoYis9XCImXCIrZCtcIj1cIitlbmNvZGVVUklDb21wb25lbnQoYykpfSk7ZGMoYil9LGRjPWZ1bmN0aW9uKGEpe3ZhciBiPXdpbmRvdztiLmZldGNoP2IuZmV0Y2goYSx7a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwiLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsbW9kZTpcIm5vLWNvcnNcIn0pOmNjKGIsYSl9O3ZhciBmYz17fTt2YXIgZ2M9ZnVuY3Rpb24oKXt9LGhjPWZ1bmN0aW9uKGEsYil7aWYoYiE9PWZjKXRocm93IEVycm9yKFwiQmFkIHNlY3JldFwiKTt0aGlzLmE9YX07cmEoaGMsZ2MpO2hjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmF9O25ldyBoYyhcImFib3V0OmJsYW5rXCIsZmMpO25ldyBoYyhcImFib3V0OmludmFsaWQjelRTelwiLGZjKTt2YXIgamM9ZnVuY3Rpb24oYSl7SCh0aGlzLGEsaWMsbnVsbCl9O3goamMsRyk7dmFyIGljPVs2XTt2YXIga2M9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RyeXt2YXIgZz1hLmEsaD1hLmNyZWF0ZUVsZW1lbnQoXCJTQ1JJUFRcIik7aC5hc3luYz0hMDt5YihoLGIpO2cuaGVhZC5hcHBlbmRDaGlsZChoKTtoLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsZnVuY3Rpb24oKXtlKCk7ZCYmZy5oZWFkLnJlbW92ZUNoaWxkKGgpfSk7aC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixmdW5jdGlvbigpezA8Yz9rYyhhLGIsYy0xLGQsZSxmKTooZCYmZy5oZWFkLnJlbW92ZUNoaWxkKGgpLGYoKSl9KX1jYXRjaChrKXtmKCl9fTt2YXIgbGM9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb2N1bWVudCxjPUxiKGEpLGQ9ZnVuY3Rpb24oKXtpZighYS5mcmFtZXMuZ29vZ2xlZmNQcmVzZW50KWlmKGIuYm9keSl7dmFyIGU9Yy5jcmVhdGVFbGVtZW50KFwiSUZSQU1FXCIpO2Uuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtlLnN0eWxlLndpZHRoPVwiMHB4XCI7ZS5zdHlsZS5oZWlnaHQ9XCIwcHhcIjtlLnN0eWxlLmJvcmRlcj1cIm5vbmVcIjtlLnN0eWxlLnpJbmRleD1cIi0xMDAwXCI7ZS5zdHlsZS5sZWZ0PVwiLTEwMDBweFwiO2Uuc3R5bGUudG9wPVwiLTEwMDBweFwiO2UubmFtZT1cImdvb2dsZWZjUHJlc2VudFwiO2IuYm9keS5hcHBlbmRDaGlsZChlKX1lbHNlIGEuc2V0VGltZW91dChkLDUpfTtkKCl9O3ZhciBtYz1mdW5jdGlvbihhLGIpe3RoaXMuYT1hO3RoaXMuYj1MYih0aGlzLmEpO3RoaXMuYz1ifTttYy5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt0cnl7bGModGhpcy5hKSxuYyh0aGlzKX1jYXRjaChhKXt9fTt2YXIgbmM9ZnVuY3Rpb24oYSl7dmFyIGI9VGEoe2lkOmEuYyxlcnM6M30pO2tjKGEuYixiLDAsITEsZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7fSl9O3ZhciBvYz1mdW5jdGlvbihhLGIpe3ZhciBjPXZvaWQgMD09PWM/e306Yzt0aGlzLmVycm9yPWE7dGhpcy5jb250ZXh0PWIuY29udGV4dDt0aGlzLm1zZz1iLm1lc3NhZ2V8fFwiXCI7dGhpcy5pZD1iLmlkfHxcImpzZXJyb3JcIjt0aGlzLm1ldGE9Y307dmFyIHBjPW51bGwscWM9ZnVuY3Rpb24oKXtpZihudWxsPT09cGMpe3BjPVwiXCI7dHJ5e3ZhciBhPVwiXCI7dHJ5e2E9dS50b3AubG9jYXRpb24uaGFzaH1jYXRjaChjKXthPXUubG9jYXRpb24uaGFzaH1pZihhKXt2YXIgYj1hLm1hdGNoKC9cXGJkZWlkPShbXFxkLF0rKS8pO3BjPWI/YlsxXTpcIlwifX1jYXRjaChjKXt9fXJldHVybiBwY307dmFyIHRjPWZ1bmN0aW9uKGEpe0godGhpcyxhLHJjLHNjKX07eCh0YyxHKTt2YXIgcmM9WzIsOF0sc2M9W1szLDQsNV0sWzYsN11dO3ZhciB1Yz1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8hYTphfSx2Yz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0hMSxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWFbZF0uY2FsbCgpO2lmKGU9PWIpcmV0dXJuIGU7bnVsbD09ZSYmKGM9ITApfWlmKCFjKXJldHVybiFifSx4Yz1mdW5jdGlvbihhLGIpe3ZhciBjPUwoYSx0YywyKTtpZighYy5sZW5ndGgpcmV0dXJuIHdjKGEsYik7YT1KKGEsMSwwKTtpZigxPT1hKXJldHVybiB1Yyh4YyhjWzBdLGIpKTtjPUdhKGMsZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHhjKGQsYil9fSk7c3dpdGNoKGEpe2Nhc2UgMjpyZXR1cm4gdmMoYywhMSk7Y2FzZSAzOnJldHVybiB2YyhjLCEwKX19LHdjPWZ1bmN0aW9uKGEsYil7dmFyIGM9RmIoYSxzY1swXSk7YTp7c3dpdGNoKGMpe2Nhc2UgMzp2YXIgZD1KKGEsMywwKTticmVhayBhO2Nhc2UgNDpkPUooYSw0LDApO2JyZWFrIGE7Y2FzZSA1OmQ9SihhLDUsMCk7YnJlYWsgYX1kPXZvaWQgMH1pZihkJiYoYj0oYj1iW2NdKSYmYltkXSkpe3RyeXt2YXIgZT1iLmFwcGx5KG51bGwsSShhLDgpKX1jYXRjaChmKXtyZXR1cm59Yj1KKGEsMSwwKTtpZig0PT1iKXJldHVybiEhZTtkPW51bGwhPWU7aWYoNT09YilyZXR1cm4gZDtpZigxMj09YilhPUooYSw3LFwiXCIpO2Vsc2UgYTp7c3dpdGNoKGMpe2Nhc2UgNDphPUdiKGEsNik7YnJlYWsgYTtjYXNlIDU6YT1KKGEsNyxcIlwiKTticmVhayBhfWE9dm9pZCAwfWlmKG51bGwhPWEpe2lmKDY9PWIpcmV0dXJuIGU9PT1hO2lmKDk9PWIpcmV0dXJuIDA9PWZiKGUsYSk7aWYoZClzd2l0Y2goYil7Y2FzZSA3OnJldHVybiBlPGE7Y2FzZSA4OnJldHVybiBlPmE7Y2FzZSAxMjpyZXR1cm4obmV3IFJlZ0V4cChhKSkudGVzdChlKTtjYXNlIDEwOnJldHVybi0xPT1mYihlLGEpO2Nhc2UgMTE6cmV0dXJuIDE9PWZiKGUsYSl9fX19LHljPWZ1bmN0aW9uKGEsYil7cmV0dXJuIWF8fCEoIWJ8fCF4YyhhLGIpKX07dmFyIEFjPWZ1bmN0aW9uKGEpe0godGhpcyxhLHpjLG51bGwpfTt4KEFjLEcpO3ZhciB6Yz1bNF07dmFyIE09ZnVuY3Rpb24oYSl7SCh0aGlzLGEsQmMsQ2MpfTt4KE0sRyk7dmFyIERjPWZ1bmN0aW9uKGEpe0godGhpcyxhLG51bGwsbnVsbCl9O3goRGMsRyk7dmFyIEJjPVs1XSxDYz1bWzEsMiwzLDYsN11dO3ZhciBOPWZ1bmN0aW9uKCl7dmFyIGE9e307dGhpcy5hPShhWzNdPXt9LGFbNF09e30sYVs1XT17fSxhKX07dihOKTt2YXIgRWM9L150cnVlJC8udGVzdChcImZhbHNlXCIpO3ZhciBGYz1FYyxHYz1mdW5jdGlvbihhLGIpe3N3aXRjaChiKXtjYXNlIDE6cmV0dXJuIEooYSwxLDApO2Nhc2UgMjpyZXR1cm4gSihhLDIsMCk7Y2FzZSAzOnJldHVybiBKKGEsMywwKTtjYXNlIDY6cmV0dXJuIEooYSw2LDApO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxIYz1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBudWxsO3N3aXRjaChiKXtjYXNlIDE6cmV0dXJuIGE9SShhLDEpLGE9bnVsbD09YT9hOiEhYSxudWxsPT1hPyExOmE7Y2FzZSA3OnJldHVybiBKKGEsMyxcIlwiKTtjYXNlIDI6cmV0dXJuIEdiKGEsMik7Y2FzZSAzOnJldHVybiBKKGEsMyxcIlwiKTtjYXNlIDY6cmV0dXJuIEkoYSw0KTtkZWZhdWx0OnJldHVybiBudWxsfX0sSWM9S2EoZnVuY3Rpb24oKXtpZighRmMpcmV0dXJue307dHJ5e3ZhciBhPXdpbmRvdy5zZXNzaW9uU3RvcmFnZSYmd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJHR0RGU1NLXCIpO2lmKGEpcmV0dXJuIEpTT04ucGFyc2UoYSl9Y2F0Y2goYil7fXJldHVybnt9fSksTGM9ZnVuY3Rpb24oYSxiLGMsZCl7ZD12b2lkIDA9PT1kPzA6ZDt2YXIgZT1JYygpO2lmKGVbYV0mJm51bGwhPWVbYV1bYl0pcmV0dXJuIGVbYV1bYl07Yj1KYyhkKVthXVtiXTtpZighYilyZXR1cm4gYztiPW5ldyBNKGIpO2I9S2MoYik7YT1IYyhiLGEpO3JldHVybiBudWxsIT1hP2E6Y30sS2M9ZnVuY3Rpb24oYSl7dmFyIGI9Ti5mKCkuYTtpZihiKXt2YXIgYz1JYShMKGEsRGMsNSksZnVuY3Rpb24oZCl7cmV0dXJuIHljKEhiKGQsdGMsMSksYil9KTtpZihjKXJldHVybiBIYihjLEFjLDIpfXJldHVybiBIYihhLEFjLDQpfSxNYz1mdW5jdGlvbigpe3RoaXMuYT17fTt0aGlzLmI9W119O3YoTWMpO3ZhciBOYz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuISFMYygxLGEsdm9pZCAwPT09Yj8hMTpiLGMpfSxPYz1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iPzA6YjthPU51bWJlcihMYygyLGEsYixjKSk7cmV0dXJuIGlzTmFOKGEpP2I6YX0sUGM9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBMYygzLGEsdm9pZCAwPT09Yj9cIlwiOmIsYyl9LFFjPWZ1bmN0aW9uKGEsYixjKXtiPXZvaWQgMD09PWI/W106YjtyZXR1cm4gTGMoNixhLGIsYyl9LEpjPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O3JldHVybiBNYy5mKCkuYVthXXx8KE1jLmYoKS5hW2FdPShiWzFdPXt9LGJbMl09e30sYlszXT17fSxiWzZdPXt9LGIpKX0sUmM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KYyhiKTtWYihhLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIFZiKGQsZnVuY3Rpb24oZixnKXtyZXR1cm4gY1tlXVtnXT1mfSl9KX0sU2M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KYyhiKTt5KGEsZnVuY3Rpb24oZCl7dmFyIGU9RmIoZCxDY1swXSksZj1HYyhkLGUpO2YmJihjW2VdW2ZdPWQuaCl9KX0sVGM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KYyhiKTt5KGEsZnVuY3Rpb24oZCl7dmFyIGU9bmV3IE0oZCksZj1GYihlLENjWzBdKTsoZT1HYyhlLGYpKSYmKGNbZl1bZV18fChjW2ZdW2VdPWQpKX0pfSxVYz1mdW5jdGlvbigpe3JldHVybiBHYShuKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsTWMuZigpLmEpLGZ1bmN0aW9uKGEpe3JldHVybiBOdW1iZXIoYSl9KX0sVmM9ZnVuY3Rpb24oYSl7SmEoTWMuZigpLmIsYSl8fFJjKEpjKDQpLGEpfTt2YXIgTz1mdW5jdGlvbihhKXt0aGlzLm1ldGhvZE5hbWU9YX0sV2M9bmV3IE8oMSksWGM9bmV3IE8oMTUpLFljPW5ldyBPKDIpLFpjPW5ldyBPKDMpLCRjPW5ldyBPKDQpLGFkPW5ldyBPKDUpLGJkPW5ldyBPKDYpLGNkPW5ldyBPKDcpLGRkPW5ldyBPKDgpLGVkPW5ldyBPKDkpLGZkPW5ldyBPKDEwKSxnZD1uZXcgTygxMSksaGQ9bmV3IE8oMTIpLGlkPW5ldyBPKDEzKSxqZD1uZXcgTygxNCksUD1mdW5jdGlvbihhLGIsYyl7Yy5oYXNPd25Qcm9wZXJ0eShhLm1ldGhvZE5hbWUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoYyxTdHJpbmcoYS5tZXRob2ROYW1lKSx7dmFsdWU6Yn0pfSxRPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYlthLm1ldGhvZE5hbWVdfHxjfHxmdW5jdGlvbigpe319LGtkPWZ1bmN0aW9uKGEpe1AoYWQsTmMsYSk7UChiZCxPYyxhKTtQKGNkLFBjLGEpO1AoZGQsUWMsYSk7UChpZCxUYyxhKTtQKFhjLFZjLGEpfSxsZD1mdW5jdGlvbihhKXtQKCRjLGZ1bmN0aW9uKGIpe04uZigpLmE9Yn0sYSk7UChlZCxmdW5jdGlvbihiLGMpe3ZhciBkPU4uZigpO2QuYVszXVtiXXx8KGQuYVszXVtiXT1jKX0sYSk7UChmZCxmdW5jdGlvbihiLGMpe3ZhciBkPU4uZigpO2QuYVs0XVtiXXx8KGQuYVs0XVtiXT1jKX0sYSk7UChnZCxmdW5jdGlvbihiLGMpe3ZhciBkPU4uZigpO2QuYVs1XVtiXXx8KGQuYVs1XVtiXT1jKX0sYSk7UChqZCxmdW5jdGlvbihiKXtmb3IodmFyIGM9Ti5mKCksZD1yKFszLDQsNV0pLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWU9ZS52YWx1ZSxEYShjLmFbZV0sYltlXSl9LGEpfSxtZD1mdW5jdGlvbihhKXthLmhhc093blByb3BlcnR5KFwiaW5pdC1kb25lXCIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxcImluaXQtZG9uZVwiLHt2YWx1ZTohMH0pfTt2YXIgbmQ9ZnVuY3Rpb24oKXt0aGlzLmE9ZnVuY3Rpb24oKXt9O3RoaXMuYj1mdW5jdGlvbigpe3JldHVybltdfX0sb2Q9ZnVuY3Rpb24oYSxiLGMpe2EuYT1mdW5jdGlvbihkKXtRKFljLGIsZnVuY3Rpb24oKXtyZXR1cm5bXX0pKGQsYyl9O2EuYj1mdW5jdGlvbigpe3JldHVybiBRKFpjLGIsZnVuY3Rpb24oKXtyZXR1cm5bXX0pKGMpfX07dihuZCk7dmFyIHBkPWZ1bmN0aW9uKGEsYil7dHJ5e2E6e3ZhciBjPWEuc3BsaXQoXCIuXCIpO2E9dTtmb3IodmFyIGQ9MCxlO2Q8Yy5sZW5ndGg7ZCsrKWlmKGU9YSxhPWFbY1tkXV0sbnVsbD09YSl7dmFyIGY9bnVsbDticmVhayBhfWY9XCJmdW5jdGlvblwiPT09dHlwZW9mIGE/ZVtjW2QtMV1dKCk6YX1pZih0eXBlb2YgZj09PWIpcmV0dXJuIGZ9Y2F0Y2goZyl7fX0scWQ9ZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzWzNdPShhWzhdPWZ1bmN0aW9uKGIpe3RyeXtyZXR1cm4gbnVsbCE9eWEoYil9Y2F0Y2goYyl7fX0sYVs5XT1mdW5jdGlvbihiKXt0cnl7dmFyIGM9eWEoYil9Y2F0Y2goZCl7cmV0dXJufWlmKGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIGMpYz1jJiZjLnRvU3RyaW5nJiZjLnRvU3RyaW5nKCksYj1cInN0cmluZ1wiPT09dHlwZW9mIGMmJi0xIT1jLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpO3JldHVybiBifSxhWzEwXT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3c9PXdpbmRvdy50b3B9LGFbNl09ZnVuY3Rpb24oYil7cmV0dXJuIEphKG5kLmYoKS5iKCkscGFyc2VJbnQoYiwxMCkpfSxhWzI3XT1mdW5jdGlvbihiKXtiPXBkKGIsXCJib29sZWFuXCIpO3JldHVybiB2b2lkIDAhPT1iP2I6dm9pZCAwfSxhKTthPXt9O3RoaXNbNF09KGFbM109ZnVuY3Rpb24oKXtyZXR1cm4gJGIoKX0sYVs2XT1mdW5jdGlvbihiKXtiPXBkKGIsXCJudW1iZXJcIik7cmV0dXJuIHZvaWQgMCE9PWI/Yjp2b2lkIDB9LGEpO2E9e307dGhpc1s1XT0oYVsyXT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZn0sYVszXT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2luZG93LnRvcC5sb2NhdGlvbi5oYXNofWNhdGNoKGIpe3JldHVyblwiXCJ9fSxhWzRdPWZ1bmN0aW9uKGIpe2I9cGQoYixcInN0cmluZ1wiKTtyZXR1cm4gdm9pZCAwIT09Yj9iOnZvaWQgMH0sYSl9O3YocWQpO3ZhciByZD1mdW5jdGlvbigpe3ZhciBhPXZvaWQgMD09PWE/dTphO3JldHVybiBhLmdnZWFjfHwoYS5nZ2VhYz17fSl9O3ZhciB0ZD1mdW5jdGlvbihhKXtIKHRoaXMsYSxzZCxudWxsKX07eCh0ZCxHKTt2YXIgc2Q9WzJdO3RkLnByb3RvdHlwZS5nZXRJZD1mdW5jdGlvbigpe3JldHVybiBKKHRoaXMsMSwwKX07dGQucHJvdG90eXBlLnM9ZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzLDcsMCl9O3ZhciB2ZD1mdW5jdGlvbihhKXtIKHRoaXMsYSx1ZCxudWxsKX07eCh2ZCxHKTt2YXIgdWQ9WzJdO3ZkLnByb3RvdHlwZS5zPWZ1bmN0aW9uKCl7cmV0dXJuIEoodGhpcyw1LDApfTt2YXIgeGQ9ZnVuY3Rpb24oYSl7SCh0aGlzLGEsd2QsbnVsbCl9O3goeGQsRyk7dmFyIFI9ZnVuY3Rpb24oYSl7SCh0aGlzLGEseWQsbnVsbCl9O3goUixHKTt2YXIgd2Q9WzEsNCwyLDNdLHlkPVsyXTtSLnByb3RvdHlwZS5zPWZ1bmN0aW9uKCl7cmV0dXJuIEoodGhpcywxLDApfTt2YXIgemQ9WzEyLDEzXSxBZD1mdW5jdGlvbigpe30sQmQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dm9pZCAwPT09ZD97fTpkO2Q9dm9pZCAwPT09ZS5LPyExOmUuSzt2YXIgZj12b2lkIDA9PT1lLk0/e306ZS5NO2U9dm9pZCAwPT09ZS5TP1tdOmUuUzthLmE9YjthLmo9ZDthLmc9ZjtiPXt9O2EuYj0oYltjXT1lLGJbNF09W10sYik7YS5jPXt9OyhjPXFjKCkpJiZ5KGMuc3BsaXQoXCIsXCIpfHxbXSxmdW5jdGlvbihnKXsoZz1wYXJzZUludChnLDEwKSkmJihhLmNbZ109ITApfSk7cmV0dXJuIGF9LEdkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPUNkKGEuYSxiKTtpZihlLmxlbmd0aCl7OSE9PWImJihhLmE9RGQoYS5hLGIpKTt2YXIgZj1KYSh6ZCxiKTt5KGUsZnVuY3Rpb24oZyl7aWYoZz1FZChhLGcsYykpe3ZhciBoPWcuZ2V0SWQoKTtkLnB1c2goaCk7RmQoYSxoLGY/NDpjKTt2YXIgaz1MKGcsTSwyKTtrJiYoZj95KFVjKCksZnVuY3Rpb24obCl7cmV0dXJuIFNjKGssbCl9KTpTYyhrLGMpKX19KX1yZXR1cm4gZH0sRmQ9ZnVuY3Rpb24oYSxiLGMpe2EuYltjXXx8KGEuYltjXT1bXSk7YT1hLmJbY107SmEoYSxiKT9lYyh7ZWlkczpKU09OLnN0cmluZ2lmeShhKSxkdXA6Yn0pOmEucHVzaChiKX0sSGQ9ZnVuY3Rpb24oYSxiKXthLmEucHVzaC5hcHBseShhLmEsa2EoRmEoR2EoYixmdW5jdGlvbihjKXtyZXR1cm4gbmV3IFIoYyl9KSxmdW5jdGlvbihjKXtyZXR1cm4hSmEoemQsYy5zKCkpfSkpKX0sRWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU4uZigpLmE7aWYoIXljKEhiKGIsdGMsMyksZCkpcmV0dXJuIG51bGw7dmFyIGU9TChiLHRkLDIpLGY9ZS5sZW5ndGgqSihiLDEsMCksZz1KKGIsNiwwKTtpZihnKXtmPWRbNF07c3dpdGNoKGMpe2Nhc2UgMjp2YXIgaD1mWzhdO2JyZWFrO2Nhc2UgMTpoPWZbN119Zj1udWxsO2lmKGgpdHJ5e2Y9aChnKX1jYXRjaChrKXt9bnVsbD09PWYmJihmPU1hdGguZmxvb3IoMUUzKlRiKHdpbmRvdykpKTtiPUlkKGIsZik7cmV0dXJuIWJ8fGQmJiF5YyhIYihiLHRjLDMpLGQpP251bGw6SmQoYSxbYl0sMSl9Zz1kP0ZhKGUsZnVuY3Rpb24oayl7cmV0dXJuIHljKEhiKGssdGMsMyksZCl9KTplO3JldHVybiBnLmxlbmd0aD8oYj1KKGIsNCwwKSk/S2QoYSxiLGYsZyk6SmQoYSxnLGYvMUUzKTpudWxsfSxLZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1udWxsIT1hLmdbYl0/YS5nW2JdOjFFMztpZigwPj1lKXJldHVybiBudWxsO2Q9SmQoYSxkLGMvZSk7YS5nW2JdPWQ/MDplLWM7cmV0dXJuIGR9LEpkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmMsZT1IYShiLGZ1bmN0aW9uKGYpe3JldHVybiEhZFtmLmdldElkKCldfSk7cmV0dXJuIGU/ZTphLmo/bnVsbDpVYihiLGMpfSxMZD1mdW5jdGlvbihhLGIpe1AoV2MsZnVuY3Rpb24oYyl7YS5jW2NdPSEwfSxiKTtQKFljLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIEdkKGEsYyxkKX0sYik7UChaYyxmdW5jdGlvbihjKXtyZXR1cm4oYS5iW2NdfHxbXSkuY29uY2F0KGEuYls0XSl9LGIpO1AoaGQsZnVuY3Rpb24oYyl7cmV0dXJuIEhkKGEsYyl9LGIpfTt2KEFkKTt2YXIgQ2Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1IYShhLGZ1bmN0aW9uKGMpe3JldHVybiBjLnMoKT09Yn0pKSYmTChhLHZkLDIpfHxbXX0sRGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRmEoYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5zKCkhPWJ9KX0sSWQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1MKGEsdGQsMiksZD1jLmxlbmd0aCxlPUooYSwxLDApO2E9SihhLDgsMCk7dmFyIGY9KGItYSklZDtyZXR1cm4gYjxhfHxiLWEtZj49ZCplLTE/bnVsbDpjW2ZdfTt2YXIgTWQ9ZnVuY3Rpb24oKXt0aGlzLmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8hMTpifTt0aGlzLmM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj8wOmJ9O3RoaXMuYT1mdW5jdGlvbigpe319LE5kPWZ1bmN0aW9uKGEsYixjKXthLmI9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gUShhZCxiKShkLGUsYyl9O2EuYz1mdW5jdGlvbihkLGUpe3JldHVybiBRKGJkLGIpKGQsZSxjKX07YS5hPWZ1bmN0aW9uKCl7UShYYyxiKShjKX19O3YoTWQpO3ZhciBTPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/ITE6YjtyZXR1cm4gTWQuZigpLmIoYSxiKX07dmFyIE9kPWZ1bmN0aW9uKCl7dGhpcy5hPWZ1bmN0aW9uKCl7fX07dihPZCk7dmFyIFBkPWZ1bmN0aW9uKGEpe09kLmYoKS5hKGEpfTt2YXIgU2Q9ZnVuY3Rpb24oYSl7dmFyIGI9UWQuZigpLGM9e0s6VCgyMTEpLE06VCgyMjcpLFM6VCgyMjYpfSxkPXZvaWQgMCxlPTI7ZD12b2lkIDA9PT1kP3JkKCk6ZDtlPXZvaWQgMD09PWU/MDplO2QuaGFzT3duUHJvcGVydHkoXCJpbml0LWRvbmVcIik/KFEoaGQsZCkoR2EoTChhLFIsMiksZnVuY3Rpb24oZil7cmV0dXJuIGYuaH0pKSxRKGlkLGQpKEdhKEwoYSxNLDEpLGZ1bmN0aW9uKGYpe3JldHVybiBmLmh9KSxlKSxiJiZRKGpkLGQpKGIpLFJkKGQsZSkpOihMZChCZChBZC5mKCksTChhLFIsMiksZSxjKSxkKSxrZChkKSxsZChkKSxtZChkKSxSZChkLGUpLFNjKEwoYSxNLDEpLGUpLEZjPUZjfHwhKCFjfHwhYy5YKSxQZChxZC5mKCkpLGImJlBkKGIpKX0sUmQ9ZnVuY3Rpb24oYSxiKXthPXZvaWQgMD09PWE/cmQoKTphO2I9dm9pZCAwPT09Yj8wOmI7dmFyIGM9YSxkPWI7ZD12b2lkIDA9PT1kPzA6ZDtvZChuZC5mKCksYyxkKTtjPWE7Yj12b2lkIDA9PT1iPzA6YjtOZChNZC5mKCksYyxiKTtPZC5mKCkuYT1RKGpkLGEpO01kLmYoKS5hKCl9O3ZhciBUZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9XCJzY3JpcHRcIjtkPXZvaWQgMD09PWQ/XCJcIjpkO3ZhciBlPWEuY3JlYXRlRWxlbWVudChcImxpbmtcIik7dHJ5e2UucmVsPVwicHJlbG9hZFwiO2lmKGIgaW5zdGFuY2VvZiBCKXZhciBmPVFhKGIpLnRvU3RyaW5nKCk7ZWxzZXtpZihiIGluc3RhbmNlb2YgQyl2YXIgZz1oYihiKTtlbHNle2lmKGIgaW5zdGFuY2VvZiBDKXZhciBoPWI7ZWxzZSBiPVwib2JqZWN0XCI9PXR5cGVvZiBiJiZiLm0/Yi5hKCk6U3RyaW5nKGIpLGtiLnRlc3QoYil8fChiPVwiYWJvdXQ6aW52YWxpZCN6Q2xvc3VyZXpcIiksaD1uZXcgQyhiLGdiKTtnPWhiKGgpfWY9Z31lLmhyZWY9Zn1jYXRjaChrKXtyZXR1cm59ZCYmKGUuYXM9ZCk7YyYmZS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGMpO2lmKGE9YS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0pdHJ5e2EuYXBwZW5kQ2hpbGQoZSl9Y2F0Y2goayl7fX07dmFyIFVkPS9eXFwuZ29vZ2xlXFwuKGNvbT9cXC4pP1thLXpdezIsM30kLyxWZD0vXFwuKGNufGNvbVxcLmJpfGRvfHNsfGJhfGJ5fG1hfGFtKSQvLFdkPWZ1bmN0aW9uKGEpe3JldHVybiBVZC50ZXN0KGEpJiYhVmQudGVzdChhKX0sWGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xcV10vZyxmdW5jdGlvbihiKXtyZXR1cm5cIiYjXCIrYi5jaGFyQ29kZUF0KCkrXCI7XCJ9KX0sVT11LFlkPWZ1bmN0aW9uKGEsYil7YT1cImh0dHBzOi8vYWRzZXJ2aWNlXCIrKGIrXCIvYWRzaWQvaW50ZWdyYXRvci5cIithKTtiPVtcImRvbWFpbj1cIitlbmNvZGVVUklDb21wb25lbnQodS5sb2NhdGlvbi5ob3N0bmFtZSldO1ZbM10+PXcoKSYmYi5wdXNoKFwiYWRzaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFZbMV0pKTtyZXR1cm4gYStcIj9cIitiLmpvaW4oXCImXCIpfSxWLFcsWmQ9ZnVuY3Rpb24oKXtVPXU7Vj1VLmdvb2dsZVRva2VuPVUuZ29vZ2xlVG9rZW58fHt9O3ZhciBhPXcoKTtWWzFdJiZWWzNdPmEmJjA8VlsyXXx8KFZbMV09XCJcIixWWzJdPS0xLFZbM109LTEsVls0XT1cIlwiLFZbNl09XCJcIik7Vz1VLmdvb2dsZUlNU3RhdGU9VS5nb29nbGVJTVN0YXRlfHx7fTtXZChXWzFdKXx8KFdbMV09XCIuZ29vZ2xlLmNvbVwiKTtBcnJheS5pc0FycmF5KFdbNV0pfHwoV1s1XT1bXSk7XCJib29sZWFuXCIhPT10eXBlb2YgV1s2XSYmKFdbNl09ITEpO0FycmF5LmlzQXJyYXkoV1s3XSl8fChXWzddPVtdKTtcIm51bWJlclwiIT09dHlwZW9mIFdbOF0mJihXWzhdPTApfSwkZD1mdW5jdGlvbihhKXt0cnl7YSgpfWNhdGNoKGIpe3Uuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGI7fSwwKX19LGJlPWZ1bmN0aW9uKGEpe1wiY29tcGxldGVcIj09dS5kb2N1bWVudC5yZWFkeVN0YXRlfHxcImxvYWRlZFwiPT11LmRvY3VtZW50LnJlYWR5U3RhdGV8fHUuZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmdS5kb2N1bWVudC5jdXJyZW50U2NyaXB0LmFzeW5jP2FlKDMpOmEoKX0sY2U9MCxkZT17dTpmdW5jdGlvbigpe3JldHVybiAwPFdbOF19LEc6ZnVuY3Rpb24oKXtXWzhdKyt9LE86ZnVuY3Rpb24oKXswPFdbOF0mJldbOF0tLX0sUDpmdW5jdGlvbigpe1dbOF09MH0sdjpmdW5jdGlvbigpe30sVDpmdW5jdGlvbigpe3JldHVybiExfSxMOmZ1bmN0aW9uKCl7cmV0dXJuIFdbNV19LEo6JGR9LGVlPXt1OmZ1bmN0aW9uKCl7cmV0dXJuIFdbNl19LEc6ZnVuY3Rpb24oKXtXWzZdPSEwfSxPOmZ1bmN0aW9uKCl7V1s2XT0hMX0sUDpmdW5jdGlvbigpe1dbNl09ITF9LHY6ZnVuY3Rpb24oKXt9LFQ6ZnVuY3Rpb24oKXtyZXR1cm5cIi5nb29nbGUuY29tXCIhPVdbMV0mJjI8KytjZX0sTDpmdW5jdGlvbigpe3JldHVybiBXWzddfSxKOmZ1bmN0aW9uKGEpe2JlKGZ1bmN0aW9uKCl7JGQoYSl9KX19LGFlPWZ1bmN0aW9uKGEpezFFLTU+TWF0aC5yYW5kb20oKSYmY2ModSxcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9aW1lcnImZXJyPVwiK2EpfTtkZS52PWZ1bmN0aW9uKCl7aWYoIWRlLnUoKSl7dmFyIGE9dS5kb2N1bWVudCxiPWZ1bmN0aW9uKGUpe2U9WWQoXCJqc1wiLGUpO3ZhciBmPVpiKCk7VGQoYSxlLGYpO2Y9YS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2YudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2Yub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiB1LnByb2Nlc3NHb29nbGVUb2tlbih7fSwyKX07ZT1OYihlKTt5YihmLGUpO3RyeXsoYS5oZWFkfHxhLmJvZHl8fGEuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChmKSxkZS5HKCl9Y2F0Y2goZyl7fX0sYz1XWzFdO2IoYyk7XCIuZ29vZ2xlLmNvbVwiIT1jJiZiKFwiLmdvb2dsZS5jb21cIik7Yj17fTt2YXIgZD0oYi5uZXdUb2tlbj1cIkZCVFwiLGIpO3Uuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB1LnByb2Nlc3NHb29nbGVUb2tlbihkLDEpfSwxRTMpfX07ZWUudj1mdW5jdGlvbigpe2lmKCFlZS51KCkpe3ZhciBhPXUuZG9jdW1lbnQsYj1ZZChcInN5bmMuanNcIixXWzFdKSxjPVpiKCk7VGQoYSxiLGMpO2I9WGQoYik7dmFyIGQ9emIoXCJzY3JpcHRcIiksZT1cIlwiO2MmJihlPSdub25jZT1cIicrWGQoYykrJ1wiJyk7dmFyIGY9XCI8XCIrZCsnIHNyYz1cIicrYisnXCIgJytlK1wiPjwvXCIrZCtcIj48XCIrKGQrXCIgXCIrZSsnPnByb2Nlc3NHb29nbGVUb2tlblN5bmMoe1wibmV3VG9rZW5cIjpcIkZCU1wifSw1KTs8LycrZCtcIj5cIik7YmUoZnVuY3Rpb24oKXthLndyaXRlKGYpO2VlLkcoKX0pfX07dmFyIGZlPWZ1bmN0aW9uKGEpe1pkKCk7VlszXT49dygpJiZWWzJdPj13KCl8fGEudigpfSxoZT1mdW5jdGlvbigpe3UucHJvY2Vzc0dvb2dsZVRva2VuPXUucHJvY2Vzc0dvb2dsZVRva2VufHxmdW5jdGlvbihhLGIpe3JldHVybiBnZShkZSxhLGIpfTtmZShkZSl9LGllPWZ1bmN0aW9uKCl7dS5wcm9jZXNzR29vZ2xlVG9rZW5TeW5jPXUucHJvY2Vzc0dvb2dsZVRva2VuU3luY3x8ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2UoZWUsYSxiKX07ZmUoZWUpfSxnZT1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iP3t9OmI7Yz12b2lkIDA9PT1jPzA6Yzt2YXIgZD1iLm5ld1Rva2VufHxcIlwiLGU9XCJOVFwiPT1kLGY9cGFyc2VJbnQoYi5mcmVzaExpZmV0aW1lU2Vjc3x8XCJcIiwxMCksZz1wYXJzZUludChiLnZhbGlkTGlmZXRpbWVTZWNzfHxcIlwiLDEwKSxoPWJbXCIxcF9qYXJcIl18fFwiXCI7Yj1iLnB1Y3JkfHxcIlwiO1pkKCk7MT09Yz9hLlAoKTphLk8oKTtpZighZCYmYS5UKCkpV2QoXCIuZ29vZ2xlLmNvbVwiKSYmKFdbMV09XCIuZ29vZ2xlLmNvbVwiKSxhLnYoKTtlbHNle3ZhciBrPVUuZ29vZ2xlVG9rZW49VS5nb29nbGVUb2tlbnx8e30sbD0wPT1jJiZkJiZcInN0cmluZ1wiPT09dHlwZW9mIGQmJiFlJiZcIm51bWJlclwiPT09dHlwZW9mIGYmJjA8ZiYmXCJudW1iZXJcIj09PXR5cGVvZiBnJiYwPGcmJlwic3RyaW5nXCI9PT10eXBlb2YgaDtlPWUmJiFhLnUoKSYmKCEoVlszXT49dygpKXx8XCJOVFwiPT1WWzFdKTt2YXIgcD0hKFZbM10+PXcoKSkmJjAhPWM7aWYobHx8ZXx8cCllPXcoKSxmPWUrMUUzKmYsZz1lKzFFMypnLGFlKGMpLGtbNV09YyxrWzFdPWQsa1syXT1mLGtbM109ZyxrWzRdPWgsa1s2XT1iLFpkKCk7aWYobHx8IWEudSgpKXtjPWEuTCgpO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspYS5KKGNbZF0pO2MubGVuZ3RoPTB9fX07dmFyIGplPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT91OmE7cmV0dXJuKGE9YS5wZXJmb3JtYW5jZSkmJmEubm93P2Eubm93KCk6bnVsbH07dmFyIFg9dS5wZXJmb3JtYW5jZSxrZT0hIShYJiZYLm1hcmsmJlgubWVhc3VyZSYmWC5jbGVhck1hcmtzKSxsZT1LYShmdW5jdGlvbigpe3ZhciBhO2lmKGE9a2UpYT1xYygpLGE9ISFhLmluZGV4T2YmJjA8PWEuaW5kZXhPZihcIjEzMzdcIik7cmV0dXJuIGF9KTt2YXIgbWU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYT12b2lkIDA9PT1hP251bGw6YTt0aGlzLmc9dm9pZCAwPT09Yj9cImpzZXJyb3JcIjpiO3RoaXMuYj1udWxsO3RoaXMuYz12b2lkIDA9PT1jPy4wMTpjO3RoaXMubz10aGlzLmp9LG5lPWZ1bmN0aW9uKGEsYil7YS5iPWJ9O21lLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yz12b2lkIDA9PT1jP3RoaXMuYzpjO2U9dm9pZCAwPT09ZT90aGlzLmc6ZTtpZihNYXRoLnJhbmRvbSgpPmMpcmV0dXJuITE7Yi5lcnJvciYmYi5tZXRhJiZiLmlkfHwoYj1uZXcgb2MoYix7Y29udGV4dDphLGlkOmV9KSk7aWYoZHx8dGhpcy5iKWIubWV0YT17fSx0aGlzLmImJnRoaXMuYihiLm1ldGEpLGQmJmQoYi5tZXRhKTt1Lmdvb2dsZV9qc19lcnJvcnM9dS5nb29nbGVfanNfZXJyb3JzfHxbXTt1Lmdvb2dsZV9qc19lcnJvcnMucHVzaChiKTt1LmVycm9yX3JlcF9sb2FkZWR8fChiPXUuZG9jdW1lbnQsYz1OYih1LmxvY2F0aW9uLnByb3RvY29sK1wiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvZXJyX3JlcC5qc1wiKSxhPWIuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSx5YihhLFwic3RyaW5nXCI9PT10eXBlb2YgYz9OYihjKTpjKSwoYj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdKSYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYiksdS5lcnJvcl9yZXBfbG9hZGVkPSEwKTtyZXR1cm4hMX07dmFyIG9lPWZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBjPWEuYSYmYS5hLnN0YXJ0KFwiNDIwXCIsMyk7YigpO2EuYSYmYyYmYS5hLmEoYyl9Y2F0Y2goZCl7aWYoYS5hJiZjJiYoYj1jKSYmWCYmbGUoKSYmKFguY2xlYXJNYXJrcyhcImdvb2dfXCIrYi5sYWJlbCtcIl9cIitiLnVuaXF1ZUlkK1wiX3N0YXJ0XCIpLFguY2xlYXJNYXJrcyhcImdvb2dfXCIrYi5sYWJlbCtcIl9cIitiLnVuaXF1ZUlkK1wiX2VuZFwiKSksIWEubyg0MjAsZCxhLmMsdm9pZCAwLGEuZykpdGhyb3cgZDt9fTt2YXIgcGU9QShcImdwdC9wdWJhZHNfaW1wbF9cIikscWU9QShcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L1wiKTt2YXIgcmU9ZnVuY3Rpb24oYSl7dmFyIGI9amUoYSk7YiYmKGI9e2xhYmVsOlwiMVwiLHR5cGU6OSx2YWx1ZTpifSxhPWEuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1hLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdLDIwNDg+YS5sZW5ndGgmJmEucHVzaChiKSl9LHNlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD13aW5kb3c7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9amUoKSxmPTM7dHJ5e3ZhciBnPWIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGspe2Y9MTM7aWYoYylyZXR1cm4gYyhhLGspLGc7dGhyb3cgazt9ZmluYWxseXtpZihkLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmZSl7dmFyIGg9amUoKXx8MDtlPXtsYWJlbDphLnRvU3RyaW5nKCksdmFsdWU6ZSxkdXJhdGlvbjpoLWUsdHlwZTpmfTtmPWQuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1kLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdOzIwNDg+Zi5sZW5ndGgmJmYucHVzaChlKX19cmV0dXJuIGd9fSx0ZT1mdW5jdGlvbihhLGIpe3JldHVybiBzZShhLGIsZnVuY3Rpb24oYyxkKXsobmV3IG1lKS5qKGMsZCl9KX07ZnVuY3Rpb24gWShhLGIpe3JldHVybiBudWxsPT1iP1wiJlwiK2ErXCI9bnVsbFwiOlwiJlwiK2ErXCI9XCIrTWF0aC5mbG9vcihiKX12YXIgdWU9bmV3IG0uU2V0O2Z1bmN0aW9uIHZlKGEpe2E9YS5pZDtyZXR1cm4gdWUuaGFzKGEpfHxuKGEsXCJzdGFydHNXaXRoXCIpLmNhbGwoYSxcImdvb2dsZV9hZHNfaWZyYW1lX1wiKXx8bihhLFwic3RhcnRzV2l0aFwiKS5jYWxsKGEsXCJhc3dpZnRcIil9ZnVuY3Rpb24gd2UoYSxiKXtiPXZvaWQgMD09PWI/NDpiO2lmKCFhKXJldHVybiExO2lmKHZlKGEpKXJldHVybiEwO2lmKDA+PWIpcmV0dXJuITE7YT1yKGEuY2hpbGROb2Rlcyk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZih3ZShjLnZhbHVlLGItMSkpcmV0dXJuITA7cmV0dXJuITF9dmFyIHhlPWZ1bmN0aW9uKCl7dGhpcy5OPXRoaXMuVT10aGlzLlY9dGhpcy5iPXRoaXMuQT10aGlzLm89dGhpcy5nPTA7dGhpcy5SPSExO3RoaXMuRD10aGlzLmo9dGhpcy5jPTA7dmFyIGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIltkYXRhLWdvb2dsZS1xdWVyeS1pZF1cIik7dGhpcy5JPWE/YS5nZXRBdHRyaWJ1dGUoXCJkYXRhLWdvb2dsZS1xdWVyeS1pZFwiKTpudWxsO3RoaXMuRj1udWxsO3RoaXMuSD0hMTt0aGlzLmE9dGUoNjQxLHRoaXMuYS5iaW5kKHRoaXMpKX07cmEoeGUsYmMpO3ZhciB6ZT1mdW5jdGlvbigpe3ZhciBhPW5ldyB4ZTtpZihTKDIwMykmJiF3aW5kb3cuZ29vZ2xlX3BsbWV0cmljcyYmd2luZG93LlBlcmZvcm1hbmNlT2JzZXJ2ZXIpe3dpbmRvdy5nb29nbGVfcGxtZXRyaWNzPSEwO2Zvcih2YXIgYj1yKFtcImxheW91dC1zaGlmdFwiLFwibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50XCIsXCJmaXJzdC1pbnB1dFwiLFwibG9uZ3Rhc2tcIl0pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSx5ZShhKS5vYnNlcnZlKHt0eXBlOmMsYnVmZmVyZWQ6IVMoMjQwKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmxvYWRcIixhLmEpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsYS5hKX19LHllPWZ1bmN0aW9uKGEpe2EuRnx8KGEuRj1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcih0ZSg2NDAsZnVuY3Rpb24oYil7dmFyIGM9ITE7Yj1yKGIuZ2V0RW50cmllcygpKTtmb3IodmFyIGQ9Yi5uZXh0KCk7IWQuZG9uZTtkPWIubmV4dCgpKXN3aXRjaChkPWQudmFsdWUsZC5lbnRyeVR5cGUpe2Nhc2UgXCJsYXlvdXQtc2hpZnRcIjppZighYyl7dHJ5e2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZ29vZ2xldGFnJiZnb29nbGV0YWcucHViYWRzKXt2YXIgZT1nb29nbGV0YWcucHViYWRzKCk7dWUuY2xlYXIoKTtmb3IodmFyIGY9cihlLmdldFNsb3RzKCkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXVlLmFkZChnLnZhbHVlLmdldFNsb3RJZCgpLmdldERvbUlkKCkpfX1jYXRjaChwKXt9Yz0hMH12YXIgaD1hO2lmKCFkLmhhZFJlY2VudElucHV0JiYoIVMoMjQxKXx8LjAxPGQudmFsdWUpKXtoLmcrPU51bWJlcihkLnZhbHVlKTtOdW1iZXIoZC52YWx1ZSk+aC5vJiYoaC5vPU51bWJlcihkLnZhbHVlKSk7aC5BKz0xO2E6e2lmKGQuc291cmNlcyl7dmFyIGs9cihkLnNvdXJjZXMpO2Zvcih2YXIgbD1rLm5leHQoKTshbC5kb25lO2w9ay5uZXh0KCkpaWYod2UobC52YWx1ZS5ub2RlKSl7az0hMDticmVhayBhfX1rPSExfWsmJihoLmIrPWQudmFsdWUsaC5WKyspfWJyZWFrO2Nhc2UgXCJsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnRcIjphLlU9TWF0aC5mbG9vcihkLnJlbmRlclRpbWV8fGQubG9hZFRpbWUpO2JyZWFrO2Nhc2UgXCJmaXJzdC1pbnB1dFwiOmEuTj1OdW1iZXIoKGQucHJvY2Vzc2luZ1N0YXJ0LWQuc3RhcnRUaW1lKS50b0ZpeGVkKDMpKTthLlI9ITA7YnJlYWs7Y2FzZSBcImxvbmd0YXNrXCI6YS5jKz1kLmR1cmF0aW9uLGQuZHVyYXRpb24+YS5qJiYoYS5qPWQuZHVyYXRpb24pLGEuRCs9MX19KSkpO3JldHVybiBhLkZ9O3hlLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7dmFyIGE7aWYoYT0hdGhpcy5IKWE9ZG9jdW1lbnQsYT0yPT09KHt2aXNpYmxlOjEsaGlkZGVuOjIscHJlcmVuZGVyOjMscHJldmlldzo0LHVubG9hZGVkOjV9W2EudmlzaWJpbGl0eVN0YXRlfHxhLndlYmtpdFZpc2liaWxpdHlTdGF0ZXx8YS5tb3pWaXNpYmlsaXR5U3RhdGV8fFwiXCJdfHwwKTtpZihhKXt0aGlzLkg9ITA7eWUodGhpcykudGFrZVJlY29yZHMoKTthPVwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD1wbG1ldHJpY3NcIjt3aW5kb3cuTGF5b3V0U2hpZnQmJihhKz1cIiZjbHM9XCIrdGhpcy5nLnRvRml4ZWQoMyksYSs9XCImbWxzPVwiK3RoaXMuby50b0ZpeGVkKDMpLGErPVkoXCJubHNcIix0aGlzLkEpLHdpbmRvdy5MYXlvdXRTaGlmdEF0dHJpYnV0aW9uJiYoYSs9XCImY2FzPVwiK3RoaXMuYi50b0ZpeGVkKDMpLGErPVkoXCJuYXNcIix0aGlzLlYpKSk7d2luZG93Lkxhcmdlc3RDb250ZW50ZnVsUGFpbnQmJihhKz1ZKFwibGNwXCIsdGhpcy5VKSk7d2luZG93LlBlcmZvcm1hbmNlRXZlbnRUaW1pbmcmJnRoaXMuUiYmKGErPVkoXCJmaWRcIix0aGlzLk4pKTt3aW5kb3cuUGVyZm9ybWFuY2VMb25nVGFza1RpbWluZyYmKGErPVkoXCJjYnRcIix0aGlzLmMpLGErPVkoXCJtYnRcIix0aGlzLmopLGErPVkoXCJubHRcIix0aGlzLkQpKTtmb3IodmFyIGI9MCxjPXIoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpZnJhbWVcIikpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXZlKGQudmFsdWUpJiZiKys7YSs9WShcIm5pZlwiLGIpO2I9d2luZG93Lmdvb2dsZV91bmlxdWVfaWQ7YSs9WShcImlmaVwiLFwibnVtYmVyXCI9PT10eXBlb2YgYj9iOjApO2I9bmQuZigpLmIoKTthKz1cIiZlaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGIuam9pbigpKTthKz1cIiZ0b3A9XCIrKHU9PT11LnRvcD8xOjApO2lmKHRoaXMuSSliPVwiJnFxaWQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuSSk7ZWxzZXtpZihcIm51bWJlclwiIT09dHlwZW9mIHUuZ29vZ19wdnNpZCl0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHUsXCJnb29nX3B2c2lkXCIse3ZhbHVlOk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygyLDUyKSl9KX1jYXRjaChlKXt9Yj1ZKFwicHZzaWRcIixOdW1iZXIodS5nb29nX3B2c2lkKXx8LTEpfXdpbmRvdy5mZXRjaChhK2Ise2tlZXBhbGl2ZTohMCxjcmVkZW50aWFsczpcImluY2x1ZGVcIixyZWRpcmVjdDpcImZvbGxvd1wiLG1ldGhvZDpcImdldFwiLG1vZGU6XCJuby1jb3JzXCJ9KX19O3ZhciBBZT1be2lzc3Vlck9yaWdpbjpcImh0dHBzOi8vYWRzZXJ2aWNlLmdvb2dsZS5jb21cIixpc3N1YW5jZVBhdGg6XCIvdHQvaVwiLHJlZGVtcHRpb25QYXRoOlwiL3R0L3JcIn1dLENlPWZ1bmN0aW9uKGEpe3RoaXMuYz1BZTt0aGlzLmI9YTt0aGlzLmE9QmUodGhpcyl9O3JhKENlLGJjKTt2YXIgQmU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5jLm1hcChmdW5jdGlvbihjKXtyZXR1cm57aXNzdWVyT3JpZ2luOmMuaXNzdWVyT3JpZ2luLHN0YXRlOmRvY3VtZW50Lmhhc1RydXN0VG9rZW4/MTowfX0pO2EuYihiKTtyZXR1cm4gYn0sRGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW4oYS5hLFwiZmluZEluZGV4XCIpLmNhbGwoYS5hLGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzc3Vlck9yaWdpbj09PWJ9KTswPD1kJiYoYS5hW2RdLnN0YXRlPWMsYS5iKGEuYSkpfSxFZT1mdW5jdGlvbihhKXtkb2N1bWVudC5oYXNUcnVzdFRva2VuJiZhLmMuZm9yRWFjaChmdW5jdGlvbihiKXt3aW5kb3cuZmV0Y2goYi5pc3N1ZXJPcmlnaW4rYi5yZWRlbXB0aW9uUGF0aCx7a2VlcGFsaXZlOiEwLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsdHJ1c3RUb2tlbjp7dHlwZTpcInNyci10b2tlbi1yZWRlbXB0aW9uXCIsaXNzdWVyOmIuaXNzdWVyT3JpZ2luLHJlZnJlc2hQb2xpY3k6XCJub25lXCJ9fSkudGhlbihmdW5jdGlvbihjKXtpZighYy5vayl0aHJvdyBFcnJvcihjLnN0YXR1cytcIjogTmV0d29yayByZXNwb25zZSB3YXMgbm90IG9rIVwiKTtEZShhLGIuaXNzdWVyT3JpZ2luLDYpfSkuY2F0Y2goZnVuY3Rpb24oYyl7YyYmXCJOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvclwiPT09Yy5uYW1lP0RlKGEsYi5pc3N1ZXJPcmlnaW4sNik6RGUoYSxiLmlzc3Vlck9yaWdpbiw1KX0pO0RlKGEsYi5pc3N1ZXJPcmlnaW4sMil9KX07dmFyIEZlPVtcInBsYXRmb3JtXCIsXCJwbGF0Zm9ybVZlcnNpb25cIixcImFyY2hpdGVjdHVyZVwiLFwibW9kZWxcIixcInVhRnVsbFZlcnNpb25cIl0sR2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubmF2aWdhdG9yJiZhLm5hdmlnYXRvci51c2VyQWdlbnREYXRhJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5uYXZpZ2F0b3IudXNlckFnZW50RGF0YS5nZXRIaWdoRW50cm9weVZhbHVlcz9hLm5hdmlnYXRvci51c2VyQWdlbnREYXRhLmdldEhpZ2hFbnRyb3B5VmFsdWVzKEZlKS50aGVuKGZ1bmN0aW9uKGIpe3ZhciBjPW5ldyBqYztjPUsoYywxLGIucGxhdGZvcm0pO2M9SyhjLDIsYi5wbGF0Zm9ybVZlcnNpb24pO2M9SyhjLDMsYi5hcmNoaXRlY3R1cmUpO2M9SyhjLDQsYi5tb2RlbCk7cmV0dXJuIEsoYyw1LGIudWFGdWxsVmVyc2lvbil9KTpudWxsfTt2YXIgSGU9ZnVuY3Rpb24oKXtyZXR1cm4gdS5nb29nbGV0YWd8fCh1Lmdvb2dsZXRhZz17fSl9LEllPWZ1bmN0aW9uKGEsYil7dmFyIGM9SGUoKTtjLmhhc093blByb3BlcnR5KGEpfHwoY1thXT1iKX0sSmU9ZnVuY3Rpb24oYSxiKXthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoXCJvbmxvYWRcIixiKX07dmFyIFo9ezI0NzpcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0XCIsNzouMDIsMTM6MTUwMCwyMzouMDAxLDM3Oi4wMSwzODouMDAxLDU4OjEsMTUwOlwiXCIsMjExOiExLDI1MzohMSwxNTI6W10sMTcyOm51bGwsMTkxOlwiXCIsMTkyOlwiXCIsMTkwOlwiXCIsMjQ1Ont9LDE4MDpudWxsLDI0NjpbXSwyMjc6e30sMjI2OltdLDI0ODowLDIyODpcIi8vd3d3Lmdvb2dsZXRhZ3NlcnZpY2VzLmNvbS9wdWJjb25zb2xlL1wiLDI1MDpudWxsLDI1MjpudWxsLDI1MTpudWxsfTtaWzZdPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPyEwOmI7dHJ5e2Zvcih2YXIgYz1udWxsO2MhPWE7Yz1hLGE9YS5wYXJlbnQpc3dpdGNoKGEubG9jYXRpb24ucHJvdG9jb2wpe2Nhc2UgXCJodHRwczpcIjpyZXR1cm4hMDtjYXNlIFwiZmlsZTpcIjpyZXR1cm4gYjtjYXNlIFwiaHR0cDpcIjpyZXR1cm4hMX19Y2F0Y2goZCl7fXJldHVybiEwfSh3aW5kb3cpO1pbNDldPShuZXcgRGF0ZSkuZ2V0VGltZSgpO1pbMzZdPS9edHJ1ZSQvLnRlc3QoXCJmYWxzZVwiKTtaWzE0OF09RWM7WlsyMjFdPS9edHJ1ZSQvLnRlc3QoXCJcIik7WlsyMDRdPVliKFwie3tNT0R9fVwiLC0xKTt2YXIgS2U9ZnVuY3Rpb24oKXtEYSh0aGlzLFopfTt2KEtlKTt2YXIgVD1mdW5jdGlvbihhKXtyZXR1cm4gS2UuZigpW2FdfSxMZT1IZSgpLE1lPUtlLmYoKTtEYShNZSxMZS5fdmFyc18pO0xlLl92YXJzXz1NZTt2YXIgTmU9bmV3IG0uV2Vha01hcCxPZT1mdW5jdGlvbihhLGIpe2E9W2FdO2Zvcih2YXIgYz1iLmxlbmd0aC0xOzA8PWM7LS1jKWEucHVzaCh0eXBlb2YgYltjXSxiW2NdKTtyZXR1cm4gYS5qb2luKFwiXFx4MEJcIil9O3ZhciBQZT1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9PZTpiO3ZhciBjPUNhKGEpLGQ9ZnVuY3Rpb24oZSl7ZT1yKGUpO2UubmV4dCgpO2U9amEoZSk7cmV0dXJuIGIoYyxlKX07cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgZj1bXSxnPTA7Zzxhcmd1bWVudHMubGVuZ3RoOysrZylmW2ddPWFyZ3VtZW50c1tnXTtnPXRoaXN8fHU7dmFyIGg9TmUuZ2V0KGcpO2h8fChoPXt9LE5lLnNldChnLGgpKTtnPWg7aD1bdGhpc10uY29uY2F0KGthKGYpKTtmPWQ/ZChoKTpoO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnLGYpKWc9Z1tmXTtlbHNle3ZhciBrPXIoaCk7aD1rLm5leHQoKS52YWx1ZTtrPWphKGspO2g9YS5hcHBseShoLGspO2c9Z1tmXT1ofXJldHVybiBnfX0oZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuc3JjPy9eKD86aHR0cHM/Oik/XFwvXFwvKD86d3d3XFwuZ29vZ2xldGFnc2VydmljZXNcXC5jb218c2VjdXJlcHViYWRzXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KVxcL3RhZ1xcL2pzXFwvZ3B0KD86X1thLXpdKykqXFwuanMvLnRlc3QoYS5zcmMpPzA6MToyfSxmdW5jdGlvbihhLGIpe3JldHVybiBhK1wiXFx4MEJcIisoYiYmYlswXSYmYlswXS5zcmMpfSksUWU9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PVBlKFQoMTcyKSl9O3ZhciBSZT1mdW5jdGlvbigpe3JldHVybiBZYihcIjlcIil8fDB9O0llKFwiZ2V0VmVyc2lvblwiLGZ1bmN0aW9uKCl7cmV0dXJuXCIyMDIwMDgyNzAxXCJ9KTt2YXIgUWQ9ZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzWzNdPShhWzNdPVFlLGFbMl09VCgzNiksYVsxN109ZnVuY3Rpb24oYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7KytkKWNbZF09YXJndW1lbnRzW2RdO3JldHVybiBuKGMsXCJpbmNsdWRlc1wiKS5jYWxsKGMsU3RyaW5nKGFjKCkpKX0sYVsyMV09ZnVuY3Rpb24oKXtyZXR1cm4gVCgxNDgpfSxhKTthPXt9O3RoaXNbNF09KGFbMV09ZnVuY3Rpb24oKXtyZXR1cm4gVCgyMDQpfSxhWzRdPVJlLGEpO2E9e307dGhpc1s1XT0oYVs1XT1mdW5jdGlvbigpe3ZhciBiPVQoMTcyKTtyZXR1cm4gYj9RYihiLnNyYy5tYXRjaChQYilbM118fG51bGwpOnZvaWQgMH0sYSl9O3YoUWQpO3ZhciBTZT1bXSxUZT1mdW5jdGlvbihhKXt2YXIgYj1uZXcgeGQoVCgyNDYpKTthPW5ldyB4ZChhfHxTZSk7aWYoIUwoYixNLDEpLmxlbmd0aCYmTChhLE0sMSkubGVuZ3RoKXt2YXIgYz1MKGEsTSwxKTtJYihiLDEsYyl9IUwoYixSLDIpLmxlbmd0aCYmTChhLFIsMikubGVuZ3RoJiYoYT1MKGEsUiwyKSxJYihiLDIsYSkpO1NkKGIpfTt2YXIgVWU9ZnVuY3Rpb24oYSl7aWYoYT1hLnNjcmlwdHMpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl07aWYoLTE8Yy5zcmMuaW5kZXhPZihcIi90YWcvanMvZ3B0XCIpKXJldHVybiBjfXJldHVybiBudWxsfSxWZT1mdW5jdGlvbihhKXt2YXIgYj1hLmN1cnJlbnRTY3JpcHQ7cmV0dXJuXCJjb21wbGV0ZVwiIT1hLnJlYWR5U3RhdGUmJlwibG9hZGVkXCIhPWEucmVhZHlTdGF0ZSYmIShiJiZiLmFzeW5jKX0sV2U9ZnVuY3Rpb24oKXt2YXIgYT1bUygzOTMpP0EoXCJodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vXCIpOnFlLHBlLEEoXCIyMDIwMDgyNzAxXCIpLEEoXCIuanNcIildO2Zvcih2YXIgYj1cIlwiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1PYShhW2NdKTthPW5ldyBCKGIsUGEpO3ZhciBkPXZvaWQgMD09PWQ/MDpkOyhkPU1kLmYoKS5jKDI0LGQpKT8oZD1TdHJpbmcoZCksYT1VYS5leGVjKFFhKGEpLnRvU3RyaW5nKCkpLGI9YVszXXx8XCJcIixkPW5ldyBCKGFbMV0rVmEoXCI/XCIsYVsyXXx8XCJcIixkKStWYShcIiNcIixiLHZvaWQgMCksUGEpKTpkPWE7cmV0dXJuIGR9LFhlPWZ1bmN0aW9uKGEsYixjKXthPWEuY3VycmVudFNjcmlwdHx8VWUoYSk7S2UuZigpWzE3Ml09YTtuZXcgVGUoYik7bmQuZigpLmEoMTIpO25kLmYoKS5hKDUpO1MoMjAwKXx8UygyMjApfHwoYj1UKDE1MCksWmQoKSxXZChiKSYmKFdbMV09YikpO1MoMzEyKSYmRWUobmV3IENlKGZ1bmN0aW9uKGQpe0tlLmYoKVsyNTBdPWR9KSk7UygzNjMpJiYoYj1HZShjKSkmJmIudGhlbihmdW5jdGlvbihkKXtkPWQuaigpO0tlLmYoKVsyNTFdPWR9KTtiPVwiXCI7UygzNDkpJiZhJiZhLmhhc0F0dHJpYnV0ZShcImRhdGEtbG9hZC1mY1wiKSYmKGI9YS5nZXRBdHRyaWJ1dGUoXCJkYXRhLW5ldHdvcmstaWRcIikpJiYobmV3IG1jKGMsYikpLnN0YXJ0KCl9LFllPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1IZSgpO2E9YXx8ZC5maWZXaW58fHdpbmRvdztiPWJ8fGEuZG9jdW1lbnQ7dmFyIGU9ZC5maWZXaW4/d2luZG93OmE7SWUoXCJjbWRcIixbXSk7aWYoZC5ldmFsU2NyaXB0cylkLmV2YWxTY3JpcHRzKCk7ZWxzZXtYZShiLGMsYSk7dHJ5e3plKCl9Y2F0Y2goayl7fXJlKGEpO2E9V2UoKTtjPVMoMjAwKXx8UygyMzkpO2lmKFZlKGIpKXt2YXIgZj1cImdwdC1pbXBsLVwiK01hdGgucmFuZG9tKCk7dHJ5e3hiKGIsdWIoYSx7aWQ6Zixub25jZTp3YSgpfSkpfWNhdGNoKGspe31iLmdldEVsZW1lbnRCeUlkKGYpJiYoZC5fbG9hZFN0YXJ0ZWRfPSEwLGN8fGllKCkpfWlmKCFkLl9sb2FkU3RhcnRlZF8pe2N8fGhlKCk7Yj1kLmZpZldpbj9lLmRvY3VtZW50OmI7dmFyIGc9Yi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO3liKGcsYSk7Zy5hc3luYz0hMDt2YXIgaD1iLmhlYWR8fGIuYm9keXx8Yi5kb2N1bWVudEVsZW1lbnQ7XCJjb21wbGV0ZVwiIT09ZS5kb2N1bWVudC5yZWFkeVN0YXRlJiZkLmZpZldpbj9KZShlLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgaC5hcHBlbmRDaGlsZChnKX0pOmguYXBwZW5kQ2hpbGQoZyk7ZC5fbG9hZFN0YXJ0ZWRfPSEwfX19O3ZhciBaZTthOnt0cnl7aWYoQXJyYXkuaXNBcnJheShFKSl7WmU9RTticmVhayBhfX1jYXRjaChhKXt9WmU9W119KGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1uZXcgbWUobnVsbCxcImdwdF9leGNlcHRpb25cIiwuMDEpO25lKGQsZnVuY3Rpb24oZSl7ZS5tZXRob2RJZD00MjB9KTtvZShkLGZ1bmN0aW9uKCl7cmV0dXJuIFllKGEsYixjKX0pfSkodm9pZCAwLHZvaWQgMCxaZSk7fSkuY2FsbCh0aGlzLmdvb2dsZXRhZyYmZ29vZ2xldGFnLmZpZldpbj9nb29nbGV0YWcuZmlmV2luLnBhcmVudDp0aGlzLFtbWzI2OSxudWxsLG51bGwsWzFdXSxbMzUxLG51bGwsbnVsbCxbMV1dLFtudWxsLDcsbnVsbCxbbnVsbCwwLjFdXSxbMzQ3LG51bGwsbnVsbCxbMV1dLFszMjIsbnVsbCxudWxsLFsxXV0sWzIwLG51bGwsbnVsbCxudWxsLFtbWzEsW1s0LG51bGwsMV1dXSxbMV1dXV0sW251bGwsNDUsbnVsbCxbbnVsbCwwLjVdXSxbMjUyLG51bGwsbnVsbCxbMV1dLFszNzQsbnVsbCxudWxsLFsxXV0sWzI5MyxudWxsLG51bGwsWzFdXSxbMzMzLG51bGwsbnVsbCxbMV1dLFsyOTYsbnVsbCxudWxsLFsxXV0sW251bGwsNjEsbnVsbCxbbnVsbCwwLjAwMV1dLFsyNzUsbnVsbCxudWxsLFsxXV0sWzI3NCxudWxsLG51bGwsWzFdXSxbMjU4LG51bGwsbnVsbCxbMV1dLFsyOTEsbnVsbCxudWxsLFsxXV0sWzMyNyxudWxsLG51bGwsWzFdXSxbMzUyLG51bGwsbnVsbCxbMV1dLFszMjYsbnVsbCxudWxsLFsxXV0sWzM1OCxudWxsLG51bGwsWzFdXSxbbnVsbCw4LG51bGwsW251bGwsLTFdXSxbMjM3LG51bGwsbnVsbCxudWxsLFtbWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wiZ29vZ2xldGFnLmZpZldpblwiXV0sWzFdXV1dLFtudWxsLDI4LG51bGwsW251bGwsMC4wMV1dLFszNzIsbnVsbCxudWxsLFsxXV0sW251bGwsNTEsbnVsbCxbbnVsbCwxMDAwXV0sWzEzOSxudWxsLG51bGwsWzFdXSxbODksbnVsbCxudWxsLFsxXV0sW251bGwsNDIwLG51bGwsW251bGwsMl1dLFsyMzksbnVsbCxudWxsLFsxXV0sWzM5MSxudWxsLG51bGwsWzFdXSxbMzI5LG51bGwsbnVsbCxbMV1dLFtudWxsLG51bGwsMixbbnVsbCxudWxsLFwiMS0wLTM3XCJdXSxbNDExLG51bGwsbnVsbCxbMV1dLFtudWxsLDU5LG51bGwsW251bGwsMV1dLFszNDAsbnVsbCxudWxsLFsxXV0sWzIxNSxudWxsLG51bGwsWzFdXSxbMzc3LG51bGwsbnVsbCxbMV1dLFtudWxsLDM5LG51bGwsW251bGwsNzJdXSxbbnVsbCwzOCxudWxsLFtudWxsLDI0XV0sW251bGwsNDAsbnVsbCxbbnVsbCw1XV0sW251bGwsMzMsbnVsbCxbbnVsbCwyNTBdXSxbMzMwLG51bGwsbnVsbCxbMV1dLFs0MDMsbnVsbCxudWxsLFsxXV0sWzM1NCxudWxsLG51bGwsWzFdXSxbMzg4LG51bGwsbnVsbCxbMV1dLFs0MDUsbnVsbCxudWxsLFsxXV0sWzIzOCxudWxsLG51bGwsbnVsbCxbW1s0LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcImdvb2dsZXRhZy5maWZXaW5cIl1dLFsxXV1dXSxbbnVsbCwzMixudWxsLFtdXV0sW1s0LFtbbnVsbCxbWzQ0NzEzNzgzXV1dLFtudWxsLFtbNDQ3MTQ0NDksW1tudWxsLDcsbnVsbCxbbnVsbCwxXV1dXSxbNjc2OTgyOTYxLFtbbnVsbCw3LG51bGwsW251bGwsMC40XV0sWzIxMixudWxsLG51bGwsWzFdXV1dLFs2NzY5ODI5OTYsW1tudWxsLDcsbnVsbCxbbnVsbCwxXV1dXV1dLFtudWxsLFtbNDQ3MTY4MzMsW1tudWxsLDcsbnVsbCxbbnVsbCwwLjAzXV0sWzIxMixudWxsLG51bGwsWzFdXV1dLFs0NDcxOTU3MCxbW251bGwsNyxudWxsLFtudWxsLDAuMDNdXSxbMjEyLG51bGwsbnVsbCxbMV1dXV1dXSxbbnVsbCxbWzQ0NzE3OTc4LFtbbnVsbCw3LG51bGwsW251bGwsMC4wMl1dLFsyMTIsbnVsbCxudWxsLFsxXV1dXSxbNDQ3MTk4MDMsW1tudWxsLDcsbnVsbCxbbnVsbCwwLjAyXV0sWzIxMixudWxsLG51bGwsWzFdXV1dLFs0NDcxOTgwNCxbW251bGwsNyxudWxsLFtudWxsLDAuMDJdXSxbMjEyLG51bGwsbnVsbCxbMV1dXV0sWzY3Njk4MjY4MV1dXSxbbnVsbCxbWzQ0NzE4MDM0LFtbbnVsbCw3LG51bGwsW251bGwsMC4wMl1dLFsyMTIsbnVsbCxudWxsLFsxXV1dXSxbNDQ3MTk1MTMsW1tudWxsLDcsbnVsbCxbbnVsbCwwLjAyXV0sWzIxMixudWxsLG51bGwsWzFdXV1dXV0sW251bGwsW1syMTA2NTY5M10sWzIxMDY1Njk0XSxbMjEwNjU2OTVdLFsyMTA2NTY5NyxbWzI2NyxudWxsLG51bGwsWzFdXV1dXV0sW251bGwsW1syMTA2NzAzNl0sWzIxMDY3MDM3LFtbMTM2LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDM4LFtbMTM2LG51bGwsbnVsbCxbMV1dLFsxMzcsbnVsbCxudWxsLFsxXV1dXV1dXV0sWzMsW1tudWxsLFtbNDQ3MTY4MzBdLFs0NDcxNjgzMV0sWzQ0NzE3NzQyXSxbNDQ3MTc3NDNdXV0sW251bGwsW1s0NDcxNjgzMl0sWzQ0NzE3NzQ0XSxbNDQ3MTc3NDVdXV0sW251bGwsW1s0NDcxNzc0N11dXSxbbnVsbCxbWzQ0NzE4MTg5XV1dLFtudWxsLFtbNjc2OTgyNjgwXV1dLFtudWxsLFtbNjc2OTgyODYzXSxbNjc2OTgyODgyXV1dLFtudWxsLFtbNjc2OTgyOTYwXSxbNjc2OTgyOTk0XSxbNjc2OTgyOTk4XV1dLFtudWxsLFtbNjc2OTgyOTc1XSxbNjc2OTgyOTgwXV1dLFtudWxsLFtbMTMzNyxbWzc3LG51bGwsbnVsbCxbMV1dLFs3OCxudWxsLG51bGwsWzFdXSxbODUsbnVsbCxudWxsLFsxXV0sWzgwLG51bGwsbnVsbCxbMV1dLFs3NixudWxsLG51bGwsWzFdXSxbODQsbnVsbCxudWxsLFsxXV0sWzE4OCxudWxsLG51bGwsWzFdXV1dXV0sWzUsW1syMDE5NDgxMixbWzIwLG51bGwsbnVsbCxbMV1dXV0sWzIwMTk0ODEzXV0sbnVsbCwzXSxbNTAwLFtbMjEwNjA2OTddLFsyMTA2MDY5OCxbWzg3LG51bGwsbnVsbCxbMV1dXV1dLFsyLFtbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NjYxM1wiXV0sWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wiVWludDhBcnJheVwiXV0sWzQsbnVsbCwxMV1dXV0sWzEsW1syMTA2MjMzMF0sWzIxMDYyMzMxLFtbbnVsbCw4LG51bGwsW251bGwsODAwXV1dXSxbMjEwNjIzMzIsW1tudWxsLDgsbnVsbCxbbnVsbCwxMDAwMF1dXV1dLG51bGwsM10sWzEsW1syMTA2Mjk3MF0sWzIxMDYyOTcxLFtbMTA5LG51bGwsbnVsbCxbMV1dXV1dXSxbNSxbWzIxMDYzMDQ2XSxbMjEwNjMwNDddLFsyMTA2MzA0OF1dLFsyLFtbNCxudWxsLDddLFs0LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcIlRleHREZWNvZGVyXCJdXSxbNCxudWxsLDEwXV1dLDldLFtudWxsLFtbMjEwNjM2MzVdLFsyMTA2MzYzNixbWzEwNCxudWxsLG51bGwsWzFdXV1dXSxudWxsLDIyXSxbMSxbWzIxMDYzNjY5XSxbMjEwNjM2NzBdXSxbNCxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJUZXh0RGVjb2RlclwiXV0sOV0sWzUwLFtbMjEwNjQxNjldLFsyMTA2NDE3MCxbWzE2OCxudWxsLG51bGwsWzFdXV1dXV0sWzEwLFtbMjEwNjQzNjVdLFsyMTA2NDM2NixbW251bGwsbnVsbCxudWxsLFtudWxsLG51bGwsbnVsbCxbXCJ1X3R6XCJdXSxudWxsLDddXV0sWzIxMDY0MzY3LFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInVfaGlzXCJdXSxudWxsLDddXV0sWzIxMDY0MzY4LFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInVfYWhcIixcInVfYXdcIl1dLG51bGwsN11dXSxbMjEwNjQzNjksW1tudWxsLG51bGwsbnVsbCxbbnVsbCxudWxsLG51bGwsW1widV9jZFwiXV0sbnVsbCw3XV1dLFsyMTA2NDM3MCxbW251bGwsbnVsbCxudWxsLFtudWxsLG51bGwsbnVsbCxbXCJ1X25wbHVnXCJdXSxudWxsLDddXV0sWzIxMDY0MzcxLFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInVfbm1pbWVcIl1dLG51bGwsN11dXSxbMjEwNjQzNzIsW1tudWxsLG51bGwsbnVsbCxbbnVsbCxudWxsLG51bGwsW1wiZmxhc2hcIl1dLG51bGwsN11dXV0sbnVsbCwxNV0sW251bGwsW1syMTA2NDQxMV0sWzIxMDY0NDEyLFtbMTQ0LG51bGwsbnVsbCxbMV1dXV1dXSxbMTAsW1syMTA2NTExMl0sWzIxMDY1MTEzLFtbMTYyLG51bGwsbnVsbCxbMV1dXV1dXSxbMTAsW1syMTA2NTEzOF0sWzIxMDY1MTM5LFtbMTQ4LG51bGwsbnVsbCxbMV1dXV1dXSxbbnVsbCxbWzIxMDY1MTk4LFtbbnVsbCxudWxsLG51bGwsW251bGwsbnVsbCxudWxsLFtcInZcIixcIjEtMC0zN1wiXV0sbnVsbCwxXV1dLFsyMTA2NTE5OSxbW251bGwsbnVsbCwyLFtudWxsLG51bGwsXCIxLTAtMzdcIl1dXV1dXSxbMSxbWzIxMDY1MzUyXSxbMjEwNjUzNTMsW1sxMjMsbnVsbCxudWxsLFsxXV1dXV1dLFs1MCxbWzIxMDY1NTE2XSxbMjEwNjU1MTcsW1s0OSxudWxsLG51bGwsWzFdXV1dXV0sWzUwLFtbMjEwNjU5NzVdLFsyMTA2NTk3NixbWzMxOSxudWxsLG51bGwsWzFdXV1dXV0sWzEwMDAsW1syMTA2NjA5MCxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDldLFs3LG51bGwsbnVsbCwxLG51bGwsMTVdXV1dLFsyMTA2NjA5MSxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDE0XSxbNyxudWxsLG51bGwsMSxudWxsLDIwXV1dXSxbMjEwNjYwOTIsbnVsbCxbMixbWzgsbnVsbCxudWxsLDEsbnVsbCwxOV0sWzcsbnVsbCxudWxsLDEsbnVsbCwyNV1dXV0sWzIxMDY2MDkzLG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsMjRdLFs3LG51bGwsbnVsbCwxLG51bGwsMzBdXV1dLFsyMTA2NjA5NCxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDI5XSxbNyxudWxsLG51bGwsMSxudWxsLDM1XV1dXSxbMjEwNjYwOTUsbnVsbCxbMixbWzgsbnVsbCxudWxsLDEsbnVsbCwzNF0sWzcsbnVsbCxudWxsLDEsbnVsbCw0MF1dXV0sWzIxMDY2MDk2LG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsMzldLFs3LG51bGwsbnVsbCwxLG51bGwsNDVdXV1dLFsyMTA2NjA5NyxudWxsLFsyLFtbOCxudWxsLG51bGwsMSxudWxsLDQ0XSxbNyxudWxsLG51bGwsMSxudWxsLDUwXV1dXV0sWzQsbnVsbCwzXV0sWzEwLFtbMjEwNjYyODhdLFsyMTA2NjI4OSxbW251bGwsNTIsbnVsbCxbbnVsbCwxXV0sW251bGwsNTYsbnVsbCxbbnVsbCw2MDBdXSxbbnVsbCw0NyxudWxsLFtudWxsLDFdXSxbbnVsbCw1NSxudWxsLFtudWxsLDE4MF1dLFtudWxsLDQ2LG51bGwsW251bGwsMV1dXV1dXSxbMSxbWzIxMDY2NTYwXSxbMjEwNjY1NjEsW1szNjQsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY2NzgxXSxbMjEwNjY3ODJdXV0sWzEwLFtbMjEwNjY4ODNdLFsyMTA2Njg4NCxbWzg3LG51bGwsbnVsbCxbMV1dXV1dXSxbNTAsW1syMTA2NjkwNF0sWzIxMDY2OTA4LFtbbnVsbCwzOTUsbnVsbCxbbnVsbCwyXV1dXV1dLFs1MCxbWzIxMDY2OTkyXSxbMjEwNjY5OTMsW1s0MTAsbnVsbCxudWxsLFsxXV1dXV1dLFs1MCxbWzIxMDY2OTk0XSxbMjEwNjY5OTUsW1s0MDQsbnVsbCxudWxsLFsxXV1dXV1dLFtudWxsLFtbMjEwNjcwNDldLFsyMTA2NzA1MF0sWzIxMDY3MDUxXV1dLFtudWxsLFtbMjEwNjcwNzNdLFsyMTA2NzA3NixbWzM5MCxudWxsLG51bGwsWzFdXSxbMTc3LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDc3LFtbMzk5LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDc4LFtbMzg5LG51bGwsbnVsbCxbMV1dXV0sWzIxMDY3MDc5LFtbMzg5LG51bGwsbnVsbCxbMV1dLFszOTIsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY3MTI2XSxbMjEwNjcxMjcsW1s0MjEsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY3MTkyXSxbMjEwNjcxOTMsW1s5OCxudWxsLG51bGwsWzFdXV1dLFsyMTA2NzE5NCxbWzk4LG51bGwsbnVsbCxbMV1dXV1dXSxbNTAsW1syMTA2NzE5OV0sWzIxMDY3MjAwLFtbMTkwMixudWxsLG51bGwsWzFdXSxbMzg1LG51bGwsbnVsbCxbMV1dLFszODcsbnVsbCxudWxsLFsxXV1dXSxbMjEwNjcyMDEsW1sxOTAyLG51bGwsbnVsbCxbMV1dLFszODUsbnVsbCxudWxsLFsxXV1dXV0sbnVsbCwyOV0sWzEwLFtbMjEwNjcyMjNdLFsyMTA2NzIyNCxbWzQyMixudWxsLG51bGwsWzFdXV1dXV0sWzEwLFtbMjEwNjcyNTddLFsyMTA2NzI1OCxbWzQxMyxudWxsLG51bGwsWzFdXSxbbnVsbCw0MTQsbnVsbCxbbnVsbCwwLjVdXV1dLFsyMTA2NzI1OSxbWzQxMyxudWxsLG51bGwsWzFdXSxbbnVsbCw0MTQsbnVsbCxbbnVsbCwxXV1dXV1dLFsxMCxbWzIxMDY3MjcyXSxbMjEwNjcyNzMsW1s0MTIsbnVsbCxudWxsLFsxXV1dXV1dLFsxMCxbWzIxMDY3MjgyXSxbMjEwNjcyODMsW1s0MTgsbnVsbCxudWxsLFsxXV1dXV1dLFtudWxsLFtbMjEwNjcyOTcsW1s0MDYsbnVsbCxudWxsLFtdLFtbWzQsbnVsbCw5LG51bGwsbnVsbCxudWxsLG51bGwsW1wiQXJyYXkuZnJvbVwiXV0sWzFdXV1dXV0sWzIxMDY3MzAyXSxbMjEwNjczMDMsW1s0MDYsbnVsbCxudWxsLFsxXV1dXV1dLFsxMDAsW1syMTA2NzMwN10sWzIxMDY3MzA4LFtbNDE5LG51bGwsbnVsbCxbMV1dXV1dXSxbMTAwMCxbWzIyMzE2NDM3LG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsLTFdLFs3LG51bGwsbnVsbCwxLG51bGwsNV1dXV0sWzIyMzE2NDM4LG51bGwsWzIsW1s4LG51bGwsbnVsbCwxLG51bGwsNF0sWzcsbnVsbCxudWxsLDEsbnVsbCwxMF1dXV1dLFs0LG51bGwsM11dXV0sWzEzLFtbMTAwMCxbWzIxMDY2ODE5LG51bGwsWzIsW1sxMixudWxsLG51bGwsbnVsbCw0LG51bGwsXCJMaW51eC4qQ2hyb21lXCIsW1wibmF2aWdhdG9yLnVzZXJBZ2VudFwiXV0sWzQsbnVsbCwyNyxudWxsLG51bGwsbnVsbCxudWxsLFtcIm5hdmlnYXRvci5jb25uZWN0aW9uLnNhdmVEYXRhXCJdXV1dXV1dLFsxMDAsW1syMTA2NTcyNixudWxsLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY1NzI1XCJdXV0sWzIxMDY1NzI3LFtbMjQwLG51bGwsbnVsbCxbMV1dXSxbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NTcyNVwiXV1dLFsyMTA2NTcyOCxbWzI0MSxudWxsLG51bGwsWzFdXV0sWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjU3MjVcIl1dXV0sWzQsbnVsbCw5LG51bGwsbnVsbCxudWxsLG51bGwsW1wiTGF5b3V0U2hpZnRcIl1dXSxbNTAsW1syMTA2NjM5Ml0sWzIxMDY2MzkzLFtbMzM4LG51bGwsbnVsbCxbMV1dXV1dXSxbNTAwLFtbMjEwNjY2MTRdLFsyMTA2NjYxNSxbWzc3LG51bGwsbnVsbCxbMV1dLFs3OCxudWxsLG51bGwsWzFdXSxbODUsbnVsbCxudWxsLFsxXV0sWzgwLG51bGwsbnVsbCxbMV1dLFs3NixudWxsLG51bGwsWzFdXV1dXSxbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NjYxM1wiXV1dLFs1MCxbWzIxMDY2ODA2XSxbMjEwNjY4MDcsW1szNzAsbnVsbCxudWxsLFsxXV1dXV1dLFsxMDAwLFtbMjEwNjY5NzAsbnVsbCxbMixbWzYsbnVsbCxudWxsLDYsbnVsbCw4NTgyNDAwLG51bGwsW1wiX19nc2FFeHAuaWRcIl1dLFsxLFtbNixudWxsLG51bGwsbnVsbCw0LG51bGwsXCJcIixbXCJmcmFtZUVsZW1lbnQuc3JjXCJdXV1dXV1dLFsyMTA2Njk3MSxudWxsLFsyLFtbNixudWxsLG51bGwsNixudWxsLDg1ODI0MDAsbnVsbCxbXCJfX2dzYUV4cC5pZFwiXV0sWzYsbnVsbCxudWxsLG51bGwsNCxudWxsLFwiXCIsW1wiZnJhbWVFbGVtZW50LnNyY1wiXV1dXV0sWzIxMDY2OTcyLG51bGwsWzIsW1s1LG51bGwsbnVsbCw2LG51bGwsbnVsbCxudWxsLFtcIl9fZ3NhRXhwLmlkXCJdXSxbMSxbWzYsbnVsbCxudWxsLDYsbnVsbCw4NTgyNDAwLG51bGwsW1wiX19nc2FFeHAuaWRcIl1dXV1dXV1dXSxbMTAwMCxbWzIxMDY2OTczLG51bGwsWzIsW1sxMixudWxsLG51bGwsbnVsbCw0LG51bGwsXCJMaW51eC4qQ2hyb21lXCIsW1wibmF2aWdhdG9yLnVzZXJBZ2VudFwiXV0sWzEsW1s2LG51bGwsbnVsbCxudWxsLDQsbnVsbCxcIlwiLFtcImZyYW1lRWxlbWVudC5zcmNcIl1dXV0sWzEsW1s1LG51bGwsbnVsbCw2LG51bGwsbnVsbCxudWxsLFtcIl9fZ3NhRXhwLmlkXCJdXV1dXV1dLFsyMTA2Njk3NCxudWxsLFsyLFtbMTIsbnVsbCxudWxsLG51bGwsNCxudWxsLFwiTGludXguKkNocm9tZVwiLFtcIm5hdmlnYXRvci51c2VyQWdlbnRcIl1dLFs2LG51bGwsbnVsbCxudWxsLDQsbnVsbCxcIlwiLFtcImZyYW1lRWxlbWVudC5zcmNcIl1dLFsxLFtbNSxudWxsLG51bGwsNixudWxsLG51bGwsbnVsbCxbXCJfX2dzYUV4cC5pZFwiXV1dXV1dXV1dLFsxMDAsW1syMTA2NzA4N10sWzIxMDY3MDg4LFtbNzgsbnVsbCxudWxsLFsxXV1dXV0sWzIsW1s0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2NjEzXCJdXV1dXSxbNTAsW1syMTA2NzIwMl0sWzIxMDY3MjAzLFtbMTkwMixudWxsLG51bGwsWzFdXV1dXSxudWxsLDI5XV1dLFs2LFtbbnVsbCxbWzIwMjA1NDk0XSxbMjAyMDU0OTVdXV0sW251bGwsW1syMTA2MjM3OSxbWzIzLG51bGwsbnVsbCxbMV1dXV1dXSxbMTAwMCxbWzIxMDY3MDIyLG51bGwsWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjY5MDRcIl1dXSxbMjEwNjcwMjYsbnVsbCxbNCxudWxsLDYsbnVsbCxudWxsLG51bGwsbnVsbCxbXCIyMTA2NjkwOFwiXV1dXSxbNCxudWxsLDE5XV0sWzEwMDAsW1syMTA2NzAyNyxudWxsLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2OTA0XCJdXV0sWzIxMDY3MDMxLG51bGwsWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjY5MDhcIl1dXV0sWzEsW1s0LG51bGwsMTldXV1dXV0sWzUsW1sxMDAwLFtbMjEwNjI4MTIsW1syMyxudWxsLG51bGwsWzFdXV0sWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wiX2dtcHRubFwiXV1dXSxbMTIsbnVsbCxudWxsLG51bGwsMixudWxsLFwidG9kYXlcXFxcLmxpbmVcXFxcLm1lLy4rLyhtYWlufGFydGljbGUpXCJdXSxbMTAwMCxbWzIxMDY0MTEzLFtbMjMsbnVsbCxudWxsLFsxXV1dLFs0LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcIndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuX2dtcHRubFwiXV1dXSxbMTIsbnVsbCxudWxsLG51bGwsMixudWxsLFwidG9kYXlcXFxcLmxpbmVcXFxcLm1lLy4rLyhtYWlufGFydGljbGUpXCJdXSxbMTAsW1syMTA2NTY0NV0sWzIxMDY1NjQ2LFtbMzA1LG51bGwsbnVsbCxbMV1dXV1dLFs0LG51bGwsOSxudWxsLG51bGwsbnVsbCxudWxsLFtcIndpbmRvdy5mZXRjaFwiXV1dLFsxLFtbMjEwNjYwMjhdLFsyMTA2NjAyOSxbWzIwMCxudWxsLG51bGwsWzFdXV1dLFsyMTA2NjAzMCxbWzIyMCxudWxsLG51bGwsWzFdXV1dXSxudWxsLDI0XSxbNTAsW1syMTA2NjAzMV0sWzIxMDY2MDMyLFtbMjM5LG51bGwsbnVsbCxbMV1dXV1dLG51bGwsMjRdLFsxLFtbMjEwNjYzOTBdLFsyMTA2NjM5MSxbWzM0NixudWxsLG51bGwsWzFdXV1dXV0sWzUwLFtbMjEwNjY0NjVdLFsyMTA2NjQ2NixbWzMwMixudWxsLG51bGwsWzFdXV1dXV0sWzUsW1syMTA2NjgwOF0sWzIxMDY2ODA5LFtbMzYxLG51bGwsbnVsbCxbMV1dLFszNjAsbnVsbCxudWxsLFsxXV1dXV1dLFs1MCxbWzIxMDY2OTI4XSxbMjEwNjY5MjksW1syMzksbnVsbCxudWxsLFsxXV0sWzQwNSxudWxsLG51bGwsWzFdXV1dXSxudWxsLDI0XSxbMTAsW1syMTA2Njk4NF0sWzIxMDY2OTg1XSxbMjEwNjY5ODZdXSxudWxsLDI5XSxbMTAwMCxbWzIxMDY2OTg3LG51bGwsWzQsbnVsbCw2LG51bGwsbnVsbCxudWxsLG51bGwsW1wiMjEwNjY5ODRcIl1dXSxbMjEwNjY5ODgsW1tudWxsLDI0LG51bGwsW251bGwsMjEwNjY5ODhdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY2OTg4XV1dLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2OTg1XCJdXV0sWzIxMDY2OTg5LFtbbnVsbCwyNCxudWxsLFtudWxsLDIxMDY2OTg5XV0sWzM5MyxudWxsLG51bGwsWzFdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY2OTg5XV1dLFs0LG51bGwsNixudWxsLG51bGwsbnVsbCxudWxsLFtcIjIxMDY2OTg2XCJdXV1dLFsxMixudWxsLG51bGwsbnVsbCw1LG51bGwsXCJ3d3dcXFxcLmdvb2dsZXRhZ3NlcnZpY2VzXFxcXC5jb21cIl0sMjldLFsxMCxbWzIxMDY3MDU2XSxbMjEwNjcwNTcsW1szMTIsbnVsbCxudWxsLFsxXV1dXV0sbnVsbCwyMV0sWzEwMCxbWzIxMDY3MDU4XSxbMjEwNjcwNTksW1szMTIsbnVsbCxudWxsLFsxXV1dXV0sWzQsbnVsbCw5LG51bGwsbnVsbCxudWxsLG51bGwsW1wiZG9jdW1lbnQuaGFzVHJ1c3RUb2tlblwiXV0sMjFdLFs1MCxbWzIxMDY3MTE4XSxbMjEwNjcxMTksW1szNzMsbnVsbCxudWxsLFsxXV1dXV1dLFsxMDAwLFtbMjEwNjczMDksW1tudWxsLDcsbnVsbCxbbnVsbCwxXV0sW251bGwsMjQsbnVsbCxbbnVsbCwyMTA2NzMwOV1dLFs2MCxudWxsLG51bGwsWzFdXSxbbnVsbCwyOCxudWxsLFtudWxsLDAuMV1dLFtudWxsLDI1LG51bGwsW251bGwsMjEwNjczMDldXV0sWzYsbnVsbCxudWxsLDQsbnVsbCw2XV0sWzIxMDY3MzEwLFtbbnVsbCw3LG51bGwsW251bGwsMV1dLFtudWxsLDI0LG51bGwsW251bGwsMjEwNjczMTBdXSxbNjAsbnVsbCxudWxsLFsxXV0sW251bGwsMjgsbnVsbCxbbnVsbCwwLjFdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY3MzEwXV1dLFs2LG51bGwsbnVsbCw0LG51bGwsN11dXSxbNCxudWxsLDNdLDFdLFsxMDAwLFtbMjEwNjczMzAsW1tudWxsLDcsbnVsbCxbbnVsbCwxXV0sW251bGwsMjQsbnVsbCxbbnVsbCwyMTA2NzMzMF1dLFs2MCxudWxsLG51bGwsWzFdXSxbbnVsbCwyOCxudWxsLFtudWxsLDAuMV1dLFtudWxsLDI1LG51bGwsW251bGwsMjEwNjczMzBdXV0sWzYsbnVsbCxudWxsLDQsbnVsbCw4XV0sWzIxMDY3MzMxLFtbbnVsbCw3LG51bGwsW251bGwsMV1dLFtudWxsLDI0LG51bGwsW251bGwsMjEwNjczMzFdXSxbNjAsbnVsbCxudWxsLFsxXV0sW251bGwsMjgsbnVsbCxbbnVsbCwwLjFdXSxbbnVsbCwyNSxudWxsLFtudWxsLDIxMDY3MzMxXV1dLFs2LG51bGwsbnVsbCw0LG51bGwsOV1dXSxbNCxudWxsLDNdLDFdXV0sWzEyLFtbMjAsW1syMTA2NTcyNF0sWzIxMDY1NzI1LFtbMjAzLG51bGwsbnVsbCxbMV1dXV1dLFs0LG51bGwsOSxudWxsLG51bGwsbnVsbCxudWxsLFtcIkxheW91dFNoaWZ0XCJdXV0sWzEsW1syMTA2NTc4NF1dXSxbMSxbWzIxMDY1Nzg1LG51bGwsWzQsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wibmF2aWdhdG9yLmNvbm5lY3Rpb24uc2F2ZURhdGFcIl1dXV1dLFsxLFtbMjEwNjU3ODYsbnVsbCxbNCxudWxsLDI3LG51bGwsbnVsbCxudWxsLG51bGwsW1wibmF2aWdhdG9yLmNvbm5lY3Rpb24uc2F2ZURhdGFcIl1dXV1dLFsxLFtbMjEwNjU3ODcsbnVsbCxbMSxbWzQsbnVsbCwyNyxudWxsLG51bGwsbnVsbCxudWxsLFtcIm5hdmlnYXRvci5jb25uZWN0aW9uLnNhdmVEYXRhXCJdXV1dXV1dLFsxLFtbMjEwNjU3OTgsbnVsbCxbMixbWzUsbnVsbCw4LG51bGwsbnVsbCxudWxsLG51bGwsW1wibG9jYWxTdG9yYWdlXCJdXSxbNCxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJsb2NhbFN0b3JhZ2VcIl1dXV1dXV0sWzEsW1syMTA2NTc5OSxudWxsLFsyLFtbNSxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJsb2NhbFN0b3JhZ2VcIl1dLFsxLFtbNCxudWxsLDgsbnVsbCxudWxsLG51bGwsbnVsbCxbXCJsb2NhbFN0b3JhZ2VcIl1dXV1dXV1dXSxbMSxbWzIxMDY2NDM4LG51bGwsWzEsW1s1LG51bGwsOCxudWxsLG51bGwsbnVsbCxudWxsLFtcImxvY2FsU3RvcmFnZVwiXV1dXV1dXSxbNTAsW1syMTA2NjUzMl0sWzIxMDY2NTMzLFtbMzYzLG51bGwsbnVsbCxbMV1dXV1dLG51bGwsMjVdLFs1MDAsW1syMTA2NjUzNF0sWzIxMDY2NTM1LFtbMzYzLG51bGwsbnVsbCxbMV1dXV1dLFs0LG51bGwsOSxudWxsLG51bGwsbnVsbCxudWxsLFtcIm5hdmlnYXRvci51c2VyQWdlbnREYXRhLmdldEhpZ2hFbnRyb3B5VmFsdWVzXCJdXSwyNV0sWzEwLFtbMjEwNjY2MTJdLFsyMTA2NjYxMyxbWzgzLG51bGwsbnVsbCxbMV1dLFs4NCxudWxsLG51bGwsWzFdXV1dXV0sWzUwLFtbMjEwNjY3MDVdLFsyMTA2NjcwNixbWzM4MixudWxsLG51bGwsWzFdXV1dXV0sWzEwLFtbNDQ3MjU2MjNdLFs0NDcyNTYyNCxbWzE5MDEsbnVsbCxudWxsLFsxXV1dXV0sbnVsbCwyOF1dXV1dKVxuIn0sICJoZWFkZXJzU2l6ZSI6IDEwNjUsICJib2R5U2l6ZSI6IC0xMDY1LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAwfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogLTEsICJyZWNlaXZlIjogMS4xMjZ9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3LjkyM1oiLCAidGltZSI6IDEuMTM3LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3B1YmFkc19pbXBsXzIwMjAwODI3MDEuanMuZG93bmxvYWQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoNCkuaHRtbCJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDQyLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNyBHTVQifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQxIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1mWFJxbXBHNjRTY0tOSFQzYmlRZDJpNUFCdVpOTGlLdGdYNFozS0hoazNtRCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1mWFJxbXBHNjRTY0tOSFQzYmlRZDJpNUFCdVpOTGlLdGdYNFozS0hoazNtRFwiIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgsIENvbnRlbnQtUmFuZ2UsIFgtQ2h1bmtlZC1PdXRwdXQsIFgtSXBmcy1QYXRoLCBYLUlwZnMtUm9vdHMsIFgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3B1YmFkc19pbXBsXzIwMjAwODI3MDEuanMuZG93bmxvYWQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1NjViMzAzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUsIFJhbmdlLCBVc2VyLUFnZW50LCBYLVJlcXVlc3RlZC1XaXRoIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDI2NzkzNSwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAyNjkwMTksICJ0ZXh0IjogIihmdW5jdGlvbihfKXsvKlxuXG4gQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy5cbiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cbnZhciBjYSxlYSxpYSxrYSxtYSxuYSx0YSx6YSxCYSxJYSxMYSxNYSxOYSxPYSxRYSxTYSxXYSxYYSxZYSxaYSxjYixmYixpYixqYixnYixuYixwYixyYix6YixHYixIYixLYixSYixUYixVYixWYixaYix6LCRiLGFjLGJjLGNjLGRjLHQsZWMsZmMsZ2MsQ2IsaGMsaWMsbWMsbmMsb2MsQ2MsRmMsR2MsRWMsRGMsSWMsSmMsS2MsTGMsQmIsTmMsT2MsUGMsUWMsVGMsSztjYT1mdW5jdGlvbihhKXt2YXIgYj0wPmE7YT1NYXRoLmFicyhhKTt2YXIgYz1hPj4+MDthPU1hdGguZmxvb3IoKGEtYykvNDI5NDk2NzI5Nik7YT4+Pj0wO2ImJihhPX5hPj4+MCxjPSh+Yz4+PjApKzEsNDI5NDk2NzI5NTxjJiYoYz0wLGErKyw0Mjk0OTY3Mjk1PGEmJihhPTApKSk7YWE9YztiYT1hfTtlYT1mdW5jdGlvbihhKXtyZXR1cm4gYT9hLnBhc3NpdmUmJmRhKCk/YTphLmNhcHR1cmV8fCExOiExfTtpYT1mdW5jdGlvbigpe3JldHVybiBmYShfLnIudG9wLFwiR29vZ2xlU2V0TlBBXCIpfHxmYShoYSgpLFwiR29vZ2xlU2V0TlBBXCIpfTtrYT1mdW5jdGlvbihhKXtpZihhIT09amEpdGhyb3cgRXJyb3IoXCJCYWQgc2VjcmV0XCIpO307bWE9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1sYSl0cnl7bGE9bnVsbH1jYXRjaChhKXtsYT1udWxsLGNvbnNvbGUubG9nKGEpfXJldHVybiBsYX07bmE9ZnVuY3Rpb24oYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiKSl0aHJvdyBFcnJvcihcIndyb25nIHR5cGVcIik7fTt0YT1mdW5jdGlvbihhLGIpe3ZhciBjPW9hKGEsYil8fHBhKGEsYik7MT09PV8ucmEoMzk1KSYmYyYmIXNhKGMpJiYoYT1wYShhLGIpLnBhcmVudEVsZW1lbnQpJiZhIT09Yi5ib2R5JiYoYz1hKTtyZXR1cm4gY307emE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuc2xvdCxlPWIuY2EsZj10YShkLGEpO2lmKCFmKXJldHVybiBudWxsO2I9dWEoZik7aWYoIWIpcmV0dXJuIGI7dmFyIGc9Zj09PXBhKGQsYSksaD1nfHwxPT09Xy5yYSgzOTUpLGs9dmEoZnVuY3Rpb24oKXt2YXIgbT1nP3BhKGQsYSk6ZjtyZXR1cm4gbSYmd2EobSx3aW5kb3cpfHx7fX0pO2U9eGEoZSlbMF07dmFyIGw9ITE7QXJyYXkuaXNBcnJheShlKSYmKGw9Yz9oOjA9PWIueCYmXCJjZW50ZXJcIj09aygpW1widGV4dC1hbGlnblwiXSk7bCYmKGIueCs9TWF0aC5yb3VuZChNYXRoLm1heCgwLChnP2YuY2xpZW50V2lkdGg6Zi5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoKS1lWzBdKS8yKSk7aCYmKGIueSs9TWF0aC5yb3VuZChNYXRoLm1pbihwYXJzZUludChrKClbXCJwYWRkaW5nLXRvcFwiXSwxMCl8fDAsZi5jbGllbnRIZWlnaHQpKSxsfHwoYz1mLmNsaWVudFdpZHRoLGIueCs9TWF0aC5yb3VuZChNYXRoLm1pbihwYXJzZUludChrKClbXCJwYWRkaW5nLWxlZnRcIl0sMTApfHwwLGMpKSkpO3JldHVybiBiJiZzYShmKT9iOm5ldyBfLnlhKC0xMjI0NTkzMywtMTIyNDU5MzMpfTtCYT1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3csYz0hMDtjPXZvaWQgMD09PWM/ITE6YztuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gZigpe2cub25sb2FkPW51bGw7Zy5vbmVycm9yPW51bGw7Yi5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGcpfXZhciBnPWIuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtnLm9ubG9hZD1mdW5jdGlvbigpe2YoKTtkKCl9O2cub25lcnJvcj1mdW5jdGlvbigpe2YoKTtlKHZvaWQgMCl9O2cudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO0FhKGcsYSk7YyYmXCJjb21wbGV0ZVwiIT09Yi5kb2N1bWVudC5yZWFkeVN0YXRlP18udihiLFwibG9hZFwiLGZ1bmN0aW9uKCl7Yi5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGcpfSk6Yi5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGcpfSl9O0lhPWZ1bmN0aW9uKGEpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGMoKXt2YXIgZCxlLGYsZztyZXR1cm4gRGEoYyxmdW5jdGlvbihoKXtzd2l0Y2goaC5qKXtjYXNlIDE6cmV0dXJuIGQ9XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL2dldGNvbmZpZy9zb2Rhcj9zdj0yMDAmdGlkPVwiK2EuaisoXCImdHY9XCIrYS5sK1wiJnN0PVwiKSthLmViLGU9dm9pZCAwLGguQT0yLEVhKGgsRmEoZCksNCk7Y2FzZSA0OmU9aC5vO0dhKGgsMyk7YnJlYWs7Y2FzZSAyOkhhKGgpO2Nhc2UgMzppZighZSlyZXR1cm4gaC5yZXR1cm4odm9pZCAwKTtmPWEub2J8fGUuc29kYXJfcXVlcnlfaWQ7Zz12b2lkIDA9PT1lLnJjX2VuYWJsZT9cIm5cIjplLnJjX2VuYWJsZTtyZXR1cm4gZiYmZS5iZ19oYXNoX2Jhc2VuYW1lJiZlLmJnX2JpbmFyeT9oLnJldHVybih7Y29udGV4dDphLnYsT2M6ZS5iZ19oYXNoX2Jhc2VuYW1lLE5jOmUuYmdfYmluYXJ5LGdkOmEuaitcIl9cIithLmwsb2I6ZixlYjphLmViLEFiOmd9KTpoLnJldHVybih2b2lkIDApfX0pfSl9O0xhPWZ1bmN0aW9uKGEpe0NhKHRoaXMsZnVuY3Rpb24gYygpe3ZhciBkO3JldHVybiBEYShjLGZ1bmN0aW9uKGUpe2lmKDE9PWUuailyZXR1cm4gRWEoZSxJYShhKSwyKTtpZihkPWUubyl7dmFyIGY9XCJzb2RhcjJcIjtmPXZvaWQgMD09PWY/XCJzb2RhcjJcIjpmO3ZhciBnPXdpbmRvdyxoPWcuR29vZ2xlR2NMS2hPbXM7aCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGgucHVzaHx8KGg9Zy5Hb29nbGVHY0xLaE9tcz1bXSk7dmFyIGs9e307aC5wdXNoKChrLl9jdHhfPWQuY29udGV4dCxrLl9iZ3ZfPWQuT2Msay5fYmdwXz1kLk5jLGsuX2xpXz1kLmdkLGsuX2prXz1kLm9iLGsuX3N0Xz1kLmViLGsuX3JjXz1kLkFiLGspKTtpZihoPWcuR29vZ2xlRFg1WUtVU2spZy5Hb29nbGVEWDVZS1VTaz12b2lkIDAsaFsxXSgpO2Y9SmEoS2Ese2Jhc2VuYW1lOmZ9KTtCYShmKX1yZXR1cm4gZS5yZXR1cm4oZCl9KX0pfTtNYT1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLnF1ZXJ5U2VsZWN0b3IoXCJzY3JpcHRbbm9uY2VdXCIpKT9hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpfHxcIlwiOlwiXCJ9O05hPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO2lmKHgoYSw1KSl0cnl7cmV0dXJuIGIubG9jYWxTdG9yYWdlfWNhdGNoKGMpe31yZXR1cm4gbnVsbH07T2E9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ZG9jdW1lbnQ6YjtyZXR1cm4geChhLDUpP2IuY29va2llOm51bGx9O1FhPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/ZG9jdW1lbnQ6YztiPU9hKGIsYyk7cmV0dXJuIG51bGw9PT1iP251bGw6KG5ldyBQYSh7Y29va2llOmJ9KSkuZ2V0KGEpfHxcIlwifTtTYT1mdW5jdGlvbihhKXthPV8uUmEoYS5zcGxpdCgvXFxzKy8pLGZ1bmN0aW9uKGIpe3JldHVybihiPS9eKC0/XFxkKykocHh8JSkkLy5leGVjKGIpKT97dmFsdWU6cGFyc2VGbG9hdChiWzFdKSx0eXBlOmJbMl19Ont2YWx1ZTowLHR5cGU6XCJweFwifX0pO2FbMV09YVsxXXx8YVswXTthWzJdPWFbMl18fGFbMF07YVszXT1hWzNdfHxhWzFdO3JldHVybiBhfTtXYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm5bMF07YT1cIm51bWJlclwiPT09dHlwZW9mIGE/W2FdOmE7YT1fLlRhKGEsZnVuY3Rpb24oYil7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBiJiYwPD1iJiYxPj1iPyEwOiExfSk7VWEoYSk7VmEoYSxmdW5jdGlvbihiLGMpe3JldHVybiBiLWN9KTtyZXR1cm4gYX07WGE9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYyl7fXJldHVybiBiP3t0b3A6Yi50b3AscmlnaHQ6Yi5yaWdodCxib3R0b206Yi5ib3R0b20sbGVmdDpiLmxlZnQsd2lkdGg6Yi53aWR0aHx8Yi5yaWdodC1iLmxlZnQsaGVpZ2h0OmIuaGVpZ2h0fHxiLmJvdHRvbS1iLnRvcH06e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLHdpZHRoOjAsaGVpZ2h0OjB9fTtZYT1mdW5jdGlvbihhKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGF8fFwic3RyaW5nXCI9PT10eXBlb2YgYX07WmE9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpjYXNlIDI6cmV0dXJuITE7Y2FzZSAwOmNhc2UgMTpyZXR1cm4hMDtkZWZhdWx0OnRocm93IEVycm9yKFwiVW5leHBlY3RlZCBlbmNyeXB0aW9uIG1vZGU6IFwiK2EpO319O2NiPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LGI9JGEoKTt2YXIgYz12b2lkIDA9PT1jP2FiOmM7aWYoXy55KDIxNSkmJiFhLmdvb2dfc2RyX2wpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZ29vZ19zZHJfbFwiLHt2YWx1ZTohMH0pO3ZhciBkPWZ1bmN0aW9uKCl7dmFyIGU9Xy5yYSgzNyksZj1mdW5jdGlvbigpe2MoYSxcImdwdFwiLGIsU3RyaW5nKGJiKGEpKSl9O2U/YS5zZXRUaW1lb3V0KGYsZSk6ZigpfTtcImNvbXBsZXRlXCI9PT1hLmRvY3VtZW50LnJlYWR5U3RhdGU/ZCgpOl8udihhLFwibG9hZFwiLGQpfX07ZmI9ZnVuY3Rpb24oYSl7dmFyIGI9ZGIoYSk7cmV0dXJuKHo9W1wiZ29vZ2xlX2RlYnVnXCIsXCJkZnBkZWJcIixcImdvb2dsZV9jb25zb2xlXCIsXCJnb29nbGVfZm9yY2VfY29uc29sZVwiLFwiZ29vZ2ZjXCJdLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGMpe3ZhciBkPWIuc2VhcmNoKGViKTtiOnt2YXIgZT0wO2Zvcih2YXIgZj1jLmxlbmd0aDswPD0oZT1iLmluZGV4T2YoYyxlKSkmJmU8ZDspe3ZhciBnPWIuY2hhckNvZGVBdChlLTEpO2lmKDM4PT1nfHw2Mz09ZylpZihnPWIuY2hhckNvZGVBdChlK2YpLCFnfHw2MT09Z3x8Mzg9PWd8fDM1PT1nKWJyZWFrIGI7ZSs9ZisxfWU9LTF9aWYoMD5lKWM9bnVsbDtlbHNle2Y9Yi5pbmRleE9mKFwiJlwiLGUpO2lmKDA+Znx8Zj5kKWY9ZDtlKz1jLmxlbmd0aCsxO2M9ZGVjb2RlVVJJQ29tcG9uZW50KGIuc3Vic3RyKGUsZi1lKS5yZXBsYWNlKC9cXCsvZyxcIiBcIikpfXJldHVybiBudWxsIT09Y30pfHxudWxsfTtpYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD97fTpkO2diKGEsYixjLGQpO3N3aXRjaChhKXtjYXNlIDA6Y2FzZSA5OmE9aGIoKSwoYz1hLmdldChiKS5JYSk/KGI9KEIoYyw0KXx8MCkrMSxEKGMsNCxiKSxhLnNldChjKSk6Z2IoMTEsYixudWxsLHt9KX19O2piPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD12b2lkIDA9PT1kP3t9OmQ7Z2IoYSxiLGMsZCl9O2diPWZ1bmN0aW9uKGEsYixjLGQpe2tiKFwiZ3B0XzNwbGliXCIsZnVuY3Rpb24oZSl7bGIoZSk7RShlLFwiY1wiLGEpO2MmJkUoZSxcImVtXCIsYyk7RShlLFwibGlkXCIsYik7Xy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsZCkuZm9yRWFjaChmdW5jdGlvbihmKXtFKGUsZixkW2ZdKX0pfSl9O25iPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBtYig2NTksYyxmdW5jdGlvbihlLGYpe2piKDEsYSxmLm1lc3NhZ2UpO3JldHVybiB0LlByb21pc2UucmVzb2x2ZShudWxsKX0pLnRoZW4oZnVuY3Rpb24oZSl7ZCYmZCgpO2IuJGIoZSk7ZT1oYigpLnNldChiKTtlLmVycm9yTWVzc2FnZSYmamIoZS5pbmZvLGEsZS5lcnJvck1lc3NhZ2UpO3JldHVybiBifSl9O3BiPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/ZnVuY3Rpb24oKXt9OmI7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYyl7c2V0VGltZW91dChmdW5jdGlvbigpe2MoYigpKX0sYSl9KX07cmI9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ZnVuY3Rpb24oKXt9OmI7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYyl7dmFyIGQ9ZnVuY3Rpb24oKXtjKGIoKSk7Xy5xYihhLFwibG9hZFwiLGQpfTtfLnYoYSxcImxvYWRcIixkKX0pfTt6Yj1mdW5jdGlvbigpe3ZhciBhPW5ldyBzYixiPW5ldyB0YihhLkYpLGM9bmV3IHViKGIuRiksZD1uZXcgdmIoYy5tKSxlPW5ldyB3Yjt4YihlLFthLGIsYyxkXSk7eWIoZSl9O0diPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP0FiOmI7dmFyIGM9QmIoYSksZD1mdW5jdGlvbihmKXtmPV8uRihmKTtmLm5leHQoKTtmPUNiKGYpO3JldHVybiBiKGMsZil9LGU9ZnVuY3Rpb24oZil7dmFyIGc9Xy5GKGYpO2Y9Zy5uZXh0KCkudmFsdWU7Zz1DYihnKTtyZXR1cm4gYS5hcHBseShmLGcpfTtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBnPVtdLGg9MDtoPGFyZ3VtZW50cy5sZW5ndGg7KytoKWdbaF09YXJndW1lbnRzW2hdO2g9dGhpc3x8Xy5yO3ZhciBrPURiLmdldChoKTtrfHwoaz17fSxEYi5zZXQoaCxrKSk7cmV0dXJuIEViKGssW3RoaXNdLmNvbmNhdChfLkZiKGcpKSxlLGQpfX07SGI9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9MDtlPXZvaWQgMD09PWU/XCJcIjplO2M9dm9pZCAwPT09Yz9mdW5jdGlvbihsKXtyZXR1cm4hIWx9OmM7ZD12b2lkIDA9PT1kP1wiLFwiOmQ7dmFyIGY9W10sZz0hMTthPV8uRihhKTtmb3IodmFyIGg9YS5uZXh0KCk7IWguZG9uZTtoPWEubmV4dCgpKXtoPWIoaC52YWx1ZSk7dmFyIGs9YyhoKTtnPWd8fGs7Zi5wdXNoKFN0cmluZyhrP2g6ZSkpfXJldHVybiBnP2Yuam9pbihkKTpudWxsfTtLYj1mdW5jdGlvbihhLGIpe3ZhciBjPWJ8fGZ1bmN0aW9uKCl7cmV0dXJuITB9O2E9SWIoYSk7dmFyIGQ9W107Xy5KYihhLGZ1bmN0aW9uKGUsZil7ZT1lLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gYyhoLGYpfSk7aWYoZS5sZW5ndGgpe2U9ZS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KTt2YXIgZz1lbmNvZGVVUklDb21wb25lbnQoZik7ZC5wdXNoKGcrXCI9XCIrZS5qb2luKCkpfX0pO3JldHVybiBkfTtSYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1wYShhLGMpO2lmKGUpaWYoXy55KDM5OSkpe3ZhciBmPWEuZ2V0U2xvdElkKCk7aWYoIUxiLmhhcyhmKSl7TGIuYWRkKGYpO3ZhciBnPW5ldyAobnVsbCE9PShkPWIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpJiZ2b2lkIDAhPT1kP2Q6TWIpKEcoNzU1LGZ1bmN0aW9uKG0peyhtPV8uRihtKS5uZXh0KCkudmFsdWUpJiYwPT09bS5pbnRlcnNlY3Rpb25SYXRpbyYmKChtPXBhKGEsYykpJiZOYihtLCExKSxoKCkpfSkse3RocmVzaG9sZDowfSk7Zy5vYnNlcnZlKGUpO3ZhciBoPWZ1bmN0aW9uKCl7Zy5kaXNjb25uZWN0KCk7TGIuZGVsZXRlKGYpO2soKTtsKCl9LGs9T2IoSS5CKCksUGIsZiw3NTYsZnVuY3Rpb24obSl7bS5pc0VtcHR5fHxoKCl9KSxsPU9iKEkuQigpLFFiLGYsNzU2LGZ1bmN0aW9uKCl7TmIocGEoYSxjKSwhMSk7aCgpfSl9fWVsc2UgTmIoZSwhMSl9O1RiPWZ1bmN0aW9uKGEsYixjLGQpe2tiKFwiZ3B0X3N6XCIsZnVuY3Rpb24oZSl7RShlLFwiclwiLFNiKGEpKTtFKGUsXCJ3XCIsYy53aWR0aCk7RShlLFwiaFwiLGMuaGVpZ2h0KTtiJiZFKGUsXCJmXCIsYik7bnVsbCE9ZCYmRShlLFwiYVwiLE51bWJlcihkKSl9LHt2YTpfLnJhKDI4KX0pfTtVYj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHQuUHJvbWlzZShmdW5jdGlvbihiKXtyZXR1cm4gdm9pZCBzZXRUaW1lb3V0KGIsYSl9KX07VmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm5cInVuZGVmaW5lZFwiPT09dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyP25ldyBNYihiLHtyb290TWFyZ2luOmF9KTpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix7cm9vdE1hcmdpbjphfSl9O1piPWZ1bmN0aW9uKCl7V2IoXCJwdWJhZHNSZWFkeVwiLCEwKTtpZihfLnkoMjA2KSl7dmFyIGE9MDtPYmplY3QuZGVmaW5lUHJvcGVydHkoWGIoKSxcInB1YmFkc1JlYWR5XCIse2dldDpmdW5jdGlvbigpezU+YSYma2IoXCJncHRfcHViYWRzX3JlYWR5XCIsZnVuY3Rpb24oYil7KythO2xiKGIpO3ZhciBjPUVycm9yKFwicHViYWRzUmVhZHlcIik7RShiLFwic3RhY2tcIixZYihjLnN0YWNrLGMubWVzc2FnZSkpfSx7dmE6LjF9KTtyZXR1cm4hMH0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX19OyRiPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTthYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9O2JjPWZ1bmN0aW9uKGEpe2E9W1wib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93LFwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmLFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKFwiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdFwiKTt9O2NjPWJjKHRoaXMpO2RjPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PT10eXBlb2YgU3ltYm9sKFwieFwiKTt0PXt9O2VjPXt9O18uQT1mdW5jdGlvbihhLGIpe3ZhciBjPWVjW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07ZmM9ZnVuY3Rpb24oYSxiLGMpe2lmKGIpYTp7dmFyIGQ9YS5zcGxpdChcIi5cIik7YT0xPT09ZC5sZW5ndGg7dmFyIGU9ZFswXSxmOyFhJiZlIGluIHQ/Zj10OmY9Y2M7Zm9yKGU9MDtlPGQubGVuZ3RoLTE7ZSsrKXt2YXIgZz1kW2VdO2lmKCEoZyBpbiBmKSlicmVhayBhO2Y9ZltnXX1kPWRbZC5sZW5ndGgtMV07Yz1kYyYmXCJlczZcIj09PWM/ZltkXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT9hYyh0LGQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJihlY1tkXT1kYz9jYy5TeW1ib2woZCk6XCIkanNjcCRcIitkLGQ9ZWNbZF0sYWMoZixkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9fTtmYyhcIlN5bWJvbFwiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oZSxmKXt0aGlzLmo9ZTthYyh0aGlzLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ9KX07Yi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgYz0wLGQ9ZnVuY3Rpb24oZSl7aWYodGhpcyBpbnN0YW5jZW9mIGQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvclwiKTtyZXR1cm4gbmV3IGIoXCJqc2NvbXBfc3ltYm9sX1wiKyhlfHxcIlwiKStcIl9cIitjKyssZSl9O3JldHVybiBkfSxcImVzNlwiKTtmYyhcIlN5bWJvbC5pdGVyYXRvclwiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7YT0oMCx0LlN5bWJvbCkoXCJTeW1ib2wuaXRlcmF0b3JcIik7Zm9yKHZhciBiPVwiQXJyYXkgSW50OEFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgSW50MTZBcnJheSBVaW50MTZBcnJheSBJbnQzMkFycmF5IFVpbnQzMkFycmF5IEZsb2F0MzJBcnJheSBGbG9hdDY0QXJyYXlcIi5zcGxpdChcIiBcIiksYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1jY1tiW2NdXTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCYmXCJmdW5jdGlvblwiIT10eXBlb2YgZC5wcm90b3R5cGVbYV0mJmFjKGQucHJvdG90eXBlLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBnYygkYih0aGlzKSl9fSl9cmV0dXJuIGF9LFwiZXM2XCIpO2djPWZ1bmN0aW9uKGEpe2E9e25leHQ6YX07YVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307cmV0dXJuIGF9O18uRj1mdW5jdGlvbihhKXt2YXIgYj1cInVuZGVmaW5lZFwiIT10eXBlb2YgdC5TeW1ib2wmJl8uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpJiZhW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXTtyZXR1cm4gYj9iLmNhbGwoYSk6e25leHQ6JGIoYSl9fTtDYj1mdW5jdGlvbihhKXtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTtyZXR1cm4gY307Xy5GYj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEFycmF5P2E6Q2IoXy5GKGEpKX07aGM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1hO3JldHVybiBuZXcgYn07aWYoZGMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIF8uQShPYmplY3QsXCJzZXRQcm90b3R5cGVPZlwiKSlpYz1fLkEoT2JqZWN0LFwic2V0UHJvdG90eXBlT2ZcIik7ZWxzZXt2YXIgamM7YTp7dmFyIGtjPXthOiEwfSxsYz17fTt0cnl7bGMuX19wcm90b19fPWtjO2pjPWxjLmE7YnJlYWsgYX1jYXRjaChhKXt9amM9ITF9aWM9amM/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErXCIgaXMgbm90IGV4dGVuc2libGVcIik7cmV0dXJuIGF9Om51bGx9bWM9aWM7Xy5KPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9aGMoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYobWMpbWMoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKFwicHJvdG90eXBlXCIhPWMpaWYoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpe3ZhciBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxjLGQpfWVsc2UgYVtjXT1iW2NdfTtuYz1mdW5jdGlvbigpe3RoaXMubT0hMTt0aGlzLmw9bnVsbDt0aGlzLm89dm9pZCAwO3RoaXMuaj0xO3RoaXMuRD10aGlzLkE9MDt0aGlzLnY9bnVsbH07b2M9ZnVuY3Rpb24oYSl7aWYoYS5tKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO2EubT0hMH07bmMucHJvdG90eXBlLkM9ZnVuY3Rpb24oYSl7dGhpcy5vPWF9O3ZhciBwYz1mdW5jdGlvbihhLGIpe2Eudj17bmM6YixjZDohMH07YS5qPWEuQXx8YS5EfTtuYy5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMudj17cmV0dXJuOmF9O3RoaXMuaj10aGlzLkR9O3ZhciBFYT1mdW5jdGlvbihhLGIsYyl7YS5qPWM7cmV0dXJue3ZhbHVlOmJ9fSxHYT1mdW5jdGlvbihhLGIpe2Euaj1iO2EuQT0wfSxIYT1mdW5jdGlvbihhKXthLkE9MDt2YXIgYj1hLnYubmM7YS52PW51bGw7cmV0dXJuIGJ9LHFjPWZ1bmN0aW9uKGEpe3RoaXMuaj1uZXcgbmM7dGhpcy5sPWF9LHRjPWZ1bmN0aW9uKGEsYil7b2MoYS5qKTt2YXIgYz1hLmoubDtpZihjKXJldHVybiByYyhhLFwicmV0dXJuXCJpbiBjP2NbXCJyZXR1cm5cIl06ZnVuY3Rpb24oZCl7cmV0dXJue3ZhbHVlOmQsZG9uZTohMH19LGIsYS5qLnJldHVybik7YS5qLnJldHVybihiKTtyZXR1cm4gc2MoYSl9LHJjPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1iLmNhbGwoYS5qLmwsYyk7aWYoIShlIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSXRlcmF0b3IgcmVzdWx0IFwiK2UrXCIgaXMgbm90IGFuIG9iamVjdFwiKTtpZighZS5kb25lKXJldHVybiBhLmoubT0hMSxlO3ZhciBmPWUudmFsdWV9Y2F0Y2goZyl7cmV0dXJuIGEuai5sPW51bGwscGMoYS5qLGcpLHNjKGEpfWEuai5sPW51bGw7ZC5jYWxsKGEuaixmKTtyZXR1cm4gc2MoYSl9LHNjPWZ1bmN0aW9uKGEpe2Zvcig7YS5qLmo7KXRyeXt2YXIgYj1hLmwoYS5qKTtpZihiKXJldHVybiBhLmoubT0hMSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChjKXthLmoubz12b2lkIDAscGMoYS5qLGMpfWEuai5tPSExO2lmKGEuai52KXtiPWEuai52O2Euai52PW51bGw7aWYoYi5jZCl0aHJvdyBiLm5jO3JldHVybnt2YWx1ZTpiLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fSx1Yz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7b2MoYS5qKTthLmoubD9iPXJjKGEsYS5qLmwubmV4dCxiLGEuai5DKTooYS5qLkMoYiksYj1zYyhhKSk7cmV0dXJuIGJ9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7b2MoYS5qKTthLmoubD9iPXJjKGEsYS5qLmxbXCJ0aHJvd1wiXSxiLGEuai5DKToocGMoYS5qLGIpLGI9c2MoYSkpO3JldHVybiBifTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gdGMoYSxiKX07dGhpc1tfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LERhPWZ1bmN0aW9uKGEsYil7Yj1uZXcgdWMobmV3IHFjKGIpKTttYyYmYS5wcm90b3R5cGUmJm1jKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTtmYyhcIlJlZmxlY3Quc2V0UHJvdG90eXBlT2ZcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOm1jP2Z1bmN0aW9uKGIsYyl7dHJ5e3JldHVybiBtYyhiLGMpLCEwfWNhdGNoKGQpe3JldHVybiExfX06bnVsbH0sXCJlczZcIik7ZmMoXCJPYmplY3Quc2V0UHJvdG90eXBlT2ZcIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8bWN9LFwiZXM2XCIpO3ZhciB2Yz1mdW5jdGlvbihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKX0seWM9ZGMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIF8uQShPYmplY3QsXCJhc3NpZ25cIik/Xy5BKE9iamVjdCxcImFzc2lnblwiKTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihkKWZvcih2YXIgZSBpbiBkKXZjKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtmYyhcIk9iamVjdC5hc3NpZ25cIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8eWN9LFwiZXM2XCIpO2ZjKFwiUHJvbWlzZVwiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt0aGlzLmo9bnVsbH1mdW5jdGlvbiBjKGcpe3JldHVybiBnIGluc3RhbmNlb2YgZT9nOm5ldyBlKGZ1bmN0aW9uKGgpe2goZyl9KX1pZihhKXJldHVybiBhO2IucHJvdG90eXBlLmw9ZnVuY3Rpb24oZyl7aWYobnVsbD09dGhpcy5qKXt0aGlzLmo9W107dmFyIGg9dGhpczt0aGlzLnYoZnVuY3Rpb24oKXtoLm0oKX0pfXRoaXMuai5wdXNoKGcpfTt2YXIgZD1jYy5zZXRUaW1lb3V0O2IucHJvdG90eXBlLnY9ZnVuY3Rpb24oZyl7ZChnLDApfTtiLnByb3RvdHlwZS5tPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmomJnRoaXMuai5sZW5ndGg7KXt2YXIgZz10aGlzLmo7dGhpcy5qPVtdO2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7KytoKXt2YXIgaz1nW2hdO2dbaF09bnVsbDt0cnl7aygpfWNhdGNoKGwpe3RoaXMubyhsKX19fXRoaXMuaj1udWxsfTtiLnByb3RvdHlwZS5vPWZ1bmN0aW9uKGcpe3RoaXMudihmdW5jdGlvbigpe3Rocm93IGc7fSl9O3ZhciBlPWZ1bmN0aW9uKGcpe3RoaXMubD0wO3RoaXMubT12b2lkIDA7dGhpcy5qPVtdO3ZhciBoPXRoaXMudigpO3RyeXtnKGgucmVzb2x2ZSxoLnJlamVjdCl9Y2F0Y2goayl7aC5yZWplY3Qoayl9fTtlLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhsKXtyZXR1cm4gZnVuY3Rpb24obSl7a3x8KGs9ITAsbC5jYWxsKGgsbSkpfX12YXIgaD10aGlzLGs9ITE7cmV0dXJue3Jlc29sdmU6Zyh0aGlzLkcpLHJlamVjdDpnKHRoaXMubyl9fTtlLnByb3RvdHlwZS5HPWZ1bmN0aW9uKGcpe2lmKGc9PT10aGlzKXRoaXMubyhuZXcgVHlwZUVycm9yKFwiQSBQcm9taXNlIGNhbm5vdCByZXNvbHZlIHRvIGl0c2VsZlwiKSk7ZWxzZSBpZihnIGluc3RhbmNlb2YgZSl0aGlzLkgoZyk7ZWxzZXthOnN3aXRjaCh0eXBlb2YgZyl7Y2FzZSBcIm9iamVjdFwiOnZhciBoPW51bGwhPWc7YnJlYWsgYTtjYXNlIFwiZnVuY3Rpb25cIjpoPSEwO2JyZWFrIGE7ZGVmYXVsdDpoPSExfWg/dGhpcy5VKGcpOnRoaXMuQShnKX19O2UucHJvdG90eXBlLlU9ZnVuY3Rpb24oZyl7dmFyIGg9dm9pZCAwO3RyeXtoPWcudGhlbn1jYXRjaChrKXt0aGlzLm8oayk7cmV0dXJufVwiZnVuY3Rpb25cIj09dHlwZW9mIGg/dGhpcy5JKGgsZyk6dGhpcy5BKGcpfTtlLnByb3RvdHlwZS5vPWZ1bmN0aW9uKGcpe3RoaXMuQygyLGcpfTtlLnByb3RvdHlwZS5BPWZ1bmN0aW9uKGcpe3RoaXMuQygxLGcpfTtlLnByb3RvdHlwZS5DPWZ1bmN0aW9uKGcsaCl7aWYoMCE9dGhpcy5sKXRocm93IEVycm9yKFwiQ2Fubm90IHNldHRsZShcIitnK1wiLCBcIitoK1wiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGVcIit0aGlzLmwpO3RoaXMubD1nO3RoaXMubT1oO3RoaXMuRCgpfTtlLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5qKXtmb3IodmFyIGc9MDtnPHRoaXMuai5sZW5ndGg7KytnKWYubCh0aGlzLmpbZ10pO3RoaXMuaj1udWxsfX07dmFyIGY9bmV3IGI7ZS5wcm90b3R5cGUuSD1mdW5jdGlvbihnKXt2YXIgaD10aGlzLnYoKTtnLnZiKGgucmVzb2x2ZSxoLnJlamVjdCl9O2UucHJvdG90eXBlLkk9ZnVuY3Rpb24oZyxoKXt2YXIgaz10aGlzLnYoKTt0cnl7Zy5jYWxsKGgsay5yZXNvbHZlLGsucmVqZWN0KX1jYXRjaChsKXtrLnJlamVjdChsKX19O2UucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZyxoKXtmdW5jdGlvbiBrKHEsdyl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgcT9mdW5jdGlvbih1KXt0cnl7bChxKHUpKX1jYXRjaChDKXttKEMpfX06d312YXIgbCxtLG49bmV3IGUoZnVuY3Rpb24ocSx3KXtsPXE7bT13fSk7dGhpcy52YihrKGcsbCksayhoLG0pKTtyZXR1cm4gbn07ZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZyl9O2UucHJvdG90eXBlLnZiPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gaygpe3N3aXRjaChsLmwpe2Nhc2UgMTpnKGwubSk7YnJlYWs7Y2FzZSAyOmgobC5tKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKFwiVW5leHBlY3RlZCBzdGF0ZTogXCIrbC5sKTt9fXZhciBsPXRoaXM7bnVsbD09dGhpcy5qP2YubChrKTp0aGlzLmoucHVzaChrKX07ZS5yZXNvbHZlPWM7ZS5yZWplY3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGgsayl7ayhnKX0pfTtlLnJhY2U9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGgsayl7Zm9yKHZhciBsPV8uRihnKSxtPWwubmV4dCgpOyFtLmRvbmU7bT1sLm5leHQoKSljKG0udmFsdWUpLnZiKGgsayl9KX07ZS5hbGw9ZnVuY3Rpb24oZyl7dmFyIGg9Xy5GKGcpLGs9aC5uZXh0KCk7cmV0dXJuIGsuZG9uZT9jKFtdKTpuZXcgZShmdW5jdGlvbihsLG0pe2Z1bmN0aW9uIG4odSl7cmV0dXJuIGZ1bmN0aW9uKEMpe3FbdV09Qzt3LS07MD09dyYmbChxKX19dmFyIHE9W10sdz0wO2RvIHEucHVzaCh2b2lkIDApLHcrKyxjKGsudmFsdWUpLnZiKG4ocS5sZW5ndGgtMSksbSksaz1oLm5leHQoKTt3aGlsZSghay5kb25lKX0pfTtyZXR1cm4gZX0sXCJlczZcIik7dmFyIHpjPWZ1bmN0aW9uKGEsYixjKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYT1TdHJpbmcoYSkpO2Zvcih2YXIgZD1hLmxlbmd0aCxlPTA7ZTxkO2UrKyl7dmFyIGY9YVtlXTtpZihiLmNhbGwoYyxmLGUsYSkpcmV0dXJue2k6ZSxLYzpmfX1yZXR1cm57aTotMSxLYzp2b2lkIDB9fTtmYyhcIkFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIHpjKHRoaXMsYixjKS5pfX0sXCJlczZcIik7dmFyIEFjPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgJ3RoaXMnIHZhbHVlIGZvciBTdHJpbmcucHJvdG90eXBlLlwiK2MrXCIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWRcIik7aWYoYiBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5cIitjK1wiIG11c3Qgbm90IGJlIGEgcmVndWxhciBleHByZXNzaW9uXCIpO3JldHVybiBhK1wiXCJ9O2ZjKFwiU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD1BYyh0aGlzLGIsXCJlbmRzV2l0aFwiKTt2b2lkIDA9PT1jJiYoYz1kLmxlbmd0aCk7Yz1NYXRoLm1heCgwLE1hdGgubWluKGN8MCxkLmxlbmd0aCkpO2Zvcih2YXIgZT1iLmxlbmd0aDswPGUmJjA8YzspaWYoZFstLWNdIT1iWy0tZV0pcmV0dXJuITE7cmV0dXJuIDA+PWV9fSxcImVzNlwiKTtmYyhcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiB6Yyh0aGlzLGIsYykuS2N9fSxcImVzNlwiKTt2YXIgQmM9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYSs9XCJcIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGY9YysrO3JldHVybnt2YWx1ZTpiKGYsYVtmXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIGV9O2ZjKFwiQXJyYXkucHJvdG90eXBlLmtleXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIEJjKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGJ9KX19LFwiZXM2XCIpO2ZjKFwiQXJyYXkucHJvdG90eXBlLnZhbHVlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gQmModGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBjfSl9fSxcImVzOFwiKTtmYyhcIk9iamVjdC5pc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj09PWM/MCE9PWJ8fDEvYj09PTEvYzpiIT09YiYmYyE9PWN9fSxcImVzNlwiKTtmYyhcIkFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcigwPmMmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGY9ZFtjXTtpZihmPT09Ynx8Xy5BKE9iamVjdCxcImlzXCIpLmNhbGwoT2JqZWN0LGYsYikpcmV0dXJuITB9cmV0dXJuITF9fSxcImVzN1wiKTtmYyhcIlN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuLTEhPT1BYyh0aGlzLGIsXCJpbmNsdWRlc1wiKS5pbmRleE9mKGIsY3x8MCl9fSxcImVzNlwiKTtmYyhcIldlYWtNYXBcIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIGMoZyl7dmFyIGg9dHlwZW9mIGc7cmV0dXJuXCJvYmplY3RcIj09PWgmJm51bGwhPT1nfHxcImZ1bmN0aW9uXCI9PT1ofWlmKGZ1bmN0aW9uKCl7aWYoIWF8fCFPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGc9T2JqZWN0LnNlYWwoe30pLGg9T2JqZWN0LnNlYWwoe30pLGs9bmV3IGEoW1tnLDJdLFtoLDNdXSk7aWYoMiE9ay5nZXQoZyl8fDMhPWsuZ2V0KGgpKXJldHVybiExO2suZGVsZXRlKGcpO2suc2V0KGgsNCk7cmV0dXJuIWsuaGFzKGcpJiY0PT1rLmdldChoKX1jYXRjaChsKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGQ9XCIkanNjb21wX2hpZGRlbl9cIitNYXRoLnJhbmRvbSgpLGU9MCxmPWZ1bmN0aW9uKGcpe3RoaXMuaj0oZSs9TWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygpO2lmKGcpe2c9Xy5GKGcpO2Zvcih2YXIgaDshKGg9Zy5uZXh0KCkpLmRvbmU7KWg9aC52YWx1ZSx0aGlzLnNldChoWzBdLGhbMV0pfX07Zi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsaCl7aWYoIWMoZykpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIFdlYWtNYXAga2V5XCIpO2lmKCF2YyhnLGQpKXt2YXIgaz1uZXcgYjthYyhnLGQse3ZhbHVlOmt9KX1pZighdmMoZyxkKSl0aHJvdyBFcnJvcihcIldlYWtNYXAga2V5IGZhaWw6IFwiK2cpO2dbZF1bdGhpcy5qXT1oO3JldHVybiB0aGlzfTtmLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGMoZykmJnZjKGcsZCk/Z1tkXVt0aGlzLmpdOnZvaWQgMH07Zi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ2YyhnLGQpJiZ2YyhnW2RdLHRoaXMuail9O2YucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihnKXtyZXR1cm4gYyhnKSYmdmMoZyxkKSYmdmMoZ1tkXSx0aGlzLmopP2RlbGV0ZSBnW2RdW3RoaXMual06ITF9O3JldHVybiBmfSxcImVzNlwiKTtmYyhcIk1hcFwiLGZ1bmN0aW9uKGEpe2lmKGZ1bmN0aW9uKCl7aWYoIWF8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGF8fCFfLkEoYS5wcm90b3R5cGUsXCJlbnRyaWVzXCIpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGg9T2JqZWN0LnNlYWwoe3g6NH0pLGs9bmV3IGEoXy5GKFtbaCxcInNcIl1dKSk7aWYoXCJzXCIhPWsuZ2V0KGgpfHwxIT1rLnNpemV8fGsuZ2V0KHt4OjR9KXx8ay5zZXQoe3g6NH0sXCJ0XCIpIT1rfHwyIT1rLnNpemUpcmV0dXJuITE7dmFyIGw9Xy5BKGssXCJlbnRyaWVzXCIpLmNhbGwoayksbT1sLm5leHQoKTtpZihtLmRvbmV8fG0udmFsdWVbMF0hPWh8fFwic1wiIT1tLnZhbHVlWzFdKXJldHVybiExO209bC5uZXh0KCk7cmV0dXJuIG0uZG9uZXx8NCE9bS52YWx1ZVswXS54fHxcInRcIiE9bS52YWx1ZVsxXXx8IWwubmV4dCgpLmRvbmU/ITE6ITB9Y2F0Y2gobil7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPW5ldyB0LldlYWtNYXAsYz1mdW5jdGlvbihoKXt0aGlzLmw9e307dGhpcy5qPWYoKTt0aGlzLnNpemU9MDtpZihoKXtoPV8uRihoKTtmb3IodmFyIGs7IShrPWgubmV4dCgpKS5kb25lOylrPWsudmFsdWUsdGhpcy5zZXQoa1swXSxrWzFdKX19O2MucHJvdG90eXBlLnNldD1mdW5jdGlvbihoLGspe2g9MD09PWg/MDpoO3ZhciBsPWQodGhpcyxoKTtsLmxpc3R8fChsLmxpc3Q9dGhpcy5sW2wuaWRdPVtdKTtsLmphP2wuamEudmFsdWU9azoobC5qYT17bmV4dDp0aGlzLmosRGE6dGhpcy5qLkRhLGhlYWQ6dGhpcy5qLGtleTpoLHZhbHVlOmt9LGwubGlzdC5wdXNoKGwuamEpLHRoaXMuai5EYS5uZXh0PWwuamEsdGhpcy5qLkRhPWwuamEsdGhpcy5zaXplKyspO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oaCl7aD1kKHRoaXMsaCk7cmV0dXJuIGguamEmJmgubGlzdD8oaC5saXN0LnNwbGljZShoLmluZGV4LDEpLGgubGlzdC5sZW5ndGh8fGRlbGV0ZSB0aGlzLmxbaC5pZF0saC5qYS5EYS5uZXh0PWguamEubmV4dCxoLmphLm5leHQuRGE9aC5qYS5EYSxoLmphLmhlYWQ9bnVsbCx0aGlzLnNpemUtLSwhMCk6ITF9O2MucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5sPXt9O3RoaXMuaj10aGlzLmouRGE9ZigpO3RoaXMuc2l6ZT0wfTtjLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oaCl7cmV0dXJuISFkKHRoaXMsaCkuamF9O2MucHJvdG90eXBlLmdldD1mdW5jdGlvbihoKXtyZXR1cm4oaD1kKHRoaXMsaCkuamEpJiZoLnZhbHVlfTtjLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm5baC5rZXksaC52YWx1ZV19KX07Yy5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgua2V5fSl9O2MucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgudmFsdWV9KX07Yy5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihoLGspe2Zvcih2YXIgbD1fLkEodGhpcyxcImVudHJpZXNcIikuY2FsbCh0aGlzKSxtOyEobT1sLm5leHQoKSkuZG9uZTspbT1tLnZhbHVlLGguY2FsbChrLG1bMV0sbVswXSx0aGlzKX07Yy5wcm90b3R5cGVbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildPV8uQShjLnByb3RvdHlwZSxcImVudHJpZXNcIik7dmFyIGQ9ZnVuY3Rpb24oaCxrKXt2YXIgbD1rJiZ0eXBlb2YgaztcIm9iamVjdFwiPT1sfHxcImZ1bmN0aW9uXCI9PWw/Yi5oYXMoayk/bD1iLmdldChrKToobD1cIlwiKyArK2csYi5zZXQoayxsKSk6bD1cInBfXCIrazt2YXIgbT1oLmxbbF07aWYobSYmdmMoaC5sLGwpKWZvcihoPTA7aDxtLmxlbmd0aDtoKyspe3ZhciBuPW1baF07aWYoayE9PWsmJm4ua2V5IT09bi5rZXl8fGs9PT1uLmtleSlyZXR1cm57aWQ6bCxsaXN0Om0saW5kZXg6aCxqYTpufX1yZXR1cm57aWQ6bCxsaXN0Om0saW5kZXg6LTEsamE6dm9pZCAwfX0sZT1mdW5jdGlvbihoLGspe3ZhciBsPWguajtyZXR1cm4gZ2MoZnVuY3Rpb24oKXtpZihsKXtmb3IoO2wuaGVhZCE9aC5qOylsPWwuRGE7Zm9yKDtsLm5leHQhPWwuaGVhZDspcmV0dXJuIGw9bC5uZXh0LHtkb25lOiExLHZhbHVlOmsobCl9O2w9bnVsbH1yZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fSl9LGY9ZnVuY3Rpb24oKXt2YXIgaD17fTtyZXR1cm4gaC5EYT1oLm5leHQ9aC5oZWFkPWh9LGc9MDtyZXR1cm4gY30sXCJlczZcIik7ZmMoXCJTZXRcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhXy5BKGEucHJvdG90eXBlLFwiZW50cmllc1wiKXx8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt4OjR9KSxkPW5ldyBhKF8uRihbY10pKTtpZighZC5oYXMoYyl8fDEhPWQuc2l6ZXx8ZC5hZGQoYykhPWR8fDEhPWQuc2l6ZXx8ZC5hZGQoe3g6NH0pIT1kfHwyIT1kLnNpemUpcmV0dXJuITE7dmFyIGU9Xy5BKGQsXCJlbnRyaWVzXCIpLmNhbGwoZCksZj1lLm5leHQoKTtpZihmLmRvbmV8fGYudmFsdWVbMF0hPWN8fGYudmFsdWVbMV0hPWMpcmV0dXJuITE7Zj1lLm5leHQoKTtyZXR1cm4gZi5kb25lfHxmLnZhbHVlWzBdPT1jfHw0IT1mLnZhbHVlWzBdLnh8fGYudmFsdWVbMV0hPWYudmFsdWVbMF0/ITE6ZS5uZXh0KCkuZG9uZX1jYXRjaChnKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oYyl7dGhpcy5qPW5ldyB0Lk1hcDtpZihjKXtjPV8uRihjKTtmb3IodmFyIGQ7IShkPWMubmV4dCgpKS5kb25lOyl0aGlzLmFkZChkLnZhbHVlKX10aGlzLnNpemU9dGhpcy5qLnNpemV9O2IucHJvdG90eXBlLmFkZD1mdW5jdGlvbihjKXtjPTA9PT1jPzA6Yzt0aGlzLmouc2V0KGMsYyk7dGhpcy5zaXplPXRoaXMuai5zaXplO3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oYyl7Yz10aGlzLmouZGVsZXRlKGMpO3RoaXMuc2l6ZT10aGlzLmouc2l6ZTtyZXR1cm4gY307Yi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmouY2xlYXIoKTt0aGlzLnNpemU9MH07Yi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmouaGFzKGMpfTtiLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQSh0aGlzLmosXCJlbnRyaWVzXCIpLmNhbGwodGhpcy5qKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQSh0aGlzLmosXCJ2YWx1ZXNcIikuY2FsbCh0aGlzLmopfTtiLnByb3RvdHlwZS5rZXlzPV8uQShiLnByb3RvdHlwZSxcInZhbHVlc1wiKTtiLnByb3RvdHlwZVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09Xy5BKGIucHJvdG90eXBlLFwidmFsdWVzXCIpO2IucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYyxkKXt2YXIgZT10aGlzO3RoaXMuai5mb3JFYWNoKGZ1bmN0aW9uKGYpe3JldHVybiBjLmNhbGwoZCxmLGYsZSl9KX07cmV0dXJuIGJ9LFwiZXM2XCIpO2ZjKFwiTnVtYmVyLmlzRmluaXRlXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm5cIm51bWJlclwiIT09dHlwZW9mIGI/ITE6IWlzTmFOKGIpJiZJbmZpbml0eSE9PWImJi1JbmZpbml0eSE9PWJ9fSxcImVzNlwiKTtmYyhcIk51bWJlci5pc0ludGVnZXJcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiBfLkEoTnVtYmVyLFwiaXNGaW5pdGVcIikuY2FsbChOdW1iZXIsYik/Yj09PU1hdGguZmxvb3IoYik6ITF9fSxcImVzNlwiKTtmYyhcIkFycmF5LmZyb21cIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyxkKXtjPW51bGwhPWM/YzpmdW5jdGlvbihoKXtyZXR1cm4gaH07dmFyIGU9W10sZj1cInVuZGVmaW5lZFwiIT10eXBlb2YgdC5TeW1ib2wmJl8uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpJiZiW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBmKXtiPWYuY2FsbChiKTtmb3IodmFyIGc9MDshKGY9Yi5uZXh0KCkpLmRvbmU7KWUucHVzaChjLmNhbGwoZCxmLnZhbHVlLGcrKykpfWVsc2UgZm9yKGY9Yi5sZW5ndGgsZz0wO2c8ZjtnKyspZS5wdXNoKGMuY2FsbChkLGJbZ10sZykpO3JldHVybiBlfX0sXCJlczZcIik7ZmMoXCJBcnJheS5wcm90b3R5cGUuZW50cmllc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gQmModGhpcyxmdW5jdGlvbihiLGMpe3JldHVybltiLGNdfSl9fSxcImVzNlwiKTtfLnI9dGhpc3x8c2VsZjtDYz1mdW5jdGlvbihhLGIpe2E9YS5zcGxpdChcIi5cIik7dmFyIGM9Xy5yO2FbMF1pbiBjfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgYy5leGVjU2NyaXB0fHxjLmV4ZWNTY3JpcHQoXCJ2YXIgXCIrYVswXSk7Zm9yKHZhciBkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8dm9pZCAwPT09Yj9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn07RmM9ZnVuY3Rpb24oYSl7aWYoYSYmYSE9Xy5yKXJldHVybiBEYyhhLmRvY3VtZW50KTtudWxsPT09RWMmJihFYz1EYyhfLnIuZG9jdW1lbnQpKTtyZXR1cm4gRWN9O0djPS9eW1xcdysvXy1dK1s9XXswLDJ9JC87RWM9bnVsbDtEYz1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLnF1ZXJ5U2VsZWN0b3ImJmEucXVlcnlTZWxlY3RvcihcInNjcmlwdFtub25jZV1cIikpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSYmR2MudGVzdChhKT9hOlwiXCJ9O18uSGM9ZnVuY3Rpb24oKXt9O0ljPWZ1bmN0aW9uKGEpe2EuYmI9dm9pZCAwO2EuQj1mdW5jdGlvbigpe3JldHVybiBhLmJiP2EuYmI6YS5iYj1uZXcgYX19O0pjPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVyblwib2JqZWN0XCIhPWI/YjphP0FycmF5LmlzQXJyYXkoYSk/XCJhcnJheVwiOmI6XCJudWxsXCJ9O0tjPWZ1bmN0aW9uKGEpe3ZhciBiPUpjKGEpO3JldHVyblwiYXJyYXlcIj09Ynx8XCJvYmplY3RcIj09YiYmXCJudW1iZXJcIj09dHlwZW9mIGEubGVuZ3RofTtMYz1mdW5jdGlvbihhKXtyZXR1cm5cImZ1bmN0aW9uXCI9PUpjKGEpfTtfLk1jPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVyblwib2JqZWN0XCI9PWImJm51bGwhPWF8fFwiZnVuY3Rpb25cIj09Yn07QmI9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLE5jKSYmYVtOY118fChhW05jXT0rK09jKX07TmM9XCJjbG9zdXJlX3VpZF9cIisoMUU5Kk1hdGgucmFuZG9tKCk+Pj4wKTtPYz0wO1BjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTtRYz1mdW5jdGlvbihhLGIsYyl7aWYoIWEpdGhyb3cgRXJyb3IoKTtpZigyPGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGUsZCk7cmV0dXJuIGEuYXBwbHkoYixlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX07Xy5SYz1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoXCJuYXRpdmUgY29kZVwiKT9fLlJjPVBjOl8uUmM9UWM7cmV0dXJuIF8uUmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtfLlNjPWZ1bmN0aW9uKGEsYil7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWMuc2xpY2UoKTtkLnB1c2guYXBwbHkoZCxhcmd1bWVudHMpO3JldHVybiBhLmFwcGx5KHRoaXMsZCl9fTtUYz1EYXRlLm5vdztLPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hfTt2YXIgQ2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz12b2lkIDA7cmV0dXJuIG5ldyAoY3x8KGM9dC5Qcm9taXNlKSkoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGspe3RyeXtoKGIubmV4dChrKSl9Y2F0Y2gobCl7ZShsKX19ZnVuY3Rpb24gZyhrKXt0cnl7aChiW1widGhyb3dcIl0oaykpfWNhdGNoKGwpe2UobCl9fWZ1bmN0aW9uIGgoayl7ay5kb25lP2Qoay52YWx1ZSk6KG5ldyBjKGZ1bmN0aW9uKGwpe2woay52YWx1ZSl9KSkudGhlbihmLGcpfWgoKGI9Yi5hcHBseShhLHZvaWQgMCkpLm5leHQoKSl9KX07dmFyIFVjO3ZhciBXYyxaYyxZYyxhZCxiZCxjZCxVYSxWYSxlZCxkZCxmZCxnZCxoZDtfLlZjPWZ1bmN0aW9uKGEsYil7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsdm9pZCAwKX07Xy5UYT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLHZvaWQgMCl9O18uUmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGEsYix2b2lkIDApfTtXYz1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlLmNhbGwoYSxiLDApfTtfLlhjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwoYSxiLHZvaWQgMCl9O1pjPWZ1bmN0aW9uKGEsYil7Yj1ZYyhhLGIpO3JldHVybiAwPmI/bnVsbDpcInN0cmluZ1wiPT09dHlwZW9mIGE/YS5jaGFyQXQoYik6YVtiXX07WWM9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYmYi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpcmV0dXJuIGU7cmV0dXJuLTF9O18uJGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMDw9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX07YWQ9ZnVuY3Rpb24oYSxiKXtiPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLHZvaWQgMCk7dmFyIGM7KGM9MDw9YikmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7cmV0dXJuIGN9O2JkPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA8Yil7Zm9yKHZhciBjPUFycmF5KGIpLGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX07Y2Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAyPj1hcmd1bWVudHMubGVuZ3RoP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiLGMpfTtVYT1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz0wLGQ9MDtkPGEubGVuZ3RoOyl7dmFyIGU9YVtkKytdO3ZhciBmPWU7Zj1fLk1jKGYpP1wib1wiK0JiKGYpOih0eXBlb2YgZikuY2hhckF0KDApK2Y7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZil8fChiW2ZdPSEwLGFbYysrXT1lKX1hLmxlbmd0aD1jfTtWYT1mdW5jdGlvbihhLGIpe2Euc29ydChifHxkZCl9O2VkPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPUFycmF5KGEubGVuZ3RoKSxkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT17aW5kZXg6ZCx2YWx1ZTphW2RdfTt2YXIgZT1ifHxkZDtWYShjLGZ1bmN0aW9uKGYsZyl7cmV0dXJuIGUoZi52YWx1ZSxnLnZhbHVlKXx8Zi5pbmRleC1nLmluZGV4fSk7Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylhW2RdPWNbZF0udmFsdWV9O2RkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE+Yj8xOmE8Yj8tMTowfTtmZD1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07Z2Q9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9e30sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdLGY9Yi5jYWxsKHZvaWQgMCxlLGQsYSk7dm9pZCAwIT09ZiYmKGNbZl18fChjW2ZdPVtdKSkucHVzaChlKX1yZXR1cm4gY307aGQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoQXJyYXkuaXNBcnJheShkKSlmb3IodmFyIGU9MDtlPGQubGVuZ3RoO2UrPTgxOTIpZm9yKHZhciBmPWhkLmFwcGx5KG51bGwsY2QoZCxlLGUrODE5MikpLGc9MDtnPGYubGVuZ3RoO2crKyliLnB1c2goZltnXSk7ZWxzZSBiLnB1c2goZCl9cmV0dXJuIGJ9O3ZhciBpZD1mdW5jdGlvbigpe3JldHVybiEwfSx2YT1mdW5jdGlvbihhKXt2YXIgYj0hMSxjO3JldHVybiBmdW5jdGlvbigpe2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319LGpkPWZ1bmN0aW9uKGEpe3ZhciBiPWE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYil7dmFyIGM9YjtiPW51bGw7YygpfX19LGtkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0wLGU9ITEsZj1bXSxnPWZ1bmN0aW9uKCl7ZD0wO2UmJihlPSExLGgoKSl9LGg9ZnVuY3Rpb24oKXtkPV8uci5zZXRUaW1lb3V0KGcsYik7YS5hcHBseShjLGYpfTtyZXR1cm4gZnVuY3Rpb24oayl7Zj1hcmd1bWVudHM7ZD9lPSEwOmgoKX19O3ZhciBsZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpfSxtZD1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT09YSYmYiBpbiBhfSxuZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiBjfSxvZD1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKSxwZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXtkPWFyZ3VtZW50c1tlXTtmb3IoYyBpbiBkKWFbY109ZFtjXTtmb3IodmFyIGY9MDtmPG9kLmxlbmd0aDtmKyspYz1vZFtmXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxjKSYmKGFbY109ZFtjXSl9fSxxZD1mdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gcWQuYXBwbHkobnVsbCxhcmd1bWVudHNbMF0pO2Zvcih2YXIgYz17fSxkPTA7ZDxiO2QrKyljW2FyZ3VtZW50c1tkXV09ITA7cmV0dXJuIGN9O3ZhciB0ZD1mdW5jdGlvbihhLGIpe3RoaXMuaj1hPT09cmQmJmJ8fFwiXCI7dGhpcy5sPXNkfTt0ZC5wcm90b3R5cGUubGI9ITA7dGQucHJvdG90eXBlLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyIHVkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgdGQmJmEuY29uc3RydWN0b3I9PT10ZCYmYS5sPT09c2Q/YS5qOlwidHlwZV9lcnJvcjpDb25zdFwifSx2ZD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHRkKHJkLGEpfSxzZD17fSxyZD17fTt2YXIgeGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmo9Yj09PXdkP2E6XCJcIn07eGQucHJvdG90eXBlLmxiPSEwO3hkLnByb3RvdHlwZS5OYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07dmFyIHlkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgeGQmJmEuY29uc3RydWN0b3I9PT14ZD9hLmo6XCJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybFwifSxKYT1mdW5jdGlvbihhLGIpe3ZhciBjPXVkKGEpO2lmKCF6ZC50ZXN0KGMpKXRocm93IEVycm9yKFwiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiBcIitjKTthPWMucmVwbGFjZShBZCxmdW5jdGlvbihkLGUpe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixlKSl0aHJvdyBFcnJvcignRm91bmQgbWFya2VyLCBcIicrZSsnXCIsIGluIGZvcm1hdCBzdHJpbmcsIFwiJytjKydcIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgdGQ/dWQoZCk6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhkKSl9KTtyZXR1cm4gQmQoYSl9LEFkPS8leyhcXHcrKX0vZyx6ZD0vXigoaHR0cHM6KT9cXC9cXC9bMC05YS16LjpbXFxdLV0rXFwvfFxcL1teL1xcXFxdfFteOi9cXFxcJV0rXFwvfFteOi9cXFxcJV0qWz8jXXxhYm91dDpibGFuayMpL2ksQ2Q9L14oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8sd2Q9e30sQmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB4ZChhLHdkKX0sRGQ9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWMpcmV0dXJuIGI7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBjKXJldHVybiBjP2ErZW5jb2RlVVJJQ29tcG9uZW50KGMpOlwiXCI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/XCImXCI6XCJcIikrZW5jb2RlVVJJQ29tcG9uZW50KGQpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O3ZhciBFZD1mdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLWIubGVuZ3RoO3JldHVybiAwPD1jJiZhLmluZGV4T2YoYixjKT09Y30sRmQ9ZnVuY3Rpb24oYSl7cmV0dXJuL15bXFxzXFx4YTBdKiQvLnRlc3QoYSl9LEdkPWZ1bmN0aW9uKGEpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoYSlbMV19LEhkPS8mL2csSWQ9LzwvZyxKZD0vPi9nLEtkPS9cIi9nLExkPS8nL2csTWQ9L1xceDAwL2csTmQ9L1tcXHgwMCY8PlwiJ10vLFBkPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPUdkKFN0cmluZyhhKSkuc3BsaXQoXCIuXCIpO2I9R2QoU3RyaW5nKGIpKS5zcGxpdChcIi5cIik7Zm9yKHZhciBkPU1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKSxlPTA7MD09YyYmZTxkO2UrKyl7dmFyIGY9YVtlXXx8XCJcIixnPWJbZV18fFwiXCI7ZG97Zj0vKFxcZCopKFxcRCopKC4qKS8uZXhlYyhmKXx8W1wiXCIsXCJcIixcIlwiLFwiXCJdO2c9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtpZigwPT1mWzBdLmxlbmd0aCYmMD09Z1swXS5sZW5ndGgpYnJlYWs7Yz1PZCgwPT1mWzFdLmxlbmd0aD8wOnBhcnNlSW50KGZbMV0sMTApLDA9PWdbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoZ1sxXSwxMCkpfHxPZCgwPT1mWzJdLmxlbmd0aCwwPT1nWzJdLmxlbmd0aCl8fE9kKGZbMl0sZ1syXSk7Zj1mWzNdO2c9Z1szXX13aGlsZSgwPT1jKX1yZXR1cm4gY30sT2Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYTxiPy0xOmE+Yj8xOjB9O3ZhciBUZCxRZDtfLlJkPWZ1bmN0aW9uKGEsYil7dGhpcy5qPWI9PT1RZD9hOlwiXCJ9O18uUmQucHJvdG90eXBlLmxiPSEwO18uUmQucHJvdG90eXBlLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTtfLlNkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5SZCYmYS5jb25zdHJ1Y3Rvcj09PV8uUmQ/YS5qOlwidHlwZV9lcnJvcjpTYWZlVXJsXCJ9O1RkPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO18uVWQ9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uUmQpcmV0dXJuIGE7YT1cIm9iamVjdFwiPT10eXBlb2YgYSYmYS5sYj9hLk5hKCk6U3RyaW5nKGEpO1RkLnRlc3QoYSl8fChhPVwiYWJvdXQ6aW52YWxpZCN6Q2xvc3VyZXpcIik7cmV0dXJuIG5ldyBfLlJkKGEsUWQpfTtRZD17fTt2YXIgVmQ7YTp7dmFyIFdkPV8uci5uYXZpZ2F0b3I7aWYoV2Qpe3ZhciBYZD1XZC51c2VyQWdlbnQ7aWYoWGQpe1ZkPVhkO2JyZWFrIGF9fVZkPVwiXCJ9dmFyIEw9ZnVuY3Rpb24oYSl7cmV0dXJuLTEhPVZkLmluZGV4T2YoYSl9LFlkPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0vKFxcd1tcXHcgXSspXFwvKFteXFxzXSspXFxzKig/OlxcKCguKj8pXFwpKT8vZyxjPVtdLGQ7ZD1iLmV4ZWMoYSk7KWMucHVzaChbZFsxXSxkWzJdLGRbM118fHZvaWQgMF0pO3JldHVybiBjfTt2YXIgWmQ9ZnVuY3Rpb24oKXtyZXR1cm4gTChcIlRyaWRlbnRcIil8fEwoXCJNU0lFXCIpfSwkZD1mdW5jdGlvbigpe3JldHVybiBMKFwiRmlyZWZveFwiKXx8TChcIkZ4aU9TXCIpfSxiZT1mdW5jdGlvbigpe3JldHVybiBMKFwiU2FmYXJpXCIpJiYhKGFlKCl8fEwoXCJDb2FzdFwiKXx8TChcIk9wZXJhXCIpfHxMKFwiRWRnZVwiKXx8TChcIkVkZy9cIil8fEwoXCJPUFJcIil8fCRkKCl8fEwoXCJTaWxrXCIpfHxMKFwiQW5kcm9pZFwiKSl9LGFlPWZ1bmN0aW9uKCl7cmV0dXJuKEwoXCJDaHJvbWVcIil8fEwoXCJDcmlPU1wiKSkmJiFMKFwiRWRnZVwiKX0sZGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGUpe2U9WmMoZSxkKTtyZXR1cm4gY1tlXXx8XCJcIn12YXIgYj1WZDtpZihaZCgpKXJldHVybiBjZShiKTtiPVlkKGIpO3ZhciBjPXt9O18uVmMoYixmdW5jdGlvbihlKXtjW2VbMF1dPWVbMV19KTt2YXIgZD1fLlNjKG1kLGMpO3JldHVybiBMKFwiT3BlcmFcIik/YShbXCJWZXJzaW9uXCIsXCJPcGVyYVwiXSk6TChcIkVkZ2VcIik/YShbXCJFZGdlXCJdKTpMKFwiRWRnL1wiKT9hKFtcIkVkZ1wiXSk6YWUoKT9hKFtcIkNocm9tZVwiLFwiQ3JpT1NcIixcIkhlYWRsZXNzQ2hyb21lXCJdKTooYj1iWzJdKSYmYlsxXXx8XCJcIn0sY2U9ZnVuY3Rpb24oYSl7dmFyIGI9L3J2OiAqKFtcXGRcXC5dKikvLmV4ZWMoYSk7aWYoYiYmYlsxXSlyZXR1cm4gYlsxXTtiPVwiXCI7dmFyIGM9L01TSUUgKyhbXFxkXFwuXSspLy5leGVjKGEpO2lmKGMmJmNbMV0paWYoYT0vVHJpZGVudFxcLyhcXGQuXFxkKS8uZXhlYyhhKSxcIjcuMFwiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgXCI0LjBcIjpiPVwiOC4wXCI7YnJlYWs7Y2FzZSBcIjUuMFwiOmI9XCI5LjBcIjticmVhaztjYXNlIFwiNi4wXCI6Yj1cIjEwLjBcIjticmVhaztjYXNlIFwiNy4wXCI6Yj1cIjExLjBcIn1lbHNlIGI9XCI3LjBcIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn07dmFyIGZlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmo9Yz09PWVlP2E6XCJcIn07ZmUucHJvdG90eXBlLmxiPSEwO2ZlLnByb3RvdHlwZS5OYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07dmFyIGVlPXt9O3ZhciBBYT1mdW5jdGlvbihhLGIpe2Euc3JjPXlkKGIpOyhiPUZjKGEub3duZXJEb2N1bWVudCYmYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSkmJmEuc2V0QXR0cmlidXRlKFwibm9uY2VcIixiKX07dmFyIGdlLGhlLGllLGplLGxlO2dlPWZ1bmN0aW9uKGEpe05kLnRlc3QoYSkmJigtMSE9YS5pbmRleE9mKFwiJlwiKSYmKGE9YS5yZXBsYWNlKEhkLFwiJmFtcDtcIikpLC0xIT1hLmluZGV4T2YoXCI8XCIpJiYoYT1hLnJlcGxhY2UoSWQsXCImbHQ7XCIpKSwtMSE9YS5pbmRleE9mKFwiPlwiKSYmKGE9YS5yZXBsYWNlKEpkLFwiJmd0O1wiKSksLTEhPWEuaW5kZXhPZignXCInKSYmKGE9YS5yZXBsYWNlKEtkLFwiJnF1b3Q7XCIpKSwtMSE9YS5pbmRleE9mKFwiJ1wiKSYmKGE9YS5yZXBsYWNlKExkLFwiJiMzOTtcIikpLC0xIT1hLmluZGV4T2YoXCJcXHgwMFwiKSYmKGE9YS5yZXBsYWNlKE1kLFwiJiMwO1wiKSkpO3JldHVybiBhfTtoZT1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTtpZT1mdW5jdGlvbihhKXthPVN0cmluZyhhKTt2YXIgYj1hLmluZGV4T2YoXCIuXCIpOy0xPT1iJiYoYj1hLmxlbmd0aCk7cmV0dXJuIGhlKFwiMFwiLE1hdGgubWF4KDAsMi1iKSkrYX07amU9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleVGMoKSkudG9TdHJpbmcoMzYpfTtfLmtlPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvXFwtKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGMudG9VcHBlckNhc2UoKX0pfTtsZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXnxbXFxzXSspKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYytkLnRvVXBwZXJDYXNlKCl9KX07dmFyIGFhPTAsYmE9MDt2YXIgbWU9ZnVuY3Rpb24oKXt0aGlzLmo9W119O21lLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmxlbmd0aH07dmFyIG5lPWZ1bmN0aW9uKGEpe3ZhciBiPWEuajthLmo9W107cmV0dXJuIGJ9LG9lPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hYSxjPWJhOzA8Y3x8MTI3PGI7KWEuai5wdXNoKGImMTI3fDEyOCksYj0oYj4+Pjd8Yzw8MjUpPj4+MCxjPj4+PTc7YS5qLnB1c2goYil9LHBlPWZ1bmN0aW9uKGEsYil7Zm9yKDsxMjc8YjspYS5qLnB1c2goYiYxMjd8MTI4KSxiPj4+PTc7YS5qLnB1c2goYil9O3ZhciBxZT1mdW5jdGlvbigpe3JldHVybiBMKFwiaVBob25lXCIpJiYhTChcImlQb2RcIikmJiFMKFwiaVBhZFwiKX07dmFyIHJlPWZ1bmN0aW9uKGEpe3JlW1wiIFwiXShhKTtyZXR1cm4gYX07cmVbXCIgXCJdPV8uSGM7dmFyIHNlPWZ1bmN0aW9uKGEsYil7dHJ5e3JldHVybiByZShhW2JdKSwhMH1jYXRjaChjKXt9cmV0dXJuITF9LEViPWZ1bmN0aW9uKGEsYixjLGQpe2Q9ZD9kKGIpOmI7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGQpP2FbZF06YVtkXT1jKGIpfTt2YXIgdGUsdmUsd2UseGUseWUsemUsQWUsQmUsQ2UsRGUsRWUsRmU7dGU9TChcIk9wZXJhXCIpO18udWU9WmQoKTt2ZT1MKFwiRWRnZVwiKTt3ZT12ZXx8Xy51ZTt4ZT1MKFwiR2Vja29cIikmJiEoLTEhPVZkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndlYmtpdFwiKSYmIUwoXCJFZGdlXCIpKSYmIShMKFwiVHJpZGVudFwiKXx8TChcIk1TSUVcIikpJiYhTChcIkVkZ2VcIik7eWU9LTEhPVZkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndlYmtpdFwiKSYmIUwoXCJFZGdlXCIpO3plPXllJiZMKFwiTW9iaWxlXCIpO0FlPUwoXCJBbmRyb2lkXCIpO0JlPXFlKCk7Q2U9TChcImlQYWRcIik7RGU9TChcImlQb2RcIik7RWU9ZnVuY3Rpb24oKXt2YXIgYT1fLnIuZG9jdW1lbnQ7cmV0dXJuIGE/YS5kb2N1bWVudE1vZGU6dm9pZCAwfTthOnt2YXIgR2U9XCJcIixIZT1mdW5jdGlvbigpe3ZhciBhPVZkO2lmKHhlKXJldHVybi9ydjooW15cXCk7XSspKFxcKXw7KS8uZXhlYyhhKTtpZih2ZSlyZXR1cm4vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGEpO2lmKF8udWUpcmV0dXJuL1xcYig/Ok1TSUV8cnYpWzogXShbXlxcKTtdKykoXFwpfDspLy5leGVjKGEpO2lmKHllKXJldHVybi9XZWJLaXRcXC8oXFxTKykvLmV4ZWMoYSk7aWYodGUpcmV0dXJuLyg/OlZlcnNpb24pWyBcXC9dPyhcXFMrKS8uZXhlYyhhKX0oKTtIZSYmKEdlPUhlP0hlWzFdOlwiXCIpO2lmKF8udWUpe3ZhciBJZT1FZSgpO2lmKG51bGwhPUllJiZJZT5wYXJzZUZsb2F0KEdlKSl7RmU9U3RyaW5nKEllKTticmVhayBhfX1GZT1HZX12YXIgSmU9RmUsS2U9e30sTGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEViKEtlLGEsZnVuY3Rpb24oKXtyZXR1cm4gMDw9UGQoSmUsYSl9KX0sTWU7aWYoXy5yLmRvY3VtZW50JiZfLnVlKXt2YXIgTmU9RWUoKTtNZT1OZT9OZTpwYXJzZUludChKZSwxMCl8fHZvaWQgMH1lbHNlIE1lPXZvaWQgMDt2YXIgT2U9TWU7dmFyIFBlPWFlKCksUWU9YmUoKSYmIShxZSgpfHxMKFwiaVBhZFwiKXx8TChcImlQb2RcIikpO3ZhciBSZT17fSxTZT1udWxsLFRlPXhlfHx5ZSYmIVFlfHx0ZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgXy5yLmJ0b2EsVWU9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTtpZighU2Upe1NlPXt9O2Zvcih2YXIgYz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksZD1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0sZT0wOzU+ZTtlKyspe3ZhciBmPWMuY29uY2F0KGRbZV0uc3BsaXQoXCJcIikpO1JlW2VdPWY7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107dm9pZCAwPT09U2VbaF0mJihTZVtoXT1nKX19fWI9UmVbYl07Yz1bXTtmb3IoZD0wO2Q8YS5sZW5ndGg7ZCs9Myl7dmFyIGs9YVtkXSxsPShlPWQrMTxhLmxlbmd0aCk/YVtkKzFdOjA7aD0oZj1kKzI8YS5sZW5ndGgpP2FbZCsyXTowO2c9az4+MjtrPShrJjMpPDw0fGw+PjQ7bD0obCYxNSk8PDJ8aD4+NjtoJj02MztmfHwoaD02NCxlfHwobD02NCkpO2MucHVzaChiW2ddLGJba10sYltsXXx8XCJcIixiW2hdfHxcIlwiKX1yZXR1cm4gYy5qb2luKFwiXCIpfSxWZT1mdW5jdGlvbihhLGIpe2lmKFRlJiYhYilhPV8uci5idG9hKGEpO2Vsc2V7Zm9yKHZhciBjPVtdLGQ9MCxlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPWEuY2hhckNvZGVBdChlKTsyNTU8ZiYmKGNbZCsrXT1mJjI1NSxmPj49OCk7Y1tkKytdPWZ9YT1VZShjLGIpfXJldHVybiBhfTt2YXIgV2U9ZnVuY3Rpb24oKXt0aGlzLnY9W107dGhpcy5sPTA7dGhpcy5qPW5ldyBtZX0sWGU9ZnVuY3Rpb24oYSxiKXtwZShhLmosOCpiKzIpO2I9bmUoYS5qKTthLnYucHVzaChiKTthLmwrPWIubGVuZ3RoO2IucHVzaChhLmwpO3JldHVybiBifSxZZT1mdW5jdGlvbihhLGIpe3ZhciBjPWIucG9wKCk7Zm9yKGM9YS5sK2Euai5sZW5ndGgoKS1jOzEyNzxjOyliLnB1c2goYyYxMjd8MTI4KSxjPj4+PTcsYS5sKys7Yi5wdXNoKGMpO2EubCsrfSxaZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IFVpbnQ4QXJyYXkoYS5sK2Euai5sZW5ndGgoKSksYz1hLnYsZD1jLmxlbmd0aCxlPTAsZj0wO2Y8ZDtmKyspe3ZhciBnPWNbZl07Yi5zZXQoZyxlKTtlKz1nLmxlbmd0aH1jPW5lKGEuaik7Yi5zZXQoYyxlKTthLnY9W2JdO3JldHVybiBifSwkZT1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9YyYmbnVsbCE9YylpZihwZShhLmosOCpiKSxhPWEuaiwwPD1jKXBlKGEsYyk7ZWxzZXtmb3IoYj0wOzk+YjtiKyspYS5qLnB1c2goYyYxMjd8MTI4KSxjPj49NzthLmoucHVzaCgxKX19LGFmPWZ1bmN0aW9uKGEsYixjKXtudWxsIT1jJiZudWxsIT1jJiYocGUoYS5qLDgqYiksYT1hLmosY2EoYyksb2UoYSkpfSxiZj1mdW5jdGlvbihhLGIsYyl7bnVsbCE9YyYmbnVsbCE9YyYmKHBlKGEuaiw4KmIpLGE9YS5qLGNhKGMpLG9lKGEpKX0sY2Y9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPWMpe2I9WGUoYSxiKTtmb3IodmFyIGQ9YS5qLGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Yy5jaGFyQ29kZUF0KGUpO2lmKDEyOD5mKWQuai5wdXNoKGYpO2Vsc2UgaWYoMjA0OD5mKWQuai5wdXNoKGY+PjZ8MTkyKSxkLmoucHVzaChmJjYzfDEyOCk7ZWxzZSBpZig2NTUzNj5mKWlmKDU1Mjk2PD1mJiY1NjMxOT49ZiYmZSsxPGMubGVuZ3RoKXt2YXIgZz1jLmNoYXJDb2RlQXQoZSsxKTs1NjMyMDw9ZyYmNTczNDM+PWcmJihmPTEwMjQqKGYtNTUyOTYpK2ctNTYzMjArNjU1MzYsZC5qLnB1c2goZj4+MTh8MjQwKSxkLmoucHVzaChmPj4xMiY2M3wxMjgpLGQuai5wdXNoKGY+PjYmNjN8MTI4KSxkLmoucHVzaChmJjYzfDEyOCksZSsrKX1lbHNlIGQuai5wdXNoKGY+PjEyfDIyNCksZC5qLnB1c2goZj4+NiY2M3wxMjgpLGQuai5wdXNoKGYmNjN8MTI4KX1ZZShhLGIpfX0sZWY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWRmO251bGwhPWMmJihiPVhlKGEsYiksZChjLGEpLFllKGEsYikpfSxmZj1mdW5jdGlvbihhLGIsYyxkKXtpZihudWxsIT1jKWZvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1YZShhLGIpO2QoY1tlXSxhKTtZZShhLGYpfX07dmFyIE09ZnVuY3Rpb24oKXt9LGdmPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksa2Y9ZnVuY3Rpb24oYSxiLGMsZCl7YS5qPW51bGw7Ynx8KGI9W10pO2EuQz12b2lkIDA7YS52PS0xO2EuaWE9YjthOntpZihiPWEuaWEubGVuZ3RoKXstLWI7dmFyIGU9YS5pYVtiXTtpZighKG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZXx8QXJyYXkuaXNBcnJheShlKXx8Z2YmJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl7YS5vPWItYS52O2EubD1lO2JyZWFrIGF9fWEubz1OdW1iZXIuTUFYX1ZBTFVFfWEuQT17fTtpZihjKWZvcihiPTA7YjxjLmxlbmd0aDtiKyspZT1jW2JdLGU8YS5vPyhlKz1hLnYsYS5pYVtlXT1hLmlhW2VdfHxoZik6KGpmKGEpLGEubFtlXT1hLmxbZV18fGhmKTtpZihkJiZkLmxlbmd0aClmb3IoYj0wO2I8ZC5sZW5ndGg7YisrKXtlPWM9dm9pZCAwO2Zvcih2YXIgZj1hLGc9ZFtiXSxoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciBrPWdbaF0sbD1CKGYsayk7bnVsbCE9bCYmKGU9ayxjPWwsRChmLGssdm9pZCAwKSl9ZSYmRChmLGUsYyl9fSxoZj1bXSxqZj1mdW5jdGlvbihhKXt2YXIgYj1hLm8rYS52O2EuaWFbYl18fChhLmw9YS5pYVtiXT17fSl9LEI9ZnVuY3Rpb24oYSxiKXtpZihiPGEubyl7Yis9YS52O3ZhciBjPWEuaWFbYl07cmV0dXJuIGM9PT1oZj9hLmlhW2JdPVtdOmN9aWYoYS5sKXJldHVybiBjPWEubFtiXSxjPT09aGY/YS5sW2JdPVtdOmN9LGxmPWZ1bmN0aW9uKGEsYil7YT1CKGEsYik7cmV0dXJuIG51bGw9PWE/YTorYX0seD1mdW5jdGlvbihhLGIpe2E9QihhLGIpO3JldHVybiBudWxsPT1hP2E6ISFhfSxtZj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6Z2YmJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5P1VlKGEpOm51bGx9LG5mPWZ1bmN0aW9uKGEsYixjKXthPUIoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9LG9mPWZ1bmN0aW9uKGEpe2E9eChhLDEyKTtyZXR1cm4gbnVsbD09YT8hMTphfSxwZj1mdW5jdGlvbihhKXthPWxmKGEsMik7cmV0dXJuIG51bGw9PWE/MTphfSxEPWZ1bmN0aW9uKGEsYixjKXtiPGEubz9hLmlhW2IrYS52XT1jOihqZihhKSxhLmxbYl09Yyk7cmV0dXJuIGF9LHJmPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcWYoYSxiLGMsITEpfSxxZj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZD9EKGEsYixjKTpiPGEubz9hLmlhW2IrYS52XT1udWxsOihqZihhKSxkZWxldGUgYS5sW2JdKTtyZXR1cm4gYX0sc2Y9ZnVuY3Rpb24oYSxiLGMpe0IoYSxiKS5wdXNoKGMpfSxPPWZ1bmN0aW9uKGEsYixjKXthLmp8fChhLmo9e30pO2lmKCFhLmpbY10pe3ZhciBkPUIoYSxjKTtkJiYoYS5qW2NdPW5ldyBiKGQpKX1yZXR1cm4gYS5qW2NdfSx1Zj1mdW5jdGlvbihhLGIsYyl7dGYoYSxiLGMpO2I9YS5qW2NdO2I9PWhmJiYoYj1hLmpbY109W10pO3JldHVybiBifSx0Zj1mdW5jdGlvbihhLGIsYyl7YS5qfHwoYS5qPXt9KTtpZighYS5qW2NdKXtmb3IodmFyIGQ9QihhLGMpLGU9W10sZj0wO2Y8ZC5sZW5ndGg7ZisrKWVbZl09bmV3IGIoZFtmXSk7YS5qW2NdPWV9fSx2Zj1mdW5jdGlvbihhLGIsYyl7YS5qfHwoYS5qPXt9KTt2YXIgZD1jP2MuaWE6YzthLmpbYl09YztyZXR1cm4gRChhLGIsZCl9LHdmPWZ1bmN0aW9uKGEsYixjKXthLmp8fChhLmo9e30pO2M9Y3x8W107Zm9yKHZhciBkPVtdLGU9MDtlPGMubGVuZ3RoO2UrKylkW2VdPWNbZV0uaWE7YS5qW2JdPWM7cmV0dXJuIEQoYSxiLGQpfSx4Zj1mdW5jdGlvbihhLGIsYyxkKXt0ZihhLGQsYik7dmFyIGU9YS5qW2JdO2V8fChlPWEualtiXT1bXSk7Yz1jP2M6bmV3IGQ7YT1CKGEsYik7ZS5wdXNoKGMpO2EucHVzaChjLmlhKX07TS5wcm90b3R5cGUubT1nZj9mdW5jdGlvbigpe3ZhciBhPVVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTjtVaW50OEFycmF5LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gVWUodGhpcyl9O3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pYSYmdGhpcy5pYSx5Zil9ZmluYWxseXtVaW50OEFycmF5LnByb3RvdHlwZS50b0pTT049YX19OmZ1bmN0aW9uKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaWEmJnRoaXMuaWEseWYpfTt2YXIgeWY9ZnVuY3Rpb24oYSxiKXtyZXR1cm5cIm51bWJlclwiIT09dHlwZW9mIGJ8fCFpc05hTihiKSYmSW5maW5pdHkhPT1iJiYtSW5maW5pdHkhPT1iP2I6U3RyaW5nKGIpfSx6Zj1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgYShiP0pTT04ucGFyc2UoYik6bnVsbCl9LEFmPWZ1bmN0aW9uKGEpe2lmKEFycmF5LmlzQXJyYXkoYSkpe2Zvcih2YXIgYj1BcnJheShhLmxlbmd0aCksYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdO251bGwhPWQmJihiW2NdPVwib2JqZWN0XCI9PXR5cGVvZiBkP0FmKGQpOmQpfXJldHVybiBifWlmKGdmJiZhIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSk7Yj17fTtmb3IoYyBpbiBhKWQ9YVtjXSxudWxsIT1kJiYoYltjXT1cIm9iamVjdFwiPT10eXBlb2YgZD9BZihkKTpkKTtyZXR1cm4gYn07dmFyIEJmPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKEJmLE0pO3ZhciBDZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhDZixNKTt2YXIgRGY9ZG9jdW1lbnQsRWY9d2luZG93O3ZhciBGZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhGZixNKTt2YXIgR2Y9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soR2YsTSk7dmFyIFBhPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfHx7Y29va2llOlwiXCJ9fTtQYS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMpe3ZhciBlPWMueWU7ZD1jLnZkfHwhMTt2YXIgZj1jLmRvbWFpbnx8dm9pZCAwO3ZhciBnPWMucGF0aHx8dm9pZCAwO3ZhciBoPWMud2N9aWYoL1s7PVxcc10vLnRlc3QoYSkpdGhyb3cgRXJyb3IoJ0ludmFsaWQgY29va2llIG5hbWUgXCInK2ErJ1wiJyk7aWYoL1s7XFxyXFxuXS8udGVzdChiKSl0aHJvdyBFcnJvcignSW52YWxpZCBjb29raWUgdmFsdWUgXCInK2IrJ1wiJyk7dm9pZCAwPT09aCYmKGg9LTEpO2M9Zj9cIjtkb21haW49XCIrZjpcIlwiO2c9Zz9cIjtwYXRoPVwiK2c6XCJcIjtkPWQ/XCI7c2VjdXJlXCI6XCJcIjtoPTA+aD9cIlwiOjA9PWg/XCI7ZXhwaXJlcz1cIisobmV3IERhdGUoMTk3MCwxLDEpKS50b1VUQ1N0cmluZygpOlwiO2V4cGlyZXM9XCIrKG5ldyBEYXRlKFRjKCkrMUUzKmgpKS50b1VUQ1N0cmluZygpO3RoaXMuai5jb29raWU9YStcIj1cIitiK2MrZytoK2QrKG51bGwhPWU/XCI7c2FtZXNpdGU9XCIrZTpcIlwiKX07UGEucHJvdG90eXBlLmdldD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hK1wiPVwiLGQ9KHRoaXMuai5jb29raWV8fFwiXCIpLnNwbGl0KFwiO1wiKSxlPTAsZjtlPGQubGVuZ3RoO2UrKyl7Zj1HZChkW2VdKTtpZigwPT1mLmxhc3RJbmRleE9mKGMsMCkpcmV0dXJuIGYuc3Vic3RyKGMubGVuZ3RoKTtpZihmPT1hKXJldHVyblwiXCJ9cmV0dXJuIGJ9O1BhLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuai5jb29raWV9O3ZhciBIZj1mdW5jdGlvbihhKXtyZXR1cm4oYT0obmV3IFBhKGEpKS5nZXQoXCJEQVRBX1VTRV9DT05TRU5UXCIsXCJcIikpP2E6bnVsbH0sSWY9ZnVuY3Rpb24oYSl7dmFyIGI9KGI9KG5ldyBQYShhKSkuZ2V0KFwiRkNDRENGXCIsXCJcIikpP2I6bnVsbDt0cnl7dmFyIGM9Yj96ZihGZixiKTpudWxsfWNhdGNoKGQpe2M9bnVsbH1pZighYylyZXR1cm4gSGYoYSk7Yz1PKGMsR2YsMyk7aWYoIWN8fG51bGw9PUIoYywxKSlyZXR1cm4gSGYoYSk7YT1CKGMsMik7Yj1EYXRlLm5vdygpO2lmKGEpe2lmKGI8YXx8Yj5hKzMzNjk2RTYpcmV0dXJuIG51bGx9ZWxzZSByZXR1cm4gbnVsbDtyZXR1cm4gQihjLDEpfTt2YXIgS2Y9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLEpmLG51bGwpfTtLKEtmLE0pO3ZhciBKZj1bMSwyLDMsNF07dmFyIGRhO2RhPXZhKGZ1bmN0aW9uKCl7dmFyIGE9ITE7dHJ5e3ZhciBiPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7YT0hMH19KTtfLnIuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixudWxsLGIpfWNhdGNoKGMpe31yZXR1cm4gYX0pO18udj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyPyhhLmFkZEV2ZW50TGlzdGVuZXIoYixjLGVhKGQpKSwhMCk6ITF9O18ucWI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcj8oYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyxlYShkKSksITApOiExfTt2YXIgTGY9ZnVuY3Rpb24oYSl7dGhpcy5qPXRoaXMubz10aGlzLkE9MDt0aGlzLmw9YTt0aGlzLm09dGhpcy52PTB9O0xmLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy5BKz1hLkE7dGhpcy5vKz1hLm87dGhpcy5qKz1hLmo7dGhpcy5sKz1hLmw7dGhpcy52Kz1hLnY7dGhpcy5tKz1hLm19O3ZhciBPZj1mdW5jdGlvbihhLGIsYyl7XCJudW1iZXJcIj09PXR5cGVvZiBhPyh0aGlzLmo9TWYoYSxifHwwLGN8fDEpLE5mKHRoaXMsY3x8MSkpOl8uTWMoYSk/KHRoaXMuaj1NZihhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKSxOZih0aGlzLGEuZ2V0RGF0ZSgpKSk6KHRoaXMuaj1uZXcgRGF0ZShUYygpKSxhPXRoaXMuai5nZXREYXRlKCksdGhpcy5qLnNldEhvdXJzKDApLHRoaXMuai5zZXRNaW51dGVzKDApLHRoaXMuai5zZXRTZWNvbmRzKDApLHRoaXMuai5zZXRNaWxsaXNlY29uZHMoMCksTmYodGhpcyxhKSl9LE1mPWZ1bmN0aW9uKGEsYixjKXtiPW5ldyBEYXRlKGEsYixjKTswPD1hJiYxMDA+YSYmYi5zZXRGdWxsWWVhcihiLmdldEZ1bGxZZWFyKCktMTkwMCk7cmV0dXJuIGJ9O18ucD1PZi5wcm90b3R5cGU7Xy5wLmdldEZ1bGxZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXRGdWxsWWVhcigpfTtfLnAuZ2V0TW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmdldE1vbnRoKCl9O18ucC5nZXREYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXREYXRlKCl9O18ucC5nZXRUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXRUaW1lKCl9O18ucC5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy5qPW5ldyBEYXRlKGEuZ2V0RnVsbFllYXIoKSxhLmdldE1vbnRoKCksYS5nZXREYXRlKCkpfTtfLnAuYWRkPWZ1bmN0aW9uKGEpe2lmKGEuQXx8YS5vKXt2YXIgYj10aGlzLmdldE1vbnRoKCkrYS5vKzEyKmEuQSxjPXRoaXMuZ2V0RnVsbFllYXIoKStNYXRoLmZsb29yKGIvMTIpO2IlPTEyOzA+YiYmKGIrPTEyKTthOntzd2l0Y2goYil7Y2FzZSAxOnZhciBkPTAhPWMlNHx8MD09YyUxMDAmJjAhPWMlNDAwPzI4OjI5O2JyZWFrIGE7Y2FzZSA1OmNhc2UgODpjYXNlIDEwOmNhc2UgMzpkPTMwO2JyZWFrIGF9ZD0zMX1kPU1hdGgubWluKGQsdGhpcy5nZXREYXRlKCkpO3RoaXMuai5zZXREYXRlKDEpO3RoaXMuai5zZXRGdWxsWWVhcihjKTt0aGlzLmouc2V0TW9udGgoYik7dGhpcy5qLnNldERhdGUoZCl9YS5qJiYoYT1uZXcgRGF0ZSgobmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLHRoaXMuZ2V0TW9udGgoKSx0aGlzLmdldERhdGUoKSwxMikpLmdldFRpbWUoKSs4NjRFNSphLmopLHRoaXMuai5zZXREYXRlKDEpLHRoaXMuai5zZXRGdWxsWWVhcihhLmdldEZ1bGxZZWFyKCkpLHRoaXMuai5zZXRNb250aChhLmdldE1vbnRoKCkpLHRoaXMuai5zZXREYXRlKGEuZ2V0RGF0ZSgpKSxOZih0aGlzLGEuZ2V0RGF0ZSgpKSl9O18ucC55Yj1mdW5jdGlvbihhKXtyZXR1cm5bdGhpcy5nZXRGdWxsWWVhcigpLGllKHRoaXMuZ2V0TW9udGgoKSsxKSxpZSh0aGlzLmdldERhdGUoKSldLmpvaW4oYT9cIi1cIjpcIlwiKX07Xy5wLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueWIoKX07dmFyIE5mPWZ1bmN0aW9uKGEsYil7YS5nZXREYXRlKCkhPWImJmEuai5zZXRVVENIb3VycyhhLmouZ2V0VVRDSG91cnMoKSsoYS5nZXREYXRlKCk8Yj8xOi0xKSl9O09mLnByb3RvdHlwZS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai52YWx1ZU9mKCl9O3ZhciBQZj1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt0aGlzLmo9XCJudW1iZXJcIj09PXR5cGVvZiBhP25ldyBEYXRlKGEsYnx8MCxjfHwxLGR8fDAsZXx8MCxmfHwwLGd8fDApOm5ldyBEYXRlKGEmJmEuZ2V0VGltZT9hLmdldFRpbWUoKTpUYygpKX07SyhQZixPZik7dmFyIFFmPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBQZjtiLmouc2V0VGltZShhKTtyZXR1cm4gYn07UGYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtPZi5wcm90b3R5cGUuYWRkLmNhbGwodGhpcyxhKTthLmwmJnRoaXMuai5zZXRVVENIb3Vycyh0aGlzLmouZ2V0VVRDSG91cnMoKSthLmwpO2EudiYmdGhpcy5qLnNldFVUQ01pbnV0ZXModGhpcy5qLmdldFVUQ01pbnV0ZXMoKSthLnYpO2EubSYmdGhpcy5qLnNldFVUQ1NlY29uZHModGhpcy5qLmdldFVUQ1NlY29uZHMoKSthLm0pfTtQZi5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSl7dmFyIGI9T2YucHJvdG90eXBlLnliLmNhbGwodGhpcyxhKTtyZXR1cm4gYT9iK1wiVFwiK2llKHRoaXMuai5nZXRIb3VycygpKStcIjpcIitpZSh0aGlzLmouZ2V0TWludXRlcygpKStcIjpcIitpZSh0aGlzLmouZ2V0U2Vjb25kcygpKTpiK1wiVFwiK2llKHRoaXMuai5nZXRIb3VycygpKStpZSh0aGlzLmouZ2V0TWludXRlcygpKStpZSh0aGlzLmouZ2V0U2Vjb25kcygpKX07UGYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueWIoKX07dmFyIFJmPSFfLnVlfHw5PD1OdW1iZXIoT2UpLFNmPV8udWV8fHRlfHx5ZTtfLnlhPWZ1bmN0aW9uKGEsYil7dGhpcy54PXZvaWQgMCE9PWE/YTowO3RoaXMueT12b2lkIDAhPT1iP2I6MH07Xy55YS5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9O18ueWEucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3JldHVybiB0aGlzfTtfLnlhLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTtyZXR1cm4gdGhpc307Xy5UZj1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtfLnA9Xy5UZi5wcm90b3R5cGU7Xy5wLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O18ucC5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KX07Xy5wLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLnAuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O18ucC5yb3VuZD1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307dmFyIFdmLFlmLFhmLGFnLGJnLGRnLGhnLGlnLFVmO1dmPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBVZihfLlZmKGEpKTpVY3x8KFVjPW5ldyBVZil9O1lmPWZ1bmN0aW9uKGEsYil7bGQoYixmdW5jdGlvbihjLGQpe2MmJlwib2JqZWN0XCI9PXR5cGVvZiBjJiZjLmxiJiYoYz1jLk5hKCkpO1wic3R5bGVcIj09ZD9hLnN0eWxlLmNzc1RleHQ9YzpcImNsYXNzXCI9PWQ/YS5jbGFzc05hbWU9YzpcImZvclwiPT1kP2EuaHRtbEZvcj1jOlhmLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKFhmW2RdLGMpOjA9PWQubGFzdEluZGV4T2YoXCJhcmlhLVwiLDApfHwwPT1kLmxhc3RJbmRleE9mKFwiZGF0YS1cIiwwKT9hLnNldEF0dHJpYnV0ZShkLGMpOmFbZF09Y30pfTtYZj17Y2VsbHBhZGRpbmc6XCJjZWxsUGFkZGluZ1wiLGNlbGxzcGFjaW5nOlwiY2VsbFNwYWNpbmdcIixjb2xzcGFuOlwiY29sU3BhblwiLGZyYW1lYm9yZGVyOlwiZnJhbWVCb3JkZXJcIixoZWlnaHQ6XCJoZWlnaHRcIixtYXhsZW5ndGg6XCJtYXhMZW5ndGhcIixub25jZTpcIm5vbmNlXCIscm9sZTpcInJvbGVcIixyb3dzcGFuOlwicm93U3BhblwiLHR5cGU6XCJ0eXBlXCIsdXNlbWFwOlwidXNlTWFwXCIsdmFsaWduOlwidkFsaWduXCIsd2lkdGg6XCJ3aWR0aFwifTtfLiRmPWZ1bmN0aW9uKGEpe2E9YS5kb2N1bWVudDthPV8uWmYoYSk/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5O3JldHVybiBuZXcgXy5UZihhLmNsaWVudFdpZHRoLGEuY2xpZW50SGVpZ2h0KX07YWc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2Nyb2xsaW5nRWxlbWVudD9hLnNjcm9sbGluZ0VsZW1lbnQ6IXllJiZfLlpmKGEpP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keXx8YS5kb2N1bWVudEVsZW1lbnR9O18uY2c9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YmcoYSk6d2luZG93fTtiZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXd9O2RnPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGgpe2gmJmIuYXBwZW5kQ2hpbGQoXCJzdHJpbmdcIj09PXR5cGVvZiBoP2EuY3JlYXRlVGV4dE5vZGUoaCk6aCl9Zm9yKHZhciBlPTI7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWNbZV07aWYoIUtjKGYpfHxfLk1jKGYpJiYwPGYubm9kZVR5cGUpZChmKTtlbHNle2E6e2lmKGYmJlwibnVtYmVyXCI9PXR5cGVvZiBmLmxlbmd0aCl7aWYoXy5NYyhmKSl7dmFyIGc9XCJmdW5jdGlvblwiPT10eXBlb2YgZi5pdGVtfHxcInN0cmluZ1wiPT10eXBlb2YgZi5pdGVtO2JyZWFrIGF9aWYoTGMoZikpe2c9XCJmdW5jdGlvblwiPT10eXBlb2YgZi5pdGVtO2JyZWFrIGF9fWc9ITF9Xy5WYyhnP2JkKGYpOmYsZCl9fX07Xy5lZz1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO1wiYXBwbGljYXRpb24veGh0bWwreG1sXCI9PT1hLmNvbnRlbnRUeXBlJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBhLmNyZWF0ZUVsZW1lbnQoYil9O18uWmY9ZnVuY3Rpb24oYSl7cmV0dXJuXCJDU1MxQ29tcGF0XCI9PWEuY29tcGF0TW9kZX07Xy5mZz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5wYXJlbnROb2RlP2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTpudWxsfTtfLmdnPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKFNmJiYhKF8udWUmJkxlKFwiOVwiKSYmIUxlKFwiMTBcIikmJl8uci5TVkdFbGVtZW50JiZhIGluc3RhbmNlb2YgXy5yLlNWR0VsZW1lbnQpJiYoYj1hLnBhcmVudEVsZW1lbnQpKXJldHVybiBiO2I9YS5wYXJlbnROb2RlO3JldHVybiBfLk1jKGIpJiYxPT1iLm5vZGVUeXBlP2I6bnVsbH07Xy5WZj1mdW5jdGlvbihhKXtyZXR1cm4gOT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudH07aGc9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLmNvbnRlbnRXaW5kb3d8fChhLmNvbnRlbnREb2N1bWVudD9fLmNnKGEuY29udGVudERvY3VtZW50KTpudWxsKX1jYXRjaChiKXt9cmV0dXJuIG51bGx9O2lnPWZ1bmN0aW9uKGEsYil7aWYoOT09YS5ub2RlVHlwZSl2YXIgYz1bYS5kb2N1bWVudEVsZW1lbnRdO2Vsc2UgZm9yKGM9W10sYT1hLmxhc3RFbGVtZW50Q2hpbGQ7YTthPWEucHJldmlvdXNFbGVtZW50U2libGluZyljLnB1c2goYSk7Zm9yKDswPGMubGVuZ3RoOyl7YT1jLnBvcCgpO2lmKGIoYSkpcmV0dXJuIGE7Zm9yKGE9YS5sYXN0RWxlbWVudENoaWxkO2E7YT1hLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpYy5wdXNoKGEpfXJldHVybiBudWxsfTtVZj1mdW5jdGlvbihhKXt0aGlzLmo9YXx8Xy5yLmRvY3VtZW50fHxkb2N1bWVudH07VWYucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuaixlPWFyZ3VtZW50cyxmPVN0cmluZyhlWzBdKSxnPWVbMV07aWYoIVJmJiZnJiYoZy5uYW1lfHxnLnR5cGUpKXtmPVtcIjxcIixmXTtnLm5hbWUmJmYucHVzaCgnIG5hbWU9XCInLGdlKGcubmFtZSksJ1wiJyk7aWYoZy50eXBlKXtmLnB1c2goJyB0eXBlPVwiJyxnZShnLnR5cGUpLCdcIicpO3ZhciBoPXt9O3BkKGgsZyk7ZGVsZXRlIGgudHlwZTtnPWh9Zi5wdXNoKFwiPlwiKTtmPWYuam9pbihcIlwiKX1mPV8uZWcoZCxmKTtnJiYoXCJzdHJpbmdcIj09PXR5cGVvZiBnP2YuY2xhc3NOYW1lPWc6QXJyYXkuaXNBcnJheShnKT9mLmNsYXNzTmFtZT1nLmpvaW4oXCIgXCIpOllmKGYsZykpOzI8ZS5sZW5ndGgmJmRnKGQsZixlKTtyZXR1cm4gZn07dmFyIGpnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZWcoYS5qLGIpfTt2YXIgbGc9ZnVuY3Rpb24oYSl7a2coKTtyZXR1cm4gQmQoYSl9LGtnPV8uSGM7dmFyIG1nPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJpUGFkXCIpfHxMKFwiQW5kcm9pZFwiKSYmIUwoXCJNb2JpbGVcIil8fEwoXCJTaWxrXCIpfTt2YXIgb2cscGcsZWI7Xy5uZz0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87b2c9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ZGVjb2RlVVJJKGEpOmF9O3BnPWZ1bmN0aW9uKGEsYixjKXtpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXBnKGEsU3RyaW5nKGJbZF0pLGMpO2Vsc2UgbnVsbCE9YiYmYy5wdXNoKGErKFwiXCI9PT1iP1wiXCI6XCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhiKSkpKX07ZWI9LyN8JC87dmFyIHFnLHNnLGhhLHJnLHRnLHVnLHdhLHhnLHdnLHlnLHpnLEJnLENnLHZnLEVnLEZnLERnLEdnLElnLEpnLEtnLExnLE1nLE5nLE9nLFBnLGZhLFFnLFJnLFNnLFVnLFdnLFlnLCRnLGFoLFpnLGJoLGNoLGRoLGVoLGZoLGdoLGhoLGloLGpoLGJiLGtoLGxoLG1oO3FnPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4hIWEmJm51bGwhPWEubG9jYXRpb24uaHJlZiYmc2UoYSxcImZvb1wiKX1jYXRjaChiKXtyZXR1cm4hMX19O3NnPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1fLnIsYz0wO2ImJjQwPmMrKyYmKCFxZyhiKXx8IWEoYikpOyliPXJnKGIpfTtoYT1mdW5jdGlvbigpe3ZhciBhPV8ucjtzZyhmdW5jdGlvbihiKXthPWI7cmV0dXJuITF9KTtyZXR1cm4gYX07cmc9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPWEucGFyZW50O2lmKGImJmIhPWEpcmV0dXJuIGJ9Y2F0Y2goYyl7fXJldHVybiBudWxsfTt0Zz1mdW5jdGlvbihhKXtyZXR1cm4gcWcoYS50b3ApP2EudG9wOm51bGx9O3VnPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO0FhKGMsXCJzdHJpbmdcIj09PXR5cGVvZiBiP2xnKGIpOmIpO3JldHVybihhPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF0pJiZhLnBhcmVudE5vZGU/KGEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYyxhKSxjKTpudWxsfTt3YT1mdW5jdGlvbihhLGIpe3JldHVybiBiLmdldENvbXB1dGVkU3R5bGU/Yi5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6YS5jdXJyZW50U3R5bGV9O3hnPWZ1bmN0aW9uKGEsYil7aWYoIXZnKCkpe3ZhciBjPU1hdGgucmFuZG9tKCk7aWYoYzxiKXJldHVybiBjPXdnKF8uciksYVtNYXRoLmZsb29yKGMqYS5sZW5ndGgpXX1yZXR1cm4gbnVsbH07d2c9ZnVuY3Rpb24oYSl7aWYoIWEuY3J5cHRvKXJldHVybiBNYXRoLnJhbmRvbSgpO3RyeXt2YXIgYj1uZXcgVWludDMyQXJyYXkoMSk7YS5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGIpO3JldHVybiBiWzBdLzY1NTM2LzY1NTM2fWNhdGNoKGMpe3JldHVybiBNYXRoLnJhbmRvbSgpfX07Xy5KYj1mdW5jdGlvbihhLGIsYyl7aWYoYSlmb3IodmFyIGQgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKSYmYi5jYWxsKGMsYVtkXSxkLGEpfTt5Zz1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKSlyZXR1cm4hMTtyZXR1cm4hMH07emc9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy5KYihhLGZ1bmN0aW9uKGMsZCl7Yi5wdXNoKGQpfSk7cmV0dXJuIGJ9O18uQWc9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy5KYihhLGZ1bmN0aW9uKGMpe2IucHVzaChjKX0pO3JldHVybiBifTtCZz1mdW5jdGlvbihhLGIpe3JldHVybiBuZChhLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGQpJiZiKGMsZCl9KX07Q2c9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoMD09YilyZXR1cm4gMDtmb3IodmFyIGM9MzA1NDE5ODk2LGQ9MDtkPGI7ZCsrKWNePShjPDw1KSsoYz4+MikrYS5jaGFyQ29kZUF0KGQpJjQyOTQ5NjcyOTU7cmV0dXJuIDA8Yz9jOjQyOTQ5NjcyOTYrY307dmc9dmEoZnVuY3Rpb24oKXtyZXR1cm4gXy5YYyhbXCJHb29nbGUgV2ViIFByZXZpZXdcIixcIk1lZGlhcGFydG5lcnMtR29vZ2xlXCIsXCJHb29nbGUtUmVhZC1BbG91ZFwiLFwiR29vZ2xlLUFkd29yZHNcIl0sRGcpfHwxRS00Pk1hdGgucmFuZG9tKCl9KTtFZz1mdW5jdGlvbihhKXtyZXR1cm4gdmcoKT9udWxsOk1hdGguZmxvb3IoMUUzKndnKGEpKX07Rmc9ZnVuY3Rpb24oYSxiKXt0cnl7aWYoYSlyZXR1cm4gYS5zZXRJdGVtKFwiZ29vZ2xlX2V4cGVyaW1lbnRfbW9kXCIsYiksYn1jYXRjaChjKXt9cmV0dXJuIG51bGx9O0RnPWZ1bmN0aW9uKGEpe3JldHVybi0xIT1WZC5pbmRleE9mKGEpfTtHZz0vXigtP1swLTkuXXsxLDMwfSkkLztfLkhnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEdnLnRlc3QoYSkmJihhPU51bWJlcihhKSwhaXNOYU4oYSkpP2E6dm9pZCAwPT1iP251bGw6Yn07SWc9ZnVuY3Rpb24oKXtyZXR1cm4vXnRydWUkLy50ZXN0KFwiZmFsc2VcIil9O0pnPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPyEwOmI7dHJ5e2Zvcih2YXIgYz1udWxsO2MhPWE7Yz1hLGE9YS5wYXJlbnQpc3dpdGNoKGEubG9jYXRpb24ucHJvdG9jb2wpe2Nhc2UgXCJodHRwczpcIjpyZXR1cm4hMDtjYXNlIFwiZmlsZTpcIjpyZXR1cm4gYjtjYXNlIFwiaHR0cDpcIjpyZXR1cm4hMX19Y2F0Y2goZCl7fXJldHVybiEwfTtLZz1mdW5jdGlvbihhKXtpZighYSlyZXR1cm5cIlwiO3ZhciBiPS8uKlsmIz9dZ29vZ2xlX2RlYnVnKD1bXiZdKik/KCYuKik/JC87dHJ5e3ZhciBjPWIuZXhlYyhkZWNvZGVVUklDb21wb25lbnQoYSkpO2lmKGMpcmV0dXJuIGNbMV0mJjE8Y1sxXS5sZW5ndGg/Y1sxXS5zdWJzdHJpbmcoMSk6XCJ0cnVlXCJ9Y2F0Y2goZCl7fXJldHVyblwiXCJ9O0xnPXtNZDpcImFsbG93LWZvcm1zXCIsTmQ6XCJhbGxvdy1tb2RhbHNcIixPZDpcImFsbG93LW9yaWVudGF0aW9uLWxvY2tcIixQZDpcImFsbG93LXBvaW50ZXItbG9ja1wiLFFkOlwiYWxsb3ctcG9wdXBzXCIsUmQ6XCJhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hcIixTZDpcImFsbG93LXByZXNlbnRhdGlvblwiLFRkOlwiYWxsb3ctc2FtZS1vcmlnaW5cIixVZDpcImFsbG93LXNjcmlwdHNcIixWZDpcImFsbG93LXRvcC1uYXZpZ2F0aW9uXCIsV2Q6XCJhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25cIn07TWc9dmEoZnVuY3Rpb24oKXtyZXR1cm4gXy5BZyhMZyl9KTtOZz1mdW5jdGlvbihhKXt2YXIgYj1NZygpO3JldHVybiBhLmxlbmd0aD9fLlRhKGIsZnVuY3Rpb24oYyl7cmV0dXJuIV8uJGMoYSxjKX0pOmJ9O09nPWZ1bmN0aW9uKCl7dmFyIGE9Xy5lZyhkb2N1bWVudCxcIklGUkFNRVwiKSxiPXt9O18uVmMoTWcoKSxmdW5jdGlvbihjKXthLnNhbmRib3gmJmEuc2FuZGJveC5zdXBwb3J0cyYmYS5zYW5kYm94LnN1cHBvcnRzKGMpJiYoYltjXT0hMCl9KTtyZXR1cm4gYn07UGc9ZnVuY3Rpb24oYSl7YT1hJiZhLnRvU3RyaW5nJiZhLnRvU3RyaW5nKCk7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYtMSE9YS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKX07ZmE9ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuISghYS5mcmFtZXN8fCFhLmZyYW1lc1tiXSl9Y2F0Y2goYyl7cmV0dXJuITF9fTtRZz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wOzUwPmM7KytjKXtpZihmYShhLGIpKXJldHVybiBhO2lmKCEoYT1yZyhhKSkpYnJlYWt9cmV0dXJuIG51bGx9O1JnPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIW1nKCkmJihMKFwiaVBvZFwiKXx8TChcImlQaG9uZVwiKXx8TChcIkFuZHJvaWRcIil8fEwoXCJJRU1vYmlsZVwiKSk/MjptZygpPzE6MH0pO1NnPWZ1bmN0aW9uKGEsYil7dmFyIGM7Zm9yKGM9dm9pZCAwPT09Yz8xMDA6YzthJiZjLS07KXtpZihhPT1iKXJldHVybiEwO2E9YS5wYXJlbnRFbGVtZW50fXJldHVybiExfTtfLlhnPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5zZXRQcm9wZXJ0eT9fLkpiKGIsZnVuY3Rpb24oYyxkKXthLnN0eWxlLnNldFByb3BlcnR5KGQsYyxcImltcG9ydGFudFwiKX0pOmEuc3R5bGUuY3NzVGV4dD1fLlRnKFVnKF8uVmcoYS5zdHlsZS5jc3NUZXh0KSxXZyhiLGZ1bmN0aW9uKGMpe3JldHVybiBjK1wiICFpbXBvcnRhbnRcIn0pKSl9O1VnPV8uQShPYmplY3QsXCJhc3NpZ25cIil8fGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKGQpZm9yKHZhciBlIGluIGQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtXZz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9LGQ7Zm9yKGQgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKSYmKGNbZF09Yi5jYWxsKHZvaWQgMCxhW2RdLGQsYSkpO3JldHVybiBjfTtZZz1mdW5jdGlvbihhLGIsYyl7Zm9yKGM9dm9pZCAwPT09Yz8xMDA6YzthJiZjLS0mJiExIT09YihhKTspYT1hLnBhcmVudEVsZW1lbnR9OyRnPWZ1bmN0aW9uKGEpe3JldHVybiBaZyhhLGZ1bmN0aW9uKGIpe3JldHVyblwiZml4ZWRcIj09Yi5wb3NpdGlvbnx8XCJzdGlja3lcIj09Yi5wb3NpdGlvbn0pfTthaD1mdW5jdGlvbihhKXtyZXR1cm4gWmcoYSxmdW5jdGlvbihiKXtyZXR1cm5cImxlZnRcIj09YltcImZsb2F0XCJdfHxcInJpZ2h0XCI9PWJbXCJmbG9hdFwiXXx8XCJsZWZ0XCI9PWIuY3NzRmxvYXR8fFwicmlnaHRcIj09Yi5jc3NGbG9hdH0pfTtaZz1mdW5jdGlvbihhLGIpe3ZhciBjO2ZvcihjPXZvaWQgMD09PWM/MTAwOmM7YSYmYy0tOyl7dmFyIGQ9d2EoYSx3aW5kb3cpO2lmKGQpe2lmKGIoZCkpcmV0dXJuITA7YT1hLnBhcmVudEVsZW1lbnR9fXJldHVybiExfTtiaD1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gbnVsbDthPWEudHJhbnNmb3JtO2lmKCFhKXJldHVybiBudWxsO2E9YS5yZXBsYWNlKC9eLipcXCgoWzAtOS4sIC1dKylcXCkkLyxcIiQxXCIpLnNwbGl0KC8sIC8pO3JldHVybiA2IT1hLmxlbmd0aD9udWxsOl8uUmEoYSxwYXJzZUZsb2F0KX07Xy5UZz1mdW5jdGlvbihhKXt2YXIgYj1bXTtfLkpiKGEsZnVuY3Rpb24oYyxkKXtudWxsIT1jJiZcIlwiIT09YyYmYi5wdXNoKGQrXCI6XCIrYyl9KTtyZXR1cm4gYi5sZW5ndGg/Yi5qb2luKFwiO1wiKStcIjtcIjpcIlwifTtfLlZnPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2lmKGEpe3ZhciBjPS9cXHMqOlxccyovO18uVmMoKGF8fFwiXCIpLnNwbGl0KC9cXHMqO1xccyovKSxmdW5jdGlvbihkKXtpZihkKXt2YXIgZT1kLnNwbGl0KGMpO2Q9ZVswXTtlPWVbMV07ZCYmZSYmKGJbZC50b0xvd2VyQ2FzZSgpXT1lKX19KX1yZXR1cm4gYn07Y2g9ZnVuY3Rpb24oYSxiKXthJiZhLnNldEF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLWNvbnRhaW5lci1pZFwiLGIpfTtkaD1mdW5jdGlvbihhKXtfLnIuY29uc29sZSYmXy5yLmNvbnNvbGUud2FybiYmXy5yLmNvbnNvbGUud2FybihhKX07ZWg9ZnVuY3Rpb24oYSxiKXtiPVljKGEsYik7aWYoMDw9Yil7dmFyIGM9YVtiXTtBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYSxiLDEpO3JldHVybiBjfXJldHVybiBudWxsfTtmaD1bXTtnaD1mdW5jdGlvbigpe3ZhciBhPWZoO2ZoPVtdO2E9Xy5GKGEpO2Zvcih2YXIgYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpe2I9Yi52YWx1ZTt0cnl7YigpfWNhdGNoKGMpe319fTtoaD1mdW5jdGlvbihhKXtmaC5wdXNoKGEpOzE9PWZoLmxlbmd0aCYmKHQuUHJvbWlzZT90LlByb21pc2UucmVzb2x2ZSgpLnRoZW4oZ2gpOndpbmRvdy5zZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlKGdoKTpzZXRUaW1lb3V0KGdoLDApKX07aWg9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFxcXChufHJ8XFxcXCkvZyxmdW5jdGlvbihiLGMpe3JldHVyblwiblwiPT1jP1wiXFxuXCI6XCJyXCI9PWM/XCJcXHJcIjpcIlxcXFxcIn0pfTtqaD1mdW5jdGlvbigpe3ZhciBhPXZvaWQgMD09PWE/d2luZG93OmE7cmV0dXJuKGE9b2coYS5sb2NhdGlvbi5ocmVmLm1hdGNoKF8ubmcpWzNdfHxudWxsKSk/Q2coYSk6bnVsbH07YmI9ZnVuY3Rpb24oYSl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBhLmdvb2dfcHZzaWQpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZ29vZ19wdnNpZFwiLHt2YWx1ZTpNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMiw1MikpfSl9Y2F0Y2goYil7fXJldHVybiBOdW1iZXIoYS5nb29nX3B2c2lkKXx8LTF9O2toPWZ1bmN0aW9uKGEpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYSYmaXNGaW5pdGUoYSkmJjA9PWElMSYmMDxhfTtsaD1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWF8fGtoKGEpfTttaD1mdW5jdGlvbihhLGIpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7Yy5pZD1hO2MudGV4dENvbnRlbnQ9YjtfLlhnKGMse2hlaWdodDpcIjI0cHhcIixcImxpbmUtaGVpZ2h0XCI6XCIyNHB4XCIsXCJ0ZXh0LWFsaWduXCI6XCJjZW50ZXJcIixcInZlcnRpY2FsLWFsaWduXCI6XCJtaWRkbGVcIixjb2xvcjpcIndoaXRlXCIsXCJiYWNrZ3JvdW5kLWNvbG9yXCI6XCJibGFja1wiLG1hcmdpbjpcIjBcIixcImZvbnQtZmFtaWx5XCI6XCJSb2JvdG9cIixcImZvbnQtc3R5bGVcIjpcIm5vcm1hbFwiLFwiZm9udC13ZWlnaHRcIjpcIjUwMFwiLFwiZm9udC1zaXplXCI6XCIxMXB4XCIsXCJsZXR0ZXItc3BhY2luZ1wiOlwiMC4wOGVtXCJ9KTtyZXR1cm4gY307dmFyIG5oPXtoZTowLGJlOjEsYWU6MiwkZDozLGtlOjQsbGU6NSxmZTo2LGNlOjd9O3ZhciBwaD1mdW5jdGlvbigpe3JldHVybiBmYShfLnIudG9wLFwiZ29vZ2xlZmNQcmVzZW50XCIpfSxxaD1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudDt0cnl7dmFyIGM9SWYoYik7dmFyIGQ9Yz96ZihLZixjKTpudWxsfWNhdGNoKGUpe2Q9bnVsbH1pZighZClyZXR1cm4gMDtpZih4KGQsNykpcmV0dXJuIDQ7aWYoYSl7aWYoXy4kYyhCKGQsMyksYSkpcmV0dXJuIDI7aWYoXy4kYyhCKGQsNCksYSkpcmV0dXJuIDN9cmV0dXJuIDF9LHJoPXZhKGZ1bmN0aW9uKCl7dmFyIGE9L1s/Jl1mYyhjb25zZW50KT89YWx3YXlzc2hvdyhbJiNdfCQpLzt0cnl7cmV0dXJuIGEudGVzdChfLnIudG9wLmxvY2F0aW9uLmhyZWYpfWNhdGNoKGIpe3JldHVybiBhLnRlc3QoXy5yLmxvY2F0aW9uLmhyZWYpfX0pLHNoPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9emcobmgpLmxlbmd0aCxlPVtdLGY9MDtmPGQ7ZisrKWVbZl09MDtyaCgpJiYoYT0hMCk7ZVswXT1hPzE6MjtkPXZvaWQgMCE9PWM/YzppYSgpO2VbNV09ZD8xOjI7ZVs0XT0yO2M9ISFfLnIuZ29vZ2xlZmN8fHBoKCk7ZVsxXT1jPzE6MjtmPXFoKGIpOzAhPWY/Yj17cWM6ZixyYzozfTooZj1fLnIudG9wLGI9e3FjOmZhKGYsXCJnb29nbGVmY0luYWN0aXZlXCIpPzQ6YiYmZmEoZixcImdvb2dsZWZjUEEtXCIrYik/MjpmYShmLFwiZ29vZ2xlZmNOUEFcIik/MzowLHJjOjJ9KTtmPWI7Yj1mLnFjO2VbZi5yY109YjtpZighZClhOnN3aXRjaChiKXtjYXNlIDI6Y2FzZSA0OmQ9ITE7YnJlYWsgYTtjYXNlIDM6ZD0hMDticmVhayBhO2Nhc2UgMTpkPWE7YnJlYWsgYTtkZWZhdWx0OmQ9KHZvaWQgMD09PWM/ITE6YykmJmF9cmV0dXJue0RlOmIscmQ6ZCx5ZDowPT1iJiZhJiZjLCRjOmUuam9pbihcIi5cIil9fSx0aD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1zaChhLGIsZCk7ZS55ZD9fLnIuc2V0VGltZW91dChmdW5jdGlvbigpe3RoKGEsYixjLGQpfSwxRTMpOmMoZSl9O3ZhciB1aD1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07Syh1aCxNKTtfLlA9ZnVuY3Rpb24oKXt0aGlzLmxhPXRoaXMubGE7dGhpcy5VPXRoaXMuVX07Xy5QLnByb3RvdHlwZS5sYT0hMTtfLlAucHJvdG90eXBlLnphPWZ1bmN0aW9uKCl7dGhpcy5sYXx8KHRoaXMubGE9ITAsdGhpcy52KCkpfTtfLndoPWZ1bmN0aW9uKGEsYil7Xy5SKGEsXy5TYyh2aCxiKSl9O18uUj1mdW5jdGlvbihhLGIpe2EubGE/YigpOihhLlV8fChhLlU9W10pLGEuVS5wdXNoKGIpKX07Xy5QLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7aWYodGhpcy5VKWZvcig7dGhpcy5VLmxlbmd0aDspdGhpcy5VLnNoaWZ0KCkoKX07dmFyIHZoPWZ1bmN0aW9uKGEpe2EmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGEuemEmJmEuemEoKX07dmFyIHhoPWZ1bmN0aW9uKGEpe3RoaXMubD0wO3RoaXMudj1hfHwxMDA7dGhpcy5qPVtdfTt4aC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMualt0aGlzLmxdO3RoaXMualt0aGlzLmxdPWE7dGhpcy5sPSh0aGlzLmwrMSkldGhpcy52O3JldHVybiBifTt4aC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe2E9eWgodGhpcyxhKTtyZXR1cm4gdGhpcy5qW2FdfTt4aC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7YT15aCh0aGlzLGEpO3RoaXMualthXT1ifTt4aC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT10aGlzLmoubGVuZ3RofTt2YXIgemg9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEuai5sZW5ndGgsYz1bXSxkPWEuai5sZW5ndGgtYS5qLmxlbmd0aDtkPGI7ZCsrKWMucHVzaChhLmdldChkKSk7cmV0dXJuIGN9LHloPWZ1bmN0aW9uKGEsYil7aWYoYj49YS5qLmxlbmd0aCl0aHJvdyBFcnJvcihcIk91dCBvZiBib3VuZHMgZXhjZXB0aW9uXCIpO3JldHVybiBhLmoubGVuZ3RoPGEudj9iOihhLmwrTnVtYmVyKGIpKSVhLnZ9O3ZhciBCaD1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmM7Xy5QLmNhbGwodGhpcyk7dmFyIGQ9dGhpczt0aGlzLm89Yzt0aGlzLmo9bmV3IHhoKDEwMCk7dGhpcy5sPVtdO3ZhciBlPWZ1bmN0aW9uKGYpe2lmKGQubyhmKSYmIWQubGEpe2Quai5hZGQoZik7Zm9yKHZhciBnPV8uRihkLmwpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKUFoKGgudmFsdWUsZil9fTtfLnYoYSxiLGUpJiZfLlIodGhpcyxmdW5jdGlvbigpe18ucWIoYSxiLGUpfSl9O18uSihCaCxfLlApO3ZhciBBaD1mdW5jdGlvbihhLGIpe3RyeXthKGIpfWNhdGNoKGMpe1widW5kZWZpbmVkXCIhPT10eXBlb2YgY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihjKX19LENoPWZ1bmN0aW9uKGEsYil7aWYoYS5sYSlyZXR1cm4gZnVuY3Rpb24oKXt9O2Zvcih2YXIgYz17fSxkPTA7ZDxhLmouai5sZW5ndGg7Yz17RmI6Yy5GYn0sZCsrKWMuRmI9YS5qLmdldChkKSxoaChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBBaChiLGUuRmIpfX0oYykpO2EubC5wdXNoKGIpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGFkKGEubCxiKX19O0JoLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dmFyIGE9dGhpcy5qO2Euai5sZW5ndGg9MDthLmw9MDt0aGlzLmwubGVuZ3RoPTB9O3ZhciBFaDtfLkRoPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMudG9wPWE7dGhpcy5yaWdodD1iO3RoaXMuYm90dG9tPWM7dGhpcy5sZWZ0PWR9O0VoPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5EaChhLnRvcCxhLnJpZ2h0LGEuYm90dG9tLGEubGVmdCl9O18uRGgucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmNlaWwodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5jZWlsKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguY2VpbCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLkRoLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguZmxvb3IodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5mbG9vcih0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmZsb29yKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5mbG9vcih0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLkRoLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5yb3VuZCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLnJvdW5kKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTt2YXIgRmg9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5sZWZ0PWE7dGhpcy50b3A9Yjt0aGlzLndpZHRoPWM7dGhpcy5oZWlnaHQ9ZH0sR2g9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLkRoKGEudG9wLGEubGVmdCthLndpZHRoLGEudG9wK2EuaGVpZ2h0LGEubGVmdCl9LEhoPWZ1bmN0aW9uKGEsYil7dmFyIGM9TWF0aC5tYXgoYS5sZWZ0LGIubGVmdCksZD1NYXRoLm1pbihhLmxlZnQrYS53aWR0aCxiLmxlZnQrYi53aWR0aCk7aWYoYzw9ZCl7dmFyIGU9TWF0aC5tYXgoYS50b3AsYi50b3ApO2E9TWF0aC5taW4oYS50b3ArYS5oZWlnaHQsYi50b3ArYi5oZWlnaHQpO2lmKGU8PWEpcmV0dXJuIG5ldyBGaChjLGUsZC1jLGEtZSl9cmV0dXJuIG51bGx9O0ZoLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307RmgucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O0ZoLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTt2YXIgSWg9e1wiQU1QLUNBUk9VU0VMXCI6XCJhY1wiLFwiQU1QLUZYLUZMWUlORy1DQVJQRVRcIjpcImZjXCIsXCJBTVAtTElHSFRCT1hcIjpcImxiXCIsXCJBTVAtU1RJQ0tZLUFEXCI6XCJzYVwifSxKaD1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/Xy5yOmE7dmFyIGI9YS5jb250ZXh0fHxhLkFNUF9DT05URVhUX0RBVEE7aWYoIWIpdHJ5e2I9YS5wYXJlbnQuY29udGV4dHx8YS5wYXJlbnQuQU1QX0NPTlRFWFRfREFUQX1jYXRjaChjKXt9dHJ5e2lmKGImJmIucGFnZVZpZXdJZCYmYi5jYW5vbmljYWxVcmwpcmV0dXJuIGJ9Y2F0Y2goYyl7fXJldHVybiBudWxsfSxLaD1mdW5jdGlvbigpe3ZhciBhPUpoKCk7cmV0dXJuIGEmJmEubW9kZT8rYS5tb2RlLnZlcnNpb258fG51bGw6bnVsbH0sTGg9ZnVuY3Rpb24oKXt2YXIgYT1KaCgpO2lmKGEmJmEuY29udGFpbmVyKXthPWEuY29udGFpbmVyLnNwbGl0KFwiLFwiKTtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWIucHVzaChJaFthW2NdXXx8XCJ4XCIpO3JldHVybiBiLmpvaW4oKX1yZXR1cm4gbnVsbH0sTWg9ZnVuY3Rpb24oKXt2YXIgYT1KaCgpO3JldHVybiBhJiZhLmluaXRpYWxJbnRlcnNlY3Rpb259LE5oPWZ1bmN0aW9uKCl7dmFyIGE9SmgoKTt2YXIgYjtyZXR1cm4oYT1hJiYoYj1hLmluaXRpYWxMYXlvdXRSZWN0KSYmXCJudW1iZXJcIj09PXR5cGVvZiBiLnRvcCYmXCJudW1iZXJcIj09PXR5cGVvZiBiLmxlZnQmJlwibnVtYmVyXCI9PT10eXBlb2YgYi53aWR0aCYmXCJudW1iZXJcIj09PXR5cGVvZiBiLmhlaWdodD9uZXcgRmgoYi5sZWZ0LGIudG9wLGIud2lkdGgsYi5oZWlnaHQpOm51bGwpP25ldyBfLnlhKGEubGVmdCxhLnRvcCk6KGI9TWgoKSkmJl8uTWMoYi5yb290Qm91bmRzKT9uZXcgXy55YShiLnJvb3RCb3VuZHMubGVmdCtiLmJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0LGIucm9vdEJvdW5kcy50b3ArYi5ib3VuZGluZ0NsaWVudFJlY3QudG9wKTpudWxsfSxPaD1mdW5jdGlvbihhKXtyZXR1cm4oYT1hfHxKaCgpKT9xZyhhLm1hc3Rlcik/YS5tYXN0ZXI6bnVsbDpudWxsfSxRaD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmFtcEluYWJveElmcmFtZXM9YS5hbXBJbmFib3hJZnJhbWVzfHxbXSxmPWZ1bmN0aW9uKCl7fSxnPWZ1bmN0aW9uKGspe2lmKGEuYW1wSW5hYm94SW5pdGlhbGl6ZWQpZigpO2Vsc2V7dmFyIGwsbT1cImFtcC1pbmktbG9hZFwiPT09ay5kYXRhO2EuYW1wSW5hYm94UGVuZGluZ01lc3NhZ2VzJiYhbSYmKGw9L15hbXAtKFxcZHsxNSwyMH0pPy8uZXhlYyhrLmRhdGEpKSYmKGEuYW1wSW5hYm94UGVuZGluZ01lc3NhZ2VzLnB1c2goayksUGgoYSxsWzFdKSl9fSxoPWZ1bmN0aW9uKCl7fTtiJiYoZS5wdXNoKGIpLGg9ZnVuY3Rpb24oKXthLkFNUCYmYS5BTVAuaW5hYm94VW5yZWdpc3RlcklmcmFtZSYmYS5BTVAuaW5hYm94VW5yZWdpc3RlcklmcmFtZShiKTthZChlLGIpO2YoKX0pO2lmKGEuYW1wSW5hYm94SW5pdGlhbGl6ZWQpcmV0dXJuIGg7YS5hbXBJbmFib3hQZW5kaW5nTWVzc2FnZXM9YS5hbXBJbmFib3hQZW5kaW5nTWVzc2FnZXN8fFtdO2MmJi9eXFxkezE1LDIwfSQvLnRlc3QoYykmJlBoKGEsYyk7ZD9mPUNoKGQsZyk6ZS5nb29nbGVfYW1wX2xpc3RlbmVyX2FkZGVkfHwoZS5nb29nbGVfYW1wX2xpc3RlbmVyX2FkZGVkPSEwLF8udihhLFwibWVzc2FnZVwiLGcpLGY9ZnVuY3Rpb24oKXtfLnFiKGEsXCJtZXNzYWdlXCIsZyl9KTtyZXR1cm4gaH0sUGg9ZnVuY3Rpb24oYSxiKXthLmFtcEluYWJveEluaXRpYWxpemVkfHxiJiYhL15cXGR7MTUsMjB9JC8udGVzdChiKXx8YS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjJD1cImFtcDRhZHMtaG9zdC12MC5qc1wiXScpfHx1ZyhhLmRvY3VtZW50LGI/SmEodmQoXCJodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy9ydHYvJXthbXBWZXJzaW9ufS9hbXA0YWRzLWhvc3QtdjAuanNcIikse2FtcFZlcnNpb246Yn0pOkJkKHVkKHZkKFwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvYW1wNGFkcy1ob3N0LXYwLmpzXCIpKSkpfSxSaD0hIUpoKCkmJl8uciE9Xy5yLnRvcCxTaD1mdW5jdGlvbihhKXthPUpoKGEpO2lmKCFhfHwhXy5NYyhhLmRhdGEpfHxcInN0cmluZ1wiIT09dHlwZW9mIGEuZGF0YS50eXBlKXJldHVybiBudWxsO2E9YS5kYXRhLnR5cGUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImRvdWJsZWNsaWNrXCI9PWF8fFwiYWRzZW5zZVwiPT1hP251bGw6YX07dmFyIFZoLFVoO18uVGg9ZnVuY3Rpb24oYSxiKXthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0c3x8KGEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzPVtdKTt2YXIgYz1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7Yy5zcmM9YjthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cy5wdXNoKGMpfTtWaD1mdW5jdGlvbihhLGIpe3ZhciBjPVwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD1cIitiO18uSmIoYSxmdW5jdGlvbihkLGUpe2QmJihjKz1cIiZcIitlK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChkKSl9KTtVaChjKX07VWg9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93O2IuZmV0Y2g/Yi5mZXRjaChhLHtrZWVwYWxpdmU6ITAsY3JlZGVudGlhbHM6XCJpbmNsdWRlXCIscmVkaXJlY3Q6XCJmb2xsb3dcIixtZXRob2Q6XCJnZXRcIixtb2RlOlwibm8tY29yc1wifSk6Xy5UaChiLGEpfTt2YXIgamE9e307dmFyIGxhO3ZhciBXaD1mdW5jdGlvbigpe30sWGg9ZnVuY3Rpb24oYSxiKXtrYShiKTt0aGlzLmo9YX07Xy5KKFhoLFdoKTtYaC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnRvU3RyaW5nKCl9O3ZhciBZaD1mdW5jdGlvbigpe30sWmg9ZnVuY3Rpb24oYSxiKXtrYShiKTt0aGlzLmo9YX07Xy5KKFpoLFloKTtaaC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgJGg9ZnVuY3Rpb24oKXt9LGFpPWZ1bmN0aW9uKGEsYil7a2EoYik7dGhpcy5qPWF9O18uSihhaSwkaCk7YWkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTtuZXcgWmgoXCJhYm91dDpibGFua1wiLGphKTtuZXcgWmgoXCJhYm91dDppbnZhbGlkI3pUU3pcIixqYSk7dmFyIGRpLGZpLGdpLGhpLGlpLG5pLE5iO18uY2k9ZnVuY3Rpb24oYSxiLGMpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYikoYj1fLmJpKGEsYikpJiYoYS5zdHlsZVtiXT1jKTtlbHNlIGZvcih2YXIgZCBpbiBiKXtjPWE7dmFyIGU9YltkXSxmPV8uYmkoYyxkKTtmJiYoYy5zdHlsZVtmXT1lKX19O2RpPXt9O18uYmk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1kaVtiXTtpZighYyl7dmFyIGQ9Xy5rZShiKTtjPWQ7dm9pZCAwPT09YS5zdHlsZVtkXSYmKGQ9KHllP1wiV2Via2l0XCI6eGU/XCJNb3pcIjpfLnVlP1wibXNcIjp0ZT9cIk9cIjpudWxsKStsZShkKSx2b2lkIDAhPT1hLnN0eWxlW2RdJiYoYz1kKSk7ZGlbYl09Y31yZXR1cm4gY307Xy5laT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uVmYoYSk7cmV0dXJuIGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGE9Yy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpP2FbYl18fGEuZ2V0UHJvcGVydHlWYWx1ZShiKXx8XCJcIjpcIlwifTtmaT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmVpKGEsYil8fChhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZVtiXTpudWxsKXx8YS5zdHlsZSYmYS5zdHlsZVtiXX07Z2k9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGIpe3JldHVybntsZWZ0OjAsdG9wOjAscmlnaHQ6MCxib3R0b206MH19fTtoaT1mdW5jdGlvbihhKXtpZihfLnVlJiYhKDg8PU51bWJlcihPZSkpKXJldHVybiBhLm9mZnNldFBhcmVudDt2YXIgYj1fLlZmKGEpLGM9ZmkoYSxcInBvc2l0aW9uXCIpLGQ9XCJmaXhlZFwiPT1jfHxcImFic29sdXRlXCI9PWM7Zm9yKGE9YS5wYXJlbnROb2RlO2EmJmEhPWI7YT1hLnBhcmVudE5vZGUpaWYoMTE9PWEubm9kZVR5cGUmJmEuaG9zdCYmKGE9YS5ob3N0KSxjPWZpKGEsXCJwb3NpdGlvblwiKSxkPWQmJlwic3RhdGljXCI9PWMmJmEhPWIuZG9jdW1lbnRFbGVtZW50JiZhIT1iLmJvZHksIWQmJihhLnNjcm9sbFdpZHRoPmEuY2xpZW50V2lkdGh8fGEuc2Nyb2xsSGVpZ2h0PmEuY2xpZW50SGVpZ2h0fHxcImZpeGVkXCI9PWN8fFwiYWJzb2x1dGVcIj09Y3x8XCJyZWxhdGl2ZVwiPT1jKSlyZXR1cm4gYTtyZXR1cm4gbnVsbH07aWk9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5WZihhKSxjPW5ldyBfLnlhKDAsMCk7dmFyIGQ9Yj9fLlZmKGIpOmRvY3VtZW50O2Q9IV8udWV8fDk8PU51bWJlcihPZSl8fF8uWmYoV2YoZCkuaik/ZC5kb2N1bWVudEVsZW1lbnQ6ZC5ib2R5O2lmKGE9PWQpcmV0dXJuIGM7YT1naShhKTtkPVdmKGIpLmo7Yj1hZyhkKTtkPWJnKGQpO2I9Xy51ZSYmTGUoXCIxMFwiKSYmZC5wYWdlWU9mZnNldCE9Yi5zY3JvbGxUb3A/bmV3IF8ueWEoYi5zY3JvbGxMZWZ0LGIuc2Nyb2xsVG9wKTpuZXcgXy55YShkLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQsZC5wYWdlWU9mZnNldHx8Yi5zY3JvbGxUb3ApO2MueD1hLmxlZnQrYi54O2MueT1hLnRvcCtiLnk7cmV0dXJuIGN9O18uamk9ZnVuY3Rpb24oYSl7YT1naShhKTtyZXR1cm4gbmV3IF8ueWEoYS5sZWZ0LGEudG9wKX07Xy5raT1mdW5jdGlvbihhLGIpe1wibnVtYmVyXCI9PXR5cGVvZiBhJiYoYT0oYj9NYXRoLnJvdW5kKGEpOmEpK1wicHhcIik7cmV0dXJuIGF9O18ubGk9ZnVuY3Rpb24oYSxiKXtpZihcIm5vbmVcIiE9ZmkoYixcImRpc3BsYXlcIikpcmV0dXJuIGEoYik7dmFyIGM9Yi5zdHlsZSxkPWMuZGlzcGxheSxlPWMudmlzaWJpbGl0eSxmPWMucG9zaXRpb247Yy52aXNpYmlsaXR5PVwiaGlkZGVuXCI7Yy5wb3NpdGlvbj1cImFic29sdXRlXCI7Yy5kaXNwbGF5PVwiaW5saW5lXCI7YT1hKGIpO2MuZGlzcGxheT1kO2MucG9zaXRpb249ZjtjLnZpc2liaWxpdHk9ZTtyZXR1cm4gYX07Xy5taT1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQsZD15ZSYmIWImJiFjO3JldHVybih2b2lkIDA9PT1ifHxkKSYmYS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/KGE9Z2koYSksbmV3IF8uVGYoYS5yaWdodC1hLmxlZnQsYS5ib3R0b20tYS50b3ApKTpuZXcgXy5UZihiLGMpfTtuaT1mdW5jdGlvbihhKXtpZighYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpcmV0dXJuIG51bGw7YT1fLmxpKGdpLGEpO3JldHVybiBuZXcgXy5UZihhLnJpZ2h0LWEubGVmdCxhLmJvdHRvbS1hLnRvcCl9O05iPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5kaXNwbGF5PWI/XCJcIjpcIm5vbmVcIn07dmFyIHBpPWZ1bmN0aW9uKCl7dmFyIGE9b2koKTtcImdvb2dsZV9vbmxvYWRfZmlyZWRcImluIGF8fChhLmdvb2dsZV9vbmxvYWRfZmlyZWQ9ITEsXy52KGEsXCJsb2FkXCIsZnVuY3Rpb24oKXthLmdvb2dsZV9vbmxvYWRfZmlyZWQ9ITB9KSl9LHFpPWZ1bmN0aW9uKCl7dmFyIGE9dm9pZCAwPT09YT9FZjphO3RyeXtyZXR1cm4gYS5oaXN0b3J5Lmxlbmd0aH1jYXRjaChiKXtyZXR1cm4gMH19LHJpPWZ1bmN0aW9uKGEpe2E9T2goSmgoYSkpfHxhO2E9YS5nb29nbGVfdW5pcXVlX2lkO3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYT9hOjB9LHNpPSEhd2luZG93Lmdvb2dsZV9hc3luY19pZnJhbWVfaWQsdGk9c2kmJndpbmRvdy5wYXJlbnR8fHdpbmRvdyxvaT1mdW5jdGlvbigpe2lmKHNpJiYhcWcodGkpKXt2YXIgYT1cIi5cIitEZi5kb21haW47dHJ5e2Zvcig7MjxhLnNwbGl0KFwiLlwiKS5sZW5ndGgmJiFxZyh0aSk7KURmLmRvbWFpbj1hPWEuc3Vic3RyKGEuaW5kZXhPZihcIi5cIikrMSksdGk9d2luZG93LnBhcmVudH1jYXRjaChiKXt9cWcodGkpfHwodGk9d2luZG93KX1yZXR1cm4gdGl9LHVpPWZ1bmN0aW9uKCl7dmFyIGEsYj13aW5kb3cuQWN0aXZlWE9iamVjdDtpZihuYXZpZ2F0b3IucGx1Z2lucyYmbmF2aWdhdG9yLm1pbWVUeXBlcy5sZW5ndGgpe2lmKChhPW5hdmlnYXRvci5wbHVnaW5zW1wiU2hvY2t3YXZlIEZsYXNoXCJdKSYmYS5kZXNjcmlwdGlvbilyZXR1cm4gYS5kZXNjcmlwdGlvbi5yZXBsYWNlKC8oW2EtekEtWl18XFxzKSsvLFwiXCIpLnJlcGxhY2UoLyhcXHMpK3IvLFwiLlwiKX1lbHNle2lmKG5hdmlnYXRvci51c2VyQWdlbnQmJjA8PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIldpbmRvd3MgQ0VcIikpe3ZhciBjPTM7Zm9yKGE9MTthOyl0cnl7YT1uZXcgYihcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLlwiKyhjKzEpKSxjKyt9Y2F0Y2goZCl7YT1udWxsfXJldHVybiBjLnRvU3RyaW5nKCl9aWYoWmQoKSl7YT1udWxsO3RyeXthPW5ldyBiKFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guN1wiKX1jYXRjaChkKXtjPTA7dHJ5e2E9bmV3IGIoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC42XCIpLGM9NixhLkFsbG93U2NyaXB0QWNjZXNzPVwiYWx3YXlzXCJ9Y2F0Y2goZSl7aWYoNj09PWMpcmV0dXJuIGMudG9TdHJpbmcoKX10cnl7YT1uZXcgYihcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoXCIpfWNhdGNoKGUpe319aWYoYSlyZXR1cm4gYz1hLkdldFZhcmlhYmxlKFwiJHZlcnNpb25cIikuc3BsaXQoXCIgXCIpWzFdLGMucmVwbGFjZSgvLC9nLFwiLlwiKX19cmV0dXJuXCIwXCJ9O3ZhciB2aT1mdW5jdGlvbihhKXtyZXR1cm5cIkNTUzFDb21wYXRcIj09YS5jb21wYXRNb2RlP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keX0sd2k9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/Xy5yOmI7YT1hLnNjcm9sbGluZ0VsZW1lbnR8fHZpKGEpO3JldHVybiBuZXcgXy55YShiLnBhZ2VYT2Zmc2V0fHxhLnNjcm9sbExlZnQsYi5wYWdlWU9mZnNldHx8YS5zY3JvbGxUb3ApfSxzYT1mdW5jdGlvbihhKXt0cnl7cmV0dXJuISghYXx8IShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkpfWNhdGNoKGIpe3JldHVybiExfX07dmFyIHhpPWZ1bmN0aW9uKGEsYixjKXthJiZudWxsIT09YiYmYiE9Yi50b3AmJihiPWIudG9wKTt0cnl7cmV0dXJuKHZvaWQgMD09PWM/MDpjKT8obmV3IF8uVGYoYi5pbm5lcldpZHRoLGIuaW5uZXJIZWlnaHQpKS5yb3VuZCgpOl8uJGYoYnx8d2luZG93KS5yb3VuZCgpfWNhdGNoKGQpe3JldHVybiBuZXcgXy5UZigtMTIyNDU5MzMsLTEyMjQ1OTMzKX19O3ZhciB5aT1mdW5jdGlvbihhKXtyZXR1cm4hIWEmJmEudG9wPT1hfSx6aT1mdW5jdGlvbihhLGIsYyxkKXtjPWN8fGEuZ29vZ2xlX2FkX3dpZHRoO2Q9ZHx8YS5nb29nbGVfYWRfaGVpZ2h0O2lmKHlpKGEpKXJldHVybiExO3ZhciBlPWIuZG9jdW1lbnRFbGVtZW50O2lmKGMmJmQpe3ZhciBmPTEsZz0xO2EuaW5uZXJIZWlnaHQ/KGY9YS5pbm5lcldpZHRoLGc9YS5pbm5lckhlaWdodCk6ZSYmZS5jbGllbnRIZWlnaHQ/KGY9ZS5jbGllbnRXaWR0aCxnPWUuY2xpZW50SGVpZ2h0KTpiLmJvZHkmJihmPWIuYm9keS5jbGllbnRXaWR0aCxnPWIuYm9keS5jbGllbnRIZWlnaHQpO2lmKGc+MipkfHxmPjIqYylyZXR1cm4hMX1yZXR1cm4hMH0sQWk9ZnVuY3Rpb24oKXt2YXIgYT1vaSgpO2lmKGE9PWEudG9wKXJldHVybiAwO2Zvcig7YSYmYSE9YS50b3AmJnFnKGEpO2E9YS5wYXJlbnQpe2lmKGEuc2ZfKXJldHVybiAyO2lmKGEuJHNmKXJldHVybiAzO2lmKGEuaW5HcHRJRilyZXR1cm4gNDtpZihhLmluRGFwSUYpcmV0dXJuIDV9cmV0dXJuIDF9O3ZhciBCaT1bL15odHRwcz86XFwvXFwvKHNlY3VyZSk/cHViYWRzXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvKGdvb2dsZWFkc3xhZHgpXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvKD8hYWR4KWFkLipcXC5kb3VibGVjbGlja1xcLm5ldCg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcLyh0cGN8cGFnZWFkMilcXC5nb29nbGVzeW5kaWNhdGlvblxcLmNvbSg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcL3d3d1xcLmdvb2dsZXRhZ3NlcnZpY2VzXFwuY29tKDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvYWRzZXJ2aWNlXFwuZ29vZ2xlXFwuKGNvbT9cXC4pP1thLXpdezIsM30oOlxcZCspPygkfFxcLykvaV0sQ2k9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uWGMoQmksZnVuY3Rpb24oYil7cmV0dXJuIGIudGVzdChhKX0pfSxEaT1mdW5jdGlvbihhKXtpZihhPS9bLVxcd10rXFwuWy1cXHddKyQvLmV4ZWMoYSkpe2E9YVswXS50b0xvd2VyQ2FzZSgpO2Zvcih2YXIgYj0wLGM9MDtjPGEubGVuZ3RoOysrYyliPTMxKmIrYS5jaGFyQ29kZUF0KGMpPj4+MDtzd2l0Y2goYil7Y2FzZSAxOTY3MjYxMzY0OnJldHVybiAwO2Nhc2UgMzE0NzQ5MzU0NjpyZXR1cm4gMTtjYXNlIDE1NjczNDY0NjE6cmV0dXJuIDI7Y2FzZSAyMTgzMDQxODM4OnJldHVybiAzO2Nhc2UgNzYzMjM2Mjc5OnJldHVybiA0O2Nhc2UgMTM0MjI3OTgwMTpyZXR1cm4gNTtjYXNlIDUyNjgzMTc2OTpyZXR1cm4gNjtjYXNlIDM1MjgwNjAwMjpyZXR1cm4gNztjYXNlIDI3NTUwNDg5MjU6cmV0dXJuIDg7Y2FzZSAzMzA2ODQ4NDA3OnJldHVybiA5O2Nhc2UgMjIwNzAwMDkyMDpyZXR1cm4gMTA7Y2FzZSA0ODQwMzcwNDA6cmV0dXJuIDExO2Nhc2UgMzUwNjg3MTA1NTpyZXR1cm4gMTI7Y2FzZSA2NzIxNDM4NDg6cmV0dXJuIDEzO2Nhc2UgMjUyODc1MTIyNjpyZXR1cm4gMTQ7Y2FzZSAyNzQ0ODU0NzY4OnJldHVybiAxNTtjYXNlIDM3MDMyNzg2NjU6cmV0dXJuIDE2O2Nhc2UgMjAxNDc0OTE3MzpyZXR1cm4gMTc7Y2FzZSAxMzMwNjM4MjQ6cmV0dXJuIDE4O2Nhc2UgMjc0OTMzNDYwMjpyZXR1cm4gMTk7Y2FzZSAzMTMxMjM5ODQ1OnJldHVybiAyMDtjYXNlIDIwNzQwODY3NjM6cmV0dXJuIDIxO2Nhc2UgNzk1NzcyNDkzOnJldHVybiAyMjtjYXNlIDI5MDg1NzgxOTpyZXR1cm4gMjM7Y2FzZSAzMDM1OTQ3NjA2OnJldHVybiAyNDtjYXNlIDI5ODMxMzgwMDM6cmV0dXJuIDI1O2Nhc2UgMjE5NzEzODY3NjpyZXR1cm4gMjY7Y2FzZSA0MjE2MDE2MTY1OnJldHVybiAyNztjYXNlIDIzOTgwMzUyNDpyZXR1cm4gMjg7Y2FzZSA5NzU5OTM1Nzk6cmV0dXJuIDI5O2Nhc2UgMTc5NDk0MDMzOTpyZXR1cm4gMzA7Y2FzZSAxMzE0NDI5MTg2OnJldHVybiAzMTtjYXNlIDE2NDM2MTg5Mzc6cmV0dXJuIDMyO2Nhc2UgNDk3MTU5OTgyOnJldHVybiAzMztjYXNlIDM4ODIyMzk2NjE6cmV0dXJuIDM0fX1yZXR1cm4tMX0sRWk9ZnVuY3Rpb24oYSl7aWYoIWEubGVuZ3RoKXJldHVybiAwO2Zvcih2YXIgYj1bXSxjPTA7MzQ+PWM7YysrKWJbY109MDtmb3IoYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKXt2YXIgZD1EaShhW2NdKTswPD1kJiYoYlszNC1kXT0xKX1yZXR1cm4gcGFyc2VJbnQoYi5qb2luKFwiXCIpLDIpfTt2YXIgRmk9ZnVuY3Rpb24oYSxiKXt2YXIgYz12b2lkIDA9PT1jP3t9OmM7dGhpcy5lcnJvcj1hO3RoaXMuY29udGV4dD1iLmNvbnRleHQ7dGhpcy5tc2c9Yi5tZXNzYWdlfHxcIlwiO3RoaXMuaWQ9Yi5pZHx8XCJqc2Vycm9yXCI7dGhpcy5tZXRhPWN9O3ZhciBIaT1mdW5jdGlvbihhKXthPSh0aGlzLmw9YXx8Xy5yKXx8Xy5yO3RoaXMudj1hLnRvcD09YT8xOnFnKGEudG9wKT8yOjM7MyE9dGhpcy52JiZEYXRlLnBhcnNlKF8uci50b3AuZG9jdW1lbnQubGFzdE1vZGlmaWVkKTt2YXIgYj10aGlzLmwsYz1ifHxfLnI7YT1bXTt2YXIgZD1udWxsO2Rve3ZhciBlPWM7aWYocWcoZSkpe3ZhciBmPWUubG9jYXRpb24uaHJlZjtkPWUuZG9jdW1lbnQmJmUuZG9jdW1lbnQucmVmZXJyZXJ8fG51bGx9ZWxzZSBmPWQsZD1udWxsO2EucHVzaChuZXcgR2koZnx8XCJcIixlKSk7dHJ5e2M9ZS5wYXJlbnR9Y2F0Y2goZyl7Yz1udWxsfX13aGlsZShjJiZlIT1jKTtlPTA7Zm9yKGM9YS5sZW5ndGgtMTtlPD1jOysrZSlhW2VdLmRlcHRoPWMtZTtlPWJ8fF8ucjtpZihlLmxvY2F0aW9uJiZlLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucyYmZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMubGVuZ3RoPT1hLmxlbmd0aC0xKWZvcihiPTE7YjxhLmxlbmd0aDsrK2IpYz1hW2JdLGMudXJsfHwoYy51cmw9ZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnNbYi0xXXx8XCJcIixjLmVkPSEwKTt0aGlzLmo9YX0sSmk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sLmRvY3VtZW50JiZhLmwuZG9jdW1lbnQuc2NyaXB0cz9hLmwuZG9jdW1lbnQuc2NyaXB0czpbXTtpZighYilyZXR1cm4gMDtmb3IodmFyIGM9W10sZD1iLmxlbmd0aC0xOzA8PWQmJjI2PmMubGVuZ3RoOyliW2RdLnNyYyYmYy51bnNoaWZ0KGJbZF0uc3JjKSxkLS07cmV0dXJuIElpKGEsYyl9LElpPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD0oYT1hLmpbTWF0aC5tYXgoYS5qLmxlbmd0aC0xLDApXS51cmx8fG51bGwpJiZvZyhhLm1hdGNoKF8ubmcpWzNdfHxudWxsKSxlPU1hdGgubWluKGIubGVuZ3RoLDI2KSxmPTA7ZjxlO2YrKylhPW51bGwhPWJbZl0mJm9nKGJbZl0ubWF0Y2goXy5uZylbM118fG51bGwpfHxcIlwiLGMqPTQsYSYmKGQmJmE9PWQ/Yys9MzpDaShiW2ZdKT9jKz0yOmEmJjA8PURpKGEpJiYoYys9MSkpO3JldHVybiBjfSxLaT1mdW5jdGlvbihhKXthPWEubC5kb2N1bWVudCYmYS5sLmRvY3VtZW50LnNjcmlwdHM/YS5sLmRvY3VtZW50LnNjcmlwdHM6W107aWYoIWEpcmV0dXJuIDA7Zm9yKHZhciBiPVtdLGM9YS5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YVtjXTtkJiZudWxsIT1kLnNyYyYmYi5wdXNoKG9nKGQuc3JjLm1hdGNoKF8ubmcpWzNdfHxudWxsKSl9cmV0dXJuIEVpKGIpfSxHaT1mdW5jdGlvbihhLGIpe3RoaXMudXJsPWE7dGhpcy5MPWI7dGhpcy5lZD0hMTt0aGlzLmRlcHRoPW51bGx9O3ZhciBMaT1udWxsLE1pPWZ1bmN0aW9uKCl7aWYobnVsbD09PUxpKXtMaT1cIlwiO3RyeXt2YXIgYT1cIlwiO3RyeXthPV8uci50b3AubG9jYXRpb24uaGFzaH1jYXRjaChjKXthPV8uci5sb2NhdGlvbi5oYXNofWlmKGEpe3ZhciBiPWEubWF0Y2goL1xcYmRlaWQ9KFtcXGQsXSspLyk7TGk9Yj9iWzFdOlwiXCJ9fWNhdGNoKGMpe319cmV0dXJuIExpfTt2YXIgUGk7Xy5OaT1mdW5jdGlvbigpe3ZhciBhPV8uci5wZXJmb3JtYW5jZTtyZXR1cm4gYSYmYS5ub3cmJmEudGltaW5nP01hdGguZmxvb3IoYS5ub3coKSthLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpOlRjKCl9O18uT2k9ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP18ucjphO3JldHVybihhPWEucGVyZm9ybWFuY2UpJiZhLm5vdz9hLm5vdygpOm51bGx9O1BpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uci5wZXJmb3JtYW5jZTtyZXR1cm4gYiYmYi50aW1pbmcmJmIudGltaW5nW2FdfHwwfTt2YXIgUWk9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmxhYmVsPWE7dGhpcy50eXBlPWI7dGhpcy52YWx1ZT1jO3RoaXMuZHVyYXRpb249dm9pZCAwPT09ZD8wOmQ7dGhpcy51bmlxdWVJZD1NYXRoLnJhbmRvbSgpO3RoaXMuc2xvdElkPWV9O3ZhciBSaT1fLnIucGVyZm9ybWFuY2UsU2k9ISEoUmkmJlJpLm1hcmsmJlJpLm1lYXN1cmUmJlJpLmNsZWFyTWFya3MpLFRpPXZhKGZ1bmN0aW9uKCl7dmFyIGE7aWYoYT1TaSlhPU1pKCksYT0hIWEuaW5kZXhPZiYmMDw9YS5pbmRleE9mKFwiMTMzN1wiKTtyZXR1cm4gYX0pLFVpPWZ1bmN0aW9uKGEsYil7dGhpcy5ldmVudHM9W107dGhpcy5sPWJ8fF8ucjt2YXIgYz1udWxsO2ImJihiLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWU9Yi5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXSx0aGlzLmV2ZW50cz1iLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWUsYz1iLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyk7dGhpcy5qPVRpKCl8fChudWxsIT1jP2M6TWF0aC5yYW5kb20oKTxhKX0sVmk9ZnVuY3Rpb24oYSl7YSYmUmkmJlRpKCkmJihSaS5jbGVhck1hcmtzKFwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfc3RhcnRcIiksUmkuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX2VuZFwiKSl9LFdpPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthLmomJihiPW5ldyBRaShiLGMsZCx2b2lkIDA9PT1lPzA6ZSxmKSwhYS5qfHwyMDQ4PGEuZXZlbnRzLmxlbmd0aHx8YS5ldmVudHMucHVzaChiKSl9O1VpLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmopcmV0dXJuIG51bGw7dmFyIGM9Xy5PaSgpfHxfLk5pKCk7YT1uZXcgUWkoYSxiLGMpO2I9XCJnb29nX1wiK2EubGFiZWwrXCJfXCIrYS51bmlxdWVJZCtcIl9zdGFydFwiO1JpJiZUaSgpJiZSaS5tYXJrKGIpO3JldHVybiBhfTt2YXIgWGk9ZnVuY3Rpb24oYSxiKXtpZihhLmomJlwibnVtYmVyXCI9PT10eXBlb2YgYi52YWx1ZSl7dmFyIGM9Xy5PaSgpfHxfLk5pKCk7Yi5kdXJhdGlvbj1jLWIudmFsdWU7Yz1cImdvb2dfXCIrYi5sYWJlbCtcIl9cIitiLnVuaXF1ZUlkK1wiX2VuZFwiO1JpJiZUaSgpJiZSaS5tYXJrKGMpOyFhLmp8fDIwNDg8YS5ldmVudHMubGVuZ3RofHxhLmV2ZW50cy5wdXNoKGIpfX0sWWk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uT2koKTtkJiZXaShhLGIsOSxkLDAsYyl9O3ZhciBZYj1mdW5jdGlvbihhLGIpe3RyeXstMT09YS5pbmRleE9mKGIpJiYoYT1iK1wiXFxuXCIrYSk7Zm9yKHZhciBjO2EhPWM7KWM9YSxhPWEucmVwbGFjZSgvKChodHRwcz86XFwvLi4qXFwvKVteXFwvOl0qOlxcZCsoPzoufFxcbikqKVxcMi8sXCIkMVwiKTtyZXR1cm4gYS5yZXBsYWNlKC9cXG4gKi9nLFwiXFxuXCIpfWNhdGNoKGQpe3JldHVybiBifX07dmFyIFppPUlnKCk7dmFyICRpPWZ1bmN0aW9uKGEpe3RoaXMubWV0aG9kTmFtZT1hfSxhaj1uZXcgJGkoMSksYmo9bmV3ICRpKDE1KSxjaj1uZXcgJGkoMiksZGo9bmV3ICRpKDMpLGVqPW5ldyAkaSg1KSxmaj1uZXcgJGkoNiksZ2o9bmV3ICRpKDcpLGhqPW5ldyAkaSg4KSxpaj1uZXcgJGkoMTQpLGpqPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYlthLm1ldGhvZE5hbWVdfHxjfHxmdW5jdGlvbigpe319O3ZhciBraj1mdW5jdGlvbigpe3RoaXMubD1mdW5jdGlvbigpe307dGhpcy52PWZ1bmN0aW9uKCl7cmV0dXJuW119O3RoaXMuaj1mdW5jdGlvbigpe3JldHVybltdfX0sbGo9ZnVuY3Rpb24oYSxiLGMpe2EubD1qaihhaixiLGZ1bmN0aW9uKCl7fSk7YS52PWZ1bmN0aW9uKGQpe3JldHVybiBqaihjaixiLGZ1bmN0aW9uKCl7cmV0dXJuW119KShkLGMpfTthLmo9ZnVuY3Rpb24oKXtyZXR1cm4gamooZGosYixmdW5jdGlvbigpe3JldHVybltdfSkoYyl9fTtJYyhraik7dmFyIG1qPWZ1bmN0aW9uKGEpe2tqLkIoKS5sKGEpfSxuaj1mdW5jdGlvbihhKXtyZXR1cm4ga2ouQigpLnYoYSl9O3ZhciBvaj1mdW5jdGlvbigpe3RoaXMubD1mdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iPyExOmJ9O3RoaXMudj1mdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iPzA6Yn07dGhpcy5vPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/XCJcIjpifTt0aGlzLm09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj12b2lkIDA9PT1iP1tdOmJ9O3RoaXMuaj1mdW5jdGlvbigpe319LHBqPWZ1bmN0aW9uKGEsYixjKXthLmw9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooZWosYikoZCxlLGMpfTthLnY9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooZmosYikoZCxlLGMpfTthLm89ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooZ2osYikoZCxlLGMpfTthLm09ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooaGosYikoZCxlLGMpfTthLmo9ZnVuY3Rpb24oKXtqaihiaixiKShjKX19LHFqO0ljKG9qKTtfLnk9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj8hMTpiO3JldHVybiBvai5CKCkubChhLGIpfTtfLnJhPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPzA6YjtyZXR1cm4gb2ouQigpLnYoYSxiKX07cWo9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9cIlwiOmI7cmV0dXJuIG9qLkIoKS5vKGEsYil9O18ucmo9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9bXTpiO3JldHVybiBvai5CKCkubShhLGIpfTt2YXIgc2o9e30sdGo9KHNqLmNvbXBhbmlvbl9hZHM9XCJjb21wYW5pb25BZHNcIixzai5jb250ZW50PVwiY29udGVudFwiLHNqLnB1Ymxpc2hlcl9hZHM9XCJwdWJhZHNcIixzaiksdWo9ZnVuY3Rpb24oYSl7cmV0dXJuIGErJ0NvcnJlbGF0b3IgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHNlZSB0aGUgR29vZ2xlIEFkIE1hbmFnZXIgaGVscCBwYWdlIG9uIFwiUGFnZXZpZXdzIGluIEdQVFwiIGZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9hZG1hbmFnZXIvYW5zd2VyLzE4MzI4MT9obD1lbid9O3ZhciBYYj1mdW5jdGlvbigpe3JldHVybiBfLnIuZ29vZ2xldGFnfHwoXy5yLmdvb2dsZXRhZz17fSl9LFdiPWZ1bmN0aW9uKGEsYil7dmFyIGM9WGIoKTtjLmhhc093blByb3BlcnR5KGEpfHwoY1thXT1iKX0sdmo9ZnVuY3Rpb24oYSxiKXthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoXCJvbmxvYWRcIixiKX07dmFyIHdqPW5ldyB0Lk1hcCx4aj1uZXcgdC5NYXAseWo9ZnVuY3Rpb24oKXt9LHpqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEgaW5zdGFuY2VvZiBifHxhIGluc3RhbmNlb2YgeWomJihhPXdqLmdldChhKSxhIGluc3RhbmNlb2YgYik/YTpudWxsfSxBaj1mdW5jdGlvbihhKXtyZXR1cm4oYT10althXSk/WGIoKVthXSgpOm51bGx9O3ZhciBCaj17MjQ3OlwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXRcIiw3Oi4wMiwxMzoxNTAwLDIzOi4wMDEsMzc6LjAxLDM4Oi4wMDEsNTg6MSwxNTA6XCJcIiwyMTE6ITEsMjUzOiExLDE1MjpbXSwxNzI6bnVsbCwxOTE6XCJcIiwxOTI6XCJcIiwxOTA6XCJcIiwyNDU6e30sMTgwOm51bGwsMjQ2OltdLDIyNzp7fSwyMjY6W10sMjQ4OjAsMjI4OlwiLy93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL3B1YmNvbnNvbGUvXCIsMjUwOm51bGwsMjUyOm51bGwsMjUxOm51bGx9LEVqLEZqLEdqLEhqO0JqWzZdPUpnKHdpbmRvdyk7QmpbNDldPShuZXcgRGF0ZSkuZ2V0VGltZSgpO0JqWzM2XT1JZygpO0JqWzE0OF09Wmk7QmpbMjIxXT1JZygpO0JqWzIwNF09Xy5IZyhcIi0xXCIsLTEpO3ZhciBDaj1mdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBCail0aGlzW2FdPUJqW2FdfTtJYyhDaik7Xy5Eaj1mdW5jdGlvbihhKXtyZXR1cm4gQ2ouQigpW2FdfTtFaj1YYigpO0ZqPUNqLkIoKTtHaj1Fai5fdmFyc187Zm9yKEhqIGluIEdqKUZqW0hqXT1HaltIal07RWouX3ZhcnNfPUZqO3ZhciBKaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsSWosbnVsbCl9O0soSmosTSk7dmFyIElqPVsyXSxLaj1mdW5jdGlvbihhKXtyZXR1cm4gQihhLDEpfSxMaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMSxiKX0sTWo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDIsYnx8W10pfTt2YXIgTmo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soTmosTSk7dmFyIE9qPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKE9qLE0pO3ZhciBQaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhQaixNKTt2YXIgUWo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDMsYil9O3ZhciBTaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsUmosbnVsbCl9O0soU2osTSk7dmFyIFJqPVsyLDMsNywxNF0sVGo9ZnVuY3Rpb24oYSxiKXt3ZihhLDIsYil9LFVqPWZ1bmN0aW9uKGEpe3JldHVybiBPKGEsT2osMjUpfTt2YXIgVmo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soVmosTSk7dmFyIFdqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQoYSwxLGIpfSxYaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMixiKX0sWWo9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgVmo7cmV0dXJuIEQoYSwzLCEwKX07dmFyIFpqPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKFpqLE0pO3ZhciBiaz1mdW5jdGlvbihhKXtrZih0aGlzLGEsYWssbnVsbCl9O0soYmssTSk7dmFyIGFrPVsyXTt2YXIgZGs9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGNrLG51bGwpfTtLKGRrLE0pO3ZhciBjaz1bMyw0LDUsNiw4LDldO2RrLnByb3RvdHlwZS5nZXRBZFVuaXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcywxKX07dmFyIGVrPWZ1bmN0aW9uKGEsYil7RChhLDIsYil9O2RrLnByb3RvdHlwZS5nZXRDbGlja1VybD1mdW5jdGlvbigpe3JldHVybiBCKHRoaXMsNyl9O3ZhciBmaz1mdW5jdGlvbihhLGIpe3dmKGEsOSxiKX0sZ2s9ZnVuY3Rpb24oYSl7cmV0dXJuIG5mKGEsMTUsMCl9O3ZhciBoaz1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKSYmMj09YS5sZW5ndGg/Xy55KDM2MCk/a2goYVswXSkmJmtoKGFbMV0pOmxoKGFbMF0pJiZsaChhWzFdKTpcInN0cmluZ1wiPT09dHlwZW9mIGEmJlwiZmx1aWRcIj09YX0saWs9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJjI9PWEubGVuZ3RoJiZsaChhWzBdKSYmbGgoYVsxXSl9LGprPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpP1hqKFdqKG5ldyBWaixhWzBdKSxhWzFdKTpZaigpfSxsaz1mdW5jdGlvbihhKXt2YXIgYj1bXTtpZihrayhhKSliLnB1c2goamsoYSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoOysrYyl7dmFyIGQ9YVtjXTtrayhkKSYmYi5wdXNoKGprKGQpKTthOnt2YXIgZT1bXCJmbHVpZFwiXTtpZihLYyhkKSYmS2MoZSkmJmQubGVuZ3RoPT1lLmxlbmd0aCl7Zm9yKHZhciBmPWQubGVuZ3RoLGc9ZmQsaD0wO2g8ZjtoKyspaWYoIWcoZFtoXSxlW2hdKSl7ZD0hMTticmVhayBhfWQ9ITB9ZWxzZSBkPSExfWQmJmIucHVzaChZaigpKX1yZXR1cm4gYn0sbWs9ZnVuY3Rpb24oYSl7aWYoIWF8fCFBcnJheS5pc0FycmF5KGEpfHwyIT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXTthPWFbMV07aWYoXCJudW1iZXJcIj09PXR5cGVvZiBiJiYwPD1iKWI9TWF0aC5mbG9vcihiKTtlbHNlIGlmKG51bGwhPT1iKXJldHVybiBudWxsO2lmKFwibnVtYmVyXCI9PT10eXBlb2YgYSYmMDw9YSlhPU1hdGguZmxvb3IoYSk7ZWxzZSBpZihudWxsIT09YSlyZXR1cm4gbnVsbDtyZXR1cm4gWGooV2oobmV3IFZqLGIpLGEpfSxuaz1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9bnVsbDt2YXIgZD1hJiYoQXJyYXkuaXNBcnJheShhLmZpeGVkKXx8XCJmbHVpZFwiPT09YS5maXhlZCk7dmFyIGU9Xy55KDQxOSkmJmEmJkFycmF5LmlzQXJyYXkoYS5tYXgpO2lmKGEmJiFBcnJheS5pc0FycmF5KGEpJiYoZHx8ZSkpe2lmKGQ9bGsoYS5maXhlZCksYz1tayhhLm1heCkpYS5taW4/KChiPW1rKGEubWluKSkmJm51bGw9PT1CKGIsMSkmJldqKGIsMCksYiYmbnVsbD09PUIoYiwyKSYmWGooYiwwKSk6Yj1YaihXaihuZXcgVmosMCksMCl9ZWxzZSBkPWxrKGEpO2lmKGEmJiFBcnJheS5pc0FycmF5KGEpKXtpZihhLm1heCYmIWMpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBtYXhpbXVtIHNpemU6IFwiK0pTT04uc3RyaW5naWZ5KGEpKTtpZihhLm1pbiYmIWIpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBtYXhpbXVtIHNpemU6IFwiK0pTT04uc3RyaW5naWZ5KGEpKTt9aWYoYyl7aWYoMD09PUIoYywxKXx8MD09PUIoYywyKSl0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIHNpemUsIG1heGltdW1zIGNhbm5vdCBiZSB6ZXJvOiBcIitKU09OLnN0cmluZ2lmeShhKSk7aWYoYil7ZT1CKGIsMSk7dmFyIGY9QihjLDEpO2lmKG51bGwhPWUmJm51bGwhPWYmJmU+Zil0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIHNpemU6IG1pbmltdW0gd2lkdGggbGFyZ2VyIHRoYW4gbWF4aW11bSB3aWR0aDogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO2U9QihiLDIpO2Y9QihjLDIpO2lmKG51bGwhPWUmJm51bGwhPWYmJmU+Zil0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIHNpemU6IG1pbmltdW0gaGVpZ2h0IGxhcmdlciB0aGFuIG1heGltdW0gaGVpZ2h0OiBcIitKU09OLnN0cmluZ2lmeShhKSk7fX1kLmxlbmd0aHx8Xy55KDQxOSkmJmN8fGRoKFwiSW52YWxpZCBHUFQgZml4ZWQgc2l6ZSBzcGVjaWZpY2F0aW9uOiBcIitKU09OLnN0cmluZ2lmeShhKSk7YyYmYj8oYT1uZXcgWmosYz12ZihhLDEsYyksYj12ZihjLDIsYikpOmI9bnVsbDtyZXR1cm57WGM6ZCxIYTpifX0sa2s9ZnVuY3Rpb24oYSl7aWYoXy55KDM2MSkpcmV0dXJuIGhrKGEpO2lmKEFycmF5LmlzQXJyYXkoYSkmJjE8YS5sZW5ndGgpe3ZhciBiPVwibnVtYmVyXCI9PT10eXBlb2YgYVswXSYmXCJudW1iZXJcIj09PXR5cGVvZiBhWzFdO2E9IV8ueSgzNjApfHwwPGFbMF0mJjA8YVsxXTtyZXR1cm4gYiYmYX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGEmJlwiZmx1aWRcIj09YX07dmFyIG9rPWZ1bmN0aW9uKGEsYil7YT1fLkEoYSxcImZpbmRcIikuY2FsbChhLGZ1bmN0aW9uKGMpe2M9TyhjLFZqLDEpO3JldHVybiBCKGMsMSk8PUIoYiwxKSYmQihjLDIpPD1CKGIsMil9KTtyZXR1cm4gbnVsbD09YT9udWxsOnVmKGEsVmosMil9LHBrPWZ1bmN0aW9uKGEpe2lmKCFBcnJheS5pc0FycmF5KGEpfHwyIT1hLmxlbmd0aCl0aHJvdyBFcnJvcihcIkVhY2ggbWFwcGluZyBlbnRyeSBoYXMgdG8gYmUgYW4gYXJyYXkgb2Ygc2l6ZSAyXCIpO3ZhciBiPWFbMF07aWYoIWlrKGIpKXRocm93IEVycm9yKFwiU2l6ZSBoYXMgdG8gYmUgYW4gYXJyYXkgb2YgdHdvIG5vbi1uZWdhdGl2ZSBpbnRlZ2Vyc1wiKTtiPVhqKFdqKG5ldyBWaixiWzBdKSxiWzFdKTtpZihBcnJheS5pc0FycmF5KGFbMV0pJiYwPT1hWzFdLmxlbmd0aClhPVtdO2Vsc2UgaWYoYT1sayhhWzFdKSwwPT1hLmxlbmd0aCl0aHJvdyBFcnJvcihcIkF0IGxlYXN0IG9uZSBzbG90IHNpemUgbXVzdCBiZSBwcmVzZW50XCIpO3ZhciBjPW5ldyBiaztiPXZmKGMsMSxiKTtyZXR1cm4gd2YoYiwyLGEpfTt2YXIgcWs9ZnVuY3Rpb24oYSxiLGMpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYiYmXCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPHVmKGEsYmssNikubGVuZ3RoP29rKHVmKGEsYmssNiksWGooV2oobmV3IFZqLGIpLGMpKTp1ZihhLFZqLDUpfSx4YT1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3csYz1udWxsO2IudG9wPT1iJiYoYj14aSghMSxiKSxjPXFrKGEsYi53aWR0aCxiLmhlaWdodCkpO251bGw9PWMmJihjPXFrKGEpKTtyZXR1cm4gYy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIHgoZCwzKT9cImZsdWlkXCI6W0IoZCwxKSxCKGQsMildfSl9LFNiPWZ1bmN0aW9uKGEpe2lmKF8ueSg0MTkpJiYwPT14YShhKS5sZW5ndGgmJm51bGwhPUIoYSwxNikpcmV0dXJuXCIxeDFcIjt2YXIgYj1bXSxjPSExO2E9Xy5GKHhhKGEpKTtmb3IodmFyIGQ9YS5uZXh0KCk7IWQuZG9uZTtkPWEubmV4dCgpKWQ9ZC52YWx1ZSxBcnJheS5pc0FycmF5KGQpP2IucHVzaChkLmpvaW4oXCJ4XCIpKTpcImZsdWlkXCI9PWQ/Yz0hMDpiLnB1c2goZCk7YyYmYi51bnNoaWZ0KFwiMzIweDUwXCIpO3JldHVybiBiLmpvaW4oXCJ8XCIpfSxyaz1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGM9MCxkPVtdO2EmJihkLnB1c2goYS5nZXRBZFVuaXRQYXRoKCkpLGQucHVzaChTYihhKSksZC5wdXNoKEIoYSwyKSkpO2lmKGIpe2E9W107Zm9yKHZhciBlPTA7YiYmMjU+ZTtiPWIucGFyZW50Tm9kZSwrK2UpOT09PWIubm9kZVR5cGU/YS5wdXNoKFwiXCIpOmEucHVzaChiLmlkKTsoYj1hLmpvaW4oKSkmJmQucHVzaChiKX0wPGQubGVuZ3RoJiYoYz1DZyhkLmpvaW4oXCI6XCIpKSk7cmV0dXJuIGMudG9TdHJpbmcoKX0sc2s9ZnVuY3Rpb24oYSl7cmV0dXJuIDAhPT1hJiYxIT09YX07dmFyIHRrPWZ1bmN0aW9uKCl7dmFyIGE9Xy55KDg1KXx8Xy55KDg0KTtfLnIuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nPWF8fF8uci5nb29nbGVfbWVhc3VyZV9qc190aW1pbmc7VWkuY2FsbCh0aGlzLGE/MTowLF8ucik7dGhpcy52PTB9O18uSih0ayxVaSk7SWModGspO3ZhciB2az1mdW5jdGlvbihhLGIsYyl7aWYoQihiLDE4KSlyZXR1cm4gQihiLDE4KTthPWMuZ2V0KGEuZ2V0U2xvdElkKCkpO3JldHVybiBudWxsIT1hP3VrKGEpOm51bGx9LHdrPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBudWxsIT11ayhjKT8hMDphLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPXZrKGUsYltlLmdldFNsb3RFbGVtZW50SWQoKV0sZCl9KX0seGs9ZnVuY3Rpb24oYSl7aWYoXy55KDE2OCl8fDE1MzYwPj1hLmxlbmd0aClyZXR1cm4gYTt2YXIgYj1fLnkoMTY0KSYmLyZzdXBwb3J0aW5nX3VybHM9Ly50ZXN0KGEpLGM9YTtpZigxNTM2MDxjLmxlbmd0aCl7dmFyIGQ9Yj8tMTpjLmxhc3RJbmRleE9mKFwiJlwiLDE1MzUyKTstMSE9PWQ/Yz1jLnN1YnN0cmluZygwLGQpOihjPWMuc3Vic3RyaW5nKDAsMTUzNTIpLGM9Yy5yZXBsYWNlKC8lXFx3PyQvLFwiXCIpLGImJihjPWMucmVwbGFjZSgvJltePV0qPT8kLyxcIlwiKSkpO2MrPVwiJnRydW5jPTFcIn1iPWM7V2kodGsuQigpLCg5KS50b1N0cmluZygpLDksYS5sZW5ndGgtYi5sZW5ndGgrOCk7cmV0dXJuIGJ9LHlrPWZ1bmN0aW9uKGEpe3ZhciBiPWE7XCJhYm91dDpibGFua1wiIT1hJiYoYj1iLnJlcGxhY2UoLzwvZyxcIiUzQ1wiKS5yZXBsYWNlKC8+L2csXCIlM0VcIikucmVwbGFjZSgvXCIvZyxcIiUyMlwiKS5yZXBsYWNlKC8nL2csXCIlMjdcIiksL15odHRwcz86XFwvXFwvLy50ZXN0KGIpfHwoYj1cInVua25vd246XCIrYikpO3JldHVybiBifSx6az1mdW5jdGlvbigpe3JldHVyblwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwifSxkYj1mdW5jdGlvbihhKXt2YXIgYj1hLmRvY3VtZW50O3JldHVybiB5aShhKT9iLlVSTDpiLnJlZmVycmVyfSx1YT1mdW5jdGlvbihhKXt0cnl7dmFyIGI9d2luZG93LnRvcCxjPW5ldyBfLnlhKDAsMCksZD1fLmNnKF8uVmYoYSkpO2lmKHNlKGQsXCJwYXJlbnRcIikpe2Rve3ZhciBlPWQ9PWI/aWkoYSk6Xy5qaShhKTtjLngrPWUueDtjLnkrPWUueX13aGlsZShkJiZkIT1iJiZkIT1kLnBhcmVudCYmKGE9ZC5mcmFtZUVsZW1lbnQpJiYoZD1kLnBhcmVudCkpfXZhciBmPWN9Y2F0Y2goZyl7Zj1uZXcgXy55YSgtMTIyNDU5MzMsLTEyMjQ1OTMzKX1yZXR1cm4gZn0sQWs9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pbmRleE9mKFwiZ29vZ2xlX3ByZXZpZXc9XCIsYS5sYXN0SW5kZXhPZihcIj9cIikpLGM9YS5pbmRleE9mKFwiJlwiLGIpOy0xPT1jJiYoYz1hLmxlbmd0aC0xLC0tYik7cmV0dXJuIGEuc3Vic3RyaW5nKDAsYikrYS5zdWJzdHJpbmcoYysxLGEubGVuZ3RoKX0sQms9dmEoZnVuY3Rpb24oKXtyZXR1cm5cIlhNTEh0dHBSZXF1ZXN0XCJpbiB3aW5kb3cmJlwid2l0aENyZWRlbnRpYWxzXCJpbiBuZXcgWE1MSHR0cFJlcXVlc3R9KSxDaz12YShmdW5jdGlvbigpe3JldHVybiFfLnVlJiYhdmV9KSxEaz12YShmdW5jdGlvbigpe3JldHVybiFfLnVlJiYhdmV9KSxFaz1mdW5jdGlvbihhKXt2YXIgYj1hLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pLmxlbmd0aDtcIkVycm9yXCI9PWEuc2xpY2UoMCw1KSYmYi0tO3JldHVybiBifSxGaz12YShmdW5jdGlvbigpe3JldHVybiEhS2coXy5yLmxvY2F0aW9uLmhyZWYpfSksR2s9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zcGxpdChcIi9cIik7cmV0dXJuXCIvXCI9PWEuY2hhckF0KDApJiYyPD1iLmxlbmd0aD9iWzFdOlwiL1wiIT1hLmNoYXJBdCgwKSYmMTw9Yi5sZW5ndGg/YlswXTpcIlwifSxIaz1mdW5jdGlvbihhKXt2YXIgYj1bXTtiPWEubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBHayhjLmdldEFkVW5pdFBhdGgoKSl9KTtVYShiKTtyZXR1cm4gYn0sSWs9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/KGE9bmkoYSkpJiZhLmZsb29yKCk6bnVsbH0sSms9ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYhIUIoYSwxKX0sS2s9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9e30sZD1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYikpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXtlPWUudmFsdWU7dmFyIGY9YltlXTtmPW5ldyBmLmNvbnN0cnVjdG9yKEFmKGYuaWEpKTtjW2VdPWZ9cmV0dXJue046bmV3IGEuY29uc3RydWN0b3IoQWYoYS5pYSkpLFI6Y319LExrPXZhKGZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO2lmKHZvaWQgMCE9PWEpe3ZhciBiPW5ldyBVaW50OEFycmF5KDE2KTthLmdldFJhbmRvbVZhbHVlcyhiKX1lbHNlIGZvcihiPUFycmF5KDE2KSxhPTA7MTY+YTsrK2EpYlthXT1NYXRoLmZsb29yKDI1NSpNYXRoLnJhbmRvbSgpKTthPVwiXCI7Yj1fLkYoYik7Zm9yKHZhciBjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsMTU+PWMmJihhKz1cIjBcIiksYSs9Yy50b1N0cmluZygxNik7cmV0dXJuIGF9KSxNaz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuUjtyZXR1cm4geChiLk4sNil8fHgoY1thLmdldFNsb3RFbGVtZW50SWQoKV0sMTcpP251bGw6cGEoYSl9LE5rPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygyLDUyKSl9LE9rPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9d2kodG9wLmRvY3VtZW50LHRvcCkueSxlPWQrYi5oZWlnaHQqKGMrMSk7cmV0dXJuIGEueT49ZCYmYS55PD1lfWNhdGNoKGYpe3JldHVybiEwfX0sUGs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXBhKGEuc2xvdCxiKSxlPWQmJjI9PT1fLnJhKDM5NSkmJlwibm9uZVwiPT09ZC5zdHlsZS5kaXNwbGF5O2UmJihkLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiKTthPXphKGIsYSxjKTtlJiYoZC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTtyZXR1cm4gYX0sUWs9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7cmV0dXJuIGIubG9jYXRpb24/Yi5VUkxTZWFyY2hQYXJhbXM/KGE9Yi5VUkxTZWFyY2hQYXJhbXM/KG5ldyBiLlVSTFNlYXJjaFBhcmFtcyhiLmxvY2F0aW9uLnNlYXJjaCkpLmdldChhKTpudWxsKSYmYS5sZW5ndGg/YTpudWxsOihhPShuZXcgUmVnRXhwKFwiWz8mXVwiK2ErXCI9KFteJl0qKVwiKSkuZXhlYyhiLmxvY2F0aW9uLnNlYXJjaCkpP2RlY29kZVVSSUNvbXBvbmVudChhWzFdKTpudWxsOm51bGx9LFJrPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO3JldHVybiEhUWsoYSxiKX0sU2s9ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYobnVsbCE9QihhLDEpfHwhIXgoYSw2KSl9LFRrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gU2soYil8fDQ9PWdrKGEpfHw1PT09Z2soYSl8fGN9LFVrPWZ1bmN0aW9uKGEpe3JldHVyblwiZ29vZ2xlX2Fkc19pZnJhbWVfXCIrYS50b1N0cmluZygpfSxWaz1mdW5jdGlvbihhKXtyZXR1cm4gVWsoYSkrXCJfX2NvbnRhaW5lcl9fXCJ9LG9hPWZ1bmN0aW9uKGEsYil7Yj1wYShhLGIpO2lmKCFiKXJldHVybiBudWxsO3ZhciBjPVZrKGEuZ2V0U2xvdElkKCkpO3JldHVybiBpZyhiLGZ1bmN0aW9uKGQpe3JldHVybiBkLmlkPT09Y30pfTt2YXIgJGE9ZnVuY3Rpb24oKXtyZXR1cm5cIjIwMjAwODI3MDFcIn07V2IoXCJnZXRWZXJzaW9uXCIsJGEpO3ZhciBXaz1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iP1wiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiOmI7aWYobnVsbD09Y3x8MD5jfHwxPGMpYz1fLkRqKDIzKTt0aGlzLnY9TWF0aC5yYW5kb20oKTt0aGlzLkE9dGhpcy52PGM7dGhpcy5qPWE7dGhpcy5tPWJiKF8ucik7dGhpcy5vPWI7dGhpcy5sPXtwdnNpZDp0aGlzLm19fSxFPWZ1bmN0aW9uKGEsYixjKXtcInN0cmluZ1wiIT10eXBlb2YgYyYmKGM9U3RyaW5nKGMpKTsvXlxcdyskLy50ZXN0KGIpJiZjJiYoYS5sW2JdPWMpfSxZaz1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iP251bGw6YjtjPXZvaWQgMD09PWM/ITE6YztiPXZvaWQgMD09PWI/bnVsbDpiO2M9dm9pZCAwPT09Yz8hMTpjO2lmKEZrKCkpYj0hMDtlbHNle3ZhciBkPWEuQTtiJiYwPD1iJiYoZD0oYz9hLnY6TWF0aC5yYW5kb20oKSk8Yik7Yj1kJiYhIWEuan1iJiYoXy55KDMwNSk/VmgoYS5sLGEuaik6KGE9WGsoYSl8fFwiXCIsXy5UaCh3aW5kb3csYSkpKX0sWGs9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vK1wiL3BhZ2VhZC9nZW5fMjA0P2lkPVwiK2VuY29kZVVSSUNvbXBvbmVudChhLmopO18uSmIoYS5sLGZ1bmN0aW9uKGMsZCl7YyYmKGIrPVwiJlwiK2QrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGMpKX0pO3JldHVybiBifSxsYj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9aazpiO0UoYSxcInZyZ1wiLCRhKCkpO3ZhciBjPUhrKGIpO2MubGVuZ3RoJiYoMz49Yy5sZW5ndGg/RShhLFwibndfaWRcIixjLmpvaW4oKSk6KGM9Yy5zbGljZSgwLDMpLGMucHVzaChcIl9fZXh0cmFfX1wiKSxFKGEsXCJud19pZFwiLGMuam9pbigpKSkpO0UoYSxcIm5zbG90c1wiLGIubGVuZ3RoLnRvU3RyaW5nKCkpO2I9a2ouQigpLmooKTtiLmxlbmd0aCYmRShhLFwiZWlkXCIsYi5qb2luKCkpO0UoYSxcInB1Yl91cmxcIixkb2N1bWVudC5VUkwpfSxrYj1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP3t9OmM7dmFyIGQ9Yy54ZXx8XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tXCI7Yz1jLnZhO2lmKHZvaWQgMD09PWN8fDA+Y3x8MTxjKWM9Xy5EaigyMyk7TWF0aC5yYW5kb20oKTxjJiYoYT1uZXcgV2soYSxkKSxiKGEpLFlrKGEsMSwhMCkpfSxaaz1bXTt2YXIgJGs9Xy5EaigzOCksYWw9ZnVuY3Rpb24oYSxiKXthPXttZXRob2RJZDphfTtiLm5hbWUmJihhLm5hbWU9Yi5uYW1lKTtiLm1lc3NhZ2UmJihhLm1lc3NhZ2U9Yi5tZXNzYWdlLnN1YnN0cmluZygwLDUxMikpO2IuZmlsZU5hbWUmJihhLmZpbGVOYW1lPWIuZmlsZU5hbWUpO2IubGluZU51bWJlciYmKGEubGluZU51bWJlcj1iLmxpbmVOdW1iZXIpO2Iuc3RhY2smJihhLnN0YWNrPVliKGIuc3RhY2ssXCJcIikpO3JldHVybiBhfSxjbD1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jPyExOmM7YmwoYSxiKTtpZighYyl0aHJvdyBiO30sYmw9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz8kazpjO2lmKCFiLmlzUmVwb3J0ZWQpdHJ5e2IuaXNSZXBvcnRlZD0hMDt2YXIgZD1hbChhLGIpLGU9bmV3IFdrKFwiZ3B0X2V4Y2VwdGlvblwiKTt0cnl7bGIoZSl9Y2F0Y2goZil7fV8uSmIoZCxmdW5jdGlvbihmLGcpe3JldHVybiBFKGUsZyxmKX0pO1lrKGUsYyl9Y2F0Y2goZil7fX0sUz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEcoYSxiLGMsXy55KDE0NCkpfSxHPWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD8hMTpkO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIGY9W10sZz0wO2c8YXJndW1lbnRzLmxlbmd0aDsrK2cpZltnXT1hcmd1bWVudHNbZ107Zz0hMTt2YXIgaD1udWxsLGs9Y3x8Y2wsbD10ay5CKCk7dHJ5e3ZhciBtPV8ueSg4NSk7bSYmbCYmKGg9bC5zdGFydChhLnRvU3RyaW5nKCksMykpO3ZhciBuPWIuYXBwbHkodGhpcyxmKTtnPSEwO20mJmwmJlhpKGwsaCl9Y2F0Y2godyl7Zz9ibCgxMTAsdyk6bj1rLmNhbGwodGhpcyxhLHcpLFZpKGgpfWlmKGQmJi4xPk1hdGgucmFuZG9tKCkpdHJ5e3ZhciBxPUVycm9yKCk7a2IoXCJncHRfYXBpX3VzYWdlXCIsZnVuY3Rpb24odyl7RSh3LFwibWV0aG9kSWRcIixhKTtFKHcsXCJhcmdzXCIsZi5sZW5ndGgpO0UodyxcInN0YWNrXCIsWWIocS5zdGFjayxxLm1lc3NhZ2UpKTtsYih3KX0se3ZhOjF9KX1jYXRjaCh3KXt9cmV0dXJuIG59fSxtYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEcoYSxiLGMsITEpKCl9O3ZhciBkbD1mdW5jdGlvbihhKXt0aGlzLnB1c2g9Uyg3NixmdW5jdGlvbihiKXtyZXR1cm4gYS5wdXNoLmFwcGx5KGEsYXJndW1lbnRzKX0pfTtfLkooZGwseWopO3ZhciBlbD1mdW5jdGlvbigpe18uUC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5YPW5ldyB0Lk1hcH07Xy5KKGVsLF8uUCk7ZWwucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKTt0aGlzLlguY2xlYXIoKX07ZWwucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmlkLGQsZTtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBnKCl7dmFyIGgsaz10aGlzLGwsbSxuLHE7cmV0dXJuIERhKGcsZnVuY3Rpb24odyl7aWYoMT09dy5qKXJldHVybiBoPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIiksaC5pbml0Q3VzdG9tRXZlbnQoYywhMCwhMCxiKSxFYSh3LDAsMik7bD1udWxsIT09KGQ9ay5YLmdldChjKSkmJnZvaWQgMCE9PWQ/ZDpuZXcgdC5TZXQ7bT1fLkYobCk7Zm9yKG49bS5uZXh0KCk7IW4uZG9uZTtuPW0ubmV4dCgpKXtxPW4udmFsdWU7dHJ5e3EoaCl9Y2F0Y2godSl7XCJmdW5jdGlvblwiPT09dHlwZW9mKG51bGw9PT0oZT13aW5kb3cuY29uc29sZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuZXJyb3IpJiZjb25zb2xlLmVycm9yKHUpfX13Lmo9MH0pfSl9O3ZhciBmbD1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9bXTpiO3RoaXMubD1hO3RoaXMuaj1ifTtmbC5wcm90b3R5cGUuZ2V0TWVzc2FnZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubH07ZmwucHJvdG90eXBlLmdldE1lc3NhZ2VBcmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyIGhsPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5sPW5ldyBEYXRlO3RoaXMuQT1kJiZnbChkKTt0aGlzLm09YyYmZ2woYyk7dGhpcy5vPWE7dGhpcy52PWI7dGhpcy5qPWV9O18ucD1obC5wcm90b3R5cGU7Xy5wLmdldFNsb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5BfTtfLnAuZ2V0U2VydmljZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm19O18ucC5nZXRMZXZlbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O18ucC5nZXRUaW1lc3RhbXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTtfLnAuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZ9O18ucC5nZXRSZWZlcmVuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTtfLnAudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmwudG9UaW1lU3RyaW5nKCkrXCI6IFwiK2lsW3RoaXMub10rXCI6IFwiK3RoaXMudjt0aGlzLmomJihhKz1cIiBEdXJhdGlvbjogXCIrKHRoaXMubC5nZXRUaW1lKCktdGhpcy5qLmdldFRpbWVzdGFtcCgpLmdldFRpbWUoKSkrXCJtcy5cIik7cmV0dXJuIGF9O18ucC5nZXRTZXJ2aWNlPVMoNzYzLGhsLnByb3RvdHlwZS5nZXRTZXJ2aWNlKTt2YXIgaWw9W1wiRGVidWdcIixcIkluZm9cIixcIldhcm5pbmdcIixcIkVycm9yXCIsXCJGYXRhbFwiXTt2YXIgamw9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IHhoKDFFMyl9LGtsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpoKGEuaikuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLmdldFNsb3QoKT09PWJ9KX0sbGw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gemgoYS5qKS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMuZ2V0TGV2ZWwoKT49Yn0pfTtqbC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKGEsYixjLGQsZSl7YT1uZXcgaGwoYSxiLHZvaWQgMD09PWM/bnVsbDpjLHZvaWQgMD09PWQ/bnVsbDpkLHZvaWQgMD09PWU/bnVsbDplKTt0aGlzLmouYWRkKGEpO3JldHVybiBhfTtqbC5wcm90b3R5cGUuaW5mbz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5sb2coMSxhLGIsYyxkKX07amwucHJvdG90eXBlLko9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMubG9nKDIsYSxiLGMsZCl9O2psLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5sb2coMyxhLGIsYyxkKX07SWMoamwpO3ZhciBtbD12YShmdW5jdGlvbigpe3ZhciBhPV8ucmooNSkuaW5kZXhPZihTdHJpbmcoamgoKSkpO2E9Xy5yaig2KVthXXx8XCJcIjt2YXIgYj12b2lkIDA9PT1iP3dpbmRvdy5kb2N1bWVudDpiO2lmKGEmJmIuaGVhZCl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIik7Yy5odHRwRXF1aXY9XCJvcmlnaW4tdHJpYWxcIjtjLmNvbnRlbnQ9YTtiLmhlYWQuYXBwZW5kQ2hpbGQoYyl9fSksbmw9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9uYXZpZ2F0b3I6YjttbCgpO2I9XCJzY2hlZHVsaW5nXCJpbiBiJiZcImlzSW5wdXRQZW5kaW5nXCJpbiBiLnNjaGVkdWxpbmcmJmIuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZygpO3ZhciBjPV8ucmEoMzEpO2ImJk1hdGgucmFuZG9tKCk8YyYmc2V0VGltZW91dChmdW5jdGlvbigpe2tiKFwiZ3B0X2lucHV0X3BlbmRpbmdcIixmdW5jdGlvbihkKXtsYihkKTtFKGQsXCJjdHhcIixhKTtFKGQsXCJjb3JyXCIsYmIoXy5yKSk7dmFyIGU9RXJyb3IoXCJpbnB1dFBlbmRpbmdcIik7RShkLFwic3RhY2tcIixZYihlLnN0YWNrLGUubWVzc2FnZSkpfSx7dmE6MX0pfSwxKTtyZXR1cm4gYn07dmFyIG9sPWZ1bmN0aW9uKCl7ZWwuY2FsbCh0aGlzKX07Xy5KKG9sLGVsKTt2YXIgZ2w9ZnVuY3Rpb24oYSl7dmFyIGI9eGouZ2V0KGEpO2lmKCFiKXt2YXIgYz1iPWEuR2EoKTt3ai5zZXQoYyxhKTt4ai5zZXQoYSxjKX1yZXR1cm4gYn07dmFyIFQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoOysrZCljW2RdPWFyZ3VtZW50c1tkXTtyZXR1cm4gbmV3IGZsKGEsXy5GYihjKS5jb25jYXQoKSl9fSxwbD1mdW5jdGlvbihhKXtyZXR1cm5cIltcIithLm1hcChmdW5jdGlvbihiKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGI/XCInXCIrYitcIidcIjpBcnJheS5pc0FycmF5KGIpP3BsKGIpOlN0cmluZyhiKX0pLmpvaW4oXCIsIFwiKStcIl1cIn0scWw9ZnVuY3Rpb24oYSxiKXtiPXBsKGIpO2I9Yi5zdWJzdHJpbmcoMSxiLmxlbmd0aC0xKTtyZXR1cm4gbmV3IGZsKDk2LFthLGJdKX0scmw9VCgyKSxzbD1UKDMpLHRsPVQoNCksdWw9VCg1KSx2bD1UKDYpLHdsPVQoMTIpLHhsPVQoMTQpLHlsPVQoMTYpLHpsPVQoMTcpLEFsPVQoMTkpLEJsPVQoMjApLENsPVQoMjMpLERsPVQoMjYpLEVsPVQoMjcpLEZsPVQoMjgpLEdsPVQoMzApLEhsPVQoMzEpLElsPVQoMzQpLEpsPVQoMzUpLEtsPVQoMzYpLExsPVQoMzcpLE1sPVQoMzgpLE5sPVQoNDApLE9sPVQoNDMpLFBsPVQoNDQpLFFsPVQoNDYpLFJsPVQoNDcpLFNsPVQoNDgpLFRsPVQoNTApLFVsPVQoNTcpLFZsPVQoNTgpLFdsPVQoNTkpLFhsPVQoNjApLFlsPVQoNjEpLFpsPVQoNjIpLCRsPVQoNjMpLGFtPVQoNjQpLGJtPVQoNjYpLGNtPVQoNjgpLGRtPVQoNzApLGVtPVQoNzEpLGZtPVQoNzQpLGdtPVQoNzYpLGhtPVQoNzgpLGltPVQoNzkpLGptPVQoODApLGttPVQoODIpLGxtPVQoODQpLG1tPVQoODUpLG5tPVQoODcpLG9tPVQoODgpLHBtPVQoOTApLHFtPVQoOTIpLHJtPVQoOTMpLHNtPVQoOTQpLHRtPVQoOTUpLHVtPVQoOTkpLHZtPVQoMTAwKSx3bT1UKDEwMSkseG09VCgxMDIpLHltPVQoMTAzKSx6bT1UKDEwNCksQW09VCgxMDUpLEJtPVQoMTA2KSxDbT1UKDEwNyksRG09VCgxMDgpLEVtPVQoMTA5KSxGbT1UKDExMCksR209VCgxMTEpLEhtPVQoMTEzKSxJbT1UKDExNCksSm09VCgxMTUpLEttPVQoMTE2KSxMbT1UKDExNyksTW09VCgxMTgpLE5tPVQoMTE5KTt2YXIgT209ZnVuY3Rpb24oKXtlbC5jYWxsKHRoaXMpO3RoaXMuQT10aGlzLmo9MH07Xy5KKE9tLG9sKTtPbS5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGRsKHRoaXMpfTtPbS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9amwuQigpLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKXRyeXtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXJndW1lbnRzW2NdJiYoYXJndW1lbnRzW2NdKCksdGhpcy5qKyspfWNhdGNoKGQpe3RoaXMuQSsrLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoXCJFeGNlcHRpb24gaW4gcXVldWVkIEdQVCBjb21tYW5kXCIsZCksYi5lcnJvcihHbChTdHJpbmcoZC5tZXNzYWdlKSkpfWIuaW5mbyhIbChTdHJpbmcodGhpcy5qKSxTdHJpbmcodGhpcy5BKSkpO3JldHVybiB0aGlzLmp9O3ZhciBRbT1mdW5jdGlvbigpe09tLmNhbGwodGhpcyk7dmFyIGE9dGhpczt0aGlzLm89W107dGhpcy5DPSExO3RoaXMubT10aGlzLmw9MDt0aGlzLkQ9Ryg2MzUsZnVuY3Rpb24oKXthLmw9MDtQbShhKX0pfTtfLkooUW0sT20pO3ZhciBSbT1mdW5jdGlvbihhKXtyZXR1cm4gYS5DfHwhYS5vLmxlbmd0aD8wOl8ueSgxNzEpPzE6Xy55KDE3MCk/bmwoMSk/MTowOl8ueSgyNDcpJiZubCgxKT8yOjB9LFNtPWZ1bmN0aW9uKGEpe2EubHx8KGEubD1zZXRUaW1lb3V0KGEuRCxfLnJhKDIzKSkpfSxQbT1mdW5jdGlvbihhKXtpZihhLmwpe2lmKCFhLkMpcmV0dXJuO2NsZWFyVGltZW91dChhLmwpO2EubD0wfWZvcih2YXIgYj1qbC5CKCk7YS5vLmxlbmd0aDspe3ZhciBjPWEuby5zaGlmdCgpO3RyeXtjKCksYS5qKyt9Y2F0Y2goZSl7YS5BKyssd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmVycm9yJiZ3aW5kb3cuY29uc29sZS5lcnJvcihcIkV4Y2VwdGlvbiBpbiBxdWV1ZWQgR1BUIGNvbW1hbmRcIixlKSxiLmVycm9yKEdsKFN0cmluZyhlLm1lc3NhZ2UpKSl9Yz1SbShhKTtpZigxPT09Yyl7U20oYSk7YnJlYWt9ZWxzZSAyPT09YyYmKGEubT1hLm18fF8uTmkoKSl9Yi5pbmZvKEhsKFN0cmluZyhhLmopLFN0cmluZyhhLkEpKSk7aWYoYS5tKXt2YXIgZD1fLk5pKCktYS5tO2EubT0wO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBrYihcImdwdF9pbnB1dF9wZW5kaW5nXCIsZnVuY3Rpb24oZSl7bGIoZSk7RShlLFwiY3R4XCIsNCk7RShlLFwiY29yclwiLGJiKF8ucikpO0UoZSxcInB0clwiLGQpfSx7dmE6MX0pfSwxKX19LFRtPWZ1bmN0aW9uKGEsYil7YS5vPV8uRmIoYS5vKS5jb25jYXQoXy5GYihiLmZpbHRlcihMYykpKTtfLnkoMTczKSYmMT09PVJtKGEpP1NtKGEpOlBtKGEpfTtRbS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpYltjXT1hcmd1bWVudHNbY107dGhpcy5DPV8ueSgxNzIpO1RtKHRoaXMsYik7cmV0dXJuIHRoaXMuan07dmFyIFVtPWZ1bmN0aW9uKCl7aWYoXy55KDE3Nikpe3ZhciBhPVhiKCkuY21kO2lmKCFhfHxBcnJheS5pc0FycmF5KGEpKXt2YXIgYj1uZXcgUW07WGIoKS5jbWQ9Z2woYik7YSYmMDxhLmxlbmd0aCYmVG0oYixhKX19ZWxzZSBpZihhPVhiKCkuY21kLCFhfHxBcnJheS5pc0FycmF5KGEpKWI9bmV3IE9tLFhiKCkuY21kPWdsKGIpLGEmJjA8YS5sZW5ndGgmJmIucHVzaC5hcHBseShiLGEpfTtVbT1HKDc3LFVtKTt2YXIgVm09ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soVm0sTSk7dmFyIFhtPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxXbSxudWxsKX07SyhYbSxNKTt2YXIgV209WzEzXTt2YXIgWm09ZnVuY3Rpb24oYSl7a2YodGhpcyxhLFltLG51bGwpfTtLKFptLE0pO3ZhciBZbT1bMTNdO3ZhciAkbT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SygkbSxNKTt2YXIgYW49ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soYW4sTSk7dmFyIGRuPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxibixjbil9O0soZG4sTSk7dmFyIGVuPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGVuLE0pO3ZhciBibj1bMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsNDUsMjMsMjcsMjgsMzhdLGNuPVtbNCw0MV0sWzM5LDQ4XV07ZW4ucHJvdG90eXBlLmdldEh0bWw9ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLDEpfTt2YXIgZ249ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGZuLG51bGwpfTtLKGduLE0pO3ZhciBobj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhobixNKTt2YXIgZm49WzFdLGpuPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBobjtyZXR1cm4gcWYoYiwxLGEsMCl9LGtuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHFmKGEsMixiLDApfSxsbj1mdW5jdGlvbihhLGIpe3hmKGEsMSxiLGhuKX07dmFyIG5uPWZ1bmN0aW9uKGEsYil7dmFyIGM9d2luZG93O2E6e3RyeXtpZihhKXt2YXIgZD1hLmdldEl0ZW0oXCJnb29nbGVfZXhwZXJpbWVudF9tb2RcIik7YnJlYWsgYX19Y2F0Y2goaCl7fWQ9bnVsbH12YXIgZT1kfHxcIlwiO2Q9bnVsbDt0cnl7aWYoZD16ZihnbixlKSxlKXt2YXIgZj16ZihnbixlKTtsbihmLGtuKGpuKDEpLC0xKSk7Zi5tKCl9fWNhdGNoKGgpe21uKGUpLGQ9bmV3IGdufWY9dWYoZCxobiwxKTtpZihmPVpjKGYsZnVuY3Rpb24oaCl7cmV0dXJuIG5mKGgsMSwwKT09PWJ9KSl7dmFyIGc9bmYoZiwyLDApO2lmKG51bGw9PT1nfHxpc05hTihnKSltbihlKTtlbHNlIHJldHVybiBnfWM9RWcoYyk7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7Zj9rbihmLGMpOmxuKGQsa24oam4oYiksYykpO3JldHVybiBGZyhhLGQubSgpKT9jOm51bGx9LG1uPWZ1bmN0aW9uKGEpey4wMT5NYXRoLnJhbmRvbSgpJiZWaCh7ZGF0YTphfSxcImxzX3RhbXBcIil9O3ZhciBvbj17fSxwbj0ob25bM109XCJodHRwczovL3MwLjJtZG4ubmV0L2Fkcy9yaWNobWVkaWEvc3R1ZGlvL211L3RlbXBsYXRlcy9oaWZpL2hpZmkuanNcIixvbikscW49e30scm49KHFuWzNdPVwiaHR0cHM6Ly9zMC4ybWRuLm5ldC9hZHMvcmljaG1lZGlhL3N0dWRpb19jYW5hcnkvbXUvdGVtcGxhdGVzL2hpZmkvaGlmaV9jYW5hcnkuanNcIixxbik7dmFyIHNuPWZ1bmN0aW9uKGEpe3RoaXMuaj1hO3RoaXMubD1qZSgpfSx0bj1mdW5jdGlvbihhKXt2YXIgYj17fTtfLlZjKGEsZnVuY3Rpb24oYyl7YltjLmpdPWMubH0pO3JldHVybiBifTt2YXIgdm4sd24seG47dm49ZnVuY3Rpb24oKXtyZXR1cm4gMCE9Xy51bihkb2N1bWVudCl9O18udW49ZnVuY3Rpb24oYSl7cmV0dXJue3Zpc2libGU6MSxoaWRkZW46MixwcmVyZW5kZXI6MyxwcmV2aWV3OjQsdW5sb2FkZWQ6NX1bYS52aXNpYmlsaXR5U3RhdGV8fGEud2Via2l0VmlzaWJpbGl0eVN0YXRlfHxhLm1velZpc2liaWxpdHlTdGF0ZXx8XCJcIl18fDB9O3duPWZ1bmN0aW9uKGEpe3ZhciBiO2EudmlzaWJpbGl0eVN0YXRlP2I9XCJ2aXNpYmlsaXR5Y2hhbmdlXCI6YS5tb3pWaXNpYmlsaXR5U3RhdGU/Yj1cIm1venZpc2liaWxpdHljaGFuZ2VcIjphLndlYmtpdFZpc2liaWxpdHlTdGF0ZSYmKGI9XCJ3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlXCIpO3JldHVybiBifTt4bj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YS5oaWRkZW4/YS5oaWRkZW46bnVsbCE9YS5tb3pIaWRkZW4/YS5tb3pIaWRkZW46bnVsbCE9YS53ZWJraXRIaWRkZW4/YS53ZWJraXRIaWRkZW46bnVsbH07dmFyIHpuLHluO3puPWZ1bmN0aW9uKCl7dGhpcy53YXNQbGFUYWdQcm9jZXNzZWQ9ITE7dGhpcy53YXNSZWFjdGl2ZUFkQ29uZmlnUmVjZWl2ZWQ9e307dGhpcy5hZENvdW50PXt9O3RoaXMud2FzUmVhY3RpdmVBZFZpc2libGU9e307dGhpcy5zdGF0ZUZvclR5cGU9e307dGhpcy5yZWFjdGl2ZVR5cGVFbmFibGVkSW5Bc2ZlPXt9O3RoaXMud2FzUmVhY3RpdmVUYWdSZXF1ZXN0U2VudD0hMTt0aGlzLnJlYWN0aXZlVHlwZURpc2FibGVkQnlQdWJsaXNoZXI9e307dGhpcy50YWdTcGVjaWZpY1N0YXRlPXt9O3RoaXMuaW1wcm92ZUNvbGxpc2lvbkRldGVjdGlvbj0xO3RoaXMubWVzc2FnZVZhbGlkYXRpb25FbmFibGVkPSExO3RoaXMuZmxvYXRpbmdBZHNTdGFja2luZz1uZXcgeW59O18uQW49ZnVuY3Rpb24oYSl7YS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZT9udWxsPT1hLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlLmZsb2F0aW5nQWRzU3RhY2tpbmcmJihhLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlLmZsb2F0aW5nQWRzU3RhY2tpbmc9bmV3IHluKTphLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlPW5ldyB6bjtyZXR1cm4gYS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZX07eW49ZnVuY3Rpb24oKXt0aGlzLm1heFpJbmRleFJlc3RyaWN0aW9ucz17fTt0aGlzLm5leHRSZXN0cmljdGlvbklkPTA7dGhpcy5tYXhaSW5kZXhMaXN0ZW5lcnM9W119O3ZhciBCbixGbixHbixIbjtCbj03MjgqMS4zODtfLkNuPWZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySGVpZ2h0Pj1hLmlubmVyV2lkdGh9O18uRW49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5EbihhKS5jbGllbnRXaWR0aDthPWEuaW5uZXJXaWR0aDtyZXR1cm4gYiYmYT9iL2E6MH07Rm49ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1fLkRuKGEpLmNsaWVudFdpZHRoKT9hPih2b2lkIDA9PT1iPzQyMDpiKT8zMjc2ODozMjA+YT82NTUzNjowOjE2Mzg0fTtHbj1mdW5jdGlvbihhKXtyZXR1cm4oYT1fLkVuKGEpKT8xLjA1PGE/MjYyMTQ0Oi45NT5hPzUyNDI4ODowOjEzMTA3Mn07Xy5Ebj1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQ7dmFyIGI9e307YSYmKGI9XCJDU1MxQ29tcGF0XCI9PWEuY29tcGF0TW9kZT9hLmRvY3VtZW50RWxlbWVudDphLmJvZHkpO3JldHVybiBifHx7fX07SG49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5Bbih3aW5kb3cpO2IuYWRDb3VudD1iLmFkQ291bnR8fHt9O2IuYWRDb3VudFthXT1iLmFkQ291bnRbYV0rMXx8MX07Xy5Jbj1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5wYWdlWU9mZnNldD8oYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGEuZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlfHxhLmRvY3VtZW50LmJvZHkpLnNjcm9sbFRvcDphLnBhZ2VZT2Zmc2V0fTt2YXIgSm49ZnVuY3Rpb24oYSl7YTp7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPV8ucjt2YXIgZD1hW2JdO3ZhciBlPWMuZG9jdW1lbnQ7ZS5lbGVtZW50RnJvbVBvaW50KGQueCxkLnkpO3ZhciBmPWQueDtkPWQueTtlLmhhc093blByb3BlcnR5KFwiX2dvb2dfZWZwX2NhbGxlZF9cIil8fChlLl9nb29nX2VmcF9jYWxsZWRfPWUuZWxlbWVudEZyb21Qb2ludChmLGQpKTtpZihlPWUuZWxlbWVudEZyb21Qb2ludChmLGQpKWlmKFwiZml4ZWRcIj09ZmkoZSxcInBvc2l0aW9uXCIpKWM9ZTtlbHNle2M6e2M9Yy5kb2N1bWVudDtmb3IoZT1lLm9mZnNldFBhcmVudDtlJiZlIT1jLmJvZHk7ZT1lLm9mZnNldFBhcmVudClpZihcImZpeGVkXCI9PWZpKGUsXCJwb3NpdGlvblwiKSl7Yz1lO2JyZWFrIGN9Yz1udWxsfWM9Yz9jOm51bGx9ZWxzZSBjPW51bGw7aWYoYyl7YT1jO2JyZWFrIGF9fWE9bnVsbH1yZXR1cm4gbnVsbCE9YX0sS249ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnIuaW5uZXJXaWR0aDtmb3IodmFyIGQ9W10sZT0wOzM+ZTtlKyspZm9yKHZhciBmPTA7Mz5mO2YrKylkLnB1c2goe3g6Zi8yKmMseTphK2UvMiooYi1hKX0pO3JldHVybiBkfTt2YXIgTG4sTW47TG49ZnVuY3Rpb24oYSl7dHJ5e2Euc2V0SXRlbShcIl9fc3RvcmFnZV90ZXN0X19cIixcIl9fc3RvcmFnZV90ZXN0X19cIik7dmFyIGI9YS5nZXRJdGVtKFwiX19zdG9yYWdlX3Rlc3RfX1wiKTthLnJlbW92ZUl0ZW0oXCJfX3N0b3JhZ2VfdGVzdF9fXCIpO3JldHVyblwiX19zdG9yYWdlX3Rlc3RfX1wiPT1ifWNhdGNoKGMpe3JldHVybiExfX07Xy5Obj1mdW5jdGlvbihhKXt0cnl7aWYobnVsbD09YXx8IUxuKGEpKXJldHVybiBudWxsO3ZhciBiPWEuZ2V0SXRlbShcIl9fbHN2X19cIik7aWYoIWIpcmV0dXJuW107dHJ5e3ZhciBjPUpTT04ucGFyc2UoYil9Y2F0Y2goZCl7fXJldHVybiFBcnJheS5pc0FycmF5KGMpfHxfLlhjKGMsZnVuY3Rpb24oZCl7cmV0dXJuIV8uQShOdW1iZXIsXCJpc0ludGVnZXJcIikuY2FsbChOdW1iZXIsZCl9KT8oYS5yZW1vdmVJdGVtKFwiX19sc3ZfX1wiKSxbXSk6TW4oYyl9Y2F0Y2goZCl7cmV0dXJuIG51bGx9fTtNbj1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/W106YTt2YXIgYj1EYXRlLm5vdygpO3JldHVybiBfLlRhKGEsZnVuY3Rpb24oYyl7cmV0dXJuIDM2RTU+Yi1jfSl9O18uT249ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYxPmEubGVuZ3RofTt2YXIgUG49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTA7dHJ5e2R8PWEhPWEudG9wPzUxMjowLGR8PWEubmF2aWdhdG9yJiYvQW5kcm9pZCAyLy50ZXN0KGEubmF2aWdhdG9yLnVzZXJBZ2VudCk/MTA0ODU3NjowfWNhdGNoKGcpe2R8PTMyfXZhciBlPTA7dHJ5e2V8PUZuKGEsMjUwMCk7aWYoXy55KDMwOSkpe3ZhciBmPV8uRG4oYSkuY2xpZW50SGVpZ2h0O2V8PWY/MzIwPmY/LTIxNDc0ODM2NDg6MDoxMDczNzQxODI0fWV8PUduKGEpO2ImJiFfLk9uKF8uTm4oYykpJiYoZXw9MTM0MjE3NzI4KX1jYXRjaChnKXtlfD0zMn1yZXR1cm4gZHxlfTt2YXIgUW49ZnVuY3Rpb24oKXt2YXIgYT17fTtyZXR1cm4gYS5hZHNlbnNlX2NoYW5uZWxfaWRzPVwiY2hhbm5lbFwiLGEuYWRzZW5zZV9hZF90eXBlcz1cImFkX3R5cGVcIixhLmFkc2Vuc2VfYWRfZm9ybWF0PVwiZm9ybWF0XCIsYS5hZHNlbnNlX2JhY2tncm91bmRfY29sb3I9XCJjb2xvcl9iZ1wiLGEuYWRzZW5zZV9ib3JkZXJfY29sb3I9XCJjb2xvcl9ib3JkZXJcIixhLmFkc2Vuc2VfbGlua19jb2xvcj1cImNvbG9yX2xpbmtcIixhLmFkc2Vuc2VfdGV4dF9jb2xvcj1cImNvbG9yX3RleHRcIixhLmFkc2Vuc2VfdXJsX2NvbG9yPVwiY29sb3JfdXJsXCIsYS5wYWdlX3VybD1cInVybFwiLGEuYWRzZW5zZV9hbGxvd19leHBhbmRhYmxlX2Fkcz1cImVhXCIsYS5hZHNlbnNlX2VuY29kaW5nPVwib2VcIixhLmFkc2Vuc2VfZmFtaWx5X3NhZmU9XCJhZHNhZmVcIixhLmFkc2Vuc2VfZmxhc2hfdmVyc2lvbj1cImZsYXNoXCIsYS5hZHNlbnNlX2ZvbnRfZmFjZT1cImZcIixhLmFkc2Vuc2VfaGludHM9XCJoaW50c1wiLGEuYWRzZW5zZV9rZXl3b3JkX3R5cGU9XCJrd190eXBlXCIsYS5hZHNlbnNlX2tleXdvcmRzPVwia3dcIixhLmFkc2Vuc2VfdGVzdF9tb2RlPVwiYWR0ZXN0XCIsYS5hbHRlcm5hdGVfYWRfaWZyYW1lX2NvbG9yPVwiYWx0X2NvbG9yXCIsYS5hbHRlcm5hdGVfYWRfdXJsPVwiYWx0ZXJuYXRlX2FkX3VybFwiLGEuZGVtb2dyYXBoaWNfYWdlPVwiY3VzdF9hZ2VcIixhLmRlbW9ncmFwaGljX2dlbmRlcj1cImN1c3RfZ2VuZGVyXCIsYS5kb2N1bWVudF9sYW5ndWFnZT1cImhsXCIsYX07dmFyIFJuPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9bnVsbDtBcnJheS5pc0FycmF5KGQpP2Y9ZDpLYyhkKT9mPV8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxkKTpkP2Y9W2RdOl8ueSgyNjIpfHwoZj1bXSk7dmFyIGc9XCJzdHJpbmdcIj09PXR5cGVvZiBjJiYhRmQoYyksaD1fLnkoMjYyKT8hIWYmJmYuZXZlcnkoZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrfSk6ITA7ZyYmaD8oXy55KDI2Mil8fChmPWYubWFwKGZ1bmN0aW9uKGspe3JldHVybiBTdHJpbmcoayl9KSksKGQ9KHo9dWYoYixKaiw5KSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihrKXtyZXR1cm4gS2ooayk9PT1jfSkpP01qKGQsZik6KGQ9TWooTGoobmV3IEpqLGMpLGYpLHhmKGIsOSxkLEpqKSksZS5pbmZvKHpsKGMsZi5qb2luKCksYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSkpOmUuSihxbChcIlNsb3Quc2V0VGFyZ2V0aW5nXCIsW2MsZF0pLG51bGwsYSl9LFNuPWZ1bmN0aW9uKGEsYixjLGQpe2lmKG51bGw9PWN8fFwib2JqZWN0XCIhPT10eXBlb2YgYylkLmVycm9yKHFsKFwiU2xvdC51cGRhdGVUYXJnZXRpbmdGcm9tTWFwXCIsW2NdKSxudWxsLGEpO2Vsc2UgZm9yKHZhciBlPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxjKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpZj1mLnZhbHVlLFJuKGEsYixmLGNbZl0sZCl9O3ZhciBUbj1mdW5jdGlvbigpe3RoaXMubD17fTt0aGlzLmo9bmV3IFNqO0QodGhpcy5qLDI2LE5rKCkpOyhfLnkoNDE3KSYmMj09PVJnKCl8fF8uRGooMzYpKSYmRCh0aGlzLmosMTUsITApfSxVbj1mdW5jdGlvbihhKXt2YXIgYj1Ubi5CKCksYz1CKGEsMik7YyYmIWIubC5oYXNPd25Qcm9wZXJ0eShjKSYmKGIubFtjXT1hKX0sVm49ZnVuY3Rpb24oKXtyZXR1cm4gVG4uQigpLmx9LFduPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubFtiXXx8bnVsbH07SWMoVG4pO3ZhciBYbj1cIlwiLFluPW51bGwsWm49ZnVuY3Rpb24oKXtYbnx8KFhuPXFqKDIpfHxcIjEtMC0zN1wiKTtyZXR1cm4gWG59LCRuPWZ1bmN0aW9uKCl7aWYobnVsbD09WW4pe2Zvcih2YXIgYT1fLnJqKDEpLGI9W10sYz0wO2M8YS5sZW5ndGg7Yys9MilwZyhhW2NdLGFbYysxXSxiKTtZbj1iLmpvaW4oXCImXCIpfXJldHVybiBZbn0sYW89ZnVuY3Rpb24oYSl7dmFyIGI9amwuQigpLGM9bmV3IFBqO2lmKCFhfHwhXy5NYyhhKSlyZXR1cm4gbnVsbDt2YXIgZD0hMTtfLkpiKGEsZnVuY3Rpb24oZSxmKXtzd2l0Y2goZil7Y2FzZSBcImFsbG93T3ZlcmxheUV4cGFuc2lvblwiOlwiYm9vbGVhblwiPT09dHlwZW9mIGU/RChjLDEsYS5hbGxvd092ZXJsYXlFeHBhbnNpb24pOihiLmVycm9yKHdtKFwiYWxsb3dPdmVybGF5RXhwYW5zaW9uXCIsU3RyaW5nKGEuYWxsb3dPdmVybGF5RXhwYW5zaW9uKSkpLGQ9ITApO2JyZWFrO2Nhc2UgXCJhbGxvd1B1c2hFeHBhbnNpb25cIjpcImJvb2xlYW5cIj09PXR5cGVvZiBlP0QoYywyLGEuYWxsb3dQdXNoRXhwYW5zaW9uKTooYi5lcnJvcih3bShcImFsbG93UHVzaEV4cGFuc2lvblwiLFN0cmluZyhhLmFsbG93UHVzaEV4cGFuc2lvbikpKSxkPSEwKTticmVhaztjYXNlIFwic2FuZGJveFwiOiEwPT09ZT9RaihjLGEuc2FuZGJveCk6KGIuZXJyb3Iod20oXCJzYW5kYm94XCIsU3RyaW5nKGEuc2FuZGJveCkpKSxkPSEwKTticmVhaztjYXNlIFwidXNlVW5pcXVlRG9tYWluXCI6XCJib29sZWFuXCI9PT10eXBlb2YgZT9EKGMsNCxhLnVzZVVuaXF1ZURvbWFpbik6bnVsbCE9PWUmJihiLmVycm9yKHdtKFwidXNlVW5pcXVlRG9tYWluXCIsU3RyaW5nKGEudXNlVW5pcXVlRG9tYWluKSkpLGQ9ITApO2JyZWFrO2RlZmF1bHQ6Yi5KKHZtKGYpKX19KTtyZXR1cm4gZD9udWxsOmN9LGJvPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBQajthPV8uRihhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKWlmKGM9Yy52YWx1ZSl7aWYobnVsbCE9QihjLDEpKXt2YXIgZD14KGMsMSk7RChiLDEsZCl9bnVsbCE9QihjLDIpJiYoZD14KGMsMiksRChiLDIsZCkpO251bGwhPUIoYywzKSYmUWooYix4KGMsMykpO251bGwhPUIoYyw0KSYmKGM9eChjLDQpLEQoYiw0LGMpKX1yZXR1cm4gYn07dmFyIGNvPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5qPWJ9O2NvLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O2NvLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgZm89ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWpsLkIoKSxkPVduKFRuLkIoKSxhLmdldFNsb3RFbGVtZW50SWQoKSk7dGhpcy5zZXQ9Uyg0MCxmdW5jdGlvbihlLGYpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZXx8IWZ8fHZvaWQgMD09PVFuKClbZV0pcmV0dXJuIGMuSihxbChcIlNsb3Quc2V0XCIsW2UsZl0pLG51bGwsYSksYjt2YXIgZz0oej11ZihkLEpqLDMpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGgpe3JldHVybiBLaihoKT09PWV9KTtnP01qKGcsW2ZdKTooZz1MaihuZXcgSmosZSksc2YoZywyLGYpLHhmKGQsMyxnLEpqKSk7cmV0dXJuIGJ9KTt0aGlzLmdldD1TKDQxLGZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZSlyZXR1cm4gYy5KKHFsKFwiU2xvdC5nZXRcIixbZV0pLG51bGwsYSksbnVsbDt2YXIgZj0oej11ZihkLEpqLDMpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGcpe3JldHVybiBLaihnKT09PWV9KTtyZXR1cm4oZj1mJiZCKGYsMikpP2ZbMF06bnVsbH0pO3RoaXMuZ2V0QXR0cmlidXRlS2V5cz1TKDQyLGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGQsSmosMykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBLaihlKX0pfSk7dGhpcy5hZGRTZXJ2aWNlPVMoNDMsZnVuY3Rpb24oZSl7ZT13ai5nZXQoZSk7aWYoIWUpcmV0dXJuIGMuSihzbShhLmdldFNsb3RJZCgpLnRvU3RyaW5nKCkpLG51bGwsYSksYjtpZigoej1CKGQsNCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGUuWigpKSlyZXR1cm4gYy5KKHdsKGUuWigpLGEuZ2V0U2xvdElkKCkudG9TdHJpbmcoKSksZSxhKSxiO2UueGEoYSxkKTtyZXR1cm4gYn0pO3RoaXMuZGVmaW5lU2l6ZU1hcHBpbmc9Uyg0NCxmdW5jdGlvbihlKXtpZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBFcnJvcihcIlNpemUgbWFwcGluZyBoYXMgdG8gYmUgYW4gYXJyYXlcIik7ZT1lLm1hcChwayk7d2YoZCw2LGUpO3JldHVybiBifSxmdW5jdGlvbihlLGYpe2JsKGUsZik7ZGgoXCJJbmNvcnJlY3QgdXNhZ2Ugb2YgZ29vZ2xldGFnLlNsb3QgZGVmaW5lU2l6ZU1hcHBpbmc6IFwiK2YubWVzc2FnZSk7cmV0dXJuIGJ9KTt0aGlzLnNldENsaWNrVXJsPVMoNDUsZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBlKXJldHVybiBjLkoocWwoXCJTbG90LnNldENsaWNrVXJsXCIsW2VdKSxudWxsLGEpLGI7RChkLDcsZSk7cmV0dXJuIGJ9KTt0aGlzLnNldENhdGVnb3J5RXhjbHVzaW9uPVMoNDYsZnVuY3Rpb24oZSl7XCJzdHJpbmdcIiE9PXR5cGVvZiBlfHxGZChlKT9jLkoocWwoXCJTbG90LnNldENhdGVnb3J5RXhjbHVzaW9uXCIsW2VdKSxudWxsLGEpOigoej1CKGQsOCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGUpfHxzZihkLDgsZSksYy5pbmZvKHhsKGUpLG51bGwsYSkpO3JldHVybiBifSk7dGhpcy5jbGVhckNhdGVnb3J5RXhjbHVzaW9ucz1TKDQ3LGZ1bmN0aW9uKCl7RChkLDgsW10pO2MuaW5mbyh5bCgpLG51bGwsYSk7cmV0dXJuIGJ9KTt0aGlzLmdldENhdGVnb3J5RXhjbHVzaW9ucz1TKDQ4LGZ1bmN0aW9uKCl7cmV0dXJuIEIoZCw4KS5zbGljZSgpfSk7dGhpcy5zZXRUYXJnZXRpbmc9Uyg0OSxmdW5jdGlvbihlLGYpe1JuKGEsZCxlLGYsYyk7cmV0dXJuIGJ9KTt0aGlzLnVwZGF0ZVRhcmdldGluZ0Zyb21NYXA9Uyg2NDksZnVuY3Rpb24oZSl7U24oYSxkLGUsYyk7cmV0dXJuIGJ9KTt0aGlzLmNsZWFyVGFyZ2V0aW5nPVMoNTAsZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gZmsoZCxbXSksYy5pbmZvKEFsKGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEpLGI7dmFyIGY9dWYoZCxKaiw5KSxnPV8uQShmLFwiZmluZEluZGV4XCIpLmNhbGwoZixmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCk9PT1lfSk7aWYoMD5nKXJldHVybiBjLkooeG0oZSxhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhKSxiO2Yuc3BsaWNlKGcsMSk7ZmsoZCxmKTtjLmluZm8oeW0oZSxhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhKTtyZXR1cm4gYn0pO3RoaXMuZ2V0VGFyZ2V0aW5nPVMoNTEsZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBlKXJldHVybiBjLkoocWwoXCJTbG90LmdldFRhcmdldGluZ1wiLFtlXSksbnVsbCxhKSxbXTt2YXIgZj0oej11ZihkLEpqLDkpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGcpe3JldHVybiBLaihnKT09PWV9KTtyZXR1cm4gZj9CKGYsMikuc2xpY2UoKTpbXX0pO3RoaXMuZ2V0VGFyZ2V0aW5nS2V5cz1TKDUyLGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGQsSmosOSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBLaihlKX0pfSk7dGhpcy5zZXRDb2xsYXBzZUVtcHR5RGl2PVMoNTMsZnVuY3Rpb24oZSxmKXtmPXZvaWQgMD09PWY/ITE6ZjtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBlfHxcImJvb2xlYW5cIiE9PXR5cGVvZiBmKXJldHVybiBjLkoocWwoXCJTbG90LnNldENvbGxhcHNlRW1wdHlEaXZcIixbZSxmXSksbnVsbCxhKSxiO0QoZCwxMCxlKTtEKGQsMTEsZSYmZik7a2IoXCJncHRfY2VkXCIsZnVuY3Rpb24oZyl7dmFyIGg9eChkLDExKT9cInRcIjpcImZcIjtFKGcsXCJzY1wiLGgpO0UoZyxcImxldmVsXCIsXCJzbG90XCIpO2xiKGcpfSk7ZiYmIWUmJmMuSihCbChhLmdldFNsb3RJZCgpLnRvU3RyaW5nKCkpLG51bGwsYSk7cmV0dXJuIGJ9KTt0aGlzLmdldEFkVW5pdFBhdGg9Uyg1NCxmdW5jdGlvbigpe3JldHVybiBhLmdldEFkVW5pdFBhdGgoKX0pO3RoaXMuZ2V0U2xvdEVsZW1lbnRJZD1TKDU5OCxmdW5jdGlvbigpe3JldHVybiBhLmdldFNsb3RFbGVtZW50SWQoKX0pO3RoaXMuc2V0Rm9yY2VTYWZlRnJhbWU9Uyg1NSxmdW5jdGlvbihlKXtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBlKXJldHVybiBjLkooZm0oXCJTbG90LnNldEZvcmNlU2FmZUZyYW1lXCIsU3RyaW5nKGUpKSxudWxsLGEpLGI7RChkLDEyLGUpO3JldHVybiBifSk7dGhpcy5zZXRTYWZlRnJhbWVDb25maWc9Uyg1NixmdW5jdGlvbihlKXt2YXIgZj1hbyhlKTtpZighZilyZXR1cm4gYy5lcnJvcihxbChcIlNsb3Quc2V0U2FmZUZyYW1lQ29uZmlnXCIsW2VdKSxudWxsLGEpLGI7dmYoZCwxMyxmKTtyZXR1cm4gYn0pO3RoaXMuZ2V0UmVzcG9uc2VJbmZvcm1hdGlvbj1TKDM1NSxmdW5jdGlvbigpe3JldHVybiBhLkh9KTt0aGlzLmdldE5hbWU9UygxNzAsZnVuY3Rpb24oKXt3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihcImdldE5hbWUgb24gZ29vZ2xldGFnLlNsb3QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgZ2V0QWRVbml0UGF0aCBpbnN0ZWFkLlwiKTt2YXIgZT1uZXcgV2soXCJzbG90X2dldF9uYW1lXCIpO2xiKGUpO1lrKGUpO3JldHVybiBhLm8uZ2V0QWRVbml0UGF0aCgpfSk7dGhpcy5nZXRTbG90SWQ9Uyg1NzksZnVuY3Rpb24oKXtyZXR1cm4gZ2woYS5nZXRTbG90SWQoKSl9KTt0aGlzLmdldFNlcnZpY2VzPVMoNTgwLGZ1bmN0aW9uKCl7cmV0dXJuIEIoZCw0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEFqKGUpfSl9KTt0aGlzLmdldFNpemVzPVMoNTgxLGZ1bmN0aW9uKGUsZil7cmV0dXJuKGU9cWsoZCxlLGYpKT9lLm1hcChmdW5jdGlvbihnKXtyZXR1cm4geChnLDMpP1wiZmx1aWRcIjpuZXcgY28oQihnLDEpLEIoZywyKSl9KTpudWxsfSk7dGhpcy5nZXRDbGlja1VybD1TKDU4MixmdW5jdGlvbigpe3JldHVybiBudWxsIT1CKGQsNyk/ZC5nZXRDbGlja1VybCgpOlwiXCJ9KTt0aGlzLmdldFRhcmdldGluZ01hcD1TKDU4MyxmdW5jdGlvbigpe2Zvcih2YXIgZT17fSxmPV8uRih1ZihkLEpqLDkpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlnPWcudmFsdWUsZVtLaihnKV09QihnLDIpO3JldHVybiBlfSk7dGhpcy5nZXRPdXRPZlBhZ2U9Uyg1ODQsZnVuY3Rpb24oKXtyZXR1cm4gMCE9Z2soZCl9KTt0aGlzLmdldENvbGxhcHNlRW1wdHlEaXY9Uyg1ODUsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9QihkLDEwKT94KGQsMTApOm51bGx9KTt0aGlzLmdldERpdlN0YXJ0c0NvbGxhcHNlZD1TKDU4NixmdW5jdGlvbigpe3JldHVybiBudWxsIT1CKGQsMTEpP3goZCwxMSk6bnVsbH0pO3RoaXMuZ2V0Q29udGVudFVybD1TKDU4NyxmdW5jdGlvbigpe3JldHVybiBhLlQoKX0pO3RoaXMuZ2V0Rmlyc3RMb29rPVMoNTg4LGZ1bmN0aW9uKCl7ZGgoXCJUaGUgZ2V0Rmlyc3RMb29rIG1ldGhvZCBvZiBnb29nbGV0YWcuU2xvdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXBkYXRlIHlvdXIgY29kZSB0byBubyBsb25nZXIgY2FsbCB0aGlzIG1ldGhvZC5cIik7cmV0dXJuIDB9KTt0aGlzLmdldEVzY2FwZWRRZW1RdWVyeUlkPVMoNTkxLGZ1bmN0aW9uKCl7cmV0dXJuIGVvKGEpfSk7dGhpcy5nZXRIdG1sPVMoNTkyLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0SHRtbCgpfSl9O18uSihmbyx5aik7dmFyIGdvPWZ1bmN0aW9uKCl7dGhpcy5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQ9dGhpcy5zb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQ9dGhpcy5saW5lSXRlbUlkPXRoaXMuY3JlYXRpdmVJZD10aGlzLmNhbXBhaWduSWQ9dGhpcy5hZHZlcnRpc2VySWQ9bnVsbDt0aGlzLmlzQmFja2ZpbGw9ITE7dGhpcy5lbmNyeXB0ZWRUcm91Ymxlc2hvb3RpbmdJbmZvPXRoaXMuY3JlYXRpdmVUZW1wbGF0ZUlkPXRoaXMuY29tcGFueUlkcz10aGlzLnlpZWxkR3JvdXBJZHM9bnVsbH07dmFyIGhvPWZ1bmN0aW9uKGEpe3RoaXMuZ2V0SWQ9Uyg1OTMsZnVuY3Rpb24oKXtyZXR1cm4gYS5vfSk7dGhpcy5nZXRBZFVuaXRQYXRoPVMoNTk0LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWRVbml0UGF0aCgpfSk7dGhpcy5nZXROYW1lPVMoNTk1LGZ1bmN0aW9uKCl7dmFyIGI9bmV3IFdrKFwic2xvdF9pZF9nZXRfbmFtZVwiKTtsYihiKTtZayhiKTtyZXR1cm4gYS5sfSk7dGhpcy50b1N0cmluZz1TKDU5NixmdW5jdGlvbigpe3JldHVybiBhLnRvU3RyaW5nKCl9KTt0aGlzLmdldERvbUlkPVMoNTk3LGZ1bmN0aW9uKCl7cmV0dXJuIGEuan0pfTtfLkooaG8seWopO3ZhciBpbz1mdW5jdGlvbihhLGIsYyl7ZWwuY2FsbCh0aGlzKTt0aGlzLmw9YTt0aGlzLmJiPWI7dGhpcy5vPXRoaXMubCtcIl9cIit0aGlzLmJiO3RoaXMuaj1jfTtfLkooaW8sb2wpO2lvLnByb3RvdHlwZS5nZXRBZFVuaXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubH07aW8ucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iYn07aW8ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307aW8ucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBobyh0aGlzKX07dmFyIGtvPWZ1bmN0aW9uKGEpe2VsLmNhbGwodGhpcyk7dGhpcy5vPWE7dGhpcy5DPWpsLkIoKTtfLnkoNDEyKXx8dGhpcy5DLmluZm8ocmwodGhpcy5vLnRvU3RyaW5nKCkpLG51bGwsdGhpcyk7dGhpcy5QPXRoaXMuRD10aGlzLlY9bnVsbDt0aGlzLlQ9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifTt0aGlzLkc9bnVsbDt0aGlzLm09R2sodGhpcy5vLmdldEFkVW5pdFBhdGgoKSk7dGhpcy4kYT1cIlwiO3RoaXMuSD1udWxsO3RoaXMuZWM9ITE7dGhpcy5BPTA7dGhpcy5ZPXRoaXMubWM9bnVsbDtqbyh0aGlzKTt0aGlzLk89XCJcIjt0aGlzLmo9bnVsbDt0aGlzLkk9XCJcIjt0aGlzLks9W107dGhpcy5NPVtdO3RoaXMuVz0wfTtfLkooa28sb2wpO3ZhciBsbz1mdW5jdGlvbihhLGIpe2EuSy5wdXNoKGIpfSxtbz1mdW5jdGlvbihhLGIpe2EuTS5wdXNoKGIpfTtrby5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGZvKHRoaXMpfTtrby5wcm90b3R5cGUuZ2V0QWRVbml0UGF0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm8uZ2V0QWRVbml0UGF0aCgpfTtrby5wcm90b3R5cGUuZ2V0U2xvdEVsZW1lbnRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm8uan07dmFyIHBhPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP2RvY3VtZW50OmI7cmV0dXJuIGEubWN8fGIuZ2V0RWxlbWVudEJ5SWQoYS5vLmopfTtrby5wcm90b3R5cGUuZ2V0U2xvdElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307dmFyIG5vPWZ1bmN0aW9uKGEsYil7YS5UPWJ9LG9vPWZ1bmN0aW9uKGEpe18ueSg0MTIpfHxhLkMuaW5mbyh0bChhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhLGEuVil9O2tvLnByb3RvdHlwZS5UYT1mdW5jdGlvbigpe18ueSg0MTIpfHwodGhpcy5EPXRoaXMuQy5pbmZvKHVsKHRoaXMuZ2V0QWRVbml0UGF0aCgpKSxudWxsLHRoaXMpKX07dmFyIHBvPWZ1bmN0aW9uKGEpe18ueSg0MTIpfHwoYS5QPWEuQy5pbmZvKHZsKGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEsYS5EKSl9O2tvLnByb3RvdHlwZS5tYj1mdW5jdGlvbigpe18ueSg0MTIpfHwodGhpcy5HPXRoaXMuR3x8Xy5OaSgpKX07dmFyIHJvPWZ1bmN0aW9uKGEpe2EuRz1udWxsO2EuSD1udWxsO2Euaj1udWxsO2EuST1cIlwiO18ueSg0MTgpfHxxbyhhLFwiXCIpO2Zvcih2YXIgYj1fLkYoYS5LKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsYygpO2EuSy5sZW5ndGg9MH0sc289ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPV8uRihhLk0pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxjKCk7YS5NLmxlbmd0aD0wfSx0bz1mdW5jdGlvbihhLGIpe2Euaj1iO2lmKCFhLmp8fHgoYS5qLDgpKWI9bnVsbDtlbHNle2I9bmV3IGdvO3ZhciBjPSEheChhLmosOSk7Yi5pc0JhY2tmaWxsPWM7dmFyIGQ9QihhLmosMTUpLGU9QihhLmosMTYpO2QubGVuZ3RoJiZlLmxlbmd0aCYmKGIuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkPWRbMF0sYi5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQ9ZVswXSxjfHwoYi5jcmVhdGl2ZUlkPWRbMF0sYi5saW5lSXRlbUlkPWVbMF0sKGM9QihhLmosMjIpKSYmYy5sZW5ndGgmJihiLmNyZWF0aXZlVGVtcGxhdGVJZD1jWzBdKSkpO0IoYS5qLDE3KS5sZW5ndGgmJihjPUIoYS5qLDE3KVswXSxiLmFkdmVydGlzZXJJZD1jKTtCKGEuaiwxOCkubGVuZ3RoJiYoYz1CKGEuaiwxOClbMF0sYi5jYW1wYWlnbklkPWMpO0IoYS5qLDE5KS5sZW5ndGgmJihjPUIoYS5qLDE5KSxiLnlpZWxkR3JvdXBJZHM9Yyk7QihhLmosMjApLmxlbmd0aCYmKGM9QihhLmosMjApLGIuY29tcGFueUlkcz1jKTtjPUIoYS5qLDQ1KTtjPWMubGVuZ3RoJiZcInN0cmluZ1wiIT09dHlwZW9mIGNbMF0/Xy5SYShjLG1mKTpjO2MubGVuZ3RoJiYoYi5lbmNyeXB0ZWRUcm91Ymxlc2hvb3RpbmdJbmZvPWNbMF0pfWEuSD1ifSxlbz1mdW5jdGlvbihhKXtyZXR1cm4gYS5qJiZCKGEuaiwzNCl8fFwiXCJ9O2tvLnByb3RvdHlwZS5nZXRIdG1sPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNCYWNrZmlsbCgpPyh3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oXCJUaGlzIGFkJ3MgaHRtbCBjYW5ub3QgYmUgYWNjZXNzZWQgdXNpbmcgdGhlIGdldEh0bWwgbWV0aG9kIG9uIGdvb2dsZXRhZy5TbG90LiBSZXR1cm5pbmcgdGhlIGVtcHR5IHN0cmluZyBpbnN0ZWFkLlwiKSxcIlwiKTp0aGlzLkl9O2tvLnByb3RvdHlwZS5pc0JhY2tmaWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaj8hIXgodGhpcy5qLDkpOm51bGx9O2tvLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7b2wucHJvdG90eXBlLnYuY2FsbCh0aGlzKTtzbyh0aGlzKTtfLnkoNDEyKXx8dGhpcy5DLmluZm8odW0odGhpcy5vLnRvU3RyaW5nKCkpLG51bGwsdGhpcyl9O3ZhciBqbz1mdW5jdGlvbihhLGIpe2J8fChiPSsrdGsuQigpLnYpO2EubD1ifSx1bz1mdW5jdGlvbihhLGIpe3JldHVybihiPW9hKGEsYikpP2IucXVlcnlTZWxlY3RvcignaWZyYW1lW2lkPVwiJytVayhhLm8pKydcIl0nKTpudWxsfSxxbz1mdW5jdGlvbihhLGIpe2EuTz1ifHxcIlwifTt2YXIgdm89ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP3t9OmE7dmFyIGI9dm9pZCAwPT09Yj97fTpiO3RoaXMubD1hO3RoaXMuaj1ifSx3bz1mdW5jdGlvbihhLGIsYyxkKXtpZighKGImJmIgaW4gYS5sKSlyZXR1cm4hMTtpZih2b2lkIDA9PT1kfHxkfHwhYS5qW2JdKWEualtiXT1jfHxcIlwiO3JldHVybiEwfSx1az1mdW5jdGlvbihhKXtyZXR1cm4gYS5qLnBhZ2VfdXJsfHxudWxsfSx4bz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1bXSxmPWIuajtfLkpiKGQsZnVuY3Rpb24oZyxoKXtpZihnKXtnPXtwYjpnfTt2YXIgaz1mW2hdLGw9W107YS5mb3JFYWNoKGZ1bmN0aW9uKG0sbil7KG09Yy5nZXQobS5nZXRTbG90SWQoKSkpJiZtLmpbaF0mJihsW25dPW0ualtoXSl9KTtpZihsLmxlbmd0aHx8aylsLmxlbmd0aCYmKGcuemQ9bCksayYmKGcubmQ9ayksZS5wdXNoKGcpfX0pO3JldHVybiBlfTt2YXIgeW89ZnVuY3Rpb24oYSl7dGhpcy5pZD1hfSx6bz1uZXcgeW8oMSksQW89bmV3IHlvKDIpLEJvPW5ldyB5bygzKSxDbz1uZXcgeW8oMjEpLFBiPW5ldyB5byg0KSxEbz1uZXcgeW8oNSksRW89bmV3IHlvKDcpLEZvPW5ldyB5byg4KSxHbz1uZXcgeW8oOSksSG89bmV3IHlvKDEwKSxJbz1uZXcgeW8oMTEpLEpvPW5ldyB5bygxMiksS289bmV3IHlvKDEzKSxMbz1uZXcgeW8oMTQpLE1vPW5ldyB5bygxNSksTm89bmV3IHlvKDE2KSxPbz1uZXcgeW8oMTcpLFFiPW5ldyB5bygxOCk7dmFyIEk9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IHQuTWFwO3RoaXMubD1fLnkoNDAzKX0sUW89ZnVuY3Rpb24oYSxiLGMsZCl7UG8oYSxiLG51bGwsZCk7UG8oYSxiLGMsZCl9LFNvPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBSbyhhLGIsbnVsbCxjLGQpfSxPYj1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBSbyhhLGIsYyxkLGUpfSxSbz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPUcoZCxlLGZ1bmN0aW9uKGgsayl7Y2woaCxrLCEwKX0pLGc9VG8oYixjKTtiPWEuai5nZXQoZyk7Ynx8KGI9W10sYS5qLnNldChnLGIpKTtiLnB1c2goZik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9YS5qLmdldChnKTtoJiYoYWQoaCxmKSxoLmxlbmd0aHx8YS5qLmRlbGV0ZShnKSl9fSxUbz1mdW5jdGlvbihhLGIpe2E9YS5pZDtyZXR1cm4gYj9hK1wiX1wiK2I6U3RyaW5nKGEpfSxQbz1mdW5jdGlvbihhLGIsYyxkKXtjPWEuai5nZXQoVG8oYixjKSl8fFtdO2I9e307Yz1fLkYoYyk7Zm9yKHZhciBlPWMubmV4dCgpOyFlLmRvbmU7Yj17cmI6Yi5yYn0sZT1jLm5leHQoKSliLnJiPWUudmFsdWUsYS5sP3QuUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oKXtmLnJiKGQpfX0oYikpOmIucmIoZCl9O0ljKEkpO3ZhciBVbyxWbyxXbyxYbztVbz1udWxsO1ZvPWZ1bmN0aW9uKCl7dmFyIGE9UW4oKTt0aGlzLmo9bmV3IHQuTWFwO3RoaXMubz1hO3RoaXMubD1uZXcgdm8oYSk7dGhpcy52PSExfTtXbz1mdW5jdGlvbigpe3JldHVybiBVbz1Vb3x8bmV3IFZvfTtYbz1mdW5jdGlvbihhLGIpe2lmKCFfLnkoNDEyKXx8IWEuai5nZXQoYikpe2Euai5zZXQoYix7U2E6ITAsaWM6bmV3IHZvKGEubyksd2E6bnVsbCxTYjpcIlwifSk7Xy5SKGIsZnVuY3Rpb24oKXthLmouZGVsZXRlKGIpfSk7dmFyIGM9Yi5nZXRTbG90SWQoKTtfLnkoNDEyKSYmKF8uUihiLE9iKEkuQigpLElvLGMsNzY0LGZ1bmN0aW9uKCl7dmFyIGQ9YS5qLmdldChiKTtkLm9jPV8uTmkoKTtsbyhiLGZ1bmN0aW9uKCl7ZC5vYz12b2lkIDB9KX0pKSxfLlIoYixPYihJLkIoKSxDbyxjLDc2NyxmdW5jdGlvbigpe3ZhciBkPWEuai5nZXQoYik7ZC5EYz1fLk5pKCk7bG8oYixmdW5jdGlvbigpe2QuRGM9dm9pZCAwfSl9KSksXy5SKGIsT2IoSS5CKCksUGIsYyw3NjUsZnVuY3Rpb24oKXt2YXIgZD1hLmouZ2V0KGIpO2QuQ2M9Xy5OaSgpO2xvKGIsZnVuY3Rpb24oKXtkLkNjPXZvaWQgMH0pfSkpLF8uUihiLE9iKEkuQigpLERvLGMsNzY2LGZ1bmN0aW9uKCl7dmFyIGQ9YS5qLmdldChiKTtkLnVjPV8uTmkoKTtsbyhiLGZ1bmN0aW9uKCl7ZC51Yz12b2lkIDB9KX0pKSk7Xy55KDQxOCkmJl8uUihiLE9iKEkuQigpLEpvLGMsNzczLGZ1bmN0aW9uKGQpe3ZhciBlPWEuai5nZXQoYik7ZS5TYj1CKGQsMzMpfHxcIlwiO21vKGIsZnVuY3Rpb24oKXtlLlNiPVwiXCJ9KX0pKX19O18uWW89ZnVuY3Rpb24oYSxiKXtpZighXy55KDQyMikpe3ZhciBjPWIuaj9PKGIuaixCZiw1MCk6bnVsbDtpZihjJiYobnVsbCE9QihjLDEpfHx4KGMsNikpKXJldHVybiExfXJldHVybiBhLmouZ2V0KGIpJiZhLmouZ2V0KGIpLlNhfTtfLlpvPWZ1bmN0aW9uKGEsYil7YS5qLmdldChiKSYmKGEuai5nZXQoYikuU2E9ITEpfTtfLiRvPWZ1bmN0aW9uKGEsYil7YS5qLmdldChiKSYmKGEuai5nZXQoYikuU2E9ITApfTtWby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIltBZERhdGE6XCIrXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LHRoaXMuaixmdW5jdGlvbihhKXthPV8uRihhKTt2YXIgYj1hLm5leHQoKS52YWx1ZTthLm5leHQoKTtyZXR1cm4gYi50b1N0cmluZygpfSkuam9pbigpK1wiXVwifTt2YXIgYXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5qLmhhcyhiKX0sYnA9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHQuTWFwO2E9Xy5GKF8uQShhLmosXCJlbnRyaWVzXCIpLmNhbGwoYS5qKSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSl7dmFyIGQ9Xy5GKGMudmFsdWUpO2M9ZC5uZXh0KCkudmFsdWU7ZD1kLm5leHQoKS52YWx1ZTtiLnNldChjLmdldFNsb3RJZCgpLGQuaWMpfXJldHVybiBifSxjcD1mdW5jdGlvbihhLGIpe2IuZm9yRWFjaChmdW5jdGlvbihjKXthLmouZGVsZXRlKGMpfSl9LGRwPWZ1bmN0aW9uKGEsYixjKXthLmouZ2V0KGIpJiYoYS5qLmdldChiKS53YT1jKX0sZXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS53YX0sZnA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS5EY3x8bnVsbH0sZ3A9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS5DY3x8bnVsbH0saHA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS51Y3x8bnVsbH07dmFyIGpwPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5hZGRFdmVudExpc3RlbmVyPVMoODYsZnVuY3Rpb24oYyxkKXthLmFkZEV2ZW50TGlzdGVuZXIoYyxkKTtyZXR1cm4gYn0pO3RoaXMuZ2V0U2xvdHM9Uyg1NzMsZnVuY3Rpb24oKXtyZXR1cm4gYS5sLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gZ2woYyl9KX0pO3RoaXMuZ2V0U2xvdElkTWFwPVMoNTc0LGZ1bmN0aW9uKCl7Zm9yKHZhciBjPXt9LGQ9Xy5GKGEubCksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpZT1lLnZhbHVlLGNbZS5nZXRTbG90SWQoKS50b1N0cmluZygpXT1nbChlKTtyZXR1cm4gY30pO3RoaXMuZW5hYmxlPVMoODcsZnVuY3Rpb24oKXtyZXR1cm4gaXAoYSl9LGJsKTt0aGlzLmdldE5hbWU9Uyg1NzUsZnVuY3Rpb24oKXtyZXR1cm4gYS5aKCl9KX07Xy5KKGpwLHlqKTt2YXIga3A9e1JFV0FSREVEOjQsVE9QX0FOQ0hPUjoyLEJPVFRPTV9BTkNIT1I6MyxJTlRFUlNUSVRJQUw6NX0sbHA9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDM6cmV0dXJuIDE7Y2FzZSA1OnJldHVybiA4O2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxtcD1mdW5jdGlvbigpe3ZhciBhPVhiKCk7YS5lbnVtc3x8KGEuZW51bXM9e091dE9mUGFnZUZvcm1hdDprcH0pfTt2YXIgbnA9ZnVuY3Rpb24oKXt0aGlzLmw9W107dGhpcy52PVtdO3RoaXMuaj17fX0sb3A9ZnVuY3Rpb24oYSxiKXtpZighXy5BKGEubCxcImluY2x1ZGVzXCIpLmNhbGwoYS5sLGIpKXN3aXRjaChiKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYztpZihjPV8ueSgxMTYpP3JuW2JdOnBuW2JdKXt2YXIgZD1iK1wiX2hvc3RwYWdlX2xpYnJhcnlcIjtpZihjPXVnKGRvY3VtZW50LGxnKGMpKSljLmlkPWR9YS5sLnB1c2goYik7Yj1uZXcgc24oYik7YS52LnB1c2goYik7YT1YYigpO2EuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zfHwoYS5ob3N0cGFnZUxpYnJhcnlUb2tlbnM9e30pO2EuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zW2Iual09Yi5sfX0scHA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5qW2JdfHxbXX07SWMobnApO3ZhciBxcD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3RoaXMubD1cIlwiO3RoaXMudj1udWxsO3ZhciBiPVRuLkIoKSxjPXt9O3RoaXNbM109KGNbMTldPWZ1bmN0aW9uKCl7cmV0dXJuISF4KGIuaiwxMCl9LGNbMTRdPUJrLGNbMTNdPWZ1bmN0aW9uKGQpe2Zvcih2YXIgZT1bXSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoOysrZillW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZS5zb21lKGZ1bmN0aW9uKGcpe3JldHVybiAwPT1hLmwubGFzdEluZGV4T2YoZywwKX0pfSxjWzEyXT1mdW5jdGlvbigpe3JldHVybiEheChiLmosNil9LGNbMTFdPXZuLGNbMTVdPWZ1bmN0aW9uKGQpe3JldHVybiBhLmooZCl9LGNbN109ZnVuY3Rpb24oKXtyZXR1cm4hKCFfLnIuY3J5cHRvfHwhXy5yLmNyeXB0by5zdWJ0bGUpfSxjWzFdPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PVJnKCl9LGMpO2M9e307dGhpc1s0XT0oY1s4XT1mdW5jdGlvbihkKXtyZXR1cm4gbm4oYS52LGQpfSxjKTt0aGlzWzVdPXt9fTtJYyhxcCk7dmFyIHJwPXtnZTpcImltcHJlc3Npb25WaWV3YWJsZVwiLG1lOlwicmV3YXJkZWRTbG90Q2FuY2VsZWRcIixuZTpcInJld2FyZGVkU2xvdENsb3NlZFwiLG9lOlwicmV3YXJkZWRTbG90Q29tcGxldGVkXCIscGU6XCJyZXdhcmRlZFNsb3RHcmFudGVkXCIscWU6XCJyZXdhcmRlZFNsb3RSZWFkeVwiLHJlOlwic2xvdEFkZGVkXCIsc2U6XCJzbG90T25sb2FkXCIsdGU6XCJzbG90UmVuZGVyRW5kZWRcIix1ZTpcInNsb3RSZXF1ZXN0ZWRcIix2ZTpcInNsb3RSZXNwb25zZVJlY2VpdmVkXCIsd2U6XCJzbG90VmlzaWJpbGl0eUNoYW5nZWRcIn0sc3A9ZnVuY3Rpb24oYSxiKXt0aGlzLnNsb3Q9YTt0aGlzLnNlcnZpY2VOYW1lPWJ9LHRwPWZ1bmN0aW9uKGEsYil7c3AuY2FsbCh0aGlzLGEsYik7dGhpcy5pc0VtcHR5PSExO3RoaXMuc2xvdENvbnRlbnRDaGFuZ2VkPSEwO3RoaXMuc291cmNlQWdub3N0aWNMaW5lSXRlbUlkPXRoaXMuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkPXRoaXMubGluZUl0ZW1JZD10aGlzLmxhYmVsSWRzPXRoaXMuY3JlYXRpdmVUZW1wbGF0ZUlkPXRoaXMuY3JlYXRpdmVJZD10aGlzLmNhbXBhaWduSWQ9dGhpcy5hZHZlcnRpc2VySWQ9dGhpcy5zaXplPW51bGw7dGhpcy5pc0JhY2tmaWxsPSExO3RoaXMuY29tcGFueUlkcz10aGlzLnlpZWxkR3JvdXBJZHM9bnVsbH07Xy5KKHRwLHNwKTt2YXIgdXA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih1cCxzcCk7dmFyIHZwPWZ1bmN0aW9uKGEsYixjKXtzcC5jYWxsKHRoaXMsYSxiKTt0aGlzLmluVmlld1BlcmNlbnRhZ2U9Y307Xy5KKHZwLHNwKTt2YXIgd3A9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih3cCxzcCk7dmFyIHhwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooeHAsc3ApO3ZhciB5cD1mdW5jdGlvbihhLGIsYyxkKXtzcC5jYWxsKHRoaXMsYSxiKTt0aGlzLm1ha2VSZXdhcmRlZFZpc2libGU9Yzt0aGlzLnBheWxvYWQ9ZH07Xy5KKHlwLHNwKTt2YXIgenA9ZnVuY3Rpb24oYSxiLGMpe3NwLmNhbGwodGhpcyxhLGIpO3RoaXMucGF5bG9hZD1jfTtfLkooenAsc3ApO3ZhciBBcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEFwLHNwKTt2YXIgQnA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihCcCxzcCk7dmFyIENwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooQ3Asc3ApO3ZhciBEcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKERwLHNwKTt2YXIgRXA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihFcCxzcCk7dmFyIEZwPW5ldyB0Lk1hcCxHcD1uZXcgdC5TZXQsSHA9ZnVuY3Rpb24oKXtlbC5jYWxsKHRoaXMpO0dwLmFkZCh0aGlzKTt0aGlzLmw9W107dGhpcy5qPSExO3RoaXMuSz1uZXcgdC5NYXA7dGhpcy5sb2c9amwuQigpO3RoaXMubG9nLmluZm8oSmwodGhpcy5aKCkpLHRoaXMpO3RoaXMuQT1bXX07Xy5KKEhwLG9sKTtIcC5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpwKHRoaXMpfTtIcC5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVyblwidW52ZXJzaW9uZWRcIn07dmFyIGlwPWZ1bmN0aW9uKGEpe2lmKCFhLmope2Euaj0hMDthLk5iKCk7Zm9yKHZhciBiPV8uRihhLkEpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXtjPWMudmFsdWU7dHJ5e2MoKX1jYXRjaChkKXt9fWEuQS5sZW5ndGg9MH19LElwPWZ1bmN0aW9uKGEsYil7aWYoYS5qKXRyeXtiKCl9Y2F0Y2goYyl7fWVsc2UgYS5BLnB1c2goYil9O0hwLnByb3RvdHlwZS54YT1mdW5jdGlvbihhLGIpe3RoaXMubC5wdXNoKGEpO3ZhciBjPW5ldyB4cChnbChhKSx0aGlzLlooKSk7SnAodGhpcyxcInNsb3RBZGRlZFwiLGMpO3RoaXMubG9nLmluZm8oTmwodGhpcy5aKCksYS5nZXRBZFVuaXRQYXRoKCkpLHRoaXMsYSk7c2YoYiw0LHRoaXMuWigpKX07SHAucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmwsYz1iLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gXy5BKGEsXCJpbmNsdWRlc1wiKS5jYWxsKGEsZCl9KTtjLmZvckVhY2goZnVuY3Rpb24oZCl7YWQoYixkKX0pO3JldHVybiBjfTt2YXIgS3A9ZnVuY3Rpb24oYSxiKXtrYihcImdwdF9jYWxsYmFja191c2FnZVwiLGZ1bmN0aW9uKGMpe2xiKGMpO0UoYyxcInR5cGVcIixiKTt2YXIgZD1hLmwuZmlsdGVyKGZ1bmN0aW9uKGYpe18ueSg0MTIpPyhmPVdvKCkuai5nZXQoZiksZj0hKCFmfHwhZi5vYykpOmY9MDxmLkE7cmV0dXJuIGZ9KS5sZW5ndGgsZT1hLmwuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBfLnkoNDEyKT8hIWdwKFdvKCksZik6ISFmLkR9KS5sZW5ndGg7RShjLFwibmZldGNoXCIsZCk7RShjLFwibnJlbmRcIixlKX0pfTtIcC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBifHxcInN0cmluZ1wiIT09dHlwZW9mIGEpcmV0dXJuIGE9cWwoXCJTZXJ2aWNlLmFkZEV2ZW50TGlzdGVuZXJcIixbYSxiXSksdGhpcy5sb2cuSihhLHRoaXMpLHRoaXM7aWYoXy55KDQxNikmJlwicmV3YXJkZWRTbG90Q2FuY2VsZWRcIj09PWEpdmFyIGM9ITE7ZWxzZSBhOntmb3IoYyBpbiBycClpZihycFtjXT09YSl7Yz0hMDticmVhayBhfWM9ITF9aWYoIWMpcmV0dXJuIHRoaXMubG9nLkoocm0oYSksdGhpcyksdGhpcztjPUxwKHRoaXMsYSk7Xy55KDQwOSkmJl8uQShjLFwiaW5jbHVkZXNcIikuY2FsbChjLGIpfHxjLnB1c2goYik7S3AodGhpcyxhKTtyZXR1cm4gdGhpc307dmFyIEpwPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1McChhLGIpO2QubGVuZ3RoJiZoaChmdW5jdGlvbigpe2Zvcih2YXIgZT1fLkYoZCksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Y9Zi52YWx1ZTt0cnl7ZihjKX1jYXRjaChrKXtmPWsmJlwic3RyaW5nXCI9PT10eXBlb2Ygay5uYW1lP2submFtZTpudWxsO3ZhciBnPWsmJlwic3RyaW5nXCI9PT10eXBlb2Ygay5tZXNzYWdlP2subWVzc2FnZTpudWxsLGg9XCJcIjtmJiZnP2g9ZitcIjogXCIrZzpmP2g9ZjpnJiYoaD1nKTthLmxvZy5KKHFtKGgpLGEpO3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGspfX19KX0sTHA9ZnVuY3Rpb24oYSxiKXthPV8ueSg0MDkpP0ZwOmEuSzt2YXIgYz1hLmdldChiKXx8W107YS5zZXQoYixjKTtyZXR1cm4gY307dmFyIE1wPWZ1bmN0aW9uKCl7dGhpcy5qPXt9O3RoaXMubD1qbC5CKCl9O01wLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy5qW2EuWigpXT1hfTtNcC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihhKXt2YXIgYj1udWxsO2EgaW4gdGhpcy5qJiYoYj10aGlzLmpbYV0pO3JldHVybiBifTt2YXIgTnA9ZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCk7bmooNik7Xy5KYihhLmosZnVuY3Rpb24oYil7Yi5qP2EubC5pbmZvKE1sKCksYik6aXAoYil9KX07TXAucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXtfLkpiKHRoaXMuaixmdW5jdGlvbihiKXtyZXR1cm4gYi5kZXN0cm95U2xvdHMoYSl9KX07SWMoTXApO1diKFwiZW5hYmxlU2VydmljZXNcIixHKDkxLGZ1bmN0aW9uKCl7aWYoXy55KDQwNikpe25qKDYpO2Zvcih2YXIgYT1fLkYoXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LEdwKSksYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpaXAoYi52YWx1ZSl9ZWxzZSBOcCgpfSkpO3ZhciBPcD1mdW5jdGlvbihhKXtyZXR1cm4hIUJnKGtwLGZ1bmN0aW9uKGIpe3JldHVybiBiPT1hfSl9LFJwPWZ1bmN0aW9uKGEpe3JldHVybih6PUhrKFBwKFFwLkIoKSkpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixhKX0sU3A9amQoZnVuY3Rpb24oKXtkaChcIlRoZSBnb29nbGV0YWcucHViYWRzKCkuZGVmaW5lUGFzc2JhY2sgZnVuY3Rpb24gaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIGZ1bmN0aW9uIG1heSBicmVhayBpbiBjZXJ0YWluIGNvbnRleHRzLCBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vZG91YmxlY2xpY2stZ3B0L2d1aWRlcy9wYXNzYmFjay10YWdzI2NvbnN0cnVjdF9wYXNzYmFja190YWdzIGZvciBob3cgdG8gY29ycmVjdGx5IGNyZWF0ZSBhIHBhc3NiYWNrLlwiKX0pLFRwPWZ1bmN0aW9uKGEpe3ZhciBiPV8uciE9Xy5yLnRvcD81MTI6MDtpZihiKXJldHVybiBiO3ZhciBjPV8uQW4oXy5yKTt2YXIgZD1jLmFkQ291bnQ/MT09YXx8Mj09YT8hKCFjLmFkQ291bnRbMV0mJiFjLmFkQ291bnRbMl0pOihkPWMuYWRDb3VudFthXSkmJjI3IT09YSYmMjYhPT1hJiYxMCE9PWEmJjQwIT09YT8xPD1kOiExOiExO2QmJihifD02NCk7Yy5pbXByb3ZlQ29sbGlzaW9uRGV0ZWN0aW9uPTE7Yz0wPT09UmcoKTtzd2l0Y2goYSl7Y2FzZSAyOmNhc2UgMTpjJiYoYnw9NTM2ODcwOTEyKTtjPV8ueSgzODYpP3ZvaWQgMDo0MjA7Yz12b2lkIDA9PT1jP0JuOmM7ZD0wO3RyeXtkfD1fLnIhPV8uci50b3A/NTEyOjA7dmFyIGU9TWF0aC5taW4oXy5yLnNjcmVlbi53aWR0aHx8MCxfLnIuc2NyZWVuLmhlaWdodHx8MCk7ZHw9ZT8zMjA+ZT84MTkyOjA6MjA0ODt2YXIgZjtpZihmPV8uci5uYXZpZ2F0b3Ipe3ZhciBnPV8uci5uYXZpZ2F0b3IudXNlckFnZW50O2Y9L0ZpcmVmb3gvLnRlc3QoZyl8fC9BbmRyb2lkIDIvLnRlc3QoZyl8fC9pUGhvbmUgT1MgWzM0XV8vLnRlc3QoZyl8fC9XaW5kb3dzIFBob25lICg/Ok9TICk/WzY3XS8udGVzdChnKX1kfD1mPzEwNDg1NzY6MH1jYXRjaChoKXtkfD0zMn1lPWQ7Zj0wO3RyeXtmfD1fLkNuKF8ucik/MDo4LGZ8PUZuKF8ucixjKSxmfD1HbihfLnIpfWNhdGNoKGgpe2Z8PTMyfWc9ITE7aWYoIV8ueSgyNjkpKXtzd2l0Y2goYSl7Y2FzZSAyOmE9S24oMCxNYXRoLnJvdW5kKF8uci5pbm5lcldpZHRoLzMyMCo1MCsxNSkpO2c9Sm4oYSk7YnJlYWs7Y2FzZSAxOmlmKGE9Xy55KDE5MDEpKWE9Xy5yLmlubmVySGVpZ2h0LGE9S24oYS1NYXRoLnJvdW5kKF8uci5pbm5lcldpZHRoLzMyMCo1MCsxNSksYSksYT1KbihhKTtnPWF9ZyYmKGZ8PTE2Nzc3MjE2KX1yZXR1cm4gYnxlfGY7Y2FzZSA4OnJldHVybiFfLnkoNDAwKSYmYyYmKGJ8PTUzNjg3MDkxMiksYnxQbihfLnIsITEsbnVsbCk7ZGVmYXVsdDpyZXR1cm4gYnwzMn19LFFwPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyB0Lk1hcDt0aGlzLm89bmV3IHQuTWFwO3RoaXMubD1uZXcgdC5NYXA7dGhpcy52PWpsLkIoKTtxcC5CKCkuaj1ScH07UXAucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcyxlPXZvaWQgMD09PWM/e306YztjPXZvaWQgMD09PWUua2I/dm9pZCAwOmUua2I7dmFyIGY9dm9pZCAwPT09ZS56Yz8hMTplLnpjLGc9dm9pZCAwPT09ZS5pbnN0YW5jZT92b2lkIDA6ZS5pbnN0YW5jZTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGF8fDA+PWEubGVuZ3RofHwhYilyZXR1cm57fTtlPWxwKHZvaWQgMD09PWUuZm9ybWF0PzA6ZS5mb3JtYXQpO2lmKG51bGwhPWUpe2lmKFRwKGUpKXJldHVybnt9O0huKGUpfWYmJlNwKCk7Zj12b2lkIDA9PT1nP3RoaXMuby5nZXQoYSl8fE51bWJlcihmKTpnO3ZhciBoPWN8fFwiZ3B0X3VuaXRfXCIrYStcIl9cIitmO2I9VXAoYSxmLGIsaCk7aWYoIWIpcmV0dXJuIHRoaXMudi5lcnJvcihGbChoKSkse307Yz1iLnNsb3Q7Zz1iLmNhO3ZhciBrPWIuc2xvdElkO3RoaXMuby5zZXQoYSxmKzEpO3RoaXMuai5zZXQoayxjKTt0aGlzLmwuc2V0KGgsayk7Xy5SKGssZnVuY3Rpb24oKXtkLmouZGVsZXRlKGspO2QubC5kZWxldGUoaCl9KTtaay5wdXNoKGMpO3JldHVybntzbG90OmMsRmE6Z319O3ZhciBQcD1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LF8uQShhLmosXCJ2YWx1ZXNcIikuY2FsbChhLmopKX0sVnA9ZnVuY3Rpb24oYSl7dmFyIGI9W107cHAobnAuQigpLGEpLmZvckVhY2goZnVuY3Rpb24oYyl7KGM9dW8oYyxkb2N1bWVudCkpJiZiLnB1c2goYy5jb250ZW50V2luZG93KX0pO3JldHVybiBifSxXcD1mdW5jdGlvbihhKXthPV8uRihhKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKXtiPWIudmFsdWU7dmFyIGM9VG4uQigpLGQ9Yi5nZXRTbG90RWxlbWVudElkKCksZT1jLmxbZF07ZGVsZXRlIGMubFtkXTtjPWU7dmgoYik7Yz1scChnayhjKSk7bnVsbCE9YyYmKGQ9Xy5Bbih3aW5kb3cpLChlPWQuYWRDb3VudCYmZC5hZENvdW50W2NdKSYmKGQuYWRDb3VudFtjXT1lLTEpKTthZChaayxiKX19LFhwPWZ1bmN0aW9uKGEsYil7aWYoYiYmIUFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGEudi5KKHFsKFwiZ29vZ2xldGFnLmRlc3Ryb3lTbG90c1wiLFtiXSkpLCExO2I/KFVhKGIpLGE9Yi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGQmJiFkLmxhfSkpOmE9UHAoYSk7aWYoIWF8fDA9PWEubGVuZ3RoKXJldHVybiExO2lmKF8ueSg0MDYpKXtiPV8uRihfLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksR3ApKTtmb3IodmFyIGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWMudmFsdWUuZGVzdHJveVNsb3RzKGEpfWVsc2UgTXAuQigpLmRlc3Ryb3lTbG90cyhhKTtXcChhKTtyZXR1cm4hMH0sWXA9ZnVuY3Rpb24oYSxiKXthPV8uRihfLkEoYS5qLFwidmFsdWVzXCIpLmNhbGwoYS5qKSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZihjPWMudmFsdWUsYy5nZXRTbG90SWQoKS5qPT09YilyZXR1cm4gYztyZXR1cm4gbnVsbH0sWnA9ZnVuY3Rpb24oYSl7dmFyIGI9UXAuQigpO2E9emooYSxrbyk7cmV0dXJuISFhJiZiLmouaGFzKGEuZ2V0U2xvdElkKCkpfSwkcD1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ITE6ZDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEmJih2b2lkIDA9PT1jfHxcInN0cmluZ1wiPT09dHlwZW9mIGMpKXt2YXIgZT1RcC5CKCk7cmV0dXJuIGUmJmUuYWRkKGEsYix7a2I6Yyx6YzpkfSl9cmV0dXJue319LGFxPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4oYT0kcChhLGIsYykuc2xvdCkmJmdsKGEpfHxudWxsfSxicT1mdW5jdGlvbihhKXt2YXIgYj1RcC5CKCk7cmV0dXJuIGImJm51bGw9PWE/WHAoYik6YiYmQXJyYXkuaXNBcnJheShhKT8oYT1hLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gemooYyxrbyl9KSxYcChiLGEpKTohMX0sY3E9ZnVuY3Rpb24oYSxiKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGF8fCEobnVsbD09Ynx8XCJzdHJpbmdcIj09PXR5cGVvZiBifHxcIm51bWJlclwiPT09dHlwZW9mIGImJk9wKGIpKSlyZXR1cm4gbnVsbDthOnt2YXIgYz1cIm51bWJlclwiPT09dHlwZW9mIGI/YjoxO2I9XCJzdHJpbmdcIj09PXR5cGVvZiBiP2I6dm9pZCAwO2I9UXAuQigpLmFkZChhLFsxLDFdLHtrYjpiLGZvcm1hdDpjfSk7YT1iLnNsb3Q7Yj1iLkZhO2lmKGEmJmIpe2lmKDU9PT1jJiZfLnkoMzIzKSl7Yz1udWxsO2JyZWFrIGF9RChiLDE1LGMpfWM9YXx8bnVsbH1yZXR1cm4gYyYmZ2woYyl9LFVwPWZ1bmN0aW9uKGEsYixjLGQpe2lmKFFwLkIoKS5sLmhhcyhkKSlyZXR1cm4gbnVsbDt2YXIgZT1uZXcgZGs7ZWsoRChlLDEsYSksZCk7Yz1uayhjKTt2YXIgZj1jLkhhO3dmKGUsNSxjLlhjKTtudWxsIT09ZiYmdmYoZSwxNixmKTtVbihlKTt2YXIgZz1uZXcgaW8oYSxiLGQpLGg9bmV3IGtvKGcpO18ud2goaCxnKTtpZihfLnkoNDEyKSl7amwuQigpLmluZm8ocmwoZy50b1N0cmluZygpKSxudWxsLGgpO3ZhciBrPW51bGwsbD1udWxsO18uUihoLGZ1bmN0aW9uKCl7amwuQigpLmluZm8odW0oZy50b1N0cmluZygpKSxudWxsLGgpO2w9az1udWxsfSk7Xy5SKGgsT2IoSS5CKCksSW8sZyw3NjgsZnVuY3Rpb24oKXtrPWpsLkIoKS5pbmZvKHNsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgpO1dpKHRrLkIoKSxcIjdcIiw5LGguQS0xLDAsaC5sKX0pKTtfLlIoaCxPYihJLkIoKSxKbyxnLDc2OSxmdW5jdGlvbigpe2psLkIoKS5pbmZvKHRsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgsayk7az1udWxsfSkpO18uUihoLE9iKEkuQigpLENvLGcsNzcwLGZ1bmN0aW9uKCl7bD1qbC5CKCkuaW5mbyh1bChoLmdldEFkVW5pdFBhdGgoKSksbnVsbCxoKX0pKTtfLlIoaCxPYihJLkIoKSxQYixnLDc3MSxmdW5jdGlvbigpe2psLkIoKS5pbmZvKHZsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgsbCk7bD1udWxsfSkpfXJldHVybntzbG90OmgsY2E6ZSxzbG90SWQ6Z319O0ljKFFwKTthcT1HKDc0LGFxKTticT1HKDc1LGJxKTtjcT1HKDczLGNxKTt2YXIgZHE9Ryg5NSxmdW5jdGlvbihhKXt2YXIgYj1qbC5CKCk7dmFyIGM9bnVsbDt2YXIgZD1cIlwiO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSl7ZD1hO3ZhciBlPVlwKFFwLkIoKSxkKX1lbHNlIF8uTWMoYSkmJjE9PWEubm9kZVR5cGU/KGM9YSxkPWMuaWQsZT1ZcChRcC5CKCksZCkpOmU9emooYSxrbyk7aWYoZSl7aWYoYT1Ubi5CKCkuaixkPVduKFRuLkIoKSxlLmdldFNsb3RFbGVtZW50SWQoKSkpe2E9S2soYSxWbigpKTtpZihfLnkoNDIzKSl7aWYoeChkLDE5KSlyZXR1cm59ZWxzZSBpZihlLmVjKXJldHVybjtlLm1jPWM7aWYocGEoZSl8fHNrKGdrKGQpKSlmb3IoXy55KDQyMyk/RChkLDE5LCEwKTplLmVjPSEwLGI9Xy5GKEIoZCw0KSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1BaihjLnZhbHVlKSxjPXpqKGMsSHApLGMuaiYmYy5YYihhLGUpO2Vsc2UgYi5KKENsKFN0cmluZyhkLmdldEFkVW5pdFBhdGgoKSksU3RyaW5nKEIoZCwyKSkpLG51bGwsZSl9fWVsc2UgZD9iLmVycm9yKEVsKFN0cmluZyhkKSkpOmIuZXJyb3IoRGwoU3RyaW5nKGEpKSl9KTt2YXIgS2E9dmQoXCJodHRwczovL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vc29kYXIvJXtiYXNlbmFtZX0uanNcIik7dmFyIEZhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ZC5yZWFkeVN0YXRlPT09ZC5ET05FJiYoMjAwPD1kLnN0YXR1cyYmMzAwPmQuc3RhdHVzP2IoSlNPTi5wYXJzZShkLnJlc3BvbnNlVGV4dCkpOmMoKSl9O2Qub3BlbihcIkdFVFwiLGEsITApO2Quc2VuZCgpfSl9O3ZhciBlcT1mdW5jdGlvbihhKXt0aGlzLmo9YS5qO3RoaXMubD1hLmw7dGhpcy52PWEudjt0aGlzLm9iPWEub2I7dGhpcy5MPWEuTDt0aGlzLmViPWEuZWI7dGhpcy5BYj1hLkFifSxmcT1mdW5jdGlvbihhLGIpe3RoaXMuaj1hO3RoaXMubD1iO3RoaXMudj1cInB0XCI7dGhpcy5MPXdpbmRvdzt0aGlzLmViPVwiZW52XCI7dGhpcy5BYj1cIm5cIn07dmFyIGhxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxncSxudWxsKX07SyhocSxNKTt2YXIgaXE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soaXEsTSk7dmFyIGpxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGpxLE0pO3ZhciBrcT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhrcSxNKTt2YXIgZ3E9WzEsMl0sbHE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1CKGEsMSk7bnVsbCE9YyYmYmYoYiwxLGMpO2M9TyhhLGpxLDIpO251bGwhPWMmJmVmKGIsMixjKTtjPU8oYSxqcSwzKTtudWxsIT1jJiZlZihiLDMsYyk7Yz1CKGEsNCk7bnVsbCE9YyYmY2YoYiw0LGMpO2M9QihhLDUpO251bGwhPWMmJmNmKGIsNSxjKX0sZGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1CKGEsMSk7bnVsbCE9YyYmYmYoYiwxLGMpO2M9QihhLDIpO251bGwhPWMmJmJmKGIsMixjKTtjPUIoYSwzKTtudWxsIT1jJiZiZihiLDMsYyl9O2lxLnByb3RvdHlwZS4kYj1mdW5jdGlvbihhKXtEKHRoaXMsNCxhKX07dmFyIG1xPWZ1bmN0aW9uKGEsYil7dmFyIGM9QihhLDEpO251bGwhPWMmJmNmKGIsMSxjKTtjPUIoYSwyKTtudWxsIT1jJiZjZihiLDIsYyk7Yz1CKGEsMyk7bnVsbCE9YyYmYWYoYiwzLGMpO2M9QihhLDQpO251bGwhPWMmJiRlKGIsNCxjKTtjPUIoYSw1KTtudWxsIT1jJiYkZShiLDUsYyk7Yz1CKGEsNik7bnVsbCE9YyYmJGUoYiw2LGMpfTtrcS5wcm90b3R5cGUuJGI9ZnVuY3Rpb24oYSl7RCh0aGlzLDIsYSl9O3ZhciBucT1mdW5jdGlvbihhKXt2YXIgYj0obmV3IFBmKS5nZXRUaW1lKCk7cmV0dXJuIEQoYSwzLGIpfTt2YXIgb3E9bmF2aWdhdG9yLHBxPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBvcS5qYXZhRW5hYmxlZCgpfWNhdGNoKGEpe3JldHVybiExfX0scXE9ZnVuY3Rpb24oYSl7dmFyIGI9MSxjO2lmKHZvaWQgMCE9YSYmXCJcIiE9YSlmb3IoYj0wLGM9YS5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YS5jaGFyQ29kZUF0KGMpO2I9KGI8PDYmMjY4NDM1NDU1KStkKyhkPDwxNCk7ZD1iJjI2NjMzODMwNDtiPTAhPWQ/Yl5kPj4yMTpifXJldHVybiBifSxycT1mdW5jdGlvbihhLGIpe2lmKCFhfHxcIm5vbmVcIj09YSlyZXR1cm4gMTthPVN0cmluZyhhKTtcImF1dG9cIj09YSYmKGE9YixcInd3dy5cIj09YS5zdWJzdHJpbmcoMCw0KSYmKGE9YS5zdWJzdHJpbmcoNCxhLmxlbmd0aCkpKTtyZXR1cm4gcXEoYS50b0xvd2VyQ2FzZSgpKX0sc3E9L15cXHMqX2dhPVxccyoxXFwuKFxcZCspW14uXSpcXC4oLio/KVxccyokLyx0cT0vXltePV0rPVxccypHQTFcXC4oXFxkKylbXi5dKlxcLiguKj8pXFxzKiQvLHVxPS9eXFxzKl9nYT1cXHMqKCkoYW1wLVtcXHcuLV17MjIsNjR9KSQvO3ZhciB3cT1mdW5jdGlvbihhKXtrZih0aGlzLGEsdnEsbnVsbCl9O0sod3EsTSk7dmFyIHZxPVsxNV0seHE9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgd3EsYj1fLnkoNzYpO3JldHVybiByZihhLDcsYil9O3ZhciB5cT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07Syh5cSxNKTt2YXIgenE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soenEsTSk7QmQodWQodmQoXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9vc2QuanNcIikpKTt2YXIgQXE9ZnVuY3Rpb24oYSxiKXtpZighKHdpbmRvdyYmTWF0aC5yYW5kb20mJm5hdmlnYXRvcikpcmV0dXJuLTE7aWYod2luZG93Ll9fZ29vZ2xlX2FkX3VybHMpe3ZhciBjPXdpbmRvdy5fX2dvb2dsZV9hZF91cmxzO3RyeXtpZihjJiZjLmdldE9zZUlkKCkpcmV0dXJuIGMuZ2V0T3NlSWQoKX1jYXRjaChlKXt9fWlmKCF3aW5kb3cuX19nb29nbGVfYWRfdXJsc19pZCl7Yz13aW5kb3cuZ29vZ2xlX2VuYWJsZV9vc2U7aWYoITA9PT1jKXZhciBkPTI7ZWxzZSExIT09YyYmKGQ9eGcoWzBdLGEpLG51bGw9PWQmJigoZD14ZyhbMl0sYikpfHwoZD0zKSkpO2lmKCFkKXJldHVybiAwO3dpbmRvdy5fX2dvb2dsZV9hZF91cmxzX2lkPWR9cmV0dXJuIHdpbmRvdy5fX2dvb2dsZV9hZF91cmxzX2lkfTt2YXIgQnE9ZnVuY3Rpb24oKXt9O18ucD1CcS5wcm90b3R5cGU7Xy5wLmdldE5ld0Jsb2Nrcz1mdW5jdGlvbigpe307Xy5wLnNldHVwT3NlPWZ1bmN0aW9uKCl7fTtfLnAuZ2V0T3NlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4tMX07Xy5wLmdldENvcnJlbGF0b3I9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifTtfLnAubnVtQmxvY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O18ucC5yZWdpc3RlckFkQmxvY2s9ZnVuY3Rpb24oKXt9O18ucC51bmxvYWRBZEJsb2NrPWZ1bmN0aW9uKCl7fTtfLnAuc2V0TG9hZE9zZEpzT25QdWJXaW5kb3c9ZnVuY3Rpb24oKXt9O3ZhciBDcT1uZXcgVWkoMSxvaSgpKSxEcT1mdW5jdGlvbigpe3ZhciBhPW9pKCk7YSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nJiYhYS5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcmJihDcS5qPSExLENxLmV2ZW50cyE9Q3EubC5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlJiYoVGkoKSYmXy5WYyhDcS5ldmVudHMsVmkpLENxLmV2ZW50cy5sZW5ndGg9MCkpfTsoZnVuY3Rpb24oKXt2YXIgYT1vaSgpO2EmJmEuZG9jdW1lbnQmJihcImNvbXBsZXRlXCI9PWEuZG9jdW1lbnQucmVhZHlTdGF0ZT9EcSgpOkNxLmomJl8udihhLFwibG9hZFwiLGZ1bmN0aW9uKCl7RHEoKX0pKX0pKCk7RGF0ZS5ub3coKTt2YXIgRXE9ZnVuY3Rpb24oYSxiLGMpe2EmJihjP18udihhLFwibG9hZFwiLGIpOl8ucWIoYSxcImxvYWRcIixiKSl9LEZxPWZ1bmN0aW9uKCl7dmFyIGE9KG9pKCl8fF8ucikuZ29vZ2xlX29zZF9hbWNiO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH0sR3E9QmQodWQodmQoXCJodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vYWN0aXZldmlldy9qcy9jdXJyZW50L29zZC5qc1wiKSkpLEhxPWZ1bmN0aW9uKGEpe2E9e2NiOnZvaWQgMD09PWE/XCIvcjIwMTAwMTAxXCI6YX07dmFyIGI9eWQoR3EpLnRvU3RyaW5nKCk7Yj1DZC5leGVjKGIpO3ZhciBjPWJbM118fFwiXCI7cmV0dXJuIEJkKGJbMV0rRGQoXCI/XCIsYlsyXXx8XCJcIixhKStEZChcIiNcIixjLHZvaWQgMCkpfTt2YXIgSXE9ZnVuY3Rpb24oYSxiKXt0aGlzLmw9YiYmYi5sP2IubDowO3RoaXMubz1iP2IubzpcIlwiO3RoaXMuaj1iJiZiLmo/Yi5qOltdO3RoaXMudj0hMDtpZihiKWZvcihhPTA7YTx0aGlzLmoubGVuZ3RoOysrYSl0aGlzLmpbYV0ubz0hMH0sS3E9ZnVuY3Rpb24oYSl7dmFyIGI9YS52P29pKCk6Xy5yO2E9SnE7Yj1ifHxfLnI7Yi5nb29nbGVfb3NkX2xvYWRlZD9hPSExOih1ZyhiLmRvY3VtZW50LGEpLGE9Yi5nb29nbGVfb3NkX2xvYWRlZD0hMCk7YSYmcGkoKX07Xy5wPUlxLnByb3RvdHlwZTtfLnAuZ2V0TmV3QmxvY2tzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMuai5sZW5ndGgsZD0wO2Q8YztkKyspe3ZhciBlPXRoaXMualtkXTshZS52JiZlLmomJihlLnY9ITAsYShlLmosZS5BLGUuRyxlLmwsdm9pZCAwLGUubyxlLkMsZS5VLGUuRCkpfWImJigob2koKXx8Xy5yKS5nb29nbGVfb3NkX2FtY2I9YSl9O18ucC5zZXR1cE9zZT1mdW5jdGlvbihhKXtpZih0aGlzLmdldE9zZUlkKCkpcmV0dXJuIHRoaXMuZ2V0T3NlSWQoKTt2YXIgYj1BcShMcSxNcSk7aWYoIWIpcmV0dXJuIDA7dGhpcy5sPWI7dGhpcy5vPVN0cmluZyhhfHwwKTtyZXR1cm4gdGhpcy5nZXRPc2VJZCgpfTtfLnAuZ2V0T3NlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93JiZNYXRoLnJhbmRvbSYmbmF2aWdhdG9yP3RoaXMubDotMX07Xy5wLmdldENvcnJlbGF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTtfLnAubnVtQmxvY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5sZW5ndGh9O18ucC5yZWdpc3RlckFkQmxvY2s9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Zz12b2lkIDA9PT1nP2Z1bmN0aW9uKCl7fTpnO2M9RnEoKTtlPV8uTmkoKXx8LTE7Zj1fLnIucGFnZVlPZmZzZXQ7MDw9Znx8KGY9LTEpO2MmJmQ/YyhkLGEsYiwhMSx2b2lkIDAsITEsZyxlLGYpOihnPW5ldyBOcShhLGIsZCxnLGUsZiksdGhpcy5qLnB1c2goZyksRXEoZCxnLm0sITApLEpxfHwoXy5UaChfLnIsXCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9nZW5fMjA0P2lkPW9zZCZyPW9tJnJzPVwiK2IrKFwiJnJlcT1cIithKSksSnE9SHEoXCIvcjIwMTAwMTAxXCIpKSxLcSh0aGlzKSl9O18ucC51bmxvYWRBZEJsb2NrPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/ITE6YztiPXRoaXMudj9vaSgpOndpbmRvdzt2b2lkIDAhPT1iLkdvb2dfT3NkX1VubG9hZEFkQmxvY2smJmIuR29vZ19Pc2RfVW5sb2FkQWRCbG9jayhhKTtjJiYoYz1laCh0aGlzLmosZnVuY3Rpb24oZCl7cmV0dXJuIGQuaj09YX0pKSYmRXEoYSxjLm0sITEpfTtfLnAuc2V0TG9hZE9zZEpzT25QdWJXaW5kb3c9ZnVuY3Rpb24oYSl7dGhpcy52PWF9O3ZhciBPcT1mdW5jdGlvbigpe3ZhciBhPW9pKCksYj1hLl9fZ29vZ2xlX2FkX3VybHM7aWYoIWIpcmV0dXJuIGEuX19nb29nbGVfYWRfdXJscz1uZXcgSXEoYSk7dHJ5e2lmKDA8PWIuZ2V0T3NlSWQoKSlyZXR1cm4gYn1jYXRjaChjKXt9dHJ5e3JldHVybiBhLl9fZ29vZ2xlX2FkX3VybHM9bmV3IElxKGEsYil9Y2F0Y2goYyl7cmV0dXJuIGEuX19nb29nbGVfYWRfdXJscz1uZXcgSXEoYSl9fSxKcT1udWxsLE1xPTAsTHE9MCxOcT1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9dGhpcztkPXZvaWQgMD09PWQ/Xy5IYzpkO3RoaXMuQT1hO3RoaXMuRz1iO3RoaXMuaj1jO3RoaXMubz10aGlzLnY9dGhpcy5sPSExO3RoaXMuQz1kO3RoaXMuVT12b2lkIDA9PT1lPy0xOmU7dGhpcy5EPXZvaWQgMD09PWY/LTE6Zjt0aGlzLm09ZnVuY3Rpb24oKXtyZXR1cm4gZy5sPSEwfX07Q2MoXCJHb29nX0FkU2Vuc2VfZ2V0QWRBZGFwdGVySW5zdGFuY2VcIixPcSk7Q2MoXCJHb29nX0FkU2Vuc2VfT3NkQWRhcHRlclwiLElxKTt2YXIgUHE9W1wiYXV0b1wiLFwiaW5oZXJpdFwiLFwiMTAwJVwiXSxRcT1QcS5jb25jYXQoW1wibm9uZVwiXSksUnE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2U9dm9pZCAwPT09ZT8xMDplO2Y9dm9pZCAwPT09Zj8xMDpmO2I9Yi5zdHlsZVNoZWV0cztpZighYilyZXR1cm4hMTt2YXIgZz1hLm1hdGNoZXN8fGEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxhLm1vek1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3Rvcnx8YS5vTWF0Y2hlc1NlbGVjdG9yO2U9LTE9PWU/SW5maW5pdHk6ZTtmPS0xPT1mP0luZmluaXR5OmY7Zm9yKHZhciBoPTA7aDxNYXRoLm1pbihiLmxlbmd0aCxlKTsrK2gpe3ZhciBrPXZvaWQgMDt0cnl7dmFyIGw9YltoXSxtPW51bGw7dHJ5e209bC5jc3NSdWxlc3x8bC5ydWxlc31jYXRjaChIKXtpZigxNT09SC5jb2RlKXRocm93IEguc3R5bGVTaGVldD1sLEg7fWs9bX1jYXRjaChIKXtjb250aW51ZX1pZihrJiYwPGsubGVuZ3RoKWZvcihtPTA7bTxNYXRoLm1pbihrLmxlbmd0aCxmKTsrK20pe3ZhciBuPWtbbV0scTtpZihxPTE9PW4udHlwZSl7cT1uO3ZhciB3PWM7cT1nLmNhbGwoYSxxLnNlbGVjdG9yVGV4dCkmJncocSl9aWYoIXEmJihxPWQmJjQ9PW4udHlwZSkpYTp7cT1hO3c9Yztmb3IodmFyIHU9ZixDPTA7QzxNYXRoLm1pbihuLmNzc1J1bGVzLmxlbmd0aCx1KTtDKyspe3ZhciBRPW4uY3NzUnVsZXNbQ10sTj13O2lmKGcuY2FsbChxLFEuc2VsZWN0b3JUZXh0KSYmTihRKSl7cT0hMDticmVhayBhfX1xPSExfWlmKHEpcmV0dXJuITB9fXJldHVybiExfSxUcT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD8xMDpkO3ZhciBlPXZvaWQgMD09PWU/MTA6ZTtpZighYSlyZXR1cm4hMDt2YXIgZj0hMDtZZyhhLGZ1bmN0aW9uKGcpe3JldHVybiBmPVNxKGcsYiwhMSxkLGUpfSx2b2lkIDA9PT1jPzEwMDpjKTtyZXR1cm4gZn0sU3E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLnN0eWxlO3JldHVybiBmJiZmLmhlaWdodCYmIV8uJGMoUHEsZi5oZWlnaHQpfHxmJiZmLm1heEhlaWdodCYmIV8uJGMoUXEsZi5tYXhIZWlnaHQpfHxScShhLGIuZG9jdW1lbnQsZnVuY3Rpb24oZyl7dmFyIGg9Zy5zdHlsZS5oZWlnaHQ7Zz1nLnN0eWxlW1wibWF4LWhlaWdodFwiXTtyZXR1cm4gaCYmIV8uJGMoUHEsaCl8fGcmJiFfLiRjKFFxLGcpfSxjLGQsZSk/ITE6ITB9O3ZhciBVcT12b2lkIDA7dmFyIFZxPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT93aW5kb3c6YTtyZXR1cm4gYS5fZ21wdG5sP1wiYWZtYS1ncHQtc2RrLWFcIjphLndlYmtpdCYmYS53ZWJraXQubWVzc2FnZUhhbmRsZXJzJiZhLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuX2dtcHRubD9cImFmbWEtZ3B0LXNkay1pXCI6bnVsbH0sV3E9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7dmFyIGM9VnEoYik7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGQ9bnVsbDt0cnl7XCJhZm1hLWdwdC1zZGstYVwiPT1jP2Q9Yi5fZ21wdG5sLnBtKFwiR0FNPVwiLGEpfHxcIjVcIjooZD1iLl9fZ21wdG5sX258fFwiNVwiLGIud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5fZ21wdG5sLnBvc3RNZXNzYWdlKFwiR0FNPVwiKSl9Y2F0Y2goZSl7cmV0dXJuXCIzXCJ9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBkP2Q6XCIzXCJ9O3ZhciBYcT1mdW5jdGlvbigpe3RoaXMubD1bXTt0aGlzLmo9LTF9O1hxLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ITA6YjswPD1hJiY1Mj5hJiYwPT09YSUxJiZ0aGlzLmxbYV0hPWImJih0aGlzLmxbYV09Yix0aGlzLmo9LTEpfTtYcS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5sW2FdfTt2YXIgWXE9ZnVuY3Rpb24oYSl7LTE9PWEuaiYmKGEuaj1XYyhhLmwsZnVuY3Rpb24oYixjLGQpe3JldHVybiBjP2IrTWF0aC5wb3coMixkKTpifSkpO3JldHVybiBhLmp9O3ZhciBacT0wLCRxPUJkKHVkKHZkKFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZXhwYW5zaW9uX2VtYmVkLmpzXCIpKSk7dmFyIGFyPWZ1bmN0aW9uKCl7dGhpcy5qPWZ1bmN0aW9uKCl7fX07SWMoYXIpO3ZhciBicj1mdW5jdGlvbigpe3ZhciBhPXFwLkIoKTthci5CKCkuaihhKX07dmFyIGNyPWZ1bmN0aW9uKCl7dmFyIGE9dm9pZCAwLGI9MjtpZih2b2lkIDA9PT1hKXt2YXIgYz12b2lkIDA9PT1jP18ucjpjO2E9Yy5nZ2VhY3x8KGMuZ2dlYWM9e30pfWI9dm9pZCAwPT09Yj8wOmI7Yz1hO3ZhciBkPWI7ZD12b2lkIDA9PT1kPzA6ZDtsaihrai5CKCksYyxkKTtjPWE7Yj12b2lkIDA9PT1iPzA6Yjtwaihvai5CKCksYyxiKTthci5CKCkuaj1qaihpaixhKTtvai5CKCkuaigpfTt2YXIgZHI9ZnVuY3Rpb24oKXt0aGlzLmo9d2luZG93O3RoaXMubD0wfSxlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e3djOkIoYiwyKS1hLmouRGF0ZS5ub3coKS8xRTMscGF0aDpCKGIsMyksZG9tYWluOkIoYiw0KSx2ZDohMX0sZT1CKGIsMSksZj1hLmouZG9jdW1lbnQ7Zj12b2lkIDA9PT1mP2RvY3VtZW50OmY7eChjLDUpJiYobmV3IFBhKGYpKS5zZXQoXCJfX2dhZHNcIixlLGQpO3goYyw1KSYmLjAxPmEuai5NYXRoLnJhbmRvbSgpJiYoYz1RYShcIl9fZ2Fkc1wiLGMsYS5qLmRvY3VtZW50KSxWaCh7ZG9tYWluOkIoYiw0KSxob3N0OmEuai5sb2NhdGlvbi5ob3N0LHN1Y2Nlc3M6Yz09PUIoYiwxKT9cIjFcIjpcIjBcIn0sXCJnZnBfY3dfc3RhdHVzXCIpKX07dmFyIGZyPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIShDZXx8RGV8fEJlKSYmKFBlfHx4ZXx8d2UpfSksZ3I9ZnVuY3Rpb24oYSxiLGMsZCxlKXtkPXZvaWQgMD09PWQ/XCJcIjpkO3ZhciBmPWEuY3JlYXRlRWxlbWVudChcImxpbmtcIik7dHJ5e2YucmVsPWMsZi5ocmVmPS0xIT1jLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcInN0eWxlc2hlZXRcIik/eWQoYikudG9TdHJpbmcoKTpiIGluc3RhbmNlb2YgeGQ/eWQoYikudG9TdHJpbmcoKTpiIGluc3RhbmNlb2YgXy5SZD9fLlNkKGIpOl8uU2QoXy5VZChiKSl9Y2F0Y2goZyl7cmV0dXJuIG51bGx9ZCYmXCJwcmVsb2FkXCI9PWMmJihmLmFzPWQpO2UmJmYuc2V0QXR0cmlidXRlKFwibm9uY2VcIixlKTthPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO2lmKCFhKXJldHVybiBudWxsO3RyeXthLmFwcGVuZENoaWxkKGYpfWNhdGNoKGcpe31yZXR1cm4gZn07dmFyIGhyPS9eXFwuZ29vZ2xlXFwuKGNvbT9cXC4pP1thLXpdezIsM30kLyxpcj0vXFwuKGNufGNvbVxcLmJpfGRvfHNsfGJhfGJ5fG1hfGFtKSQvLGpyPV8ucixscj1mdW5jdGlvbihhKXthPVwiaHR0cHM6Ly9hZHNlcnZpY2VcIisoYStcIi9hZHNpZC9pbnRlZ3JhdG9yLmpzXCIpO3ZhciBiPVtcImRvbWFpbj1cIitlbmNvZGVVUklDb21wb25lbnQoXy5yLmxvY2F0aW9uLmhvc3RuYW1lKV07a3JbM10+PVRjKCkmJmIucHVzaChcImFkc2lkPVwiK2VuY29kZVVSSUNvbXBvbmVudChrclsxXSkpO3JldHVybiBhK1wiP1wiK2Iuam9pbihcIiZcIil9LGtyLG1yLG5yPWZ1bmN0aW9uKCl7anI9Xy5yO2tyPWpyLmdvb2dsZVRva2VuPWpyLmdvb2dsZVRva2VufHx7fTt2YXIgYT1UYygpO2tyWzFdJiZrclszXT5hJiYwPGtyWzJdfHwoa3JbMV09XCJcIixrclsyXT0tMSxrclszXT0tMSxrcls0XT1cIlwiLGtyWzZdPVwiXCIpO21yPWpyLmdvb2dsZUlNU3RhdGU9anIuZ29vZ2xlSU1TdGF0ZXx8e307YT1tclsxXTtoci50ZXN0KGEpJiYhaXIudGVzdChhKXx8KG1yWzFdPVwiLmdvb2dsZS5jb21cIik7QXJyYXkuaXNBcnJheShtcls1XSl8fChtcls1XT1bXSk7XCJib29sZWFuXCIhPT10eXBlb2YgbXJbNl0mJihtcls2XT0hMSk7QXJyYXkuaXNBcnJheShtcls3XSl8fChtcls3XT1bXSk7XCJudW1iZXJcIiE9PXR5cGVvZiBtcls4XSYmKG1yWzhdPTApfSxvcj17TGI6ZnVuY3Rpb24oKXtyZXR1cm4gMDxtcls4XX0sb2Q6ZnVuY3Rpb24oKXttcls4XSsrfSxwZDpmdW5jdGlvbigpezA8bXJbOF0mJm1yWzhdLS19LHFkOmZ1bmN0aW9uKCl7bXJbOF09MH0sQWU6ZnVuY3Rpb24oKXtyZXR1cm4hMX0scGM6ZnVuY3Rpb24oKXtyZXR1cm4gbXJbNV19LGtjOmZ1bmN0aW9uKGEpe3RyeXthKCl9Y2F0Y2goYil7Xy5yLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBiO30sMCl9fSxCYzpmdW5jdGlvbigpe2lmKCFvci5MYigpKXt2YXIgYT1fLnIuZG9jdW1lbnQsYj1mdW5jdGlvbihlKXtlPWxyKGUpO2E6e3RyeXt2YXIgZj1GYygpO2JyZWFrIGF9Y2F0Y2goZyl7fWY9dm9pZCAwfWdyKGEsZSxcInByZWxvYWRcIixcInNjcmlwdFwiLGYpO2Y9YS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2YudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2Yub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiBfLnIucHJvY2Vzc0dvb2dsZVRva2VuKHt9LDIpfTtlPWxnKGUpO0FhKGYsZSk7dHJ5eyhhLmhlYWR8fGEuYm9keXx8YS5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZENoaWxkKGYpLG9yLm9kKCl9Y2F0Y2goZyl7fX0sYz1tclsxXTtiKGMpO1wiLmdvb2dsZS5jb21cIiE9YyYmYihcIi5nb29nbGUuY29tXCIpO2I9e307dmFyIGQ9KGIubmV3VG9rZW49XCJGQlRcIixiKTtfLnIuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBfLnIucHJvY2Vzc0dvb2dsZVRva2VuKGQsMSl9LDFFMyl9fX0scHI9ZnVuY3Rpb24oYSl7bnIoKTt2YXIgYj1qci5nb29nbGVUb2tlbls1XXx8MDthJiYoMCE9Ynx8a3JbM10+PVRjKCk/b3Iua2MoYSk6KG9yLnBjKCkucHVzaChhKSxvci5CYygpKSk7a3JbM10+PVRjKCkmJmtyWzJdPj1UYygpfHxvci5CYygpfSxxcj1mdW5jdGlvbihhKXtfLnIucHJvY2Vzc0dvb2dsZVRva2VuPV8uci5wcm9jZXNzR29vZ2xlVG9rZW58fGZ1bmN0aW9uKGIsYyl7dmFyIGQ9YjtkPXZvaWQgMD09PWQ/e306ZDtjPXZvaWQgMD09PWM/MDpjO2I9ZC5uZXdUb2tlbnx8XCJcIjt2YXIgZT1cIk5UXCI9PWIsZj1wYXJzZUludChkLmZyZXNoTGlmZXRpbWVTZWNzfHxcIlwiLDEwKSxnPXBhcnNlSW50KGQudmFsaWRMaWZldGltZVNlY3N8fFwiXCIsMTApLGg9ZFtcIjFwX2phclwiXXx8XCJcIjtkPWQucHVjcmR8fFwiXCI7bnIoKTsxPT1jP29yLnFkKCk6b3IucGQoKTt2YXIgaz1qci5nb29nbGVUb2tlbj1qci5nb29nbGVUb2tlbnx8e30sbD0wPT1jJiZiJiZcInN0cmluZ1wiPT09dHlwZW9mIGImJiFlJiZcIm51bWJlclwiPT09dHlwZW9mIGYmJjA8ZiYmXCJudW1iZXJcIj09PXR5cGVvZiBnJiYwPGcmJlwic3RyaW5nXCI9PT10eXBlb2YgaDtlPWUmJiFvci5MYigpJiYoIShrclszXT49VGMoKSl8fFwiTlRcIj09a3JbMV0pO3ZhciBtPSEoa3JbM10+PVRjKCkpJiYwIT1jO2lmKGx8fGV8fG0pZT1UYygpLGY9ZSsxRTMqZixnPWUrMUUzKmcsMUUtNT5NYXRoLnJhbmRvbSgpJiZfLlRoKF8ucixcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9aW1lcnImZXJyPVwiK2MpLGtbNV09YyxrWzFdPWIsa1syXT1mLGtbM109ZyxrWzRdPWgsa1s2XT1kLG5yKCk7aWYobHx8IW9yLkxiKCkpe2M9b3IucGMoKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKW9yLmtjKGNbYl0pO2MubGVuZ3RoPTB9fTtwcihhKX07dmFyIE1iPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3t9OmI7dGhpcy5yb290PWIucm9vdD9iLnJvb3Q6bnVsbDt0aGlzLkM9Yi5yb290TWFyZ2luP1NhKGIucm9vdE1hcmdpbik6W3t2YWx1ZTowLHR5cGU6XCJweFwifSx7dmFsdWU6MCx0eXBlOlwicHhcIn0se3ZhbHVlOjAsdHlwZTpcInB4XCJ9LHt2YWx1ZTowLHR5cGU6XCJweFwifV07dGhpcy5yb290TWFyZ2luPV8uUmEodGhpcy5DLGZ1bmN0aW9uKGMpe3JldHVyblwiXCIrYy52YWx1ZStjLnR5cGV9KS5qb2luKFwiIFwiKTt0aGlzLlU9V2EoYi50aHJlc2hvbGQpO3RoaXMuRD1hO3RoaXMuaj1bXTt0aGlzLm89W107dGhpcy5tPSExO3RoaXMubD1udWxsO3RoaXMudj1rZCh0aGlzLkEsMTAwLHRoaXMpfSxycj1mdW5jdGlvbihhKXtpZihhLnJvb3QpdmFyIGI9WGEoYS5yb290KTtlbHNle3ZhciBjPV8uJGYod2luZG93KTtiPXt0b3A6MCxyaWdodDpjLndpZHRoLGJvdHRvbTpjLmhlaWdodCxsZWZ0OjAsd2lkdGg6Yy53aWR0aCxoZWlnaHQ6Yy5oZWlnaHR9fWE9Xy5SYShhLkMsZnVuY3Rpb24oZCxlKXtyZXR1cm5cInB4XCI9PWQudHlwZT9kLnZhbHVlOmQudmFsdWUqKGUlMj9iLndpZHRoOmIuaGVpZ2h0KS8xMDB9KTtyZXR1cm57dG9wOmIudG9wLWFbMF0scmlnaHQ6Yi5yaWdodCthWzFdLGJvdHRvbTpiLmJvdHRvbSthWzJdLGxlZnQ6Yi5sZWZ0LWFbM10sd2lkdGg6Yi53aWR0aCthWzFdK2FbM10saGVpZ2h0OmIuaGVpZ2h0K2FbMF0rYVsyXX19LHNyPWZ1bmN0aW9uKGEsYixjKXtpZighYnx8Yi5pc0ludGVyc2VjdGluZyE9Yy5pc0ludGVyc2VjdGluZylyZXR1cm4hMDt2YXIgZD1iLmludGVyc2VjdGlvblJhdGlvLGU9Yy5pbnRlcnNlY3Rpb25SYXRpbztyZXR1cm4gZD09ZT8hMTpfLlhjKGEuVSxmdW5jdGlvbihmKXtyZXR1cm4gZjxkIT1mPGV9KX07TWIucHJvdG90eXBlLkE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9cnIodGhpcyk7Xy5WYyh0aGlzLmosZnVuY3Rpb24oYyl7dmFyIGQ9Yy50YXJnZXQsZT1YYShkKSxmPWUud2lkdGgqZS5oZWlnaHQ7dmFyIGc9TWF0aC5tYXgoYi50b3AsZS50b3ApO3ZhciBoPU1hdGgubWluKGIucmlnaHQsZS5yaWdodCksaz1NYXRoLm1pbihiLmJvdHRvbSxlLmJvdHRvbSksbD1NYXRoLm1heChiLmxlZnQsZS5sZWZ0KSxtPWgtbCxuPWstZztnPTA8PW0mJjA8PW4/e3RvcDpnLHJpZ2h0OmgsYm90dG9tOmssbGVmdDpsLHdpZHRoOm0saGVpZ2h0Om59Om51bGw7aD0hIWc7az1nP2cud2lkdGgqZy5oZWlnaHQ6MDtmPWY/ay9mOmg/MTowO2s9KGs9d2luZG93LnBlcmZvcm1hbmNlKSYmay5ub3c/ay5ub3coKTowO2Q9e2JvdW5kaW5nQ2xpZW50UmVjdDplLGludGVyc2VjdGlvblJhdGlvOmYsaW50ZXJzZWN0aW9uUmVjdDpnfHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH0saXNJbnRlcnNlY3Rpbmc6aCxyb290Qm91bmRzOmIsdGFyZ2V0OmQsdGltZTprfTtzcihhLGMuamEsZCkmJmEuby5wdXNoKGQpO2MuamE9ZH0pO3RoaXMuby5sZW5ndGgmJnRoaXMuRCh0cih0aGlzKSx0aGlzKX07TWIucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oYSl7Xy5YYyh0aGlzLmosZnVuY3Rpb24oYil7cmV0dXJuIGIudGFyZ2V0PT1hfSl8fCh0aGlzLmoucHVzaCh7dGFyZ2V0OmEsamE6bnVsbH0pLHRoaXMuQSgpLHRoaXMubXx8KHRoaXMubT0hMCxfLnYoXy5yLFwic2Nyb2xsXCIsdGhpcy52KSxfLnYoXy5yLFwicmVzaXplXCIsdGhpcy52KSxfLnIuTXV0YXRpb25PYnNlcnZlciYmIXRoaXMubCYmKHRoaXMubD1uZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLnYpLHRoaXMubC5vYnNlcnZlKF8uci5kb2N1bWVudCx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSkpKSl9O01iLnByb3RvdHlwZS51bm9ic2VydmU9ZnVuY3Rpb24oYSl7dGhpcy5qPV8uVGEodGhpcy5qLGZ1bmN0aW9uKGIpe3JldHVybiBiLnRhcmdldCE9YX0pOzA9PXRoaXMuai5sZW5ndGgmJnRoaXMuZGlzY29ubmVjdCgpfTtNYi5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMubT0hMTt0aGlzLmoubGVuZ3RoPTA7Xy5xYihfLnIsXCJzY3JvbGxcIix0aGlzLnYpO18ucWIoXy5yLFwicmVzaXplXCIsdGhpcy52KTt0aGlzLmwmJih0aGlzLmwuZGlzY29ubmVjdCgpLHRoaXMubD1udWxsKX07dmFyIHRyPWZ1bmN0aW9uKGEpe3ZhciBiPV8uRmIoYS5vKS5jb25jYXQoKTthLm8ubGVuZ3RoPTA7cmV0dXJuIGJ9O18udXI9ZnVuY3Rpb24oKXt2YXIgYT1fLkRqKDM4KTt0aGlzLmo9dm9pZCAwPT09YT8uMDE6YTt0aGlzLnY9dGhpcy5sfTtfLnVyLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yz12b2lkIDA9PT1jP3RoaXMuajpjO2lmKE1hdGgucmFuZG9tKCk+YylyZXR1cm4hMTtiLmVycm9yJiZiLm1ldGEmJmIuaWR8fChiPW5ldyBGaShiLHtjb250ZXh0OmEsaWQ6dm9pZCAwPT09ZT9cImdwdF9leGNlcHRpb25cIjplfSkpO2QmJihiLm1ldGE9e30sZCYmZChiLm1ldGEpKTtfLnIuZ29vZ2xlX2pzX2Vycm9ycz1fLnIuZ29vZ2xlX2pzX2Vycm9yc3x8W107Xy5yLmdvb2dsZV9qc19lcnJvcnMucHVzaChiKTtfLnIuZXJyb3JfcmVwX2xvYWRlZHx8KHVnKF8uci5kb2N1bWVudCxsZyhfLnIubG9jYXRpb24ucHJvdG9jb2wrXCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9lcnJfcmVwLmpzXCIpKSxfLnIuZXJyb3JfcmVwX2xvYWRlZD0hMCk7cmV0dXJuITF9O3ZhciB2cj1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5QLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5zdGF0dXM9MTt0aGlzLmw9Yjt0aGlzLkE9Yzt0aGlzLks9ZDt0aGlzLm5iPSEhZTt0aGlzLm89TWF0aC5yYW5kb20oKTt0aGlzLkM9e307dGhpcy5qPW51bGw7dGhpcy5EPSgwLF8uUmMpKHRoaXMuSSx0aGlzKTt0aGlzLkc9Zn07Xy5KKHZyLF8uUCk7dnIucHJvdG90eXBlLkk9ZnVuY3Rpb24oYSl7aWYoYS5vcmlnaW49PT10aGlzLkEmJih0aGlzLm5ifHxhLnNvdXJjZT09dGhpcy5sKSl7dmFyIGI9bnVsbDt0cnl7Yj1KU09OLnBhcnNlKGEuZGF0YSl9Y2F0Y2goYyl7fWlmKF8uTWMoYikmJihhPWIuaSxiLmM9PT10aGlzLm0mJmEhPXRoaXMubykpe2lmKDIhPT10aGlzLnN0YXR1cyl0cnl7dGhpcy5zdGF0dXM9Mix3cih0aGlzKSx0aGlzLmomJih0aGlzLmooKSx0aGlzLmo9bnVsbCl9Y2F0Y2goYyl7fWE9Yi5zO2I9Yi5wO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSYmKFwic3RyaW5nXCI9PT10eXBlb2YgYnx8Xy5NYyhiKSkmJnRoaXMuQy5oYXNPd25Qcm9wZXJ0eShhKSl0aGlzLkNbYV0oYil9fX07dmFyIHdyPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2IuYz1hLm07Yi5pPWEubzthLkcmJihiLmU9YS5HKTthLmwucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoYiksYS5BKX07dnIucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtpZigxPT09dGhpcy5zdGF0dXMpe3RyeXt0aGlzLmwucG9zdE1lc3NhZ2UmJndyKHRoaXMpfWNhdGNoKGEpe313aW5kb3cuc2V0VGltZW91dCgoMCxfLlJjKSh0aGlzLkgsdGhpcyksNTApfX07dnIucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oYSl7YSYmKHRoaXMuaj1hKTtfLnYod2luZG93LFwibWVzc2FnZVwiLHRoaXMuRCk7dGhpcy5LJiZ0aGlzLkgoKX07dmFyIHhyPWZ1bmN0aW9uKGEsYixjKXthLkNbYl09Y30seXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2QuYz1hLm07ZC5pPWEubztkLnM9YjtkLnA9Yzt0cnl7YS5sLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGQpLGEuQSl9Y2F0Y2goZSl7fX07dnIucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz0zO18ucWIod2luZG93LFwibWVzc2FnZVwiLHRoaXMuRCk7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyl9O3ZhciB6cj1mdW5jdGlvbigpe3RoaXMuaj1bXTt0aGlzLmw9W107dGhpcy52PVtdfSxBcj1mdW5jdGlvbihhLGIpe2EubC5wdXNoKGIpfTt2YXIgQnI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuaj1uZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGIsYyl7YS5yZXNvbHZlPWI7YS5yZWplY3Q9Y30pfTt2YXIgQ3I9ZnVuY3Rpb24oYSl7YT1FcnJvci5jYWxsKHRoaXMsYSk7dGhpcy5tZXNzYWdlPWEubWVzc2FnZTtcInN0YWNrXCJpbiBhJiYodGhpcy5zdGFjaz1hLnN0YWNrKTtfLkEoT2JqZWN0LFwic2V0UHJvdG90eXBlT2ZcIikuY2FsbChPYmplY3QsdGhpcyxDci5wcm90b3R5cGUpO3RoaXMubmFtZT1cIklucHV0RXJyb3JcIn07Xy5KKENyLEVycm9yKTt2YXIgRHI9ZnVuY3Rpb24oKXt0aGlzLmw9bmV3IEJyfSxFcj1mdW5jdGlvbigpe0RyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEVyLERyKTt2YXIgVT1mdW5jdGlvbihhLGIpe2Eudnx8KGEuaj1iLGEubC5yZXNvbHZlKGIpKX0sRnI9ZnVuY3Rpb24oYSl7YS52fHwoYS5qPW51bGwsYS5sLnJlc29sdmUobnVsbCkpfTtjYy5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhFci5wcm90b3R5cGUse206e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmwuan19LHY6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5vfHx2b2lkIDAhPT10aGlzLmp9fX0pO3ZhciBHcj1mdW5jdGlvbihhKXt0aGlzLmw9bmV3IEJyO3RoaXMudj1hfTtfLkooR3IsRHIpO3ZhciBIcj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YS52Lmp9O2NjLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEdyLnByb3RvdHlwZSx7dmFsdWU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnYuan19LGVycm9yOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52Lm99fX0pO3ZhciBJcj1mdW5jdGlvbigpe0dyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKElyLEdyKTtjYy5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhJci5wcm90b3R5cGUse3ZhbHVlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52Lmp9fX0pO3ZhciBKcj1mdW5jdGlvbigpe0VyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEpyLEVyKTtKci5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7RnIodGhpcyl9O3ZhciBLcj1mdW5jdGlvbigpe18uUC5jYWxsKHRoaXMpO3ZhciBhPXRoaXM7dGhpcy5vPW5ldyB6cjt0aGlzLm1hPSExO18uUih0aGlzLGZ1bmN0aW9uKCl7dmFyIGI9YS5vO2Iuai5sZW5ndGg9MDtiLnYubGVuZ3RoPTA7Yi5sLmxlbmd0aD0wfSl9O18uSihLcixfLlApO0tyLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGIoKXt2YXIgYz10aGlzLGQsZTtyZXR1cm4gRGEoYixmdW5jdGlvbihmKXtzd2l0Y2goZi5qKXtjYXNlIDE6aWYoYy5tYSlyZXR1cm4gZi5yZXR1cm4oKTtjLm1hPSEwO2Q9Yy5vLmwubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLm19KTtmLkE9MjtyZXR1cm4gRWEoZix0LlByb21pc2UuYWxsKGQpLDQpO2Nhc2UgNDppZihjLmxhKXtmLmo9NTticmVha31McihjKTtyZXR1cm4gRWEoZixjLmooKSw1KTtjYXNlIDU6R2EoZiwwKTticmVhaztjYXNlIDI6ZT1IYShmKTtpZihjLmxhKXJldHVybiBmLnJldHVybigpO2UgaW5zdGFuY2VvZiBDcnx8KE1yKGMsZSksYy5vLmoubGVuZ3RoJiZOcihjLG5ldyBDcihlLm1lc3NhZ2UpKSk7Zi5qPTB9fSl9KX07S3IucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgRXI7dGhpcy5vLmoucHVzaChhKTtyZXR1cm4gYX07dmFyIE9yPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBKcjthLm8uai5wdXNoKGIpO3JldHVybiBifSxWPWZ1bmN0aW9uKGEsYil7QXIoYS5vLGIpO2I9bmV3IElyKGIpO2Euby52LnB1c2goYik7cmV0dXJuIGJ9LFc9ZnVuY3Rpb24oYSxiKXtBcihhLm8sYik7cmV0dXJuIG5ldyBHcihiKX0sTHI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1fLkYoYS5vLnYpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXtpZighSHIoZC52YWx1ZSkpdGhyb3cgRXJyb3IoXCJtaXNzaW5nIGlucHV0OiBcIithLmlkKCkrXCIvXCIrYik7KytifX0sTnI9ZnVuY3Rpb24oYSxiKXthPV8uRihhLm8uaik7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZihjPWMudmFsdWUsIWMudil7dmFyIGQ9YjtjLm89ZDtjLmwucmVqZWN0KGQpfX07dmFyIHdiPWZ1bmN0aW9uKCl7Xy5QLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmo9W119O18uSih3YixfLlApO3ZhciB4Yj1mdW5jdGlvbihhLGIpe2I9Xy5GKGIpO2Zvcih2YXIgYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLF8ud2goYSxjKSxhLmoucHVzaChjKX0sWD1mdW5jdGlvbihhLGIpe3hiKGEsW2JdKX0seWI9ZnVuY3Rpb24oYSl7aWYoYS5qLmxlbmd0aCl7YT1fLkYoYS5qKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKWIudmFsdWUuc3RhcnQoKX19O3diLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dGhpcy5qLmxlbmd0aD0wfTt2YXIgUHI9ZnVuY3Rpb24oKXt0aGlzLmo9W119LFJyPWZ1bmN0aW9uKGEsYixjLGQsZSl7YS5qLnB1c2gobmV3IFFyKGIsYyxkLGUpKX0sU3I9ZnVuY3Rpb24oYSxiLGMsZCl7UnIoYSxiLGMsZCtcInB4XCIsdm9pZCAwKX0sVHI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEuai5sZW5ndGgtMTswPD1iO2ItLSl7dmFyIGM9YS5qW2JdO2MubD8oYy52LnN0eWxlLnJlbW92ZVByb3BlcnR5KGMuaiksYy52LnN0eWxlLnNldFByb3BlcnR5KGMuaixTdHJpbmcoYy5vKSxjLm0pKTpjLnYuc3R5bGVbYy5qXT1jLm99YS5qLmxlbmd0aD0wfSxRcj1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnY9YTt0aGlzLmo9KHRoaXMubD0hKHZvaWQgMD09PWR8fCFhLnN0eWxlfHwhYS5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KSk/U3RyaW5nKGIpLnJlcGxhY2UoLyhbQS1aXSkvZyxcIi0kMVwiKS50b0xvd2VyQ2FzZSgpOmI7dGhpcy5vPXRoaXMubD9hLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodGhpcy5qKTphLnN0eWxlW3RoaXMual07dGhpcy5tPXRoaXMubD9hLnN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkodGhpcy5qKTp2b2lkIDA7dGhpcy5sPyhhLnN0eWxlLnJlbW92ZVByb3BlcnR5KHRoaXMuaiksYS5zdHlsZS5zZXRQcm9wZXJ0eSh0aGlzLmosU3RyaW5nKGMpLGQpKTphLnN0eWxlW3RoaXMual09U3RyaW5nKGMpfTt2YXIgVXIsVnI7VXI9e292ZXJmbG93OlwiaGlkZGVuXCIscG9zaXRpb246XCJmaXhlZFwifTtfLldyPWZ1bmN0aW9uKGEsYil7aWYoIWEuYm9keSlyZXR1cm4gbnVsbDt2YXIgYz1uZXcgVnI7Yy5hcHBseShhLGIpO3JldHVybiBmdW5jdGlvbigpe18uY2koYS5ib2R5LHtmaWx0ZXI6Yy5qLHdlYmtpdEZpbHRlcjpjLmosb3ZlcmZsb3c6Yy52LHBvc2l0aW9uOmMubyx0b3A6Yy5tfSk7Yi5zY3JvbGxUbygwLGMubCl9fTtWcj1mdW5jdGlvbigpe3RoaXMuaj10aGlzLm09dGhpcy5vPXRoaXMudj1udWxsO3RoaXMubD0wfTtWci5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oYSxiKXt0aGlzLnY9YS5ib2R5LnN0eWxlLm92ZXJmbG93O3RoaXMubz1hLmJvZHkuc3R5bGUucG9zaXRpb247dGhpcy5tPWEuYm9keS5zdHlsZS50b3A7dGhpcy5qPWEuYm9keS5zdHlsZS5maWx0ZXI/YS5ib2R5LnN0eWxlLmZpbHRlcjphLmJvZHkuc3R5bGUud2Via2l0RmlsdGVyO3RoaXMubD1fLkluKGIpO18uY2koYS5ib2R5LFwidG9wXCIsLXRoaXMubCtcInB4XCIpO18uY2koYS5ib2R5LFVyKX07Xy5Ycj1mdW5jdGlvbigpe3RoaXMuaj1udWxsfTtJYyhfLlhyKTt2YXIgWXI9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/NTAwOmI7Xy5QLmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5qPW51bGw7dGhpcy5tPXt9O3RoaXMuQT0wO3RoaXMuQz1iO3RoaXMubz1udWxsfTtfLkooWXIsXy5QKTtZci5wcm90b3R5cGUudj1mdW5jdGlvbigpe3RoaXMubT17fTt0aGlzLm8mJihfLnFiKHRoaXMubCxcIm1lc3NhZ2VcIix0aGlzLm8pLGRlbGV0ZSB0aGlzLm8pO2RlbGV0ZSB0aGlzLm07ZGVsZXRlIHRoaXMubDtkZWxldGUgdGhpcy5qO18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpfTt2YXIgJHI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEubC5fX3VzcGFwaXx8bnVsbCE9WnIoYSl9LGJzPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307aWYoJHIoYSkpe3ZhciBkPWpkKGZ1bmN0aW9uKCl7cmV0dXJuIGIoYyl9KTthcyhhLGZ1bmN0aW9uKGUsZil7ZiYmKGM9ZSk7ZCgpfSk7c2V0VGltZW91dChkLGEuQyl9ZWxzZSBiKGMpfSxhcz1mdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmwuX191c3BhcGkpYT1hLmwuX191c3BhcGksYShcImdldFVTUERhdGFcIiwxLGIpO2Vsc2UgaWYoWnIoYSkpe2NzKGEpO3ZhciBjPSsrYS5BO2EubVtjXT1iO2EuaiYmKGI9e30sYS5qLnBvc3RNZXNzYWdlKChiLl9fdXNwYXBpQ2FsbD17Y29tbWFuZDpcImdldFVTUERhdGFcIix2ZXJzaW9uOjEsY2FsbElkOmN9LGIpLFwiKlwiKSl9fSxacj1mdW5jdGlvbihhKXtpZihhLmopcmV0dXJuIGEuajthLmo9UWcoYS5sLFwiX191c3BhcGlMb2NhdG9yXCIpO3JldHVybiBhLmp9LGNzPWZ1bmN0aW9uKGEpe2Eub3x8KGEubz1mdW5jdGlvbihiKXt0cnl7dmFyIGM7XCJzdHJpbmdcIj09PXR5cGVvZiBiLmRhdGE/Yz1KU09OLnBhcnNlKGIuZGF0YSk6Yz1iLmRhdGE7dmFyIGQ9Yy5fX3VzcGFwaVJldHVybjthLm1bZC5jYWxsSWRdKGQucmV0dXJuVmFsdWUsZC5zdWNjZXNzKX1jYXRjaChlKXt9fSxfLnYoYS5sLFwibWVzc2FnZVwiLGEubykpfTt2YXIgZHM9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soZHMsTSk7dmFyIGZzPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxlcyxudWxsKX07SyhmcyxNKTt2YXIgZXM9WzEsMl07dmFyIGdzPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGdzLE0pO3ZhciBocz1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhocyxNKTt2YXIgaXM9ZnVuY3Rpb24oYSl7Xy5QLmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5vPXRoaXMuaj1udWxsO3RoaXMubT17fTt0aGlzLkE9MDt0aGlzLmp8fCh0aGlzLmwuZ29vZ2xlZmM/dGhpcy5qPXRoaXMubDp0aGlzLmo9UWcodGhpcy5sLFwiZ29vZ2xlZmNQcmVzZW50XCIpKX07Xy5KKGlzLF8uUCk7dmFyIGtzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYyl7aWYoYS5qKWlmKGEuaj09PWEubCl7dmFyIGQ9YS5sLmdvb2dsZWZjfHx7fTtkLl9fZmNpPWQuX19mY2l8fFtdO2QuX19mY2kucHVzaChiLGMpfWVsc2UganMoYSksZD1hLkErKyxhLm1bZF09YyxjPXt9LGEuai5wb3N0TWVzc2FnZSgoYy5fX2ZjaUNhbGw9e2NvbW1hbmQ6YixjYWxsSWQ6ZH0sYyksXCIqXCIpfSl9LGpzPWZ1bmN0aW9uKGEpe2Eub3x8KGEubz1mdW5jdGlvbihiKXt0cnl7dmFyIGM9bmV3IGhzKEpTT04ucGFyc2UoYi5kYXRhLl9fZmNpUmV0dXJuKSk7KDAsYS5tW0IoYywxKV0pKGMpfWNhdGNoKGQpe319LF8udihhLmwsXCJtZXNzYWdlXCIsYS5vKSl9LGxzPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFiKXJldHVybiB0LlByb21pc2UucmVzb2x2ZShudWxsKTt2YXIgZT1PKGIsZHMsMyk7Yj1PKGIsZ3MsMik7cmV0dXJuIGUmJmImJjE9PT1CKGIsMSkmJjI9PT1CKGUsMSk/a3MoYSxcImdldE0yNUNvbnNlbnRcIikudGhlbihmdW5jdGlvbihmKXt2YXIgZz1PKGYsZnMsNCk7aWYoZyl7aWYoZj1kLGMpe3ZhciBoPUIoZywxKTtoJiZfLkEoaCxcImluY2x1ZGVzXCIpLmNhbGwoaCxjKSYmKGY9ITEpOyhnPUIoZywyKSkmJl8uQShnLFwiaW5jbHVkZXNcIikuY2FsbChnLGMpJiYoZj0hMCl9fWVsc2UgZj1udWxsO3JldHVybiBmfSk6dC5Qcm9taXNlLnJlc29sdmUobnVsbCl9O3ZhciBtcz1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwIT09YS50Y1N0cmluZyYmXCJzdHJpbmdcIiE9PXR5cGVvZiBhLnRjU3RyaW5nfHx2b2lkIDAhPT1hLmdkcHJBcHBsaWVzJiZcImJvb2xlYW5cIiE9PXR5cGVvZiBhLmdkcHJBcHBsaWVzfHx2b2lkIDAhPT1hLmxpc3RlbmVySWQmJlwibnVtYmVyXCIhPT10eXBlb2YgYS5saXN0ZW5lcklkfHx2b2lkIDAhPT1hLmFkZHRsQ29uc2VudCYmXCJzdHJpbmdcIiE9PXR5cGVvZiBhLmFkZHRsQ29uc2VudD8yOmEuY21wU3RhdHVzJiZcImVycm9yXCIhPT1hLmNtcFN0YXR1cz8wOjN9LG5zPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPzUwMDpiO18uUC5jYWxsKHRoaXMpO3RoaXMubD1hO3RoaXMuaj1udWxsO3RoaXMubT17fTt0aGlzLkE9MDt0aGlzLkM9Yjt0aGlzLm89bnVsbH07Xy5KKG5zLF8uUCk7bnMucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXt0aGlzLm09e307dGhpcy5vJiYoXy5xYih0aGlzLmwsXCJtZXNzYWdlXCIsdGhpcy5vKSxkZWxldGUgdGhpcy5vKTtkZWxldGUgdGhpcy5tO2RlbGV0ZSB0aGlzLmw7ZGVsZXRlIHRoaXMuajtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKX07dmFyIHBzPWZ1bmN0aW9uKGEpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmwuX190Y2ZhcGl8fG51bGwhPW9zKGEpfTtucy5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXtxcyh0aGlzLFwiYWRkRXZlbnRMaXN0ZW5lclwiLGZ1bmN0aW9uKGIsYyl7Yj1jP2I6e307Yi5pbnRlcm5hbEVycm9yU3RhdGU9bXMoYik7MCE9PWIuaW50ZXJuYWxFcnJvclN0YXRlJiYoYi50Y1N0cmluZz1cInRjdW5hdmFpbGFibGVcIik7YShiKX0pfTtucy5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXthJiZhLmxpc3RlbmVySWQmJnFzKHRoaXMsXCJyZW1vdmVFdmVudExpc3RlbmVyXCIsbnVsbCxhLmxpc3RlbmVySWQpfTt2YXIgc3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz17aW50ZXJuYWxFcnJvclN0YXRlOjB9LGQ9amQoZnVuY3Rpb24oKXtyZXR1cm4gYihjKX0pLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2MudGNTdHJpbmc9XCJ0Y3VuYXZhaWxhYmxlXCI7Yy5pbnRlcm5hbEVycm9yU3RhdGU9MTtkKCl9LGEuQyk7cXMoYSxcImFkZEV2ZW50TGlzdGVuZXJcIixmdW5jdGlvbihmLGcpe2UmJihjbGVhclRpbWVvdXQoZSksZT0wKTtnJiYoYz1mKTtjLmludGVybmFsRXJyb3JTdGF0ZT1tcyhjKTswIT1jLmludGVybmFsRXJyb3JTdGF0ZSYmKGMudGNTdHJpbmc9XCJ0Y3VuYXZhaWxhYmxlXCIpO2lmKDAhPWMuaW50ZXJuYWxFcnJvclN0YXRlfHxycyhjKSlxcyhhLFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLG51bGwsYy5saXN0ZW5lcklkKSxkKCl9KX0scXM9ZnVuY3Rpb24oYSxiLGMsZCl7Y3x8KGM9ZnVuY3Rpb24oKXt9KTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5sLl9fdGNmYXBpKWE9YS5sLl9fdGNmYXBpLGEoYiwyLGMsZCk7ZWxzZSBpZihvcyhhKSl7dHMoYSk7dmFyIGU9KythLkE7YS5tW2VdPWM7YS5qJiYoYz17fSxhLmoucG9zdE1lc3NhZ2UoKGMuX190Y2ZhcGlDYWxsPXtjb21tYW5kOmIsdmVyc2lvbjoyLGNhbGxJZDplLHBhcmFtZXRlcjpkfSxjKSxcIipcIikpfWVsc2UgYyh7fSwhMSl9LG9zPWZ1bmN0aW9uKGEpe2lmKGEuailyZXR1cm4gYS5qO2Euaj1RZyhhLmwsXCJfX3RjZmFwaUxvY2F0b3JcIik7cmV0dXJuIGEuan0sdHM9ZnVuY3Rpb24oYSl7YS5vfHwoYS5vPWZ1bmN0aW9uKGIpe3RyeXt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGIuZGF0YT9jPUpTT04ucGFyc2UoYi5kYXRhKTpjPWIuZGF0YTt2YXIgZD1jLl9fdGNmYXBpUmV0dXJuO2EubVtkLmNhbGxJZF0oZC5yZXR1cm5WYWx1ZSxkLnN1Y2Nlc3MpfWNhdGNoKGUpe319LF8udihhLmwsXCJtZXNzYWdlXCIsYS5vKSl9LHJzPWZ1bmN0aW9uKGEpe3JldHVybiExPT09YS5nZHByQXBwbGllc3x8XCJlcnJvclwiPT09YS5jbXBTdGF0dXN8fF8ueSgxOTAyKSYmMCE9PWEuaW50ZXJuYWxFcnJvclN0YXRlfHxcImxvYWRlZFwiPT09YS5jbXBTdGF0dXMmJihcInRjbG9hZGVkXCI9PT1hLmV2ZW50U3RhdHVzfHxcInVzZXJhY3Rpb25jb21wbGV0ZVwiPT09YS5ldmVudFN0YXR1cyk/ITA6ITF9O3ZhciB1cz1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBhO3ZhciBjPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4tMTxjLmluZGV4T2YoXCI8IWRvY3R5cGVcIil8fC0xPGMuaW5kZXhPZihcIjxodG1sXCIpP2E6XCI8aHRtbD48aGVhZD5cIisodm9pZCAwPT09Yj9cIlwiOmIpK1wiPC9oZWFkPjxib2R5PlwiK2ErXCI8L2JvZHk+PC9odG1sPlwifTt2YXIgdnM9dmQoXCJncHQvcHViYWRzX2ltcGxfXCIpLHdzPXZkKFwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvXCIpO3ZhciB4cz1mdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy52PUVoKGEpO3RoaXMubD1FaChiKTt0aGlzLm89Yzt0aGlzLmo9RWgoZCk7dGhpcy5tPWU7dGhpcy5BPWZ9LHlzPWZ1bmN0aW9uKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeSh7d2luZG93Q29vcmRzX3Q6YS52LnRvcCx3aW5kb3dDb29yZHNfcjphLnYucmlnaHQsd2luZG93Q29vcmRzX2I6YS52LmJvdHRvbSx3aW5kb3dDb29yZHNfbDphLnYubGVmdCxmcmFtZUNvb3Jkc190OmEubC50b3AsZnJhbWVDb29yZHNfcjphLmwucmlnaHQsZnJhbWVDb29yZHNfYjphLmwuYm90dG9tLGZyYW1lQ29vcmRzX2w6YS5sLmxlZnQsc3R5bGVaSW5kZXg6YS5vLGFsbG93ZWRFeHBhbnNpb25fdDphLmoudG9wLGFsbG93ZWRFeHBhbnNpb25fcjphLmoucmlnaHQsYWxsb3dlZEV4cGFuc2lvbl9iOmEuai5ib3R0b20sYWxsb3dlZEV4cGFuc2lvbl9sOmEuai5sZWZ0LHhJblZpZXc6YS5tLHlJblZpZXc6YS5BfSl9LHpzPWZ1bmN0aW9uKGEsYil7dmFyIGM9d2luZG93LGQ9Yy5zY3JlZW5YfHxjLnNjcmVlbkxlZnR8fDAsZT1jLnNjcmVlbll8fGMuc2NyZWVuVG9wfHwwO2M9bmV3IF8uRGgoZSxkKyhjLm91dGVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aHx8MCksZSsoYy5vdXRlckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8MCksZCk7dmFyIGY9aWkoYSk7ZD1fLmxpKF8ubWksYSk7dmFyIGc9bmV3IEZoKGYueCxmLnksZC53aWR0aCxkLmhlaWdodCk7ZD1HaChnKTtlPVN0cmluZyhmaShhLFwiekluZGV4XCIpKTt2YXIgaD1uZXcgXy5EaCgwLEluZmluaXR5LEluZmluaXR5LDApO2Zvcih2YXIgaz1XZihhKSxsPWsuai5ib2R5LG09ay5qLmRvY3VtZW50RWxlbWVudCxuPWFnKGsuaik7YT1oaShhKTspaWYoIShfLnVlJiYwPT1hLmNsaWVudFdpZHRofHx5ZSYmMD09YS5jbGllbnRIZWlnaHQmJmE9PWwpJiZhIT1sJiZhIT1tJiZcInZpc2libGVcIiE9ZmkoYSxcIm92ZXJmbG93XCIpKXt2YXIgcT1paShhKSx3PW5ldyBfLnlhKGEuY2xpZW50TGVmdCxhLmNsaWVudFRvcCk7cS54Kz13Lng7cS55Kz13Lnk7aC50b3A9TWF0aC5tYXgoaC50b3AscS55KTtoLnJpZ2h0PU1hdGgubWluKGgucmlnaHQscS54K2EuY2xpZW50V2lkdGgpO2guYm90dG9tPU1hdGgubWluKGguYm90dG9tLHEueSthLmNsaWVudEhlaWdodCk7aC5sZWZ0PU1hdGgubWF4KGgubGVmdCxxLngpfWE9bi5zY3JvbGxMZWZ0O249bi5zY3JvbGxUb3A7aC5sZWZ0PU1hdGgubWF4KGgubGVmdCxhKTtoLnRvcD1NYXRoLm1heChoLnRvcCxuKTtrPV8uJGYoYmcoay5qKXx8d2luZG93KTtoLnJpZ2h0PU1hdGgubWluKGgucmlnaHQsYStrLndpZHRoKTtoLmJvdHRvbT1NYXRoLm1pbihoLmJvdHRvbSxuK2suaGVpZ2h0KTtoPShoPTA8PWgudG9wJiYwPD1oLmxlZnQmJmguYm90dG9tPmgudG9wJiZoLnJpZ2h0PmgubGVmdD9oOm51bGwpP25ldyBGaChoLmxlZnQsaC50b3AsaC5yaWdodC1oLmxlZnQsaC5ib3R0b20taC50b3ApOm51bGw7Yj8oaz1iLmJvdW5kaW5nQ2xpZW50UmVjdCxiPW5ldyBGaChmLngtay5sZWZ0LGYueS1rLnRvcCxiLnJvb3RCb3VuZHMud2lkdGgsYi5yb290Qm91bmRzLmhlaWdodCkpOmI9aDtrPWg/SGgoZyxoKTpudWxsO2g9Zj0wO2smJiEobmV3IF8uVGYoay53aWR0aCxrLmhlaWdodCkpLmlzRW1wdHkoKSYmKGY9ay53aWR0aC9nLndpZHRoLGg9ay5oZWlnaHQvZy5oZWlnaHQpO2s9bmV3IF8uRGgoMCwwLDAsMCk7aWYoYT1iKShnPUhoKGcsYikpPyhuPUdoKGIpLGw9R2goZyksYT1sLnJpZ2h0IT1uLmxlZnQmJm4ucmlnaHQhPWwubGVmdCxuPWwuYm90dG9tIT1uLnRvcCYmbi5ib3R0b20hPWwudG9wLGE9KDAhPWcud2lkdGh8fGEpJiYoMCE9Zy5oZWlnaHR8fG4pKTphPSExO2EmJihrPW5ldyBfLkRoKE1hdGgubWF4KGQudG9wLWIudG9wLDApLE1hdGgubWF4KGIubGVmdCtiLndpZHRoLWQucmlnaHQsMCksTWF0aC5tYXgoYi50b3ArYi5oZWlnaHQtZC5ib3R0b20sMCksTWF0aC5tYXgoZC5sZWZ0LWIubGVmdCwwKSkpO3JldHVybiBuZXcgeHMoYyxkLGUsayxmLGgpfTt2YXIgQXM9ZnVuY3Rpb24oYSl7dGhpcy5tPWE7dGhpcy5vPW51bGw7dGhpcy5IPXRoaXMuc3RhdHVzPTA7dGhpcy5sPW51bGw7dGhpcy5tYT1cInNmY2hhbm5lbFwiK2F9O3ZhciBCcz0hMSxDcz1cIlwiLERzPWZ1bmN0aW9uKGEpe2E9YS5tYXRjaCgvW1xcZF0rL2cpO2lmKCFhKXJldHVyblwiXCI7YS5sZW5ndGg9MztyZXR1cm4gYS5qb2luKFwiLlwiKX07KGZ1bmN0aW9uKCl7aWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aCl7dmFyIGE9bmF2aWdhdG9yLnBsdWdpbnNbXCJTaG9ja3dhdmUgRmxhc2hcIl07aWYoYSYmKEJzPSEwLGEuZGVzY3JpcHRpb24pKXtDcz1EcyhhLmRlc2NyaXB0aW9uKTtyZXR1cm59aWYobmF2aWdhdG9yLnBsdWdpbnNbXCJTaG9ja3dhdmUgRmxhc2ggMi4wXCJdKXtCcz0hMDtDcz1cIjIuMC4wLjExXCI7cmV0dXJufX1pZihuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCYmKGE9bmF2aWdhdG9yLm1pbWVUeXBlc1tcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCJdLEJzPSEoIWF8fCFhLmVuYWJsZWRQbHVnaW4pKSl7Q3M9RHMoYS5lbmFibGVkUGx1Z2luLmRlc2NyaXB0aW9uKTtyZXR1cm59aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEFjdGl2ZVhPYmplY3Qpe3RyeXt2YXIgYj1uZXcgQWN0aXZlWE9iamVjdChcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjdcIik7QnM9ITA7Q3M9RHMoYi5HZXRWYXJpYWJsZShcIiR2ZXJzaW9uXCIpKTtyZXR1cm59Y2F0Y2goYyl7fXRyeXtiPW5ldyBBY3RpdmVYT2JqZWN0KFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNlwiKTtCcz0hMDtDcz1cIjYuMC4yMVwiO3JldHVybn1jYXRjaChjKXt9dHJ5e2I9bmV3IEFjdGl2ZVhPYmplY3QoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaFwiKSxCcz0hMCxDcz1EcyhiLkdldFZhcmlhYmxlKFwiJHZlcnNpb25cIikpfWNhdGNoKGMpe319fSkoKTt2YXIgRXM9QnMsRnM9Q3M7dmFyIEdzPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfTt2YXIgSHM9ZnVuY3Rpb24oYSxiKXt0aGlzLndiPWE7dGhpcy54Yj1iO3RoaXMubD10aGlzLmo9ITF9O3ZhciBJcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7az12b2lkIDA9PT1rP1tdOms7dGhpcy5tPWE7dGhpcy5sPWI7dGhpcy52PWM7dGhpcy5wZXJtaXNzaW9ucz1kO3RoaXMubz1lO3RoaXMuQT1mO3RoaXMubmI9Zzt0aGlzLmhvc3RwYWdlTGlicmFyeVRva2Vucz1rO3RoaXMuaj1cIlwiO3RoaXMuYWI9aH07dmFyIEpzPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5vPWJ9O0pzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGEpe3RoaXMubyYmYSYmKGEuc2VudGluZWw9dGhpcy5vKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSl9O3ZhciBLcz1mdW5jdGlvbihhLGIsYyl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yz9cIlwiOmMpO3RoaXMudmVyc2lvbj1ifTtfLkooS3MsSnMpO0tzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCx2ZXJzaW9uOnRoaXMudmVyc2lvbn0pfTt2YXIgTHM9ZnVuY3Rpb24oYSxiLGMsZCl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09ZD9cIlwiOmQpO3RoaXMubT1iO3RoaXMudj1jfTtfLkooTHMsSnMpO0xzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCxpbml0aWFsV2lkdGg6dGhpcy5tLGluaXRpYWxIZWlnaHQ6dGhpcy52fSl9O3ZhciBNcz1mdW5jdGlvbihhLGIsYyl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yz9cIlwiOmMpO3RoaXMudj1ifTtfLkooTXMsSnMpO01zLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCxkZXNjcmlwdGlvbjp0aGlzLnZ9KX07dmFyIE5zPWZ1bmN0aW9uKGEsYixjLGQpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWQ/XCJcIjpkKTt0aGlzLnY9Yjt0aGlzLnB1c2g9Y307Xy5KKE5zLEpzKTtOcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsZXhwYW5kX3Q6dGhpcy52LnRvcCxleHBhbmRfcjp0aGlzLnYucmlnaHQsZXhwYW5kX2I6dGhpcy52LmJvdHRvbSxleHBhbmRfbDp0aGlzLnYubGVmdCxwdXNoOnRoaXMucHVzaH0pfTt2YXIgT3M9ZnVuY3Rpb24oYSxiKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1iP1wiXCI6Yil9O18uSihPcyxKcyk7T3MucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sfSl9O3ZhciBQcz1mdW5jdGlvbihhLGIsYyl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yz9cIlwiOmMpO3RoaXMubT1ifTtfLkooUHMsSnMpO1BzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9e3VpZDp0aGlzLmwsbmV3R2VvbWV0cnk6eXModGhpcy5tKX07cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyxhKX07dmFyIFFzPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtQcy5jYWxsKHRoaXMsYSxjLHZvaWQgMD09PWY/XCJcIjpmKTt0aGlzLnN1Y2Nlc3M9Yjt0aGlzLnY9ZDt0aGlzLnB1c2g9ZX07Xy5KKFFzLFBzKTtRcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXt1aWQ6dGhpcy5sLHN1Y2Nlc3M6dGhpcy5zdWNjZXNzLG5ld0dlb21ldHJ5OnlzKHRoaXMubSksZXhwYW5kX3Q6dGhpcy52LnRvcCxleHBhbmRfcjp0aGlzLnYucmlnaHQsZXhwYW5kX2I6dGhpcy52LmJvdHRvbSxleHBhbmRfbDp0aGlzLnYubGVmdCxwdXNoOnRoaXMucHVzaH07dGhpcy5vJiYoYS5zZW50aW5lbD10aGlzLm8pO3JldHVybiBKU09OLnN0cmluZ2lmeShhKX07dmFyIFJzPWZ1bmN0aW9uKGEsYixjLGQpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWQ/XCJcIjpkKTt0aGlzLndpZHRoPWI7dGhpcy5oZWlnaHQ9Y307Xy5KKFJzLEpzKTtScy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsd2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHR9KX07dmFyIFNzPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YztmJiYoZj1cIj9cIitmKTtiPSh2b2lkIDA9PT1lP1wiLy90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tXCI6ZSkrKFwiL3NhZmVmcmFtZS9cIitiK1wiL2h0bWwvY29udGFpbmVyLmh0bWxcIitmKTtlPWE7Zm9yKGY9MDtlIT1lLnBhcmVudDspZisrLGU9ZS5wYXJlbnQ7KGU9ZikmJihiKz0oYz9cIiZcIjpcIj9cIikrXCJuPVwiK2UpOyhjPWQpfHwoYz1KZyhhLCExKSk7cmV0dXJuKGM/XCJodHRwczpcIjpcImh0dHA6XCIpK2J9O3ZhciBUcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9d2luZG93O3JldHVybiBmdW5jdGlvbigpe3ZhciBlPV8uT2koKSxmPTM7dHJ5e3ZhciBnPWIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGspe2Y9MTM7aWYoYylyZXR1cm4gYyhhLGspLGc7dGhyb3cgazt9ZmluYWxseXtpZihkLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmZSl7dmFyIGg9Xy5PaSgpfHwwO2U9e2xhYmVsOmEudG9TdHJpbmcoKSx2YWx1ZTplLGR1cmF0aW9uOmgtZSx0eXBlOmZ9O2Y9ZC5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlPWQuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZXx8W107MjA0OD5mLmxlbmd0aCYmZi5wdXNoKGUpfX1yZXR1cm4gZ319O3ZhciBZcz1mdW5jdGlvbihhKXtBcy5jYWxsKHRoaXMsYS51bmlxdWVJZCk7dmFyIGI9dGhpczt0aGlzLkQ9YS5oZDt0aGlzLkc9MT09YS5zaXplO3RoaXMuVj1uZXcgSHMoYS5wZXJtaXNzaW9ucy53YiYmIXRoaXMuRyxhLnBlcm1pc3Npb25zLnhiJiYhdGhpcy5HKTt0aGlzLkE9YS5UYjt0aGlzLmthPWEuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zfHxbXTt2YXIgYz13aW5kb3cubG9jYXRpb247dGhpcy5mYT1cImZpbGU6XCI9PWMucHJvdG9jb2w/XCIqXCI6Yy5wcm90b2NvbCtcIi8vXCIrYy5ob3N0O3RoaXMuZ2E9ISFhLm5iO2M9ITE9PT1hLkpjP1wiaHR0cHM6XCI6d2luZG93LmxvY2F0aW9uLnByb3RvY29sO3RoaXMuVD1hLkVjP1wiLy9cIithLkVjK1wiLnNhZmVmcmFtZS5nb29nbGVzeW5kaWNhdGlvbi5jb21cIjpcIi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiO3RoaXMuZWE9WmEoYS5hYik/XCJodHRwczovL3NlY3VyZWZyYW1lLmRvdWJsZWNsaWNrLm5ldFwiOmMrdGhpcy5UO3RoaXMuVz0hIWEuU2M7dGhpcy5iYT1VcyhhKTt0aGlzLnY9bmV3IFByO1ZzKHRoaXMsYS5UYixhLnNpemUpO3RoaXMubz10aGlzLmFhPXpzKGEuVGIpO3RoaXMuTT1hLnRkfHxcIjEtMC0zN1wiO3RoaXMuZGE9YS5QY3x8XCJcIjt0aGlzLlg9dm9pZCAwPT09YS5hYj9udWxsOmEuYWI7V3ModGhpcyxhKTt0aGlzLlA9bnVsbDt0aGlzLkk9VHMoNDEyLGZ1bmN0aW9uKCl7cmV0dXJuIFhzKGIpfSxhLnJhKTt0aGlzLks9LTE7dGhpcy5DPTA7dGhpcy5VPW51bGw7IWEuQ2V8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcnx8QWV8fHplfHwodGhpcy5VPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihUcyg0MTQsZnVuY3Rpb24oZSl7Yi5QPWVbZS5sZW5ndGgtMV07WHMoYil9LGEucmEpKSk7dGhpcy5sPW5ldyB2cih0aGlzLm1hLHRoaXMuai5jb250ZW50V2luZG93LHRoaXMuZWEsITEpO3hyKHRoaXMubCxcImluaXRfZG9uZVwiLCgwLF8uUmMpKHRoaXMuTWIsdGhpcykpO3hyKHRoaXMubCxcInJlZ2lzdGVyX2RvbmVcIiwoMCxfLlJjKSh0aGlzLldiLHRoaXMpKTt4cih0aGlzLmwsXCJyZXBvcnRfZXJyb3JcIiwoMCxfLlJjKSh0aGlzLlliLHRoaXMpKTt4cih0aGlzLmwsXCJleHBhbmRfcmVxdWVzdFwiLCgwLF8uUmMpKHRoaXMuS2IsdGhpcykpO3hyKHRoaXMubCxcImNvbGxhcHNlX3JlcXVlc3RcIiwoMCxfLlJjKSh0aGlzLkliLHRoaXMpKTt4cih0aGlzLmwsXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIiwoMCxfLlJjKSh0aGlzLk8sdGhpcykpO3RoaXMubC5jb25uZWN0KCgwLF8uUmMpKHRoaXMuUWIsdGhpcykpO3ZhciBkPVRzKDQxNSxmdW5jdGlvbigpe2IuaiYmKGIuai5uYW1lPVwiXCIsYS55YyYmYS55YygpLF8ucWIoYi5qLFwibG9hZFwiLGQpKX0sYS5yYSk7Xy52KHRoaXMuaixcImxvYWRcIixkKTt0aGlzLk1iPVRzKDQxMyx0aGlzLk1iLGEucmEpO3RoaXMuV2I9VHMoNDE3LHRoaXMuV2IsYS5yYSk7dGhpcy5ZYj1Ucyg0MTksdGhpcy5ZYixhLnJhKTt0aGlzLktiPVRzKDQxMSx0aGlzLktiLGEucmEpO3RoaXMuSWI9VHMoNDA5LHRoaXMuSWIsYS5yYSk7dGhpcy5PPVRzKDQxMCx0aGlzLk8sYS5yYSk7dGhpcy5RYj1Ucyg0MTYsdGhpcy5RYixhLnJhKX07Xy5KKFlzLEFzKTt2YXIgVnM9ZnVuY3Rpb24oYSxiLGMpe2EuRz8oYi5zdHlsZS53aWR0aD1fLmtpKFwiMTAwJVwiLCEwKSxiLnN0eWxlLmhlaWdodD1fLmtpKFwiYXV0b1wiLCEwKSk6KGIuc3R5bGUud2lkdGg9Xy5raShjLndpZHRoLCEwKSxiLnN0eWxlLmhlaWdodD1fLmtpKGMuaGVpZ2h0LCEwKSl9LFdzPWZ1bmN0aW9uKGEsYil7dmFyIGM9V2YoYS5BKSxkPWIuY29udGVudDtkPWEuTStcIjtcIitkLmxlbmd0aCtcIjtcIitkO3ZhciBlPW5ldyBJcyhhLm0sYS5mYSxhLmFhLGEuVixuZXcgR3Moe3NoYXJlZDp7c2ZfdmVyOmEuTSxja19vbjpuYXZpZ2F0b3IuY29va2llRW5hYmxlZD8xOjAsZmxhc2hfdmVyOkVzP0ZzOlwiMFwifX0pLGEuRyxhLmdhLGEuWCxhLmthKTt2YXIgZj17fTtmLnVpZD1lLm07Zi5ob3N0UGVlck5hbWU9ZS5sO2YuaW5pdGlhbEdlb21ldHJ5PXlzKGUudik7dmFyIGc9ZS5wZXJtaXNzaW9ucztnPUpTT04uc3RyaW5naWZ5KHtleHBhbmRCeU92ZXJsYXk6Zy53YixleHBhbmRCeVB1c2g6Zy54YixyZWFkQ29va2llOmcuaix3cml0ZUNvb2tpZTpnLmx9KTtmPShmLnBlcm1pc3Npb25zPWcsZi5tZXRhZGF0YT1KU09OLnN0cmluZ2lmeShlLm8uaiksZi5yZXBvcnRDcmVhdGl2ZUdlb21ldHJ5PWUuQSxmLmlzRGlmZmVyZW50U291cmNlV2luZG93PWUubmIsZi5nb29nX3NhZmVmcmFtZV9obHQ9dG4oZS5ob3N0cGFnZUxpYnJhcnlUb2tlbnMpLGYuZW5jcnlwdGlvbk1vZGU9ZS5hYixmKTtlLmomJihmLnNlbnRpbmVsPWUuaik7ZT1KU09OLnN0cmluZ2lmeShmKTtlPWQrZTtkPSExPT09Yi5KYztpZihhLlcmJmIuc2l6ZSBpbnN0YW5jZW9mIF8uVGYpe2Y9WmEoYi5hYik/XCJodHRwczovL3NlY3VyZWZyYW1lLmRvdWJsZWNsaWNrLm5ldFwiOmJnKGMuaikubG9jYXRpb24ucHJvdG9jb2wrYS5UO2c9Yi50Yzt2YXIgaD1iLnNpemUsaz1iZyhXZihhLkEpLmopO1pxfHx1ZyhrLmRvY3VtZW50LCRxKTtacSsrO2suZ29vZ2xlX2Vhc19xdWV1ZT1rLmdvb2dsZV9lYXNfcXVldWV8fFtdO2suZ29vZ2xlX2Vhc19xdWV1ZS5wdXNoKHthOmcsYjpmLGM6aC53aWR0aCxkOmguaGVpZ2h0LGU6XCJzZi1nZG4tZXhwLVwiK1pxLGY6dm9pZCAwLGc6dm9pZCAwLGg6dm9pZCAwLGk6dm9pZCAwfSl9Zz1iLnNpemU7dmFyIGw9Yi53YSxtPWIuYWR8fFwiXCI7Zj1nLndpZHRoO2g9Zy5oZWlnaHQ7Zz1cIlwiO2EuRyYmKGg9Zj0wLGc9XCJtaW4td2lkdGg6MTAwJVwiKTtrPXt9O2suaWQ9Yi50YztrLnRpdGxlPW07ay5uYW1lPWU7Yj1iZyhjLmopO2Q9WmEoYS5YKT9cImh0dHBzOi8vc2VjdXJlZnJhbWUuZG91YmxlY2xpY2submV0L2NvbnRhaW5lci5odG1sP2Vjcz1cIitsOlNzKGIsYS5NLGEuZGEsZCxhLlQpO2U9W107YS5XJiYoYj1LZyhiLmxvY2F0aW9uLmhyZWYpLGUucHVzaChbMDxiLmxlbmd0aD9cImdvb2dsZV9kZWJ1Z1wiKyhiP1wiPVwiK2I6XCJcIikrXCImXCI6XCJcIixcInhwYz1cIixcInNmLWdkbi1leHAtXCIrYS5tLFwiJnA9XCIsZW5jb2RlVVJJQ29tcG9uZW50KF8uci5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCksXCIvL1wiLGVuY29kZVVSSUNvbXBvbmVudChfLnIuZG9jdW1lbnQubG9jYXRpb24uaG9zdCldLmpvaW4oXCJcIikpKTtlLmxlbmd0aCYmKGQrPVwiI1wiK2Uuam9pbihcIiZcIikpO2I9KGsuc3JjPWQsay5zY3JvbGxpbmc9XCJub1wiLGsubWFyZ2luV2lkdGg9XCIwXCIsay5tYXJnaW5IZWlnaHQ9XCIwXCIsay53aWR0aD1TdHJpbmcoZiksay5oZWlnaHQ9U3RyaW5nKGgpLGtbXCJkYXRhLWlzLXNhZmVmcmFtZVwiXT1cInRydWVcIixrKTtudWxsIT09YS5iYSYmKGIuc2FuZGJveD1hLmJhKTtkPWc7ZT17fTtkPShlLmZyYW1lYm9yZGVyPTAsZS5hbGxvd1RyYW5zcGFyZW5jeT1cInRydWVcIixlLnN0eWxlPVwiYm9yZGVyOjA7dmVydGljYWwtYWxpZ246Ym90dG9tO1wiKyh2b2lkIDA9PT1kP1wiXCI6ZCksZS5zcmM9XCJhYm91dDpibGFua1wiLGUpO2ImJnBkKGQsYik7Yz1jLmwoXCJJRlJBTUVcIixkKTthLkEuYXBwZW5kQ2hpbGQoYyk7YS5qPWN9O18ucD1Zcy5wcm90b3R5cGU7Xy5wLlFiPWZ1bmN0aW9uKCl7dGhpcy5VJiZ0aGlzLmo/dGhpcy5VLm9ic2VydmUodGhpcy5qKTooXy52KHdpbmRvdyxcInJlc2l6ZVwiLHRoaXMuSSksXy52KHdpbmRvdyxcInNjcm9sbFwiLHRoaXMuSSkpfTtfLnAuTWI9ZnVuY3Rpb24oYSl7dHJ5e2lmKDAhPXRoaXMuc3RhdHVzKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGFscmVhZHkgaW5pdGlhbGl6ZWRcIik7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcInN0cmluZ1wiIT09dHlwZW9mIGIudmVyc2lvbil0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7dmFyIGM9bmV3IEtzKGIudWlkLGIudmVyc2lvbixiLnNlbnRpbmVsKTtpZih0aGlzLm0hPWMubHx8dGhpcy5NIT1jLnZlcnNpb24pdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO3RoaXMuc3RhdHVzPTF9Y2F0Y2goZCl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBJTklUSUFMSVpFX0RPTkUgbWVzc2FnZS4gUmVhc29uOiBcIitkLm1lc3NhZ2UpfX07Xy5wLldiPWZ1bmN0aW9uKGEpe3RyeXtpZigxIT10aGlzLnN0YXR1cyl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBub3QgaW5pdGlhbGl6ZWRcIik7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcIm51bWJlclwiIT09dHlwZW9mIGIuaW5pdGlhbFdpZHRofHxcIm51bWJlclwiIT09dHlwZW9mIGIuaW5pdGlhbEhlaWdodCl0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7aWYodGhpcy5tIT0obmV3IExzKGIudWlkLGIuaW5pdGlhbFdpZHRoLGIuaW5pdGlhbEhlaWdodCxiLnNlbnRpbmVsKSkubCl0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7dGhpcy5zdGF0dXM9Mn1jYXRjaChjKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIFJFR0lTVEVSX0RPTkUgbWVzc2FnZS4gUmVhc29uOiBcIitjLm1lc3NhZ2UpfX07Xy5wLlliPWZ1bmN0aW9uKGEpe3RyeXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCl8fFwic3RyaW5nXCIhPT10eXBlb2YgYi5kZXNjcmlwdGlvbil0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7dmFyIGM9bmV3IE1zKGIudWlkLGIuZGVzY3JpcHRpb24sYi5zZW50aW5lbCk7aWYodGhpcy5tIT1jLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO3RoaXMuRC5pbmZvKFwiRXh0IHJlcG9ydGVkIGFuIGVycm9yLiBEZXNjcmlwdGlvbjogXCIrYy52KX1jYXRjaChkKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIFJFUE9SVF9FUlJPUiBtZXNzYWdlLiBSZWFzb246IFwiK2QubWVzc2FnZSl9fTtfLnAuS2I9ZnVuY3Rpb24oYSl7dHJ5e2lmKDIhPXRoaXMuc3RhdHVzKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGlzIG5vdCByZWdpc3RlcmVkXCIpO2lmKDAhPXRoaXMuSCl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBpcyBub3QgY29sbGFwc2VkXCIpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmV4cGFuZF90fHxcIm51bWJlclwiIT09dHlwZW9mIGIuZXhwYW5kX3J8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5leHBhbmRfYnx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmV4cGFuZF9sfHxcImJvb2xlYW5cIiE9PXR5cGVvZiBiLnB1c2gpdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO3ZhciBjPW5ldyBOcyhiLnVpZCxuZXcgXy5EaChiLmV4cGFuZF90LGIuZXhwYW5kX3IsYi5leHBhbmRfYixiLmV4cGFuZF9sKSxiLnB1c2gsYi5zZW50aW5lbCk7aWYodGhpcy5tIT1jLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO2lmKCEoMDw9Yy52LnRvcCYmMDw9Yy52LmxlZnQmJjA8PWMudi5ib3R0b20mJjA8PWMudi5yaWdodCkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGV4cGFuc2lvbiBhbW91bnRzXCIpO3ZhciBkO2lmKGQ9Yy5wdXNoJiZ0aGlzLlYueGJ8fCFjLnB1c2gmJnRoaXMuVi53Yil7dmFyIGU9Yy52LGY9Yy5wdXNoLGc9dGhpcy5vPXpzKHRoaXMuaik7aWYoZS50b3A8PWcuai50b3AmJmUucmlnaHQ8PWcuai5yaWdodCYmZS5ib3R0b208PWcuai5ib3R0b20mJmUubGVmdDw9Zy5qLmxlZnQpe2lmKCFmKWZvcih2YXIgaD10aGlzLmoucGFyZW50Tm9kZTtoJiZoLnN0eWxlO2g9aC5wYXJlbnROb2RlKVJyKHRoaXMudixoLFwib3ZlcmZsb3dYXCIsXCJ2aXNpYmxlXCIsXCJpbXBvcnRhbnRcIiksUnIodGhpcy52LGgsXCJvdmVyZmxvd1lcIixcInZpc2libGVcIixcImltcG9ydGFudFwiKTt2YXIgaz10aGlzLm8ubCxsPXRoaXMuby5sLG09R2gobmV3IEZoKDAsMCxrLnJpZ2h0LWsubGVmdCxsLmJvdHRvbS1sLnRvcCkpO18uTWMoZSk/KG0udG9wLT1lLnRvcCxtLnJpZ2h0Kz1lLnJpZ2h0LG0uYm90dG9tKz1lLmJvdHRvbSxtLmxlZnQtPWUubGVmdCk6KG0udG9wLT1lLG0ucmlnaHQrPU51bWJlcih2b2lkIDApLG0uYm90dG9tKz1OdW1iZXIodm9pZCAwKSxtLmxlZnQtPU51bWJlcih2b2lkIDApKTtScih0aGlzLnYsdGhpcy5BLFwicG9zaXRpb25cIixcInJlbGF0aXZlXCIpO1JyKHRoaXMudix0aGlzLmosXCJwb3NpdGlvblwiLFwiYWJzb2x1dGVcIik7Zj8oU3IodGhpcy52LHRoaXMuQSxcIndpZHRoXCIsbS5yaWdodC1tLmxlZnQpLFNyKHRoaXMudix0aGlzLkEsXCJoZWlnaHRcIixtLmJvdHRvbS1tLnRvcCkpOlJyKHRoaXMudix0aGlzLmosXCJ6SW5kZXhcIixcIjEwMDAwXCIpO1NyKHRoaXMudix0aGlzLmosXCJ3aWR0aFwiLG0ucmlnaHQtbS5sZWZ0KTtTcih0aGlzLnYsdGhpcy5qLFwiaGVpZ2h0XCIsbS5ib3R0b20tbS50b3ApO1NyKHRoaXMudix0aGlzLmosXCJsZWZ0XCIsbS5sZWZ0KTtTcih0aGlzLnYsdGhpcy5qLFwidG9wXCIsbS50b3ApO3RoaXMuSD0yO3RoaXMubz16cyh0aGlzLmopO2Q9ITB9ZWxzZSBkPSExfWE9ZDt5cih0aGlzLmwsXCJleHBhbmRfcmVzcG9uc2VcIiwobmV3IFFzKHRoaXMubSxhLHRoaXMubyxjLnYsYy5wdXNoKSkuaigpKTtpZighYSl0aHJvdyBFcnJvcihcIlZpZXdwb3J0IG9yIGRvY3VtZW50IGJvZHkgbm90IGxhcmdlIGVub3VnaCB0byBleHBhbmQgaW50by5cIik7fWNhdGNoKG4pe3RoaXMuRC5lcnJvcihcIkludmFsaWQgRVhQQU5EX1JFUVVFU1QgbWVzc2FnZS4gUmVhc29uOiBcIituLm1lc3NhZ2UpfX07Xy5wLkliPWZ1bmN0aW9uKGEpe3RyeXtpZigyIT10aGlzLnN0YXR1cyl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBpcyBub3QgcmVnaXN0ZXJlZFwiKTtpZigyIT10aGlzLkgpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgaXMgbm90IGV4cGFuZGVkXCIpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKSl0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7aWYodGhpcy5tIT0obmV3IE9zKGIudWlkLGIuc2VudGluZWwpKS5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTtUcih0aGlzLnYpO3RoaXMuSD0wO3RoaXMuaiYmKHRoaXMubz16cyh0aGlzLmopKTt5cih0aGlzLmwsXCJjb2xsYXBzZV9yZXNwb25zZVwiLChuZXcgUHModGhpcy5tLHRoaXMubykpLmooKSl9Y2F0Y2goYyl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBDT0xMQVBTRV9SRVFVRVNUIG1lc3NhZ2UuIFJlYXNvbjogXCIrYy5tZXNzYWdlKX19O3ZhciBYcz1mdW5jdGlvbihhKXtpZigxPT1hLnN0YXR1c3x8Mj09YS5zdGF0dXMpc3dpdGNoKGEuQyl7Y2FzZSAwOlpzKGEpO2EuSz13aW5kb3cuc2V0VGltZW91dCgoMCxfLlJjKShhLlksYSksMUUzKTthLkM9MTticmVhaztjYXNlIDE6YS5DPTI7YnJlYWs7Y2FzZSAyOmEuQz0yfX07WXMucHJvdG90eXBlLk89ZnVuY3Rpb24oYSl7dHJ5e2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLndpZHRofHxcIm51bWJlclwiIT09dHlwZW9mIGIuaGVpZ2h0fHxiLnNlbnRpbmVsJiZcInN0cmluZ1wiIT09dHlwZW9mIGIuc2VudGluZWwpdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO3ZhciBjPW5ldyBScyhiLnVpZCxiLndpZHRoLGIuaGVpZ2h0LGIuc2VudGluZWwpO2lmKHRoaXMubSE9Yy5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTt2YXIgZD1TdHJpbmcoYy5oZWlnaHQpO3RoaXMuRz9kIT10aGlzLmouaGVpZ2h0JiYodGhpcy5qLmhlaWdodD1kLFhzKHRoaXMpKTp0aGlzLkQuZXJyb3IoXCJHb3QgQ3JlYXRpdmVHZW9tZXRyeVVwZGF0ZSBtZXNzYWdlIGluIG5vbi1mbHVpZGNvbnRhaW5lci4gVGhlIGNvbnRhaW5lciBpcyBub3QgcmVzaXplZC5cIil9Y2F0Y2goZSl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBDUkVBVElWRV9HRU9NRVRSWV9VUERBVEUgbWVzc2FnZS4gUmVhc29uOiBcIitlLm1lc3NhZ2UpfX07WXMucHJvdG90eXBlLlk9ZnVuY3Rpb24oKXtpZigxPT10aGlzLnN0YXR1c3x8Mj09dGhpcy5zdGF0dXMpc3dpdGNoKHRoaXMuQyl7Y2FzZSAxOnRoaXMuQz0wO2JyZWFrO2Nhc2UgMjpacyh0aGlzKSx0aGlzLks9d2luZG93LnNldFRpbWVvdXQoKDAsXy5SYykodGhpcy5ZLHRoaXMpLDFFMyksdGhpcy5DPTF9fTt2YXIgWnM9ZnVuY3Rpb24oYSl7YS5vPXpzKGEuaixhLlApO2EuUD1udWxsO3lyKGEubCxcImdlb21ldHJ5X3VwZGF0ZVwiLChuZXcgUHMoYS5tLGEubykpLmooKSl9LFVzPWZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7YS5GYyYmKGI9YS5GYyk7cmV0dXJuIG51bGw9PWI/bnVsbDpiLmpvaW4oXCIgXCIpfSwkcz1bXCJhbGxvdy1tb2RhbHNcIixcImFsbG93LW9yaWVudGF0aW9uLWxvY2tcIixcImFsbG93LXByZXNlbnRhdGlvblwiXSxhdD1bXCJhbGxvdy10b3AtbmF2aWdhdGlvblwiXSxidD1bXCJhbGxvdy1zYW1lLW9yaWdpblwiXSxjdD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihhdCkpKSxkdD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihidCkpKSxldD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihhdCksXy5GYihidCkpKSxmdD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihhdCksW1wiYWxsb3ctcG9pbnRlci1sb2NrXCJdKSk7dmFyIGFiPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1uZXcgZnEoYixjKTtlLm9iPWQ7ZS5MPWE7TGEobmV3IGVxKGUpKX1jYXRjaChmKXt9fTt2YXIgZ3Q9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soZ3QsTSk7Z3QucHJvdG90eXBlLmdldFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLDQpfTt2YXIgaHQ9ZnVuY3Rpb24oKXt9O3ZhciBpdD1bLjA1LC4xLC4yLC41XSxqdD1bMCwuNSwxXSxrdD1mdW5jdGlvbihhKXthPXRnKGEpO2lmKCFhKXJldHVybi0xO3RyeXt2YXIgYj12aShhLmRvY3VtZW50KTt2YXIgYz1uZXcgXy5UZihiLmNsaWVudFdpZHRoLGIuY2xpZW50SGVpZ2h0KX1jYXRjaChkKXtjPW5ldyBfLlRmKC0xMjI0NTkzMywtMTIyNDU5MzMpfXJldHVybi0xMjI0NTkzMz09Yy53aWR0aHx8LTEyMjQ1OTMzPT1jLmhlaWdodD8tMTpjLndpZHRoKmMuaGVpZ2h0fSxsdD1mdW5jdGlvbihhLGIpe3JldHVybiAwPmE/W106Xy5SYShpdCxmdW5jdGlvbihjKXtyZXR1cm4gTWF0aC5taW4oYS9iKmMsMSl9KX0sb3Q9ZnVuY3Rpb24oYSl7dGhpcy5qPWEuTDt0aGlzLmw9YS5rYjt0aGlzLkQ9YS5WYTt0aGlzLm89bnVsbDt0aGlzLm09YS5yYTt0aGlzLnY9bXQodGhpcyk7dGhpcy5VPWEueGR8fCExO3RoaXMuQz1hLnplfHwhMTt0aGlzLkE9bnVsbDt0aGlzLkMmJm50KHRoaXMpfTtvdC5wcm90b3R5cGUuZ2V0U2xvdElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307dmFyIHF0PWZ1bmN0aW9uKGEsYil7aWYoYS52KXtpZihudWxsIT1hLm8pe3RyeXtwdChhLE1hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpLDAsMCwwLCExKX1jYXRjaChjKXthLm0mJmEubShjKX1hLnYmJmEudi51bm9ic2VydmUoYS5sKTthLkE9bnVsbH1hLm89YjthLnYub2JzZXJ2ZShhLmwpO2EuQyYmKHBlcmZvcm1hbmNlLm5vdygpLGEubC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4bihhLmouZG9jdW1lbnQpfHx0ZyhhLmopLGEuQT1uZXcgaHQpfX0sbXQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sLm9mZnNldFdpZHRoKmEubC5vZmZzZXRIZWlnaHQsYz1rdChhLmopO2I9Xy5GYihqdCkuY29uY2F0KF8uRmIobHQoYyxiKSkpO1VhKGIpO3JldHVybiBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihkKXtyZXR1cm4gcnQoYSxkKX0se3RocmVzaG9sZDpifSk6bmV3IE1iKGZ1bmN0aW9uKGQpe3JldHVybiBydChhLGQpfSx7dGhyZXNob2xkOmJ9KX0scnQ9ZnVuY3Rpb24oYSxiKXt0cnl7dmFyIGM9a3QoYS5qKTtfLlZjKGIsZnVuY3Rpb24oZCl7dmFyIGU9TWF0aC5yb3VuZChkLnRpbWUpLGY9ZC5ib3VuZGluZ0NsaWVudFJlY3Qud2lkdGgqZC5ib3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0LGc9ZC5pbnRlcnNlY3Rpb25SZWN0LndpZHRoKmQuaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQ7ZD1kLmlzSW50ZXJzZWN0aW5nO2EuVSYmcHQoYSxlLGYsZyxjLGQpfSl9Y2F0Y2goZCl7YS5tJiZhLm0oZCl9fSxwdD1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYobnVsbD09YS5vKXRocm93IEVycm9yKFwiTm90IEF0dGFjaGVkLlwiKTt2YXIgZz1uZXcgZ3Q7Yz1EKGcsMSxjKTtkPUQoYywyLGQpO2U9RChkLDMsZSk7Yj1EKGUsNCxiKTtiPUQoYiw1LGYpO2Y9bmV3IFdlO2U9QihiLDQpO251bGwhPWUmJmFmKGYsNCxlKTtlPUIoYiwyKTtudWxsIT1lJiZhZihmLDIsZSk7ZT1CKGIsMSk7bnVsbCE9ZSYmYWYoZiwxLGUpO2U9QihiLDMpO251bGwhPWUmJmFmKGYsMyxlKTtlPUIoYiw1KTtudWxsIT1lJiYoYj1lLG51bGwhPWImJihwZShmLmosNDApLGYuai5qLnB1c2goYj8xOjApKSk7Zj1aZShmKTtmPVVlKGYsNCk7V2koYS5ELFwiMVwiLDEwLGYsdm9pZCAwLGEubyl9LG50PWZ1bmN0aW9uKGEpe3ZhciBiPXduKGEuai5kb2N1bWVudCk7YiYmXy52KGEuai5kb2N1bWVudCxiLGZ1bmN0aW9uKCl7YS5BJiZwZXJmb3JtYW5jZS5ub3coKX0pfTt2YXIgc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gNj09PWIuc3RhdGV9KX0sdHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkEoYSxcImZpbmRcIikuY2FsbChhLGZ1bmN0aW9uKGQpe3JldHVybiA2PT09ZC5zdGF0ZX0pO2lmKCFjKXJldHVybiBudWxsO2E9YS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQuaXNzdWVyT3JpZ2lufSk7Yz17dHlwZTpcInNlbmQtc3JyXCIsaXNzdWVyOmMuaXNzdWVyT3JpZ2luLGlzc3VlcnM6YSxyZWZyZXNoUG9saWN5Olwibm9uZVwiLHNpZ25SZXF1ZXN0RGF0YTpcImluY2x1ZGVcIixpbmNsdWRlVGltZXN0YW1wSGVhZGVyOiEwLGFkZGl0aW9uYWxTaWduZWRIZWFkZXJzOltcInNlYy10aW1lXCIsXCJTZWMtU2lnbmVkLVJlZGVtcHRpb24tUmVjb3JkXCJdfTtiJiYwPF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGIpLmxlbmd0aCYmKGMuYWRkaXRpb25hbFNpZ25pbmdEYXRhPVZlKEpTT04uc3RyaW5naWZ5KGIpLDMpKTtyZXR1cm4gY30sdXQ9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5EaigyNTApLGM9Xy5EaigyNTIpO2lmKGEuc2V0VHJ1c3RUb2tlbiYmc3QoYikpdHJ5e3ZhciBkPXR0KGIsYyk7ZCYmYS5zZXRUcnVzdFRva2VuKGQpfWNhdGNoKGUpe319O3ZhciB2dD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IGEuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYyxiKTpuZXcgTWIoYyxiKX0sd3Q9ZnVuY3Rpb24oYSxiLGMpe18udihhLGIsYyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8ucWIoYSxiLGMpfX0seHQ9bnVsbCx5dD1mdW5jdGlvbigpe3h0PV8uTmkoKX0senQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9udWxsPT09eHQ/KF8udihhLFwibW91c2Vtb3ZlXCIseXQse3Bhc3NpdmU6ITB9KSxfLnYoYSxcInNjcm9sbFwiLHl0LHtwYXNzaXZlOiEwfSkseXQoKSwhMSk6Xy5OaSgpLXh0Pj0xRTMqYjohMX0sQXQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5MLGM9YS5lbGVtZW50LGQ9YS5EZCxlPWEuQWQsZj12b2lkIDA9PT1hLkhjPzA6YS5IYyxnPWEuSGIsaD1hLlRjLGs9dm9pZCAwPT09YS54Yz8hMDphLnhjLGw9bnVsbCxtPSExLG49ITEscT1bXSx3PSh2b2lkIDA9PT1hLnpiP3Z0OmEuemIpKGIsdm9pZCAwPT09YS5vcHRpb25zP3t9OmEub3B0aW9ucyxmdW5jdGlvbih1LEMpe3RyeXt2YXIgUT1mdW5jdGlvbigpe3EubGVuZ3RofHwoZSYmKHEucHVzaCh3dChjLFwibW91c2VlbnRlclwiLGZ1bmN0aW9uKCl7bT0hMDtRKCl9KSkscS5wdXNoKHd0KGMsXCJtb3VzZWxlYXZlXCIsZnVuY3Rpb24oKXttPSExO1EoKX0pKSkscS5wdXNoKHd0KGIuZG9jdW1lbnQsXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZnVuY3Rpb24oKXtyZXR1cm4gUSgpfSkpKTt2YXIgTj16dChiLGYpLEg9eG4oYi5kb2N1bWVudCk7aWYobiYmIW0mJiFOJiYhSClsPWx8fGIuc2V0VGltZW91dChmdW5jdGlvbigpe3p0KGIsZik/USgpOihnKCksQy5kaXNjb25uZWN0KCkpfSwxRTMqZCk7ZWxzZSBpZihrfHxtfHxOfHxIKWIuY2xlYXJUaW1lb3V0KGwpLGw9bnVsbH07bj11W3UubGVuZ3RoLTFdLmlzSW50ZXJzZWN0aW5nO1EoKX1jYXRjaChOKXtoJiZoKE4pfX0pO3cub2JzZXJ2ZShjKTtyZXR1cm4gZnVuY3Rpb24oKXt3LmRpc2Nvbm5lY3QoKTtmb3IodmFyIHU9Xy5GKHEpLEM9dS5uZXh0KCk7IUMuZG9uZTtDPXUubmV4dCgpKUM9Qy52YWx1ZSxDKCk7bnVsbCE9bCYmYi5jbGVhclRpbWVvdXQobCl9fTt2YXIgQnQ9ZnVuY3Rpb24oKXt2YXIgYT1CKFRuLkIoKS5qLDI2KTt0aGlzLmo9bnVsbDt0aGlzLmw9MDt0aGlzLnY9YX0sQ3Q9ZnVuY3Rpb24oYSl7aWYoIWEuail7dmFyIGI9Xy5Eaig3KTtKcT1IcSgpO01xPWI7THE9MDtpZighWmQoKXx8MDw9UGQoZGUoKSwxMSkpYj1PcSgpO2Vsc2V7Yj1vaSgpO3ZhciBjPWIuX19nb29nbGVfYWRfdXJscztiPWM/YzpiLl9fZ29vZ2xlX2FkX3VybHM9bmV3IEJxfWEuaj1iO2EubD1hLmouc2V0dXBPc2UoYS52KX1yZXR1cm4gYS5qfTtCdC5wcm90b3R5cGUuZ2V0T3NlSWQ9ZnVuY3Rpb24oKXt0aGlzLmx8fCh0aGlzLmw9QXEoMCxfLkRqKDcpKSk7cmV0dXJuIHRoaXMubH07dmFyIER0PTAsRXQ9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgUGY7dGhpcy53YT1hLmouZ2V0VVRDRnVsbFllYXIoKStpZShhLmouZ2V0VVRDTW9udGgoKSsxKStpZShhLmouZ2V0VVRDRGF0ZSgpKTt0aGlzLmo9W107dGhpcy52PU5hTjt0aGlzLkk9XCJqc29uX2h0bWxcIjt0aGlzLkc9XCJmaWZcIjt0aGlzLkVhPTE7dGhpcy5VPVtdO3RoaXMuSmE9dGhpcy5XYT10aGlzLlhhPU5hTjt0aGlzLm89MDt0aGlzLks9dGhpcy5IPXRoaXMuRD1cIlwiO3RoaXMubT1bXTt0aGlzLmw9MDt0aGlzLkM9bmV3IHQuTWFwO3RoaXMuQT1uZXcgdC5NYXB9LEZ0PWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRTbG90SWQoKTtiPWEuQy5nZXQoYyk7Ynx8KGI9d2luZG93PT13aW5kb3cudG9wPygrK0R0KS50b1N0cmluZygzNik6amUoKSxhLkMuc2V0KGMsYiksXy5SKGMsZnVuY3Rpb24oKXthLkMuZGVsZXRlKGMpfSkpO3JldHVybiBifSxHdD1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0U2xvdElkKCk7YS5BLnNldChjLGIubCk7Xy5SKGMsZnVuY3Rpb24oKXthLkEuZGVsZXRlKGMpfSl9LEh0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuQS5nZXQoYi5nZXRTbG90SWQoKSl8fGIubH07dmFyIEl0PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ITEsZz1mdW5jdGlvbigpeyFmJiYoXy55KDQxMik/ZnAoZSxiKTpiLkQpJiYoYygpLGY9ITApfTsoZD1kJiZhLmNvbnRlbnRXaW5kb3c/Xy5yYSg1KTowKSYmMiE9ZHx8Xy52KGEsXCJsb2FkXCIsZyk7ZCYmYS5jb250ZW50V2luZG93JiZfLnYoYS5jb250ZW50V2luZG93LFwiYW1wLWluaS1sb2FkXCIsZyl9O3ZhciBKdD1udWxsLEt0PSExLEx0PSExLE10PSExLE50PWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9fLnI6YTtpZighTHQpe3ZhciBiPW5ldyBXayhcImdwdF9wdWJjb25zb2xlX2xvYWRlZFwiKTtsYihiKTtFKGIsXCJwYXJhbVwiLFN0cmluZyhmYihhKSkpO0UoYixcImFwaVwiLFN0cmluZyhNdCkpO1lrKGIsMSk7Yj1cImh0dHBzOlwiK18uRGooMjI4KStcImxvYWRlci5qc1wiO3VnKGEuZG9jdW1lbnQsbGcoYikpO0x0PSEwfX0sT3Q9Ryg5NCxmdW5jdGlvbihhKXthPXZvaWQgMD09PWE/Xy5yOmE7WGIoKS5fcHViY29uc29sZV9kaXNhYmxlX3x8bnVsbCE9PWZiKGEpJiZOdChhKX0pLFB0PWZ1bmN0aW9uKGEsYil7IVhiKCkuX3B1YmNvbnNvbGVfZGlzYWJsZV8mJihhPVFhKFwiZ29vZ2xlX3B1YmNvbnNvbGVcIixhLGIpKSYmKGE9YS5zcGxpdChcInxcIiksMDxhLmxlbmd0aCYmKFwiMVwiPT1hWzBdfHxcIjBcIj09YVswXSkmJk50KCkpfTtcImNvbXBsZXRlXCI9PT1fLnIuZG9jdW1lbnQucmVhZHlTdGF0ZT9PdCgpOnZqKF8ucixmdW5jdGlvbigpe090KCl9KTtXYihcImRpc2FibGVQdWJsaXNoZXJDb25zb2xlXCIsUyg5MyxmdW5jdGlvbigpe1hiKCkuX3B1YmNvbnNvbGVfZGlzYWJsZV89ITB9KSk7V2IoXCJvblB1YkNvbnNvbGVKc0xvYWRcIixTKDczMSxmdW5jdGlvbigpe0t0JiYoWGIoKS5jb25zb2xlLm9wZW5Db25zb2xlKEp0KSxKdD1udWxsLEt0PSExKX0pKTtXYihcIm9wZW5Db25zb2xlXCIsUyg3MzIsZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP1wiXCI6YTtNdD0hMDtYYiYmWGIoKS5jb25zb2xlP1hiKCkuY29uc29sZS5vcGVuQ29uc29sZShhKTooYSYmKEp0PWEpLEt0PSEwLE50KCkpfSkpO3ZhciBRdD1mdW5jdGlvbigpe3ZhciBhPWpsLkIoKTt0aGlzLmdldEFsbEV2ZW50cz1TKDU2MyxmdW5jdGlvbigpe3JldHVybiBMdD96aChhLmopLnNsaWNlKCk6W119KTt0aGlzLmdldEV2ZW50c0J5U2xvdD1TKDU2NSxmdW5jdGlvbihiKXtyZXR1cm4gTHQ/a2woYSxiKS5zbGljZSgpOltdfSk7dGhpcy5nZXRFdmVudHNCeUxldmVsPVMoNTY2LGZ1bmN0aW9uKGIpe3JldHVybiBMdD9sbChhLGIpLnNsaWNlKCk6W119KX07Xy5KKFF0LHlqKTt2YXIgUnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWpsLkIoKSxkPVRuLkIoKS5qLGU9V24oVG4uQigpLGEuai5nZXRTbG90RWxlbWVudElkKCkpO3RoaXMuc2V0PVMoODMsZnVuY3Rpb24oZixnKXthLnNldChmLGcpO3JldHVybiBifSk7dGhpcy5nZXQ9Uyg4NCxmdW5jdGlvbihmKXtyZXR1cm4gYS5nZXQoZil9KTt0aGlzLnNldENsaWNrVXJsPVMoNzksZnVuY3Rpb24oZil7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBmKXJldHVybiBjLkoocWwoXCJTbG90LnNldENsaWNrVXJsXCIsW2ZdKSxudWxsLGEuaiksYjtEKGUsNyxmKTtyZXR1cm4gYn0pO3RoaXMuc2V0VGFyZ2V0aW5nPVMoODEsZnVuY3Rpb24oZixnKXtSbihhLmosZSxmLGcsYyk7cmV0dXJuIGJ9KTt0aGlzLnVwZGF0ZVRhcmdldGluZ0Zyb21NYXA9Uyg4NSxmdW5jdGlvbihmKXtTbihhLmosZSxmLGMpO3JldHVybiBifSk7dGhpcy5kaXNwbGF5PVMoNzgsZnVuY3Rpb24oKXtfLnkoNDIzKSYmRChlLDE5LCEwKTt2YXIgZj1LayhkLFZuKCkpO2EuZGlzcGxheShmKX0pO3RoaXMuc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudD1TKDgwLGZ1bmN0aW9uKGYpe2lmKDA9PT1mfHwxPT09Zil7dmFyIGc9VWooZCl8fG5ldyBPajtEKGcsNSxmKTt2ZihkLDI1LGcpfXJldHVybiBifSk7dGhpcy5zZXRGb3JjZVNhZmVGcmFtZT1TKDU2NyxmdW5jdGlvbihmKXtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBmKXJldHVybiBjLkooZm0oXCJQYXNzYmFja1Nsb3Quc2V0Rm9yY2VTYWZlRnJhbWVcIixTdHJpbmcoZikpLG51bGwsYS5qKSxiO0QoZSwxMixmKTtyZXR1cm4gYn0pO3RoaXMuc2V0VGFnRm9yVW5kZXJBZ2VPZkNvbnNlbnQ9Uyg0NDgsZnVuY3Rpb24oZil7aWYoMD09PWZ8fDE9PT1mKXt2YXIgZz1VaihkKXx8bmV3IE9qO0QoZyw2LGYpO3ZmKGQsMjUsZyl9cmV0dXJuIGJ9KX07Xy5KKFJ0LHlqKTt2YXIgU3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHpqKGMsYil9KS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuISFjfSl9LFR0PWZ1bmN0aW9uKGEpe3ZhciBiPXFwLkIoKSxjPVtdO2E9Xy5GKGEpO2Zvcih2YXIgZD1hLm5leHQoKTshZC5kb25lO2Q9YS5uZXh0KCkpe2Q9ZC52YWx1ZTtiLmw9ZDt2YXIgZT1uaig5KTsxPT09ZS5sZW5ndGgmJihjLnB1c2goZCksYy5wdXNoKGQrXCItXCIrZVswXSkpfXJldHVybiBjfSxVdD1qZChmdW5jdGlvbigpe3JldHVybiBkaChcImdvb2dsZV9EaXNhYmxlSW5pdGlhbExvYWQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlIGdvb2dsZXRhZy5wdWJhZHMoKS5pc0luaXRpYWxMb2FkRGlzYWJsZWQoKSBpbnN0ZWFkIHRvIGNoZWNrIGlmIGluaXRpYWwgbG9hZCBoYXMgYmVlbiBkaXNhYmxlZC5cIil9KSxWdD1mdW5jdGlvbigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csXCJnb29nbGVfRGlzYWJsZUluaXRpYWxMb2FkXCIse2dldDpmdW5jdGlvbigpe1V0KCk7cmV0dXJuITB9LHNldDpmdW5jdGlvbigpe1V0KCl9LGNvbmZpZ3VyYWJsZTohMH0pfSxjdT1mdW5jdGlvbihhLGIpe2pwLmNhbGwodGhpcyxhKTt2YXIgYz10aGlzLGQ9amwuQigpLGU9VG4uQigpLmosZj1WbigpLGc9ITE7dGhpcy5zZXRUYXJnZXRpbmc9UygxLGZ1bmN0aW9uKGgsayl7dmFyIGw9bnVsbDtcInN0cmluZ1wiPT09dHlwZW9mIGs/bD1ba106QXJyYXkuaXNBcnJheShrKT9sPWs6S2MoaykmJihsPV8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxrKSk7dmFyIG09XCJzdHJpbmdcIj09PXR5cGVvZiBoJiYhRmQoaCk7bD1fLnkoMTgwKT9sOmwmJmhkKGwpO3ZhciBuPSEhbCYmbC5ldmVyeShmdW5jdGlvbihxKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIHF9KTtpZighbXx8IW4pcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0VGFyZ2V0aW5nXCIsW2gsa10pLGEpLGM7az0oej11ZihlLEpqLDIpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKHEpe3JldHVybiBLaihxKT09PWh9KTtpZihcImdwdC1iZXRhXCI9PT1oKXtpZihhLmopcmV0dXJuIGQuSihCbShsLmpvaW4oKSkpLGM7aWYoaylyZXR1cm4gZC5KKENtKGwuam9pbigpKSksYztsPVR0KGwpfWs/TWooayxsKTooaz1NaihMaihuZXcgSmosaCksbCkseGYoZSwyLGssSmopKTtkLmluZm8ob20oaCxsLmpvaW4oKSxhLlooKSksYSk7cmV0dXJuIGN9KTt0aGlzLmNsZWFyVGFyZ2V0aW5nPVMoMixmdW5jdGlvbihoKXtpZih2b2lkIDA9PT1oKXJldHVybiBUaihlLFtdKSxkLmluZm8oem0oYS5aKCkpLGEpLGM7aWYoXCJncHQtYmV0YVwiPT09aClyZXR1cm4gZC5KKERtKGgpKSxjO3ZhciBrPXVmKGUsSmosMiksbD1fLkEoayxcImZpbmRJbmRleFwiKS5jYWxsKGssZnVuY3Rpb24obSl7cmV0dXJuIEtqKG0pPT09aH0pO2lmKDA+bClyZXR1cm4gZC5KKGxtKGgsYS5aKCkpLGEpLGM7ay5zcGxpY2UobCwxKTtUaihlLGspO2QuaW5mbyhrbShoLGEuWigpKSxhKTtyZXR1cm4gY30pO3RoaXMuZ2V0VGFyZ2V0aW5nPVMoMzgsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBoKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLmdldFRhcmdldGluZ1wiLFtoXSksYSksW107dmFyIGs9KHo9dWYoZSxKaiwyKSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihsKXtyZXR1cm4gS2oobCk9PT1ofSk7cmV0dXJuIGs/QihrLDIpLnNsaWNlKCk6W119KTt0aGlzLmdldFRhcmdldGluZ0tleXM9UygzOSxmdW5jdGlvbigpe3JldHVybiB1ZihlLEpqLDIpLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCl9KX0pO3RoaXMuc2V0Q2F0ZWdvcnlFeGNsdXNpb249UygzLGZ1bmN0aW9uKGgpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaHx8RmQoaCkpcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0Q2F0ZWdvcnlFeGNsdXNpb25cIixbaF0pLGEpLGM7KHo9QihlLDMpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixoKXx8c2YoZSwzLGgpO2QuaW5mbyhtbShoKSxhKTtyZXR1cm4gY30pO3RoaXMuY2xlYXJDYXRlZ29yeUV4Y2x1c2lvbnM9Uyg0LGZ1bmN0aW9uKCl7RChlLDMsW10pO2QuaW5mbyhubSgpLGEpO3JldHVybiBjfSk7dGhpcy5kaXNhYmxlSW5pdGlhbExvYWQ9Uyg1LGZ1bmN0aW9uKCl7IWEuanx8Xy55KDQxMCk/KEQoZSw0LCEwKSxnfHwoZz0hMCxWdCgpKSk6ZC5KKFlsKFwiZGlzYWJsZUluaXRpYWxMb2FkXCIsXCJwdWJhZHNcIiksYSl9KTt0aGlzLmVuYWJsZVNpbmdsZVJlcXVlc3Q9Uyg2LGZ1bmN0aW9uKCl7aWYoYS5qJiYheChlLDYpKXJldHVybiBkLkooWGwoXCJlbmFibGVTaW5nbGVSZXF1ZXN0XCIpLGEpLCExO2QuaW5mbygkbChcInNpbmdsZSByZXF1ZXN0XCIpLGEpO0QoZSw2LCEwKTtyZXR1cm4hMH0pO3RoaXMuZW5hYmxlQXN5bmNSZW5kZXJpbmc9Uyg3LGZ1bmN0aW9uKCl7cmV0dXJuITB9KTt0aGlzLmVuYWJsZVN5bmNSZW5kZXJpbmc9Uyg4LGZ1bmN0aW9uKCl7ZGgoXCJHUFQgc3luY2hyb25vdXMgcmVuZGVyaW5nIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIGFkcyB3aWxsIGJlIHJlcXVlc3RlZCBhbmQgcmVuZGVyZWQgYXN5bmNocm9ub3VzbHkuIFNlZSBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9hZG1hbmFnZXIvYW5zd2VyLzkyMTI1OTQgZm9yIG1vcmUgZGV0YWlscy5cIik7cmV0dXJuITF9KTt0aGlzLmVuYWJsZUxhenlMb2FkPVMoNDg1LGZ1bmN0aW9uKGgpe3ZhciBrPW5ldyBOajtEKGssMSw4MDApO0QoaywyLDQwMCk7RChrLDMsMyk7aWYoXy5NYyhoKSl7dmFyIGw9aC5mZXRjaE1hcmdpblBlcmNlbnQ7XCJudW1iZXJcIj09PXR5cGVvZiBsJiYoMDw9bD9EKGssMSxsKTotMT09bCYmRChrLDEsdm9pZCAwKSk7bD1oLnJlbmRlck1hcmdpblBlcmNlbnQ7XCJudW1iZXJcIj09PXR5cGVvZiBsJiYoMDw9bD9EKGssMixsKTotMT09bCYmRChrLDIsdm9pZCAwKSk7aD1oLm1vYmlsZVNjYWxpbmc7XCJudW1iZXJcIj09PXR5cGVvZiBoJiYoMDxoP0QoaywzLGgpOi0xPT1oJiZEKGssMywxKSl9dmYoZSw1LGspfSk7dGhpcy5zZXRDZW50ZXJpbmc9Uyg5LGZ1bmN0aW9uKGgpe2g9ISFoO2QuaW5mbyhhbShcImNlbnRlcmluZ1wiLFN0cmluZyhoKSksYSk7RChlLDE1LGgpfSk7dGhpcy5kZWZpbmVQYXNzYmFjaz1TKDEwLGZ1bmN0aW9uKGgsayl7cmV0dXJuKGg9V3QoYSxoLGspLnNsb3QpJiZnbChoKX0pO3RoaXMucmVmcmVzaD1TKDExLGZ1bmN0aW9uKGgsayl7az12b2lkIDA9PT1rP3t9Oms7aCYmIUFycmF5LmlzQXJyYXkoaCl8fCFfLk1jKGspfHxrLmNoYW5nZUNvcnJlbGF0b3ImJlwiYm9vbGVhblwiIT09dHlwZW9mIGsuY2hhbmdlQ29ycmVsYXRvcj9kLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnJlZnJlc2hcIixbaCxrXS5maWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJuIHZvaWQgMCE9PWx9KSksYSk6KGsmJjA9PWsuY2hhbmdlQ29ycmVsYXRvcnx8RChlLDI2LE5rKCkpLGg9aD9TdChoLGIpOmEubCxYdChhLEtrKGUsZiksaCkpfSk7dGhpcy5lbmFibGVWaWRlb0Fkcz1TKDEyLGZ1bmN0aW9uKCl7RChlLDIxLCEwKTtZdChhLGUpfSk7dGhpcy5zZXRWaWRlb0NvbnRlbnQ9UygxMyxmdW5jdGlvbihoLGspe0QoZSwyMSwhMCk7RChlLDIyLFN0cmluZyhofHxcIlwiKSk7RChlLDIzLFN0cmluZyhrfHxcIlwiKSk7WXQoYSxlKX0pO3RoaXMuY29sbGFwc2VFbXB0eURpdnM9UygxNCxmdW5jdGlvbihoKXtoPXZvaWQgMD09PWg/ITE6aDt4KGUsMTEpP2QuSihpbSgpLGEpOmEuaj9kLkooWGwoXCJjb2xsYXBzZUVtcHR5RGl2c1wiKSxhKTooaCYmRChlLDEwLCEwKSxrYihcImdwdF9jZWRcIixmdW5jdGlvbihrKXtFKGssXCJzY1wiLGg/XCJ0XCI6XCJmXCIpO0UoayxcImxldmVsXCIsXCJwYWdlXCIpO2xiKGspfSksZC5pbmZvKGhtKFN0cmluZyghIWgpKSxhKSxEKGUsMTEsITApKTtyZXR1cm4hIXgoZSwxMSl9KTt0aGlzLmNsZWFyPVMoMTUsZnVuY3Rpb24oaCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaCk/KGg9U3QoaCxiKSxadChhLGUsZixoKSk6WnQoYSxlLGYsaCl9KTt0aGlzLnNldExvY2F0aW9uPVMoMTYsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBoKXJldHVybiBkLkooZ20oXCJBZGRyZXNzXCIpKSxjO0QoZSw4LGgpO3JldHVybiBjfSk7dGhpcy5zZXRDb29raWVPcHRpb25zPVMoMTcsZnVuY3Rpb24oaCl7aWYoMCE9PWgmJjEhPT1oKXJldHVybiBkLkooV2woU3RyaW5nKGgpKSxhKSxjO0QoZSwyNCxoKTtyZXR1cm4gY30pO3RoaXMuc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudD1TKDE4LGZ1bmN0aW9uKGgpe2lmKDEhPT1oJiYwIT09aClyZXR1cm4gZC5KKHBtKFN0cmluZyhoKSksYSksYzt2YXIgaz1VaihlKXx8bmV3IE9qO0Qoayw1LGgpO3ZmKGUsMjUsayk7cmV0dXJuIGN9KTt0aGlzLmNsZWFyVGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudD1TKDE5LGZ1bmN0aW9uKCl7dmFyIGg9VWooZSk7aWYoIWgpcmV0dXJuIGM7RChoLDUsdm9pZCAwKTt2ZihlLDI1LGgpO3JldHVybiBjfSk7dGhpcy5zZXRQdWJsaXNoZXJQcm92aWRlZElkPVMoMjAsZnVuY3Rpb24oaCl7aD1TdHJpbmcoaCk7YS5qP2QuSihabChcInNldFB1Ymxpc2hlclByb3ZpZGVkSWRcIixoKSxhKTooZC5pbmZvKGFtKFwiUFBJRFwiLGgpLGEpLEQoZSwxNixoKSk7cmV0dXJuIGN9KTt0aGlzLnNldD1TKDIxLGZ1bmN0aW9uKGgsayl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBofHwhaC5sZW5ndGh8fHZvaWQgMD09PVFuKClbaF18fFwic3RyaW5nXCIhPT10eXBlb2YgaylyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5zZXRcIixbaCxrXSksYSksYzt2YXIgbD0oej11ZihlLEpqLDE0KSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihtKXtyZXR1cm4gS2oobSk9PT1ofSk7bD9NaihsLFtrXSk6KGw9TGoobmV3IEpqLGgpLHNmKGwsMixrKSx4ZihlLDE0LGwsSmopKTtkLmluZm8oS2woaCxTdHJpbmcoayksYS5aKCkpLGEpO3JldHVybiBjfSk7dGhpcy5nZXQ9UygyMixmdW5jdGlvbihoKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGgpcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2UuZ2V0XCIsW2hdKSxhKSxudWxsO3ZhciBrPSh6PXVmKGUsSmosMTQpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGwpe3JldHVybiBLaihsKT09PWh9KTtyZXR1cm4oaz1rJiZCKGssMikpP2tbMF06bnVsbH0pO3RoaXMuZ2V0QXR0cmlidXRlS2V5cz1TKDIzLGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGUsSmosMTQpLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCl9KX0pO3RoaXMuZGlzcGxheT1TKDI0LGZ1bmN0aW9uKGgsayxsLG0pe3JldHVybiB2b2lkIGEuZGlzcGxheShoLGssdm9pZCAwPT09bD9cIlwiOmwsdm9pZCAwPT09bT9cIlwiOm0pfSk7dGhpcy51cGRhdGVDb3JyZWxhdG9yPVMoMjUsZnVuY3Rpb24oKXtkaCh1aihcInVwZGF0ZVwiKSk7ZC5KKEptKCksYSk7RChlLDI2LE5rKCkpO3JldHVybiBjfSk7dGhpcy5kZWZpbmVPdXRPZlBhZ2VQYXNzYmFjaz1TKDM1LGZ1bmN0aW9uKGgpe3ZhciBrPVd0KGEsaCxbMSwxXSk7aD1rLnNsb3Q7KGs9ay5GYSkmJkQoaywxNSwxKTtyZXR1cm4gaCYmZ2woaCl9KTt0aGlzLnNldEZvcmNlU2FmZUZyYW1lPVMoMzYsZnVuY3Rpb24oaCl7aWYoXCJib29sZWFuXCIhPT10eXBlb2YgaClyZXR1cm4gZC5KKGZtKFN0cmluZyhoKSksYSksYztEKGUsMTMsaCk7cmV0dXJuIGN9KTt0aGlzLnNldFNhZmVGcmFtZUNvbmZpZz1TKDM3LGZ1bmN0aW9uKGgpe3ZhciBrPWFvKGgpO2lmKCFrKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldFNhZmVGcmFtZUNvbmZpZ1wiLFtoXSksYSksYzt2ZihlLDE4LGspO3JldHVybiBjfSk7dGhpcy5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzPVMoNDQ1LGZ1bmN0aW9uKGgpe2lmKDAhPT1oJiYxIT09aClhLmxvZy5KKEVtKFN0cmluZyhoKSksYSk7ZWxzZSBpZihfLnkoMzczKSl7dmFyIGs9VG4uQigpLmo7aWYoIVVqKGspKXt2YXIgbD1uZXcgT2o7dmYoaywyNSxsKX1rPVVqKGspO0Qoayw4LCEhaCl9ZWxzZSBpZihoKXtpZigoaD1oYSgpKSYmaC5mcmFtZXMmJiFoLmZyYW1lcy5Hb29nbGVTZXROUEEpdHJ5e2s9aC5kb2N1bWVudDtsPW5ldyBVZihrKTt2YXIgbT1rLmJvZHl8fGsuaGVhZCYmay5oZWFkLnBhcmVudEVsZW1lbnQ7aWYobSl7dmFyIG49amcobCxcIklGUkFNRVwiKTtuLm5hbWU9XCJHb29nbGVTZXROUEFcIjtuLmlkPVwiR29vZ2xlU2V0TlBBXCI7bi5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6LTk5OXB4O3RvcDotOTk5cHg7d2lkdGg6MHB4O2hlaWdodDowcHg7XCIpO20uYXBwZW5kQ2hpbGQobil9fWNhdGNoKHEpe319ZWxzZShoPWhhKCkuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJHb29nbGVTZXROUEFcIikpJiZoLnBhcmVudE5vZGUmJmgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKTtyZXR1cm4gY30pO3RoaXMuc2V0VGFnRm9yVW5kZXJBZ2VPZkNvbnNlbnQ9Uyg0NDcsZnVuY3Rpb24oaCl7aD12b2lkIDA9PT1oPzI6aDtpZigyIT09aCYmMCE9PWgmJjEhPT1oKXJldHVybiBkLkooRm0oU3RyaW5nKGgpKSxhKSxjO3ZhciBrPVVqKGUpfHxuZXcgT2o7RChrLDYsaCk7dmYoZSwyNSxrKTtyZXR1cm4gY30pO3RoaXMuZ2V0Q29ycmVsYXRvcj1TKDI3LGZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyhCKGUsMjYpKX0pO3RoaXMuZ2V0VGFnU2Vzc2lvbkNvcnJlbGF0b3I9Uyg2MzEsZnVuY3Rpb24oKXtyZXR1cm4gJHQoKS5PfSk7dGhpcy5nZXRWaWRlb0NvbnRlbnQ9UygzMCxmdW5jdGlvbigpe3JldHVybiBhdShhLGUpfSk7dGhpcy5nZXRWZXJzaW9uPVMoNTY4LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0VmVyc2lvbigpfSk7dGhpcy5mb3JjZUV4cGVyaW1lbnQ9Uyg1NjksZnVuY3Rpb24oaCl7aD1wYXJzZUludChoLDEwKTswPGgmJm1qKGgpfSk7dGhpcy5zZXRDb3JyZWxhdG9yPVMoMjgsZnVuY3Rpb24oaCl7ZGgodWooXCJzZXRcIikpO2QuSihJbSgpLGEpO2lmKHlpKHdpbmRvdykpcmV0dXJuIGM7aWYoIWtoKGgpKXJldHVybiBkLkoodG0oU3RyaW5nKGgpKSxhKSxjO0QoZSwyNixoKTtEKGUsMjcsITApO3JldHVybiBjfSk7dGhpcy5tYXJrQXNBbXA9Uyg1NzAsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBidShhKX0pO3RoaXMuaXNTUkE9Uyg1NzEsZnVuY3Rpb24oKXtyZXR1cm4hIXgoZSw2KX0pO3RoaXMuc2V0SW1hQ29udGVudD1TKDMyOCxmdW5jdGlvbihoLGspe251bGwhPUIoZSwyMik/KEQoZSwyMSwhMCksRChlLDIyLFN0cmluZyhofHxcIlwiKSksRChlLDIzLFN0cmluZyhrfHxcIlwiKSksWXQoYSxlKSk6KEQoZSwyMSwhMCksWXQoYSxlKSxcInN0cmluZ1wiPT09dHlwZW9mIGgmJkQoZSwxOSxoKSxcInN0cmluZ1wiPT09dHlwZW9mIGsmJkQoZSwyMCxrKSl9KTt0aGlzLmdldEltYUNvbnRlbnQ9UygzMjksZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9QihlLDIyKT9hdShhLGUpOmEuaj97dmlkOkIoZSwxOSl8fFwiXCIsY21zaWQ6QihlLDIwKXx8XCJcIn06bnVsbH0pO3RoaXMuaXNJbml0aWFsTG9hZERpc2FibGVkPVMoNTcyLGZ1bmN0aW9uKCl7cmV0dXJuISF4KGUsNCl9KTt0aGlzLmFkZFN1cHBvcnRpbmdVcmw9Uyg2MzQsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBofHwhaC5tYXRjaChfLm5nKVsxXSlyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5hZGRTdXBwb3J0aW5nVXJsXCIsW2hdKSxhKSxjOyh6PUIoZSw3KSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosaCl8fHNmKGUsNyxoKTtyZXR1cm4gY30pO3RoaXMuc2V0UHJpdmFjeVNldHRpbmdzPVMoNjQ4LGZ1bmN0aW9uKGgpe2lmKCFfLk1jKGgpKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldFByaXZhY3lTZXR0aW5nc1wiLFtoXSksYSksYzt2YXIgaz1VaihlKXx8bmV3IE9qLGw9aC5yZXN0cmljdERhdGFQcm9jZXNzaW5nLG09aC5jaGlsZERpcmVjdGVkVHJlYXRtZW50LG49aC51bmRlckFnZU9mQ29uc2VudDtoPWgubGltaXRlZEFkcztcImJvb2xlYW5cIj09PXR5cGVvZiBsP0QoaywxLGwpOnZvaWQgMCE9PWwmJmQuSihmbShTdHJpbmcobCkpLGEpO18ueSgzOTcpfHwoXCJib29sZWFuXCI9PT10eXBlb2YgaD9EKGssOSxoKTp2b2lkIDAhPT1oJiZkLkooZm0oU3RyaW5nKGgpKSxhKSk7dm9pZCAwIT09biYmKG51bGw9PT1uP0Qoayw2LDIpOiExPT09bj9EKGssNiwwKTohMD09PW4/RChrLDYsMSk6ZC5KKEZtKFN0cmluZyhuKSksYSkpO3ZvaWQgMCE9PW0mJihudWxsPT09bT9EKGssNSx2b2lkIDApOiExPT09bT9EKGssNSwwKTohMD09PW0/RChrLDUsMSk6ZC5KKHBtKFN0cmluZyhtKSksYSkpO3ZmKGUsMjUsayk7cmV0dXJuIGN9KX07Xy5KKGN1LGpwKTt2YXIgZHU9ZnVuY3Rpb24oYSxiKXthOntiPWJbMF07YT1hWzBdO2Zvcih2YXIgYz1kZCxkPU1hdGgubWluKGIubGVuZ3RoLGEubGVuZ3RoKSxlPTA7ZTxkO2UrKyl7dmFyIGY9YyhiW2VdLGFbZV0pO2lmKDAhPWYpe2I9ZjticmVhayBhfX1iPWRkKGIubGVuZ3RoLGEubGVuZ3RoKX1yZXR1cm4gYn0sZXU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9W10sYz0hMSxkPWpsLkIoKTt0aGlzLmFkZFNpemU9Ryg4OCxmdW5jdGlvbihlLGYpe3ZhciBnOyhnPSFpayhlKSl8fChnPSEoaGsoZil8fEFycmF5LmlzQXJyYXkoZikmJmYuZXZlcnkoaGspKSk7aWYoZylyZXR1cm4gYz0hMCxkLkoocWwoXCJTaXplTWFwcGluZ0J1aWxkZXIuYWRkU2l6ZVwiLFtlLGZdKSksYTtiLnB1c2goW2UsZl0pO3JldHVybiBhfSk7dGhpcy5idWlsZD1HKDg5LGZ1bmN0aW9uKCl7aWYoYylyZXR1cm4gZC5KKElsKCkpLG51bGw7ZWQoYixkdSk7cmV0dXJuIGJ9KX07dmFyIGZ1PWZ1bmN0aW9uKCl7dGhpcy5lcnJvck1lc3NhZ2U9dGhpcy5pbmZvPXRoaXMuZXJyb3I9dGhpcy5JYT1udWxsfSxndT1mdW5jdGlvbihhLGIpe2EuSWE9YjtyZXR1cm4gYX07ZnUucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3J9O3ZhciBodT1mdW5jdGlvbihhLGIpe2EuZXJyb3JNZXNzYWdlPWI7cmV0dXJuIGF9LGl1PWZ1bmN0aW9uKCl7dGhpcy5jYWNoZT17fX0saGI9ZnVuY3Rpb24oKXtqdXx8KGt1PV8ucmEoMzgsa3UpLGx1PV8ucmEoMzksbHUpLGp1PW5ldyBpdSk7cmV0dXJuIGp1fSxtdT1mdW5jdGlvbihhKXt2YXIgYj1CKGEsMyk7aWYoIWIpcmV0dXJuIDM7aWYoIUIoYSwyKSlyZXR1cm4gNDthPW5ldyBQZjt2YXIgYz1RZihiKTtjLmFkZChuZXcgTGYobHUpKTtpZihhLmdldFRpbWUoKT5jLmdldFRpbWUoKSlyZXR1cm4gMjtiPVFmKGIpO2IuYWRkKG5ldyBMZihrdSkpO3JldHVybiBhLmdldFRpbWUoKT5iLmdldFRpbWUoKT8xOjB9O2l1LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGZ1O2lmKHRoaXMuY2FjaGVbYV0pcmV0dXJuIGd1KGIsdGhpcy5jYWNoZVthXSk7dmFyIGM9XCJcIjt0cnl7Yz13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJfR0VTUFNLLVwiK2EpfWNhdGNoKGQpe3JldHVybiBiLmVycm9yPTYsaHUoYixkLm1lc3NhZ2UpfWlmKCFjKXJldHVybiBuZXcgZnU7Yj1udWxsO3RyeXtiPXpmKGtxLGMpfWNhdGNoKGQpe3JldHVybiBhPW5ldyBmdSxhLmVycm9yPTUsaHUoYSxkLm1lc3NhZ2UpfWImJih0aGlzLmNhY2hlW2FdPWIpO3JldHVybiBndShuZXcgZnUsYil9O2l1LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSl7bnEoYSk7dmFyIGI9QihhLDEpfHxcIlwiLGM9XCJfR0VTUFNLLVwiK2IsZD1ndShuZXcgZnUsYSk7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShjLGEubSgpKX1jYXRjaChlKXtkLmluZm89NyxodShkLGUubWVzc2FnZSl9dGhpcy5jYWNoZVtiXT1hO3JldHVybiBkfTt2YXIganU9bnVsbCxrdT0yNCxsdT03Mjt2YXIgbnU9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0xMDA7YSYmYSE9YiYmLS1kOylfLlhnKGEsYyksYT1hLnBhcmVudEVsZW1lbnR9LG91PWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5YZyhhLHtcIm1hcmdpbi1sZWZ0XCI6XCIwcHhcIixcIm1hcmdpbi1yaWdodFwiOlwiMHB4XCJ9KTt2YXIgZj17XCJ6LWluZGV4XCI6U3RyaW5nKF8ucmEoMzIsNSkpfTtcImFic29sdXRlXCIhPT1kLnBvc2l0aW9uJiZcImZpeGVkXCIhPT1kLnBvc2l0aW9uJiZcInJlbGF0aXZlXCIhPT1kLnBvc2l0aW9uJiYoZi5wb3NpdGlvbj1cInJlbGF0aXZlXCIpO3ZhciBnPVwicnRsXCI9PWQuZGlyZWN0aW9uLGg9KChlJiYtMTIyNDU5MzMhPT1lLndpZHRoP2Uud2lkdGg6Yi5pbm5lcldpZHRoKS1jKS8yO2Q9ZnVuY3Rpb24oKXt2YXIgaz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7cmV0dXJuIGc/aC1rOmstaH07Yj1kKCk7MCE9PWImJihjPWZ1bmN0aW9uKGspe2c/ZltcIm1hcmdpbi1yaWdodFwiXT1rK1wicHhcIjpmW1wibWFyZ2luLWxlZnRcIl09aytcInB4XCJ9LGMoLWIpLF8uWGcoYSxmKSxkPWQoKSwwIT09ZCYmYiE9PWQmJihjKGIvKGQtYikqYiksXy5YZyhhLGYpKSk7cmV0dXJuITB9LHF1PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iLnNsb3QsaD1TYihiLmNhKTtfLnIuc2V0VGltZW91dChHKDQ1OSxmdW5jdGlvbigpe3JldHVybiBwdShhLGcsYyxkLGUsaCxmKX0pLDUwMCl9LHB1PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2lmKF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcil7dmFyIGg9bnVsbCxrPXVvKGIsYSl8fHBhKGIsYSksbD1HKDQ1OSxmdW5jdGlvbihtKXtpZihtPW0mJm1bMF0pe3ZhciBuPW0uYm91bmRpbmdDbGllbnRSZWN0LHE9d2luZG93LmlubmVyV2lkdGgsdz1NYXRoLnJvdW5kKG4ubGVmdCksdT1NYXRoLnJvdW5kKG4ucmlnaHQpLEM9MD53KzIsUT0wPHUtKHErMik7aWYobS5pbnRlcnNlY3Rpb25SYXRpbz49MS0oKDA8PU1hdGgucm91bmQobi5sZWZ0KT8wOjIpKyhNYXRoLnJvdW5kKG4ucmlnaHQpPD13aW5kb3cuaW5uZXJXaWR0aD8wOjIpKS9kfHxDfHxRKWtiKGcsZnVuY3Rpb24oTil7aWYoQ3x8USl7dmFyIEg9bmV3IFhxO0guc2V0KDgpO3J1KGspJiZILnNldCgxMCk7SD1ZcShIKX1lbHNlIEg9c3UoYSxiKTt2YXIgcWE9dHUoYixrLGUpLG9iPXFhLmRkO3FhPXFhLmZkO2xiKE4pO0UoTixcInFpZFwiLGVvKGIpKTtFKE4sXCJpdVwiLGIuZ2V0QWRVbml0UGF0aCgpKTtFKE4sXCJlXCIsU3RyaW5nKEgpKTtDJiZFKE4sXCJvZmxcIixTdHJpbmcodykpO1EmJkUoTixcIm9mclwiLFN0cmluZyh1LXEpKTtFKE4sXCJyZXRcIixkK1wieFwiK2UpO0UoTixcInJlcVwiLGYpO0UoTixcImJtXCIsU3RyaW5nKGMpKTtFKE4sXCJlZmhcIixOdW1iZXIob2IpKTtFKE4sXCJzdGtcIixOdW1iZXIocWEpKTtFKE4sXCJpZmlcIixyaSh3aW5kb3cpKTtfLnkoNjApJiZFKE4sXCJpc2NcIiwxKX0se3ZhOl8ucmEoNyl9KSxoJiZoLnVub2JzZXJ2ZShrKX19KTtrJiYoaD1uZXcgXy5yLkludGVyc2VjdGlvbk9ic2VydmVyKGwse3RocmVzaG9sZDpbMV19KSxoLm9ic2VydmUoaykpfX0sc3U9ZnVuY3Rpb24oYSxiKXt2YXIgYz11byhiLGEpfHxwYShiLGEpLGQ9bmV3IFhxO3RyeXt2YXIgZT1mdW5jdGlvbihILHFhKXtyZXR1cm4gYS5lbGVtZW50c0Zyb21Qb2ludChILHFhKX0sZj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9Zi5sZWZ0LGg9Zi50b3Asaz1mLndpZHRoLGw9Zi5oZWlnaHQsbT13YShwYShiLGEpLHdpbmRvdyk7aWYoXCJoaWRkZW5cIj09bS52aXNpYmlsaXR5fHxcIm5vbmVcIj09bS5kaXNwbGF5KXJldHVybiBZcShkKTt2YXIgbj1wYXJzZUludChtW1wiYm9yZGVyLXRvcC13aWR0aFwiXXx8MCwxMCkrMTtiPWcraztsPWgrbDt2YXIgcT1lKGcrbisyLGgrbik7dmFyIHc9ZShiLW4tMixoK24pO3ZhciB1PWUoYi1uLTIsbC1uKTt2YXIgQz1lKGcrbisyLGwtbik7dmFyIFE9ZShiLzIsbC1uKX1jYXRjaChIKXtyZXR1cm4gZC5zZXQoMSksWXEoZCl9aWYoIShxJiZxLmxlbmd0aCYmdyYmdy5sZW5ndGgmJnUmJnUubGVuZ3RoJiZDJiZDLmxlbmd0aCYmUSYmUS5sZW5ndGgpKXJldHVybiBkLnNldCg3KSxZcShkKTtlPWZ1bmN0aW9uKEgscWEpe2Zvcih2YXIgb2I9ITEsd2M9MDt3YzxILmxlbmd0aDt3YysrKXt2YXIgeGM9SFt3Y107aWYob2Ipe3ZhciBvaD13YSh4Yyx3aW5kb3cpO2lmKFwiaGlkZGVuXCIhPW9oLnZpc2liaWxpdHkmJiEkZyh4YykmJiFOKGMseGMpKXtkLnNldChxYSk7XCJhYnNvbHV0ZVwiPT1vaC5wb3NpdGlvbiYmZC5zZXQoMTEpO2JyZWFrfX1lbHNlIGM9PXhjJiYob2I9ITApfX07YWgoYykmJmQuc2V0KDkpO3ZhciBOPWZ1bmN0aW9uKEgscWEpe3JldHVybiBTZyhILHFhKXx8U2cocWEsSCl9O2c9cVswXTtjPT1nfHxOKGMsZyl8fCRnKGcpfHxkLnNldCgyKTtnPXdbMF07Yz09Z3x8TihjLGcpfHwkZyhnKXx8ZC5zZXQoMyk7Zz11WzBdO2M9PWd8fE4oYyxnKXx8JGcoZyl8fGQuc2V0KDQpO2c9Q1swXTtjPT1nfHxOKGMsZyl8fCRnKGcpfHxkLnNldCg1KTtpZigkZyhjKSlyZXR1cm4gWXEoZCk7ZShxLDEyKTtlKHcsMTMpO2UodSwxNCk7ZShDLDE1KTtlKFEsNik7cmV0dXJuIFlxKGQpfSxydT1mdW5jdGlvbihhKXt2YXIgYj0hMSxjPSExLGQ9ITE7cmV0dXJuIFpnKGEsZnVuY3Rpb24oZSl7XCJub3dyYXBcIj09ZS53aGl0ZVNwYWNlJiYoZD0hMCk7aWYoXCJzY3JvbGxcIj09ZS5vdmVyZmxvd1h8fFwiYXV0b1wiPT1lLm92ZXJmbG93WCljPSEwO1wiZmxleFwiPT1lLmRpc3BsYXkmJihiPSEwKTtyZXR1cm4gYiYmYyYmZH0pfSx1dT1mdW5jdGlvbihhLGIpe3JldHVybiBhJiYoYT1PKGEsVmosMSkpP0IoYSwxKXx8Yi5pbm5lcldpZHRoOjB9LHZ1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJihhPU8oYSxWaiwxKSk/QihhLDIpfHxiLmlubmVySGVpZ2h0OjB9LHd1PWZ1bmN0aW9uKGEpe3JldHVybiBhJiYoYT1PKGEsVmosMikpP0IoYSwxKXx8MDowfSx4dT1mdW5jdGlvbihhKXtyZXR1cm4gYSYmKGE9TyhhLFZqLDIpKT9CKGEsMil8fDA6MH0sdHU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPShhPXBhKGEpKSYmd2EoYSx3aW5kb3cpLGU9ZD9cImFic29sdXRlXCIhPWQucG9zaXRpb246ITAsZj0hMSxnPWEmJmEucGFyZW50RWxlbWVudCxoPSExO1lnKGIsZnVuY3Rpb24oayl7dmFyIGw9ay5zdHlsZTtpZihlKWlmKGh8fChoPWs9PWcpKWU9U3EoayxfLnIsITAsLTEsLTEpO2Vsc2V7bD1sJiZsLmhlaWdodDt2YXIgbT0obCYmXy5BKGwsXCJlbmRzV2l0aFwiKS5jYWxsKGwsXCJweFwiKSYmcGFyc2VJbnQobCwxMCl8fDApPj1jOyFsfHxtfHxcInN0cmluZ1wiPT09dHlwZW9mIGwmJl8uQShQcSxcImluY2x1ZGVzXCIpLmNhbGwoUHEsbCl8fChlPSExKX1mfHwoaz13YShrLF8uciksXCJzdGlja3lcIiE9ay5wb3NpdGlvbiYmXCJmaXhlZFwiIT1rLnBvc2l0aW9uKXx8KGY9ITApO3JldHVybiEoZiYmIWUpfSwxMDApO3JldHVybntkZDplLGZkOmZ9fSx5dT1mdW5jdGlvbihhKXt2YXIgYj1hLnNsb3Q7KHo9eGEoYS5jYSksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LFwiZmx1aWRcIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtrYihcImdwdF9mbHVpZF9zelwiLGZ1bmN0aW9uKGMpe3ZhciBkPXVvKGIsZG9jdW1lbnQpO2Q9ZD9uaShkKTpudWxsO0UoYyxcInN6XCIsZD9kLndpZHRoK1wieFwiK2QuaGVpZ2h0OlwibnVsbFwiKTtFKGMsXCJxcWlkXCIsZW8oYikpfSl9LDI1MCl9O3ZhciBZPWZ1bmN0aW9uKCl7S3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooWSxLcik7dmFyIE1yPWZ1bmN0aW9uKGEsYil7YmwoYS5pZCgpLGIpO3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoYil9LHp1PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9bnVsbCxnPUcoYixlKTtfLnYoYyxkLGcpJiYoZj1mdW5jdGlvbigpe3JldHVybiBfLnFiKGMsZCxnKX0sXy5SKGEsZikpO3JldHVybiBmfSxBdT1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZDtiPW5ldyBCaChiLGMsRyhhLmlkKCksZCkpO18ud2goYSxiKTtyZXR1cm4gYn07dmFyIHRiPWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVYodGhpcyxhKX07Xy5KKHRiLFkpO3RiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubS52YWx1ZSxiPXt9LGM9aGIoKSxkPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxhKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe2U9ZS52YWx1ZTt2YXIgZj1hW2VdLGc9Yy5nZXQoZSk7aWYoZy5nZXRFcnJvcigpKWliKGcuZ2V0RXJyb3IoKSxlLGcuZXJyb3JNZXNzYWdlKTtlbHNleyhnPWcuSWEpfHwoZz1uZXcga3EsZz1EKGcsMSxlKSxnPUQoZyw0LDApLGc9RChnLDUsMCksZz1EKGcsNiwwKSxnPW5xKGcpKTthOntpZigoQihnLDQpfHwwKT49Xy5yYSg0MCkpe3ZhciBoPUIoZyw2KXx8MDt2YXIgaz1NYXRoLnBvdygyLGgpLGw9QihnLDUpfHwwO2lmKGw+PWspRChnLDUsMCksRChnLDQsMCksRChnLDYsaCsxKTtlbHNle0QoZyw1LGwrMSk7aD0hMDticmVhayBhfX1oPSExfWh8fCh6PV8ucmooMTApLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixlKXx8KGJbZV09e1BiOmYsSWE6Z30pfX1VKHRoaXMuRixiKX07dGIucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY1NX07dmFyIHViPWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLkE9dGhpcy5sKCk7dGhpcy5tPXRoaXMubCgpO3RoaXMuQz1WKHRoaXMsYSl9O18uSih1YixZKTt1Yi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9e30sYz1bXSxkPXRoaXMuQy52YWx1ZSxlPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Y9Zi52YWx1ZTt2YXIgZz1kW2ZdLGg9Zy5QYjtnPWcuSWE7dmFyIGs9bXUoZyk7c3dpdGNoKGspe2Nhc2UgMDpjLnB1c2godC5Qcm9taXNlLnJlc29sdmUoZykpO2JyZWFrO2Nhc2UgMTpiW2ZdPXtJYTpnLFBiOmh9O2MucHVzaCh0LlByb21pc2UucmVzb2x2ZShnKSk7YnJlYWs7Y2FzZSAzOmNhc2UgMjpjYXNlIDQ6Mz09PWsmJmpiKDksZiksZy4kYihudWxsKSxjLnB1c2goQnUoZixnLGgpKX19VSh0aGlzLm0sYik7dC5Qcm9taXNlLmFsbChjKS50aGVuKGZ1bmN0aW9uKGwpe3ZhciBtPXt9O2wuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcT1CKG4sMik7cSYmKG1bQihuLDEpXT1xKX0pO1UoYS5BLG0pfSl9O3ZhciBCdT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5yYSgzMyksZT0obmV3IFBmKS5nZXRUaW1lKCksZj0zO3JldHVybiB0LlByb21pc2UucmFjZShbcGIoZCksYy50aGVuKGZ1bmN0aW9uKGcpe2Y9MjtyZXR1cm4gdC5Qcm9taXNlLnJhY2UoW3BiKGQtKGUtKG5ldyBQZikuZ2V0VGltZSgpKSksbmIoYSxiLGcsZnVuY3Rpb24oKXtyZXR1cm4gZj1udWxsfSldKX0pXSkudGhlbihmdW5jdGlvbigpe2YmJmpiKGYsYSk7cmV0dXJuIGJ9KX07dWIucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY1OH07dmFyIHNiPWZ1bmN0aW9uKCl7WS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5GPXRoaXMubCgpfTtfLkooc2IsWSk7c2IucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT17fSxiPVhiKCkmJlhiKCkuZW5jcnlwdGVkU2lnbmFsU291cmNlfHx7fTtfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxiKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2FbZ109dC5Qcm9taXNlLnJlc29sdmUoYltnXSl9KTtmb3IodmFyIGM9d2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRbZGF0YS1lbmNyeXB0ZWQtc2lnbmFsLXNvdXJjZS1pZF1cIiksZD17fSxlPTA7ZTxjLmxlbmd0aDtkPXtLYTpkLkthfSxlKyspe3ZhciBmPWNbZV07ZC5LYT1mLmdldEF0dHJpYnV0ZShcImRhdGEtZW5jcnlwdGVkLXNpZ25hbC1zb3VyY2UtaWRcIik7YVtkLkthXT1hW2QuS2FdfHxyYihmLGZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlvbigpe2lmKGJbZy5LYV0pcmV0dXJuIGJbZy5LYV07aWIoMCxnLkthKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5Qcm9taXNlLnJlc29sdmUobnVsbCl9fX0oZCkpfVUodGhpcy5GLGEpfTtzYi5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjUwfTt2YXIgdmI9ZnVuY3Rpb24oYSl7WS5jYWxsKHRoaXMpO3RoaXMubT1WKHRoaXMsYSl9O18uSih2YixZKTt2Yi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMubS52YWx1ZTtyYih3aW5kb3cpLnRoZW4oZnVuY3Rpb24oKXtmb3IodmFyIGI9e30sYz1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtiPXtzYjpiLnNiLEdiOmIuR2J9LGQ9Yy5uZXh0KCkpYi5zYj1kLnZhbHVlLGQ9YVtiLnNiXSxiLkdiPWQuSWEsZC5QYi50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXtuYihlLnNiLGUuR2IsZil9fShiKSl9KX07dmIucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2Mn07dmFyIEN1PWZ1bmN0aW9uKGEpe3ZhciBiPVwicGVyZm9ybWFuY2VcImluIHdpbmRvdyYmXCJub3dcImluIHBlcmZvcm1hbmNlP3BlcmZvcm1hbmNlLm5vdy5iaW5kKHBlcmZvcm1hbmNlKTpUYztmb3IoYT1iKCkrYTtiKCk8YTspO2IoKX0sRHU9ZnVuY3Rpb24oYSxiKXtiPj1hLmxlbmd0aHx8KEN1KGFbYl0pLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXR1cm4gRHUoYSwrK2IpfSkpfSxFdT1mdW5jdGlvbihhKXt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIER1KGEsMCl9KX0sRnU9ZnVuY3Rpb24oKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7dmFyIGE9Xy5yaigyKTthLmxlbmd0aCYmKGE9YS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIF8uSGcoYiwwKX0pLEV1KGEpKX19O3ZhciBHdT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdyxiPW5ldyB5cSxjPW5ldyB6cSxkPWJiKF8ucik7cWYoYiwxLGQsMCk7ZD1rai5CKCkuaigpLmpvaW4oKTtxZihiLDUsZCxcIlwiKTtxZihiLDIsMSwwKTt2ZihjLDEsYik7Yj14cSgpO2Q9Xy55KDc3KTtiPXJmKGIsOCxkKTtkPV8ueSg3OCk7Yj1yZihiLDksZCk7Yj1yZihiLDEwLCEwKTtkPV8ueSg4MCk7Yj1yZihiLDEzLGQpO2Q9Xy55KDgxKTtiPXJmKGIsMTQsZCk7Yj1yZihiLDE2LCEwKTt2ZihjLDIsYik7YS5nb29nbGVfcnVtX2NvbmZpZz1jLmlhO2M9Xy55KDE4OCk/XCJfZGVidWdcIjpcIlwiO3VnKGEuZG9jdW1lbnQsbGcoXCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvanMvcnVtXCIrYytcIi5qc1wiKSl9O3ZhciBIdT0wLEl1PWZ1bmN0aW9uKCl7dHJ5e2NyKCk7YnIoKTt2YXIgYT1fLkRqKDE1Mik7YSYmYS5mb3JFYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIG1qKGEpfSk7bmooMTMpO25qKDMpfWNhdGNoKGIpe2NsKDQwOCxiLCEwKX19LEp1PUcoMjk3LGZ1bmN0aW9uKCl7dmFyIGE9Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpKTthPV8uRihhKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKXt2YXIgYz1iLnZhbHVlO2I9Yzt2YXIgZD1jLnNyYztpZihkJiYoLTEhPWQuaW5kZXhPZihcIi90YWcvanMvZ3B0LmpzXCIpfHwtMSE9ZC5pbmRleE9mKFwiL3RhZy9qcy9ncHRfbW9iaWxlLmpzXCIpKSYmIWIuZ29vZ2xldGFnX2V4ZWN1dGVkJiZjLnRleHRDb250ZW50KXtiLmdvb2dsZXRhZ19leGVjdXRlZD0hMDtiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7dmFyIGU9ZD12b2lkIDA7Yz1jLnRleHRDb250ZW50O2M9bnVsbCE9PShkPW51bGw9PT0oZT1tYSgpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jcmVhdGVTY3JpcHQoYykpJiZ2b2lkIDAhPT1kP2Q6YztjPW5ldyBYaChjLGphKTtuYShjLFhoKTtiLnRleHRDb250ZW50PWMuajsoYz1iLm93bmVyRG9jdW1lbnQmJmIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykmJmMhPT13aW5kb3c/Yz1NYShjLmRvY3VtZW50KToodm9pZCAwPT09VXEmJihVcT1NYShkb2N1bWVudCkpLGM9VXEpO2MmJmIuc2V0QXR0cmlidXRlKFwibm9uY2VcIixjKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGIpO2RvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYil9fX0sZnVuY3Rpb24oYSxiKXtibChhLGIpO3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoYil9KSxLdT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdyxiPW5ldyBpcyhhKSxjPW5ldyBucyhhKSxkPW5ldyBZcihhKTtrYihcImNtcE1ldFwiLGZ1bmN0aW9uKGUpe2xiKGUpO0UoZSxcImZjXCIsYi5qPzE6MCk7RShlLFwidGNmdjFcIixhLl9fY21wPzE6MCk7RShlLFwidGNmdjJcIixwcyhjKT8xOjApO0UoZSxcInVzcFwiLCRyKGQpPzE6MCk7RShlLFwicHR0XCIsMTcpfSx7dmE6Xy5yYSg2MSl9KX0sTHU9ZnVuY3Rpb24oKXtIdT1fLk5pKCk7SXUoKTt0cnl7aWYoXy5yYSg2MSkmJkt1KCksRnUoKSxXYihcImRlZmluZU91dE9mUGFnZVNsb3RcIixjcSksV2IoXCJkZWZpbmVTbG90XCIsYXEpLFdiKFwiZGVmaW5lVW5pdFwiLGFxKSxXYihcImRlc3Ryb3lTbG90c1wiLGJxKSxXYihcImdldFdpbmRvd3NUaGF0Q2FuQ29tbXVuaWNhdGVXaXRoSG9zdHBhZ2VMaWJyYXJ5XCIsVnApLFdiKFwiZGlzcGxheVwiLGRxKSxtcCgpLFdiKFwiZ2V0RXZlbnRMb2dcIixmdW5jdGlvbigpe3JldHVybiBuZXcgUXR9KSxXYihcInNpemVNYXBwaW5nXCIsRyg5MCxmdW5jdGlvbigpe3JldHVybiBuZXcgZXV9KSksV2IoXCJhcGlSZWFkeVwiLCEwKSxYYigpLmZpZldpbiYmXCJjb21wbGV0ZVwiIT1kb2N1bWVudC5yZWFkeVN0YXRlP3ZqKHdpbmRvdyxmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VW0oKX0sMCl9KTpVbSgpLEp1KCksIV8uRGooMjIxKSYmXy55KDMxMSkmJnpiKCksKF8ueSg4NCl8fHRrLkIoKS5qKSYmR3UoKSxfLnkoMzQ2KSYmRmMoKSl7dmFyIGE9bmV3IFdrKFwiZ3B0X25vbmNlX2NzcFwiKTtsYihhKTtZayhhKX19Y2F0Y2goYil7Y2woMTA2LGIpfX07dmFyIERiPW5ldyB0LldlYWtNYXAsQWI9ZnVuY3Rpb24oYSxiKXthPVthXTtmb3IodmFyIGM9Yi5sZW5ndGgtMTswPD1jOy0tYylhLnB1c2godHlwZW9mIGJbY10sYltjXSk7cmV0dXJuIGEuam9pbihcIlxceDBCXCIpfTt2YXIgTXU9R2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuc3JjPy9eKD86aHR0cHM/Oik/XFwvXFwvKD86d3d3XFwuZ29vZ2xldGFnc2VydmljZXNcXC5jb218c2VjdXJlcHViYWRzXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KVxcL3RhZ1xcL2pzXFwvZ3B0KD86X1thLXpdKykqXFwuanMvLnRlc3QoYS5zcmMpPzA6MToyfSxmdW5jdGlvbihhLGIpe3JldHVybiBhK1wiXFx4MEJcIisoYiYmYlswXSYmYlswXS5zcmMpfSk7dmFyIE51PW51bGwsT3U9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlO2lmKCEoZT0hYikpe3ZhciBmO2lmKCEoZj0hVHEoYixjLHZvaWQgMD09PWQ/MTAwOmQpKSl7YTp7ZG97dmFyIGc9d2EoYixjKTtpZihnJiZcImZpeGVkXCI9PWcucG9zaXRpb24pe3ZhciBoPSExO2JyZWFrIGF9fXdoaWxlKGI9Yi5wYXJlbnRFbGVtZW50KTtoPSEwfWY9IWh9ZT1mfWUmJihhLmhlaWdodD0tMSl9Y2F0Y2goayl7YS53aWR0aD0tMSxhLmhlaWdodD0tMX19LEliPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPV8uRih1ZihhLEpqLDkpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlkPWQudmFsdWUsYltLaihkKV09QihkLDIpO2E9QihhLDgpO2EubGVuZ3RoJiZudWxsPT1iLmV4Y2xfY2F0JiYoYi5leGNsX2NhdD1hKTtyZXR1cm4gYn0sUHU9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtfLkpiKGEsZnVuY3Rpb24oZCxlKXtpZihiW2VdKXt2YXIgZj1iW2VdLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4gXy5BKGQsXCJpbmNsdWRlc1wiKS5jYWxsKGQsZyl9KTtmLmxlbmd0aCYmKGNbZV09Zil9fSk7cmV0dXJuIGN9LFF1PWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9dWYoYSxKaiwyKS5tYXAoZnVuY3Rpb24oZCl7dmFyIGU9S2ooZCk7Yj1cImV4Y2xfY2F0XCI9PT1lO2Q9QihkLDIpO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGQuam9pbigpKX0pO2E9QihhLDMpOyFiJiZhLmxlbmd0aCYmYy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChcImV4Y2xfY2F0XCIpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChhLmpvaW4oKSkpO3JldHVybiBjfSxSdT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtnPXZvaWQgMD09PWc/ITE6Zzt0aGlzLnY9Yjt0aGlzLkQ9Yzt0aGlzLm09YTt0aGlzLm1vZGVsPWQ7dGhpcy5vPWU7dGhpcy5qPWY7dGhpcy5DPVtdO3RoaXMubD1cIlwiO3RoaXMuST1RbigpO3RoaXMuQT1bXTt0aGlzLlU9W107dGhpcy5IPXFkKF8ucmooNykpO3RoaXMuRz0hZ3x8IV8ueSgyOTQpfSxVdT1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iP3dpbmRvdzpiO3ZhciBjPWEubW9kZWwuajtpZighQXJyYXkuaXNBcnJheShjKSlyZXR1cm5cIlwiO2lmKGEubSkwPT1jLmxlbmd0aCYmKGM9UHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGFwKGEudixlKX0pKTtlbHNle2lmKDA9PWMubGVuZ3RoKXJldHVyblwiXCI7MTxjLmxlbmd0aCYmKGM9W2NbMF1dKX12YXIgZD0hIUduKF8ucik7Yz1jLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgZj1hLmouUltlLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIGQmJjQ9PWdrKGYpPyhqbC5CKCkuSihIbShTdHJpbmcoZS5nZXRBZFVuaXRQYXRoKCkpKSksITEpOiEwfSk7aWYoIWMubGVuZ3RoKXJldHVyblwiXCI7MzA8Yy5sZW5ndGgmJihqbC5CKCkuSihBbShcIjMwXCIsU3RyaW5nKGMubGVuZ3RoKSxTdHJpbmcoYy5sZW5ndGgtMzApKSksYz1jLnNsaWNlKDAsMzApKTtTdShhLGMsYik7VHUoYSk7cmV0dXJuIGEubH0sVnU9ZnVuY3Rpb24oYSxiKXt0cnl7dmFyIGM9Yi50b3A7dmFyIGQ9d2koYy5kb2N1bWVudCxjKX1jYXRjaChlKXtkPW5ldyBfLnlhKC0xMjI0NTkzMywtMTIyNDU5MzMpfVooYSxcInNjcl94XCIsTWF0aC5yb3VuZChkLngpLHtuYTohMH0pO1ooYSxcInNjcl95XCIsTWF0aC5yb3VuZChkLnkpLHtuYTohMH0pfSxXdT1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3csYz1PYShhLm8sYi5kb2N1bWVudCl8fFwiXCI7dmFyIGQ9Yi5kb2N1bWVudC5kb21haW47dmFyIGU9Yi5oaXN0b3J5Lmxlbmd0aCxmPWIuc2NyZWVuLGc9Yi5kb2N1bWVudC5yZWZlcnJlcjtpZihKaCgpKWQ9b2koKS5nYUdsb2JhbHx8e307ZWxzZXt2YXIgaD1NYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFFMyksaz1iLmdvb2dsZV9hbmFseXRpY3NfZG9tYWluX25hbWU7ZD1cInVuZGVmaW5lZFwiPT10eXBlb2Ygaz9ycShcImF1dG9cIixkKTpycShrLGQpO3ZhciBsPS0xPGMuaW5kZXhPZihcIl9fdXRtYT1cIitkK1wiLlwiKSxtPS0xPGMuaW5kZXhPZihcIl9fdXRtYj1cIitkKSxuOyhuPShPaCgpfHxvaSgpKS5nYUdsb2JhbCl8fChuPXt9LChPaCgpfHxvaSgpKS5nYUdsb2JhbD1uKTt2YXIgcT0hMTtpZihsKWc9Yy5zcGxpdChcIl9fdXRtYT1cIitkK1wiLlwiKVsxXS5zcGxpdChcIjtcIilbMF0uc3BsaXQoXCIuXCIpLG0/bi5zaWQ9Z1szXTpuLnNpZHx8KG4uc2lkPWgrXCJcIiksbi52aWQ9Z1swXStcIi5cIitnWzFdLG4uZnJvbV9jb29raWU9ITA7ZWxzZXtuLnNpZHx8KG4uc2lkPWgrXCJcIik7aWYoIW4udmlkKXtxPSEwO209TWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpO2w9W29xLmFwcE5hbWUsb3EudmVyc2lvbixvcS5sYW5ndWFnZT9vcS5sYW5ndWFnZTpvcS5icm93c2VyTGFuZ3VhZ2Usb3EucGxhdGZvcm0sb3EudXNlckFnZW50LHBxKCk/MTowXS5qb2luKFwiXCIpO2Y/bCs9Zi53aWR0aCtcInhcIitmLmhlaWdodCtmLmNvbG9yRGVwdGg6Xy5yLmphdmEmJl8uci5qYXZhLmF3dCYmKGY9Xy5yLmphdmEuYXd0LlRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTY3JlZW5TaXplKCksbCs9Zi5zY3JlZW4ud2lkdGgrXCJ4XCIrZi5zY3JlZW4uaGVpZ2h0KTtsPWwrYysoZ3x8XCJcIik7Zm9yKGc9bC5sZW5ndGg7MDxlOylsKz1lLS1eZysrO24udmlkPShtXnFxKGwpJjIxNDc0ODM2NDcpK1wiLlwiK2h9bi5mcm9tX2Nvb2tpZT0hMX1pZighbi5jaWQpe2I6Zm9yKGg9OTk5LGsmJihrPTA9PWsuaW5kZXhPZihcIi5cIik/ay5zdWJzdHIoMSk6ayxoPWsuc3BsaXQoXCIuXCIpLmxlbmd0aCksaz05OTksYz1jLnNwbGl0KFwiO1wiKSxnPTA7ZzxjLmxlbmd0aDtnKyspaWYoZj1zcS5leGVjKGNbZ10pfHx0cS5leGVjKGNbZ10pfHx1cS5leGVjKGNbZ10pKXtlPWZbMV18fDA7aWYoZT09aCl7dmFyIHc9ZlsyXTticmVhayBifWU8ayYmKGs9ZSx3PWZbMl0pfXEmJncmJi0xIT13LnNlYXJjaCgvXlxcZCtcXC5cXGQrJC8pPyhuLnZpZD13LG4uZnJvbV9jb29raWU9ITApOnchPW4udmlkJiYobi5jaWQ9dyl9bi5kaD1kO24uaGlkfHwobi5oaWQ9TWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpKTtkPW59WihhLFwiZ2FfdmlkXCIsZC52aWQseyQ6ITF9KTtaKGEsXCJnYV9zaWRcIixkLnNpZCx7JDohMX0pO1ooYSxcImdhX2hpZFwiLGQuaGlkLHskOiExfSk7WihhLFwiZ2FfZmNcIixkLmZyb21fY29va2llLHskOiExfSk7WihhLFwiZ2FfY2lkXCIsZC5jaWQseyQ6ITF9KTtaKGEsXCJnYV93cGlkc1wiLGIuZ29vZ2xlX2FuYWx5dGljc191YWNjdCl9LFh1PWZ1bmN0aW9uKGEsYil7aWYoXy55KDM3MCkpdHJ5e3ZhciBjPWIuZXh0ZXJuYWwmJmIuZXh0ZXJuYWwuZ2V0SG9zdEVudmlyb25tZW50VmFsdWUmJmIuZXh0ZXJuYWwuZ2V0SG9zdEVudmlyb25tZW50VmFsdWUuYmluZChiLmV4dGVybmFsKTtpZihjKXt2YXIgZD1wYXJzZUludChKU09OLnBhcnNlKGMoXCJvcy1tb2RlXCIpKVtcIm9zLW1vZGVcIl0sMTApOzA8PWQmJlooYSxcIndzbVwiLGQrMSl9fWNhdGNoKGUpe319LFN1PWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/d2luZG93OmM7dmFyIGQ9Yy5kb2N1bWVudCxlPWEuai5OO1ooYSxcImdkZnBfcmVxXCIsMSx7JDohMX0pO1ooYSxcInB2c2lkXCIsYS5tb2RlbC52KTtaKGEsXCJjb3JyZWxhdG9yXCIsQihlLDI2KSk7WihhLFwib3V0cHV0XCIsYS5tb2RlbC5JLHskOiExfSk7WihhLFwiaW1wbFwiLGEubW9kZWwuRyx7JDohMX0pO18ueSgyMDApfHwoMD09bmYoZSwyNCwwKSYmKFooYSxcImFkc2lkXCIsYS5tb2RlbC5EKSxaKGEsXCJwdWNyZFwiLGEubW9kZWwuSykpLFooYSxcImphclwiLGEubW9kZWwuSCkpO1l1KGEpO2lzTmFOKGEubW9kZWwuV2EpfHxaKGEsXCJwb2RcIixhLm1vZGVsLldhLHskOiExfSk7aXNOYU4oYS5tb2RlbC5YYSl8fFooYSxcInBwb3NcIixhLm1vZGVsLlhhLHskOiExfSk7aXNOYU4oYS5tb2RlbC5KYSl8fFooYSxcInNjb3JcIixhLm1vZGVsLkphLHskOiExfSk7WnUoYSk7WihhLFwidnJnXCIsJGEoKSk7JHUoYSk7YXYoYSk7YnYoYSxiWzBdLm0pO1ooYSxcInNjXCIsXy5Eaig2KT8xOjAse25hOiEwfSk7d2luZG93LnBvc3RNZXNzYWdlJiZaKGEsXCJzZnZcIixabigpKTtaKGEsXCJlY3NcIixhLm1vZGVsLndhKTtjdihhLGIsZCk7ZHYoYSk7ZXYoYSxiKTtmdihhLGIpO2d2KGEsYyk7UmsoXCJnb29nbGVfcHJldmlld1wiKSYmWihhLFwiZ2N0XCIsUWsoXCJnb29nbGVfcHJldmlld1wiKSk7aWYoYS52LnYpe1ooYSxcImlzX2FtcFwiLFwiMVwiKTtaKGEsXCJhbXBfdlwiLEtoKCkpO1ooYSxcImFjdFwiLExoKCkpO1JoJiYhL15odHRwczpcXC9cXC9kLVxcZCtcXC5hbXBwcm9qZWN0XFwubmV0XFwvXFxkK1xcL2ZyYW1lXFwuaHRtbCQvLnRlc3QoYy5sb2NhdGlvbi5ocmVmKSYmWihhLFwiYXRpXCIsMSk7dmFyIGY9U2goYyk7ZiYmWihhLFwiYXBuXCIsZi5zdWJzdHIoMCwxMCkpO3RyeXt2YXIgZz1KU09OLnBhcnNlKGMuY29udGV4dC5jYWNoZWRGcmFtZU5hbWVfKTtnLmF0dHJpYnV0ZXMmJmcuYXR0cmlidXRlcy51c2VTYW1lRG9tYWluUmVuZGVyaW5nVW50aWxEZXByZWNhdGVkJiZaKGEsXCJhc2RcIiwxKX1jYXRjaChrKXt9fShxZyhjLnRvcCl8fFBnKHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlcikpJiZaKGEsXCJhYnhlXCIsMSk7Xy5EaigyNTMpJiYoZj1xaigxMCkpJiZaKGEsXCJleHBmbGFnc1wiLGYpO2h2KGEsYixjKTtmPXt9O2YudV90ej0tKG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpO2YudV9oaXM9cWkoKTtmLnVfamF2YT0hIUVmLm5hdmlnYXRvciYmXCJ1bmtub3duXCIhPT10eXBlb2YgRWYubmF2aWdhdG9yLmphdmFFbmFibGVkJiYhIUVmLm5hdmlnYXRvci5qYXZhRW5hYmxlZCYmRWYubmF2aWdhdG9yLmphdmFFbmFibGVkKCk7RWYuc2NyZWVuJiYoZi51X2g9RWYuc2NyZWVuLmhlaWdodCxmLnVfdz1FZi5zY3JlZW4ud2lkdGgsZi51X2FoPUVmLnNjcmVlbi5hdmFpbEhlaWdodCxmLnVfYXc9RWYuc2NyZWVuLmF2YWlsV2lkdGgsZi51X2NkPUVmLnNjcmVlbi5jb2xvckRlcHRoKTtFZi5uYXZpZ2F0b3ImJkVmLm5hdmlnYXRvci5wbHVnaW5zJiYoZi51X25wbHVnPUVmLm5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aCk7RWYubmF2aWdhdG9yJiZFZi5uYXZpZ2F0b3IubWltZVR5cGVzJiYoZi51X25taW1lPUVmLm5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoKTtpdihhLGYpO2p2KGEpO3RyeXt2YXIgaD11aSgpfWNhdGNoKGspe2g9XCIwXCJ9WihhLFwiZmxhc2hcIixoLHskOiExLG5hOiEwfSk7a3YoYSxiLGMpO2x2KGEsYyk7KF8ueSg4NCl8fHRrLkIoKS5qKSYmWihhLFwicnVtY1wiLGEubW9kZWwudix7JDohMX0pO18ueSg4MykmJlooYSxcInJ1bWVcIiwxLHskOiExfSk7WihhLFwidmlzXCIsXy51bihkKSx7JDohMX0pOzA9PT1NdShfLkRqKDE3MikpfHxaKGEsXCJzdHNzXCIsTXUoXy5EaigxNzIpKSk7IWEudi52JiZtdihjKSYmWihhLFwiYXJwXCIsMSx7JDohMX0pO18uci5uYXZpZ2F0b3ImJl8uci5uYXZpZ2F0b3IuZGV2aWNlTWVtb3J5JiZaKGEsXCJkbWNcIixfLnIubmF2aWdhdG9yLmRldmljZU1lbW9yeSk7VnUoYSxjKTtudihhLGIsYyk7b3YoYSxiLGMpOzA8YS5tb2RlbC5tLmxlbmd0aCYmWihhLFwicHN0c1wiLGEubW9kZWwubSk7V3UoYSk7WHUoYSxjKTtfLnkoMjMpJiYoWihhLFwianNcIixWcShjKSksWihhLFwibXNcIixXcShhLm1vZGVsLnYudG9TdHJpbmcoKSxjKSkpO3B2KGEsYyxiKTtxdihhLGIsYyk7Yj1CKGUsNyk7Yz1fLkRqKDI1MSk7Xy55KDM2MykmJmMmJlooYSxcInVhY2hcIixWZShjLDMpKTtfLnkoMzEyKSYmKGM9Xy5EaigyNTApKSYmMDxjLmxlbmd0aCYmWihhLFwidHRfc3RhdGVcIixWZShKU09OLnN0cmluZ2lmeShjKSwzKSk7Xy55KDE2NCkmJmIubGVuZ3RoJiZaKGEsXCJzdXBwb3J0aW5nX3VybHNcIixiLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGspfSkpO3J2KGEpfSxudj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1bXTtiPV8uRihiKTtmb3IodmFyIGY9Yi5uZXh0KCk7IWYuZG9uZTtmPWIubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9cGEoZik7Zz1iaChnJiZnLnBhcmVudEVsZW1lbnQmJndhKGcucGFyZW50RWxlbWVudCxjKXx8bnVsbCk7aWYoIWd8fDE9PWdbMF0mJjE9PWdbM10pe3ZhciBoPShnPXBhKGYpKSYmZy5wYXJlbnRFbGVtZW50LGs9SWsoaCl8fG5ldyBfLlRmKDAsMCk7T3UoayxoLGMpO2QucHVzaChrLndpZHRoK1wieFwiK2suaGVpZ2h0KTtmPUlrKHBhKGYpKXx8bmV3IF8uVGYoMCwwKTtPdShmLGcsYywxKTstMT09ay5oZWlnaHQmJihmLmhlaWdodD0tMSk7ZS5wdXNoKGYud2lkdGgrXCJ4XCIrZi5oZWlnaHQpfWVsc2UgZC5wdXNoKFwiLTF4LTFcIiksZS5wdXNoKFwiLTF4LTFcIil9WihhLFwicHN6XCIsZCx7cWE6XCJ8XCJ9KTtaKGEsXCJtc3pcIixlLHtxYTpcInxcIn0pfSxvdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5qLlI7Yj1iLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZFtlLmdldFNsb3RFbGVtZW50SWQoKV19KTtiLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPUIoZSwxNil9KSYmKFooYSxcInJ0Z3NcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9QihlLDE2KT8wIT14YShlKS5sZW5ndGg/XCIxXCI6XCIyXCI6XCIwXCJ9KSx7cWE6XCIhXCJ9KSxaKGEsXCJtYXhfd1wiLGIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB1dShPKGUsWmosMTYpLGMpfSkse3FhOlwiIVwifSksWihhLFwibWF4X2hcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdnUoTyhlLFpqLDE2KSxjKX0pLHtxYTpcIiFcIn0pLFooYSxcIm1pbl93XCIsYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHd1KE8oZSxaaiwxNikpfSkse3FhOlwiIVwifSksWihhLFwibWluX2hcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4geHUoTyhlLFpqLDE2KSl9KSx7cWE6XCIhXCJ9KSl9LHN2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXTtpZihudWxsIT09YSYmYSE9YS50b3Ape3ZhciBlPXhpKCExLGEpLndpZHRoOygtMTIyNDU5MzM9PT1ifHwtMTIyNDU5MzM9PT1lfHxlPGIpJiZkLnB1c2goOCl9LTEyMjQ1OTMzIT1iJiYoZT0xK18ucmEoNDUpLGIqZTxhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aD9kLnB1c2goMTApOmMmJl8ueSg0MTMpJiYoYz0xK18ucmEoNDE0KSxhLm91dGVyV2lkdGgqYzxiJiZkLnB1c2goMTApKSk7cmV0dXJuIGR9LHB2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdLGY9W10sZz1fLnkoNDExKSxoPTAhPT1SZygpLGs9Zz94aSghMCxiLGgpLndpZHRoOm51bGw7ZyYmKGQ9c3YoYixrLGgpKTtjLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIG09bmV3IFhxLG49cGEobCk7bD0wO2lmKG4pe2d8fChrPXhpKCEwLGIsaCkud2lkdGgsZD1zdihiLGssaCkpO2Zvcih2YXIgcT0wO24mJjEwMD5xO3ErKyxuPW4ucGFyZW50RWxlbWVudCl7dmFyIHc9d2EobixiKTtpZih3KXtpZih3Lm92ZXJmbG93WSYmXCJ2aXNpYmxlXCIhPT13Lm92ZXJmbG93WSl7bS5zZXQoMik7dmFyIHU9SWsobik7dSYmKGw9bD9NYXRoLm1pbihsLHUud2lkdGgpOnUud2lkdGgpO2lmKG0uZ2V0KDkpKWJyZWFrfVwic3RpY2t5XCIhPT13LnBvc2l0aW9uJiZcImZpeGVkXCIhPT13LnBvc2l0aW9ufHxtLnNldCg5KTtcIm5vbmVcIj09PXcuZGlzcGxheSYmbS5zZXQoNyk7XCJJRlJBTUVcIj09PW4ubm9kZU5hbWUmJih3PXBhcnNlSW50KHcud2lkdGgsMTApLHc8ayYmKG0uc2V0KDgpLGw9bD9NYXRoLm1pbih3LGwpOncpKX1lbHNlIG0uc2V0KDMpfX1lbHNlIG0uc2V0KDEpO2QuZm9yRWFjaChmdW5jdGlvbihDKXtyZXR1cm4gbS5zZXQoQyl9KTtlLnB1c2goWXEobSkpO2YucHVzaChsKX0pO1ooYSxcImZ3c1wiLGUpO1ooYSxcIm9od1wiLGYpfSx1dj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1bXSxmPWEuaixnPWYuUixoPSEheChmLk4sMTUpO2lmKGEubSliLmZvckVhY2goZnVuY3Rpb24oayl7az1Qayh7c2xvdDprLGNhOmdbay5nZXRTbG90RWxlbWVudElkKCldfSxjLGgpfHx0djtkLnB1c2goTWF0aC5yb3VuZChrLngpKTtlLnB1c2goTWF0aC5yb3VuZChrLnkpKX0pO2Vsc2UgaWYoYj0oYS52LnY/TmgoKTpudWxsKXx8UGsoe3Nsb3Q6YlswXSxjYTpnW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXX0sYyxoKSlkLnB1c2goTWF0aC5yb3VuZChiLngpKSxlLnB1c2goTWF0aC5yb3VuZChiLnkpKTtaKGEsXCJhZHhzXCIsZCk7WihhLFwiYWR5c1wiLGUpfSxxdj1mdW5jdGlvbihhLGIsYyl7aWYoIWEubSl7dmFyIGQ9bnVsbCxlPW51bGw7dHJ5e2Q9d2koYy50b3AuZG9jdW1lbnQsYy50b3ApLnl9Y2F0Y2goaCl7cmV0dXJufXZhciBmPWEuaixnPWYuUjtmPSEheChmLk4sMTUpOyhiPVBrKHtzbG90OmJbMF0sY2E6Z1tiWzBdLmdldFNsb3RFbGVtZW50SWQoKV19LGMuZG9jdW1lbnQsZikpJiYoZT1NYXRoLnJvdW5kKGIueSkpO2M9eGkoITAsYykuaGVpZ2h0O2UmJi0xMjI0NTkzMyE9PWUmJi0xMjI0NTkzMyE9PWMmJihlPGQrYz9aKGEsXCJidHZpXCIsMCx7bmE6ITB9KTooZD1fLkRqKDI0OCkrMSxDai5CKClbMjQ4XT1kLFooYSxcImJ0dmlcIixkKSkpfX0sdnY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouUjtyZXR1cm4gYi5tYXAoYS5tP2Z1bmN0aW9uKGQpe3ZhciBlPWNbZC5nZXRTbG90RWxlbWVudElkKCldLGY7Xy55KDM2NCk/Zj1kLiRhfHxyayhlLE1rKGQsYS5qKSk6Zj1yayhlKTtyZXR1cm4gZC4kYT1mfTpmdW5jdGlvbihkKXt2YXIgZT1hLmouUltkLmdldFNsb3RFbGVtZW50SWQoKV07ZT1kLiRhfHxyayhlLE1rKGQsYS5qKSk7cmV0dXJuIGQuJGE9ZX0pLmpvaW4oXCIsXCIpfSxrdj1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP3dpbmRvdzpjO3ZhciBkPWMuZG9jdW1lbnQ7Yj0oXy55KDM2NCk/eChhLmouTiw2KTphLm0pP3VrKGEudi5sKTp2ayhiWzBdLGEuai5SW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXSxicChhLnYpKXx8dWsoYS52LmwpO3ZhciBlPVJrKFwiZ29vZ2xlX3ByZXZpZXdcIiksZj1lP0FrKGQuVVJMKTpkLlVSTDtlPWU/QWsoZC5yZWZlcnJlcik6ZC5yZWZlcnJlcjtkPSExO2lmKG51bGwhPWIpe3ZhciBnPWY7eWkoYyl8fChlPVwiXCIsZD0hMCl9ZWxzZSBiPWY7YS52LnYmJihlPShlPUpoKCkpJiZlLnJlZmVycmVyKTtmPW5ldyBIaShjKTt2YXIgaD1mLmpbMF0uZGVwdGgsaz1oJiYwPGg7aWYoayYmKFooYSxcIm5oZFwiLGgpLGMubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zKSl7Yz1bXTtoPU1hdGgubWluKGYuai5sZW5ndGgsMjcpO2Zvcih2YXIgbD0xO2w8aDtsKyspZi5qW2xdJiZmLmpbbF0udXJsJiYoY1tsLTFdPWYualtsXS51cmwpO2M9SWkoZixjLnJldmVyc2UoKSk7WihhLFwiaWFnXCIsYyk7Yz1mLmo7aD1bXTtmb3IobD1jLmxlbmd0aC0xOzA8bDtsLS0pe3ZhciBtPWNbbF07bSYmbnVsbCE9bS51cmwmJmgucHVzaChvZyhtLnVybC5tYXRjaChfLm5nKVszXXx8bnVsbCkpfWM9RWkoaCk7MDxjJiZaKGEsXCJtZG9cIixjKX1aKGEsXCJ1cmxcIixiKTtjPWI7aD1fLkRqKDI1Mil8fHt9O2gudXJsPWM7Q2ouQigpWzI1Ml09aDtudWxsIT1nJiZnIT1iJiZaKGEsXCJsb2NcIixnKTtaKGEsXCJyZWZcIixlKTtrJiYoZz1mLmpbTWF0aC5tYXgoZi5qLmxlbmd0aC0xLDApXS51cmwpJiZaKGEsXCJ0b3BcIixkP29nKGcubWF0Y2goXy5uZylbM118fG51bGwpOmcpfSxsdj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj93aW5kb3c6Yjt2YXIgYz1iLmRvY3VtZW50LGQ9Yy5zY3JpcHRzO2QmJlooYSxcImRzc3pcIixkLmxlbmd0aCk7Yj1uZXcgSGkoYik7WihhLFwiaWNzZ1wiLEppKGIpLHtuYTohMH0pO2I9S2koYik7WihhLFwibXNvXCIsYik7Yj1FcnJvcigpO2lmKGIuc3RhY2spe2Q9RWsoYi5zdGFjayk7ZC09MTM7aWYoMD5kKXtkPTA7dmFyIGU9bmV3IFdrKFwiZ3B0X25lZ2F0aXZlX3N0YWNrX3RyYWNlXCIsemsoKSxfLkRqKDIzKSk7bGIoZSxQcChRcC5CKCkpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gYXAoYS52LGYpfSkpO0UoZSxcInN0YWNrVHJhY2VcIixiLnN0YWNrKTtZayhlKX1aKGEsXCJzdGRcIixkLHtuYTohMH0pfWMuY3VycmVudFNjcmlwdCYmYy5jdXJyZW50U2NyaXB0LnRleHQmJlooYSxcImNzbFwiLGMuY3VycmVudFNjcmlwdC50ZXh0Lmxlbmd0aCl9LHd2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLlI7YT1iLm1hcChmdW5jdGlvbihkKXtkPWNbZC5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiBJYihkKX0pO2ZvcihiPWEuc2hpZnQoKXx8e307YS5sZW5ndGg7KWI9UHUoYixhLnNoaWZ0KCkpO3JldHVybiBifSxldj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5SLGQ7Xy55KDQ5KSYmMTxiLmxlbmd0aD9kPXh2KGEsYik6ZD1iLm1hcChmdW5jdGlvbihlKXtlPWNbZS5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiBLYihlKS5qb2luKFwiJlwiKX0pO2I9ZDtiLmpvaW4oXCJ8XCIpLmxlbmd0aD09ZC5sZW5ndGgtMSYmKGI9bnVsbCk7WihhLFwicHJldl9zY3BcIixiLHtxYTpcInxcIn0pfSx4dj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5SLGQ9W10sZT13dihhLGIpO2IuZm9yRWFjaChmdW5jdGlvbihnKXtnPWNbZy5nZXRTbG90RWxlbWVudElkKCldO2c9S2IoZyxmdW5jdGlvbihoLGspe2s9ZVtrXTtyZXR1cm4ha3x8IV8uQShrLFwiaW5jbHVkZXNcIikuY2FsbChrLGgpfSk7ZC5wdXNoKGcuam9pbihcIiZcIikpfSk7dmFyIGY9W107Xy5KYihlLGZ1bmN0aW9uKGcsaCl7Zz1nLm1hcChlbmNvZGVVUklDb21wb25lbnQpO2g9ZW5jb2RlVVJJQ29tcG9uZW50KGgpO2YucHVzaChoK1wiPVwiK2cuam9pbigpKX0pO2YubGVuZ3RoJiZaKGEsXCJjc3BcIixmLHtxYTpcIiZcIn0pO3JldHVybiBkfSxpdj1mdW5jdGlvbihhLGIpe18uSmIoYixmdW5jdGlvbihjLGQpe1ooYSxkLGMseyQ6ITF9KX0pfSwkdT1mdW5jdGlvbihhKXt2YXIgYj1hLmouTjswIT1uZihiLDI0LDApJiZaKGEsXCJjb1wiLG5mKGIsMjQsMCkse25hOiEwfSl9LGJ2PWZ1bmN0aW9uKGEsYil7aWYoIV8ueSgzNjcpKXt2YXIgYz1fLkRqKDIyMSk7Yj1zaChjLGIpO2IucmQmJlooYSxcIm5wYVwiLDEpO1ooYSxcImd1Y2lcIixiLiRjKX19LGF2PWZ1bmN0aW9uKGEpe3ZhciBiPVVqKGEuai5OKXx8bmV3IE9qOyEwPT09eChiLDEpJiZaKGEsXCJyZHBcIixcIjFcIik7ITA9PT14KGIsOSkmJlooYSxcImx0ZFwiLFwiMVwiKTt2YXIgYz1CKGEubywyKTtjJiZaKGEsXCJnZHByX2NvbnNlbnRcIixjKTtudWxsIT1CKGEubywzKSYmKGM9eChhLm8sMyksWihhLFwiZ2RwclwiLGM/XCIxXCI6XCIwXCIse25hOiEwfSkpOyhjPUIoYS5vLDQpKSYmWihhLFwiYWRkdGxfY29uc2VudFwiLGMpOyhjPUIoYS5vLDcpKSYmWihhLFwidGNmZVwiLGMpOyhjPUIoYS5vLDEpKSYmWihhLFwidXNfcHJpdmFjeVwiLGMpOyh4KGEubyw2KXx8Xy55KDM3MykmJngoYiw4KSkmJlooYSxcIm5wYVwiLDEpO2M9bmYoYiw2LDIpOzIhPT1jJiZaKGEsXCJ0ZnVhXCIsYyx7bmE6ITB9KTtudWxsIT1CKGIsNSkmJihiPUIoYiw1KSxaKGEsXCJ0ZmNkXCIsYix7bmE6ITB9KSl9LGR2PWZ1bmN0aW9uKGEpe3ZhciBiPWEuai5OOzEhPW5mKGIsMjQsMCkmJm51bGwhPUIoYiwxNikmJlooYSxcInBwaWRcIixCKGIsMTYpLHtuYTohMH0pfSxmdj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaixkPWMuTixlPWMuUltiWzBdLmdldFNsb3RFbGVtZW50SWQoKV07Yz0xIT1hLm1vZGVsLkVhO2U9ISF4KGUsMTcpO2I9d2soYixhLmouUixhLnYubCxicChhLnYpKTtkPXgoZCwyNyl8fCExO3ZhciBmPTM9PWEubW9kZWwuRWEsZz1uZXcgWHE7Zy5zZXQoMCxjKTtnLnNldCgxLGUpO2cuc2V0KDIsYik7Zy5zZXQoMyxkKTtnLnNldCg0LGYpO2M9WXEoZyk7MDxjJiZaKGEsXCJlcmlcIixjKX0sZ3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouTixkPVF1KGMpO1ooYSxcImN1c3RfcGFyYW1zXCIsZCx7cWE6XCImXCJ9KTtpZihhLkQmJjA9PW5mKGMsMjQsMCkpe2Q9UWEoXCJfX2dhZHNcIixhLm8sYS5ELmouZG9jdW1lbnQpO1ooYSxcImNvb2tpZVwiLGQse25hOiEwfSk7dmFyIGU9YS5EO2lmKDA9PT1lLmwpe3ZhciBmPWEubztpZihRYShcIl9fZ2Fkc1wiLGYsZS5qLmRvY3VtZW50KSlmPSEwO2Vsc2V7dmFyIGc9ZS5qLmRvY3VtZW50O2c9dm9pZCAwPT09Zz9kb2N1bWVudDpnO3goZiw1KSYmKG5ldyBQYShnKSkuc2V0KFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiLFwiR29vZFwiLHZvaWQgMCk7aWYoZz1cIkdvb2RcIj09PVFhKFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiLGYsZS5qLmRvY3VtZW50KSl7dmFyIGg9ZS5qLmRvY3VtZW50O2g9dm9pZCAwPT09aD9kb2N1bWVudDpoO3goZiw1KSYmKGY9bmV3IFBhKGgpLGYuZ2V0KFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiKSxmLnNldChcIkdvb2dsZUFkU2VydmluZ1Rlc3RcIixcIlwiLHt3YzowLHBhdGg6dm9pZCAwLGRvbWFpbjp2b2lkIDB9KSl9Zj1nfWUubD1mPzI6MX0yPT09ZS5sJiYhZCYmWihhLFwiY29va2llX2VuYWJsZWRcIixcIjFcIix7bmE6ITB9KX0oZD1CKGMsOCkpPyg1MDxkLmxlbmd0aCYmKGQ9ZC5zdWJzdHJpbmcoMCw1MCkpLGQ9XCJhIFwiK1ZlKCdyb2xlOjEgcHJvZHVjZXI6MTIgbG9jOlwiJysoZCsnXCInKSkpOmQ9XCJcIjtkJiZaKGEsXCJ1dWxlXCIsZCk7MD09bmYoYywyNCwwKSYmKGM9Yi5kb2N1bWVudCwoYj0odWsoYS52LmwpfHxkYihiKSkhPWMuVVJMP2MuZG9tYWluOlwiXCIpJiZaKGEsXCJjZG1cIixiKSk7Xy55KDYpfHwoYj1uZXcgWHEsXy5yLlNWR0VsZW1lbnQmJl8uci5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMmJmIuc2V0KDApLGM9T2coKSxjW1wiYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uXCJdJiZiLnNldCgxKSxjW1wiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94XCJdJiZiLnNldCgyKSxfLnIuY3J5cHRvJiZfLnIuY3J5cHRvLnN1YnRsZSYmYi5zZXQoMyksXy5yLlRleHREZWNvZGVyJiZfLnIuVGV4dEVuY29kZXImJmIuc2V0KDQpLGI9WXEoYiksWihhLFwiYmNcIixiKSl9LGh2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jLmRvY3VtZW50OzA8bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRSBcIikmJndvKGEudi5sLFwiYWRzZW5zZV9lbmNvZGluZ1wiLGQuY2hhcnNldCwhMSk7aWYoIXVrKGEudi5sKSl7dHJ5e3ZhciBlPU1hdGgucm91bmQoRGF0ZS5wYXJzZShjLmRvY3VtZW50Lmxhc3RNb2RpZmllZCkvMUUzKXx8bnVsbH1jYXRjaChtKXtlPW51bGx9WihhLFwibG10XCIsZT9lLnRvU3RyaW5nKCk6bnVsbCl9ZT1fLnkoNDMpP18uTmkoKToobmV3IERhdGUpLmdldFRpbWUoKTtaKGEsXCJkdFwiLGUseyQ6ITF9KTt0cnl7ZT1IdTt2YXIgZj1NYXRoLm1pbihQaShcImRvbUxvYWRpbmdcIil8fEluZmluaXR5LFBpKFwiZG9tSW50ZXJhY3RpdmVcIil8fEluZmluaXR5KTt2YXIgZz1JbmZpbml0eT09Zj9NYXRoLm1heChQaShcInJlc3BvbnNlRW5kXCIpLFBpKFwibmF2aWdhdGlvblN0YXJ0XCIpKTpmOzA8ZyYmZT49ZyYmKFooYSxcImRsdFwiLGcseyQ6ITF9KSxaKGEsXCJpZHRcIixlLWcseyQ6ITF9KSl9Y2F0Y2gobSl7WihhLFwiaWR0XCIsLTkseyQ6ITF9KSxibCg0NzksbSl9aWYobnVsbD09TnUpe2E6e2c9Yy5uYXZpZ2F0b3I7Zj1nLnVzZXJBZ2VudDtlPWcucGxhdGZvcm07dmFyIGg9L1dlYktpdFxcLyhcXGQrKS8saz0vcnY6KFxcZCtcXC5cXGQrKS8sbD0vcnY6MVxcLjgoW14uXXxcXC4wKS87aWYoL1dpbnxNYWN8TGludXh8aVBhZHxpUG9kfGlQaG9uZS8udGVzdChlKSYmIS9eT3BlcmEvLnRlc3QoZikmJihoPShoLmV4ZWMoZil8fFswLDBdKVsxXSxrPShrLmV4ZWMoZil8fFswLDBdKVsxXSwvV2luLy50ZXN0KGUpJiYvVHJpZGVudC8udGVzdChmKSYmMTE8PWQuZG9jdW1lbnRNb2RlfHwhaCYmXCJHZWNrb1wiPT09Zy5wcm9kdWN0JiYyNzw9ayYmIWwudGVzdChmKXx8NTM2PD1oKSl7Zz0hMDticmVhayBhfWc9ITF9Zj16aShjLGMuZG9jdW1lbnQsNTAwLDMwMCk7TnU9ZyYmIWZ9TnV8fFooYSxcImVhXCIsXCIwXCIse25hOiEwfSk7Zj1nPW9pKCk7Zm9yKGU9MDtnJiZnIT1nLnBhcmVudDspZz1nLnBhcmVudCxlKysscWcoZykmJihmPWcpO2U9ZjtnPWUubG9jYXRpb24uaHJlZjtlPT1lLnRvcD9nPXt1cmw6Zyx2YzohMH06KGY9ITEsKGw9ZS5kb2N1bWVudCkmJmwucmVmZXJyZXImJihnPWwucmVmZXJyZXIsZS5wYXJlbnQ9PWUudG9wJiYoZj0hMCkpLChlPWUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zKSYmKGU9ZVtlLmxlbmd0aC0xXSkmJi0xPT1nLmluZGV4T2YoZSkmJihmPSExLGc9ZSksZz17dXJsOmcsdmM6Zn0pO2Y9ZztnPXppKG9pKCksZCxjLmdvb2dsZV9hZF93aWR0aCxjLmdvb2dsZV9hZF9oZWlnaHQpO2Y9Zi52YztlPW9pKCk7ZT1lLnRvcD09ZT8wOnFnKGUudG9wKT8xOjI7bD00O2d8fDEhPWU/Z3x8MiE9ZT9nJiYxPT1lP2w9NzpnJiYyPT1lJiYobD04KTpsPTY6bD01O2YmJihsfD0xNik7Zz1cIlwiK2w7QWkoKTtaKGEsXCJmcm1cIixnfHxudWxsKTtnPWEudi52PyhnPU1oKCkpJiZfLk1jKGcucm9vdEJvdW5kcyk/bmV3IF8uVGYoZy5yb290Qm91bmRzLndpZHRoLGcucm9vdEJvdW5kcy5oZWlnaHQpOm51bGw6eGkoITAsYyxfLnkoMjgwKSYmMCE9PVJnKCkpO2cmJihhLmoub2E9ZyxaKGEsXCJiaXdcIixnLndpZHRoKSxaKGEsXCJiaWhcIixnLmhlaWdodCkpOyF5aShjKSYmKGc9eGkoITEsYykpJiYoWihhLFwiaXN3XCIsZy53aWR0aCksWihhLFwiaXNoXCIsZy5oZWlnaHQpKTthLm1vZGVsLm8mJlooYSxcIm9pZFwiLGEubW9kZWwubyk7dXYoYSxiLGQpO1ooYSxcImFka3NcIix2dihhLGIpKTtkPTA7dm9pZCAwPT09Xy5yLnBvc3RNZXNzYWdlJiYoZHw9MSk7MDxkJiZaKGEsXCJvc2RcIixkKTt5dihhKTtkPXhvKGIsYS52LmwsYnAoYS52KSxhLkkpO1ooYSxcImFkc2Vuc2VQYXJhbWV0ZXJzXCIsZCx7JDohMX0pO2Q9cmkoYyk7YS5HPyhaKGEsXCJpZmlcIixkKzEpLGQ9YyxiPWIubGVuZ3RoLGI9dm9pZCAwPT09Yj8xOmIsZD1PaChKaChkKSl8fGQsZC5nb29nbGVfdW5pcXVlX2lkPShkLmdvb2dsZV91bmlxdWVfaWR8fDApK2IpOlooYSxcImlmaVwiLGQpO251bGwhPT1jJiZjIT1jLnRvcD8oYj1bYy5kb2N1bWVudC5VUkxdLGMubmFtZSYmYi5wdXNoKGMubmFtZSksYz14aSghMSxjLCExKSxiLnB1c2goYy53aWR0aC50b1N0cmluZygpKSxiLnB1c2goYy5oZWlnaHQudG9TdHJpbmcoKSksYz1DZyhiLmpvaW4oXCJcIikpKTpjPTA7MCE9YyYmWihhLFwiaWZrXCIsYy50b1N0cmluZygpKX0sanY9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5yLmRldmljZVBpeGVsUmF0aW87KGI9XCJudW1iZXJcIj09PXR5cGVvZiBiPytiLnRvRml4ZWQoMyk6bnVsbCkmJlooYSxcInVfc2RcIixiLHskOiExfSl9LFp1PWZ1bmN0aW9uKGEpe1ooYSxcImVpZFwiLGEubW9kZWwuVSk7dmFyIGI9TWkoKS5zcGxpdChcIixcIik7YiYmWihhLFwiZGVidWdfZXhwZXJpbWVudF9pZFwiLGIpfSxjdj1mdW5jdGlvbihhLGIsYyl7Yi5mb3JFYWNoKGZ1bmN0aW9uKGwpe3p2KGEsbC5nZXRBZFVuaXRQYXRoKCkpfSk7dmFyIGQ9YS5qLGU9ZC5OLGY9ZC5SO2Q9Yi5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGZbbC5nZXRTbG90RWxlbWVudElkKCldfSk7WihhLFwiaXVfcGFydHNcIixhLkEpO1ooYSxcImVuY19wcmV2X2l1c1wiLGEuVSk7WihhLFwicHJldl9pdV9zenNcIixkLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gU2IobCl9KS5qb2luKCkpO2lmKGQuc29tZShmdW5jdGlvbihsKXtyZXR1cm4oej14YShsKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosXCJmbHVpZFwiKX0pKXt2YXIgZz1kLm1hcChmdW5jdGlvbihsKXtyZXR1cm4oej14YShsKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosXCJmbHVpZFwiKT9cImhlaWdodFwiOlwiMFwifSk7WihhLFwiZmx1aWRcIixnKX1aKGEsXCJmc2ZzXCIsSGIoYixmdW5jdGlvbihsKXtsPShsPWZbbC5nZXRTbG90RWxlbWVudElkKCldKSYmeChsLDEyKTt2YXIgbT0hIXgoZSwxMyk7cmV0dXJuKG51bGw9PWw/bTpsKT8xOjB9KSk7WihhLFwiZnNic1wiLEhiKGIsZnVuY3Rpb24obCl7dmFyIG09YS5qLG49bS5OO2w9bS5SW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXTtuPU8obixQaiwxOCk7cmV0dXJuKChsPWwmJk8obCxQaiwxMykpJiZudWxsIT1CKGwsMyk/eChsLDMpOm4mJngobiwzKSk/MTowfSkpO0F2KGEsYik7QnYoYSxmW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXSk7KGc9Q3YoZCkpJiZaKGEsXCJpc3RzXCIsZyk7WihhLFwiZmFzXCIsSGIoZCxmdW5jdGlvbihsKXtyZXR1cm4gbHAoZ2sobCkpfSkpOyhnPUR2KGQsZnVuY3Rpb24obCl7cmV0dXJuIDQ9PWdrKGwpfSkpJiZaKGEsXCJyYnZzXCIsZyk7Xy55KDk4KSYmKGI9RHYoYixmdW5jdGlvbihsKXt2YXIgbT1mW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXSxuO2lmKG49IWxwKGdrKG0pKSl7bj1udWxsO0FycmF5LmlzQXJyYXkoeGEobSlbMF0pJiYobj1fLkYoeGEobSlbMF0pLG09bi5uZXh0KCkudmFsdWUsbj1uLm5leHQoKS52YWx1ZSxuPXt3aWR0aDptLGhlaWdodDpufSk7YTp7dmFyIHE9dGEobCxjKTtsPXtHYzpuLGxjOiExfTt2YXIgdz12b2lkIDA9PT1sP3t9Omw7bD12b2lkIDA9PT13LkdjP251bGw6dy5HYzttPXZvaWQgMD09PXcuamQ/MTAwOncuamQ7bj12b2lkIDA9PT13LkNkPzUwOncuQ2Q7dz12b2lkIDA9PT13LmxjPyEwOncubGM7Zm9yKHZhciB1PVRjKCksQz0hMTtxOyl7aWYoIW0tLXx8VGMoKS11Pj1uKXtuPSExO2JyZWFrIGF9c3dpdGNoKHEubm9kZVR5cGUpe2Nhc2UgOTp0cnl7dmFyIFE9cS5wYXJlbnRXaW5kb3d8fHEuZGVmYXVsdFZpZXc7aWYoUSl7dmFyIE49US5mcmFtZUVsZW1lbnQ7aWYoTiYmcWcoUS5wYXJlbnQpKXtxPU47YnJlYWt9fX1jYXRjaCh4Yyl7fXE9bnVsbDticmVhaztjYXNlIDE6dmFyIEg9cSxxYTtpZihxYT13KXtiOnt0cnl7aWYoMDxILm9mZnNldFdpZHRoJiYwPEgub2Zmc2V0SGVpZ2h0JiZILnN0eWxlJiZcIm5vbmVcIiE9PUguc3R5bGUuZGlzcGxheSYmXCJoaWRkZW5cIiE9PUguc3R5bGUudmlzaWJpbGl0eSYmKCFILnN0eWxlLm9wYWNpdHl8fDAhPT1OdW1iZXIoSC5zdHlsZS5vcGFjaXR5KSkpe3ZhciBvYj1ILmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciB3Yz0wPG9iLnJpZ2h0JiYwPG9iLmJvdHRvbTticmVhayBifX1jYXRjaCh4Yyl7fXdjPSExfXFhPSF3Y31pZihxYSl7bj0hMTticmVhayBhfUN8fCgvXmh0bWx8Ym9keSQvaS50ZXN0KEgudGFnTmFtZSk/Qz1udWxsOihDPUguc3R5bGUucG9zaXRpb258fCh3YShILHdpbmRvdyl8fHt9KS5wb3NpdGlvbixDPS9eZml4ZWQvaS50ZXN0KEMpP0g6bnVsbCksQz0hIUMmJighbHx8Qy5vZmZzZXRXaWR0aCpDLm9mZnNldEhlaWdodDw9NCpsLndpZHRoKmwuaGVpZ2h0KSk7cT1xLnBhcmVudE5vZGV9fW49Q319cmV0dXJuIG59KSkmJlooYSxcInBmeHNcIixiKTt2YXIgaD17fTtkLmZvckVhY2goZnVuY3Rpb24obCl7KGw9bC5nZXRDbGlja1VybCgpKSYmKGhbbF09KGhbbF18fDApKzEpfSk7aWYoIXlnKGgpKXtiPW5ldyBXayhcImdwdF9zcmFfc2V0Y2xpY2t1cmxcIik7dmFyIGs9W107Xy5KYihoLGZ1bmN0aW9uKGwsbSl7ay5wdXNoKG0ubGVuZ3RoK1wiOlwiK2wpfSk7RShiLFwibGVuZnJlcXNcIixrLmpvaW4oKSk7bGIoYik7WWsoYixfLkRqKDU4KSl9fSxCdj1mdW5jdGlvbihhLGIpeyhfLnkoMzY0KT94KGEuai5OLDYpOmEubSl8fCFiLmdldENsaWNrVXJsKCl8fFooYSxcImNsaWNrXCIsYi5nZXRDbGlja1VybCgpKX0sRXY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylpZihcIlwiIT1iW2NdKXtmb3IodmFyIGQ9ITEsZT0wO2U8YS5BLmxlbmd0aDtlKyspaWYoYltjXT09YS5BW2VdKXtkPSEwO2JyZWFrfWR8fGEuQS5wdXNoKGJbY10pfX0sRnY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9XCJcIixkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKDA8ZCljKz1cIi9cIjtlbHNlIGlmKFwiXCI9PWJbMF0pY29udGludWU7Zm9yKHZhciBlPTA7ZTxhLkEubGVuZ3RoO2UrKylpZihiW2RdPT1hLkFbZV0pe2MrPWU7YnJlYWt9fXJldHVybiBjfSx6dj1mdW5jdGlvbihhLGIpe3ZhciBjPVwiXCI7XCJcIiE9YiYmKGI9Yi5zcGxpdChcIi9cIikubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLnJlcGxhY2UoLywvZyxcIjpcIil9KSxFdihhLGIpLGM9RnYoYSxiKSk7YS5VLnB1c2goYyl9LEN2PWZ1bmN0aW9uKGEpe3JldHVybiBEdihhLGZ1bmN0aW9uKGIpe3JldHVybiAwIT1nayhiKX0pfSxEdj1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBYcTthLmZvckVhY2goZnVuY3Rpb24oZCxlKXtjLnNldChhLmxlbmd0aC1lLTEsYihkKSl9KTtyZXR1cm4gWXEoYyl9LHl2PWZ1bmN0aW9uKGEpe3ZhciBiPWEubW9kZWwuai5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIEZ0KGEubW9kZWwsYyl9KTtaKGEsXCJ1Y2lzXCIsYix7cWE6XCJ8XCJ9KX0sWXU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5qLk47eChiLDIxKSYmKFooYSxcImh4dmFcIiwxLHskOiExfSksWihhLFwiY21zaWRcIixCKGIsMjMpKSxaKGEsXCJ2aWRcIixCKGIsMjIpKSl9LEF2PWZ1bmN0aW9uKGEsYil7dmFyIGM9SGIoYixmdW5jdGlvbihkKXtkPWQuVzt2YXIgZT1fLk9pKCk7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oKGQmJmU/ZS1kOjApLzFFMywxODAwKSl9LHZvaWQgMCxcIn5cIik7WihhLFwicmlzXCIsYyk7Yj1IYihiLGZ1bmN0aW9uKGQpe2EuRyYmKGQuVz1fLk9pKCl8fDAsZC5BKyspO3JldHVybiBkLkEtMX0pO1ooYSxcInJjc1wiLGIpfSxydj1mdW5jdGlvbihhKXtpZighXy5EaigyMjEpJiZfLnkoMzA4KSl7dmFyIGI9bmV3IGhxO2Zvcih2YXIgYz1bXSxkPS9eX0dFU1BTSy0oLispJC8sZT0wO2U8d2luZG93LmxvY2FsU3RvcmFnZS5sZW5ndGg7ZSsrKXt2YXIgZj0oZC5leGVjKHdpbmRvdy5sb2NhbFN0b3JhZ2Uua2V5KGUpKXx8W10pWzFdO2YmJmMucHVzaChmKX1jPV8uRihjKTtmb3IoZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZD1kLnZhbHVlLGU9aGIoKS5nZXQoZCksZS5nZXRFcnJvcigpP2liKGUuZ2V0RXJyb3IoKSxkLGUuZXJyb3JNZXNzYWdlKTooZD1lLklhLDAhPT1tdShkKSYmMSE9PW11KGQpfHx4ZihiLDIsZCxrcSkpO3VmKGIsa3EsMikubGVuZ3RoPyhjPW5ldyBXZSxkPXVmKGIsaXEsMSksMDxkLmxlbmd0aCYmZmYoYywxLGQsbHEpLGQ9dWYoYixrcSwyKSwwPGQubGVuZ3RoJiZmZihjLDIsZCxtcSksYj1VZShaZShjKSx2b2lkIDApKTpiPW51bGw7WihhLFwiYTNwXCIsYil9fSxaPWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD97fTpkO2EuSFtiXXx8dm9pZCAwPT09Y3x8bnVsbD09PWN8fGEuQy5wdXNoKHtwYjpiLHZhbHVlOmMsb3B0aW9uczpkfSl9LFR1PWZ1bmN0aW9uKGEpe3ZhciBiPV8ueSgzODcpJiYheChhLm8sNSk/XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL2dhbXBhZC9hZHM/XCI6XCJcIitfLkRqKDI0NykrXCIvZ2FtcGFkL2Fkcz9cIjthLmw9Yjtmb3IoYj0wO2I8YS5DLmxlbmd0aDtiKyspe3ZhciBjPWEuQ1tiXTtpZihcImFkc2Vuc2VQYXJhbWV0ZXJzXCI9PT1jLnBiKUd2KGEsYyk7ZWxzZXt2YXIgZD1IdihjKTtpZihJdihhLGIsYyxkKSlicmVha319fSxIdj1mdW5jdGlvbihhKXt2YXIgYj1hLnZhbHVlLGM9YS5vcHRpb25zLGQ9dm9pZCAwPT09Yy4kPyEwOmMuJDthPXZvaWQgMD09PWMucWE/XCIsXCI6Yy5xYTtjPXZvaWQgMD09PWMubmE/ITE6Yy5uYTtyZXR1cm4gXy5NYyhiKT9BcnJheS5pc0FycmF5KGIpJiZiLmxlbmd0aD9iLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gSnYoZSxkKX0pLmpvaW4oSnYoYSxkKSk6bnVsbDpudWxsPT1ifHwhYyYmMD09Yj9udWxsOkp2KGIsZCl9LEl2PWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFkKXJldHVybiExO3ZhciBlPWMucGIsZj1jLnZhbHVlO2M9Yy5vcHRpb25zO2M9dm9pZCAwPT09Yy4kPyEwOmMuJDtkPWUrXCI9XCIrZDtpZihfLnkoMTY4KSYmMTUzNTI8PWEubC5sZW5ndGgrZC5sZW5ndGgpe2lmKFwic3VwcG9ydGluZ191cmxzXCI9PWUpZm9yKGQ9MDtkPGYubGVuZ3RoO2QrKyl7dmFyIGc9KGQ/SnYoXCIsXCIsYyk6XCImXCIrZStcIj1cIikrSnYoZltkXSxjKTtpZigxNTM1MjxhLmwubGVuZ3RoK2cubGVuZ3RoKWJyZWFrO2EubCs9Z31rYihcImdwdF91cmxfdHJ1bmNcIixmdW5jdGlvbihoKXtFKGgsXCJscHNcIixhLkMuc2xpY2UoYikuZmlsdGVyKGZ1bmN0aW9uKGspe3JldHVybiEhSHYoayl9KS5tYXAoZnVuY3Rpb24oayl7cmV0dXJuIGsucGJ9KS5qb2luKCkpO2xiKGgpfSk7YS5sKz1cIiZ0cnVuYz0xXCI7cmV0dXJuITB9XCI/XCIhPT1hLmxbYS5sLmxlbmd0aC0xXSYmKGEubCs9XCImXCIpO2EubCs9ZDtyZXR1cm4hMX0sR3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPVtdO2I9Xy5GKEFycmF5LmlzQXJyYXkoYi52YWx1ZSk/Yi52YWx1ZTpbXSk7Zm9yKHZhciBlPWIubmV4dCgpOyFlLmRvbmU7ZT1iLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtlPWYucGI7dmFyIGc9Zi5uZCxoPWYuemQ7Zj1nP2VuY29kZVVSSUNvbXBvbmVudChnLnRvU3RyaW5nKCkpOlwiXCI7aD8oZz1oLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gaz9lbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KGspKTpcIlwifSkuam9pbihcIixcIiksZC5wdXNoKGUrXCIsXCIrZW5jb2RlVVJJQ29tcG9uZW50KGYpK1wiLFwiK2cpKTpnJiZcInVybFwiIT1lJiZjLnB1c2goZStcIj1cIitmKX1jLmxlbmd0aCYmKGEubCs9XCImXCIrYy5qb2luKFwiJlwiKSk7ZC5sZW5ndGgmJihhLmwrPVwiJnNwcz1cIitkLmpvaW4oXCJ8XCIpKX0sbXY9ZnVuY3Rpb24oYSl7YT1xZyhhLnRvcCk/YS50b3A6YTtyZXR1cm4gXy5NYyhhLkFNUCkmJiEhQmcoYS5BTVAsZnVuY3Rpb24oYixjKXtyZXR1cm4hL15pbmFib3gvaS50ZXN0KGMpfSl9LEp2PWZ1bmN0aW9uKGEsYil7YT1hLnRvU3RyaW5nKCk7cmV0dXJuIGI/ZW5jb2RlVVJJQ29tcG9uZW50KGEpOmF9LHR2PW5ldyBfLnlhKC05LC05KTt2YXIgS3Y9bnVsbCxOdj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5qPW5ldyB0LlNldDt0aGlzLmw9bmV3IHQuTWFwO3RoaXMudj10ay5CKCk7Xy52KF8ucixcIkRPTUNvbnRlbnRMb2FkZWRcIixHKDMzNCxmdW5jdGlvbigpe2Zvcih2YXIgYj1fLkYoXy5BKGEuaixcInZhbHVlc1wiKS5jYWxsKGEuaikpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxMdihhLGMpJiZhLmouZGVsZXRlKGMpfSkpO1NvKEkuQigpLE5vLDcyNCxmdW5jdGlvbihiKXsoYj1RcC5CKCkuai5nZXQoYil8fG51bGwpJiZNdihhLGIpfSk7U28oSS5CKCksT28sNzI1LGZ1bmN0aW9uKGIpe2lmKGI9UXAuQigpLmouZ2V0KGIpfHxudWxsKXt2YXIgYz1hLmwuZ2V0KGIpO251bGwhPWM/cXQoYyxiLmwpOk12KGEsYil9fSl9LE12PWZ1bmN0aW9uKGEsYil7THYoYSxiKT9hLmouZGVsZXRlKGIpOihhLmouYWRkKGIpLF8uUihiLGZ1bmN0aW9uKCl7YS5qLmRlbGV0ZShiKX0pKX0sTHY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1wYShiLF8uci5kb2N1bWVudCk7aWYoYyYmXCJESVZcIj09Yy5ub2RlTmFtZSl7dmFyIGQ9Xy55KDg3KTtjPW5ldyBvdCh7TDpfLnIsVmE6YS52LGtiOmMscmE6ZnVuY3Rpb24oZSl7YmwoMzM2LGUsMSl9LHhkOmR9KTtpZihjLnYpcmV0dXJuIHF0KGMsYi5sKSxhLmwuc2V0KGIsYyksbG8oYixmdW5jdGlvbigpe3JldHVybiB2b2lkIGEubC5kZWxldGUoYil9KSwhMH1yZXR1cm4hMX07dmFyIExiPW5ldyB0LlNldDt2YXIgT3Y9ZnVuY3Rpb24oYSxiKXtiPWVuY29kZVVSSUNvbXBvbmVudChiKTtiPUJkKFwiZGF0YTp0ZXh0L2h0bWwsXCIrYik7YS5zcmM9eWQoYikudG9TdHJpbmcoKX07dmFyIFB2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hdGgubWF4KFwic3RyaW5nXCI9PT10eXBlb2YgYT9fLkEoYSxcImVuZHNXaXRoXCIpLmNhbGwoYSxcInB4XCIpP3BhcnNlSW50KGEsMTApOjA6YSxiKStcInB4XCJ9LFF2PWZ1bmN0aW9uKGEsYixjLGQsZSl7YT1qZyhuZXcgVWYoYSksXCJESVZcIik7YS5pZD1jO2EubmFtZT1jO2M9YS5zdHlsZTtjLmJvcmRlcj1cIjBwdCBub25lXCI7ZCYmKGMubWFyZ2luPVwiYXV0b1wiLGMudGV4dEFsaWduPVwiY2VudGVyXCIpO2UmJihkPUFycmF5LmlzQXJyYXkoZSksYy53aWR0aD1kP2VbMF0rXCJweFwiOlwiMTAwJVwiLGMuaGVpZ2h0PWQ/ZVsxXStcInB4XCI6XCIwJVwiKTtiLmFwcGVuZENoaWxkKGEpO3JldHVybiBhfSxTdj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbil7dmFyIHE9UnYsdz1ucC5CKCkudix1O0FycmF5LmlzQXJyYXkoZCk/dT1uZXcgXy5UZihkWzBdLGRbMV0pOnU9MTtkPWh8fHgoZiw0KXx8Xy55KDI0MikmJm51bGw9PUIoZiw0KT9MaygpOnZvaWQgMDtnPWd8fHZvaWQgMDtfLnkoMzU0KXx8KGc9Xy55KDMzOCk/ZnQ6Y3QsZz14KGYsMyk/Zzp2b2lkIDApO3JldHVybiBuZXcgWXMoe1RiOmEsdGM6YixhZDpxLGNvbnRlbnQ6bnVsbD09PWw/dXMoYyk6XCI8c3RhcnRndWFyZD5cIitjK1wiPGVuZGd1YXJkPlwiLHNpemU6dSxoZDp7aW5mbzpmdW5jdGlvbigpe30sSjpmdW5jdGlvbigpe30sZXJyb3I6ZnVuY3Rpb24oKXt9fSxTYzprLHljOmUsRmM6ZyxwZXJtaXNzaW9uczp7d2I6bnVsbCE9QihmLDEpPyEheChmLDEpOiFoLHhiOm51bGwhPUIoZiwyKT8hIXgoZiwyKTohMX0sbmI6ISFYYigpLmZpZldpbix0ZDpabigpLFBjOiRuKCksSmM6ITEsaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zOncscmE6YmwsYWI6bnVsbD09PWw/dm9pZCAwOmwsdW5pcXVlSWQ6bix3YTptLEVjOmR9KX0sVHY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1Ucyg0OTUsZnVuY3Rpb24oKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsYyk7YigpfSxibCk7YS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGMpfSxVdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD8hMDpkO3ZhciBlPXZvaWQgMD09PWU/ITA6ZTtiPXVzKGIsXCI8c2NyaXB0PnZhciBpbkRhcElGPXRydWUsaW5HcHRJRj10cnVlO1xceDNjL3NjcmlwdD5cIik7dHJ5e3ZhciBmPWEuY29udGVudFdpbmRvdz9hLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6YS5jb250ZW50RG9jdW1lbnQ7ZCYmJGQoKSYmZi5vcGVuKFwidGV4dC9odG1sXCIsXCJyZXBsYWNlXCIpO2MoKTtmLndyaXRlKGIpO2EuY29udGVudFdpbmRvdyYmYS5jb250ZW50V2luZG93Lmhpc3RvcnkmJmEuY29udGVudFdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSYmRWQoYS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYsXCIjXCIpJiZhLmNvbnRlbnRXaW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxcIlwiLFwiI1wiK01hdGgucmFuZG9tKCkpO2UmJmYuY2xvc2UoKX1jYXRjaChnKXtjbCg2NTMsZywhMCl9fSxWdj1mdW5jdGlvbihhKXt0cnl7VHYoYSxmdW5jdGlvbigpe2EucmVtb3ZlQXR0cmlidXRlKFwibmFtZVwiKX0pLE92KGEsJzxzY3JpcHQ+ZG9jdW1lbnQub3BlbihcInRleHQvaHRtbFwiLFwicmVwbGFjZVwiKTt2YXIgYT13aW5kb3cubmFtZTt3aW5kb3cubmFtZT1cIlwiO2RvY3VtZW50LndyaXRlKGEpO2RvY3VtZW50LmNsb3NlKCk7XFx4M2Mvc2NyaXB0PicpfWNhdGNoKGIpe2NsKDY2OCxiLCEwKX19O3ZhciBXdj1mdW5jdGlvbihhKXt2YXIgYj1fLnJhKDgsLTEpO3JldHVybi0xIT1iP2I6bnVsbCE9QihhLDEpP251bGwhPUIoYSwzKSYmMCE9UmcoKT9CKGEsMSkqbGYoYSwzKTpCKGEsMSk6bnVsbH0sWHY9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPUIoYSwyKT9udWxsIT1CKGEsMykmJjAhPVJnKCk/QihhLDIpKmxmKGEsMyk6QihhLDIpOm51bGx9LFl2PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBOajthPV8uRihhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXtjPWMudmFsdWU7aWYobnVsbCE9QihjLDEpKXt2YXIgZD1CKGMsMSk7RChiLDEsZCl9bnVsbCE9QihjLDIpJiYoZD1CKGMsMiksRChiLDIsZCkpO251bGwhPUIoYywzKSYmKGM9bGYoYywzKSxEKGIsMyxjKSl9cmV0dXJuIGJ9O3ZhciBadj1mdW5jdGlvbigpe3RoaXMubW9kdWxlPTJ9O1p2LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcodGhpcy5tb2R1bGUpfTtfLiR2PW5ldyBadjt2YXIgYXcsYncsZXc7YXc9e307Ync9KGF3WzJdPXtrZDpcInBhZ2VfbGV2ZWxfYWRzXCJ9LGF3KTtfLmN3PWZ1bmN0aW9uKCl7dGhpcy5sPXt9O3RoaXMuaj1id307Xy5kdz1mdW5jdGlvbihhLGIpe2I9Yi5tb2R1bGU7YS5sW2JdPWEubFtiXXx8bmV3IEJyO3JldHVybiBhLmxbYl19O2V3PWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5tb2R1bGU7Yj1cIl9ncHRfanNfbG9hZF9cIitjK1wiX1wiO3ZhciBkPUcoMzQwLGZ1bmN0aW9uKGUpe2lmKGEualtjXSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBmPWEualtjXTtmPSh2b2lkIDA9PT1mLlFjP1tdOmYuUWMpLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gXy5kdyhhLGcpLmp9KTt0LlByb21pc2UuYWxsKGYpLnRoZW4oZnVuY3Rpb24oKXtlLmNhbGwoXy5yLF8pfSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFhiKCksYix7dmFsdWU6ZnVuY3Rpb24oZSl7aWYoZCl7dmFyIGY9ZDtkPW51bGw7ZihlKX19LHdyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KX07Xy5jdy5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXt2YXIgYj1fLmR3KHRoaXMsYSksYz10aGlzLmpbYS5tb2R1bGVdLmtkLGQ9Xy55KDM5Myk/XCJodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vXCI6d3MuTmEoKSxlPXZzLk5hKCksZj0kYSgpO3ZhciBnPV8ucmEoMjUpO2M9ZCtlK2MrXCJfXCIrZitcIi5qc1wiO2cmJihjKz1cIj9cIitnKTtnPWM7ZXcodGhpcyxhKTt1Zyhkb2N1bWVudCxsZyhnKSk7cmV0dXJuIGIuan07SWMoXy5jdyk7Xy5jdy5wcm90b3R5cGUubG9hZD1HYihfLmN3LnByb3RvdHlwZS5sb2FkKTt2YXIgUnY9XCIzcmQgcGFydHkgYWQgY29udGVudFwiO1diKFwic2V0QWRJZnJhbWVUaXRsZVwiLFMoNzI5LGZ1bmN0aW9uKGEpe1J2PWF9KSk7dmFyIGZ3PWZ1bmN0aW9uKGEsYixjKXtlbC5jYWxsKHRoaXMpO3RoaXMubD1jO0QodGhpcy5sLDE3LCEwKTt0aGlzLmo9YTtiLnhhKHRoaXMuaixjKTt0aGlzLm89Yn07Xy5KKGZ3LG9sKTtmdy5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJ0KHRoaXMpfTtmdy5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmouZ2V0U2xvdEVsZW1lbnRJZCgpO2RvY3VtZW50LndyaXRlKCc8ZGl2IGlkPVwiJytnZShiKSsnXCI+PC9kaXY+Jyk7cGEodGhpcy5qKT9ndyh0aGlzLm8sYSx0aGlzLmopOmtiKFwiZ3B0X3BiX3dyaXRlXCIsZnVuY3Rpb24oYyl7bGIoYyl9KX07ZncucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe1wicGFnZV91cmxcIj09YSYmYiYmRCh0aGlzLmwsMTgsU3RyaW5nKGIpKTtyZXR1cm4gdGhpc307ZncucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm5cInBhZ2VfdXJsXCIhPT1hP251bGw6Qih0aGlzLmwsMTgpfTt2YXIgaHc9ZnVuY3Rpb24oKXt0aGlzLmo9e319LGp3PWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtjJiYoZD1cIi8vXCIrYytcIi5zYWZlZnJhbWUuZ29vZ2xlc3luZGljYXRpb24uY29tXCIpO2M9U3MoYixabigpLCRuKCksITAsZCk7YS5qW2NdfHwoYS5qW2NdPTEsZnIoKT9pdyhhLGMpOlhiKCkuZmlmV2lufHwoYj1iLmRvY3VtZW50LGE9amcobmV3IFVmKGIpLFwiSUZSQU1FXCIpLGEuc3JjPWMsYS5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCIsYS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGI9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKSwwPGIubGVuZ3RoJiYoYj1iW2IubGVuZ3RoLTFdLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIubmV4dFNpYmxpbmcpKSkpfSxpdz1mdW5jdGlvbihhLGIpe3ZhciBjPWdyKGRvY3VtZW50LGIsXCJwcmVmZXRjaFwiLFwiXCIpO2MmJl8udihjLFwibG9hZFwiLGZ1bmN0aW9uKCl7YS5qW2JdPTM7YyYmXy5mZyhjKX0pfTtJYyhodyk7dmFyIGt3PWZ1bmN0aW9uKGEsYixjLGQpe18uUihhLENoKGIsRyg1MDYsZnVuY3Rpb24oZSl7ZT1KU09OLnBhcnNlKGUuZGF0YSk7ZS5tZXNzYWdlPT09YyYmZChlKX0pKSl9O3ZhciBsdz1mdW5jdGlvbihhLGIsYyxkLGUpe18uUC5jYWxsKHRoaXMpO3RoaXMuc2xvdD1iO3RoaXMubT1jO3RoaXMuaGE9ZDt0aGlzLm89bnVsbDt0aGlzLkE9bmV3IFVmKGEpO3RoaXMuQz1lfTtfLkoobHcsXy5QKTt2YXIgbXc9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMudWEsZT1jLlVhLGY9Yy5NYSxnPWMuWmMsaD1jLmJjLGs9Yy5xYixsPWMuSmIsbT1jLmlzQmFja2ZpbGwsbj1jLk9iLHE9Yy5hYyx3PWMuY2M7Yz1jLlVjfHxcIlwiO2UmJmUuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIixjKTtZaSh0ay5CKCksXCI1XCIsYS5zbG90LmwpO3ZhciB1PWEuc2xvdC5nZXRTbG90SWQoKTtfLnkoNDEyKT9RbyhJLkIoKSxDbyx1KTphLnNsb3QuVGEoKTthLm89YS5sKFwiaGVpZ2h0XCI9PT1nP1wiZmx1aWRcIjpbYi53aWR0aCxiLmhlaWdodF0se3VhOmQsTWE6ZixiYzpoLHFiOmssSmI6bCxpc0JhY2tmaWxsOm0sT2I6bixhYzpxLGNjOnd9KTtxJiZjaChhLm8scSk7Xy55KDQxMil8fHBvKGEuc2xvdCk7UW8oSS5CKCksUGIsdSx7c2l6ZTpifSk7Yj1fLnJhKDE5KTtpZigwPGIpe3ZhciBDPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtRbyhJLkIoKSx6byx1KX0sMUUzKmIpO18uUihhLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgY2xlYXJUaW1lb3V0KEMpfSl9cmV0dXJuIGEub307bHcucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbihhKXthJiZhLnNldEF0dHJpYnV0ZShcImRhdGEtbG9hZC1jb21wbGV0ZVwiLCEwKTtRbyhJLkIoKSxLbyx0aGlzLnNsb3QuZ2V0U2xvdElkKCkpO1lpKHRrLkIoKSxcIjZcIix0aGlzLnNsb3QubCl9O2x3LnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dmFyIGE9cGEodGhpcy5zbG90LHRoaXMuQS5qKTthJiZhLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLXF1ZXJ5LWlkXCIpO3RoaXMubz1udWxsfTt2YXIgbnc9ZnVuY3Rpb24oKXtsdy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihudyxsdyk7dmFyIG93PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1VayhhLnNsb3QuZ2V0U2xvdElkKCkpLGU9YS5BLmo7YT1SdjtlPXZvaWQgMD09PWU/ZG9jdW1lbnQ6ZTtlPWpnKG5ldyBVZihlKSxcIklGUkFNRVwiKTtlLmlkPWQ7ZS50aXRsZT1hO2UubmFtZT1jfHxkO0FycmF5LmlzQXJyYXkoYik/bnVsbCE9YlswXSYmbnVsbCE9YlsxXSYmKGUud2lkdGg9U3RyaW5nKGJbMF0pLGUuaGVpZ2h0PVN0cmluZyhiWzFdKSk6KGUud2lkdGg9XCIxMDAlXCIsZS5oZWlnaHQ9XCIwXCIpO2UuYWxsb3dUcmFuc3BhcmVuY3k9XCJ0cnVlXCI7ZS5zY3JvbGxpbmc9XCJub1wiO2UubWFyZ2luV2lkdGg9XCIwXCI7ZS5tYXJnaW5IZWlnaHQ9XCIwXCI7ZS5mcmFtZUJvcmRlcj1cIjBcIjtlLnN0eWxlLmJvcmRlcj1cIjBcIjtlLnN0eWxlLnZlcnRpY2FsQWxpZ249XCJib3R0b21cIjtyZXR1cm4gZX0scHc9ZnVuY3Rpb24oYSxiLGMsZCl7ZC5hcHBlbmRDaGlsZChiKTtcInN0cmluZ1wiIT09dHlwZW9mIGMmJihiLndpZHRoPVN0cmluZyhjWzBdKSxiLmhlaWdodD1TdHJpbmcoY1sxXSkpO3ZhciBlPV8ucmEoNDIwKTtpZigwPT09ZSlJdChiLGEuc2xvdCxmdW5jdGlvbigpe3JldHVybiBhLmxvYWRlZChiKX0sYS5DLGEubSk7ZWxzZXt2YXIgZj1HKDc3NCxmdW5jdGlvbigpe2lmKDI9PT1lfHwoXy55KDQxMik/ZnAoYS5tLGEuc2xvdCk6YS5zbG90LkQpKWEubG9hZGVkKGIpLF8ucWIoYixcImxvYWRcIixmKX0pO18udihiLFwibG9hZFwiLGYpfX07dmFyIHF3PWZ1bmN0aW9uKCl7bncuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoocXcsbncpO3F3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5NYTtiPW93KHRoaXMsYSxiLnVhKTtWdihiKTtwdyh0aGlzLGIsYSxjKTtyZXR1cm4gYn07cXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIHJ3PWZ1bmN0aW9uKCl7bncuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoocncsbncpO3J3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi51YTtiPWIuTWE7dmFyIGQ9b3codGhpcyxhKTt0cnl7T3YoZCxjKX1jYXRjaChlKXtjbCg2NTQsZSwhMCl9cHcodGhpcyxkLGEsYik7cmV0dXJuIGR9O3J3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciBzdz1mdW5jdGlvbigpe2x3LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHN3LGx3KTtzdy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD1iLnVhLGU9Yi5NYSxmPWIuYmMsZz1iLnFiLGg9Yi5KYixrPWIuaXNCYWNrZmlsbCxsPWIuT2IsbT1iLmFjLG49Yi5jYyxxPXRoaXMuaGE7Yj1xLk47cT1xLlJbdGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKV07Zj1RaihuZXcgUGosISFmKTtudWxsIT1uJiZEKGYsNCxuKTtmPWJvKFtmLE8oYixQaiwxOCkscSYmTyhxLFBqLDEzKV0pO3ZhciB3PVN0cmluZyh4KGYsNCkpO251bGwhPW4mJm4hPT14KGYsNCkmJmpsLkIoKS5KKEttKHcsU3RyaW5nKG4pKSk7a3x8a2IoXCJncHRfc2ZfclwiLGZ1bmN0aW9uKEMpe2xiKEMpO0UoQyxcIkdBTVwiLFN0cmluZyhuKSk7RShDLFwiRmluYWxcIix3KX0pO2g9aD9CKGgsMik6bnVsbDtiPWVwKHRoaXMubSx0aGlzLnNsb3QpO3ZhciB1PVN2KGUsVWsodGhpcy5zbG90LmdldFNsb3RJZCgpKSxkLGEsZnVuY3Rpb24oKXtyZXR1cm4gYy5sb2FkZWQodS5qKX0sZixnfHxudWxsLCEhaywhIWwsaCxiLG0pO18uUih0aGlzLGZ1bmN0aW9uKCl7dHJ5ezEwMCE9dS5zdGF0dXMmJigyPT11LkgmJihUcih1LnYpLHUuSD0wKSx3aW5kb3cuY2xlYXJUaW1lb3V0KHUuSyksdS5LPS0xLHUuQz0zLHUubCYmKHUubC56YSgpLHUubD1udWxsKSx1LlUmJnUuaj91LlUudW5vYnNlcnZlKHUuaik6KF8ucWIod2luZG93LFwicmVzaXplXCIsdS5JKSxfLnFiKHdpbmRvdyxcInNjcm9sbFwiLHUuSSkpLHUuQSYmdS5qJiZ1LkE9PV8uZ2codS5qKSYmdS5BLnJlbW92ZUNoaWxkKHUuaiksdS5qPW51bGwsdS5BPW51bGwsdS5VJiYodS5VLmRpc2Nvbm5lY3QoKSx1LlU9bnVsbCksdS5zdGF0dXM9MTAwKX1jYXRjaChDKXt9fSk7cmV0dXJuIHUuan07c3cucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbihhKXtsdy5wcm90b3R5cGUubG9hZGVkLmNhbGwodGhpcyxhKTthPXRoaXMuaGEuUlt0aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXTt5dSh7c2xvdDp0aGlzLnNsb3QsY2E6YX0pfTtzdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgdHc9ZnVuY3Rpb24oKXtudy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih0dyxudyk7dHcucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnVhLGQ9Yi5NYTtiPWIucWI7dmFyIGU9b3codGhpcyxhKTtiJiZlLnNldEF0dHJpYnV0ZShcInNhbmRib3hcIixiLmpvaW4oXCIgXCIpKTstMT09VmQuaW5kZXhPZihcImlQaG9uZVwiKSYmKGUuc3JjZG9jPVwiXCIpO3B3KHRoaXMsZSxhLGQpO1V2KGUsYyxmdW5jdGlvbigpe30pO3JldHVybiBlfTt0dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiEwfTt2YXIgdXc9ZnVuY3Rpb24oKXtudy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih1dyxudyk7dXcucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnVhLGQ9Yi5NYSxlPWIucWI7Yj1vdyh0aGlzLGEpO3RyeXtlPWV8fHZvaWQgMDtlPXZvaWQgMD09PWU/ZHQ6ZTtiLnNldEF0dHJpYnV0ZShcInNhbmRib3hcIixlLmpvaW4oXCIgXCIpKTt2YXIgZj1uZXcgZmUoYyxudWxsLGVlKTtiLnNyY2RvYz1mIGluc3RhbmNlb2YgZmUmJmYuY29uc3RydWN0b3I9PT1mZT9mLmo6XCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCJ9Y2F0Y2goZyl7Y2woNjU2LGcsITApfXB3KHRoaXMsYixhLGQpO3JldHVybiBifTt1dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgdnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kb2N1bWVudDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBuZXcgdHcoZixiLGMsZCxlKTtjYXNlIDI6cmV0dXJuIG5ldyBydyhmLGIsYyxkLGUpO2Nhc2UgMzpyZXR1cm4gbmV3IHV3KGYsYixjLGQsZSk7Y2FzZSA0OnJldHVybiBuZXcgcXcoZixiLGMsZCxlKTtkZWZhdWx0OnJldHVybiBuZXcgc3coZixiLGMsZCxlKX19O3ZhciB3dz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbixxLHcsdSxDLFEsTixILHFhLG9iKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5NPWI7dGhpcy5oYT1jO3RoaXMuTD1kO3RoaXMubT10aGlzLmwoKTt0aGlzLkE9dGhpcy5sKCk7dGhpcy5IPXRoaXMubCgpO3RoaXMuQz10aGlzLmwoKTt0aGlzLkc9dGhpcy5sKCk7dGhpcy5EPXRoaXMubCgpO3RoaXMuST10aGlzLmwoKTt0aGlzLlg9Vih0aGlzLGUpO0FyKHRoaXMubyxmKTt0aGlzLmRhPVYodGhpcyxnKTt0aGlzLlA9Vih0aGlzLGgpO3RoaXMuYmE9Vih0aGlzLGspO3RoaXMuYWE9Vih0aGlzLGwpO0FyKHRoaXMubyxvYik7dGhpcy5PPVcodGhpcyxtKTt0aGlzLlQ9Vyh0aGlzLG4pO3RoaXMuVj1XKHRoaXMscSk7dGhpcy5XPVcodGhpcyx3KTt0aGlzLmZhPVcodGhpcyx1KTt0aGlzLmdhPVcodGhpcyxDKTt0aGlzLlk9Vyh0aGlzLFEpO3RoaXMuSz1XKHRoaXMsTik7dGhpcy5lYT1XKHRoaXMsSCk7dGhpcy5rYT1XKHRoaXMscWEpfTtfLkood3csWSk7d3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4MH07d3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuZGEudmFsdWUsYz10aGlzLlAudmFsdWUsZD12dyh0aGlzLmFhLnZhbHVlLHRoaXMuc2xvdCx0aGlzLk0sdGhpcy5oYSxIcih0aGlzLk8pKTtfLndoKHRoaXMsZCk7dmFyIGU9dGhpcy5ULnZhbHVlLGY9bnVsbCE9PShhPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDptZihlLmdldEh0bWwoKSkpJiZ2b2lkIDAhPT1hP2E6dGhpcy5YLnZhbHVlO2lmKG51bGw9PWYpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGh0bWxcIik7dmFyIGc9dGhpcy5iYS52YWx1ZTt0aGlzLnNsb3QuST1mO3ZhciBoPW13KGQsZyx7dWE6ZixVYTpiLE1hOmMsVWM6dGhpcy5WLnZhbHVlLFpjOnRoaXMuVy52YWx1ZSxiYzp0aGlzLmZhLnZhbHVlLHFiOnRoaXMuZ2EudmFsdWUsSmI6ZSxpc0JhY2tmaWxsOnRoaXMuWS52YWx1ZSxPYjp0aGlzLksudmFsdWUsYWM6dGhpcy5lYS52YWx1ZSxjYzp0aGlzLmthLnZhbHVlfSk7ND09PWdrKHRoaXMuaGEuUlt0aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXSk/KGI9QXUodGhpcyx0aGlzLkwsXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7aWYoaC5jb250ZW50V2luZG93IT09ay5zb3VyY2UpdmFyIGw9ITE7ZWxzZSB0cnl7bD1cInJld2FyZGVkXCI9PT1KU09OLnBhcnNlKGsuZGF0YSkudHlwZX1jYXRjaChtKXtsPSExfXJldHVybiBsfSksVSh0aGlzLkMsYikpOkZyKHRoaXMuQyk7VSh0aGlzLm0saCk7VSh0aGlzLkEsZC5qKCkpO2Q9QXUodGhpcyx3aW5kb3csXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrLmRhdGEmJi0xIT09ay5kYXRhLmluZGV4T2YoXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIikmJmsuc291cmNlPT09aC5jb250ZW50V2luZG93fSk7VSh0aGlzLkcsZCk7ZD1BdSh0aGlzLHdpbmRvdyxcIm1lc3NhZ2VcIixmdW5jdGlvbihrKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGsuZGF0YSYmKDA9PWsuZGF0YS5sYXN0SW5kZXhPZihcInZpc2liaWxpdHktY2hhbmdlZC1cIiwwKXx8XCJpbXByZXNzaW9uLXZpZXdhYmxlXCI9PT1rLmRhdGEpJiZrLnNvdXJjZT09PWguY29udGVudFdpbmRvd30pO1UodGhpcy5ELGQpO1UodGhpcy5JLEF1KHRoaXMsaCxcImxvYWRcIikpO2Q9QXUodGhpcyx3aW5kb3csXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrLmRhdGEmJjA9PWsuZGF0YS5sYXN0SW5kZXhPZihcImFtcC1cIiwwKSYmIV8ueSgxMTEpJiZrLnNvdXJjZT09PWguY29udGVudFdpbmRvd30pO1UodGhpcy5ILGQpfTt2YXIgeHc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCl7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuc2xvdD1iO3RoaXMuY2E9Yzt0aGlzLm9hPWQ7dGhpcy5GPU9yKHRoaXMpO3RoaXMuQT1XKHRoaXMsZSk7dGhpcy5IPVYodGhpcyxmKTt0aGlzLkQ9Vih0aGlzLGcpO3RoaXMuRz1WKHRoaXMsaCk7dGhpcy5DPVcodGhpcyxrKTt0aGlzLkk9Vih0aGlzLGwpfTtfLkooeHcsWSk7eHcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5OX07eHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuSC52YWx1ZSxjPXRoaXMuRC52YWx1ZTtjLnN0eWxlLndpZHRoPVwiXCI7Yy5zdHlsZS5oZWlnaHQ9XCJcIjtpZihcImhlaWdodFwiIT09dGhpcy5BLnZhbHVlKXt2YXIgZD1udWxsIT09KGE9dGhpcy5DLnZhbHVlKSYmdm9pZCAwIT09YT9hOjAsZT10aGlzLkcudmFsdWUsZj10aGlzLkkudmFsdWUsZz17c2xvdDp0aGlzLnNsb3QsY2E6dGhpcy5jYX0saD0hMTtzd2l0Y2goZCl7Y2FzZSAxOmNhc2UgMjpoPXRoaXMubTt2YXIgaz10aGlzLm9hLGw9Zy5zbG90O3ZhciBtPWUud2lkdGgsbj1lLmhlaWdodCxxPTA7dmFyIHc9MDt2YXIgdT14YShnLmNhKTt1PV8uRih1KTtmb3IodmFyIEM9dS5uZXh0KCk7IUMuZG9uZTtDPXUubmV4dCgpKWlmKEM9Qy52YWx1ZSxBcnJheS5pc0FycmF5KEMpKXt2YXIgUT1fLkYoQyk7Qz1RLm5leHQoKS52YWx1ZTtRPVEubmV4dCgpLnZhbHVlO3E8QyYmKHE9Qyk7dzxRJiYodz1RKX13PVtxLHddO3E9d1swXTxtO249d1sxXTxuO3F8fG4/KHc9bStcInB4XCIsdT17XCJtYXgtaGVpZ2h0XCI6XCJub25lXCIsXCJtYXgtd2lkdGhcIjp3LHBhZGRpbmc6XCIwcHhcIix3aWR0aDp3fSxuJiYodS5oZWlnaHQ9XCJhdXRvXCIpLG51KGMsYix1KSxjPXt9LHEmJm0+cGFyc2VJbnQoZi53aWR0aCwxMCkmJihjLndpZHRoPXcsY1tcIm1heC13aWR0aFwiXT13KSxuJiYoYy5oZWlnaHQ9XCJhdXRvXCIsY1tcIm1heC1oZWlnaHRcIl09XCJub25lXCIpLHlnKGMpP2M9ITE6KGNbXCJwYWRkaW5nLVwiKyhcImx0clwiPT1mLmRpcmVjdGlvbj9cImxlZnRcIjpcInJpZ2h0XCIpXT1cIjBweFwiLF8uWGcoYixjKSxjPSEwKSk6Yz0hMTtiOnN3aXRjaChtPWUud2lkdGgsbj1oLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvd3x8Xy5yLGQpe2Nhc2UgMjpiPW91KGIsbixtLGYsayk7YnJlYWsgYjtjYXNlIDE6aWYoaz1iLnBhcmVudEVsZW1lbnQpaWYoZj1JayhrKSl7cT1mLndpZHRoO2Y9d2EocGEobCxuLmRvY3VtZW50KSxuKTtsPWYucG9zaXRpb247dT1wYXJzZUludChmLndpZHRoLDEwKXx8MDt3PXdhKGssbik7UT1cInJ0bFwiPT13LmRpcmVjdGlvbj9cIlJpZ2h0XCI6XCJMZWZ0XCI7az1RLnRvTG93ZXJDYXNlKCk7bj1cImFic29sdXRlXCI9PWw/MDpwYXJzZUludCh3W1wicGFkZGluZ1wiK1FdLDEwKTt3PXBhcnNlSW50KHdbXCJib3JkZXJcIitRK1wiV2lkdGhcIl0sMTApO0M9YmgoZik7UT0oQyYmQ1s0XXx8MCkqKFwiUmlnaHRcIj09UT8tMToxKTttPU1hdGgubWF4KE1hdGgucm91bmQoKHEtTWF0aC5tYXgodSxtKSkvMiksMCk7cT17fTt1PUMmJkNbM118fDE7aWYoMSE9KEMmJkNbMF18fDEpfHwxIT11KUNbMF09MSxDWzNdPTEscS50cmFuc2Zvcm09XCJtYXRyaXgoXCIrQy5qb2luKFwiLFwiKStcIilcIjt1PTA7c3dpdGNoKGwpe2Nhc2UgXCJmaXhlZFwiOmNhc2UgXCJyZWxhdGl2ZVwiOnU9cGFyc2VGbG9hdChmW2tdKXx8MDticmVhaztjYXNlIFwiYWJzb2x1dGVcIjpxW2tdPVwiMFwifXFbXCJtYXJnaW4tXCIra109bS1uLXctdS1RK1wicHhcIjtfLlhnKGIscSk7Yj0hMH1lbHNlIGI9ITE7ZWxzZSBiPSExO2JyZWFrIGI7ZGVmYXVsdDpiPSExfWN8fGI/KHF1KGgsZyxkLGUud2lkdGgsZS5oZWlnaHQsXCJncHRfc2xvdGV4cFwiKSxoPSEwKTpoPSExO2JyZWFrO2Nhc2UgMzpoPXRoaXMubSxtPXRoaXMub2EsbD1lLndpZHRoLGs9ZS5oZWlnaHQsaz49KHBhcnNlSW50KGYuaGVpZ2h0LDEwKXx8MCl8fFwibm9uZVwiPT1mLmRpc3BsYXl8fFwiaGlkZGVuXCI9PWYudmlzaWJpbGl0eXx8IW18fC0xMjI0NTkzMz09PW0ud2lkdGh8fGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tPD1tLmhlaWdodD9oPSExOihmPXtoZWlnaHQ6aytcInB4XCJ9LG51KGMsYixmKSxfLlhnKGIsZikscXUoaCxnLDMsbCxrLFwiZ3B0X3Nsb3RyZWRcIiksaD0hMCl9IWgmJl8ueSgyMTIpJiZxdSh0aGlzLm0sZywwLGUud2lkdGgsZS5oZWlnaHQsXCJncHRfcGdicmtcIik7VGIodGhpcy5jYSx0aGlzLkEudmFsdWUsZSxkKX10aGlzLkYubm90aWZ5KCl9O3ZhciB5dz1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5tPW51bGw7dGhpcy5HPVcodGhpcyxhKTt0aGlzLkQ9Vyh0aGlzLGIpO3RoaXMuQz1XKHRoaXMsYyk7dGhpcy5BPVYodGhpcyxkKX07Xy5KKHl3LFkpO3l3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MTd9O3l3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuRC52YWx1ZSxjPXRoaXMuRy52YWx1ZTtudWxsPT10aGlzLkMudmFsdWV8fGJ8fG51bGw9PWN8fChiPUNoKHRoaXMuQS52YWx1ZSxHKDUwNCxmdW5jdGlvbihkKXtcImltcHJlc3Npb24tdmlld2FibGVcIj09PWQuZGF0YT9QbyhjLE1vLG51bGwse21iOiEwfSk6MD09PWQuZGF0YS5pbmRleE9mKFwidmlzaWJpbGl0eS1jaGFuZ2VkLVwiKSYmKGQ9L152aXNpYmlsaXR5LWNoYW5nZWQtKFxcZCsoXFwuXFxkKyk/KSQvLmV4ZWMoZC5kYXRhKSkmJihkPU51bWJlcihkWzFdKSwwPD1kJiYxPj1kJiYoMCE9PWQmJjEhPT1kfHxkIT09YS5tKSYmKG51bGwhPT1hLm18fDA8ZCkmJihhLm09ZCxQbyhjLE1vLG51bGwse21iOiExLGluVmlld1BlcmNlbnRhZ2U6KygxMDAqZCkudG9GaXhlZCgyKX0pKSl9KSksXy5SKHRoaXMsYikpfTt2YXIgenc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCl7WS5jYWxsKHRoaXMpO3RoaXMuSz1XKHRoaXMsYSk7dGhpcy5NPVcodGhpcyxiKTt0aGlzLkk9Vyh0aGlzLGMpO3RoaXMuSD1XKHRoaXMsZCk7dGhpcy5PPVcodGhpcyxlKTt0aGlzLkE9Vih0aGlzLGYpO3RoaXMubT1WKHRoaXMsZyk7dGhpcy5DPVYodGhpcyxoKTt0aGlzLkQ9Vih0aGlzLGspO3RoaXMuRz1WKHRoaXMsbCl9O18uSih6dyxZKTt6dy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzE4fTt6dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYoQXcodGhpcykpe3ZhciBiPXRoaXMuQy52YWx1ZSxjPXRoaXMuQS52YWx1ZSxkPXRoaXMubS52YWx1ZTtfLmNpKGQsXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIik7Xy5jaShkLFwibWluLXdpZHRoXCIsXCIxMDAlXCIpO2I/KF8uY2koYyxcIm1pbi13aWR0aFwiLFwiMTAwJVwiKSxiPUNoKHRoaXMuRy52YWx1ZSxHKDUwNSxmdW5jdGlvbigpe3ZhciBlPWMuY29udGVudERvY3VtZW50O2U/QncoYSxjLGQsZS5ib2R5Lm9mZnNldFdpZHRoLGUuYm9keS5vZmZzZXRIZWlnaHQpOmtiKFwiZ3B0X2FtcF9mbHVpZF9ub19pZnJhbWVkb2NcIixmdW5jdGlvbihmKXtsYihmKX0pfSkpLF8uUih0aGlzLGIpKTooYj1DaCh0aGlzLkQudmFsdWUsRyg1MDQsZnVuY3Rpb24oZSl7dmFyIGY9YS5BLnZhbHVlLGc9YS5tLnZhbHVlO2lmKC0xIT09ZS5kYXRhLmluZGV4T2YoXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIikpdHJ5e3ZhciBoPUpTT04ucGFyc2UoZS5kYXRhKSxrPWEuTy52YWx1ZTtpZihudWxsIT1rJiZcImNyZWF0aXZlX2dlb21ldHJ5X3VwZGF0ZVwiPT09aC5zJiZoLmM9PT1cInNmY2hhbm5lbFwiK2smJmgucCl7dmFyIGw9SlNPTi5wYXJzZShoLnApO2wudWlkPT09ayYmXCJudW1iZXJcIj09PXR5cGVvZiBsLndpZHRoJiZcIm51bWJlclwiPT09dHlwZW9mIGwuaGVpZ2h0JiZCdyhhLGYsZyxsLndpZHRoLGwuaGVpZ2h0KX19Y2F0Y2gobSl7fX0pKSxfLlIodGhpcyxiKSl9fTt2YXIgQXc9ZnVuY3Rpb24oYSl7dmFyIGI9IWEuQy52YWx1ZSYmIShfLnkoMjY3KXx8Xy55KDI2Myl8fF8ueSgyODYpKTtyZXR1cm4gbnVsbD09YS5ILnZhbHVlfHxhLkkudmFsdWV8fFwiaGVpZ2h0XCIhPT1hLk0udmFsdWV8fGI/ITE6ITB9LEJ3PWZ1bmN0aW9uKGEsYixjLGQsZSl7Yi5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixTdHJpbmcoZSkpO2Iuc2V0QXR0cmlidXRlKFwid2lkdGhcIixTdHJpbmcoZCkpO18uY2koYyxcInZpc2liaWxpdHlcIixcInZpc2libGVcIik7Q3coYSxlLGQpfSxDdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5LLnZhbHVlO2tiKFwiZ3B0X2ZsdWlkX3N6XCIsZnVuY3Rpb24oZSl7RShlLFwic3pcIixjK1wieFwiK2IpO0UoZSxcInFxaWRcIixkfHxcIlwiKTtsYihlKTtFKGUsXCJmZlwiLDEpfSl9O3ZhciBEdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLm09Vyh0aGlzLGIpO3RoaXMuQT1WKHRoaXMsYyk7dGhpcy5DPVYodGhpcyxkKTt0aGlzLkQ9Vih0aGlzLGUpfTtfLkooRHcsWSk7RHcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4NX07RHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiO2lmKCFfLnkoMTExKSYmIXRoaXMuQy52YWx1ZSl7dmFyIGM9dGhpcy5ELnZhbHVlLGQ9dGhpcy5BLnZhbHVlLGU9bnVsbCE9PShiPW51bGw9PT0oYT10aGlzLm0udmFsdWUpfHx2b2lkIDA9PT1hP3ZvaWQgMDpCKGEsMSkpJiZ2b2lkIDAhPT1iP2I6XCJcIixmPVFoKHRoaXMuTCxkLGUsYyk7Xy5SKHRoaXMsZnVuY3Rpb24oKXt0cnl7ZigpfWNhdGNoKGcpe2JsKDQ5MyxnKX19KX19O3ZhciBFdz0vKDxoZWFkKFxccytbXj5dKik/PikvaSxGdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLnVhPWE7dGhpcy5tPXRoaXMubCgpO3RoaXMuQT1XKHRoaXMsYik7dGhpcy5DPVcodGhpcyxjKTt0aGlzLkQ9Vyh0aGlzLGQpO3RoaXMuRz1XKHRoaXMsZSl9O18uSihGdyxZKTtGdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjY1fTtGdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMudWF8fFwiXCI7aWYoIUprKHRoaXMuQS52YWx1ZSl8fEhyKHRoaXMuQykpVSh0aGlzLm0sYSk7ZWxzZXt2YXIgYj0hIXRoaXMuRC52YWx1ZSxjPSEhdGhpcy5HLnZhbHVlO2N8fCRkKCl8fChhPWEucmVwbGFjZShFdyxfLnkoMjIzKT9cIiQxPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVNlY3VyaXR5LVBvbGljeSBjb250ZW50PVxcXCJzY3JpcHQtc3JjIGh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnLztvYmplY3Qtc3JjICdub25lJztjaGlsZC1zcmMgYmxvYjo7ZnJhbWUtc3JjIGh0dHBzOi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9iNGEvYjRhLXJ1bm5lci5odG1sXFxcIj5cIjpcIiQxPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVNlY3VyaXR5LVBvbGljeSBjb250ZW50PVxcXCJzY3JpcHQtc3JjIGh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnLztvYmplY3Qtc3JjICdub25lJztjaGlsZC1zcmMgYmxvYjo7ZnJhbWUtc3JjICdub25lJ1xcXCI+XCIpKTtiJiYhYyYmKGE9YS5yZXBsYWNlKEV3LCckMTxtZXRhIG5hbWU9XCJyZWZlcnJlclwiIGNvbnRlbnQ9XCJvcmlnaW5cIj4nKSk7VSh0aGlzLm0sYSl9fTt2YXIgR3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMuc2xvdElkPWI7dGhpcy5tPWM7dGhpcy5DPWQ7dGhpcy56Yj1nO3RoaXMuRD1XKHRoaXMsZSk7dGhpcy5BPVYodGhpcyxmKX07Xy5KKEd3LFkpO0d3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODZ9O0d3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGMsZD10aGlzLkQudmFsdWUsZT1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6QihkLDEpLGY9bnVsbD09PWR8fHZvaWQgMD09PWQ/dm9pZCAwOnBmKGQpLGc9bnVsbCE9PShiPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDpCKGQsMykpJiZ2b2lkIDAhPT1iP2I6MDtkPW51bGwhPT0oYz1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6eChkLDUpKSYmdm9pZCAwIT09Yz9jOiExO2UmJmYmJihlPUF0KHtMOnRoaXMuTCxlbGVtZW50OnRoaXMuQS52YWx1ZSxBZDowPT09dGhpcy5tLEhjOmcsRGQ6ZSxIYjpmdW5jdGlvbigpe1FvKGEuQyx6byxhLnNsb3RJZCl9LG9wdGlvbnM6e3RocmVzaG9sZDpmfSx4YzpkLFRjOmZ1bmN0aW9uKGgpe2NsKDYxNSxoLCEwKX0semI6dGhpcy56Yn0pLF8uUih0aGlzLGUpKX07dmFyIEh3PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLmZvcm1hdD1hO3RoaXMuQz1iO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vyh0aGlzLGMpO3RoaXMuQT1XKHRoaXMsZCl9O18uSihIdyxZKTtIdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzIwfTtIdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuQS52YWx1ZTtpZihudWxsPT1hKUZyKHRoaXMuRik7ZWxzZXt2YXIgYj1NYXRoLnJvdW5kKC4zKnRoaXMuQyk7MiE9PXRoaXMuZm9ybWF0JiYzIT09dGhpcy5mb3JtYXR8fCFIcih0aGlzLm0pfHwhb2YodGhpcy5tLnZhbHVlKXx8MD49Ynx8YTw9Yj9VKHRoaXMuRixhKTpVKHRoaXMuRixiKX19O3ZhciBJdz1mdW5jdGlvbihhLGIsYyxkLGUsZil7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuTj1iO3RoaXMubT1kO3RoaXMuRj10aGlzLmwoKTt0aGlzLkE9Mj09PWN8fDM9PT1jO3RoaXMuQz1WKHRoaXMsZSk7dGhpcy5EPVYodGhpcyxmKX07Xy5KKEl3LFkpO0l3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NzR9O0l3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5DLnZhbHVlLGI9VmsodGhpcy5zbG90LmdldFNsb3RJZCgpKSxjPWlnKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT1ifSksZD1jP2M6UXYodGhpcy5tLGEsYiwhIXgodGhpcy5OLDE1KSk7dGhpcy5ELnZhbHVlJiYheCh0aGlzLk4sMTUpJiYoZC5zdHlsZS5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIpO3RoaXMuQT9tbyh0aGlzLnNsb3QsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGQpfSk6Xy5SKHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGQpfSk7VSh0aGlzLkYsZCl9O3ZhciBKdz1mdW5jdGlvbihhLGIpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVYodGhpcyxiKX07Xy5KKEp3LFkpO0p3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTh9O0p3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9d2EodGhpcy5tLnZhbHVlLHRoaXMuTCk7bnVsbD09YT9Gcih0aGlzLkYpOlUodGhpcy5GLGEpfTt2YXIgS3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuZm9ybWF0PWI7dGhpcy5zbG90PWM7dGhpcy5MPWQ7dGhpcy5GPU9yKHRoaXMpO3RoaXMuQT1XKHRoaXMsZSk7dGhpcy5DPVYodGhpcyxmKTt0aGlzLkQ9Vih0aGlzLGcpfTtfLkooS3csWSk7S3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4Mn07S3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBiKCl7dmFyIGM9dGhpcyxkLGUsZixnLGgsaztyZXR1cm4gRGEoYixmdW5jdGlvbihsKXtpZigxPT1sLmopcmV0dXJuIGQ9YywoMj09PWMuZm9ybWF0fHwzPT09Yy5mb3JtYXQpJiZIcihjLkEpJiZvZihjLkEudmFsdWUpP0VhKGwsXy5jdy5CKCkubG9hZChfLiR2KSwyKTpsLnJldHVybigpO2U9bC5vO2Y9ZS5ZYztpZihjLmxhKXJldHVybiBsLnJldHVybigpO2c9Xy5ZbyhjLm0sYy5zbG90KTtoPWMuRC52YWx1ZTtrPWMuQy52YWx1ZTtfLlhnKGsse1wibWF4LWhlaWdodFwiOlwiMzB2aFwiLG92ZXJmbG93OlwiaGlkZGVuXCJ9KTtMdz9Mdy5IZChrKTooTHc9bmV3IGYoYy5mb3JtYXQsayxjLkwsaCxjLm0sYy5zbG90KSxMdy53ZCgpLG1vKGMuc2xvdCxmdW5jdGlvbigpe0x3JiYoTHcuemEoKSxMdz1udWxsKTtnJiZfLiRvKGQubSxkLnNsb3QpfSkpO18uUihjLGZ1bmN0aW9uKCl7cmV0dXJuIF8uZmcoayl9KTtjLkYubm90aWZ5KCk7bC5qPTB9KX0pfTt2YXIgTHc9bnVsbDt2YXIgTXc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5oYT1iO3RoaXMuQz1jO3RoaXMuRz1kO3RoaXMuVmE9ZTt0aGlzLkE9Zjt0aGlzLm09Zzt0aGlzLkQ9Vyh0aGlzLGgpfTtfLkooTXcsWSk7TXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDc1OH07TXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiPXBhKHRoaXMuc2xvdCx0aGlzLm0pO2ImJmIuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIixudWxsIT09KGE9dGhpcy5ELnZhbHVlKSYmdm9pZCAwIT09YT9hOlwiXCIpO1lpKHRoaXMuVmEsXCI1XCIsdGhpcy5zbG90LmwpO2E9dGhpcy5zbG90LmdldFNsb3RJZCgpO18ueSg0MTIpP1FvKHRoaXMuQSxDbyxhKTp0aGlzLnNsb3QuVGEoKTtiPV8ueSgxMjMpO3ZhciBjO2lmKF8uWW8odGhpcy5DLHRoaXMuc2xvdCkpe3ZhciBkPXRoaXMuaGEsZT1kLk47ZD1kLlJbdGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKV07YiYmKHRoaXMuRyYmUmIodGhpcy5zbG90LHdpbmRvdyx0aGlzLm0pLHJvKHRoaXMuc2xvdCkpOyhifHwhdW8odGhpcy5zbG90LHRoaXMubSkpJiYobnVsbCE9PShjPXgoZCwxMCkpJiZ2b2lkIDAhPT1jP2M6eChlLDExKSkmJiFfLnkoMzkwKSYmUmIodGhpcy5zbG90LHdpbmRvdyx0aGlzLm0pfVFvKHRoaXMuQSxQYixhLHtpc0VtcHR5OiEwLHNsb3RDb250ZW50Q2hhbmdlZDpifSl9O3ZhciBOdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLm09Vyh0aGlzLGIpO3RoaXMuQz1WKHRoaXMsYyk7dGhpcy5BPVYodGhpcyxkKTt0aGlzLkQ9Vih0aGlzLGUpfTtfLkooTncsWSk7TncucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcyMX07TncucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYyxkLGU9dGhpcy5tLnZhbHVlLGY9bnVsbD09PShiPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDpCKGUsMSkpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnRvVXBwZXJDYXNlKCk7ZT1udWxsPT09KGM9bnVsbD09PWV8fHZvaWQgMD09PWU/dm9pZCAwOkIoZSwyKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMudG9VcHBlckNhc2UoKTtpZihmJiZlKXt2YXIgZz10aGlzLkMudmFsdWUsaD10aGlzLkEudmFsdWUsaz10aGlzLkQudmFsdWUsbD1rLnN0eWxlLmhlaWdodCxtPWsuc3R5bGUud2lkdGgsbj1rLnN0eWxlLmRpc3BsYXkscT1rLnN0eWxlLnBvc2l0aW9uLHc9bWgoZy5pZCtcIl90b3BcIixmKSx1PW1oKGcuaWQrXCJfYm90dG9tXCIsZSk7Xy5YZyh1LHtwb3NpdGlvbjpcInJlbGF0aXZlXCIsdG9wOlwiY2FsYygxMDB2aCAtIDQ4cHgpXCJ9KTtrLmFwcGVuZENoaWxkKHcpO2suYXBwZW5kQ2hpbGQodSk7Xy5YZyhoLHtwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOlwiMjRweFwiLGNsaXA6XCJyZWN0KDAsIGF1dG8sIGF1dG8sIDApXCIsd2lkdGg6XCIxMDB2d1wiLGhlaWdodDpcImNhbGMoMTAwdmggLSA0OHB4KVwifSk7Xy5YZyhnLHtwb3NpdGlvbjpcImZpeGVkXCIsdG9wOlwiMFwiLGhlaWdodDpcIjEwMHZoXCJ9KTtfLlhnKGsse3Bvc2l0aW9uOlwicmVsYXRpdmVcIixkaXNwbGF5OihudWxsPT09KGQ9dGhpcy5MLnNjcmVlbi5vcmllbnRhdGlvbil8fHZvaWQgMD09PWQ/MDpkLmFuZ2xlKT9cIm5vbmVcIjpcImJsb2NrXCIsd2lkdGg6XCIxMDB2d1wiLGhlaWdodDpcIjEwMHZoXCJ9KTt6dSh0aGlzLDcyMix0aGlzLkwsXCJvcmllbnRhdGlvbmNoYW5nZVwiLGZ1bmN0aW9uKCl7dmFyIEM7KG51bGw9PT0oQz1hLkwuc2NyZWVuLm9yaWVudGF0aW9uKXx8dm9pZCAwPT09Qz8wOkMuYW5nbGUpP18uWGcoayx7ZGlzcGxheTpcIm5vbmVcIn0pOl8uWGcoayx7ZGlzcGxheTpcImJsb2NrXCJ9KX0pO18uUih0aGlzLGZ1bmN0aW9uKCl7Xy5mZyh3KTtfLmZnKHUpO2suc3R5bGUucG9zaXRpb249cTtrLnN0eWxlLmhlaWdodD1sO2suc3R5bGUud2lkdGg9bTtrLnN0eWxlLmRpc3BsYXk9bn0pfX07dmFyIE93PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5mb3JtYXQ9YTt0aGlzLm09Yjt0aGlzLkY9T3IodGhpcyk7dGhpcy5BPVcodGhpcyxjKTt0aGlzLkQ9Vih0aGlzLGQpO3RoaXMuRz1WKHRoaXMsZSk7dGhpcy5DPVcodGhpcyxmKX07Xy5KKE93LFkpO093LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODN9O093LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYigpe3ZhciBjPXRoaXMsZCxlLGYsZyxoLGssbCxtLG47cmV0dXJuIERhKGIsZnVuY3Rpb24ocSl7aWYoMT09cS5qKXtkPWMuQS52YWx1ZTtpZighZHx8NSE9PWMuZm9ybWF0KXJldHVybiBxLnJldHVybigpO2U9Yy5HLnZhbHVlO2Y9Yy5ELnZhbHVlO3JldHVybiBFYShxLF8uY3cuQigpLmxvYWQoXy4kdiksMil9Zz1xLm87aD1nLmJkO2lmKGMubGEpcmV0dXJuIHEucmV0dXJuKCk7az1uZXcgXy51cjtsPW5ldyBoKHdpbmRvdyxmLGUsayxfLnkoNDAxKSYmYy5tLndpZHRoPmMubS5oZWlnaHQsYy5DLnZhbHVlKTtfLndoKGMsbCk7bC5MYygpO209dWYoZCxWbSwxMyk7Zm9yKHZhciB3PXt9LHU9Xy5GKG0pLEM9dS5uZXh0KCk7IUMuZG9uZTtDPXUubmV4dCgpKUM9Qy52YWx1ZSx3W0IoQywxKV09QihDLDIpO249dztsLkFjKG4pO2MuRi5ub3RpZnkoKTtxLmo9MH0pfSl9O3ZhciBQdz1mdW5jdGlvbigpe1kuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuRj1Pcih0aGlzKX07Xy5KKFB3LFkpO1B3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjN9O1B3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYigpe3ZhciBjPXRoaXM7cmV0dXJuIERhKGIsZnVuY3Rpb24oZCl7aWYoMT09ZC5qKXt2YXIgZT1Rdz8wOl8ucmEoMTYpLGY9Xy5yYSgxNyk7ZT1NYXRoLm1heChlLGYpOzA8ZSYmKFF3PSEwLEN1KGUpKTtyZXR1cm4gRWEoZCxSdyhjKSwyKX1jLkYubm90aWZ5KCk7ZC5qPTB9KX0pfTt2YXIgUnc9ZnVuY3Rpb24oYSl7cmV0dXJuIENhKGEsZnVuY3Rpb24gYygpe3ZhciBkO3JldHVybiBEYShjLGZ1bmN0aW9uKGUpe2Q9Xy5yYSgxOCk7MDxkP2U9RWEoZSxVYihkKSwwKTpfLnkoMTY5KSYmbmwoMik/ZT1FYShlLFViKDApLDApOihlLmo9MCxlPXZvaWQgMCk7cmV0dXJuIGV9KX0pfSxRdz0hMTt2YXIgU3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtZLmNhbGwodGhpcyk7dGhpcy5BPWE7dGhpcy5vYT1iO3RoaXMubT1udWxsO3RoaXMuRj10aGlzLmwoKTtBcih0aGlzLm8sYyk7dGhpcy5EPVYodGhpcyxkKTt0aGlzLkg9Vih0aGlzLGUpO3RoaXMuRz1XKHRoaXMsZik7dGhpcy5DPVcodGhpcyxnKTt0aGlzLkk9Vyh0aGlzLGgpfTtfLkooU3csWSk7U3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2Nn07U3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYz1uZXcgTmo7SHIodGhpcy5DKSYmKEQoYywyLHRoaXMuQy52YWx1ZSksRChjLDMsMSkpO3RoaXMuQSYmKGM9WXYoW3RoaXMuQSxjXSkpO2M9WHYoYyk7dmFyIGQ9bnVsbCE9PShiPXRoaXMuSS52YWx1ZSkmJnZvaWQgMCE9PWI/Yjp2b2lkIDA7aWYobnVsbD09Y3x8MD5jfHwwPT09ZClVKHRoaXMuRiwhMSk7ZWxzZXt2YXIgZT10aGlzLkQudmFsdWUsZj10aGlzLkgudmFsdWU7bnVsbCE9ZiYmT2soZix0aGlzLm9hLGMvMTAwKT8oa2IoXCJncHRfZXJcIixmdW5jdGlvbihnKXt2YXIgaDtFKGcsXCJxcWlkXCIsbnVsbCE9PShoPWEuRy52YWx1ZSkmJnZvaWQgMCE9PWg/aDpcIlwiKX0se3ZhOl8ucmEoMjApfSksVSh0aGlzLkYsITEpKTpfLnkoMTQ1KT9VKHRoaXMuRiwhMSk6VHcodGhpcyxjLGQsZSl9fTt2YXIgVHc9ZnVuY3Rpb24oYSxiLGMsZCl7c2EoZCk/KGEubT1WYihiK1wiJVwiLEcoMjkxLGZ1bmN0aW9uKGUsZil7ZT1fLkYoZSk7Zm9yKHZhciBnPWUubmV4dCgpOyFnLmRvbmU7Zz1lLm5leHQoKSlpZihnPWcudmFsdWUsISgwPj1nLmludGVyc2VjdGlvblJhdGlvKSl7Zi51bm9ic2VydmUoZy50YXJnZXQpO1UoYS5GLCEwKTticmVha319KSksbnVsbCE9YyYmc2V0VGltZW91dChmdW5jdGlvbigpe1UoYS5GLCEwKTthLm0mJmEubS5kaXNjb25uZWN0KCl9LGMpLGEubS5vYnNlcnZlKGQpLF8uUihhLGZ1bmN0aW9uKCl7YS5tJiZhLm0uZGlzY29ubmVjdCgpfSkpOlUoYS5GLCExKX07dmFyIFV3PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMubT1iO3RoaXMuRj10aGlzLmwoKX07Xy5KKFV3LFkpO1V3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MDZ9O1V3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9TmEodGhpcy5tLHRoaXMuTCk7YT9VKHRoaXMuRixhKTpGcih0aGlzLkYpfTt2YXIgVnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtZLmNhbGwodGhpcyk7dGhpcy5BPWE7dGhpcy5tPWI7dGhpcy5DPVcodGhpcyxjKTt0aGlzLkQ9Vih0aGlzLGQpO3RoaXMuRz1XKHRoaXMsZSl9O18uSihWdyxZKTtWdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzEzfTtWdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuRy52YWx1ZTtpZighSmsodGhpcy5DLnZhbHVlKSYmYSYmdGhpcy5tLmdldE9zZUlkKCkpe3ZhciBiPXRoaXMuRC52YWx1ZSxjPUN0KHRoaXMubSk7Yy5yZWdpc3RlckFkQmxvY2soXCI/ZWlkPVwiK2tqLkIoKS5qKCkuam9pbihcIixcIikrXCImYWRrPVwiK3RoaXMuQSwzLFwibGRqaFwiLGIsMCwwLEcodGhpcy5pZCgpLGZ1bmN0aW9uKGQsZSl7MDw9ZSYmUG8oYSxNbyxudWxsLHttYjpkLGluVmlld1BlcmNlbnRhZ2U6ZX0pfSkpO18uUih0aGlzLGZ1bmN0aW9uKCl7dHJ5e2MudW5sb2FkQWRCbG9jayhiLCExLF8ueSgxMDEpKX1jYXRjaChkKXt9fSl9fTt2YXIgV3c9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMub2E9Yjt0aGlzLm09bmV3IFVmO3RoaXMuRj1Pcih0aGlzKTtBcih0aGlzLm8sYyk7dGhpcy5BPVcodGhpcyxkKX07Xy5KKFd3LFkpO1d3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjR9O1d3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZihfLnkoMjApKXt2YXIgYj10aGlzLm0uaixjPXduKGIpLGQ9ZnVuY3Rpb24oKXt2YXIgZj1hLkEudmFsdWU7cmV0dXJuIG51bGwhPWYmJk9rKGYsYS5vYSwwKX07aWYoeG4oYikmJmMmJigwPHRoaXMuc2xvdC5BLTF8fCFkKCkpJiZjKXt2YXIgZT16dSh0aGlzLDMyNCxiLGMsZnVuY3Rpb24oKXt4bihiKXx8KGUmJmUoKSxhLkYubm90aWZ5KCkpfSk7aWYoZSlyZXR1cm59fXRoaXMuRi5ub3RpZnkoKX07dmFyIFl3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuKXtlPXZvaWQgMD09PWU/bmV3IGRuOmU7Zj12b2lkIDA9PT1mP1wiXCI6ZjtnPXZvaWQgMD09PWc/XCJcIjpnO2g9dm9pZCAwPT09aD8tMTpoO2s9dm9pZCAwPT09az9uZXcgdGs6aztsPXZvaWQgMD09PWw/bmV3IEk6bDttPXZvaWQgMD09PW0/bmV3IG5wOm07bj12b2lkIDA9PT1uP25ldyBkcjpuO1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLmhhPWI7dGhpcy5DPWM7dGhpcy5zYT1kO3RoaXMuQmE9ZTt0aGlzLmthPWY7dGhpcy53YT1nO3RoaXMuQ2E9aDt0aGlzLlZhPWs7dGhpcy5BYT1sO3RoaXMuUD1tO3RoaXMudGE9bjt0aGlzLmdhPVtdO1h3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw0KX0pO3RoaXMuWD1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsNil9KTt0aGlzLmZhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw3KX0pO3RoaXMucGE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDgpfSk7dGhpcy5HPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwxMCl9KTtYdyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMTUpfSk7dGhpcy5EPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwzNCl9KTt0aGlzLm09WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLENmLDQzKX0pO3RoaXMuQT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsZW4sNDEpfSk7dGhpcy5IPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSw5KX0pO3RoaXMuTT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsMTIpfSk7dGhpcy5UPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxCZiw1MCl9KTt0aGlzLlc9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLFptLDQ4KX0pO3RoaXMuST1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsWG0sMzkpfSk7dGhpcy5WPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwzNil9KTt0aGlzLk89WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDEzKX0pO3RoaXMuYWE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDMpfSk7dGhpcy5LPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw0OSl9KTt0aGlzLmRhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwyOSl9KTt0aGlzLmVhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwzMCl9KTt0aGlzLlk9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLGFuLDUxKX0pO3RoaXMuYmE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDUyKX0pfTtfLkooWXcsWSk7dmFyIFh3PWZ1bmN0aW9uKGEsYil7dmFyIGM9WS5wcm90b3R5cGUubC5jYWxsKGEpO2EuZ2EucHVzaCh7RjpjLFZjOmJ9KTtyZXR1cm4gY307WXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcwMH07WXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtpZihfLnkoNDA0KSl7dmFyIGE9dGhpcy5rYTt2YXIgYj10aGlzLnNsb3Q7dGhpcy5pZCgpO3ZhciBjPUpTT04ucGFyc2UoYSk7Yz1cIm9iamVjdFwiPT09dHlwZW9mIGM/YzpudWxsO3ZhciBkPUJnKGMsaWQpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZHx8bnVsbD09PWN8fHZvaWQgMD09PWN8fCFjW2RdKXRocm93IEVycm9yKFwiaW52YWxpZCBhZCB1bml0IHBhdGg6IFwiK2QpO2lmKCFiKXRocm93IEVycm9yKFwibWlzc2luZyBzbG90OiBcIitkKTtiPWNbZF07aWYoQXJyYXkuaXNBcnJheShiKSlhPW5ldyBkbihiLnNsaWNlKCkpO2Vsc2UgdGhyb3cgRXJyb3IoXCJkaWN0aW9uYXJ5IG5vdCBhbiBhcnJheTogXCIrYSk7b28odGhpcy5zbG90KTtiPXRoaXMuc2xvdC5sO2M9QihhLDM0KXx8XCJcIjt0aGlzLlZhLmomJihfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXM9Xy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zfHx7fSxfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXNbXCJxcWlkLlwiK2JdPWMpO0IoYSwyNykuZm9yRWFjaChtaik7bmooNCk7WncodGhpcyxhKTskdyh0aGlzLGEpfWVsc2UgJHcodGhpcyx0aGlzLkJhKX07dmFyICR3PWZ1bmN0aW9uKGEsYil7YT1fLkYoYS5nYSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTtjPWQuRjtkPWQuVmM7ZD1kKGIpO251bGwhPWQ/VShjLGQpOkZyKGMpfX0sWnc9ZnVuY3Rpb24oYSxiKXtkcChhLkMsYS5zbG90LGEud2EpO3ZhciBjPWEuaGEuUlthLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXTtjJiYodG8oYS5zbG90LGIpLHFvKGEuc2xvdCxCKGIsMzMpKSxRbyhhLkFhLEpvLGEuc2xvdC5nZXRTbG90SWQoKSxiKSxudWxsIT1CKGIsMjMpJiZCKGIsMjMpLmZvckVhY2goZnVuY3Rpb24oZCl7b3AoYS5QLGQpO3ZhciBlPWEuUCxmPWEuc2xvdDtlLmpbZF18fChlLmpbZF09W10pO2UualtkXS5wdXNoKGYpfSksdWYoYiwkbSwxNCkubGVuZ3RoJiZlcihhLnRhLHVmKGIsJG0sMTQpWzBdLGEuc2EpLF8ueSg0MjIpP1RrKGMsTyhiLEJmLDUwKSwhIXgoYiwxMSkpJiYoXy5abyhhLkMsYS5zbG90KSxTayhPKGIsQmYsNTApKSYmbW8oYS5zbG90LGZ1bmN0aW9uKCl7Xy4kbyhhLkMsYS5zbG90KX0pKTooND09Z2soYyl8fDU9PT1nayhjKXx8eChiLDExKSkmJl8uWm8oYS5DLGEuc2xvdCkseChiLDgpfHxqbyhhLnNsb3QsYS5DYSkpfTt2YXIgYXg9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1XKHRoaXMsYSk7dGhpcy5BPVYodGhpcyxiKX07Xy5KKGF4LFkpO2F4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3NjJ9O2F4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9SHIodGhpcy5tKTthPXRoaXMuQS52YWx1ZT9fLnkoMjYzKSYmRGsoKSYmYT8yOl8ueSgyNjcpJiZDaygpJiZhPzM6Xy55KDI4NikmJkRrKCkmJmE/NDoxOjA7VSh0aGlzLkYsYSl9O3ZhciBieD1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMuaGE9Yjt0aGlzLm09Yzt0aGlzLkE9ZDtBcih0aGlzLm8sZSl9O18uSihieCxZKTtieC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk2fTtieC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7a3codGhpcyx0aGlzLm0sXCJjbG9zZWRcIixmdW5jdGlvbigpe3JldHVybiB2b2lkIGN4KGEpfSk7Xy55KDQxNil8fGt3KHRoaXMsdGhpcy5tLFwiY2FuY2VsZWRcIixmdW5jdGlvbigpe3JldHVybiB2b2lkIGN4KGEpfSl9O3ZhciBjeD1mdW5jdGlvbihhKXtRbyhhLkEsR28sYS5zbG90SWQsYS5oYSk7YS56YSgpfTt2YXIgZHg9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5BPWI7dGhpcy5tPWM7QXIodGhpcy5vLGQpfTtfLkooZHgsWSk7ZHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5N307ZHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2t3KHRoaXMsdGhpcy5BLFwiY29tcGxldGVkXCIsZnVuY3Rpb24oKXtRbyhhLm0sSG8sYS5zbG90SWQpO2EuemEoKX0pfTt2YXIgZXg9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5BPWI7dGhpcy5tPWM7QXIodGhpcy5vLGQpfTtfLkooZXgsWSk7ZXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5NH07ZXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9dGhpcy5zbG90SWQsYz10aGlzLm07a3codGhpcyx0aGlzLkEsXCJncmFudGVkXCIsZnVuY3Rpb24oZCl7dmFyIGU7UW8oYyxGbyxiLG51bGwhPT0oZT1kLnBheWxvYWQpJiZ2b2lkIDAhPT1lP2U6bnVsbCk7YS56YSgpfSl9O3ZhciBmeD17d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGxlZnQ6XCIwXCIsdG9wOlwiMFwifSxneD1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5VYT1iO3RoaXMuTD1jO3RoaXMuRj1Pcih0aGlzKTtBcih0aGlzLm8sZCl9O18uSihneCxZKTtneC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjkzfTtneC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1fLnkoMzc0KSYmMD09PVJnKCk/XCJyZ2JhKDEsMSwxLDAuNSlcIjpcIndoaXRlXCI7Xy5YZyh0aGlzLlVhLF8uQShPYmplY3QsXCJhc3NpZ25cIikuY2FsbChPYmplY3Qse1wiYmFja2dyb3VuZC1jb2xvclwiOmIsb3BhY2l0eTpcIjFcIixwb3NpdGlvbjpcImZpeGVkXCIsbWFyZ2luOlwiMFwiLHBhZGRpbmc6XCIwXCIsXCJ6LWluZGV4XCI6XCIyMTQ3NDgzNjQ3XCIsZGlzcGxheTpcImJsb2NrXCJ9LGZ4KSk7Xy5SKHRoaXMsXy5Xcih0aGlzLkwuZG9jdW1lbnQsdGhpcy5MKSk7aGcodGhpcy5tKS5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7dHlwZTpcInJld2FyZGVkXCIsbWVzc2FnZTpcInZpc2libGVcIn0pLFwiKlwiKTt0aGlzLkw9PT10aGlzLkwudG9wJiYodGhpcy5MLmxvY2F0aW9uLmhhc2g9XCJnb29nX3Jld2FyZGVkXCIsXy5SKHRoaXMsZnVuY3Rpb24oKXtcImdvb2dfcmV3YXJkZWRcIj09PWEuTC5sb2NhdGlvbi5oYXNoJiYoYS5MLmxvY2F0aW9uLmhhc2g9XCJcIil9KSk7dGhpcy5GLm5vdGlmeSgpfTt2YXIgaHg9ZnVuY3Rpb24oYSxiLGMpe1kuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLkw9YjtBcih0aGlzLm8sYyl9O18uSihoeCxZKTtoeC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk1fTtoeC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2lmKHRoaXMuTD09PXRoaXMuTC50b3ApdmFyIGE9aGcodGhpcy5tKSxiPXp1KHRoaXMsNTAzLHRoaXMuTCxcImhhc2hjaGFuZ2VcIixmdW5jdGlvbihjKXtFZChjLm9sZFVSTCxcIiNnb29nX3Jld2FyZGVkXCIpJiYoYS5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7dHlwZTpcInJld2FyZGVkXCIsbWVzc2FnZTpcImJhY2tfYnV0dG9uXCJ9KSxcIipcIiksYigpKX0pfTt2YXIgaXg9ZnVuY3Rpb24oYSxiLGMpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMubT1iO3RoaXMuRj1Pcih0aGlzKTt0aGlzLkE9Vih0aGlzLGMpfTtfLkooaXgsWSk7aXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5Mn07aXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYz10aGlzLkEudmFsdWUsZD10aGlzLnNsb3RJZCxlPXRoaXMubTtfLlIodGhpcyxPYihlLEJvLGQsNjc3LGZ1bmN0aW9uKCl7YS5GLm5vdGlmeSgpO2EuemEoKX0pKTtRbyhlLEVvLGQse21ha2VSZXdhcmRlZFZpc2libGU6amQoZnVuY3Rpb24oKXtRbyhlLEJvLGQpfSkscGF5bG9hZDpudWxsIT09KGI9Yy5wYXlsb2FkKSYmdm9pZCAwIT09Yj9iOm51bGx9KX07dmFyIGp4PXt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsbGVmdDpcIjBcIix0b3A6XCIwXCJ9LGt4PXt3aWR0aDpcIjYwJVwiLGhlaWdodDpcIjYwJVwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgtNTAlLCAtNTAlKVwiLGxlZnQ6XCI1MCVcIix0b3A6XCI1MCVcIn0sbHg9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5BPWI7dGhpcy5GPXRoaXMubCgpfTtfLkoobHgsWSk7bHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5MX07bHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9Xy55KDM3NCkmJjA9PT1SZygpO18uWGcodGhpcy5tLF8uQShPYmplY3QsXCJhc3NpZ25cIikuY2FsbChPYmplY3Qse3Bvc2l0aW9uOlwiYWJzb2x1dGVcIn0sYj9reDpqeCkpO2t3KHRoaXMsdGhpcy5BLFwicHJlZmV0Y2hlZFwiLGZ1bmN0aW9uKGMpe3JldHVybiB2b2lkIFUoYS5GLGMpfSl9O3ZhciBteD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMuaGE9Yjt0aGlzLmZvcm1hdD1jO3RoaXMuTD1kO3RoaXMubT1lO3RoaXMuQT1WKHRoaXMsZik7dGhpcy5EPVcodGhpcyxnKTt0aGlzLkM9Vih0aGlzLGgpfTtfLkoobXgsWSk7bXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4OH07bXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtpZig0PT09dGhpcy5mb3JtYXQpe3ZhciBhPXRoaXMuQS52YWx1ZSxiPXRoaXMuRC52YWx1ZSxjPXRoaXMuQy52YWx1ZTtpZighYil0aHJvdyBFcnJvcihcIm1pc3NpbmcgbWVzc2FnZSBidXMgaW5wdXRcIik7dmFyIGQ9bmV3IHdiO18ud2godGhpcyxkKTt2YXIgZT1uZXcgbHgoYSxiKTtYKGQsZSk7ZT1uZXcgaXgodGhpcy5zbG90SWQsdGhpcy5tLGUuRik7WChkLGUpO2M9bmV3IGd4KGEsYyx0aGlzLkwsZS5GKTtYKGQsYyk7WChkLG5ldyBoeChhLHRoaXMuTCxjLkYpKTtYKGQsbmV3IGV4KHRoaXMuc2xvdElkLGIsdGhpcy5tLGUuRikpO1goZCxuZXcgYngodGhpcy5zbG90SWQsdGhpcy5oYSxiLHRoaXMubSxlLkYpKTtYKGQsbmV3IGR4KHRoaXMuc2xvdElkLGIsdGhpcy5tLGUuRikpO3liKGQpfX07dmFyIG54PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5OPWE7dGhpcy5SPWI7dGhpcy5MPWM7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1XKHRoaXMsZCk7dGhpcy5BPVcodGhpcyxlKTt0aGlzLkM9Vyh0aGlzLGYpfTtfLkoobngsWSk7bngucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2OX07bngucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYTtpZighKGE9SHIodGhpcy5BKSkpe2E9dGhpcy5SO3ZhciBiPXRoaXMuTDtiPXZvaWQgMD09PWI/d2luZG93OmI7YT0hIShxaigzKXx8YSYmbnVsbCE9QihhLDE2KSYmUmsoXCJnb29nbGVfcmFuZ2VfZGVidWdcIixiKSl9YT9VKHRoaXMuRiwhMCk6KGE9KEprKHRoaXMubS52YWx1ZSk/eCh0aGlzLlIsMTIpfHx4KHRoaXMuTiwxMyk6ITEpfHwhIXRoaXMuQy52YWx1ZSxVKHRoaXMuRiwhIWEpKX07dmFyIG94PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5OPWE7dGhpcy5jYT1iO3RoaXMuRj10aGlzLmwoKTt0aGlzLkM9Vih0aGlzLGMpO3RoaXMubT1XKHRoaXMsZCk7dGhpcy5BPVcodGhpcyxlKTt0aGlzLkQ9Vyh0aGlzLGYpfTtfLkoob3gsWSk7b3gucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcxOX07b3gucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm0udmFsdWUsYj10aGlzLkMudmFsdWU7aWYoMz09PWImJl8ueSgzODgpKVUodGhpcy5GLGV0KTtlbHNle2lmKDE9PT1iJiZfLnkoMzU0KSl7aWYoYT10aGlzLkQudmFsdWUsYT1RaihuZXcgUGosYSkseChibyhbYSxPKHRoaXMuTixQaiwxOCksTyh0aGlzLmNhLFBqLDEzKV0pLDMpKXtVKHRoaXMuRixfLnkoMzM4KT9mdDpjdCk7cmV0dXJufX1lbHNlIGlmKDA9PT1iJiZhJiZfLnkodGhpcy5BLnZhbHVlPzEzNjoxMzcpKXtVKHRoaXMuRixjdCk7cmV0dXJufUZyKHRoaXMuRil9fTt2YXIgcHg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLmNhPWI7dGhpcy5JPWM7dGhpcy53aW5kb3c9ZDt0aGlzLkc9dGhpcy5sKCk7dGhpcy5BPXRoaXMubCgpO3RoaXMuQz10aGlzLmwoKTt0aGlzLm09cWooMykuc3BsaXQoXCIsXCIpO3RoaXMuRD1fLnJqKDMpO3RoaXMuSGE9bnVsbCE9QihiLDE2KT9PKGIsWmosMTYpOm51bGw7dGhpcy5IPVFrKFwiZ29vZ2xlX3JhbmdlX2RlYnVnXCIsdGhpcy53aW5kb3cpO3RoaXMuSz1XKHRoaXMsZSk7dGhpcy5UPVcodGhpcyxmKTt0aGlzLk09Vyh0aGlzLGcpO3RoaXMuTz1WKHRoaXMsaCk7dGhpcy5QPVYodGhpcyxrKX07Xy5KKHB4LFkpO3B4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODF9O3B4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE7aWYoYT0hISh0aGlzLm0ubGVuZ3RofHx0aGlzLkhhJiZ0aGlzLkgpKXt2YXIgYjtiOmlmKHRoaXMubS5sZW5ndGgpe2lmKHRoaXMuRC5sZW5ndGgmJihhPXRoaXMuc2xvdC5nZXRBZFVuaXRQYXRoKCkuc3BsaXQoXCIvXCIpLCFfLkEodGhpcy5ELFwiaW5jbHVkZXNcIikuY2FsbCh0aGlzLkQsYVthLmxlbmd0aC0xXSkpKXthPSExO2JyZWFrIGJ9YT0hMH1lbHNlIGE9ITE7dmFyIGM9YTthPWM/cXgodGhpcyk6bnVsbDtpZihjJiZhKXtjPXRoaXMuUC52YWx1ZTt2YXIgZD1JayhjLnBhcmVudEVsZW1lbnQpO2Q9bnVsbCE9PShiPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLndpZHRoKSYmdm9pZCAwIT09Yj9iOjA7Yj1cInBcIj09PXRoaXMubVswXTt2YXIgZT1OdW1iZXIodGhpcy5tWzBdKTtpZihiPVwiZlwiPT09dGhpcy5tWzBdP3RoaXMuSTplJiYwPGU/ZTpiP01hdGgubWluKGQsdGhpcy5JKTpudWxsKXtlPWEud2lkdGg7dmFyIGY9YS5oZWlnaHQsZz10aGlzLm1bMV0saD1OdW1iZXIoZyk7ZT1cInJhdGlvXCI9PT1nJiZlP01hdGguZmxvb3IoZi9lKmIpOmgmJjA8aD9mKmg6ZjtyeCh0aGlzLGIsZSxzeChiLGUsXCI8cD5SZXF1ZXN0ZWQgc2l6ZTpcIithLndpZHRoK1wieFwiK2EuaGVpZ2h0K1wiPC9wPlwiKSxiPD1kPzE6MixjKTthPSEwfWVsc2UgYT0hMX1lbHNlIGE9ITE7aWYoIWEpYTppZih0aGlzLkhhJiZ0aGlzLkgpe2E9dXUodGhpcy5IYSx0aGlzLndpbmRvdyk7Yz12dSh0aGlzLkhhLHRoaXMud2luZG93KTtkPXd1KHRoaXMuSGEpO2I9eHUodGhpcy5IYSk7c3dpdGNoKHRoaXMuSCl7Y2FzZSBcIm1heFwiOmU9YTtmPWM7YnJlYWs7Y2FzZSBcIm1pblwiOmU9ZDtmPWI7YnJlYWs7Y2FzZSBcImJhbm5lclwiOmU9YTtmPTkwPmM/Yzo5MDxiP2I6OTA7YnJlYWs7Y2FzZSBcInNreXNjcmFwZXJcIjplPTkwPmE/YTo5MDxkP2Q6OTA7Zj1jO2JyZWFrO2RlZmF1bHQ6YT0hMTticmVhayBhfXJ4KHRoaXMsZSxmLHN4KGUsZixcIjxwPk1pbmltdW0gc2l6ZTpcIitkK1wieFwiK2IrXCI8L3A+PHA+TWF4aW11bSBzaXplOlwiKyhhK1wieFwiK2MrXCI8L3A+PGRpdiBpZD10b293aWRlIHN0eWxlPVxcXCJkaXNwbGF5Om5vbmU7IGJhY2tncm91bmQ6I2ZhYVxcXCI+U2xvdCBkb2VzIG5vdCBmaXQgaG9yaXpvbnRhbGx5PHNjcmlwdD5uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGUpID0+IHt0b293aWRlLnN0eWxlLmRpc3BsYXkgPSAgIChlW2UubGVuZ3RoLTFdLmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA+ICAgIGVbZS5sZW5ndGgtMV0uaW50ZXJzZWN0aW9uUmVjdC53aWR0aCkgPyAnYmxvY2snIDogJ25vbmUnO30se3RocmVzaG9sZDoxfSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5KTtcXHgzYy9zY3JpcHQ+PC9kaXY+XCIpKSk7YT0hMH1lbHNlIGE9ITF9aWYoIWEpe2E9dGhpcy5ULnZhbHVlO2lmKG51bGw9PWEpdGhyb3cgRXJyb3IoXCJNaXNzaW5nICd3aWR0aCcuXCIpO2M9dGhpcy5NLnZhbHVlO2lmKG51bGw9PWMpdGhyb3cgRXJyb3IoXCJNaXNzaW5nICdoZWlnaHQnLlwiKTtkPXRoaXMuTy52YWx1ZTtpZihudWxsPT1kKXRocm93IEVycm9yKFwiTWlzc2luZyAnaHRtbElucHV0Jy5cIik7cngodGhpcyxhLGMsZCl9fTt2YXIgcXg9ZnVuY3Rpb24oYSl7YT14YShhLmNhKVswXTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeShmdW5jdGlvbihiKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGJ9KT9uZXcgXy5UZihhWzBdLGFbMV0pOm51bGx9LHN4PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4nPGh0bWw+PGJvZHkgc3R5bGU9XCJoZWlnaHQ6JysoYi0yK1wicHg7d2lkdGg6XCIrKGEtMisncHg7YmFja2dyb3VuZC1jb2xvcjojZGRkO2NvbG9yOiMwMDA7Ym9yZGVyOjFweCBzb2xpZCAjZjAwO1wiPicpKStjKyhcIjxwPlJlbmRlcmVkIHNpemU6XCIrYStcInhcIitiK1wiPC9wPjwvYm9keT48L2h0bWw+XCIpfSxyeD1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZT12b2lkIDA9PT1lP2EuSy52YWx1ZTplO1UoYS5BLG5ldyBfLlRmKGIsYykpO1UoYS5HLGQpO251bGw9PWU/RnIoYS5DKTpVKGEuQyxlKTtmJiZfLmNpKGYsXCJvcGFjaXR5XCIsLjUpfTt2YXIgdHg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuVWE9Yjt0aGlzLkE9Yzt0aGlzLkM9ZDt0aGlzLkQ9ZTt0aGlzLm09Zjt0aGlzLkc9Zzt0aGlzLkY9dGhpcy5sKCl9O18uSih0eCxZKTt0eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjczfTt0eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYobnVsbCE9dGhpcy5VYSl1eCh0aGlzLHRoaXMuVWEpLFUodGhpcy5GLHRoaXMuVWEpO2Vsc2UgaWYoc2sodGhpcy5tKSlVKHRoaXMuRix2eCh0aGlzKSk7ZWxzZXt2YXIgYj1Tbyh0aGlzLkcsQW8sdGhpcy5pZCgpLGZ1bmN0aW9uKGMpe2MuaWQ9PT1hLkEmJihiKCksdXgoYSxjKSxVKGEuRixjKSl9KTtfLlIodGhpcyxiKX19O3ZhciB2eD1mdW5jdGlvbihhKXt2YXIgYj1fLmVnKGRvY3VtZW50LFwiSU5TXCIpO2IuaWQ9YS5BO18uWGcoYix7ZGlzcGxheTpcIm5vbmVcIn0pO2EuRC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYik7Mj09PWEubXx8Mz09PWEubT9tbyhhLnNsb3QsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGIpfSk6Xy5SKGEsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGIpfSk7cmV0dXJuIGJ9LHV4PWZ1bmN0aW9uKGEsYil7aWYoMiE9PWEubSYmMyE9PWEubSl7dmFyIGM9Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGIuY2hpbGROb2Rlcyk7Yz1fLkYoYyk7Zm9yKHZhciBkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlkPWQudmFsdWUsMT09PWQubm9kZVR5cGUmJmQuaWQhPT1hLkMmJl8uZmcoZCk7Xy55KDM4OSk/Yi5zdHlsZS5kaXNwbGF5PVwiZmxleFwiOk5iKGIsITApfX07dmFyIHd4PWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVYodGhpcyxhKX07Xy5KKHd4LFkpO3d4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NzZ9O3d4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dWEodGhpcy5tLnZhbHVlKTtVKHRoaXMuRixhKX07dmFyIHh4PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3ZhciBjPXRoaXM7dGhpcy5zbG90PWE7dGhpcy5tPWI7dGhpcy5GPXRoaXMubCgpO3RoaXMuQT1qZChmdW5jdGlvbigpe2Muc2xvdC5tYigpO1FvKGMubSxEbyxjLnNsb3QuZ2V0U2xvdElkKCkpfSk7dGhpcy5DPWtkKGZ1bmN0aW9uKCl7dmFyIGQ9Yy5pblZpZXdQZXJjZW50YWdlO1FvKGMubSxMbyxjLnNsb3QuZ2V0U2xvdElkKCksZCl9LDIwMCl9O18uSih4eCxZKTt4eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzE0fTt4eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1uZXcgSSxjPVNvKGIsTW8sdGhpcy5pZCgpLGZ1bmN0aW9uKGQpe3ZhciBlPWQuaW5WaWV3UGVyY2VudGFnZTtkLm1iJiZhLkEoKTt2b2lkIDA9PT1lfHxpc05hTihlKXx8KGU9TWF0aC5mbG9vcihlKSxhLmluVmlld1BlcmNlbnRhZ2UhPT1lJiYoYS5pblZpZXdQZXJjZW50YWdlPWUsYS5DKCkpKX0pO18uUih0aGlzLGMpO1UodGhpcy5GLGIpfTt2YXIgeXg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxtLG4scSx3LHUsQyxRLE4sSCxxYSxvYix3Yyx4YyxvaCxaeiwkeixhQSxiQSxjQSxkQSxlQSxmQSl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuSD1iO3RoaXMuaGE9Yzt0aGlzLnVhPWQ7dGhpcy5nYT1lO3RoaXMub2E9Zjt0aGlzLmJhPWc7dGhpcy5YPWg7dGhpcy5WYT1rO3RoaXMuRD1sO3RoaXMuQT1tO3RoaXMuTD1uO3RoaXMubT1xO3RoaXMuRz13O3RoaXMuQz11O3RoaXMuSz1DO3RoaXMuVD1RO3RoaXMucGE9Tjt0aGlzLnNhPUg7dGhpcy5hYT1xYTt0aGlzLnRhPW9iO3RoaXMuTz13Yzt0aGlzLkk9eGM7dGhpcy5WPW9oO3RoaXMuZmE9Wno7dGhpcy5QPSR6O3RoaXMua2E9YUE7dGhpcy5NPWJBO3RoaXMuZGE9Y0E7dGhpcy5ZPWRBO3RoaXMuZWE9ZUE7dGhpcy5XPVYodGhpcyxmQSl9O18uSih5eCxZKTt5eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzU3fTt5eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPW5ldyB3YjtfLndoKHRoaXMsYSk7aWYodGhpcy5XLnZhbHVlfHxSayhcImdvb2dsZV9ub3JlbmRlclwiKSl7dmFyIGI9bmV3IE13KHRoaXMuc2xvdCx0aGlzLmhhLHRoaXMuSCx0aGlzLmdhLHRoaXMuVmEsdGhpcy5ELHRoaXMuQSx0aGlzLkcpO1goYSxiKX1lbHNle2I9dGhpcy5oYTt2YXIgYz1iLk4sZD1iLlI7Yj10aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpO3ZhciBlPWRbYl0sZj1nayhlKSxnPXRoaXMuc2xvdC5nZXRTbG90SWQoKSxoPW5ldyBVdyh0aGlzLkwudG9wLHRoaXMuYmEpO1goYSxoKTt2YXIgaz1uZXcgUHc7WChhLGspO2I9bmV3IHR4KHRoaXMuc2xvdCxwYSh0aGlzLnNsb3QsdGhpcy5BKSxiLFZrKHRoaXMuc2xvdC5nZXRTbG90SWQoKSksdGhpcy5BLGYsdGhpcy5EKTtYKGEsYik7dmFyIGw9bmV3IEZ3KHRoaXMudWEsdGhpcy5tLHRoaXMuQyx0aGlzLkssdGhpcy5UKTtYKGEsbCk7dmFyIG09bmV3IG54KGMsZSx0aGlzLkwsdGhpcy5tLHRoaXMuQyx0aGlzLlQpO1goYSxtKTtkPW5ldyBJdyh0aGlzLnNsb3QsYyxmLHRoaXMuQSxiLkYsbS5GKTtYKGEsZCk7dmFyIG49bmV3IHd4KGQuRik7WChhLG4pO2s9bmV3IFd3KHRoaXMuc2xvdCx0aGlzLm9hLGsuRixuLkYpO1goYSxrKTtrPW5ldyBTdyhPKGMsTmosNSksdGhpcy5vYSxrLkYsZC5GLG4uRix0aGlzLkcsdGhpcy5wYSx0aGlzLnNhKTtYKGEsayk7bj1uZXcgSHcoZix0aGlzLm9hLmhlaWdodCx0aGlzLk0sdGhpcy5PKTtYKGEsbik7bD1uZXcgcHgodGhpcy5zbG90LGUsdGhpcy5vYS53aWR0aCx0aGlzLkwsdGhpcy5hYSx0aGlzLnRhLHRoaXMuTyxsLm0sYi5GKTtYKGEsbCk7bj1uZXcgSncodGhpcy5MLGIuRik7WChhLG4pO249bmV3IHh3KHRoaXMuQSx0aGlzLnNsb3QsZSx0aGlzLm9hLHRoaXMuSSxiLkYsZC5GLGwuQSxsLkMsbi5GKTtYKGEsbik7bT1uZXcgYXgodGhpcy5tLG0uRik7WChhLG0pO2M9bmV3IG94KGMsZSxtLkYsdGhpcy5tLHRoaXMuSyx0aGlzLlYpO1goYSxjKTtjPW5ldyB3dyh0aGlzLnNsb3QsdGhpcy5ILHRoaXMuaGEsdGhpcy5MLGwuRyxrLkYsYi5GLGQuRixsLkEsbS5GLHRoaXMubSx0aGlzLkMsdGhpcy5HLHRoaXMuSSx0aGlzLlYsYy5GLHRoaXMuSyx0aGlzLmZhLHRoaXMuUCx0aGlzLmthLG4uRik7WChhLGMpO2U9bmV3IEt3KHRoaXMuSCxmLHRoaXMuc2xvdCx0aGlzLkwsdGhpcy5NLGMubSxiLkYpO1goYSxlKTtoPW5ldyBPdyhmLHRoaXMub2EsdGhpcy5kYSxjLm0sYi5GLGguRik7WChhLGgpO2g9bmV3IER3KHRoaXMuTCx0aGlzLm0sYy5tLGMuQSxjLkgpO1goYSxoKTtoPW5ldyBHdyh0aGlzLkwsZyxSZygpLHRoaXMuRCx0aGlzLlksYy5tKTtYKGEsaCk7Zj1uZXcgbXgoZyx0aGlzLmhhLGYsdGhpcy5MLHRoaXMuRCxjLm0sYy5DLGIuRik7WChhLGYpO2Y9bmV3IHh4KHRoaXMuc2xvdCx0aGlzLkQpO1goYSxmKTtnPW5ldyBWdyh0aGlzLnNsb3QuJGEsdGhpcy5YLHRoaXMubSxjLm0sZi5GKTtYKGEsZyk7Zz1uZXcgencodGhpcy5HLHRoaXMuSSx0aGlzLkMsdGhpcy5tLHRoaXMuUCxjLm0sZC5GLGMuQSxjLkcsYy5JKTtYKGEsZyk7Zj1uZXcgeXcoZi5GLHRoaXMuQyx0aGlzLm0sYy5EKTtYKGEsZik7Yj1uZXcgTncodGhpcy5MLHRoaXMuZWEsYy5tLGQuRixiLkYpO1goYSxiKX15YihhKX07dmFyIHp4PWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyB0Lk1hcH0sQXg9ZnVuY3Rpb24oYSxiKXt2YXIgYztiJiYobnVsbD09PShjPWEuai5nZXQoYikpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnphKCksYS5qLmRlbGV0ZShiKSl9LEJ4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrKXtBeChhLGIpO3ZhciBsPW5ldyB3YixtPXhpKCEwLHdpbmRvdyksbj1lLk4scT1lLlJbYi5nZXRTbG90RWxlbWVudElkKCldO2Y9bmV3IFl3KGIsZSxjLGssZik7WChsLGYpO3ZhciB3PW5ldyBVdyh3aW5kb3cudG9wLGspO1gobCx3KTt2YXIgdT1uZXcgUHc7WChsLHUpO2s9bmV3IHR4KGIscGEoYixoKSxiLmdldFNsb3RFbGVtZW50SWQoKSxWayhiLmdldFNsb3RJZCgpKSxoLGdrKHEpLEkuQigpKTtYKGwsayk7dmFyIEM9bmV3IEZ3KGcsZi5tLGYuQSxmLkgsZi5NKTtYKGwsQyk7dmFyIFE9bmV3IG54KG4scSx3aW5kb3csZi5tLGYuQSxmLk0pO1gobCxRKTtnPW5ldyBJdyhiLG4sZ2socSksaCxrLkYsUS5GKTtYKGwsZyk7dmFyIE49bmV3IHd4KGcuRik7WChsLE4pO3U9bmV3IFd3KGIsbSx1LkYsTi5GKTtYKGwsdSk7dT1uZXcgU3coTyhuLE5qLDUpLG0sdS5GLGcuRixOLkYsZi5ELGYuZGEsZi5lYSk7WChsLHUpO049bmV3IEh3KGdrKHEpLG0uaGVpZ2h0LGYuSSxmLlgpO1gobCxOKTtDPW5ldyBweChiLHEsbS53aWR0aCx3aW5kb3csZi5WLGYuZmEsTi5GLEMubSxrLkYpO1gobCxDKTtOPW5ldyBKdyh3aW5kb3csay5GKTtYKGwsTik7aD1uZXcgeHcoaCxiLHEsbSxmLkcsay5GLGcuRixDLkEsQy5DLE4uRik7WChsLGgpO209bmV3IGF4KGYubSxRLkYpO1gobCxtKTtuPW5ldyBveChuLHEsbS5GLGYubSxmLkgsZi5PKTtYKGwsbik7bj1uZXcgd3coYixjLGUsd2luZG93LEMuRyx1LkYsay5GLGcuRixDLkEsbS5GLGYubSxmLkEsZi5ELGYuRyxmLk8sbi5GLGYuSCxmLmFhLGYuSyxmLmJhLGguRik7WChsLG4pO2M9bmV3IEt3KGMsZ2socSksYix3aW5kb3csZi5JLG4ubSxrLkYpO1gobCxjKTtjPW5ldyBPdyhnayhxKSxlLm9hLGYuVyxuLm0say5GLHcuRik7WChsLGMpO2M9bmV3IER3KHdpbmRvdyxmLm0sbi5tLG4uQSxuLkgpO1gobCxjKTtjPW5ldyBHdyh3aW5kb3csYi5nZXRTbG90SWQoKSxSZygpLEkuQigpLGYuVCxuLm0pO1gobCxjKTtlPW5ldyBteChiLmdldFNsb3RJZCgpLGUsZ2socSksd2luZG93LEkuQigpLG4ubSxuLkMsay5GKTtYKGwsZSk7ZT1uZXcgeHgoYixJLkIoKSk7WChsLGUpO2Q9bmV3IFZ3KGIuJGEsZCxmLm0sbi5tLGUuRik7WChsLGQpO2Q9bmV3IHp3KGYuRCxmLkcsZi5BLGYubSxmLkssbi5tLGcuRixuLkEsbi5HLG4uSSk7WChsLGQpO2Q9bmV3IHl3KGUuRixmLkEsZi5tLG4uRCk7WChsLGQpO2Y9bmV3IE53KHdpbmRvdyxmLlksbi5tLGcuRixrLkYpO1gobCxmKTthLmouc2V0KGIsbCk7Xy5SKGIsZnVuY3Rpb24oKXtBeChhLGIpfSk7Xy55KDMzNikmJmxvKGIsZnVuY3Rpb24oKXtBeChhLGIpfSk7eWIobCl9LEN4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuLHEsdyl7QXgoYSxiKTt2YXIgdT1uZXcgd2I7az1uZXcgWXcoYixlLGMsaCxuZXcgZG4sayxsLG0sdGsuQigpLEkuQigpLHEsdyk7WCh1LGspO2M9bmV3IHl4KGIsYyxlLGYsbix4aSghMCx3aW5kb3cpLGgsZCx0ay5CKCksSS5CKCksZyx3aW5kb3csay5tLGsuRCxrLkEsay5ILGsuTSxrLmRhLGsuZWEsay5WLGsuZmEsay5YLGsuRyxrLk8say5hYSxrLkssay5iYSxrLkksay5XLGsuVCxrLlksay5wYSk7WCh1LGMpO3liKHUpO2Euai5zZXQoYix1KTtfLlIoYixmdW5jdGlvbigpe0F4KGEsYil9KTtfLnkoMzM2KSYmbG8oYixmdW5jdGlvbigpe0F4KGEsYil9KX07dmFyIER4PWZ1bmN0aW9uKGEsYixjKXt0aGlzLnVybD1hO3RoaXMubD1iO3RoaXMud2l0aENyZWRlbnRpYWxzPWM7dGhpcy5vPTA7dGhpcy52PSExO3RoaXMuaj1uZXcgWE1MSHR0cFJlcXVlc3R9LEd4PWZ1bmN0aW9uKGEpe2Euai5vcGVuKFwiR0VUXCIsYS51cmwpO2Euai53aXRoQ3JlZGVudGlhbHM9YS53aXRoQ3JlZGVudGlhbHM7Xy55KDMxMikmJnV0KGEuaik7YS5qLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe0V4KGEsITEpfTthLmoub25sb2FkPWZ1bmN0aW9uKCl7RXgoYSwhMCl9O2Euai5vbmVycm9yPWZ1bmN0aW9uKCl7RngoYS5sLEVycm9yKFwiWEhSIGVycm9yXCIpKX07YS5qLnNlbmQoKX0sRXg9ZnVuY3Rpb24oYSxiKXt0cnl7aWYoMz09PWEuai5yZWFkeVN0YXRlfHw0PT09YS5qLnJlYWR5U3RhdGUpaWYoMzAwPD1hLmouc3RhdHVzKWEudnx8RngoYS5sLEVycm9yKFwieGhyX2Vyci1cIithLmouc3RhdHVzKSksYS52PSEwO2Vsc2V7dmFyIGM9YS5qLnJlc3BvbnNlVGV4dC5zdWJzdHIoYS5vKTtpZihjKXt2YXIgZD1hLmw7aWYoYylpZigxIT09ZC5qJiYyIT09ZC5qKUZ4KGQsRXJyb3IoXCJzdGF0ZSBlcnI6IChcIisoW2QuaixkLmwubGVuZ3RoXS5qb2luKCkrXCIpXCIpKSk7ZWxzZXtkLmwmJihjPWQubCtjKTt2YXIgZT0wLGY9ITE7ZG97dmFyIGc9Yy5pbmRleE9mKFwiXFxuXCIsZSk7Zj0tMSE9PWc7aWYoIWYpYnJlYWs7dmFyIGg9ZCxrPWMuc3Vic3RyKGUsZy1lKTtpZigxPT09aC5qKWgudj1rLCsraC5vLGguaj0yO2Vsc2V7dHJ5e2gubShoLm8saC52LGloKGspKSxoLnY9XCJcIn1jYXRjaChtKXt9aC5qPTF9ZT1nKzF9d2hpbGUoZiYmZTxjLmxlbmd0aCk7ZC5sPWMuc3Vic3RyKGUpfX1hLm89YS5qLnJlc3BvbnNlVGV4dC5sZW5ndGg7aWYoYiYmND09PWEuai5yZWFkeVN0YXRlKXt2YXIgbD1hLmw7MSE9PWwuanx8bC5sP0Z4KGwsRXJyb3IoXCJzdGF0ZSBlcnIgKFwiKyhbbC5qLGwubC5sZW5ndGhdLmpvaW4oKStcIilcIikpKToobC5qPTMsbC5DKCkpfX19Y2F0Y2gobSl7RngoYS5sLG0pfX07dmFyIEh4PWZ1bmN0aW9uKGEsYixjKXt0aGlzLm09YTt0aGlzLkE9Yjt0aGlzLkM9Yzt0aGlzLnY9XCJcIjt0aGlzLm89LTE7dGhpcy5qPTE7dGhpcy5sPVwiXCJ9LEZ4PWZ1bmN0aW9uKGEsYil7YS5qPTQ7dHJ5e2EuQShiKX1jYXRjaChjKXt9fTt2YXIgSXg9ZnVuY3Rpb24oKXtpZihiZSgpKXtpZihfLnkoMTA5KSYmMDw9UGQoZGUoKSwxMikpcmV0dXJuITE7aWYoMDw9UGQoZGUoKSwxMSkpcmV0dXJuITB9ZWxzZSBpZigkZCgpJiYwPD1QZChkZSgpLDY1KSlyZXR1cm4hMDtyZXR1cm4hMX0sSng9ZnVuY3Rpb24oYSxiKXtfLnkoMjAwKT9iKCk6SXgoKT9xcihHKGEsYikpOihfLnkoMjM5KSYmcXIobnVsbCksYigpKX0sS3g9ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oYyl7ZmEoXy5yLnRvcCxcImdvb2dsZWZjTG9hZGVkXCIpP2MoKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihHKDY3OCxjKSl9LDIwKX07cGgoKSYmXy55KDMwMik/YihhKTphKCl9LEx4PWZ1bmN0aW9uKGEpe3ZhciBiPXBoKCk7Xy5yLmdvb2dsZWZjJiYhYiYma2IoXCJncHRfZmNfaGFzX25hbWVzcGFjZV9idXRfbm9faWZyYW1lc1wiLGZ1bmN0aW9uKGMpe2xiKGMpO0UoYyxcIm5ldHdvcmtJZFwiLGEpfSx7dmE6MX0pfSxNeD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5EaigyMjEpLGU9YS5qLmxlbmd0aD9hLmpbMF0ubTpcIlwiO2E9dm9pZCAwO18ueSgzNzMpJiYoYT0hKCFifHwheChiLDgpKSxiPWlhKCksIWEmJmImJmtiKFwiZ3B0X25wYV91c2VzX2lmcmFtZV9ub3RfYXBpXCIsZnVuY3Rpb24oZil7bGIoZik7RShmLFwibmV0d29ya0lkXCIsZSl9LHt2YToxfSkpO3RoKGQsZSxHKDQ1MSxjKSxhKX0sTng9ZnVuY3Rpb24oYSxiKXthPW5ldyBucyhfLmNnKGEpKTtfLnkoMjc0KSYmcHMoYSk/KGpsLkIoKS5pbmZvKE1tKCkpLHNzKGEsRyg2NjEsZnVuY3Rpb24oYyl7YihjKX0pKSk6YihudWxsKX0sT3g9ZnVuY3Rpb24oYSxiKXthPW5ldyBZcihfLmNnKGEpKTtpZigkcihhKSl7dmFyIGM9Ryg2NjAsZnVuY3Rpb24oZCl7ZCYmXCJzdHJpbmdcIj09PXR5cGVvZiBkLnVzcFN0cmluZz9iKGQudXNwU3RyaW5nKTpiKG51bGwpfSk7amwuQigpLmluZm8oTG0oKSk7YnMoYSxjKX1lbHNlIGIobnVsbCl9LFB4PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPTFFMypfLnJhKDQ3LDEpLGY9ZnVuY3Rpb24oZyl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5yb3VuZCgoZS0oYS1nKSkvMUUzKSl9O2Q9Xy55KDQyMSk/ZC5nZXQoYi5nZXRTbG90SWQoKSl8fG51bGw6Yi5ZO2lmKG51bGw9PT1kKXJldHVybiAwO3N3aXRjaChfLnJhKGIuaXNCYWNrZmlsbCgpPzUyOjQ2KSl7Y2FzZSAwOnJldHVybiBmKGQpO2Nhc2UgMTpyZXR1cm4gXy55KDQxMik/KGI9Z3AoYyxiKSk/ZihiKTotMTooYj1iLlApP2YoYi5nZXRUaW1lc3RhbXAoKS5nZXRUaW1lKCkpOi0xO2Nhc2UgMjpyZXR1cm4gXy55KDQxMik/KGI9aHAoYyxiKSk/ZihiKTotMTooYj1iLkcpP2YoYik6LTF9cmV0dXJuIDB9LFF4PWZ1bmN0aW9uKGEpe2EubGVuZ3RoJiYoYT1hWzBdLFlpKHRrLkIoKSxcIjNcIixhLmwpKX0sUng9ZnVuY3Rpb24oYSl7YT1hIGluc3RhbmNlb2YgRXJyb3I/YTpFcnJvcigpO2EubWVzc2FnZT1hLm1lc3NhZ2V8fFwic3RybV9lcnJcIjtjbCgyODksYSwhMCl9LFN4PWZ1bmN0aW9uKGEpe3ZhciBiPV8uTmkoKTthPV8uRihhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKWMudmFsdWUuWT1ifSxUeD1mdW5jdGlvbihhLGIpe2lmKF8ueSgxNzcpKXJldHVybiExO2E9eChhLDExKTtudWxsPT1hJiYoYT14KGIsMTApKTtyZXR1cm4hIWF9LFV4PW51bGwsVng9bnVsbCxXeD1mdW5jdGlvbigpe3ZhciBhPVdvKCk7dmFyIGI9Vng9Vnh8fG5ldyBkcjt0aGlzLmo9YTt0aGlzLkc9Yjt0aGlzLks9bnAuQigpO3RoaXMudj1uZXcgdC5NYXA7dGhpcy5sPW5ldyB0Lk1hcDt0aGlzLkM9bmV3IHQuTWFwO3RoaXMuST1HYih0aGlzLkkpO3RoaXMubT1HKDI5MSx0aGlzLm0pO3RoaXMuWD1SayhcImdvb2dsZV9ub2ZldGNoXCIpO3RoaXMuWT1SayhcImdvb2dsZV9ub3JlbmRlclwiKTt0aGlzLkQ9TmFOO3RoaXMuVT1uZXcgQnQ7dGhpcy5XPTA7dGhpcy5PPWJiKF8ucik7dGhpcy5WPXt9O3RoaXMuVD10aGlzLlA9TmFOO3RoaXMuQT17fTt0aGlzLm89e307dGhpcy5NPW5ldyB6eDt0aGlzLkg9Ryg2NDMsdGhpcy5IKX0sJHQ9ZnVuY3Rpb24oKXtyZXR1cm4gVXg9VXh8fG5ldyBXeH0sWXg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWQuc2xvdDtkPWQuY2E7aWYoXy5ZbyhhLmosZykpe2lmKGUpe3ZhciBoPXt9O2hbZy5nZXRTbG90RWxlbWVudElkKCldPWQ7WHgoYSxbZ10sZixoKX1pZihlfHwhdW8oZyxjKSlhPXgoZCwxMCksbnVsbD09YSYmKGE9eChmLDExKSksYSYmIV8ueSgzOTApJiZSYihnLGIsYyl9fSxaeD1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZHAoYS5qLGIsZS53YSk7aWYoZj1mLlJbYi5nZXRTbG90RWxlbWVudElkKCldKXRvKGIsZCksXy55KDQxOCl8fHFvKGIsQihkLDMzKSksUW8oSS5CKCksSm8sYi5nZXRTbG90SWQoKSxkKSxudWxsIT1CKGQsMjMpJiZCKGQsMjMpLmZvckVhY2goZnVuY3Rpb24oZyl7b3AoYS5LLGcpO3ZhciBoPWEuSztoLmpbZ118fChoLmpbZ109W10pO2gualtnXS5wdXNoKGIpfSksdWYoZCwkbSwxNCkubGVuZ3RoJiZlcihhLkcsdWYoZCwkbSwxNClbMF0sYyksXy55KDQyMik/VGsoZixPKGQsQmYsNTApLCEheChkLDExKSkmJihfLlpvKGEuaixiKSxTayhPKGQsQmYsNTApKSYmbW8oYixmdW5jdGlvbigpe18uJG8oYS5qLGIpfSkpOig0PT1nayhmKXx8NT09Z2soZil8fHgoZCwxMSkpJiZfLlpvKGEuaixiKSx4KGQsOCl8fGpvKGIsSHQoZSxiKSl9O1d4LnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztiPXZvaWQgMD09PWI/ITE6YjtyZXR1cm4gXy5yLkludGVyc2VjdGlvbk9ic2VydmVyP25ldyBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZCxlKXtyZXR1cm4gYy5tKGQsZSxiKX0se3Jvb3RNYXJnaW46YX0pOm5ldyBNYihmdW5jdGlvbihkLGUpe3JldHVybiBjLm0oZCxlLGIpfSx7cm9vdE1hcmdpbjphfSl9O1d4LnByb3RvdHlwZS5tPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzO2M9dm9pZCAwPT09Yz8hMTpjO2EuZm9yRWFjaChmdW5jdGlvbihlKXtpZihjfHwhKDA+PWUuaW50ZXJzZWN0aW9uUmF0aW8pKXtiLnVub2JzZXJ2ZShlLnRhcmdldCk7ZT1lLnRhcmdldC5pZDt2YXIgZj1kLnYuZ2V0KGUpO2YmJihmLkhiKCksZC52LmRlbGV0ZShlKSl9fSl9O3ZhciAkeD1mdW5jdGlvbihhLGIpe2lmKCFiLmxlbmd0aClyZXR1cm5bXTt2YXIgYz1iWzBdLm07cmV0dXJuIF8ueSg0MTgpP1BwKFFwLkIoKSkubWFwKGZ1bmN0aW9uKGQpe2Q9ZC5tIT1jfHxfLkEoYixcImluY2x1ZGVzXCIpLmNhbGwoYixkKT9cIlwiOihkPWEuai5qLmdldChkKSkmJmQuU2J8fFwiXCI7cmV0dXJuIGR9KS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuISFkfSk6UHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGFwKGEuaixkKSYmZC5tPT1jJiYhIWQuTyYmIV8uQShiLFwiaW5jbHVkZXNcIikuY2FsbChiLGQpfSkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLk99KX0sYXk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bmV3IEV0O2UuST1cImxkamhcIjtkPXgoZC5OLDYpfHxfLnkoMzY0KT9cImZpZnNcIjpcImZpZlwiO2UuRz1kO2Uudj1hLk87ZS5FYT1jO2Uuaj1iO2E9Xy5GKGIpO2ZvcihiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSlHdChlLGIudmFsdWUpO3JldHVybiBlfSxkeT1mdW5jdGlvbihhLGIsYyxkKXtuaigyKTtieShhLGIpO3JldHVybiBVdShjeShhLCEheChkLk4sNil8fF8ueSgzNjQpLGIsYyxkKSl9LGN5PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtyZXR1cm4gbmV3IFJ1KGIsYS5qLGEuRyxjLGQsZSx2b2lkIDA9PT1mPyExOmYpfSxieT1mdW5jdGlvbihhLGIpe2IuVT1rai5CKCkuaigpO2Iubz1hLlUuZ2V0T3NlSWQoKTtfLnkoMjAwKXx8KG5yKCksYi5EPWtyWzFdLG5yKCksYi5IPWtyWzRdLG5yKCksYi5LPWtyWzZdKTtiLldhPWEuUDtiLlhhPWEuVDtiLkphPWEuRDtiLm09JHgoYSxiLmopfSxneT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1leShhLGIsZCk7aWYoXCJib29sZWFuXCI9PT10eXBlb2YgZSllfHxmeShhLGIsYyxkKTtlbHNlIHJldHVybiBlLnRoZW4oRyg3NTAsZnVuY3Rpb24oKXtmeShhLGIsYyxkKX0pKX0sZXk9ZnVuY3Rpb24oYSxiLGMpe2I9Yi5qO3ZhciBkPWMuTixlPWMuUixmPU8oZCxOaiw1KXx8bmV3IE5qO2M9Xy55KDI5Nik7Zj1XdihmKTtpZihudWxsPT1mKXJldHVybiBjP3QuUHJvbWlzZS5yZXNvbHZlKCk6ITE7dmFyIGc9TWF0aC5tYXgoZi8xMDAsMCk7aWYoIWIuZXZlcnkoZnVuY3Rpb24obCl7dmFyIG09ZVtsLmdldFNsb3RFbGVtZW50SWQoKV0sbjtpZihuPXNhKHBhKGwpKSluPXdpbmRvdyxsPXtzbG90OmwsY2E6bX0sbT0hIXgoZCwxNSksKGw9UGsobCxuLmRvY3VtZW50LG0pKSYmLTEyMjQ1OTMzIT1sLnk/KG49eGkoITAsbiksbj1PayhsLG4sZykpOm49ITAsbj0hbjtyZXR1cm4gbn0pKXJldHVybiBjP3QuUHJvbWlzZS5yZXNvbHZlKCk6ITE7Yz1hLkkoZitcIiVcIik7dmFyIGg9bmV3IEJyO2Y9e307Yj1fLkYoYik7Zm9yKHZhciBrPWIubmV4dCgpOyFrLmRvbmU7Zj17aWI6Zi5pYix1YjpmLnVifSxrPWIubmV4dCgpKWs9ay52YWx1ZSxmLnViPWsuZ2V0U2xvdEVsZW1lbnRJZCgpLGYuaWI9cGEoayksZi5pYiYmKGEudi5zZXQoZi51Yix7SGI6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBoLnJlc29sdmUoKX0sbGQ6Y30pLGMub2JzZXJ2ZShmLmliKSxsbyhrLGZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBoeShhLGwuaWIsbC51Yil9fShmKSkpO3JldHVybiBoLmp9LGZ5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIuajthLnYuZ2V0KGVbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpKSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBnPWYuZ2V0U2xvdEVsZW1lbnRJZCgpO2h5KGEscGEoZiksZyl9KTtpeShhLGIsYyxkKX0saXk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9KythLlc7Yi5sPWU7YS5WW2VdPWIuajtlPWR5KGEsYixjLGQpO2p5KGEsZSxiLGMsZCk7Yj1iLmo7ZD0oZD1PKGQuTixQaiwxOCkpJiZudWxsIT1CKGQsNCk/eChkLDQpOl8ueSgyNDIpO2p3KGh3LkIoKSx3aW5kb3csTGsoKSk7ZHx8ancoaHcuQigpLHdpbmRvdyk7aWYoXy55KDQyMSkpZm9yKGQ9Xy5OaSgpLGM9e30sYj1fLkYoYiksZT1iLm5leHQoKTshZS5kb25lO2M9e1lhOmMuWWF9LGU9Yi5uZXh0KCkpYy5ZYT1lLnZhbHVlLGEuQy5oYXMoYy5ZYS5nZXRTbG90SWQoKSl8fF8uUihjLllhLGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuQy5kZWxldGUoZi5ZYS5nZXRTbG90SWQoKSl9fShjKSksYS5DLnNldChjLllhLmdldFNsb3RJZCgpLGQpO2Vsc2UgU3goYil9LG15PWZ1bmN0aW9uKGEsYixjLGQpe2I9Yi5maWx0ZXIoZnVuY3Rpb24oZSl7dmFyIGY9ZS5nZXRTbG90SWQoKSxnPWEubC5nZXQoZik7Zz8wIT1fLnJhKDQ2KSYmXy5BKE9iamVjdCxcImFzc2lnblwiKS5jYWxsKE9iamVjdCxnLHtvcHRpb25zOmMsaGE6ZH0pOihhLmwuc2V0KGYse2hhOmQsb3B0aW9uczpjLEljOm51bGx9KSxfLlIoZixmdW5jdGlvbigpe2EubC5kZWxldGUoZil9KSk7bG8oZSxmdW5jdGlvbigpe3JldHVybiBreShhLGUpfSk7cmV0dXJuIWd9KTtiLmxlbmd0aCYmbHkoYSxiLGMsZCl9LGx5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPV8uTmkoKTtiPWdkKGIsZnVuY3Rpb24oZil7cmV0dXJuIFB4KGUsZixhLmosYS5DKX0pO18uSmIoYixmdW5jdGlvbihmLGcpe2lmKFwiMFwiPT09ZylueShhLGYsYyxkKTtlbHNlIGlmKFwiLTFcIj09PWcpb3koYSxmKTtlbHNle3ZhciBoPXBhcnNlSW50KGcsMTApO2YuZm9yRWFjaChmdW5jdGlvbihrKXtqbC5CKCkuSihHbShTdHJpbmcoaCksay5nZXRBZFVuaXRQYXRoKCkpKX0pO255KGEsZixjLGQsMUUzKmgpfX0pfSxveT1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O2I9Xy5GKGIpO2Zvcih2YXIgZD1iLm5leHQoKTshZC5kb25lO2M9e3lhOmMueWEsWmE6Yy5aYSxqYjpjLmpiLGZiOmMuZmIsdGI6Yy50Yn0sZD1iLm5leHQoKSl7Yy55YT1kLnZhbHVlO2MudGI9Xy5yYShjLnlhLmlzQmFja2ZpbGwoKT81Mjo0Nik7Yy5aYT1bXTtjLmpiPW51bGw7Yy5mYj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZil7dmFyIGc9YS5sLmdldChlLnlhLmdldFNsb3RJZCgpKTt0cnl7bnkoYSxbZS55YV0sZy5vcHRpb25zLGcuaGEsZj8wOjFFMypfLnJhKDQ3LDEpKX1maW5hbGx5e2Y9Xy5GKGUuWmEpO2ZvcihnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlnPWcudmFsdWUsZygpO2UuWmEubGVuZ3RoPTA7bnVsbCE9PWUuamImJmNsZWFyVGltZW91dChlLmpiKX19fShjKTtpZihkPTFFMypfLnJhKGMueWEuaXNCYWNrZmlsbCgpPzU2OjU1KSlhLmwuZ2V0KGMueWEuZ2V0U2xvdElkKCkpLGMuamI9c2V0VGltZW91dChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5mYighMCl9fShjKSxkKTtzd2l0Y2goYy50Yil7Y2FzZSAyOmMuWmEucHVzaChPYihJLkIoKSxEbyxjLnlhLmdldFNsb3RJZCgpLDY4NCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5mYigpfX0oYykpKTtjYXNlIDE6Yy5aYS5wdXNoKE9iKEkuQigpLFBiLGMueWEuZ2V0U2xvdElkKCksNjg0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXtmPWYuaXNFbXB0eTsoMiE9PWUudGJ8fGYpJiZlLmZiKCl9fShjKSkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX19LGt5PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sLmdldChiLmdldFNsb3RJZCgpKTtjJiYoXy55KDMxOCkmJl8uci5jbGVhclRpbWVvdXQoYy5JYyksYS5sLmRlbGV0ZShiLmdldFNsb3RJZCgpKSl9LG55PWZ1bmN0aW9uKGEsYixjLGQsZSl7ZT12b2lkIDA9PT1lPzA6ZTt2YXIgZj1fLk5pKCksZz1mdW5jdGlvbigpe3ZhciBoPShlfHwwKS0oXy5OaSgpLWYpO2lmKDA8aCl7aD1zZXRUaW1lb3V0KEcoMzc1LGZ1bmN0aW9uKCl7cHkoYSxiLGMsZCl9KSxoKTtmb3IodmFyIGs9Xy5GKGIpLGw9ay5uZXh0KCk7IWwuZG9uZTtsPWsubmV4dCgpKWlmKGw9YS5sLmdldChsLnZhbHVlLmdldFNsb3RJZCgpKSlsLkljPWh9ZWxzZSBweShhLGIsYyxkKX07Xy55KDQwNSk/ZygpOkp4KDM0NyxnKX0scHk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZC5OLGY9ZC5SO2IuZm9yRWFjaChmdW5jdGlvbihrKXtreShhLGspfSk7dmFyIGc9Z2QoYixmdW5jdGlvbihrKXtrPWZbay5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiAwIT14YShrKS5sZW5ndGh8fF8ueSg0MTkpJiZudWxsIT1CKGssMTYpfSk7aWYoZ1shMV0pe3ZhciBoPV8uRihnWyExXSk7Zm9yKGI9aC5uZXh0KCk7IWIuZG9uZTtiPWgubmV4dCgpKWI9Yi52YWx1ZSxZeChhLHdpbmRvdyxkb2N1bWVudCx7c2xvdDpiLGNhOmQuUltiLmdldFNsb3RFbGVtZW50SWQoKV19LCEwLGUpfWlmKGI9Z1shMF0paWYoZT1jLkVhLGIuZm9yRWFjaChmdW5jdGlvbihrKXswPGsuQSYmam8oayk7YXAoYS5qLGspJiZybyhrKX0pLHZvaWQgMCE9PWMuSmEmJihhLkQ9Yy5KYSksYS5QPWMuV2F8fE5hTixhLlQ9Yy5YYXx8TmFOLCFhLlgpaWYoeChkLk4sNil8fF8ueSgzNjQpKWM9cXkoYixiWzBdLm0sZCkscnkoYSxkLGMsZSk7ZWxzZSBmb3IoYz1fLkYoYiksYj1jLm5leHQoKTshYi5kb25lO2I9Yy5uZXh0KCkpcnkoYSxkLFtbYi52YWx1ZV1dLGUpfSxYeD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT12b2lkIDA9PT1lP3dpbmRvdzplO2lmKCFfLnkoMzM2KSlmb3IodmFyIGY9Xy5GKGIpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKUF4KGEuTSxnLnZhbHVlKTthPV8uRihiKTtmb3IoZz1hLm5leHQoKTshZy5kb25lO2c9YS5uZXh0KCkpZz1nLnZhbHVlLFR4KGRbZy5nZXRTbG90RWxlbWVudElkKCldLGMpJiZSYihnLGUsZS5kb2N1bWVudCkscm8oZyk7cmV0dXJuITB9LGh5PWZ1bmN0aW9uKGEsYixjKXtpZihiKXt2YXIgZD1hLnYuZ2V0KGMpO2QmJihkLmxkLnVub2JzZXJ2ZShiKSxhLnYuZGVsZXRlKGMpKX19LHN5PWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD9kb2N1bWVudDpkO3ZhciBlLGYsZyxoPTAsaz1kLGw9ZnVuY3Rpb24oKXtoKys7aWYoMz09PWgpe3ZhciB1PWYsQz1lLFE9ZyxOPW5ldyB1aCxIPVVqKGMuTik7SD1IJiZ4KEgsOSk7aWYoXy55KDM5NikpRChOLDUsITEpO2Vsc2UgaWYodSl7aWYoSD0hSClycyh1KT8hMT09PXUuZ2RwckFwcGxpZXN8fFwidGN1bmF2YWlsYWJsZVwiPT09dS50Y1N0cmluZz9IPSEwOnUucHVycG9zZSYmdS52ZW5kb3I/KEg9dS52ZW5kb3IuY29uc2VudHMsKEg9ISghSHx8IUhbXCI3NTVcIl0pKSYmdS5wdXJwb3NlT25lVHJlYXRtZW50JiZcIkRFXCI9PT11LnB1Ymxpc2hlckNDP0g9ITA6SCYmKEg9dS5wdXJwb3NlLmNvbnNlbnRzLEg9ISghSHx8IUhbXCIxXCJdKSkpOkg9ITE6SD0hMTtIPUQoTiw1LEgpO0g9RChILDIsdS50Y1N0cmluZyk7SD1EKEgsNCx1LmFkZHRsQ29uc2VudHx8XCJcIik7RChILDcsdS5pbnRlcm5hbEVycm9yU3RhdGUpO3ZvaWQgMCE9PXUuZ2RwckFwcGxpZXMmJkQoTiwzLHUuZ2RwckFwcGxpZXMpO1widGN1bmF2YWlsYWJsZVwiPT09dS50Y1N0cmluZz9qbC5CKCkuaW5mbyhObShcImZhaWxlZFwiKSk6amwuQigpLmluZm8oTm0oXCJzdWNjZWVkZWRcIikpfWVsc2UgRChOLDUsIUgpO0MmJkQoTiwxLEMpO251bGwhPT1RJiZEKE4sNixRKTtiKE4pfX07THgoYS5qLmxlbmd0aD9hLmpbMF0ubTpcIlwiKTt2YXIgbT1mdW5jdGlvbigpe054KGssZnVuY3Rpb24odSl7Zj11O2woKX0pO094KGssZnVuY3Rpb24odSl7ZT11O2woKX0pfTtpZihfLnkoMzY3KSl7dmFyIG49bmV3IGlzKF8uY2coZCkpLHE9YS5qLmxlbmd0aD9hLmpbMF0ubTpcIlwiLHc9Xy5EaigyMjEpO2Q9bi5qP2tzKG4sXCJsb2FkZWRcIik6dC5Qcm9taXNlLnJlc29sdmUoKTtkLnRoZW4oZnVuY3Rpb24odSl7cmV0dXJuIGxzKG4sdSxxLHcpfSkudGhlbihmdW5jdGlvbih1KXtnPXU7bCgpfSk7ZC50aGVuKG0pfWVsc2UgS3goZnVuY3Rpb24oKXtNeChhLFVqKGMuTiksbCk7bSgpfSl9LHV5PWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD9kb2N1bWVudDpkO3N5KGIsZnVuY3Rpb24oZSl7Xy55KDQwNSkmJngoZSw1KT9KeCg3NTksZnVuY3Rpb24oKXt0eShhLGIsZSxjLGQpfSk6dHkoYSxiLGUsYyxkKTtQdChlLGQpfSxjLGQpfSx0eT1mdW5jdGlvbihhLGIsYyxkLGUpe2U9dm9pZCAwPT09ZT9kb2N1bWVudDplO3ZhciBmPU5hKGMpO3FwLkIoKS52PWY7dmFyIGc9ZC5OLGg9ZC5SO2Iuaj1iLmouZmlsdGVyKGZ1bmN0aW9uKG0pe209bS5nZXRTbG90RWxlbWVudElkKCk7KG09NSE9PWdrKGhbbV0pKXx8KG09MD09UG4od2luZG93LCEwLGYpKTtyZXR1cm4gbX0pO2lmKGIuai5sZW5ndGgpe2Zvcih2YXIgaz1fLkYoYi5qKSxsPWsubmV4dCgpOyFsLmRvbmU7bD1rLm5leHQoKSl2eShlLGwudmFsdWUsZCk7aWYobD1neShhLGIsYyxkKSlsLnRoZW4oRyg3NTEsZnVuY3Rpb24oKXtmb3IodmFyIG09Xy5GKGIuaiksbj1tLm5leHQoKTshbi5kb25lO249bS5uZXh0KCkpbj1uLnZhbHVlLHd5KDAsbixnLGhbbi5nZXRTbG90RWxlbWVudElkKCldKX0pKTtlbHNlIGZvcihhPV8uRihiLmopLGw9YS5uZXh0KCk7IWwuZG9uZTtsPWEubmV4dCgpKWw9bC52YWx1ZSx3eSgwLGwsZyxoW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXSl9fSxxeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W107YT1nZChhLGZ1bmN0aW9uKGUpe3JldHVybiBlLm19KTtfLkpiKGEsZnVuY3Rpb24oZSxmKXtlPV8ueSg2NSk/eHkoZSxjKTplO2Y9PWI/ZC51bnNoaWZ0KGUpOmQucHVzaChlKX0pO3JldHVybiBkfSxyeT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kb2N1bWVudDtpZihjKXtjPV8uRihjKTtmb3IodmFyIGY9Yy5uZXh0KCk7IWYuZG9uZTtmPWMubmV4dCgpKWY9YXkoYSxmLnZhbHVlLGQsYiksdXkoYSxmLGIsZSl9fSx3eT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT12b2lkIDA9PT1lP3dpbmRvdzplO1R4KGQsYykmJiFiLmomJlJiKGIsZSxlLmRvY3VtZW50KX0sdnk9ZnVuY3Rpb24oYSxiLGMpe2lmKCFvYShiLGEpKXt2YXIgZD1wYShiLGEpO2lmKGQpe3ZhciBlPWMuTjtjPWMuUltiLmdldFNsb3RFbGVtZW50SWQoKV07dmFyIGY9eGEoYyk7aWYoMD09Zi5sZW5ndGgpYz1udWxsO2Vsc2V7Yz1mWzBdLnNsaWNlKCk7aWYoMTxmLmxlbmd0aCl7dmFyIGc7YjppZigoZz1wYShiLGEpKSYmZy5zdHlsZS5oZWlnaHQmJmcuc3R5bGUud2lkdGgpe2c9W2cuc3R5bGUud2lkdGgsZy5zdHlsZS5oZWlnaHRdO2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7KytoKWlmKDI8Z1toXS5sZW5ndGgmJlwicHhcIj09Z1toXS5zdWJzdHJpbmcoZ1toXS5sZW5ndGgtMikpZ1toXT1wYXJzZUludChnW2hdLDEwKTtlbHNle2c9bnVsbDticmVhayBifX1lbHNlIGc9bnVsbDtjPWd8fGN9aWYoXy55KDM5MikpZm9yKGY9Xy5GKGYpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWlmKGc9Zy52YWx1ZSxBcnJheS5pc0FycmF5KGcpJiYhKDI1MDxnWzFdKSlpZihBcnJheS5pc0FycmF5KGMpKXtpZihoPV8uRihnKSxnPWgubmV4dCgpLnZhbHVlLGg9aC5uZXh0KCkudmFsdWUsMjUwPj1oJiZoPmNbMV0mJihjWzFdPWgpLDEwPD1nJiZnPGNbMF18fDEwPmNbMF0pY1swXT1nfWVsc2UgYz1nfWlmKF8ueSgzODkpKXtpZihhPSExPT09eChlLDE1KSxBcnJheS5pc0FycmF5KGMpJiYoYj13YShkLHdpbmRvdyl8fGQuc3R5bGUpKWlmKGM9Xy5GKGMpLGU9Yy5uZXh0KCkudmFsdWUsYz1jLm5leHQoKS52YWx1ZSxkLnN0eWxlLm1pbldpZHRoPVB2KGIubWluV2lkdGgsZSksZC5zdHlsZS5taW5IZWlnaHQ9UHYoYi5taW5IZWlnaHQsYyksYz1iLmRpc3BsYXksKGU9XCJub25lXCI9PT1jKXx8XCJmbGV4XCI9PT1jfHxjJiZfLkEoYyxcImVuZHNXaXRoXCIpLmNhbGwoYyxcImJsb2NrXCIpKWM9Yi5hbGlnbkl0ZW1zLGY9W1wibm9ybWFsXCIsXCJjZW50ZXJcIixcInVuc2V0XCIsXCJcIl0sXy5BKGYsXCJpbmNsdWRlc1wiKS5jYWxsKGYsYi5qdXN0aWZ5Q29udGVudCkmJl8uQShmLFwiaW5jbHVkZXNcIikuY2FsbChmLGMpJiYoZC5zdHlsZS5hbGlnbkl0ZW1zPVwiY2VudGVyXCIsYXx8KGQuc3R5bGUuanVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIiksZXx8KGQuc3R5bGUuZGlzcGxheT1cImZsZXhcIikpfWVsc2UgUXYoYSxkLFZrKGIuZ2V0U2xvdElkKCkpLCEheChlLDE1KSxjKX19fSx4eT1mdW5jdGlvbihhLGIpe3ZhciBjPWIuTixkPWIuUixlPWZ1bmN0aW9uKGcpe2c9ZFtnLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIDA9PWdrKGcpfSxmPVtdO2EuZm9yRWFjaChmdW5jdGlvbihnKXtpZihlKGcpKXt2YXIgaD1kW2cuZ2V0U2xvdEVsZW1lbnRJZCgpXTtoPVBrKHtzbG90OmcsY2E6aH0sZG9jdW1lbnQsISF4KGMsMTUpKXx8e307Zi5wdXNoKHtqYzp2b2lkIDA9PT1oLnk/SW5maW5pdHk6aC55LHNsb3Q6Z30pfX0pO2VkKGYsZnVuY3Rpb24oZyxoKXtyZXR1cm4gZGQoZy5qYyxoLmpjKX0pO3JldHVybiBhLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gZShnKT9mLnNoaWZ0KCkuc2xvdDpnfSl9LGp5PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9dm9pZCAwPT09Zj9fLnIuZG9jdW1lbnQ6Zjt2YXIgZz12b2lkIDA9PT1nP1J4Omc7dmFyIGg9Yy5qO2Eub1tjLmxdPWguc2xpY2UoKTt2YXIgaz1HKDY0NixmdW5jdGlvbihtLG4scSl7dmFyIHc9Zjt3PXZvaWQgMD09PXc/ZG9jdW1lbnQ6dztfLnkoNDA0KT95eShhLGMsZCxlLG0sbixxLHcpOnp5KGEsYyxkLGUsbSxuLHEsdyl9KSxsPUcoNjQ3LGZ1bmN0aW9uKCl7Zm9yKHZhciBtPWMubCxuPWEub1ttXXx8W10scT0wO3E8bi5sZW5ndGg7KytxKWlmKG5bcV0pe3ZhciB3PW5ldyBkbjt3PSd7XCJlbXB0eVwiOicrRCh3LDgsITApLm0oKStcIn1cIjt2YXIgdT1hLEM9YyxRPWQsTj1lLEg9cSxxYT12b2lkIDA7cWE9dm9pZCAwPT09cWE/ZG9jdW1lbnQ6cWE7Xy55KDQwNCk/eXkodSxDLFEsTixILHcsXCJcIixxYSk6enkodSxDLFEsTixILHcsXCJcIixxYSl9ZGVsZXRlIGEub1ttXTtjYigpfSk7Zz1HKDI4OSxnKTtiPXlrKHhrKGIpKTtReChoKTtrPW5ldyBIeChrLGcsbCk7bD0hXy55KDM4NSl8fCEheChkLDUpO0d4KG5ldyBEeChiLGssdm9pZCAwPT09bD8hMDpsKSk7aD1fLkYoaCk7Zm9yKGs9aC5uZXh0KCk7IWsuZG9uZTtrPWgubmV4dCgpKWs9ay52YWx1ZSxfLnkoNDEyKXx8Xy55KDQxMil8fChrLlY9ay5DLmluZm8oc2woay5nZXRBZFVuaXRQYXRoKCkpLG51bGwsayksV2kodGsuQigpLFwiN1wiLDksay5BLTEsMCxrLmwpLGsuRD1udWxsLGsuUD1udWxsKSxRbyhJLkIoKSxJbyxrLmdldFNsb3RJZCgpKSxhLkgoayxiLGUpfTtXeC5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIsYyl7aWYoeChjLk4sNil8fF8ueSgzNjQpKXt2YXIgZD1heSh0aGlzLFthXSwxLGMpO2J5KHRoaXMsZCk7dmFyIGU9Y3kodGhpcyxfLnkoMzY0KSxkLG5ldyB1aCxjLCEwKTtubyhhLHZhKGZ1bmN0aW9uKCl7cmV0dXJuIHhrKFV1KGUpKX0pKX1lbHNlIG5vKGEsZnVuY3Rpb24oKXtyZXR1cm4gYn0pfTt2YXIgenk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtoPXZvaWQgMD09PWg/ZG9jdW1lbnQ6aDt2YXIgaz1iLmwsbD1hLm9ba118fFtdLG09bFtlXTtsW2VdPW51bGw7dHJ5e3ZhciBuPUpTT04ucGFyc2UoZik7dmFyIHE9Xy5NYyhuKT9uOm51bGx9Y2F0Y2godyl7cT1udWxsfWw9KGU9cSkmJkJnKGUsaWQpO2U9ZSYmZVtsXTtlPVwic3RyaW5nXCI9PT10eXBlb2YgbCYmQXJyYXkuaXNBcnJheShlKT9uZXcgZG4oZS5zbGljZSgpKTpudWxsO2lmKG0paWYoYS5BW2tdfHwoYS5BW2tdPSEwLFlpKHRrLkIoKSxcIjRcIixIdChiLG0pKSksXy55KDQxMil8fG9vKG0pLGUpe2Y9dGsuQigpO2s9bS5sO2w9QihlLDM0KXx8XCJcIjtmLmomJihfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXM9Xy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zfHx7fSxfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXNbXCJxcWlkLlwiK2tdPWwpO2Y9QihlLDI3KTtmPV8uRihmKTtmb3Ioaz1mLm5leHQoKTshay5kb25lO2s9Zi5uZXh0KCkpbWooay52YWx1ZSk7bmooNCk7WngoYSxtLGMsZSxiLGQpO20ubGF8fCh4KGUsOCl8fGEuWT8oYj1oLGM9ZW8obSksKGc9cGEobSxiKSkmJmcuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIixjKSxZaSh0ay5CKCksXCI1XCIsbS5sKSxfLnkoNDEyKT9RbyhJLkIoKSxDbyxtLmdldFNsb3RJZCgpKTptLlRhKCksYz1fLnkoMTIzKSxZeChhLF8ucixiLHtzbG90Om0sY2E6ZC5SW20uZ2V0U2xvdEVsZW1lbnRJZCgpXX0sYyxkLk4pLFFvKEkuQigpLFBiLG0uZ2V0U2xvdElkKCkse2lzRW1wdHk6ITAsc2xvdENvbnRlbnRDaGFuZ2VkOmN9KSk6QngoYS5NLG0sYS5qLGEuVSxkLGUsZyxoLGMpKX1lbHNlIGJsKDY0NixFcnJvcihcImludmFsaWQgcmVzcG9uc2U6IFwiK2YpKTtlbHNlIGJsKDY0NixFcnJvcihcIm1pc3Npbmcgc2xvdDogXCIrbCkpfSx5eT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2g9dm9pZCAwPT09aD9kb2N1bWVudDpoO3ZhciBrPWIubCxsPWEub1trXXx8W10sbT1sW2VdO2xbZV09bnVsbDttPyhhLkFba118fChhLkFba109ITAsWWkodGsuQigpLFwiNFwiLEh0KGIsbSkpKSxtLmxhfHwoZT1oLGg9ZC5OLGg9VHgoZC5SW20uZ2V0U2xvdEVsZW1lbnRJZCgpXSxoKSxDeChhLk0sbSxhLmosYS5VLGQsZyxlLGMsZixiLndhLEh0KGIsbSksaCxhLkssYS5HKSkpOmJsKDY0NixFcnJvcihcIm1pc3Npbmcgc2xvdDogXCIrZikpfTt2YXIgQXk9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuaj1hO3RoaXMubD1iO3RoaXMub3B0aW9ucz1jfSxCeT1mdW5jdGlvbihhKXt0aGlzLnB1YmFkcz1hO3RoaXMuaj1uZXcgdC5TZXQ7dGhpcy5sPXt9fSxDeT1mdW5jdGlvbihhLGIsYyl7aWYoeChiLk4sNCkpcmV0dXJuW107aWYoIXgoYi5OLDYpfHxiLlJbYy5nZXRTbG90RWxlbWVudElkKCldJiZ4KGIuUltjLmdldFNsb3RFbGVtZW50SWQoKV0sMTcpKXJldHVybiBhLmouYWRkKGMpLF8uUihjLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5qLmRlbGV0ZShjKX0pLFtjXTtiPVtdO2Zvcih2YXIgZD17fSxlPV8uRihhLnB1YmFkcy5sKSxmPWUubmV4dCgpOyFmLmRvbmU7ZD17TGE6ZC5MYX0sZj1lLm5leHQoKSlkLkxhPWYudmFsdWUsYS5qLmhhcyhkLkxhKXx8KGEuai5hZGQoZC5MYSksXy5SKGQuTGEsZnVuY3Rpb24oZyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5qLmRlbGV0ZShnLkxhKX19KGQpKSxiLnB1c2goZC5MYSkpO3JldHVybiBifTtCeS5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihhLGIpe3ZhciBjPUN5KHRoaXMsYSxiKTtEeSh0aGlzLnB1YmFkcyxjLGEse0VhOjF9KTthPWIuZ2V0QWRVbml0UGF0aCgpO2lmKChiPXRoaXMubFthXSkmJiFfLnkoMzE5KSl7Yj1fLkYoYik7Zm9yKGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxEeSh0aGlzLnB1YmFkcyxjLmosYy5sLGMub3B0aW9ucyk7ZGVsZXRlIHRoaXMubFthXX19O3ZhciBGeT1mdW5jdGlvbihhLGIsYyxkKXtpZihfLnkoMzE5KSlJcChhLnB1YmFkcyxHKDY5MCxmdW5jdGlvbigpe2Zvcih2YXIgaD17fSxrPV8uRihjKSxsPWsubmV4dCgpOyFsLmRvbmU7aD17Z2I6aC5nYn0sbD1rLm5leHQoKSloLmdiPWwudmFsdWUsYS5qLmFkZChoLmdiKSxfLlIoaC5nYixmdW5jdGlvbihtKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmouZGVsZXRlKG0uZ2IpfX0oaCkpO0R5KGEucHViYWRzLGMsYixkKX0pKTtlbHNlIGlmKGEucHViYWRzLmope2Zvcih2YXIgZT17fSxmPV8uRihjKSxnPWYubmV4dCgpOyFnLmRvbmU7ZT17aGI6ZS5oYn0sZz1mLm5leHQoKSllLmhiPWcudmFsdWUsYS5qLmFkZChlLmhiKSxfLlIoZS5oYixmdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmouZGVsZXRlKGguaGIpfX0oZSkpO0R5KGEucHViYWRzLGMsYixkKX1lbHNlIGMubGVuZ3RoJiZ4KGIuTiw2KT8oZT1jWzBdLmdldEFkVW5pdFBhdGgoKSxmPWEubFtlXXx8W10sZi5wdXNoKG5ldyBBeShjLGIsZCkpLGEubFtlXT1mKTpFeShhLnB1YmFkcyl9LEd5PWZ1bmN0aW9uKCl7SHAuY2FsbCh0aGlzKTt0aGlzLm09dGhpcy5DPSExO18ueSg4NykmJihLdnx8d2luZG93LnBlcmZvcm1hbmNlJiZQZyh3aW5kb3cucGVyZm9ybWFuY2Uubm93KSYmKEt2PW5ldyBOdikpO3RoaXMubz1uZXcgQnkodGhpcyl9O18uSihHeSxIcCk7Xy5wPUd5LnByb3RvdHlwZTtfLnAuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGN1KHRoaXMsa28pfTtfLnAuZGlzcGxheT1mdW5jdGlvbihhLGIsYyxkKXtjPXZvaWQgMD09PWM/XCJcIjpjO2Q9dm9pZCAwPT09ZD9cIlwiOmQ7dmFyIGU9XCJcIjtpZihjKWlmKF8uTWMoYykmJjE9PWMubm9kZVR5cGUpe3ZhciBmPWM7ZT1mLmlkfWVsc2UgZT1jO2lwKHRoaXMpO2I9JHAoYSxiLGUpO2E9Yi5zbG90O2I9Yi5GYTthJiZiJiYoZiYmIWUmJihmLmlkPWEuZ2V0U2xvdElkKCkuaiksdGhpcy54YShhLGIpLEQoYiw3LGQpLGRxKGZ8fGEuZ2V0U2xvdElkKCkuaikpfTtfLnAuTmI9ZnVuY3Rpb24oKXt2YXIgYT1Ubi5CKCkuajtpZih4KGEsNil8fF8ueSgzMjApKXtIeSh0aGlzLGEpO2Zvcih2YXIgYj1fLkYodGhpcy5sKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlJeSh0aGlzLGMudmFsdWUpfVl0KHRoaXMsYSk7dGhpcy5tJiZidSh0aGlzKTtaYigpfTtfLnAuWj1mdW5jdGlvbigpe3JldHVyblwicHVibGlzaGVyX2Fkc1wifTtfLnAueGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO3goYiwxNyl8fEl5KHRoaXMsYSk7dmFyIGQ9YS5nZXRTbG90SWQoKTtRbyhJLkIoKSxObyxkLGQpO18uUihhLE9iKEkuQigpLEVvLGQsNzAxLGZ1bmN0aW9uKGUpe3ZhciBmPWUubWFrZVJld2FyZGVkVmlzaWJsZTtlPWUucGF5bG9hZDtyZXR1cm4gSnAoYyxcInJld2FyZGVkU2xvdFJlYWR5XCIsbmV3IHlwKGdsKGEpLGMuWigpLGYsZSkpfSkpO18uUihhLE9iKEkuQigpLEZvLGQsNzAyLGZ1bmN0aW9uKGUpe3JldHVybiBKcChjLFwicmV3YXJkZWRTbG90R3JhbnRlZFwiLG5ldyB6cChnbChhKSxjLlooKSxlKSl9KSk7Xy5SKGEsT2IoSS5CKCksR28sZCw3MDMsZnVuY3Rpb24oKXtfLnkoNDE2KXx8SnAoYyxcInJld2FyZGVkU2xvdENhbmNlbGVkXCIsbmV3IEFwKGdsKGEpLGMuWigpKSk7SnAoYyxcInJld2FyZGVkU2xvdENsb3NlZFwiLG5ldyBCcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLEhvLGQsNzA0LGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJyZXdhcmRlZFNsb3RDb21wbGV0ZWRcIixuZXcgQ3AoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxJbyxkLDcwNSxmdW5jdGlvbigpe3JldHVybiBKcChjLFwic2xvdFJlcXVlc3RlZFwiLG5ldyBEcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLFBiLGQsNzA4LGZ1bmN0aW9uKGUpe3ZhciBmPWUuc2l6ZSxnPWUuc2xvdENvbnRlbnRDaGFuZ2VkLGg9ZS5pc0VtcHR5O2U9bmV3IHRwKGdsKGEpLFwicHVibGlzaGVyX2Fkc1wiKTtoJiYoZS5pc0VtcHR5PWgpO2cmJihlLnNsb3RDb250ZW50Q2hhbmdlZD1nKTtnPWEuSDtmJiZnJiYoZS5zaXplPVtmLndpZHRoLGYuaGVpZ2h0XSxlLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZD1nLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZCxlLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZD1nLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZCxlLmlzQmFja2ZpbGw9Zy5pc0JhY2tmaWxsLGUuY3JlYXRpdmVJZD1nLmNyZWF0aXZlSWQsZS5saW5lSXRlbUlkPWcubGluZUl0ZW1JZCxlLmNyZWF0aXZlVGVtcGxhdGVJZD1nLmNyZWF0aXZlVGVtcGxhdGVJZCxlLmFkdmVydGlzZXJJZD1nLmFkdmVydGlzZXJJZCxlLmNhbXBhaWduSWQ9Zy5jYW1wYWlnbklkLGUueWllbGRHcm91cElkcz1nLnlpZWxkR3JvdXBJZHMsZS5jb21wYW55SWRzPWcuY29tcGFueUlkcyk7SnAoYyxcInNsb3RSZW5kZXJFbmRlZFwiLGUpfSkpO18uUihhLE9iKEkuQigpLEpvLGQsNzA5LGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJzbG90UmVzcG9uc2VSZWNlaXZlZFwiLG5ldyBFcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLEtvLGQsNzEwLGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJzbG90T25sb2FkXCIsbmV3IHdwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksRG8sZCw3MTUsZnVuY3Rpb24oKXtyZXR1cm4gSnAoYyxcImltcHJlc3Npb25WaWV3YWJsZVwiLG5ldyB1cChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLExvLGQsNzE2LGZ1bmN0aW9uKGUpe3JldHVybiBKcChjLFwic2xvdFZpc2liaWxpdHlDaGFuZ2VkXCIsbmV3IHZwKGdsKGEpLGMuWigpLGUpKX0pKTtfLlIoYSxPYihJLkIoKSx6byxkLDYxNCxmdW5jdGlvbigpe3ZhciBlPVRuLkIoKS5qO2U9S2soZSxWbigpKTtteSgkdCgpLFthXSx7RWE6Mn0sZSl9KSk7Xy5SKGEsT2IoSS5CKCksR28sZCw2ODcsZnVuY3Rpb24oZSl7WHgoJHQoKSxbYV0sZS5OLGUuUil9KSk7SHAucHJvdG90eXBlLnhhLmNhbGwodGhpcyxhLGIpfTtfLnAuWGI9ZnVuY3Rpb24oYSxiKXtpcCh0aGlzKTtIeSh0aGlzLGEuTik7SXkodGhpcyxiKTt0aGlzLmxvZy5pbmZvKFRsKCkpO3ZhciBjPXgoYS5OLDYpO2lmKGFwKFdvKCksYikmJihjfHwhYi5qKSl7aWYoYyYmKCR0KCksYz1wYShiLGRvY3VtZW50KSkpe3ZhciBkPUkuQigpO1BvKGQsQW8sbnVsbCxjKX14KGEuTiw0KSYmIV8ueSgzOTQpJiZ3eSgkdCgpLGIsYS5OLGEuUltiLmdldFNsb3RFbGVtZW50SWQoKV0pO3RoaXMuby5kaXNwbGF5KGEsYil9fTt2YXIgSXk9ZnVuY3Rpb24oYSxiKXthLmomJlhvKFdvKCksYik7aWYoYS5qKXt2YXIgYz1XbihUbi5CKCksYi5nZXRTbG90RWxlbWVudElkKCkpO2lmKGMpe2M9dWYoYyxKaiwzKTtjPV8uRihjKTtmb3IodmFyIGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2Q9QihlLDIpO2lmKChlPUtqKGUpKSYmZCYmZC5sZW5ndGgpe3ZhciBmO2lmKGY9YXAoV28oKSxiKSl7dmFyIGc9V28oKTtmPWRbMF07Zj0oZz1nLmouZ2V0KGIpKSYmd28oZy5pYyxlLGYpfWZ8fGEubG9nLkooVmwoZSxkWzBdLGIuZ2V0QWRVbml0UGF0aCgpKSxhLGIpfX19fX0sSHk9ZnVuY3Rpb24oYSxiKXtpZigoXy55KDE0OCl8fCFhLkMpJiZhLmope2EuQz0hMDtiPXVmKGIsSmosMTQpO2I9Xy5GKGIpO2Zvcih2YXIgYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWMudmFsdWU7Yz1CKGQsMik7aWYoKGQ9S2ooZCkpJiZjJiZjLmxlbmd0aCl7dmFyIGU9V28oKTt3byhlLmwsZCxjWzBdKXx8YS5sb2cuSihVbChkLGNbMF0pLGEpfX19fSxXdD1mdW5jdGlvbihhLGIsYyl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBifHwwPj1iLmxlbmd0aHx8IWMpcmV0dXJuIGEubG9nLmVycm9yKHFsKFwiUHViQWRzU2VydmljZS5kZWZpbmVQYXNzYmFja1wiLFtiLGNdKSkse3Nsb3Q6bnVsbCxGYTpudWxsfTtjPSRwKGIsYyx2b2lkIDAsITApO2I9Yy5zbG90O2M9Yy5GYTtpZighYnx8IWMpcmV0dXJue3Nsb3Q6bnVsbCxGYTpudWxsfTtEKGMsMTcsITApO3JldHVybntzbG90Om5ldyBmdyhiLGEsYyksRmE6Y319LGd3PWZ1bmN0aW9uKGEsYixjKXtpcChhKTtYbyhXbygpLGMpO18ueSg0MjMpfHwoYy5lYz0hMCk7YS5vLmRpc3BsYXkoYixjKX0sWHQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9SnkoYSxjKTtpZihlLmxlbmd0aCl7aWYoXy55KDEwNCkpe2lwKGEpO2M9Xy5GKGMpO2Zvcih2YXIgZj1jLm5leHQoKTshZi5kb25lO2Y9Yy5uZXh0KCkpe2Y9Zi52YWx1ZTt2YXIgZz1iLlJbZi5nZXRTbG90RWxlbWVudElkKCldO2EueGEoZixnKX19RnkoYS5vLGIsZSxkfHx7RWE6Mn0pfWVsc2UgYS5sb2cuSihxbChcIlB1YkFkc1NlcnZpY2UucmVmcmVzaFwiLFtjXS5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIHZvaWQgMCE9PWh9KSksYSl9LER5PWZ1bmN0aW9uKGEsYixjLGQpe2EubG9nLmluZm8oZG0oKSxhKTtpZihLeShiLGQsYykmJjEhPT1kLkVhKWZvcihhPV8uRihiKSxiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSljPWIudmFsdWUsYj1JLkIoKSxjPWMuZ2V0U2xvdElkKCksUG8oYixPbyxudWxsLGMpfSxLeT1mdW5jdGlvbihhLGIsYyl7YT1hLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gYXAoV28oKSxlKX0pO3ZhciBkPWEuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBfLllvKFdvKCksZSl9KTtpZighZC5sZW5ndGgpcmV0dXJuIG51bGw7bXkoJHQoKSxkLGIsYyk7cmV0dXJuIGF9LGF1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuaj97dmlkOkIoYiwyMil8fFwiXCIsY21zaWQ6QihiLDIzKXx8XCJcIn06bnVsbH0sWXQ9ZnVuY3Rpb24oYSxiKXt4KGIsMjEpJiZhLmomJigkdCgpLkQ9TmsoKSl9LEx5PWZ1bmN0aW9uKGEsYixjLGQpe2E9Yj9KeShhLGIpOlBwKFFwLkIoKSkuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBhcChXbygpLGYpfSk7Yj1fLkYoYSk7Zm9yKHZhciBlPWIubmV4dCgpOyFlLmRvbmU7ZT1iLm5leHQoKSllPWUudmFsdWUsc28oZSksZT1lLmdldFNsb3RJZCgpLFFvKEkuQigpLFFiLGUsZSk7cmV0dXJuIFh4KCR0KCksYSxjLGQpfSxadD1mdW5jdGlvbihhLGIsYyxkKXtpZighYS5qKXJldHVybiBhLmxvZy5KKGNtKCksYSksITE7dmFyIGU9bnVsbDtpZihkJiYoZT1KeShhLGQpLDA9PWUubGVuZ3RoKSlyZXR1cm4gYS5sb2cuSihxbChcIlB1YkFkc1NlcnZpY2UuY2xlYXJcIixbZF0uZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiB2b2lkIDAhPT1mfSkpLGEpLCExO2EubG9nLmluZm8oZW0oKSxhKTtyZXR1cm4gTHkoYSxlLGIsYyl9O0d5LnByb3RvdHlwZS5nZXRWZXJzaW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5qKXJldHVybiAkYSgpfTt2YXIgSnk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtpZighQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYztiLmZvckVhY2goZnVuY3Rpb24oZCxlKXsoZD16aihkLGtvKSkmJiFkLmxhP2MucHVzaChkKTphLmxvZy5KKGptKFN0cmluZyhlKSksYSl9KTtyZXR1cm4gY30sYnU9ZnVuY3Rpb24oYSl7YS5tPSEwO2lmKGEuail7V28oKS52PSEwO2E9bmV3IFdrKFwiZ3B0X21hcmtBc0FtcFwiLHprKCksXy5EaigyMykpO2xiKGEsUHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGFwKFdvKCksZSl9KSk7dHJ5e3ZhciBiPVNoKF8ucik7YiYmRShhLFwibnR5cGVcIixiKTt2YXIgYz1fLnIubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zLGQ9bnVsbCE9Yz9fLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksYykubWFwKGZ1bmN0aW9uKGUpe3JldHVybigoL14oPzpodHRwcz86XFwvXFwvKT8oW15cXC9cXD86I10rKS9pLmV4ZWMoZSl8fFtdKVsxXXx8ZSkuc3Vic3RyKDAsMjApfSk6W107RShhLFwib3N0XCIsZC5zbGljZSgwLDEwKS5qb2luKCkpfWNhdGNoKGUpe31ZayhhKX19O0d5LnByb3RvdHlwZS5kZXN0cm95U2xvdHM9ZnVuY3Rpb24oYSl7dmFyIGI9SHAucHJvdG90eXBlLmRlc3Ryb3lTbG90cy5jYWxsKHRoaXMsYSk7aWYoIWIubGVuZ3RoKXJldHVybiBiO2lmKHRoaXMuail7dmFyIGM9VG4uQigpLmo7THkodGhpcyxhLGMsVm4oKSk7Y3AoV28oKSxhKX1yZXR1cm4gYn07dmFyIEV5PWZ1bmN0aW9uKGEpe3ZhciBiPWJtKCk7YS5sb2cuSihiLGEpfTtJYyhHeSk7dmFyIE15PUcoMjYsZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCksYj1fLkEoYSxcImZpbmRcIikuY2FsbChhLFwicHVibGlzaGVyX2Fkc1wiKTtifHwoYj1uZXcgR3ksYS5hZGQoYikpO3JldHVybiBifSk7V2IoXCJwdWJhZHNcIixmdW5jdGlvbigpe3JldHVybiBnbChfLnkoNDA2KT9HeS5CKCk6TXkoKSl9KTt2YXIgVnk9ZnVuY3Rpb24oYSxiKXtqcC5jYWxsKHRoaXMsYSk7dmFyIGM9dGhpczt0aGlzLnNldD1TKDU3NixmdW5jdGlvbihkLGUpe2Euc2V0KGQsZSk7cmV0dXJuIGN9KTt0aGlzLmdldD1TKDU3NyxmdW5jdGlvbihkKXtyZXR1cm4gYS5nZXQoZCl9KTt0aGlzLmdldEF0dHJpYnV0ZUtleXM9Uyg1NzgsZnVuY3Rpb24oKXtyZXR1cm4gemcoYS5tKX0pO3RoaXMuZGlzcGxheT1TKDU1OCxmdW5jdGlvbihkLGUsZixnKXtyZXR1cm4gYS5kaXNwbGF5KGQsZSx2b2lkIDA9PT1mP1wiXCI6Zix2b2lkIDA9PT1nP1wiXCI6Zyl9KTt0aGlzLm5vdGlmeVVuZmlsbGVkU2xvdHM9Uyg2OSxmdW5jdGlvbihkKXthLlNhJiZOeShhLE95KGEsZCkpfSk7dGhpcy5pc1JvYWRibG9ja2luZ1N1cHBvcnRlZD1TKDExMSxmdW5jdGlvbigpe3JldHVybiBQeShhKX0pO3RoaXMucmVmcmVzaEFsbFNsb3RzPVMoNjAsZnVuY3Rpb24oKXthLlNhJiZOeShhKX0pO3RoaXMuc2V0VmlkZW9TZXNzaW9uPVMoNjEsZnVuY3Rpb24oZCxlLGYpe2EuRz1kO2EuQz1lO2EuRD1mfSk7dGhpcy5nZXREaXNwbGF5QWRzQ29ycmVsYXRvcj1TKDYyLGZ1bmN0aW9uKGQpe3JldHVybiBReShhLHZvaWQgMD09PWQ/XCJcIjpkKX0pO3RoaXMuZ2V0VmlkZW9TdHJlYW1Db3JyZWxhdG9yPVMoNjMsZnVuY3Rpb24oKXtpZigoXy55KDQwNik/R3kuQigpOk15KCkpLmope3ZhciBkPSR0KCkuRDtkPWlzTmFOKGQpPzA6ZH1lbHNlIGQ9MDtyZXR1cm4gZH0pO3RoaXMuaXNTbG90QVBlcnNpc3RlbnRSb2FkYmxvY2s9Uyg2NCxmdW5jdGlvbihkKXtkPXpqKGQsYik7cmV0dXJuISFkJiZSeShhLGQpfSk7dGhpcy5vbkltcGxlbWVudGF0aW9uTG9hZGVkPVMoNjUsZnVuY3Rpb24oKXthLmxvZy5pbmZvKFNsKFwiR1BUIENvbXBhbmlvbkFkc1wiKSxhKX0pO3RoaXMuZmlsbFNsb3Q9Uyg2NixmdW5jdGlvbihkLGUpe2Q9emooZCxiKTt2YXIgZjtpZihmPSEhZClkJiZacChkKSYmZSYmXCJzdHJpbmdcIj09PXR5cGVvZiBlPyhTeShhLGQpLmNvbnRlbnQ9ZSxmPVR5KGEsZCkpOmY9ITE7cmV0dXJuIGZ9KTt0aGlzLnNsb3RSZW5kZXJFbmRlZD1TKDY3LGZ1bmN0aW9uKGQsZSxmKXtyZXR1cm4oZD16aihkLGIpKSYmVXkoYSxkLGUsZil9KTt0aGlzLnNldFJlZnJlc2hVbmZpbGxlZFNsb3RzPVMoNTksZnVuY3Rpb24oZCl7XCJib29sZWFuXCI9PT10eXBlb2YgZCYmKGEuU2E9ZCl9KX07Xy5KKFZ5LGpwKTt2YXIgWHk9ZnVuY3Rpb24oYSxiKXtqcC5jYWxsKHRoaXMsYSk7dGhpcy5zZXRDb250ZW50PVMoNzIsZnVuY3Rpb24oYyxkKXtyZXR1cm4oYz16aihjLGIpKSYmV3koYSxjLGQpfSk7dGhpcy5kaXNwbGF5PVMoNTYyLGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBhLmRpc3BsYXkoYyxkLHZvaWQgMD09PWU/XCJcIjplLHZvaWQgMD09PWY/XCJcIjpmKX0pfTtfLkooWHksanApO3ZhciBZeT1mdW5jdGlvbigpe0hwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKFl5LEhwKTtZeS5CPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJNdXN0IGJlIG92ZXJyaWRkZW5cIik7fTt2YXIgWnk9ZnVuY3Rpb24oKXtZeS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5vPW5ldyB0Lk1hcDt0aGlzLm09e307dGhpcy5TYT0hMTt0aGlzLkc9MDt0aGlzLkQ9dGhpcy5DPXZvaWQgMDt0aGlzLkg9dGhpcy5JPSExfTtfLkooWnksWXkpO1p5LkI9WXkuQjtfLnA9WnkucHJvdG90eXBlO18ucC5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgVnkodGhpcyxrbyl9O18ucC5zZXQ9ZnVuY3Rpb24oYSxiKXtcInN0cmluZ1wiPT09dHlwZW9mIGEmJmEubGVuZ3RoPyh0aGlzLm1bYV09Yix0aGlzLmxvZy5pbmZvKEtsKGEsU3RyaW5nKGIpLHRoaXMuWigpKSx0aGlzLG51bGwpKTp0aGlzLmxvZy5KKExsKFN0cmluZyhhKSxTdHJpbmcoYiksdGhpcy5aKCkpLHRoaXMsbnVsbCk7cmV0dXJuIHRoaXN9O18ucC5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGwhPT0oYj10aGlzLm1bYV0pJiZ2b2lkIDAhPT1iP2I6bnVsbH07Xy5wLmRpc3BsYXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yz12b2lkIDA9PT1jP1wiXCI6YztkPXZvaWQgMD09PWQ/XCJcIjpkO2lwKHRoaXMpO2I9JHAoYSxiLGMpO2E9Yi5zbG90O2I9Yi5GYTt0aGlzLnhhKGEsYik7RChiLDcsZCk7ZHEoYS5nZXRTbG90SWQoKS5qKX07Xy5wLnhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztfLlIoYSxPYihJLkIoKSxKbyxhLmdldFNsb3RJZCgpLDc1MixmdW5jdGlvbihkKXt4KGQsMTEpJiYoU3koYyxhKS5qPSEwKX0pKTtZeS5wcm90b3R5cGUueGEuY2FsbCh0aGlzLGEsYil9O18ucC5OYj1mdW5jdGlvbigpeyR5KHRoaXMpfTt2YXIgUHk9ZnVuY3Rpb24oYSl7dmFyIGI9Xy55KDQwNik/R3kuQigpOk15KCk7aWYoIWIuailyZXR1cm4hMTt2YXIgYz1iLmw7YT1hLmw7cmV0dXJuIGMubGVuZ3RoIT09YS5sZW5ndGg/ITE6IWEuc29tZShmdW5jdGlvbihkKXtyZXR1cm4hXy5BKGMsXCJpbmNsdWRlc1wiKS5jYWxsKGMsZCl9KX0sUXk9ZnVuY3Rpb24oYSxiKXsoYj12b2lkIDA9PT1iP1wiXCI6YikmJiFhLkgmJmtiKFwiaW1hX3Nka192XCIsZnVuY3Rpb24oZCl7YS5IPSEwO0UoZCxcInZcIixiKX0pO3ZhciBjPVRuLkIoKS5qO3JldHVybiBTdHJpbmcoQihjLDI2KSl9LE55PWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy55KDQwNik/R3kuQigpOk15KCksZD1Ubi5CKCkuaixlPVZuKCk7aWYoYy5qKXt2YXIgZj17RWE6M307dm9pZCAwIT09YS5HJiYoZi5KYT1hLkcpO2EuQyYmKGYuV2E9YS5DKTthLkQmJihmLlhhPWEuRCk7YT1udWxsIT09YiYmdm9pZCAwIT09Yj9iOmEubDtkPUtrKGQsZSk7Zi5KYSYmXCJudW1iZXJcIiE9PXR5cGVvZiBmLkphfHxmLldhJiZcIm51bWJlclwiIT09dHlwZW9mIGYuV2F8fGYuWGEmJlwibnVtYmVyXCIhPT10eXBlb2YgZi5YYXx8WHQoYyxkLGEsZil9ZWxzZSBhLmxvZy5lcnJvcihPbChcIlB1YkFkc1wiLFwicmVmcmVzaFwiKSl9LFJ5PWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoKF8ueSg0MDYpP0d5LkIoKTpNeSgpKS5qJiZacChiKSlyZXR1cm4gYT1hLm8uZ2V0KGIuZ2V0U2xvdElkKCkpLG51bGwhPT0oYz1udWxsPT09YXx8dm9pZCAwPT09YT92b2lkIDA6YS5qKSYmdm9pZCAwIT09Yz9jOiExO2EubG9nLmVycm9yKFBsKCkpO3JldHVybiExfSxPeT1mdW5jdGlvbihhLGIpe3JldHVybiBiLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gXy5BKGEubCxcImZpbmRcIikuY2FsbChhLmwsZnVuY3Rpb24oZCl7cmV0dXJuIGQuZ2V0U2xvdElkKCkudG9TdHJpbmcoKT09PWN9KX0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hIWN9KX07WnkucHJvdG90eXBlLlo9ZnVuY3Rpb24oKXtyZXR1cm5cImNvbXBhbmlvbl9hZHNcIn07dmFyICR5PWZ1bmN0aW9uKGEpe21iKDcwLGZ1bmN0aW9uKCl7aWYoIWEuSSl7dmFyIGI9ZG9jdW1lbnQ7YS5sb2cuaW5mbyhRbChcIkdQVCBDb21wYW5pb25BZHNcIiksYSk7dmFyIGMsZCxlPW51bGwhPT0oZD1udWxsPT09KGM9bWEoKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuY3JlYXRlU2NyaXB0VVJMKFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19jb21wYW5pb25fYWQuanNcIikpJiZ2b2lkIDAhPT1kP2Q6XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2NvbXBhbmlvbl9hZC5qc1wiO2M9bmV3IGFpKGUsamEpO25hKGMsYWkpO3VnKGIsQmQoYy5qLnRvU3RyaW5nKCkpKTthLkk9ITB9fSxmdW5jdGlvbihiLGMpe2JsKGIsYyk7YS5sb2cuZXJyb3IoUmwoXCJHUFQgQ29tcGFuaW9uQWRzXCIpLGEpfSl9LFR5PWZ1bmN0aW9uKGEsYil7aWYoIWEuanx8UnkoYSxiKSlyZXR1cm4hMTt2YXIgYz1wYShiKTtpZighYylyZXR1cm4hMTt2YXIgZD0oYS5vLmdldChiLmdldFNsb3RJZCgpKXx8e30pLmNvbnRlbnQ7aWYodm9pZCAwPT09ZClyZXR1cm4hMTthLm8uZGVsZXRlKGIuZ2V0U2xvdElkKCkpO2IuVGEoKTtjLmlubmVySFRNTD1kO3BvKGIpO2Q9Yz1udWxsO3ZhciBlPVduKFRuLkIoKSxiLmdldFNsb3RFbGVtZW50SWQoKSk7ZSYmMT09PXVmKGUsVmosNSkubGVuZ3RoJiZudWxsIT1CKHVmKGUsVmosNSlbMF0sMSkmJm51bGwhPUIodWYoZSxWaiw1KVswXSwyKSYmKGM9Qih1ZihlLFZqLDUpWzBdLDEpLGQ9Qih1ZihlLFZqLDUpWzBdLDIpKTtVeShhLGIsYyxkKTtyZXR1cm4hMH07WnkucHJvdG90eXBlLlhiPWZ1bmN0aW9uKGEsYil7VHkodGhpcyxiKX07dmFyIFV5PWZ1bmN0aW9uKGEsYixjLGQpe2I9bmV3IHRwKGdsKGIpLGEuWigpKTtudWxsIT1jJiZudWxsIT1kJiYoYi5zaXplPVtjLGRdKTtKcChhLFwic2xvdFJlbmRlckVuZGVkXCIsYil9LFN5PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vLmdldChiLmdldFNsb3RJZCgpKTtjfHwoYz17fSxhLm8uc2V0KGIuZ2V0U2xvdElkKCksYyksXy5SKGIsZnVuY3Rpb24oKXtyZXR1cm4gYS5vLmRlbGV0ZShiLmdldFNsb3RJZCgpKX0pKTtyZXR1cm4gY30sYXo9ZnVuY3Rpb24oKXtyZXR1cm4gbWIoNTcsZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCksYj1fLkEoYSxcImZpbmRcIikuY2FsbChhLFwiY29tcGFuaW9uX2Fkc1wiKTtifHwoYj1uZXcgWnksYS5hZGQoYikpO3JldHVybiBifSl9O0ljKFp5KTtXYihcImNvbXBhbmlvbkFkc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGdsKF8ueSg0MDYpP1p5LkIoKTpheigpKX0pO3ZhciBiej1mdW5jdGlvbigpe0hwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKGJ6LEhwKTtiei5CPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJNdXN0IGJlIG92ZXJyaWRkZW5cIik7fTt2YXIgY3o9ZnVuY3Rpb24oKXtiei5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5vPW5ldyB0Lk1hcH07Xy5KKGN6LGJ6KTtjei5CPWJ6LkI7Y3oucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYeSh0aGlzLGtvKX07Y3oucHJvdG90eXBlLlo9ZnVuY3Rpb24oKXtyZXR1cm5cImNvbnRlbnRcIn07Y3oucHJvdG90eXBlLmRpc3BsYXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yz12b2lkIDA9PT1jP1wiXCI6YztkPXZvaWQgMD09PWQ/XCJcIjpkO2lwKHRoaXMpO2I9JHAoYSxiLGMpO2E9Yi5zbG90O2I9Yi5GYTt0aGlzLnhhKGEsYik7RChiLDcsZCk7ZHEoYS5nZXRTbG90SWQoKS5qKX07Y3oucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXthPWJ6LnByb3RvdHlwZS5kZXN0cm95U2xvdHMuY2FsbCh0aGlzLGEpO2Zvcih2YXIgYj1fLkYoYSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpdGhpcy5vLmRlbGV0ZShjLnZhbHVlLmdldFNsb3RJZCgpKTtyZXR1cm4gYX07dmFyIGR6PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vLmdldChiLmdldFNsb3RJZCgpKSxkPXBhKGIpOyEoYyYmdm9pZCAwIT09Yy5jb250ZW50JiZkJiZhLmopfHxjJiZjLlRhfHwoYy5UYT0hMCxkLmlubmVySFRNTD1jLmNvbnRlbnQsSnAoYSxcInNsb3RSZW5kZXJFbmRlZFwiLG5ldyB0cChnbChiKSxhLlooKSkpKX07Y3oucHJvdG90eXBlLk5iPWZ1bmN0aW9uKCl7fTtjei5wcm90b3R5cGUuWGI9ZnVuY3Rpb24oYSxiKXtkeih0aGlzLGIpfTt2YXIgV3k9ZnVuY3Rpb24oYSxiLGMpe2lmKFpwKGIpJiZcInN0cmluZ1wiPT09dHlwZW9mIGMmJmMubGVuZ3RoKXt2YXIgZD1hLm8uZ2V0KGIuZ2V0U2xvdElkKCkpO2Q/ZC5jb250ZW50PWM6YS5vLnNldChiLmdldFNsb3RJZCgpLHtjb250ZW50OmMsVGE6dm9pZCAwfSk7Xy5SKGIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLm8uZGVsZXRlKGIuZ2V0U2xvdElkKCkpfSk7ZHooYSxiKX19LGV6PWZ1bmN0aW9uKCl7cmV0dXJuIG1iKDcxLGZ1bmN0aW9uKCl7dmFyIGE9TXAuQigpLGI9Xy5BKGEsXCJmaW5kXCIpLmNhbGwoYSxcImNvbnRlbnRcIik7Ynx8KGI9bmV3IGN6LGEuYWRkKGIpKTtyZXR1cm4gYn0pfTtJYyhjeik7V2IoXCJjb250ZW50XCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2woXy55KDQwNik/Y3ouQigpOmV6KCkpfSk7aWYod2luZG93Lmdvb2dsZXRhZy5ldmFsU2NyaXB0cyl3aW5kb3cuZ29vZ2xldGFnLmV2YWxTY3JpcHRzKCk7ZWxzZXt2YXIgZno9d2luZG93LGd6PV8uT2koZnopO2lmKGd6KXt2YXIgaHo9e2xhYmVsOlwiMlwiLHR5cGU6OSx2YWx1ZTpnen0saXo9ZnouZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1mei5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXTsyMDQ4Pml6Lmxlbmd0aCYmaXoucHVzaChoeil9V2IoXCJldmFsU2NyaXB0c1wiLGZ1bmN0aW9uKCl7SnUoKX0pO0x1KCl9O30pLmNhbGwodGhpcyx7fSk7XG4ifSwgImhlYWRlcnNTaXplIjogMTA4NCwgImJvZHlTaXplIjogLTEwODQsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAxLjEzN30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuOTI0WiIsICJ0aW1lIjogMS4xNTUsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvZi50eHQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoNCkuaHRtbCJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDEzLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxNSBHTVQifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQxIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1VNHBBVXlzYThZWU1OYXNWTWJEQ2pTbmJtdlhISzlxZzZudEVUTTVjUGlWUiJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1VNHBBVXlzYThZWU1OYXNWTWJEQ2pTbmJtdlhISzlxZzZudEVUTTVjUGlWUlwiIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgsIENvbnRlbnQtUmFuZ2UsIFgtQ2h1bmtlZC1PdXRwdXQsIFgtSXBmcy1QYXRoLCBYLUlwZnMtUm9vdHMsIFgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2YudHh0In0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGU0ODA4MzdlNC1GUkEifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlLCBSYW5nZSwgVXNlci1BZ2VudCwgWC1SZXF1ZXN0ZWQtV2l0aCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAxMDksICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMTE2NCwgInRleHQiOiAicHJvY2Vzc0dvb2dsZVRva2VuKHtcIm5ld1Rva2VuXCI6XCJOVFwiLFwidmFsaWRMaWZldGltZVNlY3NcIjozMDAsXCJmcmVzaExpZmV0aW1lU2Vjc1wiOjMwMCxcIjFwX2phclwiOlwiXCIsXCJwdWNyZFwiOlwiXCJ9KTsifSwgImhlYWRlcnNTaXplIjogMTA1NSwgImJvZHlTaXplIjogLTEwNTUsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAxLjE1NX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuOTM0WiIsICJ0aW1lIjogNTAuNDAyLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDYpLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2NTAsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJHSXpnOTVOdmZRbFNOeFphanM1VFhhT2hTSzdReXMwVkUwUFNjSzUzUzh3LTE2ODQ5NDI4NzctMC1BWEQ3czRjUHFWS1RhQWRJc05rWHJQNUNCcXI3NmhLSUxTWmhmRGdCT0Z3Qks1ZnZnQmdLdkI4WmJXY2hzN2ZCMWI4amNjTWlDTit1c3Bvd1Q2WHdQakE9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQxIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NWIyYTBjMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTcgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbWZBV0hZdVFDYlJ5TVhaV3E2WFBvRlRaWm5iTUFFa2J0eHJobUVzdjVUcG9zXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09R0l6Zzk1TnZmUWxTTnhaYWpzNVRYYU9oU0s3UXlzMFZFMFBTY0s1M1M4dy0xNjg0OTQyODc3LTAtQVhEN3M0Y1BxVktUYUFkSXNOa1hyUDVDQnFyNzZoS0lMU1poZkRnQk9Gd0JLNWZ2Z0JnS3ZCOFpiV2NoczdmQjFiOGpjY01pQ04rdXNwb3dUNlh3UGpBPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE3IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg2KS5odG1sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWZBV0hZdVFDYlJ5TVhaV3E2WFBvRlRaWm5iTUFFa2J0eHJobUVzdjVUcG9zIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA2NjYwNywgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDUzMDc4LCAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbD5cbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbCBhbXA0YWRzPVwiXCIgY2xhc3M9XCJpLWFtcGh0bWwtaW5hYm94IGktYW1waHRtbC1zaW5nbGVkb2MgaS1hbXBodG1sLXN0YW5kYWxvbmUgaS1hbXBodG1sLWlmcmFtZWRcIiBpLWFtcGh0bWwtbGF5b3V0PVwiXCIgaS1hbXBodG1sLW5vLWJvaWxlcnBsYXRlPVwiXCIgbGFuZz1cImVuXCIgYW1wLXZlcnNpb249XCIyMDA4MTgwMDA3MDAwXCI+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj48bWV0YSBuYW1lPVwicmVmZXJyZXJcIiBjb250ZW50PVwib3JpZ2luXCI+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIgY29udGVudD1cInNjcmlwdC1zcmMgaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvO29iamVjdC1zcmMgJiMzOTtub25lJiMzOTs7Y2hpbGQtc3JjIGJsb2I6O2ZyYW1lLXNyYyAmIzM5O25vbmUmIzM5O1wiPjxzdHlsZSBhbXAtcnVudGltZT1cIlwiIGktYW1waHRtbC12ZXJzaW9uPVwiMDIyMDA4MTgwMDA3MDAwXCI+W2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH0uaS1hbXBodG1sLWVsZW1lbnR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmktYW1waHRtbC1ibHVycnktcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfVtsYXlvdXQ9bm9kaXNwbGF5XTpub3QoLmktYW1waHRtbC1lbGVtZW50KXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5pLWFtcGh0bWwtbGF5b3V0LWZpeGVkLFtsYXlvdXQ9Zml4ZWRdW3dpZHRoXVtoZWlnaHRdOm5vdCguaS1hbXBodG1sLWxheW91dC1maXhlZCl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmktYW1waHRtbC1sYXlvdXQtcmVzcG9uc2l2ZSxbbGF5b3V0PXJlc3BvbnNpdmVdW3dpZHRoXVtoZWlnaHRdOm5vdCguaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlKSxbd2lkdGhdW2hlaWdodF1baGVpZ2h0c106bm90KFtsYXlvdXRdKTpub3QoLmktYW1waHRtbC1sYXlvdXQtcmVzcG9uc2l2ZSksW3dpZHRoXVtoZWlnaHRdW3NpemVzXTpub3QoW2xheW91dF0pOm5vdCguaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlKXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5pLWFtcGh0bWwtbGF5b3V0LWludHJpbnNpYyxbbGF5b3V0PWludHJpbnNpY11bd2lkdGhdW2hlaWdodF06bm90KC5pLWFtcGh0bWwtbGF5b3V0LWludHJpbnNpYyl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjEwMCV9LmktYW1waHRtbC1sYXlvdXQtaW50cmluc2ljIC5pLWFtcGh0bWwtc2l6ZXJ7bWF4LXdpZHRoOjEwMCV9LmktYW1waHRtbC1pbnRyaW5zaWMtc2l6ZXJ7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyLC5pLWFtcGh0bWwtbGF5b3V0LWZpeGVkLWhlaWdodCxbbGF5b3V0PWNvbnRhaW5lcl0sW2xheW91dD1maXhlZC1oZWlnaHRdW2hlaWdodF06bm90KC5pLWFtcGh0bWwtbGF5b3V0LWZpeGVkLWhlaWdodCl7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uaS1hbXBodG1sLWxheW91dC1maWxsLFtsYXlvdXQ9ZmlsbF06bm90KC5pLWFtcGh0bWwtbGF5b3V0LWZpbGwpe2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MH0uaS1hbXBodG1sLWxheW91dC1mbGV4LWl0ZW0sW2xheW91dD1mbGV4LWl0ZW1dOm5vdCguaS1hbXBodG1sLWxheW91dC1mbGV4LWl0ZW0pe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0b30uaS1hbXBodG1sLWxheW91dC1mbHVpZHtwb3NpdGlvbjpyZWxhdGl2ZX0uaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWR7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0uaS1hbXBodG1sLWxheW91dC1hd2FpdGluZy1zaXple3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt0b3A6YXV0byFpbXBvcnRhbnQ7Ym90dG9tOmF1dG8haW1wb3J0YW50fWktYW1waHRtbC1zaXplcntkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uaS1hbXBodG1sLWJsdXJyeS1wbGFjZWhvbGRlciwuaS1hbXBodG1sLWZpbGwtY29udGVudHtkaXNwbGF5OmJsb2NrO2hlaWdodDowO21heC1oZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJTttaW4taGVpZ2h0OjEwMCU7bWluLXdpZHRoOjEwMCU7d2lkdGg6MDttYXJnaW46YXV0b30uaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgLmktYW1waHRtbC1maWxsLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjB9LmktYW1waHRtbC1yZXBsYWNlZC1jb250ZW50LC5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcntwYWRkaW5nOjAhaW1wb3J0YW50O2JvcmRlcjpub25lIWltcG9ydGFudH0uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3RvcDowcHghaW1wb3J0YW50O2xlZnQ6MHB4IWltcG9ydGFudDt3aWR0aDo0cHghaW1wb3J0YW50O2hlaWdodDo0cHghaW1wb3J0YW50O29wYWNpdHk6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudH0uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ+LmktYW1waHRtbC1zY3JlZW4tcmVhZGVye2xlZnQ6OHB4IWltcG9ydGFudH0uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ+LmktYW1waHRtbC1zY3JlZW4tcmVhZGVyfi5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcntsZWZ0OjEycHghaW1wb3J0YW50fS5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcn4uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ+LmktYW1waHRtbC1zY3JlZW4tcmVhZGVyfi5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcntsZWZ0OjE2cHghaW1wb3J0YW50fS5pLWFtcGh0bWwtdW5yZXNvbHZlZHtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5pLWFtcGh0bWwtc2VsZWN0LWRpc2FibGVkey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnQ7LW1vei11c2VyLXNlbGVjdDpub25lIWltcG9ydGFudDstbXMtdXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnQ7dXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnR9LmktYW1waHRtbC1ub3RidWlsdCxbbGF5b3V0XTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1baGVpZ2h0c106bm90KFtsYXlvdXRdKTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCl7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtjb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmktYW1waHRtbC1ub3RidWlsdDpub3QoLmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyKT4qLFtsYXlvdXRdOm5vdChbbGF5b3V0PWNvbnRhaW5lcl0pOm5vdCguaS1hbXBodG1sLWVsZW1lbnQpPiosW3dpZHRoXVtoZWlnaHRdW2hlaWdodHNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+Kixbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+KntkaXNwbGF5Om5vbmV9LmktYW1waHRtbC1ub3RidWlsdDpub3QoLmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyKSxbbGF5b3V0XTpub3QoW2xheW91dD1jb250YWluZXJdKTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1baGVpZ2h0c106bm90KFtsYXlvdXRdKTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCl7Y29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjAhaW1wb3J0YW50fS5pLWFtcGh0bWwtZ2hvc3R7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS5pLWFtcGh0bWwtZWxlbWVudD5bcGxhY2Vob2xkZXJdLFtsYXlvdXRdOm5vdCguaS1hbXBodG1sLWVsZW1lbnQpPltwbGFjZWhvbGRlcl0sW3dpZHRoXVtoZWlnaHRdW2hlaWdodHNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+W3BsYWNlaG9sZGVyXSxbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+W3BsYWNlaG9sZGVyXXtkaXNwbGF5OmJsb2NrfS5pLWFtcGh0bWwtZWxlbWVudD5bcGxhY2Vob2xkZXJdLmFtcC1oaWRkZW4sLmktYW1waHRtbC1lbGVtZW50PltwbGFjZWhvbGRlcl0uaGlkZGVue3Zpc2liaWxpdHk6aGlkZGVufS5pLWFtcGh0bWwtZWxlbWVudDpub3QoLmFtcC1ub3RzdXBwb3J0ZWQpPltmYWxsYmFja10sLmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyPltwbGFjZWhvbGRlcl0uYW1wLWhpZGRlbiwuaS1hbXBodG1sLWxheW91dC1jb250YWluZXI+W3BsYWNlaG9sZGVyXS5oaWRkZW57ZGlzcGxheTpub25lfS5pLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZD5bZmFsbGJhY2tdLC5pLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZD5bcGxhY2Vob2xkZXJde3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDtyaWdodDowIWltcG9ydGFudDtib3R0b206MCFpbXBvcnRhbnQ7ei1pbmRleDoxfS5pLWFtcGh0bWwtbm90YnVpbHQ+W3BsYWNlaG9sZGVyXXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uaS1hbXBodG1sLWhpZGRlbi1ieS1tZWRpYS1xdWVyeXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5pLWFtcGh0bWwtZWxlbWVudC1lcnJvcntiYWNrZ3JvdW5kOnJlZCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50fS5pLWFtcGh0bWwtZWxlbWVudC1lcnJvcjpiZWZvcmV7Y29udGVudDphdHRyKGVycm9yLW1lc3NhZ2UpfWktYW1wLXNjcm9sbC1jb250YWluZXIsaS1hbXBodG1sLXNjcm9sbC1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ZGlzcGxheTpibG9ja31pLWFtcC1zY3JvbGwtY29udGFpbmVyLmFtcC1hY3RpdmUsaS1hbXBodG1sLXNjcm9sbC1jb250YWluZXIuYW1wLWFjdGl2ZXtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5pLWFtcGh0bWwtbG9hZGluZy1jb250YWluZXJ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjF9LmktYW1waHRtbC1ub3RidWlsdD4uaS1hbXBodG1sLWxvYWRpbmctY29udGFpbmVye2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5pLWFtcGh0bWwtbG9hZGluZy1jb250YWluZXIuYW1wLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0uaS1hbXBodG1sLWVsZW1lbnQ+W292ZXJmbG93XXtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7dmlzaWJpbGl0eTpoaWRkZW47ZGlzcGxheTppbml0aWFsO2xpbmUtaGVpZ2h0Om5vcm1hbH0uaS1hbXBodG1sLWVsZW1lbnQ+W292ZXJmbG93XS5hbXAtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9dGVtcGxhdGV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uYW1wLWJvcmRlci1ib3gsLmFtcC1ib3JkZXItYm94ICosLmFtcC1ib3JkZXItYm94IDphZnRlciwuYW1wLWJvcmRlci1ib3ggOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9YW1wLXBpeGVse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9YW1wLWFuYWx5dGljcyxhbXAtYXV0by1hZHMsYW1wLXN0b3J5LWF1dG8tYWRze3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDtoZWlnaHQ6MXB4IWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVufWh0bWwuaS1hbXBodG1sLWZpZT5hbXAtYW5hbHl0aWNze3Bvc2l0aW9uOmluaXRpYWwhaW1wb3J0YW50fVt2aXNpYmxlLXdoZW4taW52YWxpZF06bm90KC52aXNpYmxlKSxmb3JtIFtzdWJtaXQtZXJyb3JdLGZvcm0gW3N1Ym1pdC1zdWNjZXNzXSxmb3JtIFtzdWJtaXR0aW5nXXtkaXNwbGF5Om5vbmV9YW1wLWFjY29yZGlvbntkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1hbXAtYWNjb3JkaW9uPnNlY3Rpb257ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9YW1wLWFjY29yZGlvbj5zZWN0aW9uPip7ZmxvYXQ6bm9uZSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnR9YW1wLWFjY29yZGlvbixhbXAtYWNjb3JkaW9uPnNlY3Rpb257bWFyZ2luOjB9YW1wLWFjY29yZGlvbj5zZWN0aW9uPjpsYXN0LWNoaWxke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9YW1wLWFjY29yZGlvbj5zZWN0aW9uW2V4cGFuZGVkXT46bGFzdC1jaGlsZHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1cbi8qIyBzb3VyY2VVUkw9L2Nzcy9hbXBzaGFyZWQuY3NzKi9odG1sLmktYW1waHRtbC1pbmFib3h7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50fTwvc3R5bGU+PHN0eWxlIGFtcC1leHRlbnNpb249XCJhbXAtZm9ybVwiPmZvcm0uYW1wLWZvcm0tc3VibWl0LWVycm9yIFtzdWJtaXQtZXJyb3JdLGZvcm0uYW1wLWZvcm0tc3VibWl0LXN1Y2Nlc3MgW3N1Ym1pdC1zdWNjZXNzXSxmb3JtLmFtcC1mb3JtLXN1Ym1pdHRpbmcgW3N1Ym1pdHRpbmdde2Rpc3BsYXk6YmxvY2t9dGV4dGFyZWFbYXV0b2V4cGFuZF06bm90KC5pLWFtcGh0bWwtdGV4dGFyZWEtbWF4KXtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5pLWFtcGh0bWwtdGV4dGFyZWEtY2xvbmV7dmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTk5cHg7bGVmdDotOTk5OXB4O2hlaWdodDowIWltcG9ydGFudH0uaS1hbXBodG1sLXZhbGlkYXRpb24tYnViYmxle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtMTAwJSk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCAwIHJnYmEoMCwwLDAsMC41KTttYXgtd2lkdGg6MjAwcHg7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxMHB4O2JvcmRlci1yYWRpdXM6NXB4fS5pLWFtcGh0bWwtdmFsaWRhdGlvbi1idWJibGU6YWZ0ZXJ7Y29udGVudDpcIiBcIjtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LThweDtsZWZ0OjMwcHg7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjhweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjhweCBzb2xpZCAjZmZmfVt2aXNpYmxlLXdoZW4taW52YWxpZF17Y29sb3I6cmVkfVxuLyojIHNvdXJjZVVSTD0vZXh0ZW5zaW9ucy9hbXAtZm9ybS8wLjEvYW1wLWZvcm0uY3NzKi88L3N0eWxlPjxzdHlsZSBhbXAtZXh0ZW5zaW9uPVwiYW1wLWZpdC10ZXh0XCI+LmktYW1waHRtbC1maXQtdGV4dC1jb250ZW50LC5pLWFtcGh0bWwtZml0LXRleHQtY29udGVudC5pLWFtcGh0bWwtZmlsbC1jb250ZW50e2Rpc3BsYXk6YmxvY2s7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1zLWZsZXgtd3JhcDpub3dyYXA7ZmxleC13cmFwOm5vd3JhcDstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5pLWFtcGh0bWwtZml0LXRleHQtY29udGVudC1vdmVyZmxvd257ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59XG4vKiMgc291cmNlVVJMPS9leHRlbnNpb25zL2FtcC1maXQtdGV4dC8wLjEvYW1wLWZpdC10ZXh0LmNzcyovPC9zdHlsZT48bWV0YSBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLG1pbmltdW0tc2NhbGU9MSxpbml0aWFsLXNjYWxlPTFcIiBuYW1lPVwidmlld3BvcnRcIj48bWV0YSBjb250ZW50PVwidmVuZG9yPWRvdWJsZWNsaWNrLHR5cGU9aW1wcmVzc2lvbi1pZCx2YWx1ZT1DTXo0ejg3RHdlc0NGWWJzeUFvZDNaZ0pEUVwiIG5hbWU9XCJhbXA0YWRzLWlkXCI+PGxpbmsgYXM9XCJzY3JpcHRcIiBocmVmPVwiLi9hbXA0YWRzLXYwLmpzLmRvd25sb2FkXCIgcmVsPVwicHJlbG9hZFwiPjxzY3JpcHQgYXN5bmM9XCJcIiBzcmM9XCIuL2FtcDRhZHMtdjAuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPVwiXCIgY3VzdG9tLWVsZW1lbnQ9XCJhbXAtYWQtZXhpdFwiIHNyYz1cIi4vYW1wLWFkLWV4aXQtMC4xLmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PHNjcmlwdCBhc3luYz1cIlwiIGN1c3RvbS1lbGVtZW50PVwiYW1wLWFuYWx5dGljc1wiIHNyYz1cIi4vYW1wLWFuYWx5dGljcy0wLjEuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPVwiXCIgY3VzdG9tLWVsZW1lbnQ9XCJhbXAtZml0LXRleHRcIiBzcmM9XCIuL2FtcC1maXQtdGV4dC0wLjEuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPVwiXCIgY3VzdG9tLWVsZW1lbnQ9XCJhbXAtZm9ybVwiIHNyYz1cIi4vYW1wLWZvcm0tMC4xLmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PHN0eWxlIGFtcC1jdXN0b209XCJcIj5IVE1MLEJPRFl7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTttYXJnaW46MDtwYWRkaW5nOjA7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO31CT0RZe31CT0RZIEEsQk9EWSBBOnZpc2l0ZWQsQk9EWSBBOmhvdmVyLEJPRFkgQTphY3RpdmV7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246aW5oZXJpdDt9W2Rpcj1ydGxdIC5mbGlwLW9uLXJ0bHt0cmFuc2Zvcm06c2NhbGUoLTEsMSk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7fS5ucy05ajljMS1sLWJhbm5lci1ub2xvZ297b3BhY2l0eTouMDE7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jazt0b3A6MDtsZWZ0OjA7d2lkdGg6NzI4cHg7aGVpZ2h0OjkwcHg7fS5ucy05ajljMS1lLTB7bGluZS1oZWlnaHQ6MS4zO2JvcmRlci1jb2xvcjojZTZlN2U4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtZmFtaWx5OlwiR29vZ2xlIFNhbnNcIixBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7fS5ucy05ajljMS1lLTF7bGluZS1oZWlnaHQ6MS4zO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOnJvdztoZWlnaHQ6MTAwJTtwYWRkaW5nOjA7fS5ucy05ajljMS1lLTIsLm5zLTlqOWMxLWUtMTl7bGluZS1oZWlnaHQ6MS4zO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTt9Lm5zLTlqOWMxLWUtM3tsaW5lLWhlaWdodDoxLjM7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7ZmxleDoxO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7fS5ucy05ajljMS1lLTQsLm5zLTlqOWMxLWUtMTB7bGluZS1oZWlnaHQ6MS4zO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTt9Lm5zLTlqOWMxLWUtNSwubnMtOWo5YzEtZS0xMXtsaW5lLWhlaWdodDoxLjM7Ym94LXNpemluZzpib3JkZXItYm94O30ubnMtOWo5YzEtZS02e2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6MC4ycHg7bGluZS1oZWlnaHQ6MS4zO3doaXRlLXNwYWNlOm5vd3JhcDt9Lm5zLTlqOWMxLWUtOHtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjAuMnB4O2xpbmUtaGVpZ2h0OjEuMjt9Lm5zLTlqOWMxLWUtMTJ7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzowLjJweDtsaW5lLWhlaWdodDoxLjE7fS5ucy05ajljMS1lLTE0e2xpbmUtaGVpZ2h0OjEuMztib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjlweDtoZWlnaHQ6MTAwJTt9Lm5zLTlqOWMxLWUtMTV7ZGlzcGxheTpmbGV4O30ubnMtOWo5YzEtZS0xNntsaW5lLWhlaWdodDoxLjM7Ym94LXNpemluZzpib3JkZXItYm94O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDoxMjRweDttYXgtd2lkdGg6MzI4cHg7cGFkZGluZzowIDM2cHg7ZGlzcGxheTpmbGV4O30ubnMtOWo5YzEtZS0xN3tsaW5lLWhlaWdodDoxLjM7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjUwMDttaW4taGVpZ2h0OjFlbTttYXgtaGVpZ2h0OjEuM2VtO30ubnMtOWo5YzEtZS0xOHtkaXNwbGF5OmlubGluZTt9Lm5zLTlqOWMxLXYtMSAubnMtOWo5YzEtZS0ye3dpZHRoOjIwLjlweDt9Lm5zLTlqOWMxLXYtMSAubnMtOWo5YzEtZS01LC5ucy05ajljMS12LTEgLm5zLTlqOWMxLWUtMTF7cGFkZGluZzoxNC41cHggMDt9Lm5zLTlqOWMxLXYtMSAubnMtOWo5YzEtZS02e2ZvbnQtc2l6ZToxNC43NXB4O30ubnMtOWo5YzEtdi0xIC5ucy05ajljMS1lLTh7Zm9udC1zaXplOjI5LjJweDt9Lm5zLTlqOWMxLXYtMSAubnMtOWo5YzEtZS0xMntmb250LXNpemU6MjQuM3B4O30ubnMtOWo5YzEtdi0xIC5ucy05ajljMS1lLTE2e2hlaWdodDo0OXB4O21heC1oZWlnaHQ6NDUuNzV2aDtmb250LXNpemU6MTkuNTVweDt9Lm5zLTlqOWMxLXYtMSAubnMtOWo5YzEtZS0xOXt3aWR0aDoxNC41NXB4O30ubnMtOWo5YzEtZS00ey13ZWJraXQtYW5pbWF0aW9uOm9uZU9mVHdvVmVydGljYWwgMTBzIGluZmluaXRlIDBzO30ubnMtOWo5YzEtZS0xMHstd2Via2l0LWFuaW1hdGlvbjp0d29PZlR3b1ZlcnRpY2FsIDEwcyBpbmZpbml0ZSAwczt9Lm5zLTlqOWMxLWwtYmFubmVyLW5vbG9nb3tvcGFjaXR5OjE7cG9zaXRpb246cmVsYXRpdmU7fS5jbGlja2FibGU6aG92ZXJ7b3BhY2l0eTowLjc7fUBrZXlmcmFtZXMgb25lT2ZUd29Ib3Jpem9udGFsezAuMDEle29wYWNpdHk6MDthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fTYuMSUsNTAuMCV7b3BhY2l0eToxO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fTU2LjEle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNzI4cHgpO301Ni4xMSUsMTAwJSwwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO319QGtleWZyYW1lcyB0d29PZlR3b0hvcml6b250YWx7NTAuMDEle29wYWNpdHk6MDthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fTU2LjElLDEwMCUsMCV7b3BhY2l0eToxO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fTYuMSV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC03MjhweCk7fTYuMTEle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fX1Aa2V5ZnJhbWVzIG9uZU9mVGhyZWVIb3Jpem9udGFsezAuMDEle29wYWNpdHk6MDthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fTQuMSUsMzMuMyV7b3BhY2l0eToxO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fTM3LjQle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNzI4cHgpO30zNy40MSUsMTAwJSwwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO319QGtleWZyYW1lcyB0d29PZlRocmVlSG9yaXpvbnRhbHszMy4zMSV7b3BhY2l0eTowO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDcyOHB4KTt9MzcuNCUsNjYuNyV7b3BhY2l0eToxO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fTcwLjgle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNzI4cHgpO303MC44MSUsMTAwJSwwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO319QGtleWZyYW1lcyB0aHJlZU9mVGhyZWVIb3Jpem9udGFsezY2LjcxJXtvcGFjaXR5OjA7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3LC4xNywuMjQsMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO303MC44JSwxMDAlLDAle29wYWNpdHk6MTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNzYsLjc2LDAsLjgzKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO300LjEle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNzI4cHgpO300LjExJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO319QGtleWZyYW1lcyBvbmVPZlR3b1ZlcnRpY2FsezAuMDEle29wYWNpdHk6MDthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSg5MHB4KTt9Ni4xJSw1MC4wJXtvcGFjaXR5OjE7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMHB4KTt9NTYuMSV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC05MHB4KTt9NTYuMTElLDEwMCUsMCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319QGtleWZyYW1lcyB0d29PZlR3b1ZlcnRpY2FsezUwLjAxJXtvcGFjaXR5OjA7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3LC4xNywuMjQsMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOTBweCk7fTU2LjElLDEwMCUsMCV7b3BhY2l0eToxO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDBweCk7fTYuMSV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC05MHB4KTt9Ni4xMSV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319QGtleWZyYW1lcyBvbmVPZlRocmVlVmVydGljYWx7MC4wMSV7b3BhY2l0eTowO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO300LjElLDMzLjMle29wYWNpdHk6MTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNzYsLjc2LDAsLjgzKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO30zNy40JXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTkwcHgpO30zNy40MSUsMTAwJSwwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoOTBweCk7fX1Aa2V5ZnJhbWVzIHR3b09mVGhyZWVWZXJ0aWNhbHszMy4zMSV7b3BhY2l0eTowO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO30zNy40JSw2Ni43JXtvcGFjaXR5OjE7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMHB4KTt9NzAuOCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC05MHB4KTt9NzAuODElLDEwMCUsMCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319QGtleWZyYW1lcyB0aHJlZU9mVGhyZWVWZXJ0aWNhbHs2Ni43MSV7b3BhY2l0eTowO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO303MC44JSwxMDAlLDAle29wYWNpdHk6MTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNzYsLjc2LDAsLjgzKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO300LjEle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtOTBweCk7fTQuMTEle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg5MHB4KTt9fUAtd2Via2l0LWtleWZyYW1lcyBvbmVPZlR3b0hvcml6b250YWx7MC4wMSV7b3BhY2l0eTowOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3LC4xNywuMjQsMSk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fTYuMSUsNTAuMCV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO301Ni4xJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNzI4cHgpO301Ni4xMSUsMTAwJSwwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fX1ALXdlYmtpdC1rZXlmcmFtZXMgdHdvT2ZUd29Ib3Jpem9udGFsezUwLjAxJXtvcGFjaXR5OjA7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDcyOHB4KTt9NTYuMSUsMTAwJSwwJXtvcGFjaXR5OjE7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNzYsLjc2LDAsLjgzKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDBweCk7fTYuMSV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTcyOHB4KTt9Ni4xMSV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO319QC13ZWJraXQta2V5ZnJhbWVzIG9uZU9mVGhyZWVIb3Jpem9udGFsezAuMDEle29wYWNpdHk6MDstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO300LjElLDMzLjMle29wYWNpdHk6MTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTt9MzcuNCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTcyOHB4KTt9MzcuNDElLDEwMCUsMCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoNzI4cHgpO319QC13ZWJraXQta2V5ZnJhbWVzIHR3b09mVGhyZWVIb3Jpem9udGFsezMzLjMxJXtvcGFjaXR5OjA7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDcyOHB4KTt9MzcuNCUsNjYuNyV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO303MC44JXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNzI4cHgpO303MC44MSUsMTAwJSwwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fX1ALXdlYmtpdC1rZXlmcmFtZXMgdGhyZWVPZlRocmVlSG9yaXpvbnRhbHs2Ni43MSV7b3BhY2l0eTowOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3LC4xNywuMjQsMSk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCg3MjhweCk7fTcwLjglLDEwMCUsMCV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO300LjEle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC03MjhweCk7fTQuMTEle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDcyOHB4KTt9fUAtd2Via2l0LWtleWZyYW1lcyBvbmVPZlR3b1ZlcnRpY2FsezAuMDEle29wYWNpdHk6MDstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOTBweCk7fTYuMSUsNTAuMCV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO301Ni4xJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOTBweCk7fTU2LjExJSwxMDAlLDAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319QC13ZWJraXQta2V5ZnJhbWVzIHR3b09mVHdvVmVydGljYWx7NTAuMDEle29wYWNpdHk6MDstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOTBweCk7fTU2LjElLDEwMCUsMCV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO302LjEle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC05MHB4KTt9Ni4xMSV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOTBweCk7fX1ALXdlYmtpdC1rZXlmcmFtZXMgb25lT2ZUaHJlZVZlcnRpY2FsezAuMDEle29wYWNpdHk6MDstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNywuMTcsLjI0LDEpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoOTBweCk7fTQuMSUsMzMuMyV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO30zNy40JXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOTBweCk7fTM3LjQxJSwxMDAlLDAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319QC13ZWJraXQta2V5ZnJhbWVzIHR3b09mVGhyZWVWZXJ0aWNhbHszMy4zMSV7b3BhY2l0eTowOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3LC4xNywuMjQsMSk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSg5MHB4KTt9MzcuNCUsNjYuNyV7b3BhY2l0eToxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjc2LC43NiwwLC44Myk7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgwcHgpO303MC44JXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOTBweCk7fTcwLjgxJSwxMDAlLDAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319QC13ZWJraXQta2V5ZnJhbWVzIHRocmVlT2ZUaHJlZVZlcnRpY2FsezY2LjcxJXtvcGFjaXR5OjA7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTcsLjE3LC4yNCwxKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO303MC44JSwxMDAlLDAle29wYWNpdHk6MTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NiwuNzYsMCwuODMpOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMHB4KTt9NC4xJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtOTBweCk7fTQuMTEle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDkwcHgpO319Lm5zLTlqOWMxLWUtMXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7fS5ucy05ajljMS1lLTIsLm5zLTlqOWMxLWUtMTl7YmFja2dyb3VuZC1jb2xvcjojZmZmO3otaW5kZXg6MTt9Lm5zLTlqOWMxLWUtNHthbmltYXRpb246b25lT2ZUd29WZXJ0aWNhbCAxMHMgaW5maW5pdGUgMHM7fS5ucy05ajljMS1lLTZ7Y29sb3I6Izc1NzU3NTt9Lm5zLTlqOWMxLWUtNywubnMtOWo5YzEtZS05LC5ucy05ajljMS1lLTEze3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtZmFtaWx5OlwiR29vZ2xlIFNhbnNcIiwgXCJSb2JvdG9cIixcIkdvb2dsZSBTYW5zXCIsQXJpYWwsc2Fucy1zZXJpZjt3aGl0ZS1zcGFjZTpub3dyYXA7fS5ucy05ajljMS1lLTgsLm5zLTlqOWMxLWUtMTJ7Y29sb3I6IzQyNDI0Mjt9Lm5zLTlqOWMxLWUtMTB7YW5pbWF0aW9uOnR3b09mVHdvVmVydGljYWwgMTBzIGluZmluaXRlIDBzO30ubnMtOWo5YzEtZS0xNXt0ZXh0LWRlY29yYXRpb246bm9uZTt9Lm5zLTlqOWMxLWUtMTZ7ei1pbmRleDoxO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjt9Lm5zLTlqOWMxLWUtMTd7Y29sb3I6I2ZmZjt9Lm5zLTlqOWMxLWUtMTh7Zm9udC1mYW1pbHk6XCJHb29nbGUgU2Fuc1wiLCBcIlJvYm90b1wiLFwiR29vZ2xlIFNhbnNcIixBcmlhbCxzYW5zLXNlcmlmO3doaXRlLXNwYWNlOm5vd3JhcDt9LmFiZ2Mge3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjE0NzQ4MzY0NjtsZWZ0OjA7Ym90dG9tOjA7fS5hYmdjIGFtcC1pbWcsIC5hYmdjIGltZyB7ZGlzcGxheTpibG9jazt9LmFiZ3Mge3Bvc2l0aW9uOmFic29sdXRlOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTc2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC03NnB4KTtsZWZ0OjE2cHg7Ym90dG9tOjA7fS5hYmdjcCB7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO3dpZHRoOjMxcHg7aGVpZ2h0OjE1cHg7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7fS5hYmdiIHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tbGVmdDoxNnB4O2JvdHRvbTowO30uYWJnYzpob3ZlciAuYWJncyB7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZTt9LmNiYiB7ZGlzcGxheTogYmxvY2s7cG9zaXRpb246IGFic29sdXRlO2xlZnQ6MDtib3R0b206MDtjdXJzb3I6IHBvaW50ZXI7aGVpZ2h0OiAxNXB4O3dpZHRoOiAxNXB4O3otaW5kZXg6IDkwMjA7cGFkZGluZy1yaWdodDoxNnB4O30uYnRuIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czogMnB4Oy1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ym94LXNpemluZzogYm9yZGVyLWJveDtib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLCAwcHggMXB4IDNweCByZ2JhKDAsMCwwLDAuMjYpO2N1cnNvcjogcG9pbnRlcjtmb250LXNpemU6IDAuN2VtO21hcmdpbjogMCAxcHggMC40ZW0gMXB4O31AbWVkaWEgKG1heC13aWR0aDogMzc1cHgpIGFuZCAobWluLWhlaWdodDogMTAwcHgpIHsuYnRuIHtkaXNwbGF5OiBibG9jazt3aWR0aDogOTAlO21heC13aWR0aDogMjQwcHg7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO319I3NwdjEgYW1wLWZpdC10ZXh0PmRpdiB7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O30uam0uc2ggI3NwdjEgYW1wLWZpdC10ZXh0PmRpdiB7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjt9LmJ0biA+IHNwYW4ge2Rpc3BsYXk6IGlubGluZS1ibG9jaztwYWRkaW5nOiAwLjVlbSAwLjZlbTtsaW5lLWhlaWdodDogMWVtO30jc2J0biB7YmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtjb2xvcjogIzlFOUVBNjt0ZXh0LWRlY29yYXRpb246IG5vbmU7fSNzYnRuOmhvdmVyLCNzYnRuOmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTt9I3JidG4ge2JhY2tncm91bmQtY29sb3I6IHJnYig2NiwxMzMsMjQ1KTtjb2xvcjogd2hpdGU7fSNyYnRuOmhvdmVyLCNyYnRuOmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogIzMyNzVFNTt9I210YSB7cG9zaXRpb246YWJzb2x1dGU7dG9wOiAwO2xlZnQ6IDA7Zm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogMTJweDtmb250LXdlaWdodDogNDAwO2xpbmUtaGVpZ2h0OiAxZW07fSNtdGEgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtkaXNwbGF5OiBub25lO30jbXRhIC5wbiB7bGVmdDogLTcyOHB4O2JvdHRvbTogLTkwcHg7d2lkdGg6NzI4cHg7aGVpZ2h0OjkwcHg7cG9zaXRpb246IGFic29sdXRlOy1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ym94LXNpemluZzogYm9yZGVyLWJveDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBO3RleHQtYWxpZ246IGNlbnRlcjt9I3NwdjIge2Rpc3BsYXk6IC13ZWJraXQtZmxleDtkaXNwbGF5OiBmbGV4Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDogZmxleC1zdGFydDstd2Via2l0LWZsZXgtd3JhcDogbm93cmFwO2ZsZXgtd3JhcDogbm93cmFwO292ZXJmbG93OiBoaWRkZW47YmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTtmb250LXNpemU6IDA7fS5zaCAjc3B2MiB7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93O2ZsZXgtZGlyZWN0aW9uOiByb3c7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjt9LnNoLnNyICNzcHYyIHstd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7fS5qbS5zaCAjc3B2MiB7LXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7fSNzcHYyICogey1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ym94LXNpemluZzogYm9yZGVyLWJveDt9I3NwcjE6Y2hlY2tlZCB+ICNjYmIsI3NwcjI6Y2hlY2tlZCB+ICNjYmIsI3NwcjM6Y2hlY2tlZCB+ICNjYmJ7ZGlzcGxheTogbm9uZTt9I3NwdjMge29wYWNpdHk6MTt9LmFtcC1hbmltYXRlICNzcHY0IHtvcGFjaXR5OjA7dHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGxpbmVhciAyLjVzO30uYW1wLWFuaW1hdGUgICNzcHYzIGFtcC1maXQtdGV4dCB7b3BhY2l0eToxO3RyYW5zaXRpb246IG9wYWNpdHkgMC41cyBsaW5lYXIgMnM7fSNzcHIzOmNoZWNrZWQgfiAjc3B2MyBhbXAtZml0LXRleHQge29wYWNpdHk6MH0jc3ByMzpjaGVja2VkIH4gI3NwdjQge29wYWNpdHk6MTt9I3NwcjE6Y2hlY2tlZCB+ICNzcHYxLCNzcHIyOmNoZWNrZWQgfiAjc3B2Miwjc3ByMzpjaGVja2VkIH4gI3NwdjMsI3NwcjM6Y2hlY2tlZCB+ICNzcHY0e2xlZnQ6IDBweDtib3R0b206IDBweDt9LmNsb3NlIHtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAycHg7Y29sb3I6IGJsYWNrO2ZvbnQtc2l6ZTogMTVweDtsaW5lLWhlaWdodDogMTVweDtvcGFjaXR5OiAwLjU7aGVpZ2h0OiAxNXB4O3dpZHRoOiAxNXB4O3VzZXItc2VsZWN0OiBub25lO2N1cnNvcjogcG9pbnRlcjt9W2Rpcj1cInJ0bFwiXSAuY2xvc2Uge3RyYW5zZm9ybTogc2NhbGVYKC0xKTt9LmN0IHN2ZyB7Ym9yZGVyOiAwO21hcmdpbjogMCAwIC0wLjQ1ZW0gMDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7aGVpZ2h0OiAxLjM4ZW07b3BhY2l0eTogMC40O30uY3Qge2Rpc3BsYXk6IGlubGluZS1ibG9jaztsaW5lLWhlaWdodDogMS4yOGVtO2NvbG9yOiByZ2JhKDAsMCwwLDAuNCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzogMC4zZW07fS5mY3Qge3BhZGRpbmc6IDFlbTt9I3BjdCB7ZGlzcGxheTogYmxvY2s7Zm9udC13ZWlnaHQ6IGJvbGQ7cGFkZGluZzogMWVtIDAuM2VtO30jdGkge3dpZHRoOiA3MjhweDt9I2J0bnMge3dpZHRoOiA3MjhweDt9LmZsIHt3aWR0aDogNzI4cHg7aGVpZ2h0OjkwcHg7fSNzaSB7cG9zaXRpb246IHJlbGF0aXZlO2Rpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOiAtMC4xNWVtO2hlaWdodDogMWVtO3dpZHRoOiAxZW07b3BhY2l0eTogMC40O30uc2Ige2ZsZXgtc2hyaW5rOiAwO2hlaWdodDogNTBweDt9LnNvIHtwb3NpdGlvbjogcmVsYXRpdmU7ei1pbmRleDogOTExMDtvdmVyZmxvdzogaGlkZGVuO2Rpc3BsYXk6IGlubGluZS1ibG9jaztwYWRkaW5nOiAxcHggNXB4O3dpZHRoOiA5NnB4O2hlaWdodDogNTBweDtib3JkZXI6IDFweCBzb2xpZCAjRTBFMEUwO2JhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Y3Vyc29yOiBwb2ludGVyO30uc286aG92ZXIsLnNvOmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTt9LnNvIGRpdiB7ZGlzcGxheTogLXdlYmtpdC1mbGV4O2Rpc3BsYXk6IGZsZXg7LXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7fS5zbyBzcGFuIHtjb2xvcjogIzQyODVGNDtmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7dGV4dC1hbGlnbjogY2VudGVyO2ZvbnQtc2l6ZTogMTJweDtsaW5lLWhlaWdodDogMTRweDt3aGl0ZS1zcGFjZTogbm9ybWFsO31AbWVkaWEgKG1pbi1oZWlnaHQ6IDU0cHgpIHsuc2guc3MgLnNvLC5zdiAuc28ge2JveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoMCwwLDAsMC4xMiksIDBweCAxcHggM3B4IHJnYmEoMCwwLDAsMC4yNik7Ym9yZGVyOiBub25lO319LnNoIC5zbyB7bWFyZ2luLWxlZnQ6IC0xcHg7Ym94LXNoYWRvdzogbm9uZTt9LnNoIC5zbzpmaXJzdC1jaGlsZCB7bWFyZ2luLWxlZnQ6IDA7fS5zaC5zcyAuc28ge21hcmdpbi1sZWZ0OiA4cHg7fS5zaC5zcyAuc286Zmlyc3QtY2hpbGQge21hcmdpbi1sZWZ0OiAwO30uc3YgLnNvLC5zaC5zcyAuc28ge2JvcmRlci1yYWRpdXM6IDJweDt9PC9zdHlsZT48bGluayBocmVmPVwiLi9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCI+PC9oZWFkPjxib2R5IGNsYXNzPVwiYW1wLWFuaW1hdGUgYW1wLW1vZGUtbW91c2VcIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgc3R5bGU9XCJvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBhbmltYXRpb246IDBzIGVhc2UgMHMgMSBub3JtYWwgbm9uZSBydW5uaW5nIG5vbmU7XCI+PGFtcC1hZC1leGl0IGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1jb250YWluZXIgaS1hbXBodG1sLWVsZW1lbnRcIiBpLWFtcGh0bWwtbGF5b3V0PVwiY29udGFpbmVyXCIgaWQ9XCJhc29jaC1leGl0LWFwaVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cIj57XCJ0YXJnZXRzXCI6e1wiYWQwXCI6e1widmFyc1wiOntcIl9hc29jaE5iUGFyYW1cIjp7XCJkZWZhdWx0VmFsdWVcIjpcIlwifX0sXCJiZWhhdmlvcnNcIjp7XCJjbGlja1RhcmdldFwiOlwiX3RvcFwifSxcImZpbmFsVXJsXCI6XCJodHRwczovL3d3dy5zcXVhcmVzcGFjZS5jb20/Z2NsaWQ9RUFJYUlRb2JDaE1JelBqUHpzUEI2d0lWaHV6SUNoM2RtQWtORUFFWUFTQUFFZ0pMTFBEX0J3RVwiLFwidHJhY2tpbmdVcmxzXCI6W1wiaHR0cHM6Ly93d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20vcGFnZWFkL2FjbGs/c2E9TCZhaT1DM3hqOWtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBY2dEQ3FvRTZBRlAwSVVNdWlCdEZPZmsxX19kMGduMm1OTmgzWjlTVkR3TkVOeG1kNERibTV2OVZhdERPVkV4REY5Nko5LWVlTXVMeUxyN3VFdkVwUkNfUjFyZWxVS1dHY2J2OEFiUGhJRDNyemh0MzBXYXFJTnZOTFVDTUVLYlhkNjVXZ2pHT3VHbFhoci1fOW1TQWpUcG9mOEwzZkhBdjNqdFZvRFU2YUhLajdaTkNHdGthcV8xMURNWnhTMG5nQVpmbVpWdVNhc1UtdE9DWUZfS1hPVHlhazByY0RrMVRUWWs3bVBheWttVEpLZ3Fob3l5bTdtVzlmd0kyOC1RN1F3cy01VjBZdkM2ZzlsRVcweXNseVhBRTB1WkFLY0RzdzlJX3MxelNBeWRiM1VTVmZQZnkyUHdZU0tYbzN0N3dBVG82UEdPaWdMZ0JBR0FCOERPeWlLb0I0N09HNmdIMWNrYnFBZVQyQnVvQjdvR3FBZncyUnVvQl9MWkc2Z0hwcjRicUFmczFSdW9CX1BSRzZnSDdOVWJxQWVXMkJ1b0I4TGFHOWdIQWRJSUNRaUE0WUJBRUFFWUhiRUpJRmZPRG1QM2RidUFDZ09LQ3JFQmFIUjBjSE02THk5aFpDNWtiM1ZpYkdWamJHbGpheTV1WlhRdlpHUnRMM1J5WVdOclkyeHJMMDQzTVRnMk56a3VNekUxT1VkUFQwZE1SUzlDTWpNMU9UVTRNemd1TWpZNU5UVTNNRE15TzJSalgzUnlhMTloYVdROU5EWTBNVFExTXpNME8yUmpYM1J5YTE5amFXUTlNVEk1TnpjME1UTTFPMlJqWDJ4aGREMDdaR05mY21ScFpEMDdkR0ZuWDJadmNsOWphR2xzWkY5a2FYSmxZM1JsWkY5MGNtVmhkRzFsYm5ROU8zUm1kV0U5bUFzQnlBc0I0QXNCMkJNRGlCUUImYWU9MSZudW09MSZjaWQ9Q0FBU1BlUm95WGFmQmxENXFZaWk0c05wLVZYUVd3NXJhVW9WUXo0U3lyVkdSM20yeDBKMk9SWUtETnJKYmZ4WlpkdmFxc1dVWFBONjUzMFJzNS14VjJvJnNpZz1BT0Q2NF8zZmRNdHJjZkdOekNNZVlnSFpCN0VkQkVEY193JmNsaWVudD1jYS1wdWItNjM2NTQ0ODU4NzAwMjM3MSZuYj1fYXNvY2hOYlBhcmFtJm54PUNMSUNLX1gmbnk9Q0xJQ0tfWSZhY3Q9MSZyaT0xJmFkdXJsPWh0dHBzOi8vd3d3LnNxdWFyZXNwYWNlLmNvbSUzRmdjbGlkJTNERUFJYUlRb2JDaE1JelBqUHpzUEI2d0lWaHV6SUNoM2RtQWtORUFFWUFTQUFFZ0pMTFBEX0J3RVwiXX19fTwvc2NyaXB0PjwvYW1wLWFkLWV4aXQ+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWwtYmFubmVyLW5vbG9nbyBucy05ajljMS12LTFcIj48ZGl2IGNsYXNzPVwibnMtOWo5YzEtZS0wIHgtbGF5b3V0IEdvb2dsZUFjdGl2ZVZpZXdFbGVtZW50XCIgZGF0YS1nb29nbGUtYXYtYWRrPVwiNDQ4MDU2NjM3XCIgZGF0YS1nb29nbGUtYXYtYWlkPVwiMFwiIGRhdGEtZ29vZ2xlLWF2LWNwbWF2PVwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvcGFnZWFkL2Fkdmlldz9haT1DQTBfSmtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBYW9FNVFGUDBJVU11aUJ0Rk9mazFfX2QwZ24ybU5OaDNaOVNWRHdORU54bWQ0RGJtNXY5VmF0RE9WRXhERjk2SjktZWVNdUx5THI3dUV2RXBSQ19SMXJlbFVLV0djYnY4QWJQaElEM3J6aHQzMFdhcUlOdk5MVUNNRUtiWGQ2NVdnakdPdUdsWGhyLV85bVNBalRwb2Y4TDNmSEF2M2p0Vm9EVTZhSEtqN1pOQ0d0a2FxXzExRE1aeFMwbmdBWmZtWlZ1U2FzVS10T0NZRl9LWE9UeWFrMHJjRGsxVFRZazdtUGF5a21USktncWhveXltN21XOWZ3STI4LVE3UXdzLTVWMFl2QzZnOWxFVzB5c2x5WEFFMHVaQUtjRHN3OEtfTVBocmFjREI4R01DQlJMX29Ea25kMGR3QVRvNlBHT2lnTGdCQUdBQjhET3lpS29CNDdPRzZnSDFja2JxQWVUMkJ1b0I3b0dxQWZ3MlJ1b0JfTFpHNmdIcHI0YnFBZnMxUnZZQndIeUJ3UVFoZlFLMGdnSkNJRGhnRUFRQVJnZGdBb0R5QXNCMkJNRGlCUUImYW1wO3NpZ2g9bW9hSVJvNzVjdUUmYW1wO3Z0PTFcIiBkYXRhLWdvb2dsZS1hdi1jeG49XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3Bjcy9hY3RpdmV2aWV3P3hhaT1BS0FPanN2VGJoQUFqRzhIRC1LNGJmaEFQNWo2V0EwMU05WXVELU1VMms4WUY0ckZDdnd3dGRvYVNBcTk1VmFwSGd3eVJPbWk1UDVCRWllZkF1SVFkWmJmU29ORGhta3FNNklUT2RPRDNRQ3lyaXRXNGhrVFBmWkppd1lvRGlucFl3dFRoTjJmY1hNS1I5TVROMTlOZkpmRF8wd3QmYW1wO3NhaT1BTWZsLVlUcTlFUG5LTVlYNnluRlN3cmo2eGFHZi1wQmhMVndkZXZza20xaVpTNzVyN3lhZGlJd2JzOVZSQi05SlpzZFJ0Tl95N3BHcFNfNUdpdWx0djdwRFBBdEhhMUEtUjdGNjNnalREREJUdjJZZG1zTTFnNUIxc212by1CRWM2VFomYW1wO3NpZz1DZzBBcktKU3pCNzBDMFo4dFRIM0VBRSZhbXA7Y2lkPUNBQVNQZVJveVhhZkJsRDVxWWlpNHNOcC1WWFFXdzVyYVVvVlF6NFN5clZHUjNtMngwSjJPUllLRE5ySmJmeFpaZHZhcXNXVVhQTjY1MzBSczUteFYyb1wiIGRhdGEtZ29vZ2xlLWF2LWRtPVwiMlwiIGRhdGEtZ29vZ2xlLWF2LWltbWVkaWF0ZT1cInRydWVcIiBkYXRhLWdvb2dsZS1hdi1pdHBsPVwiMjJcIiBkYXRhLWdvb2dsZS1hdi1tZXRhZGF0YT1cImxhPTAmYW1wO3hkaT0wJmFtcDtcIiBkYXRhLWdvb2dsZS1hdi1uYWlkPVwiMVwiIGRhdGEtZ29vZ2xlLWF2LW92ZXJyaWRlPVwiLTFcIiBkYXRhLWdvb2dsZS1hdi1ycz1cIjRcIiBkYXRhLWlmYz1cIltbWyZxdW90OzUsNSwxMCw1JnF1b3Q7LG51bGwsbnVsbCwyXV1dXCIgaWQ9XCJiYW5uZXItbm9sb2dvXCIgbGFuZz1cImVuXCI+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWUtMSByb3ctY29udGFpbmVyIGNhbnZhc1wiPjxkaXYgY2xhc3M9XCJucy05ajljMS1lLTIgc2lkZS1wYWRkaW5nLXctYXR0cmlidXRpb25cIj48L2Rpdj48ZGl2IGNsYXNzPVwibnMtOWo5YzEtZS0zIGNvbHVtbi1jb250YWluZXIgYW5pbWF0aW9uLWNvbnRhaW5lclwiPjxkaXYgY2xhc3M9XCJucy05ajljMS1lLTQgZnJhbWUtb25lXCI+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWUtNSBiYW5uZXItdGV4dC1jb250YWluZXIgY2xpY2thYmxlXCI+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWUtNiB1cmxcIiB0aXRsZT1cIlNxdWFyZXNwYWNlXCI+PGEgY2xhc3M9XCJucy05ajljMS1lLTdcIiBkYXRhLWFzb2NoLXRhcmdldHM9XCJhZDAsdXJsQ2xrXCIgZGlyPVwiYXV0b1wiIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGVhZHNlcnZpY2VzLmNvbS9wYWdlYWQvYWNsaz9zYT1MJmFtcDthaT1DM3hqOWtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBY2dEQ3FvRTZBRlAwSVVNdWlCdEZPZmsxX19kMGduMm1OTmgzWjlTVkR3TkVOeG1kNERibTV2OVZhdERPVkV4REY5Nko5LWVlTXVMeUxyN3VFdkVwUkNfUjFyZWxVS1dHY2J2OEFiUGhJRDNyemh0MzBXYXFJTnZOTFVDTUVLYlhkNjVXZ2pHT3VHbFhoci1fOW1TQWpUcG9mOEwzZkhBdjNqdFZvRFU2YUhLajdaTkNHdGthcV8xMURNWnhTMG5nQVpmbVpWdVNhc1UtdE9DWUZfS1hPVHlhazByY0RrMVRUWWs3bVBheWttVEpLZ3Fob3l5bTdtVzlmd0kyOC1RN1F3cy01VjBZdkM2ZzlsRVcweXNseVhBRTB1WkFLY0RzdzlJX3MxelNBeWRiM1VTVmZQZnkyUHdZU0tYbzN0N3dBVG82UEdPaWdMZ0JBR0FCOERPeWlLb0I0N09HNmdIMWNrYnFBZVQyQnVvQjdvR3FBZncyUnVvQl9MWkc2Z0hwcjRicUFmczFSdW9CX1BSRzZnSDdOVWJxQWVXMkJ1b0I4TGFHOWdIQWRJSUNRaUE0WUJBRUFFWUhiRUpJRmZPRG1QM2RidUFDZ09LQ3JFQmFIUjBjSE02THk5aFpDNWtiM1ZpYkdWamJHbGpheTV1WlhRdlpHUnRMM1J5WVdOclkyeHJMMDQzTVRnMk56a3VNekUxT1VkUFQwZE1SUzlDTWpNMU9UVTRNemd1TWpZNU5UVTNNRE15TzJSalgzUnlhMTloYVdROU5EWTBNVFExTXpNME8yUmpYM1J5YTE5amFXUTlNVEk1TnpjME1UTTFPMlJqWDJ4aGREMDdaR05mY21ScFpEMDdkR0ZuWDJadmNsOWphR2xzWkY5a2FYSmxZM1JsWkY5MGNtVmhkRzFsYm5ROU8zUm1kV0U5bUFzQnlBc0I0QXNCMkJNRGlCUUImYW1wO2FlPTEmYW1wO251bT0xJmFtcDtjaWQ9Q0FBU1BlUm95WGFmQmxENXFZaWk0c05wLVZYUVd3NXJhVW9WUXo0U3lyVkdSM20yeDBKMk9SWUtETnJKYmZ4WlpkdmFxc1dVWFBONjUzMFJzNS14VjJvJmFtcDtzaWc9QU9ENjRfM2ZkTXRyY2ZHTnpDTWVZZ0haQjdFZEJFRGNfdyZhbXA7Y2xpZW50PWNhLXB1Yi02MzY1NDQ4NTg3MDAyMzcxJmFtcDtuYj0xJmFtcDthZHVybD1odHRwczovL3d3dy5zcXVhcmVzcGFjZS5jb20lM0ZnY2xpZCUzREVBSWFJUW9iQ2hNSXpQalB6c1BCNndJVmh1eklDaDNkbUFrTkVBRVlBU0FBRWdKTExQRF9Cd0VcIiBvbj1cInRhcDphc29jaC1leGl0LWFwaS5leGl0KHRhcmdldD0mIzM5O2FkMCYjMzk7LCBfYXNvY2hOYlBhcmFtPSYjMzk7MSYjMzk7KVwiIHRhcmdldD1cIl90b3BcIj5TcXVhcmVzcGFjZTwvYT48L2Rpdj48ZGl2IGNsYXNzPVwibnMtOWo5YzEtZS04IHRpdGxlLWxpbmUxXCIgdGl0bGU9XCJTcXVhcmVzcGFjZVwiPjxhIGNsYXNzPVwibnMtOWo5YzEtZS05XCIgZGF0YS1hc29jaC10YXJnZXRzPVwiYWQwLHRpdGxlQ2xrXCIgZGlyPVwiYXV0b1wiIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGVhZHNlcnZpY2VzLmNvbS9wYWdlYWQvYWNsaz9zYT1MJmFtcDthaT1DM3hqOWtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBY2dEQ3FvRTZBRlAwSVVNdWlCdEZPZmsxX19kMGduMm1OTmgzWjlTVkR3TkVOeG1kNERibTV2OVZhdERPVkV4REY5Nko5LWVlTXVMeUxyN3VFdkVwUkNfUjFyZWxVS1dHY2J2OEFiUGhJRDNyemh0MzBXYXFJTnZOTFVDTUVLYlhkNjVXZ2pHT3VHbFhoci1fOW1TQWpUcG9mOEwzZkhBdjNqdFZvRFU2YUhLajdaTkNHdGthcV8xMURNWnhTMG5nQVpmbVpWdVNhc1UtdE9DWUZfS1hPVHlhazByY0RrMVRUWWs3bVBheWttVEpLZ3Fob3l5bTdtVzlmd0kyOC1RN1F3cy01VjBZdkM2ZzlsRVcweXNseVhBRTB1WkFLY0RzdzlJX3MxelNBeWRiM1VTVmZQZnkyUHdZU0tYbzN0N3dBVG82UEdPaWdMZ0JBR0FCOERPeWlLb0I0N09HNmdIMWNrYnFBZVQyQnVvQjdvR3FBZncyUnVvQl9MWkc2Z0hwcjRicUFmczFSdW9CX1BSRzZnSDdOVWJxQWVXMkJ1b0I4TGFHOWdIQWRJSUNRaUE0WUJBRUFFWUhiRUpJRmZPRG1QM2RidUFDZ09LQ3JFQmFIUjBjSE02THk5aFpDNWtiM1ZpYkdWamJHbGpheTV1WlhRdlpHUnRMM1J5WVdOclkyeHJMMDQzTVRnMk56a3VNekUxT1VkUFQwZE1SUzlDTWpNMU9UVTRNemd1TWpZNU5UVTNNRE15TzJSalgzUnlhMTloYVdROU5EWTBNVFExTXpNME8yUmpYM1J5YTE5amFXUTlNVEk1TnpjME1UTTFPMlJqWDJ4aGREMDdaR05mY21ScFpEMDdkR0ZuWDJadmNsOWphR2xzWkY5a2FYSmxZM1JsWkY5MGNtVmhkRzFsYm5ROU8zUm1kV0U5bUFzQnlBc0I0QXNCMkJNRGlCUUImYW1wO2FlPTEmYW1wO251bT0xJmFtcDtjaWQ9Q0FBU1BlUm95WGFmQmxENXFZaWk0c05wLVZYUVd3NXJhVW9WUXo0U3lyVkdSM20yeDBKMk9SWUtETnJKYmZ4WlpkdmFxc1dVWFBONjUzMFJzNS14VjJvJmFtcDtzaWc9QU9ENjRfM2ZkTXRyY2ZHTnpDTWVZZ0haQjdFZEJFRGNfdyZhbXA7Y2xpZW50PWNhLXB1Yi02MzY1NDQ4NTg3MDAyMzcxJmFtcDtuYj0wJmFtcDthZHVybD1odHRwczovL3d3dy5zcXVhcmVzcGFjZS5jb20lM0ZnY2xpZCUzREVBSWFJUW9iQ2hNSXpQalB6c1BCNndJVmh1eklDaDNkbUFrTkVBRVlBU0FBRWdKTExQRF9Cd0VcIiBvbj1cInRhcDphc29jaC1leGl0LWFwaS5leGl0KHRhcmdldD0mIzM5O2FkMCYjMzk7LCBfYXNvY2hOYlBhcmFtPSYjMzk7MCYjMzk7KVwiIHRhcmdldD1cIl90b3BcIj5TcXVhcmVzcGFjZSBXZWJzaXRlIEJ1aWxkZXI8L2E+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWUtMTAgZnJhbWUtdGhyZWVcIj48ZGl2IGNsYXNzPVwibnMtOWo5YzEtZS0xMSBiYW5uZXItdGV4dC1jb250YWluZXJcIj48ZGl2IGNsYXNzPVwibnMtOWo5YzEtZS0xMiBkZXNjcmlwdGlvbiBjbGlja2FibGVcIiB0aXRsZT1cIlNxdWFyZXNwYWNlXCI+PGEgY2xhc3M9XCJucy05ajljMS1lLTEzXCIgZGF0YS1hc29jaC10YXJnZXRzPVwiYWQwLGJvZHlDbGtcIiBkaXI9XCJhdXRvXCIgaHJlZj1cImh0dHBzOi8vd3d3Lmdvb2dsZWFkc2VydmljZXMuY29tL3BhZ2VhZC9hY2xrP3NhPUwmYW1wO2FpPUMzeGo5a045S1g4endJNGJab3diZHNhWm80cVctOEY3UDBfXzdqUXVpN2JTUmtBd1FBU0N0c2FzaFlNa0dvQUhTLU12aUE4Z0JBZUFDQUtnREFjZ0RDcW9FNkFGUDBJVU11aUJ0Rk9mazFfX2QwZ24ybU5OaDNaOVNWRHdORU54bWQ0RGJtNXY5VmF0RE9WRXhERjk2SjktZWVNdUx5THI3dUV2RXBSQ19SMXJlbFVLV0djYnY4QWJQaElEM3J6aHQzMFdhcUlOdk5MVUNNRUtiWGQ2NVdnakdPdUdsWGhyLV85bVNBalRwb2Y4TDNmSEF2M2p0Vm9EVTZhSEtqN1pOQ0d0a2FxXzExRE1aeFMwbmdBWmZtWlZ1U2FzVS10T0NZRl9LWE9UeWFrMHJjRGsxVFRZazdtUGF5a21USktncWhveXltN21XOWZ3STI4LVE3UXdzLTVWMFl2QzZnOWxFVzB5c2x5WEFFMHVaQUtjRHN3OUlfczF6U0F5ZGIzVVNWZlBmeTJQd1lTS1hvM3Q3d0FUbzZQR09pZ0xnQkFHQUI4RE95aUtvQjQ3T0c2Z0gxY2ticUFlVDJCdW9CN29HcUFmdzJSdW9CX0xaRzZnSHByNGJxQWZzMVJ1b0JfUFJHNmdIN05VYnFBZVcyQnVvQjhMYUc5Z0hBZElJQ1FpQTRZQkFFQUVZSGJFSklGZk9EbVAzZGJ1QUNnT0tDckVCYUhSMGNITTZMeTloWkM1a2IzVmliR1ZqYkdsamF5NXVaWFF2WkdSdEwzUnlZV05yWTJ4ckwwNDNNVGcyTnprdU16RTFPVWRQVDBkTVJTOUNNak0xT1RVNE16Z3VNalk1TlRVM01ETXlPMlJqWDNSeWExOWhhV1E5TkRZME1UUTFNek0wTzJSalgzUnlhMTlqYVdROU1USTVOemMwTVRNMU8yUmpYMnhoZEQwN1pHTmZjbVJwWkQwN2RHRm5YMlp2Y2w5amFHbHNaRjlrYVhKbFkzUmxaRjkwY21WaGRHMWxiblE5TzNSbWRXRTltQXNCeUFzQjRBc0IyQk1EaUJRQiZhbXA7YWU9MSZhbXA7bnVtPTEmYW1wO2NpZD1DQUFTUGVSb3lYYWZCbEQ1cVlpaTRzTnAtVlhRV3c1cmFVb1ZRejRTeXJWR1IzbTJ4MEoyT1JZS0ROckpiZnhaWmR2YXFzV1VYUE42NTMwUnM1LXhWMm8mYW1wO3NpZz1BT0Q2NF8zZmRNdHJjZkdOekNNZVlnSFpCN0VkQkVEY193JmFtcDtjbGllbnQ9Y2EtcHViLTYzNjU0NDg1ODcwMDIzNzEmYW1wO25iPTcmYW1wO2FkdXJsPWh0dHBzOi8vd3d3LnNxdWFyZXNwYWNlLmNvbSUzRmdjbGlkJTNERUFJYUlRb2JDaE1JelBqUHpzUEI2d0lWaHV6SUNoM2RtQWtORUFFWUFTQUFFZ0pMTFBEX0J3RVwiIG9uPVwidGFwOmFzb2NoLWV4aXQtYXBpLmV4aXQodGFyZ2V0PSYjMzk7YWQwJiMzOTssIF9hc29jaE5iUGFyYW09JiMzOTs3JiMzOTspXCIgdGFyZ2V0PVwiX3RvcFwiPk1ha2UgYW5kIG1hbmFnZSB5b3VyIG93biBwcm9mZXNzaW9uYWw8YnI+d2Vic2l0ZSB3aXRoIFNxdWFyZXNwYWNlJ3MgYWxsLWluLW9uZSBwbGF0Zm9ybS48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWUtMTRcIj48L2Rpdj48YSBjbGFzcz1cIm5zLTlqOWMxLWUtMTUgY2xpY2thYmxlXCIgZGF0YS1hc29jaC10YXJnZXRzPVwiYWQwLGJ0bkNsa1wiIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGVhZHNlcnZpY2VzLmNvbS9wYWdlYWQvYWNsaz9zYT1MJmFtcDthaT1DM3hqOWtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBY2dEQ3FvRTZBRlAwSVVNdWlCdEZPZmsxX19kMGduMm1OTmgzWjlTVkR3TkVOeG1kNERibTV2OVZhdERPVkV4REY5Nko5LWVlTXVMeUxyN3VFdkVwUkNfUjFyZWxVS1dHY2J2OEFiUGhJRDNyemh0MzBXYXFJTnZOTFVDTUVLYlhkNjVXZ2pHT3VHbFhoci1fOW1TQWpUcG9mOEwzZkhBdjNqdFZvRFU2YUhLajdaTkNHdGthcV8xMURNWnhTMG5nQVpmbVpWdVNhc1UtdE9DWUZfS1hPVHlhazByY0RrMVRUWWs3bVBheWttVEpLZ3Fob3l5bTdtVzlmd0kyOC1RN1F3cy01VjBZdkM2ZzlsRVcweXNseVhBRTB1WkFLY0RzdzlJX3MxelNBeWRiM1VTVmZQZnkyUHdZU0tYbzN0N3dBVG82UEdPaWdMZ0JBR0FCOERPeWlLb0I0N09HNmdIMWNrYnFBZVQyQnVvQjdvR3FBZncyUnVvQl9MWkc2Z0hwcjRicUFmczFSdW9CX1BSRzZnSDdOVWJxQWVXMkJ1b0I4TGFHOWdIQWRJSUNRaUE0WUJBRUFFWUhiRUpJRmZPRG1QM2RidUFDZ09LQ3JFQmFIUjBjSE02THk5aFpDNWtiM1ZpYkdWamJHbGpheTV1WlhRdlpHUnRMM1J5WVdOclkyeHJMMDQzTVRnMk56a3VNekUxT1VkUFQwZE1SUzlDTWpNMU9UVTRNemd1TWpZNU5UVTNNRE15TzJSalgzUnlhMTloYVdROU5EWTBNVFExTXpNME8yUmpYM1J5YTE5amFXUTlNVEk1TnpjME1UTTFPMlJqWDJ4aGREMDdaR05mY21ScFpEMDdkR0ZuWDJadmNsOWphR2xzWkY5a2FYSmxZM1JsWkY5MGNtVmhkRzFsYm5ROU8zUm1kV0U5bUFzQnlBc0I0QXNCMkJNRGlCUUImYW1wO2FlPTEmYW1wO251bT0xJmFtcDtjaWQ9Q0FBU1BlUm95WGFmQmxENXFZaWk0c05wLVZYUVd3NXJhVW9WUXo0U3lyVkdSM20yeDBKMk9SWUtETnJKYmZ4WlpkdmFxc1dVWFBONjUzMFJzNS14VjJvJmFtcDtzaWc9QU9ENjRfM2ZkTXRyY2ZHTnpDTWVZZ0haQjdFZEJFRGNfdyZhbXA7Y2xpZW50PWNhLXB1Yi02MzY1NDQ4NTg3MDAyMzcxJmFtcDtuYj04JmFtcDthZHVybD1odHRwczovL3d3dy5zcXVhcmVzcGFjZS5jb20lM0ZnY2xpZCUzREVBSWFJUW9iQ2hNSXpQalB6c1BCNndJVmh1eklDaDNkbUFrTkVBRVlBU0FBRWdKTExQRF9Cd0VcIiBvbj1cInRhcDphc29jaC1leGl0LWFwaS5leGl0KHRhcmdldD0mIzM5O2FkMCYjMzk7LCBfYXNvY2hOYlBhcmFtPSYjMzk7OCYjMzk7KVwiIHRhcmdldD1cIl90b3BcIj48ZGl2IGNsYXNzPVwibnMtOWo5YzEtZS0xNiBidXR0b24tY29udGFpbmVyXCI+PGRpdiBjbGFzcz1cIm5zLTlqOWMxLWUtMTcgYnV0dG9uXCI+PHNwYW4gY2xhc3M9XCJucy05ajljMS1lLTE4XCIgZGlyPVwiYXV0b1wiPk9wZW48L3NwYW4+PC9kaXY+PC9kaXY+PC9hPjxkaXYgY2xhc3M9XCJucy05ajljMS1lLTE5IHNpZGUtcGFkZGluZy13by1hdHRyaWJ1dGlvblwiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJhYmdjIGFiZ2YgcGVuXCIgZGlyPVwibHRyXCIgaWQ9XCJhYmdjXCI+PGRpdiBjbGFzcz1cImFiZ2NwIHBlYVwiIGlkPVwiYWJnY3BcIj48ZGl2IGNsYXNzPVwiYWJnc1wiIGlkPVwiYWJnc1wiPjxhIGNsYXNzPVwiYWJnbFwiIGhyZWY9XCJodHRwczovL2Fkc3NldHRpbmdzLmdvb2dsZS5jb20vd2h5dGhpc2FkP3JlYXNvbnM9QUIzYWZHRUFBQVotVzF0YlcyNTFiR3dzV3prc05EZGRMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xGdGJJbE54ZFdGeVpYTndZV05sTENCSmJtTXVJaXdpVlZNaUxERXNiblZzYkN3eFhWMWRMRnR1ZFd4c0xDSm9kSFJ3Y3pvdkwyZHZiMmRzWldGa2N5NW5MbVJ2ZFdKc1pXTnNhV05yTG01bGRDOXdZV2RsWVdRdlkyOXVkbVZ5YzJsdmJpOF9ZV2s5UXpONGFqbHJUamxMV0RoNmQwazBZbHB2ZDJKa2MyRmFielJ4VnkwNFJqZFFNRjlmTjJwUmRXazNZbE5TYTBGM1VVRlRRM1J6WVhOb1dVMXJSMjlCU0ZNdFRYWnBRVGhuUWtGbFFVTkJTMmRFUVdOblJFTnhiMFUyUVVaUU1FbFZUWFZwUW5SR1QyWnJNVjlmWkRCbmJqSnRUazVvTTFvNVUxWkVkMDVGVG5odFpEUkVZbTAxZGpsV1lYUkVUMVpGZUVSR09UWktPUzFsWlUxMVRIbE1jamQxUlhaRmNGSkRYMUl4Y21Wc1ZVdFhSMk5pZGpoQllsQm9TVVF6Y25wb2RETXdWMkZ4U1U1MlRreFZRMDFGUzJKWVpEWTFWMmRxUjA5MVIyeFlhSEl0WHpsdFUwRnFWSEJ2WmpoTU0yWklRWFl6YW5SV2IwUlZObUZJUzJvM1drNURSM1JyWVhGZk1URkVUVnA0VXpCdVowRmFabTFhVm5WVFlYTlZMWFJQUTFsR1gwdFlUMVI1WVdzd2NtTkVhekZVVkZsck4yMVFZWGxyYlZSS1MyZHhhRzk1ZVcwM2JWYzVabmRKTWpndFVUZFJkM010TlZZd1dYWkRObWM1YkVWWE1IbHpiSGxZUVVVd2RWcEJTMk5FYzNjNVNWOXpNWHBUUVhsa1lqTlZVMVptVUdaNU1sQjNXVk5MV0c4emREZDNRVlJ2TmxCSFQybG5UR2RDUVVkQlFqaEVUM2xwUzI5Q05EZFBSelpuU0RGamEySnhRV1ZVTWtKMWIwSTNiMGR4UVdaM01sSjFiMEpmVEZwSE5tZEljSEkwWW5GQlpuTXhVblZ2UWw5UVVrYzJaMGczVGxWaWNVRmxWekpDZFc5Q09FeGhSemxuU0VGa1NVbERVV2xCTkZsQ1FVVkJSVmxJWWtWS1NVWm1UMFJ0VUROa1luVkJRMmRQUzBOeVJVSmhTRkl3WTBoTk5reDVPV2hhUXpWcllqTldhV0pIVm1waVIyeHFZWGsxZFZwWVVYWmFSMUowVEROU2VWbFhUbkpaTW5oeVREQTBNMDFVWnpKT2VtdDFUWHBGTVU5VlpGQlVNR1JOVWxNNVEwMXFUVEZQVkZVMFRYcG5kVTFxV1RWT1ZGVXpUVVJOZVU4eVVtcFlNMUo1WVRFNWFHRlhVVGxPUkZrd1RWUlJNVTE2VFRCUE1sSnFXRE5TZVdFeE9XcGhWMUU1VFZSSk5VNTZZekJOVkUweFR6SlNhbGd5ZUdoa1JEQTNXa2RPWm1OdFVuQmFSREEzWkVkR2JsZ3lXblpqYkRscVlVZHNjMXBHT1d0aFdFcHNXVE5TYkZwR09UQmpiVlpvWkVjeGJHSnVVVGxQTTFKdFpGZEZPVzFCYzBKNVFYTkNORUZ6UWpKQ1RVUnBRbEZDWEhVd01ESTJjMmxuYUQweFlXUjZhR1ZrUm5ocVNWeDFNREF5Tm1OcFpEMURRVkZUVUhkRFRrbHlURTFXZG5JeVEwVmpRWHBrYVcxbGFqVlNZbU5LVURWSE1HNWtlalpyY1ZwUlF6RTJTR1ZpYURNM1VFVmhTVlIzYVZkcGFpMDRkMmhVVVZONVkyVlFjVWhVV0cwMGQyaGhVazAzY2toMWNGRWlMRnR1ZFd4c0xHNTFiR3dzYm5Wc2JDd2lhSFIwY0hNNkx5OWthWE53YkdGNVlXUnpMV1p2Y20xaGRITXVaMjl2WjJ4bGRYTmxjbU52Ym5SbGJuUXVZMjl0TDJGa2N5OXdjbVYyYVdWM0wyTnZiblJsYm5RdWFuTV9ZMnhwWlc1MFBYZDBZVngxTURBeU5tOWlablZ6WTJGMFpXUkRkWE4wYjIxbGNrbGtQVGMxTWpnNU1qZ3dORGhjZFRBd01qWmpjbVZoZEdsMlpVbGtQVFF5TXpnMk5EZzBOVFExTjF4MU1EQXlOblpsY25OcGIyNUpaRDB4WEhVd01ESTJZV1JIY205MWNFTnlaV0YwYVhabFNXUTlNemd4TnpBMk9ESTBNVFF6WEhVd01ESTJhSFJ0YkZCaGNtVnVkRWxrUFhCeVpYWXRNRngxTURBeU5taGxhV2RvZEQwd1hIVXdNREkyZDJsa2RHZzlNRngxTURBeU5uTnBaejFCUTJsV1FsOTNXVnBSYzJkMVJtSTFYekJ3TFdka1pUQkRTMFZYYWxkcGNURkJJbDBzYm5Wc2JDeHVkV3hzTERFc0lrbHBRakpXY214MllqRlJTWG81VUY4dE5EQk1SVWxMUm5ZM1VVaEhURU5LTmtORmFVUXpUbmhrVjBaNVdsaE9kMWxYVG14TWJVNTJZbFJKU0VOQlZWUkhTbXN5UmtWSldGa3lSWFJqU0ZacFRGUlplazVxVlRCT1JHY3hUMFJqZDAxRVNYcE9la1pKUkRGblFtTkJSU0lzSWpFNU9Ea3hNekk1TXpBaVhWMWRMRnN4TERFc01WMWRhUGtIaHpTekpQVDlTOWphUTdMeGhES1FSckRJdllSTTEwSXRnLXBvcUVOdFhISXZDTWRtazFtbjZVWUQtSzFNVFhCclB3TU1sQnlNODBsdFZFTHFHblJYT0RiXzU0Mm0zbFoxd1lKWDM0N0NxVnFGX1JZQk8wUmkzSFFlcEhCT0tYcWg4VkNPSzZSeG1nY3JuN3d2V0xqQjZDSGx1T2lTN1RoOHpOcEQ0VmthQWFrcW9XVzBHdWJrM0xtVTBORDZpNkdGUnpXeXMxMDI5UnJPamwwdUZHazVFQW1VYm5kTWdNM0Z0eU92U2RtMlR5UG5ZbWxULWhHbmFyM0VaZEFINWxhWnNIMDBtc212M2Y1SkdvajBlQlBjcE5Sd0xwWGVPNUlhdzdiOXU2UVRCUVdRZG5GMnBCdHhUdXFYZFlRWFdUWnhrSEJCVmtwMThKZkM0T2FxREEsUFNQZi1RVjVZbkFTdG5nbFVNX1luUSZhbXA7c291cmNlPWRpc3BsYXlcIiBpZD1cImFiZ2xcIiB0YXJnZXQ9XCJfYmxhbmtcIj48YW1wLWltZyBjbGFzcz1cImktYW1waHRtbC1sYXlvdXQtZml4ZWQgaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgaS1hbXBodG1sLWVsZW1lbnQgaS1hbXBodG1sLWxheW91dFwiIGhlaWdodD1cIjE1XCIgaS1hbXBodG1sLWxheW91dD1cImZpeGVkXCIgaS1hbXBodG1sLXNzcj1cIlwiIHNyYz1cImh0dHBzOi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvaW1hZ2VzL2FkY2hvaWNlcy9lbl9ibC5wbmdcIiBzdHlsZT1cIndpZHRoOjc1cHg7aGVpZ2h0OjE1cHg7XCIgd2lkdGg9XCI3NVwiPjxpbWcgY2xhc3M9XCJpLWFtcGh0bWwtZmlsbC1jb250ZW50IGktYW1waHRtbC1yZXBsYWNlZC1jb250ZW50XCIgZGVjb2Rpbmc9XCJhc3luY1wiIHNyYz1cIi4vZW5fYmwucG5nXCI+PC9hbXAtaW1nPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiYWJnYlwiIGlkPVwiYWJnYlwiPjxhIGhyZWY9XCJodHRwczovL2Fkc3NldHRpbmdzLmdvb2dsZS5jb20vd2h5dGhpc2FkP3JlYXNvbnM9QUIzYWZHRUFBQVotVzF0YlcyNTFiR3dzV3prc05EZGRMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xGdGJJbE54ZFdGeVpYTndZV05sTENCSmJtTXVJaXdpVlZNaUxERXNiblZzYkN3eFhWMWRMRnR1ZFd4c0xDSm9kSFJ3Y3pvdkwyZHZiMmRzWldGa2N5NW5MbVJ2ZFdKc1pXTnNhV05yTG01bGRDOXdZV2RsWVdRdlkyOXVkbVZ5YzJsdmJpOF9ZV2s5UXpONGFqbHJUamxMV0RoNmQwazBZbHB2ZDJKa2MyRmFielJ4VnkwNFJqZFFNRjlmTjJwUmRXazNZbE5TYTBGM1VVRlRRM1J6WVhOb1dVMXJSMjlCU0ZNdFRYWnBRVGhuUWtGbFFVTkJTMmRFUVdOblJFTnhiMFUyUVVaUU1FbFZUWFZwUW5SR1QyWnJNVjlmWkRCbmJqSnRUazVvTTFvNVUxWkVkMDVGVG5odFpEUkVZbTAxZGpsV1lYUkVUMVpGZUVSR09UWktPUzFsWlUxMVRIbE1jamQxUlhaRmNGSkRYMUl4Y21Wc1ZVdFhSMk5pZGpoQllsQm9TVVF6Y25wb2RETXdWMkZ4U1U1MlRreFZRMDFGUzJKWVpEWTFWMmRxUjA5MVIyeFlhSEl0WHpsdFUwRnFWSEJ2WmpoTU0yWklRWFl6YW5SV2IwUlZObUZJUzJvM1drNURSM1JyWVhGZk1URkVUVnA0VXpCdVowRmFabTFhVm5WVFlYTlZMWFJQUTFsR1gwdFlUMVI1WVdzd2NtTkVhekZVVkZsck4yMVFZWGxyYlZSS1MyZHhhRzk1ZVcwM2JWYzVabmRKTWpndFVUZFJkM010TlZZd1dYWkRObWM1YkVWWE1IbHpiSGxZUVVVd2RWcEJTMk5FYzNjNVNWOXpNWHBUUVhsa1lqTlZVMVptVUdaNU1sQjNXVk5MV0c4emREZDNRVlJ2TmxCSFQybG5UR2RDUVVkQlFqaEVUM2xwUzI5Q05EZFBSelpuU0RGamEySnhRV1ZVTWtKMWIwSTNiMGR4UVdaM01sSjFiMEpmVEZwSE5tZEljSEkwWW5GQlpuTXhVblZ2UWw5UVVrYzJaMGczVGxWaWNVRmxWekpDZFc5Q09FeGhSemxuU0VGa1NVbERVV2xCTkZsQ1FVVkJSVmxJWWtWS1NVWm1UMFJ0VUROa1luVkJRMmRQUzBOeVJVSmhTRkl3WTBoTk5reDVPV2hhUXpWcllqTldhV0pIVm1waVIyeHFZWGsxZFZwWVVYWmFSMUowVEROU2VWbFhUbkpaTW5oeVREQTBNMDFVWnpKT2VtdDFUWHBGTVU5VlpGQlVNR1JOVWxNNVEwMXFUVEZQVkZVMFRYcG5kVTFxV1RWT1ZGVXpUVVJOZVU4eVVtcFlNMUo1WVRFNWFHRlhVVGxPUkZrd1RWUlJNVTE2VFRCUE1sSnFXRE5TZVdFeE9XcGhWMUU1VFZSSk5VNTZZekJOVkUweFR6SlNhbGd5ZUdoa1JEQTNXa2RPWm1OdFVuQmFSREEzWkVkR2JsZ3lXblpqYkRscVlVZHNjMXBHT1d0aFdFcHNXVE5TYkZwR09UQmpiVlpvWkVjeGJHSnVVVGxQTTFKdFpGZEZPVzFCYzBKNVFYTkNORUZ6UWpKQ1RVUnBRbEZDWEhVd01ESTJjMmxuYUQweFlXUjZhR1ZrUm5ocVNWeDFNREF5Tm1OcFpEMURRVkZUVUhkRFRrbHlURTFXZG5JeVEwVmpRWHBrYVcxbGFqVlNZbU5LVURWSE1HNWtlalpyY1ZwUlF6RTJTR1ZpYURNM1VFVmhTVlIzYVZkcGFpMDRkMmhVVVZONVkyVlFjVWhVV0cwMGQyaGhVazAzY2toMWNGRWlMRnR1ZFd4c0xHNTFiR3dzYm5Wc2JDd2lhSFIwY0hNNkx5OWthWE53YkdGNVlXUnpMV1p2Y20xaGRITXVaMjl2WjJ4bGRYTmxjbU52Ym5SbGJuUXVZMjl0TDJGa2N5OXdjbVYyYVdWM0wyTnZiblJsYm5RdWFuTV9ZMnhwWlc1MFBYZDBZVngxTURBeU5tOWlablZ6WTJGMFpXUkRkWE4wYjIxbGNrbGtQVGMxTWpnNU1qZ3dORGhjZFRBd01qWmpjbVZoZEdsMlpVbGtQVFF5TXpnMk5EZzBOVFExTjF4MU1EQXlOblpsY25OcGIyNUpaRDB4WEhVd01ESTJZV1JIY205MWNFTnlaV0YwYVhabFNXUTlNemd4TnpBMk9ESTBNVFF6WEhVd01ESTJhSFJ0YkZCaGNtVnVkRWxrUFhCeVpYWXRNRngxTURBeU5taGxhV2RvZEQwd1hIVXdNREkyZDJsa2RHZzlNRngxTURBeU5uTnBaejFCUTJsV1FsOTNXVnBSYzJkMVJtSTFYekJ3TFdka1pUQkRTMFZYYWxkcGNURkJJbDBzYm5Wc2JDeHVkV3hzTERFc0lrbHBRakpXY214MllqRlJTWG81VUY4dE5EQk1SVWxMUm5ZM1VVaEhURU5LTmtORmFVUXpUbmhrVjBaNVdsaE9kMWxYVG14TWJVNTJZbFJKU0VOQlZWUkhTbXN5UmtWSldGa3lSWFJqU0ZacFRGUlplazVxVlRCT1JHY3hUMFJqZDAxRVNYcE9la1pKUkRGblFtTkJSU0lzSWpFNU9Ea3hNekk1TXpBaVhWMWRMRnN4TERFc01WMWRhUGtIaHpTekpQVDlTOWphUTdMeGhES1FSckRJdllSTTEwSXRnLXBvcUVOdFhISXZDTWRtazFtbjZVWUQtSzFNVFhCclB3TU1sQnlNODBsdFZFTHFHblJYT0RiXzU0Mm0zbFoxd1lKWDM0N0NxVnFGX1JZQk8wUmkzSFFlcEhCT0tYcWg4VkNPSzZSeG1nY3JuN3d2V0xqQjZDSGx1T2lTN1RoOHpOcEQ0VmthQWFrcW9XVzBHdWJrM0xtVTBORDZpNkdGUnpXeXMxMDI5UnJPamwwdUZHazVFQW1VYm5kTWdNM0Z0eU92U2RtMlR5UG5ZbWxULWhHbmFyM0VaZEFINWxhWnNIMDBtc212M2Y1SkdvajBlQlBjcE5Sd0xwWGVPNUlhdzdiOXU2UVRCUVdRZG5GMnBCdHhUdXFYZFlRWFdUWnhrSEJCVmtwMThKZkM0T2FxREEsUFNQZi1RVjVZbkFTdG5nbFVNX1luUSZhbXA7c291cmNlPWRpc3BsYXlcIiB0YXJnZXQ9XCJfYmxhbmtcIj48YW1wLWltZyBjbGFzcz1cImktYW1waHRtbC1sYXlvdXQtZml4ZWQgaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgaS1hbXBodG1sLWVsZW1lbnQgaS1hbXBodG1sLWxheW91dFwiIGhlaWdodD1cIjE1XCIgaS1hbXBodG1sLWxheW91dD1cImZpeGVkXCIgaS1hbXBodG1sLXNzcj1cIlwiIHNyYz1cImh0dHBzOi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvaW1hZ2VzL2FkY2hvaWNlcy9pY29uLnBuZ1wiIHN0eWxlPVwid2lkdGg6MTVweDtoZWlnaHQ6MTVweDtcIiB3aWR0aD1cIjE1XCI+PGltZyBjbGFzcz1cImktYW1waHRtbC1maWxsLWNvbnRlbnQgaS1hbXBodG1sLXJlcGxhY2VkLWNvbnRlbnRcIiBkZWNvZGluZz1cImFzeW5jXCIgc3JjPVwiLi9pY29uLnBuZ1wiPjwvYW1wLWltZz48L2E+PC9kaXY+PC9kaXY+PGFtcC1hbmFseXRpY3MgY2xhc3M9XCJpLWFtcGh0bWwtbGF5b3V0LWZpeGVkIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50XCIgaS1hbXBodG1sLWxheW91dD1cImZpeGVkXCIgc3R5bGU9XCJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtcIiB0cmlnZ2VyPVwiaW1tZWRpYXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgaGlkZGVuPVwiXCI+PHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiPntcInJlcXVlc3RzXCI6IHtcInJlcG9ydE5vTGFiZWxJbnN0YW5jZVwiOiBcImh0dHBzOi8vZ29vZ2xlYWRzLmcuZG91YmxlY2xpY2submV0L3BhZ2VhZC9jb252ZXJzaW9uLz9haT1DM3hqOWtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBY2dEQ3FvRTZBRlAwSVVNdWlCdEZPZmsxX19kMGduMm1OTmgzWjlTVkR3TkVOeG1kNERibTV2OVZhdERPVkV4REY5Nko5LWVlTXVMeUxyN3VFdkVwUkNfUjFyZWxVS1dHY2J2OEFiUGhJRDNyemh0MzBXYXFJTnZOTFVDTUVLYlhkNjVXZ2pHT3VHbFhoci1fOW1TQWpUcG9mOEwzZkhBdjNqdFZvRFU2YUhLajdaTkNHdGthcV8xMURNWnhTMG5nQVpmbVpWdVNhc1UtdE9DWUZfS1hPVHlhazByY0RrMVRUWWs3bVBheWttVEpLZ3Fob3l5bTdtVzlmd0kyOC1RN1F3cy01VjBZdkM2ZzlsRVcweXNseVhBRTB1WkFLY0RzdzlJX3MxelNBeWRiM1VTVmZQZnkyUHdZU0tYbzN0N3dBVG82UEdPaWdMZ0JBR0FCOERPeWlLb0I0N09HNmdIMWNrYnFBZVQyQnVvQjdvR3FBZncyUnVvQl9MWkc2Z0hwcjRicUFmczFSdW9CX1BSRzZnSDdOVWJxQWVXMkJ1b0I4TGFHOWdIQWRJSUNRaUE0WUJBRUFFWUhiRUpJRmZPRG1QM2RidUFDZ09LQ3JFQmFIUjBjSE02THk5aFpDNWtiM1ZpYkdWamJHbGpheTV1WlhRdlpHUnRMM1J5WVdOclkyeHJMMDQzTVRnMk56a3VNekUxT1VkUFQwZE1SUzlDTWpNMU9UVTRNemd1TWpZNU5UVTNNRE15TzJSalgzUnlhMTloYVdROU5EWTBNVFExTXpNME8yUmpYM1J5YTE5amFXUTlNVEk1TnpjME1UTTFPMlJqWDJ4aGREMDdaR05mY21ScFpEMDdkR0ZuWDJadmNsOWphR2xzWkY5a2FYSmxZM1JsWkY5MGNtVmhkRzFsYm5ROU8zUm1kV0U5bUFzQnlBc0I0QXNCMkJNRGlCUUImc2lnaD0xYWR6aGVkRnhqSSZjaWQ9Q0FRU1B3Q05JckxNVnZyMkNFY0F6ZGltZWo1UmJjSlA1RzBuZHo2a3FaUUMxNkhlYmgzN1BFYUlUd2lXaWotOHdoVFFTeWNlUHFIVFhtNHdoYVJNN3JIdXBRJmNpZD1DQVFTUHdDTklyTE1WdnIyQ0VjQXpkaW1lajVSYmNKUDVHMG5kejZrcVpRQzE2SGViaDM3UEVhSVR3aVdpai04d2hUUVN5Y2VQcUhUWG00d2hhUk03ckh1cFEmbGFiZWw9JHtsYWJlbH1cIixcInJlcG9ydExhYmVsSW5zdGFuY2VcIjogXCJodHRwczovL2dvb2dsZWFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvY29udmVyc2lvbi8/YWk9QzN4ajlrTjlLWDh6d0k0Ylpvd2Jkc2FabzRxVy04RjdQMF9fN2pRdWk3YlNSa0F3UUFTQ3RzYXNoWU1rR29BSFMtTXZpQThnQkFlQUNBS2dEQWNnRENxb0U2QUZQMElVTXVpQnRGT2ZrMV9fZDBnbjJtTk5oM1o5U1ZEd05FTnhtZDREYm01djlWYXRET1ZFeERGOTZKOS1lZU11THlMcjd1RXZFcFJDX1IxcmVsVUtXR2NidjhBYlBoSUQzcnpodDMwV2FxSU52TkxVQ01FS2JYZDY1V2dqR091R2xYaHItXzltU0FqVHBvZjhMM2ZIQXYzanRWb0RVNmFIS2o3Wk5DR3RrYXFfMTFETVp4UzBuZ0FaZm1aVnVTYXNVLXRPQ1lGX0tYT1R5YWswcmNEazFUVFlrN21QYXlrbVRKS2dxaG95eW03bVc5ZndJMjgtUTdRd3MtNVYwWXZDNmc5bEVXMHlzbHlYQUUwdVpBS2NEc3c5SV9zMXpTQXlkYjNVU1ZmUGZ5MlB3WVNLWG8zdDd3QVRvNlBHT2lnTGdCQUdBQjhET3lpS29CNDdPRzZnSDFja2JxQWVUMkJ1b0I3b0dxQWZ3MlJ1b0JfTFpHNmdIcHI0YnFBZnMxUnVvQl9QUkc2Z0g3TlVicUFlVzJCdW9COExhRzlnSEFkSUlDUWlBNFlCQUVBRVlIYkVKSUZmT0RtUDNkYnVBQ2dPS0NyRUJhSFIwY0hNNkx5OWhaQzVrYjNWaWJHVmpiR2xqYXk1dVpYUXZaR1J0TDNSeVlXTnJZMnhyTDA0M01UZzJOemt1TXpFMU9VZFBUMGRNUlM5Q01qTTFPVFU0TXpndU1qWTVOVFUzTURNeU8yUmpYM1J5YTE5aGFXUTlORFkwTVRRMU16TTBPMlJqWDNSeWExOWphV1E5TVRJNU56YzBNVE0xTzJSalgyeGhkRDA3WkdOZmNtUnBaRDA3ZEdGblgyWnZjbDlqYUdsc1pGOWthWEpsWTNSbFpGOTBjbVZoZEcxbGJuUTlPM1JtZFdFOW1Bc0J5QXNCNEFzQjJCTURpQlFCJnNpZ2g9MWFkemhlZEZ4akkmY2lkPUNBUVNQd0NOSXJMTVZ2cjJDRWNBemRpbWVqNVJiY0pQNUcwbmR6NmtxWlFDMTZIZWJoMzdQRWFJVHdpV2lqLTh3aFRRU3ljZVBxSFRYbTR3aGFSTTdySHVwUSZjaWQ9Q0FRU1B3Q05JckxNVnZyMkNFY0F6ZGltZWo1UmJjSlA1RzBuZHo2a3FaUUMxNkhlYmgzN1BFYUlUd2lXaWotOHdoVFFTeWNlUHFIVFhtNHdoYVJNN3JIdXBRJmxhYmVsPSR7bGFiZWx9JmxhYmVsX2luc3RhbmNlPSR7bGFiZWxJbnN0YW5jZX0mY2J0PUlpQjJWcmx2YjFRSXo5UF8tNDBMRUlLRnY3UUhHTENKNkNFaUQzTnhkV0Z5WlhOd1lXTmxMbU52YlRJSENBVVRHSmsyRkVJWFkyRXRjSFZpTFRZek5qVTBORGcxT0Rjd01ESXpOekZJRDFnQmNBRVwifSxcInRyYW5zcG9ydFwiOiB7XCJiZWFjb25cIjogZmFsc2UsXCJ4aHJwb3N0XCI6IGZhbHNlLFwiaW1hZ2VcIjogdHJ1ZX0sXCJ0cmlnZ2Vyc1wiOiB7XCJ0cmFja011dGVcIjoge1wib25cIjogXCJjbGlja1wiLFwic2VsZWN0b3JcIjogXCJsYWJlbFtmb3I9J3NwcjEnXVwiLFwicmVxdWVzdFwiOiBcInJlcG9ydE5vTGFiZWxJbnN0YW5jZVwifSxcInRyYWNrUmVwb3J0QWRcIjoge1wib25cIjogXCJjbGlja1wiLFwic2VsZWN0b3JcIjogXCJsYWJlbFtmb3I9J3NwcjInXVwiLFwicmVxdWVzdFwiOiBcInJlcG9ydExhYmVsSW5zdGFuY2VcIn0sXCJ0cmFja1N1cnZleVJlc3BvbnNlXCI6IHtcIm9uXCI6IFwiY2xpY2tcIixcInNlbGVjdG9yXCI6IFwibGFiZWxbZm9yPSdzcHIzJ11cIixcInJlcXVlc3RcIjogXCJyZXBvcnRMYWJlbEluc3RhbmNlXCJ9LFwidHJhY2tXaHlUaGlzQWRcIjoge1wib25cIjogXCJjbGlja1wiLFwic2VsZWN0b3JcIjogXCIjc2J0blwiLFwicmVxdWVzdFwiOiBcInJlcG9ydExhYmVsSW5zdGFuY2VcIn19fTwvc2NyaXB0PjwvYW1wLWFuYWx5dGljcz48Zm9ybSBhY3Rpb249XCJodHRwczovL2cuY28vXCIgY2xhc3M9XCJzaCBzcyBqbSBhbXAtYW5pbWF0ZSBhYmdmIHBlbiBpLWFtcGh0bWwtZm9ybVwiIGlkPVwibXRhXCIgdGFyZ2V0PVwiX2JsYW5rXCIgbm92YWxpZGF0ZT1cIlwiPjxpbnB1dCBpZD1cInNwcjBcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxpbnB1dCBpZD1cInNwcjFcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxpbnB1dCBpZD1cInNwcjJcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxpbnB1dCBpZD1cInNwcjNcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxsYWJlbCBjbGFzcz1cImNiYiBwZWFcIiBkYXRhLXZhcnMtbGFiZWw9XCJ1c2VyX2ZlZWRiYWNrX21lbnVfaW50ZXJhY3Rpb25cIiBmb3I9XCJzcHIxXCIgaWQ9XCJjYmJcIj48c3ZnIGhlaWdodD1cIjE1XCIgd2lkdGg9XCIxNVwiIHhtbG5zPVwiLy93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0wLDBsMTUsMGwwLDE1bC0xNSwwWlwiIGZpbGw9XCIjY2RjY2NjXCI+PC9wYXRoPjxwYXRoIGQ9XCJNMy4yNSwzLjI1bDguNSw4LjVNMTEuNzUsMy4yNWwtOC41LDguNVwiIHN0cm9rZT1cIiMwMGFlY2RcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCI+PC9wYXRoPjwvc3ZnPjwvbGFiZWw+PGRpdiBjbGFzcz1cInBuIGFiZ2ZcIiBpZD1cInNwdjFcIj48YW1wLWZpdC10ZXh0IGNsYXNzPVwiZmwgaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50IGktYW1waHRtbC1sYXlvdXRcIiBoZWlnaHQ9XCI5MFwiIGktYW1waHRtbC1sYXlvdXQ9XCJyZXNwb25zaXZlXCIgbGF5b3V0PVwicmVzcG9uc2l2ZVwiIG1heC1mb250LXNpemU9XCIyMFwiIG1pbi1mb250LXNpemU9XCI4XCIgd2lkdGg9XCI3MjhcIj48aS1hbXBodG1sLXNpemVyIHN0eWxlPVwiZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDoxMi4zNjI2JTtcIiBzbG90PVwiaS1hbXBodG1sLXN2Y1wiPjwvaS1hbXBodG1sLXNpemVyPjxkaXYgY2xhc3M9XCJpLWFtcGh0bWwtZmlsbC1jb250ZW50IGktYW1waHRtbC1maXQtdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ6LWluZGV4OiAyO1wiPjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDIwcHg7XCI+PGRpdiBjbGFzcz1cImNsb3NlXCIgaWQ9XCJtZW51LWRpc21pc3NcIj48bGFiZWwgZm9yPVwic3ByMFwiPjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiPjxwYXRoIGNsYXNzPVwibmF0aXZlLWFycm93XCIgZD1cIk0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yelwiPjwvcGF0aD48L3N2Zz48L2xhYmVsPjwvZGl2PjxkaXYgaWQ9XCJ0aVwiPjxzcGFuIGNsYXNzPVwiY3RcIj5BZHMgYnkgPHN2ZyBmaWxsPVwiIzAwMDAwMFwiIHZpZXdCb3g9XCIwIDAgNjAgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03LjUgMTYuMjljLTQuMDcgMC03LjQ5LTMuMzEtNy40OS03LjM4UzMuNDMgMS41MyA3LjUgMS41M2MyLjI1IDAgMy44NS44OCA1LjA2IDIuMDNsLTEuNDIgMS40MmMtLjg3LS44MS0yLjA0LTEuNDQtMy42NC0xLjQ0LTIuOTcgMC01LjI5IDIuNC01LjI5IDUuMzdzMi4zMiA1LjM3IDUuMjkgNS4zN2MxLjkzIDAgMy4wMy0uNzcgMy43My0xLjQ4LjU4LS41OC45NS0xLjQgMS4xLTIuNTRINy41VjguMjRoNi43OWMuMDcuMzYuMTEuNzkuMTEgMS4yNiAwIDEuNTEtLjQxIDMuMzktMS43NSA0LjcyLTEuMyAxLjM1LTIuOTUgMi4wNy01LjE1IDIuMDd6bTE3Ljc1LTQuNzZjMCAyLjc0LTIuMTMgNC43NS00Ljc1IDQuNzVzLTQuNzUtMi4wMi00Ljc1LTQuNzVjMC0yLjc1IDIuMTMtNC43NSA0Ljc1LTQuNzVzNC43NSAyIDQuNzUgNC43NXptLTIuMDggMGMwLTEuNzEtMS4yNC0yLjg4LTIuNjctMi44OHMtMi42NyAxLjE3LTIuNjcgMi44OGMwIDEuNjkgMS4yNCAyLjg4IDIuNjcgMi44OHMyLjY3LTEuMTggMi42Ny0yLjg4em0xMy4wOCAwYzAgMi43NC0yLjEzIDQuNzUtNC43NSA0Ljc1cy00Ljc1LTIuMDItNC43NS00Ljc1YzAtMi43NSAyLjEzLTQuNzUgNC43NS00Ljc1czQuNzUgMiA0Ljc1IDQuNzV6bS0yLjA4IDBjMC0xLjcxLTEuMjQtMi44OC0yLjY3LTIuODhzLTIuNjcgMS4xNy0yLjY3IDIuODhjMCAxLjY5IDEuMjQgMi44OCAyLjY3IDIuODhzMi42Ny0xLjE4IDIuNjctMi44OHptMTIuNTgtNC40NnY4LjUzYzAgMy41MS0yLjA3IDQuOTUtNC41MiA0Ljk1LTIuMyAwLTMuNjktMS41NS00LjIxLTIuODFsMS44Mi0uNzZjLjMyLjc3IDEuMTIgMS42OSAyLjM5IDEuNjkgMS41NyAwIDIuNTQtLjk3IDIuNTQtMi43OXYtLjY4aC0uMDdjLS40Ny41OC0xLjM3IDEuMDgtMi41IDEuMDgtMi4zOCAwLTQuNTYtMi4wNy00LjU2LTQuNzQgMC0yLjY4IDIuMTgtNC43NyA0LjU2LTQuNzcgMS4xMyAwIDIuMDMuNSAyLjUgMS4wNmguMDd2LS43NmgxLjk4em0tMS44NCA0LjQ4YzAtMS42Ny0xLjEyLTIuOS0yLjU0LTIuOS0xLjQ0IDAtMi42NSAxLjIyLTIuNjUgMi45IDAgMS42NiAxLjIxIDIuODYgMi42NSAyLjg2IDEuNDMuMDEgMi41NC0xLjIgMi41NC0yLjg2em01Ljg5LTkuNTJWMTZoLTIuMDlWMi4wM2gyLjA5em04LjQ5IDExLjA3bDEuNjIgMS4wOGMtLjUyLjc3LTEuNzggMi4xMS0zLjk2IDIuMTEtMi43IDAtNC43Mi0yLjA5LTQuNzItNC43NSAwLTIuODMgMi4wMy00Ljc1IDQuNDgtNC43NSAyLjQ3IDAgMy42NyAxLjk2IDQuMDcgMy4wMmwuMjIuNTQtNi4zNiAyLjYzYy40OS45NSAxLjI0IDEuNDQgMi4zIDEuNDQgMS4wNyAwIDEuODEtLjUzIDIuMzUtMS4zMnptLTQuOTktMS43MWw0LjI1LTEuNzZjLS4yMy0uNTktLjk0LTEuMDEtMS43Ni0xLjAxLTEuMDYgMC0yLjU0LjkzLTIuNDkgMi43N3pcIj48L3BhdGg+PHBhdGggZD1cIk0wIDBoNjJ2MjRIMHpcIiBmaWxsPVwibm9uZVwiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PGRpdiBpZD1cImJ0bnNcIj48bGFiZWwgZGF0YS12YXJzLWxhYmVsPVwidXNlcl9mZWVkYmFja19tZW51X29wdGlvblwiIGRhdGEtdmFycy1sYWJlbC1pbnN0YW5jZT1cIjFcIiBmb3I9XCJzcHIyXCI+PGEgY2xhc3M9XCJidG5cIiBpZD1cInJidG5cIj48c3Bhbj5TZW5kIGZlZWRiYWNrPC9zcGFuPjwvYT48L2xhYmVsPjxsYWJlbD48YSBjbGFzcz1cImJ0blwiIGRhdGEtdmFycy1sYWJlbD1cImNsb3NlYnV0dG9uX3doeXRoaXNhZF9jbGlja1wiIGRhdGEtdmFycy1sYWJlbC1pbnN0YW5jZT1cIjFcIiBocmVmPVwiaHR0cHM6Ly9hZHNzZXR0aW5ncy5nb29nbGUuY29tL3doeXRoaXNhZD9yZWFzb25zPUFCM2FmR0VBQUFaLVcxdGJXMjUxYkd3c1d6a3NORGRkTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRnRiSWxOeGRXRnlaWE53WVdObExDQkpibU11SWl3aVZWTWlMREVzYm5Wc2JDd3hYVjFkTEZ0dWRXeHNMQ0pvZEhSd2N6b3ZMMmR2YjJkc1pXRmtjeTVuTG1SdmRXSnNaV05zYVdOckxtNWxkQzl3WVdkbFlXUXZZMjl1ZG1WeWMybHZiaThfWVdrOVF6TjRhamxyVGpsTFdEaDZkMGswWWxwdmQySmtjMkZhYnpSeFZ5MDRSamRRTUY5Zk4ycFJkV2szWWxOU2EwRjNVVUZUUTNSellYTm9XVTFyUjI5QlNGTXRUWFpwUVRoblFrRmxRVU5CUzJkRVFXTm5SRU54YjBVMlFVWlFNRWxWVFhWcFFuUkdUMlpyTVY5ZlpEQm5iakp0VGs1b00xbzVVMVpFZDA1RlRuaHRaRFJFWW0wMWRqbFdZWFJFVDFaRmVFUkdPVFpLT1MxbFpVMTFUSGxNY2pkMVJYWkZjRkpEWDFJeGNtVnNWVXRYUjJOaWRqaEJZbEJvU1VRemNucG9kRE13VjJGeFNVNTJUa3hWUTAxRlMySllaRFkxVjJkcVIwOTFSMnhZYUhJdFh6bHRVMEZxVkhCdlpqaE1NMlpJUVhZemFuUldiMFJWTm1GSVMybzNXazVEUjNScllYRmZNVEZFVFZwNFV6QnVaMEZhWm0xYVZuVlRZWE5WTFhSUFExbEdYMHRZVDFSNVlXc3djbU5FYXpGVVZGbHJOMjFRWVhscmJWUktTMmR4YUc5NWVXMDNiVmM1Wm5kSk1qZ3RVVGRSZDNNdE5WWXdXWFpETm1jNWJFVlhNSGx6YkhsWVFVVXdkVnBCUzJORWMzYzVTVjl6TVhwVFFYbGtZak5WVTFabVVHWjVNbEIzV1ZOTFdHOHpkRGQzUVZSdk5sQkhUMmxuVEdkQ1FVZEJRamhFVDNscFMyOUNORGRQUnpablNERmphMkp4UVdWVU1rSjFiMEkzYjBkeFFXWjNNbEoxYjBKZlRGcEhObWRJY0hJMFluRkJabk14VW5WdlFsOVFVa2MyWjBnM1RsVmljVUZsVnpKQ2RXOUNPRXhoUnpsblNFRmtTVWxEVVdsQk5GbENRVVZCUlZsSVlrVktTVVptVDBSdFVETmtZblZCUTJkUFMwTnlSVUpoU0ZJd1kwaE5Oa3g1T1doYVF6VnJZak5XYVdKSFZtcGlSMnhxWVhrMWRWcFlVWFphUjFKMFRETlNlVmxYVG5KWk1uaHlUREEwTTAxVVp6Sk9lbXQxVFhwRk1VOVZaRkJVTUdSTlVsTTVRMDFxVFRGUFZGVTBUWHBuZFUxcVdUVk9WRlV6VFVSTmVVOHlVbXBZTTFKNVlURTVhR0ZYVVRsT1JGa3dUVlJSTVUxNlRUQlBNbEpxV0ROU2VXRXhPV3BoVjFFNVRWUkpOVTU2WXpCTlZFMHhUekpTYWxneWVHaGtSREEzV2tkT1ptTnRVbkJhUkRBM1pFZEdibGd5V25aamJEbHFZVWRzYzFwR09XdGhXRXBzV1ROU2JGcEdPVEJqYlZab1pFY3hiR0p1VVRsUE0xSnRaRmRGT1cxQmMwSjVRWE5DTkVGelFqSkNUVVJwUWxGQ1hIVXdNREkyYzJsbmFEMHhZV1I2YUdWa1JuaHFTVngxTURBeU5tTnBaRDFEUVZGVFVIZERUa2x5VEUxV2RuSXlRMFZqUVhwa2FXMWxhalZTWW1OS1VEVkhNRzVrZWpacmNWcFJRekUyU0dWaWFETTNVRVZoU1ZSM2FWZHBhaTA0ZDJoVVVWTjVZMlZRY1VoVVdHMDBkMmhoVWswM2NraDFjRkVpTEZ0dWRXeHNMRzUxYkd3c2JuVnNiQ3dpYUhSMGNITTZMeTlrYVhOd2JHRjVZV1J6TFdadmNtMWhkSE11WjI5dloyeGxkWE5sY21OdmJuUmxiblF1WTI5dEwyRmtjeTl3Y21WMmFXVjNMMk52Ym5SbGJuUXVhbk1fWTJ4cFpXNTBQWGQwWVZ4MU1EQXlObTlpWm5WelkyRjBaV1JEZFhOMGIyMWxja2xrUFRjMU1qZzVNamd3TkRoY2RUQXdNalpqY21WaGRHbDJaVWxrUFRReU16ZzJORGcwTlRRMU4xeDFNREF5Tm5abGNuTnBiMjVKWkQweFhIVXdNREkyWVdSSGNtOTFjRU55WldGMGFYWmxTV1E5TXpneE56QTJPREkwTVRRelhIVXdNREkyYUhSdGJGQmhjbVZ1ZEVsa1BYQnlaWFl0TUZ4MU1EQXlObWhsYVdkb2REMHdYSFV3TURJMmQybGtkR2c5TUZ4MU1EQXlObk5wWnoxQlEybFdRbDkzV1ZwUmMyZDFSbUkxWHpCd0xXZGtaVEJEUzBWWGFsZHBjVEZCSWwwc2JuVnNiQ3h1ZFd4c0xERXNJa2xwUWpKV2NteDJZakZSU1hvNVVGOHROREJNUlVsTFJuWTNVVWhIVEVOS05rTkZhVVF6VG5oa1YwWjVXbGhPZDFsWFRteE1iVTUyWWxSSlNFTkJWVlJIU21zeVJrVkpXRmt5UlhSalNGWnBURlJaZWs1cVZUQk9SR2N4VDBSamQwMUVTWHBPZWtaSlJERm5RbU5CUlNJc0lqRTVPRGt4TXpJNU16QWlYVjFkTEZzeExERXNNVjFkYVBrSGh6U3pKUFQ5UzlqYVE3THhoREtRUnJESXZZUk0xMEl0Zy1wb3FFTnRYSEl2Q01kbWsxbW42VVlELUsxTVRYQnJQd01NbEJ5TTgwbHRWRUxxR25SWE9EYl81NDJtM2xaMXdZSlgzNDdDcVZxRl9SWUJPMFJpM0hRZXBIQk9LWHFoOFZDT0s2UnhtZ2Nybjd3dldMakI2Q0hsdU9pUzdUaDh6TnBENFZrYUFha3FvV1cwR3ViazNMbVUwTkQ2aTZHRlJ6V3lzMTAyOVJyT2psMHVGR2s1RUFtVWJuZE1nTTNGdHlPdlNkbTJUeVBuWW1sVC1oR25hcjNFWmRBSDVsYVpzSDAwbXNtdjNmNUpHb2owZUJQY3BOUndMcFhlTzVJYXc3Yjl1NlFUQlFXUWRuRjJwQnR4VHVxWGRZUVhXVFp4a0hCQlZrcDE4SmZDNE9hcURBLFBTUGYtUVY1WW5BU3RuZ2xVTV9ZblEmYW1wO3NvdXJjZT1kaXNwbGF5XCIgaWQ9XCJzYnRuXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4+V2h5IHRoaXMgYWQ/Jm5ic3A7PHN2ZyBmaWxsPVwiIzAwMDAwMFwiIGlkPVwic2lcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgeG1sbnM9XCIvL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCIwLjY3XCI+PC9jaXJjbGU+PHBhdGggZD1cIk00LjIsMTEuM1EzLjMsMTEuOCwzLjMsMTAuNzVMMy4zLDQuMVEzLjMsMy4xLDQuMywzLjVMMTAuNCw3LjBRMTIuMCw3LjUsMTAuNCw4LjBMNi42NSwxMC4wTDYuNjUsNy43NWEwLjY1LDAuNjUsMCwxLDAsLTEuMywwTDUuMzUsMTAuNzVhMC45LDAuOSwwLDAsMCwxLjMsMC44TDEyLjcsOC4yUTEzLjcsNy41LDEyLjcsNi43TDMuMywxLjZRMi4yLDEuMywxLjgsMi41TDEuOCwxMi41UTIuMiwxMy45LDMuMywxMy4zTDQuOCwxMi41QTAuMywwLjMsMCwxLDAsNC4yLDExLjNaXCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2E+PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgbGVmdDogMHB4OyB6LWluZGV4OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IGxpbmUtaGVpZ2h0OiAxLjE1ZW07IGZvbnQtc2l6ZTogMjBweDtcIj48ZGl2IGNsYXNzPVwiY2xvc2VcIiBpZD1cIm1lbnUtZGlzbWlzc1wiPjxsYWJlbCBmb3I9XCJzcHIwXCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggY2xhc3M9XCJuYXRpdmUtYXJyb3dcIiBkPVwiTTIwIDExSDcuODNsNS41OS01LjU5TDEyIDRsLTggOCA4IDggMS40MS0xLjQxTDcuODMgMTNIMjB2LTJ6XCI+PC9wYXRoPjwvc3ZnPjwvbGFiZWw+PC9kaXY+PGRpdiBpZD1cInRpXCI+PHNwYW4gY2xhc3M9XCJjdFwiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj5BZHMgYnkgPC9mb250PjwvZm9udD48c3ZnIGZpbGw9XCIjMDAwMDAwXCIgdmlld0JveD1cIjAgMCA2MCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTcuNSAxNi4yOWMtNC4wNyAwLTcuNDktMy4zMS03LjQ5LTcuMzhTMy40MyAxLjUzIDcuNSAxLjUzYzIuMjUgMCAzLjg1Ljg4IDUuMDYgMi4wM2wtMS40MiAxLjQyYy0uODctLjgxLTIuMDQtMS40NC0zLjY0LTEuNDQtMi45NyAwLTUuMjkgMi40LTUuMjkgNS4zN3MyLjMyIDUuMzcgNS4yOSA1LjM3YzEuOTMgMCAzLjAzLS43NyAzLjczLTEuNDguNTgtLjU4Ljk1LTEuNCAxLjEtMi41NEg3LjVWOC4yNGg2Ljc5Yy4wNy4zNi4xMS43OS4xMSAxLjI2IDAgMS41MS0uNDEgMy4zOS0xLjc1IDQuNzItMS4zIDEuMzUtMi45NSAyLjA3LTUuMTUgMi4wN3ptMTcuNzUtNC43NmMwIDIuNzQtMi4xMyA0Ljc1LTQuNzUgNC43NXMtNC43NS0yLjAyLTQuNzUtNC43NWMwLTIuNzUgMi4xMy00Ljc1IDQuNzUtNC43NXM0Ljc1IDIgNC43NSA0Ljc1em0tMi4wOCAwYzAtMS43MS0xLjI0LTIuODgtMi42Ny0yLjg4cy0yLjY3IDEuMTctMi42NyAyLjg4YzAgMS42OSAxLjI0IDIuODggMi42NyAyLjg4czIuNjctMS4xOCAyLjY3LTIuODh6bTEzLjA4IDBjMCAyLjc0LTIuMTMgNC43NS00Ljc1IDQuNzVzLTQuNzUtMi4wMi00Ljc1LTQuNzVjMC0yLjc1IDIuMTMtNC43NSA0Ljc1LTQuNzVzNC43NSAyIDQuNzUgNC43NXptLTIuMDggMGMwLTEuNzEtMS4yNC0yLjg4LTIuNjctMi44OHMtMi42NyAxLjE3LTIuNjcgMi44OGMwIDEuNjkgMS4yNCAyLjg4IDIuNjcgMi44OHMyLjY3LTEuMTggMi42Ny0yLjg4em0xMi41OC00LjQ2djguNTNjMCAzLjUxLTIuMDcgNC45NS00LjUyIDQuOTUtMi4zIDAtMy42OS0xLjU1LTQuMjEtMi44MWwxLjgyLS43NmMuMzIuNzcgMS4xMiAxLjY5IDIuMzkgMS42OSAxLjU3IDAgMi41NC0uOTcgMi41NC0yLjc5di0uNjhoLS4wN2MtLjQ3LjU4LTEuMzcgMS4wOC0yLjUgMS4wOC0yLjM4IDAtNC41Ni0yLjA3LTQuNTYtNC43NCAwLTIuNjggMi4xOC00Ljc3IDQuNTYtNC43NyAxLjEzIDAgMi4wMy41IDIuNSAxLjA2aC4wN3YtLjc2aDEuOTh6bS0xLjg0IDQuNDhjMC0xLjY3LTEuMTItMi45LTIuNTQtMi45LTEuNDQgMC0yLjY1IDEuMjItMi42NSAyLjkgMCAxLjY2IDEuMjEgMi44NiAyLjY1IDIuODYgMS40My4wMSAyLjU0LTEuMiAyLjU0LTIuODZ6bTUuODktOS41MlYxNmgtMi4wOVYyLjAzaDIuMDl6bTguNDkgMTEuMDdsMS42MiAxLjA4Yy0uNTIuNzctMS43OCAyLjExLTMuOTYgMi4xMS0yLjcgMC00LjcyLTIuMDktNC43Mi00Ljc1IDAtMi44MyAyLjAzLTQuNzUgNC40OC00Ljc1IDIuNDcgMCAzLjY3IDEuOTYgNC4wNyAzLjAybC4yMi41NC02LjM2IDIuNjNjLjQ5Ljk1IDEuMjQgMS40NCAyLjMgMS40NCAxLjA3IDAgMS44MS0uNTMgMi4zNS0xLjMyem0tNC45OS0xLjcxbDQuMjUtMS43NmMtLjIzLS41OS0uOTQtMS4wMS0xLjc2LTEuMDEtMS4wNiAwLTIuNTQuOTMtMi40OSAyLjc3elwiPjwvcGF0aD48cGF0aCBkPVwiTTAgMGg2MnYyNEgwelwiIGZpbGw9XCJub25lXCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPVwiYnRuc1wiPjxsYWJlbCBkYXRhLXZhcnMtbGFiZWw9XCJ1c2VyX2ZlZWRiYWNrX21lbnVfb3B0aW9uXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiMVwiIGZvcj1cInNwcjJcIj48YSBjbGFzcz1cImJ0blwiIGlkPVwicmJ0blwiPjxzcGFuPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj5TZW5kIGZlZWRiYWNrPC9mb250PjwvZm9udD48L3NwYW4+PC9hPjwvbGFiZWw+PGxhYmVsPjxhIGNsYXNzPVwiYnRuXCIgZGF0YS12YXJzLWxhYmVsPVwiY2xvc2VidXR0b25fd2h5dGhpc2FkX2NsaWNrXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiMVwiIGhyZWY9XCJodHRwczovL2Fkc3NldHRpbmdzLmdvb2dsZS5jb20vd2h5dGhpc2FkP3JlYXNvbnM9QUIzYWZHRUFBQVotVzF0YlcyNTFiR3dzV3prc05EZGRMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xHNTFiR3dzYm5Wc2JDeHVkV3hzTEc1MWJHd3NiblZzYkN4dWRXeHNMRzUxYkd3c2JuVnNiQ3h1ZFd4c0xGdGJJbE54ZFdGeVpYTndZV05sTENCSmJtTXVJaXdpVlZNaUxERXNiblZzYkN3eFhWMWRMRnR1ZFd4c0xDSm9kSFJ3Y3pvdkwyZHZiMmRzWldGa2N5NW5MbVJ2ZFdKc1pXTnNhV05yTG01bGRDOXdZV2RsWVdRdlkyOXVkbVZ5YzJsdmJpOF9ZV2s5UXpONGFqbHJUamxMV0RoNmQwazBZbHB2ZDJKa2MyRmFielJ4VnkwNFJqZFFNRjlmTjJwUmRXazNZbE5TYTBGM1VVRlRRM1J6WVhOb1dVMXJSMjlCU0ZNdFRYWnBRVGhuUWtGbFFVTkJTMmRFUVdOblJFTnhiMFUyUVVaUU1FbFZUWFZwUW5SR1QyWnJNVjlmWkRCbmJqSnRUazVvTTFvNVUxWkVkMDVGVG5odFpEUkVZbTAxZGpsV1lYUkVUMVpGZUVSR09UWktPUzFsWlUxMVRIbE1jamQxUlhaRmNGSkRYMUl4Y21Wc1ZVdFhSMk5pZGpoQllsQm9TVVF6Y25wb2RETXdWMkZ4U1U1MlRreFZRMDFGUzJKWVpEWTFWMmRxUjA5MVIyeFlhSEl0WHpsdFUwRnFWSEJ2WmpoTU0yWklRWFl6YW5SV2IwUlZObUZJUzJvM1drNURSM1JyWVhGZk1URkVUVnA0VXpCdVowRmFabTFhVm5WVFlYTlZMWFJQUTFsR1gwdFlUMVI1WVdzd2NtTkVhekZVVkZsck4yMVFZWGxyYlZSS1MyZHhhRzk1ZVcwM2JWYzVabmRKTWpndFVUZFJkM010TlZZd1dYWkRObWM1YkVWWE1IbHpiSGxZUVVVd2RWcEJTMk5FYzNjNVNWOXpNWHBUUVhsa1lqTlZVMVptVUdaNU1sQjNXVk5MV0c4emREZDNRVlJ2TmxCSFQybG5UR2RDUVVkQlFqaEVUM2xwUzI5Q05EZFBSelpuU0RGamEySnhRV1ZVTWtKMWIwSTNiMGR4UVdaM01sSjFiMEpmVEZwSE5tZEljSEkwWW5GQlpuTXhVblZ2UWw5UVVrYzJaMGczVGxWaWNVRmxWekpDZFc5Q09FeGhSemxuU0VGa1NVbERVV2xCTkZsQ1FVVkJSVmxJWWtWS1NVWm1UMFJ0VUROa1luVkJRMmRQUzBOeVJVSmhTRkl3WTBoTk5reDVPV2hhUXpWcllqTldhV0pIVm1waVIyeHFZWGsxZFZwWVVYWmFSMUowVEROU2VWbFhUbkpaTW5oeVREQTBNMDFVWnpKT2VtdDFUWHBGTVU5VlpGQlVNR1JOVWxNNVEwMXFUVEZQVkZVMFRYcG5kVTFxV1RWT1ZGVXpUVVJOZVU4eVVtcFlNMUo1WVRFNWFHRlhVVGxPUkZrd1RWUlJNVTE2VFRCUE1sSnFXRE5TZVdFeE9XcGhWMUU1VFZSSk5VNTZZekJOVkUweFR6SlNhbGd5ZUdoa1JEQTNXa2RPWm1OdFVuQmFSREEzWkVkR2JsZ3lXblpqYkRscVlVZHNjMXBHT1d0aFdFcHNXVE5TYkZwR09UQmpiVlpvWkVjeGJHSnVVVGxQTTFKdFpGZEZPVzFCYzBKNVFYTkNORUZ6UWpKQ1RVUnBRbEZDWEhVd01ESTJjMmxuYUQweFlXUjZhR1ZrUm5ocVNWeDFNREF5Tm1OcFpEMURRVkZUVUhkRFRrbHlURTFXZG5JeVEwVmpRWHBrYVcxbGFqVlNZbU5LVURWSE1HNWtlalpyY1ZwUlF6RTJTR1ZpYURNM1VFVmhTVlIzYVZkcGFpMDRkMmhVVVZONVkyVlFjVWhVV0cwMGQyaGhVazAzY2toMWNGRWlMRnR1ZFd4c0xHNTFiR3dzYm5Wc2JDd2lhSFIwY0hNNkx5OWthWE53YkdGNVlXUnpMV1p2Y20xaGRITXVaMjl2WjJ4bGRYTmxjbU52Ym5SbGJuUXVZMjl0TDJGa2N5OXdjbVYyYVdWM0wyTnZiblJsYm5RdWFuTV9ZMnhwWlc1MFBYZDBZVngxTURBeU5tOWlablZ6WTJGMFpXUkRkWE4wYjIxbGNrbGtQVGMxTWpnNU1qZ3dORGhjZFRBd01qWmpjbVZoZEdsMlpVbGtQVFF5TXpnMk5EZzBOVFExTjF4MU1EQXlOblpsY25OcGIyNUpaRDB4WEhVd01ESTJZV1JIY205MWNFTnlaV0YwYVhabFNXUTlNemd4TnpBMk9ESTBNVFF6WEhVd01ESTJhSFJ0YkZCaGNtVnVkRWxrUFhCeVpYWXRNRngxTURBeU5taGxhV2RvZEQwd1hIVXdNREkyZDJsa2RHZzlNRngxTURBeU5uTnBaejFCUTJsV1FsOTNXVnBSYzJkMVJtSTFYekJ3TFdka1pUQkRTMFZYYWxkcGNURkJJbDBzYm5Wc2JDeHVkV3hzTERFc0lrbHBRakpXY214MllqRlJTWG81VUY4dE5EQk1SVWxMUm5ZM1VVaEhURU5LTmtORmFVUXpUbmhrVjBaNVdsaE9kMWxYVG14TWJVNTJZbFJKU0VOQlZWUkhTbXN5UmtWSldGa3lSWFJqU0ZacFRGUlplazVxVlRCT1JHY3hUMFJqZDAxRVNYcE9la1pKUkRGblFtTkJSU0lzSWpFNU9Ea3hNekk1TXpBaVhWMWRMRnN4TERFc01WMWRhUGtIaHpTekpQVDlTOWphUTdMeGhES1FSckRJdllSTTEwSXRnLXBvcUVOdFhISXZDTWRtazFtbjZVWUQtSzFNVFhCclB3TU1sQnlNODBsdFZFTHFHblJYT0RiXzU0Mm0zbFoxd1lKWDM0N0NxVnFGX1JZQk8wUmkzSFFlcEhCT0tYcWg4VkNPSzZSeG1nY3JuN3d2V0xqQjZDSGx1T2lTN1RoOHpOcEQ0VmthQWFrcW9XVzBHdWJrM0xtVTBORDZpNkdGUnpXeXMxMDI5UnJPamwwdUZHazVFQW1VYm5kTWdNM0Z0eU92U2RtMlR5UG5ZbWxULWhHbmFyM0VaZEFINWxhWnNIMDBtc212M2Y1SkdvajBlQlBjcE5Sd0xwWGVPNUlhdzdiOXU2UVRCUVdRZG5GMnBCdHhUdXFYZFlRWFdUWnhrSEJCVmtwMThKZkM0T2FxREEsUFNQZi1RVjVZbkFTdG5nbFVNX1luUSZhbXA7c291cmNlPWRpc3BsYXlcIiBpZD1cInNidG5cIiB0YXJnZXQ9XCJfYmxhbmtcIj48c3Bhbj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+V2h5IHRoaXMgYWQ/Jm5ic3A7PC9mb250PjwvZm9udD48c3ZnIGZpbGw9XCIjMDAwMDAwXCIgaWQ9XCJzaVwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB4bWxucz1cIi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxjaXJjbGUgY3g9XCI2XCIgY3k9XCI2XCIgcj1cIjAuNjdcIj48L2NpcmNsZT48cGF0aCBkPVwiTTQuMiwxMS4zUTMuMywxMS44LDMuMywxMC43NUwzLjMsNC4xUTMuMywzLjEsNC4zLDMuNUwxMC40LDcuMFExMi4wLDcuNSwxMC40LDguMEw2LjY1LDEwLjBMNi42NSw3Ljc1YTAuNjUsMC42NSwwLDEsMCwtMS4zLDBMNS4zNSwxMC43NWEwLjksMC45LDAsMCwwLDEuMywwLjhMMTIuNyw4LjJRMTMuNyw3LjUsMTIuNyw2LjdMMy4zLDEuNlEyLjIsMS4zLDEuOCwyLjVMMS44LDEyLjVRMi4yLDEzLjksMy4zLDEzLjNMNC44LDEyLjVBMC4zLDAuMywwLDEsMCw0LjIsMTEuM1pcIj48L3BhdGg+PC9zdmc+PC9zcGFuPjwvYT48L2xhYmVsPjwvZGl2PjwvZGl2PjwvYW1wLWZpdC10ZXh0PjwvZGl2PjxkaXYgY2xhc3M9XCJwbiBhYmdmXCIgaWQ9XCJzcHYyXCI+PGxhYmVsIGNsYXNzPVwic2Igc29cIiBkYXRhLXZhcnMtbGFiZWw9XCJtdXRlX3N1cnZleV9vcHRpb25cIiBkYXRhLXZhcnMtbGFiZWwtaW5zdGFuY2U9XCI4XCIgZm9yPVwic3ByM1wiPjxkaXY+PHNwYW4+QWQgd2FzIGluYXBwcm9wcmlhdGU8L3NwYW4+PC9kaXY+PC9sYWJlbD48bGFiZWwgY2xhc3M9XCJzYiBzb1wiIGRhdGEtdmFycy1sYWJlbD1cIm11dGVfc3VydmV5X29wdGlvblwiIGRhdGEtdmFycy1sYWJlbC1pbnN0YW5jZT1cIjJcIiBmb3I9XCJzcHIzXCI+PGRpdj48c3Bhbj5TZWVuIHRoaXMgYWQgbXVsdGlwbGUgdGltZXM8L3NwYW4+PC9kaXY+PC9sYWJlbD48bGFiZWwgY2xhc3M9XCJzYiBzb1wiIGRhdGEtdmFycy1sYWJlbD1cIm11dGVfc3VydmV5X29wdGlvblwiIGRhdGEtdmFycy1sYWJlbC1pbnN0YW5jZT1cIjNcIiBmb3I9XCJzcHIzXCI+PGRpdj48c3Bhbj5BZCBjb3ZlcmVkIGNvbnRlbnQ8L3NwYW4+PC9kaXY+PC9sYWJlbD48bGFiZWwgY2xhc3M9XCJzYiBzb1wiIGRhdGEtdmFycy1sYWJlbD1cIm11dGVfc3VydmV5X29wdGlvblwiIGRhdGEtdmFycy1sYWJlbC1pbnN0YW5jZT1cIjdcIiBmb3I9XCJzcHIzXCI+PGRpdj48c3Bhbj5Ob3QgaW50ZXJlc3RlZCBpbiB0aGlzIGFkPC9zcGFuPjwvZGl2PjwvbGFiZWw+PC9kaXY+PGRpdiBjbGFzcz1cInBuIGFiZ2ZcIiBpZD1cInNwdjNcIj48YW1wLWZpdC10ZXh0IGNsYXNzPVwiZmwgaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50IGktYW1waHRtbC1sYXlvdXRcIiBoZWlnaHQ9XCI5MFwiIGktYW1waHRtbC1sYXlvdXQ9XCJyZXNwb25zaXZlXCIgbGF5b3V0PVwicmVzcG9uc2l2ZVwiIG1heC1mb250LXNpemU9XCIxN1wiIG1pbi1mb250LXNpemU9XCI4XCIgd2lkdGg9XCI3MjhcIj48aS1hbXBodG1sLXNpemVyIHN0eWxlPVwiZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDoxMi4zNjI2JTtcIiBzbG90PVwiaS1hbXBodG1sLXN2Y1wiPjwvaS1hbXBodG1sLXNpemVyPjxkaXYgY2xhc3M9XCJpLWFtcGh0bWwtZmlsbC1jb250ZW50IGktYW1waHRtbC1maXQtdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ6LWluZGV4OiAyO1wiPjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDE3cHg7XCI+PHNwYW4gaWQ9XCJwY3RcIj5UaGFua3MuIEZlZWRiYWNrIGltcHJvdmVzIEdvb2dsZSBhZHM8L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgei1pbmRleDogMTsgdmlzaWJpbGl0eTogaGlkZGVuOyBsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDE3cHg7XCI+PHNwYW4gaWQ9XCJwY3RcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+VGhhbmtzLiBGZWVkYmFjayBpbXByb3ZlcyBHb29nbGUgYWRzPC9mb250PjwvZm9udD48L3NwYW4+PC9kaXY+PC9hbXAtZml0LXRleHQ+PC9kaXY+PGRpdiBjbGFzcz1cInBuIGFiZ2ZcIiBpZD1cInNwdjRcIj48YW1wLWZpdC10ZXh0IGNsYXNzPVwiZmwgaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50IGktYW1waHRtbC1sYXlvdXRcIiBoZWlnaHQ9XCI5MFwiIGktYW1waHRtbC1sYXlvdXQ9XCJyZXNwb25zaXZlXCIgbGF5b3V0PVwicmVzcG9uc2l2ZVwiIG1heC1mb250LXNpemU9XCIyMFwiIG1pbi1mb250LXNpemU9XCI4XCIgd2lkdGg9XCI3MjhcIj48aS1hbXBodG1sLXNpemVyIHN0eWxlPVwiZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDoxMi4zNjI2JTtcIiBzbG90PVwiaS1hbXBodG1sLXN2Y1wiPjwvaS1hbXBodG1sLXNpemVyPjxkaXYgY2xhc3M9XCJpLWFtcGh0bWwtZmlsbC1jb250ZW50IGktYW1waHRtbC1maXQtdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ6LWluZGV4OiAyO1wiPjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDIwcHg7XCI+PHNwYW4gY2xhc3M9XCJjdCBmY3RcIj5BZCBjbG9zZWQgYnkgPHN2ZyBmaWxsPVwiIzAwMDAwMFwiIHZpZXdCb3g9XCIwIDAgNjAgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03LjUgMTYuMjljLTQuMDcgMC03LjQ5LTMuMzEtNy40OS03LjM4UzMuNDMgMS41MyA3LjUgMS41M2MyLjI1IDAgMy44NS44OCA1LjA2IDIuMDNsLTEuNDIgMS40MmMtLjg3LS44MS0yLjA0LTEuNDQtMy42NC0xLjQ0LTIuOTcgMC01LjI5IDIuNC01LjI5IDUuMzdzMi4zMiA1LjM3IDUuMjkgNS4zN2MxLjkzIDAgMy4wMy0uNzcgMy43My0xLjQ4LjU4LS41OC45NS0xLjQgMS4xLTIuNTRINy41VjguMjRoNi43OWMuMDcuMzYuMTEuNzkuMTEgMS4yNiAwIDEuNTEtLjQxIDMuMzktMS43NSA0LjcyLTEuMyAxLjM1LTIuOTUgMi4wNy01LjE1IDIuMDd6bTE3Ljc1LTQuNzZjMCAyLjc0LTIuMTMgNC43NS00Ljc1IDQuNzVzLTQuNzUtMi4wMi00Ljc1LTQuNzVjMC0yLjc1IDIuMTMtNC43NSA0Ljc1LTQuNzVzNC43NSAyIDQuNzUgNC43NXptLTIuMDggMGMwLTEuNzEtMS4yNC0yLjg4LTIuNjctMi44OHMtMi42NyAxLjE3LTIuNjcgMi44OGMwIDEuNjkgMS4yNCAyLjg4IDIuNjcgMi44OHMyLjY3LTEuMTggMi42Ny0yLjg4em0xMy4wOCAwYzAgMi43NC0yLjEzIDQuNzUtNC43NSA0Ljc1cy00Ljc1LTIuMDItNC43NS00Ljc1YzAtMi43NSAyLjEzLTQuNzUgNC43NS00Ljc1czQuNzUgMiA0Ljc1IDQuNzV6bS0yLjA4IDBjMC0xLjcxLTEuMjQtMi44OC0yLjY3LTIuODhzLTIuNjcgMS4xNy0yLjY3IDIuODhjMCAxLjY5IDEuMjQgMi44OCAyLjY3IDIuODhzMi42Ny0xLjE4IDIuNjctMi44OHptMTIuNTgtNC40NnY4LjUzYzAgMy41MS0yLjA3IDQuOTUtNC41MiA0Ljk1LTIuMyAwLTMuNjktMS41NS00LjIxLTIuODFsMS44Mi0uNzZjLjMyLjc3IDEuMTIgMS42OSAyLjM5IDEuNjkgMS41NyAwIDIuNTQtLjk3IDIuNTQtMi43OXYtLjY4aC0uMDdjLS40Ny41OC0xLjM3IDEuMDgtMi41IDEuMDgtMi4zOCAwLTQuNTYtMi4wNy00LjU2LTQuNzQgMC0yLjY4IDIuMTgtNC43NyA0LjU2LTQuNzcgMS4xMyAwIDIuMDMuNSAyLjUgMS4wNmguMDd2LS43NmgxLjk4em0tMS44NCA0LjQ4YzAtMS42Ny0xLjEyLTIuOS0yLjU0LTIuOS0xLjQ0IDAtMi42NSAxLjIyLTIuNjUgMi45IDAgMS42NiAxLjIxIDIuODYgMi42NSAyLjg2IDEuNDMuMDEgMi41NC0xLjIgMi41NC0yLjg2em01Ljg5LTkuNTJWMTZoLTIuMDlWMi4wM2gyLjA5em04LjQ5IDExLjA3bDEuNjIgMS4wOGMtLjUyLjc3LTEuNzggMi4xMS0zLjk2IDIuMTEtMi43IDAtNC43Mi0yLjA5LTQuNzItNC43NSAwLTIuODMgMi4wMy00Ljc1IDQuNDgtNC43NSAyLjQ3IDAgMy42NyAxLjk2IDQuMDcgMy4wMmwuMjIuNTQtNi4zNiAyLjYzYy40OS45NSAxLjI0IDEuNDQgMi4zIDEuNDQgMS4wNyAwIDEuODEtLjUzIDIuMzUtMS4zMnptLTQuOTktMS43MWw0LjI1LTEuNzZjLS4yMy0uNTktLjk0LTEuMDEtMS43Ni0xLjAxLTEuMDYgMC0yLjU0LjkzLTIuNDkgMi43N3pcIj48L3BhdGg+PHBhdGggZD1cIk0wIDBoNjJ2MjRIMHpcIiBmaWxsPVwibm9uZVwiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgei1pbmRleDogMTsgdmlzaWJpbGl0eTogaGlkZGVuOyBsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDIwcHg7XCI+PHNwYW4gY2xhc3M9XCJjdCBmY3RcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+QWQgY2xvc2VkIGJ5IDwvZm9udD48L2ZvbnQ+PHN2ZyBmaWxsPVwiIzAwMDAwMFwiIHZpZXdCb3g9XCIwIDAgNjAgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk03LjUgMTYuMjljLTQuMDcgMC03LjQ5LTMuMzEtNy40OS03LjM4UzMuNDMgMS41MyA3LjUgMS41M2MyLjI1IDAgMy44NS44OCA1LjA2IDIuMDNsLTEuNDIgMS40MmMtLjg3LS44MS0yLjA0LTEuNDQtMy42NC0xLjQ0LTIuOTcgMC01LjI5IDIuNC01LjI5IDUuMzdzMi4zMiA1LjM3IDUuMjkgNS4zN2MxLjkzIDAgMy4wMy0uNzcgMy43My0xLjQ4LjU4LS41OC45NS0xLjQgMS4xLTIuNTRINy41VjguMjRoNi43OWMuMDcuMzYuMTEuNzkuMTEgMS4yNiAwIDEuNTEtLjQxIDMuMzktMS43NSA0LjcyLTEuMyAxLjM1LTIuOTUgMi4wNy01LjE1IDIuMDd6bTE3Ljc1LTQuNzZjMCAyLjc0LTIuMTMgNC43NS00Ljc1IDQuNzVzLTQuNzUtMi4wMi00Ljc1LTQuNzVjMC0yLjc1IDIuMTMtNC43NSA0Ljc1LTQuNzVzNC43NSAyIDQuNzUgNC43NXptLTIuMDggMGMwLTEuNzEtMS4yNC0yLjg4LTIuNjctMi44OHMtMi42NyAxLjE3LTIuNjcgMi44OGMwIDEuNjkgMS4yNCAyLjg4IDIuNjcgMi44OHMyLjY3LTEuMTggMi42Ny0yLjg4em0xMy4wOCAwYzAgMi43NC0yLjEzIDQuNzUtNC43NSA0Ljc1cy00Ljc1LTIuMDItNC43NS00Ljc1YzAtMi43NSAyLjEzLTQuNzUgNC43NS00Ljc1czQuNzUgMiA0Ljc1IDQuNzV6bS0yLjA4IDBjMC0xLjcxLTEuMjQtMi44OC0yLjY3LTIuODhzLTIuNjcgMS4xNy0yLjY3IDIuODhjMCAxLjY5IDEuMjQgMi44OCAyLjY3IDIuODhzMi42Ny0xLjE4IDIuNjctMi44OHptMTIuNTgtNC40NnY4LjUzYzAgMy41MS0yLjA3IDQuOTUtNC41MiA0Ljk1LTIuMyAwLTMuNjktMS41NS00LjIxLTIuODFsMS44Mi0uNzZjLjMyLjc3IDEuMTIgMS42OSAyLjM5IDEuNjkgMS41NyAwIDIuNTQtLjk3IDIuNTQtMi43OXYtLjY4aC0uMDdjLS40Ny41OC0xLjM3IDEuMDgtMi41IDEuMDgtMi4zOCAwLTQuNTYtMi4wNy00LjU2LTQuNzQgMC0yLjY4IDIuMTgtNC43NyA0LjU2LTQuNzcgMS4xMyAwIDIuMDMuNSAyLjUgMS4wNmguMDd2LS43NmgxLjk4em0tMS44NCA0LjQ4YzAtMS42Ny0xLjEyLTIuOS0yLjU0LTIuOS0xLjQ0IDAtMi42NSAxLjIyLTIuNjUgMi45IDAgMS42NiAxLjIxIDIuODYgMi42NSAyLjg2IDEuNDMuMDEgMi41NC0xLjIgMi41NC0yLjg2em01Ljg5LTkuNTJWMTZoLTIuMDlWMi4wM2gyLjA5em04LjQ5IDExLjA3bDEuNjIgMS4wOGMtLjUyLjc3LTEuNzggMi4xMS0zLjk2IDIuMTEtMi43IDAtNC43Mi0yLjA5LTQuNzItNC43NSAwLTIuODMgMi4wMy00Ljc1IDQuNDgtNC43NSAyLjQ3IDAgMy42NyAxLjk2IDQuMDcgMy4wMmwuMjIuNTQtNi4zNiAyLjYzYy40OS45NSAxLjI0IDEuNDQgMi4zIDEuNDQgMS4wNyAwIDEuODEtLjUzIDIuMzUtMS4zMnptLTQuOTktMS43MWw0LjI1LTEuNzZjLS4yMy0uNTktLjk0LTEuMDEtMS43Ni0xLjAxLTEuMDYgMC0yLjU0LjkzLTIuNDkgMi43N3pcIj48L3BhdGg+PHBhdGggZD1cIk0wIDBoNjJ2MjRIMHpcIiBmaWxsPVwibm9uZVwiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9kaXY+PC9hbXAtZml0LXRleHQ+PC9kaXY+PC9mb3JtPjwvZGl2PjxhbXAtcGl4ZWwgY2xhc3M9XCJpLWFtcGh0bWwtbGF5b3V0LWZpeGVkIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50XCIgaS1hbXBodG1sLWxheW91dD1cImZpeGVkXCIgcmVmZXJyZXJwb2xpY3k9XCJuby1yZWZlcnJlclwiIHNyYz1cIi8vd3d3Lmdvb2dsZS5jb20vcGFnZWFkL2RydC91aVwiIHN0eWxlPVwid2lkdGg6MXB4O2hlaWdodDoxcHg7XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9hbXAtcGl4ZWw+PGFtcC1hbmFseXRpY3MgY2xhc3M9XCJpLWFtcGh0bWwtbGF5b3V0LWZpeGVkIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50XCIgaS1hbXBodG1sLWxheW91dD1cImZpeGVkXCIgc3R5bGU9XCJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtcIiB0cmlnZ2VyPVwiaW1tZWRpYXRlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgaGlkZGVuPVwiXCI+PHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb24vanNvblwiPntcInRyYW5zcG9ydFwiOiB7XCJiZWFjb25cIjogZmFsc2UsIFwieGhycG9zdFwiOiBmYWxzZX0sXCJyZXF1ZXN0c1wiOiB7XCJ2aXNpYmlsaXR5MVwiOiBcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGNzL2FjdGl2ZXZpZXc/eGFpPUFLQU9qc3ZUYmhBQWpHOEhELUs0YmZoQVA1ajZXQTAxTTlZdUQtTVUyazhZRjRyRkN2d3d0ZG9hU0FxOTVWYXBIZ3d5Uk9taTVQNUJFaWVmQXVJUWRaYmZTb05EaG1rcU02SVRPZE9EM1FDeXJpdFc0aGtUUGZaSml3WW9EaW5wWXd0VGhOMmZjWE1LUjlNVE4xOU5mSmZEXzB3dCZzYWk9QU1mbC1ZVHE5RVBuS01ZWDZ5bkZTd3JqNnhhR2YtcEJoTFZ3ZGV2c2ttMWlaUzc1cjd5YWRpSXdiczlWUkItOUpac2RSdE5feTdwR3BTXzVHaXVsdHY3cERQQXRIYTFBLVI3RjYzZ2pURERCVHYyWWRtc00xZzVCMXNtdm8tQkVjNlRaJnNpZz1DZzBBcktKU3pCNzBDMFo4dFRIM0VBRSZjaWQ9Q0FBU1BlUm95WGFmQmxENXFZaWk0c05wLVZYUVd3NXJhVW9WUXo0U3lyVkdSM20yeDBKMk9SWUtETnJKYmZ4WlpkdmFxc1dVWFBONjUzMFJzNS14VjJvJmlkPWFtcGltJm89JHtlbGVtZW50WH0sJHtlbGVtZW50WX0mZD0ke2VsZW1lbnRXaWR0aH0sJHtlbGVtZW50SGVpZ2h0fSZzcz0ke3NjcmVlbldpZHRofSwke3NjcmVlbkhlaWdodH0mYnM9JHt2aWV3cG9ydFdpZHRofSwke3ZpZXdwb3J0SGVpZ2h0fSZtY3Z0PSR7bWF4Q29udGludW91c1Zpc2libGVUaW1lfSZtdG9zPTAsMCwke21heENvbnRpbnVvdXNWaXNpYmxlVGltZX0sJHttYXhDb250aW51b3VzVmlzaWJsZVRpbWV9LCR7bWF4Q29udGludW91c1Zpc2libGVUaW1lfSZ0b3M9MCwwLCR7dG90YWxWaXNpYmxlVGltZX0sMCwwJnRmcz0ke2ZpcnN0U2VlblRpbWV9JnRscz0ke2xhc3RTZWVuVGltZX0mZz0ke21pblZpc2libGVQZXJjZW50YWdlfSZoPSR7bWF4VmlzaWJsZVBlcmNlbnRhZ2V9JnR0PSR7dG90YWxUaW1lfSZyPXYmYXZtcz1hbXBhJmFkaz00NDgwNTY2MzdcIixcInZpc2liaWxpdHkyXCI6IFwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvcGFnZWFkL2Fkdmlldz9haT1DQTBfSmtOOUtYOHp3STRiWm93YmRzYVpvNHFXLThGN1AwX183alF1aTdiU1JrQXdRQVNDdHNhc2hZTWtHb0FIUy1NdmlBOGdCQWVBQ0FLZ0RBYW9FNVFGUDBJVU11aUJ0Rk9mazFfX2QwZ24ybU5OaDNaOVNWRHdORU54bWQ0RGJtNXY5VmF0RE9WRXhERjk2SjktZWVNdUx5THI3dUV2RXBSQ19SMXJlbFVLV0djYnY4QWJQaElEM3J6aHQzMFdhcUlOdk5MVUNNRUtiWGQ2NVdnakdPdUdsWGhyLV85bVNBalRwb2Y4TDNmSEF2M2p0Vm9EVTZhSEtqN1pOQ0d0a2FxXzExRE1aeFMwbmdBWmZtWlZ1U2FzVS10T0NZRl9LWE9UeWFrMHJjRGsxVFRZazdtUGF5a21USktncWhveXltN21XOWZ3STI4LVE3UXdzLTVWMFl2QzZnOWxFVzB5c2x5WEFFMHVaQUtjRHN3OEtfTVBocmFjREI4R01DQlJMX29Ea25kMGR3QVRvNlBHT2lnTGdCQUdBQjhET3lpS29CNDdPRzZnSDFja2JxQWVUMkJ1b0I3b0dxQWZ3MlJ1b0JfTFpHNmdIcHI0YnFBZnMxUnZZQndIeUJ3UVFoZlFLMGdnSkNJRGhnRUFRQVJnZGdBb0R5QXNCMkJNRGlCUUImc2lnaD1tb2FJUm83NWN1RSZ2dD0xXCJ9LFwidHJpZ2dlcnNcIjoge1wiY29udGludW91c1Zpc2libGVcIjoge1wib25cIjogXCJ2aXNpYmxlXCIsXCJyZXF1ZXN0XCI6IFtcInZpc2liaWxpdHkxXCIsIFwidmlzaWJpbGl0eTJcIl0sXCJwYXJlbnRQb3N0TWVzc2FnZVwiOiBcImltcHJlc3Npb24tdmlld2FibGVcIixcInZpc2liaWxpdHlTcGVjXCI6IHtcInNlbGVjdG9yXCI6IFwiOnJvb3RcIixcInZpc2libGVQZXJjZW50YWdlTWluXCI6IDUwLFwiY29udGludW91c1RpbWVNaW5cIjogMTAwMH19LFwidmlzaWJpbGl0eUNoYW5nZWRcIjoge1wib25cIjogXCJ2aXNpYmxlXCIsXCJwYXJlbnRQb3N0TWVzc2FnZVwiOiBcInZpc2liaWxpdHktY2hhbmdlZC0ke2ludGVyc2VjdGlvblJhdGlvfVwiLFwidmlzaWJpbGl0eVNwZWNcIjoge1wicmVwZWF0XCI6IHRydWUsXCJzZWxlY3RvclwiOiBcIjpyb290XCIsXCJ2aXNpYmxlUGVyY2VudGFnZVRocmVzaG9sZHNcIjogW1swLDBdLFswLDVdLFs1LDEwXSxbMTAsMTVdLFsxNSwyMF0sWzIwLDI1XSxbMjUsMzBdLFszMCwzNV0sWzM1LDQwXSxbNDAsNDVdLFs0NSw1MF0sWzUwLDU1XSxbNTUsNjBdLFs2MCw2NV0sWzY1LDcwXSxbNzAsNzVdLFs3NSw4MF0sWzgwLDg1XSxbODUsOTBdLFs5MCw5NV0sWzk1LDEwMF0sWzEwMCwxMDBdXX19LFwiaW5pTG9hZFwiOiB7XCJvblwiOiBcImluaS1sb2FkXCIsXCJwYXJlbnRQb3N0TWVzc2FnZVwiOiBcIntcXFwiY1xcXCI6XFxcInNmY2hhbm5lbDJcXFwiLFxcXCJwXFxcIjpcXFwie1xcXFxcXFwidWlkXFxcXFxcXCI6XFxcXFxcXCIyXFxcXFxcXCIsXFxcXFxcXCJ3aWR0aFxcXFxcXFwiOiR7c2Nyb2xsV2lkdGh9LFxcXFxcXFwiaGVpZ2h0XFxcXFxcXCI6JHtzY3JvbGxIZWlnaHR9fVxcXCIsXFxcInNcXFwiOlxcXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcXFwifVxcblwifX19PC9zY3JpcHQ+PC9hbXAtYW5hbHl0aWNzPjxhbXAtYW5hbHl0aWNzIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIHN0eWxlPVwid2lkdGg6MXB4O2hlaWdodDoxcHg7XCIgdHJpZ2dlcj1cImltbWVkaWF0ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGhpZGRlbj1cIlwiPjxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cIj57XCJ0cmFuc3BvcnRcIjoge1wiYmVhY29uXCI6IHRydWUsIFwieGhycG9zdFwiOiBmYWxzZX0sXCJyZXF1ZXN0c1wiOiB7XCJhbXBlb3NcIjogXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3Bjcy9hY3RpdmV2aWV3P3hhaT1BS0FPanN2VGJoQUFqRzhIRC1LNGJmaEFQNWo2V0EwMU05WXVELU1VMms4WUY0ckZDdnd3dGRvYVNBcTk1VmFwSGd3eVJPbWk1UDVCRWllZkF1SVFkWmJmU29ORGhta3FNNklUT2RPRDNRQ3lyaXRXNGhrVFBmWkppd1lvRGlucFl3dFRoTjJmY1hNS1I5TVROMTlOZkpmRF8wd3Qmc2FpPUFNZmwtWVRxOUVQbktNWVg2eW5GU3dyajZ4YUdmLXBCaExWd2RldnNrbTFpWlM3NXI3eWFkaUl3YnM5VlJCLTlKWnNkUnROX3k3cEdwU181R2l1bHR2N3BEUEF0SGExQS1SN0Y2M2dqVEREQlR2MllkbXNNMWc1QjFzbXZvLUJFYzZUWiZzaWc9Q2cwQXJLSlN6QjcwQzBaOHRUSDNFQUUmY2lkPUNBQVNQZVJveVhhZkJsRDVxWWlpNHNOcC1WWFFXdzVyYVVvVlF6NFN5clZHUjNtMngwSjJPUllLRE5ySmJmeFpaZHZhcXNXVVhQTjY1MzBSczUteFYybyZpZD1hbXBlb3Mmbz0ke2VsZW1lbnRYfSwke2VsZW1lbnRZfSZkPSR7ZWxlbWVudFdpZHRofSwke2VsZW1lbnRIZWlnaHR9JnNzPSR7c2NyZWVuV2lkdGh9LCR7c2NyZWVuSGVpZ2h0fSZicz0ke3ZpZXdwb3J0V2lkdGh9LCR7dmlld3BvcnRIZWlnaHR9Jm1jdnQ9JHttYXhDb250aW51b3VzVmlzaWJsZVRpbWV9Jm10b3M9MCwwLCR7bWF4Q29udGludW91c1Zpc2libGVUaW1lfSwke21heENvbnRpbnVvdXNWaXNpYmxlVGltZX0sJHttYXhDb250aW51b3VzVmlzaWJsZVRpbWV9JnRvcz0wLDAsJHt0b3RhbFZpc2libGVUaW1lfSwwLDAmdGZzPSR7Zmlyc3RTZWVuVGltZX0mdGxzPSR7bGFzdFNlZW5UaW1lfSZnPSR7bWluVmlzaWJsZVBlcmNlbnRhZ2V9Jmg9JHttYXhWaXNpYmxlUGVyY2VudGFnZX0mcHQ9JHtwYWdlTG9hZFRpbWV9JnR0PSR7dG90YWxUaW1lfSZycHQ9JHtuYXZUaW1pbmcobmF2aWdhdGlvblN0YXJ0LGxvYWRFdmVudFN0YXJ0KX0mcnN0PSR7bmF2VGltaW5nKG5hdmlnYXRpb25TdGFydCl9JnI9ZGUmaXNkPSR7aW5pdGlhbFNjcm9sbERlcHRofSZtc2Q9JHttYXhTY3JvbGxEZXB0aH0mYXZtcz1hbXBhXCJ9LFwidHJpZ2dlcnNcIjoge1wiZW5kT2ZTZXNzaW9uXCI6IHtcIm9uXCI6IFwidmlzaWJsZVwiLFwicmVxdWVzdFwiOiBcImFtcGVvc1wiLFwidmlzaWJpbGl0eVNwZWNcIjoge1wicmVwb3J0V2hlblwiOiBcImRvY3VtZW50RXhpdFwiLFwic2VsZWN0b3JcIjogXCI6cm9vdFwiLFwidmlzaWJsZVBlcmNlbnRhZ2VNaW5cIjogNTB9fX19PC9zY3JpcHQ+PC9hbXAtYW5hbHl0aWNzPjxhbXAtcGl4ZWwgYWxsb3ctc3NyLWltZz1cIlwiIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIGktYW1waHRtbC1zc3I9XCJcIiBzcmM9XCIvL3d3dy5nb29nbGUuY29tL2Fkcy9tZWFzdXJlbWVudC9sP2ViY2lkPUFMaDdDYVRScmtjR3l0T0k5MEJKM0dSYVFGem9YNjg0OGk1aFBjYUpfeE01VzFYMjFFZ3dsd0Z4Y3NMVnMzQjdSMG1TbGloM1B5NW5cIiBzdHlsZT1cIndpZHRoOjFweDtoZWlnaHQ6MXB4O1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpbWcgc3JjPVwiLi9sXCI+PC9hbXAtcGl4ZWw+PGRpdiBzdHlsZT1cImJvdHRvbTowO3JpZ2h0OjA7d2lkdGg6NzI4cHg7aGVpZ2h0OjkwcHg7YmFja2dyb3VuZDppbml0aWFsO3Bvc2l0aW9uOmFic29sdXRlO21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO2ltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWQ7ei1pbmRleDoyMTQ3NDgzNjQ3O2JhY2tncm91bmQtaW1hZ2U6dXJsKCYjMzk7ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDc0FBQUFXQkFNQUFBQ3JsM2lBQUFBQUJsQk1WRVVBQUFEK0FjaVdtWnpXQUFBQUFuUlNUbE1BQXBpZHJCUUFBQUI3U1VSQlZCalRiWkNMRVlBd0NFTWZHN0QvdE5id3JTZDZOVnhERElIL3NxZ0REcHdPMTIyZDlSV0Q5YWdUdzhWNlFYZDlIOXFMbmRxZVU2R2QvMjdsZEZKVnpQWk44UkhQbHFxVUJkWEZhb3labWtFVWtwd0xsTk13RXZyYnlONXpKVGk3Y2lYbzh6cVRZTnY1SkhqQnhZWk8vZGFtcll3VGJLWWZpV29HRi95QmE3UUFBQUFBU1VWT1JLNUNZSUk9JiMzOTspO1wiPjwvZGl2PjxhbXAtcGl4ZWwgYWxsb3ctc3NyLWltZz1cIlwiIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIGktYW1waHRtbC1zc3I9XCJcIiBzcmM9XCJodHRwczovL2FkLmRvdWJsZWNsaWNrLm5ldC9kZG0vdHJhY2tpbXAvTjcxODY3OS4zMTU5R09PR0xFL0IyMzU5NTgzOC4yNjk1NTcwMzI7ZGNfdHJrX2FpZD00NjQxNDUzMzQ7ZGNfdHJrX2NpZD0xMjk3NzQxMzU7b3JkPTQyNjM4MTEyNjM7ZGNfbGF0PTtkY19yZGlkPTt0YWdfZm9yX2NoaWxkX2RpcmVjdGVkX3RyZWF0bWVudD07dGZ1YT0/XCIgc3R5bGU9XCJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48aW1nIHNyYz1cIi4vQjIzNTk1ODM4LjI2OTU1NzAzMlwiPjwvYW1wLXBpeGVsPjxhbXAtcGl4ZWwgYWxsb3ctc3NyLWltZz1cIlwiIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIGktYW1waHRtbC1zc3I9XCJcIiBzcmM9XCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvYWR2aWV3P2FpPUM2Njc2a045S1g4endJNGJab3diZHNhWm80cVctOEY3UDBfXzdqUXVpN2JTUmtBd1FBU0N0c2FzaFlNa0dvQUhTLU12aUE4Z0JBZUFDQUtnREFjZ0RDcW9FNVFGUDBJVU11aUJ0Rk9mazFfX2QwZ24ybU5OaDNaOVNWRHdORU54bWQ0RGJtNXY5VmF0RE9WRXhERjk2SjktZWVNdUx5THI3dUV2RXBSQ19SMXJlbFVLV0djYnY4QWJQaElEM3J6aHQzMFdhcUlOdk5MVUNNRUtiWGQ2NVdnakdPdUdsWGhyLV85bVNBalRwb2Y4TDNmSEF2M2p0Vm9EVTZhSEtqN1pOQ0d0a2FxXzExRE1aeFMwbmdBWmZtWlZ1U2FzVS10T0NZRl9LWE9UeWFrMHJjRGsxVFRZazdtUGF5a21USktncWhveXltN21XOWZ3STI4LVE3UXdzLTVWMFl2QzZnOWxFVzB5c2x5WEFFMHVaQUtjRHN3OEtfTVBocmFjREI4R01DQlJMX29Ea25kMGR3QVRvNlBHT2lnTGdCQUdBQjhET3lpS29CNDdPRzZnSDFja2JxQWVUMkJ1b0I3b0dxQWZ3MlJ1b0JfTFpHNmdIcHI0YnFBZnMxUnZZQndIeUJ3UVFoZlFLMGdnSkNJRGhnRUFRQVJnZGdBb0R5QXNCMkJNRGlCUUImYW1wO3NpZ2g9TDVOTHBHeUZUUlEmYW1wO3RwZD1BR1doSm10aGZNZGR0SnVybllPWnZGLVlFZUZSNDViUGpHRHltVW1DYmtvRHFHaU5mZ1wiIHN0eWxlPVwid2lkdGg6MXB4O2hlaWdodDoxcHg7XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGltZyBzcmM9XCIuL2Fkdmlld1wiPjwvYW1wLXBpeGVsPjwvYm9keT48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE2MjQsICJib2R5U2l6ZSI6IDEzNTI5LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNTE1M30sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDQ4LjI1NiwgInJlY2VpdmUiOiAyLjE0Nn0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuOTM3WiIsICJ0aW1lIjogMzcuODI3LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDcpLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2NTAsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJ3VGRWSEpUZmhpYlY2cF9lV3p0T0RBTzdPLnJBU1djdS5VSWljaUFnU2hVLTE2ODQ5NDI4NzgtMC1BUmhpRjhLcGFJLzg2bmZoajNSSWsyRjNQMjUyeUZGRDY0bzd0Zkp3MjliZEE4MjlSYVpwazRmMDMzMHY4Q3VXMnoxSURmVUpCYm03dWsvYVFLNnFjZ1k9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQyIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NWI3YTY0MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVZiMTZtQlVBeVczdkJORkJqb2dQakxZdTdvUkd0dnhoaTZpdkNRR1dWeFhiXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09d1RkVkhKVGZoaWJWNnBfZVd6dE9EQU83Ty5yQVNXY3UuVUlpY2lBZ1NoVS0xNjg0OTQyODc4LTAtQVJoaUY4S3BhSS84Nm5maGozUklrMkYzUDI1MnlGRkQ2NG83dGZKdzI5YmRBODI5UmFacGs0ZjAzMzB2OEN1VzJ6MUlEZlVKQmJtN3VrL2FRSzZxY2dZPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE4IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg3KS5odG1sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVZiMTZtQlVBeVczdkJORkJqb2dQakxZdTdvUkd0dnhoaTZpdkNRR1dWeFhiIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA0NzU5MywgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDM2Mjc1LCAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbD5cbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbCBhbXA0YWRzPVwiXCIgY2xhc3M9XCJpLWFtcGh0bWwtaW5hYm94IGktYW1waHRtbC1zaW5nbGVkb2MgaS1hbXBodG1sLXN0YW5kYWxvbmUgaS1hbXBodG1sLWlmcmFtZWRcIiBpLWFtcGh0bWwtbGF5b3V0PVwiXCIgaS1hbXBodG1sLW5vLWJvaWxlcnBsYXRlPVwiXCIgYW1wLXZlcnNpb249XCIyMDA4MTgwMDA3MDAwXCI+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj48bWV0YSBuYW1lPVwicmVmZXJyZXJcIiBjb250ZW50PVwib3JpZ2luXCI+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIgY29udGVudD1cInNjcmlwdC1zcmMgaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvO29iamVjdC1zcmMgJiMzOTtub25lJiMzOTs7Y2hpbGQtc3JjIGJsb2I6O2ZyYW1lLXNyYyAmIzM5O25vbmUmIzM5O1wiPjxzdHlsZSBhbXAtcnVudGltZT1cIlwiIGktYW1waHRtbC12ZXJzaW9uPVwiMDIyMDA4MTgwMDA3MDAwXCI+W2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH0uaS1hbXBodG1sLWVsZW1lbnR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmktYW1waHRtbC1ibHVycnktcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MgY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfVtsYXlvdXQ9bm9kaXNwbGF5XTpub3QoLmktYW1waHRtbC1lbGVtZW50KXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5pLWFtcGh0bWwtbGF5b3V0LWZpeGVkLFtsYXlvdXQ9Zml4ZWRdW3dpZHRoXVtoZWlnaHRdOm5vdCguaS1hbXBodG1sLWxheW91dC1maXhlZCl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LmktYW1waHRtbC1sYXlvdXQtcmVzcG9uc2l2ZSxbbGF5b3V0PXJlc3BvbnNpdmVdW3dpZHRoXVtoZWlnaHRdOm5vdCguaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlKSxbd2lkdGhdW2hlaWdodF1baGVpZ2h0c106bm90KFtsYXlvdXRdKTpub3QoLmktYW1waHRtbC1sYXlvdXQtcmVzcG9uc2l2ZSksW3dpZHRoXVtoZWlnaHRdW3NpemVzXTpub3QoW2xheW91dF0pOm5vdCguaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlKXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5pLWFtcGh0bWwtbGF5b3V0LWludHJpbnNpYyxbbGF5b3V0PWludHJpbnNpY11bd2lkdGhdW2hlaWdodF06bm90KC5pLWFtcGh0bWwtbGF5b3V0LWludHJpbnNpYyl7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjEwMCV9LmktYW1waHRtbC1sYXlvdXQtaW50cmluc2ljIC5pLWFtcGh0bWwtc2l6ZXJ7bWF4LXdpZHRoOjEwMCV9LmktYW1waHRtbC1pbnRyaW5zaWMtc2l6ZXJ7bWF4LXdpZHRoOjEwMCU7ZGlzcGxheTpibG9jayFpbXBvcnRhbnR9LmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyLC5pLWFtcGh0bWwtbGF5b3V0LWZpeGVkLWhlaWdodCxbbGF5b3V0PWNvbnRhaW5lcl0sW2xheW91dD1maXhlZC1oZWlnaHRdW2hlaWdodF06bm90KC5pLWFtcGh0bWwtbGF5b3V0LWZpeGVkLWhlaWdodCl7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uaS1hbXBodG1sLWxheW91dC1maWxsLFtsYXlvdXQ9ZmlsbF06bm90KC5pLWFtcGh0bWwtbGF5b3V0LWZpbGwpe2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MH0uaS1hbXBodG1sLWxheW91dC1mbGV4LWl0ZW0sW2xheW91dD1mbGV4LWl0ZW1dOm5vdCguaS1hbXBodG1sLWxheW91dC1mbGV4LWl0ZW0pe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7LW1zLWZsZXg6MSAxIGF1dG87ZmxleDoxIDEgYXV0b30uaS1hbXBodG1sLWxheW91dC1mbHVpZHtwb3NpdGlvbjpyZWxhdGl2ZX0uaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWR7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0uaS1hbXBodG1sLWxheW91dC1hd2FpdGluZy1zaXple3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt0b3A6YXV0byFpbXBvcnRhbnQ7Ym90dG9tOmF1dG8haW1wb3J0YW50fWktYW1waHRtbC1zaXplcntkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uaS1hbXBodG1sLWJsdXJyeS1wbGFjZWhvbGRlciwuaS1hbXBodG1sLWZpbGwtY29udGVudHtkaXNwbGF5OmJsb2NrO2hlaWdodDowO21heC1oZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJTttaW4taGVpZ2h0OjEwMCU7bWluLXdpZHRoOjEwMCU7d2lkdGg6MDttYXJnaW46YXV0b30uaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgLmktYW1waHRtbC1maWxsLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2JvdHRvbTowO3JpZ2h0OjB9LmktYW1waHRtbC1yZXBsYWNlZC1jb250ZW50LC5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcntwYWRkaW5nOjAhaW1wb3J0YW50O2JvcmRlcjpub25lIWltcG9ydGFudH0uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3RvcDowcHghaW1wb3J0YW50O2xlZnQ6MHB4IWltcG9ydGFudDt3aWR0aDo0cHghaW1wb3J0YW50O2hlaWdodDo0cHghaW1wb3J0YW50O29wYWNpdHk6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudH0uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ+LmktYW1waHRtbC1zY3JlZW4tcmVhZGVye2xlZnQ6OHB4IWltcG9ydGFudH0uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ+LmktYW1waHRtbC1zY3JlZW4tcmVhZGVyfi5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcntsZWZ0OjEycHghaW1wb3J0YW50fS5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcn4uaS1hbXBodG1sLXNjcmVlbi1yZWFkZXJ+LmktYW1waHRtbC1zY3JlZW4tcmVhZGVyfi5pLWFtcGh0bWwtc2NyZWVuLXJlYWRlcntsZWZ0OjE2cHghaW1wb3J0YW50fS5pLWFtcGh0bWwtdW5yZXNvbHZlZHtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5pLWFtcGh0bWwtc2VsZWN0LWRpc2FibGVkey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnQ7LW1vei11c2VyLXNlbGVjdDpub25lIWltcG9ydGFudDstbXMtdXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnQ7dXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnR9LmktYW1waHRtbC1ub3RidWlsdCxbbGF5b3V0XTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1baGVpZ2h0c106bm90KFtsYXlvdXRdKTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCl7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtjb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnR9LmktYW1waHRtbC1ub3RidWlsdDpub3QoLmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyKT4qLFtsYXlvdXRdOm5vdChbbGF5b3V0PWNvbnRhaW5lcl0pOm5vdCguaS1hbXBodG1sLWVsZW1lbnQpPiosW3dpZHRoXVtoZWlnaHRdW2hlaWdodHNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+Kixbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+KntkaXNwbGF5Om5vbmV9LmktYW1waHRtbC1ub3RidWlsdDpub3QoLmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyKSxbbGF5b3V0XTpub3QoW2xheW91dD1jb250YWluZXJdKTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1baGVpZ2h0c106bm90KFtsYXlvdXRdKTpub3QoLmktYW1waHRtbC1lbGVtZW50KSxbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCl7Y29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjAhaW1wb3J0YW50fS5pLWFtcGh0bWwtZ2hvc3R7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fS5pLWFtcGh0bWwtZWxlbWVudD5bcGxhY2Vob2xkZXJdLFtsYXlvdXRdOm5vdCguaS1hbXBodG1sLWVsZW1lbnQpPltwbGFjZWhvbGRlcl0sW3dpZHRoXVtoZWlnaHRdW2hlaWdodHNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+W3BsYWNlaG9sZGVyXSxbd2lkdGhdW2hlaWdodF1bc2l6ZXNdOm5vdChbbGF5b3V0XSk6bm90KC5pLWFtcGh0bWwtZWxlbWVudCk+W3BsYWNlaG9sZGVyXXtkaXNwbGF5OmJsb2NrfS5pLWFtcGh0bWwtZWxlbWVudD5bcGxhY2Vob2xkZXJdLmFtcC1oaWRkZW4sLmktYW1waHRtbC1lbGVtZW50PltwbGFjZWhvbGRlcl0uaGlkZGVue3Zpc2liaWxpdHk6aGlkZGVufS5pLWFtcGh0bWwtZWxlbWVudDpub3QoLmFtcC1ub3RzdXBwb3J0ZWQpPltmYWxsYmFja10sLmktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyPltwbGFjZWhvbGRlcl0uYW1wLWhpZGRlbiwuaS1hbXBodG1sLWxheW91dC1jb250YWluZXI+W3BsYWNlaG9sZGVyXS5oaWRkZW57ZGlzcGxheTpub25lfS5pLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZD5bZmFsbGJhY2tdLC5pLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZD5bcGxhY2Vob2xkZXJde3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDtyaWdodDowIWltcG9ydGFudDtib3R0b206MCFpbXBvcnRhbnQ7ei1pbmRleDoxfS5pLWFtcGh0bWwtbm90YnVpbHQ+W3BsYWNlaG9sZGVyXXtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0uaS1hbXBodG1sLWhpZGRlbi1ieS1tZWRpYS1xdWVyeXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5pLWFtcGh0bWwtZWxlbWVudC1lcnJvcntiYWNrZ3JvdW5kOnJlZCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50fS5pLWFtcGh0bWwtZWxlbWVudC1lcnJvcjpiZWZvcmV7Y29udGVudDphdHRyKGVycm9yLW1lc3NhZ2UpfWktYW1wLXNjcm9sbC1jb250YWluZXIsaS1hbXBodG1sLXNjcm9sbC1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ZGlzcGxheTpibG9ja31pLWFtcC1zY3JvbGwtY29udGFpbmVyLmFtcC1hY3RpdmUsaS1hbXBodG1sLXNjcm9sbC1jb250YWluZXIuYW1wLWFjdGl2ZXtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5pLWFtcGh0bWwtbG9hZGluZy1jb250YWluZXJ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4OjF9LmktYW1waHRtbC1ub3RidWlsdD4uaS1hbXBodG1sLWxvYWRpbmctY29udGFpbmVye2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5pLWFtcGh0bWwtbG9hZGluZy1jb250YWluZXIuYW1wLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0uaS1hbXBodG1sLWVsZW1lbnQ+W292ZXJmbG93XXtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7dmlzaWJpbGl0eTpoaWRkZW47ZGlzcGxheTppbml0aWFsO2xpbmUtaGVpZ2h0Om5vcm1hbH0uaS1hbXBodG1sLWVsZW1lbnQ+W292ZXJmbG93XS5hbXAtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9dGVtcGxhdGV7ZGlzcGxheTpub25lIWltcG9ydGFudH0uYW1wLWJvcmRlci1ib3gsLmFtcC1ib3JkZXItYm94ICosLmFtcC1ib3JkZXItYm94IDphZnRlciwuYW1wLWJvcmRlci1ib3ggOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9YW1wLXBpeGVse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9YW1wLWFuYWx5dGljcyxhbXAtYXV0by1hZHMsYW1wLXN0b3J5LWF1dG8tYWRze3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDtoZWlnaHQ6MXB4IWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3Zpc2liaWxpdHk6aGlkZGVufWh0bWwuaS1hbXBodG1sLWZpZT5hbXAtYW5hbHl0aWNze3Bvc2l0aW9uOmluaXRpYWwhaW1wb3J0YW50fVt2aXNpYmxlLXdoZW4taW52YWxpZF06bm90KC52aXNpYmxlKSxmb3JtIFtzdWJtaXQtZXJyb3JdLGZvcm0gW3N1Ym1pdC1zdWNjZXNzXSxmb3JtIFtzdWJtaXR0aW5nXXtkaXNwbGF5Om5vbmV9YW1wLWFjY29yZGlvbntkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1hbXAtYWNjb3JkaW9uPnNlY3Rpb257ZmxvYXQ6bm9uZSFpbXBvcnRhbnR9YW1wLWFjY29yZGlvbj5zZWN0aW9uPip7ZmxvYXQ6bm9uZSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnR9YW1wLWFjY29yZGlvbixhbXAtYWNjb3JkaW9uPnNlY3Rpb257bWFyZ2luOjB9YW1wLWFjY29yZGlvbj5zZWN0aW9uPjpsYXN0LWNoaWxke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9YW1wLWFjY29yZGlvbj5zZWN0aW9uW2V4cGFuZGVkXT46bGFzdC1jaGlsZHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH1cbi8qIyBzb3VyY2VVUkw9L2Nzcy9hbXBzaGFyZWQuY3NzKi9odG1sLmktYW1waHRtbC1pbmFib3h7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50fTwvc3R5bGU+PHN0eWxlIGFtcC1leHRlbnNpb249XCJhbXAtZm9ybVwiPmZvcm0uYW1wLWZvcm0tc3VibWl0LWVycm9yIFtzdWJtaXQtZXJyb3JdLGZvcm0uYW1wLWZvcm0tc3VibWl0LXN1Y2Nlc3MgW3N1Ym1pdC1zdWNjZXNzXSxmb3JtLmFtcC1mb3JtLXN1Ym1pdHRpbmcgW3N1Ym1pdHRpbmdde2Rpc3BsYXk6YmxvY2t9dGV4dGFyZWFbYXV0b2V4cGFuZF06bm90KC5pLWFtcGh0bWwtdGV4dGFyZWEtbWF4KXtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50fS5pLWFtcGh0bWwtdGV4dGFyZWEtY2xvbmV7dmlzaWJpbGl0eTpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTk5cHg7bGVmdDotOTk5OXB4O2hlaWdodDowIWltcG9ydGFudH0uaS1hbXBodG1sLXZhbGlkYXRpb24tYnViYmxle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtMTAwJSk7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCA1cHggMTVweCAwIHJnYmEoMCwwLDAsMC41KTttYXgtd2lkdGg6MjAwcHg7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxMHB4O2JvcmRlci1yYWRpdXM6NXB4fS5pLWFtcGh0bWwtdmFsaWRhdGlvbi1idWJibGU6YWZ0ZXJ7Y29udGVudDpcIiBcIjtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206LThweDtsZWZ0OjMwcHg7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjhweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjhweCBzb2xpZCAjZmZmfVt2aXNpYmxlLXdoZW4taW52YWxpZF17Y29sb3I6cmVkfVxuLyojIHNvdXJjZVVSTD0vZXh0ZW5zaW9ucy9hbXAtZm9ybS8wLjEvYW1wLWZvcm0uY3NzKi88L3N0eWxlPjxzdHlsZSBhbXAtZXh0ZW5zaW9uPVwiYW1wLWZpdC10ZXh0XCI+LmktYW1waHRtbC1maXQtdGV4dC1jb250ZW50LC5pLWFtcGh0bWwtZml0LXRleHQtY29udGVudC5pLWFtcGh0bWwtZmlsbC1jb250ZW50e2Rpc3BsYXk6YmxvY2s7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1zLWZsZXgtd3JhcDpub3dyYXA7ZmxleC13cmFwOm5vd3JhcDstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5pLWFtcGh0bWwtZml0LXRleHQtY29udGVudC1vdmVyZmxvd257ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59XG4vKiMgc291cmNlVVJMPS9leHRlbnNpb25zL2FtcC1maXQtdGV4dC8wLjEvYW1wLWZpdC10ZXh0LmNzcyovPC9zdHlsZT48bWV0YSBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLG1pbmltdW0tc2NhbGU9MSxpbml0aWFsLXNjYWxlPTFcIiBuYW1lPVwidmlld3BvcnRcIj48bWV0YSBjb250ZW50PVwidmVuZG9yPWRvdWJsZWNsaWNrLHR5cGU9aW1wcmVzc2lvbi1pZCx2YWx1ZT1DTTc0ejg3RHdlc0NGWWJzeUFvZDNaZ0pEUVwiIG5hbWU9XCJhbXA0YWRzLWlkXCI+PGxpbmsgYXM9XCJzY3JpcHRcIiBocmVmPVwiLi9hbXA0YWRzLXYwLmpzLmRvd25sb2FkXCIgcmVsPVwicHJlbG9hZFwiPjxzY3JpcHQgYXN5bmM9XCJcIiBzcmM9XCIuL2FtcDRhZHMtdjAuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPVwiXCIgY3VzdG9tLWVsZW1lbnQ9XCJhbXAtYWQtZXhpdFwiIHNyYz1cIi4vYW1wLWFkLWV4aXQtMC4xLmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PHNjcmlwdCBhc3luYz1cIlwiIGN1c3RvbS1lbGVtZW50PVwiYW1wLWFuYWx5dGljc1wiIHNyYz1cIi4vYW1wLWFuYWx5dGljcy0wLjEuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPVwiXCIgY3VzdG9tLWVsZW1lbnQ9XCJhbXAtZml0LXRleHRcIiBzcmM9XCIuL2FtcC1maXQtdGV4dC0wLjEuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IGFzeW5jPVwiXCIgY3VzdG9tLWVsZW1lbnQ9XCJhbXAtZm9ybVwiIHNyYz1cIi4vYW1wLWZvcm0tMC4xLmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PHN0eWxlIGFtcC1jdXN0b209XCJcIj5hIHsgY29sb3I6ICMwMDAwMDAgfWJvZHkgeyBtYXJnaW46IDA7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9I2dvb2dsZV9pbWFnZV9kaXYge2hlaWdodDogMjUwcHg7d2lkdGg6IDMwMHB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX1odG1sLCBib2R5IHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO31ib2R5IHtkaXNwbGF5OnRhYmxlO3RleHQtYWxpZ246Y2VudGVyO30jZ29vZ2xlX2NlbnRlcl9kaXYge2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fSNnb29nbGVfaW1hZ2VfZGl2IHtkaXNwbGF5OmlubGluZS1ibG9jazt9LmFiZ2Mge3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MjE0NzQ4MzY0NjtyaWdodDowO3RvcDowO30uYWJnYyBhbXAtaW1nLCAuYWJnYyBpbWcge2Rpc3BsYXk6YmxvY2s7fS5hYmdzIHtwb3NpdGlvbjphYnNvbHV0ZTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDc2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDc2cHgpO3JpZ2h0OjE2cHg7dG9wOjA7fS5hYmdjcCB7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt3aWR0aDozMXB4O2hlaWdodDoxNXB4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctYm90dG9tOjEwcHg7fS5hYmdiIHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tcmlnaHQ6MTZweDt0b3A6MDt9LmFiZ2M6aG92ZXIgLmFiZ3Mgey13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmU7fS5jYmIge2Rpc3BsYXk6IGJsb2NrO3Bvc2l0aW9uOiBhYnNvbHV0ZTtyaWdodDowO3RvcDowO2N1cnNvcjogcG9pbnRlcjtoZWlnaHQ6IDE1cHg7d2lkdGg6IDE1cHg7ei1pbmRleDogOTAyMDtwYWRkaW5nLWxlZnQ6MTZweDt9LmJ0biB7ZGlzcGxheTogaW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6IDJweDstbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O2JveC1zaXppbmc6IGJvcmRlci1ib3g7Ym94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSgwLDAsMCwwLjEyKSwgMHB4IDFweCAzcHggcmdiYSgwLDAsMCwwLjI2KTtjdXJzb3I6IHBvaW50ZXI7Zm9udC1zaXplOiAwLjdlbTttYXJnaW46IDAgMXB4IDAuNGVtIDFweDt9QG1lZGlhIChtYXgtd2lkdGg6IDM3NXB4KSBhbmQgKG1pbi1oZWlnaHQ6IDEwMHB4KSB7LmJ0biB7ZGlzcGxheTogYmxvY2s7d2lkdGg6IDkwJTttYXgtd2lkdGg6IDI0MHB4O21hcmdpbi1sZWZ0OiBhdXRvO21hcmdpbi1yaWdodDogYXV0bzt9fSNzcHYxIGFtcC1maXQtdGV4dD5kaXYgey13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDogZmxleC1zdGFydDt9LmJ0biA+IHNwYW4ge2Rpc3BsYXk6IGlubGluZS1ibG9jaztwYWRkaW5nOiAwLjVlbSAwLjZlbTtsaW5lLWhlaWdodDogMWVtO30jc2J0biB7YmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtjb2xvcjogIzlFOUVBNjt0ZXh0LWRlY29yYXRpb246IG5vbmU7fSNzYnRuOmhvdmVyLCNzYnRuOmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTt9I3JidG4ge2JhY2tncm91bmQtY29sb3I6IHJnYig2NiwxMzMsMjQ1KTtjb2xvcjogd2hpdGU7fSNyYnRuOmhvdmVyLCNyYnRuOmFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogIzMyNzVFNTt9I210YSB7cG9zaXRpb246YWJzb2x1dGU7dG9wOiAwO2xlZnQ6IDA7Zm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogMTJweDtmb250LXdlaWdodDogNDAwO2xpbmUtaGVpZ2h0OiAxZW07fSNtdGEgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtkaXNwbGF5OiBub25lO30jbXRhIC5wbiB7cmlnaHQ6IC0zMDBweDt0b3A6IC0yNTBweDt3aWR0aDozMDBweDtoZWlnaHQ6MjUwcHg7cG9zaXRpb246IGFic29sdXRlOy1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Ym94LXNpemluZzogYm9yZGVyLWJveDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBO3RleHQtYWxpZ246IGNlbnRlcjt9I3NwdjIge2Rpc3BsYXk6IC13ZWJraXQtZmxleDtkaXNwbGF5OiBmbGV4Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O2p1c3RpZnktY29udGVudDogZmxleC1zdGFydDstd2Via2l0LWZsZXgtd3JhcDogbm93cmFwO2ZsZXgtd3JhcDogbm93cmFwO292ZXJmbG93OiBoaWRkZW47YmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTtmb250LXNpemU6IDA7fS5zdiAjc3B2MiB7LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47fS5qbS5zdiAjc3B2MiB7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjt9I3NwdjIgKiB7LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtib3gtc2l6aW5nOiBib3JkZXItYm94O30jc3ByMTpjaGVja2VkIH4gI2NiYiwjc3ByMjpjaGVja2VkIH4gI2NiYiwjc3ByMzpjaGVja2VkIH4gI2NiYntkaXNwbGF5OiBub25lO30jc3B2MyB7b3BhY2l0eToxO30uYW1wLWFuaW1hdGUgI3NwdjQge29wYWNpdHk6MDt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgbGluZWFyIDIuNXM7fS5hbXAtYW5pbWF0ZSAgI3NwdjMgYW1wLWZpdC10ZXh0IHtvcGFjaXR5OjE7dHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGxpbmVhciAyczt9I3NwcjM6Y2hlY2tlZCB+ICNzcHYzIGFtcC1maXQtdGV4dCB7b3BhY2l0eTowfSNzcHIzOmNoZWNrZWQgfiAjc3B2NCB7b3BhY2l0eToxO30jc3ByMTpjaGVja2VkIH4gI3NwdjEsI3NwcjI6Y2hlY2tlZCB+ICNzcHYyLCNzcHIzOmNoZWNrZWQgfiAjc3B2Mywjc3ByMzpjaGVja2VkIH4gI3NwdjR7cmlnaHQ6IDBweDt0b3A6IDBweDt9LmNsb3NlIHtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAycHg7Y29sb3I6IGJsYWNrO2ZvbnQtc2l6ZTogMTVweDtsaW5lLWhlaWdodDogMTVweDtvcGFjaXR5OiAwLjU7aGVpZ2h0OiAxNXB4O3dpZHRoOiAxNXB4O3VzZXItc2VsZWN0OiBub25lO2N1cnNvcjogcG9pbnRlcjt9W2Rpcj1cInJ0bFwiXSAuY2xvc2Uge3RyYW5zZm9ybTogc2NhbGVYKC0xKTt9LmN0IHN2ZyB7Ym9yZGVyOiAwO21hcmdpbjogMCAwIC0wLjQ1ZW0gMDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7aGVpZ2h0OiAxLjM4ZW07b3BhY2l0eTogMC40O30uY3Qge2Rpc3BsYXk6IGlubGluZS1ibG9jaztsaW5lLWhlaWdodDogMS4yOGVtO2NvbG9yOiByZ2JhKDAsMCwwLDAuNCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzogMC4zZW07fS5mY3Qge3BhZGRpbmc6IDFlbTt9I3BjdCB7ZGlzcGxheTogYmxvY2s7Zm9udC13ZWlnaHQ6IGJvbGQ7cGFkZGluZzogMWVtIDAuM2VtO30jdGkge3dpZHRoOiAzMDBweDt9I2J0bnMge3dpZHRoOiAzMDBweDt9LmZsIHt3aWR0aDogMzAwcHg7aGVpZ2h0OjI1MHB4O30jc2kge3Bvc2l0aW9uOiByZWxhdGl2ZTtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbTogLTAuMTVlbTtoZWlnaHQ6IDFlbTt3aWR0aDogMWVtO29wYWNpdHk6IDAuNDt9LnNiIHtmbGV4LXNocmluazogMDtoZWlnaHQ6IDUwcHg7fS5zbyB7cG9zaXRpb246IHJlbGF0aXZlO3otaW5kZXg6IDkxMTA7b3ZlcmZsb3c6IGhpZGRlbjtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7cGFkZGluZzogMXB4IDVweDt3aWR0aDogOTZweDtoZWlnaHQ6IDUwcHg7Ym9yZGVyOiAxcHggc29saWQgI0UwRTBFMDtiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO2N1cnNvcjogcG9pbnRlcjt9LnNvOmhvdmVyLC5zbzphY3RpdmUge2JhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7fS5zbyBkaXYge2Rpc3BsYXk6IC13ZWJraXQtZmxleDtkaXNwbGF5OiBmbGV4Oy13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjthbGlnbi1pdGVtczogY2VudGVyOy13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO30uc28gc3BhbiB7Y29sb3I6ICM0Mjg1RjQ7Zm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO3RleHQtYWxpZ246IGNlbnRlcjtmb250LXNpemU6IDEycHg7bGluZS1oZWlnaHQ6IDE0cHg7d2hpdGUtc3BhY2U6IG5vcm1hbDt9QG1lZGlhIChtaW4taGVpZ2h0OiA1NHB4KSB7LnNoLnNzIC5zbywuc3YgLnNvIHtib3gtc2hhZG93OiAwcHggMHB4IDJweCByZ2JhKDAsMCwwLDAuMTIpLCAwcHggMXB4IDNweCByZ2JhKDAsMCwwLDAuMjYpO2JvcmRlcjogbm9uZTt9fS5zdiAuc28sLnNoLnNzIC5zbyB7Ym9yZGVyLXJhZGl1czogMnB4O30uc3YgLnNvIHttYXJnaW46IDRweDt9PC9zdHlsZT48L2hlYWQ+PGJvZHkgY2xhc3M9XCJhbXAtYW5pbWF0ZSBhbXAtbW9kZS1tb3VzZVwiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiBzdHlsZT1cIm9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7IGFuaW1hdGlvbjogMHMgZWFzZSAwcyAxIG5vcm1hbCBub25lIHJ1bm5pbmcgbm9uZTtcIj48ZGl2IGlkPVwiZ29vZ2xlX2NlbnRlcl9kaXZcIj48ZGl2IGlkPVwiZ29vZ2xlX2ltYWdlX2RpdlwiPjxhIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGVhZHNlcnZpY2VzLmNvbS9wYWdlYWQvYWNsaz9zYT1MJmFtcDthaT1DSDg0LWtOOUtYODd3STRiWm93YmRzYVpvMXZxQThWN3JsS2VtbUF6dDFvak9rZzRRQVNDdHNhc2hZTWtHb0FHcjZfdjVBc2dCQXVBQ0FLZ0RBY2dEQ0tvRThRRlAwT25nRXhNSEdiS0JEX3p1WkRBa2R3cklmRTJ0TTgtc3F1T2M0ZkJLRDVkWDN6VmdyZ3NFNHFXemlXblZoQWluVm05VDBheXVSaHNJenA4WFRQbmhwaGN1QmY5N0RkQVgzZEtFd1k4aEFyRElkX01qY2FYaHo5NVpVUGdDZDlvNHZ3NmhBcHlsbnZ4akFiYU8tN3F6TEZmSDFGcHVtMVRoT1FYdHRsVWZOZGxjQ0VCUDNzckdUWEZXSDFpb0RUZGl0X1dNMGxTQmJuQktJcFl4dEk2ZENtODRXX1VXTWh2U2dVckN0UDVCVmFsd0FXX0hfTWFmMFZWdjhRbEtfZ0xMS2laX05mM3FCQUt0SDg1MHk5NHZwLURGVFlQY01QN0lDbVd0ZnFQS3RnenNYb0JNT3h3RTVySWVYTU5SWTRzendBVHR3dHU3OVFMZ0JBR2dCZ0tBQjU2ei1Za0JxQWVPemh1b0I5WEpHNmdIazlnYnFBZTZCcWdIOE5rYnFBZnkyUnVvQjZhLUc2Z0g3TlVicUFmejBSdW9CLXpWRzZnSGx0Z2JxQWZDMmh2WUJ3SFNDQWtJZ09HQVFCQUJHQjJ4Q1NULXdCcDYyUVZiZ0FvRG1Bc0J5QXNCMkJNTSZhbXA7YWU9MSZhbXA7bnVtPTEmYW1wO2NpZD1DQUFTUGVSb0ZrUTM3UkZwMFUwMUlhTU8zTE5seTdBWExsYmlIX2ZOZ29uMUlaM25CSmNybTVmRUw1MUNnSi1mb2REMmd1RmZiNk1CYWdZeEpDbGo3aTAmYW1wO3NpZz1BT0Q2NF8yY1hTVTU1Qy1TTXZVdHBVc2J5cllWUUYwYWhRJmFtcDtjbGllbnQ9Y2EtcHViLTYzNjU0NDg1ODcwMDIzNzEmYW1wO254PUNMSUNLX1gmYW1wO255PUNMSUNLX1kmYW1wO25iPTImYW1wO2FkdXJsPWh0dHBzOi8vaW5mby5zb25peHBlc3RyZXBlbGxlci5jb20vJTNGYWRncm91cCUzRDEwMDI1MTY1NjU1NyUyNmFkJTNENDU4MTE5NjA5ODU3JTI2bWF0Y2h0eXBlJTNEJTI2bmV0d29yayUzRGQlMjZrdyUzRCUyNnBsYWNlbWVudCUzRG15Lmp1bm8uY29tJTI2dGFyZ2V0JTNEJTI2YWRwb3NpdGlvbiUzRG5vbmUlMjZjYW1wYWlnbmlkJTNEOTc2NTQ5NzkxMiUyNmZlZWRpdGVtaWQlM0QlMjZ0YXJnZXRpZCUzRCUyNmRldmljZSUzRGMlMjZnY2xpZCUzREVBSWFJUW9iQ2hNSXp2alB6c1BCNndJVmh1eklDaDNkbUFrTkVBRVlBU0FBRWdJQU9mRF9Cd0VcIiBpZD1cImF3MFwiIG9uPVwidGFwOmV4aXQtYXBpLmV4aXQodGFyZ2V0PSYjMzk7bGFuZGluZ1BhZ2UmIzM5OyxfbmI9JiMzOTsyJiMzOTspXCIgdGFyZ2V0PVwiX3RvcFwiPjxhbXAtaW1nIGFsdD1cIlwiIGNsYXNzPVwiaW1nX2FkIGktYW1waHRtbC1sYXlvdXQtZml4ZWQgaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgaS1hbXBodG1sLWVsZW1lbnQgaS1hbXBodG1sLWxheW91dFwiIGhlaWdodD1cIjI1MFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIGktYW1waHRtbC1zc3I9XCJcIiBzcmM9XCJodHRwczovL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vc2ltZ2FkLzE3OTM3MDA4OTIyOTExMjI4NTc/c3FwPTRzcVB5UVE3UWprcU54QUJIUUFBdEVJZ0FTZ0JNQWs0QTBEd2t3bFlBV0JmY0FLQUFRR0lBUUdkQVFBQWdELW9BUUd3QVlDdDRnUzRBVl9GQVMyeW5UNCZhbXA7cnM9QU9nYTRxbUt4TTVFMUs5YTVFeFdOWHhYbVhNeWZPLWR6d1wiIHN0eWxlPVwid2lkdGg6MzAwcHg7aGVpZ2h0OjI1MHB4O1wiIHdpZHRoPVwiMzAwXCI+PGltZyBhbHQ9XCJcIiBjbGFzcz1cImktYW1waHRtbC1maWxsLWNvbnRlbnQgaS1hbXBodG1sLXJlcGxhY2VkLWNvbnRlbnRcIiBkZWNvZGluZz1cImFzeW5jXCIgc3JjPVwiLi8xNzkzNzAwODkyMjkxMTIyODU3XCI+PC9hbXAtaW1nPjwvYT48YW1wLXBpeGVsIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIHJlZmVycmVycG9saWN5PVwibm8tcmVmZXJyZXJcIiBzcmM9XCIvL3d3dy5nb29nbGUuY29tL3BhZ2VhZC9kcnQvdWlcIiBzdHlsZT1cIndpZHRoOjFweDtoZWlnaHQ6MXB4O1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvYW1wLXBpeGVsPjxkaXYgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJhYmdjIGFiZ2YgcGVuXCIgZGlyPVwibHRyXCIgaWQ9XCJhYmdjXCI+PGRpdiBjbGFzcz1cImFiZ2NwIHBlYVwiIGlkPVwiYWJnY3BcIj48ZGl2IGNsYXNzPVwiYWJnc1wiIGlkPVwiYWJnc1wiPjxhIGNsYXNzPVwiYWJnbFwiIGhyZWY9XCJodHRwczovL2Fkc3NldHRpbmdzLmdvb2dsZS5jb20vd2h5dGhpc2FkP3JlYXNvbnM9QUIzYWZHRUFBQVVjVzF0YlcyNTFiR3dzV3pJc01UTXNNVGtzTWpGZExHNTFiR3dzYm5Wc2JDeDBjblZsTEZzaU9EQTFORElpWFYwc1cyNTFiR3dzSW1oMGRIQnpPaTh2WjI5dloyeGxZV1J6TG1jdVpHOTFZbXhsWTJ4cFkyc3VibVYwTDNCaFoyVmhaQzlqYjI1MlpYSnphVzl1THo5aGFUMURTRGcwTFd0T09VdFlPRGQzU1RSaVdtOTNZbVJ6WVZwdk1YWnhRVGhXTjNKc1MyVnRiVUY2ZERGdmFrOXJaelJSUVZORGRITmhjMmhaVFd0SGIwRkhjalpmZGpWQmMyZENRWFZCUTBGTFowUkJZMmRFUTB0dlJUaFJSbEF3VDI1blJYaE5TRWRpUzBKRVgzcDFXa1JCYTJSM2NrbG1SVEowVFRndGMzRjFUMk0wWmtKTFJEVmtXRE42Vm1keVozTkZOSEZYZW1sWGJsWm9RV2x1Vm0wNVZEQmhlWFZTYUhOSmVuQTRXRlJRYm1od2FHTjFRbVk1TjBSa1FWZ3paRXRGZDFrNGFFRnlSRWxrWDAxcVkyRllhSG81TlZwVlVHZERaRGx2TkhaM05taEJjSGxzYm5aNGFrRmlZVTh0TjNGNlRFWm1TREZHY0hWdE1WUm9UMUZZZEhSc1ZXWk9aR3hqUTBWQ1VETnpja2RVV0VaWFNERnBiMFJVWkdsMFgxZE5NR3hUUW1KdVFrdEpjRmw0ZEVrMlpFTnRPRFJYWDFWWFRXaDJVMmRWY2tOMFVEVkNWbUZzZDBGWFgwaGZUV0ZtTUZaV2RqaFJiRXRmWjB4TVMybGFYMDVtTTNGQ1FVdDBTRGcxTUhrNU5IWndMVVJHVkZsUVkwMVFOMGxEYlZkMFpuRlFTM1JuZW5OWWIwSk5UM2gzUlRWeVNXVllUVTVTV1RSemVuZEJWSFIzZEhVM09WRk1aMEpCUjJkQ1owdEJRalUyZWkxWmEwSnhRV1ZQZW1oMWIwSTVXRXBITm1kSWF6bG5ZbkZCWlRaQ2NXZElPRTVyWW5GQlpua3lVblZ2UWpaaExVYzJaMGczVGxWaWNVRm1lakJTZFc5Q0xYcFdSelpuU0d4MFoySnhRV1pETW1oMldVSjNTRk5EUVd0SlowOUhRVkZDUVVKSFFqSjRRMU5VTFhkQ2NEWXlVVlppWjBGdlJHMUJjMEo1UVhOQ01rSk5UVngxTURBeU5uTnBaMmc5UkVwM1ltMXRVVzlHYkZsY2RUQXdNalpqYVdROVEwRlJVMUIzUTA1SmNreE5Wblp5TWtORlkwRjZaR2x0WldvMVVtSmpTbEExUnpCdVpIbzJhM0ZhVVVNeE5raGxZbWd6TjFCRllVbFVkMmxYYVdvdE9IZG9WRkZUZVdObFVIRklWRmh0Tkhkb1lWSk5OM0pJZFhCUklpeGJiblZzYkN4dWRXeHNMRzUxYkd3c0ltaDBkSEJ6T2k4dlpHbHpjR3hoZVdGa2N5MW1iM0p0WVhSekxtZHZiMmRzWlhWelpYSmpiMjUwWlc1MExtTnZiUzloWkhNdmNISmxkbWxsZHk5amIyNTBaVzUwTG1welAyTnNhV1Z1ZEQxM2RHRmNkVEF3TWpadlltWjFjMk5oZEdWa1EzVnpkRzl0WlhKSlpEMHpOelUxTVRZek1ETXhYSFV3TURJMlkzSmxZWFJwZG1WSlpEMDBOVGd4TVRrMk1EazROVGRjZFRBd01qWjJaWEp6YVc5dVNXUTlNRngxTURBeU5tRmtSM0p2ZFhCRGNtVmhkR2wyWlVsa1BUUXhPRGd6T1RZME5EYzNPVngxTURBeU5taDBiV3hRWVhKbGJuUkpaRDF3Y21WMkxUQmNkVEF3TWpab1pXbG5hSFE5TWpVd1hIVXdNREkyZDJsa2RHZzlNekF3WEhVd01ESTJjMmxuUFVGRGFWWkNYM2RrVFdoTE5FVXlURGt5ZERFeUxUUkNVMk5tYm14MmVVTnZTa0VpWFN4dWRXeHNMRzUxYkd3c01Td2lRVXBmTFZwT1ZUTjFjbEZKTmpWVGJuQndaMDFGVEdwWmVISkJhMGROWHpac2IyOUNTV2h3Y0dKdFduWk1iazUyWW0xc05HTkhWbnBrU0Vwc1kwZFdjMkpIVm5sTWJVNTJZbFJKU1VOQlZWUkhTVzFWUVZKU1EwWXlUbWhNV0VJeFdXa3dNazE2V1RGT1JGRTBUbFJuTTAxRVFYbE5lbU40VTBKS1dVRnVRVUpsWjFWSlFrSkpRa3BoWjBKQlVTSXNJamszTmpVME9UYzVNVElpWFYxZExGc3hMREVzTVYxZEpaN3hkZFdtVFRiTjd4T2hOT1Jaa3RNVFRTV3UzTnZjY1dBZU4zSWw4aFh6ZDNzTjlEdWVBTUI4eE81V1ZsaG1LVXNNSjE4emFHa0JPZ1ZQQWlXNE1fY09EVUJyczR1b0pOdGxXVHdmNzR5cW9sMmx0di1INm1WUWZaOWZwcjEtMlkxd2piVFI2ZXFHa3JXWEp1aW1KNnFlN0tWUVdEYmpCa1V0dDBsTFpiclpUS1otZHRXRGdzS1JqcVpPenM5NDE5d0VIZWN6OWRDbkQ0eUVuTnZjTUcxdGQ0ejRQWjVOLURGbUpKTlhXbXI0cFpvbjBfNHBiSXAyT0M4OTF2Szk5b0VyaGR3T0U2Sm1HcXVVR0pxZHl3czFyeU9CZ0ZEdHFsbUlOX3pobVFuN05CZUhqTldVSHpDcXRsZGs3LUxjVEtpMEhVOWJFemlySG9GbjRLTUg4ZyxVenpYTUlqQlZpUU5iOG9lOXdvUnV3JmFtcDtzb3VyY2U9ZGlzcGxheVwiIGlkPVwiYWJnbFwiIHRhcmdldD1cIl9ibGFua1wiPjxhbXAtaW1nIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudCBpLWFtcGh0bWwtbGF5b3V0XCIgaGVpZ2h0PVwiMTVcIiBpLWFtcGh0bWwtbGF5b3V0PVwiZml4ZWRcIiBpLWFtcGh0bWwtc3NyPVwiXCIgc3JjPVwiaHR0cHM6Ly90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9pbWFnZXMvYWRjaG9pY2VzL2VuLnBuZ1wiIHN0eWxlPVwid2lkdGg6NzVweDtoZWlnaHQ6MTVweDtcIiB3aWR0aD1cIjc1XCI+PGltZyBjbGFzcz1cImktYW1waHRtbC1maWxsLWNvbnRlbnQgaS1hbXBodG1sLXJlcGxhY2VkLWNvbnRlbnRcIiBkZWNvZGluZz1cImFzeW5jXCIgc3JjPVwiLi9lbi5wbmdcIj48L2FtcC1pbWc+PC9hPjwvZGl2PjxkaXYgY2xhc3M9XCJhYmdiXCIgaWQ9XCJhYmdiXCI+PGEgaHJlZj1cImh0dHBzOi8vYWRzc2V0dGluZ3MuZ29vZ2xlLmNvbS93aHl0aGlzYWQ/cmVhc29ucz1BQjNhZkdFQUFBVWNXMXRiVzI1MWJHd3NXeklzTVRNc01Ua3NNakZkTEc1MWJHd3NiblZzYkN4MGNuVmxMRnNpT0RBMU5ESWlYVjBzVzI1MWJHd3NJbWgwZEhCek9pOHZaMjl2WjJ4bFlXUnpMbWN1Wkc5MVlteGxZMnhwWTJzdWJtVjBMM0JoWjJWaFpDOWpiMjUyWlhKemFXOXVMejloYVQxRFNEZzBMV3RPT1V0WU9EZDNTVFJpV205M1ltUnpZVnB2TVhaeFFUaFdOM0pzUzJWdGJVRjZkREZ2YWs5clp6UlJRVk5EZEhOaGMyaFpUV3RIYjBGSGNqWmZkalZCYzJkQ1FYVkJRMEZMWjBSQlkyZEVRMHR2UlRoUlJsQXdUMjVuUlhoTlNFZGlTMEpFWDNwMVdrUkJhMlIzY2tsbVJUSjBUVGd0YzNGMVQyTTBaa0pMUkRWa1dETjZWbWR5WjNORk5IRlhlbWxYYmxab1FXbHVWbTA1VkRCaGVYVlNhSE5KZW5BNFdGUlFibWh3YUdOMVFtWTVOMFJrUVZnelpFdEZkMWs0YUVGeVJFbGtYMDFxWTJGWWFIbzVOVnBWVUdkRFpEbHZOSFozTm1oQmNIbHNiblo0YWtGaVlVOHROM0Y2VEVabVNERkdjSFZ0TVZSb1QxRllkSFJzVldaT1pHeGpRMFZDVUROemNrZFVXRVpYU0RGcGIwUlVaR2wwWDFkTk1HeFRRbUp1UWt0SmNGbDRkRWsyWkVOdE9EUlhYMVZYVFdoMlUyZFZja04wVURWQ1ZtRnNkMEZYWDBoZlRXRm1NRlpXZGpoUmJFdGZaMHhNUzJsYVgwNW1NM0ZDUVV0MFNEZzFNSGs1Tkhad0xVUkdWRmxRWTAxUU4wbERiVmQwWm5GUVMzUm5lbk5ZYjBKTlQzaDNSVFZ5U1dWWVRVNVNXVFJ6ZW5kQlZIUjNkSFUzT1ZGTVowSkJSMmRDWjB0QlFqVTJlaTFaYTBKeFFXVlBlbWgxYjBJNVdFcEhObWRJYXpsblluRkJaVFpDY1dkSU9FNXJZbkZCWm5reVVuVnZRalpoTFVjMlowZzNUbFZpY1VGbWVqQlNkVzlDTFhwV1J6Wm5TR3gwWjJKeFFXWkRNbWgyV1VKM1NGTkRRV3RKWjA5SFFWRkNRVUpIUWpKNFExTlVMWGRDY0RZeVVWWmlaMEZ2UkcxQmMwSjVRWE5DTWtKTlRWeDFNREF5Tm5OcFoyZzlSRXAzWW0xdFVXOUdiRmxjZFRBd01qWmphV1E5UTBGUlUxQjNRMDVKY2t4TlZuWnlNa05GWTBGNlpHbHRaV28xVW1KalNsQTFSekJ1WkhvMmEzRmFVVU14TmtobFltZ3pOMUJGWVVsVWQybFhhV290T0hkb1ZGRlRlV05sVUhGSVZGaHROSGRvWVZKTk4zSklkWEJSSWl4YmJuVnNiQ3h1ZFd4c0xHNTFiR3dzSW1oMGRIQnpPaTh2WkdsemNHeGhlV0ZrY3kxbWIzSnRZWFJ6TG1kdmIyZHNaWFZ6WlhKamIyNTBaVzUwTG1OdmJTOWhaSE12Y0hKbGRtbGxkeTlqYjI1MFpXNTBMbXB6UDJOc2FXVnVkRDEzZEdGY2RUQXdNalp2WW1aMWMyTmhkR1ZrUTNWemRHOXRaWEpKWkQwek56VTFNVFl6TURNeFhIVXdNREkyWTNKbFlYUnBkbVZKWkQwME5UZ3hNVGsyTURrNE5UZGNkVEF3TWpaMlpYSnphVzl1U1dROU1GeDFNREF5Tm1Ga1IzSnZkWEJEY21WaGRHbDJaVWxrUFRReE9EZ3pPVFkwTkRjM09WeDFNREF5Tm1oMGJXeFFZWEpsYm5SSlpEMXdjbVYyTFRCY2RUQXdNalpvWldsbmFIUTlNalV3WEhVd01ESTJkMmxrZEdnOU16QXdYSFV3TURJMmMybG5QVUZEYVZaQ1gzZGtUV2hMTkVVeVREa3lkREV5TFRSQ1UyTm1ibXgyZVVOdlNrRWlYU3h1ZFd4c0xHNTFiR3dzTVN3aVFVcGZMVnBPVlROMWNsRkpOalZUYm5Cd1owMUZUR3BaZUhKQmEwZE5YelpzYjI5Q1NXaHdjR0p0V25aTWJrNTJZbTFzTkdOSFZucGtTRXBzWTBkV2MySkhWbmxNYlU1MllsUkpTVU5CVlZSSFNXMVZRVkpTUTBZeVRtaE1XRUl4V1drd01rMTZXVEZPUkZFMFRsUm5NMDFFUVhsTmVtTjRVMEpLV1VGdVFVSmxaMVZKUWtKSlFrcGhaMEpCVVNJc0lqazNOalUwT1RjNU1USWlYVjFkTEZzeExERXNNVjFkSlo3eGRkV21UVGJON3hPaE5PUlprdE1UVFNXdTNOdmNjV0FlTjNJbDhoWHpkM3NOOUR1ZUFNQjh4TzVXVmxobUtVc01KMTh6YUdrQk9nVlBBaVc0TV9jT0RVQnJzNHVvSk50bFdUd2Y3NHlxb2wybHR2LUg2bVZRZlo5ZnByMS0yWTF3amJUUjZlcUdrcldYSnVpbUo2cWU3S1ZRV0RiakJrVXR0MGxMWmJyWlRLWi1kdFdEZ3NLUmpxWk96czk0MTl3RUhlY3o5ZENuRDR5RW5OdmNNRzF0ZDR6NFBaNU4tREZtSkpOWFdtcjRwWm9uMF80cGJJcDJPQzg5MXZLOTlvRXJoZHdPRTZKbUdxdVVHSnFkeXdzMXJ5T0JnRkR0cWxtSU5femhtUW43TkJlSGpOV1VIekNxdGxkazctTGNUS2kwSFU5YkV6aXJIb0ZuNEtNSDhnLFV6elhNSWpCVmlRTmI4b2U5d29SdXcmYW1wO3NvdXJjZT1kaXNwbGF5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGFtcC1pbWcgY2xhc3M9XCJpLWFtcGh0bWwtbGF5b3V0LWZpeGVkIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50IGktYW1waHRtbC1sYXlvdXRcIiBoZWlnaHQ9XCIxNVwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIGktYW1waHRtbC1zc3I9XCJcIiBzcmM9XCJodHRwczovL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2ltYWdlcy9hZGNob2ljZXMvaWNvbi5wbmdcIiBzdHlsZT1cIndpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7XCIgd2lkdGg9XCIxNVwiPjxpbWcgY2xhc3M9XCJpLWFtcGh0bWwtZmlsbC1jb250ZW50IGktYW1waHRtbC1yZXBsYWNlZC1jb250ZW50XCIgZGVjb2Rpbmc9XCJhc3luY1wiIHNyYz1cIi4vaWNvbi5wbmdcIj48L2FtcC1pbWc+PC9hPjwvZGl2PjwvZGl2PjxhbXAtYW5hbHl0aWNzIGNsYXNzPVwiaS1hbXBodG1sLWxheW91dC1maXhlZCBpLWFtcGh0bWwtbGF5b3V0LXNpemUtZGVmaW5lZCBpLWFtcGh0bWwtZWxlbWVudFwiIGktYW1waHRtbC1sYXlvdXQ9XCJmaXhlZFwiIHN0eWxlPVwid2lkdGg6MXB4O2hlaWdodDoxcHg7XCIgdHJpZ2dlcj1cImltbWVkaWF0ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGhpZGRlbj1cIlwiPjxzY3JpcHQgdHlwZT1cImFwcGxpY2F0aW9uL2pzb25cIj57XCJyZXF1ZXN0c1wiOiB7XCJyZXBvcnROb0xhYmVsSW5zdGFuY2VcIjogXCJodHRwczovL2dvb2dsZWFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvY29udmVyc2lvbi8/YWk9Q0g4NC1rTjlLWDg3d0k0Ylpvd2Jkc2FabzF2cUE4VjdybEtlbW1BenQxb2pPa2c0UUFTQ3RzYXNoWU1rR29BR3I2X3Y1QXNnQkF1QUNBS2dEQWNnRENLb0U4UUZQME9uZ0V4TUhHYktCRF96dVpEQWtkd3JJZkUydE04LXNxdU9jNGZCS0Q1ZFgzelZncmdzRTRxV3ppV25WaEFpblZtOVQwYXl1UmhzSXpwOFhUUG5ocGhjdUJmOTdEZEFYM2RLRXdZOGhBckRJZF9NamNhWGh6OTVaVVBnQ2Q5bzR2dzZoQXB5bG52eGpBYmFPLTdxekxGZkgxRnB1bTFUaE9RWHR0bFVmTmRsY0NFQlAzc3JHVFhGV0gxaW9EVGRpdF9XTTBsU0JibkJLSXBZeHRJNmRDbTg0V19VV01odlNnVXJDdFA1QlZhbHdBV19IX01hZjBWVnY4UWxLX2dMTEtpWl9OZjNxQkFLdEg4NTB5OTR2cC1ERlRZUGNNUDdJQ21XdGZxUEt0Z3pzWG9CTU94d0U1ckllWE1OUlk0c3p3QVR0d3R1NzlRTGdCQUdnQmdLQUI1NnotWWtCcUFlT3podW9COVhKRzZnSGs5Z2JxQWU2QnFnSDhOa2JxQWZ5MlJ1b0I2YS1HNmdIN05VYnFBZnowUnVvQi16Vkc2Z0hsdGdicUFmQzJodllCd0hTQ0FrSWdPR0FRQkFCR0IyeENTVC13QnA2MlFWYmdBb0RtQXNCeUFzQjJCTU0mc2lnaD1ESndibW1Rb0ZsWSZjaWQ9Q0FRU1B3Q05JckxNVnZyMkNFY0F6ZGltZWo1UmJjSlA1RzBuZHo2a3FaUUMxNkhlYmgzN1BFYUlUd2lXaWotOHdoVFFTeWNlUHFIVFhtNHdoYVJNN3JIdXBRJmNpZD1DQVFTUHdDTklyTE1WdnIyQ0VjQXpkaW1lajVSYmNKUDVHMG5kejZrcVpRQzE2SGViaDM3UEVhSVR3aVdpai04d2hUUVN5Y2VQcUhUWG00d2hhUk03ckh1cFEmbGFiZWw9JHtsYWJlbH1cIixcInJlcG9ydExhYmVsSW5zdGFuY2VcIjogXCJodHRwczovL2dvb2dsZWFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvY29udmVyc2lvbi8/YWk9Q0g4NC1rTjlLWDg3d0k0Ylpvd2Jkc2FabzF2cUE4VjdybEtlbW1BenQxb2pPa2c0UUFTQ3RzYXNoWU1rR29BR3I2X3Y1QXNnQkF1QUNBS2dEQWNnRENLb0U4UUZQME9uZ0V4TUhHYktCRF96dVpEQWtkd3JJZkUydE04LXNxdU9jNGZCS0Q1ZFgzelZncmdzRTRxV3ppV25WaEFpblZtOVQwYXl1UmhzSXpwOFhUUG5ocGhjdUJmOTdEZEFYM2RLRXdZOGhBckRJZF9NamNhWGh6OTVaVVBnQ2Q5bzR2dzZoQXB5bG52eGpBYmFPLTdxekxGZkgxRnB1bTFUaE9RWHR0bFVmTmRsY0NFQlAzc3JHVFhGV0gxaW9EVGRpdF9XTTBsU0JibkJLSXBZeHRJNmRDbTg0V19VV01odlNnVXJDdFA1QlZhbHdBV19IX01hZjBWVnY4UWxLX2dMTEtpWl9OZjNxQkFLdEg4NTB5OTR2cC1ERlRZUGNNUDdJQ21XdGZxUEt0Z3pzWG9CTU94d0U1ckllWE1OUlk0c3p3QVR0d3R1NzlRTGdCQUdnQmdLQUI1NnotWWtCcUFlT3podW9COVhKRzZnSGs5Z2JxQWU2QnFnSDhOa2JxQWZ5MlJ1b0I2YS1HNmdIN05VYnFBZnowUnVvQi16Vkc2Z0hsdGdicUFmQzJodllCd0hTQ0FrSWdPR0FRQkFCR0IyeENTVC13QnA2MlFWYmdBb0RtQXNCeUFzQjJCTU0mc2lnaD1ESndibW1Rb0ZsWSZjaWQ9Q0FRU1B3Q05JckxNVnZyMkNFY0F6ZGltZWo1UmJjSlA1RzBuZHo2a3FaUUMxNkhlYmgzN1BFYUlUd2lXaWotOHdoVFFTeWNlUHFIVFhtNHdoYVJNN3JIdXBRJmNpZD1DQVFTUHdDTklyTE1WdnIyQ0VjQXpkaW1lajVSYmNKUDVHMG5kejZrcVpRQzE2SGViaDM3UEVhSVR3aVdpai04d2hUUVN5Y2VQcUhUWG00d2hhUk03ckh1cFEmbGFiZWw9JHtsYWJlbH0mbGFiZWxfaW5zdGFuY2U9JHtsYWJlbEluc3RhbmNlfSZjYnQ9QUpfLVpOVTN1clFJNjVTbnBwZ01FTGpZeHJBa0dNXzZsb29CSWhwcGJtWnZMbk52Ym1sNGNHVnpkSEpsY0dWc2JHVnlMbU52YlRJSUNBVVRHSW1VQVJSQ0YyTmhMWEIxWWkwMk16WTFORFE0TlRnM01EQXlNemN4U0JKWUFuQUJlZ1VJQkJJQkphZ0JBUVwifSxcInRyYW5zcG9ydFwiOiB7XCJiZWFjb25cIjogZmFsc2UsXCJ4aHJwb3N0XCI6IGZhbHNlLFwiaW1hZ2VcIjogdHJ1ZX0sXCJ0cmlnZ2Vyc1wiOiB7XCJ0cmFja011dGVcIjoge1wib25cIjogXCJjbGlja1wiLFwic2VsZWN0b3JcIjogXCJsYWJlbFtmb3I9J3NwcjEnXVwiLFwicmVxdWVzdFwiOiBcInJlcG9ydE5vTGFiZWxJbnN0YW5jZVwifSxcInRyYWNrUmVwb3J0QWRcIjoge1wib25cIjogXCJjbGlja1wiLFwic2VsZWN0b3JcIjogXCJsYWJlbFtmb3I9J3NwcjInXVwiLFwicmVxdWVzdFwiOiBcInJlcG9ydExhYmVsSW5zdGFuY2VcIn0sXCJ0cmFja1N1cnZleVJlc3BvbnNlXCI6IHtcIm9uXCI6IFwiY2xpY2tcIixcInNlbGVjdG9yXCI6IFwibGFiZWxbZm9yPSdzcHIzJ11cIixcInJlcXVlc3RcIjogXCJyZXBvcnRMYWJlbEluc3RhbmNlXCJ9LFwidHJhY2tXaHlUaGlzQWRcIjoge1wib25cIjogXCJjbGlja1wiLFwic2VsZWN0b3JcIjogXCIjc2J0blwiLFwicmVxdWVzdFwiOiBcInJlcG9ydExhYmVsSW5zdGFuY2VcIn19fTwvc2NyaXB0PjwvYW1wLWFuYWx5dGljcz48Zm9ybSBhY3Rpb249XCJodHRwczovL2cuY28vXCIgY2xhc3M9XCJzdiBqbSBhbXAtYW5pbWF0ZSBhYmdmIHBlbiBpLWFtcGh0bWwtZm9ybVwiIGlkPVwibXRhXCIgdGFyZ2V0PVwiX2JsYW5rXCIgbm92YWxpZGF0ZT1cIlwiPjxpbnB1dCBpZD1cInNwcjBcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxpbnB1dCBpZD1cInNwcjFcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxpbnB1dCBpZD1cInNwcjJcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxpbnB1dCBpZD1cInNwcjNcIiBuYW1lPVwiYVwiIHR5cGU9XCJyYWRpb1wiPjxsYWJlbCBjbGFzcz1cImNiYiBwZWFcIiBkYXRhLXZhcnMtbGFiZWw9XCJ1c2VyX2ZlZWRiYWNrX21lbnVfaW50ZXJhY3Rpb25cIiBmb3I9XCJzcHIxXCIgaWQ9XCJjYmJcIj48c3ZnIGhlaWdodD1cIjE1XCIgd2lkdGg9XCIxNVwiIHhtbG5zPVwiLy93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0wLDBsMTUsMGwwLDE1bC0xNSwwWlwiIGZpbGw9XCIjY2RjY2NjXCI+PC9wYXRoPjxwYXRoIGQ9XCJNMy4yNSwzLjI1bDguNSw4LjVNMTEuNzUsMy4yNWwtOC41LDguNVwiIHN0cm9rZT1cIiMwMGFlY2RcIiBzdHJva2Utd2lkdGg9XCIxLjI1XCI+PC9wYXRoPjwvc3ZnPjwvbGFiZWw+PGRpdiBjbGFzcz1cInBuIGFiZ2ZcIiBpZD1cInNwdjFcIj48YW1wLWZpdC10ZXh0IGNsYXNzPVwiZmwgaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50IGktYW1waHRtbC1sYXlvdXRcIiBoZWlnaHQ9XCIyNTBcIiBpLWFtcGh0bWwtbGF5b3V0PVwicmVzcG9uc2l2ZVwiIGxheW91dD1cInJlc3BvbnNpdmVcIiBtYXgtZm9udC1zaXplPVwiMjBcIiBtaW4tZm9udC1zaXplPVwiOFwiIHdpZHRoPVwiMzAwXCI+PGktYW1waHRtbC1zaXplciBzdHlsZT1cImRpc3BsYXk6YmxvY2s7cGFkZGluZy10b3A6ODMuMzMzMyU7XCIgc2xvdD1cImktYW1waHRtbC1zdmNcIj48L2ktYW1waHRtbC1zaXplcj48ZGl2IGNsYXNzPVwiaS1hbXBodG1sLWZpbGwtY29udGVudCBpLWFtcGh0bWwtZml0LXRleHQtY29udGVudFwiIHN0eWxlPVwiei1pbmRleDogMjtcIj48ZGl2IHN0eWxlPVwibGluZS1oZWlnaHQ6IDEuMTVlbTsgZm9udC1zaXplOiAyMHB4O1wiPjxkaXYgY2xhc3M9XCJjbG9zZVwiIGlkPVwibWVudS1kaXNtaXNzXCI+PGxhYmVsIGZvcj1cInNwcjBcIj48c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj48cGF0aCBjbGFzcz1cIm5hdGl2ZS1hcnJvd1wiIGQ9XCJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnpcIj48L3BhdGg+PC9zdmc+PC9sYWJlbD48L2Rpdj48ZGl2IGlkPVwidGlcIj48c3BhbiBjbGFzcz1cImN0XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPkFkcyBieSA8L2ZvbnQ+PC9mb250PjxzdmcgZmlsbD1cIiMwMDAwMDBcIiB2aWV3Qm94PVwiMCAwIDYwIDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNy41IDE2LjI5Yy00LjA3IDAtNy40OS0zLjMxLTcuNDktNy4zOFMzLjQzIDEuNTMgNy41IDEuNTNjMi4yNSAwIDMuODUuODggNS4wNiAyLjAzbC0xLjQyIDEuNDJjLS44Ny0uODEtMi4wNC0xLjQ0LTMuNjQtMS40NC0yLjk3IDAtNS4yOSAyLjQtNS4yOSA1LjM3czIuMzIgNS4zNyA1LjI5IDUuMzdjMS45MyAwIDMuMDMtLjc3IDMuNzMtMS40OC41OC0uNTguOTUtMS40IDEuMS0yLjU0SDcuNVY4LjI0aDYuNzljLjA3LjM2LjExLjc5LjExIDEuMjYgMCAxLjUxLS40MSAzLjM5LTEuNzUgNC43Mi0xLjMgMS4zNS0yLjk1IDIuMDctNS4xNSAyLjA3em0xNy43NS00Ljc2YzAgMi43NC0yLjEzIDQuNzUtNC43NSA0Ljc1cy00Ljc1LTIuMDItNC43NS00Ljc1YzAtMi43NSAyLjEzLTQuNzUgNC43NS00Ljc1czQuNzUgMiA0Ljc1IDQuNzV6bS0yLjA4IDBjMC0xLjcxLTEuMjQtMi44OC0yLjY3LTIuODhzLTIuNjcgMS4xNy0yLjY3IDIuODhjMCAxLjY5IDEuMjQgMi44OCAyLjY3IDIuODhzMi42Ny0xLjE4IDIuNjctMi44OHptMTMuMDggMGMwIDIuNzQtMi4xMyA0Ljc1LTQuNzUgNC43NXMtNC43NS0yLjAyLTQuNzUtNC43NWMwLTIuNzUgMi4xMy00Ljc1IDQuNzUtNC43NXM0Ljc1IDIgNC43NSA0Ljc1em0tMi4wOCAwYzAtMS43MS0xLjI0LTIuODgtMi42Ny0yLjg4cy0yLjY3IDEuMTctMi42NyAyLjg4YzAgMS42OSAxLjI0IDIuODggMi42NyAyLjg4czIuNjctMS4xOCAyLjY3LTIuODh6bTEyLjU4LTQuNDZ2OC41M2MwIDMuNTEtMi4wNyA0Ljk1LTQuNTIgNC45NS0yLjMgMC0zLjY5LTEuNTUtNC4yMS0yLjgxbDEuODItLjc2Yy4zMi43NyAxLjEyIDEuNjkgMi4zOSAxLjY5IDEuNTcgMCAyLjU0LS45NyAyLjU0LTIuNzl2LS42OGgtLjA3Yy0uNDcuNTgtMS4zNyAxLjA4LTIuNSAxLjA4LTIuMzggMC00LjU2LTIuMDctNC41Ni00Ljc0IDAtMi42OCAyLjE4LTQuNzcgNC41Ni00Ljc3IDEuMTMgMCAyLjAzLjUgMi41IDEuMDZoLjA3di0uNzZoMS45OHptLTEuODQgNC40OGMwLTEuNjctMS4xMi0yLjktMi41NC0yLjktMS40NCAwLTIuNjUgMS4yMi0yLjY1IDIuOSAwIDEuNjYgMS4yMSAyLjg2IDIuNjUgMi44NiAxLjQzLjAxIDIuNTQtMS4yIDIuNTQtMi44NnptNS44OS05LjUyVjE2aC0yLjA5VjIuMDNoMi4wOXptOC40OSAxMS4wN2wxLjYyIDEuMDhjLS41Mi43Ny0xLjc4IDIuMTEtMy45NiAyLjExLTIuNyAwLTQuNzItMi4wOS00LjcyLTQuNzUgMC0yLjgzIDIuMDMtNC43NSA0LjQ4LTQuNzUgMi40NyAwIDMuNjcgMS45NiA0LjA3IDMuMDJsLjIyLjU0LTYuMzYgMi42M2MuNDkuOTUgMS4yNCAxLjQ0IDIuMyAxLjQ0IDEuMDcgMCAxLjgxLS41MyAyLjM1LTEuMzJ6bS00Ljk5LTEuNzFsNC4yNS0xLjc2Yy0uMjMtLjU5LS45NC0xLjAxLTEuNzYtMS4wMS0xLjA2IDAtMi41NC45My0yLjQ5IDIuNzd6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMCAwaDYydjI0SDB6XCIgZmlsbD1cIm5vbmVcIj48L3BhdGg+PC9zdmc+PC9zcGFuPjwvZGl2PjxkaXYgaWQ9XCJidG5zXCI+PGxhYmVsIGRhdGEtdmFycy1sYWJlbD1cInVzZXJfZmVlZGJhY2tfbWVudV9vcHRpb25cIiBkYXRhLXZhcnMtbGFiZWwtaW5zdGFuY2U9XCIxXCIgZm9yPVwic3ByMlwiPjxhIGNsYXNzPVwiYnRuXCIgaWQ9XCJyYnRuXCI+PHNwYW4+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPlNlbmQgZmVlZGJhY2s8L2ZvbnQ+PC9mb250Pjwvc3Bhbj48L2E+PC9sYWJlbD48bGFiZWw+PGEgY2xhc3M9XCJidG5cIiBkYXRhLXZhcnMtbGFiZWw9XCJjbG9zZWJ1dHRvbl93aHl0aGlzYWRfY2xpY2tcIiBkYXRhLXZhcnMtbGFiZWwtaW5zdGFuY2U9XCIxXCIgaHJlZj1cImh0dHBzOi8vYWRzc2V0dGluZ3MuZ29vZ2xlLmNvbS93aHl0aGlzYWQ/cmVhc29ucz1BQjNhZkdFQUFBVWNXMXRiVzI1MWJHd3NXeklzTVRNc01Ua3NNakZkTEc1MWJHd3NiblZzYkN4MGNuVmxMRnNpT0RBMU5ESWlYVjBzVzI1MWJHd3NJbWgwZEhCek9pOHZaMjl2WjJ4bFlXUnpMbWN1Wkc5MVlteGxZMnhwWTJzdWJtVjBMM0JoWjJWaFpDOWpiMjUyWlhKemFXOXVMejloYVQxRFNEZzBMV3RPT1V0WU9EZDNTVFJpV205M1ltUnpZVnB2TVhaeFFUaFdOM0pzUzJWdGJVRjZkREZ2YWs5clp6UlJRVk5EZEhOaGMyaFpUV3RIYjBGSGNqWmZkalZCYzJkQ1FYVkJRMEZMWjBSQlkyZEVRMHR2UlRoUlJsQXdUMjVuUlhoTlNFZGlTMEpFWDNwMVdrUkJhMlIzY2tsbVJUSjBUVGd0YzNGMVQyTTBaa0pMUkRWa1dETjZWbWR5WjNORk5IRlhlbWxYYmxab1FXbHVWbTA1VkRCaGVYVlNhSE5KZW5BNFdGUlFibWh3YUdOMVFtWTVOMFJrUVZnelpFdEZkMWs0YUVGeVJFbGtYMDFxWTJGWWFIbzVOVnBWVUdkRFpEbHZOSFozTm1oQmNIbHNiblo0YWtGaVlVOHROM0Y2VEVabVNERkdjSFZ0TVZSb1QxRllkSFJzVldaT1pHeGpRMFZDVUROemNrZFVXRVpYU0RGcGIwUlVaR2wwWDFkTk1HeFRRbUp1UWt0SmNGbDRkRWsyWkVOdE9EUlhYMVZYVFdoMlUyZFZja04wVURWQ1ZtRnNkMEZYWDBoZlRXRm1NRlpXZGpoUmJFdGZaMHhNUzJsYVgwNW1NM0ZDUVV0MFNEZzFNSGs1Tkhad0xVUkdWRmxRWTAxUU4wbERiVmQwWm5GUVMzUm5lbk5ZYjBKTlQzaDNSVFZ5U1dWWVRVNVNXVFJ6ZW5kQlZIUjNkSFUzT1ZGTVowSkJSMmRDWjB0QlFqVTJlaTFaYTBKeFFXVlBlbWgxYjBJNVdFcEhObWRJYXpsblluRkJaVFpDY1dkSU9FNXJZbkZCWm5reVVuVnZRalpoTFVjMlowZzNUbFZpY1VGbWVqQlNkVzlDTFhwV1J6Wm5TR3gwWjJKeFFXWkRNbWgyV1VKM1NGTkRRV3RKWjA5SFFWRkNRVUpIUWpKNFExTlVMWGRDY0RZeVVWWmlaMEZ2UkcxQmMwSjVRWE5DTWtKTlRWeDFNREF5Tm5OcFoyZzlSRXAzWW0xdFVXOUdiRmxjZFRBd01qWmphV1E5UTBGUlUxQjNRMDVKY2t4TlZuWnlNa05GWTBGNlpHbHRaV28xVW1KalNsQTFSekJ1WkhvMmEzRmFVVU14TmtobFltZ3pOMUJGWVVsVWQybFhhV290T0hkb1ZGRlRlV05sVUhGSVZGaHROSGRvWVZKTk4zSklkWEJSSWl4YmJuVnNiQ3h1ZFd4c0xHNTFiR3dzSW1oMGRIQnpPaTh2WkdsemNHeGhlV0ZrY3kxbWIzSnRZWFJ6TG1kdmIyZHNaWFZ6WlhKamIyNTBaVzUwTG1OdmJTOWhaSE12Y0hKbGRtbGxkeTlqYjI1MFpXNTBMbXB6UDJOc2FXVnVkRDEzZEdGY2RUQXdNalp2WW1aMWMyTmhkR1ZrUTNWemRHOXRaWEpKWkQwek56VTFNVFl6TURNeFhIVXdNREkyWTNKbFlYUnBkbVZKWkQwME5UZ3hNVGsyTURrNE5UZGNkVEF3TWpaMlpYSnphVzl1U1dROU1GeDFNREF5Tm1Ga1IzSnZkWEJEY21WaGRHbDJaVWxrUFRReE9EZ3pPVFkwTkRjM09WeDFNREF5Tm1oMGJXeFFZWEpsYm5SSlpEMXdjbVYyTFRCY2RUQXdNalpvWldsbmFIUTlNalV3WEhVd01ESTJkMmxrZEdnOU16QXdYSFV3TURJMmMybG5QVUZEYVZaQ1gzZGtUV2hMTkVVeVREa3lkREV5TFRSQ1UyTm1ibXgyZVVOdlNrRWlYU3h1ZFd4c0xHNTFiR3dzTVN3aVFVcGZMVnBPVlROMWNsRkpOalZUYm5Cd1owMUZUR3BaZUhKQmEwZE5YelpzYjI5Q1NXaHdjR0p0V25aTWJrNTJZbTFzTkdOSFZucGtTRXBzWTBkV2MySkhWbmxNYlU1MllsUkpTVU5CVlZSSFNXMVZRVkpTUTBZeVRtaE1XRUl4V1drd01rMTZXVEZPUkZFMFRsUm5NMDFFUVhsTmVtTjRVMEpLV1VGdVFVSmxaMVZKUWtKSlFrcGhaMEpCVVNJc0lqazNOalUwT1RjNU1USWlYVjFkTEZzeExERXNNVjFkSlo3eGRkV21UVGJON3hPaE5PUlprdE1UVFNXdTNOdmNjV0FlTjNJbDhoWHpkM3NOOUR1ZUFNQjh4TzVXVmxobUtVc01KMTh6YUdrQk9nVlBBaVc0TV9jT0RVQnJzNHVvSk50bFdUd2Y3NHlxb2wybHR2LUg2bVZRZlo5ZnByMS0yWTF3amJUUjZlcUdrcldYSnVpbUo2cWU3S1ZRV0RiakJrVXR0MGxMWmJyWlRLWi1kdFdEZ3NLUmpxWk96czk0MTl3RUhlY3o5ZENuRDR5RW5OdmNNRzF0ZDR6NFBaNU4tREZtSkpOWFdtcjRwWm9uMF80cGJJcDJPQzg5MXZLOTlvRXJoZHdPRTZKbUdxdVVHSnFkeXdzMXJ5T0JnRkR0cWxtSU5femhtUW43TkJlSGpOV1VIekNxdGxkazctTGNUS2kwSFU5YkV6aXJIb0ZuNEtNSDhnLFV6elhNSWpCVmlRTmI4b2U5d29SdXcmYW1wO3NvdXJjZT1kaXNwbGF5XCIgaWQ9XCJzYnRuXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPldoeSB0aGlzIGFkPyZuYnNwOzwvZm9udD48L2ZvbnQ+PHN2ZyBmaWxsPVwiIzAwMDAwMFwiIGlkPVwic2lcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgeG1sbnM9XCIvL3d3dy53My5vcmcvMjAwMC9zdmdcIj48Y2lyY2xlIGN4PVwiNlwiIGN5PVwiNlwiIHI9XCIwLjY3XCI+PC9jaXJjbGU+PHBhdGggZD1cIk00LjIsMTEuM1EzLjMsMTEuOCwzLjMsMTAuNzVMMy4zLDQuMVEzLjMsMy4xLDQuMywzLjVMMTAuNCw3LjBRMTIuMCw3LjUsMTAuNCw4LjBMNi42NSwxMC4wTDYuNjUsNy43NWEwLjY1LDAuNjUsMCwxLDAsLTEuMywwTDUuMzUsMTAuNzVhMC45LDAuOSwwLDAsMCwxLjMsMC44TDEyLjcsOC4yUTEzLjcsNy41LDEyLjcsNi43TDMuMywxLjZRMi4yLDEuMywxLjgsMi41TDEuOCwxMi41UTIuMiwxMy45LDMuMywxMy4zTDQuOCwxMi41QTAuMywwLjMsMCwxLDAsNC4yLDExLjNaXCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2E+PC9sYWJlbD48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgbGVmdDogMHB4OyB6LWluZGV4OiAxOyB2aXNpYmlsaXR5OiBoaWRkZW47IGxpbmUtaGVpZ2h0OiAxLjE1ZW07IGZvbnQtc2l6ZTogMjBweDtcIj48ZGl2IGNsYXNzPVwiY2xvc2VcIiBpZD1cIm1lbnUtZGlzbWlzc1wiPjxsYWJlbCBmb3I9XCJzcHIwXCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+PHBhdGggY2xhc3M9XCJuYXRpdmUtYXJyb3dcIiBkPVwiTTIwIDExSDcuODNsNS41OS01LjU5TDEyIDRsLTggOCA4IDggMS40MS0xLjQxTDcuODMgMTNIMjB2LTJ6XCI+PC9wYXRoPjwvc3ZnPjwvbGFiZWw+PC9kaXY+PGRpdiBpZD1cInRpXCI+PHNwYW4gY2xhc3M9XCJjdFwiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj5BZHMgYnkgPC9mb250PjwvZm9udD48c3ZnIGZpbGw9XCIjMDAwMDAwXCIgdmlld0JveD1cIjAgMCA2MCAyNFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTcuNSAxNi4yOWMtNC4wNyAwLTcuNDktMy4zMS03LjQ5LTcuMzhTMy40MyAxLjUzIDcuNSAxLjUzYzIuMjUgMCAzLjg1Ljg4IDUuMDYgMi4wM2wtMS40MiAxLjQyYy0uODctLjgxLTIuMDQtMS40NC0zLjY0LTEuNDQtMi45NyAwLTUuMjkgMi40LTUuMjkgNS4zN3MyLjMyIDUuMzcgNS4yOSA1LjM3YzEuOTMgMCAzLjAzLS43NyAzLjczLTEuNDguNTgtLjU4Ljk1LTEuNCAxLjEtMi41NEg3LjVWOC4yNGg2Ljc5Yy4wNy4zNi4xMS43OS4xMSAxLjI2IDAgMS41MS0uNDEgMy4zOS0xLjc1IDQuNzItMS4zIDEuMzUtMi45NSAyLjA3LTUuMTUgMi4wN3ptMTcuNzUtNC43NmMwIDIuNzQtMi4xMyA0Ljc1LTQuNzUgNC43NXMtNC43NS0yLjAyLTQuNzUtNC43NWMwLTIuNzUgMi4xMy00Ljc1IDQuNzUtNC43NXM0Ljc1IDIgNC43NSA0Ljc1em0tMi4wOCAwYzAtMS43MS0xLjI0LTIuODgtMi42Ny0yLjg4cy0yLjY3IDEuMTctMi42NyAyLjg4YzAgMS42OSAxLjI0IDIuODggMi42NyAyLjg4czIuNjctMS4xOCAyLjY3LTIuODh6bTEzLjA4IDBjMCAyLjc0LTIuMTMgNC43NS00Ljc1IDQuNzVzLTQuNzUtMi4wMi00Ljc1LTQuNzVjMC0yLjc1IDIuMTMtNC43NSA0Ljc1LTQuNzVzNC43NSAyIDQuNzUgNC43NXptLTIuMDggMGMwLTEuNzEtMS4yNC0yLjg4LTIuNjctMi44OHMtMi42NyAxLjE3LTIuNjcgMi44OGMwIDEuNjkgMS4yNCAyLjg4IDIuNjcgMi44OHMyLjY3LTEuMTggMi42Ny0yLjg4em0xMi41OC00LjQ2djguNTNjMCAzLjUxLTIuMDcgNC45NS00LjUyIDQuOTUtMi4zIDAtMy42OS0xLjU1LTQuMjEtMi44MWwxLjgyLS43NmMuMzIuNzcgMS4xMiAxLjY5IDIuMzkgMS42OSAxLjU3IDAgMi41NC0uOTcgMi41NC0yLjc5di0uNjhoLS4wN2MtLjQ3LjU4LTEuMzcgMS4wOC0yLjUgMS4wOC0yLjM4IDAtNC41Ni0yLjA3LTQuNTYtNC43NCAwLTIuNjggMi4xOC00Ljc3IDQuNTYtNC43NyAxLjEzIDAgMi4wMy41IDIuNSAxLjA2aC4wN3YtLjc2aDEuOTh6bS0xLjg0IDQuNDhjMC0xLjY3LTEuMTItMi45LTIuNTQtMi45LTEuNDQgMC0yLjY1IDEuMjItMi42NSAyLjkgMCAxLjY2IDEuMjEgMi44NiAyLjY1IDIuODYgMS40My4wMSAyLjU0LTEuMiAyLjU0LTIuODZ6bTUuODktOS41MlYxNmgtMi4wOVYyLjAzaDIuMDl6bTguNDkgMTEuMDdsMS42MiAxLjA4Yy0uNTIuNzctMS43OCAyLjExLTMuOTYgMi4xMS0yLjcgMC00LjcyLTIuMDktNC43Mi00Ljc1IDAtMi44MyAyLjAzLTQuNzUgNC40OC00Ljc1IDIuNDcgMCAzLjY3IDEuOTYgNC4wNyAzLjAybC4yMi41NC02LjM2IDIuNjNjLjQ5Ljk1IDEuMjQgMS40NCAyLjMgMS40NCAxLjA3IDAgMS44MS0uNTMgMi4zNS0xLjMyem0tNC45OS0xLjcxbDQuMjUtMS43NmMtLjIzLS41OS0uOTQtMS4wMS0xLjc2LTEuMDEtMS4wNiAwLTIuNTQuOTMtMi40OSAyLjc3elwiPjwvcGF0aD48cGF0aCBkPVwiTTAgMGg2MnYyNEgwelwiIGZpbGw9XCJub25lXCI+PC9wYXRoPjwvc3ZnPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPVwiYnRuc1wiPjxsYWJlbCBkYXRhLXZhcnMtbGFiZWw9XCJ1c2VyX2ZlZWRiYWNrX21lbnVfb3B0aW9uXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiMVwiIGZvcj1cInNwcjJcIj48YSBjbGFzcz1cImJ0blwiIGlkPVwicmJ0blwiPjxzcGFuPlNlbmQgZmVlZGJhY2s8L3NwYW4+PC9hPjwvbGFiZWw+PGxhYmVsPjxhIGNsYXNzPVwiYnRuXCIgZGF0YS12YXJzLWxhYmVsPVwiY2xvc2VidXR0b25fd2h5dGhpc2FkX2NsaWNrXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiMVwiIGhyZWY9XCJodHRwczovL2Fkc3NldHRpbmdzLmdvb2dsZS5jb20vd2h5dGhpc2FkP3JlYXNvbnM9QUIzYWZHRUFBQVVjVzF0YlcyNTFiR3dzV3pJc01UTXNNVGtzTWpGZExHNTFiR3dzYm5Wc2JDeDBjblZsTEZzaU9EQTFORElpWFYwc1cyNTFiR3dzSW1oMGRIQnpPaTh2WjI5dloyeGxZV1J6TG1jdVpHOTFZbXhsWTJ4cFkyc3VibVYwTDNCaFoyVmhaQzlqYjI1MlpYSnphVzl1THo5aGFUMURTRGcwTFd0T09VdFlPRGQzU1RSaVdtOTNZbVJ6WVZwdk1YWnhRVGhXTjNKc1MyVnRiVUY2ZERGdmFrOXJaelJSUVZORGRITmhjMmhaVFd0SGIwRkhjalpmZGpWQmMyZENRWFZCUTBGTFowUkJZMmRFUTB0dlJUaFJSbEF3VDI1blJYaE5TRWRpUzBKRVgzcDFXa1JCYTJSM2NrbG1SVEowVFRndGMzRjFUMk0wWmtKTFJEVmtXRE42Vm1keVozTkZOSEZYZW1sWGJsWm9RV2x1Vm0wNVZEQmhlWFZTYUhOSmVuQTRXRlJRYm1od2FHTjFRbVk1TjBSa1FWZ3paRXRGZDFrNGFFRnlSRWxrWDAxcVkyRllhSG81TlZwVlVHZERaRGx2TkhaM05taEJjSGxzYm5aNGFrRmlZVTh0TjNGNlRFWm1TREZHY0hWdE1WUm9UMUZZZEhSc1ZXWk9aR3hqUTBWQ1VETnpja2RVV0VaWFNERnBiMFJVWkdsMFgxZE5NR3hUUW1KdVFrdEpjRmw0ZEVrMlpFTnRPRFJYWDFWWFRXaDJVMmRWY2tOMFVEVkNWbUZzZDBGWFgwaGZUV0ZtTUZaV2RqaFJiRXRmWjB4TVMybGFYMDVtTTNGQ1FVdDBTRGcxTUhrNU5IWndMVVJHVkZsUVkwMVFOMGxEYlZkMFpuRlFTM1JuZW5OWWIwSk5UM2gzUlRWeVNXVllUVTVTV1RSemVuZEJWSFIzZEhVM09WRk1aMEpCUjJkQ1owdEJRalUyZWkxWmEwSnhRV1ZQZW1oMWIwSTVXRXBITm1kSWF6bG5ZbkZCWlRaQ2NXZElPRTVyWW5GQlpua3lVblZ2UWpaaExVYzJaMGczVGxWaWNVRm1lakJTZFc5Q0xYcFdSelpuU0d4MFoySnhRV1pETW1oMldVSjNTRk5EUVd0SlowOUhRVkZDUVVKSFFqSjRRMU5VTFhkQ2NEWXlVVlppWjBGdlJHMUJjMEo1UVhOQ01rSk5UVngxTURBeU5uTnBaMmc5UkVwM1ltMXRVVzlHYkZsY2RUQXdNalpqYVdROVEwRlJVMUIzUTA1SmNreE5Wblp5TWtORlkwRjZaR2x0WldvMVVtSmpTbEExUnpCdVpIbzJhM0ZhVVVNeE5raGxZbWd6TjFCRllVbFVkMmxYYVdvdE9IZG9WRkZUZVdObFVIRklWRmh0Tkhkb1lWSk5OM0pJZFhCUklpeGJiblZzYkN4dWRXeHNMRzUxYkd3c0ltaDBkSEJ6T2k4dlpHbHpjR3hoZVdGa2N5MW1iM0p0WVhSekxtZHZiMmRzWlhWelpYSmpiMjUwWlc1MExtTnZiUzloWkhNdmNISmxkbWxsZHk5amIyNTBaVzUwTG1welAyTnNhV1Z1ZEQxM2RHRmNkVEF3TWpadlltWjFjMk5oZEdWa1EzVnpkRzl0WlhKSlpEMHpOelUxTVRZek1ETXhYSFV3TURJMlkzSmxZWFJwZG1WSlpEMDBOVGd4TVRrMk1EazROVGRjZFRBd01qWjJaWEp6YVc5dVNXUTlNRngxTURBeU5tRmtSM0p2ZFhCRGNtVmhkR2wyWlVsa1BUUXhPRGd6T1RZME5EYzNPVngxTURBeU5taDBiV3hRWVhKbGJuUkpaRDF3Y21WMkxUQmNkVEF3TWpab1pXbG5hSFE5TWpVd1hIVXdNREkyZDJsa2RHZzlNekF3WEhVd01ESTJjMmxuUFVGRGFWWkNYM2RrVFdoTE5FVXlURGt5ZERFeUxUUkNVMk5tYm14MmVVTnZTa0VpWFN4dWRXeHNMRzUxYkd3c01Td2lRVXBmTFZwT1ZUTjFjbEZKTmpWVGJuQndaMDFGVEdwWmVISkJhMGROWHpac2IyOUNTV2h3Y0dKdFduWk1iazUyWW0xc05HTkhWbnBrU0Vwc1kwZFdjMkpIVm5sTWJVNTJZbFJKU1VOQlZWUkhTVzFWUVZKU1EwWXlUbWhNV0VJeFdXa3dNazE2V1RGT1JGRTBUbFJuTTAxRVFYbE5lbU40VTBKS1dVRnVRVUpsWjFWSlFrSkpRa3BoWjBKQlVTSXNJamszTmpVME9UYzVNVElpWFYxZExGc3hMREVzTVYxZEpaN3hkZFdtVFRiTjd4T2hOT1Jaa3RNVFRTV3UzTnZjY1dBZU4zSWw4aFh6ZDNzTjlEdWVBTUI4eE81V1ZsaG1LVXNNSjE4emFHa0JPZ1ZQQWlXNE1fY09EVUJyczR1b0pOdGxXVHdmNzR5cW9sMmx0di1INm1WUWZaOWZwcjEtMlkxd2piVFI2ZXFHa3JXWEp1aW1KNnFlN0tWUVdEYmpCa1V0dDBsTFpiclpUS1otZHRXRGdzS1JqcVpPenM5NDE5d0VIZWN6OWRDbkQ0eUVuTnZjTUcxdGQ0ejRQWjVOLURGbUpKTlhXbXI0cFpvbjBfNHBiSXAyT0M4OTF2Szk5b0VyaGR3T0U2Sm1HcXVVR0pxZHl3czFyeU9CZ0ZEdHFsbUlOX3pobVFuN05CZUhqTldVSHpDcXRsZGs3LUxjVEtpMEhVOWJFemlySG9GbjRLTUg4ZyxVenpYTUlqQlZpUU5iOG9lOXdvUnV3JmFtcDtzb3VyY2U9ZGlzcGxheVwiIGlkPVwic2J0blwiIHRhcmdldD1cIl9ibGFua1wiPjxzcGFuPldoeSB0aGlzIGFkPyZuYnNwOzxzdmcgZmlsbD1cIiMwMDAwMDBcIiBpZD1cInNpXCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIHhtbG5zPVwiLy93d3cudzMub3JnLzIwMDAvc3ZnXCI+PGNpcmNsZSBjeD1cIjZcIiBjeT1cIjZcIiByPVwiMC42N1wiPjwvY2lyY2xlPjxwYXRoIGQ9XCJNNC4yLDExLjNRMy4zLDExLjgsMy4zLDEwLjc1TDMuMyw0LjFRMy4zLDMuMSw0LjMsMy41TDEwLjQsNy4wUTEyLjAsNy41LDEwLjQsOC4wTDYuNjUsMTAuMEw2LjY1LDcuNzVhMC42NSwwLjY1LDAsMSwwLC0xLjMsMEw1LjM1LDEwLjc1YTAuOSwwLjksMCwwLDAsMS4zLDAuOEwxMi43LDguMlExMy43LDcuNSwxMi43LDYuN0wzLjMsMS42UTIuMiwxLjMsMS44LDIuNUwxLjgsMTIuNVEyLjIsMTMuOSwzLjMsMTMuM0w0LjgsMTIuNUEwLjMsMC4zLDAsMSwwLDQuMiwxMS4zWlwiPjwvcGF0aD48L3N2Zz48L3NwYW4+PC9hPjwvbGFiZWw+PC9kaXY+PC9kaXY+PC9hbXAtZml0LXRleHQ+PC9kaXY+PGRpdiBjbGFzcz1cInBuIGFiZ2ZcIiBpZD1cInNwdjJcIj48bGFiZWwgY2xhc3M9XCJzYiBzb1wiIGRhdGEtdmFycy1sYWJlbD1cIm11dGVfc3VydmV5X29wdGlvblwiIGRhdGEtdmFycy1sYWJlbC1pbnN0YW5jZT1cIjhcIiBmb3I9XCJzcHIzXCI+PGRpdj48c3Bhbj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+QWQgd2FzIGluYXBwcm9wcmlhdGU8L2ZvbnQ+PC9mb250Pjwvc3Bhbj48L2Rpdj48L2xhYmVsPjxsYWJlbCBjbGFzcz1cInNiIHNvXCIgZGF0YS12YXJzLWxhYmVsPVwibXV0ZV9zdXJ2ZXlfb3B0aW9uXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiMlwiIGZvcj1cInNwcjNcIj48ZGl2PjxzcGFuPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj5TZWVuIHRoaXMgYWQgbXVsdGlwbGUgdGltZXM8L2ZvbnQ+PC9mb250Pjwvc3Bhbj48L2Rpdj48L2xhYmVsPjxsYWJlbCBjbGFzcz1cInNiIHNvXCIgZGF0YS12YXJzLWxhYmVsPVwibXV0ZV9zdXJ2ZXlfb3B0aW9uXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiM1wiIGZvcj1cInNwcjNcIj48ZGl2PjxzcGFuPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj5BZCBjb3ZlcmVkIGNvbnRlbnQ8L2ZvbnQ+PC9mb250Pjwvc3Bhbj48L2Rpdj48L2xhYmVsPjxsYWJlbCBjbGFzcz1cInNiIHNvXCIgZGF0YS12YXJzLWxhYmVsPVwibXV0ZV9zdXJ2ZXlfb3B0aW9uXCIgZGF0YS12YXJzLWxhYmVsLWluc3RhbmNlPVwiN1wiIGZvcj1cInNwcjNcIj48ZGl2PjxzcGFuPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj5Ob3QgaW50ZXJlc3RlZCBpbiB0aGlzIGFkPC9mb250PjwvZm9udD48L3NwYW4+PC9kaXY+PC9sYWJlbD48L2Rpdj48ZGl2IGNsYXNzPVwicG4gYWJnZlwiIGlkPVwic3B2M1wiPjxhbXAtZml0LXRleHQgY2xhc3M9XCJmbCBpLWFtcGh0bWwtbGF5b3V0LXJlc3BvbnNpdmUgaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgaS1hbXBodG1sLWVsZW1lbnQgaS1hbXBodG1sLWxheW91dFwiIGhlaWdodD1cIjI1MFwiIGktYW1waHRtbC1sYXlvdXQ9XCJyZXNwb25zaXZlXCIgbGF5b3V0PVwicmVzcG9uc2l2ZVwiIG1heC1mb250LXNpemU9XCIxN1wiIG1pbi1mb250LXNpemU9XCI4XCIgd2lkdGg9XCIzMDBcIj48aS1hbXBodG1sLXNpemVyIHN0eWxlPVwiZGlzcGxheTpibG9jaztwYWRkaW5nLXRvcDo4My4zMzMzJTtcIiBzbG90PVwiaS1hbXBodG1sLXN2Y1wiPjwvaS1hbXBodG1sLXNpemVyPjxkaXYgY2xhc3M9XCJpLWFtcGh0bWwtZmlsbC1jb250ZW50IGktYW1waHRtbC1maXQtdGV4dC1jb250ZW50XCIgc3R5bGU9XCJ6LWluZGV4OiAyO1wiPjxkaXYgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDE3cHg7XCI+PHNwYW4gaWQ9XCJwY3RcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+VGhhbmtzLiBGZWVkYmFjayBpbXByb3ZlcyBHb29nbGUgYWRzPC9mb250PjwvZm9udD48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgei1pbmRleDogMTsgdmlzaWJpbGl0eTogaGlkZGVuOyBsaW5lLWhlaWdodDogMS4xNWVtOyBmb250LXNpemU6IDE3cHg7XCI+PHNwYW4gaWQ9XCJwY3RcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPjxmb250IHN0eWxlPVwidmVydGljYWwtYWxpZ246IGluaGVyaXQ7XCI+VGhhbmtzLiBGZWVkYmFjayBpbXByb3ZlcyBHb29nbGUgYWRzPC9mb250PjwvZm9udD48L3NwYW4+PC9kaXY+PC9hbXAtZml0LXRleHQ+PC9kaXY+PGRpdiBjbGFzcz1cInBuIGFiZ2ZcIiBpZD1cInNwdjRcIj48YW1wLWZpdC10ZXh0IGNsYXNzPVwiZmwgaS1hbXBodG1sLWxheW91dC1yZXNwb25zaXZlIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50IGktYW1waHRtbC1sYXlvdXRcIiBoZWlnaHQ9XCIyNTBcIiBpLWFtcGh0bWwtbGF5b3V0PVwicmVzcG9uc2l2ZVwiIGxheW91dD1cInJlc3BvbnNpdmVcIiBtYXgtZm9udC1zaXplPVwiMjBcIiBtaW4tZm9udC1zaXplPVwiOFwiIHdpZHRoPVwiMzAwXCI+PGktYW1waHRtbC1zaXplciBzdHlsZT1cImRpc3BsYXk6YmxvY2s7cGFkZGluZy10b3A6ODMuMzMzMyU7XCIgc2xvdD1cImktYW1waHRtbC1zdmNcIj48L2ktYW1waHRtbC1zaXplcj48ZGl2IGNsYXNzPVwiaS1hbXBodG1sLWZpbGwtY29udGVudCBpLWFtcGh0bWwtZml0LXRleHQtY29udGVudFwiIHN0eWxlPVwiei1pbmRleDogMjtcIj48ZGl2IHN0eWxlPVwibGluZS1oZWlnaHQ6IDEuMTVlbTsgZm9udC1zaXplOiAyMHB4O1wiPjxzcGFuIGNsYXNzPVwiY3QgZmN0XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPkFkIGNsb3NlZCBieSA8L2ZvbnQ+PC9mb250PjxzdmcgZmlsbD1cIiMwMDAwMDBcIiB2aWV3Qm94PVwiMCAwIDYwIDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNy41IDE2LjI5Yy00LjA3IDAtNy40OS0zLjMxLTcuNDktNy4zOFMzLjQzIDEuNTMgNy41IDEuNTNjMi4yNSAwIDMuODUuODggNS4wNiAyLjAzbC0xLjQyIDEuNDJjLS44Ny0uODEtMi4wNC0xLjQ0LTMuNjQtMS40NC0yLjk3IDAtNS4yOSAyLjQtNS4yOSA1LjM3czIuMzIgNS4zNyA1LjI5IDUuMzdjMS45MyAwIDMuMDMtLjc3IDMuNzMtMS40OC41OC0uNTguOTUtMS40IDEuMS0yLjU0SDcuNVY4LjI0aDYuNzljLjA3LjM2LjExLjc5LjExIDEuMjYgMCAxLjUxLS40MSAzLjM5LTEuNzUgNC43Mi0xLjMgMS4zNS0yLjk1IDIuMDctNS4xNSAyLjA3em0xNy43NS00Ljc2YzAgMi43NC0yLjEzIDQuNzUtNC43NSA0Ljc1cy00Ljc1LTIuMDItNC43NS00Ljc1YzAtMi43NSAyLjEzLTQuNzUgNC43NS00Ljc1czQuNzUgMiA0Ljc1IDQuNzV6bS0yLjA4IDBjMC0xLjcxLTEuMjQtMi44OC0yLjY3LTIuODhzLTIuNjcgMS4xNy0yLjY3IDIuODhjMCAxLjY5IDEuMjQgMi44OCAyLjY3IDIuODhzMi42Ny0xLjE4IDIuNjctMi44OHptMTMuMDggMGMwIDIuNzQtMi4xMyA0Ljc1LTQuNzUgNC43NXMtNC43NS0yLjAyLTQuNzUtNC43NWMwLTIuNzUgMi4xMy00Ljc1IDQuNzUtNC43NXM0Ljc1IDIgNC43NSA0Ljc1em0tMi4wOCAwYzAtMS43MS0xLjI0LTIuODgtMi42Ny0yLjg4cy0yLjY3IDEuMTctMi42NyAyLjg4YzAgMS42OSAxLjI0IDIuODggMi42NyAyLjg4czIuNjctMS4xOCAyLjY3LTIuODh6bTEyLjU4LTQuNDZ2OC41M2MwIDMuNTEtMi4wNyA0Ljk1LTQuNTIgNC45NS0yLjMgMC0zLjY5LTEuNTUtNC4yMS0yLjgxbDEuODItLjc2Yy4zMi43NyAxLjEyIDEuNjkgMi4zOSAxLjY5IDEuNTcgMCAyLjU0LS45NyAyLjU0LTIuNzl2LS42OGgtLjA3Yy0uNDcuNTgtMS4zNyAxLjA4LTIuNSAxLjA4LTIuMzggMC00LjU2LTIuMDctNC41Ni00Ljc0IDAtMi42OCAyLjE4LTQuNzcgNC41Ni00Ljc3IDEuMTMgMCAyLjAzLjUgMi41IDEuMDZoLjA3di0uNzZoMS45OHptLTEuODQgNC40OGMwLTEuNjctMS4xMi0yLjktMi41NC0yLjktMS40NCAwLTIuNjUgMS4yMi0yLjY1IDIuOSAwIDEuNjYgMS4yMSAyLjg2IDIuNjUgMi44NiAxLjQzLjAxIDIuNTQtMS4yIDIuNTQtMi44NnptNS44OS05LjUyVjE2aC0yLjA5VjIuMDNoMi4wOXptOC40OSAxMS4wN2wxLjYyIDEuMDhjLS41Mi43Ny0xLjc4IDIuMTEtMy45NiAyLjExLTIuNyAwLTQuNzItMi4wOS00LjcyLTQuNzUgMC0yLjgzIDIuMDMtNC43NSA0LjQ4LTQuNzUgMi40NyAwIDMuNjcgMS45NiA0LjA3IDMuMDJsLjIyLjU0LTYuMzYgMi42M2MuNDkuOTUgMS4yNCAxLjQ0IDIuMyAxLjQ0IDEuMDcgMCAxLjgxLS41MyAyLjM1LTEuMzJ6bS00Ljk5LTEuNzFsNC4yNS0xLjc2Yy0uMjMtLjU5LS45NC0xLjAxLTEuNzYtMS4wMS0xLjA2IDAtMi41NC45My0yLjQ5IDIuNzd6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMCAwaDYydjI0SDB6XCIgZmlsbD1cIm5vbmVcIj48L3BhdGg+PC9zdmc+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBsZWZ0OiAwcHg7IHotaW5kZXg6IDE7IHZpc2liaWxpdHk6IGhpZGRlbjsgbGluZS1oZWlnaHQ6IDEuMTVlbTsgZm9udC1zaXplOiAyMHB4O1wiPjxzcGFuIGNsYXNzPVwiY3QgZmN0XCI+PGZvbnQgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcIj48Zm9udCBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1wiPkFkIGNsb3NlZCBieSA8L2ZvbnQ+PC9mb250PjxzdmcgZmlsbD1cIiMwMDAwMDBcIiB2aWV3Qm94PVwiMCAwIDYwIDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNy41IDE2LjI5Yy00LjA3IDAtNy40OS0zLjMxLTcuNDktNy4zOFMzLjQzIDEuNTMgNy41IDEuNTNjMi4yNSAwIDMuODUuODggNS4wNiAyLjAzbC0xLjQyIDEuNDJjLS44Ny0uODEtMi4wNC0xLjQ0LTMuNjQtMS40NC0yLjk3IDAtNS4yOSAyLjQtNS4yOSA1LjM3czIuMzIgNS4zNyA1LjI5IDUuMzdjMS45MyAwIDMuMDMtLjc3IDMuNzMtMS40OC41OC0uNTguOTUtMS40IDEuMS0yLjU0SDcuNVY4LjI0aDYuNzljLjA3LjM2LjExLjc5LjExIDEuMjYgMCAxLjUxLS40MSAzLjM5LTEuNzUgNC43Mi0xLjMgMS4zNS0yLjk1IDIuMDctNS4xNSAyLjA3em0xNy43NS00Ljc2YzAgMi43NC0yLjEzIDQuNzUtNC43NSA0Ljc1cy00Ljc1LTIuMDItNC43NS00Ljc1YzAtMi43NSAyLjEzLTQuNzUgNC43NS00Ljc1czQuNzUgMiA0Ljc1IDQuNzV6bS0yLjA4IDBjMC0xLjcxLTEuMjQtMi44OC0yLjY3LTIuODhzLTIuNjcgMS4xNy0yLjY3IDIuODhjMCAxLjY5IDEuMjQgMi44OCAyLjY3IDIuODhzMi42Ny0xLjE4IDIuNjctMi44OHptMTMuMDggMGMwIDIuNzQtMi4xMyA0Ljc1LTQuNzUgNC43NXMtNC43NS0yLjAyLTQuNzUtNC43NWMwLTIuNzUgMi4xMy00Ljc1IDQuNzUtNC43NXM0Ljc1IDIgNC43NSA0Ljc1em0tMi4wOCAwYzAtMS43MS0xLjI0LTIuODgtMi42Ny0yLjg4cy0yLjY3IDEuMTctMi42NyAyLjg4YzAgMS42OSAxLjI0IDIuODggMi42NyAyLjg4czIuNjctMS4xOCAyLjY3LTIuODh6bTEyLjU4LTQuNDZ2OC41M2MwIDMuNTEtMi4wNyA0Ljk1LTQuNTIgNC45NS0yLjMgMC0zLjY5LTEuNTUtNC4yMS0yLjgxbDEuODItLjc2Yy4zMi43NyAxLjEyIDEuNjkgMi4zOSAxLjY5IDEuNTcgMCAyLjU0LS45NyAyLjU0LTIuNzl2LS42OGgtLjA3Yy0uNDcuNTgtMS4zNyAxLjA4LTIuNSAxLjA4LTIuMzggMC00LjU2LTIuMDctNC41Ni00Ljc0IDAtMi42OCAyLjE4LTQuNzcgNC41Ni00Ljc3IDEuMTMgMCAyLjAzLjUgMi41IDEuMDZoLjA3di0uNzZoMS45OHptLTEuODQgNC40OGMwLTEuNjctMS4xMi0yLjktMi41NC0yLjktMS40NCAwLTIuNjUgMS4yMi0yLjY1IDIuOSAwIDEuNjYgMS4yMSAyLjg2IDIuNjUgMi44NiAxLjQzLjAxIDIuNTQtMS4yIDIuNTQtMi44NnptNS44OS05LjUyVjE2aC0yLjA5VjIuMDNoMi4wOXptOC40OSAxMS4wN2wxLjYyIDEuMDhjLS41Mi43Ny0xLjc4IDIuMTEtMy45NiAyLjExLTIuNyAwLTQuNzItMi4wOS00LjcyLTQuNzUgMC0yLjgzIDIuMDMtNC43NSA0LjQ4LTQuNzUgMi40NyAwIDMuNjcgMS45NiA0LjA3IDMuMDJsLjIyLjU0LTYuMzYgMi42M2MuNDkuOTUgMS4yNCAxLjQ0IDIuMyAxLjQ0IDEuMDcgMCAxLjgxLS41MyAyLjM1LTEuMzJ6bS00Ljk5LTEuNzFsNC4yNS0xLjc2Yy0uMjMtLjU5LS45NC0xLjAxLTEuNzYtMS4wMS0xLjA2IDAtMi41NC45My0yLjQ5IDIuNzd6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMCAwaDYydjI0SDB6XCIgZmlsbD1cIm5vbmVcIj48L3BhdGg+PC9zdmc+PC9zcGFuPjwvZGl2PjwvYW1wLWZpdC10ZXh0PjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj48YW1wLWFuYWx5dGljcyBjbGFzcz1cImktYW1waHRtbC1sYXlvdXQtZml4ZWQgaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgaS1hbXBodG1sLWVsZW1lbnRcIiBpLWFtcGh0bWwtbGF5b3V0PVwiZml4ZWRcIiBzdHlsZT1cIndpZHRoOjFweDtoZWlnaHQ6MXB4O1wiIHRyaWdnZXI9XCJpbW1lZGlhdGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBoaWRkZW49XCJcIj48c2NyaXB0IHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+e1widHJhbnNwb3J0XCI6IHtcImJlYWNvblwiOiBmYWxzZSwgXCJ4aHJwb3N0XCI6IGZhbHNlfSxcInJlcXVlc3RzXCI6IHtcInZpc2liaWxpdHkxXCI6IFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wY3MvYWN0aXZldmlldz94YWk9QUtBT2pzc3JSXzgwSl9VVkVCTko2dkpPMVphYk1aNXF6ZW5BWGVCa1VLSnZ2THVQc0Q3a2s4Z1VGbkw4MVZQQVdOVGlBVW4wTGN4aTNyZ1AyWHJ2YWlFb0hJbUwtOEJFcXZkMlAxM2kxNUVVbE9vVk03RE8wYXRpSkt6WHFOZnZOdyZzYWk9QU1mbC1ZVDhyWS0wR0MwQUkzeHhaT3NteGU0ZldQRVB5ZmVDMkEybUxsa3drX0FUMWVNbXNBYmhGeFB0dmdUOXk2UkFQU2hSeG1XOWpCTi1Dd2tPalBlWGYxSHc2QVdIMXdfNU9jdjh1RUNWSTNPMVdSeUFpcld1NW5xQ1Y3elhDWXdaJnNpZz1DZzBBcktKU3pJNTRTdzJGS1YxTkVBRSZjaWQ9Q0FBU1BlUm9Ga1EzN1JGcDBVMDFJYU1PM0xObHk3QVhMbGJpSF9mTmdvbjFJWjNuQkpjcm01ZkVMNTFDZ0otZm9kRDJndUZmYjZNQmFnWXhKQ2xqN2kwJmlkPWFtcGltJm89JHtlbGVtZW50WH0sJHtlbGVtZW50WX0mZD0ke2VsZW1lbnRXaWR0aH0sJHtlbGVtZW50SGVpZ2h0fSZzcz0ke3NjcmVlbldpZHRofSwke3NjcmVlbkhlaWdodH0mYnM9JHt2aWV3cG9ydFdpZHRofSwke3ZpZXdwb3J0SGVpZ2h0fSZtY3Z0PSR7bWF4Q29udGludW91c1Zpc2libGVUaW1lfSZtdG9zPTAsMCwke21heENvbnRpbnVvdXNWaXNpYmxlVGltZX0sJHttYXhDb250aW51b3VzVmlzaWJsZVRpbWV9LCR7bWF4Q29udGludW91c1Zpc2libGVUaW1lfSZ0b3M9MCwwLCR7dG90YWxWaXNpYmxlVGltZX0sMCwwJnRmcz0ke2ZpcnN0U2VlblRpbWV9JnRscz0ke2xhc3RTZWVuVGltZX0mZz0ke21pblZpc2libGVQZXJjZW50YWdlfSZoPSR7bWF4VmlzaWJsZVBlcmNlbnRhZ2V9JnR0PSR7dG90YWxUaW1lfSZyPXYmYXZtcz1hbXBhJmFkaz0yNDY0Nzk0MDI4XCJ9LFwidHJpZ2dlcnNcIjoge1wiY29udGludW91c1Zpc2libGVcIjoge1wib25cIjogXCJ2aXNpYmxlXCIsXCJyZXF1ZXN0XCI6IFtcInZpc2liaWxpdHkxXCJdLFwicGFyZW50UG9zdE1lc3NhZ2VcIjogXCJpbXByZXNzaW9uLXZpZXdhYmxlXCIsXCJ2aXNpYmlsaXR5U3BlY1wiOiB7XCJzZWxlY3RvclwiOiBcIjpyb290XCIsXCJ2aXNpYmxlUGVyY2VudGFnZU1pblwiOiA1MCxcImNvbnRpbnVvdXNUaW1lTWluXCI6IDEwMDB9fSxcInZpc2liaWxpdHlDaGFuZ2VkXCI6IHtcIm9uXCI6IFwidmlzaWJsZVwiLFwicGFyZW50UG9zdE1lc3NhZ2VcIjogXCJ2aXNpYmlsaXR5LWNoYW5nZWQtJHtpbnRlcnNlY3Rpb25SYXRpb31cIixcInZpc2liaWxpdHlTcGVjXCI6IHtcInJlcGVhdFwiOiB0cnVlLFwic2VsZWN0b3JcIjogXCI6cm9vdFwiLFwidmlzaWJsZVBlcmNlbnRhZ2VUaHJlc2hvbGRzXCI6IFtbMCwwXSxbMCw1XSxbNSwxMF0sWzEwLDE1XSxbMTUsMjBdLFsyMCwyNV0sWzI1LDMwXSxbMzAsMzVdLFszNSw0MF0sWzQwLDQ1XSxbNDUsNTBdLFs1MCw1NV0sWzU1LDYwXSxbNjAsNjVdLFs2NSw3MF0sWzcwLDc1XSxbNzUsODBdLFs4MCw4NV0sWzg1LDkwXSxbOTAsOTVdLFs5NSwxMDBdLFsxMDAsMTAwXV19fSxcImluaUxvYWRcIjoge1wib25cIjogXCJpbmktbG9hZFwiLFwicGFyZW50UG9zdE1lc3NhZ2VcIjogXCJ7XFxcImNcXFwiOlxcXCJzZmNoYW5uZWw0XFxcIixcXFwicFxcXCI6XFxcIntcXFxcXFxcInVpZFxcXFxcXFwiOlxcXFxcXFwiNFxcXFxcXFwiLFxcXFxcXFwid2lkdGhcXFxcXFxcIjoke3Njcm9sbFdpZHRofSxcXFxcXFxcImhlaWdodFxcXFxcXFwiOiR7c2Nyb2xsSGVpZ2h0fX1cXFwiLFxcXCJzXFxcIjpcXFwiY3JlYXRpdmVfZ2VvbWV0cnlfdXBkYXRlXFxcIn1cXG5cIn19fTwvc2NyaXB0PjwvYW1wLWFuYWx5dGljcz48YW1wLWFuYWx5dGljcyBjbGFzcz1cImktYW1waHRtbC1sYXlvdXQtZml4ZWQgaS1hbXBodG1sLWxheW91dC1zaXplLWRlZmluZWQgaS1hbXBodG1sLWVsZW1lbnRcIiBpLWFtcGh0bWwtbGF5b3V0PVwiZml4ZWRcIiBzdHlsZT1cIndpZHRoOjFweDtoZWlnaHQ6MXB4O1wiIHRyaWdnZXI9XCJpbW1lZGlhdGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBoaWRkZW49XCJcIj48c2NyaXB0IHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+e1widHJhbnNwb3J0XCI6IHtcImJlYWNvblwiOiB0cnVlLCBcInhocnBvc3RcIjogZmFsc2V9LFwicmVxdWVzdHNcIjoge1wiYW1wZW9zXCI6IFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wY3MvYWN0aXZldmlldz94YWk9QUtBT2pzc3JSXzgwSl9VVkVCTko2dkpPMVphYk1aNXF6ZW5BWGVCa1VLSnZ2THVQc0Q3a2s4Z1VGbkw4MVZQQVdOVGlBVW4wTGN4aTNyZ1AyWHJ2YWlFb0hJbUwtOEJFcXZkMlAxM2kxNUVVbE9vVk03RE8wYXRpSkt6WHFOZnZOdyZzYWk9QU1mbC1ZVDhyWS0wR0MwQUkzeHhaT3NteGU0ZldQRVB5ZmVDMkEybUxsa3drX0FUMWVNbXNBYmhGeFB0dmdUOXk2UkFQU2hSeG1XOWpCTi1Dd2tPalBlWGYxSHc2QVdIMXdfNU9jdjh1RUNWSTNPMVdSeUFpcld1NW5xQ1Y3elhDWXdaJnNpZz1DZzBBcktKU3pJNTRTdzJGS1YxTkVBRSZjaWQ9Q0FBU1BlUm9Ga1EzN1JGcDBVMDFJYU1PM0xObHk3QVhMbGJpSF9mTmdvbjFJWjNuQkpjcm01ZkVMNTFDZ0otZm9kRDJndUZmYjZNQmFnWXhKQ2xqN2kwJmlkPWFtcGVvcyZvPSR7ZWxlbWVudFh9LCR7ZWxlbWVudFl9JmQ9JHtlbGVtZW50V2lkdGh9LCR7ZWxlbWVudEhlaWdodH0mc3M9JHtzY3JlZW5XaWR0aH0sJHtzY3JlZW5IZWlnaHR9JmJzPSR7dmlld3BvcnRXaWR0aH0sJHt2aWV3cG9ydEhlaWdodH0mbWN2dD0ke21heENvbnRpbnVvdXNWaXNpYmxlVGltZX0mbXRvcz0wLDAsJHttYXhDb250aW51b3VzVmlzaWJsZVRpbWV9LCR7bWF4Q29udGludW91c1Zpc2libGVUaW1lfSwke21heENvbnRpbnVvdXNWaXNpYmxlVGltZX0mdG9zPTAsMCwke3RvdGFsVmlzaWJsZVRpbWV9LDAsMCZ0ZnM9JHtmaXJzdFNlZW5UaW1lfSZ0bHM9JHtsYXN0U2VlblRpbWV9Jmc9JHttaW5WaXNpYmxlUGVyY2VudGFnZX0maD0ke21heFZpc2libGVQZXJjZW50YWdlfSZwdD0ke3BhZ2VMb2FkVGltZX0mdHQ9JHt0b3RhbFRpbWV9JnJwdD0ke25hdlRpbWluZyhuYXZpZ2F0aW9uU3RhcnQsbG9hZEV2ZW50U3RhcnQpfSZyc3Q9JHtuYXZUaW1pbmcobmF2aWdhdGlvblN0YXJ0KX0mcj1kZSZpc2Q9JHtpbml0aWFsU2Nyb2xsRGVwdGh9Jm1zZD0ke21heFNjcm9sbERlcHRofSZhdm1zPWFtcGFcIn0sXCJ0cmlnZ2Vyc1wiOiB7XCJlbmRPZlNlc3Npb25cIjoge1wib25cIjogXCJ2aXNpYmxlXCIsXCJyZXF1ZXN0XCI6IFwiYW1wZW9zXCIsXCJ2aXNpYmlsaXR5U3BlY1wiOiB7XCJyZXBvcnRXaGVuXCI6IFwiZG9jdW1lbnRFeGl0XCIsXCJzZWxlY3RvclwiOiBcIjpyb290XCIsXCJ2aXNpYmxlUGVyY2VudGFnZU1pblwiOiA1MH19fX08L3NjcmlwdD48L2FtcC1hbmFseXRpY3M+PGRpdiBzdHlsZT1cImJvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MzAwcHg7aGVpZ2h0OjI1MHB4O2JhY2tncm91bmQ6aW5pdGlhbDtwb3NpdGlvbjphYnNvbHV0ZTttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZTtpbWFnZS1yZW5kZXJpbmc6cGl4ZWxhdGVkO3otaW5kZXg6MjE0NzQ4MzY0NztiYWNrZ3JvdW5kLWltYWdlOnVybCgmIzM5O2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ3NBQUFBV0JBTUFBQUNybDNpQUFBQUFCbEJNVkVVQUFBRCtBY2lXbVp6V0FBQUFBblJTVGxNQUFwaWRyQlFBQUFCL1NVUkJWQmpUYlZDTEZZUXdDSU1Oc3YrMGR5VWZxazhzSWpWTkU2cStveG44dmpyTURzN0Nkb1A0djduU0hSQlFmTGJ6LzlTZ3haMGNidDJkRTlHbHdHRmQzUlJmZmZVQ3djTGhHMXFFY3NteW5FNGRhdUZwVS9VV1lvOWpON3JqbFhENzhnRHhtaUNKN2RFenk4aEgwTTZzTTVKK2NJOEY3YXdTWHNEOEFTdCtCWkdydjZ2N0FBQUFBRWxGVGtTdVFtQ0MmIzM5Oyk7XCI+PC9kaXY+PGFtcC1waXhlbCBhbGxvdy1zc3ItaW1nPVwiXCIgY2xhc3M9XCJpLWFtcGh0bWwtbGF5b3V0LWZpeGVkIGktYW1waHRtbC1sYXlvdXQtc2l6ZS1kZWZpbmVkIGktYW1waHRtbC1lbGVtZW50XCIgaS1hbXBodG1sLWxheW91dD1cImZpeGVkXCIgaS1hbXBodG1sLXNzcj1cIlwiIHNyYz1cImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L3BhZ2VhZC9hZHZpZXc/YWk9Q2hqYmprTjlLWDg3d0k0Ylpvd2Jkc2FabzF2cUE4VjdybEtlbW1BenQxb2pPa2c0UUFTQ3RzYXNoWU1rR29BR3I2X3Y1QXNnQkF1QUNBS2dEQWNnRENLb0U3Z0ZQME9uZ0V4TUhHYktCRF96dVpEQWtkd3JJZkUydE04LXNxdU9jNGZCS0Q1ZFgzelZncmdzRTRxV3ppV25WaEFpblZtOVQwYXl1UmhzSXpwOFhUUG5ocGhjdUJmOTdEZEFYM2RLRXdZOGhBckRJZF9NamNhWGh6OTVaVVBnQ2Q5bzR2dzZoQXB5bG52eGpBYmFPLTdxekxGZkgxRnB1bTFUaE9RWHR0bFVmTmRsY0NFQlAzc3JHVFhGV0gxaW9EVGRpdF9XTTBsU0JibkJLSXBZeHRJNmRDbTg0V19VV01odlNnVXJDdFA1QlZhbHdBV19IX01hZjBWVnY4UWxLX2dMTEtpWl9OZjNxQkFLdEg4NTB5OTR2cC1ERlRZUGNNUDdJQ21XdGZxUEs5QTdpekUyYTNnbk1BODNSNEo2YndBVHR3dHU3OVFMZ0JBR1NCUVFJQkJnQmtnVUVDQVVZQkpJRkJBZ0ZHQmlTQlFVSUJSaW9BYUFHQW9BSG5yUDVpUUdvQjQ3T0c2Z0gxY2ticUFlVDJCdW9CN29HcUFmdzJSdW9CX0xaRzZnSHByNGJxQWZzMVJ2WUJ3SHlCd1FReWVJVjBnZ0pDSURoZ0VBUUFSZ2RnQW9EeUFzQjJCTU0mYW1wO3NpZ2g9X2NCNmlmTUR6NVUmYW1wO3RwZD1BR1doSm1zTXI5d3VxRkVHRjZSeWtTSGRHeGowWXNudDNmNjRabTlHUzVNVjd0azhBQVwiIHN0eWxlPVwid2lkdGg6MXB4O2hlaWdodDoxcHg7XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGltZyBzcmM9XCIuL2FkdmlldygxKVwiPjwvYW1wLXBpeGVsPjxhbXAtYWQtZXhpdCBjbGFzcz1cImktYW1waHRtbC1sYXlvdXQtY29udGFpbmVyIGktYW1waHRtbC1lbGVtZW50XCIgaS1hbXBodG1sLWxheW91dD1cImNvbnRhaW5lclwiIGlkPVwiZXhpdC1hcGlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48c2NyaXB0IHR5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCI+e1wiZmlsdGVyc1wiOnt9LFwib3B0aW9uc1wiOntcInN0YXJ0VGltaW5nRXZlbnRcIjpcIm5hdmlnYXRpb25TdGFydFwifSxcInRhcmdldHNcIjp7XCJsYW5kaW5nUGFnZVwiOntcImJlaGF2aW9yc1wiOntcImNsaWNrVGFyZ2V0XCI6XCJfdG9wXCJ9LFwiZmlsdGVyc1wiOltdLFwiZmluYWxVcmxcIjpcImh0dHBzOi8vaW5mby5zb25peHBlc3RyZXBlbGxlci5jb20vP2FkZ3JvdXA9MTAwMjUxNjU2NTU3XFx1MDAyNmFkPTQ1ODExOTYwOTg1N1xcdTAwMjZtYXRjaHR5cGU9XFx1MDAyNm5ldHdvcms9ZFxcdTAwMjZrdz1cXHUwMDI2cGxhY2VtZW50PW15Lmp1bm8uY29tXFx1MDAyNnRhcmdldD1cXHUwMDI2YWRwb3NpdGlvbj1ub25lXFx1MDAyNmNhbXBhaWduaWQ9OTc2NTQ5NzkxMlxcdTAwMjZmZWVkaXRlbWlkPVxcdTAwMjZ0YXJnZXRpZD1cXHUwMDI2ZGV2aWNlPWNcXHUwMDI2Z2NsaWQ9RUFJYUlRb2JDaE1JenZqUHpzUEI2d0lWaHV6SUNoM2RtQWtORUFFWUFTQUFFZ0lBT2ZEX0J3RVwiLFwidHJhY2tpbmdVcmxzXCI6W1wiaHR0cHM6Ly93d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20vcGFnZWFkL2FjbGs/c2E9TFxcdTAwMjZhaT1DSDg0LWtOOUtYODd3STRiWm93YmRzYVpvMXZxQThWN3JsS2VtbUF6dDFvak9rZzRRQVNDdHNhc2hZTWtHb0FHcjZfdjVBc2dCQXVBQ0FLZ0RBY2dEQ0tvRThRRlAwT25nRXhNSEdiS0JEX3p1WkRBa2R3cklmRTJ0TTgtc3F1T2M0ZkJLRDVkWDN6VmdyZ3NFNHFXemlXblZoQWluVm05VDBheXVSaHNJenA4WFRQbmhwaGN1QmY5N0RkQVgzZEtFd1k4aEFyRElkX01qY2FYaHo5NVpVUGdDZDlvNHZ3NmhBcHlsbnZ4akFiYU8tN3F6TEZmSDFGcHVtMVRoT1FYdHRsVWZOZGxjQ0VCUDNzckdUWEZXSDFpb0RUZGl0X1dNMGxTQmJuQktJcFl4dEk2ZENtODRXX1VXTWh2U2dVckN0UDVCVmFsd0FXX0hfTWFmMFZWdjhRbEtfZ0xMS2laX05mM3FCQUt0SDg1MHk5NHZwLURGVFlQY01QN0lDbVd0ZnFQS3RnenNYb0JNT3h3RTVySWVYTU5SWTRzendBVHR3dHU3OVFMZ0JBR2dCZ0tBQjU2ei1Za0JxQWVPemh1b0I5WEpHNmdIazlnYnFBZTZCcWdIOE5rYnFBZnkyUnVvQjZhLUc2Z0g3TlVicUFmejBSdW9CLXpWRzZnSGx0Z2JxQWZDMmh2WUJ3SFNDQWtJZ09HQVFCQUJHQjJ4Q1NULXdCcDYyUVZiZ0FvRG1Bc0J5QXNCMkJNTVxcdTAwMjZhZT0xXFx1MDAyNm51bT0xXFx1MDAyNmNpZD1DQUFTUGVSb0ZrUTM3UkZwMFUwMUlhTU8zTE5seTdBWExsYmlIX2ZOZ29uMUlaM25CSmNybTVmRUw1MUNnSi1mb2REMmd1RmZiNk1CYWdZeEpDbGo3aTBcXHUwMDI2c2lnPUFPRDY0XzJjWFNVNTVDLVNNdlV0cFVzYnlyWVZRRjBhaFFcXHUwMDI2Y2xpZW50PWNhLXB1Yi02MzY1NDQ4NTg3MDAyMzcxXFx1MDAyNm5iPV9uYlxcdTAwMjZueD1DTElDS19YXFx1MDAyNm55PUNMSUNLX1lcXHUwMDI2YWN0PTFcXHUwMDI2cmk9MVxcdTAwMjZhZHVybD1odHRwczovL2luZm8uc29uaXhwZXN0cmVwZWxsZXIuY29tLyUzRmFkZ3JvdXAlM0QxMDAyNTE2NTY1NTclMjZhZCUzRDQ1ODExOTYwOTg1NyUyNm1hdGNodHlwZSUzRCUyNm5ldHdvcmslM0RkJTI2a3clM0QlMjZwbGFjZW1lbnQlM0RteS5qdW5vLmNvbSUyNnRhcmdldCUzRCUyNmFkcG9zaXRpb24lM0Rub25lJTI2Y2FtcGFpZ25pZCUzRDk3NjU0OTc5MTIlMjZmZWVkaXRlbWlkJTNEJTI2dGFyZ2V0aWQlM0QlMjZkZXZpY2UlM0RjJTI2Z2NsaWQlM0RFQUlhSVFvYkNoTUl6dmpQenNQQjZ3SVZodXpJQ2gzZG1Ba05FQUVZQVNBQUVnSUFPZkRfQndFXCJdLFwidmFyc1wiOntcIl9uYlwiOntcImRlZmF1bHRWYWx1ZVwiOlwiXCIsXCJpZnJhbWVUcmFuc3BvcnRTaWduYWxcIjpcIlwifX19fX08L3NjcmlwdD48L2FtcC1hZC1leGl0PjwvYm9keT48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE2MjQsICJib2R5U2l6ZSI6IDExMzE4LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxMjk0Mn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDM1Ljc2MiwgInJlY2VpdmUiOiAyLjA2NX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuOTQzWiIsICJ0aW1lIjogNDIuMDMxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDgpLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2NTAsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJheUlVODhmLjZuN1BNYk9WY1dPdmhUbS41UkszWVEwTms0cmpCZ01VLkQwLTE2ODQ5NDI4NzgtMC1BWFBsTkxsQ0EyaFprUWpiaEFBR3o3Q1pja3hJUm9rUWxRbDkxU25HN1FOMzNXR3l5SUhOUnpMZkFSMVZNdEpBdzdQNnlWaXRYdURxTUVkQVg3bjgySlU9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQzIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NWJhYWI4MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVdSQ3FxTFlGaXlRQjZXb0ZycTlNQWs3TkZxZmhwMW5zaUxxeXRqQllmclJSXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09YXlJVTg4Zi42bjdQTWJPVmNXT3ZoVG0uNVJLM1lRME5rNHJqQmdNVS5EMC0xNjg0OTQyODc4LTAtQVhQbE5MbENBMmhaa1FqYmhBQUd6N0NaY2t4SVJva1FsUWw5MVNuRzdRTjMzV0d5eUlITlJ6TGZBUjFWTXRKQXc3UDZ5Vml0WHVEcU1FZEFYN244MkpVPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE4IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg4KS5odG1sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVdSQ3FxTFlGaXlRQjZXb0ZycTlNQWs3TkZxZmhwMW5zaUxxeXRqQllmclJSIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA0ODQ4LCAibWltZVR5cGUiOiAidGV4dC9odG1sIiwgImNvbXByZXNzaW9uIjogMTkxNSwgInRleHQiOiAiPCFET0NUWVBFIGh0bWw+XG48IS0tIHNhdmVkIGZyb20gdXJsPSgwMDE0KWFib3V0OmludGVybmV0IC0tPlxuPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj48c2NyaXB0PnZhciBpbkRhcElGPXRydWUsaW5HcHRJRj10cnVlOzwvc2NyaXB0PjwvaGVhZD48Ym9keSBsZWZ0bWFyZ2luPVwiMFwiIHRvcG1hcmdpbj1cIjBcIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCI+PHNjcmlwdD53aW5kb3cuZGljbmYgPSB7fTs8L3NjcmlwdD48c2NyaXB0IGRhdGEtamM9XCI0MlwiIGRhdGEtamMtdmVyc2lvbj1cInIyMDIwMDgyNlwiPihmdW5jdGlvbigpey8qICBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCAqLyAndXNlIHN0cmljdCc7d2luZG93LnZpZXdSZXE9W107Y29uc3QgYz1hPT57ZmV0Y2goYSx7a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwiLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsbW9kZTpcIm5vLWNvcnNcIn0pLmNhdGNoKCgpPT57e2NvbnN0IGI9bmV3IEltYWdlO2Iuc3JjPWEucmVwbGFjZShcIiZhbXA7XCIsXCImXCIpO3ZpZXdSZXEucHVzaChiKX19KX07d2luZG93LnZ1PWE9PntpZih3aW5kb3cuZmV0Y2gpYyhhKTtlbHNle3tjb25zdCBiPW5ldyBJbWFnZTtiLnNyYz1hLnJlcGxhY2UoXCImYW1wO1wiLFwiJlwiKTt2aWV3UmVxLnB1c2goYil9fX07fSkuY2FsbCh0aGlzKTs8L3NjcmlwdD48c2NyaXB0PnZ1KFwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvcGNzL3ZpZXc/eGFpXFx4M2RBS0FPanN1a0tLNmpsQTZQUUR0MHYtaW8wNHY3SzA1aE01X0FlMGp1OEtyMWxNdXQzODVQRFYtWTlZajVLOUwwUF9UN2Y4Y3lvc2tscGNCZjd3RTczc3poYlZHcDRCYnhRcUx1RUhESnpzZkNaVmpkQXEtMEIxbGtlWlltYnNScVZuanNHd3p0d2ViQVc2R0RFQzNkNDVmbGZVTDE3eUdFZk9rZ0NIODJIN3FTbkxrcTRVYlpMN2N3Mld4bldzSTNiZmZILUE2WVRSQjRUYVJhRy1CSV9RcmdiQmNlcnQ2YXdoQ0I4LVFHYTJyNXdjNG9UVDZZM3JSdFZzSGg1WkUtTmVHOUJqeVhJQmVnNU5nXFx4MjZzYWlcXHgzZEFNZmwtWVMwQzVsTW04VFVoaEN4RTdGdVpWNndUeFFKV0ZwN3dCOGFDQU1JSG1jXzY5VWpNVVE4ODN1dFAxNVBvYktKRzB4VVVVT0dBaDZabG9TVEpyUzg5c0hRZzN5aTR5bFo5UWQ3NWhwbDVFeE4zZF9MVnpoNDh4XzZvcms2V0xfQ1xceDI2c2lnXFx4M2RDZzBBcktKU3pDNHhORFlsdDhuNEVBRVxceDI2dXJsZml4XFx4M2QxXFx4MjZhZHVybFxceDNkXCIpPC9zY3JpcHQ+PGRpdiBjbGFzcz1cIkdvb2dsZUFjdGl2ZVZpZXdJbm5lckNvbnRhaW5lclwiIHN0eWxlPVwibGVmdDowcHg7dG9wOjBweDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO3BvaW50ZXItZXZlbnRzOm5vbmU7ei1pbmRleDotOTk5OTtcIj48L2Rpdj48ZGl2IHN0eWxlPVwiZGlzcGxheTppbmxpbmVcIiBjbGFzcz1cIkdvb2dsZUFjdGl2ZVZpZXdFbGVtZW50XCIgZGF0YS1nb29nbGUtYXYtY3huPVwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wY3MvYWN0aXZldmlldz94YWk9QUtBT2pzczNWalhzQ29wY19sSmRpc3VFRENRR3ZqTmo3NlF2aTNZX1I3VmZhTXRXT3oxNUUxV1lrNHRzWVl0ZEdGX3RwLVltRnkxTlJmd3V5VHY1NU1iOGJwN09xaUxnazlvSGVsS2p2TGNiVS00JmFtcDtzaWc9Q2cwQXJLSlN6RFY4MnplVXBIeWVFQUVcIiBkYXRhLWdvb2dsZS1hdi1hZGs9XCIyODMyNzM1NzM1XCIgZGF0YS1nb29nbGUtYXYtbWV0YWRhdGE9XCJsYT0wJmFtcDt4ZGk9MCZhbXA7XCIgZGF0YS1nb29nbGUtYXYtb3ZlcnJpZGU9XCItMVwiIGRhdGEtZ29vZ2xlLWF2LWRtPVwiMlwiIGRhdGEtZ29vZ2xlLWF2LWltbWVkaWF0ZT1cIlwiIGRhdGEtZ29vZ2xlLWF2LWFpZD1cIjBcIiBkYXRhLWdvb2dsZS1hdi1uYWlkPVwiMVwiIGRhdGEtZ29vZ2xlLWF2LXNsaWZ0PVwiXCIgZGF0YS1nb29nbGUtYXYtY3BtYXY9XCJcIiBkYXRhLWdvb2dsZS1hdi1idHI9XCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wY3Mvdmlldz94YWk9QUtBT2pzdWZ0TDkzMUhvSUpRRlU3eHVkMUdtSXQzOE9ZTjJxX1hmbGxDT0xSSzJiTVpWSmJDM1hwel9Sbk4xNFcyQ1dLTDhxMkhlRTZuT0FhLVNsVklfcGRsdjdkTnUyLVd4Y0JpbW00ZEljMHB4TzBKNVpoUGM3clVoSDUwWXpzTjZpdDR0MHN5VXU1Y3UyQUJHb2YtbTI4ZGU2MHVmVkp0dENXNE8tLXFIWTRNdXEwOWplTEVVUU9FVHVLYTdxWW1HTnc2Z1lKX0k3M1dHZ3M0dTRVZTdNTkpDdVU5LWYwREU5SjFkLVVQMmd2cmJkY2FyaGhVSFo0ZmFFV3NQNkUyUjhTRUNFREhZN1NNSHRxQSZhbXA7c2FpPUFNZmwtWVRxUnFrWDU2R0JmUFBWWTRJT0tMZE1McmhIby1yOGMxRHlOdXZHdHA1WTlVemZJVHFTNjdBME82alRiVXhfQkhUSW1kR3plUk0zVzZiNU91ZjFIQUtmbkR5a3FCa0ROWkJhS1pqdW1OT0JEcmNyR1VDUHpTcHRmcTJWSHFVNyZhbXA7c2lnPUNnMEFyS0pTek8wRUxRUk5fRHhKRUFFJmFtcDt1cmxmaXg9MSZhbXA7YWR1cmw9XCIgZGF0YS1nb29nbGUtYXYtaXRwbD1cIjE5XCIgZGF0YS1nb29nbGUtYXYtcnM9XCI0XCI+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+ZG9jdW1lbnQud3JpdGVsbignPGlucz48c2NyJysnaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCJodHRwczovL3NlcnZpbmcucm9pbWVkaWFjb25zdWx0YW50cy5jb20vc2VydmxldC92aWV3L2Jhbm5lci9qYXZhc2NyaXB0L3pvbmU/emlkPTE4NTAmZnJpZW5kbHk9dHJ1ZSZwaWQ9OSZyZWZyZXNoPTYwJnJlZnJlc2hfbGltaXQ9MSZybXBpZD10cnVlJnJhbmRvbT0xNjc3OTQyMDAzJmVuY29kZT0xJm9yaWdpbj0nK2VuY29kZVVSSUNvbXBvbmVudCgod2luZG93IT10b3AmJndpbmRvdy5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMpP3dpbmRvdy5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnNbd2luZG93LmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGgtMV06ZG9jdW1lbnQubG9jYXRpb24pKycmcmVmZXJyZXI9JmN0dXJsPWh0dHBzOi8vYWRjbGljay5nLmRvdWJsZWNsaWNrLm5ldC9wY3MvY2xpY2slMjUzRnhhaSUyNTNEQUtBT2pzc2pGbTdKZk9CaEZvck1mb3MyaHp5WGRJeFkxdUZBbzB0V1hIa0VobVhUWnZhMzBVVzFKVmxnVVh3Qm1xa0wySTAyMUlLNGUxcEdUZnlHVkV6VVM2Um1VWU9mcEFyWnAwam9CMHJWUkVLSFFjSnBVUTEwVVBseTc2aTRXanEyR1VieEZkamUzRUFiNXMtWXU2SDFvUmx0MVpvSVNoakVJU2plT1ZtWEpRb01mNHhfdjVnRE9WNEN3SS1VZi1McHQ2TFhCc01HU00xQ1hFZHZXemdvWmZGbTZBeTF2bDBpRVNtS0stSnVrMXZBbUZYZU5QVTYwa0kxVzBtUE5yY1VWMTNxVWNvJTI1MjZzYWklMjUzREFNZmwtWVJMbnJjcGxrZEFZODFSdEdkdlNuZkJPQ3dVdG5JQkQ5dE1rZ3JZbHZEcGo4b3MyQzhpSGJITVg1amp3eDFBNFdVdGxvNk1QZ1ZhTmhrX2IyYlVnOUpBcEo3ZTZwM2FubmNLNXlTanVoVTZ1NmlqWDZUM2ZLbkR5SXRGd1hibSUyNTI2c2lnJTI1M0RDZzBBcktKU3pMZmo1V0pwQmw1YUVBRSUyNTI2dXJsZml4JTI1M0QxJTI1MjZhZHVybCUyNTNEXCI+PC9zY3InKydpcHQ+PC9pbnM+Jyk7PC9zY3JpcHQ+PGlucz48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCIuL3pvbmVcIj48L3NjcmlwdD48L2lucz5cbjwvZGl2PjxzY3JpcHQgc3JjPVwiLi9vc2RfbGlzdGVuZXIuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj5vc2RsZm0oLTEsJycsJ0JRUlowa045S1g3THVJb2Jab3diZHNhWm9BQUFBQUJBQk9BSElBUW5BQWdMZ0FnRGdCQUdnQmhiU0NBY0lnT0dBUUJBQicsJycsMjgzMjczNTczNSx0cnVlLCdsYVxceDNkMFxceDI2eGRpXFx4M2QwXFx4MjYnLDMsJ0NBQVNQZVJvOGsyOHFpMzQyN0xPTlFCTVE1T0Fhb0V2cFhhc2dNSE9kZDJwVm00Z0s1N09yLThwOGNIRU52MXowb0x1VGczWGdNOXh1dlFwRlpxdGF5YycsJ2h0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGNzL2FjdGl2ZXZpZXc/eGFpXFx4M2RBS0FPanNzM1ZqWHNDb3BjX2xKZGlzdUVEQ1FHdmpOajc2UXZpM1lfUjdWZmFNdFdPejE1RTFXWWs0dHNZWXRkR0ZfdHAtWW1GeTFOUmZ3dXlUdjU1TWI4YnA3T3FpTGdrOW9IZWxLanZMY2JVLTRcXHgyNnNpZ1xceDNkQ2cwQXJLSlN6RFY4MnplVXBIeWVFQUUnLCcnKTs8L3NjcmlwdD48ZGl2IHN0eWxlPVwiYm90dG9tOjA7cmlnaHQ6MDt3aWR0aDo3MjhweDtoZWlnaHQ6OTBweDtiYWNrZ3JvdW5kOmluaXRpYWwgIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O21heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7bWF4LWhlaWdodDoxMDAlICFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZSAhaW1wb3J0YW50O2ltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWQgIWltcG9ydGFudDt6LWluZGV4OjIxNDc0ODM2NDc7YmFja2dyb3VuZC1pbWFnZTp1cmwoJiMzOTtkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNzQUFBQVdCQU1BQUFDcmwzaUFBQUFBQmxCTVZFVUFBQUQrQWNpV21aeldBQUFBQW5SU1RsTUFBcGlkckJRQUFBQjdTVVJCVkJqVGJWQ0JEY0F3Q01JUC9QL2FWVVhVWkhacE5RWEtBUDdMcWw3ejJwbmdlZHQ3bjRuQVdqa2x3aE1WalNiZGwvWkNVOXZKS20yK0xXVTY2V3FrZktQeFNKeGhaSmVoT0luUkxvNlRFQlEyNVZzUGRFSTRUdlNmSzBGNU1Kd0VmVDdISkdqWDBVNFFpbVhRcFY3cmFrTlc1SVIraS9jQlhGNEY5YitzT2ZNQUFBQUFTVVZPUks1Q1lJST0mIzM5OykgIWltcG9ydGFudDtcIj48L2Rpdj48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjI0LCAiYm9keVNpemUiOiAyOTMzLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA0NTU3fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzkuNjA1LCAicmVjZWl2ZSI6IDIuNDI2fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNy45NTBaIiwgInRpbWUiOiA5NjIuMzIyMDAwMDAwMDAwMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vZGQ4ZmNjYTdhMjVmMDQ4ZDI3NGJjYjFmNzVhZDhhOTUuc2FmZWZyYW1lLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9zYWZlZnJhbWUvMS0wLTM3L2h0bWwvY29udGFpbmVyLmh0bWw/bj0xIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAibiIsICJ2YWx1ZSI6ICIxIn1dLCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIn0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAibmV0OjpFUlJfQUJPUlRFRCJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDI2LjI1OSwgImNvbm5lY3QiOiA0NjcuMjY1LCAic3NsIjogMjYzLjgzOCwgInNlbmQiOiAwLCAid2FpdCI6IDIwNC45NiwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxNy45NTFaIiwgInRpbWUiOiAyMDUuMjY4LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tL3NhZmVmcmFtZS8xLTAtMzcvaHRtbC9jb250YWluZXIuaHRtbD9uPTEiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW3sibmFtZSI6ICJuIiwgInZhbHVlIjogIjEifV0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW10sICJjb250ZW50IjogeyJzaXplIjogLTEsICJtaW1lVHlwZSI6ICJ4LXVua25vd24ifSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IC0xLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAtMSwgIl9mYWlsdXJlVGV4dCI6ICJuZXQ6OkVSUl9BQk9SVEVEIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDIwNS4yNjgsICJyZWNlaXZlIjogLTF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1In0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTcuOTgzWiIsICJ0aW1lIjogNzk2LjA3MiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL3JlZGVzaWduL2NvbW1vbi9mb250cy9PbW5lc0JsYWNrLUl0YWxpYy5vdGYiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJPcmlnaW4iLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2NvbW1vbi1yZWRlc2lnbi5jc3MifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiA0MDQsICJzdGF0dXNUZXh0IjogIk5vdCBGb3VuZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIlJfbVViT183cEczM2ZMVEdaVFZpcWRmVDdZZ3hxd2EwdG9VVmdMTUZ5bnMtMTY4NDk0Mjg3OC0wLUFVdWdzT0NZYVltNXpkSU9OMjk1UTdUV3psWHNCMTNVdllvd2daSlVMLzNuTE5iWStMUjB4RUoyUVBLSEtPQk9Pank1QTJodS8rdzIrWkQ0c0tSekU5Zz0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJFWFBJUkVEIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NWM2YmIzMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibm8tc3RvcmUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1SX21VYk9fN3BHMzNmTFRHWlRWaXFkZlQ3WWd4cXdhMHRvVVZnTE1GeW5zLTE2ODQ5NDI4NzgtMC1BVXVnc09DWWFZbTV6ZElPTjI5NVE3VFd6bFhzQjEzVXZZb3dnWkpVTC8zbkxOYlkrTFIweEVKMlFQS0hLT0JPT2p5NUEyaHUvK3cyK1pENHNLUnpFOWc9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTggR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1Db250ZW50LVR5cGUtT3B0aW9ucyIsICJ2YWx1ZSI6ICJub3NuaWZmIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogLTEsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAibmV0OjpFUlJfQUJPUlRFRCJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA3OTYuMDcyLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3Ljk4N1oiLCAidGltZSI6IDM0Ljk2LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2JsYW5rUGhueC5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjQyLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiQWNWUkROV04zMGwuVjJnSjdKNWh5QzhpamtpMDhLRlVlbGliLnY2V0llcy0xNjg0OTQyODc4LTAtQWJrZTBMZHJVVUtuMFl2TzJXSkR1NmxyVW1ZbmN0UUNKbUVjU2w5VE0xWk1ydjRHWEMwY21Xc3F6NkkrTVg3RTJzZnRTVVZiZnNSQlA4Z1RHZVBnKytVPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MiJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDViZmIxOTM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1QZnRmNHd4YjF6ZXh1OWlvamdtUjlqREd1N1Q3RW1EZ2h0N0dkQnhMNkdNQlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPUFjVlJETldOMzBsLlYyZ0o3SjVoeUM4aWpraTA4S0ZVZWxpYi52NldJZXMtMTY4NDk0Mjg3OC0wLUFia2UwTGRyVVVLbjBZdk8yV0pEdTZsclVtWW5jdFFDSm1FY1NsOVRNMVpNcnY0R1hDMGNtV3NxejZJK01YN0Uyc2Z0U1VWYmZzUkJQOGdUR2VQZysrVT07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOCBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYmxhbmtQaG54Lmh0bWwifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtUGZ0ZjR3eGIxemV4dTlpb2pnbVI5akRHdTdUN0VtRGdodDdHZEJ4TDZHTUIifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDI3NTMsICJtaW1lVHlwZSI6ICJ0ZXh0L2h0bWwiLCAiY29tcHJlc3Npb24iOiAxNDIyLCAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgXCItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOXCI+XG48IS0tIHNhdmVkIGZyb20gdXJsPSgwMDE0KWFib3V0OmludGVybmV0IC0tPlxuPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyXCI+PHN0eWxlPmJvZHl7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDttYXJnaW4tbGVmdDowO21hcmdpbi10b3A6MDt0ZXh0LWRlY29yYXRpb246bm9uZX0ubTExe2ZvbnQtc2l6ZToxMXB4O2NvbG9yOiMwMDB9Lm8ze2ZvbnQtc2l6ZToxMXB4O2NvbG9yOiMwMDB9Lm00MHtmb250LXNpemU6MTFweDtjb2xvcjojMDAwfTwvc3R5bGU+PHNjcmlwdD53aW5kb3cub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiEwfTt2YXIgaW5EYXBJRj0hMCxpbkZJRj0hMCxnbG9iYWw9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBvKHQsbyl7dm9pZCAwIT09bi5hZGRFdmVudExpc3RlbmVyP24uYWRkRXZlbnRMaXN0ZW5lcih0LG8sITEpOnZvaWQgMCE9PW4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoXCJvblwiK3Qsbyl9ZnVuY3Rpb24gaSgpe3ZhciBpPXUuZ2V0QWRQYWdlSW5mbyhuLHQpO251bGwhPT1pJiZ2b2lkIDAhPT1pJiYocj1pLmlkLHZvaWQgMCE9PXR5cGVvZiBpLmNvbnRlbnQmJihkPWkuY29udGVudCksdm9pZCAwIT09dHlwZW9mIGkuY3VzdG9tVmFycyYmKHY9aS5jdXN0b21WYXJzKSxjPWkuYWRSb3RhdGlvbik7Zm9yKHZhciBhIGluIHYpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHYsYSkmJihuW2FdPXZbYV0pO2MmJm8oXCJsb2FkXCIsZSl9ZnVuY3Rpb24gYSgpe3Qud3JpdGUoZCl9ZnVuY3Rpb24gZSgpe3UudG9nZ2xlQWQocixuLHQpfXZhciByPVwiXCIsZD1cIlwiLGM9ITEsdj17fSx1PW4ucGFyZW50Ll9fYXN8fG4udG9wLl9fYXM7cmV0dXJue2luaXQ6aSxkb2l0OmF9fSh3aW5kb3csZG9jdW1lbnQpO2dsb2JhbC5pbml0KCk8L3NjcmlwdD48L2hlYWQ+PGJvZHkgbGVmdG1hcmdpbj1cIjBcIiB0b3BtYXJnaW49XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIG1hcmdpbndpZHRoPVwiMFwiPjxzY3JpcHQ+Z2xvYmFsLmRvaXQoKTwvc2NyaXB0PjxzY3JpcHQ+X3VoPV91aHx8XCJcIixfdWgyPV91aDJ8fFwiXCIsX3VoMz1fdWgzfHxcIlwiLF91aDQ9X3VoNHx8XCJcIixfdWg1PV91aDV8fFwiXCIsX3VoNj1fdWg2fHxcIlwiLF91aDc9X3VoN3x8XCJcIixfdWg4PV91aDh8fFwiXCI7dmFyIGJMb2dnZWRJbj0wIT09X3VoLmxlbmd0aDwvc2NyaXB0PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPmJMb2dnZWRJbiYmZG9jdW1lbnQud3JpdGUoJzxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9waXBwaW8uY29tL2FwaS9zeW5jP3BpZD04Mzg1Jml0PTQmaXY9JytfdWg0K1wiJml0PTQmaXY9XCIrX3VoK1wiJml0PTQmaXY9XCIrX3VoNisnXCIgYXN5bmM+PFxcL3NjcmlwdD4nKTwvc2NyaXB0PjxkaXYgaWQ9XCJzb3Zybl9waXhlbFwiPjwvZGl2PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPmlmKGJMb2dnZWRJbil7dmFyIHBoeF9zb3Zybl9ob2xkZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzb3Zybl9waXhlbFwiKSxwaHhfc292cm5fbmV3X2NhbGw9XCJsY19tZDU9XCIrX3VoNCtcIiZ1Y19tZDU9XCIrX3VoNStcIiZsY19zaGExPVwiK191aCtcIiZ1Y19zaGExPVwiK191aDIrXCImbGNfc2hhMjU2PVwiK191aDYrXCImbGNfZG9tYWluX3NoYTE9XCIrX3VoOCxwaHhfc292cm5faW1nPVwiPGlmcmFtZSBzcmM9J2h0dHBzOi8vaGUubGlqaXQuY29tL21lcmdlP3BpZD01MDM0JiZldmVudF90eXBlPXJlZyZcIitwaHhfc292cm5fbmV3X2NhbGwrXCInIHN0eWxlPSdib3JkZXI6MHB4ICNmZmZmZmYgbm9uZTsnIHNjcm9sbGluZz0nbm8nIGZyYW1lYm9yZGVyPScwJyBtYXJnaW5oZWlnaHQ9JzBweCcgbWFyZ2lud2lkdGg9JzBweCcgaGVpZ2h0PScxcHgnIHdpZHRoPScxcHgnID48L2lmcmFtZT5cIjtwaHhfc292cm5faG9sZGVyLmlubmVySFRNTD1waHhfc292cm5faW1nfTwvc2NyaXB0PjxzY3JpcHQgc3JjPVwiLi90cmF2ZXJzZS1jb250YWluZXIuanMuZG93bmxvYWRcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+YkxvZ2dlZEluJiZUcmF2ZXJzZUNvbnRhaW5lciYmVHJhdmVyc2VDb250YWluZXIuc3RhcnQoe2VtYWlsTWQ1TG93ZXI6X3VoNCxlbWFpbE1kNVVwcGVyOl91aDUsZW1haWxTaGExTG93ZXI6X3VoLGVtYWlsU2hhMVVwcGVyOl91aDIsZW1haWxTaGEyNTZMb3dlcjpfdWg2LGVtYWlsU2hhMjU2VXBwZXI6X3VoN30pPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+YkxvZ2dlZEluJiZkb2N1bWVudC53cml0ZSgnPGltZyBib3JkZXI9XCIwXCIgc3JjPVwiaHR0cHM6Ly9hYS5hZ2tuLmNvbS9hZHNjb3Jlcy9zLnBpeGVsP3NpZD05MTEyMzA0Mjc4JmVtPScrX3VoNCsnIFwiLz4nKTwvc2NyaXB0PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPmJMb2dnZWRJbiYmZG9jdW1lbnQud3JpdGUoJzxpZnJhbWUgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiIGZyYW1lYm9yZGVyPVwiMFwiIHNjcm9sbGluZz1cIm5vXCIgc3JjPVwiaHR0cHM6Ly9qcy1zZWMuaW5kZXh3dy5jb20vdW0vaXhtYXRjaC5odG1sXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIG1hcmdpbmhlaWdodD1cIjBcIiBtYXJnaW53aWR0aD1cIjBcIj48L2lmcmFtZT4nKTwvc2NyaXB0PjwvYm9keT48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE2MTYsICJib2R5U2l6ZSI6IDEzMzEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDI5NDd9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAzMi43MjMsICJyZWNlaXZlIjogMi4yMzd9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE3Ljk5M1oiLCAidGltZSI6IDM5LjEyMiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg5KS5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjUwLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiVHJqM0M1aFBEaTNuNmdsbTdxZ3JoM08zRXBBRnJuNlhLcHQ5WmhtaUpXdy0xNjg0OTQyODc4LTAtQVU1K1RVbys1TE82aGhhRlNNdFhpRFhLVzEyZm93VFpGL2dyNFJ4NkN0WDkzWUJUeWYyVDR2RVF6L0svZWZzRHRKZ2dWSFVkZWV1azUwbFM5WUd5M0RzPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MiJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDVjMmI1NTM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1RTDZORVNZRmlEYXNIRkhqOVFQQWtZSEtUTmhtajRCSlJKeHZWSGhVeTZ1ZVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVRyajNDNWhQRGkzbjZnbG03cWdyaDNPM0VwQUZybjZYS3B0OVpobWlKV3ctMTY4NDk0Mjg3OC0wLUFVNStUVW8rNUxPNmhoYUZTTXRYaURYS1cxMmZvd1RaRi9ncjRSeDZDdFg5M1lCVHlmMlQ0dkVRei9LL2Vmc0R0SmdnVkhVZGVldWs1MGxTOVlHeTNEcz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOCBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoOSkuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1RTDZORVNZRmlEYXNIRkhqOVFQQWtZSEtUTmhtajRCSlJKeHZWSGhVeTZ1ZSJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifV0sICJjb250ZW50IjogeyJzaXplIjogNDQ5MywgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDE4OTEsICJ0ZXh0IjogIjwhRE9DVFlQRSBodG1sPlxuPCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNClhYm91dDppbnRlcm5ldCAtLT5cbjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCI+PHNjcmlwdCBhc3luYz1cIlwiIHJlZmVycmVycG9saWN5PVwidW5zYWZlLXVybFwiIHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBzcmM9XCIuL3NpYy5qcy5kb3dubG9hZFwiPjwvc2NyaXB0PjxzY3JpcHQgYXN5bmM9XCJcIiByZWZlcnJlcnBvbGljeT1cInVuc2FmZS11cmxcIiB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgc3JjPVwiLi9hSHZWV010ZTRyNTRvTWFLbGdZajh1LmpzLmRvd25sb2FkXCI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9XCIuL3JjaXYuanMuZG93bmxvYWRcIj48L3NjcmlwdD48c2NyaXB0PnZhciBpbkRhcElGPXRydWUsaW5HcHRJRj10cnVlOzwvc2NyaXB0PjwvaGVhZD48Ym9keSBsZWZ0bWFyZ2luPVwiMFwiIHRvcG1hcmdpbj1cIjBcIiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCI+PHNjcmlwdD53aW5kb3cuZGljbmYgPSB7fTs8L3NjcmlwdD48c2NyaXB0IGRhdGEtamM9XCI0MlwiIGRhdGEtamMtdmVyc2lvbj1cInIyMDIwMDgyNlwiPihmdW5jdGlvbigpey8qICBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCAqLyAndXNlIHN0cmljdCc7d2luZG93LnZpZXdSZXE9W107Y29uc3QgYz1hPT57ZmV0Y2goYSx7a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwiLHJlZGlyZWN0OlwiZm9sbG93XCIsbWV0aG9kOlwiZ2V0XCIsbW9kZTpcIm5vLWNvcnNcIn0pLmNhdGNoKCgpPT57e2NvbnN0IGI9bmV3IEltYWdlO2Iuc3JjPWEucmVwbGFjZShcIiZhbXA7XCIsXCImXCIpO3ZpZXdSZXEucHVzaChiKX19KX07d2luZG93LnZ1PWE9PntpZih3aW5kb3cuZmV0Y2gpYyhhKTtlbHNle3tjb25zdCBiPW5ldyBJbWFnZTtiLnNyYz1hLnJlcGxhY2UoXCImYW1wO1wiLFwiJlwiKTt2aWV3UmVxLnB1c2goYil9fX07fSkuY2FsbCh0aGlzKTs8L3NjcmlwdD48c2NyaXB0PnZ1KFwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvcGNzL3ZpZXc/eGFpXFx4M2RBS0FPanN2LUtMZkhEaTNyUWxJOTRYd0g4Z3lxeXJqa0tWZnFrQk9ER19hdFdkMVUtMXNrRDAwaTRlZDBLeGxBRjdST2RtTnRqOFNqQ2VKaVJ1RlFfWnh6dGtaWXgyTUQ5bXVMMWo0UGxpS05XWndxTVZUTlpaY0VPUnk5Y19hVmFiZ0lPTTFaemNQSVRkMFRiS0hQcWppNWJkd0Z2Q3VmU2xpUWVxOHpqcGFZSlJJQkdNZzBTRDNTXzVPS3d1Z0lRWTRGOHhaRHY4VWNtem1vc0FNY1JYa0dMZE9qa0NXb2N3Z2hqYThDaF8zU2pzcWhqOXNkRHZDLTJ0VnZ0V0c0WXNnRUNNdzg4a0Nqa3dcXHgyNnNhaVxceDNkQU1mbC1ZUzYtRXBXZ0J4TE5OdXY0MXA2ZXdIdXd6UmcyN01ENTRVUFZzM2pNQU5UWVZBVkhwWURLLTlsTjQ4WG5FZ25ON0E2YW0tVXdfWjExWGdLTjlhSjZ6U2syWldhSzQtUUNJV3RsRnU1Y1RYTmg1QTJUM2I1cWw3aHZKZTVmZk9vXFx4MjZzaWdcXHgzZENnMEFyS0pTekJJS2hyN1hCajAwRUFFXFx4MjZ1cmxmaXhcXHgzZDFcXHgyNmFkdXJsXFx4M2RcIik8L3NjcmlwdD48ZGl2IGNsYXNzPVwiR29vZ2xlQWN0aXZlVmlld0lubmVyQ29udGFpbmVyXCIgc3R5bGU9XCJsZWZ0OjBweDt0b3A6MHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Oi05OTk5O1wiPjwvZGl2PjxkaXYgc3R5bGU9XCJkaXNwbGF5OmlubGluZVwiIGNsYXNzPVwiR29vZ2xlQWN0aXZlVmlld0VsZW1lbnRcIiBkYXRhLWdvb2dsZS1hdi1jeG49XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3Bjcy9hY3RpdmV2aWV3P3hhaT1BS0FPanN2ZFV1eU5yNURlZzNJNlR1M2lONHNlc2VhbFFlbTVXeVB6cnZ2WGQza1IzSDBlTmt2cUo3anhsdnNsM0xUODJ5V2lMNmRCUl9qTnJVamxCRC1RaGhaZUlEam1vV1RaakY0VHY1aWszb0EmYW1wO3NpZz1DZzBBcktKU3pHNWNDb1pXOWpBNEVBRVwiIGRhdGEtZ29vZ2xlLWF2LWFkaz1cIjM0Njc3ODUyMzdcIiBkYXRhLWdvb2dsZS1hdi1tZXRhZGF0YT1cImxhPTAmYW1wO3hkaT0wJmFtcDtcIiBkYXRhLWdvb2dsZS1hdi1vdmVycmlkZT1cIi0xXCIgZGF0YS1nb29nbGUtYXYtZG09XCIyXCIgZGF0YS1nb29nbGUtYXYtaW1tZWRpYXRlPVwiXCIgZGF0YS1nb29nbGUtYXYtYWlkPVwiMFwiIGRhdGEtZ29vZ2xlLWF2LW5haWQ9XCIxXCIgZGF0YS1nb29nbGUtYXYtc2xpZnQ9XCJcIiBkYXRhLWdvb2dsZS1hdi1jcG1hdj1cIlwiIGRhdGEtZ29vZ2xlLWF2LWJ0cj1cImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L3Bjcy92aWV3P3hhaT1BS0FPanN2M1lnWmtFRm5kbmMwZlVOSW9NcXNWYVV6WC10YzdqMGtDYTAxVUlIUXJCYjR1MlRaeGNJZVoxRXJXX0xZUGpicXBtTXZVbW4xX2FKSzV4OGZna2NSR0l1S0dBRlNQck1pRFVIR2lnNVJUWTV1QWQyRHpZazhWZ3VEcFRCMUs0eHRvZ29UMVlmWUVXemI3UW9iaDVSakVtTlNlZm44OUdnT0hibkVtSWtxZ1hrbnAxbl9NbFh2eDRlNEM5UnVnRjlvT0RUYnZlU1E3VDZWRm1IdlNBcWhYU09ZNW5JUTJramVraE1QaEV1cWVnWEcwOUVGY1JSNDkzaWtVSDM1d3h3Vi1wZnBwaUtSYiZhbXA7c2FpPUFNZmwtWVN4QktUOTNnOVBWQzFEYmE4X3RsNVNHbWowY0xodkl4djl0VS1oTEwzSEFONlg5bWtvVXVIQk11bkhUOWpNZHN6MUV2SzZ1VnNFakxOV2hBejE4RkhTd1hvcFFrSi0xR3ZDcndvZDBTWHc0eTNBNUxrQ0R6SF92bndJY1VobSZhbXA7c2lnPUNnMEFyS0pTek1rZGIycTVTQ19iRUFFJmFtcDt1cmxmaXg9MSZhbXA7YWR1cmw9XCIgZGF0YS1nb29nbGUtYXYtaXRwbD1cIjE5XCIgZGF0YS1nb29nbGUtYXYtcnM9XCI0XCI+PCEtLSBCZWdpbiAzM0Fjcm9zcyBSZXZDVFJMIEluVmlldyAyIC0tPlxuPHNjcmlwdD5cbnZhciBUeW50PVR5bnR8fFtdO1R5bnQucHVzaCgnYUh2VldNdGU0cjU0b01hS2xnWWo4dScpO1xuVHludC5jbWQ9VHludC5jbWR8fFtdO1R5bnQuY21kLnB1c2goZnVuY3Rpb24oKXtcblR5bnQuYWRzLmRpc3BsYXkoJycsJycsJ2ludmlldycpO30pO1xuKGZ1bmN0aW9uKCl7dmFyIGgscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbnMuc3JjPSh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w9PT0naHR0cHM6Jz9cbidodHRwcyc6J2h0dHAnKSsnOi8vY2RuLnR5bnQuY29tL3JjaXYuanMnO1xuaD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XG5oLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHMsaCk7fSkoKTtcbjwvc2NyaXB0PlxuPCEtLSBFbmQgMzNBY3Jvc3MgUmV2Q1RSTCBJblZpZXcgLS0+PC9kaXY+PHNjcmlwdCBzcmM9XCIuL29zZF9saXN0ZW5lci5qcy5kb3dubG9hZFwiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPm9zZGxmbSgtMSwnJywnQjZ5SVNqdDlLWDVqbU9ZN0t5UU9lNnBYZ0JRQUFBQUFRQVRnQnlBRUp3QUlDNEFJQTRBUUJvQVlXMGdnSENJRGhnRUFRQVEnLCcnLDM0Njc3ODUyMzcsdHJ1ZSwnbGFcXHgzZDBcXHgyNnhkaVxceDNkMFxceDI2JywzLCdDQUFTUGVSb3AtOVo3YnFOREg0VVQ2X1FCcWtNQ05qZi0tYnF0emdmbXZ5YnQxaDVKSkotRGN1YVhHR3otTHdYUE5idVY5WU1hU3lNbDVUWENDV0xWSWsnLCdodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3Bjcy9hY3RpdmV2aWV3P3hhaVxceDNkQUtBT2pzdmRVdXlOcjVEZWczSTZUdTNpTjRzZXNlYWxRZW01V3lQenJ2dlhkM2tSM0gwZU5rdnFKN2p4bHZzbDNMVDgyeVdpTDZkQlJfak5yVWpsQkQtUWhoWmVJRGptb1dUWmpGNFR2NWlrM29BXFx4MjZzaWdcXHgzZENnMEFyS0pTekc1Y0NvWlc5akE0RUFFJywnJyk7PC9zY3JpcHQ+PGRpdiBzdHlsZT1cImJvdHRvbTowO3JpZ2h0OjA7d2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4O2JhY2tncm91bmQ6aW5pdGlhbCAhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7bWF4LXdpZHRoOjEwMCUgIWltcG9ydGFudDttYXgtaGVpZ2h0OjEwMCUgIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lICFpbXBvcnRhbnQ7aW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZCAhaW1wb3J0YW50O3otaW5kZXg6MjE0NzQ4MzY0NztiYWNrZ3JvdW5kLWltYWdlOnVybCgmIzM5O2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ3NBQUFBV0JBTUFBQUNybDNpQUFBQUFCbEJNVkVVQUFBRCtBY2lXbVp6V0FBQUFBblJTVGxNQUFwaWRyQlFBQUFCOVNVUkJWQmpUYlpHTERjQWdDRVJ4QS9hZnRzaDlJRzB4cVpDZXh4TWovdU1nS3FsMHFzaittNUY1VTFXdGlMVzZnbTZFcXF4MkE2bXQydDdzYldlU0tQTEZmYTNvQzJlSTA2NE4zeWptNVkyeEx6R3d3UjJMMnR3YlJISm1IMjVZKzE1RVlLdVp3dUZIODhiTVNNTEJXNjB6NHA3WDBkSFlKSjVLcFE5cXR3WHpUSmxuWmdBQUFBQkpSVTVFcmtKZ2dnPT0mIzM5OykgIWltcG9ydGFudDtcIj48L2Rpdj48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjI0LCAiYm9keVNpemUiOiAyNjAyLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA0MjI2fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMzYuODU5LCAicmVjZWl2ZSI6IDIuMjYzfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wMDJaIiwgInRpbWUiOiAxLjUwMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L2dwdC9wdWJhZHNfaW1wbF8yMDIwMDgyNzAxLmpzIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiAyNjksICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImRhdGUiLCAidmFsdWUiOiAiTW9uLCAyMiBNYXkgMjAyMyAxMDo1MTo0MSBHTVQifSwgeyJuYW1lIjogImNvbnRlbnQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAieC1jb250ZW50LXR5cGUtb3B0aW9ucyIsICJ2YWx1ZSI6ICJub3NuaWZmIn0sIHsibmFtZSI6ICJhZ2UiLCAidmFsdWUiOiAiMTkwMTc2In0sIHsibmFtZSI6ICJjcm9zcy1vcmlnaW4tcmVzb3VyY2UtcG9saWN5IiwgInZhbHVlIjogImNyb3NzLW9yaWdpbiJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9MjU5MjAwMCxoMy0yOT1cIjo0NDNcIjsgbWE9MjU5MjAwMCJ9LCB7Im5hbWUiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiOTM4NzYifSwgeyJuYW1lIjogIngteHNzLXByb3RlY3Rpb24iLCAidmFsdWUiOiAiMCJ9LCB7Im5hbWUiOiAibGFzdC1tb2RpZmllZCIsICJ2YWx1ZSI6ICJUaHUsIDI3IEF1ZyAyMDIwIDA4OjM5OjQ0IEdNVCJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogInNmZmUifSwgeyJuYW1lIjogInZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJyZXBvcnQtdG8iLCAidmFsdWUiOiAie1wiZ3JvdXBcIjpcImFkcy1ncHQtc2NzXCIsXCJtYXhfYWdlXCI6MjU5MjAwMCxcImVuZHBvaW50c1wiOlt7XCJ1cmxcIjpcImh0dHBzOi8vY3NwLndpdGhnb29nbGUuY29tL2NzcC9yZXBvcnQtdG8vYWRzLWdwdC1zY3NcIn1dfSJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogInRleHQvamF2YXNjcmlwdCJ9LCB7Im5hbWUiOiAiY2FjaGUtY29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIGltbXV0YWJsZSwgbWF4LWFnZT0zMTUzNjAwMCJ9LCB7Im5hbWUiOiAiYWNjZXB0LXJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAidGltaW5nLWFsbG93LW9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJjcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS1yZXBvcnQtb25seSIsICJ2YWx1ZSI6ICJzYW1lLW9yaWdpbjsgcmVwb3J0LXRvPVwiYWRzLWdwdC1zY3NcIiJ9LCB7Im5hbWUiOiAiZXhwaXJlcyIsICJ2YWx1ZSI6ICJUdWUsIDIxIE1heSAyMDI0IDEwOjUxOjQxIEdNVCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyNjc5MzUsICJtaW1lVHlwZSI6ICJ0ZXh0L2phdmFzY3JpcHQiLCAiY29tcHJlc3Npb24iOiAyNjg2NjUsICJ0ZXh0IjogIihmdW5jdGlvbihfKXsvKlxuXG4gQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy5cbiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cbnZhciBjYSxlYSxpYSxrYSxtYSxuYSx0YSx6YSxCYSxJYSxMYSxNYSxOYSxPYSxRYSxTYSxXYSxYYSxZYSxaYSxjYixmYixpYixqYixnYixuYixwYixyYix6YixHYixIYixLYixSYixUYixVYixWYixaYix6LCRiLGFjLGJjLGNjLGRjLHQsZWMsZmMsZ2MsQ2IsaGMsaWMsbWMsbmMsb2MsQ2MsRmMsR2MsRWMsRGMsSWMsSmMsS2MsTGMsQmIsTmMsT2MsUGMsUWMsVGMsSztjYT1mdW5jdGlvbihhKXt2YXIgYj0wPmE7YT1NYXRoLmFicyhhKTt2YXIgYz1hPj4+MDthPU1hdGguZmxvb3IoKGEtYykvNDI5NDk2NzI5Nik7YT4+Pj0wO2ImJihhPX5hPj4+MCxjPSh+Yz4+PjApKzEsNDI5NDk2NzI5NTxjJiYoYz0wLGErKyw0Mjk0OTY3Mjk1PGEmJihhPTApKSk7YWE9YztiYT1hfTtlYT1mdW5jdGlvbihhKXtyZXR1cm4gYT9hLnBhc3NpdmUmJmRhKCk/YTphLmNhcHR1cmV8fCExOiExfTtpYT1mdW5jdGlvbigpe3JldHVybiBmYShfLnIudG9wLFwiR29vZ2xlU2V0TlBBXCIpfHxmYShoYSgpLFwiR29vZ2xlU2V0TlBBXCIpfTtrYT1mdW5jdGlvbihhKXtpZihhIT09amEpdGhyb3cgRXJyb3IoXCJCYWQgc2VjcmV0XCIpO307bWE9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1sYSl0cnl7bGE9bnVsbH1jYXRjaChhKXtsYT1udWxsLGNvbnNvbGUubG9nKGEpfXJldHVybiBsYX07bmE9ZnVuY3Rpb24oYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiKSl0aHJvdyBFcnJvcihcIndyb25nIHR5cGVcIik7fTt0YT1mdW5jdGlvbihhLGIpe3ZhciBjPW9hKGEsYil8fHBhKGEsYik7MT09PV8ucmEoMzk1KSYmYyYmIXNhKGMpJiYoYT1wYShhLGIpLnBhcmVudEVsZW1lbnQpJiZhIT09Yi5ib2R5JiYoYz1hKTtyZXR1cm4gY307emE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuc2xvdCxlPWIuY2EsZj10YShkLGEpO2lmKCFmKXJldHVybiBudWxsO2I9dWEoZik7aWYoIWIpcmV0dXJuIGI7dmFyIGc9Zj09PXBhKGQsYSksaD1nfHwxPT09Xy5yYSgzOTUpLGs9dmEoZnVuY3Rpb24oKXt2YXIgbT1nP3BhKGQsYSk6ZjtyZXR1cm4gbSYmd2EobSx3aW5kb3cpfHx7fX0pO2U9eGEoZSlbMF07dmFyIGw9ITE7QXJyYXkuaXNBcnJheShlKSYmKGw9Yz9oOjA9PWIueCYmXCJjZW50ZXJcIj09aygpW1widGV4dC1hbGlnblwiXSk7bCYmKGIueCs9TWF0aC5yb3VuZChNYXRoLm1heCgwLChnP2YuY2xpZW50V2lkdGg6Zi5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoKS1lWzBdKS8yKSk7aCYmKGIueSs9TWF0aC5yb3VuZChNYXRoLm1pbihwYXJzZUludChrKClbXCJwYWRkaW5nLXRvcFwiXSwxMCl8fDAsZi5jbGllbnRIZWlnaHQpKSxsfHwoYz1mLmNsaWVudFdpZHRoLGIueCs9TWF0aC5yb3VuZChNYXRoLm1pbihwYXJzZUludChrKClbXCJwYWRkaW5nLWxlZnRcIl0sMTApfHwwLGMpKSkpO3JldHVybiBiJiZzYShmKT9iOm5ldyBfLnlhKC0xMjI0NTkzMywtMTIyNDU5MzMpfTtCYT1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3csYz0hMDtjPXZvaWQgMD09PWM/ITE6YztuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gZigpe2cub25sb2FkPW51bGw7Zy5vbmVycm9yPW51bGw7Yi5kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGcpfXZhciBnPWIuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtnLm9ubG9hZD1mdW5jdGlvbigpe2YoKTtkKCl9O2cub25lcnJvcj1mdW5jdGlvbigpe2YoKTtlKHZvaWQgMCl9O2cudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO0FhKGcsYSk7YyYmXCJjb21wbGV0ZVwiIT09Yi5kb2N1bWVudC5yZWFkeVN0YXRlP18udihiLFwibG9hZFwiLGZ1bmN0aW9uKCl7Yi5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGcpfSk6Yi5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGcpfSl9O0lhPWZ1bmN0aW9uKGEpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGMoKXt2YXIgZCxlLGYsZztyZXR1cm4gRGEoYyxmdW5jdGlvbihoKXtzd2l0Y2goaC5qKXtjYXNlIDE6cmV0dXJuIGQ9XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL2dldGNvbmZpZy9zb2Rhcj9zdj0yMDAmdGlkPVwiK2EuaisoXCImdHY9XCIrYS5sK1wiJnN0PVwiKSthLmViLGU9dm9pZCAwLGguQT0yLEVhKGgsRmEoZCksNCk7Y2FzZSA0OmU9aC5vO0dhKGgsMyk7YnJlYWs7Y2FzZSAyOkhhKGgpO2Nhc2UgMzppZighZSlyZXR1cm4gaC5yZXR1cm4odm9pZCAwKTtmPWEub2J8fGUuc29kYXJfcXVlcnlfaWQ7Zz12b2lkIDA9PT1lLnJjX2VuYWJsZT9cIm5cIjplLnJjX2VuYWJsZTtyZXR1cm4gZiYmZS5iZ19oYXNoX2Jhc2VuYW1lJiZlLmJnX2JpbmFyeT9oLnJldHVybih7Y29udGV4dDphLnYsT2M6ZS5iZ19oYXNoX2Jhc2VuYW1lLE5jOmUuYmdfYmluYXJ5LGdkOmEuaitcIl9cIithLmwsb2I6ZixlYjphLmViLEFiOmd9KTpoLnJldHVybih2b2lkIDApfX0pfSl9O0xhPWZ1bmN0aW9uKGEpe0NhKHRoaXMsZnVuY3Rpb24gYygpe3ZhciBkO3JldHVybiBEYShjLGZ1bmN0aW9uKGUpe2lmKDE9PWUuailyZXR1cm4gRWEoZSxJYShhKSwyKTtpZihkPWUubyl7dmFyIGY9XCJzb2RhcjJcIjtmPXZvaWQgMD09PWY/XCJzb2RhcjJcIjpmO3ZhciBnPXdpbmRvdyxoPWcuR29vZ2xlR2NMS2hPbXM7aCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGgucHVzaHx8KGg9Zy5Hb29nbGVHY0xLaE9tcz1bXSk7dmFyIGs9e307aC5wdXNoKChrLl9jdHhfPWQuY29udGV4dCxrLl9iZ3ZfPWQuT2Msay5fYmdwXz1kLk5jLGsuX2xpXz1kLmdkLGsuX2prXz1kLm9iLGsuX3N0Xz1kLmViLGsuX3JjXz1kLkFiLGspKTtpZihoPWcuR29vZ2xlRFg1WUtVU2spZy5Hb29nbGVEWDVZS1VTaz12b2lkIDAsaFsxXSgpO2Y9SmEoS2Ese2Jhc2VuYW1lOmZ9KTtCYShmKX1yZXR1cm4gZS5yZXR1cm4oZCl9KX0pfTtNYT1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLnF1ZXJ5U2VsZWN0b3IoXCJzY3JpcHRbbm9uY2VdXCIpKT9hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpfHxcIlwiOlwiXCJ9O05hPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO2lmKHgoYSw1KSl0cnl7cmV0dXJuIGIubG9jYWxTdG9yYWdlfWNhdGNoKGMpe31yZXR1cm4gbnVsbH07T2E9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ZG9jdW1lbnQ6YjtyZXR1cm4geChhLDUpP2IuY29va2llOm51bGx9O1FhPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/ZG9jdW1lbnQ6YztiPU9hKGIsYyk7cmV0dXJuIG51bGw9PT1iP251bGw6KG5ldyBQYSh7Y29va2llOmJ9KSkuZ2V0KGEpfHxcIlwifTtTYT1mdW5jdGlvbihhKXthPV8uUmEoYS5zcGxpdCgvXFxzKy8pLGZ1bmN0aW9uKGIpe3JldHVybihiPS9eKC0/XFxkKykocHh8JSkkLy5leGVjKGIpKT97dmFsdWU6cGFyc2VGbG9hdChiWzFdKSx0eXBlOmJbMl19Ont2YWx1ZTowLHR5cGU6XCJweFwifX0pO2FbMV09YVsxXXx8YVswXTthWzJdPWFbMl18fGFbMF07YVszXT1hWzNdfHxhWzFdO3JldHVybiBhfTtXYT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm5bMF07YT1cIm51bWJlclwiPT09dHlwZW9mIGE/W2FdOmE7YT1fLlRhKGEsZnVuY3Rpb24oYil7cmV0dXJuXCJudW1iZXJcIj09PXR5cGVvZiBiJiYwPD1iJiYxPj1iPyEwOiExfSk7VWEoYSk7VmEoYSxmdW5jdGlvbihiLGMpe3JldHVybiBiLWN9KTtyZXR1cm4gYX07WGE9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYyl7fXJldHVybiBiP3t0b3A6Yi50b3AscmlnaHQ6Yi5yaWdodCxib3R0b206Yi5ib3R0b20sbGVmdDpiLmxlZnQsd2lkdGg6Yi53aWR0aHx8Yi5yaWdodC1iLmxlZnQsaGVpZ2h0OmIuaGVpZ2h0fHxiLmJvdHRvbS1iLnRvcH06e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLHdpZHRoOjAsaGVpZ2h0OjB9fTtZYT1mdW5jdGlvbihhKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGF8fFwic3RyaW5nXCI9PT10eXBlb2YgYX07WmE9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2Ugdm9pZCAwOmNhc2UgbnVsbDpjYXNlIDI6cmV0dXJuITE7Y2FzZSAwOmNhc2UgMTpyZXR1cm4hMDtkZWZhdWx0OnRocm93IEVycm9yKFwiVW5leHBlY3RlZCBlbmNyeXB0aW9uIG1vZGU6IFwiK2EpO319O2NiPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LGI9JGEoKTt2YXIgYz12b2lkIDA9PT1jP2FiOmM7aWYoXy55KDIxNSkmJiFhLmdvb2dfc2RyX2wpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZ29vZ19zZHJfbFwiLHt2YWx1ZTohMH0pO3ZhciBkPWZ1bmN0aW9uKCl7dmFyIGU9Xy5yYSgzNyksZj1mdW5jdGlvbigpe2MoYSxcImdwdFwiLGIsU3RyaW5nKGJiKGEpKSl9O2U/YS5zZXRUaW1lb3V0KGYsZSk6ZigpfTtcImNvbXBsZXRlXCI9PT1hLmRvY3VtZW50LnJlYWR5U3RhdGU/ZCgpOl8udihhLFwibG9hZFwiLGQpfX07ZmI9ZnVuY3Rpb24oYSl7dmFyIGI9ZGIoYSk7cmV0dXJuKHo9W1wiZ29vZ2xlX2RlYnVnXCIsXCJkZnBkZWJcIixcImdvb2dsZV9jb25zb2xlXCIsXCJnb29nbGVfZm9yY2VfY29uc29sZVwiLFwiZ29vZ2ZjXCJdLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGMpe3ZhciBkPWIuc2VhcmNoKGViKTtiOnt2YXIgZT0wO2Zvcih2YXIgZj1jLmxlbmd0aDswPD0oZT1iLmluZGV4T2YoYyxlKSkmJmU8ZDspe3ZhciBnPWIuY2hhckNvZGVBdChlLTEpO2lmKDM4PT1nfHw2Mz09ZylpZihnPWIuY2hhckNvZGVBdChlK2YpLCFnfHw2MT09Z3x8Mzg9PWd8fDM1PT1nKWJyZWFrIGI7ZSs9ZisxfWU9LTF9aWYoMD5lKWM9bnVsbDtlbHNle2Y9Yi5pbmRleE9mKFwiJlwiLGUpO2lmKDA+Znx8Zj5kKWY9ZDtlKz1jLmxlbmd0aCsxO2M9ZGVjb2RlVVJJQ29tcG9uZW50KGIuc3Vic3RyKGUsZi1lKS5yZXBsYWNlKC9cXCsvZyxcIiBcIikpfXJldHVybiBudWxsIT09Y30pfHxudWxsfTtpYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD97fTpkO2diKGEsYixjLGQpO3N3aXRjaChhKXtjYXNlIDA6Y2FzZSA5OmE9aGIoKSwoYz1hLmdldChiKS5JYSk/KGI9KEIoYyw0KXx8MCkrMSxEKGMsNCxiKSxhLnNldChjKSk6Z2IoMTEsYixudWxsLHt9KX19O2piPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD12b2lkIDA9PT1kP3t9OmQ7Z2IoYSxiLGMsZCl9O2diPWZ1bmN0aW9uKGEsYixjLGQpe2tiKFwiZ3B0XzNwbGliXCIsZnVuY3Rpb24oZSl7bGIoZSk7RShlLFwiY1wiLGEpO2MmJkUoZSxcImVtXCIsYyk7RShlLFwibGlkXCIsYik7Xy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsZCkuZm9yRWFjaChmdW5jdGlvbihmKXtFKGUsZixkW2ZdKX0pfSl9O25iPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBtYig2NTksYyxmdW5jdGlvbihlLGYpe2piKDEsYSxmLm1lc3NhZ2UpO3JldHVybiB0LlByb21pc2UucmVzb2x2ZShudWxsKX0pLnRoZW4oZnVuY3Rpb24oZSl7ZCYmZCgpO2IuJGIoZSk7ZT1oYigpLnNldChiKTtlLmVycm9yTWVzc2FnZSYmamIoZS5pbmZvLGEsZS5lcnJvck1lc3NhZ2UpO3JldHVybiBifSl9O3BiPWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMD09PWI/ZnVuY3Rpb24oKXt9OmI7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYyl7c2V0VGltZW91dChmdW5jdGlvbigpe2MoYigpKX0sYSl9KX07cmI9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ZnVuY3Rpb24oKXt9OmI7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYyl7dmFyIGQ9ZnVuY3Rpb24oKXtjKGIoKSk7Xy5xYihhLFwibG9hZFwiLGQpfTtfLnYoYSxcImxvYWRcIixkKX0pfTt6Yj1mdW5jdGlvbigpe3ZhciBhPW5ldyBzYixiPW5ldyB0YihhLkYpLGM9bmV3IHViKGIuRiksZD1uZXcgdmIoYy5tKSxlPW5ldyB3Yjt4YihlLFthLGIsYyxkXSk7eWIoZSl9O0diPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP0FiOmI7dmFyIGM9QmIoYSksZD1mdW5jdGlvbihmKXtmPV8uRihmKTtmLm5leHQoKTtmPUNiKGYpO3JldHVybiBiKGMsZil9LGU9ZnVuY3Rpb24oZil7dmFyIGc9Xy5GKGYpO2Y9Zy5uZXh0KCkudmFsdWU7Zz1DYihnKTtyZXR1cm4gYS5hcHBseShmLGcpfTtyZXR1cm4gZnVuY3Rpb24oZil7Zm9yKHZhciBnPVtdLGg9MDtoPGFyZ3VtZW50cy5sZW5ndGg7KytoKWdbaF09YXJndW1lbnRzW2hdO2g9dGhpc3x8Xy5yO3ZhciBrPURiLmdldChoKTtrfHwoaz17fSxEYi5zZXQoaCxrKSk7cmV0dXJuIEViKGssW3RoaXNdLmNvbmNhdChfLkZiKGcpKSxlLGQpfX07SGI9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9MDtlPXZvaWQgMD09PWU/XCJcIjplO2M9dm9pZCAwPT09Yz9mdW5jdGlvbihsKXtyZXR1cm4hIWx9OmM7ZD12b2lkIDA9PT1kP1wiLFwiOmQ7dmFyIGY9W10sZz0hMTthPV8uRihhKTtmb3IodmFyIGg9YS5uZXh0KCk7IWguZG9uZTtoPWEubmV4dCgpKXtoPWIoaC52YWx1ZSk7dmFyIGs9YyhoKTtnPWd8fGs7Zi5wdXNoKFN0cmluZyhrP2g6ZSkpfXJldHVybiBnP2Yuam9pbihkKTpudWxsfTtLYj1mdW5jdGlvbihhLGIpe3ZhciBjPWJ8fGZ1bmN0aW9uKCl7cmV0dXJuITB9O2E9SWIoYSk7dmFyIGQ9W107Xy5KYihhLGZ1bmN0aW9uKGUsZil7ZT1lLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gYyhoLGYpfSk7aWYoZS5sZW5ndGgpe2U9ZS5tYXAoZW5jb2RlVVJJQ29tcG9uZW50KTt2YXIgZz1lbmNvZGVVUklDb21wb25lbnQoZik7ZC5wdXNoKGcrXCI9XCIrZS5qb2luKCkpfX0pO3JldHVybiBkfTtSYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1wYShhLGMpO2lmKGUpaWYoXy55KDM5OSkpe3ZhciBmPWEuZ2V0U2xvdElkKCk7aWYoIUxiLmhhcyhmKSl7TGIuYWRkKGYpO3ZhciBnPW5ldyAobnVsbCE9PShkPWIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpJiZ2b2lkIDAhPT1kP2Q6TWIpKEcoNzU1LGZ1bmN0aW9uKG0peyhtPV8uRihtKS5uZXh0KCkudmFsdWUpJiYwPT09bS5pbnRlcnNlY3Rpb25SYXRpbyYmKChtPXBhKGEsYykpJiZOYihtLCExKSxoKCkpfSkse3RocmVzaG9sZDowfSk7Zy5vYnNlcnZlKGUpO3ZhciBoPWZ1bmN0aW9uKCl7Zy5kaXNjb25uZWN0KCk7TGIuZGVsZXRlKGYpO2soKTtsKCl9LGs9T2IoSS5CKCksUGIsZiw3NTYsZnVuY3Rpb24obSl7bS5pc0VtcHR5fHxoKCl9KSxsPU9iKEkuQigpLFFiLGYsNzU2LGZ1bmN0aW9uKCl7TmIocGEoYSxjKSwhMSk7aCgpfSl9fWVsc2UgTmIoZSwhMSl9O1RiPWZ1bmN0aW9uKGEsYixjLGQpe2tiKFwiZ3B0X3N6XCIsZnVuY3Rpb24oZSl7RShlLFwiclwiLFNiKGEpKTtFKGUsXCJ3XCIsYy53aWR0aCk7RShlLFwiaFwiLGMuaGVpZ2h0KTtiJiZFKGUsXCJmXCIsYik7bnVsbCE9ZCYmRShlLFwiYVwiLE51bWJlcihkKSl9LHt2YTpfLnJhKDI4KX0pfTtVYj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHQuUHJvbWlzZShmdW5jdGlvbihiKXtyZXR1cm4gdm9pZCBzZXRUaW1lb3V0KGIsYSl9KX07VmI9ZnVuY3Rpb24oYSxiKXtyZXR1cm5cInVuZGVmaW5lZFwiPT09dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyP25ldyBNYihiLHtyb290TWFyZ2luOmF9KTpuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix7cm9vdE1hcmdpbjphfSl9O1piPWZ1bmN0aW9uKCl7V2IoXCJwdWJhZHNSZWFkeVwiLCEwKTtpZihfLnkoMjA2KSl7dmFyIGE9MDtPYmplY3QuZGVmaW5lUHJvcGVydHkoWGIoKSxcInB1YmFkc1JlYWR5XCIse2dldDpmdW5jdGlvbigpezU+YSYma2IoXCJncHRfcHViYWRzX3JlYWR5XCIsZnVuY3Rpb24oYil7KythO2xiKGIpO3ZhciBjPUVycm9yKFwicHViYWRzUmVhZHlcIik7RShiLFwic3RhY2tcIixZYihjLnN0YWNrLGMubWVzc2FnZSkpfSx7dmE6LjF9KTtyZXR1cm4hMH0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX19OyRiPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTthYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9O2JjPWZ1bmN0aW9uKGEpe2E9W1wib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93LFwib2JqZWN0XCI9PXR5cGVvZiBzZWxmJiZzZWxmLFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKFwiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdFwiKTt9O2NjPWJjKHRoaXMpO2RjPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PT10eXBlb2YgU3ltYm9sKFwieFwiKTt0PXt9O2VjPXt9O18uQT1mdW5jdGlvbihhLGIpe3ZhciBjPWVjW2JdO2lmKG51bGw9PWMpcmV0dXJuIGFbYl07Yz1hW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YVtiXX07ZmM9ZnVuY3Rpb24oYSxiLGMpe2lmKGIpYTp7dmFyIGQ9YS5zcGxpdChcIi5cIik7YT0xPT09ZC5sZW5ndGg7dmFyIGU9ZFswXSxmOyFhJiZlIGluIHQ/Zj10OmY9Y2M7Zm9yKGU9MDtlPGQubGVuZ3RoLTE7ZSsrKXt2YXIgZz1kW2VdO2lmKCEoZyBpbiBmKSlicmVhayBhO2Y9ZltnXX1kPWRbZC5sZW5ndGgtMV07Yz1kYyYmXCJlczZcIj09PWM/ZltkXTpudWxsO2I9YihjKTtudWxsIT1iJiYoYT9hYyh0LGQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSk6YiE9PWMmJihlY1tkXT1kYz9jYy5TeW1ib2woZCk6XCIkanNjcCRcIitkLGQ9ZWNbZF0sYWMoZixkLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9fTtmYyhcIlN5bWJvbFwiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oZSxmKXt0aGlzLmo9ZTthYyh0aGlzLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmZ9KX07Yi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgYz0wLGQ9ZnVuY3Rpb24oZSl7aWYodGhpcyBpbnN0YW5jZW9mIGQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvclwiKTtyZXR1cm4gbmV3IGIoXCJqc2NvbXBfc3ltYm9sX1wiKyhlfHxcIlwiKStcIl9cIitjKyssZSl9O3JldHVybiBkfSxcImVzNlwiKTtmYyhcIlN5bWJvbC5pdGVyYXRvclwiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7YT0oMCx0LlN5bWJvbCkoXCJTeW1ib2wuaXRlcmF0b3JcIik7Zm9yKHZhciBiPVwiQXJyYXkgSW50OEFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgSW50MTZBcnJheSBVaW50MTZBcnJheSBJbnQzMkFycmF5IFVpbnQzMkFycmF5IEZsb2F0MzJBcnJheSBGbG9hdDY0QXJyYXlcIi5zcGxpdChcIiBcIiksYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1jY1tiW2NdXTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCYmXCJmdW5jdGlvblwiIT10eXBlb2YgZC5wcm90b3R5cGVbYV0mJmFjKGQucHJvdG90eXBlLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBnYygkYih0aGlzKSl9fSl9cmV0dXJuIGF9LFwiZXM2XCIpO2djPWZ1bmN0aW9uKGEpe2E9e25leHQ6YX07YVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307cmV0dXJuIGF9O18uRj1mdW5jdGlvbihhKXt2YXIgYj1cInVuZGVmaW5lZFwiIT10eXBlb2YgdC5TeW1ib2wmJl8uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpJiZhW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXTtyZXR1cm4gYj9iLmNhbGwoYSk6e25leHQ6JGIoYSl9fTtDYj1mdW5jdGlvbihhKXtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTtyZXR1cm4gY307Xy5GYj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEFycmF5P2E6Q2IoXy5GKGEpKX07aGM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZT1hO3JldHVybiBuZXcgYn07aWYoZGMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIF8uQShPYmplY3QsXCJzZXRQcm90b3R5cGVPZlwiKSlpYz1fLkEoT2JqZWN0LFwic2V0UHJvdG90eXBlT2ZcIik7ZWxzZXt2YXIgamM7YTp7dmFyIGtjPXthOiEwfSxsYz17fTt0cnl7bGMuX19wcm90b19fPWtjO2pjPWxjLmE7YnJlYWsgYX1jYXRjaChhKXt9amM9ITF9aWM9amM/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErXCIgaXMgbm90IGV4dGVuc2libGVcIik7cmV0dXJuIGF9Om51bGx9bWM9aWM7Xy5KPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9aGMoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYobWMpbWMoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKFwicHJvdG90eXBlXCIhPWMpaWYoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpe3ZhciBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxjLGQpfWVsc2UgYVtjXT1iW2NdfTtuYz1mdW5jdGlvbigpe3RoaXMubT0hMTt0aGlzLmw9bnVsbDt0aGlzLm89dm9pZCAwO3RoaXMuaj0xO3RoaXMuRD10aGlzLkE9MDt0aGlzLnY9bnVsbH07b2M9ZnVuY3Rpb24oYSl7aWYoYS5tKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO2EubT0hMH07bmMucHJvdG90eXBlLkM9ZnVuY3Rpb24oYSl7dGhpcy5vPWF9O3ZhciBwYz1mdW5jdGlvbihhLGIpe2Eudj17bmM6YixjZDohMH07YS5qPWEuQXx8YS5EfTtuYy5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMudj17cmV0dXJuOmF9O3RoaXMuaj10aGlzLkR9O3ZhciBFYT1mdW5jdGlvbihhLGIsYyl7YS5qPWM7cmV0dXJue3ZhbHVlOmJ9fSxHYT1mdW5jdGlvbihhLGIpe2Euaj1iO2EuQT0wfSxIYT1mdW5jdGlvbihhKXthLkE9MDt2YXIgYj1hLnYubmM7YS52PW51bGw7cmV0dXJuIGJ9LHFjPWZ1bmN0aW9uKGEpe3RoaXMuaj1uZXcgbmM7dGhpcy5sPWF9LHRjPWZ1bmN0aW9uKGEsYil7b2MoYS5qKTt2YXIgYz1hLmoubDtpZihjKXJldHVybiByYyhhLFwicmV0dXJuXCJpbiBjP2NbXCJyZXR1cm5cIl06ZnVuY3Rpb24oZCl7cmV0dXJue3ZhbHVlOmQsZG9uZTohMH19LGIsYS5qLnJldHVybik7YS5qLnJldHVybihiKTtyZXR1cm4gc2MoYSl9LHJjPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1iLmNhbGwoYS5qLmwsYyk7aWYoIShlIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSXRlcmF0b3IgcmVzdWx0IFwiK2UrXCIgaXMgbm90IGFuIG9iamVjdFwiKTtpZighZS5kb25lKXJldHVybiBhLmoubT0hMSxlO3ZhciBmPWUudmFsdWV9Y2F0Y2goZyl7cmV0dXJuIGEuai5sPW51bGwscGMoYS5qLGcpLHNjKGEpfWEuai5sPW51bGw7ZC5jYWxsKGEuaixmKTtyZXR1cm4gc2MoYSl9LHNjPWZ1bmN0aW9uKGEpe2Zvcig7YS5qLmo7KXRyeXt2YXIgYj1hLmwoYS5qKTtpZihiKXJldHVybiBhLmoubT0hMSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChjKXthLmoubz12b2lkIDAscGMoYS5qLGMpfWEuai5tPSExO2lmKGEuai52KXtiPWEuai52O2Euai52PW51bGw7aWYoYi5jZCl0aHJvdyBiLm5jO3JldHVybnt2YWx1ZTpiLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fSx1Yz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7b2MoYS5qKTthLmoubD9iPXJjKGEsYS5qLmwubmV4dCxiLGEuai5DKTooYS5qLkMoYiksYj1zYyhhKSk7cmV0dXJuIGJ9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7b2MoYS5qKTthLmoubD9iPXJjKGEsYS5qLmxbXCJ0aHJvd1wiXSxiLGEuai5DKToocGMoYS5qLGIpLGI9c2MoYSkpO3JldHVybiBifTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gdGMoYSxiKX07dGhpc1tfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LERhPWZ1bmN0aW9uKGEsYil7Yj1uZXcgdWMobmV3IHFjKGIpKTttYyYmYS5wcm90b3R5cGUmJm1jKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTtmYyhcIlJlZmxlY3Quc2V0UHJvdG90eXBlT2ZcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOm1jP2Z1bmN0aW9uKGIsYyl7dHJ5e3JldHVybiBtYyhiLGMpLCEwfWNhdGNoKGQpe3JldHVybiExfX06bnVsbH0sXCJlczZcIik7ZmMoXCJPYmplY3Quc2V0UHJvdG90eXBlT2ZcIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8bWN9LFwiZXM2XCIpO3ZhciB2Yz1mdW5jdGlvbihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKX0seWM9ZGMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIF8uQShPYmplY3QsXCJhc3NpZ25cIik/Xy5BKE9iamVjdCxcImFzc2lnblwiKTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihkKWZvcih2YXIgZSBpbiBkKXZjKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtmYyhcIk9iamVjdC5hc3NpZ25cIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8eWN9LFwiZXM2XCIpO2ZjKFwiUHJvbWlzZVwiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt0aGlzLmo9bnVsbH1mdW5jdGlvbiBjKGcpe3JldHVybiBnIGluc3RhbmNlb2YgZT9nOm5ldyBlKGZ1bmN0aW9uKGgpe2goZyl9KX1pZihhKXJldHVybiBhO2IucHJvdG90eXBlLmw9ZnVuY3Rpb24oZyl7aWYobnVsbD09dGhpcy5qKXt0aGlzLmo9W107dmFyIGg9dGhpczt0aGlzLnYoZnVuY3Rpb24oKXtoLm0oKX0pfXRoaXMuai5wdXNoKGcpfTt2YXIgZD1jYy5zZXRUaW1lb3V0O2IucHJvdG90eXBlLnY9ZnVuY3Rpb24oZyl7ZChnLDApfTtiLnByb3RvdHlwZS5tPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmomJnRoaXMuai5sZW5ndGg7KXt2YXIgZz10aGlzLmo7dGhpcy5qPVtdO2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7KytoKXt2YXIgaz1nW2hdO2dbaF09bnVsbDt0cnl7aygpfWNhdGNoKGwpe3RoaXMubyhsKX19fXRoaXMuaj1udWxsfTtiLnByb3RvdHlwZS5vPWZ1bmN0aW9uKGcpe3RoaXMudihmdW5jdGlvbigpe3Rocm93IGc7fSl9O3ZhciBlPWZ1bmN0aW9uKGcpe3RoaXMubD0wO3RoaXMubT12b2lkIDA7dGhpcy5qPVtdO3ZhciBoPXRoaXMudigpO3RyeXtnKGgucmVzb2x2ZSxoLnJlamVjdCl9Y2F0Y2goayl7aC5yZWplY3Qoayl9fTtlLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhsKXtyZXR1cm4gZnVuY3Rpb24obSl7a3x8KGs9ITAsbC5jYWxsKGgsbSkpfX12YXIgaD10aGlzLGs9ITE7cmV0dXJue3Jlc29sdmU6Zyh0aGlzLkcpLHJlamVjdDpnKHRoaXMubyl9fTtlLnByb3RvdHlwZS5HPWZ1bmN0aW9uKGcpe2lmKGc9PT10aGlzKXRoaXMubyhuZXcgVHlwZUVycm9yKFwiQSBQcm9taXNlIGNhbm5vdCByZXNvbHZlIHRvIGl0c2VsZlwiKSk7ZWxzZSBpZihnIGluc3RhbmNlb2YgZSl0aGlzLkgoZyk7ZWxzZXthOnN3aXRjaCh0eXBlb2YgZyl7Y2FzZSBcIm9iamVjdFwiOnZhciBoPW51bGwhPWc7YnJlYWsgYTtjYXNlIFwiZnVuY3Rpb25cIjpoPSEwO2JyZWFrIGE7ZGVmYXVsdDpoPSExfWg/dGhpcy5VKGcpOnRoaXMuQShnKX19O2UucHJvdG90eXBlLlU9ZnVuY3Rpb24oZyl7dmFyIGg9dm9pZCAwO3RyeXtoPWcudGhlbn1jYXRjaChrKXt0aGlzLm8oayk7cmV0dXJufVwiZnVuY3Rpb25cIj09dHlwZW9mIGg/dGhpcy5JKGgsZyk6dGhpcy5BKGcpfTtlLnByb3RvdHlwZS5vPWZ1bmN0aW9uKGcpe3RoaXMuQygyLGcpfTtlLnByb3RvdHlwZS5BPWZ1bmN0aW9uKGcpe3RoaXMuQygxLGcpfTtlLnByb3RvdHlwZS5DPWZ1bmN0aW9uKGcsaCl7aWYoMCE9dGhpcy5sKXRocm93IEVycm9yKFwiQ2Fubm90IHNldHRsZShcIitnK1wiLCBcIitoK1wiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGVcIit0aGlzLmwpO3RoaXMubD1nO3RoaXMubT1oO3RoaXMuRCgpfTtlLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5qKXtmb3IodmFyIGc9MDtnPHRoaXMuai5sZW5ndGg7KytnKWYubCh0aGlzLmpbZ10pO3RoaXMuaj1udWxsfX07dmFyIGY9bmV3IGI7ZS5wcm90b3R5cGUuSD1mdW5jdGlvbihnKXt2YXIgaD10aGlzLnYoKTtnLnZiKGgucmVzb2x2ZSxoLnJlamVjdCl9O2UucHJvdG90eXBlLkk9ZnVuY3Rpb24oZyxoKXt2YXIgaz10aGlzLnYoKTt0cnl7Zy5jYWxsKGgsay5yZXNvbHZlLGsucmVqZWN0KX1jYXRjaChsKXtrLnJlamVjdChsKX19O2UucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZyxoKXtmdW5jdGlvbiBrKHEsdyl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgcT9mdW5jdGlvbih1KXt0cnl7bChxKHUpKX1jYXRjaChDKXttKEMpfX06d312YXIgbCxtLG49bmV3IGUoZnVuY3Rpb24ocSx3KXtsPXE7bT13fSk7dGhpcy52YihrKGcsbCksayhoLG0pKTtyZXR1cm4gbn07ZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsZyl9O2UucHJvdG90eXBlLnZiPWZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gaygpe3N3aXRjaChsLmwpe2Nhc2UgMTpnKGwubSk7YnJlYWs7Y2FzZSAyOmgobC5tKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKFwiVW5leHBlY3RlZCBzdGF0ZTogXCIrbC5sKTt9fXZhciBsPXRoaXM7bnVsbD09dGhpcy5qP2YubChrKTp0aGlzLmoucHVzaChrKX07ZS5yZXNvbHZlPWM7ZS5yZWplY3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGgsayl7ayhnKX0pfTtlLnJhY2U9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGgsayl7Zm9yKHZhciBsPV8uRihnKSxtPWwubmV4dCgpOyFtLmRvbmU7bT1sLm5leHQoKSljKG0udmFsdWUpLnZiKGgsayl9KX07ZS5hbGw9ZnVuY3Rpb24oZyl7dmFyIGg9Xy5GKGcpLGs9aC5uZXh0KCk7cmV0dXJuIGsuZG9uZT9jKFtdKTpuZXcgZShmdW5jdGlvbihsLG0pe2Z1bmN0aW9uIG4odSl7cmV0dXJuIGZ1bmN0aW9uKEMpe3FbdV09Qzt3LS07MD09dyYmbChxKX19dmFyIHE9W10sdz0wO2RvIHEucHVzaCh2b2lkIDApLHcrKyxjKGsudmFsdWUpLnZiKG4ocS5sZW5ndGgtMSksbSksaz1oLm5leHQoKTt3aGlsZSghay5kb25lKX0pfTtyZXR1cm4gZX0sXCJlczZcIik7dmFyIHpjPWZ1bmN0aW9uKGEsYixjKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYT1TdHJpbmcoYSkpO2Zvcih2YXIgZD1hLmxlbmd0aCxlPTA7ZTxkO2UrKyl7dmFyIGY9YVtlXTtpZihiLmNhbGwoYyxmLGUsYSkpcmV0dXJue2k6ZSxLYzpmfX1yZXR1cm57aTotMSxLYzp2b2lkIDB9fTtmYyhcIkFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIHpjKHRoaXMsYixjKS5pfX0sXCJlczZcIik7dmFyIEFjPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgJ3RoaXMnIHZhbHVlIGZvciBTdHJpbmcucHJvdG90eXBlLlwiK2MrXCIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWRcIik7aWYoYiBpbnN0YW5jZW9mIFJlZ0V4cCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5cIitjK1wiIG11c3Qgbm90IGJlIGEgcmVndWxhciBleHByZXNzaW9uXCIpO3JldHVybiBhK1wiXCJ9O2ZjKFwiU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aFwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD1BYyh0aGlzLGIsXCJlbmRzV2l0aFwiKTt2b2lkIDA9PT1jJiYoYz1kLmxlbmd0aCk7Yz1NYXRoLm1heCgwLE1hdGgubWluKGN8MCxkLmxlbmd0aCkpO2Zvcih2YXIgZT1iLmxlbmd0aDswPGUmJjA8YzspaWYoZFstLWNdIT1iWy0tZV0pcmV0dXJuITE7cmV0dXJuIDA+PWV9fSxcImVzNlwiKTtmYyhcIkFycmF5LnByb3RvdHlwZS5maW5kXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMpe3JldHVybiB6Yyh0aGlzLGIsYykuS2N9fSxcImVzNlwiKTt2YXIgQmM9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYSs9XCJcIik7dmFyIGM9MCxkPSExLGU9e25leHQ6ZnVuY3Rpb24oKXtpZighZCYmYzxhLmxlbmd0aCl7dmFyIGY9YysrO3JldHVybnt2YWx1ZTpiKGYsYVtmXSksZG9uZTohMX19ZD0hMDtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fX07ZVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIGV9O2ZjKFwiQXJyYXkucHJvdG90eXBlLmtleXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIEJjKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGJ9KX19LFwiZXM2XCIpO2ZjKFwiQXJyYXkucHJvdG90eXBlLnZhbHVlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gQmModGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBjfSl9fSxcImVzOFwiKTtmYyhcIk9iamVjdC5pc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj09PWM/MCE9PWJ8fDEvYj09PTEvYzpiIT09YiYmYyE9PWN9fSxcImVzNlwiKTtmYyhcIkFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2QgaW5zdGFuY2VvZiBTdHJpbmcmJihkPVN0cmluZyhkKSk7dmFyIGU9ZC5sZW5ndGg7Yz1jfHwwO2ZvcigwPmMmJihjPU1hdGgubWF4KGMrZSwwKSk7YzxlO2MrKyl7dmFyIGY9ZFtjXTtpZihmPT09Ynx8Xy5BKE9iamVjdCxcImlzXCIpLmNhbGwoT2JqZWN0LGYsYikpcmV0dXJuITB9cmV0dXJuITF9fSxcImVzN1wiKTtmYyhcIlN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuLTEhPT1BYyh0aGlzLGIsXCJpbmNsdWRlc1wiKS5pbmRleE9mKGIsY3x8MCl9fSxcImVzNlwiKTtmYyhcIldlYWtNYXBcIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7fWZ1bmN0aW9uIGMoZyl7dmFyIGg9dHlwZW9mIGc7cmV0dXJuXCJvYmplY3RcIj09PWgmJm51bGwhPT1nfHxcImZ1bmN0aW9uXCI9PT1ofWlmKGZ1bmN0aW9uKCl7aWYoIWF8fCFPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGc9T2JqZWN0LnNlYWwoe30pLGg9T2JqZWN0LnNlYWwoe30pLGs9bmV3IGEoW1tnLDJdLFtoLDNdXSk7aWYoMiE9ay5nZXQoZyl8fDMhPWsuZ2V0KGgpKXJldHVybiExO2suZGVsZXRlKGcpO2suc2V0KGgsNCk7cmV0dXJuIWsuaGFzKGcpJiY0PT1rLmdldChoKX1jYXRjaChsKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGQ9XCIkanNjb21wX2hpZGRlbl9cIitNYXRoLnJhbmRvbSgpLGU9MCxmPWZ1bmN0aW9uKGcpe3RoaXMuaj0oZSs9TWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygpO2lmKGcpe2c9Xy5GKGcpO2Zvcih2YXIgaDshKGg9Zy5uZXh0KCkpLmRvbmU7KWg9aC52YWx1ZSx0aGlzLnNldChoWzBdLGhbMV0pfX07Zi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGcsaCl7aWYoIWMoZykpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIFdlYWtNYXAga2V5XCIpO2lmKCF2YyhnLGQpKXt2YXIgaz1uZXcgYjthYyhnLGQse3ZhbHVlOmt9KX1pZighdmMoZyxkKSl0aHJvdyBFcnJvcihcIldlYWtNYXAga2V5IGZhaWw6IFwiK2cpO2dbZF1bdGhpcy5qXT1oO3JldHVybiB0aGlzfTtmLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGMoZykmJnZjKGcsZCk/Z1tkXVt0aGlzLmpdOnZvaWQgMH07Zi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGcpe3JldHVybiBjKGcpJiZ2YyhnLGQpJiZ2YyhnW2RdLHRoaXMuail9O2YucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihnKXtyZXR1cm4gYyhnKSYmdmMoZyxkKSYmdmMoZ1tkXSx0aGlzLmopP2RlbGV0ZSBnW2RdW3RoaXMual06ITF9O3JldHVybiBmfSxcImVzNlwiKTtmYyhcIk1hcFwiLGZ1bmN0aW9uKGEpe2lmKGZ1bmN0aW9uKCl7aWYoIWF8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGF8fCFfLkEoYS5wcm90b3R5cGUsXCJlbnRyaWVzXCIpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGg9T2JqZWN0LnNlYWwoe3g6NH0pLGs9bmV3IGEoXy5GKFtbaCxcInNcIl1dKSk7aWYoXCJzXCIhPWsuZ2V0KGgpfHwxIT1rLnNpemV8fGsuZ2V0KHt4OjR9KXx8ay5zZXQoe3g6NH0sXCJ0XCIpIT1rfHwyIT1rLnNpemUpcmV0dXJuITE7dmFyIGw9Xy5BKGssXCJlbnRyaWVzXCIpLmNhbGwoayksbT1sLm5leHQoKTtpZihtLmRvbmV8fG0udmFsdWVbMF0hPWh8fFwic1wiIT1tLnZhbHVlWzFdKXJldHVybiExO209bC5uZXh0KCk7cmV0dXJuIG0uZG9uZXx8NCE9bS52YWx1ZVswXS54fHxcInRcIiE9bS52YWx1ZVsxXXx8IWwubmV4dCgpLmRvbmU/ITE6ITB9Y2F0Y2gobil7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPW5ldyB0LldlYWtNYXAsYz1mdW5jdGlvbihoKXt0aGlzLmw9e307dGhpcy5qPWYoKTt0aGlzLnNpemU9MDtpZihoKXtoPV8uRihoKTtmb3IodmFyIGs7IShrPWgubmV4dCgpKS5kb25lOylrPWsudmFsdWUsdGhpcy5zZXQoa1swXSxrWzFdKX19O2MucHJvdG90eXBlLnNldD1mdW5jdGlvbihoLGspe2g9MD09PWg/MDpoO3ZhciBsPWQodGhpcyxoKTtsLmxpc3R8fChsLmxpc3Q9dGhpcy5sW2wuaWRdPVtdKTtsLmphP2wuamEudmFsdWU9azoobC5qYT17bmV4dDp0aGlzLmosRGE6dGhpcy5qLkRhLGhlYWQ6dGhpcy5qLGtleTpoLHZhbHVlOmt9LGwubGlzdC5wdXNoKGwuamEpLHRoaXMuai5EYS5uZXh0PWwuamEsdGhpcy5qLkRhPWwuamEsdGhpcy5zaXplKyspO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oaCl7aD1kKHRoaXMsaCk7cmV0dXJuIGguamEmJmgubGlzdD8oaC5saXN0LnNwbGljZShoLmluZGV4LDEpLGgubGlzdC5sZW5ndGh8fGRlbGV0ZSB0aGlzLmxbaC5pZF0saC5qYS5EYS5uZXh0PWguamEubmV4dCxoLmphLm5leHQuRGE9aC5qYS5EYSxoLmphLmhlYWQ9bnVsbCx0aGlzLnNpemUtLSwhMCk6ITF9O2MucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5sPXt9O3RoaXMuaj10aGlzLmouRGE9ZigpO3RoaXMuc2l6ZT0wfTtjLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oaCl7cmV0dXJuISFkKHRoaXMsaCkuamF9O2MucHJvdG90eXBlLmdldD1mdW5jdGlvbihoKXtyZXR1cm4oaD1kKHRoaXMsaCkuamEpJiZoLnZhbHVlfTtjLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm5baC5rZXksaC52YWx1ZV19KX07Yy5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgua2V5fSl9O2MucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgudmFsdWV9KX07Yy5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihoLGspe2Zvcih2YXIgbD1fLkEodGhpcyxcImVudHJpZXNcIikuY2FsbCh0aGlzKSxtOyEobT1sLm5leHQoKSkuZG9uZTspbT1tLnZhbHVlLGguY2FsbChrLG1bMV0sbVswXSx0aGlzKX07Yy5wcm90b3R5cGVbXy5BKHQuU3ltYm9sLFwiaXRlcmF0b3JcIildPV8uQShjLnByb3RvdHlwZSxcImVudHJpZXNcIik7dmFyIGQ9ZnVuY3Rpb24oaCxrKXt2YXIgbD1rJiZ0eXBlb2YgaztcIm9iamVjdFwiPT1sfHxcImZ1bmN0aW9uXCI9PWw/Yi5oYXMoayk/bD1iLmdldChrKToobD1cIlwiKyArK2csYi5zZXQoayxsKSk6bD1cInBfXCIrazt2YXIgbT1oLmxbbF07aWYobSYmdmMoaC5sLGwpKWZvcihoPTA7aDxtLmxlbmd0aDtoKyspe3ZhciBuPW1baF07aWYoayE9PWsmJm4ua2V5IT09bi5rZXl8fGs9PT1uLmtleSlyZXR1cm57aWQ6bCxsaXN0Om0saW5kZXg6aCxqYTpufX1yZXR1cm57aWQ6bCxsaXN0Om0saW5kZXg6LTEsamE6dm9pZCAwfX0sZT1mdW5jdGlvbihoLGspe3ZhciBsPWguajtyZXR1cm4gZ2MoZnVuY3Rpb24oKXtpZihsKXtmb3IoO2wuaGVhZCE9aC5qOylsPWwuRGE7Zm9yKDtsLm5leHQhPWwuaGVhZDspcmV0dXJuIGw9bC5uZXh0LHtkb25lOiExLHZhbHVlOmsobCl9O2w9bnVsbH1yZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fSl9LGY9ZnVuY3Rpb24oKXt2YXIgaD17fTtyZXR1cm4gaC5EYT1oLm5leHQ9aC5oZWFkPWh9LGc9MDtyZXR1cm4gY30sXCJlczZcIik7ZmMoXCJTZXRcIixmdW5jdGlvbihhKXtpZihmdW5jdGlvbigpe2lmKCFhfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhfHwhXy5BKGEucHJvdG90eXBlLFwiZW50cmllc1wiKXx8XCJmdW5jdGlvblwiIT10eXBlb2YgT2JqZWN0LnNlYWwpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt4OjR9KSxkPW5ldyBhKF8uRihbY10pKTtpZighZC5oYXMoYyl8fDEhPWQuc2l6ZXx8ZC5hZGQoYykhPWR8fDEhPWQuc2l6ZXx8ZC5hZGQoe3g6NH0pIT1kfHwyIT1kLnNpemUpcmV0dXJuITE7dmFyIGU9Xy5BKGQsXCJlbnRyaWVzXCIpLmNhbGwoZCksZj1lLm5leHQoKTtpZihmLmRvbmV8fGYudmFsdWVbMF0hPWN8fGYudmFsdWVbMV0hPWMpcmV0dXJuITE7Zj1lLm5leHQoKTtyZXR1cm4gZi5kb25lfHxmLnZhbHVlWzBdPT1jfHw0IT1mLnZhbHVlWzBdLnh8fGYudmFsdWVbMV0hPWYudmFsdWVbMF0/ITE6ZS5uZXh0KCkuZG9uZX1jYXRjaChnKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oYyl7dGhpcy5qPW5ldyB0Lk1hcDtpZihjKXtjPV8uRihjKTtmb3IodmFyIGQ7IShkPWMubmV4dCgpKS5kb25lOyl0aGlzLmFkZChkLnZhbHVlKX10aGlzLnNpemU9dGhpcy5qLnNpemV9O2IucHJvdG90eXBlLmFkZD1mdW5jdGlvbihjKXtjPTA9PT1jPzA6Yzt0aGlzLmouc2V0KGMsYyk7dGhpcy5zaXplPXRoaXMuai5zaXplO3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oYyl7Yz10aGlzLmouZGVsZXRlKGMpO3RoaXMuc2l6ZT10aGlzLmouc2l6ZTtyZXR1cm4gY307Yi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmouY2xlYXIoKTt0aGlzLnNpemU9MH07Yi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmouaGFzKGMpfTtiLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQSh0aGlzLmosXCJlbnRyaWVzXCIpLmNhbGwodGhpcy5qKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQSh0aGlzLmosXCJ2YWx1ZXNcIikuY2FsbCh0aGlzLmopfTtiLnByb3RvdHlwZS5rZXlzPV8uQShiLnByb3RvdHlwZSxcInZhbHVlc1wiKTtiLnByb3RvdHlwZVtfLkEodC5TeW1ib2wsXCJpdGVyYXRvclwiKV09Xy5BKGIucHJvdG90eXBlLFwidmFsdWVzXCIpO2IucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYyxkKXt2YXIgZT10aGlzO3RoaXMuai5mb3JFYWNoKGZ1bmN0aW9uKGYpe3JldHVybiBjLmNhbGwoZCxmLGYsZSl9KX07cmV0dXJuIGJ9LFwiZXM2XCIpO2ZjKFwiTnVtYmVyLmlzRmluaXRlXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm5cIm51bWJlclwiIT09dHlwZW9mIGI/ITE6IWlzTmFOKGIpJiZJbmZpbml0eSE9PWImJi1JbmZpbml0eSE9PWJ9fSxcImVzNlwiKTtmYyhcIk51bWJlci5pc0ludGVnZXJcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiBfLkEoTnVtYmVyLFwiaXNGaW5pdGVcIikuY2FsbChOdW1iZXIsYik/Yj09PU1hdGguZmxvb3IoYik6ITF9fSxcImVzNlwiKTtmYyhcIkFycmF5LmZyb21cIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyxkKXtjPW51bGwhPWM/YzpmdW5jdGlvbihoKXtyZXR1cm4gaH07dmFyIGU9W10sZj1cInVuZGVmaW5lZFwiIT10eXBlb2YgdC5TeW1ib2wmJl8uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpJiZiW18uQSh0LlN5bWJvbCxcIml0ZXJhdG9yXCIpXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBmKXtiPWYuY2FsbChiKTtmb3IodmFyIGc9MDshKGY9Yi5uZXh0KCkpLmRvbmU7KWUucHVzaChjLmNhbGwoZCxmLnZhbHVlLGcrKykpfWVsc2UgZm9yKGY9Yi5sZW5ndGgsZz0wO2c8ZjtnKyspZS5wdXNoKGMuY2FsbChkLGJbZ10sZykpO3JldHVybiBlfX0sXCJlczZcIik7ZmMoXCJBcnJheS5wcm90b3R5cGUuZW50cmllc1wiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gQmModGhpcyxmdW5jdGlvbihiLGMpe3JldHVybltiLGNdfSl9fSxcImVzNlwiKTtfLnI9dGhpc3x8c2VsZjtDYz1mdW5jdGlvbihhLGIpe2E9YS5zcGxpdChcIi5cIik7dmFyIGM9Xy5yO2FbMF1pbiBjfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgYy5leGVjU2NyaXB0fHxjLmV4ZWNTY3JpcHQoXCJ2YXIgXCIrYVswXSk7Zm9yKHZhciBkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8dm9pZCAwPT09Yj9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn07RmM9ZnVuY3Rpb24oYSl7aWYoYSYmYSE9Xy5yKXJldHVybiBEYyhhLmRvY3VtZW50KTtudWxsPT09RWMmJihFYz1EYyhfLnIuZG9jdW1lbnQpKTtyZXR1cm4gRWN9O0djPS9eW1xcdysvXy1dK1s9XXswLDJ9JC87RWM9bnVsbDtEYz1mdW5jdGlvbihhKXtyZXR1cm4oYT1hLnF1ZXJ5U2VsZWN0b3ImJmEucXVlcnlTZWxlY3RvcihcInNjcmlwdFtub25jZV1cIikpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSYmR2MudGVzdChhKT9hOlwiXCJ9O18uSGM9ZnVuY3Rpb24oKXt9O0ljPWZ1bmN0aW9uKGEpe2EuYmI9dm9pZCAwO2EuQj1mdW5jdGlvbigpe3JldHVybiBhLmJiP2EuYmI6YS5iYj1uZXcgYX19O0pjPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVyblwib2JqZWN0XCIhPWI/YjphP0FycmF5LmlzQXJyYXkoYSk/XCJhcnJheVwiOmI6XCJudWxsXCJ9O0tjPWZ1bmN0aW9uKGEpe3ZhciBiPUpjKGEpO3JldHVyblwiYXJyYXlcIj09Ynx8XCJvYmplY3RcIj09YiYmXCJudW1iZXJcIj09dHlwZW9mIGEubGVuZ3RofTtMYz1mdW5jdGlvbihhKXtyZXR1cm5cImZ1bmN0aW9uXCI9PUpjKGEpfTtfLk1jPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVyblwib2JqZWN0XCI9PWImJm51bGwhPWF8fFwiZnVuY3Rpb25cIj09Yn07QmI9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLE5jKSYmYVtOY118fChhW05jXT0rK09jKX07TmM9XCJjbG9zdXJlX3VpZF9cIisoMUU5Kk1hdGgucmFuZG9tKCk+Pj4wKTtPYz0wO1BjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTtRYz1mdW5jdGlvbihhLGIsYyl7aWYoIWEpdGhyb3cgRXJyb3IoKTtpZigyPGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGUsZCk7cmV0dXJuIGEuYXBwbHkoYixlKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX07Xy5SYz1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoXCJuYXRpdmUgY29kZVwiKT9fLlJjPVBjOl8uUmM9UWM7cmV0dXJuIF8uUmMuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtfLlNjPWZ1bmN0aW9uKGEsYil7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWMuc2xpY2UoKTtkLnB1c2guYXBwbHkoZCxhcmd1bWVudHMpO3JldHVybiBhLmFwcGx5KHRoaXMsZCl9fTtUYz1EYXRlLm5vdztLPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hfTt2YXIgQ2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz12b2lkIDA7cmV0dXJuIG5ldyAoY3x8KGM9dC5Qcm9taXNlKSkoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGspe3RyeXtoKGIubmV4dChrKSl9Y2F0Y2gobCl7ZShsKX19ZnVuY3Rpb24gZyhrKXt0cnl7aChiW1widGhyb3dcIl0oaykpfWNhdGNoKGwpe2UobCl9fWZ1bmN0aW9uIGgoayl7ay5kb25lP2Qoay52YWx1ZSk6KG5ldyBjKGZ1bmN0aW9uKGwpe2woay52YWx1ZSl9KSkudGhlbihmLGcpfWgoKGI9Yi5hcHBseShhLHZvaWQgMCkpLm5leHQoKSl9KX07dmFyIFVjO3ZhciBXYyxaYyxZYyxhZCxiZCxjZCxVYSxWYSxlZCxkZCxmZCxnZCxoZDtfLlZjPWZ1bmN0aW9uKGEsYil7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsdm9pZCAwKX07Xy5UYT1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLHZvaWQgMCl9O18uUmE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGEsYix2b2lkIDApfTtXYz1mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlLmNhbGwoYSxiLDApfTtfLlhjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwoYSxiLHZvaWQgMCl9O1pjPWZ1bmN0aW9uKGEsYil7Yj1ZYyhhLGIpO3JldHVybiAwPmI/bnVsbDpcInN0cmluZ1wiPT09dHlwZW9mIGE/YS5jaGFyQXQoYik6YVtiXX07WWM9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYmYi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpcmV0dXJuIGU7cmV0dXJuLTF9O18uJGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMDw9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsdm9pZCAwKX07YWQ9ZnVuY3Rpb24oYSxiKXtiPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLHZvaWQgMCk7dmFyIGM7KGM9MDw9YikmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7cmV0dXJuIGN9O2JkPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA8Yil7Zm9yKHZhciBjPUFycmF5KGIpLGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX07Y2Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAyPj1hcmd1bWVudHMubGVuZ3RoP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiLGMpfTtVYT1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz0wLGQ9MDtkPGEubGVuZ3RoOyl7dmFyIGU9YVtkKytdO3ZhciBmPWU7Zj1fLk1jKGYpP1wib1wiK0JiKGYpOih0eXBlb2YgZikuY2hhckF0KDApK2Y7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZil8fChiW2ZdPSEwLGFbYysrXT1lKX1hLmxlbmd0aD1jfTtWYT1mdW5jdGlvbihhLGIpe2Euc29ydChifHxkZCl9O2VkPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPUFycmF5KGEubGVuZ3RoKSxkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT17aW5kZXg6ZCx2YWx1ZTphW2RdfTt2YXIgZT1ifHxkZDtWYShjLGZ1bmN0aW9uKGYsZyl7cmV0dXJuIGUoZi52YWx1ZSxnLnZhbHVlKXx8Zi5pbmRleC1nLmluZGV4fSk7Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylhW2RdPWNbZF0udmFsdWV9O2RkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE+Yj8xOmE8Yj8tMTowfTtmZD1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yn07Z2Q9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9e30sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdLGY9Yi5jYWxsKHZvaWQgMCxlLGQsYSk7dm9pZCAwIT09ZiYmKGNbZl18fChjW2ZdPVtdKSkucHVzaChlKX1yZXR1cm4gY307aGQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoQXJyYXkuaXNBcnJheShkKSlmb3IodmFyIGU9MDtlPGQubGVuZ3RoO2UrPTgxOTIpZm9yKHZhciBmPWhkLmFwcGx5KG51bGwsY2QoZCxlLGUrODE5MikpLGc9MDtnPGYubGVuZ3RoO2crKyliLnB1c2goZltnXSk7ZWxzZSBiLnB1c2goZCl9cmV0dXJuIGJ9O3ZhciBpZD1mdW5jdGlvbigpe3JldHVybiEwfSx2YT1mdW5jdGlvbihhKXt2YXIgYj0hMSxjO3JldHVybiBmdW5jdGlvbigpe2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319LGpkPWZ1bmN0aW9uKGEpe3ZhciBiPWE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYil7dmFyIGM9YjtiPW51bGw7YygpfX19LGtkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0wLGU9ITEsZj1bXSxnPWZ1bmN0aW9uKCl7ZD0wO2UmJihlPSExLGgoKSl9LGg9ZnVuY3Rpb24oKXtkPV8uci5zZXRUaW1lb3V0KGcsYik7YS5hcHBseShjLGYpfTtyZXR1cm4gZnVuY3Rpb24oayl7Zj1hcmd1bWVudHM7ZD9lPSEwOmgoKX19O3ZhciBsZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpfSxtZD1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT09YSYmYiBpbiBhfSxuZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyBpbiBhKWlmKGIuY2FsbCh2b2lkIDAsYVtjXSxjLGEpKXJldHVybiBjfSxvZD1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKSxwZD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXtkPWFyZ3VtZW50c1tlXTtmb3IoYyBpbiBkKWFbY109ZFtjXTtmb3IodmFyIGY9MDtmPG9kLmxlbmd0aDtmKyspYz1vZFtmXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxjKSYmKGFbY109ZFtjXSl9fSxxZD1mdW5jdGlvbihhKXt2YXIgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gcWQuYXBwbHkobnVsbCxhcmd1bWVudHNbMF0pO2Zvcih2YXIgYz17fSxkPTA7ZDxiO2QrKyljW2FyZ3VtZW50c1tkXV09ITA7cmV0dXJuIGN9O3ZhciB0ZD1mdW5jdGlvbihhLGIpe3RoaXMuaj1hPT09cmQmJmJ8fFwiXCI7dGhpcy5sPXNkfTt0ZC5wcm90b3R5cGUubGI9ITA7dGQucHJvdG90eXBlLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyIHVkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgdGQmJmEuY29uc3RydWN0b3I9PT10ZCYmYS5sPT09c2Q/YS5qOlwidHlwZV9lcnJvcjpDb25zdFwifSx2ZD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHRkKHJkLGEpfSxzZD17fSxyZD17fTt2YXIgeGQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmo9Yj09PXdkP2E6XCJcIn07eGQucHJvdG90eXBlLmxiPSEwO3hkLnByb3RvdHlwZS5OYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07dmFyIHlkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgeGQmJmEuY29uc3RydWN0b3I9PT14ZD9hLmo6XCJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybFwifSxKYT1mdW5jdGlvbihhLGIpe3ZhciBjPXVkKGEpO2lmKCF6ZC50ZXN0KGMpKXRocm93IEVycm9yKFwiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiBcIitjKTthPWMucmVwbGFjZShBZCxmdW5jdGlvbihkLGUpe2lmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixlKSl0aHJvdyBFcnJvcignRm91bmQgbWFya2VyLCBcIicrZSsnXCIsIGluIGZvcm1hdCBzdHJpbmcsIFwiJytjKydcIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgdGQ/dWQoZCk6ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhkKSl9KTtyZXR1cm4gQmQoYSl9LEFkPS8leyhcXHcrKX0vZyx6ZD0vXigoaHR0cHM6KT9cXC9cXC9bMC05YS16LjpbXFxdLV0rXFwvfFxcL1teL1xcXFxdfFteOi9cXFxcJV0rXFwvfFteOi9cXFxcJV0qWz8jXXxhYm91dDpibGFuayMpL2ksQ2Q9L14oW14/I10qKShcXD9bXiNdKik/KCNbXFxzXFxTXSopPy8sd2Q9e30sQmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB4ZChhLHdkKX0sRGQ9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGw9PWMpcmV0dXJuIGI7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBjKXJldHVybiBjP2ErZW5jb2RlVVJJQ29tcG9uZW50KGMpOlwiXCI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/XCImXCI6XCJcIikrZW5jb2RlVVJJQ29tcG9uZW50KGQpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O3ZhciBFZD1mdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLWIubGVuZ3RoO3JldHVybiAwPD1jJiZhLmluZGV4T2YoYixjKT09Y30sRmQ9ZnVuY3Rpb24oYSl7cmV0dXJuL15bXFxzXFx4YTBdKiQvLnRlc3QoYSl9LEdkPWZ1bmN0aW9uKGEpe3JldHVybi9eW1xcc1xceGEwXSooW1xcc1xcU10qPylbXFxzXFx4YTBdKiQvLmV4ZWMoYSlbMV19LEhkPS8mL2csSWQ9LzwvZyxKZD0vPi9nLEtkPS9cIi9nLExkPS8nL2csTWQ9L1xceDAwL2csTmQ9L1tcXHgwMCY8PlwiJ10vLFBkPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPUdkKFN0cmluZyhhKSkuc3BsaXQoXCIuXCIpO2I9R2QoU3RyaW5nKGIpKS5zcGxpdChcIi5cIik7Zm9yKHZhciBkPU1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKSxlPTA7MD09YyYmZTxkO2UrKyl7dmFyIGY9YVtlXXx8XCJcIixnPWJbZV18fFwiXCI7ZG97Zj0vKFxcZCopKFxcRCopKC4qKS8uZXhlYyhmKXx8W1wiXCIsXCJcIixcIlwiLFwiXCJdO2c9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtpZigwPT1mWzBdLmxlbmd0aCYmMD09Z1swXS5sZW5ndGgpYnJlYWs7Yz1PZCgwPT1mWzFdLmxlbmd0aD8wOnBhcnNlSW50KGZbMV0sMTApLDA9PWdbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoZ1sxXSwxMCkpfHxPZCgwPT1mWzJdLmxlbmd0aCwwPT1nWzJdLmxlbmd0aCl8fE9kKGZbMl0sZ1syXSk7Zj1mWzNdO2c9Z1szXX13aGlsZSgwPT1jKX1yZXR1cm4gY30sT2Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYTxiPy0xOmE+Yj8xOjB9O3ZhciBUZCxRZDtfLlJkPWZ1bmN0aW9uKGEsYil7dGhpcy5qPWI9PT1RZD9hOlwiXCJ9O18uUmQucHJvdG90eXBlLmxiPSEwO18uUmQucHJvdG90eXBlLk5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTtfLlNkPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5SZCYmYS5jb25zdHJ1Y3Rvcj09PV8uUmQ/YS5qOlwidHlwZV9lcnJvcjpTYWZlVXJsXCJ9O1RkPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO18uVWQ9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uUmQpcmV0dXJuIGE7YT1cIm9iamVjdFwiPT10eXBlb2YgYSYmYS5sYj9hLk5hKCk6U3RyaW5nKGEpO1RkLnRlc3QoYSl8fChhPVwiYWJvdXQ6aW52YWxpZCN6Q2xvc3VyZXpcIik7cmV0dXJuIG5ldyBfLlJkKGEsUWQpfTtRZD17fTt2YXIgVmQ7YTp7dmFyIFdkPV8uci5uYXZpZ2F0b3I7aWYoV2Qpe3ZhciBYZD1XZC51c2VyQWdlbnQ7aWYoWGQpe1ZkPVhkO2JyZWFrIGF9fVZkPVwiXCJ9dmFyIEw9ZnVuY3Rpb24oYSl7cmV0dXJuLTEhPVZkLmluZGV4T2YoYSl9LFlkPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0vKFxcd1tcXHcgXSspXFwvKFteXFxzXSspXFxzKig/OlxcKCguKj8pXFwpKT8vZyxjPVtdLGQ7ZD1iLmV4ZWMoYSk7KWMucHVzaChbZFsxXSxkWzJdLGRbM118fHZvaWQgMF0pO3JldHVybiBjfTt2YXIgWmQ9ZnVuY3Rpb24oKXtyZXR1cm4gTChcIlRyaWRlbnRcIil8fEwoXCJNU0lFXCIpfSwkZD1mdW5jdGlvbigpe3JldHVybiBMKFwiRmlyZWZveFwiKXx8TChcIkZ4aU9TXCIpfSxiZT1mdW5jdGlvbigpe3JldHVybiBMKFwiU2FmYXJpXCIpJiYhKGFlKCl8fEwoXCJDb2FzdFwiKXx8TChcIk9wZXJhXCIpfHxMKFwiRWRnZVwiKXx8TChcIkVkZy9cIil8fEwoXCJPUFJcIil8fCRkKCl8fEwoXCJTaWxrXCIpfHxMKFwiQW5kcm9pZFwiKSl9LGFlPWZ1bmN0aW9uKCl7cmV0dXJuKEwoXCJDaHJvbWVcIil8fEwoXCJDcmlPU1wiKSkmJiFMKFwiRWRnZVwiKX0sZGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGUpe2U9WmMoZSxkKTtyZXR1cm4gY1tlXXx8XCJcIn12YXIgYj1WZDtpZihaZCgpKXJldHVybiBjZShiKTtiPVlkKGIpO3ZhciBjPXt9O18uVmMoYixmdW5jdGlvbihlKXtjW2VbMF1dPWVbMV19KTt2YXIgZD1fLlNjKG1kLGMpO3JldHVybiBMKFwiT3BlcmFcIik/YShbXCJWZXJzaW9uXCIsXCJPcGVyYVwiXSk6TChcIkVkZ2VcIik/YShbXCJFZGdlXCJdKTpMKFwiRWRnL1wiKT9hKFtcIkVkZ1wiXSk6YWUoKT9hKFtcIkNocm9tZVwiLFwiQ3JpT1NcIixcIkhlYWRsZXNzQ2hyb21lXCJdKTooYj1iWzJdKSYmYlsxXXx8XCJcIn0sY2U9ZnVuY3Rpb24oYSl7dmFyIGI9L3J2OiAqKFtcXGRcXC5dKikvLmV4ZWMoYSk7aWYoYiYmYlsxXSlyZXR1cm4gYlsxXTtiPVwiXCI7dmFyIGM9L01TSUUgKyhbXFxkXFwuXSspLy5leGVjKGEpO2lmKGMmJmNbMV0paWYoYT0vVHJpZGVudFxcLyhcXGQuXFxkKS8uZXhlYyhhKSxcIjcuMFwiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgXCI0LjBcIjpiPVwiOC4wXCI7YnJlYWs7Y2FzZSBcIjUuMFwiOmI9XCI5LjBcIjticmVhaztjYXNlIFwiNi4wXCI6Yj1cIjEwLjBcIjticmVhaztjYXNlIFwiNy4wXCI6Yj1cIjExLjBcIn1lbHNlIGI9XCI3LjBcIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn07dmFyIGZlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmo9Yz09PWVlP2E6XCJcIn07ZmUucHJvdG90eXBlLmxiPSEwO2ZlLnByb3RvdHlwZS5OYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmoudG9TdHJpbmcoKX07dmFyIGVlPXt9O3ZhciBBYT1mdW5jdGlvbihhLGIpe2Euc3JjPXlkKGIpOyhiPUZjKGEub3duZXJEb2N1bWVudCYmYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSkmJmEuc2V0QXR0cmlidXRlKFwibm9uY2VcIixiKX07dmFyIGdlLGhlLGllLGplLGxlO2dlPWZ1bmN0aW9uKGEpe05kLnRlc3QoYSkmJigtMSE9YS5pbmRleE9mKFwiJlwiKSYmKGE9YS5yZXBsYWNlKEhkLFwiJmFtcDtcIikpLC0xIT1hLmluZGV4T2YoXCI8XCIpJiYoYT1hLnJlcGxhY2UoSWQsXCImbHQ7XCIpKSwtMSE9YS5pbmRleE9mKFwiPlwiKSYmKGE9YS5yZXBsYWNlKEpkLFwiJmd0O1wiKSksLTEhPWEuaW5kZXhPZignXCInKSYmKGE9YS5yZXBsYWNlKEtkLFwiJnF1b3Q7XCIpKSwtMSE9YS5pbmRleE9mKFwiJ1wiKSYmKGE9YS5yZXBsYWNlKExkLFwiJiMzOTtcIikpLC0xIT1hLmluZGV4T2YoXCJcXHgwMFwiKSYmKGE9YS5yZXBsYWNlKE1kLFwiJiMwO1wiKSkpO3JldHVybiBhfTtoZT1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTtpZT1mdW5jdGlvbihhKXthPVN0cmluZyhhKTt2YXIgYj1hLmluZGV4T2YoXCIuXCIpOy0xPT1iJiYoYj1hLmxlbmd0aCk7cmV0dXJuIGhlKFwiMFwiLE1hdGgubWF4KDAsMi1iKSkrYX07amU9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleVGMoKSkudG9TdHJpbmcoMzYpfTtfLmtlPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvXFwtKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGMudG9VcHBlckNhc2UoKX0pfTtsZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXnxbXFxzXSspKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYytkLnRvVXBwZXJDYXNlKCl9KX07dmFyIGFhPTAsYmE9MDt2YXIgbWU9ZnVuY3Rpb24oKXt0aGlzLmo9W119O21lLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmxlbmd0aH07dmFyIG5lPWZ1bmN0aW9uKGEpe3ZhciBiPWEuajthLmo9W107cmV0dXJuIGJ9LG9lPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hYSxjPWJhOzA8Y3x8MTI3PGI7KWEuai5wdXNoKGImMTI3fDEyOCksYj0oYj4+Pjd8Yzw8MjUpPj4+MCxjPj4+PTc7YS5qLnB1c2goYil9LHBlPWZ1bmN0aW9uKGEsYil7Zm9yKDsxMjc8YjspYS5qLnB1c2goYiYxMjd8MTI4KSxiPj4+PTc7YS5qLnB1c2goYil9O3ZhciBxZT1mdW5jdGlvbigpe3JldHVybiBMKFwiaVBob25lXCIpJiYhTChcImlQb2RcIikmJiFMKFwiaVBhZFwiKX07dmFyIHJlPWZ1bmN0aW9uKGEpe3JlW1wiIFwiXShhKTtyZXR1cm4gYX07cmVbXCIgXCJdPV8uSGM7dmFyIHNlPWZ1bmN0aW9uKGEsYil7dHJ5e3JldHVybiByZShhW2JdKSwhMH1jYXRjaChjKXt9cmV0dXJuITF9LEViPWZ1bmN0aW9uKGEsYixjLGQpe2Q9ZD9kKGIpOmI7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGQpP2FbZF06YVtkXT1jKGIpfTt2YXIgdGUsdmUsd2UseGUseWUsemUsQWUsQmUsQ2UsRGUsRWUsRmU7dGU9TChcIk9wZXJhXCIpO18udWU9WmQoKTt2ZT1MKFwiRWRnZVwiKTt3ZT12ZXx8Xy51ZTt4ZT1MKFwiR2Vja29cIikmJiEoLTEhPVZkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndlYmtpdFwiKSYmIUwoXCJFZGdlXCIpKSYmIShMKFwiVHJpZGVudFwiKXx8TChcIk1TSUVcIikpJiYhTChcIkVkZ2VcIik7eWU9LTEhPVZkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIndlYmtpdFwiKSYmIUwoXCJFZGdlXCIpO3plPXllJiZMKFwiTW9iaWxlXCIpO0FlPUwoXCJBbmRyb2lkXCIpO0JlPXFlKCk7Q2U9TChcImlQYWRcIik7RGU9TChcImlQb2RcIik7RWU9ZnVuY3Rpb24oKXt2YXIgYT1fLnIuZG9jdW1lbnQ7cmV0dXJuIGE/YS5kb2N1bWVudE1vZGU6dm9pZCAwfTthOnt2YXIgR2U9XCJcIixIZT1mdW5jdGlvbigpe3ZhciBhPVZkO2lmKHhlKXJldHVybi9ydjooW15cXCk7XSspKFxcKXw7KS8uZXhlYyhhKTtpZih2ZSlyZXR1cm4vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGEpO2lmKF8udWUpcmV0dXJuL1xcYig/Ok1TSUV8cnYpWzogXShbXlxcKTtdKykoXFwpfDspLy5leGVjKGEpO2lmKHllKXJldHVybi9XZWJLaXRcXC8oXFxTKykvLmV4ZWMoYSk7aWYodGUpcmV0dXJuLyg/OlZlcnNpb24pWyBcXC9dPyhcXFMrKS8uZXhlYyhhKX0oKTtIZSYmKEdlPUhlP0hlWzFdOlwiXCIpO2lmKF8udWUpe3ZhciBJZT1FZSgpO2lmKG51bGwhPUllJiZJZT5wYXJzZUZsb2F0KEdlKSl7RmU9U3RyaW5nKEllKTticmVhayBhfX1GZT1HZX12YXIgSmU9RmUsS2U9e30sTGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEViKEtlLGEsZnVuY3Rpb24oKXtyZXR1cm4gMDw9UGQoSmUsYSl9KX0sTWU7aWYoXy5yLmRvY3VtZW50JiZfLnVlKXt2YXIgTmU9RWUoKTtNZT1OZT9OZTpwYXJzZUludChKZSwxMCl8fHZvaWQgMH1lbHNlIE1lPXZvaWQgMDt2YXIgT2U9TWU7dmFyIFBlPWFlKCksUWU9YmUoKSYmIShxZSgpfHxMKFwiaVBhZFwiKXx8TChcImlQb2RcIikpO3ZhciBSZT17fSxTZT1udWxsLFRlPXhlfHx5ZSYmIVFlfHx0ZXx8XCJmdW5jdGlvblwiPT10eXBlb2YgXy5yLmJ0b2EsVWU9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj0wKTtpZighU2Upe1NlPXt9O2Zvcih2YXIgYz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksZD1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0sZT0wOzU+ZTtlKyspe3ZhciBmPWMuY29uY2F0KGRbZV0uc3BsaXQoXCJcIikpO1JlW2VdPWY7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107dm9pZCAwPT09U2VbaF0mJihTZVtoXT1nKX19fWI9UmVbYl07Yz1bXTtmb3IoZD0wO2Q8YS5sZW5ndGg7ZCs9Myl7dmFyIGs9YVtkXSxsPShlPWQrMTxhLmxlbmd0aCk/YVtkKzFdOjA7aD0oZj1kKzI8YS5sZW5ndGgpP2FbZCsyXTowO2c9az4+MjtrPShrJjMpPDw0fGw+PjQ7bD0obCYxNSk8PDJ8aD4+NjtoJj02MztmfHwoaD02NCxlfHwobD02NCkpO2MucHVzaChiW2ddLGJba10sYltsXXx8XCJcIixiW2hdfHxcIlwiKX1yZXR1cm4gYy5qb2luKFwiXCIpfSxWZT1mdW5jdGlvbihhLGIpe2lmKFRlJiYhYilhPV8uci5idG9hKGEpO2Vsc2V7Zm9yKHZhciBjPVtdLGQ9MCxlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPWEuY2hhckNvZGVBdChlKTsyNTU8ZiYmKGNbZCsrXT1mJjI1NSxmPj49OCk7Y1tkKytdPWZ9YT1VZShjLGIpfXJldHVybiBhfTt2YXIgV2U9ZnVuY3Rpb24oKXt0aGlzLnY9W107dGhpcy5sPTA7dGhpcy5qPW5ldyBtZX0sWGU9ZnVuY3Rpb24oYSxiKXtwZShhLmosOCpiKzIpO2I9bmUoYS5qKTthLnYucHVzaChiKTthLmwrPWIubGVuZ3RoO2IucHVzaChhLmwpO3JldHVybiBifSxZZT1mdW5jdGlvbihhLGIpe3ZhciBjPWIucG9wKCk7Zm9yKGM9YS5sK2Euai5sZW5ndGgoKS1jOzEyNzxjOyliLnB1c2goYyYxMjd8MTI4KSxjPj4+PTcsYS5sKys7Yi5wdXNoKGMpO2EubCsrfSxaZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IFVpbnQ4QXJyYXkoYS5sK2Euai5sZW5ndGgoKSksYz1hLnYsZD1jLmxlbmd0aCxlPTAsZj0wO2Y8ZDtmKyspe3ZhciBnPWNbZl07Yi5zZXQoZyxlKTtlKz1nLmxlbmd0aH1jPW5lKGEuaik7Yi5zZXQoYyxlKTthLnY9W2JdO3JldHVybiBifSwkZT1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9YyYmbnVsbCE9YylpZihwZShhLmosOCpiKSxhPWEuaiwwPD1jKXBlKGEsYyk7ZWxzZXtmb3IoYj0wOzk+YjtiKyspYS5qLnB1c2goYyYxMjd8MTI4KSxjPj49NzthLmoucHVzaCgxKX19LGFmPWZ1bmN0aW9uKGEsYixjKXtudWxsIT1jJiZudWxsIT1jJiYocGUoYS5qLDgqYiksYT1hLmosY2EoYyksb2UoYSkpfSxiZj1mdW5jdGlvbihhLGIsYyl7bnVsbCE9YyYmbnVsbCE9YyYmKHBlKGEuaiw4KmIpLGE9YS5qLGNhKGMpLG9lKGEpKX0sY2Y9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPWMpe2I9WGUoYSxiKTtmb3IodmFyIGQ9YS5qLGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Yy5jaGFyQ29kZUF0KGUpO2lmKDEyOD5mKWQuai5wdXNoKGYpO2Vsc2UgaWYoMjA0OD5mKWQuai5wdXNoKGY+PjZ8MTkyKSxkLmoucHVzaChmJjYzfDEyOCk7ZWxzZSBpZig2NTUzNj5mKWlmKDU1Mjk2PD1mJiY1NjMxOT49ZiYmZSsxPGMubGVuZ3RoKXt2YXIgZz1jLmNoYXJDb2RlQXQoZSsxKTs1NjMyMDw9ZyYmNTczNDM+PWcmJihmPTEwMjQqKGYtNTUyOTYpK2ctNTYzMjArNjU1MzYsZC5qLnB1c2goZj4+MTh8MjQwKSxkLmoucHVzaChmPj4xMiY2M3wxMjgpLGQuai5wdXNoKGY+PjYmNjN8MTI4KSxkLmoucHVzaChmJjYzfDEyOCksZSsrKX1lbHNlIGQuai5wdXNoKGY+PjEyfDIyNCksZC5qLnB1c2goZj4+NiY2M3wxMjgpLGQuai5wdXNoKGYmNjN8MTI4KX1ZZShhLGIpfX0sZWY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWRmO251bGwhPWMmJihiPVhlKGEsYiksZChjLGEpLFllKGEsYikpfSxmZj1mdW5jdGlvbihhLGIsYyxkKXtpZihudWxsIT1jKWZvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1YZShhLGIpO2QoY1tlXSxhKTtZZShhLGYpfX07dmFyIE09ZnVuY3Rpb24oKXt9LGdmPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksa2Y9ZnVuY3Rpb24oYSxiLGMsZCl7YS5qPW51bGw7Ynx8KGI9W10pO2EuQz12b2lkIDA7YS52PS0xO2EuaWE9YjthOntpZihiPWEuaWEubGVuZ3RoKXstLWI7dmFyIGU9YS5pYVtiXTtpZighKG51bGw9PT1lfHxcIm9iamVjdFwiIT10eXBlb2YgZXx8QXJyYXkuaXNBcnJheShlKXx8Z2YmJmUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl7YS5vPWItYS52O2EubD1lO2JyZWFrIGF9fWEubz1OdW1iZXIuTUFYX1ZBTFVFfWEuQT17fTtpZihjKWZvcihiPTA7YjxjLmxlbmd0aDtiKyspZT1jW2JdLGU8YS5vPyhlKz1hLnYsYS5pYVtlXT1hLmlhW2VdfHxoZik6KGpmKGEpLGEubFtlXT1hLmxbZV18fGhmKTtpZihkJiZkLmxlbmd0aClmb3IoYj0wO2I8ZC5sZW5ndGg7YisrKXtlPWM9dm9pZCAwO2Zvcih2YXIgZj1hLGc9ZFtiXSxoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciBrPWdbaF0sbD1CKGYsayk7bnVsbCE9bCYmKGU9ayxjPWwsRChmLGssdm9pZCAwKSl9ZSYmRChmLGUsYyl9fSxoZj1bXSxqZj1mdW5jdGlvbihhKXt2YXIgYj1hLm8rYS52O2EuaWFbYl18fChhLmw9YS5pYVtiXT17fSl9LEI9ZnVuY3Rpb24oYSxiKXtpZihiPGEubyl7Yis9YS52O3ZhciBjPWEuaWFbYl07cmV0dXJuIGM9PT1oZj9hLmlhW2JdPVtdOmN9aWYoYS5sKXJldHVybiBjPWEubFtiXSxjPT09aGY/YS5sW2JdPVtdOmN9LGxmPWZ1bmN0aW9uKGEsYil7YT1CKGEsYik7cmV0dXJuIG51bGw9PWE/YTorYX0seD1mdW5jdGlvbihhLGIpe2E9QihhLGIpO3JldHVybiBudWxsPT1hP2E6ISFhfSxtZj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6Z2YmJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5P1VlKGEpOm51bGx9LG5mPWZ1bmN0aW9uKGEsYixjKXthPUIoYSxiKTtyZXR1cm4gbnVsbD09YT9jOmF9LG9mPWZ1bmN0aW9uKGEpe2E9eChhLDEyKTtyZXR1cm4gbnVsbD09YT8hMTphfSxwZj1mdW5jdGlvbihhKXthPWxmKGEsMik7cmV0dXJuIG51bGw9PWE/MTphfSxEPWZ1bmN0aW9uKGEsYixjKXtiPGEubz9hLmlhW2IrYS52XT1jOihqZihhKSxhLmxbYl09Yyk7cmV0dXJuIGF9LHJmPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcWYoYSxiLGMsITEpfSxxZj1mdW5jdGlvbihhLGIsYyxkKXtjIT09ZD9EKGEsYixjKTpiPGEubz9hLmlhW2IrYS52XT1udWxsOihqZihhKSxkZWxldGUgYS5sW2JdKTtyZXR1cm4gYX0sc2Y9ZnVuY3Rpb24oYSxiLGMpe0IoYSxiKS5wdXNoKGMpfSxPPWZ1bmN0aW9uKGEsYixjKXthLmp8fChhLmo9e30pO2lmKCFhLmpbY10pe3ZhciBkPUIoYSxjKTtkJiYoYS5qW2NdPW5ldyBiKGQpKX1yZXR1cm4gYS5qW2NdfSx1Zj1mdW5jdGlvbihhLGIsYyl7dGYoYSxiLGMpO2I9YS5qW2NdO2I9PWhmJiYoYj1hLmpbY109W10pO3JldHVybiBifSx0Zj1mdW5jdGlvbihhLGIsYyl7YS5qfHwoYS5qPXt9KTtpZighYS5qW2NdKXtmb3IodmFyIGQ9QihhLGMpLGU9W10sZj0wO2Y8ZC5sZW5ndGg7ZisrKWVbZl09bmV3IGIoZFtmXSk7YS5qW2NdPWV9fSx2Zj1mdW5jdGlvbihhLGIsYyl7YS5qfHwoYS5qPXt9KTt2YXIgZD1jP2MuaWE6YzthLmpbYl09YztyZXR1cm4gRChhLGIsZCl9LHdmPWZ1bmN0aW9uKGEsYixjKXthLmp8fChhLmo9e30pO2M9Y3x8W107Zm9yKHZhciBkPVtdLGU9MDtlPGMubGVuZ3RoO2UrKylkW2VdPWNbZV0uaWE7YS5qW2JdPWM7cmV0dXJuIEQoYSxiLGQpfSx4Zj1mdW5jdGlvbihhLGIsYyxkKXt0ZihhLGQsYik7dmFyIGU9YS5qW2JdO2V8fChlPWEualtiXT1bXSk7Yz1jP2M6bmV3IGQ7YT1CKGEsYik7ZS5wdXNoKGMpO2EucHVzaChjLmlhKX07TS5wcm90b3R5cGUubT1nZj9mdW5jdGlvbigpe3ZhciBhPVVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSlNPTjtVaW50OEFycmF5LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gVWUodGhpcyl9O3RyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pYSYmdGhpcy5pYSx5Zil9ZmluYWxseXtVaW50OEFycmF5LnByb3RvdHlwZS50b0pTT049YX19OmZ1bmN0aW9uKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaWEmJnRoaXMuaWEseWYpfTt2YXIgeWY9ZnVuY3Rpb24oYSxiKXtyZXR1cm5cIm51bWJlclwiIT09dHlwZW9mIGJ8fCFpc05hTihiKSYmSW5maW5pdHkhPT1iJiYtSW5maW5pdHkhPT1iP2I6U3RyaW5nKGIpfSx6Zj1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgYShiP0pTT04ucGFyc2UoYik6bnVsbCl9LEFmPWZ1bmN0aW9uKGEpe2lmKEFycmF5LmlzQXJyYXkoYSkpe2Zvcih2YXIgYj1BcnJheShhLmxlbmd0aCksYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdO251bGwhPWQmJihiW2NdPVwib2JqZWN0XCI9PXR5cGVvZiBkP0FmKGQpOmQpfXJldHVybiBifWlmKGdmJiZhIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSk7Yj17fTtmb3IoYyBpbiBhKWQ9YVtjXSxudWxsIT1kJiYoYltjXT1cIm9iamVjdFwiPT10eXBlb2YgZD9BZihkKTpkKTtyZXR1cm4gYn07dmFyIEJmPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKEJmLE0pO3ZhciBDZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhDZixNKTt2YXIgRGY9ZG9jdW1lbnQsRWY9d2luZG93O3ZhciBGZj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhGZixNKTt2YXIgR2Y9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soR2YsTSk7dmFyIFBhPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfHx7Y29va2llOlwiXCJ9fTtQYS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMpe3ZhciBlPWMueWU7ZD1jLnZkfHwhMTt2YXIgZj1jLmRvbWFpbnx8dm9pZCAwO3ZhciBnPWMucGF0aHx8dm9pZCAwO3ZhciBoPWMud2N9aWYoL1s7PVxcc10vLnRlc3QoYSkpdGhyb3cgRXJyb3IoJ0ludmFsaWQgY29va2llIG5hbWUgXCInK2ErJ1wiJyk7aWYoL1s7XFxyXFxuXS8udGVzdChiKSl0aHJvdyBFcnJvcignSW52YWxpZCBjb29raWUgdmFsdWUgXCInK2IrJ1wiJyk7dm9pZCAwPT09aCYmKGg9LTEpO2M9Zj9cIjtkb21haW49XCIrZjpcIlwiO2c9Zz9cIjtwYXRoPVwiK2c6XCJcIjtkPWQ/XCI7c2VjdXJlXCI6XCJcIjtoPTA+aD9cIlwiOjA9PWg/XCI7ZXhwaXJlcz1cIisobmV3IERhdGUoMTk3MCwxLDEpKS50b1VUQ1N0cmluZygpOlwiO2V4cGlyZXM9XCIrKG5ldyBEYXRlKFRjKCkrMUUzKmgpKS50b1VUQ1N0cmluZygpO3RoaXMuai5jb29raWU9YStcIj1cIitiK2MrZytoK2QrKG51bGwhPWU/XCI7c2FtZXNpdGU9XCIrZTpcIlwiKX07UGEucHJvdG90eXBlLmdldD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hK1wiPVwiLGQ9KHRoaXMuai5jb29raWV8fFwiXCIpLnNwbGl0KFwiO1wiKSxlPTAsZjtlPGQubGVuZ3RoO2UrKyl7Zj1HZChkW2VdKTtpZigwPT1mLmxhc3RJbmRleE9mKGMsMCkpcmV0dXJuIGYuc3Vic3RyKGMubGVuZ3RoKTtpZihmPT1hKXJldHVyblwiXCJ9cmV0dXJuIGJ9O1BhLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuai5jb29raWV9O3ZhciBIZj1mdW5jdGlvbihhKXtyZXR1cm4oYT0obmV3IFBhKGEpKS5nZXQoXCJEQVRBX1VTRV9DT05TRU5UXCIsXCJcIikpP2E6bnVsbH0sSWY9ZnVuY3Rpb24oYSl7dmFyIGI9KGI9KG5ldyBQYShhKSkuZ2V0KFwiRkNDRENGXCIsXCJcIikpP2I6bnVsbDt0cnl7dmFyIGM9Yj96ZihGZixiKTpudWxsfWNhdGNoKGQpe2M9bnVsbH1pZighYylyZXR1cm4gSGYoYSk7Yz1PKGMsR2YsMyk7aWYoIWN8fG51bGw9PUIoYywxKSlyZXR1cm4gSGYoYSk7YT1CKGMsMik7Yj1EYXRlLm5vdygpO2lmKGEpe2lmKGI8YXx8Yj5hKzMzNjk2RTYpcmV0dXJuIG51bGx9ZWxzZSByZXR1cm4gbnVsbDtyZXR1cm4gQihjLDEpfTt2YXIgS2Y9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLEpmLG51bGwpfTtLKEtmLE0pO3ZhciBKZj1bMSwyLDMsNF07dmFyIGRhO2RhPXZhKGZ1bmN0aW9uKCl7dmFyIGE9ITE7dHJ5e3ZhciBiPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7YT0hMH19KTtfLnIuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixudWxsLGIpfWNhdGNoKGMpe31yZXR1cm4gYX0pO18udj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyPyhhLmFkZEV2ZW50TGlzdGVuZXIoYixjLGVhKGQpKSwhMCk6ITF9O18ucWI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcj8oYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyxlYShkKSksITApOiExfTt2YXIgTGY9ZnVuY3Rpb24oYSl7dGhpcy5qPXRoaXMubz10aGlzLkE9MDt0aGlzLmw9YTt0aGlzLm09dGhpcy52PTB9O0xmLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy5BKz1hLkE7dGhpcy5vKz1hLm87dGhpcy5qKz1hLmo7dGhpcy5sKz1hLmw7dGhpcy52Kz1hLnY7dGhpcy5tKz1hLm19O3ZhciBPZj1mdW5jdGlvbihhLGIsYyl7XCJudW1iZXJcIj09PXR5cGVvZiBhPyh0aGlzLmo9TWYoYSxifHwwLGN8fDEpLE5mKHRoaXMsY3x8MSkpOl8uTWMoYSk/KHRoaXMuaj1NZihhLmdldEZ1bGxZZWFyKCksYS5nZXRNb250aCgpLGEuZ2V0RGF0ZSgpKSxOZih0aGlzLGEuZ2V0RGF0ZSgpKSk6KHRoaXMuaj1uZXcgRGF0ZShUYygpKSxhPXRoaXMuai5nZXREYXRlKCksdGhpcy5qLnNldEhvdXJzKDApLHRoaXMuai5zZXRNaW51dGVzKDApLHRoaXMuai5zZXRTZWNvbmRzKDApLHRoaXMuai5zZXRNaWxsaXNlY29uZHMoMCksTmYodGhpcyxhKSl9LE1mPWZ1bmN0aW9uKGEsYixjKXtiPW5ldyBEYXRlKGEsYixjKTswPD1hJiYxMDA+YSYmYi5zZXRGdWxsWWVhcihiLmdldEZ1bGxZZWFyKCktMTkwMCk7cmV0dXJuIGJ9O18ucD1PZi5wcm90b3R5cGU7Xy5wLmdldEZ1bGxZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXRGdWxsWWVhcigpfTtfLnAuZ2V0TW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLmdldE1vbnRoKCl9O18ucC5nZXREYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXREYXRlKCl9O18ucC5nZXRUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5nZXRUaW1lKCl9O18ucC5zZXQ9ZnVuY3Rpb24oYSl7dGhpcy5qPW5ldyBEYXRlKGEuZ2V0RnVsbFllYXIoKSxhLmdldE1vbnRoKCksYS5nZXREYXRlKCkpfTtfLnAuYWRkPWZ1bmN0aW9uKGEpe2lmKGEuQXx8YS5vKXt2YXIgYj10aGlzLmdldE1vbnRoKCkrYS5vKzEyKmEuQSxjPXRoaXMuZ2V0RnVsbFllYXIoKStNYXRoLmZsb29yKGIvMTIpO2IlPTEyOzA+YiYmKGIrPTEyKTthOntzd2l0Y2goYil7Y2FzZSAxOnZhciBkPTAhPWMlNHx8MD09YyUxMDAmJjAhPWMlNDAwPzI4OjI5O2JyZWFrIGE7Y2FzZSA1OmNhc2UgODpjYXNlIDEwOmNhc2UgMzpkPTMwO2JyZWFrIGF9ZD0zMX1kPU1hdGgubWluKGQsdGhpcy5nZXREYXRlKCkpO3RoaXMuai5zZXREYXRlKDEpO3RoaXMuai5zZXRGdWxsWWVhcihjKTt0aGlzLmouc2V0TW9udGgoYik7dGhpcy5qLnNldERhdGUoZCl9YS5qJiYoYT1uZXcgRGF0ZSgobmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLHRoaXMuZ2V0TW9udGgoKSx0aGlzLmdldERhdGUoKSwxMikpLmdldFRpbWUoKSs4NjRFNSphLmopLHRoaXMuai5zZXREYXRlKDEpLHRoaXMuai5zZXRGdWxsWWVhcihhLmdldEZ1bGxZZWFyKCkpLHRoaXMuai5zZXRNb250aChhLmdldE1vbnRoKCkpLHRoaXMuai5zZXREYXRlKGEuZ2V0RGF0ZSgpKSxOZih0aGlzLGEuZ2V0RGF0ZSgpKSl9O18ucC55Yj1mdW5jdGlvbihhKXtyZXR1cm5bdGhpcy5nZXRGdWxsWWVhcigpLGllKHRoaXMuZ2V0TW9udGgoKSsxKSxpZSh0aGlzLmdldERhdGUoKSldLmpvaW4oYT9cIi1cIjpcIlwiKX07Xy5wLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueWIoKX07dmFyIE5mPWZ1bmN0aW9uKGEsYil7YS5nZXREYXRlKCkhPWImJmEuai5zZXRVVENIb3VycyhhLmouZ2V0VVRDSG91cnMoKSsoYS5nZXREYXRlKCk8Yj8xOi0xKSl9O09mLnByb3RvdHlwZS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai52YWx1ZU9mKCl9O3ZhciBQZj1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt0aGlzLmo9XCJudW1iZXJcIj09PXR5cGVvZiBhP25ldyBEYXRlKGEsYnx8MCxjfHwxLGR8fDAsZXx8MCxmfHwwLGd8fDApOm5ldyBEYXRlKGEmJmEuZ2V0VGltZT9hLmdldFRpbWUoKTpUYygpKX07SyhQZixPZik7dmFyIFFmPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBQZjtiLmouc2V0VGltZShhKTtyZXR1cm4gYn07UGYucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtPZi5wcm90b3R5cGUuYWRkLmNhbGwodGhpcyxhKTthLmwmJnRoaXMuai5zZXRVVENIb3Vycyh0aGlzLmouZ2V0VVRDSG91cnMoKSthLmwpO2EudiYmdGhpcy5qLnNldFVUQ01pbnV0ZXModGhpcy5qLmdldFVUQ01pbnV0ZXMoKSthLnYpO2EubSYmdGhpcy5qLnNldFVUQ1NlY29uZHModGhpcy5qLmdldFVUQ1NlY29uZHMoKSthLm0pfTtQZi5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSl7dmFyIGI9T2YucHJvdG90eXBlLnliLmNhbGwodGhpcyxhKTtyZXR1cm4gYT9iK1wiVFwiK2llKHRoaXMuai5nZXRIb3VycygpKStcIjpcIitpZSh0aGlzLmouZ2V0TWludXRlcygpKStcIjpcIitpZSh0aGlzLmouZ2V0U2Vjb25kcygpKTpiK1wiVFwiK2llKHRoaXMuai5nZXRIb3VycygpKStpZSh0aGlzLmouZ2V0TWludXRlcygpKStpZSh0aGlzLmouZ2V0U2Vjb25kcygpKX07UGYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueWIoKX07dmFyIFJmPSFfLnVlfHw5PD1OdW1iZXIoT2UpLFNmPV8udWV8fHRlfHx5ZTtfLnlhPWZ1bmN0aW9uKGEsYil7dGhpcy54PXZvaWQgMCE9PWE/YTowO3RoaXMueT12b2lkIDAhPT1iP2I6MH07Xy55YS5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9O18ueWEucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3JldHVybiB0aGlzfTtfLnlhLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTtyZXR1cm4gdGhpc307Xy5UZj1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtfLnA9Xy5UZi5wcm90b3R5cGU7Xy5wLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O18ucC5pc0VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLndpZHRoKnRoaXMuaGVpZ2h0KX07Xy5wLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLnAuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O18ucC5yb3VuZD1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307dmFyIFdmLFlmLFhmLGFnLGJnLGRnLGhnLGlnLFVmO1dmPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBVZihfLlZmKGEpKTpVY3x8KFVjPW5ldyBVZil9O1lmPWZ1bmN0aW9uKGEsYil7bGQoYixmdW5jdGlvbihjLGQpe2MmJlwib2JqZWN0XCI9PXR5cGVvZiBjJiZjLmxiJiYoYz1jLk5hKCkpO1wic3R5bGVcIj09ZD9hLnN0eWxlLmNzc1RleHQ9YzpcImNsYXNzXCI9PWQ/YS5jbGFzc05hbWU9YzpcImZvclwiPT1kP2EuaHRtbEZvcj1jOlhmLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKFhmW2RdLGMpOjA9PWQubGFzdEluZGV4T2YoXCJhcmlhLVwiLDApfHwwPT1kLmxhc3RJbmRleE9mKFwiZGF0YS1cIiwwKT9hLnNldEF0dHJpYnV0ZShkLGMpOmFbZF09Y30pfTtYZj17Y2VsbHBhZGRpbmc6XCJjZWxsUGFkZGluZ1wiLGNlbGxzcGFjaW5nOlwiY2VsbFNwYWNpbmdcIixjb2xzcGFuOlwiY29sU3BhblwiLGZyYW1lYm9yZGVyOlwiZnJhbWVCb3JkZXJcIixoZWlnaHQ6XCJoZWlnaHRcIixtYXhsZW5ndGg6XCJtYXhMZW5ndGhcIixub25jZTpcIm5vbmNlXCIscm9sZTpcInJvbGVcIixyb3dzcGFuOlwicm93U3BhblwiLHR5cGU6XCJ0eXBlXCIsdXNlbWFwOlwidXNlTWFwXCIsdmFsaWduOlwidkFsaWduXCIsd2lkdGg6XCJ3aWR0aFwifTtfLiRmPWZ1bmN0aW9uKGEpe2E9YS5kb2N1bWVudDthPV8uWmYoYSk/YS5kb2N1bWVudEVsZW1lbnQ6YS5ib2R5O3JldHVybiBuZXcgXy5UZihhLmNsaWVudFdpZHRoLGEuY2xpZW50SGVpZ2h0KX07YWc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2Nyb2xsaW5nRWxlbWVudD9hLnNjcm9sbGluZ0VsZW1lbnQ6IXllJiZfLlpmKGEpP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keXx8YS5kb2N1bWVudEVsZW1lbnR9O18uY2c9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/YmcoYSk6d2luZG93fTtiZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXd9O2RnPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGgpe2gmJmIuYXBwZW5kQ2hpbGQoXCJzdHJpbmdcIj09PXR5cGVvZiBoP2EuY3JlYXRlVGV4dE5vZGUoaCk6aCl9Zm9yKHZhciBlPTI7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWNbZV07aWYoIUtjKGYpfHxfLk1jKGYpJiYwPGYubm9kZVR5cGUpZChmKTtlbHNle2E6e2lmKGYmJlwibnVtYmVyXCI9PXR5cGVvZiBmLmxlbmd0aCl7aWYoXy5NYyhmKSl7dmFyIGc9XCJmdW5jdGlvblwiPT10eXBlb2YgZi5pdGVtfHxcInN0cmluZ1wiPT10eXBlb2YgZi5pdGVtO2JyZWFrIGF9aWYoTGMoZikpe2c9XCJmdW5jdGlvblwiPT10eXBlb2YgZi5pdGVtO2JyZWFrIGF9fWc9ITF9Xy5WYyhnP2JkKGYpOmYsZCl9fX07Xy5lZz1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO1wiYXBwbGljYXRpb24veGh0bWwreG1sXCI9PT1hLmNvbnRlbnRUeXBlJiYoYj1iLnRvTG93ZXJDYXNlKCkpO3JldHVybiBhLmNyZWF0ZUVsZW1lbnQoYil9O18uWmY9ZnVuY3Rpb24oYSl7cmV0dXJuXCJDU1MxQ29tcGF0XCI9PWEuY29tcGF0TW9kZX07Xy5mZz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5wYXJlbnROb2RlP2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTpudWxsfTtfLmdnPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKFNmJiYhKF8udWUmJkxlKFwiOVwiKSYmIUxlKFwiMTBcIikmJl8uci5TVkdFbGVtZW50JiZhIGluc3RhbmNlb2YgXy5yLlNWR0VsZW1lbnQpJiYoYj1hLnBhcmVudEVsZW1lbnQpKXJldHVybiBiO2I9YS5wYXJlbnROb2RlO3JldHVybiBfLk1jKGIpJiYxPT1iLm5vZGVUeXBlP2I6bnVsbH07Xy5WZj1mdW5jdGlvbihhKXtyZXR1cm4gOT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudH07aGc9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLmNvbnRlbnRXaW5kb3d8fChhLmNvbnRlbnREb2N1bWVudD9fLmNnKGEuY29udGVudERvY3VtZW50KTpudWxsKX1jYXRjaChiKXt9cmV0dXJuIG51bGx9O2lnPWZ1bmN0aW9uKGEsYil7aWYoOT09YS5ub2RlVHlwZSl2YXIgYz1bYS5kb2N1bWVudEVsZW1lbnRdO2Vsc2UgZm9yKGM9W10sYT1hLmxhc3RFbGVtZW50Q2hpbGQ7YTthPWEucHJldmlvdXNFbGVtZW50U2libGluZyljLnB1c2goYSk7Zm9yKDswPGMubGVuZ3RoOyl7YT1jLnBvcCgpO2lmKGIoYSkpcmV0dXJuIGE7Zm9yKGE9YS5sYXN0RWxlbWVudENoaWxkO2E7YT1hLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpYy5wdXNoKGEpfXJldHVybiBudWxsfTtVZj1mdW5jdGlvbihhKXt0aGlzLmo9YXx8Xy5yLmRvY3VtZW50fHxkb2N1bWVudH07VWYucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuaixlPWFyZ3VtZW50cyxmPVN0cmluZyhlWzBdKSxnPWVbMV07aWYoIVJmJiZnJiYoZy5uYW1lfHxnLnR5cGUpKXtmPVtcIjxcIixmXTtnLm5hbWUmJmYucHVzaCgnIG5hbWU9XCInLGdlKGcubmFtZSksJ1wiJyk7aWYoZy50eXBlKXtmLnB1c2goJyB0eXBlPVwiJyxnZShnLnR5cGUpLCdcIicpO3ZhciBoPXt9O3BkKGgsZyk7ZGVsZXRlIGgudHlwZTtnPWh9Zi5wdXNoKFwiPlwiKTtmPWYuam9pbihcIlwiKX1mPV8uZWcoZCxmKTtnJiYoXCJzdHJpbmdcIj09PXR5cGVvZiBnP2YuY2xhc3NOYW1lPWc6QXJyYXkuaXNBcnJheShnKT9mLmNsYXNzTmFtZT1nLmpvaW4oXCIgXCIpOllmKGYsZykpOzI8ZS5sZW5ndGgmJmRnKGQsZixlKTtyZXR1cm4gZn07dmFyIGpnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZWcoYS5qLGIpfTt2YXIgbGc9ZnVuY3Rpb24oYSl7a2coKTtyZXR1cm4gQmQoYSl9LGtnPV8uSGM7dmFyIG1nPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJpUGFkXCIpfHxMKFwiQW5kcm9pZFwiKSYmIUwoXCJNb2JpbGVcIil8fEwoXCJTaWxrXCIpfTt2YXIgb2cscGcsZWI7Xy5uZz0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87b2c9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ZGVjb2RlVVJJKGEpOmF9O3BnPWZ1bmN0aW9uKGEsYixjKXtpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXBnKGEsU3RyaW5nKGJbZF0pLGMpO2Vsc2UgbnVsbCE9YiYmYy5wdXNoKGErKFwiXCI9PT1iP1wiXCI6XCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhiKSkpKX07ZWI9LyN8JC87dmFyIHFnLHNnLGhhLHJnLHRnLHVnLHdhLHhnLHdnLHlnLHpnLEJnLENnLHZnLEVnLEZnLERnLEdnLElnLEpnLEtnLExnLE1nLE5nLE9nLFBnLGZhLFFnLFJnLFNnLFVnLFdnLFlnLCRnLGFoLFpnLGJoLGNoLGRoLGVoLGZoLGdoLGhoLGloLGpoLGJiLGtoLGxoLG1oO3FnPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4hIWEmJm51bGwhPWEubG9jYXRpb24uaHJlZiYmc2UoYSxcImZvb1wiKX1jYXRjaChiKXtyZXR1cm4hMX19O3NnPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1fLnIsYz0wO2ImJjQwPmMrKyYmKCFxZyhiKXx8IWEoYikpOyliPXJnKGIpfTtoYT1mdW5jdGlvbigpe3ZhciBhPV8ucjtzZyhmdW5jdGlvbihiKXthPWI7cmV0dXJuITF9KTtyZXR1cm4gYX07cmc9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPWEucGFyZW50O2lmKGImJmIhPWEpcmV0dXJuIGJ9Y2F0Y2goYyl7fXJldHVybiBudWxsfTt0Zz1mdW5jdGlvbihhKXtyZXR1cm4gcWcoYS50b3ApP2EudG9wOm51bGx9O3VnPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO0FhKGMsXCJzdHJpbmdcIj09PXR5cGVvZiBiP2xnKGIpOmIpO3JldHVybihhPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF0pJiZhLnBhcmVudE5vZGU/KGEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYyxhKSxjKTpudWxsfTt3YT1mdW5jdGlvbihhLGIpe3JldHVybiBiLmdldENvbXB1dGVkU3R5bGU/Yi5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6YS5jdXJyZW50U3R5bGV9O3hnPWZ1bmN0aW9uKGEsYil7aWYoIXZnKCkpe3ZhciBjPU1hdGgucmFuZG9tKCk7aWYoYzxiKXJldHVybiBjPXdnKF8uciksYVtNYXRoLmZsb29yKGMqYS5sZW5ndGgpXX1yZXR1cm4gbnVsbH07d2c9ZnVuY3Rpb24oYSl7aWYoIWEuY3J5cHRvKXJldHVybiBNYXRoLnJhbmRvbSgpO3RyeXt2YXIgYj1uZXcgVWludDMyQXJyYXkoMSk7YS5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGIpO3JldHVybiBiWzBdLzY1NTM2LzY1NTM2fWNhdGNoKGMpe3JldHVybiBNYXRoLnJhbmRvbSgpfX07Xy5KYj1mdW5jdGlvbihhLGIsYyl7aWYoYSlmb3IodmFyIGQgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKSYmYi5jYWxsKGMsYVtkXSxkLGEpfTt5Zz1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gYSlpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxiKSlyZXR1cm4hMTtyZXR1cm4hMH07emc9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy5KYihhLGZ1bmN0aW9uKGMsZCl7Yi5wdXNoKGQpfSk7cmV0dXJuIGJ9O18uQWc9ZnVuY3Rpb24oYSl7dmFyIGI9W107Xy5KYihhLGZ1bmN0aW9uKGMpe2IucHVzaChjKX0pO3JldHVybiBifTtCZz1mdW5jdGlvbihhLGIpe3JldHVybiBuZChhLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGQpJiZiKGMsZCl9KX07Q2c9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sZW5ndGg7aWYoMD09YilyZXR1cm4gMDtmb3IodmFyIGM9MzA1NDE5ODk2LGQ9MDtkPGI7ZCsrKWNePShjPDw1KSsoYz4+MikrYS5jaGFyQ29kZUF0KGQpJjQyOTQ5NjcyOTU7cmV0dXJuIDA8Yz9jOjQyOTQ5NjcyOTYrY307dmc9dmEoZnVuY3Rpb24oKXtyZXR1cm4gXy5YYyhbXCJHb29nbGUgV2ViIFByZXZpZXdcIixcIk1lZGlhcGFydG5lcnMtR29vZ2xlXCIsXCJHb29nbGUtUmVhZC1BbG91ZFwiLFwiR29vZ2xlLUFkd29yZHNcIl0sRGcpfHwxRS00Pk1hdGgucmFuZG9tKCl9KTtFZz1mdW5jdGlvbihhKXtyZXR1cm4gdmcoKT9udWxsOk1hdGguZmxvb3IoMUUzKndnKGEpKX07Rmc9ZnVuY3Rpb24oYSxiKXt0cnl7aWYoYSlyZXR1cm4gYS5zZXRJdGVtKFwiZ29vZ2xlX2V4cGVyaW1lbnRfbW9kXCIsYiksYn1jYXRjaChjKXt9cmV0dXJuIG51bGx9O0RnPWZ1bmN0aW9uKGEpe3JldHVybi0xIT1WZC5pbmRleE9mKGEpfTtHZz0vXigtP1swLTkuXXsxLDMwfSkkLztfLkhnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEdnLnRlc3QoYSkmJihhPU51bWJlcihhKSwhaXNOYU4oYSkpP2E6dm9pZCAwPT1iP251bGw6Yn07SWc9ZnVuY3Rpb24oKXtyZXR1cm4vXnRydWUkLy50ZXN0KFwiZmFsc2VcIil9O0pnPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPyEwOmI7dHJ5e2Zvcih2YXIgYz1udWxsO2MhPWE7Yz1hLGE9YS5wYXJlbnQpc3dpdGNoKGEubG9jYXRpb24ucHJvdG9jb2wpe2Nhc2UgXCJodHRwczpcIjpyZXR1cm4hMDtjYXNlIFwiZmlsZTpcIjpyZXR1cm4gYjtjYXNlIFwiaHR0cDpcIjpyZXR1cm4hMX19Y2F0Y2goZCl7fXJldHVybiEwfTtLZz1mdW5jdGlvbihhKXtpZighYSlyZXR1cm5cIlwiO3ZhciBiPS8uKlsmIz9dZ29vZ2xlX2RlYnVnKD1bXiZdKik/KCYuKik/JC87dHJ5e3ZhciBjPWIuZXhlYyhkZWNvZGVVUklDb21wb25lbnQoYSkpO2lmKGMpcmV0dXJuIGNbMV0mJjE8Y1sxXS5sZW5ndGg/Y1sxXS5zdWJzdHJpbmcoMSk6XCJ0cnVlXCJ9Y2F0Y2goZCl7fXJldHVyblwiXCJ9O0xnPXtNZDpcImFsbG93LWZvcm1zXCIsTmQ6XCJhbGxvdy1tb2RhbHNcIixPZDpcImFsbG93LW9yaWVudGF0aW9uLWxvY2tcIixQZDpcImFsbG93LXBvaW50ZXItbG9ja1wiLFFkOlwiYWxsb3ctcG9wdXBzXCIsUmQ6XCJhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hcIixTZDpcImFsbG93LXByZXNlbnRhdGlvblwiLFRkOlwiYWxsb3ctc2FtZS1vcmlnaW5cIixVZDpcImFsbG93LXNjcmlwdHNcIixWZDpcImFsbG93LXRvcC1uYXZpZ2F0aW9uXCIsV2Q6XCJhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25cIn07TWc9dmEoZnVuY3Rpb24oKXtyZXR1cm4gXy5BZyhMZyl9KTtOZz1mdW5jdGlvbihhKXt2YXIgYj1NZygpO3JldHVybiBhLmxlbmd0aD9fLlRhKGIsZnVuY3Rpb24oYyl7cmV0dXJuIV8uJGMoYSxjKX0pOmJ9O09nPWZ1bmN0aW9uKCl7dmFyIGE9Xy5lZyhkb2N1bWVudCxcIklGUkFNRVwiKSxiPXt9O18uVmMoTWcoKSxmdW5jdGlvbihjKXthLnNhbmRib3gmJmEuc2FuZGJveC5zdXBwb3J0cyYmYS5zYW5kYm94LnN1cHBvcnRzKGMpJiYoYltjXT0hMCl9KTtyZXR1cm4gYn07UGc9ZnVuY3Rpb24oYSl7YT1hJiZhLnRvU3RyaW5nJiZhLnRvU3RyaW5nKCk7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYtMSE9YS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKX07ZmE9ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuISghYS5mcmFtZXN8fCFhLmZyYW1lc1tiXSl9Y2F0Y2goYyl7cmV0dXJuITF9fTtRZz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wOzUwPmM7KytjKXtpZihmYShhLGIpKXJldHVybiBhO2lmKCEoYT1yZyhhKSkpYnJlYWt9cmV0dXJuIG51bGx9O1JnPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIW1nKCkmJihMKFwiaVBvZFwiKXx8TChcImlQaG9uZVwiKXx8TChcIkFuZHJvaWRcIil8fEwoXCJJRU1vYmlsZVwiKSk/MjptZygpPzE6MH0pO1NnPWZ1bmN0aW9uKGEsYil7dmFyIGM7Zm9yKGM9dm9pZCAwPT09Yz8xMDA6YzthJiZjLS07KXtpZihhPT1iKXJldHVybiEwO2E9YS5wYXJlbnRFbGVtZW50fXJldHVybiExfTtfLlhnPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5zZXRQcm9wZXJ0eT9fLkpiKGIsZnVuY3Rpb24oYyxkKXthLnN0eWxlLnNldFByb3BlcnR5KGQsYyxcImltcG9ydGFudFwiKX0pOmEuc3R5bGUuY3NzVGV4dD1fLlRnKFVnKF8uVmcoYS5zdHlsZS5jc3NUZXh0KSxXZyhiLGZ1bmN0aW9uKGMpe3JldHVybiBjK1wiICFpbXBvcnRhbnRcIn0pKSl9O1VnPV8uQShPYmplY3QsXCJhc3NpZ25cIil8fGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKGQpZm9yKHZhciBlIGluIGQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtXZz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9LGQ7Zm9yKGQgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxkKSYmKGNbZF09Yi5jYWxsKHZvaWQgMCxhW2RdLGQsYSkpO3JldHVybiBjfTtZZz1mdW5jdGlvbihhLGIsYyl7Zm9yKGM9dm9pZCAwPT09Yz8xMDA6YzthJiZjLS0mJiExIT09YihhKTspYT1hLnBhcmVudEVsZW1lbnR9OyRnPWZ1bmN0aW9uKGEpe3JldHVybiBaZyhhLGZ1bmN0aW9uKGIpe3JldHVyblwiZml4ZWRcIj09Yi5wb3NpdGlvbnx8XCJzdGlja3lcIj09Yi5wb3NpdGlvbn0pfTthaD1mdW5jdGlvbihhKXtyZXR1cm4gWmcoYSxmdW5jdGlvbihiKXtyZXR1cm5cImxlZnRcIj09YltcImZsb2F0XCJdfHxcInJpZ2h0XCI9PWJbXCJmbG9hdFwiXXx8XCJsZWZ0XCI9PWIuY3NzRmxvYXR8fFwicmlnaHRcIj09Yi5jc3NGbG9hdH0pfTtaZz1mdW5jdGlvbihhLGIpe3ZhciBjO2ZvcihjPXZvaWQgMD09PWM/MTAwOmM7YSYmYy0tOyl7dmFyIGQ9d2EoYSx3aW5kb3cpO2lmKGQpe2lmKGIoZCkpcmV0dXJuITA7YT1hLnBhcmVudEVsZW1lbnR9fXJldHVybiExfTtiaD1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gbnVsbDthPWEudHJhbnNmb3JtO2lmKCFhKXJldHVybiBudWxsO2E9YS5yZXBsYWNlKC9eLipcXCgoWzAtOS4sIC1dKylcXCkkLyxcIiQxXCIpLnNwbGl0KC8sIC8pO3JldHVybiA2IT1hLmxlbmd0aD9udWxsOl8uUmEoYSxwYXJzZUZsb2F0KX07Xy5UZz1mdW5jdGlvbihhKXt2YXIgYj1bXTtfLkpiKGEsZnVuY3Rpb24oYyxkKXtudWxsIT1jJiZcIlwiIT09YyYmYi5wdXNoKGQrXCI6XCIrYyl9KTtyZXR1cm4gYi5sZW5ndGg/Yi5qb2luKFwiO1wiKStcIjtcIjpcIlwifTtfLlZnPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2lmKGEpe3ZhciBjPS9cXHMqOlxccyovO18uVmMoKGF8fFwiXCIpLnNwbGl0KC9cXHMqO1xccyovKSxmdW5jdGlvbihkKXtpZihkKXt2YXIgZT1kLnNwbGl0KGMpO2Q9ZVswXTtlPWVbMV07ZCYmZSYmKGJbZC50b0xvd2VyQ2FzZSgpXT1lKX19KX1yZXR1cm4gYn07Y2g9ZnVuY3Rpb24oYSxiKXthJiZhLnNldEF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLWNvbnRhaW5lci1pZFwiLGIpfTtkaD1mdW5jdGlvbihhKXtfLnIuY29uc29sZSYmXy5yLmNvbnNvbGUud2FybiYmXy5yLmNvbnNvbGUud2FybihhKX07ZWg9ZnVuY3Rpb24oYSxiKXtiPVljKGEsYik7aWYoMDw9Yil7dmFyIGM9YVtiXTtBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYSxiLDEpO3JldHVybiBjfXJldHVybiBudWxsfTtmaD1bXTtnaD1mdW5jdGlvbigpe3ZhciBhPWZoO2ZoPVtdO2E9Xy5GKGEpO2Zvcih2YXIgYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpe2I9Yi52YWx1ZTt0cnl7YigpfWNhdGNoKGMpe319fTtoaD1mdW5jdGlvbihhKXtmaC5wdXNoKGEpOzE9PWZoLmxlbmd0aCYmKHQuUHJvbWlzZT90LlByb21pc2UucmVzb2x2ZSgpLnRoZW4oZ2gpOndpbmRvdy5zZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlKGdoKTpzZXRUaW1lb3V0KGdoLDApKX07aWg9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFxcXChufHJ8XFxcXCkvZyxmdW5jdGlvbihiLGMpe3JldHVyblwiblwiPT1jP1wiXFxuXCI6XCJyXCI9PWM/XCJcXHJcIjpcIlxcXFxcIn0pfTtqaD1mdW5jdGlvbigpe3ZhciBhPXZvaWQgMD09PWE/d2luZG93OmE7cmV0dXJuKGE9b2coYS5sb2NhdGlvbi5ocmVmLm1hdGNoKF8ubmcpWzNdfHxudWxsKSk/Q2coYSk6bnVsbH07YmI9ZnVuY3Rpb24oYSl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBhLmdvb2dfcHZzaWQpdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZ29vZ19wdnNpZFwiLHt2YWx1ZTpNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMiw1MikpfSl9Y2F0Y2goYil7fXJldHVybiBOdW1iZXIoYS5nb29nX3B2c2lkKXx8LTF9O2toPWZ1bmN0aW9uKGEpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYSYmaXNGaW5pdGUoYSkmJjA9PWElMSYmMDxhfTtsaD1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWF8fGtoKGEpfTttaD1mdW5jdGlvbihhLGIpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7Yy5pZD1hO2MudGV4dENvbnRlbnQ9YjtfLlhnKGMse2hlaWdodDpcIjI0cHhcIixcImxpbmUtaGVpZ2h0XCI6XCIyNHB4XCIsXCJ0ZXh0LWFsaWduXCI6XCJjZW50ZXJcIixcInZlcnRpY2FsLWFsaWduXCI6XCJtaWRkbGVcIixjb2xvcjpcIndoaXRlXCIsXCJiYWNrZ3JvdW5kLWNvbG9yXCI6XCJibGFja1wiLG1hcmdpbjpcIjBcIixcImZvbnQtZmFtaWx5XCI6XCJSb2JvdG9cIixcImZvbnQtc3R5bGVcIjpcIm5vcm1hbFwiLFwiZm9udC13ZWlnaHRcIjpcIjUwMFwiLFwiZm9udC1zaXplXCI6XCIxMXB4XCIsXCJsZXR0ZXItc3BhY2luZ1wiOlwiMC4wOGVtXCJ9KTtyZXR1cm4gY307dmFyIG5oPXtoZTowLGJlOjEsYWU6MiwkZDozLGtlOjQsbGU6NSxmZTo2LGNlOjd9O3ZhciBwaD1mdW5jdGlvbigpe3JldHVybiBmYShfLnIudG9wLFwiZ29vZ2xlZmNQcmVzZW50XCIpfSxxaD1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudDt0cnl7dmFyIGM9SWYoYik7dmFyIGQ9Yz96ZihLZixjKTpudWxsfWNhdGNoKGUpe2Q9bnVsbH1pZighZClyZXR1cm4gMDtpZih4KGQsNykpcmV0dXJuIDQ7aWYoYSl7aWYoXy4kYyhCKGQsMyksYSkpcmV0dXJuIDI7aWYoXy4kYyhCKGQsNCksYSkpcmV0dXJuIDN9cmV0dXJuIDF9LHJoPXZhKGZ1bmN0aW9uKCl7dmFyIGE9L1s/Jl1mYyhjb25zZW50KT89YWx3YXlzc2hvdyhbJiNdfCQpLzt0cnl7cmV0dXJuIGEudGVzdChfLnIudG9wLmxvY2F0aW9uLmhyZWYpfWNhdGNoKGIpe3JldHVybiBhLnRlc3QoXy5yLmxvY2F0aW9uLmhyZWYpfX0pLHNoPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9emcobmgpLmxlbmd0aCxlPVtdLGY9MDtmPGQ7ZisrKWVbZl09MDtyaCgpJiYoYT0hMCk7ZVswXT1hPzE6MjtkPXZvaWQgMCE9PWM/YzppYSgpO2VbNV09ZD8xOjI7ZVs0XT0yO2M9ISFfLnIuZ29vZ2xlZmN8fHBoKCk7ZVsxXT1jPzE6MjtmPXFoKGIpOzAhPWY/Yj17cWM6ZixyYzozfTooZj1fLnIudG9wLGI9e3FjOmZhKGYsXCJnb29nbGVmY0luYWN0aXZlXCIpPzQ6YiYmZmEoZixcImdvb2dsZWZjUEEtXCIrYik/MjpmYShmLFwiZ29vZ2xlZmNOUEFcIik/MzowLHJjOjJ9KTtmPWI7Yj1mLnFjO2VbZi5yY109YjtpZighZClhOnN3aXRjaChiKXtjYXNlIDI6Y2FzZSA0OmQ9ITE7YnJlYWsgYTtjYXNlIDM6ZD0hMDticmVhayBhO2Nhc2UgMTpkPWE7YnJlYWsgYTtkZWZhdWx0OmQ9KHZvaWQgMD09PWM/ITE6YykmJmF9cmV0dXJue0RlOmIscmQ6ZCx5ZDowPT1iJiZhJiZjLCRjOmUuam9pbihcIi5cIil9fSx0aD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1zaChhLGIsZCk7ZS55ZD9fLnIuc2V0VGltZW91dChmdW5jdGlvbigpe3RoKGEsYixjLGQpfSwxRTMpOmMoZSl9O3ZhciB1aD1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07Syh1aCxNKTtfLlA9ZnVuY3Rpb24oKXt0aGlzLmxhPXRoaXMubGE7dGhpcy5VPXRoaXMuVX07Xy5QLnByb3RvdHlwZS5sYT0hMTtfLlAucHJvdG90eXBlLnphPWZ1bmN0aW9uKCl7dGhpcy5sYXx8KHRoaXMubGE9ITAsdGhpcy52KCkpfTtfLndoPWZ1bmN0aW9uKGEsYil7Xy5SKGEsXy5TYyh2aCxiKSl9O18uUj1mdW5jdGlvbihhLGIpe2EubGE/YigpOihhLlV8fChhLlU9W10pLGEuVS5wdXNoKGIpKX07Xy5QLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7aWYodGhpcy5VKWZvcig7dGhpcy5VLmxlbmd0aDspdGhpcy5VLnNoaWZ0KCkoKX07dmFyIHZoPWZ1bmN0aW9uKGEpe2EmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGEuemEmJmEuemEoKX07dmFyIHhoPWZ1bmN0aW9uKGEpe3RoaXMubD0wO3RoaXMudj1hfHwxMDA7dGhpcy5qPVtdfTt4aC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMualt0aGlzLmxdO3RoaXMualt0aGlzLmxdPWE7dGhpcy5sPSh0aGlzLmwrMSkldGhpcy52O3JldHVybiBifTt4aC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe2E9eWgodGhpcyxhKTtyZXR1cm4gdGhpcy5qW2FdfTt4aC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7YT15aCh0aGlzLGEpO3RoaXMualthXT1ifTt4aC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT10aGlzLmoubGVuZ3RofTt2YXIgemg9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEuai5sZW5ndGgsYz1bXSxkPWEuai5sZW5ndGgtYS5qLmxlbmd0aDtkPGI7ZCsrKWMucHVzaChhLmdldChkKSk7cmV0dXJuIGN9LHloPWZ1bmN0aW9uKGEsYil7aWYoYj49YS5qLmxlbmd0aCl0aHJvdyBFcnJvcihcIk91dCBvZiBib3VuZHMgZXhjZXB0aW9uXCIpO3JldHVybiBhLmoubGVuZ3RoPGEudj9iOihhLmwrTnVtYmVyKGIpKSVhLnZ9O3ZhciBCaD1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmM7Xy5QLmNhbGwodGhpcyk7dmFyIGQ9dGhpczt0aGlzLm89Yzt0aGlzLmo9bmV3IHhoKDEwMCk7dGhpcy5sPVtdO3ZhciBlPWZ1bmN0aW9uKGYpe2lmKGQubyhmKSYmIWQubGEpe2Quai5hZGQoZik7Zm9yKHZhciBnPV8uRihkLmwpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKUFoKGgudmFsdWUsZil9fTtfLnYoYSxiLGUpJiZfLlIodGhpcyxmdW5jdGlvbigpe18ucWIoYSxiLGUpfSl9O18uSihCaCxfLlApO3ZhciBBaD1mdW5jdGlvbihhLGIpe3RyeXthKGIpfWNhdGNoKGMpe1widW5kZWZpbmVkXCIhPT10eXBlb2YgY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihjKX19LENoPWZ1bmN0aW9uKGEsYil7aWYoYS5sYSlyZXR1cm4gZnVuY3Rpb24oKXt9O2Zvcih2YXIgYz17fSxkPTA7ZDxhLmouai5sZW5ndGg7Yz17RmI6Yy5GYn0sZCsrKWMuRmI9YS5qLmdldChkKSxoaChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBBaChiLGUuRmIpfX0oYykpO2EubC5wdXNoKGIpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGFkKGEubCxiKX19O0JoLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dmFyIGE9dGhpcy5qO2Euai5sZW5ndGg9MDthLmw9MDt0aGlzLmwubGVuZ3RoPTB9O3ZhciBFaDtfLkRoPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMudG9wPWE7dGhpcy5yaWdodD1iO3RoaXMuYm90dG9tPWM7dGhpcy5sZWZ0PWR9O0VoPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgXy5EaChhLnRvcCxhLnJpZ2h0LGEuYm90dG9tLGEubGVmdCl9O18uRGgucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmNlaWwodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5jZWlsKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguY2VpbCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLkRoLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguZmxvb3IodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5mbG9vcih0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmZsb29yKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5mbG9vcih0aGlzLmxlZnQpO3JldHVybiB0aGlzfTtfLkRoLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5yb3VuZCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLnJvdW5kKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTt2YXIgRmg9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5sZWZ0PWE7dGhpcy50b3A9Yjt0aGlzLndpZHRoPWM7dGhpcy5oZWlnaHQ9ZH0sR2g9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBfLkRoKGEudG9wLGEubGVmdCthLndpZHRoLGEudG9wK2EuaGVpZ2h0LGEubGVmdCl9LEhoPWZ1bmN0aW9uKGEsYil7dmFyIGM9TWF0aC5tYXgoYS5sZWZ0LGIubGVmdCksZD1NYXRoLm1pbihhLmxlZnQrYS53aWR0aCxiLmxlZnQrYi53aWR0aCk7aWYoYzw9ZCl7dmFyIGU9TWF0aC5tYXgoYS50b3AsYi50b3ApO2E9TWF0aC5taW4oYS50b3ArYS5oZWlnaHQsYi50b3ArYi5oZWlnaHQpO2lmKGU8PWEpcmV0dXJuIG5ldyBGaChjLGUsZC1jLGEtZSl9cmV0dXJuIG51bGx9O0ZoLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307RmgucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O0ZoLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTt2YXIgSWg9e1wiQU1QLUNBUk9VU0VMXCI6XCJhY1wiLFwiQU1QLUZYLUZMWUlORy1DQVJQRVRcIjpcImZjXCIsXCJBTVAtTElHSFRCT1hcIjpcImxiXCIsXCJBTVAtU1RJQ0tZLUFEXCI6XCJzYVwifSxKaD1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/Xy5yOmE7dmFyIGI9YS5jb250ZXh0fHxhLkFNUF9DT05URVhUX0RBVEE7aWYoIWIpdHJ5e2I9YS5wYXJlbnQuY29udGV4dHx8YS5wYXJlbnQuQU1QX0NPTlRFWFRfREFUQX1jYXRjaChjKXt9dHJ5e2lmKGImJmIucGFnZVZpZXdJZCYmYi5jYW5vbmljYWxVcmwpcmV0dXJuIGJ9Y2F0Y2goYyl7fXJldHVybiBudWxsfSxLaD1mdW5jdGlvbigpe3ZhciBhPUpoKCk7cmV0dXJuIGEmJmEubW9kZT8rYS5tb2RlLnZlcnNpb258fG51bGw6bnVsbH0sTGg9ZnVuY3Rpb24oKXt2YXIgYT1KaCgpO2lmKGEmJmEuY29udGFpbmVyKXthPWEuY29udGFpbmVyLnNwbGl0KFwiLFwiKTtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWIucHVzaChJaFthW2NdXXx8XCJ4XCIpO3JldHVybiBiLmpvaW4oKX1yZXR1cm4gbnVsbH0sTWg9ZnVuY3Rpb24oKXt2YXIgYT1KaCgpO3JldHVybiBhJiZhLmluaXRpYWxJbnRlcnNlY3Rpb259LE5oPWZ1bmN0aW9uKCl7dmFyIGE9SmgoKTt2YXIgYjtyZXR1cm4oYT1hJiYoYj1hLmluaXRpYWxMYXlvdXRSZWN0KSYmXCJudW1iZXJcIj09PXR5cGVvZiBiLnRvcCYmXCJudW1iZXJcIj09PXR5cGVvZiBiLmxlZnQmJlwibnVtYmVyXCI9PT10eXBlb2YgYi53aWR0aCYmXCJudW1iZXJcIj09PXR5cGVvZiBiLmhlaWdodD9uZXcgRmgoYi5sZWZ0LGIudG9wLGIud2lkdGgsYi5oZWlnaHQpOm51bGwpP25ldyBfLnlhKGEubGVmdCxhLnRvcCk6KGI9TWgoKSkmJl8uTWMoYi5yb290Qm91bmRzKT9uZXcgXy55YShiLnJvb3RCb3VuZHMubGVmdCtiLmJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0LGIucm9vdEJvdW5kcy50b3ArYi5ib3VuZGluZ0NsaWVudFJlY3QudG9wKTpudWxsfSxPaD1mdW5jdGlvbihhKXtyZXR1cm4oYT1hfHxKaCgpKT9xZyhhLm1hc3Rlcik/YS5tYXN0ZXI6bnVsbDpudWxsfSxRaD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmFtcEluYWJveElmcmFtZXM9YS5hbXBJbmFib3hJZnJhbWVzfHxbXSxmPWZ1bmN0aW9uKCl7fSxnPWZ1bmN0aW9uKGspe2lmKGEuYW1wSW5hYm94SW5pdGlhbGl6ZWQpZigpO2Vsc2V7dmFyIGwsbT1cImFtcC1pbmktbG9hZFwiPT09ay5kYXRhO2EuYW1wSW5hYm94UGVuZGluZ01lc3NhZ2VzJiYhbSYmKGw9L15hbXAtKFxcZHsxNSwyMH0pPy8uZXhlYyhrLmRhdGEpKSYmKGEuYW1wSW5hYm94UGVuZGluZ01lc3NhZ2VzLnB1c2goayksUGgoYSxsWzFdKSl9fSxoPWZ1bmN0aW9uKCl7fTtiJiYoZS5wdXNoKGIpLGg9ZnVuY3Rpb24oKXthLkFNUCYmYS5BTVAuaW5hYm94VW5yZWdpc3RlcklmcmFtZSYmYS5BTVAuaW5hYm94VW5yZWdpc3RlcklmcmFtZShiKTthZChlLGIpO2YoKX0pO2lmKGEuYW1wSW5hYm94SW5pdGlhbGl6ZWQpcmV0dXJuIGg7YS5hbXBJbmFib3hQZW5kaW5nTWVzc2FnZXM9YS5hbXBJbmFib3hQZW5kaW5nTWVzc2FnZXN8fFtdO2MmJi9eXFxkezE1LDIwfSQvLnRlc3QoYykmJlBoKGEsYyk7ZD9mPUNoKGQsZyk6ZS5nb29nbGVfYW1wX2xpc3RlbmVyX2FkZGVkfHwoZS5nb29nbGVfYW1wX2xpc3RlbmVyX2FkZGVkPSEwLF8udihhLFwibWVzc2FnZVwiLGcpLGY9ZnVuY3Rpb24oKXtfLnFiKGEsXCJtZXNzYWdlXCIsZyl9KTtyZXR1cm4gaH0sUGg9ZnVuY3Rpb24oYSxiKXthLmFtcEluYWJveEluaXRpYWxpemVkfHxiJiYhL15cXGR7MTUsMjB9JC8udGVzdChiKXx8YS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjJD1cImFtcDRhZHMtaG9zdC12MC5qc1wiXScpfHx1ZyhhLmRvY3VtZW50LGI/SmEodmQoXCJodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy9ydHYvJXthbXBWZXJzaW9ufS9hbXA0YWRzLWhvc3QtdjAuanNcIikse2FtcFZlcnNpb246Yn0pOkJkKHVkKHZkKFwiaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvYW1wNGFkcy1ob3N0LXYwLmpzXCIpKSkpfSxSaD0hIUpoKCkmJl8uciE9Xy5yLnRvcCxTaD1mdW5jdGlvbihhKXthPUpoKGEpO2lmKCFhfHwhXy5NYyhhLmRhdGEpfHxcInN0cmluZ1wiIT09dHlwZW9mIGEuZGF0YS50eXBlKXJldHVybiBudWxsO2E9YS5kYXRhLnR5cGUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImRvdWJsZWNsaWNrXCI9PWF8fFwiYWRzZW5zZVwiPT1hP251bGw6YX07dmFyIFZoLFVoO18uVGg9ZnVuY3Rpb24oYSxiKXthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0c3x8KGEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzPVtdKTt2YXIgYz1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7Yy5zcmM9YjthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cy5wdXNoKGMpfTtWaD1mdW5jdGlvbihhLGIpe3ZhciBjPVwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD1cIitiO18uSmIoYSxmdW5jdGlvbihkLGUpe2QmJihjKz1cIiZcIitlK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChkKSl9KTtVaChjKX07VWg9ZnVuY3Rpb24oYSl7dmFyIGI9d2luZG93O2IuZmV0Y2g/Yi5mZXRjaChhLHtrZWVwYWxpdmU6ITAsY3JlZGVudGlhbHM6XCJpbmNsdWRlXCIscmVkaXJlY3Q6XCJmb2xsb3dcIixtZXRob2Q6XCJnZXRcIixtb2RlOlwibm8tY29yc1wifSk6Xy5UaChiLGEpfTt2YXIgamE9e307dmFyIGxhO3ZhciBXaD1mdW5jdGlvbigpe30sWGg9ZnVuY3Rpb24oYSxiKXtrYShiKTt0aGlzLmo9YX07Xy5KKFhoLFdoKTtYaC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qLnRvU3RyaW5nKCl9O3ZhciBZaD1mdW5jdGlvbigpe30sWmg9ZnVuY3Rpb24oYSxiKXtrYShiKTt0aGlzLmo9YX07Xy5KKFpoLFloKTtaaC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgJGg9ZnVuY3Rpb24oKXt9LGFpPWZ1bmN0aW9uKGEsYil7a2EoYik7dGhpcy5qPWF9O18uSihhaSwkaCk7YWkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai50b1N0cmluZygpfTtuZXcgWmgoXCJhYm91dDpibGFua1wiLGphKTtuZXcgWmgoXCJhYm91dDppbnZhbGlkI3pUU3pcIixqYSk7dmFyIGRpLGZpLGdpLGhpLGlpLG5pLE5iO18uY2k9ZnVuY3Rpb24oYSxiLGMpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYikoYj1fLmJpKGEsYikpJiYoYS5zdHlsZVtiXT1jKTtlbHNlIGZvcih2YXIgZCBpbiBiKXtjPWE7dmFyIGU9YltkXSxmPV8uYmkoYyxkKTtmJiYoYy5zdHlsZVtmXT1lKX19O2RpPXt9O18uYmk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1kaVtiXTtpZighYyl7dmFyIGQ9Xy5rZShiKTtjPWQ7dm9pZCAwPT09YS5zdHlsZVtkXSYmKGQ9KHllP1wiV2Via2l0XCI6eGU/XCJNb3pcIjpfLnVlP1wibXNcIjp0ZT9cIk9cIjpudWxsKStsZShkKSx2b2lkIDAhPT1hLnN0eWxlW2RdJiYoYz1kKSk7ZGlbYl09Y31yZXR1cm4gY307Xy5laT1mdW5jdGlvbihhLGIpe3ZhciBjPV8uVmYoYSk7cmV0dXJuIGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGE9Yy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpP2FbYl18fGEuZ2V0UHJvcGVydHlWYWx1ZShiKXx8XCJcIjpcIlwifTtmaT1mdW5jdGlvbihhLGIpe3JldHVybiBfLmVpKGEsYil8fChhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZVtiXTpudWxsKXx8YS5zdHlsZSYmYS5zdHlsZVtiXX07Z2k9ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKGIpe3JldHVybntsZWZ0OjAsdG9wOjAscmlnaHQ6MCxib3R0b206MH19fTtoaT1mdW5jdGlvbihhKXtpZihfLnVlJiYhKDg8PU51bWJlcihPZSkpKXJldHVybiBhLm9mZnNldFBhcmVudDt2YXIgYj1fLlZmKGEpLGM9ZmkoYSxcInBvc2l0aW9uXCIpLGQ9XCJmaXhlZFwiPT1jfHxcImFic29sdXRlXCI9PWM7Zm9yKGE9YS5wYXJlbnROb2RlO2EmJmEhPWI7YT1hLnBhcmVudE5vZGUpaWYoMTE9PWEubm9kZVR5cGUmJmEuaG9zdCYmKGE9YS5ob3N0KSxjPWZpKGEsXCJwb3NpdGlvblwiKSxkPWQmJlwic3RhdGljXCI9PWMmJmEhPWIuZG9jdW1lbnRFbGVtZW50JiZhIT1iLmJvZHksIWQmJihhLnNjcm9sbFdpZHRoPmEuY2xpZW50V2lkdGh8fGEuc2Nyb2xsSGVpZ2h0PmEuY2xpZW50SGVpZ2h0fHxcImZpeGVkXCI9PWN8fFwiYWJzb2x1dGVcIj09Y3x8XCJyZWxhdGl2ZVwiPT1jKSlyZXR1cm4gYTtyZXR1cm4gbnVsbH07aWk9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5WZihhKSxjPW5ldyBfLnlhKDAsMCk7dmFyIGQ9Yj9fLlZmKGIpOmRvY3VtZW50O2Q9IV8udWV8fDk8PU51bWJlcihPZSl8fF8uWmYoV2YoZCkuaik/ZC5kb2N1bWVudEVsZW1lbnQ6ZC5ib2R5O2lmKGE9PWQpcmV0dXJuIGM7YT1naShhKTtkPVdmKGIpLmo7Yj1hZyhkKTtkPWJnKGQpO2I9Xy51ZSYmTGUoXCIxMFwiKSYmZC5wYWdlWU9mZnNldCE9Yi5zY3JvbGxUb3A/bmV3IF8ueWEoYi5zY3JvbGxMZWZ0LGIuc2Nyb2xsVG9wKTpuZXcgXy55YShkLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQsZC5wYWdlWU9mZnNldHx8Yi5zY3JvbGxUb3ApO2MueD1hLmxlZnQrYi54O2MueT1hLnRvcCtiLnk7cmV0dXJuIGN9O18uamk9ZnVuY3Rpb24oYSl7YT1naShhKTtyZXR1cm4gbmV3IF8ueWEoYS5sZWZ0LGEudG9wKX07Xy5raT1mdW5jdGlvbihhLGIpe1wibnVtYmVyXCI9PXR5cGVvZiBhJiYoYT0oYj9NYXRoLnJvdW5kKGEpOmEpK1wicHhcIik7cmV0dXJuIGF9O18ubGk9ZnVuY3Rpb24oYSxiKXtpZihcIm5vbmVcIiE9ZmkoYixcImRpc3BsYXlcIikpcmV0dXJuIGEoYik7dmFyIGM9Yi5zdHlsZSxkPWMuZGlzcGxheSxlPWMudmlzaWJpbGl0eSxmPWMucG9zaXRpb247Yy52aXNpYmlsaXR5PVwiaGlkZGVuXCI7Yy5wb3NpdGlvbj1cImFic29sdXRlXCI7Yy5kaXNwbGF5PVwiaW5saW5lXCI7YT1hKGIpO2MuZGlzcGxheT1kO2MucG9zaXRpb249ZjtjLnZpc2liaWxpdHk9ZTtyZXR1cm4gYX07Xy5taT1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQsZD15ZSYmIWImJiFjO3JldHVybih2b2lkIDA9PT1ifHxkKSYmYS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/KGE9Z2koYSksbmV3IF8uVGYoYS5yaWdodC1hLmxlZnQsYS5ib3R0b20tYS50b3ApKTpuZXcgXy5UZihiLGMpfTtuaT1mdW5jdGlvbihhKXtpZighYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpcmV0dXJuIG51bGw7YT1fLmxpKGdpLGEpO3JldHVybiBuZXcgXy5UZihhLnJpZ2h0LWEubGVmdCxhLmJvdHRvbS1hLnRvcCl9O05iPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5kaXNwbGF5PWI/XCJcIjpcIm5vbmVcIn07dmFyIHBpPWZ1bmN0aW9uKCl7dmFyIGE9b2koKTtcImdvb2dsZV9vbmxvYWRfZmlyZWRcImluIGF8fChhLmdvb2dsZV9vbmxvYWRfZmlyZWQ9ITEsXy52KGEsXCJsb2FkXCIsZnVuY3Rpb24oKXthLmdvb2dsZV9vbmxvYWRfZmlyZWQ9ITB9KSl9LHFpPWZ1bmN0aW9uKCl7dmFyIGE9dm9pZCAwPT09YT9FZjphO3RyeXtyZXR1cm4gYS5oaXN0b3J5Lmxlbmd0aH1jYXRjaChiKXtyZXR1cm4gMH19LHJpPWZ1bmN0aW9uKGEpe2E9T2goSmgoYSkpfHxhO2E9YS5nb29nbGVfdW5pcXVlX2lkO3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYT9hOjB9LHNpPSEhd2luZG93Lmdvb2dsZV9hc3luY19pZnJhbWVfaWQsdGk9c2kmJndpbmRvdy5wYXJlbnR8fHdpbmRvdyxvaT1mdW5jdGlvbigpe2lmKHNpJiYhcWcodGkpKXt2YXIgYT1cIi5cIitEZi5kb21haW47dHJ5e2Zvcig7MjxhLnNwbGl0KFwiLlwiKS5sZW5ndGgmJiFxZyh0aSk7KURmLmRvbWFpbj1hPWEuc3Vic3RyKGEuaW5kZXhPZihcIi5cIikrMSksdGk9d2luZG93LnBhcmVudH1jYXRjaChiKXt9cWcodGkpfHwodGk9d2luZG93KX1yZXR1cm4gdGl9LHVpPWZ1bmN0aW9uKCl7dmFyIGEsYj13aW5kb3cuQWN0aXZlWE9iamVjdDtpZihuYXZpZ2F0b3IucGx1Z2lucyYmbmF2aWdhdG9yLm1pbWVUeXBlcy5sZW5ndGgpe2lmKChhPW5hdmlnYXRvci5wbHVnaW5zW1wiU2hvY2t3YXZlIEZsYXNoXCJdKSYmYS5kZXNjcmlwdGlvbilyZXR1cm4gYS5kZXNjcmlwdGlvbi5yZXBsYWNlKC8oW2EtekEtWl18XFxzKSsvLFwiXCIpLnJlcGxhY2UoLyhcXHMpK3IvLFwiLlwiKX1lbHNle2lmKG5hdmlnYXRvci51c2VyQWdlbnQmJjA8PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZihcIldpbmRvd3MgQ0VcIikpe3ZhciBjPTM7Zm9yKGE9MTthOyl0cnl7YT1uZXcgYihcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLlwiKyhjKzEpKSxjKyt9Y2F0Y2goZCl7YT1udWxsfXJldHVybiBjLnRvU3RyaW5nKCl9aWYoWmQoKSl7YT1udWxsO3RyeXthPW5ldyBiKFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guN1wiKX1jYXRjaChkKXtjPTA7dHJ5e2E9bmV3IGIoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC42XCIpLGM9NixhLkFsbG93U2NyaXB0QWNjZXNzPVwiYWx3YXlzXCJ9Y2F0Y2goZSl7aWYoNj09PWMpcmV0dXJuIGMudG9TdHJpbmcoKX10cnl7YT1uZXcgYihcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoXCIpfWNhdGNoKGUpe319aWYoYSlyZXR1cm4gYz1hLkdldFZhcmlhYmxlKFwiJHZlcnNpb25cIikuc3BsaXQoXCIgXCIpWzFdLGMucmVwbGFjZSgvLC9nLFwiLlwiKX19cmV0dXJuXCIwXCJ9O3ZhciB2aT1mdW5jdGlvbihhKXtyZXR1cm5cIkNTUzFDb21wYXRcIj09YS5jb21wYXRNb2RlP2EuZG9jdW1lbnRFbGVtZW50OmEuYm9keX0sd2k9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/Xy5yOmI7YT1hLnNjcm9sbGluZ0VsZW1lbnR8fHZpKGEpO3JldHVybiBuZXcgXy55YShiLnBhZ2VYT2Zmc2V0fHxhLnNjcm9sbExlZnQsYi5wYWdlWU9mZnNldHx8YS5zY3JvbGxUb3ApfSxzYT1mdW5jdGlvbihhKXt0cnl7cmV0dXJuISghYXx8IShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkpfWNhdGNoKGIpe3JldHVybiExfX07dmFyIHhpPWZ1bmN0aW9uKGEsYixjKXthJiZudWxsIT09YiYmYiE9Yi50b3AmJihiPWIudG9wKTt0cnl7cmV0dXJuKHZvaWQgMD09PWM/MDpjKT8obmV3IF8uVGYoYi5pbm5lcldpZHRoLGIuaW5uZXJIZWlnaHQpKS5yb3VuZCgpOl8uJGYoYnx8d2luZG93KS5yb3VuZCgpfWNhdGNoKGQpe3JldHVybiBuZXcgXy5UZigtMTIyNDU5MzMsLTEyMjQ1OTMzKX19O3ZhciB5aT1mdW5jdGlvbihhKXtyZXR1cm4hIWEmJmEudG9wPT1hfSx6aT1mdW5jdGlvbihhLGIsYyxkKXtjPWN8fGEuZ29vZ2xlX2FkX3dpZHRoO2Q9ZHx8YS5nb29nbGVfYWRfaGVpZ2h0O2lmKHlpKGEpKXJldHVybiExO3ZhciBlPWIuZG9jdW1lbnRFbGVtZW50O2lmKGMmJmQpe3ZhciBmPTEsZz0xO2EuaW5uZXJIZWlnaHQ/KGY9YS5pbm5lcldpZHRoLGc9YS5pbm5lckhlaWdodCk6ZSYmZS5jbGllbnRIZWlnaHQ/KGY9ZS5jbGllbnRXaWR0aCxnPWUuY2xpZW50SGVpZ2h0KTpiLmJvZHkmJihmPWIuYm9keS5jbGllbnRXaWR0aCxnPWIuYm9keS5jbGllbnRIZWlnaHQpO2lmKGc+MipkfHxmPjIqYylyZXR1cm4hMX1yZXR1cm4hMH0sQWk9ZnVuY3Rpb24oKXt2YXIgYT1vaSgpO2lmKGE9PWEudG9wKXJldHVybiAwO2Zvcig7YSYmYSE9YS50b3AmJnFnKGEpO2E9YS5wYXJlbnQpe2lmKGEuc2ZfKXJldHVybiAyO2lmKGEuJHNmKXJldHVybiAzO2lmKGEuaW5HcHRJRilyZXR1cm4gNDtpZihhLmluRGFwSUYpcmV0dXJuIDV9cmV0dXJuIDF9O3ZhciBCaT1bL15odHRwcz86XFwvXFwvKHNlY3VyZSk/cHViYWRzXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvKGdvb2dsZWFkc3xhZHgpXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvKD8hYWR4KWFkLipcXC5kb3VibGVjbGlja1xcLm5ldCg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcLyh0cGN8cGFnZWFkMilcXC5nb29nbGVzeW5kaWNhdGlvblxcLmNvbSg6XFxkKyk/KCR8XFwvKS9pLC9eaHR0cHM/OlxcL1xcL3d3d1xcLmdvb2dsZXRhZ3NlcnZpY2VzXFwuY29tKDpcXGQrKT8oJHxcXC8pL2ksL15odHRwcz86XFwvXFwvYWRzZXJ2aWNlXFwuZ29vZ2xlXFwuKGNvbT9cXC4pP1thLXpdezIsM30oOlxcZCspPygkfFxcLykvaV0sQ2k9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uWGMoQmksZnVuY3Rpb24oYil7cmV0dXJuIGIudGVzdChhKX0pfSxEaT1mdW5jdGlvbihhKXtpZihhPS9bLVxcd10rXFwuWy1cXHddKyQvLmV4ZWMoYSkpe2E9YVswXS50b0xvd2VyQ2FzZSgpO2Zvcih2YXIgYj0wLGM9MDtjPGEubGVuZ3RoOysrYyliPTMxKmIrYS5jaGFyQ29kZUF0KGMpPj4+MDtzd2l0Y2goYil7Y2FzZSAxOTY3MjYxMzY0OnJldHVybiAwO2Nhc2UgMzE0NzQ5MzU0NjpyZXR1cm4gMTtjYXNlIDE1NjczNDY0NjE6cmV0dXJuIDI7Y2FzZSAyMTgzMDQxODM4OnJldHVybiAzO2Nhc2UgNzYzMjM2Mjc5OnJldHVybiA0O2Nhc2UgMTM0MjI3OTgwMTpyZXR1cm4gNTtjYXNlIDUyNjgzMTc2OTpyZXR1cm4gNjtjYXNlIDM1MjgwNjAwMjpyZXR1cm4gNztjYXNlIDI3NTUwNDg5MjU6cmV0dXJuIDg7Y2FzZSAzMzA2ODQ4NDA3OnJldHVybiA5O2Nhc2UgMjIwNzAwMDkyMDpyZXR1cm4gMTA7Y2FzZSA0ODQwMzcwNDA6cmV0dXJuIDExO2Nhc2UgMzUwNjg3MTA1NTpyZXR1cm4gMTI7Y2FzZSA2NzIxNDM4NDg6cmV0dXJuIDEzO2Nhc2UgMjUyODc1MTIyNjpyZXR1cm4gMTQ7Y2FzZSAyNzQ0ODU0NzY4OnJldHVybiAxNTtjYXNlIDM3MDMyNzg2NjU6cmV0dXJuIDE2O2Nhc2UgMjAxNDc0OTE3MzpyZXR1cm4gMTc7Y2FzZSAxMzMwNjM4MjQ6cmV0dXJuIDE4O2Nhc2UgMjc0OTMzNDYwMjpyZXR1cm4gMTk7Y2FzZSAzMTMxMjM5ODQ1OnJldHVybiAyMDtjYXNlIDIwNzQwODY3NjM6cmV0dXJuIDIxO2Nhc2UgNzk1NzcyNDkzOnJldHVybiAyMjtjYXNlIDI5MDg1NzgxOTpyZXR1cm4gMjM7Y2FzZSAzMDM1OTQ3NjA2OnJldHVybiAyNDtjYXNlIDI5ODMxMzgwMDM6cmV0dXJuIDI1O2Nhc2UgMjE5NzEzODY3NjpyZXR1cm4gMjY7Y2FzZSA0MjE2MDE2MTY1OnJldHVybiAyNztjYXNlIDIzOTgwMzUyNDpyZXR1cm4gMjg7Y2FzZSA5NzU5OTM1Nzk6cmV0dXJuIDI5O2Nhc2UgMTc5NDk0MDMzOTpyZXR1cm4gMzA7Y2FzZSAxMzE0NDI5MTg2OnJldHVybiAzMTtjYXNlIDE2NDM2MTg5Mzc6cmV0dXJuIDMyO2Nhc2UgNDk3MTU5OTgyOnJldHVybiAzMztjYXNlIDM4ODIyMzk2NjE6cmV0dXJuIDM0fX1yZXR1cm4tMX0sRWk9ZnVuY3Rpb24oYSl7aWYoIWEubGVuZ3RoKXJldHVybiAwO2Zvcih2YXIgYj1bXSxjPTA7MzQ+PWM7YysrKWJbY109MDtmb3IoYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKXt2YXIgZD1EaShhW2NdKTswPD1kJiYoYlszNC1kXT0xKX1yZXR1cm4gcGFyc2VJbnQoYi5qb2luKFwiXCIpLDIpfTt2YXIgRmk9ZnVuY3Rpb24oYSxiKXt2YXIgYz12b2lkIDA9PT1jP3t9OmM7dGhpcy5lcnJvcj1hO3RoaXMuY29udGV4dD1iLmNvbnRleHQ7dGhpcy5tc2c9Yi5tZXNzYWdlfHxcIlwiO3RoaXMuaWQ9Yi5pZHx8XCJqc2Vycm9yXCI7dGhpcy5tZXRhPWN9O3ZhciBIaT1mdW5jdGlvbihhKXthPSh0aGlzLmw9YXx8Xy5yKXx8Xy5yO3RoaXMudj1hLnRvcD09YT8xOnFnKGEudG9wKT8yOjM7MyE9dGhpcy52JiZEYXRlLnBhcnNlKF8uci50b3AuZG9jdW1lbnQubGFzdE1vZGlmaWVkKTt2YXIgYj10aGlzLmwsYz1ifHxfLnI7YT1bXTt2YXIgZD1udWxsO2Rve3ZhciBlPWM7aWYocWcoZSkpe3ZhciBmPWUubG9jYXRpb24uaHJlZjtkPWUuZG9jdW1lbnQmJmUuZG9jdW1lbnQucmVmZXJyZXJ8fG51bGx9ZWxzZSBmPWQsZD1udWxsO2EucHVzaChuZXcgR2koZnx8XCJcIixlKSk7dHJ5e2M9ZS5wYXJlbnR9Y2F0Y2goZyl7Yz1udWxsfX13aGlsZShjJiZlIT1jKTtlPTA7Zm9yKGM9YS5sZW5ndGgtMTtlPD1jOysrZSlhW2VdLmRlcHRoPWMtZTtlPWJ8fF8ucjtpZihlLmxvY2F0aW9uJiZlLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucyYmZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMubGVuZ3RoPT1hLmxlbmd0aC0xKWZvcihiPTE7YjxhLmxlbmd0aDsrK2IpYz1hW2JdLGMudXJsfHwoYy51cmw9ZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnNbYi0xXXx8XCJcIixjLmVkPSEwKTt0aGlzLmo9YX0sSmk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sLmRvY3VtZW50JiZhLmwuZG9jdW1lbnQuc2NyaXB0cz9hLmwuZG9jdW1lbnQuc2NyaXB0czpbXTtpZighYilyZXR1cm4gMDtmb3IodmFyIGM9W10sZD1iLmxlbmd0aC0xOzA8PWQmJjI2PmMubGVuZ3RoOyliW2RdLnNyYyYmYy51bnNoaWZ0KGJbZF0uc3JjKSxkLS07cmV0dXJuIElpKGEsYyl9LElpPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD0oYT1hLmpbTWF0aC5tYXgoYS5qLmxlbmd0aC0xLDApXS51cmx8fG51bGwpJiZvZyhhLm1hdGNoKF8ubmcpWzNdfHxudWxsKSxlPU1hdGgubWluKGIubGVuZ3RoLDI2KSxmPTA7ZjxlO2YrKylhPW51bGwhPWJbZl0mJm9nKGJbZl0ubWF0Y2goXy5uZylbM118fG51bGwpfHxcIlwiLGMqPTQsYSYmKGQmJmE9PWQ/Yys9MzpDaShiW2ZdKT9jKz0yOmEmJjA8PURpKGEpJiYoYys9MSkpO3JldHVybiBjfSxLaT1mdW5jdGlvbihhKXthPWEubC5kb2N1bWVudCYmYS5sLmRvY3VtZW50LnNjcmlwdHM/YS5sLmRvY3VtZW50LnNjcmlwdHM6W107aWYoIWEpcmV0dXJuIDA7Zm9yKHZhciBiPVtdLGM9YS5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YVtjXTtkJiZudWxsIT1kLnNyYyYmYi5wdXNoKG9nKGQuc3JjLm1hdGNoKF8ubmcpWzNdfHxudWxsKSl9cmV0dXJuIEVpKGIpfSxHaT1mdW5jdGlvbihhLGIpe3RoaXMudXJsPWE7dGhpcy5MPWI7dGhpcy5lZD0hMTt0aGlzLmRlcHRoPW51bGx9O3ZhciBMaT1udWxsLE1pPWZ1bmN0aW9uKCl7aWYobnVsbD09PUxpKXtMaT1cIlwiO3RyeXt2YXIgYT1cIlwiO3RyeXthPV8uci50b3AubG9jYXRpb24uaGFzaH1jYXRjaChjKXthPV8uci5sb2NhdGlvbi5oYXNofWlmKGEpe3ZhciBiPWEubWF0Y2goL1xcYmRlaWQ9KFtcXGQsXSspLyk7TGk9Yj9iWzFdOlwiXCJ9fWNhdGNoKGMpe319cmV0dXJuIExpfTt2YXIgUGk7Xy5OaT1mdW5jdGlvbigpe3ZhciBhPV8uci5wZXJmb3JtYW5jZTtyZXR1cm4gYSYmYS5ub3cmJmEudGltaW5nP01hdGguZmxvb3IoYS5ub3coKSthLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpOlRjKCl9O18uT2k9ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP18ucjphO3JldHVybihhPWEucGVyZm9ybWFuY2UpJiZhLm5vdz9hLm5vdygpOm51bGx9O1BpPWZ1bmN0aW9uKGEpe3ZhciBiPV8uci5wZXJmb3JtYW5jZTtyZXR1cm4gYiYmYi50aW1pbmcmJmIudGltaW5nW2FdfHwwfTt2YXIgUWk9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmxhYmVsPWE7dGhpcy50eXBlPWI7dGhpcy52YWx1ZT1jO3RoaXMuZHVyYXRpb249dm9pZCAwPT09ZD8wOmQ7dGhpcy51bmlxdWVJZD1NYXRoLnJhbmRvbSgpO3RoaXMuc2xvdElkPWV9O3ZhciBSaT1fLnIucGVyZm9ybWFuY2UsU2k9ISEoUmkmJlJpLm1hcmsmJlJpLm1lYXN1cmUmJlJpLmNsZWFyTWFya3MpLFRpPXZhKGZ1bmN0aW9uKCl7dmFyIGE7aWYoYT1TaSlhPU1pKCksYT0hIWEuaW5kZXhPZiYmMDw9YS5pbmRleE9mKFwiMTMzN1wiKTtyZXR1cm4gYX0pLFVpPWZ1bmN0aW9uKGEsYil7dGhpcy5ldmVudHM9W107dGhpcy5sPWJ8fF8ucjt2YXIgYz1udWxsO2ImJihiLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWU9Yi5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXSx0aGlzLmV2ZW50cz1iLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWUsYz1iLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyk7dGhpcy5qPVRpKCl8fChudWxsIT1jP2M6TWF0aC5yYW5kb20oKTxhKX0sVmk9ZnVuY3Rpb24oYSl7YSYmUmkmJlRpKCkmJihSaS5jbGVhck1hcmtzKFwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfc3RhcnRcIiksUmkuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX2VuZFwiKSl9LFdpPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthLmomJihiPW5ldyBRaShiLGMsZCx2b2lkIDA9PT1lPzA6ZSxmKSwhYS5qfHwyMDQ4PGEuZXZlbnRzLmxlbmd0aHx8YS5ldmVudHMucHVzaChiKSl9O1VpLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmopcmV0dXJuIG51bGw7dmFyIGM9Xy5PaSgpfHxfLk5pKCk7YT1uZXcgUWkoYSxiLGMpO2I9XCJnb29nX1wiK2EubGFiZWwrXCJfXCIrYS51bmlxdWVJZCtcIl9zdGFydFwiO1JpJiZUaSgpJiZSaS5tYXJrKGIpO3JldHVybiBhfTt2YXIgWGk9ZnVuY3Rpb24oYSxiKXtpZihhLmomJlwibnVtYmVyXCI9PT10eXBlb2YgYi52YWx1ZSl7dmFyIGM9Xy5PaSgpfHxfLk5pKCk7Yi5kdXJhdGlvbj1jLWIudmFsdWU7Yz1cImdvb2dfXCIrYi5sYWJlbCtcIl9cIitiLnVuaXF1ZUlkK1wiX2VuZFwiO1JpJiZUaSgpJiZSaS5tYXJrKGMpOyFhLmp8fDIwNDg8YS5ldmVudHMubGVuZ3RofHxhLmV2ZW50cy5wdXNoKGIpfX0sWWk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPV8uT2koKTtkJiZXaShhLGIsOSxkLDAsYyl9O3ZhciBZYj1mdW5jdGlvbihhLGIpe3RyeXstMT09YS5pbmRleE9mKGIpJiYoYT1iK1wiXFxuXCIrYSk7Zm9yKHZhciBjO2EhPWM7KWM9YSxhPWEucmVwbGFjZSgvKChodHRwcz86XFwvLi4qXFwvKVteXFwvOl0qOlxcZCsoPzoufFxcbikqKVxcMi8sXCIkMVwiKTtyZXR1cm4gYS5yZXBsYWNlKC9cXG4gKi9nLFwiXFxuXCIpfWNhdGNoKGQpe3JldHVybiBifX07dmFyIFppPUlnKCk7dmFyICRpPWZ1bmN0aW9uKGEpe3RoaXMubWV0aG9kTmFtZT1hfSxhaj1uZXcgJGkoMSksYmo9bmV3ICRpKDE1KSxjaj1uZXcgJGkoMiksZGo9bmV3ICRpKDMpLGVqPW5ldyAkaSg1KSxmaj1uZXcgJGkoNiksZ2o9bmV3ICRpKDcpLGhqPW5ldyAkaSg4KSxpaj1uZXcgJGkoMTQpLGpqPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYlthLm1ldGhvZE5hbWVdfHxjfHxmdW5jdGlvbigpe319O3ZhciBraj1mdW5jdGlvbigpe3RoaXMubD1mdW5jdGlvbigpe307dGhpcy52PWZ1bmN0aW9uKCl7cmV0dXJuW119O3RoaXMuaj1mdW5jdGlvbigpe3JldHVybltdfX0sbGo9ZnVuY3Rpb24oYSxiLGMpe2EubD1qaihhaixiLGZ1bmN0aW9uKCl7fSk7YS52PWZ1bmN0aW9uKGQpe3JldHVybiBqaihjaixiLGZ1bmN0aW9uKCl7cmV0dXJuW119KShkLGMpfTthLmo9ZnVuY3Rpb24oKXtyZXR1cm4gamooZGosYixmdW5jdGlvbigpe3JldHVybltdfSkoYyl9fTtJYyhraik7dmFyIG1qPWZ1bmN0aW9uKGEpe2tqLkIoKS5sKGEpfSxuaj1mdW5jdGlvbihhKXtyZXR1cm4ga2ouQigpLnYoYSl9O3ZhciBvaj1mdW5jdGlvbigpe3RoaXMubD1mdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iPyExOmJ9O3RoaXMudj1mdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iPzA6Yn07dGhpcy5vPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/XCJcIjpifTt0aGlzLm09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj12b2lkIDA9PT1iP1tdOmJ9O3RoaXMuaj1mdW5jdGlvbigpe319LHBqPWZ1bmN0aW9uKGEsYixjKXthLmw9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooZWosYikoZCxlLGMpfTthLnY9ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooZmosYikoZCxlLGMpfTthLm89ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooZ2osYikoZCxlLGMpfTthLm09ZnVuY3Rpb24oZCxlKXtyZXR1cm4gamooaGosYikoZCxlLGMpfTthLmo9ZnVuY3Rpb24oKXtqaihiaixiKShjKX19LHFqO0ljKG9qKTtfLnk9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj8hMTpiO3JldHVybiBvai5CKCkubChhLGIpfTtfLnJhPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPzA6YjtyZXR1cm4gb2ouQigpLnYoYSxiKX07cWo9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9cIlwiOmI7cmV0dXJuIG9qLkIoKS5vKGEsYil9O18ucmo9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9bXTpiO3JldHVybiBvai5CKCkubShhLGIpfTt2YXIgc2o9e30sdGo9KHNqLmNvbXBhbmlvbl9hZHM9XCJjb21wYW5pb25BZHNcIixzai5jb250ZW50PVwiY29udGVudFwiLHNqLnB1Ymxpc2hlcl9hZHM9XCJwdWJhZHNcIixzaiksdWo9ZnVuY3Rpb24oYSl7cmV0dXJuIGErJ0NvcnJlbGF0b3IgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHNlZSB0aGUgR29vZ2xlIEFkIE1hbmFnZXIgaGVscCBwYWdlIG9uIFwiUGFnZXZpZXdzIGluIEdQVFwiIGZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9hZG1hbmFnZXIvYW5zd2VyLzE4MzI4MT9obD1lbid9O3ZhciBYYj1mdW5jdGlvbigpe3JldHVybiBfLnIuZ29vZ2xldGFnfHwoXy5yLmdvb2dsZXRhZz17fSl9LFdiPWZ1bmN0aW9uKGEsYil7dmFyIGM9WGIoKTtjLmhhc093blByb3BlcnR5KGEpfHwoY1thXT1iKX0sdmo9ZnVuY3Rpb24oYSxiKXthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoXCJvbmxvYWRcIixiKX07dmFyIHdqPW5ldyB0Lk1hcCx4aj1uZXcgdC5NYXAseWo9ZnVuY3Rpb24oKXt9LHpqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEgaW5zdGFuY2VvZiBifHxhIGluc3RhbmNlb2YgeWomJihhPXdqLmdldChhKSxhIGluc3RhbmNlb2YgYik/YTpudWxsfSxBaj1mdW5jdGlvbihhKXtyZXR1cm4oYT10althXSk/WGIoKVthXSgpOm51bGx9O3ZhciBCaj17MjQ3OlwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXRcIiw3Oi4wMiwxMzoxNTAwLDIzOi4wMDEsMzc6LjAxLDM4Oi4wMDEsNTg6MSwxNTA6XCJcIiwyMTE6ITEsMjUzOiExLDE1MjpbXSwxNzI6bnVsbCwxOTE6XCJcIiwxOTI6XCJcIiwxOTA6XCJcIiwyNDU6e30sMTgwOm51bGwsMjQ2OltdLDIyNzp7fSwyMjY6W10sMjQ4OjAsMjI4OlwiLy93d3cuZ29vZ2xldGFnc2VydmljZXMuY29tL3B1YmNvbnNvbGUvXCIsMjUwOm51bGwsMjUyOm51bGwsMjUxOm51bGx9LEVqLEZqLEdqLEhqO0JqWzZdPUpnKHdpbmRvdyk7QmpbNDldPShuZXcgRGF0ZSkuZ2V0VGltZSgpO0JqWzM2XT1JZygpO0JqWzE0OF09Wmk7QmpbMjIxXT1JZygpO0JqWzIwNF09Xy5IZyhcIi0xXCIsLTEpO3ZhciBDaj1mdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBCail0aGlzW2FdPUJqW2FdfTtJYyhDaik7Xy5Eaj1mdW5jdGlvbihhKXtyZXR1cm4gQ2ouQigpW2FdfTtFaj1YYigpO0ZqPUNqLkIoKTtHaj1Fai5fdmFyc187Zm9yKEhqIGluIEdqKUZqW0hqXT1HaltIal07RWouX3ZhcnNfPUZqO3ZhciBKaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsSWosbnVsbCl9O0soSmosTSk7dmFyIElqPVsyXSxLaj1mdW5jdGlvbihhKXtyZXR1cm4gQihhLDEpfSxMaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMSxiKX0sTWo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDIsYnx8W10pfTt2YXIgTmo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soTmosTSk7dmFyIE9qPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKE9qLE0pO3ZhciBQaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhQaixNKTt2YXIgUWo9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRChhLDMsYil9O3ZhciBTaj1mdW5jdGlvbihhKXtrZih0aGlzLGEsUmosbnVsbCl9O0soU2osTSk7dmFyIFJqPVsyLDMsNywxNF0sVGo9ZnVuY3Rpb24oYSxiKXt3ZihhLDIsYil9LFVqPWZ1bmN0aW9uKGEpe3JldHVybiBPKGEsT2osMjUpfTt2YXIgVmo9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soVmosTSk7dmFyIFdqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQoYSwxLGIpfSxYaj1mdW5jdGlvbihhLGIpe3JldHVybiBEKGEsMixiKX0sWWo9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgVmo7cmV0dXJuIEQoYSwzLCEwKX07dmFyIFpqPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKFpqLE0pO3ZhciBiaz1mdW5jdGlvbihhKXtrZih0aGlzLGEsYWssbnVsbCl9O0soYmssTSk7dmFyIGFrPVsyXTt2YXIgZGs9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGNrLG51bGwpfTtLKGRrLE0pO3ZhciBjaz1bMyw0LDUsNiw4LDldO2RrLnByb3RvdHlwZS5nZXRBZFVuaXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcywxKX07dmFyIGVrPWZ1bmN0aW9uKGEsYil7RChhLDIsYil9O2RrLnByb3RvdHlwZS5nZXRDbGlja1VybD1mdW5jdGlvbigpe3JldHVybiBCKHRoaXMsNyl9O3ZhciBmaz1mdW5jdGlvbihhLGIpe3dmKGEsOSxiKX0sZ2s9ZnVuY3Rpb24oYSl7cmV0dXJuIG5mKGEsMTUsMCl9O3ZhciBoaz1mdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKSYmMj09YS5sZW5ndGg/Xy55KDM2MCk/a2goYVswXSkmJmtoKGFbMV0pOmxoKGFbMF0pJiZsaChhWzFdKTpcInN0cmluZ1wiPT09dHlwZW9mIGEmJlwiZmx1aWRcIj09YX0saWs9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJjI9PWEubGVuZ3RoJiZsaChhWzBdKSYmbGgoYVsxXSl9LGprPWZ1bmN0aW9uKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpP1hqKFdqKG5ldyBWaixhWzBdKSxhWzFdKTpZaigpfSxsaz1mdW5jdGlvbihhKXt2YXIgYj1bXTtpZihrayhhKSliLnB1c2goamsoYSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoOysrYyl7dmFyIGQ9YVtjXTtrayhkKSYmYi5wdXNoKGprKGQpKTthOnt2YXIgZT1bXCJmbHVpZFwiXTtpZihLYyhkKSYmS2MoZSkmJmQubGVuZ3RoPT1lLmxlbmd0aCl7Zm9yKHZhciBmPWQubGVuZ3RoLGc9ZmQsaD0wO2g8ZjtoKyspaWYoIWcoZFtoXSxlW2hdKSl7ZD0hMTticmVhayBhfWQ9ITB9ZWxzZSBkPSExfWQmJmIucHVzaChZaigpKX1yZXR1cm4gYn0sbWs9ZnVuY3Rpb24oYSl7aWYoIWF8fCFBcnJheS5pc0FycmF5KGEpfHwyIT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXTthPWFbMV07aWYoXCJudW1iZXJcIj09PXR5cGVvZiBiJiYwPD1iKWI9TWF0aC5mbG9vcihiKTtlbHNlIGlmKG51bGwhPT1iKXJldHVybiBudWxsO2lmKFwibnVtYmVyXCI9PT10eXBlb2YgYSYmMDw9YSlhPU1hdGguZmxvb3IoYSk7ZWxzZSBpZihudWxsIT09YSlyZXR1cm4gbnVsbDtyZXR1cm4gWGooV2oobmV3IFZqLGIpLGEpfSxuaz1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9bnVsbDt2YXIgZD1hJiYoQXJyYXkuaXNBcnJheShhLmZpeGVkKXx8XCJmbHVpZFwiPT09YS5maXhlZCk7dmFyIGU9Xy55KDQxOSkmJmEmJkFycmF5LmlzQXJyYXkoYS5tYXgpO2lmKGEmJiFBcnJheS5pc0FycmF5KGEpJiYoZHx8ZSkpe2lmKGQ9bGsoYS5maXhlZCksYz1tayhhLm1heCkpYS5taW4/KChiPW1rKGEubWluKSkmJm51bGw9PT1CKGIsMSkmJldqKGIsMCksYiYmbnVsbD09PUIoYiwyKSYmWGooYiwwKSk6Yj1YaihXaihuZXcgVmosMCksMCl9ZWxzZSBkPWxrKGEpO2lmKGEmJiFBcnJheS5pc0FycmF5KGEpKXtpZihhLm1heCYmIWMpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBtYXhpbXVtIHNpemU6IFwiK0pTT04uc3RyaW5naWZ5KGEpKTtpZihhLm1pbiYmIWIpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIEdQVCBtYXhpbXVtIHNpemU6IFwiK0pTT04uc3RyaW5naWZ5KGEpKTt9aWYoYyl7aWYoMD09PUIoYywxKXx8MD09PUIoYywyKSl0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIHNpemUsIG1heGltdW1zIGNhbm5vdCBiZSB6ZXJvOiBcIitKU09OLnN0cmluZ2lmeShhKSk7aWYoYil7ZT1CKGIsMSk7dmFyIGY9QihjLDEpO2lmKG51bGwhPWUmJm51bGwhPWYmJmU+Zil0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIHNpemU6IG1pbmltdW0gd2lkdGggbGFyZ2VyIHRoYW4gbWF4aW11bSB3aWR0aDogXCIrSlNPTi5zdHJpbmdpZnkoYSkpO2U9QihiLDIpO2Y9QihjLDIpO2lmKG51bGwhPWUmJm51bGwhPWYmJmU+Zil0aHJvdyBFcnJvcihcIkludmFsaWQgR1BUIHNpemU6IG1pbmltdW0gaGVpZ2h0IGxhcmdlciB0aGFuIG1heGltdW0gaGVpZ2h0OiBcIitKU09OLnN0cmluZ2lmeShhKSk7fX1kLmxlbmd0aHx8Xy55KDQxOSkmJmN8fGRoKFwiSW52YWxpZCBHUFQgZml4ZWQgc2l6ZSBzcGVjaWZpY2F0aW9uOiBcIitKU09OLnN0cmluZ2lmeShhKSk7YyYmYj8oYT1uZXcgWmosYz12ZihhLDEsYyksYj12ZihjLDIsYikpOmI9bnVsbDtyZXR1cm57WGM6ZCxIYTpifX0sa2s9ZnVuY3Rpb24oYSl7aWYoXy55KDM2MSkpcmV0dXJuIGhrKGEpO2lmKEFycmF5LmlzQXJyYXkoYSkmJjE8YS5sZW5ndGgpe3ZhciBiPVwibnVtYmVyXCI9PT10eXBlb2YgYVswXSYmXCJudW1iZXJcIj09PXR5cGVvZiBhWzFdO2E9IV8ueSgzNjApfHwwPGFbMF0mJjA8YVsxXTtyZXR1cm4gYiYmYX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGEmJlwiZmx1aWRcIj09YX07dmFyIG9rPWZ1bmN0aW9uKGEsYil7YT1fLkEoYSxcImZpbmRcIikuY2FsbChhLGZ1bmN0aW9uKGMpe2M9TyhjLFZqLDEpO3JldHVybiBCKGMsMSk8PUIoYiwxKSYmQihjLDIpPD1CKGIsMil9KTtyZXR1cm4gbnVsbD09YT9udWxsOnVmKGEsVmosMil9LHBrPWZ1bmN0aW9uKGEpe2lmKCFBcnJheS5pc0FycmF5KGEpfHwyIT1hLmxlbmd0aCl0aHJvdyBFcnJvcihcIkVhY2ggbWFwcGluZyBlbnRyeSBoYXMgdG8gYmUgYW4gYXJyYXkgb2Ygc2l6ZSAyXCIpO3ZhciBiPWFbMF07aWYoIWlrKGIpKXRocm93IEVycm9yKFwiU2l6ZSBoYXMgdG8gYmUgYW4gYXJyYXkgb2YgdHdvIG5vbi1uZWdhdGl2ZSBpbnRlZ2Vyc1wiKTtiPVhqKFdqKG5ldyBWaixiWzBdKSxiWzFdKTtpZihBcnJheS5pc0FycmF5KGFbMV0pJiYwPT1hWzFdLmxlbmd0aClhPVtdO2Vsc2UgaWYoYT1sayhhWzFdKSwwPT1hLmxlbmd0aCl0aHJvdyBFcnJvcihcIkF0IGxlYXN0IG9uZSBzbG90IHNpemUgbXVzdCBiZSBwcmVzZW50XCIpO3ZhciBjPW5ldyBiaztiPXZmKGMsMSxiKTtyZXR1cm4gd2YoYiwyLGEpfTt2YXIgcWs9ZnVuY3Rpb24oYSxiLGMpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYiYmXCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPHVmKGEsYmssNikubGVuZ3RoP29rKHVmKGEsYmssNiksWGooV2oobmV3IFZqLGIpLGMpKTp1ZihhLFZqLDUpfSx4YT1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3csYz1udWxsO2IudG9wPT1iJiYoYj14aSghMSxiKSxjPXFrKGEsYi53aWR0aCxiLmhlaWdodCkpO251bGw9PWMmJihjPXFrKGEpKTtyZXR1cm4gYy5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIHgoZCwzKT9cImZsdWlkXCI6W0IoZCwxKSxCKGQsMildfSl9LFNiPWZ1bmN0aW9uKGEpe2lmKF8ueSg0MTkpJiYwPT14YShhKS5sZW5ndGgmJm51bGwhPUIoYSwxNikpcmV0dXJuXCIxeDFcIjt2YXIgYj1bXSxjPSExO2E9Xy5GKHhhKGEpKTtmb3IodmFyIGQ9YS5uZXh0KCk7IWQuZG9uZTtkPWEubmV4dCgpKWQ9ZC52YWx1ZSxBcnJheS5pc0FycmF5KGQpP2IucHVzaChkLmpvaW4oXCJ4XCIpKTpcImZsdWlkXCI9PWQ/Yz0hMDpiLnB1c2goZCk7YyYmYi51bnNoaWZ0KFwiMzIweDUwXCIpO3JldHVybiBiLmpvaW4oXCJ8XCIpfSxyaz1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGM9MCxkPVtdO2EmJihkLnB1c2goYS5nZXRBZFVuaXRQYXRoKCkpLGQucHVzaChTYihhKSksZC5wdXNoKEIoYSwyKSkpO2lmKGIpe2E9W107Zm9yKHZhciBlPTA7YiYmMjU+ZTtiPWIucGFyZW50Tm9kZSwrK2UpOT09PWIubm9kZVR5cGU/YS5wdXNoKFwiXCIpOmEucHVzaChiLmlkKTsoYj1hLmpvaW4oKSkmJmQucHVzaChiKX0wPGQubGVuZ3RoJiYoYz1DZyhkLmpvaW4oXCI6XCIpKSk7cmV0dXJuIGMudG9TdHJpbmcoKX0sc2s9ZnVuY3Rpb24oYSl7cmV0dXJuIDAhPT1hJiYxIT09YX07dmFyIHRrPWZ1bmN0aW9uKCl7dmFyIGE9Xy55KDg1KXx8Xy55KDg0KTtfLnIuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nPWF8fF8uci5nb29nbGVfbWVhc3VyZV9qc190aW1pbmc7VWkuY2FsbCh0aGlzLGE/MTowLF8ucik7dGhpcy52PTB9O18uSih0ayxVaSk7SWModGspO3ZhciB2az1mdW5jdGlvbihhLGIsYyl7aWYoQihiLDE4KSlyZXR1cm4gQihiLDE4KTthPWMuZ2V0KGEuZ2V0U2xvdElkKCkpO3JldHVybiBudWxsIT1hP3VrKGEpOm51bGx9LHdrPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBudWxsIT11ayhjKT8hMDphLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPXZrKGUsYltlLmdldFNsb3RFbGVtZW50SWQoKV0sZCl9KX0seGs9ZnVuY3Rpb24oYSl7aWYoXy55KDE2OCl8fDE1MzYwPj1hLmxlbmd0aClyZXR1cm4gYTt2YXIgYj1fLnkoMTY0KSYmLyZzdXBwb3J0aW5nX3VybHM9Ly50ZXN0KGEpLGM9YTtpZigxNTM2MDxjLmxlbmd0aCl7dmFyIGQ9Yj8tMTpjLmxhc3RJbmRleE9mKFwiJlwiLDE1MzUyKTstMSE9PWQ/Yz1jLnN1YnN0cmluZygwLGQpOihjPWMuc3Vic3RyaW5nKDAsMTUzNTIpLGM9Yy5yZXBsYWNlKC8lXFx3PyQvLFwiXCIpLGImJihjPWMucmVwbGFjZSgvJltePV0qPT8kLyxcIlwiKSkpO2MrPVwiJnRydW5jPTFcIn1iPWM7V2kodGsuQigpLCg5KS50b1N0cmluZygpLDksYS5sZW5ndGgtYi5sZW5ndGgrOCk7cmV0dXJuIGJ9LHlrPWZ1bmN0aW9uKGEpe3ZhciBiPWE7XCJhYm91dDpibGFua1wiIT1hJiYoYj1iLnJlcGxhY2UoLzwvZyxcIiUzQ1wiKS5yZXBsYWNlKC8+L2csXCIlM0VcIikucmVwbGFjZSgvXCIvZyxcIiUyMlwiKS5yZXBsYWNlKC8nL2csXCIlMjdcIiksL15odHRwcz86XFwvXFwvLy50ZXN0KGIpfHwoYj1cInVua25vd246XCIrYikpO3JldHVybiBifSx6az1mdW5jdGlvbigpe3JldHVyblwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwifSxkYj1mdW5jdGlvbihhKXt2YXIgYj1hLmRvY3VtZW50O3JldHVybiB5aShhKT9iLlVSTDpiLnJlZmVycmVyfSx1YT1mdW5jdGlvbihhKXt0cnl7dmFyIGI9d2luZG93LnRvcCxjPW5ldyBfLnlhKDAsMCksZD1fLmNnKF8uVmYoYSkpO2lmKHNlKGQsXCJwYXJlbnRcIikpe2Rve3ZhciBlPWQ9PWI/aWkoYSk6Xy5qaShhKTtjLngrPWUueDtjLnkrPWUueX13aGlsZShkJiZkIT1iJiZkIT1kLnBhcmVudCYmKGE9ZC5mcmFtZUVsZW1lbnQpJiYoZD1kLnBhcmVudCkpfXZhciBmPWN9Y2F0Y2goZyl7Zj1uZXcgXy55YSgtMTIyNDU5MzMsLTEyMjQ1OTMzKX1yZXR1cm4gZn0sQWs9ZnVuY3Rpb24oYSl7dmFyIGI9YS5pbmRleE9mKFwiZ29vZ2xlX3ByZXZpZXc9XCIsYS5sYXN0SW5kZXhPZihcIj9cIikpLGM9YS5pbmRleE9mKFwiJlwiLGIpOy0xPT1jJiYoYz1hLmxlbmd0aC0xLC0tYik7cmV0dXJuIGEuc3Vic3RyaW5nKDAsYikrYS5zdWJzdHJpbmcoYysxLGEubGVuZ3RoKX0sQms9dmEoZnVuY3Rpb24oKXtyZXR1cm5cIlhNTEh0dHBSZXF1ZXN0XCJpbiB3aW5kb3cmJlwid2l0aENyZWRlbnRpYWxzXCJpbiBuZXcgWE1MSHR0cFJlcXVlc3R9KSxDaz12YShmdW5jdGlvbigpe3JldHVybiFfLnVlJiYhdmV9KSxEaz12YShmdW5jdGlvbigpe3JldHVybiFfLnVlJiYhdmV9KSxFaz1mdW5jdGlvbihhKXt2YXIgYj1hLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pLmxlbmd0aDtcIkVycm9yXCI9PWEuc2xpY2UoMCw1KSYmYi0tO3JldHVybiBifSxGaz12YShmdW5jdGlvbigpe3JldHVybiEhS2coXy5yLmxvY2F0aW9uLmhyZWYpfSksR2s9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zcGxpdChcIi9cIik7cmV0dXJuXCIvXCI9PWEuY2hhckF0KDApJiYyPD1iLmxlbmd0aD9iWzFdOlwiL1wiIT1hLmNoYXJBdCgwKSYmMTw9Yi5sZW5ndGg/YlswXTpcIlwifSxIaz1mdW5jdGlvbihhKXt2YXIgYj1bXTtiPWEubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBHayhjLmdldEFkVW5pdFBhdGgoKSl9KTtVYShiKTtyZXR1cm4gYn0sSWs9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/KGE9bmkoYSkpJiZhLmZsb29yKCk6bnVsbH0sSms9ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYhIUIoYSwxKX0sS2s9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9e30sZD1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYikpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXtlPWUudmFsdWU7dmFyIGY9YltlXTtmPW5ldyBmLmNvbnN0cnVjdG9yKEFmKGYuaWEpKTtjW2VdPWZ9cmV0dXJue046bmV3IGEuY29uc3RydWN0b3IoQWYoYS5pYSkpLFI6Y319LExrPXZhKGZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO2lmKHZvaWQgMCE9PWEpe3ZhciBiPW5ldyBVaW50OEFycmF5KDE2KTthLmdldFJhbmRvbVZhbHVlcyhiKX1lbHNlIGZvcihiPUFycmF5KDE2KSxhPTA7MTY+YTsrK2EpYlthXT1NYXRoLmZsb29yKDI1NSpNYXRoLnJhbmRvbSgpKTthPVwiXCI7Yj1fLkYoYik7Zm9yKHZhciBjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsMTU+PWMmJihhKz1cIjBcIiksYSs9Yy50b1N0cmluZygxNik7cmV0dXJuIGF9KSxNaz1mdW5jdGlvbihhLGIpe3ZhciBjPWIuUjtyZXR1cm4geChiLk4sNil8fHgoY1thLmdldFNsb3RFbGVtZW50SWQoKV0sMTcpP251bGw6cGEoYSl9LE5rPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygyLDUyKSl9LE9rPWZ1bmN0aW9uKGEsYixjKXt0cnl7dmFyIGQ9d2kodG9wLmRvY3VtZW50LHRvcCkueSxlPWQrYi5oZWlnaHQqKGMrMSk7cmV0dXJuIGEueT49ZCYmYS55PD1lfWNhdGNoKGYpe3JldHVybiEwfX0sUGs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXBhKGEuc2xvdCxiKSxlPWQmJjI9PT1fLnJhKDM5NSkmJlwibm9uZVwiPT09ZC5zdHlsZS5kaXNwbGF5O2UmJihkLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiKTthPXphKGIsYSxjKTtlJiYoZC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTtyZXR1cm4gYX0sUWs9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7cmV0dXJuIGIubG9jYXRpb24/Yi5VUkxTZWFyY2hQYXJhbXM/KGE9Yi5VUkxTZWFyY2hQYXJhbXM/KG5ldyBiLlVSTFNlYXJjaFBhcmFtcyhiLmxvY2F0aW9uLnNlYXJjaCkpLmdldChhKTpudWxsKSYmYS5sZW5ndGg/YTpudWxsOihhPShuZXcgUmVnRXhwKFwiWz8mXVwiK2ErXCI9KFteJl0qKVwiKSkuZXhlYyhiLmxvY2F0aW9uLnNlYXJjaCkpP2RlY29kZVVSSUNvbXBvbmVudChhWzFdKTpudWxsOm51bGx9LFJrPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3dpbmRvdzpiO3JldHVybiEhUWsoYSxiKX0sU2s9ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYobnVsbCE9QihhLDEpfHwhIXgoYSw2KSl9LFRrPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gU2soYil8fDQ9PWdrKGEpfHw1PT09Z2soYSl8fGN9LFVrPWZ1bmN0aW9uKGEpe3JldHVyblwiZ29vZ2xlX2Fkc19pZnJhbWVfXCIrYS50b1N0cmluZygpfSxWaz1mdW5jdGlvbihhKXtyZXR1cm4gVWsoYSkrXCJfX2NvbnRhaW5lcl9fXCJ9LG9hPWZ1bmN0aW9uKGEsYil7Yj1wYShhLGIpO2lmKCFiKXJldHVybiBudWxsO3ZhciBjPVZrKGEuZ2V0U2xvdElkKCkpO3JldHVybiBpZyhiLGZ1bmN0aW9uKGQpe3JldHVybiBkLmlkPT09Y30pfTt2YXIgJGE9ZnVuY3Rpb24oKXtyZXR1cm5cIjIwMjAwODI3MDFcIn07V2IoXCJnZXRWZXJzaW9uXCIsJGEpO3ZhciBXaz1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iP1wiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiOmI7aWYobnVsbD09Y3x8MD5jfHwxPGMpYz1fLkRqKDIzKTt0aGlzLnY9TWF0aC5yYW5kb20oKTt0aGlzLkE9dGhpcy52PGM7dGhpcy5qPWE7dGhpcy5tPWJiKF8ucik7dGhpcy5vPWI7dGhpcy5sPXtwdnNpZDp0aGlzLm19fSxFPWZ1bmN0aW9uKGEsYixjKXtcInN0cmluZ1wiIT10eXBlb2YgYyYmKGM9U3RyaW5nKGMpKTsvXlxcdyskLy50ZXN0KGIpJiZjJiYoYS5sW2JdPWMpfSxZaz1mdW5jdGlvbihhLGIsYyl7Yj12b2lkIDA9PT1iP251bGw6YjtjPXZvaWQgMD09PWM/ITE6YztiPXZvaWQgMD09PWI/bnVsbDpiO2M9dm9pZCAwPT09Yz8hMTpjO2lmKEZrKCkpYj0hMDtlbHNle3ZhciBkPWEuQTtiJiYwPD1iJiYoZD0oYz9hLnY6TWF0aC5yYW5kb20oKSk8Yik7Yj1kJiYhIWEuan1iJiYoXy55KDMwNSk/VmgoYS5sLGEuaik6KGE9WGsoYSl8fFwiXCIsXy5UaCh3aW5kb3csYSkpKX0sWGs9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vK1wiL3BhZ2VhZC9nZW5fMjA0P2lkPVwiK2VuY29kZVVSSUNvbXBvbmVudChhLmopO18uSmIoYS5sLGZ1bmN0aW9uKGMsZCl7YyYmKGIrPVwiJlwiK2QrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGMpKX0pO3JldHVybiBifSxsYj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9aazpiO0UoYSxcInZyZ1wiLCRhKCkpO3ZhciBjPUhrKGIpO2MubGVuZ3RoJiYoMz49Yy5sZW5ndGg/RShhLFwibndfaWRcIixjLmpvaW4oKSk6KGM9Yy5zbGljZSgwLDMpLGMucHVzaChcIl9fZXh0cmFfX1wiKSxFKGEsXCJud19pZFwiLGMuam9pbigpKSkpO0UoYSxcIm5zbG90c1wiLGIubGVuZ3RoLnRvU3RyaW5nKCkpO2I9a2ouQigpLmooKTtiLmxlbmd0aCYmRShhLFwiZWlkXCIsYi5qb2luKCkpO0UoYSxcInB1Yl91cmxcIixkb2N1bWVudC5VUkwpfSxrYj1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP3t9OmM7dmFyIGQ9Yy54ZXx8XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tXCI7Yz1jLnZhO2lmKHZvaWQgMD09PWN8fDA+Y3x8MTxjKWM9Xy5EaigyMyk7TWF0aC5yYW5kb20oKTxjJiYoYT1uZXcgV2soYSxkKSxiKGEpLFlrKGEsMSwhMCkpfSxaaz1bXTt2YXIgJGs9Xy5EaigzOCksYWw9ZnVuY3Rpb24oYSxiKXthPXttZXRob2RJZDphfTtiLm5hbWUmJihhLm5hbWU9Yi5uYW1lKTtiLm1lc3NhZ2UmJihhLm1lc3NhZ2U9Yi5tZXNzYWdlLnN1YnN0cmluZygwLDUxMikpO2IuZmlsZU5hbWUmJihhLmZpbGVOYW1lPWIuZmlsZU5hbWUpO2IubGluZU51bWJlciYmKGEubGluZU51bWJlcj1iLmxpbmVOdW1iZXIpO2Iuc3RhY2smJihhLnN0YWNrPVliKGIuc3RhY2ssXCJcIikpO3JldHVybiBhfSxjbD1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jPyExOmM7YmwoYSxiKTtpZighYyl0aHJvdyBiO30sYmw9ZnVuY3Rpb24oYSxiLGMpe2M9dm9pZCAwPT09Yz8kazpjO2lmKCFiLmlzUmVwb3J0ZWQpdHJ5e2IuaXNSZXBvcnRlZD0hMDt2YXIgZD1hbChhLGIpLGU9bmV3IFdrKFwiZ3B0X2V4Y2VwdGlvblwiKTt0cnl7bGIoZSl9Y2F0Y2goZil7fV8uSmIoZCxmdW5jdGlvbihmLGcpe3JldHVybiBFKGUsZyxmKX0pO1lrKGUsYyl9Y2F0Y2goZil7fX0sUz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEcoYSxiLGMsXy55KDE0NCkpfSxHPWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD8hMTpkO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIGY9W10sZz0wO2c8YXJndW1lbnRzLmxlbmd0aDsrK2cpZltnXT1hcmd1bWVudHNbZ107Zz0hMTt2YXIgaD1udWxsLGs9Y3x8Y2wsbD10ay5CKCk7dHJ5e3ZhciBtPV8ueSg4NSk7bSYmbCYmKGg9bC5zdGFydChhLnRvU3RyaW5nKCksMykpO3ZhciBuPWIuYXBwbHkodGhpcyxmKTtnPSEwO20mJmwmJlhpKGwsaCl9Y2F0Y2godyl7Zz9ibCgxMTAsdyk6bj1rLmNhbGwodGhpcyxhLHcpLFZpKGgpfWlmKGQmJi4xPk1hdGgucmFuZG9tKCkpdHJ5e3ZhciBxPUVycm9yKCk7a2IoXCJncHRfYXBpX3VzYWdlXCIsZnVuY3Rpb24odyl7RSh3LFwibWV0aG9kSWRcIixhKTtFKHcsXCJhcmdzXCIsZi5sZW5ndGgpO0UodyxcInN0YWNrXCIsWWIocS5zdGFjayxxLm1lc3NhZ2UpKTtsYih3KX0se3ZhOjF9KX1jYXRjaCh3KXt9cmV0dXJuIG59fSxtYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIEcoYSxiLGMsITEpKCl9O3ZhciBkbD1mdW5jdGlvbihhKXt0aGlzLnB1c2g9Uyg3NixmdW5jdGlvbihiKXtyZXR1cm4gYS5wdXNoLmFwcGx5KGEsYXJndW1lbnRzKX0pfTtfLkooZGwseWopO3ZhciBlbD1mdW5jdGlvbigpe18uUC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5YPW5ldyB0Lk1hcH07Xy5KKGVsLF8uUCk7ZWwucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKTt0aGlzLlguY2xlYXIoKX07ZWwucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmlkLGQsZTtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBnKCl7dmFyIGgsaz10aGlzLGwsbSxuLHE7cmV0dXJuIERhKGcsZnVuY3Rpb24odyl7aWYoMT09dy5qKXJldHVybiBoPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIiksaC5pbml0Q3VzdG9tRXZlbnQoYywhMCwhMCxiKSxFYSh3LDAsMik7bD1udWxsIT09KGQ9ay5YLmdldChjKSkmJnZvaWQgMCE9PWQ/ZDpuZXcgdC5TZXQ7bT1fLkYobCk7Zm9yKG49bS5uZXh0KCk7IW4uZG9uZTtuPW0ubmV4dCgpKXtxPW4udmFsdWU7dHJ5e3EoaCl9Y2F0Y2godSl7XCJmdW5jdGlvblwiPT09dHlwZW9mKG51bGw9PT0oZT13aW5kb3cuY29uc29sZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuZXJyb3IpJiZjb25zb2xlLmVycm9yKHUpfX13Lmo9MH0pfSl9O3ZhciBmbD1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9bXTpiO3RoaXMubD1hO3RoaXMuaj1ifTtmbC5wcm90b3R5cGUuZ2V0TWVzc2FnZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubH07ZmwucHJvdG90eXBlLmdldE1lc3NhZ2VBcmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07dmFyIGhsPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5sPW5ldyBEYXRlO3RoaXMuQT1kJiZnbChkKTt0aGlzLm09YyYmZ2woYyk7dGhpcy5vPWE7dGhpcy52PWI7dGhpcy5qPWV9O18ucD1obC5wcm90b3R5cGU7Xy5wLmdldFNsb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5BfTtfLnAuZ2V0U2VydmljZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm19O18ucC5nZXRMZXZlbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm99O18ucC5nZXRUaW1lc3RhbXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTtfLnAuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZ9O18ucC5nZXRSZWZlcmVuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTtfLnAudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmwudG9UaW1lU3RyaW5nKCkrXCI6IFwiK2lsW3RoaXMub10rXCI6IFwiK3RoaXMudjt0aGlzLmomJihhKz1cIiBEdXJhdGlvbjogXCIrKHRoaXMubC5nZXRUaW1lKCktdGhpcy5qLmdldFRpbWVzdGFtcCgpLmdldFRpbWUoKSkrXCJtcy5cIik7cmV0dXJuIGF9O18ucC5nZXRTZXJ2aWNlPVMoNzYzLGhsLnByb3RvdHlwZS5nZXRTZXJ2aWNlKTt2YXIgaWw9W1wiRGVidWdcIixcIkluZm9cIixcIldhcm5pbmdcIixcIkVycm9yXCIsXCJGYXRhbFwiXTt2YXIgamw9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IHhoKDFFMyl9LGtsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHpoKGEuaikuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLmdldFNsb3QoKT09PWJ9KX0sbGw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gemgoYS5qKS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMuZ2V0TGV2ZWwoKT49Yn0pfTtqbC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKGEsYixjLGQsZSl7YT1uZXcgaGwoYSxiLHZvaWQgMD09PWM/bnVsbDpjLHZvaWQgMD09PWQ/bnVsbDpkLHZvaWQgMD09PWU/bnVsbDplKTt0aGlzLmouYWRkKGEpO3JldHVybiBhfTtqbC5wcm90b3R5cGUuaW5mbz1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5sb2coMSxhLGIsYyxkKX07amwucHJvdG90eXBlLko9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMubG9nKDIsYSxiLGMsZCl9O2psLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5sb2coMyxhLGIsYyxkKX07SWMoamwpO3ZhciBtbD12YShmdW5jdGlvbigpe3ZhciBhPV8ucmooNSkuaW5kZXhPZihTdHJpbmcoamgoKSkpO2E9Xy5yaig2KVthXXx8XCJcIjt2YXIgYj12b2lkIDA9PT1iP3dpbmRvdy5kb2N1bWVudDpiO2lmKGEmJmIuaGVhZCl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIik7Yy5odHRwRXF1aXY9XCJvcmlnaW4tdHJpYWxcIjtjLmNvbnRlbnQ9YTtiLmhlYWQuYXBwZW5kQ2hpbGQoYyl9fSksbmw9ZnVuY3Rpb24oYSl7dmFyIGI9dm9pZCAwPT09Yj9uYXZpZ2F0b3I6YjttbCgpO2I9XCJzY2hlZHVsaW5nXCJpbiBiJiZcImlzSW5wdXRQZW5kaW5nXCJpbiBiLnNjaGVkdWxpbmcmJmIuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZygpO3ZhciBjPV8ucmEoMzEpO2ImJk1hdGgucmFuZG9tKCk8YyYmc2V0VGltZW91dChmdW5jdGlvbigpe2tiKFwiZ3B0X2lucHV0X3BlbmRpbmdcIixmdW5jdGlvbihkKXtsYihkKTtFKGQsXCJjdHhcIixhKTtFKGQsXCJjb3JyXCIsYmIoXy5yKSk7dmFyIGU9RXJyb3IoXCJpbnB1dFBlbmRpbmdcIik7RShkLFwic3RhY2tcIixZYihlLnN0YWNrLGUubWVzc2FnZSkpfSx7dmE6MX0pfSwxKTtyZXR1cm4gYn07dmFyIG9sPWZ1bmN0aW9uKCl7ZWwuY2FsbCh0aGlzKX07Xy5KKG9sLGVsKTt2YXIgZ2w9ZnVuY3Rpb24oYSl7dmFyIGI9eGouZ2V0KGEpO2lmKCFiKXt2YXIgYz1iPWEuR2EoKTt3ai5zZXQoYyxhKTt4ai5zZXQoYSxjKX1yZXR1cm4gYn07dmFyIFQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoOysrZCljW2RdPWFyZ3VtZW50c1tkXTtyZXR1cm4gbmV3IGZsKGEsXy5GYihjKS5jb25jYXQoKSl9fSxwbD1mdW5jdGlvbihhKXtyZXR1cm5cIltcIithLm1hcChmdW5jdGlvbihiKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGI/XCInXCIrYitcIidcIjpBcnJheS5pc0FycmF5KGIpP3BsKGIpOlN0cmluZyhiKX0pLmpvaW4oXCIsIFwiKStcIl1cIn0scWw9ZnVuY3Rpb24oYSxiKXtiPXBsKGIpO2I9Yi5zdWJzdHJpbmcoMSxiLmxlbmd0aC0xKTtyZXR1cm4gbmV3IGZsKDk2LFthLGJdKX0scmw9VCgyKSxzbD1UKDMpLHRsPVQoNCksdWw9VCg1KSx2bD1UKDYpLHdsPVQoMTIpLHhsPVQoMTQpLHlsPVQoMTYpLHpsPVQoMTcpLEFsPVQoMTkpLEJsPVQoMjApLENsPVQoMjMpLERsPVQoMjYpLEVsPVQoMjcpLEZsPVQoMjgpLEdsPVQoMzApLEhsPVQoMzEpLElsPVQoMzQpLEpsPVQoMzUpLEtsPVQoMzYpLExsPVQoMzcpLE1sPVQoMzgpLE5sPVQoNDApLE9sPVQoNDMpLFBsPVQoNDQpLFFsPVQoNDYpLFJsPVQoNDcpLFNsPVQoNDgpLFRsPVQoNTApLFVsPVQoNTcpLFZsPVQoNTgpLFdsPVQoNTkpLFhsPVQoNjApLFlsPVQoNjEpLFpsPVQoNjIpLCRsPVQoNjMpLGFtPVQoNjQpLGJtPVQoNjYpLGNtPVQoNjgpLGRtPVQoNzApLGVtPVQoNzEpLGZtPVQoNzQpLGdtPVQoNzYpLGhtPVQoNzgpLGltPVQoNzkpLGptPVQoODApLGttPVQoODIpLGxtPVQoODQpLG1tPVQoODUpLG5tPVQoODcpLG9tPVQoODgpLHBtPVQoOTApLHFtPVQoOTIpLHJtPVQoOTMpLHNtPVQoOTQpLHRtPVQoOTUpLHVtPVQoOTkpLHZtPVQoMTAwKSx3bT1UKDEwMSkseG09VCgxMDIpLHltPVQoMTAzKSx6bT1UKDEwNCksQW09VCgxMDUpLEJtPVQoMTA2KSxDbT1UKDEwNyksRG09VCgxMDgpLEVtPVQoMTA5KSxGbT1UKDExMCksR209VCgxMTEpLEhtPVQoMTEzKSxJbT1UKDExNCksSm09VCgxMTUpLEttPVQoMTE2KSxMbT1UKDExNyksTW09VCgxMTgpLE5tPVQoMTE5KTt2YXIgT209ZnVuY3Rpb24oKXtlbC5jYWxsKHRoaXMpO3RoaXMuQT10aGlzLmo9MH07Xy5KKE9tLG9sKTtPbS5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGRsKHRoaXMpfTtPbS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9amwuQigpLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKXRyeXtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXJndW1lbnRzW2NdJiYoYXJndW1lbnRzW2NdKCksdGhpcy5qKyspfWNhdGNoKGQpe3RoaXMuQSsrLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoXCJFeGNlcHRpb24gaW4gcXVldWVkIEdQVCBjb21tYW5kXCIsZCksYi5lcnJvcihHbChTdHJpbmcoZC5tZXNzYWdlKSkpfWIuaW5mbyhIbChTdHJpbmcodGhpcy5qKSxTdHJpbmcodGhpcy5BKSkpO3JldHVybiB0aGlzLmp9O3ZhciBRbT1mdW5jdGlvbigpe09tLmNhbGwodGhpcyk7dmFyIGE9dGhpczt0aGlzLm89W107dGhpcy5DPSExO3RoaXMubT10aGlzLmw9MDt0aGlzLkQ9Ryg2MzUsZnVuY3Rpb24oKXthLmw9MDtQbShhKX0pfTtfLkooUW0sT20pO3ZhciBSbT1mdW5jdGlvbihhKXtyZXR1cm4gYS5DfHwhYS5vLmxlbmd0aD8wOl8ueSgxNzEpPzE6Xy55KDE3MCk/bmwoMSk/MTowOl8ueSgyNDcpJiZubCgxKT8yOjB9LFNtPWZ1bmN0aW9uKGEpe2EubHx8KGEubD1zZXRUaW1lb3V0KGEuRCxfLnJhKDIzKSkpfSxQbT1mdW5jdGlvbihhKXtpZihhLmwpe2lmKCFhLkMpcmV0dXJuO2NsZWFyVGltZW91dChhLmwpO2EubD0wfWZvcih2YXIgYj1qbC5CKCk7YS5vLmxlbmd0aDspe3ZhciBjPWEuby5zaGlmdCgpO3RyeXtjKCksYS5qKyt9Y2F0Y2goZSl7YS5BKyssd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmVycm9yJiZ3aW5kb3cuY29uc29sZS5lcnJvcihcIkV4Y2VwdGlvbiBpbiBxdWV1ZWQgR1BUIGNvbW1hbmRcIixlKSxiLmVycm9yKEdsKFN0cmluZyhlLm1lc3NhZ2UpKSl9Yz1SbShhKTtpZigxPT09Yyl7U20oYSk7YnJlYWt9ZWxzZSAyPT09YyYmKGEubT1hLm18fF8uTmkoKSl9Yi5pbmZvKEhsKFN0cmluZyhhLmopLFN0cmluZyhhLkEpKSk7aWYoYS5tKXt2YXIgZD1fLk5pKCktYS5tO2EubT0wO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBrYihcImdwdF9pbnB1dF9wZW5kaW5nXCIsZnVuY3Rpb24oZSl7bGIoZSk7RShlLFwiY3R4XCIsNCk7RShlLFwiY29yclwiLGJiKF8ucikpO0UoZSxcInB0clwiLGQpfSx7dmE6MX0pfSwxKX19LFRtPWZ1bmN0aW9uKGEsYil7YS5vPV8uRmIoYS5vKS5jb25jYXQoXy5GYihiLmZpbHRlcihMYykpKTtfLnkoMTczKSYmMT09PVJtKGEpP1NtKGEpOlBtKGEpfTtRbS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpYltjXT1hcmd1bWVudHNbY107dGhpcy5DPV8ueSgxNzIpO1RtKHRoaXMsYik7cmV0dXJuIHRoaXMuan07dmFyIFVtPWZ1bmN0aW9uKCl7aWYoXy55KDE3Nikpe3ZhciBhPVhiKCkuY21kO2lmKCFhfHxBcnJheS5pc0FycmF5KGEpKXt2YXIgYj1uZXcgUW07WGIoKS5jbWQ9Z2woYik7YSYmMDxhLmxlbmd0aCYmVG0oYixhKX19ZWxzZSBpZihhPVhiKCkuY21kLCFhfHxBcnJheS5pc0FycmF5KGEpKWI9bmV3IE9tLFhiKCkuY21kPWdsKGIpLGEmJjA8YS5sZW5ndGgmJmIucHVzaC5hcHBseShiLGEpfTtVbT1HKDc3LFVtKTt2YXIgVm09ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soVm0sTSk7dmFyIFhtPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxXbSxudWxsKX07SyhYbSxNKTt2YXIgV209WzEzXTt2YXIgWm09ZnVuY3Rpb24oYSl7a2YodGhpcyxhLFltLG51bGwpfTtLKFptLE0pO3ZhciBZbT1bMTNdO3ZhciAkbT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SygkbSxNKTt2YXIgYW49ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soYW4sTSk7dmFyIGRuPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxibixjbil9O0soZG4sTSk7dmFyIGVuPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGVuLE0pO3ZhciBibj1bMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsNDUsMjMsMjcsMjgsMzhdLGNuPVtbNCw0MV0sWzM5LDQ4XV07ZW4ucHJvdG90eXBlLmdldEh0bWw9ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLDEpfTt2YXIgZ249ZnVuY3Rpb24oYSl7a2YodGhpcyxhLGZuLG51bGwpfTtLKGduLE0pO3ZhciBobj1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhobixNKTt2YXIgZm49WzFdLGpuPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBobjtyZXR1cm4gcWYoYiwxLGEsMCl9LGtuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHFmKGEsMixiLDApfSxsbj1mdW5jdGlvbihhLGIpe3hmKGEsMSxiLGhuKX07dmFyIG5uPWZ1bmN0aW9uKGEsYil7dmFyIGM9d2luZG93O2E6e3RyeXtpZihhKXt2YXIgZD1hLmdldEl0ZW0oXCJnb29nbGVfZXhwZXJpbWVudF9tb2RcIik7YnJlYWsgYX19Y2F0Y2goaCl7fWQ9bnVsbH12YXIgZT1kfHxcIlwiO2Q9bnVsbDt0cnl7aWYoZD16ZihnbixlKSxlKXt2YXIgZj16ZihnbixlKTtsbihmLGtuKGpuKDEpLC0xKSk7Zi5tKCl9fWNhdGNoKGgpe21uKGUpLGQ9bmV3IGdufWY9dWYoZCxobiwxKTtpZihmPVpjKGYsZnVuY3Rpb24oaCl7cmV0dXJuIG5mKGgsMSwwKT09PWJ9KSl7dmFyIGc9bmYoZiwyLDApO2lmKG51bGw9PT1nfHxpc05hTihnKSltbihlKTtlbHNlIHJldHVybiBnfWM9RWcoYyk7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7Zj9rbihmLGMpOmxuKGQsa24oam4oYiksYykpO3JldHVybiBGZyhhLGQubSgpKT9jOm51bGx9LG1uPWZ1bmN0aW9uKGEpey4wMT5NYXRoLnJhbmRvbSgpJiZWaCh7ZGF0YTphfSxcImxzX3RhbXBcIil9O3ZhciBvbj17fSxwbj0ob25bM109XCJodHRwczovL3MwLjJtZG4ubmV0L2Fkcy9yaWNobWVkaWEvc3R1ZGlvL211L3RlbXBsYXRlcy9oaWZpL2hpZmkuanNcIixvbikscW49e30scm49KHFuWzNdPVwiaHR0cHM6Ly9zMC4ybWRuLm5ldC9hZHMvcmljaG1lZGlhL3N0dWRpb19jYW5hcnkvbXUvdGVtcGxhdGVzL2hpZmkvaGlmaV9jYW5hcnkuanNcIixxbik7dmFyIHNuPWZ1bmN0aW9uKGEpe3RoaXMuaj1hO3RoaXMubD1qZSgpfSx0bj1mdW5jdGlvbihhKXt2YXIgYj17fTtfLlZjKGEsZnVuY3Rpb24oYyl7YltjLmpdPWMubH0pO3JldHVybiBifTt2YXIgdm4sd24seG47dm49ZnVuY3Rpb24oKXtyZXR1cm4gMCE9Xy51bihkb2N1bWVudCl9O18udW49ZnVuY3Rpb24oYSl7cmV0dXJue3Zpc2libGU6MSxoaWRkZW46MixwcmVyZW5kZXI6MyxwcmV2aWV3OjQsdW5sb2FkZWQ6NX1bYS52aXNpYmlsaXR5U3RhdGV8fGEud2Via2l0VmlzaWJpbGl0eVN0YXRlfHxhLm1velZpc2liaWxpdHlTdGF0ZXx8XCJcIl18fDB9O3duPWZ1bmN0aW9uKGEpe3ZhciBiO2EudmlzaWJpbGl0eVN0YXRlP2I9XCJ2aXNpYmlsaXR5Y2hhbmdlXCI6YS5tb3pWaXNpYmlsaXR5U3RhdGU/Yj1cIm1venZpc2liaWxpdHljaGFuZ2VcIjphLndlYmtpdFZpc2liaWxpdHlTdGF0ZSYmKGI9XCJ3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlXCIpO3JldHVybiBifTt4bj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YS5oaWRkZW4/YS5oaWRkZW46bnVsbCE9YS5tb3pIaWRkZW4/YS5tb3pIaWRkZW46bnVsbCE9YS53ZWJraXRIaWRkZW4/YS53ZWJraXRIaWRkZW46bnVsbH07dmFyIHpuLHluO3puPWZ1bmN0aW9uKCl7dGhpcy53YXNQbGFUYWdQcm9jZXNzZWQ9ITE7dGhpcy53YXNSZWFjdGl2ZUFkQ29uZmlnUmVjZWl2ZWQ9e307dGhpcy5hZENvdW50PXt9O3RoaXMud2FzUmVhY3RpdmVBZFZpc2libGU9e307dGhpcy5zdGF0ZUZvclR5cGU9e307dGhpcy5yZWFjdGl2ZVR5cGVFbmFibGVkSW5Bc2ZlPXt9O3RoaXMud2FzUmVhY3RpdmVUYWdSZXF1ZXN0U2VudD0hMTt0aGlzLnJlYWN0aXZlVHlwZURpc2FibGVkQnlQdWJsaXNoZXI9e307dGhpcy50YWdTcGVjaWZpY1N0YXRlPXt9O3RoaXMuaW1wcm92ZUNvbGxpc2lvbkRldGVjdGlvbj0xO3RoaXMubWVzc2FnZVZhbGlkYXRpb25FbmFibGVkPSExO3RoaXMuZmxvYXRpbmdBZHNTdGFja2luZz1uZXcgeW59O18uQW49ZnVuY3Rpb24oYSl7YS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZT9udWxsPT1hLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlLmZsb2F0aW5nQWRzU3RhY2tpbmcmJihhLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlLmZsb2F0aW5nQWRzU3RhY2tpbmc9bmV3IHluKTphLmdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlPW5ldyB6bjtyZXR1cm4gYS5nb29nbGVfcmVhY3RpdmVfYWRzX2dsb2JhbF9zdGF0ZX07eW49ZnVuY3Rpb24oKXt0aGlzLm1heFpJbmRleFJlc3RyaWN0aW9ucz17fTt0aGlzLm5leHRSZXN0cmljdGlvbklkPTA7dGhpcy5tYXhaSW5kZXhMaXN0ZW5lcnM9W119O3ZhciBCbixGbixHbixIbjtCbj03MjgqMS4zODtfLkNuPWZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySGVpZ2h0Pj1hLmlubmVyV2lkdGh9O18uRW49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5EbihhKS5jbGllbnRXaWR0aDthPWEuaW5uZXJXaWR0aDtyZXR1cm4gYiYmYT9iL2E6MH07Rm49ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1fLkRuKGEpLmNsaWVudFdpZHRoKT9hPih2b2lkIDA9PT1iPzQyMDpiKT8zMjc2ODozMjA+YT82NTUzNjowOjE2Mzg0fTtHbj1mdW5jdGlvbihhKXtyZXR1cm4oYT1fLkVuKGEpKT8xLjA1PGE/MjYyMTQ0Oi45NT5hPzUyNDI4ODowOjEzMTA3Mn07Xy5Ebj1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQ7dmFyIGI9e307YSYmKGI9XCJDU1MxQ29tcGF0XCI9PWEuY29tcGF0TW9kZT9hLmRvY3VtZW50RWxlbWVudDphLmJvZHkpO3JldHVybiBifHx7fX07SG49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5Bbih3aW5kb3cpO2IuYWRDb3VudD1iLmFkQ291bnR8fHt9O2IuYWRDb3VudFthXT1iLmFkQ291bnRbYV0rMXx8MX07Xy5Jbj1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5wYWdlWU9mZnNldD8oYS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGEuZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlfHxhLmRvY3VtZW50LmJvZHkpLnNjcm9sbFRvcDphLnBhZ2VZT2Zmc2V0fTt2YXIgSm49ZnVuY3Rpb24oYSl7YTp7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPV8ucjt2YXIgZD1hW2JdO3ZhciBlPWMuZG9jdW1lbnQ7ZS5lbGVtZW50RnJvbVBvaW50KGQueCxkLnkpO3ZhciBmPWQueDtkPWQueTtlLmhhc093blByb3BlcnR5KFwiX2dvb2dfZWZwX2NhbGxlZF9cIil8fChlLl9nb29nX2VmcF9jYWxsZWRfPWUuZWxlbWVudEZyb21Qb2ludChmLGQpKTtpZihlPWUuZWxlbWVudEZyb21Qb2ludChmLGQpKWlmKFwiZml4ZWRcIj09ZmkoZSxcInBvc2l0aW9uXCIpKWM9ZTtlbHNle2M6e2M9Yy5kb2N1bWVudDtmb3IoZT1lLm9mZnNldFBhcmVudDtlJiZlIT1jLmJvZHk7ZT1lLm9mZnNldFBhcmVudClpZihcImZpeGVkXCI9PWZpKGUsXCJwb3NpdGlvblwiKSl7Yz1lO2JyZWFrIGN9Yz1udWxsfWM9Yz9jOm51bGx9ZWxzZSBjPW51bGw7aWYoYyl7YT1jO2JyZWFrIGF9fWE9bnVsbH1yZXR1cm4gbnVsbCE9YX0sS249ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLnIuaW5uZXJXaWR0aDtmb3IodmFyIGQ9W10sZT0wOzM+ZTtlKyspZm9yKHZhciBmPTA7Mz5mO2YrKylkLnB1c2goe3g6Zi8yKmMseTphK2UvMiooYi1hKX0pO3JldHVybiBkfTt2YXIgTG4sTW47TG49ZnVuY3Rpb24oYSl7dHJ5e2Euc2V0SXRlbShcIl9fc3RvcmFnZV90ZXN0X19cIixcIl9fc3RvcmFnZV90ZXN0X19cIik7dmFyIGI9YS5nZXRJdGVtKFwiX19zdG9yYWdlX3Rlc3RfX1wiKTthLnJlbW92ZUl0ZW0oXCJfX3N0b3JhZ2VfdGVzdF9fXCIpO3JldHVyblwiX19zdG9yYWdlX3Rlc3RfX1wiPT1ifWNhdGNoKGMpe3JldHVybiExfX07Xy5Obj1mdW5jdGlvbihhKXt0cnl7aWYobnVsbD09YXx8IUxuKGEpKXJldHVybiBudWxsO3ZhciBiPWEuZ2V0SXRlbShcIl9fbHN2X19cIik7aWYoIWIpcmV0dXJuW107dHJ5e3ZhciBjPUpTT04ucGFyc2UoYil9Y2F0Y2goZCl7fXJldHVybiFBcnJheS5pc0FycmF5KGMpfHxfLlhjKGMsZnVuY3Rpb24oZCl7cmV0dXJuIV8uQShOdW1iZXIsXCJpc0ludGVnZXJcIikuY2FsbChOdW1iZXIsZCl9KT8oYS5yZW1vdmVJdGVtKFwiX19sc3ZfX1wiKSxbXSk6TW4oYyl9Y2F0Y2goZCl7cmV0dXJuIG51bGx9fTtNbj1mdW5jdGlvbihhKXthPXZvaWQgMD09PWE/W106YTt2YXIgYj1EYXRlLm5vdygpO3JldHVybiBfLlRhKGEsZnVuY3Rpb24oYyl7cmV0dXJuIDM2RTU+Yi1jfSl9O18uT249ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYxPmEubGVuZ3RofTt2YXIgUG49ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTA7dHJ5e2R8PWEhPWEudG9wPzUxMjowLGR8PWEubmF2aWdhdG9yJiYvQW5kcm9pZCAyLy50ZXN0KGEubmF2aWdhdG9yLnVzZXJBZ2VudCk/MTA0ODU3NjowfWNhdGNoKGcpe2R8PTMyfXZhciBlPTA7dHJ5e2V8PUZuKGEsMjUwMCk7aWYoXy55KDMwOSkpe3ZhciBmPV8uRG4oYSkuY2xpZW50SGVpZ2h0O2V8PWY/MzIwPmY/LTIxNDc0ODM2NDg6MDoxMDczNzQxODI0fWV8PUduKGEpO2ImJiFfLk9uKF8uTm4oYykpJiYoZXw9MTM0MjE3NzI4KX1jYXRjaChnKXtlfD0zMn1yZXR1cm4gZHxlfTt2YXIgUW49ZnVuY3Rpb24oKXt2YXIgYT17fTtyZXR1cm4gYS5hZHNlbnNlX2NoYW5uZWxfaWRzPVwiY2hhbm5lbFwiLGEuYWRzZW5zZV9hZF90eXBlcz1cImFkX3R5cGVcIixhLmFkc2Vuc2VfYWRfZm9ybWF0PVwiZm9ybWF0XCIsYS5hZHNlbnNlX2JhY2tncm91bmRfY29sb3I9XCJjb2xvcl9iZ1wiLGEuYWRzZW5zZV9ib3JkZXJfY29sb3I9XCJjb2xvcl9ib3JkZXJcIixhLmFkc2Vuc2VfbGlua19jb2xvcj1cImNvbG9yX2xpbmtcIixhLmFkc2Vuc2VfdGV4dF9jb2xvcj1cImNvbG9yX3RleHRcIixhLmFkc2Vuc2VfdXJsX2NvbG9yPVwiY29sb3JfdXJsXCIsYS5wYWdlX3VybD1cInVybFwiLGEuYWRzZW5zZV9hbGxvd19leHBhbmRhYmxlX2Fkcz1cImVhXCIsYS5hZHNlbnNlX2VuY29kaW5nPVwib2VcIixhLmFkc2Vuc2VfZmFtaWx5X3NhZmU9XCJhZHNhZmVcIixhLmFkc2Vuc2VfZmxhc2hfdmVyc2lvbj1cImZsYXNoXCIsYS5hZHNlbnNlX2ZvbnRfZmFjZT1cImZcIixhLmFkc2Vuc2VfaGludHM9XCJoaW50c1wiLGEuYWRzZW5zZV9rZXl3b3JkX3R5cGU9XCJrd190eXBlXCIsYS5hZHNlbnNlX2tleXdvcmRzPVwia3dcIixhLmFkc2Vuc2VfdGVzdF9tb2RlPVwiYWR0ZXN0XCIsYS5hbHRlcm5hdGVfYWRfaWZyYW1lX2NvbG9yPVwiYWx0X2NvbG9yXCIsYS5hbHRlcm5hdGVfYWRfdXJsPVwiYWx0ZXJuYXRlX2FkX3VybFwiLGEuZGVtb2dyYXBoaWNfYWdlPVwiY3VzdF9hZ2VcIixhLmRlbW9ncmFwaGljX2dlbmRlcj1cImN1c3RfZ2VuZGVyXCIsYS5kb2N1bWVudF9sYW5ndWFnZT1cImhsXCIsYX07dmFyIFJuPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9bnVsbDtBcnJheS5pc0FycmF5KGQpP2Y9ZDpLYyhkKT9mPV8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxkKTpkP2Y9W2RdOl8ueSgyNjIpfHwoZj1bXSk7dmFyIGc9XCJzdHJpbmdcIj09PXR5cGVvZiBjJiYhRmQoYyksaD1fLnkoMjYyKT8hIWYmJmYuZXZlcnkoZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrfSk6ITA7ZyYmaD8oXy55KDI2Mil8fChmPWYubWFwKGZ1bmN0aW9uKGspe3JldHVybiBTdHJpbmcoayl9KSksKGQ9KHo9dWYoYixKaiw5KSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihrKXtyZXR1cm4gS2ooayk9PT1jfSkpP01qKGQsZik6KGQ9TWooTGoobmV3IEpqLGMpLGYpLHhmKGIsOSxkLEpqKSksZS5pbmZvKHpsKGMsZi5qb2luKCksYS5nZXRBZFVuaXRQYXRoKCkpLG51bGwsYSkpOmUuSihxbChcIlNsb3Quc2V0VGFyZ2V0aW5nXCIsW2MsZF0pLG51bGwsYSl9LFNuPWZ1bmN0aW9uKGEsYixjLGQpe2lmKG51bGw9PWN8fFwib2JqZWN0XCIhPT10eXBlb2YgYylkLmVycm9yKHFsKFwiU2xvdC51cGRhdGVUYXJnZXRpbmdGcm9tTWFwXCIsW2NdKSxudWxsLGEpO2Vsc2UgZm9yKHZhciBlPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxjKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpZj1mLnZhbHVlLFJuKGEsYixmLGNbZl0sZCl9O3ZhciBUbj1mdW5jdGlvbigpe3RoaXMubD17fTt0aGlzLmo9bmV3IFNqO0QodGhpcy5qLDI2LE5rKCkpOyhfLnkoNDE3KSYmMj09PVJnKCl8fF8uRGooMzYpKSYmRCh0aGlzLmosMTUsITApfSxVbj1mdW5jdGlvbihhKXt2YXIgYj1Ubi5CKCksYz1CKGEsMik7YyYmIWIubC5oYXNPd25Qcm9wZXJ0eShjKSYmKGIubFtjXT1hKX0sVm49ZnVuY3Rpb24oKXtyZXR1cm4gVG4uQigpLmx9LFduPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubFtiXXx8bnVsbH07SWMoVG4pO3ZhciBYbj1cIlwiLFluPW51bGwsWm49ZnVuY3Rpb24oKXtYbnx8KFhuPXFqKDIpfHxcIjEtMC0zN1wiKTtyZXR1cm4gWG59LCRuPWZ1bmN0aW9uKCl7aWYobnVsbD09WW4pe2Zvcih2YXIgYT1fLnJqKDEpLGI9W10sYz0wO2M8YS5sZW5ndGg7Yys9MilwZyhhW2NdLGFbYysxXSxiKTtZbj1iLmpvaW4oXCImXCIpfXJldHVybiBZbn0sYW89ZnVuY3Rpb24oYSl7dmFyIGI9amwuQigpLGM9bmV3IFBqO2lmKCFhfHwhXy5NYyhhKSlyZXR1cm4gbnVsbDt2YXIgZD0hMTtfLkpiKGEsZnVuY3Rpb24oZSxmKXtzd2l0Y2goZil7Y2FzZSBcImFsbG93T3ZlcmxheUV4cGFuc2lvblwiOlwiYm9vbGVhblwiPT09dHlwZW9mIGU/RChjLDEsYS5hbGxvd092ZXJsYXlFeHBhbnNpb24pOihiLmVycm9yKHdtKFwiYWxsb3dPdmVybGF5RXhwYW5zaW9uXCIsU3RyaW5nKGEuYWxsb3dPdmVybGF5RXhwYW5zaW9uKSkpLGQ9ITApO2JyZWFrO2Nhc2UgXCJhbGxvd1B1c2hFeHBhbnNpb25cIjpcImJvb2xlYW5cIj09PXR5cGVvZiBlP0QoYywyLGEuYWxsb3dQdXNoRXhwYW5zaW9uKTooYi5lcnJvcih3bShcImFsbG93UHVzaEV4cGFuc2lvblwiLFN0cmluZyhhLmFsbG93UHVzaEV4cGFuc2lvbikpKSxkPSEwKTticmVhaztjYXNlIFwic2FuZGJveFwiOiEwPT09ZT9RaihjLGEuc2FuZGJveCk6KGIuZXJyb3Iod20oXCJzYW5kYm94XCIsU3RyaW5nKGEuc2FuZGJveCkpKSxkPSEwKTticmVhaztjYXNlIFwidXNlVW5pcXVlRG9tYWluXCI6XCJib29sZWFuXCI9PT10eXBlb2YgZT9EKGMsNCxhLnVzZVVuaXF1ZURvbWFpbik6bnVsbCE9PWUmJihiLmVycm9yKHdtKFwidXNlVW5pcXVlRG9tYWluXCIsU3RyaW5nKGEudXNlVW5pcXVlRG9tYWluKSkpLGQ9ITApO2JyZWFrO2RlZmF1bHQ6Yi5KKHZtKGYpKX19KTtyZXR1cm4gZD9udWxsOmN9LGJvPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBQajthPV8uRihhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKWlmKGM9Yy52YWx1ZSl7aWYobnVsbCE9QihjLDEpKXt2YXIgZD14KGMsMSk7RChiLDEsZCl9bnVsbCE9QihjLDIpJiYoZD14KGMsMiksRChiLDIsZCkpO251bGwhPUIoYywzKSYmUWooYix4KGMsMykpO251bGwhPUIoYyw0KSYmKGM9eChjLDQpLEQoYiw0LGMpKX1yZXR1cm4gYn07dmFyIGNvPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5qPWJ9O2NvLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O2NvLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTt2YXIgZm89ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWpsLkIoKSxkPVduKFRuLkIoKSxhLmdldFNsb3RFbGVtZW50SWQoKSk7dGhpcy5zZXQ9Uyg0MCxmdW5jdGlvbihlLGYpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZXx8IWZ8fHZvaWQgMD09PVFuKClbZV0pcmV0dXJuIGMuSihxbChcIlNsb3Quc2V0XCIsW2UsZl0pLG51bGwsYSksYjt2YXIgZz0oej11ZihkLEpqLDMpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGgpe3JldHVybiBLaihoKT09PWV9KTtnP01qKGcsW2ZdKTooZz1MaihuZXcgSmosZSksc2YoZywyLGYpLHhmKGQsMyxnLEpqKSk7cmV0dXJuIGJ9KTt0aGlzLmdldD1TKDQxLGZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZSlyZXR1cm4gYy5KKHFsKFwiU2xvdC5nZXRcIixbZV0pLG51bGwsYSksbnVsbDt2YXIgZj0oej11ZihkLEpqLDMpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGcpe3JldHVybiBLaihnKT09PWV9KTtyZXR1cm4oZj1mJiZCKGYsMikpP2ZbMF06bnVsbH0pO3RoaXMuZ2V0QXR0cmlidXRlS2V5cz1TKDQyLGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGQsSmosMykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBLaihlKX0pfSk7dGhpcy5hZGRTZXJ2aWNlPVMoNDMsZnVuY3Rpb24oZSl7ZT13ai5nZXQoZSk7aWYoIWUpcmV0dXJuIGMuSihzbShhLmdldFNsb3RJZCgpLnRvU3RyaW5nKCkpLG51bGwsYSksYjtpZigoej1CKGQsNCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGUuWigpKSlyZXR1cm4gYy5KKHdsKGUuWigpLGEuZ2V0U2xvdElkKCkudG9TdHJpbmcoKSksZSxhKSxiO2UueGEoYSxkKTtyZXR1cm4gYn0pO3RoaXMuZGVmaW5lU2l6ZU1hcHBpbmc9Uyg0NCxmdW5jdGlvbihlKXtpZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBFcnJvcihcIlNpemUgbWFwcGluZyBoYXMgdG8gYmUgYW4gYXJyYXlcIik7ZT1lLm1hcChwayk7d2YoZCw2LGUpO3JldHVybiBifSxmdW5jdGlvbihlLGYpe2JsKGUsZik7ZGgoXCJJbmNvcnJlY3QgdXNhZ2Ugb2YgZ29vZ2xldGFnLlNsb3QgZGVmaW5lU2l6ZU1hcHBpbmc6IFwiK2YubWVzc2FnZSk7cmV0dXJuIGJ9KTt0aGlzLnNldENsaWNrVXJsPVMoNDUsZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBlKXJldHVybiBjLkoocWwoXCJTbG90LnNldENsaWNrVXJsXCIsW2VdKSxudWxsLGEpLGI7RChkLDcsZSk7cmV0dXJuIGJ9KTt0aGlzLnNldENhdGVnb3J5RXhjbHVzaW9uPVMoNDYsZnVuY3Rpb24oZSl7XCJzdHJpbmdcIiE9PXR5cGVvZiBlfHxGZChlKT9jLkoocWwoXCJTbG90LnNldENhdGVnb3J5RXhjbHVzaW9uXCIsW2VdKSxudWxsLGEpOigoej1CKGQsOCksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LGUpfHxzZihkLDgsZSksYy5pbmZvKHhsKGUpLG51bGwsYSkpO3JldHVybiBifSk7dGhpcy5jbGVhckNhdGVnb3J5RXhjbHVzaW9ucz1TKDQ3LGZ1bmN0aW9uKCl7RChkLDgsW10pO2MuaW5mbyh5bCgpLG51bGwsYSk7cmV0dXJuIGJ9KTt0aGlzLmdldENhdGVnb3J5RXhjbHVzaW9ucz1TKDQ4LGZ1bmN0aW9uKCl7cmV0dXJuIEIoZCw4KS5zbGljZSgpfSk7dGhpcy5zZXRUYXJnZXRpbmc9Uyg0OSxmdW5jdGlvbihlLGYpe1JuKGEsZCxlLGYsYyk7cmV0dXJuIGJ9KTt0aGlzLnVwZGF0ZVRhcmdldGluZ0Zyb21NYXA9Uyg2NDksZnVuY3Rpb24oZSl7U24oYSxkLGUsYyk7cmV0dXJuIGJ9KTt0aGlzLmNsZWFyVGFyZ2V0aW5nPVMoNTAsZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gZmsoZCxbXSksYy5pbmZvKEFsKGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEpLGI7dmFyIGY9dWYoZCxKaiw5KSxnPV8uQShmLFwiZmluZEluZGV4XCIpLmNhbGwoZixmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCk9PT1lfSk7aWYoMD5nKXJldHVybiBjLkooeG0oZSxhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhKSxiO2Yuc3BsaWNlKGcsMSk7ZmsoZCxmKTtjLmluZm8oeW0oZSxhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhKTtyZXR1cm4gYn0pO3RoaXMuZ2V0VGFyZ2V0aW5nPVMoNTEsZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBlKXJldHVybiBjLkoocWwoXCJTbG90LmdldFRhcmdldGluZ1wiLFtlXSksbnVsbCxhKSxbXTt2YXIgZj0oej11ZihkLEpqLDkpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGcpe3JldHVybiBLaihnKT09PWV9KTtyZXR1cm4gZj9CKGYsMikuc2xpY2UoKTpbXX0pO3RoaXMuZ2V0VGFyZ2V0aW5nS2V5cz1TKDUyLGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGQsSmosOSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBLaihlKX0pfSk7dGhpcy5zZXRDb2xsYXBzZUVtcHR5RGl2PVMoNTMsZnVuY3Rpb24oZSxmKXtmPXZvaWQgMD09PWY/ITE6ZjtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBlfHxcImJvb2xlYW5cIiE9PXR5cGVvZiBmKXJldHVybiBjLkoocWwoXCJTbG90LnNldENvbGxhcHNlRW1wdHlEaXZcIixbZSxmXSksbnVsbCxhKSxiO0QoZCwxMCxlKTtEKGQsMTEsZSYmZik7a2IoXCJncHRfY2VkXCIsZnVuY3Rpb24oZyl7dmFyIGg9eChkLDExKT9cInRcIjpcImZcIjtFKGcsXCJzY1wiLGgpO0UoZyxcImxldmVsXCIsXCJzbG90XCIpO2xiKGcpfSk7ZiYmIWUmJmMuSihCbChhLmdldFNsb3RJZCgpLnRvU3RyaW5nKCkpLG51bGwsYSk7cmV0dXJuIGJ9KTt0aGlzLmdldEFkVW5pdFBhdGg9Uyg1NCxmdW5jdGlvbigpe3JldHVybiBhLmdldEFkVW5pdFBhdGgoKX0pO3RoaXMuZ2V0U2xvdEVsZW1lbnRJZD1TKDU5OCxmdW5jdGlvbigpe3JldHVybiBhLmdldFNsb3RFbGVtZW50SWQoKX0pO3RoaXMuc2V0Rm9yY2VTYWZlRnJhbWU9Uyg1NSxmdW5jdGlvbihlKXtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBlKXJldHVybiBjLkooZm0oXCJTbG90LnNldEZvcmNlU2FmZUZyYW1lXCIsU3RyaW5nKGUpKSxudWxsLGEpLGI7RChkLDEyLGUpO3JldHVybiBifSk7dGhpcy5zZXRTYWZlRnJhbWVDb25maWc9Uyg1NixmdW5jdGlvbihlKXt2YXIgZj1hbyhlKTtpZighZilyZXR1cm4gYy5lcnJvcihxbChcIlNsb3Quc2V0U2FmZUZyYW1lQ29uZmlnXCIsW2VdKSxudWxsLGEpLGI7dmYoZCwxMyxmKTtyZXR1cm4gYn0pO3RoaXMuZ2V0UmVzcG9uc2VJbmZvcm1hdGlvbj1TKDM1NSxmdW5jdGlvbigpe3JldHVybiBhLkh9KTt0aGlzLmdldE5hbWU9UygxNzAsZnVuY3Rpb24oKXt3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihcImdldE5hbWUgb24gZ29vZ2xldGFnLlNsb3QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgZ2V0QWRVbml0UGF0aCBpbnN0ZWFkLlwiKTt2YXIgZT1uZXcgV2soXCJzbG90X2dldF9uYW1lXCIpO2xiKGUpO1lrKGUpO3JldHVybiBhLm8uZ2V0QWRVbml0UGF0aCgpfSk7dGhpcy5nZXRTbG90SWQ9Uyg1NzksZnVuY3Rpb24oKXtyZXR1cm4gZ2woYS5nZXRTbG90SWQoKSl9KTt0aGlzLmdldFNlcnZpY2VzPVMoNTgwLGZ1bmN0aW9uKCl7cmV0dXJuIEIoZCw0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEFqKGUpfSl9KTt0aGlzLmdldFNpemVzPVMoNTgxLGZ1bmN0aW9uKGUsZil7cmV0dXJuKGU9cWsoZCxlLGYpKT9lLm1hcChmdW5jdGlvbihnKXtyZXR1cm4geChnLDMpP1wiZmx1aWRcIjpuZXcgY28oQihnLDEpLEIoZywyKSl9KTpudWxsfSk7dGhpcy5nZXRDbGlja1VybD1TKDU4MixmdW5jdGlvbigpe3JldHVybiBudWxsIT1CKGQsNyk/ZC5nZXRDbGlja1VybCgpOlwiXCJ9KTt0aGlzLmdldFRhcmdldGluZ01hcD1TKDU4MyxmdW5jdGlvbigpe2Zvcih2YXIgZT17fSxmPV8uRih1ZihkLEpqLDkpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlnPWcudmFsdWUsZVtLaihnKV09QihnLDIpO3JldHVybiBlfSk7dGhpcy5nZXRPdXRPZlBhZ2U9Uyg1ODQsZnVuY3Rpb24oKXtyZXR1cm4gMCE9Z2soZCl9KTt0aGlzLmdldENvbGxhcHNlRW1wdHlEaXY9Uyg1ODUsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9QihkLDEwKT94KGQsMTApOm51bGx9KTt0aGlzLmdldERpdlN0YXJ0c0NvbGxhcHNlZD1TKDU4NixmdW5jdGlvbigpe3JldHVybiBudWxsIT1CKGQsMTEpP3goZCwxMSk6bnVsbH0pO3RoaXMuZ2V0Q29udGVudFVybD1TKDU4NyxmdW5jdGlvbigpe3JldHVybiBhLlQoKX0pO3RoaXMuZ2V0Rmlyc3RMb29rPVMoNTg4LGZ1bmN0aW9uKCl7ZGgoXCJUaGUgZ2V0Rmlyc3RMb29rIG1ldGhvZCBvZiBnb29nbGV0YWcuU2xvdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXBkYXRlIHlvdXIgY29kZSB0byBubyBsb25nZXIgY2FsbCB0aGlzIG1ldGhvZC5cIik7cmV0dXJuIDB9KTt0aGlzLmdldEVzY2FwZWRRZW1RdWVyeUlkPVMoNTkxLGZ1bmN0aW9uKCl7cmV0dXJuIGVvKGEpfSk7dGhpcy5nZXRIdG1sPVMoNTkyLGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0SHRtbCgpfSl9O18uSihmbyx5aik7dmFyIGdvPWZ1bmN0aW9uKCl7dGhpcy5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQ9dGhpcy5zb3VyY2VBZ25vc3RpY0NyZWF0aXZlSWQ9dGhpcy5saW5lSXRlbUlkPXRoaXMuY3JlYXRpdmVJZD10aGlzLmNhbXBhaWduSWQ9dGhpcy5hZHZlcnRpc2VySWQ9bnVsbDt0aGlzLmlzQmFja2ZpbGw9ITE7dGhpcy5lbmNyeXB0ZWRUcm91Ymxlc2hvb3RpbmdJbmZvPXRoaXMuY3JlYXRpdmVUZW1wbGF0ZUlkPXRoaXMuY29tcGFueUlkcz10aGlzLnlpZWxkR3JvdXBJZHM9bnVsbH07dmFyIGhvPWZ1bmN0aW9uKGEpe3RoaXMuZ2V0SWQ9Uyg1OTMsZnVuY3Rpb24oKXtyZXR1cm4gYS5vfSk7dGhpcy5nZXRBZFVuaXRQYXRoPVMoNTk0LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWRVbml0UGF0aCgpfSk7dGhpcy5nZXROYW1lPVMoNTk1LGZ1bmN0aW9uKCl7dmFyIGI9bmV3IFdrKFwic2xvdF9pZF9nZXRfbmFtZVwiKTtsYihiKTtZayhiKTtyZXR1cm4gYS5sfSk7dGhpcy50b1N0cmluZz1TKDU5NixmdW5jdGlvbigpe3JldHVybiBhLnRvU3RyaW5nKCl9KTt0aGlzLmdldERvbUlkPVMoNTk3LGZ1bmN0aW9uKCl7cmV0dXJuIGEuan0pfTtfLkooaG8seWopO3ZhciBpbz1mdW5jdGlvbihhLGIsYyl7ZWwuY2FsbCh0aGlzKTt0aGlzLmw9YTt0aGlzLmJiPWI7dGhpcy5vPXRoaXMubCtcIl9cIit0aGlzLmJiO3RoaXMuaj1jfTtfLkooaW8sb2wpO2lvLnByb3RvdHlwZS5nZXRBZFVuaXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubH07aW8ucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iYn07aW8ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307aW8ucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBobyh0aGlzKX07dmFyIGtvPWZ1bmN0aW9uKGEpe2VsLmNhbGwodGhpcyk7dGhpcy5vPWE7dGhpcy5DPWpsLkIoKTtfLnkoNDEyKXx8dGhpcy5DLmluZm8ocmwodGhpcy5vLnRvU3RyaW5nKCkpLG51bGwsdGhpcyk7dGhpcy5QPXRoaXMuRD10aGlzLlY9bnVsbDt0aGlzLlQ9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifTt0aGlzLkc9bnVsbDt0aGlzLm09R2sodGhpcy5vLmdldEFkVW5pdFBhdGgoKSk7dGhpcy4kYT1cIlwiO3RoaXMuSD1udWxsO3RoaXMuZWM9ITE7dGhpcy5BPTA7dGhpcy5ZPXRoaXMubWM9bnVsbDtqbyh0aGlzKTt0aGlzLk89XCJcIjt0aGlzLmo9bnVsbDt0aGlzLkk9XCJcIjt0aGlzLks9W107dGhpcy5NPVtdO3RoaXMuVz0wfTtfLkooa28sb2wpO3ZhciBsbz1mdW5jdGlvbihhLGIpe2EuSy5wdXNoKGIpfSxtbz1mdW5jdGlvbihhLGIpe2EuTS5wdXNoKGIpfTtrby5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGZvKHRoaXMpfTtrby5wcm90b3R5cGUuZ2V0QWRVbml0UGF0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm8uZ2V0QWRVbml0UGF0aCgpfTtrby5wcm90b3R5cGUuZ2V0U2xvdEVsZW1lbnRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm8uan07dmFyIHBhPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP2RvY3VtZW50OmI7cmV0dXJuIGEubWN8fGIuZ2V0RWxlbWVudEJ5SWQoYS5vLmopfTtrby5wcm90b3R5cGUuZ2V0U2xvdElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307dmFyIG5vPWZ1bmN0aW9uKGEsYil7YS5UPWJ9LG9vPWZ1bmN0aW9uKGEpe18ueSg0MTIpfHxhLkMuaW5mbyh0bChhLmdldEFkVW5pdFBhdGgoKSksbnVsbCxhLGEuVil9O2tvLnByb3RvdHlwZS5UYT1mdW5jdGlvbigpe18ueSg0MTIpfHwodGhpcy5EPXRoaXMuQy5pbmZvKHVsKHRoaXMuZ2V0QWRVbml0UGF0aCgpKSxudWxsLHRoaXMpKX07dmFyIHBvPWZ1bmN0aW9uKGEpe18ueSg0MTIpfHwoYS5QPWEuQy5pbmZvKHZsKGEuZ2V0QWRVbml0UGF0aCgpKSxudWxsLGEsYS5EKSl9O2tvLnByb3RvdHlwZS5tYj1mdW5jdGlvbigpe18ueSg0MTIpfHwodGhpcy5HPXRoaXMuR3x8Xy5OaSgpKX07dmFyIHJvPWZ1bmN0aW9uKGEpe2EuRz1udWxsO2EuSD1udWxsO2Euaj1udWxsO2EuST1cIlwiO18ueSg0MTgpfHxxbyhhLFwiXCIpO2Zvcih2YXIgYj1fLkYoYS5LKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSljPWMudmFsdWUsYygpO2EuSy5sZW5ndGg9MH0sc289ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPV8uRihhLk0pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxjKCk7YS5NLmxlbmd0aD0wfSx0bz1mdW5jdGlvbihhLGIpe2Euaj1iO2lmKCFhLmp8fHgoYS5qLDgpKWI9bnVsbDtlbHNle2I9bmV3IGdvO3ZhciBjPSEheChhLmosOSk7Yi5pc0JhY2tmaWxsPWM7dmFyIGQ9QihhLmosMTUpLGU9QihhLmosMTYpO2QubGVuZ3RoJiZlLmxlbmd0aCYmKGIuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkPWRbMF0sYi5zb3VyY2VBZ25vc3RpY0xpbmVJdGVtSWQ9ZVswXSxjfHwoYi5jcmVhdGl2ZUlkPWRbMF0sYi5saW5lSXRlbUlkPWVbMF0sKGM9QihhLmosMjIpKSYmYy5sZW5ndGgmJihiLmNyZWF0aXZlVGVtcGxhdGVJZD1jWzBdKSkpO0IoYS5qLDE3KS5sZW5ndGgmJihjPUIoYS5qLDE3KVswXSxiLmFkdmVydGlzZXJJZD1jKTtCKGEuaiwxOCkubGVuZ3RoJiYoYz1CKGEuaiwxOClbMF0sYi5jYW1wYWlnbklkPWMpO0IoYS5qLDE5KS5sZW5ndGgmJihjPUIoYS5qLDE5KSxiLnlpZWxkR3JvdXBJZHM9Yyk7QihhLmosMjApLmxlbmd0aCYmKGM9QihhLmosMjApLGIuY29tcGFueUlkcz1jKTtjPUIoYS5qLDQ1KTtjPWMubGVuZ3RoJiZcInN0cmluZ1wiIT09dHlwZW9mIGNbMF0/Xy5SYShjLG1mKTpjO2MubGVuZ3RoJiYoYi5lbmNyeXB0ZWRUcm91Ymxlc2hvb3RpbmdJbmZvPWNbMF0pfWEuSD1ifSxlbz1mdW5jdGlvbihhKXtyZXR1cm4gYS5qJiZCKGEuaiwzNCl8fFwiXCJ9O2tvLnByb3RvdHlwZS5nZXRIdG1sPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNCYWNrZmlsbCgpPyh3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oXCJUaGlzIGFkJ3MgaHRtbCBjYW5ub3QgYmUgYWNjZXNzZWQgdXNpbmcgdGhlIGdldEh0bWwgbWV0aG9kIG9uIGdvb2dsZXRhZy5TbG90LiBSZXR1cm5pbmcgdGhlIGVtcHR5IHN0cmluZyBpbnN0ZWFkLlwiKSxcIlwiKTp0aGlzLkl9O2tvLnByb3RvdHlwZS5pc0JhY2tmaWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaj8hIXgodGhpcy5qLDkpOm51bGx9O2tvLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7b2wucHJvdG90eXBlLnYuY2FsbCh0aGlzKTtzbyh0aGlzKTtfLnkoNDEyKXx8dGhpcy5DLmluZm8odW0odGhpcy5vLnRvU3RyaW5nKCkpLG51bGwsdGhpcyl9O3ZhciBqbz1mdW5jdGlvbihhLGIpe2J8fChiPSsrdGsuQigpLnYpO2EubD1ifSx1bz1mdW5jdGlvbihhLGIpe3JldHVybihiPW9hKGEsYikpP2IucXVlcnlTZWxlY3RvcignaWZyYW1lW2lkPVwiJytVayhhLm8pKydcIl0nKTpudWxsfSxxbz1mdW5jdGlvbihhLGIpe2EuTz1ifHxcIlwifTt2YXIgdm89ZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP3t9OmE7dmFyIGI9dm9pZCAwPT09Yj97fTpiO3RoaXMubD1hO3RoaXMuaj1ifSx3bz1mdW5jdGlvbihhLGIsYyxkKXtpZighKGImJmIgaW4gYS5sKSlyZXR1cm4hMTtpZih2b2lkIDA9PT1kfHxkfHwhYS5qW2JdKWEualtiXT1jfHxcIlwiO3JldHVybiEwfSx1az1mdW5jdGlvbihhKXtyZXR1cm4gYS5qLnBhZ2VfdXJsfHxudWxsfSx4bz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1bXSxmPWIuajtfLkpiKGQsZnVuY3Rpb24oZyxoKXtpZihnKXtnPXtwYjpnfTt2YXIgaz1mW2hdLGw9W107YS5mb3JFYWNoKGZ1bmN0aW9uKG0sbil7KG09Yy5nZXQobS5nZXRTbG90SWQoKSkpJiZtLmpbaF0mJihsW25dPW0ualtoXSl9KTtpZihsLmxlbmd0aHx8aylsLmxlbmd0aCYmKGcuemQ9bCksayYmKGcubmQ9ayksZS5wdXNoKGcpfX0pO3JldHVybiBlfTt2YXIgeW89ZnVuY3Rpb24oYSl7dGhpcy5pZD1hfSx6bz1uZXcgeW8oMSksQW89bmV3IHlvKDIpLEJvPW5ldyB5bygzKSxDbz1uZXcgeW8oMjEpLFBiPW5ldyB5byg0KSxEbz1uZXcgeW8oNSksRW89bmV3IHlvKDcpLEZvPW5ldyB5byg4KSxHbz1uZXcgeW8oOSksSG89bmV3IHlvKDEwKSxJbz1uZXcgeW8oMTEpLEpvPW5ldyB5bygxMiksS289bmV3IHlvKDEzKSxMbz1uZXcgeW8oMTQpLE1vPW5ldyB5bygxNSksTm89bmV3IHlvKDE2KSxPbz1uZXcgeW8oMTcpLFFiPW5ldyB5bygxOCk7dmFyIEk9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IHQuTWFwO3RoaXMubD1fLnkoNDAzKX0sUW89ZnVuY3Rpb24oYSxiLGMsZCl7UG8oYSxiLG51bGwsZCk7UG8oYSxiLGMsZCl9LFNvPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBSbyhhLGIsbnVsbCxjLGQpfSxPYj1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBSbyhhLGIsYyxkLGUpfSxSbz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPUcoZCxlLGZ1bmN0aW9uKGgsayl7Y2woaCxrLCEwKX0pLGc9VG8oYixjKTtiPWEuai5nZXQoZyk7Ynx8KGI9W10sYS5qLnNldChnLGIpKTtiLnB1c2goZik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9YS5qLmdldChnKTtoJiYoYWQoaCxmKSxoLmxlbmd0aHx8YS5qLmRlbGV0ZShnKSl9fSxUbz1mdW5jdGlvbihhLGIpe2E9YS5pZDtyZXR1cm4gYj9hK1wiX1wiK2I6U3RyaW5nKGEpfSxQbz1mdW5jdGlvbihhLGIsYyxkKXtjPWEuai5nZXQoVG8oYixjKSl8fFtdO2I9e307Yz1fLkYoYyk7Zm9yKHZhciBlPWMubmV4dCgpOyFlLmRvbmU7Yj17cmI6Yi5yYn0sZT1jLm5leHQoKSliLnJiPWUudmFsdWUsYS5sP3QuUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbihmKXtyZXR1cm4gZnVuY3Rpb24oKXtmLnJiKGQpfX0oYikpOmIucmIoZCl9O0ljKEkpO3ZhciBVbyxWbyxXbyxYbztVbz1udWxsO1ZvPWZ1bmN0aW9uKCl7dmFyIGE9UW4oKTt0aGlzLmo9bmV3IHQuTWFwO3RoaXMubz1hO3RoaXMubD1uZXcgdm8oYSk7dGhpcy52PSExfTtXbz1mdW5jdGlvbigpe3JldHVybiBVbz1Vb3x8bmV3IFZvfTtYbz1mdW5jdGlvbihhLGIpe2lmKCFfLnkoNDEyKXx8IWEuai5nZXQoYikpe2Euai5zZXQoYix7U2E6ITAsaWM6bmV3IHZvKGEubyksd2E6bnVsbCxTYjpcIlwifSk7Xy5SKGIsZnVuY3Rpb24oKXthLmouZGVsZXRlKGIpfSk7dmFyIGM9Yi5nZXRTbG90SWQoKTtfLnkoNDEyKSYmKF8uUihiLE9iKEkuQigpLElvLGMsNzY0LGZ1bmN0aW9uKCl7dmFyIGQ9YS5qLmdldChiKTtkLm9jPV8uTmkoKTtsbyhiLGZ1bmN0aW9uKCl7ZC5vYz12b2lkIDB9KX0pKSxfLlIoYixPYihJLkIoKSxDbyxjLDc2NyxmdW5jdGlvbigpe3ZhciBkPWEuai5nZXQoYik7ZC5EYz1fLk5pKCk7bG8oYixmdW5jdGlvbigpe2QuRGM9dm9pZCAwfSl9KSksXy5SKGIsT2IoSS5CKCksUGIsYyw3NjUsZnVuY3Rpb24oKXt2YXIgZD1hLmouZ2V0KGIpO2QuQ2M9Xy5OaSgpO2xvKGIsZnVuY3Rpb24oKXtkLkNjPXZvaWQgMH0pfSkpLF8uUihiLE9iKEkuQigpLERvLGMsNzY2LGZ1bmN0aW9uKCl7dmFyIGQ9YS5qLmdldChiKTtkLnVjPV8uTmkoKTtsbyhiLGZ1bmN0aW9uKCl7ZC51Yz12b2lkIDB9KX0pKSk7Xy55KDQxOCkmJl8uUihiLE9iKEkuQigpLEpvLGMsNzczLGZ1bmN0aW9uKGQpe3ZhciBlPWEuai5nZXQoYik7ZS5TYj1CKGQsMzMpfHxcIlwiO21vKGIsZnVuY3Rpb24oKXtlLlNiPVwiXCJ9KX0pKX19O18uWW89ZnVuY3Rpb24oYSxiKXtpZighXy55KDQyMikpe3ZhciBjPWIuaj9PKGIuaixCZiw1MCk6bnVsbDtpZihjJiYobnVsbCE9QihjLDEpfHx4KGMsNikpKXJldHVybiExfXJldHVybiBhLmouZ2V0KGIpJiZhLmouZ2V0KGIpLlNhfTtfLlpvPWZ1bmN0aW9uKGEsYil7YS5qLmdldChiKSYmKGEuai5nZXQoYikuU2E9ITEpfTtfLiRvPWZ1bmN0aW9uKGEsYil7YS5qLmdldChiKSYmKGEuai5nZXQoYikuU2E9ITApfTtWby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5cIltBZERhdGE6XCIrXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LHRoaXMuaixmdW5jdGlvbihhKXthPV8uRihhKTt2YXIgYj1hLm5leHQoKS52YWx1ZTthLm5leHQoKTtyZXR1cm4gYi50b1N0cmluZygpfSkuam9pbigpK1wiXVwifTt2YXIgYXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5qLmhhcyhiKX0sYnA9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHQuTWFwO2E9Xy5GKF8uQShhLmosXCJlbnRyaWVzXCIpLmNhbGwoYS5qKSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSl7dmFyIGQ9Xy5GKGMudmFsdWUpO2M9ZC5uZXh0KCkudmFsdWU7ZD1kLm5leHQoKS52YWx1ZTtiLnNldChjLmdldFNsb3RJZCgpLGQuaWMpfXJldHVybiBifSxjcD1mdW5jdGlvbihhLGIpe2IuZm9yRWFjaChmdW5jdGlvbihjKXthLmouZGVsZXRlKGMpfSl9LGRwPWZ1bmN0aW9uKGEsYixjKXthLmouZ2V0KGIpJiYoYS5qLmdldChiKS53YT1jKX0sZXA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS53YX0sZnA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS5EY3x8bnVsbH0sZ3A9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS5DY3x8bnVsbH0saHA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT1hLmouZ2V0KGIpKSYmYS51Y3x8bnVsbH07dmFyIGpwPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5hZGRFdmVudExpc3RlbmVyPVMoODYsZnVuY3Rpb24oYyxkKXthLmFkZEV2ZW50TGlzdGVuZXIoYyxkKTtyZXR1cm4gYn0pO3RoaXMuZ2V0U2xvdHM9Uyg1NzMsZnVuY3Rpb24oKXtyZXR1cm4gYS5sLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gZ2woYyl9KX0pO3RoaXMuZ2V0U2xvdElkTWFwPVMoNTc0LGZ1bmN0aW9uKCl7Zm9yKHZhciBjPXt9LGQ9Xy5GKGEubCksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpZT1lLnZhbHVlLGNbZS5nZXRTbG90SWQoKS50b1N0cmluZygpXT1nbChlKTtyZXR1cm4gY30pO3RoaXMuZW5hYmxlPVMoODcsZnVuY3Rpb24oKXtyZXR1cm4gaXAoYSl9LGJsKTt0aGlzLmdldE5hbWU9Uyg1NzUsZnVuY3Rpb24oKXtyZXR1cm4gYS5aKCl9KX07Xy5KKGpwLHlqKTt2YXIga3A9e1JFV0FSREVEOjQsVE9QX0FOQ0hPUjoyLEJPVFRPTV9BTkNIT1I6MyxJTlRFUlNUSVRJQUw6NX0sbHA9ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDM6cmV0dXJuIDE7Y2FzZSA1OnJldHVybiA4O2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxtcD1mdW5jdGlvbigpe3ZhciBhPVhiKCk7YS5lbnVtc3x8KGEuZW51bXM9e091dE9mUGFnZUZvcm1hdDprcH0pfTt2YXIgbnA9ZnVuY3Rpb24oKXt0aGlzLmw9W107dGhpcy52PVtdO3RoaXMuaj17fX0sb3A9ZnVuY3Rpb24oYSxiKXtpZighXy5BKGEubCxcImluY2x1ZGVzXCIpLmNhbGwoYS5sLGIpKXN3aXRjaChiKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYztpZihjPV8ueSgxMTYpP3JuW2JdOnBuW2JdKXt2YXIgZD1iK1wiX2hvc3RwYWdlX2xpYnJhcnlcIjtpZihjPXVnKGRvY3VtZW50LGxnKGMpKSljLmlkPWR9YS5sLnB1c2goYik7Yj1uZXcgc24oYik7YS52LnB1c2goYik7YT1YYigpO2EuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zfHwoYS5ob3N0cGFnZUxpYnJhcnlUb2tlbnM9e30pO2EuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zW2Iual09Yi5sfX0scHA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5qW2JdfHxbXX07SWMobnApO3ZhciBxcD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3RoaXMubD1cIlwiO3RoaXMudj1udWxsO3ZhciBiPVRuLkIoKSxjPXt9O3RoaXNbM109KGNbMTldPWZ1bmN0aW9uKCl7cmV0dXJuISF4KGIuaiwxMCl9LGNbMTRdPUJrLGNbMTNdPWZ1bmN0aW9uKGQpe2Zvcih2YXIgZT1bXSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoOysrZillW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZS5zb21lKGZ1bmN0aW9uKGcpe3JldHVybiAwPT1hLmwubGFzdEluZGV4T2YoZywwKX0pfSxjWzEyXT1mdW5jdGlvbigpe3JldHVybiEheChiLmosNil9LGNbMTFdPXZuLGNbMTVdPWZ1bmN0aW9uKGQpe3JldHVybiBhLmooZCl9LGNbN109ZnVuY3Rpb24oKXtyZXR1cm4hKCFfLnIuY3J5cHRvfHwhXy5yLmNyeXB0by5zdWJ0bGUpfSxjWzFdPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PVJnKCl9LGMpO2M9e307dGhpc1s0XT0oY1s4XT1mdW5jdGlvbihkKXtyZXR1cm4gbm4oYS52LGQpfSxjKTt0aGlzWzVdPXt9fTtJYyhxcCk7dmFyIHJwPXtnZTpcImltcHJlc3Npb25WaWV3YWJsZVwiLG1lOlwicmV3YXJkZWRTbG90Q2FuY2VsZWRcIixuZTpcInJld2FyZGVkU2xvdENsb3NlZFwiLG9lOlwicmV3YXJkZWRTbG90Q29tcGxldGVkXCIscGU6XCJyZXdhcmRlZFNsb3RHcmFudGVkXCIscWU6XCJyZXdhcmRlZFNsb3RSZWFkeVwiLHJlOlwic2xvdEFkZGVkXCIsc2U6XCJzbG90T25sb2FkXCIsdGU6XCJzbG90UmVuZGVyRW5kZWRcIix1ZTpcInNsb3RSZXF1ZXN0ZWRcIix2ZTpcInNsb3RSZXNwb25zZVJlY2VpdmVkXCIsd2U6XCJzbG90VmlzaWJpbGl0eUNoYW5nZWRcIn0sc3A9ZnVuY3Rpb24oYSxiKXt0aGlzLnNsb3Q9YTt0aGlzLnNlcnZpY2VOYW1lPWJ9LHRwPWZ1bmN0aW9uKGEsYil7c3AuY2FsbCh0aGlzLGEsYik7dGhpcy5pc0VtcHR5PSExO3RoaXMuc2xvdENvbnRlbnRDaGFuZ2VkPSEwO3RoaXMuc291cmNlQWdub3N0aWNMaW5lSXRlbUlkPXRoaXMuc291cmNlQWdub3N0aWNDcmVhdGl2ZUlkPXRoaXMubGluZUl0ZW1JZD10aGlzLmxhYmVsSWRzPXRoaXMuY3JlYXRpdmVUZW1wbGF0ZUlkPXRoaXMuY3JlYXRpdmVJZD10aGlzLmNhbXBhaWduSWQ9dGhpcy5hZHZlcnRpc2VySWQ9dGhpcy5zaXplPW51bGw7dGhpcy5pc0JhY2tmaWxsPSExO3RoaXMuY29tcGFueUlkcz10aGlzLnlpZWxkR3JvdXBJZHM9bnVsbH07Xy5KKHRwLHNwKTt2YXIgdXA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih1cCxzcCk7dmFyIHZwPWZ1bmN0aW9uKGEsYixjKXtzcC5jYWxsKHRoaXMsYSxiKTt0aGlzLmluVmlld1BlcmNlbnRhZ2U9Y307Xy5KKHZwLHNwKTt2YXIgd3A9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih3cCxzcCk7dmFyIHhwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooeHAsc3ApO3ZhciB5cD1mdW5jdGlvbihhLGIsYyxkKXtzcC5jYWxsKHRoaXMsYSxiKTt0aGlzLm1ha2VSZXdhcmRlZFZpc2libGU9Yzt0aGlzLnBheWxvYWQ9ZH07Xy5KKHlwLHNwKTt2YXIgenA9ZnVuY3Rpb24oYSxiLGMpe3NwLmNhbGwodGhpcyxhLGIpO3RoaXMucGF5bG9hZD1jfTtfLkooenAsc3ApO3ZhciBBcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEFwLHNwKTt2YXIgQnA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihCcCxzcCk7dmFyIENwPWZ1bmN0aW9uKCl7c3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooQ3Asc3ApO3ZhciBEcD1mdW5jdGlvbigpe3NwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKERwLHNwKTt2YXIgRXA9ZnVuY3Rpb24oKXtzcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihFcCxzcCk7dmFyIEZwPW5ldyB0Lk1hcCxHcD1uZXcgdC5TZXQsSHA9ZnVuY3Rpb24oKXtlbC5jYWxsKHRoaXMpO0dwLmFkZCh0aGlzKTt0aGlzLmw9W107dGhpcy5qPSExO3RoaXMuSz1uZXcgdC5NYXA7dGhpcy5sb2c9amwuQigpO3RoaXMubG9nLmluZm8oSmwodGhpcy5aKCkpLHRoaXMpO3RoaXMuQT1bXX07Xy5KKEhwLG9sKTtIcC5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGpwKHRoaXMpfTtIcC5wcm90b3R5cGUuZ2V0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVyblwidW52ZXJzaW9uZWRcIn07dmFyIGlwPWZ1bmN0aW9uKGEpe2lmKCFhLmope2Euaj0hMDthLk5iKCk7Zm9yKHZhciBiPV8uRihhLkEpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXtjPWMudmFsdWU7dHJ5e2MoKX1jYXRjaChkKXt9fWEuQS5sZW5ndGg9MH19LElwPWZ1bmN0aW9uKGEsYil7aWYoYS5qKXRyeXtiKCl9Y2F0Y2goYyl7fWVsc2UgYS5BLnB1c2goYil9O0hwLnByb3RvdHlwZS54YT1mdW5jdGlvbihhLGIpe3RoaXMubC5wdXNoKGEpO3ZhciBjPW5ldyB4cChnbChhKSx0aGlzLlooKSk7SnAodGhpcyxcInNsb3RBZGRlZFwiLGMpO3RoaXMubG9nLmluZm8oTmwodGhpcy5aKCksYS5nZXRBZFVuaXRQYXRoKCkpLHRoaXMsYSk7c2YoYiw0LHRoaXMuWigpKX07SHAucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmwsYz1iLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gXy5BKGEsXCJpbmNsdWRlc1wiKS5jYWxsKGEsZCl9KTtjLmZvckVhY2goZnVuY3Rpb24oZCl7YWQoYixkKX0pO3JldHVybiBjfTt2YXIgS3A9ZnVuY3Rpb24oYSxiKXtrYihcImdwdF9jYWxsYmFja191c2FnZVwiLGZ1bmN0aW9uKGMpe2xiKGMpO0UoYyxcInR5cGVcIixiKTt2YXIgZD1hLmwuZmlsdGVyKGZ1bmN0aW9uKGYpe18ueSg0MTIpPyhmPVdvKCkuai5nZXQoZiksZj0hKCFmfHwhZi5vYykpOmY9MDxmLkE7cmV0dXJuIGZ9KS5sZW5ndGgsZT1hLmwuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBfLnkoNDEyKT8hIWdwKFdvKCksZik6ISFmLkR9KS5sZW5ndGg7RShjLFwibmZldGNoXCIsZCk7RShjLFwibnJlbmRcIixlKX0pfTtIcC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBifHxcInN0cmluZ1wiIT09dHlwZW9mIGEpcmV0dXJuIGE9cWwoXCJTZXJ2aWNlLmFkZEV2ZW50TGlzdGVuZXJcIixbYSxiXSksdGhpcy5sb2cuSihhLHRoaXMpLHRoaXM7aWYoXy55KDQxNikmJlwicmV3YXJkZWRTbG90Q2FuY2VsZWRcIj09PWEpdmFyIGM9ITE7ZWxzZSBhOntmb3IoYyBpbiBycClpZihycFtjXT09YSl7Yz0hMDticmVhayBhfWM9ITF9aWYoIWMpcmV0dXJuIHRoaXMubG9nLkoocm0oYSksdGhpcyksdGhpcztjPUxwKHRoaXMsYSk7Xy55KDQwOSkmJl8uQShjLFwiaW5jbHVkZXNcIikuY2FsbChjLGIpfHxjLnB1c2goYik7S3AodGhpcyxhKTtyZXR1cm4gdGhpc307dmFyIEpwPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1McChhLGIpO2QubGVuZ3RoJiZoaChmdW5jdGlvbigpe2Zvcih2YXIgZT1fLkYoZCksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Y9Zi52YWx1ZTt0cnl7ZihjKX1jYXRjaChrKXtmPWsmJlwic3RyaW5nXCI9PT10eXBlb2Ygay5uYW1lP2submFtZTpudWxsO3ZhciBnPWsmJlwic3RyaW5nXCI9PT10eXBlb2Ygay5tZXNzYWdlP2subWVzc2FnZTpudWxsLGg9XCJcIjtmJiZnP2g9ZitcIjogXCIrZzpmP2g9ZjpnJiYoaD1nKTthLmxvZy5KKHFtKGgpLGEpO3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGspfX19KX0sTHA9ZnVuY3Rpb24oYSxiKXthPV8ueSg0MDkpP0ZwOmEuSzt2YXIgYz1hLmdldChiKXx8W107YS5zZXQoYixjKTtyZXR1cm4gY307dmFyIE1wPWZ1bmN0aW9uKCl7dGhpcy5qPXt9O3RoaXMubD1qbC5CKCl9O01wLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy5qW2EuWigpXT1hfTtNcC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbihhKXt2YXIgYj1udWxsO2EgaW4gdGhpcy5qJiYoYj10aGlzLmpbYV0pO3JldHVybiBifTt2YXIgTnA9ZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCk7bmooNik7Xy5KYihhLmosZnVuY3Rpb24oYil7Yi5qP2EubC5pbmZvKE1sKCksYik6aXAoYil9KX07TXAucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXtfLkpiKHRoaXMuaixmdW5jdGlvbihiKXtyZXR1cm4gYi5kZXN0cm95U2xvdHMoYSl9KX07SWMoTXApO1diKFwiZW5hYmxlU2VydmljZXNcIixHKDkxLGZ1bmN0aW9uKCl7aWYoXy55KDQwNikpe25qKDYpO2Zvcih2YXIgYT1fLkYoXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LEdwKSksYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpaXAoYi52YWx1ZSl9ZWxzZSBOcCgpfSkpO3ZhciBPcD1mdW5jdGlvbihhKXtyZXR1cm4hIUJnKGtwLGZ1bmN0aW9uKGIpe3JldHVybiBiPT1hfSl9LFJwPWZ1bmN0aW9uKGEpe3JldHVybih6PUhrKFBwKFFwLkIoKSkpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixhKX0sU3A9amQoZnVuY3Rpb24oKXtkaChcIlRoZSBnb29nbGV0YWcucHViYWRzKCkuZGVmaW5lUGFzc2JhY2sgZnVuY3Rpb24gaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIGZ1bmN0aW9uIG1heSBicmVhayBpbiBjZXJ0YWluIGNvbnRleHRzLCBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vZG91YmxlY2xpY2stZ3B0L2d1aWRlcy9wYXNzYmFjay10YWdzI2NvbnN0cnVjdF9wYXNzYmFja190YWdzIGZvciBob3cgdG8gY29ycmVjdGx5IGNyZWF0ZSBhIHBhc3NiYWNrLlwiKX0pLFRwPWZ1bmN0aW9uKGEpe3ZhciBiPV8uciE9Xy5yLnRvcD81MTI6MDtpZihiKXJldHVybiBiO3ZhciBjPV8uQW4oXy5yKTt2YXIgZD1jLmFkQ291bnQ/MT09YXx8Mj09YT8hKCFjLmFkQ291bnRbMV0mJiFjLmFkQ291bnRbMl0pOihkPWMuYWRDb3VudFthXSkmJjI3IT09YSYmMjYhPT1hJiYxMCE9PWEmJjQwIT09YT8xPD1kOiExOiExO2QmJihifD02NCk7Yy5pbXByb3ZlQ29sbGlzaW9uRGV0ZWN0aW9uPTE7Yz0wPT09UmcoKTtzd2l0Y2goYSl7Y2FzZSAyOmNhc2UgMTpjJiYoYnw9NTM2ODcwOTEyKTtjPV8ueSgzODYpP3ZvaWQgMDo0MjA7Yz12b2lkIDA9PT1jP0JuOmM7ZD0wO3RyeXtkfD1fLnIhPV8uci50b3A/NTEyOjA7dmFyIGU9TWF0aC5taW4oXy5yLnNjcmVlbi53aWR0aHx8MCxfLnIuc2NyZWVuLmhlaWdodHx8MCk7ZHw9ZT8zMjA+ZT84MTkyOjA6MjA0ODt2YXIgZjtpZihmPV8uci5uYXZpZ2F0b3Ipe3ZhciBnPV8uci5uYXZpZ2F0b3IudXNlckFnZW50O2Y9L0ZpcmVmb3gvLnRlc3QoZyl8fC9BbmRyb2lkIDIvLnRlc3QoZyl8fC9pUGhvbmUgT1MgWzM0XV8vLnRlc3QoZyl8fC9XaW5kb3dzIFBob25lICg/Ok9TICk/WzY3XS8udGVzdChnKX1kfD1mPzEwNDg1NzY6MH1jYXRjaChoKXtkfD0zMn1lPWQ7Zj0wO3RyeXtmfD1fLkNuKF8ucik/MDo4LGZ8PUZuKF8ucixjKSxmfD1HbihfLnIpfWNhdGNoKGgpe2Z8PTMyfWc9ITE7aWYoIV8ueSgyNjkpKXtzd2l0Y2goYSl7Y2FzZSAyOmE9S24oMCxNYXRoLnJvdW5kKF8uci5pbm5lcldpZHRoLzMyMCo1MCsxNSkpO2c9Sm4oYSk7YnJlYWs7Y2FzZSAxOmlmKGE9Xy55KDE5MDEpKWE9Xy5yLmlubmVySGVpZ2h0LGE9S24oYS1NYXRoLnJvdW5kKF8uci5pbm5lcldpZHRoLzMyMCo1MCsxNSksYSksYT1KbihhKTtnPWF9ZyYmKGZ8PTE2Nzc3MjE2KX1yZXR1cm4gYnxlfGY7Y2FzZSA4OnJldHVybiFfLnkoNDAwKSYmYyYmKGJ8PTUzNjg3MDkxMiksYnxQbihfLnIsITEsbnVsbCk7ZGVmYXVsdDpyZXR1cm4gYnwzMn19LFFwPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyB0Lk1hcDt0aGlzLm89bmV3IHQuTWFwO3RoaXMubD1uZXcgdC5NYXA7dGhpcy52PWpsLkIoKTtxcC5CKCkuaj1ScH07UXAucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcyxlPXZvaWQgMD09PWM/e306YztjPXZvaWQgMD09PWUua2I/dm9pZCAwOmUua2I7dmFyIGY9dm9pZCAwPT09ZS56Yz8hMTplLnpjLGc9dm9pZCAwPT09ZS5pbnN0YW5jZT92b2lkIDA6ZS5pbnN0YW5jZTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGF8fDA+PWEubGVuZ3RofHwhYilyZXR1cm57fTtlPWxwKHZvaWQgMD09PWUuZm9ybWF0PzA6ZS5mb3JtYXQpO2lmKG51bGwhPWUpe2lmKFRwKGUpKXJldHVybnt9O0huKGUpfWYmJlNwKCk7Zj12b2lkIDA9PT1nP3RoaXMuby5nZXQoYSl8fE51bWJlcihmKTpnO3ZhciBoPWN8fFwiZ3B0X3VuaXRfXCIrYStcIl9cIitmO2I9VXAoYSxmLGIsaCk7aWYoIWIpcmV0dXJuIHRoaXMudi5lcnJvcihGbChoKSkse307Yz1iLnNsb3Q7Zz1iLmNhO3ZhciBrPWIuc2xvdElkO3RoaXMuby5zZXQoYSxmKzEpO3RoaXMuai5zZXQoayxjKTt0aGlzLmwuc2V0KGgsayk7Xy5SKGssZnVuY3Rpb24oKXtkLmouZGVsZXRlKGspO2QubC5kZWxldGUoaCl9KTtaay5wdXNoKGMpO3JldHVybntzbG90OmMsRmE6Z319O3ZhciBQcD1mdW5jdGlvbihhKXtyZXR1cm4gXy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LF8uQShhLmosXCJ2YWx1ZXNcIikuY2FsbChhLmopKX0sVnA9ZnVuY3Rpb24oYSl7dmFyIGI9W107cHAobnAuQigpLGEpLmZvckVhY2goZnVuY3Rpb24oYyl7KGM9dW8oYyxkb2N1bWVudCkpJiZiLnB1c2goYy5jb250ZW50V2luZG93KX0pO3JldHVybiBifSxXcD1mdW5jdGlvbihhKXthPV8uRihhKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKXtiPWIudmFsdWU7dmFyIGM9VG4uQigpLGQ9Yi5nZXRTbG90RWxlbWVudElkKCksZT1jLmxbZF07ZGVsZXRlIGMubFtkXTtjPWU7dmgoYik7Yz1scChnayhjKSk7bnVsbCE9YyYmKGQ9Xy5Bbih3aW5kb3cpLChlPWQuYWRDb3VudCYmZC5hZENvdW50W2NdKSYmKGQuYWRDb3VudFtjXT1lLTEpKTthZChaayxiKX19LFhwPWZ1bmN0aW9uKGEsYil7aWYoYiYmIUFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGEudi5KKHFsKFwiZ29vZ2xldGFnLmRlc3Ryb3lTbG90c1wiLFtiXSkpLCExO2I/KFVhKGIpLGE9Yi5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGQmJiFkLmxhfSkpOmE9UHAoYSk7aWYoIWF8fDA9PWEubGVuZ3RoKXJldHVybiExO2lmKF8ueSg0MDYpKXtiPV8uRihfLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksR3ApKTtmb3IodmFyIGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWMudmFsdWUuZGVzdHJveVNsb3RzKGEpfWVsc2UgTXAuQigpLmRlc3Ryb3lTbG90cyhhKTtXcChhKTtyZXR1cm4hMH0sWXA9ZnVuY3Rpb24oYSxiKXthPV8uRihfLkEoYS5qLFwidmFsdWVzXCIpLmNhbGwoYS5qKSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZihjPWMudmFsdWUsYy5nZXRTbG90SWQoKS5qPT09YilyZXR1cm4gYztyZXR1cm4gbnVsbH0sWnA9ZnVuY3Rpb24oYSl7dmFyIGI9UXAuQigpO2E9emooYSxrbyk7cmV0dXJuISFhJiZiLmouaGFzKGEuZ2V0U2xvdElkKCkpfSwkcD1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ITE6ZDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEmJih2b2lkIDA9PT1jfHxcInN0cmluZ1wiPT09dHlwZW9mIGMpKXt2YXIgZT1RcC5CKCk7cmV0dXJuIGUmJmUuYWRkKGEsYix7a2I6Yyx6YzpkfSl9cmV0dXJue319LGFxPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4oYT0kcChhLGIsYykuc2xvdCkmJmdsKGEpfHxudWxsfSxicT1mdW5jdGlvbihhKXt2YXIgYj1RcC5CKCk7cmV0dXJuIGImJm51bGw9PWE/WHAoYik6YiYmQXJyYXkuaXNBcnJheShhKT8oYT1hLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gemooYyxrbyl9KSxYcChiLGEpKTohMX0sY3E9ZnVuY3Rpb24oYSxiKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGF8fCEobnVsbD09Ynx8XCJzdHJpbmdcIj09PXR5cGVvZiBifHxcIm51bWJlclwiPT09dHlwZW9mIGImJk9wKGIpKSlyZXR1cm4gbnVsbDthOnt2YXIgYz1cIm51bWJlclwiPT09dHlwZW9mIGI/YjoxO2I9XCJzdHJpbmdcIj09PXR5cGVvZiBiP2I6dm9pZCAwO2I9UXAuQigpLmFkZChhLFsxLDFdLHtrYjpiLGZvcm1hdDpjfSk7YT1iLnNsb3Q7Yj1iLkZhO2lmKGEmJmIpe2lmKDU9PT1jJiZfLnkoMzIzKSl7Yz1udWxsO2JyZWFrIGF9RChiLDE1LGMpfWM9YXx8bnVsbH1yZXR1cm4gYyYmZ2woYyl9LFVwPWZ1bmN0aW9uKGEsYixjLGQpe2lmKFFwLkIoKS5sLmhhcyhkKSlyZXR1cm4gbnVsbDt2YXIgZT1uZXcgZGs7ZWsoRChlLDEsYSksZCk7Yz1uayhjKTt2YXIgZj1jLkhhO3dmKGUsNSxjLlhjKTtudWxsIT09ZiYmdmYoZSwxNixmKTtVbihlKTt2YXIgZz1uZXcgaW8oYSxiLGQpLGg9bmV3IGtvKGcpO18ud2goaCxnKTtpZihfLnkoNDEyKSl7amwuQigpLmluZm8ocmwoZy50b1N0cmluZygpKSxudWxsLGgpO3ZhciBrPW51bGwsbD1udWxsO18uUihoLGZ1bmN0aW9uKCl7amwuQigpLmluZm8odW0oZy50b1N0cmluZygpKSxudWxsLGgpO2w9az1udWxsfSk7Xy5SKGgsT2IoSS5CKCksSW8sZyw3NjgsZnVuY3Rpb24oKXtrPWpsLkIoKS5pbmZvKHNsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgpO1dpKHRrLkIoKSxcIjdcIiw5LGguQS0xLDAsaC5sKX0pKTtfLlIoaCxPYihJLkIoKSxKbyxnLDc2OSxmdW5jdGlvbigpe2psLkIoKS5pbmZvKHRsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgsayk7az1udWxsfSkpO18uUihoLE9iKEkuQigpLENvLGcsNzcwLGZ1bmN0aW9uKCl7bD1qbC5CKCkuaW5mbyh1bChoLmdldEFkVW5pdFBhdGgoKSksbnVsbCxoKX0pKTtfLlIoaCxPYihJLkIoKSxQYixnLDc3MSxmdW5jdGlvbigpe2psLkIoKS5pbmZvKHZsKGguZ2V0QWRVbml0UGF0aCgpKSxudWxsLGgsbCk7bD1udWxsfSkpfXJldHVybntzbG90OmgsY2E6ZSxzbG90SWQ6Z319O0ljKFFwKTthcT1HKDc0LGFxKTticT1HKDc1LGJxKTtjcT1HKDczLGNxKTt2YXIgZHE9Ryg5NSxmdW5jdGlvbihhKXt2YXIgYj1qbC5CKCk7dmFyIGM9bnVsbDt2YXIgZD1cIlwiO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSl7ZD1hO3ZhciBlPVlwKFFwLkIoKSxkKX1lbHNlIF8uTWMoYSkmJjE9PWEubm9kZVR5cGU/KGM9YSxkPWMuaWQsZT1ZcChRcC5CKCksZCkpOmU9emooYSxrbyk7aWYoZSl7aWYoYT1Ubi5CKCkuaixkPVduKFRuLkIoKSxlLmdldFNsb3RFbGVtZW50SWQoKSkpe2E9S2soYSxWbigpKTtpZihfLnkoNDIzKSl7aWYoeChkLDE5KSlyZXR1cm59ZWxzZSBpZihlLmVjKXJldHVybjtlLm1jPWM7aWYocGEoZSl8fHNrKGdrKGQpKSlmb3IoXy55KDQyMyk/RChkLDE5LCEwKTplLmVjPSEwLGI9Xy5GKEIoZCw0KSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1BaihjLnZhbHVlKSxjPXpqKGMsSHApLGMuaiYmYy5YYihhLGUpO2Vsc2UgYi5KKENsKFN0cmluZyhkLmdldEFkVW5pdFBhdGgoKSksU3RyaW5nKEIoZCwyKSkpLG51bGwsZSl9fWVsc2UgZD9iLmVycm9yKEVsKFN0cmluZyhkKSkpOmIuZXJyb3IoRGwoU3RyaW5nKGEpKSl9KTt2YXIgS2E9dmQoXCJodHRwczovL3RwYy5nb29nbGVzeW5kaWNhdGlvbi5jb20vc29kYXIvJXtiYXNlbmFtZX0uanNcIik7dmFyIEZhPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ZC5yZWFkeVN0YXRlPT09ZC5ET05FJiYoMjAwPD1kLnN0YXR1cyYmMzAwPmQuc3RhdHVzP2IoSlNPTi5wYXJzZShkLnJlc3BvbnNlVGV4dCkpOmMoKSl9O2Qub3BlbihcIkdFVFwiLGEsITApO2Quc2VuZCgpfSl9O3ZhciBlcT1mdW5jdGlvbihhKXt0aGlzLmo9YS5qO3RoaXMubD1hLmw7dGhpcy52PWEudjt0aGlzLm9iPWEub2I7dGhpcy5MPWEuTDt0aGlzLmViPWEuZWI7dGhpcy5BYj1hLkFifSxmcT1mdW5jdGlvbihhLGIpe3RoaXMuaj1hO3RoaXMubD1iO3RoaXMudj1cInB0XCI7dGhpcy5MPXdpbmRvdzt0aGlzLmViPVwiZW52XCI7dGhpcy5BYj1cIm5cIn07dmFyIGhxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxncSxudWxsKX07SyhocSxNKTt2YXIgaXE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soaXEsTSk7dmFyIGpxPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGpxLE0pO3ZhciBrcT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhrcSxNKTt2YXIgZ3E9WzEsMl0sbHE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1CKGEsMSk7bnVsbCE9YyYmYmYoYiwxLGMpO2M9TyhhLGpxLDIpO251bGwhPWMmJmVmKGIsMixjKTtjPU8oYSxqcSwzKTtudWxsIT1jJiZlZihiLDMsYyk7Yz1CKGEsNCk7bnVsbCE9YyYmY2YoYiw0LGMpO2M9QihhLDUpO251bGwhPWMmJmNmKGIsNSxjKX0sZGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1CKGEsMSk7bnVsbCE9YyYmYmYoYiwxLGMpO2M9QihhLDIpO251bGwhPWMmJmJmKGIsMixjKTtjPUIoYSwzKTtudWxsIT1jJiZiZihiLDMsYyl9O2lxLnByb3RvdHlwZS4kYj1mdW5jdGlvbihhKXtEKHRoaXMsNCxhKX07dmFyIG1xPWZ1bmN0aW9uKGEsYil7dmFyIGM9QihhLDEpO251bGwhPWMmJmNmKGIsMSxjKTtjPUIoYSwyKTtudWxsIT1jJiZjZihiLDIsYyk7Yz1CKGEsMyk7bnVsbCE9YyYmYWYoYiwzLGMpO2M9QihhLDQpO251bGwhPWMmJiRlKGIsNCxjKTtjPUIoYSw1KTtudWxsIT1jJiYkZShiLDUsYyk7Yz1CKGEsNik7bnVsbCE9YyYmJGUoYiw2LGMpfTtrcS5wcm90b3R5cGUuJGI9ZnVuY3Rpb24oYSl7RCh0aGlzLDIsYSl9O3ZhciBucT1mdW5jdGlvbihhKXt2YXIgYj0obmV3IFBmKS5nZXRUaW1lKCk7cmV0dXJuIEQoYSwzLGIpfTt2YXIgb3E9bmF2aWdhdG9yLHBxPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBvcS5qYXZhRW5hYmxlZCgpfWNhdGNoKGEpe3JldHVybiExfX0scXE9ZnVuY3Rpb24oYSl7dmFyIGI9MSxjO2lmKHZvaWQgMCE9YSYmXCJcIiE9YSlmb3IoYj0wLGM9YS5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YS5jaGFyQ29kZUF0KGMpO2I9KGI8PDYmMjY4NDM1NDU1KStkKyhkPDwxNCk7ZD1iJjI2NjMzODMwNDtiPTAhPWQ/Yl5kPj4yMTpifXJldHVybiBifSxycT1mdW5jdGlvbihhLGIpe2lmKCFhfHxcIm5vbmVcIj09YSlyZXR1cm4gMTthPVN0cmluZyhhKTtcImF1dG9cIj09YSYmKGE9YixcInd3dy5cIj09YS5zdWJzdHJpbmcoMCw0KSYmKGE9YS5zdWJzdHJpbmcoNCxhLmxlbmd0aCkpKTtyZXR1cm4gcXEoYS50b0xvd2VyQ2FzZSgpKX0sc3E9L15cXHMqX2dhPVxccyoxXFwuKFxcZCspW14uXSpcXC4oLio/KVxccyokLyx0cT0vXltePV0rPVxccypHQTFcXC4oXFxkKylbXi5dKlxcLiguKj8pXFxzKiQvLHVxPS9eXFxzKl9nYT1cXHMqKCkoYW1wLVtcXHcuLV17MjIsNjR9KSQvO3ZhciB3cT1mdW5jdGlvbihhKXtrZih0aGlzLGEsdnEsbnVsbCl9O0sod3EsTSk7dmFyIHZxPVsxNV0seHE9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgd3EsYj1fLnkoNzYpO3JldHVybiByZihhLDcsYil9O3ZhciB5cT1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07Syh5cSxNKTt2YXIgenE9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soenEsTSk7QmQodWQodmQoXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9vc2QuanNcIikpKTt2YXIgQXE9ZnVuY3Rpb24oYSxiKXtpZighKHdpbmRvdyYmTWF0aC5yYW5kb20mJm5hdmlnYXRvcikpcmV0dXJuLTE7aWYod2luZG93Ll9fZ29vZ2xlX2FkX3VybHMpe3ZhciBjPXdpbmRvdy5fX2dvb2dsZV9hZF91cmxzO3RyeXtpZihjJiZjLmdldE9zZUlkKCkpcmV0dXJuIGMuZ2V0T3NlSWQoKX1jYXRjaChlKXt9fWlmKCF3aW5kb3cuX19nb29nbGVfYWRfdXJsc19pZCl7Yz13aW5kb3cuZ29vZ2xlX2VuYWJsZV9vc2U7aWYoITA9PT1jKXZhciBkPTI7ZWxzZSExIT09YyYmKGQ9eGcoWzBdLGEpLG51bGw9PWQmJigoZD14ZyhbMl0sYikpfHwoZD0zKSkpO2lmKCFkKXJldHVybiAwO3dpbmRvdy5fX2dvb2dsZV9hZF91cmxzX2lkPWR9cmV0dXJuIHdpbmRvdy5fX2dvb2dsZV9hZF91cmxzX2lkfTt2YXIgQnE9ZnVuY3Rpb24oKXt9O18ucD1CcS5wcm90b3R5cGU7Xy5wLmdldE5ld0Jsb2Nrcz1mdW5jdGlvbigpe307Xy5wLnNldHVwT3NlPWZ1bmN0aW9uKCl7fTtfLnAuZ2V0T3NlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4tMX07Xy5wLmdldENvcnJlbGF0b3I9ZnVuY3Rpb24oKXtyZXR1cm5cIlwifTtfLnAubnVtQmxvY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O18ucC5yZWdpc3RlckFkQmxvY2s9ZnVuY3Rpb24oKXt9O18ucC51bmxvYWRBZEJsb2NrPWZ1bmN0aW9uKCl7fTtfLnAuc2V0TG9hZE9zZEpzT25QdWJXaW5kb3c9ZnVuY3Rpb24oKXt9O3ZhciBDcT1uZXcgVWkoMSxvaSgpKSxEcT1mdW5jdGlvbigpe3ZhciBhPW9pKCk7YSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nJiYhYS5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcmJihDcS5qPSExLENxLmV2ZW50cyE9Q3EubC5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlJiYoVGkoKSYmXy5WYyhDcS5ldmVudHMsVmkpLENxLmV2ZW50cy5sZW5ndGg9MCkpfTsoZnVuY3Rpb24oKXt2YXIgYT1vaSgpO2EmJmEuZG9jdW1lbnQmJihcImNvbXBsZXRlXCI9PWEuZG9jdW1lbnQucmVhZHlTdGF0ZT9EcSgpOkNxLmomJl8udihhLFwibG9hZFwiLGZ1bmN0aW9uKCl7RHEoKX0pKX0pKCk7RGF0ZS5ub3coKTt2YXIgRXE9ZnVuY3Rpb24oYSxiLGMpe2EmJihjP18udihhLFwibG9hZFwiLGIpOl8ucWIoYSxcImxvYWRcIixiKSl9LEZxPWZ1bmN0aW9uKCl7dmFyIGE9KG9pKCl8fF8ucikuZ29vZ2xlX29zZF9hbWNiO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2E6bnVsbH0sR3E9QmQodWQodmQoXCJodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vYWN0aXZldmlldy9qcy9jdXJyZW50L29zZC5qc1wiKSkpLEhxPWZ1bmN0aW9uKGEpe2E9e2NiOnZvaWQgMD09PWE/XCIvcjIwMTAwMTAxXCI6YX07dmFyIGI9eWQoR3EpLnRvU3RyaW5nKCk7Yj1DZC5leGVjKGIpO3ZhciBjPWJbM118fFwiXCI7cmV0dXJuIEJkKGJbMV0rRGQoXCI/XCIsYlsyXXx8XCJcIixhKStEZChcIiNcIixjLHZvaWQgMCkpfTt2YXIgSXE9ZnVuY3Rpb24oYSxiKXt0aGlzLmw9YiYmYi5sP2IubDowO3RoaXMubz1iP2IubzpcIlwiO3RoaXMuaj1iJiZiLmo/Yi5qOltdO3RoaXMudj0hMDtpZihiKWZvcihhPTA7YTx0aGlzLmoubGVuZ3RoOysrYSl0aGlzLmpbYV0ubz0hMH0sS3E9ZnVuY3Rpb24oYSl7dmFyIGI9YS52P29pKCk6Xy5yO2E9SnE7Yj1ifHxfLnI7Yi5nb29nbGVfb3NkX2xvYWRlZD9hPSExOih1ZyhiLmRvY3VtZW50LGEpLGE9Yi5nb29nbGVfb3NkX2xvYWRlZD0hMCk7YSYmcGkoKX07Xy5wPUlxLnByb3RvdHlwZTtfLnAuZ2V0TmV3QmxvY2tzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMuai5sZW5ndGgsZD0wO2Q8YztkKyspe3ZhciBlPXRoaXMualtkXTshZS52JiZlLmomJihlLnY9ITAsYShlLmosZS5BLGUuRyxlLmwsdm9pZCAwLGUubyxlLkMsZS5VLGUuRCkpfWImJigob2koKXx8Xy5yKS5nb29nbGVfb3NkX2FtY2I9YSl9O18ucC5zZXR1cE9zZT1mdW5jdGlvbihhKXtpZih0aGlzLmdldE9zZUlkKCkpcmV0dXJuIHRoaXMuZ2V0T3NlSWQoKTt2YXIgYj1BcShMcSxNcSk7aWYoIWIpcmV0dXJuIDA7dGhpcy5sPWI7dGhpcy5vPVN0cmluZyhhfHwwKTtyZXR1cm4gdGhpcy5nZXRPc2VJZCgpfTtfLnAuZ2V0T3NlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93JiZNYXRoLnJhbmRvbSYmbmF2aWdhdG9yP3RoaXMubDotMX07Xy5wLmdldENvcnJlbGF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vfTtfLnAubnVtQmxvY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuai5sZW5ndGh9O18ucC5yZWdpc3RlckFkQmxvY2s9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Zz12b2lkIDA9PT1nP2Z1bmN0aW9uKCl7fTpnO2M9RnEoKTtlPV8uTmkoKXx8LTE7Zj1fLnIucGFnZVlPZmZzZXQ7MDw9Znx8KGY9LTEpO2MmJmQ/YyhkLGEsYiwhMSx2b2lkIDAsITEsZyxlLGYpOihnPW5ldyBOcShhLGIsZCxnLGUsZiksdGhpcy5qLnB1c2goZyksRXEoZCxnLm0sITApLEpxfHwoXy5UaChfLnIsXCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9nZW5fMjA0P2lkPW9zZCZyPW9tJnJzPVwiK2IrKFwiJnJlcT1cIithKSksSnE9SHEoXCIvcjIwMTAwMTAxXCIpKSxLcSh0aGlzKSl9O18ucC51bmxvYWRBZEJsb2NrPWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/ITE6YztiPXRoaXMudj9vaSgpOndpbmRvdzt2b2lkIDAhPT1iLkdvb2dfT3NkX1VubG9hZEFkQmxvY2smJmIuR29vZ19Pc2RfVW5sb2FkQWRCbG9jayhhKTtjJiYoYz1laCh0aGlzLmosZnVuY3Rpb24oZCl7cmV0dXJuIGQuaj09YX0pKSYmRXEoYSxjLm0sITEpfTtfLnAuc2V0TG9hZE9zZEpzT25QdWJXaW5kb3c9ZnVuY3Rpb24oYSl7dGhpcy52PWF9O3ZhciBPcT1mdW5jdGlvbigpe3ZhciBhPW9pKCksYj1hLl9fZ29vZ2xlX2FkX3VybHM7aWYoIWIpcmV0dXJuIGEuX19nb29nbGVfYWRfdXJscz1uZXcgSXEoYSk7dHJ5e2lmKDA8PWIuZ2V0T3NlSWQoKSlyZXR1cm4gYn1jYXRjaChjKXt9dHJ5e3JldHVybiBhLl9fZ29vZ2xlX2FkX3VybHM9bmV3IElxKGEsYil9Y2F0Y2goYyl7cmV0dXJuIGEuX19nb29nbGVfYWRfdXJscz1uZXcgSXEoYSl9fSxKcT1udWxsLE1xPTAsTHE9MCxOcT1mdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9dGhpcztkPXZvaWQgMD09PWQ/Xy5IYzpkO3RoaXMuQT1hO3RoaXMuRz1iO3RoaXMuaj1jO3RoaXMubz10aGlzLnY9dGhpcy5sPSExO3RoaXMuQz1kO3RoaXMuVT12b2lkIDA9PT1lPy0xOmU7dGhpcy5EPXZvaWQgMD09PWY/LTE6Zjt0aGlzLm09ZnVuY3Rpb24oKXtyZXR1cm4gZy5sPSEwfX07Q2MoXCJHb29nX0FkU2Vuc2VfZ2V0QWRBZGFwdGVySW5zdGFuY2VcIixPcSk7Q2MoXCJHb29nX0FkU2Vuc2VfT3NkQWRhcHRlclwiLElxKTt2YXIgUHE9W1wiYXV0b1wiLFwiaW5oZXJpdFwiLFwiMTAwJVwiXSxRcT1QcS5jb25jYXQoW1wibm9uZVwiXSksUnE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2U9dm9pZCAwPT09ZT8xMDplO2Y9dm9pZCAwPT09Zj8xMDpmO2I9Yi5zdHlsZVNoZWV0cztpZighYilyZXR1cm4hMTt2YXIgZz1hLm1hdGNoZXN8fGEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxhLm1vek1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3Rvcnx8YS5vTWF0Y2hlc1NlbGVjdG9yO2U9LTE9PWU/SW5maW5pdHk6ZTtmPS0xPT1mP0luZmluaXR5OmY7Zm9yKHZhciBoPTA7aDxNYXRoLm1pbihiLmxlbmd0aCxlKTsrK2gpe3ZhciBrPXZvaWQgMDt0cnl7dmFyIGw9YltoXSxtPW51bGw7dHJ5e209bC5jc3NSdWxlc3x8bC5ydWxlc31jYXRjaChIKXtpZigxNT09SC5jb2RlKXRocm93IEguc3R5bGVTaGVldD1sLEg7fWs9bX1jYXRjaChIKXtjb250aW51ZX1pZihrJiYwPGsubGVuZ3RoKWZvcihtPTA7bTxNYXRoLm1pbihrLmxlbmd0aCxmKTsrK20pe3ZhciBuPWtbbV0scTtpZihxPTE9PW4udHlwZSl7cT1uO3ZhciB3PWM7cT1nLmNhbGwoYSxxLnNlbGVjdG9yVGV4dCkmJncocSl9aWYoIXEmJihxPWQmJjQ9PW4udHlwZSkpYTp7cT1hO3c9Yztmb3IodmFyIHU9ZixDPTA7QzxNYXRoLm1pbihuLmNzc1J1bGVzLmxlbmd0aCx1KTtDKyspe3ZhciBRPW4uY3NzUnVsZXNbQ10sTj13O2lmKGcuY2FsbChxLFEuc2VsZWN0b3JUZXh0KSYmTihRKSl7cT0hMDticmVhayBhfX1xPSExfWlmKHEpcmV0dXJuITB9fXJldHVybiExfSxUcT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD8xMDpkO3ZhciBlPXZvaWQgMD09PWU/MTA6ZTtpZighYSlyZXR1cm4hMDt2YXIgZj0hMDtZZyhhLGZ1bmN0aW9uKGcpe3JldHVybiBmPVNxKGcsYiwhMSxkLGUpfSx2b2lkIDA9PT1jPzEwMDpjKTtyZXR1cm4gZn0sU3E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLnN0eWxlO3JldHVybiBmJiZmLmhlaWdodCYmIV8uJGMoUHEsZi5oZWlnaHQpfHxmJiZmLm1heEhlaWdodCYmIV8uJGMoUXEsZi5tYXhIZWlnaHQpfHxScShhLGIuZG9jdW1lbnQsZnVuY3Rpb24oZyl7dmFyIGg9Zy5zdHlsZS5oZWlnaHQ7Zz1nLnN0eWxlW1wibWF4LWhlaWdodFwiXTtyZXR1cm4gaCYmIV8uJGMoUHEsaCl8fGcmJiFfLiRjKFFxLGcpfSxjLGQsZSk/ITE6ITB9O3ZhciBVcT12b2lkIDA7dmFyIFZxPWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT93aW5kb3c6YTtyZXR1cm4gYS5fZ21wdG5sP1wiYWZtYS1ncHQtc2RrLWFcIjphLndlYmtpdCYmYS53ZWJraXQubWVzc2FnZUhhbmRsZXJzJiZhLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuX2dtcHRubD9cImFmbWEtZ3B0LXNkay1pXCI6bnVsbH0sV3E9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/d2luZG93OmI7dmFyIGM9VnEoYik7aWYoIWMpcmV0dXJuIG51bGw7dmFyIGQ9bnVsbDt0cnl7XCJhZm1hLWdwdC1zZGstYVwiPT1jP2Q9Yi5fZ21wdG5sLnBtKFwiR0FNPVwiLGEpfHxcIjVcIjooZD1iLl9fZ21wdG5sX258fFwiNVwiLGIud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5fZ21wdG5sLnBvc3RNZXNzYWdlKFwiR0FNPVwiKSl9Y2F0Y2goZSl7cmV0dXJuXCIzXCJ9cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBkP2Q6XCIzXCJ9O3ZhciBYcT1mdW5jdGlvbigpe3RoaXMubD1bXTt0aGlzLmo9LTF9O1hxLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/ITA6YjswPD1hJiY1Mj5hJiYwPT09YSUxJiZ0aGlzLmxbYV0hPWImJih0aGlzLmxbYV09Yix0aGlzLmo9LTEpfTtYcS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5sW2FdfTt2YXIgWXE9ZnVuY3Rpb24oYSl7LTE9PWEuaiYmKGEuaj1XYyhhLmwsZnVuY3Rpb24oYixjLGQpe3JldHVybiBjP2IrTWF0aC5wb3coMixkKTpifSkpO3JldHVybiBhLmp9O3ZhciBacT0wLCRxPUJkKHVkKHZkKFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZXhwYW5zaW9uX2VtYmVkLmpzXCIpKSk7dmFyIGFyPWZ1bmN0aW9uKCl7dGhpcy5qPWZ1bmN0aW9uKCl7fX07SWMoYXIpO3ZhciBicj1mdW5jdGlvbigpe3ZhciBhPXFwLkIoKTthci5CKCkuaihhKX07dmFyIGNyPWZ1bmN0aW9uKCl7dmFyIGE9dm9pZCAwLGI9MjtpZih2b2lkIDA9PT1hKXt2YXIgYz12b2lkIDA9PT1jP18ucjpjO2E9Yy5nZ2VhY3x8KGMuZ2dlYWM9e30pfWI9dm9pZCAwPT09Yj8wOmI7Yz1hO3ZhciBkPWI7ZD12b2lkIDA9PT1kPzA6ZDtsaihrai5CKCksYyxkKTtjPWE7Yj12b2lkIDA9PT1iPzA6Yjtwaihvai5CKCksYyxiKTthci5CKCkuaj1qaihpaixhKTtvai5CKCkuaigpfTt2YXIgZHI9ZnVuY3Rpb24oKXt0aGlzLmo9d2luZG93O3RoaXMubD0wfSxlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e3djOkIoYiwyKS1hLmouRGF0ZS5ub3coKS8xRTMscGF0aDpCKGIsMyksZG9tYWluOkIoYiw0KSx2ZDohMX0sZT1CKGIsMSksZj1hLmouZG9jdW1lbnQ7Zj12b2lkIDA9PT1mP2RvY3VtZW50OmY7eChjLDUpJiYobmV3IFBhKGYpKS5zZXQoXCJfX2dhZHNcIixlLGQpO3goYyw1KSYmLjAxPmEuai5NYXRoLnJhbmRvbSgpJiYoYz1RYShcIl9fZ2Fkc1wiLGMsYS5qLmRvY3VtZW50KSxWaCh7ZG9tYWluOkIoYiw0KSxob3N0OmEuai5sb2NhdGlvbi5ob3N0LHN1Y2Nlc3M6Yz09PUIoYiwxKT9cIjFcIjpcIjBcIn0sXCJnZnBfY3dfc3RhdHVzXCIpKX07dmFyIGZyPXZhKGZ1bmN0aW9uKCl7cmV0dXJuIShDZXx8RGV8fEJlKSYmKFBlfHx4ZXx8d2UpfSksZ3I9ZnVuY3Rpb24oYSxiLGMsZCxlKXtkPXZvaWQgMD09PWQ/XCJcIjpkO3ZhciBmPWEuY3JlYXRlRWxlbWVudChcImxpbmtcIik7dHJ5e2YucmVsPWMsZi5ocmVmPS0xIT1jLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcInN0eWxlc2hlZXRcIik/eWQoYikudG9TdHJpbmcoKTpiIGluc3RhbmNlb2YgeGQ/eWQoYikudG9TdHJpbmcoKTpiIGluc3RhbmNlb2YgXy5SZD9fLlNkKGIpOl8uU2QoXy5VZChiKSl9Y2F0Y2goZyl7cmV0dXJuIG51bGx9ZCYmXCJwcmVsb2FkXCI9PWMmJihmLmFzPWQpO2UmJmYuc2V0QXR0cmlidXRlKFwibm9uY2VcIixlKTthPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO2lmKCFhKXJldHVybiBudWxsO3RyeXthLmFwcGVuZENoaWxkKGYpfWNhdGNoKGcpe31yZXR1cm4gZn07dmFyIGhyPS9eXFwuZ29vZ2xlXFwuKGNvbT9cXC4pP1thLXpdezIsM30kLyxpcj0vXFwuKGNufGNvbVxcLmJpfGRvfHNsfGJhfGJ5fG1hfGFtKSQvLGpyPV8ucixscj1mdW5jdGlvbihhKXthPVwiaHR0cHM6Ly9hZHNlcnZpY2VcIisoYStcIi9hZHNpZC9pbnRlZ3JhdG9yLmpzXCIpO3ZhciBiPVtcImRvbWFpbj1cIitlbmNvZGVVUklDb21wb25lbnQoXy5yLmxvY2F0aW9uLmhvc3RuYW1lKV07a3JbM10+PVRjKCkmJmIucHVzaChcImFkc2lkPVwiK2VuY29kZVVSSUNvbXBvbmVudChrclsxXSkpO3JldHVybiBhK1wiP1wiK2Iuam9pbihcIiZcIil9LGtyLG1yLG5yPWZ1bmN0aW9uKCl7anI9Xy5yO2tyPWpyLmdvb2dsZVRva2VuPWpyLmdvb2dsZVRva2VufHx7fTt2YXIgYT1UYygpO2tyWzFdJiZrclszXT5hJiYwPGtyWzJdfHwoa3JbMV09XCJcIixrclsyXT0tMSxrclszXT0tMSxrcls0XT1cIlwiLGtyWzZdPVwiXCIpO21yPWpyLmdvb2dsZUlNU3RhdGU9anIuZ29vZ2xlSU1TdGF0ZXx8e307YT1tclsxXTtoci50ZXN0KGEpJiYhaXIudGVzdChhKXx8KG1yWzFdPVwiLmdvb2dsZS5jb21cIik7QXJyYXkuaXNBcnJheShtcls1XSl8fChtcls1XT1bXSk7XCJib29sZWFuXCIhPT10eXBlb2YgbXJbNl0mJihtcls2XT0hMSk7QXJyYXkuaXNBcnJheShtcls3XSl8fChtcls3XT1bXSk7XCJudW1iZXJcIiE9PXR5cGVvZiBtcls4XSYmKG1yWzhdPTApfSxvcj17TGI6ZnVuY3Rpb24oKXtyZXR1cm4gMDxtcls4XX0sb2Q6ZnVuY3Rpb24oKXttcls4XSsrfSxwZDpmdW5jdGlvbigpezA8bXJbOF0mJm1yWzhdLS19LHFkOmZ1bmN0aW9uKCl7bXJbOF09MH0sQWU6ZnVuY3Rpb24oKXtyZXR1cm4hMX0scGM6ZnVuY3Rpb24oKXtyZXR1cm4gbXJbNV19LGtjOmZ1bmN0aW9uKGEpe3RyeXthKCl9Y2F0Y2goYil7Xy5yLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBiO30sMCl9fSxCYzpmdW5jdGlvbigpe2lmKCFvci5MYigpKXt2YXIgYT1fLnIuZG9jdW1lbnQsYj1mdW5jdGlvbihlKXtlPWxyKGUpO2E6e3RyeXt2YXIgZj1GYygpO2JyZWFrIGF9Y2F0Y2goZyl7fWY9dm9pZCAwfWdyKGEsZSxcInByZWxvYWRcIixcInNjcmlwdFwiLGYpO2Y9YS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2YudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2Yub25lcnJvcj1mdW5jdGlvbigpe3JldHVybiBfLnIucHJvY2Vzc0dvb2dsZVRva2VuKHt9LDIpfTtlPWxnKGUpO0FhKGYsZSk7dHJ5eyhhLmhlYWR8fGEuYm9keXx8YS5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZENoaWxkKGYpLG9yLm9kKCl9Y2F0Y2goZyl7fX0sYz1tclsxXTtiKGMpO1wiLmdvb2dsZS5jb21cIiE9YyYmYihcIi5nb29nbGUuY29tXCIpO2I9e307dmFyIGQ9KGIubmV3VG9rZW49XCJGQlRcIixiKTtfLnIuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBfLnIucHJvY2Vzc0dvb2dsZVRva2VuKGQsMSl9LDFFMyl9fX0scHI9ZnVuY3Rpb24oYSl7bnIoKTt2YXIgYj1qci5nb29nbGVUb2tlbls1XXx8MDthJiYoMCE9Ynx8a3JbM10+PVRjKCk/b3Iua2MoYSk6KG9yLnBjKCkucHVzaChhKSxvci5CYygpKSk7a3JbM10+PVRjKCkmJmtyWzJdPj1UYygpfHxvci5CYygpfSxxcj1mdW5jdGlvbihhKXtfLnIucHJvY2Vzc0dvb2dsZVRva2VuPV8uci5wcm9jZXNzR29vZ2xlVG9rZW58fGZ1bmN0aW9uKGIsYyl7dmFyIGQ9YjtkPXZvaWQgMD09PWQ/e306ZDtjPXZvaWQgMD09PWM/MDpjO2I9ZC5uZXdUb2tlbnx8XCJcIjt2YXIgZT1cIk5UXCI9PWIsZj1wYXJzZUludChkLmZyZXNoTGlmZXRpbWVTZWNzfHxcIlwiLDEwKSxnPXBhcnNlSW50KGQudmFsaWRMaWZldGltZVNlY3N8fFwiXCIsMTApLGg9ZFtcIjFwX2phclwiXXx8XCJcIjtkPWQucHVjcmR8fFwiXCI7bnIoKTsxPT1jP29yLnFkKCk6b3IucGQoKTt2YXIgaz1qci5nb29nbGVUb2tlbj1qci5nb29nbGVUb2tlbnx8e30sbD0wPT1jJiZiJiZcInN0cmluZ1wiPT09dHlwZW9mIGImJiFlJiZcIm51bWJlclwiPT09dHlwZW9mIGYmJjA8ZiYmXCJudW1iZXJcIj09PXR5cGVvZiBnJiYwPGcmJlwic3RyaW5nXCI9PT10eXBlb2YgaDtlPWUmJiFvci5MYigpJiYoIShrclszXT49VGMoKSl8fFwiTlRcIj09a3JbMV0pO3ZhciBtPSEoa3JbM10+PVRjKCkpJiYwIT1jO2lmKGx8fGV8fG0pZT1UYygpLGY9ZSsxRTMqZixnPWUrMUUzKmcsMUUtNT5NYXRoLnJhbmRvbSgpJiZfLlRoKF8ucixcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9aW1lcnImZXJyPVwiK2MpLGtbNV09YyxrWzFdPWIsa1syXT1mLGtbM109ZyxrWzRdPWgsa1s2XT1kLG5yKCk7aWYobHx8IW9yLkxiKCkpe2M9b3IucGMoKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKW9yLmtjKGNbYl0pO2MubGVuZ3RoPTB9fTtwcihhKX07dmFyIE1iPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iP3t9OmI7dGhpcy5yb290PWIucm9vdD9iLnJvb3Q6bnVsbDt0aGlzLkM9Yi5yb290TWFyZ2luP1NhKGIucm9vdE1hcmdpbik6W3t2YWx1ZTowLHR5cGU6XCJweFwifSx7dmFsdWU6MCx0eXBlOlwicHhcIn0se3ZhbHVlOjAsdHlwZTpcInB4XCJ9LHt2YWx1ZTowLHR5cGU6XCJweFwifV07dGhpcy5yb290TWFyZ2luPV8uUmEodGhpcy5DLGZ1bmN0aW9uKGMpe3JldHVyblwiXCIrYy52YWx1ZStjLnR5cGV9KS5qb2luKFwiIFwiKTt0aGlzLlU9V2EoYi50aHJlc2hvbGQpO3RoaXMuRD1hO3RoaXMuaj1bXTt0aGlzLm89W107dGhpcy5tPSExO3RoaXMubD1udWxsO3RoaXMudj1rZCh0aGlzLkEsMTAwLHRoaXMpfSxycj1mdW5jdGlvbihhKXtpZihhLnJvb3QpdmFyIGI9WGEoYS5yb290KTtlbHNle3ZhciBjPV8uJGYod2luZG93KTtiPXt0b3A6MCxyaWdodDpjLndpZHRoLGJvdHRvbTpjLmhlaWdodCxsZWZ0OjAsd2lkdGg6Yy53aWR0aCxoZWlnaHQ6Yy5oZWlnaHR9fWE9Xy5SYShhLkMsZnVuY3Rpb24oZCxlKXtyZXR1cm5cInB4XCI9PWQudHlwZT9kLnZhbHVlOmQudmFsdWUqKGUlMj9iLndpZHRoOmIuaGVpZ2h0KS8xMDB9KTtyZXR1cm57dG9wOmIudG9wLWFbMF0scmlnaHQ6Yi5yaWdodCthWzFdLGJvdHRvbTpiLmJvdHRvbSthWzJdLGxlZnQ6Yi5sZWZ0LWFbM10sd2lkdGg6Yi53aWR0aCthWzFdK2FbM10saGVpZ2h0OmIuaGVpZ2h0K2FbMF0rYVsyXX19LHNyPWZ1bmN0aW9uKGEsYixjKXtpZighYnx8Yi5pc0ludGVyc2VjdGluZyE9Yy5pc0ludGVyc2VjdGluZylyZXR1cm4hMDt2YXIgZD1iLmludGVyc2VjdGlvblJhdGlvLGU9Yy5pbnRlcnNlY3Rpb25SYXRpbztyZXR1cm4gZD09ZT8hMTpfLlhjKGEuVSxmdW5jdGlvbihmKXtyZXR1cm4gZjxkIT1mPGV9KX07TWIucHJvdG90eXBlLkE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9cnIodGhpcyk7Xy5WYyh0aGlzLmosZnVuY3Rpb24oYyl7dmFyIGQ9Yy50YXJnZXQsZT1YYShkKSxmPWUud2lkdGgqZS5oZWlnaHQ7dmFyIGc9TWF0aC5tYXgoYi50b3AsZS50b3ApO3ZhciBoPU1hdGgubWluKGIucmlnaHQsZS5yaWdodCksaz1NYXRoLm1pbihiLmJvdHRvbSxlLmJvdHRvbSksbD1NYXRoLm1heChiLmxlZnQsZS5sZWZ0KSxtPWgtbCxuPWstZztnPTA8PW0mJjA8PW4/e3RvcDpnLHJpZ2h0OmgsYm90dG9tOmssbGVmdDpsLHdpZHRoOm0saGVpZ2h0Om59Om51bGw7aD0hIWc7az1nP2cud2lkdGgqZy5oZWlnaHQ6MDtmPWY/ay9mOmg/MTowO2s9KGs9d2luZG93LnBlcmZvcm1hbmNlKSYmay5ub3c/ay5ub3coKTowO2Q9e2JvdW5kaW5nQ2xpZW50UmVjdDplLGludGVyc2VjdGlvblJhdGlvOmYsaW50ZXJzZWN0aW9uUmVjdDpnfHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH0saXNJbnRlcnNlY3Rpbmc6aCxyb290Qm91bmRzOmIsdGFyZ2V0OmQsdGltZTprfTtzcihhLGMuamEsZCkmJmEuby5wdXNoKGQpO2MuamE9ZH0pO3RoaXMuby5sZW5ndGgmJnRoaXMuRCh0cih0aGlzKSx0aGlzKX07TWIucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oYSl7Xy5YYyh0aGlzLmosZnVuY3Rpb24oYil7cmV0dXJuIGIudGFyZ2V0PT1hfSl8fCh0aGlzLmoucHVzaCh7dGFyZ2V0OmEsamE6bnVsbH0pLHRoaXMuQSgpLHRoaXMubXx8KHRoaXMubT0hMCxfLnYoXy5yLFwic2Nyb2xsXCIsdGhpcy52KSxfLnYoXy5yLFwicmVzaXplXCIsdGhpcy52KSxfLnIuTXV0YXRpb25PYnNlcnZlciYmIXRoaXMubCYmKHRoaXMubD1uZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLnYpLHRoaXMubC5vYnNlcnZlKF8uci5kb2N1bWVudCx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSkpKSl9O01iLnByb3RvdHlwZS51bm9ic2VydmU9ZnVuY3Rpb24oYSl7dGhpcy5qPV8uVGEodGhpcy5qLGZ1bmN0aW9uKGIpe3JldHVybiBiLnRhcmdldCE9YX0pOzA9PXRoaXMuai5sZW5ndGgmJnRoaXMuZGlzY29ubmVjdCgpfTtNYi5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMubT0hMTt0aGlzLmoubGVuZ3RoPTA7Xy5xYihfLnIsXCJzY3JvbGxcIix0aGlzLnYpO18ucWIoXy5yLFwicmVzaXplXCIsdGhpcy52KTt0aGlzLmwmJih0aGlzLmwuZGlzY29ubmVjdCgpLHRoaXMubD1udWxsKX07dmFyIHRyPWZ1bmN0aW9uKGEpe3ZhciBiPV8uRmIoYS5vKS5jb25jYXQoKTthLm8ubGVuZ3RoPTA7cmV0dXJuIGJ9O18udXI9ZnVuY3Rpb24oKXt2YXIgYT1fLkRqKDM4KTt0aGlzLmo9dm9pZCAwPT09YT8uMDE6YTt0aGlzLnY9dGhpcy5sfTtfLnVyLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yz12b2lkIDA9PT1jP3RoaXMuajpjO2lmKE1hdGgucmFuZG9tKCk+YylyZXR1cm4hMTtiLmVycm9yJiZiLm1ldGEmJmIuaWR8fChiPW5ldyBGaShiLHtjb250ZXh0OmEsaWQ6dm9pZCAwPT09ZT9cImdwdF9leGNlcHRpb25cIjplfSkpO2QmJihiLm1ldGE9e30sZCYmZChiLm1ldGEpKTtfLnIuZ29vZ2xlX2pzX2Vycm9ycz1fLnIuZ29vZ2xlX2pzX2Vycm9yc3x8W107Xy5yLmdvb2dsZV9qc19lcnJvcnMucHVzaChiKTtfLnIuZXJyb3JfcmVwX2xvYWRlZHx8KHVnKF8uci5kb2N1bWVudCxsZyhfLnIubG9jYXRpb24ucHJvdG9jb2wrXCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9lcnJfcmVwLmpzXCIpKSxfLnIuZXJyb3JfcmVwX2xvYWRlZD0hMCk7cmV0dXJuITF9O3ZhciB2cj1mdW5jdGlvbihhLGIsYyxkLGUsZil7Xy5QLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5zdGF0dXM9MTt0aGlzLmw9Yjt0aGlzLkE9Yzt0aGlzLks9ZDt0aGlzLm5iPSEhZTt0aGlzLm89TWF0aC5yYW5kb20oKTt0aGlzLkM9e307dGhpcy5qPW51bGw7dGhpcy5EPSgwLF8uUmMpKHRoaXMuSSx0aGlzKTt0aGlzLkc9Zn07Xy5KKHZyLF8uUCk7dnIucHJvdG90eXBlLkk9ZnVuY3Rpb24oYSl7aWYoYS5vcmlnaW49PT10aGlzLkEmJih0aGlzLm5ifHxhLnNvdXJjZT09dGhpcy5sKSl7dmFyIGI9bnVsbDt0cnl7Yj1KU09OLnBhcnNlKGEuZGF0YSl9Y2F0Y2goYyl7fWlmKF8uTWMoYikmJihhPWIuaSxiLmM9PT10aGlzLm0mJmEhPXRoaXMubykpe2lmKDIhPT10aGlzLnN0YXR1cyl0cnl7dGhpcy5zdGF0dXM9Mix3cih0aGlzKSx0aGlzLmomJih0aGlzLmooKSx0aGlzLmo9bnVsbCl9Y2F0Y2goYyl7fWE9Yi5zO2I9Yi5wO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSYmKFwic3RyaW5nXCI9PT10eXBlb2YgYnx8Xy5NYyhiKSkmJnRoaXMuQy5oYXNPd25Qcm9wZXJ0eShhKSl0aGlzLkNbYV0oYil9fX07dmFyIHdyPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2IuYz1hLm07Yi5pPWEubzthLkcmJihiLmU9YS5HKTthLmwucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoYiksYS5BKX07dnIucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtpZigxPT09dGhpcy5zdGF0dXMpe3RyeXt0aGlzLmwucG9zdE1lc3NhZ2UmJndyKHRoaXMpfWNhdGNoKGEpe313aW5kb3cuc2V0VGltZW91dCgoMCxfLlJjKSh0aGlzLkgsdGhpcyksNTApfX07dnIucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24oYSl7YSYmKHRoaXMuaj1hKTtfLnYod2luZG93LFwibWVzc2FnZVwiLHRoaXMuRCk7dGhpcy5LJiZ0aGlzLkgoKX07dmFyIHhyPWZ1bmN0aW9uKGEsYixjKXthLkNbYl09Y30seXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2QuYz1hLm07ZC5pPWEubztkLnM9YjtkLnA9Yzt0cnl7YS5sLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGQpLGEuQSl9Y2F0Y2goZSl7fX07dnIucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz0zO18ucWIod2luZG93LFwibWVzc2FnZVwiLHRoaXMuRCk7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyl9O3ZhciB6cj1mdW5jdGlvbigpe3RoaXMuaj1bXTt0aGlzLmw9W107dGhpcy52PVtdfSxBcj1mdW5jdGlvbihhLGIpe2EubC5wdXNoKGIpfTt2YXIgQnI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuaj1uZXcgdC5Qcm9taXNlKGZ1bmN0aW9uKGIsYyl7YS5yZXNvbHZlPWI7YS5yZWplY3Q9Y30pfTt2YXIgQ3I9ZnVuY3Rpb24oYSl7YT1FcnJvci5jYWxsKHRoaXMsYSk7dGhpcy5tZXNzYWdlPWEubWVzc2FnZTtcInN0YWNrXCJpbiBhJiYodGhpcy5zdGFjaz1hLnN0YWNrKTtfLkEoT2JqZWN0LFwic2V0UHJvdG90eXBlT2ZcIikuY2FsbChPYmplY3QsdGhpcyxDci5wcm90b3R5cGUpO3RoaXMubmFtZT1cIklucHV0RXJyb3JcIn07Xy5KKENyLEVycm9yKTt2YXIgRHI9ZnVuY3Rpb24oKXt0aGlzLmw9bmV3IEJyfSxFcj1mdW5jdGlvbigpe0RyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEVyLERyKTt2YXIgVT1mdW5jdGlvbihhLGIpe2Eudnx8KGEuaj1iLGEubC5yZXNvbHZlKGIpKX0sRnI9ZnVuY3Rpb24oYSl7YS52fHwoYS5qPW51bGwsYS5sLnJlc29sdmUobnVsbCkpfTtjYy5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhFci5wcm90b3R5cGUse206e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmwuan19LHY6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5vfHx2b2lkIDAhPT10aGlzLmp9fX0pO3ZhciBHcj1mdW5jdGlvbihhKXt0aGlzLmw9bmV3IEJyO3RoaXMudj1hfTtfLkooR3IsRHIpO3ZhciBIcj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YS52Lmp9O2NjLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEdyLnByb3RvdHlwZSx7dmFsdWU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnYuan19LGVycm9yOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52Lm99fX0pO3ZhciBJcj1mdW5jdGlvbigpe0dyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKElyLEdyKTtjYy5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhJci5wcm90b3R5cGUse3ZhbHVlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52Lmp9fX0pO3ZhciBKcj1mdW5jdGlvbigpe0VyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKEpyLEVyKTtKci5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7RnIodGhpcyl9O3ZhciBLcj1mdW5jdGlvbigpe18uUC5jYWxsKHRoaXMpO3ZhciBhPXRoaXM7dGhpcy5vPW5ldyB6cjt0aGlzLm1hPSExO18uUih0aGlzLGZ1bmN0aW9uKCl7dmFyIGI9YS5vO2Iuai5sZW5ndGg9MDtiLnYubGVuZ3RoPTA7Yi5sLmxlbmd0aD0wfSl9O18uSihLcixfLlApO0tyLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3JldHVybiBDYSh0aGlzLGZ1bmN0aW9uIGIoKXt2YXIgYz10aGlzLGQsZTtyZXR1cm4gRGEoYixmdW5jdGlvbihmKXtzd2l0Y2goZi5qKXtjYXNlIDE6aWYoYy5tYSlyZXR1cm4gZi5yZXR1cm4oKTtjLm1hPSEwO2Q9Yy5vLmwubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLm19KTtmLkE9MjtyZXR1cm4gRWEoZix0LlByb21pc2UuYWxsKGQpLDQpO2Nhc2UgNDppZihjLmxhKXtmLmo9NTticmVha31McihjKTtyZXR1cm4gRWEoZixjLmooKSw1KTtjYXNlIDU6R2EoZiwwKTticmVhaztjYXNlIDI6ZT1IYShmKTtpZihjLmxhKXJldHVybiBmLnJldHVybigpO2UgaW5zdGFuY2VvZiBDcnx8KE1yKGMsZSksYy5vLmoubGVuZ3RoJiZOcihjLG5ldyBDcihlLm1lc3NhZ2UpKSk7Zi5qPTB9fSl9KX07S3IucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgRXI7dGhpcy5vLmoucHVzaChhKTtyZXR1cm4gYX07dmFyIE9yPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBKcjthLm8uai5wdXNoKGIpO3JldHVybiBifSxWPWZ1bmN0aW9uKGEsYil7QXIoYS5vLGIpO2I9bmV3IElyKGIpO2Euby52LnB1c2goYik7cmV0dXJuIGJ9LFc9ZnVuY3Rpb24oYSxiKXtBcihhLm8sYik7cmV0dXJuIG5ldyBHcihiKX0sTHI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1fLkYoYS5vLnYpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXtpZighSHIoZC52YWx1ZSkpdGhyb3cgRXJyb3IoXCJtaXNzaW5nIGlucHV0OiBcIithLmlkKCkrXCIvXCIrYik7KytifX0sTnI9ZnVuY3Rpb24oYSxiKXthPV8uRihhLm8uaik7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSlpZihjPWMudmFsdWUsIWMudil7dmFyIGQ9YjtjLm89ZDtjLmwucmVqZWN0KGQpfX07dmFyIHdiPWZ1bmN0aW9uKCl7Xy5QLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmo9W119O18uSih3YixfLlApO3ZhciB4Yj1mdW5jdGlvbihhLGIpe2I9Xy5GKGIpO2Zvcih2YXIgYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLF8ud2goYSxjKSxhLmoucHVzaChjKX0sWD1mdW5jdGlvbihhLGIpe3hiKGEsW2JdKX0seWI9ZnVuY3Rpb24oYSl7aWYoYS5qLmxlbmd0aCl7YT1fLkYoYS5qKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKWIudmFsdWUuc3RhcnQoKX19O3diLnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dGhpcy5qLmxlbmd0aD0wfTt2YXIgUHI9ZnVuY3Rpb24oKXt0aGlzLmo9W119LFJyPWZ1bmN0aW9uKGEsYixjLGQsZSl7YS5qLnB1c2gobmV3IFFyKGIsYyxkLGUpKX0sU3I9ZnVuY3Rpb24oYSxiLGMsZCl7UnIoYSxiLGMsZCtcInB4XCIsdm9pZCAwKX0sVHI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEuai5sZW5ndGgtMTswPD1iO2ItLSl7dmFyIGM9YS5qW2JdO2MubD8oYy52LnN0eWxlLnJlbW92ZVByb3BlcnR5KGMuaiksYy52LnN0eWxlLnNldFByb3BlcnR5KGMuaixTdHJpbmcoYy5vKSxjLm0pKTpjLnYuc3R5bGVbYy5qXT1jLm99YS5qLmxlbmd0aD0wfSxRcj1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLnY9YTt0aGlzLmo9KHRoaXMubD0hKHZvaWQgMD09PWR8fCFhLnN0eWxlfHwhYS5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KSk/U3RyaW5nKGIpLnJlcGxhY2UoLyhbQS1aXSkvZyxcIi0kMVwiKS50b0xvd2VyQ2FzZSgpOmI7dGhpcy5vPXRoaXMubD9hLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodGhpcy5qKTphLnN0eWxlW3RoaXMual07dGhpcy5tPXRoaXMubD9hLnN0eWxlLmdldFByb3BlcnR5UHJpb3JpdHkodGhpcy5qKTp2b2lkIDA7dGhpcy5sPyhhLnN0eWxlLnJlbW92ZVByb3BlcnR5KHRoaXMuaiksYS5zdHlsZS5zZXRQcm9wZXJ0eSh0aGlzLmosU3RyaW5nKGMpLGQpKTphLnN0eWxlW3RoaXMual09U3RyaW5nKGMpfTt2YXIgVXIsVnI7VXI9e292ZXJmbG93OlwiaGlkZGVuXCIscG9zaXRpb246XCJmaXhlZFwifTtfLldyPWZ1bmN0aW9uKGEsYil7aWYoIWEuYm9keSlyZXR1cm4gbnVsbDt2YXIgYz1uZXcgVnI7Yy5hcHBseShhLGIpO3JldHVybiBmdW5jdGlvbigpe18uY2koYS5ib2R5LHtmaWx0ZXI6Yy5qLHdlYmtpdEZpbHRlcjpjLmosb3ZlcmZsb3c6Yy52LHBvc2l0aW9uOmMubyx0b3A6Yy5tfSk7Yi5zY3JvbGxUbygwLGMubCl9fTtWcj1mdW5jdGlvbigpe3RoaXMuaj10aGlzLm09dGhpcy5vPXRoaXMudj1udWxsO3RoaXMubD0wfTtWci5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oYSxiKXt0aGlzLnY9YS5ib2R5LnN0eWxlLm92ZXJmbG93O3RoaXMubz1hLmJvZHkuc3R5bGUucG9zaXRpb247dGhpcy5tPWEuYm9keS5zdHlsZS50b3A7dGhpcy5qPWEuYm9keS5zdHlsZS5maWx0ZXI/YS5ib2R5LnN0eWxlLmZpbHRlcjphLmJvZHkuc3R5bGUud2Via2l0RmlsdGVyO3RoaXMubD1fLkluKGIpO18uY2koYS5ib2R5LFwidG9wXCIsLXRoaXMubCtcInB4XCIpO18uY2koYS5ib2R5LFVyKX07Xy5Ycj1mdW5jdGlvbigpe3RoaXMuaj1udWxsfTtJYyhfLlhyKTt2YXIgWXI9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/NTAwOmI7Xy5QLmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5qPW51bGw7dGhpcy5tPXt9O3RoaXMuQT0wO3RoaXMuQz1iO3RoaXMubz1udWxsfTtfLkooWXIsXy5QKTtZci5wcm90b3R5cGUudj1mdW5jdGlvbigpe3RoaXMubT17fTt0aGlzLm8mJihfLnFiKHRoaXMubCxcIm1lc3NhZ2VcIix0aGlzLm8pLGRlbGV0ZSB0aGlzLm8pO2RlbGV0ZSB0aGlzLm07ZGVsZXRlIHRoaXMubDtkZWxldGUgdGhpcy5qO18uUC5wcm90b3R5cGUudi5jYWxsKHRoaXMpfTt2YXIgJHI9ZnVuY3Rpb24oYSl7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEubC5fX3VzcGFwaXx8bnVsbCE9WnIoYSl9LGJzPWZ1bmN0aW9uKGEsYil7dmFyIGM9e307aWYoJHIoYSkpe3ZhciBkPWpkKGZ1bmN0aW9uKCl7cmV0dXJuIGIoYyl9KTthcyhhLGZ1bmN0aW9uKGUsZil7ZiYmKGM9ZSk7ZCgpfSk7c2V0VGltZW91dChkLGEuQyl9ZWxzZSBiKGMpfSxhcz1mdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmwuX191c3BhcGkpYT1hLmwuX191c3BhcGksYShcImdldFVTUERhdGFcIiwxLGIpO2Vsc2UgaWYoWnIoYSkpe2NzKGEpO3ZhciBjPSsrYS5BO2EubVtjXT1iO2EuaiYmKGI9e30sYS5qLnBvc3RNZXNzYWdlKChiLl9fdXNwYXBpQ2FsbD17Y29tbWFuZDpcImdldFVTUERhdGFcIix2ZXJzaW9uOjEsY2FsbElkOmN9LGIpLFwiKlwiKSl9fSxacj1mdW5jdGlvbihhKXtpZihhLmopcmV0dXJuIGEuajthLmo9UWcoYS5sLFwiX191c3BhcGlMb2NhdG9yXCIpO3JldHVybiBhLmp9LGNzPWZ1bmN0aW9uKGEpe2Eub3x8KGEubz1mdW5jdGlvbihiKXt0cnl7dmFyIGM7XCJzdHJpbmdcIj09PXR5cGVvZiBiLmRhdGE/Yz1KU09OLnBhcnNlKGIuZGF0YSk6Yz1iLmRhdGE7dmFyIGQ9Yy5fX3VzcGFwaVJldHVybjthLm1bZC5jYWxsSWRdKGQucmV0dXJuVmFsdWUsZC5zdWNjZXNzKX1jYXRjaChlKXt9fSxfLnYoYS5sLFwibWVzc2FnZVwiLGEubykpfTt2YXIgZHM9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soZHMsTSk7dmFyIGZzPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxlcyxudWxsKX07SyhmcyxNKTt2YXIgZXM9WzEsMl07dmFyIGdzPWZ1bmN0aW9uKGEpe2tmKHRoaXMsYSxudWxsLG51bGwpfTtLKGdzLE0pO3ZhciBocz1mdW5jdGlvbihhKXtrZih0aGlzLGEsbnVsbCxudWxsKX07SyhocyxNKTt2YXIgaXM9ZnVuY3Rpb24oYSl7Xy5QLmNhbGwodGhpcyk7dGhpcy5sPWE7dGhpcy5vPXRoaXMuaj1udWxsO3RoaXMubT17fTt0aGlzLkE9MDt0aGlzLmp8fCh0aGlzLmwuZ29vZ2xlZmM/dGhpcy5qPXRoaXMubDp0aGlzLmo9UWcodGhpcy5sLFwiZ29vZ2xlZmNQcmVzZW50XCIpKX07Xy5KKGlzLF8uUCk7dmFyIGtzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB0LlByb21pc2UoZnVuY3Rpb24oYyl7aWYoYS5qKWlmKGEuaj09PWEubCl7dmFyIGQ9YS5sLmdvb2dsZWZjfHx7fTtkLl9fZmNpPWQuX19mY2l8fFtdO2QuX19mY2kucHVzaChiLGMpfWVsc2UganMoYSksZD1hLkErKyxhLm1bZF09YyxjPXt9LGEuai5wb3N0TWVzc2FnZSgoYy5fX2ZjaUNhbGw9e2NvbW1hbmQ6YixjYWxsSWQ6ZH0sYyksXCIqXCIpfSl9LGpzPWZ1bmN0aW9uKGEpe2Eub3x8KGEubz1mdW5jdGlvbihiKXt0cnl7dmFyIGM9bmV3IGhzKEpTT04ucGFyc2UoYi5kYXRhLl9fZmNpUmV0dXJuKSk7KDAsYS5tW0IoYywxKV0pKGMpfWNhdGNoKGQpe319LF8udihhLmwsXCJtZXNzYWdlXCIsYS5vKSl9LGxzPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFiKXJldHVybiB0LlByb21pc2UucmVzb2x2ZShudWxsKTt2YXIgZT1PKGIsZHMsMyk7Yj1PKGIsZ3MsMik7cmV0dXJuIGUmJmImJjE9PT1CKGIsMSkmJjI9PT1CKGUsMSk/a3MoYSxcImdldE0yNUNvbnNlbnRcIikudGhlbihmdW5jdGlvbihmKXt2YXIgZz1PKGYsZnMsNCk7aWYoZyl7aWYoZj1kLGMpe3ZhciBoPUIoZywxKTtoJiZfLkEoaCxcImluY2x1ZGVzXCIpLmNhbGwoaCxjKSYmKGY9ITEpOyhnPUIoZywyKSkmJl8uQShnLFwiaW5jbHVkZXNcIikuY2FsbChnLGMpJiYoZj0hMCl9fWVsc2UgZj1udWxsO3JldHVybiBmfSk6dC5Qcm9taXNlLnJlc29sdmUobnVsbCl9O3ZhciBtcz1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwIT09YS50Y1N0cmluZyYmXCJzdHJpbmdcIiE9PXR5cGVvZiBhLnRjU3RyaW5nfHx2b2lkIDAhPT1hLmdkcHJBcHBsaWVzJiZcImJvb2xlYW5cIiE9PXR5cGVvZiBhLmdkcHJBcHBsaWVzfHx2b2lkIDAhPT1hLmxpc3RlbmVySWQmJlwibnVtYmVyXCIhPT10eXBlb2YgYS5saXN0ZW5lcklkfHx2b2lkIDAhPT1hLmFkZHRsQ29uc2VudCYmXCJzdHJpbmdcIiE9PXR5cGVvZiBhLmFkZHRsQ29uc2VudD8yOmEuY21wU3RhdHVzJiZcImVycm9yXCIhPT1hLmNtcFN0YXR1cz8wOjN9LG5zPWZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPzUwMDpiO18uUC5jYWxsKHRoaXMpO3RoaXMubD1hO3RoaXMuaj1udWxsO3RoaXMubT17fTt0aGlzLkE9MDt0aGlzLkM9Yjt0aGlzLm89bnVsbH07Xy5KKG5zLF8uUCk7bnMucHJvdG90eXBlLnY9ZnVuY3Rpb24oKXt0aGlzLm09e307dGhpcy5vJiYoXy5xYih0aGlzLmwsXCJtZXNzYWdlXCIsdGhpcy5vKSxkZWxldGUgdGhpcy5vKTtkZWxldGUgdGhpcy5tO2RlbGV0ZSB0aGlzLmw7ZGVsZXRlIHRoaXMuajtfLlAucHJvdG90eXBlLnYuY2FsbCh0aGlzKX07dmFyIHBzPWZ1bmN0aW9uKGEpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmwuX190Y2ZhcGl8fG51bGwhPW9zKGEpfTtucy5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXtxcyh0aGlzLFwiYWRkRXZlbnRMaXN0ZW5lclwiLGZ1bmN0aW9uKGIsYyl7Yj1jP2I6e307Yi5pbnRlcm5hbEVycm9yU3RhdGU9bXMoYik7MCE9PWIuaW50ZXJuYWxFcnJvclN0YXRlJiYoYi50Y1N0cmluZz1cInRjdW5hdmFpbGFibGVcIik7YShiKX0pfTtucy5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXthJiZhLmxpc3RlbmVySWQmJnFzKHRoaXMsXCJyZW1vdmVFdmVudExpc3RlbmVyXCIsbnVsbCxhLmxpc3RlbmVySWQpfTt2YXIgc3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz17aW50ZXJuYWxFcnJvclN0YXRlOjB9LGQ9amQoZnVuY3Rpb24oKXtyZXR1cm4gYihjKX0pLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2MudGNTdHJpbmc9XCJ0Y3VuYXZhaWxhYmxlXCI7Yy5pbnRlcm5hbEVycm9yU3RhdGU9MTtkKCl9LGEuQyk7cXMoYSxcImFkZEV2ZW50TGlzdGVuZXJcIixmdW5jdGlvbihmLGcpe2UmJihjbGVhclRpbWVvdXQoZSksZT0wKTtnJiYoYz1mKTtjLmludGVybmFsRXJyb3JTdGF0ZT1tcyhjKTswIT1jLmludGVybmFsRXJyb3JTdGF0ZSYmKGMudGNTdHJpbmc9XCJ0Y3VuYXZhaWxhYmxlXCIpO2lmKDAhPWMuaW50ZXJuYWxFcnJvclN0YXRlfHxycyhjKSlxcyhhLFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLG51bGwsYy5saXN0ZW5lcklkKSxkKCl9KX0scXM9ZnVuY3Rpb24oYSxiLGMsZCl7Y3x8KGM9ZnVuY3Rpb24oKXt9KTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5sLl9fdGNmYXBpKWE9YS5sLl9fdGNmYXBpLGEoYiwyLGMsZCk7ZWxzZSBpZihvcyhhKSl7dHMoYSk7dmFyIGU9KythLkE7YS5tW2VdPWM7YS5qJiYoYz17fSxhLmoucG9zdE1lc3NhZ2UoKGMuX190Y2ZhcGlDYWxsPXtjb21tYW5kOmIsdmVyc2lvbjoyLGNhbGxJZDplLHBhcmFtZXRlcjpkfSxjKSxcIipcIikpfWVsc2UgYyh7fSwhMSl9LG9zPWZ1bmN0aW9uKGEpe2lmKGEuailyZXR1cm4gYS5qO2Euaj1RZyhhLmwsXCJfX3RjZmFwaUxvY2F0b3JcIik7cmV0dXJuIGEuan0sdHM9ZnVuY3Rpb24oYSl7YS5vfHwoYS5vPWZ1bmN0aW9uKGIpe3RyeXt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGIuZGF0YT9jPUpTT04ucGFyc2UoYi5kYXRhKTpjPWIuZGF0YTt2YXIgZD1jLl9fdGNmYXBpUmV0dXJuO2EubVtkLmNhbGxJZF0oZC5yZXR1cm5WYWx1ZSxkLnN1Y2Nlc3MpfWNhdGNoKGUpe319LF8udihhLmwsXCJtZXNzYWdlXCIsYS5vKSl9LHJzPWZ1bmN0aW9uKGEpe3JldHVybiExPT09YS5nZHByQXBwbGllc3x8XCJlcnJvclwiPT09YS5jbXBTdGF0dXN8fF8ueSgxOTAyKSYmMCE9PWEuaW50ZXJuYWxFcnJvclN0YXRlfHxcImxvYWRlZFwiPT09YS5jbXBTdGF0dXMmJihcInRjbG9hZGVkXCI9PT1hLmV2ZW50U3RhdHVzfHxcInVzZXJhY3Rpb25jb21wbGV0ZVwiPT09YS5ldmVudFN0YXR1cyk/ITA6ITF9O3ZhciB1cz1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiBhO3ZhciBjPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4tMTxjLmluZGV4T2YoXCI8IWRvY3R5cGVcIil8fC0xPGMuaW5kZXhPZihcIjxodG1sXCIpP2E6XCI8aHRtbD48aGVhZD5cIisodm9pZCAwPT09Yj9cIlwiOmIpK1wiPC9oZWFkPjxib2R5PlwiK2ErXCI8L2JvZHk+PC9odG1sPlwifTt2YXIgdnM9dmQoXCJncHQvcHViYWRzX2ltcGxfXCIpLHdzPXZkKFwiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvXCIpO3ZhciB4cz1mdW5jdGlvbihhLGIsYyxkLGUsZil7dGhpcy52PUVoKGEpO3RoaXMubD1FaChiKTt0aGlzLm89Yzt0aGlzLmo9RWgoZCk7dGhpcy5tPWU7dGhpcy5BPWZ9LHlzPWZ1bmN0aW9uKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeSh7d2luZG93Q29vcmRzX3Q6YS52LnRvcCx3aW5kb3dDb29yZHNfcjphLnYucmlnaHQsd2luZG93Q29vcmRzX2I6YS52LmJvdHRvbSx3aW5kb3dDb29yZHNfbDphLnYubGVmdCxmcmFtZUNvb3Jkc190OmEubC50b3AsZnJhbWVDb29yZHNfcjphLmwucmlnaHQsZnJhbWVDb29yZHNfYjphLmwuYm90dG9tLGZyYW1lQ29vcmRzX2w6YS5sLmxlZnQsc3R5bGVaSW5kZXg6YS5vLGFsbG93ZWRFeHBhbnNpb25fdDphLmoudG9wLGFsbG93ZWRFeHBhbnNpb25fcjphLmoucmlnaHQsYWxsb3dlZEV4cGFuc2lvbl9iOmEuai5ib3R0b20sYWxsb3dlZEV4cGFuc2lvbl9sOmEuai5sZWZ0LHhJblZpZXc6YS5tLHlJblZpZXc6YS5BfSl9LHpzPWZ1bmN0aW9uKGEsYil7dmFyIGM9d2luZG93LGQ9Yy5zY3JlZW5YfHxjLnNjcmVlbkxlZnR8fDAsZT1jLnNjcmVlbll8fGMuc2NyZWVuVG9wfHwwO2M9bmV3IF8uRGgoZSxkKyhjLm91dGVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aHx8MCksZSsoYy5vdXRlckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8MCksZCk7dmFyIGY9aWkoYSk7ZD1fLmxpKF8ubWksYSk7dmFyIGc9bmV3IEZoKGYueCxmLnksZC53aWR0aCxkLmhlaWdodCk7ZD1HaChnKTtlPVN0cmluZyhmaShhLFwiekluZGV4XCIpKTt2YXIgaD1uZXcgXy5EaCgwLEluZmluaXR5LEluZmluaXR5LDApO2Zvcih2YXIgaz1XZihhKSxsPWsuai5ib2R5LG09ay5qLmRvY3VtZW50RWxlbWVudCxuPWFnKGsuaik7YT1oaShhKTspaWYoIShfLnVlJiYwPT1hLmNsaWVudFdpZHRofHx5ZSYmMD09YS5jbGllbnRIZWlnaHQmJmE9PWwpJiZhIT1sJiZhIT1tJiZcInZpc2libGVcIiE9ZmkoYSxcIm92ZXJmbG93XCIpKXt2YXIgcT1paShhKSx3PW5ldyBfLnlhKGEuY2xpZW50TGVmdCxhLmNsaWVudFRvcCk7cS54Kz13Lng7cS55Kz13Lnk7aC50b3A9TWF0aC5tYXgoaC50b3AscS55KTtoLnJpZ2h0PU1hdGgubWluKGgucmlnaHQscS54K2EuY2xpZW50V2lkdGgpO2guYm90dG9tPU1hdGgubWluKGguYm90dG9tLHEueSthLmNsaWVudEhlaWdodCk7aC5sZWZ0PU1hdGgubWF4KGgubGVmdCxxLngpfWE9bi5zY3JvbGxMZWZ0O249bi5zY3JvbGxUb3A7aC5sZWZ0PU1hdGgubWF4KGgubGVmdCxhKTtoLnRvcD1NYXRoLm1heChoLnRvcCxuKTtrPV8uJGYoYmcoay5qKXx8d2luZG93KTtoLnJpZ2h0PU1hdGgubWluKGgucmlnaHQsYStrLndpZHRoKTtoLmJvdHRvbT1NYXRoLm1pbihoLmJvdHRvbSxuK2suaGVpZ2h0KTtoPShoPTA8PWgudG9wJiYwPD1oLmxlZnQmJmguYm90dG9tPmgudG9wJiZoLnJpZ2h0PmgubGVmdD9oOm51bGwpP25ldyBGaChoLmxlZnQsaC50b3AsaC5yaWdodC1oLmxlZnQsaC5ib3R0b20taC50b3ApOm51bGw7Yj8oaz1iLmJvdW5kaW5nQ2xpZW50UmVjdCxiPW5ldyBGaChmLngtay5sZWZ0LGYueS1rLnRvcCxiLnJvb3RCb3VuZHMud2lkdGgsYi5yb290Qm91bmRzLmhlaWdodCkpOmI9aDtrPWg/SGgoZyxoKTpudWxsO2g9Zj0wO2smJiEobmV3IF8uVGYoay53aWR0aCxrLmhlaWdodCkpLmlzRW1wdHkoKSYmKGY9ay53aWR0aC9nLndpZHRoLGg9ay5oZWlnaHQvZy5oZWlnaHQpO2s9bmV3IF8uRGgoMCwwLDAsMCk7aWYoYT1iKShnPUhoKGcsYikpPyhuPUdoKGIpLGw9R2goZyksYT1sLnJpZ2h0IT1uLmxlZnQmJm4ucmlnaHQhPWwubGVmdCxuPWwuYm90dG9tIT1uLnRvcCYmbi5ib3R0b20hPWwudG9wLGE9KDAhPWcud2lkdGh8fGEpJiYoMCE9Zy5oZWlnaHR8fG4pKTphPSExO2EmJihrPW5ldyBfLkRoKE1hdGgubWF4KGQudG9wLWIudG9wLDApLE1hdGgubWF4KGIubGVmdCtiLndpZHRoLWQucmlnaHQsMCksTWF0aC5tYXgoYi50b3ArYi5oZWlnaHQtZC5ib3R0b20sMCksTWF0aC5tYXgoZC5sZWZ0LWIubGVmdCwwKSkpO3JldHVybiBuZXcgeHMoYyxkLGUsayxmLGgpfTt2YXIgQXM9ZnVuY3Rpb24oYSl7dGhpcy5tPWE7dGhpcy5vPW51bGw7dGhpcy5IPXRoaXMuc3RhdHVzPTA7dGhpcy5sPW51bGw7dGhpcy5tYT1cInNmY2hhbm5lbFwiK2F9O3ZhciBCcz0hMSxDcz1cIlwiLERzPWZ1bmN0aW9uKGEpe2E9YS5tYXRjaCgvW1xcZF0rL2cpO2lmKCFhKXJldHVyblwiXCI7YS5sZW5ndGg9MztyZXR1cm4gYS5qb2luKFwiLlwiKX07KGZ1bmN0aW9uKCl7aWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aCl7dmFyIGE9bmF2aWdhdG9yLnBsdWdpbnNbXCJTaG9ja3dhdmUgRmxhc2hcIl07aWYoYSYmKEJzPSEwLGEuZGVzY3JpcHRpb24pKXtDcz1EcyhhLmRlc2NyaXB0aW9uKTtyZXR1cm59aWYobmF2aWdhdG9yLnBsdWdpbnNbXCJTaG9ja3dhdmUgRmxhc2ggMi4wXCJdKXtCcz0hMDtDcz1cIjIuMC4wLjExXCI7cmV0dXJufX1pZihuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCYmKGE9bmF2aWdhdG9yLm1pbWVUeXBlc1tcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCJdLEJzPSEoIWF8fCFhLmVuYWJsZWRQbHVnaW4pKSl7Q3M9RHMoYS5lbmFibGVkUGx1Z2luLmRlc2NyaXB0aW9uKTtyZXR1cm59aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEFjdGl2ZVhPYmplY3Qpe3RyeXt2YXIgYj1uZXcgQWN0aXZlWE9iamVjdChcIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjdcIik7QnM9ITA7Q3M9RHMoYi5HZXRWYXJpYWJsZShcIiR2ZXJzaW9uXCIpKTtyZXR1cm59Y2F0Y2goYyl7fXRyeXtiPW5ldyBBY3RpdmVYT2JqZWN0KFwiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNlwiKTtCcz0hMDtDcz1cIjYuMC4yMVwiO3JldHVybn1jYXRjaChjKXt9dHJ5e2I9bmV3IEFjdGl2ZVhPYmplY3QoXCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaFwiKSxCcz0hMCxDcz1EcyhiLkdldFZhcmlhYmxlKFwiJHZlcnNpb25cIikpfWNhdGNoKGMpe319fSkoKTt2YXIgRXM9QnMsRnM9Q3M7dmFyIEdzPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfTt2YXIgSHM9ZnVuY3Rpb24oYSxiKXt0aGlzLndiPWE7dGhpcy54Yj1iO3RoaXMubD10aGlzLmo9ITF9O3ZhciBJcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7az12b2lkIDA9PT1rP1tdOms7dGhpcy5tPWE7dGhpcy5sPWI7dGhpcy52PWM7dGhpcy5wZXJtaXNzaW9ucz1kO3RoaXMubz1lO3RoaXMuQT1mO3RoaXMubmI9Zzt0aGlzLmhvc3RwYWdlTGlicmFyeVRva2Vucz1rO3RoaXMuaj1cIlwiO3RoaXMuYWI9aH07dmFyIEpzPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5vPWJ9O0pzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKGEpe3RoaXMubyYmYSYmKGEuc2VudGluZWw9dGhpcy5vKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSl9O3ZhciBLcz1mdW5jdGlvbihhLGIsYyl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yz9cIlwiOmMpO3RoaXMudmVyc2lvbj1ifTtfLkooS3MsSnMpO0tzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCx2ZXJzaW9uOnRoaXMudmVyc2lvbn0pfTt2YXIgTHM9ZnVuY3Rpb24oYSxiLGMsZCl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09ZD9cIlwiOmQpO3RoaXMubT1iO3RoaXMudj1jfTtfLkooTHMsSnMpO0xzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCxpbml0aWFsV2lkdGg6dGhpcy5tLGluaXRpYWxIZWlnaHQ6dGhpcy52fSl9O3ZhciBNcz1mdW5jdGlvbihhLGIsYyl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yz9cIlwiOmMpO3RoaXMudj1ifTtfLkooTXMsSnMpO01zLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyx7dWlkOnRoaXMubCxkZXNjcmlwdGlvbjp0aGlzLnZ9KX07dmFyIE5zPWZ1bmN0aW9uKGEsYixjLGQpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWQ/XCJcIjpkKTt0aGlzLnY9Yjt0aGlzLnB1c2g9Y307Xy5KKE5zLEpzKTtOcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsZXhwYW5kX3Q6dGhpcy52LnRvcCxleHBhbmRfcjp0aGlzLnYucmlnaHQsZXhwYW5kX2I6dGhpcy52LmJvdHRvbSxleHBhbmRfbDp0aGlzLnYubGVmdCxwdXNoOnRoaXMucHVzaH0pfTt2YXIgT3M9ZnVuY3Rpb24oYSxiKXtKcy5jYWxsKHRoaXMsYSx2b2lkIDA9PT1iP1wiXCI6Yil9O18uSihPcyxKcyk7T3MucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gSnMucHJvdG90eXBlLmouY2FsbCh0aGlzLHt1aWQ6dGhpcy5sfSl9O3ZhciBQcz1mdW5jdGlvbihhLGIsYyl7SnMuY2FsbCh0aGlzLGEsdm9pZCAwPT09Yz9cIlwiOmMpO3RoaXMubT1ifTtfLkooUHMsSnMpO1BzLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9e3VpZDp0aGlzLmwsbmV3R2VvbWV0cnk6eXModGhpcy5tKX07cmV0dXJuIEpzLnByb3RvdHlwZS5qLmNhbGwodGhpcyxhKX07dmFyIFFzPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtQcy5jYWxsKHRoaXMsYSxjLHZvaWQgMD09PWY/XCJcIjpmKTt0aGlzLnN1Y2Nlc3M9Yjt0aGlzLnY9ZDt0aGlzLnB1c2g9ZX07Xy5KKFFzLFBzKTtRcy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXt1aWQ6dGhpcy5sLHN1Y2Nlc3M6dGhpcy5zdWNjZXNzLG5ld0dlb21ldHJ5OnlzKHRoaXMubSksZXhwYW5kX3Q6dGhpcy52LnRvcCxleHBhbmRfcjp0aGlzLnYucmlnaHQsZXhwYW5kX2I6dGhpcy52LmJvdHRvbSxleHBhbmRfbDp0aGlzLnYubGVmdCxwdXNoOnRoaXMucHVzaH07dGhpcy5vJiYoYS5zZW50aW5lbD10aGlzLm8pO3JldHVybiBKU09OLnN0cmluZ2lmeShhKX07dmFyIFJzPWZ1bmN0aW9uKGEsYixjLGQpe0pzLmNhbGwodGhpcyxhLHZvaWQgMD09PWQ/XCJcIjpkKTt0aGlzLndpZHRoPWI7dGhpcy5oZWlnaHQ9Y307Xy5KKFJzLEpzKTtScy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiBKcy5wcm90b3R5cGUuai5jYWxsKHRoaXMse3VpZDp0aGlzLmwsd2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHR9KX07dmFyIFNzPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YztmJiYoZj1cIj9cIitmKTtiPSh2b2lkIDA9PT1lP1wiLy90cGMuZ29vZ2xlc3luZGljYXRpb24uY29tXCI6ZSkrKFwiL3NhZmVmcmFtZS9cIitiK1wiL2h0bWwvY29udGFpbmVyLmh0bWxcIitmKTtlPWE7Zm9yKGY9MDtlIT1lLnBhcmVudDspZisrLGU9ZS5wYXJlbnQ7KGU9ZikmJihiKz0oYz9cIiZcIjpcIj9cIikrXCJuPVwiK2UpOyhjPWQpfHwoYz1KZyhhLCExKSk7cmV0dXJuKGM/XCJodHRwczpcIjpcImh0dHA6XCIpK2J9O3ZhciBUcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9d2luZG93O3JldHVybiBmdW5jdGlvbigpe3ZhciBlPV8uT2koKSxmPTM7dHJ5e3ZhciBnPWIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGspe2Y9MTM7aWYoYylyZXR1cm4gYyhhLGspLGc7dGhyb3cgazt9ZmluYWxseXtpZihkLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmZSl7dmFyIGg9Xy5PaSgpfHwwO2U9e2xhYmVsOmEudG9TdHJpbmcoKSx2YWx1ZTplLGR1cmF0aW9uOmgtZSx0eXBlOmZ9O2Y9ZC5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlPWQuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZXx8W107MjA0OD5mLmxlbmd0aCYmZi5wdXNoKGUpfX1yZXR1cm4gZ319O3ZhciBZcz1mdW5jdGlvbihhKXtBcy5jYWxsKHRoaXMsYS51bmlxdWVJZCk7dmFyIGI9dGhpczt0aGlzLkQ9YS5oZDt0aGlzLkc9MT09YS5zaXplO3RoaXMuVj1uZXcgSHMoYS5wZXJtaXNzaW9ucy53YiYmIXRoaXMuRyxhLnBlcm1pc3Npb25zLnhiJiYhdGhpcy5HKTt0aGlzLkE9YS5UYjt0aGlzLmthPWEuaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zfHxbXTt2YXIgYz13aW5kb3cubG9jYXRpb247dGhpcy5mYT1cImZpbGU6XCI9PWMucHJvdG9jb2w/XCIqXCI6Yy5wcm90b2NvbCtcIi8vXCIrYy5ob3N0O3RoaXMuZ2E9ISFhLm5iO2M9ITE9PT1hLkpjP1wiaHR0cHM6XCI6d2luZG93LmxvY2F0aW9uLnByb3RvY29sO3RoaXMuVD1hLkVjP1wiLy9cIithLkVjK1wiLnNhZmVmcmFtZS5nb29nbGVzeW5kaWNhdGlvbi5jb21cIjpcIi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiO3RoaXMuZWE9WmEoYS5hYik/XCJodHRwczovL3NlY3VyZWZyYW1lLmRvdWJsZWNsaWNrLm5ldFwiOmMrdGhpcy5UO3RoaXMuVz0hIWEuU2M7dGhpcy5iYT1VcyhhKTt0aGlzLnY9bmV3IFByO1ZzKHRoaXMsYS5UYixhLnNpemUpO3RoaXMubz10aGlzLmFhPXpzKGEuVGIpO3RoaXMuTT1hLnRkfHxcIjEtMC0zN1wiO3RoaXMuZGE9YS5QY3x8XCJcIjt0aGlzLlg9dm9pZCAwPT09YS5hYj9udWxsOmEuYWI7V3ModGhpcyxhKTt0aGlzLlA9bnVsbDt0aGlzLkk9VHMoNDEyLGZ1bmN0aW9uKCl7cmV0dXJuIFhzKGIpfSxhLnJhKTt0aGlzLks9LTE7dGhpcy5DPTA7dGhpcy5VPW51bGw7IWEuQ2V8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcnx8QWV8fHplfHwodGhpcy5VPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihUcyg0MTQsZnVuY3Rpb24oZSl7Yi5QPWVbZS5sZW5ndGgtMV07WHMoYil9LGEucmEpKSk7dGhpcy5sPW5ldyB2cih0aGlzLm1hLHRoaXMuai5jb250ZW50V2luZG93LHRoaXMuZWEsITEpO3hyKHRoaXMubCxcImluaXRfZG9uZVwiLCgwLF8uUmMpKHRoaXMuTWIsdGhpcykpO3hyKHRoaXMubCxcInJlZ2lzdGVyX2RvbmVcIiwoMCxfLlJjKSh0aGlzLldiLHRoaXMpKTt4cih0aGlzLmwsXCJyZXBvcnRfZXJyb3JcIiwoMCxfLlJjKSh0aGlzLlliLHRoaXMpKTt4cih0aGlzLmwsXCJleHBhbmRfcmVxdWVzdFwiLCgwLF8uUmMpKHRoaXMuS2IsdGhpcykpO3hyKHRoaXMubCxcImNvbGxhcHNlX3JlcXVlc3RcIiwoMCxfLlJjKSh0aGlzLkliLHRoaXMpKTt4cih0aGlzLmwsXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIiwoMCxfLlJjKSh0aGlzLk8sdGhpcykpO3RoaXMubC5jb25uZWN0KCgwLF8uUmMpKHRoaXMuUWIsdGhpcykpO3ZhciBkPVRzKDQxNSxmdW5jdGlvbigpe2IuaiYmKGIuai5uYW1lPVwiXCIsYS55YyYmYS55YygpLF8ucWIoYi5qLFwibG9hZFwiLGQpKX0sYS5yYSk7Xy52KHRoaXMuaixcImxvYWRcIixkKTt0aGlzLk1iPVRzKDQxMyx0aGlzLk1iLGEucmEpO3RoaXMuV2I9VHMoNDE3LHRoaXMuV2IsYS5yYSk7dGhpcy5ZYj1Ucyg0MTksdGhpcy5ZYixhLnJhKTt0aGlzLktiPVRzKDQxMSx0aGlzLktiLGEucmEpO3RoaXMuSWI9VHMoNDA5LHRoaXMuSWIsYS5yYSk7dGhpcy5PPVRzKDQxMCx0aGlzLk8sYS5yYSk7dGhpcy5RYj1Ucyg0MTYsdGhpcy5RYixhLnJhKX07Xy5KKFlzLEFzKTt2YXIgVnM9ZnVuY3Rpb24oYSxiLGMpe2EuRz8oYi5zdHlsZS53aWR0aD1fLmtpKFwiMTAwJVwiLCEwKSxiLnN0eWxlLmhlaWdodD1fLmtpKFwiYXV0b1wiLCEwKSk6KGIuc3R5bGUud2lkdGg9Xy5raShjLndpZHRoLCEwKSxiLnN0eWxlLmhlaWdodD1fLmtpKGMuaGVpZ2h0LCEwKSl9LFdzPWZ1bmN0aW9uKGEsYil7dmFyIGM9V2YoYS5BKSxkPWIuY29udGVudDtkPWEuTStcIjtcIitkLmxlbmd0aCtcIjtcIitkO3ZhciBlPW5ldyBJcyhhLm0sYS5mYSxhLmFhLGEuVixuZXcgR3Moe3NoYXJlZDp7c2ZfdmVyOmEuTSxja19vbjpuYXZpZ2F0b3IuY29va2llRW5hYmxlZD8xOjAsZmxhc2hfdmVyOkVzP0ZzOlwiMFwifX0pLGEuRyxhLmdhLGEuWCxhLmthKTt2YXIgZj17fTtmLnVpZD1lLm07Zi5ob3N0UGVlck5hbWU9ZS5sO2YuaW5pdGlhbEdlb21ldHJ5PXlzKGUudik7dmFyIGc9ZS5wZXJtaXNzaW9ucztnPUpTT04uc3RyaW5naWZ5KHtleHBhbmRCeU92ZXJsYXk6Zy53YixleHBhbmRCeVB1c2g6Zy54YixyZWFkQ29va2llOmcuaix3cml0ZUNvb2tpZTpnLmx9KTtmPShmLnBlcm1pc3Npb25zPWcsZi5tZXRhZGF0YT1KU09OLnN0cmluZ2lmeShlLm8uaiksZi5yZXBvcnRDcmVhdGl2ZUdlb21ldHJ5PWUuQSxmLmlzRGlmZmVyZW50U291cmNlV2luZG93PWUubmIsZi5nb29nX3NhZmVmcmFtZV9obHQ9dG4oZS5ob3N0cGFnZUxpYnJhcnlUb2tlbnMpLGYuZW5jcnlwdGlvbk1vZGU9ZS5hYixmKTtlLmomJihmLnNlbnRpbmVsPWUuaik7ZT1KU09OLnN0cmluZ2lmeShmKTtlPWQrZTtkPSExPT09Yi5KYztpZihhLlcmJmIuc2l6ZSBpbnN0YW5jZW9mIF8uVGYpe2Y9WmEoYi5hYik/XCJodHRwczovL3NlY3VyZWZyYW1lLmRvdWJsZWNsaWNrLm5ldFwiOmJnKGMuaikubG9jYXRpb24ucHJvdG9jb2wrYS5UO2c9Yi50Yzt2YXIgaD1iLnNpemUsaz1iZyhXZihhLkEpLmopO1pxfHx1ZyhrLmRvY3VtZW50LCRxKTtacSsrO2suZ29vZ2xlX2Vhc19xdWV1ZT1rLmdvb2dsZV9lYXNfcXVldWV8fFtdO2suZ29vZ2xlX2Vhc19xdWV1ZS5wdXNoKHthOmcsYjpmLGM6aC53aWR0aCxkOmguaGVpZ2h0LGU6XCJzZi1nZG4tZXhwLVwiK1pxLGY6dm9pZCAwLGc6dm9pZCAwLGg6dm9pZCAwLGk6dm9pZCAwfSl9Zz1iLnNpemU7dmFyIGw9Yi53YSxtPWIuYWR8fFwiXCI7Zj1nLndpZHRoO2g9Zy5oZWlnaHQ7Zz1cIlwiO2EuRyYmKGg9Zj0wLGc9XCJtaW4td2lkdGg6MTAwJVwiKTtrPXt9O2suaWQ9Yi50YztrLnRpdGxlPW07ay5uYW1lPWU7Yj1iZyhjLmopO2Q9WmEoYS5YKT9cImh0dHBzOi8vc2VjdXJlZnJhbWUuZG91YmxlY2xpY2submV0L2NvbnRhaW5lci5odG1sP2Vjcz1cIitsOlNzKGIsYS5NLGEuZGEsZCxhLlQpO2U9W107YS5XJiYoYj1LZyhiLmxvY2F0aW9uLmhyZWYpLGUucHVzaChbMDxiLmxlbmd0aD9cImdvb2dsZV9kZWJ1Z1wiKyhiP1wiPVwiK2I6XCJcIikrXCImXCI6XCJcIixcInhwYz1cIixcInNmLWdkbi1leHAtXCIrYS5tLFwiJnA9XCIsZW5jb2RlVVJJQ29tcG9uZW50KF8uci5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCksXCIvL1wiLGVuY29kZVVSSUNvbXBvbmVudChfLnIuZG9jdW1lbnQubG9jYXRpb24uaG9zdCldLmpvaW4oXCJcIikpKTtlLmxlbmd0aCYmKGQrPVwiI1wiK2Uuam9pbihcIiZcIikpO2I9KGsuc3JjPWQsay5zY3JvbGxpbmc9XCJub1wiLGsubWFyZ2luV2lkdGg9XCIwXCIsay5tYXJnaW5IZWlnaHQ9XCIwXCIsay53aWR0aD1TdHJpbmcoZiksay5oZWlnaHQ9U3RyaW5nKGgpLGtbXCJkYXRhLWlzLXNhZmVmcmFtZVwiXT1cInRydWVcIixrKTtudWxsIT09YS5iYSYmKGIuc2FuZGJveD1hLmJhKTtkPWc7ZT17fTtkPShlLmZyYW1lYm9yZGVyPTAsZS5hbGxvd1RyYW5zcGFyZW5jeT1cInRydWVcIixlLnN0eWxlPVwiYm9yZGVyOjA7dmVydGljYWwtYWxpZ246Ym90dG9tO1wiKyh2b2lkIDA9PT1kP1wiXCI6ZCksZS5zcmM9XCJhYm91dDpibGFua1wiLGUpO2ImJnBkKGQsYik7Yz1jLmwoXCJJRlJBTUVcIixkKTthLkEuYXBwZW5kQ2hpbGQoYyk7YS5qPWN9O18ucD1Zcy5wcm90b3R5cGU7Xy5wLlFiPWZ1bmN0aW9uKCl7dGhpcy5VJiZ0aGlzLmo/dGhpcy5VLm9ic2VydmUodGhpcy5qKTooXy52KHdpbmRvdyxcInJlc2l6ZVwiLHRoaXMuSSksXy52KHdpbmRvdyxcInNjcm9sbFwiLHRoaXMuSSkpfTtfLnAuTWI9ZnVuY3Rpb24oYSl7dHJ5e2lmKDAhPXRoaXMuc3RhdHVzKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGFscmVhZHkgaW5pdGlhbGl6ZWRcIik7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcInN0cmluZ1wiIT09dHlwZW9mIGIudmVyc2lvbil0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7dmFyIGM9bmV3IEtzKGIudWlkLGIudmVyc2lvbixiLnNlbnRpbmVsKTtpZih0aGlzLm0hPWMubHx8dGhpcy5NIT1jLnZlcnNpb24pdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO3RoaXMuc3RhdHVzPTF9Y2F0Y2goZCl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBJTklUSUFMSVpFX0RPTkUgbWVzc2FnZS4gUmVhc29uOiBcIitkLm1lc3NhZ2UpfX07Xy5wLldiPWZ1bmN0aW9uKGEpe3RyeXtpZigxIT10aGlzLnN0YXR1cyl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBub3QgaW5pdGlhbGl6ZWRcIik7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKFwiQ291bGQgbm90IHBhcnNlIHNlcmlhbGl6ZWQgbWVzc2FnZVwiKTt2YXIgYj1KU09OLnBhcnNlKGEpO2lmKCFfLk1jKGIpfHwhWWEoYi51aWQpfHxcIm51bWJlclwiIT09dHlwZW9mIGIuaW5pdGlhbFdpZHRofHxcIm51bWJlclwiIT09dHlwZW9mIGIuaW5pdGlhbEhlaWdodCl0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7aWYodGhpcy5tIT0obmV3IExzKGIudWlkLGIuaW5pdGlhbFdpZHRoLGIuaW5pdGlhbEhlaWdodCxiLnNlbnRpbmVsKSkubCl0aHJvdyBFcnJvcihcIldyb25nIHNvdXJjZSBjb250YWluZXJcIik7dGhpcy5zdGF0dXM9Mn1jYXRjaChjKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIFJFR0lTVEVSX0RPTkUgbWVzc2FnZS4gUmVhc29uOiBcIitjLm1lc3NhZ2UpfX07Xy5wLlliPWZ1bmN0aW9uKGEpe3RyeXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoXCJDb3VsZCBub3QgcGFyc2Ugc2VyaWFsaXplZCBtZXNzYWdlXCIpO3ZhciBiPUpTT04ucGFyc2UoYSk7aWYoIV8uTWMoYil8fCFZYShiLnVpZCl8fFwic3RyaW5nXCIhPT10eXBlb2YgYi5kZXNjcmlwdGlvbil0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7dmFyIGM9bmV3IE1zKGIudWlkLGIuZGVzY3JpcHRpb24sYi5zZW50aW5lbCk7aWYodGhpcy5tIT1jLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO3RoaXMuRC5pbmZvKFwiRXh0IHJlcG9ydGVkIGFuIGVycm9yLiBEZXNjcmlwdGlvbjogXCIrYy52KX1jYXRjaChkKXt0aGlzLkQuZXJyb3IoXCJJbnZhbGlkIFJFUE9SVF9FUlJPUiBtZXNzYWdlLiBSZWFzb246IFwiK2QubWVzc2FnZSl9fTtfLnAuS2I9ZnVuY3Rpb24oYSl7dHJ5e2lmKDIhPXRoaXMuc3RhdHVzKXRocm93IEVycm9yKFwiQ29udGFpbmVyIGlzIG5vdCByZWdpc3RlcmVkXCIpO2lmKDAhPXRoaXMuSCl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBpcyBub3QgY29sbGFwc2VkXCIpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmV4cGFuZF90fHxcIm51bWJlclwiIT09dHlwZW9mIGIuZXhwYW5kX3J8fFwibnVtYmVyXCIhPT10eXBlb2YgYi5leHBhbmRfYnx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLmV4cGFuZF9sfHxcImJvb2xlYW5cIiE9PXR5cGVvZiBiLnB1c2gpdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO3ZhciBjPW5ldyBOcyhiLnVpZCxuZXcgXy5EaChiLmV4cGFuZF90LGIuZXhwYW5kX3IsYi5leHBhbmRfYixiLmV4cGFuZF9sKSxiLnB1c2gsYi5zZW50aW5lbCk7aWYodGhpcy5tIT1jLmwpdGhyb3cgRXJyb3IoXCJXcm9uZyBzb3VyY2UgY29udGFpbmVyXCIpO2lmKCEoMDw9Yy52LnRvcCYmMDw9Yy52LmxlZnQmJjA8PWMudi5ib3R0b20mJjA8PWMudi5yaWdodCkpdGhyb3cgRXJyb3IoXCJJbnZhbGlkIGV4cGFuc2lvbiBhbW91bnRzXCIpO3ZhciBkO2lmKGQ9Yy5wdXNoJiZ0aGlzLlYueGJ8fCFjLnB1c2gmJnRoaXMuVi53Yil7dmFyIGU9Yy52LGY9Yy5wdXNoLGc9dGhpcy5vPXpzKHRoaXMuaik7aWYoZS50b3A8PWcuai50b3AmJmUucmlnaHQ8PWcuai5yaWdodCYmZS5ib3R0b208PWcuai5ib3R0b20mJmUubGVmdDw9Zy5qLmxlZnQpe2lmKCFmKWZvcih2YXIgaD10aGlzLmoucGFyZW50Tm9kZTtoJiZoLnN0eWxlO2g9aC5wYXJlbnROb2RlKVJyKHRoaXMudixoLFwib3ZlcmZsb3dYXCIsXCJ2aXNpYmxlXCIsXCJpbXBvcnRhbnRcIiksUnIodGhpcy52LGgsXCJvdmVyZmxvd1lcIixcInZpc2libGVcIixcImltcG9ydGFudFwiKTt2YXIgaz10aGlzLm8ubCxsPXRoaXMuby5sLG09R2gobmV3IEZoKDAsMCxrLnJpZ2h0LWsubGVmdCxsLmJvdHRvbS1sLnRvcCkpO18uTWMoZSk/KG0udG9wLT1lLnRvcCxtLnJpZ2h0Kz1lLnJpZ2h0LG0uYm90dG9tKz1lLmJvdHRvbSxtLmxlZnQtPWUubGVmdCk6KG0udG9wLT1lLG0ucmlnaHQrPU51bWJlcih2b2lkIDApLG0uYm90dG9tKz1OdW1iZXIodm9pZCAwKSxtLmxlZnQtPU51bWJlcih2b2lkIDApKTtScih0aGlzLnYsdGhpcy5BLFwicG9zaXRpb25cIixcInJlbGF0aXZlXCIpO1JyKHRoaXMudix0aGlzLmosXCJwb3NpdGlvblwiLFwiYWJzb2x1dGVcIik7Zj8oU3IodGhpcy52LHRoaXMuQSxcIndpZHRoXCIsbS5yaWdodC1tLmxlZnQpLFNyKHRoaXMudix0aGlzLkEsXCJoZWlnaHRcIixtLmJvdHRvbS1tLnRvcCkpOlJyKHRoaXMudix0aGlzLmosXCJ6SW5kZXhcIixcIjEwMDAwXCIpO1NyKHRoaXMudix0aGlzLmosXCJ3aWR0aFwiLG0ucmlnaHQtbS5sZWZ0KTtTcih0aGlzLnYsdGhpcy5qLFwiaGVpZ2h0XCIsbS5ib3R0b20tbS50b3ApO1NyKHRoaXMudix0aGlzLmosXCJsZWZ0XCIsbS5sZWZ0KTtTcih0aGlzLnYsdGhpcy5qLFwidG9wXCIsbS50b3ApO3RoaXMuSD0yO3RoaXMubz16cyh0aGlzLmopO2Q9ITB9ZWxzZSBkPSExfWE9ZDt5cih0aGlzLmwsXCJleHBhbmRfcmVzcG9uc2VcIiwobmV3IFFzKHRoaXMubSxhLHRoaXMubyxjLnYsYy5wdXNoKSkuaigpKTtpZighYSl0aHJvdyBFcnJvcihcIlZpZXdwb3J0IG9yIGRvY3VtZW50IGJvZHkgbm90IGxhcmdlIGVub3VnaCB0byBleHBhbmQgaW50by5cIik7fWNhdGNoKG4pe3RoaXMuRC5lcnJvcihcIkludmFsaWQgRVhQQU5EX1JFUVVFU1QgbWVzc2FnZS4gUmVhc29uOiBcIituLm1lc3NhZ2UpfX07Xy5wLkliPWZ1bmN0aW9uKGEpe3RyeXtpZigyIT10aGlzLnN0YXR1cyl0aHJvdyBFcnJvcihcIkNvbnRhaW5lciBpcyBub3QgcmVnaXN0ZXJlZFwiKTtpZigyIT10aGlzLkgpdGhyb3cgRXJyb3IoXCJDb250YWluZXIgaXMgbm90IGV4cGFuZGVkXCIpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKSl0aHJvdyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKU09OIG1lc3NhZ2VcIik7aWYodGhpcy5tIT0obmV3IE9zKGIudWlkLGIuc2VudGluZWwpKS5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTtUcih0aGlzLnYpO3RoaXMuSD0wO3RoaXMuaiYmKHRoaXMubz16cyh0aGlzLmopKTt5cih0aGlzLmwsXCJjb2xsYXBzZV9yZXNwb25zZVwiLChuZXcgUHModGhpcy5tLHRoaXMubykpLmooKSl9Y2F0Y2goYyl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBDT0xMQVBTRV9SRVFVRVNUIG1lc3NhZ2UuIFJlYXNvbjogXCIrYy5tZXNzYWdlKX19O3ZhciBYcz1mdW5jdGlvbihhKXtpZigxPT1hLnN0YXR1c3x8Mj09YS5zdGF0dXMpc3dpdGNoKGEuQyl7Y2FzZSAwOlpzKGEpO2EuSz13aW5kb3cuc2V0VGltZW91dCgoMCxfLlJjKShhLlksYSksMUUzKTthLkM9MTticmVhaztjYXNlIDE6YS5DPTI7YnJlYWs7Y2FzZSAyOmEuQz0yfX07WXMucHJvdG90eXBlLk89ZnVuY3Rpb24oYSl7dHJ5e2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBwYXJzZSBzZXJpYWxpemVkIG1lc3NhZ2VcIik7dmFyIGI9SlNPTi5wYXJzZShhKTtpZighXy5NYyhiKXx8IVlhKGIudWlkKXx8XCJudW1iZXJcIiE9PXR5cGVvZiBiLndpZHRofHxcIm51bWJlclwiIT09dHlwZW9mIGIuaGVpZ2h0fHxiLnNlbnRpbmVsJiZcInN0cmluZ1wiIT09dHlwZW9mIGIuc2VudGluZWwpdGhyb3cgRXJyb3IoXCJDYW5ub3QgcGFyc2UgSlNPTiBtZXNzYWdlXCIpO3ZhciBjPW5ldyBScyhiLnVpZCxiLndpZHRoLGIuaGVpZ2h0LGIuc2VudGluZWwpO2lmKHRoaXMubSE9Yy5sKXRocm93IEVycm9yKFwiV3Jvbmcgc291cmNlIGNvbnRhaW5lclwiKTt2YXIgZD1TdHJpbmcoYy5oZWlnaHQpO3RoaXMuRz9kIT10aGlzLmouaGVpZ2h0JiYodGhpcy5qLmhlaWdodD1kLFhzKHRoaXMpKTp0aGlzLkQuZXJyb3IoXCJHb3QgQ3JlYXRpdmVHZW9tZXRyeVVwZGF0ZSBtZXNzYWdlIGluIG5vbi1mbHVpZGNvbnRhaW5lci4gVGhlIGNvbnRhaW5lciBpcyBub3QgcmVzaXplZC5cIil9Y2F0Y2goZSl7dGhpcy5ELmVycm9yKFwiSW52YWxpZCBDUkVBVElWRV9HRU9NRVRSWV9VUERBVEUgbWVzc2FnZS4gUmVhc29uOiBcIitlLm1lc3NhZ2UpfX07WXMucHJvdG90eXBlLlk9ZnVuY3Rpb24oKXtpZigxPT10aGlzLnN0YXR1c3x8Mj09dGhpcy5zdGF0dXMpc3dpdGNoKHRoaXMuQyl7Y2FzZSAxOnRoaXMuQz0wO2JyZWFrO2Nhc2UgMjpacyh0aGlzKSx0aGlzLks9d2luZG93LnNldFRpbWVvdXQoKDAsXy5SYykodGhpcy5ZLHRoaXMpLDFFMyksdGhpcy5DPTF9fTt2YXIgWnM9ZnVuY3Rpb24oYSl7YS5vPXpzKGEuaixhLlApO2EuUD1udWxsO3lyKGEubCxcImdlb21ldHJ5X3VwZGF0ZVwiLChuZXcgUHMoYS5tLGEubykpLmooKSl9LFVzPWZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7YS5GYyYmKGI9YS5GYyk7cmV0dXJuIG51bGw9PWI/bnVsbDpiLmpvaW4oXCIgXCIpfSwkcz1bXCJhbGxvdy1tb2RhbHNcIixcImFsbG93LW9yaWVudGF0aW9uLWxvY2tcIixcImFsbG93LXByZXNlbnRhdGlvblwiXSxhdD1bXCJhbGxvdy10b3AtbmF2aWdhdGlvblwiXSxidD1bXCJhbGxvdy1zYW1lLW9yaWdpblwiXSxjdD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihhdCkpKSxkdD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihidCkpKSxldD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihhdCksXy5GYihidCkpKSxmdD1OZyhfLkZiKCRzKS5jb25jYXQoXy5GYihhdCksW1wiYWxsb3ctcG9pbnRlci1sb2NrXCJdKSk7dmFyIGFiPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1uZXcgZnEoYixjKTtlLm9iPWQ7ZS5MPWE7TGEobmV3IGVxKGUpKX1jYXRjaChmKXt9fTt2YXIgZ3Q9ZnVuY3Rpb24oYSl7a2YodGhpcyxhLG51bGwsbnVsbCl9O0soZ3QsTSk7Z3QucHJvdG90eXBlLmdldFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLDQpfTt2YXIgaHQ9ZnVuY3Rpb24oKXt9O3ZhciBpdD1bLjA1LC4xLC4yLC41XSxqdD1bMCwuNSwxXSxrdD1mdW5jdGlvbihhKXthPXRnKGEpO2lmKCFhKXJldHVybi0xO3RyeXt2YXIgYj12aShhLmRvY3VtZW50KTt2YXIgYz1uZXcgXy5UZihiLmNsaWVudFdpZHRoLGIuY2xpZW50SGVpZ2h0KX1jYXRjaChkKXtjPW5ldyBfLlRmKC0xMjI0NTkzMywtMTIyNDU5MzMpfXJldHVybi0xMjI0NTkzMz09Yy53aWR0aHx8LTEyMjQ1OTMzPT1jLmhlaWdodD8tMTpjLndpZHRoKmMuaGVpZ2h0fSxsdD1mdW5jdGlvbihhLGIpe3JldHVybiAwPmE/W106Xy5SYShpdCxmdW5jdGlvbihjKXtyZXR1cm4gTWF0aC5taW4oYS9iKmMsMSl9KX0sb3Q9ZnVuY3Rpb24oYSl7dGhpcy5qPWEuTDt0aGlzLmw9YS5rYjt0aGlzLkQ9YS5WYTt0aGlzLm89bnVsbDt0aGlzLm09YS5yYTt0aGlzLnY9bXQodGhpcyk7dGhpcy5VPWEueGR8fCExO3RoaXMuQz1hLnplfHwhMTt0aGlzLkE9bnVsbDt0aGlzLkMmJm50KHRoaXMpfTtvdC5wcm90b3R5cGUuZ2V0U2xvdElkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307dmFyIHF0PWZ1bmN0aW9uKGEsYil7aWYoYS52KXtpZihudWxsIT1hLm8pe3RyeXtwdChhLE1hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpLDAsMCwwLCExKX1jYXRjaChjKXthLm0mJmEubShjKX1hLnYmJmEudi51bm9ic2VydmUoYS5sKTthLkE9bnVsbH1hLm89YjthLnYub2JzZXJ2ZShhLmwpO2EuQyYmKHBlcmZvcm1hbmNlLm5vdygpLGEubC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4bihhLmouZG9jdW1lbnQpfHx0ZyhhLmopLGEuQT1uZXcgaHQpfX0sbXQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5sLm9mZnNldFdpZHRoKmEubC5vZmZzZXRIZWlnaHQsYz1rdChhLmopO2I9Xy5GYihqdCkuY29uY2F0KF8uRmIobHQoYyxiKSkpO1VhKGIpO3JldHVybiBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihkKXtyZXR1cm4gcnQoYSxkKX0se3RocmVzaG9sZDpifSk6bmV3IE1iKGZ1bmN0aW9uKGQpe3JldHVybiBydChhLGQpfSx7dGhyZXNob2xkOmJ9KX0scnQ9ZnVuY3Rpb24oYSxiKXt0cnl7dmFyIGM9a3QoYS5qKTtfLlZjKGIsZnVuY3Rpb24oZCl7dmFyIGU9TWF0aC5yb3VuZChkLnRpbWUpLGY9ZC5ib3VuZGluZ0NsaWVudFJlY3Qud2lkdGgqZC5ib3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0LGc9ZC5pbnRlcnNlY3Rpb25SZWN0LndpZHRoKmQuaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQ7ZD1kLmlzSW50ZXJzZWN0aW5nO2EuVSYmcHQoYSxlLGYsZyxjLGQpfSl9Y2F0Y2goZCl7YS5tJiZhLm0oZCl9fSxwdD1mdW5jdGlvbihhLGIsYyxkLGUsZil7aWYobnVsbD09YS5vKXRocm93IEVycm9yKFwiTm90IEF0dGFjaGVkLlwiKTt2YXIgZz1uZXcgZ3Q7Yz1EKGcsMSxjKTtkPUQoYywyLGQpO2U9RChkLDMsZSk7Yj1EKGUsNCxiKTtiPUQoYiw1LGYpO2Y9bmV3IFdlO2U9QihiLDQpO251bGwhPWUmJmFmKGYsNCxlKTtlPUIoYiwyKTtudWxsIT1lJiZhZihmLDIsZSk7ZT1CKGIsMSk7bnVsbCE9ZSYmYWYoZiwxLGUpO2U9QihiLDMpO251bGwhPWUmJmFmKGYsMyxlKTtlPUIoYiw1KTtudWxsIT1lJiYoYj1lLG51bGwhPWImJihwZShmLmosNDApLGYuai5qLnB1c2goYj8xOjApKSk7Zj1aZShmKTtmPVVlKGYsNCk7V2koYS5ELFwiMVwiLDEwLGYsdm9pZCAwLGEubyl9LG50PWZ1bmN0aW9uKGEpe3ZhciBiPXduKGEuai5kb2N1bWVudCk7YiYmXy52KGEuai5kb2N1bWVudCxiLGZ1bmN0aW9uKCl7YS5BJiZwZXJmb3JtYW5jZS5ub3coKX0pfTt2YXIgc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gNj09PWIuc3RhdGV9KX0sdHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLkEoYSxcImZpbmRcIikuY2FsbChhLGZ1bmN0aW9uKGQpe3JldHVybiA2PT09ZC5zdGF0ZX0pO2lmKCFjKXJldHVybiBudWxsO2E9YS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQuaXNzdWVyT3JpZ2lufSk7Yz17dHlwZTpcInNlbmQtc3JyXCIsaXNzdWVyOmMuaXNzdWVyT3JpZ2luLGlzc3VlcnM6YSxyZWZyZXNoUG9saWN5Olwibm9uZVwiLHNpZ25SZXF1ZXN0RGF0YTpcImluY2x1ZGVcIixpbmNsdWRlVGltZXN0YW1wSGVhZGVyOiEwLGFkZGl0aW9uYWxTaWduZWRIZWFkZXJzOltcInNlYy10aW1lXCIsXCJTZWMtU2lnbmVkLVJlZGVtcHRpb24tUmVjb3JkXCJdfTtiJiYwPF8uQShPYmplY3QsXCJrZXlzXCIpLmNhbGwoT2JqZWN0LGIpLmxlbmd0aCYmKGMuYWRkaXRpb25hbFNpZ25pbmdEYXRhPVZlKEpTT04uc3RyaW5naWZ5KGIpLDMpKTtyZXR1cm4gY30sdXQ9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5EaigyNTApLGM9Xy5EaigyNTIpO2lmKGEuc2V0VHJ1c3RUb2tlbiYmc3QoYikpdHJ5e3ZhciBkPXR0KGIsYyk7ZCYmYS5zZXRUcnVzdFRva2VuKGQpfWNhdGNoKGUpe319O3ZhciB2dD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGEuSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IGEuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYyxiKTpuZXcgTWIoYyxiKX0sd3Q9ZnVuY3Rpb24oYSxiLGMpe18udihhLGIsYyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF8ucWIoYSxiLGMpfX0seHQ9bnVsbCx5dD1mdW5jdGlvbigpe3h0PV8uTmkoKX0senQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9udWxsPT09eHQ/KF8udihhLFwibW91c2Vtb3ZlXCIseXQse3Bhc3NpdmU6ITB9KSxfLnYoYSxcInNjcm9sbFwiLHl0LHtwYXNzaXZlOiEwfSkseXQoKSwhMSk6Xy5OaSgpLXh0Pj0xRTMqYjohMX0sQXQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5MLGM9YS5lbGVtZW50LGQ9YS5EZCxlPWEuQWQsZj12b2lkIDA9PT1hLkhjPzA6YS5IYyxnPWEuSGIsaD1hLlRjLGs9dm9pZCAwPT09YS54Yz8hMDphLnhjLGw9bnVsbCxtPSExLG49ITEscT1bXSx3PSh2b2lkIDA9PT1hLnpiP3Z0OmEuemIpKGIsdm9pZCAwPT09YS5vcHRpb25zP3t9OmEub3B0aW9ucyxmdW5jdGlvbih1LEMpe3RyeXt2YXIgUT1mdW5jdGlvbigpe3EubGVuZ3RofHwoZSYmKHEucHVzaCh3dChjLFwibW91c2VlbnRlclwiLGZ1bmN0aW9uKCl7bT0hMDtRKCl9KSkscS5wdXNoKHd0KGMsXCJtb3VzZWxlYXZlXCIsZnVuY3Rpb24oKXttPSExO1EoKX0pKSkscS5wdXNoKHd0KGIuZG9jdW1lbnQsXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZnVuY3Rpb24oKXtyZXR1cm4gUSgpfSkpKTt2YXIgTj16dChiLGYpLEg9eG4oYi5kb2N1bWVudCk7aWYobiYmIW0mJiFOJiYhSClsPWx8fGIuc2V0VGltZW91dChmdW5jdGlvbigpe3p0KGIsZik/USgpOihnKCksQy5kaXNjb25uZWN0KCkpfSwxRTMqZCk7ZWxzZSBpZihrfHxtfHxOfHxIKWIuY2xlYXJUaW1lb3V0KGwpLGw9bnVsbH07bj11W3UubGVuZ3RoLTFdLmlzSW50ZXJzZWN0aW5nO1EoKX1jYXRjaChOKXtoJiZoKE4pfX0pO3cub2JzZXJ2ZShjKTtyZXR1cm4gZnVuY3Rpb24oKXt3LmRpc2Nvbm5lY3QoKTtmb3IodmFyIHU9Xy5GKHEpLEM9dS5uZXh0KCk7IUMuZG9uZTtDPXUubmV4dCgpKUM9Qy52YWx1ZSxDKCk7bnVsbCE9bCYmYi5jbGVhclRpbWVvdXQobCl9fTt2YXIgQnQ9ZnVuY3Rpb24oKXt2YXIgYT1CKFRuLkIoKS5qLDI2KTt0aGlzLmo9bnVsbDt0aGlzLmw9MDt0aGlzLnY9YX0sQ3Q9ZnVuY3Rpb24oYSl7aWYoIWEuail7dmFyIGI9Xy5Eaig3KTtKcT1IcSgpO01xPWI7THE9MDtpZighWmQoKXx8MDw9UGQoZGUoKSwxMSkpYj1PcSgpO2Vsc2V7Yj1vaSgpO3ZhciBjPWIuX19nb29nbGVfYWRfdXJscztiPWM/YzpiLl9fZ29vZ2xlX2FkX3VybHM9bmV3IEJxfWEuaj1iO2EubD1hLmouc2V0dXBPc2UoYS52KX1yZXR1cm4gYS5qfTtCdC5wcm90b3R5cGUuZ2V0T3NlSWQ9ZnVuY3Rpb24oKXt0aGlzLmx8fCh0aGlzLmw9QXEoMCxfLkRqKDcpKSk7cmV0dXJuIHRoaXMubH07dmFyIER0PTAsRXQ9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgUGY7dGhpcy53YT1hLmouZ2V0VVRDRnVsbFllYXIoKStpZShhLmouZ2V0VVRDTW9udGgoKSsxKStpZShhLmouZ2V0VVRDRGF0ZSgpKTt0aGlzLmo9W107dGhpcy52PU5hTjt0aGlzLkk9XCJqc29uX2h0bWxcIjt0aGlzLkc9XCJmaWZcIjt0aGlzLkVhPTE7dGhpcy5VPVtdO3RoaXMuSmE9dGhpcy5XYT10aGlzLlhhPU5hTjt0aGlzLm89MDt0aGlzLks9dGhpcy5IPXRoaXMuRD1cIlwiO3RoaXMubT1bXTt0aGlzLmw9MDt0aGlzLkM9bmV3IHQuTWFwO3RoaXMuQT1uZXcgdC5NYXB9LEZ0PWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRTbG90SWQoKTtiPWEuQy5nZXQoYyk7Ynx8KGI9d2luZG93PT13aW5kb3cudG9wPygrK0R0KS50b1N0cmluZygzNik6amUoKSxhLkMuc2V0KGMsYiksXy5SKGMsZnVuY3Rpb24oKXthLkMuZGVsZXRlKGMpfSkpO3JldHVybiBifSxHdD1mdW5jdGlvbihhLGIpe3ZhciBjPWIuZ2V0U2xvdElkKCk7YS5BLnNldChjLGIubCk7Xy5SKGMsZnVuY3Rpb24oKXthLkEuZGVsZXRlKGMpfSl9LEh0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuQS5nZXQoYi5nZXRTbG90SWQoKSl8fGIubH07dmFyIEl0PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ITEsZz1mdW5jdGlvbigpeyFmJiYoXy55KDQxMik/ZnAoZSxiKTpiLkQpJiYoYygpLGY9ITApfTsoZD1kJiZhLmNvbnRlbnRXaW5kb3c/Xy5yYSg1KTowKSYmMiE9ZHx8Xy52KGEsXCJsb2FkXCIsZyk7ZCYmYS5jb250ZW50V2luZG93JiZfLnYoYS5jb250ZW50V2luZG93LFwiYW1wLWluaS1sb2FkXCIsZyl9O3ZhciBKdD1udWxsLEt0PSExLEx0PSExLE10PSExLE50PWZ1bmN0aW9uKGEpe2E9dm9pZCAwPT09YT9fLnI6YTtpZighTHQpe3ZhciBiPW5ldyBXayhcImdwdF9wdWJjb25zb2xlX2xvYWRlZFwiKTtsYihiKTtFKGIsXCJwYXJhbVwiLFN0cmluZyhmYihhKSkpO0UoYixcImFwaVwiLFN0cmluZyhNdCkpO1lrKGIsMSk7Yj1cImh0dHBzOlwiK18uRGooMjI4KStcImxvYWRlci5qc1wiO3VnKGEuZG9jdW1lbnQsbGcoYikpO0x0PSEwfX0sT3Q9Ryg5NCxmdW5jdGlvbihhKXthPXZvaWQgMD09PWE/Xy5yOmE7WGIoKS5fcHViY29uc29sZV9kaXNhYmxlX3x8bnVsbCE9PWZiKGEpJiZOdChhKX0pLFB0PWZ1bmN0aW9uKGEsYil7IVhiKCkuX3B1YmNvbnNvbGVfZGlzYWJsZV8mJihhPVFhKFwiZ29vZ2xlX3B1YmNvbnNvbGVcIixhLGIpKSYmKGE9YS5zcGxpdChcInxcIiksMDxhLmxlbmd0aCYmKFwiMVwiPT1hWzBdfHxcIjBcIj09YVswXSkmJk50KCkpfTtcImNvbXBsZXRlXCI9PT1fLnIuZG9jdW1lbnQucmVhZHlTdGF0ZT9PdCgpOnZqKF8ucixmdW5jdGlvbigpe090KCl9KTtXYihcImRpc2FibGVQdWJsaXNoZXJDb25zb2xlXCIsUyg5MyxmdW5jdGlvbigpe1hiKCkuX3B1YmNvbnNvbGVfZGlzYWJsZV89ITB9KSk7V2IoXCJvblB1YkNvbnNvbGVKc0xvYWRcIixTKDczMSxmdW5jdGlvbigpe0t0JiYoWGIoKS5jb25zb2xlLm9wZW5Db25zb2xlKEp0KSxKdD1udWxsLEt0PSExKX0pKTtXYihcIm9wZW5Db25zb2xlXCIsUyg3MzIsZnVuY3Rpb24oYSl7YT12b2lkIDA9PT1hP1wiXCI6YTtNdD0hMDtYYiYmWGIoKS5jb25zb2xlP1hiKCkuY29uc29sZS5vcGVuQ29uc29sZShhKTooYSYmKEp0PWEpLEt0PSEwLE50KCkpfSkpO3ZhciBRdD1mdW5jdGlvbigpe3ZhciBhPWpsLkIoKTt0aGlzLmdldEFsbEV2ZW50cz1TKDU2MyxmdW5jdGlvbigpe3JldHVybiBMdD96aChhLmopLnNsaWNlKCk6W119KTt0aGlzLmdldEV2ZW50c0J5U2xvdD1TKDU2NSxmdW5jdGlvbihiKXtyZXR1cm4gTHQ/a2woYSxiKS5zbGljZSgpOltdfSk7dGhpcy5nZXRFdmVudHNCeUxldmVsPVMoNTY2LGZ1bmN0aW9uKGIpe3JldHVybiBMdD9sbChhLGIpLnNsaWNlKCk6W119KX07Xy5KKFF0LHlqKTt2YXIgUnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWpsLkIoKSxkPVRuLkIoKS5qLGU9V24oVG4uQigpLGEuai5nZXRTbG90RWxlbWVudElkKCkpO3RoaXMuc2V0PVMoODMsZnVuY3Rpb24oZixnKXthLnNldChmLGcpO3JldHVybiBifSk7dGhpcy5nZXQ9Uyg4NCxmdW5jdGlvbihmKXtyZXR1cm4gYS5nZXQoZil9KTt0aGlzLnNldENsaWNrVXJsPVMoNzksZnVuY3Rpb24oZil7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBmKXJldHVybiBjLkoocWwoXCJTbG90LnNldENsaWNrVXJsXCIsW2ZdKSxudWxsLGEuaiksYjtEKGUsNyxmKTtyZXR1cm4gYn0pO3RoaXMuc2V0VGFyZ2V0aW5nPVMoODEsZnVuY3Rpb24oZixnKXtSbihhLmosZSxmLGcsYyk7cmV0dXJuIGJ9KTt0aGlzLnVwZGF0ZVRhcmdldGluZ0Zyb21NYXA9Uyg4NSxmdW5jdGlvbihmKXtTbihhLmosZSxmLGMpO3JldHVybiBifSk7dGhpcy5kaXNwbGF5PVMoNzgsZnVuY3Rpb24oKXtfLnkoNDIzKSYmRChlLDE5LCEwKTt2YXIgZj1LayhkLFZuKCkpO2EuZGlzcGxheShmKX0pO3RoaXMuc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudD1TKDgwLGZ1bmN0aW9uKGYpe2lmKDA9PT1mfHwxPT09Zil7dmFyIGc9VWooZCl8fG5ldyBPajtEKGcsNSxmKTt2ZihkLDI1LGcpfXJldHVybiBifSk7dGhpcy5zZXRGb3JjZVNhZmVGcmFtZT1TKDU2NyxmdW5jdGlvbihmKXtpZihcImJvb2xlYW5cIiE9PXR5cGVvZiBmKXJldHVybiBjLkooZm0oXCJQYXNzYmFja1Nsb3Quc2V0Rm9yY2VTYWZlRnJhbWVcIixTdHJpbmcoZikpLG51bGwsYS5qKSxiO0QoZSwxMixmKTtyZXR1cm4gYn0pO3RoaXMuc2V0VGFnRm9yVW5kZXJBZ2VPZkNvbnNlbnQ9Uyg0NDgsZnVuY3Rpb24oZil7aWYoMD09PWZ8fDE9PT1mKXt2YXIgZz1VaihkKXx8bmV3IE9qO0QoZyw2LGYpO3ZmKGQsMjUsZyl9cmV0dXJuIGJ9KX07Xy5KKFJ0LHlqKTt2YXIgU3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHpqKGMsYil9KS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuISFjfSl9LFR0PWZ1bmN0aW9uKGEpe3ZhciBiPXFwLkIoKSxjPVtdO2E9Xy5GKGEpO2Zvcih2YXIgZD1hLm5leHQoKTshZC5kb25lO2Q9YS5uZXh0KCkpe2Q9ZC52YWx1ZTtiLmw9ZDt2YXIgZT1uaig5KTsxPT09ZS5sZW5ndGgmJihjLnB1c2goZCksYy5wdXNoKGQrXCItXCIrZVswXSkpfXJldHVybiBjfSxVdD1qZChmdW5jdGlvbigpe3JldHVybiBkaChcImdvb2dsZV9EaXNhYmxlSW5pdGlhbExvYWQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBQbGVhc2UgdXNlIGdvb2dsZXRhZy5wdWJhZHMoKS5pc0luaXRpYWxMb2FkRGlzYWJsZWQoKSBpbnN0ZWFkIHRvIGNoZWNrIGlmIGluaXRpYWwgbG9hZCBoYXMgYmVlbiBkaXNhYmxlZC5cIil9KSxWdD1mdW5jdGlvbigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csXCJnb29nbGVfRGlzYWJsZUluaXRpYWxMb2FkXCIse2dldDpmdW5jdGlvbigpe1V0KCk7cmV0dXJuITB9LHNldDpmdW5jdGlvbigpe1V0KCl9LGNvbmZpZ3VyYWJsZTohMH0pfSxjdT1mdW5jdGlvbihhLGIpe2pwLmNhbGwodGhpcyxhKTt2YXIgYz10aGlzLGQ9amwuQigpLGU9VG4uQigpLmosZj1WbigpLGc9ITE7dGhpcy5zZXRUYXJnZXRpbmc9UygxLGZ1bmN0aW9uKGgsayl7dmFyIGw9bnVsbDtcInN0cmluZ1wiPT09dHlwZW9mIGs/bD1ba106QXJyYXkuaXNBcnJheShrKT9sPWs6S2MoaykmJihsPV8uQShBcnJheSxcImZyb21cIikuY2FsbChBcnJheSxrKSk7dmFyIG09XCJzdHJpbmdcIj09PXR5cGVvZiBoJiYhRmQoaCk7bD1fLnkoMTgwKT9sOmwmJmhkKGwpO3ZhciBuPSEhbCYmbC5ldmVyeShmdW5jdGlvbihxKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIHF9KTtpZighbXx8IW4pcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0VGFyZ2V0aW5nXCIsW2gsa10pLGEpLGM7az0oej11ZihlLEpqLDIpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKHEpe3JldHVybiBLaihxKT09PWh9KTtpZihcImdwdC1iZXRhXCI9PT1oKXtpZihhLmopcmV0dXJuIGQuSihCbShsLmpvaW4oKSkpLGM7aWYoaylyZXR1cm4gZC5KKENtKGwuam9pbigpKSksYztsPVR0KGwpfWs/TWooayxsKTooaz1NaihMaihuZXcgSmosaCksbCkseGYoZSwyLGssSmopKTtkLmluZm8ob20oaCxsLmpvaW4oKSxhLlooKSksYSk7cmV0dXJuIGN9KTt0aGlzLmNsZWFyVGFyZ2V0aW5nPVMoMixmdW5jdGlvbihoKXtpZih2b2lkIDA9PT1oKXJldHVybiBUaihlLFtdKSxkLmluZm8oem0oYS5aKCkpLGEpLGM7aWYoXCJncHQtYmV0YVwiPT09aClyZXR1cm4gZC5KKERtKGgpKSxjO3ZhciBrPXVmKGUsSmosMiksbD1fLkEoayxcImZpbmRJbmRleFwiKS5jYWxsKGssZnVuY3Rpb24obSl7cmV0dXJuIEtqKG0pPT09aH0pO2lmKDA+bClyZXR1cm4gZC5KKGxtKGgsYS5aKCkpLGEpLGM7ay5zcGxpY2UobCwxKTtUaihlLGspO2QuaW5mbyhrbShoLGEuWigpKSxhKTtyZXR1cm4gY30pO3RoaXMuZ2V0VGFyZ2V0aW5nPVMoMzgsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBoKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLmdldFRhcmdldGluZ1wiLFtoXSksYSksW107dmFyIGs9KHo9dWYoZSxKaiwyKSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihsKXtyZXR1cm4gS2oobCk9PT1ofSk7cmV0dXJuIGs/QihrLDIpLnNsaWNlKCk6W119KTt0aGlzLmdldFRhcmdldGluZ0tleXM9UygzOSxmdW5jdGlvbigpe3JldHVybiB1ZihlLEpqLDIpLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCl9KX0pO3RoaXMuc2V0Q2F0ZWdvcnlFeGNsdXNpb249UygzLGZ1bmN0aW9uKGgpe2lmKFwic3RyaW5nXCIhPT10eXBlb2YgaHx8RmQoaCkpcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2Uuc2V0Q2F0ZWdvcnlFeGNsdXNpb25cIixbaF0pLGEpLGM7KHo9QihlLDMpLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixoKXx8c2YoZSwzLGgpO2QuaW5mbyhtbShoKSxhKTtyZXR1cm4gY30pO3RoaXMuY2xlYXJDYXRlZ29yeUV4Y2x1c2lvbnM9Uyg0LGZ1bmN0aW9uKCl7RChlLDMsW10pO2QuaW5mbyhubSgpLGEpO3JldHVybiBjfSk7dGhpcy5kaXNhYmxlSW5pdGlhbExvYWQ9Uyg1LGZ1bmN0aW9uKCl7IWEuanx8Xy55KDQxMCk/KEQoZSw0LCEwKSxnfHwoZz0hMCxWdCgpKSk6ZC5KKFlsKFwiZGlzYWJsZUluaXRpYWxMb2FkXCIsXCJwdWJhZHNcIiksYSl9KTt0aGlzLmVuYWJsZVNpbmdsZVJlcXVlc3Q9Uyg2LGZ1bmN0aW9uKCl7aWYoYS5qJiYheChlLDYpKXJldHVybiBkLkooWGwoXCJlbmFibGVTaW5nbGVSZXF1ZXN0XCIpLGEpLCExO2QuaW5mbygkbChcInNpbmdsZSByZXF1ZXN0XCIpLGEpO0QoZSw2LCEwKTtyZXR1cm4hMH0pO3RoaXMuZW5hYmxlQXN5bmNSZW5kZXJpbmc9Uyg3LGZ1bmN0aW9uKCl7cmV0dXJuITB9KTt0aGlzLmVuYWJsZVN5bmNSZW5kZXJpbmc9Uyg4LGZ1bmN0aW9uKCl7ZGgoXCJHUFQgc3luY2hyb25vdXMgcmVuZGVyaW5nIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIGFkcyB3aWxsIGJlIHJlcXVlc3RlZCBhbmQgcmVuZGVyZWQgYXN5bmNocm9ub3VzbHkuIFNlZSBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9hZG1hbmFnZXIvYW5zd2VyLzkyMTI1OTQgZm9yIG1vcmUgZGV0YWlscy5cIik7cmV0dXJuITF9KTt0aGlzLmVuYWJsZUxhenlMb2FkPVMoNDg1LGZ1bmN0aW9uKGgpe3ZhciBrPW5ldyBOajtEKGssMSw4MDApO0QoaywyLDQwMCk7RChrLDMsMyk7aWYoXy5NYyhoKSl7dmFyIGw9aC5mZXRjaE1hcmdpblBlcmNlbnQ7XCJudW1iZXJcIj09PXR5cGVvZiBsJiYoMDw9bD9EKGssMSxsKTotMT09bCYmRChrLDEsdm9pZCAwKSk7bD1oLnJlbmRlck1hcmdpblBlcmNlbnQ7XCJudW1iZXJcIj09PXR5cGVvZiBsJiYoMDw9bD9EKGssMixsKTotMT09bCYmRChrLDIsdm9pZCAwKSk7aD1oLm1vYmlsZVNjYWxpbmc7XCJudW1iZXJcIj09PXR5cGVvZiBoJiYoMDxoP0QoaywzLGgpOi0xPT1oJiZEKGssMywxKSl9dmYoZSw1LGspfSk7dGhpcy5zZXRDZW50ZXJpbmc9Uyg5LGZ1bmN0aW9uKGgpe2g9ISFoO2QuaW5mbyhhbShcImNlbnRlcmluZ1wiLFN0cmluZyhoKSksYSk7RChlLDE1LGgpfSk7dGhpcy5kZWZpbmVQYXNzYmFjaz1TKDEwLGZ1bmN0aW9uKGgsayl7cmV0dXJuKGg9V3QoYSxoLGspLnNsb3QpJiZnbChoKX0pO3RoaXMucmVmcmVzaD1TKDExLGZ1bmN0aW9uKGgsayl7az12b2lkIDA9PT1rP3t9Oms7aCYmIUFycmF5LmlzQXJyYXkoaCl8fCFfLk1jKGspfHxrLmNoYW5nZUNvcnJlbGF0b3ImJlwiYm9vbGVhblwiIT09dHlwZW9mIGsuY2hhbmdlQ29ycmVsYXRvcj9kLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnJlZnJlc2hcIixbaCxrXS5maWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJuIHZvaWQgMCE9PWx9KSksYSk6KGsmJjA9PWsuY2hhbmdlQ29ycmVsYXRvcnx8RChlLDI2LE5rKCkpLGg9aD9TdChoLGIpOmEubCxYdChhLEtrKGUsZiksaCkpfSk7dGhpcy5lbmFibGVWaWRlb0Fkcz1TKDEyLGZ1bmN0aW9uKCl7RChlLDIxLCEwKTtZdChhLGUpfSk7dGhpcy5zZXRWaWRlb0NvbnRlbnQ9UygxMyxmdW5jdGlvbihoLGspe0QoZSwyMSwhMCk7RChlLDIyLFN0cmluZyhofHxcIlwiKSk7RChlLDIzLFN0cmluZyhrfHxcIlwiKSk7WXQoYSxlKX0pO3RoaXMuY29sbGFwc2VFbXB0eURpdnM9UygxNCxmdW5jdGlvbihoKXtoPXZvaWQgMD09PWg/ITE6aDt4KGUsMTEpP2QuSihpbSgpLGEpOmEuaj9kLkooWGwoXCJjb2xsYXBzZUVtcHR5RGl2c1wiKSxhKTooaCYmRChlLDEwLCEwKSxrYihcImdwdF9jZWRcIixmdW5jdGlvbihrKXtFKGssXCJzY1wiLGg/XCJ0XCI6XCJmXCIpO0UoayxcImxldmVsXCIsXCJwYWdlXCIpO2xiKGspfSksZC5pbmZvKGhtKFN0cmluZyghIWgpKSxhKSxEKGUsMTEsITApKTtyZXR1cm4hIXgoZSwxMSl9KTt0aGlzLmNsZWFyPVMoMTUsZnVuY3Rpb24oaCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoaCk/KGg9U3QoaCxiKSxadChhLGUsZixoKSk6WnQoYSxlLGYsaCl9KTt0aGlzLnNldExvY2F0aW9uPVMoMTYsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBoKXJldHVybiBkLkooZ20oXCJBZGRyZXNzXCIpKSxjO0QoZSw4LGgpO3JldHVybiBjfSk7dGhpcy5zZXRDb29raWVPcHRpb25zPVMoMTcsZnVuY3Rpb24oaCl7aWYoMCE9PWgmJjEhPT1oKXJldHVybiBkLkooV2woU3RyaW5nKGgpKSxhKSxjO0QoZSwyNCxoKTtyZXR1cm4gY30pO3RoaXMuc2V0VGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudD1TKDE4LGZ1bmN0aW9uKGgpe2lmKDEhPT1oJiYwIT09aClyZXR1cm4gZC5KKHBtKFN0cmluZyhoKSksYSksYzt2YXIgaz1VaihlKXx8bmV3IE9qO0Qoayw1LGgpO3ZmKGUsMjUsayk7cmV0dXJuIGN9KTt0aGlzLmNsZWFyVGFnRm9yQ2hpbGREaXJlY3RlZFRyZWF0bWVudD1TKDE5LGZ1bmN0aW9uKCl7dmFyIGg9VWooZSk7aWYoIWgpcmV0dXJuIGM7RChoLDUsdm9pZCAwKTt2ZihlLDI1LGgpO3JldHVybiBjfSk7dGhpcy5zZXRQdWJsaXNoZXJQcm92aWRlZElkPVMoMjAsZnVuY3Rpb24oaCl7aD1TdHJpbmcoaCk7YS5qP2QuSihabChcInNldFB1Ymxpc2hlclByb3ZpZGVkSWRcIixoKSxhKTooZC5pbmZvKGFtKFwiUFBJRFwiLGgpLGEpLEQoZSwxNixoKSk7cmV0dXJuIGN9KTt0aGlzLnNldD1TKDIxLGZ1bmN0aW9uKGgsayl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBofHwhaC5sZW5ndGh8fHZvaWQgMD09PVFuKClbaF18fFwic3RyaW5nXCIhPT10eXBlb2YgaylyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5zZXRcIixbaCxrXSksYSksYzt2YXIgbD0oej11ZihlLEpqLDE0KSxfLkEoeixcImZpbmRcIikpLmNhbGwoeixmdW5jdGlvbihtKXtyZXR1cm4gS2oobSk9PT1ofSk7bD9NaihsLFtrXSk6KGw9TGoobmV3IEpqLGgpLHNmKGwsMixrKSx4ZihlLDE0LGwsSmopKTtkLmluZm8oS2woaCxTdHJpbmcoayksYS5aKCkpLGEpO3JldHVybiBjfSk7dGhpcy5nZXQ9UygyMixmdW5jdGlvbihoKXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGgpcmV0dXJuIGQuSihxbChcIlB1YkFkc1NlcnZpY2UuZ2V0XCIsW2hdKSxhKSxudWxsO3ZhciBrPSh6PXVmKGUsSmosMTQpLF8uQSh6LFwiZmluZFwiKSkuY2FsbCh6LGZ1bmN0aW9uKGwpe3JldHVybiBLaihsKT09PWh9KTtyZXR1cm4oaz1rJiZCKGssMikpP2tbMF06bnVsbH0pO3RoaXMuZ2V0QXR0cmlidXRlS2V5cz1TKDIzLGZ1bmN0aW9uKCl7cmV0dXJuIHVmKGUsSmosMTQpLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gS2ooaCl9KX0pO3RoaXMuZGlzcGxheT1TKDI0LGZ1bmN0aW9uKGgsayxsLG0pe3JldHVybiB2b2lkIGEuZGlzcGxheShoLGssdm9pZCAwPT09bD9cIlwiOmwsdm9pZCAwPT09bT9cIlwiOm0pfSk7dGhpcy51cGRhdGVDb3JyZWxhdG9yPVMoMjUsZnVuY3Rpb24oKXtkaCh1aihcInVwZGF0ZVwiKSk7ZC5KKEptKCksYSk7RChlLDI2LE5rKCkpO3JldHVybiBjfSk7dGhpcy5kZWZpbmVPdXRPZlBhZ2VQYXNzYmFjaz1TKDM1LGZ1bmN0aW9uKGgpe3ZhciBrPVd0KGEsaCxbMSwxXSk7aD1rLnNsb3Q7KGs9ay5GYSkmJkQoaywxNSwxKTtyZXR1cm4gaCYmZ2woaCl9KTt0aGlzLnNldEZvcmNlU2FmZUZyYW1lPVMoMzYsZnVuY3Rpb24oaCl7aWYoXCJib29sZWFuXCIhPT10eXBlb2YgaClyZXR1cm4gZC5KKGZtKFN0cmluZyhoKSksYSksYztEKGUsMTMsaCk7cmV0dXJuIGN9KTt0aGlzLnNldFNhZmVGcmFtZUNvbmZpZz1TKDM3LGZ1bmN0aW9uKGgpe3ZhciBrPWFvKGgpO2lmKCFrKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldFNhZmVGcmFtZUNvbmZpZ1wiLFtoXSksYSksYzt2ZihlLDE4LGspO3JldHVybiBjfSk7dGhpcy5zZXRSZXF1ZXN0Tm9uUGVyc29uYWxpemVkQWRzPVMoNDQ1LGZ1bmN0aW9uKGgpe2lmKDAhPT1oJiYxIT09aClhLmxvZy5KKEVtKFN0cmluZyhoKSksYSk7ZWxzZSBpZihfLnkoMzczKSl7dmFyIGs9VG4uQigpLmo7aWYoIVVqKGspKXt2YXIgbD1uZXcgT2o7dmYoaywyNSxsKX1rPVVqKGspO0Qoayw4LCEhaCl9ZWxzZSBpZihoKXtpZigoaD1oYSgpKSYmaC5mcmFtZXMmJiFoLmZyYW1lcy5Hb29nbGVTZXROUEEpdHJ5e2s9aC5kb2N1bWVudDtsPW5ldyBVZihrKTt2YXIgbT1rLmJvZHl8fGsuaGVhZCYmay5oZWFkLnBhcmVudEVsZW1lbnQ7aWYobSl7dmFyIG49amcobCxcIklGUkFNRVwiKTtuLm5hbWU9XCJHb29nbGVTZXROUEFcIjtuLmlkPVwiR29vZ2xlU2V0TlBBXCI7bi5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwiZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6LTk5OXB4O3RvcDotOTk5cHg7d2lkdGg6MHB4O2hlaWdodDowcHg7XCIpO20uYXBwZW5kQ2hpbGQobil9fWNhdGNoKHEpe319ZWxzZShoPWhhKCkuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJHb29nbGVTZXROUEFcIikpJiZoLnBhcmVudE5vZGUmJmgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKTtyZXR1cm4gY30pO3RoaXMuc2V0VGFnRm9yVW5kZXJBZ2VPZkNvbnNlbnQ9Uyg0NDcsZnVuY3Rpb24oaCl7aD12b2lkIDA9PT1oPzI6aDtpZigyIT09aCYmMCE9PWgmJjEhPT1oKXJldHVybiBkLkooRm0oU3RyaW5nKGgpKSxhKSxjO3ZhciBrPVVqKGUpfHxuZXcgT2o7RChrLDYsaCk7dmYoZSwyNSxrKTtyZXR1cm4gY30pO3RoaXMuZ2V0Q29ycmVsYXRvcj1TKDI3LGZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyhCKGUsMjYpKX0pO3RoaXMuZ2V0VGFnU2Vzc2lvbkNvcnJlbGF0b3I9Uyg2MzEsZnVuY3Rpb24oKXtyZXR1cm4gJHQoKS5PfSk7dGhpcy5nZXRWaWRlb0NvbnRlbnQ9UygzMCxmdW5jdGlvbigpe3JldHVybiBhdShhLGUpfSk7dGhpcy5nZXRWZXJzaW9uPVMoNTY4LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0VmVyc2lvbigpfSk7dGhpcy5mb3JjZUV4cGVyaW1lbnQ9Uyg1NjksZnVuY3Rpb24oaCl7aD1wYXJzZUludChoLDEwKTswPGgmJm1qKGgpfSk7dGhpcy5zZXRDb3JyZWxhdG9yPVMoMjgsZnVuY3Rpb24oaCl7ZGgodWooXCJzZXRcIikpO2QuSihJbSgpLGEpO2lmKHlpKHdpbmRvdykpcmV0dXJuIGM7aWYoIWtoKGgpKXJldHVybiBkLkoodG0oU3RyaW5nKGgpKSxhKSxjO0QoZSwyNixoKTtEKGUsMjcsITApO3JldHVybiBjfSk7dGhpcy5tYXJrQXNBbXA9Uyg1NzAsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBidShhKX0pO3RoaXMuaXNTUkE9Uyg1NzEsZnVuY3Rpb24oKXtyZXR1cm4hIXgoZSw2KX0pO3RoaXMuc2V0SW1hQ29udGVudD1TKDMyOCxmdW5jdGlvbihoLGspe251bGwhPUIoZSwyMik/KEQoZSwyMSwhMCksRChlLDIyLFN0cmluZyhofHxcIlwiKSksRChlLDIzLFN0cmluZyhrfHxcIlwiKSksWXQoYSxlKSk6KEQoZSwyMSwhMCksWXQoYSxlKSxcInN0cmluZ1wiPT09dHlwZW9mIGgmJkQoZSwxOSxoKSxcInN0cmluZ1wiPT09dHlwZW9mIGsmJkQoZSwyMCxrKSl9KTt0aGlzLmdldEltYUNvbnRlbnQ9UygzMjksZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9QihlLDIyKT9hdShhLGUpOmEuaj97dmlkOkIoZSwxOSl8fFwiXCIsY21zaWQ6QihlLDIwKXx8XCJcIn06bnVsbH0pO3RoaXMuaXNJbml0aWFsTG9hZERpc2FibGVkPVMoNTcyLGZ1bmN0aW9uKCl7cmV0dXJuISF4KGUsNCl9KTt0aGlzLmFkZFN1cHBvcnRpbmdVcmw9Uyg2MzQsZnVuY3Rpb24oaCl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBofHwhaC5tYXRjaChfLm5nKVsxXSlyZXR1cm4gZC5KKHFsKFwiUHViQWRzU2VydmljZS5hZGRTdXBwb3J0aW5nVXJsXCIsW2hdKSxhKSxjOyh6PUIoZSw3KSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosaCl8fHNmKGUsNyxoKTtyZXR1cm4gY30pO3RoaXMuc2V0UHJpdmFjeVNldHRpbmdzPVMoNjQ4LGZ1bmN0aW9uKGgpe2lmKCFfLk1jKGgpKXJldHVybiBkLkoocWwoXCJQdWJBZHNTZXJ2aWNlLnNldFByaXZhY3lTZXR0aW5nc1wiLFtoXSksYSksYzt2YXIgaz1VaihlKXx8bmV3IE9qLGw9aC5yZXN0cmljdERhdGFQcm9jZXNzaW5nLG09aC5jaGlsZERpcmVjdGVkVHJlYXRtZW50LG49aC51bmRlckFnZU9mQ29uc2VudDtoPWgubGltaXRlZEFkcztcImJvb2xlYW5cIj09PXR5cGVvZiBsP0QoaywxLGwpOnZvaWQgMCE9PWwmJmQuSihmbShTdHJpbmcobCkpLGEpO18ueSgzOTcpfHwoXCJib29sZWFuXCI9PT10eXBlb2YgaD9EKGssOSxoKTp2b2lkIDAhPT1oJiZkLkooZm0oU3RyaW5nKGgpKSxhKSk7dm9pZCAwIT09biYmKG51bGw9PT1uP0Qoayw2LDIpOiExPT09bj9EKGssNiwwKTohMD09PW4/RChrLDYsMSk6ZC5KKEZtKFN0cmluZyhuKSksYSkpO3ZvaWQgMCE9PW0mJihudWxsPT09bT9EKGssNSx2b2lkIDApOiExPT09bT9EKGssNSwwKTohMD09PW0/RChrLDUsMSk6ZC5KKHBtKFN0cmluZyhtKSksYSkpO3ZmKGUsMjUsayk7cmV0dXJuIGN9KX07Xy5KKGN1LGpwKTt2YXIgZHU9ZnVuY3Rpb24oYSxiKXthOntiPWJbMF07YT1hWzBdO2Zvcih2YXIgYz1kZCxkPU1hdGgubWluKGIubGVuZ3RoLGEubGVuZ3RoKSxlPTA7ZTxkO2UrKyl7dmFyIGY9YyhiW2VdLGFbZV0pO2lmKDAhPWYpe2I9ZjticmVhayBhfX1iPWRkKGIubGVuZ3RoLGEubGVuZ3RoKX1yZXR1cm4gYn0sZXU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9W10sYz0hMSxkPWpsLkIoKTt0aGlzLmFkZFNpemU9Ryg4OCxmdW5jdGlvbihlLGYpe3ZhciBnOyhnPSFpayhlKSl8fChnPSEoaGsoZil8fEFycmF5LmlzQXJyYXkoZikmJmYuZXZlcnkoaGspKSk7aWYoZylyZXR1cm4gYz0hMCxkLkoocWwoXCJTaXplTWFwcGluZ0J1aWxkZXIuYWRkU2l6ZVwiLFtlLGZdKSksYTtiLnB1c2goW2UsZl0pO3JldHVybiBhfSk7dGhpcy5idWlsZD1HKDg5LGZ1bmN0aW9uKCl7aWYoYylyZXR1cm4gZC5KKElsKCkpLG51bGw7ZWQoYixkdSk7cmV0dXJuIGJ9KX07dmFyIGZ1PWZ1bmN0aW9uKCl7dGhpcy5lcnJvck1lc3NhZ2U9dGhpcy5pbmZvPXRoaXMuZXJyb3I9dGhpcy5JYT1udWxsfSxndT1mdW5jdGlvbihhLGIpe2EuSWE9YjtyZXR1cm4gYX07ZnUucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3J9O3ZhciBodT1mdW5jdGlvbihhLGIpe2EuZXJyb3JNZXNzYWdlPWI7cmV0dXJuIGF9LGl1PWZ1bmN0aW9uKCl7dGhpcy5jYWNoZT17fX0saGI9ZnVuY3Rpb24oKXtqdXx8KGt1PV8ucmEoMzgsa3UpLGx1PV8ucmEoMzksbHUpLGp1PW5ldyBpdSk7cmV0dXJuIGp1fSxtdT1mdW5jdGlvbihhKXt2YXIgYj1CKGEsMyk7aWYoIWIpcmV0dXJuIDM7aWYoIUIoYSwyKSlyZXR1cm4gNDthPW5ldyBQZjt2YXIgYz1RZihiKTtjLmFkZChuZXcgTGYobHUpKTtpZihhLmdldFRpbWUoKT5jLmdldFRpbWUoKSlyZXR1cm4gMjtiPVFmKGIpO2IuYWRkKG5ldyBMZihrdSkpO3JldHVybiBhLmdldFRpbWUoKT5iLmdldFRpbWUoKT8xOjB9O2l1LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGZ1O2lmKHRoaXMuY2FjaGVbYV0pcmV0dXJuIGd1KGIsdGhpcy5jYWNoZVthXSk7dmFyIGM9XCJcIjt0cnl7Yz13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJfR0VTUFNLLVwiK2EpfWNhdGNoKGQpe3JldHVybiBiLmVycm9yPTYsaHUoYixkLm1lc3NhZ2UpfWlmKCFjKXJldHVybiBuZXcgZnU7Yj1udWxsO3RyeXtiPXpmKGtxLGMpfWNhdGNoKGQpe3JldHVybiBhPW5ldyBmdSxhLmVycm9yPTUsaHUoYSxkLm1lc3NhZ2UpfWImJih0aGlzLmNhY2hlW2FdPWIpO3JldHVybiBndShuZXcgZnUsYil9O2l1LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSl7bnEoYSk7dmFyIGI9QihhLDEpfHxcIlwiLGM9XCJfR0VTUFNLLVwiK2IsZD1ndShuZXcgZnUsYSk7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShjLGEubSgpKX1jYXRjaChlKXtkLmluZm89NyxodShkLGUubWVzc2FnZSl9dGhpcy5jYWNoZVtiXT1hO3JldHVybiBkfTt2YXIganU9bnVsbCxrdT0yNCxsdT03Mjt2YXIgbnU9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0xMDA7YSYmYSE9YiYmLS1kOylfLlhnKGEsYyksYT1hLnBhcmVudEVsZW1lbnR9LG91PWZ1bmN0aW9uKGEsYixjLGQsZSl7Xy5YZyhhLHtcIm1hcmdpbi1sZWZ0XCI6XCIwcHhcIixcIm1hcmdpbi1yaWdodFwiOlwiMHB4XCJ9KTt2YXIgZj17XCJ6LWluZGV4XCI6U3RyaW5nKF8ucmEoMzIsNSkpfTtcImFic29sdXRlXCIhPT1kLnBvc2l0aW9uJiZcImZpeGVkXCIhPT1kLnBvc2l0aW9uJiZcInJlbGF0aXZlXCIhPT1kLnBvc2l0aW9uJiYoZi5wb3NpdGlvbj1cInJlbGF0aXZlXCIpO3ZhciBnPVwicnRsXCI9PWQuZGlyZWN0aW9uLGg9KChlJiYtMTIyNDU5MzMhPT1lLndpZHRoP2Uud2lkdGg6Yi5pbm5lcldpZHRoKS1jKS8yO2Q9ZnVuY3Rpb24oKXt2YXIgaz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7cmV0dXJuIGc/aC1rOmstaH07Yj1kKCk7MCE9PWImJihjPWZ1bmN0aW9uKGspe2c/ZltcIm1hcmdpbi1yaWdodFwiXT1rK1wicHhcIjpmW1wibWFyZ2luLWxlZnRcIl09aytcInB4XCJ9LGMoLWIpLF8uWGcoYSxmKSxkPWQoKSwwIT09ZCYmYiE9PWQmJihjKGIvKGQtYikqYiksXy5YZyhhLGYpKSk7cmV0dXJuITB9LHF1PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1iLnNsb3QsaD1TYihiLmNhKTtfLnIuc2V0VGltZW91dChHKDQ1OSxmdW5jdGlvbigpe3JldHVybiBwdShhLGcsYyxkLGUsaCxmKX0pLDUwMCl9LHB1PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe2lmKF8uci5JbnRlcnNlY3Rpb25PYnNlcnZlcil7dmFyIGg9bnVsbCxrPXVvKGIsYSl8fHBhKGIsYSksbD1HKDQ1OSxmdW5jdGlvbihtKXtpZihtPW0mJm1bMF0pe3ZhciBuPW0uYm91bmRpbmdDbGllbnRSZWN0LHE9d2luZG93LmlubmVyV2lkdGgsdz1NYXRoLnJvdW5kKG4ubGVmdCksdT1NYXRoLnJvdW5kKG4ucmlnaHQpLEM9MD53KzIsUT0wPHUtKHErMik7aWYobS5pbnRlcnNlY3Rpb25SYXRpbz49MS0oKDA8PU1hdGgucm91bmQobi5sZWZ0KT8wOjIpKyhNYXRoLnJvdW5kKG4ucmlnaHQpPD13aW5kb3cuaW5uZXJXaWR0aD8wOjIpKS9kfHxDfHxRKWtiKGcsZnVuY3Rpb24oTil7aWYoQ3x8USl7dmFyIEg9bmV3IFhxO0guc2V0KDgpO3J1KGspJiZILnNldCgxMCk7SD1ZcShIKX1lbHNlIEg9c3UoYSxiKTt2YXIgcWE9dHUoYixrLGUpLG9iPXFhLmRkO3FhPXFhLmZkO2xiKE4pO0UoTixcInFpZFwiLGVvKGIpKTtFKE4sXCJpdVwiLGIuZ2V0QWRVbml0UGF0aCgpKTtFKE4sXCJlXCIsU3RyaW5nKEgpKTtDJiZFKE4sXCJvZmxcIixTdHJpbmcodykpO1EmJkUoTixcIm9mclwiLFN0cmluZyh1LXEpKTtFKE4sXCJyZXRcIixkK1wieFwiK2UpO0UoTixcInJlcVwiLGYpO0UoTixcImJtXCIsU3RyaW5nKGMpKTtFKE4sXCJlZmhcIixOdW1iZXIob2IpKTtFKE4sXCJzdGtcIixOdW1iZXIocWEpKTtFKE4sXCJpZmlcIixyaSh3aW5kb3cpKTtfLnkoNjApJiZFKE4sXCJpc2NcIiwxKX0se3ZhOl8ucmEoNyl9KSxoJiZoLnVub2JzZXJ2ZShrKX19KTtrJiYoaD1uZXcgXy5yLkludGVyc2VjdGlvbk9ic2VydmVyKGwse3RocmVzaG9sZDpbMV19KSxoLm9ic2VydmUoaykpfX0sc3U9ZnVuY3Rpb24oYSxiKXt2YXIgYz11byhiLGEpfHxwYShiLGEpLGQ9bmV3IFhxO3RyeXt2YXIgZT1mdW5jdGlvbihILHFhKXtyZXR1cm4gYS5lbGVtZW50c0Zyb21Qb2ludChILHFhKX0sZj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9Zi5sZWZ0LGg9Zi50b3Asaz1mLndpZHRoLGw9Zi5oZWlnaHQsbT13YShwYShiLGEpLHdpbmRvdyk7aWYoXCJoaWRkZW5cIj09bS52aXNpYmlsaXR5fHxcIm5vbmVcIj09bS5kaXNwbGF5KXJldHVybiBZcShkKTt2YXIgbj1wYXJzZUludChtW1wiYm9yZGVyLXRvcC13aWR0aFwiXXx8MCwxMCkrMTtiPWcraztsPWgrbDt2YXIgcT1lKGcrbisyLGgrbik7dmFyIHc9ZShiLW4tMixoK24pO3ZhciB1PWUoYi1uLTIsbC1uKTt2YXIgQz1lKGcrbisyLGwtbik7dmFyIFE9ZShiLzIsbC1uKX1jYXRjaChIKXtyZXR1cm4gZC5zZXQoMSksWXEoZCl9aWYoIShxJiZxLmxlbmd0aCYmdyYmdy5sZW5ndGgmJnUmJnUubGVuZ3RoJiZDJiZDLmxlbmd0aCYmUSYmUS5sZW5ndGgpKXJldHVybiBkLnNldCg3KSxZcShkKTtlPWZ1bmN0aW9uKEgscWEpe2Zvcih2YXIgb2I9ITEsd2M9MDt3YzxILmxlbmd0aDt3YysrKXt2YXIgeGM9SFt3Y107aWYob2Ipe3ZhciBvaD13YSh4Yyx3aW5kb3cpO2lmKFwiaGlkZGVuXCIhPW9oLnZpc2liaWxpdHkmJiEkZyh4YykmJiFOKGMseGMpKXtkLnNldChxYSk7XCJhYnNvbHV0ZVwiPT1vaC5wb3NpdGlvbiYmZC5zZXQoMTEpO2JyZWFrfX1lbHNlIGM9PXhjJiYob2I9ITApfX07YWgoYykmJmQuc2V0KDkpO3ZhciBOPWZ1bmN0aW9uKEgscWEpe3JldHVybiBTZyhILHFhKXx8U2cocWEsSCl9O2c9cVswXTtjPT1nfHxOKGMsZyl8fCRnKGcpfHxkLnNldCgyKTtnPXdbMF07Yz09Z3x8TihjLGcpfHwkZyhnKXx8ZC5zZXQoMyk7Zz11WzBdO2M9PWd8fE4oYyxnKXx8JGcoZyl8fGQuc2V0KDQpO2c9Q1swXTtjPT1nfHxOKGMsZyl8fCRnKGcpfHxkLnNldCg1KTtpZigkZyhjKSlyZXR1cm4gWXEoZCk7ZShxLDEyKTtlKHcsMTMpO2UodSwxNCk7ZShDLDE1KTtlKFEsNik7cmV0dXJuIFlxKGQpfSxydT1mdW5jdGlvbihhKXt2YXIgYj0hMSxjPSExLGQ9ITE7cmV0dXJuIFpnKGEsZnVuY3Rpb24oZSl7XCJub3dyYXBcIj09ZS53aGl0ZVNwYWNlJiYoZD0hMCk7aWYoXCJzY3JvbGxcIj09ZS5vdmVyZmxvd1h8fFwiYXV0b1wiPT1lLm92ZXJmbG93WCljPSEwO1wiZmxleFwiPT1lLmRpc3BsYXkmJihiPSEwKTtyZXR1cm4gYiYmYyYmZH0pfSx1dT1mdW5jdGlvbihhLGIpe3JldHVybiBhJiYoYT1PKGEsVmosMSkpP0IoYSwxKXx8Yi5pbm5lcldpZHRoOjB9LHZ1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJihhPU8oYSxWaiwxKSk/QihhLDIpfHxiLmlubmVySGVpZ2h0OjB9LHd1PWZ1bmN0aW9uKGEpe3JldHVybiBhJiYoYT1PKGEsVmosMikpP0IoYSwxKXx8MDowfSx4dT1mdW5jdGlvbihhKXtyZXR1cm4gYSYmKGE9TyhhLFZqLDIpKT9CKGEsMil8fDA6MH0sdHU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPShhPXBhKGEpKSYmd2EoYSx3aW5kb3cpLGU9ZD9cImFic29sdXRlXCIhPWQucG9zaXRpb246ITAsZj0hMSxnPWEmJmEucGFyZW50RWxlbWVudCxoPSExO1lnKGIsZnVuY3Rpb24oayl7dmFyIGw9ay5zdHlsZTtpZihlKWlmKGh8fChoPWs9PWcpKWU9U3EoayxfLnIsITAsLTEsLTEpO2Vsc2V7bD1sJiZsLmhlaWdodDt2YXIgbT0obCYmXy5BKGwsXCJlbmRzV2l0aFwiKS5jYWxsKGwsXCJweFwiKSYmcGFyc2VJbnQobCwxMCl8fDApPj1jOyFsfHxtfHxcInN0cmluZ1wiPT09dHlwZW9mIGwmJl8uQShQcSxcImluY2x1ZGVzXCIpLmNhbGwoUHEsbCl8fChlPSExKX1mfHwoaz13YShrLF8uciksXCJzdGlja3lcIiE9ay5wb3NpdGlvbiYmXCJmaXhlZFwiIT1rLnBvc2l0aW9uKXx8KGY9ITApO3JldHVybiEoZiYmIWUpfSwxMDApO3JldHVybntkZDplLGZkOmZ9fSx5dT1mdW5jdGlvbihhKXt2YXIgYj1hLnNsb3Q7KHo9eGEoYS5jYSksXy5BKHosXCJpbmNsdWRlc1wiKSkuY2FsbCh6LFwiZmx1aWRcIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtrYihcImdwdF9mbHVpZF9zelwiLGZ1bmN0aW9uKGMpe3ZhciBkPXVvKGIsZG9jdW1lbnQpO2Q9ZD9uaShkKTpudWxsO0UoYyxcInN6XCIsZD9kLndpZHRoK1wieFwiK2QuaGVpZ2h0OlwibnVsbFwiKTtFKGMsXCJxcWlkXCIsZW8oYikpfSl9LDI1MCl9O3ZhciBZPWZ1bmN0aW9uKCl7S3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkooWSxLcik7dmFyIE1yPWZ1bmN0aW9uKGEsYil7YmwoYS5pZCgpLGIpO3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoYil9LHp1PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9bnVsbCxnPUcoYixlKTtfLnYoYyxkLGcpJiYoZj1mdW5jdGlvbigpe3JldHVybiBfLnFiKGMsZCxnKX0sXy5SKGEsZikpO3JldHVybiBmfSxBdT1mdW5jdGlvbihhLGIsYyxkKXtkPXZvaWQgMD09PWQ/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZDtiPW5ldyBCaChiLGMsRyhhLmlkKCksZCkpO18ud2goYSxiKTtyZXR1cm4gYn07dmFyIHRiPWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVYodGhpcyxhKX07Xy5KKHRiLFkpO3RiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubS52YWx1ZSxiPXt9LGM9aGIoKSxkPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxhKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe2U9ZS52YWx1ZTt2YXIgZj1hW2VdLGc9Yy5nZXQoZSk7aWYoZy5nZXRFcnJvcigpKWliKGcuZ2V0RXJyb3IoKSxlLGcuZXJyb3JNZXNzYWdlKTtlbHNleyhnPWcuSWEpfHwoZz1uZXcga3EsZz1EKGcsMSxlKSxnPUQoZyw0LDApLGc9RChnLDUsMCksZz1EKGcsNiwwKSxnPW5xKGcpKTthOntpZigoQihnLDQpfHwwKT49Xy5yYSg0MCkpe3ZhciBoPUIoZyw2KXx8MDt2YXIgaz1NYXRoLnBvdygyLGgpLGw9QihnLDUpfHwwO2lmKGw+PWspRChnLDUsMCksRChnLDQsMCksRChnLDYsaCsxKTtlbHNle0QoZyw1LGwrMSk7aD0hMDticmVhayBhfX1oPSExfWh8fCh6PV8ucmooMTApLF8uQSh6LFwiaW5jbHVkZXNcIikpLmNhbGwoeixlKXx8KGJbZV09e1BiOmYsSWE6Z30pfX1VKHRoaXMuRixiKX07dGIucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY1NX07dmFyIHViPWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLkE9dGhpcy5sKCk7dGhpcy5tPXRoaXMubCgpO3RoaXMuQz1WKHRoaXMsYSl9O18uSih1YixZKTt1Yi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9e30sYz1bXSxkPXRoaXMuQy52YWx1ZSxlPV8uRihfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Y9Zi52YWx1ZTt2YXIgZz1kW2ZdLGg9Zy5QYjtnPWcuSWE7dmFyIGs9bXUoZyk7c3dpdGNoKGspe2Nhc2UgMDpjLnB1c2godC5Qcm9taXNlLnJlc29sdmUoZykpO2JyZWFrO2Nhc2UgMTpiW2ZdPXtJYTpnLFBiOmh9O2MucHVzaCh0LlByb21pc2UucmVzb2x2ZShnKSk7YnJlYWs7Y2FzZSAzOmNhc2UgMjpjYXNlIDQ6Mz09PWsmJmpiKDksZiksZy4kYihudWxsKSxjLnB1c2goQnUoZixnLGgpKX19VSh0aGlzLm0sYik7dC5Qcm9taXNlLmFsbChjKS50aGVuKGZ1bmN0aW9uKGwpe3ZhciBtPXt9O2wuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcT1CKG4sMik7cSYmKG1bQihuLDEpXT1xKX0pO1UoYS5BLG0pfSl9O3ZhciBCdT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5yYSgzMyksZT0obmV3IFBmKS5nZXRUaW1lKCksZj0zO3JldHVybiB0LlByb21pc2UucmFjZShbcGIoZCksYy50aGVuKGZ1bmN0aW9uKGcpe2Y9MjtyZXR1cm4gdC5Qcm9taXNlLnJhY2UoW3BiKGQtKGUtKG5ldyBQZikuZ2V0VGltZSgpKSksbmIoYSxiLGcsZnVuY3Rpb24oKXtyZXR1cm4gZj1udWxsfSldKX0pXSkudGhlbihmdW5jdGlvbigpe2YmJmpiKGYsYSk7cmV0dXJuIGJ9KX07dWIucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY1OH07dmFyIHNiPWZ1bmN0aW9uKCl7WS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5GPXRoaXMubCgpfTtfLkooc2IsWSk7c2IucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT17fSxiPVhiKCkmJlhiKCkuZW5jcnlwdGVkU2lnbmFsU291cmNlfHx7fTtfLkEoT2JqZWN0LFwia2V5c1wiKS5jYWxsKE9iamVjdCxiKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2FbZ109dC5Qcm9taXNlLnJlc29sdmUoYltnXSl9KTtmb3IodmFyIGM9d2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRbZGF0YS1lbmNyeXB0ZWQtc2lnbmFsLXNvdXJjZS1pZF1cIiksZD17fSxlPTA7ZTxjLmxlbmd0aDtkPXtLYTpkLkthfSxlKyspe3ZhciBmPWNbZV07ZC5LYT1mLmdldEF0dHJpYnV0ZShcImRhdGEtZW5jcnlwdGVkLXNpZ25hbC1zb3VyY2UtaWRcIik7YVtkLkthXT1hW2QuS2FdfHxyYihmLGZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlvbigpe2lmKGJbZy5LYV0pcmV0dXJuIGJbZy5LYV07aWIoMCxnLkthKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5Qcm9taXNlLnJlc29sdmUobnVsbCl9fX0oZCkpfVUodGhpcy5GLGEpfTtzYi5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjUwfTt2YXIgdmI9ZnVuY3Rpb24oYSl7WS5jYWxsKHRoaXMpO3RoaXMubT1WKHRoaXMsYSl9O18uSih2YixZKTt2Yi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMubS52YWx1ZTtyYih3aW5kb3cpLnRoZW4oZnVuY3Rpb24oKXtmb3IodmFyIGI9e30sYz1fLkYoXy5BKE9iamVjdCxcImtleXNcIikuY2FsbChPYmplY3QsYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtiPXtzYjpiLnNiLEdiOmIuR2J9LGQ9Yy5uZXh0KCkpYi5zYj1kLnZhbHVlLGQ9YVtiLnNiXSxiLkdiPWQuSWEsZC5QYi50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXtuYihlLnNiLGUuR2IsZil9fShiKSl9KX07dmIucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2Mn07dmFyIEN1PWZ1bmN0aW9uKGEpe3ZhciBiPVwicGVyZm9ybWFuY2VcImluIHdpbmRvdyYmXCJub3dcImluIHBlcmZvcm1hbmNlP3BlcmZvcm1hbmNlLm5vdy5iaW5kKHBlcmZvcm1hbmNlKTpUYztmb3IoYT1iKCkrYTtiKCk8YTspO2IoKX0sRHU9ZnVuY3Rpb24oYSxiKXtiPj1hLmxlbmd0aHx8KEN1KGFbYl0pLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyZXR1cm4gRHUoYSwrK2IpfSkpfSxFdT1mdW5jdGlvbihhKXt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIER1KGEsMCl9KX0sRnU9ZnVuY3Rpb24oKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSl7dmFyIGE9Xy5yaigyKTthLmxlbmd0aCYmKGE9YS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIF8uSGcoYiwwKX0pLEV1KGEpKX19O3ZhciBHdT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdyxiPW5ldyB5cSxjPW5ldyB6cSxkPWJiKF8ucik7cWYoYiwxLGQsMCk7ZD1rai5CKCkuaigpLmpvaW4oKTtxZihiLDUsZCxcIlwiKTtxZihiLDIsMSwwKTt2ZihjLDEsYik7Yj14cSgpO2Q9Xy55KDc3KTtiPXJmKGIsOCxkKTtkPV8ueSg3OCk7Yj1yZihiLDksZCk7Yj1yZihiLDEwLCEwKTtkPV8ueSg4MCk7Yj1yZihiLDEzLGQpO2Q9Xy55KDgxKTtiPXJmKGIsMTQsZCk7Yj1yZihiLDE2LCEwKTt2ZihjLDIsYik7YS5nb29nbGVfcnVtX2NvbmZpZz1jLmlhO2M9Xy55KDE4OCk/XCJfZGVidWdcIjpcIlwiO3VnKGEuZG9jdW1lbnQsbGcoXCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvanMvcnVtXCIrYytcIi5qc1wiKSl9O3ZhciBIdT0wLEl1PWZ1bmN0aW9uKCl7dHJ5e2NyKCk7YnIoKTt2YXIgYT1fLkRqKDE1Mik7YSYmYS5mb3JFYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIG1qKGEpfSk7bmooMTMpO25qKDMpfWNhdGNoKGIpe2NsKDQwOCxiLCEwKX19LEp1PUcoMjk3LGZ1bmN0aW9uKCl7dmFyIGE9Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpKTthPV8uRihhKTtmb3IodmFyIGI9YS5uZXh0KCk7IWIuZG9uZTtiPWEubmV4dCgpKXt2YXIgYz1iLnZhbHVlO2I9Yzt2YXIgZD1jLnNyYztpZihkJiYoLTEhPWQuaW5kZXhPZihcIi90YWcvanMvZ3B0LmpzXCIpfHwtMSE9ZC5pbmRleE9mKFwiL3RhZy9qcy9ncHRfbW9iaWxlLmpzXCIpKSYmIWIuZ29vZ2xldGFnX2V4ZWN1dGVkJiZjLnRleHRDb250ZW50KXtiLmdvb2dsZXRhZ19leGVjdXRlZD0hMDtiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7dmFyIGU9ZD12b2lkIDA7Yz1jLnRleHRDb250ZW50O2M9bnVsbCE9PShkPW51bGw9PT0oZT1tYSgpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jcmVhdGVTY3JpcHQoYykpJiZ2b2lkIDAhPT1kP2Q6YztjPW5ldyBYaChjLGphKTtuYShjLFhoKTtiLnRleHRDb250ZW50PWMuajsoYz1iLm93bmVyRG9jdW1lbnQmJmIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykmJmMhPT13aW5kb3c/Yz1NYShjLmRvY3VtZW50KToodm9pZCAwPT09VXEmJihVcT1NYShkb2N1bWVudCkpLGM9VXEpO2MmJmIuc2V0QXR0cmlidXRlKFwibm9uY2VcIixjKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGIpO2RvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQoYil9fX0sZnVuY3Rpb24oYSxiKXtibChhLGIpO3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5lcnJvciYmd2luZG93LmNvbnNvbGUuZXJyb3IoYil9KSxLdT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdyxiPW5ldyBpcyhhKSxjPW5ldyBucyhhKSxkPW5ldyBZcihhKTtrYihcImNtcE1ldFwiLGZ1bmN0aW9uKGUpe2xiKGUpO0UoZSxcImZjXCIsYi5qPzE6MCk7RShlLFwidGNmdjFcIixhLl9fY21wPzE6MCk7RShlLFwidGNmdjJcIixwcyhjKT8xOjApO0UoZSxcInVzcFwiLCRyKGQpPzE6MCk7RShlLFwicHR0XCIsMTcpfSx7dmE6Xy5yYSg2MSl9KX0sTHU9ZnVuY3Rpb24oKXtIdT1fLk5pKCk7SXUoKTt0cnl7aWYoXy5yYSg2MSkmJkt1KCksRnUoKSxXYihcImRlZmluZU91dE9mUGFnZVNsb3RcIixjcSksV2IoXCJkZWZpbmVTbG90XCIsYXEpLFdiKFwiZGVmaW5lVW5pdFwiLGFxKSxXYihcImRlc3Ryb3lTbG90c1wiLGJxKSxXYihcImdldFdpbmRvd3NUaGF0Q2FuQ29tbXVuaWNhdGVXaXRoSG9zdHBhZ2VMaWJyYXJ5XCIsVnApLFdiKFwiZGlzcGxheVwiLGRxKSxtcCgpLFdiKFwiZ2V0RXZlbnRMb2dcIixmdW5jdGlvbigpe3JldHVybiBuZXcgUXR9KSxXYihcInNpemVNYXBwaW5nXCIsRyg5MCxmdW5jdGlvbigpe3JldHVybiBuZXcgZXV9KSksV2IoXCJhcGlSZWFkeVwiLCEwKSxYYigpLmZpZldpbiYmXCJjb21wbGV0ZVwiIT1kb2N1bWVudC5yZWFkeVN0YXRlP3ZqKHdpbmRvdyxmdW5jdGlvbigpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VW0oKX0sMCl9KTpVbSgpLEp1KCksIV8uRGooMjIxKSYmXy55KDMxMSkmJnpiKCksKF8ueSg4NCl8fHRrLkIoKS5qKSYmR3UoKSxfLnkoMzQ2KSYmRmMoKSl7dmFyIGE9bmV3IFdrKFwiZ3B0X25vbmNlX2NzcFwiKTtsYihhKTtZayhhKX19Y2F0Y2goYil7Y2woMTA2LGIpfX07dmFyIERiPW5ldyB0LldlYWtNYXAsQWI9ZnVuY3Rpb24oYSxiKXthPVthXTtmb3IodmFyIGM9Yi5sZW5ndGgtMTswPD1jOy0tYylhLnB1c2godHlwZW9mIGJbY10sYltjXSk7cmV0dXJuIGEuam9pbihcIlxceDBCXCIpfTt2YXIgTXU9R2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuc3JjPy9eKD86aHR0cHM/Oik/XFwvXFwvKD86d3d3XFwuZ29vZ2xldGFnc2VydmljZXNcXC5jb218c2VjdXJlcHViYWRzXFwuZ1xcLmRvdWJsZWNsaWNrXFwubmV0KVxcL3RhZ1xcL2pzXFwvZ3B0KD86X1thLXpdKykqXFwuanMvLnRlc3QoYS5zcmMpPzA6MToyfSxmdW5jdGlvbihhLGIpe3JldHVybiBhK1wiXFx4MEJcIisoYiYmYlswXSYmYlswXS5zcmMpfSk7dmFyIE51PW51bGwsT3U9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlO2lmKCEoZT0hYikpe3ZhciBmO2lmKCEoZj0hVHEoYixjLHZvaWQgMD09PWQ/MTAwOmQpKSl7YTp7ZG97dmFyIGc9d2EoYixjKTtpZihnJiZcImZpeGVkXCI9PWcucG9zaXRpb24pe3ZhciBoPSExO2JyZWFrIGF9fXdoaWxlKGI9Yi5wYXJlbnRFbGVtZW50KTtoPSEwfWY9IWh9ZT1mfWUmJihhLmhlaWdodD0tMSl9Y2F0Y2goayl7YS53aWR0aD0tMSxhLmhlaWdodD0tMX19LEliPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPV8uRih1ZihhLEpqLDkpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlkPWQudmFsdWUsYltLaihkKV09QihkLDIpO2E9QihhLDgpO2EubGVuZ3RoJiZudWxsPT1iLmV4Y2xfY2F0JiYoYi5leGNsX2NhdD1hKTtyZXR1cm4gYn0sUHU9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fTtfLkpiKGEsZnVuY3Rpb24oZCxlKXtpZihiW2VdKXt2YXIgZj1iW2VdLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4gXy5BKGQsXCJpbmNsdWRlc1wiKS5jYWxsKGQsZyl9KTtmLmxlbmd0aCYmKGNbZV09Zil9fSk7cmV0dXJuIGN9LFF1PWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9dWYoYSxKaiwyKS5tYXAoZnVuY3Rpb24oZCl7dmFyIGU9S2ooZCk7Yj1cImV4Y2xfY2F0XCI9PT1lO2Q9QihkLDIpO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGQuam9pbigpKX0pO2E9QihhLDMpOyFiJiZhLmxlbmd0aCYmYy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChcImV4Y2xfY2F0XCIpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChhLmpvaW4oKSkpO3JldHVybiBjfSxSdT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtnPXZvaWQgMD09PWc/ITE6Zzt0aGlzLnY9Yjt0aGlzLkQ9Yzt0aGlzLm09YTt0aGlzLm1vZGVsPWQ7dGhpcy5vPWU7dGhpcy5qPWY7dGhpcy5DPVtdO3RoaXMubD1cIlwiO3RoaXMuST1RbigpO3RoaXMuQT1bXTt0aGlzLlU9W107dGhpcy5IPXFkKF8ucmooNykpO3RoaXMuRz0hZ3x8IV8ueSgyOTQpfSxVdT1mdW5jdGlvbihhKXt2YXIgYj12b2lkIDA9PT1iP3dpbmRvdzpiO3ZhciBjPWEubW9kZWwuajtpZighQXJyYXkuaXNBcnJheShjKSlyZXR1cm5cIlwiO2lmKGEubSkwPT1jLmxlbmd0aCYmKGM9UHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGFwKGEudixlKX0pKTtlbHNle2lmKDA9PWMubGVuZ3RoKXJldHVyblwiXCI7MTxjLmxlbmd0aCYmKGM9W2NbMF1dKX12YXIgZD0hIUduKF8ucik7Yz1jLmZpbHRlcihmdW5jdGlvbihlKXt2YXIgZj1hLmouUltlLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIGQmJjQ9PWdrKGYpPyhqbC5CKCkuSihIbShTdHJpbmcoZS5nZXRBZFVuaXRQYXRoKCkpKSksITEpOiEwfSk7aWYoIWMubGVuZ3RoKXJldHVyblwiXCI7MzA8Yy5sZW5ndGgmJihqbC5CKCkuSihBbShcIjMwXCIsU3RyaW5nKGMubGVuZ3RoKSxTdHJpbmcoYy5sZW5ndGgtMzApKSksYz1jLnNsaWNlKDAsMzApKTtTdShhLGMsYik7VHUoYSk7cmV0dXJuIGEubH0sVnU9ZnVuY3Rpb24oYSxiKXt0cnl7dmFyIGM9Yi50b3A7dmFyIGQ9d2koYy5kb2N1bWVudCxjKX1jYXRjaChlKXtkPW5ldyBfLnlhKC0xMjI0NTkzMywtMTIyNDU5MzMpfVooYSxcInNjcl94XCIsTWF0aC5yb3VuZChkLngpLHtuYTohMH0pO1ooYSxcInNjcl95XCIsTWF0aC5yb3VuZChkLnkpLHtuYTohMH0pfSxXdT1mdW5jdGlvbihhKXt2YXIgYj13aW5kb3csYz1PYShhLm8sYi5kb2N1bWVudCl8fFwiXCI7dmFyIGQ9Yi5kb2N1bWVudC5kb21haW47dmFyIGU9Yi5oaXN0b3J5Lmxlbmd0aCxmPWIuc2NyZWVuLGc9Yi5kb2N1bWVudC5yZWZlcnJlcjtpZihKaCgpKWQ9b2koKS5nYUdsb2JhbHx8e307ZWxzZXt2YXIgaD1NYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFFMyksaz1iLmdvb2dsZV9hbmFseXRpY3NfZG9tYWluX25hbWU7ZD1cInVuZGVmaW5lZFwiPT10eXBlb2Ygaz9ycShcImF1dG9cIixkKTpycShrLGQpO3ZhciBsPS0xPGMuaW5kZXhPZihcIl9fdXRtYT1cIitkK1wiLlwiKSxtPS0xPGMuaW5kZXhPZihcIl9fdXRtYj1cIitkKSxuOyhuPShPaCgpfHxvaSgpKS5nYUdsb2JhbCl8fChuPXt9LChPaCgpfHxvaSgpKS5nYUdsb2JhbD1uKTt2YXIgcT0hMTtpZihsKWc9Yy5zcGxpdChcIl9fdXRtYT1cIitkK1wiLlwiKVsxXS5zcGxpdChcIjtcIilbMF0uc3BsaXQoXCIuXCIpLG0/bi5zaWQ9Z1szXTpuLnNpZHx8KG4uc2lkPWgrXCJcIiksbi52aWQ9Z1swXStcIi5cIitnWzFdLG4uZnJvbV9jb29raWU9ITA7ZWxzZXtuLnNpZHx8KG4uc2lkPWgrXCJcIik7aWYoIW4udmlkKXtxPSEwO209TWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpO2w9W29xLmFwcE5hbWUsb3EudmVyc2lvbixvcS5sYW5ndWFnZT9vcS5sYW5ndWFnZTpvcS5icm93c2VyTGFuZ3VhZ2Usb3EucGxhdGZvcm0sb3EudXNlckFnZW50LHBxKCk/MTowXS5qb2luKFwiXCIpO2Y/bCs9Zi53aWR0aCtcInhcIitmLmhlaWdodCtmLmNvbG9yRGVwdGg6Xy5yLmphdmEmJl8uci5qYXZhLmF3dCYmKGY9Xy5yLmphdmEuYXd0LlRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTY3JlZW5TaXplKCksbCs9Zi5zY3JlZW4ud2lkdGgrXCJ4XCIrZi5zY3JlZW4uaGVpZ2h0KTtsPWwrYysoZ3x8XCJcIik7Zm9yKGc9bC5sZW5ndGg7MDxlOylsKz1lLS1eZysrO24udmlkPShtXnFxKGwpJjIxNDc0ODM2NDcpK1wiLlwiK2h9bi5mcm9tX2Nvb2tpZT0hMX1pZighbi5jaWQpe2I6Zm9yKGg9OTk5LGsmJihrPTA9PWsuaW5kZXhPZihcIi5cIik/ay5zdWJzdHIoMSk6ayxoPWsuc3BsaXQoXCIuXCIpLmxlbmd0aCksaz05OTksYz1jLnNwbGl0KFwiO1wiKSxnPTA7ZzxjLmxlbmd0aDtnKyspaWYoZj1zcS5leGVjKGNbZ10pfHx0cS5leGVjKGNbZ10pfHx1cS5leGVjKGNbZ10pKXtlPWZbMV18fDA7aWYoZT09aCl7dmFyIHc9ZlsyXTticmVhayBifWU8ayYmKGs9ZSx3PWZbMl0pfXEmJncmJi0xIT13LnNlYXJjaCgvXlxcZCtcXC5cXGQrJC8pPyhuLnZpZD13LG4uZnJvbV9jb29raWU9ITApOnchPW4udmlkJiYobi5jaWQ9dyl9bi5kaD1kO24uaGlkfHwobi5oaWQ9TWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpKTtkPW59WihhLFwiZ2FfdmlkXCIsZC52aWQseyQ6ITF9KTtaKGEsXCJnYV9zaWRcIixkLnNpZCx7JDohMX0pO1ooYSxcImdhX2hpZFwiLGQuaGlkLHskOiExfSk7WihhLFwiZ2FfZmNcIixkLmZyb21fY29va2llLHskOiExfSk7WihhLFwiZ2FfY2lkXCIsZC5jaWQseyQ6ITF9KTtaKGEsXCJnYV93cGlkc1wiLGIuZ29vZ2xlX2FuYWx5dGljc191YWNjdCl9LFh1PWZ1bmN0aW9uKGEsYil7aWYoXy55KDM3MCkpdHJ5e3ZhciBjPWIuZXh0ZXJuYWwmJmIuZXh0ZXJuYWwuZ2V0SG9zdEVudmlyb25tZW50VmFsdWUmJmIuZXh0ZXJuYWwuZ2V0SG9zdEVudmlyb25tZW50VmFsdWUuYmluZChiLmV4dGVybmFsKTtpZihjKXt2YXIgZD1wYXJzZUludChKU09OLnBhcnNlKGMoXCJvcy1tb2RlXCIpKVtcIm9zLW1vZGVcIl0sMTApOzA8PWQmJlooYSxcIndzbVwiLGQrMSl9fWNhdGNoKGUpe319LFN1PWZ1bmN0aW9uKGEsYixjKXtjPXZvaWQgMD09PWM/d2luZG93OmM7dmFyIGQ9Yy5kb2N1bWVudCxlPWEuai5OO1ooYSxcImdkZnBfcmVxXCIsMSx7JDohMX0pO1ooYSxcInB2c2lkXCIsYS5tb2RlbC52KTtaKGEsXCJjb3JyZWxhdG9yXCIsQihlLDI2KSk7WihhLFwib3V0cHV0XCIsYS5tb2RlbC5JLHskOiExfSk7WihhLFwiaW1wbFwiLGEubW9kZWwuRyx7JDohMX0pO18ueSgyMDApfHwoMD09bmYoZSwyNCwwKSYmKFooYSxcImFkc2lkXCIsYS5tb2RlbC5EKSxaKGEsXCJwdWNyZFwiLGEubW9kZWwuSykpLFooYSxcImphclwiLGEubW9kZWwuSCkpO1l1KGEpO2lzTmFOKGEubW9kZWwuV2EpfHxaKGEsXCJwb2RcIixhLm1vZGVsLldhLHskOiExfSk7aXNOYU4oYS5tb2RlbC5YYSl8fFooYSxcInBwb3NcIixhLm1vZGVsLlhhLHskOiExfSk7aXNOYU4oYS5tb2RlbC5KYSl8fFooYSxcInNjb3JcIixhLm1vZGVsLkphLHskOiExfSk7WnUoYSk7WihhLFwidnJnXCIsJGEoKSk7JHUoYSk7YXYoYSk7YnYoYSxiWzBdLm0pO1ooYSxcInNjXCIsXy5Eaig2KT8xOjAse25hOiEwfSk7d2luZG93LnBvc3RNZXNzYWdlJiZaKGEsXCJzZnZcIixabigpKTtaKGEsXCJlY3NcIixhLm1vZGVsLndhKTtjdihhLGIsZCk7ZHYoYSk7ZXYoYSxiKTtmdihhLGIpO2d2KGEsYyk7UmsoXCJnb29nbGVfcHJldmlld1wiKSYmWihhLFwiZ2N0XCIsUWsoXCJnb29nbGVfcHJldmlld1wiKSk7aWYoYS52LnYpe1ooYSxcImlzX2FtcFwiLFwiMVwiKTtaKGEsXCJhbXBfdlwiLEtoKCkpO1ooYSxcImFjdFwiLExoKCkpO1JoJiYhL15odHRwczpcXC9cXC9kLVxcZCtcXC5hbXBwcm9qZWN0XFwubmV0XFwvXFxkK1xcL2ZyYW1lXFwuaHRtbCQvLnRlc3QoYy5sb2NhdGlvbi5ocmVmKSYmWihhLFwiYXRpXCIsMSk7dmFyIGY9U2goYyk7ZiYmWihhLFwiYXBuXCIsZi5zdWJzdHIoMCwxMCkpO3RyeXt2YXIgZz1KU09OLnBhcnNlKGMuY29udGV4dC5jYWNoZWRGcmFtZU5hbWVfKTtnLmF0dHJpYnV0ZXMmJmcuYXR0cmlidXRlcy51c2VTYW1lRG9tYWluUmVuZGVyaW5nVW50aWxEZXByZWNhdGVkJiZaKGEsXCJhc2RcIiwxKX1jYXRjaChrKXt9fShxZyhjLnRvcCl8fFBnKHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlcikpJiZaKGEsXCJhYnhlXCIsMSk7Xy5EaigyNTMpJiYoZj1xaigxMCkpJiZaKGEsXCJleHBmbGFnc1wiLGYpO2h2KGEsYixjKTtmPXt9O2YudV90ej0tKG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpO2YudV9oaXM9cWkoKTtmLnVfamF2YT0hIUVmLm5hdmlnYXRvciYmXCJ1bmtub3duXCIhPT10eXBlb2YgRWYubmF2aWdhdG9yLmphdmFFbmFibGVkJiYhIUVmLm5hdmlnYXRvci5qYXZhRW5hYmxlZCYmRWYubmF2aWdhdG9yLmphdmFFbmFibGVkKCk7RWYuc2NyZWVuJiYoZi51X2g9RWYuc2NyZWVuLmhlaWdodCxmLnVfdz1FZi5zY3JlZW4ud2lkdGgsZi51X2FoPUVmLnNjcmVlbi5hdmFpbEhlaWdodCxmLnVfYXc9RWYuc2NyZWVuLmF2YWlsV2lkdGgsZi51X2NkPUVmLnNjcmVlbi5jb2xvckRlcHRoKTtFZi5uYXZpZ2F0b3ImJkVmLm5hdmlnYXRvci5wbHVnaW5zJiYoZi51X25wbHVnPUVmLm5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aCk7RWYubmF2aWdhdG9yJiZFZi5uYXZpZ2F0b3IubWltZVR5cGVzJiYoZi51X25taW1lPUVmLm5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoKTtpdihhLGYpO2p2KGEpO3RyeXt2YXIgaD11aSgpfWNhdGNoKGspe2g9XCIwXCJ9WihhLFwiZmxhc2hcIixoLHskOiExLG5hOiEwfSk7a3YoYSxiLGMpO2x2KGEsYyk7KF8ueSg4NCl8fHRrLkIoKS5qKSYmWihhLFwicnVtY1wiLGEubW9kZWwudix7JDohMX0pO18ueSg4MykmJlooYSxcInJ1bWVcIiwxLHskOiExfSk7WihhLFwidmlzXCIsXy51bihkKSx7JDohMX0pOzA9PT1NdShfLkRqKDE3MikpfHxaKGEsXCJzdHNzXCIsTXUoXy5EaigxNzIpKSk7IWEudi52JiZtdihjKSYmWihhLFwiYXJwXCIsMSx7JDohMX0pO18uci5uYXZpZ2F0b3ImJl8uci5uYXZpZ2F0b3IuZGV2aWNlTWVtb3J5JiZaKGEsXCJkbWNcIixfLnIubmF2aWdhdG9yLmRldmljZU1lbW9yeSk7VnUoYSxjKTtudihhLGIsYyk7b3YoYSxiLGMpOzA8YS5tb2RlbC5tLmxlbmd0aCYmWihhLFwicHN0c1wiLGEubW9kZWwubSk7V3UoYSk7WHUoYSxjKTtfLnkoMjMpJiYoWihhLFwianNcIixWcShjKSksWihhLFwibXNcIixXcShhLm1vZGVsLnYudG9TdHJpbmcoKSxjKSkpO3B2KGEsYyxiKTtxdihhLGIsYyk7Yj1CKGUsNyk7Yz1fLkRqKDI1MSk7Xy55KDM2MykmJmMmJlooYSxcInVhY2hcIixWZShjLDMpKTtfLnkoMzEyKSYmKGM9Xy5EaigyNTApKSYmMDxjLmxlbmd0aCYmWihhLFwidHRfc3RhdGVcIixWZShKU09OLnN0cmluZ2lmeShjKSwzKSk7Xy55KDE2NCkmJmIubGVuZ3RoJiZaKGEsXCJzdXBwb3J0aW5nX3VybHNcIixiLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGspfSkpO3J2KGEpfSxudj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1bXTtiPV8uRihiKTtmb3IodmFyIGY9Yi5uZXh0KCk7IWYuZG9uZTtmPWIubmV4dCgpKXtmPWYudmFsdWU7dmFyIGc9cGEoZik7Zz1iaChnJiZnLnBhcmVudEVsZW1lbnQmJndhKGcucGFyZW50RWxlbWVudCxjKXx8bnVsbCk7aWYoIWd8fDE9PWdbMF0mJjE9PWdbM10pe3ZhciBoPShnPXBhKGYpKSYmZy5wYXJlbnRFbGVtZW50LGs9SWsoaCl8fG5ldyBfLlRmKDAsMCk7T3UoayxoLGMpO2QucHVzaChrLndpZHRoK1wieFwiK2suaGVpZ2h0KTtmPUlrKHBhKGYpKXx8bmV3IF8uVGYoMCwwKTtPdShmLGcsYywxKTstMT09ay5oZWlnaHQmJihmLmhlaWdodD0tMSk7ZS5wdXNoKGYud2lkdGgrXCJ4XCIrZi5oZWlnaHQpfWVsc2UgZC5wdXNoKFwiLTF4LTFcIiksZS5wdXNoKFwiLTF4LTFcIil9WihhLFwicHN6XCIsZCx7cWE6XCJ8XCJ9KTtaKGEsXCJtc3pcIixlLHtxYTpcInxcIn0pfSxvdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5qLlI7Yj1iLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZFtlLmdldFNsb3RFbGVtZW50SWQoKV19KTtiLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPUIoZSwxNil9KSYmKFooYSxcInJ0Z3NcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9QihlLDE2KT8wIT14YShlKS5sZW5ndGg/XCIxXCI6XCIyXCI6XCIwXCJ9KSx7cWE6XCIhXCJ9KSxaKGEsXCJtYXhfd1wiLGIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB1dShPKGUsWmosMTYpLGMpfSkse3FhOlwiIVwifSksWihhLFwibWF4X2hcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdnUoTyhlLFpqLDE2KSxjKX0pLHtxYTpcIiFcIn0pLFooYSxcIm1pbl93XCIsYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHd1KE8oZSxaaiwxNikpfSkse3FhOlwiIVwifSksWihhLFwibWluX2hcIixiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4geHUoTyhlLFpqLDE2KSl9KSx7cWE6XCIhXCJ9KSl9LHN2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXTtpZihudWxsIT09YSYmYSE9YS50b3Ape3ZhciBlPXhpKCExLGEpLndpZHRoOygtMTIyNDU5MzM9PT1ifHwtMTIyNDU5MzM9PT1lfHxlPGIpJiZkLnB1c2goOCl9LTEyMjQ1OTMzIT1iJiYoZT0xK18ucmEoNDUpLGIqZTxhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aD9kLnB1c2goMTApOmMmJl8ueSg0MTMpJiYoYz0xK18ucmEoNDE0KSxhLm91dGVyV2lkdGgqYzxiJiZkLnB1c2goMTApKSk7cmV0dXJuIGR9LHB2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdLGY9W10sZz1fLnkoNDExKSxoPTAhPT1SZygpLGs9Zz94aSghMCxiLGgpLndpZHRoOm51bGw7ZyYmKGQ9c3YoYixrLGgpKTtjLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIG09bmV3IFhxLG49cGEobCk7bD0wO2lmKG4pe2d8fChrPXhpKCEwLGIsaCkud2lkdGgsZD1zdihiLGssaCkpO2Zvcih2YXIgcT0wO24mJjEwMD5xO3ErKyxuPW4ucGFyZW50RWxlbWVudCl7dmFyIHc9d2EobixiKTtpZih3KXtpZih3Lm92ZXJmbG93WSYmXCJ2aXNpYmxlXCIhPT13Lm92ZXJmbG93WSl7bS5zZXQoMik7dmFyIHU9SWsobik7dSYmKGw9bD9NYXRoLm1pbihsLHUud2lkdGgpOnUud2lkdGgpO2lmKG0uZ2V0KDkpKWJyZWFrfVwic3RpY2t5XCIhPT13LnBvc2l0aW9uJiZcImZpeGVkXCIhPT13LnBvc2l0aW9ufHxtLnNldCg5KTtcIm5vbmVcIj09PXcuZGlzcGxheSYmbS5zZXQoNyk7XCJJRlJBTUVcIj09PW4ubm9kZU5hbWUmJih3PXBhcnNlSW50KHcud2lkdGgsMTApLHc8ayYmKG0uc2V0KDgpLGw9bD9NYXRoLm1pbih3LGwpOncpKX1lbHNlIG0uc2V0KDMpfX1lbHNlIG0uc2V0KDEpO2QuZm9yRWFjaChmdW5jdGlvbihDKXtyZXR1cm4gbS5zZXQoQyl9KTtlLnB1c2goWXEobSkpO2YucHVzaChsKX0pO1ooYSxcImZ3c1wiLGUpO1ooYSxcIm9od1wiLGYpfSx1dj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT1bXSxmPWEuaixnPWYuUixoPSEheChmLk4sMTUpO2lmKGEubSliLmZvckVhY2goZnVuY3Rpb24oayl7az1Qayh7c2xvdDprLGNhOmdbay5nZXRTbG90RWxlbWVudElkKCldfSxjLGgpfHx0djtkLnB1c2goTWF0aC5yb3VuZChrLngpKTtlLnB1c2goTWF0aC5yb3VuZChrLnkpKX0pO2Vsc2UgaWYoYj0oYS52LnY/TmgoKTpudWxsKXx8UGsoe3Nsb3Q6YlswXSxjYTpnW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXX0sYyxoKSlkLnB1c2goTWF0aC5yb3VuZChiLngpKSxlLnB1c2goTWF0aC5yb3VuZChiLnkpKTtaKGEsXCJhZHhzXCIsZCk7WihhLFwiYWR5c1wiLGUpfSxxdj1mdW5jdGlvbihhLGIsYyl7aWYoIWEubSl7dmFyIGQ9bnVsbCxlPW51bGw7dHJ5e2Q9d2koYy50b3AuZG9jdW1lbnQsYy50b3ApLnl9Y2F0Y2goaCl7cmV0dXJufXZhciBmPWEuaixnPWYuUjtmPSEheChmLk4sMTUpOyhiPVBrKHtzbG90OmJbMF0sY2E6Z1tiWzBdLmdldFNsb3RFbGVtZW50SWQoKV19LGMuZG9jdW1lbnQsZikpJiYoZT1NYXRoLnJvdW5kKGIueSkpO2M9eGkoITAsYykuaGVpZ2h0O2UmJi0xMjI0NTkzMyE9PWUmJi0xMjI0NTkzMyE9PWMmJihlPGQrYz9aKGEsXCJidHZpXCIsMCx7bmE6ITB9KTooZD1fLkRqKDI0OCkrMSxDai5CKClbMjQ4XT1kLFooYSxcImJ0dmlcIixkKSkpfX0sdnY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouUjtyZXR1cm4gYi5tYXAoYS5tP2Z1bmN0aW9uKGQpe3ZhciBlPWNbZC5nZXRTbG90RWxlbWVudElkKCldLGY7Xy55KDM2NCk/Zj1kLiRhfHxyayhlLE1rKGQsYS5qKSk6Zj1yayhlKTtyZXR1cm4gZC4kYT1mfTpmdW5jdGlvbihkKXt2YXIgZT1hLmouUltkLmdldFNsb3RFbGVtZW50SWQoKV07ZT1kLiRhfHxyayhlLE1rKGQsYS5qKSk7cmV0dXJuIGQuJGE9ZX0pLmpvaW4oXCIsXCIpfSxrdj1mdW5jdGlvbihhLGIsYyl7Yz12b2lkIDA9PT1jP3dpbmRvdzpjO3ZhciBkPWMuZG9jdW1lbnQ7Yj0oXy55KDM2NCk/eChhLmouTiw2KTphLm0pP3VrKGEudi5sKTp2ayhiWzBdLGEuai5SW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXSxicChhLnYpKXx8dWsoYS52LmwpO3ZhciBlPVJrKFwiZ29vZ2xlX3ByZXZpZXdcIiksZj1lP0FrKGQuVVJMKTpkLlVSTDtlPWU/QWsoZC5yZWZlcnJlcik6ZC5yZWZlcnJlcjtkPSExO2lmKG51bGwhPWIpe3ZhciBnPWY7eWkoYyl8fChlPVwiXCIsZD0hMCl9ZWxzZSBiPWY7YS52LnYmJihlPShlPUpoKCkpJiZlLnJlZmVycmVyKTtmPW5ldyBIaShjKTt2YXIgaD1mLmpbMF0uZGVwdGgsaz1oJiYwPGg7aWYoayYmKFooYSxcIm5oZFwiLGgpLGMubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zKSl7Yz1bXTtoPU1hdGgubWluKGYuai5sZW5ndGgsMjcpO2Zvcih2YXIgbD0xO2w8aDtsKyspZi5qW2xdJiZmLmpbbF0udXJsJiYoY1tsLTFdPWYualtsXS51cmwpO2M9SWkoZixjLnJldmVyc2UoKSk7WihhLFwiaWFnXCIsYyk7Yz1mLmo7aD1bXTtmb3IobD1jLmxlbmd0aC0xOzA8bDtsLS0pe3ZhciBtPWNbbF07bSYmbnVsbCE9bS51cmwmJmgucHVzaChvZyhtLnVybC5tYXRjaChfLm5nKVszXXx8bnVsbCkpfWM9RWkoaCk7MDxjJiZaKGEsXCJtZG9cIixjKX1aKGEsXCJ1cmxcIixiKTtjPWI7aD1fLkRqKDI1Mil8fHt9O2gudXJsPWM7Q2ouQigpWzI1Ml09aDtudWxsIT1nJiZnIT1iJiZaKGEsXCJsb2NcIixnKTtaKGEsXCJyZWZcIixlKTtrJiYoZz1mLmpbTWF0aC5tYXgoZi5qLmxlbmd0aC0xLDApXS51cmwpJiZaKGEsXCJ0b3BcIixkP29nKGcubWF0Y2goXy5uZylbM118fG51bGwpOmcpfSxsdj1mdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj93aW5kb3c6Yjt2YXIgYz1iLmRvY3VtZW50LGQ9Yy5zY3JpcHRzO2QmJlooYSxcImRzc3pcIixkLmxlbmd0aCk7Yj1uZXcgSGkoYik7WihhLFwiaWNzZ1wiLEppKGIpLHtuYTohMH0pO2I9S2koYik7WihhLFwibXNvXCIsYik7Yj1FcnJvcigpO2lmKGIuc3RhY2spe2Q9RWsoYi5zdGFjayk7ZC09MTM7aWYoMD5kKXtkPTA7dmFyIGU9bmV3IFdrKFwiZ3B0X25lZ2F0aXZlX3N0YWNrX3RyYWNlXCIsemsoKSxfLkRqKDIzKSk7bGIoZSxQcChRcC5CKCkpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gYXAoYS52LGYpfSkpO0UoZSxcInN0YWNrVHJhY2VcIixiLnN0YWNrKTtZayhlKX1aKGEsXCJzdGRcIixkLHtuYTohMH0pfWMuY3VycmVudFNjcmlwdCYmYy5jdXJyZW50U2NyaXB0LnRleHQmJlooYSxcImNzbFwiLGMuY3VycmVudFNjcmlwdC50ZXh0Lmxlbmd0aCl9LHd2PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5qLlI7YT1iLm1hcChmdW5jdGlvbihkKXtkPWNbZC5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiBJYihkKX0pO2ZvcihiPWEuc2hpZnQoKXx8e307YS5sZW5ndGg7KWI9UHUoYixhLnNoaWZ0KCkpO3JldHVybiBifSxldj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5SLGQ7Xy55KDQ5KSYmMTxiLmxlbmd0aD9kPXh2KGEsYik6ZD1iLm1hcChmdW5jdGlvbihlKXtlPWNbZS5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiBLYihlKS5qb2luKFwiJlwiKX0pO2I9ZDtiLmpvaW4oXCJ8XCIpLmxlbmd0aD09ZC5sZW5ndGgtMSYmKGI9bnVsbCk7WihhLFwicHJldl9zY3BcIixiLHtxYTpcInxcIn0pfSx4dj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuai5SLGQ9W10sZT13dihhLGIpO2IuZm9yRWFjaChmdW5jdGlvbihnKXtnPWNbZy5nZXRTbG90RWxlbWVudElkKCldO2c9S2IoZyxmdW5jdGlvbihoLGspe2s9ZVtrXTtyZXR1cm4ha3x8IV8uQShrLFwiaW5jbHVkZXNcIikuY2FsbChrLGgpfSk7ZC5wdXNoKGcuam9pbihcIiZcIikpfSk7dmFyIGY9W107Xy5KYihlLGZ1bmN0aW9uKGcsaCl7Zz1nLm1hcChlbmNvZGVVUklDb21wb25lbnQpO2g9ZW5jb2RlVVJJQ29tcG9uZW50KGgpO2YucHVzaChoK1wiPVwiK2cuam9pbigpKX0pO2YubGVuZ3RoJiZaKGEsXCJjc3BcIixmLHtxYTpcIiZcIn0pO3JldHVybiBkfSxpdj1mdW5jdGlvbihhLGIpe18uSmIoYixmdW5jdGlvbihjLGQpe1ooYSxkLGMseyQ6ITF9KX0pfSwkdT1mdW5jdGlvbihhKXt2YXIgYj1hLmouTjswIT1uZihiLDI0LDApJiZaKGEsXCJjb1wiLG5mKGIsMjQsMCkse25hOiEwfSl9LGJ2PWZ1bmN0aW9uKGEsYil7aWYoIV8ueSgzNjcpKXt2YXIgYz1fLkRqKDIyMSk7Yj1zaChjLGIpO2IucmQmJlooYSxcIm5wYVwiLDEpO1ooYSxcImd1Y2lcIixiLiRjKX19LGF2PWZ1bmN0aW9uKGEpe3ZhciBiPVVqKGEuai5OKXx8bmV3IE9qOyEwPT09eChiLDEpJiZaKGEsXCJyZHBcIixcIjFcIik7ITA9PT14KGIsOSkmJlooYSxcImx0ZFwiLFwiMVwiKTt2YXIgYz1CKGEubywyKTtjJiZaKGEsXCJnZHByX2NvbnNlbnRcIixjKTtudWxsIT1CKGEubywzKSYmKGM9eChhLm8sMyksWihhLFwiZ2RwclwiLGM/XCIxXCI6XCIwXCIse25hOiEwfSkpOyhjPUIoYS5vLDQpKSYmWihhLFwiYWRkdGxfY29uc2VudFwiLGMpOyhjPUIoYS5vLDcpKSYmWihhLFwidGNmZVwiLGMpOyhjPUIoYS5vLDEpKSYmWihhLFwidXNfcHJpdmFjeVwiLGMpOyh4KGEubyw2KXx8Xy55KDM3MykmJngoYiw4KSkmJlooYSxcIm5wYVwiLDEpO2M9bmYoYiw2LDIpOzIhPT1jJiZaKGEsXCJ0ZnVhXCIsYyx7bmE6ITB9KTtudWxsIT1CKGIsNSkmJihiPUIoYiw1KSxaKGEsXCJ0ZmNkXCIsYix7bmE6ITB9KSl9LGR2PWZ1bmN0aW9uKGEpe3ZhciBiPWEuai5OOzEhPW5mKGIsMjQsMCkmJm51bGwhPUIoYiwxNikmJlooYSxcInBwaWRcIixCKGIsMTYpLHtuYTohMH0pfSxmdj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaixkPWMuTixlPWMuUltiWzBdLmdldFNsb3RFbGVtZW50SWQoKV07Yz0xIT1hLm1vZGVsLkVhO2U9ISF4KGUsMTcpO2I9d2soYixhLmouUixhLnYubCxicChhLnYpKTtkPXgoZCwyNyl8fCExO3ZhciBmPTM9PWEubW9kZWwuRWEsZz1uZXcgWHE7Zy5zZXQoMCxjKTtnLnNldCgxLGUpO2cuc2V0KDIsYik7Zy5zZXQoMyxkKTtnLnNldCg0LGYpO2M9WXEoZyk7MDxjJiZaKGEsXCJlcmlcIixjKX0sZ3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmouTixkPVF1KGMpO1ooYSxcImN1c3RfcGFyYW1zXCIsZCx7cWE6XCImXCJ9KTtpZihhLkQmJjA9PW5mKGMsMjQsMCkpe2Q9UWEoXCJfX2dhZHNcIixhLm8sYS5ELmouZG9jdW1lbnQpO1ooYSxcImNvb2tpZVwiLGQse25hOiEwfSk7dmFyIGU9YS5EO2lmKDA9PT1lLmwpe3ZhciBmPWEubztpZihRYShcIl9fZ2Fkc1wiLGYsZS5qLmRvY3VtZW50KSlmPSEwO2Vsc2V7dmFyIGc9ZS5qLmRvY3VtZW50O2c9dm9pZCAwPT09Zz9kb2N1bWVudDpnO3goZiw1KSYmKG5ldyBQYShnKSkuc2V0KFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiLFwiR29vZFwiLHZvaWQgMCk7aWYoZz1cIkdvb2RcIj09PVFhKFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiLGYsZS5qLmRvY3VtZW50KSl7dmFyIGg9ZS5qLmRvY3VtZW50O2g9dm9pZCAwPT09aD9kb2N1bWVudDpoO3goZiw1KSYmKGY9bmV3IFBhKGgpLGYuZ2V0KFwiR29vZ2xlQWRTZXJ2aW5nVGVzdFwiKSxmLnNldChcIkdvb2dsZUFkU2VydmluZ1Rlc3RcIixcIlwiLHt3YzowLHBhdGg6dm9pZCAwLGRvbWFpbjp2b2lkIDB9KSl9Zj1nfWUubD1mPzI6MX0yPT09ZS5sJiYhZCYmWihhLFwiY29va2llX2VuYWJsZWRcIixcIjFcIix7bmE6ITB9KX0oZD1CKGMsOCkpPyg1MDxkLmxlbmd0aCYmKGQ9ZC5zdWJzdHJpbmcoMCw1MCkpLGQ9XCJhIFwiK1ZlKCdyb2xlOjEgcHJvZHVjZXI6MTIgbG9jOlwiJysoZCsnXCInKSkpOmQ9XCJcIjtkJiZaKGEsXCJ1dWxlXCIsZCk7MD09bmYoYywyNCwwKSYmKGM9Yi5kb2N1bWVudCwoYj0odWsoYS52LmwpfHxkYihiKSkhPWMuVVJMP2MuZG9tYWluOlwiXCIpJiZaKGEsXCJjZG1cIixiKSk7Xy55KDYpfHwoYj1uZXcgWHEsXy5yLlNWR0VsZW1lbnQmJl8uci5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMmJmIuc2V0KDApLGM9T2coKSxjW1wiYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uXCJdJiZiLnNldCgxKSxjW1wiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94XCJdJiZiLnNldCgyKSxfLnIuY3J5cHRvJiZfLnIuY3J5cHRvLnN1YnRsZSYmYi5zZXQoMyksXy5yLlRleHREZWNvZGVyJiZfLnIuVGV4dEVuY29kZXImJmIuc2V0KDQpLGI9WXEoYiksWihhLFwiYmNcIixiKSl9LGh2PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jLmRvY3VtZW50OzA8bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiTVNJRSBcIikmJndvKGEudi5sLFwiYWRzZW5zZV9lbmNvZGluZ1wiLGQuY2hhcnNldCwhMSk7aWYoIXVrKGEudi5sKSl7dHJ5e3ZhciBlPU1hdGgucm91bmQoRGF0ZS5wYXJzZShjLmRvY3VtZW50Lmxhc3RNb2RpZmllZCkvMUUzKXx8bnVsbH1jYXRjaChtKXtlPW51bGx9WihhLFwibG10XCIsZT9lLnRvU3RyaW5nKCk6bnVsbCl9ZT1fLnkoNDMpP18uTmkoKToobmV3IERhdGUpLmdldFRpbWUoKTtaKGEsXCJkdFwiLGUseyQ6ITF9KTt0cnl7ZT1IdTt2YXIgZj1NYXRoLm1pbihQaShcImRvbUxvYWRpbmdcIil8fEluZmluaXR5LFBpKFwiZG9tSW50ZXJhY3RpdmVcIil8fEluZmluaXR5KTt2YXIgZz1JbmZpbml0eT09Zj9NYXRoLm1heChQaShcInJlc3BvbnNlRW5kXCIpLFBpKFwibmF2aWdhdGlvblN0YXJ0XCIpKTpmOzA8ZyYmZT49ZyYmKFooYSxcImRsdFwiLGcseyQ6ITF9KSxaKGEsXCJpZHRcIixlLWcseyQ6ITF9KSl9Y2F0Y2gobSl7WihhLFwiaWR0XCIsLTkseyQ6ITF9KSxibCg0NzksbSl9aWYobnVsbD09TnUpe2E6e2c9Yy5uYXZpZ2F0b3I7Zj1nLnVzZXJBZ2VudDtlPWcucGxhdGZvcm07dmFyIGg9L1dlYktpdFxcLyhcXGQrKS8saz0vcnY6KFxcZCtcXC5cXGQrKS8sbD0vcnY6MVxcLjgoW14uXXxcXC4wKS87aWYoL1dpbnxNYWN8TGludXh8aVBhZHxpUG9kfGlQaG9uZS8udGVzdChlKSYmIS9eT3BlcmEvLnRlc3QoZikmJihoPShoLmV4ZWMoZil8fFswLDBdKVsxXSxrPShrLmV4ZWMoZil8fFswLDBdKVsxXSwvV2luLy50ZXN0KGUpJiYvVHJpZGVudC8udGVzdChmKSYmMTE8PWQuZG9jdW1lbnRNb2RlfHwhaCYmXCJHZWNrb1wiPT09Zy5wcm9kdWN0JiYyNzw9ayYmIWwudGVzdChmKXx8NTM2PD1oKSl7Zz0hMDticmVhayBhfWc9ITF9Zj16aShjLGMuZG9jdW1lbnQsNTAwLDMwMCk7TnU9ZyYmIWZ9TnV8fFooYSxcImVhXCIsXCIwXCIse25hOiEwfSk7Zj1nPW9pKCk7Zm9yKGU9MDtnJiZnIT1nLnBhcmVudDspZz1nLnBhcmVudCxlKysscWcoZykmJihmPWcpO2U9ZjtnPWUubG9jYXRpb24uaHJlZjtlPT1lLnRvcD9nPXt1cmw6Zyx2YzohMH06KGY9ITEsKGw9ZS5kb2N1bWVudCkmJmwucmVmZXJyZXImJihnPWwucmVmZXJyZXIsZS5wYXJlbnQ9PWUudG9wJiYoZj0hMCkpLChlPWUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zKSYmKGU9ZVtlLmxlbmd0aC0xXSkmJi0xPT1nLmluZGV4T2YoZSkmJihmPSExLGc9ZSksZz17dXJsOmcsdmM6Zn0pO2Y9ZztnPXppKG9pKCksZCxjLmdvb2dsZV9hZF93aWR0aCxjLmdvb2dsZV9hZF9oZWlnaHQpO2Y9Zi52YztlPW9pKCk7ZT1lLnRvcD09ZT8wOnFnKGUudG9wKT8xOjI7bD00O2d8fDEhPWU/Z3x8MiE9ZT9nJiYxPT1lP2w9NzpnJiYyPT1lJiYobD04KTpsPTY6bD01O2YmJihsfD0xNik7Zz1cIlwiK2w7QWkoKTtaKGEsXCJmcm1cIixnfHxudWxsKTtnPWEudi52PyhnPU1oKCkpJiZfLk1jKGcucm9vdEJvdW5kcyk/bmV3IF8uVGYoZy5yb290Qm91bmRzLndpZHRoLGcucm9vdEJvdW5kcy5oZWlnaHQpOm51bGw6eGkoITAsYyxfLnkoMjgwKSYmMCE9PVJnKCkpO2cmJihhLmoub2E9ZyxaKGEsXCJiaXdcIixnLndpZHRoKSxaKGEsXCJiaWhcIixnLmhlaWdodCkpOyF5aShjKSYmKGc9eGkoITEsYykpJiYoWihhLFwiaXN3XCIsZy53aWR0aCksWihhLFwiaXNoXCIsZy5oZWlnaHQpKTthLm1vZGVsLm8mJlooYSxcIm9pZFwiLGEubW9kZWwubyk7dXYoYSxiLGQpO1ooYSxcImFka3NcIix2dihhLGIpKTtkPTA7dm9pZCAwPT09Xy5yLnBvc3RNZXNzYWdlJiYoZHw9MSk7MDxkJiZaKGEsXCJvc2RcIixkKTt5dihhKTtkPXhvKGIsYS52LmwsYnAoYS52KSxhLkkpO1ooYSxcImFkc2Vuc2VQYXJhbWV0ZXJzXCIsZCx7JDohMX0pO2Q9cmkoYyk7YS5HPyhaKGEsXCJpZmlcIixkKzEpLGQ9YyxiPWIubGVuZ3RoLGI9dm9pZCAwPT09Yj8xOmIsZD1PaChKaChkKSl8fGQsZC5nb29nbGVfdW5pcXVlX2lkPShkLmdvb2dsZV91bmlxdWVfaWR8fDApK2IpOlooYSxcImlmaVwiLGQpO251bGwhPT1jJiZjIT1jLnRvcD8oYj1bYy5kb2N1bWVudC5VUkxdLGMubmFtZSYmYi5wdXNoKGMubmFtZSksYz14aSghMSxjLCExKSxiLnB1c2goYy53aWR0aC50b1N0cmluZygpKSxiLnB1c2goYy5oZWlnaHQudG9TdHJpbmcoKSksYz1DZyhiLmpvaW4oXCJcIikpKTpjPTA7MCE9YyYmWihhLFwiaWZrXCIsYy50b1N0cmluZygpKX0sanY9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5yLmRldmljZVBpeGVsUmF0aW87KGI9XCJudW1iZXJcIj09PXR5cGVvZiBiPytiLnRvRml4ZWQoMyk6bnVsbCkmJlooYSxcInVfc2RcIixiLHskOiExfSl9LFp1PWZ1bmN0aW9uKGEpe1ooYSxcImVpZFwiLGEubW9kZWwuVSk7dmFyIGI9TWkoKS5zcGxpdChcIixcIik7YiYmWihhLFwiZGVidWdfZXhwZXJpbWVudF9pZFwiLGIpfSxjdj1mdW5jdGlvbihhLGIsYyl7Yi5mb3JFYWNoKGZ1bmN0aW9uKGwpe3p2KGEsbC5nZXRBZFVuaXRQYXRoKCkpfSk7dmFyIGQ9YS5qLGU9ZC5OLGY9ZC5SO2Q9Yi5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGZbbC5nZXRTbG90RWxlbWVudElkKCldfSk7WihhLFwiaXVfcGFydHNcIixhLkEpO1ooYSxcImVuY19wcmV2X2l1c1wiLGEuVSk7WihhLFwicHJldl9pdV9zenNcIixkLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gU2IobCl9KS5qb2luKCkpO2lmKGQuc29tZShmdW5jdGlvbihsKXtyZXR1cm4oej14YShsKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosXCJmbHVpZFwiKX0pKXt2YXIgZz1kLm1hcChmdW5jdGlvbihsKXtyZXR1cm4oej14YShsKSxfLkEoeixcImluY2x1ZGVzXCIpKS5jYWxsKHosXCJmbHVpZFwiKT9cImhlaWdodFwiOlwiMFwifSk7WihhLFwiZmx1aWRcIixnKX1aKGEsXCJmc2ZzXCIsSGIoYixmdW5jdGlvbihsKXtsPShsPWZbbC5nZXRTbG90RWxlbWVudElkKCldKSYmeChsLDEyKTt2YXIgbT0hIXgoZSwxMyk7cmV0dXJuKG51bGw9PWw/bTpsKT8xOjB9KSk7WihhLFwiZnNic1wiLEhiKGIsZnVuY3Rpb24obCl7dmFyIG09YS5qLG49bS5OO2w9bS5SW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXTtuPU8obixQaiwxOCk7cmV0dXJuKChsPWwmJk8obCxQaiwxMykpJiZudWxsIT1CKGwsMyk/eChsLDMpOm4mJngobiwzKSk/MTowfSkpO0F2KGEsYik7QnYoYSxmW2JbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpXSk7KGc9Q3YoZCkpJiZaKGEsXCJpc3RzXCIsZyk7WihhLFwiZmFzXCIsSGIoZCxmdW5jdGlvbihsKXtyZXR1cm4gbHAoZ2sobCkpfSkpOyhnPUR2KGQsZnVuY3Rpb24obCl7cmV0dXJuIDQ9PWdrKGwpfSkpJiZaKGEsXCJyYnZzXCIsZyk7Xy55KDk4KSYmKGI9RHYoYixmdW5jdGlvbihsKXt2YXIgbT1mW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXSxuO2lmKG49IWxwKGdrKG0pKSl7bj1udWxsO0FycmF5LmlzQXJyYXkoeGEobSlbMF0pJiYobj1fLkYoeGEobSlbMF0pLG09bi5uZXh0KCkudmFsdWUsbj1uLm5leHQoKS52YWx1ZSxuPXt3aWR0aDptLGhlaWdodDpufSk7YTp7dmFyIHE9dGEobCxjKTtsPXtHYzpuLGxjOiExfTt2YXIgdz12b2lkIDA9PT1sP3t9Omw7bD12b2lkIDA9PT13LkdjP251bGw6dy5HYzttPXZvaWQgMD09PXcuamQ/MTAwOncuamQ7bj12b2lkIDA9PT13LkNkPzUwOncuQ2Q7dz12b2lkIDA9PT13LmxjPyEwOncubGM7Zm9yKHZhciB1PVRjKCksQz0hMTtxOyl7aWYoIW0tLXx8VGMoKS11Pj1uKXtuPSExO2JyZWFrIGF9c3dpdGNoKHEubm9kZVR5cGUpe2Nhc2UgOTp0cnl7dmFyIFE9cS5wYXJlbnRXaW5kb3d8fHEuZGVmYXVsdFZpZXc7aWYoUSl7dmFyIE49US5mcmFtZUVsZW1lbnQ7aWYoTiYmcWcoUS5wYXJlbnQpKXtxPU47YnJlYWt9fX1jYXRjaCh4Yyl7fXE9bnVsbDticmVhaztjYXNlIDE6dmFyIEg9cSxxYTtpZihxYT13KXtiOnt0cnl7aWYoMDxILm9mZnNldFdpZHRoJiYwPEgub2Zmc2V0SGVpZ2h0JiZILnN0eWxlJiZcIm5vbmVcIiE9PUguc3R5bGUuZGlzcGxheSYmXCJoaWRkZW5cIiE9PUguc3R5bGUudmlzaWJpbGl0eSYmKCFILnN0eWxlLm9wYWNpdHl8fDAhPT1OdW1iZXIoSC5zdHlsZS5vcGFjaXR5KSkpe3ZhciBvYj1ILmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciB3Yz0wPG9iLnJpZ2h0JiYwPG9iLmJvdHRvbTticmVhayBifX1jYXRjaCh4Yyl7fXdjPSExfXFhPSF3Y31pZihxYSl7bj0hMTticmVhayBhfUN8fCgvXmh0bWx8Ym9keSQvaS50ZXN0KEgudGFnTmFtZSk/Qz1udWxsOihDPUguc3R5bGUucG9zaXRpb258fCh3YShILHdpbmRvdyl8fHt9KS5wb3NpdGlvbixDPS9eZml4ZWQvaS50ZXN0KEMpP0g6bnVsbCksQz0hIUMmJighbHx8Qy5vZmZzZXRXaWR0aCpDLm9mZnNldEhlaWdodDw9NCpsLndpZHRoKmwuaGVpZ2h0KSk7cT1xLnBhcmVudE5vZGV9fW49Q319cmV0dXJuIG59KSkmJlooYSxcInBmeHNcIixiKTt2YXIgaD17fTtkLmZvckVhY2goZnVuY3Rpb24obCl7KGw9bC5nZXRDbGlja1VybCgpKSYmKGhbbF09KGhbbF18fDApKzEpfSk7aWYoIXlnKGgpKXtiPW5ldyBXayhcImdwdF9zcmFfc2V0Y2xpY2t1cmxcIik7dmFyIGs9W107Xy5KYihoLGZ1bmN0aW9uKGwsbSl7ay5wdXNoKG0ubGVuZ3RoK1wiOlwiK2wpfSk7RShiLFwibGVuZnJlcXNcIixrLmpvaW4oKSk7bGIoYik7WWsoYixfLkRqKDU4KSl9fSxCdj1mdW5jdGlvbihhLGIpeyhfLnkoMzY0KT94KGEuai5OLDYpOmEubSl8fCFiLmdldENsaWNrVXJsKCl8fFooYSxcImNsaWNrXCIsYi5nZXRDbGlja1VybCgpKX0sRXY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKylpZihcIlwiIT1iW2NdKXtmb3IodmFyIGQ9ITEsZT0wO2U8YS5BLmxlbmd0aDtlKyspaWYoYltjXT09YS5BW2VdKXtkPSEwO2JyZWFrfWR8fGEuQS5wdXNoKGJbY10pfX0sRnY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9XCJcIixkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKDA8ZCljKz1cIi9cIjtlbHNlIGlmKFwiXCI9PWJbMF0pY29udGludWU7Zm9yKHZhciBlPTA7ZTxhLkEubGVuZ3RoO2UrKylpZihiW2RdPT1hLkFbZV0pe2MrPWU7YnJlYWt9fXJldHVybiBjfSx6dj1mdW5jdGlvbihhLGIpe3ZhciBjPVwiXCI7XCJcIiE9YiYmKGI9Yi5zcGxpdChcIi9cIikubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLnJlcGxhY2UoLywvZyxcIjpcIil9KSxFdihhLGIpLGM9RnYoYSxiKSk7YS5VLnB1c2goYyl9LEN2PWZ1bmN0aW9uKGEpe3JldHVybiBEdihhLGZ1bmN0aW9uKGIpe3JldHVybiAwIT1nayhiKX0pfSxEdj1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyBYcTthLmZvckVhY2goZnVuY3Rpb24oZCxlKXtjLnNldChhLmxlbmd0aC1lLTEsYihkKSl9KTtyZXR1cm4gWXEoYyl9LHl2PWZ1bmN0aW9uKGEpe3ZhciBiPWEubW9kZWwuai5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIEZ0KGEubW9kZWwsYyl9KTtaKGEsXCJ1Y2lzXCIsYix7cWE6XCJ8XCJ9KX0sWXU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5qLk47eChiLDIxKSYmKFooYSxcImh4dmFcIiwxLHskOiExfSksWihhLFwiY21zaWRcIixCKGIsMjMpKSxaKGEsXCJ2aWRcIixCKGIsMjIpKSl9LEF2PWZ1bmN0aW9uKGEsYil7dmFyIGM9SGIoYixmdW5jdGlvbihkKXtkPWQuVzt2YXIgZT1fLk9pKCk7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oKGQmJmU/ZS1kOjApLzFFMywxODAwKSl9LHZvaWQgMCxcIn5cIik7WihhLFwicmlzXCIsYyk7Yj1IYihiLGZ1bmN0aW9uKGQpe2EuRyYmKGQuVz1fLk9pKCl8fDAsZC5BKyspO3JldHVybiBkLkEtMX0pO1ooYSxcInJjc1wiLGIpfSxydj1mdW5jdGlvbihhKXtpZighXy5EaigyMjEpJiZfLnkoMzA4KSl7dmFyIGI9bmV3IGhxO2Zvcih2YXIgYz1bXSxkPS9eX0dFU1BTSy0oLispJC8sZT0wO2U8d2luZG93LmxvY2FsU3RvcmFnZS5sZW5ndGg7ZSsrKXt2YXIgZj0oZC5leGVjKHdpbmRvdy5sb2NhbFN0b3JhZ2Uua2V5KGUpKXx8W10pWzFdO2YmJmMucHVzaChmKX1jPV8uRihjKTtmb3IoZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpZD1kLnZhbHVlLGU9aGIoKS5nZXQoZCksZS5nZXRFcnJvcigpP2liKGUuZ2V0RXJyb3IoKSxkLGUuZXJyb3JNZXNzYWdlKTooZD1lLklhLDAhPT1tdShkKSYmMSE9PW11KGQpfHx4ZihiLDIsZCxrcSkpO3VmKGIsa3EsMikubGVuZ3RoPyhjPW5ldyBXZSxkPXVmKGIsaXEsMSksMDxkLmxlbmd0aCYmZmYoYywxLGQsbHEpLGQ9dWYoYixrcSwyKSwwPGQubGVuZ3RoJiZmZihjLDIsZCxtcSksYj1VZShaZShjKSx2b2lkIDApKTpiPW51bGw7WihhLFwiYTNwXCIsYil9fSxaPWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD97fTpkO2EuSFtiXXx8dm9pZCAwPT09Y3x8bnVsbD09PWN8fGEuQy5wdXNoKHtwYjpiLHZhbHVlOmMsb3B0aW9uczpkfSl9LFR1PWZ1bmN0aW9uKGEpe3ZhciBiPV8ueSgzODcpJiYheChhLm8sNSk/XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL2dhbXBhZC9hZHM/XCI6XCJcIitfLkRqKDI0NykrXCIvZ2FtcGFkL2Fkcz9cIjthLmw9Yjtmb3IoYj0wO2I8YS5DLmxlbmd0aDtiKyspe3ZhciBjPWEuQ1tiXTtpZihcImFkc2Vuc2VQYXJhbWV0ZXJzXCI9PT1jLnBiKUd2KGEsYyk7ZWxzZXt2YXIgZD1IdihjKTtpZihJdihhLGIsYyxkKSlicmVha319fSxIdj1mdW5jdGlvbihhKXt2YXIgYj1hLnZhbHVlLGM9YS5vcHRpb25zLGQ9dm9pZCAwPT09Yy4kPyEwOmMuJDthPXZvaWQgMD09PWMucWE/XCIsXCI6Yy5xYTtjPXZvaWQgMD09PWMubmE/ITE6Yy5uYTtyZXR1cm4gXy5NYyhiKT9BcnJheS5pc0FycmF5KGIpJiZiLmxlbmd0aD9iLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gSnYoZSxkKX0pLmpvaW4oSnYoYSxkKSk6bnVsbDpudWxsPT1ifHwhYyYmMD09Yj9udWxsOkp2KGIsZCl9LEl2PWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFkKXJldHVybiExO3ZhciBlPWMucGIsZj1jLnZhbHVlO2M9Yy5vcHRpb25zO2M9dm9pZCAwPT09Yy4kPyEwOmMuJDtkPWUrXCI9XCIrZDtpZihfLnkoMTY4KSYmMTUzNTI8PWEubC5sZW5ndGgrZC5sZW5ndGgpe2lmKFwic3VwcG9ydGluZ191cmxzXCI9PWUpZm9yKGQ9MDtkPGYubGVuZ3RoO2QrKyl7dmFyIGc9KGQ/SnYoXCIsXCIsYyk6XCImXCIrZStcIj1cIikrSnYoZltkXSxjKTtpZigxNTM1MjxhLmwubGVuZ3RoK2cubGVuZ3RoKWJyZWFrO2EubCs9Z31rYihcImdwdF91cmxfdHJ1bmNcIixmdW5jdGlvbihoKXtFKGgsXCJscHNcIixhLkMuc2xpY2UoYikuZmlsdGVyKGZ1bmN0aW9uKGspe3JldHVybiEhSHYoayl9KS5tYXAoZnVuY3Rpb24oayl7cmV0dXJuIGsucGJ9KS5qb2luKCkpO2xiKGgpfSk7YS5sKz1cIiZ0cnVuYz0xXCI7cmV0dXJuITB9XCI/XCIhPT1hLmxbYS5sLmxlbmd0aC0xXSYmKGEubCs9XCImXCIpO2EubCs9ZDtyZXR1cm4hMX0sR3Y9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPVtdO2I9Xy5GKEFycmF5LmlzQXJyYXkoYi52YWx1ZSk/Yi52YWx1ZTpbXSk7Zm9yKHZhciBlPWIubmV4dCgpOyFlLmRvbmU7ZT1iLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtlPWYucGI7dmFyIGc9Zi5uZCxoPWYuemQ7Zj1nP2VuY29kZVVSSUNvbXBvbmVudChnLnRvU3RyaW5nKCkpOlwiXCI7aD8oZz1oLm1hcChmdW5jdGlvbihrKXtyZXR1cm4gaz9lbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KGspKTpcIlwifSkuam9pbihcIixcIiksZC5wdXNoKGUrXCIsXCIrZW5jb2RlVVJJQ29tcG9uZW50KGYpK1wiLFwiK2cpKTpnJiZcInVybFwiIT1lJiZjLnB1c2goZStcIj1cIitmKX1jLmxlbmd0aCYmKGEubCs9XCImXCIrYy5qb2luKFwiJlwiKSk7ZC5sZW5ndGgmJihhLmwrPVwiJnNwcz1cIitkLmpvaW4oXCJ8XCIpKX0sbXY9ZnVuY3Rpb24oYSl7YT1xZyhhLnRvcCk/YS50b3A6YTtyZXR1cm4gXy5NYyhhLkFNUCkmJiEhQmcoYS5BTVAsZnVuY3Rpb24oYixjKXtyZXR1cm4hL15pbmFib3gvaS50ZXN0KGMpfSl9LEp2PWZ1bmN0aW9uKGEsYil7YT1hLnRvU3RyaW5nKCk7cmV0dXJuIGI/ZW5jb2RlVVJJQ29tcG9uZW50KGEpOmF9LHR2PW5ldyBfLnlhKC05LC05KTt2YXIgS3Y9bnVsbCxOdj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5qPW5ldyB0LlNldDt0aGlzLmw9bmV3IHQuTWFwO3RoaXMudj10ay5CKCk7Xy52KF8ucixcIkRPTUNvbnRlbnRMb2FkZWRcIixHKDMzNCxmdW5jdGlvbigpe2Zvcih2YXIgYj1fLkYoXy5BKGEuaixcInZhbHVlc1wiKS5jYWxsKGEuaikpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxMdihhLGMpJiZhLmouZGVsZXRlKGMpfSkpO1NvKEkuQigpLE5vLDcyNCxmdW5jdGlvbihiKXsoYj1RcC5CKCkuai5nZXQoYil8fG51bGwpJiZNdihhLGIpfSk7U28oSS5CKCksT28sNzI1LGZ1bmN0aW9uKGIpe2lmKGI9UXAuQigpLmouZ2V0KGIpfHxudWxsKXt2YXIgYz1hLmwuZ2V0KGIpO251bGwhPWM/cXQoYyxiLmwpOk12KGEsYil9fSl9LE12PWZ1bmN0aW9uKGEsYil7THYoYSxiKT9hLmouZGVsZXRlKGIpOihhLmouYWRkKGIpLF8uUihiLGZ1bmN0aW9uKCl7YS5qLmRlbGV0ZShiKX0pKX0sTHY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1wYShiLF8uci5kb2N1bWVudCk7aWYoYyYmXCJESVZcIj09Yy5ub2RlTmFtZSl7dmFyIGQ9Xy55KDg3KTtjPW5ldyBvdCh7TDpfLnIsVmE6YS52LGtiOmMscmE6ZnVuY3Rpb24oZSl7YmwoMzM2LGUsMSl9LHhkOmR9KTtpZihjLnYpcmV0dXJuIHF0KGMsYi5sKSxhLmwuc2V0KGIsYyksbG8oYixmdW5jdGlvbigpe3JldHVybiB2b2lkIGEubC5kZWxldGUoYil9KSwhMH1yZXR1cm4hMX07dmFyIExiPW5ldyB0LlNldDt2YXIgT3Y9ZnVuY3Rpb24oYSxiKXtiPWVuY29kZVVSSUNvbXBvbmVudChiKTtiPUJkKFwiZGF0YTp0ZXh0L2h0bWwsXCIrYik7YS5zcmM9eWQoYikudG9TdHJpbmcoKX07dmFyIFB2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hdGgubWF4KFwic3RyaW5nXCI9PT10eXBlb2YgYT9fLkEoYSxcImVuZHNXaXRoXCIpLmNhbGwoYSxcInB4XCIpP3BhcnNlSW50KGEsMTApOjA6YSxiKStcInB4XCJ9LFF2PWZ1bmN0aW9uKGEsYixjLGQsZSl7YT1qZyhuZXcgVWYoYSksXCJESVZcIik7YS5pZD1jO2EubmFtZT1jO2M9YS5zdHlsZTtjLmJvcmRlcj1cIjBwdCBub25lXCI7ZCYmKGMubWFyZ2luPVwiYXV0b1wiLGMudGV4dEFsaWduPVwiY2VudGVyXCIpO2UmJihkPUFycmF5LmlzQXJyYXkoZSksYy53aWR0aD1kP2VbMF0rXCJweFwiOlwiMTAwJVwiLGMuaGVpZ2h0PWQ/ZVsxXStcInB4XCI6XCIwJVwiKTtiLmFwcGVuZENoaWxkKGEpO3JldHVybiBhfSxTdj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbil7dmFyIHE9UnYsdz1ucC5CKCkudix1O0FycmF5LmlzQXJyYXkoZCk/dT1uZXcgXy5UZihkWzBdLGRbMV0pOnU9MTtkPWh8fHgoZiw0KXx8Xy55KDI0MikmJm51bGw9PUIoZiw0KT9MaygpOnZvaWQgMDtnPWd8fHZvaWQgMDtfLnkoMzU0KXx8KGc9Xy55KDMzOCk/ZnQ6Y3QsZz14KGYsMyk/Zzp2b2lkIDApO3JldHVybiBuZXcgWXMoe1RiOmEsdGM6YixhZDpxLGNvbnRlbnQ6bnVsbD09PWw/dXMoYyk6XCI8c3RhcnRndWFyZD5cIitjK1wiPGVuZGd1YXJkPlwiLHNpemU6dSxoZDp7aW5mbzpmdW5jdGlvbigpe30sSjpmdW5jdGlvbigpe30sZXJyb3I6ZnVuY3Rpb24oKXt9fSxTYzprLHljOmUsRmM6ZyxwZXJtaXNzaW9uczp7d2I6bnVsbCE9QihmLDEpPyEheChmLDEpOiFoLHhiOm51bGwhPUIoZiwyKT8hIXgoZiwyKTohMX0sbmI6ISFYYigpLmZpZldpbix0ZDpabigpLFBjOiRuKCksSmM6ITEsaG9zdHBhZ2VMaWJyYXJ5VG9rZW5zOncscmE6YmwsYWI6bnVsbD09PWw/dm9pZCAwOmwsdW5pcXVlSWQ6bix3YTptLEVjOmR9KX0sVHY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1Ucyg0OTUsZnVuY3Rpb24oKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsYyk7YigpfSxibCk7YS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGMpfSxVdj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dm9pZCAwPT09ZD8hMDpkO3ZhciBlPXZvaWQgMD09PWU/ITA6ZTtiPXVzKGIsXCI8c2NyaXB0PnZhciBpbkRhcElGPXRydWUsaW5HcHRJRj10cnVlO1xceDNjL3NjcmlwdD5cIik7dHJ5e3ZhciBmPWEuY29udGVudFdpbmRvdz9hLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6YS5jb250ZW50RG9jdW1lbnQ7ZCYmJGQoKSYmZi5vcGVuKFwidGV4dC9odG1sXCIsXCJyZXBsYWNlXCIpO2MoKTtmLndyaXRlKGIpO2EuY29udGVudFdpbmRvdyYmYS5jb250ZW50V2luZG93Lmhpc3RvcnkmJmEuY29udGVudFdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSYmRWQoYS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYsXCIjXCIpJiZhLmNvbnRlbnRXaW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxcIlwiLFwiI1wiK01hdGgucmFuZG9tKCkpO2UmJmYuY2xvc2UoKX1jYXRjaChnKXtjbCg2NTMsZywhMCl9fSxWdj1mdW5jdGlvbihhKXt0cnl7VHYoYSxmdW5jdGlvbigpe2EucmVtb3ZlQXR0cmlidXRlKFwibmFtZVwiKX0pLE92KGEsJzxzY3JpcHQ+ZG9jdW1lbnQub3BlbihcInRleHQvaHRtbFwiLFwicmVwbGFjZVwiKTt2YXIgYT13aW5kb3cubmFtZTt3aW5kb3cubmFtZT1cIlwiO2RvY3VtZW50LndyaXRlKGEpO2RvY3VtZW50LmNsb3NlKCk7XFx4M2Mvc2NyaXB0PicpfWNhdGNoKGIpe2NsKDY2OCxiLCEwKX19O3ZhciBXdj1mdW5jdGlvbihhKXt2YXIgYj1fLnJhKDgsLTEpO3JldHVybi0xIT1iP2I6bnVsbCE9QihhLDEpP251bGwhPUIoYSwzKSYmMCE9UmcoKT9CKGEsMSkqbGYoYSwzKTpCKGEsMSk6bnVsbH0sWHY9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPUIoYSwyKT9udWxsIT1CKGEsMykmJjAhPVJnKCk/QihhLDIpKmxmKGEsMyk6QihhLDIpOm51bGx9LFl2PWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBOajthPV8uRihhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXtjPWMudmFsdWU7aWYobnVsbCE9QihjLDEpKXt2YXIgZD1CKGMsMSk7RChiLDEsZCl9bnVsbCE9QihjLDIpJiYoZD1CKGMsMiksRChiLDIsZCkpO251bGwhPUIoYywzKSYmKGM9bGYoYywzKSxEKGIsMyxjKSl9cmV0dXJuIGJ9O3ZhciBadj1mdW5jdGlvbigpe3RoaXMubW9kdWxlPTJ9O1p2LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcodGhpcy5tb2R1bGUpfTtfLiR2PW5ldyBadjt2YXIgYXcsYncsZXc7YXc9e307Ync9KGF3WzJdPXtrZDpcInBhZ2VfbGV2ZWxfYWRzXCJ9LGF3KTtfLmN3PWZ1bmN0aW9uKCl7dGhpcy5sPXt9O3RoaXMuaj1id307Xy5kdz1mdW5jdGlvbihhLGIpe2I9Yi5tb2R1bGU7YS5sW2JdPWEubFtiXXx8bmV3IEJyO3JldHVybiBhLmxbYl19O2V3PWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5tb2R1bGU7Yj1cIl9ncHRfanNfbG9hZF9cIitjK1wiX1wiO3ZhciBkPUcoMzQwLGZ1bmN0aW9uKGUpe2lmKGEualtjXSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpe3ZhciBmPWEualtjXTtmPSh2b2lkIDA9PT1mLlFjP1tdOmYuUWMpLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gXy5kdyhhLGcpLmp9KTt0LlByb21pc2UuYWxsKGYpLnRoZW4oZnVuY3Rpb24oKXtlLmNhbGwoXy5yLF8pfSl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFhiKCksYix7dmFsdWU6ZnVuY3Rpb24oZSl7aWYoZCl7dmFyIGY9ZDtkPW51bGw7ZihlKX19LHdyaXRhYmxlOiExLGVudW1lcmFibGU6ITF9KX07Xy5jdy5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXt2YXIgYj1fLmR3KHRoaXMsYSksYz10aGlzLmpbYS5tb2R1bGVdLmtkLGQ9Xy55KDM5Myk/XCJodHRwczovL3d3dy5nb29nbGV0YWdzZXJ2aWNlcy5jb20vXCI6d3MuTmEoKSxlPXZzLk5hKCksZj0kYSgpO3ZhciBnPV8ucmEoMjUpO2M9ZCtlK2MrXCJfXCIrZitcIi5qc1wiO2cmJihjKz1cIj9cIitnKTtnPWM7ZXcodGhpcyxhKTt1Zyhkb2N1bWVudCxsZyhnKSk7cmV0dXJuIGIuan07SWMoXy5jdyk7Xy5jdy5wcm90b3R5cGUubG9hZD1HYihfLmN3LnByb3RvdHlwZS5sb2FkKTt2YXIgUnY9XCIzcmQgcGFydHkgYWQgY29udGVudFwiO1diKFwic2V0QWRJZnJhbWVUaXRsZVwiLFMoNzI5LGZ1bmN0aW9uKGEpe1J2PWF9KSk7dmFyIGZ3PWZ1bmN0aW9uKGEsYixjKXtlbC5jYWxsKHRoaXMpO3RoaXMubD1jO0QodGhpcy5sLDE3LCEwKTt0aGlzLmo9YTtiLnhhKHRoaXMuaixjKTt0aGlzLm89Yn07Xy5KKGZ3LG9sKTtmdy5wcm90b3R5cGUuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJ0KHRoaXMpfTtmdy5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmouZ2V0U2xvdEVsZW1lbnRJZCgpO2RvY3VtZW50LndyaXRlKCc8ZGl2IGlkPVwiJytnZShiKSsnXCI+PC9kaXY+Jyk7cGEodGhpcy5qKT9ndyh0aGlzLm8sYSx0aGlzLmopOmtiKFwiZ3B0X3BiX3dyaXRlXCIsZnVuY3Rpb24oYyl7bGIoYyl9KX07ZncucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe1wicGFnZV91cmxcIj09YSYmYiYmRCh0aGlzLmwsMTgsU3RyaW5nKGIpKTtyZXR1cm4gdGhpc307ZncucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm5cInBhZ2VfdXJsXCIhPT1hP251bGw6Qih0aGlzLmwsMTgpfTt2YXIgaHc9ZnVuY3Rpb24oKXt0aGlzLmo9e319LGp3PWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtjJiYoZD1cIi8vXCIrYytcIi5zYWZlZnJhbWUuZ29vZ2xlc3luZGljYXRpb24uY29tXCIpO2M9U3MoYixabigpLCRuKCksITAsZCk7YS5qW2NdfHwoYS5qW2NdPTEsZnIoKT9pdyhhLGMpOlhiKCkuZmlmV2lufHwoYj1iLmRvY3VtZW50LGE9amcobmV3IFVmKGIpLFwiSUZSQU1FXCIpLGEuc3JjPWMsYS5zdHlsZS52aXNpYmlsaXR5PVwiaGlkZGVuXCIsYS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGI9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKSwwPGIubGVuZ3RoJiYoYj1iW2IubGVuZ3RoLTFdLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIubmV4dFNpYmxpbmcpKSkpfSxpdz1mdW5jdGlvbihhLGIpe3ZhciBjPWdyKGRvY3VtZW50LGIsXCJwcmVmZXRjaFwiLFwiXCIpO2MmJl8udihjLFwibG9hZFwiLGZ1bmN0aW9uKCl7YS5qW2JdPTM7YyYmXy5mZyhjKX0pfTtJYyhodyk7dmFyIGt3PWZ1bmN0aW9uKGEsYixjLGQpe18uUihhLENoKGIsRyg1MDYsZnVuY3Rpb24oZSl7ZT1KU09OLnBhcnNlKGUuZGF0YSk7ZS5tZXNzYWdlPT09YyYmZChlKX0pKSl9O3ZhciBsdz1mdW5jdGlvbihhLGIsYyxkLGUpe18uUC5jYWxsKHRoaXMpO3RoaXMuc2xvdD1iO3RoaXMubT1jO3RoaXMuaGE9ZDt0aGlzLm89bnVsbDt0aGlzLkE9bmV3IFVmKGEpO3RoaXMuQz1lfTtfLkoobHcsXy5QKTt2YXIgbXc9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWMudWEsZT1jLlVhLGY9Yy5NYSxnPWMuWmMsaD1jLmJjLGs9Yy5xYixsPWMuSmIsbT1jLmlzQmFja2ZpbGwsbj1jLk9iLHE9Yy5hYyx3PWMuY2M7Yz1jLlVjfHxcIlwiO2UmJmUuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIixjKTtZaSh0ay5CKCksXCI1XCIsYS5zbG90LmwpO3ZhciB1PWEuc2xvdC5nZXRTbG90SWQoKTtfLnkoNDEyKT9RbyhJLkIoKSxDbyx1KTphLnNsb3QuVGEoKTthLm89YS5sKFwiaGVpZ2h0XCI9PT1nP1wiZmx1aWRcIjpbYi53aWR0aCxiLmhlaWdodF0se3VhOmQsTWE6ZixiYzpoLHFiOmssSmI6bCxpc0JhY2tmaWxsOm0sT2I6bixhYzpxLGNjOnd9KTtxJiZjaChhLm8scSk7Xy55KDQxMil8fHBvKGEuc2xvdCk7UW8oSS5CKCksUGIsdSx7c2l6ZTpifSk7Yj1fLnJhKDE5KTtpZigwPGIpe3ZhciBDPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtRbyhJLkIoKSx6byx1KX0sMUUzKmIpO18uUihhLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgY2xlYXJUaW1lb3V0KEMpfSl9cmV0dXJuIGEub307bHcucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbihhKXthJiZhLnNldEF0dHJpYnV0ZShcImRhdGEtbG9hZC1jb21wbGV0ZVwiLCEwKTtRbyhJLkIoKSxLbyx0aGlzLnNsb3QuZ2V0U2xvdElkKCkpO1lpKHRrLkIoKSxcIjZcIix0aGlzLnNsb3QubCl9O2x3LnByb3RvdHlwZS52PWZ1bmN0aW9uKCl7Xy5QLnByb3RvdHlwZS52LmNhbGwodGhpcyk7dmFyIGE9cGEodGhpcy5zbG90LHRoaXMuQS5qKTthJiZhLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtZ29vZ2xlLXF1ZXJ5LWlkXCIpO3RoaXMubz1udWxsfTt2YXIgbnc9ZnVuY3Rpb24oKXtsdy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSihudyxsdyk7dmFyIG93PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1VayhhLnNsb3QuZ2V0U2xvdElkKCkpLGU9YS5BLmo7YT1SdjtlPXZvaWQgMD09PWU/ZG9jdW1lbnQ6ZTtlPWpnKG5ldyBVZihlKSxcIklGUkFNRVwiKTtlLmlkPWQ7ZS50aXRsZT1hO2UubmFtZT1jfHxkO0FycmF5LmlzQXJyYXkoYik/bnVsbCE9YlswXSYmbnVsbCE9YlsxXSYmKGUud2lkdGg9U3RyaW5nKGJbMF0pLGUuaGVpZ2h0PVN0cmluZyhiWzFdKSk6KGUud2lkdGg9XCIxMDAlXCIsZS5oZWlnaHQ9XCIwXCIpO2UuYWxsb3dUcmFuc3BhcmVuY3k9XCJ0cnVlXCI7ZS5zY3JvbGxpbmc9XCJub1wiO2UubWFyZ2luV2lkdGg9XCIwXCI7ZS5tYXJnaW5IZWlnaHQ9XCIwXCI7ZS5mcmFtZUJvcmRlcj1cIjBcIjtlLnN0eWxlLmJvcmRlcj1cIjBcIjtlLnN0eWxlLnZlcnRpY2FsQWxpZ249XCJib3R0b21cIjtyZXR1cm4gZX0scHc9ZnVuY3Rpb24oYSxiLGMsZCl7ZC5hcHBlbmRDaGlsZChiKTtcInN0cmluZ1wiIT09dHlwZW9mIGMmJihiLndpZHRoPVN0cmluZyhjWzBdKSxiLmhlaWdodD1TdHJpbmcoY1sxXSkpO3ZhciBlPV8ucmEoNDIwKTtpZigwPT09ZSlJdChiLGEuc2xvdCxmdW5jdGlvbigpe3JldHVybiBhLmxvYWRlZChiKX0sYS5DLGEubSk7ZWxzZXt2YXIgZj1HKDc3NCxmdW5jdGlvbigpe2lmKDI9PT1lfHwoXy55KDQxMik/ZnAoYS5tLGEuc2xvdCk6YS5zbG90LkQpKWEubG9hZGVkKGIpLF8ucWIoYixcImxvYWRcIixmKX0pO18udihiLFwibG9hZFwiLGYpfX07dmFyIHF3PWZ1bmN0aW9uKCl7bncuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoocXcsbncpO3F3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5NYTtiPW93KHRoaXMsYSxiLnVhKTtWdihiKTtwdyh0aGlzLGIsYSxjKTtyZXR1cm4gYn07cXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIHJ3PWZ1bmN0aW9uKCl7bncuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtfLkoocncsbncpO3J3LnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi51YTtiPWIuTWE7dmFyIGQ9b3codGhpcyxhKTt0cnl7T3YoZCxjKX1jYXRjaChlKXtjbCg2NTQsZSwhMCl9cHcodGhpcyxkLGEsYik7cmV0dXJuIGR9O3J3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciBzdz1mdW5jdGlvbigpe2x3LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKHN3LGx3KTtzdy5wcm90b3R5cGUubD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD1iLnVhLGU9Yi5NYSxmPWIuYmMsZz1iLnFiLGg9Yi5KYixrPWIuaXNCYWNrZmlsbCxsPWIuT2IsbT1iLmFjLG49Yi5jYyxxPXRoaXMuaGE7Yj1xLk47cT1xLlJbdGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKV07Zj1RaihuZXcgUGosISFmKTtudWxsIT1uJiZEKGYsNCxuKTtmPWJvKFtmLE8oYixQaiwxOCkscSYmTyhxLFBqLDEzKV0pO3ZhciB3PVN0cmluZyh4KGYsNCkpO251bGwhPW4mJm4hPT14KGYsNCkmJmpsLkIoKS5KKEttKHcsU3RyaW5nKG4pKSk7a3x8a2IoXCJncHRfc2ZfclwiLGZ1bmN0aW9uKEMpe2xiKEMpO0UoQyxcIkdBTVwiLFN0cmluZyhuKSk7RShDLFwiRmluYWxcIix3KX0pO2g9aD9CKGgsMik6bnVsbDtiPWVwKHRoaXMubSx0aGlzLnNsb3QpO3ZhciB1PVN2KGUsVWsodGhpcy5zbG90LmdldFNsb3RJZCgpKSxkLGEsZnVuY3Rpb24oKXtyZXR1cm4gYy5sb2FkZWQodS5qKX0sZixnfHxudWxsLCEhaywhIWwsaCxiLG0pO18uUih0aGlzLGZ1bmN0aW9uKCl7dHJ5ezEwMCE9dS5zdGF0dXMmJigyPT11LkgmJihUcih1LnYpLHUuSD0wKSx3aW5kb3cuY2xlYXJUaW1lb3V0KHUuSyksdS5LPS0xLHUuQz0zLHUubCYmKHUubC56YSgpLHUubD1udWxsKSx1LlUmJnUuaj91LlUudW5vYnNlcnZlKHUuaik6KF8ucWIod2luZG93LFwicmVzaXplXCIsdS5JKSxfLnFiKHdpbmRvdyxcInNjcm9sbFwiLHUuSSkpLHUuQSYmdS5qJiZ1LkE9PV8uZ2codS5qKSYmdS5BLnJlbW92ZUNoaWxkKHUuaiksdS5qPW51bGwsdS5BPW51bGwsdS5VJiYodS5VLmRpc2Nvbm5lY3QoKSx1LlU9bnVsbCksdS5zdGF0dXM9MTAwKX1jYXRjaChDKXt9fSk7cmV0dXJuIHUuan07c3cucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbihhKXtsdy5wcm90b3R5cGUubG9hZGVkLmNhbGwodGhpcyxhKTthPXRoaXMuaGEuUlt0aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXTt5dSh7c2xvdDp0aGlzLnNsb3QsY2E6YX0pfTtzdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgdHc9ZnVuY3Rpb24oKXtudy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih0dyxudyk7dHcucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnVhLGQ9Yi5NYTtiPWIucWI7dmFyIGU9b3codGhpcyxhKTtiJiZlLnNldEF0dHJpYnV0ZShcInNhbmRib3hcIixiLmpvaW4oXCIgXCIpKTstMT09VmQuaW5kZXhPZihcImlQaG9uZVwiKSYmKGUuc3JjZG9jPVwiXCIpO3B3KHRoaXMsZSxhLGQpO1V2KGUsYyxmdW5jdGlvbigpe30pO3JldHVybiBlfTt0dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiEwfTt2YXIgdXc9ZnVuY3Rpb24oKXtudy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O18uSih1dyxudyk7dXcucHJvdG90eXBlLmw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnVhLGQ9Yi5NYSxlPWIucWI7Yj1vdyh0aGlzLGEpO3RyeXtlPWV8fHZvaWQgMDtlPXZvaWQgMD09PWU/ZHQ6ZTtiLnNldEF0dHJpYnV0ZShcInNhbmRib3hcIixlLmpvaW4oXCIgXCIpKTt2YXIgZj1uZXcgZmUoYyxudWxsLGVlKTtiLnNyY2RvYz1mIGluc3RhbmNlb2YgZmUmJmYuY29uc3RydWN0b3I9PT1mZT9mLmo6XCJ0eXBlX2Vycm9yOlNhZmVIdG1sXCJ9Y2F0Y2goZyl7Y2woNjU2LGcsITApfXB3KHRoaXMsYixhLGQpO3JldHVybiBifTt1dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgdnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1kb2N1bWVudDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBuZXcgdHcoZixiLGMsZCxlKTtjYXNlIDI6cmV0dXJuIG5ldyBydyhmLGIsYyxkLGUpO2Nhc2UgMzpyZXR1cm4gbmV3IHV3KGYsYixjLGQsZSk7Y2FzZSA0OnJldHVybiBuZXcgcXcoZixiLGMsZCxlKTtkZWZhdWx0OnJldHVybiBuZXcgc3coZixiLGMsZCxlKX19O3ZhciB3dz1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxsLG0sbixxLHcsdSxDLFEsTixILHFhLG9iKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5NPWI7dGhpcy5oYT1jO3RoaXMuTD1kO3RoaXMubT10aGlzLmwoKTt0aGlzLkE9dGhpcy5sKCk7dGhpcy5IPXRoaXMubCgpO3RoaXMuQz10aGlzLmwoKTt0aGlzLkc9dGhpcy5sKCk7dGhpcy5EPXRoaXMubCgpO3RoaXMuST10aGlzLmwoKTt0aGlzLlg9Vih0aGlzLGUpO0FyKHRoaXMubyxmKTt0aGlzLmRhPVYodGhpcyxnKTt0aGlzLlA9Vih0aGlzLGgpO3RoaXMuYmE9Vih0aGlzLGspO3RoaXMuYWE9Vih0aGlzLGwpO0FyKHRoaXMubyxvYik7dGhpcy5PPVcodGhpcyxtKTt0aGlzLlQ9Vyh0aGlzLG4pO3RoaXMuVj1XKHRoaXMscSk7dGhpcy5XPVcodGhpcyx3KTt0aGlzLmZhPVcodGhpcyx1KTt0aGlzLmdhPVcodGhpcyxDKTt0aGlzLlk9Vyh0aGlzLFEpO3RoaXMuSz1XKHRoaXMsTik7dGhpcy5lYT1XKHRoaXMsSCk7dGhpcy5rYT1XKHRoaXMscWEpfTtfLkood3csWSk7d3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4MH07d3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuZGEudmFsdWUsYz10aGlzLlAudmFsdWUsZD12dyh0aGlzLmFhLnZhbHVlLHRoaXMuc2xvdCx0aGlzLk0sdGhpcy5oYSxIcih0aGlzLk8pKTtfLndoKHRoaXMsZCk7dmFyIGU9dGhpcy5ULnZhbHVlLGY9bnVsbCE9PShhPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDptZihlLmdldEh0bWwoKSkpJiZ2b2lkIDAhPT1hP2E6dGhpcy5YLnZhbHVlO2lmKG51bGw9PWYpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGh0bWxcIik7dmFyIGc9dGhpcy5iYS52YWx1ZTt0aGlzLnNsb3QuST1mO3ZhciBoPW13KGQsZyx7dWE6ZixVYTpiLE1hOmMsVWM6dGhpcy5WLnZhbHVlLFpjOnRoaXMuVy52YWx1ZSxiYzp0aGlzLmZhLnZhbHVlLHFiOnRoaXMuZ2EudmFsdWUsSmI6ZSxpc0JhY2tmaWxsOnRoaXMuWS52YWx1ZSxPYjp0aGlzLksudmFsdWUsYWM6dGhpcy5lYS52YWx1ZSxjYzp0aGlzLmthLnZhbHVlfSk7ND09PWdrKHRoaXMuaGEuUlt0aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXSk/KGI9QXUodGhpcyx0aGlzLkwsXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7aWYoaC5jb250ZW50V2luZG93IT09ay5zb3VyY2UpdmFyIGw9ITE7ZWxzZSB0cnl7bD1cInJld2FyZGVkXCI9PT1KU09OLnBhcnNlKGsuZGF0YSkudHlwZX1jYXRjaChtKXtsPSExfXJldHVybiBsfSksVSh0aGlzLkMsYikpOkZyKHRoaXMuQyk7VSh0aGlzLm0saCk7VSh0aGlzLkEsZC5qKCkpO2Q9QXUodGhpcyx3aW5kb3csXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrLmRhdGEmJi0xIT09ay5kYXRhLmluZGV4T2YoXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIikmJmsuc291cmNlPT09aC5jb250ZW50V2luZG93fSk7VSh0aGlzLkcsZCk7ZD1BdSh0aGlzLHdpbmRvdyxcIm1lc3NhZ2VcIixmdW5jdGlvbihrKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGsuZGF0YSYmKDA9PWsuZGF0YS5sYXN0SW5kZXhPZihcInZpc2liaWxpdHktY2hhbmdlZC1cIiwwKXx8XCJpbXByZXNzaW9uLXZpZXdhYmxlXCI9PT1rLmRhdGEpJiZrLnNvdXJjZT09PWguY29udGVudFdpbmRvd30pO1UodGhpcy5ELGQpO1UodGhpcy5JLEF1KHRoaXMsaCxcImxvYWRcIikpO2Q9QXUodGhpcyx3aW5kb3csXCJtZXNzYWdlXCIsZnVuY3Rpb24oayl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBrLmRhdGEmJjA9PWsuZGF0YS5sYXN0SW5kZXhPZihcImFtcC1cIiwwKSYmIV8ueSgxMTEpJiZrLnNvdXJjZT09PWguY29udGVudFdpbmRvd30pO1UodGhpcy5ILGQpfTt2YXIgeHc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCl7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuc2xvdD1iO3RoaXMuY2E9Yzt0aGlzLm9hPWQ7dGhpcy5GPU9yKHRoaXMpO3RoaXMuQT1XKHRoaXMsZSk7dGhpcy5IPVYodGhpcyxmKTt0aGlzLkQ9Vih0aGlzLGcpO3RoaXMuRz1WKHRoaXMsaCk7dGhpcy5DPVcodGhpcyxrKTt0aGlzLkk9Vih0aGlzLGwpfTtfLkooeHcsWSk7eHcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5OX07eHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuSC52YWx1ZSxjPXRoaXMuRC52YWx1ZTtjLnN0eWxlLndpZHRoPVwiXCI7Yy5zdHlsZS5oZWlnaHQ9XCJcIjtpZihcImhlaWdodFwiIT09dGhpcy5BLnZhbHVlKXt2YXIgZD1udWxsIT09KGE9dGhpcy5DLnZhbHVlKSYmdm9pZCAwIT09YT9hOjAsZT10aGlzLkcudmFsdWUsZj10aGlzLkkudmFsdWUsZz17c2xvdDp0aGlzLnNsb3QsY2E6dGhpcy5jYX0saD0hMTtzd2l0Y2goZCl7Y2FzZSAxOmNhc2UgMjpoPXRoaXMubTt2YXIgaz10aGlzLm9hLGw9Zy5zbG90O3ZhciBtPWUud2lkdGgsbj1lLmhlaWdodCxxPTA7dmFyIHc9MDt2YXIgdT14YShnLmNhKTt1PV8uRih1KTtmb3IodmFyIEM9dS5uZXh0KCk7IUMuZG9uZTtDPXUubmV4dCgpKWlmKEM9Qy52YWx1ZSxBcnJheS5pc0FycmF5KEMpKXt2YXIgUT1fLkYoQyk7Qz1RLm5leHQoKS52YWx1ZTtRPVEubmV4dCgpLnZhbHVlO3E8QyYmKHE9Qyk7dzxRJiYodz1RKX13PVtxLHddO3E9d1swXTxtO249d1sxXTxuO3F8fG4/KHc9bStcInB4XCIsdT17XCJtYXgtaGVpZ2h0XCI6XCJub25lXCIsXCJtYXgtd2lkdGhcIjp3LHBhZGRpbmc6XCIwcHhcIix3aWR0aDp3fSxuJiYodS5oZWlnaHQ9XCJhdXRvXCIpLG51KGMsYix1KSxjPXt9LHEmJm0+cGFyc2VJbnQoZi53aWR0aCwxMCkmJihjLndpZHRoPXcsY1tcIm1heC13aWR0aFwiXT13KSxuJiYoYy5oZWlnaHQ9XCJhdXRvXCIsY1tcIm1heC1oZWlnaHRcIl09XCJub25lXCIpLHlnKGMpP2M9ITE6KGNbXCJwYWRkaW5nLVwiKyhcImx0clwiPT1mLmRpcmVjdGlvbj9cImxlZnRcIjpcInJpZ2h0XCIpXT1cIjBweFwiLF8uWGcoYixjKSxjPSEwKSk6Yz0hMTtiOnN3aXRjaChtPWUud2lkdGgsbj1oLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvd3x8Xy5yLGQpe2Nhc2UgMjpiPW91KGIsbixtLGYsayk7YnJlYWsgYjtjYXNlIDE6aWYoaz1iLnBhcmVudEVsZW1lbnQpaWYoZj1JayhrKSl7cT1mLndpZHRoO2Y9d2EocGEobCxuLmRvY3VtZW50KSxuKTtsPWYucG9zaXRpb247dT1wYXJzZUludChmLndpZHRoLDEwKXx8MDt3PXdhKGssbik7UT1cInJ0bFwiPT13LmRpcmVjdGlvbj9cIlJpZ2h0XCI6XCJMZWZ0XCI7az1RLnRvTG93ZXJDYXNlKCk7bj1cImFic29sdXRlXCI9PWw/MDpwYXJzZUludCh3W1wicGFkZGluZ1wiK1FdLDEwKTt3PXBhcnNlSW50KHdbXCJib3JkZXJcIitRK1wiV2lkdGhcIl0sMTApO0M9YmgoZik7UT0oQyYmQ1s0XXx8MCkqKFwiUmlnaHRcIj09UT8tMToxKTttPU1hdGgubWF4KE1hdGgucm91bmQoKHEtTWF0aC5tYXgodSxtKSkvMiksMCk7cT17fTt1PUMmJkNbM118fDE7aWYoMSE9KEMmJkNbMF18fDEpfHwxIT11KUNbMF09MSxDWzNdPTEscS50cmFuc2Zvcm09XCJtYXRyaXgoXCIrQy5qb2luKFwiLFwiKStcIilcIjt1PTA7c3dpdGNoKGwpe2Nhc2UgXCJmaXhlZFwiOmNhc2UgXCJyZWxhdGl2ZVwiOnU9cGFyc2VGbG9hdChmW2tdKXx8MDticmVhaztjYXNlIFwiYWJzb2x1dGVcIjpxW2tdPVwiMFwifXFbXCJtYXJnaW4tXCIra109bS1uLXctdS1RK1wicHhcIjtfLlhnKGIscSk7Yj0hMH1lbHNlIGI9ITE7ZWxzZSBiPSExO2JyZWFrIGI7ZGVmYXVsdDpiPSExfWN8fGI/KHF1KGgsZyxkLGUud2lkdGgsZS5oZWlnaHQsXCJncHRfc2xvdGV4cFwiKSxoPSEwKTpoPSExO2JyZWFrO2Nhc2UgMzpoPXRoaXMubSxtPXRoaXMub2EsbD1lLndpZHRoLGs9ZS5oZWlnaHQsaz49KHBhcnNlSW50KGYuaGVpZ2h0LDEwKXx8MCl8fFwibm9uZVwiPT1mLmRpc3BsYXl8fFwiaGlkZGVuXCI9PWYudmlzaWJpbGl0eXx8IW18fC0xMjI0NTkzMz09PW0ud2lkdGh8fGIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tPD1tLmhlaWdodD9oPSExOihmPXtoZWlnaHQ6aytcInB4XCJ9LG51KGMsYixmKSxfLlhnKGIsZikscXUoaCxnLDMsbCxrLFwiZ3B0X3Nsb3RyZWRcIiksaD0hMCl9IWgmJl8ueSgyMTIpJiZxdSh0aGlzLm0sZywwLGUud2lkdGgsZS5oZWlnaHQsXCJncHRfcGdicmtcIik7VGIodGhpcy5jYSx0aGlzLkEudmFsdWUsZSxkKX10aGlzLkYubm90aWZ5KCl9O3ZhciB5dz1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5tPW51bGw7dGhpcy5HPVcodGhpcyxhKTt0aGlzLkQ9Vyh0aGlzLGIpO3RoaXMuQz1XKHRoaXMsYyk7dGhpcy5BPVYodGhpcyxkKX07Xy5KKHl3LFkpO3l3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MTd9O3l3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuRC52YWx1ZSxjPXRoaXMuRy52YWx1ZTtudWxsPT10aGlzLkMudmFsdWV8fGJ8fG51bGw9PWN8fChiPUNoKHRoaXMuQS52YWx1ZSxHKDUwNCxmdW5jdGlvbihkKXtcImltcHJlc3Npb24tdmlld2FibGVcIj09PWQuZGF0YT9QbyhjLE1vLG51bGwse21iOiEwfSk6MD09PWQuZGF0YS5pbmRleE9mKFwidmlzaWJpbGl0eS1jaGFuZ2VkLVwiKSYmKGQ9L152aXNpYmlsaXR5LWNoYW5nZWQtKFxcZCsoXFwuXFxkKyk/KSQvLmV4ZWMoZC5kYXRhKSkmJihkPU51bWJlcihkWzFdKSwwPD1kJiYxPj1kJiYoMCE9PWQmJjEhPT1kfHxkIT09YS5tKSYmKG51bGwhPT1hLm18fDA8ZCkmJihhLm09ZCxQbyhjLE1vLG51bGwse21iOiExLGluVmlld1BlcmNlbnRhZ2U6KygxMDAqZCkudG9GaXhlZCgyKX0pKSl9KSksXy5SKHRoaXMsYikpfTt2YXIgenc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCl7WS5jYWxsKHRoaXMpO3RoaXMuSz1XKHRoaXMsYSk7dGhpcy5NPVcodGhpcyxiKTt0aGlzLkk9Vyh0aGlzLGMpO3RoaXMuSD1XKHRoaXMsZCk7dGhpcy5PPVcodGhpcyxlKTt0aGlzLkE9Vih0aGlzLGYpO3RoaXMubT1WKHRoaXMsZyk7dGhpcy5DPVYodGhpcyxoKTt0aGlzLkQ9Vih0aGlzLGspO3RoaXMuRz1WKHRoaXMsbCl9O18uSih6dyxZKTt6dy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzE4fTt6dy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYoQXcodGhpcykpe3ZhciBiPXRoaXMuQy52YWx1ZSxjPXRoaXMuQS52YWx1ZSxkPXRoaXMubS52YWx1ZTtfLmNpKGQsXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIik7Xy5jaShkLFwibWluLXdpZHRoXCIsXCIxMDAlXCIpO2I/KF8uY2koYyxcIm1pbi13aWR0aFwiLFwiMTAwJVwiKSxiPUNoKHRoaXMuRy52YWx1ZSxHKDUwNSxmdW5jdGlvbigpe3ZhciBlPWMuY29udGVudERvY3VtZW50O2U/QncoYSxjLGQsZS5ib2R5Lm9mZnNldFdpZHRoLGUuYm9keS5vZmZzZXRIZWlnaHQpOmtiKFwiZ3B0X2FtcF9mbHVpZF9ub19pZnJhbWVkb2NcIixmdW5jdGlvbihmKXtsYihmKX0pfSkpLF8uUih0aGlzLGIpKTooYj1DaCh0aGlzLkQudmFsdWUsRyg1MDQsZnVuY3Rpb24oZSl7dmFyIGY9YS5BLnZhbHVlLGc9YS5tLnZhbHVlO2lmKC0xIT09ZS5kYXRhLmluZGV4T2YoXCJjcmVhdGl2ZV9nZW9tZXRyeV91cGRhdGVcIikpdHJ5e3ZhciBoPUpTT04ucGFyc2UoZS5kYXRhKSxrPWEuTy52YWx1ZTtpZihudWxsIT1rJiZcImNyZWF0aXZlX2dlb21ldHJ5X3VwZGF0ZVwiPT09aC5zJiZoLmM9PT1cInNmY2hhbm5lbFwiK2smJmgucCl7dmFyIGw9SlNPTi5wYXJzZShoLnApO2wudWlkPT09ayYmXCJudW1iZXJcIj09PXR5cGVvZiBsLndpZHRoJiZcIm51bWJlclwiPT09dHlwZW9mIGwuaGVpZ2h0JiZCdyhhLGYsZyxsLndpZHRoLGwuaGVpZ2h0KX19Y2F0Y2gobSl7fX0pKSxfLlIodGhpcyxiKSl9fTt2YXIgQXc9ZnVuY3Rpb24oYSl7dmFyIGI9IWEuQy52YWx1ZSYmIShfLnkoMjY3KXx8Xy55KDI2Myl8fF8ueSgyODYpKTtyZXR1cm4gbnVsbD09YS5ILnZhbHVlfHxhLkkudmFsdWV8fFwiaGVpZ2h0XCIhPT1hLk0udmFsdWV8fGI/ITE6ITB9LEJ3PWZ1bmN0aW9uKGEsYixjLGQsZSl7Yi5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixTdHJpbmcoZSkpO2Iuc2V0QXR0cmlidXRlKFwid2lkdGhcIixTdHJpbmcoZCkpO18uY2koYyxcInZpc2liaWxpdHlcIixcInZpc2libGVcIik7Q3coYSxlLGQpfSxDdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5LLnZhbHVlO2tiKFwiZ3B0X2ZsdWlkX3N6XCIsZnVuY3Rpb24oZSl7RShlLFwic3pcIixjK1wieFwiK2IpO0UoZSxcInFxaWRcIixkfHxcIlwiKTtsYihlKTtFKGUsXCJmZlwiLDEpfSl9O3ZhciBEdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLm09Vyh0aGlzLGIpO3RoaXMuQT1WKHRoaXMsYyk7dGhpcy5DPVYodGhpcyxkKTt0aGlzLkQ9Vih0aGlzLGUpfTtfLkooRHcsWSk7RHcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4NX07RHcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiO2lmKCFfLnkoMTExKSYmIXRoaXMuQy52YWx1ZSl7dmFyIGM9dGhpcy5ELnZhbHVlLGQ9dGhpcy5BLnZhbHVlLGU9bnVsbCE9PShiPW51bGw9PT0oYT10aGlzLm0udmFsdWUpfHx2b2lkIDA9PT1hP3ZvaWQgMDpCKGEsMSkpJiZ2b2lkIDAhPT1iP2I6XCJcIixmPVFoKHRoaXMuTCxkLGUsYyk7Xy5SKHRoaXMsZnVuY3Rpb24oKXt0cnl7ZigpfWNhdGNoKGcpe2JsKDQ5MyxnKX19KX19O3ZhciBFdz0vKDxoZWFkKFxccytbXj5dKik/PikvaSxGdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLnVhPWE7dGhpcy5tPXRoaXMubCgpO3RoaXMuQT1XKHRoaXMsYik7dGhpcy5DPVcodGhpcyxjKTt0aGlzLkQ9Vyh0aGlzLGQpO3RoaXMuRz1XKHRoaXMsZSl9O18uSihGdyxZKTtGdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjY1fTtGdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMudWF8fFwiXCI7aWYoIUprKHRoaXMuQS52YWx1ZSl8fEhyKHRoaXMuQykpVSh0aGlzLm0sYSk7ZWxzZXt2YXIgYj0hIXRoaXMuRC52YWx1ZSxjPSEhdGhpcy5HLnZhbHVlO2N8fCRkKCl8fChhPWEucmVwbGFjZShFdyxfLnkoMjIzKT9cIiQxPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVNlY3VyaXR5LVBvbGljeSBjb250ZW50PVxcXCJzY3JpcHQtc3JjIGh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnLztvYmplY3Qtc3JjICdub25lJztjaGlsZC1zcmMgYmxvYjo7ZnJhbWUtc3JjIGh0dHBzOi8vdHBjLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9iNGEvYjRhLXJ1bm5lci5odG1sXFxcIj5cIjpcIiQxPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVNlY3VyaXR5LVBvbGljeSBjb250ZW50PVxcXCJzY3JpcHQtc3JjIGh0dHBzOi8vY2RuLmFtcHByb2plY3Qub3JnLztvYmplY3Qtc3JjICdub25lJztjaGlsZC1zcmMgYmxvYjo7ZnJhbWUtc3JjICdub25lJ1xcXCI+XCIpKTtiJiYhYyYmKGE9YS5yZXBsYWNlKEV3LCckMTxtZXRhIG5hbWU9XCJyZWZlcnJlclwiIGNvbnRlbnQ9XCJvcmlnaW5cIj4nKSk7VSh0aGlzLm0sYSl9fTt2YXIgR3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMuc2xvdElkPWI7dGhpcy5tPWM7dGhpcy5DPWQ7dGhpcy56Yj1nO3RoaXMuRD1XKHRoaXMsZSk7dGhpcy5BPVYodGhpcyxmKX07Xy5KKEd3LFkpO0d3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODZ9O0d3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGMsZD10aGlzLkQudmFsdWUsZT1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6QihkLDEpLGY9bnVsbD09PWR8fHZvaWQgMD09PWQ/dm9pZCAwOnBmKGQpLGc9bnVsbCE9PShiPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDpCKGQsMykpJiZ2b2lkIDAhPT1iP2I6MDtkPW51bGwhPT0oYz1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6eChkLDUpKSYmdm9pZCAwIT09Yz9jOiExO2UmJmYmJihlPUF0KHtMOnRoaXMuTCxlbGVtZW50OnRoaXMuQS52YWx1ZSxBZDowPT09dGhpcy5tLEhjOmcsRGQ6ZSxIYjpmdW5jdGlvbigpe1FvKGEuQyx6byxhLnNsb3RJZCl9LG9wdGlvbnM6e3RocmVzaG9sZDpmfSx4YzpkLFRjOmZ1bmN0aW9uKGgpe2NsKDYxNSxoLCEwKX0semI6dGhpcy56Yn0pLF8uUih0aGlzLGUpKX07dmFyIEh3PWZ1bmN0aW9uKGEsYixjLGQpe1kuY2FsbCh0aGlzKTt0aGlzLmZvcm1hdD1hO3RoaXMuQz1iO3RoaXMuRj10aGlzLmwoKTt0aGlzLm09Vyh0aGlzLGMpO3RoaXMuQT1XKHRoaXMsZCl9O18uSihIdyxZKTtIdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzIwfTtIdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuQS52YWx1ZTtpZihudWxsPT1hKUZyKHRoaXMuRik7ZWxzZXt2YXIgYj1NYXRoLnJvdW5kKC4zKnRoaXMuQyk7MiE9PXRoaXMuZm9ybWF0JiYzIT09dGhpcy5mb3JtYXR8fCFIcih0aGlzLm0pfHwhb2YodGhpcy5tLnZhbHVlKXx8MD49Ynx8YTw9Yj9VKHRoaXMuRixhKTpVKHRoaXMuRixiKX19O3ZhciBJdz1mdW5jdGlvbihhLGIsYyxkLGUsZil7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuTj1iO3RoaXMubT1kO3RoaXMuRj10aGlzLmwoKTt0aGlzLkE9Mj09PWN8fDM9PT1jO3RoaXMuQz1WKHRoaXMsZSk7dGhpcy5EPVYodGhpcyxmKX07Xy5KKEl3LFkpO0l3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NzR9O0l3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5DLnZhbHVlLGI9VmsodGhpcy5zbG90LmdldFNsb3RJZCgpKSxjPWlnKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT1ifSksZD1jP2M6UXYodGhpcy5tLGEsYiwhIXgodGhpcy5OLDE1KSk7dGhpcy5ELnZhbHVlJiYheCh0aGlzLk4sMTUpJiYoZC5zdHlsZS5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIpO3RoaXMuQT9tbyh0aGlzLnNsb3QsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGQpfSk6Xy5SKHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGQpfSk7VSh0aGlzLkYsZCl9O3ZhciBKdz1mdW5jdGlvbihhLGIpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVYodGhpcyxiKX07Xy5KKEp3LFkpO0p3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2OTh9O0p3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9d2EodGhpcy5tLnZhbHVlLHRoaXMuTCk7bnVsbD09YT9Gcih0aGlzLkYpOlUodGhpcy5GLGEpfTt2YXIgS3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7WS5jYWxsKHRoaXMpO3RoaXMubT1hO3RoaXMuZm9ybWF0PWI7dGhpcy5zbG90PWM7dGhpcy5MPWQ7dGhpcy5GPU9yKHRoaXMpO3RoaXMuQT1XKHRoaXMsZSk7dGhpcy5DPVYodGhpcyxmKTt0aGlzLkQ9Vih0aGlzLGcpfTtfLkooS3csWSk7S3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4Mn07S3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtyZXR1cm4gQ2EodGhpcyxmdW5jdGlvbiBiKCl7dmFyIGM9dGhpcyxkLGUsZixnLGgsaztyZXR1cm4gRGEoYixmdW5jdGlvbihsKXtpZigxPT1sLmopcmV0dXJuIGQ9YywoMj09PWMuZm9ybWF0fHwzPT09Yy5mb3JtYXQpJiZIcihjLkEpJiZvZihjLkEudmFsdWUpP0VhKGwsXy5jdy5CKCkubG9hZChfLiR2KSwyKTpsLnJldHVybigpO2U9bC5vO2Y9ZS5ZYztpZihjLmxhKXJldHVybiBsLnJldHVybigpO2c9Xy5ZbyhjLm0sYy5zbG90KTtoPWMuRC52YWx1ZTtrPWMuQy52YWx1ZTtfLlhnKGsse1wibWF4LWhlaWdodFwiOlwiMzB2aFwiLG92ZXJmbG93OlwiaGlkZGVuXCJ9KTtMdz9Mdy5IZChrKTooTHc9bmV3IGYoYy5mb3JtYXQsayxjLkwsaCxjLm0sYy5zbG90KSxMdy53ZCgpLG1vKGMuc2xvdCxmdW5jdGlvbigpe0x3JiYoTHcuemEoKSxMdz1udWxsKTtnJiZfLiRvKGQubSxkLnNsb3QpfSkpO18uUihjLGZ1bmN0aW9uKCl7cmV0dXJuIF8uZmcoayl9KTtjLkYubm90aWZ5KCk7bC5qPTB9KX0pfTt2YXIgTHc9bnVsbDt2YXIgTXc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtZLmNhbGwodGhpcyk7dGhpcy5zbG90PWE7dGhpcy5oYT1iO3RoaXMuQz1jO3RoaXMuRz1kO3RoaXMuVmE9ZTt0aGlzLkE9Zjt0aGlzLm09Zzt0aGlzLkQ9Vyh0aGlzLGgpfTtfLkooTXcsWSk7TXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDc1OH07TXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYSxiPXBhKHRoaXMuc2xvdCx0aGlzLm0pO2ImJmIuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIixudWxsIT09KGE9dGhpcy5ELnZhbHVlKSYmdm9pZCAwIT09YT9hOlwiXCIpO1lpKHRoaXMuVmEsXCI1XCIsdGhpcy5zbG90LmwpO2E9dGhpcy5zbG90LmdldFNsb3RJZCgpO18ueSg0MTIpP1FvKHRoaXMuQSxDbyxhKTp0aGlzLnNsb3QuVGEoKTtiPV8ueSgxMjMpO3ZhciBjO2lmKF8uWW8odGhpcy5DLHRoaXMuc2xvdCkpe3ZhciBkPXRoaXMuaGEsZT1kLk47ZD1kLlJbdGhpcy5zbG90LmdldFNsb3RFbGVtZW50SWQoKV07YiYmKHRoaXMuRyYmUmIodGhpcy5zbG90LHdpbmRvdyx0aGlzLm0pLHJvKHRoaXMuc2xvdCkpOyhifHwhdW8odGhpcy5zbG90LHRoaXMubSkpJiYobnVsbCE9PShjPXgoZCwxMCkpJiZ2b2lkIDAhPT1jP2M6eChlLDExKSkmJiFfLnkoMzkwKSYmUmIodGhpcy5zbG90LHdpbmRvdyx0aGlzLm0pfVFvKHRoaXMuQSxQYixhLHtpc0VtcHR5OiEwLHNsb3RDb250ZW50Q2hhbmdlZDpifSl9O3ZhciBOdz1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLkw9YTt0aGlzLm09Vyh0aGlzLGIpO3RoaXMuQz1WKHRoaXMsYyk7dGhpcy5BPVYodGhpcyxkKTt0aGlzLkQ9Vih0aGlzLGUpfTtfLkooTncsWSk7TncucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcyMX07TncucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYyxkLGU9dGhpcy5tLnZhbHVlLGY9bnVsbD09PShiPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDpCKGUsMSkpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLnRvVXBwZXJDYXNlKCk7ZT1udWxsPT09KGM9bnVsbD09PWV8fHZvaWQgMD09PWU/dm9pZCAwOkIoZSwyKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMudG9VcHBlckNhc2UoKTtpZihmJiZlKXt2YXIgZz10aGlzLkMudmFsdWUsaD10aGlzLkEudmFsdWUsaz10aGlzLkQudmFsdWUsbD1rLnN0eWxlLmhlaWdodCxtPWsuc3R5bGUud2lkdGgsbj1rLnN0eWxlLmRpc3BsYXkscT1rLnN0eWxlLnBvc2l0aW9uLHc9bWgoZy5pZCtcIl90b3BcIixmKSx1PW1oKGcuaWQrXCJfYm90dG9tXCIsZSk7Xy5YZyh1LHtwb3NpdGlvbjpcInJlbGF0aXZlXCIsdG9wOlwiY2FsYygxMDB2aCAtIDQ4cHgpXCJ9KTtrLmFwcGVuZENoaWxkKHcpO2suYXBwZW5kQ2hpbGQodSk7Xy5YZyhoLHtwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOlwiMjRweFwiLGNsaXA6XCJyZWN0KDAsIGF1dG8sIGF1dG8sIDApXCIsd2lkdGg6XCIxMDB2d1wiLGhlaWdodDpcImNhbGMoMTAwdmggLSA0OHB4KVwifSk7Xy5YZyhnLHtwb3NpdGlvbjpcImZpeGVkXCIsdG9wOlwiMFwiLGhlaWdodDpcIjEwMHZoXCJ9KTtfLlhnKGsse3Bvc2l0aW9uOlwicmVsYXRpdmVcIixkaXNwbGF5OihudWxsPT09KGQ9dGhpcy5MLnNjcmVlbi5vcmllbnRhdGlvbil8fHZvaWQgMD09PWQ/MDpkLmFuZ2xlKT9cIm5vbmVcIjpcImJsb2NrXCIsd2lkdGg6XCIxMDB2d1wiLGhlaWdodDpcIjEwMHZoXCJ9KTt6dSh0aGlzLDcyMix0aGlzLkwsXCJvcmllbnRhdGlvbmNoYW5nZVwiLGZ1bmN0aW9uKCl7dmFyIEM7KG51bGw9PT0oQz1hLkwuc2NyZWVuLm9yaWVudGF0aW9uKXx8dm9pZCAwPT09Qz8wOkMuYW5nbGUpP18uWGcoayx7ZGlzcGxheTpcIm5vbmVcIn0pOl8uWGcoayx7ZGlzcGxheTpcImJsb2NrXCJ9KX0pO18uUih0aGlzLGZ1bmN0aW9uKCl7Xy5mZyh3KTtfLmZnKHUpO2suc3R5bGUucG9zaXRpb249cTtrLnN0eWxlLmhlaWdodD1sO2suc3R5bGUud2lkdGg9bTtrLnN0eWxlLmRpc3BsYXk9bn0pfX07dmFyIE93PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5mb3JtYXQ9YTt0aGlzLm09Yjt0aGlzLkY9T3IodGhpcyk7dGhpcy5BPVcodGhpcyxjKTt0aGlzLkQ9Vih0aGlzLGQpO3RoaXMuRz1WKHRoaXMsZSk7dGhpcy5DPVcodGhpcyxmKX07Xy5KKE93LFkpO093LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODN9O093LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYigpe3ZhciBjPXRoaXMsZCxlLGYsZyxoLGssbCxtLG47cmV0dXJuIERhKGIsZnVuY3Rpb24ocSl7aWYoMT09cS5qKXtkPWMuQS52YWx1ZTtpZighZHx8NSE9PWMuZm9ybWF0KXJldHVybiBxLnJldHVybigpO2U9Yy5HLnZhbHVlO2Y9Yy5ELnZhbHVlO3JldHVybiBFYShxLF8uY3cuQigpLmxvYWQoXy4kdiksMil9Zz1xLm87aD1nLmJkO2lmKGMubGEpcmV0dXJuIHEucmV0dXJuKCk7az1uZXcgXy51cjtsPW5ldyBoKHdpbmRvdyxmLGUsayxfLnkoNDAxKSYmYy5tLndpZHRoPmMubS5oZWlnaHQsYy5DLnZhbHVlKTtfLndoKGMsbCk7bC5MYygpO209dWYoZCxWbSwxMyk7Zm9yKHZhciB3PXt9LHU9Xy5GKG0pLEM9dS5uZXh0KCk7IUMuZG9uZTtDPXUubmV4dCgpKUM9Qy52YWx1ZSx3W0IoQywxKV09QihDLDIpO249dztsLkFjKG4pO2MuRi5ub3RpZnkoKTtxLmo9MH0pfSl9O3ZhciBQdz1mdW5jdGlvbigpe1kuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuRj1Pcih0aGlzKX07Xy5KKFB3LFkpO1B3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjN9O1B3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXMsZnVuY3Rpb24gYigpe3ZhciBjPXRoaXM7cmV0dXJuIERhKGIsZnVuY3Rpb24oZCl7aWYoMT09ZC5qKXt2YXIgZT1Rdz8wOl8ucmEoMTYpLGY9Xy5yYSgxNyk7ZT1NYXRoLm1heChlLGYpOzA8ZSYmKFF3PSEwLEN1KGUpKTtyZXR1cm4gRWEoZCxSdyhjKSwyKX1jLkYubm90aWZ5KCk7ZC5qPTB9KX0pfTt2YXIgUnc9ZnVuY3Rpb24oYSl7cmV0dXJuIENhKGEsZnVuY3Rpb24gYygpe3ZhciBkO3JldHVybiBEYShjLGZ1bmN0aW9uKGUpe2Q9Xy5yYSgxOCk7MDxkP2U9RWEoZSxVYihkKSwwKTpfLnkoMTY5KSYmbmwoMik/ZT1FYShlLFViKDApLDApOihlLmo9MCxlPXZvaWQgMCk7cmV0dXJuIGV9KX0pfSxRdz0hMTt2YXIgU3c9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtZLmNhbGwodGhpcyk7dGhpcy5BPWE7dGhpcy5vYT1iO3RoaXMubT1udWxsO3RoaXMuRj10aGlzLmwoKTtBcih0aGlzLm8sYyk7dGhpcy5EPVYodGhpcyxkKTt0aGlzLkg9Vih0aGlzLGUpO3RoaXMuRz1XKHRoaXMsZik7dGhpcy5DPVcodGhpcyxnKTt0aGlzLkk9Vyh0aGlzLGgpfTtfLkooU3csWSk7U3cucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2Nn07U3cucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYz1uZXcgTmo7SHIodGhpcy5DKSYmKEQoYywyLHRoaXMuQy52YWx1ZSksRChjLDMsMSkpO3RoaXMuQSYmKGM9WXYoW3RoaXMuQSxjXSkpO2M9WHYoYyk7dmFyIGQ9bnVsbCE9PShiPXRoaXMuSS52YWx1ZSkmJnZvaWQgMCE9PWI/Yjp2b2lkIDA7aWYobnVsbD09Y3x8MD5jfHwwPT09ZClVKHRoaXMuRiwhMSk7ZWxzZXt2YXIgZT10aGlzLkQudmFsdWUsZj10aGlzLkgudmFsdWU7bnVsbCE9ZiYmT2soZix0aGlzLm9hLGMvMTAwKT8oa2IoXCJncHRfZXJcIixmdW5jdGlvbihnKXt2YXIgaDtFKGcsXCJxcWlkXCIsbnVsbCE9PShoPWEuRy52YWx1ZSkmJnZvaWQgMCE9PWg/aDpcIlwiKX0se3ZhOl8ucmEoMjApfSksVSh0aGlzLkYsITEpKTpfLnkoMTQ1KT9VKHRoaXMuRiwhMSk6VHcodGhpcyxjLGQsZSl9fTt2YXIgVHc9ZnVuY3Rpb24oYSxiLGMsZCl7c2EoZCk/KGEubT1WYihiK1wiJVwiLEcoMjkxLGZ1bmN0aW9uKGUsZil7ZT1fLkYoZSk7Zm9yKHZhciBnPWUubmV4dCgpOyFnLmRvbmU7Zz1lLm5leHQoKSlpZihnPWcudmFsdWUsISgwPj1nLmludGVyc2VjdGlvblJhdGlvKSl7Zi51bm9ic2VydmUoZy50YXJnZXQpO1UoYS5GLCEwKTticmVha319KSksbnVsbCE9YyYmc2V0VGltZW91dChmdW5jdGlvbigpe1UoYS5GLCEwKTthLm0mJmEubS5kaXNjb25uZWN0KCl9LGMpLGEubS5vYnNlcnZlKGQpLF8uUihhLGZ1bmN0aW9uKCl7YS5tJiZhLm0uZGlzY29ubmVjdCgpfSkpOlUoYS5GLCExKX07dmFyIFV3PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3RoaXMuTD1hO3RoaXMubT1iO3RoaXMuRj10aGlzLmwoKX07Xy5KKFV3LFkpO1V3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3MDZ9O1V3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9TmEodGhpcy5tLHRoaXMuTCk7YT9VKHRoaXMuRixhKTpGcih0aGlzLkYpfTt2YXIgVnc9ZnVuY3Rpb24oYSxiLGMsZCxlKXtZLmNhbGwodGhpcyk7dGhpcy5BPWE7dGhpcy5tPWI7dGhpcy5DPVcodGhpcyxjKTt0aGlzLkQ9Vih0aGlzLGQpO3RoaXMuRz1XKHRoaXMsZSl9O18uSihWdyxZKTtWdy5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzEzfTtWdy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuRy52YWx1ZTtpZighSmsodGhpcy5DLnZhbHVlKSYmYSYmdGhpcy5tLmdldE9zZUlkKCkpe3ZhciBiPXRoaXMuRC52YWx1ZSxjPUN0KHRoaXMubSk7Yy5yZWdpc3RlckFkQmxvY2soXCI/ZWlkPVwiK2tqLkIoKS5qKCkuam9pbihcIixcIikrXCImYWRrPVwiK3RoaXMuQSwzLFwibGRqaFwiLGIsMCwwLEcodGhpcy5pZCgpLGZ1bmN0aW9uKGQsZSl7MDw9ZSYmUG8oYSxNbyxudWxsLHttYjpkLGluVmlld1BlcmNlbnRhZ2U6ZX0pfSkpO18uUih0aGlzLGZ1bmN0aW9uKCl7dHJ5e2MudW5sb2FkQWRCbG9jayhiLCExLF8ueSgxMDEpKX1jYXRjaChkKXt9fSl9fTt2YXIgV3c9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMub2E9Yjt0aGlzLm09bmV3IFVmO3RoaXMuRj1Pcih0aGlzKTtBcih0aGlzLm8sYyk7dGhpcy5BPVcodGhpcyxkKX07Xy5KKFd3LFkpO1d3LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NjR9O1d3LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZihfLnkoMjApKXt2YXIgYj10aGlzLm0uaixjPXduKGIpLGQ9ZnVuY3Rpb24oKXt2YXIgZj1hLkEudmFsdWU7cmV0dXJuIG51bGwhPWYmJk9rKGYsYS5vYSwwKX07aWYoeG4oYikmJmMmJigwPHRoaXMuc2xvdC5BLTF8fCFkKCkpJiZjKXt2YXIgZT16dSh0aGlzLDMyNCxiLGMsZnVuY3Rpb24oKXt4bihiKXx8KGUmJmUoKSxhLkYubm90aWZ5KCkpfSk7aWYoZSlyZXR1cm59fXRoaXMuRi5ub3RpZnkoKX07dmFyIFl3PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuKXtlPXZvaWQgMD09PWU/bmV3IGRuOmU7Zj12b2lkIDA9PT1mP1wiXCI6ZjtnPXZvaWQgMD09PWc/XCJcIjpnO2g9dm9pZCAwPT09aD8tMTpoO2s9dm9pZCAwPT09az9uZXcgdGs6aztsPXZvaWQgMD09PWw/bmV3IEk6bDttPXZvaWQgMD09PW0/bmV3IG5wOm07bj12b2lkIDA9PT1uP25ldyBkcjpuO1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLmhhPWI7dGhpcy5DPWM7dGhpcy5zYT1kO3RoaXMuQmE9ZTt0aGlzLmthPWY7dGhpcy53YT1nO3RoaXMuQ2E9aDt0aGlzLlZhPWs7dGhpcy5BYT1sO3RoaXMuUD1tO3RoaXMudGE9bjt0aGlzLmdhPVtdO1h3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw0KX0pO3RoaXMuWD1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsNil9KTt0aGlzLmZhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw3KX0pO3RoaXMucGE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDgpfSk7dGhpcy5HPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwxMCl9KTtYdyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBCKHEsMTUpfSk7dGhpcy5EPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwzNCl9KTt0aGlzLm09WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLENmLDQzKX0pO3RoaXMuQT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsZW4sNDEpfSk7dGhpcy5IPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIHgocSw5KX0pO3RoaXMuTT1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiB4KHEsMTIpfSk7dGhpcy5UPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIE8ocSxCZiw1MCl9KTt0aGlzLlc9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLFptLDQ4KX0pO3RoaXMuST1Ydyh0aGlzLGZ1bmN0aW9uKHEpe3JldHVybiBPKHEsWG0sMzkpfSk7dGhpcy5WPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwzNil9KTt0aGlzLk89WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDEzKX0pO3RoaXMuYWE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDMpfSk7dGhpcy5LPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSw0OSl9KTt0aGlzLmRhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwyOSl9KTt0aGlzLmVhPVh3KHRoaXMsZnVuY3Rpb24ocSl7cmV0dXJuIEIocSwzMCl9KTt0aGlzLlk9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4gTyhxLGFuLDUxKX0pO3RoaXMuYmE9WHcodGhpcyxmdW5jdGlvbihxKXtyZXR1cm4geChxLDUyKX0pfTtfLkooWXcsWSk7dmFyIFh3PWZ1bmN0aW9uKGEsYil7dmFyIGM9WS5wcm90b3R5cGUubC5jYWxsKGEpO2EuZ2EucHVzaCh7RjpjLFZjOmJ9KTtyZXR1cm4gY307WXcucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcwMH07WXcucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtpZihfLnkoNDA0KSl7dmFyIGE9dGhpcy5rYTt2YXIgYj10aGlzLnNsb3Q7dGhpcy5pZCgpO3ZhciBjPUpTT04ucGFyc2UoYSk7Yz1cIm9iamVjdFwiPT09dHlwZW9mIGM/YzpudWxsO3ZhciBkPUJnKGMsaWQpO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZHx8bnVsbD09PWN8fHZvaWQgMD09PWN8fCFjW2RdKXRocm93IEVycm9yKFwiaW52YWxpZCBhZCB1bml0IHBhdGg6IFwiK2QpO2lmKCFiKXRocm93IEVycm9yKFwibWlzc2luZyBzbG90OiBcIitkKTtiPWNbZF07aWYoQXJyYXkuaXNBcnJheShiKSlhPW5ldyBkbihiLnNsaWNlKCkpO2Vsc2UgdGhyb3cgRXJyb3IoXCJkaWN0aW9uYXJ5IG5vdCBhbiBhcnJheTogXCIrYSk7b28odGhpcy5zbG90KTtiPXRoaXMuc2xvdC5sO2M9QihhLDM0KXx8XCJcIjt0aGlzLlZhLmomJihfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXM9Xy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zfHx7fSxfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXNbXCJxcWlkLlwiK2JdPWMpO0IoYSwyNykuZm9yRWFjaChtaik7bmooNCk7WncodGhpcyxhKTskdyh0aGlzLGEpfWVsc2UgJHcodGhpcyx0aGlzLkJhKX07dmFyICR3PWZ1bmN0aW9uKGEsYil7YT1fLkYoYS5nYSk7Zm9yKHZhciBjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTtjPWQuRjtkPWQuVmM7ZD1kKGIpO251bGwhPWQ/VShjLGQpOkZyKGMpfX0sWnc9ZnVuY3Rpb24oYSxiKXtkcChhLkMsYS5zbG90LGEud2EpO3ZhciBjPWEuaGEuUlthLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpXTtjJiYodG8oYS5zbG90LGIpLHFvKGEuc2xvdCxCKGIsMzMpKSxRbyhhLkFhLEpvLGEuc2xvdC5nZXRTbG90SWQoKSxiKSxudWxsIT1CKGIsMjMpJiZCKGIsMjMpLmZvckVhY2goZnVuY3Rpb24oZCl7b3AoYS5QLGQpO3ZhciBlPWEuUCxmPWEuc2xvdDtlLmpbZF18fChlLmpbZF09W10pO2UualtkXS5wdXNoKGYpfSksdWYoYiwkbSwxNCkubGVuZ3RoJiZlcihhLnRhLHVmKGIsJG0sMTQpWzBdLGEuc2EpLF8ueSg0MjIpP1RrKGMsTyhiLEJmLDUwKSwhIXgoYiwxMSkpJiYoXy5abyhhLkMsYS5zbG90KSxTayhPKGIsQmYsNTApKSYmbW8oYS5zbG90LGZ1bmN0aW9uKCl7Xy4kbyhhLkMsYS5zbG90KX0pKTooND09Z2soYyl8fDU9PT1nayhjKXx8eChiLDExKSkmJl8uWm8oYS5DLGEuc2xvdCkseChiLDgpfHxqbyhhLnNsb3QsYS5DYSkpfTt2YXIgYXg9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1XKHRoaXMsYSk7dGhpcy5BPVYodGhpcyxiKX07Xy5KKGF4LFkpO2F4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA3NjJ9O2F4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9SHIodGhpcy5tKTthPXRoaXMuQS52YWx1ZT9fLnkoMjYzKSYmRGsoKSYmYT8yOl8ueSgyNjcpJiZDaygpJiZhPzM6Xy55KDI4NikmJkRrKCkmJmE/NDoxOjA7VSh0aGlzLkYsYSl9O3ZhciBieD1mdW5jdGlvbihhLGIsYyxkLGUpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMuaGE9Yjt0aGlzLm09Yzt0aGlzLkE9ZDtBcih0aGlzLm8sZSl9O18uSihieCxZKTtieC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk2fTtieC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7a3codGhpcyx0aGlzLm0sXCJjbG9zZWRcIixmdW5jdGlvbigpe3JldHVybiB2b2lkIGN4KGEpfSk7Xy55KDQxNil8fGt3KHRoaXMsdGhpcy5tLFwiY2FuY2VsZWRcIixmdW5jdGlvbigpe3JldHVybiB2b2lkIGN4KGEpfSl9O3ZhciBjeD1mdW5jdGlvbihhKXtRbyhhLkEsR28sYS5zbG90SWQsYS5oYSk7YS56YSgpfTt2YXIgZHg9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5BPWI7dGhpcy5tPWM7QXIodGhpcy5vLGQpfTtfLkooZHgsWSk7ZHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5N307ZHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2t3KHRoaXMsdGhpcy5BLFwiY29tcGxldGVkXCIsZnVuY3Rpb24oKXtRbyhhLm0sSG8sYS5zbG90SWQpO2EuemEoKX0pfTt2YXIgZXg9ZnVuY3Rpb24oYSxiLGMsZCl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdElkPWE7dGhpcy5BPWI7dGhpcy5tPWM7QXIodGhpcy5vLGQpfTtfLkooZXgsWSk7ZXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5NH07ZXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9dGhpcy5zbG90SWQsYz10aGlzLm07a3codGhpcyx0aGlzLkEsXCJncmFudGVkXCIsZnVuY3Rpb24oZCl7dmFyIGU7UW8oYyxGbyxiLG51bGwhPT0oZT1kLnBheWxvYWQpJiZ2b2lkIDAhPT1lP2U6bnVsbCk7YS56YSgpfSl9O3ZhciBmeD17d2lkdGg6XCIxMDAlXCIsaGVpZ2h0OlwiMTAwJVwiLGxlZnQ6XCIwXCIsdG9wOlwiMFwifSxneD1mdW5jdGlvbihhLGIsYyxkKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5VYT1iO3RoaXMuTD1jO3RoaXMuRj1Pcih0aGlzKTtBcih0aGlzLm8sZCl9O18uSihneCxZKTtneC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjkzfTtneC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1fLnkoMzc0KSYmMD09PVJnKCk/XCJyZ2JhKDEsMSwxLDAuNSlcIjpcIndoaXRlXCI7Xy5YZyh0aGlzLlVhLF8uQShPYmplY3QsXCJhc3NpZ25cIikuY2FsbChPYmplY3Qse1wiYmFja2dyb3VuZC1jb2xvclwiOmIsb3BhY2l0eTpcIjFcIixwb3NpdGlvbjpcImZpeGVkXCIsbWFyZ2luOlwiMFwiLHBhZGRpbmc6XCIwXCIsXCJ6LWluZGV4XCI6XCIyMTQ3NDgzNjQ3XCIsZGlzcGxheTpcImJsb2NrXCJ9LGZ4KSk7Xy5SKHRoaXMsXy5Xcih0aGlzLkwuZG9jdW1lbnQsdGhpcy5MKSk7aGcodGhpcy5tKS5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7dHlwZTpcInJld2FyZGVkXCIsbWVzc2FnZTpcInZpc2libGVcIn0pLFwiKlwiKTt0aGlzLkw9PT10aGlzLkwudG9wJiYodGhpcy5MLmxvY2F0aW9uLmhhc2g9XCJnb29nX3Jld2FyZGVkXCIsXy5SKHRoaXMsZnVuY3Rpb24oKXtcImdvb2dfcmV3YXJkZWRcIj09PWEuTC5sb2NhdGlvbi5oYXNoJiYoYS5MLmxvY2F0aW9uLmhhc2g9XCJcIil9KSk7dGhpcy5GLm5vdGlmeSgpfTt2YXIgaHg9ZnVuY3Rpb24oYSxiLGMpe1kuY2FsbCh0aGlzKTt0aGlzLm09YTt0aGlzLkw9YjtBcih0aGlzLm8sYyl9O18uSihoeCxZKTtoeC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjk1fTtoeC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2lmKHRoaXMuTD09PXRoaXMuTC50b3ApdmFyIGE9aGcodGhpcy5tKSxiPXp1KHRoaXMsNTAzLHRoaXMuTCxcImhhc2hjaGFuZ2VcIixmdW5jdGlvbihjKXtFZChjLm9sZFVSTCxcIiNnb29nX3Jld2FyZGVkXCIpJiYoYS5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7dHlwZTpcInJld2FyZGVkXCIsbWVzc2FnZTpcImJhY2tfYnV0dG9uXCJ9KSxcIipcIiksYigpKX0pfTt2YXIgaXg9ZnVuY3Rpb24oYSxiLGMpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMubT1iO3RoaXMuRj1Pcih0aGlzKTt0aGlzLkE9Vih0aGlzLGMpfTtfLkooaXgsWSk7aXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5Mn07aXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsYz10aGlzLkEudmFsdWUsZD10aGlzLnNsb3RJZCxlPXRoaXMubTtfLlIodGhpcyxPYihlLEJvLGQsNjc3LGZ1bmN0aW9uKCl7YS5GLm5vdGlmeSgpO2EuemEoKX0pKTtRbyhlLEVvLGQse21ha2VSZXdhcmRlZFZpc2libGU6amQoZnVuY3Rpb24oKXtRbyhlLEJvLGQpfSkscGF5bG9hZDpudWxsIT09KGI9Yy5wYXlsb2FkKSYmdm9pZCAwIT09Yj9iOm51bGx9KX07dmFyIGp4PXt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIsbGVmdDpcIjBcIix0b3A6XCIwXCJ9LGt4PXt3aWR0aDpcIjYwJVwiLGhlaWdodDpcIjYwJVwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZSgtNTAlLCAtNTAlKVwiLGxlZnQ6XCI1MCVcIix0b3A6XCI1MCVcIn0sbHg9ZnVuY3Rpb24oYSxiKXtZLmNhbGwodGhpcyk7dGhpcy5tPWE7dGhpcy5BPWI7dGhpcy5GPXRoaXMubCgpfTtfLkoobHgsWSk7bHgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY5MX07bHgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9Xy55KDM3NCkmJjA9PT1SZygpO18uWGcodGhpcy5tLF8uQShPYmplY3QsXCJhc3NpZ25cIikuY2FsbChPYmplY3Qse3Bvc2l0aW9uOlwiYWJzb2x1dGVcIn0sYj9reDpqeCkpO2t3KHRoaXMsdGhpcy5BLFwicHJlZmV0Y2hlZFwiLGZ1bmN0aW9uKGMpe3JldHVybiB2b2lkIFUoYS5GLGMpfSl9O3ZhciBteD1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3RJZD1hO3RoaXMuaGE9Yjt0aGlzLmZvcm1hdD1jO3RoaXMuTD1kO3RoaXMubT1lO3RoaXMuQT1WKHRoaXMsZik7dGhpcy5EPVcodGhpcyxnKTt0aGlzLkM9Vih0aGlzLGgpfTtfLkoobXgsWSk7bXgucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY4OH07bXgucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtpZig0PT09dGhpcy5mb3JtYXQpe3ZhciBhPXRoaXMuQS52YWx1ZSxiPXRoaXMuRC52YWx1ZSxjPXRoaXMuQy52YWx1ZTtpZighYil0aHJvdyBFcnJvcihcIm1pc3NpbmcgbWVzc2FnZSBidXMgaW5wdXRcIik7dmFyIGQ9bmV3IHdiO18ud2godGhpcyxkKTt2YXIgZT1uZXcgbHgoYSxiKTtYKGQsZSk7ZT1uZXcgaXgodGhpcy5zbG90SWQsdGhpcy5tLGUuRik7WChkLGUpO2M9bmV3IGd4KGEsYyx0aGlzLkwsZS5GKTtYKGQsYyk7WChkLG5ldyBoeChhLHRoaXMuTCxjLkYpKTtYKGQsbmV3IGV4KHRoaXMuc2xvdElkLGIsdGhpcy5tLGUuRikpO1goZCxuZXcgYngodGhpcy5zbG90SWQsdGhpcy5oYSxiLHRoaXMubSxlLkYpKTtYKGQsbmV3IGR4KHRoaXMuc2xvdElkLGIsdGhpcy5tLGUuRikpO3liKGQpfX07dmFyIG54PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5OPWE7dGhpcy5SPWI7dGhpcy5MPWM7dGhpcy5GPXRoaXMubCgpO3RoaXMubT1XKHRoaXMsZCk7dGhpcy5BPVcodGhpcyxlKTt0aGlzLkM9Vyh0aGlzLGYpfTtfLkoobngsWSk7bngucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDY2OX07bngucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYTtpZighKGE9SHIodGhpcy5BKSkpe2E9dGhpcy5SO3ZhciBiPXRoaXMuTDtiPXZvaWQgMD09PWI/d2luZG93OmI7YT0hIShxaigzKXx8YSYmbnVsbCE9QihhLDE2KSYmUmsoXCJnb29nbGVfcmFuZ2VfZGVidWdcIixiKSl9YT9VKHRoaXMuRiwhMCk6KGE9KEprKHRoaXMubS52YWx1ZSk/eCh0aGlzLlIsMTIpfHx4KHRoaXMuTiwxMyk6ITEpfHwhIXRoaXMuQy52YWx1ZSxVKHRoaXMuRiwhIWEpKX07dmFyIG94PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtZLmNhbGwodGhpcyk7dGhpcy5OPWE7dGhpcy5jYT1iO3RoaXMuRj10aGlzLmwoKTt0aGlzLkM9Vih0aGlzLGMpO3RoaXMubT1XKHRoaXMsZCk7dGhpcy5BPVcodGhpcyxlKTt0aGlzLkQ9Vyh0aGlzLGYpfTtfLkoob3gsWSk7b3gucHJvdG90eXBlLmlkPWZ1bmN0aW9uKCl7cmV0dXJuIDcxOX07b3gucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm0udmFsdWUsYj10aGlzLkMudmFsdWU7aWYoMz09PWImJl8ueSgzODgpKVUodGhpcy5GLGV0KTtlbHNle2lmKDE9PT1iJiZfLnkoMzU0KSl7aWYoYT10aGlzLkQudmFsdWUsYT1RaihuZXcgUGosYSkseChibyhbYSxPKHRoaXMuTixQaiwxOCksTyh0aGlzLmNhLFBqLDEzKV0pLDMpKXtVKHRoaXMuRixfLnkoMzM4KT9mdDpjdCk7cmV0dXJufX1lbHNlIGlmKDA9PT1iJiZhJiZfLnkodGhpcy5BLnZhbHVlPzEzNjoxMzcpKXtVKHRoaXMuRixjdCk7cmV0dXJufUZyKHRoaXMuRil9fTt2YXIgcHg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe1kuY2FsbCh0aGlzKTt0aGlzLnNsb3Q9YTt0aGlzLmNhPWI7dGhpcy5JPWM7dGhpcy53aW5kb3c9ZDt0aGlzLkc9dGhpcy5sKCk7dGhpcy5BPXRoaXMubCgpO3RoaXMuQz10aGlzLmwoKTt0aGlzLm09cWooMykuc3BsaXQoXCIsXCIpO3RoaXMuRD1fLnJqKDMpO3RoaXMuSGE9bnVsbCE9QihiLDE2KT9PKGIsWmosMTYpOm51bGw7dGhpcy5IPVFrKFwiZ29vZ2xlX3JhbmdlX2RlYnVnXCIsdGhpcy53aW5kb3cpO3RoaXMuSz1XKHRoaXMsZSk7dGhpcy5UPVcodGhpcyxmKTt0aGlzLk09Vyh0aGlzLGcpO3RoaXMuTz1WKHRoaXMsaCk7dGhpcy5QPVYodGhpcyxrKX07Xy5KKHB4LFkpO3B4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2ODF9O3B4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE7aWYoYT0hISh0aGlzLm0ubGVuZ3RofHx0aGlzLkhhJiZ0aGlzLkgpKXt2YXIgYjtiOmlmKHRoaXMubS5sZW5ndGgpe2lmKHRoaXMuRC5sZW5ndGgmJihhPXRoaXMuc2xvdC5nZXRBZFVuaXRQYXRoKCkuc3BsaXQoXCIvXCIpLCFfLkEodGhpcy5ELFwiaW5jbHVkZXNcIikuY2FsbCh0aGlzLkQsYVthLmxlbmd0aC0xXSkpKXthPSExO2JyZWFrIGJ9YT0hMH1lbHNlIGE9ITE7dmFyIGM9YTthPWM/cXgodGhpcyk6bnVsbDtpZihjJiZhKXtjPXRoaXMuUC52YWx1ZTt2YXIgZD1JayhjLnBhcmVudEVsZW1lbnQpO2Q9bnVsbCE9PShiPW51bGw9PT1kfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLndpZHRoKSYmdm9pZCAwIT09Yj9iOjA7Yj1cInBcIj09PXRoaXMubVswXTt2YXIgZT1OdW1iZXIodGhpcy5tWzBdKTtpZihiPVwiZlwiPT09dGhpcy5tWzBdP3RoaXMuSTplJiYwPGU/ZTpiP01hdGgubWluKGQsdGhpcy5JKTpudWxsKXtlPWEud2lkdGg7dmFyIGY9YS5oZWlnaHQsZz10aGlzLm1bMV0saD1OdW1iZXIoZyk7ZT1cInJhdGlvXCI9PT1nJiZlP01hdGguZmxvb3IoZi9lKmIpOmgmJjA8aD9mKmg6ZjtyeCh0aGlzLGIsZSxzeChiLGUsXCI8cD5SZXF1ZXN0ZWQgc2l6ZTpcIithLndpZHRoK1wieFwiK2EuaGVpZ2h0K1wiPC9wPlwiKSxiPD1kPzE6MixjKTthPSEwfWVsc2UgYT0hMX1lbHNlIGE9ITE7aWYoIWEpYTppZih0aGlzLkhhJiZ0aGlzLkgpe2E9dXUodGhpcy5IYSx0aGlzLndpbmRvdyk7Yz12dSh0aGlzLkhhLHRoaXMud2luZG93KTtkPXd1KHRoaXMuSGEpO2I9eHUodGhpcy5IYSk7c3dpdGNoKHRoaXMuSCl7Y2FzZSBcIm1heFwiOmU9YTtmPWM7YnJlYWs7Y2FzZSBcIm1pblwiOmU9ZDtmPWI7YnJlYWs7Y2FzZSBcImJhbm5lclwiOmU9YTtmPTkwPmM/Yzo5MDxiP2I6OTA7YnJlYWs7Y2FzZSBcInNreXNjcmFwZXJcIjplPTkwPmE/YTo5MDxkP2Q6OTA7Zj1jO2JyZWFrO2RlZmF1bHQ6YT0hMTticmVhayBhfXJ4KHRoaXMsZSxmLHN4KGUsZixcIjxwPk1pbmltdW0gc2l6ZTpcIitkK1wieFwiK2IrXCI8L3A+PHA+TWF4aW11bSBzaXplOlwiKyhhK1wieFwiK2MrXCI8L3A+PGRpdiBpZD10b293aWRlIHN0eWxlPVxcXCJkaXNwbGF5Om5vbmU7IGJhY2tncm91bmQ6I2ZhYVxcXCI+U2xvdCBkb2VzIG5vdCBmaXQgaG9yaXpvbnRhbGx5PHNjcmlwdD5uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGUpID0+IHt0b293aWRlLnN0eWxlLmRpc3BsYXkgPSAgIChlW2UubGVuZ3RoLTFdLmJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCA+ICAgIGVbZS5sZW5ndGgtMV0uaW50ZXJzZWN0aW9uUmVjdC53aWR0aCkgPyAnYmxvY2snIDogJ25vbmUnO30se3RocmVzaG9sZDoxfSkub2JzZXJ2ZShkb2N1bWVudC5ib2R5KTtcXHgzYy9zY3JpcHQ+PC9kaXY+XCIpKSk7YT0hMH1lbHNlIGE9ITF9aWYoIWEpe2E9dGhpcy5ULnZhbHVlO2lmKG51bGw9PWEpdGhyb3cgRXJyb3IoXCJNaXNzaW5nICd3aWR0aCcuXCIpO2M9dGhpcy5NLnZhbHVlO2lmKG51bGw9PWMpdGhyb3cgRXJyb3IoXCJNaXNzaW5nICdoZWlnaHQnLlwiKTtkPXRoaXMuTy52YWx1ZTtpZihudWxsPT1kKXRocm93IEVycm9yKFwiTWlzc2luZyAnaHRtbElucHV0Jy5cIik7cngodGhpcyxhLGMsZCl9fTt2YXIgcXg9ZnVuY3Rpb24oYSl7YT14YShhLmNhKVswXTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeShmdW5jdGlvbihiKXtyZXR1cm5cIm51bWJlclwiPT09dHlwZW9mIGJ9KT9uZXcgXy5UZihhWzBdLGFbMV0pOm51bGx9LHN4PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4nPGh0bWw+PGJvZHkgc3R5bGU9XCJoZWlnaHQ6JysoYi0yK1wicHg7d2lkdGg6XCIrKGEtMisncHg7YmFja2dyb3VuZC1jb2xvcjojZGRkO2NvbG9yOiMwMDA7Ym9yZGVyOjFweCBzb2xpZCAjZjAwO1wiPicpKStjKyhcIjxwPlJlbmRlcmVkIHNpemU6XCIrYStcInhcIitiK1wiPC9wPjwvYm9keT48L2h0bWw+XCIpfSxyeD1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZT12b2lkIDA9PT1lP2EuSy52YWx1ZTplO1UoYS5BLG5ldyBfLlRmKGIsYykpO1UoYS5HLGQpO251bGw9PWU/RnIoYS5DKTpVKGEuQyxlKTtmJiZfLmNpKGYsXCJvcGFjaXR5XCIsLjUpfTt2YXIgdHg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuVWE9Yjt0aGlzLkE9Yzt0aGlzLkM9ZDt0aGlzLkQ9ZTt0aGlzLm09Zjt0aGlzLkc9Zzt0aGlzLkY9dGhpcy5sKCl9O18uSih0eCxZKTt0eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNjczfTt0eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYobnVsbCE9dGhpcy5VYSl1eCh0aGlzLHRoaXMuVWEpLFUodGhpcy5GLHRoaXMuVWEpO2Vsc2UgaWYoc2sodGhpcy5tKSlVKHRoaXMuRix2eCh0aGlzKSk7ZWxzZXt2YXIgYj1Tbyh0aGlzLkcsQW8sdGhpcy5pZCgpLGZ1bmN0aW9uKGMpe2MuaWQ9PT1hLkEmJihiKCksdXgoYSxjKSxVKGEuRixjKSl9KTtfLlIodGhpcyxiKX19O3ZhciB2eD1mdW5jdGlvbihhKXt2YXIgYj1fLmVnKGRvY3VtZW50LFwiSU5TXCIpO2IuaWQ9YS5BO18uWGcoYix7ZGlzcGxheTpcIm5vbmVcIn0pO2EuRC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYik7Mj09PWEubXx8Mz09PWEubT9tbyhhLnNsb3QsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGIpfSk6Xy5SKGEsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBfLmZnKGIpfSk7cmV0dXJuIGJ9LHV4PWZ1bmN0aW9uKGEsYil7aWYoMiE9PWEubSYmMyE9PWEubSl7dmFyIGM9Xy5BKEFycmF5LFwiZnJvbVwiKS5jYWxsKEFycmF5LGIuY2hpbGROb2Rlcyk7Yz1fLkYoYyk7Zm9yKHZhciBkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlkPWQudmFsdWUsMT09PWQubm9kZVR5cGUmJmQuaWQhPT1hLkMmJl8uZmcoZCk7Xy55KDM4OSk/Yi5zdHlsZS5kaXNwbGF5PVwiZmxleFwiOk5iKGIsITApfX07dmFyIHd4PWZ1bmN0aW9uKGEpe1kuY2FsbCh0aGlzKTt0aGlzLkY9dGhpcy5sKCk7dGhpcy5tPVYodGhpcyxhKX07Xy5KKHd4LFkpO3d4LnByb3RvdHlwZS5pZD1mdW5jdGlvbigpe3JldHVybiA2NzZ9O3d4LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGE9dWEodGhpcy5tLnZhbHVlKTtVKHRoaXMuRixhKX07dmFyIHh4PWZ1bmN0aW9uKGEsYil7WS5jYWxsKHRoaXMpO3ZhciBjPXRoaXM7dGhpcy5zbG90PWE7dGhpcy5tPWI7dGhpcy5GPXRoaXMubCgpO3RoaXMuQT1qZChmdW5jdGlvbigpe2Muc2xvdC5tYigpO1FvKGMubSxEbyxjLnNsb3QuZ2V0U2xvdElkKCkpfSk7dGhpcy5DPWtkKGZ1bmN0aW9uKCl7dmFyIGQ9Yy5pblZpZXdQZXJjZW50YWdlO1FvKGMubSxMbyxjLnNsb3QuZ2V0U2xvdElkKCksZCl9LDIwMCl9O18uSih4eCxZKTt4eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzE0fTt4eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1uZXcgSSxjPVNvKGIsTW8sdGhpcy5pZCgpLGZ1bmN0aW9uKGQpe3ZhciBlPWQuaW5WaWV3UGVyY2VudGFnZTtkLm1iJiZhLkEoKTt2b2lkIDA9PT1lfHxpc05hTihlKXx8KGU9TWF0aC5mbG9vcihlKSxhLmluVmlld1BlcmNlbnRhZ2UhPT1lJiYoYS5pblZpZXdQZXJjZW50YWdlPWUsYS5DKCkpKX0pO18uUih0aGlzLGMpO1UodGhpcy5GLGIpfTt2YXIgeXg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGssbCxtLG4scSx3LHUsQyxRLE4sSCxxYSxvYix3Yyx4YyxvaCxaeiwkeixhQSxiQSxjQSxkQSxlQSxmQSl7WS5jYWxsKHRoaXMpO3RoaXMuc2xvdD1hO3RoaXMuSD1iO3RoaXMuaGE9Yzt0aGlzLnVhPWQ7dGhpcy5nYT1lO3RoaXMub2E9Zjt0aGlzLmJhPWc7dGhpcy5YPWg7dGhpcy5WYT1rO3RoaXMuRD1sO3RoaXMuQT1tO3RoaXMuTD1uO3RoaXMubT1xO3RoaXMuRz13O3RoaXMuQz11O3RoaXMuSz1DO3RoaXMuVD1RO3RoaXMucGE9Tjt0aGlzLnNhPUg7dGhpcy5hYT1xYTt0aGlzLnRhPW9iO3RoaXMuTz13Yzt0aGlzLkk9eGM7dGhpcy5WPW9oO3RoaXMuZmE9Wno7dGhpcy5QPSR6O3RoaXMua2E9YUE7dGhpcy5NPWJBO3RoaXMuZGE9Y0E7dGhpcy5ZPWRBO3RoaXMuZWE9ZUE7dGhpcy5XPVYodGhpcyxmQSl9O18uSih5eCxZKTt5eC5wcm90b3R5cGUuaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gNzU3fTt5eC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3ZhciBhPW5ldyB3YjtfLndoKHRoaXMsYSk7aWYodGhpcy5XLnZhbHVlfHxSayhcImdvb2dsZV9ub3JlbmRlclwiKSl7dmFyIGI9bmV3IE13KHRoaXMuc2xvdCx0aGlzLmhhLHRoaXMuSCx0aGlzLmdhLHRoaXMuVmEsdGhpcy5ELHRoaXMuQSx0aGlzLkcpO1goYSxiKX1lbHNle2I9dGhpcy5oYTt2YXIgYz1iLk4sZD1iLlI7Yj10aGlzLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpO3ZhciBlPWRbYl0sZj1nayhlKSxnPXRoaXMuc2xvdC5nZXRTbG90SWQoKSxoPW5ldyBVdyh0aGlzLkwudG9wLHRoaXMuYmEpO1goYSxoKTt2YXIgaz1uZXcgUHc7WChhLGspO2I9bmV3IHR4KHRoaXMuc2xvdCxwYSh0aGlzLnNsb3QsdGhpcy5BKSxiLFZrKHRoaXMuc2xvdC5nZXRTbG90SWQoKSksdGhpcy5BLGYsdGhpcy5EKTtYKGEsYik7dmFyIGw9bmV3IEZ3KHRoaXMudWEsdGhpcy5tLHRoaXMuQyx0aGlzLkssdGhpcy5UKTtYKGEsbCk7dmFyIG09bmV3IG54KGMsZSx0aGlzLkwsdGhpcy5tLHRoaXMuQyx0aGlzLlQpO1goYSxtKTtkPW5ldyBJdyh0aGlzLnNsb3QsYyxmLHRoaXMuQSxiLkYsbS5GKTtYKGEsZCk7dmFyIG49bmV3IHd4KGQuRik7WChhLG4pO2s9bmV3IFd3KHRoaXMuc2xvdCx0aGlzLm9hLGsuRixuLkYpO1goYSxrKTtrPW5ldyBTdyhPKGMsTmosNSksdGhpcy5vYSxrLkYsZC5GLG4uRix0aGlzLkcsdGhpcy5wYSx0aGlzLnNhKTtYKGEsayk7bj1uZXcgSHcoZix0aGlzLm9hLmhlaWdodCx0aGlzLk0sdGhpcy5PKTtYKGEsbik7bD1uZXcgcHgodGhpcy5zbG90LGUsdGhpcy5vYS53aWR0aCx0aGlzLkwsdGhpcy5hYSx0aGlzLnRhLHRoaXMuTyxsLm0sYi5GKTtYKGEsbCk7bj1uZXcgSncodGhpcy5MLGIuRik7WChhLG4pO249bmV3IHh3KHRoaXMuQSx0aGlzLnNsb3QsZSx0aGlzLm9hLHRoaXMuSSxiLkYsZC5GLGwuQSxsLkMsbi5GKTtYKGEsbik7bT1uZXcgYXgodGhpcy5tLG0uRik7WChhLG0pO2M9bmV3IG94KGMsZSxtLkYsdGhpcy5tLHRoaXMuSyx0aGlzLlYpO1goYSxjKTtjPW5ldyB3dyh0aGlzLnNsb3QsdGhpcy5ILHRoaXMuaGEsdGhpcy5MLGwuRyxrLkYsYi5GLGQuRixsLkEsbS5GLHRoaXMubSx0aGlzLkMsdGhpcy5HLHRoaXMuSSx0aGlzLlYsYy5GLHRoaXMuSyx0aGlzLmZhLHRoaXMuUCx0aGlzLmthLG4uRik7WChhLGMpO2U9bmV3IEt3KHRoaXMuSCxmLHRoaXMuc2xvdCx0aGlzLkwsdGhpcy5NLGMubSxiLkYpO1goYSxlKTtoPW5ldyBPdyhmLHRoaXMub2EsdGhpcy5kYSxjLm0sYi5GLGguRik7WChhLGgpO2g9bmV3IER3KHRoaXMuTCx0aGlzLm0sYy5tLGMuQSxjLkgpO1goYSxoKTtoPW5ldyBHdyh0aGlzLkwsZyxSZygpLHRoaXMuRCx0aGlzLlksYy5tKTtYKGEsaCk7Zj1uZXcgbXgoZyx0aGlzLmhhLGYsdGhpcy5MLHRoaXMuRCxjLm0sYy5DLGIuRik7WChhLGYpO2Y9bmV3IHh4KHRoaXMuc2xvdCx0aGlzLkQpO1goYSxmKTtnPW5ldyBWdyh0aGlzLnNsb3QuJGEsdGhpcy5YLHRoaXMubSxjLm0sZi5GKTtYKGEsZyk7Zz1uZXcgencodGhpcy5HLHRoaXMuSSx0aGlzLkMsdGhpcy5tLHRoaXMuUCxjLm0sZC5GLGMuQSxjLkcsYy5JKTtYKGEsZyk7Zj1uZXcgeXcoZi5GLHRoaXMuQyx0aGlzLm0sYy5EKTtYKGEsZik7Yj1uZXcgTncodGhpcy5MLHRoaXMuZWEsYy5tLGQuRixiLkYpO1goYSxiKX15YihhKX07dmFyIHp4PWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyB0Lk1hcH0sQXg9ZnVuY3Rpb24oYSxiKXt2YXIgYztiJiYobnVsbD09PShjPWEuai5nZXQoYikpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnphKCksYS5qLmRlbGV0ZShiKSl9LEJ4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrKXtBeChhLGIpO3ZhciBsPW5ldyB3YixtPXhpKCEwLHdpbmRvdyksbj1lLk4scT1lLlJbYi5nZXRTbG90RWxlbWVudElkKCldO2Y9bmV3IFl3KGIsZSxjLGssZik7WChsLGYpO3ZhciB3PW5ldyBVdyh3aW5kb3cudG9wLGspO1gobCx3KTt2YXIgdT1uZXcgUHc7WChsLHUpO2s9bmV3IHR4KGIscGEoYixoKSxiLmdldFNsb3RFbGVtZW50SWQoKSxWayhiLmdldFNsb3RJZCgpKSxoLGdrKHEpLEkuQigpKTtYKGwsayk7dmFyIEM9bmV3IEZ3KGcsZi5tLGYuQSxmLkgsZi5NKTtYKGwsQyk7dmFyIFE9bmV3IG54KG4scSx3aW5kb3csZi5tLGYuQSxmLk0pO1gobCxRKTtnPW5ldyBJdyhiLG4sZ2socSksaCxrLkYsUS5GKTtYKGwsZyk7dmFyIE49bmV3IHd4KGcuRik7WChsLE4pO3U9bmV3IFd3KGIsbSx1LkYsTi5GKTtYKGwsdSk7dT1uZXcgU3coTyhuLE5qLDUpLG0sdS5GLGcuRixOLkYsZi5ELGYuZGEsZi5lYSk7WChsLHUpO049bmV3IEh3KGdrKHEpLG0uaGVpZ2h0LGYuSSxmLlgpO1gobCxOKTtDPW5ldyBweChiLHEsbS53aWR0aCx3aW5kb3csZi5WLGYuZmEsTi5GLEMubSxrLkYpO1gobCxDKTtOPW5ldyBKdyh3aW5kb3csay5GKTtYKGwsTik7aD1uZXcgeHcoaCxiLHEsbSxmLkcsay5GLGcuRixDLkEsQy5DLE4uRik7WChsLGgpO209bmV3IGF4KGYubSxRLkYpO1gobCxtKTtuPW5ldyBveChuLHEsbS5GLGYubSxmLkgsZi5PKTtYKGwsbik7bj1uZXcgd3coYixjLGUsd2luZG93LEMuRyx1LkYsay5GLGcuRixDLkEsbS5GLGYubSxmLkEsZi5ELGYuRyxmLk8sbi5GLGYuSCxmLmFhLGYuSyxmLmJhLGguRik7WChsLG4pO2M9bmV3IEt3KGMsZ2socSksYix3aW5kb3csZi5JLG4ubSxrLkYpO1gobCxjKTtjPW5ldyBPdyhnayhxKSxlLm9hLGYuVyxuLm0say5GLHcuRik7WChsLGMpO2M9bmV3IER3KHdpbmRvdyxmLm0sbi5tLG4uQSxuLkgpO1gobCxjKTtjPW5ldyBHdyh3aW5kb3csYi5nZXRTbG90SWQoKSxSZygpLEkuQigpLGYuVCxuLm0pO1gobCxjKTtlPW5ldyBteChiLmdldFNsb3RJZCgpLGUsZ2socSksd2luZG93LEkuQigpLG4ubSxuLkMsay5GKTtYKGwsZSk7ZT1uZXcgeHgoYixJLkIoKSk7WChsLGUpO2Q9bmV3IFZ3KGIuJGEsZCxmLm0sbi5tLGUuRik7WChsLGQpO2Q9bmV3IHp3KGYuRCxmLkcsZi5BLGYubSxmLkssbi5tLGcuRixuLkEsbi5HLG4uSSk7WChsLGQpO2Q9bmV3IHl3KGUuRixmLkEsZi5tLG4uRCk7WChsLGQpO2Y9bmV3IE53KHdpbmRvdyxmLlksbi5tLGcuRixrLkYpO1gobCxmKTthLmouc2V0KGIsbCk7Xy5SKGIsZnVuY3Rpb24oKXtBeChhLGIpfSk7Xy55KDMzNikmJmxvKGIsZnVuY3Rpb24oKXtBeChhLGIpfSk7eWIobCl9LEN4PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxrLGwsbSxuLHEsdyl7QXgoYSxiKTt2YXIgdT1uZXcgd2I7az1uZXcgWXcoYixlLGMsaCxuZXcgZG4sayxsLG0sdGsuQigpLEkuQigpLHEsdyk7WCh1LGspO2M9bmV3IHl4KGIsYyxlLGYsbix4aSghMCx3aW5kb3cpLGgsZCx0ay5CKCksSS5CKCksZyx3aW5kb3csay5tLGsuRCxrLkEsay5ILGsuTSxrLmRhLGsuZWEsay5WLGsuZmEsay5YLGsuRyxrLk8say5hYSxrLkssay5iYSxrLkksay5XLGsuVCxrLlksay5wYSk7WCh1LGMpO3liKHUpO2Euai5zZXQoYix1KTtfLlIoYixmdW5jdGlvbigpe0F4KGEsYil9KTtfLnkoMzM2KSYmbG8oYixmdW5jdGlvbigpe0F4KGEsYil9KX07dmFyIER4PWZ1bmN0aW9uKGEsYixjKXt0aGlzLnVybD1hO3RoaXMubD1iO3RoaXMud2l0aENyZWRlbnRpYWxzPWM7dGhpcy5vPTA7dGhpcy52PSExO3RoaXMuaj1uZXcgWE1MSHR0cFJlcXVlc3R9LEd4PWZ1bmN0aW9uKGEpe2Euai5vcGVuKFwiR0VUXCIsYS51cmwpO2Euai53aXRoQ3JlZGVudGlhbHM9YS53aXRoQ3JlZGVudGlhbHM7Xy55KDMxMikmJnV0KGEuaik7YS5qLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe0V4KGEsITEpfTthLmoub25sb2FkPWZ1bmN0aW9uKCl7RXgoYSwhMCl9O2Euai5vbmVycm9yPWZ1bmN0aW9uKCl7RngoYS5sLEVycm9yKFwiWEhSIGVycm9yXCIpKX07YS5qLnNlbmQoKX0sRXg9ZnVuY3Rpb24oYSxiKXt0cnl7aWYoMz09PWEuai5yZWFkeVN0YXRlfHw0PT09YS5qLnJlYWR5U3RhdGUpaWYoMzAwPD1hLmouc3RhdHVzKWEudnx8RngoYS5sLEVycm9yKFwieGhyX2Vyci1cIithLmouc3RhdHVzKSksYS52PSEwO2Vsc2V7dmFyIGM9YS5qLnJlc3BvbnNlVGV4dC5zdWJzdHIoYS5vKTtpZihjKXt2YXIgZD1hLmw7aWYoYylpZigxIT09ZC5qJiYyIT09ZC5qKUZ4KGQsRXJyb3IoXCJzdGF0ZSBlcnI6IChcIisoW2QuaixkLmwubGVuZ3RoXS5qb2luKCkrXCIpXCIpKSk7ZWxzZXtkLmwmJihjPWQubCtjKTt2YXIgZT0wLGY9ITE7ZG97dmFyIGc9Yy5pbmRleE9mKFwiXFxuXCIsZSk7Zj0tMSE9PWc7aWYoIWYpYnJlYWs7dmFyIGg9ZCxrPWMuc3Vic3RyKGUsZy1lKTtpZigxPT09aC5qKWgudj1rLCsraC5vLGguaj0yO2Vsc2V7dHJ5e2gubShoLm8saC52LGloKGspKSxoLnY9XCJcIn1jYXRjaChtKXt9aC5qPTF9ZT1nKzF9d2hpbGUoZiYmZTxjLmxlbmd0aCk7ZC5sPWMuc3Vic3RyKGUpfX1hLm89YS5qLnJlc3BvbnNlVGV4dC5sZW5ndGg7aWYoYiYmND09PWEuai5yZWFkeVN0YXRlKXt2YXIgbD1hLmw7MSE9PWwuanx8bC5sP0Z4KGwsRXJyb3IoXCJzdGF0ZSBlcnIgKFwiKyhbbC5qLGwubC5sZW5ndGhdLmpvaW4oKStcIilcIikpKToobC5qPTMsbC5DKCkpfX19Y2F0Y2gobSl7RngoYS5sLG0pfX07dmFyIEh4PWZ1bmN0aW9uKGEsYixjKXt0aGlzLm09YTt0aGlzLkE9Yjt0aGlzLkM9Yzt0aGlzLnY9XCJcIjt0aGlzLm89LTE7dGhpcy5qPTE7dGhpcy5sPVwiXCJ9LEZ4PWZ1bmN0aW9uKGEsYil7YS5qPTQ7dHJ5e2EuQShiKX1jYXRjaChjKXt9fTt2YXIgSXg9ZnVuY3Rpb24oKXtpZihiZSgpKXtpZihfLnkoMTA5KSYmMDw9UGQoZGUoKSwxMikpcmV0dXJuITE7aWYoMDw9UGQoZGUoKSwxMSkpcmV0dXJuITB9ZWxzZSBpZigkZCgpJiYwPD1QZChkZSgpLDY1KSlyZXR1cm4hMDtyZXR1cm4hMX0sSng9ZnVuY3Rpb24oYSxiKXtfLnkoMjAwKT9iKCk6SXgoKT9xcihHKGEsYikpOihfLnkoMjM5KSYmcXIobnVsbCksYigpKX0sS3g9ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oYyl7ZmEoXy5yLnRvcCxcImdvb2dsZWZjTG9hZGVkXCIpP2MoKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihHKDY3OCxjKSl9LDIwKX07cGgoKSYmXy55KDMwMik/YihhKTphKCl9LEx4PWZ1bmN0aW9uKGEpe3ZhciBiPXBoKCk7Xy5yLmdvb2dsZWZjJiYhYiYma2IoXCJncHRfZmNfaGFzX25hbWVzcGFjZV9idXRfbm9faWZyYW1lc1wiLGZ1bmN0aW9uKGMpe2xiKGMpO0UoYyxcIm5ldHdvcmtJZFwiLGEpfSx7dmE6MX0pfSxNeD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Xy5EaigyMjEpLGU9YS5qLmxlbmd0aD9hLmpbMF0ubTpcIlwiO2E9dm9pZCAwO18ueSgzNzMpJiYoYT0hKCFifHwheChiLDgpKSxiPWlhKCksIWEmJmImJmtiKFwiZ3B0X25wYV91c2VzX2lmcmFtZV9ub3RfYXBpXCIsZnVuY3Rpb24oZil7bGIoZik7RShmLFwibmV0d29ya0lkXCIsZSl9LHt2YToxfSkpO3RoKGQsZSxHKDQ1MSxjKSxhKX0sTng9ZnVuY3Rpb24oYSxiKXthPW5ldyBucyhfLmNnKGEpKTtfLnkoMjc0KSYmcHMoYSk/KGpsLkIoKS5pbmZvKE1tKCkpLHNzKGEsRyg2NjEsZnVuY3Rpb24oYyl7YihjKX0pKSk6YihudWxsKX0sT3g9ZnVuY3Rpb24oYSxiKXthPW5ldyBZcihfLmNnKGEpKTtpZigkcihhKSl7dmFyIGM9Ryg2NjAsZnVuY3Rpb24oZCl7ZCYmXCJzdHJpbmdcIj09PXR5cGVvZiBkLnVzcFN0cmluZz9iKGQudXNwU3RyaW5nKTpiKG51bGwpfSk7amwuQigpLmluZm8oTG0oKSk7YnMoYSxjKX1lbHNlIGIobnVsbCl9LFB4PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPTFFMypfLnJhKDQ3LDEpLGY9ZnVuY3Rpb24oZyl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5yb3VuZCgoZS0oYS1nKSkvMUUzKSl9O2Q9Xy55KDQyMSk/ZC5nZXQoYi5nZXRTbG90SWQoKSl8fG51bGw6Yi5ZO2lmKG51bGw9PT1kKXJldHVybiAwO3N3aXRjaChfLnJhKGIuaXNCYWNrZmlsbCgpPzUyOjQ2KSl7Y2FzZSAwOnJldHVybiBmKGQpO2Nhc2UgMTpyZXR1cm4gXy55KDQxMik/KGI9Z3AoYyxiKSk/ZihiKTotMTooYj1iLlApP2YoYi5nZXRUaW1lc3RhbXAoKS5nZXRUaW1lKCkpOi0xO2Nhc2UgMjpyZXR1cm4gXy55KDQxMik/KGI9aHAoYyxiKSk/ZihiKTotMTooYj1iLkcpP2YoYik6LTF9cmV0dXJuIDB9LFF4PWZ1bmN0aW9uKGEpe2EubGVuZ3RoJiYoYT1hWzBdLFlpKHRrLkIoKSxcIjNcIixhLmwpKX0sUng9ZnVuY3Rpb24oYSl7YT1hIGluc3RhbmNlb2YgRXJyb3I/YTpFcnJvcigpO2EubWVzc2FnZT1hLm1lc3NhZ2V8fFwic3RybV9lcnJcIjtjbCgyODksYSwhMCl9LFN4PWZ1bmN0aW9uKGEpe3ZhciBiPV8uTmkoKTthPV8uRihhKTtmb3IodmFyIGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKWMudmFsdWUuWT1ifSxUeD1mdW5jdGlvbihhLGIpe2lmKF8ueSgxNzcpKXJldHVybiExO2E9eChhLDExKTtudWxsPT1hJiYoYT14KGIsMTApKTtyZXR1cm4hIWF9LFV4PW51bGwsVng9bnVsbCxXeD1mdW5jdGlvbigpe3ZhciBhPVdvKCk7dmFyIGI9Vng9Vnh8fG5ldyBkcjt0aGlzLmo9YTt0aGlzLkc9Yjt0aGlzLks9bnAuQigpO3RoaXMudj1uZXcgdC5NYXA7dGhpcy5sPW5ldyB0Lk1hcDt0aGlzLkM9bmV3IHQuTWFwO3RoaXMuST1HYih0aGlzLkkpO3RoaXMubT1HKDI5MSx0aGlzLm0pO3RoaXMuWD1SayhcImdvb2dsZV9ub2ZldGNoXCIpO3RoaXMuWT1SayhcImdvb2dsZV9ub3JlbmRlclwiKTt0aGlzLkQ9TmFOO3RoaXMuVT1uZXcgQnQ7dGhpcy5XPTA7dGhpcy5PPWJiKF8ucik7dGhpcy5WPXt9O3RoaXMuVD10aGlzLlA9TmFOO3RoaXMuQT17fTt0aGlzLm89e307dGhpcy5NPW5ldyB6eDt0aGlzLkg9Ryg2NDMsdGhpcy5IKX0sJHQ9ZnVuY3Rpb24oKXtyZXR1cm4gVXg9VXh8fG5ldyBXeH0sWXg9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWQuc2xvdDtkPWQuY2E7aWYoXy5ZbyhhLmosZykpe2lmKGUpe3ZhciBoPXt9O2hbZy5nZXRTbG90RWxlbWVudElkKCldPWQ7WHgoYSxbZ10sZixoKX1pZihlfHwhdW8oZyxjKSlhPXgoZCwxMCksbnVsbD09YSYmKGE9eChmLDExKSksYSYmIV8ueSgzOTApJiZSYihnLGIsYyl9fSxaeD1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZHAoYS5qLGIsZS53YSk7aWYoZj1mLlJbYi5nZXRTbG90RWxlbWVudElkKCldKXRvKGIsZCksXy55KDQxOCl8fHFvKGIsQihkLDMzKSksUW8oSS5CKCksSm8sYi5nZXRTbG90SWQoKSxkKSxudWxsIT1CKGQsMjMpJiZCKGQsMjMpLmZvckVhY2goZnVuY3Rpb24oZyl7b3AoYS5LLGcpO3ZhciBoPWEuSztoLmpbZ118fChoLmpbZ109W10pO2gualtnXS5wdXNoKGIpfSksdWYoZCwkbSwxNCkubGVuZ3RoJiZlcihhLkcsdWYoZCwkbSwxNClbMF0sYyksXy55KDQyMik/VGsoZixPKGQsQmYsNTApLCEheChkLDExKSkmJihfLlpvKGEuaixiKSxTayhPKGQsQmYsNTApKSYmbW8oYixmdW5jdGlvbigpe18uJG8oYS5qLGIpfSkpOig0PT1nayhmKXx8NT09Z2soZil8fHgoZCwxMSkpJiZfLlpvKGEuaixiKSx4KGQsOCl8fGpvKGIsSHQoZSxiKSl9O1d4LnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztiPXZvaWQgMD09PWI/ITE6YjtyZXR1cm4gXy5yLkludGVyc2VjdGlvbk9ic2VydmVyP25ldyBfLnIuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZCxlKXtyZXR1cm4gYy5tKGQsZSxiKX0se3Jvb3RNYXJnaW46YX0pOm5ldyBNYihmdW5jdGlvbihkLGUpe3JldHVybiBjLm0oZCxlLGIpfSx7cm9vdE1hcmdpbjphfSl9O1d4LnByb3RvdHlwZS5tPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzO2M9dm9pZCAwPT09Yz8hMTpjO2EuZm9yRWFjaChmdW5jdGlvbihlKXtpZihjfHwhKDA+PWUuaW50ZXJzZWN0aW9uUmF0aW8pKXtiLnVub2JzZXJ2ZShlLnRhcmdldCk7ZT1lLnRhcmdldC5pZDt2YXIgZj1kLnYuZ2V0KGUpO2YmJihmLkhiKCksZC52LmRlbGV0ZShlKSl9fSl9O3ZhciAkeD1mdW5jdGlvbihhLGIpe2lmKCFiLmxlbmd0aClyZXR1cm5bXTt2YXIgYz1iWzBdLm07cmV0dXJuIF8ueSg0MTgpP1BwKFFwLkIoKSkubWFwKGZ1bmN0aW9uKGQpe2Q9ZC5tIT1jfHxfLkEoYixcImluY2x1ZGVzXCIpLmNhbGwoYixkKT9cIlwiOihkPWEuai5qLmdldChkKSkmJmQuU2J8fFwiXCI7cmV0dXJuIGR9KS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuISFkfSk6UHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGFwKGEuaixkKSYmZC5tPT1jJiYhIWQuTyYmIV8uQShiLFwiaW5jbHVkZXNcIikuY2FsbChiLGQpfSkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkLk99KX0sYXk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bmV3IEV0O2UuST1cImxkamhcIjtkPXgoZC5OLDYpfHxfLnkoMzY0KT9cImZpZnNcIjpcImZpZlwiO2UuRz1kO2Uudj1hLk87ZS5FYT1jO2Uuaj1iO2E9Xy5GKGIpO2ZvcihiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSlHdChlLGIudmFsdWUpO3JldHVybiBlfSxkeT1mdW5jdGlvbihhLGIsYyxkKXtuaigyKTtieShhLGIpO3JldHVybiBVdShjeShhLCEheChkLk4sNil8fF8ueSgzNjQpLGIsYyxkKSl9LGN5PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtyZXR1cm4gbmV3IFJ1KGIsYS5qLGEuRyxjLGQsZSx2b2lkIDA9PT1mPyExOmYpfSxieT1mdW5jdGlvbihhLGIpe2IuVT1rai5CKCkuaigpO2Iubz1hLlUuZ2V0T3NlSWQoKTtfLnkoMjAwKXx8KG5yKCksYi5EPWtyWzFdLG5yKCksYi5IPWtyWzRdLG5yKCksYi5LPWtyWzZdKTtiLldhPWEuUDtiLlhhPWEuVDtiLkphPWEuRDtiLm09JHgoYSxiLmopfSxneT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1leShhLGIsZCk7aWYoXCJib29sZWFuXCI9PT10eXBlb2YgZSllfHxmeShhLGIsYyxkKTtlbHNlIHJldHVybiBlLnRoZW4oRyg3NTAsZnVuY3Rpb24oKXtmeShhLGIsYyxkKX0pKX0sZXk9ZnVuY3Rpb24oYSxiLGMpe2I9Yi5qO3ZhciBkPWMuTixlPWMuUixmPU8oZCxOaiw1KXx8bmV3IE5qO2M9Xy55KDI5Nik7Zj1XdihmKTtpZihudWxsPT1mKXJldHVybiBjP3QuUHJvbWlzZS5yZXNvbHZlKCk6ITE7dmFyIGc9TWF0aC5tYXgoZi8xMDAsMCk7aWYoIWIuZXZlcnkoZnVuY3Rpb24obCl7dmFyIG09ZVtsLmdldFNsb3RFbGVtZW50SWQoKV0sbjtpZihuPXNhKHBhKGwpKSluPXdpbmRvdyxsPXtzbG90OmwsY2E6bX0sbT0hIXgoZCwxNSksKGw9UGsobCxuLmRvY3VtZW50LG0pKSYmLTEyMjQ1OTMzIT1sLnk/KG49eGkoITAsbiksbj1PayhsLG4sZykpOm49ITAsbj0hbjtyZXR1cm4gbn0pKXJldHVybiBjP3QuUHJvbWlzZS5yZXNvbHZlKCk6ITE7Yz1hLkkoZitcIiVcIik7dmFyIGg9bmV3IEJyO2Y9e307Yj1fLkYoYik7Zm9yKHZhciBrPWIubmV4dCgpOyFrLmRvbmU7Zj17aWI6Zi5pYix1YjpmLnVifSxrPWIubmV4dCgpKWs9ay52YWx1ZSxmLnViPWsuZ2V0U2xvdEVsZW1lbnRJZCgpLGYuaWI9cGEoayksZi5pYiYmKGEudi5zZXQoZi51Yix7SGI6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBoLnJlc29sdmUoKX0sbGQ6Y30pLGMub2JzZXJ2ZShmLmliKSxsbyhrLGZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBoeShhLGwuaWIsbC51Yil9fShmKSkpO3JldHVybiBoLmp9LGZ5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIuajthLnYuZ2V0KGVbMF0uZ2V0U2xvdEVsZW1lbnRJZCgpKSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBnPWYuZ2V0U2xvdEVsZW1lbnRJZCgpO2h5KGEscGEoZiksZyl9KTtpeShhLGIsYyxkKX0saXk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9KythLlc7Yi5sPWU7YS5WW2VdPWIuajtlPWR5KGEsYixjLGQpO2p5KGEsZSxiLGMsZCk7Yj1iLmo7ZD0oZD1PKGQuTixQaiwxOCkpJiZudWxsIT1CKGQsNCk/eChkLDQpOl8ueSgyNDIpO2p3KGh3LkIoKSx3aW5kb3csTGsoKSk7ZHx8ancoaHcuQigpLHdpbmRvdyk7aWYoXy55KDQyMSkpZm9yKGQ9Xy5OaSgpLGM9e30sYj1fLkYoYiksZT1iLm5leHQoKTshZS5kb25lO2M9e1lhOmMuWWF9LGU9Yi5uZXh0KCkpYy5ZYT1lLnZhbHVlLGEuQy5oYXMoYy5ZYS5nZXRTbG90SWQoKSl8fF8uUihjLllhLGZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIGEuQy5kZWxldGUoZi5ZYS5nZXRTbG90SWQoKSl9fShjKSksYS5DLnNldChjLllhLmdldFNsb3RJZCgpLGQpO2Vsc2UgU3goYil9LG15PWZ1bmN0aW9uKGEsYixjLGQpe2I9Yi5maWx0ZXIoZnVuY3Rpb24oZSl7dmFyIGY9ZS5nZXRTbG90SWQoKSxnPWEubC5nZXQoZik7Zz8wIT1fLnJhKDQ2KSYmXy5BKE9iamVjdCxcImFzc2lnblwiKS5jYWxsKE9iamVjdCxnLHtvcHRpb25zOmMsaGE6ZH0pOihhLmwuc2V0KGYse2hhOmQsb3B0aW9uczpjLEljOm51bGx9KSxfLlIoZixmdW5jdGlvbigpe2EubC5kZWxldGUoZil9KSk7bG8oZSxmdW5jdGlvbigpe3JldHVybiBreShhLGUpfSk7cmV0dXJuIWd9KTtiLmxlbmd0aCYmbHkoYSxiLGMsZCl9LGx5PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPV8uTmkoKTtiPWdkKGIsZnVuY3Rpb24oZil7cmV0dXJuIFB4KGUsZixhLmosYS5DKX0pO18uSmIoYixmdW5jdGlvbihmLGcpe2lmKFwiMFwiPT09ZylueShhLGYsYyxkKTtlbHNlIGlmKFwiLTFcIj09PWcpb3koYSxmKTtlbHNle3ZhciBoPXBhcnNlSW50KGcsMTApO2YuZm9yRWFjaChmdW5jdGlvbihrKXtqbC5CKCkuSihHbShTdHJpbmcoaCksay5nZXRBZFVuaXRQYXRoKCkpKX0pO255KGEsZixjLGQsMUUzKmgpfX0pfSxveT1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O2I9Xy5GKGIpO2Zvcih2YXIgZD1iLm5leHQoKTshZC5kb25lO2M9e3lhOmMueWEsWmE6Yy5aYSxqYjpjLmpiLGZiOmMuZmIsdGI6Yy50Yn0sZD1iLm5leHQoKSl7Yy55YT1kLnZhbHVlO2MudGI9Xy5yYShjLnlhLmlzQmFja2ZpbGwoKT81Mjo0Nik7Yy5aYT1bXTtjLmpiPW51bGw7Yy5mYj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZil7dmFyIGc9YS5sLmdldChlLnlhLmdldFNsb3RJZCgpKTt0cnl7bnkoYSxbZS55YV0sZy5vcHRpb25zLGcuaGEsZj8wOjFFMypfLnJhKDQ3LDEpKX1maW5hbGx5e2Y9Xy5GKGUuWmEpO2ZvcihnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSlnPWcudmFsdWUsZygpO2UuWmEubGVuZ3RoPTA7bnVsbCE9PWUuamImJmNsZWFyVGltZW91dChlLmpiKX19fShjKTtpZihkPTFFMypfLnJhKGMueWEuaXNCYWNrZmlsbCgpPzU2OjU1KSlhLmwuZ2V0KGMueWEuZ2V0U2xvdElkKCkpLGMuamI9c2V0VGltZW91dChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5mYighMCl9fShjKSxkKTtzd2l0Y2goYy50Yil7Y2FzZSAyOmMuWmEucHVzaChPYihJLkIoKSxEbyxjLnlhLmdldFNsb3RJZCgpLDY4NCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5mYigpfX0oYykpKTtjYXNlIDE6Yy5aYS5wdXNoKE9iKEkuQigpLFBiLGMueWEuZ2V0U2xvdElkKCksNjg0LGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmKXtmPWYuaXNFbXB0eTsoMiE9PWUudGJ8fGYpJiZlLmZiKCl9fShjKSkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX19LGt5PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sLmdldChiLmdldFNsb3RJZCgpKTtjJiYoXy55KDMxOCkmJl8uci5jbGVhclRpbWVvdXQoYy5JYyksYS5sLmRlbGV0ZShiLmdldFNsb3RJZCgpKSl9LG55PWZ1bmN0aW9uKGEsYixjLGQsZSl7ZT12b2lkIDA9PT1lPzA6ZTt2YXIgZj1fLk5pKCksZz1mdW5jdGlvbigpe3ZhciBoPShlfHwwKS0oXy5OaSgpLWYpO2lmKDA8aCl7aD1zZXRUaW1lb3V0KEcoMzc1LGZ1bmN0aW9uKCl7cHkoYSxiLGMsZCl9KSxoKTtmb3IodmFyIGs9Xy5GKGIpLGw9ay5uZXh0KCk7IWwuZG9uZTtsPWsubmV4dCgpKWlmKGw9YS5sLmdldChsLnZhbHVlLmdldFNsb3RJZCgpKSlsLkljPWh9ZWxzZSBweShhLGIsYyxkKX07Xy55KDQwNSk/ZygpOkp4KDM0NyxnKX0scHk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZC5OLGY9ZC5SO2IuZm9yRWFjaChmdW5jdGlvbihrKXtreShhLGspfSk7dmFyIGc9Z2QoYixmdW5jdGlvbihrKXtrPWZbay5nZXRTbG90RWxlbWVudElkKCldO3JldHVybiAwIT14YShrKS5sZW5ndGh8fF8ueSg0MTkpJiZudWxsIT1CKGssMTYpfSk7aWYoZ1shMV0pe3ZhciBoPV8uRihnWyExXSk7Zm9yKGI9aC5uZXh0KCk7IWIuZG9uZTtiPWgubmV4dCgpKWI9Yi52YWx1ZSxZeChhLHdpbmRvdyxkb2N1bWVudCx7c2xvdDpiLGNhOmQuUltiLmdldFNsb3RFbGVtZW50SWQoKV19LCEwLGUpfWlmKGI9Z1shMF0paWYoZT1jLkVhLGIuZm9yRWFjaChmdW5jdGlvbihrKXswPGsuQSYmam8oayk7YXAoYS5qLGspJiZybyhrKX0pLHZvaWQgMCE9PWMuSmEmJihhLkQ9Yy5KYSksYS5QPWMuV2F8fE5hTixhLlQ9Yy5YYXx8TmFOLCFhLlgpaWYoeChkLk4sNil8fF8ueSgzNjQpKWM9cXkoYixiWzBdLm0sZCkscnkoYSxkLGMsZSk7ZWxzZSBmb3IoYz1fLkYoYiksYj1jLm5leHQoKTshYi5kb25lO2I9Yy5uZXh0KCkpcnkoYSxkLFtbYi52YWx1ZV1dLGUpfSxYeD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT12b2lkIDA9PT1lP3dpbmRvdzplO2lmKCFfLnkoMzM2KSlmb3IodmFyIGY9Xy5GKGIpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKUF4KGEuTSxnLnZhbHVlKTthPV8uRihiKTtmb3IoZz1hLm5leHQoKTshZy5kb25lO2c9YS5uZXh0KCkpZz1nLnZhbHVlLFR4KGRbZy5nZXRTbG90RWxlbWVudElkKCldLGMpJiZSYihnLGUsZS5kb2N1bWVudCkscm8oZyk7cmV0dXJuITB9LGh5PWZ1bmN0aW9uKGEsYixjKXtpZihiKXt2YXIgZD1hLnYuZ2V0KGMpO2QmJihkLmxkLnVub2JzZXJ2ZShiKSxhLnYuZGVsZXRlKGMpKX19LHN5PWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD9kb2N1bWVudDpkO3ZhciBlLGYsZyxoPTAsaz1kLGw9ZnVuY3Rpb24oKXtoKys7aWYoMz09PWgpe3ZhciB1PWYsQz1lLFE9ZyxOPW5ldyB1aCxIPVVqKGMuTik7SD1IJiZ4KEgsOSk7aWYoXy55KDM5NikpRChOLDUsITEpO2Vsc2UgaWYodSl7aWYoSD0hSClycyh1KT8hMT09PXUuZ2RwckFwcGxpZXN8fFwidGN1bmF2YWlsYWJsZVwiPT09dS50Y1N0cmluZz9IPSEwOnUucHVycG9zZSYmdS52ZW5kb3I/KEg9dS52ZW5kb3IuY29uc2VudHMsKEg9ISghSHx8IUhbXCI3NTVcIl0pKSYmdS5wdXJwb3NlT25lVHJlYXRtZW50JiZcIkRFXCI9PT11LnB1Ymxpc2hlckNDP0g9ITA6SCYmKEg9dS5wdXJwb3NlLmNvbnNlbnRzLEg9ISghSHx8IUhbXCIxXCJdKSkpOkg9ITE6SD0hMTtIPUQoTiw1LEgpO0g9RChILDIsdS50Y1N0cmluZyk7SD1EKEgsNCx1LmFkZHRsQ29uc2VudHx8XCJcIik7RChILDcsdS5pbnRlcm5hbEVycm9yU3RhdGUpO3ZvaWQgMCE9PXUuZ2RwckFwcGxpZXMmJkQoTiwzLHUuZ2RwckFwcGxpZXMpO1widGN1bmF2YWlsYWJsZVwiPT09dS50Y1N0cmluZz9qbC5CKCkuaW5mbyhObShcImZhaWxlZFwiKSk6amwuQigpLmluZm8oTm0oXCJzdWNjZWVkZWRcIikpfWVsc2UgRChOLDUsIUgpO0MmJkQoTiwxLEMpO251bGwhPT1RJiZEKE4sNixRKTtiKE4pfX07THgoYS5qLmxlbmd0aD9hLmpbMF0ubTpcIlwiKTt2YXIgbT1mdW5jdGlvbigpe054KGssZnVuY3Rpb24odSl7Zj11O2woKX0pO094KGssZnVuY3Rpb24odSl7ZT11O2woKX0pfTtpZihfLnkoMzY3KSl7dmFyIG49bmV3IGlzKF8uY2coZCkpLHE9YS5qLmxlbmd0aD9hLmpbMF0ubTpcIlwiLHc9Xy5EaigyMjEpO2Q9bi5qP2tzKG4sXCJsb2FkZWRcIik6dC5Qcm9taXNlLnJlc29sdmUoKTtkLnRoZW4oZnVuY3Rpb24odSl7cmV0dXJuIGxzKG4sdSxxLHcpfSkudGhlbihmdW5jdGlvbih1KXtnPXU7bCgpfSk7ZC50aGVuKG0pfWVsc2UgS3goZnVuY3Rpb24oKXtNeChhLFVqKGMuTiksbCk7bSgpfSl9LHV5PWZ1bmN0aW9uKGEsYixjLGQpe2Q9dm9pZCAwPT09ZD9kb2N1bWVudDpkO3N5KGIsZnVuY3Rpb24oZSl7Xy55KDQwNSkmJngoZSw1KT9KeCg3NTksZnVuY3Rpb24oKXt0eShhLGIsZSxjLGQpfSk6dHkoYSxiLGUsYyxkKTtQdChlLGQpfSxjLGQpfSx0eT1mdW5jdGlvbihhLGIsYyxkLGUpe2U9dm9pZCAwPT09ZT9kb2N1bWVudDplO3ZhciBmPU5hKGMpO3FwLkIoKS52PWY7dmFyIGc9ZC5OLGg9ZC5SO2Iuaj1iLmouZmlsdGVyKGZ1bmN0aW9uKG0pe209bS5nZXRTbG90RWxlbWVudElkKCk7KG09NSE9PWdrKGhbbV0pKXx8KG09MD09UG4od2luZG93LCEwLGYpKTtyZXR1cm4gbX0pO2lmKGIuai5sZW5ndGgpe2Zvcih2YXIgaz1fLkYoYi5qKSxsPWsubmV4dCgpOyFsLmRvbmU7bD1rLm5leHQoKSl2eShlLGwudmFsdWUsZCk7aWYobD1neShhLGIsYyxkKSlsLnRoZW4oRyg3NTEsZnVuY3Rpb24oKXtmb3IodmFyIG09Xy5GKGIuaiksbj1tLm5leHQoKTshbi5kb25lO249bS5uZXh0KCkpbj1uLnZhbHVlLHd5KDAsbixnLGhbbi5nZXRTbG90RWxlbWVudElkKCldKX0pKTtlbHNlIGZvcihhPV8uRihiLmopLGw9YS5uZXh0KCk7IWwuZG9uZTtsPWEubmV4dCgpKWw9bC52YWx1ZSx3eSgwLGwsZyxoW2wuZ2V0U2xvdEVsZW1lbnRJZCgpXSl9fSxxeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W107YT1nZChhLGZ1bmN0aW9uKGUpe3JldHVybiBlLm19KTtfLkpiKGEsZnVuY3Rpb24oZSxmKXtlPV8ueSg2NSk/eHkoZSxjKTplO2Y9PWI/ZC51bnNoaWZ0KGUpOmQucHVzaChlKX0pO3JldHVybiBkfSxyeT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1kb2N1bWVudDtpZihjKXtjPV8uRihjKTtmb3IodmFyIGY9Yy5uZXh0KCk7IWYuZG9uZTtmPWMubmV4dCgpKWY9YXkoYSxmLnZhbHVlLGQsYiksdXkoYSxmLGIsZSl9fSx3eT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT12b2lkIDA9PT1lP3dpbmRvdzplO1R4KGQsYykmJiFiLmomJlJiKGIsZSxlLmRvY3VtZW50KX0sdnk9ZnVuY3Rpb24oYSxiLGMpe2lmKCFvYShiLGEpKXt2YXIgZD1wYShiLGEpO2lmKGQpe3ZhciBlPWMuTjtjPWMuUltiLmdldFNsb3RFbGVtZW50SWQoKV07dmFyIGY9eGEoYyk7aWYoMD09Zi5sZW5ndGgpYz1udWxsO2Vsc2V7Yz1mWzBdLnNsaWNlKCk7aWYoMTxmLmxlbmd0aCl7dmFyIGc7YjppZigoZz1wYShiLGEpKSYmZy5zdHlsZS5oZWlnaHQmJmcuc3R5bGUud2lkdGgpe2c9W2cuc3R5bGUud2lkdGgsZy5zdHlsZS5oZWlnaHRdO2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7KytoKWlmKDI8Z1toXS5sZW5ndGgmJlwicHhcIj09Z1toXS5zdWJzdHJpbmcoZ1toXS5sZW5ndGgtMikpZ1toXT1wYXJzZUludChnW2hdLDEwKTtlbHNle2c9bnVsbDticmVhayBifX1lbHNlIGc9bnVsbDtjPWd8fGN9aWYoXy55KDM5MikpZm9yKGY9Xy5GKGYpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWlmKGc9Zy52YWx1ZSxBcnJheS5pc0FycmF5KGcpJiYhKDI1MDxnWzFdKSlpZihBcnJheS5pc0FycmF5KGMpKXtpZihoPV8uRihnKSxnPWgubmV4dCgpLnZhbHVlLGg9aC5uZXh0KCkudmFsdWUsMjUwPj1oJiZoPmNbMV0mJihjWzFdPWgpLDEwPD1nJiZnPGNbMF18fDEwPmNbMF0pY1swXT1nfWVsc2UgYz1nfWlmKF8ueSgzODkpKXtpZihhPSExPT09eChlLDE1KSxBcnJheS5pc0FycmF5KGMpJiYoYj13YShkLHdpbmRvdyl8fGQuc3R5bGUpKWlmKGM9Xy5GKGMpLGU9Yy5uZXh0KCkudmFsdWUsYz1jLm5leHQoKS52YWx1ZSxkLnN0eWxlLm1pbldpZHRoPVB2KGIubWluV2lkdGgsZSksZC5zdHlsZS5taW5IZWlnaHQ9UHYoYi5taW5IZWlnaHQsYyksYz1iLmRpc3BsYXksKGU9XCJub25lXCI9PT1jKXx8XCJmbGV4XCI9PT1jfHxjJiZfLkEoYyxcImVuZHNXaXRoXCIpLmNhbGwoYyxcImJsb2NrXCIpKWM9Yi5hbGlnbkl0ZW1zLGY9W1wibm9ybWFsXCIsXCJjZW50ZXJcIixcInVuc2V0XCIsXCJcIl0sXy5BKGYsXCJpbmNsdWRlc1wiKS5jYWxsKGYsYi5qdXN0aWZ5Q29udGVudCkmJl8uQShmLFwiaW5jbHVkZXNcIikuY2FsbChmLGMpJiYoZC5zdHlsZS5hbGlnbkl0ZW1zPVwiY2VudGVyXCIsYXx8KGQuc3R5bGUuanVzdGlmeUNvbnRlbnQ9XCJjZW50ZXJcIiksZXx8KGQuc3R5bGUuZGlzcGxheT1cImZsZXhcIikpfWVsc2UgUXYoYSxkLFZrKGIuZ2V0U2xvdElkKCkpLCEheChlLDE1KSxjKX19fSx4eT1mdW5jdGlvbihhLGIpe3ZhciBjPWIuTixkPWIuUixlPWZ1bmN0aW9uKGcpe2c9ZFtnLmdldFNsb3RFbGVtZW50SWQoKV07cmV0dXJuIDA9PWdrKGcpfSxmPVtdO2EuZm9yRWFjaChmdW5jdGlvbihnKXtpZihlKGcpKXt2YXIgaD1kW2cuZ2V0U2xvdEVsZW1lbnRJZCgpXTtoPVBrKHtzbG90OmcsY2E6aH0sZG9jdW1lbnQsISF4KGMsMTUpKXx8e307Zi5wdXNoKHtqYzp2b2lkIDA9PT1oLnk/SW5maW5pdHk6aC55LHNsb3Q6Z30pfX0pO2VkKGYsZnVuY3Rpb24oZyxoKXtyZXR1cm4gZGQoZy5qYyxoLmpjKX0pO3JldHVybiBhLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gZShnKT9mLnNoaWZ0KCkuc2xvdDpnfSl9LGp5PWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9dm9pZCAwPT09Zj9fLnIuZG9jdW1lbnQ6Zjt2YXIgZz12b2lkIDA9PT1nP1J4Omc7dmFyIGg9Yy5qO2Eub1tjLmxdPWguc2xpY2UoKTt2YXIgaz1HKDY0NixmdW5jdGlvbihtLG4scSl7dmFyIHc9Zjt3PXZvaWQgMD09PXc/ZG9jdW1lbnQ6dztfLnkoNDA0KT95eShhLGMsZCxlLG0sbixxLHcpOnp5KGEsYyxkLGUsbSxuLHEsdyl9KSxsPUcoNjQ3LGZ1bmN0aW9uKCl7Zm9yKHZhciBtPWMubCxuPWEub1ttXXx8W10scT0wO3E8bi5sZW5ndGg7KytxKWlmKG5bcV0pe3ZhciB3PW5ldyBkbjt3PSd7XCJlbXB0eVwiOicrRCh3LDgsITApLm0oKStcIn1cIjt2YXIgdT1hLEM9YyxRPWQsTj1lLEg9cSxxYT12b2lkIDA7cWE9dm9pZCAwPT09cWE/ZG9jdW1lbnQ6cWE7Xy55KDQwNCk/eXkodSxDLFEsTixILHcsXCJcIixxYSk6enkodSxDLFEsTixILHcsXCJcIixxYSl9ZGVsZXRlIGEub1ttXTtjYigpfSk7Zz1HKDI4OSxnKTtiPXlrKHhrKGIpKTtReChoKTtrPW5ldyBIeChrLGcsbCk7bD0hXy55KDM4NSl8fCEheChkLDUpO0d4KG5ldyBEeChiLGssdm9pZCAwPT09bD8hMDpsKSk7aD1fLkYoaCk7Zm9yKGs9aC5uZXh0KCk7IWsuZG9uZTtrPWgubmV4dCgpKWs9ay52YWx1ZSxfLnkoNDEyKXx8Xy55KDQxMil8fChrLlY9ay5DLmluZm8oc2woay5nZXRBZFVuaXRQYXRoKCkpLG51bGwsayksV2kodGsuQigpLFwiN1wiLDksay5BLTEsMCxrLmwpLGsuRD1udWxsLGsuUD1udWxsKSxRbyhJLkIoKSxJbyxrLmdldFNsb3RJZCgpKSxhLkgoayxiLGUpfTtXeC5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIsYyl7aWYoeChjLk4sNil8fF8ueSgzNjQpKXt2YXIgZD1heSh0aGlzLFthXSwxLGMpO2J5KHRoaXMsZCk7dmFyIGU9Y3kodGhpcyxfLnkoMzY0KSxkLG5ldyB1aCxjLCEwKTtubyhhLHZhKGZ1bmN0aW9uKCl7cmV0dXJuIHhrKFV1KGUpKX0pKX1lbHNlIG5vKGEsZnVuY3Rpb24oKXtyZXR1cm4gYn0pfTt2YXIgenk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXtoPXZvaWQgMD09PWg/ZG9jdW1lbnQ6aDt2YXIgaz1iLmwsbD1hLm9ba118fFtdLG09bFtlXTtsW2VdPW51bGw7dHJ5e3ZhciBuPUpTT04ucGFyc2UoZik7dmFyIHE9Xy5NYyhuKT9uOm51bGx9Y2F0Y2godyl7cT1udWxsfWw9KGU9cSkmJkJnKGUsaWQpO2U9ZSYmZVtsXTtlPVwic3RyaW5nXCI9PT10eXBlb2YgbCYmQXJyYXkuaXNBcnJheShlKT9uZXcgZG4oZS5zbGljZSgpKTpudWxsO2lmKG0paWYoYS5BW2tdfHwoYS5BW2tdPSEwLFlpKHRrLkIoKSxcIjRcIixIdChiLG0pKSksXy55KDQxMil8fG9vKG0pLGUpe2Y9dGsuQigpO2s9bS5sO2w9QihlLDM0KXx8XCJcIjtmLmomJihfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXM9Xy5yLmdvb2dsZV90aW1pbmdfcGFyYW1zfHx7fSxfLnIuZ29vZ2xlX3RpbWluZ19wYXJhbXNbXCJxcWlkLlwiK2tdPWwpO2Y9QihlLDI3KTtmPV8uRihmKTtmb3Ioaz1mLm5leHQoKTshay5kb25lO2s9Zi5uZXh0KCkpbWooay52YWx1ZSk7bmooNCk7WngoYSxtLGMsZSxiLGQpO20ubGF8fCh4KGUsOCl8fGEuWT8oYj1oLGM9ZW8obSksKGc9cGEobSxiKSkmJmcuc2V0QXR0cmlidXRlKFwiZGF0YS1nb29nbGUtcXVlcnktaWRcIixjKSxZaSh0ay5CKCksXCI1XCIsbS5sKSxfLnkoNDEyKT9RbyhJLkIoKSxDbyxtLmdldFNsb3RJZCgpKTptLlRhKCksYz1fLnkoMTIzKSxZeChhLF8ucixiLHtzbG90Om0sY2E6ZC5SW20uZ2V0U2xvdEVsZW1lbnRJZCgpXX0sYyxkLk4pLFFvKEkuQigpLFBiLG0uZ2V0U2xvdElkKCkse2lzRW1wdHk6ITAsc2xvdENvbnRlbnRDaGFuZ2VkOmN9KSk6QngoYS5NLG0sYS5qLGEuVSxkLGUsZyxoLGMpKX1lbHNlIGJsKDY0NixFcnJvcihcImludmFsaWQgcmVzcG9uc2U6IFwiK2YpKTtlbHNlIGJsKDY0NixFcnJvcihcIm1pc3Npbmcgc2xvdDogXCIrbCkpfSx5eT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe2g9dm9pZCAwPT09aD9kb2N1bWVudDpoO3ZhciBrPWIubCxsPWEub1trXXx8W10sbT1sW2VdO2xbZV09bnVsbDttPyhhLkFba118fChhLkFba109ITAsWWkodGsuQigpLFwiNFwiLEh0KGIsbSkpKSxtLmxhfHwoZT1oLGg9ZC5OLGg9VHgoZC5SW20uZ2V0U2xvdEVsZW1lbnRJZCgpXSxoKSxDeChhLk0sbSxhLmosYS5VLGQsZyxlLGMsZixiLndhLEh0KGIsbSksaCxhLkssYS5HKSkpOmJsKDY0NixFcnJvcihcIm1pc3Npbmcgc2xvdDogXCIrZikpfTt2YXIgQXk9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuaj1hO3RoaXMubD1iO3RoaXMub3B0aW9ucz1jfSxCeT1mdW5jdGlvbihhKXt0aGlzLnB1YmFkcz1hO3RoaXMuaj1uZXcgdC5TZXQ7dGhpcy5sPXt9fSxDeT1mdW5jdGlvbihhLGIsYyl7aWYoeChiLk4sNCkpcmV0dXJuW107aWYoIXgoYi5OLDYpfHxiLlJbYy5nZXRTbG90RWxlbWVudElkKCldJiZ4KGIuUltjLmdldFNsb3RFbGVtZW50SWQoKV0sMTcpKXJldHVybiBhLmouYWRkKGMpLF8uUihjLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5qLmRlbGV0ZShjKX0pLFtjXTtiPVtdO2Zvcih2YXIgZD17fSxlPV8uRihhLnB1YmFkcy5sKSxmPWUubmV4dCgpOyFmLmRvbmU7ZD17TGE6ZC5MYX0sZj1lLm5leHQoKSlkLkxhPWYudmFsdWUsYS5qLmhhcyhkLkxhKXx8KGEuai5hZGQoZC5MYSksXy5SKGQuTGEsZnVuY3Rpb24oZyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5qLmRlbGV0ZShnLkxhKX19KGQpKSxiLnB1c2goZC5MYSkpO3JldHVybiBifTtCeS5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbihhLGIpe3ZhciBjPUN5KHRoaXMsYSxiKTtEeSh0aGlzLnB1YmFkcyxjLGEse0VhOjF9KTthPWIuZ2V0QWRVbml0UGF0aCgpO2lmKChiPXRoaXMubFthXSkmJiFfLnkoMzE5KSl7Yj1fLkYoYik7Zm9yKGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxEeSh0aGlzLnB1YmFkcyxjLmosYy5sLGMub3B0aW9ucyk7ZGVsZXRlIHRoaXMubFthXX19O3ZhciBGeT1mdW5jdGlvbihhLGIsYyxkKXtpZihfLnkoMzE5KSlJcChhLnB1YmFkcyxHKDY5MCxmdW5jdGlvbigpe2Zvcih2YXIgaD17fSxrPV8uRihjKSxsPWsubmV4dCgpOyFsLmRvbmU7aD17Z2I6aC5nYn0sbD1rLm5leHQoKSloLmdiPWwudmFsdWUsYS5qLmFkZChoLmdiKSxfLlIoaC5nYixmdW5jdGlvbihtKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmouZGVsZXRlKG0uZ2IpfX0oaCkpO0R5KGEucHViYWRzLGMsYixkKX0pKTtlbHNlIGlmKGEucHViYWRzLmope2Zvcih2YXIgZT17fSxmPV8uRihjKSxnPWYubmV4dCgpOyFnLmRvbmU7ZT17aGI6ZS5oYn0sZz1mLm5leHQoKSllLmhiPWcudmFsdWUsYS5qLmFkZChlLmhiKSxfLlIoZS5oYixmdW5jdGlvbihoKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLmouZGVsZXRlKGguaGIpfX0oZSkpO0R5KGEucHViYWRzLGMsYixkKX1lbHNlIGMubGVuZ3RoJiZ4KGIuTiw2KT8oZT1jWzBdLmdldEFkVW5pdFBhdGgoKSxmPWEubFtlXXx8W10sZi5wdXNoKG5ldyBBeShjLGIsZCkpLGEubFtlXT1mKTpFeShhLnB1YmFkcyl9LEd5PWZ1bmN0aW9uKCl7SHAuY2FsbCh0aGlzKTt0aGlzLm09dGhpcy5DPSExO18ueSg4NykmJihLdnx8d2luZG93LnBlcmZvcm1hbmNlJiZQZyh3aW5kb3cucGVyZm9ybWFuY2Uubm93KSYmKEt2PW5ldyBOdikpO3RoaXMubz1uZXcgQnkodGhpcyl9O18uSihHeSxIcCk7Xy5wPUd5LnByb3RvdHlwZTtfLnAuR2E9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGN1KHRoaXMsa28pfTtfLnAuZGlzcGxheT1mdW5jdGlvbihhLGIsYyxkKXtjPXZvaWQgMD09PWM/XCJcIjpjO2Q9dm9pZCAwPT09ZD9cIlwiOmQ7dmFyIGU9XCJcIjtpZihjKWlmKF8uTWMoYykmJjE9PWMubm9kZVR5cGUpe3ZhciBmPWM7ZT1mLmlkfWVsc2UgZT1jO2lwKHRoaXMpO2I9JHAoYSxiLGUpO2E9Yi5zbG90O2I9Yi5GYTthJiZiJiYoZiYmIWUmJihmLmlkPWEuZ2V0U2xvdElkKCkuaiksdGhpcy54YShhLGIpLEQoYiw3LGQpLGRxKGZ8fGEuZ2V0U2xvdElkKCkuaikpfTtfLnAuTmI9ZnVuY3Rpb24oKXt2YXIgYT1Ubi5CKCkuajtpZih4KGEsNil8fF8ueSgzMjApKXtIeSh0aGlzLGEpO2Zvcih2YXIgYj1fLkYodGhpcy5sKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlJeSh0aGlzLGMudmFsdWUpfVl0KHRoaXMsYSk7dGhpcy5tJiZidSh0aGlzKTtaYigpfTtfLnAuWj1mdW5jdGlvbigpe3JldHVyblwicHVibGlzaGVyX2Fkc1wifTtfLnAueGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO3goYiwxNyl8fEl5KHRoaXMsYSk7dmFyIGQ9YS5nZXRTbG90SWQoKTtRbyhJLkIoKSxObyxkLGQpO18uUihhLE9iKEkuQigpLEVvLGQsNzAxLGZ1bmN0aW9uKGUpe3ZhciBmPWUubWFrZVJld2FyZGVkVmlzaWJsZTtlPWUucGF5bG9hZDtyZXR1cm4gSnAoYyxcInJld2FyZGVkU2xvdFJlYWR5XCIsbmV3IHlwKGdsKGEpLGMuWigpLGYsZSkpfSkpO18uUihhLE9iKEkuQigpLEZvLGQsNzAyLGZ1bmN0aW9uKGUpe3JldHVybiBKcChjLFwicmV3YXJkZWRTbG90R3JhbnRlZFwiLG5ldyB6cChnbChhKSxjLlooKSxlKSl9KSk7Xy5SKGEsT2IoSS5CKCksR28sZCw3MDMsZnVuY3Rpb24oKXtfLnkoNDE2KXx8SnAoYyxcInJld2FyZGVkU2xvdENhbmNlbGVkXCIsbmV3IEFwKGdsKGEpLGMuWigpKSk7SnAoYyxcInJld2FyZGVkU2xvdENsb3NlZFwiLG5ldyBCcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLEhvLGQsNzA0LGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJyZXdhcmRlZFNsb3RDb21wbGV0ZWRcIixuZXcgQ3AoZ2woYSksYy5aKCkpKX0pKTtfLlIoYSxPYihJLkIoKSxJbyxkLDcwNSxmdW5jdGlvbigpe3JldHVybiBKcChjLFwic2xvdFJlcXVlc3RlZFwiLG5ldyBEcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLFBiLGQsNzA4LGZ1bmN0aW9uKGUpe3ZhciBmPWUuc2l6ZSxnPWUuc2xvdENvbnRlbnRDaGFuZ2VkLGg9ZS5pc0VtcHR5O2U9bmV3IHRwKGdsKGEpLFwicHVibGlzaGVyX2Fkc1wiKTtoJiYoZS5pc0VtcHR5PWgpO2cmJihlLnNsb3RDb250ZW50Q2hhbmdlZD1nKTtnPWEuSDtmJiZnJiYoZS5zaXplPVtmLndpZHRoLGYuaGVpZ2h0XSxlLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZD1nLnNvdXJjZUFnbm9zdGljQ3JlYXRpdmVJZCxlLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZD1nLnNvdXJjZUFnbm9zdGljTGluZUl0ZW1JZCxlLmlzQmFja2ZpbGw9Zy5pc0JhY2tmaWxsLGUuY3JlYXRpdmVJZD1nLmNyZWF0aXZlSWQsZS5saW5lSXRlbUlkPWcubGluZUl0ZW1JZCxlLmNyZWF0aXZlVGVtcGxhdGVJZD1nLmNyZWF0aXZlVGVtcGxhdGVJZCxlLmFkdmVydGlzZXJJZD1nLmFkdmVydGlzZXJJZCxlLmNhbXBhaWduSWQ9Zy5jYW1wYWlnbklkLGUueWllbGRHcm91cElkcz1nLnlpZWxkR3JvdXBJZHMsZS5jb21wYW55SWRzPWcuY29tcGFueUlkcyk7SnAoYyxcInNsb3RSZW5kZXJFbmRlZFwiLGUpfSkpO18uUihhLE9iKEkuQigpLEpvLGQsNzA5LGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJzbG90UmVzcG9uc2VSZWNlaXZlZFwiLG5ldyBFcChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLEtvLGQsNzEwLGZ1bmN0aW9uKCl7cmV0dXJuIEpwKGMsXCJzbG90T25sb2FkXCIsbmV3IHdwKGdsKGEpLGMuWigpKSl9KSk7Xy5SKGEsT2IoSS5CKCksRG8sZCw3MTUsZnVuY3Rpb24oKXtyZXR1cm4gSnAoYyxcImltcHJlc3Npb25WaWV3YWJsZVwiLG5ldyB1cChnbChhKSxjLlooKSkpfSkpO18uUihhLE9iKEkuQigpLExvLGQsNzE2LGZ1bmN0aW9uKGUpe3JldHVybiBKcChjLFwic2xvdFZpc2liaWxpdHlDaGFuZ2VkXCIsbmV3IHZwKGdsKGEpLGMuWigpLGUpKX0pKTtfLlIoYSxPYihJLkIoKSx6byxkLDYxNCxmdW5jdGlvbigpe3ZhciBlPVRuLkIoKS5qO2U9S2soZSxWbigpKTtteSgkdCgpLFthXSx7RWE6Mn0sZSl9KSk7Xy5SKGEsT2IoSS5CKCksR28sZCw2ODcsZnVuY3Rpb24oZSl7WHgoJHQoKSxbYV0sZS5OLGUuUil9KSk7SHAucHJvdG90eXBlLnhhLmNhbGwodGhpcyxhLGIpfTtfLnAuWGI9ZnVuY3Rpb24oYSxiKXtpcCh0aGlzKTtIeSh0aGlzLGEuTik7SXkodGhpcyxiKTt0aGlzLmxvZy5pbmZvKFRsKCkpO3ZhciBjPXgoYS5OLDYpO2lmKGFwKFdvKCksYikmJihjfHwhYi5qKSl7aWYoYyYmKCR0KCksYz1wYShiLGRvY3VtZW50KSkpe3ZhciBkPUkuQigpO1BvKGQsQW8sbnVsbCxjKX14KGEuTiw0KSYmIV8ueSgzOTQpJiZ3eSgkdCgpLGIsYS5OLGEuUltiLmdldFNsb3RFbGVtZW50SWQoKV0pO3RoaXMuby5kaXNwbGF5KGEsYil9fTt2YXIgSXk9ZnVuY3Rpb24oYSxiKXthLmomJlhvKFdvKCksYik7aWYoYS5qKXt2YXIgYz1XbihUbi5CKCksYi5nZXRTbG90RWxlbWVudElkKCkpO2lmKGMpe2M9dWYoYyxKaiwzKTtjPV8uRihjKTtmb3IodmFyIGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2Q9QihlLDIpO2lmKChlPUtqKGUpKSYmZCYmZC5sZW5ndGgpe3ZhciBmO2lmKGY9YXAoV28oKSxiKSl7dmFyIGc9V28oKTtmPWRbMF07Zj0oZz1nLmouZ2V0KGIpKSYmd28oZy5pYyxlLGYpfWZ8fGEubG9nLkooVmwoZSxkWzBdLGIuZ2V0QWRVbml0UGF0aCgpKSxhLGIpfX19fX0sSHk9ZnVuY3Rpb24oYSxiKXtpZigoXy55KDE0OCl8fCFhLkMpJiZhLmope2EuQz0hMDtiPXVmKGIsSmosMTQpO2I9Xy5GKGIpO2Zvcih2YXIgYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpe3ZhciBkPWMudmFsdWU7Yz1CKGQsMik7aWYoKGQ9S2ooZCkpJiZjJiZjLmxlbmd0aCl7dmFyIGU9V28oKTt3byhlLmwsZCxjWzBdKXx8YS5sb2cuSihVbChkLGNbMF0pLGEpfX19fSxXdD1mdW5jdGlvbihhLGIsYyl7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBifHwwPj1iLmxlbmd0aHx8IWMpcmV0dXJuIGEubG9nLmVycm9yKHFsKFwiUHViQWRzU2VydmljZS5kZWZpbmVQYXNzYmFja1wiLFtiLGNdKSkse3Nsb3Q6bnVsbCxGYTpudWxsfTtjPSRwKGIsYyx2b2lkIDAsITApO2I9Yy5zbG90O2M9Yy5GYTtpZighYnx8IWMpcmV0dXJue3Nsb3Q6bnVsbCxGYTpudWxsfTtEKGMsMTcsITApO3JldHVybntzbG90Om5ldyBmdyhiLGEsYyksRmE6Y319LGd3PWZ1bmN0aW9uKGEsYixjKXtpcChhKTtYbyhXbygpLGMpO18ueSg0MjMpfHwoYy5lYz0hMCk7YS5vLmRpc3BsYXkoYixjKX0sWHQ9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9SnkoYSxjKTtpZihlLmxlbmd0aCl7aWYoXy55KDEwNCkpe2lwKGEpO2M9Xy5GKGMpO2Zvcih2YXIgZj1jLm5leHQoKTshZi5kb25lO2Y9Yy5uZXh0KCkpe2Y9Zi52YWx1ZTt2YXIgZz1iLlJbZi5nZXRTbG90RWxlbWVudElkKCldO2EueGEoZixnKX19RnkoYS5vLGIsZSxkfHx7RWE6Mn0pfWVsc2UgYS5sb2cuSihxbChcIlB1YkFkc1NlcnZpY2UucmVmcmVzaFwiLFtjXS5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIHZvaWQgMCE9PWh9KSksYSl9LER5PWZ1bmN0aW9uKGEsYixjLGQpe2EubG9nLmluZm8oZG0oKSxhKTtpZihLeShiLGQsYykmJjEhPT1kLkVhKWZvcihhPV8uRihiKSxiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSljPWIudmFsdWUsYj1JLkIoKSxjPWMuZ2V0U2xvdElkKCksUG8oYixPbyxudWxsLGMpfSxLeT1mdW5jdGlvbihhLGIsYyl7YT1hLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gYXAoV28oKSxlKX0pO3ZhciBkPWEuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBfLllvKFdvKCksZSl9KTtpZighZC5sZW5ndGgpcmV0dXJuIG51bGw7bXkoJHQoKSxkLGIsYyk7cmV0dXJuIGF9LGF1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuaj97dmlkOkIoYiwyMil8fFwiXCIsY21zaWQ6QihiLDIzKXx8XCJcIn06bnVsbH0sWXQ9ZnVuY3Rpb24oYSxiKXt4KGIsMjEpJiZhLmomJigkdCgpLkQ9TmsoKSl9LEx5PWZ1bmN0aW9uKGEsYixjLGQpe2E9Yj9KeShhLGIpOlBwKFFwLkIoKSkuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBhcChXbygpLGYpfSk7Yj1fLkYoYSk7Zm9yKHZhciBlPWIubmV4dCgpOyFlLmRvbmU7ZT1iLm5leHQoKSllPWUudmFsdWUsc28oZSksZT1lLmdldFNsb3RJZCgpLFFvKEkuQigpLFFiLGUsZSk7cmV0dXJuIFh4KCR0KCksYSxjLGQpfSxadD1mdW5jdGlvbihhLGIsYyxkKXtpZighYS5qKXJldHVybiBhLmxvZy5KKGNtKCksYSksITE7dmFyIGU9bnVsbDtpZihkJiYoZT1KeShhLGQpLDA9PWUubGVuZ3RoKSlyZXR1cm4gYS5sb2cuSihxbChcIlB1YkFkc1NlcnZpY2UuY2xlYXJcIixbZF0uZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiB2b2lkIDAhPT1mfSkpLGEpLCExO2EubG9nLmluZm8oZW0oKSxhKTtyZXR1cm4gTHkoYSxlLGIsYyl9O0d5LnByb3RvdHlwZS5nZXRWZXJzaW9uPWZ1bmN0aW9uKCl7aWYodGhpcy5qKXJldHVybiAkYSgpfTt2YXIgSnk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtpZighQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYztiLmZvckVhY2goZnVuY3Rpb24oZCxlKXsoZD16aihkLGtvKSkmJiFkLmxhP2MucHVzaChkKTphLmxvZy5KKGptKFN0cmluZyhlKSksYSl9KTtyZXR1cm4gY30sYnU9ZnVuY3Rpb24oYSl7YS5tPSEwO2lmKGEuail7V28oKS52PSEwO2E9bmV3IFdrKFwiZ3B0X21hcmtBc0FtcFwiLHprKCksXy5EaigyMykpO2xiKGEsUHAoUXAuQigpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGFwKFdvKCksZSl9KSk7dHJ5e3ZhciBiPVNoKF8ucik7YiYmRShhLFwibnR5cGVcIixiKTt2YXIgYz1fLnIubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zLGQ9bnVsbCE9Yz9fLkEoQXJyYXksXCJmcm9tXCIpLmNhbGwoQXJyYXksYykubWFwKGZ1bmN0aW9uKGUpe3JldHVybigoL14oPzpodHRwcz86XFwvXFwvKT8oW15cXC9cXD86I10rKS9pLmV4ZWMoZSl8fFtdKVsxXXx8ZSkuc3Vic3RyKDAsMjApfSk6W107RShhLFwib3N0XCIsZC5zbGljZSgwLDEwKS5qb2luKCkpfWNhdGNoKGUpe31ZayhhKX19O0d5LnByb3RvdHlwZS5kZXN0cm95U2xvdHM9ZnVuY3Rpb24oYSl7dmFyIGI9SHAucHJvdG90eXBlLmRlc3Ryb3lTbG90cy5jYWxsKHRoaXMsYSk7aWYoIWIubGVuZ3RoKXJldHVybiBiO2lmKHRoaXMuail7dmFyIGM9VG4uQigpLmo7THkodGhpcyxhLGMsVm4oKSk7Y3AoV28oKSxhKX1yZXR1cm4gYn07dmFyIEV5PWZ1bmN0aW9uKGEpe3ZhciBiPWJtKCk7YS5sb2cuSihiLGEpfTtJYyhHeSk7dmFyIE15PUcoMjYsZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCksYj1fLkEoYSxcImZpbmRcIikuY2FsbChhLFwicHVibGlzaGVyX2Fkc1wiKTtifHwoYj1uZXcgR3ksYS5hZGQoYikpO3JldHVybiBifSk7V2IoXCJwdWJhZHNcIixmdW5jdGlvbigpe3JldHVybiBnbChfLnkoNDA2KT9HeS5CKCk6TXkoKSl9KTt2YXIgVnk9ZnVuY3Rpb24oYSxiKXtqcC5jYWxsKHRoaXMsYSk7dmFyIGM9dGhpczt0aGlzLnNldD1TKDU3NixmdW5jdGlvbihkLGUpe2Euc2V0KGQsZSk7cmV0dXJuIGN9KTt0aGlzLmdldD1TKDU3NyxmdW5jdGlvbihkKXtyZXR1cm4gYS5nZXQoZCl9KTt0aGlzLmdldEF0dHJpYnV0ZUtleXM9Uyg1NzgsZnVuY3Rpb24oKXtyZXR1cm4gemcoYS5tKX0pO3RoaXMuZGlzcGxheT1TKDU1OCxmdW5jdGlvbihkLGUsZixnKXtyZXR1cm4gYS5kaXNwbGF5KGQsZSx2b2lkIDA9PT1mP1wiXCI6Zix2b2lkIDA9PT1nP1wiXCI6Zyl9KTt0aGlzLm5vdGlmeVVuZmlsbGVkU2xvdHM9Uyg2OSxmdW5jdGlvbihkKXthLlNhJiZOeShhLE95KGEsZCkpfSk7dGhpcy5pc1JvYWRibG9ja2luZ1N1cHBvcnRlZD1TKDExMSxmdW5jdGlvbigpe3JldHVybiBQeShhKX0pO3RoaXMucmVmcmVzaEFsbFNsb3RzPVMoNjAsZnVuY3Rpb24oKXthLlNhJiZOeShhKX0pO3RoaXMuc2V0VmlkZW9TZXNzaW9uPVMoNjEsZnVuY3Rpb24oZCxlLGYpe2EuRz1kO2EuQz1lO2EuRD1mfSk7dGhpcy5nZXREaXNwbGF5QWRzQ29ycmVsYXRvcj1TKDYyLGZ1bmN0aW9uKGQpe3JldHVybiBReShhLHZvaWQgMD09PWQ/XCJcIjpkKX0pO3RoaXMuZ2V0VmlkZW9TdHJlYW1Db3JyZWxhdG9yPVMoNjMsZnVuY3Rpb24oKXtpZigoXy55KDQwNik/R3kuQigpOk15KCkpLmope3ZhciBkPSR0KCkuRDtkPWlzTmFOKGQpPzA6ZH1lbHNlIGQ9MDtyZXR1cm4gZH0pO3RoaXMuaXNTbG90QVBlcnNpc3RlbnRSb2FkYmxvY2s9Uyg2NCxmdW5jdGlvbihkKXtkPXpqKGQsYik7cmV0dXJuISFkJiZSeShhLGQpfSk7dGhpcy5vbkltcGxlbWVudGF0aW9uTG9hZGVkPVMoNjUsZnVuY3Rpb24oKXthLmxvZy5pbmZvKFNsKFwiR1BUIENvbXBhbmlvbkFkc1wiKSxhKX0pO3RoaXMuZmlsbFNsb3Q9Uyg2NixmdW5jdGlvbihkLGUpe2Q9emooZCxiKTt2YXIgZjtpZihmPSEhZClkJiZacChkKSYmZSYmXCJzdHJpbmdcIj09PXR5cGVvZiBlPyhTeShhLGQpLmNvbnRlbnQ9ZSxmPVR5KGEsZCkpOmY9ITE7cmV0dXJuIGZ9KTt0aGlzLnNsb3RSZW5kZXJFbmRlZD1TKDY3LGZ1bmN0aW9uKGQsZSxmKXtyZXR1cm4oZD16aihkLGIpKSYmVXkoYSxkLGUsZil9KTt0aGlzLnNldFJlZnJlc2hVbmZpbGxlZFNsb3RzPVMoNTksZnVuY3Rpb24oZCl7XCJib29sZWFuXCI9PT10eXBlb2YgZCYmKGEuU2E9ZCl9KX07Xy5KKFZ5LGpwKTt2YXIgWHk9ZnVuY3Rpb24oYSxiKXtqcC5jYWxsKHRoaXMsYSk7dGhpcy5zZXRDb250ZW50PVMoNzIsZnVuY3Rpb24oYyxkKXtyZXR1cm4oYz16aihjLGIpKSYmV3koYSxjLGQpfSk7dGhpcy5kaXNwbGF5PVMoNTYyLGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBhLmRpc3BsYXkoYyxkLHZvaWQgMD09PWU/XCJcIjplLHZvaWQgMD09PWY/XCJcIjpmKX0pfTtfLkooWHksanApO3ZhciBZeT1mdW5jdGlvbigpe0hwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKFl5LEhwKTtZeS5CPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJNdXN0IGJlIG92ZXJyaWRkZW5cIik7fTt2YXIgWnk9ZnVuY3Rpb24oKXtZeS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5vPW5ldyB0Lk1hcDt0aGlzLm09e307dGhpcy5TYT0hMTt0aGlzLkc9MDt0aGlzLkQ9dGhpcy5DPXZvaWQgMDt0aGlzLkg9dGhpcy5JPSExfTtfLkooWnksWXkpO1p5LkI9WXkuQjtfLnA9WnkucHJvdG90eXBlO18ucC5HYT1mdW5jdGlvbigpe3JldHVybiBuZXcgVnkodGhpcyxrbyl9O18ucC5zZXQ9ZnVuY3Rpb24oYSxiKXtcInN0cmluZ1wiPT09dHlwZW9mIGEmJmEubGVuZ3RoPyh0aGlzLm1bYV09Yix0aGlzLmxvZy5pbmZvKEtsKGEsU3RyaW5nKGIpLHRoaXMuWigpKSx0aGlzLG51bGwpKTp0aGlzLmxvZy5KKExsKFN0cmluZyhhKSxTdHJpbmcoYiksdGhpcy5aKCkpLHRoaXMsbnVsbCk7cmV0dXJuIHRoaXN9O18ucC5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGwhPT0oYj10aGlzLm1bYV0pJiZ2b2lkIDAhPT1iP2I6bnVsbH07Xy5wLmRpc3BsYXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yz12b2lkIDA9PT1jP1wiXCI6YztkPXZvaWQgMD09PWQ/XCJcIjpkO2lwKHRoaXMpO2I9JHAoYSxiLGMpO2E9Yi5zbG90O2I9Yi5GYTt0aGlzLnhhKGEsYik7RChiLDcsZCk7ZHEoYS5nZXRTbG90SWQoKS5qKX07Xy5wLnhhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztfLlIoYSxPYihJLkIoKSxKbyxhLmdldFNsb3RJZCgpLDc1MixmdW5jdGlvbihkKXt4KGQsMTEpJiYoU3koYyxhKS5qPSEwKX0pKTtZeS5wcm90b3R5cGUueGEuY2FsbCh0aGlzLGEsYil9O18ucC5OYj1mdW5jdGlvbigpeyR5KHRoaXMpfTt2YXIgUHk9ZnVuY3Rpb24oYSl7dmFyIGI9Xy55KDQwNik/R3kuQigpOk15KCk7aWYoIWIuailyZXR1cm4hMTt2YXIgYz1iLmw7YT1hLmw7cmV0dXJuIGMubGVuZ3RoIT09YS5sZW5ndGg/ITE6IWEuc29tZShmdW5jdGlvbihkKXtyZXR1cm4hXy5BKGMsXCJpbmNsdWRlc1wiKS5jYWxsKGMsZCl9KX0sUXk9ZnVuY3Rpb24oYSxiKXsoYj12b2lkIDA9PT1iP1wiXCI6YikmJiFhLkgmJmtiKFwiaW1hX3Nka192XCIsZnVuY3Rpb24oZCl7YS5IPSEwO0UoZCxcInZcIixiKX0pO3ZhciBjPVRuLkIoKS5qO3JldHVybiBTdHJpbmcoQihjLDI2KSl9LE55PWZ1bmN0aW9uKGEsYil7dmFyIGM9Xy55KDQwNik/R3kuQigpOk15KCksZD1Ubi5CKCkuaixlPVZuKCk7aWYoYy5qKXt2YXIgZj17RWE6M307dm9pZCAwIT09YS5HJiYoZi5KYT1hLkcpO2EuQyYmKGYuV2E9YS5DKTthLkQmJihmLlhhPWEuRCk7YT1udWxsIT09YiYmdm9pZCAwIT09Yj9iOmEubDtkPUtrKGQsZSk7Zi5KYSYmXCJudW1iZXJcIiE9PXR5cGVvZiBmLkphfHxmLldhJiZcIm51bWJlclwiIT09dHlwZW9mIGYuV2F8fGYuWGEmJlwibnVtYmVyXCIhPT10eXBlb2YgZi5YYXx8WHQoYyxkLGEsZil9ZWxzZSBhLmxvZy5lcnJvcihPbChcIlB1YkFkc1wiLFwicmVmcmVzaFwiKSl9LFJ5PWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoKF8ueSg0MDYpP0d5LkIoKTpNeSgpKS5qJiZacChiKSlyZXR1cm4gYT1hLm8uZ2V0KGIuZ2V0U2xvdElkKCkpLG51bGwhPT0oYz1udWxsPT09YXx8dm9pZCAwPT09YT92b2lkIDA6YS5qKSYmdm9pZCAwIT09Yz9jOiExO2EubG9nLmVycm9yKFBsKCkpO3JldHVybiExfSxPeT1mdW5jdGlvbihhLGIpe3JldHVybiBiLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gXy5BKGEubCxcImZpbmRcIikuY2FsbChhLmwsZnVuY3Rpb24oZCl7cmV0dXJuIGQuZ2V0U2xvdElkKCkudG9TdHJpbmcoKT09PWN9KX0pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hIWN9KX07WnkucHJvdG90eXBlLlo9ZnVuY3Rpb24oKXtyZXR1cm5cImNvbXBhbmlvbl9hZHNcIn07dmFyICR5PWZ1bmN0aW9uKGEpe21iKDcwLGZ1bmN0aW9uKCl7aWYoIWEuSSl7dmFyIGI9ZG9jdW1lbnQ7YS5sb2cuaW5mbyhRbChcIkdQVCBDb21wYW5pb25BZHNcIiksYSk7dmFyIGMsZCxlPW51bGwhPT0oZD1udWxsPT09KGM9bWEoKSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuY3JlYXRlU2NyaXB0VVJMKFwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvc2hvd19jb21wYW5pb25fYWQuanNcIikpJiZ2b2lkIDAhPT1kP2Q6XCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9zaG93X2NvbXBhbmlvbl9hZC5qc1wiO2M9bmV3IGFpKGUsamEpO25hKGMsYWkpO3VnKGIsQmQoYy5qLnRvU3RyaW5nKCkpKTthLkk9ITB9fSxmdW5jdGlvbihiLGMpe2JsKGIsYyk7YS5sb2cuZXJyb3IoUmwoXCJHUFQgQ29tcGFuaW9uQWRzXCIpLGEpfSl9LFR5PWZ1bmN0aW9uKGEsYil7aWYoIWEuanx8UnkoYSxiKSlyZXR1cm4hMTt2YXIgYz1wYShiKTtpZighYylyZXR1cm4hMTt2YXIgZD0oYS5vLmdldChiLmdldFNsb3RJZCgpKXx8e30pLmNvbnRlbnQ7aWYodm9pZCAwPT09ZClyZXR1cm4hMTthLm8uZGVsZXRlKGIuZ2V0U2xvdElkKCkpO2IuVGEoKTtjLmlubmVySFRNTD1kO3BvKGIpO2Q9Yz1udWxsO3ZhciBlPVduKFRuLkIoKSxiLmdldFNsb3RFbGVtZW50SWQoKSk7ZSYmMT09PXVmKGUsVmosNSkubGVuZ3RoJiZudWxsIT1CKHVmKGUsVmosNSlbMF0sMSkmJm51bGwhPUIodWYoZSxWaiw1KVswXSwyKSYmKGM9Qih1ZihlLFZqLDUpWzBdLDEpLGQ9Qih1ZihlLFZqLDUpWzBdLDIpKTtVeShhLGIsYyxkKTtyZXR1cm4hMH07WnkucHJvdG90eXBlLlhiPWZ1bmN0aW9uKGEsYil7VHkodGhpcyxiKX07dmFyIFV5PWZ1bmN0aW9uKGEsYixjLGQpe2I9bmV3IHRwKGdsKGIpLGEuWigpKTtudWxsIT1jJiZudWxsIT1kJiYoYi5zaXplPVtjLGRdKTtKcChhLFwic2xvdFJlbmRlckVuZGVkXCIsYil9LFN5PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vLmdldChiLmdldFNsb3RJZCgpKTtjfHwoYz17fSxhLm8uc2V0KGIuZ2V0U2xvdElkKCksYyksXy5SKGIsZnVuY3Rpb24oKXtyZXR1cm4gYS5vLmRlbGV0ZShiLmdldFNsb3RJZCgpKX0pKTtyZXR1cm4gY30sYXo9ZnVuY3Rpb24oKXtyZXR1cm4gbWIoNTcsZnVuY3Rpb24oKXt2YXIgYT1NcC5CKCksYj1fLkEoYSxcImZpbmRcIikuY2FsbChhLFwiY29tcGFuaW9uX2Fkc1wiKTtifHwoYj1uZXcgWnksYS5hZGQoYikpO3JldHVybiBifSl9O0ljKFp5KTtXYihcImNvbXBhbmlvbkFkc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGdsKF8ueSg0MDYpP1p5LkIoKTpheigpKX0pO3ZhciBiej1mdW5jdGlvbigpe0hwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Xy5KKGJ6LEhwKTtiei5CPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoXCJNdXN0IGJlIG92ZXJyaWRkZW5cIik7fTt2YXIgY3o9ZnVuY3Rpb24oKXtiei5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5vPW5ldyB0Lk1hcH07Xy5KKGN6LGJ6KTtjei5CPWJ6LkI7Y3oucHJvdG90eXBlLkdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYeSh0aGlzLGtvKX07Y3oucHJvdG90eXBlLlo9ZnVuY3Rpb24oKXtyZXR1cm5cImNvbnRlbnRcIn07Y3oucHJvdG90eXBlLmRpc3BsYXk9ZnVuY3Rpb24oYSxiLGMsZCl7Yz12b2lkIDA9PT1jP1wiXCI6YztkPXZvaWQgMD09PWQ/XCJcIjpkO2lwKHRoaXMpO2I9JHAoYSxiLGMpO2E9Yi5zbG90O2I9Yi5GYTt0aGlzLnhhKGEsYik7RChiLDcsZCk7ZHEoYS5nZXRTbG90SWQoKS5qKX07Y3oucHJvdG90eXBlLmRlc3Ryb3lTbG90cz1mdW5jdGlvbihhKXthPWJ6LnByb3RvdHlwZS5kZXN0cm95U2xvdHMuY2FsbCh0aGlzLGEpO2Zvcih2YXIgYj1fLkYoYSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpdGhpcy5vLmRlbGV0ZShjLnZhbHVlLmdldFNsb3RJZCgpKTtyZXR1cm4gYX07dmFyIGR6PWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vLmdldChiLmdldFNsb3RJZCgpKSxkPXBhKGIpOyEoYyYmdm9pZCAwIT09Yy5jb250ZW50JiZkJiZhLmopfHxjJiZjLlRhfHwoYy5UYT0hMCxkLmlubmVySFRNTD1jLmNvbnRlbnQsSnAoYSxcInNsb3RSZW5kZXJFbmRlZFwiLG5ldyB0cChnbChiKSxhLlooKSkpKX07Y3oucHJvdG90eXBlLk5iPWZ1bmN0aW9uKCl7fTtjei5wcm90b3R5cGUuWGI9ZnVuY3Rpb24oYSxiKXtkeih0aGlzLGIpfTt2YXIgV3k9ZnVuY3Rpb24oYSxiLGMpe2lmKFpwKGIpJiZcInN0cmluZ1wiPT09dHlwZW9mIGMmJmMubGVuZ3RoKXt2YXIgZD1hLm8uZ2V0KGIuZ2V0U2xvdElkKCkpO2Q/ZC5jb250ZW50PWM6YS5vLnNldChiLmdldFNsb3RJZCgpLHtjb250ZW50OmMsVGE6dm9pZCAwfSk7Xy5SKGIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLm8uZGVsZXRlKGIuZ2V0U2xvdElkKCkpfSk7ZHooYSxiKX19LGV6PWZ1bmN0aW9uKCl7cmV0dXJuIG1iKDcxLGZ1bmN0aW9uKCl7dmFyIGE9TXAuQigpLGI9Xy5BKGEsXCJmaW5kXCIpLmNhbGwoYSxcImNvbnRlbnRcIik7Ynx8KGI9bmV3IGN6LGEuYWRkKGIpKTtyZXR1cm4gYn0pfTtJYyhjeik7V2IoXCJjb250ZW50XCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2woXy55KDQwNik/Y3ouQigpOmV6KCkpfSk7aWYod2luZG93Lmdvb2dsZXRhZy5ldmFsU2NyaXB0cyl3aW5kb3cuZ29vZ2xldGFnLmV2YWxTY3JpcHRzKCk7ZWxzZXt2YXIgZno9d2luZG93LGd6PV8uT2koZnopO2lmKGd6KXt2YXIgaHo9e2xhYmVsOlwiMlwiLHR5cGU6OSx2YWx1ZTpnen0saXo9ZnouZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1mei5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXTsyMDQ4Pml6Lmxlbmd0aCYmaXoucHVzaChoeil9V2IoXCJldmFsU2NyaXB0c1wiLGZ1bmN0aW9uKCl7SnUoKX0pO0x1KCl9O30pLmNhbGwodGhpcyx7fSk7XG4ifSwgImhlYWRlcnNTaXplIjogNzMwLCAiYm9keVNpemUiOiAtNzMwLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAwfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogLTEsICJyZWNlaXZlIjogMS41MDF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjgwMDozZjA6NDAwMTo4MjQ6OjIwMDJdIiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMyIsICJzdWJqZWN0TmFtZSI6ICIqLmcuZG91YmxlY2xpY2submV0IiwgImlzc3VlciI6ICJHVFMgQ0EgMUMzIiwgInZhbGlkRnJvbSI6IDE2ODIzMzczNjMsICJ2YWxpZFRvIjogMTY4OTU5NDk2Mn19LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjAxMloiLCAidGltZSI6IDEuMTE0LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2FzdC5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg1KS5odG1sIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA0MjMsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE1IEdNVCJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDEifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVplZnRqSEJoYmtvZlRlVndaSmFiRmQ2NDRhZWh5MmJhelVFdEZKRldDazZjIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVplZnRqSEJoYmtvZlRlVndaSmFiRmQ2NDRhZWh5MmJhelVFdEZKRldDazZjXCIifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCwgQ29udGVudC1SYW5nZSwgWC1DaHVua2VkLU91dHB1dCwgWC1JcGZzLVBhdGgsIFgtSXBmcy1Sb290cywgWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYXN0LmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NGRhZjQ5MzdlNC1GUkEifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlLCBSYW5nZSwgVXNlci1BZ2VudCwgWC1SZXF1ZXN0ZWQtV2l0aCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA4NjY2NCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiA4NzcyOSwgInRleHQiOiAiLyohIEFTVCB2MC4zMS4wIFVwZGF0ZWQ6IDIwMjAtMDctMTUgKi8hZnVuY3Rpb24oZSl7dmFyIHQ9e307ZnVuY3Rpb24gbihhKXtpZih0W2FdKXJldHVybiB0W2FdLmV4cG9ydHM7dmFyIHI9dFthXT17aTphLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbYV0uY2FsbChyLmV4cG9ydHMscixyLmV4cG9ydHMsbiksci5sPSEwLHIuZXhwb3J0c31uLm09ZSxuLmM9dCxuLmQ9ZnVuY3Rpb24oZSx0LGEpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDphfSl9LG4ucj1mdW5jdGlvbihlKXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPW4oZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIGE9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIoYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmXCJzdHJpbmdcIiE9dHlwZW9mIGUpZm9yKHZhciByIGluIGUpbi5kKGEscixmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0uYmluZChudWxsLHIpKTtyZXR1cm4gYX0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCxcImFcIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD1cIlwiLG4obi5zPTEpfShbZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXttOntVVF9JRlJBTUU6XCJ1dGlmX1wiLFVUX0RJVjpcImRpdl91dGlmX1wifSxqOntXQVJOOlwiV0FSTlwifSxlOntERUJVR19NT0RFOlwiYXN0X2RlYnVnXCIsQVNUX0RPTkdMRTpcImFzdF9kb25nbGVcIixBU1RfREVCVUdfTUVNQkVSOlwiYXN0X2RlYnVnX21lbWJlclwiLEFTVF9ERUJVR19CSURERVI6XCJhc3RfZGVidWdfYmlkZGVyXCIsQVNUX1RFU1Q6XCJhc3RfdGVzdFwiLEFTVF9UT09MS0lUOlwiYXN0X3Rvb2xraXRcIixBU1RfT1ZFUlJJREU6e0JBU0U6XCJhc3Rfb3ZlcnJpZGVfXCIsRElWOlwiZGl2XCIsSU5ERVg6XCJpbmRleFwiLFRBR19JRDpcInRhZ19pZFwiLElOVl9DT0RFOlwiaW52X2NvZGVcIixQVUJMSVNIRVJfSUQ6XCJwdWJsaXNoZXJfaWRcIn19LGw6e1VOREVGSU5FRDpcInVuZGVmaW5lZFwiLE9CSkVDVDpcIm9iamVjdFwiLFNUUklORzpcInN0cmluZ1wiLE5VTUJFUjpcIm51bWJlclwifSxjOntJRTpcIm1zaWVcIixPUEVSQTpcIm9wZXJhXCJ9LG46e0xPQURFRDpcImxvYWRlZFwiLElNUFJFU1NJT046XCJpbXByZXNzaW9uXCJ9LGY6e1VUX0JBU0U6XCIvdXQvdjNcIixJTVBCVVM6XCJpYi5hZG54cy5jb21cIixVVF9QUkVCSUQ6XCIvdXQvdjMvcHJlYmlkXCJ9LHE6e01FRElBX1RZUEU6XCJtZWRpYV90eXBlXCIsQ1JFQVRJVkVfSUQ6XCJjcmVhdGl2ZV9pZFwiLEFEX1RZUEU6XCJhZF90eXBlXCIsQkFOTkVSOlwiYmFubmVyXCIsVklERU86XCJ2aWRlb1wiLENPTlRFTlQ6XCJjb250ZW50XCIsVVVJRDpcInV1aWRcIn0sazp7QkFOTkVSOlwiYmFubmVyXCIsTkFUSVZFOlwibmF0aXZlXCIsVklERU86XCJ2aWRlb1wifSxhOntDUkVBVElWRV9JRDpcImNyZWF0aXZlX2lkXCIsTk9USUZZOlwibm90aWZ5X3VybFwiLE5PQUQ6XCJub19hZF91cmxcIixJTVBfVVJMUzpcImltcHJlc3Npb25fdXJsc1wiLFRSQUNLRVJTOlwidHJhY2tlcnNcIn0sZDp7UlRCOlwicnRiXCIsQ1NNOlwiY3NtXCIsU1NNOlwic3NtXCJ9LGI6e0JBTk5FUjpcImJhbm5lclwiLE5BVElWRTpcIm5hdGl2ZVwiLFZJREVPOlwidmlkZW9cIn0saTp7VklERU9fTUVESUFUSU9OX0pTOlwiLy9hY2RuLmFkbnhzLmNvbS92aWRlby9hc3RNZWRpYXRpb24vQXN0TWVkaWF0aW9uTWFuYWdlci5qc1wiLEJBTk5FUl9NRURJQVRJT05fSlM6XCIvL2FjZG4uYWRueHMuY29tL2FzdC9tZWRpYXRpb24vMC4zMS4wL21lZGlhdGlvbi5qc1wiLFNBRkVfRlJBTUVfVVJMOlwiLy9hY2RuLmFkbnhzLmNvbS9hc3Qvc2FmZWZyYW1lL3N0YXRpYy8wLjMxLjAvaHRtbC9zYWZlZnJhbWUtdjIuaHRtbFwiLENETl9PUklHSU46XCJhY2RuLmFkbnhzLmNvbVwifSxnOntSRVFVRVNUOlwiYWRSZXF1ZXN0ZWRcIixBVkFJTEFCTEU6XCJhZEF2YWlsYWJsZVwiLExPQURFRDpcImFkTG9hZGVkXCIsTE9BREVEX01FRElBVEVEOlwiYWRMb2FkZWRNZWRpYXRlZFwiLE5PX0JJRF9NRURJQVRFRDpcImFkTm9CaWRNZWRpYXRlZFwiLFJFUVVFU1RfRkFJTDpcImFkUmVxdWVzdEZhaWx1cmVcIixOT19CSUQ6XCJhZE5vQmlkXCIsREVGQVVMVDpcImFkRGVmYXVsdFwiLEVSUk9SOlwiYWRFcnJvclwiLENPTExBUFNFOlwiYWRDb2xsYXBzZVwiLEJBRF9SRVFVRVNUOlwiYWRCYWRSZXF1ZXN0XCJ9LHA6e0FSUkFZOlwiQXJyYXlcIixTVFJJTkc6XCJTdHJpbmdcIixGVU5DOlwiRnVuY3Rpb25cIixOVU06XCJOdW1iZXJcIixPQko6XCJPYmplY3RcIixCT09MOlwiQm9vbGVhblwifSxvOntERUZBVUxUX1pJTkRFWDozZTMsU1RBVFVTOntSRUFEWTpcInJlYWR5XCIsTk9USUZZX0VYUEFOREVEOlwiZXhwYW5kZWRcIixOT1RJRllfQ09MTEFQU0VEOlwiY29sbGFwc2VkXCIsTk9USUZZX0VSUk9SOlwiZXJyb3JcIixGT0NVU19DSEFOR0U6XCJmb2N1cy1jaGFuZ2VcIixHRU9NX1VQREFURTpcImdlb20tdXBkYXRlXCIsQ01QOlwiY21wXCJ9fSxoOntDUkVBVElWRTpcImNyZWF0aXZlXCJ9fX0sZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24ucih0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkmJmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJ4XCIse30pLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKXx8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eT1mdW5jdGlvbihlLHQsbil7ZVt0XT1uLnZhbHVlfSk7dmFyIGEscj0nPGRpdiBjbGFzcz1cImFuY29va2llLWhlYWRlclwiIGlkPVwiYW5jb29raWUtY29udGFpbmVyXCI+XFxuICA8ZGl2IGlkPVwiYW5jb29raWUtbmF2XCI+XFxuICAgIDxkaXY+PC9kaXY+XFxuICA8L2Rpdj5cXG4gIDxkaXYgaWQ9XCJhbmNvb2tpZS1zbGlkZXJcIj5cXG4gICAgPHAgaWQ9XCJhbmNvb2tpZS1tc2dcIj5Zb3VyIGJyb3dzZXIgYmxvY2tzIDNyZCBwYXJ0eSBjb29raWVzIGJ5IGRlZmF1bHQuIEJ5IGNsaWNraW5nIG9uIHBhZ2UgeW91IGFsbG93IG91ciBwYXJ0bmVyIEFwcE5leHVzIHRvIHBsYWNlIGNvb2tpZXMgdG8gc2hvdyByZWxldmFudCBhZHMuIFJlYWQgbW9yZSBvciBvcHQgb3V0IG9mIHRoZXNlIGNvb2tpZXMgPGEgaHJlZj1cImh0dHBzOi8vd3d3LmFwcG5leHVzLmNvbS9lbi9jb21wYW55L3BsYXRmb3JtLXByaXZhY3ktcG9saWN5I2Nob2ljZXNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBzdHlsZT1cImNvbG9yOiAjNGY0ZjRmO1wiPmhlcmU8L2E+LiBUaGlzIG5vdGljZSBhcHBlYXJzIG9uY2UgPC9wPlxcbiAgICA8ZGl2IGlkPVwiYW5jb29raWUtY2xvc2VcIj4mdGltZXM8L2Rpdj5cXG4gIDwvZGl2PlxcbjwvZGl2PlxcbicsaT1cIi5hbmNvb2tpZS1oZWFkZXIge1xcbiAgYmFja2dyb3VuZDogI2QzZDNkMztcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcXG4gIGJvdHRvbTogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIG1pbi1oZWlnaHQ6IDM4cHg7XFxufVxcblxcbi5hbmNvb2tpZS1oZWFkZXIgKiB7XFxuICBmb250LXNpemU6IDEycHg7XFxuICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiAhaW1wb3J0YW50O1xcbiAgY29sb3I6ICM1NTU7XFxuICBsaW5lLWhlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4uYW5jb29raWUtaGVhZGVyIHAge1xcbiAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMzhweDtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxufVxcblxcbi5hbmNvb2tpZS1oZWFkZXIgYTpsaW5rLFxcbi5hbmNvb2tpZS1oZWFkZXIgYTpob3ZlcixcXG4uYW5jb29raWUtaGVhZGVyIGE6dmlzaXRlZCxcXG4uYW5jb29raWUtaGVhZGVyIGE6YWN0aXZlIHtcXG4gIGNvbG9yOiAjZTZlNmU2O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XFxuICBmb250LXdlaWdodDogNzAwO1xcbn1cXG5cXG4uYW5jb29raWUtaGVhZGVyIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIG9wYWNpdHk6IDAuOTtcXG59XFxuXFxuLmFuY29va2llLWhlYWRlciAqIHtcXG4gIGZvbnQtc2l6ZTogMTFweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4jYW5jb29raWUtbXNnIHtcXG4gIGhlaWdodDogMzRweDtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIyNHB4KSB7XFxuICAuYW5jb29raWUtaGVhZGVyICoge1xcbiAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcXG4gIH1cXG5cXG4gICNhbmNvb2tpZS1tc2cge1xcbiAgICBoZWlnaHQ6IDIwcHg7XFxuICAgIG9wYWNpdHk6IDA7XFxuICB9XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6IDc2OHB4KSBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDEwMjRweCkge1xcbiAgLmFuY29va2llLWhlYWRlciB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gIH1cXG59XFxuXFxuLmFuY29va2llLWhlYWRlciB7XFxuICB6LWluZGV4OiA5OTk5O1xcbiAgb3BhY2l0eTogMTtcXG59XFxuXFxuI2FuY29va2llLXNsaWRlciB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZzogMTBweDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcblxcbiNhbmNvb2tpZS1zbGlkZXIgcCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbiAgb3BhY2l0eTogMDtcXG4gIC13ZWJraXQtY29sdW1uLWdhcDogMjBweDtcXG4gIC13ZWJraXQtY29sdW1uLXJ1bGUtd2lkdGg6IDA7XFxufVxcblxcbiNhbmNvb2tpZS1uYXYge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiAwO1xcbiAgdG9wOiAtMTFweDtcXG4gIHotaW5kZXg6IDIwMDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuI2FuY29va2llLW5hdiBkaXYge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcGFkZGluZzogMCAxMHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QzZDNkMztcXG4gIGJvcmRlci1yYWRpdXM6IDEwcHggMTBweCAwIDA7XFxufVxcblxcbiNhbmNvb2tpZS1uYXYgc3BhbiB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiA2cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgbWFyZ2luOiAxcHggMnB4O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDEpO1xcbiAgLXdlYmtpdC1vcGFjaXR5OiAwLjU7XFxufVxcblxcbiNhbmNvb2tpZS1uYXYgc3Bhbi5zZWxlY3RlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC41cyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMSk7XFxuICAtd2Via2l0LW9wYWNpdHk6IDE7XFxufVxcblxcbiNhbmNvb2tpZS1jbG9zZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICByaWdodDogNXB4O1xcbiAgYm90dG9tOiAyMHB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XFxufVxcblwiO2Z1bmN0aW9uIG8oZSl7cy5zZXRQYXJlbnROb2RlKGUpLHMuZ2V0Q29udGFpbmVyKCkucXVlcnlTZWxlY3RvcihcIiNhbmNvb2tpZS1jbG9zZVwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixmdW5jdGlvbigpe2UucmVtb3ZlKCl9KTt2YXIgdCxuPWZ1bmN0aW9uKCl7dmFyIGU9cy5nZXRTbGlkZXJFbGVtZW50KCksbj1kKGUpLHI9cy5nZXRNZXNzYWdlRWxlbWVudCgpO3Iuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIi13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IC13ZWJraXQtY29sdW1uLXdpZHRoOiBcIituK1wicHg7XCIpO3ZhciBpPXMuZ2V0TmF2KCk7aS5pbm5lckhUTUw9XCJcIixjbGVhclRpbWVvdXQodCksdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChhKSxyLnN0eWxlLndlYmtpdFRyYW5zaXRpb249XCJvcGFjaXR5IDAuM3MgZWFzZS1vdXRcIixyLnN0eWxlLm9wYWNpdHk9MTt2YXIgdD1lLnNjcm9sbFdpZHRoKzEwLG89TWF0aC5yb3VuZCh0L24pOzE8byYmKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1cIjxzcGFuIGNsYXNzPXNlbGVjdGVkPjwvc3Bhbj5cIixuPTE7bjwyO24rKyl0Kz1cIjxzcGFuPjwvc3Bhbj5cIjtlLmlubmVySFRNTD10fShpKSxmdW5jdGlvbigpe3ZhciBlLHQ9ZChzLmdldFNsaWRlckVsZW1lbnQoKSksbj17Y3ljbGVzOjIsaXNGaXJzdFNsaWRlOiEwfTthPXNldEludGVydmFsKGZ1bmN0aW9uKCl7bi5jeWNsZXN8fGNsZWFySW50ZXJ2YWwoYSksZT1uLmlzRmlyc3RTbGlkZT8xOjAsbj1mdW5jdGlvbihlLHQsbil7dmFyIGE9cy5nZXRNZXNzYWdlRWxlbWVudCgpO2Euc3R5bGUud2Via2l0VHJhbnNpdGlvbj1cIm9wYWNpdHkgMC4zcyBlYXNlLW91dCwgLXdlYmtpdC10cmFuc2Zvcm0gXCIrdCtcInMgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDEpXCIsYS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09XCJ0cmFuc2xhdGVYKFwiK2UrXCJweClcIiwwPT1lJiZuLmN5Y2xlcy0tLG4uaXNGaXJzdFNsaWRlPSFuLmlzRmlyc3RTbGlkZTtmb3IodmFyIHI9cy5nZXRDb250YWluZXIoKS5xdWVyeVNlbGVjdG9yQWxsKFwic3BhblwiKSxpPTA7aTxyLmxlbmd0aDtpKyspXCJzZWxlY3RlZFwiPT09cltpXS5jbGFzc05hbWU/cltpXS5yZW1vdmVBdHRyaWJ1dGUoXCJjbGFzc1wiKTpyW2ldLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsXCJzZWxlY3RlZFwiKTtyZXR1cm4gbn0oLTEqZSp0LDEuMixuKX0sM2UzKX0oKSl9LDMwMCl9O24oKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLG4pfXZhciBzPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLGEscjtyZXR1cm57Z2V0Q29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIGV8fChlPXIucXVlcnlTZWxlY3RvcihcIiNhbmNvb2tpZS1jb250YWluZXJcIikpLGV9LGdldE1lc3NhZ2VFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHR8fCh0PXIucXVlcnlTZWxlY3RvcihcIiNhbmNvb2tpZS1tc2dcIikpLHR9LGdldFNsaWRlckVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnx8KG49ci5xdWVyeVNlbGVjdG9yKFwiI2FuY29va2llLXNsaWRlclwiKSksbn0sZ2V0TmF2OmZ1bmN0aW9uKCl7cmV0dXJuIGF8fChhPXIucXVlcnlTZWxlY3RvcihcIiNhbmNvb2tpZS1uYXYgZGl2XCIpKSxhfSxzZXRQYXJlbnROb2RlOmZ1bmN0aW9uKGUpe3I9ZX19fSgpO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIGUub2Zmc2V0V2lkdGh9dmFyIHU9XCJodHRwOi8vaWIuYWRueHMuY29tL3NlZz9hZGQ9MSZyZWRpcj1cIixjPVwiLy9pYi5hZG54cy5jb20vZ2V0dWlkalwiLGw9ITE7ZnVuY3Rpb24gZigpe2x8fChsPSEwLC9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk/KGZ1bmN0aW9uKCl7aWYoXCJ0cnVlXCIhPT1kb2N1bWVudC5jb29raWUucmVwbGFjZSgvKD86KD86XnwuKjtcXHMqKWFuQ29va2llc2V0Rm9vdGVyXFxzKlxcPVxccyooW147XSopLiokKXxeLiokLyxcIiQxXCIpKXt2YXIgZT1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ZS5pZD1cImNvb2tpZW1zZy1zbGlkZXJcIjt2YXIgdD0nPHN0eWxlIG1lZGlhPVwic2NyZWVuXCI+JytpK1wiPC9zdHlsZT5cIjtyZXR1cm4gZS5pbm5lckhUTUw9dCtyLGV9KCk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSxvKGUpLGRvY3VtZW50LmNvb2tpZT1cImFuQ29va2llc2V0Rm9vdGVyPXRydWU7IGV4cGlyZXM9RnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVRcIn19KCksZnVuY3Rpb24oZSx0KXt2YXIgbjt0cnl7bj1uZXcgWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7cmV0dXJufW4ub3BlbihcIkdFVFwiLGUpLG4ud2l0aENyZWRlbnRpYWxzPSEwLG4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoND09PW4ucmVhZHlTdGF0ZSYmMjAwPT09bi5zdGF0dXMpdHJ5e3ZhciBlPUpTT04ucGFyc2Uobi5yZXNwb25zZVRleHQpO3QoZSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19LG4uc2VuZCgpfShjLHApKTpjb25zb2xlLmxvZyhcIk5vdCBzYWZhcmksIHNraXBwaW5nIGxpbmsgb3ZlcnJpZGVcIikpfWZ1bmN0aW9uIHAoZSl7Y29uc29sZS5sb2coZS51aWQpLDA9PT0ocGFyc2VJbnQoZS51aWQsMTApfHwwKSYmZnVuY3Rpb24oKXtjb25zb2xlLmxvZyhcIlBlcmZvbWluZyBsaW5rIG92ZXJyaWRlLlwiKTtmb3IodmFyIGU9MDtlPGRvY3VtZW50LmxpbmtzLmxlbmd0aDtlKyspe3ZhciB0PWRvY3VtZW50LmxpbmtzW2VdO3QuaHJlZj11K2VuY29kZVVSSUNvbXBvbmVudCh0LmhyZWYpfX0oKX12YXIgZz1uKDApLG09Zy5wLkFSUkFZLHY9Zy5wLlNUUklORyxoPWcucC5GVU5DLHk9Zy5wLk5VTSxiPWcucC5PQkosdz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEk9ITEsXz1nLmUuREVCVUdfTU9ERSxFPWcubC5VTkRFRklORUQsVD1nLmQuUlRCLGs9Zy5kLkNTTSx4PWcuZC5TU00sUz1nLmgsQT1udWxsO3RyeXtBPVwib2JqZWN0XCI9PXR5cGVvZiBjb25zb2xlLmluZm8/Y29uc29sZS5pbmZvOmNvbnNvbGUuaW5mby5iaW5kKHdpbmRvdy5jb25zb2xlKX1jYXRjaChlKXt9dmFyIFI9ZnVuY3Rpb24oZSx0LG4sYSl7ZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4sYSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudChcIm9uXCIrdCxuKX0sTj1mdW5jdGlvbihlLHQsbixhKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixhKTplLmRldGFjaEV2ZW50JiZlLmRldGFjaEV2ZW50KFwib25cIit0LG4pfSxEPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PVwiW29iamVjdCBcIit0K1wiXVwifSxDPWZ1bmN0aW9uKGUpe3JldHVybiBEKGUsYil9LHE9ZnVuY3Rpb24oZSl7cmV0dXJuIEQoZSxoKX0sTz1mdW5jdGlvbihlKXtyZXR1cm4gRChlLHYpfSxNPWZ1bmN0aW9uKGUpe3JldHVybiBEKGUsbSl9LFA9ZnVuY3Rpb24oZSl7cmV0dXJuIEQoZSx5KX0sQj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4hMDtpZihNKGUpfHxPKGUpKXJldHVybiAwPT09ZS5sZW5ndGg7Zm9yKHZhciB0IGluIGUpaWYody5jYWxsKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZ30sRj1mdW5jdGlvbigpe3ZhciBlPW5ldyBEYXRlO3JldHVyblwiW1wiK2UuZ2V0SG91cnMoKStcIjpcIitlLmdldE1pbnV0ZXMoKStcIjpcIitlLmdldFNlY29uZHMoKStcIjpcIitlLmdldE1pbGxpc2Vjb25kcygpK1wiXSBcIn0sTD1mdW5jdGlvbihlKXtpZihLKCkmJlUoKSl7dmFyIHQ9RigpLG49ZGUoKT9cIlNBRkVGUkFNRSBNRVNTQUdFOiBcIjpcIk1FU1NBR0U6IFwiO2NvbnNvbGUubG9nKHQrbitlKX19LHo9ZnVuY3Rpb24oZSl7aWYoSygpJiZVKCkpe3ZhciB0PUYoKSxuPWRlKCk/XCJTQUZFRlJBTUUgV0FSTjogXCI6XCJXQVJOOiBcIjtjb25zb2xlLndhcm4/Y29uc29sZS53YXJuKHQrbitlKTpjb25zb2xlLmxvZyh0K24rZSl9fSxXPWZ1bmN0aW9uKGUsdCl7aWYoSygpJiZVKCkpe3ZhciBuPXR8fFwiR0VORVJBTF9FUlJPUlwiLGE9RigpLHI9ZGUoKT9cIlNBRkVGUkFNRSBcIjpcIlwiO2NvbnNvbGUuZXJyb3I/Y29uc29sZS5lcnJvcihhK3IrbitcIjogXCIrZSk6Y29uc29sZS5sb2coYStyK24rXCI6IFwiK2UpfX0saj1mdW5jdGlvbihlKXtLKCkmJlUoKSYmY29uc29sZS50aW1lU3RhbXAmJmNvbnNvbGUudGltZVN0YW1wKGUpfSxWPWZ1bmN0aW9uKGUsdCl7aWYoSygpJiZVKCkpe3ZhciBuPUYoKTtpZihBKXt0JiYwIT09dC5sZW5ndGh8fCh0PVwiXCIpO3ZhciBhPWRlKCk/XCJTQUZFRlJBTUUgSU5GTzogXCI6XCJJTkZPOiBcIjtBKG4rYStlKyhcIlwiPT09dD9cIlwiOlwiIDogcGFyYW1zIDogXCIpLHQpfX19LEg9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWUuZG9jdW1lbnQscj1hLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7ci50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIsci5hc3luYz0hMCxuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiYoci5yZWFkeVN0YXRlP3Iub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7XCJsb2FkZWRcIiE9PXIucmVhZHlTdGF0ZSYmXCJjb21wbGV0ZVwiIT09ci5yZWFkeVN0YXRlfHwoci5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxuKCkpfTpyLm9ubG9hZD1mdW5jdGlvbigpe24oKX0pLHIuc3JjPXQ7dmFyIGk9YS5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIik7cmV0dXJuKGk9aS5sZW5ndGg/aTphLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKSkubGVuZ3RoJiYoaT1pWzBdKS5pbnNlcnRCZWZvcmUocixpLmZpcnN0Q2hpbGQpLHJ9LFg9ZnVuY3Rpb24oKXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKTtyZXR1cm5cInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eFwiLnJlcGxhY2UoL1t4eV0vZyxmdW5jdGlvbih0KXt2YXIgbj0oZSsxNipNYXRoLnJhbmRvbSgpKSUxNnwwO3JldHVybiBlPU1hdGguZmxvb3IoZS8xNiksKFwieFwiPT09dD9uOjMmbnw4KS50b1N0cmluZygxNil9KX0sSj1mdW5jdGlvbihlLHQsbil7dmFyIGE9dm9pZCAwO2lmKG49XCJhbnhfXCIrbisobmV3IERhdGUpLmdldFRpbWUoKSxlJiZ0KXsoYT1uZXcgSW1hZ2UpLmlkPW4sYS5zcmM9dCxhLmhlaWdodD0wLGEud2lkdGg9MCxhLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsYS5vbmxvYWQ9ZnVuY3Rpb24oKXt0cnl7dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMpfWNhdGNoKGUpe319O3RyeXtlLmluc2VydEJlZm9yZShhLGUuZmlyc3RDaGlsZCl9Y2F0Y2goZSl7VyhcIkVycm9yIGxvZ2dpbmcgaW1wcmVzc2lvbiBmb3IgdGFnOiBcIituK1wiIDpcIitlLm1lc3NhZ2UpfX19LEc9ZnVuY3Rpb24oZSx0KXtpZighQihlKSl7aWYocShlLmZvckVhY2gpKXJldHVybiBlLmZvckVhY2godCk7dmFyIG49MCxhPWUubGVuZ3RoO2lmKGE+MClmb3IoO248YTtuKyspdChlW25dLG4sZSk7ZWxzZSBmb3IobiBpbiBlKXcuY2FsbChlLG4pJiZ0KGVbbl0sbixlKX19LFk9ZnVuY3Rpb24oZSx0KXtpZihCKGUpKXJldHVybiExO2Zvcih2YXIgbj1lLmxlbmd0aDtuLS07KWlmKGVbbl09PT10KXJldHVybiEwO3JldHVybiExfSxLPWZ1bmN0aW9uKCl7cmV0dXJuISFkZSgpfHwoaWUoKS5hcG50YWc9aWUoKS5hcG50YWd8fHt9LGFwbnRhZyYmITE9PT1hcG50YWcuZGVidWcmJiExPT09SSYmKGFwbnRhZy5kZWJ1Zz1cIlRSVUVcIj09PWVlKF8pLnRvVXBwZXJDYXNlKCksST0hMCksISghYXBudGFnfHwhYXBudGFnLmRlYnVnKSl9LCQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXBudGFnLnJlcXVlc3RzLnRhZ3NbZV0sbj10JiZ0LmluaXRDb2xsYXBzZWQsYT1uJiZuLmV4cGFuZEJ5JiZsZShTKS5pbmRleE9mKG4uZXhwYW5kQnkpPj0wO3JldHVybiBuJiZhfSxRPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISFlJiYtMSE9PWUuaW5kZXhPZih0KX0sWj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gd2luZG93LnRvcC5sb2NhdGlvbi5zZWFyY2h9Y2F0Y2goZSl7dHJ5e3JldHVybiB3aW5kb3cubG9jYXRpb24uc2VhcmNofWNhdGNoKGUpe3JldHVyblwiXCJ9fX0sZWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgUmVnRXhwKFwiW1xcXFw/Jl1cIitlK1wiPShbXiYjXSopXCIpLmV4ZWModHx8WigpKTtyZXR1cm4gbnVsbD09PW4/XCJcIjpkZWNvZGVVUklDb21wb25lbnQoblsxXS5yZXBsYWNlKC9cXCsvZyxcIiBcIikpfSx0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmhhc093blByb3BlcnR5P2UuaGFzT3duUHJvcGVydHkodCk6dHlwZW9mIGVbdF0hPT1FJiZlLmNvbnN0cnVjdG9yLnByb3RvdHlwZVt0XSE9PWVbdF19LG5lPWZ1bmN0aW9uKGUsdCl7aWYoQihlKSlyZXR1cm5bXTtpZihxKGUubWFwKSlyZXR1cm4gZS5tYXAodCk7dmFyIG49W107cmV0dXJuIEcoZSxmdW5jdGlvbihhLHIpe24ucHVzaCh0KGEscixlKSl9KSxufSxhZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/bjpPKHQpP3Q6UCh0KT90LnRvU3RyaW5nKCk6dm9pZCB6KFwiVW5zdXBvcnRlZCB0eXBlIGZvciBwYXJhbTogXCIrZStcIiByZXF1aXJlZCB0eXBlOiBTdHJpbmdcIil9LHJlPWZ1bmN0aW9uKGUsdCxuLGEpe3JldHVybiBudWxsPT10P2E6RCh0LG4pP3Q6KHooXCJVbnN1cG9ydGVkIHR5cGUgZm9yIHBhcmFtOiBcIitlK1wiIHJlcXVpcmVkIHR5cGU6IFwiK24pLG49PT15JiYodD1OdW1iZXIodCkpLGlzTmFOKHQpP2E6dCl9LGllPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvd30sb2U9ZnVuY3Rpb24oZSl7aWYoZSYmZS5sZW5ndGg+MCl7aWYoZVswXVtUXSlyZXR1cm4gZVswXVtUXTtpZihlWzBdW2tdKXJldHVybiBlWzBdW2tdO2lmKGVbMF1beF0pcmV0dXJuIGVbMF1beF19fSxzZT1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8IShlIGluc3RhbmNlb2YgT2JqZWN0KSlyZXR1cm4gZTt2YXIgdD1lIGluc3RhbmNlb2YgQXJyYXk/W106e307Zm9yKHZhciBuIGluIGUpdFtuXT1zZShlW25dKTtyZXR1cm4gdH07ZnVuY3Rpb24gZGUoKXtyZXR1cm4hKHR5cGVvZiAkc2Y9PT1FfHwhJHNmLmV4dCkmJiEhJHNmLmV4dC5kZWJ1Z312YXIgdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGcubS5VVF9ESVYrZS50YXJnZXRJZH0sY2U9ZnVuY3Rpb24oKXtyZXR1cm4gaWUoKS5kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCtcIi8vXCIrZy5pLkNETl9PUklHSU59LGxlPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJnQucHVzaChlW25dKTtyZXR1cm4gdH0sZmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj12b2lkIDA7aWYocShlKSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSYmKG49ZS5hcHBseSh0fHx0aGlzLGFyZ3VtZW50cyksZT1udWxsKSxufX0scGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm5bXCJkZWJ1Z1wiLFwiZGlzcGxheWVkXCIsXCJpbml0aWFsSGVpZ2h0XCIsXCJpbml0aWFsV2lkdGhcIixcIm1lbWJlclwiLFwic2hvd1RhZ0NhbGxlZFwiLFwic2l6ZXNcIixcInRhcmdldElkXCIsXCJ1dENhbGxlZFwiLFwidXREaXZJZFwiLFwidXRpZnJhbWVJZFwiLFwidXVpZFwiLFwia2V5d29yZHNcIl0uZm9yRWFjaChmdW5jdGlvbih0KXtuW3RdPWVbdF19KSx0JiYobi5vbj10Lm9uLG4ub2ZmPXQub2ZmLG4ubW9kaWZ5VGFnPXQubW9kaWZ5VGFnLG4uc2V0S2V5d29yZHM9dC5zZXRLZXl3b3Jkcyksbn0sZ2U9ZnVuY3Rpb24oZSl7YXBudGFnLnJlcXVlc3RzLnRhZ3M9YXBudGFnLnJlcXVlc3RzLnRhZ3N8fHt9O3ZhciB0PSEwO3JldHVybiB0eXBlb2YgYXBudGFnLnJlcXVlc3RzLnRhZ3NbZV09PT1FJiYodD0hMSksdH0sbWU9ZnVuY3Rpb24oKXthcG50YWcucmVxdWVzdHMuaGFzTGVmdD0hMSxHKGFwbnRhZy5yZXF1ZXN0cy50YWdzLGZ1bmN0aW9uKGUsdCl7ZS5kaXNwbGF5ZWR8fGUucHJlYmlkfHxlLmlzTWVkaWF0ZWR8fCh6KHQrXCIgaXMgbm90IGRpc3BsYXllZC5cIixnLmouV0FSTiksYXBudGFnLnJlcXVlc3RzLmhhc0xlZnQ9ITApfSksYXBudGFnLnJlcXVlc3RzLmhhc0xlZnR8fEwoXCJhbGwgVGFncyBhcmUgZGlzcGxheWVkLlwiKX0sdmU9QXJyYXkucHJvdG90eXBlLnNsaWNlLGhlPW5lKGcuZyxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHllPWZ1bmN0aW9uKCl7dmFyIGU9e30sdD17fTtyZXR1cm4gdC5vbj1mdW5jdGlvbih0LG4sYSl7aWYoZnVuY3Rpb24oZSl7cmV0dXJuIFkoaGUsZSl9KHQpKXt2YXIgcj17fTtyW25dPWEsZVt0XT1lW3RdfHxbXSxlW3RdLnB1c2gocil9ZWxzZSBXKFwiV3JvbmcgZXZlbnQgbmFtZSA6IFwiK3QrXCIgVmFsaWQgZXZlbnQgbmFtZXMgOlwiK2hlKX0sdC5lbWl0PWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LG4pe3ZhciBhPW5bMF0scj12ZS5jYWxsKG4sMSk7TChcIkVtaXR0aW5nIGV2ZW50IGZvcjogXCIrdCtcIiBmb3IgYWQgdGFnOiBcIithKSxHKGVbdF0sZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtpZihudWxsIT0odD10ZShlLFwiKlwiKT9lW1wiKlwiXTplW2FdKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdCl0cnl7dC5hcHBseShudWxsLHIpfWNhdGNoKGUpe1coXCJldmVudHMuX2Rpc3BhdGNoOiBFcnJvciBleGVjdXRpbmcgZXZlbnQgaGFuZGxlciBmdW5jdGlvbjogXCIrZS5tZXNzYWdlKX19KX0odCx2ZS5jYWxsKGFyZ3VtZW50cywxKSl9LHQub2ZmPWZ1bmN0aW9uKHQsbixhKXtCKGVbdF0pfHxHKGVbdF0sZnVuY3Rpb24oZSl7XCIqXCI9PT1uJiZudWxsIT09ZVtPYmplY3Qua2V5cyhlKVswXV0mJnZvaWQgMCE9PWVbT2JqZWN0LmtleXMoZSlbMF1dP3ZvaWQgMCE9PWEmJk9iamVjdC52YWx1ZXMoZSkhPT1hfHwoZVtPYmplY3Qua2V5cyhlKVswXV09bnVsbCk6bnVsbCE9PWVbbl0mJnZvaWQgMCE9PWVbbl0mJih2b2lkIDAhPT1hJiZlW25dIT09YXx8KGVbbl09bnVsbCkpfSl9LHQuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGV9LHR9KCksYmU9XCJodHRwczpcIj09PWllKCkuZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w/XCJodHRwczpcIjpcImh0dHA6XCIsd2U9W10sSWU9ITEsX2U9YmUrZy5pLlZJREVPX01FRElBVElPTl9KUyxFZT1iZStnLmkuQkFOTkVSX01FRElBVElPTl9KUyxUZT1nLnEuQURfVFlQRSxrZT1nLmIuQkFOTkVSLHhlPWcuYi5WSURFTyxTZT1mdW5jdGlvbihlKXt2YXIgdD0hMTtyZXR1cm4gZSYmRyhlLGZ1bmN0aW9uKGUpe1wiY3NtXCI9PT1lLmNvbnRlbnRfc291cmNlJiYodD0hMCl9KSx0fSxBZT1mdW5jdGlvbihlKXt2YXIgdD1rZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCYmZVswXVtUZV09PT14ZSYmKHQ9eGUpLHR9LFJlPWZ1bmN0aW9uKGUsdCxuLGEpe2U9PT14ZSYmKG51bGwhPT10JiZ3ZS5wdXNoKHQpLEllJiZ3aW5kb3cuQVBOVmlkZW9fQXN0TWVkaWF0aW9uTWFuYWdlcj9HKHdlLGZ1bmN0aW9uKGUpe2lmKCFlLmNhbGxlZCl0cnl7d2luZG93LkFQTlZpZGVvX0FzdE1lZGlhdGlvbk1hbmFnZXIuc2VsZWN0QWQoZS51dWlkLGUsbixhKSxlLmNhbGxlZD0hMH1jYXRjaChlKXtXKFwiRXJyb3IgaW52b2tpbmcgdmlkZW8gbWVkaWF0aW9uXCIsXCJtZWRpYXRpb25tYW5hZ2VyLmpzXCIsZSl9fSk6KEgod2luZG93LF9lLGZ1bmN0aW9uKCl7UmUoeGUsbnVsbCxuLGEpfSksSWU9ITApKX0sTmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm4gRyhlLGZ1bmN0aW9uKGUpe2UudXVpZD09PXQudXVpZCYmZS5tZWRpYXRpb25PcHRpb25zJiYobj1lLm1lZGlhdGlvbk9wdGlvbnMpfSksbn0sRGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNNZWRpYXRlZHx8ZS5pc1J0YlZpZGVvRmFsbGJhY2s/ZS5hZFJlc3BvbnNlLmFkOmUuYWRSZXNwb25zZS5hZHNbMF19LENlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTWVkaWF0ZWR8fGUuaXNSdGJWaWRlb0ZhbGxiYWNrfHwoZS5hZFJlc3BvbnNlLmFkPWUuYWRSZXNwb25zZS5hZHNbMF0pLGV9LHFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29udGVudF9zb3VyY2Usbj1lLmFkX3R5cGU7aWYodClyZXR1cm4gZVt0XVtuXX0sT2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj1cIjxzY3JpcHQ+XCI7cmV0dXJuIG4rPVwidmFyIEFQTl9tYWNyb3MgPSB7fTtcIixuKz0nQVBOX21hY3Jvcy51dWlkID0gXCInK2UrJ1wiOycsbis9XCJBUE5fbWFjcm9zLmVuYWJsZU1lZGlhdGlvbkV2ZW50cyA9IFwiK2FwbnRhZy5yZXF1ZXN0cy5lbmFibGVNZWRpYXRpb25FdmVudHMrXCI7XCIsbis9XCJBUE5fbWFjcm9zLmV4cGFuZEJ5Q3JlYXRpdmUgPSBcIiskKGUpK1wiO1wiLG4rPVwiQVBOX21hY3Jvcy5hZHMgPSBcIixuKz0nd2luZG93LnBhcmVudC5hcG50YWcuZ2V0QWRNYXJrdXAoXCInK2UrJ1wiLCBcIicrdC51dWlkKydcIik7JyxuKz1cIjtcIixuKz1cImRvY3VtZW50LndyaXRlKCc8c2NyJyArICdpcHQgc3JjPVxcXCJcIitFZStcIlxcXCI+PC9zY3InICsgJ2lwdD4nKTtcIixuKz1cIjxcXC9zY3JpcHQ+XCJ9LE1lPVtdLFBlPWcuZS5BU1RfT1ZFUlJJREUsQmU9UGUuQkFTRSxVZT1CZStQZS5ESVYsRmU9QmUrUGUuSU5ERVgsTGU9QmUrUGUuVEFHX0lELHplPUJlK1BlLklOVl9DT0RFLFdlPVwiZm9yY2VfY3JlYXRpdmVfaWRcIixqZT12b2lkIDA7ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIGVlKGUsamUpfWZ1bmN0aW9uIEhlKGUsdCxuKXt2YXIgYT1OdW1iZXIodCk7aWYoaXNOYU4oYSkpVyhcIkZvcmNlIENyZWF0aXZlIG11c3QgYmUgYSBudW1iZXJcIik7ZWxzZXtlW1dlXT1hLGFwbnRhZy50ZXN0PSEwO3ZhciByPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbDtyZXR1cm4gRyh0LGZ1bmN0aW9uKHQpe3QudXVpZD09PWUudXVpZCYmKG49dC50YXJnZXRJZCl9KSxufShlLG4pO0woXCJGb3JjZSBDcmVhdGl2ZSBpbiB1c2UgZm9yIHRhcmdldElkOiBcIityKX19dmFyIFhlPXZvaWQgMDt0cnl7WGU9d2luZG93LmxvY2FsU3RvcmFnZX1jYXRjaChlKXt6KFwibG9jYWxTdG9yYWdlIG5vdCBhdmFpbGFibGUgZm9yIGN1cnJlbnQgYnJvd3NlclwiKX12YXIgSmU9WGUsR2U9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9W10sbj12b2lkIDA7ZG97dHJ5e249bj9uLnBhcmVudDplO3RyeXt0LnB1c2goe3JlZmVycmVyOm4uZG9jdW1lbnQucmVmZXJyZXJ8fG51bGwsbG9jYXRpb246bi5sb2NhdGlvbi5ocmVmfHxudWxsLGlzVG9wOm49PT1lLnRvcH0pfWNhdGNoKGEpe3QucHVzaCh7cmVmZXJyZXI6bnVsbCxsb2NhdGlvbjpudWxsLGlzVG9wOm49PT1lLnRvcH0pLHooXCJUcnlpbmcgdG8gYWNjZXNzIGNyb3NzIGRvbWFpbiBpZnJhbWUuIENvbnRpbnVpbmcgd2l0aG91dCByZWZlcnJlciBhbmQgbG9jYXRpb25cIil9fWNhdGNoKGUpe3JldHVybiB0LnB1c2goe3JlZmVycmVyOm51bGwsbG9jYXRpb246bnVsbCxpc1RvcDohMX0pLHR9fXdoaWxlKG4hPT1lLnRvcCk7cmV0dXJuIHR9KCksbj1mdW5jdGlvbigpe3RyeXtpZighZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMpcmV0dXJuO3JldHVybiBlLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2luc31jYXRjaChlKXt9fSgpO2lmKG4pZm9yKHZhciBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXRbYV0uYW5jZXN0b3I9blthXTtyZXR1cm4gdH1yZXR1cm4gZnVuY3Rpb24oKXt0cnl7dmFyIGU9dCgpLG49ZS5sZW5ndGgtMSxhPW51bGwhPT1lW25dLmxvY2F0aW9ufHxuPjAmJm51bGwhPT1lW24tMV0ucmVmZXJyZXIscj1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPW51bGwsYT1udWxsLHI9bnVsbCxpPW51bGwsbz1udWxsLHM9bnVsbCxkPXZvaWQgMDtmb3IoZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXt0cnl7YT1lW2RdLmxvY2F0aW9ufWNhdGNoKGUpe31pZihhKW49ZW5jb2RlVVJJQ29tcG9uZW50KGEpLHQucHVzaChuKSxzfHwocz1uKTtlbHNlIGlmKDAhPT1kKXtyPWVbZC0xXTt0cnl7aT1yLnJlZmVycmVyLG89ci5hbmNlc3Rvcn1jYXRjaChlKXt9aT8obj1lbmNvZGVVUklDb21wb25lbnQoaSksdC5wdXNoKG4pLHN8fChzPW4pKTpvPyhuPWVuY29kZVVSSUNvbXBvbmVudChvKSx0LnB1c2gobiksc3x8KHM9bikpOnQucHVzaChudWxsKX1lbHNlIHQucHVzaChudWxsKX1yZXR1cm57c3RhY2s6dCxkZXRlY3RlZFJlZmVyZXJVcmw6c319KGUpO3JldHVybntyZWZlcmVyOnIuZGV0ZWN0ZWRSZWZlcmVyVXJsLHJlYWNoZWRUb3A6YSxudW1JZnJhbWVzOm4sc3RhY2s6ci5zdGFja319Y2F0Y2goZSl7fX19KHdpbmRvdyksWWU9Zy5wLlNUUklORyxLZT1nLnAuTlVNLCRlPWcucC5CT09MLFFlPWcuZS5BU1RfRE9OR0xFLFplPWcuZS5BU1RfVE9PTEtJVCxldD1nLmUuQVNUX1RFU1QsdHQ9Zy5lLkFTVF9ERUJVR19NRU1CRVIsbnQ9Zy5lLkFTVF9ERUJVR19CSURERVI7ZnVuY3Rpb24gYXQoZSl7dmFyIHQ9W107cmV0dXJuIEcoZSxmdW5jdGlvbihlLG4pe2lmKE0oZSkpe3ZhciBhPVtdO0coZSxmdW5jdGlvbihlKXsoZT1hZShcImtleXdvcmRzLlwiK24sZSkpJiZhLnB1c2goZSl9KSxlPWF9ZWxzZXtpZihlPWFlKFwia2V5d29yZHMuXCIrbixlKSwhTyhlKSlyZXR1cm47ZT1bZV19dmFyIHI9e2tleTpuLHZhbHVlOmV9O3QucHVzaChyKX0pLHR9dmFyIHJ0PWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49e307aWYoTShlKSYmMj09PWUubGVuZ3RoJiYhTShlWzBdKSluLndpZHRoPXBhcnNlSW50KGVbMF0sMTApLG4uaGVpZ2h0PXBhcnNlSW50KGVbMV0sMTApLHQucHVzaChuKTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWZvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgcj1lW2FdOyhuPXt9KS53aWR0aD1wYXJzZUludChyWzBdLDEwKSxuLmhlaWdodD1wYXJzZUludChyWzFdLDEwKSx0LnB1c2gobil9cmV0dXJuIHR9LGl0PWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciByPXt9O2UuZGlzYWJsZVBzYSYmRyhlLnRhZ3MsZnVuY3Rpb24oZSl7ZS5kaXNhYmxlUHNhPSEwfSksZS5nZHByX2NvbnNlbnQmJihyLmdkcHJfY29uc2VudD1lLmdkcHJfY29uc2VudCksZS51c19wcml2YWN5JiYoci51c19wcml2YWN5PWUudXNfcHJpdmFjeSksZS5nZW9PdmVycmlkZSYmKHIuZ2VvX292ZXJyaWRlPXtjb3VudHJ5X2NvZGU6ZS5nZW9PdmVycmlkZS5jb3VudHJ5Q29kZSxwb3N0YWxfY29kZTplLmdlb092ZXJyaWRlLnppcH0pO3ZhciBpPVtdLG89MDtHKGUudGFncyxmdW5jdGlvbihlKXtpZighZS51dENhbGxlZCYmZS5tZW1iZXI9PT10JiZmdW5jdGlvbihlKXtpZighYSlyZXR1cm4hMDt2YXIgdD0hMTtyZXR1cm4gRyhhLGZ1bmN0aW9uKG4pe2UudGFyZ2V0SWQ9PT1uJiYodD0hMCl9KSx0fShlKSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYoZS51dWlkPVgoKSwhQihlLnNpemVzKSl7dmFyIG49cnQoZS5zaXplcyk7QihuKXx8KHQuc2l6ZXM9bix0LnByaW1hcnlfc2l6ZT1uWzBdKX1pZighQihlLnByaXZhdGVTaXplcykpe3ZhciBhPXJ0KGUucHJpdmF0ZVNpemVzKTtCKGEpfHwodC5wcml2YXRlX3NpemVzPWEpfWlmKGUuc3VwcGx5VHlwZSYmTyhlLnN1cHBseVR5cGUpJiYodC5zdXBwbHlfdHlwZT1lLnN1cHBseVR5cGUpLGUucHViQ2xpY2smJk8oZS5wdWJDbGljaykmJih0LnB1YmNsaWNrPXt1cmw6ZS5wdWJDbGlja30pLGUucHViQ2xpY2tFbmMmJk8oZS5wdWJDbGlja0VuYykmJih0LnB1YmNsaWNrZW5jPXt1cmw6ZS5wdWJDbGlja0VuY30pLGUucmVzZXJ2ZSYmKFAoZS5yZXNlcnZlKXx8TShlLnJlc2VydmUpKSYmKHQucmVzZXJ2ZT1lLnJlc2VydmUpLGUuZXh0SW52Q29kZSYmTyhlLmV4dEludkNvZGUpJiYodC5leHRfaW52X2NvZGU9ZS5leHRJbnZDb2RlKSx0LnV1aWQ9ZS51dWlkLGUudGFnSWQmJih0LmlkPWUudGFnSWQpLGUuZm9ybWF0cyYmKHQuZm9ybWF0cz1lLmZvcm1hdHMpLGUucG9zaXRpb24mJihcImFib3ZlXCI9PT1lLnBvc2l0aW9uP3QucG9zaXRpb249MTpcImJlbG93XCI9PT1lLnBvc2l0aW9uP3QucG9zaXRpb249Mjp0LnBvc2l0aW9uPTApLGUuaW52Q29kZSYmKHQuY29kZT1lLmludkNvZGUpLGUucHJlYmlkJiYodC5wcmViaWQ9ZS5wcmViaWQpLGUuZXh0ZXJuYWxJbXBJZCYmKHQuZXh0ZXJuYWxfaW1wX2lkPWUuZXh0ZXJuYWxJbXBJZCksITA9PT1lLmFsbG93U21hbGxlclNpemVzP3QuYWxsb3dfc21hbGxlcl9zaXplcz0hMDp0LmFsbG93X3NtYWxsZXJfc2l6ZXM9ITEsITA9PT1lLmRpc2FibGVQc2EmJih0LmRpc2FibGVfcHNhPSEwKSxlLmFsbG93ZWRGb3JtYXRzJiYodC5hZF90eXBlcz1lLmFsbG93ZWRGb3JtYXRzKSwhMCE9PWUudXNlUG10UnVsZSYmITEhPT1lLnVzZVBtdFJ1bGV8fCh0LnVzZV9wbXRfcnVsZT1lLnVzZVBtdFJ1bGUpLCFCKGUudmlkZW8pKXt2YXIgcj1lLnZpZGVvLGk9e307ci5pZCYmKGkuaWQ9ci5pZCksQihyLm1pbWVzKXx8KGkubWltZXM9ci5taW1lcyksci5tYXhEdXJhdGlvbiYmKGkubWF4ZHVyYXRpb249ci5tYXhEdXJhdGlvbiksci5taW5EdXJhdGlvbiYmKGkubWluZHVyYXRpb249ci5taW5EdXJhdGlvbiksci5zdGFydERlbGF5JiYoaS5zdGFydGRlbGF5PXIuc3RhcnREZWxheSksci5za2lwcGFibGUmJihpLnNraXBwYWJsZT1yLnNraXBwYWJsZSksci5za2lwT2Zmc2V0JiYoaS5za2lwb2Zmc2V0PXIuc2tpcE9mZnNldCksQihyLnBsYXliYWNrTWV0aG9kKXx8KGkucGxheWJhY2tfbWV0aG9kPXIucGxheWJhY2tNZXRob2QpLEIoci5mcmFtZXdvcmtzKXx8KGkuZnJhbWV3b3Jrcz1yLmZyYW1ld29ya3MpLHQudmlkZW89aX1pZighQihlLm5hdGl2ZSkpe3ZhciBvPWUubmF0aXZlLHM9e307by5yZW5kZXJlcl9pZCYmKHMucmVuZGVyZXJfaWQ9by5yZW5kZXJlcl9pZCksby5wbGFjZW1lbnRfdHlwZSYmKHMucGxhY2VtZW50X3R5cGU9by5wbGFjZW1lbnRfdHlwZSk7dmFyIGQ9e307by5pZCYmKGQuaWQ9by5pZCksby50aXRsZSYmKGQudGl0bGU9by50aXRsZSksby5ib2R5JiYoZC5kZXNjcmlwdGlvbj1vLmJvZHkpLG8uc3BvbnNvcmVkQnkmJihkLnNwb25zb3JlZF9ieT1vLnNwb25zb3JlZEJ5KSxvLmltYWdlJiYoZC5tYWluX2ltYWdlPW8uaW1hZ2UsQihkLm1haW5faW1hZ2Uuc2l6ZXMpJiYoZC5tYWluX2ltYWdlLnNpemVzPVt7fV0pKSxvLmljb24mJihkLmljb249by5pY29uLEIoZC5pY29uLnNpemVzKSYmKGQuaWNvbi5zaXplcz1be31dKSksby5jdGEmJihkLmN0YXRleHQ9by5jdGEpLG8uZGVzYzImJihkLmRlc2MyPW8uZGVzYzIpLG8ucmF0aW5nJiYoZC5yYXRpbmc9by5yYXRpbmcpLG8uZGlzcGxheVVybCYmKGQuZGlzcGxheXVybD1vLmRpc3BsYXlVcmwpLG8ubGlrZXMmJihkLmxpa2VzPW8ubGlrZXMpLG8uZG93bmxvYWRzJiYoZC5kb3dubG9hZHM9by5kb3dubG9hZHMpLG8ucHJpY2UmJihkLnByaWNlPW8ucHJpY2UpLG8uc2FsZVByaWNlJiYoZC5zYWxlcHJpY2U9by5zYWxlUHJpY2UpLG8ucGhvbmUmJihkLnBob25lPW8ucGhvbmUpLG8uYWRkcmVzcyYmKGQuYWRkcmVzcz1vLmFkZHJlc3MpLG8udmlkZW8mJihkLnZpZGVvPXtyZXF1aXJlZDpvLnZpZGVvLnJlcXVpcmVkfHwhMSxtaW5fZHVyYXRpb246by52aWRlby5taW5EdXJhdGlvbnx8MCxtYXhfZHVyYXRpb246by52aWRlby5tYXhEdXJhdGlvbn0pLG8ucHJpdmFjeVN1cHBvcnRlZCYmKGQucHJpdmFjeV9zdXBwb3J0ZWQ9ITApLGQmJihzLmxheW91dHM9W2RdKSx0LmFkX3R5cGVzPXQuYWRfdHlwZXN8fFtdLC0xPT09dC5hZF90eXBlcy5pbmRleE9mKFwibmF0aXZlXCIpJiZ0LmFkX3R5cGVzLnB1c2goXCJuYXRpdmVcIiksdC5uYXRpdmU9c31pZighQihlLmtleXdvcmRzKSl7dmFyIHU9YXQoZS5rZXl3b3Jkcyk7dC5rZXl3b3Jkcz11fWlmKGUuZm9yY2VDcmVhdGl2ZUlkKXt2YXIgYz1OdW1iZXIoZS5mb3JjZUNyZWF0aXZlSWQpO2lzTmFOKGMpP1coXCJGb3JjZSBDcmVhdGl2ZSBtdXN0IGJlIGEgbnVtYmVyXCIpOih0LmZvcmNlX2NyZWF0aXZlX2lkPWMsTChcIkZvcmNlIENyZWF0aXZlIGluIHVzZSBmb3IgdGFyZ2V0SWQ6IFwiK2UudGFyZ2V0SWQpKX1yZXR1cm4gZS5ub2JpZElmVW5zb2xkJiYodC5ub2JpZF9pZl91bnNvbGQ9ITApLGUudHJhZmZpY1NvdXJjZUNvZGUmJih0LnRyYWZmaWNfc291cmNlX2NvZGU9ZS50cmFmZmljU291cmNlQ29kZS50b1N0cmluZygpKSxlLmN1c3RvbVB1YkxvZyYmKE8oZS5jdXN0b21QdWJMb2cpP3QuY3VzdG9tX3B1Yl9sb2c9ZS5jdXN0b21QdWJMb2c6VyhcImN1c3RvbVB1YkxvZyBtdXN0IGJlIGEgc3RyaW5nXCIpKSx0fShlKTtlLnV0Q2FsbGVkPSEwLGUudGFnTnVtYmVyPW8sbysrLGkucHVzaChuKX19KSxmdW5jdGlvbihlLHQsbil7aWYoUShqZXx8WigpLEJlKSl7dmFyIGE9dm9pZCAwLHI9dm9pZCAwLGk9dm9pZCAwLG89dm9pZCAwLHM9dm9pZCAwLGQ9dm9pZCAwO2lmKCFCKFZlKEZlKSkpZm9yKE1lPVZlKEZlKS5zcGxpdChcIixcIiksYT0wO2E8TWUubGVuZ3RoO2ErKyl7cz1NZVthXS5zcGxpdChcIjpcIik7dmFyIHU9TnVtYmVyKHNbMF0pO2lmKGlzTmFOKHUpfHx2b2lkIDA9PT10W3VdKVcoXCJJbnZhbGlkIGFzdF9vdmVycmlkZSB2YWx1ZSBmb3IgaW5kZXggOiBcIit1KTtlbHNle2Q9bnVsbDt2YXIgYz1udWxsO2ZvcihvPTA7bzxuLmxlbmd0aDtvKyspbz09PXUmJihjPW5bb10udXVpZCk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl0W2ldLnV1aWQ9PT1jJiZIZSh0W2ldLHNbMV0sZSl9fWlmKCFCKFZlKFVlKSkpZm9yKE1lPVZlKFVlKS5zcGxpdChcIixcIiksYT0wO2E8TWUubGVuZ3RoO2ErKyl7cz1NZVthXS5zcGxpdChcIjpcIik7dmFyIGw9bnVsbCxmPU9iamVjdC5rZXlzKGUpO2ZvcihpPTA7aTxmLmxlbmd0aDtpKyspc1swXT09PWZbaV0mJihsPWVbZltpXV0udXVpZCk7aWYobClmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl0udXVpZD09PWwmJkhlKHRbcl0sc1sxXSxlKTtlbHNlIFcoXCJJbnZhbGlkIGFzdF9vdmVycmlkZSB2YWx1ZSBmb3IgdGFyZ2V0IGRpdiBpZCA6IFwiK3NbMF0pfWlmKCFCKFZlKExlKSkpZm9yKE1lPVZlKExlKS5zcGxpdChcIixcIiksYT0wO2E8TWUubGVuZ3RoO2ErKyl7cz1NZVthXS5zcGxpdChcIjpcIik7dmFyIHA9ITE7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKykoZD10W3JdKS5pZD09PU51bWJlcihzWzBdKSYmKEhlKGQsc1sxXSxlKSxwPSEwKTtwfHxXKFwiSW52YWxpZCBhc3Rfb3ZlcnJpZGUgdmFsdWUgZm9yIHRhZyBpZCA6IFwiK3NbMF0pfWlmKCFCKFZlKHplKSkpZm9yKE1lPVZlKHplKS5zcGxpdChcIixcIiksYT0wO2E8TWUubGVuZ3RoO2ErKyl7cz1NZVthXS5zcGxpdChcIjpcIik7dmFyIGc9ITE7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKykoZD10W3JdKS5jb2RlPT09c1swXSYmKEhlKGQsc1sxXSxlKSxnPSEwKTtnfHxXKFwiSW52YWxpZCBhc3Rfb3ZlcnJpZGUgdmFsdWUgZm9yIGludkNvZGUgOiBcIitzWzBdKX19fShlLnRhZ3MsaSxuKTt2YXIgcz1HZSgpLGQ9e3JkX3JlZjpzLnJlZmVyZXIscmRfdG9wOnMucmVhY2hlZFRvcCxyZF9pZnM6cy5udW1JZnJhbWVzLHJkX3N0azpzLnN0YWNrLmpvaW4oXCIsXCIpfTtyLnJlZmVycmVyX2RldGVjdGlvbj1kLHIudGFncz1pLHIudXVpZD1YKCksci5tZW1iZXJfaWQ9dCxyLnNkaz17c291cmNlOlwiYXN0XCIsdmVyc2lvbjpcIjAuMzEuMFwifTt2YXIgdT1udWxsO2lmKEIoZS5rZXl3b3Jkcyk/QihlLnRhcmdldGluZ1BhcmFtcyl8fCh1PWF0KGUudGFyZ2V0aW5nUGFyYW1zKSxyLmtleXdvcmRzPXUpOih1PWF0KGUua2V5d29yZHMpLHIua2V5d29yZHM9dSksIUIoZS51c2VyKSYmKHIudXNlcj1mdW5jdGlvbihlKXt2YXIgdD17fTtpZighQihlKSl7ZS5leHRlcm5hbFVpZCYmTyhlLmV4dGVybmFsVWlkKSYmKHQuZXh0ZXJuYWxfdWlkPWUuZXh0ZXJuYWxVaWQpLEIoZS5zZWdtZW50cyl8fCh0LnNlZ21lbnRzPWUuc2VnbWVudHMpO3ZhciBuPXJlKFwidXNlci5hZ2VcIixlLmFnZSxLZSk7dC5hZ2U9bjt2YXIgYT1yZShcInVzZXIuZ2VuZGVyXCIsZS5nZW5kZXIsS2UpO3QuZ2VuZGVyPWE7dmFyIHI9cmUoXCJ1c2VyLmxhbmd1YWdlXCIsZS5sYW5ndWFnZSxZZSk7dC5sYW5ndWFnZT1yO3ZhciBpPXJlKFwidXNlci5kbnRcIixlLmRudCwkZSk7dC5kbnQ9aX1yZXR1cm4gdH0oZS51c2VyKSwhQihlLnVzZXIudXNlcklkcykpKXt2YXIgYz1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gTShlKT9HKGUsZnVuY3Rpb24oZSl7aWYoQyhlKSYmTyhlLnR5cGUpJiZPKGUuaWQpKWlmKFwiY3JpdGVvXCI9PT1lLnR5cGUpe3ZhciBuPXtzb3VyY2U6XCJjcml0ZW8uY29tXCIsaWQ6ZS5pZH07dC5wdXNoKG4pfWVsc2UgaWYoXCJ0dGRcIj09PWUudHlwZSl7dmFyIGE9e3NvdXJjZTpcImFkc2VydmVyLm9yZ1wiLGlkOmUuaWQscnRpX3BhcnRuZXI6XCJURElEXCJ9O3QucHVzaChhKX1lbHNlIHQucHVzaChlKTtlbHNlIHooXCJJbnZhbGlkIHVzZXJJZCBvYmplY3RcIixlKX0pOnooXCJJbnZhbGlkIHVzZXJJZHNcIixlKSx0fShlLnVzZXIudXNlcklkcyk7ci5laWRzPWN9QihlLmRldmljZSl8fChyLmRldmljZT1mdW5jdGlvbihlKXt2YXIgdD17fSxuPWUuZGV2aWNlO2lmKCFCKG4pKXtCKG4udXNlcmFnZW50KXx8KHQudXNlcmFnZW50PW4udXNlcmFnZW50KSxCKG4uZ2VvKXx8KHQuZ2VvPW4uZ2VvKSxCKG4uaXApfHwodC5pcD1uLmlwKSxCKG4uZGV2aWNlVHlwZSl8fCh0LmRldmljZXR5cGU9bi5kZXZpY2VUeXBlKSxCKG4ubWFrZSl8fCh0Lm1ha2U9bi5tYWtlKSxCKG4ubW9kZWwpfHwodC5tb2RlbD1uLm1vZGVsKSxCKG4ub3MpfHwodC5vcz1uLm9zKSxCKG4ub3NWZXJzaW9uKXx8KHQub3NfdmVyc2lvbj1uLm9zVmVyc2lvbiksQihuLmNhcnJpZXIpfHwodC5jYXJyaWVyPW4uY2Fycmllcik7dmFyIGE9cmUoXCJkZXZpY2UuY29ubmVjdGlvblR5cGVcIixuLmNvbm5lY3Rpb25UeXBlLEtlKTt0LmNvbm5lY3Rpb250eXBlPWEsQihuLm1jYyl8fCh0Lm1jYz1uLm1jYyksQihuLm1uYyl8fCh0Lm1uYz1uLm1uYyksQihuLmxtdCl8fCh0LmxtdD1uLmxtdCksQihuLmRldmljZUlkKXx8KHQuZGV2aWNlX2lkPW4uZGV2aWNlSWQpO3ZhciByPXJlKFwiZGV2aWNlLmRldlRpbWVcIixuLmRldlRpbWUsS2UpO3QuZGV2dGltZT1yfXJldHVybiB0fShlKSksQihlLmFwcCl8fChyLmFwcD1mdW5jdGlvbihlKXt2YXIgdD17fSxuPWUuYXBwO3JldHVybiBCKG4pfHxCKG4uYXBwaWQpfHwodC5hcHBpZD1uLmFwcGlkKSx0fShlKSksQihlLnNpdGUpfHwoci5zaXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49ZS5zaXRlO3JldHVybiBCKG4pfHxCKG4uaWQpfHwodC5pZD1uLmlkKSx0fShlKSksZS5wdWJsaXNoZXJJZCYmKHIucHVibGlzaGVyX2lkPWUucHVibGlzaGVySWQpLGUuYXVjdGlvblRpbWVvdXQmJihyLmF1Y3Rpb25fdGltZW91dF9tcz1lLmF1Y3Rpb25UaW1lb3V0KSxyLnRhZ3M9aTt2YXIgbD1lZShRZSksZj1KZSYmSmUuZ2V0SXRlbShRZSkscD1sfHxhcG50YWcuZG9uZ2xlfHxmO3AmJiFhcG50YWcuZG9uZ2xlJiYoYXBudGFnLmRvbmdsZT1wKSwoKGVlKFplKXx8YXBudGFnLnRvb2xraXQpJiZwfHwhQihlLnRvb2xraXQpKSYmKHIudG9vbGtpdD17ZW5hYmxlZDohMCxkb25nbGU6cHx8ZS50b29sa2l0LmRvbmdsZX0pO3ZhciBnPWVlKHR0KTtnJiZcIlwiIT09ZyYmKGFwbnRhZy5kZWJ1Z19tZW1iZXI9Zyk7dmFyIG09ZWUobnQpO20mJlwiXCIhPT1tJiYoYXBudGFnLmRlYnVnX2JpZGRlcj1tKTt2YXIgdj1cIlRSVUVcIj09PWVlKGV0KS50b1VwcGVyQ2FzZSgpO2lmKHYmJlwiXCIhPT12JiYoYXBudGFnLnRlc3Q9diksYXBudGFnLnRlc3R8fGFwbnRhZy5kZWJ1ZyYmIUIoYXBudGFnLmRvbmdsZSkpe3ZhciBoPVwiXCI7YXBudGFnLmRlYnVnX21lbWJlciYmKGg9YXBudGFnLmRlYnVnX21lbWJlcik7dmFyIHk9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPXt9O3JldHVybiBhcG50YWcuZGVidWcmJiFCKHQpJiYoYS5lbmFibGVkPSEwLGUmJihhLm1lbWJlcl9pZD1OdW1iZXIoZSkpLHQmJihhLmRvbmdsZT1TdHJpbmcodCkpLG4mJihhLmJpZGRlcl9pZD1OdW1iZXIobikpLGEuZGVidWdfdGltZW91dD0xZTMpLGFwbnRhZy50ZXN0JiYoYS50ZXN0PWFwbnRhZy50ZXN0KSxhfShoLGFwbnRhZy5kb25nbGUsYXBudGFnLmRlYnVnX2JpZGRlcik7ci5kZWJ1Zz15fXJldHVybiByfSxvdD1nLmQuUlRCLHN0PWcucS5CQU5ORVIsZHQ9Zy5xLkNPTlRFTlQsdXQ9XCJodHRwczpcIj09PWllKCkuZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w/XCJodHRwczpcIjpcImh0dHA6XCIsY3Q9ZnVuY3Rpb24oZSx0KXt2YXIgbj12b2lkIDAsYT1mdW5jdGlvbihlKXtyZXR1cm4gZy5tLlVUX0lGUkFNRStlLnRhcmdldElkK1wiX1wiK1goKX0oZSkscj1pZSgpO2lmKChuPW51bGwhPT1yLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpP3IuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk6ci5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpKS5pZD1hLGUuYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8ZS5lbmFibGVTYWZlRnJhbWUpe0woXCJ0YXJnZXRJZDogXCIrZS50YXJnZXRJZCtcIiBpcyB1c2luZyBzYWZlRnJhbWUuIExvYWRpbmcgdGhpcyBhZCBpbnRvIHNhbmRib3hlZCBpZnJhbWVcIik7dmFyIGk9dm9pZCAwO3QucmVuZGVyZXJfdXJsP2k9XCJcXHgzYyEtLSByZW5kZXJlciBsb2FkaW5nIGluIFNGLS1cXHgzZVwiOmUuaXNCYW5uZXJNZWRpYXRpb24/aT1hcG50YWcuZ2V0QWRNYXJrdXAoZS50YXJnZXRJZCxlLnV1aWQpOmUuaXNWaWRlb01lZGlhdGlvbj9pPWUuYWRSZXNwb25zZS5hZFtvdF1bc3RdW2R0XTooaT1tdChlKSxpPVwiXCIrKGk9aS5yZXBsYWNlKFwiLyYvZ1wiLFwiJmFtcDtcIikucmVwbGFjZShcIi88L2dcIixcIiZsdDtcIikucmVwbGFjZShcIi8+L2dcIixcIiZndDtcIikucmVwbGFjZSgnL1wiL2cnLFwiJnF1b3Q7XCIpLnJlcGxhY2UoXCIvJy9nXCIsXCImIzM5O1wiKSkpO3ZhciBvPWUuY3VyV2luZG93O2RlbGV0ZSBlLmN1cldpbmRvdzt2YXIgcz17dGFyZ2V0SWQ6ZS50YXJnZXRJZCxhZDppLGhvc3Q6ci5sb2NhdGlvbi5wcm90b2NvbCtcIi8vXCIrci5sb2NhdGlvbi5ob3N0LGdlb206ZS5nZW9tLGRlYnVnOksoKSxoYXNGb2N1czpkb2N1bWVudC5oYXNGb2N1cygpLGhvc3RTZlN1cHBvcnQ6ZS5zYWZlZnJhbWUsaXNNZWRpYXRlZDplLmlzTWVkaWF0ZWQscmVuZGVyZXJVcmw6dC5yZW5kZXJlcl91cmwsZW5hYmxlTWVkaWF0aW9uRXZlbnRzOmFwbnRhZy5yZXF1ZXN0cy5lbmFibGVNZWRpYXRpb25FdmVudHMsZXhwYW5kQnlDcmVhdGl2ZTokKGUudGFyZ2V0SWQpLGN1cnJlbnRUYWc6ZX07ZS5zYWZlZnJhbWUubWV0YSYmKHMubWV0YT1lLnNhZmVmcmFtZS5tZXRhKSxuLm5hbWU9SlNPTi5zdHJpbmdpZnkocyksZS5jdXJXaW5kb3c9byxlLnNhZmVmcmFtZS5zYW5kYm94JiYobi5zYW5kYm94PVwiYWxsb3ctZm9ybXMgYWxsb3ctbW9kYWxzIGFsbG93LW9yaWVudGF0aW9uLWxvY2sgYWxsb3ctcG9pbnRlci1sb2NrIGFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3ggYWxsb3ctcHJlc2VudGF0aW9uIGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHNcIil9ZWxzZSBuLm5hbWU9YTtyZXR1cm4gbi5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixlLmluaXRpYWxIZWlnaHQpLG4uc2V0QXR0cmlidXRlKFwid2lkdGhcIixlLmluaXRpYWxXaWR0aCksbi50YWJJbmRleD1cIi0xXCIsbi53aWR0aD1lLmluaXRpYWxXaWR0aCtcInB4XCIsbi5oZWlnaHQ9ZS5pbml0aWFsSGVpZ2h0K1wicHhcIixuLmJvcmRlcj1cIjBcIixuLmhzcGFjZT1cIjBcIixuLnZzcGFjZT1cIjBcIixuLm1hcmdpbldpZHRoPVwiMFwiLG4ubWFyZ2luSGVpZ2h0PVwiMFwiLG4uc3R5bGUuYm9yZGVyPVwiMFwiLG4uc2Nyb2xsaW5nPVwibm9cIixuLmZyYW1lQm9yZGVyPVwiMFwiLGUuY3VzdG9tSWZyYW1lUHJvcHMmJkcoZS5jdXN0b21JZnJhbWVQcm9wcyxmdW5jdGlvbihlLHQpe25bdF09ZX0pLG59LGx0PWZ1bmN0aW9uKGUsdCl7aWYodC5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHx0LmVuYWJsZVNhZmVGcmFtZSllLnNyYz11dCtnLmkuU0FGRV9GUkFNRV9VUkw7ZWxzZXt2YXIgbjtuPW10KHQpO3RyeXtlLmNvbnRlbnRXaW5kb3cuY29udGVudHM9bn1jYXRjaCh0KXtlLnNyYz1cImphdmFzY3JpcHQ6ZG9jdW1lbnQud3JpdGUoJzxzY3JpcHQ+ZG9jdW1lbnQuZG9tYWluPVxcXCJcIitkb2N1bWVudC5kb21haW4rXCJcXFwiPFxcL3NjcmlwdD4nKVwiLGUuY29udGVudFdpbmRvdy5jb250ZW50cz1ufXZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYmFzZVwiKSxyPXZvaWQgMDthLmxlbmd0aCYmKHI9YS50YXJnZXQsYVswXS50YXJnZXQ9XCJfc2VsZlwiKSxlLnNyYz0namF2YXNjcmlwdDp3aW5kb3dbXCJjb250ZW50c1wiXTsnLGEubGVuZ3RoJiYoYVswXS50YXJnZXQ9cil9fSxmdD1mdW5jdGlvbihlLHQpe2lmKHQuYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8dC5lbmFibGVTYWZlRnJhbWUpZS5zcmM9dXQrZy5pLlNBRkVfRlJBTUVfVVJMO2Vsc2V7dmFyIG4sYT1mdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7dHJ5e3Q9ZS5jb250ZW50V2luZG93P2UuY29udGVudFdpbmRvdy5kb2N1bWVudDplLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudD9lLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudDplLmNvbnRlbnREb2N1bWVudH1jYXRjaChlKXtXKFwiRXJyb3IgZ2V0dGluZyBpZnJhbWUgZG9jdW1lbnQ6IFwiK2UpfXJldHVybiB0fShlKTtuPW10KHQpLGEub3BlbihcInRleHQvaHRtbFwiLFwicmVwbGFjZVwiKSxhLndyaXRlKG4pLGEuY2xvc2UoKX19LHB0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RyYXRlZ3ksbj1lLmRhdGEsYT1pZSgpLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7YS53aWR0aD0wLGEuaGVpZ2h0PTAsYS5ib3JkZXI9XCIwXCIsYS5oc3BhY2U9XCIwXCIsYS52c3BhY2U9XCIwXCIsYS50YWJJbmRleD1cIi0xXCIsYS5tYXJnaW5XaWR0aD1cIjBcIixhLm1hcmdpbkhlaWdodD1cIjBcIixhLnN0eWxlLmJvcmRlcj1cIjBcIixhLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsYS5zY3JvbGxpbmc9XCJub1wiLGEuZnJhbWVCb3JkZXI9XCIwXCIsXCJXaXRoQ29udGVudFwiPT09dCYmZnVuY3Rpb24oZSx0KXtndChlKSxlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQub3BlbigpLGUuY29udGVudFdpbmRvdy5kb2N1bWVudC53cml0ZSh0KSxlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKX0oYSxuKSxcIldpdGhBdHRyaWJ1dGVzXCI9PT10JiZmdW5jdGlvbihlLHQpe2Uuc3JjPXQuc3JjLGUuaWQ9dC5pZCxndChlKX0oYSxuKX07ZnVuY3Rpb24gZ3QoZSl7dmFyIHQ9aWUoKS5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIik7dC5sZW5ndGgmJnRbMF0uYXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24gbXQoZSl7dmFyIHQ9ZS50YXJnZXRJZCxuPVwiXCI7aWYoZS5pc01lZGlhdGVkKW49ZS5hZC5tZWRpYXRlZENvbnRlbnQsTChcIkludm9raW5nIG1lZGlhdGlvbiBmb3IgZGlzcGxheWluZyBiYW5uZXIgYWQ6IFwiK3QpO2Vsc2UgaWYoZS5hZFJlc3BvbnNlJiYxPT09ZS5hZFJlc3BvbnNlLmFkcy5sZW5ndGgpe249b2UoZS5hZFJlc3BvbnNlLmFkcylbc3RdW2R0XX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm5cIlwiO3JldHVybid3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uKGUpIHtcXG4gICAgICAgIGlmKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LnBhcmVudC5hcG50YWcpIHtcXG4gICAgICAgICAgd2luZG93LnBhcmVudC5hcG50YWcucmVjb3JkRXJyb3JFdmVudChlLFwiJytlKydcIik7XFxuICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgfVxcbiAgICAgIH07J30oZSxuKTtyZXR1cm4nPCFET0NUWVBFIEhUTUwgUFVCTElDIFwiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU5cIiBcImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZFwiPjxodG1sPjxoZWFkPlxcbiAgICA8c2NyaXB0PmluRGFwSUY9dHJ1ZTtcXG4gICAgYXBudGFnX3RhcmdldElkID0gXCInK2UrJ1wiO1xcbiAgICAnK2ErJ1xcbiAgICA8XFwvc2NyaXB0PjwvaGVhZD5cXG4gICAgPGJvZHk+XFxuICAgIDxzY3JpcHQ+XFxuICAgIGRvY3VtZW50LmJvZHkuaWQgPSBcIicrZSsnXCI7XFxuICAgIDxcXC9zY3JpcHQ+XFxuICAgICcrdCtcIlxcbiAgICA8L2JvZHk+PC9odG1sPlwifSh0LG4sZS5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHxlLmVuYWJsZVNhZmVGcmFtZSl9dmFyIHZ0PXt9O2Z1bmN0aW9uIGh0KGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIEcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24obil7ZT09PW4udXVpZCYmKHQ9bil9KSx0fShlLnV1aWQpO2lmKHRoaXMudGFyZ2V0SWQ9bi50YXJnZXRJZCxlLm5vYmlkKXJldHVybiB0aGlzLm5vYmlkPSEwLHRoaXMudGFnSWQ9ZS50YWdfaWQsdGhpcy5hdWN0aW9uSWQ9ZS5hdWN0aW9uX2lkLHRoaXM7ZS5hZHMmJmUuYWRzLmxlbmd0aCx0aGlzLnRhZ0lkPWUudGFnX2lkLHRoaXMuYXVjdGlvbklkPWUuYXVjdGlvbl9pZDt2YXIgYT10fHxlLmFkc1swXSxyPXRoaXM7RyhfdChhKSxmdW5jdGlvbihlLHQpe3JbdF09ZX0pO3ZhciBpPXZvaWQgMCxvPXZvaWQgMCxzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO0IoZS5zaXplcyl8fCh0PXJ0KGUuc2l6ZXMpKTtyZXR1cm4gdH0obik7TShzKSYmc1swXSYmKGk9c1swXS5oZWlnaHQsbz1zWzBdLndpZHRoKTt2YXIgZD1hLmNvbnRlbnRfc291cmNlP2EuY29udGVudF9zb3VyY2U6XCJydGJcIjtpZihhW2RdJiZhW2RdLmJhbm5lcil0aGlzLmJhbm5lcj17d2lkdGg6YVtkXS5iYW5uZXIud2lkdGgsaGVpZ2h0OmFbZF0uYmFubmVyLmhlaWdodCxjb250ZW50OmFbZF0uYmFubmVyLmNvbnRlbnQsdHJhY2tlcnM6YVtkXS50cmFja2Vyc30saT1hW2RdLmJhbm5lci5oZWlnaHQsbz1hW2RdLmJhbm5lci53aWR0aDtlbHNlIGlmKGEucnRiJiZhLnJ0Yi52aWRlbyl7dmFyIHU9YS5ydGIudmlkZW87dGhpcy52aWRlbz17ZHVyYXRpb246dS5kdXJhdGlvbl9tcyxwbGF5YmFja01ldGhvZHM6dS5wbGF5YmFja19tZXRob2RzLGZyYW1ld29ya3M6dS5mcmFtZXdvcmtzLGNvbnRlbnQ6dS5jb250ZW50LHRyYWNrZXJzOmEucnRiLnRyYWNrZXJzfX1lbHNlIGlmKGEucnRiJiZhLnJ0YltnLmsuTkFUSVZFXSl7dmFyIGM9YS5ydGJbZy5rLk5BVElWRV07dGhpc1tnLmsuTkFUSVZFXT1FdChjKSx5dChhLHRoaXMudGFyZ2V0SWQpfXRoaXMuaGVpZ2h0PWksdGhpcy53aWR0aD1vfXZhciB5dD1mdW5jdGlvbihlLHQpe2lmKGUudmlld2FiaWxpdHkmJmUudmlld2FiaWxpdHkuY29uZmlnKXt2YXIgbj1lLnZpZXdhYmlsaXR5LmNvbmZpZztcInN0cmluZ1wiPT10eXBlb2YgdCYmKG49bi5yZXBsYWNlKFwiJW5hdGl2ZV9kb21faWQlXCIsdCksSygpJiZudWxsPT09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkmJnooXCJObyBlbGVtZW50IGZvdW5kIGluIHRoZSBwYWdlIGZvciB0aGUgbmF0aXZlIGNyZWF0aXZlIFwiK3QrXCIsIHNlZSBodHRwczovL3dpa2kuYXBwbmV4dXMuY29tL2Rpc3BsYXkvc2RrL0RlZmluZVRhZyAndGFyZ2V0SWQnXCIpKSxwdCh7c3RyYXRlZ3k6XCJXaXRoQ29udGVudFwiLGRhdGE6bn0pfX0sYnQ9ZnVuY3Rpb24oZSx0KXtpZighZXx8IWUudXVpZClyZXR1cm57fTtpZih2dFtlLnV1aWRdJiYhdClyZXR1cm4gdnRbZS51dWlkXTt0cnl7dmFyIG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGh0KGUsdCl9KGUsdCk7cmV0dXJuIHR8fCh2dFtlLnV1aWRdPW4pLG59Y2F0Y2goZSl7VyhcImFkTWFuYWdlci5nZXRBZE9iajogRXJyb3IgdHJ5aW5nIHRvIGluc3RhbnRpYXRlIG5ldyBhZE9iajogXCIrZS5tZXNzYWdlKX19LHd0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1lLmFkUmVzcG9uc2UmJmUuYWRSZXNwb25zZS5hZHMmJmUuYWRSZXNwb25zZS5hZHMubGVuZ3RoLHI9YSYmZS5hZFJlc3BvbnNlLmFkc1thLTFdLmFkX3R5cGU9PT1nLmIuTkFUSVZFO3JldHVybiBlLmlzTWVkaWF0ZWQmJnImJiFuP2J0KGUuYWRSZXNwb25zZSxlLmFkUmVzcG9uc2UuYWRzW2EtMV0pOmJ0KGUuYWRSZXNwb25zZSxuKX07dmFyIEl0PWZ1bmN0aW9uKGUsdCxuLGEpe3JldHVybntjb2RlOmEsZXJyTWVzc2FnZTplfHxuLm1lc3NhZ2UsZXhjZXB0aW9uOm4sdGFyZ2V0SWQ6dH19O2Z1bmN0aW9uIF90KGUpe3JldHVybnthZFR5cGU6ZS5hZF90eXBlLGJ1eWVyTWVtYmVySWQ6ZS5idXllcl9tZW1iZXJfaWQsc291cmNlOmUuY29udGVudF9zb3VyY2UsY3BtOmUuY3BtLGNyZWF0aXZlSWQ6ZS5jcmVhdGl2ZV9pZCxtZWRpYVN1YnR5cGVJZDplLm1lZGlhX3N1YnR5cGVfaWQsbWVkaWFUeXBlSWQ6ZS5tZWRpYV90eXBlX2lkLGJyYW5kQ2F0ZWdvcnlJZDplLmJyYW5kX2NhdGVnb3J5X2lkLGRlYWxJZDplLmRlYWxfaWR9fWZ1bmN0aW9uIEV0KGUpe3JldHVybnt0eXBlOmUudHlwZSx0aXRsZTplLnRpdGxlLGJvZHk6ZS5kZXNjLGRlc2MyOmUuZGVzYzIsZnVsbFRleHQ6ZS5mdWxsX3RleHQsaWNvbjplLmljb24saW1hZ2U6ZS5tYWluX2ltZyxjdGE6ZS5jdGF0ZXh0LHNwb25zb3JlZEJ5OmUuc3BvbnNvcmVkLGltcHJlc3Npb25UcmFja2VyczplLmltcHJlc3Npb25fdHJhY2tlcnMsY2xpY2tUcmFja2VyczplLmxpbmsmJmUubGluay5jbGlja190cmFja2VycyxjbGlja1VybDplLmxpbmsmJmUubGluay51cmwsY2xpY2tGYWxsYmFja1VybDplLmxpbmsmJmUubGluay5mYWxsYmFja191cmwsamF2YXNjcmlwdFRyYWNrZXJzOmUuamF2YXNjcmlwdF90cmFja2Vycyx2aWRlbzplLnZpZGVvLHByaXZhY3lMaW5rOmUucHJpdmFjeV9saW5rLHJhdGluZzplLnJhdGluZyxkaXNwbGF5VXJsOmUuZGlzcGxheXVybCxsaWtlczplLmxpa2VzLGRvd25sb2FkczplLmRvd25sb2FkcyxwcmljZTplLnByaWNlLHNhbGVQcmljZTplLnNhbGVwcmljZSxwaG9uZTplLnBob25lLGFkZHJlc3M6ZS5hZGRyZXNzLGN1c3RvbVRpdGxlMTplLnRpdGxlMSxjdXN0b21UaXRsZTI6ZS50aXRsZTIsY3VzdG9tVGl0bGUzOmUudGl0bGUzLGN1c3RvbVRpdGxlNDplLnRpdGxlNCxjdXN0b21UaXRsZTU6ZS50aXRsZTUsY3VzdG9tQm9keTE6ZS5ib2R5MSxjdXN0b21Cb2R5MjplLmJvZHkyLGN1c3RvbUJvZHkzOmUuYm9keTMsY3VzdG9tQm9keTQ6ZS5ib2R5NCxjdXN0b21Cb2R5NTplLmJvZHk1LGN1c3RvbUN0YTE6ZS5jdGF0ZXh0MSxjdXN0b21DdGEyOmUuY3RhdGV4dDIsY3VzdG9tQ3RhMzplLmN0YXRleHQzLGN1c3RvbUN0YTQ6ZS5jdGF0ZXh0NCxjdXN0b21DdGE1OmUuY3RhdGV4dDUsY3VzdG9tRGlzcGxheVVybDE6ZS5kaXNwbGF5dXJsMSxjdXN0b21EaXNwbGF5VXJsMjplLmRpc3BsYXl1cmwyLGN1c3RvbURpc3BsYXlVcmwzOmUuZGlzcGxheXVybDMsY3VzdG9tRGlzcGxheVVybDQ6ZS5kaXNwbGF5dXJsNCxjdXN0b21EaXNwbGF5VXJsNTplLmRpc3BsYXl1cmw1LGN1c3RvbVNvY2lhbFVybDE6ZS5zb2NpYWx1cmwxLGN1c3RvbVNvY2lhbFVybDI6ZS5zb2NpYWx1cmwyLGN1c3RvbVNvY2lhbFVybDM6ZS5zb2NpYWx1cmwzLGN1c3RvbVNvY2lhbFVybDQ6ZS5zb2NpYWx1cmw0LGN1c3RvbVNvY2lhbFVybDU6ZS5zb2NpYWx1cmw1LGN1c3RvbUltYWdlMTplLmltYWdlMSxjdXN0b21JbWFnZTI6ZS5pbWFnZTIsY3VzdG9tSW1hZ2UzOmUuaW1hZ2UzLGN1c3RvbUltYWdlNDplLmltYWdlNCxjdXN0b21JbWFnZTU6ZS5pbWFnZTUsY3VzdG9tSWNvbjE6ZS5pY29uMSxjdXN0b21JY29uMjplLmljb24yLGN1c3RvbUljb24zOmUuaWNvbjMsY3VzdG9tSWNvbjQ6ZS5pY29uNCxjdXN0b21JY29uNTplLmljb241LGN1c3RvbVNvY2lhbEljb24xOmUuc29jaWFsaWNvbjEsY3VzdG9tU29jaWFsSWNvbjI6ZS5zb2NpYWxpY29uMixjdXN0b21Tb2NpYWxJY29uMzplLnNvY2lhbGljb24zLGN1c3RvbVNvY2lhbEljb240OmUuc29jaWFsaWNvbjQsY3VzdG9tU29jaWFsSWNvbjU6ZS5zb2NpYWxpY29uNX19dmFyIFR0PWZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAwLHQ9e307cmV0dXJue2dldEluc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIGV8fChlPXthZGQ6ZnVuY3Rpb24oZSxuKXt0W2VdPW59LGdldElmcmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gdGUodCxlKT90W2VdOm51bGx9LGdldElmcmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdH0scmVzZXRJbnN0YW5jZTpmdW5jdGlvbigpe3Q9e319fSksZX19fSgpLGt0PXdpbmRvdy5kb2N1bWVudCx4dD1cImNvbXBhdE1vZGVcIixTdD1cImRvY3VtZW50RWxlbWVudFwiLEF0PVwibm9kZVR5cGVcIixSdD1cImhpZGRlblwiLE50PVwiYXV0b1wiLER0PVwiY29udGFpbnNcIixDdD0xMCxxdD1cInNjcm9sbFwiLE90PVwiZ2V0QXR0cmlidXRlXCIsTXQ9XCJzZXRBdHRyaWJ1dGVcIixQdD1cInJlbW92ZUF0dHJpYnV0ZVwiLEJ0PVwiY2xpcFwiLFV0PXdpbmRvdy5OdW1iZXIsRnQ9VXQmJlV0Lk1BWF9WQUxVRSxMdD0tMSpGdCx6dD1cImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXCIsV3Q9XCJvYmplY3RcIixqdD1cInN0cmluZ1wiLFZ0PVwibnVtYmVyXCIsSHQ9XCJ0b0xvd2VyQ2FzZVwiLFh0PVwidG9GaXhlZFwiLEp0PVwiZWxlbWVudEZyb21Qb2ludFwiLEd0PVwibGVuZ3RoXCIsWXQ9XCJvdmVyZmxvd1wiLEt0PVwiZG9jdW1lbnRcIiwkdD1cIm9uc2Nyb2xsXCIsUXQ9d2luZG93LlN0cmluZyxadD13aW5kb3cuTWF0aCxlbj1NYXRoLm1heCx0bj1NYXRoLm1pbixubj1NYXRoLnJvdW5kLGFuPXdpbmRvdyxybj13aW5kb3cubmF2aWdhdG9yLG9uPXJuLnVzZXJBZ2VudHx8XCJcIixzbj0hKCF3aW5kb3cuQWN0aXZlWE9iamVjdCYmXCJBY3RpdmVYT2JqZWN0XCJpbiB3aW5kb3cpJiZhbiYmXCJBY3RpdmVYT2JqZWN0XCJpbiBhbixkbj1udWxsLHVuPSEwLGNuPSExLGxuPWZ1bmN0aW9uKCl7dmFyIGUsdD17fTt0LmllPXQub3BlcmE9dC5nZWNrbz10LndlYmtpdD10LnNhZmFyaT10LmNocm9tZT10LmFpcj10Lmlwb2Q9dC5pcGFkPXQuaXBob25lPXQuYW5kcm9pZD10LndlYm9zPXQuc2lsaz10Lm5vZGVqcz10LnBoYW50b21qcz0wLHQubW9iaWxlPXQuaW9zPXQuY2FqYT1ybiYmcm4uY2FqYVZlcnNpb247dmFyIG49b247biYmKEZuKC9LSFRNTC8sbikmJih0LndlYmtpdD0xKSxGbigvSUVNb2JpbGV8WEJMV1A3LyxuKSYmKHQubW9iaWxlPVwid2luZG93c1wiKSxGbigvRmVubmVjLyxuKSYmKHQubW9iaWxlPVwiZ2Vja29cIiksKGU9VW4obiwvQXBwbGVXZWJLaXRcXC8oW15cXHNdKikvLDEpKSYmKHQud2Via2l0PUJuKGUpLHQuc2FmYXJpPXQud2Via2l0LEZuKC9QaGFudG9tSlMvLG4pJiYoZT1VbihuLC9QaGFudG9tSlNcXC8oW15cXHNdKikvLDEpKSYmKHQucGhhbnRvbWpzPUJuKGUpKSxGbigvIE1vYmlsZVxcLy8sbil8fEZuKC9pUGFkfGlQb2R8aVBob25lLyxuKT8odC5tb2JpbGU9XCJBcHBsZVwiLGU9KGU9VW4obiwvT1MgKFteXFxzXSopLywxKSkmJkJuKGUucmVwbGFjZShcIl9cIixcIi5cIikpLHQuaW9zPWUsdC5pcGFkPXQuaXBvZD10LmlwaG9uZT0wLChlPVVuKG4sL2lQYWR8aVBvZHxpUGhvbmUvLDApKSYmKHRbZVtIdF0oKV09dC5pb3MpKTooKGU9VW4obiwvTm9raWFOW15cXC9dKnxBbmRyb2lkIFxcZFxcLlxcZHx3ZWJPU1xcL1xcZFxcLlxcZC8sMCkpJiYodC5tb2JpbGU9ZSksRm4oL3dlYk9TLyxuKSYmKHQubW9iaWxlPVwiV2ViT1NcIiwoZT1VbihuLC93ZWJPU1xcLyhbXlxcc10qKTsvLDEpKSYmKHQud2Vib3M9Qm4oZSkpKSxGbigvIEFuZHJvaWQvLG4pJiYodC5tb2JpbGU9XCJBbmRyb2lkXCIsKGU9VW4obiwvQW5kcm9pZCAoW15cXHNdKik7LywxKSkmJih0LmFuZHJvaWQ9Qm4oZSkpKSxGbigvU2lsay8sbikmJihlPVVuKG4sL1NpbGtcXC8oW15cXHNdKilcXCkvLDEpKSYmKHQuc2lsaz1CbihlKSkpLChlPW4ubWF0Y2goLyhDaHJvbWV8Q3JNbylcXC8oW15cXHNdKikvKSkmJmVbMV0mJmVbMl0/KHQuY2hyb21lPUJuKGVbMl0pLHQuc2FmYXJpPTAsXCJDck1vXCI9PT1lWzFdJiYodC5tb2JpbGU9XCJjaHJvbWVcIikpOihlPVVuKG4sL0Fkb2JlQUlSXFwvKFteXFxzXSopLykpJiYodC5haXI9ZVswXSkpLHQud2Via2l0fHwoKGU9VW4obiwvT3BlcmFbXFxzXFwvXShbXlxcc10qKS8sMSkpPyh0Lm9wZXJhPUJuKGUpLChlPVVuKG4sL09wZXJhIE1pbmlbXjtdKi8sMCkpJiYodC5tb2JpbGU9ZSkpOihlPVVuKG4sL01TSUVcXHMoW147XSopLywxKSk/dC5pZT1CbihlKTooZT1VbihuLC9HZWNrb1xcLyhbXlxcc10qKS8pKSYmKHQuZ2Vja289MSwoZT1VbihuLC9ydjooW15cXHNcXCldKikvLDEpKSYmKHQuZ2Vja289Qm4oZSkpKSkpO3JldHVybiB0fSgpLGZuPWxuLmllfHwwLHBuPWxuLndlYmtpdHx8MCxnbj1sbi5nZWNrb3x8MCxtbj1sbi5vcGVyYXx8MCx2bj0wLGhuPXt9LHluPXF0K1wiV2lkdGhcIixibj1xdCtcIkhlaWdodFwiLHduPXF0K1wiVG9wXCIsSW49cXQrXCJMZWZ0XCIsX249XCJvZmZzZXRQYXJlbnRcIixFbj1cIm9mZnNldFRvcFwiLFRuPVwib2Zmc2V0TGVmdFwiLGtuPVwib2Zmc2V0V2lkdGhcIix4bj1cIm9mZnNldEhlaWdodFwiLFNuPVwiY2xpZW50V2lkdGhcIixBbj1cImNsaWVudEhlaWdodFwiLFJuPVwiaW5uZXJXaWR0aFwiLE5uPVwiaW5uZXJIZWlnaHRcIixEbj1cInBhcmVudE5vZGVcIjtmdW5jdGlvbiBDbihlKXt2YXIgdCxuLGEscixpLG8scyxkLHUsYz17dDowLGw6MCxyOjAsYjowLHc6MCxoOjAsejowfSxsPVwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIsZj0wLHA9MCxnPTAsbT0wLHY9Y24saD1WbihlKXx8YW5bS3RdLHk9aFt4dF0sYj1oLmRvY3VtZW50TW9kZXx8MDtpZihxbihlKSl0cnl7aWYoaT16bihlKSx0PUhuKGUpLG49JG4oZSksYy5sPWVbVG5dfHwwLGMudD1lW0VuXXx8MCxhPWUscj1kbix2PWdufHxwbj41MTksIShlPT09dCkmJmVbbF0pc24mJighYnx8Yj4wJiZiPDh8fFwiQmFja0NvbXBhdFwiPT09eSkmJihzPXQuY2xpZW50TGVmdCxkPXQuY2xpZW50VG9wKSx1PWVbbF0oKSxjLnQ9dS50b3AsYy5sPXUubGVmdCwoc3x8ZCkmJihjLmwtPXMsYy50LT1kKSwobi55fHxuLngpJiYoIWxuLmlvc3x8bG4uaW9zPj00LjIpJiYoYy5sKz1uLngsYy50Kz1uLnkpO2Vsc2V7Zm9yKDsoYT1hW19uXSkmJnFuKGEpJiZyIT09YTspcz1hW1RuXSxkPWFbRW5dLGMudCs9ZCxjLmwrPXMsdiYmKGM9V24oYSxjKSkscj1hO2lmKFwiZml4ZWRcIiE9aS5wb3NpdGlvbil7Zm9yKGE9ZSxyPWRuOyhhPWFbRG5dKSYmcW4oYSkmJnIhPT1hJiZhIT10OylmPWFbd25dLHA9YVtJbl0sZ24mJlwidmlzaWJsZVwiIT0obz16bihhKSlbWXRdJiYoYz1XbihhLGMsbykpLChmfHxwKSYmKGMubC09cCxjLnQtPWYpLHI9YTtjLmwrPW4ueCxjLnQrPW4ueX1lbHNlIGMubCs9bi54LGMudCs9bi55fWU9PXQ/KG09ZVtBbl0sZz1lW1NuXSk6KG09ZVt4bl0sZz1lW2tuXSksYy5iPWMudCttLGMucj1jLmwrZyxjLnc9ZW4oZywwKSxjLmg9ZW4obSwwKSxjLno9aS56SW5kZXh9Y2F0Y2goZSl7Yz17dDowLGw6MCxyOjAsYjowLHc6MCxoOjAsejowfX1yZXR1cm4gY31mdW5jdGlvbiBxbihlKXtyZXR1cm4gMT09PU9uKGUpfWZ1bmN0aW9uIE9uKGUpe3JldHVybiBKbihlJiZlLm5vZGVUeXBlLC0xKX1mdW5jdGlvbiBNbihlKXtyZXR1cm4oZT1QbihlKSkmJi0xPT1lLnNlYXJjaCgvXFxEKy9nKT91bjplJiYtMSE9ZS5zZWFyY2goL3B4L2dpKT91bjp2b2lkIDB9ZnVuY3Rpb24gUG4oZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIHQ9PWp0P2U6dCE9VnR8fGU/dD09V3QmJmUmJmUuam9pbj9lLmpvaW4oXCJcIik6ITE9PT1lP1wiZmFsc2VcIjohMD09PWU/XCJ0cnVlXCI6ZT9RdChlKTpcIlwiOlwiMFwifWZ1bmN0aW9uIEJuKGUpe3ZhciB0PTA7cmV0dXJuIHBhcnNlRmxvYXQoZS5yZXBsYWNlKC9cXC4vZyxmdW5jdGlvbigpe3JldHVybiAxPT10Kys/XCJcIjpcIi5cIn0pKX1mdW5jdGlvbiBVbihlLHQsbil7dmFyIGE9ZSYmZS5tYXRjaCh0KTtyZXR1cm4gbj09ZG4/YTphJiZhW25dfHxkbn1mdW5jdGlvbiBGbihlLHQpe3JldHVybiBlLnRlc3QodCl9ZnVuY3Rpb24gTG4oZSl7dmFyIHQsbj1kbjt0cnl7ZSYmKChuPWUucGFyZW50V2luZG93fHxlLmRlZmF1bHRWaWV3fHxkbil8fChuPSh0PVZuKGUpKSYmKHQucGFyZW50V2luZG93fHx0LmRlZmF1bHRWaWV3KXx8ZG4pKX1jYXRjaChlKXtuPWRufXJldHVybiBufWZ1bmN0aW9uIHpuKGUpe3ZhciB0O2lmKExuKGUpLmdldENvbXB1dGVkU3R5bGUpdHJ5e3Q9TG4oZSkuZ2V0Q29tcHV0ZWRTdHlsZShlLGRuKX1jYXRjaChlKXt0PWRufWVsc2UgdHJ5e3Q9ZS5jdXJyZW50U3R5bGV9Y2F0Y2goZSl7dD1kbn1yZXR1cm4gdH1mdW5jdGlvbiBXbihlLHQsbil7dmFyIGE9MCxyPTA7cmV0dXJuKG49bnx8em4oZSkpJiYoYT1uLmJvcmRlclRvcFdpZHRoLHI9bi5ib3JkZXJMZWZ0V2lkdGgsYT1NbihhKT9KbihhLDApOjAscj1NbihyKT9KbihyLDApOjAsZ24mJi9edCg/OmFibGV8ZHxofHJ8aGVhZHxmb290KSQvaS50ZXN0KFluKGUpKSYmKGE9cj0wKSksKHQ9dHx8e3Q6MCxsOjB9KS50Kz1hLHQubCs9cix0fWZ1bmN0aW9uIGpuKGUpe3JldHVybiBlJiYoZS5wYXJlbnROb2RlfHxlLnBhcmVudEVsZW1lbnQpfWZ1bmN0aW9uIFZuKGUpe3ZhciB0PWRuO3RyeXtlJiYodD05PT1PbihlKT9lOmVbS3RdfHxlLm93bmVyRG9jdW1lbnR8fGRuKX1jYXRjaChlKXt0PWRufXJldHVybiB0fWZ1bmN0aW9uIEhuKGUpe3ZhciB0PWUmJlZuKGUpfHxrdCxuPXRbeHRdLGE9dFtTdF07cmV0dXJuIG4mJiFtbiYmXCJDU1MxQ29tcGF0XCIhPW4mJihhPXQuYm9keSksYX1mdW5jdGlvbiBYbihlKXt2YXIgdCxuLGEscixpPVstMSwtMSwtMSwtMV0sbz1bQnQrXCJUb3BcIixCdCtcIlJpZ2h0XCIsQnQrXCJCb3R0b21cIixCdCtcIkxlZnRcIl0scz0wO2lmKCFlKXJldHVybiBpO2lmKGZuKWZvcig7bj1vW3NdOylNbih0PWVbbl0pJiYodD1Kbih0LC0xKSk+PTAmJihpW3NdPXQpLHMrKztlbHNlIGlmKCh0PWVbQnRdKSYmLTEhPXQuc2VhcmNoKC9cXGQrL2cpKWZvcihyPShpPShpPSh0PXQucmVwbGFjZSgvXFx3K1xcKChbXlxcKV0qPylcXCkvZyxcIiQxXCIpKS5zcGxpdChcIiBcIikpW0d0XTw9MT9pLnNwbGl0KFwiLFwiKTppKVtHdF0scz0wO3ItLTspTW4oYT1pW3NdKT9pW3NdPUpuKGEsLTEpOmlbc109LTEscysrO3JldHVybiBpfWZ1bmN0aW9uIEpuKGUsdCxuLGEpe2lmKHR5cGVvZiBlIT1WdCl0cnl7ZT1lP3BhcnNlRmxvYXQoZSk6VXQuTmFOfWNhdGNoKHQpe2U9VXQuTmFOfXJldHVybiBhPT1kbiYmKGE9RnQpLG49PWRuJiYobj1MdCksKGlzTmFOKGUpfHxlPG58fGU+YSkmJnQhPWRuP3Q6ZX1mdW5jdGlvbiBHbihlLHQpe3ZhciBuPWNuLGE9ZSYmZVtBdF18fC0xLHI9dCYmdFtBdF18fC0xO2lmKDE9PWEmJi0xIT1yKWlmKGVbRHRdKWlmKG1ufHwxPT1yKW49ZVtEdF0odCk7ZWxzZSBmb3IoO3Q7KXtpZihlPT09dCl7bj11bjticmVha310PXQucGFyZW50Tm9kZX1lbHNlIGVbenRdJiYobj1lPT09dHx8ISEoMTYmZVt6dF0odCkpKTtyZXR1cm4gbn1mdW5jdGlvbiBZbihlKXtyZXR1cm4gZSYmMT09ZVtBdF0mJmUudGFnTmFtZVtIdF0oKXx8XCJcIn1mdW5jdGlvbiBLbihlLHQsbil7dHJ5e2FyZ3VtZW50c1tHdF0+Mj9uPT09ZG4/ZVtQdF0odCk6KG49UG4obiksXCJjbGFzc1wiPT10W0h0XSgpP2UuY2xhc3NOYW1lPW46ZVtNdF0odCxuKSk6bj1QbihlW090XSh0KSl9Y2F0Y2goZSl7bj1cIlwifXJldHVybiBufWZ1bmN0aW9uICRuKGUpe3ZhciB0LG4sYSxyLGk9e3g6MCx5OjAsdzowLGg6MH0sbz17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowLHNjcm9sbFdpZHRoOjAsc2Nyb2xsSGVpZ2h0OjB9LHM9MCxkPTA7cmV0dXJuIG49KHQ9Vm4oZSl8fGt0KVtTdF18fG8scj10LmJvZHl8fG8sKGE9dC5kZWZhdWx0VmlldykmJihzPUpuKGEucGFnZVhPZmZzZXQsMCksZD1KbihhLnBhZ2VZT2Zmc2V0LDApKSxpLng9ZW4obi5zY3JvbGxMZWZ0LHIuc2Nyb2xsTGVmdCxzKSxpLnk9ZW4obi5zY3JvbGxUb3Asci5zY3JvbGxUb3AsZCksaS53PWVuKG4uc2Nyb2xsV2lkdGgsci5zY3JvbGxXaWR0aCwwKSxpLmg9ZW4obi5zY3JvbGxIZWlnaHQsci5zY3JvbGxIZWlnaHQsMCksaX1mdW5jdGlvbiBRbihlLHQsbil7dmFyIGEscixpLG8scyxkLHUsYyxsLGYscCxnLG0sdixoLHksYix3LEksXyxFLFQsayx4LFMsQSxSLE4sRCxDLHEsTyxNLFAsQixVPWUmJmpuKGUpLEY9SG4oZSksTD1DbihlKSx6PUNuKEYpLFc9JG4oRiksaj1mdW5jdGlvbihlKXt2YXIgdD1IbihlKSxuPTAsYT0wO3JldHVybiB0JiYobj10LnNjcm9sbFdpZHRofHwwLGE9dC5zY3JvbGxIZWlnaHR8fDApLHt0OjAsbDowLGI6YSxyOm4sdzpuLGg6YX19KGUpLFY9e3Q6MCxsOjAscjowLGI6MCx3OjAsaDowfSxIPXt0OjAsbDowLHI6MCxiOjAseHM6MCx5czowLHhpdjowLHlpdjowLGl2OjAsdzowLGg6MH0sWD1bXSxKPWNuLEc9e2xlZnQ6ZG4scmlnaHQ6ZG4sdG9wOmRuLGJvdHRvbTpkbn07aWYodD10JiZcIm9iamVjdFwiPT10eXBlb2YgdD90Ont9LFUpZm9yKGE9ei50LHI9ei5sLGk9ei5yLG89ei5iOyh1PXpuKFUpKSYmKFwiYmxvY2tcIiE9dS5kaXNwbGF5JiZcImFic29sdXRlXCIhPXUucG9zaXRpb24mJlwibm9uZVwiPT11LmZsb2F0JiZcIm5vbmVcIj09dS5jbGVhcnx8KEo9VT09RixmPShQPUNuKFUpKS50LHA9UC5sLGc9UC5yLG09UC5iLF89dVtZdCtcIlhcIl0sRT11W1l0K1wiWVwiXSxUPXVbWXRdLGs9Sj9bLTEsLTEsLTEsLTFdOlhuKHUpLEI9Y24sSj8odj1XLncsYj1XLmgpOih2PVVbeW5dLGI9VVtibl0pLGg9VVtrbl0sdz1VW3huXSx5PVVbU25dLEk9VVtBbl0sIWQmJmg+eSYmKGQ9aC15KSwhcyYmdz5JJiYocz13LUkpLEo/KHY+eSYmKChwPTApPnImJihyPXApLChnPShhbltSbl18fGgpK1cueCk8aSYmKGk9ZykpLGI+SSYmKChmPTApPmEmJihhPWYpLChtPShhbltObl18fHcpK1cueSk8byYmKG89bSkpKTooZCYmZy1wPT1oJiYoZy09ZCkscyYmbS1mPT13JiYobS09cyksXyE9UnQmJl8hPXF0JiZfIT1OdCYmVCE9UnQmJlQhPXF0JiZUIT1OdHx8KHA+ciYmKHI9cCxHLmxlZnQ9VSksZzxpJiYoaT1nLEcucmlnaHQ9VSksXz09cXR8fFQ9PXF0PyhYLnB1c2goVSksQj11bik6KF89PU50fHxUPT1OdCkmJnY+eSYmKFgucHVzaChVKSxCPXVuKSksa1szXT4wJiYoTj1wK2tbM10pPnImJihyPU4sRy5sZWZ0PVUpLGtbMV0+MCYmKEQ9ZytrWzFdKTxpJiYoaT1ELEcucmlnaHQ9VSksRSE9UnQmJkUhPXF0JiZFIT1OdCYmVCE9UnQmJlQhPXF0JiZUIT1OdHx8KGY+YSYmKGE9ZixHLnRvcD1VKSxtPG8mJihvPW0sRy5ib3R0b209VSksQnx8KEU9PXF0fHxUPT1xdD8oWC5wdXNoKFUpLEI9dW4pOihFPT1OdHx8VD09TnQpJiZiPkkmJihYLnB1c2goVSksQj11bikpKSxrWzBdPjAmJihBPWYra1swXSk+YSYmKGE9QSxHLnRvcD1VKSxrWzJdPjAmJihSPVAudCtrWzJdKTxvJiYobz1SLEcuYm90dG9tPVUpKSksVSE9RikmJihVPWpuKFUpKSYmWW4oVSk7KTtyZXR1cm4oVj17dDplbihhLDApLGw6ZW4ociwwKSxyOmVuKGksMCksYjplbihvLDApfSkudz1lbihWLnItVi5sLDApLFYuaD1lbihWLmItVi50LDApLHA9TC5sLGc9TC5yLGY9TC50LGM9Zy1wLGw9KG09TC5iKS1mLE49Vi5sLEQ9Vi5yLEE9Vi50LEQtTiwoUj1WLmIpLUEsUz0oUz0oUz10bihtLFIpLWVuKGYsQSkpPDA/MDpTKT5sP2w6Uyx4PSh4PSh4PXRuKGcsRCktZW4ocCxOKSk8MD8wOngpPmM/Yzp4LEgudD1BPGY/Ujw9Zj8wOmVuKGYtQSwwKTowLEguYj1SPm0/bTw9QT8wOmVuKFItbSwwKTowLEgubD1OPHA/RDw9cD8wOlI8PWY/MDptPD1BPzA6ZW4ocC1OLDApOjAsSC5yPUQ+Zz9nPD1OPzA6Ujw9Zj8wOmVuKEQtZywwKTowLEgudz1lbihILnItSC5sLDApLEguaD1lbihILmItSC50LDApLEgueGl2PWM+MD9KbigoeC9jKVtYdF0oMikpOjAsSC55aXY9bD4wP0puKChTL2wpW1h0XSgyKSk6MCxILml2PWM+MHx8bD4wP0puKCh4KlMvKGMqbCkpW1h0XSgyKSk6MCxILmNpdj0wLG4mJkguaXY+LjQ5JiYoQz0oTT1mdW5jdGlvbihlKXt2YXIgdCxuLGEscixpLG8scyxkLHUsYyxsLGYscCxnLG0sdixoPUNuKGUpLHk9Vm4oZSksYj1Ibih5KSx3PWgudCxJPWgubCxfPUN0LEU9W10sVD0wO2lmKEUub249MCx0PWgudyxuPWguaCxpPWE9bm4odC9fKSxvPXI9bm4obi9fKSx0PD0xfHxuPD0xfHxhPDF8fHI8MSlyZXR1cm4gRTtpZihtPSh2PSRuKCkpLnksZz12LngsZj1JK3QscD13K24seSYmYiYmeVtKdF0pe2Zvcig7aTx0Oyl7Zm9yKG89cjtvPG47KWQ9dytvLChzPUkraSk8PWYmJmQ8PXAmJkUucHVzaCh7eDpzLHk6ZCxvbjowfSksbys9cjtpKz1hfWZvcig7dT1FW1QrK107KXM9ZW4odS54LWcsMCkscz10bihzLHUueCksZD1lbih1LnktbSwwKSxkPXRuKGQsdS55KSwwIT1zPzAhPWQ/KGw9eVtKdF0ocyxkKSkmJmwhPT1iJiZsIT09ZSYmIUduKGwsZSkmJigoYz1LbihsLFwiaWRcIikpfHxLbihsLFwiaWRcIixjPVBuKFtcImdlb21faW50ZXJcIixcIl9cIiwobmV3IERhdGUpLmdldFRpbWUoKSxcIl9cIixadC5yb3VuZCgxMDAqWnQucmFuZG9tKCkpLFwiX1wiLHZuKytdKSksdS5vbj1jLEUub24rKyk6KHUub249XCIheS1vZmZzY3JlZW5cIixFLm9uKyspOih1Lm9uPVwiIXgtb2Zmc2NyZWVuXCIsRS5vbisrKX1yZXR1cm4gRX0oZSkpW0d0XSwocT1KbihNLm9uLDApKSYmKE89MS1KbigocS9DKVtYdF0oMiksMCksSC5jaXY9SC5pdj1PKSksdC5yZWN0PUwsdC5jbGlwUmVjdD1WLHQuZG9jUmVjdD1qLFhbR3RdPyh0LmlzUm9vdD1jbix0LmNhblNjcm9sbD11bixILnhzPSEhcyxILnlzPSEhZCk6ei5iPj1WLmJ8fHoucj49Vi5yPyh0LmlzUm9vdD11bixILnhzPSEhKGoudz56LncmJnMpLEgueXM9ISEoai5oPnouaCYmZCksdC5jYW5TY3JvbGw9ai53Pnoud3x8ai5oPnouaCk6SC55cz1ILnhzPXQuaXNSb290PXQuY2FuU2Nyb2xsPWNuLHQuc2Nyb2xsTm9kZXM9WCx0LmNsaXBOb2Rlcz1HLHQuZXhwUmVjdD1ILEh9ZnVuY3Rpb24gWm4oZSx0LG4pe3ZhciBhLHIsaSxvLHMsZCx1LGMsbCxmLHAsZyxtPXt9LHY9e307aWYoUW4odCx2LHVuKSwhbiYmIXYuaXNSb290JiZ2LmNhblNjcm9sbCYmKChyPXYuZXhwUmVjdCkueHN8fHIueXMpKXt0YShlKSxhPVtdLGhuW2VdPWE7Zm9yKHZhciBoPTA7aDx2LnNjcm9sbE5vZGVzLmxlbmd0aDtoKyspe3ZhciB5PXYuc2Nyb2xsTm9kZXNbaF0sYj17fTtiLm5vZGU9eSxiWyR0XT1mdW5jdGlvbih0KXtlYSh0LGUseSl9LFIoeSxxdCxiWyR0XSksYS5wdXNoKGIpfX1yZXR1cm4gbS53aW49KHM9byYmTG4obyl8fGFuLGQ9cy5pbm5lckhlaWdodHx8MCx1PXMuaW5uZXJXaWR0aHx8MCxjPXMuc2NyZWVuWXx8cy5zY3JlZW5Ub3B8fDAsbD1kK2MsZj1zLnNjcmVlblh8fHMuc2NyZWVuTGVmdHx8MCxwPXUrZixnPUhuKG8pLGR8fHV8fCFnfHwoZD1nLmNsaWVudEhlaWdodHx8MCxwPWYrKHU9Zy5jbGllbnRXaWR0aHx8MCksbD1jK2QpLHt0OmMsbDpmLGI6bCxyOnAsdzp1LGg6ZH0pLG0ucGFyPXYuY2xpcFJlY3Qscj12LmV4cFJlY3QsKGk9di5yZWN0KS5pdj1yLml2LGkueGl2PXIueGl2LGkueWl2PXIueWl2LGRlbGV0ZSByLml2LGRlbGV0ZSByLnhpdixkZWxldGUgci55aXYsbS5leHA9cixtLnNlbGY9aSxtfWZ1bmN0aW9uIGVhKGUsdCxuKXt2YXIgYT1oblt0XTtpZihhKWZvcih2YXIgcj0wO3I8YS5sZW5ndGg7cisrKXt2YXIgaT1hW3JdO2lmKGkubm9kZT09PW4pe2kudElEJiYoY2xlYXJUaW1lb3V0KGkudElEKSxkZWxldGUgaS50SUQpLGkudElEPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZT1UdCgpLmdldElmcmFtZSh0KTtlJiZNYShlLmlmcmFtZSx0LFpuKHQsZS5pZnJhbWUsdW4pKX0sU2EpO2JyZWFrfX19ZnVuY3Rpb24gdGEoZSl7dmFyIHQsbj1obltlXTtpZihuKWZvcig7dD1uLnBvcCgpOyl0LnRJRCYmY2xlYXJUaW1lb3V0KHQudElEKSxOKHQubm9kZSxxdCx0WyR0XSksdC5ub2RlPXRbJHRdPWRuLGhuW2VdPWRuO2RlbGV0ZSBobltlXX12YXIgbmE9aWUoKTtmdW5jdGlvbiBhYShlKXtwdCh7c3RyYXRlZ3k6XCJXaXRoQXR0cmlidXRlc1wiLGRhdGE6e2lkOlwiaXR1bmVzLWxhdW5jaC1zdG9yZVwiLHNyYzplLmRldGFpbC51cmx9fSl9dmFyIHJhPVtdLGlhPXt9LG9hPXt9LHNhPVtdLGRhPXt9LHVhPWZlKGZ1bmN0aW9uKCl7UihuYSxcImZvY3VzXCIsRGEpLFIobmEsXCJibHVyXCIsQ2EpLFIobmEsXCJyZXNpemVcIixCYSksUihuYSxcInNjcm9sbFwiLEJhKSxSKG5hLFwidW5sb2FkXCIsZnVuY3Rpb24oKXt0cnl7TihuYSxcImZvY3VzXCIsRGEpLE4obmEsXCJibHVyXCIsQ2EpLE4obmEsXCJyZXNpemVcIixCYSksTihuYSxcInNjcm9sbFwiLEJhKSxVYSgpfWNhdGNoKGUpe319KX0pLGNhPWllKCksbGE9ITEsZmE9e30scGE9dm9pZCAwLGdhPXt9LG1hPWZ1bmN0aW9uKCl7cmV0dXJuIGZhfSx2YT1mdW5jdGlvbigpe3JldHVybiBnYX0saGE9ZnVuY3Rpb24oZSl7ZT8ocGE9UShlLFwiaHR0cFwiKXx8UShlLFwiaHR0cHNcIik/ZTpcImh0dHBzOi8vXCIrZSxMKFwiU2V0dGluZyBlbmRwb2ludCB0bzogXCIrcGEpKTpXKFwiQ2Fubm90IHNldCBhbiBlbXB0eSBlbmRwb2ludFwiKX0seWE9ZnVuY3Rpb24oZSl7bGE9ZX07dmFyIGJhPXZvaWQgMCx3YT12b2lkIDAsSWE9ITAsX2E9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LGE9dm9pZCAwLHI9dm9pZCAwO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9SWE/XCJ0Y1N0cmluZ1wiOlwiY29uc2VudERhdGFcIjtJYSYmZSYmZS5nZHByQXBwbGllcyYmZS5wdXJwb3NlJiZlLnB1cnBvc2UuY29uc2VudHMmJiExPT09ZS5wdXJwb3NlLmNvbnNlbnRzWzFdJiZ5YSghMCk7dmFyIG49e2NvbnNlbnRfc3RyaW5nOmU/ZVt0XTp2b2lkIDAsY29uc2VudF9yZXF1aXJlZDplP2UuZ2RwckFwcGxpZXM6dm9pZCAwfTt3YS5nZHByX2NvbnNlbnQ9bn1mdW5jdGlvbiBvKGUpe2NsZWFyVGltZW91dChhKSxpKGJhKSxmZShzKGUpKX1mdW5jdGlvbiBzKGUpe2UmJnooZStcIiBSZXN1bWluZyByZXF1ZXN0IHdpdGhvdXQgY29uc2VudCBpbmZvcm1hdGlvbi5cIiksbigpfWlmKCh3YT1lKS5jb25zZW50TWFuYWdlbWVudCYmKHdhLmNvbnNlbnRNYW5hZ2VtZW50LmRpc2FibGVkfHx3YS5jb25zZW50TWFuYWdlbWVudC50Y2YmJndhLmNvbnNlbnRNYW5hZ2VtZW50LnRjZi5kaXNhYmxlZCkpcmV0dXJuIGZlKHMoKSk7dmFyIGQ9MWU0O2lmKHdhLmNvbnNlbnRNYW5hZ2VtZW50JiZQKHdhLmNvbnNlbnRNYW5hZ2VtZW50LnRpbWVvdXQpJiYoZD13YS5jb25zZW50TWFuYWdlbWVudC50aW1lb3V0KSxiYSlyZXR1cm4gaShiYSksZmUocygpKTthPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvKGJhP1wiXCI6XCJDTVAgd29ya2Zsb3cgZXhjZWVkZWQgdGltZW91dCB0aHJlc2hvbGQuXCIpfSxkKSxmdW5jdGlvbihlLHQpe3ZhciBuPXt9O3RyeXsocj13aW5kb3cuX190Y2ZhcGl8fHdpbmRvdy50b3AuX190Y2ZhcGkpfHwocj13aW5kb3cuX19jbXB8fHdpbmRvdy50b3AuX19jbXApJiYoSWE9ITEpfWNhdGNoKGUpe31pZihxKHIpKXIoSWE/XCJhZGRFdmVudExpc3RlbmVyXCI6XCJnZXRDb25zZW50RGF0YVwiLG51bGwsZSk7ZWxzZSBpZih3aW5kb3cuJHNmJiZ3aW5kb3cuJHNmLmV4dCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LiRzZi5leHQuY21wKUlhPSExLG89T2JqZWN0LmtleXMod2EudGFncykscz1ydCh3YS50YWdzW29bMF1dLnNpemVzKSx3aW5kb3cuJHNmLmV4dC5yZWdpc3RlcihzWzBdLndpZHRoLHNbMF0uaGVpZ2h0LGZ1bmN0aW9uKHQsbil7XCJjbXBSZXR1cm5cIj09PXQmJmUobi52ZW5kb3JDb25zZW50RGF0YSl9KSx3aW5kb3cuJHNmLmV4dC5jbXAoXCJnZXRDb25zZW50RGF0YVwiKTtlbHNle2Zvcih2YXIgYT13aW5kb3csaT12b2lkIDA7IWk7KXt0cnl7KGEuZnJhbWVzLl9fdGNmYXBpTG9jYXRvcnx8YS5mcmFtZXMuX19jbXBMb2NhdG9yKSYmKGk9YSksYS5mcmFtZXMuX19jbXBMb2NhdG9yJiYoSWE9ITEpfWNhdGNoKGUpe31pZihhPT09d2luZG93LnRvcClicmVhazthPWEucGFyZW50fWlmKCFpKXJldHVybiB0KFwiQ01QIG5vdCBmb3VuZC5cIik7IWZ1bmN0aW9uKHQpe3ZhciBhPUlhP1wiX190Y2ZhcGlcIjpcIl9fY21wXCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1JYT9cIl9fdGNmYXBpUmV0dXJuXCI6XCJfX2NtcFJldHVyblwiLGE9XCJzdHJpbmdcIj09dHlwZW9mIGUuZGF0YSYmZS5kYXRhLmluY2x1ZGVzKHQpP0pTT04ucGFyc2UoZS5kYXRhKTplLmRhdGE7aWYoYVt0XSl7dmFyIHI9YVt0XTtuW3IuY2FsbElkXShyLnJldHVyblZhbHVlLHIuc3VjY2VzcyksSWF8fGRlbGV0ZSBuW3IuY2FsbElkXX19ZnVuY3Rpb24gaSh0LG4pe0lhfHxOKHdpbmRvdyxcIm1lc3NhZ2VcIixyLCExKSxlKHQsbil9d2luZG93W2FdPWZ1bmN0aW9uKGUscixpKXt2YXIgbyxzLGQsdT1cIlwiK01hdGgucmFuZG9tKCksYz0oZD17Y29tbWFuZDplLHBhcmFtZXRlcjpyLGNhbGxJZDp1fSwocz1hK1wiQ2FsbFwiKWluKG89e30pP09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLHMse3ZhbHVlOmQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpvW3NdPWQsbyk7blt1XT1pLHQucG9zdE1lc3NhZ2UoYyxcIipcIil9LFIod2luZG93LFwibWVzc2FnZVwiLHIsITEpLElhP3dpbmRvdy5fX3RjZmFwaShcImFkZEV2ZW50TGlzdGVuZXJcIixudWxsLGkpOndpbmRvdy5fX2NtcChcImdldENvbnNlbnREYXRhXCIsbnVsbCxpKX0oaSl9dmFyIG8sc30oZnVuY3Rpb24gZSh0LG4pe0lhP2Z1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3ImJnIoXCJyZW1vdmVFdmVudExpc3RlbmVyXCIsMixmdW5jdGlvbigpe30sZSl9biYmXCJvYmplY3RcIj09dHlwZW9mIHQmJlwic3RyaW5nXCI9PXR5cGVvZiB0LnRjU3RyaW5nP1widXNlcmFjdGlvbmNvbXBsZXRlXCI9PT10LmV2ZW50U3RhdHVzfHxcInRjbG9hZGVkXCI9PT10LmV2ZW50U3RhdHVzPyhkKCksY2xlYXJUaW1lb3V0KGEpLGkoYmE9dCksZmUocygpKSk6XCJjbXB1aXNob3duXCI9PT10LmV2ZW50U3RhdHVzJiYoYmE9dCx0LnRjU3RyaW5nJiZ0LnB1cnBvc2VPbmVUcmVhdG1lbnQmJihkKCksY2xlYXJUaW1lb3V0KGEpLGkoYmEpLGZlKHMoKSkpKTpvKFwiQ01QIHJldHVybmVkIHVuZXhwZWN0ZWQgY29uc2VudE9iamVjdCBkdXJpbmcgbG9va3VwIHByb2Nlc3M7IHJldHVybmVkIHZhbHVlIHdhcyAoXCIrdCtcIilcIil9KCk6XCJvYmplY3RcIiE9dHlwZW9mIHR8fFwic3RyaW5nXCIhPXR5cGVvZiB0LmNvbnNlbnREYXRhfHxcIlwiPT09dC5jb25zZW50RGF0YT9vKFwiQ01QIHJldHVybmVkIHVuZXhwZWN0ZWQgY29uc2VudE9iamVjdCBkdXJpbmcgbG9va3VwIHByb2Nlc3M7IHJldHVybmVkIHZhbHVlIHdhcyAoXCIrdCtcIilcIik6KGNsZWFyVGltZW91dChhKSxpKGJhPXQpLGZlKHMoKSkpfSxvKX0sRWE9Zy5wLk5VTSxUYT0wLGthPTAseGE9MCxTYT01MDAsQWE9MixSYT1mdW5jdGlvbihlKXtMKFwiRXhwYW5kIGlmcmFtZSBzdGFydGVkIGJ5IGhvc3RcIik7dmFyIHQ9ITEsbj0hMSxhPTAscj0wLGk9MCxvPTAscz12b2lkIDAsZD12b2lkIDAsdT1pZSgpLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcubS5VVF9ESVYrZS50YXJnZXRJZCksYz1UdC5nZXRJbnN0YW5jZSgpLmdldElmcmFtZShlLnRhcmdldElkKSxsPWMuaWZyYW1lLnN0eWxlLGY9dS5zdHlsZTtmLmRpc3BsYXk9XCJcIjt2YXIgcD1wYXJzZUludChmLndpZHRoLDEwKSxtPXBhcnNlSW50KGYuaGVpZ2h0LDEwKTtpZihpc05hTihwKSYmKHA9MCksaXNOYU4obSkmJihtPTApLGUuYm91bmRzLm11bHRpRGlyPyhpPXArKGQ9cmUoXCJkYXRhLmJvdW5kcy5sZWZ0XCIsZS5ib3VuZHMubGVmdCxFYSkpK3JlKFwiZGF0YS5ib3VuZHMucmlnaHRcIixlLmJvdW5kcy5yaWdodCxFYSksbz1tKyhzPXJlKFwiZGF0YS5ib3VuZHMudG9wXCIsZS5ib3VuZHMudG9wLEVhKSkrcmUoXCJkYXRhLmJvdW5kcy5ib3R0b21cIixlLmJvdW5kcy5ib3R0b20sRWEpLHM/KHI9LTEqcyxuPSEwKTpyPTAsZD8oYT0tMSpkLHQ9ITApOmE9MCk6KGk9KHQ9KGE9ZS5ib3VuZHMueCk8MCk/cCstMSphOnArYSxvPShuPShyPWUuYm91bmRzLnkpPDApP20rLTEqcjptK3IpLCEoaTw9cCYmbzw9bSkpe2wud2lkdGg9aStcInB4XCIsbC5oZWlnaHQ9bytcInB4XCIsdCYmKGwubGVmdD1hK1wicHhcIiksbiYmKGwudG9wPXIrXCJweFwiKSxsLnpJbmRleD1nLm8uREVGQVVMVF9aSU5ERVgsbC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsZi5wb3NpdGlvbj1cInJlbGF0aXZlXCIsZS5ib3VuZHMucHVzaD8oZi53aWR0aD1pK1wicHhcIixmLmhlaWdodD1vK1wicHhcIik6KGYud2lkdGg9cCtcInB4XCIsZi5oZWlnaHQ9bStcInB4XCIpO3ZhciB2PWZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1uLmlmcmFtZS5jb250ZW50V2luZG93LHI9e307ci50YXJnZXRJZD10LnRhcmdldElkLHIuc3RhdHVzPWUsci5nZW9tPU5hKHQudGFyZ2V0SWQsbi5pZnJhbWUpLHphKGEsSlNPTi5zdHJpbmdpZnkociksY2UoKSl9KGcuby5TVEFUVVMuTk9USUZZX0VYUEFOREVELGUsYyl9O2UuZXh0JiZcIm51bWJlclwiPT10eXBlb2YgZS5leHQudHdlZW5UaW1lP2Z1bmN0aW9uKGUsdCxuLGEpe3ZhciByPXQuc3R5bGU7ci50cmFuc2l0aW9uPVwiaGVpZ2h0IFwiK2UuZXh0LnR3ZWVuVGltZStcIm1zIGVhc2VcIixyLmhlaWdodD1uLHJbXCJvdmVyZmxvdy15XCJdPVwiaGlkZGVuXCIsUih0LFwidHJhbnNpdGlvbmVuZFwiLGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgYSYmYSgpfSl9KGUsdSxvLHYpOnYoKX19O3ZhciBOYT1mdW5jdGlvbihlLHQpe3ZhciBuPVpuKGUsdCk7cmV0dXJuIG4uYW54PWZ1bmN0aW9uKCl7dHJ5e2lmKHZvaWQgMCE9PXdpbmRvdy50b3AubG9jYXRpb24uaHJlZil7dmFyIGU9d2luZG93LHQ9MCxuPTA7ZG97dCs9ZS5wYWdlWU9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxlLmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLG4rPWUucGFnZVhPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGUuZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0LGU9ZS5wYXJlbnR9d2hpbGUoZS5wYXJlbnQhPT13aW5kb3cudG9wKTtyZXR1cm57c2Nyb2xsVG9wOnQsc2Nyb2xsTGVmdDpufX19Y2F0Y2goZSl7fXJldHVybntzY3JvbGxUb3A6MCxzY3JvbGxMZWZ0OjB9fSgpLG59LERhPWZ1bmN0aW9uKCl7cWEoITApfSxDYT1mdW5jdGlvbigpe3FhKCExKX07ZnVuY3Rpb24gcWEoZSl7T2EoKSxrYT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0LG47dD1lLG49VHQuZ2V0SW5zdGFuY2UoKS5nZXRJZnJhbWVzKCksRyhuLGZ1bmN0aW9uKGUsbil7dmFyIGE9YXBudGFnLnJlcXVlc3RzLnRhZ3Nbbl07aWYoYS5hbHdheXNVc2VYRG9tYWluSWZyYW1lfHxhLmVuYWJsZVNhZmVGcmFtZSl7dmFyIHI9ZS5pZnJhbWUuY29udGVudFdpbmRvdyxpPXt9O2kudGFyZ2V0SWQ9bixpLnZhbHVlPXQsaS5zdGF0dXM9Zy5vLlNUQVRVUy5GT0NVU19DSEFOR0UsemEocixKU09OLnN0cmluZ2lmeShpKSxjZSgpKX19KSxPYSgpfSxBYSl9ZnVuY3Rpb24gT2EoKXtrYSYmKGNsZWFyVGltZW91dChrYSksa2E9MCl9dmFyIE1hPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1lLmNvbnRlbnRXaW5kb3cscj17fTtyLnRhcmdldElkPXQsci5nZW9tPW4sci5zdGF0dXM9Zy5vLlNUQVRVUy5HRU9NX1VQREFURSx6YShhLEpTT04uc3RyaW5naWZ5KHIpLGNlKCkpfSxQYT1mdW5jdGlvbihlLHQpe01hKGUsdCxOYSh0LGUpKX07dmFyIEJhPWZ1bmN0aW9uKCl7VGF8fChUYT13aW5kb3cuc2V0VGltZW91dChMYSxTYSkpfSxVYT1mdW5jdGlvbigpe3ZhciBlPVR0LmdldEluc3RhbmNlKCkuZ2V0SWZyYW1lcygpO0coZSxmdW5jdGlvbihlLHQpe3ZhciBuPWFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdOyhuLmFsd2F5c1VzZVhEb21haW5JZnJhbWV8fG4uZW5hYmxlU2FmZUZyYW1lKSYmKGNsZWFySW50ZXJ2YWwoeGEpLHhhPTAsdGEodCkpfSl9LEZhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1UdC5nZXRJbnN0YW5jZSgpLmdldElmcmFtZShuKS5pZnJhbWUuY29udGVudFdpbmRvdzt6YShhLHttZXNzYWdlVHlwZTplLG1lc3NhZ2VQYXlsb2FkOnQsc3RhdHVzOlwibm90aWZ5XCIsdGFyZ2V0SWQ6bn0sY2UoKSl9O2Z1bmN0aW9uIExhKCl7dmFyIGU9VHQuZ2V0SW5zdGFuY2UoKS5nZXRJZnJhbWVzKCk7RyhlLGZ1bmN0aW9uKGUsdCl7dmFyIG49YXBudGFnLnJlcXVlc3RzLnRhZ3NbdF07KG4uYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8bi5lbmFibGVTYWZlRnJhbWUpJiZQYShlLmlmcmFtZSx0KX0pLFRhJiYoY2xlYXJUaW1lb3V0KFRhKSxUYT0wKX12YXIgemE9ZnVuY3Rpb24oZSx0LG4pe1wic3RyaW5nXCIhPXR5cGVvZiB0JiYodD1KU09OLnN0cmluZ2lmeSh0KSksZS5wb3N0TWVzc2FnZSh0LG4pfSxXYT1mdW5jdGlvbigpe3ZhciBlPXt9LHQ9W10sbj1cIlwiO3JldHVybntpbnZva2VOb3RpZnk6ZnVuY3Rpb24obixhLHIpe3QucHVzaChvKG4sYSxyKSksRyhlLGZ1bmN0aW9uKGUpe2UuYWRkTm90aWZ5TWVzc2FnZShvKG4sYSxyKSksZS5zdGF0dXMhPT1IYSYmaShlKX0pfSxsb2FkUmVuZGVyZXI6ZnVuY3Rpb24odCxuKXt2YXIgaT1uLnJlbmRlcmVyX2lkO2lmKHQuZW5hYmxlU2FmZUZyYW1lJiYoIXdpbmRvdy4kc2Z8fCF3aW5kb3cuJHNmLmV4dCkpcmV0dXJuIGk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5yZW5kZXJlcl9pZCtcIl9cIitlLnRhcmdldElkfSh0LG4pLHZvaWQoZVtpXT1kKG4ucmVuZGVyZXJfdXJsLGksdCkpO3ZhciBvPWVbaV07aWYobyl7dmFyIHM9ZVtpXTtvLnN0YXR1cz09PVhhPyhjKHQpLGEocyx0LHIpLHQuZGlzcGxheWVkPSEwKTpvLmFkZFRhZyh0KX1lbHNlIEgod2luZG93LG4ucmVuZGVyZXJfdXJsKSxlW2ldPWQobi5yZW5kZXJlcl91cmwsaSx0KX0sc2V0UmVuZGVyZXJTdGF0dXM6ZnVuY3Rpb24odCxuKXt2YXIgYT1lW3RdO2EmJihhLnN0YXR1cz1uLGkoYSkpfSxyZWdpc3RlclJlbmRlcmVyOmZ1bmN0aW9uKHQsbyxzKXtpZihuPXMsbz1mdW5jdGlvbihlKXtpZihxKGUpKXJldHVybntyZW5kZXJBZDplLG5vdGlmeTpmdW5jdGlvbigpe319O2lmKEMoZSkmJnEoZS5yZW5kZXJBZCkpcmV0dXJue3JlbmRlckFkOmUucmVuZGVyQWQsbm90aWZ5OmUubm90aWZ5fX0obyksdCYmZVt0XSYmQyhvKSl7dmFyIGQ9ZVt0XTtkLnJlbmRlckZuPW8ucmVuZGVyQWQsZC5ub3RpZnlGbj1vLm5vdGlmeSxkLnN0YXR1cz1YYSx3aW5kb3cuY3VycmVudFRhZyYmd2luZG93LmN1cnJlbnRUYWcuZW5hYmxlU2FmZUZyYW1lJiYodT13aW5kb3cuY3VycmVudFRhZyxsPXQsZj1YYSxwPXtuYW1lOlwidXBkYXRlUmVuZGVyU3RhdHVzXCIsdGFyZ2V0SWQ6dS50YXJnZXRJZCxySWQ6bCxzdGF0dXM6Zn0semEod2luZG93LnBhcmVudCxwLG4pKSxpKGQpLEcoZC5nZXRUYWdzKCksZnVuY3Rpb24oZSl7ZS5kaXNwbGF5ZWR8fChjKGUpLGEoZC5yZW5kZXJGbixlLGZ1bmN0aW9uKGUsdCl7cihlLHQsZCl9KSxlLmRpc3BsYXllZD0hMCl9KX1lbHNlIFcoXCJhc3QuanNcIixcInJlZ2lzdGVyUmVuZGVyZXIgbXVzdCBiZSBjYWxsZWQgd2l0aCAoaWQsIGNiRm4pXCIpO3ZhciB1LGwsZixwfSxjbGVhclN0YXRlOmZ1bmN0aW9uKCl7ZT17fSx0PVtdfX07ZnVuY3Rpb24gYShlLHQsbil7cShlKT9lLmNhbGwoYXBudGFnLHQsbik6QyhlKSYmKHEoZS5yZW5kZXJGbik/ZS5yZW5kZXJGbi5jYWxsKGFwbnRhZyx0LG4pOlcoXCJFcnJvciBpbnZva2luZyByZW5kZXJlck9iai5yZW5kZXJBZCgpLiByZW5kZXJBZCBtdXN0IGJlIGEgZnVuY3Rpb25cIikpfWZ1bmN0aW9uIHIoZSx0LGEpe2EmJmEuaXNTYWZlRnJhbWU/ZnVuY3Rpb24oZSx0KXt2YXIgYT17bmFtZTpcImVtaXRFdmVudFwiLGNtZDpbZSx0XX07aWYoemEod2luZG93LnBhcmVudCxhLG4pLGFwbnRhZy5tb2NrU2ZMaXN0bmVyJiZhcG50YWcubW9ja1NmTGlzdG5lci5oYW5kbGVyKXthcG50YWcubW9ja1NmTGlzdG5lci5oYW5kbGVyKGFwbnRhZy5tb2NrU2ZMaXN0bmVyLmFkT2JqKTt2YXIgcj17bmFtZTpcInJlc2l6ZUFkXCIsdGFyZ2V0SWQ6ZSxjbWQ6W1wiYXV0b1wiLFwiYXV0b1wiXX07emEod2luZG93LnBhcmVudCxyLG4pfX0oZSx0KTphcG50YWcuZW1pdEV2ZW50KGUsdCl9ZnVuY3Rpb24gaShlKXtxKGUubm90aWZ5Rm4pJiZHKGUuZ2V0Tm90aWZ5TWVzc2FnZXMoKSxmdW5jdGlvbih0KXt0LnNlbnR8fCh0LnNlbnQ9ITAsZS5ub3RpZnlGbih0Lm1lc3NhZ2VUeXBlLHQubWVzc2FnZVBheWxvYWQpKX0pfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnttZXNzYWdlVHlwZTplLG1lc3NhZ2VQYXlsb2FkOnQsdGFyZ2V0SWQ6bixzZW50OiExfX1mdW5jdGlvbiBzKGUsdCxuKXt2YXIgYT1bXSxyPVtdO3RoaXMuZ2V0VGFncz1mdW5jdGlvbigpe3JldHVybiBhfSx0aGlzLmFkZFRhZz1mdW5jdGlvbihlKXthLnB1c2goZSl9LHRoaXMuYWRkTm90aWZ5TWVzc2FnZT1mdW5jdGlvbihlKXtyLnB1c2goZSl9LHRoaXMuZ2V0Tm90aWZ5TWVzc2FnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gcn0sdGhpcy51cmw9ZSx0aGlzLmlkPXQsdGhpcy5zdGF0dXM9SGEsdGhpcy5yZW5kZXJGbj1mdW5jdGlvbigpe30sdGhpcy5ub3RpZnlGbj11LHRoaXMuaXNTYWZlRnJhbWU9bi5lbmFibGVTYWZlRnJhbWV8fCExLHRoaXMuYWRkVGFnKG4pfWZ1bmN0aW9uIGQoZSxuLGEpe3ZhciByPW5ldyBzKGUsbixhKTtyZXR1cm4gZnVuY3Rpb24oZSl7Ryh0LGZ1bmN0aW9uKHQpe2UuYWRkTm90aWZ5TWVzc2FnZSh0KX0pfShyKSxyfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj10aGlzLmdldFRhZ3MoKVswXS50YXJnZXRJZDtGYShlLHQsbil9ZnVuY3Rpb24gYyhlKXtpZighZXx8IWUuaXNNZWRpYXRlZCl7dmFyIHQ9RGUoZSk7Sih3aW5kb3cuZG9jdW1lbnQuYm9keSx0W2phXSx0W1ZhXSl9fX0oKSxqYT1nLmEuTk9USUZZLFZhPWcuYS5DUkVBVElWRV9JRCxIYT1cImxvYWRpbmdcIixYYT1cImxvYWRlZFwiO3ZhciBKYT1mdW5jdGlvbihlKXtpZihlKXtpZihlLm1lbWJlciYmKGFwbnRhZy5yZXF1ZXN0cy5tZW1iZXI9TnVtYmVyKGUubWVtYmVyKSksZS50YXJnZXRpbmdQYXJhbXMmJihhcG50YWcucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zPWUudGFyZ2V0aW5nUGFyYW1zLHooXCJ0YXJnZXRpbmdQYXJhbXMgd2lsbCBiZSBkZXByZWNhdGVkIHNvb24uIFBsZWFzZSB1c2Uga2V5d29yZHMgaW5zdGVhZFwiKSksZS5rZXl3b3JkcyYmKGFwbnRhZy5yZXF1ZXN0cy5rZXl3b3Jkcz1lLmtleXdvcmRzKSxlLnVzZXImJihhcG50YWcucmVxdWVzdHMudXNlcj1lLnVzZXIpLGUuYXBwJiYoYXBudGFnLnJlcXVlc3RzLmFwcD1lLmFwcCksZS5kZXZpY2UmJihhcG50YWcucmVxdWVzdHMuZGV2aWNlPWUuZGV2aWNlKSxlLmdlb092ZXJyaWRlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvdW50cnlDb2RlO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYyPT09dC5sZW5ndGgpe3ZhciBuPWUuemlwO2lmKCEoXCJzdHJpbmdcIiE9dHlwZW9mIG58fG4ubGVuZ3RoPDEpKXJldHVybntjb3VudHJ5Q29kZTp0LnRvVXBwZXJDYXNlKCksemlwOm59O3ooXCJJZ25vcmluZyBnZW9PdmVyaWRlIG9wdGlvbnMsIEludmFsaWQgemlwIGNvZGUsIGl0IHNob3VsZCBiZSBvZiB0eXBlIFN0cmluZyBhbmQgb2YgYXRsZWFzdCAxIGNoYXJhY3Rlci5cIil9ZWxzZSB6KFwiSWdub3JpbmcgZ2VvT3ZlcmlkZSBvcHRpb25zLCBJbnZhbGlkIGNvdW50cnkgY29kZSwgaXQgc2hvdWxkIGJlIG9mIHR5cGUgU3RyaW5nIGFuZCBvZiAyIGNoYXJhY3RlcnMuXCIpfShlLmdlb092ZXJyaWRlKTt0JiYoYXBudGFnLnJlcXVlc3RzLmdlb092ZXJyaWRlPXQpfWUuc2l0ZSYmKGFwbnRhZy5yZXF1ZXN0cy5zaXRlPWUuc2l0ZSksZS5kaXNhYmxlUHNhJiYoYXBudGFnLnJlcXVlc3RzLmRpc2FibGVQc2E9ITApLGFwbnRhZy5yZXF1ZXN0cy5lbmFibGVTYWZlRnJhbWU9ITEsZS5lbmFibGVTYWZlRnJhbWUmJih1YSgpLGFwbnRhZy5yZXF1ZXN0cy5lbmFibGVTYWZlRnJhbWU9ITApLGUucHVibGlzaGVySWQmJihhcG50YWcucmVxdWVzdHMucHVibGlzaGVySWQ9ZS5wdWJsaXNoZXJJZCksZS5jb25zZW50TWFuYWdlbWVudCYmKGFwbnRhZy5yZXF1ZXN0cy5jb25zZW50TWFuYWdlbWVudD1lLmNvbnNlbnRNYW5hZ2VtZW50KSxlLmF1Y3Rpb25UaW1lb3V0JiYoYXBudGFnLnJlcXVlc3RzLmF1Y3Rpb25UaW1lb3V0PWUuYXVjdGlvblRpbWVvdXQpLGUuZW5hYmxlTWVkaWF0aW9uRXZlbnRzJiYoYXBudGFnLnJlcXVlc3RzLmVuYWJsZU1lZGlhdGlvbkV2ZW50cz0hMCksZS51c19wcml2YWN5JiYoTyhlLnVzX3ByaXZhY3kpP2FwbnRhZy5yZXF1ZXN0cy51c19wcml2YWN5PWUudXNfcHJpdmFjeTp6KFwiSWdub3JpbmcgdXNfcHJpdmFjeSwgaXQgc2hvdWxkIGJlIGEgc3RyaW5nXCIpKX19LEdhPXZvaWQgMCxZYT1mdW5jdGlvbihlKXtpZighZnVuY3Rpb24oZSl7aWYoTShlKSYmZS5sZW5ndGg+MClyZXR1cm4hMDtyZXR1cm4gVihcIk5vIHNpemUgbWFwcGluZyBkZWZpbmVkXCIpLCExfShlLnNpemVNYXBwaW5nKSlyZXR1cm4gZS5zaXplczt2YXIgdCxuLGEscj0obj10fHxHYXx8aWUoKSxhPW4uZG9jdW1lbnQsbi5pbm5lcldpZHRoP24uaW5uZXJXaWR0aDphLmJvZHkuY2xpZW50V2lkdGg/YS5ib2R5LmNsaWVudFdpZHRoOmEuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoP2EuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOjApLGk9dm9pZCAwO2lmKCFyKXtpPWUuc2l6ZU1hcHBpbmdbMF07Zm9yKHZhciBvPTA7bzxlLnNpemVNYXBwaW5nLmxlbmd0aDtvKyspcGFyc2VJbnQoZS5zaXplTWFwcGluZ1tvXS5taW5XaWR0aCwxMCk+cGFyc2VJbnQoaS5taW5XaWR0aCwxMCkmJihpPWUuc2l6ZU1hcHBpbmdbb10pO3JldHVybiBpLnNpemVzP2kuc2l6ZXM6ZS5zaXplc31mb3IodmFyIHM9XCJcIixkPWUuc2l6ZU1hcHBpbmcuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWluV2lkdGgtdC5taW5XaWR0aH0pLHU9MDt1PGQubGVuZ3RoO3UrKylyPj1kW3VdLm1pbldpZHRoJiYoaT1kW3VdKTtyZXR1cm4gaSYmaS5zaXplcz8ocz1pLnNpemVzLEwoXCJ0YWcgOiBcIitlLnRhcmdldElkK1wiIHJlc2l6ZWQgYmFzZWQgb24gZGV2aWNlIHdpZHRoIHRvIDogXCIrcykpOkwoXCJ0YWcgOiBcIitlLnRhcmdldElkK1wiIG5vdCBtYXBwZWQgdG8gYW55IHNpemVzIGZvciBkZXZpY2Ugd2lkdGguIFRoaXMgcmVxdWVzdCB3aWxsIGJlIHN1cHByZXNzZWQuXCIpLHN9O3ZhciBLYT1nLmwuVU5ERUZJTkVEO2Z1bmN0aW9uICRhKGUsdCl7dmFyIG49ITEsYT1lO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoPyhhPWNhLmFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLGUuc2l6ZXMmJmEuc2l6ZU1hcHBpbmc/bj0hMDplLnNpemVNYXBwaW5nJiYhYS5zaXplTWFwcGluZyYmKG49ITApKToodD1lLnRhcmdldElkLGUuc2l6ZXMmJmUuc2l6ZU1hcHBpbmcmJihuPSEwKSksbilyZXR1cm4gVyhcInNpemVzIGFuZCBzaXplTWFwcGluZyBib3RoIGNhbm5vdCBiZSBkZWZpbmVkIGZvciB0YXJnZXRJZDogXCIrdCksITE7aWYoZS5zaXplTWFwcGluZyl7dmFyIHI9WWEoZSk7aWYoXCJcIj09PXIpcmV0dXJuXCJcIjtlLnNpemVzPXJ9cmV0dXJuITB9dmFyIFFhPWZ1bmN0aW9uKGUpe2lmKGUucmlkJiYoYXBudGFnLnJlcXVlc3RzLmtleXdvcmRzLnJpZD1lLnJpZCksZS5wcm92aWRlcl9pZCYmKGFwbnRhZy5yZXF1ZXN0cy5rZXl3b3Jkcy5wcm92aWRlcl9pZD1lLnByb3ZpZGVyX2lkKSxlLmRlYnVnJiYoYXBudGFnLmRlYnVnPWUuZGVidWcpLGUuYXN0VG9vbGtpdCYmZS5hc3REb25nbGUmJihhcG50YWcucmVxdWVzdHMudG9vbGtpdD17ZW5hYmxlZDohMCxkb25nbGU6ZS5hc3REb25nbGV9KSxlLnNpemUpVyhcIlNpemUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBzaXplcyBpbnN0ZWFkLlwiKTtlbHNlIGlmKGUubWVtYmVyP2UubWVtYmVyPU51bWJlcihlLm1lbWJlcik6ZS5tZW1iZXI9YXBudGFnLnJlcXVlc3RzLm1lbWJlcixlLm1lbWJlcnx8KGUubWVtYmVyPVwibm9uZVwiKSxlLnRhZ0lkfHxlLmludkNvZGUmJmUubWVtYmVyKXtpZihlLnNpemVNYXBwaW5nKWlmKCEkYShlKSlyZXR1cm4gdm9pZCBXKFwidGFnIG5vdCBtYXBwZWQgdG8gYW55IHNpemVzIGZvciBkZXZpY2Ugd2lkdGg6IFwiK2UudGFyZ2V0SWQpO3RyeXt2YXIgdD1lLnRhcmdldElkLG49ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm1lbWJlcjtyZXR1cm4gYXBudGFnLnJlcXVlc3RzPWFwbnRhZy5yZXF1ZXN0c3x8e30sYXBudGFnLnJlcXVlc3RzLnRhZ3M9YXBudGFnLnJlcXVlc3RzLnRhZ3N8fHt9LGFwbnRhZy5yZXF1ZXN0cy51dENhbGxlZD1hcG50YWcucmVxdWVzdHMudXRDYWxsZWR8fCExLGFwbnRhZy5yZXF1ZXN0cy5oYXNMZWZ0PWFwbnRhZy5yZXF1ZXN0cy5oYXNMZWZ0fHwhMSxhcG50YWcucmVxdWVzdHMuY2JDYWxsZWQ9YXBudGFnLnJlcXVlc3RzLmNiQ2FsbGVkfHwhMSxhcG50YWcucmVxdWVzdHMuZW5hYmxlU2FmZUZyYW1lJiYoZS5lbmFibGVTYWZlRnJhbWU9ITApLGUuc2FmZWZyYW1lPXNlKGRhKXx8e30sdGUoZSxcInNhZmVmcmFtZUNvbmZpZ1wiKSYmKHRlKGUuc2FmZWZyYW1lQ29uZmlnLFwiYWxsb3dFeHBhbnNpb25CeVB1c2hcIikmJihlLnNhZmVmcmFtZS5leHBhbnNpb25CeVB1c2g9ZS5zYWZlZnJhbWVDb25maWcuYWxsb3dFeHBhbnNpb25CeVB1c2gpLHRlKGUuc2FmZWZyYW1lQ29uZmlnLFwiYWxsb3dFeHBhbnNpb25CeU92ZXJsYXlcIikmJihlLnNhZmVmcmFtZS5leHBhbnNpb25CeU92ZXJsYXk9ZS5zYWZlZnJhbWVDb25maWcuYWxsb3dFeHBhbnNpb25CeU92ZXJsYXkpLHRlKGUuc2FmZWZyYW1lQ29uZmlnLFwic2FuZGJveFwiKSYmKGUuc2FmZWZyYW1lLnNhbmRib3g9ZS5zYWZlZnJhbWVDb25maWcuc2FuZGJveCksdGUoZS5zYWZlZnJhbWVDb25maWcsXCJtZXRhXCIpJiYoZS5zYWZlZnJhbWUubWV0YT1lLnNhZmVmcmFtZUNvbmZpZy5tZXRhKSksYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF09ZSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS51dENhbGxlZD1hcG50YWcucmVxdWVzdHMudGFnc1t0XS51dENhbGxlZHx8ITEsYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0uc2hvd1RhZ0NhbGxlZD1hcG50YWcucmVxdWVzdHMudGFnc1t0XS5zaG93VGFnQ2FsbGVkfHwhMSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5kaXNwbGF5ZWQ9YXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0uZGlzcGxheWVkfHwhMSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5pbml0aWFsSGVpZ2h0PTEsYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0uaW5pdGlhbFdpZHRoPTEsYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0ub249YXBudGFnLm9uRXZlbnR8fHZvaWQgMCxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5vZmY9YXBudGFnLm9mZkV2ZW50fHx2b2lkIDAsYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0uc2V0U2l6ZXM9YXBudGFnLnNldFNpemVzfHx2b2lkIDAsYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0ubW9kaWZ5VGFnPWFwbnRhZy5tb2RpZnlUYWd8fHZvaWQgMCxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5yZWZyZXNoPWZ1bmN0aW9uKCl7cmV0dXJuIGFwbnRhZy5yZWZyZXNoKHRoaXMudGFyZ2V0SWQpfSxhcG50YWcucmVxdWVzdHMudGFnc1t0XS5zZXRLZXl3b3Jkcz1mdW5jdGlvbihlLHQpe3JldHVybiBhcG50YWcuc2V0S2V5d29yZHModGhpcy50YXJnZXRJZCxlLHQpfSxpYVtuXT10eXBlb2YgaWFbbl09PT1LYT9bXTppYVtuXSxpYVtuXS5wdXNoKGUudGFyZ2V0SWQpLHZhKClbZS50YXJnZXRJZF0mJihhcG50YWcucmVxdWVzdHMudGFnc1t0XS5zaG93VGFnQ2FsbGVkPSEwKSxhcG50YWcucmVxdWVzdHMudGFnc1t0XX0oZSx0KTtyZXR1cm4gTChcImRlZmluZVRhZyBjYWxsZWQgZm9yOiBcIit0KSxhcG50YWcucmVxdWVzdHMmJiEwPT09YXBudGFnLnJlcXVlc3RzLnV0Q2FsbGVkJiYhYXBudGFnLnJlcXVlc3RzLnRhZ3NbdF0udXRDYWxsZWQmJkwoXCJBIHBsYWNlbWVudCB3YXMgbG9hZGVkIGFmdGVyIHV0IGNhbGwgd2FzIHN0YXJ0ZWQuIFRoZXNlIGFkIGNhbGxzIHdpbGwgbm90IGJlIGNvb3JkaW5hdGVkXCIpLG59Y2F0Y2goZSl7VyhcImJ1aWxkQWRUYWdDb250YWluZXI6IFwiK2UubWVzc2FnZSl9fWVsc2UgVyhcInRhZ0lkIG9yIChpbnZDb2RlICYgbWVtYmVySWQpIHNob3VsZCBiZSBkZWZpbmVkIGZvciB0YXJnZXRJZDogXCIrZS50YXJnZXRJZCl9LFphPWZ1bmN0aW9uKGUpe2U9ZS5yZXBsYWNlKC8oXFxuKS9nLFwiPGJyPlwiKSxlPW5yKCkrZTt2YXIgdD1kb2N1bWVudC5ib2R5LG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLmlkPVwiYXBwbmV4dXNfZGVidWdfd2luZG93XCI7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTthLnN0eWxlLndpZHRoPVwiMTAwJVwiLGEuc3R5bGUuaGVpZ2h0PVwiNDAwcHhcIixhLnN0eWxlLmNsZWFyPVwiYm90aFwiLHQuaW5zZXJ0QmVmb3JlKGEsbnVsbCk7dmFyIHI9bi5zdHlsZTtyLnBvc2l0aW9uPVwiZml4ZWRcIixyLmJvdHRvbT1cIjBweFwiLHIubGVmdD1cIjBweFwiLHIud2lkdGg9XCIxMDAlXCIsci5oZWlnaHQ9XCI0NTBweFwiLHIub3ZlcmZsb3c9XCJoaWRkZW5cIixyW1wiYm9yZGVyLXRvcFwiXT1cIjFweCBzb2xpZFwiLHJbXCJ6LWluZGV4XCJdPTk5OTk5OSxyLmJhY2tncm91bmQ9XCJ3aGl0ZVwiLHQuaW5zZXJ0QmVmb3JlKG4sbnVsbCk7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtpLnN0eWxlLndpZHRoPVwiMTAwJVwiLGkuc3R5bGUuaGVpZ2h0PVwiMzBweFwiO3ZhciBvPXRyKCk7bi5hcHBlbmRDaGlsZChvKTt2YXIgcz1vLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7by5vbmxvYWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9cy5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJyXCIpLHQ9ZS5sZW5ndGgsbj0wLGE9dm9pZCAwO248dC0xO24rKylcImJyXCI9PT0oKGE9ZVtuXS5uZXh0U2libGluZykmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJihhLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpfTtzLm9wZW4oKSxzLndyaXRlKGUpLHMud3JpdGUoXCI8XFwvc2NyaXB0PlwiKSxzLmNsb3NlKCl9LGVyPWZ1bmN0aW9uKGUpe3ZhciB0PW5yKCkrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuJ1xcbiAgICAgIDx0YWJsZSBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyBib3JkZXItcmFkaXVzOiA1cHg7IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBtYXJnaW46IDFlbTsgcGFkZGluZzogLjVlbVwiPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA1ZW07XCI+PGI+VGFyZ2V0Jm5ic3A7SUQ8L2I+PC90ZD5cXG4gICAgICAgICAgPHRkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+JythcihlKStcIjwvdGQ+XFxuICAgICAgICA8L3RyPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQ+PGI+Q3JlYXRpdmUgSUQ8L2I+PC90ZD5cXG4gICAgICAgICAgPHRkPlwiK2lyKGUsXCJjcmVhdGl2ZV9pZFwiKStcIjwvdGQ+XFxuICAgICAgICA8L3RyPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQ+PGI+QnV5ZXIgTWVtYmVyIElEPC9iPjwvdGQ+XFxuICAgICAgICAgIDx0ZD5cIitpcihlLFwiYnV5ZXJfbWVtYmVyX2lkXCIpK1wiPC90ZD48L3RyPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQ+PGI+Q3JlYXRpdmUgU2l6ZTwvYj48L3RkPlxcbiAgICAgICAgICA8dGQ+XCIrZnVuY3Rpb24oZSl7aWYoZS5ub2JpZClyZXR1cm4gcnI7dmFyIHQ9bnVsbCxuPW51bGwsYT1lLmFkcyYmZS5hZHMubGVuZ3RoP2UuYWRzWzBdOnt9O3JldHVybiBhLnJ0YiYmYS5ydGIuYmFubmVyJiYodD1hLnJ0Yi5iYW5uZXIuaGVpZ2h0LG49YS5ydGIuYmFubmVyLndpZHRoKSx0JiZuP24rXCIgeCBcIit0OlwiXCJ9KGUpK1wiPC90ZD5cXG4gICAgICAgIDwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5BdmFpbGFibGUgU2l6ZXM8L2I+PC90ZD5cXG4gICAgICAgICAgPHRkPlwiK2Z1bmN0aW9uKGUpe3RyeXt2YXIgdD1hcihlKSxuPWFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnNpemVzO3JldHVybiBKU09OLnN0cmluZ2lmeShuKX1jYXRjaChlKXtyZXR1cm5cIlwifX0oZSkrXCI8L3RkPjwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5XaW5uaW5nIEJpZDwvYj48L3RkPlxcbiAgICAgICAgICA8dGQ+XCIraXIoZSxcImNwbVwiKStcIjwvdGQ+PC90cj5cXG4gICAgICAgIDx0cj5cXG4gICAgICAgICAgPHRkPjxiPkRlbWFuZCBTb3VyY2U8L2I+PC90ZD5cXG4gICAgICAgICAgPHRkPlwiK2Z1bmN0aW9uKGUpe2lmKGUubm9iaWQpcmV0dXJuIHJyO3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PWFwbnRhZy5yZXF1ZXN0cy50YWdzO2lmKGUuYWRzLmxlbmd0aCYmZS5hZHNbMF0uc2VsbGVyX21lbWJlcl9pZClyZXR1cm4gZS5hZHNbMF0uc2VsbGVyX21lbWJlcl9pZDtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZ0W25dLnV1aWQ9PT1lLnV1aWQpcmV0dXJuIHRbbl0ubWVtYmVyO3JldHVybiBudWxsfShlKTtyZXR1cm4gZS5hZHNbMF0uY3NtP1wiQ1NNXCI6ZS5hZHNbMF0uYnV5ZXJfbWVtYmVyX2lkPT09dHx8ZS5hZHNbMF0uZGVhbF9pZD9lLmFkc1swXS5idXllcl9tZW1iZXJfaWQhPT10JiZlLmFkc1swXS5kZWFsX2lkP1wiRGVhbFwiOmUuYWRzWzBdLmJ1eWVyX21lbWJlcl9pZD09PXQ/XCJEaXJlY3RcIjpcIlwiOlwiUlRCXCJ9KGUpK1wiPC90ZD48L3RyPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQ+PGI+QWQgVHlwZTwvYj48L3RkPlxcbiAgICAgICAgICA8dGQ+XCIraXIoZSxcImFkX3R5cGVcIikrXCI8L3RkPjwvdHI+XFxuICAgICAgICA8dHI+XFxuICAgICAgICAgIDx0ZD48Yj5NZWRpYSBUeXBlPC9iPjwvdGQ+XFxuICAgICAgICAgIDx0ZD5cIitpcihlLFwibWVkaWFfdHlwZV9pZFwiKSsnPC90ZD48L3RyPlxcbiAgICAgICAgPHRyPlxcbiAgICAgICAgICA8dGQgc3R5bGU9XCJjb2xvcjogIzU1NTsgZm9udC1zaXplOiBzbWFsbGVyOyBwYWRkaW5nLXRvcDogLjVlbTtcIiBjb2xzcGFuPVwiMlwiPlxcbiAgICAgICAgICAgIENvbnNvbGUgQWQgUHJvZmlsZTpcXG4gICAgICAgICAgICA8YSBocmVmPVwiJytmdW5jdGlvbihlKXtyZXR1cm5cIi8vY29uc29sZS5hcHBuZXh1cy5jb20vYWQtcXVhbGl0eT9pZD1cIitlLnBsYWNlbWVudC5wdWJsaXNoZXIuaWR9KGUpKydcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nK2UuYWRfcHJvZmlsZV9pZCtcIjwvYT5cXG4gICAgICAgICAgICBcIitmdW5jdGlvbihlKXtyZXR1cm4gZS5hZHM/J3wgPGEgaHJlZj1cIi8vaWIuYWRueHMuY29tL2NyP2lkPScrZS5hZHNbMF0uY3JlYXRpdmVfaWQrJ1wiIHRhcmdldD1cIl9ibGFua1wiPkNyZWF0aXZlIFByZXZpZXc8YS8+JzpcIlwifShlKStcIlxcbiAgICAgICAgICA8L3RkPlxcbiAgICAgICAgPC90cj5cXG4gICAgICA8L3RhYmxlPlxcbiAgICBcIn0pLmpvaW4oXCIgXCIpLG49ZG9jdW1lbnQuYm9keSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7YS5pZD1cImFwcG5leHVzX2RlYnVnX3dpbmRvd1wiO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ci5zdHlsZS53aWR0aD1cIjEwMCVcIixyLnN0eWxlLmhlaWdodD1cIjQwMHB4XCIsci5zdHlsZS5jbGVhcj1cImJvdGhcIixuLmluc2VydEJlZm9yZShyLG51bGwpO3ZhciBpPWEuc3R5bGU7aS5wb3NpdGlvbj1cImZpeGVkXCIsaS5ib3R0b209XCIwcHhcIixpLmxlZnQ9XCIwcHhcIixpLndpZHRoPVwiMTAwJVwiLGkuaGVpZ2h0PVwiNDUwcHhcIixpLm92ZXJmbG93PVwiaGlkZGVuXCIsaVtcImJvcmRlci10b3BcIl09XCIxcHggc29saWRcIixpW1wiei1pbmRleFwiXT05OTk5OTksaS5iYWNrZ3JvdW5kPVwid2hpdGVcIixuLmluc2VydEJlZm9yZShhLG51bGwpO3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7by5zdHlsZS53aWR0aD1cIjEwMCVcIixvLnN0eWxlLmhlaWdodD1cIjMwcHhcIjt2YXIgcz10cigpO2EuYXBwZW5kQ2hpbGQocyk7dmFyIGQ9cy5jb250ZW50V2luZG93LmRvY3VtZW50O2Qub3BlbigpLGQud3JpdGUodCksZC5jbG9zZSgpfTtmdW5jdGlvbiB0cigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7cmV0dXJuIGUuaWQ9XCJhcHBuZXh1cy1kZWJ1Zy1jb25zb2xlLWxvYWRlclwiLGUuaGVpZ2h0PVwiMTAwJVwiLGUud2lkdGg9XCIxMDAlXCIsZS5ib3JkZXI9XCIwcHhcIixlLmhzcGFjZT1cIjBcIixlLnZzcGFjZT1cIjBcIixlLm1hcmdpbldpZHRoPVwiMFwiLGUubWFyZ2luSGVpZ2h0PVwiMFwiLGUuc3R5bGUuYm9yZGVyPVwiMFwiLGUuZnJhbWVCb3JkZXI9XCIwXCIsZX1mdW5jdGlvbiBucigpe3ZhciBlPXZvaWQgMDtyZXR1cm4gSmUmJihlPUplLmdldEl0ZW0oXCJhc3RfZG9uZ2xlXCIpKSwnPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHg7XCI+PHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDpib2xkXCI+QVNUIERvbmdsZSBWYWx1ZTo8L3NwYW4+IDxpbnB1dFxcbiAgICAgICAgICAgIGlkPVwiYXN0LWRvbmdsZS1pbnB1dFwiXFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxcbiAgICAgICAgICAgIGxlbmd0aD1cIjQwMFwiXFxuICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOjVweDtcIlxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgYXN0X2RvbmdsZSB2YWx1ZVwiXFxuICAgICAgICAgICAgb25rZXl1cD1pZignK0plK1wiKXtcIitKZStcIi5zZXRJdGVtKCdhc3RfZG9uZ2xlJyxldmVudC50YXJnZXQudmFsdWUpfTtcXG4gICAgICAgICAgICB2YWx1ZT1cIitlK1wiXFxuICAgICAgICAgLz48L2Rpdj5cIn1mdW5jdGlvbiBhcihlKXt0cnl7cmV0dXJuIE9iamVjdC5rZXlzKGFwbnRhZy5yZXF1ZXN0cy50YWdzKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLnV1aWQ9PT1lLnV1aWR9KVswXX1jYXRjaChlKXtyZXR1cm5cIlwifX12YXIgcnI9JzxzcGFuIHN0eWxlPVwiY29sb3I6ICNjY2NcIj5ub2JpZDwvc3Bhbj4nO2Z1bmN0aW9uIGlyKGUsdCl7aWYoZS5ub2JpZClyZXR1cm4gcnI7dmFyIG49ZS5hZHMmJmUuYWRzWzBdW3RdO3JldHVybiBufHwwPT09bj9uOlwiXCJ9dmFyIG9yPWZ1bmN0aW9uKCl7dmFyIGU9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3JldHVybigvKHdlYmtpdClbIFxcL10oW1xcdy5dKykvLmV4ZWMoZSl8fC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFxcL10oW1xcdy5dKykvLmV4ZWMoZSl8fC8obXNpZSkgKFtcXHcuXSspLy5leGVjKGUpfHxlLmluZGV4T2YoXCJjb21wYXRpYmxlXCIpPDAmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcXHcuXSspfCkvLmV4ZWMoZSl8fFtdKVsxXX0sc3I9Zy5iLkJBTk5FUixkcj1nLmIuTkFUSVZFLHVyPWcucS5BRF9UWVBFLGNyPWcuYi5WSURFTyxscj1nLnEuQkFOTkVSLGZyPWcucS5DT05URU5ULHByPWcuYS5DUkVBVElWRV9JRCxncj1nLmgsbXI9Zy5hLklNUF9VUkxTLHZyPWcuYS5OT0FELGhyPWcubC5PQkpFQ1QseXI9Zy5kLlJUQixicj1nLmEuVFJBQ0tFUlMsd3I9Zy5sLlVOREVGSU5FRCxJcj1mdW5jdGlvbihlLHQsbixhKXt2YXIgcj12b2lkIDAsaT12b2lkIDAsbz12b2lkIDAscz1lLmFkUmVzcG9uc2U7IWZ1bmN0aW9uKGUpe2lmKGUuYWRSZXNwb25zZSYmZS5hZFJlc3BvbnNlLmFkcyl7dmFyIHQ9b2UoZS5hZFJlc3BvbnNlLmFkcyk7aWYodC5iYW5uZXIpe3ZhciBuPWUuaW5pdENvbGxhcHNlZCxhPW4mJm4uZXhwYW5kQnkmJmxlKGdyKS5pbmRleE9mKG4uZXhwYW5kQnkpPj0wO24mJiFhJiZ6KFwiVGFnSUQgXCIrZS50YWdJZCtcIiBpbml0Q29sbGFwc2VkIGlzIHNldCBidXQgZXhwYW5kQnkgaXMgbm90IHJlY29nbml6ZWQsIGluaXRpYWwgc2l6ZSB3aWxsIG5vdCBiZSBjb2xsYXBzZWRcIiksZS5pbml0aWFsSGVpZ2h0PWE/MDp0LmJhbm5lci5oZWlnaHQsZS5pbml0aWFsV2lkdGg9YT8wOnQuYmFubmVyLndpZHRofX19KGUpO3ZhciBkLHU9RGUoZSk7aWYodHlwZW9mIHU9PT13cnx8bnVsbD09PXV8fHR5cGVvZiB1LmVycm9yIT09d3IpcmV0dXJuIGQ9cyx2b2lkIEood2luZG93LmRvY3VtZW50LmJvZHksZFt2cl0sZC51dWlkKTtpZihzJiZlLnNob3dUYWdDYWxsZWQmJiFmdW5jdGlvbihlLHQpe2lmKHQucmVuZGVyZXJfdXJsJiZ0LnJlbmRlcmVyX2lkKXtpZihlLnVzZXNSZW5kZXJlcj0hMCwyPT09dC5yZW5kZXJlcl9pZCYmZS5lbmFibGVTYWZlRnJhbWUmJihlLnNhZmVmcmFtZS5leHBhbnNpb25CeVB1c2g9ITAsZS5jdXN0b21JZnJhbWVQcm9wcz17c3R5bGU6XCJvdmVyZmxvdzpoaWRkZW5cIixhbGxvdzpcImF1dG9wbGF5XCJ9KSwhZS5lbmFibGVTYWZlRnJhbWUpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49cWUodCk7aWYodHlwZW9mIG49PT13cilyZXR1cm4gdm9pZCBXKFwiTm8gQ29udGVudCBTb3VyY2UgRm91bmRcIik7dFt0LmFkX3R5cGVdPW47Q2UoZSksV2EubG9hZFJlbmRlcmVyKGUsdCl9KGUsdCksITA7V2EubG9hZFJlbmRlcmVyKGUsdCl9fShlLHUpKXtpZih1W3VyXT09PWRyJiYhZS51c2VzUmVuZGVyZXIpcmV0dXJuIEwoXCJSZW5kZXIgZm9yIHRoZSBmb2xsb3dpbmcgYWQgc2hvdWxkIGJlIGhhbmRsZWQgb3V0c2lkZSBvZiBhc3QuanMgOlwiK2UudGFyZ2V0SWQpLGUuZGlzcGxheWVkPSEwLG89YnQoZS5hZFJlc3BvbnNlKSx5ZS5lbWl0KGcuZy5MT0FERUQsZS50YXJnZXRJZCxvKSx2b2lkIGooXCJUaGUgXCIrZS50YXJnZXRJZCtcIiBhZCBpcyBsb2FkZWQuXCIpO2lmKHVbdXJdIT09Y3J8fGUudXNlc1JlbmRlcmVyKXtpZih1W3VyXT09PXNyfHxlLnVzZXNSZW5kZXJlcil7aWYodS5jb250ZW50X3NvdXJjZT09PXlyJiYhZS51c2VzUmVuZGVyZXIpe3ZhciBjPXVbeXJdW2xyXTtpZihCKGMpfHx0eXBlb2YgYyE9PWhyKXJldHVybiB2b2lkIFcoXCJSZXNwb25zZSBoYXMgbm8gYmFubmVyIG9iamVjdFwiKTtpZighdGUoYyxmcikpcmV0dXJuIHZvaWQgVyhcIlJlc3BvbnNlIGhhcyBubyBiYW5uZXIgY29udGVudFwiKTtpZighdGUoYyxcIndpZHRoXCIpKXJldHVybiB2b2lkIFcoXCJSZXNwb25zZSBoYXMgbm8gYmFubmVyIHdpZHRoXCIpO2lmKCF0ZShjLFwiaGVpZ2h0XCIpKXJldHVybiB2b2lkIFcoXCJSZXNwb25zZSBoYXMgbm8gYmFubmVyIGhlaWdodFwiKX12YXIgbD12b2lkIDA7dGUobixlLnRhcmdldElkKSYmKGw9bltlLnRhcmdldElkXSk7dmFyIGY9dm9pZCAwO2lmKGUuYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8ZS5lbmFibGVTYWZlRnJhbWUpe2EoKTt2YXIgcD0oZj13aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZS50YXJnZXRJZCkpLnN0eWxlLmhlaWdodCxtPWYuc3R5bGUud2lkdGg7Zi5zdHlsZS5oZWlnaHQ9ZS5pbml0aWFsSGVpZ2h0LGYuc3R5bGUud2lkdGg9ZS5pbml0aWFsV2lkdGgsZi5zdHlsZS5oZWlnaHQ9cCxmLnN0eWxlLndpZHRoPW19dmFyIHY9c2UodCk7dGUoZS5zYWZlZnJhbWUsXCJleHBhbnNpb25CeVB1c2hcIikmJih2LmV4cGFuc2lvbkJ5UHVzaD1lLnNhZmVmcmFtZS5leHBhbnNpb25CeVB1c2gpLHRlKGUuc2FmZWZyYW1lLFwiZXhwYW5zaW9uQnlPdmVybGF5XCIpJiYodi5leHBhbnNpb25CeU92ZXJsYXk9ZS5zYWZlZnJhbWUuZXhwYW5zaW9uQnlPdmVybGF5KSx0ZShlLnNhZmVmcmFtZSxcInNhbmRib3hcIikmJih2LnNhbmRib3g9ZS5zYWZlZnJhbWUuc2FuZGJveCksdGUoZS5zYWZlZnJhbWUsXCJtZXRhXCIpJiYodi5tZXRhPWUuc2FmZWZyYW1lLm1ldGEpLGUuc2FmZWZyYW1lPXYsaT1mdW5jdGlvbihlKXt2YXIgdD12b2lkIDAsbj11ZShlKSxhPWUuY3VyV2luZG93fHx3aW5kb3c7dD1hLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pP2EuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik6YS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3JldHVybiB0LnN0eWxlLmRpc3BsYXk9XCJub25lXCIsdC5pZD1uLHR9KGUpLChlLmFsd2F5c1VzZVhEb21haW5JZnJhbWV8fGUuZW5hYmxlU2FmZUZyYW1lKSYmKGkuc3R5bGUuaGVpZ2h0PWUuaW5pdGlhbEhlaWdodCtcInB4XCIsaS5zdHlsZS53aWR0aD1lLmluaXRpYWxXaWR0aCtcInB4XCIsaS5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIixmLmFwcGVuZENoaWxkKGkpLGUuZ2VvbT1mdW5jdGlvbihlLHQpe0woXCJHZW9tIHN0YXJ0aW5nXCIpO3ZhciBuPU5hKGUsdCk7cmV0dXJuIDA9PT14YSYmKHhhPXNldEludGVydmFsKEJhLDFlMykpLG59KGUudGFyZ2V0SWQsaSkpLHI9Y3QoZSx1KTt2YXIgaD1UdC5nZXRJbnN0YW5jZSgpLHk9e307aWYoeS5pZnJhbWU9cix5Lm9yaWdpbmFsV2lkdGg9ZS5pbml0aWFsV2lkdGgseS5vcmlnaW5hbEhlaWdodD1lLmluaXRpYWxIZWlnaHQsaC5hZGQoZS50YXJnZXRJZCx5KSxuW2UudGFyZ2V0SWRdPXIsdHlwZW9mIGwhPT13ciYmd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGwuaWQpP2kucmVwbGFjZUNoaWxkKHIsbCk6aS5hcHBlbmRDaGlsZChyKSxlLmRpc3BsYXllZD0hMCx3aW5kb3cuZG9jdW1lbnQuYm9keSl0cnl7IWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1vcigpLHI9KGUuY3VyV2luZG93fHx3aW5kb3cpLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUudGFyZ2V0SWQpO2lmKHIpe2UuYWx3YXlzVXNlWERvbWFpbklmcmFtZXx8ZS5lbmFibGVTYWZlRnJhbWV8fChyLmFwcGVuZENoaWxkKHQpLHQuc3R5bGUuZGlzcGxheT1cImlubGluZVwiKSxlLnV0RGl2SWQ9dC5pZCxlLnV0aWZyYW1lSWQ9bi5pZCxhPT09Zy5jLklFfHxhPT09Zy5jLk9QRVJBP2x0KG4sZSk6ZnQobixlKTt2YXIgaT1lLmFkUmVzcG9uc2UuYWRzP2UuYWRSZXNwb25zZS5hZHNbMF06ZS5hZFJlc3BvbnNlLmFkO2lmKHZvaWQgMD09PWkpcmV0dXJuIHZvaWQgeihcIk5vIGFkIGZvdW5kIGluIHJlc3BvbnNlLCBub3RoaW5nIHRvIGRpc3BsYXkuXCIpOyghZS5pc01lZGlhdGVkJiYhZS51c2VzUmVuZGVyZXJ8fGUuYWRSZXNwb25zZS5hZCYmXCJydGJcIj09PWUuYWRSZXNwb25zZS5hZC5jb250ZW50X3NvdXJjZSkmJighZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZVt5cl1bYnJdWzBdW21yXSxhPTA7YTxuLmxlbmd0aDthKyspSih0LnBhcmVudEVsZW1lbnQsblthXSxlW3ByXSl9KGksbiksTChcIldpbiBub3RpZmljYXRpb24gc2VudCBmb3IgYWQgdGFnOiBcIitlLnRhcmdldElkKSk7dmFyIG89cWUoaSkscz1OdW1iZXIoci5zdHlsZS53aWR0aC5yZXBsYWNlKC9bXlxcZFxcLlxcLV0vZyxcIlwiKSk7IWlzTmFOKHMpJiZzPm8ud2lkdGgmJihcImNlbnRlclwiPT09ZS5wcm9tb0FsaWdubWVudD9yLnNldEF0dHJpYnV0ZShcImFsaWduXCIsXCJjZW50ZXJcIik6ci5zZXRBdHRyaWJ1dGUoXCJhbGlnblwiLFwibGVmdFwiKSksTChcIlRoZSBcIitlLnRhcmdldElkK1wiIGFkIGlzIGxvYWRlZC5cIiksaihcIlRoZSBcIitlLnRhcmdldElkK1wiIGFkIGlzIGxvYWRlZC5cIik7dmFyIGQ9YnQoZS5hZFJlc3BvbnNlKTtlLnVzZXNSZW5kZXJlcnx8YXBudGFnLnJlcXVlc3RzLmVuYWJsZU1lZGlhdGlvbkV2ZW50cyYmZS5pc01lZGlhdGVkfHx5ZS5lbWl0KGcuZy5MT0FERUQsZS50YXJnZXRJZCxkKX1lbHNlIHooXCJObyBkaXYgZWxlbWVudCBmb3VuZCBmb3IgZGlzcGxheSBhZC4gVGhpcyBhZCB3aWxsIG5vdCBzaG93LiBEaXYgaWQ6IFwiK2UudGFyZ2V0SWQpfShlLGkscil9Y2F0Y2goZSl7VyhcIkVycm9yIHJlbmRlcmluZyBhZDogXCIsZSl9ZWxzZSBXKFwiRXJyb3IgcmVuZGVyaW5nIGFkOiB3aW5kb3cuZG9jdW1lbnQuYm9keSBpcyB1bmRlZmluZWRcIil9ZWxzZSBXKFwiRXJyb3IgcmVuZGVyaW5nIGFkOiB1bmtub3duIHR5cGVcIik7cmV0dXJuIGUudGFyZ2V0SWR9eihcIlJlc3BvbnNlIGhhcyBubyByZW5kZXJlciBmb3IgdmlkZW9cIil9fTt2YXIgX3I9Zy5iLk5BVElWRSxFcj1nLmIuQkFOTkVSLFRyPWcuYi5WSURFTyxrcj1nLmwuVU5ERUZJTkVEO2Z1bmN0aW9uIHhyKGUsdCxuKXtMKFwicmVuZGVyQWQgaXMgY2FsbGVkXCIpLEcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24oZSl7aWYoZS51dWlkPT09dCl7ZS5hZFJlc3BvbnNlPW47dHJ5e2lmKG4uYWQmJm4uYWQuYWRfdHlwZT09PUVyKXt2YXIgYT1uLmFkLmNvbnRlbnRfc291cmNlO2UuYWQ9e21lZGlhdGVkQ29udGVudDpuLmFkW2FdLmJhbm5lci5jb250ZW50fSxlLmluaXRpYWxIZWlnaHQ9bi5hZFthXS5iYW5uZXIuaGVpZ2h0LGUuaW5pdGlhbFdpZHRoPW4uYWRbYV0uYmFubmVyLndpZHRofX1jYXRjaChlKXtXKFwiRXJyb3Igd2hpbGUgc2V0dGluZyBtZWRpYXRlZCBjb250ZW50IGZvciBiYW5uZXIgaW4gcmVuZGVyQWRcIitlKX12YXIgcj1JcihlLGRhLG1hKCksdWEpO3JhLnB1c2gocil9fSl9ZnVuY3Rpb24gU3IoZSx0LG4pe3ZhciBhPXZvaWQgMDtpZihlLnV1aWQ9PT10LnV1aWQpaWYoITA9PT10Lm5vYmlkKUwoXCJObyBiaWQgZm9yIHRhcmdldElkOlwiK2UudGFyZ2V0SWQpLGE9YnQodCkseWUuZW1pdChnLmcuTk9fQklELG4sYSk7ZWxzZSBpZihlLmFkUmVzcG9uc2U9dCxlLnV0Q2FsbGVkPSEwLGE9YnQodCkseWUuZW1pdChnLmcuQVZBSUxBQkxFLG4sYSksIWUucHJlYmlkJiYhZS5kaXNwbGF5ZWQpe3ZhciByPUlyKGUsZGEsbWEoKSx1YSk7cmEucHVzaChyKX19ZnVuY3Rpb24gQXIoZSx0KXt2YXIgbj1udWxsO2lmKGFwbnRhZy5yZXF1ZXN0cy5jYkNhbGxlZD0hMCx0eXBlb2YgZT09PWtyfHxudWxsPT09ZXx8ZS5lcnJvcil7dmFyIGE9XCJtYWxmb3JtZWQgcmVzcG9uc2UgZnJvbSBhZCBzZXJ2ZXJcIjtlJiZlLmVycm9yJiYoYT1lLmVycm9yKSxXKFwiRXJyb3IgcmVzcG9uc2UgZnJvbSBpbXBidXM6IFwiK2EpO3ZhciByPXt9O3RyeXtyPUpTT04ucGFyc2UodCl9Y2F0Y2goZSl7fUcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24oZSx0KXt2YXIgaT1JdChhLHQsdm9pZCAwLDIwMCk7ZSYmKG49YnQoZS5hZFJlc3BvbnNlKSksRyhyLnRhZ3MsZnVuY3Rpb24oYSl7YS51dWlkPT09ZS51dWlkJiZ5ZS5lbWl0KGcuZy5CQURfUkVRVUVTVCx0LGksbil9KX0pfWVsc2UgZS5kZWJ1ZyYmZS5kZWJ1Zy5kZWJ1Z19pbmZvJiZaYShlLmRlYnVnLmRlYnVnX2luZm8pLGUudG9vbGtpdCYmZS50b29sa2l0LmVuYWJsZWQmJmVyKGUudGFncyksRyhlLnRhZ3MsZnVuY3Rpb24oZSl7aWYoZS5lcnJvcilHKGFwbnRhZy5yZXF1ZXN0cy50YWdzLGZ1bmN0aW9uKHQpe2lmKHQudXVpZD09PWUudXVpZCl7dmFyIG49XCJUaGVyZSB3YXMgYW4gZXhjZXB0aW9uIGZyb20gdGFyZ2V0SWQ6XCIrdC50YXJnZXRJZCtcIiB0aGlzIHVzdWFsbHkgbWVhbnMgdGhlcmUgaXMgYSBzZXR1cCBlcnJvciBvbiB0aGUgdGFnIChpbnZhbGlkIElEIGV0YylcIjtXKG4sZS5lcnJvcik7dmFyIGE9SXQobix0LnRhcmdldElkLHZvaWQgMCwyMDApO3llLmVtaXQoZy5nLkJBRF9SRVFVRVNULHQudGFyZ2V0SWQsYSl9fSk7ZWxzZXtpZihlLmFkcyYmZS5hZHMubGVuZ3RoJiZlLmFkc1swXS5hZF90eXBlPT09X3IpaWYoIWZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49dm9pZCAwO0coc2EsZnVuY3Rpb24odCl7dC51dWlkPT09ZS51dWlkJiYobj10KX0pLG4mJih0PW4ubmF0aXZlKTt2YXIgYT1bXTtHKHQsZnVuY3Rpb24oZSx0KXshMD09PWUucmVxdWlyZWQmJmEucHVzaCh0KX0pO3ZhciByPWJ0KGUpLGk9W107RyhyLm5hdGl2ZSxmdW5jdGlvbihlLHQpe0IoZSl8fGkucHVzaCh0KX0pO3ZhciBvPWkubGVuZ3RoPjA7cmV0dXJuIEcoYSxmdW5jdGlvbihlKXtvPW8mJmkuaW5kZXhPZihlKT4tMX0pLG99KGUpKXJldHVybiB2b2lkIFcoXCJyZXF1aXJlZCBuYXRpdmUgYXNzZXRzIG1pc3NpbmcgZnJvbSByZXNwb25zZVwiKTt2YXIgdD1lLmFkcyxhPVNlKHQpLHI9ZS5ydGJfdmlkZW9fZmFsbGJhY2s7RyhhcG50YWcucmVxdWVzdHMudGFncyxhfHxyP2Z1bmN0aW9uKHIsaSl7aWYoci51dWlkPT09ZS51dWlkKXtyLnV0Q2FsbGVkPSEwLGE/ci5pc01lZGlhdGVkPSEwOnIuaXNSdGJWaWRlb0ZhbGxiYWNrPSEwO3ZhciBvPUFlKHQpLHM9TmUoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZSk7aWYobz09PVRyKXIuaXNWaWRlb01lZGlhdGlvbj0hMCxuPWJ0KGUpLHllLmVtaXQoZy5nLkFWQUlMQUJMRSxpLG4pLFJlKG8sZSxzLHhyKTtlbHNle3IuaXNCYW5uZXJNZWRpYXRpb249ITA7dmFyIGQ9T2Uoci50YXJnZXRJZCxlKTtlLmFkPXthZF90eXBlOkVyfSxyLmFkPXttZWRpYXRlZENvbnRlbnQ6ZH0sU3IocixlLGkpfX19OmZ1bmN0aW9uKHQsbil7U3IodCxlLG4pfSl9fSksYXBudGFnLnJlcXVlc3RzLmNoZWNrRGlzcGxheSYmbWUoKX12YXIgUnI9MSxOcj12b2lkIDAsRHI9dm9pZCAwLENyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dCxhPXZvaWQgMDtmdW5jdGlvbiByKGUpe3ZhciB0PXt1c19wcml2YWN5OmU/ZS51c3BTdHJpbmc6dm9pZCAwfTtEci51c19wcml2YWN5PXQudXNfcHJpdmFjeX1mdW5jdGlvbiBpKGUpe2NsZWFyVGltZW91dChhKSxyKCksZmUobyhlKSl9ZnVuY3Rpb24gbyhlKXtlJiZ6KGUrXCIgUmVzdW1pbmcgcmVxdWVzdCB3aXRob3V0IENDUEEgVVNQIGNvbnNlbnQgaW5mb3JtYXRpb24uXCIpLG4oKX1pZigoRHI9ZSkuY29uc2VudE1hbmFnZW1lbnQmJihEci5jb25zZW50TWFuYWdlbWVudC5kaXNhYmxlZHx8RHIuY29uc2VudE1hbmFnZW1lbnQudXNwJiZEci5jb25zZW50TWFuYWdlbWVudC51c3AuZGlzYWJsZWQpKXJldHVybiBmZShvKCkpO3ZhciBzPTFlNDtpZihEci5jb25zZW50TWFuYWdlbWVudCYmUChEci5jb25zZW50TWFuYWdlbWVudC50aW1lb3V0KSYmKHM9RHIuY29uc2VudE1hbmFnZW1lbnQudGltZW91dCksTnIpcmV0dXJuIHIoTnIpLGZlKG8oKSk7YT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aShcIkNDUEEgVVNQIENNUCB3b3JrZmxvdyBleGNlZWRlZCB0aW1lb3V0IHRocmVzaG9sZC5cIil9LHMpLGZ1bmN0aW9uKGUsdCl7dmFyIG49e30sYT12b2lkIDA7dHJ5e2E9d2luZG93Ll9fdXNwYXBpfHx3aW5kb3cudG9wLl9fdXNwYXBpfWNhdGNoKGUpe31pZihxKGEpKWEoXCJnZXRVU1BEYXRhXCIsUnIsZSk7ZWxzZXtmb3IodmFyIHI9d2luZG93LGk9dm9pZCAwOyFpOyl7dHJ5e3IuZnJhbWVzLl9fdXNwYXBpTG9jYXRvciYmKGk9cil9Y2F0Y2goZSl7fWlmKHI9PT13aW5kb3cudG9wKWJyZWFrO3I9ci5wYXJlbnR9aWYoIWkpcmV0dXJuIHQoXCJDQ1BBIFVTUCBDTVAgbm90IGZvdW5kLlwiKTshZnVuY3Rpb24odCl7ZnVuY3Rpb24gYShlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZS5kYXRhJiZlLmRhdGEuaW5jbHVkZXMoXCJ1c3BhcGlSZXR1cm5cIik/SlNPTi5wYXJzZShlLmRhdGEpOmUuZGF0YTtpZih0Ll9fdXNwYXBpUmV0dXJuKXt2YXIgYT10Ll9fdXNwYXBpUmV0dXJuO25bYS5jYWxsSWRdKGEucmV0dXJuVmFsdWUsYS5zdWNjZXNzKSxkZWxldGUgblthLmNhbGxJZF19fXdpbmRvdy5fX3VzcGFwaT1mdW5jdGlvbihlLGEscil7dmFyIGk9XCJcIitNYXRoLnJhbmRvbSgpLG89e19fdXNwYXBpQ2FsbDp7Y29tbWFuZDplLHZlcnNpb246YSxjYWxsSWQ6aX19O25baV09cix0LnBvc3RNZXNzYWdlKG8sXCIqXCIpfSxSKHdpbmRvdyxcIm1lc3NhZ2VcIixhLCExKSx3aW5kb3cuX191c3BhcGkoXCJnZXRVU1BEYXRhXCIsUnIsZnVuY3Rpb24odCl7Tih3aW5kb3csXCJtZXNzYWdlXCIsYSwhMSksZSh0KX0pfShpKX19KGZ1bmN0aW9uKGUpe1wib2JqZWN0XCIhPXR5cGVvZiBlfHxcInN0cmluZ1wiIT10eXBlb2YgZS51c3BTdHJpbmd8fFwiXCI9PT1lLnVzcFN0cmluZz9pKFwiQ0NQQSBVU1AgQ01QIHJldHVybmVkIHVuZXhwZWN0ZWQgY29uc2VudE9iamVjdCBkdXJpbmcgbG9va3VwIHByb2Nlc3M7IHJldHVybmVkIHZhbHVlIHdhcyAoXCIrZStcIilcIik6KGNsZWFyVGltZW91dChhKSxyKE5yPWUpLGZlKG8oKSkpfSxpKX07ZnVuY3Rpb24gcXIoZSx0LG4sYSxyKXtHKGlhW3RdLGZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlLHQsbixhLHIpezA9PT1uJiYoZT1cIkZhaWx1cmUgdG8gY29udGFjdCBlbmRwb2ludC4gVGhpcyBjYW4gYmUgY2F1c2VkIGJ5IGludmFsaWQgQ09SUyBoZWFkZXJzIG9yIGZhaWx1cmUgb2Ygc2VydmVyIHRvIHJlc3BvbmQuXCIpO3ZhciBpPWFwbnRhZy5yZXF1ZXN0cy50YWdzW3RdLG89dm9pZCAwO2kmJihvPWJ0KGkuYWRSZXNwb25zZSkpO3ZhciBzPUl0KGUsdCxyLG4pO3llLmVtaXQoYSx0LHMsbyl9KGUsdCxuLGEscil9KX12YXIgT3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj1jYSxhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnVybCsoZS51cmwuaW5kZXhPZihcIj9cIikrMT9cIiZcIjpcIj9cIikrXCJjYj1hcG50YWcuaGFuZGxlQ2ImcT1cIitlbmNvZGVVUkkoZS5kYXRhKX0oZSkscj1IKG4sYSk7YXBudGFnLnJlcXVlc3RzLnV0Q2FsbGVkPSEwLHIub25sb2FkPWZ1bmN0aW9uKCl7TChcIkpTT05QIGZhbGxiYWNrIHVzZWQgaW5zdGVhZCBvZiBQT1NULlwiKX0sci5vbmVycm9yPWZ1bmN0aW9uKG4pe2lmKCFhcG50YWcucmVxdWVzdHMuZXJyb3JSZXBvcnRlZCl7dmFyIGE9XCJVbmtub3duIHNjcmlwdCBlcnJvciBjb250YWN0aW5nIGVuZHBvaW50IG92ZXIgSlNPTlAuIEVuZHBvaW50OiBcIitlLnVybDtxcihhLHQsXCItMVwiLGcuZy5SRVFVRVNUX0ZBSUwsbiksVyhhKX19LHIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKG4pe2lmKCEoXCJsb2FkZWRcIiE9PXIucmVhZHlTdGF0ZSYmXCJjb21wbGV0ZVwiIT09ci5yZWFkeVN0YXRlfHxhcG50YWcucmVxdWVzdHMuY2JDYWxsZWR8fGFwbnRhZy5yZXF1ZXN0cy5lcnJvclJlcG9ydGVkKSl7YXBudGFnLnJlcXVlc3RzLmVycm9yUmVwb3J0ZWQ9ITA7dmFyIGE9XCJVbmtub3duIG5ldHdvcmsgZXJyb3IgY29udGFjdGluZyBlbmRwb2ludCBvdmVyIEpTT05QLiBFbmRwb2ludDogXCIrZS51cmw7cXIoYSx0LFwiLTFcIixnLmcuUkVRVUVTVF9GQUlMLG4pLFcoYSl9fX0sTXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRhdGEsYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO2lmKDIwMD09PWEuc3RhdHVzKXRyeXtlPUpTT04ucGFyc2UoYS5yZXNwb25zZVRleHQpLGFwbnRhZy5oYW5kbGVDYihlLG4pfWNhdGNoKGUpe1coXCJmYWlsZWQgdG8gcGFyc2UgYWQgcmVzcG9uc2UgZnJvbSBpbXBidXM6IFwiK2UubWVzc2FnZSkscXIoZS5tZXNzYWdlLHQsYS5zdGF0dXMsZy5nLlJFUVVFU1RfRkFJTCxlKX1lbHNlIFcoYS5zdGF0dXMrXCIgOiBcIithLnN0YXR1c1RleHQpLHFyKGEuc3RhdHVzVGV4dCx0LGEuc3RhdHVzLGcuZy5SRVFVRVNUX0ZBSUwpfSxhLm9uZXJyb3I9ZnVuY3Rpb24obil7dmFyIGE9bi50YXJnZXQuc3RhdHVzO3FyKFwiRXJyb3IgY29udGFjdGluZyBpbXBidXMgZW5kcG9pbnQ6IFwiK2UudXJsK1wiIGh0dHAgcmVzcG9uc2UgY29kZTpcIithLHQsYSxnLmcuUkVRVUVTVF9GQUlMKX0sYS5vcGVuKFwiUE9TVFwiLGUudXJsLCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIixcInRleHQvcGxhaW5cIiksYS53aXRoQ3JlZGVudGlhbHM9IWxhO3RyeXthLnNlbmQobiksYXBudGFnLnJlcXVlc3RzLnV0Q2FsbGVkPSEwfWNhdGNoKG4pe1coXCJFcnJvciBtYWtpbmcgUE9TVCByZXF1ZXN0OiBcIituKSxPcihlLHQpfX0sUHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj17fSxhPSh0PSExLEcoYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24oZSl7ZS5wcmViaWQmJih0PSEwKX0pLHQ/cGErZy5mLlVUX1BSRUJJRDpwYStnLmYuVVRfQkFTRSk7cmV0dXJuIG4udXJsPWEsbi5kYXRhPUpTT04uc3RyaW5naWZ5KGUpLG59LEJyPWZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKGUpe0coYXBudGFnLnJlcXVlc3RzLnRhZ3MsZnVuY3Rpb24oZSl7ZS51dENhbGxlZHx8eWUuZW1pdChnLmcuUkVRVUVTVCxlLnRhcmdldElkKX0pLGooXCJBZCBpcyByZXF1ZXN0ZWQgZm9yIG1lbWJlciBcIitlKX0oZSk7dmFyIG49aXQoYXBudGFnLnJlcXVlc3RzLGUsc2EsdCk7bj1mdW5jdGlvbihlKXtpZihpZSgpLmNvbnRleHQmJlwiQU1QLUFEXCI9PT1pZSgpLmNvbnRleHQudGFnTmFtZSl7ZS5pc19hbXA9ITA7dmFyIHQ9aWUoKS5jb250ZXh0LmNvbnNlbnRTaGFyZWREYXRhO2lmKHQpe3ZhciBuPXtjb25zZW50X3N0cmluZzp0LmNvbnNlbnRTdHJpbmcsY29uc2VudF9yZXF1aXJlZDp0LmNvbnNlbnRSZXF1aXJlZH07ZS5nZHByX2NvbnNlbnQ9bn19cmV0dXJuIGV9KG4pO3ZhciBhPVByKG4pO0Iobi50YWdzKT96KFwiYXN0LmxvYWRUYWdzQnlNZW1iZXJJZDogbm8gZGVmaW5lZCB0YWdzIGF0IHRoaXMgcG9pbnQgc28gbm8gL1VUIHJlcXVlc3Qgd2lsbCBiZSBtYWRlXCIpOlwid2l0aENyZWRlbnRpYWxzXCJpbiBuZXcgWE1MSHR0cFJlcXVlc3Q/TXIoYSxlKTpPcihhLGUpfSxVcj1mdW5jdGlvbihlKXtHKGlhLGZ1bmN0aW9uKHQsbil7aWYoXCJub25lXCI9PT1uKUJyKG4sZSk7ZWxzZXt2YXIgYT1OdW1iZXIobik7aXNOYU4oYSk/VyhcIkludmFsaWQgdmFsdWUgZm9yIG1lbWJlclwiKTpCcihhLGUpfX0pfSxGcj1mdW5jdGlvbihlKXtlPWV8fG5lKGFwbnRhZy5yZXF1ZXN0cy50YWdzLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldElkfSksTShlKXx8KGU9W2VdKTt2YXIgdD0hMSxuPSExO19hKGFwbnRhZy5yZXF1ZXN0cyxmdW5jdGlvbigpe3Q9ITAsbiYmVXIoZSl9KSxDcihhcG50YWcucmVxdWVzdHMsZnVuY3Rpb24oKXtuPSEwLHQmJlVyKGUpfSl9O2Z1bmN0aW9uIExyKGUpe2lmKEwoXCJnZXRUYWcgY2FsbGVkIGZvciB0YWcgXCIrZSksZ2UoZSkpcmV0dXJuIGUmJm9hW2VdP29hW2VdOnZvaWQgMDtXKFwidGhlIFwiK2UrXCIgdGFnIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKX12YXIgenI9ZnVuY3Rpb24oZSl7YXBudGFnLnJlcXVlc3RzLnV0Q2FsbGVkPSExLGFwbnRhZy5yZXF1ZXN0cy5oYXNMZWZ0PSExLGFwbnRhZy5yZXF1ZXN0cy5jYkNhbGxlZD0hMSxhcG50YWcucmVxdWVzdHMuZXJyb3JSZXBvcnRlZD0hMTt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gMD09PWUubGVuZ3RoP2FwbnRhZy5yZXF1ZXN0cy50YWdzOihHKGFwbnRhZy5yZXF1ZXN0cy50YWdzLGZ1bmN0aW9uKG4sYSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspZVtyXT09PWEmJih0W2FdPW4pfSksdCl9KGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBNKGUpP3Q9ZTpPKGUpJiZ0LnB1c2goZSksdH0oZSkpO0codCxmdW5jdGlvbihlLHQpe0cocmEsZnVuY3Rpb24oZSl7aWYodD09PWUpe3ZhciBuPWNhLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO2lmKCFuKXJldHVybjtmb3IoO24uaGFzQ2hpbGROb2RlcygpOyluLnJlbW92ZUNoaWxkKG4uZmlyc3RDaGlsZCl9fSl9KSxHKHQsZnVuY3Rpb24oZSl7ZS51dENhbGxlZD0hMSxlLmRpc3BsYXllZD0hMSxlLmlzTWVkaWF0ZWQ9ITEsZS5pc0Jhbm5lck1lZGlhdGlvbj0hMSxlLmlzVmlkZW9NZWRpYXRpb249ITEsZS5hZD17fX0pO3RyeXtGcigpfWNhdGNoKGUpe1coXCJyZWZyZXNoVGFncyBcIitlLm1lc3NhZ2UpfX07dmFyIFdyPWcuYi5OQVRJVkUsanI9Zy5iLlZJREVPLFZyPWcubC5VTkRFRklORUQsSHI9Zy5sLk5VTUJFUixYcj1nLmEuTk9BRDtSKGNhLFwibWVzc2FnZVwiLGZ1bmN0aW9uKGUpe2lmKGUub3JpZ2luPT09Y2UoKSYmXCJzdHJpbmdcIj09dHlwZW9mIGUuZGF0YSl7VihcIkRhdGEgc2VudCBmcm9tIGNyZWF0aXZlXCIsZS5kYXRhKTt2YXIgdD12b2lkIDA7dHJ5e3Q9SlNPTi5wYXJzZShlLmRhdGEpfWNhdGNoKHQpe3JldHVybiB2b2lkKFwibm9iaWRcIj09PWUuZGF0YT9MKFwiTm8gYmlkIHJlc3BvbnNlIHJldHVybmVkXCIpOlcoXCJJbnZhbGlkIGRhdGEgZnJvbSBjcmVhdGl2ZTogXCIrZS5kYXRhKSl9aWYodGUodCxcImV2ZW50VHlwZVwiKSlcImFkRXJyb3JcIj09PXQuZXZlbnRUeXBlJiZ3aW5kb3cuYXBudGFnLnJlY29yZEVycm9yRXZlbnQodC5leGNlcHRpb24sdC50YXJnZXRJZCk7ZWxzZSBzd2l0Y2godC5uYW1lKXtjYXNlXCJleHBhbmRcIjpSYSh0KTticmVhaztjYXNlXCJjb2xsYXBzZVwiOiFmdW5jdGlvbihlKXtMKFwiQ29sbGFwc2UgaWZyYW1lIHN0YXJ0ZWQgYnkgaG9zdFwiKTt2YXIgdD1pZSgpLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcubS5VVF9ESVYrZS50YXJnZXRJZCkuc3R5bGUsbj1UdC5nZXRJbnN0YW5jZSgpLmdldElmcmFtZShlLnRhcmdldElkKSxhPW4uaWZyYW1lLnN0eWxlLHI9bi5vcmlnaW5hbFdpZHRoLGk9bi5vcmlnaW5hbEhlaWdodDtlLmV4dCYmKDA9PT1lLmV4dC53aWR0aCYmKHI9MCksMD09PWUuZXh0LmhlaWdodCYmKGk9MCkpLGEubGVmdD1cIlwiLGEudG9wPVwiMHB4XCIsdC53aWR0aD1yK1wicHhcIixhLndpZHRoPXIrXCJweFwiLHQuaGVpZ2h0PWkrXCJweFwiLGEuaGVpZ2h0PWkrXCJweFwiLGEuekluZGV4PVwiXCI7dmFyIG89bi5pZnJhbWUuY29udGVudFdpbmRvdyxzPXt9O3MudGFyZ2V0SWQ9ZS50YXJnZXRJZCxzLmdlb209TmEoZS50YXJnZXRJZCxuLmlmcmFtZSkscy5zdGF0dXM9Zy5vLlNUQVRVUy5OT1RJRllfQ09MTEFQU0VELHphKG8sSlNPTi5zdHJpbmdpZnkocyksY2UoKSl9KHQpO2JyZWFrO2Nhc2VcImNtcFwiOiFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9YXBudGFnLnJlcXVlc3RzLmdkcHJfY29uc2VudCxuPVR0LmdldEluc3RhbmNlKCkuZ2V0SWZyYW1lKGUudGFyZ2V0SWQpLmlmcmFtZS5jb250ZW50V2luZG93LGE9e3RhcmdldElkOmUudGFyZ2V0SWQsZ2Rwcl9jb25zZW50OnQsc3RhdHVzOmcuby5TVEFUVVMuQ01QfTt6YShuLGEsY2UoKSl9YXBudGFnLnJlcXVlc3RzLmdkcHJfY29uc2VudD90KCk6X2EoYXBudGFnLnJlcXVlc3RzLHQpfSh0KTticmVhaztjYXNlXCJyZXNpemVBZFwiOmFwbnRhZy5yZXNpemVBZCh0LnRhcmdldElkLHQuY21kKTticmVhaztjYXNlXCJtZWRpYXRlZE5hdGl2ZVwiOmFwbnRhZy5oYW5kbGVNZWRpYXRpb25CaWQodC50YXJnZXRJZCx0LmNvbnRlbnQpO2JyZWFrO2Nhc2VcImVtaXRFdmVudFwiOmFwbnRhZy5lbWl0RXZlbnQuYXBwbHkobnVsbCx0LmNtZCk7YnJlYWs7Y2FzZVwibWVzc2FnZVwiOmJyZWFrO2Nhc2VcInVwZGF0ZVJlbmRlclN0YXR1c1wiOldhLnNldFJlbmRlcmVyU3RhdHVzKHQucklkK1wiX1wiK3QudGFyZ2V0SWQsdC5zdGF0dXMpO2JyZWFrO2Nhc2VcInNldFBhcmVudERpdlN0eWxlRGVmYXVsdFByb3BcIjp2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChnLm0uVVRfRElWK3QudGFyZ2V0SWQpO0codC5jbWQsZnVuY3Rpb24oZSx0KXtcIlwiPT09bi5zdHlsZVt0XSYmKG4uc3R5bGVbdF09ZSl9KX19fSksZGEuZXhwYW5zaW9uQnlQdXNoPSExLGRhLmV4cGFuc2lvbkJ5T3ZlcmxheT0hMCxkYS5yZWFkQ29va2llPSExLGRhLndyaXRlQ29va2llPSExLGRhLnNhbmRib3g9ITEsZnVuY3Rpb24oKXtpZigvKGlQaG9uZSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXRyeXtSKG5hLmRvY3VtZW50LFwiYXBudGFnX2lUdW5lc0xhdW5jaFwiLGFhKX1jYXRjaChlKXt9fSgpO3RyeXtjb25zb2xlLmluZm8/Y29uc29sZS5pbmZvKFwiQVNUIGxpYnJhcnkgbG9hZGVkOiAwLjMxLjBcIik6Y29uc29sZS5sb2coXCJBU1QgbGlicmFyeSBsb2FkZWQ6IDAuMzEuMFwiKX1jYXRjaChlKXt9Y2EuYXBudGFnPXR5cGVvZiBjYS5hcG50YWchPT1Wcj9jYS5hcG50YWc6e307dmFyIEpyPWNhLmFwbnRhZztmdW5jdGlvbiBHcihlKXt2YXIgdD17fTtyZXR1cm4gRyhKci5yZXF1ZXN0cy50YWdzLGZ1bmN0aW9uKG4pe2UhPT1uLnV1aWQmJmUhPT1uLnRhcmdldElkfHwodD1uKX0pLHR9SnIuYW5xPUpyLmFucXx8W10sSnIuZGVidWc9SnIuZGVidWd8fCExLEpyLmRvbmdsZT1Kci5kb25nbGV8fHZvaWQgMCxKci50ZXN0PUpyLnRlc3R8fCExLEpyLmxvYWRlZD0hMCxKci5yZXF1ZXN0cz1Kci5yZXF1ZXN0c3x8e30sSnIucmVxdWVzdHMua2V5d29yZHM9SnIucmVxdWVzdHMua2V5d29yZHN8fHt9LGhhKGcuZi5JTVBCVVMpLEpyLnJlcXVlc3RzLnRhZ3NPblBhZ2VDb3VudD1Kci5yZXF1ZXN0cy50YWdzT25QYWdlQ291bnR8fDAsSnIucmVxdWVzdHMud2FpdE9uVGFnc0NvdW50PUpyLnJlcXVlc3RzLndhaXRPblRhZ3NDb3VudHx8MCxKci5yZXF1ZXN0cy5zaG93VGFnRGVmaW5lZE1hcD1Kci5yZXF1ZXN0cy5zaG93VGFnRGVmaW5lZE1hcHx8dmEoKSxKci5oaWdobGlnaHRBZD1mdW5jdGlvbihlKXtpZihWKFwiSW52b2tpbmcgYXBudGFnLmhpZ2hsaWdodEFkXCIsYXJndW1lbnRzKSxlKXt2YXIgdD1tYSgpW2VdO3QmJih0LnN0eWxlLmJvcmRlcj1cIjNweCBzb2xpZCAjZTY3MzAwXCIpfX0sSnIuYW5xLnB1c2g9ZnVuY3Rpb24oZSl7ZS5jYWxsKCl9LEpyLnNldEVuZHBvaW50PWZ1bmN0aW9uKGUpe1YoXCJJbnZva2luZyBhcG50YWcuc2V0RW5kcG9pbnRcIixhcmd1bWVudHMpLGhhKGUpfSxKci5zZXRQYWdlT3B0cz1mdW5jdGlvbihlKXtWKFwiSW52b2tpbmcgYXBudGFnLnNldFBhZ2VPcHRzXCIsYXJndW1lbnRzKSxKYShlKX0sSnIuZGVmaW5lVGFnPWZ1bmN0aW9uKGUpe3JldHVybiBWKFwiSW52b2tpbmcgYXBudGFnLmRlZmluZVRhZ1wiLGFyZ3VtZW50cyksZnVuY3Rpb24oZSl7VihcIkludm9raW5nIGFwbnRhZy5kZWZpbmVUYWdcIixhcmd1bWVudHMpO3ZhciB0PVFhKGUpO2lmKHQpe2lmKHNhLnB1c2godCksb2FbdC50YXJnZXRJZF0pcmV0dXJuIG9hW3QudGFyZ2V0SWRdO3ZhciBuPXt0YXJnZXRJZDp0LnRhcmdldElkLG9uOnQub24sb2ZmOnQub2ZmLG1vZGlmeVRhZzp0Lm1vZGlmeVRhZyxzZXRLZXl3b3Jkczp0LnNldEtleXdvcmRzfTtyZXR1cm4gb2FbdC50YXJnZXRJZF09bixufVcoXCJObyBhZCB3aWxsIGJlIHJlcXVlc3RlZCBmb3IgdGFyZ2V0SWQ6IFwiK2UudGFyZ2V0SWQpfShlKX0sSnIuZ2V0VGFnPWZ1bmN0aW9uKGUpe2lmKCFlfHxnZShlKSl7dmFyIHQ9dm9pZCAwLG49dm9pZCAwO3JldHVybiBlPyhuPUxyKGUpLHQ9cGUoSnIucmVxdWVzdHMudGFnc1tlXSxuKSk6KHQ9e30sT2JqZWN0LmtleXMoSnIucmVxdWVzdHMudGFncykuZm9yRWFjaChmdW5jdGlvbihlKXtuPUxyKGUpLHRbZV09cGUoSnIucmVxdWVzdHMudGFnc1tlXSxuKX0pKSx0fVcoZStcIiBpcyBub3QgZGVmaW5lZC5cIixnLmouV0FSTil9LEpyLmdldEFkV3JhcD1mdW5jdGlvbihlKXtpZihWKFwiSW52b2tpbmcgYXBudGFnLmdldEFkV3JhcFwiLGFyZ3VtZW50cyksZ2UoZSkpcmV0dXJuIGUmJkpyLnJlcXVlc3RzLnRhZ3MmJkpyLnJlcXVlc3RzLnRhZ3NbZV0mJkpyLnJlcXVlc3RzLnRhZ3NbZV0uYWRXcmFwP0pyLnJlcXVlc3RzLnRhZ3NbZV0uYWRXcmFwOnZvaWQgMDtXKFwidGhlIFwiK2UrXCIgdGFnIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKX0sSnIuc2V0U2l6ZXM9ZnVuY3Rpb24oZSx0KXtWKFwiSW52b2tpbmcgYXBudGFnLnNldFNpemVzXCIsYXJndW1lbnRzKSxhcmd1bWVudHMubGVuZ3RoPDImJih0PWUsZT10aGlzLnRhcmdldElkKSxnZShlKT9Kci5yZXF1ZXN0cy50YWdzW2VdLnNpemVzPXQ6VyhcInRoZSBcIitlK1wiIHRhZyBpcyBub3QgZGVmaW5lZC5cIixnLmouV0FSTil9LEpyLm1vZGlmeVRhZz1mdW5jdGlvbihlLHQpe1YoXCJJbnZva2luZyBhcG50YWcubW9kaWZ5VGFnXCIsYXJndW1lbnRzKTt2YXIgbj17fTthcmd1bWVudHMubGVuZ3RoPDImJih0PWUsZT10aGlzLnRhcmdldElkKSxnZShlKT8oKHQuc2l6ZXN8fHQuc2l6ZU1hcHBpbmcpJiYkYSh0LGUpLEcoSnIucmVxdWVzdHMudGFnc1tlXSxmdW5jdGlvbihlLHQpe25bdF09ZX0pLEcodCxmdW5jdGlvbihlLHQpe25bdF09ZX0pLEpyLnJlcXVlc3RzLnRhZ3NbZV09bik6VyhcInRoZSBcIitlK1wiIHRhZyBpcyBub3QgZGVmaW5lZC5cIixnLmouV0FSTil9LEpyLnNldEtleXdvcmRzPWZ1bmN0aW9uKGUsdCxuKXtWKFwiSW52b2tpbmcgYXBudGFnLnNldEtleXdvcmRzXCIsYXJndW1lbnRzKTt2YXIgYT17fTtcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQ/Z2UoZSk/KEcoSnIucmVxdWVzdHMudGFnc1tlXSxmdW5jdGlvbihlLHQpe2FbdF09ZX0pLGEua2V5d29yZHM9YS5rZXl3b3Jkc3x8e30sXCJvYmplY3RcIj09dHlwZW9mIG4mJm51bGwhPT1uJiYhMD09PW4ub3ZlcnJpZGVLZXlWYWx1ZT9HKHQsZnVuY3Rpb24oZSx0KXthLmtleXdvcmRzW3RdPWV9KTpHKHQsZnVuY3Rpb24oZSx0KXt0ZShhLmtleXdvcmRzLHQpP00oYS5rZXl3b3Jkc1t0XSk/YS5rZXl3b3Jkc1t0XT1hLmtleXdvcmRzW3RdLmNvbmNhdChlKTphLmtleXdvcmRzW3RdPVthLmtleXdvcmRzW3RdXS5jb25jYXQoZSk6YS5rZXl3b3Jkc1t0XT1lfSksSnIucmVxdWVzdHMudGFnc1tlXT1hKTpXKFwidGhlIFwiK2UrXCIgdGFnIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKTp6KFwidW5hYmxlIHRvIHNldCBrZXl3b3JkcyBpdCBzaG91bGQgYmUgYW4gb2JqZWN0XCIpfSxKci5vbkV2ZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihWKFwiSW52b2tpbmcgYXBudGFnLm9uRXZlbnRcIixhcmd1bWVudHMpLDI9PT1hcmd1bWVudHMubGVuZ3RoJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0eXBlb2YgdGhpcy50YXJnZXRJZD09PVZyKW49dCx0PVwiKlwiO2Vsc2UgaWYoYXJndW1lbnRzLmxlbmd0aDwzJiYobj10LHQ9dGhpcy50YXJnZXRJZCwhZ2UodCkpKXJldHVybiB2b2lkIFcoXCJ0aGUgXCIrdCtcIiB0YWcgaXMgbm90IGRlZmluZWQuXCIsZy5qLldBUk4pO3llLm9uKGUsdCxuKX0sSnIub2ZmRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKFYoXCJJbnZva2luZyBhcG50YWcub2ZmRXZlbnRcIixhcmd1bWVudHMpLDE9PT1hcmd1bWVudHMubGVuZ3RoJiZ0eXBlb2YgdGhpcy50YXJnZXRJZD09PVZyKXQ9XCIqXCI7ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoPDImJih0PXRoaXMudGFyZ2V0SWQsIWdlKHQpKSlyZXR1cm4gdm9pZCBXKFwidGhlIFwiK3QrXCIgdGFnIGlzIG5vdCBkZWZpbmVkLlwiLGcuai5XQVJOKTtpZihNKGUpKWZvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKXllLm9mZihlW2FdLHQsbik7ZWxzZSB5ZS5vZmYoZSx0LG4pfSxKci5sb2FkVGFncz1mdW5jdGlvbihlKXtWKFwiSW52b2tpbmcgYXBudGFnLmxvYWRUYWdzXCIsYXJndW1lbnRzKSxGcihlKX0sSnIucmVmcmVzaD1mdW5jdGlvbihlKXtWKFwiSW52b2tpbmcgYXBudGFnLnJlZnJlc2hcIixhcmd1bWVudHMpLHpyKGUpfSxKci5yZXNpemVBZD1mdW5jdGlvbihlLHQpe1YoXCJJbnZva2luZyBhcG50YWcucmVzaXplQWRcIixhcmd1bWVudHMpLGZ1bmN0aW9uKGUsdCl7dmFyIG49MCxhPTA7TSh0KSYmMj09PXQubGVuZ3RoPyhhPXRbMF0sbj10WzFdKTpXKFwicmVzaXplQWQgbXVzdCBiZSBpbnZva2VkIHdpdGggYSAodGFyZ2V0SWQsW3dpZHRoLCBoZWlnaHRdKVwiKTt2YXIgcj1tYSgpW2VdO2lmKHIpe3ZhciBpPUxyKGUpLG89dWUoaSkscz1jYS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvKTtpZihzKXtzLnN0eWxlLmhlaWdodD1uLHMuc3R5bGUud2lkdGg9YSxyLmhlaWdodD1uK1wicHhcIixyLndpZHRoPWErXCJweFwiLHIuaGVpZ2h0PW4sci53aWR0aD1hO3ZhciBkPWFwbnRhZy5yZXF1ZXN0cy50YWdzW2VdO2lmKGQmJiFkLmVuYWJsZVNhZmVGcmFtZSYmKFwibm9uZVwiIT09cy5zdHlsZS5kaXNwbGF5JiYwPT09biYmMD09PWE/KGQuc3R5bGVEaXNwbGF5PXMuc3R5bGUuZGlzcGxheSxzLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpOlwibm9uZVwiPT09cy5zdHlsZS5kaXNwbGF5JiYwIT09biYmMCE9PWEmJihzLnN0eWxlLmRpc3BsYXk9ZC5zdHlsZURpc3BsYXl8fFwiaW5saW5lXCIpKSxMKFwiUmVzaXplQWQgc3VjY2Vzc2Z1bCBmb3IgdGFyZ2V0SWQ6IFwiK2UpLGQmJmQuaXNNZWRpYXRlZCYmci5jb250ZW50V2luZG93KXt2YXIgdT1pZSgpLGM9dS5sb2NhdGlvbi5wcm90b2NvbCtcIi8vXCIrdS5sb2NhdGlvbi5ob3N0LGw9e25hbWU6XCJyZXNpemVBZFwiLHNpemU6W2Esbl19O3IuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShsKSxjKX19ZWxzZSBXKFwiRmFpbGVkIHRvIGZpbmQgdGFyZ2V0IGZvciByZXNpemVBZDogXCIrZSl9ZWxzZSBXKFwiRmFpbGVkIHRvIGZpbmQgdGFyZ2V0IGZvciByZXNpemVBZCA6IFwiK2UpfShlLHQpfSxKci5lbmFibGVDb29raWVTZXQ9ZnVuY3Rpb24oKXt6KFwiYXBudGFnLmVuYWJsZUNvb2tpZVNldCBoYXMgYmVlbiBkZXByZWNpYXRlZFwiKSxmdW5jdGlvbihlKXtlJiZlLm92ZXJyaWRlJiYodT1lLm92ZXJyaWRlKSxlJiZlLmNvb2tpZVVybCYmKGM9ZS5jb29raWVVcmwpO3ZhciB0PXdpbmRvdy5hZGRFdmVudExpc3RlbmVyP1wiYWRkRXZlbnRMaXN0ZW5lclwiOlwiYXR0YWNoRXZlbnRcIixuPXdpbmRvd1t0XSxhPVwiYXR0YWNoRXZlbnRcIj09dD9cIm9ubG9hZFwiOlwibG9hZFwiO1wiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGV8fFwiaW50ZXJhY3RpdmVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/ZigpOm4oYSxmdW5jdGlvbihlKXtmKCl9LCExKX0oKX0sSnIuY29sbGFwc2VBZD1mdW5jdGlvbihlLHQsbil7VihcIkludm9raW5nIGFwbnRhZy5jb2xsYXBzZUFkXCIsYXJndW1lbnRzKSx6KFwiYXBudGFnLmNvbGxhcHNlQWQgaGFzIGJlZW4gZGVwcmVjaWF0ZWQsIFBsZWFzZSB1c2UgYXBudGFnLnJlc2l6ZUFkXCIpO3ZhciBhPTAscj0wLGk9THIoZSk7aWYoaSl7dmFyIG89dWUoaSk7dHlwZW9mIHQ9PT1IciYmKGE9dCksdHlwZW9mIG49PT1IciYmKHI9bik7dmFyIHM9Y2EuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobyk7aWYobnVsbCE9PXMpe0pyLnJlc2l6ZUFkKGUsW3IsYV0pLHMuc3R5bGUuaGVpZ2h0PWEscy5zdHlsZS53aWR0aD1yLHMuc3R5bGUuZGlzcGxheT1cIm5vbmVcIjt2YXIgZD1Kci5yZXF1ZXN0cy50YWdzW2VdLHU9YnQoZC5hZFJlc3BvbnNlKTt5ZS5lbWl0KGcuZy5DT0xMQVBTRSxlLHUpfWVsc2UgVyhcIkNvbGxhcHNlQWQgZmFpbGVkIHRvIGZpbmQgYWQgZGl2IDogXCIrZSl9ZWxzZSBXKFwiQ29sbGFwc2VBZCBmYWlsZWQgdG8gZmluZCB0YXJnZXRJZCA6IFwiK2UpfSxKci5zaG93VGFnPWZ1bmN0aW9uKGUsdCl7VihcIkludm9raW5nIGFwbnRhZy5zaG93VGFnXCIsYXJndW1lbnRzKSxmdW5jdGlvbihlLHQpe2lmKEwoXCJzaG93VGFnIGNhbGxlZCBmb3IgXCIrZSksdmEoKVtlXT0hMCxnZShlKSl7dmFyIG49YXBudGFnLnJlcXVlc3RzLnRhZ3NbZV07aWYobi5zaG93VGFnQ2FsbGVkPSEwLG4uY3VyV2luZG93PXQsbi5kaXNwbGF5ZWQpcmV0dXJuIHZvaWQgeihcIkF0dGVtcHRpbmcgdG8gZGlzcGxheSBhZCB0aGF0IGlzIGFscmVhZHkgZGlzcGxheWVkLCB3aWxsIG5vdCByZW5kZXIgdGhpcyBhZCBhZ2FpbjogXCIrZSk7aWYoYXBudGFnLnJlcXVlc3RzLnV0Q2FsbGVkKWlmKG4uYWRSZXNwb25zZSl7dmFyIGE9SXIobixkYSxtYSgpLHVhKTtyYS5wdXNoKGEpLGFwbnRhZy5yZXF1ZXN0cy5oYXNMZWZ0JiZtZSgpfWVsc2UgYXBudGFnLnJlcXVlc3RzLmNoZWNrRGlzcGxheT0hMDtlbHNlIHooZStcIiA6IHNob3dUYWcoKSBjYWxsZWQgYmVmb3JlIGFkIHJlcXVlc3Qgd2FzIG1hZGUuIFRoaXMgcGxhY2VtZW50IG1pZ2h0IG5vdCBkaXNwbGF5IGlmIGEgc3Vic2VxdWVudCBsb2FkVGFncygpIGNhbGwgaXMgbm90IG1hZGVcIil9ZWxzZSBMKFwidGhlIFwiK2UrXCIgdGFnIHdhcyBsb2FkZWQgYmVmb3JlIHRoZSBhZCBwbGFjZW1lbnQgd2FzIGF2YWlsYWJsZS5cIixnLmouV0FSTil9KGUsdD10fHxjYSl9LEpyLnNldFBhZ2VUYXJnZXRpbmc9ZnVuY3Rpb24oZSx0KXtWKFwiSW52b2tpbmcgYXBudGFnLnNldFBhZ2VUYXJnZXRpbmdcIixhcmd1bWVudHMpLEpyLnJlcXVlc3RzLnRhcmdldGluZ1BhcmFtcyYmZSYmdCYmKEpyLnJlcXVlc3RzLnRhcmdldGluZ1BhcmFtc1tlXT10KX0sSnIuZ2V0UGFnZVRhcmdldGluZz1mdW5jdGlvbihlKXtpZihWKFwiSW52b2tpbmcgYXBudGFnLmdldFBhZ2VUYXJnZXRpbmdcIixhcmd1bWVudHMpLEpyLnJlcXVlc3RzLnRhcmdldGluZ1BhcmFtcyYmZSlyZXR1cm4gSnIucmVxdWVzdHMudGFyZ2V0aW5nUGFyYW1zW2VdfSxKci5jbGVhclBhZ2VUYXJnZXRpbmc9ZnVuY3Rpb24oZSl7VihcIkludm9raW5nIGFwbnRhZy5jbGVhclBhZ2VUYXJnZXRpbmdcIixhcmd1bWVudHMpLEpyLnJlcXVlc3RzLnRhcmdldGluZ1BhcmFtcyYmZSYmZGVsZXRlIEpyLnJlcXVlc3RzLnRhcmdldGluZ1BhcmFtc1tlXX0sSnIuZW5hYmxlRGVidWc9ZnVuY3Rpb24oKXtKci5kZWJ1Zz0hMCxWKFwiSW52b2tpbmcgYXBudGFnLmVuYWJsZURlYnVnXCIsYXJndW1lbnRzKX0sSnIuZGlzYWJsZURlYnVnPWZ1bmN0aW9uKCl7VihcIkludm9raW5nIGFwbnRhZy5kaXNhYmxlRGVidWdcIixhcmd1bWVudHMpLEpyLmRlYnVnPSExfSxKci5ub3RpZnk9ZnVuY3Rpb24oZSx0LG4pe2U/V2EuaW52b2tlTm90aWZ5KGUsdCxuKTpXKFwiYXBudGFnLm5vdGlmeSBtdXN0IGJlIGNhbGxlZCB3aXRoIGBtZXNzYWdlVHlwZWBcIil9LEpyLnJlZ2lzdGVyUmVuZGVyZXI9ZnVuY3Rpb24oZSx0KXtWKFwiSW52b2tpbmcgYXBudGFnLnJlZ2lzdGVyUmVuZGVyZXJcIixhcmd1bWVudHMpLFdhLnJlZ2lzdGVyUmVuZGVyZXIoZSx0KX0sSnIuZ2V0QXN0VmVyc2lvbj1mdW5jdGlvbigpe3JldHVybiBWKFwiSW52b2tpbmcgYXBudGFnLmdldEFzdFZlcnNpb25cIiksXCIwLjMxLjBcIn0sSnIucmVjb3JkRXJyb3JFdmVudD1mdW5jdGlvbihlLHQpe1YoXCJJbnZva2luZyBhcG50YWcucmVjb3JkRXJyb3JFdmVudFwiLGFyZ3VtZW50cyk7dmFyIG49SnIucmVxdWVzdHMudGFnc1t0XSxhPWJ0KG4uYWRSZXNwb25zZSkscj1JdChlLm1lc3NhZ2UsdCxlLDIwMCk7eWUuZW1pdChnLmcuRVJST1IsdCxyLGEpfSxKci5jbGVhclJlcXVlc3Q9ZnVuY3Rpb24oKXtWKFwiSW52b2tpbmcgYXBudGFnLmNsZWFyUmVxdWVzdFwiLGFyZ3VtZW50cyksSnIucmVxdWVzdHM9e30sSnIucmVxdWVzdHMudGFncz17fSxnYT17fSxUdC5nZXRJbnN0YW5jZSgpLnJlc2V0SW5zdGFuY2UoKSxmdW5jdGlvbihlKXtmYT1lfSh7fSl9LEpyLmhhbmRsZUNiPWZ1bmN0aW9uKGUsdCl7VihcIkludm9raW5nIGFwbnRhZy5oYW5kbGVDYlwiLGFyZ3VtZW50cyk7dHJ5e0FyKGUsdCl9Y2F0Y2goZSl7dmFyIG49ZS5tZXNzYWdlP2UubWVzc2FnZTplO1coXCJJbnRlcm5hbCBBU1QgZXJyb3IgOiBcIixlKTtxcihuLHZvaWQgMCwyMDAsZy5nLkJBRF9SRVFVRVNULGUpfX0sSnIuZW1pdEV2ZW50PWZ1bmN0aW9uKGUsdCxuKXtuJiZuLmNvbnRlbnRfc291cmNlJiYhSnIucmVxdWVzdHMuZW5hYmxlTWVkaWF0aW9uRXZlbnRzfHwoVihcIkludm9raW5nIGFwbnRhZy5lbWl0RXZlbnRcIixhcmd1bWVudHMpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1HcihlKSxyPXd0KGEsZSxuKTtMKFwiaGFuZGxpbmcgZXZlbnQgZm9yIERPTSBJRDogIFwiK3IudGFyZ2V0SWQrXCIgZXZlbnRUeXBlIDogXCIrdCksKHQ9dD09PWcubi5MT0FERUQ/XCJhZExvYWRlZFwiOnQpPT09Zy5nLkxPQURFRHx8dD09PWcuZy5MT0FERURfTUVESUFURUR8fHQ9PT1nLmcuTk9fQklEX01FRElBVEVEP3llLmVtaXQodCxyLnRhcmdldElkLHIpOnllLmVtaXQodCxyLnRhcmdldElkKTt0PT09Zy5nLk5PX0JJRCYmYS5pc01lZGlhdGVkJiYoaT1hLmFkUmVzcG9uc2UsSih3aW5kb3cuZG9jdW1lbnQuYm9keSxpW1hyXSxpLnV1aWQpKTt2YXIgaX0oZSx0LG4pKX0sSnIuZ2V0QWRNYXJrdXA9ZnVuY3Rpb24oZSx0KXtpZihKci5yZXF1ZXN0cy50YWdzJiZKci5yZXF1ZXN0cy50YWdzW2VdKXt2YXIgbj1Kci5yZXF1ZXN0cy50YWdzW2VdO2lmKG4udXVpZD09PXQpcmV0dXJuIG4uYWRSZXNwb25zZS5hZHN9fSxKci5zZXRTYWZlRnJhbWVDb25maWc9ZnVuY3Rpb24oZSl7dGUoZSxcImFsbG93RXhwYW5zaW9uQnlQdXNoXCIpJiYoZGEuZXhwYW5zaW9uQnlQdXNoPWUuYWxsb3dFeHBhbnNpb25CeVB1c2gpLHRlKGUsXCJhbGxvd0V4cGFuc2lvbkJ5T3ZlcmxheVwiKSYmKGRhLmV4cGFuc2lvbkJ5T3ZlcmxheT1lLmFsbG93RXhwYW5zaW9uQnlPdmVybGF5KSx0ZShlLFwic2FuZGJveFwiKSYmKGRhLnNhbmRib3g9ZS5zYW5kYm94KSx0ZShlLFwibWV0YVwiKSYmKGRhLm1ldGE9ZS5tZXRhKX0sSnIuZmlyZUltcHJlc3Npb25UcmFja2Vycz1mdW5jdGlvbihlKXtpZighZS5pbXByZXNzaW9uVHJhY2tlcnNGaXJlZCl7ZS5pbXByZXNzaW9uVHJhY2tlcnNGaXJlZD0hMCxWKFwiRmlyaW5nIGltcHJlc3Npb24gdHJhY2tlcnMgZm9yXCIsZS50YWdJZCk7dmFyIHQ9ZS5uYXRpdmUmJmUubmF0aXZlLmltcHJlc3Npb25UcmFja2Vyczt0JiZ0Lmxlbmd0aCYmdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe0ooY2EuZG9jdW1lbnQuYm9keSxlKX0pO3ZhciBuPWUubmF0aXZlJiZlLm5hdGl2ZS5qYXZhc2NyaXB0VHJhY2tlcnM7biYmcHQoe3N0cmF0ZWd5OlwiV2l0aENvbnRlbnRcIixkYXRhOm59KX19LEpyLmF0dGFjaENsaWNrVHJhY2tlcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtuPyhWKFwiQXR0YWNoaW5nIGNsaWNrIHRyYWNrIGhhbmRsZXIgdG9cIix0KSxSKG4sXCJjbGlja1wiLGZ1bmN0aW9uKCl7dmFyIHQ9ZS5uYXRpdmUmJmUubmF0aXZlLmNsaWNrVHJhY2tlcnM7dCYmdC5sZW5ndGgmJihWKFwiRmlyaW5nIGNsaWNrIHRyYWNrZXJzIGZvclwiLGUudGFnSWQpLHQuZm9yRWFjaChmdW5jdGlvbihlKXtKKGNhLmRvY3VtZW50LmJvZHksZSl9KSl9KSk6VyhcIkhUTUwgZWxlbWVudCB3aXRoIGlkIFwiK3QrXCIgbm90IGZvdW5kLCBjbGljayB0cmFja2VycyBub3QgYXR0YWNoZWRcIil9LEpyLmNoZWNrQWRBdmFpbGFibGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWFwbnRhZy5yZXF1ZXN0cy50YWdzW2VdLG49dCYmdC5hZFJlc3BvbnNlLGE9dCYmdC51dENhbGxlZCYmIXQuc2hvd1RhZ0NhbGxlZCYmbiYmYnQobik7cmV0dXJuIGZ1bmN0aW9uKGUpe2EmJihuLm5vYmlkfHxlLnJlc29sdmUoYSksbi5ub2JpZCYmZS5yZWplY3QoKSl9fShlKX0sSnIuaGFuZGxlTWVkaWF0aW9uQmlkPWZ1bmN0aW9uKGUsdCl7dmFyIG49R3IoZSk7ZnVuY3Rpb24gYSgpe0pyLnJlc2l6ZUFkKGUsWzAsMF0pfWlmKHQucmVuZGVyZXJfdXJsKW4uZGlzcGxheWVkPSExLHQudGFyZ2V0SWQ9ZSx0LmFkX3R5cGU9PT1qciYmKGZ1bmN0aW9uKGUpe3RyeXt2YXIgdD1Kci5yZXF1ZXN0cy50YWdzW2VdLmFkUmVzcG9uc2UuYWRzLG49dFt0Lmxlbmd0aC0xXTtKci5yZXF1ZXN0cy50YWdzW2VdLmFkUmVzcG9uc2UuYWRzPVtuXX1jYXRjaChlKXtWKFwiVHJ5aW5nIHRvIHNldCBhZHJlc3BvbnNlIGZvciB2aWRlbyByZW5kZXJlclwiLGUpfX0obi50YXJnZXRJZCksbi5lbmFibGVTYWZlRnJhbWUmJmZ1bmN0aW9uKGUpe3ZhciB0PVR0LmdldEluc3RhbmNlKCkuZ2V0SWZyYW1lKGUpO3QmJnQuaWZyYW1lJiYodC5pZnJhbWUuYWxsb3c9XCJhdXRvcGxheVwiLHQuaWZyYW1lLnN0eWxlPVwib3ZlcmZsb3c6aGlkZGVuXCIpfShuLnRhcmdldElkKSksbi5lbmFibGVTYWZlRnJhbWU/ZnVuY3Rpb24oZSl7dmFyIHQ9VHQuZ2V0SW5zdGFuY2UoKS5nZXRJZnJhbWUoZS50YXJnZXRJZCkuaWZyYW1lLmNvbnRlbnRXaW5kb3c7ZGVsZXRlIGUuY3VyV2luZG93O3ZhciBuPXtzdGF0dXM6XCJuYXRpdmVBc3NlbWJseVwiLHRhcmdldElkOmUudGFyZ2V0SWR9O3phKHQsSlNPTi5zdHJpbmdpZnkobiksY2UoKSl9KG4pOldhLmxvYWRSZW5kZXJlcihuLHQpLGEoKTtlbHNle3ZhciByPWJ0KG4uYWRSZXNwb25zZSx0KTtyLmFkVHlwZT09PVdyJiZhKCkseWUuZW1pdChnLmcuTE9BREVELGUscil9fTtqKFwiQVNUIGxpYnJhcnkgbG9hZGVkXCIpLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxKci5hbnEubGVuZ3RoO2UrKyl0eXBlb2YgSnIuYW5xW2VdLmNhbGxlZD09PVZyJiYoSnIuYW5xW2VdLmNhbGwoKSxKci5hbnFbZV0uY2FsbGVkPSEwKX0oKSxKci5yZXF1ZXN0cy5jaGVja0Rpc3BsYXl8fGZ1bmN0aW9uKGUpe3ZhciB0PSExO2Z1bmN0aW9uIG4oKXt0fHwodD0hMCxlKCkpfWlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixuLCExKTtlbHNlIGlmKGRvY3VtZW50LmF0dGFjaEV2ZW50KXt2YXIgYT12b2lkIDA7dHJ5e2E9bnVsbCE9PXdpbmRvdy5mcmFtZUVsZW1lbnR9Y2F0Y2goZSl7fWlmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmIWEpe3ZhciByPWZ1bmN0aW9uKCl7aWYoIXQpdHJ5e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbChcImxlZnRcIiksbigpfWNhdGNoKGUpe3NldFRpbWVvdXQociwxMCl9fTtyKCl9ZG9jdW1lbnQuYXR0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixmdW5jdGlvbigpe1wiY29tcGxldGVcIj09PWRvY3VtZW50LnJlYWR5U3RhdGUmJm4oKX0pfWlmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLG4sITEpO2Vsc2UgaWYod2luZG93LmF0dGFjaEV2ZW50KXdpbmRvdy5hdHRhY2hFdmVudChcIm9ubG9hZFwiLG4pO2Vsc2V7dmFyIGk9d2luZG93Lm9ubG9hZDt3aW5kb3cub25sb2FkPWZ1bmN0aW9uKCl7aSYmaSgpLG4oKX19fShtZSksXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LmRlZmluZSYmd2luZG93LmRlZmluZS5hbWQmJndpbmRvdy5kZWZpbmUoXCJhcHBuZXh1c0FzdFwiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5hcG50YWd9KX1dKTsifSwgImhlYWRlcnNTaXplIjogMTA2NSwgImJvZHlTaXplIjogLTEwNjUsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAxLjExNH0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMDMzWiIsICJ0aW1lIjogODIwLjMzNCwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly93ZWJtYWlsLm5ldHplcm8ubmV0L2ltYWdlcy9oZWFkZXJzL2hkcl9sZ19uZXdfYWNjbF9uLmdpZj90cz0xNjg0OTQyODc4MDI5IiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogIndlYm1haWwubmV0emVyby5uZXQifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAidHMiLCAidmFsdWUiOiAiMTY4NDk0Mjg3ODAyOSJ9XSwgImhlYWRlcnNTaXplIjogNDMzLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibWF4LWFnZT0zMTUzNjAwMDAifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAiS2VlcC1BbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMzExMSJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogImltYWdlL2dpZiJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcImMyNy00NzQ2NjFjYjViODAwXCIifSwgeyJuYW1lIjogIkV4cGlyZXMiLCAidmFsdWUiOiAiU2F0LCAyMSBNYXkgMjAzMyAxNTo0MToxOCBHTVQifSwgeyJuYW1lIjogIktlZXAtQWxpdmUiLCAidmFsdWUiOiAidGltZW91dD02MCwgbWF4PTk1NyJ9LCB7Im5hbWUiOiAiTGFzdC1Nb2RpZmllZCIsICJ2YWx1ZSI6ICJGcmksIDI1IFNlcCAyMDA5IDEyOjMwOjI0IEdNVCJ9LCB7Im5hbWUiOiAiUDNQIiwgInZhbHVlIjogInBvbGljeXJlZj1cImh0dHA6Ly9teS5uZXR6ZXJvLm5ldC9jb21tb24vdzNjL25ldHplcm8ueG1sXCIsQ1A9XCJDQU8gRFNQIENVUmEgQURNYSBERVZhIFRBSWEgUFNBYSBQU0RhIE9VUiBCVVMgSU5EIFBIWSBPTkwgVU5JIEZJTiBDT00gTkFWIElOVCBERU0gUFJFIExPQ1wiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiQXBhY2hlIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDMxMTEsICJtaW1lVHlwZSI6ICJpbWFnZS9naWYiLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJSMGxHT0RsaDFRQWJBT1lBQU9neE1zV3Vyck1DQWdNREF5aE9rRkpTVTdtNXVZMTNlQ0VoSWFxbXByZDJlT3ZyN005UlU5L2c0ZnY4L05nUkVkdmMzTXpNekpBREE0ODNPTTh1TXJJeE0zaDRlTHlscHRQVDFIWUtERmNFQmF0ZFhwYVltR2xvYUlpSWlaTlRWTWlZbUxlVWxheVhsOFBEeE5QS3luQlJVUGIyOXZMeTh0N1YxY1ZoWW5BeU03MkZoZUxpNHVEWjJkM2U0SzhiSCtoRlJlWG01NWlKaWN2RHhGb2ZIK1BrNU9mbzZPUWNKSUZtWnFlRWhkTWNJdERSMGNqSnl0bloyZGJRMEY5ZVgwMWhnNUdSa2NxN3U4bEFRK1hpNDdPenMrY2pKS2VRa1pvL1FQRHY3ejA4UEwyOXZzM0h5STBhSFJzdVVGK2cvL1AyKys3djhHOXdjSUNBZ01mR3gvUHo4K3c3UFBINCtLR2dvSyt0cnUzeThweW9xT25wNmNEQXdNL096dGJXMTgzUHo2VjlmUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFBQUFBQUFMQUFBQUFEVkFCc0FBQWYvZ0ZDQ2c0U0Zob2VJaVlxTGpJMk9qNUNSa3BJTlBBWkZtRVVqRUk4T25wK2dvYUtqcEtXbXA2aXBxcXVzcmE2c0xFdGRHQmhnRWJjakNWa3VyNzIrdjhEQndzT3ZFUVk5WGdsSFJ5TE5XVjFMSEYyc1JhUThXRmtMdjExWTNkN2VDU2JFck1rSkNWZzlueVpVNXVZMXBTYkpCemc0QndsZUorUGpJMHRmeURNQlFBZ0VFWUpaa1NCWlZpRklNS3JEZ0FFN0hMamdjYXNpQkU4OUtGYXN1R09Ca29jZ1F4YkFxUEVXajRzT2RveFlPWUxIdTFGVmpCbUlVT1hVRVEwNE5TVDBWT1ZBVGcxTVNEVTRRT01uVGhvRzlBMkxVSVNIbHk4TmF0UUFvYUNxZ2pCWUUzaElDcytFMXdFSXVuZ2RhOEloZ2gxbEVhaGRxeVFKQkNWci8rTWlVSklBUWNpN0dMd1drSXVnd0FJVEgwSE9uWktFcklrRWV4LzJEV2VZcklnTWtETUVHSnNrVE9RTUpFNjBRSUdpeGQ4R0h5NkxabUlpaVF2T1BYcDAvdXQxQWVmWHNLTm9oZzJiU3hVaXFGTzNhRkM0c2RjR1dKYTBUQ0NpQnhjTUcxSnNXUDdodzRFZ0ZyNzRibXdYZ1JmRFp0RVd1UHZ3Q3hYdUlKVjA4V0NoZkhtN0F5eU1EUndTQVEvQTRLV2NHR3NCZlBycEprUkkyQzloc3RmSy9FbmdBMmdUVFBBQlRUa0VxT0FFTEpnd3d3ZElUTkJFRXhNZ0VjWU04d2xSSVJJY2NsamhEQzE4c0dHSEVRWUF3UVlSVGtqaEJ6a0l3WnBoV1p5RGhRd1RWQkRBRlRGc01FUUZIazZnQWc1VEJGRUZmbU9ocHdRRVpHVm53djhQaXNWMXlWcUNxU1ZGWXlNbzFzTjZUYTVsQUh4Z29mZlFsaWJVRjJWSTZ2a1dnZ0JvQ3VCZmFXR2tLWUFQTHJ5QTVnc3pFSUZFbWkva0VFQUFJV3dReGw4WHVPbm1DeUdZSUlTZ2JncUJncHlJQ25DQkY0M09xWUFMaGpYQVFSQXFOUEdDRGtPZzRNQVhtdzZ4SEJJcTBFQ0RGTkVSNlpXWEJkZ3dscEpNV3BmRUFndHdrVVFTWE5DNjNRQmRuR0JyWTRGTlFkWkhaNTFBS3hmemZYU2tDVVdncDU0QjRSbFFSUlVHc0FlbVlXZW1LUVJaSzdnNVlBVnprb0FDdUdoV1FLbFhMcmd3WkFDRER1b0RDWkcrSUVRTDVDSjZBUWFNUnFvQUYyU053RUVKR1VnZ0FBZ1FhTkVBRWhRRXNNTU9QQlFoUXdrYXFHQkJGdE9kWVBIL0NWNE84QU95SjVnVndRbmJJZURDeFNSYnpPUUFWSlI4Y1FKV2treHNEU29yKzRYRll2NFF4Y2xLc0VBeUM0SFpySElJRHdUOXdBcDc3cG1DMERyNEFNRVFRVk5BUWd0TUI2MURDaWFXSElEUUtUQWhSTlJEQ3lFMEJVZUVJSFlJS1BnUXRRNWhqTDBDQ1Y1UTBIUUFKRnpBdFE0QnlHWnhBcGp1SjRBUU50Z2dSQW90MkFDQkFWa1VrUVVXSlp6cWdjb1dSK0Y0Rk5XQjFNRUNVWmpGUXhTN0pyQ0VBUWE0OEhnVUMrdzZ3dWVQeHhDWUI2UVRtMEFYQml6UmdPUEtZdUQ0eVJaZ2dON2xwUE9nbU95a2gyREU3NzhESUR3QXdQL3VRdzlEL0U3QkRBc29VUHp2REt6Z3hlTUIvSDdEQ2x4RTRmdnZDbFJ2eEEwcEVFRXIvNjFSa0pDOEVVTkVNRDZ0VEJCdkJBTTlnQjRCQThDbk1MM2pISGdRc01BYmhMQkRWQzRBQXc0Z280SWcvRXNESGJBQTZSWUlPWTJKYVFDb3N4em1vclNRejRYdUlhTmJJQWNlb29UWGZZNDlhOGtDN0FhZ2hBajB3QU1neWNJU09NakFLQVJtQ1FzTXdmQm1TRU1BV09GNERCQWVBMllRaGZuVkVBQU1DQURsQWpDOEZkaGdBU3Nvb2hDR0Y3MFZPQkVFUlBCQkRtMm9BQ2M2OFF0ZWdJRU9mZkE0R1JJdmlJL3p3QlEwb0RjMERRRU1POERBQi9pakFWUGhwQU5TYU9INjdQS0RCVGprSVZpUUFsaW9jTUc3Y0dCOVhOaFZGOVpIS3hjRUpnaUU5QWgzc0VBclpYWEJTMHF3QWNzR0lJVkUwa3FQQTBoQUluMTNnMDUyTXY5NE5DVEJGNlk0QkJjdFlBWXBzSUx3ckFBREdMRFNSUUZncFJWU2NJRVZ0TklLVmdqQURGckp5MXVtb0FkU3hLVXdjUWtESm5pQkFhMU1nUS9HZHdFQWRISUlGeGdmZEVwd2dCeE1JRTBYaUVBV0JDWUJ5QnlGQm5DMEpDSHB1SUFhN0dvdWUrempYSlNnaEd5TUw1QVBHU1FoTjBqQ0dDUXlNT3RVUWhFYUNaWWVZUEpJQzVoa0hTMTVNazBTTWdTZXZBRUZoc0RRSVZEQWswWVE1UkE2U1FGVExxQUhJR0RBUTQwZ1BDT2tvQUhWKytIN2VqQURrVElBQmVaTHFDY0JNSU1zNHBJQnk2VFZCYjUzQTJpT2p3TVdLQUVIdGhBR2dRMmhkVWZnendmeU40VXBXQ0NCNHV4YjMreFNnQmpZNEF2c0Fjc0liQkN5TGtBZ05Tei9VS29OWXJDckpXalZCajFBRHhhK3VsVmliU0kxTmVnYnNjRHdoZXBnd0FiUUFrdGF2MW9EOUJpQXJDSFFnVjUxNEQ4dmVDRUNDdGdyQlppQWdTSG90WlJmaFlBUUZFQUJ3ZTRnQUh1TjdOUzZZQVBJNnBVQ0RNZ3NBeFRRQXlZWVZxOE1TRUVLUW51THhuS0tCRXJONjJFdm9OUWk1QlFISE9DQURNS2dpeXh3WUQ4WmdHMVJweUNGQW95VnJGdU5nWENaV2dQaGdnR0VJK0FxV0x3ZzNPWTIxNXhmY200TVVFaENGa2hYdU1UQ3dIV0pGWUVZWU5JQ01jQkFZRGh3WFhvcVFidlNGY0VMMXZ1Q0FEZzNCK3l0QUJOMmdJVDFWa0FJTWRnQkUxelEzQk94OXdVUkNFQjhOMUNWZXdsWHdPdmR3QmZTQllFR3hHQUdRN0R2L3dnYXdPQUhWMkM5UTJCdURQeWJZQ28wZHdkUytBRU5MR0JBRG1BaHRsaVlRQWJhU0FNVjhQWUhCVWp1ZGFWTDNPWXVBVDBJU0c3SXdERGpHRUIzQUFad2JsaWpPMk5pN1dDN1lPa3VENnJEWXpFdHhMbDFlUWg0cjZ0ZTlsNmd1UTBJdzMvblc5OFhWS0FMTVRpQ2hTNndKeEYwK1FVVHdNQUYyQnNHTVBTZ3VNMUY4QXNPUkFzTWVBRUNWT2p5QkpaUTV4MThZUVFYZmdFU2RsQ0RDR2ladlNKd2NIT0QwQUVWUkl3ZUpWQ0JCeWJ0NkRiQ0VjWlNzTzZNcFNJVnByS0EwelhJUW5XNjhHTXA3TllESElDQVZGaXdLd09BMnNrZUNJS3NnNERxcUJETDFFWDFBQllNQ1JhWDFBQ1RIYWdCRmJ6VUFYUGNjWStnNXZRUlZQL1VoQXR3MmdWaFlQWU1kaUFoQ25XaEFSdVFBTE9aTFlFRHVPQUNLZ3BEVkpJZEFHWTM1OXhaNEFFU1ZJU0VjN1BJQU5WdXdnSEM4QUVWU2VBREdFaDJCSDRnWXFPNHVEeFNnR09JQ3lDZVpJT2FCUWhuQVZNYmtIQ0VZeUdlckFZUEFpQ0E4QWEwT3VFUnlOaGRFTUR3cUlibkxYdEUrQ05ESG1XSko2RGhEVC9DWlU2T2NBaFlKakl6QUlNS0NMZ0VMNmhZTkpGUkFSVllrSURJSEtBSEtHZEJGbkFlbVNQdzRPWTQvNEFCWms3MERFeWdDMEhuZVFFS1VKU2YwT0FISGNnNjFna2VoS2dudkFGZ2I4QkRDdERnc0lQZEF3Z29nc1hCVTRDd3UyQlhhZ2Y3eWV6ekE3QjcvQ0ZTYUVCMUpnejJPN2E5QVZtNGV6dk5UbmovR2Z3RUMySHZnVTl5MG9VSVZCb3BYYWkwVVRSUWdtczNRQVE1d1FGVUNKK0F5ZWZrQ0NPUXZGRktVSVNxRzRVR0I2QUM0ZDNPZ2FtYlBpZW1vb0VTQ0Q2RnNxOSs5VWZsZ0F0dUg0UnJjMERnVWdpK0ZPSk80ZDlMZ1FkZy84SVVnQzk4NFdmaDdNMFh2Z0VhNElFT1RBRURZVjhDT3oydyt3YUF3UU53bVlzSHdBRDI3aE0rQ3dkSS93RmNCM1lJSkVEOUI0Z0FCbVNRZmhsUXdRVWp3TUlCU3NCL2FtYmhmMkJuQU9xSERxdlhCZkIzZ0VVQUJ2UjNnT21IQlZRZ0F6alFmL1dRQUZUUUE3Zm5kbGd3ZXdWUUtsYkhUa29RQkxaM2dla3lnaVJZZ2laNGdpaVlnaXE0Z2l6WWdpNzRnakFZZ3pJWWd5TmdBUjU0Zyt6VWhBRkwwSUlFMElNKytJTkFHSVJDT0lSRVdJUkdlSVJJbUlSS3VJUk0ySVJOQ0FSQU1IVlNDSVZLK0FSV2VJVlltSVZhdUlWYzJJVmUrSVZnR0laaU9JWmtXSVptZUlab2VJVk91SVpzMkladStJWndHSWR5T0lkMFdJZDJlSWQ0bUljOTZBUjgySWQrK0llQUdJaUNPSWlFV0lpR2VJaUltSWlLdUlpTTJJaU8ySWVCQUFBNyIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogNTAzLCAiYm9keVNpemUiOiAzMTExLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAzNjE0fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAyNjguNTI3LCAiY29ubmVjdCI6IDkzLjAxNywgInNzbCI6IDM2Mi43NzksICJzZW5kIjogMCwgIndhaXQiOiA5NC40NjEsICJyZWNlaXZlIjogMS41NX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIjY0LjEzNi40NS44MyIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wMzVaIiwgInRpbWUiOiA4MTguNTIzLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2l1My5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjM2LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiYXVGRXRfVmo2dzFaRm5NTFptQjE3VE9ONmlKbVM5ZEtraHhBNkd6RjJtby0xNjg0OTQyODc4LTAtQVpOdmZPQ0E5NHBOeUMxSHA5dWIxYnkxK21QU3JQbXFRd0JaSUE2dFJDRkU1V28ybnpyWDJueUczRU5HVUc3ZS9zRzJTT1IzdmhtWitZR3UwYjVRcVY0PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NWM2ODIxMzBmOS1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVczWlZ6RVhlN1Zac2ROSmlXSlhkeFROckFXN29MQzN3UmVDbzduQlFhOVRuXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09YXVGRXRfVmo2dzFaRm5NTFptQjE3VE9ONmlKbVM5ZEtraHhBNkd6RjJtby0xNjg0OTQyODc4LTAtQVpOdmZPQ0E5NHBOeUMxSHA5dWIxYnkxK21QU3JQbXFRd0JaSUE2dFJDRkU1V28ybnpyWDJueUczRU5HVUc3ZS9zRzJTT1IzdmhtWitZR3UwYjVRcVY0PTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE4IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9pdTMuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1XM1pWekVYZTdWWnNkTkppV0pYZHhUTnJBVzdvTEMzd1JlQ283bkJRYTlUbiJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDE5NywgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDAsICJ0ZXh0IjogIlxuPCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNClhYm91dDppbnRlcm5ldCAtLT5cbjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MlwiPjwvaGVhZD48Ym9keSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnRcIj5cbjwvYm9keT48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE2MDAsICJib2R5U2l6ZSI6IDIwOSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTgwOX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDgxNC44NTUsICJyZWNlaXZlIjogMy42Njh9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjAzNloiLCAidGltZSI6IDczOC42ODcsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoMTApLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2NTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI4RWFZeVJZSDJtaVB5WHBzeXlfZFBMLjRGVEZ4ZTYuSU9vXzNPOHRKRWFrLTE2ODQ5NDI4NzktMC1BZjNwMGxPL2hkdEF3MUJER0owcC9RQ0V3MzkxK0F3RFdXQlVQTkpGMDA3QWphS2U4aVRvZEYrbjY1MXJObmhxTFlkdG0yTWFXYjNnSmc0MllQRFJ2aHM9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ1ZjM5Nzk5MjVjLUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOSBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtTmVyWXlzSE5EVnVMV2FrM3Y1NHJYdlk2YjlDRDNMSHhqb3VBVlVZSmFpTTJcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT04RWFZeVJZSDJtaVB5WHBzeXlfZFBMLjRGVEZ4ZTYuSU9vXzNPOHRKRWFrLTE2ODQ5NDI4NzktMC1BZjNwMGxPL2hkdEF3MUJER0owcC9RQ0V3MzkxK0F3RFdXQlVQTkpGMDA3QWphS2U4aVRvZEYrbjY1MXJObmhxTFlkdG0yTWFXYjNnSmc0MllQRFJ2aHM9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTkgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDEwKS5odG1sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbU5lcll5c0hORFZ1TFdhazN2NTRyWHZZNmI5Q0QzTEh4am91QVZVWUphaU0yIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMTUyLCAibWltZVR5cGUiOiAidGV4dC9odG1sIiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiXG48IS0tIHNhdmVkIGZyb20gdXJsPSgwMDE0KWFib3V0OmludGVybmV0IC0tPlxuPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4ifSwgImhlYWRlcnNTaXplIjogMTYxNSwgImJvZHlTaXplIjogMTc1LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxNzkwfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogNzM2LjYxNywgInJlY2VpdmUiOiAyLjA3fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wMzlaIiwgInRpbWUiOiAxMDA1Ljk1MywgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9tdWx0aS1zeW5jLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2NDMsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI3TkNmVS5GLnhMNHQwVktyU0F4bUt5dnB6aFRmZ2Jwel9tQV9OWXJNZmlzLTE2ODQ5NDI4NzktMC1BY3MrcU00OXE3cXZhTzRuMUt3NXdIYUJ1azNKKzZmV3J4cjlSdkFrSTB0enJwMGpUWW15N21lcEcvc1FVTm1USWlwTkVaTGFNSWhFU1ljejBzb3FVazA9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ2MDVjYzAxOGU2LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOSBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiVy9cIlFtYjRXWnJrQ0pINnhVcnNHRldTZUVvRXgzQXpMejJzTG90WktKZ0FReXBUM2JcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT03TkNmVS5GLnhMNHQwVktyU0F4bUt5dnB6aFRmZ2Jwel9tQV9OWXJNZmlzLTE2ODQ5NDI4NzktMC1BY3MrcU00OXE3cXZhTzRuMUt3NXdIYUJ1azNKKzZmV3J4cjlSdkFrSTB0enJwMGpUWW15N21lcEcvc1FVTm1USWlwTkVaTGFNSWhFU1ljejBzb3FVazA9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MTkgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJUcmFuc2Zlci1FbmNvZGluZyIsICJ2YWx1ZSI6ICJjaHVua2VkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL211bHRpLXN5bmMuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1iNFdacmtDSkg2eFVyc0dGV1NlRW9FeDNBekx6MnNMb3RaS0pnQVF5cFQzYiJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDMyMDM4LCAibWltZVR5cGUiOiAidGV4dC9odG1sIiwgImNvbXByZXNzaW9uIjogMjI0NDMsICJ0ZXh0IjogIjwhRE9DVFlQRSBodG1sIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOXCIgXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGRcIj5cbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiPlxuICAgIDx0aXRsZT5Vc2VyLVN5bmM8L3RpdGxlPlxuICAgIDwhLS0gZ2VuZXJhdGVkOiAyMDIwLTA4LTI2IDA5OjQ5OjA5IFBEVCAtLT5cbjwvaGVhZD5cbjxib2R5PlxuPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+XG4gICAgdmFyIHJ0Yl9zeW5jID0ge1widHRsXCI6MTQsXCJzYW1wbGVcIjoxMDAsXCJtYXhfcGl4ZWxzXCI6OCxcInBpeGVsX3NldHNcIjp7XCJydGJcIjp7XCJzYW1wbGVcIjoxMDAsXCJwaXhlbHNcIjp7XCJpZGxcIjp7XCJwcmlvcml0eVwiOjEsXCJ0dGxcIjoxLFwiaW1nXCI6XCJodHRwczpcXC9cXC9pZC5ybGNkbi5jb21cXC83MDk0MTQuZ2lmXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkLnJsY2RuLmNvbVxcLzcwOTQxNC5naWZcIn0sXCJwYXJ0bmVyXCI6XCJsaXZlcmFtcFwifSxcIjExODVcIjp7XCJwaW5nZG9tX2lkXCI6XCIzOTkyMzVcIixcInR0bFwiOjcsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2FkLnR1cm4uY29tXFwvclxcL2NzP3BpZD02XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2FkLnR1cm4uY29tXFwvclxcL2NzP3BpZD02XCJ9LFwicHJpb3JpdHlcIjo1LFwicGFydG5lclwiOlwidHVyblwifSxcIjExOTdcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNzM3MzM0XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvc3luYy50aWRhbHR2LmNvbVxcL0dlbmVyaWNVc2VyU3luYy5hc2h4P2RwaWQ9Njk1XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMudGlkYWx0di5jb21cXC9HZW5lcmljVXNlclN5bmMuYXNoeD9kcGlkPTY5NVwifSxcInBhcnRuZXJcIjpcInZpZGVvbG9neVwifSxcIjE1MTJcIjp7XCJwaW5nZG9tX2lkXCI6XCIzOTkyMzFcIixcInR0bFwiOjcsXCJpbWdcIjpcImh0dHA6XFwvXFwvc3luYy5tYXRodGFnLmNvbVxcL3N5bmNcXC9pbWc/bXRfZXhpZD05XCIsXCJwcmlvcml0eVwiOjEsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMubWF0aHRhZy5jb21cXC9zeW5jXFwvaW1nP210X2V4aWQ9OSZyZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENDIyMiUyNm5pZCUzRDE1MTIlMjZwdXQlM0QlNUJNTV9VVUlEJTVEXCJ9LFwicmVzeW5jXCI6MSxcInBhcnRuZXJcIjpcIm1lZGlhbWF0aFwifSxcIjE5MDJcIjp7XCJwaW5nZG9tX2lkXCI6XCIzOTkyMjRcIixcInR0bFwiOjIsXCJpbWdcIjpcImh0dHA6XFwvXFwvY21zLnF1YW50c2VydmUuY29tXFwvcGl4ZWxcXC9wLWU0bTNZa282YkZZVmMuZ2lmP2lkbWF0Y2g9MFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbXMucXVhbnRzZXJ2ZS5jb21cXC9waXhlbFxcL3AtZTRtM1lrbzZiRllWYy5naWY/aWRtYXRjaD0wXCJ9LFwicGFydG5lclwiOlwicXVhbnRjYXN0XCJ9LFwiMTk4NlwiOntcInBpbmdkb21faWRcIjpcIjM5OTI0MFwiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC9pYi5hZG54cy5jb21cXC9nZXR1aWRuYj9odHRwJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0ODk0JTI2bmlkJTNEMTk4NiUyNnB1dCUzRCRVSUQlMjZleHBpcmVzJTNEMzBcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc2VjdXJlLmFkbnhzLmNvbVxcL2dldHVpZG5iP2h0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0ODk0JTI2bmlkJTNEMTk4NiUyNnB1dCUzRCRVSUQlMjZleHBpcmVzJTNEMzBcIn0sXCJyZXN5bmNcIjoxLFwicGFydG5lclwiOlwiYXBwbmV4dXNcIn0sXCIyMDQ2XCI6e1wicGluZ2RvbV9pZFwiOlwiMTczNzM2N1wiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjA0NiZwdD1uJmE9MVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjA0NiZwdD1uJmE9MVwifSxcInBhcnRuZXJcIjpcImNvbnZlcnNhbnRcIn0sXCIyMDgyXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bXMuYWN1aXR5cGxhdGZvcm0uY29tXFwvdHVtP3VtaWQ9MlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bXMuYWN1aXR5cGxhdGZvcm0uY29tXFwvdHVtP3VtaWQ9MlwifSxcInBhcnRuZXJcIjpcImFjdWl0eVwifSxcIjIxMzJcIjp7XCJwaW5nZG9tX2lkXCI6XCIzOTkyMjVcIixcInByaW9yaXR5XCI6NSxcImltZ1wiOlwiaHR0cDpcXC9cXC91bS5zaW1wbGkuZmlcXC9yYl9tYXRjaFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bS5zaW1wbGkuZmlcXC9yYl9tYXRjaFwifSxcInBhcnRuZXJcIjpcInNpbXBsaS5maVwifSxcIjIxMzVcIjp7XCJwaW5nZG9tX2lkXCI6XCI0MDUyMDBcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9kNXAuZGUxN2EuY29tXFwvY29va2llc1xcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZDVwLmRlMTdhLmNvbVxcL2Nvb2tpZXNcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiZGVsdGEtcnRiXCIsXCJjb3VudHJ5XCI6W1wic2VcIixcImRrXCIsXCJubFwiLFwiZGVcIixcImZpXCIsXCJub1wiXX0sXCIyMjMxXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pZC5zaGFyZWRpZC5vcmdcXC91c3luYz9yZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENjI0MjEwJTI2bmlkJTNEMjIzMSUyNnB1dCUzRCU3QnVzZXJfdG9rZW4lN0RcIixcInByaW9yaXR5XCI6MSxcInNhbXBsZVwiOjEwMCxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWQuc2hhcmVkaWQub3JnXFwvdXN5bmM/cmVkaXI9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDYyNDIxMCUyNm5pZCUzRDIyMzElMjZwdXQlM0QlN0J1c2VyX3Rva2VuJTdEXCJ9LFwicGFydG5lclwiOlwibXlhZHNcIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIixcIm14XCJdfSxcIjIyMzhcIjp7XCJwaW5nZG9tX2lkXCI6XCI2NDM2NzNcIixcInByaW9yaXR5XCI6NSxcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4ZWwtYS5zaXRlc2NvdXQuY29tXFwvZG1wXFwvcGl4ZWxTeW5jP25pZD0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLWEuc2l0ZXNjb3V0LmNvbVxcL2RtcFxcL3BpeGVsU3luYz9uaWQ9MVwifSxcInBhcnRuZXJcIjpcImNlbnRyb1wifSxcIjIyNDlcIjp7XCJwaW5nZG9tX2lkXCI6XCIzOTkyMjdcIixcInR0bFwiOjcsXCJpbWdcIjpcImh0dHA6XFwvXFwvY20uZy5kb3VibGVjbGljay5uZXRcXC9waXhlbD9nb29nbGVfbmlkPXJ1Ymljb24mZ29vZ2xlX2NtJmdvb2dsZV9zY1wiLFwicHJpb3JpdHlcIjoxLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbS5nLmRvdWJsZWNsaWNrLm5ldFxcL3BpeGVsP2dvb2dsZV9uaWQ9cnViaWNvbiZnb29nbGVfY20mZ29vZ2xlX3NjXCJ9LFwicmVzeW5jXCI6MSxcInBhcnRuZXJcIjpcImRibVwifSxcIjIyNDktRFYzNjAtSG9zdGVkXCI6e1wicHJpb3JpdHlcIjoxLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjI0OSZwdD1uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMjQ5JnB0PW5cIn0sXCJwYXJ0bmVyXCI6XCJEVjM2MC1Hb29nbGVcIn0sXCIyMzA3XCI6e1wicGluZ2RvbV9pZFwiOlwiMTc0NjU5OVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL21hdGNoLmFkc3J2ci5vcmdcXC90cmFja1xcL2NtZlxcL3J1Ymljb25cIixcInByaW9yaXR5XCI6MSxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvbWF0Y2guYWRzcnZyLm9yZ1xcL3RyYWNrXFwvY21mXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcInRoZXRyYWRlZGVza1wifSxcIjIzMTNcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNzQ2NjA1XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvcmJwLm14cHRpbnQubmV0XFwvc24uYXNoeFwiLFwicHJpb3JpdHlcIjoxMCxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcmJwLm14cHRpbnQubmV0XFwvc24uYXNoeFwifSxcInBhcnRuZXJcIjpcIm1heC1wb2ludC11cy1zeW5jXCIsXCJjb3VudHJ5XCI6W1widXNcIixcImNhXCJdfSxcIjIzOTVcIjp7XCJwaW5nZG9tX2lkXCI6XCI1MTQ3NTVcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9weC5vd25lcmlxLm5ldFxcL2VyYlwiLFwicmVnaW9uXCI6W1wibmFcIl0sXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3B4Lm93bmVyaXEubmV0XFwvZXJiXCJ9LFwicGFydG5lclwiOlwib3duZXItaXFcIn0sXCIyNDk0XCI6e1wiaW1nXCI6XCJodHRwOlxcL1xcL3VtMi5lcWFkcy5jb21cXC91bVxcL3JjXCIsXCJyZWdpb25cIjpbXCJuYVwiXSxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdW0yLmVxYWRzLmNvbTo0NDNcXC91bVxcL3JjXCJ9LFwicGFydG5lclwiOlwiZXEtYWRzXCJ9LFwiMjUyOFwiOntcInBpbmdkb21faWRcIjpcIjE3NDY3NThcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLmludGVudGlxLmNvbVxcL3Byb2ZpbGVzX2VuZ2luZVxcL1Byb2ZpbGVzRW5naW5lU2VydmxldD9hdD0yMCZtaT0xMCZkcGk9NTRcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5pbnRlbnRpcS5jb21cXC9wcm9maWxlc19lbmdpbmVcXC9Qcm9maWxlc0VuZ2luZVNlcnZsZXQ/YXQ9MjAmbWk9MTAmZHBpPTU0XCJ9LFwicGFydG5lclwiOlwiaW50ZW50LWlxXCIsXCJjb3VudHJ5XCI6W1widXNcIixcImNhXCJdfSxcIjI1NDBcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3RyLmJsaXNtZWRpYS5jb21cXC92MVxcL2FwaVxcL3N5bmNcXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3RyLmJsaXNtZWRpYS5jb21cXC92MVxcL2FwaVxcL3N5bmNcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiYmxpc1wifSxcIjI1OTBcIjp7XCJwaW5nZG9tX2lkXCI6XCIxMzA4NDAyXCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvZ3JlZW4uZXJuZS5jb1xcL3JwXFwvY21cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZ3JlZW4uZXJuZS5jb1xcL3JwXFwvY21cIn0sXCJwYXJ0bmVyXCI6XCJjbG91ZC10ZWNobm9sb2dpZXNcIn0sXCIyNTk2XCI6e1wicGluZ2RvbV9pZFwiOlwiNTY2OTg4XCIsXCJ0dGxcIjo3LFwicHJpb3JpdHlcIjoxMCxcImltZ1wiOlwiaHR0cDpcXC9cXC9wLnJmaWh1Yi5jb21cXC9jbT9pbj0xJnB1Yj02NFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9wLnJmaWh1Yi5jb21cXC9jbT9pbj0xJnB1Yj02NFwifSxcInBhcnRuZXJcIjpcInJvY2tldGZ1ZWxcIn0sXCIyNjUwXCI6e1wicGluZ2RvbV9pZFwiOlwiMTQxMTE1NVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL21hdGNoLmFkc2J5LmJpZHRoZWF0cmUuY29tXFwvcnViaWNvbm1hdGNoXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL21hdGNoLmFkc2J5LmJpZHRoZWF0cmUuY29tXFwvcnViaWNvbm1hdGNoXCJ9LFwicGFydG5lclwiOlwiYmlkLXRoZWF0cmVcIn0sXCIyNjc2XCI6e1wicGluZ2RvbV9pZFwiOlwiMTc2NTk3NlwiLFwiaW1nXCI6XCJodHRwczpcXC9cXC9jMS5hZGZvcm0ubmV0XFwvc2VydmluZ1xcL2Nvb2tpZVxcL21hdGNoP3BhcnR5PTExNjRcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYzEuYWRmb3JtLm5ldFxcL3NlcnZpbmdcXC9jb29raWVcXC9tYXRjaD9wYXJ0eT0xMTY0XCJ9LFwicHJpb3JpdHlcIjoxMCxcInBhcnRuZXJcIjpcImFkZm9ybVwifSxcIjI3MzFcIjp7XCJwaW5nZG9tX2lkXCI6XCI2NjI2MTdcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9jbS5jdG5zbmV0LmNvbVxcL2ludFxcL2NtP2V4Yz0yJnJlZGlyPWh0dHAlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDE0OTY1JTI2bmlkJTNEMjczMSUyNnB1dCUzRCU1QnVzZXJfaWQlNURcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY20uY3Ruc25ldC5jb21cXC9pbnRcXC9jbT9leGM9MiZyZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMTQ5NjUlMjZuaWQlM0QyNzMxJTI2cHV0JTNEJTVCdXNlcl9pZCU1RCBcIn0sXCJyZWdpb25cIjpbXCJldVwiLFwiYXVcIl0sXCJwYXJ0bmVyXCI6XCJjcmltc29uLXRhbmdlcmluZVwifSxcIjI3NjBcIjp7XCJwaW5nZG9tX2lkXCI6XCI2NTk0MDVcIixcImltZ1wiOlwiaHR0cDpcXC9cXC94LmJpZHN3aXRjaC5uZXRcXC9zeW5jP3NzcD1ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3guYmlkc3dpdGNoLm5ldFxcL3N5bmM/c3NwPXJ1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJiaWRzd2l0Y2hcIn0sXCIyODIwXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pZDUtc3luYy5jb21cXC9pXFwvMTc1XFwvOS5naWZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWQ1LXN5bmMuY29tXFwvaVxcLzE3NVxcLzkuZ2lmXCJ9LFwicGFydG5lclwiOlwicGxhdGZvcm0tMTYxXCIsXCJjb3VudHJ5XCI6W1wibmxcIixcInVzXCJdfSxcIjI4NjFcIjp7XCJwaW5nZG9tX2lkXCI6XCIxODE4MDY1XCIsXCJwcmlvcml0eVwiOjUsXCJpbWdcIjpcImh0dHA6XFwvXFwvc3luYy5pcHJlZGljdGl2ZS5jb21cXC9kXFwvc3luY1xcL2Nvb2tpZVxcL2dlbmVyaWM/aHR0cDpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9MTcxNDkmbmlkPTI4NjEmcHV0PSR7QURFTFBISUNfQ1VJRH0mZXhwaXJlcz0zMFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmlwcmVkaWN0aXZlLmNvbVxcL2RcXC9zeW5jXFwvY29va2llXFwvZ2VuZXJpYz9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9MTcxNDkmbmlkPTI4NjEmcHV0PSR7QURFTFBISUNfQ1VJRH0mZXhwaXJlcz0zMFwifSxcInBhcnRuZXJcIjpcImFkZWxwaGljXCJ9LFwiMjg2N1wiOntcInBpbmdkb21faWRcIjpcIjc3MjY1OFwiLFwic2FtcGxlXCI6MCxcImltZ1wiOlwiaHR0cDpcXC9cXC9yLjI1NGEuY29tXFwvcl9tYXRjaFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yLjI1NGEuY29tXFwvcl9tYXRjaFwifSxcInBhcnRuZXJcIjpcInlpZWxkclwifSxcIjI5MzFcIjp7XCJwaW5nZG9tX2lkXCI6XCIxMzAzNzcyXCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvcGl4LmltcGRlc2suY29tXFwvY3N5bmNcXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeC5pbXBkZXNrLmNvbVxcL2NzeW5jXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcImluZmVjdGlvdXNcIn0sXCIyOTc0XCI6e1wicGluZ2RvbV9pZFwiOlwiMTAwNTg4NlwiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mjk3NCZwdD1uJmE9MVwiLFwicHJpb3JpdHlcIjoxLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mjk3NCZwdD1uJmE9MVwifSxcInBhcnRuZXJcIjpcInlhaG9vLW9wZW5ydGJcIn0sXCIzMzgwXCI6e1wic2FtcGxlXCI6MCxcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy56ZWJlc3RvZi5jb21cXC9zeW5jXFwvMTFcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy56ZWJlc3RvZi5jb21cXC9zeW5jXFwvMTFcIn0sXCJwYXJ0bmVyXCI6XCJ6ZWJlc3RvZlwifSxcIjM0MTZcIjp7XCJzYW1wbGVcIjowLFwicGluZ2RvbV9pZFwiOlwiMTMwMzc3MFwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2NtLmV5ZXJldHVybi5jb21cXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLmV5ZXJldHVybi5jb21cXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiZXllcmV0dXJuXCIsXCJjb3VudHJ5XCI6W1widXNcIixcImNhXCJdfSxcIjM2MzJcIjp7XCJwaW5nZG9tX2lkXCI6XCIxMzM1MzQ0XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvcmNwLmMuYXBwaWVyLm5ldFxcL3JiY21cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcmNwLmMuYXBwaWVyLm5ldFxcL3JiY21cIn0sXCJwYXJ0bmVyXCI6XCJhcHBpZXJcIn0sXCIzNjM2XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbS5zbWFkZXguY29tXFwvc3luYz9zbV9wPXJiYyZzbV9yPXJiY1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbS5zbWFkZXguY29tXFwvc3luYz9zbV9wPXJiYyZzbV9yPXJiY1wifSxcInBhcnRuZXJcIjpcInNtYWRleFwifSxcIjM2NjRcIjp7XCJpbWdcIjpcImh0dHA6XFwvXFwvYnR0cmFjay5jb21cXC9waXhlbFxcL2Nvb2tpZXN5bmM/c291cmNlPWM5MWJmY2NlLWJiNDMtNDZmNy1iMTRlLTU2N2MwYTQzMzJiM1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9idHRyYWNrLmNvbVxcL3BpeGVsXFwvY29va2llc3luYz9zb3VyY2U9YzkxYmZjY2UtYmI0My00NmY3LWIxNGUtNTY3YzBhNDMzMmIzXCJ9LFwicGFydG5lclwiOlwiYmlkdGVsbGVjdFwifSxcIjM2NjhcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3RnLnNvY2RtLmNvbVxcL3J0YlxcL3N5bmM/cHJvdG89cnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90Zy5zb2NkbS5jb21cXC9ydGJcXC9zeW5jP3Byb3RvPXJ1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJzdXBlcnNoaXBcIn0sXCIzNjg0XCI6e1wicGluZ2RvbV9pZFwiOlwiMTg2NzAxNVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL21wcC52aW5kaWNvc3VpdGUuY29tXFwvc3luY1xcLz9waWQ9NDAmZnI9MVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9tcHAudmluZGljb3N1aXRlLmNvbVxcL3N5bmNcXC8/cGlkPTQwJmZyPTFcIn0sXCJwYXJ0bmVyXCI6XCJ2aWFudFwifSxcIjM3NzhcIjp7XCJwaW5nZG9tX2lkXCI6XCIxOTE1NTk1XCIsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMtdG0uZXZlcmVzdHRlY2gubmV0XFwvdXBpXFwvcGlkXFwvYnR1NGpkM2E/cmVkaXI9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDE5MTk0MCUyNm5pZCUzRDM3NzglMjZwdXQlM0QlMjQlN0JVU0VSX0lEJTdEXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMtdG0uZXZlcmVzdHRlY2gubmV0XFwvdXBpXFwvcGlkXFwvYnR1NGpkM2E/cmVkaXI9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDE5MTk0MCUyNm5pZCUzRDM3NzglMjZwdXQlM0QlMjQlN0JVU0VSX0lEJTdEXCJ9LFwicGFydG5lclwiOlwiYWRvYmVcIixcInByaW9yaXR5XCI6MX0sXCIzODIyXCI6e1wicGluZ2RvbV9pZFwiOlwiMTUyOTk1N1wiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2RzcC5hZGZhcm0xLmFkaXRpb24uY29tXFwvY29va2llXFwvP3NzcD03XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2RzcC5hZGZhcm0xLmFkaXRpb24uY29tXFwvY29va2llXFwvP3NzcD03XCJ9LFwicGFydG5lclwiOlwiYWN0aXZlLWFnZW50XCJ9LFwiMzg0MFwiOntcInNhbXBsZVwiOjAsXCJwaW5nZG9tX2lkXCI6XCIyMjA5MTk0XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvc3luYy5leHRlbmQudHZcXC9yLmdpZj9leGNoYW5nZT1ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuZXh0ZW5kLnR2XFwvci5naWY/ZXhjaGFuZ2U9cnViaWNvblwifSxcInBhcnRuZXJcIjpcImV4dGVuZHR2XCJ9LFwiMzg1NlwiOntcInBpbmdkb21faWRcIjpcIjIyMjQyOTVcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9hLnRyaWJhbGZ1c2lvbi5jb21cXC9pLm1hdGNoP3A9YjEwJnU9e3J1Ymljb25fdXNlcl90b2tlbn0mcmVkaXJlY3Q9aHR0cCUzQVxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3RhcC5waHAlM0Z2JTNEMTExNzU2JTI2bmlkJTNEMzg1NiUyNnB1dCUzRCUyNFRGX1VTRVJfSURfRU5DJTI0JTI2ZXhwaXJlcyUzRDE4MFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9hLnRyaWJhbGZ1c2lvbi5jb21cXC9pLm1hdGNoP3A9YjEwJnU9e3J1Ymljb25fdXNlcl90b2tlbn0mcmVkaXJlY3Q9aHR0cHMlM0FcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwJTNGdiUzRDExMTc1NiUyNm5pZCUzRDM4NTYlMjZwdXQlM0QlMjRURl9VU0VSX0lEX0VOQyUyNCUyNmV4cGlyZXMlM0QxODBcIn0sXCJwYXJ0bmVyXCI6XCJleHBvbmVudGlhbFwifSxcIjM4NThcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuc3J2LnN0YWNrYWRhcHQuY29tXFwvc3luYz9uaWQ9MTRcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5zcnYuc3RhY2thZGFwdC5jb21cXC9zeW5jP25pZD0xNFwifSxcInBhcnRuZXJcIjpcInN0YWNrYWRhcHRcIn0sXCIzOTU2XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmFkb3Rtb2IuY29tXFwvY29va2llXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmFkb3Rtb2IuY29tXFwvY29va2llXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcIkFkb3RNb2JcIn0sXCIzOTkyXCI6e1wicGluZ2RvbV9pZFwiOlwiMTk2ODYxMlwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2Ixc3luYy56ZW1hbnRhLmNvbVxcL3VzZXJzeW5jXFwvcnViaWNvblxcL1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9iMXN5bmMuemVtYW50YS5jb21cXC91c2Vyc3luY1xcL3J1Ymljb25cXC9cIn0sXCJwYXJ0bmVyXCI6XCJ6ZW1hbnRhXCJ9LFwiNDAxNlwiOntcInBpbmdkb21faWRcIjpcIjIyNTIwMjVcIixcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3ItcDE2LmxhZHNwLmpwXFwvY29va2llc2VuZGVyXFwvMTZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3ItcDE2LmxhZHNwLmpwXFwvY29va2llc2VuZGVyXFwvMTZcIn0sXCJwYXJ0bmVyXCI6XCJzby1uZXRtZWRpYVwiLFwiY291bnRyeVwiOltcImpwXCJdfSxcIjQwMzJcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNjI5MzY2XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvY20uYWRncnguY29tXFwvYnJpZGdlP0FHX1NFVENPT0tJRSZBR19QSUQ9cnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbS5hZGdyeC5jb21cXC9icmlkZ2U/QUdfU0VUQ09PS0lFJkFHX1BJRD1ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiYWRnZWFyXCJ9LFwiNDExMlwiOntcInBpbmdkb21faWRcIjpcIjE5MTU1OTFcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLjFyeC5pb1xcL3VzZXJzeW5jMlxcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy4xcnguaW9cXC91c2Vyc3luYzJcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwicmh5dGhtb25lXCJ9LFwiNDExNFwiOntcInBpbmdkb21faWRcIjpcIjE4MTgwNjNcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9tYXRjaC5wcm9kLmJpZHIuaW9cXC9jb29raWUtc3luY1xcL3JwP2JlZV9zeW5jX3BhcnRuZXJzPXJwXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL21hdGNoLnByb2QuYmlkci5pb1xcL2Nvb2tpZS1zeW5jXFwvcnA/YmVlX3N5bmNfcGFydG5lcnM9cnBcIn0sXCJwYXJ0bmVyXCI6XCJiZWVzd2F4XCJ9LFwiNDU4NFwiOntcImltZ1wiOlwiaHR0cDpcXC9cXC9vbmV0YWctc3lzLmNvbVxcL2JyaWRnZVxcL2UsNFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9vbmV0YWctc3lzLmNvbVxcL2JyaWRnZVxcL2UsNFwifSxcInBhcnRuZXJcIjpcIm9uZXRhZ1wiLFwiY291bnRyeVwiOltcIml0XCIsXCJkZVwiLFwiZnJcIixcInNlXCIsXCJhdFwiLFwidWtcIixcImVzXCIsXCJnclwiLFwicm9cIl19LFwiNDYwNFwiOntcInBpbmdkb21faWRcIjpcIjIxMTczMDVcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9hcGkucHJpbWVjYXN0ZXIubmV0XFwvYWRsb2d1ZVxcL2FwaVxcL3N5bmNcXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2FwaS5wcmltZWNhc3Rlci5uZXRcXC9hZGxvZ3VlXFwvYXBpXFwvc3luY1xcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJ2aWRlb3dpcmVcIixcImNvdW50cnlcIjpbXCJqcFwiXX0sXCI0ODA0XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ndS5keW50cmsuY29tXFwvYWR4XFwvcmJjblxcL3VzLnBocD9keW5rPXIxYjMyYzBuXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2d1LmR5bnRyay5jb21cXC9hZHhcXC9yYmNuXFwvdXMucGhwP2R5bms9cjFiMzJjMG5cIn0sXCJwYXJ0bmVyXCI6XCJkeW5hZG1pY1wifSxcIjQ5MDZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMtZHNwLmFkLW0uYXNpYVxcL2RzcFxcL2FwaVxcL3N5bmNcXC9zZW5kP3M9cnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLWRzcC5hZC1tLmFzaWFcXC9kc3BcXC9hcGlcXC9zeW5jXFwvc2VuZD9zPXJ1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJmdWxsc3BlZWRcIixcImNvdW50cnlcIjpbXCJqcFwiXX0sXCI1MTIwXCI6e1wiaW1nXCI6XCJodHRwOlxcL1xcL2JoLmNvbnRleHR3ZWIuY29tXFwvYmhcXC9ydHNldD9waWQ9NTYwNjg3JmV2PTEmcnVybD1odHRwJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QzOTAyMDAlMjZuaWQlM0Q1MTIwJTI2cHV0JTNEJTI1JTI1VkdVSUQlMjUlMjVcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYmguY29udGV4dHdlYi5jb21cXC9iaFxcL3J0c2V0P3BpZD01NjA2ODcmZXY9MSZydXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QzOTAyMDAlMjZuaWQlM0Q1MTIwJTI2cHV0JTNEJTI1JTI1VkdVSUQlMjUlMjVcIn0sXCJwYXJ0bmVyXCI6XCJwdWxzZXBvaW50XCJ9LFwiNTQ0NlwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZG1wLmJyYW5kLWRpc3BsYXkuY29tXFwvY21cXC9hcGlcXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2RtcC5icmFuZC1kaXNwbGF5LmNvbVxcL2NtXFwvYXBpXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcImtub3JleFwifSxcIjU0NTRcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3J0Yi5ndW1ndW0uY29tXFwvZ2V0dWlkXFwvd3M2ZHNyZmU/cj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENTU0ODcwJTI2bmlkJTNENTQ1NCUyNnB1dCUzRFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ydGIuZ3VtZ3VtLmNvbVxcL2dldHVpZFxcL3dzNmRzcmZlP3I9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDU1NDg3MCUyNm5pZCUzRDU0NTQlMjZwdXQlM0RcIn0sXCJwYXJ0bmVyXCI6XCJndW1ndW1cIn0sXCI1NDY2XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pYi5hZG54cy5jb21cXC9nZXR1aWQ/aHR0cHM6XFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvdGFwLnBocD92PTU2NDUzNCZuaWQ9NTQ2NiZwdXQ9JFVJRFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pYi5hZG54cy5jb21cXC9nZXR1aWQ/aHR0cHM6XFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvdGFwLnBocD92PTU2NDUzNCZuaWQ9NTQ2NiZwdXQ9JFVJRFwifSxcInBhcnRuZXJcIjpcInBsYXlncm91bmQteHl6XCJ9LFwiNTQ3NFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvbmVwLmFkdmFuZ2VsaXN0cy5jb21cXC94cFxcL3VzZXItc3luYz9hY2N0aWQ9MzQ5JnVzZXJpZD17dXNlcl90b2tlbn1cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvbmVwLmFkdmFuZ2VsaXN0cy5jb21cXC94cFxcL3VzZXItc3luYz9hY2N0aWQ9MzQ5JnVzZXJpZD17dXNlcl90b2tlbn1cIn0sXCJwYXJ0bmVyXCI6XCJhZHZhbmdlbGlzdHMtdmlkZW9cIn0sXCI1NDc4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9uZXAuYWR2YW5nZWxpc3RzLmNvbVxcL3hwXFwvdXNlci1zeW5jP2FjY3RpZD0yNjEmdXNlcmlkPXt1c2VyX3Rva2VufVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9uZXAuYWR2YW5nZWxpc3RzLmNvbVxcL3hwXFwvdXNlci1zeW5jP2FjY3RpZD0yNjEmdXNlcmlkPXt1c2VyX3Rva2VufVwifSxcInBhcnRuZXJcIjpcImFkdmFuZ2VsaXN0cy1kaXNwbGF5XCJ9LFwiNTQ5OFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcnViaWNvbmNtLmRpZ2l0YWxlYXN0Lm1vYmlcXC91c2Vyc3luY1xcL3J1Ymljb24uZ2lmP3Y9PHJ1Ymljb25faWQ+Jm5pZD08bmV0d29ya19pZD5cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcnViaWNvbmNtLmRpZ2l0YWxlYXN0Lm1vYmlcXC91c2Vyc3luY1xcL3J1Ymljb24uZ2lmP3Y9PHJ1Ymljb25faWQ+Jm5pZD08bmV0d29ya19pZD5cIn0sXCJwYXJ0bmVyXCI6XCJkaWdpdGFsLWVhc3RcIn0sXCI1NTAwXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9kcy51bmNuLmpwXFwvcnBcXC8wXFwvc3luY1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9kcy51bmNuLmpwXFwvcnBcXC8wXFwvc3luY1wifSxcImNvdW50cnlcIjpbXCJqcFwiXSxcInBhcnRuZXJcIjpcImJ1bGJpdFwifSxcIjU1MDRcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2JlYWNvbi5seW54LmNvZ25pdGl2bGFicy5jb21cXC9yYi5naWZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYmVhY29uLmx5bnguY29nbml0aXZsYWJzLmNvbVxcL3JiLmdpZlwifSxcInBhcnRuZXJcIjpcImNvZ25pdGl2XCJ9LFwiNTUwOFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3MuYWRuZWFyLm5ldFxcL3YyXFwvY29va2llc3luY1xcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY3MuYWRuZWFyLm5ldFxcL3YyXFwvY29va2llc3luY1xcL3J1Ymljb25cIn0sXCJjb3VudHJ5XCI6W1wiYXVcIixcIm56XCJdLFwicGFydG5lclwiOlwibmVhclwifSxcIjU1MTRcIjp7XCJzYW1wbGVcIjowLFwiaW1nXCI6XCJodHRwczpcXC9cXC9hZHZhbmNlZC5nYXJyaXR6LmNvbTo4MDkwXFwvcnViaWNvbl9kbXBfcGl4ZWw/Y29va2llaWQ9NTJmZGZjMDcyMTgyNjU0ZjE2M2Y1ZjBmOWE2MjFkNzI5NTY2XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2FkdmFuY2VkLmdhcnJpdHouY29tOjgwOTBcXC9ydWJpY29uX2RtcF9waXhlbD9jb29raWVpZD01MmZkZmMwNzIxODI2NTRmMTYzZjVmMGY5YTYyMWQ3Mjk1NjZcIn0sXCJwYXJ0bmVyXCI6XCJnYXJyaXR6XCJ9LFwidzU1Y1wiOntcInBpbmdkb21faWRcIjpcIjM5OTIyMlwiLFwibmlkXCI6MTUyMyxcInByaW9yaXR5XCI6NSxcInR0bFwiOjcsXCJpbWdcIjpcImh0dHA6XFwvXFwvaS53NTVjLm5ldFxcL3BpbmdfbWF0Y2guZ2lmP2VpPVJVQklDT04mcnVybD1odHRwJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0MjEwJTI2bmlkJTNEMTUyMyUyNnB1dCUzRF93Zml2ZWZpdmVjXyUyNmV4cGlyZXMlM0QzMFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pLnc1NWMubmV0XFwvcGluZ19tYXRjaC5naWY/ZWk9UlVCSUNPTiZydXJsPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0MjEwJTI2bmlkJTNEMTUyMyUyNnB1dCUzRF93Zml2ZWZpdmVjXyUyNmV4cGlyZXMlM0QzMFwifSxcInBhcnRuZXJcIjpcImRhdGF4dVwifSxcIjE1MjNleHRcIjp7XCJwaW5nZG9tX2lkXCI6XCIzOTkyMjFcIixcImlmcmFtZVwiOlwiaHR0cDpcXC9cXC9jdGkudzU1Yy5uZXRcXC9jdFxcL2Ntcy0yYy1ydWJpY29uLmh0bWxcIixcInNlY3VyZVwiOntcImlmcmFtZVwiOlwiaHR0cHM6XFwvXFwvY3RpLnc1NWMubmV0XFwvY3RcXC9jbXMtMmMtcnViaWNvbi5odG1sXCJ9LFwicGFydG5lclwiOlwiZGF0YXh1XCJ9LFwiMTE5N2V4dFwiOntcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLnRpZGFsdHYuY29tXFwvZ2VuZXJpY3VzZXJzeW5jLmFzaHg/ZHBpZD1ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMudGlkYWx0di5jb21cXC9nZW5lcmljdXNlcnN5bmMuYXNoeD9kcGlkPXJ1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJ2aWRlb2xvZ3lcIn0sXCJicnhcIjp7XCJwaW5nZG9tX2lkXCI6XCI0MTQ3MDAyXCIsXCJwcmlvcml0eVwiOjEsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yNjU5NFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjY1OTRcIn0sXCJwYXJ0bmVyXCI6XCJicnhcIn0sXCJnb29nXCI6e1wicHJpb3JpdHlcIjoxLFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjU0NzBcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI1NDcwXCJ9LFwicGFydG5lclwiOlwiZ29vZ1wifSxcImE5ZXVcIjp7XCJwcmlvcml0eVwiOjEsXCJzYW1wbGVcIjo1LFwiaW1nXCI6XCJodHRwOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD1hOWV1XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD1hOWV1XCJ9LFwicGFydG5lclwiOlwiYTlldVwiLFwiY291bnRyeVwiOltcImllXCIsXCJnYlwiLFwidWtcIixcImZyXCIsXCJkZVwiLFwiZXNcIixcInB0XCIsXCJpdFwiLFwibm9cIixcInNlXCIsXCJubFwiLFwiYmVcIixcImZpXCIsXCJjaFwiXX0sXCJhOXVzXCI6e1wicHJpb3JpdHlcIjoxLFwic2FtcGxlXCI6NSxcImltZ1wiOlwiaHR0cDpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC9leGNoYW5nZVxcL3N5bmMucGhwP3A9YTl1c1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC9leGNoYW5nZVxcL3N5bmMucGhwP3A9YTl1c1wifSxcInBhcnRuZXJcIjpcImE5dXNcIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIixcIm14XCIsXCJiclwiLFwiYXVcIixcIm56XCIsXCJqcFwiXX19fSxcInJ0Yl9leHRcIjp7XCJzYW1wbGVcIjoxMDAsXCJwaXhlbHNcIjp7fX0sXCJhdWRcIjp7XCJzYW1wbGVcIjoxMDAsXCJwaXhlbHNcIjp7XCJia1wiOntcInBpbmdkb21faWRcIjpcIjYwNTcyOFwiLFwidHRsXCI6NCxcImltZ1wiOlwiaHR0cDpcXC9cXC90YWdzLmJsdWVrYWkuY29tXFwvc2l0ZVxcLzYxMjM/cmVkaXI9aHR0cHMlM0ElMkYlMkZ0b2tlbi5ydWJpY29ucHJvamVjdC5jb20lMkZ0b2tlbiUzRnBpZCUzRDMlMjZwdWlkJTNEJTI0X0JLX1VVSURcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdGFncy5ibHVla2FpLmNvbVxcL3NpdGVcXC82MTIzP3JlZGlyPWh0dHBzJTNBJTJGJTJGdG9rZW4ucnViaWNvbnByb2plY3QuY29tJTJGdG9rZW4lM0ZwaWQlM0QzJTI2cHVpZCUzRCUyNF9CS19VVUlEXCJ9LFwicGFydG5lclwiOlwiYmx1ZWthaVwifSxcImFhbVwiOntcInBpbmdkb21faWRcIjpcIjY2MTMyMFwiLFwidHRsXCI6MTQsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD02NDA0XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD02NDA0XCJ9LFwicGFydG5lclwiOlwiYWRvYmVcIn0sXCJuZXVcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNDExMTU3XCIsXCJ0dGxcIjo3LFwic2FtcGxlXCI6MCxcImltZ1wiOlwiaHR0cDpcXC9cXC9hZGFkdmlzb3IubmV0XFwvYWRzY29yZXNcXC9nLnBpeGVsP3NpZD05MjEyMjcwNDk4XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2FkYWR2aXNvci5uZXRcXC9hZHNjb3Jlc1xcL2cucGl4ZWw/c2lkPTkyMTIyNzA0OThcIn0sXCJwYXJ0bmVyXCI6XCJuZXVzdGFyXCIsXCJjb3VudHJ5XCI6W1widXNcIl19LFwidHVyblwiOntcInBpbmdkb21faWRcIjpcIjE1MDQwNjJcIixcInR0bFwiOjcsXCJpbWdcIjpcImh0dHA6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI3JmE9MVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjcmYT0xXCJ9LFwicGFydG5lclwiOlwidHVybi1kbXBcIn0sXCJtbXB1YlwiOntcInBpbmdkb21faWRcIjpcIjIxMTczMDZcIixcInR0bFwiOjcsXCJpbWdcIjpcImh0dHA6XFwvXFwvcGl4ZWwubWF0aHRhZy5jb21cXC9zeW5jXFwvaW1nP3JlZGlyPWh0dHAlM0ElMkYlMkZ0b2tlbi5ydWJpY29ucHJvamVjdC5jb20lMkZ0b2tlbiUzRnBpZCUzRDM1OTEyJTI2cHVpZCUzRCU1Qk1NX1VVSUQlNURcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4ZWwubWF0aHRhZy5jb21cXC9zeW5jXFwvaW1nP3JlZGlyPWh0dHBzJTNBJTJGJTJGdG9rZW4ucnViaWNvbnByb2plY3QuY29tJTJGdG9rZW4lM0ZwaWQlM0QzNTkxMiUyNnB1aWQlM0QlNUJNTV9VVUlEJTVEXCJ9LFwicGFydG5lclwiOlwibWVkaWFtYXRoLXB1YlwifSxcInRhcGFkLWNyb3NzZGV2aWNlXCI6e1widHRsXCI6NyxcInNhbXBsZVwiOjAsXCJpbWdcIjpcImh0dHA6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTM3NTU2JmE9MVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mzc1NTYmYT0xXCJ9LFwicGFydG5lclwiOlwidGFwYWQtY3Jvc3NkZXZpY2VcIn0sXCJkaWdpdHJ1c3RcIjp7XCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cDpcXC9cXC9ydWJpY29uLmRpZ2l0cnUuc3RcXC9kaWdpdHJ1c3Qtc3luY1wiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ydWJpY29uLmRpZ2l0cnUuc3RcXC9kaWdpdHJ1c3Qtc3luY1wifSxcInNhbXBsZVwiOjAsXCJwYXJ0bmVyXCI6XCJkaWdpdHJ1c3RcIn0sXCJvd25lcklRLWRtcFwiOntcInNhbXBsZVwiOjAsXCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cDpcXC9cXC9weC5vd25lcmlxLm5ldFxcL2V1Y21cXC9wXFwvcmM/cmVkaXI9aHR0cCUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMzM1MyUyNnB1aWQlM0QoT0lRX1VVSUQpXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3B4Lm93bmVyaXEubmV0XFwvZXVjbVxcL3BcXC9yYz9yZWRpcj1odHRwcyUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMzM1MyUyNnB1aWQlM0QoT0lRX1VVSUQpXCJ9LFwicGFydG5lclwiOlwib3duZXJJUS1kbXBcIn0sXCJhOXNcIjp7XCJ0dGxcIjo3LFwicmVnaW9uXCI6W1widXNcIl0sXCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL3MuYW1hem9uLWFkc3lzdGVtLmNvbVxcL3hcXC8xYzJmZDE0YmYzMTBiNmFmZjY0OVwiLFwic2VjdXJlXCI6e1wiaWZyYW1lXCI6XCJodHRwczpcXC9cXC9zLmFtYXpvbi1hZHN5c3RlbS5jb21cXC94XFwvMWMyZmQxNGJmMzEwYjZhZmY2NDlcIn0sXCJwYXJ0bmVyXCI6XCJhbWF6b24tcHViLXVzLXN5bmNcIn0sXCJhOXMtZXVcIjp7XCJ0dGxcIjo3LFwicmVnaW9uXCI6W1wiZXVcIl0sXCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL2FheC1ldS5hbWF6b24tYWRzeXN0ZW0uY29tXFwvc1xcL3hcXC8xYzJmZDE0YmYzMTBiNmFmZjY0OVwiLFwic2VjdXJlXCI6e1wiaWZyYW1lXCI6XCJodHRwczpcXC9cXC9hYXgtZXUuYW1hem9uLWFkc3lzdGVtLmNvbVxcL3NcXC94XFwvMWMyZmQxNGJmMzEwYjZhZmY2NDlcIn0sXCJwYXJ0bmVyXCI6XCJhbWF6b24tZXUtc3luY1wifSxcIk1lcmtsZVwiOntcInNhbXBsZVwiOjAsXCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI4NzUyXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yODc1MlwifSxcInBhcnRuZXJcIjpcIk1lcmtsZVwifSxcInNpcmRhdGFcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0zNDQ1OFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MzQ0NThcIn0sXCJzYW1wbGVcIjowLFwicGFydG5lclwiOlwic2lyZGF0YVwifX19LFwibmV0c1wiOntcInNhbXBsZVwiOjEwMCxcInBpeGVsc1wiOnt9fSxcInB1YnNcIjp7XCJzYW1wbGVcIjowLFwicGl4ZWxzXCI6e319fSxcIm5vdGlmeVwiOntcInJ1Ymljb25cIjp7XCJzYW1wbGVcIjowLFwiaW1nXCI6XCJodHRwOlxcL1xcL3RhcC5ydWJpY29ucHJvamVjdC5jb21cXC9zdGF0c1xcL3J0YnN5bmNcIn19LFwicHJpb3JpdHlcIjoyMCxcInJlc3luY1wiOjEsXCJtYXhfaWVfcGFydG5lcnNcIjoxMDAwLFwibGFzdE1vZGlmaWVkXCI6XCIyMDE4LTA1LTEwIDA5OjE5OjU5XCIsXCJtb2RpZmllZFwiOjE1OTc4NjEzODEsXCJkYXRlTW9kaWZpZWRcIjpcIjIwMjAtMDgtMTkgMTE6MjM6MDEgUERUXCJ9O1xuXG4gICAgZnVuY3Rpb24gaXNTZWxsZXJTeW5jKCl7cmV0dXJuISFyZXRyaWV2ZVF1ZXJ5UGFyYW1zKCkucH1mdW5jdGlvbiBzaG91bGRTa2lwQnV5ZXJTeW5jKCl7cmV0dXJuIHNraXBCdXllclN5bmN8fCExPT09c2tpcEJ1eWVyU3luYz9za2lwQnV5ZXJTeW5jOk1hdGguZmxvb3IoMTAwKk1hdGgucmFuZG9tKCkpPE51bWJlcihydGJfc3luYy5zYW1wbGUpP2FscmVhZHlSYW5PblBhZ2UoKT8obG9nKFwic2tpcHBpbmcgYnV5ZXIgc3luYyBjYXVzZSBhbHJlYWR5IHJhblwiKSxza2lwQnV5ZXJTeW5jPSEwKTpza2lwQnV5ZXJTeW5jPSExOihsb2coXCJza2lwcGluZyBidXllciBzeW5jIGR1ZSB0byBzYW1wbGluZ1wiKSxza2lwQnV5ZXJTeW5jPSEwKX1mdW5jdGlvbiBnZXRQYXJ0bmVyRmNhcHMoYSl7dHJ5e3ZhciBiPUpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGEpKX1jYXRjaChlKXt9cmV0dXJuIGJ8fHt9fWZ1bmN0aW9uIGdldFBhcnRuZXJGY2FwKGEsYil7cmV0dXJuIGI/KGFbYl09YVtiXXx8Y3JlYXRlTmV3RmNhcCgpLGFbYl0pOm51bGx9ZnVuY3Rpb24gaXNFeHBpcmVkKGEpe3JldHVybiFhfHwhYS5leHB8fGEuZXhwPChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlM31mdW5jdGlvbiBpc0NhcHBlZChhKXtyZXR1cm4hIWEmJmEuY2FwPj1jYXAmJiFpc0V4cGlyZWQoYSl9ZnVuY3Rpb24gY3JlYXRlTmV3RmNhcCgpe3JldHVybntjYXA6MCxleHA6KG5ldyBEYXRlKS5nZXRUaW1lKCkvMWUzK2V4cGlyYXRpb259fWZ1bmN0aW9uIGluY3JlbWVudFBhcnRuZXJGY2FwKGEpe2EuY2FwKyt9ZnVuY3Rpb24gcmVtb3ZlRXhwaXJlZFBhcnRuZXJzKGEpe2Zvcih2YXIgYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJmlzRXhwaXJlZChhW2JdKSYmZGVsZXRlIGFbYl19ZnVuY3Rpb24gc2F2ZVBhcnRuZXJGY2FwcyhhLGIpe2lmKGEpdHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShhLEpTT04uc3RyaW5naWZ5KGIpKX1jYXRjaChlKXt9fWZ1bmN0aW9uIGdldENvbnNlbnRXaW5kb3dGb3IoYSl7Zm9yKHZhciBiPXdpbmRvdztiIT09d2luZG93LnRvcDspe2I9Yi5wYXJlbnQ7dHJ5e2lmKGIuZnJhbWVzW2FdKXJldHVybiBifWNhdGNoKGUpe319cmV0dXJuITF9ZnVuY3Rpb24gb3pfb25QaXhlbHNMb2FkZWQoYSl7aWYoYSYmYS5waXhlbHMpZm9yKHZhciBiLGM9MDtjPGEucGl4ZWxzLmxlbmd0aDtjKyspKGI9YS5waXhlbHNbY10udXJsKSYmMD09Yi5pbmRleE9mKFwiaHR0cFwiKSYmKChuZXcgSW1hZ2UpLnNyYz1hcHBlbmRDb25zZW50UVMoYikpfWZ1bmN0aW9uIGdldFJlZmVycmVyKCl7dmFyIGEsYj1kb2N1bWVudC5yZWZlcnJlcjtyZXR1cm4gYiYmYi5sZW5ndGg+MCYmKGE9ZXNjYXBlKGIpKSxhfWZ1bmN0aW9uIHNldENvb2tpZShhLGIsYyl7dmFyIGQ7aWYoYyl7dmFyIGU9bmV3IERhdGU7ZS5zZXRUaW1lKGUuZ2V0VGltZSgpKzI0KmMqNjAqNjAqMWUzKSxkPVwiOyBleHBpcmVzPVwiK2UudG9HTVRTdHJpbmcoKX1lbHNlIGQ9XCJcIjtkb2N1bWVudC5jb29raWU9YStcIj1cIitlc2NhcGUoYikrZCtcIjsgcGF0aD0vOyBTYW1lU2l0ZT1Ob25lOyBTZWN1cmVcIn1mdW5jdGlvbiBkZWxldGVDb29raWUoYSl7ZG9jdW1lbnQuY29va2llPWErXCI9OyBQYXRoPS87IEV4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQ7IFNhbWVTaXRlPU5vbmU7IFNlY3VyZVwifWZ1bmN0aW9uIHJlYWRDb29raWUoYSl7Zm9yKHZhciBiPWErXCI9XCIsYz1kb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7Zm9yKHZhciBlPWNbZF07XCIgXCI9PWUuY2hhckF0KDApOyllPWUuc3Vic3RyaW5nKDEsZS5sZW5ndGgpO2lmKDA9PWUuaW5kZXhPZihiKSlyZXR1cm4gdW5lc2NhcGUoZS5zdWJzdHJpbmcoYi5sZW5ndGgsZS5sZW5ndGgpKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB0cmltX3doaXRlc3BhY2UoYSl7cmV0dXJuIGEucmVwbGFjZSgvXlxccyt8XFxzKyQvZ20sXCJcIil9ZnVuY3Rpb24gY291bnRDb29raWVzKGEpe2Zvcih2YXIgYj1kb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpLGM9MCxkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07ZT10cmltX3doaXRlc3BhY2UoZSksYT8wPT1lLmluZGV4T2YoYSkmJmMrKzpjKyt9cmV0dXJuIGN9ZnVuY3Rpb24gYWRkU2NyaXB0QXN5bmMoYSxiKXt2YXIgYztjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiksYiYmYy5zZXRBdHRyaWJ1dGUoXCJpZFwiLGIpLGMuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwidGV4dC9qYXZhc2NyaXB0XCIpLGE9YS5yZXBsYWNlKC9cXHMvZyxcIitcIiksYy5zZXRBdHRyaWJ1dGUoXCJzcmNcIixhKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIikuaXRlbSgwKS5hcHBlbmRDaGlsZChjKX1mdW5jdGlvbiBhZGRTY3JpcHQoYSxiKXt2YXIgYz0nPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgU1JDPVwiJythKydcIiBhc3luYz48XFwvc2NyaXB0Pic7ZG9jdW1lbnQud3JpdGUoYyl9ZnVuY3Rpb24gcmVhZFB1dENvb2tpZSgpe2Zvcih2YXIgYT17fSxiPWRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIiksYz0wO2M8Yi5sZW5ndGg7YysrKXtmb3IodmFyIGQ9YltjXTtcIiBcIj09ZC5jaGFyQXQoMCk7KWQ9ZC5zdWJzdHJpbmcoMSxkLmxlbmd0aCk7aWYoMD09ZC5pbmRleE9mKFwicHV0X1wiKSl7dmFyIGU9dW5lc2NhcGUoZC5zdWJzdHJpbmcoNCxkLmluZGV4T2YoXCI9XCIpKSksZj11bmVzY2FwZShkLnN1YnN0cmluZyhkLmluZGV4T2YoXCI9XCIpKzEsZC5sZW5ndGgpKTthW2VdPWZ9fXJldHVybiBhfWZ1bmN0aW9uIHJlYWRTcHV0Q29va2llKCl7Zm9yKHZhciBhPXt9LGI9ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKSxjPTA7YzxiLmxlbmd0aDtjKyspe2Zvcih2YXIgZD1iW2NdO1wiIFwiPT1kLmNoYXJBdCgwKTspZD1kLnN1YnN0cmluZygxLGQubGVuZ3RoKTtpZigwPT1kLmluZGV4T2YoXCJzcHV0XCIpKXt2YXIgZT1kLnN1YnN0cmluZyhkLmluZGV4T2YoXCI9XCIpKzEsZC5sZW5ndGgpO2lmKGUpZm9yKHZhciBmPWUuc3BsaXQoXCJ8XCIpLGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXSxpPWguc3BsaXQoXCJeXCIpO2lmKGkubGVuZ3RoPj0yKXt2YXIgaj11bmVzY2FwZShpWzBdKSxrPXVuZXNjYXBlKGlbMV0pO2Fbal09a319fX1yZXR1cm4gYX1mdW5jdGlvbiByZWFkVmFsdWUoYSl7dmFyIGI9cHV0W2FdO3JldHVybiBifHwoYj1zcHV0W2FdKSxifWZ1bmN0aW9uIHJldHJpZXZlUXVlcnlQYXJhbXMoKXtmb3IodmFyIGEsYj13aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKSxjPWIuc3BsaXQoXCImXCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7ZSsrKWE9Y1tlXS5zcGxpdChcIj1cIiksYVswXSYmKGRbZGVjb2RlVVJJQ29tcG9uZW50KGFbMF0pXT1kZWNvZGVVUklDb21wb25lbnQoYVsxXXx8XCJcIikpO3JldHVybiBkfWZ1bmN0aW9uIGdldENvdW50cnkoKXtyZXR1cm4obmF2aWdhdG9yLmxhbmd1YWdlfHxuYXZpZ2F0b3IudXNlckxhbmd1YWdlfHxcIlwiKS5zdWJzdHIoLTIpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZ2V0UmVnaW9uKGEpe2lmKGEpZm9yKHZhciBiIGluIHJlZ2lvbkNvdW50cmllcylpZihyZWdpb25Db3VudHJpZXMuaGFzT3duUHJvcGVydHkoYikmJnJlZ2lvbkNvdW50cmllc1tiXS5pbmRleE9mKGEpPi0xKXJldHVybiBiO3JldHVyblwiXCJ9ZnVuY3Rpb24gZ2V0UXVlcnlTdHJpbmdQYXJhbShhKXtpZighYXx8LTE9PT0od2luZG93LmxvY2F0aW9uLnNlYXJjaHx8XCJcIikuaW5kZXhPZihhKSlyZXR1cm4gbnVsbDt2YXIgYj1uZXcgUmVnRXhwKFwiWz8mXVwiK2ErXCIoKD0oW14mXSopKXwoJnwkKSlcIiksYz1iLmV4ZWMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7cmV0dXJuIWN8fGMubGVuZ3RoPDU/bnVsbDpkZWNvZGVVUklDb21wb25lbnQoY1szXXx8XCJcIil9ZnVuY3Rpb24gbG9hZEV4cGlyYXRpb24oKXt2YXIgYT17fSxiPXJlYWRDb29raWUoXCJwdXhcIik7aWYoIWIpcmV0dXJuIGE7dmFyIGMsZCxlPWIuc3BsaXQoXCImXCIpO2Zvcih2YXIgZiBpbiBlKXt2YXIgZz1lW2ZdLnNwbGl0KFwiPVwiKTtpZighKGcubGVuZ3RoPDIpKXtjPWdbMF0sZD1nWzFdO3ZhciBoPWQuc3BsaXQoXCIsXCIpO2gubGVuZ3RoPjAmJihhW2NdPXtjcmVhdGVkOmhbMF19KX19cmV0dXJuIGF9ZnVuY3Rpb24gc2F2ZUV4cGlyYXRpb24oYSl7dmFyIGI9XCJcIjtmb3IobmFtZSBpbiBhKXt2YXIgYz1hW25hbWVdO2IrPW5hbWUrXCI9XCIsYis9Yy5jcmVhdGVkLGIrPVwiJlwifXNldENvb2tpZShcInB1eFwiLGIsOTApfWZ1bmN0aW9uIGlzX2V4cGlyZWQoYSxiKXtyZXR1cm4hYnx8KGE9TnVtYmVyKGEpLCEoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMzZlNS1uZXcgRGF0ZSgyMDEwLDAsMSwwLDAsMCwwKS5nZXRUaW1lKCkvMzZlNTxuZXcgTnVtYmVyKGIuY3JlYXRlZCkrMjQqYSkpfWZ1bmN0aW9uIHNob3VsZEZpcmVQaXhlbChhKXt2YXIgYj1leHBpcmF0aW9uX2luZm9bYS5uaWRdO2lmKGImJiFpc19leHBpcmVkKGEuaW5mby50dGx8fGEuY29udGV4dC50dGx8fHJ0Yl9zeW5jLnR0bCxiKSlyZXR1cm4hMTt2YXIgYz0wPT1hLmluZm8uc2FtcGxlP2EuaW5mby5zYW1wbGU6YS5pbmZvLnNhbXBsZXx8YS5jb250ZXh0LnNhbXBsZXx8cnRiX3N5bmMucGl4ZWxfc2FtcGxlfHwwO3JldHVybiBjPU51bWJlcihjKSxNYXRoLmZsb29yKDEwMCpNYXRoLnJhbmRvbSgpKTxjfWZ1bmN0aW9uIGZpcmVQaXhlbChhKXt2YXIgYj1NYXRoLmZsb29yKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzM2ZTUpLGM9bmV3IERhdGUoMjAxMCwwLDEsMCwwLDAsMCkuZ2V0VGltZSgpLzM2ZTU7ZXhwaXJhdGlvbl9pbmZvW2EubmlkXT17Y3JlYXRlZDpiLWN9O3ZhciBkPWEuaW5mby5zZWN1cmU/YS5pbmZvLnNlY3VyZTphLmluZm87aWYoZCl7dmFyIGU9Z2V0UmVmZXJyZXIoKTtpZihkLnNjcmlwdCl7dmFyIGY9ZC5zY3JpcHQ7XCJycFwiPT1hLm5pZCYmZSYmKGY9YXBwZW5kUVNQYXJhbXMoZixcInJmPVwiK2UpKX1kLmltZyYmc2V0VGltZW91dChmdW5jdGlvbigpeyhuZXcgSW1hZ2UpLnNyYz1hcHBlbmRDb25zZW50UVMoZC5pbWcpfSwxMDApLGQuaWZyYW1lJiZkb2N1bWVudC53cml0ZShcIjxpZnJhbWUgc3JjPSdcIithcHBlbmRDb25zZW50UVMoZC5pZnJhbWUpK1wiJyB3aWR0aD0nMScgaGVpZ2h0PScxJyBmcmFtZWJvcmRlcj0nMCc+PC9pZnJhbWU+XCIpLGQuc2NyaXB0JiZhZGRTY3JpcHQoYXBwZW5kQ29uc2VudFFTKGYpKX19ZnVuY3Rpb24gc2h1ZmZsZShhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT1iKXJldHVybiExO2Zvcig7LS1iOyl7dmFyIGM9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihiKzEpKSxkPWFbYl0sZT1hW2NdO2FbYl09ZSxhW2NdPWR9fWZ1bmN0aW9uIHByaW9yaXRpemUoYSl7YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuaW5mby5wcmlvcml0eS1iLmluZm8ucHJpb3JpdHl9KX1mdW5jdGlvbiBhcnJheV9jb250YWlucyhhLGIpe2ZvcihlIGluIGEpaWYoYj09YVtlXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBkZXRlY3RJRSgpe3ZhciBhPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O3JldHVybiBhLmluZGV4T2YoXCJNU0lFIFwiKT4wfHwoYS5pbmRleE9mKFwiVHJpZGVudC9cIik+MHx8YS5pbmRleE9mKFwiRWRnZS9cIik+MCl9ZnVuY3Rpb24gZG9QaXhlbHMoKXt2YXIgYT0hMCxiPW5ldyBBcnJheSxjPW5ldyBBcnJheTtpZighcmVhZENvb2tpZShcImtoYW9zXCIpKXJldHVybiB2b2lkIGxvZyhcInNraXBwaW5nIGNhdXNlIG5vIGtoYW9zXCIpO2V4cGlyYXRpb25faW5mbz1sb2FkRXhwaXJhdGlvbigpO2Zvcih2YXIgZCBpbiBydGJfcGl4ZWxfc2V0KXt2YXIgZT1ydGJfcGl4ZWxfc2V0W2RdLGY9cnRiX3N5bmMucGl4ZWxfc2V0c1tlXTtpZihmKWZvcihrIGluIGYucGl4ZWxzKXt2YXIgZz1mLnBpeGVsc1trXTtnLnByaW9yaXR5PWcucHJpb3JpdHl8fGYucHJpb3JpdHl8fHJ0Yl9zeW5jLnByaW9yaXR5LGlzUGl4ZWxBbGxvd2VkKGcuc2FtcGxlLGcucmVnaW9uLHJlcXVlc3RfcmVnaW9uLGcuY291bnRyeSxyZXF1ZXN0X2NvdW50cnkpJiYoZy50dGw9Zy50dGx8fGYudHRsfHxydGJfc3luYy50dGwsXCJydGJcIiE9ZXx8IWcucmVzeW5jJiYhZi5yZXN5bmN8fHJlYWRWYWx1ZShnLm5pZHx8ayl8fChnLnR0bD0uNSksYltiLmxlbmd0aF09e3BpeGVsX3NldDplLG5pZDprLGluZm86Zyxjb250ZXh0OmZ9KX19aWYocHJpb3JpdGl6ZShiKSxkZXRlY3RJRSgpKXt2YXIgaD1ydGJfc3luYy5tYXhfaWVfcGFydG5lcnN8fGIubGVuZ3RoO2Iuc3BsaWNlKGgsYi5sZW5ndGgtaCl9Zm9yKHZhciBkIGluIGIpe3ZhciBpPWJbZF07aXNfZXhwaXJlZChpLmluZm8udHRsLGV4cGlyYXRpb25faW5mb1tpLm5pZF0pJiYwIT1pLmluZm8uc2FtcGxlJiYoY1tjLmxlbmd0aF09aSl9YT0wPT1jLmxlbmd0aCxzaHVmZmxlKGMpLHByaW9yaXRpemUoYyk7dmFyIGo9cnRiX3N5bmMubWF4X3BpeGVsc3x8MTtmb3IodmFyIGQgaW4gYyl7dmFyIGk9Y1tkXTtpZihzaG91bGRGaXJlUGl4ZWwoaSkmJihmaXJlUGl4ZWwoaSksLS1qPD0wKSlicmVha312YXIgaz1cInJ1Ymljb25cIixnPXJ0Yl9zeW5jLm5vdGlmeVtrXSxpPXtuaWQ6ayxpbmZvOmcsY29udGV4dDpydGJfc3luY307c2hvdWxkRmlyZVBpeGVsKGkpJiYoaS5pbmZvLmltZys9XCI/YWxsZmlyZWQ9XCIrYSxpLmluZm8uaW1nKz1cIiZjb29raWVzPVwiK2NvdW50Q29va2llcygpLGkuaW5mby5pbWcrPVwiJnB1dHM9XCIrY291bnRDb29raWVzKFwicHV0X1wiKSxpLmluZm8uaW1nKz1cIiZpZT1cIisoZGV0ZWN0SUUoKT9cInRydWVcIjpcImZhbHNlXCIpLGZpcmVQaXhlbChpKSksc2F2ZUV4cGlyYXRpb24oZXhwaXJhdGlvbl9pbmZvKX1mdW5jdGlvbiBpc1BpeGVsQWxsb3dlZChhLGIsYyxkLGUpe2lmKDA9PWEpcmV0dXJuITE7dmFyIGY9ISghYnx8IWMpLGc9ISghZHx8IWUpO3JldHVybiEoZnx8Zyl8fGYmJihiPT1jfHxhcnJheV9jb250YWlucyhiLGMpKXx8ZyYmKGQ9PWV8fGFycmF5X2NvbnRhaW5zKGQsZSkpfWZ1bmN0aW9uIGdldENvbnNlbnRQYXJhbXMoYSxiLGMpe2lmKCExPT09YylyZXR1cm4gYjt2YXIgZD1ifHx7fTtyZXR1cm4gYSYmXCJvYmplY3RcIj09dHlwZW9mIGEmJihhLnVzcFN0cmluZ3x8KGQuZ2Rwcl9jb25zZW50PWEudGNTdHJpbmd8fGEuY29uc2VudERhdGEpLHZvaWQgMCE9PWEuZ2RwckFwcGxpZXMmJihkLmdkcHI9YS5nZHByQXBwbGllcz8xOjApLGEudXNwU3RyaW5nJiYoZC51c19wcml2YWN5PWVuY29kZVVSSUNvbXBvbmVudChhLnVzcFN0cmluZykpKSxcInN0cmluZ1wiPT10eXBlb2YgYSYmKGQuZ2Rwcl9jb25zZW50PWEpLGR9ZnVuY3Rpb24gZ2V0Q29uc2VudFFTKGEpe3ZhciBiPVwiXCI7cmV0dXJuIGEmJihiKz12b2lkIDAhPT1hLmdkcHJfY29uc2VudD9cImdkcHJfY29uc2VudD1cIithLmdkcHJfY29uc2VudDpcIlwiLGIrPXZvaWQgMCE9PWEuZ2Rwcj9cIiZnZHByPVwiK2EuZ2RwcjpcIlwiLGIrPXZvaWQgMCE9PWEudXNfcHJpdmFjeT9cIiZ1c19wcml2YWN5PVwiK2EudXNfcHJpdmFjeTpcIlwiKSxifWZ1bmN0aW9uIGFwcGVuZFFTUGFyYW1zKGEsYil7cmV0dXJuIGImJmEmJihhKz1hLm1hdGNoKC9cXD8vKT9cIiZcIjpcIj9cIixhKz1iKSxhfWZ1bmN0aW9uIGFwcGVuZENvbnNlbnRRUyhhKXtyZXR1cm4gYXBwZW5kUVNQYXJhbXMoYSxnZXRDb25zZW50UVMoY29uc2VudFBhcmFtcykpfWZ1bmN0aW9uIGFwcGVuZFF1ZXJ5UGFyYW1zKGEpe3ZhciBiPVtcImVuZHBvaW50XCIsXCJyZWdpb25cIixcImNvdW50cnlcIixcInBcIl0sYz1cIlwiO2Zvcih2YXIgZCBpbiBhKWEuaGFzT3duUHJvcGVydHkoZCkmJi0xPT09Yi5pbmRleE9mKGQpJiYhZC5tYXRjaCgvXnJwXy8pJiYoYys9XCImXCIrZW5jb2RlVVJJQ29tcG9uZW50KGQpK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudChhW2RdKSk7cmV0dXJuIGN9ZnVuY3Rpb24gZ2V0Q29uc2VudFFTUGFyYW1zKCl7dmFyIGE9Z2V0UXVlcnlTdHJpbmdQYXJhbShcImdkcHJcIiksYj1nZXRRdWVyeVN0cmluZ1BhcmFtKFwiZ2Rwcl9jb25zZW50XCIpLGM9Z2V0UXVlcnlTdHJpbmdQYXJhbShcInVzX3ByaXZhY3lcIik7aWYobnVsbCE9PWIpdmFyIGQ9e2dkcHJfY29uc2VudDpifTtyZXR1cm4gYSYmKGQ9ZHx8e30sZC5nZHByPVwiZmFsc2VcIj09PWF8fFwiMFwiPT09YT8wOjEpLGMmJihkPWR8fHt9LGQudXNfcHJpdmFjeT1jKSxkfWZ1bmN0aW9uIGdldENvbnNlbnQoYSl7ZnVuY3Rpb24gYihhLGIsYyl7MCE9PWYubGVuZ3RoJiZmLmluY2x1ZGVzKGEpJiYoZj1mLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYiE9PWF9KSxjb25zZW50UGFyYW1zPWdldENvbnNlbnRQYXJhbXMoYyxjb25zZW50UGFyYW1zLGIpLDA9PT1mLmxlbmd0aCYmaygpKX1pZighKGNvbnNlbnRQYXJhbXM9Z2V0Q29uc2VudFFTUGFyYW1zKCkpfHx2b2lkIDA9PT1jb25zZW50UGFyYW1zLmdkcHIpdmFyIGM9Z2V0Q29uc2VudFdpbmRvd0ZvcihcIl9fdGNmYXBpTG9jYXRvclwiKSxkPWM/bnVsbDpnZXRDb25zZW50V2luZG93Rm9yKFwiX19jbXBMb2NhdG9yXCIpO2lmKCFjb25zZW50UGFyYW1zfHwhY29uc2VudFBhcmFtcy51c19wcml2YWN5KXZhciBlPWdldENvbnNlbnRXaW5kb3dGb3IoXCJfX3VzcGFwaUxvY2F0b3JcIik7aWYoIWMmJiFkJiYhZSlyZXR1cm4gdm9pZCBhKCk7dmFyIGY9W10sZz0hMSxoPVwidXMtXCIrTWF0aC5yYW5kb20oKSxpPVwidXMtXCIrTWF0aC5yYW5kb20oKSxqPVwidXMtXCIrTWF0aC5yYW5kb20oKSxrPWZ1bmN0aW9uKCl7Z3x8KGc9ITAsYSgpKX07aWYoYz8oZi5wdXNoKFwidGNmXCIpLGMucG9zdE1lc3NhZ2Uoe19fdGNmYXBpQ2FsbDp7Y2FsbElkOmosY29tbWFuZDpcImFkZEV2ZW50TGlzdGVuZXJcIixwYXJhbWV0ZXI6bnVsbCx2ZXJzaW9uOjJ9fSxcIipcIikpOmQmJihmLnB1c2goXCJjbXBcIiksZC5wb3N0TWVzc2FnZSh7X19jbXBDYWxsOntjYWxsSWQ6aCxjb21tYW5kOlwiZ2V0Q29uc2VudERhdGFcIixwYXJhbWV0ZXI6bnVsbH19LFwiKlwiKSksZSYmKGYucHVzaChcInVzcFwiKSxlLnBvc3RNZXNzYWdlKHtfX3VzcGFwaUNhbGw6e2NhbGxJZDppLGNvbW1hbmQ6XCJnZXRVU1BEYXRhXCIsdmVyc2lvbjoxfX0sXCIqXCIpKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixmdW5jdGlvbihhKXt0cnl7aWYoYSYmYS5kYXRhKXt2YXIgYz1cInN0cmluZ1wiPT10eXBlb2YgYS5kYXRhP0pTT04ucGFyc2UoYS5kYXRhKTphLmRhdGEsZD1jLl9fY21wUmV0dXJuLGU9Yy5fX3VzcGFwaVJldHVybixmPWMuX190Y2ZhcGlSZXR1cm47ZiYmZi5jYWxsSWQ9PT1qJiZmLnJldHVyblZhbHVlJiYoXCJ0Y2xvYWRlZFwiPT09Zi5yZXR1cm5WYWx1ZS5ldmVudFN0YXR1c3x8XCJ1c2VyYWN0aW9uY29tcGxldGVcIj09PWYucmV0dXJuVmFsdWUuZXZlbnRTdGF0dXMpPyhjbGVhclRpbWVvdXQobSksYihcInRjZlwiLGYuc3VjY2VzcyxmLnJldHVyblZhbHVlKSk6ZCYmZC5jYWxsSWQ9PT1oJiYoY2xlYXJUaW1lb3V0KG4pLGIoXCJjbXBcIixkLnN1Y2Nlc3MsZC5yZXR1cm5WYWx1ZSkpLGUmJmUuY2FsbElkPT09aSYmKGNsZWFyVGltZW91dChsKSxiKFwidXNwXCIsZS5zdWNjZXNzLGUucmV0dXJuVmFsdWUpKX19Y2F0Y2goZSl7fX0pLGUpdmFyIGw9c2V0VGltZW91dChmdW5jdGlvbigpe2IoXCJ1c3BcIiwhMSl9LDEwMCk7aWYoYyl2YXIgbT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihcInRjZlwiLCExKX0sNTAwKTtlbHNlIGlmKGQpdmFyIG49c2V0VGltZW91dChmdW5jdGlvbigpe2IoXCJjbXBcIiwhMSl9LDUwMCl9ZnVuY3Rpb24gY2hlY2tDb29raWVzKCl7aWYoIWRvY3VtZW50LmNvb2tpZSl7aWYoc2V0Q29va2llKFwiY2RcIixcImZhbHNlXCIpLCFkb2N1bWVudC5jb29raWUpcmV0dXJuIHZvaWQgbG9nKFwic2tpcHBpbmcgY2F1c2UgY2Fubm90IHNldCBjb29raWVzXCIpO2RlbGV0ZUNvb2tpZShcImNkXCIpfWlmKHJlYWRDb29raWUoXCJraGFvc1wiKSlydW5TeW5jcygpO2Vsc2V7dmFyIGE9bmV3IEltYWdlO2Eub25sb2FkPWZ1bmN0aW9uKCl7cnVuU3luY3MoKX0sYS5zcmM9XCJodHRwczovL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbS9raGFvcy5qcGc/XCIrZ2V0Q29uc2VudFFTKGNvbnNlbnRQYXJhbXMpfX1mdW5jdGlvbiBhbHJlYWR5UmFuT25QYWdlKCl7ZnVuY3Rpb24gYSgpe3Nlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oYil9aWYoIW5hdmlnYXRvci5jb29raWVFbmFibGVkKXJldHVybiBsb2coXCJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGNvb2tpZXNcIiksITE7dHJ5e3ZhciBiPVwiZW1pbHlSYW5cIjt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcj93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLGEsITEpOndpbmRvdy5hdHRhY2hFdmVudCYmd2luZG93LmF0dGFjaEV2ZW50KFwib251bmxvYWRcIixhKTt2YXIgYz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGIpO2lmKChjPWMmJk51bWJlcihjKSkmJihuZXcgRGF0ZSkuZ2V0VGltZSgpLWM8M2U1KXJldHVybiEwO3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oYiwobmV3IERhdGUpLmdldFRpbWUoKSl9Y2F0Y2goZSl7cmV0dXJuIGxvZyhcImZhaWxlZCBjaGVja2luZyBpZiBhbHJlYWR5IHJhbjpcIixlKSwhMX1yZXR1cm4hMX1mdW5jdGlvbiBzZWxsZXJTeW5jKGEsYixjKXthPWF8fHt9O3ZhciBkPXtcInVzLXdlc3RcIjpcIlwiLFwidXMtZWFzdFwiOlwiXCIsZXU6XCJcIixhcGFjOlwiXCJ9LGU9XCJcIjthLmVuZHBvaW50IGluIGQmJihlPVwiLVwiK2EuZW5kcG9pbnQpO3ZhciBmPVtcImh0dHBzOi8vcGl4ZWxcIixlLFwiLnJ1Ymljb25wcm9qZWN0LmNvbS9leGNoYW5nZS9zeW5jLnBocD9wPVwiLGJdLmpvaW4oXCJcIik7Zis9YXBwZW5kUXVlcnlQYXJhbXMoYSksZis9YXBwZW5kUXVlcnlQYXJhbXMoYyksKG5ldyBJbWFnZSkuc3JjPWZ9ZnVuY3Rpb24gaW5pdGlhdGVTZWxsZXJTeW5jKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWdldFBhcnRuZXJGY2FwcyhcImZjYXBcIik7cmVtb3ZlRXhwaXJlZFBhcnRuZXJzKGIpO3ZhciBjPWdldFBhcnRuZXJGY2FwKGIsYSksZD0hMTtyZXR1cm4gaXNDYXBwZWQoYyl8fChkPSEwLGluY3JlbWVudFBhcnRuZXJGY2FwKGMpKSxzYXZlUGFydG5lckZjYXBzKFwiZmNhcFwiLGIpLGR9ZnVuY3Rpb24gcnVuU3luY3MoKXtpZihyZWFkQ29va2llKFwia2hhb3NcIikpe3ZhciBhPXJldHJpZXZlUXVlcnlQYXJhbXMoKSxiPWEucDtiJiYobG9nKFwiZG9pbmcgc2VsbGVyIHN5bmNcIiksYi5zcGxpdChcIixcIikuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBpbml0aWF0ZVNlbGxlclN5bmMoYSl9KS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3JldHVybiBzZWxsZXJTeW5jKGEsYixjb25zZW50UGFyYW1zKX0pKSxzaG91bGRTa2lwQnV5ZXJTeW5jKCl8fChsb2coXCJkb2luZyBidXllciBzeW5jXCIpLGRvUGl4ZWxzKCkpfX1mdW5jdGlvbiBzdGFydFN5bmMoKXtyZXR1cm4hKHNob3VsZFNraXBCdXllclN5bmMoKSYmIWlzU2VsbGVyU3luYygpKSYmKGdldENvbnNlbnQoY2hlY2tDb29raWVzKSwhMCl9ZnVuY3Rpb24gbG9nKCl7dHJ5e1widHJ1ZVwiPT09cmVhZENvb2tpZShcImVtaWx5X2RlYnVnXCIpJiZjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLFtcIkVtaWx5OlwiXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfWNhdGNoKGUpe319dmFyIHNraXBCdXllclN5bmMsY29uc2VudFBhcmFtcyxyZWdpb25Db3VudHJpZXM9e2FmOltcImFvXCIsXCJiaVwiLFwiYmpcIixcImJmXCIsXCJid1wiLFwiY2ZcIixcImNpXCIsXCJjbVwiLFwiY2RcIixcImNnXCIsXCJrbVwiLFwiY3ZcIixcImRqXCIsXCJkelwiLFwiZWdcIixcImVyXCIsXCJlaFwiLFwiZXRcIixcImdhXCIsXCJnaFwiLFwiZ25cIixcImdtXCIsXCJnd1wiLFwiZ3FcIixcImtlXCIsXCJsclwiLFwibHlcIixcImxzXCIsXCJtYVwiLFwibWdcIixcIm1sXCIsXCJtelwiLFwibXJcIixcIm11XCIsXCJtd1wiLFwieXRcIixcIm5hXCIsXCJuZVwiLFwibmdcIixcInJlXCIsXCJyd1wiLFwic2RcIixcInNuXCIsXCJzaFwiLFwic2xcIixcInNvXCIsXCJzc1wiLFwic3RcIixcInN6XCIsXCJzY1wiLFwidGRcIixcInRnXCIsXCJ0blwiLFwidHpcIixcInVnXCIsXCJ6YVwiLFwiem1cIixcInp3XCJdLGFuOltcImFxXCIsXCJ0ZlwiLFwiYnZcIl0sYXM6W1wiYWZcIixcImFlXCIsXCJhbVwiLFwiYXBcIixcImF6XCIsXCJiZFwiLFwiYmhcIixcImJuXCIsXCJidFwiLFwiY25cIixcImhrXCIsXCJpZFwiLFwiaW5cIixcImlvXCIsXCJpclwiLFwiaXFcIixcImlsXCIsXCJqb1wiLFwianBcIixcImt6XCIsXCJrZ1wiLFwia2hcIixcImtyXCIsXCJrd1wiLFwibGFcIixcImxiXCIsXCJsa1wiLFwibW9cIixcIm12XCIsXCJtbVwiLFwibW5cIixcIm15XCIsXCJucFwiLFwib21cIixcInBrXCIsXCJwaFwiLFwia3BcIixcInBzXCIsXCJxYVwiLFwic2FcIixcInNnXCIsXCJzeVwiLFwidGhcIixcInRqXCIsXCJ0bVwiLFwidGxcIixcInR3XCIsXCJ1elwiLFwidm5cIixcInllXCJdLGF1OltcImFzXCIsXCJhdVwiLFwiY2NcIixcImNrXCIsXCJjeFwiLFwiZmpcIixcImZtXCIsXCJndVwiLFwiaG1cIixcImtpXCIsXCJtaFwiLFwibXBcIixcIm5jXCIsXCJuZlwiLFwibnVcIixcIm5yXCIsXCJuelwiLFwicG5cIixcInB3XCIsXCJwZ1wiLFwicGZcIixcInNiXCIsXCJ0a1wiLFwidG9cIixcInR2XCIsXCJ1bVwiLFwidnVcIixcIndmXCIsXCJ3c1wiXSxldTpbXCJheFwiLFwiYWxcIixcImFkXCIsXCJhdFwiLFwiYmVcIixcImJnXCIsXCJiYVwiLFwiYnlcIixcImNoXCIsXCJjeVwiLFwiY3pcIixcImRlXCIsXCJka1wiLFwiZXNcIixcImVlXCIsXCJldVwiLFwiZmlcIixcImZyXCIsXCJmb1wiLFwidWtcIixcImdlXCIsXCJnZ1wiLFwiZ2lcIixcImdyXCIsXCJoclwiLFwiaHVcIixcImltXCIsXCJpZVwiLFwiaXNcIixcIml0XCIsXCJqZVwiLFwibGlcIixcImx0XCIsXCJsdVwiLFwibHZcIixcIm1jXCIsXCJtZFwiLFwibWtcIixcIm10XCIsXCJtZVwiLFwibmxcIixcIm5vXCIsXCJwbFwiLFwicHRcIixcInJvXCIsXCJydVwiLFwic2pcIixcInNtXCIsXCJyc1wiLFwic2tcIixcInNpXCIsXCJzZVwiLFwidHJcIixcInVhXCIsXCJ2YVwiXSxuYTpbXCJhd1wiLFwiYWlcIixcImFuXCIsXCJhZ1wiLFwiYnFcIixcImJzXCIsXCJibFwiLFwiYnpcIixcImJtXCIsXCJiYlwiLFwiY2FcIixcImNyXCIsXCJjdVwiLFwiY3dcIixcImt5XCIsXCJkbVwiLFwiZG9cIixcImdwXCIsXCJnZFwiLFwiZ2xcIixcImd0XCIsXCJoblwiLFwiaHRcIixcImptXCIsXCJrblwiLFwibGNcIixcIm1mXCIsXCJteFwiLFwibXNcIixcIm1xXCIsXCJuaVwiLFwicGFcIixcInByXCIsXCJzdlwiLFwicG1cIixcInN4XCIsXCJ0Y1wiLFwidHRcIixcInVzXCIsXCJ2Y1wiLFwidmdcIixcInZpXCJdLHNhOltcImFyXCIsXCJib1wiLFwiYnJcIixcImNsXCIsXCJjb1wiLFwiZWNcIixcImZrXCIsXCJnZlwiLFwiZ3lcIixcInBlXCIsXCJweVwiLFwiZ3NcIixcInNyXCIsXCJ1eVwiLFwidmVcIl19LHJ0Yl9zeW5jPXdpbmRvdy5ydGJfc3luY3x8e30scnRiX3BpeGVsX3NldD1bXCJydGJcIixcImF1ZFwiLFwibmV0c1wiLFwicHVic1wiXSxyZXF1ZXN0X2NvdW50cnk9Z2V0UXVlcnlTdHJpbmdQYXJhbShcImNvXCIpfHxnZXRDb3VudHJ5KCkscmVxdWVzdF9yZWdpb249Z2V0UXVlcnlTdHJpbmdQYXJhbShcImdlb1wiKXx8Z2V0UmVnaW9uKHJlcXVlc3RfY291bnRyeSkscHV0PXJlYWRQdXRDb29raWUoKSxzcHV0PXJlYWRTcHV0Q29va2llKCksZXhwaXJhdGlvbj04NjQwMCxjYXA9MSxleHBpcmF0aW9uX2luZm87c3RhcnRTeW5jKCk7PC9zY3JpcHQ+XG5cblxuXG5cblxuPC9ib2R5PjwvaHRtbD4ifSwgImhlYWRlcnNTaXplIjogMTYwNywgImJvZHlTaXplIjogOTU5NSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTEyMDJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAxMDAzLjU1MiwgInJlY2VpdmUiOiAyLjQwMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMDcxWiIsICJ0aW1lIjogLTEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvYW1wNGFkcy12MC5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wNzJaIiwgInRpbWUiOiAtMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hbXA0YWRzLXYwLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IC0xLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIn0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAiIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsic2VuZCI6IC0xLCAid2FpdCI6IC0xLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjA3MloiLCAidGltZSI6IC0xLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2FtcC1hZC1leGl0LTAuMS5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wNzNaIiwgInRpbWUiOiAtMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hbXAtYW5hbHl0aWNzLTAuMS5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wNzNaIiwgInRpbWUiOiAtMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hbXAtZml0LXRleHQtMC4xLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IC0xLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIn0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAiIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsic2VuZCI6IC0xLCAid2FpdCI6IC0xLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjA3OFoiLCAidGltZSI6IC0xLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2FtcC1mb3JtLTAuMS5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wNzhaIiwgInRpbWUiOiA3NTUuNjIzOTk5OTk5OTk5OSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9jc3MiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvY3NzLCovKjtxPTAuMSJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNDg0LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiQXNDSWQwdkJHcVlsMzB3SWlKdG93YnVUWFpSN3NxdTlmWWtfUUZKU1NMdy0xNjg0OTQyODc5LTAtQWZkTjhuKzFuTTF0UmhzcFowVjdsNUh5ZlliVEtKZ2d0WXpBMkFEUEpyOFVvQTM2SjB3azhZTkNJeGtDaVlnU3NQdXBlZVNGblFSS1kvcitheHlwZlQ0PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NjA1YzFiNWM3YS1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE5IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1lMVZmTmZDcWRTcTNLWFRmRENpaThqMXhWVVk4RnU4TVBMb05aZmFoMnFGZVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPUFzQ0lkMHZCR3FZbDMwd0lpSnRvd2J1VFhaUjdzcXU5ZllrX1FGSlNTTHctMTY4NDk0Mjg3OS0wLUFmZE44bisxbk0xdFJoc3BaMFY3bDVIeWZZYlRLSmdndFl6QTJBRFBKcjhVb0EzNkowd2s4WU5DSXhrQ2lZZ1NzUHVwZWVTRm5RUktZL3IrYXh5cGZUND07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvY3NzIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWUxVmZOZkNxZFNxM0tYVGZEQ2lpOGoxeFZVWThGdThNUExvTlpmYWgycUZlIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMzc2NywgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiAzMTYzLCAidGV4dCI6ICIvKlxuICogU2VlOiBodHRwczovL2ZvbnRzLmdvb2dsZS5jb20vbGljZW5zZS9nb29nbGVyZXN0cmljdGVkXG4gKi9cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdHb29nbGUgU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbCgnR29vZ2xlIFNhbnMgUmVndWxhcicpLCBsb2NhbCgnR29vZ2xlU2Fucy1SZWd1bGFyJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MTYvNFVhR3JFTkhzeEpsR0R1R28xT0lsTDNLd3A1TUtnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cbi8qIGdyZWVrICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdHb29nbGUgU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbCgnR29vZ2xlIFNhbnMgUmVndWxhcicpLCBsb2NhbCgnR29vZ2xlU2Fucy1SZWd1bGFyJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MTYvNFVhR3JFTkhzeEpsR0R1R28xT0lsTDNOd3A1TUtnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnR29vZ2xlIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoJ0dvb2dsZSBTYW5zIFJlZ3VsYXInKSwgbG9jYWwoJ0dvb2dsZVNhbnMtUmVndWxhcicpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2dvb2dsZXNhbnMvdjE2LzRVYUdyRU5Ic3hKbEdEdUdvMU9JbEwzQndwNU1LZy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xufVxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdHb29nbGUgU2Fucyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgc3JjOiBsb2NhbCgnR29vZ2xlIFNhbnMgUmVndWxhcicpLCBsb2NhbCgnR29vZ2xlU2Fucy1SZWd1bGFyJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MTYvNFVhR3JFTkhzeEpsR0R1R28xT0lsTDNBd3A1TUtnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnR29vZ2xlIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHNyYzogbG9jYWwoJ0dvb2dsZSBTYW5zIFJlZ3VsYXInKSwgbG9jYWwoJ0dvb2dsZVNhbnMtUmVndWxhcicpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2dvb2dsZXNhbnMvdjE2LzRVYUdyRU5Ic3hKbEdEdUdvMU9JbEwzT3dwNC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0dvb2dsZSBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNTAwO1xuICBzcmM6IGxvY2FsKCdHb29nbGUgU2FucyBNZWRpdW0nKSwgbG9jYWwoJ0dvb2dsZVNhbnMtTWVkaXVtJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MTYvNFVhYnJFTkhzeEpsR0R1R28xT0lsTFU5NFl0M0N3Wi1Qdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG59XG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnR29vZ2xlIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHNyYzogbG9jYWwoJ0dvb2dsZSBTYW5zIE1lZGl1bScpLCBsb2NhbCgnR29vZ2xlU2Fucy1NZWRpdW0nKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9nb29nbGVzYW5zL3YxNi80VWFickVOSHN4SmxHRHVHbzFPSWxMVTk0WXR3Q3daLVB3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnR29vZ2xlIFNhbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHNyYzogbG9jYWwoJ0dvb2dsZSBTYW5zIE1lZGl1bScpLCBsb2NhbCgnR29vZ2xlU2Fucy1NZWRpdW0nKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9nb29nbGVzYW5zL3YxNi80VWFickVOSHN4SmxHRHVHbzFPSWxMVTk0WXQ4Q3daLVB3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG4vKiBsYXRpbi1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0dvb2dsZSBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNTAwO1xuICBzcmM6IGxvY2FsKCdHb29nbGUgU2FucyBNZWRpdW0nKSwgbG9jYWwoJ0dvb2dsZVNhbnMtTWVkaXVtJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MTYvNFVhYnJFTkhzeEpsR0R1R28xT0lsTFU5NFl0OUN3Wi1Qdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuLyogbGF0aW4gKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0dvb2dsZSBTYW5zJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNTAwO1xuICBzcmM6IGxvY2FsKCdHb29nbGUgU2FucyBNZWRpdW0nKSwgbG9jYWwoJ0dvb2dsZVNhbnMtTWVkaXVtJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZ29vZ2xlc2Fucy92MTYvNFVhYnJFTkhzeEpsR0R1R28xT0lsTFU5NFl0ekN3WS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuIn0sICJoZWFkZXJzU2l6ZSI6IDE2MTEsICJib2R5U2l6ZSI6IDYwNCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMjIxNX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDc1NC4wODQsICJyZWNlaXZlIjogMS41NH0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMDc5WiIsICJ0aW1lIjogMTI4NC42MDAwMDAwMDAwMDAxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2VuX2JsLnBuZyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qLCovKjtxPTAuOCJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTM2LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiUFlVUDBNS0JqVEJjV3B1Ty4zU1M0V3pUdmRia1lnRXA1SUVJRGthdDJLdy0xNjg0OTQyODgxLTAtQVJMeWJMTGF0ekQ4TFg3U2lwQzRiVUFyTjBBNThYQjUyMnNHR2crVzVKaVVFRVlscTBuSFpWaHNJOHRCRjVwR2UrRmozd1Z5VnhGNGVJeGRkQWZnWG00PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0LVJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NjY5ZDU5MThlNi1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMjQ3MSJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogImltYWdlL3BuZyJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIxIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcIlFtWHh1M0FXZ3dyVllxb1ZtZ0xnNFQzV0RreFRnRzkxenJ3TmVudHpZNWpueGtcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1QWVVQME1LQmpUQmNXcHVPLjNTUzRXelR2ZGJrWWdFcDVJRUlEa2F0Mkt3LTE2ODQ5NDI4ODEtMC1BUkx5YkxMYXR6RDhMWDdTaXBDNGJVQXJOMEE1OFhCNTIyc0dHZytXNUppVUVFWWxxMG5IWlZoc0k4dEJGNXBHZStGajN3VnlWeEY0ZUl4ZGRBZmdYbTQ9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MjEgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2VuX2JsLnBuZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1YeHUzQVdnd3JWWXFvVm1nTGc0VDNXRGt4VGdHOTF6cndOZW50elk1am54ayJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDI0NzEsICJtaW1lVHlwZSI6ICJpbWFnZS9wbmciLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBZUNBWUFBQURPNHVkWEFBQUpia2xFUVZSbzN1MWFaMjhVU1JBMUpoaVRmQ2FlQ1VLQUpaSU9jY1FqQ2d3WWpNaEpHQVFHUkJadzVHQkFaQkVrY3dTZnljWmtqdVJzSEhIQUdXL2tCOXhQdUEvM0Ercm0xYnFYM3RuZXNUMWVvME9hRHlWN2FucDZlcnBmVjcxNnZTRmZ2MzRseXl3ellmOW9adFBzcFdZeFJCUWlXNGcxUVpZRnlhbzErOWtDbG1WdFlYOXJGbVVCeTdLMnNBOU5BcXZNNmJZbXlqSXpOa0lKckFvTlVFTno3QlR5d1ViUnVYYTZXdTBpdHpWWmxqWGZFcFhBT2x6aFpGQ04vMmluN2hrMi9uOU1ub09lZi9tK0VheXNySXhtejU3Tjl2anhZOVA5SERod2dQdkl6TXhVM3ErdnI2Zno1OC9UdEduVGFPREFnZFNqUnc4YU9YSWtyVml4Z2pJeU1wVFByRnExaXZ2ODh1VkxtM3o3clZ1M3VQK2JOMi8raU1DcVV3SXJ2c1RCWU1xd3VhbmE5WlVTU3AzVU1kMERzTGdpQnhYYXZ3L0FEaDA2cENYckVMYVpNMmVhN2ljMk5wYjdlUExraWQ4OStQcjI3ZXQ5VDJSa0pBMGVQSmpDd3NMNE9qUTBsTFp0MitiM1hGUlVGTit2cWFscGsyOC9jdVFJOTMvdzRNRWZFVmovS29HMXVoRlkyUktBUG1yL3h4WjUvR0VaZHRwZTVxUTZWOXNPY09qUW9kU3JWeThhTjI0Y0wzQkJRVUZRZ1lVbzJMNTllNzZIQ0ZSWVdPaTk1M1E2NmR5NWMxNkFBZVRmRTFnWTY1WXRXeWd0TGUySFRJZUd3TXF4Kzk5N1d1K2lYL0k4OTN0bjJlbDhsWXRjN3VBUDdQbno1N3h3UzVZc29kT25UL1AvVzdkdURScXc2dXJxcUgvLy91eEhxZ3owN1BYcjE3bE5lSGc0VlZWVmZUZGcvZWpXWW1EQlFPUkI2S095UFFSL3BBYTBWQTF3d1J3WStBMFc3dXJWcTFSUlVjR1JwV2ZQbm1TMzJ3MmZlL2p3SVFOdzA2Wk56RlBRWGdVc1JDUDRvcU9qeWUwMlR1MWp4b3loUVlNRzBiMTc5NVRBeXN2TG81TW5UOUw2OWV1NVgxd0g2Z3ZmY3Zic1dkcTRjU09QRTk5WFhWM3QxdzdjN3VMRmk1U2VudTUzRCsrOGNPRUNiZGl3Z1JJU0VwZ2ZnaWVxM29lMlNVbEpuTTQzYjk1TWx5OWZwc3JLU21WYmw4dEZ5Y25KdEhQblRvcVBqNmRqeDQ2Wmpwakd3TElaVDNpRHkwMi9hMFMvYTRZSFlITUtIWlFYQlA2RlNlcmF0U3VuSVJFUndMR3drTmV1WFZPUHBhR0J5YTdnU3UzYXRlTy9FeWRPcE1tVEovc0JhOUtrU2V6YnUzZHZrK054T0J3Qk9kYmh3NGU5NlZKWXAwNmRmRUFvREpHM1c3ZHVQbTFoNEhqMzc5OXZGc2U2Y2VNR3o0MitEMnc2UkhsOXFoZmoxTDhQRzFBUHdCRWpSdmkxaGNYRnhRVUVidENBaFZUNDYwY0g1VHUrK2NxZG5tZEN0V2RBOGtIMmExckJ2N0JUOFVFTEZ5NzArckRyNEFQZkNsU2w0VDZpQzNZNWdIYm56aDBmWWk0REN5UWRQaXlVbVRIS0M0Ym84K2JORzdiVnExZDdVNmNNU0N3eXdBNVFJTUlnclphWGx6TXdPM1Rvd0dETXlja3hCTmJidDI4NWNxTnRZbUlpUjcraW9pTGF2bjI3dC9Db3JhM2x0dm41K2R3TzR6aDE2aFMvRDRhNUZadFc1cXpyMXEzalBwWXZYODd2UWJVTHNBOGZQcHo5aU1oQkExYXVJdnJjcUhIUlQ1bDJldHZnZnk5ZDgwMHY4RHdicWJVNVZlazBwWDhCUFBnWWVSZmJiRGFXQWVEWHB3Y3NFTWc5b29FK3JieDY5Y29QV0NEbUlxTEppMmtHV0VnWituUWlRQ3ZMRzVBeDRFTjZEbFFCVHA4KzNSQlljK2JNQ1ZncGpoOC9udThoMWNtOEVrRFN0ejF6NWd6Zlc3QmdnZGNIZVFVK3pLVlBJSG42bENNK3h0T213R3FPM2ExMVVYU2p3QnFqQWEwbDRNSkM0d1A3OWV2SGl5VGZXN3QyclhJeGtYYmdYN05tamJMUHNXUEgrZ0FMa1VRQTY5T25UNjBDbGtwZlc3eDRzVTgwTENrcDRlc2hRNFlvKzhLbTZkS2xDMGNqRWVYMHdJSy9jK2ZPdklGVWFhbTB0SlFqRVBnaTVnM1JDbEVKbTBqRjg4UkdGRDVrQjd4dnhvd1o5T3paTTcrNUR5ckhVdkdsRWkwRlRzcDNVSVhUdUdPWFp2TUxQZjM4MWRCOGdLTEVGaW50Nk5HalBpYlNIU1pFbmx4TXZ1QTdxajZYTGwwYU1CVytlL2V1VmNBQ2FBSjl3NlZMbC9qNndZTUhmRDFyMXF5QS9RbCtrNVdWcFFSV2NYRXhYL2ZwMDZmSnNRRmdhQXRnWVI1VkJ1REpFUXJ6Z0w1RmRFZDJXTFJvRVc4T015SndpNEdGYWhEMy9xd05qR2hFcUNRdFpVWm0ycWk5MXJZcEVNcHBSUDQ0STBNNDl3cTZXZ1RUKzJSRGhhZ0hsa2kzcWxUaGwrSzExSHY3OW0wZmFjRklidEFEQzVVZnJoSEpBcjFqd29RSjNBYlJRZ1dzN094c3c2aW5rbXJBcGNDUmpFeE8xNGplKy9idG8xR2pSdm5NZGUvZXZaWGlzbWxnZlZRQUM3b1Y3djFSb3diV2JRMXd3M005YVJCY0xLVzIrU0VWaXlja2dOVFVWS1doWkVZYjdIRHgzTzdkdTltM1k4Y09aYjhpTmNtVHMzLy9mdmFCdHpRMUx1eGN0RjIyYkprcFlMMTQ4WUt2d1ZVQ3ZXUEFnQUUrbkU4UExCUWordlNsVDZkQ1p4UFJEU2NJWmxNWnhHS01RWEF2UlBpbVpKbFdBZXRNcGVjY01hbmFGekQzNjc0SnA5MHliTFM3SEpWaHl6aGFURXlNVXVYVzg0T09IVHR5T3l3WWM3cTdkNzNTZ3VvWkFGVVBMS1FMcEFwd0xhUGRpQjBOYmlPL3I2WEFnbTZFOTBSRVJMQXdxMitQQ2c2Z1FZUUJRQUtSZHozNFpCTjBBTG9XQUNDK0RWV2p2aTBLSEZTdmUvYnNZWjBQbFNTMEsxU0dldkJndklJMnFEUTFVOENTSlFVdnNCb2oxclZHWUtYVnUvbXdHajdvV1R2S25GUmxRbXBBcmdkNXhRU3JlSXRzOCtiTjg2cnlndGlLaGRaWFhWZXVYRkhLRGJCZHUzYXh2M3YzN2l4TjZOL3ovdjE3M3ZWb0E0MnN1VWM2ZW1ESlVRL1NoTndXNUhydTNMbmVVdCtvS3NRSkFYeW8rR1J5amU4WHNzcWpSNC9ZQjRDSmlLd244SUp6aWdnS01JbnYwUjk2b3lnQVNHWFF0d213a2hvNTFtLzVkcHFhNzJrWG5tNmpMYVVPK3R5SzMyK0pBK2NwVTZZMDJUWWxKY1ZMVG9XS0RCK0FDWU1DRHU2RVhRbWdDdDZtQnhZbVhFd3lER0VmbFNjVTdhbFRwL0t6b3BEUUU5aVdBZ3ViUmV4ODlBMng5UGp4NDl3M2ZGRDJaVVZjQlN3c0xNNVA0WWU4QUcwSjZWK01SZVp3aUVKQzRnQm5RdkZ6NHNRSnIxaU16U1JISUp3R0NGNDJmLzU4NXF2WUJCZ1gvS3FEZU5QQUtsQUE2NzFXNFlVMi90SWhUUHU3OFpPREJkSmdIRGpyRjhPSTVJc2RLbGVDMEwyR0RSdm1CUXBTR0hhNWlyenJCZG5SbzBmN0ZRZzRBTWV4aHVvWXFhWEFFbEVaMFFhQ3FLelNBOXp5T2FTUjhnN0FJTEtKcWs1c01BQU1QRXl2cHE5Y3VkTHZaQUNVUVZVTkE2aXlvQ3hVZW9peGJWSVY0bGNNQlJMZlN0WUllZUpuSi84ZzhQOTIrSW13anJNNlRKeEt3ekV5TEFUU0h3Qm9WdDlxamlGMUlWcEE0VFo3aUkzTkJmNkhNMFhWa1pPK2JXNXVMcjErL1pvNWFsTnRRZHhmdm56cEo1WUdEVmg3TkFLK3ZOakJ4elFSbVhicjFONnkxZ0ZyYzZtbjhoUFdMOHRHdDJxdDM3OWIxa3BnNGZDNVQ1YWRmKytPOHo2NzI1b295NElBTE1zc3M0QmxtUVVzeXl4Z1dXWlpxK3cvc2YrVXdvcjlxZ01BQUFBQVNVVk9SSzVDWUlJPSIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMTU5MSwgImJvZHlTaXplIjogMjQ3MSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogNDA2Mn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDEyODIuNjI0LCAicmVjZWl2ZSI6IDEuOTc2fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wNzlaIiwgInRpbWUiOiA0Ni45NTEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvaWNvbi5wbmciLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDUzNSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogImFHbXRYMThEdHFlbFVVMEtLMFlPTzBVekxBMEo5UU92VXVqQzEzc21ra00tMTY4NDk0Mjg4MC0wLUFVQmh2Y05oUFhOTDJWSTdsUWpSS0l6ZkVoR0lGdnNYdHl4UEIzUTNCY0RBeHRKbjBpZzhZUW50ZlJkYU8zM0ZKc0VmeS9JdTVQakJxcDJUM0ZMRXNQST0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTI3NDMifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJISVQifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ2N2ZkMjAzN2U0LUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIyOTUifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJpbWFnZS9wbmcifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToyMCBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiXCJRbWJOMkduTThYdW5rR0p1Q0xTbmR0bWZEc254RkxjZVhtRXJvd3ZCYzNlUnNIXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09YUdtdFgxOER0cWVsVVUwS0swWU9PMFV6TEEwSjlRT3ZVdWpDMTNzbWtrTS0xNjg0OTQyODgwLTAtQVVCaHZjTmhQWE5MMlZJN2xRalJLSXpmRWhHSUZ2c1h0eXhQQjNRM0JjREF4dEpuMGlnOFlRbnRmUmRhTzMzRkpzRWZ5L0l1NVBqQnFwMlQzRkxFc1BJPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjIwIEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9pY29uLnBuZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1iTjJHbk04WHVua0dKdUNMU25kdG1mRHNueEZMY2VYbUVyb3d2QmMzZVJzSCJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifV0sICJjb250ZW50IjogeyJzaXplIjogMjk1LCAibWltZVR5cGUiOiAiaW1hZ2UvcG5nIiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUE4QUFBQVBFQVlBQUFCclJra0pBQUFBN2tsRVFWUTR5Mk00QXdiLy85T2JaaGgwRmxjbzc1OTBkdDMvL3g0dE94VFA2ZjcvUHlmbnFPMVpYenBZek1PemJ0MjVjd2lMWWZ5UXVidFl6L0g4Lzc5bHprbVdzN3cwdEJqbVU1aEY2QTdKNGQ2NzdpeVFQckRsMUlzemIyaGdNYm84VE53bVo1dnRPU0F0b2JKaDBqbGcxTFJZSHl3OTIwY0RpMkVHd3l4RUYxZXgyVlIycnZmL2Y0T1FMWkhuY25FN25HU0xZVUVPQzJKMGZiQWdoOG5EekZuUmNsenhyQzRGRnFNSE1iRlJnSjRZS2JZWVppQ01qNTc2Y1NVNnNpMkd5Wk9ielFoYW5MQjE5NHV6YnhBK2dzVVZMREdSbTU5eFdneExuYkE0d3BXWXFGNkFrRm9nREpsS0FnRDhNb0FiWHZjUEVRQUFBQUJKUlU1RXJrSmdnZz09IiwgImVuY29kaW5nIjogImJhc2U2NCJ9LCAiaGVhZGVyc1NpemUiOiAxNTk5LCAiYm9keVNpemUiOiAyOTUsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE4OTR9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA0NS41NTUsICJyZWNlaXZlIjogMS4zOTZ9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjA3OVoiLCAidGltZSI6IDkxMC45MDMsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvbCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qLCovKjtxPTAuOCJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTI4LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiUWk1LjBaVHdQUm5pc0RvRUx0LnpycmdOZXdkdG91ZzZnaTdxeFNseEt6Zy0xNjg0OTQyODgwLTAtQWVyOTNLWGhyU3EzT3p2MjVKUGU4dWJVVXVWTjhDYmRWcU1UZTZHc2RpZHh5ZzdMWlVHWDFwRGk2RlpxSysrWDBqYWdYV3RGWENsUVZpamdMd0NwdVI0PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0LVJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NjgzZDhkMzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibm8tc3RvcmUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW4ifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToyMCBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiXCJRbWJGTWtlMUtYcW5ZeUJCV3hCNzRONGM1U0JuSk1WQWlNTlJjR3U2eDFBd1FIXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09UWk1LjBaVHdQUm5pc0RvRUx0LnpycmdOZXdkdG91ZzZnaTdxeFNseEt6Zy0xNjg0OTQyODgwLTAtQWVyOTNLWGhyU3EzT3p2MjVKUGU4dWJVVXVWTjhDYmRWcU1UZTZHc2RpZHh5ZzdMWlVHWDFwRGk2RlpxSysrWDBqYWdYV3RGWENsUVZpamdMd0NwdVI0PTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjIwIEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJGTWtlMUtYcW5ZeUJCV3hCNzRONGM1U0JuSk1WQWlNTlJjR3U2eDFBd1FIIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW4iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIifSwgImhlYWRlcnNTaXplIjogMTU1NCwgImJvZHlTaXplIjogMCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTU1NH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDkxMC4xODYsICJyZWNlaXZlIjogMC43MTd9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjA3OVoiLCAidGltZSI6IDc2OS4yMDIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvQjIzNTk1ODM4LjI2OTU1NzAzMiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsaW1hZ2Uvc3ZnK3htbCxpbWFnZS8qLCovKjtxPTAuOCJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTQ2LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiOHh5Y3JvNGpoRTIuclZrajhDRFJMTFZxMGRDTXlyXy5GTHpjOUtiS3FFSS0xNjg0OTQyODgxLTAtQWE2VFhPNS9Hc2tSSGdDaWRVK1kxaWwrdWNYMXFOclo2UGc0QTBiaTAwRE5GRlZoajdJdjFsWHdma1FvOC9QMG1yUmx1QXlteTR0MzV0K0pxSEQ1dzdVPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0LVJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NmEzY2ZlOTI1Yy1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiNDIifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJpbWFnZS9naWYifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToyMSBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiXCJRbWJQQXI1UmNDWlpEUnNOS25mMnAxdDZHSzNRdTdvREgzOUhDSzNhZXdVcTN3XCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09OHh5Y3JvNGpoRTIuclZrajhDRFJMTFZxMGRDTXlyXy5GTHpjOUtiS3FFSS0xNjg0OTQyODgxLTAtQWE2VFhPNS9Hc2tSSGdDaWRVK1kxaWwrdWNYMXFOclo2UGc0QTBiaTAwRE5GRlZoajdJdjFsWHdma1FvOC9QMG1yUmx1QXlteTR0MzV0K0pxSEQ1dzdVPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjIxIEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9CMjM1OTU4MzguMjY5NTU3MDMyIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJQQXI1UmNDWlpEUnNOS25mMnAxdDZHSzNRdTdvREgzOUhDSzNhZXdVcTN3In0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogNDIsICJtaW1lVHlwZSI6ICJpbWFnZS9naWYiLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMTU5OSwgImJvZHlTaXplIjogNDIsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE2NDF9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA3NjcuNjM3LCAicmVjZWl2ZSI6IDEuNTY1fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wNzlaIiwgInRpbWUiOiAzMTYzLjY3OTAwMDAwMDAwMDUsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvYWR2aWV3IiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1MzMsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJPZVB6dkdPYkZ2NmsycXBxSEpWRzdMaW9XaXFtVzBiVVFRSlBVVlc2cEhzLTE2ODQ5NDI4ODEtMC1BU28xREJsRlNWeU1Jek9mbFI3L3V6aDl1VEUvaHJ4R1pjZG11VUhOUVI2amRJWEw3UTlBTWZXWWxacjJCOWVqV0toY082eUhCaVpzL3RwUURpS0F1eHM9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQtUmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ2YjA4ZGQ4ZmRhLUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJuby1zdG9yZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbiJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIxIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcIlFtYkZNa2UxS1hxbll5QkJXeEI3NE40YzVTQm5KTVZBaU1OUmNHdTZ4MUF3UUhcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1PZVB6dkdPYkZ2NmsycXBxSEpWRzdMaW9XaXFtVzBiVVFRSlBVVlc2cEhzLTE2ODQ5NDI4ODEtMC1BU28xREJsRlNWeU1Jek9mbFI3L3V6aDl1VEUvaHJ4R1pjZG11VUhOUVI2amRJWEw3UTlBTWZXWWxacjJCOWVqV0toY082eUhCaVpzL3RwUURpS0F1eHM9OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MjEgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2FkdmlldyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1iRk1rZTFLWHFuWXlCQld4Qjc0TjRjNVNCbkpNVkFpTU5SY0d1NngxQXdRSCJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDAsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluIiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiIn0sICJoZWFkZXJzU2l6ZSI6IDE1NTksICJib2R5U2l6ZSI6IDAsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE1NTl9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDE4LCAiY29ubmVjdCI6IDQuNDEzLCAic3NsIjogMjQwNy43MzMsICJzZW5kIjogMCwgIndhaXQiOiA3NTAuMzY5LCAicmVjZWl2ZSI6IDEuMTQ2fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4wODZaIiwgInRpbWUiOiA3ODQuNDcxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3NhdmVkX3Jlc291cmNlKDExKS5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjUxLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiSUJvd2tTa1g3V3h1ZTZULjR5RnVNdFFLaWguTGlvQ3lsc2dXSUtSNlZsTS0xNjg0OTQyODc5LTAtQVpuQ1FFTk1tcUpsa3FWNUJnLzd3SStJTDI2aGdOWG10WXhMajUxT2hNMWg1a1dBS3ZIZzl5TkowNW95VFR3NkFzeEFjYjNCOVE2cGl4YkRMZUtUcllNPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NjA4ODVlOWI4ZS1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTkgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVpLc0ZrbmFtUzNlNWhzWHdWQUpGdzhveEM0b0NUZ2VqVHNmZHVxc0pTNnhpXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09SUJvd2tTa1g3V3h1ZTZULjR5RnVNdFFLaWguTGlvQ3lsc2dXSUtSNlZsTS0xNjg0OTQyODc5LTAtQVpuQ1FFTk1tcUpsa3FWNUJnLzd3SStJTDI2aGdOWG10WXhMajUxT2hNMWg1a1dBS3ZIZzl5TkowNW95VFR3NkFzeEFjYjNCOVE2cGl4YkRMZUtUcllNPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE5IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSgxMSkuaHRtbCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1aS3NGa25hbVMzZTVoc1h3VkFKRnc4b3hDNG9DVGdlalRzZmR1cXNKUzZ4aSJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDI0NiwgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDE2LCAidGV4dCI6ICJcbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTJcIj48dGl0bGU+UGl4ZWxzPC90aXRsZT48L2hlYWQ+XG48Ym9keT5cbjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPjwvc2NyaXB0PlxuPGltZyBzcmM9XCIuL21hdGNoXCI+XG5cblxuXG48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjE1LCAiYm9keVNpemUiOiAyMzAsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE4NDV9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA3NzYuOCwgInJlY2VpdmUiOiA3LjY3MX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMDk5WiIsICJ0aW1lIjogMzcuMTA0LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3VzeW5jLmh0bWwiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9LCB7Im5hbWUiOiAiVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2MzgsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI4d3k3VXdqd2JJbGtKY1d2T1BldzdnOGpRV21OQWFRSGtjZmhJdE9qTmVJLTE2ODQ5NDI4NzgtMC1BVmtOMHpGY3gyZkZ6Q1dnQ1JiSmpKa2RPbzNFSVczRGdVZlZ3cWtqa0VOeHBvSFhQTkxZMmdtcEFUYVU4REFlQVl1RlYxSlBwNVJnalIvUjhRd2RWYkU9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQyIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NjE2YWQ0MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVNzaFlMbmlnV2tYeTdhM0syZGtwb2VIaHVlRVpwaEZyaDZiSnBlZ1dncGZzXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09OHd5N1V3andiSWxrSmNXdk9QZXc3ZzhqUVdtTkFhUUhrY2ZoSXRPak5lSS0xNjg0OTQyODc4LTAtQVZrTjB6RmN4MmZGekNXZ0NSYkpqSmtkT28zRUlXM0RnVWZWd3FramtFTnhwb0hYUE5MWTJnbXBBVGFVOERBZUFZdUZWMUpQcDVSZ2pSL1I4UXdkVmJFPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE4IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy91c3luYy5odG1sIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVNzaFlMbmlnV2tYeTdhM0syZGtwb2VIaHVlRVpwaEZyaDZiSnBlZ1dncGZzIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzMjA3MSwgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDIyNDcyLCAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbCBQVUJMSUMgXCItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTlwiIFwiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkXCI+XG48IS0tIHNhdmVkIGZyb20gdXJsPSgwMDE0KWFib3V0OmludGVybmV0IC0tPlxuPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIj5cbiAgICA8dGl0bGU+VXNlci1TeW5jPC90aXRsZT5cbiAgICA8IS0tIGdlbmVyYXRlZDogMjAyMC0wOC0yNiAwOTo0OTowOSBQRFQgLS0+XG48L2hlYWQ+XG48Ym9keSBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCI+XG48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj5cbiAgICB2YXIgcnRiX3N5bmMgPSB7XCJ0dGxcIjoxNCxcInNhbXBsZVwiOjEwMCxcIm1heF9waXhlbHNcIjo4LFwicGl4ZWxfc2V0c1wiOntcInJ0YlwiOntcInNhbXBsZVwiOjEwMCxcInBpeGVsc1wiOntcImlkbFwiOntcInByaW9yaXR5XCI6MSxcInR0bFwiOjEsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkLnJsY2RuLmNvbVxcLzcwOTQxNC5naWZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvaWQucmxjZG4uY29tXFwvNzA5NDE0LmdpZlwifSxcInBhcnRuZXJcIjpcImxpdmVyYW1wXCJ9LFwiMTE4NVwiOntcInBpbmdkb21faWRcIjpcIjM5OTIzNVwiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cHM6XFwvXFwvYWQudHVybi5jb21cXC9yXFwvY3M/cGlkPTZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYWQudHVybi5jb21cXC9yXFwvY3M/cGlkPTZcIn0sXCJwcmlvcml0eVwiOjUsXCJwYXJ0bmVyXCI6XCJ0dXJuXCJ9LFwiMTE5N1wiOntcInBpbmdkb21faWRcIjpcIjE3MzczMzRcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLnRpZGFsdHYuY29tXFwvR2VuZXJpY1VzZXJTeW5jLmFzaHg/ZHBpZD02OTVcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy50aWRhbHR2LmNvbVxcL0dlbmVyaWNVc2VyU3luYy5hc2h4P2RwaWQ9Njk1XCJ9LFwicGFydG5lclwiOlwidmlkZW9sb2d5XCJ9LFwiMTUxMlwiOntcInBpbmdkb21faWRcIjpcIjM5OTIzMVwiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLm1hdGh0YWcuY29tXFwvc3luY1xcL2ltZz9tdF9leGlkPTlcIixcInByaW9yaXR5XCI6MSxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5tYXRodGFnLmNvbVxcL3N5bmNcXC9pbWc/bXRfZXhpZD05JnJlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q0MjIyJTI2bmlkJTNEMTUxMiUyNnB1dCUzRCU1Qk1NX1VVSUQlNURcIn0sXCJyZXN5bmNcIjoxLFwicGFydG5lclwiOlwibWVkaWFtYXRoXCJ9LFwiMTkwMlwiOntcInBpbmdkb21faWRcIjpcIjM5OTIyNFwiLFwidHRsXCI6MixcImltZ1wiOlwiaHR0cDpcXC9cXC9jbXMucXVhbnRzZXJ2ZS5jb21cXC9waXhlbFxcL3AtZTRtM1lrbzZiRllWYy5naWY/aWRtYXRjaD0wXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2Ntcy5xdWFudHNlcnZlLmNvbVxcL3BpeGVsXFwvcC1lNG0zWWtvNmJGWVZjLmdpZj9pZG1hdGNoPTBcIn0sXCJwYXJ0bmVyXCI6XCJxdWFudGNhc3RcIn0sXCIxOTg2XCI6e1wicGluZ2RvbV9pZFwiOlwiMzk5MjQwXCIsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwOlxcL1xcL2liLmFkbnhzLmNvbVxcL2dldHVpZG5iP2h0dHAlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDQ4OTQlMjZuaWQlM0QxOTg2JTI2cHV0JTNEJFVJRCUyNmV4cGlyZXMlM0QzMFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zZWN1cmUuYWRueHMuY29tXFwvZ2V0dWlkbmI/aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDQ4OTQlMjZuaWQlM0QxOTg2JTI2cHV0JTNEJFVJRCUyNmV4cGlyZXMlM0QzMFwifSxcInJlc3luY1wiOjEsXCJwYXJ0bmVyXCI6XCJhcHBuZXh1c1wifSxcIjIwNDZcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNzM3MzY3XCIsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMDQ2JnB0PW4mYT0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMDQ2JnB0PW4mYT0xXCJ9LFwicGFydG5lclwiOlwiY29udmVyc2FudFwifSxcIjIwODJcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Vtcy5hY3VpdHlwbGF0Zm9ybS5jb21cXC90dW0/dW1pZD0yXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Vtcy5hY3VpdHlwbGF0Zm9ybS5jb21cXC90dW0/dW1pZD0yXCJ9LFwicGFydG5lclwiOlwiYWN1aXR5XCJ9LFwiMjEzMlwiOntcInBpbmdkb21faWRcIjpcIjM5OTIyNVwiLFwicHJpb3JpdHlcIjo1LFwiaW1nXCI6XCJodHRwOlxcL1xcL3VtLnNpbXBsaS5maVxcL3JiX21hdGNoXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3VtLnNpbXBsaS5maVxcL3JiX21hdGNoXCJ9LFwicGFydG5lclwiOlwic2ltcGxpLmZpXCJ9LFwiMjEzNVwiOntcInBpbmdkb21faWRcIjpcIjQwNTIwMFwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2Q1cC5kZTE3YS5jb21cXC9jb29raWVzXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9kNXAuZGUxN2EuY29tXFwvY29va2llc1xcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJkZWx0YS1ydGJcIixcImNvdW50cnlcIjpbXCJzZVwiLFwiZGtcIixcIm5sXCIsXCJkZVwiLFwiZmlcIixcIm5vXCJdfSxcIjIyMzFcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkLnNoYXJlZGlkLm9yZ1xcL3VzeW5jP3JlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q2MjQyMTAlMjZuaWQlM0QyMjMxJTI2cHV0JTNEJTdCdXNlcl90b2tlbiU3RFwiLFwicHJpb3JpdHlcIjoxLFwic2FtcGxlXCI6MTAwLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pZC5zaGFyZWRpZC5vcmdcXC91c3luYz9yZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENjI0MjEwJTI2bmlkJTNEMjIzMSUyNnB1dCUzRCU3QnVzZXJfdG9rZW4lN0RcIn0sXCJwYXJ0bmVyXCI6XCJteWFkc1wiLFwiY291bnRyeVwiOltcInVzXCIsXCJjYVwiLFwibXhcIl19LFwiMjIzOFwiOntcInBpbmdkb21faWRcIjpcIjY0MzY3M1wiLFwicHJpb3JpdHlcIjo1LFwiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC1hLnNpdGVzY291dC5jb21cXC9kbXBcXC9waXhlbFN5bmM/bmlkPTFcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4ZWwtYS5zaXRlc2NvdXQuY29tXFwvZG1wXFwvcGl4ZWxTeW5jP25pZD0xXCJ9LFwicGFydG5lclwiOlwiY2VudHJvXCJ9LFwiMjI0OVwiOntcInBpbmdkb21faWRcIjpcIjM5OTIyN1wiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC9jbS5nLmRvdWJsZWNsaWNrLm5ldFxcL3BpeGVsP2dvb2dsZV9uaWQ9cnViaWNvbiZnb29nbGVfY20mZ29vZ2xlX3NjXCIsXCJwcmlvcml0eVwiOjEsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLmcuZG91YmxlY2xpY2submV0XFwvcGl4ZWw/Z29vZ2xlX25pZD1ydWJpY29uJmdvb2dsZV9jbSZnb29nbGVfc2NcIn0sXCJyZXN5bmNcIjoxLFwicGFydG5lclwiOlwiZGJtXCJ9LFwiMjI0OS1EVjM2MC1Ib3N0ZWRcIjp7XCJwcmlvcml0eVwiOjEsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yMjQ5JnB0PW5cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTIyNDkmcHQ9blwifSxcInBhcnRuZXJcIjpcIkRWMzYwLUdvb2dsZVwifSxcIjIzMDdcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNzQ2NTk5XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvbWF0Y2guYWRzcnZyLm9yZ1xcL3RyYWNrXFwvY21mXFwvcnViaWNvblwiLFwicHJpb3JpdHlcIjoxLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9tYXRjaC5hZHNydnIub3JnXFwvdHJhY2tcXC9jbWZcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwidGhldHJhZGVkZXNrXCJ9LFwiMjMxM1wiOntcInBpbmdkb21faWRcIjpcIjE3NDY2MDVcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9yYnAubXhwdGludC5uZXRcXC9zbi5hc2h4XCIsXCJwcmlvcml0eVwiOjEwLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yYnAubXhwdGludC5uZXRcXC9zbi5hc2h4XCJ9LFwicGFydG5lclwiOlwibWF4LXBvaW50LXVzLXN5bmNcIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIl19LFwiMjM5NVwiOntcInBpbmdkb21faWRcIjpcIjUxNDc1NVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL3B4Lm93bmVyaXEubmV0XFwvZXJiXCIsXCJyZWdpb25cIjpbXCJuYVwiXSxcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcHgub3duZXJpcS5uZXRcXC9lcmJcIn0sXCJwYXJ0bmVyXCI6XCJvd25lci1pcVwifSxcIjI0OTRcIjp7XCJpbWdcIjpcImh0dHA6XFwvXFwvdW0yLmVxYWRzLmNvbVxcL3VtXFwvcmNcIixcInJlZ2lvblwiOltcIm5hXCJdLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC91bTIuZXFhZHMuY29tOjQ0M1xcL3VtXFwvcmNcIn0sXCJwYXJ0bmVyXCI6XCJlcS1hZHNcIn0sXCIyNTI4XCI6e1wicGluZ2RvbV9pZFwiOlwiMTc0Njc1OFwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL3N5bmMuaW50ZW50aXEuY29tXFwvcHJvZmlsZXNfZW5naW5lXFwvUHJvZmlsZXNFbmdpbmVTZXJ2bGV0P2F0PTIwJm1pPTEwJmRwaT01NFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLmludGVudGlxLmNvbVxcL3Byb2ZpbGVzX2VuZ2luZVxcL1Byb2ZpbGVzRW5naW5lU2VydmxldD9hdD0yMCZtaT0xMCZkcGk9NTRcIn0sXCJwYXJ0bmVyXCI6XCJpbnRlbnQtaXFcIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIl19LFwiMjU0MFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdHIuYmxpc21lZGlhLmNvbVxcL3YxXFwvYXBpXFwvc3luY1xcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdHIuYmxpc21lZGlhLmNvbVxcL3YxXFwvYXBpXFwvc3luY1xcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJibGlzXCJ9LFwiMjU5MFwiOntcInBpbmdkb21faWRcIjpcIjEzMDg0MDJcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9ncmVlbi5lcm5lLmNvXFwvcnBcXC9jbVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ncmVlbi5lcm5lLmNvXFwvcnBcXC9jbVwifSxcInBhcnRuZXJcIjpcImNsb3VkLXRlY2hub2xvZ2llc1wifSxcIjI1OTZcIjp7XCJwaW5nZG9tX2lkXCI6XCI1NjY5ODhcIixcInR0bFwiOjcsXCJwcmlvcml0eVwiOjEwLFwiaW1nXCI6XCJodHRwOlxcL1xcL3AucmZpaHViLmNvbVxcL2NtP2luPTEmcHViPTY0XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3AucmZpaHViLmNvbVxcL2NtP2luPTEmcHViPTY0XCJ9LFwicGFydG5lclwiOlwicm9ja2V0ZnVlbFwifSxcIjI2NTBcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNDExMTU1XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvbWF0Y2guYWRzYnkuYmlkdGhlYXRyZS5jb21cXC9ydWJpY29ubWF0Y2hcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvbWF0Y2guYWRzYnkuYmlkdGhlYXRyZS5jb21cXC9ydWJpY29ubWF0Y2hcIn0sXCJwYXJ0bmVyXCI6XCJiaWQtdGhlYXRyZVwifSxcIjI2NzZcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNzY1OTc2XCIsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2MxLmFkZm9ybS5uZXRcXC9zZXJ2aW5nXFwvY29va2llXFwvbWF0Y2g/cGFydHk9MTE2NFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jMS5hZGZvcm0ubmV0XFwvc2VydmluZ1xcL2Nvb2tpZVxcL21hdGNoP3BhcnR5PTExNjRcIn0sXCJwcmlvcml0eVwiOjEwLFwicGFydG5lclwiOlwiYWRmb3JtXCJ9LFwiMjczMVwiOntcInBpbmdkb21faWRcIjpcIjY2MjYxN1wiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2NtLmN0bnNuZXQuY29tXFwvaW50XFwvY20/ZXhjPTImcmVkaXI9aHR0cCUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMTQ5NjUlMjZuaWQlM0QyNzMxJTI2cHV0JTNEJTVCdXNlcl9pZCU1RFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jbS5jdG5zbmV0LmNvbVxcL2ludFxcL2NtP2V4Yz0yJnJlZGlyPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0QxNDk2NSUyNm5pZCUzRDI3MzElMjZwdXQlM0QlNUJ1c2VyX2lkJTVEIFwifSxcInJlZ2lvblwiOltcImV1XCIsXCJhdVwiXSxcInBhcnRuZXJcIjpcImNyaW1zb24tdGFuZ2VyaW5lXCJ9LFwiMjc2MFwiOntcInBpbmdkb21faWRcIjpcIjY1OTQwNVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL3guYmlkc3dpdGNoLm5ldFxcL3N5bmM/c3NwPXJ1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwveC5iaWRzd2l0Y2gubmV0XFwvc3luYz9zc3A9cnViaWNvblwifSxcInBhcnRuZXJcIjpcImJpZHN3aXRjaFwifSxcIjI4MjBcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2lkNS1zeW5jLmNvbVxcL2lcXC8xNzVcXC85LmdpZlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9pZDUtc3luYy5jb21cXC9pXFwvMTc1XFwvOS5naWZcIn0sXCJwYXJ0bmVyXCI6XCJwbGF0Zm9ybS0xNjFcIixcImNvdW50cnlcIjpbXCJubFwiLFwidXNcIl19LFwiMjg2MVwiOntcInBpbmdkb21faWRcIjpcIjE4MTgwNjVcIixcInByaW9yaXR5XCI6NSxcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLmlwcmVkaWN0aXZlLmNvbVxcL2RcXC9zeW5jXFwvY29va2llXFwvZ2VuZXJpYz9odHRwOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3RhcC5waHA/dj0xNzE0OSZuaWQ9Mjg2MSZwdXQ9JHtBREVMUEhJQ19DVUlEfSZleHBpcmVzPTMwXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuaXByZWRpY3RpdmUuY29tXFwvZFxcL3N5bmNcXC9jb29raWVcXC9nZW5lcmljP2h0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3RhcC5waHA/dj0xNzE0OSZuaWQ9Mjg2MSZwdXQ9JHtBREVMUEhJQ19DVUlEfSZleHBpcmVzPTMwXCJ9LFwicGFydG5lclwiOlwiYWRlbHBoaWNcIn0sXCIyODY3XCI6e1wicGluZ2RvbV9pZFwiOlwiNzcyNjU4XCIsXCJzYW1wbGVcIjowLFwiaW1nXCI6XCJodHRwOlxcL1xcL3IuMjU0YS5jb21cXC9yX21hdGNoXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3IuMjU0YS5jb21cXC9yX21hdGNoXCJ9LFwicGFydG5lclwiOlwieWllbGRyXCJ9LFwiMjkzMVwiOntcInBpbmdkb21faWRcIjpcIjEzMDM3NzJcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9waXguaW1wZGVzay5jb21cXC9jc3luY1xcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4LmltcGRlc2suY29tXFwvY3N5bmNcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiaW5mZWN0aW91c1wifSxcIjI5NzRcIjp7XCJwaW5nZG9tX2lkXCI6XCIxMDA1ODg2XCIsXCJ0dGxcIjo3LFwiaW1nXCI6XCJodHRwOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yOTc0JnB0PW4mYT0xXCIsXCJwcmlvcml0eVwiOjEsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yOTc0JnB0PW4mYT0xXCJ9LFwicGFydG5lclwiOlwieWFob28tb3BlbnJ0YlwifSxcIjMzODBcIjp7XCJzYW1wbGVcIjowLFwiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLnplYmVzdG9mLmNvbVxcL3N5bmNcXC8xMVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLnplYmVzdG9mLmNvbVxcL3N5bmNcXC8xMVwifSxcInBhcnRuZXJcIjpcInplYmVzdG9mXCJ9LFwiMzQxNlwiOntcInNhbXBsZVwiOjAsXCJwaW5nZG9tX2lkXCI6XCIxMzAzNzcwXCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvY20uZXllcmV0dXJuLmNvbVxcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvY20uZXllcmV0dXJuLmNvbVxcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJleWVyZXR1cm5cIixcImNvdW50cnlcIjpbXCJ1c1wiLFwiY2FcIl19LFwiMzYzMlwiOntcInBpbmdkb21faWRcIjpcIjEzMzUzNDRcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9yY3AuYy5hcHBpZXIubmV0XFwvcmJjbVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9yY3AuYy5hcHBpZXIubmV0XFwvcmJjbVwifSxcInBhcnRuZXJcIjpcImFwcGllclwifSxcIjM2MzZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLnNtYWRleC5jb21cXC9zeW5jP3NtX3A9cmJjJnNtX3I9cmJjXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLnNtYWRleC5jb21cXC9zeW5jP3NtX3A9cmJjJnNtX3I9cmJjXCJ9LFwicGFydG5lclwiOlwic21hZGV4XCJ9LFwiMzY2NFwiOntcImltZ1wiOlwiaHR0cDpcXC9cXC9idHRyYWNrLmNvbVxcL3BpeGVsXFwvY29va2llc3luYz9zb3VyY2U9YzkxYmZjY2UtYmI0My00NmY3LWIxNGUtNTY3YzBhNDMzMmIzXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2J0dHJhY2suY29tXFwvcGl4ZWxcXC9jb29raWVzeW5jP3NvdXJjZT1jOTFiZmNjZS1iYjQzLTQ2ZjctYjE0ZS01NjdjMGE0MzMyYjNcIn0sXCJwYXJ0bmVyXCI6XCJiaWR0ZWxsZWN0XCJ9LFwiMzY2OFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdGcuc29jZG0uY29tXFwvcnRiXFwvc3luYz9wcm90bz1ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3RnLnNvY2RtLmNvbVxcL3J0YlxcL3N5bmM/cHJvdG89cnViaWNvblwifSxcInBhcnRuZXJcIjpcInN1cGVyc2hpcFwifSxcIjM2ODRcIjp7XCJwaW5nZG9tX2lkXCI6XCIxODY3MDE1XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvbXBwLnZpbmRpY29zdWl0ZS5jb21cXC9zeW5jXFwvP3BpZD00MCZmcj0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL21wcC52aW5kaWNvc3VpdGUuY29tXFwvc3luY1xcLz9waWQ9NDAmZnI9MVwifSxcInBhcnRuZXJcIjpcInZpYW50XCJ9LFwiMzc3OFwiOntcInBpbmdkb21faWRcIjpcIjE5MTU1OTVcIixcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy10bS5ldmVyZXN0dGVjaC5uZXRcXC91cGlcXC9waWRcXC9idHU0amQzYT9yZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMTkxOTQwJTI2bmlkJTNEMzc3OCUyNnB1dCUzRCUyNCU3QlVTRVJfSUQlN0RcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy10bS5ldmVyZXN0dGVjaC5uZXRcXC91cGlcXC9waWRcXC9idHU0amQzYT9yZWRpcj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNEMTkxOTQwJTI2bmlkJTNEMzc3OCUyNnB1dCUzRCUyNCU3QlVTRVJfSUQlN0RcIn0sXCJwYXJ0bmVyXCI6XCJhZG9iZVwiLFwicHJpb3JpdHlcIjoxfSxcIjM4MjJcIjp7XCJwaW5nZG9tX2lkXCI6XCIxNTI5OTU3XCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvZHNwLmFkZmFybTEuYWRpdGlvbi5jb21cXC9jb29raWVcXC8/c3NwPTdcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZHNwLmFkZmFybTEuYWRpdGlvbi5jb21cXC9jb29raWVcXC8/c3NwPTdcIn0sXCJwYXJ0bmVyXCI6XCJhY3RpdmUtYWdlbnRcIn0sXCIzODQwXCI6e1wic2FtcGxlXCI6MCxcInBpbmdkb21faWRcIjpcIjIyMDkxOTRcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9zeW5jLmV4dGVuZC50dlxcL3IuZ2lmP2V4Y2hhbmdlPXJ1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5leHRlbmQudHZcXC9yLmdpZj9leGNoYW5nZT1ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiZXh0ZW5kdHZcIn0sXCIzODU2XCI6e1wicGluZ2RvbV9pZFwiOlwiMjIyNDI5NVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2EudHJpYmFsZnVzaW9uLmNvbVxcL2kubWF0Y2g/cD1iMTAmdT17cnViaWNvbl91c2VyX3Rva2VufSZyZWRpcmVjdD1odHRwJTNBXFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvdGFwLnBocCUzRnYlM0QxMTE3NTYlMjZuaWQlM0QzODU2JTI2cHV0JTNEJTI0VEZfVVNFUl9JRF9FTkMlMjQlMjZleHBpcmVzJTNEMTgwXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2EudHJpYmFsZnVzaW9uLmNvbVxcL2kubWF0Y2g/cD1iMTAmdT17cnViaWNvbl91c2VyX3Rva2VufSZyZWRpcmVjdD1odHRwcyUzQVxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3RhcC5waHAlM0Z2JTNEMTExNzU2JTI2bmlkJTNEMzg1NiUyNnB1dCUzRCUyNFRGX1VTRVJfSURfRU5DJTI0JTI2ZXhwaXJlcyUzRDE4MFwifSxcInBhcnRuZXJcIjpcImV4cG9uZW50aWFsXCJ9LFwiMzg1OFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy5zcnYuc3RhY2thZGFwdC5jb21cXC9zeW5jP25pZD0xNFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLnNydi5zdGFja2FkYXB0LmNvbVxcL3N5bmM/bmlkPTE0XCJ9LFwicGFydG5lclwiOlwic3RhY2thZGFwdFwifSxcIjM5NTZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuYWRvdG1vYi5jb21cXC9jb29raWVcXC9ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMuYWRvdG1vYi5jb21cXC9jb29raWVcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwiQWRvdE1vYlwifSxcIjM5OTJcIjp7XCJwaW5nZG9tX2lkXCI6XCIxOTY4NjEyXCIsXCJpbWdcIjpcImh0dHA6XFwvXFwvYjFzeW5jLnplbWFudGEuY29tXFwvdXNlcnN5bmNcXC9ydWJpY29uXFwvXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2Ixc3luYy56ZW1hbnRhLmNvbVxcL3VzZXJzeW5jXFwvcnViaWNvblxcL1wifSxcInBhcnRuZXJcIjpcInplbWFudGFcIn0sXCI0MDE2XCI6e1wicGluZ2RvbV9pZFwiOlwiMjI1MjAyNVwiLFwiaW1nXCI6XCJodHRwczpcXC9cXC9jci1wMTYubGFkc3AuanBcXC9jb29raWVzZW5kZXJcXC8xNlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jci1wMTYubGFkc3AuanBcXC9jb29raWVzZW5kZXJcXC8xNlwifSxcInBhcnRuZXJcIjpcInNvLW5ldG1lZGlhXCIsXCJjb3VudHJ5XCI6W1wianBcIl19LFwiNDAzMlwiOntcInBpbmdkb21faWRcIjpcIjE2MjkzNjZcIixcImltZ1wiOlwiaHR0cDpcXC9cXC9jbS5hZGdyeC5jb21cXC9icmlkZ2U/QUdfU0VUQ09PS0lFJkFHX1BJRD1ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2NtLmFkZ3J4LmNvbVxcL2JyaWRnZT9BR19TRVRDT09LSUUmQUdfUElEPXJ1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJhZGdlYXJcIn0sXCI0MTEyXCI6e1wicGluZ2RvbV9pZFwiOlwiMTkxNTU5MVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL3N5bmMuMXJ4LmlvXFwvdXNlcnN5bmMyXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9zeW5jLjFyeC5pb1xcL3VzZXJzeW5jMlxcL3J1Ymljb25cIn0sXCJwYXJ0bmVyXCI6XCJyaHl0aG1vbmVcIn0sXCI0MTE0XCI6e1wicGluZ2RvbV9pZFwiOlwiMTgxODA2M1wiLFwiaW1nXCI6XCJodHRwOlxcL1xcL21hdGNoLnByb2QuYmlkci5pb1xcL2Nvb2tpZS1zeW5jXFwvcnA/YmVlX3N5bmNfcGFydG5lcnM9cnBcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvbWF0Y2gucHJvZC5iaWRyLmlvXFwvY29va2llLXN5bmNcXC9ycD9iZWVfc3luY19wYXJ0bmVycz1ycFwifSxcInBhcnRuZXJcIjpcImJlZXN3YXhcIn0sXCI0NTg0XCI6e1wiaW1nXCI6XCJodHRwOlxcL1xcL29uZXRhZy1zeXMuY29tXFwvYnJpZGdlXFwvZSw0XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL29uZXRhZy1zeXMuY29tXFwvYnJpZGdlXFwvZSw0XCJ9LFwicGFydG5lclwiOlwib25ldGFnXCIsXCJjb3VudHJ5XCI6W1wiaXRcIixcImRlXCIsXCJmclwiLFwic2VcIixcImF0XCIsXCJ1a1wiLFwiZXNcIixcImdyXCIsXCJyb1wiXX0sXCI0NjA0XCI6e1wicGluZ2RvbV9pZFwiOlwiMjExNzMwNVwiLFwiaW1nXCI6XCJodHRwOlxcL1xcL2FwaS5wcmltZWNhc3Rlci5uZXRcXC9hZGxvZ3VlXFwvYXBpXFwvc3luY1xcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYXBpLnByaW1lY2FzdGVyLm5ldFxcL2FkbG9ndWVcXC9hcGlcXC9zeW5jXFwvcnViaWNvblwifSxcInBhcnRuZXJcIjpcInZpZGVvd2lyZVwiLFwiY291bnRyeVwiOltcImpwXCJdfSxcIjQ4MDRcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2d1LmR5bnRyay5jb21cXC9hZHhcXC9yYmNuXFwvdXMucGhwP2R5bms9cjFiMzJjMG5cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZ3UuZHludHJrLmNvbVxcL2FkeFxcL3JiY25cXC91cy5waHA/ZHluaz1yMWIzMmMwblwifSxcInBhcnRuZXJcIjpcImR5bmFkbWljXCJ9LFwiNDkwNlwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy1kc3AuYWQtbS5hc2lhXFwvZHNwXFwvYXBpXFwvc3luY1xcL3NlbmQ/cz1ydWJpY29uXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3N5bmMtZHNwLmFkLW0uYXNpYVxcL2RzcFxcL2FwaVxcL3N5bmNcXC9zZW5kP3M9cnViaWNvblwifSxcInBhcnRuZXJcIjpcImZ1bGxzcGVlZFwiLFwiY291bnRyeVwiOltcImpwXCJdfSxcIjUxMjBcIjp7XCJpbWdcIjpcImh0dHA6XFwvXFwvYmguY29udGV4dHdlYi5jb21cXC9iaFxcL3J0c2V0P3BpZD01NjA2ODcmZXY9MSZydXJsPWh0dHAlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDM5MDIwMCUyNm5pZCUzRDUxMjAlMjZwdXQlM0QlMjUlMjVWR1VJRCUyNSUyNVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9iaC5jb250ZXh0d2ViLmNvbVxcL2JoXFwvcnRzZXQ/cGlkPTU2MDY4NyZldj0xJnJ1cmw9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDM5MDIwMCUyNm5pZCUzRDUxMjAlMjZwdXQlM0QlMjUlMjVWR1VJRCUyNSUyNVwifSxcInBhcnRuZXJcIjpcInB1bHNlcG9pbnRcIn0sXCI1NDQ2XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9kbXAuYnJhbmQtZGlzcGxheS5jb21cXC9jbVxcL2FwaVxcL3J1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvZG1wLmJyYW5kLWRpc3BsYXkuY29tXFwvY21cXC9hcGlcXC9ydWJpY29uXCJ9LFwicGFydG5lclwiOlwia25vcmV4XCJ9LFwiNTQ1NFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcnRiLmd1bWd1bS5jb21cXC9nZXR1aWRcXC93czZkc3JmZT9yPWh0dHBzJTNBJTJGJTJGcGl4ZWwucnViaWNvbnByb2plY3QuY29tJTJGdGFwLnBocCUzRnYlM0Q1NTQ4NzAlMjZuaWQlM0Q1NDU0JTI2cHV0JTNEXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3J0Yi5ndW1ndW0uY29tXFwvZ2V0dWlkXFwvd3M2ZHNyZmU/cj1odHRwcyUzQSUyRiUyRnBpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRhcC5waHAlM0Z2JTNENTU0ODcwJTI2bmlkJTNENTQ1NCUyNnB1dCUzRFwifSxcInBhcnRuZXJcIjpcImd1bWd1bVwifSxcIjU0NjZcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2liLmFkbnhzLmNvbVxcL2dldHVpZD9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9NTY0NTM0Jm5pZD01NDY2JnB1dD0kVUlEXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2liLmFkbnhzLmNvbVxcL2dldHVpZD9odHRwczpcXC9cXC9waXhlbC5ydWJpY29ucHJvamVjdC5jb21cXC90YXAucGhwP3Y9NTY0NTM0Jm5pZD01NDY2JnB1dD0kVUlEXCJ9LFwicGFydG5lclwiOlwicGxheWdyb3VuZC14eXpcIn0sXCI1NDc0XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9uZXAuYWR2YW5nZWxpc3RzLmNvbVxcL3hwXFwvdXNlci1zeW5jP2FjY3RpZD0zNDkmdXNlcmlkPXt1c2VyX3Rva2VufVwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9uZXAuYWR2YW5nZWxpc3RzLmNvbVxcL3hwXFwvdXNlci1zeW5jP2FjY3RpZD0zNDkmdXNlcmlkPXt1c2VyX3Rva2VufVwifSxcInBhcnRuZXJcIjpcImFkdmFuZ2VsaXN0cy12aWRlb1wifSxcIjU0NzhcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL25lcC5hZHZhbmdlbGlzdHMuY29tXFwveHBcXC91c2VyLXN5bmM/YWNjdGlkPTI2MSZ1c2VyaWQ9e3VzZXJfdG9rZW59XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL25lcC5hZHZhbmdlbGlzdHMuY29tXFwveHBcXC91c2VyLXN5bmM/YWNjdGlkPTI2MSZ1c2VyaWQ9e3VzZXJfdG9rZW59XCJ9LFwicGFydG5lclwiOlwiYWR2YW5nZWxpc3RzLWRpc3BsYXlcIn0sXCI1NDk4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ydWJpY29uY20uZGlnaXRhbGVhc3QubW9iaVxcL3VzZXJzeW5jXFwvcnViaWNvbi5naWY/dj08cnViaWNvbl9pZD4mbmlkPTxuZXR3b3JrX2lkPlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9ydWJpY29uY20uZGlnaXRhbGVhc3QubW9iaVxcL3VzZXJzeW5jXFwvcnViaWNvbi5naWY/dj08cnViaWNvbl9pZD4mbmlkPTxuZXR3b3JrX2lkPlwifSxcInBhcnRuZXJcIjpcImRpZ2l0YWwtZWFzdFwifSxcIjU1MDBcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2RzLnVuY24uanBcXC9ycFxcLzBcXC9zeW5jXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2RzLnVuY24uanBcXC9ycFxcLzBcXC9zeW5jXCJ9LFwiY291bnRyeVwiOltcImpwXCJdLFwicGFydG5lclwiOlwiYnVsYml0XCJ9LFwiNTUwNFwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYmVhY29uLmx5bnguY29nbml0aXZsYWJzLmNvbVxcL3JiLmdpZlwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9iZWFjb24ubHlueC5jb2duaXRpdmxhYnMuY29tXFwvcmIuZ2lmXCJ9LFwicGFydG5lclwiOlwiY29nbml0aXZcIn0sXCI1NTA4XCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jcy5hZG5lYXIubmV0XFwvdjJcXC9jb29raWVzeW5jXFwvcnViaWNvblwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9jcy5hZG5lYXIubmV0XFwvdjJcXC9jb29raWVzeW5jXFwvcnViaWNvblwifSxcImNvdW50cnlcIjpbXCJhdVwiLFwibnpcIl0sXCJwYXJ0bmVyXCI6XCJuZWFyXCJ9LFwiNTUxNFwiOntcInNhbXBsZVwiOjAsXCJpbWdcIjpcImh0dHBzOlxcL1xcL2FkdmFuY2VkLmdhcnJpdHouY29tOjgwOTBcXC9ydWJpY29uX2RtcF9waXhlbD9jb29raWVpZD01MmZkZmMwNzIxODI2NTRmMTYzZjVmMGY5YTYyMWQ3Mjk1NjZcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYWR2YW5jZWQuZ2Fycml0ei5jb206ODA5MFxcL3J1Ymljb25fZG1wX3BpeGVsP2Nvb2tpZWlkPTUyZmRmYzA3MjE4MjY1NGYxNjNmNWYwZjlhNjIxZDcyOTU2NlwifSxcInBhcnRuZXJcIjpcImdhcnJpdHpcIn0sXCJ3NTVjXCI6e1wicGluZ2RvbV9pZFwiOlwiMzk5MjIyXCIsXCJuaWRcIjoxNTIzLFwicHJpb3JpdHlcIjo1LFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC9pLnc1NWMubmV0XFwvcGluZ19tYXRjaC5naWY/ZWk9UlVCSUNPTiZydXJsPWh0dHAlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDQyMTAlMjZuaWQlM0QxNTIzJTI2cHV0JTNEX3dmaXZlZml2ZWNfJTI2ZXhwaXJlcyUzRDMwXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL2kudzU1Yy5uZXRcXC9waW5nX21hdGNoLmdpZj9laT1SVUJJQ09OJnJ1cmw9aHR0cHMlM0ElMkYlMkZwaXhlbC5ydWJpY29ucHJvamVjdC5jb20lMkZ0YXAucGhwJTNGdiUzRDQyMTAlMjZuaWQlM0QxNTIzJTI2cHV0JTNEX3dmaXZlZml2ZWNfJTI2ZXhwaXJlcyUzRDMwXCJ9LFwicGFydG5lclwiOlwiZGF0YXh1XCJ9LFwiMTUyM2V4dFwiOntcInBpbmdkb21faWRcIjpcIjM5OTIyMVwiLFwiaWZyYW1lXCI6XCJodHRwOlxcL1xcL2N0aS53NTVjLm5ldFxcL2N0XFwvY21zLTJjLXJ1Ymljb24uaHRtbFwiLFwic2VjdXJlXCI6e1wiaWZyYW1lXCI6XCJodHRwczpcXC9cXC9jdGkudzU1Yy5uZXRcXC9jdFxcL2Ntcy0yYy1ydWJpY29uLmh0bWxcIn0sXCJwYXJ0bmVyXCI6XCJkYXRheHVcIn0sXCIxMTk3ZXh0XCI6e1wiaW1nXCI6XCJodHRwOlxcL1xcL3N5bmMudGlkYWx0di5jb21cXC9nZW5lcmljdXNlcnN5bmMuYXNoeD9kcGlkPXJ1Ymljb25cIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvc3luYy50aWRhbHR2LmNvbVxcL2dlbmVyaWN1c2Vyc3luYy5hc2h4P2RwaWQ9cnViaWNvblwifSxcInBhcnRuZXJcIjpcInZpZGVvbG9neVwifSxcImJyeFwiOntcInBpbmdkb21faWRcIjpcIjQxNDcwMDJcIixcInByaW9yaXR5XCI6MSxcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI2NTk0XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yNjU5NFwifSxcInBhcnRuZXJcIjpcImJyeFwifSxcImdvb2dcIjp7XCJwcmlvcml0eVwiOjEsXCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yNTQ3MFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjU0NzBcIn0sXCJwYXJ0bmVyXCI6XCJnb29nXCJ9LFwiYTlldVwiOntcInByaW9yaXR5XCI6MSxcInNhbXBsZVwiOjUsXCJpbWdcIjpcImh0dHA6XFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvZXhjaGFuZ2VcXC9zeW5jLnBocD9wPWE5ZXVcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvZXhjaGFuZ2VcXC9zeW5jLnBocD9wPWE5ZXVcIn0sXCJwYXJ0bmVyXCI6XCJhOWV1XCIsXCJjb3VudHJ5XCI6W1wiaWVcIixcImdiXCIsXCJ1a1wiLFwiZnJcIixcImRlXCIsXCJlc1wiLFwicHRcIixcIml0XCIsXCJub1wiLFwic2VcIixcIm5sXCIsXCJiZVwiLFwiZmlcIixcImNoXCJdfSxcImE5dXNcIjp7XCJwcmlvcml0eVwiOjEsXCJzYW1wbGVcIjo1LFwiaW1nXCI6XCJodHRwOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD1hOXVzXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL2V4Y2hhbmdlXFwvc3luYy5waHA/cD1hOXVzXCJ9LFwicGFydG5lclwiOlwiYTl1c1wiLFwiY291bnRyeVwiOltcInVzXCIsXCJjYVwiLFwibXhcIixcImJyXCIsXCJhdVwiLFwibnpcIixcImpwXCJdfX19LFwicnRiX2V4dFwiOntcInNhbXBsZVwiOjEwMCxcInBpeGVsc1wiOnt9fSxcImF1ZFwiOntcInNhbXBsZVwiOjEwMCxcInBpeGVsc1wiOntcImJrXCI6e1wicGluZ2RvbV9pZFwiOlwiNjA1NzI4XCIsXCJ0dGxcIjo0LFwiaW1nXCI6XCJodHRwOlxcL1xcL3RhZ3MuYmx1ZWthaS5jb21cXC9zaXRlXFwvNjEyMz9yZWRpcj1odHRwcyUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMyUyNnB1aWQlM0QlMjRfQktfVVVJRFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC90YWdzLmJsdWVrYWkuY29tXFwvc2l0ZVxcLzYxMjM/cmVkaXI9aHR0cHMlM0ElMkYlMkZ0b2tlbi5ydWJpY29ucHJvamVjdC5jb20lMkZ0b2tlbiUzRnBpZCUzRDMlMjZwdWlkJTNEJTI0X0JLX1VVSURcIn0sXCJwYXJ0bmVyXCI6XCJibHVla2FpXCJ9LFwiYWFtXCI6e1wicGluZ2RvbV9pZFwiOlwiNjYxMzIwXCIsXCJ0dGxcIjoxNCxcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTY0MDRcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTY0MDRcIn0sXCJwYXJ0bmVyXCI6XCJhZG9iZVwifSxcIm5ldVwiOntcInBpbmdkb21faWRcIjpcIjE0MTExNTdcIixcInR0bFwiOjcsXCJzYW1wbGVcIjowLFwiaW1nXCI6XCJodHRwOlxcL1xcL2FkYWR2aXNvci5uZXRcXC9hZHNjb3Jlc1xcL2cucGl4ZWw/c2lkPTkyMTIyNzA0OThcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvYWRhZHZpc29yLm5ldFxcL2Fkc2NvcmVzXFwvZy5waXhlbD9zaWQ9OTIxMjI3MDQ5OFwifSxcInBhcnRuZXJcIjpcIm5ldXN0YXJcIixcImNvdW50cnlcIjpbXCJ1c1wiXX0sXCJ0dXJuXCI6e1wicGluZ2RvbV9pZFwiOlwiMTUwNDA2MlwiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9MjcmYT0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0yNyZhPTFcIn0sXCJwYXJ0bmVyXCI6XCJ0dXJuLWRtcFwifSxcIm1tcHViXCI6e1wicGluZ2RvbV9pZFwiOlwiMjExNzMwNlwiLFwidHRsXCI6NyxcImltZ1wiOlwiaHR0cDpcXC9cXC9waXhlbC5tYXRodGFnLmNvbVxcL3N5bmNcXC9pbWc/cmVkaXI9aHR0cCUzQSUyRiUyRnRva2VuLnJ1Ymljb25wcm9qZWN0LmNvbSUyRnRva2VuJTNGcGlkJTNEMzU5MTIlMjZwdWlkJTNEJTVCTU1fVVVJRCU1RFwiLFwic2VjdXJlXCI6e1wiaW1nXCI6XCJodHRwczpcXC9cXC9waXhlbC5tYXRodGFnLmNvbVxcL3N5bmNcXC9pbWc/cmVkaXI9aHR0cHMlM0ElMkYlMkZ0b2tlbi5ydWJpY29ucHJvamVjdC5jb20lMkZ0b2tlbiUzRnBpZCUzRDM1OTEyJTI2cHVpZCUzRCU1Qk1NX1VVSUQlNURcIn0sXCJwYXJ0bmVyXCI6XCJtZWRpYW1hdGgtcHViXCJ9LFwidGFwYWQtY3Jvc3NkZXZpY2VcIjp7XCJ0dGxcIjo3LFwic2FtcGxlXCI6MCxcImltZ1wiOlwiaHR0cDpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mzc1NTYmYT0xXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3Rva2VuLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0zNzU1NiZhPTFcIn0sXCJwYXJ0bmVyXCI6XCJ0YXBhZC1jcm9zc2RldmljZVwifSxcImRpZ2l0cnVzdFwiOntcInR0bFwiOjE0LFwiaW1nXCI6XCJodHRwOlxcL1xcL3J1Ymljb24uZGlnaXRydS5zdFxcL2RpZ2l0cnVzdC1zeW5jXCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3J1Ymljb24uZGlnaXRydS5zdFxcL2RpZ2l0cnVzdC1zeW5jXCJ9LFwic2FtcGxlXCI6MCxcInBhcnRuZXJcIjpcImRpZ2l0cnVzdFwifSxcIm93bmVySVEtZG1wXCI6e1wic2FtcGxlXCI6MCxcInR0bFwiOjE0LFwiaW1nXCI6XCJodHRwOlxcL1xcL3B4Lm93bmVyaXEubmV0XFwvZXVjbVxcL3BcXC9yYz9yZWRpcj1odHRwJTNBJTJGJTJGdG9rZW4ucnViaWNvbnByb2plY3QuY29tJTJGdG9rZW4lM0ZwaWQlM0QzMzUzJTI2cHVpZCUzRChPSVFfVVVJRClcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcHgub3duZXJpcS5uZXRcXC9ldWNtXFwvcFxcL3JjP3JlZGlyPWh0dHBzJTNBJTJGJTJGdG9rZW4ucnViaWNvbnByb2plY3QuY29tJTJGdG9rZW4lM0ZwaWQlM0QzMzUzJTI2cHVpZCUzRChPSVFfVVVJRClcIn0sXCJwYXJ0bmVyXCI6XCJvd25lcklRLWRtcFwifSxcImE5c1wiOntcInR0bFwiOjcsXCJyZWdpb25cIjpbXCJ1c1wiXSxcImlmcmFtZVwiOlwiaHR0cHM6XFwvXFwvcy5hbWF6b24tYWRzeXN0ZW0uY29tXFwveFxcLzFjMmZkMTRiZjMxMGI2YWZmNjQ5XCIsXCJzZWN1cmVcIjp7XCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL3MuYW1hem9uLWFkc3lzdGVtLmNvbVxcL3hcXC8xYzJmZDE0YmYzMTBiNmFmZjY0OVwifSxcInBhcnRuZXJcIjpcImFtYXpvbi1wdWItdXMtc3luY1wifSxcImE5cy1ldVwiOntcInR0bFwiOjcsXCJyZWdpb25cIjpbXCJldVwiXSxcImlmcmFtZVwiOlwiaHR0cHM6XFwvXFwvYWF4LWV1LmFtYXpvbi1hZHN5c3RlbS5jb21cXC9zXFwveFxcLzFjMmZkMTRiZjMxMGI2YWZmNjQ5XCIsXCJzZWN1cmVcIjp7XCJpZnJhbWVcIjpcImh0dHBzOlxcL1xcL2FheC1ldS5hbWF6b24tYWRzeXN0ZW0uY29tXFwvc1xcL3hcXC8xYzJmZDE0YmYzMTBiNmFmZjY0OVwifSxcInBhcnRuZXJcIjpcImFtYXpvbi1ldS1zeW5jXCJ9LFwiTWVya2xlXCI6e1wic2FtcGxlXCI6MCxcInR0bFwiOjE0LFwiaW1nXCI6XCJodHRwczpcXC9cXC90b2tlbi5ydWJpY29ucHJvamVjdC5jb21cXC90b2tlbj9waWQ9Mjg3NTJcIixcInNlY3VyZVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvdG9rZW4ucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTI4NzUyXCJ9LFwicGFydG5lclwiOlwiTWVya2xlXCJ9LFwic2lyZGF0YVwiOntcImltZ1wiOlwiaHR0cHM6XFwvXFwvcGl4ZWwucnViaWNvbnByb2plY3QuY29tXFwvdG9rZW4/cGlkPTM0NDU4XCIsXCJzZWN1cmVcIjp7XCJpbWdcIjpcImh0dHBzOlxcL1xcL3BpeGVsLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3Rva2VuP3BpZD0zNDQ1OFwifSxcInNhbXBsZVwiOjAsXCJwYXJ0bmVyXCI6XCJzaXJkYXRhXCJ9fX0sXCJuZXRzXCI6e1wic2FtcGxlXCI6MTAwLFwicGl4ZWxzXCI6e319LFwicHVic1wiOntcInNhbXBsZVwiOjAsXCJwaXhlbHNcIjp7fX19LFwibm90aWZ5XCI6e1wicnViaWNvblwiOntcInNhbXBsZVwiOjAsXCJpbWdcIjpcImh0dHA6XFwvXFwvdGFwLnJ1Ymljb25wcm9qZWN0LmNvbVxcL3N0YXRzXFwvcnRic3luY1wifX0sXCJwcmlvcml0eVwiOjIwLFwicmVzeW5jXCI6MSxcIm1heF9pZV9wYXJ0bmVyc1wiOjEwMDAsXCJsYXN0TW9kaWZpZWRcIjpcIjIwMTgtMDUtMTAgMDk6MTk6NTlcIixcIm1vZGlmaWVkXCI6MTU5Nzg2MTM4MSxcImRhdGVNb2RpZmllZFwiOlwiMjAyMC0wOC0xOSAxMToyMzowMSBQRFRcIn07XG5cbiAgICBmdW5jdGlvbiBpc1NlbGxlclN5bmMoKXtyZXR1cm4hIXJldHJpZXZlUXVlcnlQYXJhbXMoKS5wfWZ1bmN0aW9uIHNob3VsZFNraXBCdXllclN5bmMoKXtyZXR1cm4gc2tpcEJ1eWVyU3luY3x8ITE9PT1za2lwQnV5ZXJTeW5jP3NraXBCdXllclN5bmM6TWF0aC5mbG9vcigxMDAqTWF0aC5yYW5kb20oKSk8TnVtYmVyKHJ0Yl9zeW5jLnNhbXBsZSk/YWxyZWFkeVJhbk9uUGFnZSgpPyhsb2coXCJza2lwcGluZyBidXllciBzeW5jIGNhdXNlIGFscmVhZHkgcmFuXCIpLHNraXBCdXllclN5bmM9ITApOnNraXBCdXllclN5bmM9ITE6KGxvZyhcInNraXBwaW5nIGJ1eWVyIHN5bmMgZHVlIHRvIHNhbXBsaW5nXCIpLHNraXBCdXllclN5bmM9ITApfWZ1bmN0aW9uIGdldFBhcnRuZXJGY2FwcyhhKXt0cnl7dmFyIGI9SlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oYSkpfWNhdGNoKGUpe31yZXR1cm4gYnx8e319ZnVuY3Rpb24gZ2V0UGFydG5lckZjYXAoYSxiKXtyZXR1cm4gYj8oYVtiXT1hW2JdfHxjcmVhdGVOZXdGY2FwKCksYVtiXSk6bnVsbH1mdW5jdGlvbiBpc0V4cGlyZWQoYSl7cmV0dXJuIWF8fCFhLmV4cHx8YS5leHA8KG5ldyBEYXRlKS5nZXRUaW1lKCkvMWUzfWZ1bmN0aW9uIGlzQ2FwcGVkKGEpe3JldHVybiEhYSYmYS5jYXA+PWNhcCYmIWlzRXhwaXJlZChhKX1mdW5jdGlvbiBjcmVhdGVOZXdGY2FwKCl7cmV0dXJue2NhcDowLGV4cDoobmV3IERhdGUpLmdldFRpbWUoKS8xZTMrZXhwaXJhdGlvbn19ZnVuY3Rpb24gaW5jcmVtZW50UGFydG5lckZjYXAoYSl7YS5jYXArK31mdW5jdGlvbiByZW1vdmVFeHBpcmVkUGFydG5lcnMoYSl7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmaXNFeHBpcmVkKGFbYl0pJiZkZWxldGUgYVtiXX1mdW5jdGlvbiBzYXZlUGFydG5lckZjYXBzKGEsYil7aWYoYSl0cnl7d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGEsSlNPTi5zdHJpbmdpZnkoYikpfWNhdGNoKGUpe319ZnVuY3Rpb24gZ2V0Q29uc2VudFdpbmRvd0ZvcihhKXtmb3IodmFyIGI9d2luZG93O2IhPT13aW5kb3cudG9wOyl7Yj1iLnBhcmVudDt0cnl7aWYoYi5mcmFtZXNbYV0pcmV0dXJuIGJ9Y2F0Y2goZSl7fX1yZXR1cm4hMX1mdW5jdGlvbiBvel9vblBpeGVsc0xvYWRlZChhKXtpZihhJiZhLnBpeGVscylmb3IodmFyIGIsYz0wO2M8YS5waXhlbHMubGVuZ3RoO2MrKykoYj1hLnBpeGVsc1tjXS51cmwpJiYwPT1iLmluZGV4T2YoXCJodHRwXCIpJiYoKG5ldyBJbWFnZSkuc3JjPWFwcGVuZENvbnNlbnRRUyhiKSl9ZnVuY3Rpb24gZ2V0UmVmZXJyZXIoKXt2YXIgYSxiPWRvY3VtZW50LnJlZmVycmVyO3JldHVybiBiJiZiLmxlbmd0aD4wJiYoYT1lc2NhcGUoYikpLGF9ZnVuY3Rpb24gc2V0Q29va2llKGEsYixjKXt2YXIgZDtpZihjKXt2YXIgZT1uZXcgRGF0ZTtlLnNldFRpbWUoZS5nZXRUaW1lKCkrMjQqYyo2MCo2MCoxZTMpLGQ9XCI7IGV4cGlyZXM9XCIrZS50b0dNVFN0cmluZygpfWVsc2UgZD1cIlwiO2RvY3VtZW50LmNvb2tpZT1hK1wiPVwiK2VzY2FwZShiKStkK1wiOyBwYXRoPS87IFNhbWVTaXRlPU5vbmU7IFNlY3VyZVwifWZ1bmN0aW9uIGRlbGV0ZUNvb2tpZShhKXtkb2N1bWVudC5jb29raWU9YStcIj07IFBhdGg9LzsgRXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsgU2FtZVNpdGU9Tm9uZTsgU2VjdXJlXCJ9ZnVuY3Rpb24gcmVhZENvb2tpZShhKXtmb3IodmFyIGI9YStcIj1cIixjPWRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIiksZD0wO2Q8Yy5sZW5ndGg7ZCsrKXtmb3IodmFyIGU9Y1tkXTtcIiBcIj09ZS5jaGFyQXQoMCk7KWU9ZS5zdWJzdHJpbmcoMSxlLmxlbmd0aCk7aWYoMD09ZS5pbmRleE9mKGIpKXJldHVybiB1bmVzY2FwZShlLnN1YnN0cmluZyhiLmxlbmd0aCxlLmxlbmd0aCkpfXJldHVybiBudWxsfWZ1bmN0aW9uIHRyaW1fd2hpdGVzcGFjZShhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nbSxcIlwiKX1mdW5jdGlvbiBjb3VudENvb2tpZXMoYSl7Zm9yKHZhciBiPWRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIiksYz0wLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXTtlPXRyaW1fd2hpdGVzcGFjZShlKSxhPzA9PWUuaW5kZXhPZihhKSYmYysrOmMrK31yZXR1cm4gY31mdW5jdGlvbiBhZGRTY3JpcHRBc3luYyhhLGIpe3ZhciBjO2M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSxiJiZjLnNldEF0dHJpYnV0ZShcImlkXCIsYiksYy5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJ0ZXh0L2phdmFzY3JpcHRcIiksYT1hLnJlcGxhY2UoL1xccy9nLFwiK1wiKSxjLnNldEF0dHJpYnV0ZShcInNyY1wiLGEpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKS5pdGVtKDApLmFwcGVuZENoaWxkKGMpfWZ1bmN0aW9uIGFkZFNjcmlwdChhLGIpe3ZhciBjPSc8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBTUkM9XCInK2ErJ1wiIGFzeW5jPjxcXC9zY3JpcHQ+Jztkb2N1bWVudC53cml0ZShjKX1mdW5jdGlvbiByZWFkUHV0Q29va2llKCl7Zm9yKHZhciBhPXt9LGI9ZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKSxjPTA7YzxiLmxlbmd0aDtjKyspe2Zvcih2YXIgZD1iW2NdO1wiIFwiPT1kLmNoYXJBdCgwKTspZD1kLnN1YnN0cmluZygxLGQubGVuZ3RoKTtpZigwPT1kLmluZGV4T2YoXCJwdXRfXCIpKXt2YXIgZT11bmVzY2FwZShkLnN1YnN0cmluZyg0LGQuaW5kZXhPZihcIj1cIikpKSxmPXVuZXNjYXBlKGQuc3Vic3RyaW5nKGQuaW5kZXhPZihcIj1cIikrMSxkLmxlbmd0aCkpO2FbZV09Zn19cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFNwdXRDb29raWUoKXtmb3IodmFyIGE9e30sYj1kb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpLGM9MDtjPGIubGVuZ3RoO2MrKyl7Zm9yKHZhciBkPWJbY107XCIgXCI9PWQuY2hhckF0KDApOylkPWQuc3Vic3RyaW5nKDEsZC5sZW5ndGgpO2lmKDA9PWQuaW5kZXhPZihcInNwdXRcIikpe3ZhciBlPWQuc3Vic3RyaW5nKGQuaW5kZXhPZihcIj1cIikrMSxkLmxlbmd0aCk7aWYoZSlmb3IodmFyIGY9ZS5zcGxpdChcInxcIiksZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgaD1mW2ddLGk9aC5zcGxpdChcIl5cIik7aWYoaS5sZW5ndGg+PTIpe3ZhciBqPXVuZXNjYXBlKGlbMF0pLGs9dW5lc2NhcGUoaVsxXSk7YVtqXT1rfX19fXJldHVybiBhfWZ1bmN0aW9uIHJlYWRWYWx1ZShhKXt2YXIgYj1wdXRbYV07cmV0dXJuIGJ8fChiPXNwdXRbYV0pLGJ9ZnVuY3Rpb24gcmV0cmlldmVRdWVyeVBhcmFtcygpe2Zvcih2YXIgYSxiPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLGM9Yi5zcGxpdChcIiZcIiksZD17fSxlPTA7ZTxjLmxlbmd0aDtlKyspYT1jW2VdLnNwbGl0KFwiPVwiKSxhWzBdJiYoZFtkZWNvZGVVUklDb21wb25lbnQoYVswXSldPWRlY29kZVVSSUNvbXBvbmVudChhWzFdfHxcIlwiKSk7cmV0dXJuIGR9ZnVuY3Rpb24gZ2V0Q291bnRyeSgpe3JldHVybihuYXZpZ2F0b3IubGFuZ3VhZ2V8fG5hdmlnYXRvci51c2VyTGFuZ3VhZ2V8fFwiXCIpLnN1YnN0cigtMikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBnZXRSZWdpb24oYSl7aWYoYSlmb3IodmFyIGIgaW4gcmVnaW9uQ291bnRyaWVzKWlmKHJlZ2lvbkNvdW50cmllcy5oYXNPd25Qcm9wZXJ0eShiKSYmcmVnaW9uQ291bnRyaWVzW2JdLmluZGV4T2YoYSk+LTEpcmV0dXJuIGI7cmV0dXJuXCJcIn1mdW5jdGlvbiBnZXRRdWVyeVN0cmluZ1BhcmFtKGEpe2lmKCFhfHwtMT09PSh3aW5kb3cubG9jYXRpb24uc2VhcmNofHxcIlwiKS5pbmRleE9mKGEpKXJldHVybiBudWxsO3ZhciBiPW5ldyBSZWdFeHAoXCJbPyZdXCIrYStcIigoPShbXiZdKikpfCgmfCQpKVwiKSxjPWIuZXhlYyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtyZXR1cm4hY3x8Yy5sZW5ndGg8NT9udWxsOmRlY29kZVVSSUNvbXBvbmVudChjWzNdfHxcIlwiKX1mdW5jdGlvbiBsb2FkRXhwaXJhdGlvbigpe3ZhciBhPXt9LGI9cmVhZENvb2tpZShcInB1eFwiKTtpZighYilyZXR1cm4gYTt2YXIgYyxkLGU9Yi5zcGxpdChcIiZcIik7Zm9yKHZhciBmIGluIGUpe3ZhciBnPWVbZl0uc3BsaXQoXCI9XCIpO2lmKCEoZy5sZW5ndGg8Mikpe2M9Z1swXSxkPWdbMV07dmFyIGg9ZC5zcGxpdChcIixcIik7aC5sZW5ndGg+MCYmKGFbY109e2NyZWF0ZWQ6aFswXX0pfX1yZXR1cm4gYX1mdW5jdGlvbiBzYXZlRXhwaXJhdGlvbihhKXt2YXIgYj1cIlwiO2ZvcihuYW1lIGluIGEpe3ZhciBjPWFbbmFtZV07Yis9bmFtZStcIj1cIixiKz1jLmNyZWF0ZWQsYis9XCImXCJ9c2V0Q29va2llKFwicHV4XCIsYiw5MCl9ZnVuY3Rpb24gaXNfZXhwaXJlZChhLGIpe3JldHVybiFifHwoYT1OdW1iZXIoYSksISgobmV3IERhdGUpLmdldFRpbWUoKS8zNmU1LW5ldyBEYXRlKDIwMTAsMCwxLDAsMCwwLDApLmdldFRpbWUoKS8zNmU1PG5ldyBOdW1iZXIoYi5jcmVhdGVkKSsyNCphKSl9ZnVuY3Rpb24gc2hvdWxkRmlyZVBpeGVsKGEpe3ZhciBiPWV4cGlyYXRpb25faW5mb1thLm5pZF07aWYoYiYmIWlzX2V4cGlyZWQoYS5pbmZvLnR0bHx8YS5jb250ZXh0LnR0bHx8cnRiX3N5bmMudHRsLGIpKXJldHVybiExO3ZhciBjPTA9PWEuaW5mby5zYW1wbGU/YS5pbmZvLnNhbXBsZTphLmluZm8uc2FtcGxlfHxhLmNvbnRleHQuc2FtcGxlfHxydGJfc3luYy5waXhlbF9zYW1wbGV8fDA7cmV0dXJuIGM9TnVtYmVyKGMpLE1hdGguZmxvb3IoMTAwKk1hdGgucmFuZG9tKCkpPGN9ZnVuY3Rpb24gZmlyZVBpeGVsKGEpe3ZhciBiPU1hdGguZmxvb3IoKG5ldyBEYXRlKS5nZXRUaW1lKCkvMzZlNSksYz1uZXcgRGF0ZSgyMDEwLDAsMSwwLDAsMCwwKS5nZXRUaW1lKCkvMzZlNTtleHBpcmF0aW9uX2luZm9bYS5uaWRdPXtjcmVhdGVkOmItY307dmFyIGQ9YS5pbmZvLnNlY3VyZT9hLmluZm8uc2VjdXJlOmEuaW5mbztpZihkKXt2YXIgZT1nZXRSZWZlcnJlcigpO2lmKGQuc2NyaXB0KXt2YXIgZj1kLnNjcmlwdDtcInJwXCI9PWEubmlkJiZlJiYoZj1hcHBlbmRRU1BhcmFtcyhmLFwicmY9XCIrZSkpfWQuaW1nJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7KG5ldyBJbWFnZSkuc3JjPWFwcGVuZENvbnNlbnRRUyhkLmltZyl9LDEwMCksZC5pZnJhbWUmJmRvY3VtZW50LndyaXRlKFwiPGlmcmFtZSBzcmM9J1wiK2FwcGVuZENvbnNlbnRRUyhkLmlmcmFtZSkrXCInIHdpZHRoPScxJyBoZWlnaHQ9JzEnIGZyYW1lYm9yZGVyPScwJz48L2lmcmFtZT5cIiksZC5zY3JpcHQmJmFkZFNjcmlwdChhcHBlbmRDb25zZW50UVMoZikpfX1mdW5jdGlvbiBzaHVmZmxlKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA9PWIpcmV0dXJuITE7Zm9yKDstLWI7KXt2YXIgYz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGIrMSkpLGQ9YVtiXSxlPWFbY107YVtiXT1lLGFbY109ZH19ZnVuY3Rpb24gcHJpb3JpdGl6ZShhKXthLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5pbmZvLnByaW9yaXR5LWIuaW5mby5wcmlvcml0eX0pfWZ1bmN0aW9uIGFycmF5X2NvbnRhaW5zKGEsYil7Zm9yKGUgaW4gYSlpZihiPT1hW2VdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGRldGVjdElFKCl7dmFyIGE9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuIGEuaW5kZXhPZihcIk1TSUUgXCIpPjB8fChhLmluZGV4T2YoXCJUcmlkZW50L1wiKT4wfHxhLmluZGV4T2YoXCJFZGdlL1wiKT4wKX1mdW5jdGlvbiBkb1BpeGVscygpe3ZhciBhPSEwLGI9bmV3IEFycmF5LGM9bmV3IEFycmF5O2lmKCFyZWFkQ29va2llKFwia2hhb3NcIikpcmV0dXJuIHZvaWQgbG9nKFwic2tpcHBpbmcgY2F1c2Ugbm8ga2hhb3NcIik7ZXhwaXJhdGlvbl9pbmZvPWxvYWRFeHBpcmF0aW9uKCk7Zm9yKHZhciBkIGluIHJ0Yl9waXhlbF9zZXQpe3ZhciBlPXJ0Yl9waXhlbF9zZXRbZF0sZj1ydGJfc3luYy5waXhlbF9zZXRzW2VdO2lmKGYpZm9yKGsgaW4gZi5waXhlbHMpe3ZhciBnPWYucGl4ZWxzW2tdO2cucHJpb3JpdHk9Zy5wcmlvcml0eXx8Zi5wcmlvcml0eXx8cnRiX3N5bmMucHJpb3JpdHksaXNQaXhlbEFsbG93ZWQoZy5zYW1wbGUsZy5yZWdpb24scmVxdWVzdF9yZWdpb24sZy5jb3VudHJ5LHJlcXVlc3RfY291bnRyeSkmJihnLnR0bD1nLnR0bHx8Zi50dGx8fHJ0Yl9zeW5jLnR0bCxcInJ0YlwiIT1lfHwhZy5yZXN5bmMmJiFmLnJlc3luY3x8cmVhZFZhbHVlKGcubmlkfHxrKXx8KGcudHRsPS41KSxiW2IubGVuZ3RoXT17cGl4ZWxfc2V0OmUsbmlkOmssaW5mbzpnLGNvbnRleHQ6Zn0pfX1pZihwcmlvcml0aXplKGIpLGRldGVjdElFKCkpe3ZhciBoPXJ0Yl9zeW5jLm1heF9pZV9wYXJ0bmVyc3x8Yi5sZW5ndGg7Yi5zcGxpY2UoaCxiLmxlbmd0aC1oKX1mb3IodmFyIGQgaW4gYil7dmFyIGk9YltkXTtpc19leHBpcmVkKGkuaW5mby50dGwsZXhwaXJhdGlvbl9pbmZvW2kubmlkXSkmJjAhPWkuaW5mby5zYW1wbGUmJihjW2MubGVuZ3RoXT1pKX1hPTA9PWMubGVuZ3RoLHNodWZmbGUoYykscHJpb3JpdGl6ZShjKTt2YXIgaj1ydGJfc3luYy5tYXhfcGl4ZWxzfHwxO2Zvcih2YXIgZCBpbiBjKXt2YXIgaT1jW2RdO2lmKHNob3VsZEZpcmVQaXhlbChpKSYmKGZpcmVQaXhlbChpKSwtLWo8PTApKWJyZWFrfXZhciBrPVwicnViaWNvblwiLGc9cnRiX3N5bmMubm90aWZ5W2tdLGk9e25pZDprLGluZm86Zyxjb250ZXh0OnJ0Yl9zeW5jfTtzaG91bGRGaXJlUGl4ZWwoaSkmJihpLmluZm8uaW1nKz1cIj9hbGxmaXJlZD1cIithLGkuaW5mby5pbWcrPVwiJmNvb2tpZXM9XCIrY291bnRDb29raWVzKCksaS5pbmZvLmltZys9XCImcHV0cz1cIitjb3VudENvb2tpZXMoXCJwdXRfXCIpLGkuaW5mby5pbWcrPVwiJmllPVwiKyhkZXRlY3RJRSgpP1widHJ1ZVwiOlwiZmFsc2VcIiksZmlyZVBpeGVsKGkpKSxzYXZlRXhwaXJhdGlvbihleHBpcmF0aW9uX2luZm8pfWZ1bmN0aW9uIGlzUGl4ZWxBbGxvd2VkKGEsYixjLGQsZSl7aWYoMD09YSlyZXR1cm4hMTt2YXIgZj0hKCFifHwhYyksZz0hKCFkfHwhZSk7cmV0dXJuIShmfHxnKXx8ZiYmKGI9PWN8fGFycmF5X2NvbnRhaW5zKGIsYykpfHxnJiYoZD09ZXx8YXJyYXlfY29udGFpbnMoZCxlKSl9ZnVuY3Rpb24gZ2V0Q29uc2VudFBhcmFtcyhhLGIsYyl7aWYoITE9PT1jKXJldHVybiBiO3ZhciBkPWJ8fHt9O3JldHVybiBhJiZcIm9iamVjdFwiPT10eXBlb2YgYSYmKGEudXNwU3RyaW5nfHwoZC5nZHByX2NvbnNlbnQ9YS50Y1N0cmluZ3x8YS5jb25zZW50RGF0YSksdm9pZCAwIT09YS5nZHByQXBwbGllcyYmKGQuZ2Rwcj1hLmdkcHJBcHBsaWVzPzE6MCksYS51c3BTdHJpbmcmJihkLnVzX3ByaXZhY3k9ZW5jb2RlVVJJQ29tcG9uZW50KGEudXNwU3RyaW5nKSkpLFwic3RyaW5nXCI9PXR5cGVvZiBhJiYoZC5nZHByX2NvbnNlbnQ9YSksZH1mdW5jdGlvbiBnZXRDb25zZW50UVMoYSl7dmFyIGI9XCJcIjtyZXR1cm4gYSYmKGIrPXZvaWQgMCE9PWEuZ2Rwcl9jb25zZW50P1wiZ2Rwcl9jb25zZW50PVwiK2EuZ2Rwcl9jb25zZW50OlwiXCIsYis9dm9pZCAwIT09YS5nZHByP1wiJmdkcHI9XCIrYS5nZHByOlwiXCIsYis9dm9pZCAwIT09YS51c19wcml2YWN5P1wiJnVzX3ByaXZhY3k9XCIrYS51c19wcml2YWN5OlwiXCIpLGJ9ZnVuY3Rpb24gYXBwZW5kUVNQYXJhbXMoYSxiKXtyZXR1cm4gYiYmYSYmKGErPWEubWF0Y2goL1xcPy8pP1wiJlwiOlwiP1wiLGErPWIpLGF9ZnVuY3Rpb24gYXBwZW5kQ29uc2VudFFTKGEpe3JldHVybiBhcHBlbmRRU1BhcmFtcyhhLGdldENvbnNlbnRRUyhjb25zZW50UGFyYW1zKSl9ZnVuY3Rpb24gYXBwZW5kUXVlcnlQYXJhbXMoYSl7dmFyIGI9W1wiZW5kcG9pbnRcIixcInJlZ2lvblwiLFwiY291bnRyeVwiLFwicFwiXSxjPVwiXCI7Zm9yKHZhciBkIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShkKSYmLTE9PT1iLmluZGV4T2YoZCkmJiFkLm1hdGNoKC9ecnBfLykmJihjKz1cIiZcIitlbmNvZGVVUklDb21wb25lbnQoZCkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFbZF0pKTtyZXR1cm4gY31mdW5jdGlvbiBnZXRDb25zZW50UVNQYXJhbXMoKXt2YXIgYT1nZXRRdWVyeVN0cmluZ1BhcmFtKFwiZ2RwclwiKSxiPWdldFF1ZXJ5U3RyaW5nUGFyYW0oXCJnZHByX2NvbnNlbnRcIiksYz1nZXRRdWVyeVN0cmluZ1BhcmFtKFwidXNfcHJpdmFjeVwiKTtpZihudWxsIT09Yil2YXIgZD17Z2Rwcl9jb25zZW50OmJ9O3JldHVybiBhJiYoZD1kfHx7fSxkLmdkcHI9XCJmYWxzZVwiPT09YXx8XCIwXCI9PT1hPzA6MSksYyYmKGQ9ZHx8e30sZC51c19wcml2YWN5PWMpLGR9ZnVuY3Rpb24gZ2V0Q29uc2VudChhKXtmdW5jdGlvbiBiKGEsYixjKXswIT09Zi5sZW5ndGgmJmYuaW5jbHVkZXMoYSkmJihmPWYuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiIT09YX0pLGNvbnNlbnRQYXJhbXM9Z2V0Q29uc2VudFBhcmFtcyhjLGNvbnNlbnRQYXJhbXMsYiksMD09PWYubGVuZ3RoJiZrKCkpfWlmKCEoY29uc2VudFBhcmFtcz1nZXRDb25zZW50UVNQYXJhbXMoKSl8fHZvaWQgMD09PWNvbnNlbnRQYXJhbXMuZ2Rwcil2YXIgYz1nZXRDb25zZW50V2luZG93Rm9yKFwiX190Y2ZhcGlMb2NhdG9yXCIpLGQ9Yz9udWxsOmdldENvbnNlbnRXaW5kb3dGb3IoXCJfX2NtcExvY2F0b3JcIik7aWYoIWNvbnNlbnRQYXJhbXN8fCFjb25zZW50UGFyYW1zLnVzX3ByaXZhY3kpdmFyIGU9Z2V0Q29uc2VudFdpbmRvd0ZvcihcIl9fdXNwYXBpTG9jYXRvclwiKTtpZighYyYmIWQmJiFlKXJldHVybiB2b2lkIGEoKTt2YXIgZj1bXSxnPSExLGg9XCJ1cy1cIitNYXRoLnJhbmRvbSgpLGk9XCJ1cy1cIitNYXRoLnJhbmRvbSgpLGo9XCJ1cy1cIitNYXRoLnJhbmRvbSgpLGs9ZnVuY3Rpb24oKXtnfHwoZz0hMCxhKCkpfTtpZihjPyhmLnB1c2goXCJ0Y2ZcIiksYy5wb3N0TWVzc2FnZSh7X190Y2ZhcGlDYWxsOntjYWxsSWQ6aixjb21tYW5kOlwiYWRkRXZlbnRMaXN0ZW5lclwiLHBhcmFtZXRlcjpudWxsLHZlcnNpb246Mn19LFwiKlwiKSk6ZCYmKGYucHVzaChcImNtcFwiKSxkLnBvc3RNZXNzYWdlKHtfX2NtcENhbGw6e2NhbGxJZDpoLGNvbW1hbmQ6XCJnZXRDb25zZW50RGF0YVwiLHBhcmFtZXRlcjpudWxsfX0sXCIqXCIpKSxlJiYoZi5wdXNoKFwidXNwXCIpLGUucG9zdE1lc3NhZ2Uoe19fdXNwYXBpQ2FsbDp7Y2FsbElkOmksY29tbWFuZDpcImdldFVTUERhdGFcIix2ZXJzaW9uOjF9fSxcIipcIikpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGZ1bmN0aW9uKGEpe3RyeXtpZihhJiZhLmRhdGEpe3ZhciBjPVwic3RyaW5nXCI9PXR5cGVvZiBhLmRhdGE/SlNPTi5wYXJzZShhLmRhdGEpOmEuZGF0YSxkPWMuX19jbXBSZXR1cm4sZT1jLl9fdXNwYXBpUmV0dXJuLGY9Yy5fX3RjZmFwaVJldHVybjtmJiZmLmNhbGxJZD09PWomJmYucmV0dXJuVmFsdWUmJihcInRjbG9hZGVkXCI9PT1mLnJldHVyblZhbHVlLmV2ZW50U3RhdHVzfHxcInVzZXJhY3Rpb25jb21wbGV0ZVwiPT09Zi5yZXR1cm5WYWx1ZS5ldmVudFN0YXR1cyk/KGNsZWFyVGltZW91dChtKSxiKFwidGNmXCIsZi5zdWNjZXNzLGYucmV0dXJuVmFsdWUpKTpkJiZkLmNhbGxJZD09PWgmJihjbGVhclRpbWVvdXQobiksYihcImNtcFwiLGQuc3VjY2VzcyxkLnJldHVyblZhbHVlKSksZSYmZS5jYWxsSWQ9PT1pJiYoY2xlYXJUaW1lb3V0KGwpLGIoXCJ1c3BcIixlLnN1Y2Nlc3MsZS5yZXR1cm5WYWx1ZSkpfX1jYXRjaChlKXt9fSksZSl2YXIgbD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihcInVzcFwiLCExKX0sMTAwKTtpZihjKXZhciBtPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKFwidGNmXCIsITEpfSw1MDApO2Vsc2UgaWYoZCl2YXIgbj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YihcImNtcFwiLCExKX0sNTAwKX1mdW5jdGlvbiBjaGVja0Nvb2tpZXMoKXtpZighZG9jdW1lbnQuY29va2llKXtpZihzZXRDb29raWUoXCJjZFwiLFwiZmFsc2VcIiksIWRvY3VtZW50LmNvb2tpZSlyZXR1cm4gdm9pZCBsb2coXCJza2lwcGluZyBjYXVzZSBjYW5ub3Qgc2V0IGNvb2tpZXNcIik7ZGVsZXRlQ29va2llKFwiY2RcIil9aWYocmVhZENvb2tpZShcImtoYW9zXCIpKXJ1blN5bmNzKCk7ZWxzZXt2YXIgYT1uZXcgSW1hZ2U7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtydW5TeW5jcygpfSxhLnNyYz1cImh0dHBzOi8vdG9rZW4ucnViaWNvbnByb2plY3QuY29tL2toYW9zLmpwZz9cIitnZXRDb25zZW50UVMoY29uc2VudFBhcmFtcyl9fWZ1bmN0aW9uIGFscmVhZHlSYW5PblBhZ2UoKXtmdW5jdGlvbiBhKCl7c2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShiKX1pZighbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQpcmV0dXJuIGxvZyhcIlRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgY29va2llc1wiKSwhMTt0cnl7dmFyIGI9XCJlbWlseVJhblwiO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyP3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidW5sb2FkXCIsYSwhMSk6d2luZG93LmF0dGFjaEV2ZW50JiZ3aW5kb3cuYXR0YWNoRXZlbnQoXCJvbnVubG9hZFwiLGEpO3ZhciBjPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oYik7aWYoKGM9YyYmTnVtYmVyKGMpKSYmKG5ldyBEYXRlKS5nZXRUaW1lKCktYzwzZTUpcmV0dXJuITA7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShiLChuZXcgRGF0ZSkuZ2V0VGltZSgpKX1jYXRjaChlKXtyZXR1cm4gbG9nKFwiZmFpbGVkIGNoZWNraW5nIGlmIGFscmVhZHkgcmFuOlwiLGUpLCExfXJldHVybiExfWZ1bmN0aW9uIHNlbGxlclN5bmMoYSxiLGMpe2E9YXx8e307dmFyIGQ9e1widXMtd2VzdFwiOlwiXCIsXCJ1cy1lYXN0XCI6XCJcIixldTpcIlwiLGFwYWM6XCJcIn0sZT1cIlwiO2EuZW5kcG9pbnQgaW4gZCYmKGU9XCItXCIrYS5lbmRwb2ludCk7dmFyIGY9W1wiaHR0cHM6Ly9waXhlbFwiLGUsXCIucnViaWNvbnByb2plY3QuY29tL2V4Y2hhbmdlL3N5bmMucGhwP3A9XCIsYl0uam9pbihcIlwiKTtmKz1hcHBlbmRRdWVyeVBhcmFtcyhhKSxmKz1hcHBlbmRRdWVyeVBhcmFtcyhjKSwobmV3IEltYWdlKS5zcmM9Zn1mdW5jdGlvbiBpbml0aWF0ZVNlbGxlclN5bmMoYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9Z2V0UGFydG5lckZjYXBzKFwiZmNhcFwiKTtyZW1vdmVFeHBpcmVkUGFydG5lcnMoYik7dmFyIGM9Z2V0UGFydG5lckZjYXAoYixhKSxkPSExO3JldHVybiBpc0NhcHBlZChjKXx8KGQ9ITAsaW5jcmVtZW50UGFydG5lckZjYXAoYykpLHNhdmVQYXJ0bmVyRmNhcHMoXCJmY2FwXCIsYiksZH1mdW5jdGlvbiBydW5TeW5jcygpe2lmKHJlYWRDb29raWUoXCJraGFvc1wiKSl7dmFyIGE9cmV0cmlldmVRdWVyeVBhcmFtcygpLGI9YS5wO2ImJihsb2coXCJkb2luZyBzZWxsZXIgc3luY1wiKSxiLnNwbGl0KFwiLFwiKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGluaXRpYXRlU2VsbGVyU3luYyhhKX0pLmZvckVhY2goZnVuY3Rpb24oYil7cmV0dXJuIHNlbGxlclN5bmMoYSxiLGNvbnNlbnRQYXJhbXMpfSkpLHNob3VsZFNraXBCdXllclN5bmMoKXx8KGxvZyhcImRvaW5nIGJ1eWVyIHN5bmNcIiksZG9QaXhlbHMoKSl9fWZ1bmN0aW9uIHN0YXJ0U3luYygpe3JldHVybiEoc2hvdWxkU2tpcEJ1eWVyU3luYygpJiYhaXNTZWxsZXJTeW5jKCkpJiYoZ2V0Q29uc2VudChjaGVja0Nvb2tpZXMpLCEwKX1mdW5jdGlvbiBsb2coKXt0cnl7XCJ0cnVlXCI9PT1yZWFkQ29va2llKFwiZW1pbHlfZGVidWdcIikmJmNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsW1wiRW1pbHk6XCJdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9Y2F0Y2goZSl7fX12YXIgc2tpcEJ1eWVyU3luYyxjb25zZW50UGFyYW1zLHJlZ2lvbkNvdW50cmllcz17YWY6W1wiYW9cIixcImJpXCIsXCJialwiLFwiYmZcIixcImJ3XCIsXCJjZlwiLFwiY2lcIixcImNtXCIsXCJjZFwiLFwiY2dcIixcImttXCIsXCJjdlwiLFwiZGpcIixcImR6XCIsXCJlZ1wiLFwiZXJcIixcImVoXCIsXCJldFwiLFwiZ2FcIixcImdoXCIsXCJnblwiLFwiZ21cIixcImd3XCIsXCJncVwiLFwia2VcIixcImxyXCIsXCJseVwiLFwibHNcIixcIm1hXCIsXCJtZ1wiLFwibWxcIixcIm16XCIsXCJtclwiLFwibXVcIixcIm13XCIsXCJ5dFwiLFwibmFcIixcIm5lXCIsXCJuZ1wiLFwicmVcIixcInJ3XCIsXCJzZFwiLFwic25cIixcInNoXCIsXCJzbFwiLFwic29cIixcInNzXCIsXCJzdFwiLFwic3pcIixcInNjXCIsXCJ0ZFwiLFwidGdcIixcInRuXCIsXCJ0elwiLFwidWdcIixcInphXCIsXCJ6bVwiLFwiendcIl0sYW46W1wiYXFcIixcInRmXCIsXCJidlwiXSxhczpbXCJhZlwiLFwiYWVcIixcImFtXCIsXCJhcFwiLFwiYXpcIixcImJkXCIsXCJiaFwiLFwiYm5cIixcImJ0XCIsXCJjblwiLFwiaGtcIixcImlkXCIsXCJpblwiLFwiaW9cIixcImlyXCIsXCJpcVwiLFwiaWxcIixcImpvXCIsXCJqcFwiLFwia3pcIixcImtnXCIsXCJraFwiLFwia3JcIixcImt3XCIsXCJsYVwiLFwibGJcIixcImxrXCIsXCJtb1wiLFwibXZcIixcIm1tXCIsXCJtblwiLFwibXlcIixcIm5wXCIsXCJvbVwiLFwicGtcIixcInBoXCIsXCJrcFwiLFwicHNcIixcInFhXCIsXCJzYVwiLFwic2dcIixcInN5XCIsXCJ0aFwiLFwidGpcIixcInRtXCIsXCJ0bFwiLFwidHdcIixcInV6XCIsXCJ2blwiLFwieWVcIl0sYXU6W1wiYXNcIixcImF1XCIsXCJjY1wiLFwiY2tcIixcImN4XCIsXCJmalwiLFwiZm1cIixcImd1XCIsXCJobVwiLFwia2lcIixcIm1oXCIsXCJtcFwiLFwibmNcIixcIm5mXCIsXCJudVwiLFwibnJcIixcIm56XCIsXCJwblwiLFwicHdcIixcInBnXCIsXCJwZlwiLFwic2JcIixcInRrXCIsXCJ0b1wiLFwidHZcIixcInVtXCIsXCJ2dVwiLFwid2ZcIixcIndzXCJdLGV1OltcImF4XCIsXCJhbFwiLFwiYWRcIixcImF0XCIsXCJiZVwiLFwiYmdcIixcImJhXCIsXCJieVwiLFwiY2hcIixcImN5XCIsXCJjelwiLFwiZGVcIixcImRrXCIsXCJlc1wiLFwiZWVcIixcImV1XCIsXCJmaVwiLFwiZnJcIixcImZvXCIsXCJ1a1wiLFwiZ2VcIixcImdnXCIsXCJnaVwiLFwiZ3JcIixcImhyXCIsXCJodVwiLFwiaW1cIixcImllXCIsXCJpc1wiLFwiaXRcIixcImplXCIsXCJsaVwiLFwibHRcIixcImx1XCIsXCJsdlwiLFwibWNcIixcIm1kXCIsXCJta1wiLFwibXRcIixcIm1lXCIsXCJubFwiLFwibm9cIixcInBsXCIsXCJwdFwiLFwicm9cIixcInJ1XCIsXCJzalwiLFwic21cIixcInJzXCIsXCJza1wiLFwic2lcIixcInNlXCIsXCJ0clwiLFwidWFcIixcInZhXCJdLG5hOltcImF3XCIsXCJhaVwiLFwiYW5cIixcImFnXCIsXCJicVwiLFwiYnNcIixcImJsXCIsXCJielwiLFwiYm1cIixcImJiXCIsXCJjYVwiLFwiY3JcIixcImN1XCIsXCJjd1wiLFwia3lcIixcImRtXCIsXCJkb1wiLFwiZ3BcIixcImdkXCIsXCJnbFwiLFwiZ3RcIixcImhuXCIsXCJodFwiLFwiam1cIixcImtuXCIsXCJsY1wiLFwibWZcIixcIm14XCIsXCJtc1wiLFwibXFcIixcIm5pXCIsXCJwYVwiLFwicHJcIixcInN2XCIsXCJwbVwiLFwic3hcIixcInRjXCIsXCJ0dFwiLFwidXNcIixcInZjXCIsXCJ2Z1wiLFwidmlcIl0sc2E6W1wiYXJcIixcImJvXCIsXCJiclwiLFwiY2xcIixcImNvXCIsXCJlY1wiLFwiZmtcIixcImdmXCIsXCJneVwiLFwicGVcIixcInB5XCIsXCJnc1wiLFwic3JcIixcInV5XCIsXCJ2ZVwiXX0scnRiX3N5bmM9d2luZG93LnJ0Yl9zeW5jfHx7fSxydGJfcGl4ZWxfc2V0PVtcInJ0YlwiLFwiYXVkXCIsXCJuZXRzXCIsXCJwdWJzXCJdLHJlcXVlc3RfY291bnRyeT1nZXRRdWVyeVN0cmluZ1BhcmFtKFwiY29cIil8fGdldENvdW50cnkoKSxyZXF1ZXN0X3JlZ2lvbj1nZXRRdWVyeVN0cmluZ1BhcmFtKFwiZ2VvXCIpfHxnZXRSZWdpb24ocmVxdWVzdF9jb3VudHJ5KSxwdXQ9cmVhZFB1dENvb2tpZSgpLHNwdXQ9cmVhZFNwdXRDb29raWUoKSxleHBpcmF0aW9uPTg2NDAwLGNhcD0xLGV4cGlyYXRpb25faW5mbztzdGFydFN5bmMoKTs8L3NjcmlwdD5cblxuXG5cblxuXG48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjEyLCAiYm9keVNpemUiOiA5NTk5LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAxMTIxMX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDM0Ljg2NywgInJlY2VpdmUiOiAyLjIzN30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTAwWiIsICJ0aW1lIjogOTMxLjY2MSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zaG93YWQuaHRtbCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC43In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDYzOSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIk5SaC5ESXR6SEhSNnhhdjQuc1NhVHdLSUQzY2lqaXFWN184Qm92SUJGTjgtMTY4NDk0Mjg3OS0wLUFjZktHaXMvZjJkUHhwREJsWkJpa3RCMmlhT3ozb3ZTdnJCSGxNZkRlL0wvM1d3bzRRN0YxVVhDNitiTElqa3d5UmRZNnhjNHZ5cG5OeUdFbVdYU1hIND0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDYxOGVlNjMwZjktRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE5IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1WQWhkNGJxVDZLdko2YkpkWHNrcDJkUjlDNkptdlNHOTQ2VTV1SEhHWG82ZVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPU5SaC5ESXR6SEhSNnhhdjQuc1NhVHdLSUQzY2lqaXFWN184Qm92SUJGTjgtMTY4NDk0Mjg3OS0wLUFjZktHaXMvZjJkUHhwREJsWkJpa3RCMmlhT3ozb3ZTdnJCSGxNZkRlL0wvM1d3bzRRN0YxVVhDNitiTElqa3d5UmRZNnhjNHZ5cG5OeUdFbVdYU1hIND07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc2hvd2FkLmh0bWwifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtVkFoZDRicVQ2S3ZKNmJKZFhza3AyZFI5QzZKbXZTRzk0NlU1dUhIR1hvNmUifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzODI5MSwgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDI0MjI3LCAidGV4dCI6ICJcbjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwMTQpYWJvdXQ6aW50ZXJuZXQgLS0+XG48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiPjwvaGVhZD48Ym9keSBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCI+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+PCEtLS8vKi9cbmlmKHdpbmRvdy5wdWJJZCYmd2luZG93LmthZGFzeW5jIT1mYWxzZSl7KGZ1bmN0aW9uKCl7dmFyIGE9KGZ1bmN0aW9uKCl7dmFyIGM9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO2lmKGMuaW5kZXhPZihcInNhZmFyaVwiKSE9LTEpe3JldHVybiBjLmluZGV4T2YoXCJjaHJvbWVcIik+LTE/ZmFsc2U6dHJ1ZX1yZXR1cm4gZmFsc2V9KSgpLGI9ezMxOTpcIlwiLDMzNDk2OlwiXCIsMTU1OTU3OlwiXCIsMTQ1MDU4OlwiXCIsNTcyNDg6XCJcIiw4MzQ0NjpcIlwiLDExNzI5NzpcIlwiLDU1NjAxOlwiXCIsMTE1OTM4OlwiXCIsMTQ4ODA0OlwiXCIsMTUwNTYxOlwiXCIsNzk1MDU6XCJcIiwzMjIyMzpcIlwiLDEwMDI1MzpcIlwiLDEzMjU5MTpcIlwiLDEzMzcxMDpcIlwiLDExODE4NDpcIlwiLDExMDc0MTpcIlwiLDExNjMxOTpcIlwiLDEzMjExMDpcIlwiLDE1MDU2MDpcIlwiLDExMjk2MTpcIlwiLDg5NDEzOlwiXCIsMTU1NDk3OlwiXCIsNjk5NzI6XCJcIiwxMTc0OTc6XCJcIiw5NjM4NzpcIlwiLDExOTI4MTpcIlwiLDEyODQ5NTpcIlwiLDEwNzEzNDpcIlwiLDExMDc5MTpcIlwiLDExNDYzNDpcIlwiLDQ1MTU2OlwiXCIsMzYzNjU6XCJcIiwxNDUxNjA6XCJcIiwxMjA3NDc6XCJcIiwxNDg4MDU6XCJcIiw4OTM3NjpcIlwiLDExMzE0ODpcIlwiLDEwNzI0NjpcIlwiLDkzNjM5OlwiXCIsMTIwNDk2OlwiXCIsNDc2ODM6XCJcIiw3MzEwMjpcIlwiLDE1NjAxMDpcIlwiLDE1NjE5MzpcIlwiLDE1NjE2NzpcIlwiLDE1NjE4MDpcIlwiLDE1Njg1MTpcIlwiLDE1NjU4NTpcIlwifTt3aW5kb3cucG1Bc3luY0VuYWJsZWQ9YSYmd2luZG93LnB1YklkJiYhYi5oYXNPd25Qcm9wZXJ0eSh3aW5kb3cucHViSWQpJiYhd2luZG93LmthZG11bHRpc2l6ZX0pKCl9aWYod2luZG93LnBtQXN5bmNFbmFibGVkKXsoZnVuY3Rpb24oKXt3aW5kb3cucG1Ec3BJZD17dWlkczpbXX07aWYoMSl7KGZ1bmN0aW9uKCl7d2luZG93LnBtQ3JpdGVvSGFuZGxlRGF0YT1mdW5jdGlvbihjKXtpZihjLnN0YXR1cz09XCJPS1wiJiZjLnVzZXJpZCl7d2luZG93LnBtRHNwSWQudWlkcy5wdXNoKHtweDoxMTYsdWlkOmMudXNlcmlkfSl9fTt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2IudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2IuYXN5bmM9MTtiLnNyYz1cImh0dHBzOi8vZ3VtLmNyaXRlby5jb20vc3luYz9jPTMxJnI9MiZqPXBtQ3JpdGVvSGFuZGxlRGF0YVwiO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdO2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYixhKX0pKCl9fSkoKX0oZnVuY3Rpb24oKXtmdW5jdGlvbiBhbyhiRSl7dmFyIGJKPVwiXCIsYkkseCxiRixiRCxiSCxiRz1cImh0dHBzOi8vaGFzby5wdWJtYXRpYy5jb20vanNFcnJvci9sb2dnZXIuanM/XCI7Zm9yKHggaW4gYkUpe2lmKHghPVwibWVzc2FnZVwiJiZ4IT1cIm5hbWVcIil7Ykk9YkVbeF07aWYodHlwZW9mIGJJPT09XCJzdHJpbmdcInx8dHlwZW9mIGJJPT09XCJudW1iZXJcIil7YkorPVwiW1wiK3grXCI6XCIrYkkrXCJdXCJ9fX1iRj1cInB1YklkPVwiK3dpbmRvdy5wdWJJZCsod2luZG93LmthZElkP1wiJmFkSWQ9XCIrd2luZG93LmthZElkOlwiXCIpK1wiJmNiPVwiK01hdGgucmFuZG9tKCkrXCImU0FWZXJzaW9uPTImbXNnPVwiK2VuY29kZVVSSUNvbXBvbmVudChiRS5tZXNzYWdlKStcIiZuYW1lPVwiK2VuY29kZVVSSUNvbXBvbmVudChiRS5uYW1lKStcIiZkZXNjPVwiK2VuY29kZVVSSUNvbXBvbmVudChiSikrXCImdXJsPVwiK2VuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZik7aWYodHlwZW9mIHdpbmRvdy5JbWFnZT09XCJmdW5jdGlvblwiKXsobmV3IEltYWdlKCkpLnNyYz1iRytiRn1lbHNle2JEPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7YkQuc3JjPWJHK2JGO2JIPWRvY3VtZW50LmJvZHl8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXXx8ZmFsc2U7YkgmJmJILmFwcGVuZENoaWxkKGJEKX19dHJ5e3ZhciBhUD13aW5kb3csdT1uYXZpZ2F0b3IsYTY9YVAudG9wfHxhUCxaPWVuY29kZVVSSUNvbXBvbmVudCxhST1kZWNvZGVVUklDb21wb25lbnQsYnU9YVAucGFyc2VJbnQsRyx6PTUxMixidz01MTIsYXU9NTAsYVg9XCJoZWlnaHQ6MHB4O3dpZHRoOjBweDtkaXNwbGF5Om5vbmU7XCIsYmE9JzxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIicsYXc9YVAuUHViTWF0aWN8fChhUC5QdWJNYXRpYz17fSksYWw9YXcucG1BZEluZm98fChhdy5wbUFkSW5mbz17fSksYmQ9MSxsPWFQLmxvY2F0aW9uLGE5PShmdW5jdGlvbigpe3ZhciB4PW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtpZih4LmluZGV4T2YoXCJzYWZhcmlcIikhPS0xKXtyZXR1cm4geC5pbmRleE9mKFwiY2hyb21lXCIpPi0xP2ZhbHNlOnRydWV9cmV0dXJuIGZhbHNlfSkoKSxhYz1mdW5jdGlvbih4KXtpZihhOSl7cmV0dXJuIHh9dHJ5e2lmKHgucGFyZW50JiZ4LnBhcmVudC5kb2N1bWVudCYmeC5sb2NhdGlvbiYmeC5wYXJlbnQuZG9jdW1lbnQhPXguZG9jdW1lbnQpe3JldHVybiBhYyh4LnBhcmVudCl9fWNhdGNoKGJEKXt9cmV0dXJuIHh9LGF4PVwiaHR0cHM6Ly9cIixqPVwiQWRTZXJ2ZXJcIixiaD1cInB1Ym1hdGljLmNvbVwiLGFFPVwiYWRzLlwiK2JoLGEzPVwiL1wiK2orXCIvXCIraitcIlNlcnZsZXRcIixibT1hRStcIi9cIitqK1wiL1wiLGJxPWF4K2JtK1wianNcIixieT1heCsoYmQ/XCJzXCI6XCJcIikrXCJzaG93YWRzLlwiK2JoK2EzLGF2PWFQLmxvY2F0aW9uLmhyZWYsYTg9YXYuaW5kZXhPZihcIiNcIik+LTE/YXYuc3Vic3RyKGF2LmluZGV4T2YoXCIjXCIpKzEpOlwiXCIsYXQ9YnErXCIvc2hvd2FkLmpzXCIsTz1cIi9cIitqK1wiL2pzL3Nob3dhZC5qc1wiLGFXLGE1LGJiLEMsYUY9e30sYmc9ZnVuY3Rpb24oeCl7cmV0dXJuIHR5cGVvZiB4PT09XCJmdW5jdGlvblwifSxibj1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsXCJQdWJNYXRpYzpcIiksbz1mdW5jdGlvbigpe3JldHVyblwiaHR0cHM6XCJ9LHM9ZnVuY3Rpb24oeCxiRil7dmFyIGJFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7YkUudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2JFLnNyYz14O2lmKGJnKGJGKSl7YkUub25sb2FkPWJFLm9ucmVhZHlzdGF0ZWNoYW5nZT1iRn12YXIgYkQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07YkQmJmJELnBhcmVudE5vZGUmJmJnKGJELnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQpJiZiRC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGJFKX0sYnI9KGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBhUC5sb2NhbFN0b3JhZ2UmJmJnKGFQLmxvY2FsU3RvcmFnZS5nZXRJdGVtKSYmYmcoYVAubG9jYWxTdG9yYWdlLnNldEl0ZW0pfWNhdGNoKHgpe3JldHVybiBmYWxzZX19KSgpLGg9XCJQdWJNYXRpY1wiLGJ0PVwiUHViTWF0aWNfVVNQXCIsYT0oYVAuX19jbXA/MTooYVAua2FkR2Rwcj9hUC5rYWRHZHByOjApKSxiaz1mdW5jdGlvbihiRyxiRil7dmFyIGJEPTAseD1iRy5sZW5ndGgsYkU9ZmFsc2U7Zm9yKDtiRDx4O2JEKyspe2lmKGJHW2JEXT09PWJGKXtiRT10cnVlO2JyZWFrfX1yZXR1cm4gYkV9LG49ZnVuY3Rpb24oeCxiRCl7ZnVuY3Rpb24gYkcoKXt2YXIgYk89e307ZnVuY3Rpb24gYlAoKXtpZihiTy5nZXRDb25zZW50RGF0YSYmYk8uZ2V0VmVuZG9yQ29uc2VudHMpe3goYk8pfX1yZXR1cm57Y29uc2VudERhdGFDYWxsYmFjazpmdW5jdGlvbihiUSl7Yk8uZ2V0Q29uc2VudERhdGE9YlE7YlAoKX0sdmVuZG9yQ29uc2VudHNDYWxsYmFjazpmdW5jdGlvbihiUSl7Yk8uZ2V0VmVuZG9yQ29uc2VudHM9YlE7YlAoKX19fWZ1bmN0aW9uIGJOKCl7d2luZG93Ll9fY21wKFwiZ2V0Q29uc2VudERhdGFcIixudWxsLGJFLmNvbnNlbnREYXRhQ2FsbGJhY2spO3dpbmRvdy5fX2NtcChcImdldFZlbmRvckNvbnNlbnRzXCIsbnVsbCxiRS52ZW5kb3JDb25zZW50c0NhbGxiYWNrKX12YXIgYkU9YkcoKTt2YXIgYkw9e307aWYod2luZG93Ll9fY21wKXtpZih0eXBlb2Ygd2luZG93Ll9fY21wPT09XCJmdW5jdGlvblwiKXtiTigpfWVsc2V7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHR5cGVvZiB3aW5kb3cuX19jbXA9PT1cImZ1bmN0aW9uXCIpe2JOKCl9fSw1MDApfX1lbHNle2lmKHdpbmRvdyE9PWE2KXtpZihiSCgpJiZ0eXBlb2Ygd2luZG93LiRzZi5leHQuY21wPT09XCJmdW5jdGlvblwiKXtiTShcImdldENvbnNlbnREYXRhXCIsYkUuY29uc2VudERhdGFDYWxsYmFjayk7Yk0oXCJnZXRWZW5kb3JDb25zZW50c1wiLGJFLnZlbmRvckNvbnNlbnRzQ2FsbGJhY2spfWVsc2V7dmFyIGJKPXdpbmRvdzt2YXIgYkk7d2hpbGUoIWJJKXt0cnl7aWYoYkouZnJhbWVzLl9fY21wTG9jYXRvcil7Ykk9Ykp9fWNhdGNoKGJLKXt9aWYoYko9PT13aW5kb3cudG9wKXticmVha31iSj1iSi5wYXJlbnR9YkYoXCJnZXRDb25zZW50RGF0YVwiLGJJLGJFLmNvbnNlbnREYXRhQ2FsbGJhY2spO2JGKFwiZ2V0VmVuZG9yQ29uc2VudHNcIixiSSxiRS52ZW5kb3JDb25zZW50c0NhbGxiYWNrKX19ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYodHlwZW9mIHdpbmRvdy5fX2NtcD09PVwiZnVuY3Rpb25cIil7Yk4oKX19LDUwMCl9fWZ1bmN0aW9uIGJIKCl7cmV0dXJuICEhKHdpbmRvdy4kc2YmJndpbmRvdy4kc2YuZXh0KX1mdW5jdGlvbiBiTShiUCxiUSl7ZnVuY3Rpb24gYk8oYlQsYlMpe2lmKGJUPT09XCJjbXBSZXR1cm5cIil7dmFyIGJSPShiUD09PVwiZ2V0Q29uc2VudERhdGFcIik/YlMudmVuZG9yQ29uc2VudERhdGE6YlMudmVuZG9yQ29uc2VudHM7YlEoYlIpfX13aW5kb3cuJHNmLmV4dC5yZWdpc3RlcigxLDEsYk8pO3dpbmRvdy4kc2YuZXh0LmNtcChiUCl9ZnVuY3Rpb24gYkYoYlEsYlQsYlMpe3dpbmRvdy5fX2NtcD1mdW5jdGlvbihiVyxiVSxiWil7aWYoIWJUKXtiUigpO3ZhciBiWT1cIlRDRjE6IENNUCBub3QgZm91bmRcIjtyZXR1cm4gYkQoYlkpfXZhciBiVj1NYXRoLnJhbmRvbSgpK1wiXCI7dmFyIGJYPXtfX2NtcENhbGw6e2NvbW1hbmQ6YlcscGFyYW1ldGVyOmJVLGNhbGxJZDpiVn19O2JMW2JWXT1iWjtiVC5wb3N0TWVzc2FnZShiWCxcIipcIil9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGJQLGZhbHNlKTt3aW5kb3cuX19jbXAoYlEsbnVsbCxiTyk7ZnVuY3Rpb24gYlAoYlcpe3ZhciBiVj0odHlwZW9mIGJXLmRhdGE9PT1cInN0cmluZ1wiJiZiayhiVy5kYXRhLFwiY21wUmV0dXJuXCIpKT9KU09OLnBhcnNlKGJXLmRhdGEpOmJXLmRhdGE7aWYoYlYuX19jbXBSZXR1cm4mJmJWLl9fY21wUmV0dXJuLmNhbGxJZCl7dmFyIGJVPWJWLl9fY21wUmV0dXJuO2lmKHR5cGVvZiBiTFtiVS5jYWxsSWRdIT09XCJ1bmRlZmluZWRcIil7YkxbYlUuY2FsbElkXShiVS5yZXR1cm5WYWx1ZSxiVS5zdWNjZXNzKTtkZWxldGUgYkxbYlUuY2FsbElkXX19fWZ1bmN0aW9uIGJSKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsYlAsZmFsc2UpfWZ1bmN0aW9uIGJPKGJVKXtiUigpO2JTKGJVKX19fSxrPWZ1bmN0aW9uKHgsYkQpe2Z1bmN0aW9uIGJFKGJNLGJOKXtpZihiTil7eChiTSxiTil9ZWxzZXtiRChiTSxiTil9fWZ1bmN0aW9uIGJMKCl7d2luZG93Ll9fdGNmYXBpKFwiZ2V0VENEYXRhXCIsMixiRSl9dmFyIGJLPXt9O2lmKHdpbmRvdy5fX3RjZmFwaSl7aWYodHlwZW9mIHdpbmRvdy5fX3RjZmFwaT09PVwiZnVuY3Rpb25cIil7YkwoKX1lbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZih0eXBlb2Ygd2luZG93Ll9fdGNmYXBpPT09XCJmdW5jdGlvblwiKXtiTCgpfX0sNTAwKX19ZWxzZXtpZih3aW5kb3chPT1hNil7dmFyIGJJPXdpbmRvdzt2YXIgYkg7d2hpbGUoIWJIKXt0cnl7aWYoYkkuZnJhbWVzLl9fdGNmYXBpTG9jYXRvcil7Ykg9Ykl9fWNhdGNoKGJKKXt9aWYoYkk9PT13aW5kb3cudG9wKXticmVha31iST1iSS5wYXJlbnR9YkYoXCJnZXRUQ0RhdGFcIixiSCxiRSl9ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYodHlwZW9mIHdpbmRvdy5fX3RjZmFwaT09PVwiZnVuY3Rpb25cIil7YkwoKX19LDUwMCl9fWZ1bmN0aW9uIGJHKCl7cmV0dXJuICEhKHdpbmRvdy4kc2YmJndpbmRvdy4kc2YuZXh0KX1mdW5jdGlvbiBiRihiTyxiUixiUSl7d2luZG93Ll9fdGNmYXBpPWZ1bmN0aW9uKGJWLGJULGJTLGJYKXtpZighYlIpe2JQKCk7cmV0dXJuIGJEKHttc2c6XCJUQ0YyOiBDTVAgbm90IGZvdW5kXCJ9LGZhbHNlKX12YXIgYlU9TWF0aC5yYW5kb20oKStcIlwiO3ZhciBiVz17X190Y2ZhcGlDYWxsOntjb21tYW5kOmJWLHBhcmFtZXRlcjpiUyx2ZXJzaW9uOmJULGNhbGxJZDpiVX19O2JLW2JVXT1iWDtiUi5wb3N0TWVzc2FnZShiVyxcIipcIil9O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGJOLGZhbHNlKTt3aW5kb3cuX190Y2ZhcGkoYk8sMixudWxsLGJNKTtmdW5jdGlvbiBiTihiVCl7dmFyIGJTPXt9O3RyeXtiUz0odHlwZW9mIGJULmRhdGE9PT1cInN0cmluZ1wiKT9KU09OLnBhcnNlKGJULmRhdGEpOmJULmRhdGF9Y2F0Y2goYlYpe312YXIgYlU9YlMuX190Y2ZhcGlSZXR1cm47aWYoYlUpe2lmKHR5cGVvZiBiS1tiVS5jYWxsSWRdPT09XCJmdW5jdGlvblwiKXtiS1tiVS5jYWxsSWRdKGJVLnJldHVyblZhbHVlLGJVLnN1Y2Nlc3MpO2JLW2JVLmNhbGxJZF09bnVsbH19fWZ1bmN0aW9uIGJQKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsYk4sZmFsc2UpfWZ1bmN0aW9uIGJNKGJTLGJUKXtiUCgpO2JRKGJTLGJUKX19fSxhWj1mdW5jdGlvbihiRyl7ZnVuY3Rpb24gYkQoYkgpe2lmKGJIKXtpZihiSC5nZXRDb25zZW50RGF0YSYmYkguZ2V0Q29uc2VudERhdGEuY29uc2VudERhdGEpe1MoYkcsXCJjXCIsYkguZ2V0Q29uc2VudERhdGEuY29uc2VudERhdGEpfWVsc2V7aWYoYkguZ2V0VmVuZG9yQ29uc2VudHMmJmJILmdldFZlbmRvckNvbnNlbnRzLm1ldGFkYXRhKXtTKGJHLFwiY1wiLGJILmdldFZlbmRvckNvbnNlbnRzLm1ldGFkYXRhKX19fX1mdW5jdGlvbiBiRigpe31uKGJELGJGKTtmdW5jdGlvbiB4KGJIKXtpZihiSCl7aWYoYkgudGNTdHJpbmcpe1MoYkcsXCJjXCIsYkgudGNTdHJpbmcpfX19ZnVuY3Rpb24gYkUoKXt9ayh4LGJFKX0sUz1mdW5jdGlvbihiRix4LGJFKXt2YXIgYkQ7aWYoIWJyKXtyZXR1cm59dHJ5e2JEPWFQLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGgpfWNhdGNoKGJHKXt9aWYoYkQmJnR5cGVvZiBiRD09PVwic3RyaW5nXCIpe3RyeXtiRD1KU09OLnBhcnNlKGJEKX1jYXRjaChiRyl7YkQ9e319fWVsc2V7YkQ9e319aWYoYkQpe2lmKCFiRC5oYXNPd25Qcm9wZXJ0eShiRikpe2JEW2JGXT17fX1iRFtiRl0udD0obmV3IERhdGUoKSkuZ2V0VGltZSgpO2JEW2JGXVt4XT1lbmNvZGVVUklDb21wb25lbnQoYkUpO2lmKHg9PVwiY1wiKXtiRFtiRl1bXCJnXCJdPTF9fXRyeXthUC5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShoLEpTT04uc3RyaW5naWZ5KGJEKSl9Y2F0Y2goYkcpe319LGFiPWZ1bmN0aW9uKGJGKXt2YXIgYkU9e2M6XCJcIn07aWYoIWJyKXtyZXR1cm4gYkV9dmFyIGJEO3RyeXtiRD1hUC5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShoKX1jYXRjaChiRyl7fWlmKGJEJiZ0eXBlb2YgYkQ9PT1cInN0cmluZ1wiKXt0cnl7YkQ9SlNPTi5wYXJzZShiRCl9Y2F0Y2goYkcpe2JEPXt9fWlmKGJELmhhc093blByb3BlcnR5KGJGKSl7dmFyIHg9YkRbYkZdO2lmKHgmJnguYyYmeC50KXtpZih4LnQmJmJ1KHgudCk+KChuZXcgRGF0ZSgpKS5nZXRUaW1lKCktKDI0KjYwKjYwKjEwMDApKSl7YkUuYz14LmN9ZWxzZXt9fX19cmV0dXJuIGJFfSxtPWZ1bmN0aW9uKGJFLGJGKXt2YXIgeD0xO2Z1bmN0aW9uIGJMKCl7dmFyIGJNPXt9O2Z1bmN0aW9uIGJOKCl7aWYoYk0udXNQcml2YWN5KXtiRShiTSl9ZWxzZXt9fXJldHVybntjb25zZW50RGF0YUNhbGxiYWNrOmZ1bmN0aW9uKGJPLGJQKXtpZihiUCYmYk8udXNwU3RyaW5nKXtiTS51c1ByaXZhY3k9Yk8udXNwU3RyaW5nfWJOKCl9fX12YXIgYkQ9YkwoKTt2YXIgYks9e307dHJ5e3dpbmRvdy5fX3VzcGFwaShcImdldFVTUERhdGFcIix4LGJELmNvbnNlbnREYXRhQ2FsbGJhY2spfWNhdGNoKGJKKXt2YXIgYkk9d2luZG93O3ZhciBiSDt3aGlsZSghYkgpe3RyeXtpZihiSS5mcmFtZXMuX191c3BhcGlMb2NhdG9yKXtiSD1iSX19Y2F0Y2goYkope31pZihiST09PXdpbmRvdy50b3Ape2JyZWFrfWJJPWJJLnBhcmVudH1pZighYkgpe3JldHVybiBiRihcIlVTUCBDTVAgbm90IGZvdW5kLlwiKX1iRyhcImdldFVTUERhdGFcIixiSCxiRC5jb25zZW50RGF0YUNhbGxiYWNrKX1mdW5jdGlvbiBiRyhiTyxiTixiUSl7d2luZG93Ll9fdXNwYXBpPWZ1bmN0aW9uKGJULGJSLGJWKXt2YXIgYlM9TWF0aC5yYW5kb20oKStcIlwiO3ZhciBiVT17X191c3BhcGlDYWxsOntjb21tYW5kOmJULHZlcnNpb246YlIsY2FsbElkOmJTfX07YktbYlNdPWJWO2JOLnBvc3RNZXNzYWdlKGJVLFwiKlwiKX07d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsYk0sZmFsc2UpO3dpbmRvdy5fX3VzcGFwaShiTyx4LGJQKTtmdW5jdGlvbiBiTShiUyl7dmFyIGJSPWJTJiZiUy5kYXRhJiZiUy5kYXRhLl9fdXNwYXBpUmV0dXJuO2lmKGJSJiZiUi5jYWxsSWQpe2lmKHR5cGVvZiBiS1tiUi5jYWxsSWRdIT09XCJ1bmRlZmluZWRcIil7YktbYlIuY2FsbElkXShiUi5yZXR1cm5WYWx1ZSxiUi5zdWNjZXNzKTtkZWxldGUgYktbYlIuY2FsbElkXX19fWZ1bmN0aW9uIGJQKGJSLGJTKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixiTSxmYWxzZSk7YlEoYlIsYlMpfX19LGJDPWZ1bmN0aW9uKGJEKXtmdW5jdGlvbiBiRShiRyl7dmFyIGJGPSEhKGJHJiZiRy51c1ByaXZhY3kpO2lmKCFiRil7cmV0dXJufWFxKGJELFwiY1wiLGJHLnVzUHJpdmFjeSl9ZnVuY3Rpb24geCgpe31tKGJFLHgpfSxhcT1mdW5jdGlvbihiRix4LGJFKXt2YXIgYkQ7aWYoIWJyKXtyZXR1cm59dHJ5e2JEPWFQLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGJ0KX1jYXRjaChiRyl7fWlmKGJEJiZ0eXBlb2YgYkQ9PT1cInN0cmluZ1wiKXt0cnl7YkQ9SlNPTi5wYXJzZShiRCl9Y2F0Y2goYkcpe2JEPXt9fX1lbHNle2JEPXt9fWlmKGJEKXtpZighYkQuaGFzT3duUHJvcGVydHkoYkYpKXtiRFtiRl09e319YkRbYkZdLnQ9KG5ldyBEYXRlKCkpLmdldFRpbWUoKTtiRFtiRl1beF09YkV9dHJ5e2FQLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGJ0LEpTT04uc3RyaW5naWZ5KGJEKSl9Y2F0Y2goYkcpe319LFk9ZnVuY3Rpb24oYkYpe3ZhciBiRT17YzpcIlwifTtpZighYnIpe3JldHVybiBiRX12YXIgYkQ7dHJ5e2JEPWFQLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGJ0KX1jYXRjaChiRyl7fWlmKGJEJiZ0eXBlb2YgYkQ9PT1cInN0cmluZ1wiKXt0cnl7YkQ9SlNPTi5wYXJzZShiRCl9Y2F0Y2goYkcpe2JEPXt9fWlmKGJELmhhc093blByb3BlcnR5KGJGKSl7dmFyIHg9YkRbYkZdO2lmKHgmJnguYyYmeC50KXtpZih4LnQmJmJ1KHgudCk+KChuZXcgRGF0ZSgpKS5nZXRUaW1lKCktKDI0KjYwKjYwKjEwMDApKSl7YkUuYz14LmN9ZWxzZXt9fX19cmV0dXJuIGJFfSxhMj0oZnVuY3Rpb24oKXt2YXIgeD17MzE5OlwiXCJ9O3JldHVybiBhIT0xJiZhUC5wdWJJZCYmIXguaGFzT3duUHJvcGVydHkoYVAucHViSWQpfSkoKSxEPWZ1bmN0aW9uKHgpe2RvY3VtZW50LndyaXRlKHgpfSxiZT1mdW5jdGlvbihiRCxiRyl7dmFyIHg9ZG9jdW1lbnQuYm9keXx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJib2R5XCIpWzBdfHxmYWxzZSxiRjt0cnl7aWYoeCl7aWYoZG9jdW1lbnQuY3JlYXRlRXZlbnQpe2JGPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiSFRNTEV2ZW50c1wiKTtiRi5pbmZvPWJHO2JGLmluaXRFdmVudChiRCx0cnVlLHRydWUpO3guZGlzcGF0Y2hFdmVudChiRil9ZWxzZXtpZihkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCl7YkY9ZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKTtiRi5pbmZvPWJHO3guZmlyZUV2ZW50KGJELGJGKX19fX1jYXRjaChiRSl7fX0sYmw9ZnVuY3Rpb24oYkQseCl7aWYoeCl7aWYoYnYuSUUpe0QoYmErYkQrJ1wiIG9uUmVhZHlTdGF0ZUNoYW5nZT1cIlB1Yk1hdGljLnRhZ3NbJyt4KyddLmpzbCh0aGlzKTtcIj48XFwvc2NyaXB0PicpfWVsc2V7RChiYStiRCsnXCIgb25sb2FkPVwiUHViTWF0aWMudGFnc1snK3grJ10uanNsKCk7XCI+PFxcL3NjcmlwdD4nKX19ZWxzZXtEKGJhK2JEKydcIj48XFwvc2NyaXB0PicpfX0sUj1mdW5jdGlvbih4LGJQLGJILGJFLGJGLGJHLGJLLGJELGJJKXt2YXIgYk0sYk8sYkosYk4sYkw9ZmFsc2U7aWYoKGJJJiZkb2N1bWVudC5ib2R5KXx8KCFiRCYmZG9jdW1lbnQucmVhZHlTdGF0ZSE9PVwibG9hZGluZ1wiJiZkb2N1bWVudC5ib2R5KSl7Yk09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtiTS5zcmM9eDtiTS5oZWlnaHQ9YlA7Yk0ud2lkdGg9Ykg7YkY/Yk0ubmFtZT1iRjpudWxsO2JHP2JNLmlkPWJHOm51bGw7YkU/Yk0uc3R5bGUuY3NzVGV4dD1iRTpudWxsO2JLP2JNLm9ubG9hZD1iSzpudWxsO2JNLm1hcmdpbkhlaWdodD1cIjBcIjtiTS5tYXJnaW5XaWR0aD1cIjBcIjtiTS5zY3JvbGxpbmc9XCJub1wiO2JNLmZyYW1lQm9yZGVyPVwiMFwiO2JNLmFsbG93dHJhbnNwYXJlbmN5PVwidHJ1ZVwiO2JNLmhzcGFjZT1cIjBcIjtiTS52c3BhY2U9XCIwXCI7Yko9ZG9jdW1lbnQuYm9keTtpZihhUC5QdWJNYXRpY0FJKXtiTj1iSi5maXJzdENoaWxkO2lmKGJOJiZiTi5ub2RlVHlwZT09PTEmJmJOLmNsYXNzTmFtZT09PVwiUHViQWRBSVwiKXtiTi5zdHlsZS5kaXNwbGF5PVwiXCI7ZChiTik7Yko9Yk47Ykw9dHJ1ZX19aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PVwiY29tcGxldGVcInx8KGJ2LklFJiZkb2N1bWVudC5yZWFkeVN0YXRlPT09XCJpbnRlcmFjdGl2ZVwiKSl7Ykw/YkouaW5zZXJ0QmVmb3JlKGJNLGJKLmxhc3RDaGlsZCk6YkouYXBwZW5kQ2hpbGQoYk0pfWVsc2V7aWYoYnYuSUUpe2RvY3VtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT1cImNvbXBsZXRlXCIpe2RvY3VtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO2JMP2JKLmluc2VydEJlZm9yZShiTSxiSi5sYXN0Q2hpbGQpOmJKLmFwcGVuZENoaWxkKGJNKX19fWVsc2V7Yk89ZnVuY3Rpb24oKXtpZihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGJPLGZhbHNlKX1hUC5vbmxvYWQ9ZnVuY3Rpb24oKXt9O2JMP2JKLmluc2VydEJlZm9yZShiTSxiSi5sYXN0Q2hpbGQpOmJKLmFwcGVuZENoaWxkKGJNKX07aWYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcil7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixiTyxmYWxzZSl9YVAub25sb2FkPWJPfX19ZWxzZXtEKFwiPGlmcmFtZVwiKyhiRz8nIGlkPVwiJytiRysnXCInOlwiXCIpKyhiRj8nIG5hbWU9XCInK2JGKydcIic6XCJcIikrJyBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd3RyYW5zcGFyZW5jeT1cInRydWVcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgbWFyZ2lud2lkdGg9XCIwXCIgc2Nyb2xsaW5nPVwibm9cIiB3aWR0aD1cIicrYkgrJ1wiIGhzcGFjZT1cIjBcIiB2c3BhY2U9XCIwXCIgaGVpZ2h0PVwiJytiUCsnXCInKyhiRT8nIHN0eWxlPVwiJytiRSsnXCInOlwiXCIpKycgc3JjPVwiJyt4KydcIicrKGJLPycgb25sb2FkPVwiJytiSysnXCInOlwiXCIpK1wiPjwvaWZyYW1lPlwiKX19LGEwPWZ1bmN0aW9uKCl7dmFyIHg9e307eC5wdWJJZD1idShhUC5wdWJJZCk7eC5zaXRlSWQ9YnUoYVAuc2l0ZUlkKTt4LmFkSWQ9YnUoYVAua2FkSWQpO3gua2Fkd2lkdGg9YnUoYVAua2Fkd2lkdGgpO3gua2FkaGVpZ2h0PWJ1KGFQLmthZGhlaWdodCk7aWYoYVAua2FkdHlwZSl7eC5rYWR0eXBlPWJ1KGFQLmthZHR5cGUpO2FQLmthZHR5cGU9R31pZihhUC5rYWROZXR3b3JrKXt4LmthZE5ldHdvcms9YVAua2FkTmV0d29yazthUC5rYWROZXR3b3JrPUd9cmV0dXJuIHh9LEs9ZnVuY3Rpb24oYkYpe3ZhciB4PVtdLGJELGJFO2ZvcihiRCBpbiBiRil7YkU9YkZbYkRdO2lmKGJGLmhhc093blByb3BlcnR5KGJEKSYmYkUhPUcmJmJFIT09XCJcIil7eC5wdXNoKGJEK1wiPVwiK1ooYkUpKX19cmV0dXJuIHguam9pbihcIiZcIikucmVwbGFjZSgvIy9nLFwiJTIzXCIpfSxwPWZ1bmN0aW9uKGJGKXt2YXIgeD1bXSxiRCxiRTtmb3IoYkQgaW4gYkYpe2JFPWJGW2JEXTtpZihiRi5oYXNPd25Qcm9wZXJ0eShiRCkmJmJFIT1HJiZiRSE9PVwiXCIpe2lmKGJEIT09XCJkZWZjbXBnSURzXCIpe2JFPWcoYkUpfXgucHVzaChiRCtcIj1cIitiRSl9fXJldHVybiB4LmpvaW4oXCImXCIpLnJlcGxhY2UoLyMvZyxcIiUyM1wiKX0sTD1mdW5jdGlvbihiRCl7dmFyIHg9bmV3IERhdGUoKTtiRC5rbHRzdGFtcD14LmdldEZ1bGxZZWFyKCkrXCItXCIrKHguZ2V0TW9udGgoKSsxKStcIi1cIit4LmdldERhdGUoKStcIiBcIit4LmdldEhvdXJzKCkrXCI6XCIreC5nZXRNaW51dGVzKCkrXCI6XCIreC5nZXRTZWNvbmRzKCk7YkQudGltZXpvbmU9eC5nZXRUaW1lem9uZU9mZnNldCgpLzYwKi0xfSxnPWZ1bmN0aW9uKGJEKXt0cnl7YkQ9dHlwZW9mIGJEPT09XCJzdHJpbmdcIj9iRDpcIlwiK2JEO2JEPWFJKGJEKT09PWJEP1ooYkQpOmJEO2lmKGJELmluZGV4T2YoXCImXCIpPj0wfHxiRC5pbmRleE9mKFwiPVwiKT49MHx8YkQuaW5kZXhPZihcIj9cIik+PTApe2JEPVooYkQpfXJldHVybiBiRH1jYXRjaCh4KXtyZXR1cm5cIlwifX0sYXA9ZnVuY3Rpb24oKXt2YXIgYkc9e30sYkgsYkUseCxiRD1mdW5jdGlvbihiSil7dmFyIGJJPWJKLGJLO2lmKGJKLmluZGV4T2YoXCJzaG93XCIrYUUpPjB8fGJKLmluZGV4T2YoXCJzaG93YWRzYWsuXCIrYmgpPjApe2JLPWJKLm1hdGNoKC9wYWdlVVJMPSguKj8mKS8pO2lmKGJLJiZiS1sxXSl7Ykk9YktbMV07Ykk9Ykkuc3Vic3RyKDAsYkkubGVuZ3RoLTEpO3RyeXtiST1hSShiSSl9Y2F0Y2goYkwpe319fXJldHVybiBiSX07YkcudT1cIlwiO2JHLnI9XCJcIjt0cnl7aWYoYVAua2FkcGFnZXVybD09XCJJTlNFUlRfRU5DT0RFRF9QQUdFVVJMX0hFUkVcIil7YVAua2FkcGFnZXVybD1cIlwifWJIPWFjKGFQKTtiRy5yPWJEKGJILnJlZnVybHx8YkguZG9jdW1lbnQucmVmZXJyZXJ8fFwiXCIpLnN1YnN0cigwLGJ3KTtiRy51PWJEKGJIIT09YTYmJmJILmRvY3VtZW50LnJlZmVycmVyIT1cIlwiP2JILmRvY3VtZW50LnJlZmVycmVyOmJILmxvY2F0aW9uLmhyZWYpLnN1YnN0cigwLGJ3KTtpZihiRy51PT09Ykcucil7Ykcucj1cIlwifWJHLnU9ZyhiRy51KTtiRy5yPWcoYkcucil9Y2F0Y2goYkYpe31pZighYkcudSl7dHJ5e2F2PShhdj09YUkoYXYpKT9hdjphSShhdil9Y2F0Y2goYkYpe31hdj1iRChhdik7YkcudT1aKGF2LnN1YnN0cigwLGJ3KSl9aWYoYkcudT09PWJHLnIpe2JHLnI9XCJcIn1iRT11LnVzZXJBZ2VudDt4PWJFLmluZGV4T2YoXCJNU0lFXCIpO2JHLklFPXUuYXBwTmFtZT09XCJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXJcIjtpZihiRy5JRSYmeD4wKXtiRy5JRVY9YnUoYkUuc3Vic3RyKHgrNSwzKSk7YkcuSUU2PWJHLklFVjw3fWJHLml0PWFQLmthZGludmVudG9yeXR5cGU/YVAua2FkaW52ZW50b3J5dHlwZTowO3JldHVybiBiR30sYnY9YXcubXx8KGF3Lm09YXAoKSksYTc9ZnVuY3Rpb24oeCl7dHJ5e2lmKHUuY29va2llRW5hYmxlZD09PWZhbHNlKXt4LmZwY2Q9XCIxXCJ9fWNhdGNoKGJEKXt9eC5wYWdlVVJMPWJ2LnU7eC5yZWZ1cmw9YnYucjtidi5JRTYmJih4LmF2b2lkRnJhbWVEZWZhdWx0PTEpO3guaW5JZnJhbWU9YVAhPWE2P1wiMVwiOlwiMFwiO2lmKFwiaXNTaW5nbGVGcmFtZVwiIGluIGFQKXt4LmluTXVsdGlwbGVOZXN0ZWRJZnJhbWVzPWFQLmlzU2luZ2xlRnJhbWU9PVwidHJ1ZVwiP1wiMFwiOlwiMVwifX0sYVU9ZnVuY3Rpb24oYkUpe3ZhciBiRD1hdCtcIiNcIitwKGJFLmMpLGJGPTAsYkc9YkUubmlzLHg9YkcubGVuZ3RoO2Zvcig7YkY8eDtiRisrKXtiRCs9XCImbmk9XCIrWihiR1tiRl0pfWlmKGJFLnBidil7YkQrPVwiJlwiK0soYkUucGJ2KX1yZXR1cm4gYkR9LGFKPShhbC5zZXROZXR3b3JrSWR8fGZ1bmN0aW9uKGJFLGJILGJELGJJLGJMLGJNLGJOLGJGLGJPKXt2YXIgYkssYkosYkcseDtiSz1hdy50YWd8fGF3LnRhZ3NbYkVdO2JLLmMuZGVmZGNwbT1iTjtiSy5jLm9pZD1iRjtpZighYk8pe2JLLm5pcy5wdXNoKFtiSCxiRCxiSSxiTF0pfWlmKGJLLmZjKXtiRz1iSy5mcjtpZihiRyl7Yko9YkcuY29udGVudFdpbmRvdzt4PWFVKGJLKTtpZihiSil7YkoubG9jYXRpb24ucmVwbGFjZSh4KX1lbHNle2JHLnNyYz14fX1lbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXthSi5jYWxsKGFQLGJFLGJILGJELGJJLGJMLGJNLGJOLGJGLHRydWUpfSwyMCl9fWlmKGF3LkFIVD09MCYmIWJPKXtiZShcIm9uUHViTWF0aWNBZEluZm9VcGRhdGVkXCIsYksuYyl9fSksYVM9ZnVuY3Rpb24oKXt2YXIgYkU9dGhpcy5wbHQsYkQ9MCx4O2lmKGJFKXt4PWJFLmxlbmd0aDtmb3IoO2JEPHg7YkQrKyl7YkVbYkRdLmFwcGx5KHRoaXMpfX19LGJvPWZ1bmN0aW9uKHgpe2lmKHgmJngucmVhZHlTdGF0ZSE9XCJjb21wbGV0ZVwiKXtyZXR1cm59YVMuY2FsbCh0aGlzKTtiZShcIm9uUHViTWF0aWNBZExvYWRlZFwiLHRoaXMuYyl9LGFlPWF3LkFkVGFnfHwoYXcuQWRUYWc9ZnVuY3Rpb24oYkcsYkQsYkope3ZhciBiST10aGlzLGJFLGJILHgsYkY7YkkuZnI9bnVsbDtiSS5mYz1mYWxzZTtiSS5jPWJHO2JJLmRmPVE7YkkubmlzPVtdO2JJLmxhc3RkZWZhZG53a0lEPTA7YkkuanNsPWJvO2lmKCFiRCl7YkY9YXcudGFncztiRy5vcGVySWQ9Ykcua2FkdHlwZT09PTF8fGJHLmthZHR5cGU9PT0xMj8zOjE7aWYoYkcua2FkdHlwZT09PTEyKXtiRy5hZHR5cGU9MTJ9Ykcua2FkdHlwZT1HO2JkJiYoYkcuc2VjPTEpO0woYkcpO2JHLnNjcmVlblJlc29sdXRpb249c2NyZWVuLndpZHRoK1wieFwiK3NjcmVlbi5oZWlnaHQ7YkcucmFucmVxPU1hdGgucmFuZG9tKCk7eD1iRi5sZW5ndGg7YkcucG1VbmlBZElkPVwiXCIreDtpZihiRi5sZW5ndGg+MCl7YkU9W107Zm9yKGJIPTA7Ykg8eDtiSCsrKXtiRS5wdXNoKGJGW2JIXS5jLmFkSWQpfWJHLnByZXZrYWRJZHM9YkUuc2xpY2UoMCwxMCkuam9pbihcIl9cIil9aWYoIWJKKXtNKGJHKX1GKGJHKTtpZihiRy5vcGVySWQ9PT0zKXtieChiSSxiRyx4KX19fSksYTE9ZnVuY3Rpb24oKXt2YXIgYlM9YVAubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5zcGxpdChcIiZcIiksYk89YlMubGVuZ3RoLGJKPXt9LGJQPXt9LHg9bmV3IGFlKGJKLHRydWUpLGJFPTAsYlUsYkwsYkcsYkYsYkg9W10sYlQsYkksYlI9MCxiTT0wLGJOLGJELGJLO3RyeXtkb2N1bWVudC5kb21haW49Ymh9Y2F0Y2goYlEpe31mb3IoO2JFPGJPO2JFKyspe2JHPWJTW2JFXS5zcGxpdChcIj1cIik7YlU9YkdbMF07Ykw9YkdbMV07aWYoIWFGW2JVXSl7YkpbYlVdPWJMfWVsc2V7aWYoYlU9PT1cImthZE5ldHdvcmtcIil7YkY9YnUoYkwpfWVsc2V7aWYoYlU9PT1cImRlZmNtcGdJRHNcIil7Ykg9Ykw/Ykwuc3BsaXQoXCIsXCIpOltdfWVsc2V7aWYoYlU9PT1cImRlZmVjcG1cIil7YlQ9cGFyc2VGbG9hdChiTCl9ZWxzZXtpZihiVT09PVwiZGVmYWN0ZWNwbVwiKXtiST1wYXJzZUZsb2F0KGJMKX1lbHNle2lmKGJVPT09XCJsYXN0ZGVmYWRud2tJRFwiKXtiUj1idShiTCl9ZWxzZXtpZihiVT09PVwiZGVmY291bnRcIil7Yk09YnUoYkwpfX19fX19fX1pZihhOCYmYTgubGVuZ3RoPjApe2JTPWE4LnNwbGl0KFwiJlwiKTtiTz1iUy5sZW5ndGg7Zm9yKGJFPTA7YkU8Yk87YkUrKyl7Ykc9YlNbYkVdLnNwbGl0KFwiPVwiKTtiUFtiR1swXV09YUkoYkdbMV0pfXgucGJ2PWJQfXgubGFzdGRlZmFkbndrSUQ9YlI7YkQ9eC5uaXM7Zm9yKGJFPTA7YkU8Yk07YkUrKyl7YkQucHVzaChbMCwwLDAsMF0pfWlmKGJNPjApe2JPPWJILmxlbmd0aDtpZihiRj09PTI0Myl7Yk8tPTF9Zm9yKGJFPTA7YkU8Yk87YkUrKyl7YkRbYkVdWzBdPTI0MztiRFtiRV1bMV09YkhbYkVdfWJLPWJEW2JNLTFdO2JLWzBdPWJGO2lmKGJGPT09MjQzJiZiSC5sZW5ndGg+MCl7YktbMV09YnUoYkhbYkgubGVuZ3RoLTFdKTtiS1syXT1iVDtiS1szXT1iSX19eC5jLm9wZXJJZD0zO2F3LnRhZz14fSxhTT1mdW5jdGlvbihiSSl7dmFyIGJHLGJKLHgsYkQsYkg9dHJ1ZSxiRjtpZihiSSE9YTYpe2JHPWJJLnBhcmVudDtiRj1iQShiSSkmJmJJLmxvY2F0aW9uLnBhdGhuYW1lPT09YTMmJmJJLlB1Yk1hdGljIT09Rz9iSTpudWxsO2lmKCFiRil7dHJ5e3g9YkcubGVuZ3RoO2JEPXg7d2hpbGUoLS1iRD49MCl7aWYoYkgpe2JIPWJHW2JEXSE9Ykl9ZWxzZXtiSj1iR1tiRF07aWYoYkEoYkopJiZiSi5sb2NhdGlvbi5wYXRobmFtZT09PU8mJmJKLlB1Yk1hdGljJiZiSi5QdWJNYXRpYy5BZEluZm8pe2JGPWJKO2JyZWFrfX19fWNhdGNoKGJFKXtyZXR1cm59fXJldHVybiBiRnx8YU0oYkcpfX0sZD1mdW5jdGlvbihiRyl7dmFyIGJFPWJHLmNoaWxkTm9kZXMseD1iRS5sZW5ndGgsYkQ9MCxiRjtmb3IoO2JEPHg7YkQrKyl7YkY9YkVbYkRdO2lmKGJGLm5vZGVUeXBlPT09MSYmYkYuY2xhc3NOYW1lIT1cIlB1YkFkQUlcIil7YkYuc3R5bGUuZGlzcGxheT1cIm5vbmVcIn19fSxRPWZ1bmN0aW9uKGJRLGJIKXt2YXIgYk09dGhpcyxiTj1iTS5jLGJMPXt9LGJLLGJHPWJNLm5pcyxiRT1iRy5sZW5ndGgsYkQ9YkdbYkUtMV0sYko9W10sYkkseCxiUixiRixiUDtiSD1iSHx8MTtpZihiTi5rYWROZXR3b3JrKXtkZWxldGUgYk4ua2FkTmV0d29ya31iTC5rYWROZXR3b3JrPWJEWzBdO2lmKGJMLmthZE5ldHdvcms9PT0yNDMpe2JMLmRlZmVjcG09YkRbMl07YkwuZGVmYWN0ZWNwbT1iRFszXX1iST1iTS5sYXN0ZGVmYWRud2tJRDtmb3IoYks9MDtiSzxiRTtiSysrKXtiRD1iR1tiS107aWYoYkRbMF09PT0yNDMpe2JKLnB1c2goYkRbMV0pfWVsc2V7Ykk9YkRbMF19fWJMLmxhc3RkZWZhZG53a0lEPWJJfHxcIjBcIjtiTC5kZWZjbXBnSURzPWJKLmpvaW4oKTtiTC5kZWZjb3VudD1iRTtiTi5vcGVySWQ9Ykg+PTI/MTozO2JOLlNBVmVyc2lvbj1cIjJcIjtiTi5qcz1cIjFcIjtiTi5rZG50dWlkPVwiMVwiO2JOLnJhbnJlcT1NYXRoLnJhbmRvbSgpO2JOLmluSWZyYW1lPWFQIT1hNj9cIjFcIjpcIjBcIjt0cnl7aWYoYkg9PTEmJmJRJiZkb2N1bWVudC5ib2R5KXtkKGRvY3VtZW50LmJvZHkpO2lmKCFidi5JRXx8KGJ2LklFJiZkb2N1bWVudC5yZWFkeVN0YXRlPT1cImxvYWRpbmdcIikpe2JGPVwiUHViTWF0aWNfXCIrTWF0aC5yYW5kb20oKTtEKFwiPGRpdiBpZD0nXCIrYkYrXCInIHN0eWxlPSdcIithWCtcIic+PC9kaXY+XCIpO2JSPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJGKTtpZihiUil7YlA9YlI7d2hpbGUoYlAucGFyZW50Tm9kZSYmYlAhPWRvY3VtZW50LmJvZHkpe2QoYlAucGFyZW50Tm9kZSk7YlAuc3R5bGUuZGlzcGxheT1cIlwiO2JQPWJQLnBhcmVudE5vZGV9YlIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiUil9fX19Y2F0Y2goYk8pe314PWJ5K1wiP1wiK3AoYkwpK1wiJlwiK3AoYk4pO2lmKGJNLnBidiYmYkg+MSl7eCs9XCIjXCIrSyhiTS5wYnYpfWlmKGJIPT09Mil7Uih4LFwiMTAwJVwiLFwiMTAwJVwiLFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDowcHg7dG9wOjBweDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO1wiKX1lbHNle2lmKGJIPT09Myl7bC5yZXBsYWNlKHgpfWVsc2V7YmwoeCl9fX0sYWo9ZnVuY3Rpb24oYkQpe3ZhciBiRixiRSxiRyxiSix4LGJJPWZhbHNlLGJLO2lmKGF3LnRhZ3N8fGF3LnRhZyl7eD1hdy50YWdzPyhiSz1hdy50YWdzLGJLW2JLLmxlbmd0aC0xXSk6YXcudGFnO3guZGYoIWJLKTtiST10cnVlfWVsc2V7aWYoIWJ2LklFNil7YkY9ZG9jdW1lbnQuZG9tYWluO2lmKGJGPT09YUUpe3RyeXtkb2N1bWVudC5kb21haW49Ymh9Y2F0Y2goYkgpe31iRT1hTShhUCk7aWYoYkUpe2JHPWJFLlB1Yk1hdGljO2lmKGJHLkFkSW5mbyl7Yko9YkcucigpO2lmKGJKKXtRLmNhbGwoYkosdHJ1ZSwzKTtiST10cnVlfX1lbHNle2lmKGJHLnRhZyl7YkcudGFnLmRmKHRydWUsMik7Ykk9dHJ1ZX19fX1pZighYkkmJmFQIT09YTYpe1IoYXQrXCIjTEFcIisoYkQ/XCImXCIrcChiRCk6XCJcIiksXCIxMDAlXCIsXCIxMDAlXCIsXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjBweDt0b3A6MHB4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7XCIpO2JJPXRydWV9fX1yZXR1cm4gYkl9LEE9e2thZGdlbmRlcjpcImdlbmRlclwiLGthZGFnZTpcImthZGFnZVwiLGthZGhpbnRzOlwia2FkaGludHNcIixrYWRrdzpcImtleXdvcmRzXCIsa2FkdXBvc3RhbGNvZGU6XCJrYWR1cGNvZGVcIixrYWR1Zmlyc3RuYW1lOlwia2FkdWZuYW1lXCIsa2FkY2l0eTpcImNpdHlcIixrYWRmbG9vcjpcImthZGZsb29yXCIsa2FkZ2NpZDpcImthZGdjaWRcIixrYWRnZWNwbTpcImthZGdlY3BtXCIsa2FkZ2lkOlwia2FkZ2lkXCIsa2FkZ3NpdGVpZDpcImthZGdzaXRlaWRcIixrYWRnc2VjdGlvbmlkOlwia2FkZ3NlY3Rpb25pZFwiLGthZGdhZGlkOlwia2FkZ2FkaWRcIixrYWRwdWJjbGt1cmw6XCJrYWRwdWJjbGt1cmxcIixrZm5ldHdvcmtpZDpcInBtRm9yY2VBZE5ldHdvcmtcIixrbWFsZGVidWc6XCJtZFwiLGthZGNvcHBhOlwiY29wcGFcIixrYWR0cGNpZDpcImthZHRwY2lkXCIsa0dlb0xhdGl0dWRlOntuOlwibG9jXCIsbTpmdW5jdGlvbih4LGJEKXt2YXIgYkU9YkQua0dlb0xvbmdpdHVkZXx8YVAua0dlb0xvbmdpdHVkZTtpZihiRC5rR2VvTG9uZ2l0dWRlKXtkZWxldGUgYkQua0dlb0xvbmdpdHVkZX1pZihiRC5rR2VvTGF0aXR1ZGUpe2RlbGV0ZSBiRC5rR2VvTGF0aXR1ZGV9cmV0dXJuIGJFIT1HP3grXCIsXCIrYkU6ZmFsc2V9fSxrYWRsb2M6e246XCJsb2NcIixtOmd9LHBtem9uZWlkOntuOlwicG1ab25lSWRcIixtOmZ1bmN0aW9uKHgpe3ZhciBiRD10eXBlb2YgeDthUC5wbXpvbmVpZD1HO3JldHVybiBiRD09PVwibnVtYmVyXCI/eDpiRD09PVwic3RyaW5nXCI/eC5zcGxpdChcIixcIikuc2xpY2UoMCxhdSkuam9pbigpOnggaW5zdGFuY2VvZiBBcnJheT94LnNsaWNlKDAsYXUpLmpvaW4oKTpmYWxzZX19LFB1Yk1hdGljQUk6e246XCJub0VuY1wiLG06ZnVuY3Rpb24oKXtyZXR1cm4gMX19LGthZGJlYWNvbjp7bjpcImthZGJlYWNvblwiLG06Z30sa2FzZGJlYWNvbjp7bjpcImthZGJlYWNvblwiLG06Z30sa2FkcGFnZXVybDp7bjpcImthZHBhZ2V1cmxcIixtOmd9LGthZGRlZnVybDp7bjpcImthZGRlZnVybFwiLG06Z30sa2Fkc3RhdGU6e246XCJzdGF0ZVwiLG06Z30sa2FkZG1hOntuOlwiZG1hXCIsbTpnfSxrYWR6aXA6e246XCJ6aXBcIixtOmd9LGthZHlvYjp7bjpcInlvYlwiLG06Z30sa2FkbmV0dHlwZTp7bjpcIm5ldHR5cGVcIixtOmd9LGthZGNhcnJpZXI6e246XCJjYXJyaWVyXCIsbTpnfSxrYWRldGhuaWNpdHk6e246XCJldGhuXCIsbTpnfSxrYWRpbmNvbWU6e246XCJpbmNcIixtOmd9LGthZGNvdW50cnk6e246XCJjb3VudHJ5XCIsbTpnfSxrYWR1ZGlkOntuOlwidWRpZFwiLG06Z30sa2FkdWRpZHR5cGU6e246XCJ1ZGlkdHlwZVwiLG06Z30sa2FkYXBwbmFtZTp7bjpcIm5hbWVcIixtOmd9LGthZGFwcHN0b3JldXJsOntuOlwic3RvcmV1cmxcIixtOmd9LGthZGFwcGFwaTp7bjpcImFwaVwiLG06Z30sa2FkYXBwYnVuZGxlOntuOlwiYnVuZGxlXCIsbTpnfSxrYWRhcHBwYWlkOntuOlwicGFpZFwiLG06Z30sa2FkYXBwdmVyc2lvbjp7bjpcInZlclwiLG06Z30sa2FkYXBwaWQ6e246XCJhaWRcIixtOmd9LGthZHNpdGVjb2RlOntuOlwic2l0ZWNvZGVcIixtOmd9LGthZGNhdDp7bjpcImNhdFwiLG06Z30sa2FkdWRpZGhhc2g6e246XCJ1ZGlkaGFzaFwiLG06Z30sa2FkbG9jc291cmNlOntuOlwibG9jX3NvdXJjZVwiLG06Z30sa2FkaWFiY2F0OntuOlwiaWFiY2F0XCIsbTpnfSxrYWRleHBkaXI6e246XCJleHBkaXJcIixtOmd9LGthZGJhdHRyOntuOlwiYmF0dHJcIixtOmd9LGthZGlmYjp7bjpcImlmYlwiLG06Z30sa2FkYmxvY2tkb21haW5pZHM6e246XCJibGtkbW5zXCIsbTpnfSxrYWRibG9ja2lhYmNhdHM6e246XCJibGtpYWJjYXRzXCIsbTpnfSxrYWRibG9ja2FkdmVydGlzZXJpZHM6e246XCJibGthZHZ0aWRzXCIsbTpnfSxrYWRsb2NjYXQ6e246XCJsb2NjYXRcIixtOmd9LGthZGxvY2JyYW5kOntuOlwibG9jYnJhbmRcIixtOmd9LGthZGJsa2FkdmRtbnM6e246XCJibGthZHZkbW5zXCIsbTpnfSxrYWRwdWJsaXNoZXJ1aWQ6e246XCJwdWJVSURcIixtOmd9LGthZGZwdmlzaXRvcnNlZzp7bjpcImZwVmlzU2VnXCIsbTpafSxrYWRmcGludmV0b3J5c2VnOntuOlwiZnBJbnZTZWdcIixtOlp9LGthZGZwY29va2llc2VnOntuOlwiZnBDa1NlZ1wiLG06Z30sa2Fkc2g6e246XCJzaFwiLG06Z30sa2FkZGN0cjp7bjpcImRjdHJcIixtOmd9LGthZGluc3RsOntuOlwiaW5zdGxcIixtOmd9LGthZHB1YnVpZDp7bjpcInB1aWRcIixtOmd9LGthZG11bHRpc2l6ZTp7bjpcIm11bHRpc2l6ZVwiLG06Z30sa2FkR2RwckNvbnNlbnQ6e246XCJnZHByX2NvbnNlbnRcIixtOmZ1bmN0aW9uKGJELHgpe2lmKGJELmluZGV4T2YoXCJJTlNFUlRfVVNFUl9HRFBSX0NPTlNFTlRfU1RSSU5HX0RBVEFfRlJPTV9DTVBfSEVSRVwiKSE9PS0xKXtiRD1cIlwifXJldHVybiBnKGJEKX19LGthZGVpZHM6XCJlaWRzXCIsa2Fkc2NoYWluOlwic2NoYWluXCIsa2FkVXNQcml2YWN5OlwidXNfcHJpdmFjeVwifSxKPWZ1bmN0aW9uKHgpe3ZhciBiSD1BLGJELGJHLGJGLGJFPXtrYWRnc2l0ZWlkOlwiXCIsa2FkZ3NlY3Rpb25pZDpcIlwiLGthZGdpZDpcIlwiLGthZGdlY3BtOlwiXCIsa2FkZ2NpZDpcIlwiLGthZGdhZGlkOlwiXCIsa2FkZmxvb3I6XCJcIn07Zm9yKGJEIGluIGJIKXtpZihiSC5oYXNPd25Qcm9wZXJ0eShiRCkpe2JHPWFQW2JEXTtpZihiRyl7YkY9YkhbYkRdO2lmKHR5cGVvZiBiRj09PVwib2JqZWN0XCIpe2JHPWJGLm0oYkcseCk7YkQ9YkYubn1lbHNle2JEPWJIW2JEXX1pZihiRyl7aWYoYkQ9PVwiZ2VuZGVyXCIpe3gua2FkZ2VuZGVyPWJHO3gua2FkZ2RyPWJHfXhbYkRdPWJHfWlmKGJFLmhhc093blByb3BlcnR5KGJEKSl7YVBbYkRdPW51bGx9fX19fSxhayxhWSxOLGJBPWZ1bmN0aW9uKHgpe3ZhciBiRD1mYWxzZTt0cnl7YkQ9eCYmISF4LmRvY3VtZW50fWNhdGNoKGJFKXt9cmV0dXJuIGJEfSxlPWZ1bmN0aW9uKHgpe3JldHVybnt3OnguaW5uZXJXaWR0aHx8eC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fHguZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxoOnguaW5uZXJIZWlnaHR8fHguZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8eC5kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCxzdDp4LmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLHNsOnguZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0fX0sUD1mdW5jdGlvbih4LGJFKXt2YXIgYkssYkgsYkosYkksYkwsYkQsYkcsYkY7aWYoeCYmeC5mcmFtZUVsZW1lbnQpe2lmKCFiRSl7YkU9ZSh4KX1iSz1mKHguZnJhbWVFbGVtZW50KTtpZihiSyl7Ykc9YksueDtiRj1iSy55O2JIPXgucGFyZW50O2JJPWUoYkgpO2lmKHghPT1iSCYmYkghPT1hNil7aWYoYkEoYkgpKXtiSj1QKGJILGJJKTtpZihiSiE9bnVsbCl7YksueCs9YkoueDtiSy55Kz1iSi55O2JFLmg9YkouaDtiRS53PWJKLnd9ZWxzZXtiSz1udWxsfX1lbHNle2JLPW51bGx9fWlmKGJJLnN0PmJGKXtiTD1iRS5oK2JGLWJJLnN0fWVsc2V7Ykw9YkUuaH1pZigoYkkuc3QrYkkuaCk8KGJGK2JFLmgpKXtiTC09KGJGK2JFLmgpLShiSS5zdCtiSS5oKX1pZihiSS5zbD5iRyl7YkQ9YkUudytiRy1iSS5zbH1lbHNle2JEPWJFLnd9aWYoKGJJLnNsK2JJLncpPChiRytiRS53KSl7YkQtPShiRytiRS53KS0oYkkuc2wrYkkudyl9YksuaD1iTDtiSy53PWJEfX1yZXR1cm4gYkt9LGY9ZnVuY3Rpb24oYkUpe3ZhciBiSCxiRixiRD0wLGJHPTA7aWYodHlwZW9mIGJFLmdldEJvdW5kaW5nQ2xpZW50UmVjdD09PVwiZnVuY3Rpb25cIil7YkY9YkUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7YkQ9TWF0aC5mbG9vcihiRi5sZWZ0KTtiRz1NYXRoLmZsb29yKGJGLnRvcCl9ZWxzZXt3aGlsZShiRSl7YkQrPWJFLm9mZnNldExlZnQ7YkcrPWJFLm9mZnNldFRvcDtiRT1iRS5vZmZzZXRQYXJlbnR9fWJIPXt4OmJELHk6Ykd9O3JldHVybiBiSH0sWD1mdW5jdGlvbihiRixiUCxiSyl7dmFyIGJPPWYoYkYpLGJFPWUoYVApLGJHPWJPLnksYko9Yk8ueCx4PW51bGwsYlEsYk07aWYoYVAhPWE2KXtiUT1hUC5wYXJlbnQ7aWYoYkEoYlEpKXtiTT1QKGFQLGJFKTtpZihiTSE9bnVsbCl7Yk8ueCs9Yk0ueDtiTy55Kz1iTS55O2JFLmg9Yk0uaDtiRS53PWJNLnd9ZWxzZXt4PS0xfX1lbHNle3g9LTF9fWlmKHg9PT1udWxsKXt2YXIgYkQ9YkUuc3QsYkk9YkUuc2wsYkg9YkUuaCxiTD1iRS53O2JPLnY9KCgoYkcrYlApPD1iRCl8fCgoYkorYkspPD1iSSl8fChiRz49KGJEK2JIKSl8fChiSj49KGJJK2JMKSkpP1wiMlwiOigoYkc+PWJEKSYmKGJKPj1iSSkmJigoYkorYkspPD0oYkkrYkwpKSYmKChiRytiUCk8PShiRCtiSCkpKT9cIjFcIjpcIjNcIn1lbHNle2JPPW51bGx9dHJ5e2lmKHR5cGVvZiAkc2YhPVwidW5kZWZpbmVkXCImJnR5cGVvZiAkc2YuZXh0IT1cInVuZGVmaW5lZFwiKXtiTz17eDpcIi0xXCIseTpcIi0xXCIsdjpcIjBcIn07Yk09JHNmLmV4dC5pblZpZXdQZXJjZW50YWdlKCk7aWYoYk0pe2JPLnY9Yk0+PTUwP1wiMVwiOlwiMlwifWJNPSRzZi5leHQuZ2VvbSgpO2lmKGJNJiZiTS5zZWxmKXtiTy55PWJNLnNlbGYudDtiTy54PWJNLnNlbGYubH19fWNhdGNoKGJOKXt9aWYod2luZG93LnB1YklkPT04NDA0N3x8d2luZG93LnB1YklkPT04MzkwMnx8d2luZG93LnB1YklkPT04Mzg5NCl7Yk89e3g6XCItMVwiLHk6XCItMVwiLHY6XCIwXCJ9O2lmKGJQPT05MCYmYks9PTcyOCl7Yk8udj1cIjFcIjtiTy55PVwiNzUyLjU0M1wiO2JPLng9XCI1MjQuMzM0XCJ9ZWxzZXtpZihiUD09MjUwJiZiSz09MzAwKXtiTy52PVwiMVwiO2JPLnk9XCIyNTMuNTQzXCI7Yk8ueD1cIjYwNC40NTdcIn19fXJldHVybiBiT30sTT1mdW5jdGlvbih4KXt2YXIgYkU9XCJQdWJNYXRpY19cIitNYXRoLnJhbmRvbSgpLGJELGJHO3RyeXtEKCc8c3BhbiAgaWQ9XCInK2JFKydcIj48L3NwYW4+Jyk7YkQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYkUpO2JHPVgoYkQseC5rYWRoZWlnaHQseC5rYWR3aWR0aCk7eC5hZFZpc2liaWxpdHk9Ykc/YkcudjpcIjBcIjt4LmFkUG9zaXRpb249Ykc/YkcueStcInhcIitiRy54OlwiLTF4LTFcIn1jYXRjaChiRil7fWlmKGJEJiZiRC5wYXJlbnROb2RlKXtiRC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGJEKX19LEY9ZnVuY3Rpb24oeCl7eC5ybXA9XCJcIjtpZihhUFtcIiRzZlwiXSE9PUcmJmFQW1wiJHNmXCJdIT1udWxsKXt4LnJtcCs9XCJzYWZlZnJhbWU7XCJ9fSxieD1mdW5jdGlvbihiRCx4LGJHKXt2YXIgYkYsYkU9YVAua0FkVGltZW91dDtpZihiRSl7YkU9YnUoYkUpO2JELnRvPWJGPXt0OmFQLmtBZFRpbWVvdXRJZHx8YkcsbDpmYWxzZSxzOmFQLmtTdWNjZXNzQ2FsbEJhY2t8fG51bGwsZjphUC5rRmFpbENhbGxCYWNrfHxudWxsLG86ZmFsc2UsaTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YkYubz10cnVlfSxiRSl9O2lmKCFhdy5jaGVja1RpbWVvdXQpe2F3LmNoZWNrVGltZW91dD1mdW5jdGlvbihiSixiSCl7dmFyIGJJPWF3LnRhZ3NbYkpdLnRvO2lmKGJJKXtiSS5sPXRydWU7Y2xlYXJUaW1lb3V0KGJJLmkpO2lmKGJJLm98fCFiSCl7YkkuZiYmYkkuZi5jYWxsKGFQLGJJLnQpfWVsc2V7YkkucyYmYkkucy5jYWxsKGFQLGJJLnQpfX1yZXR1cm4gYkh9fXgudE91dD0xO3guYWRJbmR4PVwiXCIrYkc7YkQucGx0PVtmdW5jdGlvbigpe2lmKCFiRC50by5sKXthdy5jaGVja1RpbWVvdXQoYkcsZmFsc2UpfX1dO2FQLmtBZFRpbWVvdXQ9bnVsbDthUC5rRmFpbENhbGxCYWNrPW51bGw7YVAua1N1Y2Nlc3NDYWxsQmFjaz1udWxsO2FQLmtBZFRpbWVvdXRJZD1udWxsfX0sYUssYUQsYU89ZXNjYXBlLGFpPXVuZXNjYXBlLHQ9bnVsbCxhbj0wLGFRPTAsYz0wLGFIPWZ1bmN0aW9uKCl7aWYodD09bnVsbCl7dmFyIGJGPWE4LnNwbGl0KFwiJlwiKSx4PWJGLmxlbmd0aCxiRD0wLGJFO3Q9e307Zm9yKDtiRDx4O2JEKyspe2JFPWJGW2JEXS5zcGxpdChcIj1cIik7dFtiRVswXV09YkVbMV19fX0sYUc9ZnVuY3Rpb24oKXt2YXIgYkYsYkUsYkg9e30sYkQ9ZmFsc2UsYkcsYkk9W10seDtpZihhUC5rcGFzc2JhY2twYXJzKXtiRz1hUC5rcGFzc2JhY2twYXJzO3g9YkcubGVuZ3RoO2ZvcihiRT0wO2JFPHgmJmJHW2JFXTtiRSsrKXtiRj1iR1tiRV07aWYoYVBbYkZdJiZhUFtiRl0hPUcpe2JEPXRydWU7YkkucHVzaChiRik7YkhbYkZdPWFQW2JGXX19Ykgua3Bhc3NiYWNrcGFycz1iSS5qb2luKFwiLFwiKX1yZXR1cm4gYkQ/Ykg6bnVsbH0sQj1mdW5jdGlvbihiUSxiRSl7dmFyIGJMPWUoYVApLGJLPWFQLGJPLGJELGJOLGJKLGJJPWZhbHNlLGJIPTAsYlAseCxiUixiRyxiRjtiUS53aW5XPShiTC53PHNjcmVlbi53aWR0aCk/YkwudzpzY3JlZW4ud2lkdGg7YlEud2luSD0oYkwuaDxzY3JlZW4uaGVpZ2h0KT9iTC5oOnNjcmVlbi5oZWlnaHQ7d2hpbGUoYkshPWE2KXtiTz1iSy5wYXJlbnQ7Yk49ZmFsc2U7dHJ5e2JQPWJPLmxvY2F0aW9uLmhyZWY7Yk49dHJ1ZTtpZighYkkpe2JKPWJPfWJRLmRlcHRoPTB9Y2F0Y2goYk0pe31pZighYk4pe2JIKys7Ykk9dHJ1ZTtiRD1iS31pZihiSD49Mil7YlEuZGVwdGg9MjticmVha31iSz1iT31pZighYkope2JKPWFQfWJSPShiSD09MSk/YkQ6KGJIPT0wKT9hNjpiSjtiUS53aW5VUkw9KGJRLnBhZ2VVUkwpP2JRLnBhZ2VVUkw6ZW5jb2RlVVJJKGJSLmxvY2F0aW9uLmhyZWYpO2JRLnJlZlVSTD0oYlEucmVmdXJsKT9iUS5yZWZ1cmw6ZW5jb2RlVVJJKGJSLmRvY3VtZW50LnJlZmVycmVyKTtpZihiSD09MSl7dHJ5e3g9ZShiUik7YlEud2luVz0oYnUoYkwudyk+YnUoeC53KSk/eC53OmJMLnc7YlEud2luSD0oYnUoYkwuaCk+YnUoeC5oKSk/eC5oOmJMLmh9Y2F0Y2goYk0pe31iUS5kZXB0aD0xfWVsc2V7aWYoYkg9PTApe2JRLmRlcHRoPTB9fWlmKGJFKXtiRz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiRSk7YlEucGx5Vz1iRy5vZmZzZXRXaWR0aHx8LTE7YlEucGx5SD1iRy5vZmZzZXRIZWlnaHR8fC0xO2lmKGJRLnBseUghPS0xJiZiUS5wbHlXIT0tMSl7dHJ5e2JGPWYoYkcpO2JRLnBsb2N4PWJGLng7YlEucGxvY3k9YkYueTtiUS5wb3M9WChiRyxiUS5wbHlILGJRLnBseVcpLnZ9Y2F0Y2goYk0pe319fXJldHVybiBiUX07YXcuX3VpZENCPWZ1bmN0aW9uKHgpe2F3LnBtX3VpZF9iYz14LnU7aWYoYVAubG9jYXRpb24uaHJlZi5pbmRleE9mKFwiI1BJWFwiKT4wKXthNCgpfX07YXcuZ2V0UEJWYWx1ZT1mdW5jdGlvbihiRCl7dmFyIHgsYkY9XCJcIjt0cnl7eD1hdy50YWd8fGF3LnRhZ3NbYXcudGFncy5sZW5ndGgtMV07aWYoeC5wYnYmJngucGJ2Lmhhc093blByb3BlcnR5KGJEKSl7YkY9eC5wYnZbYkRdfX1jYXRjaChiRSl7fXJldHVybiBiRn07YXcuU0FWZXJzaW9uPVwiMlwiO2lmKCFhbC5zZXROZXR3b3JrSWQpe2FsLnNldE5ldHdvcmtJZD1hSn1hRi5yYW5yZXE9YUYucmFucmVxMT1hRi5rYWROZXR3b3JrPWFGLm9wZXJJZD1hRi5kZWZjbXBnSURzPWFGLmRlZmVjcG09YUYuZGVmYWN0ZWNwbT1hRi5sYXN0ZGVmYWRud2tJRD1hRi5kZWZjb3VudD10cnVlO2F3LkFIVD1hUC5QdWJNYXRpY19BSFR8fDA7YVAuUHViTWF0aWNfQUhUPUc7YXcuaWZsPWF3LmlmbHx8KGF3LmlmbD1mdW5jdGlvbihiRCx4KXthdy50YWdzW3hdLmZyPWJEfSk7YXcuTmF0aXZlPWF3Lk5hdGl2ZXx8e2luZm86e30sc2V0SW5mbzpmdW5jdGlvbihiRCx4KXtpZihhdy5OYXRpdmUuaW5mbyl7YXcuTmF0aXZlLmluZm9bYkRdPXh9fSxleGVjQ1RSOmZ1bmN0aW9uKGJHKXt2YXIgeCxiRj1bXSxiRT0wLGJEPTA7aWYoYXcuTmF0aXZlLmluZm8mJmF3Lk5hdGl2ZS5pbmZvLmhhc093blByb3BlcnR5KGJHKSl7eD1hdy5OYXRpdmUuaW5mb1tiR107aWYoeC5oYXNPd25Qcm9wZXJ0eShcImN0cnNcIikpe2JGPWF3Lk5hdGl2ZS5pbmZvW2JHXVtcImN0cnNcIl07YkU9YkYubGVuZ3RoO2ZvcihiRD0wO2JEPGJFO2JEKyspeyhuZXcgSW1hZ2UoKSkuc3JjPWJGW2JEXX1pZih4Lmhhc093blByb3BlcnR5KFwiZWN0clwiKSYmeC5lY3RyPT1mYWxzZSl7eC5jdHJzPVtdfX19fX07YXcuc2VuZFBhcmFtVG9WUEFJRD1hdy5zZW5kUGFyYW1Ub1ZQQUlEfHxmdW5jdGlvbihiRil7dmFyIGJHPXt9O2E3KGJHKTtKKGJHKTtpZihiRy5wYWdlVVJMKXtiRy5wYWdlVVJMPWVuY29kZVVSSShiRy5wYWdlVVJMKX1pZihiRy5yZWZ1cmwpe2JHLnJlZlVSTD1lbmNvZGVVUkkoYkcucmVmdXJsKX1MKGJHKTtiRy5zY3JlZW5SZXNvbHV0aW9uPXNjcmVlbi53aWR0aCtcInhcIitzY3JlZW4uaGVpZ2h0O2JHLnJhbnJlcT1NYXRoLnJhbmRvbSgpO2JHLnNlYz1iZDtiRy5wcm90b2NvbD1heDtiRz1CKGJHLGJGLnBsYXllckRvbUlkKTthWihiRi5wdWJJZCk7dmFyIGJFPWFiKGJGLnB1YklkKTtiRy5nZHByX2NvbnNlbnQ9YkUmJmJFLmM/YkUuYzpcIlwiO2JHLmdkcHI9YkcuZ2Rwcl9jb25zZW50PzE6KGF8fDApO2JDKGJGLnB1YklkKTt2YXIgeD1ZKGJGLnB1YklkKTtiRy51c19wcml2YWN5PXgmJnguYz94LmM6XCJcIjt0cnl7aWYoYkYucGxheWVyRG9tSWQpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJGLnBsYXllckRvbUlkKS5nZXREYXRhRnJvbUpTKHAoYkcpKX19Y2F0Y2goYkQpe31yZXR1cm4gYkd9O2F3LnNob3dBZD1hdy5zaG93QWR8fGZ1bmN0aW9uKGJHLGJJLGJGKXt2YXIgeCxiRSxiRD0xNTAwLGJLO2lmKGJHLnNpdGVJZD09NzIxODQpe2JHLmthZHBhZ2V1cmw9XCJcIn1pZihhdy50YWcpe2RlbGV0ZSBhdy50YWd9Yks9YXcudGFnc3x8KGF3LnRhZ3M9W10pO3g9bmV3IGFlKGJHLGZhbHNlLGJGKTt4LnBidj1hRygpO2JLLnB1c2goeCk7YkcucG1fdWlkX2JjPWF3LnBtX3VpZF9iYztiRy5nZHByPVwiXCIrYTt2YXIgYko9YWIoYkcucHViSWQpO2JHLmdkcHJfY29uc2VudD1iSiYmYkouYz9iSi5jOmJHLmdkcHJfY29uc2VudDtpZihiRy5nZHByX2NvbnNlbnQpe2JHLmdkcHI9MX12YXIgYkg9WShiRy5wdWJJZCk7YkcudXNfcHJpdmFjeT1iSCYmYkguYz9iSC5jOmJHLnVzX3ByaXZhY3l8fFwiXCI7KGZ1bmN0aW9uKCl7dHJ5e2JHLmRzcGlkcz1KU09OLnN0cmluZ2lmeShhUC5wYXJlbnQucG1Ec3BJZHx8e30pfWNhdGNoKGJMKXt9fSkoKTtiYj1ieStcIj9cIitwKGJHKTtpZihidi5JRSYmYmIubGVuZ3RoPmJEKXtpZihiRy5yZWZ1cmwpe2JFPWJHLnJlZnVybDtiRy5yZWZ1cmw9YkUuc3Vic3RyKDAsKGJFLmxlbmd0aC0oYmIubGVuZ3RoLWJEKSkpO2JiPWJ5K1wiP1wiK3AoYkcpfWlmKGJiLmxlbmd0aD5iRCl7YkU9YkcucGFnZVVSTDtiRy5wYWdlVVJMPWJFLnN1YnN0cigwLChiRS5sZW5ndGgtKGJiLmxlbmd0aC1iRCkpKTtiYj1ieStcIj9cIitwKGJHKX19YkkmJihiYis9XCImb2xkRGVmVGFnPTEmbm9JbmZvPTFcIik7aWYoIWJGKXtpZihiSy5sZW5ndGg9PT0xJiYhYkkpe2JFPWF0K1wiI1BJWCZwPVwiK2JHLnB1YklkK1wiJnM9XCIrYkcuc2l0ZUlkK1wiJmE9XCIrYkcuYWRJZCtcIiZpdD1cIitidi5pdDtpZihiRy5rZG50dWlkKXtiRSs9XCIma2RudHVpZD1cIitiRy5rZG50dWlkfWlmKGJHLmNvcHBhKXtiRSs9XCImY29wcGE9MVwifWlmKGEyKXtiRSs9XCImYmNlPTFcIn1iRSs9XCImZ2Rwcj1cIitiRy5nZHByO2JFKz1cIiZnZHByX2NvbnNlbnQ9XCIrKGJHLmdkcHJfY29uc2VudHx8XCJcIik7YkUrPVwiJnVzX3ByaXZhY3k9XCIrKGJHLnVzX3ByaXZhY3l8fFwiXCIpO1IoYkUsMCwwLGFYLG51bGwsbnVsbCxudWxsLHRydWUsISFiRil9aWYoYkcub3BlcklkPT09Myl7aWYoIWJ2LklFNil7UihhdCwwLDAsYVgsbnVsbCxudWxsLFwiUHViTWF0aWMuaWZsKHRoaXMsXCIrYkcucG1VbmlBZElkK1wiKVwiLHRydWUpO3guZmM9dHJ1ZX1ibChiYixiRy5wbVVuaUFkSWQpfWVsc2V7aWYoeC5wYnYpe2JiKz1cIiNcIitLKHgucGJ2KX1SKGJiLGJHLmthZGhlaWdodCxiRy5rYWR3aWR0aCxcImhlaWdodDpcIitiRy5rYWRoZWlnaHQrXCJweDt3aWR0aDpcIitiRy5rYWR3aWR0aCtcInB4O1wiLG51bGwsbnVsbCxudWxsLHRydWUpfX19O2lmKGwuaG9zdD09PWFFJiZsLnBhdGhuYW1lPT09Tyl7aWYoYTguaW5kZXhPZihcIlBNRlJBTUU9MVwiKT09PTApe2FIKCk7ZGVsZXRlIHQuUE1GUkFNRTtiYj1hdCtcIiNQSVgmcD1cIit0LnB1YklkK1wiJnM9XCIrdC5zaXRlSWQrXCImYT1cIit0LmFkSWQrXCImaXQ9XCIrdC5pdDtpZih0LmtkbnR1aWQpe2JiKz1cIiZrZG50dWlkPVwiK3Qua2RudHVpZH1pZih0LmNvcHBhKXtiYis9XCImY29wcGE9MVwifWlmKHQuYmNlPT0xKXtiYis9XCImYmNlPTFcIn1iYis9XCImZ2Rwcj1cIisodC5nZHByfHxcIjBcIik7YmIrPVwiJmdkcHJfY29uc2VudD1cIisodC5nZHByX2NvbnNlbnR8fFwiXCIpO2JiKz1cIiZ1c19wcml2YWN5PVwiKyh0LnVzX3ByaXZhY3l8fFwiXCIpO1IoYmIsMCwwLGFYKTt0Lm9wZXJJZD0xO2JiPWJ5K1wiP1wiK3AodCk7UihiYix0LmthZGhlaWdodCx0LmthZHdpZHRoLFwiaGVpZ2h0OlwiK3Qua2FkaGVpZ2h0K1wicHg7d2lkdGg6XCIrdC5rYWR3aWR0aCtcInB4O1wiKX1lbHNle2lmKGE4LmluZGV4T2YoXCJMQVwiKT09PTApe3RyeXtkb2N1bWVudC5kb21haW49Ymh9Y2F0Y2goYnope31haz1hTShhUC5wYXJlbnQpO2lmKGFrKXthWT1hay5QdWJNYXRpYztpZihhWS5BZEluZm8pe049ZnVuY3Rpb24oKXt2YXIgeDt4PWFZLnIoKTtpZih4KXt4LmMub3BlcklkPTE7US5jYWxsKHgsdHJ1ZSwzKX1lbHNle3NldFRpbWVvdXQoTiwxMCl9fTtOKCl9ZWxzZXthWS50YWcuZGYodHJ1ZSwyKX19ZWxzZXthSCgpO2RlbGV0ZSB0LkxBO2lmKHQucHViSWQmJnQuc2l0ZUlkJiZ0LmFkSWQmJnQua2FkaGVpZ2h0JiZ0LmthZHdpZHRoKXthdy5zaG93QWQodCx0cnVlKX19fWVsc2V7aWYoYTguaW5kZXhPZihcIlBJWFwiKT09PTApe3ZhciBhcj1mYWxzZSxhZz1cIkFMTFwiLGJwPVwiS1RQQ0FDT09LSUVcIixiQj1cIktBRFVTRVJDT09LSUVcIixhQj1cIktDQ0hcIixhTD1cIkRQU3luYzNcIixhaD1cIlBVQk1EQ0lEXCIsVz1cIlVTQ0NcIixpPVwiU3luY1JUQjNcIixhQT1cIlBNRlJFUV9PTlwiLGFUPVwicG1vb1wiLGFSPVwib3B0b3V0XCIsYmo9XCJwaVwiLGFDPVwicmVwaVwiLGFOPVwicHVic3luY2V4cFwiLGFmPWZ1bmN0aW9uKCl7dmFyIGJIPVwiXCIsYkcseCxiRT0wLGJEO3RyeXtiSD1kb2N1bWVudC5jb29raWV9Y2F0Y2goYkYpe31pZihhSyE9Ykgpe2JHPWJILnNwbGl0KFwiOyBcIik7eD1iRy5sZW5ndGg7YUQ9W107Zm9yKDtiRTx4O2JFKyspe2JEPWJHW2JFXS5zcGxpdChcIj1cIik7YURbYkRbMF1dPWJEWzFdfWFLPWJIfX0sdz1mdW5jdGlvbih4KXthZigpO3JldHVybiBhRFt4XX0sST1mdW5jdGlvbihiRCxiRil7dmFyIGJFLGJHLHg7YWYoKTshYkYmJih4PVtdKTtmb3IoYkUgaW4gYUQpe2lmKGFELmhhc093blByb3BlcnR5KGJFKSl7aWYoYkUuaW5kZXhPZihiRCk+PTApe2JHPXtuOmJFLHY6KGFEW2JFXXx8XCJcIil9O2lmKGJGKXt4PWJHO2JyZWFrfWVsc2V7eC5wdXNoKGJHKX19fX1yZXR1cm4geH0scT0oZnVuY3Rpb24oKXt2YXIgYkQ9XCJDaHJvbWUvXCIseD1iRC5sZW5ndGg7dWE9bmF2aWdhdG9yLnVzZXJBZ2VudCxjaHJvbWVQYXR0ZXJuSW5kZXg9dWEuaW5kZXhPZihiRCksY2hyb21lVmVyc2lvbj0wO2lmKGNocm9tZVBhdHRlcm5JbmRleD4tMSl7Y2hyb21lVmVyc2lvbj1idSh1YS5zdWJzdHIoY2hyb21lUGF0dGVybkluZGV4K3gsMykpO2lmKGNocm9tZVZlcnNpb24+PTY3KXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfSkoKSxhYT10cnVlLGJmPWZ1bmN0aW9uKGJFLGJILGJELGJJLGJHKXt2YXIgeCxiSjt4PW5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpK2JEKjg2NDAwMDAwKTtiSj1iRStcIj1cIitiSCtcIjtleHBpcmVzPVwiK3gudG9HTVRTdHJpbmcoKStcIjtwYXRoPVwiK2JJK1wiO2RvbWFpbj1cIitiRztpZihhYSYmYmQpe2JKKz1cIjtzZWN1cmVcIn1pZihxKXtiSis9XCI7U2FtZVNpdGU9Tm9uZVwifXRyeXtkb2N1bWVudC5jb29raWU9Ykp9Y2F0Y2goYkYpe319LGJpPWZ1bmN0aW9uKHgsYkYsYkUpe3RyeXtkb2N1bWVudC5jb29raWU9eCtcIj07ZXhwaXJlcz1UaHUsIDAxLUphbi0xOTcwIDAwOjAwOjAxIEdNVDtwYXRoPVwiK2JGK1wiO2RvbWFpbj1cIitiRSsoKGFhJiZiZCk/XCI7c2VjdXJlXCI6XCJcIikrKHE/XCI7U2FtZVNpdGU9Tm9uZVwiOlwiXCIpfWNhdGNoKGJEKXt9fSxhZD1mdW5jdGlvbihiRCx4LGJFKXtpZihiRC5hZGRFdmVudExpc3RlbmVyKXtiRC5hZGRFdmVudExpc3RlbmVyKHgsYkUpfWVsc2V7aWYoYkQuYXR0YWNoRXZlbnQpe2JELmF0dGFjaEV2ZW50KFwib25cIit4LGJFKX1lbHNle2JEW1wib25cIit4XT1iRX19fSxVPWZ1bmN0aW9uKCl7dmFyIGJELHg9YW0oKTtpZih4PT10cnVlKXtiaShiQixcIi9cIixiaCk7YmkoYUIsXCIvXCIsYUUpO2JpKGFMLFwiL1wiLGFFKTtiaShpLFwiL1wiLGFFKTtiaShhaCxcIi9cIixiaCk7YmkoVyxcIi9cIixiaCk7YmkoYmosXCIvXCIsYmgpO2JpKGFDLFwiL1wiLGFFKX1pZighYXIpe2FyPXRydWU7YmkoYUIsXCIvXCIsYUUpO2JpKGJqLFwiL1wiLGJoKTtpZihhZz09PVwiQUxMXCIpe2JEPXcoYUEpO2lmKCEoYkQmJmJEIT1cIlwiKSYmeD09ZmFsc2Upe2JmKGFBLFwiWUVTXCIsMSxcIi9cIixhRSk7YnMoKTtiaShhQSxcIi9cIixhRSk7YXooKX19fX0sdj1mdW5jdGlvbigpe3ZhciBiRT1idSh0LnB8fDApLGJEPWFpKHcoYkIpfHxcIlwiKSx4PTE7eD13KGFDKT09MT80OmJEPT1cIlwiP3QuZnAhPTE/Mjo1OnQuZnAhPTE/Mzo2O2JmKGJqLChiRT09MD8yOmJFKStcIjpcIit4LDEsXCIvXCIsYmgpO2JpKGFDLFwiL1wiLGFFKX0sSD1mdW5jdGlvbihiRSl7dmFyIHg9XCJpbWFnZTQucHVibWF0aWMuY29tL0FkU2VydmVyL1NQdWc/cGFydG5lcklEPVwiLGJEO2lmKHcoYnApPT09XCJZRVNcIil7YkQ9YXgrKGJkP1wic1wiOlwiXCIpK3grYkU7YkQ9YkQrXCImZ2Rwcj1cIit0LmdkcHI7YkQ9YkQrXCImZ2Rwcl9jb25zZW50PVwiK3QuZ2Rwcl9jb25zZW50O2JEPWJEK1wiJnVzX3ByaXZhY3k9XCIrdC51c19wcml2YWN5O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYkc9dyhiQiksYkY7aWYoYkcmJmJHIT1cIlwiKXtiRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2JGLnNyYz1iRDtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKVswXS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGJGKX1heigpfSwyMDAwKX19LGJzPWZ1bmN0aW9uKCl7dmFyIGJNPTAsYlEsYko9W10sYkQ9W10sYkwsYkssYkYsYkUsYk8seCxiTixiSSxiUCxiSD1mdW5jdGlvbihiUixiMyl7dmFyIGIxLGJZLGJWLGIwLGJaLGJXLGJVLGI0LGIyLGJTLGJULGJYO2JSPWJSLnN1YnN0cihiUi5pbmRleE9mKFwiY2FtZnJlcVwiKSs3KTtiMT1iUi5pbmRleE9mKFwiX1wiKTwwO2JZPWIzLnNwbGl0KFwiOlwiKTtiVj1iWS5sZW5ndGg7YlU9W107YjQ9MDtmb3IoYjA9MDtiMDxiVjtiMCsrKXtiWj1iWVtiMF0uc3BsaXQoXCItXCIpO2lmKGJaLmxlbmd0aD09PTIpe2JXPWJaWzFdLnNwbGl0KFwiX1wiKTtpZihiVy5sZW5ndGg9PT0yKXtpZihiMSYmYk0+MCl7aWYoYk08PWJ1KGJXWzFdKSl7YlVbYjQrK109W2J1KGJaWzBdKSxidShiV1swXSksYnUoYldbMV0pXX19ZWxzZXtiVVtiNCsrXT1bYnUoYlpbMF0pLGJ1KGJXWzBdKSxidShiV1sxXSldfX1lbHNle2JVW2I0KytdPVtidShiWlswXSksYnUoYlpbMV0pLDBdfX19aWYoYjQ+MCl7Zm9yKGIwPTA7YjA8YjQ7YjArKyl7YlM9YlVbYjBdO2IyPWJTWzJdO2JWPWJKLmxlbmd0aDtiVD1mYWxzZTtmb3IoYlg9MDtiWDxiVjtiWCsrKXtpZihiSltiWF1bMF09PT1iU1swXSl7YlQ9dHJ1ZTtiSltiWF1bMV09YkpbYlhdWzFdK2JTWzFdO2lmKGIyPmJKW2JYXVsyXSl7YkpbYlhdWzJdPWIyfX19aWYoIWJUKXtiSltiVl09YlN9fX19LGJHPWZ1bmN0aW9uKGJSLGI0KXt2YXIgYlosYlUsYjEsYjAsYlYsYjUsYlMsYlQsYlksYjMsYlg9LTEsYlcsYjI7YjM9YlI9YlIuc3Vic3RyKGJSLmluZGV4T2YoXCJwdWJmcmVxX1wiKSs4KTtiMT1iUi5pbmRleE9mKFwiX1wiKTtpZihiMT49MCl7YjM9YlIuc3Vic3RyaW5nKDAsYjEpfWIzPWJ1KGIzKTtiWj1iNC5zcGxpdChcIjpcIik7YlU9YloubGVuZ3RoO2JWPVtdO2ZvcihiMT0wO2IxPGJVO2IxKyspe2IwPWJaW2IxXS5zcGxpdChcIi1cIik7aWYoYjAubGVuZ3RoPT09Mil7YlZbYjFdPVtidShiMFswXSksYnUoYjBbMV0pXX1lbHNle2JyZWFrfX1iVz1iRC5sZW5ndGg7Zm9yKGIxPTA7YjE8Ylc7YjErKyl7aWYoYkRbYjFdWzBdPT09YjMpe2JYPWIxO2JyZWFrfX1iNT1iVi5sZW5ndGg7aWYoYjU+MCl7aWYoYlg8MCl7YkRbYlddPVtiMyxiVl19ZWxzZXtiMj1iRFtiWF1bMV07Zm9yKGIxPTA7YjE8YjU7YjErKyl7YlM9YlZbYjFdO2JVPWIyLmxlbmd0aDtiVD1mYWxzZTtmb3IoYlk9MDtiWTxiVTtiWSsrKXtpZihiMltiWV1bMF09PT1iU1swXSl7YjJbYlldWzFdPWIyW2JZXVsxXStiU1sxXTtiVD10cnVlO2JyZWFrfX1pZighYlQpe2IyW2JVXT1iU319fX19O2FmKCk7YkY9SShcIl9jdXJ0aW1lXCIsdHJ1ZSk7YkYmJihiTT1idShiRi52KSk7YlE9SShcImNhbWZyZXFcIik7Ykw9YlEubGVuZ3RoO2ZvcihiSz0wO2JLPGJMO2JLKyspe2JGPWJRW2JLXTtiSChiRi5uLGJGLnYpO2JpKGJGLm4sXCIvXCIsYmgpfWJMPWJKLmxlbmd0aDtiRT1bXTtmb3IoYks9MDtiSzxiTDtiSysrKXtiTz1iSltiS107YkUucHVzaChiT1swXStcIi1cIitiT1sxXStcIl9cIitiT1syXSl9aWYoYkUubGVuZ3RoPjApe2JmKFwiY2FtZnJlcVwiLGJFLmpvaW4oXCI6XCIpLDQsXCIvXCIsYmgpfWJRPUkoXCJwdWJmcmVxX1wiKTtiTD1iUS5sZW5ndGg7Zm9yKGJLPTA7Yks8Ykw7YksrKyl7YkY9YlFbYktdO2JHKGJGLm4sYkYudik7YmkoYkYubixcIi9cIixiaCl9Ykw9YkQubGVuZ3RoO2ZvcihiSz0wO2JLPGJMO2JLKyspe2JPPWJEW2JLXTt4PWJPWzFdO2JOPWJPWzBdO2JFPVtdO2JQPXgubGVuZ3RoO2ZvcihiST0wO2JJPGJQO2JJKyspe2JPPXhbYkldO2JFLnB1c2goYk9bMF0rXCItXCIrYk9bMV0pfWlmKGJFLmxlbmd0aD4wKXtiZihcInB1YmZyZXFfXCIrYk4sYkUuam9pbihcIjpcIiksNCxcIi9cIixiaCl9fX0sYXo9ZnVuY3Rpb24oKXt2YXIgYkY9ZnVuY3Rpb24oKXt2YXIgYkk9XCJDaHJvbWUvXCIsYkg9YkkubGVuZ3RoO3VhPW5hdmlnYXRvci51c2VyQWdlbnQsY2hyb21lUGF0dGVybkluZGV4PXVhLmluZGV4T2YoYkkpLGNocm9tZVZlcnNpb249MDtpZihjaHJvbWVQYXR0ZXJuSW5kZXg+LTEpe2Nocm9tZVZlcnNpb249YnUodWEuc3Vic3RyKGNocm9tZVBhdHRlcm5JbmRleCtiSCwzKSk7aWYoY2hyb21lVmVyc2lvbj49Njcpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9O2lmKGJGKCk9PWZhbHNlKXtyZXR1cm59YWYoKTt2YXIgYkc9SShcIktSVEJDXCIpO3ZhciBiRTtmb3IodmFyIGJEPTAseD1iRy5sZW5ndGg7YkQ8eDtiRCsrKXtiRT1iR1tiRF07YmYoYkUubixiRS52LDMwLFwiL1wiLGJoKX19LGE0PWZ1bmN0aW9uKGJIKXt2YXIgeD10LnByZWRpcmVjdCxiRT10LnVzZXJJZE1hY3JvLGJHLGJEPWF4KyhiZD9cInNcIjpcIlwiKStcImltYWdlNC5wdWJtYXRpYy5jb20vQWRTZXJ2ZXIvU1B1Zz9vPTFcIjtpZih3KGJwKT09PVwiWUVTXCIpe2lmKHgpe3RyeXt4PWFJKHgpfWNhdGNoKGJGKXt9Ykc9dyhiQik7aWYoYkcpe2lmKGJFJiZ4LmluZGV4T2YoYkUpKXt4PXgucmVwbGFjZShiRSxiRyl9ZWxzZXt4PXgrYkd9aWYoYkg9PXRydWUpe1IoeCwwLDAsYVgsbnVsbCxudWxsLG51bGwsZmFsc2UsdHJ1ZSl9ZWxzZXtSKHgsMCwwLGFYKX19ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YTQoKX0sMTUwMCl9fX1lbHNle2lmKHQucCYmdC5mcCYmdC5ycyYmdC51KXtiRCs9XCImXCIrYTg7UihiRCwwLDAsXCJoZWlnaHQ6MHB4O3dpZHRoOjBweDtkaXNwbGF5Om5vbmU7XCIpfWVsc2V7aWYoYTImJmF3LnBtX3VpZF9iYyl7UihiRCsodC5wP1wiJnA9XCIrdC5wOlwiXCIpKyh0LnM/XCImcz1cIit0LnM6XCJcIikrKHQuY29wcGE/XCImY3A9XCIrdC5jb3BwYTpcIlwiKSsoYmQ/XCImc2M9MVwiOlwiXCIpKyh4P1wiJnByPVwiK3g6XCJcIikrKGJFP1wiJnVtYz1cIitiRTpcIlwiKStcIiZ1PVwiK2F3LnBtX3VpZF9iYytcIiZycz0zJmdkcHI9XCIrdC5nZHByK1wiJmdkcHJfY29uc2VudD1cIit0LmdkcHJfY29uc2VudCtcIiZ1c19wcml2YWN5PVwiK3QudXNfcHJpdmFjeSwwLDAsXCJoZWlnaHQ6MHB4O3dpZHRoOjBweDtkaXNwbGF5Om5vbmU7XCIpfX19fSxiYz1mdW5jdGlvbigpe2lmKCFidi5JRSYmdS51c2VyQWdlbnQuaW5kZXhPZihcInJ2OjExXCIpPT0tMSYmdS51c2VyQWdlbnQuaW5kZXhPZihcIkVkZ2VcIik9PS0xKXtiZihhQywxLDEsXCIvXCIsYUUpO2wucmVsb2FkKCl9fSxhbT1mdW5jdGlvbigpe3ZhciBiRCx4O2JEPXcoYVQpO3g9dyhhUik7aWYoYkQhPT1cInRydWVcIiYmYkQhPT1cIlRSVUVcIiYmeCE9PVwidHJ1ZVwiJiZ4IT09XCJUUlVFXCIpe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX0sYVY9dHJ1ZTthSCgpO2FuPWJ1KHQucHx8MCk7YVE9YnUodC5zfHwwKTtjPWJ1KHQuYXx8MCk7YTI9YnUodC5iY2V8fDApO2FaKGFuKTt2YXIgYXk9YWIoYW4pO3QuZ2Rwcl9jb25zZW50PWF5JiZheS5jP2F5LmM6KHQuZ2Rwcl9jb25zZW50fHxcIlwiKTt0LmdkcHI9dC5nZHByX2NvbnNlbnQ/MToodC5nZHByfHxcIjBcIik7aWYodC5nZHByPT0xKXthMj1mYWxzZX1iQyhhbik7dmFyIFY9WShhbik7dC51c19wcml2YWN5PVYmJlYuYz9WLmM6dC51c19wcml2YWN5fHxcIlwiO2lmKGFuPT0wKXthbj1idSh3KFwicHBcIikpfHwwfWFnPXQucHRhc2t8fFwiQUxMXCI7YmYoYnAsXCJZRVNcIiw5MCxcIi9cIixiaCk7aWYodyhicCk9PT1cIllFU1wiJiZhbSgpPT1mYWxzZSl7aWYoYVYpe2F3LlB1Z01hc3RlckNhbGxiYWNrPWZ1bmN0aW9uKGJELHgsYkUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiaShhQixcIi9cIixhRSl9LDIwMDApO2lmKGJEfHwoIXQuU1B1ZyYmTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMCk8PTEwKSl7SChhbil9aWYoeCl7c2V0VGltZW91dChmdW5jdGlvbigpe2JjKCl9LDMwMDAwKX1pZihiRSl7YmYoYU4sKG5ldyBEYXRlKCkpLmdldFRpbWUoKSsoNjAqNjAqNioxMDAwKSwxLFwiL1wiLGFFKX1hNCgpfTsoZnVuY3Rpb24oKXt2YXIgeD1cImltYWdlNi5wdWJtYXRpYy5jb20vQWRTZXJ2ZXIvUHVnTWFzdGVyP2tkbnR1aWQ9MSZybmQ9XCIrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEwMDAwMDAwMSk7eCs9XCImcD1cIithbitcIiZzPVwiK2FRK1wiJmE9XCIrYytcIiZwdGFzaz1cIithZytcIiZucD1cIisodC5ucHx8XCIwXCIpK1wiJmZwPVwiKyh0LmZwfHxcIjBcIikrXCImbXBjPVwiKyh0Lm1wY3x8XCIwXCIpK1wiJnNwdWc9MSZjb3BwYT1cIisodC5jb3BwYXx8XCIwXCIpK1wiJmdkcHI9XCIrdC5nZHByK1wiJmdkcHJfY29uc2VudD1cIit0LmdkcHJfY29uc2VudCtcIiZ1c19wcml2YWN5PVwiK3QudXNfcHJpdmFjeTtpZihiZCl7eCs9XCImc2VjPTFcIn1pZigodyhhTil8fDApPD0obmV3IERhdGUoKSkuZ2V0VGltZSgpKXtpZighdyhhQikpe2JmKGFCLFwiWUVTXCIsMSxcIi9cIixhRSk7c2V0VGltZW91dChmdW5jdGlvbigpe2JpKGFCLFwiL1wiLGFFKX0sMzAwMCk7digpO0QoYmErYXgreCsnXCI+PFxcL3NjcmlwdD4nKX1lbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiYygpfSwzMDAwKX19ZWxzZXthNCgpfX0pKCl9fWVsc2V7aWYoYTIpeyhmdW5jdGlvbigpe3ZhciBiRD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpLHg9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07YkQudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2JELmFzeW5jPXRydWU7YkQuc3JjPWF4K1wiaW1hZ2U2LnB1Ym1hdGljLmNvbS9BZFNlcnZlci9VQ29va2llU2V0UHVnP29pZD0yJmNiPVB1Yk1hdGljLl91aWRDQlwiO3gucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYkQseCl9KSgpfWVsc2V7YTQoKX19YWQoYVAsXCJ1bmxvYWRcIixVKTthZChhUCxcImJlZm9yZXVubG9hZFwiLFUpfWVsc2V7dHJ5e2RvY3VtZW50LmRvbWFpbj1iaH1jYXRjaChieil7fWFXPXt9O2F3LnI9ZnVuY3Rpb24oKXt2YXIgeD1hUC5sb2NhdGlvbi5ocmVmLGJKPXguaW5kZXhPZihcIiNcIik+LTE/eC5zdWJzdHIoeC5pbmRleE9mKFwiI1wiKSsxKTpcIlwiLGJGPWJKLnNwbGl0KFwiJlwiKSxiTj1iRi5sZW5ndGgsYkssYk09MCxiRCxiUCxiSCxiST17fSxiRT17fSxiRz1bXSxiTz1udWxsLGJMPWFXO2Zvcig7Yk08Yk47Yk0rKyl7Ykg9YkZbYk1dLnNwbGl0KFwiPVwiKTtiRD1iSFswXTtiUD1hSShiSFsxXSl8fFwiXCI7aWYoYkQ9PT1cIm5pXCIpe2JQPWJQLnNwbGl0KFwiLFwiKTtiRy5wdXNoKFtidShiUFswXSksYnUoYlBbMV0pLHBhcnNlRmxvYXQoYlBbMl0pLHBhcnNlRmxvYXQoYlBbM10pXSl9ZWxzZXtiSVtiRF09YlB9fWlmKGJJLmtwYXNzYmFja3BhcnMpe2JLPWJJLmtwYXNzYmFja3BhcnMuc3BsaXQoXCIsXCIpO2RlbGV0ZSBiSS5rcGFzc2JhY2twYXJzO2JOPWJLLmxlbmd0aDtmb3IoYk09MDtiTTxiTjtiTSsrKXtiRD1iS1tiTV07aWYoYkkuaGFzT3duUHJvcGVydHkoYkQpKXtiRVtiRF09YklbYkRdO2RlbGV0ZSBiSVtiRF19fWJFLmtwYXNzYmFja3BhcnM9Yksuam9pbihcIixcIik7YkwucGJ2PWJFfWJMLmM9Ykk7YkwubmlzPWJHO2lmKGJHLmxlbmd0aD4wKXtiTz1iTH1yZXR1cm4gYk99O2F3LkFkSW5mbz1hV319fX1lbHNle2lmKGF3LkFIVD09PTIpe2FqKCl9ZWxzZXtpZihhdy5BSFQ9PT0xKXthMSgpfWVsc2V7aWYod2luZG93LnB1YklkJiZhMiYmIWF3Lmhhc093blByb3BlcnR5KFwicG1fdWlkX2JjXCIpKXthdy5wbV91aWRfYmM9XCJcIjtibChheCtcImltYWdlNi5wdWJtYXRpYy5jb20vQWRTZXJ2ZXIvVUNvb2tpZVNldFB1Zz9vaWQ9MiZjYj1QdWJNYXRpYy5fdWlkQ0JcIik7YmwoYXgrXCJhZHMucHVibWF0aWMuY29tL0FkU2VydmVyL2pzL3Nob3dhZC5qc1wiKX1lbHNle2E1PWEwKCk7aWYoYTUucHViSWQmJmE1LnNpdGVJZCYmYTUuYWRJZCYmYTUua2FkaGVpZ2h0JiZhNS5rYWR3aWR0aCl7YVooYTUucHViSWQpO2JDKGE1LnB1YklkKTthNS5TQVZlcnNpb249XCIyXCI7YTUuanM9XCIxXCI7YTUua2RudHVpZD1cIjFcIjthNyhhNSk7SihhNSk7aWYoYVAucG1Bc3luY0VuYWJsZWQmJmFQLmthZGFzeW5jIT1mYWxzZSl7KGZ1bmN0aW9uKCl7dmFyIHg9XCJQdWJNYXRpY19Bc3luY19cIitNYXRoLnJhbmRvbSgpLGJFPWZhbHNlLGJEPWZ1bmN0aW9uKCl7aWYoYkUpe3JldHVybn1iRT10cnVlO3ZhciBiST1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh4KSxiRyxiRjtpZihiSSl7Ykc9JzwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOXCIgXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGRcIj48aHRtbD48aGVhZD48YmFzZSB0YXJnZXQ9XCJfdG9wXCIgLz48c2NyaXB0PmluRGFwSUY9dHJ1ZTs8XFwvc2NyaXB0PjwvaGVhZD4nO2JHKz1cIjxib2R5PlwiO2JHKz1cIjxzY3JpcHQ+XCI7YkcrPVwidmFyIHB1YklkID0gXCIrYTUucHViSWQrXCI7XCI7YkcrPVwidmFyIHNpdGVJZCA9IFwiK2E1LnNpdGVJZCtcIjtcIjtiRys9XCJ2YXIga2FkSWQgPSBcIithNS5hZElkK1wiO1wiO2JHKz1cInZhciBrYWR3aWR0aCA9IFwiK2E1LmthZHdpZHRoK1wiO1wiO2JHKz1cInZhciBrYWRoZWlnaHQgPSBcIithNS5rYWRoZWlnaHQrXCI7XCI7YkcrPVwidmFyIGthZHR5cGUgPSBcIithNS5rYWR0eXBlK1wiO1wiO2JHKz1cInZhciBrYWRhc3luYyA9IGZhbHNlO1wiO2JHKz1cInZhciBrYWRHZHByID0gXCIrYTUuZ2RwcitcIjtcIjtmb3IoYkYgaW4gQSl7aWYoQS5oYXNPd25Qcm9wZXJ0eShiRikmJmE1Lmhhc093blByb3BlcnR5KEFbYkZdLm4pKXtiRys9XCJ2YXIgXCIrYkYrJyA9IFwiJythSShhNVtBW2JGXS5uXSkrJ1wiOyd9fWJHKz1cIjxcXC9zY3JpcHQ+XCI7YkcrPSc8c2NyaXB0IHNyYz1cIicrYXQrJ1wiPjxcXC9zY3JpcHQ+JztiRys9XCI8L2JvZHk+PC9odG1sPlwiO3ZhciBiSD1iSS5jb250ZW50V2luZG93LmRvY3VtZW50O2JILndyaXRlKGJHKTtiSC5jbG9zZSgpfX07RCgnPGlmcmFtZSBpZD1cIicreCsnXCIgZnJhbWVib3JkZXI9XCIwXCIgYWxsb3d0cmFuc3BhcmVuY3k9XCJ0cnVlXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIG1hcmdpbndpZHRoPVwiMFwiIHNjcm9sbGluZz1cIm5vXCIgd2lkdGg9XCInK2E1LmthZHdpZHRoKydcIiBoc3BhY2U9XCIwXCIgdnNwYWNlPVwiMFwiIGhlaWdodD1cIicrYTUua2FkaGVpZ2h0KydcIj48L2lmcmFtZT4nKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YkQoKX0sMTUpfSkoKX1lbHNle0M9ZmFsc2U7aWYoYTUua2FkTmV0d29yayl7Qz1haihhNSl9aWYoIUMpe3ZhciByPWZhbHNlLGI9NTAseT17MzE0MjA6XCJcIiw0MjY1NzpcIlwiLDc5NTM0OlwiXCIsNzM1ODc6XCJcIiw0NjA3NjpcIlwifSxFPXs5MDYyNzpcIlwiLDkwNjMyOlwiXCJ9O2lmKGJ2LklFJiZhUCE9YTYpe3RyeXtpZihhUC5mcmFtZUVsZW1lbnQmJmFQLmZyYW1lRWxlbWVudC5zcmMuaW5kZXhPZihcImphdmFzY3JpcHQ6XCIpPT09MCl7cj10cnVlO2lmKCFkb2N1bWVudC5ib2R5KXtEKCc8c3BhbiBzdHlsZT1cIicrYVgrJ1wiLz4nKTtiPTUwMH1pZih5Lmhhc093blByb3BlcnR5KGE1LnB1YklkKXx8RS5oYXNPd25Qcm9wZXJ0eShhNS5zaXRlSWQpKXtyPWZhbHNlfX19Y2F0Y2goVCl7fX1pZihyKXthdy5zaG93QWQoYTUsISFhNS5rYWROZXR3b3JrLHRydWUpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtSKGF0K1wiI1BNRlJBTUU9MSZcIitwKGE1KStcIiZpdD1cIitidi5pdCtcIiZiY2U9XCIrKGEyPzE6MCksYTUua2FkaGVpZ2h0LGE1LmthZHdpZHRoLFwiaGVpZ2h0OlwiK2E1LmthZGhlaWdodCtcInB4O3dpZHRoOlwiK2E1LmthZHdpZHRoK1wicHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowcHg7dG9wOjBweDt6LWluZGV4OjEwMFwiLG51bGwsbnVsbCxudWxsLGZhbHNlLHRydWUpfSxiKX1lbHNle2F3LnNob3dBZChhNSwhIWE1LmthZE5ldHdvcmspfX19fX19fX19Y2F0Y2goYnope2FvKGJ6KX19KSgpO1xuLy8tLT48L3NjcmlwdD48L2JvZHk+PC9odG1sPiJ9LCAiaGVhZGVyc1NpemUiOiAxNjAzLCAiYm9keVNpemUiOiAxNDA2NCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTU2Njd9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiA5MjIuMjgxLCAicmVjZWl2ZSI6IDkuMzh9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjEwNFoiLCAidGltZSI6IDY1LjYwMzAwMDAwMDAwMDAxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2JlYWNvbi5odG1sIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjM5LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiRkJqUE1pUndmZzMybXFJNlc3ZF9LRW83R2xlNnJ1dVlBZTc2Q1Z6WGJOSS0xNjg0OTQyODc5LTAtQVFGTWZxSGVxek5Cc2x5UHRRaXpyT2pjT2NjdGF1cUE4Mmt1MlRvNHhEOFdpK2VKZEZTK3VWM1pONENUQ1VTWGxCaGRWbGVjaGRaWEh1U3VnL1pSaC80PSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICIzNjQ4MyJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDYxOWIxZDM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvaHRtbCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE5IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1OZXJZeXNITkRWdUxXYWszdjU0clh2WTZiOUNEM0xIeGpvdUFWVVlKYWlNMlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPUZCalBNaVJ3ZmczMm1xSTZXN2RfS0VvN0dsZTZydXVZQWU3NkNWelhiTkktMTY4NDk0Mjg3OS0wLUFRRk1mcUhlcXpOQnNseVB0UWl6ck9qY09jY3RhdXFBODJrdTJUbzR4RDhXaStlSmRGUyt1VjNaTjRDVENVU1hsQmhkVmxlY2hkWlhIdVN1Zy9aUmgvND07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToxOSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYmVhY29uLmh0bWwifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtTmVyWXlzSE5EVnVMV2FrM3Y1NHJYdlk2YjlDRDNMSHhqb3VBVlVZSmFpTTIifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAiaGl0In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDE1MiwgIm1pbWVUeXBlIjogInRleHQvaHRtbCIsICJjb21wcmVzc2lvbiI6IDAsICJ0ZXh0IjogIlxuPCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNClhYm91dDppbnRlcm5ldCAtLT5cbjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCI+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+In0sICJoZWFkZXJzU2l6ZSI6IDE2MTMsICJib2R5U2l6ZSI6IDE3MCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTc4M30sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDYyLjIxNSwgInJlY2VpdmUiOiAzLjM4OH0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTA1WiIsICJ0aW1lIjogNjE2LjY1MiwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogInd3dy5nc3RhdGljLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDQzOCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQtUmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJBZ2UiLCAidmFsdWUiOiAiNTQyOTI1In0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMTg0MiJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogImltYWdlL3BuZyJ9LCB7Im5hbWUiOiAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3ktUmVwb3J0LU9ubHkiLCAidmFsdWUiOiAic2FtZS1vcmlnaW47IHJlcG9ydC10bz1cInN0YXRpYy1vbi1iaWd0YWJsZVwiIn0sIHsibmFtZSI6ICJDcm9zcy1PcmlnaW4tUmVzb3VyY2UtUG9saWN5IiwgInZhbHVlIjogImNyb3NzLW9yaWdpbiJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJUaHUsIDE4IE1heSAyMDIzIDA4OjUyOjMzIEdNVCJ9LCB7Im5hbWUiOiAiRXhwaXJlcyIsICJ2YWx1ZSI6ICJGcmksIDE3IE1heSAyMDI0IDA4OjUyOjMzIEdNVCJ9LCB7Im5hbWUiOiAiTGFzdC1Nb2RpZmllZCIsICJ2YWx1ZSI6ICJUaHUsIDE0IE9jdCAyMDIxIDA5OjA4OjAwIEdNVCJ9LCB7Im5hbWUiOiAiUmVwb3J0LVRvIiwgInZhbHVlIjogIntcImdyb3VwXCI6XCJzdGF0aWMtb24tYmlndGFibGVcIixcIm1heF9hZ2VcIjoyNTkyMDAwLFwiZW5kcG9pbnRzXCI6W3tcInVybFwiOlwiaHR0cHM6Ly9jc3Aud2l0aGdvb2dsZS5jb20vY3NwL3JlcG9ydC10by9zdGF0aWMtb24tYmlndGFibGVcIn1dfSJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogInNmZmUifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiT3JpZ2luIn0sIHsibmFtZSI6ICJYLUNvbnRlbnQtVHlwZS1PcHRpb25zIiwgInZhbHVlIjogIm5vc25pZmYifSwgeyJuYW1lIjogIlgtWFNTLVByb3RlY3Rpb24iLCAidmFsdWUiOiAiMCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAxODQyLCAibWltZVR5cGUiOiAiaW1hZ2UvcG5nIiwgImNvbXByZXNzaW9uIjogMCwgInRleHQiOiAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQVlBQUFCWEF2bUhBQUFHK1VsRVFWUjRBZTJZVlhmYldCQ0F0Yy9MOEgrV29jenRZcG1mbHJmY2NHS0lVMlptWnVZMmpMYk1Eak52dzY5M2RrYk9LSXJXY3BSMThKek5PVjk4N2RMM1NYTWxwZEpFK2ZyL0N3RGVXSHFnWSs2aW5iMmUrVHY3aEo1NU93YVkyODhjSmlQTWJBM3I5N2EraFVpampicFl2TGR6L29KZGZZS0pOV0JoV3RzTVJCcHRCdDdzN0hWcjVXTU5tR252ZklSSW80MjZJRWtqZVVLVk54a3d5NEYvMzE5Rjd5TFNhS0l1V0hUa0FwQ2t1am1JTkpxb0N4WWQvdmd3T25uQzN2a1lrVVlUZFdGZTNud0FqOUc0akJCTEc4dEhIeDlpSmpJN3FYb2VJbzBXNmtJdmJDVFBBWE16K2tETEhFZVkyVnJTKzJEbC9nNXd1c3BGVlZXRGFHNXBGYTJ0WVZwYVdsU2FtNXNWbXBxYUl0TFkyRWpRV3E2dXJwK0dTSXk2R0k0OG9aZG50UExNdFljZUVReFZvUUFKLy9jQXByS3laZ1lpRVJJdmpLV05SMmVvbzg4a242NkMzRHhaVkZYWGszRE1BZlgxalU1RUlpUmV6RFVodnZoQW56ajVvaHZraWs1b2F1dUFac1JkMlFtbjhMUEYreUxMejBLVzdXbUh6Q3lua09XQXFHOW9qRFdBa1FpSkYwYmlUUEwxSHRIWTJnR3ZPeUpEdjdidFlrL0VBT0lxamxGaGtVY0VBaUdTR3ZrQWtqU0M1RisvSHBDdGJPaUV4NjVPdUYzUUJhR2E4R2YwdXZKUWIwVDVtZmFCTVhKN0FxSzB0SXpFV0o0eGtvOGhBT2Y4cC8xOTZwRnYvN3NEamozcjFsNDJhUTE3N3ZmQTB2MlI1VGxnYWY4WXVWeCtFUWlHUkhsNU9RbU9ZQURKUk9EazgyNCs4c3FzNjYvMzJyazNPdnJNMVFmaE1mTDdnM1FXS0lKRWhqMCtEUTBOaEVSSXZEQUtvQTFMOGsxNEZ1YnRIQ3pQbUpHZmdTU2R3akhLcFRIeWkxQ29WSlNWcVJHeEI3Q1lIaEtuZ054QUorakZqVGIwZytLdWlBRkxkdU1ZWmRJWStVU3dQNEJZdGMwS2E1TXl3SVI4YkFFa2JTYmdpYk5MTDgrb1krVHowUmlGQTFadXM4REs3Vllnc1JFTFlFbnRDTTNkeWM4NFlXeTNlbFQyUFJ6WUsxZHl1djRsUDkyR1dQdGczdFpuc1BnUEN5emJoTkpiclFpK2JtT3NzRG9oQTlZazdrQXlHT1V6alh6a0FCYldjMEt6aWVrbXh2SXE2V0dPUEJuNGZTblhlbGllVWVTSm1TazE4T1B2RmxpNk1SeXdZbXVhR3JBQ0ExWnV0Nkd3UXlNZlk4QVArd1l1bzIxNEdUM3l0RnZNeWhnc24zS2pSN1MyaDM5UFRWTVh6TS9vWmZFd05nWWprQ3NQM0RoR2JtV010SnU1b3FKQ0lmMzRCU1hpenJNcy9mZ1lCNUNRRVFsWEI5L0lLdWhHNXV5RW0zZ2o4MVoycXAvVDcwbTQwbU1vendHSmVEWEt5WFVKMmUwWHdXQm9VSURiNnhPcjQreXdKajRkeXZDOWdmendBamlpc1lWRUkwTm53SGFyZTBoNVl2R3Vkb2pMT0FWTE4xaGc1Nm1Md0FIRUxueFBHM3JuaVl0UVdWbEpvdVlDZUJ5aVFlTjAvRmszdU1vN2xVM2QzTllKSGp3RDV6TzdZZW1CWG1GR25waG03WVZUTndyRnNnMVdXTGJaQ3BtNStZcjhxOXdDc1FyM0FKMkJJcWNzS0tDcXFvcUZZd3VZRVlYcDlnSE15Qk9KSnl2QmNmZ2lub1UwK0NWdE41VElzdmpWc2tmWnpFY3Uzd0lhSndyZ2lQcjYrdWdCTTR4RlRZa3pSdUlzei95MHN4MWV2aW9XRzZ3SFlmbVdORmlYa0E0clVINkQ0d0NVNGtoeGdIR0VMaUFXYVdKYVAyYmtwL1p6NWI1YlBIMlpKNVp2NGN1cERZcWRzakpPSEVDdkhGQmRYYzBSeGdIR3dzYmllcUxMTXpSR1ZaQzA2d3plRTlKd0w2VEJjcnlwN1RwNUNUaUEwUWJVMU5SRURqQ1dOQ0hOMk1Kb3hBM2tFVXN2ekxFMHdQZS9wc0txelRhNGNPZVJXQmZ2Z0JVWXNlUGtSWW93REtpdHJTVWtRdUtGZVdsamNjYU1QREVsclJkKzJIQVk3ajU4cFR4aXY4d3BFR3R4THl6ZmhoRW5Mc0N3QW93RnpZc1RVL3ZSaUJ2S0UzOGRDRUIyamt0OXhNN01LeFRyRWh6S09PMDRycHdKYlFBUlE0RE5tS2s2aHBML2hnSncvUU5lalY3MVAySUh3bmRsakNoUUl1alp5SDdzSEhBQVlSZ3d3OWJyTXBZMEwwNU1zZmFLU09JTXl6T1g3OG1pb0ZBZTlJaWQxUjl4L01vZE9nUDZNU0lrUXVMRmJFdjc3RmlrV1Z4TEpQa3BPaWdtUVhrMlVuN2cxei9jTWRFRG1LbngxZk9tcHI3MlRiVjBDaTFUaHVDYnRIL3pOVElsdFJPMGZLUGo2NVFPaFI4Y3pjbytjTW0wRDhxMEFmd2FQV0MwMkpMNE5PNnp1VGZoVXgyZnpMbWg4dW1jbTdBNStRbms1ZU1aY0E4K0E4UzRCc1RabjMvMHhZSTdvT1h6K1lQWm52b0Njdk5jb3JqRUsvd0JaUk16NHg5QXJQM2pSY3VYaSs3REYzb1czb2Q0MjB2SUw1QkZFY3A3UFB5elFkUUFqaUFrZ3I2TktrbU9yQTBVb01MeTloY283eFRGeFI0Y0hSLzlseU9PVHdpdlFxVkdBY3pZQmpnY0R6N1FpaE54MXVjNDgyRjVXZllKbnorQVJ6OFlMWUFaK3dCaXpXOHZXbGcrM3ZZY1o3NUVGQlc1Rlhtdno0OUhQM29BcnptZ3RMeENSaVNDdm8wNnliYWNQNVFqai9JNXVjV2lFRzlhVHFkSGtmZjdvd2Z3ZTIzQXEreVMrWWhFMExkUkp3N0hLTTd5R0RLejhrVk9UcEVvS0NnUlRoZGROdDBLSGcvR2VMM0M1L054RUVGcmJTRDlYdStqcHprTEVJbmh4V1JsOGdmOEExLzVpQnJJTmI5QkFBQUFBRWxGVGtTdVFtQ0MiLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDYyMSwgImJvZHlTaXplIjogMTg0MiwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMjQ2M30sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogMS4zODMsICJjb25uZWN0IjogMjAzLjM0OSwgInNzbCI6IDIwNS45NTgsICJzZW5kIjogMCwgIndhaXQiOiAyMDQuNTc4LCAicmVjZWl2ZSI6IDEuMzg0fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI4MDA6M2YwOjQwMDE6ODI0OjoyMDAzXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjFaIiwgInRpbWUiOiA4NjAuNTM0LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3pvbmUiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg4KS5odG1sIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogNDA0LCAic3RhdHVzVGV4dCI6ICJOb3QgRm91bmQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJHV1F1NzQ4RjZab09MdXR4X2NRNnouMThvSzEwbFZETVFON2d3NnN3bmdvLTE2ODQ5NDI4NzktMC1BZmNQMWkyWXQvRWp3eWhWZ2VhWG9pTmppdll5TW9YV3RDUWp4NjYwTWFjK3BXczVtL3ovQ3QzbDh4OUxPcnpMbXdiaDdlSVRaYVNJaFdBZWh5cE1jUzQ9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiRVhQSVJFRCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDYyNGM1ZDM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOSBHTVQifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09R1dRdTc0OEY2Wm9PTHV0eF9jUTZ6LjE4b0sxMGxWRE1RTjdndzZzd25nby0xNjg0OTQyODc5LTAtQWZjUDFpMll0L0Vqd3loVmdlYVhvaU5qaXZZeU1vWFd0Q1FqeDY2ME1hYytwV3M1bS96L0N0M2w4eDlMT3J6TG13Ymg3ZUlUWmFTSWhXQWVoeXBNY1M0PTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjE5IEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtQ29udGVudC1UeXBlLU9wdGlvbnMiLCAidmFsdWUiOiAibm9zbmlmZiJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIm5ldDo6RVJSX0FCT1JURUQifSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogODYwLjUzNCwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjFaIiwgInRpbWUiOiAxMDE4LjM5OTAwMDAwMDAwMDEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvb3NkX2xpc3RlbmVyLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoOCkuaHRtbCJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTg1LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiZlJVbTRRc1dUZVUzdkVvWEhRcFVVR1hOOW1WV3U1UERQeE10aWdHZjZDby0xNjg0OTQyODgwLTAtQVcyUThXTSswUmJES3dtN1JkTGQ3NUxteThSVSswc1lnU0g5OEI0VW1uMnV2TGpSd0t6Q1Nnbkl2dHYyRG45RURjb1lpQ3h2eFZFdUkyZm90dDJpbnNzPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NjNkZTllOTI1Yy1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIwIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1aUFlYOVdxY3FyMXNKVWNCcjZrNXIzTllRdzhKRnl0RUd5S2VpdlBnRGdMQlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPWZSVW00UXNXVGVVM3ZFb1hIUXBVVUdYTjltVld1NVBEUHhNdGlnR2Y2Q28tMTY4NDk0Mjg4MC0wLUFXMlE4V00rMFJiREt3bTdSZExkNzVMbXk4UlUrMHNZZ1NIOThCNFVtbjJ1dkxqUndLekNTZ25JdnR2MkRuOUVEY29ZaUN4dnhWRXVJMmZvdHQyaW5zcz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToyMCBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvb3NkX2xpc3RlbmVyLmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVpQWVg5V3FjcXIxc0pVY0JyNms1cjNOWVF3OEpGeXRFR3lLZWl2UGdEZ0xCIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogNzU5MDQsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogNDcyMDcsICJ0ZXh0IjogIihmdW5jdGlvbih3aW5kb3csZG9jdW1lbnQpey8qXG5cbiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLlxuIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4qL1xudmFyIGw7ZnVuY3Rpb24gYWEoYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19dmFyIGJhPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07ZnVuY3Rpb24gY2EoYSl7YT1bXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYSxcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csXCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYsXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoXCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0XCIpO312YXIgZGE9Y2EodGhpcyk7ZnVuY3Rpb24gZWEoYSxiKXtpZihiKWE6e3ZhciBjPWRhO2E9YS5zcGxpdChcIi5cIik7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpYnJlYWsgYTtjPWNbZV19YT1hW2EubGVuZ3RoLTFdO2Q9Y1thXTtiPWIoZCk7YiE9ZCYmbnVsbCE9YiYmYmEoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfX1mdW5jdGlvbiBmYShhKXt2YXIgYj1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6e25leHQ6YWEoYSl9fWZ1bmN0aW9uIGhhKGEpe2lmKCEoYSBpbnN0YW5jZW9mIEFycmF5KSl7YT1mYShhKTtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTthPWN9cmV0dXJuIGF9dmFyIGlhPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7fWIucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifSxqYTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YpamE9T2JqZWN0LnNldFByb3RvdHlwZU9mO2Vsc2V7dmFyIGthO2E6e3ZhciBsYT17d2I6ITB9LG1hPXt9O3RyeXttYS5fX3Byb3RvX189bGE7a2E9bWEud2I7YnJlYWsgYX1jYXRjaChhKXt9a2E9ITF9amE9a2E/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErXCIgaXMgbm90IGV4dGVuc2libGVcIik7cmV0dXJuIGF9Om51bGx9dmFyIG5hPWphO2Z1bmN0aW9uIHIoYSxiKXthLnByb3RvdHlwZT1pYShiLnByb3RvdHlwZSk7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTtpZihuYSluYShhLGIpO2Vsc2UgZm9yKHZhciBjIGluIGIpaWYoXCJwcm90b3R5cGVcIiE9YylpZihPYmplY3QuZGVmaW5lUHJvcGVydGllcyl7dmFyIGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiLGMpO2QmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGMsZCl9ZWxzZSBhW2NdPWJbY119dmFyIG9hPVwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihkKWZvcih2YXIgZSBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGUpJiYoYVtlXT1kW2VdKX1yZXR1cm4gYX07ZWEoXCJPYmplY3QuYXNzaWduXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fG9hfSk7ZWEoXCJNYXRoLnRydW5jXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtiPU51bWJlcihiKTtpZihpc05hTihiKXx8SW5maW5pdHk9PT1ifHwtSW5maW5pdHk9PT1ifHwwPT09YilyZXR1cm4gYjt2YXIgYz1NYXRoLmZsb29yKE1hdGguYWJzKGIpKTtyZXR1cm4gMD5iPy1jOmN9fSk7dmFyIHQ9dGhpc3x8c2VsZjtmdW5jdGlvbiBwYShhLGIpe2E9YS5zcGxpdChcIi5cIik7dmFyIGM9dDthWzBdaW4gY3x8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGMuZXhlY1NjcmlwdHx8Yy5leGVjU2NyaXB0KFwidmFyIFwiK2FbMF0pO2Zvcih2YXIgZDthLmxlbmd0aCYmKGQ9YS5zaGlmdCgpKTspYS5sZW5ndGh8fHZvaWQgMD09PWI/Y1tkXSYmY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0/Yz1jW2RdOmM9Y1tkXT17fTpjW2RdPWJ9ZnVuY3Rpb24gcWEoKXt9ZnVuY3Rpb24gdShhKXthLk1hPXZvaWQgMDthLmY9ZnVuY3Rpb24oKXtyZXR1cm4gYS5NYT9hLk1hOmEuTWE9bmV3IGF9fWZ1bmN0aW9uIHJhKGEpe3ZhciBiPXR5cGVvZiBhO2I9XCJvYmplY3RcIiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT9cImFycmF5XCI6YjpcIm51bGxcIjtyZXR1cm5cImFycmF5XCI9PWJ8fFwib2JqZWN0XCI9PWImJlwibnVtYmVyXCI9PXR5cGVvZiBhLmxlbmd0aH1mdW5jdGlvbiBzYShhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX12YXIgdGE9RGF0ZS5ub3c7ZnVuY3Rpb24gdWEoYSxiKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlPWIucHJvdG90eXBlO2EucHJvdG90eXBlPW5ldyBjO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWF9ZnVuY3Rpb24gdmEoYSl7cmV0dXJuIGF9O3ZhciB3YTtmdW5jdGlvbiB4YShhLGIpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlyZXR1cm5cInN0cmluZ1wiIT09dHlwZW9mIGJ8fDEhPWIubGVuZ3RoPy0xOmEuaW5kZXhPZihiLDApO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9ZnVuY3Rpb24gdihhLGIsYyl7Zm9yKHZhciBkPWEubGVuZ3RoLGU9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxmPTA7ZjxkO2YrKylmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKX1mdW5jdGlvbiB5YShhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPVtdLGU9MCxmPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZz0wO2c8YztnKyspaWYoZyBpbiBmKXt2YXIgaD1mW2ddO2IuY2FsbCh2b2lkIDAsaCxnLGEpJiYoZFtlKytdPWgpfXJldHVybiBkfWZ1bmN0aW9uIHphKGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT1BcnJheShkKSxmPVwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiXCIpOmEsZz0wO2c8ZDtnKyspZyBpbiBmJiYoZVtnXT1iLmNhbGwoYyxmW2ddLGcsYSkpO3JldHVybiBlfWZ1bmN0aW9uIEFhKGEsYixjKXt2YXIgZD1jO3YoYSxmdW5jdGlvbihlLGYpe2Q9Yi5jYWxsKHZvaWQgMCxkLGUsZixhKX0pO3JldHVybiBkfWZ1bmN0aW9uIEJhKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxlPTA7ZTxjO2UrKylpZihlIGluIGQmJmIuY2FsbCh2b2lkIDAsZFtlXSxlLGEpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIENhKGEsYil7YTp7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxlPTA7ZTxjO2UrKylpZihlIGluIGQmJmIuY2FsbCh2b2lkIDAsZFtlXSxlLGEpKXtiPWU7YnJlYWsgYX1iPS0xfXJldHVybiAwPmI/bnVsbDpcInN0cmluZ1wiPT09dHlwZW9mIGE/YS5jaGFyQXQoYik6YVtiXX1mdW5jdGlvbiB3KGEsYil7cmV0dXJuIDA8PXhhKGEsYil9ZnVuY3Rpb24gRGEoYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX1mdW5jdGlvbiBFYShhKXt2YXIgYj1hLmxlbmd0aDtpZigwPGIpe2Zvcih2YXIgYz1BcnJheShiKSxkPTA7ZDxiO2QrKyljW2RdPWFbZF07cmV0dXJuIGN9cmV0dXJuW119ZnVuY3Rpb24gRmEoYSxiLGMpe3JldHVybiAyPj1hcmd1bWVudHMubGVuZ3RoP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiLGMpfWZ1bmN0aW9uIEhhKGEsYil7YS5zb3J0KGJ8fElhKX1mdW5jdGlvbiBJYShhLGIpe3JldHVybiBhPmI/MTphPGI/LTE6MH1mdW5jdGlvbiBKYShhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihBcnJheS5pc0FycmF5KGQpKWZvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSs9ODE5Milmb3IodmFyIGY9SmEuYXBwbHkobnVsbCxGYShkLGUsZSs4MTkyKSksZz0wO2c8Zi5sZW5ndGg7ZysrKWIucHVzaChmW2ddKTtlbHNlIGIucHVzaChkKX1yZXR1cm4gYn1mdW5jdGlvbiBLYShhLGIsYyl7cmV0dXJuIERhLmFwcGx5KFtdLHphKGEsYixjKSl9O2Z1bmN0aW9uIExhKGEpe3ZhciBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7Ynx8KGM9YSgpLGI9ITApO3JldHVybiBjfX1mdW5jdGlvbiBNYShhKXt2YXIgYj1hO3JldHVybiBmdW5jdGlvbigpe2lmKGIpe3ZhciBjPWI7Yj1udWxsO2MoKX19fTtmdW5jdGlvbiBOYShhLGIsYyl7Zm9yKHZhciBkIGluIGEpYi5jYWxsKGMsYVtkXSxkLGEpfWZ1bmN0aW9uIE9hKGEsYil7dmFyIGM9e30sZDtmb3IoZCBpbiBhKWIuY2FsbCh2b2lkIDAsYVtkXSxkLGEpJiYoY1tkXT1hW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBQYShhKXt2YXIgYj1RYSxjO2ZvcihjIGluIGIpaWYoIWEuY2FsbCh2b2lkIDAsYltjXSxjLGIpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFRhKGEpe3ZhciBiPVtdLGM9MCxkO2ZvcihkIGluIGEpYltjKytdPWFbZF07cmV0dXJuIGJ9ZnVuY3Rpb24gVWEoYSl7dmFyIGI9e30sYztmb3IoYyBpbiBhKWJbY109YVtjXTtyZXR1cm4gYn12YXIgVmE9XCJjb25zdHJ1Y3RvciBoYXNPd25Qcm9wZXJ0eSBpc1Byb3RvdHlwZU9mIHByb3BlcnR5SXNFbnVtZXJhYmxlIHRvTG9jYWxlU3RyaW5nIHRvU3RyaW5nIHZhbHVlT2ZcIi5zcGxpdChcIiBcIik7ZnVuY3Rpb24geChhLGIpe2Zvcih2YXIgYyxkLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXtkPWFyZ3VtZW50c1tlXTtmb3IoYyBpbiBkKWFbY109ZFtjXTtmb3IodmFyIGY9MDtmPFZhLmxlbmd0aDtmKyspYz1WYVtmXSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxjKSYmKGFbY109ZFtjXSl9fTt2YXIgV2E7ZnVuY3Rpb24gWGEoYSxiKXt0aGlzLmI9YT09PVlhJiZifHxcIlwiO3RoaXMuYT1aYX12YXIgWmE9e30sWWE9e307ZnVuY3Rpb24gJGEoYSl7cmV0dXJuL15bXFxzXFx4YTBdKihbXFxzXFxTXSo/KVtcXHNcXHhhMF0qJC8uZXhlYyhhKVsxXX1mdW5jdGlvbiB5KGEsYil7cmV0dXJuLTEhPWEudG9Mb3dlckNhc2UoKS5pbmRleE9mKGIudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gYWIoYSxiKXtyZXR1cm4gYTxiPy0xOmE+Yj8xOjB9O3ZhciB6O2E6e3ZhciBiYj10Lm5hdmlnYXRvcjtpZihiYil7dmFyIGNiPWJiLnVzZXJBZ2VudDtpZihjYil7ej1jYjticmVhayBhfX16PVwiXCJ9ZnVuY3Rpb24gQShhKXtyZXR1cm4tMSE9ei5pbmRleE9mKGEpfTtmdW5jdGlvbiBkYigpe3JldHVybiBBKFwiU2FmYXJpXCIpJiYhKGViKCl8fEEoXCJDb2FzdFwiKXx8QShcIk9wZXJhXCIpfHxBKFwiRWRnZVwiKXx8QShcIkVkZy9cIil8fEEoXCJPUFJcIil8fEEoXCJGaXJlZm94XCIpfHxBKFwiRnhpT1NcIil8fEEoXCJTaWxrXCIpfHxBKFwiQW5kcm9pZFwiKSl9ZnVuY3Rpb24gZWIoKXtyZXR1cm4oQShcIkNocm9tZVwiKXx8QShcIkNyaU9TXCIpKSYmIUEoXCJFZGdlXCIpfTtmdW5jdGlvbiBmYihhKXt2YXIgYj1OdW1iZXIoYSk7cmV0dXJuIDA9PWImJi9eW1xcc1xceGEwXSokLy50ZXN0KGEpP05hTjpifWZ1bmN0aW9uIGdiKCl7cmV0dXJuXCJvcGFjaXR5XCIucmVwbGFjZSgvXFwtKFthLXpdKS9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIGhiKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvKFtBLVpdKS9nLFwiLSQxXCIpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gaWIoYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xcc10rKShbYS16XSkvZyxmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMrZC50b1VwcGVyQ2FzZSgpfSl9O3ZhciBqYj0wLGtiPTA7ZnVuY3Rpb24gbGIoKXt0aGlzLmE9W119bGIucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEubGVuZ3RofTtmdW5jdGlvbiBtYihhLGIpe2Zvcig7MTI3PGI7KWEuYS5wdXNoKGImMTI3fDEyOCksYj4+Pj03O2EuYS5wdXNoKGIpfWZ1bmN0aW9uIG5iKGEsYil7YS5hLnB1c2goYj4+PjAmMjU1KTthLmEucHVzaChiPj4+OCYyNTUpO2EuYS5wdXNoKGI+Pj4xNiYyNTUpO2EuYS5wdXNoKGI+Pj4yNCYyNTUpfTtmdW5jdGlvbiBvYihhKXtvYltcIiBcIl0oYSk7cmV0dXJuIGF9b2JbXCIgXCJdPXFhO2Z1bmN0aW9uIHBiKGEsYil7dHJ5e3JldHVybiBvYihhW2JdKSwhMH1jYXRjaChjKXt9cmV0dXJuITF9ZnVuY3Rpb24gcWIoYSxiKXt2YXIgYz1yYjtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsYSk/Y1thXTpjW2FdPWIoYSl9O3ZhciBzYj1BKFwiT3BlcmFcIiksQj1BKFwiVHJpZGVudFwiKXx8QShcIk1TSUVcIiksdGI9QShcIkVkZ2VcIiksdWI9QShcIkdlY2tvXCIpJiYhKHkoeixcIldlYktpdFwiKSYmIUEoXCJFZGdlXCIpKSYmIShBKFwiVHJpZGVudFwiKXx8QShcIk1TSUVcIikpJiYhQShcIkVkZ2VcIiksdmI9eSh6LFwiV2ViS2l0XCIpJiYhQShcIkVkZ2VcIiksd2I9dmImJkEoXCJNb2JpbGVcIik7ZnVuY3Rpb24geGIoKXt2YXIgYT10LmRvY3VtZW50O3JldHVybiBhP2EuZG9jdW1lbnRNb2RlOnZvaWQgMH12YXIgeWI7YTp7dmFyIHpiPVwiXCIsQWI9ZnVuY3Rpb24oKXt2YXIgYT16O2lmKHViKXJldHVybi9ydjooW15cXCk7XSspKFxcKXw7KS8uZXhlYyhhKTtpZih0YilyZXR1cm4vRWRnZVxcLyhbXFxkXFwuXSspLy5leGVjKGEpO2lmKEIpcmV0dXJuL1xcYig/Ok1TSUV8cnYpWzogXShbXlxcKTtdKykoXFwpfDspLy5leGVjKGEpO2lmKHZiKXJldHVybi9XZWJLaXRcXC8oXFxTKykvLmV4ZWMoYSk7aWYoc2IpcmV0dXJuLyg/OlZlcnNpb24pWyBcXC9dPyhcXFMrKS8uZXhlYyhhKX0oKTtBYiYmKHpiPUFiP0FiWzFdOlwiXCIpO2lmKEIpe3ZhciBCYj14YigpO2lmKG51bGwhPUJiJiZCYj5wYXJzZUZsb2F0KHpiKSl7eWI9U3RyaW5nKEJiKTticmVhayBhfX15Yj16Yn12YXIgQ2I9eWIscmI9e307ZnVuY3Rpb24gRGIoYSl7cmV0dXJuIHFiKGEsZnVuY3Rpb24oKXtmb3IodmFyIGI9MCxjPSRhKFN0cmluZyhDYikpLnNwbGl0KFwiLlwiKSxkPSRhKFN0cmluZyhhKSkuc3BsaXQoXCIuXCIpLGU9TWF0aC5tYXgoYy5sZW5ndGgsZC5sZW5ndGgpLGY9MDswPT1iJiZmPGU7ZisrKXt2YXIgZz1jW2ZdfHxcIlwiLGg9ZFtmXXx8XCJcIjtkb3tnPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGcpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07aD0vKFxcZCopKFxcRCopKC4qKS8uZXhlYyhoKXx8W1wiXCIsXCJcIixcIlwiLFwiXCJdO2lmKDA9PWdbMF0ubGVuZ3RoJiYwPT1oWzBdLmxlbmd0aClicmVhaztiPWFiKDA9PWdbMV0ubGVuZ3RoPzA6cGFyc2VJbnQoZ1sxXSwxMCksMD09aFsxXS5sZW5ndGg/MDpwYXJzZUludChoWzFdLDEwKSl8fGFiKDA9PWdbMl0ubGVuZ3RoLDA9PWhbMl0ubGVuZ3RoKXx8YWIoZ1syXSxoWzJdKTtnPWdbM107aD1oWzNdfXdoaWxlKDA9PWIpfXJldHVybiAwPD1ifSl9dmFyIEViO2lmKHQuZG9jdW1lbnQmJkIpe3ZhciBGYj14YigpO0ViPUZiP0ZiOnBhcnNlSW50KENiLDEwKXx8dm9pZCAwfWVsc2UgRWI9dm9pZCAwO3ZhciBHYj1FYjt2YXIgSGI9e30sSWI9bnVsbDtmdW5jdGlvbiBKYigpe3RoaXMuYj1bXTt0aGlzLmE9bmV3IGxifWZ1bmN0aW9uIEtiKGEsYixjKXtpZihudWxsIT1jKXttYihhLmEsOCpiKTthPWEuYTt2YXIgZD1jO2M9MD5kO2Q9TWF0aC5hYnMoZCk7Yj1kPj4+MDtkPU1hdGguZmxvb3IoKGQtYikvNDI5NDk2NzI5Nik7ZD4+Pj0wO2MmJihkPX5kPj4+MCxiPSh+Yj4+PjApKzEsNDI5NDk2NzI5NTxiJiYoYj0wLGQrKyw0Mjk0OTY3Mjk1PGQmJihkPTApKSk7amI9YjtrYj1kO2M9amI7Zm9yKGI9a2I7MDxifHwxMjc8YzspYS5hLnB1c2goYyYxMjd8MTI4KSxjPShjPj4+N3xiPDwyNSk+Pj4wLGI+Pj49NzthLmEucHVzaChjKX19O2Z1bmN0aW9uIExiKCl7fXZhciBNYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LE5iPVtdO2Z1bmN0aW9uIE9iKGEpe3ZhciBiPWEuYythLmc7YS5hW2JdfHwoYS5iPWEuYVtiXT17fSl9ZnVuY3Rpb24gUGIoYSxiKXtpZihiPGEuYyl7Yis9YS5nO3ZhciBjPWEuYVtiXTtyZXR1cm4gYz09PU5iP2EuYVtiXT1bXTpjfWlmKGEuYilyZXR1cm4gYz1hLmJbYl0sYz09PU5iP2EuYltiXT1bXTpjfWZ1bmN0aW9uIFFiKGEsYil7YT1QYihhLGIpO3JldHVybiBudWxsPT1hPzA6YX1mdW5jdGlvbiBSYihhLGIsYyl7MCE9PWM/YjxhLmM/YS5hW2IrYS5nXT1jOihPYihhKSxhLmJbYl09Yyk6YjxhLmM/YS5hW2IrYS5nXT1udWxsOihPYihhKSxkZWxldGUgYS5iW2JdKTtyZXR1cm4gYX1MYi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLnRvU3RyaW5nKCl9O3ZhciBTYjtTYj1bXCJhdi5rZXlcIixcImpzXCIsXCIyMDIwMDgyOFwiXS5zbGljZSgtMSlbMF07ZnVuY3Rpb24gVGIoYSxiLGMsZCxlKXtpZihlKWM9YSsoXCImXCIrYitcIj1cIitjKTtlbHNle3ZhciBmPVwiJlwiK2IrXCI9XCIsZz1hLmluZGV4T2YoZik7MD5nP2M9YStmK2M6KGcrPWYubGVuZ3RoLGY9YS5pbmRleE9mKFwiJlwiLGcpLGM9MDw9Zj9hLnN1YnN0cmluZygwLGcpK2MrYS5zdWJzdHJpbmcoZik6YS5zdWJzdHJpbmcoMCxnKStjKX1yZXR1cm4gMkUzPGMubGVuZ3RoP3ZvaWQgMCE9PWQ/VGIoYSxiLGQsdm9pZCAwLGUpOmE6Y307dmFyIEM9ZG9jdW1lbnQsRD13aW5kb3c7dmFyIFViPUxhKGZ1bmN0aW9uKCl7dmFyIGE9ITE7dHJ5e3ZhciBiPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7YT0hMH19KTt0LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsbnVsbCxiKX1jYXRjaChjKXt9cmV0dXJuIGF9KTtmdW5jdGlvbiBWYihhKXtyZXR1cm4gYT9hLnBhc3NpdmUmJlViKCk/YTphLmNhcHR1cmV8fCExOiExfWZ1bmN0aW9uIFdiKGEsYixjLGQpe3JldHVybiBhLmFkZEV2ZW50TGlzdGVuZXI/KGEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsVmIoZCkpLCEwKTohMX1mdW5jdGlvbiBYYihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLFZiKHZvaWQgMCkpfTt2YXIgWWI9Qnx8c2J8fHZiO2Z1bmN0aW9uIEUoYSxiKXt0aGlzLng9dm9pZCAwIT09YT9hOjA7dGhpcy55PXZvaWQgMCE9PWI/YjowfUUucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3JldHVybiB0aGlzfTtFLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc307RS5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIEYoYSxiKXt0aGlzLndpZHRoPWE7dGhpcy5oZWlnaHQ9Yn1GLnByb3RvdHlwZS5hc3BlY3RSYXRpbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRoL3RoaXMuaGVpZ2h0fTtGLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguZmxvb3IodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5mbG9vcih0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtmdW5jdGlvbiBaYihhKXtyZXR1cm4gYT9uZXcgJGIoSChhKSk6d2F8fCh3YT1uZXcgJGIpfWZ1bmN0aW9uIGFjKGEsYixjKXt2YXIgZD1kb2N1bWVudDtjPWN8fGQ7YT1hJiZcIipcIiE9YT9TdHJpbmcoYSkudG9VcHBlckNhc2UoKTpcIlwiO2lmKGMucXVlcnlTZWxlY3RvckFsbCYmYy5xdWVyeVNlbGVjdG9yJiYoYXx8YikpcmV0dXJuIGMucXVlcnlTZWxlY3RvckFsbChhKyhiP1wiLlwiK2I6XCJcIikpO2lmKGImJmMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSl7Yz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYik7aWYoYSl7ZD17fTtmb3IodmFyIGU9MCxmPTAsZztnPWNbZl07ZisrKWE9PWcubm9kZU5hbWUmJihkW2UrK109Zyk7ZC5sZW5ndGg9ZTtyZXR1cm4gZH1yZXR1cm4gY31jPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYXx8XCIqXCIpO2lmKGIpe2Q9e307Zm9yKGY9ZT0wO2c9Y1tmXTtmKyspYT1nLmNsYXNzTmFtZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnNwbGl0JiZ3KGEuc3BsaXQoL1xccysvKSxiKSYmKGRbZSsrXT1nKTtkLmxlbmd0aD1lO3JldHVybiBkfXJldHVybiBjfWZ1bmN0aW9uIGJjKGEpe3ZhciBiPWEuc2Nyb2xsaW5nRWxlbWVudD9hLnNjcm9sbGluZ0VsZW1lbnQ6dmJ8fFwiQ1NTMUNvbXBhdFwiIT1hLmNvbXBhdE1vZGU/YS5ib2R5fHxhLmRvY3VtZW50RWxlbWVudDphLmRvY3VtZW50RWxlbWVudDthPWEucGFyZW50V2luZG93fHxhLmRlZmF1bHRWaWV3O3JldHVybiBCJiZEYihcIjEwXCIpJiZhLnBhZ2VZT2Zmc2V0IT1iLnNjcm9sbFRvcD9uZXcgRShiLnNjcm9sbExlZnQsYi5zY3JvbGxUb3ApOm5ldyBFKGEucGFnZVhPZmZzZXR8fGIuc2Nyb2xsTGVmdCxhLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCl9ZnVuY3Rpb24gY2MoYSl7cmV0dXJuIGE/YS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXc6d2luZG93fWZ1bmN0aW9uIGRjKGEsYil7aWYoIWF8fCFiKXJldHVybiExO2lmKGEuY29udGFpbnMmJjE9PWIubm9kZVR5cGUpcmV0dXJuIGE9PWJ8fGEuY29udGFpbnMoYik7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pcmV0dXJuIGE9PWJ8fCEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpO2Zvcig7YiYmYSE9YjspYj1iLnBhcmVudE5vZGU7cmV0dXJuIGI9PWF9ZnVuY3Rpb24gSChhKXtyZXR1cm4gOT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudHx8YS5kb2N1bWVudH1mdW5jdGlvbiBlYyhhKXt0cnl7cmV0dXJuIGEuY29udGVudFdpbmRvd3x8KGEuY29udGVudERvY3VtZW50P2NjKGEuY29udGVudERvY3VtZW50KTpudWxsKX1jYXRjaChiKXt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZmMoYSxiKXthJiYoYT1hLnBhcmVudE5vZGUpO2Zvcih2YXIgYz0wO2E7KXtpZihiKGEpKXJldHVybiBhO2E9YS5wYXJlbnROb2RlO2MrK31yZXR1cm4gbnVsbH1mdW5jdGlvbiAkYihhKXt0aGlzLmE9YXx8dC5kb2N1bWVudHx8ZG9jdW1lbnR9O2Z1bmN0aW9uIGdjKCl7cmV0dXJuIEEoXCJpUGFkXCIpfHxBKFwiQW5kcm9pZFwiKSYmIUEoXCJNb2JpbGVcIil8fEEoXCJTaWxrXCIpfTt2YXIgaGM9L14oPzooW146Lz8jLl0rKTopPyg/OlxcL1xcLyg/OihbXlxcXFwvPyNdKilAKT8oW15cXFxcLz8jXSo/KSg/OjooWzAtOV0rKSk/KD89W1xcXFwvPyNdfCQpKT8oW14/I10rKT8oPzpcXD8oW14jXSopKT8oPzojKFtcXHNcXFNdKikpPyQvO2Z1bmN0aW9uIGljKGEsYil7aWYoYSl7YT1hLnNwbGl0KFwiJlwiKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXS5pbmRleE9mKFwiPVwiKSxlPW51bGw7aWYoMDw9ZCl7dmFyIGY9YVtjXS5zdWJzdHJpbmcoMCxkKTtlPWFbY10uc3Vic3RyaW5nKGQrMSl9ZWxzZSBmPWFbY107YihmLGU/ZGVjb2RlVVJJQ29tcG9uZW50KGUucmVwbGFjZSgvXFwrL2csXCIgXCIpKTpcIlwiKX19fTtmdW5jdGlvbiBqYyhhKXt0cnl7cmV0dXJuISFhJiZudWxsIT1hLmxvY2F0aW9uLmhyZWYmJnBiKGEsXCJmb29cIil9Y2F0Y2goYil7cmV0dXJuITF9fWZ1bmN0aW9uIGtjKGEsYil7aWYoYSlmb3IodmFyIGMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmYi5jYWxsKHZvaWQgMCxhW2NdLGMsYSl9ZnVuY3Rpb24gbGMoKXt2YXIgYT1tYztpZighYSlyZXR1cm5cIlwiO3ZhciBiPS8uKlsmIz9dZ29vZ2xlX2RlYnVnKD1bXiZdKik/KCYuKik/JC87dHJ5e3ZhciBjPWIuZXhlYyhkZWNvZGVVUklDb21wb25lbnQoYSkpO2lmKGMpcmV0dXJuIGNbMV0mJjE8Y1sxXS5sZW5ndGg/Y1sxXS5zdWJzdHJpbmcoMSk6XCJ0cnVlXCJ9Y2F0Y2goZCl7fXJldHVyblwiXCJ9O2Z1bmN0aW9uIG5jKCl7dGhpcy5BPXRoaXMuQTt0aGlzLlk9dGhpcy5ZfW5jLnByb3RvdHlwZS5BPSExO25jLnByb3RvdHlwZS5uYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkF9O25jLnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7dGhpcy5BfHwodGhpcy5BPSEwLHRoaXMuaWEoKSl9O25jLnByb3RvdHlwZS5pYT1mdW5jdGlvbigpe2lmKHRoaXMuWSlmb3IoO3RoaXMuWS5sZW5ndGg7KXRoaXMuWS5zaGlmdCgpKCl9O2Z1bmN0aW9uIEkoYSxiLGMsZCl7dGhpcy50b3A9YTt0aGlzLnJpZ2h0PWI7dGhpcy5ib3R0b209Yzt0aGlzLmxlZnQ9ZH1mdW5jdGlvbiBvYyhhKXtyZXR1cm4gYS5yaWdodC1hLmxlZnR9ZnVuY3Rpb24gcGMoYSl7cmV0dXJuIGEuYm90dG9tLWEudG9wfWZ1bmN0aW9uIHFjKGEpe3JldHVybiBuZXcgSShhLnRvcCxhLnJpZ2h0LGEuYm90dG9tLGEubGVmdCl9SS5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmNlaWwodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5jZWlsKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5jZWlsKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O0kucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmZsb29yKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguZmxvb3IodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O0kucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5yb3VuZCh0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLnJvdW5kKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGgucm91bmQodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLnJvdW5kKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIHJjKGEsYixjKXtiIGluc3RhbmNlb2YgRT8oYS5sZWZ0Kz1iLngsYS5yaWdodCs9Yi54LGEudG9wKz1iLnksYS5ib3R0b20rPWIueSk6KGEubGVmdCs9YixhLnJpZ2h0Kz1iLFwibnVtYmVyXCI9PT10eXBlb2YgYyYmKGEudG9wKz1jLGEuYm90dG9tKz1jKSk7cmV0dXJuIGF9O2Z1bmN0aW9uIHNjKGEsYixjKXthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0c3x8KGEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzPVtdKTt2YXIgZD1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7YyYmKGQucmVmZXJyZXJQb2xpY3k9XCJuby1yZWZlcnJlclwiKTtkLnNyYz1iO2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzLnB1c2goZCl9ZnVuY3Rpb24gdWMoYSl7aWYodmMoKSlzYyh3aW5kb3csYSwhMCk7ZWxzZXt2YXIgYj10LmRvY3VtZW50O2lmKGIuYm9keSl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChcImdvb2ctc3JjbGVzcy1pZnJhbWVcIik7aWYoIWMpe2M9KG5ldyAkYihiKSkuYTt2YXIgZD1cIklGUkFNRVwiO1wiYXBwbGljYXRpb24veGh0bWwreG1sXCI9PT1jLmNvbnRlbnRUeXBlJiYoZD1kLnRvTG93ZXJDYXNlKCkpO2M9Yy5jcmVhdGVFbGVtZW50KGQpO2Muc3R5bGUuZGlzcGxheT1cIm5vbmVcIjtjLmlkPVwiZ29vZy1zcmNsZXNzLWlmcmFtZVwiO2IuYm9keS5hcHBlbmRDaGlsZChjKX1iPWN9ZWxzZSBiPW51bGw7YiYmYi5jb250ZW50V2luZG93JiZzYyhiLmNvbnRlbnRXaW5kb3csYSwhMCl9fXZhciB2Yz1MYShmdW5jdGlvbigpe3JldHVyblwicmVmZXJyZXJQb2xpY3lcImluIHQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKX0pO3ZhciB3Yz17fTtmdW5jdGlvbiB4Yygpe31mdW5jdGlvbiB5YyhhLGIpe2lmKGIhPT13Yyl0aHJvdyBFcnJvcihcIkJhZCBzZWNyZXRcIik7dGhpcy5hPWF9cih5Yyx4Yyk7eWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYX07bmV3IHljKFwiYWJvdXQ6YmxhbmtcIix3Yyk7bmV3IHljKFwiYWJvdXQ6aW52YWxpZCN6VFN6XCIsd2MpO3ZhciB6Yz17fTtmdW5jdGlvbiBBYyhhKXt0cnl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYil7cmV0dXJue2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfX19ZnVuY3Rpb24gQmMoYSxiKXt2YXIgYz1uZXcgRSgwLDApLGQ9Y2MoSChhKSk7aWYoIXBiKGQsXCJwYXJlbnRcIikpcmV0dXJuIGM7ZG97aWYoZD09Yil7dmFyIGU9YSxmPUgoZSk7dmFyIGc9bmV3IEUoMCwwKTt2YXIgaD1mP0goZik6ZG9jdW1lbnQ7aD0hQnx8OTw9TnVtYmVyKEdiKXx8XCJDU1MxQ29tcGF0XCI9PVpiKGgpLmEuY29tcGF0TW9kZT9oLmRvY3VtZW50RWxlbWVudDpoLmJvZHk7ZSE9aCYmKGU9QWMoZSksZj1iYyhaYihmKS5hKSxnLng9ZS5sZWZ0K2YueCxnLnk9ZS50b3ArZi55KX1lbHNlIGc9QWMoYSksZz1uZXcgRShnLmxlZnQsZy50b3ApO2MueCs9Zy54O2MueSs9Zy55fXdoaWxlKGQmJmQhPWImJmQhPWQucGFyZW50JiYoYT1kLmZyYW1lRWxlbWVudCkmJihkPWQucGFyZW50KSk7cmV0dXJuIGN9O3ZhciBDYz0hIXdpbmRvdy5nb29nbGVfYXN5bmNfaWZyYW1lX2lkLERjPUNjJiZ3aW5kb3cucGFyZW50fHx3aW5kb3c7ZnVuY3Rpb24gRWMoKXtpZihDYyYmIWpjKERjKSl7dmFyIGE9XCIuXCIrQy5kb21haW47dHJ5e2Zvcig7MjxhLnNwbGl0KFwiLlwiKS5sZW5ndGgmJiFqYyhEYyk7KUMuZG9tYWluPWE9YS5zdWJzdHIoYS5pbmRleE9mKFwiLlwiKSsxKSxEYz13aW5kb3cucGFyZW50fWNhdGNoKGIpe31qYyhEYyl8fChEYz13aW5kb3cpfXJldHVybiBEY307ZnVuY3Rpb24gRmMoYSxiLGMpe3RyeXthJiYoYj1iLnRvcCk7dmFyIGQ9dm9pZCAwO3ZhciBlPWI7Yz12b2lkIDA9PT1jPyExOmM7YSYmbnVsbCE9PWUmJmUhPWUudG9wJiYoZT1lLnRvcCk7dHJ5e2lmKHZvaWQgMD09PWM/MDpjKXZhciBmPShuZXcgRihlLmlubmVyV2lkdGgsZS5pbm5lckhlaWdodCkpLnJvdW5kKCk7ZWxzZXt2YXIgZz0oZXx8d2luZG93KS5kb2N1bWVudCxoPVwiQ1NTMUNvbXBhdFwiPT1nLmNvbXBhdE1vZGU/Zy5kb2N1bWVudEVsZW1lbnQ6Zy5ib2R5O2Y9KG5ldyBGKGguY2xpZW50V2lkdGgsaC5jbGllbnRIZWlnaHQpKS5yb3VuZCgpfWQ9Zn1jYXRjaChuKXtkPW5ldyBGKC0xMjI0NTkzMywtMTIyNDU5MzMpfWE9ZDt2YXIgbT1iYyhaYihiLmRvY3VtZW50KS5hKTtpZigtMTIyNDU5MzM9PWEud2lkdGgpe3ZhciBrPWEud2lkdGg7dmFyIHA9bmV3IEkoayxrLGssayl9ZWxzZSBwPW5ldyBJKG0ueSxtLngrYS53aWR0aCxtLnkrYS5oZWlnaHQsbS54KTtyZXR1cm4gcH1jYXRjaChuKXtyZXR1cm4gbmV3IEkoLTEyMjQ1OTMzLC0xMjI0NTkzMywtMTIyNDU5MzMsLTEyMjQ1OTMzKX19O3ZhciBHYz17dmI6XCJ0cz0wXCIsdWI6XCJvcHA9MVwiLE5iOlwiYWRmPTFcIn0sSGM9e05PTkU6MCxNYjoxfTtmdW5jdGlvbiBJYygpe3RoaXMuRD0wO3RoaXMuYz0hMTt0aGlzLmI9LTE7dGhpcy5hPSExO3RoaXMuZz0wfUljLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hPy4zPD10aGlzLkQ6LjU8PXRoaXMuRH07dmFyIEo9e0xiOjAsT2I6MX0sSmM9ezY2ODEyMzcyODowLDY2ODEyMzcyOToxfSxLYz17Tk9ORTowLFViOjEsUGI6Mn0sTGM9ezQ4MDU5Njc4NDowLDQ4MDU5Njc4NToxLDIxMDYzMzU1OjJ9O2Z1bmN0aW9uIE1jKCl7dGhpcy5hPW51bGw7dGhpcy5nPSExO3RoaXMuYz1udWxsfWZ1bmN0aW9uIEsoYSl7YS5nPSEwO3JldHVybiBhfWZ1bmN0aW9uIE5jKGEsYil7YS5jJiZ2KGIsZnVuY3Rpb24oYyl7Yz1hLmNbY107dm9pZCAwIT09YyYmYS5iKGMpfSl9ZnVuY3Rpb24gT2MoYSl7TWMuY2FsbCh0aGlzKTt0aGlzLmg9YX1yKE9jLE1jKTtPYy5wcm90b3R5cGUuYj1mdW5jdGlvbihhKXt2YXIgYjtpZighKGI9bnVsbCE9PXRoaXMuYSkpe2E6e2I9dGhpcy5oO2ZvcihjIGluIGIpaWYoYltjXT09YSl7dmFyIGM9ITA7YnJlYWsgYX1jPSExfWI9IWN9Ynx8KHRoaXMuYT1hKX07ZnVuY3Rpb24gUGMoKXtNYy5jYWxsKHRoaXMpfXIoUGMsTWMpO1BjLnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEpe251bGw9PT10aGlzLmEmJlwibnVtYmVyXCI9PT10eXBlb2YgYSYmKHRoaXMuYT1hKX07ZnVuY3Rpb24gUWMoKXt0aGlzLmE9e307dGhpcy5iPXt9fWZ1bmN0aW9uIEwoYSxiLGMpe2EuYVtiXXx8KGEuYVtiXT1uZXcgT2MoYykpO3JldHVybiBhLmFbYl19ZnVuY3Rpb24gTShhLGIpe3ZhciBjPWEuYjtpZihudWxsIT09YyYmYiBpbiBjKXJldHVybiBhLmJbYl07aWYoYT1hLmFbYl0pcmV0dXJuIGEuYX1mdW5jdGlvbiBSYyhhKXt2YXIgYj17fSxjPU9hKGEuYSxmdW5jdGlvbihkKXtyZXR1cm4gZC5nfSk7TmEoYyxmdW5jdGlvbihkLGUpe2Q9dm9pZCAwIT09YS5iW2VdP1N0cmluZyhhLmJbZV0pOmQuZyYmbnVsbCE9PWQuYT9TdHJpbmcoZC5hKTpcIlwiOzA8ZC5sZW5ndGgmJihiW2VdPWQpfSxhKTtyZXR1cm4gYn1mdW5jdGlvbiBTYyhhLGIpe2I9Yi5zcGxpdChcIiZcIik7Zm9yKHZhciBjPWIubGVuZ3RoLTE7MDw9YztjLS0pe3ZhciBkPWJbY10uc3BsaXQoXCI9XCIpLGU9ZFswXTtkPTE8ZC5sZW5ndGg/cGFyc2VJbnQoZFsxXSwxMCk6MTtpc05hTihkKXx8KGU9YS5hW2VdKSYmZS5iKGQpfXJldHVybiBiLmpvaW4oXCImXCIpfWZ1bmN0aW9uIFRjKGEsYil7dihUYShhLmEpLGZ1bmN0aW9uKGMpe3JldHVybiBOYyhjLGIpfSl9ZnVuY3Rpb24gVWMoYSxiKXtiJiZcInN0cmluZ1wiPT09dHlwZW9mIGImJihiPWIubWF0Y2goL1smOz9dZWlkPShbXiY7XSspLykpJiYyPT09Yi5sZW5ndGgmJihiPWRlY29kZVVSSUNvbXBvbmVudChiWzFdKS5zcGxpdChcIixcIiksYj16YShiLGZ1bmN0aW9uKGMpe3JldHVybiBOdW1iZXIoYyl9KSxUYyhhLGIpKX07ZnVuY3Rpb24gVmMoYSl7TChhLFwib2RcIixIYyk7SyhMKGEsXCJvcGFjXCIsSikpO0soTChhLFwic2Jlb3NcIixKKSk7SyhMKGEsXCJwcmZcIixKKSk7SyhMKGEsXCJtd3RcIixKKSk7TChhLFwiaW9nZW9cIixKKX07dmFyIFdjPSFCJiYhZGIoKTtmdW5jdGlvbiBYYyhhLGIpe2lmKC8tW2Etel0vLnRlc3QoYikpcmV0dXJuIG51bGw7aWYoV2MmJmEuZGF0YXNldCl7aWYoISghQShcIkFuZHJvaWRcIil8fGViKCl8fEEoXCJGaXJlZm94XCIpfHxBKFwiRnhpT1NcIil8fEEoXCJPcGVyYVwiKXx8QShcIlNpbGtcIil8fGIgaW4gYS5kYXRhc2V0KSlyZXR1cm4gbnVsbDthPWEuZGF0YXNldFtiXTtyZXR1cm4gdm9pZCAwPT09YT9udWxsOmF9cmV0dXJuIGEuZ2V0QXR0cmlidXRlKFwiZGF0YS1cIitoYihiKSl9ZnVuY3Rpb24gWWMoYSxiKXtyZXR1cm4vLVthLXpdLy50ZXN0KGIpPyExOldjJiZhLmRhdGFzZXQ/YiBpbiBhLmRhdGFzZXQ6YS5oYXNBdHRyaWJ1dGU/YS5oYXNBdHRyaWJ1dGUoXCJkYXRhLVwiK2hiKGIpKTohIWEuZ2V0QXR0cmlidXRlKFwiZGF0YS1cIitoYihiKSl9O2Z1bmN0aW9uIFpjKCl7dGhpcy5iPXRoaXMuYT1udWxsO3RoaXMuZz10aGlzLmg9MDt0aGlzLmM9XCJub1wiO3RoaXMuaT0hMX1mdW5jdGlvbiAkYyhhKXtpZighYSlyZXR1cm4hMTt0cnl7dmFyIGI9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gYiYmMzA8PWIuaGVpZ2h0JiYzMDw9Yi53aWR0aH1jYXRjaChjKXtyZXR1cm4hMX19ZnVuY3Rpb24gYWQoYSl7cmV0dXJuIHlhKGEsZnVuY3Rpb24oYil7cmV0dXJuICRjKGIpfSl9ZnVuY3Rpb24gYmQoYSxiKXtiPXZvaWQgMD09PWI/ITA6YjtyZXR1cm4geWEoYSxmdW5jdGlvbihjKXtyZXR1cm5cIlNDUklQVFwiIT1jLm5vZGVOYW1lJiYoIWJ8fFwiRk9OVFwiIT1jLm5vZGVOYW1lKX0pfWZ1bmN0aW9uIGNkKGEsYil7Yj12b2lkIDA9PT1iPyEwOmI7aWYoIWEpcmV0dXJuIG51bGw7aWYoIWEuY2hpbGRyZW4pcmV0dXJuIGE7Zm9yKHZhciBjPWJkKEVhKGEuY2hpbGRyZW4pLGIpO2MubGVuZ3RoOyl7dmFyIGQ9YWQoYyk7aWYoMT09ZC5sZW5ndGgpcmV0dXJuIGRbMF07aWYoMTxkLmxlbmd0aClicmVhaztjPUthKGMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hpbGRyZW4/YmQoRWEoZS5jaGlsZHJlbikpOltdfSxiKX1yZXR1cm4gYX1mdW5jdGlvbiBkZChhLGIpe3JldHVybiBKYSh6YShiLGZ1bmN0aW9uKGMpe3ZhciBkPWF8fGRvY3VtZW50O3JldHVybiBFYShkLnF1ZXJ5U2VsZWN0b3JBbGwmJmQucXVlcnlTZWxlY3Rvcj9kLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIrYyk6YWMoXCIqXCIsYyxhKSl9KSl9ZnVuY3Rpb24gZWQoYSl7dmFyIGI9ITA7Yj12b2lkIDA9PT1iPyExOmI7dmFyIGM9dm9pZCAwPT09Yz8hMTpjO2EuYj1hLmE7YS5jPVwibXVlXCI7aWYoISRjKGEuYSkpe3ZhciBkPWNkKGEuYSksZT1jZChhLmEsITEpOyRjKGUpJiZlIT1kJiYoYS5pPSEwKTskYyhkKT8oYS5iPWQsYS5jPVwiaWVcIik6YiYmKGN8fEQhPT1ELnRvcCkmJihiPWRkKEQuZG9jdW1lbnQuYm9keSxbXCJHb29nbGVBY3RpdmVWaWV3SW5uZXJDb250YWluZXJcIl0pLDE9PWIubGVuZ3RoJiYoYS5iPWJbMF0sYS5jPVwiY2VcIikpfX07ZnVuY3Rpb24gZmQoYSxiKXt0aGlzLmI9KHZvaWQgMD09PWE/MDphKXx8MDt0aGlzLmE9KHZvaWQgMD09PWI/XCJcIjpiKXx8XCJcIn1mdW5jdGlvbiBnZChhKXtyZXR1cm4hIWEuYnx8ISFhLmF9ZmQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYisodGhpcy5hP1wiLVwiOlwiXCIpK3RoaXMuYX07ZnVuY3Rpb24gTigpe31OLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O04ucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gMH07Ti5wcm90b3R5cGUuZz1mdW5jdGlvbigpe3JldHVybiAwfTtOLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O2Z1bmN0aW9uIGhkKCl7aWYoIWlkKCkpdGhyb3cgRXJyb3IoKTt9cihoZCxOKTtmdW5jdGlvbiBpZCgpe3JldHVybiEoIUR8fCFELnBlcmZvcm1hbmNlKX1oZC5wcm90b3R5cGUuYT1mdW5jdGlvbigpe3JldHVybiBpZCgpJiZELnBlcmZvcm1hbmNlLm5vdz9ELnBlcmZvcm1hbmNlLm5vdygpOk4ucHJvdG90eXBlLmEuY2FsbCh0aGlzKX07aGQucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXtyZXR1cm4gaWQoKSYmRC5wZXJmb3JtYW5jZS5tZW1vcnk/RC5wZXJmb3JtYW5jZS5tZW1vcnkudG90YWxKU0hlYXBTaXplfHwwOk4ucHJvdG90eXBlLmMuY2FsbCh0aGlzKX07aGQucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXtyZXR1cm4gaWQoKSYmRC5wZXJmb3JtYW5jZS5tZW1vcnk/RC5wZXJmb3JtYW5jZS5tZW1vcnkudXNlZEpTSGVhcFNpemV8fDA6Ti5wcm90b3R5cGUuZy5jYWxsKHRoaXMpfTtoZC5wcm90b3R5cGUuYj1mdW5jdGlvbigpe3JldHVybiBpZCgpJiZELnBlcmZvcm1hbmNlLm1lbW9yeT9ELnBlcmZvcm1hbmNlLm1lbW9yeS5qc0hlYXBTaXplTGltaXR8fDA6Ti5wcm90b3R5cGUuYi5jYWxsKHRoaXMpfTtmdW5jdGlvbiBqZCgpe3JldHVybnt2aXNpYmxlOjEsaGlkZGVuOjIscHJlcmVuZGVyOjMscHJldmlldzo0LHVubG9hZGVkOjV9W0MudmlzaWJpbGl0eVN0YXRlfHxDLndlYmtpdFZpc2liaWxpdHlTdGF0ZXx8Qy5tb3pWaXNpYmlsaXR5U3RhdGV8fFwiXCJdfHwwfTtmdW5jdGlvbiBrZCgpe31rZC5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1qZCgpfTt2YXIgbGQ9L15odHRwcz86XFwvXFwvKFxcd3wtKStcXC5jZG5cXC5hbXBwcm9qZWN0XFwuKG5ldHxvcmcpKFxcP3xcXC98JCkvO2Z1bmN0aW9uIG1kKCl7dmFyIGE9dCxiPVtdLGM9bnVsbDtkb3t2YXIgZD1hO2lmKGpjKGQpKXt2YXIgZT1kLmxvY2F0aW9uLmhyZWY7Yz1kLmRvY3VtZW50JiZkLmRvY3VtZW50LnJlZmVycmVyfHxudWxsfWVsc2UgZT1jLGM9bnVsbDtiLnB1c2gobmV3IG5kKGV8fFwiXCIsZCkpO3RyeXthPWQucGFyZW50fWNhdGNoKGYpe2E9bnVsbH19d2hpbGUoYSYmZCE9YSk7ZD0wO2ZvcihhPWIubGVuZ3RoLTE7ZDw9YTsrK2QpYltkXS5kZXB0aD1hLWQ7ZD10O2lmKGQubG9jYXRpb24mJmQubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zJiZkLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGg9PWIubGVuZ3RoLTEpZm9yKGE9MTthPGIubGVuZ3RoOysrYSllPWJbYV0sZS51cmx8fChlLnVybD1kLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2luc1thLTFdfHxcIlwiLGUuaWI9ITApO3JldHVybiBifWZ1bmN0aW9uIG9kKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9ZnVuY3Rpb24gbmQoYSxiLGMpe3RoaXMudXJsPWE7dGhpcy5vPWI7dGhpcy5pYj0hIWM7dGhpcy5kZXB0aD1udWxsfTtmdW5jdGlvbiBwZCgpe3RoaXMuYz1cIiZcIjt0aGlzLmI9e307dGhpcy5nPTA7dGhpcy5hPVtdfWZ1bmN0aW9uIHFkKGEsYil7dmFyIGM9e307Y1thXT1iO3JldHVybltjXX1mdW5jdGlvbiByZChhLGIsYyxkLGUpe3ZhciBmPVtdO2tjKGEsZnVuY3Rpb24oZyxoKXsoZz1zZChnLGIsYyxkLGUpKSYmZi5wdXNoKGgrXCI9XCIrZyl9KTtyZXR1cm4gZi5qb2luKGIpfWZ1bmN0aW9uIHNkKGEsYixjLGQsZSl7aWYobnVsbD09YSlyZXR1cm5cIlwiO2I9Ynx8XCImXCI7Yz1jfHxcIiwkXCI7XCJzdHJpbmdcIj09dHlwZW9mIGMmJihjPWMuc3BsaXQoXCJcIikpO2lmKGEgaW5zdGFuY2VvZiBBcnJheSl7aWYoZD1kfHwwLGQ8Yy5sZW5ndGgpe2Zvcih2YXIgZj1bXSxnPTA7ZzxhLmxlbmd0aDtnKyspZi5wdXNoKHNkKGFbZ10sYixjLGQrMSxlKSk7cmV0dXJuIGYuam9pbihjW2RdKX19ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgYSlyZXR1cm4gZT1lfHwwLDI+ZT9lbmNvZGVVUklDb21wb25lbnQocmQoYSxiLGMsZCxlKzEpKTpcIi4uLlwiO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGEpKX1mdW5jdGlvbiB0ZChhLGIsYyl7Yj1iK1wiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbVwiK2M7dmFyIGQ9dWQoYSktYy5sZW5ndGg7aWYoMD5kKXJldHVyblwiXCI7YS5hLnNvcnQoZnVuY3Rpb24ocCxuKXtyZXR1cm4gcC1ufSk7Yz1udWxsO2Zvcih2YXIgZT1cIlwiLGY9MDtmPGEuYS5sZW5ndGg7ZisrKWZvcih2YXIgZz1hLmFbZl0saD1hLmJbZ10sbT0wO208aC5sZW5ndGg7bSsrKXtpZighZCl7Yz1udWxsPT1jP2c6YzticmVha312YXIgaz1yZChoW21dLGEuYyxcIiwkXCIpO2lmKGspe2s9ZStrO2lmKGQ+PWsubGVuZ3RoKXtkLT1rLmxlbmd0aDtiKz1rO2U9YS5jO2JyZWFrfWM9bnVsbD09Yz9nOmN9fWE9XCJcIjtudWxsIT1jJiYoYT1lK1widHJuPVwiK2MpO3JldHVybiBiK2F9ZnVuY3Rpb24gdWQoYSl7dmFyIGI9MSxjO2ZvcihjIGluIGEuYiliPWMubGVuZ3RoPmI/Yy5sZW5ndGg6YjtyZXR1cm4gMzk5Ny1iLWEuYy5sZW5ndGgtMX07ZnVuY3Rpb24gdmQoKXt0aGlzLmI9bmV3IGtkO3RoaXMuYT1pZCgpP25ldyBoZDpuZXcgTn12ZC5wcm90b3R5cGUuc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRC5zZXRJbnRlcnZhbChhLGIpfTt2ZC5wcm90b3R5cGUuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbihhKXtELmNsZWFySW50ZXJ2YWwoYSl9O3ZkLnByb3RvdHlwZS5zZXRUaW1lb3V0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIEQuc2V0VGltZW91dChhLGIpfTt2ZC5wcm90b3R5cGUuY2xlYXJUaW1lb3V0PWZ1bmN0aW9uKGEpe0QuY2xlYXJUaW1lb3V0KGEpfTtmdW5jdGlvbiB3ZChhKXtPKCk7dmFyIGI9RWMoKXx8RDtzYyhiLGEsITEpfXUodmQpO2Z1bmN0aW9uIHhkKCl7fWZ1bmN0aW9uIE8oKXt2YXIgYT14ZC5mKCk7aWYoIWEuYSl7aWYoIUQpdGhyb3cgRXJyb3IoXCJDb250ZXh0IGhhcyBub3QgYmVlbiBzZXQgYW5kIHdpbmRvdyBpcyB1bmRlZmluZWQuXCIpO2EuYT12ZC5mKCl9cmV0dXJuIGEuYX11KHhkKTtmdW5jdGlvbiB5ZChhKXthfHwoYT1bXSk7dGhpcy5nPS0xO3RoaXMuYT1hO2E6e2lmKGE9dGhpcy5hLmxlbmd0aCl7LS1hO3ZhciBiPXRoaXMuYVthXTtpZighKG51bGw9PT1ifHxcIm9iamVjdFwiIT10eXBlb2YgYnx8QXJyYXkuaXNBcnJheShiKXx8TWImJmIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl7dGhpcy5jPWEtIC0xO3RoaXMuYj1iO2JyZWFrIGF9fXRoaXMuYz1OdW1iZXIuTUFYX1ZBTFVFfX11YSh5ZCxMYik7ZnVuY3Rpb24gemQoYSl7dGhpcy5nPWE7dGhpcy5hPS0xO3RoaXMuYj10aGlzLmM9MH1mdW5jdGlvbiBBZChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtmb3IodmFyIGQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDsrK2UpZFtlXT1hcmd1bWVudHNbZV07aWYoLTE8YS5hKXJldHVybiBiLmFwcGx5KG51bGwsaGEoZCkpO3RyeXtyZXR1cm4gYS5hPWEuZy5hLmEoKSxiLmFwcGx5KG51bGwsaGEoZCkpfWZpbmFsbHl7YS5jKz1hLmcuYS5hKCktYS5hLGEuYT0tMSxhLmIrPTF9fX07ZnVuY3Rpb24gQmQoYSxiKXt0aGlzLmI9YTt0aGlzLmM9Yjt0aGlzLmE9bmV3IHpkKGEpfTt2YXIgQ2Q9e1hiOjEsWmI6MixXYjozfSxEZCxFZD1uZXcgWGEoWWEsXCJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9vc2QuanNcIik7RGQ9RWQgaW5zdGFuY2VvZiBYYSYmRWQuY29uc3RydWN0b3I9PT1YYSYmRWQuYT09PVphP0VkLmI6XCJ0eXBlX2Vycm9yOkNvbnN0XCI7dmFyIEZkO2lmKHZvaWQgMD09PVdhKXt2YXIgR2Q9bnVsbCxIZD10LnRydXN0ZWRUeXBlcztpZihIZCYmSGQuY3JlYXRlUG9saWN5KXt0cnl7R2Q9SGQuY3JlYXRlUG9saWN5KFwiZ29vZyNodG1sXCIse2NyZWF0ZUhUTUw6dmEsY3JlYXRlU2NyaXB0OnZhLGNyZWF0ZVNjcmlwdFVSTDp2YX0pfWNhdGNoKGEpe3QuY29uc29sZSYmdC5jb25zb2xlLmVycm9yKGEubWVzc2FnZSl9V2E9R2R9ZWxzZSBXYT1HZH0oRmQ9V2EpJiZGZC5jcmVhdGVTY3JpcHRVUkwoRGQpO2Z1bmN0aW9uIFAoKXt0aGlzLmo9dm9pZCAwO3RoaXMubT0wO3RoaXMuYz1uZXcgZmQoMCxcIlwiKTt0aGlzLmI9MDt0aGlzLmw9LTE7dGhpcy5hPW5ldyBRYztLKEwodGhpcy5hLFwibXZcIixLYykpLmM9dm9pZCAwPT09TGM/bnVsbDpMYztMKHRoaXMuYSxcIm9taWRcIixKKTtLKEwodGhpcy5hLFwiZXBvaFwiLEopKTtLKEwodGhpcy5hLFwiZXBwaFwiLEopKTtLKEwodGhpcy5hLFwidW10XCIsSikpLmM9dm9pZCAwPT09SmM/bnVsbDpKYztLKEwodGhpcy5hLFwicGhlbFwiLEopKTtLKEwodGhpcy5hLFwicGhlbGxcIixKKSk7SyhMKHRoaXMuYSxcIm9zZWlkXCIsQ2QpKTt2YXIgYT10aGlzLmE7YS5hLnNsb2l8fChhLmEuc2xvaT1uZXcgUGMpO0soYS5hLnNsb2kpO0soTCh0aGlzLmEsXCJ4ZGlcIixKKSk7SyhMKHRoaXMuYSxcImFtcFwiLEopKTtLKEwodGhpcy5hLFwicHJmXCIsSikpO0soTCh0aGlzLmEsXCJndHhcIixKKSk7SyhMKHRoaXMuYSxcIm12cF9sdlwiLEopKTtLKEwodGhpcy5hLFwiZW9jbVwiLEopKTtLKEwodGhpcy5hLFwicnhsaXN0XCIsSikpO0soTCh0aGlzLmEsXCJ2Y21cIixKKSk7dGhpcy5nPW5ldyBCZChPKCksdGhpcy5hKTt0aGlzLmg9bnVsbDt0aGlzLmk9ITF9ZnVuY3Rpb24gSWQoYSxiKXtcInN0cmluZ1wiPT09dHlwZW9mIGImJjAhPWIubGVuZ3RoJiZTYyhhLmEsYil9dShQKTtmdW5jdGlvbiBKZCgpe3ZhciBhPVwiaHR0cHM6XCI7RCYmRC5sb2NhdGlvbiYmXCJodHRwOlwiPT09RC5sb2NhdGlvbi5wcm90b2NvbCYmKGE9XCJodHRwOlwiKTt0aGlzLmI9YTt0aGlzLmE9LjAxO3RoaXMuYz1NYXRoLnJhbmRvbSgpfWZ1bmN0aW9uIEtkKGEsYixjLGQsZSl7aWYoKGQ/YS5jOk1hdGgucmFuZG9tKCkpPChlfHxhLmEpKXRyeXtpZihjIGluc3RhbmNlb2YgcGQpdmFyIGY9YztlbHNlIGY9bmV3IHBkLGtjKGMsZnVuY3Rpb24oaCxtKXt2YXIgaz1mLHA9ay5nKys7aD1xZChtLGgpO2suYS5wdXNoKHApO2suYltwXT1ofSk7dmFyIGc9dGQoZixhLmIsXCIvcGFnZWFkL2dlbl8yMDQ/aWQ9XCIrYitcIiZcIik7ZyYmd2QoZyl9Y2F0Y2goaCl7fX07ZnVuY3Rpb24gTGQoYSxiLGMpe2M9dm9pZCAwPT09Yz97fTpjO3RoaXMuZXJyb3I9YTt0aGlzLmNvbnRleHQ9Yi5jb250ZXh0O3RoaXMubXNnPWIubWVzc2FnZXx8XCJcIjt0aGlzLmlkPWIuaWR8fFwianNlcnJvclwiO3RoaXMubWV0YT1jfTt2YXIgTWQ9bnVsbDtmdW5jdGlvbiBOZCgpe3ZhciBhPXQucGVyZm9ybWFuY2U7cmV0dXJuIGEmJmEubm93JiZhLnRpbWluZz9NYXRoLmZsb29yKGEubm93KCkrYS50aW1pbmcubmF2aWdhdGlvblN0YXJ0KTp0YSgpfWZ1bmN0aW9uIE9kKCl7dmFyIGE9dm9pZCAwPT09YT90OmE7cmV0dXJuKGE9YS5wZXJmb3JtYW5jZSkmJmEubm93P2Eubm93KCk6bnVsbH07ZnVuY3Rpb24gUGQoYSxiLGMpe3RoaXMubGFiZWw9YTt0aGlzLnR5cGU9Yjt0aGlzLnZhbHVlPWM7dGhpcy5kdXJhdGlvbj0wO3RoaXMudW5pcXVlSWQ9TWF0aC5yYW5kb20oKTt0aGlzLnNsb3RJZD12b2lkIDB9O3ZhciBRPXQucGVyZm9ybWFuY2UsUWQ9ISEoUSYmUS5tYXJrJiZRLm1lYXN1cmUmJlEuY2xlYXJNYXJrcyksUmQ9TGEoZnVuY3Rpb24oKXt2YXIgYTtpZihhPVFkKXt2YXIgYjtpZihudWxsPT09TWQpe01kPVwiXCI7dHJ5e2E9XCJcIjt0cnl7YT10LnRvcC5sb2NhdGlvbi5oYXNofWNhdGNoKGMpe2E9dC5sb2NhdGlvbi5oYXNofWEmJihNZD0oYj1hLm1hdGNoKC9cXGJkZWlkPShbXFxkLF0rKS8pKT9iWzFdOlwiXCIpfWNhdGNoKGMpe319Yj1NZDthPSEhYi5pbmRleE9mJiYwPD1iLmluZGV4T2YoXCIxMzM3XCIpfXJldHVybiBhfSk7ZnVuY3Rpb24gU2QoKXt2YXIgYT1FYygpO3RoaXMuYj1bXTt0aGlzLmM9YXx8dDt2YXIgYj1udWxsO2EmJihhLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWU9YS5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlfHxbXSx0aGlzLmI9YS5nb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlLGI9YS5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcpO3RoaXMuYT1SZCgpfHwobnVsbCE9Yj9iOjE+TWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gVGQoYSl7YSYmUSYmUmQoKSYmKFEuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX3N0YXJ0XCIpLFEuY2xlYXJNYXJrcyhcImdvb2dfXCIrYS5sYWJlbCtcIl9cIithLnVuaXF1ZUlkK1wiX2VuZFwiKSl9U2QucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuYSlyZXR1cm4gbnVsbDt2YXIgYz1PZCgpfHxOZCgpO2E9bmV3IFBkKGEsYixjKTtiPVwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfc3RhcnRcIjtRJiZSZCgpJiZRLm1hcmsoYik7cmV0dXJuIGF9O2Z1bmN0aW9uIFVkKCl7dmFyIGE9VmQ7dGhpcy5pPVdkO3RoaXMuaD1cImpzZXJyb3JcIjt0aGlzLmc9ITA7dGhpcy5iPW51bGw7dGhpcy5qPXRoaXMuYzt0aGlzLmE9dm9pZCAwPT09YT9udWxsOmF9ZnVuY3Rpb24gWGQoYSxiLGMpe3JldHVybiBBZChQLmYoKS5nLmEsZnVuY3Rpb24oKXt0cnl7aWYoYS5hJiZhLmEuYSl7dmFyIGQ9YS5hLnN0YXJ0KGIudG9TdHJpbmcoKSwzKTt2YXIgZT1jKCk7dmFyIGY9YS5hLGc9ZDtpZihmLmEmJlwibnVtYmVyXCI9PT10eXBlb2YgZy52YWx1ZSl7dmFyIGg9T2QoKXx8TmQoKTtnLmR1cmF0aW9uPWgtZy52YWx1ZTt2YXIgbT1cImdvb2dfXCIrZy5sYWJlbCtcIl9cIitnLnVuaXF1ZUlkK1wiX2VuZFwiO1EmJlJkKCkmJlEubWFyayhtKTshZi5hfHwyMDQ4PGYuYi5sZW5ndGh8fGYuYi5wdXNoKGcpfX1lbHNlIGU9YygpfWNhdGNoKGspe2Y9YS5nO3RyeXtUZChkKSxmPWEuaihiLG5ldyBZZChaZChrKSksdm9pZCAwLHZvaWQgMCl9Y2F0Y2gocCl7YS5jKDIxNyxwKX1pZighZil0aHJvdyBrO31yZXR1cm4gZX0pKCl9ZnVuY3Rpb24gJGQoYSxiKXt2YXIgYz1hZTtyZXR1cm4gQWQoUC5mKCkuZy5hLGZ1bmN0aW9uKGQpe2Zvcih2YXIgZT1bXSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoOysrZillW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gWGQoYyxhLGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodm9pZCAwLGUpfSl9KX1VZC5wcm90b3R5cGUuYz1mdW5jdGlvbihhLGIsYyxkLGUpe2U9ZXx8dGhpcy5oO3RyeXt2YXIgZj1uZXcgcGQ7Zi5hLnB1c2goMSk7Zi5iWzFdPXFkKFwiY29udGV4dFwiLGEpO2IuZXJyb3ImJmIubWV0YSYmYi5pZHx8KGI9bmV3IFlkKFpkKGIpKSk7aWYoYi5tc2cpe3ZhciBnPWIubXNnLnN1YnN0cmluZygwLDUxMik7Zi5hLnB1c2goMik7Zi5iWzJdPXFkKFwibXNnXCIsZyl9dmFyIGg9Yi5tZXRhfHx7fTtpZih0aGlzLmIpdHJ5e3RoaXMuYihoKX1jYXRjaCh0Yyl7fWlmKGQpdHJ5e2QoaCl9Y2F0Y2godGMpe31iPVtoXTtmLmEucHVzaCgzKTtmLmJbM109Yjt2YXIgbT1tZCgpLGs9bmV3IG5kKHQubG9jYXRpb24uaHJlZix0LCExKTtiPW51bGw7dmFyIHA9bS5sZW5ndGgtMTtmb3IoZD1wOzA8PWQ7LS1kKXt2YXIgbj1tW2RdOyFiJiZsZC50ZXN0KG4udXJsKSYmKGI9bik7aWYobi51cmwmJiFuLmliKXtrPW47YnJlYWt9fW49bnVsbDt2YXIgcT1tLmxlbmd0aCYmbVtwXS51cmw7MCE9ay5kZXB0aCYmcSYmKG49bVtwXSk7dmFyIEc9bmV3IG9kKGssbik7aWYoRy5iKXt2YXIgR2E9Ry5iLnVybHx8XCJcIjtmLmEucHVzaCg0KTtmLmJbNF09cWQoXCJ0b3BcIixHYSl9dmFyIFJhPXt1cmw6Ry5hLnVybHx8XCJcIn07aWYoRy5hLnVybCl7dmFyIFNhPUcuYS51cmwubWF0Y2goaGMpLGllPVNhWzFdLGplPVNhWzNdLGtlPVNhWzRdO209XCJcIjtpZSYmKG0rPWllK1wiOlwiKTtqZSYmKG0rPVwiLy9cIixtKz1qZSxrZSYmKG0rPVwiOlwiK2tlKSk7dmFyIGxlPW19ZWxzZSBsZT1cIlwiO1JhPVtSYSx7dXJsOmxlfV07Zi5hLnB1c2goNSk7Zi5iWzVdPVJhO0tkKHRoaXMuaSxlLGYsITEsYyl9Y2F0Y2godGMpe3RyeXtLZCh0aGlzLmksZSx7Y29udGV4dDpcImVjbXNlcnJcIixyY3R4OmEsbXNnOlpkKHRjKSx1cmw6RyYmRy5hLnVybH0sITEsYyl9Y2F0Y2goUmgpe319cmV0dXJuIHRoaXMuZ307ZnVuY3Rpb24gWmQoYSl7dmFyIGI9YS50b1N0cmluZygpO2EubmFtZSYmLTE9PWIuaW5kZXhPZihhLm5hbWUpJiYoYis9XCI6IFwiK2EubmFtZSk7YS5tZXNzYWdlJiYtMT09Yi5pbmRleE9mKGEubWVzc2FnZSkmJihiKz1cIjogXCIrYS5tZXNzYWdlKTtpZihhLnN0YWNrKXthPWEuc3RhY2s7dHJ5ey0xPT1hLmluZGV4T2YoYikmJihhPWIrXCJcXG5cIithKTtmb3IodmFyIGM7YSE9YzspYz1hLGE9YS5yZXBsYWNlKC8oKGh0dHBzPzpcXC8uLipcXC8pW15cXC86XSo6XFxkKyg/Oi58XFxuKSopXFwyLyxcIiQxXCIpO2I9YS5yZXBsYWNlKC9cXG4gKi9nLFwiXFxuXCIpfWNhdGNoKGQpe319cmV0dXJuIGJ9ZnVuY3Rpb24gWWQoYSl7TGQuY2FsbCh0aGlzLEVycm9yKGEpLHttZXNzYWdlOmF9KX1yKFlkLExkKTt2YXIgV2QsYWUsVmQ9bmV3IFNkO2Z1bmN0aW9uIGJlKCl7dmFyIGE9RWMoKTthJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5nb29nbGVfbWVhc3VyZV9qc190aW1pbmcmJiFhLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmKGE9VmQsYS5hPSExLGEuYiE9YS5jLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWUmJihSZCgpJiZ2KGEuYixUZCksYS5iLmxlbmd0aD0wKSl9KGZ1bmN0aW9uKCl7V2Q9bmV3IEpkO2FlPW5ldyBVZDt2YXIgYT1FYygpO2EmJmEuZG9jdW1lbnQmJihcImNvbXBsZXRlXCI9PWEuZG9jdW1lbnQucmVhZHlTdGF0ZT9iZSgpOlZkLmEmJldiKGEsXCJsb2FkXCIsZnVuY3Rpb24oKXtiZSgpfSkpfSkoKTtmdW5jdGlvbiBjZShhKXthZS5iPWZ1bmN0aW9uKGIpe3YoYSxmdW5jdGlvbihjKXtjKGIpfSl9fWZ1bmN0aW9uIGRlKGEsYil7cmV0dXJuIFhkKGFlLGEsYil9ZnVuY3Rpb24gUihhLGIpe3JldHVybiAkZChhLGIpfWZ1bmN0aW9uIGVlKGEsYil7S2QoV2QsYSxiLFwianNlcnJvclwiIT1hLHZvaWQgMCl9ZnVuY3Rpb24gZmUoYSxiLGMsZCl7YWUuYyhhLGIsYyxkKX07dmFyIGdlPURhdGUubm93KCksaGU9LTEsbWU9ITE7ZnVuY3Rpb24gUygpe3JldHVybiBEYXRlLm5vdygpLWdlfWZ1bmN0aW9uIG5lKCl7dmFyIGE9UC5mKCkuaixiPW1lP1MoKS1oZTotMTtpZig5NDcxOTA1NDI9PWEpcmV0dXJuIDEwMDtpZig3OTQ2MzA2OT09YSlyZXR1cm4gMjAwO2E9WzJFMyw0RTNdO3ZhciBjPVsyNTAsNTAwLDFFM107ZmUoNjM3LEVycm9yKCksLjAwMSk7dmFyIGQ9LTE7LTEhPWImJi0xPmImJihkPWIpO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpaWYoZDxhW2JdKXt2YXIgZT1jW2JdO2JyZWFrfXZvaWQgMD09PWUmJihlPWNbYS5sZW5ndGhdKTtyZXR1cm4gZX07ZnVuY3Rpb24gb2UoYSl7Zm9yKHZhciBiPTAsYz1hLGQ9MDthJiZhIT1hLnBhcmVudDspYT1hLnBhcmVudCxkKyssamMoYSkmJihjPWEsYj1kKTtyZXR1cm57bzpjLGxldmVsOmJ9fTt2YXIgUWE9e0tiOlwiYWRkRXZlbnRMaXN0ZW5lclwiLFFiOlwiZ2V0TWF4U2l6ZVwiLFJiOlwiZ2V0U2NyZWVuU2l6ZVwiLFNiOlwiZ2V0U3RhdGVcIixUYjpcImdldFZlcnNpb25cIixZYjpcInJlbW92ZUV2ZW50TGlzdGVuZXJcIixWYjpcImlzVmlld2FibGVcIn07ZnVuY3Rpb24gcGUoYSl7dmFyIGI9YSE9PWEudG9wLGM9YS50b3A9PT1vZShhKS5vLGQ9LTEsZT0wO2lmKGImJmMmJmEudG9wLm1yYWlkKXtkPTM7dmFyIGY9YS50b3AubXJhaWR9ZWxzZSBkPShmPWEubXJhaWQpP2I/Yz8yOjE6MDotMTtmJiYoZi5JU19HTUFfU0RLfHwoZT0yKSxQYShmdW5jdGlvbihnKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZltnXX0pfHwoZT0xKSk7cmV0dXJue0w6ZixyYTplLEdiOmR9fTtmdW5jdGlvbiBxZShhKXtyZXR1cm4oYT1hLmRvY3VtZW50KSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuZWxlbWVudEZyb21Qb2ludH07aWYoQyYmQy5VUkwpe3ZhciByZSxtYz1DLlVSTDtyZT0hIW1jJiYwPGxjKCkubGVuZ3RoO2FlLmc9IXJlfWZ1bmN0aW9uIFQoYSxiLGMsZCl7dmFyIGU9dm9pZCAwPT09ZT8hMTplO2M9JGQoZCxjKTtXYihhLGIsYyx7Y2FwdHVyZTplfSk7cmV0dXJuIGN9O2Z1bmN0aW9uIHNlKGEsYil7YSYmKGEuYiYmKGJbNF09YS5iKSxhLmEmJihiWzEyXT1hLmEpKX1mdW5jdGlvbiB0ZShhKXt2YXIgYj1bXTtOYShhLGZ1bmN0aW9uKGMsZCl7ZD1lbmNvZGVVUklDb21wb25lbnQoZCk7XCJzdHJpbmdcIj09PXR5cGVvZiBjJiYoYz1lbmNvZGVVUklDb21wb25lbnQoYykpO2IucHVzaChkK1wiPVwiK2MpfSk7Yi5wdXNoKFwiMjQ9XCIrRGF0ZS5ub3coKSk7cmV0dXJuIGIuam9pbihcIlxcblwiKX07dmFyIHVlPTA7ZnVuY3Rpb24gdmUoYSl7dmFyIGI9TWF0aC5wb3coMTAsMik7cmV0dXJuIE1hdGguZmxvb3IoYSpiKS9ifWZ1bmN0aW9uIHdlKGEsYil7dHJ5e3VlKyssYi5wb3N0TWVzc2FnZShhLFwiKlwiKX1jYXRjaChjKXt9fWZ1bmN0aW9uIHhlKGEsYil7YiYmKGEoYiksYi5mcmFtZXMmJnYoYi5mcmFtZXMsZnVuY3Rpb24oYyl7eGUoYSxjKX0pKX1mdW5jdGlvbiB5ZShhKXtyZXR1cm4gbmV3IEkoYS50b3AsYS5yaWdodCxhLmJvdHRvbSxhLmxlZnQpfWZ1bmN0aW9uIHplKCl7dmFyIGE9TygpLmI7cmV0dXJuIDA9PT1qZCgpPy0xOmEuaXNWaXNpYmxlKCk/MDoxfWZ1bmN0aW9uIEFlKGEpe3JldHVyblthLnRvcCxhLmxlZnQsYS5ib3R0b20sYS5yaWdodF0uam9pbihcIi1cIil9ZnVuY3Rpb24gQmUoYSl7aWYoIWEpcmV0dXJuIG51bGw7YT1hLnNwbGl0KFwiLVwiKTtyZXR1cm4gND09YS5sZW5ndGg/bmV3IEkoZmIoYVswXSksZmIoYVszXSksZmIoYVsyXSksZmIoYVsxXSkpOm51bGx9ZnVuY3Rpb24gQ2UoYSxiLGMpe2lmKGImJmEpaWYoYyYmMDxjLmxlbmd0aClmb3IoYz15YShjLGZ1bmN0aW9uKGUpe3ZhciBmPWUucGFyZW50JiZlLnBhcmVudCE9PWU7cmV0dXJuIGU9PT1ELnRvcHx8Zn0pLGE9ZmEoYyksYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpd2UoYixjLnZhbHVlKTtlbHNle2M9W107dmFyIGQ9ZWMoYSk7ZCYmYy5wdXNoKGQpO2lmKDA9PT1jLmxlbmd0aCl0cnl7Yz16YShhYyhcIklGUkFNRVwiLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSx2b2lkIDAsYSksZnVuY3Rpb24oZSl7cmV0dXJuIGVjKGUpfSl9Y2F0Y2goZSl7fWE9ZmEoYyk7Zm9yKGM9YS5uZXh0KCk7IWMuZG9uZTtjPWEubmV4dCgpKXtjPWMudmFsdWU7dHJ5e2ImJnhlKHNhKHdlLGIpLGMpfWNhdGNoKGUpe319fX1mdW5jdGlvbiBEZShhKXtpZighYSlyZXR1cm4gMDtpZihZYyhhLFwiZ29vZ2xlQXZEbVwiKSlzd2l0Y2goWGMoYSxcImdvb2dsZUF2RG1cIikpe2Nhc2UgXCIxXCI6cmV0dXJuIDE7Y2FzZSBcIjJcIjpicmVhaztjYXNlIFwiM1wiOnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIDF9cmV0dXJuIDJ9ZnVuY3Rpb24gRWUoYSl7dmFyIGI9e307aWYodm9pZCAwPT1hKXJldHVybiBiO1wiP1wiPT09YS5jaGFyQXQoMCkmJihhPWEuc3Vic3RyaW5nKDEpKTtpYyhhLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGJbY109ZH0pO3JldHVybiBifTtmdW5jdGlvbiBGZSgpe3ZhciBhPXo7cmV0dXJuIGE/QmEoXCJBbmRyb2lkIFRWO0FwcGxlVFY7QXBwbGUgVFY7R29vZ2xlVFY7SGJiVFY7TmV0Q2FzdC5UVjtPcGVyYSBUVjtQT1ZfVFY7U01BUlQtVFY7U21hcnRUVjtUViBTdG9yZTtBbWF6b25XZWJBcHBQbGF0Zm9ybTtNaUJPWFwiLnNwbGl0KFwiO1wiKSxmdW5jdGlvbihiKXtyZXR1cm4geShhLGIpfSl8fHkoYSxcIk9NSS9cIikmJiF5KGEsXCJYaWFvTWkvXCIpPyEwOnkoYSxcIlByZXN0b1wiKSYmeShhLFwiTGludXhcIikmJiF5KGEsXCJYMTFcIikmJiF5KGEsXCJBbmRyb2lkXCIpJiYheShhLFwiTW9iaVwiKTohMX1mdW5jdGlvbiBHZSgpe3ZhciBhPXo7cmV0dXJuIHkoYSxcIkFwcGxlVFZcIil8fHkoYSxcIkFwcGxlIFRWXCIpfHx5KGEsXCJDRk5ldHdvcmtcIil8fHkoYSxcInR2T1NcIil9ZnVuY3Rpb24gSGUoKXt2YXIgYT16O3JldHVybiB5KGEsXCJzZGtfZ29vZ2xlX2F0dl94ODZcIil8fHkoYSxcIkFuZHJvaWQgVFZcIil9O2Z1bmN0aW9uIFUoKXt0aGlzLmg9IWpjKEQudG9wKTt0aGlzLmk9Z2MoKXx8IWdjKCkmJihBKFwiaVBvZFwiKXx8QShcImlQaG9uZVwiKXx8QShcIkFuZHJvaWRcIil8fEEoXCJJRU1vYmlsZVwiKSk7dmFyIGE9bWQoKTthPTA8YS5sZW5ndGgmJm51bGwhPWFbYS5sZW5ndGgtMV0mJm51bGwhPWFbYS5sZW5ndGgtMV0udXJsPygoYT1hW2EubGVuZ3RoLTFdLnVybC5tYXRjaChoYylbM118fG51bGwpP2RlY29kZVVSSShhKTphKXx8XCJcIjpcIlwiO3RoaXMuZG9tYWluPWE7dGhpcy5hPW5ldyBJKDAsMCwwLDApO3RoaXMubD1uZXcgRigwLDApO3RoaXMuYz1uZXcgRigwLDApO3RoaXMuYj1uZXcgSSgwLDAsMCwwKTt0aGlzLmo9bmV3IEUoMCwwKTt0aGlzLm09bnVsbDt0aGlzLnM9ITE7dGhpcy5nPSEoIUR8fCFwZShEKS5MKTtJZSh0aGlzKX1mdW5jdGlvbiBKZShhLGIpe2ImJmIuc2NyZWVuJiYoYS5sPW5ldyBGKGIuc2NyZWVuLndpZHRoLGIuc2NyZWVuLmhlaWdodCkpfWZ1bmN0aW9uIEtlKGEsYil7dmFyIGM9YS5hP25ldyBGKG9jKGEuYSkscGMoYS5hKSk6bmV3IEYoMCwwKTtiPXZvaWQgMD09PWI/RDpiO251bGwhPT1iJiZiIT1iLnRvcCYmKGI9Yi50b3ApO3ZhciBkPTAsZT0wO3RyeXt2YXIgZj1iLmRvY3VtZW50LGc9Zi5ib2R5LGg9Zi5kb2N1bWVudEVsZW1lbnQ7aWYoXCJDU1MxQ29tcGF0XCI9PWYuY29tcGF0TW9kZSYmaC5zY3JvbGxIZWlnaHQpZD1oLnNjcm9sbEhlaWdodCE9Yy5oZWlnaHQ/aC5zY3JvbGxIZWlnaHQ6aC5vZmZzZXRIZWlnaHQsZT1oLnNjcm9sbFdpZHRoIT1jLndpZHRoP2guc2Nyb2xsV2lkdGg6aC5vZmZzZXRXaWR0aDtlbHNle3ZhciBtPWguc2Nyb2xsSGVpZ2h0LGs9aC5zY3JvbGxXaWR0aCxwPWgub2Zmc2V0SGVpZ2h0LG49aC5vZmZzZXRXaWR0aDtoLmNsaWVudEhlaWdodCE9cCYmKG09Zy5zY3JvbGxIZWlnaHQsaz1nLnNjcm9sbFdpZHRoLHA9Zy5vZmZzZXRIZWlnaHQsbj1nLm9mZnNldFdpZHRoKTttPmMuaGVpZ2h0P20+cD8oZD1tLGU9ayk6KGQ9cCxlPW4pOm08cD8oZD1tLGU9ayk6KGQ9cCxlPW4pfXZhciBxPW5ldyBGKGUsZCl9Y2F0Y2goRyl7cT1uZXcgRigtMTIyNDU5MzMsLTEyMjQ1OTMzKX1hLmM9cX1mdW5jdGlvbiBJZShhKXtEJiZELmRvY3VtZW50JiYoYS5iPUZjKCExLEQsYS5pKSxhLmE9RmMoITAsRCxhLmkpLGEubT1hLmEsS2UoYSxEKSxKZShhLEQpKX1mdW5jdGlvbiBMZSgpe2lmKFUuZigpLnMpcmV0dXJuITA7dmFyIGE9TygpLmIuaXNWaXNpYmxlKCksYj0wPT09amQoKTtyZXR1cm4gYXx8Yn11KFUpO3ZhciBNZT1uZXcgSSgwLDAsMCwwKTtmdW5jdGlvbiBOZShhLGIpe2I9T2UoYik7cmV0dXJuIDA9PT1iPzA6T2UoYSkvYn1mdW5jdGlvbiBPZShhKXtyZXR1cm4gTWF0aC5tYXgoYS5ib3R0b20tYS50b3AsMCkqTWF0aC5tYXgoYS5yaWdodC1hLmxlZnQsMCl9ZnVuY3Rpb24gUGUoYSxiKXtpZighYXx8IWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7bnVsbCE9PWEmJjEwMD5jKys7KXtpZihhPT09YilyZXR1cm4hMDt0cnl7YTp7dmFyIGQ9dm9pZCAwO2lmKFliJiYhKEImJkRiKFwiOVwiKSYmIURiKFwiMTBcIikmJnQuU1ZHRWxlbWVudCYmYSBpbnN0YW5jZW9mIHQuU1ZHRWxlbWVudCkmJihkPWEucGFyZW50RWxlbWVudCkpe3ZhciBlPWQ7YnJlYWsgYX1kPWEucGFyZW50Tm9kZTt2YXIgZj10eXBlb2YgZDtlPShcIm9iamVjdFwiPT1mJiZudWxsIT1kfHxcImZ1bmN0aW9uXCI9PWYpJiYxPT1kLm5vZGVUeXBlP2Q6bnVsbH1pZihhPWV8fGEpe3ZhciBnPUgoYSksaD1nJiZjYyhnKSxtPWgmJmguZnJhbWVFbGVtZW50O20mJihhPW0pfX1jYXRjaChrKXticmVha319cmV0dXJuITF9ZnVuY3Rpb24gUWUoYSxiLGMpe2lmKCFhfHwhYilyZXR1cm4hMTtiPXJjKHFjKGEpLC1iLmxlZnQsLWIudG9wKTthPShiLmxlZnQrYi5yaWdodCkvMjtiPShiLnRvcCtiLmJvdHRvbSkvMjt2YXIgZD1FYygpO2pjKGQudG9wKSYmZC50b3AmJmQudG9wLmRvY3VtZW50JiYoZD1kLnRvcCk7aWYoIXFlKGQpKXJldHVybiExO2E9ZC5kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGEsYik7aWYoIWEpcmV0dXJuITE7Yj0oYj0oYj1IKGMpKSYmYi5kZWZhdWx0VmlldyYmYi5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQpJiZQZShiLGEpO2Q9YT09PWM7YT0hZCYmYSYmZmMoYSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PWN9KTtyZXR1cm4hKGJ8fGR8fGEpfWZ1bmN0aW9uIFJlKGEsYixjLGQpe3JldHVybiBVLmYoKS5oPyExOjA+PW9jKGEpfHwwPj1wYyhhKT8hMDpjJiZkP2RlKDIwOCxmdW5jdGlvbigpe3JldHVybiBRZShhLGIsYyl9KTohMX07ZnVuY3Rpb24gU2UoYSxiLGMpe3ZhciBkPW5ldyBJKDAsMCwwLDApO3RoaXMudGltZT1hO3RoaXMudm9sdW1lPW51bGw7dGhpcy5jPWI7dGhpcy5hPWQ7dGhpcy5iPWN9O2Z1bmN0aW9uIFRlKGEsYixjLGQsZSxmLGcpe3RoaXMuaj1hO3RoaXMuaD1iO3RoaXMuYz1jO3RoaXMuYT1kO3RoaXMuZz1lO3RoaXMuYj1mO3RoaXMuaT1nfTtmdW5jdGlvbiBVZShhKXt0aGlzLmM9YTt0aGlzLmI9MDt0aGlzLmE9bnVsbH1VZS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7TygpLmNsZWFyVGltZW91dCh0aGlzLmEpO3RoaXMuYT1udWxsfTtmdW5jdGlvbiBWZShhKXt2YXIgYj1PKCk7YS5hPWIuc2V0VGltZW91dChBZChQLmYoKS5nLmEsUigxNDMsZnVuY3Rpb24oKXthLmIrKzthLmMudGIoKX0pKSxuZSgpKX07ZnVuY3Rpb24gVihhLGIsYyl7dGhpcy5vPWE7dGhpcy5DPXZvaWQgMD09PWM/XCJuYVwiOmM7dGhpcy5nPVtdO3RoaXMubD0hMTt0aGlzLmM9bmV3IFNlKC0xLCEwLHRoaXMpO3RoaXMuYj10aGlzO3RoaXMuaD1iO3RoaXMucz10aGlzLkg9dGhpcy5tPSExO3RoaXMuST1cInVrXCI7dGhpcy5KPSExO3RoaXMuaj0hMH1sPVYucHJvdG90eXBlO2wuUmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iYSgpfTtsLmJhPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2wubWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sPSEwfTtsLmVhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5JfTtsLmZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5zfTtmdW5jdGlvbiBXKGEsYixjKXtpZighYS5zfHwodm9pZCAwPT09Yz8wOmMpKWEucz0hMCxhLkk9YixhLmg9MCxhLnBhKCksYS5iIT1hfHxXZShhKX1sLkc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLkN9O2wuTT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuS2EoKX07bC5LYT1mdW5jdGlvbigpe3JldHVybnt9fTtsLk89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLmh9O2Z1bmN0aW9uIFhlKGEsYil7dyhhLmcsYil8fChhLmcucHVzaChiKSxiLmthKGEuYiksYi5VKGEuYyksYi5oYSgpJiYoYS5tPSEwKSl9ZnVuY3Rpb24gWWUoYSxiKXt2YXIgYz1hLmcsZD14YShjLGIpOzA8PWQmJkFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChjLGQsMSk7YS5tJiZiLmhhKCkmJlplKGEpfWwudmE9ZnVuY3Rpb24oKXt2YXIgYT1VLmYoKTthLmE9RmMoITAsdGhpcy5vLGEuaSl9O2wud2E9ZnVuY3Rpb24oKXtKZShVLmYoKSx0aGlzLm8pfTtsLlFhPWZ1bmN0aW9uKCl7S2UoVS5mKCksdGhpcy5vKX07bC5xYj1mdW5jdGlvbigpe3ZhciBhPVUuZigpO2EuYj1GYyghMSx0aGlzLm8sYS5pKX07bC5MYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmMuYX07ZnVuY3Rpb24gJGUoYSl7YT1hLmI7YS53YSgpO2EudmEoKTthLnFiKCk7YS5RYSgpO2EuYy5hPWEuTGEoKX1mdW5jdGlvbiBhZihhKXt2YXIgYj1TKCksYz1MZSgpO3JldHVybiBuZXcgU2UoYixjLGEpfWwudGI9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIFplKGEpe2EubT1hLmcubGVuZ3RoP0JhKGEuZyxmdW5jdGlvbihiKXtyZXR1cm4gYi5oYSgpfSk6ITF9bC5wYT1mdW5jdGlvbigpe307ZnVuY3Rpb24gYmYoYSl7dmFyIGI9RWEoYS5nKTt2KGIsZnVuY3Rpb24oYyl7Yy5VKGEuYyl9KX1mdW5jdGlvbiBXZShhKXt2YXIgYj1FYShhLmcpO3YoYixmdW5jdGlvbihjKXtjLmthKGEuYil9KTthLmIhPWF8fGJmKGEpfWwua2E9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5iLGM9YS5PKCk7dGhpcy5iPWM+PXRoaXMuaD9hOnRoaXM7YiE9PXRoaXMuYj8odGhpcy5iPT10aGlzfHwxPT1jJiYwIT10aGlzLmh8fHRoaXMucGEoKSx0aGlzLmo9dGhpcy5iLmosV2UodGhpcykpOnRoaXMuaiE9PXRoaXMuYi5qJiYodGhpcy5qPXRoaXMuYi5qLFdlKHRoaXMpKX07bC5VPWZ1bmN0aW9uKGEpe2lmKGEuYj09PXRoaXMuYil7dmFyIGI7aWYoIShiPXRoaXMuSCkpe2I9dGhpcy5jO3ZhciBjPXRoaXMubTtpZihjPWEmJih2b2lkIDA9PT1jfHwhY3x8Yi52b2x1bWU9PWEudm9sdW1lKSYmYi5jPT1hLmMpYj1iLmEsYz1hLmEsYz1iPT1jPyEwOmImJmM/Yi50b3A9PWMudG9wJiZiLnJpZ2h0PT1jLnJpZ2h0JiZiLmJvdHRvbT09Yy5ib3R0b20mJmIubGVmdD09Yy5sZWZ0OiExO2I9IWN9dGhpcy5jPWE7YiYmYmYodGhpcyl9fTtmdW5jdGlvbiBjZihhLGIpe2EuaCE9PWImJihhLmIhPWEmJmI+YS5iLmgmJihhLmI9YSxXZShhKSksYS5oPWIpfWwuaGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tfTtsLks9ZnVuY3Rpb24oKXt0aGlzLko9ITB9O2wubmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5KfTtmdW5jdGlvbiBkZihhLGIsYyxkKXt0aGlzLmM9YTt0aGlzLmE9bmV3IEkoMCwwLDAsMCk7dGhpcy5sPW5ldyBJKDAsMCwwLDApO3RoaXMuYj1iO3RoaXMuQT1jO3RoaXMuQz1kO3RoaXMudT0hMTt0aGlzLnRpbWVzdGFtcD0tMTt0aGlzLmg9bmV3IFRlKGIuYyx0aGlzLmEsbmV3IEkoMCwwLDAsMCksMCwwLFMoKSwwKX1sPWRmLnByb3RvdHlwZTtsLnBiPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2wudWE9ZnVuY3Rpb24oKXt9O2wuSmE9ZnVuY3Rpb24oKXtpZih0aGlzLmMpe3ZhciBhPXRoaXMuYyxiPXRoaXMuYi5iLm87dHJ5e3RyeXt2YXIgYz15ZShhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKX1jYXRjaChrKXtjPW5ldyBJKDAsMCwwLDApfXZhciBkPWMucmlnaHQtYy5sZWZ0LGU9Yy5ib3R0b20tYy50b3AsZj1CYyhhLGIpLGc9Zi54LGg9Zi55O3ZhciBtPW5ldyBJKE1hdGgucm91bmQoaCksTWF0aC5yb3VuZChnK2QpLE1hdGgucm91bmQoaCtlKSxNYXRoLnJvdW5kKGcpKX1jYXRjaChrKXttPXFjKE1lKX10aGlzLmE9ZWYodGhpcyxtKX19O2wuWWE9ZnVuY3Rpb24oKXt0aGlzLmw9dGhpcy5iLmMuYX07bC5kYT1mdW5jdGlvbigpe3RoaXMuSmEoKTt0aGlzLmg9bmV3IFRlKHRoaXMuYi5jLHRoaXMuYSx0aGlzLmguYyx0aGlzLmguYSx0aGlzLmguZyxTKCksdGhpcy5oLmkpfTtmdW5jdGlvbiBlZihhLGIpe3ZhciBjPW9jKGIpLGQ9cGMoYik7aWYoMT09IU0oUC5mKCkuYSxcInZjbVwiKXx8IWEuYylyZXR1cm4gYjthPWEuYztpZighKGEudmlkZW9IZWlnaHQmJmEudmlkZW9XaWR0aCYmYyYmZCkpcmV0dXJuIGI7dmFyIGU9cWMoYik7YS52aWRlb1dpZHRoL2EudmlkZW9IZWlnaHQ+Yy9kPyhlLnRvcD1iLnRvcCtNYXRoLmZsb29yKChkLWEudmlkZW9IZWlnaHQpLzIpLGUuYm90dG9tPWUudG9wK2EudmlkZW9IZWlnaHQpOihlLmxlZnQ9Yi5sZWZ0K01hdGguZmxvb3IoKGMtYS52aWRlb1dpZHRoKS8yKSxlLnJpZ2h0PWUubGVmdCthLnZpZGVvV2lkdGgpO3JldHVybiBlfWwuSz1mdW5jdGlvbigpe3RoaXMubmEoKXx8KFllKHRoaXMuYix0aGlzKSx0aGlzLnVhKCksdGhpcy51PSEwKX07bC5uYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnV9O2wuTT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuTSgpfTtsLk89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLk8oKX07bC5lYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuZWEoKX07bC5mYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuZmEoKX07bC5rYT1mdW5jdGlvbigpe307bC5VPWZ1bmN0aW9uKCl7dGhpcy5kYSgpfTtsLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQ307ZnVuY3Rpb24gZmYoYSl7dGhpcy5oPSExO3RoaXMuYT1hO3RoaXMuZz1xYX1sPWZmLnByb3RvdHlwZTtsLk89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hLk8oKX07bC5lYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZWEoKX07bC5mYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuZmEoKX07bC5jcmVhdGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW51bGw7dGhpcy5hJiYoZD10aGlzLlphKGEsYixjKSxYZSh0aGlzLmEsZCkpO3JldHVybiBkfTtsLm5iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2EoKX07bC5PYT1mdW5jdGlvbigpe3JldHVybiExfTtsLm1iPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmEubWEoKT8oWGUodGhpcy5hLHRoaXMpLHRoaXMuZz1hLCEwKTohMX07bC5rYT1mdW5jdGlvbihhKXswPT1hLk8oKSYmdGhpcy5nKGEuZWEoKSx0aGlzKX07bC5VPWZ1bmN0aW9uKCl7fTtsLmhhPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2wuSz1mdW5jdGlvbigpe3RoaXMuaD0hMH07bC5uYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh9O2wuTT1mdW5jdGlvbigpe3JldHVybnt9fTtmdW5jdGlvbiBnZihhLGIsYyl7dGhpcy5jPXZvaWQgMD09PWM/MDpjO3RoaXMuYj1hO3RoaXMuYT1udWxsPT1iP1wiXCI6Yn1mdW5jdGlvbiBoZihhKXtzd2l0Y2goTWF0aC50cnVuYyhhLmMpKXtjYXNlIC0xNjpyZXR1cm4tMTY7Y2FzZSAtODpyZXR1cm4tODtjYXNlIDA6cmV0dXJuIDA7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2RlZmF1bHQ6cmV0dXJuIDE2fX1mdW5jdGlvbiBqZihhLGIpe3JldHVybiBhLmM8Yi5jPyEwOmEuYz5iLmM/ITE6YS5iPGIuYj8hMDphLmI+Yi5iPyExOnR5cGVvZiBhLmE8dHlwZW9mIGIuYT8hMDp0eXBlb2YgYS5hPnR5cGVvZiBiLmE/ITE6YS5hPGIuYX07ZnVuY3Rpb24ga2YoKXt0aGlzLmM9MDt0aGlzLmE9W107dGhpcy5iPSExfWtmLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiLGMpeysrdGhpcy5jO2E9bmV3IGdmKGEsYixjKTt0aGlzLmEucHVzaChuZXcgZ2YoYS5iLGEuYSxhLmMrdGhpcy5jLzQwOTYpKTt0aGlzLmI9ITA7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIGxmKGEsYil7dihiLmEsZnVuY3Rpb24oYyl7YS5hZGQoYy5iLGMuYSxoZihjKSl9KX1mdW5jdGlvbiBtZihhLGIpe3ZhciBjPXZvaWQgMD09PWM/MDpjO3ZhciBkPXZvaWQgMD09PWQ/ITA6ZDtrYyhiLGZ1bmN0aW9uKGUsZil7ZCYmdm9pZCAwPT09ZXx8YS5hZGQoZixlLGMpfSk7cmV0dXJuIGF9ZnVuY3Rpb24gbmYoYSl7dmFyIGI9b2Y7YS5iJiYoSGEoYS5hLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGpmKGQsYyk/MTpqZihjLGQpPy0xOjB9KSxhLmI9ITEpO3JldHVybiBBYShhLmEsZnVuY3Rpb24oYyxkKXtkPWIoZCk7cmV0dXJuXCJcIitjKyhcIlwiIT1jJiZcIlwiIT1kP1wiJlwiOlwiXCIpK2R9LFwiXCIpfTtmdW5jdGlvbiBvZihhKXt2YXIgYj1hLmI7YT1hLmE7cmV0dXJuXCJcIj09PWE/YjpcImJvb2xlYW5cIj09PXR5cGVvZiBhP2E/YjpcIlwiOkFycmF5LmlzQXJyYXkoYSk/MD09PWEubGVuZ3RoP2I6YitcIj1cIithLmpvaW4oKTpiK1wiPVwiKyh3KFtcIm10b3NcIixcInRvc1wiLFwicFwiXSxiKT9hOmVuY29kZVVSSUNvbXBvbmVudChhKSl9O2Z1bmN0aW9uIHBmKGEpe3ZhciBiPXZvaWQgMD09PWI/ITA6Yjt0aGlzLmE9bmV3IGtmO3ZvaWQgMCE9PWEmJmxmKHRoaXMuYSxhKTtiJiZ0aGlzLmEuYWRkKFwidlwiLFNiLC0xNil9cGYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9XCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tLy9wYWdlYWQvZ2VuXzIwNFwiLGI9bmYodGhpcy5hKTswPGIubGVuZ3RoJiYoYSs9XCI/XCIrYik7cmV0dXJuIGF9O2Z1bmN0aW9uIHFmKGEpe3ZhciBiPVtdLGM9W107TmEoYSxmdW5jdGlvbihkLGUpe2lmKCEoZSBpbiBPYmplY3QucHJvdG90eXBlKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGQpc3dpdGNoKEFycmF5LmlzQXJyYXkoZCkmJihkPWQuam9pbihcIixcIikpLGQ9W2UsXCI9XCIsZF0uam9pbihcIlwiKSxlKXtjYXNlIFwiYWRrXCI6Y2FzZSBcInJcIjpjYXNlIFwidHRcIjpjYXNlIFwiZXJyb3JcIjpjYXNlIFwibXRvc1wiOmNhc2UgXCJ0b3NcIjpjYXNlIFwicFwiOmNhc2UgXCJic1wiOmIudW5zaGlmdChkKTticmVhaztjYXNlIFwicmVxXCI6Y2FzZSBcInVybFwiOmNhc2UgXCJyZWZlcnJlclwiOmNhc2UgXCJpZnJhbWVfbG9jXCI6Yy5wdXNoKGQpO2JyZWFrO2RlZmF1bHQ6Yi5wdXNoKGQpfX0pO3JldHVybiBiLmNvbmNhdChjKX1mdW5jdGlvbiByZigpe2lmKFNiJiZcInVucmVsZWFzZWRcIiE9PVNiKXJldHVybiBTYn1mdW5jdGlvbiBzZihhKXtpZigvJnY9W14mXSsvLnRlc3QoYSkpcmV0dXJuIGE7dmFyIGI9cmYoKTtyZXR1cm4gYj9hK1wiJnY9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGIpOmF9ZnVuY3Rpb24gdGYoYSl7dmFyIGI9dm9pZCAwPT09Yj80RTM6YjthPXNmKGEudG9TdHJpbmcoKSk7YT1hLnN1YnN0cmluZygwLGIpO3dkKGEpfTtmdW5jdGlvbiB1Zigpe3RoaXMuYT0wfXUodWYpO2Z1bmN0aW9uIHZmKGEsYixjKXt2KGEuYyxmdW5jdGlvbihkKXt2YXIgZT1hLmE7aWYoIWQuYSYmKGQuYyhiLGMpLGQuZygpKSl7ZC5hPSEwO3ZhciBmPWQuYigpLGc9bmV3IGtmO2cuYWRkKFwiaWRcIixcImF2LWpzXCIpO2cuYWRkKFwidHlwZVwiLFwidmVyaWZcIik7Zy5hZGQoXCJ2dHlwZVwiLGQuaCk7ZD11Zi5mKCk7Zy5hZGQoXCJpXCIsZC5hKyspO2cuYWRkKFwiYWRrXCIsZSk7bWYoZyxmKTtlPW5ldyBwZihnKTt0ZihlKX19KX07ZnVuY3Rpb24gd2YoKXt0aGlzLmE9dGhpcy5iPXRoaXMuYz0wfWZ1bmN0aW9uIHhmKGEsYixjLGQpe2ImJihhLmMrPWMsYS5iKz1jLGEuYT1NYXRoLm1heChhLmEsYS5iKSk7aWYodm9pZCAwPT09ZD8hYjpkKWEuYj0wfTt2YXIgeWY9WzEsLjc1LC41LC4zLDBdO2Z1bmN0aW9uIHpmKGEpe3RoaXMuYT1hPXZvaWQgMD09PWE/eWY6YTt0aGlzLmI9emEodGhpcy5hLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB3Zn0pfWZ1bmN0aW9uIEFmKGEpe3JldHVybiBCZihhLGZ1bmN0aW9uKGIpe3JldHVybiBiLmN9LCExKX1mdW5jdGlvbiBDZihhKXtyZXR1cm4gQmYoYSxmdW5jdGlvbihiKXtyZXR1cm4gYi5hfSwhMCl9ZnVuY3Rpb24gRGYoYSxiLGMsZCxlLGYpe3ZhciBnPXZvaWQgMD09PWc/ITA6ZztjPWY/TWF0aC5taW4oYixjKTpjO2ZvcihmPTA7ZjxhLmEubGVuZ3RoO2YrKyl7dmFyIGg9YS5hW2ZdLG09MDxjJiZjPj1oO2g9ISgwPGImJmI+PWgpfHxkO3hmKGEuYltmXSxnJiZtLGUsIWd8fGgpfX1mdW5jdGlvbiBCZihhLGIsYyl7YT16YShhLmIsZnVuY3Rpb24oZCl7cmV0dXJuIGIoZCl9KTtyZXR1cm4gYz9hOkVmKGEpfWZ1bmN0aW9uIEVmKGEpe3JldHVybiB6YShhLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gMDxjP2RbY10tZFtjLTFdOmRbY119KX07ZnVuY3Rpb24gRmYoKXt0aGlzLmE9bmV3IHpmO3RoaXMuYz1uZXcgd2Y7dGhpcy5iPS0xO3RoaXMuZz1uZXcgemYoWzEsLjksLjgsLjcsLjYsLjUsLjQsLjMsLjIsLjEsMF0pfWZ1bmN0aW9uIEdmKGEpe3JldHVybiAxRTM8PWEuYy5hfTt2YXIgSGY9bmV3IEkoMCwwLDAsMCk7ZnVuY3Rpb24gWChhLGIsYyl7bmMuY2FsbCh0aGlzKTt0aGlzLkZiPXFjKEhmKTt0aGlzLmM9bmV3IEZmO3RoaXMuVz0tMjtEYXRlLm5vdygpO3RoaXMuc2I9LTE7dGhpcy5nYj1iO3RoaXMuUz1udWxsO3RoaXMucz0hMTt0aGlzLmNhPW51bGw7dGhpcy5CPS0xO3RoaXMuWj1jO3RoaXMuSWE9dGhpcy5BYT1xYTt0aGlzLmI9bmV3IFpjO3RoaXMuYi5hPWE7dGhpcy5iLmI9YTt0aGlzLnU9ITE7dGhpcy5pPXt5YTpudWxsLHhhOm51bGx9O3RoaXMuJD0hMDt0aGlzLkg9bnVsbDtQLmYoKS5tKys7dGhpcy5nPW5ldyBJYzt0aGlzLnJiPXRoaXMuYWE9LTE7dGhpcy5GYT0wO3RoaXMuQz0tMTt0aGlzLmE9bnVsbDt0aGlzLnFhPW5ldyBJKDAsMCwwLDApO3RoaXMuZmI9ITE7dGhpcy5qPW5ldyBRYztWYyh0aGlzLmopOyhhPXRoaXMuYi5hKSYmYS5nZXRBdHRyaWJ1dGUmJlljKGEsXCJnb29nbGVBdkluYXBwXCIpJiYoVS5mKCkuZz0hMCk7MT09dGhpcy5aPyhhPXRoaXMuai5hLm9kKSYmYS5iKDEpOihhPXRoaXMuai5hLm9kKSYmYS5iKDApfXIoWCxuYyk7bD1YLnByb3RvdHlwZTtsLmlhPWZ1bmN0aW9uKCl7dGhpcy5iLmImJih0aGlzLmkueWEmJihYYih0aGlzLmIuYixcIm1vdXNlb3ZlclwiLHRoaXMuaS55YSksdGhpcy5pLnlhPW51bGwpLHRoaXMuaS54YSYmKFhiKHRoaXMuYi5iLFwibW91c2VvdXRcIix0aGlzLmkueGEpLHRoaXMuaS54YT1udWxsKSk7dGhpcy5IJiZ0aGlzLkguSygpO3RoaXMuYSYmdGhpcy5hLksoKTtkZWxldGUgdGhpcy5jO2RlbGV0ZSB0aGlzLkFhO2RlbGV0ZSB0aGlzLklhO2RlbGV0ZSB0aGlzLmIuYTtkZWxldGUgdGhpcy5iLmI7ZGVsZXRlIHRoaXMuaTtkZWxldGUgdGhpcy5IO2RlbGV0ZSB0aGlzLmE7ZGVsZXRlIHRoaXMuajtuYy5wcm90b3R5cGUuaWEuY2FsbCh0aGlzKX07ZnVuY3Rpb24gSWYoYSl7cmV0dXJuIGEuYT9hLmEuYTphLkZifWwudGE9ZnVuY3Rpb24oYSl7SWQoUC5mKCksYSl9O2wub2I9ZnVuY3Rpb24oKXtyZXR1cm4hMX07bC5QYT1mdW5jdGlvbigpe3RoaXMucz0hMH07bC5nYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN9O2wuU2E9ZnVuY3Rpb24oKXt0aGlzLmcuRD0wfTtsLlRhPWZ1bmN0aW9uKCl7dGhpcy5jPW5ldyBGZn07ZnVuY3Rpb24gSmYoYSxiKXtpZihhLmEpe2lmKGIuRygpPT09YS5hLkcoKSlyZXR1cm47YS5hLksoKTthLmE9bnVsbH1iPWIuY3JlYXRlKGEuYi5iLGEuaixhLm9iKCkpO2lmKGI9bnVsbCE9YiYmYi5wYigpP2I6bnVsbClhLmE9Yn1mdW5jdGlvbiBLZihhLGIsYyl7aWYoYS5hKXthLmEuZGEoKTt2YXIgZD1hLmEuaCxlPWQuaixmPWUuYTtpZihudWxsIT1kLmMpe3ZhciBnPWQuaDthLmNhPW5ldyBFKGcubGVmdC1mLmxlZnQsZy50b3AtZi50b3ApO2EucWE9ZC5jfWY9YS56YSgpP01hdGgubWF4KGQuYSxkLmcpOmQuYTtnPXt9O251bGwhPT1lLnZvbHVtZSYmKGcudm9sdW1lPWUudm9sdW1lKTthLlMmJi0xIT1hLmdiJiYtMSE9PWQuYiYmLTEhPT1hLlMuYj8oZT1kLmItYS5TLmIsZT0xRTQ8ZT8wOmUpOmU9MDthLlM9ZDthLlVhKGYsYixjLCExLGcsZSxkLmkpfX1mdW5jdGlvbiBMZihhKXtpZihhLmdhKCkmJmEuSCl7dmFyIGI9MT09TShhLmosXCJvZFwiKSxjPVUuZigpLmEsZD1hLkgsZT1uZXcgRihvYyhjKSxwYyhjKSk7Yz1hLnphKCk7YT17SGI6YS5hP2EuYS5HKCk6XCJuc1wiLGNhOmEuY2EsSmI6ZSx6YTpjLEQ6YS5nLkQsSWI6Yn07aWYoYj1kLmIpe2IuZGEoKTtlPWIuaDt2YXIgZj1lLmouYSxnPW51bGwsaD1udWxsO251bGwhPWUuYyYmZiYmKGc9ZS5oLGc9bmV3IEUoZy5sZWZ0LWYubGVmdCxnLnRvcC1mLnRvcCksaD1uZXcgRihmLnJpZ2h0LWYubGVmdCxmLmJvdHRvbS1mLnRvcCkpO2M9e0hiOmIuRygpLGNhOmcsSmI6aCx6YTpjLEliOiExLEQ6Yz9NYXRoLm1heChlLmEsZS5nKTplLmF9fWVsc2UgYz1udWxsO2MmJnZmKGQsYSxjKX19bC5VYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt0aGlzLnV8fCh0aGlzLmdhKCkmJihlPW5ldyBJYyxlLmM9YyxlLmI9emUoKSxlLkQ9MD09PXRoaXMuQiYmMT09PU0odGhpcy5qLFwib3BhY1wiKT8wOmEsZS5hPXRoaXMub2EoKSxlLmc9ZyxhPXRoaXMuYyxjPXRoaXMuZyxkPWQmJnRoaXMuZy5EPj0odGhpcy5vYSgpPy4zOi41KSxhLmI9TWF0aC5tYXgoYS5iLGUuRCksRGYoYS5nLGUuZyxjLmcsZS5jLGYsZCksRGYoYS5hLGUuRCxjLkQsZS5jLGYsZCksZD1kfHxjLmEhPWUuYT9jLmlzVmlzaWJsZSgpJiZlLmlzVmlzaWJsZSgpOmMuaXNWaXNpYmxlKCksYz0hZS5pc1Zpc2libGUoKXx8ZS5jLHhmKGEuYyxkLGYsYyksdGhpcy5nYj1iLDA8ZS5EJiYoLTE9PT10aGlzLmFhJiYodGhpcy5hYT1iKSx0aGlzLnJiPWIpLC0xPT10aGlzLnNiJiZHZih0aGlzLmMpJiYodGhpcy5zYj1iKSwtMj09dGhpcy5XJiYodGhpcy5XPU9lKElmKHRoaXMpKT9lLkQ6LTEpLHRoaXMuZz1lKSx0aGlzLkFhKHRoaXMpKX07bC5vYT1mdW5jdGlvbigpe3JldHVybiExfTtsLnphPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmJ8fCExfTtmdW5jdGlvbiBNZihhKXthLmIuYiYmKGEuaS55YT1UKGEuYi5iLFwibW91c2VvdmVyXCIsZnVuY3Rpb24oKXt2YXIgYj1TKCk7YS5DPWJ9LDE0OSksYS5pLnhhPVQoYS5iLmIsXCJtb3VzZW91dFwiLGZ1bmN0aW9uKCl7dmFyIGI9UygpOy0xPT1hLkN8fGI8YS5DfHwoYS5GYSs9Yi1hLkMpO2EuQz0tMX0sMTUwKSl9ZnVuY3Rpb24gTmYoYSxiLGMpe2ImJihhLkFhPWIpO2MmJihhLklhPWMpfTtmdW5jdGlvbiBPZihhKXtyZXR1cm4gZGIoKT8oYT0oYT1IKGEpKSYmY2MoYSksISEoYSYmYS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMmJjA8YS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMubGVuZ3RoJiZhLmxvY2F0aW9uLm9yaWdpbj09YS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnNbMF0pKTohMH07dmFyIFBmPVwiU3RvcEl0ZXJhdGlvblwiaW4gdD90LlN0b3BJdGVyYXRpb246e21lc3NhZ2U6XCJTdG9wSXRlcmF0aW9uXCIsc3RhY2s6XCJcIn07ZnVuY3Rpb24gUWYoKXt9UWYucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt0aHJvdyBQZjt9O1FmLnByb3RvdHlwZS5XYT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtmdW5jdGlvbiBSZihhKXtpZihhIGluc3RhbmNlb2YgUWYpcmV0dXJuIGE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYS5XYSlyZXR1cm4gYS5XYSghMSk7aWYocmEoYSkpe3ZhciBiPTAsYz1uZXcgUWY7Yy5uZXh0PWZ1bmN0aW9uKCl7Zm9yKDs7KXtpZihiPj1hLmxlbmd0aCl0aHJvdyBQZjtpZihiIGluIGEpcmV0dXJuIGFbYisrXTtiKyt9fTtyZXR1cm4gY310aHJvdyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKTt9ZnVuY3Rpb24gU2YoYSxiKXtpZihyYShhKSl0cnl7dihhLGIsdm9pZCAwKX1jYXRjaChjKXtpZihjIT09UGYpdGhyb3cgYzt9ZWxzZXthPVJmKGEpO3RyeXtmb3IoOzspYi5jYWxsKHZvaWQgMCxhLm5leHQoKSx2b2lkIDAsYSl9Y2F0Y2goYyl7aWYoYyE9PVBmKXRocm93IGM7fX19ZnVuY3Rpb24gVGYoYSxiKXt2YXIgYz0xO1NmKGEsZnVuY3Rpb24oZCl7Yz1iLmNhbGwodm9pZCAwLGMsZCl9KTtyZXR1cm4gY31mdW5jdGlvbiBVZihhLGIpe3ZhciBjPVJmKGEpO2E9bmV3IFFmO2EubmV4dD1mdW5jdGlvbigpe3ZhciBkPWMubmV4dCgpO2lmKGIuY2FsbCh2b2lkIDAsZCx2b2lkIDAsYykpcmV0dXJuIGQ7dGhyb3cgUGY7fTtyZXR1cm4gYX1mdW5jdGlvbiBWZihhKXt2YXIgYj1SZihhKTthPW5ldyBRZjt2YXIgYz0xMDA7YS5uZXh0PWZ1bmN0aW9uKCl7aWYoMDxjLS0pcmV0dXJuIGIubmV4dCgpO3Rocm93IFBmO307cmV0dXJuIGF9O2Z1bmN0aW9uIFdmKGEsYil7dGhpcy5jPWI7dGhpcy5iPW51bGw9PWE7dGhpcy5hPWF9cihXZixRZik7V2YucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtpZih0aGlzLmIpdGhyb3cgUGY7dmFyIGE9dGhpcy5hfHxudWxsO3RoaXMuYj1udWxsPT1hO3ZhciBiO2lmKGI9YSl7Yj10aGlzLmM7aWYocGIoYSxcInBhcmVudEVsZW1lbnRcIikmJm51bGwhPWEucGFyZW50RWxlbWVudCYmYSE9YS5wYXJlbnRFbGVtZW50KXZhciBjPWEucGFyZW50RWxlbWVudDtlbHNlIGlmKGIpe3ZhciBkPXZvaWQgMD09PWQ/T2Y6ZDtpZihkKGEpKXRyeXt2YXIgZT1IKGEpLGY9ZSYmY2MoZSksZz1mJiZmLmZyYW1lRWxlbWVudDtjPW51bGw9PWc/bnVsbDpnfWNhdGNoKGgpe2M9bnVsbH1lbHNlIGM9bnVsbH1lbHNlIGM9bnVsbDtiPWN9dGhpcy5hPWI7cmV0dXJuIGF9O2Z1bmN0aW9uIFhmKGEpe3ZhciBiPTE7YT1WZihuZXcgV2YoYSwhMCkpO2E9VWYoYSxmdW5jdGlvbigpe3JldHVybiAwPGJ9KTtyZXR1cm4gVGYoYSxmdW5jdGlvbihjLGQpe3ZhciBlPTE7aWYocGIoZCxcInN0eWxlXCIpJiZkLnN0eWxlKXt2YXIgZj1wYXJzZUZsb2F0O2E6e3ZhciBnPUgoZCk7aWYoZy5kZWZhdWx0VmlldyYmZy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoZz1nLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZCxudWxsKSkpe2c9Zy5vcGFjaXR5fHxnLmdldFByb3BlcnR5VmFsdWUoXCJvcGFjaXR5XCIpfHxcIlwiO2JyZWFrIGF9Zz1cIlwifWlmKCFnKXtnPWQuc3R5bGVbZ2IoKV07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBnKWQ9ZztlbHNle2c9ZC5zdHlsZTt2YXIgaD16Yy5vcGFjaXR5O2lmKCFoKXt2YXIgbT1nYigpO2g9bTt2b2lkIDA9PT1kLnN0eWxlW21dJiYobT0odmI/XCJXZWJraXRcIjp1Yj9cIk1velwiOkI/XCJtc1wiOnNiP1wiT1wiOm51bGwpK2liKG0pLHZvaWQgMCE9PWQuc3R5bGVbbV0mJihoPW0pKTt6Yy5vcGFjaXR5PWh9ZD1nW2hdfHxcIlwifWc9ZH1mPWYoZyk7XCJudW1iZXJcIiE9PXR5cGVvZiBmfHxpc05hTihmKXx8KGU9Zil9cmV0dXJuIGI9YyplfSl9O2Z1bmN0aW9uIFlmKGEsYixjLGQsZSxmLGcpe2Y9dm9pZCAwPT09Zj9xYTpmO2c9dm9pZCAwPT09Zz9bXTpnO1guY2FsbCh0aGlzLGMsZCxlKTt0aGlzLkRhPWI7dGhpcy5FYT10aGlzLmw9MDt0aGlzLk49bnVsbDt0aGlzLmJiPXRoaXMuSGE9XCJcIjt0aGlzLko9W107dGhpcy5GPVtdO3RoaXMuQmE9dGhpcy4kYT1cIlwiO3RoaXMuZWI9ITE7dGhpcy5UPTQ7dGhpcy5HYT1bXTt0aGlzLlA9dGhpcy5tPVwiXCI7dGhpcy5YYT0hMTt0aGlzLkNhPW51bGw7dGhpcy5SPTA7dGhpcy5JPXRoaXMuY2I9emUoKTt0aGlzLmg9MDt0aGlzLmtiPWY7dGhpcy5sYj0hMTt0aGlzLlg9LTE7dGhpcy5qYj1nO2lmKGE9dGhpcy5iLmEpMD09dGhpcy5sP3RoaXMuYi5hPyhiPXRoaXMuYi5hLl9hZGtfLGJ8fChiPShiPVhjKHRoaXMuYi5hLFwiZ29vZ2xlQXZBZGtcIikpJiYhL1teMC05XS8udGVzdChiKT9wYXJzZUludChiLDEwKTowKSk6Yj0wOmI9dGhpcy5sLHRoaXMubD1iLFwiXCI9PXRoaXMuSGEmJih0aGlzLkhhPVN0cmluZyhhLl9hdmlffHxcIlwiKSksXCJcIj09dGhpcy5iYiYmKHRoaXMuYmI9YS5fYXZpaG9zdF8/U3RyaW5nKGEuX2F2aWhvc3RfKTpcInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tXCIpLHRoaXMuSi5sZW5ndGh8fCh0aGlzLko9WmYoYSxcIl9hdmljeG5fXCIsXCJnb29nbGVBdkN4blwiKSksdGhpcy5GLmxlbmd0aHx8KHRoaXMuRj1aZihhLFwiX2F2aWVvc2N4bl9cIixcImdvb2dsZUVPU0F2Q3huXCIpKSxcIlwiPT10aGlzLiRhJiYodGhpcy4kYT1TdHJpbmcoYS5fYXZpZXh0Y3huX3x8WGMoYSxcImdvb2dsZUF2RXh0Q3huXCIpfHxcIlwiKSksXCJcIj09dGhpcy5CYSYmKHRoaXMuQmE9U3RyaW5nKGEuX2NpZF98fFwiXCIpKSx0aGlzLmVifHwodGhpcy5lYj0hIWEuX2ltbV98fFljKGEsXCJnb29nbGVBdkltbWVkaWF0ZVwiKSksXCJcIj09dGhpcy5QJiYodGhpcy5QPVN0cmluZyhhLl9jdnVffHxYYyhhLFwiZ29vZ2xlQXZDcG1hdlwiKXx8XCJcIikpLFwiXCI9PXRoaXMubSYmKHRoaXMubT1TdHJpbmcoWGMoYSxcImdvb2dsZUF2QnRyXCIpfHxcIlwiKSksdGhpcy50YShTdHJpbmcoYS5fYXZtX3x8WGMoYSxcImdvb2dsZUF2TWV0YWRhdGFcIil8fFwiXCIpKTtVYyhQLmYoKS5hLHRoaXMuRGEpfXIoWWYsWCk7ZnVuY3Rpb24gWmYoYSxiLGMpe3JldHVybihhPVN0cmluZyhhW2JdfHxYYyhhLGMpfHxcIlwiKSk/YS5zcGxpdChcInxcIik6W119bD1ZZi5wcm90b3R5cGU7bC5pYT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLkdhO2RlbGV0ZSB0aGlzLmpiO1gucHJvdG90eXBlLmlhLmNhbGwodGhpcyl9O2Z1bmN0aW9uICRmKGEsYixjKXt2KGEuamIsZnVuY3Rpb24oZCl7cmV0dXJuIGQuYShhLGMsYil9KX1sLmdhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucyYmISgxPT10aGlzLmh8fDM9PXRoaXMuaCl9O2Z1bmN0aW9uIGFnKGEsYil7YS5oPT1ifHwyPT1hLmh8fDE9PWEuaCYmMz09Ynx8KGEuaD1iLDEhPWEuaCYmMyE9YS5ofHxhLlRhKCkpfWwuU2E9ZnVuY3Rpb24oKXtYLnByb3RvdHlwZS5TYS5jYWxsKHRoaXMpO3RoaXMucWE9bmV3IEkoMCwwLDAsMCl9O2wuVGE9ZnVuY3Rpb24oKXtYLnByb3RvdHlwZS5UYS5jYWxsKHRoaXMpO3RoaXMucWE9bmV3IEkoMCwwLDAsMCl9O2wuUGE9ZnVuY3Rpb24oKXt0aGlzLnN8fChOZCgpLHRoaXMua2IoITEsdGhpcy5XKSxudWxsIT10aGlzLm0mJlwiXCIhPXRoaXMubSYmKHVjKHRoaXMubSksdGhpcy5tPVwiXCIpKTtYLnByb3RvdHlwZS5QYS5jYWxsKHRoaXMpO2JnKHRoaXMpfTtmdW5jdGlvbiBiZyhhKXtpZihhLnMmJnQ9PXQudG9wKXt2YXIgYj10LnBhZ2VZT2Zmc2V0O251bGwhPWImJihhLlg9TWF0aC5tYXgoYixhLlgpKTskZihhLDQse30pfX1sLnRhPWZ1bmN0aW9uKGEpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYSYmMCE9YS5sZW5ndGgpe3ZhciBiPW5ldyBRYyxjPVAuZigpO0woYixcIm9taWRcIixKKTtTYyhiLGEpO2I9TShiLFwib21pZFwiKTtudWxsIT09YiYmKGMuYS5iLm9taWQ9Yik7YT1TYyh0aGlzLmosYSk7Yz1hLnNwbGl0KFwiJlwiKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdO1widHM9MFwiPT1kP3RoaXMuJD0hMTowPT1kLmxhc3RJbmRleE9mKFwibGE9XCIsMCk/KGQ9ZC5zcGxpdChcIj1cIilbMV0sXCIwXCI9PWQ/dGhpcy5SPTI6XCIxXCI9PWQmJih0aGlzLlI9MSkpOjA9PWQubGFzdEluZGV4T2YoXCJjcj1cIiwwKT9cIjFcIj09ZC5zcGxpdChcIj1cIilbMV0mJih0aGlzLmZiPSEwKTpcImFkZj0xXCI9PWQmJih0aGlzLmxiPSEwKX10aGlzLmcuYT10aGlzLm9hKCk7WC5wcm90b3R5cGUudGEuY2FsbCh0aGlzLGEpfX07bC5VYT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD1HZih0aGlzLmMpLG09TWF0aC5mbG9vcigxMDAqdGhpcy5nLkQpO3RoaXMuUj0yNDI1MDA8PU9lKElmKHRoaXMpKT8xOjI7WC5wcm90b3R5cGUuVWEuY2FsbCh0aGlzLGEsYixjLGQsZSxmLGcpOy0xPT10aGlzLkkmJi0xIT10aGlzLmcuYj90aGlzLkk9dGhpcy5nLmI6MD09dGhpcy5JJiYxPT10aGlzLmcuYiYmKHRoaXMuST0xKTthPUdmKHRoaXMuYyk7Yj1NYXRoLmZsb29yKDEwMCp0aGlzLmcuRCk7KCFoJiZhfHxiIT1tKSYmdGhpcy5rYihhLGIpO3RyeXt0aGlzLkI9WGYodGhpcy5iLmIpfWNhdGNoKGspe31iZyh0aGlzKX07bC5vYT1mdW5jdGlvbigpe3JldHVybiB3Yj8hMToxPT10aGlzLlJ9O2Z1bmN0aW9uIGNnKGEsYixjKXt2YXIgZD1bXSxlPVtdO2Q9dm9pZCAwPT09ZD9bXTpkO2U9dm9pZCAwPT09ZT9bXTplO2EuSi5sZW5ndGh8fChhLkhhPWIsZCYmKGEuSj1kKSxhLkJhPXZvaWQgMD09PWM/XCJcIjpjKTshYS5GLmxlbmd0aCYmZSYmKGEuRj1lKX1mdW5jdGlvbiBkZyhhKXtpZihhLkNhKXJldHVybiBhLkNhO3ZhciBiPXt9O3JldHVybiBiLnJzdD12b2lkIDAsYi5kbHQ9dm9pZCAwLGIucnB0PXZvaWQgMCxiLmlzZD12b2lkIDAsYi5tc2Q9MDw9YS5YP2EuWDp2b2lkIDAsYn1sLm9iPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2Z1bmN0aW9uIGVnKGEsYixjLGQpe2RmLmNhbGwodGhpcyxhLGIsYyxkKX1yKGVnLGRmKTtlZy5wcm90b3R5cGUuaGI9ZnVuY3Rpb24oYSl7cmV0dXJuIFJlKGEsdGhpcy5sLHRoaXMuYywxPT1NKHRoaXMuQSxcIm9kXCIpKX07ZWcucHJvdG90eXBlLmRhPWZ1bmN0aW9uKCl7dGhpcy50aW1lc3RhbXA9UygpO3RoaXMuSmEoKTt0aGlzLllhKCk7dmFyIGE9dGhpcy5hO3ZhciBiPXRoaXMubDthPWEubGVmdDw9Yi5yaWdodCYmYi5sZWZ0PD1hLnJpZ2h0JiZhLnRvcDw9Yi5ib3R0b20mJmIudG9wPD1hLmJvdHRvbT9uZXcgSShNYXRoLm1heChhLnRvcCxiLnRvcCksTWF0aC5taW4oYS5yaWdodCxiLnJpZ2h0KSxNYXRoLm1pbihhLmJvdHRvbSxiLmJvdHRvbSksTWF0aC5tYXgoYS5sZWZ0LGIubGVmdCkpOm5ldyBJKDAsMCwwLDApO2I9YS50b3A+PWEuYm90dG9tfHxhLmxlZnQ+PWEucmlnaHQ/bmV3IEkoMCwwLDAsMCk6YTthPXRoaXMuYi5jO3ZhciBjPTAsZD0wLGU9MDswPCh0aGlzLmEuYm90dG9tLXRoaXMuYS50b3ApKih0aGlzLmEucmlnaHQtdGhpcy5hLmxlZnQpJiYodGhpcy5oYihiKT9iPW5ldyBJKDAsMCwwLDApOihjPVUuZigpLmwsZT1uZXcgSSgwLGMuaGVpZ2h0LGMud2lkdGgsMCksYz1OZShiLHRoaXMuYSksZD1OZShiLFUuZigpLmEpLGU9TmUoYixlKSkpO2I9Yi50b3A+PWIuYm90dG9tfHxiLmxlZnQ+PWIucmlnaHQ/bmV3IEkoMCwwLDAsMCk6cmMoYiwtdGhpcy5hLmxlZnQsLXRoaXMuYS50b3ApO0xlKCl8fChkPWM9MCk7dGhpcy5oPW5ldyBUZShhLHRoaXMuYSxiLGMsZCx0aGlzLnRpbWVzdGFtcCxlKX07ZWcucHJvdG90eXBlLkc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLkcoKX07ZnVuY3Rpb24gZmcoYSl7dmFyIGI9W107Z2cobmV3IGhnLGEsYik7cmV0dXJuIGIuam9pbihcIlwiKX1mdW5jdGlvbiBoZygpe31mdW5jdGlvbiBnZyhhLGIsYyl7aWYobnVsbD09YiljLnB1c2goXCJudWxsXCIpO2Vsc2V7aWYoXCJvYmplY3RcIj09dHlwZW9mIGIpe2lmKEFycmF5LmlzQXJyYXkoYikpe3ZhciBkPWI7Yj1kLmxlbmd0aDtjLnB1c2goXCJbXCIpO2Zvcih2YXIgZT1cIlwiLGY9MDtmPGI7ZisrKWMucHVzaChlKSxnZyhhLGRbZl0sYyksZT1cIixcIjtjLnB1c2goXCJdXCIpO3JldHVybn1pZihiIGluc3RhbmNlb2YgU3RyaW5nfHxiIGluc3RhbmNlb2YgTnVtYmVyfHxiIGluc3RhbmNlb2YgQm9vbGVhbiliPWIudmFsdWVPZigpO2Vsc2V7Yy5wdXNoKFwie1wiKTtlPVwiXCI7Zm9yKGQgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixkKSYmKGY9YltkXSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBmJiYoYy5wdXNoKGUpLGlnKGQsYyksYy5wdXNoKFwiOlwiKSxnZyhhLGYsYyksZT1cIixcIikpO2MucHVzaChcIn1cIik7cmV0dXJufX1zd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJzdHJpbmdcIjppZyhiLGMpO2JyZWFrO2Nhc2UgXCJudW1iZXJcIjpjLnB1c2goaXNGaW5pdGUoYikmJiFpc05hTihiKT9TdHJpbmcoYik6XCJudWxsXCIpO2JyZWFrO2Nhc2UgXCJib29sZWFuXCI6Yy5wdXNoKFN0cmluZyhiKSk7YnJlYWs7Y2FzZSBcImZ1bmN0aW9uXCI6Yy5wdXNoKFwibnVsbFwiKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKFwiVW5rbm93biB0eXBlOiBcIit0eXBlb2YgYik7fX19dmFyIGpnPXsnXCInOidcXFxcXCInLFwiXFxcXFwiOlwiXFxcXFxcXFxcIixcIi9cIjpcIlxcXFwvXCIsXCJcXGJcIjpcIlxcXFxiXCIsXCJcXGZcIjpcIlxcXFxmXCIsXCJcXG5cIjpcIlxcXFxuXCIsXCJcXHJcIjpcIlxcXFxyXCIsXCJcXHRcIjpcIlxcXFx0XCIsXCJcXHgwQlwiOlwiXFxcXHUwMDBiXCJ9LGtnPS9cXHVmZmZmLy50ZXN0KFwiXFx1ZmZmZlwiKT8vW1xcXFxcIlxceDAwLVxceDFmXFx4N2YtXFx1ZmZmZl0vZzovW1xcXFxcIlxceDAwLVxceDFmXFx4N2YtXFx4ZmZdL2c7ZnVuY3Rpb24gaWcoYSxiKXtiLnB1c2goJ1wiJyxhLnJlcGxhY2Uoa2csZnVuY3Rpb24oYyl7dmFyIGQ9amdbY107ZHx8KGQ9XCJcXFxcdVwiKyhjLmNoYXJDb2RlQXQoMCl8NjU1MzYpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSksamdbY109ZCk7cmV0dXJuIGR9KSwnXCInKX07ZnVuY3Rpb24gbGcoKXt0aGlzLmtleT1cImdvb2dfYWRzcGVlZFwiO3RoaXMuYz1bMyw0XTt0aGlzLmI9bnVsbH1sZy5wcm90b3R5cGUuYT1mdW5jdGlvbihhLGIsYyl7aWYoIXcodGhpcy5jLGMpfHwhZ2QobmV3IGZkKGEubCxhLk4pKSlyZXR1cm4hMTtjPXt9O2M9KGNbMF09dGhpcy5rZXksY1s0MF09ZmcoZGcoYSkpLGMpO3ZhciBkO2lmKGQ9dGhpcy5iKWE6e2Q9dGhpcy5iO2Zvcih2YXIgZSBpbiBkKWlmKCEoZSBpbiBjKXx8ZFtlXSE9PWNbZV0pe2Q9ITE7YnJlYWsgYX1mb3IodmFyIGYgaW4gYylpZighKGYgaW4gZCkpe2Q9ITE7YnJlYWsgYX1kPSEwfWlmKGQpcmV0dXJuITE7dGhpcy5iPWM7ZT17fTt4KGUsYyxiKTtyZXR1cm4gbWcoYSx7VmE6e30sTmE6ZX0pfTtmdW5jdGlvbiBuZygpe3RoaXMua2V5PVwiZ29vZ191cGRhdGVfZGF0YVwiO3RoaXMuYj0wO3RoaXMuYz0hMX1uZy5wcm90b3R5cGUuYT1mdW5jdGlvbihhLGIsYyl7aWYoYyE9dGhpcy5ifHwhZ2QobmV3IGZkKGEubCxhLk4pKSlyZXR1cm4hMTtjPTE9PWEuVDt2YXIgZD1HZihhLmMpLGU9e30sZj17fTtiPXtOYTooZVswXT10aGlzLmtleSxlWzQwXT1mZyhkZyhhKSksZSksVmE6T2JqZWN0LmFzc2lnbih7fSxiLChmLnI9Yi5yLGYpKX07aWYoYylyZXR1cm4gZCYmIXRoaXMuYz8odGhpcy5jPWQsbWcoYSxiKSk6ITE7dGhpcy5jPWQ7cmV0dXJuIG1nKGEsYil9O2Z1bmN0aW9uIG9nKGEpe25nLmNhbGwodGhpcyxhKTt0aGlzLmtleT1cImdvb2dfaW1hZ2VfcmVxdWVzdFwiO3RoaXMuYj0yfXIob2csbmcpO2Z1bmN0aW9uIHBnKGEpe25nLmNhbGwodGhpcyxhKTt0aGlzLmtleT1cImdvb2dfaW1hZ2VfcmVxdWVzdFwiO3RoaXMuYj0xfXIocGcsbmcpO3BnLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hYS5YYTtpZihHZihhLmMpJiZhLiR8fGQpe2lmKGI9bmcucHJvdG90eXBlLmEuY2FsbCh0aGlzLGEsYixjKSlpZihHZihhLmMpfHwoYS5YYT0hMCksR2YoYS5jKXx8YS4kKWEuJD0hMTtyZXR1cm4gYn1yZXR1cm4hMX07ZnVuY3Rpb24gcWcoKXt0aGlzLmI9W107dGhpcy5hPVtdfWZ1bmN0aW9uIHJnKCl7dmFyIGE9c2c7cmV0dXJuIDA9PWEuYi5sZW5ndGg/YS5hOjA9PWEuYS5sZW5ndGg/YS5iOkRhKGEuYSxhLmIpfXUocWcpO3ZhciBzZz1xZy5mKCk7ZnVuY3Rpb24gdGcoKXt0aGlzLmE9dGhpcy5iPW51bGx9ZnVuY3Rpb24gdWcoYSxiKXtmdW5jdGlvbiBjKGQsZSl7YihkLGUpfWlmKG51bGw9PWEuYilyZXR1cm4hMTthLmE9Q2EoYS5iLGZ1bmN0aW9uKGQpe3JldHVybiBudWxsIT1kJiZkLm5iKCl9KTthLmEmJihhLmEubWIoYyk/JGUoYS5hLmEpOmIoYS5hLmEuZWEoKSxhLmEpKTtyZXR1cm4gbnVsbCE9YS5hfXUodGcpO2Z1bmN0aW9uIHZnKGEpe2E9d2coYSk7ZmYuY2FsbCh0aGlzLGEubGVuZ3RoP2FbYS5sZW5ndGgtMV06bmV3IFYoRCwwKSk7dGhpcy5jPWE7dGhpcy5iPW51bGx9cih2ZyxmZik7bD12Zy5wcm90b3R5cGU7bC5HPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYj90aGlzLmI6dGhpcy5hKS5HKCl9O2wuTT1mdW5jdGlvbigpe3JldHVybih0aGlzLmI/dGhpcy5iOnRoaXMuYSkuTSgpfTtsLk89ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5iP3RoaXMuYjp0aGlzLmEpLk8oKX07bC5tYj1mdW5jdGlvbihhKXt2YXIgYj0hMTt2KHRoaXMuYyxmdW5jdGlvbihjKXtjLm1hKCkmJihiPSEwKX0pO2ImJih0aGlzLmc9YSxYZSh0aGlzLmEsdGhpcykpO3JldHVybiBifTtsLks9ZnVuY3Rpb24oKXt2KHRoaXMuYyxmdW5jdGlvbihhKXthLnBhKCk7YS5LKCl9KTtmZi5wcm90b3R5cGUuSy5jYWxsKHRoaXMpfTtsLm5iPWZ1bmN0aW9uKCl7cmV0dXJuIEJhKHRoaXMuYyxmdW5jdGlvbihhKXtyZXR1cm4gYS5SYSgpfSl9O2wuT2E9ZnVuY3Rpb24oKXtyZXR1cm4gQmEodGhpcy5jLGZ1bmN0aW9uKGEpe3JldHVybiBhLmJhKCl9KX07bC5aYT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG5ldyBlZyhhLHRoaXMuYSxiLGMpfTtsLlU9ZnVuY3Rpb24oYSl7dGhpcy5iPWEuYn07ZnVuY3Rpb24gd2coYSl7aWYoIWEubGVuZ3RoKXJldHVybltdO2E9eWEoYSxmdW5jdGlvbihjKXtyZXR1cm4gbnVsbCE9YyYmYy5SYSgpfSk7Zm9yKHZhciBiPTE7YjxhLmxlbmd0aDtiKyspWGUoYVtiLTFdLGFbYl0pO3JldHVybiBhfTt2YXIgeGc9e3RocmVzaG9sZDpbMCwuMywuNSwuNzUsMV19O2Z1bmN0aW9uIHlnKGEsYixjLGQpe2RmLmNhbGwodGhpcyxhLGIsYyxkKTt0aGlzLnM9dGhpcy5tPXRoaXMuaT10aGlzLmo9dGhpcy5nPW51bGx9cih5ZyxlZyk7bD15Zy5wcm90b3R5cGU7bC5wYj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5zfHwodGhpcy5zPVMoKSk7aWYoZGUoMjk4LGZ1bmN0aW9uKCl7cmV0dXJuIHpnKGEpfSkpcmV0dXJuITA7Vyh0aGlzLmIsXCJtc2ZcIik7cmV0dXJuITF9O2wudWE9ZnVuY3Rpb24oKXtpZih0aGlzLmcmJnRoaXMuYyl0cnl7dGhpcy5nLnVub2JzZXJ2ZSh0aGlzLmMpLHRoaXMuaj8odGhpcy5qLnVub2JzZXJ2ZSh0aGlzLmMpLHRoaXMuaj1udWxsKTp0aGlzLmkmJih0aGlzLmkuZGlzY29ubmVjdCgpLHRoaXMuaT1udWxsKX1jYXRjaChhKXt9fTtmdW5jdGlvbiBBZyhhKXtyZXR1cm4gYS5nJiZhLmcudGFrZVJlY29yZHM/YS5nLnRha2VSZWNvcmRzKCk6W119ZnVuY3Rpb24gemcoYSl7aWYoIWEuYylyZXR1cm4hMTt2YXIgYj1hLmMsYz1hLmIuYi5vLGQ9UC5mKCkuZy5hO2EuZz1uZXcgYy5JbnRlcnNlY3Rpb25PYnNlcnZlcihBZChkLGZ1bmN0aW9uKGUpe3JldHVybiBCZyhhLGUpfSkseGcpO2Q9QWQoZCxmdW5jdGlvbigpe2EuZy51bm9ic2VydmUoYik7YS5nLm9ic2VydmUoYik7QmcoYSxBZyhhKSl9KTtjLlJlc2l6ZU9ic2VydmVyPyhhLmo9bmV3IGMuUmVzaXplT2JzZXJ2ZXIoZCksYS5qLm9ic2VydmUoYikpOmMuTXV0YXRpb25PYnNlcnZlciYmKGEuaT1uZXcgdC5NdXRhdGlvbk9ic2VydmVyKGQpLGEuaS5vYnNlcnZlKGIse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pKTthLmcub2JzZXJ2ZShiKTtCZyhhLEFnKGEpKTtyZXR1cm4hMH1mdW5jdGlvbiBCZyhhLGIpe3RyeXtpZihiLmxlbmd0aCl7YS5tfHwoYS5tPVMoKSk7dmFyIGM9Q2coYiksZD1CYyhhLmMsYS5iLmIubyksZT1kLngsZj1kLnk7YS5hPWVmKGEsbmV3IEkoTWF0aC5yb3VuZChmKSxNYXRoLnJvdW5kKGUpK2MuYm91bmRpbmdDbGllbnRSZWN0LndpZHRoLE1hdGgucm91bmQoZikrYy5ib3VuZGluZ0NsaWVudFJlY3QuaGVpZ2h0LE1hdGgucm91bmQoZSkpKTt2YXIgZz15ZShjLmludGVyc2VjdGlvblJlY3QpO2EubD1yYyhnLGEuYS5sZWZ0LWcubGVmdCxhLmEudG9wLWcudG9wKX19Y2F0Y2goaCl7YS51YSgpLGZlKDI5OSxoKX19ZnVuY3Rpb24gQ2coYSl7cmV0dXJuIEFhKGEsZnVuY3Rpb24oYixjKXtyZXR1cm4gYi50aW1lPmMudGltZT9iOmN9LGFbMF0pfWwuZGE9ZnVuY3Rpb24oKXt2YXIgYT1BZyh0aGlzKTswPGEubGVuZ3RoJiZCZyh0aGlzLGEpO2VnLnByb3RvdHlwZS5kYS5jYWxsKHRoaXMpfTtsLkphPWZ1bmN0aW9uKCl7fTtsLmhiPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2wuWWE9ZnVuY3Rpb24oKXt9O2wuTT1mdW5jdGlvbigpe3ZhciBhPXt9O3JldHVybiBPYmplY3QuYXNzaWduKHRoaXMuYi5NKCksKGEubmlvdF9vYnM9dGhpcy5zLGEubmlvdF9jYms9dGhpcy5tLGEpKX07bC5HPWZ1bmN0aW9uKCl7cmV0dXJuXCJuaW9cIn07ZnVuY3Rpb24gRGcoYSl7YT12b2lkIDA9PT1hP0Q6YTtmZi5jYWxsKHRoaXMsbmV3IFYoYSwyKSl9cihEZyxmZik7RGcucHJvdG90eXBlLkc9ZnVuY3Rpb24oKXtyZXR1cm5cIm5pb1wifTtEZy5wcm90b3R5cGUuT2E9ZnVuY3Rpb24oKXt2YXIgYT16O3JldHVybiBhJiYwPD1hLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImNvYmFsdFwiKT8hMTohVS5mKCkuZyYmbnVsbCE9dGhpcy5hLmIuby5JbnRlcnNlY3Rpb25PYnNlcnZlcn07RGcucHJvdG90eXBlLlphPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IHlnKGEsdGhpcy5hLGIsYyl9O2Z1bmN0aW9uIEVnKCl7dmFyIGE9RmcoKTtWLmNhbGwodGhpcyxELnRvcCxhLFwiZ2VvXCIpfXIoRWcsVik7RWcucHJvdG90eXBlLkxhPWZ1bmN0aW9uKCl7cmV0dXJuIFUuZigpLmF9O0VnLnByb3RvdHlwZS5iYT1mdW5jdGlvbigpe3ZhciBhPUZnKCk7Y2YodGhpcyxhKTtyZXR1cm4gMj09YX07ZnVuY3Rpb24gRmcoKXtQLmYoKTt2YXIgYT1VLmYoKTtyZXR1cm4gYS5ofHxhLmc/MDoyfXUoRWcpO2Z1bmN0aW9uIEdnKCl7fXUoR2cpO2Z1bmN0aW9uIEhnKCl7dGhpcy5kb25lPSExO3RoaXMuYT17eWI6MCx4YjowLCRiOjAsYWI6MCxzYTotMSxDYjowLEJiOjAsRGI6MH07dGhpcy5pPW51bGw7dGhpcy5qPSExO3RoaXMuaD1cIlwiO3RoaXMuYj1udWxsO3RoaXMubD0wO3RoaXMuZz1uZXcgVWUodGhpcyl9ZnVuY3Rpb24gSWcoKXt2YXIgYT1ZO2lmKCFhLmope2Euaj0hMDtmb3IodmFyIGI9cmcoKSxjLGQ9MDtkPGIubGVuZ3RoOysrZCljPWJbZF0sYy5iLmImJk1mKGMpO0pnKGEsZnVuY3Rpb24oZSl7Zm9yKHZhciBmPVtdLGc9MDtnPGFyZ3VtZW50cy5sZW5ndGg7KytnKWZbZ109YXJndW1lbnRzW2ddO3JldHVybiBhLmMuYXBwbHkoYSxoYShmKSl9KTthLmMoKX19SGcucHJvdG90eXBlLnRiPWZ1bmN0aW9uKCl7S2codGhpcyxyZygpLCExKX07ZnVuY3Rpb24gTGcoKXtHZy5mKCk7dmFyIGE9dGcuZigpO251bGwhPWEuYSYmYS5hLmE/JGUoYS5hLmEpOkllKFUuZigpKX1mdW5jdGlvbiBLZyhhLGIsYyl7aWYoIWEuZG9uZSYmKGEuZy5jYW5jZWwoKSwwIT1iLmxlbmd0aCkpe2EuYj1udWxsO3RyeXtMZygpO3ZhciBkPVMoKSxlPVAuZigpO2UubD1kO2lmKG51bGwhPXRnLmYoKS5hKWZvcihlPTA7ZTxiLmxlbmd0aDtlKyspS2YoYltlXSxkLGMpO2Vsc2UgZWUoYS5oLHtzdHJhdGVneV9ub3Rfc2VsZWN0ZWQ6MSxiaW46ZS5ifSk7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKylMZihiW2RdKTsrK2EuYS5hYjtNZyhhKX1maW5hbGx5e2M/dihiLGZ1bmN0aW9uKGYpe3JldHVybiBmLlNhKCl9KTpWZShhLmcpfX19ZnVuY3Rpb24gSmcoYSxiKXtpZighYS5pKXtiPSRkKDE0MixiKTtPKCk7dmFyIGM7Qy52aXNpYmlsaXR5U3RhdGU/Yz1cInZpc2liaWxpdHljaGFuZ2VcIjpDLm1velZpc2liaWxpdHlTdGF0ZT9jPVwibW96dmlzaWJpbGl0eWNoYW5nZVwiOkMud2Via2l0VmlzaWJpbGl0eVN0YXRlJiYoYz1cIndlYmtpdHZpc2liaWxpdHljaGFuZ2VcIik7YyYmV2IoQyxjLGIse2NhcHR1cmU6ITF9KSYmKGEuaT1iKX19SGcucHJvdG90eXBlLmM9ZnVuY3Rpb24oKXt2YXIgYT1MZSgpLGI9UygpO2E/KG1lfHwoaGU9Yix2KHNnLmIsZnVuY3Rpb24oYyl7cmV0dXJuIGMuYy5pKGIsIWMuaCgpKX0pKSxtZT0hMCk6KHRoaXMubD1OZyh0aGlzLGIpLG1lPSExLHYoc2cuYixmdW5jdGlvbihjKXtjLmdhKCkmJmMuYy5oKGIpfSkpO0tnKHRoaXMscmcoKSwhYSl9O2Z1bmN0aW9uIE9nKGEsYixjKXtpZighYS5ifHxjKXtjPWIuZG9jdW1lbnQ7dmFyIGQ9LTEsZT1TKCk7LTE9PWEuYS5zYSYmKGQ9ZSk7dmFyIGY9VS5mKCksZz1QLmYoKSxoPVJjKGcuYSksbT1yZygpO3RyeXtpZigwPG0ubGVuZ3RoKXt2YXIgaz1mLmE7ayYmKGguYnM9W29jKGspLHBjKGspXSk7dmFyIHA9Zi5jO3AmJihoLnBzPVtwLndpZHRoLHAuaGVpZ2h0XSk7Yi5zY3JlZW4mJihoLnNjcz1bYi5zY3JlZW4ud2lkdGgsYi5zY3JlZW4uaGVpZ2h0XSl9ZWxzZSBoLnVybD1lbmNvZGVVUklDb21wb25lbnQoYi5sb2NhdGlvbi5ocmVmLnN1YnN0cmluZygwLDUxMikpLGMucmVmZXJyZXImJihoLnJlZmVycmVyPWVuY29kZVVSSUNvbXBvbmVudChjLnJlZmVycmVyLnN1YnN0cmluZygwLDUxMikpKTtoLnR0PWQ7aC5wdD0tMTtoLmJpbj1nLmI7dm9pZCAwIT09Yi5nb29nbGVfb3NkX2xvYWRfcHViX3BhZ2VfZXhwJiYoaC5vbHBwPWIuZ29vZ2xlX29zZF9sb2FkX3B1Yl9wYWdlX2V4cCk7aC5kZWI9WzEsYS5hLnliLGEuYS54YixhLmEuYWIsYS5hLnNhLHVlLGEuZy5iLGEuYS5DYixhLmEuQmIsYS5hLkRiXS5qb2luKFwiLVwiKTtoLnR2dD1OZyhhLGUpO2YuZyYmKGguaW5hcHA9MSk7aWYobnVsbCE9PWImJmIhPWIudG9wKXswPG0ubGVuZ3RoJiYoaC5pZnJhbWVfbG9jPWVuY29kZVVSSUNvbXBvbmVudChiLmxvY2F0aW9uLmhyZWYuc3Vic3RyaW5nKDAsNTEyKSkpO3ZhciBuPWYuYjtoLmlzPVtvYyhuKSxwYyhuKV19fWNhdGNoKEcpe2guZXJyb3I9MX1hLmI9aH1hPVVhKGEuYik7Yj1QLmYoKS5nO3ZhciBxO2lmKDE9PU0oYi5jLFwicHJmXCIpKXtrPW5ldyB5ZDtwPWIuYTtuPTA7LTE8cC5hJiYobj1wLmcuYS5hKCktcC5hKTtrPVJiKGssMSxwLmMrbik7cD1iLmE7az1SYihrLDUsLTE8cC5hP3AuYisxOnAuYik7az1SYihrLDIsYi5iLmEuZygpKTtrPVJiKGssMyxiLmIuYS5jKCkpO2s9UmIoayw0LGIuYi5hLmIoKSk7Yj17fTtwPW5ldyBKYjtuPVBiKGssMSk7bj1udWxsPT1uP246K247bj1udWxsPT1uPzA6bjtpZigwIT09biYmKGM9bixudWxsIT1jKSl7bWIocC5hLDkpO249cC5hO2U9YztlPShjPTA+ZT8xOjApPy1lOmU7aWYoMD09PWUpa2I9MDwxL2U/MDoyMTQ3NDgzNjQ4LGpiPTA7ZWxzZSBpZihpc05hTihlKSlrYj0yMTQ3NDgzNjQ3LGpiPTQyOTQ5NjcyOTU7ZWxzZSBpZigxLjc5NzY5MzEzNDg2MjMxNTdFMzA4PGUpa2I9KGM8PDMxfDIxNDY0MzUwNzIpPj4+MCxqYj0wO2Vsc2UgaWYoMi4yMjUwNzM4NTg1MDcyMDE0RS0zMDg+ZSllLz1NYXRoLnBvdygyLC0xMDc0KSxrYj0oYzw8MzF8ZS80Mjk0OTY3Mjk2KT4+PjAsamI9ZT4+PjA7ZWxzZXtmPWU7ZD0wO2lmKDI8PWYpZm9yKDsyPD1mJiYxMDIzPmQ7KWQrKyxmLz0yO2Vsc2UgZm9yKDsxPmYmJi0xMDIyPGQ7KWYqPTIsZC0tO2UqPU1hdGgucG93KDIsLWQpO2tiPShjPDwzMXxkKzEwMjM8PDIwfDEwNDg1NzYqZSYxMDQ4NTc1KT4+PjA7amI9NDUwMzU5OTYyNzM3MDQ5NiplPj4+MH1uYihuLGpiKTtuYihuLGtiKX1uPVFiKGssMik7MCE9PW4mJm51bGwhPW4mJktiKHAsMixuKTtuPVFiKGssMyk7MCE9PW4mJm51bGwhPW4mJktiKHAsMyxuKTtuPVFiKGssNCk7MCE9PW4mJm51bGwhPW4mJktiKHAsNCxuKTtuPVFiKGssNSk7aWYoMCE9PW4mJm51bGwhPW4mJm51bGwhPW4paWYobWIocC5hLDQwKSxrPXAuYSwwPD1uKW1iKGssbik7ZWxzZXtmb3IoYz0wOzk+YztjKyspay5hLnB1c2gobiYxMjd8MTI4KSxuPj49NztrLmEucHVzaCgxKX1rPW5ldyBVaW50OEFycmF5KHAuYS5sZW5ndGgoKSk7Yz1wLmI7ZD1jLmxlbmd0aDtmb3IoZT1uPTA7ZTxkO2UrKylmPWNbZV0say5zZXQoZixuKSxuKz1mLmxlbmd0aDtjPXAuYTtkPWMuYTtjLmE9W107ay5zZXQoZCxuKTtwLmI9W2tdO3ZvaWQgMD09PXEmJihxPTApO2lmKCFJYilmb3IoSWI9e30scD1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCIuc3BsaXQoXCJcIiksbj1bXCIrLz1cIixcIisvXCIsXCItXz1cIixcIi1fLlwiLFwiLV9cIl0sYz0wOzU+YztjKyspZm9yKGQ9cC5jb25jYXQobltjXS5zcGxpdChcIlwiKSksSGJbY109ZCxlPTA7ZTxkLmxlbmd0aDtlKyspZj1kW2VdLHZvaWQgMD09PUliW2ZdJiYoSWJbZl09ZSk7cT1IYltxXTtwPVtdO2ZvcihuPTA7bjxrLmxlbmd0aDtuKz0zKWc9a1tuXSxoPShjPW4rMTxrLmxlbmd0aCk/a1tuKzFdOjAsZj0oZD1uKzI8ay5sZW5ndGgpP2tbbisyXTowLGU9Zz4+MixnPShnJjMpPDw0fGg+PjQsaD0oaCYxNSk8PDJ8Zj4+NixmJj02MyxkfHwoZj02NCxjfHwoaD02NCkpLHAucHVzaChxW2VdLHFbZ10scVtoXXx8XCJcIixxW2ZdfHxcIlwiKTtxPShiLnBmPXAuam9pbihcIlwiKSxiKX1lbHNlIHE9e307eChhLHEpO3JldHVybiBhfWZ1bmN0aW9uIFBnKCl7dihyZygpLGZ1bmN0aW9uKGEpe2EuYi5hJiZHZy5mKCl9KX1mdW5jdGlvbiBNZyhhKXt2YXIgYj1QLmYoKSxjPTE9PT1NKGIuYSxcImxscFwiKTtcIm9zZFwiPT1hLmgmJnYoc2cuYSxmdW5jdGlvbihkKXtpZihjKXtpZigxPT1iLmJ8fEdmKGQuYyl8fGQudSl7dmFyIGU9e307JGYoZCwwLChlLnI9dm9pZCAwLGUpKX19ZWxzZSBlPXt9LCRmKGQsMCwoZS5yPXZvaWQgMCxlKSl9KX1mdW5jdGlvbiBOZyhhLGIpe2E9YS5sO21lJiYoYSs9Yi1oZSk7cmV0dXJuIGF9ZnVuY3Rpb24gUWcoYSl7cmV0dXJuKGE9YS5tYXRjaCgvWyZcXD87XWFkZj0oWzAtOV0rKS8pKSYmMj09YS5sZW5ndGg/cGFyc2VJbnQoYVsxXSwxMCk6MH1mdW5jdGlvbiBSZygpe3ZhciBhPVk7dmFyIGI9dm9pZCAwPT09Yj9mdW5jdGlvbigpe3JldHVybnt9fTpiO2FlLmg9XCJhdi1qc1wiO1dkLmE9LjAxO2NlKFtmdW5jdGlvbihjKXt2YXIgZD1QLmYoKSxlPXt9O3goYywoZS5iaW49ZC5iLGUudHlwZT1cImVycm9yXCIsZSksUmMoZC5hKSxPZyhhLEQpLGIoKSk7aWYoZD1yZigpKWU9e30seChjLChlLnY9ZW5jb2RlVVJJQ29tcG9uZW50KGQpLGUpKX1dKX1mdW5jdGlvbiBTZyhhKXt2YXIgYj1uZXcgVGc7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDU6cmV0dXJuW107ZGVmYXVsdDpyZXR1cm4gYT00PT09UC5mKCkuYixbbmV3IG5nKGIpLG5ldyBwZyhiKSxuZXcgb2coYildLmNvbmNhdChoYShhP1tdOltuZXcgbGddKSl9fXUoSGcpO3ZhciBZPUhnLmYoKTtmdW5jdGlvbiBUZygpe31mdW5jdGlvbiBtZyhhLGIpe2I9Ynx8e307dmFyIGM9dm9pZCAwPT09Yi5WYT97fTpiLlZhO2I9dm9pZCAwPT09Yi5OYT97fTpiLk5hO3ZhciBkPWIucixlPWNbMF0sZj1PZyhZLEVjKCksITEpLGc9e307eChnLGYsYyk7Yz17fTt2YXIgaD1nO2g9dm9pZCAwPT09aD97fTpoO2c9e307dmFyIG09VS5mKCk7Zj1SYyhhLmopO3ZhciBrPW0uaixwPUlmKGEpO2YucD1bcC50b3Aray55LHAubGVmdCtrLngscC5ib3R0b20ray55LHAucmlnaHQray54XTtrPWEuYztmLnRvcz1BZihrLmEpO2YubXRvcz1DZihrLmEpO2YubWN2dD1rLmMuYTtmLnJzPWEuWjsocD01PT1hLlopfHwoZi5odD1hLkZhKTswPD1hLmFhJiYoZi50ZnM9YS5hYSxmLnRscz1hLnJiKTtmLm1jPXZlKGsuYik7Zi5sdGU9dmUoYS5XKTtmLmJhcz1hLmNiO2YuYmFjPWEuSTttLmgmJihmW1wiaWZcIl09YS51PzA6MSk7Zi5tZXQ9YS5iLmM7cCYmYS5EYSYmKGYucmVxPWVuY29kZVVSSUNvbXBvbmVudChhLkRhKS5zdWJzdHJpbmcoMCwxMDApKTthLm9hKCkmJihmLmxhPVwiMVwiKTtmLmF2bXM9YS5hP2EuYS5HKCk6XCJuc1wiO2EuYSYmeChmLGEuYS5NKCkpOzAhPWEuaCYmKGYubWQ9YS5oKTtmLmJ0cj1udWxsIT1hLm0mJlwiXCIhPWEubT8xOjA7Zi5jcG1hdj1udWxsIT1hLlAmJm51bGwhPWEuUC5tYXRjaCgvXFwvcGFnZWFkXFwvYWR2aWV3XFw/LiphaT0uKiZ2dD1cXGQrL2kpPzE6MDtmLmxtPWEuVDt4KGYsZGcoYSkpO2gmJngoZixoKTtmLmFkaz1hLmw7YS5sYiYmYS5FYSYmKGYuYWRmPWEuRWEpO2g9YS51O209UC5mKCk7IWQmJmgmJm0uaCYmKGQ9bS5oKTtkJiYoZi5yPWQpOzA9PT1hLkImJihmLmludmlzPTEpO2Q9cWYoZikuam9pbihcIiZcIik7Z1szXT1kO2dbMTFdPWg7Z1syOV09UC5mKCkuYjtnWzBdPWU7Z1s3XT1hLmcuRDtnWzldPUFlKGEucWEpO2dbMjhdPWEuWjtnWzMyXT1hLmE/YS5hLkcoKTpcIm5zXCI7Z1s1XT1HZihhLmMpJiY0IT1hLlQ7Z1sxM109Q2YoYS5jLmEpLmpvaW4oXCIsXCIpO2dbMThdPTA9PU9lKElmKGEpKTtudWxsIT1hLmNhJiYoZ1syMF09YS5jYS55LGdbMjFdPWEuY2EueCk7ZT1VLmYoKTtudWxsIT1lLmImJihnWzIyXT1vYyhlLmIpLGdbMjNdPXBjKGUuYikpO251bGwhPWUuYSYmKGdbMzBdPW9jKGUuYSksZ1szMV09cGMoZS5hKSxnWzM4XT1BZShlLmEpKTtkPWUuajtmPUlmKGEpO2dbMzddPUFlKG5ldyBJKGYudG9wK2QueSxmLnJpZ2h0K2QueCxmLmJvdHRvbStkLnksZi5sZWZ0K2QueCkpO2UuYyYmKGU9ZS5jLGdbMzldPWUud2lkdGgrXCItXCIrZS5oZWlnaHQpOy0xIT1hLkImJihnWzI1XT1hLkIpO3NlKG5ldyBmZChhLmwsYS5OKSxnKTt4KGMsZyxiKTtiPWEuYi5hO2E9YS5HYTt0cnl7dmFyIG49dGUoYyk7Q2UoYixuLGEpfWNhdGNoKHEpe31yZXR1cm4hMH07ZnVuY3Rpb24gVWcoKXtWLmNhbGwodGhpcyxELDIsXCJpZW1cIil9cihVZyxWKTtsPVVnLnByb3RvdHlwZTtsLkxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShxLEcpe3JldHVybiEhYi5vLmRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocSxHKX12YXIgYj10aGlzLGM9bmV3IEkoMCx0aGlzLm8uaW5uZXJXaWR0aHx8dGhpcy5vLndpZHRoLHRoaXMuby5pbm5lckhlaWdodHx8dGhpcy5vLmhlaWdodCwwKSxkPWJjKGRvY3VtZW50KSxlPU1hdGguZmxvb3IoYy5sZWZ0LWQueCksZj1NYXRoLmZsb29yKGMudG9wLWQueSksZz1NYXRoLmZsb29yKGMucmlnaHQtZC54KSxoPU1hdGguZmxvb3IoYy5ib3R0b20tZC55KTtjPWEoZSxmKTtkPWEoZyxoKTtpZihjJiZkKXJldHVybiBuZXcgSShmLGcsaCxlKTt2YXIgbT1hKGcsZiksaz1hKGUsaCk7aWYoYyloPVooZixoLGZ1bmN0aW9uKHEpe3JldHVybiBhKGUscSl9KSxnPVooZSxnLGZ1bmN0aW9uKHEpe3JldHVybiBhKHEsZil9KTtlbHNlIGlmKG0paD1aKGYsaCxmdW5jdGlvbihxKXtyZXR1cm4gYShnLHEpfSksZT1aKGcsZSxmdW5jdGlvbihxKXtyZXR1cm4gYShxLGYpfSk7ZWxzZSBpZihrKWY9WihoLGYsZnVuY3Rpb24ocSl7cmV0dXJuIGEoZSxxKX0pLGc9WihlLGcsZnVuY3Rpb24ocSl7cmV0dXJuIGEocSxoKX0pO2Vsc2UgaWYoZClmPVooaCxmLGZ1bmN0aW9uKHEpe3JldHVybiBhKGcscSl9KSxlPVooZyxlLGZ1bmN0aW9uKHEpe3JldHVybiBhKHEsaCl9KTtlbHNle3ZhciBwPU1hdGguZmxvb3IoKGUrZykvMiksbj1NYXRoLmZsb29yKChmK2gpLzIpO2lmKCFhKHAsbikpcmV0dXJuIG5ldyBJKDAsMCwwLDApO2Y9WihuLGYsZnVuY3Rpb24ocSl7cmV0dXJuIGEocCxxKX0pO2g9WihuLGgsZnVuY3Rpb24ocSl7cmV0dXJuIGEocCxxKX0pO2U9WihwLGUsZnVuY3Rpb24ocSl7cmV0dXJuIGEocSxuKX0pO2c9WihwLGcsZnVuY3Rpb24ocSl7cmV0dXJuIGEocSxuKX0pfXJldHVybiBuZXcgSShmLGcsaCxlKX07ZnVuY3Rpb24gWihhLGIsYyl7aWYoYyhiKSlyZXR1cm4gYjtmb3IodmFyIGQ9MTU7ZC0tOyl7dmFyIGU9TWF0aC5mbG9vcigoYStiKS8yKTtpZihlPT1hfHxlPT1iKWJyZWFrO2MoZSk/YT1lOmI9ZX1yZXR1cm4gYX1sLmJhPWZ1bmN0aW9uKCl7cmV0dXJuIFUuZigpLmgmJkImJkRiKDgpJiZxZSh0aGlzLm8pfTtsLnZhPWZ1bmN0aW9uKCl7fTtsLndhPWZ1bmN0aW9uKCl7fTtsLlFhPWZ1bmN0aW9uKCl7fTtsLnFiPWZ1bmN0aW9uKCl7fTt1KFVnKTtmdW5jdGlvbiBWZygpe1YuY2FsbCh0aGlzLEQsMixcIm1yYWlkXCIpO3RoaXMuQj0wO3RoaXMudT10aGlzLkE9ITE7dGhpcy5pPW51bGw7dGhpcy5hPXBlKHRoaXMubyk7dGhpcy5jLmE9bmV3IEkoMCwwLDAsMCk7dGhpcy5GPSExfXIoVmcsVik7bD1WZy5wcm90b3R5cGU7bC5iYT1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLmEuTH07bC5LYT1mdW5jdGlvbigpe3ZhciBhPXt9O3RoaXMuQiYmKGEubXJhaWQ9dGhpcy5CKTt0aGlzLkEmJihhLm1sYz0xKTthLm10b3A9dGhpcy5hLkdiO3RoaXMuaSYmKGEubXNlPXRoaXMuaSk7dGhpcy5GJiYoYS5tc2M9MSk7YS5tY3A9dGhpcy5hLnJhO3JldHVybiBhfTtsLlY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDsrK2QpY1tkLTFdPWFyZ3VtZW50c1tkXTt0cnl7cmV0dXJuIHRoaXMuYS5MW2FdLmFwcGx5KHRoaXMuYS5MLGMpfWNhdGNoKGUpe2ZlKDUzOCxlLC4wMSxmdW5jdGlvbihmKXtmLm1ldGhvZD1hfSl9fTtmdW5jdGlvbiBXZyhhLGIsYyl7YS5WKFwiYWRkRXZlbnRMaXN0ZW5lclwiLGIsYyl9bC5tYT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYodGhpcy5sKXJldHVybiF0aGlzLmZhKCk7dGhpcy5sPSEwO2lmKDI9PT10aGlzLmEucmEpcmV0dXJuIHRoaXMuaT1cIm5nXCIsVyh0aGlzLFwid1wiKSwhMTtpZigxPT09dGhpcy5hLnJhKXJldHVybiB0aGlzLmk9XCJtbVwiLFcodGhpcyxcIndcIiksITE7VS5mKCkucz0hMDt0aGlzLm8uZG9jdW1lbnQucmVhZHlTdGF0ZSYmXCJjb21wbGV0ZVwiPT10aGlzLm8uZG9jdW1lbnQucmVhZHlTdGF0ZT9YZyh0aGlzKTpUKHRoaXMubyxcImxvYWRcIixmdW5jdGlvbigpe08oKS5zZXRUaW1lb3V0KFIoMjkyLGZ1bmN0aW9uKCl7cmV0dXJuIFhnKGEpfSksMTAwKX0sMjkyKTtyZXR1cm4hMH07ZnVuY3Rpb24gWGcoYSl7UC5mKCkuaT0hIWEuVihcImlzVmlld2FibGVcIik7V2coYSxcInZpZXdhYmxlQ2hhbmdlXCIsWWcpO1wibG9hZGluZ1wiPT09YS5WKFwiZ2V0U3RhdGVcIik/V2coYSxcInJlYWR5XCIsWmcpOiRnKGEpfWZ1bmN0aW9uICRnKGEpe1wic3RyaW5nXCI9PT10eXBlb2YgYS5hLkwuQUZNQV9MSURBUj8oYS5BPSEwLGFoKGEpKTooYS5hLnJhPTMsYS5pPVwibmNcIixXKGEsXCJ3XCIpKX1mdW5jdGlvbiBhaChhKXthLnU9ITE7dmFyIGI9MT09TShQLmYoKS5hLFwicm1tdFwiKSxjPSEhYS5WKFwiaXNWaWV3YWJsZVwiKTsoYj8hYzoxKSYmTygpLnNldFRpbWVvdXQoUig1MjQsZnVuY3Rpb24oKXthLnV8fChiaChhKSxmZSg1NDAsRXJyb3IoKSksYS5pPVwibXRcIixXKGEsXCJ3XCIpKX0pLDUwMCk7Y2goYSk7V2coYSxhLmEuTC5BRk1BX0xJREFSLGRoKX1mdW5jdGlvbiBjaChhKXt2YXIgYj0xPT1NKFAuZigpLmEsXCJzbmVpb1wiKSxjPXZvaWQgMCE9PWEuYS5MLkFGTUFfTElEQVJfRVhQXzEsZD12b2lkIDAhPT1hLmEuTC5BRk1BX0xJREFSX0VYUF8yOyhiPWImJmQpJiYoYS5hLkwuQUZNQV9MSURBUl9FWFBfMj0hMCk7YyYmKGEuYS5MLkFGTUFfTElEQVJfRVhQXzE9IWIpfWZ1bmN0aW9uIGJoKGEpe2EuVihcInJlbW92ZUV2ZW50TGlzdGVuZXJcIixhLmEuTC5BRk1BX0xJREFSLGRoKTthLkE9ITF9bC52YT1mdW5jdGlvbigpe3ZhciBhPVUuZigpLGI9ZWgodGhpcyxcImdldE1heFNpemVcIik7YS5hPW5ldyBJKDAsYi53aWR0aCxiLmhlaWdodCwwKX07bC53YT1mdW5jdGlvbigpe1UuZigpLmw9ZWgodGhpcyxcImdldFNjcmVlblNpemVcIil9O2Z1bmN0aW9uIGVoKGEsYil7aWYoXCJsb2FkaW5nXCI9PT1hLlYoXCJnZXRTdGF0ZVwiKSlyZXR1cm4gbmV3IEYoLTEsLTEpO2I9YS5WKGIpO2lmKCFiKXJldHVybiBuZXcgRigtMSwtMSk7YT1wYXJzZUludChiLndpZHRoLDEwKTtiPXBhcnNlSW50KGIuaGVpZ2h0LDEwKTtyZXR1cm4gaXNOYU4oYSl8fGlzTmFOKGIpP25ldyBGKC0xLC0xKTpuZXcgRihhLGIpfWwuSz1mdW5jdGlvbigpe2JoKHRoaXMpO1YucHJvdG90eXBlLksuY2FsbCh0aGlzKX07ZnVuY3Rpb24gWmcoKXt0cnl7dmFyIGE9VmcuZigpO2EuVihcInJlbW92ZUV2ZW50TGlzdGVuZXJcIixcInJlYWR5XCIsWmcpOyRnKGEpfWNhdGNoKGIpe2ZlKDU0MSxiKX19ZnVuY3Rpb24gZGgoYSxiKXt0cnl7dmFyIGM9VmcuZigpO2MudT0hMDt2YXIgZD1hP25ldyBJKGEueSxhLngrYS53aWR0aCxhLnkrYS5oZWlnaHQsYS54KTpuZXcgSSgwLDAsMCwwKTt2YXIgZT1hZihjKTtlLmE9ZDtlLnZvbHVtZT1iO2MuVShlKX1jYXRjaChmKXtmZSg1NDIsZil9fWZ1bmN0aW9uIFlnKGEpe3ZhciBiPVAuZigpLGM9VmcuZigpO2EmJiFiLmkmJihiLmk9ITAsYy5GPSEwLGMuaSYmVyhjLFwid1wiLCEwKSl9dShWZyk7ZnVuY3Rpb24gZmgoKXtWLmNhbGwodGhpcyxELDEsXCJvc2RcIik7dGhpcy5hPW51bGw7dGhpcy5CPVtdO3RoaXMuRj10aGlzLnU9dGhpcy5pPXRoaXMuQT0wO3RoaXMuSD0hMH1yKGZoLFYpO2w9ZmgucHJvdG90eXBlO2wuS2E9ZnVuY3Rpb24oKXt2YXIgYT17fTtyZXR1cm4gYS5leGc9MSxhfTtsLnpiPWZ1bmN0aW9uKGEpe3codGhpcy5CLGEpfHx0aGlzLkIucHVzaChhKX07ZnVuY3Rpb24gZ2goYSl7dmFyIGI9MDthPWEubzt0cnl7aWYoYSYmYS5Hb29nX0FkU2Vuc2VfZ2V0QWRBZGFwdGVySW5zdGFuY2UpcmV0dXJuIGF9Y2F0Y2goYyl7fWZvcig7YSYmNT5iOyl7dHJ5e2lmKGEuZ29vZ2xlX29zZF9zdGF0aWNfZnJhbWUpcmV0dXJuIGEuZ29vZ2xlX29zZF9zdGF0aWNfZnJhbWV9Y2F0Y2goYyl7fXRyeXtpZihhLmFzd2lmdF8wJiZhLmFzd2lmdF8wLmdvb2dsZV9vc2Rfc3RhdGljX2ZyYW1lKXJldHVybiBhLmFzd2lmdF8wLmdvb2dsZV9vc2Rfc3RhdGljX2ZyYW1lfWNhdGNoKGMpe31iKys7YT1hIT1hLnBhcmVudD9hLnBhcmVudDpudWxsfXJldHVybiBudWxsfWZ1bmN0aW9uIGhoKGEsYil7dmFyIGM9e307c2UoUC5mKCkuYyxjKTtjWzBdPVwiZ29vZ19yZXF1ZXN0X21vbml0b3JpbmdcIjtjWzZdPTQ7Y1sxNl09ITE7YS5hJiZpaChhLmEsYyk7dHJ5e3ZhciBkPXRlKGMpO2IucG9zdE1lc3NhZ2UoZCxcIipcIil9Y2F0Y2goZSl7fX1mdW5jdGlvbiBqaChhKXsrK2EudTtpZigyPT1hLkEpa2goYSk7ZWxzZXtpZigxMDxhLnUpe2lmKDIwPGEudSl7VyhhLFwibm9cIik7cmV0dXJufTExPT1hLnUmJihPKCkuY2xlYXJJbnRlcnZhbChhLmkpLGEuaT1PKCkuc2V0SW50ZXJ2YWwoUigxOTcsZnVuY3Rpb24oKXtyZXR1cm4gamgoYSl9KSw1MDApKX1pZihhLm8ucG9zdE1lc3NhZ2UpaWYoZ2QoUC5mKCkuYykpe3ZhciBiPWdoKGEpO2ImJmhoKGEsYil9ZWxzZSBXKGEsXCJpYlwiKTtlbHNlIFcoYSxcImNcIil9fWwubWE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKHRoaXMubClyZXR1cm4hdGhpcy5mYSgpO3RoaXMubD0hMDtpZighZ2QoUC5mKCkuYykpcmV0dXJuIFcodGhpcyxcImliXCIpLCExO1QodCxcIm1lc3NhZ2VcIixmdW5jdGlvbihjKXtpZihudWxsIT1jJiZjLmRhdGEmJlwic3RyaW5nXCI9PT10eXBlb2YgYy5kYXRhKXt2YXIgZD1jLmRhdGE7aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBkKXZhciBlPW51bGw7ZWxzZXtlPXt9O2Q9ZC5zcGxpdChcIlxcblwiKTtmb3IodmFyIGY9MDtmIT1kLmxlbmd0aDsrK2Ype3ZhciBnPWRbZl0saD1nLmluZGV4T2YoXCI9XCIpO2lmKCEoMD49aCkpe3ZhciBtPU51bWJlcihnLnN1YnN0cigwLGgpKTtnPWcuc3Vic3RyKGgrMSk7c3dpdGNoKG0pe2Nhc2UgMzY6Y2FzZSA4OmNhc2UgMTE6Y2FzZSAxNjpjYXNlIDU6Y2FzZSAxODpnPVwidHJ1ZVwiPT1nO2JyZWFrO2Nhc2UgNDpjYXNlIDMzOmNhc2UgNjpjYXNlIDI1OmNhc2UgMjg6Y2FzZSAyOTpjYXNlIDI0OmNhc2UgMzE6Y2FzZSAzMDpjYXNlIDIzOmNhc2UgMjI6Y2FzZSA3OmNhc2UgMjE6Y2FzZSAyMDpnPU51bWJlcihnKTticmVhaztjYXNlIDM6aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGRlY29kZVVSSUNvbXBvbmVudCl0cnl7Zz1kZWNvZGVVUklDb21wb25lbnQoZyl9Y2F0Y2gocCl7dGhyb3cgRXJyb3IoXCJFcnJvcjogVVJJIG1hbGZvcm1lZDogXCIrZyk7fX1lW21dPWd9fWU9ZVswXT9lOm51bGx9aWYoZD1lKWQ9bmV3IGZkKGVbNF0sZVsxMl0pLGY9UC5mKCkuYyxkPWYuYXx8ZC5hP2YuYT09ZC5hOmYuYnx8ZC5iP2YuYj09ZC5iOiExO2lmKGQmJihkPWVbMjldLGY9ZVswXSx3KFtcImdvb2dfYWNrbm93bGVkZ2VfbW9uaXRvcmluZ1wiLFwiZ29vZ19nZXRfbW9kZVwiLFwiZ29vZ191cGRhdGVfZGF0YVwiLFwiZ29vZ19pbWFnZV9yZXF1ZXN0XCIsXCJnb29nX2Fkc3BlZWRcIl0sZikpKXtsaChhLGUpO2lmKFwiZ29vZ19nZXRfbW9kZVwiPT1mJiZjLnNvdXJjZSl7bT17fTtzZShQLmYoKS5jLG0pO21bMF09XCJnb29nX3Byb3ZpZGVfbW9kZVwiO21bNl09NDttWzE2XT0hMTthLmEmJmloKGEuYSxtKTt0cnl7dmFyIGs9dGUobSk7Yy5zb3VyY2UucG9zdE1lc3NhZ2UoayxjLm9yaWdpbik7bWgoYSxrKX1jYXRjaChwKXtmZSg0MDYscCl9fWlmKFwiZ29vZ19nZXRfbW9kZVwiPT1mfHxcImdvb2dfYWNrbm93bGVkZ2VfbW9uaXRvcmluZ1wiPT1mKWEuYSYmKGEuYS5aPWVbMjhdKSxhLkE9MixraChhKTtpZihhLmF8fGEuZy5sZW5ndGgpe2M9ND09ZDtpZighYyl7bT1lWzBdO2Q9ITE7Zj1VLmYoKTtrPWEuYy5hOyhnPWVbMzJdKSYmXCJvc2RcIiE9PWcmJigxPT1NKFAuZigpLmEsXCJyeGxpc3RcIik/YS5DPVwib3NkXCI6YS5DPWcpO1wiZ29vZ19hY2tub3dsZWRnZV9tb25pdG9yaW5nXCI9PW0mJigodm9pZCAwIT09ZVszNl0/ZVszNl06IWVbOF0pP2NmKGEsMik6Y2YoYSwwKSxXZShhKSk7ZVszN10mJihtPUJlKGVbMzddKSkmJihkPSEwLGYuaj1uZXcgRShtLmxlZnQsbS50b3ApKTtpZihlWzM4XSl7aWYobT1CZShlWzM4XSkpZD0hMCxmLmE9bX1lbHNlIGlzTmFOKGVbMzBdKXx8aXNOYU4oZVszMV0pfHwoZi5hfHwoZi5hPW5ldyBJKDAsMCwwLDApKSxkPSEwLGYuYS5yaWdodD1mLmEubGVmdCtlWzMwXSxmLmEuYm90dG9tPWYuYS50b3ArZVszMV0pO2VbOV0mJihkPSEwLG09QmUoZVs5XSkpJiYoaz1tLGYubT1tKTtlWzM5XSYmKChtPWVbMzldKT8obT1tLnNwbGl0KFwiLVwiKSxtPTI9PW0ubGVuZ3RoP25ldyBGKGZiKG1bMF0pLGZiKG1bMV0pKTpudWxsKTptPW51bGwsbSYmKGYuYz1tKSk7ZCYmKGQ9YWYoYSksZC5hPWssYS5VKGQpKX1rPUVlKGVbM10pLnI7aWYoYylzd2l0Y2goZD1lWzBdLGM9MTAwKmVbMjVdLFwibnVtYmVyXCIhPT10eXBlb2YgY3x8aXNOYU4oYyl8fGEuYSYmKHdpbmRvdy5kb2N1bWVudFtcIjRDR2VBcmJWUVwiXT1jfDApLHZvaWQgMCE9ZVsxOF0mJmEuYSYmKGEuYS5ZPWVbMThdKSxjPWVbN10sdm9pZCAwIT1jJiYwPGMmJmEuYSYmKGM9YS5hLGMuVCYmKGY9XCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9nZW5fMjA0P2lkPWFjX29wcCZ2c2JsdD1cIitlWzddLGMuRiYmKGYrPVwiJmF2aT1cIitjLkYpLHRmKGYpLGMuVD0hMSkpLGY9ISFlWzVdLGM9ISFlWzExXSxcImdvb2dfdXBkYXRlX2RhdGFcIiE9ZCYmXCJnb29nX2ltYWdlX3JlcXVlc3RcIiE9ZHx8IWEuYXx8KG09YS5hLG0uaj1FZShlWzNdKSwrK20uJCksbT0hYyYmXCJnb29nX3VwZGF0ZV9kYXRhXCI9PWQmJiFlWzE4XSxkKXtjYXNlIFwiZ29vZ19pbWFnZV9yZXF1ZXN0XCI6YS5hJiZuaChhLmEsa3x8XCJ1XCIsZixjKTtjYXNlIFwiZ29vZ191cGRhdGVfZGF0YVwiOmlmKG0mJmEuYSYmKGs9YS5hLGsuQz0hMCxvaChrKSYmay5TJiYoZD1rLmosMyE9ay5iKSkpe2Qucj1cIm1cIjtmb3IobT0wO208ay5nLmxlbmd0aDsrK20pZz1waChrLGsuZ1ttXSxkLCEwKSx0ZihnKTtrLlM9ITF9ZiYmYS5hJiYoaz1hLmEsb2goaykmJihrLkI9ITAscWgoayxcIjFcIiksay5IJiYzIT1rLmImJiFrLlkmJih1YyhrLkgpLGsuSD1cIlwiKSxrLmwmJihkPVVhKGsuaiksZC5yPVwidlwiLHJoKGssZCwhMCkpLGsubHx8MSE9ay5jfHwoay5SPSEwKSkpO2MmJmEuYSYmKGM9YS5hLG9oKGMpJiYoYy5oPSExLGMuUz0hMSxxaChjLFwiM1wiKSxjLmwmJihrPVVhKGMuaiksbnVsbCE9PWsmJlwiclwiaW4ga3x8KGsucj1cInVrXCIpLHJoKGMsaywhMCkpKSl9ZWxzZVwiYWNcIj09ayYmYS5hJiZuaChhLmEsXCJhY1wiLHZvaWQgMCx2b2lkIDApOyhjPWVbNDBdKSYmYS5hJiYoYz1KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChjKSksaz17fSxzaCgoay5yc3Q9Yy5yc3Qsay5kbHQ9Yy5kbHQsay5ycHQ9Yy5ycHQsay5pc2Q9Yy5pc2Qsay5tc2Q9Yy5tc2QsaykpKTtlWzExXSYmKGU9RWUoZVszXSkucnx8XCJtc2ZcIixXKGEsZSkpfX19fSwxMTgpO3ZhciBiPVIoMTk3LGZ1bmN0aW9uKCl7amgoYSl9KTt0aGlzLkE9MTtiKCk7dGhpcy5pPU8oKS5zZXRJbnRlcnZhbChiLDEwMCk7cmV0dXJuITB9O2wucGE9ZnVuY3Rpb24oKXt2YXIgYT17fTtzZShQLmYoKS5jLGEpO2FbMF09XCJnb29nX3N0b3BfbW9uaXRvcmluZ1wiO21oKHRoaXMsdGUoYSkpO2toKHRoaXMpfTtmdW5jdGlvbiBraChhKXtPKCkuY2xlYXJJbnRlcnZhbChhLmkpO2EuaT0wfWZ1bmN0aW9uIG1oKGEsYil7dmFyIGM9Z2goYSksZD0hYztkJiYoYz1hLm8ucGFyZW50KTtpZihjJiZjLnBvc3RNZXNzYWdlKXRyeXtjLnBvc3RNZXNzYWdlKGIsXCIqXCIpLGQmJmEuby5wb3N0TWVzc2FnZShiLFwiKlwiKSxhLkYrK31jYXRjaChlKXt9fWZ1bmN0aW9uIGxoKGEsYil7dihhLkIsZnVuY3Rpb24oYyl7YyhiKX0pfWwuUmE9ZnVuY3Rpb24oKXtyZXR1cm4gND09PVAuZigpLmI/ITA6dGhpcy5iYSgpfTtsLnZhPWZ1bmN0aW9uKCl7fTtsLndhPWZ1bmN0aW9uKCl7fTtsLlFhPWZ1bmN0aW9uKCl7fTtsLmJhPWZ1bmN0aW9uKCl7cmV0dXJuIFUuZigpLmgmJiF0aGlzLnN9O3UoZmgpO2Z1bmN0aW9uIHRoKCl7dmFyIGE9L1smXFw/I11leGs9KFteJiBdKykvLmV4ZWMoRC5sb2NhdGlvbi5ocmVmKTtyZXR1cm4gYSYmMj09YS5sZW5ndGg/YVsxXTpudWxsfTt2YXIgdWg9W1wiRlJBTUVcIixcIklNR1wiLFwiSUZSQU1FXCJdLHZoPS9eWzAxXShweCk/JC87ZnVuY3Rpb24gd2goYSxiLGMpe2Z1bmN0aW9uIGQoR2Epe2h8fChoPSEwLGIoR2EpKX12YXIgZT0hMSxmPSEwLGc9ITE7ZT12b2lkIDA9PT1lPyEwOmU7Zj12b2lkIDA9PT1mPyExOmY7Zz12b2lkIDA9PT1nPyExOmc7YT1cInN0cmluZ1wiPT09dHlwZW9mIGE/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk6YTtpZighYSlyZXR1cm4hMTtjfHwoYz1mdW5jdGlvbihHYSxSYSxTYSl7R2EuYWRkRXZlbnRMaXN0ZW5lcihSYSxTYSl9KTtmb3IodmFyIGg9ITEsbSxrLHA9MDtwPHVoLmxlbmd0aDsrK3ApaWYodWhbcF09PWEudGFnTmFtZSl7az0zO209W2FdO2JyZWFrfW18fChtPWEucXVlcnlTZWxlY3RvckFsbCh1aC5qb2luKFwiLFwiKSksaz0yKTt2YXIgbj0wO2E9ITE7Zm9yKHA9MDtwPG0ubGVuZ3RoO3ArKyl7dmFyIHE9bVtwXTtpZihnfHwhKFwiSU1HXCIhPXEudGFnTmFtZXx8IXEuY29tcGxldGV8fHEubmF0dXJhbFdpZHRoJiZxLm5hdHVyYWxIZWlnaHQ/dmgudGVzdChxLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKSYmdmgudGVzdChxLmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSk6MSkpe2lmKFwiSU1HXCI9PXEudGFnTmFtZSl2YXIgRz1xLm5hdHVyYWxXaWR0aCYmcS5uYXR1cmFsSGVpZ2h0PyEwOiExO2Vsc2UgdHJ5e0c9XCJjb21wbGV0ZVwiPT09KHEucmVhZHlTdGF0ZT9xLnJlYWR5U3RhdGU6cS5jb250ZW50V2luZG93JiZxLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQmJnEuY29udGVudFdpbmRvdy5kb2N1bWVudC5yZWFkeVN0YXRlKT8hMDohMX1jYXRjaChHYSl7Rz12b2lkIDA9PT1mPyExOmZ9Rz9hPSEwOihuKyssYyhxLFwibG9hZFwiLGZ1bmN0aW9uKCl7bi0tO258fGQoayl9KSl9fW09bnVsbDtpZigwPT09biYmIWEmJlwiY29tcGxldGVcIj09PXQuZG9jdW1lbnQucmVhZHlTdGF0ZSlrPTU7ZWxzZSBpZihufHwhYSlyZXR1cm4gYyh0LFwibG9hZFwiLGZ1bmN0aW9uKCl7ZCg0KX0pLCExO2UmJmQoayk7cmV0dXJuITB9O2Z1bmN0aW9uIHhoKCl7dGhpcy51PTA7dGhpcy5GPVwiXCI7dGhpcy5nPVtdO3RoaXMuVz1cIlwiO3RoaXMuWT10aGlzLkM9dGhpcy5CPXRoaXMuQT10aGlzLmg9dGhpcy5sPXRoaXMuUz0hMTt0aGlzLkk9bmV3IGZkKG51bGwsbnVsbCk7dmFyIGE9e307dGhpcy5qPShhLm10b3M9XCIwLDAsMCwwLDBcIixhLm1jdnQ9XCIwXCIsYS5wPVwiMCwwLDAsMFwiLGEudG9zPVwiMCwwLDAsMCwwXCIsYSk7dGhpcy5QPVtdO3RoaXMuUj0hMTt0aGlzLkg9dGhpcy5OPVwiXCI7dGhpcy5hPW5ldyBaYzt0aGlzLko9ITE7dGhpcy5iPTA7dGhpcy5tPXRoaXMucz1udWxsO3RoaXMuJD10aGlzLmM9MDt0aGlzLlg9XCJcIjt0aGlzLlQ9ITE7dGhpcy5pPW51bGw7dGhpcy5hYT10aGlzLlo9MDtWYyhQLmYoKS5hKTtSZygpfWw9eGgucHJvdG90eXBlO2wua2E9ZnVuY3Rpb24oYSl7dmFyIGI9dGcuZigpLmE7c3dpdGNoKGEuTygpKXtjYXNlIDA6YiYmWWUoYi5hLHRoaXMpO3loKHRoaXMsYSk7YnJlYWs7Y2FzZSAyOmImJlllKGIuYSx0aGlzKX19O2wuVT1mdW5jdGlvbigpe307bC5oYT1mdW5jdGlvbigpe3JldHVybiExfTtmdW5jdGlvbiByaChhLGIsYyxkKXtjPXZvaWQgMD09PWM/ITE6YztkPXZvaWQgMD09PWQ/ITE6ZDthOntmb3IoZSBpbiBiKXt2YXIgZT0hMTticmVhayBhfWU9ITB9aWYoIShlfHxhLlJ8fDIhPWEuYyYmIWMpJiYzIT1hLmIpe2ZvcihlPTA7ZTxhLmcubGVuZ3RoOysrZSl7dmFyIGY9cGgoYSxhLmdbZV0sYixjLGQpO2lmKE0oUC5mKCkuYSxcInNiZW9zXCIpJiYhYyl7dmFyIGc9RWMoKXx8RDtpZihnLm5hdmlnYXRvciYmZy5uYXZpZ2F0b3Iuc2VuZEJlYWNvbil7dmFyIGg9c2YoZi50b1N0cmluZygpKS5zcGxpdChcIj9cIik7Zz1nLm5hdmlnYXRvci5zZW5kQmVhY29uKGhbMF0saFsxXSl9ZWxzZSBnPSExO2d8fHRmKGYudG9TdHJpbmcoKStcIiZzYmVycj0xXCIpfWVsc2UgdGYoZil9ZHx8KGM/YS5sPSExOmEuUj0hMCl9fWZ1bmN0aW9uIHpoKGEsYil7dmFyIGM9W107YSYmYy5wdXNoKFwiYXZpPVwiK2EpO2ImJmMucHVzaChcImNpZD1cIitiKTtyZXR1cm4gYy5sZW5ndGg/XCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL2FjdGl2ZXZpZXc/XCIrYy5qb2luKFwiJlwiKTpcIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vYWN0aXZldmlld1wifWZ1bmN0aW9uIHBoKGEsYixjLGQsZSl7dmFyIGY9dm9pZCAwPT09Zj80RTM6ZjtkPSh2b2lkIDA9PT1lPzA6ZSk/XCJvc2RleHBcIjoodm9pZCAwPT09ZD8wOmQpPzE9PU0oUC5mKCkuYSxcImF2eG1cIik/XCJvc2R4bVwiOlwib3NkaW1cIjphLkE/XCJvc2QyXCI6XCJvc2R0b3NcIjtiKz0tMTxiLmluZGV4T2YoXCI/XCIpP1wiJlwiOlwiP1wiO2U9UC5mKCk7eChjLFJjKGUuYSkpO2MuaWQ9ZDtjLnZzPWEuQj80OmEuQz8zOjI7XCJvc2QyXCI9PWQmJmEuaCYmYS5CJiYoYy50c2Y9MSk7Yy51Yz1hLiQ7ZD1maC5mKCkuRjtjLnVwYz1kO2MudGd0PWEuYS5hP2EuYS5hP2EuYS5hLnRhZ05hbWU6XCJcIjpcIm5mXCI7Yy5jbD1hLko/MTowO2lmKGQ9YS5hKWMuY2VjPWQuaCxjLndmPWQuaT8xOjAsYy5jYWM9ZC5nLGQ9ZC5hLGMuY2Q9ZD9kLmNsaWVudFdpZHRoK1wieFwiK2QuY2xpZW50SGVpZ2h0OlwibmZcIixjLml0cGw9ZD9OdW1iZXIoWGMoZCxcImdvb2dsZUF2SXRwbFwiKSl8fDA6LTE7Zm9yKGQ9MDtkPGEuUC5sZW5ndGg7ZCsrKXt2YXIgZz1lPXZvaWQgMCxoPXZvaWQgMDt0cnl7dmFyIG09ZmEoYS5QW2RdKCkpO2U9bS5uZXh0KCkudmFsdWU7Zz1tLm5leHQoKS52YWx1ZTtoPW0ubmV4dCgpLnZhbHVlfWNhdGNoKGspe31jW2VdPWcubGVuZ3RoPGY/ZzpofHxcIm1heF9sZW5ndGhcIn1hPXZvaWQgMCE9PWM/bmYobWYobmV3IGtmLGMpKTpcIlwiO3JldHVybiBiK2F9ZnVuY3Rpb24gcWgoYSxiKXtpZihhLk4pe3RyeXt1YyhUYihhLk4sXCJ2aVwiLGIpKX1jYXRjaChjKXt9dyhBaCxiKSYmKGEuTj1cIlwiKX19ZnVuY3Rpb24gbmgoYSxiLGMsZCl7Yz12b2lkIDA9PT1jPyExOmM7ZD12b2lkIDA9PT1kPyExOmQ7dmFyIGU9VWEoYS5qKTtlLnI9YjtiPSEwOzE9PU0oUC5mKCkuYSxcImF2eG1cIikmJihiPWN8fGQpO2ImJihiPWM/NDpkPzI6MyxiPXZvaWQgMD09PWI/MzpiLGEubCYmMyE9KHZvaWQgMD09PWI/MzpiKSYmcmgoYSxlLCEwKSxiPWEuQnx8YS5DLGEuQXx8YS5oJiZiKSYmKHJoKGEsZSksYS5BPSExLGEuaD0hMSk7Y3x8ZHx8cWgoYSxcIjBcIil9ZnVuY3Rpb24gb2goYSl7cmV0dXJuIDE9PWEuY3x8Mj09YS5jfHxhLmx9bC5BYj1mdW5jdGlvbihhKXt0aGlzLlAucHVzaChhKX07ZnVuY3Rpb24gQmgoYSl7dmFyIGI9ZmguZigpO1AuZigpLmM9YS5JO2IuYT1hO2IubWEoKX1mdW5jdGlvbiBDaChhKXthLmI9RGUoYS5hLmEpO2lmKDE9PWEuYnx8Mz09YS5iKXt2YXIgYj1hLmEuYTthLm09UigyODMsZnVuY3Rpb24oKXthLmI9RGUoYS5hLmEpO2lmKDAhPWEuYil7aWYoYS5pKXt2YXIgZD1hLmksZT1hLmI7ZC5oIT1lJiYoYWcoZCxlKSxkLmdhKCkmJlkuYygpKX0yPT1hLmImJihkPWEuYS5hLGEucz8oYS5zLmRpc2Nvbm5lY3QoKSxhLnM9bnVsbCk6ZCYmZC5yZW1vdmVFdmVudExpc3RlbmVyJiZkLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01BdHRyTW9kaWZpZWRcIixhLm0pKTthLm09bnVsbH19KTtpZihNdXRhdGlvbk9ic2VydmVyJiZiKXt2YXIgYz17YXR0cmlidXRlczohMH07Yy5hdHRyaWJ1dGVGaWx0ZXI9W1wiZGF0YS1cIitoYihcImdvb2dsZUF2RG1cIildO2Eucz1uZXcgdC5NdXRhdGlvbk9ic2VydmVyKGEubSk7YS5zLm9ic2VydmUoYixjKX1lbHNlIGImJmIuYWRkRXZlbnRMaXN0ZW5lcj9iLmFkZEV2ZW50TGlzdGVuZXIoXCJET01BdHRyTW9kaWZpZWRcIixhLm0pOmZlKDI4NixFcnJvcigpKX19ZnVuY3Rpb24gRGgoYSl7YS5KPSEwO0VoKGEpO2E9YS5pO2Euc3x8KGEuUGEoKSxhLmdhKCkmJlkuYygpKX1mdW5jdGlvbiBpaChhLGIpe3ZhciBjPVAuZigpO2JbNl09NDtiWzE2XT1hLmg7YT10LnBlcmZvcm1hbmNlO2JbMzNdPWEmJmEudGltaW5nJiZhLnRpbWluZy5kb21Mb2FkaW5nfHwtMTtiWzI5XT1jLmJ9ZnVuY3Rpb24gRmgoKXt2YXIgYT1QLmYoKTtpZigxPT1NKGEuYSxcInJ4bGlzdFwiKSYmIXViKXJldHVybiBhPVtWZy5mKCksRWcuZigpLFVnLmYoKSxmaC5mKCldLFtuZXcgRGcoRCksbmV3IHZnKGEpXTt2YXIgYj1bRWcuZigpLFVnLmYoKV0sYz0xPT1NKGEuYSxcImFtcFwiKTsoMSE9TShhLmEsXCJ4ZGlcIil8fGMpJiZiLnVuc2hpZnQoZmguZigpKTtyZXR1cm5bbmV3IHZnKGIpLG5ldyBEZyhEKV19ZnVuY3Rpb24geWgoYSxiKXtpZihhLmkmJiFhLmkubmEoKSl7dmFyIGM9W25ldyBEZyhEKV0sZD10Zy5mKCk7ZC5iPWM7dWcoZCxmdW5jdGlvbihlLGYpe0doKGEsZSxmKX0pP0pmKGEuaSxkLmEpOkdoKGEsXCJpXCIsYil9fWZ1bmN0aW9uIEhoKGEpe3ZhciBiPXRnLmYoKTtpZihudWxsPT1iLmEpe2lmKG51bGw9PWIuYil7dmFyIGM9RmgoKTtiLmI9Y311ZyhiLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KT9ZLmRvbmV8fChYZShiLmEuYSxhKSxJaCgpKTpHaChhLFwiaVwiKX19ZnVuY3Rpb24gRWgoYSl7dmFyIGI9UC5mKCksYz1ELmxvY2F0aW9uLmhyZWYsZD1TZyhhLmMpO2Q9bmV3IFlmKEQsYyxhLmEuYSwtMSxhLloscWEsZCk7ZWQoZC5iKTthLmk9ZDtkLlQ9YS5jO2QuR2E9W0RdO2QuSWE9YS5qYTtkLnRhKGEuWCk7ZC5sPWEuSS5iO2QuTj1hLkkuYTtkLkVhPVFnKGMpO2NnKGQsYS5GLGEuVyk7c2cuYS5wdXNoKGQpO2FnKGQsYS5iKTtQZygpO2M9dGcuZigpO251bGwhPWMuYT9KZihkLGMuYSk6TmYoZCxmdW5jdGlvbigpe3JldHVybiBudWxsfSxmdW5jdGlvbihlKXtmb3IodmFyIGY9W10sZz0wO2c8YXJndW1lbnRzLmxlbmd0aDsrK2cpZltnXT1hcmd1bWVudHNbZ107cmV0dXJuIGEuamEuYXBwbHkoYSxoYShmKSl9KTtiLmgmJmEuamEoZCxiLmgpO3JldHVybiBkfWZ1bmN0aW9uIEdoKGEsYixjKXtQLmYoKS5oPWI7Zm9yKHZhciBkPWZhKHNnLmEpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWEuamEoZS52YWx1ZSxiKTtKaChiLGMpfWZ1bmN0aW9uIHNoKGEpe3Yoc2cuYSxmdW5jdGlvbihiKXtiLkNhPWF9KX1sLmphPWZ1bmN0aW9uKGEsYil7YS51PSEwO3ZhciBjPXt9OyRmKGEsMiwoYy5yPWIsYykpO2EuYSYmYS5hLnVhKCl9O2Z1bmN0aW9uIEpoKGEsYil7aWYoIVkuZG9uZSYmc2cuYS5sZW5ndGgpe1kuZy5jYW5jZWwoKTt2YXIgYz1PZyhZLEVjKCksITEpO2ImJihjLmF2bXM9Yi5HKCkseChjLGIuTSgpKSk7Yz17fTthPShjLnI9YSxjKTtiJiYoYS5hdm1zPWIuRygpLHgoYSxiLk0oKSkpO2I9c2cuYTswPGIubGVuZ3RoJiZLZyhZLGIsITApO2I9ZmEoYik7Zm9yKGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWM9Yy52YWx1ZSxjLnU9ITAsJGYoYywxLGEpO1kuZG9uZT0hMDtmaC5mKCkucGEoKX19ZnVuY3Rpb24gS2goYSxiKXthLlg9YjtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpe2I9U2MoUC5mKCkuYSxiKS5zcGxpdChcIiZcIik7Zm9yKHZhciBjPWIubGVuZ3RoLTE7MDw9YztjLS0pe3ZhciBkPWJbY10sZT1HYztkPT1lLnZiPyhhLmg9ITEsYi5zcGxpY2UoYywxKSk6ZD09ZS51YiYmKGEuVD0hMCxiLnNwbGljZShjLDEpKX1JZChQLmYoKSxiLmpvaW4oXCImXCIpKX19ZnVuY3Rpb24gSWgoKXtpZigtMT09WS5hLnNhKXt2YXIgYT1FYygpO0lnKCk7YS5zZXRUaW1lb3V0KFIoMTMxLGZ1bmN0aW9uKCl7SmgoXCJ0XCIpfSksMzZFNSk7WS5hLnNhPVMoKS0gLTF9fWZ1bmN0aW9uIExoKGEpe2Z1bmN0aW9uIGIoZSl7ZCYmY3x8KGQ9ITAsbmgoYSxlLGEuQiwhYS5DKSl9dmFyIGM9MT09TShQLmYoKS5hLFwicGhlbFwiKSxkPSExO1QoRCxcInVubG9hZFwiLGZ1bmN0aW9uKCl7YihcInVcIil9LDExOSk7YyYmVChELFwicGFnZWhpZGVcIixmdW5jdGlvbigpe2IoXCJwaFwiKX0sNDkwKX1mdW5jdGlvbiBNaChhKXtDaChhKTthLko9d2goYS5hLmEsZnVuY3Rpb24oKXtyZXR1cm4gRGgoYSl9LGZ1bmN0aW9uKGIsYyxkKXtUKGIsYyxkLDExNil9KTthLkomJkRoKGEpfWZ1bmN0aW9uIE5oKGEsYil7ZnVuY3Rpb24gYygpe2lmKCFhLmEuYSl7dmFyIGU9YS5hLGY9bnVsbDt2YXIgZz0oRC5kb2N1bWVudHx8ZG9jdW1lbnQpLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiU0NSSVBUXCIpOzA8Zy5sZW5ndGgmJihnPWdbZy5sZW5ndGgtMV0pJiZnLnBhcmVudEVsZW1lbnQmJihmPWcucGFyZW50RWxlbWVudCk7Znx8KGY9RC5kb2N1bWVudC5ib2R5KTtpZihnPWYpe2Y9U3RyaW5nKGIpO2c9ZGQoZyxbXCJHb29nbGVBY3RpdmVWaWV3RWxlbWVudFwiXSk7Zm9yKHZhciBoPVtdLG09ZmEoZyksaz1tLm5leHQoKTshay5kb25lO2s9bS5uZXh0KCkpaz1rLnZhbHVlLFljKGssXCJnb29nbGVBdkFka1wiKSYmWGMoayxcImdvb2dsZUF2QWRrXCIpPT1mJiZoLnB1c2goayk7Mj09aC5sZW5ndGgmJihkYyhoWzBdLGhbMV0pP2g9W2hbMV1dOmRjKGhbMV0saFswXSkmJihoPVtoWzBdXSkpO2UuaD1nLmxlbmd0aDtlLmc9aC5sZW5ndGg7MT09aC5sZW5ndGg/ZS5hPWhbMF06KGY9aCxmLmxlbmd0aD8oZz1hZChmKSxmPTA8Zy5sZW5ndGg/Z1swXTpmWzBdKTpmPW51bGwsZS5hPWYpfWQtLTthLmEuYT9NaChhKTowPGQ/RC5zZXRUaW1lb3V0KCRkKDEyMixjKSwxMDApOihlPUVoKGEpLGEuamEoZSxcIm5cIikpfX12YXIgZD0xMDtjKCl9bC5FYj1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsbSxrLHApe3ZhciBuPXRoaXM7RGF0ZSYmRCYmRC5zY3JlZW4mJkQuZG9jdW1lbnQmJkQuZG9jdW1lbnQuYm9keSYmRC5kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKFAuZigpLmI9NCx0aGlzLnU9YSx0aGlzLk49Yix0aGlzLkg9ZCx0aGlzLmw9ZixnJiZLaCh0aGlzLGcpLGE9UC5mKCksYS5iPTQsdGhpcy5oPWYsdGhpcy5JPW5ldyBmZChlLHRoKCkpLFQoRCxcImxvYWRcIixmdW5jdGlvbigpe3FoKG4sXCItMVwiKX0sMTE3KSx0aGlzLkY9Y3x8XCJcIix0aGlzLlc9bSxjPWt8fHpoKGMsbSksdyh0aGlzLmcsYyl8fHRoaXMuZy5wdXNoKGMpLHAmJiF3KHRoaXMuZyxwKSYmdGhpcy5nLnB1c2gocCksTGgodGhpcyksKHA9VS5mKCkuZ3x8eSh6LFwiQ3JLZXlcIil8fHkoeixcIlBsYXlTdGF0aW9uXCIpfHx5KHosXCJSb2t1XCIpfHxGZSgpfHx5KHosXCJYYm94XCIpfHxHZSgpfHxIZSgpKXx8KE8oKSxwPTAhPT1qZCgpKSxwPygxPT1NKGEuYSxcImVwb2hcIikmJlQoRC5kb2N1bWVudCxcInZpc2liaWxpdHljaGFuZ2VcIixmdW5jdGlvbigpe3ZhciBxPUQuZG9jdW1lbnQ7KG51bGwhPXEuaGlkZGVuP3EuaGlkZGVuOm51bGwhPXEubW96SGlkZGVuP3EubW96SGlkZGVuOm51bGwhPXEud2Via2l0SGlkZGVuJiZxLndlYmtpdEhpZGRlbikmJiEoMzw9bi5hYSkmJihuLmFhKysscT1VYShuLmopLHEucj1cImh2Y1wiLHJoKG4scSwhMSwhMCkpfSw0NTUpLDE9PU0oYS5hLFwiZXBwaFwiKSYmVChELFwicGFnZWhpZGVcIixNYShmdW5jdGlvbigpe2lmKG4uQyl7dmFyIHE9VWEobi5qKTtxLnI9XCJwaFwiO3JoKG4scSwhMSwhMCl9fSksNDU3KSwtMT09dGhpcy51P3RoaXMuYz1mPzM6MTotMj09dGhpcy51P3RoaXMuYz0zOjA8dGhpcy51JiYodGhpcy5jPTIsdGhpcy5BPSEwKSx0aGlzLmgmJiF0aGlzLkEmJi0xPT10aGlzLnUmJih0aGlzLmM9MiksWS5oPVwib3NkXCIsYS5qPTk0NzE5MDU0MixCaCh0aGlzKSxIaCh0aGlzKSxOaCh0aGlzLGUpKTooZT17fSxlPShlLnI9XCJwdlwiLGUpLHJoKHRoaXMsZSwhMCksdGhpcy5jPTUsQmgodGhpcykpKX07dSh4aCk7dmFyIEFoPVtcIjFcIixcIjBcIixcIjNcIl0sT2g9UigxMjMsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKWJbY109YXJndW1lbnRzW2NdO3ZhciBkO3JldHVybihkPXhoLmYoKSkuRWIuYXBwbHkoZCxoYShiKSl9KTtwYShcIm9zZGxmbVwiLE9oKTt2YXIgUGg9UigxMjQsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKWJbY109YXJndW1lbnRzW2NdO3ZhciBkO3JldHVybihkPXhoLmYoKSkuQWIuYXBwbHkoZCxoYShiKSl9KTtwYShcIm9zZGxhY1wiLFBoKTt2YXIgUWg9UigxMjUsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKWJbY109YXJndW1lbnRzW2NdO3ZhciBkO3JldHVybihkPWZoLmYoKSkuemIuYXBwbHkoZCxoYShiKSl9KTtwYShcIm9zZGxhbXJjXCIsUWgpO30pLmNhbGwodGhpcyx0aGlzLHRoaXMuZG9jdW1lbnQpO1xuIn0sICJoZWFkZXJzU2l6ZSI6IDE2MzIsICJib2R5U2l6ZSI6IDI4Njk3LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAzMDMyOX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDg0OS44NjgsICJyZWNlaXZlIjogMTY4LjUzMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTIyWiIsICJ0aW1lIjogLTEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvYW1wNGFkcy12MC5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjJaIiwgInRpbWUiOiAtMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hbXA0YWRzLXYwLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IC0xLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIn0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAiIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsic2VuZCI6IC0xLCAid2FpdCI6IC0xLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjEyM1oiLCAidGltZSI6IC0xLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2FtcC1hZC1leGl0LTAuMS5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjNaIiwgInRpbWUiOiAtMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hbXAtYW5hbHl0aWNzLTAuMS5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjNaIiwgInRpbWUiOiAtMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hbXAtZml0LXRleHQtMC4xLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IC0xLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAieC11bmtub3duIn0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAtMSwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogLTEsICJfZmFpbHVyZVRleHQiOiAiIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsic2VuZCI6IC0xLCAid2FpdCI6IC0xLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjEyM1oiLCAidGltZSI6IC0xLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2FtcC1mb3JtLTAuMS5qcy5kb3dubG9hZCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tLyJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAtMSwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biJ9LCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogLTEsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IC0xLCAiX2ZhaWx1cmVUZXh0IjogIiJ9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7InNlbmQiOiAtMSwgIndhaXQiOiAtMSwgInJlY2VpdmUiOiAtMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUifSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjNaIiwgInRpbWUiOiAxOTI3LjQ5NTAwMDAwMDAwMDEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvaWNvbi5wbmciLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFtdLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogOTcsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0LVJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkFnZSIsICJ2YWx1ZSI6ICI1Mjc0MyJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDY3ZmQyMDM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0yOTAzMDQwMCwgaW1tdXRhYmxlIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIyOTUifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJpbWFnZS9wbmcifSwgeyJuYW1lIjogIkRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToyMCBHTVQifSwgeyJuYW1lIjogIkVUYWciLCAidmFsdWUiOiAiXCJRbWJOMkduTThYdW5rR0p1Q0xTbmR0bWZEc254RkxjZVhtRXJvd3ZCYzNlUnNIXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2ljb24ucG5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJOMkduTThYdW5rR0p1Q0xTbmR0bWZEc254RkxjZVhtRXJvd3ZCYzNlUnNIIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogImhpdCJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyOTUsICJtaW1lVHlwZSI6ICJpbWFnZS9wbmciLCAiY29tcHJlc3Npb24iOiAxNTQ3LCAidGV4dCI6ICJpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQThBQUFBUEVBWUFBQUJyUmtrSkFBQUE3a2xFUVZRNHkyTTRBd2IvLzlPYlpoaDBGbGNvNzU5MGR0My8veDR0T3hUUDZmNy9QeWZucU8xWlh6cFl6TU96YnQyNWN3aUxZZnlRdWJ0WXovSDgvNzlsemttV3M3dzB0QmptVTVoRjZBN0o0ZDY3N2l5UVByRGwxSXN6YjJoZ01ibzhUTndtWjV2dE9TQXRvYkpoMGpsZzFMUllIeXc5MjBjRGkyRUd3eXhFRjFleDJWUjJydmYvZjRPUUxaSG5jbkU3bkdTTFlVRU9DMkowZmJBZ2g4bkR6Rm5SY2x6eHJDNEZGcU1ITWJGUmdKNFlLYllZWmlDTWo1NzZjU1U2c2kyR3laT2J6UWhhbkxCMTk0dXpieEErZ3NVVkxER1JtNTl4V2d4TG5iQTR3cFdZcUY2QWtGb2dESmxLQWdEOE1vQWJYdmNQRVFBQUFBQkpSVTVFcmtKZ2dnPT0iLCAiZW5jb2RpbmciOiAiYmFzZTY0In0sICJoZWFkZXJzU2l6ZSI6IDEyNTIsICJib2R5U2l6ZSI6IC0xMjUyLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAwfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogMTkyNi4yNjUsICJyZWNlaXZlIjogMS4yM30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTIzWiIsICJ0aW1lIjogODEyLjQzNywgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy8xNzkzNzAwODkyMjkxMTIyODU3IiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1NDYsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI0RklvZ0ZRTWdSQzlFemp1X2VKUUN4TzYxTFIuR2lxR0ttb2dhZE4wU2FrLTE2ODQ5NDI4ODEtMC1BZkZOOWRHZTc2YTMxdi9kR1ozM2JsV0hublg5ZnhFZGpLV3VUcnB3MUZHbkJHWXk4akJIY2JjQWMrWnNhTFQrc3FQcUR3V2ZMSXViWnpKbGFnQmJJak09IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQtUmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ2YjFmZGM5YjhlLUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIzNTkzNyJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogImltYWdlL3BuZyJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIxIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcIlFtVmRoY3V0cWlqTFQ3SlhlMXN5ZDd5OHhYclhlb3EzYU51NmNkMlBVVks4aGhcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT00RklvZ0ZRTWdSQzlFemp1X2VKUUN4TzYxTFIuR2lxR0ttb2dhZE4wU2FrLTE2ODQ5NDI4ODEtMC1BZkZOOWRHZTc2YTMxdi9kR1ozM2JsV0hublg5ZnhFZGpLV3VUcnB3MUZHbkJHWXk4akJIY2JjQWMrWnNhTFQrc3FQcUR3V2ZMSXViWnpKbGFnQmJJak09OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MjEgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzLzE3OTM3MDA4OTIyOTExMjI4NTcifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtVmRoY3V0cWlqTFQ3SlhlMXN5ZDd5OHhYclhlb3EzYU51NmNkMlBVVks4aGgifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzNTkzNywgIm1pbWVUeXBlIjogImltYWdlL3BuZyIsICJjb21wcmVzc2lvbiI6IDAsICJ0ZXh0IjogImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTd0FBQUQ2Q0FNQUFBQXNzNHJCQUFBREFGQk1WRVgvLy84ZUhoNGFHaGtnSUNBa0pDTW1KaVlTR2dZQUFBQXBLU24rL3Y4Y0hCd09Fd1VLQ2dnTkRnMFhGeGZVMU5RVUZCT2pwS01SRVJBdExpei8vLzBIQlFRaUlpRVhIZy9mNE9IaXM3VHByYkVYSVFnbkRRMGVDZ3JyNit2Z3JhN3FzN2pscUt2aHVMdERKQ0xib0tYcXVyN1luWjRkSmhTN3ZMcmw1dWZmcDZyaW1KdXRycTVuWm1qZ2twVTBNakRhbDVnQUFPL0l5TWJiM05qaW5LRFZqSW9WQmdZM0lCN2hwYU9lUzBubXZzTGdqSTdYZjMvcXhNbXBlM3Evd01EUG1wdkJoSVJMTENIWmtKRzdZV0t6dGJYWXFLeFRJaUhTazVWek1UTExrSS9CYUdpeVhGcmJnNGcwRXhIdHA2eFdMUzdRY1hGQkd4ZVVWRTJVU0VXTmpZK3dnNFBVZDNtcVRVN01pWW4xOWZYb29LWmxLaW5XcDZQR2VIMTlSRHVET1RlQ1ZWV0JYMTdOZ1lQRWMyK0VRRVRUc201R0x6RjBXRm5YdVgyR2hvV1ZscGVlZEhTNWVublpyck5TT3pxUlltU09XbGZOYUdpL2preWZuNXUvbTFabU16UjVUVXNyR1JmVHU0N0txM2JzejlOaVBqNVlOU1cvbm11YlhGcWxWMUsrVlZpMmNXNWtSMG1MU1V6RGxackpxR09XYkdxL2o0KzJUMC9Jc1lXemhVR1JQa0J6UGpYdTcvTFh4SjluUFN1allXVE5uNlhBd00xVlZGZEFQVCt3YW1PVmtvYll6YlVqS2h5R1QwSEl5OVhIWFY1eVAwT25ibTJjVGxuUHo4eTlwWHJmeEkyempZcXNVVjJ2ZUQvVjE5K0ZhbW1lbUpDN3NxaURnSENiZm4zQmg1Ykl1SnJNbkV2SFozWEtuRjdMd2EyYlpTNXBVazEyZFhxdHE2Q3lrRktlY3p5TmlYbHVTbEhNZ0hhZ2lvZlFoNWVtZ0UrNWZJbmh3M3pWMXZ6bXpwZXdtVzl0VFR1TmMzVGExOHF4WkhXdWRDMjR0TVhuMUtubTJib0FBTzE2U0JlUFZSeTJqV0ZXUjBYWXJsMjRxSSs5YW9EQ2lEajQrUHVqaVY2MVYyNnZuSnpvNk4xM2NtSEllSTFrVEdhT1JWeGlPQmxMUGxKL0lpZlVvWk40V25XWmNWT3BQeitKY0VWL2RwQ2JWbk5TRFJEcjVNbWZPbEZ0RXh1am8vZjJ2clIvWHo2RUtEK3hmNkdoYTR4b1ovS1dLVGVhbXE2em5yaWRocVhEdy9va0pQQjRlUE9NamZWblpFNC9QL0FBQU90VVZQR3hzUGhDUHR2RlFOdXdBQUFnQUVsRVFWUjQyb3k5ZVRpVis5dityMm5yV3lMMTFhYURaR2c5UXF4RGhpVXlaS1pFcU96SWJGSEd6Q3RSNWd3SmhXOWxKaVJsS0JMcWw2VGhLRklmU2JWclo2dDJIVTNIcnY3WmYvM082MzB2MG43MjUvTTg3OHhKMW11ZDEzbWQxL3UrMTcwa3RIYXBxS3hjdVJwcnpacjNxOSt2MXRLNWZQajN3NGRPbmRxSEZ5eFhWOWNkT3k0YldGbHA2ZXZ2MHRmWDBqSFJNZG1pbzZPakpWRFp1cEl0RlhwVkVXaVpHQmhvQ1FRQ0ZSV1ZYYnYwZCtHTHE5bVBYYW1DTHdwMnFlRDdWUFQxOVZVRVBDc3RUVTExbnFlblowQ2dVMXI2a3JtTEZzMlpOMi9GaXZuL3NGYXNtTE5vMFZ4YTlFMzRsZ1VMRml6ODM2eVpiMXRBaTM3U1BQcEowdEpMc1piUm9nK1dTbVBSejhhYU0zc3QrdHVTWHJwc3laSWxFb0MxY3FzS3UySHZBZXo5NnBXQ3dOOUI2eEI0bldLOFhIZVl1cG9hNkdqcGFPMVMxekxaWW9JWExTMnRYVnZGc01CYVdVVlRJTkF5TUNWWXUxUzJBdFV1L0IzOVBWaXRWUFlXcUFqME5WV1VnWTJ2aFZkN2ZVMTFkZnZkdXoxM255K3RqSlNpMzNXT0dOYUNIMW5ObS9tMUNlZDhkc1AvRjdBV2lCbUpRVEZPUUM3Tm9acEdSUHdKMFR5NnArWk5yMzlpTm1ldUdKYitycTFZQkl0d3ZhZFh3ZUUvZ2Vzd3d3VjlRVm11TzB3QWk2K3ZyMk5nYW1waW9xT3ZwYjkxS3lTNVZRVlVkdUdtYXdyMGRVd3ZHMmpwQ3dSUW45WXUvYTByMlkrbEpSRDhoaS9vUTNFQ2ZTc3JmYjY5dmJvNnp6NGdjUGZ1OEtHaXFJVS93UHBCVlBObWZsa21xdmwvUjdVY2YramxINFgxSGRRY01TaHVNUjNOWVZLZXZZallEN1RFSDNDL0FNRmF0bXlKaEdBWHUxMHJ0NjZtd25uUGNKbjgrWUp3SFRvRlhJY1lMRk1VSHNHeTJtSzZ4UVFseWVkRFBGdDNVYjJwVUhIeWVEb21wcGROK0Zvb1ZjZ09GUXZoVVlFcmlHSGhMM1lKMVBrR1ZueDdUM3NMQzN2THRMUzA4TFRTb29TbHk2VG5NaG9yaU04TXNobFVjK1pNZi9VZlZiWDhoM2V6V1UzL0RLcGhhWEVsYy8vUmloL3ZFNGJxYjRoK2xOWmNhVmE3U3lSV2JpVnBNWG10M2dyZldyTUd4RXhmdk9QRWRlclE0VU13TFZlU2s0Nld2aGF4Mm9JUElTN3dBQ1o5RXBJTytGbVptSnJpSTBBaFdNUUdMRUVMRmFyUEdPcXJnNVdCZ2IybnAyT09KVmlWbHBaV0ZxVkdTaTJWbmp0OUkxWk1jMW14UWx5QUhNUUYvMVIvLzR4SmpPcDc3WEdRWmxHYVZaOWlWaHdoNWxyZnEzQVI5NGR6TE03cENCWXBaQ3Ria05jYWFBdXZnVy9FdEZDTDhQZ2RXN0IwOVBsV0JpWW13TVhJRVE4b1N3dmt0bXd4NEZ0dDJiRkZpOVl1SXFham84K1VwNktzcWI1TG9HTUZsK0toOWd6ZzZwYWVPVmZDUWFvSUs5cHZIZ2RyTnEwVllsUnpabGZmUHp2VjhuLzRrRENzbUNPVzFQUlAvb0hTMzJBUnEwWGkvL0M3cUJpb09Zdm9KOHpsbkE2d1ZMWk9DNHZxY1RYVEZtZ2Rmc01xRVVzTUM2NWxaYVdqczhWMEI4Rml1RWhZV253ckV3UFRMWHkrd1dWVCtCcGIrQ3VTSHJxaU90cWVQbzl2ejFOWHQ4Qnk5TFRFdW5JbHZCS2dEcWFtUnZ0RlNpMkQzVTdiaU5oSXhIY3ZkeHNYL0dkWFgvN3ZOTFZvRnFjRi83VG16NFkxWFlUejVzeG1KWlltR1JheFdpS0I3a1hLRXZzeEN4Q00xZ3RHQyt2UXZuM25kK3pZd2JvZ1lPMHdKVlRRR1dkUGZENDgvN0twanBVcDVRaytJOFhCMUZMUkJDcDFvTEszTCthQmxEMlZYM2o0OXUxbXhDclZMVG9qS0gyUjNESkdhKzRQdmZ1LzNjei8xUHFXVHlOamtwcnBuK1IxLzQ3VE5Dd2lLell0NXU0cjVzM3lLdExtREN1eTl5WE00TGRxRWF5VjFMc29hZUhQbWpWM0RONjkrNU5vSGFiMGNINEhXWldKaWRXV0xhd0tpUnVuSVN1VW4rcytWeXNEQTZDQzgydnhkVmk4d04rcnc2VVFFZUJSanZZV21aazVPVmRJVTVWbVptRlJVVkhSZm41K0NSVXVja3RZM3BHZU94TjIvaVlKdkN6ODc3Z1cvTmdQbDg4cXZwbC8vU09haGY5R1dmTi9iSWxpaTEvMFhWWmlWa0FsSlNVaFVPSGNhdXRXbGRYdnVaUkoxZmorL1daSUM3aFlQaVhQTW1FdmtKUU9HVHpWSVZDWm9DejM3VHUxdzhBUnBLd00rSHdydnBVTyt6WjhJNS9QNDFrNFdxTDJjckN1YkllbXdpckR3ckt6b3dtVlgwOXljcUxra21VTWx6VFhyNlp0WnQ3Znl1Y2ZnaFF4V3M2QldzaUtiNXJVdkw4TGF1SENoZisyQ3NXNHhFWS9aeVk3ZkM5QkxtRXhWbklTZ01SaUZ0VWdNSkc4Mkp2M3UvNTg4K0xGQzhBNmZHZ2ZsU0czRUR5SmtvbUpnUWs1MkpZdHJtRGxaT3FKSXJOSHE3TTNJR2FtcHFaYlRFMnRyRHo3K2p3RHdzUERyNkQyUU1vTW9LS3lzeHY5SWFxZWhQVGtaS0dVRkg0TExreFBweUJ4VnY4UHNKYlBsaFdSbUNrK1Zuby8vb3NGUHdhdi80YnF4NjR5NTIrczhBdUpZVW1CbFp3RXhoRnlxdFVnaEE5VXVJSkVwRitKanZqbTNRc1c1cG0wQ0FEcFJZdGp4YkVMMk9GMDZwUjFZSUNudmFNbjdCdklIRDA5RFFMQWRvZXBnVUhBa3lkUHdvZUdLb3NxR2FqczdDaC9ySkNlbm5Tc1NCZVhSRWxHaTNqTmpCOXo1MDVueHZuei85RzB1TkxENGhoTWs1b3pUV3JoZjBxcGY0ZkZNWm8zcTYzTVlzWHV2cVhMcGxISlNURllGSzQ0YmEwV1Y2UUF1QVMremhRZ0FNc1ZxSGFZc2tWZGtNRWk5VHpac3VPOEU2SllvS1hsV2NzcnNHL0xIRGhVUU1EdTNidnhTdS9ERWRLTFVxdFNpN0xoVS81Ky9uNGhJVDJkbmVsUVZhUlFxQ1lsUjdLYUs3Mk1OZVpsTTdCbUV2YjhXY2xoaHNPMG9oYk9GQjhYTXY1VEsvZ1BmaldQdTJOK01IZXhyQ2hmY2F6azVCZ3NtdTFZZUdkajczczBSNWE4OUhjSnRtNVdmUE1pbjB4ckMxeWNMVk5tN0pTc1RMa3ZuSGZhdlBud3pyVHdLMVJwWnFnMXl5dmdGaDU0UHZEOCtkMjdBNGRLQ1pWN1JrYUdIMEQ1UVZPZDZTTWpJOG5weVVJMW9ZdWEwdndGd3VRUFk1TWZyZ3VONXMxbERYcDZycDBqdnI5bllQMk5CSk1VM1NoV2ZET0tXdjdQbytMLzVPN3paOEg2TGl0eHVoTHJpbUJ0cFUwSFdxdVp2TGc5QklLbEw3ajg1czJMMzNmK2Z0aFZDd01mSlN4WENoRE1zdkN4cSt2NTgrZXREOVh2TkQ2WU5sUnBWZ256UnJXWmJhZWVsNVptalpVMlZGU2Y2cFlSNU92alU1R1FFQkxTbVI3SlZuSkZVSHk4ejRrQ2g0THJIOFpFb3RDMjRiaitEeCtTbHk5ZE5odlhOSy92MXZWajdKeE81MHhUL3paNS9WMVg4LytoRU5tN0g3eWQ2NEl6ck9RNFZwU3pWcTVtaEFCTGdSTVp3UUlmZ2VtYk54Uk1uYXhVTkZXVVZUREh3TGVRU1hXME1Ob3dWRTdXa0pWeC9zR2lvc3BzY3FTbzdMQ3dNQUFMcnl5dForc2dWQlhrNEJCZlVGRUJrNG9VdWlRbkpGZEVWNmE1ZFE4UE56UTBERTkyWldYRjlYZjM1K1cxdGZWL2lGekFkaytXU2t2UG5TVXZsb2RtQndCV2U4eDhNVlRPRnRYeTd4WDZiMmo5TGNqUEh0cW5ZYzNVSUxlVk04MUtVazVLVGxKQ1h4L1RtN0t5eWtwTlRWYVJIRGtCeGp1QjZidDN2bi8rN3FSRE14NnRyVnYxb1NrS1dzaFdJQVczMmdsVytWWFJVZG1VbkVKQy9QejlHd0VNTTE5cUZhMk1qS0FnTHkrditQaGttSlFhMURUcDFqR2NjcmsvcnkxdWVEZ21wcnNqTHk4T0M2eXlzdHI2M1Q2a0MrZFQrK0hNYTlIMFJ0ZXN6amlma3hTelh2eXQyTklYL0swLy9vK2VKUmJackJEUE11a01LMlpYRkxBSWxaUWtVTWxKU3NvWlFWa0NkVTFsQldWTlZvNjBXU2RRV2JtVllHbTVBdGJ2cDdZQWxhWW1vd1hOQ2ZUaFZ5akN3RUNvQ3JJeXp2Zk56OGlJanZMdlNmZC9QZlFhQ210c2pJcEtkWE56ZDROVkJmbjR4TnZaMmJtNFFGUnFCYVVORHhzNlltSTZPaHJpWW01Mkgrem83bWlJNllwcEM4NktDdzZPaTh1SzYrcnY3NSs2SG1tMGlIeVYwOWNjY2NMa1dpTU5NbHg1RU12WlcxeWtydW45bXVYL1V5bit0NGxISExERXdwcnhLNDRWVzVLU2tzSXduZ1NwWnFXQ0F0TVQyOWxFZkZBUnFKQ0xuM3JuNVh2SVZFZWZKanhhK0U1bEZVMmVnWWtwWkdXOXVSNnljcy8zZGZBTkN2THJHZkc3MG5mKzBhTkg5Vytyb2hDa01vS2dLWjhDVktDZDNiWnRhbXBHUXBlancrZHVQb3lKYTdqWDBkRFFmYk1ocjd1N0lhOExqTERvN1RtSUsrOW1RMVpXek9SMTRZSVZpemg1TGZyZUdybWRUdkh1M2R5L085cnNZUEdmU3ZHSHZjRlp3bHJ4M2QzbmZ0OVBYU0lsSnFXVWJxYjhmcVVFMjFWV1VGQllyVUQydm5xMUt1cHdsMENBbVdYTHpqY3ZkdTdib2dYaEtXdlM0dkh3UmlDd0Q5anRhcjBackZDQnZyNE9XQldSNlVOOVQrcWZCUVVGVlRoOC9QTnRkRTl5Z1U4RlVIbDV1V3h6ZGpaU005cmtFejJjTWd3cU1RMTViYUtVbUx5OHZJWVlFbFZLVnhlK0dod2FHa3oxR0pNWEU5ZldGdE45SWxrNEQyVkF0U0NPRXV3MlFHOHorWUxkdGhXejlsMytWN2grSkRmYnIvN2VDTGtaUjRxc1N0TEkvN2YzN3lFb0Nkb3NYNm5NYUFIWGFsWEFFaUEzWU9ZenpYL2plOGpWQU1LeVpVdGQzZHRXbllmbEdPaTBlZWRCVXBVdjhmQnljYWs0cnpQazk2enFHVmJReDQ4ZjM5WW54RWNteDN1NVFGYk9pb2xHd3NqbzhJR0JzWUhoZmtncFJTUWFqb3U3MlhBTzFTZnE2aCt1RVlXR2h0YldpbElBYTdpdEs2OHJKYmd0cHVIRVVaZjViR3RFZWltM2U4ZE5zNnhiVHJmTFJkTlpkTVhmZGxIL2s5Zi9EZFg4MmZ1ajN3UFdkM2VYbEV5TUVyeC9qeGFub0NMQm5JZzJDRFRwdU1WS01LT3RUMHg2SnE0djN2MXViWXI1cnJqWXU3aTQyTUtDM25rWEk2UmJXdS9NenhlamdpVnR5M2ZkOGZyWk03dzhlNXNQVm4rK0RUUzE5Z0VwTmJWdGlvck9kaFYrVVRrMVk1TmovUTBwS1dOamVPMXFhMFBSbll2cmF1anFTcW1wRVlsU1VnWnlrMEtEVTFJQXFtdHNRSFQvM00yR2hvNmppZHp2TFA3RnhZTVJqU0J6cDdjL1p4TEdqTG9XL0dlbi8yRnpmc0hzeURDYmxUUVhHcFlzUVFXbS8vWmVvQ1ZRVm9Da0pQUzE5UFgxMVhsOHZqNmEzc3FWekw3MHRmZ0dCaVpPTDE3c0RQUjBkTFN3eU15a1RRTjY2MGdmV1lhWHVzT3FHS2x0MjdZNVYyMnBENnA0OXZyMTY2cG5Iei9tdjMxYlg3VGQwc0JnczUzek5tY2xSVHVIWjVXVmxpbjlYU2twdWJrcC9SMzlKSzgyRVdxdnF5c3ZMbFFrcWhsSTZlcnVUcWt0VEFwTlNnck5DZzZPNlI5T2dYVTlmSGp6M2dFMUk2TkU1clAwc21SNktGbzZYU1hMbG9xM0RsazVMdml4TS80UHNGZ2ttYldaTmVjSFZPeitrWlNVaXR6K2ZpczdaZ1ZUVjVhZ1BVKytQcDlQV3k1azlpaEZaWjZXbGVmbHk1dmZBVmFBWlE0anRmMUtYVjNkbFN1MGYxQzMzYXpTemVFZG9YcURLaE9tYVlXbkp2aWhGVDU3OWpHL3Fxcit5Wk1yMit0eVJrMnNuUTBOdDhWWCtHV2J3YTVTZ29PemFzYTY4OXBpdXZMeXV0cFFiLzMwTmRSa2JsSnVDaENKYUlXR1pyVUYzNDhaSGs2NWV2WGN6WnRvbnZjNk9qcDhqZ3FObGk2UldrSTlrbXlMTkNZdFBXZTVycTd1UE5yRzVEYng1LzFnOXN2L1IxbHhzUDc3akROemI4aEpKbmFhN1hxdnBhT1B2b2JpVTFhV3dIaEQyVXBGUlowMmlkVTE4Wm15dXIxQlFHQ2E4VHZmelduaGxqbWdWSWRramxHWVJYVDZNTnZONGMwYklxWGs3SC9aSUtYVUxhUHFOYXRDSVB2ODZRckliamY3emNwTzZlaEJkN2ZKNGJaaE1Hbkw2MFptT0hldXV3TmRNQ1l1SzY4Yld1dWVtb1RrY210cjc4UExTSG5nRjVwMURsMGdKaXY0ZnQ1Ti9JdUhNZWNhN3AzNGNPTEQ5UU5xdWtLaHJ1N3k1YnFSblNFZnBnWlMyaEJvcjZ2Tm40TTJ3T3lMRXNZUFU5SHlINmlKRDJKd2UzMy9ic1RoS3BCMEpTbVhIckJycXhiZmlpK2dYTFdMWUxHanEydTRWZ2ozb3QxTlRYVjd6OTBFSzM5eldocm12ZDZXc0xDVzdFWi96TUxabE5HUjFmMGNuQldkRlEwTjFjTGZodzZuSGN4L1M5NysrdlhRZzg5WFBuL2VEdmx0ei9sdHVIUzREZTJ0SzZ1dExUZGx1TCsvcXlIbUhFcnJIclZCOUwydXZJWisxTjlrUHl3THlvSzBhbXJpdXNCc09LL2hKb2cyREtObzczVjBneTdleGNURTNMeDNGNTlPVG4yWW1oeDJoQWpiMnU3ZnYzK3VQL3FvN256cUF1SURRZk5uRGR4L084ejZmYitacTF3dVdNM2E2cHVPb3JRazV4YVptSmhvV1ZueGtRRUVMR1N1bEJDbkszSEdXcjFTV2QyQ1orLzRKRHl0MVAxZGZsRmxKVGdOUmpVMitvZWtkNFowaGlDaCs3TVZyeWduWjZqa0VsaWJNbEJxWEY5ZjlRemFHdm9NVlYzWm5wTlpGN2JkSXFjL3B2WmFjRnR3WEF6Qytsai9NRHJndWZ2bjhyb1JzL0s2dWp1NjBQeGlZaHB1Tm5TUEFXUTNRa1JXM0JpR0gveFZkMzlNQXlUVmNhODdKZzh6RWFIRFAwSlI0dVhjT1NyTnV3MHh3M0Y1RFcwaVVmRFZxMjBOVTUzSEtjVE8vYWR0R2pZZXNUM1FhU0NzTmN6YXhKNCsyaVU5YThTQnN5K3dOREhkb21NQVZqeHZoSFowdnRVS0VoeWlyV0ptQ3NxMjZoWVdscFpYd2t1TGZMM2NVNk5vQzhxUFp1RHJIOEltUDdCcE9EMTlCR05lb3ZOUm44bTIwT0grTkdQb0tnaTYrdno1eXFkUHZYV1pkWFV0ZGR0VEo3T3VYcjBhR2hmVFA5bDk3OTY5amp5UXlVUG94STIrZC9mdXZlNnVZV1F0RkdaSFIvZFUvMWgvRFdKODF3REZlQmgvVEJzcEQ5RzE0K2JON3B0NU1RME1GZ0phOFAySFFKWjM3dUhEY3pFZy94QWs4eHJPM1c5cnVDNmsxQzg5NnhqL2d1OTYrb2VqOFNqWm1TT0VNMXVpTTc2K1pJbWM1UHdBRTFNREt3UEFncktVdVdDbEtyRnh6VWJhYm1BRHRMS3lzcnF0dDBWbWVIZ2F4anNIcjR6b2FML2taT0RwVEw2ZVhWY3owTjlmT1RrNW1aM3Q3eDhWUFprU0N1VjBUWWFYb3YrUlZYMyszUHZ0VzB2ditQaDRadWJnOWNuY2E5ZXVaclVCRWFTQ3BFNDMvaVljNkNGdVlRUEduWmlZT1BaQ1N1cnVUeGtnNjhxdG9TWXBDcVZJajBDR09vMXBnMytSbERvNmJzTG5nb05CS0svdDZsVzh3dys2U2FnYnpyWGhhNVdUSHlML24vVFM2ZU8xTTBlWlp4K0xaOGVjdVFNVEs3Z3NPaDBYcHIxcTZWTEtDclNFQVRRRUd3UkFXSHcrM0FveVdxMjZSbUlqRnZGYUEzYkttclk4QklVY3RMdFV0d3d2cjRTRWlraWgya2huWkVWeTU4dDFFeFArVTJPVC9TbWkwS1RiU1NtaXd2SldVY3B3bW1WUi9kRFp6T0xNejU4OVhsMTQ5YW41YTh2Z3kwZ1hzNDEzcnRXS2NJdnZvM0FleHJSaGtvRzJZcWlTR0Q4VVZ4N0YrTzR1cXNidTdpa1FHNjRaSFJpQXg5Y01wNlQwbzFlbXRMV2RJMWhRWWdmRWx0TFczNTBpUXZYMUQ3ZWRBeWgzTndnckJ1UDRNRDQvMTlZMlBIVjh3U0l1U2N6azFabWo5UE5uamVMc28rbE4wdGxiVnlBbHQyQ2tNNkV6QVhabGFtb2FFT0JweFZQbnFTT1BybEZRVUZVbFphMTV2NUVkTEZSVlVMQzFMYzVFOTBQbmk4N3c4ZktxU0JhcUhUaHd3azNOYU9IeTQ4OFhMbmgrYkFJNXZHdWdabUJ5b0xXOXVhNG1TWFRaSUcyb1Q3M3Z3Yk5ubjErOWV2WDVjMk95a2FMaXJ6VzNDNU5FV1RGNWJXMm9tM014RUFHRWtSZVhoVnNWdy9RQXI2SWF5dXYvMEFHanl1cEM5TW9EcmQ3c2dkd2E4TUtxeVEwRmFBZ3lMMjlZVkh2dGFtaG9Db3crSDJiV0Q4a3hVK3NHcW5NeDlDMTBKenpNTzVHc3UrajdSdjZpMldsQ2JHT3p6eGJoRHE0dW1rWkZwQmFtaDlsdjNicVZqdVhSWnRTT3l3RUdzQ3gxSml3RkVKSmdvcUpOZUlXSWlBaXdndVZzUjhQenE0aTMyd1JaWGUvMjhUMnFaTGgwbnU1emFjbDV4ODcwWW14QnJoek9iYzBGTjFIRGNPbkhvUWoxdmtkL3ZxMXdnWk5KeXhrcWV2V0hYc09zbHdWSndkRWhqblBub0t0emNWbWhvdENyOXdrYk5FWEczWjBYRjlQeEszU1RoNVNLZnlES0hhMnJheTB2ekUySmd4YVJIYkxpenFHUWcxSFExQnI2OHhCVXo2RUJ3dHBEZnhOaGhveUpPY2NXN2hHc213MXVrY3ZuVVVOajV2V1BPL0l6c01TVCtmUkpTRUMxSXQyTTl4NEpWRXVnWlVxbmQ3anV1THpqc2dGZlhWMWRFNDZsckt5QU1sekQyUlUrZzZ5S004ZnJlbnRiQmdjYlE1SmQxQ0tUN1FvNjdoNXdjYm1la0Q0aU5CS205M1IyK284TmpIM29UNm5CZmQvVzNkM1FFWlAyckhpL0xlL1JueTgrZW0xRENrMVVWSnNNdlZaTHFyaFBDKzNxNmxYYzJQdHhYVENrMEt2bzkrZWdxSE4wTzJQSThMdXhRQ3NMQVdLZ3BtYTBKcmV3c0RZMCtGeE0zTG00WUh3UWVodWlnaXM5UlBYRjBRKzduNFY4bG1LUWhQd2F4OWpkQjZhYkhUZFp1VTlHL3I5Rk5FMks5MDhYL051emE2WmxOVmVNU3U1NGR1Yjc5Ky9aRnJGQVM0dU9XYm02dWdhUXN0Ulo5clMxVlZCVmtIaS9tcDJLQm1QSDVBZFo5YmEwREZKUUVBcXZkOXo5MWVkWDU2UFhyNXVaMWRWTkpwd29IWjcwOGVsUDZlL3VIMENSd0wxUkY5M0RPYXI3TjZ4NThPZmJESjhUQmRzVXQyMDZPalpRUzFLNGY1ODRCZGRlQzhWdFJpenZHbzZqZ0JCTXhRVTF4RHlNWWNtZ080ODZZQnZ0T2FTSTRQRXBvaHBSTUJEQWw3cTdhbTlmcTAzcEdoNk9lWGd1R0tOMlVoS3ErN2RhdE9BVXpFbnMyK2luVVpubjRXZWk0Tzl0bWlmTjlycG10bENYLzhQVzh2U0pKK0pERXZCek0rV3RXMkZOYUhFcTdLUXBFOWRUcnBjRFNWa2tMUVhrZEZ0VlZRcWx4QXBoQWhNZ1pBVlNqWTJkblNPUm5aTU5OMys5Kyt2UlgzMEtUc0JOY25ORmNUQmNxT0poUTB6WG1ObEFycWd0TGcraG9IdWd1VjFWTlVMOTdPQmczWEREM2J0M3A4NE1KTjIreWxEZHo2MjlYUnVhRkpveTNJYlVDWmtFeDhURjVaMGprQ2dkWklFdW1NOU4yRHdpUFc1cVZoWmtKYXJKYmNPbmlHVnRHQ1JUUW9QN3U3dWh4UHVob3VIaDNQYnk4dHUzUlRFTlhTSW82eHJ1QXdSZVZEVitNV0pQRXZNUnpnZURIdzVpek1ydjNFRnVMcmwvbDlXQ3NKWHZ0NnF3OFcrbE1tM21ZUmEwZ3JRWUxEZzhqL1pHRlFnV085c01QZENDRFgxTVZjZlNleW9TaGxNbTczNUEyMExrUnVKT0dZYmZoTGJGNEk0ODE1YVZNanc1T1R3c3lzSXZod2lGTHRaNlE4YThXWHM4TnpUMFhGZmNXRTNoYmR5VTJxdTFTZDdRMk5YYm9jR2kwTnJhcTdodElwZzVWTVpxTklaMnRGaFBiT2pHYkMyaXY2YUJaNkFtQlYrWW5JeTczeGJYY0RPT1VhWjlpZHpDT3h2djNMNTlyUTNHTGtwS0l0RWwxZFpDdGZpUmJRQkZqWVFxY1VSM0RsS24rQWorMzFpdG1ENzM4bnNOTHBFVWVyOVhFV2dxS0l2UDkrVDJnN1cyN0RzRlhBWThIcy9lWHQxV09VSlZRVk5CZ2pEeUxCdzVWR0haalNIcEk0MFliOElucjI4Nk1OQndyd08vQTZwSDFJWndoTndZbDVWMUg3OTlLTHRaR0lsdm9sU25VSldqelJkYm01cmF5Ky9jdVkxYXVaMExOdytsQ3J4S3R3bTFXSnVFbTRRWC9FdHdDNDZEMlVDbDZJc05aUGRkU0FxaUpBQ0JGUTRNZDNWaHN1bVlIS1BaTzB1VVJKaVJWZ3J2L0hHN1ZsUjcrMnBiY0dodFlWSXVLdkoyWWUwMTJDTUJhNlBrZFk3dWc3YkpUa1NJdVl2bXpEN3FNNTBaeEFkeTVzeVo1ZXhDNzlYZStnS0dpdTFXQ1dqdlUxK0xiM3JLMmlud01sOGc0TnZ6eUxDUVRDVUUranllaGIzbGR1cUJOTldNaExTTU41VTE5WFlhR2YwMWxuZnpKbFVlSEFJNUp5c0ZwaEVxaW9QeFhrVnRaY0VtSG9MVlVRVHlEdkJxSGExcHRxbStVWWhmSDk4RXFlQ1dYTDEybTJEVmhnS0U2Q3FrZzNkWldhRzFWN05ZMFVDWmxDQnU1bldOalkybDFJd05Ed3dNMUF4M3RXVWhxWGRQallud0E1Snlhd1pTc3JKcTcvenh4N1ZnOU1WcklFLzN4NTA3aFlYbHR3dng4ekVuaEY2RjlkK25sZ0Z0OVpmNkhkZGRLRTF6OWZ6cC9ma2Y5a1huL01qS1loZFBvSzlDa2xKbTUzbEFQVVNMVGc3Q01sRFg1Q0hEby8rcGJnQXN2ajFLRU9OeUdDWWJrbFhtZUd4c1dkbVprSkNleG9FdXRrV0hHWmhpZGFob0lMZTFOYWtHbFhHZjJqYWFHcHRkN2hLdHZKVFc4dGFCaSsyNXFJazJtb3VEUTY5ZHUwMWxBMnVCRytmQzVtbDNid3hoRTBKREtHQXJMNC85bkljb1BwaDdUUXJpU0c1dUx0MzY0SnFCZ2FUQzBGRGF3TUdzY0x0UUJHSVlOakZ2dDBKbGY3UzNsN2V6bjAvbERZdTRTaHlKRmxyczVQWGpLemhhODJlZlFzTmdpVGV1eEFkdkpJV08rbFo4QVZNVndXTGFJdGZTeHdUTjE4RzR3MVBuVzltcmE5b2lseXBMOEFBcng1Sk9SZkQzOHh1SjdDMXZiNHI5K2cxRGkyenYrT2pZOEhCL1hCYUc0S3hyd1hsZEl0SFlHT0ptTU9WeTNNcTJ2SHQzNzNHd2tKVzZVbHJiYTBaSEVhOWc0bGwwYTBOeG0rN2NybVdISTFCa0lsRm9yb2kyRnVpallFZ2htQzFDQ3llckFheld3bHpSd0ZnTk9tS0tDUCs2ZFNBbHFWWVVqTkxEcW8zckY5MjVneDlHUDZMd3pvMzIwZGJ5OHNMQ1FoajlWZFJoYlZKdUlleXhOcGhOUkRFZmhBdlJFdjkyUG8zWXJXWWRGcFNTRkhvYU9QSUVZck9pSXd3cW1sdnB2R0tCdm9EUEYvRHMrd3pzTWUrb2EySThqTEMxbGVEWk8xcGFtbFZpNFBQckdZbHMyYUJuTHJ2MzY5ZGJ0MjVwWHdyeGowNzQ4S0ViRXhwdWNLaW9QKzkrYlpJSVJ0SndFN2N2cnIrZkRTSWRIQzRNZ01NMXJhMmpLVjB4TVZsSnRWQkFLSktRcVB5UFFoaFZjRmRONjBCL1NoSkVJOHBOZ24vQnUyampuWUpvTUgyU20xSURUYlVXM2k3TXpRSk9kSXpXcE5wclNiQXFVWGQvTHB6d21paTQ4UGJ0VUJFZDJVQVp0dC80NDA0NXBOVUt4a20zcWRTVDhDL0l4MkFVd1RGNUh5SVhpc2ZFV1VlZ0YxQm8vMzVFUW9wR1FNOHR1NEVDUXpLWnVwVytQbi9YTGc2ZHBqTFBTc2ZLSU9DeUFXeUtZQ0dHUmtqd0hTM0R3ODFRZ243cEl5Rm5OMVJyYU8vOTlxWGtWc210Yng2WFJzZCtoWDEzVGZYajl5OHNwREVFbWtBdnU5azluQlhYamFubHc5MTdkMC9jSTl1NnkzWVc2TkJNREt3TnZvWHFnSGNsRlJhU0xBQWdaYXcvSlRlSkZ1MjJVK0ZRNXlmUEYrSG13b0RvaHVjVzNvWkp0YmEydHQ4cHpLVW9oYmFYMjRxZ21oUjZEUVYzSDMxWmxGdExNaXEvVVk3Vlh0aUtERXQ5TjZtOEZZVHhHWGxtVzNmeXdybmYwOVpNdUpvenMyK01iTFZFZDJUUTJ5b3dnQzlnWHFVaTBOTFIwVWZHVW1mT3BhbXBRbWVjOGZuNmRKSW5iY1o0UTFrUUZsaEYrNEZWZGwvRXJaS1RlalpmU1ZsZnY1NDhxZEZLSGpKMmZTbzNxYnlRZnBWY1VWYndWZUFhcHEwbjlQeU91ejRvUkoranYyTEJ1R2d2cHFOakFIMzlLbk9TYTllU0N1RmMxd3FwZStXbTlIZlZKSldYQTFjdEhjNkJENUVrYW5IN1VLN2xlQzJFYXlGcEFkWG9hQ3YrQ1F5dUp1bk83VHZsQkNTVUVtaGV3M0RTSGNnbk4zZTBHYWpLeTFzaEp0eC9oSys5R1o5VE8wYUh6UG9RdVVDYUs4UWZIanJBNmsrYVJMVWdwTTRidzQwQmtwU0FEdFdzaEkvenRlaUU0cTBJVzFTU3lnSjE5bkFSbnIwM2htYUxZbHZBOG9SaFZVWkZZNkNwN0R0YmJDTWpjN0lFc0U2ZUxpazVlVXZiZlAycTllVTFrMk13bXR5YXBNTGMwVmJjVk5KV1hBbzd5a2Q0cUF4Ly9YWFR0bTIvY2w2ZkJ6Vmt4ZDJIZjhDNWJ2OXhCNmtVK21xbFZJdW1CMml0eENnMDlEWmMrby9IV0gvZ0p0N0ErdVB4bmR1RkhLM1IwZEdCM0NRUnphQzFKS3BhQ3V2SXNSMTVva0pZVlhsN2UzdHJPNzRMZDJBTkF1RFZxN21vM0hhV1hBcnBucnFmTlhsOEhqdG9QZXRrQmk2eFM2TURTZ245TFREY0tLdm9NMWpzYVBzdXdCTHNvbk93d1U1VFhhQ3NLZkNtWTE3cVBHOWxCUXlDdGxTR25vN2JLeUdzaEJGL0hmc3JtZFdBZE9zTEhPdkk2ZE1uUzA2ZVhpdC9XbTgwdHgxM00vcFNZUzRUZW00SzZxczFDU2tMTTM4SDlQVHJyeVN0VFp1Z3JydjNiaUtOMVdURlpaR0JveWZPM3RVQUFDQUFTVVJCVkVQVmltaW5DdmMvYkR0T05EdzFPWXpJeXJyWW5jZXJIcTg2OHNzdnE0RHI4Ui9yMTYrdmxybFJqdStqLzZRVjQzVEtBRExYQU96OUdxTEhmWW9HdUhNYUNGYjVuWEtRYWI1NDhXSnphem41VlNqS2ZMU2RoRldZVkpOQ2poa3NhankrUUhybXhDVTJDWXIzRnlRbFI3WUxLTEJqZHVFRlhMYlM0bUFKK0Zhb1FoMHI0RkpaaVhsUVU4Q2NTcGtNeTl2Q084STJBam5MMGpJY3d2THJISG1nWTNubGE4bkpyeVdFQzNWNDh0YXQwL0x5SlRiVnpaZk9OSldqcjkzR0wzTURWc0YrcXh2bHVWMWQ2SThwM1dKeGtieW9HTHY3dTd0UWZ6QVNtZ3hEa2ZyUndCRFFZSHMxU1VuOS9ibVVrYkQrZUx6MjhlTlZxNERyeUtwVmo5ZmlreHZ0NjIrUVE5Y1dVbm5kdVUxWkFza0JhWXQ2M0gyaWhlamVTdjk3ZVd1emhrWjdkZlVOY2kwZ2dsdU1Wc1B2eVN1Z3NVSzBscmJKa1FYaWM4Ym56Sno1THcxVTBvUHYzd3RRZXF2WHJGU3h1bXhxcFU5SEhWWnFrbVZaYWUzUzJiTEZpcSt2cFM4QUxVMU5XM2lWcGpxeWxYZEVoSUpxaEFRY3F6TEtMeUU5L2NHVFIyZExTcjU4SzVFL2Vldkx0eTl3cjlPblQ2OWRlMXF2V2svYlJ1L0crc2ZyYitDM1d5K2pwMWQ5NDRhZW5oNStUOUlMako3RDlhczRSSHpBUUFkSG9pNVhDMjFkcGQzMXZLeFF6Q3R3cVNTWStSMnF2ei8rQUtMSDZ4OFRzQ05yNWVXaExCa1o5RGhZUFc3K0gzZGFjKy9jS1M4SEx4cXRNYlFqMG5WMDNNeEthcWY3cTUzZFg3VCtLRy9INzFlZU8xRFRCR2xSWjBDbWFDOGtDNmlaT0Q1OUhKYWRvMDJ3NUNSWGRPYThYNm1zdVpMT2RsVFczNElxMU5kVTE5ZEVMOVNIWjJucDYrdFk4YldzUEExNEhDMU5kV1ZsQzN0N0MyOWJaQWNGaWQzaGFXRUVhOFQvMGRzSEVmQ3JXeVZmdjUwdXVYVnk3YW9qUjlhdVBmTExxdlZyajdDYmMvcTBqSXlNdVlaZVNZbWVPVkJXeTZ6SHIxMWVtRVhPSlFaRnpENms1Q0loSXVURHhhOGl4Yk1UWkJCa3MyQlhTVWxrZXRkQWkwVDF5NnBWYTlmaVZWNStMVjdsUVF2dy9nRFFWbko3RlB3ZmQ1SUdKaW5jWjlGLzB0SFZsZEtPdTZtOEdpVTRPZ3BzZDZnaFZzdFV0ek9YNjYyajk2aFBUTnUxYUtUREliclN5NmJQZ2lhM1dpSzVOR1JVNFQwZGlHZW43Z0dXQVdCaDdSTFFJMFg0K2p4OWRqaFZ3TE95NG5uRHNoUzh2Wlc5TVRjamxOSjBDRmljc2lJakV4NDkrUFR0SzdUMTZ0dnB0YWRMVGgraEJWeEhWajJXWDdWV0JveE9hdGpRMHBiVnZxVnh5L3lrek1tVE1qZmFXK1B5Y0V0b3BLWm1pTW1uUHc3QklCZ2pKR0pWTGpyREdMN0FhR1VoVGtGWmNHd3F3bFcvNENlREZzUUxBY3ZqVTNrWmVmbFZxLzRvekUyQ1VkOXBIUmlnVUN2cS9qQ1dJaElGNTkyTVNSbkliYitoZmJFWldqSnZ2aGpiRElXYjR5TTkvQkprK00wdHZTRFYzSDd4SXFSVmkxUXllVXgzTG5lNFg1cVQxZkc2clFLQnNzSnFkdWFlNm1vVm5xY25IWkZBUHREbms2Sm9VMVNaem9KUlVPYnhCR1JhUE5waStNMWJPWUoybFZVbHdzTXJpd2hXc2xEWTgvclQ1OC9ma0JwT3lzT3Q0TzZyanF4YUMxeXJqdEQ5ZmxKUFQwTmJGcVJrdit5MUtUSFhLekdYb2FYWDNsNmJkZTRjeCtybVE3YkZpYnJyQXNLdXJwcmNnUUhhLzRvYlRrRTZRcmFpQkhtSEN2R3hQUDMwVlV4UzBOUjZlWmpYS25uNTArdVAvUEpIT2VJV3JLMnVyaDJPZnp0cHVDc3JPSzR0T0dWNG9MVWNab0JmUTBQREhENUFkbEJkWFExNGVqZHUzQ21zS1d4SHppbHZIbTBtMnk5TUNoWU5USFRxTGwzR3RrNHBXUzF0Vk5uSzE5KzFjdlZLT3RzUnlBVGMwUnM2RlUySFBkSk5nSGlxb0lCQXFxcWdUZ3pWZWZSNEJ3dHZCRkppdFZIQzBkS01JbWxQY3FSd1RzK1ZUOSsrM1VKMnVIWDZWc25wazZmbDF4NVpSVGRtN1JINWszclY1dG9lSHJMYXNoNTd2MmliczA2NWF1MHFNcHNiNWFIM2FiUG0xN3NkTnh2b0ZBYTJwNTQxMEVYSG13Y0d1a1JKbUdIUVRtc1J5bS9Yb2tOZXU4MnFjQzFYZzZkeHg4akx5S0RvMFJqbDErTnJqOHRwWDZ1d3RXNFViZmoybmFRYXhQeThHSVNYZGxpbWpFeTFIZ25jdkhvOS91L0g4cUFIWWdnZXVUWGxoZWlKNVJRbzJMOU15dTA5TXpLSGV3Z0hXRWxYYmhWWThBWGNzTXhnOFFNTStIU21COXpLeWdBQlZGK2dvc0FPMjlBclNVdGc3d2hoOFpEZVNWZ2JOMHBrNXRSdEQyc0VMQmVoa2N0blJLeHZYNzk5Ky9ibHk2M1RwLzgvOHBMVHVEV25aVTdxbVp2TFhyaXdaMi9zWG8rOWtKZjJseThuYWVHV1BsNS9wL0QrdzRjb3dlNjh2Tzd1cnBvYWRuWWE0dmpBd05qVTFGalh3TUFBR1RVOERPTU1RaEhtNjhlUHFRUWZ3OVdoSmR3WnExYmhJNUlhK3hpMGtNV1NDcEhKRVRFeFhhWWdkNTY3R1FkaHliUGZ4bHhEWmoxS2RpMzMzUUNNZSt6R2pWYnFpeWpEMFl2dDQwM05yVWtpaktxWGppOWxKOW5EcnNLUXhmazhaZkdlRmUxNVdnWFk4OUQ0U0VQcytLQkFSWm5PdlZMV3BMUDNlQ29BNW1qQnMvRFd0UFdPSUdGdDJDaGhRYkN5L1ZHSExrWXVRK08zYm4xakM5MndwT1EwTFNBeHQ3RXAwZE9RQlN2WnZYdTFMOGJ1M2JNSEgrLzEwTFl4QjZ6SGQwUVBIOTY4ZTQrY3FXdXFld3l3UkVScWdHYWNzWUdVbEdFUmJRa2pxTlZlQXpFeUxKajdMMVNDMElUTStyWGtXRWZrQVlKb1VlbXZCUzNXR0pIcnI5VmV1NHBoc3pZMHBhWWQxUXA3T0hrUzA5aHA0a1JGREZpUU9IcXAvSHFBYW04ZWI5YTcySXc1dTBhRXVxMjdkR3dGblh3RFZ0bFdqaGIyUEUzbGxSd3VSSFo5dUxzNlQxMmR4Nk5IMFVCSE5DNHJyQVF0ZFhVQlQ0Q0k1WWsraURISG13bHJBNVRsRFZwbVlWSCtuY2t1YW1xZjkyS0kvdlQ1MWJkdmVIMzE2Z3R5RjVFQ3F4SnpjK2lKSEV2YjV1S2VNMlZuTGpWZE9uT3h2UXpSc0RtbGcwYkRQTnBkNFBaemFnWm9qUTNRRmtJdUp0OVF0dXNRU3FjVTFiTGNqcmlBdHZGNDdYckFZcjJRcWc5dnFMS3BHaC9MVTU2L1ZuNEQzM3lIM0o1RmZKblQ2MldxcXlrc2x6Qk5BOVlSS0Y4RzVJamdlajM4ZHMxTlRkWHRkYTJZRkd1R2gydEdlOWN0bEpPU2twTmM0cmM3ME5QUmdFZG5NYkl6MEVER2lnNmhZb0VNRDIyUS9vcUVoVXBjcVV6SGRHQllVQmFDdXkyRXRVRjE0MzZDUlFkVmFZZlVaVlBpeTVKWHJ6Ky8vdnp5NmN1blQxKytmUDcwNVN2dFc3ZTB2MmhyZ0pVNU9vK0dqV3lzckUxejA1a3kwSnI0NjhQWTFJY1B3dXNmT3U3K2V1OW1URnRYV3orZGZOdzFsanZXM1ExaG9mWmdWWWhidFhTa0lUYzB0eEFqSUpvOU10dmF4MVNFOHR5TFBLY1E1bUhvS0V4MFZJdzN5dkdkRk1kUXRmUTM5TDJnZFJLVEdPbTk1Q1FhS1pVbE1qUSt2Vld5OXZRdDNLRk5yZTBYZTF2YnZXdTZodXVLNjVMWm1jYlM2YW1sYWJzOVBlMXg0NVVWbEpWVitEcDhMUU02S0VqVmh5RlFYZDJXVlNEK3JGWlZVTkRrcVh0NzJ6dkNzcnlSM05FS042eUJaVzBBTENhdFJyK0tlQmNqdFZ1M1hsYkUreGFvcWFrSmRZMk1oRTlmZnJzRnpadWJsNUJwYVVCWThLeFk3WXRsWlpmT1RFejg5ZGZrMUZUSHI5c09ITVVRZmJPakt5NnV1enNHdFBySFVycm9TQ3diaXpIbmhxSzFGZWJtWHFNWm9CM3h2UG9HMEVCSk1tSmFFQkt6bjdVa09QajhMNzhjSVZpZ2RRTk9kb1NCWXEyVFJiRnFHYVJBU09zVzFDVi9za1FleWVQcmwxdE1ia2VPbkxhUnZZZ1k4VnZkYUdHcktMZTRPRXhvSkV5K25wQVJGSlNhRm03cDZKaUpXNDlZcnNsbjV6RlFEUUlXWk1UallDblE4VUZNaFhSK0F3K04wTkhDTmlLQ3d2c0dWUVpMWUc4UGFaRnJvUTZWZWpaK1RiRHpmYUZrNk95c3FDaDgrdXpsTjZaNVRFQTJRS1VkNjdGMzd3VVA3WXNYeS9aQ1dtZk9uSm5zenVzK1lOVFozNDJBUFVVaEFRNGYxejgxbHBMU1JTKzA3Wmtyd2doZVdIaW5NQmNOQ3VIN0Jtd2RyclNXV2grRkJzb041RVdyR0twLy9VSmRrZG4va1Y4ZXkzTUI3QWo1R0t0V3RFSzlFbVphSmJlSTF1bGJpRGtBUi9NR1JMWnFsWXhHczE0NVpwNGE1UGoyRGUyallYNGhVZG1WcWI2KzdxVm0yM055TWkyS0xXZ281Z2NFR05DeGVhcEFFaFlsTEFVRjFkWEs4RFN3TXVEWmV0dmI4d0FMS1FKMFZkZVFaVzJVVU9mWk00K1BUb2gzVVhOV2VoblJlL1JldzRrM2I5NDRLejVsc1l0QWxaUm8yMmpJeXNMWTk4WjZ2UEtJcGF6bEFXQ1hwcWI2K3llUFRzVjEzK3ZJNisvcXAxTVd1c2VRR2NqWGFhK3Z0ZkMzZ1pRYTJnaW1XYThRY3lHc2h3dnM0RVV6anZoMVBRZnJsMS8rUmJCb2NFQTFIc0ZYNU9WSmFpUTJhZ1Q0WnIxYk5MZmFtSitrWDR1S2tXMlFZSkNsYjFqN1dFYVBFajJ5ZkhzMTR0ZkZ4cDdPRVAvR3FHZ0gzNnJLN1hVNU9XZHpNalBwQkZuUDNRR2U5c3pkYVdTR1E5bEdjSVlGNCtjYkdIaFRia2Rxb0kxQkJTU0hOV3MyTW1YeCtmYU9PV2FWMFQ0T1huYmJFcFZlZmpVN2VsZFVhSnZaS0h6NTZkT25yN1FQaUh2eDFsZTRGY0h5OE5pekoxWWIyVUhXSTdhSnFldlMxTjJwL250M08vcTdQMHgxOVhkMTBTbHEvWlBES1NKTU5yZkx2V3ZnVklWc0M3ZzJxYlVRbzkxNnVsblUrS21veUxJb1BESG5JbmYvQmRvaVlGdzVnaGgxVHZyd0NQMGpXRlkxT28yTnViWU43c012MmlWa1lDVmZ0RS9lMG9iRVVNbnkxUlRFTUR1U2dCL2Y2QjJzRzB3bldqNE9HVVYwenVMMjdkekpzUUdCdXkwcGNQSjQzdW9NbGliVm9USmRxRVBMZ0t5cTJJTE9PQ1pXcXF0UmhSRFdmc0RTNGpzaW1GYW1admc0dU5odFUxUjYrbm53Nks5bTVldjF2b0VWNXArdmNOT1NXMTllSVYvSnhzYkNzenc4OXNiS2ZvRzA5bEtFdUFCYzF6OTBOV0Fvbkx6K1lXeXNmM2lzdjJ0czhzTVVIWmlGV1hGYkZPM3RkOHBiYVhlbEhHR1NxcEJ5TzNyaGVsYUNSQXp2S1VFd1JFZCtZV3I2MS8rQnZ2NzFMOUlYN1Uwd3VtZ3lHaGRqeXk3YWFHdVlJK3pad0t4S1NteStzRDJTMHlkQjB4ekt3cnhQY1hYdDJtcU5HNnYwT3BQOS9LTk9lQlc0UldXSGdkZjJ1am9vekJJV1ptbUpia2QraFk3SWVORW0vQzZlbFlHamQwU0VSV1l4YmZqQjNsVlZGYUFxS0d1L0JCMGljN1FNVHl1S0RvSzAxSXdVbFlRdi9TTTNKZnMzRHBLd3ZzbVd5Q0NUbG53aFJudVJTZmQ2SUdNaHhlTVRvZ1ZZTVBvUFU1T1QxNDlldjM3OVEvYmtGRWJmeWFtT2JyeWpreGRhcVFIQzJFZkJxclg4aGd5Wk5wbytzeXRLV2ZLTUZ1bU11VHdiR1JreVl2WXZSbTBWaXhRTUZtWWQyc2RxS291VjFUWXYwY1l3QWRXWHdFMzFTbXpJV2s5V0V5eHF0OXpQWFB2TEwvOTNYSmp1NSs5LzFLN0FqM3NrVmdzOTFDKzh0REk4UE55UktvMEhkNko5ZG5VQlBaNUxuVzl2RDFiZWpqa1d2T0lJRElVSzZJNmtLL0lzWkE1MnpJSkppMmdsR2lvS2hadlUxSndqUDUzOTlKWEdIbk9hTUxTSmpRY3R3blhoMWQ0dlg3NWc5bm0xN3RpNnZ5WW1PanNueHY0U0hyaCtmYXJGdjdNUlRmSkQ5eFQ4Ykd4c2xLTFNIemZXczN3Tkg0RmxzWXBEaUpTcEZwY2hUVHZ5WkdDbjJXaEZqUkJxK3BlNEVvK3dQUTlXdWFnd2N3WXJ0dXdTY0ptYmErTU5ZTjJpMUd5allWNkNxVkZEajdVTU5uS2V4Zzg3OG4vKzFhZ1dtZDZadkdsVGNtZFBTRWhJWStOZ1N3c3FxVEo4dTJVT1NjdkNrY3hMRTBrVWtWV1RKbWMwUUlzY1I2UlIwdFVHVlRURGpmdjNVODZpVTVSNTlwNlFsbHVHci9neEVZWkxsSnkzQVJaSkM3a1VVek44SXRhRG1SYXFNUmEyOWVyVlhzTGw4ZXJZdW5YclhsMVlkK3l2TXhNamYwMU5YWithL1BBQnJENU1kZmYzUTJTQVJjSzZnYUNQV3RRREhWSVcyOENTMFZ2UGtnTzlxWlpoaHNSb3NXak84aGJiOTFqRk5VUFdDcXYxR0t6WXByS3kza3NlZXhHU1k3VVJiRTZlMUxOQnNORkFjQ1phcUVma1Y5cFRJdmEvU093ZmJCd2NITXlPeWdZbGRvclFST05nZG5RMkJIWUY3WkdHWlRxU3lpZGE2a2hpaUFzS3hZNlp4VFRsTUZpcUcxZ1JBaFk5WkVDOXo5TXl2S2pLT0tnZzNzdEZqV2pKeVJrYUNxR3NiOS9HdjJuREpwQWE5dXlSWlRGckw3d0x2QzVBWGE4OEVQTTlRQXV3OFBuRXhKa3pVeHdwaklUZC9TazFBNk1EQStWL3RJOVNYbmg4bzdtOW1ndWhuSnFxOVdUWXB0OXBGS01NRmVUNjZwTXlNcWZKdWdDTFJrVkdhenBqVVNQQW5TWUxWRTFsbHlqbnJUdFQxdFFVcTYyQm9ScXpOYVpySXFXbkFZV2RSSUhUMFlTVEZOTisrZGQrcUdPRHVxMEN4TEZobzJwRWNSMmQwZEVZRm1hRy9waHBrV05wei9OR2hsZlhGNkFpYlMyOFZWVWhyR0lLWktxcXloR01GUlVoQnd1alpKL243clROVlc0WlFZaW1SRXZKVUU3eWVlYW5UM1dmZWx0YXh0SDhaR1AzWEdocTRreWV5bkd2eDZ0WEw5ZUIxemNVNHROang5Wmh5c1l0d0JBMGhWZy8yUTlTWXdPNW8rMnROYVBvVGUxc3AxV1BqSmZ1Yks0RjBpWUxzNjdUZUZsZnJVZTNUNjlhcjRSdFE2emltaU1nSWIweWVOUXpJU3h5TE1BNjh4ZUtmK0t2Q2Z5UEY3VXZ3dTAxNkMzRVJSMkFxS0U4OVJERWFEL3VsN1VSeFJicVBHVlVFNHRMRzlaRVpQWU9UalEyUWx4MWxuWHdlVzliK0R4R2FrZStzcm9GV0hrWFczaGpLVzhndjhJaWY5Ky9meitEcFdNUGFlMU9LMHBOelNDWDMyWUVXb0QxOWRNVnM4K2ZQNzlzUkdpWDFkNjdiby9ISG85WXlsZ2VlMTZoRHIrQkZ4VWdXRDEvamxKRWNWNjYxSVN3T3RZOVJjZHhNQmsyTjZNUjRzME52UnNBTmUxWFpPL3lWRkUyTnFoTEVDTmh5ZWpoaGlKeW10dmNvbkdHZ05IdXpWcFNHdVkvTmhmcTBZQktSVWk2UWhlZUlHSWtyNmJZWnZ3RnhsUkFBaTV0MllzWHg4ZDdteEgyOFZQUUZZc2ZQSG53QkVHaDJKYk9iMVF0N3R1Z3l1U0Y5cmc5TFR6SEFuQ0tlWHdyVHd0TlRRdDhDemhaZUdOVVZOaEFjdzRCWnE1RnNEQW5XUmw0ZXU0T1Qwc3JoVzhSTFZhSjBxOCtmWTU2NXYreUp6Mzk2Y3NMTDE4K3ZmRHF3a3N3UWltK3VuQ0JyT3JWdXFmUGRZOC9QL2I4K0hQNjdNSmVqd3Q3eUUvWUlEMksxWHdSQlBDR3R1ZlEwR1dxY2N0WnhDSkdOR25LMnFDQzlFQUsyREFpbUVNN0xBVExVRG8vZlpycTZEUzZNVDZsRFFvVW16YnJoWUMxYmtLOGtGM0s5cFJCWDlyanVDUHhEcm9hNysxdDZkM2UyMDcvZFAvKzlldlB2bjMwcUI0dkQvcjZudlRoOVFtc2FFMUVUa3RqWTFobFpYZ09ZaXFhSWxncEsxc1UwM3pqYlVFSHdKUlZvYWdORWZSV2xWZ0JscFlWWGJlQ1hYOG92TFNveXQzWEM3U2NuVkdJYzU0K1RVOTJFYW9sS2lvbENoY3VGRDUvL3B6bTYzVVg5bUN0Ty82Y0tCMWZDRnJQang5Yjl4UWd2MXk0Z0M1d0VhNTI4ZUxvNk1YMlp0b0RwbDFOYzNPSTZnYVl5TENkVVVSSHBpYzlkRE1ObUF3cTBKeFZFcmtQc29CTnlVa1pVaGR0bUhFN1dIaXBwczFSRFcyb1NNeEx2UGFjdVVCdlBHTHh4ZDZtMkNhS2dZRFZXMk5oMW91ZlROc2FxNjY4ZVBzMlAvL2p4NnA2WWtiUWJDTlFYUkYxalkxUlJXWjFDUFhxZklNQXNQSm0yck8xNEFzQVM0SEtqL0lvL214Z3NQaFdKaVlFS3dDMHd0Tks2NnZ5SFVoYm5HMUpMMTJtWkNpRkQrRDNTb2FHaG5OWHJKaXo4RGtrNXRIcmdRSjhycnVBVUlIYXNlZkhucTVEYTd5QUZ2VVZUUUFabis1alpHMDlTcUZVYTVUU1pXVFdpaHVoUmpXekxadFliV3BockhRME5Kam5VRUkzcHh3dUkzKzZtZ29SL3dMWWtCcTRVUjUzeEVWWlNnOTdQTXBRK1hzdTdUbXpoN3JMSG94ZmU1dDZtM3JSK2M3MDlvNDN0LzQyMW10VFhiMXgvK05WeFM5ZXZIRHdldmVDSHQ5SDYrM1FrK0lJUkUzVlRKUWlOek02V25wNkt5aGIwUDZ4Z29VOWowNjR4ZXlNb1hBTmc4VXBpM1Jsb21PMVpVdUFaMENBWlZycFFYZGZNUzFET1hCaVN3bWdsQlNWc0toTktzNC8vdklicFlaMXFFRTRGbHlMWUQwL2hpK3M4L0RBMzhTeXZRbjRIR25GWEliTEJuQnlKaXRBcW1hMUowOFdMeHRMUjBCSVZiSmdhd01Sa255MDljaWtxSFZDVmlRdHpCQmdkVXViN2dCWUhlczRsSkk5Wk5FYlVmbDc5a0JkbHp6S2VzczhXRGdZQkN3MEY3TngxTC9NZm5uVmorKzQ5WUs5L2ZqaTdhTW5GdXBvYzJzeVVZbU1scVVsRmFHamdrS0VnZ0NzMXJCMHRVWUJFelRYRE1YS3N0SXhNZENoeTZld1MzMXMza21QdWlSYUhDWWxSVVZudHJZWkdlSEZPUkVRbFo2L2ZIWGgxUjd5ZGpnOGVUeks4UG56Qyt1ZUg2TU4xRDBVeUtodkluQ0FRelZyZm16Zm1EWVBvQzg2UEFOYTFSb0FKTXNFYUU2SGpBaEVOZk40TUNiUG9oTGtOajN3Q2pPampROGJEZGJ4dExrTWd5QVBuYUhyTkRYdEJUSDA2ektDZFliQmFvK2dZeDRib2EzOXFjNTJkbS9ZSDdzM2ROV1lQMkZpVjJCUHFxdEJDNUUraDdWRTd4d0xCV1VGYjU2Nk12UkVWYWlLQ1hvRFY0SWNMTHFZazRFSlBjeDNpMmZBN2tDbnpjYjV2c2hiZHM1VWR3U0tIaEMrYVpPYW5RdDdSdytYVkZSY3RGVDM2Y3QxVDVFZFBLWnBQUjlaUndtQ1RCN2pOcURGb2hyM1lpclJrS0hOWUJtV3pSSGQxNk9lU0ZvVUlZa3BSTUpKaFVtTGFVc0R1R2lERDhZdVE3TWY5VWNFVC9OYmxQaUlsZ1lGUHVRWXhocTQ4Q3JMSmxjcVF6cmZ1cmZwWXJPNWhtb3hPdUpHdXJXTkM0VENrVWloa1pId2VHU2tVRzNiTzlSaS9ZTXJscG0ycStzYUJ4RlB6U3dSRmh3ZHZSVTB2ZW1FV3pSQUJlVU5HMWNyMDZNcE51emZLSWJGeXBDdXVyWmxpMEdBd1piZFR0WTdqZk45Q2lBdFJiQUNKenNzTDdaY1hGdzJ1ZGlwZ1ZjaVFDb0tueDlieDhMRHVuWEhSbzZKMXpyNHg1NTFIbXpjaHFIQThCRUZrSFpPbmx6RmR0ZlhRay9hR3F6V05HeGlLWXZJVWdHU3JtSzFPWmVETlpuVHhFZUtJa3EzMkpZYXlNSGN5T1BKdUR4b200ancwcjloZFluc0FHcmpzdU5FNnhLRWhlODFiKzRkMzdCQlQxVjFmKy95eU1pUmtjaHQyMXhHYUIzWFZZTzQzdFkvZU5LbnFka3kyQkpXYVlZVWFwRmpvYXlwenVNTHFBSlJnaHNackEzVCtaMWc2Y0RkRGZBMndCUzRkQUtjbk9nQjBOUVNGYUVyT3hlWCtIZ0hoM2g2akwyWEExM09Bc2pzbUxvTTVSWThoN1NZckxnMWNxeHo1Sysva09jbjlyeTZBSFVocEo2NXNPZkxyUktreXRQVjhveVd2QXkwQVZvUWg3YnNIcHFlME4zUThGRkpzVlNJdVBFc1cwSkQ1a1JIZyttS0tldGtOYk5BT0pvMmNuRXMrMDQ2S01aQ0tIdlhUR2xydkplbUdsU2hucDdOZUc4bWQyQm1kYnJ1U0hwNjhxWnRMc25wN0dGdFJPdlB0NEJsdXpKenNER3FzaTZ6T0RNenAxaVpMa0NycVVCOE5zRGZWeXVzWHJOeGxtZlIvcXJCRnJyd29TbmhNdDJ4ejRrdWJlSGc1ZUlNWWJsNE9mZ0VZWjN3OGZYTkR3cnk4WEZnMXgvWXRHa2JlWm9SQlBXZDFURjJwM1VlQzFsSHl5UDJFc0dhbU5qelJZL2J0M3U4aWtLV25yWTJPL1JoZzZyWmMrRVNTNVN5M0xqWGRCR0RuNnhZWHBSWXEyMm9JTFZ2bVJPdEVpZ0ZsRzNFUjhXWnBLZ2lOY3daS2UyTDVHak5ERlkyWUdrM1E3bUR4d1lCQzhGcFk1MXdwTE9uTTM2YlMzb251OHdTMGZyOWJkV0R2dUlJbFNzaFVZZ1BPWURscmF5c3JLS3BxYkFHd2lKWWEyajNuWVRGMWFGRXdHVzZNQmk3YUlvcFhiM1YxSldUbG9PWHM1SXpXR1c0R1JzYkgzUnpNejZJNWVZZTVCUGs0d0I1YlVJdExsMjI4UGp4NThkSGpvK2dGWkt3NkFKR0k1SHBrWkdkS01jbWp0WEVtVDE2N0FDRVBESVdCaHp0MklzMkdoZEpTSlNWS1BLWDdTVlY0YjBIL2taN0wrZEVESWllSGxRbSswWDJGdVZ5T2lMTzBnUEppSlRIa1dJYTFHRGpUak5pKzNnZFBmWW91MlY4dlBoaVUyUGtzcEVJWWhXeFprMUlaRTlJU0lXZFhRWHRQUFNrUjdvSWpSQys2cC9ZUnZEN0JodGI4TStLY3pMcFlBYnR3aXRnSkNKS3pMRTJpRkVCMXVYTGRLa252QUFYWGVmSjlMS3IwNkhmM1pGTm5aVzJlVG40R2gvY1RNdkplbk1wcmRTRE5CTVZ4QjhnV3RKUzBycTZ4NC9qOVRtTFd5UEhJK0dpY0ZENHc3cXlzak1UVTFNVGcyZk82TkdlQzQzUDY3WDNRazlOVFFpVmw4b3U0UnZPME50TGlCcXh6SjMzeG1wb3hJSWQzQm9sWmk2cnJXZER3N3VzRFp0aVNwQnR6VzNFeG1aRFVaZDluWGl4dDZTcXBoWjZFSGRZZHJaWjNYalRoZU9KY3lPTFZTUG9ZTmJHbHNpUUVIOC9PN3VDQkxyZVdXZWtDN1QxOFczOWxlTGl2aWRtRkIrZ0xRczZkVlNaWFdkYVZaWGp4QWxMN1BBU2dUdm8wcG83NkdKaUZCOGdzeDJBOVRzSzBWbkp6c3ZYL2FCVElLM0xlQTFuRTFHbFdXVzBYMEpCdk1zbW8wUXBLV25wT1FzV0xadC9mRG1nTGRmVkJhbE53Z082UnJyQ1RpYXJLWDhNdTNwcjJYazRhMlUweWliS1ltUExMc1ZleEFSNWlaWHBKZEJDQVpZMXhRSlJtWWVzalN4bUZ5WThHenF6Z3VJWE5RQ3hoQ2kza3VpWVZlbHhxcUl2TXlkcmJxNEwyNTd0NXhlZGlsOHhiSHZ2eFBFRlJpdUVtWUNGdFRGekpNVGZQenIrallNZmV4Qnpza3RrcEs3TG4vVkRWNHJWKzRZYUI4Tm9nOTdDVnBQTzRXYWNWcE8wRU1SVVo1ZWhreXQzcmVrZDdOSnJ4T3V5NjZuRE8zY3lXQTdFNnZMbDNRRUdBWGp4TkFqWUhXREpuZjEyd29kb1lkeW15d0RKU1MxZHRpeHhycUcwOU55RlFtR2tVQ2hVRXg0ZkNabG9uTGplZVgwa1JJK09NeDladTJwOUdSdDd5ODZValpkTk5KNWh2T2h6a2hmekx0b0JwY1BkbE1YTG1yUlJrbnZKbWFBbkczSE5hWEFXWmFQUjNJeXAyWndqYUFObmIyNGVyek1yeW5kTERTcHdDSElyS3NvTzh4Zk9YMkNVS013QkxIVmJTS3V4czlFL3lzZk9JU01xRzdRcTRpTkJ5K3R0L1JDR3hRZFJqV0cwMVd4aHE2NnBUS2pXYkdTSGN6YUl0YlZoQnBhVEV6MWFqRjF0bWg3cFNxVzQ3OURobmU0T2lvWmV2c2FiZHdlQUUrWWhIVG9sd0lwdlJWY2JEYThzY2dPdEE1c1NKU1hwY2kzaXBDOUhtVjhhV1NZeThqaUFqVXcwL3RYWjJUbXlUbThWRjBpckwwMmNtVGh6aVh2MXAzMEQxT2dsNWx4QVJvVkpPNkJsZS9DMVBmUTFjTU1nUUFXbkowYkZvVUViSURyc0RTaTJOek96R2c4N2tZOG1oS2J0bTFGVlg1U2FuR2lrcGpaZjdTeGdGUmNYMjI0c2hyS2lNcndjb2xPekJ4c2JFNUlCNjdnYW92eURKMDhlUklkQVdYV0FwYWxPTVpSNzJjamVjOGhBNmpIQnNyWjJjblhkNXlvbUJuVzU3anQxbUdBcHlhRUtOeHZRNHE0RlQyY1A2dk41M0phOVc0WlB3UUVqcGl5VzlCVVZ1WG5JVUVwS3lRaS9DR0IxcG5lRy9CWFNHYUt4bHViQ3gydWJ5Y1lhSnliV1RmaUh3RFk2NGJSL2dkZ2xBa1o3VkJNaFo0Z1podUttSnNnTFdXb3ZzM3V1QWJKQ2hJczNvOTZvNXBxYlJ3ZGE2UHdpZkRCT3BoN3Q0T3ZyVytEbDljSTNLS2lxL2hrU3FLNmFFU3REd0NwVzNkL1NHUlhsNXVXVldoa1dOc2hKUzZocmgwSWNPbjgreUw5bGU5MTJTeDdLa0hhOU5qQjc1K3B3NC9UK3pINzUvUktsZ0JXSU9pUlVZbGpXaHc4ZDJ1bnVaU2gzMVAxM2EwK0VWaDE5RmU1cXdsdTNxbWhwZ1phblpWb3EwZHJFUm13YUhCWFpWRVR2d0V0T0tWRk5HSWswTXdJaW5aMFgxMjlFMXRtL3Y3bXNDUzcxVi9yRVJFZzY2dk02SXM4SUhkVnJoSXhhTU5ZTlRqUUMyNlU5dEw4dUN4ZWo0WThhSmV5ZUJWREtCeGZITDNLU0doMXRIaDBiRzIxdUh4MGR6UnlvVEhVcndOamhGZityUTBGUWtHOUdrUjlZcVFuVkZnSVdIZFU2RzFhOFA3TW5LanZWd2N1dGNqczlVRENCMWFId0krYWVSNGNxR2x0NkFjdUNEdkhRb1dmUWJkanJHQUFBSUFCSlJFRlVVcUFOVXJaWEtONzVnN1FJbHJXVEUzdWNxeXU3NWlFczY1VDFvWjIrQitTa0N0eDNPdTFHWW1XWG5HWVhNOTI2VllzdUVlem9HVjVLbFhqQWtPMUhLQUdVRVpJWHQ0Z1hYR3lSVVNUaUh6Sk5wM1kxMm5keGhHcHpiKytaTTluKzZaMytJYUNWbkh5OWs5WTYyc2FqUXV3dG94MlhTMmYyZUhpd1pJRWNWZ1phdExSbDk4TE53R3g4bkhCZHZOZzhEam1OMG1NeFJvdEhjOHdtM1VBcUh2RzVJcmtpNGRtelowVlJrV0NsQm1VdDc0MUEyclRvQ3pMYllPdnZuMTNrOEE2dzZHR1ZDZkhKTlBoOGZQdmd3YU8zRllNTVZyRzNPc2JDRFJ0VTZmSGo1RndidU8wWnNjSExTNlNWbGpxUnRFaFlydXk2aDY3N2tCT01mYmRKU2pua0h3emN3Y0hTRWwvWmU1ZU8xaTZCUGwzNzN2cWc4WWtDUlVrNW1yVXhQMktwc2JkaVhJWnlrb1pHUXFUVzlKQ3ZHeUxvTnk0dTdoMmNtR2owNzhSZGloSk5qa3hPcDBwc25DQ25oN0RLZWkvUmgyY0d5endJRWZrOXBiQW1SSXE5VGIwdCtBYVVaMi9UT0dqQm9jQ3JhWlJ0TU5aVlJ2c1V4TWNEVTNSMGRJSmZWSGJsVUZpbkxsaXBRVm9yR3ZFL24rM3JDd3F5WGRQU0dCWjI0bDFHSlQxY2Q1RFZJU2xycUtqK3p3VEEyaDV1NlEzUFVsRlFWVjI5V2huV3hmb2dpV3dOZ3lVUHowb3JUUU9yUU5ZU21ieXdLSlk2SkVvYU91UnZEb1M3Nnd0VVlGbnNrdVZneGk2RHp6ZTQ3TFQ1b051SlJJSUZWalRUczZWbXB6YkRpM0FkSDRucy9LcEtEeWplbmxrODNraUdMMVJMbEU2a2tCRUo2YUVNSjg1TTA0THZOMTVxT1RPSUdZZ2V4Z2Mwb0xXbmFYeHZMMDNITFMxaG1HUFlCM2hYMTRRQWlnbXdlVHdzMmoyb3dDY0JrU0VxS2pxamlxNGdHd0xOY0N2UnIrOHNGci9JeTJ4ak1lS1UyN3Y4U3Jwc01kV2hpNHRSL051cW9RZVA4a01Hdzh6TUtyY1gyOXFxQzhCSmxUM1lYcFV6ZWU1b05FbHJ2VVJwYVJyS2NCKzF4SDJ1bDEwREEvSGlCR0g5dWxoU3ltdW5FejNWaDBCRmhUMXBCV2hwMFNYeHNiUU1MdU83RGhJc01xdHRIQ292Ri9yanduZ3g5NUpMRk9ycVJvNUhaT0wzTlFNdHMyUTFZU0xiRmpOTU5FTElTR2EwR3JFR0NSZVlOY0k5a0NmS2lCWjlwUXdabHFnUkkzcVFYMVIyZGxSMldIWllMelFtYm9KK1FUUmhSS2NXd1VZejNLdUtpbDZEbGRDRnh2NU5hb25wZlZlQXErL0p1N2VhRVlQWlpxa3Y4a3ZENmNyRlVRbkp5RDRWajRhR2RqOEtDZ2xEbUswTXQxRG56aEJaczBGaE5Sc3BXVmRrb3lHM0I0OHkzQXhhM0FwMHhTdEc2WVA1cUVKSlNhL0RwUUgyL045NGZCMGRIZlljSHVKTHg2TXo2cGp1Q0xUZW5Hb2tLYVhvckVpd3ZMemVlWGw1WWVhbVdadDI4Wm00Rk9uS1JDK0x6MTY1Y3JZeStrck9sWGpEcFVwc00xRU9pa3dFTG5nOFBNdy9CTEZya0tTRnJqN1llK1lTYlUzMVhrSngwRVp4YnhtaEtpTllxZEYrMGRGMEdKNnFzV2w4ZTFpWVdYWkdrSnU3VzJwVkZMRnljNnVxeXFnUWNxeGM3Q2p3WFRsTDJ1ckwvM2krcnlYYnJNakJ0NmcwclJJL3lpODVmbE5pd2xCUitJUDZvSW13c0xDMG9UUkhIb09sc3BvdVpNVDIvVmcrcFNObzNPSDd5VXF5ZUd0S0VFNGNLVGpXenZ5anNHNUpOZVBTeTdBc2U3b1NHZmRjQkx2RTE5blgwdG15STlESnVuUVRsQVZZeElvMkpoeDhIWHdMd0d0YVhFcFNDRjNDNUN1QWRXWG9tVnY0QXpzNUpVWHhuaXQ0TFVMREdvazAwazFIdm1na01tV0RkTzJibGhZNktMcW5wUVZmYW1ucXhSRFoyenVJK3B5R1JiamdYZHF4dldGUlZVV3BCdys2QTFKR1JsV1ZHMTN0TXg0VnVNbkZaWnFXYmhoanhSOXllUHVvSmN3czFjSDM0TUdpb3Fqc3FCQTZNVFRvVWRIUW83Y0pqZmlieXNvMFR3dTZES1N5K0pnOVBBc0Z5WjFzeEdVSWlVaXpVb3graDREb0ZPTUZjSnQzR3ZzYTBRbHppZTQ3QTVIYkJjb3E5TFF3eEVsTGZ5dTd6ZytqdGU5VTRBRXhMSzkzQ0RrZmcvS0Q4dk9EZkgwcjR1bWFiVWFnSlpVWU9mSTgwdjlLWmVWUWVGcUcrNUNMbkNKYjRoM3FaY3ZtNmdxVjVCYkJ3SG9hQnoxYWVnZjlPME42ZWhwaCs2ak93VUhHaS9ienFObG5reHhvUmZ1VHVIckhaY2UzVjRLVld4WHBxY3J0V1ZWOVZVSXlSWVpOdExHRUJWekNoZG1zRHRXZjlGVEFtU3JkQ05aQnVCdWRqK1ppbFBHbzZOSGJqNTJOcU1MdzB0SUF1b3FEK0hSSjluaDd1Z0tpc3VvMHJQMFNVdGRMaTBvM0h3WXVhK3REaDVpc2Rocm5IMERhaEQ4WEdBY0c3cmFpeCs3VDQySEZUK0RBd1RMWll1cDZhbCt5cENSZ2JiT0RycEFJODkyTjhTY29LTWlCMFVJbExnT3NrZlNRcUNJM3Q2TFNvZnJVaEVTS1pKeWhpZGN5dHE4dnZZSU9IVDE5K2ZRNC9ZT1JaTFJKOGpJb2JKQ1pldGdnZDczOW5oQy9LRzVsbTIxdmFURUxLMklYajZVM21GaGRqT1pRYm5keDhacUc1YkxRdis4SytxRkZYMCtuZjFSUmtidURyN0d4Y1ZXcVgwSUZ6V3NaajZxcS92VHF6RzdaSHA1V3VqblFudXFRUFc1VldaT09XR0NlcGdkSHo4Q1NsRXVlbkV3OXVKUGJYTUE2YU96bVh2QVRYUjVYVG5LVHNYVmdvQUdmeHowMWpBcnpLM3JhRStxTEppYW0rL1lkbFpSY0RGanZIRjRBVmI3eFRxeDZZNGpMUVh6MEViRFMwM3RDL0tQZDNOd09EZzBWRmRrcC9ZMFZkOWdJLzV2aG9ua0w1aTA4Zmx4NC9IaGtaSEp5ZWs4UEE0YXdQMGdYVUtDcjdhZW5VMGZ3ajZJTDdrWVZ2WDdkbUExYkJpcmNQUmtaenlxRWluS0dTb0NGVHVOUWdJekthQzBNZWZLQTZoQ3cvS0pTVXdITDNkaXRLanFqb3NMRnpraFkvMmlvL2lPRFZRbFkxcDU4N3VRamVwUUZLS25TK2FVa01BVlZ1aUxiQm9rbGtuS1JVOUZzdjZvSWY2RHFqQk0rem93VnBIWEMydWt5d29PT2xvNCtlNUtkWGZSRU1ZeVhsb2tCQnFONFNia2x6cWhDQjJMMWR1Zk93NGZyTjllelM3MnlpeWNtS2lYaUJ2Ymc1a1ZIcDdxNXBWWU94U3NwaW1NK0hRemhGZ2VNVHErUWs1dTdVUGY0OGVNanlSVC93UXVnL1lETW55VFZ3NjdkQlZ3OXFFUS91azVjOUxPaXl0Um4wSEZGTWxKV2o1MmhwQ0dMTVM3eEJUNCtQb3hXcEc3UGs2RXJaMGxaNlg3UlJVVVpEa0ZVc3V3OEJidkVDcktzai9FaGdKV1dsclo1TStyUVZsMjlXSjBpaENaZG4wQWhRbUUxT3dGM0ExMndSMEpLU2xMdUFKa20zZm00UVNjUXpERWZ5OG14NjVsdXFpd05aTFRZbGMyMUdDdUNoWFpJZGJndkVyTmhJbFVoMHhVOTg4eWhRK3h5cnh3dFp5V2pudlRrQk55eWhPU0VFOFpWbFk5Y0REbFdqSkxpZDE1S25OUkFiRDV0anoxUHB3dnM5M1FTclpDUWwvNHZYN0pwOGhoZEl4MFVnYkduQjBtOW9xY0huSkpKaDBpakdZcHlTc1RLQzZ5Q2doS0NLZ3FRMG9XZFQyaGpvYmd2b1FmcEFyQXkzSWdWZFNHMXhJenpRMFZ2WDhUN2gvVmlqTjV0ZlRpQW5kWm1DMXkwNk9SYkJXVUYyd2gyMnAvQ21vMFNVb3RCeStqNmh3L1JKMDRBMUlrVDF3OG9FU3M1ZHY2NG5IK2FrK3RsOXBSWDlMd1ZKbHBNWFZ2cDZYWk1UQzY3dWdvbGwwait2TTJPQ2NzWXJCNWhWTEkrQkczaHQ2Rzlla1dqaEo1a3Y2akJkQ1BEWlV2ajRTMFZMRGh3bUJUcFJYRVdNUktZMUpKNTh4Y0lqejlQUC9ZVW1FS2U0ay9JMDVjdkIxODJycVBSRzUrUGpMQWlCYUxua1M1Q05TTzFTSHlXNEo5dDl0cVp3ZktLcC9rdzZFUlFRa1VGQit0c0pnd2V3bUt3VUxFY0t4ZWp4TlFuRDRyeVh5VDdoNW5WMWVXRVcrOE1aS2VaMGd0ZCtVS1pOc0kwZ1V5VlBYS0hERjVxOFdLNGVlS21BMGV2WHo5NmdPMVJjWmMvcDRzd1N3clRyTG5OUVhvU0JxTEZYYUJUbjU1YXg5UTFVRTF5aWR3U293TVExcC81aHcrZGNqcC9mcCsxOVNOSXk5MlhPNC9RS01pdjRsbFVTdzlkb0ZneXNzSkxiWW1jdUFDSmtyZ3ppbmtwY2lXNVZHblpNa1N3NXlNOUlTOWZ2bXhzZk5uSXpzcC8rZkpwT3ZGN3ltVEZOQldwYTVSb0tHV1ltTndEMTIrcHE5d21wMGpDUXJQSmQzZlB5RGlSQU5rSi9RbFdadDlyRGxhUUZ4MVQ4S1hqTHBzU1haNmNmVkQxNTd2a2FOcjZjN1FNM0xuWkFBNXZ3YWRudittelo5alVlYmJlM25TMkpCMFBrMWdzdFFUaW9pdDRMMTZxcExTWWJwVGNOQ3lVNkJKL2hJbEFWd1pzeHhZVDlyUW8zSlBJR0poc2NVMmJUL3RaUmw0T1FlNzVPdytkT25XZW5udUFybEZkeGFTMXlTalI2T016ZXA2QkNpVkpPZ2xBelptY3lYQVpJNk1vWnNYUm1va1VTc3RvbTJmcDNFVGQ1eHlqbDNqTEdtWDYwNmVkS01tUWwzN1BlcElocDBqZHhLVkxhYXBTakk4S0Myc1ozNjVHc0x5OEdDdjNmREdzcUw2aHM1K2Z2RTdHNUppYVdwUUJXTDVCQmRDVm5aRlJVZWFWUi9rdjdOS2p3cmJuNUZqWUIxaHZEckN3QUNiOHNUTG9BekZnVTE5Tko4NnJzdkZRWXZFUy9KSGlaQ1RHeENvUXI0dXBFQk1uTjIrMlprL2VSMC9zeEQzUEFJQ1pHQmlZbXJwR1ExZFNrajlEV2U0N0QxdWZZczltZE43cC9LUE5WY1laUVZTSEJDdm80MGNIT3lXMjVUVzk2NlVraHNQdDZTaUtzVWxQNzRrdEk0RkpMWnV2ZS93WVlYcEtvWUl0S3NPUWtHZitmdW1SQ0x0R2lZbmNVQ1dwOXV4MXkrZnhzM1lNVmp6Nm5iR3hPMmtMdENKRG5qd2E2bmxTbEF4aFZhVldCWG1oUkdGbXVDY1RrNTlVRmxWOWZPZVNRTEF5TFhoV2dRZ1A5bzZlQVo2ZTluMzBiRUZXQnA3Mm1zeXp1STBIQ1hyTTFPTEZETmYwa2hPL1djd2taK1IyY0NkN2hwUjkrM2FJbi9xS25sZ0hzRndESXlYcHd0WkxOaDBsV1BTc1lqc0MyR1gxTjllN2NXZW9KaG81ZkhSNDkrN2pHMFBheHRtMmJSdTd3UEEyc2FRWUxiRnhLU1lxemdoTjNDS1hTUzlheUE2RWdOYU12R0JXTVA5SXpKd0xqUllrWXVGYkpZMmV2Zjc4N2RQWkNrUEFpaS9JTUVaZmhoTlVaU1NBbHZEMTZ4Yi8xMzErR1JCV2xadXZnMCtRRHpvaGNuNWkxYU9xK293WFhzbEJxV2FvUW5zTFhnRDZvYWVCcHlWQWVRYlFtVEtlOXZSQUZWVU9GaEs4OU0vU1M1Zit0SmdXUFE4SUFlSVcreEpweStpRU1UVTY4Uk5EN2hBL1RRcnQxYWRLUzlLL2tWTXI4SEhmU2ZvN2Y5NzFQTzN3UEtxdklsZ3VETmE3TjI5ZXZGTlNBaXRFYTNabzI0NUxyT0xTbStaRml5T0c1QXBMUUxFaTRjK2p5dzJDMHF0WGc0UUwyVUZvSkZRREtDTnVKU3B5c0Y1Ly92U3BTb2tPU1BsUTNxdXZyMGRNaGJRcUl0TVI5NU1SL2xPalVxdGdwVUhzWkZBWGwwU1hCNDh5OGwrOFM2N0lTSzIwdE95ejRQR3NuRFpUVWlKTzdCbGVQT25VWEhxWWsvaXNVb201YzMrZSsvUFNuNEJyR2NPRlY5Z1lxTW5Ob3BYaHpzVUM3b2xIdVkzQ3k0RWtMTHBLdEdUaTBWbXc5cDJDdEpocE1WZ2YzNzU5OGViTnV6ZWtLenNrYXpST0gzYTliM1poNW1reEtjNHNsRmJpdFBCSVlmUUl1SVVzM0g5bTJvcFVTNXlibURpSE9ORVdERHMyTHFuNDdQVkx3QnF5VTRTd01ISzlSZDZyUDhqaWFrVkZmRVZGUlVJRkNZdDJkMzFvZG1XNW9hanZ3ZERiRjE3cFBrR3BsZUdXZmZTc2k3czNXN05ud01ITEErc0F6OTJlUEo2dEtoMm1aZWVWN3BkZ2o3aisrZWVmQ0pmVWtzWGMxYkFYenl3eWVVazFIOURhdkpPZWtvNTc2bEdDNWhRWXZVeU9mYnZja2dNRko0eDNiajUwNnZ4dWVoNlE4OVljckhpMFErZVBWVVAxNzVTYzM3MkRzRmlqb3RaTkF5UzdRRG9UMkhTTUVOTnk1aUkrTEV4YWtRd2MvOEdpNTNSZ2trb3lXVWlzT0ZCQ09veEUwcEtUUzM3MjdQVzNUdy9lMnFrUkxCVEN6c01rTFhwaWlJb0tCNGVLaWlBL3RvY1RWT0NBZEEvZmQwbXM2THNTdnJ2K1JYSm5Ra1pxbWlVOUpaV2pBU3orL080ZEVGWGdibXNudk9PcGUxTnkyQUJhckF4Ly9sbWFZUDM4TTlYaWttVkxmNGJBbGpGMGpOVmk5b1FYYWdYNTdyQXVlZ28vbGp0UEhiSStSUHN6M0JYNWw4Z1pRVnBVcXRZa0xheEg5Y1owSkJZbXF2aXhLcXd5WDFIdXpSdHhVdzlDcDNKemh3VWo1dWV6eTZSdm04bW9YQVBBQzdRbExmNmM2NC9TQ3hjdWtwNDNmK0h5aGZNWGNLeTRYUmloa01HU2RIbjlqSzZBL2NoQkxkNlhZQkVyMEhLblNRamlxc0E4RkUzQ1lxZ3FLdEtUMVlRUGRvYy9xUC96UlNRTlFXbVdqdDdxUEhzclQrdDZwL09BOUdEMzdyUTA2M0JIbm5veEpWT2FkMmc4bFBqcHA1OS9ackFZbjJYTGxpNGpWcXd1RnkvaHBFVlBURkJBa2RXWURYK0hjYmZ0eE9RZUtiZE0vUHdGc1BpQ0UyNi8vMzZZdGkzWU04d3dXRjR1bTVTVUhKNWxoeFY5eEcwMkVqZDE0N2ZHOWZVN3E5aXpPdVQ3aXM4RmMxYWN0WlJtTGU0VDVtQ0dTeFBuTWxYUm9RaGloVWpLS2N1UVlEMzcvQ256MlJ1MWVBYzJlTEZuc3FHZW5CSDBFYm1LaGtlM2pBd2ZPRm9DVUNYcjZoWmhDbnJ3bGtKV1ZGRnBXamdkck9EeCtMdnJONTkzSW1HRmc1WWxzeXp1RVNtcXRNa3M4ZE5pb3ZWZjRrSmNUTW9pZnF3cWlaWVU5elFPaXBzd3I1eUFJQTRhMDhKWUpGeXlaUHJhelV2Z1d2UjNPNUhlVCtFUFRlT2NaeGtheGdjOUN3c2JxZ3FxY0ZIem9udWRHbFg5SVVnVS9lcDNZM29hREFjSEJ6dXVTVzZEL05URTI5TGkrWWNKaTZ3ZXdKWXlTMHVrZlFVaDdWaEZrclRVR0N6aDYyZEJyejhWMXp0dkUwOWUrRStvSWJwbitESlV0REpPWlBoZ1pxeTRuaHlwbGx4dlBmUmc2TkhiZDNhZDBkbVZwZUdXbHNpZ2ZYMTlnRVgzTm9SRngwdVJIb3JaNDNmSTRla3gwZ3dOeHdxQWZscEtINURPdURRaHRpMGFmQlRWRGhUNFFGOG4zTjFQK0JRY21DKzFqSzdHd1hBdFF6QXRBSzJEOVNoRmpnUE4wdkV1em9aeThjK0NNckxOcmp3NC8xYk54UUUxU0kwS2hWeC9xUDV3UGVuVW5UMFZocStYblJjN0RTeitLTnozS0oxS3dUWVAyWmFFSVZlbVpHT0pEQmFWSWRFU3VvZzlDN0NvRG92N3ZKekY4alhleVdXdGZMWWpRWHVEMFJtWWYvMVltQkErTzMvK1lGRjlGVm9QUWhZOXE1S25vNFZBazArd2pGRWRqd0tkMG5aYlducDYwdVBHYUt5bVNacktrR0Q5MTMvOUY5Rmh2SmIrekdyeTU4V0xXZFQ2YWRybzZRaGhJdjJLQnc3UVRMUllhdWtpOFJXdjZYcHdVbkxiQ253eThCdFNtYktRRStTRGpxT2tKS2VHSUJnVUZSVTFWTy9sVWhIa0RsU2JIMWtmWXJpdzJQZFNNZnF5clZiY0d6NVlGUVVVR3crNE1HTFQreExpSk92c25NaWRqTWd0bzJsWW54RWV4cFdMMkZBdnBnVlU3aG51YnFtcHRFR1JHc1dlVlRFaFlTU3k0dEdXSitHQjFtOC92bmhqaE1IVnJHNDd1TkJVeUxmM1BHKzgwMm56WnFkQU9rK0JUbGJ3dEtmSGh0SHhzUTFyVkFHTFdNMFZ3L3I1SnpHcm41YVNvcFlzbnJINnhWeXFsNU15WEV3ZkxLTkxDSEdYKzJSUGF5Y250KzFvd2dreTdwMDdmeWYzRGlwQWs2ZnI2MWRVVmo1RE1QMVlueDlmRVFUeDFkZWpWcTBaSzRRTjRvWHZSdEU2K0RqNCtKeHdjeitSY1VKTUxKNjJFTlcyMFdtWllsU0ppWFNBRW93MjJlRVBDcGJPY2FVSUQxaWY0ZkRGOWw1b2g3UU5TUU1QT29rYlVCRW1Xa1NxSWoweTh2V1RMUStHSGdROCt2UEZHNlhJQkw4aXM1d2NTeFFjUWluZm5rbkwrdEY1Wkt3QVN4U2k1VzVMeC8rL3ZhK05xZXBLLzkwcWNGeUtQUjQ5Q21oNzhBVUJFU3lncDBKMUdONHF5SXVqSWdvb0tBVlRBMFhGR1BHRFhCRXhhZ0wreFFpNUdvRkpKSm5rMW45TXJpWTNjZzBob2VITHVabC9ZZ2dmVEJ2SjlLYk5qTlBPT0I5OFNXbHpuOSt6MW40N0wwaHJwM1Y2WjRtSGZRNTc3N1AzYi8rZWwvVTh6MW9ySHJFdE9XTUlzTHBPekFJZUVSRzZUTkkvekl2T255eVBNSTBqSWpjRTJZSkZieGx6TFdHZUYxN081KzFjSXNZaFBFNFcxQjBrSWFSNzNudm45TWVmOUhkM2RQN2pIOXY2T25jUGtCRG1rejgyQVp0YWZLZTRtT0FxS1NGMEQxS1A3Y0FoZEZReUIwaHFEdkVhUjR3V3NZY3dRZHV1dktzQ0VzRldaRytvcHc2c3lCVWtMK3Z2WCs2NW10U3gvZVMyTGl5Y2RKQ3VwT3dNMW40dGF5NlRTTFhjdlgvNm8vdGpqeDROMXp4OCtIQ0N1aFdiV21xYit4Vlk4YW5VRTN6d2FIQTNxUzN3cXFiT1MrNXBJWE51cS9STXlYVkl1SDQ5Z1JVNmkrSHk1Ukt0aFJFTEY1RlJqS0lQVExCa2k1aS9LR3JXMG5CamJXem1GbW41SmFkeXIzUjFJZTUyNEVycjZrMjRTMUxWNzczMzBhZFlOblBpbS8xOUhXVURnOVRWTElZdkJzTlpROG9Vd2Y5TDBGMjdkeC9zSlB1Qm1qbnlMYkFpbEZxcUJnd2k0Q0dDZE5JQ1lNVUxrSjBFWENoQmR6aE9rWmQxKzh0ajU0ODhMQ2c0dVkzdzZvSXNNcS9PZ0ZVZmZ2Z2hZVFY2dE9jUHFRK2Fob2NmTnQwNSs4MzI5OTdaRCsrcktZZVhqUzBzekNza1prMWtkZzdXRTZkSUJnc0xTZTlUYnhwTy9CclM4S3UwMllUVjlZVGxVTzd6bVViTHBkTWxkZGR5MVpUNlYxaEZMSnkzbEdlMFZGT2t6bjVMTHF5RllQb21MdEI5KzczSVRibGsyRFpockVia1I5MVpGN0llZnJhanI0T3d5b2QzY2VjbTNESHlsUGNTWENTVVdIVU1uR3hyS3lHd01xVmk3dXJDRWtpb1lOMTBpb1NQUlpKMWV5NldIOXUvbzdXZ0FDVjFFcXkvL2UzcThHY2ZYNDBiMkVWSW9nYVd2RitJSVhKQkJGVEw0YnYvZGZTL0RtZkZGNTB2ZkRRMk1URzQ3ZTBsNzIwLzJYeUIvSWFjb216UzVBakxQSGp3cURqellHYU50NUxCSWhCSng4ZGhZQW8zN2ZwMVNTeWpFYldpSXFoekhXVkJTNHFpMGFKbXp3a0xuNnV2SEt1NGhiVXYxVHBrUEZuL2RiSm9rbHh2djdPNmd6VDh4RWtDcTd0MzdPR2RNWWJxenFOSGovYVN1NHkxLzBwZ3ZOQ2xBMVRRZUIwSERrSU1keUJSMDBjK2Y4ZkEyRmp4V0Rkb1FuMDg2dlRkdjMrWEhIRW0xOXRMSEcrUC9mM3Z0ODUvZWVqdkR5YlFBejJKRkNhY0swbXEyc010bzBlUG5xdnRmNUI5dStuMjdZY1RmLzVtRi96ZFhTZHJ1M3Q3eDhDaDdPcnF1T3pDQjVXUDdnd2V6S3dzOUZLSHA1S0lCZkdNT3hJVEUzTUVMNXJDU3ZKS1lSRUZEYlpJWXBVUUNGWlUxSnh3ZlRwc09WMjRtcWQ0a1Z5NFRVYkNGakZZckhGT3ZiUDkwTmpBTjMwdEJCYWhSYXBLUWxYemtGN3UxTitwSVFORWJtNWJCYjlDRE1zZ2hOUUYyTmI1eGVERXhObVNPdzhmRHBQNFlKUVNEMVY2Y1B0MnpxUEs0UnJ5d3B2YWU1djdXcHFHeDdKdUQ2TWp1bjFYTG1mSHlXSWNRT0xzdzhNdGZjU3FGdEpWaitnRWp4NlNGMU53NnRUcWd1MXY3OXAvNkV4dmZYMVRIVUdTZlRXK2tNVnc4R0NidDlDTGZuUWRldEpGOFZ0NW9qRk11cUl4VmxLNGRHVk9pb3FveFhieGxGVU1JNlNnUmtVdERlTVZaSGtSV2JtRXJIWDlSTGs2TGluZDF0emMzTlVZWnJCcjA5dmJCKzRNSGlKbXRRMU9GRSt3SUpJVUVtanQrVEpiaVdMTW12cjY5dmIyM203dThKSU03dGp4NXduYTdTRjVqdzhuU0NVL0hCNitmUnY1MnR2eTkrM2I1N1BQNHlWdVgvYnQyN2VHYjU4bk4vUHQ5MDZobEtlQTZIVjZkSFQwTGlwUWpoNjkrM0ZOM2FQaDRSekMrODdFdHUybmR2UzFuTjZ4YTlmK3J0MGw5TFYxbFFSVE5xWk5mbEF6Vm5Hd3hJc1N4NXFhSWN3eGdya010c1ppbXRKWU1DdEtWMFVXYmtWRUtDbE1zR3V0K1FBcjRickNhcTRGclhubXlweHlpV3JIb3R4V1lDWDV0V3YxWnhPZjlSMHFJN1NRQUQ4N2NaWjhDRTY5OVFLbm9hRzlXSXlFaDZhMTkzYzNjMXJ2OU1TZGgxbDd4c2JHdWdjK085UjMvMzRMOVpiSHhpYkd3TWRId083Uk1HUDN0OXVvcFNEVXJsNjlXdFNQdU16SkhhVDlUL2FOanQ3SCtqZTF4ejYrV05TMFozaTRpTHJPZHpvS05sRnY1TU0vTlBmQkNkNjJPNStETVhWMTN2aDRKWVlsZFVNY2V4aXFxNFJqSDVlRUFmcHhTVEdrc3hLaUlnd3JaNVZFeUNEOWo3SW9yZmtLclBERjc5SS90VHl4MUZ0elp2bXRERWhvdlVQTStpaVg2MWxJRmVlU213VnJTTzFzeWVBZ0NzYkpNTXJhc0NFTUhDcVZXRFZsOVNPSDMzTDAzTVNkcHBveG5xenFJem9OTi9Sd1RpTG04dGxubncxOCtlV1hFMmdBVHhJTjlaRHJDdU0yUHFpOGZidm00Vmg3RHJYejV4K3NmNEMvWGh3ZXJya3p1UC9VYWt4ZGNPekN4MmZZY2ovZTNVdklETlVQZWIwUENpc2YwUjZkK1Z2cXR0UnhxeXppTUx5Y0s0TjBsb2tWTTBzaFkraDJmVU0zaC9EM3I4OTk5OTEzMzdVS29qa1p0ckhlSFZhN2V3ZW1pLy94U0kydVF4MERtWXdXb0NwUkZTazdTMHU5cFZpV21wbVZrek9jeFZPQm5qczNNVEh3Y09JMDlRTTU1M3IzZmw4ZjhtTVFxby9ZY09BSEh0ZEpRbTRBZkpQMGtvMWdlM0E3Qng5Y1BFKzhlM1Q3d1cyU3dNRnRxMWVmN0t2OXc2ZW9tbWtxUXlpaTh5QnhhNGpBR3FxcmUxQkhtcUVpczRZWFJpR0w2TVhNeXZRdkRwT0t4R2NrRVZqUTVnNFRLK2s3a0xPVndCZ0Jxd2lMZ29jVUxtYXMzdFZYdnA1ckxNd3lTMThDWGE2UzYxQ3VSSzdrQTR3NStmaUlqdThtWVVTdlltam4wSmJOK3VpaHZBZkFhamhMVHRnNDhPZU83cGJjVGF0M25CdTkzekxhQXV2Zmdvd3J0N3QzVDZPZ0NGMXU2YTBXbkR6ZGQvK3pMNGxrdDgzR2ZNSTZOK2RSZEhSbm9LL2dvNU45TFI4ZXUvREpuajIzTHVhMGQ1Qis3ODE4M0ZteWQyZDl6VjZJSHZsL0ZXMElsSklXWTk4ck5VN0tZWHcxL2JZeWk4R1NXRkVQS0dGNVFnS0RGV1V4aG9TZnhNcGcxbUp6eVRLNWlJWXVqSEpCVThkN3B6YVJZOVJLejU5SWY2aXo0OUJCNmdwbWxxQmpXRHdFVmJXbE5DOXZmZDc2emV2WGUrRUtEbU91OWRyN1Iyc25PZ2I2dG0raTQ0QlRiUXNidHVZUHpVYlF0ZHpuRE92cG96dGdSaENPMkhIeUVDRkdqYUQ2Rzl1RDg1eTdmL1J3b0cvSDZ0V2M3NzBnUjkxZnpTNXF6MnhycjZsdk8vaVBTOFU3U1hNOW92LzVKWmx0ZGNUeFZBS0xzSXJQV0VsSVlhTEU2cmpxV0MxS0Iwc2FRMlVPRXhndGtzSUlHWTlZTHYrMm5NRjZWelpGTFYxdjZlU2E1WWVXSS9KdG9FVStFWFFFa25iQTZ0S2xzemQzU3F4S3Zac0pMZnA1VUZmM3FLa0pXTFdjUGpmV1A5WUJtU0ZTMVhLWlVmTXhYbndaeFd5b2ZpUHZDUXVYSFdheXRkeUYxVHQ5TkpjY2ZYU2x2eUc1SkYwMk5nYmNIazU4T2ZEWnRsM2JDYW9QUDd3QUFjd2F2b2k1am83RUYxZTAxeFZWdHU5Ky9BVzZ6b1RWbmJIQnpoSnZIbWw3QWl1MU1KdG45ZUZwVnpBdG1hWjNaVXp0anVBZnlTQmhSYXhiaURpZzRWTUFMRVVzeFMzRDNWTHJ2Qm56K0hNUGlGZGhkbkFLbDdoMThncDNoYmJkNkMyNXhBa1FtYnZOMjd4ZVR1aEl6S3BweXVvbWg3dnZvK2FIVGQwN2RwenVBNTBJcHU3dS91NSt0SStOZHV4RHJDeHNZUnBMNTduVHNrOUtrRDMrNWgvZlVNL241QTdZWXVwZkU2cysvZlNUckZ1M2huTXVZcHJXSTZ0aThrcEs2Z3JqcTcwVmozZm5JMEphWE44K3VEdWY5RDJCVlpRdHM2eHhtSSt6T242U3VvNWFoTjFwa05DaE95M1YraUpwQTZYYUI3VjBLUVJVQmx5ODhyZSt3cW01VHBKRUMzQXRBbHl0VjY1MG5iNnkvMEJ2THdmemorL2M0c1h3S3M3YThzcW1zSVV3aFMybmozWS9mTmp5VVIrazV0aVo3djdlL3Y1MitwZlZoTlVWMGRIRWNvdkhBRm4zaFkrSmJKOWVZSzVKbmpGaXVadTI2K0ZYQXU0a3pxUUVFT3QvRm1JK3U1Z1ZhMVpVbGpRVmJqMnl0YkRpY1dkK2ZjM0QrdUl4QXNzN1ZJZWNkQnpQRmt3N2JrMUtxbzR2Sk9wcmpKWGsxWHdGVmlUUVloa0VqSXQwRVpVTlV0aGpTdUhpeGZZVk5lUnlaa3B4S1c0eFhBdE9yU1oydFY1cGJTMXJMeTRoWHQzY3lhbzliLzM2MUhXcEd6UFc1WG05UlRuRGU3SXdpLy9SbG9teHNUN1NNTVEvM09iMUFBQWdBRWxFUVZTcWJ1RFUzalNjazRONWllaGxqMXlmY2c4UXk4TDZsSkpweExOanh3eVN0Wnc3M2JvYVFPMzZpcUFpcExBeTR5ZUVGZm13VjZ2ajR6SXcrZWFhOTFmVWx4UnUzWHJrU0dyKzQ4Zm8zMDlNVkhUbTd4M0t5eTdrZGE5aVZzUmc3Rk5TZFhWMVlhWFhxNWtLU3dVZStEMXBLbXV3UVdyKzVWWXBOTENTS241dXVMRXdwWFd4SkFPdVNJZGpDZmVHYzd0Nk1RSUdRbGhLdWdvVkordldZV0pWcU5TTEYyOTk4aW5BNmg3cjd6NkhVcVVMQUlvd3VsaFVSSjNhb3FLY25NcUxPVVhuZWUzVG5JdDdtdmFnM2RyRGRHUEVMaHo3Z3hMTzJwWXJCY0JxUDJGMUFjdk03OEZjVU9jTHMrT1RzSnFxSERJZW45K0VTWTNXWkxRL2ZseVJuejh4MWtZK3ZUYzF2anErR3ZNcHI2SmVEdkdydWpxanNOQUFhNzdVU3BKakZnVm0rYU91M2hmYnNGTE1tbXVzd0xYVVdJVnJ0a3BuS0Zra3VDTGZJU04vbzcxWUZVK1VydCtJYW9EMUQvTFdlNzJveGlnaStTS3dEcDg3MXo4dzBIS1g1S1liRXpmVmtCR3ZycWJ1aUxlUzdYazJwbHJOdnBwOS91cEZyQkY3OGZ4RlhpbFdJcGJGaUVFc1AvMGZGMnBiU1hkMUhXcUcvTEVGdkpxZFRTTElVeXRqM2IxVmE5WVVsdFRGWS9yeVpmV1AvNUpaMGoweDBObFdTUzVWTlhKZ2FoSkF6TFF5U1JwZmdVV0NGMlZvZW11YmIrMWhNN0htMmpXVzB2REd5Z2RoeHBKbGhsR1VmVVVwakpIelZ6ZjNzdGVPSVdoNXFRd1dLUzMyc29weXVydjZJRVhuVG44MjJISC84SVZQUDBZdW9hYW1xQkFWZWZIMGJBdFRNUVBrSk9ZSWk3dDZ0VHE3cUpwUXd5UnE1eGt4eUNlcTNELytCQ3VqZnZKSjFvWDlYKzAvdVB0TXY1eWk1K3FSSTFnSk8wbUJ0V1lGVVdkWlRVMXFITkpkTVVPUC85SXhPSEF3czdJNkZsemF5a21kR1BxWi9FL0FSV2hwSERCbW5XNEJhNkZkM1p1MjBIU3kzbDNzcDdKTXNPYk1tUk93THZvQ3ZmWmtkcTBFcTQ3UXlvTWdBakdBQmU4OXE3bnJaQXQxY0U0UFRIUWNKaldUMWQ3YlRoMDNiMTRxZVllWVdIczlSbHRodnN3NHpDdDZwRHA3NjFiTURGYk5nR1ZmNVlXSmIwbkp6T0pmV2R1K09waloxdHRFZWowN213emdFVXh3dTNLWlJPdjlXTkxoSyt0ck5pWWhOeGhiZC9DcmJRZlBGSzVFWFZZc3B1bGVoU0hETWRXVGsvK0JPUUFCMWdKa3ZDTG5SMWlZdGR4T0x1bXNLckFzYm9NSkZic09FaXk1bUs2NWlyeXU1M1cwbHR5bFhrNTlQWUZWVjdxNWRET0tDamVYbGo3WW5GZEpmZ09wOTlvUER4TlloLzdjY1poOHFxeWM5dUtkOEJISkZrR3hFVmpyTm1KU2NsNGNJSllVeXFvWVhtMEpRd3Jqc0RRNGhvVVhLWTVCUlYzTk9mZzRzd0lCdnNKc1JEeFIyUjRUdTR4WDdWM3ptelZKOFZ0ajZ1cFRVYkYyWkd0MTNlT3Z6bVFreGJNTXhzaHM0Wkd0UjZyL2s1aE1XQlVWYWJMQVFWZnRTK0FtR0dLbmIrcVJCNXZmSUpXN0lZUnl4VEpnRmVhM2dLY1NSVm1aNDNDTXRsT1hjR2pMM3JyU0IvUVBqUWVGZWlWWWF1YmliWWRhYWtuUk5PWFVGNVBSOUhyelVOWUtIMlB6K2d3TTl1QkY2R05XeENZUklXTGtxcDhjUnFGMmxlVlNyZzlPclpyUXFxRE9RcVczTUNubUNBOEQrRTFNckZ6am1IRERQS1dWZFpEREk5U2I3TzNOaU0zT3JxNk9sZFYrV0RFdWxqVld0Z0pyMFlMNUVpeExwNGRSa2hwZFlZVytZa0xDZFlEVlkzWjFEQ0c4cmt1aHBOYlNPZGJWMFMxV2thaDF0TGUzTjc5K2FDKzR0V1V2ajl2YnkydDYxdFMzdC9lelMzcXU0QzhkdGNkSUtlY0FySjFiRUwxQlRSaVUyMllzWVlLeGZDdFdMQ093cEphRy91RWxaVEhyemxZb002dzlYejNKOHlJM1BmN2liSDQ5cHVVbUZTVkI0alhVZUJYTXVMektvcVRDUXBSRFhyMmRVNVFCUTdKVnB1ei9PNC9iNS9taHNvdUtKc2tha3djL0h6VXoxbnlFQ1JYNmhWTDhaTHZ1SjRVeTZtQlJXZWJhc1NvSU1kdGlGS1dTMy9TbmJoNkl0bmZMWHVxOER1MlVkVXg3ZCs2c3IwZmdyN24yVU12OUhTZkpFbVlSc1dxS2J4NC92bGVDeFRXdFhBYThFWXVZTEZ1eGJNMktKQ1ZPSzFaaFRVc0NrTmxWRGYzTUx4Z3RFVnYvUlVYK1RtODhVVElXYXhwakVOT0tmZnQrUjJDdldiRm1YVjFUVVJ5SmFOelZ3cWFteWNuSitHeTJnNnRrSVdrTWxuMmNMTW9oaFVwdWl4WkJmdlo4ZjdBWUtSa0ZWS0JGSmN4VHhMSjFvaVZXdXNxeXdEVUhXVVVzSGpIUER5M0h3c04vNm1lMHVCMm5IL0s2NEhmVjE0L2xFMWdkaDdqYlRNUWFicUtPTFVya3RtemVYQXFyV2JxZUN6VHBQNG1pWFA2YVlHS3cxRnJZV0JDVTdnK0RKTFltd2ZuR3hFNHI2L05MaXV2V1phek1pTnU0Y29WY1oyRFpQc0Q5L3BvMUsvUHFtNHJpNFluazlBNU5laWZwNE9xdGJBV2x5bUplNVZUQ0g4NUIzM0RSQWxWa3RNUmdGc09sKy9ReWFKcGdCY3VxNEsvUGxRckxRR3ZPSExYNnQ3bE11a1VRSGU4MkUxb2M5cE1oNVdLVVI1eEZtWFAreE9BWlFxdWorVmh6Y3plQk5WeFRmeE0xWVdyZUNhNEE1akpORXNkOWNoYjhGU3VTWW9nZmNuMTFFc1FZSWxjUy9WdkdNN1JpU3RzVnEvNjZEdXZKNVUzR3JsbVJBUjlyWlJLanRXOGxaaVJZRlZkRGZXalNTUSthYXZLOFJTeTVzYXRpSkZna2hIRlg0N0xoQzVPLzE2UVJlUmJOdDFaa2tjdGxCRWZucTZDN2pHLzVnelhYN21UWndMS2dOZHRFaTZrVmVScVZzSWlTNXBmZzlleWxzd2hDOE52dTdqTURaY2pKbk9udWJocXVxYWsvZnZZc3lTR0c5OGx5UTFrelRmSzRNV1BmNzM2WG1ycHlKYS9IdElJbmVjZk01Wmp3Vnk2U0RhVFdRRXhYclBUV2tYeGxKSzM2elpxNDFJeGxLN0hJNmdvY3M0YmdpSzBycnErcHVWMVowNTQzV1RSSnpLcU9rVmk5dndyckh4UHBpa2dJYTVvSUxrMlp3UVhLTjVYY3NpWXBvbFJPbjNYVzRuZnQxbkN1MGRWUmFMRXQ1TldiNTVpTHBlc2hHMTBRUjc5R0dSNXloSmtWYlJVbEpaZW9sWnd0QVhhRGJabGxaV1VEWlFObnVzZkc2dXVMYjhwcVE0eUc1SkdqbU42a2xHaEdnaGkzNzNmcjgvWkp2RmJLcGVQV3hhK01YUmFML3pFck1MbGhMQ1R1cjJ2K1NtaGhkbndzYjV5RVJhNzJyZHpIUzdJVFdMRXI4L0x6Nis4OGJDOFpJbDZSQjFjZEcvTitUQ3dtNm81bGtTYXNjcHFvendWbUVUUUxvZU81dkdpKzZsWmJzaFRNc0lVU0s3KzQzOXpGdGhWMHc4S016aUVMNHF3Z2dpaDEvTnRYUm10NVFNZVp6TExNekxhMmlvcTJFaFI5VlhDT05aT3pyQU5JWlJRZjU5TE1tOGRWdFNIS003ZnM1RGtWaUZ2cjlxM0wyN2UrZEIyQnRCRnJ3T0EzdlNiRnJrekt3RUxaY0tpV3NhbGNrNUdLdFQyU0FGQlNLcnkxOVJ2M3hhNEFWSEh4cWZVbHhYZnkyL0s5Ukt3TTFFVysvNzRjc0JPYlZBMWVXY0NLbEM2V05JaVJFcXo1eTYxTlZVQUFxN2syWnFFUEhRNlZGVzVTYStsU3E0NVhjTTIyUld5QTFsRk1MZnkxSEFORFZDSjRaSllWU1VNQ2NEZVBKU3BCU1QwQ1g5eWtZbU5UZ0VrN1lCN1g1ZVZ0ektzcHBhNFMwSW9qc05hbFlpcDgrcWxPNHNud3NTZ3QrMU94R1Y2dmwraElLaXVPbEI2NXd1dmpzQ1lZNXBEMDV2K1pudFhRcEpMQlZUejBIcndrV21GeTRKeWNHa2FySFNNczBMK1p2OER3c3F6VWtsaHhmR3NPcWF5NWZoRUhLWU1XYnRrTW9za3R1NDRuYjJ2QnJMQk5tMXBIVzc3KytrWlhGOG9tZCsvdTdOeWR5YWw3d3ErTXEzRklMcytlL1FLRm1aZTQ4UytKMkU0c0lMN1hXMXE2ZnU4ZDhBekw1bUNTanJ6VWFneVJpTStBUmN5SUJkMElMYnB6a3NFTUxJRXltYlJzSlhmZlM3MllObjlqWVo2M3B1NE9QYW44dk1sSm9oS21KWlU5UW5wVGpZbVU2MWhqdGJlVGUwaGdSUzdTKzRWNlFVTkVoRCt6RmxxTm9UV1NaUVhMOE9FQmxBd0Rta3JMamhiR2NUZ2NpemExWHVrNklPT25CdzRlSU5ES1ZFTmlBOXFzcEtJVGhhejRYM0ZKaXVxbC9HSlpOTDJUZGY3Tm0zczU0THJGUzFpVjd1WG9SV0Y4ZkRVcDlJekpTZW9pcmN5SVhiRXNwdG9iSDVPVVVaaUhwVDMycmNOSzBhWG9hYVdtZXVzd2VqZHpkdzZJUlQyQzk1bFVqQldjOXNxNm5FcTJoRWovYWp5VUFsMW5ZS1RuV3lQc2NpaXJBNi9iM1N5YmRwZFFoZXVkUTNRUGRYdG85aEt0NGExSVdST3g1RDJ1dkRrZzJ3MnVMT1FHM01DMDNRZDNTd0VsM1ZiQkw1Qk9aaGRYbVIrL2xDL0h5cEJ6VU9jdDNVczlBYStYL0czWkVGeGNoL25ETWxhV0hvK1BXWllSdnk3dlFlcEdMQXFXdXI0VTg4WjRhL1lXNTFlMFpmWk9UbWJFWW01U0RtR1JuMFo5bkNMRTBBQlZlM3QrKzFodk84UXdNdEtJeStpVlI3clBycGlGbUlUcGt5NE9ESkxLdmlFSHRFeFJuR01xclhsV1I5NFBMK0lYQ2pBUGRLRmM2Y3FWcnRFREpualVpSEM3WldWYVpodTBXV1ptQ1JRWktxWnZGdTg4ZnZhTHM4ZmxiRHJJYTJNa0ErbXpTdExWeVBwUjI4eURKVW54cnp0ZXZ6RXVibDE4S2dkbnNkTGNldTllTHVuSEpCWnRsUVRXVml4L1RFNWFCa3NnZFo0QkZpa3NJbFYvTDRzaG1jSElCWXpRUXNVc0JzdUF5cDlaaXcyd2JPdWt5NVZpeldXdFZYelpaaERONkpZT2x3cmJPSmJNWHIwRElmb3IreituRjJ6SVJ2QnQ2ektBSzVOai9ERDdtZFJoeDNmZUpBa2xtaFhMRGdIMW9YWU9EUkZvMUN1SEgwcWRTc0FGUjNiZHhxSGluVjZldmhZQ21FZktQcys3QmVRa2c5djV1TjA3U1dvT0RzUEtqSXhsYTJLckpWUUVWazFURTNFS0txdjdETWJ1eUk2MHJHOEF2V3k4WXJESVVVMHd3RkpvemJVeXkxZ3BYYTFyclhzUUZtNFpBUWdGbHdIWUVxbkNGcnh6YXRPbVhibXR1YmtvZzJsRjIvLzU1d1d0MjdidHYwS01PNkMzZy9UVHVSdlZxNlM5OHFIT3pwN0ZyQUZFc0xQRng4RXZ6R0tGQ2IrR3Rnd05FVnBiU3ZOZ0NMZnNyUy9lNHExRDl4MnU3UVBDYWk5TTY4MUxsem96aHlwSnk1R0Q5ZjZhRmVTRVZOT2J3aUlVRTNEVXY1K2dBbGhsMmtKWkR3bnlMSTlhcnZ2cU9sWVJDaXpKckxtTFRhd1d6N1V4UzdsWkVxeWxRY0N5Y011QUsxTEZiWXlhcmlYVTRWSmx0bkxHRm95TUtpakFLcE5YL284aUd3YjBIdURxMVRaeVo3K29JS3VKQUZsdlNjbFpkQVBBc1dLZUd3MllFVmpnRjBhWGx1N2NpOTQ3QVloNVpFcEp2ZTBsVnQzRWpFNlo5ZDdKZURnYjVHR3QzSmc2V1pnYVAwa21zS1ltcDdMb1ltVk91N1NGWjg1bzhINklXb3ZNZmcxN1ZCSXNJMW9hNGNjczB5V2RHMjUxczZ5K0E0Tmw3U0phNFZJQlFXVWNWUkdjUkl4SDhrVkd2cWRBazJQSldrRXlrdEhQcjJ5Nzh2bm5RT3ZHYm5MUEtnQldCWStHaDE5YndXVTV2Y1dvekJuNlkvMGZjLzViSll2akVPem04ZUthK3ZvYWduRm5zUngvZFB4NFB0ZExmM0dXaEpCTUlhUXdCcjRhd1FVN1dGUEhocEE4TEtJVmlsTzFSUnhXWHFTcUl2VlFEUDJ6VjJWRlJZRllpeTNhM2E2empNeWhQVkJqMFZvNldtL0pvamVUWGtvVUkvWEJqa3NjT3MwaTM1TVQ4T29FSTdqMlM4WFdoZXoyamQyWnUxVVZhbHNaWG5pcnJhU1hJWU1iK2NlY29Ycmdoa2J5VnJ5VDUwV1I0OXVPWXpJbjFHZCtBWDgwTHo0V3crMWpZdGRoU2F6VXdrcHlLZXJyQ2FpY0psa3poZ283UkVySmNWL0U5ZHlBYTdiaUZaaGxwQktWZ2tlV3d1eEcrNEdsWTJYQnl3NldzWWp6UXIyTWE5R0NSWFp0TDJFelFBTmlzTlg2TkVvRkJia0ZuN2Z1SjNwOXpnSjU4QVk1Ryt5WDNjQlllRXlIME5iMnY5cDZVWmNLaHJXMy83RWRpVGRpVWozNUc1ZEtPTkNSZitsU3ZveDVuS1hQQ0cvcTZCUjZwY3VmeEt2Ync4R3FxYzhING1BV2RIdmJtVFBOdFRLc1RHN3BXMFpzQVZoZE42UndvZEw2T3JQODBqb1dyRlEvMm9DTFl3K3padmx4S3dBdlUzdnBGRE1RaXpSMVdlUTdVYWVBV0M0cTRFbjNzeHJyZ3BHRW5memFjTS8rTHlIMlB4bTB0amFlL3JJM24rTWJCRkYrUG5jS3lOR3R3S1FmK0EzUHJUT3pHTVZPazlWd0d1SUxDMU5oQm5QcVNHVHpRYzh4aUNDS0VadWJiOEFhUmlnaFZBMmwzb3BZRVZHemVSUVVOcUN5RnI4YldnckRMTXpTbDI2ZVl3ZExUMkc4cFFObVJZdmhXaEJwZ1kwZEM2T2tsNVEvcWJGVFBFdlhhcURHdnNab0YxYXdHUjBsOXd4TzdRSENqWkQ3bWlEN1U5dVpQeEhObUdTazBBQlVCWHFmRmFyV0YwTTdPalBMT2c5V2tONGZHcXFjeEhRaDNzckMrS0tMUlpYMWlFU1c5QTRTV3YzOVVGZGNTcTh0ZkN2cXJiZDRZRmdDSTdWY2FpeHBDK256V1FrOHNBY2xiTmNYTC9hSGF1N2NBQkcwZytXUEZ1TTEyNGFXeFRoSzBCWW96SllFU0NaSjVUdGNqN1dkYUNiaCtyeTExZUtWU2NBa3lRZ3ZLWnJvbFRNOG1UeDBEeGhoQThOZzZLZHRxQTYyYzhoYmxKcGRTTzVDMGNXTDVJZm01dzhPRHJZTnRuWDM5M0tSYTNNdHdNSm93OW56WmdPcUJOMXBNR3doc0pyRllDMU1rTXl5WnlybTJqczd1cHRsY1V5WHpwcGxWMXhLei92alpUaGZGaWRzZ2Nrd2l3bkFQQUZ2bzhoMkU4UFZTbTRaTzJXZlM5QzYyTHZRSVN2N3VveVZHbmNDVUY1L0F3T3JPakhVVWJiSG5jVjE1TUtTMGF5clZCVUM1Q3cwMWRTM2p3ME1EZ3hrRGtBRW04L3dFS2xSYmZhOGhIbnpFcXp0dXRuUmlZcWFOeXVCU0xkSU1zdW91N1ZFU0FPTW9aK1NOOEN5a0d2ZWJDT1RZZEZlMFBkK21Ca2tzeGdBSGhBekd3NHNnVVZ3NWU3U042RExvUG9KcjlIUkE2T2pMU2dZdlBIMUFWMmpIVkF2QnhpbXJvTUh1ZzV1NjhUd3I1eks3R3pVdkJmQnJ6cC9rVHZPVGUyRDNkMERBMlVNVlcxTGJVZkxLSUZGMUVtNHZqVEIzcFp6NGExVStWTEJFMWh6VFZJRmdHVlJXVXVOTkw0UkNWVGUxaXdyV3ZNVXVkNnk0Y1VXVXJlU0Z2RmNZSUVNSkZza0N3cHo0ZS96ZklPNTNKaGplbzlwZEZUcU0xWnBvMTFHbDdOTE5zeXBmYkE5NTJKT3puRE8rYXZuTDk2NktOdXRwaXl5Z0lRVUEzWG1URWR0N1kwV0FwN0FZbWN6Z2NkWkpGZzdPVkc2TTRHeEtjU3NPZGQxdE9ZRytLTkdQMXFubE4xOU1CU1hsVjZHWmZTempwWVdoR1VMVE1BVzhjQkRIbitJLzZUMEZWd0tNbFEzSGRYVjJXbFRyeEh4VHVJWFJtSDhwUnRyWU9VMGNYMUp6cTJMNTFVdFU5T2VQZjBZb2xoMm8vbk1zZG9ES0Q5c0diMXlXbU9jR0M4Z3BWdEVXZEVkSlNQdzdEa3NsUXJlNUpVL3NVd3R2elJzQm1EWmJlUEM0SEQ1QVJacEI0eW42U0FuY2VHaWlGT2JNTFJPNXhjbzE2b2dPMHFnWGRIQjQvOG5XL2UzWXNLRTFvS0NNaUlSQ3BadURRL3Z1YVUzTHBuTDJ0UGZjYWlqck9ORzdabm1Bem8vdGVzNldCYWtHQ2o2RnhHbGowQjhLeUVzWElFVlhHVVpmY01BdFRYSDBnSU1vOTJUMEgxN0cxcFd3RXl3YkhxTTN1cURwNGxmcXczSWxHQWViVlZ0UitzT3VRSHRWbER3MVlGK2tHaVlmdllNeTVJbHJpaWgxdi94bnF4anpTMEhTT2ZWMW1LV2xsSE1xNnBkVDlEQllnMDFUK2NWRHhtSTBFVVJ2V2dwaGdheGdvQVZIaFFzcUhncldEWk5iMkpsWVpjTk0zOE5GdERZNDBDUFRRMDMzN1ZhNHJYYWdscnJSNjBZN3NHY3kyMHR3TGl5Z2wzN1VhYWF0VWVXWHFLMmkrdTcvamRLbGo3Tyt1VGpZNWljdktXVzdlRFIwd1RXYWFtenJ2TmdWdkxpWjV0U0tFTVF5aytkYzUxSGdURllpK2NHWTVhRlh1RWhxRFZyVnFBNEJpb3V1MzFjSVBYOU5JQkZXbnBNQ3hZc25NME0yN1ZwdFhyaFlRdTVQTmJEMm9pQ0JjMG82a1d4WlpNc3VjVC9UeGd5bnQ3ekFrWjA5clhReStpNUswZEo2N1ZxME51NDgrdUJMVUZuM1hVenJmTnVRTEhEdEcxdXNPYUhyeldxS2xHME8yVkJHeHcxaXhCYkFIOXJsajd6aXB3cVl6VXo3Q09tRjczczBORXE2T3Uvd014aXVUTWJwb3pOdXRDTUtuS01xYjdiY3Zqd1haNEordWhSVFRXaDJadmIvbFpvYm1yYVA3K0ptZTZBMzBKZEU3M0lyVkRYS09UOWlJQmJvbGRoK1Z3SWV1K21uZmxFUXY3QkxSUWViblVLNDB1RSsyZTU1Ujk5cFBCLzUzNjlLeEFHM0VHYTJ5MWVmVHJ4eitHTStKRjRDZTBYYU9KbituWmh2b29mYzg4aUZJdCtWdUJFc0h2NHAzRkkrT3VJR1g2dDhOOWYvTkF6L09RM0pQNDVPbWVhODRnWm50VWRnSkg0eGNWUS9MeGlLSDRFd0NJSTI3U2ZXUTZGOXM5a2xRakpwQitpNG9PakkzNWVyR2J5cU1WUGdwaDR2WHNOZWhIaUY1SEd3RzkxNnMzenVxZXZ3a25nM1ZYWnowYmZXZVdjNFFYeWZrNzl1dFRuMGJSWjliUEM1SEY1OEJKdzFRNjl1ZnlzdEhqRlF4ZitXc1lwVDJMWjBQZUlEbk5jcTVxSktrcDAwUFUxaGxXcDYzTHlIbFZodkRrREx5TTRBOFgwQ2lHSWwrTUpkNFI1UFBTMTZkT0FOUU1CRVNFSUdod3MxZTdSQjhremNGYWpIZmMwTFoyUGpjWWxOZkEzSldJeldiekM2UktoVkxRd0xsMW93VDJiZ0ZPNmNBTjR1U2VtQThzQ1NFalAwT3hXaWNTVWxKU1FZSmtuYWFBUEVtM0tYd1Qxekhyd0tIc2NIblVPUjdqUW9lWVRDMkc1ZGVzMUdkY2w3T2ZXTDA5WUx6b0lsZndaZ0M5UGRzcW41US9XdFVDZEpZSTlSc3RGQ3ZNUnpJQlpuaDVIeXJTZXNid1ZZbE5QTkIyY1VxWEFZb1E5NmxHSzZZVlFCTEduOHZMRWREUU1KSVpnZFVCUExGMS93amF3VW9MeTAxL2V6SjBNUHB0WEUwUm4yYTQ3T3BDYitxc0pJTTdXNEdLUkZja01FVW1sWm00cFRBTW9JZ0l1MlBJc2c0dXNFQ2JYVExMcTEwdVBMUVZQcVNlSWdrOEovQ3FiZElpUVBjeHBtU1hzTmtHSWtFcEg2T3Fkd0VxV2hISkozZUNCV0Rya05ZcGdwQkRUZGNEVjVZbFFYbStnZUtvM0tXRWVpSDkwRUxCNnNJQXVVeUdSOUVQWVBUWkNrUGVxeGpESFBUckNTUjlmUzhRbmJGY2J3aHhoRGZTeFNNR05wS1JFaHhCRFQ4TTF4N1Y3ZE9kT25GNkxwdU9qWFdIMGRld0hWTGw2NkRRZSt0QWdlNHFqeDFOMWpVVVc5eGtHamtYTERYNmdWY25YNkdvYlBMZ2pkWnhTUzFVdU9qWWx1VXJJOHpydXdZNFpsOWVZa3RMb3VVZmZSbCtjU0tlNDU4UW5VcWRWTlJoWFpGeHZWVSswSUNPY0dQQWdEQVZQZjA1Um00M3FxZUE5MmZGRStXbVlmRTdxblNOUjZNYzZnNElsWUhzbEorUVR4c2VTSnZBakNCVDlwTUhzTUw2YTdNSTFyWkVPU3BIU0hpMlBkb1RUVjJ2cU9FVWVkYklxZGxNYzBwSUs0L0xvK0d0aDhsSWFqSHRSMTNWTnZ5TEw5WVpzQmxqeUFnM0w2REkyUFE2SFpTYzg2WHYwSE1rVG1SNHNYRmVQNjE2WTB3cVdhdVFJTkRoQ095MUNYZ3RwV0FmdXZWR0NWUlZtSE9Ga0pFeXc2QUdHTlRiMHVPaUJFNkRYWERoNXVtWUZTMjBsbXQrYVl0Nmp0SHZtOVlic01aZzQ0R2JDRXAwdStZZ1k5WFNucTBvMHlLMUdBOUZyZExacjRKOHd6WTBJQkl2MnZGY2xxalFiczZMNWVsUGtFM0E1MDNzQ3dlTFRwV0NuTVBuZ28vbDRvYTdvbnJ4UnBSZWxEcWZYSGc4aEpkL1RyMGErU3YzeUFOWTlwOU1sRlNCdFhUUEJvak1tUysxb1h1OTB6RW94dlNHblVoZUovQm90cFBmakNLOVMvbzdVY1NUcVBjYTNDWnVDaDhKMFdyalo0RFNza3BNZnQ0RElwREJrdXZQcENqQlZRbDZXWkY4UEkrREVkZEJEbExmdXNZbWhZTkttSkVwR2htSHBkQjFEaDBJK1RQb3dmRnJCSkZXWDcxRkdQZEZ5dmRPRHhaWXFSWjFhM3F0cDZIUTRYVHI5Vk91eFdFUGRkV0FMbnl4dlJHbWxSQ3V6blBKK1V0VDlhNGJ1Q1hwWjZVcUR5cDJ0MStHMGdpVjBWZFJnRVJRQUtwRlUzMmg1bnZJVDgvTGxIWnZYT3dObTNaT21taDk2c3ZGRkdvU2hCeHVRUTM0MkRiTG5IYTAvVnlYaVZRNUpScWdOcHBDV3lCcTV5Z3FXZnFISjBrVHdRYTRnM2gyREpNTDVsQXlhRTIvNE9ocjRNN21EdkNqY0wrdWxkTkR2bW9vTTZGcENoMGF3Mnd2Tno5S2l3S3JTNzloeXZTSERMd29zMVFjanE4RG14R05oRmtCc0lDa0s1MC9vZkQxME9tZUR6dDlvajM1cWZqSXBLYXlIeVloSE8zWFJEZ0lXZXdUUldsVkRjR2FaTmdJRWx1OGE1SjBtc21TcTY4Q0RnZXVZckNuQmxraVNGK0FVd3JpOEZPTWV3eVIxR2syZFJkMEZaeGdmRk8wVTZucW5VL0NLV1JacmM4OHFZVTZiTmNRMWhhZWt5SzR4eTBtWXpvbEVtM0VoVFpIaXVzWmFJUWhZSWlXME5UU05SYnIwWStRN3F6V1ZPSWJ4ZzJuQXhaSWRZeHc4OG9HRk8yU2ZYRjZlL0VaZGhJTmF3eFRzcFYvdkRNVFFjRkhZRDdJNDV3MVdzSXgzN0N5RlNUbngzL0ZhbGVrcDJQd3NBeXp6eTRKYXczUWxwV0VzMkI2Sm1mRXdHb1RsK0hDUDhaamhaK2s3aFVVTC9mSkVpdEZMVVhySjRtZnBlMXV2OXhWZ1NUQTlmTGRocmlwbEUzVUY0c0tYOXR4VDhMRmtoelZ5Z0FxeVNaNnVMdVJTNk1Pa1E4eEhPUnFxZ29ORkRqMXJiLzhJaGNrQUo4UGZnMDlVQjFZcXBwNUUza3NlNytEK0Ezc2djbFB0ZE0vRFFoR0d5elBCSXJSWXN0Tk5CYytIOHBIbTljNjBzZDRPekhnakJxcnJVbWlqYUdNZnAxTlk4ekVlZVFLaGh6aW5pOXJTdnFJcUNMT21DY1ZYNFVLTWo4MWdxdVpSd1ZRaHoydDAvZnl2UUNDT3EzZDk1VU9NTmdJdWZMMHp5MVdJb0IxY2hJblJjUlM2THJYZGp3aElIWWtRa1o2QWt6dnA0UXRwRllObXk4UXIzNGhwazFZaHU5am1nN0RGQVg1WXJEOHd3YThpZk9Ib1FUU0dxVTZqUFFZWklqQXJna2VOekxnYytxRmhEYTRVWlRuOTVGQzhJZ29WR0F2VEF1T0NJa2hZejk3c1VZa2ZsTGtYUVNNbnBGNE5WUnhXTlUxaVQ5aGlqa0Z1MXhidllhRTI5YnQ0UlhRdWRLR0dDRXdHdkRJeUx3SWpUR0k2S29kTWJnWVJ4blNGVmsrMEdYNnpBU0pDNW5TRkg0N21ZNis2cDRjNHhQUkZEeUpJS2o4a1lld1JxbGZWWHBoZ0NSdGcwNmd0RVRMV3JoOVlsZGlRa3RLUWFCVW5NVzA2UlV6L0ZVcjl1NmdUNS9LRVBqaklzeFBCNUZRRVRTS0x3SnlCLzhlSXM3MHFpZlVxWnIzcUtCRlNhYzZZdzlwMFppSFVBU0o0TWlYVTZVV0ljb3RYMTE3TlJNK0xtZXdoWHZzazArWjhmOUUwOUl5dlJVeExKT0dmZTNwVlNaeVkyU1dJSC9uSFg2UlZPYzBXc2s4RTZUWmJ0TDk3RXUwSmNwTWVtWElYcjBVYVlicjlid0t4ckoxazF6U1AyTEpiaXJCbm1CcTRIeS84Q01IOUZTR21KOTRNTUhzendOSUN3Ukl6aU5TalQyVmpWclNST2JZQjRncDFrLzVwOVZkSXM5TW9lWGdEbVJYQ2tvWUd5K053QkNZanRkQmdxZVNOSlFFMjdVVytJY3ppSnd1ZGxheUNuNTdRSFFvdUFGS0ovbWhoMTFrdVIxaDZJTG91RlVNT0lZaUt5R0tHWWlqRW02RzFncFFtaE5qZGlQWDRLWGhQVlpBVHUxNFpjblROU0d1OVNUckxCdFlyTklnT2xwK0NEOTZuMHBrVndnajZsM29FSk5uRm13NFdGSW56bXFQbkhtMXdXTitKRFJFUXJlYzRQOUxGckhhb3krQzA1cjV0T2d1blRPYzBQYzZuNzVPWXdnbTFSczJhYkpkMUFUMHVmQ2xDWW1zYmx0Szc5RGNWTEpXd2QzRGd4S25DeElraUlLYnFNdkx3RFliNjhZUXJ2OElPbHJGbkdMSUlZUmJmdzJFTExpTm1yN1psblovOTNac0hsakFDTVU1NTI3cWhFMzdSZWt1Y1Axb0hTK2ErdzUxYUFGaEdEa1FZK1hFRExHdXlYWlhMNkFVQjluZHZHRmlTSThpb0o4cDhxMU1sYWczUHlBWldTcFdtc2xpV1hMMVc1ZWM2Q0puTWl3N1RNLy9ZUjJpMnNvNHF6a3hkazJtalJKbExkeHJ2M21SbTNaTWVCVk1MdVpFZXpaOVpRcThuMFBPai9ybDZmMmFSWmxMaGU4cytLazJSd21rMW1XeFhLVHQxcFA0dStRM1dXUzVGSTF6clBhV3g5SUNhVGNIakl5dFkvcmx2VjVCYUYzTWYvWE5yc3QxYVBlRFVhd25lWEd0bzhiZFVtVkdQMEVMb0xITi8vU2c5OSszUExKY3duUTFqSDNXUUpka3VyTlVEVHFPVzRId1UvRWdBQUFqc1NVUkJWTTJ5aGlJb1dDcGZtdWpuU0lZR0s5cXBHWUxrQjVaeGhKblB4K2YzcW1RMUU1S29rTTFrVlQzUXd4NmFldWU1OW9Zemk0bkVacjdINWpkT0E1WXdjOS9CeEZCMmtDejVmRmtXa2F3bjI4T2dMQzNWQTNTay9kMmJMSVpDVlVFbGFqTmxscG43RnJhVXNwVlpsdnk0OUxUdW1jbjI4R2pOV28zcE5ONkZ2OWxneVFScWtHQ0M0WE1HWTVZcjNNeDlDMyt3OVBvOFMzNGNPZ2tWaEpaa3UwekNOeWd0SldSZVBUMVl0K2xOaWpiclJWQ0pvZks4d2JMT3dqOVhIeXhSRlczTnQzdGtSRXNtMjRYNnU4ZVNDWXgyZXNTYmlwRjFNMFNVU2t3YmRYL2xTTDJndVNyaGwyQVRBU2Q1Z3pNWC9JSFJLNXhSamlwVUlqL0V5SEF4ZzV6RW01ZXVDSG1kUDR4WW9mZjRRWk1VaUI5ejZDK2pwR3hOMTFqL0drLzM1eWVUOVUyVlBqemwvMnRJUXVvQ0VRaWQrSmZSRy85TVhmN3F3ZkhpRGRZYXY0eTAvYnY5VUM4aFVNWC9HMDRkaUtEVWN2eTdCVzB6RkZYeGI1YjlxemUzbTJ1RXJmT2xtWDh6NTAxekczOXlxMWUzWlMvellOczUzTDg2cU5TTWJBYnozZnloMjYwWmZ6THYybzNaMWR6NjdIT01qWENydmR4cUhqb2RlYmY3MXdhVzJkdDJLK3lFeVNCc0dwWHBGdHE0WmNFNm95TU1lRFZ6Q2o4RmsxdjdGVExMclZQRHVFVzNkUVpEaGFmYlQ3cUV6aVY5NWtORE9QV3RYeDFZL0NKMHhvQkpKbGlHaE5tWTVWYm95ZGtqZFNSNTJraGRhSFZSL2ZVcGVCc0JoR1U2VENFbjFKU1Rha29FTkZPTmFXNUQyZkhPeG5sTU9mejFjVXU0clNxY3lhR3JMMTE1RzVaU2FHNnJxRWt3c1RrK01qSnVNWi9pMXdnVTM5NUlXdG9JN3ZCSm1zK1hsdllVOS9vc0xlMFovdlkwYlNwdDZqdmFkUHZTbmhKV0k3NjBFZllZUjlKOEwybS9jWi92S2YxeC9LVnZhaXJ0NVRoaFJLZncrVjZNMEs1cGFWTytxYlFmMlJXeWpCUVNNK21OV3lLZ0l1U2NteitCWXNCdGplRDNFOXduYmw1enY2QWJ4dCtlK2dndDM5U0lXNlBmMzd2ZGhCSGo2djUrS3UxYit2MHN6ZmVjc1BvT01QdlN2aHVuL1FpZ3FiVG40eHJoT2tXZmF1UDZkWTZiRnNJZE9DT3diY1lZK3ZmYkRjSHVUd1FaQnFKZTE1YXZwUi9iNUZwaXBrT0hmb0ExQkFMWWZPTHpqVkFqQWwzR3JWK21jejhsUG8wODk3MXdhMU1TZ1NraUlZNENzTStFOWgyUlJ4TXYwNlplakl5OElMSUp6WmYyeFAyOWo0QWQ4Zm0reDlsR3ZuMXlXVDRUMm9BY0M3Y1dlczVVNC9QR0Q3VEFOQTdlcEs4TmZpTVNyRmYwblY0WExrRWNJTEFJdENkcGFZSk5JRUh4L0huYUUyWVdFZTNwMUZPaGtWQk52V0N3K0tnblJMZ1hibnBMM0xuc20zb0s3ZlkwTGUyeVNNTnhhVk5QK0t5Z0VtSHRlMEc0MGdZZDhrdzlibmNvQWRSL1Y0MEh4Q0xrMzh0L0gzemdrUTBzRWV4UmlKK0FXcXlJb05kSlp6MTU4b1J3MDc3MXZYenBJekVqbmZYZENJbmFFemZwb3FjZ0hraUkrWk9mcGoyZm1ocC9tZmFjUkpoMmVBYWIrTXlYOXN3OU5mVnk1Q1VnSGZGTnZYenloTUJ4UDN1YTV2dVdJTVRHRkcwSXl5VExlaHMvVWY2QjVuR1ZmekN1SlNlZU9PSFIwamQ0a3Axcms1MmU1TVRHWkkrMjRZUXJXbHZiV081TUx6L2hURTlNUHFFNThVbjZCOG1ONlpxVzN2aUJSNGtoTnJYazlCTklaSTkvVU80U0cwN1FIblNXRTc5TmIvenQ2OExsaG5aUllrZzhBVEhvN2tlSUdJVEFVM3cwSlhYUmt4ZHAzejZiOG8zd0F5TEtmZXY3L3ZrVWFmYVJKOUQ2Z2tDZjhqMVJPdXNsenVyelRmbWVDdUF5OHUyVWp5M2t5TGMrbnp1WUQ1WmVIcjFXMEcyVkoycmxybWlTd2VSMDdiZmxqUzRpakN1OS9BTlArVnBubzVaOElycHFRM255MnVUeTlIVDFTWG02cTl6amJCei80QU1KRm0rSzhzWjBWSVFtbHFjN0w1ZTdQaWpmc0xiOGcyVDhlRjR6K0NpdEllVGlDWW5UMDZmUDNPNFhhYytmUENGTkJXWTluL0o5TzY2eExocC9udmFVMVJ2ZC8xTWlJZW1yNStPRUhpSDREQWl3Q2ZXbFFldzBRWHoxZmZmMDZVdFlnUmRwYVdDV29BMVF6RzN0RE9nYXA3RnhnNmM4WFV0dTFQQ2FyQ1gvWG93M2tsaEJ0SWc5NWRUV09zdUpjdkxQbXZ5RXR0YVdPNU41bThIaVRleURKOXBJK3pucCtIS0ZKQnVBMTVSRTFsa2FpeUVMeUdWaUIvRWpiZXF5bTlUVlM0S0o3ZytVK3g3T3dBaDNDSDFUVHk3VEhpOUpQSjljbmtwN3Frem5aVGZ0UjFxZnpqZVNOalhDajBMcUxONllJcDNsRGpxUCtualZpY1p4RXNJVExnTXM0UEVCc0tBUE41U1BqM3UwY1NJSS9Ya2NZTWxQa2srTU84dWpFMTNDTXk3QlNIUnBubkVHeStuVVhDZkd4NlBMbmZRUURMQmVWMlZCVGJQZElxVU5hMGd1aEk4WTloUkNCV3NvNzUxQWdYR0VTNllKK2ZZN2tsUnNpQmRUUGxqREtiaGVVMmxQTGo5bnc1azJaVmhETnFCc0ZrUE54cDk0b2pGWmdDM1JPbGdrYUlsT0NCQzE5SEhYaVVZWGdVWi9jNVZ2QUZqeUV4Q3BjZHpUNkNwUGxHRHdKcDFDYUVTdzZQSnlGKzFmM2xobGd2VzZ2aGFwWXJoSkd1UUtmdGEzYVM5d1U2U2lZQTNkNDg5OXp5K0RXVVNPS1IrN0RnTFNwMzAvOVJ5bThxWDBzM3p3c3hnczJtM3FPL0NWREtnUGMwSEpQT240ZEFuVEtxZVQvaDZkVGtwbGJaWG04V2llS3MvYWNXMHQzZUFHT0F2akd6YU1hNTdmay9OVmxYN1pnNEoyL2lRNWVRT091K3lNRnVOcngra0htM3dLRVkwQ3RmUU50Sit6U3BOL3BKL1gwbGpRVlhBQUNDWXdpemFlUGt1Ymd2ZXVQWnRLZXdhdzRJZDlOKzVqVitJSk82aEFqV1RzY2hveENkelR4bCtTR3phbFBIamE3M3VmNytVSW5rQ2FiMFpqNzRYZktHeUxmeTcxakdYeVNOdFJ5Y2tpYUVHRHNJMGtEK0xHL1ZnM3krM1d3eWx1ZTN6VWJmWWM1Um9VUnJETExkUmZoRnVxSURmM0RZWHluOXdxNkNPc0sxMU1QN1pVK0UrN1lQRTF0YUNKSDk1SVRyYWhFNnB6NHpjRHZuZ3R2T1NUVTZGUHR4bFVVS3QrQ0xPUG9tSUpic1pGQ0JXTXNZWmsxUEV5MXVNV29lYitENHJYdE4zQTBMTURDTC92RUVGNEpINktlZWpkZXBURmJldU91dDFtckVhb1NLaUJtUTZmdW5hMzVKd0s0YmgxNHZuelFid2lRUmJDOHc3MVhzd29IZm1UQi8vY1p1OUREMXU1elppNkxsdDZPTmw0a0c2M3piYXhuQW96V0NyTUZXSitXTFRCNU1VMEVJc2d3aWRDemtqeGsrSHFWdHpBMDVWMGNpdk5Zd1RZZFVhWk9zaHRxaTRkVVQxOHFpS0JIRElVcjdHMmtKZ1pZa0Y3Z0VGbTdkVkVxTWxJZmlpemJEa3V2bnUzMjhEQ1dLdklqSkM2TFZ5eXBJVXNmM0dMWDJ2ODc5L3RYNkQ5UHo5anFuYVNMazhuQUFBQUFFbEZUa1N1UW1DQyIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMTYwMiwgImJvZHlTaXplIjogMzU5MzcsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDM3NTM5fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogODA4LjA4LCAicmVjZWl2ZSI6IDQuMzU3fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC4xMjNaIiwgInRpbWUiOiAzNy45MTIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvZW4ucG5nIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1MzMsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICJlMGM3RUEzUkguVlRCa0xNYnNJbTV5Ny5Cd21NS2ZZRXRDVVE1MlNNNGk0LTE2ODQ5NDI4ODAtMC1BYzY2NkdJaGRsYUFTZSttTGJCOTI1VW9CWVdwQ2d0cHVkTWlrQ051YzRGV1dtdnlQQmpFRmRacGNvMThzdGk4a3UyVjBCQ2txN3dVeGNVSEMyTW5MR009IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQtUmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWdlIiwgInZhbHVlIjogIjUyNzQzIn0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NmRlZDY2MzdlNC1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMjUwMiJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogImltYWdlL3BuZyJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIwIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcIlFtWGF1NHFLdTZVWFU4Q1J5TWhhNGV4Z3BvSHQ4bzY1S2NUVmNUSzRUWEh2MUxcIiJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImNsb3VkZmxhcmUifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiX19jZl9ibT1lMGM3RUEzUkguVlRCa0xNYnNJbTV5Ny5Cd21NS2ZZRXRDVVE1MlNNNGk0LTE2ODQ5NDI4ODAtMC1BYzY2NkdJaGRsYUFTZSttTGJCOTI1VW9CWVdwQ2d0cHVkTWlrQ051YzRGV1dtdnlQQmpFRmRacGNvMThzdGk4a3UyVjBCQ2txN3dVeGNVSEMyTW5MR009OyBwYXRoPS87IGV4cGlyZXM9V2VkLCAyNC1NYXktMjMgMTY6MTE6MjAgR01UOyBkb21haW49LmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb207IEh0dHBPbmx5OyBTYW1lU2l0ZT1Ob25lIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVBhdGgiLCAidmFsdWUiOiAiL2lwZnMvYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkvSnVubyAtIE15IEp1bm8gUGVyc29uYWxpemVkIFN0YXJ0IFBhZ2UgLSBTaWduIGluX2ZpbGVzL2VuLnBuZyJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1YYXU0cUt1NlVYVThDUnlNaGE0ZXhncG9IdDhvNjVLY1RWY1RLNFRYSHYxTCJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJoaXQifV0sICJjb250ZW50IjogeyJzaXplIjogMjUwMiwgIm1pbWVUeXBlIjogImltYWdlL3BuZyIsICJjb21wcmVzc2lvbiI6IDAsICJ0ZXh0IjogImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFlQ0FZQUFBRE80dWRYQUFBSmpVbEVRVlJvM3UyYVoyOFVTUkNHalFrbWN3WURaNElReGhKSmh6amlFUVUyV1dRd0lvZ29zb0FqQndNaUM0eGtqblFtNTNpQWNUWU9PT0tNTi9JRDdpZmNoL3NCZGZQV3VwZmUyZDZ4ZDFqREllWkR5ZDZlbnA3WjdxZXIzcXJlc0UrZlBwRmxsb1hhd3F4SnNNd0N5eklMTE1zc3NLeUorRUd0MU9tMndMSXNkRmF1QVJXVGJhZXd0emFLemJGVFVwV0wzUDhuc0VwTFMybnExS2xzRHg0OE1EM09uajE3ZUl5TWpBemw5YnE2T2pwOStqUk5tRENCK3ZUcFE1MDdkNmJCZ3dmVDRzV0xLVDA5WFhuUDBxVkxlY3lQSHo4MnkrSmN2WHFWeDc5eTVjcDNCOWIrY2lkRE5mS2RuVHFsMi9qL1lia09ldnJSL2Y4QWE5KytmUlFXRnNZMmVmSmswK1BNbURHRHgzajA2SkhmTmJUMTZOSEQrNXpJeUVqcTE2OGZSVVJFOE9mdzhIRGF0R21UMzMzUjBkRjh2YnE2dWxrVzU4Q0JBenorM3IxN3Z6dXdWaFE1R0taMG01dXFYSjlvYlltVFdxZDVBSnRkNktBQ3UvdmJnaFVURTBQZHVuV2pFU05HOEFMbjUrZUhGQ3g0d1pZdFcvSTFlS0NDZ2dMdk5hZlRTYWRPbmZJQ0JzaS9KbGg0MXcwYk50RERodysvTzdBU0dzREtrZ0I2cC8wL285RFRIcEZ1cDgybFRxcDFmUU93bmo1OXlnczNmLzU4T243OE9QKy9jZVBHa0lGVlcxdEx2WHIxNG5hRXlrRDNYcnAwaWZ1MGE5ZU9LaXNydnhwWTM3TUpzTEx0L3RjZTE3bm9sMXpQOWFoTU81MnVkSkhML1JYQmdyN0J3aVVsSlZGNWVUbDdscTVkdTVMZGJqZTg3KzdkdXd6Z3VuWHJXS2Vndndvc2VDTzB4Y2JHa3R0dDdKcUhEUnRHZmZ2MnBWdTNiaW5CeXMzTnBhTkhqOUtxVmF0NFhId09LR3kxNzNMeTVFbGFzMllOdnllK1gxVlZsVjgvYUx1elo4OVNXbHFhM3pVODg4eVpNN1I2OVdwYXUzWXQ2MFBvUk5YejBEYzVPWm5EK2ZyMTYrbjgrZk5VVVZHaDdPdHl1ZWo2OWV1MGRldFdXckZpQlIwNmRNaVV4elFDQ3dZaEQwRWZuZVVSK0lNMTBPNXJ3RFU3V0ppa0RoMDZjQmdTSGdFYUN3dDU4ZUpGNVQzMTlmVXNkb1ZXYXRHaUJmOGRQWG8walIwNzFnK3NNV1BHY052T25Uc2JmUitId3hGUVkrM2Z2OThiTG9XMWFkUEdCMEpoOEx3ZE8zYjA2UXVEeHJ0OSszYVROTmJseTVkNWJ2UmpZTlBCeSt0RHZYaFAvZk93QWZVQURobzB5Szh2YlBiczJRSEJOUVRMWnJ4aDYxMXUrbDBUK2gzU1BZREZGemdvdDRuNnl4UlkyS240UW5QbXpQRzJZZGVoRFhvclVKYUc2L0F1Mk9VQTdjYU5HejdDWEFZTEloMXRXQ2d6N3lndkdMelBxMWV2MkJJU0VyeWhVd1lTaXd6WUFRVThETUpxV1ZrWmc5bXFWU3VHTVRzNzJ4Q3MxNjlmcytkRzM4VEVSUForaFlXRnRIbnpabS9pVVZOVHczM3o4dks0SDk3ajJMRmovRHdZNWxac1dsbXpybHk1a3NkWXRHZ1JQd2ZaTG1BZk9IQWd0OE1qaHdJc2hNSmYzemtvei9HNXJjenB1U2RjdXdjaUgySy8ydFVNWUFFZWZCbDVGOXRzTmk0RG9GMGZIckJBRVBmd0J2cXc4dUxGQ3ord0lNeUZSNU1YMHd4WVdCQjlPQkhReXVVTmxESFFodkFjS0FPY09IR2lJVmp4OGZFQk04V1JJMGZ5TllRNldWY0NKSDNmRXlkTzhMVlpzMlo1MjFCZVFSdm0wZ2VFeDQvWjQrTjlnZ1VyUitGOUxsZTc2S2NNTzcydTk3K1dwclZOelBmY0c2bjFPVmJoREZqL0Nob3NMRFMrWU0rZVBYbVI1R3ZMbHkvbmE0ai9janZDRHRxWExWdW1ISFA0OE9FK1lNR1RDTENLaTR1L0NDeFZmVzNldkhrKzNyQ29xSWcvOSsvZlh6a1dOazM3OXUzWkd3a3Zwd2NMN1czYnR1VU5wQXBMSlNVbDdJR2dGekZ2OEZid1N0aEVLcDBuTnFKb1EzVEE4eVpObWtSUG5qenhtM3N6R2l2SFpGbmhabzJMWWhzS3JIRWFhTzVRZ0lVVVc0UzBnd2NQK3BnSWQ1Z1FlWEl4K1VMdnFNWmNzR0JCd0ZENDVzMmJMd0lMMEFUNkR1Zk9uZVBQZCs3YzRjOVRwa3dKT0o3UU41bVptVXF3M3I5L3o1KzdkKy9lNkxzQk1QUUZXSmhIbFFFODJVTmhIakMyOE82SURuUG56dVhORVd3UldJQ2wwa3RGV2dnY2srZWdjcWZ4R0M3TlpoWjR4dmxMNGQyQ0FndTdSUDV5UmdaMzdpM0lhUjVNM3lZYk1rUTlXQ0xjcWtLRm40dldRdSsxYTlkOFNndEc1UVk5V01qODhCbWVMTkF6Um8wYXhYM2dMVlJnWldWbEdYbzlWYWtHV2dvYXljamtjQTN2dld2WExob3laSWpQWEVkRlJTbUx5MmJBUWphSWEzL1dCUGFJOEZESldzaU16TEJSUzYydkNzS2d3TUxpaVJMQS9mdjNsWWFVR1gyd3c4VjkyN2R2NTdZdFc3WW94eFdoU1o2YzNidDNjeHQwUzJQdmhaMkx2Z3NYTGpRRjFyTm56L2d6dEVxZ1ovVHUzZHRIOCtuQlFqS2lEMS82Y0NycWJNSzc0UVRCYkRoRHNSanZJTFFYUEh4alpSazlXTzhVWUtGdWhXdC9WS3ZCdXFZQk56REhFd2FoeFZJQ0FCZ1VXSEZ4Y2NvcXQxNGZ0RzdkbXZ0aHdUZ20zN3pwTFMybzdnR29lckFRTGhBcW9MV01kaU4yTkxTTi9MeGd3VUxkQ00vcDBxVUxGMmIxL1pIQkFScDRHQUFTU0x6cjRaTk55QUhVdFFDQStHN0lHdlY5a2VBZ2U5MnhZd2ZYK1pCSm9uYUZSRVFQRDk1WHlBWlZUUzFZc0U1VWVNNFJrNnQ4Z2JsZCs3bHcyakhkUnR2TGtCbTZ2endyUkt5SGVNVUVxM1NMYk5PblQvZFc1WVd3RlF1dHo3b3VYTGlnTERmQXRtM2J4dTJkT25YaTBvVCtPYW1wcWJ6cjBRYzFzcVllNmVqQmtyMGVTaE55WDRqcmFkT21lVk45bzZ3UUp3Um9ROFluaTJ0OGYxRld1WGZ2SHJjQk1PR1I5UUplYUU3aFFRR1QrRDc2UTI4a0JZQlVocjZwWU1rbEJTOVlEUjdyWWdOWUQrdmNmRmlOTnRTenRwUTZxZElWd2pxV09IQWVOMjVjbzMxVFVsSzg0bFJVa2RFR01HR29nRU03WVZjQ1ZLSGI5R0Jod3NVa3crRDJrWG1pb2oxKy9IaStWeVFTZWdFYkxGallMR0xuWTJ3VVN3OGZQc3hqb3cyVmZia2lyZ0lMQzR2elU3U2p2SURhRXNLL2VCZFp3OEVMaVJJSE5CT1NueU5Iam5pTHhkaE1zZ2ZDYVlEUVpUTm56bVM5aWsyQTkwSzc2aURlREZqSkRScnJ0enc3amMvejlHdVhacU1OSlE3NkVNVHZ0NW9NbHBnd2VUR01STDdZb1hJbWlMclhnQUVEdktBZ2hHR1hxOFM3dmlBN2RPaFF2d1FCQitBNDFsQWRJd1VMbHZESzhEWW9pTXBWZXNBdG4wTWFWZDRCRER5YnlPckVCZ05nMEdINmF2cVNKVXY4VGdZZ0dWVFpNRUNWQzhxaVNvOWlySm1zTUY4QlZxcVc0WVUzL05JaFF2dTdwdGpCQlZJelo0WC9mTTBEVUxoMW5OVmg0bFExSENQRFFpRDhBVUN6OWEybUdFSVh2QVVxM0dZUHNiRzVvUDl3cHFnNmN0TDN6Y25Kb1pjdlg3SkdiYXd2aFB2ejU4LzlpcVZtczBMOGlpRmYwbHZYTlVHZStNSEpQd2o4a2w4MzJLd1QveC96MXcwN05BRys2TDJEajJtNlpOaEQvZ3ZTNTlaay8xaTJ2c1NUK1Fucm1XbWpxelh1a0lNVlowMzJqMlU0Zk82ZWFlZmZ1K084eis0Ty9UUENpQml1S212Q0xXc09zSDdXN0c5clFpd0xLVmdOY0VWcjl0YWFGTXRDQ3BZRTJDRE5FaldyMWV4ZmE1SXNNMlAvQVFiN2xNWHRuV29zQUFBQUFFbEZUa1N1UW1DQyIsICJlbmNvZGluZyI6ICJiYXNlNjQifSwgImhlYWRlcnNTaXplIjogMTU5OCwgImJvZHlTaXplIjogMjUwMiwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogNDEwMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDM1LjY4MSwgInJlY2VpdmUiOiAyLjIzMX0sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTI0WiIsICJ0aW1lIjogNzMzLjY4OSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hZHZpZXcoMSkiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDUzNiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW3sibmFtZSI6ICJfX2NmX2JtIiwgInZhbHVlIjogIlZSV2g2ZnB3ZXQ0bzRYeWFBNVZqM1lXeXQ2bjlNaXBYNFJrWkhrTjU4RWMtMTY4NDk0Mjg4MS0wLUFmODg2NG4rZDhXMFVRLzZOWENUMi9XMGl1N3QxNGx0cGtOZmNxTTA3STlNL0JvdThrTkRjV3V6Q3RRMUdJWjdTV2hkakZLSWRSMWVvY0pUNGVOb2VLMD0iLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdC1SYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1UeXBlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlVzZXItQWdlbnQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiWC1SZXF1ZXN0ZWQtV2l0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcyIsICJ2YWx1ZSI6ICJHRVQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LUxlbmd0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1SYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1DaHVua2VkLU91dHB1dCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVBhdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1Sb290cyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1TdHJlYW0tT3V0cHV0In0sIHsibmFtZSI6ICJDRi1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiTUlTUyJ9LCB7Im5hbWUiOiAiQ0YtUmF5IiwgInZhbHVlIjogIjdjYzZhNDZlMmRjMjM3ZTQtRlJBIn0sIHsibmFtZSI6ICJDYWNoZS1Db250cm9sIiwgInZhbHVlIjogIm5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtTGVuZ3RoIiwgInZhbHVlIjogIjAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluIn0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MjEgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlwiUW1iRk1rZTFLWHFuWXlCQld4Qjc0TjRjNVNCbkpNVkFpTU5SY0d1NngxQXdRSFwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVZSV2g2ZnB3ZXQ0bzRYeWFBNVZqM1lXeXQ2bjlNaXBYNFJrWkhrTjU4RWMtMTY4NDk0Mjg4MS0wLUFmODg2NG4rZDhXMFVRLzZOWENUMi9XMGl1N3QxNGx0cGtOZmNxTTA3STlNL0JvdThrTkRjV3V6Q3RRMUdJWjdTV2hkakZLSWRSMWVvY0pUNGVOb2VLMD07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToyMSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYWR2aWV3KDEpIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbWJGTWtlMUtYcW5ZeUJCV3hCNzRONGM1U0JuSk1WQWlNTlJjR3U2eDFBd1FIIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW4iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICIifSwgImhlYWRlcnNTaXplIjogMTU2MiwgImJvZHlTaXplIjogMCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMTU2Mn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDczMi45MjcsICJyZWNlaXZlIjogMC43NjJ9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjE1MloiLCAidGltZSI6IDE0MzMuOTg1OTk5OTk5OTk5OSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9zdGF0aWMudW9sY29udGVudC5jb20vanNfYXBpL2FzLTMuMS4zLm1pbi5qcyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogInN0YXRpYy51b2xjb250ZW50LmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDM2MCwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQtUmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCwgUE9TVCwgT1BUSU9OUyJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibWF4LWFnZT0zMTEwNDAwMCJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LUxlbmd0aCIsICJ2YWx1ZSI6ICIzNDk1NiJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvamF2YXNjcmlwdCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJcIjIwMTAyODE0NTRcIiJ9LCB7Im5hbWUiOiAiRXhwaXJlcyIsICJ2YWx1ZSI6ICJTYXQsIDE4IE1heSAyMDI0IDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiTGFzdC1Nb2RpZmllZCIsICJ2YWx1ZSI6ICJXZWQsIDI5IEp1bCAyMDIwIDA5OjE3OjM4IEdNVCJ9LCB7Im5hbWUiOiAiU2VydmVyIiwgInZhbHVlIjogImxpZ2h0dHBkIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAxMTQyNjcsICJtaW1lVHlwZSI6ICJ0ZXh0L2phdmFzY3JpcHQiLCAiY29tcHJlc3Npb24iOiA3OTMxMSwgInRleHQiOiAiLyohIGFzLWpzIHYzLjEuMyB8IChjKSAyMDIwIFVuaXRlZCBPbmxpbmUgKi9cbnZhciBfX2FzPWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdChlPXtleHBvcnRzOnt9fSxlLmV4cG9ydHMpLGUuZXhwb3J0c312YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fSxpPW4oXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxuKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fG4oXCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYpfHxuKFwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0KXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLHI9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKGUpe3JldHVybiEwfX0sbz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpLHM9e30ucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHU9e2Y6YSYmIXMuY2FsbCh7MToyfSwxKT9mdW5jdGlvbih0KXt2YXIgZT1hKHRoaXMsdCk7cmV0dXJuISFlJiZlLmVudW1lcmFibGV9OnN9LGM9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6ZX19LGQ9e30udG9TdHJpbmcsZj1mdW5jdGlvbih0KXtyZXR1cm4gZC5jYWxsKHQpLnNsaWNlKDgsLTEpfSxoPVwiXCIuc3BsaXQsbD1yKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKHQpe3JldHVyblwiU3RyaW5nXCI9PWYodCk/aC5jYWxsKHQsXCJcIik6T2JqZWN0KHQpfTpPYmplY3QsZz1mdW5jdGlvbih0KXtpZih0PT11bmRlZmluZWQpdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIrdCk7cmV0dXJuIHR9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIGwoZyh0KSl9LF89ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQ/bnVsbCE9PXQ6XCJmdW5jdGlvblwiPT10eXBlb2YgdH0sbT1mdW5jdGlvbih0LGUpe2lmKCFfKHQpKXJldHVybiB0O3ZhciBuLGk7aWYoZSYmXCJmdW5jdGlvblwiPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIV8oaT1uLmNhbGwodCkpKXJldHVybiBpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIV8oaT1uLmNhbGwodCkpKXJldHVybiBpO2lmKCFlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhXyhpPW4uY2FsbCh0KSkpcmV0dXJuIGk7dGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfSx2PXt9Lmhhc093blByb3BlcnR5LHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdi5jYWxsKHQsZSl9LGI9aS5kb2N1bWVudCx3PV8oYikmJl8oYi5jcmVhdGVFbGVtZW50KSxJPWZ1bmN0aW9uKHQpe3JldHVybiB3P2IuY3JlYXRlRWxlbWVudCh0KTp7fX0sQz0hbyYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJKFwiZGl2XCIpLFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLHg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixQPXtmOm8/eDpmdW5jdGlvbih0LGUpe2lmKHQ9cCh0KSxlPW0oZSwhMCksQyl0cnl7cmV0dXJuIHgodCxlKX1jYXRjaChuKXt9aWYoeSh0LGUpKXJldHVybiBjKCF1LmYuY2FsbCh0LGUpLHRbZV0pfX0sUz1mdW5jdGlvbih0KXtpZighXyh0KSl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpK1wiIGlzIG5vdCBhbiBvYmplY3RcIik7cmV0dXJuIHR9LEE9T2JqZWN0LmRlZmluZVByb3BlcnR5LEQ9e2Y6bz9BOmZ1bmN0aW9uKHQsZSxuKXtpZihTKHQpLGU9bShlLCEwKSxTKG4pLEMpdHJ5e3JldHVybiBBKHQsZSxuKX1jYXRjaChpKXt9aWYoXCJnZXRcImluIG58fFwic2V0XCJpbiBuKXRocm93IFR5cGVFcnJvcihcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIG4mJih0W2VdPW4udmFsdWUpLHR9fSxqPW8/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBELmYodCxlLGMoMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1uLHR9LFQ9ZnVuY3Rpb24odCxlKXt0cnl7aihpLHQsZSl9Y2F0Y2gobil7aVt0XT1lfXJldHVybiBlfSxFPWlbXCJfX2NvcmUtanNfc2hhcmVkX19cIl18fFQoXCJfX2NvcmUtanNfc2hhcmVkX19cIix7fSksQj1GdW5jdGlvbi50b1N0cmluZztcImZ1bmN0aW9uXCIhPXR5cGVvZiBFLmluc3BlY3RTb3VyY2UmJihFLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIEIuY2FsbCh0KX0pO3ZhciBSLE8sayxMPUUuaW5zcGVjdFNvdXJjZSxOPWkuV2Vha01hcCxNPVwiZnVuY3Rpb25cIj09dHlwZW9mIE4mJi9uYXRpdmUgY29kZS8udGVzdChMKE4pKSxxPWUoKGZ1bmN0aW9uKHQpeyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRVt0XXx8KEVbdF09ZSE9PXVuZGVmaW5lZD9lOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuNi41XCIsbW9kZTpcImdsb2JhbFwiLGNvcHlyaWdodDpcIlxceGE5IDIwMjAgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIn0pfSkpLFY9MCxGPU1hdGgucmFuZG9tKCksVT1mdW5jdGlvbih0KXtyZXR1cm5cIlN5bWJvbChcIitTdHJpbmcodD09PXVuZGVmaW5lZD9cIlwiOnQpK1wiKV9cIisoKytWK0YpLnRvU3RyaW5nKDM2KX0sej1xKFwia2V5c1wiKSxIPWZ1bmN0aW9uKHQpe3JldHVybiB6W3RdfHwoelt0XT1VKHQpKX0sUT17fSxHPWkuV2Vha01hcDtpZihNKXt2YXIgVz1uZXcgRyxLPVcuZ2V0LEo9Vy5oYXMsJD1XLnNldDtSPWZ1bmN0aW9uKHQsZSl7cmV0dXJuICQuY2FsbChXLHQsZSksZX0sTz1mdW5jdGlvbih0KXtyZXR1cm4gSy5jYWxsKFcsdCl8fHt9fSxrPWZ1bmN0aW9uKHQpe3JldHVybiBKLmNhbGwoVyx0KX19ZWxzZXt2YXIgWT1IKFwic3RhdGVcIik7UVtZXT0hMCxSPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGoodCxZLGUpLGV9LE89ZnVuY3Rpb24odCl7cmV0dXJuIHkodCxZKT90W1ldOnt9fSxrPWZ1bmN0aW9uKHQpe3JldHVybiB5KHQsWSl9fXZhciBYPXtzZXQ6UixnZXQ6TyxoYXM6ayxlbmZvcmNlOmZ1bmN0aW9uKHQpe3JldHVybiBrKHQpP08odCk6Uih0LHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbjtpZighXyhlKXx8KG49TyhlKSkudHlwZSE9PXQpdGhyb3cgVHlwZUVycm9yKFwiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBcIit0K1wiIHJlcXVpcmVkXCIpO3JldHVybiBufX19LFo9ZSgoZnVuY3Rpb24odCl7dmFyIGU9WC5nZXQsbj1YLmVuZm9yY2Uscj1TdHJpbmcoU3RyaW5nKS5zcGxpdChcIlN0cmluZ1wiKTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxvLHMpe3ZhciBhPSEhcyYmISFzLnVuc2FmZSx1PSEhcyYmISFzLmVudW1lcmFibGUsYz0hIXMmJiEhcy5ub1RhcmdldEdldDtcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYoXCJzdHJpbmdcIiE9dHlwZW9mIGV8fHkobyxcIm5hbWVcIil8fGoobyxcIm5hbWVcIixlKSxuKG8pLnNvdXJjZT1yLmpvaW4oXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpcIlwiKSksdCE9PWk/KGE/IWMmJnRbZV0mJih1PSEwKTpkZWxldGUgdFtlXSx1P3RbZV09bzpqKHQsZSxvKSk6dT90W2VdPW86VChlLG8pfSkoRnVuY3Rpb24ucHJvdG90eXBlLFwidG9TdHJpbmdcIiwoZnVuY3Rpb24oKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzJiZlKHRoaXMpLnNvdXJjZXx8TCh0aGlzKX0pKX0pKSx0dD1pLGV0PWZ1bmN0aW9uKHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDp1bmRlZmluZWR9LG50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9ldCh0dFt0XSl8fGV0KGlbdF0pOnR0W3RdJiZ0dFt0XVtlXXx8aVt0XSYmaVt0XVtlXX0saXQ9TWF0aC5jZWlsLHJ0PU1hdGguZmxvb3Isb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9ydDppdCkodCl9LHN0PU1hdGgubWluLGF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/c3Qob3QodCksOTAwNzE5OTI1NDc0MDk5MSk6MH0sdXQ9TWF0aC5tYXgsY3Q9TWF0aC5taW4sZHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcixvPXAoZSkscz1hdChvLmxlbmd0aCksYT1mdW5jdGlvbih0LGUpe3ZhciBuPW90KHQpO3JldHVybiBuPDA/dXQobitlLDApOmN0KG4sZSl9KGkscyk7aWYodCYmbiE9bil7Zm9yKDtzPmE7KWlmKChyPW9bYSsrXSkhPXIpcmV0dXJuITB9ZWxzZSBmb3IoO3M+YTthKyspaWYoKHR8fGEgaW4gbykmJm9bYV09PT1uKXJldHVybiB0fHxhfHwwO3JldHVybiF0JiYtMX19LGZ0PXtpbmNsdWRlczpkdCghMCksaW5kZXhPZjpkdCghMSl9LGh0PWZ0LmluZGV4T2YsbHQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPXAodCkscj0wLG89W107Zm9yKG4gaW4gaSkheShRLG4pJiZ5KGksbikmJm8ucHVzaChuKTtmb3IoO2UubGVuZ3RoPnI7KXkoaSxuPWVbcisrXSkmJih+aHQobyxuKXx8by5wdXNoKG4pKTtyZXR1cm4gb30sZ3Q9W1wiY29uc3RydWN0b3JcIixcImhhc093blByb3BlcnR5XCIsXCJpc1Byb3RvdHlwZU9mXCIsXCJwcm9wZXJ0eUlzRW51bWVyYWJsZVwiLFwidG9Mb2NhbGVTdHJpbmdcIixcInRvU3RyaW5nXCIsXCJ2YWx1ZU9mXCJdLHB0PWd0LmNvbmNhdChcImxlbmd0aFwiLFwicHJvdG90eXBlXCIpLF90PXtmOk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gbHQodCxwdCl9fSxtdD17ZjpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSx2dD1udChcIlJlZmxlY3RcIixcIm93bktleXNcIil8fGZ1bmN0aW9uKHQpe3ZhciBlPV90LmYoUyh0KSksbj1tdC5mO3JldHVybiBuP2UuY29uY2F0KG4odCkpOmV9LHl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXZ0KGUpLGk9RC5mLHI9UC5mLG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIHM9bltvXTt5KHQscyl8fGkodCxzLHIoZSxzKSl9fSxidD0vI3xcXC5wcm90b3R5cGVcXC4vLHd0PWZ1bmN0aW9uKHQsZSl7dmFyIG49Q3RbSXQodCldO3JldHVybiBuPT1QdHx8biE9eHQmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlP3IoZSk6ISFlKX0sSXQ9d3Qubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShidCxcIi5cIikudG9Mb3dlckNhc2UoKX0sQ3Q9d3QuZGF0YT17fSx4dD13dC5OQVRJVkU9XCJOXCIsUHQ9d3QuUE9MWUZJTEw9XCJQXCIsU3Q9d3QsQXQ9UC5mLER0PWZ1bmN0aW9uKHQsZSl7dmFyIG4scixvLHMsYSx1PXQudGFyZ2V0LGM9dC5nbG9iYWwsZD10LnN0YXQ7aWYobj1jP2k6ZD9pW3VdfHxUKHUse30pOihpW3VdfHx7fSkucHJvdG90eXBlKWZvcihyIGluIGUpe2lmKHM9ZVtyXSxvPXQubm9UYXJnZXRHZXQ/KGE9QXQobixyKSkmJmEudmFsdWU6bltyXSwhU3QoYz9yOnUrKGQ/XCIuXCI6XCIjXCIpK3IsdC5mb3JjZWQpJiZvIT09dW5kZWZpbmVkKXtpZih0eXBlb2Ygcz09dHlwZW9mIG8pY29udGludWU7eXQocyxvKX0odC5zaGFtfHxvJiZvLnNoYW0pJiZqKHMsXCJzaGFtXCIsITApLFoobixyLHMsdCl9fSxqdD1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcihTdHJpbmcodCkrXCIgaXMgbm90IGEgZnVuY3Rpb25cIik7cmV0dXJuIHR9LFR0PWZ1bmN0aW9uKHQsZSxuKXtpZihqdCh0KSxlPT09dW5kZWZpbmVkKXJldHVybiB0O3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbChlKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gdC5jYWxsKGUsbixpKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLGkscil7cmV0dXJuIHQuY2FsbChlLG4saSxyKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX0sRXQ9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChnKHQpKX0sQnQ9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJBcnJheVwiPT1mKHQpfSxSdD0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFyKChmdW5jdGlvbigpe3JldHVybiFTdHJpbmcoU3ltYm9sKCkpfSkpLE90PVJ0JiYhU3ltYm9sLnNoYW0mJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3Isa3Q9cShcIndrc1wiKSxMdD1pLlN5bWJvbCxOdD1PdD9MdDpMdCYmTHQud2l0aG91dFNldHRlcnx8VSxNdD1mdW5jdGlvbih0KXtyZXR1cm4geShrdCx0KXx8KFJ0JiZ5KEx0LHQpP2t0W3RdPUx0W3RdOmt0W3RdPU50KFwiU3ltYm9sLlwiK3QpKSxrdFt0XX0scXQ9TXQoXCJzcGVjaWVzXCIpLFZ0PWZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIEJ0KHQpJiYoXCJmdW5jdGlvblwiIT10eXBlb2Yobj10LmNvbnN0cnVjdG9yKXx8biE9PUFycmF5JiYhQnQobi5wcm90b3R5cGUpP18obikmJm51bGw9PT0obj1uW3F0XSkmJihuPXVuZGVmaW5lZCk6bj11bmRlZmluZWQpLG5ldyhuPT09dW5kZWZpbmVkP0FycmF5Om4pKDA9PT1lPzA6ZSl9LEZ0PVtdLnB1c2gsVXQ9ZnVuY3Rpb24odCl7dmFyIGU9MT09dCxuPTI9PXQsaT0zPT10LHI9ND09dCxvPTY9PXQscz01PT10fHxvO3JldHVybiBmdW5jdGlvbihhLHUsYyxkKXtmb3IodmFyIGYsaCxnPUV0KGEpLHA9bChnKSxfPVR0KHUsYywzKSxtPWF0KHAubGVuZ3RoKSx2PTAseT1kfHxWdCxiPWU/eShhLG0pOm4/eShhLDApOnVuZGVmaW5lZDttPnY7disrKWlmKChzfHx2IGluIHApJiYoaD1fKGY9cFt2XSx2LGcpLHQpKWlmKGUpYlt2XT1oO2Vsc2UgaWYoaClzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gZjtjYXNlIDY6cmV0dXJuIHY7Y2FzZSAyOkZ0LmNhbGwoYixmKX1lbHNlIGlmKHIpcmV0dXJuITE7cmV0dXJuIG8/LTE6aXx8cj9yOmJ9fSx6dD17Zm9yRWFjaDpVdCgwKSxtYXA6VXQoMSksZmlsdGVyOlV0KDIpLHNvbWU6VXQoMyksZXZlcnk6VXQoNCksZmluZDpVdCg1KSxmaW5kSW5kZXg6VXQoNil9LEh0PWZ1bmN0aW9uKHQsZSl7dmFyIG49W11bdF07cmV0dXJuISFuJiZyKChmdW5jdGlvbigpe24uY2FsbChudWxsLGV8fGZ1bmN0aW9uKCl7dGhyb3cgMX0sMSl9KSl9LFF0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxHdD17fSxXdD1mdW5jdGlvbih0KXt0aHJvdyB0fSxLdD1mdW5jdGlvbih0LGUpe2lmKHkoR3QsdCkpcmV0dXJuIEd0W3RdO2V8fChlPXt9KTt2YXIgbj1bXVt0XSxpPSEheShlLFwiQUNDRVNTT1JTXCIpJiZlLkFDQ0VTU09SUyxzPXkoZSwwKT9lWzBdOld0LGE9eShlLDEpP2VbMV06dW5kZWZpbmVkO3JldHVybiBHdFt0XT0hIW4mJiFyKChmdW5jdGlvbigpe2lmKGkmJiFvKXJldHVybiEwO3ZhciB0PXtsZW5ndGg6LTF9O2k/UXQodCwxLHtlbnVtZXJhYmxlOiEwLGdldDpXdH0pOnRbMV09MSxuLmNhbGwodCxzLGEpfSkpfSxKdD16dC5mb3JFYWNoLCR0PUh0KFwiZm9yRWFjaFwiKSxZdD1LdChcImZvckVhY2hcIiksWHQ9JHQmJll0P1tdLmZvckVhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIEp0KHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnVuZGVmaW5lZCl9O0R0KHt0YXJnZXQ6XCJBcnJheVwiLHByb3RvOiEwLGZvcmNlZDpbXS5mb3JFYWNoIT1YdH0se2ZvckVhY2g6WHR9KTt2YXIgWnQsdGUsZWU9RnVuY3Rpb24uY2FsbCxuZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIFR0KGVlLGlbdF0ucHJvdG90eXBlW2VdLG4pfSxpZT0obmUoXCJBcnJheVwiLFwiZm9yRWFjaFwiKSxudChcIm5hdmlnYXRvclwiLFwidXNlckFnZW50XCIpfHxcIlwiKSxyZT1pLnByb2Nlc3Msb2U9cmUmJnJlLnZlcnNpb25zLHNlPW9lJiZvZS52ODtzZT90ZT0oWnQ9c2Uuc3BsaXQoXCIuXCIpKVswXStadFsxXTppZSYmKCEoWnQ9aWUubWF0Y2goL0VkZ2VcXC8oXFxkKykvKSl8fFp0WzFdPj03NCkmJihadD1pZS5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLykpJiYodGU9WnRbMV0pO3ZhciBhZT10ZSYmK3RlLHVlPU10KFwic3BlY2llc1wiKSxjZT1mdW5jdGlvbih0KXtyZXR1cm4gYWU+PTUxfHwhcigoZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4oZS5jb25zdHJ1Y3Rvcj17fSlbdWVdPWZ1bmN0aW9uKCl7cmV0dXJue2ZvbzoxfX0sMSE9PWVbdF0oQm9vbGVhbikuZm9vfSkpfSxkZT16dC5tYXAsZmU9Y2UoXCJtYXBcIiksaGU9S3QoXCJtYXBcIik7RHQoe3RhcmdldDpcIkFycmF5XCIscHJvdG86ITAsZm9yY2VkOiFmZXx8IWhlfSx7bWFwOmZ1bmN0aW9uKHQpe3JldHVybiBkZSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp1bmRlZmluZWQpfX0pO25lKFwiQXJyYXlcIixcIm1hcFwiKTt2YXIgbGU9enQuZmlsdGVyLGdlPWNlKFwiZmlsdGVyXCIpLHBlPUt0KFwiZmlsdGVyXCIpO0R0KHt0YXJnZXQ6XCJBcnJheVwiLHByb3RvOiEwLGZvcmNlZDohZ2V8fCFwZX0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dW5kZWZpbmVkKX19KTtuZShcIkFycmF5XCIsXCJmaWx0ZXJcIik7dmFyIF9lPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSxyKXtqdChuKTt2YXIgbz1FdChlKSxzPWwobyksYT1hdChvLmxlbmd0aCksdT10P2EtMTowLGM9dD8tMToxO2lmKGk8Milmb3IoOzspe2lmKHUgaW4gcyl7cj1zW3VdLHUrPWM7YnJlYWt9aWYodSs9Yyx0P3U8MDphPD11KXRocm93IFR5cGVFcnJvcihcIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWVcIil9Zm9yKDt0P3U+PTA6YT51O3UrPWMpdSBpbiBzJiYocj1uKHIsc1t1XSx1LG8pKTtyZXR1cm4gcn19LG1lPXtsZWZ0Ol9lKCExKSxyaWdodDpfZSghMCl9LmxlZnQsdmU9SHQoXCJyZWR1Y2VcIikseWU9S3QoXCJyZWR1Y2VcIix7MTowfSk7RHQoe3RhcmdldDpcIkFycmF5XCIscHJvdG86ITAsZm9yY2VkOiF2ZXx8IXllfSx7cmVkdWNlOmZ1bmN0aW9uKHQpe3JldHVybiBtZSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnVuZGVmaW5lZCl9fSk7bmUoXCJBcnJheVwiLFwicmVkdWNlXCIpO3ZhciBiZT1mdC5pbmRleE9mLHdlPVtdLmluZGV4T2YsSWU9ISF3ZSYmMS9bMV0uaW5kZXhPZigxLC0wKTwwLENlPUh0KFwiaW5kZXhPZlwiKSx4ZT1LdChcImluZGV4T2ZcIix7QUNDRVNTT1JTOiEwLDE6MH0pO0R0KHt0YXJnZXQ6XCJBcnJheVwiLHByb3RvOiEwLGZvcmNlZDpJZXx8IUNlfHwheGV9LHtpbmRleE9mOmZ1bmN0aW9uKHQpe3JldHVybiBJZT93ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6YmUodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dW5kZWZpbmVkKX19KTtuZShcIkFycmF5XCIsXCJpbmRleE9mXCIpO3ZhciBQZSxTZT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIGx0KHQsZ3QpfSxBZT1vP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7Uyh0KTtmb3IodmFyIG4saT1TZShlKSxyPWkubGVuZ3RoLG89MDtyPm87KUQuZih0LG49aVtvKytdLGVbbl0pO3JldHVybiB0fSxEZT1udChcImRvY3VtZW50XCIsXCJkb2N1bWVudEVsZW1lbnRcIiksamU9SChcIklFX1BST1RPXCIpLFRlPWZ1bmN0aW9uKCl7fSxFZT1mdW5jdGlvbih0KXtyZXR1cm5cIjxzY3JpcHQ+XCIrdCtcIjxcXC9zY3JpcHQ+XCJ9LEJlPWZ1bmN0aW9uKCl7dHJ5e1BlPWRvY3VtZW50LmRvbWFpbiYmbmV3IEFjdGl2ZVhPYmplY3QoXCJodG1sZmlsZVwiKX1jYXRjaChpKXt9dmFyIHQsZTtCZT1QZT9mdW5jdGlvbih0KXt0LndyaXRlKEVlKFwiXCIpKSx0LmNsb3NlKCk7dmFyIGU9dC5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiB0PW51bGwsZX0oUGUpOigoZT1JKFwiaWZyYW1lXCIpKS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLERlLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZyhcImphdmFzY3JpcHQ6XCIpLCh0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLHQud3JpdGUoRWUoXCJkb2N1bWVudC5GPU9iamVjdFwiKSksdC5jbG9zZSgpLHQuRik7Zm9yKHZhciBuPWd0Lmxlbmd0aDtuLS07KWRlbGV0ZSBCZS5wcm90b3R5cGVbZ3Rbbl1dO3JldHVybiBCZSgpfTtRW2plXT0hMDt2YXIgUmU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KFRlLnByb3RvdHlwZT1TKHQpLG49bmV3IFRlLFRlLnByb3RvdHlwZT1udWxsLG5bamVdPXQpOm49QmUoKSxlPT09dW5kZWZpbmVkP246QWUobixlKX0sT2U9TXQoXCJ1bnNjb3BhYmxlc1wiKSxrZT1BcnJheS5wcm90b3R5cGU7a2VbT2VdPT11bmRlZmluZWQmJkQuZihrZSxPZSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOlJlKG51bGwpfSk7dmFyIExlPWZ1bmN0aW9uKHQpe2tlW09lXVt0XT0hMH0sTmU9enQuZmluZEluZGV4LE1lPSEwLHFlPUt0KFwiZmluZEluZGV4XCIpO1wiZmluZEluZGV4XCJpbltdJiZBcnJheSgxKS5maW5kSW5kZXgoKGZ1bmN0aW9uKCl7TWU9ITF9KSksRHQoe3RhcmdldDpcIkFycmF5XCIscHJvdG86ITAsZm9yY2VkOk1lfHwhcWV9LHtmaW5kSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIE5lKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnVuZGVmaW5lZCl9fSksTGUoXCJmaW5kSW5kZXhcIik7bmUoXCJBcnJheVwiLFwiZmluZEluZGV4XCIpO3ZhciBWZT16dC5ldmVyeSxGZT1IdChcImV2ZXJ5XCIpLFVlPUt0KFwiZXZlcnlcIik7RHQoe3RhcmdldDpcIkFycmF5XCIscHJvdG86ITAsZm9yY2VkOiFGZXx8IVVlfSx7ZXZlcnk6ZnVuY3Rpb24odCl7cmV0dXJuIFZlKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnVuZGVmaW5lZCl9fSk7bmUoXCJBcnJheVwiLFwiZXZlcnlcIik7dmFyIHplPWZ0LmluY2x1ZGVzLEhlPUt0KFwiaW5kZXhPZlwiLHtBQ0NFU1NPUlM6ITAsMTowfSk7RHQoe3RhcmdldDpcIkFycmF5XCIscHJvdG86ITAsZm9yY2VkOiFIZX0se2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiB6ZSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp1bmRlZmluZWQpfX0pLExlKFwiaW5jbHVkZXNcIik7bmUoXCJBcnJheVwiLFwiaW5jbHVkZXNcIik7dmFyIFFlPWZ1bmN0aW9uKHQsZSxuLGkscixvLHMsYSl7Zm9yKHZhciB1LGM9cixkPTAsZj0hIXMmJlR0KHMsYSwzKTtkPGk7KXtpZihkIGluIG4pe2lmKHU9Zj9mKG5bZF0sZCxlKTpuW2RdLG8+MCYmQnQodSkpYz1RZSh0LGUsdSxhdCh1Lmxlbmd0aCksYyxvLTEpLTE7ZWxzZXtpZihjPj05MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcihcIkV4Y2VlZCB0aGUgYWNjZXB0YWJsZSBhcnJheSBsZW5ndGhcIik7dFtjXT11fWMrK31kKyt9cmV0dXJuIGN9LEdlPVFlO0R0KHt0YXJnZXQ6XCJBcnJheVwiLHByb3RvOiEwfSx7ZmxhdDpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnVuZGVmaW5lZCxlPUV0KHRoaXMpLG49YXQoZS5sZW5ndGgpLGk9VnQoZSwwKTtyZXR1cm4gaS5sZW5ndGg9R2UoaSxlLGUsbiwwLHQ9PT11bmRlZmluZWQ/MTpvdCh0KSksaX19KSxMZShcImZsYXRcIik7bmUoXCJBcnJheVwiLFwiZmxhdFwiKTtEdCh7dGFyZ2V0OlwiQXJyYXlcIixwcm90bzohMH0se2ZsYXRNYXA6ZnVuY3Rpb24odCl7dmFyIGUsbj1FdCh0aGlzKSxpPWF0KG4ubGVuZ3RoKTtyZXR1cm4ganQodCksKGU9VnQobiwwKSkubGVuZ3RoPUdlKGUsbixuLGksMCwxLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp1bmRlZmluZWQpLGV9fSksTGUoXCJmbGF0TWFwXCIpO25lKFwiQXJyYXlcIixcImZsYXRNYXBcIik7dmFyIFdlPU10KFwibWF0Y2hcIiksS2U9ZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIF8odCkmJigoZT10W1dlXSkhPT11bmRlZmluZWQ/ISFlOlwiUmVnRXhwXCI9PWYodCkpfSh0KSl0aHJvdyBUeXBlRXJyb3IoXCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnNcIik7cmV0dXJuIHR9LEplPU10KFwibWF0Y2hcIik7RHQoe3RhcmdldDpcIlN0cmluZ1wiLHByb3RvOiEwLGZvcmNlZDohZnVuY3Rpb24odCl7dmFyIGU9Ly4vO3RyeXtcIi8uL1wiW3RdKGUpfWNhdGNoKG4pe3RyeXtyZXR1cm4gZVtKZV09ITEsXCIvLi9cIlt0XShlKX1jYXRjaChpKXt9fXJldHVybiExfShcImluY2x1ZGVzXCIpfSx7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuISF+U3RyaW5nKGcodGhpcykpLmluZGV4T2YoS2UodCksYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp1bmRlZmluZWQpfX0pO25lKFwiU3RyaW5nXCIsXCJpbmNsdWRlc1wiKTt2YXIgJGU9cigoZnVuY3Rpb24oKXtTZSgxKX0pKTtEdCh7dGFyZ2V0OlwiT2JqZWN0XCIsc3RhdDohMCxmb3JjZWQ6JGV9LHtrZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBTZShFdCh0KSl9fSk7dHQuT2JqZWN0LmtleXM7RHQoe3RhcmdldDpcIk9iamVjdFwiLHN0YXQ6ITAsc2hhbTohb30se2NyZWF0ZTpSZX0pO3R0Lk9iamVjdDtEdCh7dGFyZ2V0OlwiRGF0ZVwiLHN0YXQ6ITB9LHtub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19KTt0dC5EYXRlLm5vdzt2YXIgWWU9e307WWVbTXQoXCJ0b1N0cmluZ1RhZ1wiKV09XCJ6XCI7dmFyIFhlPVwiW29iamVjdCB6XVwiPT09U3RyaW5nKFllKSxaZT1NdChcInRvU3RyaW5nVGFnXCIpLHRuPVwiQXJndW1lbnRzXCI9PWYoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxlbj1YZT9mOmZ1bmN0aW9uKHQpe3ZhciBlLG4saTtyZXR1cm4gdD09PXVuZGVmaW5lZD9cIlVuZGVmaW5lZFwiOm51bGw9PT10P1wiTnVsbFwiOlwic3RyaW5nXCI9PXR5cGVvZihuPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKG4pe319KGU9T2JqZWN0KHQpLFplKSk/bjp0bj9mKGUpOlwiT2JqZWN0XCI9PShpPWYoZSkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhbGxlZT9cIkFyZ3VtZW50c1wiOml9LG5uPVhlP3t9LnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuXCJbb2JqZWN0IFwiK2VuKHRoaXMpK1wiXVwifTtYZXx8WihPYmplY3QucHJvdG90eXBlLFwidG9TdHJpbmdcIixubix7dW5zYWZlOiEwfSk7dmFyIHJuLG9uLHNuLGFuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpLHIsbz1TdHJpbmcoZyhlKSkscz1vdChuKSxhPW8ubGVuZ3RoO3JldHVybiBzPDB8fHM+PWE/dD9cIlwiOnVuZGVmaW5lZDooaT1vLmNoYXJDb2RlQXQocykpPDU1Mjk2fHxpPjU2MzE5fHxzKzE9PT1hfHwocj1vLmNoYXJDb2RlQXQocysxKSk8NTYzMjB8fHI+NTczNDM/dD9vLmNoYXJBdChzKTppOnQ/by5zbGljZShzLHMrMik6ci01NjMyMCsoaS01NTI5Njw8MTApKzY1NTM2fX0sdW49e2NvZGVBdDphbighMSksY2hhckF0OmFuKCEwKX0sY249IXIoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KSksZG49SChcIklFX1BST1RPXCIpLGZuPU9iamVjdC5wcm90b3R5cGUsaG49Y24/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0PUV0KHQpLHkodCxkbik/dFtkbl06XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9mbjpudWxsfSxsbj1NdChcIml0ZXJhdG9yXCIpLGduPSExO1tdLmtleXMmJihcIm5leHRcImluKHNuPVtdLmtleXMoKSk/KG9uPWhuKGhuKHNuKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKHJuPW9uKTpnbj0hMCkscm49PXVuZGVmaW5lZCYmKHJuPXt9KSx5KHJuLGxuKXx8aihybixsbiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgcG49e0l0ZXJhdG9yUHJvdG90eXBlOnJuLEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6Z259LF9uPUQuZixtbj1NdChcInRvU3RyaW5nVGFnXCIpLHZuPWZ1bmN0aW9uKHQsZSxuKXt0JiYheSh0PW4/dDp0LnByb3RvdHlwZSxtbikmJl9uKHQsbW4se2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9LHluPXt9LGJuPXBuLkl0ZXJhdG9yUHJvdG90eXBlLHduPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEluPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KFwiX19wcm90b19fXCJpbnt9P2Z1bmN0aW9uKCl7dmFyIHQsZT0hMSxuPXt9O3RyeXsodD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsXCJfX3Byb3RvX19cIikuc2V0KS5jYWxsKG4sW10pLGU9biBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGkpe31yZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gUyhuKSxmdW5jdGlvbih0KXtpZighXyh0KSYmbnVsbCE9PXQpdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3Qgc2V0IFwiK1N0cmluZyh0KStcIiBhcyBhIHByb3RvdHlwZVwiKX0oaSksZT90LmNhbGwobixpKTpuLl9fcHJvdG9fXz1pLG59fSgpOnVuZGVmaW5lZCksQ249cG4uSXRlcmF0b3JQcm90b3R5cGUseG49cG4uQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxQbj1NdChcIml0ZXJhdG9yXCIpLFNuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEFuPWZ1bmN0aW9uKHQsZSxuLGkscixvLHMpeyFmdW5jdGlvbih0LGUsbil7dmFyIGk9ZStcIiBJdGVyYXRvclwiO3QucHJvdG90eXBlPVJlKGJuLHtuZXh0OmMoMSxuKX0pLHZuKHQsaSwhMSkseW5baV09d259KG4sZSxpKTt2YXIgYSx1LGQsZj1mdW5jdGlvbih0KXtpZih0PT09ciYmXylyZXR1cm4gXztpZigheG4mJnQgaW4gZylyZXR1cm4gZ1t0XTtzd2l0Y2godCl7Y2FzZVwia2V5c1wiOmNhc2VcInZhbHVlc1wiOmNhc2VcImVudHJpZXNcIjpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMpfX0saD1lK1wiIEl0ZXJhdG9yXCIsbD0hMSxnPXQucHJvdG90eXBlLHA9Z1tQbl18fGdbXCJAQGl0ZXJhdG9yXCJdfHxyJiZnW3JdLF89IXhuJiZwfHxmKHIpLG09XCJBcnJheVwiPT1lJiZnLmVudHJpZXN8fHA7aWYobSYmKGE9aG4obS5jYWxsKG5ldyB0KSksQ24hPT1PYmplY3QucHJvdG90eXBlJiZhLm5leHQmJihobihhKSE9PUNuJiYoSW4/SW4oYSxDbik6XCJmdW5jdGlvblwiIT10eXBlb2YgYVtQbl0mJmooYSxQbixTbikpLHZuKGEsaCwhMCkpKSxcInZhbHVlc1wiPT1yJiZwJiZcInZhbHVlc1wiIT09cC5uYW1lJiYobD0hMCxfPWZ1bmN0aW9uKCl7cmV0dXJuIHAuY2FsbCh0aGlzKX0pLGdbUG5dIT09XyYmaihnLFBuLF8pLHluW2VdPV8scilpZih1PXt2YWx1ZXM6ZihcInZhbHVlc1wiKSxrZXlzOm8/XzpmKFwia2V5c1wiKSxlbnRyaWVzOmYoXCJlbnRyaWVzXCIpfSxzKWZvcihkIGluIHUpKHhufHxsfHwhKGQgaW4gZykpJiZaKGcsZCx1W2RdKTtlbHNlIER0KHt0YXJnZXQ6ZSxwcm90bzohMCxmb3JjZWQ6eG58fGx9LHUpO3JldHVybiB1fSxEbj11bi5jaGFyQXQsam49WC5zZXQsVG49WC5nZXR0ZXJGb3IoXCJTdHJpbmcgSXRlcmF0b3JcIik7QW4oU3RyaW5nLFwiU3RyaW5nXCIsKGZ1bmN0aW9uKHQpe2puKHRoaXMse3R5cGU6XCJTdHJpbmcgSXRlcmF0b3JcIixzdHJpbmc6U3RyaW5nKHQpLGluZGV4OjB9KX0pLChmdW5jdGlvbigpe3ZhciB0LGU9VG4odGhpcyksbj1lLnN0cmluZyxpPWUuaW5kZXg7cmV0dXJuIGk+PW4ubGVuZ3RoP3t2YWx1ZTp1bmRlZmluZWQsZG9uZTohMH06KHQ9RG4obixpKSxlLmluZGV4Kz10Lmxlbmd0aCx7dmFsdWU6dCxkb25lOiExfSl9KSk7dmFyIEVuPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfSxCbj1YLnNldCxSbj1YLmdldHRlckZvcihcIkFycmF5IEl0ZXJhdG9yXCIpLE9uPUFuKEFycmF5LFwiQXJyYXlcIiwoZnVuY3Rpb24odCxlKXtCbih0aGlzLHt0eXBlOlwiQXJyYXkgSXRlcmF0b3JcIix0YXJnZXQ6cCh0KSxpbmRleDowLGtpbmQ6ZX0pfSksKGZ1bmN0aW9uKCl7dmFyIHQ9Um4odGhpcyksZT10LnRhcmdldCxuPXQua2luZCxpPXQuaW5kZXgrKztyZXR1cm4hZXx8aT49ZS5sZW5ndGg/KHQudGFyZ2V0PXVuZGVmaW5lZCx7dmFsdWU6dW5kZWZpbmVkLGRvbmU6ITB9KTpcImtleXNcIj09bj97dmFsdWU6aSxkb25lOiExfTpcInZhbHVlc1wiPT1uP3t2YWx1ZTplW2ldLGRvbmU6ITF9Ont2YWx1ZTpbaSxlW2ldXSxkb25lOiExfX0pLFwidmFsdWVzXCIpO3luLkFyZ3VtZW50cz15bi5BcnJheSxMZShcImtleXNcIiksTGUoXCJ2YWx1ZXNcIiksTGUoXCJlbnRyaWVzXCIpO3ZhciBrbj1NdChcIml0ZXJhdG9yXCIpLExuPU10KFwidG9TdHJpbmdUYWdcIiksTm49T24udmFsdWVzO2Zvcih2YXIgTW4gaW4gRW4pe3ZhciBxbj1pW01uXSxWbj1xbiYmcW4ucHJvdG90eXBlO2lmKFZuKXtpZihWbltrbl0hPT1Obil0cnl7aihWbixrbixObil9Y2F0Y2godGEpe1ZuW2tuXT1Obn1pZihWbltMbl18fGooVm4sTG4sTW4pLEVuW01uXSlmb3IodmFyIEZuIGluIE9uKWlmKFZuW0ZuXSE9PU9uW0ZuXSl0cnl7aihWbixGbixPbltGbl0pfWNhdGNoKHRhKXtWbltGbl09T25bRm5dfX19dmFyIFVuPWkuUHJvbWlzZSx6bj1NdChcInNwZWNpZXNcIiksSG49TXQoXCJpdGVyYXRvclwiKSxRbj1BcnJheS5wcm90b3R5cGUsR249TXQoXCJpdGVyYXRvclwiKSxXbj1mdW5jdGlvbih0LGUsbixpKXt0cnl7cmV0dXJuIGk/ZShTKG4pWzBdLG5bMV0pOmUobil9Y2F0Y2godGEpe3ZhciByPXRbXCJyZXR1cm5cIl07dGhyb3cgciE9PXVuZGVmaW5lZCYmUyhyLmNhbGwodCkpLHRhfX0sS249ZSgoZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3BwZWQ9dCx0aGlzLnJlc3VsdD1lfTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsbixpLHIsbyl7dmFyIHMsYSx1LGMsZCxmLGgsbCxnPVR0KG4saSxyPzI6MSk7aWYobylzPXQ7ZWxzZXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZihhPWZ1bmN0aW9uKHQpe2lmKHQhPXVuZGVmaW5lZClyZXR1cm4gdFtHbl18fHRbXCJAQGl0ZXJhdG9yXCJdfHx5bltlbih0KV19KHQpKSl0aHJvdyBUeXBlRXJyb3IoXCJUYXJnZXQgaXMgbm90IGl0ZXJhYmxlXCIpO2lmKChsPWEpIT09dW5kZWZpbmVkJiYoeW4uQXJyYXk9PT1sfHxRbltIbl09PT1sKSl7Zm9yKHU9MCxjPWF0KHQubGVuZ3RoKTtjPnU7dSsrKWlmKChkPXI/ZyhTKGg9dFt1XSlbMF0saFsxXSk6Zyh0W3VdKSkmJmQgaW5zdGFuY2VvZiBlKXJldHVybiBkO3JldHVybiBuZXcgZSghMSl9cz1hLmNhbGwodCl9Zm9yKGY9cy5uZXh0OyEoaD1mLmNhbGwocykpLmRvbmU7KWlmKFwib2JqZWN0XCI9PXR5cGVvZihkPVduKHMsZyxoLnZhbHVlLHIpKSYmZCYmZCBpbnN0YW5jZW9mIGUpcmV0dXJuIGQ7cmV0dXJuIG5ldyBlKCExKX0pLnN0b3A9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlKCEwLHQpfX0pKSxKbj1NdChcIml0ZXJhdG9yXCIpLCRuPSExO3RyeXt2YXIgWW49MCxYbj17bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEhWW4rK319LFwicmV0dXJuXCI6ZnVuY3Rpb24oKXskbj0hMH19O1huW0puXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKFhuLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2godGEpe312YXIgWm4sdGksZWksbmk9TXQoXCJzcGVjaWVzXCIpLGlpPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1TKHQpLmNvbnN0cnVjdG9yO3JldHVybiBpPT09dW5kZWZpbmVkfHwobj1TKGkpW25pXSk9PXVuZGVmaW5lZD9lOmp0KG4pfSxyaT0vKGlwaG9uZXxpcG9kfGlwYWQpLiphcHBsZXdlYmtpdC9pLnRlc3QoaWUpLG9pPWkubG9jYXRpb24sc2k9aS5zZXRJbW1lZGlhdGUsYWk9aS5jbGVhckltbWVkaWF0ZSx1aT1pLnByb2Nlc3MsY2k9aS5NZXNzYWdlQ2hhbm5lbCxkaT1pLkRpc3BhdGNoLGZpPTAsaGk9e30sbGk9ZnVuY3Rpb24odCl7aWYoaGkuaGFzT3duUHJvcGVydHkodCkpe3ZhciBlPWhpW3RdO2RlbGV0ZSBoaVt0XSxlKCl9fSxnaT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtsaSh0KX19LHBpPWZ1bmN0aW9uKHQpe2xpKHQuZGF0YSl9LF9pPWZ1bmN0aW9uKHQpe2kucG9zdE1lc3NhZ2UodCtcIlwiLG9pLnByb3RvY29sK1wiLy9cIitvaS5ob3N0KX07c2kmJmFpfHwoc2k9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTthcmd1bWVudHMubGVuZ3RoPm47KWUucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJuIGhpWysrZmldPWZ1bmN0aW9uKCl7KFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpGdW5jdGlvbih0KSkuYXBwbHkodW5kZWZpbmVkLGUpfSxabihmaSksZml9LGFpPWZ1bmN0aW9uKHQpe2RlbGV0ZSBoaVt0XX0sXCJwcm9jZXNzXCI9PWYodWkpP1puPWZ1bmN0aW9uKHQpe3VpLm5leHRUaWNrKGdpKHQpKX06ZGkmJmRpLm5vdz9abj1mdW5jdGlvbih0KXtkaS5ub3coZ2kodCkpfTpjaSYmIXJpPyhlaT0odGk9bmV3IGNpKS5wb3J0Mix0aS5wb3J0MS5vbm1lc3NhZ2U9cGksWm49VHQoZWkucG9zdE1lc3NhZ2UsZWksMSkpOiFpLmFkZEV2ZW50TGlzdGVuZXJ8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHBvc3RNZXNzYWdlfHxpLmltcG9ydFNjcmlwdHN8fHIoX2kpfHxcImZpbGU6XCI9PT1vaS5wcm90b2NvbD9abj1cIm9ucmVhZHlzdGF0ZWNoYW5nZVwiaW4gSShcInNjcmlwdFwiKT9mdW5jdGlvbih0KXtEZS5hcHBlbmRDaGlsZChJKFwic2NyaXB0XCIpKS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtEZS5yZW1vdmVDaGlsZCh0aGlzKSxsaSh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoZ2kodCksMCl9Oihabj1faSxpLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIscGksITEpKSk7dmFyIG1pLHZpLHlpLGJpLHdpLElpLENpLHhpLFBpPXtzZXQ6c2ksY2xlYXI6YWl9LFNpPVAuZixBaT1QaS5zZXQsRGk9aS5NdXRhdGlvbk9ic2VydmVyfHxpLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsamk9aS5wcm9jZXNzLFRpPWkuUHJvbWlzZSxFaT1cInByb2Nlc3NcIj09ZihqaSksQmk9U2koaSxcInF1ZXVlTWljcm90YXNrXCIpLFJpPUJpJiZCaS52YWx1ZTtSaXx8KG1pPWZ1bmN0aW9uKCl7dmFyIHQsZTtmb3IoRWkmJih0PWppLmRvbWFpbikmJnQuZXhpdCgpO3ZpOyl7ZT12aS5mbix2aT12aS5uZXh0O3RyeXtlKCl9Y2F0Y2godGEpe3Rocm93IHZpP2JpKCk6eWk9dW5kZWZpbmVkLHRhfX15aT11bmRlZmluZWQsdCYmdC5lbnRlcigpfSxFaT9iaT1mdW5jdGlvbigpe2ppLm5leHRUaWNrKG1pKX06RGkmJiFyaT8od2k9ITAsSWk9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIiksbmV3IERpKG1pKS5vYnNlcnZlKElpLHtjaGFyYWN0ZXJEYXRhOiEwfSksYmk9ZnVuY3Rpb24oKXtJaS5kYXRhPXdpPSF3aX0pOlRpJiZUaS5yZXNvbHZlPyhDaT1UaS5yZXNvbHZlKHVuZGVmaW5lZCkseGk9Q2kudGhlbixiaT1mdW5jdGlvbigpe3hpLmNhbGwoQ2ksbWkpfSk6Ymk9ZnVuY3Rpb24oKXtBaS5jYWxsKGksbWkpfSk7dmFyIE9pLGtpLExpLE5pLE1pPVJpfHxmdW5jdGlvbih0KXt2YXIgZT17Zm46dCxuZXh0OnVuZGVmaW5lZH07eWkmJih5aS5uZXh0PWUpLHZpfHwodmk9ZSxiaSgpKSx5aT1lfSxxaT1mdW5jdGlvbih0KXt2YXIgZSxuO3RoaXMucHJvbWlzZT1uZXcgdCgoZnVuY3Rpb24odCxpKXtpZihlIT09dW5kZWZpbmVkfHxuIT09dW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yXCIpO2U9dCxuPWl9KSksdGhpcy5yZXNvbHZlPWp0KGUpLHRoaXMucmVqZWN0PWp0KG4pfSxWaT17ZjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHFpKHQpfX0sRmk9ZnVuY3Rpb24odCxlKXtpZihTKHQpLF8oZSkmJmUuY29uc3RydWN0b3I9PT10KXJldHVybiBlO3ZhciBuPVZpLmYodCk7cmV0dXJuKDAsbi5yZXNvbHZlKShlKSxuLnByb21pc2V9LFVpPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm57ZXJyb3I6ITEsdmFsdWU6dCgpfX1jYXRjaCh0YSl7cmV0dXJue2Vycm9yOiEwLHZhbHVlOnRhfX19LHppPVBpLnNldCxIaT1NdChcInNwZWNpZXNcIiksUWk9XCJQcm9taXNlXCIsR2k9WC5nZXQsV2k9WC5zZXQsS2k9WC5nZXR0ZXJGb3IoUWkpLEppPVVuLCRpPWkuVHlwZUVycm9yLFlpPWkuZG9jdW1lbnQsWGk9aS5wcm9jZXNzLFppPW50KFwiZmV0Y2hcIiksdHI9VmkuZixlcj10cixucj1cInByb2Nlc3NcIj09ZihYaSksaXI9ISEoWWkmJllpLmNyZWF0ZUV2ZW50JiZpLmRpc3BhdGNoRXZlbnQpLHJyPVN0KFFpLChmdW5jdGlvbigpe2lmKCEoTChKaSkhPT1TdHJpbmcoSmkpKSl7aWYoNjY9PT1hZSlyZXR1cm4hMDtpZighbnImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudClyZXR1cm4hMH1pZihhZT49NTEmJi9uYXRpdmUgY29kZS8udGVzdChKaSkpcmV0dXJuITE7dmFyIHQ9SmkucmVzb2x2ZSgxKSxlPWZ1bmN0aW9uKHQpe3QoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKCl7fSkpfTtyZXR1cm4odC5jb25zdHJ1Y3Rvcj17fSlbSGldPWUsISh0LnRoZW4oKGZ1bmN0aW9uKCl7fSkpaW5zdGFuY2VvZiBlKX0pKSxvcj1ycnx8IWZ1bmN0aW9uKHQsZSl7aWYoIWUmJiEkbilyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIGk9e307aVtKbl09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fX19LHQoaSl9Y2F0Y2godGEpe31yZXR1cm4gbn0oKGZ1bmN0aW9uKHQpe0ppLmFsbCh0KVtcImNhdGNoXCJdKChmdW5jdGlvbigpe30pKX0pKSxzcj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4hKCFfKHQpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZihlPXQudGhlbikpJiZlfSxhcj1mdW5jdGlvbih0LGUsbil7aWYoIWUubm90aWZpZWQpe2Uubm90aWZpZWQ9ITA7dmFyIGk9ZS5yZWFjdGlvbnM7TWkoKGZ1bmN0aW9uKCl7Zm9yKHZhciByPWUudmFsdWUsbz0xPT1lLnN0YXRlLHM9MDtpLmxlbmd0aD5zOyl7dmFyIGEsdSxjLGQ9aVtzKytdLGY9bz9kLm9rOmQuZmFpbCxoPWQucmVzb2x2ZSxsPWQucmVqZWN0LGc9ZC5kb21haW47dHJ5e2Y/KG98fCgyPT09ZS5yZWplY3Rpb24mJmZyKHQsZSksZS5yZWplY3Rpb249MSksITA9PT1mP2E9cjooZyYmZy5lbnRlcigpLGE9ZihyKSxnJiYoZy5leGl0KCksYz0hMCkpLGE9PT1kLnByb21pc2U/bCgkaShcIlByb21pc2UtY2hhaW4gY3ljbGVcIikpOih1PXNyKGEpKT91LmNhbGwoYSxoLGwpOmgoYSkpOmwocil9Y2F0Y2godGEpe2cmJiFjJiZnLmV4aXQoKSxsKHRhKX19ZS5yZWFjdGlvbnM9W10sZS5ub3RpZmllZD0hMSxuJiYhZS5yZWplY3Rpb24mJmNyKHQsZSl9KSl9fSx1cj1mdW5jdGlvbih0LGUsbil7dmFyIHIsbztpcj8oKHI9WWkuY3JlYXRlRXZlbnQoXCJFdmVudFwiKSkucHJvbWlzZT1lLHIucmVhc29uPW4sci5pbml0RXZlbnQodCwhMSwhMCksaS5kaXNwYXRjaEV2ZW50KHIpKTpyPXtwcm9taXNlOmUscmVhc29uOm59LChvPWlbXCJvblwiK3RdKT9vKHIpOlwidW5oYW5kbGVkcmVqZWN0aW9uXCI9PT10JiZmdW5jdGlvbih0LGUpe3ZhciBuPWkuY29uc29sZTtuJiZuLmVycm9yJiYoMT09PWFyZ3VtZW50cy5sZW5ndGg/bi5lcnJvcih0KTpuLmVycm9yKHQsZSkpfShcIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvblwiLG4pfSxjcj1mdW5jdGlvbih0LGUpe3ppLmNhbGwoaSwoZnVuY3Rpb24oKXt2YXIgbixpPWUudmFsdWU7aWYoZHIoZSkmJihuPVVpKChmdW5jdGlvbigpe25yP1hpLmVtaXQoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIixpLHQpOnVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsdCxpKX0pKSxlLnJlamVjdGlvbj1ucnx8ZHIoZSk/MjoxLG4uZXJyb3IpKXRocm93IG4udmFsdWV9KSl9LGRyPWZ1bmN0aW9uKHQpe3JldHVybiAxIT09dC5yZWplY3Rpb24mJiF0LnBhcmVudH0sZnI9ZnVuY3Rpb24odCxlKXt6aS5jYWxsKGksKGZ1bmN0aW9uKCl7bnI/WGkuZW1pdChcInJlamVjdGlvbkhhbmRsZWRcIix0KTp1cihcInJlamVjdGlvbmhhbmRsZWRcIix0LGUudmFsdWUpfSkpfSxocj1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gZnVuY3Rpb24ocil7dChlLG4scixpKX19LGxyPWZ1bmN0aW9uKHQsZSxuLGkpe2UuZG9uZXx8KGUuZG9uZT0hMCxpJiYoZT1pKSxlLnZhbHVlPW4sZS5zdGF0ZT0yLGFyKHQsZSwhMCkpfSxncj1mdW5jdGlvbih0LGUsbixpKXtpZighZS5kb25lKXtlLmRvbmU9ITAsaSYmKGU9aSk7dHJ5e2lmKHQ9PT1uKXRocm93ICRpKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7dmFyIHI9c3Iobik7cj9NaSgoZnVuY3Rpb24oKXt2YXIgaT17ZG9uZTohMX07dHJ5e3IuY2FsbChuLGhyKGdyLHQsaSxlKSxocihscix0LGksZSkpfWNhdGNoKHRhKXtscih0LGksdGEsZSl9fSkpOihlLnZhbHVlPW4sZS5zdGF0ZT0xLGFyKHQsZSwhMSkpfWNhdGNoKHRhKXtscih0LHtkb25lOiExfSx0YSxlKX19fTtyciYmKEppPWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUsbil7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgVHlwZUVycm9yKFwiSW5jb3JyZWN0IFwiKyhuP24rXCIgXCI6XCJcIikrXCJpbnZvY2F0aW9uXCIpfSh0aGlzLEppLFFpKSxqdCh0KSxPaS5jYWxsKHRoaXMpO3ZhciBlPUdpKHRoaXMpO3RyeXt0KGhyKGdyLHRoaXMsZSksaHIobHIsdGhpcyxlKSl9Y2F0Y2godGEpe2xyKHRoaXMsZSx0YSl9fSwoT2k9ZnVuY3Rpb24odCl7V2kodGhpcyx7dHlwZTpRaSxkb25lOiExLG5vdGlmaWVkOiExLHBhcmVudDohMSxyZWFjdGlvbnM6W10scmVqZWN0aW9uOiExLHN0YXRlOjAsdmFsdWU6dW5kZWZpbmVkfSl9KS5wcm90b3R5cGU9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSBpbiBlKVoodCxpLGVbaV0sbik7cmV0dXJuIHR9KEppLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbih0LGUpe3ZhciBuPUtpKHRoaXMpLGk9dHIoaWkodGhpcyxKaSkpO3JldHVybiBpLm9rPVwiZnVuY3Rpb25cIiE9dHlwZW9mIHR8fHQsaS5mYWlsPVwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUsaS5kb21haW49bnI/WGkuZG9tYWluOnVuZGVmaW5lZCxuLnBhcmVudD0hMCxuLnJlYWN0aW9ucy5wdXNoKGkpLDAhPW4uc3RhdGUmJmFyKHRoaXMsbiwhMSksaS5wcm9taXNlfSxcImNhdGNoXCI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsdCl9fSksa2k9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgT2ksZT1HaSh0KTt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9aHIoZ3IsdCxlKSx0aGlzLnJlamVjdD1ocihscix0LGUpfSxWaS5mPXRyPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09Sml8fHQ9PT1MaT9uZXcga2kodCk6ZXIodCl9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFVuJiYoTmk9VW4ucHJvdG90eXBlLnRoZW4sWihVbi5wcm90b3R5cGUsXCJ0aGVuXCIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IEppKChmdW5jdGlvbih0LGUpe05pLmNhbGwobix0LGUpfSkpLnRoZW4odCxlKX0pLHt1bnNhZmU6ITB9KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBaaSYmRHQoe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDohMH0se2ZldGNoOmZ1bmN0aW9uKHQpe3JldHVybiBGaShKaSxaaS5hcHBseShpLGFyZ3VtZW50cykpfX0pKSksRHQoe2dsb2JhbDohMCx3cmFwOiEwLGZvcmNlZDpycn0se1Byb21pc2U6Sml9KSx2bihKaSxRaSwhMSksZnVuY3Rpb24odCl7dmFyIGU9bnQodCksbj1ELmY7byYmZSYmIWVbem5dJiZuKGUsem4se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX0oUWkpLExpPW50KFFpKSxEdCh7dGFyZ2V0OlFpLHN0YXQ6ITAsZm9yY2VkOnJyfSx7cmVqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPXRyKHRoaXMpO3JldHVybiBlLnJlamVjdC5jYWxsKHVuZGVmaW5lZCx0KSxlLnByb21pc2V9fSksRHQoe3RhcmdldDpRaSxzdGF0OiEwLGZvcmNlZDpycn0se3Jlc29sdmU6ZnVuY3Rpb24odCl7cmV0dXJuIEZpKHRoaXMsdCl9fSksRHQoe3RhcmdldDpRaSxzdGF0OiEwLGZvcmNlZDpvcn0se2FsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dHIoZSksaT1uLnJlc29sdmUscj1uLnJlamVjdCxvPVVpKChmdW5jdGlvbigpe3ZhciBuPWp0KGUucmVzb2x2ZSksbz1bXSxzPTAsYT0xO0tuKHQsKGZ1bmN0aW9uKHQpe3ZhciB1PXMrKyxjPSExO28ucHVzaCh1bmRlZmluZWQpLGErKyxuLmNhbGwoZSx0KS50aGVuKChmdW5jdGlvbih0KXtjfHwoYz0hMCxvW3VdPXQsLS1hfHxpKG8pKX0pLHIpfSkpLC0tYXx8aShvKX0pKTtyZXR1cm4gby5lcnJvciYmcihvLnZhbHVlKSxuLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRyKGUpLGk9bi5yZWplY3Qscj1VaSgoZnVuY3Rpb24oKXt2YXIgcj1qdChlLnJlc29sdmUpO0tuKHQsKGZ1bmN0aW9uKHQpe3IuY2FsbChlLHQpLnRoZW4obi5yZXNvbHZlLGkpfSkpfSkpO3JldHVybiByLmVycm9yJiZpKHIudmFsdWUpLG4ucHJvbWlzZX19KSxEdCh7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITB9LHthbGxTZXR0bGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1WaS5mKGUpLGk9bi5yZXNvbHZlLHI9bi5yZWplY3Qsbz1VaSgoZnVuY3Rpb24oKXt2YXIgbj1qdChlLnJlc29sdmUpLHI9W10sbz0wLHM9MTtLbih0LChmdW5jdGlvbih0KXt2YXIgYT1vKyssdT0hMTtyLnB1c2godW5kZWZpbmVkKSxzKyssbi5jYWxsKGUsdCkudGhlbigoZnVuY3Rpb24odCl7dXx8KHU9ITAsclthXT17c3RhdHVzOlwiZnVsZmlsbGVkXCIsdmFsdWU6dH0sLS1zfHxpKHIpKX0pLChmdW5jdGlvbih0KXt1fHwodT0hMCxyW2FdPXtzdGF0dXM6XCJyZWplY3RlZFwiLHJlYXNvbjp0fSwtLXN8fGkocikpfSkpfSkpLC0tc3x8aShyKX0pKTtyZXR1cm4gby5lcnJvciYmcihvLnZhbHVlKSxuLnByb21pc2V9fSk7dmFyIHByPSEhVW4mJnIoKGZ1bmN0aW9uKCl7VW4ucHJvdG90eXBlW1wiZmluYWxseVwiXS5jYWxsKHt0aGVuOmZ1bmN0aW9uKCl7fX0sKGZ1bmN0aW9uKCl7fSkpfSkpO0R0KHt0YXJnZXQ6XCJQcm9taXNlXCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6cHJ9LHtcImZpbmFsbHlcIjpmdW5jdGlvbih0KXt2YXIgZT1paSh0aGlzLG50KFwiUHJvbWlzZVwiKSksbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0O3JldHVybiB0aGlzLnRoZW4obj9mdW5jdGlvbihuKXtyZXR1cm4gRmkoZSx0KCkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9OnQsbj9mdW5jdGlvbihuKXtyZXR1cm4gRmkoZSx0KCkpLnRoZW4oKGZ1bmN0aW9uKCl7dGhyb3cgbn0pKX06dCl9fSksXCJmdW5jdGlvblwiIT10eXBlb2YgVW58fFVuLnByb3RvdHlwZVtcImZpbmFsbHlcIl18fFooVW4ucHJvdG90eXBlLFwiZmluYWxseVwiLG50KFwiUHJvbWlzZVwiKS5wcm90b3R5cGVbXCJmaW5hbGx5XCJdKTt0dC5Qcm9taXNlO3ZhciBfcj1YLnNldCxtcj1YLmdldHRlckZvcihcIkFnZ3JlZ2F0ZUVycm9yXCIpLHZyPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2VvZiB2cikpcmV0dXJuIG5ldyB2cih0LGUpO0luJiYobj1JbihuZXcgRXJyb3IoZSksaG4obikpKTt2YXIgaT1bXTtyZXR1cm4gS24odCxpLnB1c2gsaSksbz9fcihuLHtlcnJvcnM6aSx0eXBlOlwiQWdncmVnYXRlRXJyb3JcIn0pOm4uZXJyb3JzPWksZSE9PXVuZGVmaW5lZCYmaihuLFwibWVzc2FnZVwiLFN0cmluZyhlKSksbn07dnIucHJvdG90eXBlPVJlKEVycm9yLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6Yyg1LHZyKSxtZXNzYWdlOmMoNSxcIlwiKSxuYW1lOmMoNSxcIkFnZ3JlZ2F0ZUVycm9yXCIpfSksbyYmRC5mKHZyLnByb3RvdHlwZSxcImVycm9yc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbXIodGhpcykuZXJyb3JzfSxjb25maWd1cmFibGU6ITB9KSxEdCh7Z2xvYmFsOiEwfSx7QWdncmVnYXRlRXJyb3I6dnJ9KSxEdCh7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITB9LHtcInRyeVwiOmZ1bmN0aW9uKHQpe3ZhciBlPVZpLmYodGhpcyksbj1VaSh0KTtyZXR1cm4obi5lcnJvcj9lLnJlamVjdDplLnJlc29sdmUpKG4udmFsdWUpLGUucHJvbWlzZX19KTtEdCh7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITB9LHthbnk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVZpLmYoZSksaT1uLnJlc29sdmUscj1uLnJlamVjdCxvPVVpKChmdW5jdGlvbigpe3ZhciBuPWp0KGUucmVzb2x2ZSksbz1bXSxzPTAsYT0xLHU9ITE7S24odCwoZnVuY3Rpb24odCl7dmFyIGM9cysrLGQ9ITE7by5wdXNoKHVuZGVmaW5lZCksYSsrLG4uY2FsbChlLHQpLnRoZW4oKGZ1bmN0aW9uKHQpe2R8fHV8fCh1PSEwLGkodCkpfSksKGZ1bmN0aW9uKHQpe2R8fHV8fChkPSEwLG9bY109dCwtLWF8fHIobmV3KG50KFwiQWdncmVnYXRlRXJyb3JcIikpKG8sXCJObyBvbmUgcHJvbWlzZSByZXNvbHZlZFwiKSkpfSkpfSkpLC0tYXx8cihuZXcobnQoXCJBZ2dyZWdhdGVFcnJvclwiKSkobyxcIk5vIG9uZSBwcm9taXNlIHJlc29sdmVkXCIpKX0pKTtyZXR1cm4gby5lcnJvciYmcihvLnZhbHVlKSxuLnByb21pc2V9fSk7dmFyIHlyPXp0LmZpbmQsYnI9ITAsd3I9S3QoXCJmaW5kXCIpO1wiZmluZFwiaW5bXSYmQXJyYXkoMSkuZmluZCgoZnVuY3Rpb24oKXticj0hMX0pKSxEdCh7dGFyZ2V0OlwiQXJyYXlcIixwcm90bzohMCxmb3JjZWQ6YnJ8fCF3cn0se2ZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHlyKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnVuZGVmaW5lZCl9fSksTGUoXCJmaW5kXCIpO25lKFwiQXJyYXlcIixcImZpbmRcIik7dmFyIElyPXp0LnNvbWUsQ3I9SHQoXCJzb21lXCIpLHhyPUt0KFwic29tZVwiKTtEdCh7dGFyZ2V0OlwiQXJyYXlcIixwcm90bzohMCxmb3JjZWQ6IUNyfHwheHJ9LHtzb21lOmZ1bmN0aW9uKHQpe3JldHVybiBJcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp1bmRlZmluZWQpfX0pO25lKFwiQXJyYXlcIixcInNvbWVcIik7dmFyIFByPXUuZixTcj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuLGk9cChlKSxyPVNlKGkpLHM9ci5sZW5ndGgsYT0wLHU9W107cz5hOyluPXJbYSsrXSxvJiYhUHIuY2FsbChpLG4pfHx1LnB1c2godD9bbixpW25dXTppW25dKTtyZXR1cm4gdX19LEFyPXtlbnRyaWVzOlNyKCEwKSx2YWx1ZXM6U3IoITEpfSxEcj1Bci5lbnRyaWVzO0R0KHt0YXJnZXQ6XCJPYmplY3RcIixzdGF0OiEwfSx7ZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gRHIodCl9fSk7dHQuT2JqZWN0LmVudHJpZXM7dmFyIGpyPUFyLnZhbHVlcztEdCh7dGFyZ2V0OlwiT2JqZWN0XCIsc3RhdDohMH0se3ZhbHVlczpmdW5jdGlvbih0KXtyZXR1cm4ganIodCl9fSk7dHQuT2JqZWN0LnZhbHVlcztEdCh7dGFyZ2V0OlwiTnVtYmVyXCIsc3RhdDohMH0se2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pO3R0Lk51bWJlci5pc05hTjt2YXIgVHI9XCJcXHRcXG5cXHgwQlxcZlxcciBcXHhhMFxcdTE2ODBcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwYVxcdTIwMmZcXHUyMDVmXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1ZmVmZlwiLEVyPVwiW1wiK1RyK1wiXVwiLEJyPVJlZ0V4cChcIl5cIitFcitFcitcIipcIiksUnI9UmVnRXhwKEVyK0VyK1wiKiRcIiksT3I9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVN0cmluZyhnKGUpKTtyZXR1cm4gMSZ0JiYobj1uLnJlcGxhY2UoQnIsXCJcIikpLDImdCYmKG49bi5yZXBsYWNlKFJyLFwiXCIpKSxufX0sa3I9e3N0YXJ0Ok9yKDEpLGVuZDpPcigyKSx0cmltOk9yKDMpfSxMcj1rci50cmltLE5yPWkucGFyc2VGbG9hdCxNcj0xL05yKFRyK1wiLTBcIikhPS1JbmZpbml0eT9mdW5jdGlvbih0KXt2YXIgZT1McihTdHJpbmcodCkpLG49TnIoZSk7cmV0dXJuIDA9PT1uJiZcIi1cIj09ZS5jaGFyQXQoMCk/LTA6bn06TnI7RHQoe3RhcmdldDpcIk51bWJlclwiLHN0YXQ6ITAsZm9yY2VkOk51bWJlci5wYXJzZUZsb2F0IT1Ncn0se3BhcnNlRmxvYXQ6TXJ9KTt0dC5OdW1iZXIucGFyc2VGbG9hdDt2YXIgcXI9a3IudHJpbSxWcj1pLnBhcnNlSW50LEZyPS9eWystXT8wW1h4XS8sVXI9OCE9PVZyKFRyK1wiMDhcIil8fDIyIT09VnIoVHIrXCIweDE2XCIpP2Z1bmN0aW9uKHQsZSl7dmFyIG49cXIoU3RyaW5nKHQpKTtyZXR1cm4gVnIobixlPj4+MHx8KEZyLnRlc3Qobik/MTY6MTApKX06VnI7RHQoe3RhcmdldDpcIk51bWJlclwiLHN0YXQ6ITAsZm9yY2VkOk51bWJlci5wYXJzZUludCE9VXJ9LHtwYXJzZUludDpVcn0pO3R0Lk51bWJlci5wYXJzZUludDtmdW5jdGlvbiB6cigpe312YXIgSHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBRcih0KXtyZXR1cm5cIltvYmplY3QgVW5kZWZpbmVkXVwiPT09SHIuY2FsbCh0KX1mdW5jdGlvbiBHcih0KXtyZXR1cm4hZnVuY3Rpb24odCl7cmV0dXJuXCJbb2JqZWN0IE51bGxdXCI9PT1Ici5jYWxsKHQpfSh0KSYmIVFyKHQpfWZ1bmN0aW9uIFdyKHQpe3JldHVybiBHcih0KSYmXCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT09SHIuY2FsbCh0KX1mdW5jdGlvbiBLcih0KXtyZXR1cm4gR3IodCkmJlwiW29iamVjdCBPYmplY3RdXCI9PT1Ici5jYWxsKHQpfWZ1bmN0aW9uIEpyKHQpe3JldHVybiBHcih0KSYmXCJbb2JqZWN0IEFycmF5XVwiPT09SHIuY2FsbCh0KX1mdW5jdGlvbiAkcih0KXtyZXR1cm4gR3IodCkmJlwiW29iamVjdCBTdHJpbmddXCI9PT1Ici5jYWxsKHQpfWZ1bmN0aW9uIFlyKHQpe3JldHVybiBHcih0KSYmXCJbb2JqZWN0IE51bWJlcl1cIj09PUhyLmNhbGwodCl9ZnVuY3Rpb24gWHIodCl7cmV0dXJuXCJIVE1MRWxlbWVudFwiaW4gd2luZG93PyEhKHQmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk6ISghdHx8XCJvYmplY3RcIiE9dHlwZW9mIHR8fDEhPT10Lm5vZGVUeXBlfHwhdC5ub2RlTmFtZSl9ZnVuY3Rpb24gWnIodCl7cmV0dXJuXCJIVE1MSUZyYW1lRWxlbWVudFwiaW4gd2luZG93PyEhKHQmJnQgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCk6ISghdHx8XCJvYmplY3RcIiE9dHlwZW9mIHR8fDEhPT10Lm5vZGVUeXBlfHxcIklGUkFNRVwiIT09dC5ub2RlTmFtZSl9ZnVuY3Rpb24gdG8odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVtdKSxKcih0KT90LmZpbHRlcigoZnVuY3Rpb24odCxlLG4pe3JldHVybiBuLmluZGV4T2YodCk9PT1lfSkpOltdfWZ1bmN0aW9uIGVvKHQpe3ZvaWQgMD09PXQmJih0PVtdKTtmb3IodmFyIGU9W10sbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+MT9uLTE6MCkscj0xO3I8bjtyKyspaVtyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4hSnIodCl8fGkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIUpyKHQpfSkpP2U6KGU9dG8odCksZT1pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluY2x1ZGVzKHQpfSkpfSksZSkpfWZ1bmN0aW9uIG5vKHQpe3ZvaWQgMD09PXQmJih0PVtdKTtmb3IodmFyIGU9W10sbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+MT9uLTE6MCkscj0xO3I8bjtyKyspaVtyLTFdPWFyZ3VtZW50c1tyXTtyZXR1cm4hSnIodCl8fGkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIUpyKHQpfSkpP2U6KGU9dC5zbGljZSgpLGU9aS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hZS5pbmNsdWRlcyh0KX0pKX0pLGUpKX12YXIgaW89L1xcW10kLztmdW5jdGlvbiBybyh0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIGU9W10sbj1lbmNvZGVVUklDb21wb25lbnQsaT1mdW5jdGlvbih0LGkpe3ZhciByPVwiXCI7cj1XcihpKT9pKCk6aSxlW2UubGVuZ3RoXT1uKHQpK1wiPVwiK24obnVsbD09PXI/XCJcIjpyKX07cmV0dXJuIEtyKHQpJiZPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24gZSh0LG4saSl7S3Iobik/T2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9blswXSxvPW5bMV07ZSh0K1wiW1wiK3IrXCJdXCIsbyxpKX0pKTpKcihuKT9uLmZvckVhY2goKGZ1bmN0aW9uKG4scil7aW8udGVzdCh0KT9pKHQsbik6ZSh0K1wiW1wiKyhcIm9iamVjdFwiPT10eXBlb2YgbiYmbnVsbCE9PW4/cjpcIlwiKStcIl1cIixuLGkpfSkpOmkodCxuKX0odFswXSx0WzFdLGkpfSkpLGUuam9pbihcIiZcIil9ZnVuY3Rpb24gb28odCl7dmFyIGUsbixpLHIsbyxzLGE9dHx8e30sdT0wLGM9ITEsZD1hcmd1bWVudHMubGVuZ3RoPD0xPzA6YXJndW1lbnRzLmxlbmd0aC0xO2ZvcihcImJvb2xlYW5cIj09dHlwZW9mIGEmJihjPWEsYT0oYXJndW1lbnRzLmxlbmd0aDw9MT91bmRlZmluZWQ6YXJndW1lbnRzWzFdKXx8e30sdT0xKSxcIm9iamVjdFwiPT10eXBlb2YgYXx8V3IoYSl8fChhPXt9KTt1PGQ7dSs9MSlpZihudWxsIT09KGU9dSsxPDF8fGFyZ3VtZW50cy5sZW5ndGg8PXUrMT91bmRlZmluZWQ6YXJndW1lbnRzW3UrMV0pKWZvcihuIGluIGUpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJihpPWFbbl0sYSE9PShyPWVbbl0pJiYoYyYmciYmKEtyKHIpfHwobz1KcihyKSkpPyhvPyhvPSExLHM9aSYmSnIoaSk/aTpbXSk6cz1pJiZLcihpKT9pOnt9LGFbbl09b28oYyxzLHIpKTpyIT09dW5kZWZpbmVkJiYoYVtuXT1yKSkpO3JldHVybiBhfXZhciBzbz1cIlwiLGFvPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoXCJfX2pzYXBpX2RlYnVnY29uc29sZT0xXCIpLHVvPW51bGwsY289MCxmbz13aW5kb3cuY29uc29sZXx8e30saG89Zm8ubG9nfHx6cixsbz1mby5kZWJ1Z3x8aG8sZ289Zm8uaW5mb3x8aG8scG89Zm8uZXJyb3J8fGhvO2Z1bmN0aW9uIF9vKCl7cmV0dXJuIGFvfWZ1bmN0aW9uIG1vKHQpe3NvPXR9ZnVuY3Rpb24gdm8odCl7dm9pZCAwPT09dCYmKHQ9XCJcIiksdW89bnVsbDt0cnl7dW89dC5sZW5ndGg/bmV3IFJlZ0V4cChcIlwiK3QpOm51bGx9Y2F0Y2godGEpe319ZnVuY3Rpb24geW8odCxlLG4pe2lmKHQ9dHx8XCJcIixfbygpKXt2YXIgaT1NYXRoLmZsb29yKChEYXRlLm5vdygpLWNvKS8xZTMpO3RyeXtuKFwiW1wiK2krXCJzXSAtIFwiK3QpfWNhdGNoKHRhKXt9fSEwPT09ZSYmZnVuY3Rpb24odCxlKXtpZihlPWV8fHt9LCh0PXR8fFwiXCIpLmxlbmd0aCYmc28ubGVuZ3RoKXtvbyghMCxlLGUse2NvbW1hbmQ6dCxjb3VudDoobmV3IERhdGUpLmdldFRpbWUoKX0pO3ZhciBuPXNvK1wiP1wiK3JvKGUpO2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIikuc3JjPW59fShcIkFETE9HXCIse21zZzp0fSl9ZnVuY3Rpb24gYm8odCl7eW8odD1cIkFTOkQ6XCIrdCwhMSxsbyl9ZnVuY3Rpb24gd28odCl7dD1cIkFTOkU6XCIrdDt2YXIgZT0hMDt1byYmdW8udGVzdCh0KSYmKGU9ITEpLHlvKHQsZSxwbyl9ZnVuY3Rpb24gSW8odCl7eW8odD1cIkFTOkk6XCIrdCwhMCxnbyl9dmFyIENvPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl93aW49d2luZG93LHRoaXMuX2RvYz1kb2N1bWVudCx0aGlzLl9kZWZDb25maWc9e3NldHRpbmdzOnthZFJvdGF0ZTp7ZXhjbHVkZTpcIlwiLHBvc2l0aW9uczpcIlwiLGRlbGF5OjAsZHVyYXRpb246NjAsZHVyYXRpb25FbmQ6LTEsb25seUFjdGl2ZVBhZ2U6ITEscGVyY2VudGFnZUluVmlld1BvcnQ6MH0saGVhZGVyQmlkZGluZzp7YmlkZGVyczpbXSxiaWRkZXJzX2RpYWx1cDpbXSxiaWRkZXJzT3ZlcnJpZGU6W10sc2h1ZmZsZUJpZGRlcnM6ITEsdGltZW91dDozZTMsdXNlclN5bmM6e30sZ3JhbnVsYXJpdHk6XCJkZW5zZVwifSxsb2dnZXJHaWY6XCIvL3N0YXRpYy51b2xjb250ZW50LmNvbS9pbWFnZXMvc3BhY2VyLmdpZlwiLGVyckV4Y2x1ZGVSZXBvcnRpbmc6XCJcIixjb25maWdFeHBpcnlTZWM6MTIwMCxjcmVhdGl2ZXM6e30scG9zTWFwOnt9LGFkU2VydmVyOnt9LGlsOntvYmo6XCJJMTJDXCIsa2V5OlwiTW9ycGhcIn0sYWRsb2FkaW5nOntkZWxheToyMDAsZW5hYmxlUkFGU2NoZWR1bGVyOiExLHNhbmRib3g6XCJcIn0sY3ZGaWx0ZXI6W119fSx0aGlzLl9jb25maWc9b28oITAse30sdGhpcy5fZGVmQ29uZmlnKSx0aGlzLl9wYWdlSW5mbz17cG9zTGlzdDpbXSxuYW1lOlwiXCJ9LHRoaXMuX2xhc3RDb25maWdMb2FkVGltZT0wLHRoaXMuX2dQYWdlSW5mbz17cG9zTGlzdDpbXSxuYW1lOlwiXCJ9LHRoaXMuX2NvbmZpZ092ZXJyaWRlPXt9fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmluaXQ9ZnVuY3Rpb24odCxlLG4pe3RoaXMuX3dpbj10LHRoaXMuX2RvYz1lLHRoaXMuX2NvbmZpZ092ZXJyaWRlPW4uYWRDb25maWcub3ZlcnJpZGV8fHt9LHRoaXMuX2dQYWdlSW5mbz1uLnBhZ2VJbmZvLG1vKHRoaXMuX2NvbmZpZy5zZXR0aW5ncy5sb2dnZXJHaWYpLHZvKHRoaXMuX2NvbmZpZy5zZXR0aW5ncy5lcnJFeGNsdWRlUmVwb3J0aW5nKX0sZS5zZXRQYWdlSW5mbz1mdW5jdGlvbih0LGUpe3RoaXMuX3BhZ2VJbmZvLm5hbWU9dHx8XCJcIiwkcihlPWV8fFwiXCIpJiZlLmxlbmd0aD90aGlzLl9wYWdlSW5mby5wb3NMaXN0PWUuc3BsaXQoXCIsXCIpOkpyKGUpJiZlLmxlbmd0aCYmKHRoaXMuX3BhZ2VJbmZvLnBvc0xpc3Q9ZSl9LGUuZ2V0UGFnZU5hbWU9ZnVuY3Rpb24odCl7cmV0dXJuICRyKHQ9dHx8dGhpcy5fcGFnZUluZm8ubmFtZXx8dGhpcy5fZ1BhZ2VJbmZvLm5hbWUpP3Q6V3IodCk/dC5jYWxsKHRoaXMuX3dpbik6XCJcIn0sZS5nZXRQYWdlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hdCYmdGhpcy5fcGFnZUluZm8ucG9zTGlzdC5sZW5ndGgmJih0PXRoaXMuX3BhZ2VJbmZvLnBvc0xpc3QpLHR8fCh0PXRoaXMuX2dQYWdlSW5mby5wb3NMaXN0KSxXcih0KSYmKHQ9dC5jYWxsKHRoaXMuX3dpbix0aGlzLmdldFBhZ2VOYW1lKGUpLCEwPT09bikpLCRyKHQ9dHx8XCJcIikmJnQubGVuZ3RoP3Q9dC5zcGxpdChcIixcIik6SnIodCl8fCh0PVtdKSx0fSxlLnByb2Nlc3NDb25maWdEYXRhPWZ1bmN0aW9uKHQpe3RoaXMuX2NvbmZpZz1vbyghMCx7fSx0aGlzLl9kZWZDb25maWcsdCx0aGlzLl9jb25maWdPdmVycmlkZSksdGhpcy5fY29uZmlnLnNldHRpbmdzLmxvZ2dlckdpZiYmbW8odGhpcy5fY29uZmlnLnNldHRpbmdzLmxvZ2dlckdpZiksdm8odGhpcy5fY29uZmlnLnNldHRpbmdzLmVyckV4Y2x1ZGVSZXBvcnRpbmcpfSxlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb25maWd9LGUuZ2V0Q3JlYXRpdmU9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9XCJcIik7dmFyIGU9XCJcIjtpZighdC5sZW5ndGgpcmV0dXJuIGU7dmFyIG49dGhpcy5nZXRQb3NTZXR0aW5ncyh0KS5jcmVhdGl2ZXx8XCJcIjtyZXR1cm4gbj9lPSh0aGlzLl9jb25maWcuc2V0dGluZ3MuY3JlYXRpdmVzfHx7fSlbbl18fFwiXCI6ZX0sZS5nZXRQb3NTZXR0aW5ncz1mdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gdC5sZW5ndGg+MCYmdGhpcy5fY29uZmlnLnNldHRpbmdzLnBvc01hcFt0XSYmKGU9dGhpcy5fY29uZmlnLnNldHRpbmdzLnBvc01hcFt0XSksZT1vbyghMCx7d2lkdGg6MSxoZWlnaHQ6MSxhczpcIlwiLGxvYWRpbmdNZXRob2Q6MSxhRm9sZDohMX0sZSl9LGUuaXNBYm92ZUZvbGQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9XCJcIik7dmFyIGU9ITE7cmV0dXJuIHQubGVuZ3RoP2U9Qm9vbGVhbih0aGlzLmdldFBvc1NldHRpbmdzKHQpLmFGb2xkKTplfSx0fSgpKSx4bz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZvaWQgMD09PXQmJih0PW5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuX3VhUmVhbD10LHRoaXMuX3VhPXQudG9Mb3dlckNhc2UoKSx0aGlzLl9jb25maWc9W3tzZWFyY2g6XCJlZGdlXCIsbmFtZTpcIkVkZ2VcIixzbmFtZTpcImVkZ2VcIix2ZXJzaW9uUHJlZml4OlwiZWRnZVwiLHZlcnNpb246XCJcIn0se3NlYXJjaDpcIm9wZXJhXCIsbmFtZTpcIk9wZXJhXCIsc25hbWU6XCJvcGVyYVwiLHZlcnNpb25QcmVmaXg6XCJvcGVyYVwiLHZlcnNpb246XCJcIn0se3NlYXJjaDpcImNocm9tZVwiLG5hbWU6XCJDaHJvbWVcIixzbmFtZTpcImNocm9tZVwiLHZlcnNpb25QcmVmaXg6XCJjaHJvbWVcIix2ZXJzaW9uOlwiXCJ9LHtzZWFyY2g6XCJmaXJlZm94XCIsbmFtZTpcIkZpcmVmb3hcIixzbmFtZTpcImZmXCIsdmVyc2lvblByZWZpeDpcImZpcmVmb3hcIix2ZXJzaW9uOlwiXCJ9LHtzZWFyY2g6XCJzYWZhcmlcIixuYW1lOlwiU2FmYXJpXCIsc25hbWU6XCJzYWZhcmlcIix2ZXJzaW9uUHJlZml4OlwidmVyc2lvblwiLHZlcnNpb246XCJcIn0se3NlYXJjaDpcIm1zaWVcIixuYW1lOlwiSW50ZXJuZXQgRXhwbG9yZXJcIixzbmFtZTpcImllXCIsdmVyc2lvblByZWZpeDpcIm1zaWVcIix2ZXJzaW9uOlwiXCJ9LHtzZWFyY2g6XCJ0cmlkZW50XCIsbmFtZTpcIkludGVybmV0IEV4cGxvcmVyXCIsc25hbWU6XCJpZVwiLHZlcnNpb25QcmVmaXg6XCJydlwiLHZlcnNpb246XCJcIn1dLHRoaXMuX2NhY2hlPXRoaXMuX2dldEluZm8oKX12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5fZ2V0SW5mbz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldE5hbWUoKTtyZXR1cm4gdC52ZXJzaW9uPXRoaXMuX2dldFZlcnNpb24odCksdH0sZS5fZ2V0TmFtZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9jb25maWcuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gdC5fdWEuaW5jbHVkZXMoZS5zZWFyY2gpfSkpO3JldHVybi0xIT09ZT90aGlzLl9jb25maWdbZV06e3NlYXJjaDpcInVua25vd25cIixuYW1lOlwiVW5rbm93blwiLHNuYW1lOlwib3RoZXJzXCIsdmVyc2lvblByZWZpeDpcIlwiLHZlcnNpb246XCJcIn19LGUuX2dldFZlcnNpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX3VhLmluZGV4T2YodC52ZXJzaW9uUHJlZml4KSt0LnZlcnNpb25QcmVmaXgubGVuZ3RoKzEsbj1cIlwiLGk9dGhpcy5fdWEuY2hhckF0KGUpO2kmJlwiIFwiIT09aSYmKCFOdW1iZXIuaXNOYU4oTnVtYmVyKGkpKXx8XCIuXCI9PT1pKTspbis9aSxlKz0xLGk9dGhpcy5fdWEuY2hhckF0KGUpO3JldHVybiBuLnNwbGl0KFwiLlwiKS5zcGxpY2UoMCwyKS5qb2luKFwiLlwiKX0sZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhY2hlLm5hbWV9LGUuZ2V0U2hvcnROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhY2hlLnNuYW1lfSxlLmdldFZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FjaGUudmVyc2lvbn0sZS5nZXRNYWpvclZlcnNpb249ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLnBhcnNlSW50KHRoaXMuX2NhY2hlLnZlcnNpb24sMTApfSxlLmlzT2xkSUU9ZnVuY3Rpb24oKXtyZXR1cm5cImllXCI9PT10aGlzLmdldFNob3J0TmFtZSgpJiZ0aGlzLmdldE1ham9yVmVyc2lvbigpPD0xMH0sZS5nZXRVc2VyQWdlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdWFSZWFsfSx0fSgpKTtmdW5jdGlvbiBQbyh0LGUpe2lmKHZvaWQgMD09PXQmJih0PXdpbmRvdyksdm9pZCAwPT09ZSYmKGU9XCJcIiksISRyKGUpfHwhZS5sZW5ndGgpcmV0dXJue307dmFyIG49ZS5pbmRleE9mKFwie1wiKSxpPWUubGFzdEluZGV4T2YoXCJ9XCIpLHI9XCJcIjtpZigtMSE9PW4mJi0xIT09aSYmaT5uJiYocj1lLnNsaWNlKG4saSsxKSksci5sZW5ndGgpdHJ5e3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiB0LkpTT04mJldyKHQuSlNPTi5wYXJzZSk/dC5KU09OLnBhcnNlKHIpOldyKHQualF1ZXJ5KSYmV3IodC5qUXVlcnkucGFyc2VKU09OKT90LmpRdWVyeS5wYXJzZUpTT04ocik6KDAsdC5ldmFsKShcIihcIityK1wiKVwiKX1jYXRjaCh0YSl7fXJldHVybnt9fWZ1bmN0aW9uIFNvKHQsZSxuLGkpe2lmKG49bnx8ITEsaT1pfHxcIlwiLCEodD10fHxcIlwiKS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIHI9ZS5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO3Iuc3JjPXQsaS5sZW5ndGgmJihyLmlkPWkpLG4mJihyLmFzeW5jPSEwKTt2YXIgbz1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdO2lmKG8mJm8ucGFyZW50Tm9kZSlvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsbyk7ZWxzZSB0cnl7ZS5ib2R5JiZlLmJvZHkuYXBwZW5kQ2hpbGQocil9Y2F0Y2godGEpe31yZXR1cm4gcn1mdW5jdGlvbiBBbyh0LGUpe3ZvaWQgMD09PWUmJihlPXhvKTtmb3IodmFyIG49ZS5nZXRTaG9ydE5hbWUoKSxpPWUuZ2V0TWFqb3JWZXJzaW9uKCkscj0odHx8XCJcIikudG9Mb3dlckNhc2UoKS5zcGxpdChcIixcIiksbz0wLHM9XCJcIixhPVtdLHU9W107bzxyLmxlbmd0aDtvKz0xKTM9PT0oYT0ocz1yW29dKS5zcGxpdChcInxcIikpLmxlbmd0aCYmKHMuaW5jbHVkZXMoXCIqXCIpJiYoYVswXT1cIipcIj09PWFbMF0/bjphWzBdLGFbMV09XCIqXCI9PT1hWzFdP1N0cmluZyhpKTphWzFdKSxzPWEuam9pbihcInxcIiksdS5wdXNoKHMudG9Mb3dlckNhc2UoKSkpO3JldHVybiB1fWZ1bmN0aW9uIERvKHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj14byksZT1lfHxbXSwhKHQ9dHx8XCJcIikubGVuZ3RofHwhZS5sZW5ndGgpcmV0dXJuITE7dmFyIGk9bi5nZXRTaG9ydE5hbWUoKStcInxcIituLmdldE1ham9yVmVyc2lvbigpK1wifFwiLHI9KGkrdCkudG9Mb3dlckNhc2UoKSxvPShpK1wiKlwiKS50b0xvd2VyQ2FzZSgpO3JldHVybiBlLmluY2x1ZGVzKHIpfHxlLmluY2x1ZGVzKG8pfWZ1bmN0aW9uIGpvKCl7dmFyIHQ9d2luZG93LnRvcCxlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49MCxpPTA7cmV0dXJuIFFyKHQuaW5uZXJXaWR0aCk/WHIoZSkmJihuPWUuY2xpZW50V2lkdGgsaT1lLmNsaWVudEhlaWdodCk6KG49dC5pbm5lcldpZHRoLGk9dC5pbm5lckhlaWdodCksW24saV19ZnVuY3Rpb24gVG8odCxlKXtpZih2b2lkIDA9PT10JiYodD13aW5kb3cuZG9jdW1lbnQpLHZvaWQgMD09PWUmJihlPVwiXCIpLCFlLmxlbmd0aClyZXR1cm4gMDt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBYcihuKT9XcihuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCk/TWF0aC5taW4oZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD13aW5kb3cuZG9jdW1lbnQpLHZvaWQgMD09PWUmJihlPVwiXCIpO3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYoIVhyKG4pKXJldHVybiAwO3ZhciBpPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1qbygpWzFdO3JldHVybiBpLnRvcD49MCYmaS5ib3R0b208PXJ8fGkudG9wPDAmJmkuYm90dG9tPnI/MTAwOmkuYm90dG9tPjAmJmkudG9wPDA/aS5ib3R0b20vaS5oZWlnaHQqMTAwOmkudG9wPHImJmkuYm90dG9tPnI/KHItaS50b3ApL2kuaGVpZ2h0KjEwMDowfSh0LGUpLGZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9d2luZG93LmRvY3VtZW50KSx2b2lkIDA9PT1lJiYoZT1cIlwiKTt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO2lmKCFYcihuKSlyZXR1cm4gMDt2YXIgaT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9am8oKVswXTtyZXR1cm4gaS5sZWZ0Pj0wJiZpLnJpZ2h0PD1yfHxpLmxlZnQ8MCYmaS5ib3R0b20+cj8xMDA6aS5yaWdodD4wJiZpLmxlZnQ8MD9pLnJpZ2h0L2kud2lkdGgqMTAwOmkubGVmdDxyJiZpLnJpZ2h0PnI/KHItaS5sZWZ0KS9pLndpZHRoKjEwMDowfSh0LGUpKToxMDA6MH1mdW5jdGlvbiBFbyh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9d2luZG93KSxcIm9iamVjdFwiPT10eXBlb2YgdC5KU09OJiZXcih0LkpTT04uc3RyaW5naWZ5KX1mdW5jdGlvbiBCbygpe3JldHVybiBuYXZpZ2F0b3IuY29ubmVjdGlvbiYmbmF2aWdhdG9yLmNvbm5lY3Rpb24uZWZmZWN0aXZlVHlwZSYmbmF2aWdhdG9yLmNvbm5lY3Rpb24uZWZmZWN0aXZlVHlwZXx8XCJcIn1mdW5jdGlvbiBSbyh0KXt2YXIgZT1CbygpO3JldHVyblwiXCIhPT1lP1wic2xvdy0yZ1wiPT09ZXx8XCIyZ1wiPT09ZTp0fWZ1bmN0aW9uIE9vKCl7cmV0dXJuXCJodHRwczpcIj09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH1mdW5jdGlvbiBrbygpe3ZhciB0PW5hdmlnYXRvci5kb05vdFRyYWNrfHx3aW5kb3cuZG9Ob3RUcmFja3x8bmF2aWdhdG9yLm1zRG9Ob3RUcmFja3x8XCJcIjtyZXR1cm4gMT09PXR8fFwiMVwiPT09dHx8XCJ5ZXNcIj09PXR9IWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PWRvY3VtZW50KTt2YXIgZT10LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpOyEhZSYmZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHQmJnQuc3VwcG9ydHMmJnQuc3VwcG9ydHMoZSl9Y2F0Y2godGEpe319KGUucmVsTGlzdCxcInByZWxvYWRcIil9KCk7dmFyIExvPVtcIldlYmtpdFwiLFwid2Via2l0XCIsXCJNb3pcIixcIm1velwiLFwibXNcIixcIk9cIixcIm9cIl07ZnVuY3Rpb24gTm8odCxlKXtpZighJHIoZSl8fGUubGVuZ3RoPDEpcmV0dXJuXCJcIjtpZighUXIodFtlXSkpcmV0dXJuXCJcIjt2YXIgbixpPShuPWUpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSkscj1Mby5maW5kSW5kZXgoKGZ1bmN0aW9uKGUpe3JldHVybiFRcih0W1wiXCIrZStpXSl9KSk7cmV0dXJuLTEhPT1yP0xvW3JdOlwiXCJ9ZnVuY3Rpb24gTW8odCxlKXtyZXR1cm4hJHIoZSl8fGUubGVuZ3RoPDE/XCJcIjpcIlwiK05vKHQsZSkrZX1mdW5jdGlvbiBxbygpe3JldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoMiwxMSl9ZnVuY3Rpb24gVm8odCl7aWYodm9pZCAwPT09dCYmKHQ9XCJcIiksMT09PXQubGVuZ3RoKXt2YXIgZT1OdW1iZXIodCk7cmV0dXJuKGVeKG49d2luZG93LmNyeXB0bywoS3IobikmJldyKG4uZ2V0UmFuZG9tVmFsdWVzKT9uLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgxKSlbMF0lMTY6MTYqTWF0aC5yYW5kb20oKSk+PmUvNCkpLnRvU3RyaW5nKDE2KX12YXIgbjtyZXR1cm5cIjEwMDAwMDAwLTEwMDAtNDAwMC04MDAwLTEwMDAwMDAwMDAwMFwiLnJlcGxhY2UoL1swMThdL2csVm8pfWZ1bmN0aW9uIEZvKHQpe3ZhciBlPW51bGw7cmV0dXJuIHQ/KHQuY29udGVudERvY3VtZW50P2U9dC5jb250ZW50RG9jdW1lbnQ6dC5jb250ZW50V2luZG93JiZ0LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ/ZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6dC5kb2N1bWVudCYmKGU9dC5kb2N1bWVudCksZSk6ZX1mdW5jdGlvbiBVbyh0LGUsbil7aWYobi5sZW5ndGgpe3ZhciBpPXQuZ2V0RWxlbWVudEJ5SWQobik7WnIoaSkmJihpLnNyYz1cIlwiLGkuZG9jdW1lbnRXaW5kb3cmJihpLmRvY3VtZW50V2luZG93LmRvY3VtZW50PW51bGwsaS5kb2N1bWVudFdpbmRvdz1udWxsKSl9dHJ5e2Zvcig7ZSYmZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCl9Y2F0Y2godGEpe319ZnVuY3Rpb24gem8odCxlLG4saSxyLG8pe3ZvaWQgMD09PXImJihyPVwiXCIpLHZvaWQgMD09PW8mJihvPVwiXCIpO3ZhciBzPXQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtyZXR1cm4gcy5zZXRBdHRyaWJ1dGUoXCJpZFwiLGUpLHMuc2V0QXR0cmlidXRlKFwibmFtZVwiLGUpLHMuc2V0QXR0cmlidXRlKFwidG9wbWFyZ2luXCIsXCIwXCIpLHMuc2V0QXR0cmlidXRlKFwibGVmdG1hcmdpblwiLFwiMFwiKSxzLnNldEF0dHJpYnV0ZShcIm1hcmdpbmhlaWdodFwiLFwiMFwiKSxzLnNldEF0dHJpYnV0ZShcIm1hcmdpbndpZHRoXCIsXCIwXCIpLHMud2lkdGg9U3RyaW5nKG4pLHMuaGVpZ2h0PVN0cmluZyhpKSxzLmZyYW1lQm9yZGVyPVwiMFwiLHMuc2Nyb2xsaW5nPVwibm9cIixzLmFsbG93VHJhbnNwYXJlbmN5PVwidHJ1ZVwiLHMuYmFja2dyb3VuZENvbG9yPVwidHJhbnNwYXJhbnRcIiwkcihvKSYmby5sZW5ndGg+MCYmcy5zZXRBdHRyaWJ1dGUoXCJzYW5kYm94XCIsbyksJHIocikmJnIubGVuZ3RoJiYocy5zcmM9ciksc312YXIgSG89RGF0ZS5ub3coKTtmdW5jdGlvbiBRbyh0LGUpe3ZhciBuPXtjYWNoZTohMSxkYXRhOnt9LGpzb25wOlwiY2FsbGJhY2tcIixqc29ucENhbGxiYWNrOnpyLGFzeW5jOiEwLGxvZ1ByZWZpeDpcIlwiLGNvbnRleHQ6d2luZG93LHRpbWVvdXQ6MzAwfSxpPVwiYXNKU09OUENCX1wiK0hvO2lmKEhvKz0xLCFLcihlKXx8ISRyKHQpfHwhdC5sZW5ndGgpcmV0dXJuIFByb21pc2UucmVqZWN0KFwiSW52YWxpZCBhcmdzIVwiKTt2YXIgcj1vbyh7fSxuLGUpO2Z1bmN0aW9uIG8oKXtyLmNvbnRleHQmJmkubGVuZ3RoPjAmJnIuY29udGV4dFtpXSYmV3Ioci5jb250ZXh0W2ldKSYmZGVsZXRlIHIuY29udGV4dFtpXX1yZXR1cm4hMT09PXIuY2FjaGUmJihyLmRhdGEuXz1EYXRlLm5vdygpKSxyLmRhdGFbci5qc29ucF09aSx0LmluY2x1ZGVzKFwiP1wiKXx8KHQrPVwiP1wiKSxcIiZcIiE9PXRbdC5sZW5ndGgtMV0mJih0Kz1cIiZcIiksdCs9cm8oci5kYXRhKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxuKXt2YXIgcz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe28oKSxuKHIubG9nUHJlZml4K1wiIGpzb25wIHNjcmlwdCBsb2FkaW5nIGZhaWxlZDogdGltZW91dFwiKX0pLHIudGltZW91dCk7ci5jb250ZXh0W2ldPWZ1bmN0aW9uKHQpe3IuanNvbnBDYWxsYmFjayYmci5qc29ucENhbGxiYWNrLmNhbGwoci5jb250ZXh0LHQpLHNldFRpbWVvdXQobywwKSxzJiYoY2xlYXJUaW1lb3V0KHMpLHM9dW5kZWZpbmVkKSxlKHQpfSxTbyh0LEZvKHIuY29udGV4dCl8fGRvY3VtZW50LHIuYXN5bmMpfSkpfWZ1bmN0aW9uIEdvKHQpe3JldHVybiB0Lm9rP1Byb21pc2UucmVzb2x2ZSh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IodC5zdGF0dXNUZXh0KSl9ZnVuY3Rpb24gV28odCl7aWYoMjA0PT09dC5zdGF0dXMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7dmFyIGU9dC5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKXx8XCJcIjtyZXR1cm4gZS5sZW5ndGg+MCYmKGUuaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpfHxlLmluY2x1ZGVzKFwidGV4dC9odG1sXCIpKT90Lmpzb24oKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbnRlbnQgdHlwZTogXCIrKGV8fFwiZW1wdHlcIikpKX1mdW5jdGlvbiBLbygpe3JldHVyblwiZmV0Y2hcImluIHdpbmRvd31mdW5jdGlvbiBKbyh0LGUsbil7aWYoIUtvKCkpcmV0dXJuIFByb21pc2UucmVqZWN0KFwiZmV0Y2ggbm90IHN1cHBvcnRlZFwiKTt2YXIgaT17Y2FjaGU6ITEsZGF0YTp7fSxqc29ucENhbGxiYWNrOnpyLHRpbWVvdXQ6MzAwLGxvZ1ByZWZpeDpcIlwiLGNvbnRleHQ6d2luZG93fTtpZighS3IoZSl8fCEkcih0KXx8IXQubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlamVjdChcIkludmFsaWQgYXJncyFcIik7dmFyIHI9b28oe30saSxlKTtyZXR1cm4gbj1ufHx7fSwhMT09PXIuY2FjaGUmJihuLmNhY2hlPVwibm8tc3RvcmVcIiksdC5pbmNsdWRlcyhcIj9cIik/XCImXCIhPT10W3QubGVuZ3RoLTFdJiYodCs9XCImXCIpOnQrPVwiP1wiLHQrPXJvKHIuZGF0YSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsaSl7dmFyIG89c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gaShyLmxvZ1ByZWZpeCtcIiBmZXRjaCBmYWlsZWQ6IHRpbWVvdXRcIil9KSxyLnRpbWVvdXQpO2ZldGNoKHQsbikudGhlbihHbykudGhlbihXbykudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIG8mJihjbGVhclRpbWVvdXQobyksbz1udWxsKSxyLmpzb25wQ2FsbGJhY2smJnIuanNvbnBDYWxsYmFjay5jYWxsKHIuY29udGV4dCx0KSxlKHQpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGkoci5sb2dQcmVmaXgrXCIgXCIrdC5tZXNzYWdlKX0pKX0pKX12YXIgJG89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5faWZyYW1lSG9sZGVyPVwiXCIsdGhpcy5fc1dyYXBwZXI9XCJcIn12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5pbml0PWZ1bmN0aW9uKHQpe3RoaXMuX2lmcmFtZUhvbGRlcj10LmlmcmFtZUhvbGRlcix0aGlzLl9zV3JhcHBlcj10LnNXcmFwcGVyfSxlLl9jcmVhdGVBZElmcmFtZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9ZS5vd25lckRvY3VtZW50LHI9bi5hcztVbyhpLGUsbi5mSUQpO3ZhciBvLHMsYSx1PXpvKGksbi5mSUQsci53aWR0aCxyLmhlaWdodCx0LFFyKHIuc2FuZGJveCk/bi5zYW5kYm94OnIuc2FuZGJveCk7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHIuZHluSGVpZ2h0JiYhMD09PXIuZHluSGVpZ2h0JiYocz1cImxvYWRcIixhPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO2lmKFpyKGUpKXt2YXIgbj1GbyhlKTtuJiZuLmJvZHkmJihlLmhlaWdodD1NYXRoLm1heChuLmJvZHkuc2Nyb2xsSGVpZ2h0LG4uYm9keS5vZmZzZXRIZWlnaHQpLG4mJm4uYm9keSYmbi5ib2R5LnN0eWxlJiYobi5ib2R5LnN0eWxlLm1hcmdpbkJvdHRvbT1cIjBweFwiLG4uYm9keS5zdHlsZS5tYXJnaW5SaWdodD1cIjBweFwiKSl9fShuLmZJRCl9LChvPXUpJiZvLmFkZEV2ZW50TGlzdGVuZXI/by5hZGRFdmVudExpc3RlbmVyKHMsYSwhMSk6byYmby5hdHRhY2hFdmVudCYmby5hdHRhY2hFdmVudChcIm9uXCIrcyxhKSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHIuTWFyZ2luSGVpZ2h0JiYodS5tYXJnaW5IZWlnaHQ9U3RyaW5nKHIuTWFyZ2luSGVpZ2h0KSksZS5hcHBlbmRDaGlsZCh1KSx1fSxlLl91cGRhdGVBZENvbnRhaW5lckluZm89ZnVuY3Rpb24odCxlKXt0LmZJRD10LmlkLHQuY0lEPXQuaWQrdGhpcy5fc1dyYXBwZXJ9LGUuX2dldEFkRGl2PWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO2lmKGUpcmV0dXJuIGU7aWYoIXRoaXMuX2lmcmFtZUhvbGRlci5sZW5ndGgpcmV0dXJuIGU7dmFyIG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5faWZyYW1lSG9sZGVyKTtpZighWnIobikpcmV0dXJuIGU7dmFyIGk9Rm8obik7cmV0dXJuIGkmJihlPWkuZ2V0RWxlbWVudEJ5SWQodCkpLGV9LGUubG9hZElmcmFtZUFkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdXBkYXRlQWRDb250YWluZXJJbmZvKGUpO3ZhciBuPXRoaXMuX2dldEFkRGl2KGUuY0lEKTtyZXR1cm4gbj90aGlzLl9jcmVhdGVBZElmcmFtZSh0LG4sZSk6KHdvKFwiQ29udGFpbmVyIG5vdCBmb3VuZDpcIitlLmNJRCksdW5kZWZpbmVkKX0sZS5sb2FkTm9uSWZyYW1lQWQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9nZXRBZERpdih0K3RoaXMuX3NXcmFwcGVyKTtuJiYobi5pbm5lckhUTUw9ZSl9LGUuYWRkQ29udGFpbmVyRGl2cz1mdW5jdGlvbih0KXt9LHR9KCksWW89bmV3ICRvO2Z1bmN0aW9uIFhvKHQsZSl7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1lfXZhciBabz1uZXcgUmVnRXhwKFwiRigxfDIpXCIpLHRzPW5ldyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfVhvKGUsdCk7dmFyIG49ZS5wcm90b3R5cGU7cmV0dXJuIG4uX3VwZGF0ZUFkQ29udGFpbmVySW5mbz1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgbj10aGlzLl9nZXRBY3RpdmVJbmFjdGl2ZUZyYW1lKHQuaWQpLGk9dGhpcy5fZ2V0QWREaXYobi5hY3RpdmVDb250YWluZXIpO2U9ISghaXx8aS5maXJzdENoaWxkKXx8ZSx0LmZJRD1lP24uYWN0aXZlRnJhbWU6bi5pbmFjdGl2ZUZyYW1lLHQuY0lEPWU/bi5hY3RpdmVDb250YWluZXI6bi5pbmFjdGl2ZUNvbnRhaW5lcn0sbi5fYWRkQ2FjaGluZ0RpdnM9ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2dldEFkRGl2KHQrXCIxXCIpfHwhdGhpcy5fZ2V0QWREaXYodCtcIjJcIikpe3ZhciBlPXRoaXMuX2dldEFkRGl2KHQrdGhpcy5fc1dyYXBwZXIpO2UmJihlLmlubmVySFRNTD1cIjxkaXYgaWQ9J1wiK3QrXCIxJyBzdHlsZT0nZGlzcGxheTogYmxvY2s7dG9wOiAwcHg7bGVmdDogMHB4O2JhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Oyc+PC9kaXY+XFxuICAgICAgPGRpdiBpZD0nXCIrdCtcIjInIHN0eWxlPSdkaXNwbGF5OiBub25lO3RvcDogMHB4O2xlZnQ6IDBweDtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsnPjwvZGl2PlwiKX19LG4uZ2V0Tm9uQ2FjaGVkUG9zTmFtZT1mdW5jdGlvbih0KXtpZih2b2lkIDA9PT10JiYodD1cIlwiKSx0Lmxlbmd0aD4wJiZ0Lm1hdGNoKFpvKSl7dmFyIGU9dC5zcGxpdChabyk7dD1lWzBdfXJldHVybiB0fSxuLl9nZXRBY3RpdmVJbmFjdGl2ZUZyYW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldEFkRGl2KHQrXCIxXCIpLG49ZSYmXCJub25lXCIhPT1lLnN0eWxlLmRpc3BsYXk/W1wiMVwiLFwiMlwiXTpbXCIyXCIsXCIxXCJdLGk9blswXSxyPW5bMV07cmV0dXJue2FjdGl2ZUNvbnRhaW5lcjpcIlwiK3QraSxhY3RpdmVGcmFtZTp0K1wiRlwiK2ksaW5hY3RpdmVDb250YWluZXI6XCJcIit0K3IsaW5hY3RpdmVGcmFtZTp0K1wiRlwiK3J9fSxuLl90b2dnbGVBZD1mdW5jdGlvbih0LGUpe3RyeXt2YXIgbj10aGlzLl9nZXRBZERpdih0KSxpPXRoaXMuX2dldEFkRGl2KGUpO2kmJihpLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiKSxuJiYobi5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKX1jYXRjaCh0YSl7fX0sbi5sb2FkSWZyYW1lQWQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdGhpcy5fYWRkQ2FjaGluZ0RpdnMobi5pZCksdC5wcm90b3R5cGUubG9hZElmcmFtZUFkLmNhbGwodGhpcyxlLG4pfSxuLnRvZ2dsZUFkQnlDSUQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT10JiYodD1cIlwiKSx2b2lkIDA9PT1lJiYoZT1cIlwiKSxlLmxlbmd0aCYmdC5sZW5ndGgpe3ZhciBuPXRoaXMuX2dldEFjdGl2ZUluYWN0aXZlRnJhbWUodCksaT1lPT09bi5hY3RpdmVDb250YWluZXI/bi5pbmFjdGl2ZUNvbnRhaW5lcjpuLmFjdGl2ZUNvbnRhaW5lcjt0aGlzLl90b2dnbGVBZChpLGUpO3ZhciByPXRoaXMuX2dldEFkRGl2KGkpO3ImJnIuZmlyc3RDaGlsZCYmciYmci5vd25lckRvY3VtZW50JiZVbyhyLm93bmVyRG9jdW1lbnQscixuLmFjdGl2ZUZyYW1lKX19LG4udG9nZ2xlQWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0QWN0aXZlSW5hY3RpdmVGcmFtZSh0KSxuPXRoaXMuX2dldEFkRGl2KGUuaW5hY3RpdmVDb250YWluZXIpLGk9dGhpcy5fZ2V0QWREaXYoZS5hY3RpdmVDb250YWluZXIpO24mJm4uZmlyc3RDaGlsZCYmKHRoaXMuX3RvZ2dsZUFkKGUuYWN0aXZlQ29udGFpbmVyLGUuaW5hY3RpdmVDb250YWluZXIpLGkmJmkub3duZXJEb2N1bWVudCYmVW8oaS5vd25lckRvY3VtZW50LGksZS5hY3RpdmVGcmFtZSkpfSxuLmFkZENvbnRhaW5lckRpdnM9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9XCJcIiksdC5sZW5ndGgmJnRoaXMuX2FkZENhY2hpbmdEaXZzKHQpfSxlfSgkbykpLGVzPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9yb3RhdGlvbkxpc3Q9W119dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuaW5pdD1mdW5jdGlvbih0LGUsbil7W1lvLHRzXS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbml0KG4pfSkpfSxlLnNldFJvdGF0aW9uTGlzdD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD1bXSksdGhpcy5fcm90YXRpb25MaXN0PXR9LGUuX2dldEFkSW5mb09iamVjdEZyb21Qb3NpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJcIikse2lkOnQsY29udGVudDpcIlwiLGN1c3RvbVZhcnM6e30sYWRSb3RhdGlvbjohMSxjSUQ6XCJcIixmSUQ6XCJcIixhZFNlcnZlcjpcIlwiLGFkZEJvZHlUYWc6ITEsYXM6Q28uZ2V0UG9zU2V0dGluZ3ModCl9fSxlLmlzQ2FjaGluZ0VuYWJsZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcm90YXRpb25MaXN0LmluY2x1ZGVzKHQpJiYhMSE9PWUmJiF4by5pc09sZElFKCl9LGUuZ2V0Q29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cIlwiKSx0Lmxlbmd0aD4wJiZ0aGlzLmlzQ2FjaGluZ0VuYWJsZWQodCxDby5nZXRQb3NTZXR0aW5ncyh0KS5pZnJhbWUpP3RzOllvfSxlLmNyZWF0ZUNvbnRhaW5lcnM9ZnVuY3Rpb24odCl7KHZvaWQgMD09PXQmJih0PVwiXCIpLHQubGVuZ3RoKSYmdGhpcy5nZXRDb250YWluZXIodCkuYWRkQ29udGFpbmVyRGl2cyh0KX0sZS5nZXRBZENvbnRhaW5lckluZm89ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD1cIlwiKSx2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIG49dGhpcy5fZ2V0QWRJbmZvT2JqZWN0RnJvbVBvc2l0aW9uKHQpO3JldHVybiB0Lmxlbmd0aD8odGhpcy5nZXRDb250YWluZXIodCkuX3VwZGF0ZUFkQ29udGFpbmVySW5mbyhuLGUpLG4pOm59LGUuZ2V0Tm9uQ2FjaGVkUG9zTmFtZT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD1cIlwiKTt2YXIgZT1cIlwiO3JldHVybiB0Lmxlbmd0aCYmKGU9dHMuZ2V0Tm9uQ2FjaGVkUG9zTmFtZSh0KSksZX0sZS5nZXRBZENvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiBZb30sZS5nZXRDYWNoZWRDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdHN9LHR9KCkpLG5zPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9ldmVudHNfPXt9fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLm9uPWZ1bmN0aW9uKHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0hMSksIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwiaGFuZGxlciBub3QgZGVmaW5lZC5cIik7dGhpcy5fZXZlbnRzX1t0XXx8KHRoaXMuX2V2ZW50c19bdF09W10pO3ZhciBpPXtjYjplLG9uY2U6bn07cmV0dXJuIHRoaXMuX2V2ZW50c19bdF0ucHVzaChpKSx0aGlzfSxlLm9uY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5vbih0LGUsITApfSxlLm9mZj1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLl9ldmVudHNfW3RdKXJldHVybiB0aGlzO2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcignaGFuZGxlciBub3QgZGVmaW5lZC4gaWYgeW91IHdpc2ggdG8gcmVtb3ZlIGFsbCBoYW5kbGVycyBmcm9tIHRoZSBldmVudCBwbGVhc2UgcGFzcyBcIipcIiBhcyB0aGUgaGFuZGxlcicpO2lmKFwiKlwiPT09ZSlyZXR1cm4gZGVsZXRlIHRoaXMuX2V2ZW50c19bdF0sdGhpczt2YXIgbj10aGlzLl9ldmVudHNfW3RdO3JldHVybihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jYiE9PWV9KSkpLmxlbmd0aDwxP2RlbGV0ZSB0aGlzLl9ldmVudHNfW3RdOnRoaXMuX2V2ZW50c19bdF09bix0aGlzfSxlLmVtaXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+MT9uLTE6MCkscj0xO3I8bjtyKyspaVtyLTFdPWFyZ3VtZW50c1tyXTtpZighdGhpcy5fZXZlbnRzX1t0XSlyZXR1cm4gdGhpcy5lbWl0JC5hcHBseSh0aGlzLFt0XS5jb25jYXQoaSkpO3ZhciBvPXRoaXMuX2V2ZW50c19bdF0scz1bXTtyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmNiLmFwcGx5KGUsaSksdC5vbmNlJiZzLnB1c2godCl9KSkscy5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZS5vZmYodCxuLmNiKX0pKSx0aGlzLmVtaXQkLmFwcGx5KHRoaXMsW3RdLmNvbmNhdChpKSl9LGUuZW1pdCQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4+MT9uLTE6MCkscj0xO3I8bjtyKyspaVtyLTFdPWFyZ3VtZW50c1tyXTtpZighdGhpcy5fZXZlbnRzX1tcIipcIl0pcmV0dXJuIHRoaXM7dmFyIG89dGhpcy5fZXZlbnRzX1tcIipcIl07cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI7cmV0dXJuKHI9bi5jYikuY2FsbC5hcHBseShyLFtlLHRdLmNvbmNhdChpKSl9KSksdGhpc30sdH0oKSksaXM9XCJ2aXNpYmxlXCIscnM9XCJoaWRkZW5cIixvcz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fbmFtZT1cInZpc2hlbHBlclwiLHRoaXMuX2JJbml0ZWQ9ITEsdGhpcy5faXNEb2NIaWRkZW49ITEsdGhpcy5faGlkZGVuU3RhcnRUaW1lPTB9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuaW5pdD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYodm9pZCAwPT09ZSYmKGU9d2luZG93LmRvY3VtZW50KSwhdGhpcy5fYkluaXRlZCl7dGhpcy5fZG9jPWU7dmFyIGk9Tm8odGhpcy5fZG9jLFwiaGlkZGVuXCIpO3RoaXMuX2hpZGRlblByb3A9TW8odGhpcy5fZG9jLFwiaGlkZGVuXCIpLHRoaXMuX3Zpc1N0YXRlPU1vKHRoaXMuX2RvYyxcInZpc2liaWxpdHlTdGF0ZVwiKTt2YXIgcj1pK1widmlzaWJpbGl0eWNoYW5nZVwiO3RoaXMuX2RvYy5hZGRFdmVudExpc3RlbmVyJiYodGhpcy5fZG9jLmFkZEV2ZW50TGlzdGVuZXIociwoZnVuY3Rpb24oKXtuLl9wdWJsaXNoU3RhdGUobi5nZXRWaXNpYmlsaXR5U3RhdGUoKSE9PWlzKX0pLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLChmdW5jdGlvbigpe24uX3B1Ymxpc2hTdGF0ZSghMSl9KSwhMSksdC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLChmdW5jdGlvbigpe24uX3B1Ymxpc2hTdGF0ZSghMCl9KSwhMSkpLHRoaXMuX2JJbml0ZWQ9ITB9fSxlLmdldFZpc2liaWxpdHlTdGF0ZT1mdW5jdGlvbigpe3ZhciB0PU1vKHRoaXMuX2RvYyxcInZpc2liaWxpdHlTdGF0ZVwiKTtyZXR1cm4gR3IodGhpcy5fZG9jW3RoaXMuX3Zpc1N0YXRlXSk/dGhpcy5fZG9jW3RdOkdyKHRoaXMuX2RvY1t0aGlzLl9oaWRkZW5Qcm9wXSkmJnRoaXMuX2RvY1t0aGlzLl9oaWRkZW5Qcm9wXT9yczppc30sZS5pc0RvY0hpZGRlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0RvY0hpZGRlbn0sZS5pc0hpZGRlbkZvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0RvY0hpZGRlbj9NYXRoLmZsb29yKChEYXRlLm5vdygpLXRoaXMuX2hpZGRlblN0YXJ0VGltZSkvMWUzKTowfSxlLl9wdWJsaXNoU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5faXNEb2NIaWRkZW49dCx0JiYodGhpcy5faGlkZGVuU3RhcnRUaW1lPURhdGUubm93KCkpLGJvKHRoaXMuX25hbWUrXCIgRVZUOiBjaGFuZ2VkIHRvIFwiKyh0P1wiaGlkZGVuXCI6XCJ2aXNpYmxlXCIpKSxucy5lbWl0KFwidmlzaWJpbGl0eWNoYW5nZVwiLHQpfSx0fSgpKSxzcz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fY29uZmlnPXtleGNsdWRlTGlzdDpbXSxwb3NpdGlvbnM6W10sZGVsYXk6MCxkdXJhdGlvbkVuZDotMSxvbmx5QWN0aXZlUGFnZTohMSxwZXJjZW50YWdlSW5WaWV3UG9ydDowfSx0aGlzLl9kZWZDb25maWc9e29ubHlBY3RpdmVQYWdlOiExLHBlcmNlbnRhZ2VJblZpZXdQb3J0OjB9LHRoaXMuX3BhZ2VTdGFydD0wLHRoaXMuX3RpZFJvdGF0ZT11bmRlZmluZWQsdGhpcy5fZ2V0QWRzQ0I9enIsdGhpcy5fZ2V0QWRzQ0JDeHQ9dW5kZWZpbmVkLHRoaXMuX2xhc3RBZFJvdGF0aW9uVGltZT0wLHRoaXMuX2RvYz1kb2N1bWVudCx0aGlzLl93aW49d2luZG93fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmluaXQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7dGhpcy5fZG9jPWUsdGhpcy5fd2luPXQsdGhpcy5fY29uZmlnLm9ubHlBY3RpdmVQYWdlPXRoaXMuX2RlZkNvbmZpZy5vbmx5QWN0aXZlUGFnZSx0aGlzLl9jb25maWcucGVyY2VudGFnZUluVmlld1BvcnQ9dGhpcy5fZGVmQ29uZmlnLnBlcmNlbnRhZ2VJblZpZXdQb3J0LG9zLmluaXQodCxlKSxucy5vbihcInZpc2liaWxpdHljaGFuZ2VcIiwoZnVuY3Rpb24odCl7aS5fY29uZmlnLm9ubHlBY3RpdmVQYWdlJiYhdCYmaS5fdHJpZ2dlckFmdGVyUGFnZUlzQWN0aXZlKCl9KSl9LGUudXBkYXRlQ29uZmlnPWZ1bmN0aW9uKHQpe3RoaXMuX2NvbmZpZy5kZWxheT10LmR1cmF0aW9uLHRoaXMuX2NvbmZpZy5kdXJhdGlvbkVuZD10LmR1cmF0aW9uRW5kfHwtMSx0aGlzLl9jb25maWcucG9zaXRpb25zPSh0LnBvc2l0aW9uc3x8XCJcIikuc3BsaXQoXCIsXCIpLHRoaXMuX2NvbmZpZy5leGNsdWRlTGlzdD1Bbyh0LmV4Y2x1ZGUpLHRoaXMuX2NvbmZpZy5vbmx5QWN0aXZlUGFnZT10Lm9ubHlBY3RpdmVQYWdlfHx0aGlzLl9kZWZDb25maWcub25seUFjdGl2ZVBhZ2UsdGhpcy5fY29uZmlnLnBlcmNlbnRhZ2VJblZpZXdQb3J0PXQucGVyY2VudGFnZUluVmlld1BvcnR8fHRoaXMuX2RlZkNvbmZpZy5wZXJjZW50YWdlSW5WaWV3UG9ydCxlcy5zZXRSb3RhdGlvbkxpc3QodGhpcy5nZXRQb3NpdGlvbnMoKSl9LGUuc2V0UGFnZVN0YXJ0PWZ1bmN0aW9uKCl7dGhpcy5fcGFnZVN0YXJ0PShuZXcgRGF0ZSkuZ2V0VGltZSgpfSxlLnNldExhc3RSb3RhdGlvblRpbWU9ZnVuY3Rpb24oKXt0aGlzLl9sYXN0QWRSb3RhdGlvblRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCl9LGUuc2V0R2V0QWRzQ0I9ZnVuY3Rpb24odCxlKXt0aGlzLl9nZXRBZHNDQj10LHRoaXMuX2dldEFkc0NCQ3h0PWV9LGUuX2dldEFkUm90YXRpb25MaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIGVvKENvLmdldFBhZ2VQb3NpdGlvbnModW5kZWZpbmVkLHVuZGVmaW5lZCwhMCksdGhpcy5fY29uZmlnLnBvc2l0aW9ucyl9LGUuX3Nob3VsZFJvdGF0ZT1mdW5jdGlvbigpe3JldHVybiEodGhpcy5fY29uZmlnLmR1cmF0aW9uRW5kPD0wKSYmKCEodGhpcy5fcGFnZVN0YXJ0PjAmJnRoaXMuX2NvbmZpZy5kdXJhdGlvbkVuZD4wJiYobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLl9wYWdlU3RhcnQ+MWUzKnRoaXMuX2NvbmZpZy5kdXJhdGlvbkVuZCkmJnRoaXMuX2NvbmZpZy5kZWxheT4wJiYhRG8oQ28uZ2V0UGFnZU5hbWUoKSx0aGlzLl9jb25maWcuZXhjbHVkZUxpc3QpJiZ0aGlzLl9nZXRBZFJvdGF0aW9uTGlzdCgpLmxlbmd0aD4wKX0sZS5fcm90YXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLl90aWRSb3RhdGU9dW5kZWZpbmVkLHRoaXMuX2NvbmZpZy5vbmx5QWN0aXZlUGFnZSYmb3MuaXNEb2NIaWRkZW4oKSlibyhcIlNraXAgcm90YXRpb24gYXMgcGFnZSBpcyBoaWRkZW5cIik7ZWxzZXt2YXIgZT10aGlzLl9nZXRBZFJvdGF0aW9uTGlzdCgpO2lmKHRoaXMuX2NvbmZpZy5wZXJjZW50YWdlSW5WaWV3UG9ydD4wKXt2YXIgbj1lLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZXMuZ2V0QWRDb250YWluZXJJbmZvKGUsITApO3JldHVybiBUbyh0Ll9kb2Msbi5jSUQpPj10Ll9jb25maWcucGVyY2VudGFnZUluVmlld1BvcnR9KSksaT1ubyhlLG4pO2kubGVuZ3RoJiZibyhcIlNraXAgcm90YXRpb24gZm9yIFwiK2kuam9pbihcIixcIikrXCIgYXMgaXQncyBsZXNzIHRoYW4gXCIrdGhpcy5fY29uZmlnLnBlcmNlbnRhZ2VJblZpZXdQb3J0K1wiIHZpZXdwb3J0XCIpLGU9bn1lLmxlbmd0aD4wJiZudWxsIT09dGhpcy5fZ2V0QWRzQ0ImJldyKHRoaXMuX2dldEFkc0NCKT8oYm8oXCJSb3RhdGluZyBhZHMgXCIrZS5qb2luKFwiLFwiKSksdGhpcy5fZ2V0QWRzQ0IuY2FsbCh0aGlzLl9nZXRBZHNDQkN4dCxDby5nZXRQYWdlTmFtZSgpLGUsITEsITApKTp0aGlzLnRyaWdnZXIoKX19LGUuX3RyaWdnZXJBZnRlclBhZ2VJc0FjdGl2ZT1mdW5jdGlvbigpe3ZhciB0PShuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuX2xhc3RBZFJvdGF0aW9uVGltZTt0PjFlMyp0aGlzLl9jb25maWcuZGVsYXkmJih0PTEsdGhpcy50cmlnZ2VyKHQpKX0sZS50cmlnZ2VyPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQmJih0PTApLCghdGhpcy5fY29uZmlnLm9ubHlBY3RpdmVQYWdlfHwhb3MuaXNEb2NIaWRkZW4oKSkmJnRoaXMuX3Nob3VsZFJvdGF0ZSgpKXt0aGlzLmNsZWFyKCk7dmFyIGU9MWUzKnRoaXMuX2NvbmZpZy5kZWxheTtZcih0KSYmdD4wJiYoZT10KTt2YXIgbj10aGlzO3RoaXMuX3RpZFJvdGF0ZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuLl9yb3RhdGUoKX0pLGUpfX0sZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX3RpZFJvdGF0ZSYmKGNsZWFyVGltZW91dCh0aGlzLl90aWRSb3RhdGUpLHRoaXMuX3RpZFJvdGF0ZT11bmRlZmluZWQpfSxlLmdldFBvc2l0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb25maWcucG9zaXRpb25zfSx0fSgpKSxhcz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fcXVldWU9W10sdGhpcy5fZGVmQ29uZmlnPXtkZWxheToxZTMsc3luY3NQZXJCaWRkZXI6NSxlbmFibGVVc2VyU3luYzohMSxhbGxvd2VkU3luY1R5cGVzOltdfSx0aGlzLl9zeW5jQ291bnRQZXJCaWRkZXI9e30sdGhpcy5fc3luY0NvbnRhaW5lcklkPVwic2YtXCIrcW8oKSx0aGlzLl9wcm9jZXNzb3I9e2ltYWdlOnRoaXMuX2ZpcmVJbWFnZVBpeGVsLGlmcmFtZTp0aGlzLl9sb2FkSWZyYW1lfX12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS51cGRhdGVTZXR0aW5ncz1mdW5jdGlvbih0KXt0PXR8fHt9LHRoaXMuX2NvbmZpZz1vbyghMCx7fSx0aGlzLl9kZWZDb25maWcsdCl9LGUuaGFuZGxlVXNlclN5bmM9ZnVuY3Rpb24odCl7aWYodGhpcy5pc1VzZXJTeW5jRW5hYmxlZCgpKXt2YXIgZT10LmZsYXRNYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVzZXJTeW5jKCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmtleXModCkubGVuZ3RoPjAmJnQudHlwZSYmdC50eXBlLmxlbmd0aD4wJiZ0LnVybCYmdC51cmwubGVuZ3RofSkpO2UubGVuZ3RoJiZ0aGlzLl9xdWV1ZVN5bmNzKGUpfX0sZS5pc1VzZXJTeW5jRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb25maWcuZW5hYmxlVXNlclN5bmN9LGUuX3F1ZXVlU3luY3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWVvKE9iamVjdC5rZXlzKHRoaXMuX3Byb2Nlc3NvciksdGhpcy5fY29uZmlnLmFsbG93ZWRTeW5jVHlwZXMpO3RoaXMuX3F1ZXVlPXQuZmlsdGVyKChmdW5jdGlvbih0KXt2YXIgZT1uLmluY2x1ZGVzKHQudHlwZSk7cmV0dXJuIGV8fGJvKFwiVXNlclN5bmMgdHlwZSBcIit0LnR5cGUrXCIgaXMgbm90IGFsbG93ZWQgZm9yIFwiK3QubmFtZSksZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBuPWUuX3N5bmNDb3VudFBlckJpZGRlclt0Lm5hbWVdfHwwLGk9bjxlLl9jb25maWcuc3luY3NQZXJCaWRkZXI7cmV0dXJuIGk/ZS5fc3luY0NvdW50UGVyQmlkZGVyW3QubmFtZV09bisxOmJvKFwiVXNlclN5bmMgY291bnQgcmVhY2hlZCBsaW1pdCBmb3IgXCIrdC5uYW1lKSxpfSkpLHRoaXMuX3F1ZXVlLmxlbmd0aCYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5maXJlU3luYygpfSksdGhpcy5fY29uZmlnLmRlbGF5KX0sZS5fY3JlYXRlQW5kQ2xlYW5Db250YWluZXI9ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cuZG9jdW1lbnQsZT10LmdldEVsZW1lbnRCeUlkKHRoaXMuX3N5bmNDb250YWluZXJJZCk7cmV0dXJuIGV8fCgoZT10LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLnNldEF0dHJpYnV0ZShcImlkXCIsdGhpcy5fc3luY0NvbnRhaW5lcklkKSx0LmJvZHkmJnQuYm9keS5hcHBlbmRDaGlsZChlKSksVW8odCxlLFwiXCIpLGV9LGUuZmlyZVN5bmM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RyeXt2YXIgZT10aGlzLl9jcmVhdGVBbmRDbGVhbkNvbnRhaW5lcigpO3RoaXMuX3F1ZXVlLmZvckVhY2goKGZ1bmN0aW9uKG4pe3QuX3Byb2Nlc3NvcltuLnR5cGVdLmNhbGwodCxlLG4pfSkpfWNhdGNoKHRhKXt3byhcIkVycm9yIGZpcmluZyB1c2VyIHN5bmNzOiBcIit0YSl9dGhpcy5fcXVldWUubGVuZ3RoPTB9LGUuX2ZpcmVJbWFnZVBpeGVsPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5uYW1lLGk9ZS51cmwscj1uZXcgSW1hZ2U7ci5zcmM9aSx0LmFwcGVuZENoaWxkKHIpLGJvKFwiSW52b2tpbmcgaW1hZ2UgcGl4ZWwgdXNlciBzeW5jIGZvciBiaWRkZXI6IFwiK24pfSxlLl9sb2FkSWZyYW1lPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5uYW1lLGk9ZS51cmwscj1uK1wiLXNmLVwiK3FvKCksbz16byh3aW5kb3cuZG9jdW1lbnQsciwwLDAsaSk7by5zZXRBdHRyaWJ1dGUoXCJkaXNwbGF5XCIsXCJub25lXCIpLHQuYXBwZW5kQ2hpbGQobyksYm8oXCJJbnZva2luZyBpZnJhbWUgdXNlciBzeW5jIGZvciBiaWRkZXI6IFwiK24pfSx0fSgpKTtmdW5jdGlvbiB1cyh0KXtyZXR1cm4gdD10fHxbXSxQcm9taXNlLmFsbCh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudGhlbigoZnVuY3Rpb24odCl7cmV0dXJue3N0YXRlOlwiZnVsZmlsbGVkXCIscmVhc29uOlwiXCIsdmFsdWU6dH19KSwoZnVuY3Rpb24odCl7cmV0dXJue3N0YXRlOlwicmVqZWN0ZWRcIixyZWFzb246dCx2YWx1ZTpcIlwifX0pKX0pKSl9ZnVuY3Rpb24gY3ModCxlLG4saSxyLG8pe3ZhciBzLGE7aWYodm9pZCAwPT09dCYmKHQ9XCJcIiksdm9pZCAwPT09biYmKG49d2luZG93LmRvY3VtZW50KSx2b2lkIDA9PT1pJiYoaT0wKSx2b2lkIDA9PT1yJiYodm9pZCAwPT09YSYmKGE9d2luZG93KSxyPWEubG9jYXRpb24uaG9zdC5zcGxpdChcIi5cIikuc2xpY2UoLTIpLmpvaW4oXCIuXCIpKSx2b2lkIDA9PT1vJiYobz1cIi9cIiksKHQ9dHx8XCJcIikubGVuZ3RoKXt2YXIgdT1uZXcgRGF0ZTtpPTFlMyooaXx8MzE1MzZlMyksdS5zZXRUaW1lKHUuZ2V0VGltZSgpK2kpO3ZhciBjPSgocz17fSlbdF09ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlKSkscy5leHBpcmVzPXUudG9VVENTdHJpbmcoKSxzLnBhdGg9byxzLmRvbWFpbj1yLHMpO24uY29va2llPU9iamVjdC5lbnRyaWVzKGMpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuam9pbihcIj1cIil9KSkuam9pbihcIjtcIil9fWZ1bmN0aW9uIGRzKHQsZSl7dm9pZCAwPT09dCYmKHQ9XCJcIiksdm9pZCAwPT09ZSYmKGU9d2luZG93LmRvY3VtZW50KTt2YXIgbj1cIlwiO2lmKHQubGVuZ3RoPjAmJmUuY29va2llKXt2YXIgaT1lLmNvb2tpZS5tYXRjaChcIihefDspXFxcXHMqXCIrdCtcIlxcXFxzKj1cXFxccyooW147XSopXFxcXHMqKDt8JClcIil8fFtdO2kubGVuZ3RoPj0zJiYobj1kZWNvZGVVUklDb21wb25lbnQoaVsyXSkpfXJldHVybiBufXZhciBmcz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3RvcmFnZT13aW5kb3cubG9jYWxTdG9yYWdlLHRoaXMuX2lzU3VwcG9ydGVkPXRoaXMuX2RldGVjdCgpJiZFbygpLHRoaXMuX2V4cGlyeT04NjRlNX12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5fZ2V0Q29uZmlnTmFtZT1mdW5jdGlvbih0KXtyZXR1cm5cIl9fY29uZmlnX1wiK3R9LGUuc3RvcmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXRoaXMuX2lzU3VwcG9ydGVkJiYodGhpcy5fc3RvcmFnZS5zZXRJdGVtKHQsZSksITApfSxlLnN0b3JlQ29uZmlnPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2lzU3VwcG9ydGVkKXJldHVybiExO3ZhciBuPW9vKCEwLHt9LHQse19fdmVyc2lvbjpcIjMuMS4zXCIsX191cGRhdGVUaW1lOkRhdGUubm93KCl9KTtyZXR1cm4gdGhpcy5zdG9yZSh0aGlzLl9nZXRDb25maWdOYW1lKGUpLEpTT04uc3RyaW5naWZ5KG4pKX0sZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkJiZ0aGlzLl9zdG9yYWdlLmdldEl0ZW0odCl8fFwiXCJ9LGUuZ2V0Q29uZmlnPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9pc1N1cHBvcnRlZClyZXR1cm57ZXhwaXJlZDohMCxkYXRhOnt9LHVwZGF0ZWRUaW1lOjB9O3ZhciBlPXRoaXMuZ2V0KHRoaXMuX2dldENvbmZpZ05hbWUodCkpfHxcInt9XCIsbj1Qbyh3aW5kb3csZSksaT0hKG4mJlwiX192ZXJzaW9uXCJpbiBuJiZcIjMuMS4zXCI9PT1uLl9fdmVyc2lvbik7cmV0dXJue2V4cGlyZWQ6aXx8IShuJiZcIl9fdXBkYXRlVGltZVwiaW4gbiYmbi5fX3VwZGF0ZVRpbWUrdGhpcy5fZXhwaXJ5PkRhdGUubm93KCkpLGRhdGE6aT97fTpuLHVwZGF0ZWRUaW1lOm4mJlwiX191cGRhdGVUaW1lXCJpbiBuP24uX191cGRhdGVUaW1lOjB9fSxlLl9kZXRlY3Q9ZnVuY3Rpb24oKXt2YXIgdD1cInN0b3JhZ2V0ZXN0XCI7dHJ5e3JldHVybiB0aGlzLl9zdG9yYWdlLnNldEl0ZW0odCx0KSx0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0odCksITB9Y2F0Y2godGEpe3JldHVybiExfX0sZS5yZW1vdmU9ZnVuY3Rpb24odCl7dD10fHxcIlwiLHRoaXMuZ2V0KHQpLmxlbmd0aCYmdGhpcy5fc3RvcmFnZS5yZW1vdmVJdGVtKHQpfSx0fSgpKSxocz1cIlwiO2Z1bmN0aW9uIGxzKCl7ZnMucmVtb3ZlKFwiX3B1YmNpZFwiKSxmdW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PVwiXCIpLHZvaWQgMD09PWUmJihlPXdpbmRvdy5kb2N1bWVudCk7dmFyIG49ZHModD10fHxcIlwiLGUpO24ubGVuZ3RoJiZjcyh0LG4sZSwtMSl9KFwiX3B1YmNpZFwiKSxocz1cIlwifWZ1bmN0aW9uIGdzKCl7dmFyIHQ9XCJcIjtpZihkcyhcIl9wdWJjaWRfb3B0b3V0XCIpLmxlbmd0aD4wKXJldHVybiBscygpLHQ7aWYoaHMmJmhzLmxlbmd0aClyZXR1cm4gaHM7dmFyIGU9ZnMuZ2V0KFwiX3B1YmNpZFwiKSxuPWRzKFwiX3B1YmNpZFwiKTtyZXR1cm4gbi5sZW5ndGg/dD1uOmUubGVuZ3RoP2NzKFwiX3B1YmNpZFwiLHQ9ZSk6KHQ9Vm8oKSxmcy5zdG9yZShcIl9wdWJjaWRcIix0KSxjcyhcIl9wdWJjaWRcIix0KSksaHM9dCx0fXZhciBwcz0wLF9zPTEsbXM9LTEsdnM9LTIseXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX25hbWU9dCx0aGlzLl9iSW5pdGVkPXBzLHRoaXMuX2luaXRDaGVjaz17Y29udGV4dDp7fSxvYmo6XCJcIixmdW5jOlwiXCJ9LHRoaXMuX0RlZkNvbmZpZz17cG9zaXRpb25zOltdLGV4Y2x1ZGU6XCJcIixjVmFyOlwiXCIsdGltZW91dDoyZTMscG9zVG9rZW5NYXA6e30sc2NyaXB0OlwiXCIsaW5pdFRpbWVvdXQ6MWUzLGJpZFVybDpcIlwiLGJlYWNvblVybDpcIlwiLGVuYWJsZVVzZXJTeW5jOiExLHN5bmNVcmw6XCJcIix1c2VCaWRDYWNoZTohMSx0dGw6MzAwLGVuYWJsZUNvbW1vbklkOiExfSx0aGlzLl9jb25maWc9b28oITAse30sdGhpcy5fRGVmQ29uZmlnKSx0aGlzLl9leGNsdWRlTGlzdD1bXSx0aGlzLl9tYW5kYXRvcnlDb25maWdzPVtdLHRoaXMuX3Bvc0lkPVwiaWRcIix0aGlzLl9iaWRSZXNwb25zZXM9e30sdGhpcy5fcmVuZGVyVHlwZT1cImh0bWxcIix0aGlzLl9yZW5kZXJGdW5jPXpyLHRoaXMuX2lzU3VwcG9ydGVkPSEwLHRoaXMuX2JpZFByaWNlRGlzY291bnQ9MSx0aGlzLl9lbmFibGVSZXBvcnRpbmc9ITAsdGhpcy5fYmVhY29uVXJsSWQ9XCJcIix0aGlzLl9jYWNoZWRCaWRzPXt9fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmFtZX0sZS5nZXRCaWRQb3NpdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuX2lzU3VwcG9ydGVkfHxEbyh0LHRoaXMuX2V4Y2x1ZGVMaXN0KT9bXTp0aGlzLl9jb25maWcucG9zaXRpb25zfSxlLnVwZGF0ZUNvbmZpZz1mdW5jdGlvbih0KXt0aGlzLl9jb25maWc9b28oITAse30sdGhpcy5fRGVmQ29uZmlnLHQpLHRoaXMuX2JpZFByaWNlRGlzY291bnQ9KDEwMC0odGhpcy5fY29uZmlnLmJpZERpc2NvdW50fHwwKSkvMTAwLHRoaXMuX2V4Y2x1ZGVMaXN0PUFvKHRoaXMuX2NvbmZpZy5leGNsdWRlKSx0aGlzLl9wb3N0VXBkYXRlQ29uZmlnKCl9LGUuX3Bvc3RVcGRhdGVDb25maWc9ZnVuY3Rpb24oKXt9LGUuZ2V0UVBLZXk9ZnVuY3Rpb24odCl7cmV0dXJuIEtyKHRoaXMuX2NvbmZpZy5wb3NUb2tlbk1hcFt0XSkmJnRoaXMuX2NvbmZpZy5wb3NUb2tlbk1hcFt0XS5xcEtleT90aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF0ucXBLZXk6dGhpcy5fY29uZmlnLnFwS2V5fHxcIlwifSxlLmdldFBvc0tleT1mdW5jdGlvbih0KXtyZXR1cm4gS3IodGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdKT90aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF1bdGhpcy5fcG9zSWRdOlwiXCJ9LGUuZ2V0TGluZUlkPWZ1bmN0aW9uKHQpe3JldHVybiBLcih0aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF0pP3RoaXMuX2NvbmZpZy5wb3NUb2tlbk1hcFt0XS5saW5lSWQ6XCJcIn0sZS5nZXRDVmFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5jVmFyfSxlLl9wcmVJbml0PWZ1bmN0aW9uKCl7cmV0dXJuIF9zfSxlLl9wb3N0SW5pdD1mdW5jdGlvbigpe3JldHVybiBfc30sZS5fY29uZmlnQ2hlY2s9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fbWFuZGF0b3J5Q29uZmlncy5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29uY2F0KHQuX2NvbmZpZ1tuXS5sZW5ndGg/W106bil9KSxbXSk7aWYoZS5sZW5ndGgpcmV0dXJuIHdvKHRoaXMuX25hbWUrXCIgY29uZmlnIGVycm9yOiBtaXNzaW5nIFwiK2Uuam9pbihcIixcIikpLG1zO2lmKCFLcih0aGlzLl9jb25maWcucG9zVG9rZW5NYXApKXJldHVybiB3byh0aGlzLl9uYW1lK1wiIGNvbmZpZyBlcnJvcjogbWlzc2luZyBwb3NUb2tlbk1hcFwiKSxtczt2YXIgbj10aGlzLl9jb25maWcucG9zaXRpb25zLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIXQuX2NvbmZpZy5wb3NUb2tlbk1hcFtlXX0pKTtyZXR1cm4gbi5sZW5ndGg/KHdvKHRoaXMuX25hbWUrXCIgY29uZmlnIGVycm9yOiBtaXNzaW5nIHBvc2l0aW9ucyBpbiBwb3NUb2tlbk1hcCBcIituLmpvaW4oXCIsXCIpKSxtcyk6KG49dGhpcy5fY29uZmlnLnBvc2l0aW9ucy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiF0LmdldExpbmVJZChlKX0pKSkubGVuZ3RoPyh3byh0aGlzLl9uYW1lK1wiIGNvbmZpZyBlcnJvcjogbWlzc2luZyBsaW5lSWQgaW4gcG9zVG9rZW5NYXAgXCIrbi5qb2luKFwiLFwiKSksbXMpOl9zfSxlLl9leHRlcm5hbFNjcmlwdENoZWNrPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faW5pdENoZWNrLGU9dC5jb250ZXh0LG49dC5mdW5jLGk9dm9pZCAwPT09bj9cIlwiOm4scj10Lm9iaixvPXZvaWQgMD09PXI/XCJcIjpyO3JldHVybiEoZT09PXdpbmRvd3x8S3IoZSkpfHwkcihvKSYmby5sZW5ndGg+MCYmIUtyKGVbb10pfHwkcihpKSYmaS5sZW5ndGg+MCYmIVdyKGVbaV0pP21zOl9zfSxlLl9pbml0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLl9iSW5pdGVkPT09dnMpe3ZhciBlPXRoaXMuX2V4dGVybmFsU2NyaXB0Q2hlY2soKTtyZXR1cm4gZT09PW1zPyh3byh0aGlzLl9uYW1lK1wiIF9leHRlcm5hbFNjcmlwdENoZWNrIGZhaWxlZFwiKSx0aGlzLl9iSW5pdGVkPWUsUHJvbWlzZS5yZWplY3QoKSk6KHRoaXMuX2JJbml0ZWQ9ZT09PV9zP3RoaXMuX3Bvc3RJbml0KCk6ZSxQcm9taXNlLnJlc29sdmUoKSl9aWYodGhpcy5fYkluaXRlZD09PV9zKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZih0aGlzLl9iSW5pdGVkPT09bXMpcmV0dXJuIFByb21pc2UucmVqZWN0KCk7aWYodGhpcy5fY29uZmlnQ2hlY2soKT09PW1zKXJldHVybiB0aGlzLl9iSW5pdGVkPW1zLFByb21pc2UucmVqZWN0KCk7aWYodGhpcy5fcHJlSW5pdCgpPT09bXMpcmV0dXJuIHdvKHRoaXMuX25hbWUrXCIgcHJlSW5pdCBmYWlsZWRcIiksdGhpcy5fYkluaXRlZD1tcyxQcm9taXNlLnJlamVjdCgpO3RoaXMuX2NvbmZpZy5iZWFjb25VcmwubGVuZ3RoJiZTbyh0aGlzLl9jb25maWcuYmVhY29uVXJsLGRvY3VtZW50LCEwLHRoaXMuX2JlYWNvblVybElkKTt2YXIgbj1Qcm9taXNlLnJlc29sdmUoKTtyZXR1cm4gdGhpcy5fY29uZmlnLnNjcmlwdC5sZW5ndGgmJihuPW5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3ZhciBpLHIsbyxzLGEsdSxjLGQ7KGk9dC5fY29uZmlnLnNjcmlwdCxyPWRvY3VtZW50LG89ITAscz10Ll9jb25maWcuaW5pdFRpbWVvdXQsdT1TbyhpLHIsbyksYz0hMSxkPW51bGwsKGE9YXx8e30pLmNvbnRleHQ9YS5jb250ZXh0fHx3aW5kb3csYS5mdW5jPWEuZnVuY3x8XCJcIixhLm9iamVjdD1hLm9iamVjdHx8XCJcIix1P25ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj1pK1wiIHNjcmlwdCBsb2FkaW5nIGZhaWxlZCBcIisoZD9cIjogdGltZW91dFwiOlwiXCIpO3JldHVybiBhLmZ1bmMubGVuZ3RofHxhLm9iamVjdC5sZW5ndGg/YS5mdW5jLmxlbmd0aCYmIVdyKGEuY29udGV4dFthLmZ1bmNdKXx8YS5vYmplY3QubGVuZ3RoJiYhS3IoYS5jb250ZXh0W2Eub2JqZWN0XSk/KHdvKG4rXCIgOmNvbnRleHQgY2hlY2sgZmFpbGVkXCIpLGUobikpOnQoKTpkPyh3byhuKSxlKG4pKTp0KCl9dT8oZD1zZXRUaW1lb3V0KG4scyksdS5vbmxvYWQ9dS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZighKGN8fHRoaXMucmVhZHlTdGF0ZSYmXCJsb2FkZWRcIiE9PXRoaXMucmVhZHlTdGF0ZSYmXCJjb21wbGV0ZVwiIT09dGhpcy5yZWFkeVN0YXRlKSl7aWYoYz0hMCxkJiYoY2xlYXJUaW1lb3V0KGQpLGQ9bnVsbCksbigpLCF1KXJldHVybjt1Lm9ubG9hZD1udWxsLHUub25yZWFkeXN0YXRlY2hhbmdlPW51bGx9fSk6ZShcIlNjcmlwdCBsb2FkaW5nIGZhaWxlZCBcIitpKX0pKTpQcm9taXNlLnJlamVjdChcIlNjcmlwdCBsb2FkaW5nIGZhaWxlZCBcIitpKSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdC5fZXh0ZXJuYWxTY3JpcHRDaGVjaygpPT09X3M/ZSgpOih0Ll9iSW5pdGVkPXZzLHdvKHQuX25hbWUrXCIgX2V4dGVybmFsU2NyaXB0Q2hlY2sgZmFpbGVkXCIpLG4oKSksdC5fYkluaXRlZH0pLChmdW5jdGlvbigpe3QuX2JJbml0ZWQ9dnMsbigpfSkpfSkpKSxuLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuX2JJbml0ZWQ9dC5fcG9zdEluaXQoKSxibyh0Ll9uYW1lK1wiIEluaXQgaXMgZG9uZS4gZ2V0dGluZyBhZCBiaWRzXCIpLHQuX2JJbml0ZWR9KSl9LGUuX2dldEFkcz1mdW5jdGlvbih0LGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9LGUuX2dldFVzZXJTeW5jPWZ1bmN0aW9uKCl7cmV0dXJuW119LGUuZ2V0VXNlclN5bmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1N5bmNVc2VyRW5hYmxlZCgpP3RoaXMuX2dldFVzZXJTeW5jKCk6W119LGUuaXNTeW5jVXNlckVuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29uZmlnLmVuYWJsZVVzZXJTeW5jfSxlLmdldEJpZHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBibyh0aGlzLl9uYW1lK1wiIGdldHRpbmcgYmlkcyBmb3IgXCIrdC5qb2luKFwiLFwiKSksdGhpcy5faW5pdCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2dldEFkcyh0LGUpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIG4uX3VzZUNhY2hlZEJpZCh0KX0pKX0sZS5fcHJlUmVuZGVyQWQ9ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLl9jbGVhckNhY2hlZEJpZChuKX0sZS5fcmVuZGVyQWQ9ZnVuY3Rpb24odCxlLG4saSxyKXt0cnl7aWYoYm8oXCJSZW5kZXJpbmcgYWQgaW4gcG9zaXRpb24gXCIrbitcIiBmb3IgcGFydG5lciBcIit0aGlzLl9uYW1lKSxcImZ1bmNcIj09PXRoaXMuX3JlbmRlclR5cGUpdGhpcy5fcmVuZGVyRnVuYy5jYWxsKHdpbmRvdyxlLGkpO2Vsc2UgaWYoXCJodG1sXCI9PT10aGlzLl9yZW5kZXJUeXBlKXt2YXIgbz10aGlzLl9iaWRSZXNwb25zZXNbaV07ZS53cml0ZShvLmFkKSxvLm51cmwmJm8ubnVybC5sZW5ndGgmJmUud3JpdGUoJzxpbWcgc3JjPVwiJytvLm51cmwrJ1wiPicpfWVsc2UgaWYoXCJpZnJhbWVcIj09PXRoaXMuX3JlbmRlclR5cGUpe3ZhciBzPXIud2lkdGgsYT1yLmhlaWdodCx1PXpvKGUsdGhpcy5fbmFtZStcIi1cIitpLHMsYSx0aGlzLl9iaWRSZXNwb25zZXNbaV0uYWQpO2UuYm9keSYmZS5ib2R5LmFwcGVuZENoaWxkKHUpfWVsc2Ugd28odGhpcy5fbmFtZStcIiBcIituK1wiIHJlbmRlciBhZCBpbnZhbGlkIHJlbmRlciB0eXBlXCIpfWNhdGNoKHRhKXt3byh0aGlzLl9uYW1lK1wiIFwiK24rXCIgcmVuZGVyIGFkIGZhaWx1cmUgXCIrdGEubWVzc2FnZSl9fSxlLnJlbmRlckFkPWZ1bmN0aW9uKHQsZSxuLGkscil7dGhpcy5fcHJlUmVuZGVyQWQodCxlLG4saSxyKSx0aGlzLl9yZW5kZXJBZCh0LGUsbixpLHIpfSxlLl9pc1ZhbGlkUlRCUmVzcG9uc2U9ZnVuY3Rpb24odCl7cmV0dXJuISEoS3IodCkmJkpyKHQuc2VhdGJpZCkmJnQuc2VhdGJpZC5sZW5ndGg+MCYmSnIodC5zZWF0YmlkWzBdLmJpZCkmJnQuc2VhdGJpZFswXS5iaWQubGVuZ3RoKX0sZS5faXNCaWRDYWNoaW5nRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb25maWcudXNlQmlkQ2FjaGV9LGUuX2NsZWFyQ2FjaGVkQmlkPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PVwiXCIpLHQubGVuZ3RoPjAmJnRoaXMuX2lzQmlkQ2FjaGluZ0VuYWJsZWQoKSYmdGhpcy5fY2FjaGVkQmlkc1t0XSYmKGJvKHRoaXMuX25hbWUrXCIgY2xlYXJpbmcgY2FjaGVkIGJpZCBmb3IgXCIrdCksZGVsZXRlIHRoaXMuX2NhY2hlZEJpZHNbdF0pfSxlLl9pc0NhY2hlZEJpZEV4cGlyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10PjFlMyp0aGlzLl9jb25maWcudHRsfSxlLl91cGRhdGVCaWRDYWNoZT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PXQmJih0PVwiXCIpO3ZhciBuPXZvaWQgMD09PWU/e306ZSxpPW4uYWRqdXN0ZWRQcmljZSxyPXZvaWQgMD09PWk/XCJcIjppLG89bi5jVmFyLHM9dm9pZCAwPT09bz9cIlwiOm8sYT1uLmFkLHU9dm9pZCAwPT09YT9cIlwiOmEsYz1uLm51cmwsZD12b2lkIDA9PT1jP1wiXCI6YyxmPURhdGUubm93KCk7aWYodC5sZW5ndGgmJnIubGVuZ3RoJiZzLmxlbmd0aCYmdGhpcy5faXNCaWRDYWNoaW5nRW5hYmxlZCgpKXt2YXIgaD0hMTtpZih0aGlzLl9jYWNoZWRCaWRzW3RdKXt2YXIgbD10aGlzLl9jYWNoZWRCaWRzW3RdLGc9bC50cyxwPXZvaWQgMD09PWc/MDpnLF89bC5hZGp1c3RlZFByaWNlLG09dm9pZCAwPT09Xz9cIlwiOl8sdj10aGlzLl9pc0NhY2hlZEJpZEV4cGlyZWQocCxmKSx5PU51bWJlcihtKT5OdW1iZXIocik7IXYmJnk/Ym8odGhpcy5fbmFtZStcIiBcIit0K1wiIGNhY2hlZCBiaWQgaXMgdW50b3VjaGVkIEV4cGlyZWQ6XCIrKHY/MTowKStcIiBIaWdoZXJQcmljZTpcIisoeT8xOjApK1wiIGVsYXBzZWQocyk6XCIrKGYtcCkvMWUzK1wiIHNhdmVkUHJpY2U6XCIrbStcIiBuZXdQcmljZTpcIityKTpoPSEwfWVsc2UgaD0hMDtoJiYoYm8odGhpcy5fbmFtZStcIiBcIit0K1wiIGNhY2hpbmcgYmlkIFwiK3IrXCIgXCIrcyksdGhpcy5fY2FjaGVkQmlkc1t0XT17YWRqdXN0ZWRQcmljZTpyLGNWYXI6cyxhZDp1LG51cmw6ZCx0czpmfSl9fSxlLl91c2VDYWNoZWRCaWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighdGhpcy5faXNCaWRDYWNoaW5nRW5hYmxlZCgpKXJldHVybiB0O3ZhciBuPURhdGUubm93KCk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGk9dFswXSxyPXRbMV07aWYoIWUuX2NhY2hlZEJpZHNbaV0pcmV0dXJuITE7dmFyIG89TnVtYmVyKHIud2lubmluZ0JpZC5oYl9wYikscz1lLl9jYWNoZWRCaWRzW2ldLGE9cy5hZGp1c3RlZFByaWNlLHU9cy50cztyZXR1cm4gTnVtYmVyKGEpPm8mJiFlLl9pc0NhY2hlZEJpZEV4cGlyZWQodSxuKX0pKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1uWzBdLHI9ZS5fY2FjaGVkQmlkc1tpXSxvPXIuYWRqdXN0ZWRQcmljZSxzPXIuY1ZhcixhPXIuYWQsdT1yLm51cmw7ZS5fdXBkYXRlUmVzcG9uc2VEYXRhKHQsaSxvLHMsYSx1KSxibyhlLl9uYW1lK1wiIFwiK2krXCIgdXNpbmcgQ2FjaGVkIGJpZCBcIitzK1wiIFwiK28pfSkpLHR9LGUuX3VwZGF0ZVJlc3BvbnNlRGF0YT1mdW5jdGlvbih0LGUsbixpLHIsbyl7dm9pZCAwPT09ZSYmKGU9XCJcIiksdm9pZCAwPT09biYmKG49XCJcIiksdm9pZCAwPT09aSYmKGk9XCJcIiksdm9pZCAwPT09ciYmKHI9XCJcIiksdm9pZCAwPT09byYmKG89XCJcIiksZS5sZW5ndGgmJih0W2VdLmluZm89dGhpcy5fZW5hYmxlUmVwb3J0aW5nP3RoaXMuZ2V0TGluZUlkKGUpK1wifFwiK246XCJcIix0W2VdLl9RUFt0aGlzLmdldFFQS2V5KGUpXT1uLHRbZV0uX0NWW3RoaXMuX2NvbmZpZy5jVmFyXT1pLHRbZV0ud2lubmluZ0JpZC5oYl9wYj1uLHRbZV0ud2lubmluZ0JpZC5oYl9hZGlkPWksciYmci5sZW5ndGgmJih0aGlzLl9iaWRSZXNwb25zZXNbaV09e2FkOnIsbnVybDpvfSkpfSxlLl9oYW5kbGVCaWRQb3NEYXRhPWZ1bmN0aW9uKHQsZSxuLGkscixvKXt2b2lkIDA9PT1yJiYocj1cIlwiKSx2b2lkIDA9PT1vJiYobz1cIlwiKTt2YXIgcz1TdHJpbmcodGhpcy5fYmlkUHJpY2VBZGp1c3QobikpO2JvKHRoaXMuX25hbWUrXCIgcG9zOlwiK2UrXCIgX2hhbmRsZUJpZFBvc0RhdGEgcHJpY2U6XCIrbitcIiBhZGpwcmljZTpcIitzKSx0aGlzLl91cGRhdGVSZXNwb25zZURhdGEodCxlLHMsaSxyLG8pLHRoaXMuX3VwZGF0ZUJpZENhY2hlKGUse2FkanVzdGVkUHJpY2U6cyxjVmFyOmksYWQ6cixudXJsOm99KX0sZS5nZXRCaWRGcm9tQnVja2V0TWFwPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCl9LGUuX2JpZFByaWNlQWRqdXN0PWZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlRmxvYXQodCk7cmV0dXJuIDE9PT10aGlzLl9iaWRQcmljZURpc2NvdW50fHxOdW1iZXIuaXNOYU4oZSl8fGU8PTA/dDooZSp0aGlzLl9iaWRQcmljZURpc2NvdW50KS50b0ZpeGVkKDQpfSxlLl9kb1JlcG9ydGluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmFibGVSZXBvcnRpbmd9LGUuX2lzQ29tbW9uSWRTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29uZmlnLmVuYWJsZUNvbW1vbklkfSxlLl9nZXRDb21tb25JZD1mdW5jdGlvbigpe3ZhciB0PVwiXCI7cmV0dXJuIHRoaXMuX2lzQ29tbW9uSWRTdXBwb3J0ZWQoKT90PWdzKCk6dH0sdH0oKSxicz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9XCJhOXYyXCIpLChuPXQuY2FsbCh0aGlzLGUpfHx0aGlzKS5fRGVmQ29uZmlnPW9vKCEwLHt9LG4uX0RlZkNvbmZpZyx7cHViSUQ6XCJcIixxcEtleTpcImFtel9iaWRfdjJcIixidWNrZXRNYXA6e319KSxuLl9jb25maWc9b28oITAse30sbi5fRGVmQ29uZmlnKSxuLl9tYW5kYXRvcnlDb25maWdzPVtcInNjcmlwdFwiLFwicHViSURcIl0sbi5fcmVuZGVyVHlwZT1cImZ1bmNcIixuLl9pbml0Q2hlY2s9e2NvbnRleHQ6d2luZG93LG9iajpcImFwc3RhZ1wifSxuLl9lbmFibGVSZXBvcnRpbmc9ITEsbn1YbyhlLHQpO3ZhciBuPWUucHJvdG90eXBlO3JldHVybiBuLl9wb3N0SW5pdD1mdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5hcHN0YWc7cmV0dXJuIHQuaW5pdCh7cHViSUQ6dGhpcy5fY29uZmlnLnB1YklELGJpZFRpbWVvdXQ6dGhpcy5fY29uZmlnLnRpbWVvdXR9KSx0aGlzLl9yZW5kZXJGdW5jPXQucmVuZGVySW1wLF9zfSxuLmdldEJpZEZyb21CdWNrZXRNYXA9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9U3RyaW5nKHQpLHRoaXMuX2NvbmZpZy5idWNrZXRNYXBbdF18fFwiMFwifSxuLl9wcm9jZXNzQmlkUmVzcG9uc2U9ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzO2UubGVuZ3RoPjAmJm4uaW5jbHVkZXMoXCJhbXpuYmlkXCIpJiZuLmluY2x1ZGVzKFwiYW16bmlpZFwiKT8oZS5mb3JFYWNoKChmdW5jdGlvbih0KXtvLl9oYW5kbGVCaWRQb3NEYXRhKHIsdC5zbG90SUQsdC5hbXpuYmlkLHQuYW16bmlpZCl9KSksaShyKSk6aShyKX0sbi5nZXRMaW5lSWQ9ZnVuY3Rpb24odCl7cmV0dXJuXCIxMjM0NVwifSxuLl9nZXRTbG90PWZ1bmN0aW9uKHQpe3JldHVybntzbG90SUQ6dCxzbG90TmFtZTp0aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF0uc2xvdE5hbWUsc2l6ZXM6dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLnNpemVzfX0sbi5fZ2V0QWRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3ZhciByPXdpbmRvdy5hcHN0YWc7ci5mZXRjaEJpZHMoe3Nsb3RzOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fZ2V0U2xvdCh0KX0pKX0sKGZ1bmN0aW9uKG8pe3JldHVybiBuLl9wcm9jZXNzQmlkUmVzcG9uc2UodCxvLHIudGFyZ2V0aW5nS2V5cygpLGksZSl9KSl9KSl9LGV9KHlzKSksd3M9bmV3KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG47cmV0dXJuKG49dC5jYWxsKHRoaXMsZSl8fHRoaXMpLl9tYW5kYXRvcnlDb25maWdzPVtcImJpZFVybFwiXSxuLl9iaWRSZXF1ZXN0PXtpbXBpZDp7fX0sbi5faXNTdXBwb3J0ZWQ9RW8oKSYmS28oKSxufVhvKGUsdCk7dmFyIG49ZS5wcm90b3R5cGU7cmV0dXJuIG4uX3Byb2Nlc3NCaWRSZXNwb25zZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9bi5fYmlkUmVxdWVzdC5pbXBpZFt0XSxyPW4uX2JpZFJlc3BvbnNlc1tpXTtpZihuLl9pc1ZhbGlkUlRCUmVzcG9uc2UocikmJmk9PT1yLnNlYXRiaWRbMF0uYmlkWzBdLmltcGlkKXt2YXIgbz1yLnNlYXRiaWRbMF0uYmlkWzBdO28mJm8ucHJpY2UmJm8ubnVybCYmby5hZG0mJm4uX2hhbmRsZUJpZFBvc0RhdGEoZSx0LG8ucHJpY2UsaSxvLmFkbSxvLm51cmwpfX0pKSxlfSxuLl9nZXRCaWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gSm8odGhpcy5fY29uZmlnLmJpZFVybCx7ZGF0YTp7fSx0aW1lb3V0OnRoaXMuX2NvbmZpZy50aW1lb3V0LGxvZ1ByZWZpeDp0fSx7bWV0aG9kOlwiUE9TVFwiLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwiLGJvZHk6SlNPTi5zdHJpbmdpZnkodGhpcy5fYnVpbGRSZXFQYXJhbXModCkpfSkudGhlbigoZnVuY3Rpb24obil7cmV0dXJuIGUuX2JpZFJlc3BvbnNlc1tlLl9iaWRSZXF1ZXN0LmltcGlkW3RdXT1uLCEwfSkpfSxuLl9idWlsZFJlcVBhcmFtcz1mdW5jdGlvbih0KXt0aGlzLl9iaWRSZXF1ZXN0LmltcGlkW3RdPXFvKCk7dmFyIGU9e2lkOnFvKCksc2l0ZTp7aWQ6dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLmlkLG1vYmlsZTp4by5nZXRVc2VyQWdlbnQoKS5pbmNsdWRlcyhcIk1vYmlcIik/MTowfSxkZXZpY2U6e3VhOnhvLmdldFVzZXJBZ2VudCgpLGRudDprbygpPzE6MH0saW1wOlt7aWQ6dGhpcy5fYmlkUmVxdWVzdC5pbXBpZFt0XSxiYW5uZXI6e3c6dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLndpZHRoLGg6dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLmhlaWdodH0sc2VjdXJlOk9vKCk/MTowLGRpc3BsYXltYW5hZ2VyOlwidW9sLWFkLmpzXCIsZGlzcGxheW1hbmFnZXJ2ZXI6XCIzLjEuM1wifV0sYXQ6MSx1c2VyOnt9fSxuPXt9LGk9dGhpcy5fZ2V0Q29tbW9uSWQoKTtyZXR1cm4gaSYmaS5sZW5ndGgmJihuLmZwYz1pKSxPYmplY3QuZW50cmllcyhuKS5sZW5ndGgmJihlLnVzZXI9e2V4dDpufSksZX0sbi5fZ2V0QWRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fYmlkUmVzcG9uc2VzPXt9LHVzKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fZ2V0QmlkKHQpfSkpKS50aGVuKChmdW5jdGlvbihpKXt2YXIgcj1pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuXCJmdWxmaWxsZWRcIiE9PXQuc3RhdGV9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFzb259KSk7cmV0dXJuIHIubGVuZ3RoJiZ3byhuLl9uYW1lK1wiIGJpZGRpbmcgZXJyb3JzOiBcIityLmpvaW4oXCIsXCIpKSxuLl9wcm9jZXNzQmlkUmVzcG9uc2UodCxlKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gd28obi5fbmFtZStcIiBiaWRkaW5nIGZhaWxlZDogXCIrKHR8fFwiXCIpKSxlfSkpfSxlfSh5cykpKFwiY29udmVyc2FudFwiKSxJcz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9XCJjcml0ZW9cIiksKG49dC5jYWxsKHRoaXMsZSl8fHRoaXMpLl9tYW5kYXRvcnlDb25maWdzPVtcInNjcmlwdFwiXSxuLl9wb3NJZD1cInpvbmVpZFwiLG59WG8oZSx0KTt2YXIgbj1lLnByb3RvdHlwZTtyZXR1cm4gbi5fZ2V0Q3JpT2JqPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5Dcml0ZW99LG4uX2V4dGVybmFsU2NyaXB0Q2hlY2s9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRDcmlPYmooKTtyZXR1cm4gS3IodCkmJldyKHQuUmVxdWVzdEJpZHMpP19zOm1zfSxuLl9wcm9jZXNzQmlkUmVzcG9uc2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7cmV0dXJuIEpyKGUpPyhlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QmJnQuaW1wcmVzc2lvbklkJiZpLmdldFBvc0tleSh0LmltcHJlc3Npb25JZCk9PT1TdHJpbmcodC56b25lSWQpJiZ0LmNwbT4wJiZ0LmlkJiZpLl9oYW5kbGVCaWRQb3NEYXRhKG4sdC5pbXByZXNzaW9uSWQsXCJcIit0LmNwbS50b0ZpeGVkKDIpLHQuaWQpfSkpLG4pOm59LG4uX2dldEFkcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7d2luZG93LmNyaXRlb19wdWJ0YWcuc3RhbmRhbG9uZUJpZGRlci5iaWRzPXt9O3ZhciBpPXt9O3JldHVybiBpLnBsYWNlbWVudHM9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnt6b25laWQ6bi5nZXRQb3NLZXkodCksc2xvdGlkOnR9fSkpLG5ldyBQcm9taXNlKChmdW5jdGlvbihyKXt2YXIgbz1uLl9nZXRDcmlPYmooKTtvLmV2ZW50cy5wdXNoKChmdW5jdGlvbigpe28uUmVxdWVzdEJpZHMoaSwoZnVuY3Rpb24oKXtyKG4uX3Byb2Nlc3NCaWRSZXNwb25zZSh0LG8uR2V0QmlkcygpLGUpKX0pLG4uX2NvbmZpZy50aW1lb3V0KX0pKX0pKX0sbi5fcmVuZGVyQWQ9ZnVuY3Rpb24odCxlLG4saSxyKXt0cnl7dGhpcy5fZ2V0Q3JpT2JqKCkuUmVuZGVyQWQoaSxlKX1jYXRjaCh0YSl7d28odGhpcy5fbmFtZStcIiBcIituK1wiIHJlbmRlciBhZCBmYWlsdXJlIFwiK3RhLm1lc3NhZ2UpfX0sZX0oeXMpKSxDcz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9XCJwdWJtYXRpY1wiKSwobj10LmNhbGwodGhpcyxlKXx8dGhpcykuX0RlZkNvbmZpZz1vbyghMCx7fSxuLl9EZWZDb25maWcse3B1YklEOlwiXCIscXBLZXk6XCJwdWhiXCJ9KSxuLl9pc1N1cHBvcnRlZD1FbygpJiZLbygpLG4uX2NvbmZpZz1vbyghMCx7fSxuLl9EZWZDb25maWcpLG4uX21hbmRhdG9yeUNvbmZpZ3M9W1wiYmlkVXJsXCIsXCJwdWJJRFwiXSxuLl9iaWRSZXF1ZXN0PXtpbXBpZDp7fX0sbn1YbyhlLHQpO3ZhciBuPWUucHJvdG90eXBlO3JldHVybiBuLl9wcm9jZXNzQmlkUmVzcG9uc2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7cmV0dXJuIHRoaXMuX2lzVmFsaWRSVEJSZXNwb25zZShlKT8oZS5zZWF0YmlkWzBdLmJpZC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0JiZ0LmltcGlkJiZ0LnByaWNlJiZ0LmFkbSl7dmFyIGU9dC5pbXBpZDtpLl9oYW5kbGVCaWRQb3NEYXRhKG4saS5fYmlkUmVxdWVzdC5pbXBpZFtlXSx0LnByaWNlLGUsdC5hZG0pfX0pKSxuKTpufSxuLl9nZXRTbG90PWZ1bmN0aW9uKHQpe3ZhciBlPXFvKCksbj10aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF0uc2l6ZXMuc2xpY2UoKSxpPTAscj0wO2lmKG4ubGVuZ3RoKXt2YXIgbz1uLnNoaWZ0KCk7aT1vWzBdLHI9b1sxXX12YXIgcz1uLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3c6dFswXSxoOnRbMV19fSkpLGE9e2lkOmUsdGFnaWQ6dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLmFkVGFnSWQsc2VjdXJlOk9vKCk/MTowLGJpZGZsb29yY3VyOlwiVVNEXCIsYmFubmVyOnt3OmksaDpyLHRvcGZyYW1lOiExPT09dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLmlmcmFtZT8xOjAsZm9ybWF0OnN9fTtyZXR1cm4gdGhpcy5fYmlkUmVxdWVzdC5pbXBpZFtlXT10LGF9LG4uX2J1aWxkUmVxUGFyYW1zPWZ1bmN0aW9uKHQpe3JldHVybntpZDpxbygpLHNpdGU6e3B1Ymxpc2hlcjp7aWQ6dGhpcy5fY29uZmlnLnB1YklEfSxwYWdlOndpbmRvdy5sb2NhdGlvbi5ocmVmfHxcIlwiLHJlZjpkb2N1bWVudC5yZWZlcnJlcnx8XCJcIn0sZGV2aWNlOnt1YTp4by5nZXRVc2VyQWdlbnQoKSxkbnQ6a28oKT8xOjAsaDp3aW5kb3cuc2NyZWVuLmhlaWdodHx8XCJcIix3OndpbmRvdy5zY3JlZW4ud2lkdGh8fFwiXCIsbGFuZ3VhZ2U6bmF2aWdhdG9yLmxhbmd1YWdlfHxcIlwifSxpbXA6dCxhdDoxfX0sbi5fZ2V0Qmlkcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9nZXRTbG90KHQpfSkpLGk9e2RhdGE6e30sdGltZW91dDp0aGlzLl9jb25maWcudGltZW91dCxsb2dQcmVmaXg6dGhpcy5nZXROYW1lKCkrXCIgLSBcIit0LmpvaW4oXCIsXCIpfSxyPXttZXRob2Q6XCJQT1NUXCIsYm9keTpKU09OLnN0cmluZ2lmeSh0aGlzLl9idWlsZFJlcVBhcmFtcyhuKSksY3JlZGVudGlhbHM6XCJpbmNsdWRlXCJ9O3JldHVybiBKbyh0aGlzLl9jb25maWcuYmlkVXJsLGkscikudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSl9LG4uX2dldFVzZXJTeW5jPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuX2NvbmZpZy5zeW5jVXJsLmxlbmd0aD4wJiZ0aGlzLl9jb25maWcucHViSUQubGVuZ3RoPjAmJnQucHVzaCh7bmFtZTp0aGlzLmdldE5hbWUoKSx0eXBlOlwiaWZyYW1lXCIsdXJsOlwiXCIrdGhpcy5fY29uZmlnLnN5bmNVcmwrdGhpcy5fY29uZmlnLnB1YklEfSksdH0sbi5fZ2V0QWRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fYmlkUmVzcG9uc2VzPXt9LHRoaXMuX2JpZFJlcXVlc3QuaW1waWQ9e30sdGhpcy5fZ2V0Qmlkcyh0KS50aGVuKChmdW5jdGlvbihpKXtyZXR1cm4gbi5fcHJvY2Vzc0JpZFJlc3BvbnNlKHQsaSxlKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gd28obi5fbmFtZStcIiBGYWlsZWQgdG8gZ2V0IGJpZHM6IFwiKyh0fHxcIlwiKSksZX0pKX0sZX0oeXMpKSx4cz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9XCJydWJpY29uXCIpLChuPXQuY2FsbCh0aGlzLGUpfHx0aGlzKS5fRGVmQ29uZmlnPW9vKCEwLHt9LG4uX0RlZkNvbmZpZyx7YWNjb3VudElEOlwiMjA0NzBcIixzaXRlSUQ6XCIyNDk4MzhcIixiaWRVcmw6XCJodHRwczovL2Zhc3RsYW5lLnJ1Ymljb25wcm9qZWN0LmNvbS9hL2FwaS9mYXN0bGFuZS5qc29uXCIscXBLZXk6XCJydWJcIixiYXRjaENudDoxMH0pLG4uX2lzU3VwcG9ydGVkPUVvKCkmJktvKCksbi5fY29uZmlnPW9vKCEwLHt9LG4uX0RlZkNvbmZpZyksbi5fbWFuZGF0b3J5Q29uZmlncz1bXCJiaWRVcmxcIixcImFjY291bnRJRFwiLFwic2l0ZUlEXCJdLG59WG8oZSx0KTt2YXIgbj1lLnByb3RvdHlwZTtyZXR1cm4gbi5fZ2V0Q3JlYXRpdmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJcIiksdm9pZCAwPT09ZSYmKGU9XCJcIiksXCI8ZGl2IGRhdGEtcnAtaW1wcmVzc2lvbi1pZD0nXCIrZStcIic+XFxuICAgIDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5cIit0K1wiPFxcL3NjcmlwdD5cXG4gICAgPC9kaXY+XCJ9LG4uX3Byb2Nlc3NCaWRSZXNwb25zZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcyxyPWUuYWRzO2lmKCFKcihyKXx8IXIubGVuZ3RoKXJldHVybiBuO3ZhciBvPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIHM9cltlXXx8e307aWYoXCJuby1hZHNcIiE9PXMuc3RhdHVzKWlmKFwib2tcIj09PXMuc3RhdHVzKXtpZihzLnNjcmlwdCYmcy5pbXByZXNzaW9uX2lkJiZzLmNwbSl7dmFyIGE9aS5fZ2V0Q3JlYXRpdmUocy5zY3JpcHQscy5pbXByZXNzaW9uX2lkKTtpLl9oYW5kbGVCaWRQb3NEYXRhKG4sdCxzLmNwbSxzLmltcHJlc3Npb25faWQsYSl9fWVsc2Ugby5wdXNoKHQrXCI6XCIrKHMuc3RhdHVzfHxcIlwiKStcIi1cIisocy5lcnJvcl9jb2RlfHwtMSkrXCItXCIrKHMucmVhc29ufHxcIlwiKSl9KSksby5sZW5ndGgmJndvKHRoaXMuX25hbWUrXCIgYmlkZGluZyBlcnJvcnM6IFwiK28uam9pbihcIixcIikpLG59LG4uX3BhcnRpdGlvbkFycmF5PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuc2xpY2UoKSxpPVtdO24ubGVuZ3RoOylpLnB1c2gobi5zcGxpY2UoMCxlKSk7cmV0dXJuIGl9LG4uX2dldFNpdGVEZXRhaWxzPWZ1bmN0aW9uKCl7cmV0dXJue2FjY291bnRfaWQ6dGhpcy5fY29uZmlnLmFjY291bnRJRCxzaXRlX2lkOnRoaXMuX2NvbmZpZy5zaXRlSUQscF9zY3JlZW5fcmVzOndpbmRvdy5zY3JlZW4ud2lkdGgrXCJ4XCIrd2luZG93LnNjcmVlbi5oZWlnaHQsdGtfZmxpbnQ6XCJ1b2wtYWQuanMtMy4xLjNcIixycF9zZWN1cmU6T28oKT8xOjAscnBfZmxvb3I6LjAxLHJmOmRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9fSxuLl9nZXRTaXplQ29kZXM9ZnVuY3Rpb24odCl7dmFyIGU9e1wiNDY4eDYwXCI6MSxcIjcyOHg5MFwiOjIsXCIxMjB4OTBcIjo1LFwiMTIweDYwMFwiOjgsXCIxNjB4NjAwXCI6OSxcIjMwMHg2MDBcIjoxMCxcIjIwMHgyMDBcIjoxMyxcIjI1MHgyNTBcIjoxNCxcIjMwMHgyNTBcIjoxNSxcIjMzNngyODBcIjoxNixcIjI0MHg0MDBcIjoxNyxcIjMwMHgxMDBcIjoxOSxcIjk4MHgxMjBcIjozMSxcIjI1MHgzNjBcIjozMixcIjE4MHg1MDBcIjozMyxcIjk4MHgxNTBcIjozNSxcIjQ2OHg0MDBcIjozNyxcIjkzMHgxODBcIjozOCxcIjc1MHgxMDBcIjozOSxcIjc1MHgyMDBcIjo0MCxcIjc1MHgzMDBcIjo0MSxcIjMyMHg1MFwiOjQzLFwiMzAweDUwXCI6NDQsXCIzMDB4MzAwXCI6NDgsXCIxMDI0eDc2OFwiOjUzLFwiMzAweDEwNTBcIjo1NCxcIjk3MHg5MFwiOjU1LFwiOTcweDI1MFwiOjU3LFwiMTAwMHg5MFwiOjU4LFwiMzIweDgwXCI6NTksXCIzMjB4MTUwXCI6NjAsXCIxMDAweDEwMDBcIjo2MSxcIjU4MHg1MDBcIjo2NCxcIjY0MHg0ODBcIjo2NSxcIjkzMHg2MDBcIjo2NixcIjMyMHg0ODBcIjo2NyxcIjE4MDB4MTAwMFwiOjY4LFwiMzIweDMyMFwiOjcyLFwiMzIweDE2MFwiOjczLFwiOTgweDI0MFwiOjc4LFwiOTgweDMwMFwiOjc5LFwiOTgweDQwMFwiOjgwLFwiNDgweDMwMFwiOjgzLFwiOTcweDMxMFwiOjk0LFwiOTcweDIxMFwiOjk2LFwiNDgweDMyMFwiOjEwMSxcIjc2OHgxMDI0XCI6MTAyLFwiNDgweDI4MFwiOjEwMyxcIjI1MHg4MDBcIjoxMDUsXCIzMjB4MjQwXCI6MTA4LFwiMTAwMHgzMDBcIjoxMTMsXCIzMjB4MTAwXCI6MTE3LFwiODAweDI1MFwiOjEyNSxcIjIwMHg2MDBcIjoxMjYsXCI5ODB4NjAwXCI6MTQ0LFwiMzIweDI1MFwiOjE1OSxcIjI1MHg2MDBcIjoxNzksXCI2MDB4MzAwXCI6MTk1LFwiNjQweDM2MFwiOjE5OCxcIjY0MHgyMDBcIjoxOTksXCIxMDMweDU5MFwiOjIxMyxcIjk4MHgzNjBcIjoyMTQsXCIzMjB4MTgwXCI6MjI5LFwiNTgweDQwMFwiOjIzMixcIjQwMHg2MDBcIjoyNTcsXCIxOTIweDEwODBcIjoyNjV9O3JldHVybiB0aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF0uc2l6ZXMubWFwKChmdW5jdGlvbih0KXt2YXIgbj10WzBdLGk9dFsxXTtyZXR1cm4gU3RyaW5nKGVbbitcInhcIitpXXx8MCl9KSl9LG4uX2dldFBvc2l0aW9uc0RhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuX2dldERlZmF1bHRQb3NEZXRhaWxzKCk7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXt2YXIgaT1lLl9nZXRTaXplQ29kZXModCkscj1pWzBdLG89aS5zbGljZSgxKTtyZXR1cm4gb28oITAse30sbix7em9uZV9pZDplLl9jb25maWcucG9zVG9rZW5NYXBbdF0uem9uZV9pZCxzaXplX2lkOnIsYWx0X3NpemVfaWRzOm8uam9pbihcIixcIikscF9wb3M6Q28uaXNBYm92ZUZvbGQodCk/XCJhdGZcIjpcImJ0ZlwiLFwieF9zb3VyY2UudGlkXCI6cW8oKX0pfSkpfSxuLl9nZXREZWZhdWx0UG9zRGV0YWlscz1mdW5jdGlvbigpe3JldHVybnt6b25lX2lkOlwiXCIsc2l6ZV9pZDpcIlwiLGFsdF9zaXplX2lkczpcIlwiLHBfcG9zOlwidW5rbm93blwiLFwieF9zb3VyY2UudGlkXCI6XCJcIn19LG4uX2NvbWJpbmVQb3NpdGlvbkRhdGE9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0RGVmYXVsdFBvc0RldGFpbHMoKSxuPU9iamVjdC5rZXlzKGUpLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZVtuXT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHRbbl19KSksZX0pLHt9KTtyZXR1cm4gT2JqZWN0LmtleXMobikuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gblt0XS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGg+MH0pKX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV09bltlXS5qb2luKFwiO1wiKSx0fSkse30pfSxuLl9nZXRCaWQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9dGhpcy5fZ2V0U2l0ZURldGFpbHMoKSxyPXtkYXRhOnt9LHRpbWVvdXQ6dGhpcy5fY29uZmlnLnRpbWVvdXQsbG9nUHJlZml4OlwiXCJ9LG89e21ldGhvZDpcIkdFVFwiLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwifTtyZXR1cm4gdGhpcy5fcGFydGl0aW9uQXJyYXkodCx0aGlzLl9jb25maWcuYmF0Y2hDbnQpLm1hcCgoZnVuY3Rpb24odCl7dmFyIHM9bi5fZ2V0UG9zaXRpb25zRGF0YSh0KSxhPW4uX2NvbWJpbmVQb3NpdGlvbkRhdGEocyk7cmV0dXJuIHIuZGF0YT1vbyghMCx7fSxpLGEse3JhbmQ6cW8oKSxzbG90czp0Lmxlbmd0aH0pLHIubG9nUHJlZml4PW4uZ2V0TmFtZSgpK1wiIC0gXCIrdC5qb2luKFwiLFwiKSxKbyhuLl9jb25maWcuYmlkVXJsLHIsbykudGhlbigoZnVuY3Rpb24oaSl7cmV0dXJuIG4uX3Byb2Nlc3NCaWRSZXNwb25zZSh0LGksZSl9KSl9KSl9LG4uX2dldFVzZXJTeW5jPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuX2NvbmZpZy5zeW5jVXJsLmxlbmd0aCYmdC5wdXNoKHtuYW1lOnRoaXMuZ2V0TmFtZSgpLHR5cGU6XCJpZnJhbWVcIix1cmw6XCJcIit0aGlzLl9jb25maWcuc3luY1VybH0pLHR9LG4uX2dldEFkcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX2JpZFJlc3BvbnNlcz17fSx1cyh0aGlzLl9nZXRCaWQodCxlKSkudGhlbigoZnVuY3Rpb24odCl7dmFyIGk9dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVyblwiZnVsZmlsbGVkXCIhPT10LnN0YXRlfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhc29ufSkpO3JldHVybiBpLmxlbmd0aCYmd28obi5fbmFtZStcIiBiaWRkaW5nIGVycm9yczogXCIraS5qb2luKFwiLFwiKSksZX0pLChmdW5jdGlvbih0KXtyZXR1cm4gd28obi5fbmFtZStcIiBiaWRkaW5nIGZhaWxlZDogXCIrKHR8fFwiXCIpKSxlfSkpfSxlfSh5cykpLFBzPW5ldyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuO3JldHVybiB2b2lkIDA9PT1lJiYoZT1cImFkdGVjaFwiKSwobj10LmNhbGwodGhpcyxlKXx8dGhpcykuX0RlZkNvbmZpZz1vbyghMCx7fSxuLl9EZWZDb25maWcse2lkOlwiXCIsc2VydmVyOlwiXCJ9KSxuLl9jb25maWc9b28oITAse30sbi5fRGVmQ29uZmlnKSxuLl9tYW5kYXRvcnlDb25maWdzPVtcImlkXCIsXCJzZXJ2ZXJcIl0sbi5faXNTdXBwb3J0ZWQ9RW8oKSYmS28oKSxufVhvKGUsdCk7dmFyIG49ZS5wcm90b3R5cGU7cmV0dXJuIG4uX3Byb2Nlc3NCaWRSZXNwb25zZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9bi5fYmlkUmVzcG9uc2VzW3RdO2lmKG4uX2lzVmFsaWRSVEJSZXNwb25zZShpKSl7dmFyIHI9aS5zZWF0YmlkWzBdLmJpZFswXTtyJiZyLnByaWNlJiZyLmFkbSYmbi5faGFuZGxlQmlkUG9zRGF0YShlLHQsci5wcmljZSxyLmltcGlkLHIuYWRtKSxkZWxldGUgbi5fYmlkUmVzcG9uc2VzW3RdfX0pKSxlfSxuLl9nZXRQb3NSZXFVcmw9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9XCJcIik7dmFyIGU9XCJcIjtpZighdC5sZW5ndGgpcmV0dXJuIGU7dmFyIG49b28oITAse30se25ldHdvcms6dGhpcy5fY29uZmlnLmlkLHBsYWNlbWVudDowLHBhZ2VpZDowLHNpemVpZDowLGFsaWFzOlwiXCIsbWlzYzpEYXRlLm5vdygpLGR5bmFtaWNQYXJhbXM6XCJcIn0sdGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdKTtyZXR1cm4gZT1cIi8vXCIrdGhpcy5fY29uZmlnLnNlcnZlcitcIi9wdWJhcGkvMy4wL1wiK24ubmV0d29yaytcIi9cIitwYXJzZUludChuLnBsYWNlbWVudCwxMCkrXCIvXCIrbi5wYWdlaWQrXCIvXCIrbi5zaXplaWQrXCIvQURURUNIO3Y9MjtjbWQ9YmlkO2NvcnM9eWVzO2FsaWFzPVwiK24uYWxpYXMrXCI7bWlzYz1cIituLm1pc2MrXCI7XCIrbi5keW5hbWljUGFyYW1zfSxuLl9nZXRCaWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gSm8odGhpcy5fZ2V0UG9zUmVxVXJsKHQpLHtkYXRhOnt9LHRpbWVvdXQ6dGhpcy5fY29uZmlnLnRpbWVvdXQsbG9nUHJlZml4OnR9LHttZXRob2Q6XCJHRVRcIixjcmVkZW50aWFsczpcImluY2x1ZGVcIn0pLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBlLl9iaWRSZXNwb25zZXNbdF09biwhMH0pKX0sbi5fZ2V0QWRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fYmlkUmVzcG9uc2VzPXt9LHVzKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fZ2V0QmlkKHQpfSkpKS50aGVuKChmdW5jdGlvbihpKXt2YXIgcj1pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuXCJmdWxmaWxsZWRcIiE9PXQuc3RhdGV9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFzb259KSk7cmV0dXJuIHIubGVuZ3RoJiZ3byhuLl9uYW1lK1wiIGJpZGRpbmcgZXJyb3JzOiBcIityLmpvaW4oXCIsXCIpKSxuLl9wcm9jZXNzQmlkUmVzcG9uc2UodCxlKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gd28obi5fbmFtZStcIiBiaWRkaW5nIGZhaWxlZDogXCIrKHR8fFwiXCIpKSxlfSkpfSxlfSh5cykpO2Z1bmN0aW9uIFNzKCl7fXZhciBBcz13aW5kb3cuX0luZGV4UmVxdWVzdERhdGF8fHt9LERzPXdpbmRvdy5jeWdudXNfaW5kZXhfYXJnc3x8e30sanM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXJbdF07cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpcIlxcXFx1XCIrKFwiMDAwMFwiK3QuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX1mdW5jdGlvbiBlKGUpe3JldHVybiBpLmxhc3RJbmRleD0wLGkudGVzdChlKT9lLnJlcGxhY2UoaSx0KTplfWZ1bmN0aW9uIG4odCxlLG4pe2lmKHRoaXMuaW5pdGlhbGl6ZWQ9ITEsXCJudW1iZXJcIiE9dHlwZW9mIHR8fHQlMSE9MHx8dDwwKXRocm93XCJJbnZhbGlkIFNpdGUgSURcIjtpZihcIm51bWJlclwiPT10eXBlb2YgbiYmbiUxPT0wJiZuPj0wJiYodGhpcy50aW1lb3V0RGVsYXk9biksdGhpcy5zaXRlSUQ9dCx0aGlzLmltcHJlc3Npb25zPVtdLHRoaXMuX3BhcnNlRm5OYW1lPXZvaWQgMCx0b3A9PT1zZWxmPyh0aGlzLnNpdGVQYWdlPWxvY2F0aW9uLmhyZWYsdGhpcy50b3BmcmFtZT0xKToodGhpcy5zaXRlUGFnZT1kb2N1bWVudC5yZWZlcnJlcix0aGlzLnRvcGZyYW1lPTApLHZvaWQgMCE9PWUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3dcIkludmFsaWQganNvbnAgdGFyZ2V0IGZ1bmN0aW9uXCI7dGhpcy5fcGFyc2VGbk5hbWU9XCJjeWdudXNfaW5kZXhfYXJncy5wYXJzZUZuXCJ9XCJ1bmRlZmluZWRcIj09dHlwZW9mIF9JbmRleFJlcXVlc3REYXRhLnJlcXVlc3RDb3VudGVyP19JbmRleFJlcXVlc3REYXRhLnJlcXVlc3RDb3VudGVyPU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpOl9JbmRleFJlcXVlc3REYXRhLnJlcXVlc3RDb3VudGVyPShfSW5kZXhSZXF1ZXN0RGF0YS5yZXF1ZXN0Q291bnRlcisxKSUyNTYsdGhpcy5yZXF1ZXN0SUQ9U3RyaW5nKChuZXcgRGF0ZSkuZ2V0VGltZSgpJTI1OTJlMyoyNTYrX0luZGV4UmVxdWVzdERhdGEucmVxdWVzdENvdW50ZXIrMjU2KSx0aGlzLmluaXRpYWxpemVkPSEwfWN5Z251c19pbmRleF9hcmdzLnBhcnNlRm49U3M7dmFyIGk9L1tcXFxcXFxcIlxceDAwLVxceDFmXFx4N2YtXFx4OWZcXHUwMGFkXFx1MDYwMC1cXHUwNjA0XFx1MDcwZlxcdTE3YjRcXHUxN2I1XFx1MjAwYy1cXHUyMDBmXFx1MjAyOC1cXHUyMDJmXFx1MjA2MC1cXHUyMDZmXFx1ZmVmZlxcdWZmZjAtXFx1ZmZmZl0vZyxyPXtcIlxcYlwiOlwiXFxcXGJcIixcIlxcdFwiOlwiXFxcXHRcIixcIlxcblwiOlwiXFxcXG5cIixcIlxcZlwiOlwiXFxcXGZcIixcIlxcclwiOlwiXFxcXHJcIiwnXCInOidcXFxcXCInLFwiXFxcXFwiOlwiXFxcXFxcXFxcIn07bi5wcm90b3R5cGUuc2VyaWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQ9J3tcImlkXCI6Jyt0aGlzLnJlcXVlc3RJRCsnLFwic2l0ZVwiOntcInBhZ2VcIjpcIicrZSh0aGlzLnNpdGVQYWdlKSsnXCInO1wic3RyaW5nXCI9PXR5cGVvZiBkb2N1bWVudC5yZWZlcnJlciYmKHQrPScsXCJyZWZcIjpcIicrZShkb2N1bWVudC5yZWZlcnJlcikrJ1wiJyksdCs9J30sXCJpbXBcIjpbJztmb3IodmFyIG49MDtuPHRoaXMuaW1wcmVzc2lvbnMubGVuZ3RoO24rKyl7dmFyIGk9dGhpcy5pbXByZXNzaW9uc1tuXSxyPVtdO3QrPSd7XCJpZFwiOlwiJytpLmlkKydcIiwgXCJiYW5uZXJcIjp7XCJ3XCI6JytpLncrJyxcImhcIjonK2kuaCsnLFwidG9wZnJhbWVcIjonK1N0cmluZyh0aGlzLnRvcGZyYW1lKStcIn1cIixcIm51bWJlclwiPT10eXBlb2YgaS5iaWRmbG9vciYmKHQrPScsXCJiaWRmbG9vclwiOicraS5iaWRmbG9vcixcInN0cmluZ1wiPT10eXBlb2YgaS5iaWRmbG9vcmN1ciYmKHQrPScsXCJiaWRmbG9vcmN1clwiOlwiJytlKGkuYmlkZmxvb3JjdXIpKydcIicpKSxcInN0cmluZ1wiIT10eXBlb2YgaS5zbG90SUR8fGkuc2xvdElELm1hdGNoKC9eXFxzKiQvKXx8ci5wdXNoKCdcInNpZFwiOlwiJytlKGkuc2xvdElEKSsnXCInKSxcIm51bWJlclwiPT10eXBlb2YgaS5zaXRlSUQmJnIucHVzaCgnXCJzaXRlSURcIjonK2kuc2l0ZUlEKSxyLmxlbmd0aD4wJiYodCs9JyxcImV4dFwiOiB7JytyLmpvaW4oKStcIn1cIiksdCs9bisxPT10aGlzLmltcHJlc3Npb25zLmxlbmd0aD9cIn1cIjpcIn0sXCJ9cmV0dXJuIHQrXCJdfVwifSxuLnByb3RvdHlwZS5zZXRQYWdlT3ZlcnJpZGU9ZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJiF0Lm1hdGNoKC9eXFxzKiQvKSYmKHRoaXMuc2l0ZVBhZ2U9dCwhMCl9LG4ucHJvdG90eXBlLmFkZEltcHJlc3Npb249ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBzPXtpZDpTdHJpbmcodGhpcy5pbXByZXNzaW9ucy5sZW5ndGgrMSl9O2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0fHx0PD0xKXJldHVybiBudWxsO2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlfHxlPD0xKXJldHVybiBudWxsO2lmKChcInN0cmluZ1wiPT10eXBlb2Ygcnx8XCJudW1iZXJcIj09dHlwZW9mIHIpJiZTdHJpbmcocikubGVuZ3RoPD01MCYmKHMuc2xvdElEPVN0cmluZyhyKSkscy53PXQscy5oPWUsbnVsbCE9biYmXCJudW1iZXJcIiE9dHlwZW9mIG4pcmV0dXJuIG51bGw7aWYoXCJudW1iZXJcIj09dHlwZW9mIG4pe2lmKG48MClyZXR1cm4gbnVsbDtpZihzLmJpZGZsb29yPW4sbnVsbCE9aSYmXCJzdHJpbmdcIiE9dHlwZW9mIGkpcmV0dXJuIG51bGw7cy5iaWRmbG9vcmN1cj1pfWlmKHZvaWQgMCE9PW8pe2lmKCEoXCJudW1iZXJcIj09dHlwZW9mIG8mJm8lMT09MCYmbz49MCkpcmV0dXJuIG51bGw7cy5zaXRlSUQ9b31yZXR1cm4gdGhpcy5pbXByZXNzaW9ucy5wdXNoKHMpLHMuaWR9LG4ucHJvdG90eXBlLmJ1aWxkUmVxdWVzdD1mdW5jdGlvbigpe2lmKDAhPXRoaXMuaW1wcmVzc2lvbnMubGVuZ3RoJiYhMD09PXRoaXMuaW5pdGlhbGl6ZWQpe3ZhciB0PWVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNlcmlhbGl6ZSgpKSxlPVwiaHR0cHM6XCI9PT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2w/XCJodHRwczovL2FzLXNlYy5jYXNhbGVtZWRpYS5jb21cIjpcImh0dHA6Ly9hcy5jYXNhbGVtZWRpYS5jb21cIjtyZXR1cm4gZSs9XCIvaGVhZGVydGFnP3Y9OSZmbj1jeWdudXNfaW5kZXhfcGFyc2VfcmVzJnM9XCIrdGhpcy5zaXRlSUQrXCImcj1cIit0LFwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLnRpbWVvdXREZWxheSYmdGhpcy50aW1lb3V0RGVsYXklMT09MCYmdGhpcy50aW1lb3V0RGVsYXk+PTAmJihlKz1cIiZ0PVwiK3RoaXMudGltZW91dERlbGF5KSxlfX07dHJ5e2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBjeWdudXNfaW5kZXhfYXJnc3x8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGN5Z251c19pbmRleF9hcmdzLnNpdGVJRHx8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGN5Z251c19pbmRleF9hcmdzLnNsb3RzKXJldHVybjtcInVuZGVmaW5lZFwiPT10eXBlb2YgX0luZGV4UmVxdWVzdERhdGEmJihfSW5kZXhSZXF1ZXN0RGF0YT17fSxfSW5kZXhSZXF1ZXN0RGF0YS5pbXBJRFRvU2xvdElEPXt9LF9JbmRleFJlcXVlc3REYXRhLnJlcU9wdGlvbnM9e30pO3ZhciBvPW5ldyBuKGN5Z251c19pbmRleF9hcmdzLnNpdGVJRCxjeWdudXNfaW5kZXhfYXJncy5wYXJzZUZuLGN5Z251c19pbmRleF9hcmdzLnRpbWVvdXQpO2N5Z251c19pbmRleF9hcmdzLnVybCYmXCJzdHJpbmdcIj09dHlwZW9mIGN5Z251c19pbmRleF9hcmdzLnVybCYmby5zZXRQYWdlT3ZlcnJpZGUoY3lnbnVzX2luZGV4X2FyZ3MudXJsKSxfSW5kZXhSZXF1ZXN0RGF0YS5pbXBJRFRvU2xvdElEW28ucmVxdWVzdElEXT17fSxfSW5kZXhSZXF1ZXN0RGF0YS5yZXFPcHRpb25zW28ucmVxdWVzdElEXT17fTtmb3IodmFyIHMsYSx1PTA7dTxjeWdudXNfaW5kZXhfYXJncy5zbG90cy5sZW5ndGg7dSsrKXM9Y3lnbnVzX2luZGV4X2FyZ3Muc2xvdHNbdV0sKGE9by5hZGRJbXByZXNzaW9uKHMud2lkdGgscy5oZWlnaHQscy5iaWRmbG9vcixzLmJpZGZsb29yY3VyLHMuaWQscy5zaXRlSUQpKSYmKF9JbmRleFJlcXVlc3REYXRhLmltcElEVG9TbG90SURbby5yZXF1ZXN0SURdW2FdPVN0cmluZyhzLmlkKSk7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGN5Z251c19pbmRleF9hcmdzLnRhcmdldE1vZGUmJihfSW5kZXhSZXF1ZXN0RGF0YS5yZXFPcHRpb25zW28ucmVxdWVzdElEXS50YXJnZXRNb2RlPWN5Z251c19pbmRleF9hcmdzLnRhcmdldE1vZGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGN5Z251c19pbmRleF9hcmdzLmNhbGxiYWNrJiYoX0luZGV4UmVxdWVzdERhdGEucmVxT3B0aW9uc1tvLnJlcXVlc3RJRF0uY2FsbGJhY2s9Y3lnbnVzX2luZGV4X2FyZ3MuY2FsbGJhY2spLG8uYnVpbGRSZXF1ZXN0KCl9Y2F0Y2goaSl7fX18fGZ1bmN0aW9uKCl7cmV0dXJuXCJcIn07d2luZG93Ll9JbmRleFJlcXVlc3REYXRhPUFzLHdpbmRvdy5jeWdudXNfaW5kZXhfYXJncz1Ecyx3aW5kb3cuY3lnbnVzX2luZGV4X3N0YXJ0PWpzLHdpbmRvdy5jeWdudXNfaW5kZXhfcGFyc2VfcmVzPVNzO3ZhciBUcz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9XCJpbmRleFwiKSwobj10LmNhbGwodGhpcyxlKXx8dGhpcykuX0RlZkNvbmZpZz1vbyghMCx7fSxuLl9EZWZDb25maWcse2lkOjB9KSxuLl9jb25maWc9b28oITAse30sbi5fRGVmQ29uZmlnKSxuLl9yZW5kZXJUeXBlPVwiZnVuY1wiLG59WG8oZSx0KTt2YXIgbj1lLnByb3RvdHlwZTtyZXR1cm4gbi5fY29uZmlnQ2hlY2s9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFZcih0aGlzLl9jb25maWcuaWQpfHwwPT09dGhpcy5fY29uZmlnLmlkKXJldHVybiB3byh0aGlzLl9uYW1lK1wiIGNvbmZpZyBlcnJvcjogbWlzc2luZyBtYW5kYXRvcnkgZGF0YVwiKSxtczt2YXIgbj1bXCJoZWlnaHRcIixcIndpZHRoXCIsXCJzaXRlSURcIl07cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5wb3NUb2tlbk1hcCkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBuLmV2ZXJ5KChmdW5jdGlvbihuKXtyZXR1cm4hIVlyKGUuX2NvbmZpZy5wb3NUb2tlbk1hcFt0XVtuXSl8fCh3byhlLl9uYW1lK1wiIGNvbmZpZyBlcnJvcjogcG9zVG9rZW5NYXAgZm9yIFwiK3QrXCIgZm9yIHByb3BlcnR5IFwiK24rXCIgaXMgbm90IG51bWJlclwiKSwhMSl9KSl9KSk/dC5wcm90b3R5cGUuX2NvbmZpZ0NoZWNrLmNhbGwodGhpcyk6bXN9LG4uX3ByZUluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gb28oITAsRHMse3RpbWVvdXQ6dGhpcy5fY29uZmlnLnRpbWVvdXQsc2l0ZUlEOnRoaXMuX2NvbmZpZy5pZH0pLF9zfSxuLl9wcm9jZXNzQmlkUmVzcG9uc2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9d2luZG93LmluZGV4X3Nsb3RzO2lmKCFXcih3aW5kb3cuaW5kZXhfcmVuZGVyKSlyZXR1cm4gd28odGhpcy5fbmFtZStcIiBpbmRleF9yZW5kZXIgZnVuYyBpcyBub3QgZGVmaW5lZFwiKSxlO2lmKCFKcihpKSlyZXR1cm4gd28odGhpcy5fbmFtZStcIiBpbmRleF9zbG90cyByZXNwb25zZSBhcnJheSBpcyBub3QgZGVmaW5lZFwiKSxlO3RoaXMuX3JlbmRlckZ1bmM9d2luZG93LmluZGV4X3JlbmRlcjt2YXIgcj17fSxvPVwiXCIscz1cIlwiLGE9e307cmV0dXJuIGkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdChcIl9cIik7Mz09PWUubGVuZ3RoJiYobz1lWzFdLHM9ZVsyXSxhW29dPXtwcmljZTpwYXJzZUludChzLDEwKSxzbG90Om8rXCJfXCIrc30pfSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7bz1uLmdldFBvc0tleSh0KSwocj1hW29dKSYmci5wcmljZT4wJiZyLnNsb3QmJm4uX2hhbmRsZUJpZFBvc0RhdGEoZSx0LGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0wKSxZcih0KT8odC8xMDApLnRvRml4ZWQoMik6XCIwLjAwXCJ9KHIucHJpY2UpLHIuc2xvdCl9KSksZX0sbi5fZ2V0QWRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGkpe3ZhciByPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7d28obi5fbmFtZStcIiBGYWlsZWQgdG8gZ2V0IGJpZHM6IHRpbWVvdXRcIiksaShlKX0pLG4uX2NvbmZpZy50aW1lb3V0KTtEcy5jYWxsYmFjaz1mdW5jdGlvbigpe3ImJihjbGVhclRpbWVvdXQocikscj1udWxsKSxpKG4uX3Byb2Nlc3NCaWRSZXNwb25zZSh0LGUpKX07dmFyIG89dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbbi5nZXRQb3NLZXkoZSldPWUsdH0pLHt9KTtEcy5zbG90cz1PYmplY3Qua2V5cyhvKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntpZDpuLmdldFBvc0tleShvW3RdKSx3aWR0aDpuLl9jb25maWcucG9zVG9rZW5NYXBbb1t0XV0ud2lkdGgsaGVpZ2h0Om4uX2NvbmZpZy5wb3NUb2tlbk1hcFtvW3RdXS5oZWlnaHQsc2l0ZUlEOm4uX2NvbmZpZy5wb3NUb2tlbk1hcFtvW3RdXS5zaXRlSUR9fSkpLEFzLmltcElEVG9TbG90SUQ9e30sQXMucmVxT3B0aW9ucz17fSxTbyhqcygpLGRvY3VtZW50LCEwKX0pKX0sZX0oeXMpKSxFcz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbjtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9XCJzb3ZyblwiKSwobj10LmNhbGwodGhpcyxlKXx8dGhpcykuX2JpZFJlcXVlc3Q9e2lkOlwiXCIsaW1waWQ6e319LG4uX21hbmRhdG9yeUNvbmZpZ3M9W1wiYmlkVXJsXCJdLG4uX3Bvc0lkPVwidGFnaWRcIixuLl9pc1N1cHBvcnRlZD1FbygpLG4uX2JlYWNvblVybElkPVwic0JlYWNvblwiLG59WG8oZSx0KTt2YXIgbj1lLnByb3RvdHlwZTtyZXR1cm4gbi5fcHJvY2Vzc0JpZFJlc3BvbnNlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzO3JldHVybiB0aGlzLl9pc1ZhbGlkUlRCUmVzcG9uc2UoZSkmJmUuaWQ9PT10aGlzLl9iaWRSZXF1ZXN0LmlkPyhlLnNlYXRiaWRbMF0uYmlkLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuaW1waWQmJihpLl9iaWRSZXNwb25zZXNbdC5pbXBpZF09dCl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1pLl9iaWRSZXF1ZXN0LmltcGlkW3RdLHI9aS5fYmlkUmVzcG9uc2VzW2VdO3ImJnIucHJpY2UmJnIubnVybCYmci5hZG0mJmkuX2hhbmRsZUJpZFBvc0RhdGEobix0LHIucHJpY2UsZSxkZWNvZGVVUklDb21wb25lbnQoci5hZG0pLHIubnVybCl9KSksbik6bn0sbi5fZ2V0QWRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0aGlzLl9iaWRSZXNwb25zZXM9e30sdGhpcy5fYmlkUmVxdWVzdC5pZD1xbygpO3ZhciBpPXdpbmRvdy5sb2NhdGlvbixyPXtpZDp0aGlzLl9iaWRSZXF1ZXN0LmlkLHNpdGU6e2RvbWFpbjppLmhvc3QscGFnZTppLnBhdGhuYW1lfSxpbXA6W119O3IuaW1wPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fYmlkUmVxdWVzdC5pbXBpZFt0XT1xbygpLHtpZDpuLl9iaWRSZXF1ZXN0LmltcGlkW3RdLGJhbm5lcjp7dzpuLl9jb25maWcucG9zVG9rZW5NYXBbdF0ud2lkdGgsaDpuLl9jb25maWcucG9zVG9rZW5NYXBbdF0uaGVpZ2h0fSx0YWdpZDpuLmdldFBvc0tleSh0KX19KSk7dmFyIG89e2RhdGE6e2JyOkpTT04uc3RyaW5naWZ5KHIpfSx0aW1lb3V0OnRoaXMuX2NvbmZpZy50aW1lb3V0LGxvZ1ByZWZpeDp0LmpvaW4oXCIsXCIpfTtyZXR1cm4gUW8odGhpcy5fY29uZmlnLmJpZFVybCxvKS50aGVuKChmdW5jdGlvbihpKXtyZXR1cm4gbi5fcHJvY2Vzc0JpZFJlc3BvbnNlKHQsaSxlKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gd28obi5fbmFtZStcIiBGYWlsZWQgdG8gZ2V0IGJpZHM6IFwiKyh0fHxcIlwiKSksZX0pKX0sZX0oeXMpKSxCcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuO3JldHVybihuPXQuY2FsbCh0aGlzLGUpfHx0aGlzKS5fbWFuZGF0b3J5Q29uZmlncz1bXCJiaWRVcmxcIl0sbi5fcmVuZGVyVHlwZT1cImlmcmFtZVwiLG59WG8oZSx0KTt2YXIgbj1lLnByb3RvdHlwZTtyZXR1cm4gbi5fcHJvY2Vzc0JpZFJlc3BvbnNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPVwiXCI7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7aT1uLmdldFBvc0tleSh0KTt2YXIgcj1uLl9iaWRSZXNwb25zZXNbaV07ciYmci5jcG0+MCYmci5hZCYmbi5faGFuZGxlQmlkUG9zRGF0YShlLHQsXCJcIityLmNwbS8xZTQsaSxyLmFkKX0pKSxlfSxuLl9nZXRCaWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXt9O3JldHVybiBuLmRhdGE9e2lkOnRoaXMuZ2V0UG9zS2V5KHQpLHNpemU6dGhpcy5fY29uZmlnLnBvc1Rva2VuTWFwW3RdLndpZHRoK1wieFwiK3RoaXMuX2NvbmZpZy5wb3NUb2tlbk1hcFt0XS5oZWlnaHQscmVmZXJyZXI6ZG9jdW1lbnQubG9jYXRpb24uaHJlZn0sbi5sb2dQcmVmaXg9dCxuLnRpbWVvdXQ9dGhpcy5fY29uZmlnLnRpbWVvdXQsUW8odGhpcy5fY29uZmlnLmJpZFVybCxuKS50aGVuKChmdW5jdGlvbihuKXtyZXR1cm4gbiYmbi5yZXN1bHQmJihlLl9iaWRSZXNwb25zZXNbZS5nZXRQb3NLZXkodCldPW4ucmVzdWx0KSwhMH0pKX0sbi5fZ2V0VXNlclN5bmM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5fY29uZmlnLnN5bmNVcmwubGVuZ3RoJiZ0LnB1c2goe25hbWU6dGhpcy5nZXROYW1lKCksdHlwZTpcImlmcmFtZVwiLHVybDp0aGlzLl9jb25maWcuc3luY1VybH0pLHR9LG4uX2dldEFkcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX2JpZFJlc3BvbnNlcz17fSx1cyh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX2dldEJpZCh0KX0pKSkudGhlbigoZnVuY3Rpb24oaSl7dmFyIHI9aS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVyblwiZnVsZmlsbGVkXCIhPT10LnN0YXRlfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhc29ufSkpO3JldHVybiByLmxlbmd0aCYmd28obi5fbmFtZStcIiBiaWRkaW5nIGVycm9yczogXCIrci5qb2luKFwiLFwiKSksbi5fcHJvY2Vzc0JpZFJlc3BvbnNlKHQsZSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHdvKG4uX25hbWUrXCIgYmlkZGluZyBmYWlsZWQ6IFwiKyh0fHxcIlwiKSksZX0pKX0sZX0oeXMpLFJzPW5ldyBCcyhcImJyZWFsXCIpLE9zPW5ldyBCcyhcImFwcG5leHVzXCIpLGtzPW5ldyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU7cmV0dXJuKGU9dC5jYWxsKHRoaXMsXCJvcGVueFwiKXx8dGhpcykuX0RlZkNvbmZpZz1vbyghMCx7fSxlLl9EZWZDb25maWcse2JpZFVybDpcIi8vdW9sLWQub3BlbngubmV0L3cvMS4wL2FyalwiLHFwS2V5Olwib3BlbnhcIn0pLGUuX2lzU3VwcG9ydGVkPUVvKCkmJktvKCksZS5fY29uZmlnPW9vKCEwLHt9LGUuX0RlZkNvbmZpZyksZS5fbWFuZGF0b3J5Q29uZmlncz1bXCJiaWRVcmxcIl0sZX1YbyhlLHQpO3ZhciBuPWUucHJvdG90eXBlO3JldHVybiBuLl9wcm9jZXNzQmlkUmVzcG9uc2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj1LcihlKSYmZS5hZHN8fHt9LG89ci5jb3VudCxzPXZvaWQgMD09PW8/MDpvLGE9ci5hZCx1PXZvaWQgMD09PWE/W106YTtpZihzPD0wfHx1Lmxlbmd0aDw9MClyZXR1cm4gbjt2YXIgYz10LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtpLl9jb25maWcucG9zVG9rZW5NYXBbZV0uYXVpZF09ZXx8XCJcIix0fSkse30pO3JldHVybiB1LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXQuYWR1bml0aWQscj12b2lkIDA9PT1lPzA6ZSxvPXQuaHRtbCxzPXZvaWQgMD09PW8/XCJcIjpvLGE9dC5wdWJfcmV2LHU9dm9pZCAwPT09YT9cIlwiOmEsZD1jW3JdfHxcIlwiO3I+MCYmZC5sZW5ndGg+MCYmcy5sZW5ndGg+MCYmdS5sZW5ndGgmJmkuX2hhbmRsZUJpZFBvc0RhdGEobixkLFN0cmluZygoTnVtYmVyKHUpfHwwKS8xZTMpLFN0cmluZyhyKSxzKX0pKSxufSxuLl9nZXRTaXRlRGV0YWlscz1mdW5jdGlvbigpe3ZhciB0LGU9e2p1OmRvY3VtZW50LmxvY2F0aW9uLmhyZWZ8fFwiXCIsanI6ZG9jdW1lbnQucmVmZXJyZXJ8fFwiXCIsY2g6ZG9jdW1lbnQuY2hhcmFjdGVyU2V0fHxcIlwiLHJlczp3aW5kb3cuc2NyZWVuLndpZHRoK1wieFwiK3dpbmRvdy5zY3JlZW4uaGVpZ2h0K1wieFwiKyh3aW5kb3cuc2NyZWVuLmNvbG9yRGVwdGh8fFwiXCIpLGlmcjoodm9pZCAwPT09dCYmKHQ9d2luZG93KSx0LnNlbGYmJnQudG9wJiZ0LnNlbGYhPT10LnRvcD9cInRydWVcIjpcImZhbHNlXCIpLHR6OihuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSx0d3M6am8oKS5qb2luKFwieFwiKSxiZToxLGJjOlwiaGJfcGJfMi4xLjdcIixub2NhY2hlOkRhdGUubm93KCksbnM6a28oKT8xOjAscHViY2lkOlwiXCJ9LG49dGhpcy5fZ2V0Q29tbW9uSWQoKTtyZXR1cm4gbiYmbi5sZW5ndGgmJihlLnB1YmNpZD1uKSxlfSxuLl9nZXRQb3NpdGlvblNpemVzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cIlwiKSx0Lmxlbmd0aD90aGlzLl9jb25maWcucG9zVG9rZW5NYXBbdF0uc2l6ZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdFswXStcInhcIit0WzFdfSkpLmpvaW4oXCIsXCIpOlwiXCJ9LG4uX2dldFBvc2l0aW9uRGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybnthdXM6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9nZXRQb3NpdGlvblNpemVzKHQpfSkpLmpvaW4oXCJ8XCIpLGRkZGlkOnQubWFwKChmdW5jdGlvbigpe3JldHVybiBxbygpfSkpLmpvaW4oXCIsXCIpLGF1aWQ6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9jb25maWcucG9zVG9rZW5NYXBbdF0uYXVpZHx8XCJcIn0pKS5qb2luKFwiLFwiKX19LG4uX2dldEJpZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0U2l0ZURldGFpbHMoKSxuPXtkYXRhOnt9LHRpbWVvdXQ6dGhpcy5fY29uZmlnLnRpbWVvdXQsbG9nUHJlZml4OnQuam9pbihcIixcIil9LGk9dGhpcy5fZ2V0UG9zaXRpb25EYXRhKHQpO3JldHVybiBuLmRhdGE9b28oITAse30sZSxpKSxKbyh0aGlzLl9jb25maWcuYmlkVXJsLG4se21ldGhvZDpcIkdFVFwiLGNyZWRlbnRpYWxzOlwiaW5jbHVkZVwifSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSl9LG4uX2dldEFkcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX2dldEJpZHModCkudGhlbigoZnVuY3Rpb24oaSl7cmV0dXJuIG4uX3Byb2Nlc3NCaWRSZXNwb25zZSh0LGksZSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHdvKG4uX25hbWUrXCIgRmFpbGVkIHRvIGdldCBiaWRzOiBcIisodHx8XCJcIikpLGV9KSl9LGV9KHlzKSksTHM9bmV3KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2JpZGRlcnM9e30sdGhpcy5fZGVmQ29uZmlnPXtiaWRkZXJzOltdLGJpZGRlcnNfZGlhbHVwOltdLGJpZGRlcnNPdmVycmlkZTpbXSxzaHVmZmxlQmlkZGVyczohMSx0aW1lb3V0OjNlMyx1c2VyU3luYzp7fSxncmFudWxhcml0eTpcImRlbnNlXCJ9LHRoaXMuX2NvbmZpZz10aGlzLl9kZWZDb25maWcsdGhpcy5fYWN0aXZlQmlkZGVycz1bXSx0aGlzLl9pc0RpYWx1cD0hMSx0aGlzLl9zaXRlPVwiXCIsdGhpcy5fZmlyc3RMb2FkPSEwfXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLl9yZWdpc3RlckFsbEJpZGRlcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO1ticyx3cyxJcyxDcyx4cyxQcyxUcyxFcyxScyxPcyxrc10uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2FkZEJpZGRlcihlLmdldE5hbWUoKSxlKX0pKX0sZS5pbml0PWZ1bmN0aW9uKHQpe3RoaXMuX2lzRGlhbHVwPVJvKHQuaXNEaWFsdXApLHRoaXMuX3NpdGU9dC5waEluZm8uc2l0ZSx0aGlzLl9yZWdpc3RlckFsbEJpZGRlcnMoKX0sZS5fYWRkQmlkZGVyPWZ1bmN0aW9uKHQsZSl7dGhpcy5fYmlkZGVyc1t0XT1lfSxlLl9nZXRCaWRkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5iaWRkZXJzT3ZlcnJpZGUubGVuZ3RoP3RoaXMuX2NvbmZpZy5iaWRkZXJzT3ZlcnJpZGU6dGhpcy5faXNEaWFsdXAmJnRoaXMuX2NvbmZpZy5iaWRkZXJzX2RpYWx1cC5sZW5ndGg/dGhpcy5fY29uZmlnLmJpZGRlcnNfZGlhbHVwOnRoaXMuX2NvbmZpZy5iaWRkZXJzfSxlLnVwZGF0ZUNvbmZpZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3Q9dHx8e30sdGhpcy5fY29uZmlnPW9vKCEwLHt9LHRoaXMuX2RlZkNvbmZpZyx0KSxhcy51cGRhdGVTZXR0aW5ncyh0aGlzLl9jb25maWcudXNlclN5bmMpLHRoaXMuX2FjdGl2ZUJpZGRlcnMubGVuZ3RoPTAsdGhpcy5fYWN0aXZlQmlkZGVycz10aGlzLl9nZXRCaWRkZXJzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gS3IoZS5fYmlkZGVyc1t0XSl9KSkubWFwKChmdW5jdGlvbih0KXt2YXIgbj1lLl9iaWRkZXJzW3RdLGk9ZS5fY29uZmlnW3RdfHx7fTtyZXR1cm4gbi51cGRhdGVDb25maWcoaSksbn0pKX0sZS5nZXRCaWRQb3M9ZnVuY3Rpb24odCl7cmV0dXJuKHQ9dHx8XCJcIikubGVuZ3RoP3RvKHRoaXMuX2FjdGl2ZUJpZGRlcnMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRCaWRQb3NpdGlvbnModCl9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0LmNvbmNhdChlKX0pLFtdKSk6W119LGUuX2dldERlZlJlc3BvbnNlPWZ1bmN0aW9uKHQpe3ZhciBlPXt9LG49e2luZm86XCI8RT5cIixfUVA6e30sX0NWOnt9LGFsbEJpZHM6W119O3JldHVybiBKcih0PXR8fFtdKT8odC5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPXt9LG9vKCEwLGVbdF0sbil9KSksZSk6ZX0sZS5faW5pdEJpZFJlc3BvbnNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49e30saT17aW5mbzpcIlwiLF9RUDp7fSxfQ1Y6e30sd2lubmluZ0JpZDp7aGJfcGI6XCIwXCIsaGJfYmlkZGVyOmUuZ2V0TmFtZSgpLGhiX2FkaWQ6XCJcIn19O3JldHVybiBKcih0PXR8fFtdKT8odC5mb3JFYWNoKChmdW5jdGlvbih0KXtuW3RdPXt9LG9vKCEwLG5bdF0saSksblt0XS5fUVBbZS5nZXRRUEtleSh0KV09MCxuW3RdLmluZm89ZS5nZXRMaW5lSWQodCkrXCJ8MFwifSkpLG4pOm59LGUuX2dldERlY29kZWRCaWRGcm9tQmlkZGVyPWZ1bmN0aW9uKHQpe2lmKCF0LmhiX2JpZGRlci5sZW5ndGgpcmV0dXJuIDA7dmFyIGU9dGhpcy5fYmlkZGVyc1t0LmhiX2JpZGRlcl07cmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KGUuZ2V0QmlkRnJvbUJ1Y2tldE1hcCh0LmhiX3BiKSl9LGUuX2dldEFsbEJpZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmhiX2FkaWQubGVuZ3RoPjAmJlwiMFwiIT09dC5oYl9wYn0pKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuaGJfcGIsaT10LmhiX2FkaWQscj10LmhiX2JpZGRlcixvPWUuX2dldEdyYW51bGFyaXR5UHJpY2Uobikscz17fTtyZXR1cm4gc1tcImhiX3BiX1wiK3JdPW8sc1tcImhiX2FkaWRfXCIrcl09aSxzfSkpfSxlLl9nZXRXaW5uaW5nQmlkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LG4pe3ZhciBpPWUuX2dldERlY29kZWRCaWRGcm9tQmlkZGVyKG4pO3JldHVybiBlLl9nZXREZWNvZGVkQmlkRnJvbUJpZGRlcih0KTxpP246dH0pLHtoYl9wYjpcIjBcIixoYl9iaWRkZXI6XCJcIixoYl9hZGlkOlwiXCJ9KX0sZS5fZ2V0Q3BtVGFyZ2V0PWZ1bmN0aW9uKHQsZSxuLGkpe2lmKHZvaWQgMD09PW4mJihuPTIpLHZvaWQgMD09PWkmJihpPTEpLGUubWluPD0wJiZlLm1heDw9MCYmZS5pbmNyZW1lbnQ8PTApcmV0dXJuIFN0cmluZyh0KTt2YXIgcj1lLmluY3JlbWVudCppLG89ZS5taW4qaSxzPU1hdGgucG93KDEwLG4rMiksYT0odCpzLW8qcykvKHIqcyksdT1NYXRoLmZsb29yKGEpKnIrbztyZXR1cm4odT1OdW1iZXIodS50b0ZpeGVkKDEwKSkpLnRvRml4ZWQobil9LGUuX2dldEdyYW51bGFyaXR5UHJpY2U9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9XCJcIik7aWYoIXQubGVuZ3RoKXJldHVybiB0O3ZhciBlPU51bWJlci5wYXJzZUZsb2F0KHQpO2lmKE51bWJlci5pc05hTihlKXx8ZTw9MClyZXR1cm4gdDt2YXIgbj17ZGVuc2U6e2J1Y2tldHM6W3ttaW46MCxtYXg6MyxpbmNyZW1lbnQ6LjAxfSx7bWluOjMsbWF4OjgsaW5jcmVtZW50Oi4wNX0se21pbjo4LG1heDoyMCxpbmNyZW1lbnQ6LjV9XX0sbG93OntidWNrZXRzOlt7bWluOjAsbWF4OjUsaW5jcmVtZW50Oi41fV19LG1lZGl1bTp7YnVja2V0czpbe21pbjowLG1heDoyMCxpbmNyZW1lbnQ6LjF9XX0saGlnaDp7YnVja2V0czpbe21pbjowLG1heDoyMCxpbmNyZW1lbnQ6LjAxfV19LGF1dG86e2J1Y2tldHM6W3ttaW46MCxtYXg6NSxpbmNyZW1lbnQ6LjA1fSx7bWluOjUsbWF4OjEwLGluY3JlbWVudDouMX0se21pbjoxMCxtYXg6MjAsaW5jcmVtZW50Oi41fV19fVt0aGlzLl9jb25maWcuZ3JhbnVsYXJpdHldLGk9bi5idWNrZXRzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5tYXg+ZS5tYXg/dDplfSkse21heDowfSk7aWYoZT4xKmkubWF4KXJldHVybigxKmkubWF4KS50b0ZpeGVkKDIpO3ZhciByPW4uYnVja2V0cy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gZTw9MSp0Lm1heCYmZT49MSp0Lm1pbn0pKXx8e21pbjowLG1heDowLGluY3JlbWVudDowfTtyZXR1cm4gdGhpcy5fZ2V0Q3BtVGFyZ2V0KGUsciwyLDEpfSxlLmdldEJpZHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj10aGlzLl9nZXREZWZSZXNwb25zZSh0KSxvPVtdLHM9dGhpcy5fZmlyc3RMb2FkO2lmKGU9ZXx8XCJcIiwhSnIodD10fHxbXSl8fCF0Lmxlbmd0aHx8IWUubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUocik7dmFyIGE9KG5ldyBEYXRlKS5nZXRUaW1lKCk7cmV0dXJuKHRoaXMuX2NvbmZpZy5zaHVmZmxlQmlkZGVycz9mdW5jdGlvbih0KXtpZighSnIodCkpcmV0dXJuW107Zm9yKHZhciBlPXQuc2xpY2UoKSxuPWUubGVuZ3RoO24+MDspe3ZhciBpPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpuKSxyPWVbbi09MV07ZVtuXT1lW2ldLGVbaV09cn1yZXR1cm4gZX0odGhpcy5fYWN0aXZlQmlkZGVycyk6dGhpcy5fYWN0aXZlQmlkZGVycykuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHIscyxhPWVvKHQsbi5nZXRCaWRQb3NpdGlvbnMoZSkpO2EubGVuZ3RoJiZvLnB1c2goe25hbWU6bi5nZXROYW1lKCkscHJvbWlzZTpQcm9taXNlLnJhY2UoW24uZ2V0QmlkcyhhLGkuX2luaXRCaWRSZXNwb25zZShhLG4pKSwocj1pLl9jb25maWcudGltZW91dCxzPW4uZ2V0TmFtZSgpLHZvaWQgMD09PXMmJihzPVwiXCIpLCFZcihyKXx8cjw9MD9Qcm9taXNlLnJlamVjdCgpOm5ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cy5sZW5ndGgmJihzKz1cIjpcIiksZShzK1widGltZW91dFwiKX0pLHIpfSkpKV0pfSl9KSksby5sZW5ndGg/KHRoaXMuX2ZpcnN0TG9hZD0hMSxmdW5jdGlvbih0KXt0PXR8fFtdO3ZhciBlPURhdGUubm93KCk7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybntuYW1lOnQubmFtZSxzdGF0ZTpcImZ1bGZpbGxlZFwiLHJlYXNvbjpcIlwiLHZhbHVlOm4sdHQ6RGF0ZS5ub3coKS1lfX0pLChmdW5jdGlvbihuKXtyZXR1cm57bmFtZTp0Lm5hbWUsc3RhdGU6XCJyZWplY3RlZFwiLHJlYXNvbjpuLHZhbHVlOlwiXCIsdHQ6RGF0ZS5ub3coKS1lfX0pKX0pKSl9KG8pLnRoZW4oKGZ1bmN0aW9uKGUpe3ZhciBvPWUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm5cImZ1bGZpbGxlZFwiPT09dC5zdGF0ZX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpLHU9ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVyblwiZnVsZmlsbGVkXCIhPT10LnN0YXRlfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhc29ufSkpO3UubGVuZ3RoJiZ3byhcIkhlYWRlciBiaWRkaW5nIGZhaWxlZCB3aXRoIGVycm9yIFwiK3Uuam9pbihcIixcIikpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7clt0XT1vLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIEtyKGVbdF0pfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbdF19KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVyblwiPEU+XCI9PT10LmluZm8mJih0LmluZm89XCJcIiksdC5pbmZvLmxlbmd0aCYmKHQuaW5mbys9XCI7XCIpLHQuaW5mbys9ZS5pbmZvLG9vKCEwLHQuX1FQLGUuX1FQKSxvbyghMCx0Ll9DVixlLl9DViksdH0pLHJbdF0pfSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9by5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBLcihlW3RdKX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdLndpbm5pbmdCaWR9KSksbj1pLl9nZXRXaW5uaW5nQmlkKGUpLHM9aS5fZ2V0R3JhbnVsYXJpdHlQcmljZShuLmhiX3BiKTtuLmhiX3BiPXMsclt0XS53aW5uaW5nQmlkPW4sclt0XS5hbGxCaWRzPWkuX2dldEFsbEJpZHMoZSl9KSk7dmFyIGM9KG5ldyBEYXRlKS5nZXRUaW1lKCktYSxkPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lK1wiOlwiK3QudHR9KSkuam9pbihcInxcIik7SW8oXCJiaWRzPVwiK3QubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCtcIjpcIityW3RdLmluZm99KSkuam9pbihcIixcIikrXCImdHQ9XCIrYytcInxcIitkK1wiJmR1PVwiKyhpLl9pc0RpYWx1cD8xOjApK1wiJnNpdGU9XCIraS5fc2l0ZStcIiZwbj1cIitDby5nZXRQYWdlTmFtZSgpK1wiJmZsPVwiKyhzPzE6MCkrXCImYXI9XCIrKG4/MTowKSk7dmFyIGY9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBpLl9iaWRkZXJzW3QubmFtZV19KSk7YXMuaGFuZGxlVXNlclN5bmMoZik7dmFyIGg9dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlPXJbdF0ud2lubmluZ0JpZDtyZXR1cm5cIjBcIiE9PWUuaGJfcGImJlwiXCIhPT1lLmhiX2JpZGRlcn0pKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXJbdF0ud2lubmluZ0JpZCxuPWUuaGJfcGIsbz1lLmhiX2JpZGRlcjtyZXR1cm5bdCxbaS5fYmlkZGVyc1tvXS5nZXRMaW5lSWQodCksbyxuXS5qb2luKFwifFwiKV0uam9pbihcIjpcIil9KSkuam9pbihcIixcIik7cmV0dXJuIGgubGVuZ3RoJiZJbyhcImJpZHNXb249XCIraCtcIiZzaXRlPVwiK2kuX3NpdGUpLHJ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHdvKFwiSGVhZGVyIGJpZGRpbmcgZmFpbGVkOiBcIisodHx8XCJcIikpLHJ9KSkpOlByb21pc2UucmVzb2x2ZShyKX0sZS5zZXRyZW5kZXJzaXplPWZ1bmN0aW9uKHQsZSxuKXtpZih2b2lkIDA9PT10JiYodD11bmRlZmluZWQpLHZvaWQgMD09PWUmJihlPVwiXCIpLHQmJmUubGVuZ3RoPjAmJnQuZGVmYXVsdFZpZXcmJnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KXt2YXIgaT1uLndpZHRoLHI9bi5oZWlnaHQ7dC5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQud2lkdGg9aSx0LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudC5oZWlnaHQ9cn19LGUucmVuZGVyQWQ9ZnVuY3Rpb24odCxlLG4saSxyLG8pe2lmKHRoaXMuX2JpZGRlcnNbaV0mJnQmJnQhPT10LnRvcCl7dmFyIHM9dDtpZighKG4mJnJ8fHQucGFyZW50PT09dC50b3ApKXtkb3tzPXQucGFyZW50fXdoaWxlKHMucGFyZW50IT09dC50b3AmJiFzLlVPTF9QT1MpO249cy5VT0xfUE9TLHI9c1t0aGlzLl9iaWRkZXJzW2ldLmdldENWYXIoKV19dGhpcy5fYmlkZGVyc1tpXS5yZW5kZXJBZCh0LGUsbixyLG8pLGUuY2xvc2UoKSx0aGlzLnNldHJlbmRlcnNpemUoZSxuLG8pO3ZhciBhPXMuX1FQLHU9cy5VT0xfUEFHRU5BTUV8fFwiZGVmYXVsdFwiO2lmKHRoaXMuX2JpZGRlcnNbaV0uX2RvUmVwb3J0aW5nKCkpe3ZhciBjPVwiXCIsZD1zLlVPTF9BRFJPVEFURXx8MDtpZihLcihhKSlpZihRcihjPWFbXCJoYl9wYl9cIitpXSl8fGMubGVuZ3RoPDEpe3ZhciBmPXRoaXMuX2JpZGRlcnNbaV0uZ2V0UVBLZXkobik7aWYoYS5oYl9wYil7Yz1hLmhiX3BiO3ZhciBoPWEuaGJfYmlkZGVyO2ghPT1pJiZ3byhcIkJNOjpyZW5kZXJBZDogXCIrbitcIiBwYXJ0bmVyIG1pc21hdGNoIGU6XCIraCtcIiByOlwiK2kpfWVsc2UgZiYmYVtmXSYmKGM9YVtmXSl9SW8oXCJyZW5kZXJBZDpwPVwiK2krXCImcG9zPVwiK24rXCImYmlkPVwiK2MrXCImc2l0ZT1cIit0aGlzLl9zaXRlK1wiJmxpZD1cIit0aGlzLl9iaWRkZXJzW2ldLmdldExpbmVJZChuKStcIiZwbj1cIit1K1wiJmFyPVwiKyhkPzE6MCkpfX1lbHNlIHdvKFwicmVuZGVyQWQgZmFpbGVkIHA9XCIraStcIiB3aW46XCIrKHQmJnQhPT10LnRvcD9cInZhbGlkXCI6XCJpbnZhbGlkXCIpKX0sdH0oKSksTnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fcXVldWU9W10sdGhpcy5kZWxheT0yMDAsdGhpcy5DQj16cix0aGlzLnByaW9yaXRpemVDQj16cix0aGlzLmVuZENCPXpyLHRoaXMuc2hvdWxkUHJvY2Vzc0ltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuITF9fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLnNldFByb3BlcnRpZXM9ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLmRlbGF5PXQsdGhpcy5DQj1lfHxmdW5jdGlvbigpe3JldHVybiB3byhcInNjaGVkdWxlciBqb2IgcXVldWVkIHdpdGhvdXQgY2FsbGJhY2tcIil9LHRoaXMucHJpb3JpdGl6ZUNCPW58fGZ1bmN0aW9uKCl7cmV0dXJuIDB9LHRoaXMuZW5kQ0I9aXx8enIsdGhpcy5zaG91bGRQcm9jZXNzSW1tZWRpYXRlbHk9cn0sZS5lbnF1ZXVlPWZ1bmN0aW9uKHQpe3RoaXMuc2hvdWxkUHJvY2Vzc0ltbWVkaWF0ZWx5KHQpP3RoaXMuQ0IodCk6dGhpcy5fcXVldWUucHVzaCh0KSx0aGlzLl9wcm9jZXNzUXVldWUoKX0sZS5jaGVja1F1ZXVlPWZ1bmN0aW9uKCl7dGhpcy5faXNQZW5kaW5nKCl8fHRoaXMuZW5kQ0IoKX0sZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX3F1ZXVlLmxlbmd0aD0wLHRoaXMuX2NsZWFyKCl9LGUuX3Byb2Nlc3NRdWV1ZT1mdW5jdGlvbigpeyF0aGlzLl9pc1BlbmRpbmcoKSYmdGhpcy5fcXVldWUubGVuZ3RoJiZ0aGlzLl9zY2hlZHVsZSgpLHRoaXMuY2hlY2tRdWV1ZSgpfSxlLl9wcm9jZXNzRW50cnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9jbGVhcigpLHRoaXMuX3F1ZXVlLmxlbmd0aCl7dmFyIHQ9dGhpcy5wcmlvcml0aXplQ0IodGhpcy5fcXVldWUpfHwwLGU9dGhpcy5fcXVldWUuc3BsaWNlKHQ8MD8wOnQsMSlbMF07dGhpcy5DQihlKX10aGlzLl9wcm9jZXNzUXVldWUoKX0sZS5faXNQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLl90aWR9LGUuX3NjaGVkdWxlPWZ1bmN0aW9uKCl7fSxlLl9jbGVhcj1mdW5jdGlvbigpe30sdH0oKSxNcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU7cmV0dXJuKGU9dC5jYWxsKHRoaXMpfHx0aGlzKS5fdGlkPW51bGwsZX1YbyhlLHQpO3ZhciBuPWUucHJvdG90eXBlO3JldHVybiBuLl9jbGVhcj1mdW5jdGlvbigpe3RoaXMuX3RpZCYmKGNsZWFyVGltZW91dCh0aGlzLl90aWQpLHRoaXMuX3RpZD1udWxsKX0sbi5fc2NoZWR1bGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX3RpZD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0Ll9wcm9jZXNzRW50cnkoKX0pLHRoaXMuZGVsYXkpfSxlfShOcykscXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9XCJcIiksdm9pZCAwPT09ZSYmKGU9XCJcIiksdGhpcy5fZG9jPWRvY3VtZW50LHRoaXMuX3dpbj13aW5kb3csdGhpcy5fbmFtZT10LHRoaXMuX2FzPWV9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuZ2V0QVM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXN9LGUucmVuZGVyQWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4hMH0sdH0oKSxWcz1uZXcoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcyxcImFwcG5leHVzUmVuZGVyZXJcIixcImFwcG5leHVzQVNcIil8fHRoaXN9cmV0dXJuIFhvKGUsdCksZS5wcm90b3R5cGUucmVuZGVyQWQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT1cIlwiKTt2YXIgbj10LmlkfHxcIlwiO2lmKCFuLmxlbmd0aHx8MD09PWUubGVuZ3RoKXJldHVybiExO3ZhciBpPXRoaXMuX2RvYy5nZXRFbGVtZW50QnlJZChlKTtpZighaSlyZXR1cm4hMTtVbyh0aGlzLl9kb2MsaSxcIlwiKTt0cnl7Ym8odGhpcy5fbmFtZStcIiByZW5kZXJpbmcgXCIrbitcIiBpbiBcIitlKTt2YXIgcj10aGlzLl93aW4uYXBudGFnO3IuYW5xLnB1c2goKGZ1bmN0aW9uKCl7ci5zaG93VGFnKGUpfSkpfWNhdGNoKHRhKXtyZXR1cm4gd28odGhpcy5fbmFtZStcIiBhcHBuZXh1cyBzaG93VGFnIGZhaWxlZCBmb3IgXCIrbitcIiBcIit0YS5tZXNzYWdlKSwhMX1yZXR1cm4hMH0sZX0ocXMpKSxGcz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQ9dGhpczt0aGlzLl9hZEluZm89e30sdGhpcy5fYWRQYWdlPVwiXCIsdGhpcy5fZG9jPWRvY3VtZW50LHRoaXMuX3dpbj13aW5kb3csdGhpcy5fc2l0ZT1cIlwiLHRoaXMuX2RlZkNvbmZpZz17ZGVsYXk6MjAwLGVuYWJsZVJBRlNjaGVkdWxlcjohMSxzYW5kYm94OlwiXCJ9LHRoaXMuX2NvbmZpZz1vbyghMCx7fSx0aGlzLl9kZWZDb25maWcpLHRoaXMuX1JBRlNjaGVkdWxlcj1uZXcgTnMsdGhpcy5fdGltZWRTY2hlZHVsZXI9bmV3IE1zLFt0aGlzLl9SQUZTY2hlZHVsZXIsdGhpcy5fdGltZWRTY2hlZHVsZXJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNldFByb3BlcnRpZXModC5fY29uZmlnLmRlbGF5LChmdW5jdGlvbihlKXtyZXR1cm4gdC5sb2FkSWZyYW1lQWQoZSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3ByaW9yaXRpemVBYm92ZUZvbGQoZSl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gc3MudHJpZ2dlcigpfSksKGZ1bmN0aW9uKGUpe3JldHVybiB0LnNob3VsZFByb2Nlc3NJbW1lZGlhdGVseShlKX0pKX0pKSx0aGlzLl9zY2hlZHVsZXI9dGhpcy5fZ2V0U2NoZWR1bGVyKCk7dmFyIGU9bmV3IHFzKFwiZ29vZ2xlUmVuZGVyZXJcIixcImdvb2dsZUFTXCIpO3RoaXMuX2FkcmVuZGVyZXJzPVtWcyxlXX12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5pbml0PWZ1bmN0aW9uKHQsZSxuKXt0aGlzLl9hZFBhZ2U9bi5hZFBhZ2UsdGhpcy5fZG9jPWUsdGhpcy5fd2luPXQsdGhpcy5fc2l0ZT1uLnBoSW5mby5zaXRlLGVzLmluaXQodCxlLG4pfSxlLnVwZGF0ZUNvbmZpZz1mdW5jdGlvbih0KXt0aGlzLl9jb25maWc9b28oITAse30sdGhpcy5fZGVmQ29uZmlnLHQpLHRoaXMuX3NjaGVkdWxlcj10aGlzLl9nZXRTY2hlZHVsZXIoKX0sZS5fcHJpb3JpdGl6ZUFib3ZlRm9sZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5maW5kSW5kZXgoKGZ1bmN0aW9uKHQpe3JldHVybiBDby5nZXRQb3NTZXR0aW5ncyh0LmlkKS5hRm9sZH0pKX0sZS5fZ2V0U2NoZWR1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5lbmFibGVSQUZTY2hlZHVsZXImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fUkFGU2NoZWR1bGVyOnRoaXMuX3RpbWVkU2NoZWR1bGVyfSxlLl9sb2FkQWRDb250ZW50SW5PbGRJRT1mdW5jdGlvbih0KXt2YXIgZT1lcy5nZXRBZENvbnRhaW5lcigpLmxvYWRJZnJhbWVBZChcIlwiLHQpO2lmKGUpe3ZhciBuPUZvKGUpO3RyeXtpZihuKXtuLm9wZW4oKTt2YXIgaT1cIjxzY3JpcHQ+d2luZG93LnRvcC5fX2FzLnBvcHVsYXRlQ3VzdG9tVmFyKHdpbmRvdywgZG9jdW1lbnQsICdcIit0LmlkK1wiJyk7PFxcL3NjcmlwdD5cIjtpPXQuYWRkQm9keVRhZz9cIjxodG1sPjxoZWFkPlwiK2krXCI8L2hlYWQ+PGJvZHk+XCIrdC5jb250ZW50K1wiPC9ib2R5PjwvaHRtbD5cIjpcIlwiK2krdC5jb250ZW50LG4ud3JpdGUoaSksMiE9PXQuYXMubG9hZGluZ01ldGhvZHx8eG8uaXNPbGRJRSgpfHxuLmNsb3NlKCl9fWNhdGNoKHRhKXt3byhcImxvYWRBZENvbnRlbnQgXCIrdC5pZCtcIiBpZnJhbWUgZG9jIHdyaXRlIGZhaWxlZDogXCIrdGEubWVzc2FnZSl9fX0sZS5zaG91bGRQcm9jZXNzSW1tZWRpYXRlbHk9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQuYWRTZXJ2ZXIsbj12b2lkIDA9PT1lP1wiXCI6ZSxpPSExO3JldHVybiBuLmxlbmd0aCYmKGk9Qm9vbGVhbih0aGlzLl9hZHJlbmRlcmVycy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRBUygpPT09bn0pKSkpLGl9LGUubG9hZElmcmFtZUFkPWZ1bmN0aW9uKHQpe3RoaXMuX2FkSW5mb1t0LmlkXT1vbyghMCx7fSx0KTt2YXIgZT0hMTtpZih0LmFkU2VydmVyLmxlbmd0aCl7dmFyIG49dC5jSUR8fGVzLmdldEFkQ29udGFpbmVySW5mbyh0LmlkLCExKS5jSUR8fFwiXCIsaT10aGlzLl9hZHJlbmRlcmVycy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBUygpPT09dC5hZFNlcnZlcn0pKTtpJiYoZT1pLnJlbmRlckFkKHQsbikpJiZ0LmFkUm90YXRpb24mJnRoaXMudG9nZ2xlQWRCeUNJRCh0LmlkLG4pfXJldHVybiBlP3VuZGVmaW5lZDoyPT09dC5hcy5sb2FkaW5nTWV0aG9kfHx4by5pc09sZElFKCk/dGhpcy5fbG9hZEFkQ29udGVudEluT2xkSUUodCk6ZXMuZ2V0Q29udGFpbmVyKHQuaWQpLmxvYWRJZnJhbWVBZCh0aGlzLl9hZFBhZ2UsdCl9LGUuX2xvYWRHbG9iYWxTY3JpcHRDc3NBZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49b28oITAse30se2pzOltdLGNzczpbXX0sUG8odGhpcy5fd2luLHQpKTtuLmpzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBTbyh0LGUuX2RvYyl9KSksbi5jc3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLGkpe3ZvaWQgMD09PWkmJihpPVwiYWxsXCIpO3ZhciByPWUuY3JlYXRlRWxlbWVudChcImxpbmtcIiksbz1ufHxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpWzBdO3JldHVybiByLnJlbD1cInN0eWxlc2hlZXRcIixyLmhyZWY9dCxyLm1lZGlhPVwib25seSB4XCIsbyYmby5wYXJlbnROb2RlJiZvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsbyksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyLm1lZGlhPWl9KSkscn0odCxlLl9kb2MpfSkpfSxlLnBvcHVsYXRlQ3VzdG9tVmFyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9hZEluZm9bbl07bnVsbCE9aSYmT2JqZWN0LmtleXMoaS5jdXN0b21WYXJzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWkuY3VzdG9tVmFyc1tlXX0pKX0sZS5nZXRBZEluZm89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkSW5mb1t0XX0sZS5nZXRJRnJhbWVBZEluZm89ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9dW5kZWZpbmVkKTt2YXIgZT17YWRSb3RhdGlvbjohMSxpZDpcIlwiLGNvbnRlbnQ6XCJcIixjdXN0b21WYXJzOnt9LGNJRDpcIlwiLGZJRDpcIlwiLGFkU2VydmVyOlwiXCIsYWRkQm9keVRhZzohMSxhczp7YXM6XCJvcGVueFwiLGhlaWdodDoxLHdpZHRoOjF9fTtpZighdHx8IXQuZnJhbWVFbGVtZW50KXJldHVybiBlO3ZhciBuPXQuZnJhbWVFbGVtZW50LmlkfHxcIlwiO3JldHVybiBuLmxlbmd0aD90aGlzLmdldEFkSW5mbyhlcy5nZXROb25DYWNoZWRQb3NOYW1lKG4pKTplfSxlLmNsZWFyTGlzdD1mdW5jdGlvbigpe3RoaXMuX3NjaGVkdWxlci5jbGVhcigpfSxlLmNoZWNrUXVldWU9ZnVuY3Rpb24oKXt0aGlzLl9zY2hlZHVsZXIuY2hlY2tRdWV1ZSgpfSxlLmdldEFkQ29udGV4dEluZm89ZnVuY3Rpb24odCl7cmV0dXJue3BhZ2VOYW1lOkNvLmdldFBhZ2VOYW1lKCkscG9zOnQsc2l0ZTp0aGlzLl9zaXRlfX0sZS5sb2FkPWZ1bmN0aW9uKHQsZSxuLGkscixvKXtpZih2b2lkIDA9PT1pJiYoaT1cIlwiKSx2b2lkIDA9PT1yJiYocj0hMSksdm9pZCAwPT09byYmKG89XCJcIiksZT1lfHxcIlwiLCEodD10fHxcIlwiKS5sZW5ndGgpcmV0dXJuITE7dmFyIHM9XCJcIjtXcihlKT9zPWUuY2FsbCh0aGlzLl93aW4sQ28uZ2V0UGFnZU5hbWUoKSx0KTokcihlKSYmKHM9ZSk7dmFyIGE9Q28uZ2V0UG9zU2V0dGluZ3ModCk7aWYoYS5pZnJhbWUhPT11bmRlZmluZWQmJiFhLmlmcmFtZSYmJHIocykpcmV0dXJuIGVzLmdldEFkQ29udGFpbmVyKCkubG9hZE5vbklmcmFtZUFkKHQscyk7aWYoYS5nc2NyaXB0IT09dW5kZWZpbmVkJiZhLmdzY3JpcHQmJiRyKHMpKXJldHVybiB0aGlzLl9sb2FkR2xvYmFsU2NyaXB0Q3NzQWQocyk7dmFyIHU9YS5jYWxsYmFjayxjPXZvaWQgMD09PXU/XCJcIjp1LGQ9Yy5sZW5ndGg/dGhpcy5fd2luW2NdOnVuZGVmaW5lZDtpZihkJiZkIT09dW5kZWZpbmVkJiZXcihkKSl7dmFyIGY9b28oITAse2JIYW5kbGVkOiExLGRhdGE6cz1zLnJlcGxhY2UoL15cXHMrfFxccyskfChcXHJcXG4pL2csXCJcIil9LGQuY2FsbCh0aGlzLl93aW4sQ28uZ2V0UGFnZU5hbWUoKSx0LHMpKTtpZihmLmJIYW5kbGVkKXJldHVybiEwO3M9Zi5kYXRhfXJldHVybiBLcihuKXx8KG49e30pLHRoaXMuX3NjaGVkdWxlci5lbnF1ZXVlKHtpZDp0LGNvbnRlbnQ6cyxjdXN0b21WYXJzOm4sYWRSb3RhdGlvbjplcy5pc0NhY2hpbmdFbmFibGVkKHQsYS5pZnJhbWUpLHNhbmRib3g6dGhpcy5fY29uZmlnLnNhbmRib3gsYXM6YSxjSUQ6byxmSUQ6XCJcIixhZFNlcnZlcjppLGFkZEJvZHlUYWc6cn0pfSxlLnRvZ2dsZUFEPWZ1bmN0aW9uKHQpe2VzLmdldENhY2hlZENvbnRhaW5lcigpLnRvZ2dsZUFkKHQpfSxlLnRvZ2dsZUFkQnlDSUQ9ZnVuY3Rpb24odCxlKXtlcy5nZXRDYWNoZWRDb250YWluZXIoKS50b2dnbGVBZEJ5Q0lEKHQsZSl9LHR9KCkpLFVzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2RvYz1kb2N1bWVudCx0aGlzLl93aW49d2luZG93LHRoaXMuX2lzRGlhbHVwPSExLHRoaXMuX2JyYW5kPVwiXCIsdGhpcy5fUVBWYXJzPXt9LHRoaXMuX2RlZkNvbmZpZz17ZW5hYmxlU2VuZEFsbEJpZHM6MCxsaWI6XCJcIix0aW1lb3V0OjFlNH0sdGhpcy5fY29uZmlnPW9vKCEwLHRoaXMuX2RlZkNvbmZpZyl9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuaW5pdD1mdW5jdGlvbih0LGUsbil7dGhpcy5fZG9jPWUsdGhpcy5fd2luPXQsdGhpcy5faXNEaWFsdXA9bi5pc0RpYWx1cCx0aGlzLl9icmFuZD1uLnBoSW5mby5icmFuZCx0aGlzLl9RUFZhcnM9bi5RUFZhcnN9LGUuX3ByZVVwZGF0ZUNvbmZpZz1mdW5jdGlvbigpe30sZS51cGRhdGVDb25maWc9ZnVuY3Rpb24odCl7S3IodCkmJih0aGlzLl9wcmVVcGRhdGVDb25maWcoKSx0aGlzLl9jb25maWc9b28oITAse30sdGhpcy5fZGVmQ29uZmlnLHQpLHRoaXMuX3Bvc3RVcGRhdGVDb25maWcoKSl9LGUuX3Bvc3RVcGRhdGVDb25maWc9ZnVuY3Rpb24oKXt9LGUuZ2V0TmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlLl9nZXRDdXN0b21WYXJzPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPWUmJmVbdF0/ZVt0XTp7fTtyZXR1cm4gb28oITAse1VPTF9QT1M6dCxVT0xfUEFHRU5BTUU6Q28uZ2V0UGFnZU5hbWUoKSxVT0xfQURST1RBVEU6aX0sbixyLl9DVix7X1FQOnRoaXMuX2dldFF1ZXJ5UGFyYW1zKHQsZSxpKX0pfSxlLl9nZXRPcGVueFBhcmFtcz1mdW5jdGlvbih0KXtyZXR1cm4gb28oITAse30sdGhpcy5fUVBWYXJzLHt1b2xwYWdlbmFtZTpDby5nZXRQYWdlTmFtZSgpLHVvbGRpYWx1cDpSbyh0aGlzLl9pc0RpYWx1cCksdW9sYnJhbmQ6dGhpcy5fYnJhbmQsdW9scm90YXRlOnR9KX0sZS5fcG9zdEluaXQ9ZnVuY3Rpb24oKXt9LGUuX2dldEJpZHNGb3JQYXJhbXM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD1cIlwiKSx2b2lkIDA9PT1lJiYoZT17fSk7dmFyIG49e307aWYoIXQubGVuZ3RofHwhS3IoZSl8fCFLcihlW3RdKSlyZXR1cm4gbjt2YXIgaT1lW3RdfHx7fSxyPWkud2lubmluZ0JpZCxvPXZvaWQgMD09PXI/e2hiX3BiOlwiXCIsaGJfYmlkZGVyOlwiXCIsaGJfYWRpZDpcIlwifTpyLHM9aS5hbGxCaWRzO3JldHVybiBvLmhiX3BiLmxlbmd0aD4wJiZvLmhiX2FkaWQubGVuZ3RoPjAmJm8uaGJfYmlkZGVyLmxlbmd0aD4wJiYobj1vKSwyPT09dGhpcy5fY29uZmlnLmVuYWJsZVNlbmRBbGxCaWRzP249b28uYXBwbHkodm9pZCAwLFshMCxuXS5jb25jYXQocykpOjE9PT10aGlzLl9jb25maWcuZW5hYmxlU2VuZEFsbEJpZHMmJihuPW9vLmFwcGx5KHZvaWQgMCxbITBdLmNvbmNhdChzKSkpLG59LGUuX2dldFF1ZXJ5UGFyYW1zPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1vbyghMCx7VU9MX1BPUzp0fSx0aGlzLl9nZXRCaWRzRm9yUGFyYW1zKHQsZSksdGhpcy5fZ2V0T3BlbnhQYXJhbXMobikpLHI9e307cmV0dXJuIE9iamVjdC5rZXlzKGkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbdF09U3RyaW5nKGlbdF0pfSkpLHJ9LGUuX2xvYWRMaWJyYXJ5PWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PVwiXCIpLHQubGVuZ3RoJiZTbyh0LHRoaXMuX2RvYyl9LGUuX2lzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUuY2xlYXJBZFJlcXVlc3RzPWZ1bmN0aW9uKCl7fSxlLmxvYWRBZHM9ZnVuY3Rpb24odCxlLG4saSl7d28odGhpcy5fbmFtZStcIiBEbyBub3QgY2xhc3MgYmFzZSBjbGFzcyBsb2FkQWRzKClcIil9LHR9KCksenM9bmV3KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG47cmV0dXJuKG49dC5jYWxsKHRoaXMpfHx0aGlzKS5fbmFtZT1lLG4uX2RlZkNvbmZpZz1vbyghMCx7fSxuLl9kZWZDb25maWcse2xpYjpcIi8vYWNkbi5hZG54cy5jb20vYXN0L2FzdC5qc1wiLHVybDpcImh0dHBzOi8vc2VjdXJlLmFkbnhzLmNvbS90dGo/XCIsdGltZW91dDoxZTQsaWQ6XCI3NDg1XCJ9KSxuLl9jb25maWc9b28oITAsbi5fZGVmQ29uZmlnKSxuLl9jVmFycz17fSxuLl9saWJBbHJlYWR5TG9hZGVkPSExLG4uX29sZExpYj1cIlwiLG4uX3RhcmdldFRvUG9zPXt9LG59WG8oZSx0KTt2YXIgbj1lLnByb3RvdHlwZTtyZXR1cm4gbi5pbml0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3QucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLl93aW4uYXBudGFnPXRoaXMuX3dpbi5hcG50YWd8fHt9LHRoaXMuX3dpbi5hcG50YWcuYW5xPXRoaXMuX3dpbi5hcG50YWcuYW5xfHxbXSx0aGlzLl93aW4uYXBudGFnLmFucS5wdXNoKChmdW5jdGlvbigpe3ZhciB0PXIuX3dpbi5hcG50YWc7X28oKSYmdC5lbmFibGVEZWJ1ZygpLHQub25FdmVudChcImFkQXZhaWxhYmxlXCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXIuX2dldFBvc0Zyb21UYXJnZXRJZCh0KTtlLmxlbmd0aCYmRnMubG9hZChlLFwiXCIsci5fY1ZhcnNbZV0sci5fbmFtZSl9KSksdC5vbkV2ZW50KFwiYWROb0JpZFwiLChmdW5jdGlvbih0KXt2YXIgZT1yLl9nZXRQb3NGcm9tVGFyZ2V0SWQodCk7d28oci5fbmFtZStcIiBObyBiaWQgcmVzcG9uc2UgZm9yIHBvc2l0aW9uIDogXCIrZSl9KSksdC5vbkV2ZW50KFwiYWRSZXF1ZXN0RmFpbHVyZVwiLChmdW5jdGlvbih0KXt3byhyLl9uYW1lK1wiIFJlcXVlc3QgZmFpbHVyZSBmb3IgcG9zaXRpb24gXCIrKHQudGFyZ2V0SWR8fFwiXCIpK1wiIHdpdGggZXJyb3IgOiBcIisodC5lcnJNZXNzYWdlfHxcIlwiKSl9KSksdC5vbkV2ZW50KFwiYWRCYWRSZXF1ZXN0XCIsKGZ1bmN0aW9uKHQpe3dvKHIuX25hbWUrXCIgQmFkIHJlcXVlc3QgZm9yIHBvc2l0aW9uIFwiKyh0LnRhcmdldElkfHxcIlwiKStcIiB3aXRoIGVycm9yIDogXCIrKHQuZXJyTWVzc2FnZXx8XCJcIikpfSkpfSkpfSxuLl9wcmVVcGRhdGVDb25maWc9ZnVuY3Rpb24oKXt0aGlzLl9vbGRMaWI9dGhpcy5fY29uZmlnLmxpYnx8XCJcIn0sbi5faW5pdEFkTGlicmFyeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl93aW4uYXBudGFnO2UuYW5xLnB1c2goKGZ1bmN0aW9uKCl7ZS5zZXRQYWdlT3B0cyh7bWVtYmVyOnQuX2NvbmZpZy5pZH0pfSkpfSxuLl9wb3N0VXBkYXRlQ29uZmlnPWZ1bmN0aW9uKCl7dGhpcy5fbGliQWxyZWFkeUxvYWRlZCYmdGhpcy5fb2xkTGliPT09dGhpcy5fY29uZmlnLmxpYnx8eG8uaXNPbGRJRSgpfHwodGhpcy5fbG9hZExpYnJhcnkodGhpcy5fY29uZmlnLmxpYiksdGhpcy5fbGliQWxyZWFkeUxvYWRlZD0hMCx0aGlzLl9pbml0QWRMaWJyYXJ5KCkpfSxuLmNsZWFyQWRSZXF1ZXN0cz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dpbi5hcG50YWc7dC5hbnEucHVzaCgoZnVuY3Rpb24oKXt0LmNsZWFyUmVxdWVzdCgpfSkpLHRoaXMuX2luaXRBZExpYnJhcnkoKSx0aGlzLl9jVmFycz17fSx0aGlzLl90YXJnZXRUb1Bvcz17fX0sbi5fZ2V0UG9zRnJvbVRhcmdldElkPWZ1bmN0aW9uKHQpe3ZhciBlPXQudGFnSWQsbj12b2lkIDA9PT1lPzA6ZSxpPXQudGFyZ2V0SWQscj12b2lkIDA9PT1pP1wiXCI6aTtyZXR1cm4gci5sZW5ndGg/dGhpcy5fdGFyZ2V0VG9Qb3Nbcl18fFwiXCI6dGhpcy5fZ2V0UG9zRnJvbVRhZ0lkKG4pfSxuLl9nZXRQb3NGcm9tVGFnSWQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9MCk7dmFyIGU9XCJcIjtyZXR1cm4gMD09PXQ/ZTplPUNvLmdldFBhZ2VQb3NpdGlvbnMoKS5maW5kKChmdW5jdGlvbihlKXt2YXIgbj1Dby5nZXRQb3NTZXR0aW5ncyhlKTtyZXR1cm4gWXIobi50YWdJZCkmJm4udGFnSWQ9PT10fSkpfHxlfSxuLl9nZXRUYWdJRD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJcIiksQ28uZ2V0UG9zU2V0dGluZ3ModCkudGFnSWR8fDB9LG4uX2dldFNpemVzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cIlwiKSxDby5nZXRQb3NTZXR0aW5ncyh0KS5zaXplc3x8W119LG4uX2dldEFkQ29udGVudD1mdW5jdGlvbih0KXt2YXIgZT10LnRhZ0lkLG49dC5zaXplcyxpPVwiXCI7bi5sZW5ndGgmJihpPW4uc2hpZnQoKS5qb2luKFwieFwiKSk7aWYoMD09PWV8fDA9PT1pLmxlbmd0aClyZXR1cm5cIlwiO3ZhciByPU9iamVjdC5lbnRyaWVzKHQua2V5d29yZHMpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9dFswXSxuPXRbMV07cmV0dXJuIGUrXCI9XCIrU3RyaW5nKG4pfSkpLmpvaW4oXCImXCIpO3JldHVyblwiPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nXCIrdGhpcy5fY29uZmlnLnVybCtcImlkPVwiK2UrXCImc2l6ZT1cIitpK1wiJlwiK3IrXCInPjxcXC9zY3JpcHQ+XCJ9LG4ubG9hZEFkc05vQVNUPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9dFtuXSxyPWUuX2dldEFkQ29udGVudChpKTtyLmxlbmd0aCYmRnMubG9hZChuLHIsZS5fY1ZhcnNbbl0sXCJcIiwhMCl9KSl9LG4ubG9hZEFkcz1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzO2U9ZXx8e30sbj1ufHx7fSwodD10fHxbXSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ci5fY1ZhcnNbdF09ci5fZ2V0Q3VzdG9tVmFycyh0LGUsbixpKX0pKTt2YXIgbz17fTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2VzLmNyZWF0ZUNvbnRhaW5lcnModCk7dmFyIG49ZXMuZ2V0QWRDb250YWluZXJJbmZvKHQsITEpO3IuX3RhcmdldFRvUG9zW24uY0lEXT10O3ZhciBzPXIuX2dldFF1ZXJ5UGFyYW1zKHQsZSxpKXx8e307b1t0XT17dGFnSWQ6ci5fZ2V0VGFnSUQodCksc2l6ZXM6ci5fZ2V0U2l6ZXModCksdGFyZ2V0SWQ6bi5jSUQsa2V5d29yZHM6c319KSk7dmFyIHM9dGhpcy5fd2luLmFwbnRhZztzJiZzLmFucSYmdGhpcy5fbGliQWxyZWFkeUxvYWRlZD8oYm8odGhpcy5fbmFtZStcIiBxdWV1ZWluZyB1cCBcIit0LmpvaW4oXCIsXCIpKSxzLmFucS5wdXNoKChmdW5jdGlvbigpe3RyeXtPYmplY3Qua2V5cyhvKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBzLmRlZmluZVRhZyh0KX0pKSxzLmxvYWRUYWdzKCl9Y2F0Y2godGEpe3dvKHIuX25hbWUrXCIgYXBwbmV4dXMgbGlicmFyeSBjYWxscyBmYWlsdXJlIFwiK3RhLm1lc3NhZ2UpfX0pKSk6KGJvKHRoaXMuX25hbWUrXCIgcmVuZGVyaW5nIFwiK3Quam9pbihcIixcIikrXCIgdXNpbmcgZG9jLndyaXRlXCIpLHRoaXMubG9hZEFkc05vQVNUKG8pKSxGcy5jaGVja1F1ZXVlKCl9LGV9KFVzKSkoXCJhcHBuZXh1c0FTXCIpLEhzPW5ldyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuO3JldHVybihuPXQuY2FsbCh0aGlzKXx8dGhpcykuX25hbWU9ZSxuLl9kZWZDb25maWc9b28oITAse30sbi5fZGVmQ29uZmlnLHtsaWI6XCJcIix0aW1lb3V0OjFlNCx1cmw6XCJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9nYW1wYWQvYWR4P1wifSksbi5fY29uZmlnPW9vKCEwLG4uX2RlZkNvbmZpZyksbi5fY1ZhcnM9e30sbi5fbGliQWxyZWFkeUxvYWRlZD0hMSxuLl9vbGRMaWI9XCJcIixuLl90YXJnZXRUb1Bvcz17fSxufVhvKGUsdCk7dmFyIG49ZS5wcm90b3R5cGU7cmV0dXJuIG4uaW5pdD1mdW5jdGlvbihlLG4saSl7dmFyIHI9dGhpczt0LnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fd2luLmdvb2dsZXRhZz10aGlzLl93aW4uZ29vZ2xldGFnfHx7Y21kOltdfSx0aGlzLl93aW4uZ29vZ2xldGFnLmNtZC5wdXNoKChmdW5jdGlvbigpe3ZhciB0PXIuX3dpbi5nb29nbGV0YWc7X28oKSYmdC5vcGVuQ29uc29sZSgpO3ZhciBlPXQucHViYWRzKCk7ZS5hZGRFdmVudExpc3RlbmVyKFwic2xvdFJlcXVlc3RlZFwiLChmdW5jdGlvbih0KXt2YXIgZT10LnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpLG49ci5fZ2V0UG9zRnJvbVRhcmdldElkKGUpO2JvKHIuX25hbWUrXCIgcmVxdWVzdGVkICBzbG90IElEOiBcIitlK1wiIFBvczogXCIrbiksbi5sZW5ndGgmJkZzLmxvYWQobixcIlwiLHIuX2NWYXJzW25dLHIuX25hbWUsITEsZSl9KSksZS5hZGRFdmVudExpc3RlbmVyKFwic2xvdFJlc3BvbnNlUmVjZWl2ZWRcIiwoZnVuY3Rpb24odCl7dmFyIGU9dC5zbG90LmdldFNsb3RFbGVtZW50SWQoKSxuPXIuX2dldFBvc0Zyb21UYXJnZXRJZChlKTtibyhyLl9uYW1lK1wiIHJlc3BvbnNlIHJlY2VpdmVkIHNsb3QgSUQ6IFwiK2UrXCIgUG9zOiBcIituKX0pKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJzbG90UmVuZGVyRW5kZWRcIiwoZnVuY3Rpb24odCl7Ym8oci5fbmFtZStcIiByZW5kZXJlZCBzbG90IElEOiBcIit0LnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpKX0pKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJzbG90T25sb2FkXCIsKGZ1bmN0aW9uKHQpe2JvKHIuX25hbWUrXCIgb24gbG9hZGluZyBzbG90IElEIDogXCIrdC5zbG90LmdldFNsb3RFbGVtZW50SWQoKSl9KSksZS5hZGRFdmVudExpc3RlbmVyKFwic2xvdFZpc2liaWxpdHlDaGFuZ2VkXCIsKGZ1bmN0aW9uKHQpe2JvKHIuX25hbWUrXCIgIFZpc2liaWxpdHkgQ2hhbmdpbmcgc2xvdCBJRCA6IFwiK3Quc2xvdC5nZXRTbG90RWxlbWVudElkKCkpfSkpLGUuYWRkRXZlbnRMaXN0ZW5lcihcImltcHJlc3Npb25WaWV3YWJsZVwiLChmdW5jdGlvbih0KXtibyhyLl9uYW1lK1wiICBJbXByZXNzaW9uIHZpZXdhYmxlIHNsb3QgSUQgOiBcIit0LnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpKX0pKX0pKX0sbi5fcHJlVXBkYXRlQ29uZmlnPWZ1bmN0aW9uKCl7dGhpcy5fb2xkTGliPXRoaXMuX2NvbmZpZy5saWJ8fFwiXCJ9LG4uX3Bvc3RVcGRhdGVDb25maWc9ZnVuY3Rpb24oKXt0aGlzLl9jb25maWcubGliLmxlbmd0aCYmKHRoaXMuX2xpYkFscmVhZHlMb2FkZWQmJnRoaXMuX29sZExpYj09PXRoaXMuX2NvbmZpZy5saWJ8fHhvLmlzT2xkSUUoKXx8KHRoaXMuX2xvYWRMaWJyYXJ5KHRoaXMuX2NvbmZpZy5saWIpLHRoaXMuX2xpYkFscmVhZHlMb2FkZWQ9ITApKX0sbi5jbGVhckFkUmVxdWVzdHM9ZnVuY3Rpb24oKXt0aGlzLl9jVmFycz17fSx0aGlzLl90YXJnZXRUb1Bvcz17fX0sbi5fZ2V0UG9zRnJvbVRhcmdldElkPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD1cIlwiKSx0aGlzLl90YXJnZXRUb1Bvc1t0XXx8XCJcIn0sbi5fZ2V0YWRVbml0UGF0aD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9XCJcIiksQ28uZ2V0UG9zU2V0dGluZ3ModCkuYWRVbml0UGF0aHx8XCJcIn0sbi5fZ2V0U2l6ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PVwiXCIpLENvLmdldFBvc1NldHRpbmdzKHQpLnNpemVzfHxbXX0sbi5fZ2V0QWRDb250ZW50PWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9XCJcIik7dmFyIG49dGhpcy5fZ2V0YWRVbml0UGF0aCh0KSxpPXFvKCkscj10aGlzLl9nZXRTaXplcyh0KSxvPUNvLmdldFBvc1NldHRpbmdzKHQpLndpZHRofHxcIlwiLHM9Q28uZ2V0UG9zU2V0dGluZ3ModCkuaGVpZ2h0fHxcIlwiLGE9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmpvaW4oXCJ4XCIpfSkpLmpvaW4oXCJ8XCIpO2lmKDA9PT1uLmxlbmd0aHx8MD09PWEubGVuZ3RoKXJldHVyblwiXCI7dmFyIHU9cm8oe2l1Om4sc3o6YSxjOmksdDpPYmplY3QuZW50cmllcyhlKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0sbj10WzFdO3JldHVybiBlK1wiPVwiK1N0cmluZyhuKX0pKS5qb2luKFwiJlwiKX0pLGM9XCJcIit0aGlzLl9jb25maWcudXJsK3U7cmV0dXJuIGJvKHRoaXMuX25hbWUrXCIgSUZyYW1lIFVSTDogXCIrYyksXCI8aWZyYW1lIHNyYz0nXCIrYysnXFwnIGZyYW1lQm9yZGVyPTAgbWFyZ2luV2lkdGg9MCBtYXJnaW5IZWlnaHQ9MCBzY3JvbGxpbmc9bm8gYWxsb3dUcmFuc3BhcmVuY3kgdG9wbWFyZ2luPVwiMFwiIGxlZnRtYXJnaW49XCIwXCIgYmFja2dyb3VuZENvbG9yPVwidHJhbnNwYXJhbnRcIiB3aWR0aD0nK28rXCIgaGVpZ2h0PVwiK3MrXCI+PC9pZnJhbWU+XCJ9LG4ubG9hZEFkc05vR1BUPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09dCYmKHQ9XCJcIik7dmFyIG49dGhpcy5fZ2V0QWRDb250ZW50KHQsZSk7bi5sZW5ndGg/RnMubG9hZCh0LG4sdGhpcy5fY1ZhcnNbdF0sXCJcIiwhMCk6Ym8odGhpcy5fbmFtZStcIiBhZGNvbnRlbnQgbm90IGF2YWxpYWJsZVwiKX0sbi5sb2FkQWRzPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXM7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPXt9KSx2b2lkIDA9PT1uJiYobj17fSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyLl9jVmFyc1t0XT1yLl9nZXRDdXN0b21WYXJzKHQsZSxuLGkpfSkpO3ZhciBvPXt9LHM9e307aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtlcy5jcmVhdGVDb250YWluZXJzKHQpO3ZhciBuPWVzLmdldEFkQ29udGFpbmVySW5mbyh0LCExKTtyLl90YXJnZXRUb1Bvc1tuLmNJRF09dCxvW3RdPW4uY0lELHNbdF09ci5fZ2V0UXVlcnlQYXJhbXModCxlLGkpfHx7fX0pKSx0aGlzLl9saWJBbHJlYWR5TG9hZGVkKXtibyh0aGlzLl9uYW1lK1wiIHF1ZXVlaW5nIHVwIFwiK3Quam9pbihcIixcIikpLGJvKHRoaXMuX25hbWUrXCIgQ29udGFpbmVycyBhcmUgXCIrT2JqZWN0LnZhbHVlcyhvKS5qb2luKFwiLFwiKSk7dmFyIGE9dGhpcy5fd2luLmdvb2dsZXRhZzthLmNtZC5wdXNoKChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC52YWx1ZXMobyksZT1hLnB1YmFkcygpLmdldFNsb3RzKCkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdC5pbmNsdWRlcyhlLmdldFNsb3RFbGVtZW50SWQoKSl9KSk7Ym8oci5fbmFtZStcIiBEZXN0cm95aW5nIHNsb3RzIFwiK2UubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRTbG90RWxlbWVudElkKCl9KSkuam9pbihcIixcIikpLGEuZGVzdHJveVNsb3RzKGUpfSkpLGEuY21kLnB1c2goKGZ1bmN0aW9uKCl7dHJ5e3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9YS5kZWZpbmVTbG90KHIuX2dldGFkVW5pdFBhdGgodCksci5fZ2V0U2l6ZXModCksb1t0XSkuYWRkU2VydmljZShhLnB1YmFkcygpKTtPYmplY3QuZW50cmllcyhzW3RdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10WzBdLGk9dFsxXTtyZXR1cm4gZS5zZXRUYXJnZXRpbmcobixpKX0pKX0pKSxhLnB1YmFkcygpLmVuYWJsZVNpbmdsZVJlcXVlc3QoKSxhLmVuYWJsZVNlcnZpY2VzKCksdC5mb3JFYWNoKChmdW5jdGlvbih0KXthLmRpc3BsYXkob1t0XSl9KSl9Y2F0Y2godGEpe3dvKHIuX25hbWUrXCIgZ29vZ2xlIGxpYnJhcnkgY2FsbHMgZmFpbHVyZSBcIit0YS5tZXNzYWdlKX19KSl9ZWxzZSBibyh0aGlzLl9uYW1lK1wiIGxpYnJhcnkgbm90IGxvYWRlZFwiKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3IubG9hZEFkc05vR1BUKHQsc1t0XSl9KSk7RnMuY2hlY2tRdWV1ZSgpfSxlfShVcykpKFwiZ29vZ2xlQVNcIiksUXM9bmV3KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG47cmV0dXJuKG49dC5jYWxsKHRoaXMpfHx0aGlzKS5fbmFtZT1lLG59cmV0dXJuIFhvKGUsdCksZS5wcm90b3R5cGUubG9hZEFkcz1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzOyh0PXR8fFtdKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbz1Dby5nZXRDcmVhdGl2ZSh0KTtpZihvLmxlbmd0aCl7dmFyIHM9ci5fZ2V0Q3VzdG9tVmFycyh0LGUsbixpKTtGcy5sb2FkKHQsbyxzKX1lbHNlIHdvKHIuX25hbWUrXCIgY3JlYXRpdmUgaXMgbWlzc2luZyBmb3IgXCIrdCl9KSl9LGV9KFVzKSkoXCJzdGF0aWNBU1wiKSxHcz17cGhJbmZvOntzaXRlOlwiXCIsYnJhbmQ6XCJcIix1aWQ6XCJcIixzTGV2ZWw6XCJcIn0sYWRDb25maWc6e2xvYWRUaW1lb3V0OjE1ZTMsdXJsOlwiLy9zdGF0aWMudW9sY29udGVudC5jb20vY2dpL2Fjb25maWdcIixvdmVycmlkZTp7fX0scGFnZUluZm86e3Bvc0xpc3Q6XCJcIixuYW1lOlwiXCJ9LGFkUGFnZTpcIlwiLGN1c3RvbVZhcnM6e30sUVBWYXJzOnt9LGlmcmFtZUhvbGRlcjpcIlwiLGlzRGlhbHVwOiExLHNXcmFwcGVyOlwiV3JhcFwifSxXcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuVmFsaWRhdGVBbmRVcGRhdGVDb25maWc9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihvbyghMCxHcyx0KSxcIlwiIT09R3MucGhJbmZvLnNpdGUpfSx0LmdldD1mdW5jdGlvbigpe3JldHVybiBHc30sdH0oKSxLcz1cIjEtLS1cIixKcz0wO2Z1bmN0aW9uICRzKHQpe3ZvaWQgMD09PXQmJih0PSExKSx3aW5kb3cuX191c3BhcGkoXCJnZXRVU1BEYXRhXCIsMSwoZnVuY3Rpb24oZSxuKXt2YXIgaT0obmV3IERhdGUpLmdldFRpbWUoKS8xZTM7biYmZS51c3BTdHJpbmcmJihpLUpzPjMwfHx0KSYmYm8oXCJ1c3BTdHJpbmcgOiBcIisoS3M9ZS51c3BTdHJpbmcpK1wiLCBsYXN0VXNwU3RyaW5nVXBkYXRlZCA6IFwiKyhKcz1pKSl9KSl9ZnVuY3Rpb24gWXMoKXtyZXR1cm5cIjFZWU5cIj09PUtzfXdpbmRvdy5fX3VzcGFwaT13aW5kb3cuX191c3BhcGl8fGZ1bmN0aW9uKHQsZSxuKXtpZihcImdldFVTUERhdGFcIj09PXQpe3ZhciBpPWRzKFwidXNwcml2YWN5XCIpO24oe3ZlcnNpb246MSx1c3BTdHJpbmc6bnVsbD09PWl8fFwiXCI9PT1pP1wiMS0tLVwiOml9LCEwKX19O3ZhciBYcz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZG9jPWRvY3VtZW50LHRoaXMuX3dpbj13aW5kb3csdGhpcy5fc3RhdGljQ3VzdG9tVmFycz17fSx0aGlzLl9jdXN0b21WYXJzPXt9fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmluaXQ9ZnVuY3Rpb24odCxlLG4pe3RoaXMuX2RvYz1lLHRoaXMuX3dpbj10LHRoaXMuX3N0YXRpY0N1c3RvbVZhcnM9bi5jdXN0b21WYXJzLHRoaXMuX2Fkc2VydmVycz1benMsUXMsSHNdLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuX2lzU3VwcG9ydGVkKCl9KSksdGhpcy5fYWRzZXJ2ZXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3JldHVybiBpLmluaXQodCxlLG4pfSkpLExzLmluaXQobil9LGUudXBkYXRlQ29uZmlnPWZ1bmN0aW9uKHQpe3RoaXMuX2Fkc2VydmVycy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS51cGRhdGVDb25maWcodFtlLmdldE5hbWUoKV0pfSkpfSxlLl9nZXRDdXN0b21WYXJzPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9bnVsbCk7dmFyIGU9V3MuZ2V0KCkuY3VzdG9tVmFyc3x8e30sbj1Dby5nZXQoKS5zZXR0aW5ncy5jdkZpbHRlcjtXcihlKSYmKGU9ZS5jYWxsKHQsQ28uZ2V0UGFnZU5hbWUoKSkpLEtyKGUpfHwoZT17fSk7dmFyIGk9e30scj1ZcygpJiZuJiZuLmxlbmd0aD4wO3JldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLG89dFsxXTtyJiZuLmluY2x1ZGVzKGUpfHwoaVtlXT1vKX0pKSxpfSh0aGlzLl93aW4pO3JldHVybiBvbyghMCx0LHRoaXMuX2N1c3RvbVZhcnMpLHR9LGUuX2xvYWRBZHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7dD10fHxbXTt2YXIgcj10aGlzLl9hZHNlcnZlcnMubWFwKChmdW5jdGlvbihyKXt2YXIgbz1yLmdldE5hbWUoKSxzPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gQ28uZ2V0UG9zU2V0dGluZ3ModCkuYXM9PT1vfSkpO3JldHVybiBzLmxlbmd0aCYmci5sb2FkQWRzKHMsZSxpLl9nZXRDdXN0b21WYXJzKCksbiksc30pKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KGUpfSksW10pLG89bm8odCxyKS5qb2luKFwiLFwiKTtvLmxlbmd0aCYmd28oXCJhZHNlcnZlciBpcyBub3QgY29uZmlndXJlZCBmb3IgXCIrbyl9LGUuY2xlYXJBZFJlcXVlc3RzPWZ1bmN0aW9uKCl7dGhpcy5fYWRzZXJ2ZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsZWFyQWRSZXF1ZXN0cygpfSkpfSxlLmxvYWRBZHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj1lbyhlLExzLmdldEJpZFBvcyh0KSksbz1ubyhlLHIpO2JvKFwiYWN0aXZlIGJpZCBwb3M6XCIrci5qb2luKFwiLFwiKStcIiBpbmFjdGl2ZSBiaWQgcG9zOlwiK28uam9pbihcIixcIikpLG8ubGVuZ3RoJiZ0aGlzLl9sb2FkQWRzKG8se30sbiksci5sZW5ndGg+MCYmTHMuZ2V0QmlkcyhyLHQsbikudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGkuX2xvYWRBZHMocix0LG4pfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGkuX2xvYWRBZHMocix7fSxuKX0pKX0sZS5yZW5kZXJCaWRBZHM9ZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gTHMucmVuZGVyQWQodCxlLG4saSxyLENvLmdldFBvc1NldHRpbmdzKG4pKX0sZS5zZXRDdXN0b21WYXI9ZnVuY3Rpb24odCxlKXsodD10fHxcIlwiKS5sZW5ndGgmJih0aGlzLl9jdXN0b21WYXJzW3RdPWUpfSx0fSgpKSxacz1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fbmFtZT1cImFkY29uZmlnVXBkYXRlclwiLHRoaXMuX3dpbj13aW5kb3csdGhpcy5fZG9jPWRvY3VtZW50LHRoaXMuX2V4cGlyeVRpbWVvdXRTZWM9MTIwMCx0aGlzLl9sb2FkVGltZW91dD0zZTMsdGhpcy5fdXJsPVwiXCIsdGhpcy5fbGFzdENvbmZpZ0xvYWRUaW1lPTB9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuX3Nlc3Npb25Mb2c9ZnVuY3Rpb24odCl7dmFyIGU9a28oKT8xOjAsbj0kcih0LmN1c3RvbVZhcnMuX3VoNSk/dC5jdXN0b21WYXJzLl91aDU6XCJcIixpPXQuaXNEaWFsdXA/XCIxXCI6XCIwXCIscj1Sbyh0LmlzRGlhbHVwKT9cIjFcIjpcIjBcIixvPUJvKCkscz1cInNlc3NMb2c6dWg9XCIrbitcIiZzaXRlPVwiK3QucGhJbmZvLnNpdGUrXCImZG50PVwiK2UrXCImZGFwcD1cIitpK1wiJmRudz1cIitvK1wiJmRldmFsPVwiK3I7Y289Y298fERhdGUubm93KCksSW8ocyl9LGUuaW5pdD1mdW5jdGlvbih0LGUsbil7dGhpcy5fd2luPXQsdGhpcy5fZG9jPWUsdGhpcy5fbG9hZFRpbWVvdXQ9bi5hZENvbmZpZy5sb2FkVGltZW91dCx0aGlzLl91cmw9bi5hZENvbmZpZy51cmwsdGhpcy5fc2l0ZUluZm89bi5waEluZm8sQ28uaW5pdCh0LGUsbiksRnMuaW5pdCh0LGUsbiksWHMuaW5pdCh0LGUsbiksc3MuaW5pdCh0LGUsbiksdGhpcy5fc2Vzc2lvbkxvZyhuKX0sZS5fcHJvY2Vzc0NvbmZpZ0RhdGE9ZnVuY3Rpb24odCl7Q28ucHJvY2Vzc0NvbmZpZ0RhdGEodCk7dmFyIGU9Q28uZ2V0KCk7dGhpcy5fZXhwaXJ5VGltZW91dFNlYz1lLnNldHRpbmdzLmNvbmZpZ0V4cGlyeVNlYyxzcy51cGRhdGVDb25maWcoZS5zZXR0aW5ncy5hZFJvdGF0ZSksTHMudXBkYXRlQ29uZmlnKGUuc2V0dGluZ3MuaGVhZGVyQmlkZGluZyksWHMudXBkYXRlQ29uZmlnKGUuc2V0dGluZ3MuYWRTZXJ2ZXIpLEZzLnVwZGF0ZUNvbmZpZyhlLnNldHRpbmdzLmFkbG9hZGluZyksZnMuc3RvcmVDb25maWcodCx0aGlzLl9zaXRlSW5mby5zaXRlKX0sZS5fZmV0Y2hDb25maWc9ZnVuY3Rpb24odCxlKXtyZXR1cm4gS28oKT8oKGU9ZXx8e30pLmRhdGE9ZS5kYXRhfHx7fSxlLmRhdGEuZm9ybWF0PVwianNvblwiLEpvKHQsZSkpOlFvKHQsZSl9LGUuX2xvYWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXt9O3JldHVybiBuLmRhdGE9e3NpdGU6dGhpcy5fc2l0ZUluZm8uc2l0ZSxhcGlWZXJzaW9uOlwiMy4xLjNcIixicmFuZDp0aGlzLl9zaXRlSW5mby5icmFuZH0sbi50aW1lb3V0PXRoaXMuX2xvYWRUaW1lb3V0LG4ubG9nUHJlZml4PVwiYWRjb25maWdcIixibyh0aGlzLl9uYW1lK1wiIFRyeWluZyB0byBmZXRjaCBhZGNvbmZpZ1wiKSx0aGlzLl9mZXRjaENvbmZpZyh0aGlzLl91cmwsbikudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuc2V0dGluZ3MmJihlLl9wcm9jZXNzQ29uZmlnRGF0YSh0KSxlLl9sYXN0Q29uZmlnTG9hZFRpbWU9RGF0ZS5ub3coKSksdH0pLChmdW5jdGlvbihuKXt3byhcIkZhaWxlZCB0byBnZXQgYWQgY29uZmlnIGZyb20gXCIrZS5fdXJsK1wiIGZvciBcIitlLl9zaXRlSW5mby5zaXRlK1wiIGZpcnN0bG9hZDpcIisodD8xOjApK1wiOiBcIisobnx8XCJcIikpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSkpfSxlLmxvYWQ9ZnVuY3Rpb24oKXt2YXIgdD0wPT09dGhpcy5fbGFzdENvbmZpZ0xvYWRUaW1lLGU9ITA7aWYodCl7dmFyIG49ZnMuZ2V0Q29uZmlnKHRoaXMuX3NpdGVJbmZvLnNpdGUpLGk9bi5leHBpcmVkLHI9bi5kYXRhLG89bi51cGRhdGVkVGltZTtpZighaSYmXCJzZXR0aW5nc1wiaW4gciYmKHRoaXMuX3Byb2Nlc3NDb25maWdEYXRhKHIpLERhdGUubm93KCktbzwxZTMqdGhpcy5fZXhwaXJ5VGltZW91dFNlYykpcmV0dXJuIHRoaXMuX2xhc3RDb25maWdMb2FkVGltZT1vLGJvKHRoaXMuX25hbWUrXCIgTG9hZGVkIGNvbmZpZyBmcm9tIHN0b3JhZ2UgZm9yIGZpcnN0IHJ1biFcIiksUHJvbWlzZS5yZXNvbHZlKCk7ZT1pfWlmKERhdGUubm93KCktdGhpcy5fbGFzdENvbmZpZ0xvYWRUaW1lPDFlMyp0aGlzLl9leHBpcnlUaW1lb3V0U2VjKXJldHVybiBibyh0aGlzLl9uYW1lK1wiIExhc3QgY29uZmlnIGlzIGdvb2QgdG8gdXNlIVwiKSxQcm9taXNlLnJlc29sdmUoKTt2YXIgcz10aGlzLl9sb2FkKHQpO3JldHVybiB0JiZlP3M6UHJvbWlzZS5yZXNvbHZlKCl9LHR9KCkpO3JldHVybiBuZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fdz10LHRoaXMuX2Q9ZSx0aGlzLl9iSW5pdGVkPSExfXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmluaXQ9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCYmKHQ9dGhpcy5fdy5fX2FzSW5mbyksIXRoaXMuX2JJbml0ZWQmJigkcygpLHRoaXMuX2JJbml0ZWQ9ITAsV3MuVmFsaWRhdGVBbmRVcGRhdGVDb25maWcodCkpKXt2YXIgZT1Xcy5nZXQoKTtacy5pbml0KHRoaXMuX3csdGhpcy5fZCxlKSxzcy5zZXRHZXRBZHNDQih0aGlzLmdldCx0aGlzKX19LGUuX2xvYWRBZHM9ZnVuY3Rpb24odCxlLG4pe1hzLmNsZWFyQWRSZXF1ZXN0cygpLFhzLmxvYWRBZHModCxlLG4pfSxlLmdldD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzO3RoaXMuaW5pdCgpLCRzKCksITEhPT1uJiZDby5zZXRQYWdlSW5mbyh0LGUpLHNzLmNsZWFyKCksITAhPT1pJiZzcy5zZXRQYWdlU3RhcnQoKSxzcy5zZXRMYXN0Um90YXRpb25UaW1lKCksRnMuY2xlYXJMaXN0KCk7dmFyIG89Q28uZ2V0UGFnZU5hbWUodCkscz1Dby5nZXRQYWdlUG9zaXRpb25zKGUsbyk7WnMubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHIuX2xvYWRBZHMobyxzLCEwPT09aSl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gci5fbG9hZEFkcyhvLHMsITA9PT1pKX0pKX0sZS5wb3B1bGF0ZUN1c3RvbVZhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIEZzLnBvcHVsYXRlQ3VzdG9tVmFyKHQsZSxuKX0sZS5yZW5kZXJBZD1mdW5jdGlvbih0LGUsbixpLHIpe3QuVU9MX1BPU3x8dGhpcy5wb3B1bGF0ZUN1c3RvbVZhcih0LGUsbiksWHMucmVuZGVyQmlkQWRzKHQsZSxuLGkscil9LGUuZ2V0QWRQYWdlSW5mbz1mdW5jdGlvbih0KXtyZXR1cm4gRnMuZ2V0SUZyYW1lQWRJbmZvKHQpfSxlLnRvZ2dsZUFkPWZ1bmN0aW9uKHQpe0ZzLnRvZ2dsZUFEKHQpfSx0fSgpKSh3aW5kb3csZG9jdW1lbnQpfSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXMtMy4xLjMubWluLmpzLm1hcFxuIn0sICJoZWFkZXJzU2l6ZSI6IDQxOCwgImJvZHlTaXplIjogMzQ5NTYsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDM1Mzc0fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiA0MTYuMDYzLCAiY29ubmVjdCI6IDE0Ni44MzQsICJzc2wiOiA1NjQuMTE2LCAic2VuZCI6IDAsICJ3YWl0IjogMTUxLjU4OSwgInJlY2VpdmUiOiAxNTUuMzg0fSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiNjQuMTM2LjUyLjQ5IiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjE1NVoiLCAidGltZSI6IDI2MS43MTUsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wY3Mvdmlldz94YWk9QUtBT2pzdWtLSzZqbEE2UFFEdDB2LWlvMDR2N0swNWhNNV9BZTBqdThLcjFsTXV0Mzg1UERWLVk5WWo1SzlMMFBfVDdmOGN5b3NrbHBjQmY3d0U3M3N6aGJWR3A0QmJ4UXFMdUVIREp6c2ZDWlZqZEFxLTBCMWxrZVpZbWJzUnFWbmpzR3d6dHdlYkFXNkdERUMzZDQ1ZmxmVUwxN3lHRWZPa2dDSDgySDdxU25Ma3E0VWJaTDdjdzJXeG5Xc0kzYmZmSC1BNllUUkI0VGFSYUctQklfUXJnYkJjZXJ0NmF3aENCOC1RR2EycjV3YzRvVFQ2WTNyUnRWc0hoNVpFLU5lRzlCanlYSUJlZzVOZyZzYWk9QU1mbC1ZUzBDNWxNbThUVWhoQ3hFN0Z1WlY2d1R4UUpXRnA3d0I4YUNBTUlIbWNfNjlVak1VUTg4M3V0UDE1UG9iS0pHMHhVVVVPR0FoNlpsb1NUSnJTODlzSFFnM3lpNHlsWjlRZDc1aHBsNUV4TjNkX0xWemg0OHhfNm9yazZXTF9DJnNpZz1DZzBBcktKU3pDNHhORFlsdDhuNEVBRSZ1cmxmaXg9MSZhZHVybD0iLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiOmF1dGhvcml0eSIsICJ2YWx1ZSI6ICJzZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvcGNzL3ZpZXc/eGFpPUFLQU9qc3VrS0s2amxBNlBRRHQwdi1pbzA0djdLMDVoTTVfQWUwanU4S3IxbE11dDM4NVBEVi1ZOVlqNUs5TDBQX1Q3ZjhjeW9za2xwY0JmN3dFNzNzemhiVkdwNEJieFFxTHVFSERKenNmQ1pWamRBcS0wQjFsa2VaWW1ic1JxVm5qc0d3enR3ZWJBVzZHREVDM2Q0NWZsZlVMMTd5R0VmT2tnQ0g4Mkg3cVNuTGtxNFViWkw3Y3cyV3huV3NJM2JmZkgtQTZZVFJCNFRhUmFHLUJJX1FyZ2JCY2VydDZhd2hDQjgtUUdhMnI1d2M0b1RUNlkzclJ0VnNIaDVaRS1OZUc5Qmp5WElCZWc1Tmcmc2FpPUFNZmwtWVMwQzVsTW04VFVoaEN4RTdGdVpWNndUeFFKV0ZwN3dCOGFDQU1JSG1jXzY5VWpNVVE4ODN1dFAxNVBvYktKRzB4VVVVT0dBaDZabG9TVEpyUzg5c0hRZzN5aTR5bFo5UWQ3NWhwbDVFeE4zZF9MVnpoNDh4XzZvcms2V0xfQyZzaWc9Q2cwQXJLSlN6QzR4TkRZbHQ4bjRFQUUmdXJsZml4PTEmYWR1cmw9In0sIHsibmFtZSI6ICI6c2NoZW1lIiwgInZhbHVlIjogImh0dHBzIn0sIHsibmFtZSI6ICJhY2NlcHQiLCAidmFsdWUiOiAiKi8qIn0sIHsibmFtZSI6ICJhY2NlcHQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIifSwgeyJuYW1lIjogInJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJlbXB0eSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibm8tY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbeyJuYW1lIjogInhhaSIsICJ2YWx1ZSI6ICJBS0FPanN1a0tLNmpsQTZQUUR0MHYtaW8wNHY3SzA1aE01X0FlMGp1OEtyMWxNdXQzODVQRFYtWTlZajVLOUwwUF9UN2Y4Y3lvc2tscGNCZjd3RTczc3poYlZHcDRCYnhRcUx1RUhESnpzZkNaVmpkQXEtMEIxbGtlWlltYnNScVZuanNHd3p0d2ViQVc2R0RFQzNkNDVmbGZVTDE3eUdFZk9rZ0NIODJIN3FTbkxrcTRVYlpMN2N3Mld4bldzSTNiZmZILUE2WVRSQjRUYVJhRy1CSV9RcmdiQmNlcnQ2YXdoQ0I4LVFHYTJyNXdjNG9UVDZZM3JSdFZzSGg1WkUtTmVHOUJqeVhJQmVnNU5nIn0sIHsibmFtZSI6ICJzYWkiLCAidmFsdWUiOiAiQU1mbC1ZUzBDNWxNbThUVWhoQ3hFN0Z1WlY2d1R4UUpXRnA3d0I4YUNBTUlIbWNfNjlVak1VUTg4M3V0UDE1UG9iS0pHMHhVVVVPR0FoNlpsb1NUSnJTODlzSFFnM3lpNHlsWjlRZDc1aHBsNUV4TjNkX0xWemg0OHhfNm9yazZXTF9DIn0sIHsibmFtZSI6ICJzaWciLCAidmFsdWUiOiAiQ2cwQXJLSlN6QzR4TkRZbHQ4bjRFQUUifSwgeyJuYW1lIjogInVybGZpeCIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJhZHVybCIsICJ2YWx1ZSI6ICIifV0sICJoZWFkZXJzU2l6ZSI6IC0xLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW3sibmFtZSI6ICJ0ZXN0X2Nvb2tpZSIsICJ2YWx1ZSI6ICJDaGVja0ZvclBlcm1pc3Npb24iLCAic2VjdXJlIjogdHJ1ZSwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIm5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJhY2NlcHQtY2giLCAidmFsdWUiOiAiU2VjLUNILVVBLUFyY2gifSwgeyJuYW1lIjogImFjY2VwdC1jaCIsICJ2YWx1ZSI6ICJTZWMtQ0gtVUEtQml0bmVzcyJ9LCB7Im5hbWUiOiAiYWNjZXB0LWNoIiwgInZhbHVlIjogIlNlYy1DSC1VQS1GdWxsLVZlcnNpb24ifSwgeyJuYW1lIjogImFjY2VwdC1jaCIsICJ2YWx1ZSI6ICJTZWMtQ0gtVUEtRnVsbC1WZXJzaW9uLUxpc3QifSwgeyJuYW1lIjogImFjY2VwdC1jaCIsICJ2YWx1ZSI6ICJTZWMtQ0gtVUEtTW9kZWwifSwgeyJuYW1lIjogImFjY2VwdC1jaCIsICJ2YWx1ZSI6ICJTZWMtQ0gtVUEtUGxhdGZvcm0ifSwgeyJuYW1lIjogImFjY2VwdC1jaCIsICJ2YWx1ZSI6ICJTZWMtQ0gtVUEtUGxhdGZvcm0tVmVyc2lvbiJ9LCB7Im5hbWUiOiAiYWNjZXB0LWNoIiwgInZhbHVlIjogIlNlYy1DSC1VQS1Xb1c2NCJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTI1OTIwMDAsaDMtMjk9XCI6NDQzXCI7IG1hPTI1OTIwMDAifSwgeyJuYW1lIjogImNhY2hlLWNvbnRyb2wiLCAidmFsdWUiOiAicHJpdmF0ZSJ9LCB7Im5hbWUiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiMCJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogImltYWdlL2dpZiJ9LCB7Im5hbWUiOiAiY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBvbGljeSIsICJ2YWx1ZSI6ICJjcm9zcy1vcmlnaW4ifSwgeyJuYW1lIjogImRhdGUiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOCBHTVQifSwgeyJuYW1lIjogImV4cGlyZXMiLCAidmFsdWUiOiAiV2VkLCAyNCBNYXkgMjAyMyAxNTo0MToxOCBHTVQifSwgeyJuYW1lIjogInAzcCIsICJ2YWx1ZSI6ICJwb2xpY3lyZWY9XCJodHRwczovL2dvb2dsZWFkcy5nLmRvdWJsZWNsaWNrLm5ldC9wYWdlYWQvZ2NuX3AzcF8ueG1sXCIsIENQPVwiQ1VSYSBBRE1hIERFVmEgVEFJbyBQU0FvIFBTRG8gT1VSIElORCBVTkkgUFVSIElOVCBERU0gU1RBIFBSRSBDT00gTkFWIE9UQyBOT0kgRFNQIENPUlwiIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiY2FmZSJ9LCB7Im5hbWUiOiAic2V0LWNvb2tpZSIsICJ2YWx1ZSI6ICJ0ZXN0X2Nvb2tpZT1DaGVja0ZvclBlcm1pc3Npb247IGV4cGlyZXM9V2VkLCAyNC1NYXktMjAyMyAxNTo1NjoxOCBHTVQ7IHBhdGg9LzsgZG9tYWluPS5kb3VibGVjbGljay5uZXQ7IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPW5vbmUifSwgeyJuYW1lIjogInRpbWluZy1hbGxvdy1vcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAieC1jb250ZW50LXR5cGUtb3B0aW9ucyIsICJ2YWx1ZSI6ICJub3NuaWZmIn0sIHsibmFtZSI6ICJ4LXhzcy1wcm90ZWN0aW9uIiwgInZhbHVlIjogIjAifV0sICJjb250ZW50IjogeyJzaXplIjogLTEsICJtaW1lVHlwZSI6ICJpbWFnZS9naWYifSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IC0xLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAtMSwgIl9mYWlsdXJlVGV4dCI6ICJuZXQ6OkVSUl9BQk9SVEVEIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDI2MS43MTUsICJyZWNlaXZlIjogLTF9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1In0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTU1WiIsICJ0aW1lIjogNDAxLjc2NTAwMDAwMDAwMDA0LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aW5nLnJvaW1lZGlhY29uc3VsdGFudHMuY29tL3NlcnZsZXQvdmlldy9iYW5uZXIvamF2YXNjcmlwdC96b25lP3ppZD0xODUwJmZyaWVuZGx5PXRydWUmcGlkPTkmcmVmcmVzaD02MCZyZWZyZXNoX2xpbWl0PTEmcm1waWQ9dHJ1ZSZyYW5kb209MTY3Nzk0MjAwMyZlbmNvZGU9MSZvcmlnaW49aHR0cCUzQSUyRiUyRmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20mcmVmZXJyZXI9JmN0dXJsPWh0dHBzOi8vYWRjbGljay5nLmRvdWJsZWNsaWNrLm5ldC9wY3MvY2xpY2slMjUzRnhhaSUyNTNEQUtBT2pzc2pGbTdKZk9CaEZvck1mb3MyaHp5WGRJeFkxdUZBbzB0V1hIa0VobVhUWnZhMzBVVzFKVmxnVVh3Qm1xa0wySTAyMUlLNGUxcEdUZnlHVkV6VVM2Um1VWU9mcEFyWnAwam9CMHJWUkVLSFFjSnBVUTEwVVBseTc2aTRXanEyR1VieEZkamUzRUFiNXMtWXU2SDFvUmx0MVpvSVNoakVJU2plT1ZtWEpRb01mNHhfdjVnRE9WNEN3SS1VZi1McHQ2TFhCc01HU00xQ1hFZHZXemdvWmZGbTZBeTF2bDBpRVNtS0stSnVrMXZBbUZYZU5QVTYwa0kxVzBtUE5yY1VWMTNxVWNvJTI1MjZzYWklMjUzREFNZmwtWVJMbnJjcGxrZEFZODFSdEdkdlNuZkJPQ3dVdG5JQkQ5dE1rZ3JZbHZEcGo4b3MyQzhpSGJITVg1amp3eDFBNFdVdGxvNk1QZ1ZhTmhrX2IyYlVnOUpBcEo3ZTZwM2FubmNLNXlTanVoVTZ1NmlqWDZUM2ZLbkR5SXRGd1hibSUyNTI2c2lnJTI1M0RDZzBBcktKU3pMZmo1V0pwQmw1YUVBRSUyNTI2dXJsZml4JTI1M0QxJTI1MjZhZHVybCUyNTNEIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJIb3N0IiwgInZhbHVlIjogInNlcnZpbmcucm9pbWVkaWFjb25zdWx0YW50cy5jb20ifSwgeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vIn0sIHsibmFtZSI6ICJTZWMtRmV0Y2gtRGVzdCIsICJ2YWx1ZSI6ICJzY3JpcHQifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1Nb2RlIiwgInZhbHVlIjogIm5vLWNvcnMifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1TaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExMy4wLjU2NzIuNTMgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW3sibmFtZSI6ICJ6aWQiLCAidmFsdWUiOiAiMTg1MCJ9LCB7Im5hbWUiOiAiZnJpZW5kbHkiLCAidmFsdWUiOiAidHJ1ZSJ9LCB7Im5hbWUiOiAicGlkIiwgInZhbHVlIjogIjkifSwgeyJuYW1lIjogInJlZnJlc2giLCAidmFsdWUiOiAiNjAifSwgeyJuYW1lIjogInJlZnJlc2hfbGltaXQiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAicm1waWQiLCAidmFsdWUiOiAidHJ1ZSJ9LCB7Im5hbWUiOiAicmFuZG9tIiwgInZhbHVlIjogIjE2Nzc5NDIwMDMifSwgeyJuYW1lIjogImVuY29kZSIsICJ2YWx1ZSI6ICIxIn0sIHsibmFtZSI6ICJvcmlnaW4iLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20ifSwgeyJuYW1lIjogInJlZmVycmVyIiwgInZhbHVlIjogIiJ9LCB7Im5hbWUiOiAiY3R1cmwiLCAidmFsdWUiOiAiaHR0cHM6Ly9hZGNsaWNrLmcuZG91YmxlY2xpY2submV0L3Bjcy9jbGljayUzRnhhaSUzREFLQU9qc3NqRm03SmZPQmhGb3JNZm9zMmh6eVhkSXhZMXVGQW8wdFdYSGtFaG1YVFp2YTMwVVcxSlZsZ1VYd0JtcWtMMkkwMjFJSzRlMXBHVGZ5R1ZFelVTNlJtVVlPZnBBclpwMGpvQjByVlJFS0hRY0pwVVExMFVQbHk3Nmk0V2pxMkdVYnhGZGplM0VBYjVzLVl1Nkgxb1JsdDFab0lTaGpFSVNqZU9WbVhKUW9NZjR4X3Y1Z0RPVjRDd0ktVWYtTHB0NkxYQnNNR1NNMUNYRWR2V3pnb1pmRm02QXkxdmwwaUVTbUtLLUp1azF2QW1GWGVOUFU2MGtJMVcwbVBOcmNVVjEzcVVjbyUyNnNhaSUzREFNZmwtWVJMbnJjcGxrZEFZODFSdEdkdlNuZkJPQ3dVdG5JQkQ5dE1rZ3JZbHZEcGo4b3MyQzhpSGJITVg1amp3eDFBNFdVdGxvNk1QZ1ZhTmhrX2IyYlVnOUpBcEo3ZTZwM2FubmNLNXlTanVoVTZ1NmlqWDZUM2ZLbkR5SXRGd1hibSUyNnNpZyUzRENnMEFyS0pTekxmajVXSnBCbDVhRUFFJTI2dXJsZml4JTNEMSUyNmFkdXJsJTNEIn1dLCAiaGVhZGVyc1NpemUiOiA0NjQsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiQVZQVUlEIiwgInZhbHVlIjogImQ4YjM2MWQ4MjU2MWJkM2Q1ZTdkMTU4NDAzZDgzOGYxIiwgImV4cGlyZXMiOiAiMjAyNC0wNS0yM1QxNTo0MToxOC4wMDBaIiwgInBhdGgiOiAiLyIsICJzZWN1cmUiOiB0cnVlLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibm8tY2FjaGUsIG5vLXN0b3JlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkNvbnRlbnQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiQ29udGVudC1UeXBlIiwgInZhbHVlIjogInRleHQvamF2YXNjcmlwdDtjaGFyc2V0PVVURi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MTggR01UIn0sIHsibmFtZSI6ICJFeHBpcmVzIiwgInZhbHVlIjogIlRodSwgMzEgRGVjIDE5OTggMTE6NTk6NTkgR01UIn0sIHsibmFtZSI6ICJQM1AiLCAidmFsdWUiOiAiQ1A9XCJOT0kgRFNQIENPUiBOSURcIiJ9LCB7Im5hbWUiOiAiUHJhZ21hIiwgInZhbHVlIjogIm5vLWNhY2hlIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAibmdpbngifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiQVZQVUlEPWQ4YjM2MWQ4MjU2MWJkM2Q1ZTdkMTU4NDAzZDgzOGYxOyBFeHBpcmVzPVRodSwgMjMtTWF5LTIwMjQgMTU6NDE6MTggR01UOyBQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLVJvYm90cy1UYWciLCAidmFsdWUiOiAibm9uZSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyMzcyNCwgIm1pbWVUeXBlIjogInRleHQvamF2YXNjcmlwdDtjaGFyc2V0PVVURi04IiwgImNvbXByZXNzaW9uIjogMTc0MTIsICJ0ZXh0IjogIihmdW5jdGlvbigpIHsgdHJ5IHtcbiAgdmFyIGluc180NTE5OTcwOCA9IGRvY3VtZW50LnNjcmlwdHNbZG9jdW1lbnQuc2NyaXB0cy5sZW5ndGggLSAxXS5wYXJlbnROb2RlOyAgdmFyIGlmcmFtZV80NTE5OTcwOCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICBpZnJhbWVfNDUxOTk3MDguc2V0QXR0cmlidXRlKCdpZCcsICdmcmllbmRseV80NTE5OTcwOCcpO1xuICBpZnJhbWVfNDUxOTk3MDguc2V0QXR0cmlidXRlKCd0aXRsZScsICdBZHZlcnRpc2VtZW50Jyk7XG4gIGlmcmFtZV80NTE5OTcwOC5zZXRBdHRyaWJ1dGUoJ2FsbG93dHJhbnNwYXJlbmN5JywgJ3RydWUnKTtcbiAgaWZyYW1lXzQ1MTk5NzA4LnNldEF0dHJpYnV0ZSgnc2Nyb2xsaW5nJywgJ25vJyk7XG4gIGlmcmFtZV80NTE5OTcwOC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ21hcmdpbjowOyBwYWRkaW5nOjA7IHdpZHRoOjcyOHB4OyBoZWlnaHQ6OTBweDsgYm9yZGVyOjA7IG92ZXJmbG93OmhpZGRlbjsgdmVydGljYWwtYWxpZ246Ym90dG9tJyk7XG4gIGlmcmFtZV80NTE5OTcwOC5zZXRBdHRyaWJ1dGUoJ3NhbmRib3gnLCAnYWxsb3ctZm9ybXMgYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCBhbGxvdy1wb2ludGVyLWxvY2sgYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb24nKTtcbiAgaW5zXzQ1MTk5NzA4LmFwcGVuZENoaWxkKGlmcmFtZV80NTE5OTcwOCk7XG4gIHZhciBpZnJhbWVEb2N1bWVudF80NTE5OTcwOCA9IChpZnJhbWVfNDUxOTk3MDguY29udGVudFdpbmRvdykgPyBpZnJhbWVfNDUxOTk3MDguY29udGVudFdpbmRvdy5kb2N1bWVudCA6IChpZnJhbWVfNDUxOTk3MDguY29udGVudERvY3VtZW50IHx8IGlmcmFtZV80NTE5OTcwOC5kb2N1bWVudCk7XG4gIGlmcmFtZURvY3VtZW50XzQ1MTk5NzA4Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnRfNDUxOTk3MDgud3JpdGUoJzxib2R5IHN0eWxlPVwibWFyZ2luOjA7IHBhZGRpbmc6MDsgb3ZlcmZsb3c6aGlkZGVuXCI+PGRpdiBzdHlsZT1cIndpZHRoOjcyOHB4OyBoZWlnaHQ6OTBweFwiPjxkaXYgaWQ9XFxcImZyaWVuZGx5XzQ1MTk5NzA4XFxcIiBkYXRhLXppZD1cXFwiMTg1MFxcXCI+PC9kaXY+XFxyXFxuXFxyXFxuPHNjcicrJ2lwdCB0eXBlPVxcXCJ0ZXh0L2phdmFzY3JpcHRcXFwiPlxcclxcbihmdW5jdGlvbigpIHtcXHJcXG4gIHRyeSB7IGlmIChwYXJlbnQgJiYgcGFyZW50LkFWUCkgeyBwYXJlbnQuQVZQLnVucmVzdHJpY3RSZWZyZXNoaW5nKFxcJ1xcJyk7IH0gfSBjYXRjaCAoZSkgeyB9XFxyXFxuICBkb2N1bWVudC5mcmllbmRseV80NTE5OTcwOFZpZXdhYmxlID0gZmFsc2U7XFxyXFxuICBkb2N1bWVudC5pc1BhZ2VWaXNpYmxlID0gZnVuY3Rpb24oKSB7XFxyXFxuICAgIGlmIChcXCd2aXNpYmlsaXR5U3RhdGVcXCcgaW4gZG9jdW1lbnQpIHtcXHJcXG4gICAgICByZXR1cm4gKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gXFwndmlzaWJsZVxcJykgPyB0cnVlIDogZmFsc2U7XFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgdmFyIGdldEhpZGRlblByb3AgPSBmdW5jdGlvbigpIHtcXHJcXG4gICAgICAgIHZhciBwcmVmaXhlcyA9IFtcXCd3ZWJraXRcXCcsXFwnbW96XFwnLFxcJ21zXFwnLFxcJ29cXCddO1xcclxcbiAgICAgICAgaWYgKFxcJ2hpZGRlblxcJyBpbiBkb2N1bWVudCkgcmV0dXJuIFxcJ2hpZGRlblxcJztcXHJcXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4ZXMubGVuZ3RoOyBpKyspe1xcclxcbiAgICAgICAgICBpZiAoKHByZWZpeGVzW2ldICsgXFwnSGlkZGVuXFwnKSBpbiBkb2N1bWVudCkgeyByZXR1cm4gcHJlZml4ZXNbaV0gKyBcXCdIaWRkZW5cXCc7IH1cXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJldHVybiBudWxsO1xcclxcbiAgICAgIH07XFxyXFxuICAgICAgdmFyIHByb3AgPSBnZXRIaWRkZW5Qcm9wKCk7XFxyXFxuICAgICAgcmV0dXJuIChwcm9wKSA/ICFkb2N1bWVudFtwcm9wXSA6IHRydWU7XFxyXFxuICAgIH1cXHJcXG4gIH07XFxyXFxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcXCdET01Db250ZW50TG9hZGVkXFwnLCBmdW5jdGlvbigpIHtcXHJcXG4gICAgaWYgKFxcJ0ludGVyc2VjdGlvbk9ic2VydmVyXFwnIGluIHdpbmRvdykge1xcclxcbiAgICAgIHZhciBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlbnRyaWVzKSB7XFxyXFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgICAgZG9jdW1lbnQuZnJpZW5kbHlfNDUxOTk3MDhWaWV3YWJsZSA9IChkb2N1bWVudC5pc1BhZ2VWaXNpYmxlKCkgPT09IHRydWUgJiYgZW50cmllc1tpXS5pbnRlcnNlY3Rpb25SYXRpbyA+PSAwLjUpID8gdHJ1ZSA6IGZhbHNlO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgIH0sIHsgdGhyZXNob2xkOiBbMC41XSB9KTtcXHJcXG4gICAgICBpby5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxcJ2ZyaWVuZGx5XzQ1MTk5NzA4XFwnKSk7XFxyXFxuICAgIH1cXHJcXG4gIH0pO1xcclxcbn0pKCk7XFxyXFxuXFxyXFxuKGZ1bmN0aW9uKCkge1xcclxcbiAgdHJ5IHsgd2luZG93Ll9fY21wID0gKHdpbmRvdy5fX2NtcCB8fCB3aW5kb3cucGFyZW50Ll9fY21wKTsgfSBjYXRjaCAoZSkgeyB9XFxyXFxuICB0cnkgeyB3aW5kb3cuX190Y2ZhcGkgPSAod2luZG93Ll9fdGNmYXBpIHx8IHdpbmRvdy5wYXJlbnQuX190Y2ZhcGkpOyB9IGNhdGNoIChlKSB7IH1cXHJcXG4gIGlmICh0eXBlb2Ygd2luZG93Ll9fY21wID09PSBcXCd1bmRlZmluZWRcXCcpIHsgdHJ5IHsgd2luZG93Ll9fY21wID0gd2luZG93LnRvcC5fX2NtcDsgfSBjYXRjaCAoZSkgeyB9IH1cXHJcXG4gIGlmICh0eXBlb2Ygd2luZG93Ll9fdGNmYXBpID09PSBcXCd1bmRlZmluZWRcXCcpIHsgdHJ5IHsgd2luZG93Ll9fdGNmYXBpID0gd2luZG93LnRvcC5fX3RjZmFwaTsgfSBjYXRjaCAoZSkgeyB9IH1cXHJcXG4gIHZhciB3cmFwcGVySWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcXFwiaWZyYW1lXFxcIik7XFxyXFxuICB3cmFwcGVySWZyYW1lLnNldEF0dHJpYnV0ZShcXFwiaWRcXFwiLCBcXFwiZnJpZW5kbHlfNDUxOTk3MDhfTG9hZGVyXFxcIik7XFxyXFxuICB3cmFwcGVySWZyYW1lLnNldEF0dHJpYnV0ZShcXFwidGl0bGVcXFwiLCBcXFwiQWR2ZXJ0aXNlbWVudFxcXCIpO1xcclxcbiAgd3JhcHBlcklmcmFtZS5zZXRBdHRyaWJ1dGUoXFxcImFsbG93dHJhbnNwYXJlbmN5XFxcIiwgXFxcInRydWVcXFwiKTtcXHJcXG4gIHdyYXBwZXJJZnJhbWUuc2V0QXR0cmlidXRlKFxcXCJzY3JvbGxpbmdcXFwiLCBcXFwibm9cXFwiKTtcXHJcXG4gIHdyYXBwZXJJZnJhbWUuc2V0QXR0cmlidXRlKFxcXCJzdHlsZVxcXCIsIFxcXCJwb3NpdGlvbjogYWJzb2x1dGU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHdpZHRoOjFweDsgaGVpZ2h0OjFweDsgYm9yZGVyOjA7IG92ZXJmbG93OmhpZGRlbjsgZGlzcGxheTogbm9uZVxcXCIpO1xcclxcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXFwnZnJpZW5kbHlfNDUxOTk3MDhcXCcpLmFwcGVuZENoaWxkKHdyYXBwZXJJZnJhbWUpO1xcclxcbiAgdmFyIHdyYXBwZXJEb2N1bWVudCA9ICh3cmFwcGVySWZyYW1lLmNvbnRlbnRXaW5kb3cpID8gd3JhcHBlcklmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50IDogKHdyYXBwZXJJZnJhbWUuY29udGVudERvY3VtZW50IHx8IHdyYXBwZXJJZnJhbWUuZG9jdW1lbnQpO1xcclxcbiAgdmFyIHdyYXBwZXJXaW5kb3cgPSAod3JhcHBlcklmcmFtZS5jb250ZW50V2luZG93IHx8IHdyYXBwZXJJZnJhbWUud2luZG93KTtcXHJcXG4gIHdyYXBwZXJEb2N1bWVudC5vcGVuKCk7XFxyXFxuICBpZiAodHJ1ZSkge1xcclxcbiAgICB3cmFwcGVyRG9jdW1lbnQud3JpdGUoXFwnPHNjclxcJytcXCdpcHQgYXN5bmMgc3JjPVxcXCJodHRwczovL2Fkcy5wdWJtYXRpYy5jb20vQWRTZXJ2ZXIvanMvcHd0LzE1ODgyNi8yNjI4L3B3dC5qc1xcXCIgdHlwZT1cXFwidGV4dC9qYXZhc2NyaXB0XFxcIj48L3NjclxcJytcXCdpcHQ+PHNjclxcJytcXCdpcHQgYXN5bmMgc3JjPVxcXCJodHRwczovL3NlcnZpbmcucm9pbWVkaWFjb25zdWx0YW50cy5jb20vanMvcHJlYmlkLXJvaW1lZGlhLTcuNDEuMC5qc1xcXCIgdHlwZT1cXFwidGV4dC9qYXZhc2NyaXB0XFxcIj48L3NjclxcJytcXCdpcHQ+PGRpdiBpZD1cXFwiZnJpZW5kbHlfNDUxOTk3MDhcXFwiPjxkaXYgaWQ9XFxcImh0bWxfNDUxOTk3MDhcXFwiPjwvZGl2PjwvZGl2PlxcJyk7XFxyXFxuICB9IGVsc2Uge1xcclxcbiAgICB3cmFwcGVyRG9jdW1lbnQud3JpdGUoXFwnPHNjclxcJytcXCdpcHQgYXN5bmMgc3JjPVxcXCJodHRwczovL3NlcnZpbmcucm9pbWVkaWFjb25zdWx0YW50cy5jb20vanMvcHJlYmlkLXJvaW1lZGlhLTcuNDEuMC5qc1xcXCIgdHlwZT1cXFwidGV4dC9qYXZhc2NyaXB0XFxcIj48L3NjclxcJytcXCdpcHQ+PGRpdiBpZD1cXFwiZnJpZW5kbHlfNDUxOTk3MDhcXFwiPjxkaXYgaWQ9XFxcImh0bWxfNDUxOTk3MDhcXFwiPjwvZGl2PjwvZGl2PlxcJyk7XFxyXFxuICB9XFxyXFxuICB3cmFwcGVyRG9jdW1lbnQuY2xvc2UoKTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cuYWRVbml0Q29kZSA9IFxcJ2ZyaWVuZGx5XzQ1MTk5NzA4XFwnO1xcclxcbiAgd3JhcHBlcldpbmRvdy5hZFVuaXRzID0gW3tcXHJcXG4gICAgY29kZTogd3JhcHBlcldpbmRvdy5hZFVuaXRDb2RlLFxcclxcbiAgICBvcnRiMkltcDogeyBleHQ6IHsgZ3BpZDogXFwnVU9fLV9TdGFydHBhZ2VfTWl4ZWRfLV83MjhcXCcsIGRhdGE6IHsgcGJhZHNsb3Q6IFxcJ1VPXy1fU3RhcnRwYWdlX01peGVkXy1fNzI4XFwnIH0gfSB9LFxcclxcbiAgICBwdWJzdGFjazogeyBhZFVuaXROYW1lOiBkZWNvZGVVUklDb21wb25lbnQoXFwnVU8rLStTdGFydHBhZ2UrTWl4ZWQrLSs3MjhcXCcpIH0sXFxyXFxuICAgIG1lZGlhVHlwZXM6IHsgYmFubmVyOiB7IHBvczogMCwgc2l6ZXM6IFtbNzI4LDkwXV0gfSB9LFxcclxcbiAgICBzaXplczogW1s3MjgsOTBdXSxcXHJcXG4gICAgYmlkczogW3tiaWRkZXI6XFwnc292cm5cXCcsYWR2ZXJ0aXNlcjo0MSxtZWRpYTozOTA0LHNpemU6MTkscGFyYW1zOnt0YWdpZDpcXCc1NzY5OTFcXCd9fSx7YmlkZGVyOlxcJ3Nvbm9iaVxcJyxhZHZlcnRpc2VyOjcyLG1lZGlhOjQwMDQsc2l6ZToxOSxwYXJhbXM6e3BsYWNlbWVudF9pZDpcXCczNzViZmFjMDU2OWEyYzIzOTYyYlxcJ319LHtiaWRkZXI6XFwnYWRhZ2lvXFwnLGFkdmVydGlzZXI6OTQsbWVkaWE6OTE5MyxzaXplOjE5LHBhcmFtczp7b3JnYW5pemF0aW9uSWQ6XFwnMTM0M1xcJyxzaXRlOlxcJ3VvbFxcJyxhZFVuaXRFbGVtZW50SWQ6XFwnXFwnLGVudmlyb25tZW50OlxcJ2Rlc2t0b3BcXCcscGxhY2VtZW50OlxcJ1VPIC0gU3RhcnRwYWdlIE1peGVkIC0gNzI4XFwnfX0se2JpZGRlcjpcXCdzeW5hY29ybWVkaWFcXCcsYWR2ZXJ0aXNlcjoxMDYsbWVkaWE6OTE2NyxzaXplOjE5LHBhcmFtczp7c2VhdElkOlxcJ3JvaW1lZGlhXFwnLHRhZ0lkOlxcJzEwMTg3M1xcJ319LHtiaWRkZXI6XFwnYW14XFwnLGFkdmVydGlzZXI6OTUsbWVkaWE6OTAxMyxzaXplOjE5LHBhcmFtczp7dGFnSWQ6XFwnY205cGJXVmthV0ZqYjI1emRXeDBZVzUwY3k1amIyMFxcJyxhZFVuaXRJZDpcXCdVTyAtIFN0YXJ0cGFnZSBNaXhlZCAtIEhCIC0gNzI4XFwnfX0se2JpZGRlcjpcXCczM2Fjcm9zc1xcJyxhZHZlcnRpc2VyOjY4LG1lZGlhOjM4OTQsc2l6ZToxOSxwYXJhbXM6e3Byb2R1Y3RJZDpcXCdzaWFiXFwnLHNpdGVJZDpcXCdiYWhSU0NKZDhyNmswM2FLbElkOHNRXFwnfX0se2JpZGRlcjpcXCdoZWxsb2VhcnRoXFwnLGFkdmVydGlzZXI6ODQsbWVkaWE6NzEyNyxzaXplOjE5LHBhcmFtczp7cGxhY2VtZW50SWQ6XFwnMjAzODIzMjVcXCd9fSx7YmlkZGVyOlxcJ3B1Ym1hdGljXFwnLGFkdmVydGlzZXI6NyxtZWRpYTo2NjIyLHNpemU6MTkscGFyYW1zOntwdWJsaXNoZXJJZDpcXCcxNTg4MjZcXCcsYWRTbG90OlxcJ2p1bm9uZXR6ZXJvX2xvd2VyXzcyOHg5MF9uZXdcXCd9fV1cXHJcXG4gIH1dO1xcclxcbiAgdHJ5IHsgd3JhcHBlcldpbmRvdy5fX2NtcCA9ICh3aW5kb3cuX19jbXAgfHwgd2luZG93LnBhcmVudC5fX2NtcCk7IH0gY2F0Y2ggKGUpIHsgfVxcclxcbiAgdHJ5IHsgd3JhcHBlcldpbmRvdy5fX3RjZmFwaSA9ICh3aW5kb3cuX190Y2ZhcGkgfHwgd2luZG93LnBhcmVudC5fX3RjZmFwaSk7IH0gY2F0Y2ggKGUpIHsgfVxcclxcbiAgaWYgKHR5cGVvZiB3cmFwcGVyV2luZG93Ll9fY21wID09PSBcXCd1bmRlZmluZWRcXCcpIHsgdHJ5IHsgd3JhcHBlcldpbmRvdy5fX2NtcCA9IHdpbmRvdy50b3AuX19jbXA7IH0gY2F0Y2ggKGUpIHsgfSB9XFxyXFxuICBpZiAodHlwZW9mIHdyYXBwZXJXaW5kb3cuX190Y2ZhcGkgPT09IFxcJ3VuZGVmaW5lZFxcJykgeyB0cnkgeyB3cmFwcGVyV2luZG93Ll9fdGNmYXBpID0gd2luZG93LnRvcC5fX3RjZmFwaTsgfSBjYXRjaCAoZSkgeyB9IH1cXHJcXG4gIHdyYXBwZXJXaW5kb3cucGJqcyA9IHdyYXBwZXJXaW5kb3cucGJqcyB8fCB7fTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cucGJqcy5xdWUgPSB3cmFwcGVyV2luZG93LnBianMucXVlIHx8IFtdO1xcclxcbiAgaWYgKHR5cGVvZiBwYmpzID09PSBcXCd1bmRlZmluZWRcXCcpIHtcXHJcXG4gICAgd2luZG93LnBianMgPSB3cmFwcGVyV2luZG93LnBianM7XFxyXFxuICAgIHdpbmRvdy5wYmpzLnF1ZSA9IHdyYXBwZXJXaW5kb3cucGJqcy5xdWU7XFxyXFxuICB9XFxyXFxuICB3aW5kb3cucGJqc1B1YkRvbWFpbiA9IFxcJ2h0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL1xcJztcXHJcXG4gIGlmICh3aW5kb3cucGJqc1B1YkRvbWFpbi5pbmRleE9mKFxcJ2FtcHByb2plY3QubmV0XFwnKSAhPT0gLTEgfHwgd2luZG93LnBianNQdWJEb21haW4uaW5kZXhPZihcXCd3aWRnZXQuc2VsbHdpbGRcXCcpICE9PSAtMSkge1xcclxcbiAgICBpZiAod2luZG93LmNvbnRleHQgJiYgd2luZG93LmNvbnRleHQuc291cmNlVXJsKSB7IHdpbmRvdy5wYmpzUHViRG9tYWluID0gd2luZG93LmNvbnRleHQuc291cmNlVXJsOyB9XFxyXFxuICAgIGlmICh3aW5kb3cucGJqc1B1YkRvbWFpbi5pbmRleE9mKFxcJ2FtcHByb2plY3QubmV0XFwnKSAhPT0gLTEgfHwgd2luZG93LnBianNQdWJEb21haW4uaW5kZXhPZihcXCd3aWRnZXQuc2VsbHdpbGRcXCcpICE9PSAtMSkge1xcclxcbiAgICAgIGlmICh3aW5kb3cuY29udGV4dCAmJiB3aW5kb3cuY29udGV4dC5yZWZlcnJlcikgeyB3aW5kb3cucGJqc1B1YkRvbWFpbiA9IHdpbmRvdy5jb250ZXh0LnJlZmVycmVyOyB9XFxyXFxuICAgICAgaWYgKHdpbmRvdy5wYmpzUHViRG9tYWluLmluZGV4T2YoXFwnYW1wcHJvamVjdC5uZXRcXCcpICE9PSAtMSB8fCB3aW5kb3cucGJqc1B1YkRvbWFpbi5pbmRleE9mKFxcJ3dpZGdldC5zZWxsd2lsZFxcJykgIT09IC0xKSB7XFxyXFxuICAgICAgICB0cnkgeyBpZiAod2luZG93LmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucykgeyB3aW5kb3cucGJqc1B1YkRvbWFpbiA9IHdpbmRvdy5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnNbd2luZG93LmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGgtMV07IH0gfSBjYXRjaCAoZSkgeyB9XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICB3cmFwcGVyV2luZG93LmN1cnJlbmN5Q29kZSA9IFxcJ1VTRFxcJztcXHJcXG4gIHdyYXBwZXJXaW5kb3cuY3VycmVuY3lSYXRlcyA9IHtcXFwiVVNEXFxcIjp7XFxcIlVTRFxcXCI6MSxcXFwiSlBZXFxcIjoxMzguNDE3MjkyODg0MzEyMDgsXFxcIkJHTlxcXCI6MS44MTQ0NTQwMzA5ODYxNzY3LFxcXCJDWktcXFwiOjIxLjk2OTU3MDQ2MTA4MTczNCxcXFwiREtLXFxcIjo2LjkwOTI2ODAyMTE1MjI0LFxcXCJHQlBcXFwiOjAuODA3MDYwMDI0MTIwOTc1OSxcXFwiSFVGXFxcIjozNDkuMjQzOTAwMTc2MjY4NjUsXFxcIlBMTlxcXCI6NC4xNzY0NTQyMTY1MzIxNDYsXFxcIlJPTlxcXCI6NC42MTI2NzI3ODk2ODM2NDUsXFxcIlNFS1xcXCI6MTAuNjIxOTUwMDg4MTM0MzM1LFxcXCJDSEZcXFwiOjAuOTAxNTY3ODYzNDM4MTY2OCxcXFwiSVNLXFxcIjoxNDAuMzY1NTI1NTU4OTU3MjQsXFxcIk5PS1xcXCI6MTAuOTM5NzkwMzMzMDU1MDEzLFxcXCJUUllcXFwiOjE5Ljg1Mjc2OTI3MzU4NzUzLFxcXCJBVURcXFwiOjEuNTEwNTI5NzMzNzQxNTM0NCxcXFwiQlJMXFxcIjo0Ljk3NzE3Nzg0NTgxMTI5OSxcXFwiQ0FEXFxcIjoxLjM1MTc5NTE1NzI1MDIwODcsXFxcIkNOWVxcXCI6Ny4wNTQzNjQ5Njg5MjEwNSxcXFwiSEtEXFxcIjo3LjgzNzQ2MTczMTE0Mzg5MDYsXFxcIklEUlxcXCI6MTQ4ODMuNzgzMjgyMzA4MTksXFxcIklMU1xcXCI6My42ODgyODI3NzIwNTY3NzcsXFxcIklOUlxcXCI6ODIuODE2MTIzOTQ0NzA3MyxcXFwiS1JXXFxcIjoxMzE5LjkyNzYzNzA3MjA4NDUsXFxcIk1YTlxcXCI6MTcuOTI2MDU5OTMxMzQ3OTkzLFxcXCJNWVJcXFwiOjQuNTY5OTk3MjE2ODEwNDY1LFxcXCJOWkRcXFwiOjEuNTk5OTYyODkwODA2MTk3MSxcXFwiUEhQXFxcIjo1NS43MTIwMzI2NTYwOTA1NCxcXFwiU0dEXFxcIjoxLjM0NzcxMzE0NTkzMTkwNDcsXFxcIlRIQlxcXCI6MzQuNzI5NTY2NzUwMTYyMzU2LFxcXCJaQVJcXFwiOjE5LjI4OTM1ODkzODY3NzA1OCxcXFwiRVVSXFxcIjowLjkyNzcyOTg0NTA2OTExNTh9LFxcXCJHQlBcXFwiOntcXFwiVVNEXFxcIjoxLjIzOTA2NTIxMjE0MzUwNixcXFwiSlBZXFxcIjoxNzEuNTA4MDUyMzcyMDI5OTQsXFxcIkJHTlxcXCI6Mi4yNDgyMjY4Njg4Mjg1MjYzLFxcXCJDWktcXFwiOjI3LjIyMTczMDQ4NDA2MTkzNixcXFwiREtLXFxcIjo4LjU2MTAzMzY0NjM4NTM0MixcXFwiR0JQXFxcIjoxLFxcXCJIVUZcXFwiOjQzMi43MzU5NjcyNjE3MzM3LFxcXCJQTE5cXFwiOjUuMTc0ODk5MTI5ODE1MDQzLFxcXCJST05cXFwiOjUuNzE1NDAyMzg4Njk3OTQxNSxcXFwiU0VLXFxcIjoxMy4xNjEyODg4MzkzMzE5LFxcXCJDSEZcXFwiOjEuMTE3MTAxMzc1OTcyNzc5NSxcXFwiSVNLXFxcIjoxNzMuOTIyMDM5NzA0MzQ0MDYsXFxcIk5PS1xcXCI6MTMuNTU1MTEzNjI5ODMyMjg2LFxcXCJUUllcXFwiOjI0LjU5ODg3NTc3MTYxMzgxLFxcXCJBVURcXFwiOjEuODcxNjQ0ODQ0OTg3NTI3OCxcXFwiQlJMXFxcIjo2LjE2NzA0NzkyMzM5NjEzNSxcXFwiQ0FEXFxcIjoxLjY3NDk2MjM1MzI5Mjc5MzcsXFxcIkNOWVxcXCI6OC43NDA4MTgyMjY3NTM4NzcsXFxcIkhLRFxcXCI6OS43MTExMjYxODI1NjY0MTQsXFxcIklEUlxcXCI6MTg0NDEuOTc4MDkwMTkxMTY1LFxcXCJJTFNcXFwiOjQuNTcwMDIyODc1NDAzNzY4LFxcXCJJTlJcXFwiOjEwMi42MTQ1NzgxODQ0NTE2MixcXFwiS1JXXFxcIjoxNjM1LjQ3NjQxNzY0Mjc5ODksXFxcIk1YTlxcXCI6MjIuMjExNTU3MjUxNzMyOTAyLFxcXCJNWVJcXFwiOjUuNjYyNTI0NTcwOTQyNDksXFxcIk5aRFxcXCI6MS45ODI0NTgzNTg3MTg1MTc2LFxcXCJQSFBcXFwiOjY5LjAzMDg0MTU2MTk2NDc2LFxcXCJTR0RcXFwiOjEuNjY5OTA0NDc1MDcyNzA3MixcXFwiVEhCXFxcIjo0My4wMzIxOTc5OTI5NDE5NyxcXFwiWkFSXFxcIjoyMy45MDA3NzM2MjU0NjQxMixcXFwiRVVSXFxcIjoxLjE0OTUxNzc3NzI5MjQyNTl9fTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cucmVwb3J0YWJsZUJpZHMgPSB7fTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cuY29udmVydEJpZCA9IGZ1bmN0aW9uKGJpZCwgYmlkQ3BtKSB7XFxyXFxuICAgIHdyYXBwZXJXaW5kb3cucmVwb3J0YWJsZUJpZHNbYmlkLmFkSWRdID0gKFxcJ2N1cnJlbmN5XFwnIGluIGJpZCAmJiBiaWQuY3VycmVuY3kgPT09IFxcJ0dCUFxcJykgPyAoYmlkQ3BtICogd3JhcHBlcldpbmRvdy5jdXJyZW5jeVJhdGVzW1xcJ0dCUFxcJ11bXFwnVVNEXFwnXSkgOiBiaWRDcG07XFxyXFxuICAgIGlmICh3cmFwcGVyV2luZG93LmN1cnJlbmN5Q29kZSAhPT0gXFwnVVNEXFwnKSB7XFxyXFxuICAgICAgcmV0dXJuIChcXCdjdXJyZW5jeVxcJyBpbiBiaWQgJiYgYmlkLmN1cnJlbmN5ID09PSB3cmFwcGVyV2luZG93LmN1cnJlbmN5Q29kZSkgPyBiaWRDcG0gOiAod3JhcHBlcldpbmRvdy5yZXBvcnRhYmxlQmlkc1tiaWQuYWRJZF0gKiB3cmFwcGVyV2luZG93LmN1cnJlbmN5UmF0ZXNbXFwnVVNEXFwnXVt3cmFwcGVyV2luZG93LmN1cnJlbmN5Q29kZV0pO1xcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICAgIHJldHVybiB3cmFwcGVyV2luZG93LnJlcG9ydGFibGVCaWRzW2JpZC5hZElkXTtcXHJcXG4gICAgfVxcclxcbiAgfTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cucGJqcy5xdWUucHVzaChmdW5jdGlvbigpIHtcXHJcXG4gICAgd3JhcHBlcldpbmRvdy5wYmpzLmJpZGRlclNldHRpbmdzID0ge1xcbnN0YW5kYXJkOiB7IGJpZENwbUFkanVzdG1lbnQ6IGZ1bmN0aW9uKGJpZENwbSwgYmlkKSB7IHJldHVybiB3cmFwcGVyV2luZG93LmNvbnZlcnRCaWQoYmlkLCBiaWRDcG0pOyB9IH0sXFxcInNvdnJuXFxcIjogeyBiaWRDcG1BZGp1c3RtZW50IDogZnVuY3Rpb24oYmlkQ3BtLCBiaWQpIHsgcmV0dXJuIHdyYXBwZXJXaW5kb3cuY29udmVydEJpZChiaWQsIChiaWRDcG0gKiAxKSk7IH0gfSxcXFwic29ub2JpXFxcIjogeyBiaWRDcG1BZGp1c3RtZW50IDogZnVuY3Rpb24oYmlkQ3BtLCBiaWQpIHsgcmV0dXJuIHdyYXBwZXJXaW5kb3cuY29udmVydEJpZChiaWQsIChiaWRDcG0gKiAxKSk7IH0gfSxcXFwiYWRhZ2lvXFxcIjogeyBiaWRDcG1BZGp1c3RtZW50IDogZnVuY3Rpb24oYmlkQ3BtLCBiaWQpIHsgcmV0dXJuIHdyYXBwZXJXaW5kb3cuY29udmVydEJpZChiaWQsIChiaWRDcG0gKiAwLjk1KSk7IH0gfSxcXFwic3luYWNvcm1lZGlhXFxcIjogeyBiaWRDcG1BZGp1c3RtZW50IDogZnVuY3Rpb24oYmlkQ3BtLCBiaWQpIHsgcmV0dXJuIHdyYXBwZXJXaW5kb3cuY29udmVydEJpZChiaWQsIChiaWRDcG0gKiAwLjk1KSk7IH0gfSxcXFwiYW14XFxcIjogeyBiaWRDcG1BZGp1c3RtZW50IDogZnVuY3Rpb24oYmlkQ3BtLCBiaWQpIHsgcmV0dXJuIHdyYXBwZXJXaW5kb3cuY29udmVydEJpZChiaWQsIChiaWRDcG0gKiAwLjkpKTsgfSB9LFxcXCIzM2Fjcm9zc1xcXCI6IHsgYmlkQ3BtQWRqdXN0bWVudCA6IGZ1bmN0aW9uKGJpZENwbSwgYmlkKSB7IHJldHVybiB3cmFwcGVyV2luZG93LmNvbnZlcnRCaWQoYmlkLCAoYmlkQ3BtICogMSkpOyB9IH0sXFxcImhlbGxvZWFydGhcXFwiOiB7IGJpZENwbUFkanVzdG1lbnQgOiBmdW5jdGlvbihiaWRDcG0sIGJpZCkgeyByZXR1cm4gd3JhcHBlcldpbmRvdy5jb252ZXJ0QmlkKGJpZCwgKGJpZENwbSAqIDAuOTgpKTsgfSB9LFxcXCJwdWJtYXRpY1xcXCI6IHsgYmlkQ3BtQWRqdXN0bWVudCA6IGZ1bmN0aW9uKGJpZENwbSwgYmlkKSB7IHJldHVybiB3cmFwcGVyV2luZG93LmNvbnZlcnRCaWQoYmlkLCAoYmlkQ3BtICogMSkpOyB9IH1cXG59O1xcbndyYXBwZXJXaW5kb3cucGJqcy5zZXRDb25maWcoeyBwYWdlVXJsOiB3aW5kb3cucGJqc1B1YkRvbWFpbiwgcHJpY2VHcmFudWxhcml0eTogXFwnaGlnaFxcJywgb3V0YnJhaW46IHsgYmlkZGVyVXJsOiBcXCdodHRwczovL3ByZWJpZHRlc3QuemVtYW50YS5jb20vYXBpL2JpZGRlci9wcmViaWR0ZXN0L2JpZC9cXCcsIHVzZXJzeW5jVXJsOiBcXCdodHRwczovL3ByZWJpZHRlc3QuemVtYW50YS5jb20vdXNlcnN5bmMvcHJlYmlkXFwnIH0sIHVzZXJTeW5jOiB7IHN5bmNFbmFibGVkOiBmYWxzZSwgZmlsdGVyU2V0dGluZ3M6IHsgaWZyYW1lOiB7IGJpZGRlcnM6IFxcJypcXCcsIGZpbHRlcjogXFwnaW5jbHVkZVxcJyB9IH0gfSwgc2NoYWluOiB7XFxyXFxuICB2YWxpZGF0aW9uOiBcXCdzdHJpY3RcXCcsXFxyXFxuICBjb25maWc6IHtcXHJcXG4gICAgdmVyOiBcXCcxLjBcXCcsXFxyXFxuICAgIGNvbXBsZXRlOiAxLFxcclxcbiAgICBub2RlczogW3tcXHJcXG4gICAgICBhc2k6IFxcJ3JvaW1lZGlhY29uc3VsdGFudHMuY29tXFwnLCBzaWQ6IFxcJzE4XFwnLCBocDogMVxcclxcbiAgICB9XVxcclxcbiAgfVxcclxcbn0gfSk7XFxyXFxuICAgIHdyYXBwZXJXaW5kb3cucGJqcy5hbGlhc0JpZGRlcihcXCdhcHBuZXh1c1xcJywgXFwnaGVsbG9lYXJ0aFxcJyk7XFxyXFxuICAgIHdyYXBwZXJXaW5kb3cucGJqcy5hbGlhc0JpZGRlcihcXCdvdXRicmFpblxcJywgXFwnb3V0YnJhaW5fbmF0aXZlXFwnKTtcXHJcXG4gICAgaWYgKHRydWUpIHtcXHJcXG4gICAgICB3cmFwcGVyV2luZG93LnBianMuYWxpYXNCaWRkZXIoXFwneWFob29zc3BcXCcsIFxcJ2FvbFxcJyk7XFxyXFxuICAgICAgd3JhcHBlcldpbmRvdy5wYmpzLmFsaWFzQmlkZGVyKFxcJ3lhaG9vc3NwXFwnLCBcXCdvbmVkaXNwbGF5XFwnKTtcXHJcXG4gICAgICB3cmFwcGVyV2luZG93LnBianMuYWxpYXNCaWRkZXIoXFwneWFob29zc3BcXCcsIFxcJ29uZW1vYmlsZVxcJyk7XFxyXFxuICAgIH1cXHJcXG4gICAgaWYgKHdyYXBwZXJXaW5kb3cucGJqcy5pbnN0YWxsZWRNb2R1bGVzLmluZGV4T2YoXFwnYWRhZ2lvQmlkQWRhcHRlclxcJykgPj0gMCkgeyBpZiAoIShcXCdhZGFnaW9cXCcgaW4gd3JhcHBlcldpbmRvdy5wYmpzLmJpZGRlclNldHRpbmdzKSkgeyB3cmFwcGVyV2luZG93LnBianMuYmlkZGVyU2V0dGluZ3MuYWRhZ2lvID0ge307IH0gd3JhcHBlcldpbmRvdy5wYmpzLmJpZGRlclNldHRpbmdzLmFkYWdpby5zdG9yYWdlQWxsb3dlZCA9IHRydWU7IH1cXHJcXG4gICAgaWYgKHdyYXBwZXJXaW5kb3cucGJqcy5pbnN0YWxsZWRNb2R1bGVzLmluZGV4T2YoXFwnbGFzc29CaWRBZGFwdGVyXFwnKSA+PSAwKSB7IGlmICghKFxcJ2xhc3NvXFwnIGluIHdyYXBwZXJXaW5kb3cucGJqcy5iaWRkZXJTZXR0aW5ncykpIHsgd3JhcHBlcldpbmRvdy5wYmpzLmJpZGRlclNldHRpbmdzLmxhc3NvID0ge307IH0gd3JhcHBlcldpbmRvdy5wYmpzLmJpZGRlclNldHRpbmdzLmxhc3NvLnN0b3JhZ2VBbGxvd2VkID0gdHJ1ZTsgfVxcclxcbiAgICB3cmFwcGVyV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdyYXBwZXJXaW5kb3cuaW5pdEFkc2VydmVyKCk7IH0sICgxLjUgKiAzMDAwKSk7XFxyXFxuICAgIGlmICh0cnVlKSB7XFxyXFxuICAgICAgaWYgKHdyYXBwZXJXaW5kb3cuUFdUICYmIHR5cGVvZiB3cmFwcGVyV2luZG93LlBXVC5nZXRVc2VySWRzID09PSBcXFwiZnVuY3Rpb25cXFwiKSB7XFxyXFxuICAgICAgICB3cmFwcGVyV2luZG93LmFkVW5pdHMubWFwKGZ1bmN0aW9uKGFkVW5pdCkge1xcclxcbiAgICAgICAgICBhZFVuaXQuYmlkcy5tYXAoZnVuY3Rpb24oYmlkKSB7XFxyXFxuICAgICAgICAgICAgYmlkW1xcXCJ1c2VySWRcXFwiXSA9IHdyYXBwZXJXaW5kb3cuUFdULmdldFVzZXJJZHMoKTtcXHJcXG4gICAgICAgICAgICBiaWRbXFxcInVzZXJJZEFzRWlkc1xcXCJdID0gd3JhcHBlcldpbmRvd1tcXCdvd3BcXCcrXFwnYmpzXFwnXS5nZXRVc2VySWRzQXNFaWRzKCk7XFxyXFxuICAgICAgICAgIH0pO1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgfVxcclxcbiAgICB9XFxyXFxuICAgIHdyYXBwZXJXaW5kb3cucGJqcy5hZGRBZFVuaXRzKHdyYXBwZXJXaW5kb3cuYWRVbml0cyk7XFxyXFxuICAgIHdyYXBwZXJXaW5kb3cucGJqcy5yZXF1ZXN0Qmlkcyh7XFxyXFxuICAgICAgYmlkc0JhY2tIYW5kbGVyOiB3cmFwcGVyV2luZG93LmluaXRBZHNlcnZlciwgdGltZW91dDogMzAwMFxcclxcbiAgICB9KTtcXHJcXG4gIH0pO1xcclxcbiAgd3JhcHBlcldpbmRvdy5nZXRXaW5VcmwgPSBmdW5jdGlvbihiaWRSZXNwb25zZSkge1xcclxcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vc2VydmluZy5yb2ltZWRpYWNvbnN1bHRhbnRzLmNvbS9zZXJ2bGV0L3ZpZXcvYmFubmVyL2phdmFzY3JpcHQvbWVkaWE/bWlkPTAmY2lkPTE3NzcmcGlkPTkmemlkPTE4NTAmdXVpZD1kOTA2YmRmOTBlMmMwZGEzODM0NmU2MGVjYWMxM2E0MyZyYW5kb209NDUxOTk3MDgmbWlsbGlzPTIwMjMwNTI0MTE0MTE4JmhiX3JlcXVlc3Q9e1JFUVVFU1RJRH0maGJfYmlkZGVyPXtCSURERVJ9JmhiX2NwbT17Q1BNfSZoYl9hZGlkPXtIQkFESUR9JmhiX2RlYWxpZD1udWxsJmhiX3NpemU9e1NJWkV9JmhiX2ZyaWVuZGx5PWZyaWVuZGx5XzQ1MTk5NzA4Jmxhbmd1YWdlPXh4JnJlc29sdXRpb249dW5zcGVjaWZpZWQmdHhpZD04NzE2NDY4NCZmcmNuPTAmcm1waWQ9dHJ1ZSZzaWQ9MTkmZW5jb2RlPTEmcmVmZXJyZXI9aHR0cCUzQSUyRiUyRmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20lMkYmY3R1cmw9aHR0cHMlM0ElMkYlMkZhZGNsaWNrLmcuZG91YmxlY2xpY2submV0JTJGcGNzJTJGY2xpY2slM0Z4YWklM0RBS0FPanNzakZtN0pmT0JoRm9yTWZvczJoenlYZEl4WTF1RkFvMHRXWEhrRWhtWFRadmEzMFVXMUpWbGdVWHdCbXFrTDJJMDIxSUs0ZTFwR1RmeUdWRXpVUzZSbVVZT2ZwQXJacDBqb0IwclZSRUtIUWNKcFVRMTBVUGx5NzZpNFdqcTJHVWJ4RmRqZTNFQWI1cy1ZdTZIMW9SbHQxWm9JU2hqRUlTamVPVm1YSlFvTWY0eF92NWdET1Y0Q3dJLVVmLUxwdDZMWEJzTUdTTTFDWEVkdld6Z29aZkZtNkF5MXZsMGlFU21LSy1KdWsxdkFtRlhlTlBVNjBrSTFXMG1QTnJjVVYxM3FVY28lMjZzYWklM0RBTWZsLVlSTG5yY3Bsa2RBWTgxUnRHZHZTbmZCT0N3VXRuSUJEOXRNa2dyWWx2RHBqOG9zMkM4aUhiSE1YNWpqd3gxQTRXVXRsbzZNUGdWYU5oa19iMmJVZzlKQXBKN2U2cDNhbm5jSzV5U2p1aFU2dTZpalg2VDNmS25EeUl0RndYYm0lMjZzaWclM0RDZzBBcktKU3pMZmo1V0pwQmw1YUVBRSUyNnVybGZpeCUzRDElMjZhZHVybCUzRFxcXCI7XFxyXFxuICAgIHVybCA9IHVybC5yZXBsYWNlKFxcJ3tSRVFVRVNUSUR9XFwnLCBcXCc1OTU1MjkwMFxcJyk7XFxyXFxuICAgIHVybCA9IHVybC5yZXBsYWNlKFxcJ3tCSURERVJ9XFwnLCBiaWRSZXNwb25zZS5iaWRkZXJDb2RlKTtcXHJcXG4gICAgdXJsID0gdXJsLnJlcGxhY2UoXFwne0NQTX1cXCcsIHdyYXBwZXJXaW5kb3cucmVwb3J0YWJsZUJpZHNbYmlkUmVzcG9uc2UuYWRJZF0pO1xcclxcbiAgICB1cmwgPSB1cmwucmVwbGFjZShcXCd7SEJBRElEfVxcJywgYmlkUmVzcG9uc2UuYWRJZCk7XFxyXFxuICAgIHVybCA9IHVybC5yZXBsYWNlKFxcJ3tTSVpFfVxcJywgYmlkUmVzcG9uc2Uuc2l6ZSk7XFxyXFxuICAgIGlmIChcXCdkZWFsSWRcXCcgaW4gYmlkUmVzcG9uc2UgJiYgdHlwZW9mIGJpZFJlc3BvbnNlLmRlYWxJZCAhPT0gXFwndW5kZWZpbmVkXFwnKSB7IHVybCA9IHVybC5yZXBsYWNlKFxcJ2hiX2RlYWxpZD1udWxsXFwnLCBcXCdoYl9kZWFsaWQ9XFwnICsgYmlkUmVzcG9uc2UuZGVhbElkKTsgfVxcclxcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoXFwnJnJhbmRvbT1cXCcsIFxcJyZ2aWV3YWJsZT1cXCcgKyBkb2N1bWVudC5mcmllbmRseV80NTE5OTcwOFZpZXdhYmxlICsgXFwnJnJhbmRvbT1cXCcpO1xcclxcbiAgfTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cuZ2V0RmFpbFVybCA9IGZ1bmN0aW9uKGJpZENvdW50KSB7XFxyXFxuICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly9zZXJ2aW5nLnJvaW1lZGlhY29uc3VsdGFudHMuY29tL3NlcnZsZXQvdmlldy9iYW5uZXIvamF2YXNjcmlwdC96b25lP3BpZD05JnppZD0xODUwJmZjaWQ9MTc3NyZ1dWlkPWQ5MDZiZGY5MGUyYzBkYTM4MzQ2ZTYwZWNhYzEzYTQzJnJhbmRvbT00NTE5OTcwOCZtaWxsaXM9MjAyMzA1MjQxMTQxMTgmaGJfcmVxdWVzdD17UkVRVUVTVElEfSZoYl9lcnJvcj17RVJSQ09ERX0mZnJpZW5kbHk9ZnJpZW5kbHlfNDUxOTk3MDgmbGFuZ3VhZ2U9eHgmcmVzb2x1dGlvbj11bnNwZWNpZmllZCZ0eGlkPTg3MTY0Njg0JmZyY249MCZybXBpZD10cnVlJnNpZD0xOSZlbmNvZGU9MSZyZWZlcnJlcj1odHRwJTNBJTJGJTJGYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSUyRiZjdHVybD1odHRwcyUzQSUyRiUyRmFkY2xpY2suZy5kb3VibGVjbGljay5uZXQlMkZwY3MlMkZjbGljayUzRnhhaSUzREFLQU9qc3NqRm03SmZPQmhGb3JNZm9zMmh6eVhkSXhZMXVGQW8wdFdYSGtFaG1YVFp2YTMwVVcxSlZsZ1VYd0JtcWtMMkkwMjFJSzRlMXBHVGZ5R1ZFelVTNlJtVVlPZnBBclpwMGpvQjByVlJFS0hRY0pwVVExMFVQbHk3Nmk0V2pxMkdVYnhGZGplM0VBYjVzLVl1Nkgxb1JsdDFab0lTaGpFSVNqZU9WbVhKUW9NZjR4X3Y1Z0RPVjRDd0ktVWYtTHB0NkxYQnNNR1NNMUNYRWR2V3pnb1pmRm02QXkxdmwwaUVTbUtLLUp1azF2QW1GWGVOUFU2MGtJMVcwbVBOcmNVVjEzcVVjbyUyNnNhaSUzREFNZmwtWVJMbnJjcGxrZEFZODFSdEdkdlNuZkJPQ3dVdG5JQkQ5dE1rZ3JZbHZEcGo4b3MyQzhpSGJITVg1amp3eDFBNFdVdGxvNk1QZ1ZhTmhrX2IyYlVnOUpBcEo3ZTZwM2FubmNLNXlTanVoVTZ1NmlqWDZUM2ZLbkR5SXRGd1hibSUyNnNpZyUzRENnMEFyS0pTekxmajVXSnBCbDVhRUFFJTI2dXJsZml4JTNEMSUyNmFkdXJsJTNEXFxcIjtcXHJcXG4gICAgdXJsID0gdXJsLnJlcGxhY2UoXFwne1JFUVVFU1RJRH1cXCcsIFxcJzU5NTUyOTAwXFwnKTtcXHJcXG4gICAgdXJsID0gdXJsLnJlcGxhY2UoXFwne0VSUkNPREV9XFwnLCAoYmlkQ291bnQgPiAwID8gXFwnZGVjbGluZVxcJyA6IFxcJ3RpbWVvdXRcXCcpKTtcXHJcXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKFxcJyZyYW5kb209XFwnLCBcXCcmdmlld2FibGU9XFwnICsgZG9jdW1lbnQuZnJpZW5kbHlfNDUxOTk3MDhWaWV3YWJsZSArIFxcJyZyYW5kb209XFwnKTtcXHJcXG4gIH07XFxyXFxuICB3cmFwcGVyV2luZG93LmdldEFqYXhGYWlsVXJsID0gZnVuY3Rpb24oYmlkQ291bnQpIHtcXHJcXG4gICAgdmFyIHVybCA9IFxcXCJodHRwczovL3NlcnZpbmcucm9pbWVkaWFjb25zdWx0YW50cy5jb20vc2VydmxldC92aWV3L2Jhbm5lci9qYXZhc2NyaXB0L2FqYXgvY3Jvc3Nkb21haW4vem9uZT9waWQ9OSZ6aWQ9MTg1MCZmY2lkPTE3NzcmdXVpZD1kOTA2YmRmOTBlMmMwZGEzODM0NmU2MGVjYWMxM2E0MyZyYW5kb209NDUxOTk3MDgmbWlsbGlzPTIwMjMwNTI0MTE0MTE4JmhiX3JlcXVlc3Q9e1JFUVVFU1RJRH0maGJfZXJyb3I9e0VSUkNPREV9Jmxhbmd1YWdlPXh4JnJlc29sdXRpb249dW5zcGVjaWZpZWQmdHhpZD04NzE2NDY4NCZmcmNuPTAmcm1waWQ9dHJ1ZSZzaWQ9MTkmZW5jb2RlPTEmcmVmZXJyZXI9aHR0cCUzQSUyRiUyRmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20lMkYmY3R1cmw9aHR0cHMlM0ElMkYlMkZhZGNsaWNrLmcuZG91YmxlY2xpY2submV0JTJGcGNzJTJGY2xpY2slM0Z4YWklM0RBS0FPanNzakZtN0pmT0JoRm9yTWZvczJoenlYZEl4WTF1RkFvMHRXWEhrRWhtWFRadmEzMFVXMUpWbGdVWHdCbXFrTDJJMDIxSUs0ZTFwR1RmeUdWRXpVUzZSbVVZT2ZwQXJacDBqb0IwclZSRUtIUWNKcFVRMTBVUGx5NzZpNFdqcTJHVWJ4RmRqZTNFQWI1cy1ZdTZIMW9SbHQxWm9JU2hqRUlTamVPVm1YSlFvTWY0eF92NWdET1Y0Q3dJLVVmLUxwdDZMWEJzTUdTTTFDWEVkdld6Z29aZkZtNkF5MXZsMGlFU21LSy1KdWsxdkFtRlhlTlBVNjBrSTFXMG1QTnJjVVYxM3FVY28lMjZzYWklM0RBTWZsLVlSTG5yY3Bsa2RBWTgxUnRHZHZTbmZCT0N3VXRuSUJEOXRNa2dyWWx2RHBqOG9zMkM4aUhiSE1YNWpqd3gxQTRXVXRsbzZNUGdWYU5oa19iMmJVZzlKQXBKN2U2cDNhbm5jSzV5U2p1aFU2dTZpalg2VDNmS25EeUl0RndYYm0lMjZzaWclM0RDZzBBcktKU3pMZmo1V0pwQmw1YUVBRSUyNnVybGZpeCUzRDElMjZhZHVybCUzRFxcXCI7XFxyXFxuICAgIHVybCA9IHVybC5yZXBsYWNlKFxcJ3tSRVFVRVNUSUR9XFwnLCBcXCc1OTU1MjkwMFxcJyk7XFxyXFxuICAgIHVybCA9IHVybC5yZXBsYWNlKFxcJ3tFUlJDT0RFfVxcJywgKGJpZENvdW50ID4gMCA/IFxcJ2RlY2xpbmVcXCcgOiBcXCd0aW1lb3V0XFwnKSk7XFxyXFxuICAgIHJldHVybiB1cmwucmVwbGFjZShcXCcmcmFuZG9tPVxcJywgXFwnJnZpZXdhYmxlPVxcJyArIGRvY3VtZW50LmZyaWVuZGx5XzQ1MTk5NzA4Vmlld2FibGUgKyBcXCcmcmFuZG9tPVxcJyk7XFxyXFxuICB9O1xcclxcbiAgd3JhcHBlcldpbmRvdy5nZXRIaWdoZXN0QmlkID0gZnVuY3Rpb24gKGFkVW5pdENvZGUpIHtcXHJcXG4gICAgdmFyIGZsb29yQ1BNID0gMC4wMTtcXHJcXG4gICAgdmFyIGJpZFJlc3BvbnNlcyA9IHdyYXBwZXJXaW5kb3cucGJqcy5nZXRCaWRSZXNwb25zZXNGb3JBZFVuaXRDb2RlKGFkVW5pdENvZGUpO1xcclxcbiAgICB2YXIgaGlnaGVzdEJpZCA9IG51bGw7XFxyXFxuICAgIGlmIChiaWRSZXNwb25zZXMgJiYgYmlkUmVzcG9uc2VzLmJpZHMgJiYgYmlkUmVzcG9uc2VzLmJpZHMubGVuZ3RoID4gMCkge1xcclxcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmlkUmVzcG9uc2VzLmJpZHMubGVuZ3RoOyBpKyspIHtcXHJcXG4gICAgICAgIHZhciBiaWRSZXNwb25zZSA9IGJpZFJlc3BvbnNlcy5iaWRzW2ldO1xcclxcbiAgICAgICAgaWYgKChoaWdoZXN0QmlkID09PSBudWxsIHx8IGJpZFJlc3BvbnNlLmNwbSA+IGhpZ2hlc3RCaWQuY3BtKSAmJiAoZmxvb3JDUE0gPD0gMC4wMCB8fCBiaWRSZXNwb25zZS5jcG0gPj0gZmxvb3JDUE0pKSB7XFxyXFxuICAgICAgICAgIGhpZ2hlc3RCaWQgPSBiaWRSZXNwb25zZTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICB9XFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIGhpZ2hlc3RCaWQ7XFxyXFxuICB9O1xcclxcbiAgd3JhcHBlcldpbmRvdy5nZXRCaWRDb3VudCA9IGZ1bmN0aW9uIChhZFVuaXRDb2RlKSB7XFxyXFxuICAgIHZhciBiaWRSZXNwb25zZXMgPSB3cmFwcGVyV2luZG93LnBianMuZ2V0QmlkUmVzcG9uc2VzRm9yQWRVbml0Q29kZShhZFVuaXRDb2RlKTtcXHJcXG4gICAgcmV0dXJuIChiaWRSZXNwb25zZXMgJiYgYmlkUmVzcG9uc2VzLmJpZHMgJiYgYmlkUmVzcG9uc2VzLmJpZHMubGVuZ3RoID4gMCkgPyBiaWRSZXNwb25zZXMuYmlkcy5sZW5ndGggOiAwO1xcclxcbiAgfTtcXHJcXG4gIHdyYXBwZXJXaW5kb3cuaW5pdEFkc2VydmVyQ2FsbGVkID0gZmFsc2U7XFxyXFxuICB3cmFwcGVyV2luZG93LmluaXRBZHNlcnZlciA9IGZ1bmN0aW9uKCkge1xcclxcbiAgICBpZiAoIXdyYXBwZXJXaW5kb3cuaW5pdEFkc2VydmVyQ2FsbGVkKSB7XFxyXFxuICAgICAgd3JhcHBlcldpbmRvdy5pbml0QWRzZXJ2ZXJDYWxsZWQgPSB0cnVlO1xcclxcbiAgICAgIHZhciBiaWRSZXNwb25zZSA9IHdyYXBwZXJXaW5kb3cuZ2V0SGlnaGVzdEJpZCh3cmFwcGVyV2luZG93LmFkVW5pdENvZGUpO1xcclxcbiAgICAgIGlmIChiaWRSZXNwb25zZSAhPT0gbnVsbCkge1xcclxcbiAgICAgICAgdmFyIGJpZElmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFxcImlmcmFtZVxcXCIpO1xcclxcbiAgICAgICAgYmlkSWZyYW1lLnNldEF0dHJpYnV0ZShcXFwiaWRcXFwiLCB3cmFwcGVyV2luZG93LmFkVW5pdENvZGUgKyBcXFwiX0NyZWF0aXZlXFxcIik7XFxyXFxuICAgICAgICBiaWRJZnJhbWUuc2V0QXR0cmlidXRlKFxcXCJ0aXRsZVxcXCIsIFxcXCJBZHZlcnRpc2VtZW50XFxcIik7XFxyXFxuICAgICAgICBiaWRJZnJhbWUuc2V0QXR0cmlidXRlKFxcXCJhbGxvd3RyYW5zcGFyZW5jeVxcXCIsIFxcXCJ0cnVlXFxcIik7XFxyXFxuICAgICAgICBiaWRJZnJhbWUuc2V0QXR0cmlidXRlKFxcXCJzY3JvbGxpbmdcXFwiLCBcXFwibm9cXFwiKTtcXHJcXG4gICAgICAgIGJpZElmcmFtZS5zZXRBdHRyaWJ1dGUoXFxcInN0eWxlXFxcIiwgXFxcInBvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgd2lkdGg6XFxcIitiaWRSZXNwb25zZS53aWR0aCtcXFwicHg7IGhlaWdodDpcXFwiK2JpZFJlc3BvbnNlLmhlaWdodCtcXFwicHg7IGJvcmRlcjowOyBvdmVyZmxvdzpoaWRkZW5cXFwiKTtcXHJcXG4gICAgICAgIGJpZElmcmFtZS5zZXRBdHRyaWJ1dGUoXFxcInNhbmRib3hcXFwiLCBcXFwiYWxsb3ctZm9ybXMgYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCBhbGxvdy1wb2ludGVyLWxvY2sgYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb25cXFwiKTtcXHJcXG4gICAgICAgIHdyYXBwZXJXaW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxcJ2ZyaWVuZGx5XzQ1MTk5NzA4XFwnKS5hcHBlbmRDaGlsZChiaWRJZnJhbWUpO1xcclxcbiAgICAgICAgdmFyIGJpZElmcmFtZURvYyA9IChiaWRJZnJhbWUuY29udGVudFdpbmRvdykgPyBiaWRJZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudCA6IChiaWRJZnJhbWUuY29udGVudERvY3VtZW50IHx8IGJpZElmcmFtZS5kb2N1bWVudCk7XFxyXFxuICAgICAgICBiaWRJZnJhbWVEb2Mub3BlbigpO1xcclxcbiAgICAgICAgYmlkSWZyYW1lRG9jLndyaXRlKFxcJzxzY3JcXCcrXFwnaXB0IHNyYz1cXFwiXFwnK3dyYXBwZXJXaW5kb3cuZ2V0V2luVXJsKGJpZFJlc3BvbnNlKStcXCdcXFwiIHR5cGU9XFxcInRleHQvamF2YXNjcmlwdFxcXCI+PC9zY3JcXCcrXFwnaXB0PlxcJyk7XFxyXFxuICAgICAgICBiaWRJZnJhbWVEb2MuY2xvc2UoKTtcXHJcXG4gICAgICB9XFxyXFxuICAgICAgZWxzZSBpZiAoZmFsc2UpIHtcXHJcXG4gICAgICAgIHZhciBmYWxsYmFja0xvYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFwnc2NyaXB0XFwnKTtcXHJcXG4gICAgICAgIGZhbGxiYWNrTG9hZGVyLnR5cGUgPSBcXCd0ZXh0L2phdmFzY3JpcHRcXCc7XFxyXFxuICAgICAgICBmYWxsYmFja0xvYWRlci5hc3luYyA9IHRydWU7XFxyXFxuICAgICAgICBmYWxsYmFja0xvYWRlci5zcmMgPSB3cmFwcGVyV2luZG93LmdldEFqYXhGYWlsVXJsKHdyYXBwZXJXaW5kb3cuZ2V0QmlkQ291bnQod3JhcHBlcldpbmRvdy5hZFVuaXRDb2RlKSk7XFxyXFxuICAgICAgICB2YXIgZmlyc3RTY3JpcHRUYWcgPSB3cmFwcGVyV2luZG93LnBhcmVudC5wYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXFwnc2NyaXB0XFwnKVswXTtcXHJcXG4gICAgICAgIGZpcnN0U2NyaXB0VGFnLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGZhbGxiYWNrTG9hZGVyLCBmaXJzdFNjcmlwdFRhZyk7XFxyXFxuICAgICAgfVxcclxcbiAgICAgIGVsc2Uge1xcclxcbiAgICAgICAgdmFyIGluc1RhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFwnaW5zXFwnKTtcXHJcXG4gICAgICAgIGluc1RhZy5zZXRBdHRyaWJ1dGUoXFxcImlkXFxcIiwgXFxcImZyaWVuZGx5XzQ1MTk5NzA4XFxcIik7XFxyXFxuICAgICAgICB3cmFwcGVyV2luZG93LnBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcXCdmcmllbmRseV80NTE5OTcwOFxcJykuYXBwZW5kQ2hpbGQoaW5zVGFnKTtcXHJcXG4gICAgICAgIHZhciBmYWxsYmFja0xvYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFwnc2NyaXB0XFwnKTtcXHJcXG4gICAgICAgIGZhbGxiYWNrTG9hZGVyLnR5cGUgPSBcXCd0ZXh0L2phdmFzY3JpcHRcXCc7XFxyXFxuICAgICAgICBmYWxsYmFja0xvYWRlci5hc3luYyA9IHRydWU7XFxyXFxuICAgICAgICBmYWxsYmFja0xvYWRlci5zcmMgPSB3cmFwcGVyV2luZG93LmdldEZhaWxVcmwod3JhcHBlcldpbmRvdy5nZXRCaWRDb3VudCh3cmFwcGVyV2luZG93LmFkVW5pdENvZGUpKTtcXHJcXG4gICAgICAgIHZhciBmaXJzdFNjcmlwdFRhZyA9IHdyYXBwZXJXaW5kb3cucGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFxcJ3NjcmlwdFxcJylbMF07XFxyXFxuICAgICAgICBmaXJzdFNjcmlwdFRhZy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmYWxsYmFja0xvYWRlciwgZmlyc3RTY3JpcHRUYWcpO1xcclxcbiAgICAgIH1cXHJcXG4gICAgfVxcclxcbiAgfTtcXHJcXG59KSgpO1xcclxcbjwvc2NyJysnaXB0PjwvZGl2PjwvYm9keT4nKTtcbiAgaWZyYW1lRG9jdW1lbnRfNDUxOTk3MDguY2xvc2UoKTtcbiAgZG9jdW1lbnQuUmVmcmVzaF9QYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCdjb250ZXh0JyBpbiB3aW5kb3cgJiYgJ2hpZGRlbicgaW4gd2luZG93LmNvbnRleHQpIHtcbiAgICAgIHJldHVybiAhd2luZG93LmNvbnRleHQuaGlkZGVuO1xuICAgIH1cbiAgICBpZiAoJ3Zpc2liaWxpdHlTdGF0ZScgaW4gZG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZ2V0SGlkZGVuUHJvcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcHJlZml4ZXMgPSBbJ3dlYmtpdCcsJ21veicsJ21zJywnbyddO1xuICAgICAgICBpZiAoJ2hpZGRlbicgaW4gZG9jdW1lbnQpIHJldHVybiAnaGlkZGVuJztcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgaWYgKChwcmVmaXhlc1tpXSArICdIaWRkZW4nKSBpbiBkb2N1bWVudCkgeyByZXR1cm4gcHJlZml4ZXNbaV0gKyAnSGlkZGVuJzsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcbiAgICAgIHZhciBwcm9wID0gZ2V0SGlkZGVuUHJvcCgpO1xuICAgICAgcmV0dXJuIChwcm9wKSA/ICFkb2N1bWVudFtwcm9wXSA6IHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgUmVmcmVzaF80NTE5OTcwOF9MYXN0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIGRvY3VtZW50LlJlZnJlc2hfVmlld2FibGUgPSAoJ1JlZnJlc2hfVmlld2FibGUnIGluIGRvY3VtZW50KSA/IGRvY3VtZW50LlJlZnJlc2hfVmlld2FibGUgOiBmYWxzZTtcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykge1xuICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZG9jdW1lbnQuUmVmcmVzaF9WaWV3YWJsZSA9IChkb2N1bWVudC5SZWZyZXNoX1BhZ2UoKSAmJiBlbnRyaWVzW2ldLmludGVyc2VjdGlvblJhdGlvID49IDAuNSkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHsgdGhyZXNob2xkOiBbMC41XSB9KTtcbiAgICAgIGlvLm9ic2VydmUoaWZyYW1lXzQ1MTk5NzA4KTtcbiAgICAgIGRvY3VtZW50LlJlZnJlc2hfSU8gPSBpbztcbiAgICB9XG4gIH0pKCk7XG4gIHZhciBSZWZyZXNoXzQ1MTk5NzA4X0ludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIChkb2N1bWVudC5SZWZyZXNoX1ZpZXdhYmxlID09PSB0cnVlKSA/IDM1MDAwIDogMzUwMDA7XG4gIH07XG4gIHZhciBSZWZyZXNoXzQ1MTk5NzA4ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIFJlZnJlc2hfNDUxOTk3MDhfTGFzdCkgPCBSZWZyZXNoXzQ1MTk5NzA4X0ludGVydmFsKCkpIHsgcmV0dXJuOyB9XG4gICAgY2xlYXJJbnRlcnZhbChSZWZyZXNoXzQ1MTk5NzA4X1RpbWVyKTtcbiAgICBSZWZyZXNoXzQ1MTk5NzA4X0xhc3QgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBpZiAoJ1JlZnJlc2hfSU8nIGluIGRvY3VtZW50KSB7IGRvY3VtZW50LlJlZnJlc2hfSU8udW5vYnNlcnZlKGlmcmFtZV80NTE5OTcwOCk7IH1cbiAgICBpZnJhbWVfNDUxOTk3MDguc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOyBzLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICBzLnNyYyA9ICdodHRwczovL3NlcnZpbmcucm9pbWVkaWFjb25zdWx0YW50cy5jb20vc2VydmxldC92aWV3L2Jhbm5lci9qYXZhc2NyaXB0L3pvbmU/emlkPTE4NTAmcGlkPTAmZnI9MzUmZnJjbj0xJmZybG09NzUmZnJpZW5kbHk9ZnJpZW5kbHlfNDUxOTk3MDgmbGFuZ3VhZ2U9eHgmdHhpZD04NzE2NDY4NCZyYW5kb209NzI1NjQxMTkmcmVmZXJyZXI9aHR0cCUzQSUyRiUyRmJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20lMkYnLnJlcGxhY2UoJyZyYW5kb209JywgJyZ2aWV3YWJsZT0nICsgZG9jdW1lbnQuUmVmcmVzaF9WaWV3YWJsZSArICcmcmFuZG9tPScpO1xuICAgIHMub25sb2FkID0gZnVuY3Rpb24oKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlmcmFtZV80NTE5OTcwOC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlmcmFtZV80NTE5OTcwOCk7IGlmcmFtZV80NTE5OTcwOC5zcmMgPSAnYWJvdXQ6YmxhbmsnOyB9LCAxNTAwKTsgfTtcbiAgICBpbnNfNDUxOTk3MDguYXBwZW5kQ2hpbGQocyk7XG59O1xuICB2YXIgUmVmcmVzaF80NTE5OTcwOF9NZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5pbmRleE9mICYmIHR5cGVvZiBldmVudC5kYXRhLmluZGV4T2YgPT09ICdmdW5jdGlvbicgJiYgZXZlbnQuZGF0YSA9PT0gJ1JlZnJlc2hfNDUxOTk3MDgnKSB7IFJlZnJlc2hfNDUxOTk3MDgoKTsgfVxuICB9O1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIFJlZnJlc2hfNDUxOTk3MDhfTWVzc2FnZSwgZmFsc2UpO1xuICB2YXIgUmVmcmVzaF80NTE5OTcwOF9UaW1lciA9IHNldEludGVydmFsKFJlZnJlc2hfNDUxOTk3MDgsIDEwMDApO1xufSBjYXRjaCAoZXJyKSB7fSB9KSgpO1xuIn0sICJoZWFkZXJzU2l6ZSI6IDQ4OCwgImJvZHlTaXplIjogNjMxMiwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogNjgwMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogMzYuMzQsICJjb25uZWN0IjogMTc4LjY4MywgInNzbCI6IDkxLjM0LCAic2VuZCI6IDAsICJ3YWl0IjogOTMuMzYyLCAicmVjZWl2ZSI6IDIuMDR9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICIxMzQuMjA5LjQ2LjE4IiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMiIsICJzdWJqZWN0TmFtZSI6ICJzZXJ2aW5nLnJvaW1lZGlhY29uc3VsdGFudHMuY29tIiwgImlzc3VlciI6ICJHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIiLCAidmFsaWRGcm9tIjogMTY1OTM2NTQ2MCwgInZhbGlkVG8iOiAxNjkzNjY2MjYwfX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTcyWiIsICJ0aW1lIjogLTEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvdHJhdmVyc2UtY29udGFpbmVyLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIlJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL2JsYW5rUGhueC5odG1sIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiAtMSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogLTEsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW10sICJjb250ZW50IjogeyJzaXplIjogLTEsICJtaW1lVHlwZSI6ICJ4LXVua25vd24ifSwgImhlYWRlcnNTaXplIjogLTEsICJib2R5U2l6ZSI6IC0xLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAtMSwgIl9mYWlsdXJlVGV4dCI6ICJuZXQ6OkVSUl9BQk9SVEVEIn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsic2VuZCI6IC0xLCAid2FpdCI6IC0xLCAicmVjZWl2ZSI6IC0xfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSJ9LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjE4M1oiLCAidGltZSI6IDE4ODcuMDYsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2ljLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoOSkuaHRtbCJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTc2LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAiWk9vRGNwLko1WkRDM1dFX2FucnZDTlZUY2o2WXJiM2NiRmJVUmh5YlAuTS0xNjg0OTQyODgyLTAtQVYzay9zVkw3NmU4T2pSd1I3Mzc3NUhYTUFwcU1UUFoyNE1qQXhLUGRhMEYvZXlKR0h5WVl6Y3RaMERMMHZjb3BEUFdxUnE3Z25KREpmKzN3a2p4bURrPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NmU5ZThjMThlNi1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIyIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1WblRpTjE5eXI0RUx2Ym9RbjYxc3ZBbk5wRW5HcFh3enJNZllEVXRXdjFwY1wiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPVpPb0RjcC5KNVpEQzNXRV9hbnJ2Q05WVGNqNllyYjNjYkZiVVJoeWJQLk0tMTY4NDk0Mjg4Mi0wLUFWM2svc1ZMNzZlOE9qUndSNzM3NzVIWE1BcHFNVFBaMjRNakF4S1BkYTBGL2V5SkdIeVlZemN0WjBETDB2Y29wRFBXcVJxN2duSkRKZiszd2tqeG1Eaz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToyMiBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvc2ljLmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVZuVGlOMTl5cjRFTHZib1FuNjFzdkFuTnBFbkdwWHd6ck1mWURVdFd2MXBjIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMzcxNjE1LCAibWltZVR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsICJjb21wcmVzc2lvbiI6IDI1NDkwNywgInRleHQiOiAiLypcbiAzM0Fjcm9zcywgSW5jLiBDb3B5cmlnaHQgMjAxOVxuIFVSTDogaHR0cDovL3d3dy4zM2Fjcm9zcy5jb21cbiBAb3ZlcnZpZXcgZXM2LXByb21pc2UgLSBhIHRpbnkgaW1wbGVtZW50YXRpb24gb2YgUHJvbWlzZXMvQSsuXG4gQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTQgWWVodWRhIEthdHosIFRvbSBEYWxlLCBTdGVmYW4gUGVubmVyIGFuZCBjb250cmlidXRvcnMgKENvbnZlcnNpb24gdG8gRVM2IEFQSSBieSBKYWtlIEFyY2hpYmFsZClcbiBAbGljZW5zZSAgIExpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlXG4gICAgICAgICAgICBTZWUgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0ZWZhbnBlbm5lci9lczYtcHJvbWlzZS9tYXN0ZXIvTElDRU5TRVxuIEB2ZXJzaW9uICAgNC4wLjVcbiovXG4oZnVuY3Rpb24oa2EsT2Epe2Z1bmN0aW9uIHpiKCl7cmV0dXJuKE9hJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgT2EuZ2V0Q29uZmlnP09hOmthLlR5bnQpfHxbXX1mdW5jdGlvbiBBYigpe3ZhciBnPXpiKCkuYWRzO3JldHVybiBnP2cuZ2V0U2xvdCh3aW5kb3cpLnByb2R1Y3Q6XCJpbnZpZXdcIn12YXIgSD17VkVSU0lPTjpcIjMuNi4xXCIsQ3c6XCJjZG4tc2ljLjMzYWNyb3NzLmNvbS8xXCIseHg6XCJzaWMuMzNhY3Jvc3MuY29tXCIseXg6XCJjZG4tc2ljLjMzYWNyb3NzLmNvbS8xL2phdmFzY3JpcHRzL3NpYy5qc1wifSxUYSxzYSxtYjtILnBJPWZ1bmN0aW9uKCl7SC5ySSgpLnNJKCkucUkoKS5xdigpfTtILnJJPWZ1bmN0aW9uKCl7VGE9emIoKS5hZHMmJlwiaW5wYWdlXCI9PT1BYigpP2thOkguWGUoa2EpO3JldHVybiB0aGlzfTtILnpUPWZ1bmN0aW9uKCl7cmV0dXJuIFRhfTtILnNJPWZ1bmN0aW9uKCl7dmFyIGc9QWIoKTtpZihcImludmlld1wiPT09Z3x8XCJpbmZlZWRcIj09PWcpa2E9VGE7XCJfdHludF9qcFwiaW5cbmthfHwoa2EuX3R5bnRfanA9e30pO2thLm9ucG9wc3RhdGU9SC5xdjtyZXR1cm4gdGhpc307SC4kPWZ1bmN0aW9uKCl7cmV0dXJuIGthfTtILkFUPWZ1bmN0aW9uKCl7cmV0dXJuXCJfdHludF9qcFwifTtILnF2PWZ1bmN0aW9uKCl7dmFyIGc9L1xcKy9nLHk9LyhbXiY9XSspPT8oW14mXSopL2csdD1rYS5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpLHY7Zm9yKG1iPXt9O3Y9eS5leGVjKHQpOyltYltkZWNvZGVVUklDb21wb25lbnQodlsxXS5yZXBsYWNlKGcsXCIgXCIpKV09ZGVjb2RlVVJJQ29tcG9uZW50KHZbMl0ucmVwbGFjZShnLFwiIFwiKSk7cmV0dXJuIHRoaXN9O0gub3U9ZnVuY3Rpb24oKXtyZXR1cm4gbWJ9O0gucUk9ZnVuY3Rpb24oKXtzYT1rYS5kb2N1bWVudDtyZXR1cm4gdGhpc307SC5hTD1mdW5jdGlvbigpe3JldHVybiBzYX07SC5pVD1mdW5jdGlvbihnLHkpe3ZhciB0PWthO2thPWc7c2E9Zy5kb2N1bWVudDtnPXkoZyk7a2E9dDtzYT10LmRvY3VtZW50O3JldHVybiBnfTtcbkguWGU9ZnVuY3Rpb24oZyl7dHJ5e2Zvcig7Zy5wYXJlbnQhPT1nJiZnLnBhcmVudC5kb2N1bWVudDspZz1nLnBhcmVudH1jYXRjaCh5KXt9cmV0dXJuIGd9O0gucEkoKTsoZnVuY3Rpb24oKXtmdW5jdGlvbiBnKHksdCx2KXtmdW5jdGlvbiBwKGMsYSl7aWYoIXRbY10pe2lmKCF5W2NdKXt2YXIgYj1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFhJiZiKXJldHVybiBiKGMsITApO2lmKGUpcmV0dXJuIGUoYywhMCk7YT1FcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrYytcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGE7fWE9dFtjXT17amc6e319O3lbY11bMF0uY2FsbChhLmpnLGZ1bmN0aW9uKGQpe3JldHVybiBwKHlbY11bMV1bZF18fGQpfSxhLGEuamcsZyx5LHQsdil9cmV0dXJuIHRbY10uamd9Zm9yKHZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8di5sZW5ndGg7ZisrKXAodltmXSk7cmV0dXJuIHB9XG5yZXR1cm4gZ30pKCkoezE6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI1MCkscD17fTtnPXtDTDpmdW5jdGlvbigpe3JldHVybiBwfSxsYzpmdW5jdGlvbihlKXtyZXR1cm4gcC5oYXNPd25Qcm9wZXJ0eShlKT9wW2VdOm51bGx9LHpPOmZ1bmN0aW9uKGUpeyFBcnJheS5pc0FycmF5KGUpJiZ2LmRlZmF1bHQuTWMoZSkmJihwPWUpfX07dC5kZWZhdWx0PWc7SC5yUD1nfSx7MjUwOjI1MH1dLDI6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsYSl7Yy5fX3Byb3RvX189YX18fGZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGNbYl09YVtiXSl9O3JldHVybiBmdW5jdGlvbihjLGEpe2Z1bmN0aW9uIGIoKXt0aGlzLmNvbnN0cnVjdG9yPVxuY31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcDt5PWcoMjE4KTtnPWcoMTQ4KTt2YXIgZT0ocD17fSxwW3kuZGVmYXVsdC5wYV09ITAscFt5LmRlZmF1bHQuUmFdPSExLHBbeS5kZWZhdWx0LmthXT0hMCxwKTtwPWZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGMoYSxiKXt2YXIgZD1mLmNhbGwodGhpcyl8fHRoaXM7ZC5GaT1iO2QuJEc9ZVthXTtkLkFyPW51bGw7ZC4kcj0hMTtyZXR1cm4gZH12KGMsZik7Yy5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXtpZih0aGlzLiRHKXJldHVybiB0aGlzLkFxKCkuc0UoKSx0aGlzO3RoaXMuckUoKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuQXEoKS5KKCk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLnJFPWZ1bmN0aW9uKCl7dmFyIGE9XG50aGlzO2lmKHRoaXMuJHIpdGhpcy5laigpO2Vsc2UgdGhpcy5GaS5vbmNlKFwicmVuZGVyZWRcIixmdW5jdGlvbigpe2EuJHI9ITA7YS5laigpfSl9O2MucHJvdG90eXBlLkFxPWZ1bmN0aW9uKCl7dGhpcy5GaS5uYShcInZpZXdhYmxlYWRjb250ZW50XCIsdGhpcy5Bcik7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmVqPWZ1bmN0aW9uKCl7dGhpcy5mKFwiaW1wcmVzc2lvblwiKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuc0U9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKHRoaXMuRmkuS2MoKSl0aGlzLmVqKCk7ZWxzZXt2YXIgYj10aGlzLkFyPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZWooKX07dGhpcy5GaS5vbmNlKFwidmlld2FibGVhZGNvbnRlbnRcIixiKX19O3JldHVybiBjfShnLmRlZmF1bHQpO3QuZGVmYXVsdD1ILkpQPXB9LHsxNDg6MTQ4LDIxODoyMTh9XSwzOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PVxuSC52UD17SHg6XCJVTktOT1dOXCIsUWs6XCJCTE9DS0VEXCIsWXc6XCJOT1RfQkxPQ0tFRFwifX0se31dLDQ6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsYSl7Yy5fX3Byb3RvX189YX18fGZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGNbYl09YVtiXSl9O3JldHVybiBmdW5jdGlvbihjLGEpe2Z1bmN0aW9uIGIoKXt0aGlzLmNvbnN0cnVjdG9yPWN9ZihjLGEpO2MucHJvdG90eXBlPW51bGw9PT1hP09iamVjdC5jcmVhdGUoYSk6KGIucHJvdG90eXBlPWEucHJvdG90eXBlLG5ldyBiKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygzKSxlPVtcImRldGVjdGVkXCIsXCJub3RkZXRlY3RlZFwiXTtnPWZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGMoYSl7dmFyIGI9XG5hLmhLLGQ9YS5pSyxoPWEuRDthPWEudGltZW91dDthPXZvaWQgMD09PWE/NTA6YTt2YXIgaz1mLmNhbGwodGhpcyl8fHRoaXM7ay4kYShjLkgoKSk7ay5UaT1iO2suUUE9ZDtrLnY9aDtrLkpBPWE7ay5saj1wLmRlZmF1bHQuSHg7ay5xZT1udWxsO3JldHVybiBrfXYoYyxmKTtjLkg9ZnVuY3Rpb24oKXtyZXR1cm4gZX07Yy5wcm90b3R5cGUuUWE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuUUEubXYodGhpcy52LGZ1bmN0aW9uKCl7YS5JQSgpfSk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLlZyKCk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLklBPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLlpDKCk7dGhpcy52LnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFBKCkuVnIoKX0sdGhpcy5KQSl9O2MucHJvdG90eXBlLlpDPWZ1bmN0aW9uKCl7dGhpcy5xZT10aGlzLlRpLmduKHRoaXMudixcIkRJVlwiLFwiYWQtYmxvY2tcIik7dGhpcy5xZS5pbm5lckhUTUw9XG5cIjxkaXY+QWRCbG9jayBUZXN0PC9kaXY+XCI7dGhpcy5UaS5WKHRoaXMucWUsXCJoZWlnaHRcIixcIjIwcHhcIil9O2MucHJvdG90eXBlLmFBPWZ1bmN0aW9uKCl7dGhpcy5kSCgpP3RoaXMub0UoKTp0aGlzLnRFKCk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmRIPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLlRpLmNrKHRoaXMucWUpfTtjLnByb3RvdHlwZS5Wcj1mdW5jdGlvbigpe3RoaXMucWUmJnRoaXMuVGkucmVtb3ZlKHRoaXMucWUpO3RoaXMucWU9bnVsbH07Yy5wcm90b3R5cGUub0U9ZnVuY3Rpb24oKXt0aGlzLmxqPXAuZGVmYXVsdC5Razt0aGlzLmYoXCJkZXRlY3RlZFwiKX07Yy5wcm90b3R5cGUudEU9ZnVuY3Rpb24oKXt0aGlzLmxqPXAuZGVmYXVsdC5Zdzt0aGlzLmYoXCJub3RkZXRlY3RlZFwiKX07cmV0dXJuIGN9KGcoMTQ4KS5kZWZhdWx0KTt0LmRlZmF1bHQ9SC51UD1nfSx7MTQ4OjE0OCwzOjN9XSw1OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXG5cIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDcpLHA9Zyg4KSxlPWcoNiksZj1nKDkpLGM9ZygxMzEpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe3RoaXMuYT1ifWEucHJvdG90eXBlLml0PWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgdi5kZWZhdWx0KGIse2I6dGhpcy5hLmJ9KX07YS5wcm90b3R5cGUuanQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBwLmRlZmF1bHQoYil9O2EucHJvdG90eXBlLmt0PWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgZi5kZWZhdWx0KGIpfTthLnByb3RvdHlwZS5iSj1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IGMuZGVmYXVsdChiLHtiOnRoaXMuYS5iLHFkOnRoaXMuYS5xZCxtYTp0aGlzLmEubWF9KX07YS5wcm90b3R5cGUuekk9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBlLmRlZmF1bHQoe3NqOnRoaXMuaXQoYiksdmI6dGhpcy5qdChiKSxOZTp0aGlzLmt0KGIpfSl9O3JldHVybiBhfSgpO3QuZGVmYXVsdD1ILndQPWd9LHsxMzE6MTMxLDY6Niw3OjcsXG44OjgsOTo5fV0sNjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odil7dmFyIHA9di52YixlPXYuTmU7dGhpcy5SeD12LnNqO3RoaXMuS2c9cDt0aGlzLlR4PWV9fSgpO3QuZGVmYXVsdD1ILnhQPWd9LHt9XSw3OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUsZil7dGhpcy5KZT1lO3RoaXMuYT1mfXAucHJvdG90eXBlLlBLPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSmUuaW5uZXJIVE1MLnJlcGxhY2UoLzxkaXYgaWQ9WydcIl10eW50LVtePl0rPjxcXC9kaXY+L2csXCJcIikucmVwbGFjZSgvJmFtcDsvZyxcIiZcIil9O3AucHJvdG90eXBlLk5LPWZ1bmN0aW9uKGUpe3ZhciBmPXRoaXMsYz12LmRlZmF1bHQuYWkodGhpcy5KZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4hZi5tcihhKSYmXG4hZS5rbyhhKX0pLm1hcChmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lO3JldHVybiBmLmlFKGEpP2IrXCIqXCI6Yn0pO3JldHVybiB2LmRlZmF1bHQudW5pcXVlKGMpfTtwLnByb3RvdHlwZS5WTD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMueUIodGhpcy5KZS5jaGlsZHJlbikuc29tZShmdW5jdGlvbihmKXtmPWUuYS5iLnRhKGYpO3JldHVybiAxPGYud2lkdGh8fDE8Zi5oZWlnaHR9KX07cC5wcm90b3R5cGUueUI9ZnVuY3Rpb24oZSl7dmFyIGY9dGhpcztyZXR1cm4gdi5kZWZhdWx0LmFpKGUpLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4hZi5tcihjKX0pfTtwLnByb3RvdHlwZS5tcj1mdW5jdGlvbihlKXtyZXR1cm4gZS5pZCYmMDw9ZS5pZC5pbmRleE9mKFwidHludC1cIil9O3AucHJvdG90eXBlLmlFPWZ1bmN0aW9uKGUpe3ZhciBmPXRoaXMuYS5iLGM9Zi50YShlKTtyZXR1cm4gMT49Yy53aWR0aHx8MT49Yy5oZWlnaHR8fGYuUnUoZSl8fGYuaW8oZSl9O3JldHVybiBwfSgpO1xudC5kZWZhdWx0PUgueVA9Z30sezI1MDoyNTB9XSw4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYocCl7dGhpcy5KZT1wfXYucHJvdG90eXBlLm5PPWZ1bmN0aW9uKHApe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGMoKXtyZXR1cm4gZihlKX1lLkplLm9wZW4oKS5udihmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuc2V0VGltZW91dChjLDApfSkud3JpdGUocCkuY2xvc2UoKX0pfTtyZXR1cm4gdn0oKTt0LmRlZmF1bHQ9SC56UD1nfSx7fV0sOTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHApe3RoaXMuSmU9cH12LnByb3RvdHlwZS5rTT1mdW5jdGlvbihwKXt0aGlzLkplLkRIKHtzcmM6cH0pfTtyZXR1cm4gdn0oKTtcbnQuZGVmYXVsdD1ILktQPWd9LHt9XSwxMDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHApe3RoaXMucmE9cC5aYTt0aGlzLmxxPXAuU2I7dGhpcy5LPXAuRzt0aGlzLlRBPXAubUt9di5wcm90b3R5cGUuUWE9ZnVuY3Rpb24ocCl7cmV0dXJuIHRoaXMuVEEuZEoodGhpcy5scSx0aGlzLkspLlFhKHApfTtyZXR1cm4gdn0oKTt0LmRlZmF1bHQ9ZztILkFQPWd9LHt9XSwxMTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTApLHA9ZygxMyksZT1nKDE0KSxmPWcoMTIpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEpe3RoaXMucmE9YS5aYTt0aGlzLkdpPWEudWp9Yy5wcm90b3R5cGUubnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHYuZGVmYXVsdCh7RzpiLFNiOmEsWmE6dGhpcy5yYSxcbnVqOnRoaXMuR2ksbUs6dGhpc30pfTtjLnByb3RvdHlwZS5kSj1mdW5jdGlvbihhLGIpe3ZhciBkLGg9YS5haygpLGs9KGQ9e30sZFtwLmRlZmF1bHQuYmxdPXRoaXMuQ0osZFtwLmRlZmF1bHQuUmNdPXRoaXMuYUosZCk7aWYoa1toXSlyZXR1cm4ga1toXS5jYWxsKHRoaXMse1NiOmEsRzpiLFphOnRoaXMucmEsdWo6dGhpcy5HaX0pO3Rocm93IEVycm9yKFwiSW52YWxpZCBzdHJhdGVneSBuYW1lOiBcIitoKTt9O2MucHJvdG90eXBlLkNKPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgZS5kZWZhdWx0KGEpfTtjLnByb3RvdHlwZS5hSj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGYuZGVmYXVsdChhKX07cmV0dXJuIGN9KCk7dC5kZWZhdWx0PWc7SC5CUD1nfSx7MTA6MTAsMTI6MTIsMTM6MTMsMTQ6MTR9XSwxMjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KCl7fXYucHJvdG90eXBlLlFhPVxuZnVuY3Rpb24oKXtyZXR1cm57Z2V0IEp1KCl7cmV0dXJuITB9LGdldCBJdCgpe3JldHVybltdfSxnZXQgbm8oKXtyZXR1cm5cIlwifX19O3JldHVybiB2fSgpO3QuZGVmYXVsdD1nO0guWlE9Z30se31dLDEzOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz17Ymw6XCJwdWJsaXNoZXJcIixSYzpcImRlbW9cIn07dC5kZWZhdWx0PWc7SC5DUD1nfSx7fV0sMTQ6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGQpe2Zvcih2YXIgaCxrPTEsbD1hcmd1bWVudHMubGVuZ3RoO2s8bDtrKyspe2g9YXJndW1lbnRzW2tdO2Zvcih2YXIgbSBpbiBoKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLG0pJiYoZFttXT1oW21dKX1yZXR1cm4gZH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHAsZT1nKDIzOCk7XG55PWcoMTM5KTt2YXIgZj1nKDI1MCk7Zz1nKDIxOCk7dmFyIGM9KHA9e30scFtnLmRlZmF1bHQua2FdPXtkZXNrdG9wOltcIjc1MHgzMDBcIixcIjcyMHgzMDBcIixcIjU4MHg0MDBcIixcIjU1MHg0ODBcIixcIjY0MHg0ODBcIl0sdGFibGV0OlwiMTAyNHg3NjggNzY4eDEwMjQgNzIweDMwMCA2NDB4OTYwIDU4MHg0MDAgNTUweDQ4MCAzMDB4MjUwXCIuc3BsaXQoXCIgXCIpLG1vYmlsZTpbXCI0ODB4MzIwXCIsXCIzMjB4NDgwXCIsXCIzMDB4MjUwXCJdfSxwKSxhPXkuZGVmYXVsdC5GeCxiPXkuZGVmYXVsdC5WdztwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChoKXt0aGlzLnJhPWguWmE7dGhpcy5scT1oLlNiO3RoaXMuSz1oLkc7dGhpcy5HaT1oLnVqO3RoaXMuaWI9dGhpcy5LYT1udWxsfWQucHJvdG90eXBlLlFhPWZ1bmN0aW9uKGgpe3RoaXMuS2E9aDt0aGlzLlBDKCkuakIoKS5xQigpLm9CKCkuckIoKS5zQigpLmlCKCkubUIoKS5uQigpLnRCKCkucEIoKS5sQigpLmtCKCk7cmV0dXJuIHRoaXMuUnkoKX07ZC5wcm90b3R5cGUuVE09XG5mdW5jdGlvbihoLGssbCl7cmV0dXJuKG5ldyBiKGssbCkpLnNPKGgpfTtkLnByb3RvdHlwZS5QQz1mdW5jdGlvbigpe3ZhciBoPXRoaXMueGUoZS5kZWZhdWx0Lk9rKSxrPXRoaXMueGUoZS5kZWZhdWx0LlZwLHskSjpjfSksbD10aGlzLk5DKCksbT10aGlzLks7dGhpcy5pYj10aGlzLlRNKGssaCxsKTttLkloKCkmJnRoaXMuaWIueU8oW2YuZGVmYXVsdC5QYyhtLlMoKSldKTtyZXR1cm4gdGhpc307ZC5wcm90b3R5cGUuTkM9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnJhLGs9dGhpcy5HaSxsPXRoaXMuSyxtPWwuUygpO2g9ay5WSShoLHtzaXplOm19LGwpO2s9ay5ySihsKTtyZXR1cm57dEk6aCxEdTprfX07ZC5wcm90b3R5cGUuakI9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLnhlKGUuZGVmYXVsdC5KZyk7dGhpcy5pYi5tYXRjaChhLnlwLHthbzpoLmFvfSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLnFCPWZ1bmN0aW9uKCl7dGhpcy5pYi5tYXRjaChhLlJwLHtqbzp0aGlzLnhlKGUuZGVmYXVsdC5KZykuam99KTtcbnJldHVybiB0aGlzfTtkLnByb3RvdHlwZS5vQj1mdW5jdGlvbigpe3RoaXMuaWIubWF0Y2goYS5DcCx7Y286dGhpcy54ZShlLmRlZmF1bHQuSmcpLmNvLE86dGhpcy5LYS5PLEc6dGhpcy5LfSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLnJCPWZ1bmN0aW9uKCl7dGhpcy5pYi5tYXRjaChhLmVxLHtHOnRoaXMuS30pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5zQj1mdW5jdGlvbigpe3RoaXMuaWIubWF0Y2goYS5VUkwse3VybDp0aGlzLkthLnVybH0pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5pQj1mdW5jdGlvbigpe3RoaXMuaWIubWF0Y2goYS52cCx7RWo6dGhpcy5LYS5Fan0pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5tQj1mdW5jdGlvbigpe3RoaXMuaWIubWF0Y2goYS5qcSx7YmU6dGhpcy5LYS5iZX0pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5uQj1mdW5jdGlvbigpe3RoaXMuaWIubWF0Y2goYS5CcCx7bG46dGhpcy5LYS5sbn0pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS50Qj1cbmZ1bmN0aW9uKCl7dGhpcy5pYi5tYXRjaChhLlZJRVdQT1JULHtRYzp0aGlzLkthLlFjfSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLmxCPWZ1bmN0aW9uKCl7dGhpcy5pYi5tYXRjaChhLnpwLHt9KTtyZXR1cm4gdGhpc307ZC5wcm90b3R5cGUua0I9ZnVuY3Rpb24oKXt0aGlzLmliLm1hdGNoKGEuSnAse30pfTtkLnByb3RvdHlwZS5wQj1mdW5jdGlvbigpe3RoaXMuaWIubWF0Y2goYS5PcCx7fSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLnhlPWZ1bmN0aW9uKGgsayl7dm9pZCAwPT09ayYmKGs9e30pO3ZhciBsPXRoaXMuSyxtPWwuUygpO3JldHVybiB0aGlzLnJhLk1hKGgsdih7ZmlsdGVyczp7c2l6ZTptfSxHOmx9LGspKX07ZC5wcm90b3R5cGUuUnk9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmliLGs9aC53TCgpO3JldHVybntnZXQgSnUoKXtyZXR1cm4gMDxrLmxlbmd0aH0sZ2V0IEl0KCl7cmV0dXJuIGsuc2xpY2UoKX0sZ2V0IG5vKCl7cmV0dXJuIGgudG9TdHJpbmcoKX19fTtcbnJldHVybiBkfSgpO3QuZGVmYXVsdD1wO0gublM9cH0sezEzOToxMzksMjE4OjIxOCwyMzg6MjM4LDI1MDoyNTB9XSwxNTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygxNyk7Zz1nKDE2KTt0LmRlZmF1bHQ9SC5IUD17U2E6eS5kZWZhdWx0LEl3OmcuZGVmYXVsdH19LHsxNjoxNiwxNzoxN31dLDE2OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxNykscD1nKDI1MCk7dC5kZWZhdWx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31lLmdJPWZ1bmN0aW9uKGYpe3JldHVybltwLmRlZmF1bHQuUChcImFkc291cmNlXCIpLHRoaXMuSnkoZiksdi5kZWZhdWx0LlVrXS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGN9KVswXX07ZS5KeT1mdW5jdGlvbihmKXtyZXR1cm4gdGhpcy5tRChmKT92LmRlZmF1bHQuU3c6dGhpcy5sRChmKT9cbnYuZGVmYXVsdC5McDpudWxsfTtlLmxEPWZ1bmN0aW9uKGYpe3JldHVybiBudWxsPT09Zi5VZX07ZS5tRD1mdW5jdGlvbihmKXtyZXR1cm4hIShmLmNwfHxbXSkubGVuZ3RofTtyZXR1cm4gZX0oKX0sezE3OjE3LDI1MDoyNTB9XSwxNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD17THA6XCJhZHhcIixTdzpcImViZGFcIix1ZjpcImFwbnhcIixzZjpcImFvbFwiLHlmOlwib3hcIixVazpcImRpcmVjdFwiLEFmOlwidHR4XCIscmY6XCJhbXpuXCJ9fSx7fV0sMTg6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsYSl7Yy5fX3Byb3RvX189YX18fGZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGNbYl09YVtiXSl9O3JldHVybiBmdW5jdGlvbihjLFxuYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKSxwPXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZil7Zm9yKHZhciBjLGE9MSxiPWFyZ3VtZW50cy5sZW5ndGg7YTxiO2ErKyl7Yz1hcmd1bWVudHNbYV07Zm9yKHZhciBkIGluIGMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkmJihmW2RdPWNbZF0pfXJldHVybiBmfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTMxKTt2YXIgZT1nKDI1MCk7Zz1mdW5jdGlvbihmKXtmdW5jdGlvbiBjKCl7cmV0dXJuIG51bGwhPT1mJiZmLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc312KGMsZik7Yy5wcm90b3R5cGUuT2M9ZnVuY3Rpb24oYSl7dmFyIGI9YS53aWR0aDthPWEuaGVpZ2h0O3RoaXMueEYoKTtcbnRoaXMuYS5iLm9hKHRoaXMuT2Yse3dpZHRoOmIrXCJweFwiLGhlaWdodDphK1wicHhcIn0pO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5vTz1mdW5jdGlvbihhKXt0aGlzLk9mLnNldEF0dHJpYnV0ZShcImlkXCIsYSl9O2MucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLmEuYi5yZW1vdmUodGhpcy5PZik7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmpuPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuQmIoKSxkPWIuY3JlYXRlRWxlbWVudChcImRpdlwiKTtkLnNldEF0dHJpYnV0ZShcImlkXCIsYSk7dGhpcy5hLmIucHJlcGVuZChiLmJvZHksZCk7cmV0dXJuIGR9O2MucHJvdG90eXBlLnRkPWZ1bmN0aW9uKGEpe3RoaXMuYS5tYS50ZChwKHtEOnRoaXMueWUoKX0sYSkpO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5Haz1mdW5jdGlvbihhLGIpe3RoaXMueWUoKVthXT1iO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5TTj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuQmIoKTthLm9wZW4oKTthLmNsb3NlKCl9O1xuYy5wcm90b3R5cGUuZ2V0RWxlbWVudEJ5SWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuQmIoKS5nZXRFbGVtZW50QnlJZChhKX07Yy5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5CYigpLnF1ZXJ5U2VsZWN0b3IoYSl9O2MucHJvdG90eXBlLnhuPWZ1bmN0aW9uKGEpe3JldHVybiBlLmRlZmF1bHQueG4oYSx0aGlzLkJiKCkpfTtjLnByb3RvdHlwZS54Rj1mdW5jdGlvbigpe3RoaXMuYS5iLm9hKHRoaXMuQmIoKS5ib2R5LHttYXJnaW46XCIwXCIscGFkZGluZzpcIjBcIn0pfTtyZXR1cm4gY30oeS5kZWZhdWx0KTt0LmRlZmF1bHQ9SC5JUD1nfSx7MTMxOjEzMSwyNTA6MjUwfV0sMTk6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMjMpO3ZhciB2PWcoMzApLHA9ZygzNCksZT1nKDMxKSxmPWcoMjYpLGM9ZygyNyksYT1nKDI4KSxiPWcoMzYpLGQ9ZygyMiksaD1nKDIxKSxrPVxuZygzMyksbD1nKDMyKTtnPWcoMjkpO2c9e1NhOmIuZGVmYXVsdCxpaTp7d2Y6eS5kZWZhdWx0LHRpOnYuZGVmYXVsdCxGcDpkLmRlZmF1bHQseXc6aC5kZWZhdWx0fSxUazp7d2Y6ay5kZWZhdWx0LHRpOnAuZGVmYXVsdCxGcDpsLmRlZmF1bHR9LGdxOnt3ZjpnLmRlZmF1bHQsdGk6ZS5kZWZhdWx0fSx4Ujp7RFI6Zi5kZWZhdWx0LEhSOmMuZGVmYXVsdCx6UzphLmRlZmF1bHR9fTtILk1QPWc7dC5kZWZhdWx0PWd9LHsyMToyMSwyMjoyMiwyMzoyMywyNjoyNiwyNzoyNywyODoyOCwyOToyOSwzMDozMCwzMTozMSwzMjozMiwzMzozMywzNDozNCwzNjozNn1dLDIwOltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihmLGMpe2YuX19wcm90b19fPWN9fHxmdW5jdGlvbihmLGMpe2Zvcih2YXIgYSBpbiBjKWMuaGFzT3duUHJvcGVydHkoYSkmJlxuKGZbYV09Y1thXSl9O3JldHVybiBmdW5jdGlvbihmLGMpe2Z1bmN0aW9uIGEoKXt0aGlzLmNvbnN0cnVjdG9yPWZ9ZShmLGMpO2YucHJvdG90eXBlPW51bGw9PT1jP09iamVjdC5jcmVhdGUoYyk6KGEucHJvdG90eXBlPWMucHJvdG90eXBlLG5ldyBhKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9XCJhZHJlc3BvbnNlIG5vZmlsbHJlc3BvbnNlIGVycm9yIHRhcmdldGluZ3VwZGF0ZSBkaWFnbm9zdGljcyBiZW5jaG1hcmtzXCIuc3BsaXQoXCIgXCIpO2c9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gZihjLGEpe3ZhciBiPWUuY2FsbCh0aGlzKXx8dGhpcztiLiRhKHApO2IuTT1bXTtiLnM9YztiLmE9YTtiLll4PWMuWGE7Yi5Zcj1jLk47cmV0dXJuIGJ9dihmLGUpO2YuSD1mdW5jdGlvbigpe3JldHVybiBwfTtmLnByb3RvdHlwZS5rTz1mdW5jdGlvbihjKXt0aGlzLk09Y307Zi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuSigpO3JldHVybiB0aGlzfTtcbmYucHJvdG90eXBlLmRqPWZ1bmN0aW9uKGMpe2M9dGhpcy5ZeC5rSihjKTt0aGlzLmYoXCJhZHJlc3BvbnNlXCIsYyl9O2YucHJvdG90eXBlLkJlPWZ1bmN0aW9uKCl7dGhpcy5mKFwibm9maWxscmVzcG9uc2VcIik7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLmhhPWZ1bmN0aW9uKGMpe3RoaXMuZihcImVycm9yXCIsYyk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLmJoPWZ1bmN0aW9uKGMpe3Rocm93IEVycm9yKFwiQWRQcm92aWRlckFkYXB0ZXI6IFwiK2MrXCIoKSBub3QgaW1wbGVtZW50ZWRcIik7fTtmLnByb3RvdHlwZS5YRj1mdW5jdGlvbihjKXt0aGlzLllyPWN9O3JldHVybiBmfShnKDE0OCkuZGVmYXVsdCk7dC5kZWZhdWx0PWd9LHsxNDg6MTQ4fV0sMjE6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGgsayl7aC5fX3Byb3RvX189XG5rfXx8ZnVuY3Rpb24oaCxrKXtmb3IodmFyIGwgaW4gaylrLmhhc093blByb3BlcnR5KGwpJiYoaFtsXT1rW2xdKX07cmV0dXJuIGZ1bmN0aW9uKGgsayl7ZnVuY3Rpb24gbCgpe3RoaXMuY29uc3RydWN0b3I9aH1kKGgsayk7aC5wcm90b3R5cGU9bnVsbD09PWs/T2JqZWN0LmNyZWF0ZShrKToobC5wcm90b3R5cGU9ay5wcm90b3R5cGUsbmV3IGwpfX0oKSxwPXRoaXMmJnRoaXMud2F8fGZ1bmN0aW9uKGQsaCxrLGwpe3JldHVybiBuZXcgKGt8fChrPVByb21pc2UpKShmdW5jdGlvbihtLG4pe2Z1bmN0aW9uIHIodyl7dHJ5e3UobC5uZXh0KHcpKX1jYXRjaCh4KXtuKHgpfX1mdW5jdGlvbiBxKHcpe3RyeXt1KGxbXCJ0aHJvd1wiXSh3KSl9Y2F0Y2goeCl7bih4KX19ZnVuY3Rpb24gdSh3KXt3LmRvbmU/bSh3LnZhbHVlKToobmV3IGsoZnVuY3Rpb24oeCl7eCh3LnZhbHVlKX0pKS50aGVuKHIscSl9dSgobD1sLmFwcGx5KGQsaHx8W10pKS5uZXh0KCkpfSl9LGU9dGhpcyYmdGhpcy54YXx8ZnVuY3Rpb24oZCxcbmgpe2Z1bmN0aW9uIGsodyl7cmV0dXJuIGZ1bmN0aW9uKHgpe3JldHVybiBsKFt3LHhdKX19ZnVuY3Rpb24gbCh3KXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7bTspdHJ5e2lmKG49MSxyJiYocT13WzBdJjI/cltcInJldHVyblwiXTp3WzBdP3JbXCJ0aHJvd1wiXXx8KChxPXJbXCJyZXR1cm5cIl0pJiZxLmNhbGwociksMCk6ci5uZXh0KSYmIShxPXEuY2FsbChyLHdbMV0pKS5kb25lKXJldHVybiBxO2lmKHI9MCxxKXc9W3dbMF0mMixxLnZhbHVlXTtzd2l0Y2god1swXSl7Y2FzZSAwOmNhc2UgMTpxPXc7YnJlYWs7Y2FzZSA0OnJldHVybiBtLmxhYmVsKysse3ZhbHVlOndbMV0sZG9uZTohMX07Y2FzZSA1Om0ubGFiZWwrKztyPXdbMV07dz1bMF07Y29udGludWU7Y2FzZSA3Onc9bS5sLnBvcCgpO20uaS5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocT1tLmkscT0wPHEubGVuZ3RoJiZxW3EubGVuZ3RoLTFdKSYmKDY9PT1cbndbMF18fDI9PT13WzBdKSl7bT0wO2NvbnRpbnVlfWlmKDM9PT13WzBdJiYoIXF8fHdbMV0+cVswXSYmd1sxXTxxWzNdKSltLmxhYmVsPXdbMV07ZWxzZSBpZig2PT09d1swXSYmbS5sYWJlbDxxWzFdKW0ubGFiZWw9cVsxXSxxPXc7ZWxzZSBpZihxJiZtLmxhYmVsPHFbMl0pbS5sYWJlbD1xWzJdLG0ubC5wdXNoKHcpO2Vsc2V7cVsyXSYmbS5sLnBvcCgpO20uaS5wb3AoKTtjb250aW51ZX19dz1oLmNhbGwoZCxtKX1jYXRjaCh4KXt3PVs2LHhdLHI9MH1maW5hbGx5e249cT0wfWlmKHdbMF0mNSl0aHJvdyB3WzFdO3JldHVybnt2YWx1ZTp3WzBdP3dbMV06dm9pZCAwLGRvbmU6ITB9fXZhciBtPXtsYWJlbDowLG06ZnVuY3Rpb24oKXtpZihxWzBdJjEpdGhyb3cgcVsxXTtyZXR1cm4gcVsxXX0saTpbXSxsOltdfSxuLHIscSx1O3JldHVybiB1PXtuZXh0OmsoMCksXCJ0aHJvd1wiOmsoMSksXCJyZXR1cm5cIjprKDIpfSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiYodVtTeW1ib2wuaXRlcmF0b3JdPVxuZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygxNSk7dmFyIGY9ZygzNiksYz1nKDIwKSxhPWcoMTMpLGI9eS5kZWZhdWx0LlNhO2c9ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gaChrLGwpe2w9ZC5jYWxsKHRoaXMsayxsKXx8dGhpcztsLnlhPWsuY29udGVudDtsLm5xPWsuc2l6ZTtsLkxnPWsuUGU7cmV0dXJuIGx9dihoLGQpO2gucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LmdwfTtoLnByb3RvdHlwZS5haz1mdW5jdGlvbigpe3JldHVybiBhLmRlZmF1bHQuUmN9O2gucHJvdG90eXBlLlBhPWZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGs7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihsKXtzd2l0Y2gobC5sYWJlbCl7Y2FzZSAwOnJldHVybiBsLmkucHVzaChbMCwyLCwzXSksWzQsdGhpcy5aZygpXTtjYXNlIDE6cmV0dXJuIGwubSgpLFxudGhpcy5kaih7c2l6ZTp0aGlzLm5xLFRoOmYuZGVmYXVsdC5ncCxleGNoYW5nZTpiLlVrfSksWzMsM107Y2FzZSAyOnJldHVybiBrPWwubSgpLHRoaXMuaGEoe2Vycm9yTWVzc2FnZTprLm1lc3NhZ2V9KSxbMywzXTtjYXNlIDM6cmV0dXJuWzIsdGhpc119fSl9KX07aC5wcm90b3R5cGUuWmc9ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGspe3N3aXRjaChrLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5MZy5Xbih0aGlzLkIoKSx0aGlzLm5xLHRoaXMueWEpXTtjYXNlIDE6cmV0dXJuIGsubSgpLFsyLHRoaXNdfX0pfSl9O3JldHVybiBofShjLmRlZmF1bHQpO3QuZGVmYXVsdD1nfSx7MTM6MTMsMTU6MTUsMjA6MjAsMzY6MzZ9XSwyMjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgaD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZlxuQXJyYXkmJmZ1bmN0aW9uKGssbCl7ay5fX3Byb3RvX189bH18fGZ1bmN0aW9uKGssbCl7Zm9yKHZhciBtIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShtKSYmKGtbbV09bFttXSl9O3JldHVybiBmdW5jdGlvbihrLGwpe2Z1bmN0aW9uIG0oKXt0aGlzLmNvbnN0cnVjdG9yPWt9aChrLGwpO2sucHJvdG90eXBlPW51bGw9PT1sP09iamVjdC5jcmVhdGUobCk6KG0ucHJvdG90eXBlPWwucHJvdG90eXBlLG5ldyBtKX19KCkscD10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihoLGssbCxtKXtyZXR1cm4gbmV3IChsfHwobD1Qcm9taXNlKSkoZnVuY3Rpb24obixyKXtmdW5jdGlvbiBxKHgpe3RyeXt3KG0ubmV4dCh4KSl9Y2F0Y2goQyl7cihDKX19ZnVuY3Rpb24gdSh4KXt0cnl7dyhtW1widGhyb3dcIl0oeCkpfWNhdGNoKEMpe3IoQyl9fWZ1bmN0aW9uIHcoeCl7eC5kb25lP24oeC52YWx1ZSk6KG5ldyBsKGZ1bmN0aW9uKEMpe0MoeC52YWx1ZSl9KSkudGhlbihxLHUpfXcoKG09bS5hcHBseShoLGt8fFtdKSkubmV4dCgpKX0pfSxcbmU9dGhpcyYmdGhpcy54YXx8ZnVuY3Rpb24oaCxrKXtmdW5jdGlvbiBsKHgpe3JldHVybiBmdW5jdGlvbihDKXtyZXR1cm4gbShbeCxDXSl9fWZ1bmN0aW9uIG0oeCl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO247KXRyeXtpZihyPTEscSYmKHU9eFswXSYyP3FbXCJyZXR1cm5cIl06eFswXT9xW1widGhyb3dcIl18fCgodT1xW1wicmV0dXJuXCJdKSYmdS5jYWxsKHEpLDApOnEubmV4dCkmJiEodT11LmNhbGwocSx4WzFdKSkuZG9uZSlyZXR1cm4gdTtpZihxPTAsdSl4PVt4WzBdJjIsdS52YWx1ZV07c3dpdGNoKHhbMF0pe2Nhc2UgMDpjYXNlIDE6dT14O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbi5sYWJlbCsrLHt2YWx1ZTp4WzFdLGRvbmU6ITF9O2Nhc2UgNTpuLmxhYmVsKys7cT14WzFdO3g9WzBdO2NvbnRpbnVlO2Nhc2UgNzp4PW4ubC5wb3AoKTtuLmkucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHU9bi5pLHU9MDx1Lmxlbmd0aCYmXG51W3UubGVuZ3RoLTFdKSYmKDY9PT14WzBdfHwyPT09eFswXSkpe249MDtjb250aW51ZX1pZigzPT09eFswXSYmKCF1fHx4WzFdPnVbMF0mJnhbMV08dVszXSkpbi5sYWJlbD14WzFdO2Vsc2UgaWYoNj09PXhbMF0mJm4ubGFiZWw8dVsxXSluLmxhYmVsPXVbMV0sdT14O2Vsc2UgaWYodSYmbi5sYWJlbDx1WzJdKW4ubGFiZWw9dVsyXSxuLmwucHVzaCh4KTtlbHNle3VbMl0mJm4ubC5wb3AoKTtuLmkucG9wKCk7Y29udGludWV9fXg9ay5jYWxsKGgsbil9Y2F0Y2goQyl7eD1bNixDXSxxPTB9ZmluYWxseXtyPXU9MH1pZih4WzBdJjUpdGhyb3cgeFsxXTtyZXR1cm57dmFsdWU6eFswXT94WzFdOnZvaWQgMCxkb25lOiEwfX12YXIgbj17bGFiZWw6MCxtOmZ1bmN0aW9uKCl7aWYodVswXSYxKXRocm93IHVbMV07cmV0dXJuIHVbMV19LGk6W10sbDpbXX0scixxLHUsdztyZXR1cm4gdz17bmV4dDpsKDApLFwidGhyb3dcIjpsKDEpLFwicmV0dXJuXCI6bCgyKX0sXCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmXG4od1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx3fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTUpO3ZhciBmPWcoMzYpLGM9ZygyMCksYT1nKDEzKSxiPWcoMjUwKSxkPXkuZGVmYXVsdC5TYTtnPWZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGsobCxtKXttPWguY2FsbCh0aGlzLGwsbSl8fHRoaXM7bS56QT1sLlVlO20uTHk9bC5RSDttLkxnPWwuUGU7bS52PWwuRDtyZXR1cm4gbX12KGssaCk7ay5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQuUmN9O2sucHJvdG90eXBlLmFrPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdC5SY307ay5wcm90b3R5cGUuUGE9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLG09dGhpcy56QTt0aGlzLmEubWEudGQoe3VybDp0aGlzLkx5K1wiL2RlbW9BZFNlcnZlXCIsdnY6e2RlbW9DcmVhdGl2ZUlkOm19LGZ0OmIuZGVmYXVsdC5tayhmdW5jdGlvbihuKXt2YXIgcj1cbmwuYWgobixtKTtyZXR1cm4gbC5VRShyLG4udGFnKX0pLEQ6dGhpcy52fSk7cmV0dXJuIHRoaXN9O2sucHJvdG90eXBlLlVFPWZ1bmN0aW9uKGwsbSl7cmV0dXJuIHAodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG47cmV0dXJuIGUodGhpcyxmdW5jdGlvbihyKXtzd2l0Y2goci5sYWJlbCl7Y2FzZSAwOnJldHVybiByLmkucHVzaChbMCwyLCwzXSksWzQsdGhpcy5aZyhsLnNpemUsbSldO2Nhc2UgMTpyZXR1cm4gci5tKCksdGhpcy5kaihsKSxbMywzXTtjYXNlIDI6cmV0dXJuIG49ci5tKCksdGhpcy5oYSh7ZXJyb3JNZXNzYWdlOm4ubWVzc2FnZX0pLFszLDNdO2Nhc2UgMzpyZXR1cm5bMix0aGlzXX19KX0pfTtrLnByb3RvdHlwZS5aZz1mdW5jdGlvbihsLG0pe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLkxnLlduKHRoaXMuQigpLFxubCxtKV07Y2FzZSAxOnJldHVybiBuLm0oKSxbMix0aGlzXX19KX0pfTtrLnByb3RvdHlwZS5haD1mdW5jdGlvbihsLG0pe3JldHVybntzaXplOmIuZGVmYXVsdC5yYyhsLnNpemUpLFRoOmYuZGVmYXVsdC5SYyxleGNoYW5nZTpkLlVrLFVlOm19fTtyZXR1cm4ga30oYy5kZWZhdWx0KTt0LmRlZmF1bHQ9Z30sezEzOjEzLDE1OjE1LDIwOjIwLDI1MDoyNTAsMzY6MzZ9XSwyMzpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYocil7bnVsbCE9PXImJnIuaigpfXZhciBwPXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgcj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocSx1KXtxLl9fcHJvdG9fXz11fXx8ZnVuY3Rpb24ocSx1KXtmb3IodmFyIHcgaW4gdSl1Lmhhc093blByb3BlcnR5KHcpJiYocVt3XT11W3ddKX07cmV0dXJuIGZ1bmN0aW9uKHEsdSl7ZnVuY3Rpb24gdygpe3RoaXMuY29uc3RydWN0b3I9cX1yKHEsXG51KTtxLnByb3RvdHlwZT1udWxsPT09dT9PYmplY3QuY3JlYXRlKHUpOih3LnByb3RvdHlwZT11LnByb3RvdHlwZSxuZXcgdyl9fSgpLGU9dGhpcyYmdGhpcy53YXx8ZnVuY3Rpb24ocixxLHUsdyl7cmV0dXJuIG5ldyAodXx8KHU9UHJvbWlzZSkpKGZ1bmN0aW9uKHgsQyl7ZnVuY3Rpb24gRChGKXt0cnl7Syh3Lm5leHQoRikpfWNhdGNoKEwpe0MoTCl9fWZ1bmN0aW9uIEIoRil7dHJ5e0sod1tcInRocm93XCJdKEYpKX1jYXRjaChMKXtDKEwpfX1mdW5jdGlvbiBLKEYpe0YuZG9uZT94KEYudmFsdWUpOihuZXcgdShmdW5jdGlvbihMKXtMKEYudmFsdWUpfSkpLnRoZW4oRCxCKX1LKCh3PXcuYXBwbHkocixxfHxbXSkpLm5leHQoKSl9KX0sZj10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihyLHEpe2Z1bmN0aW9uIHUoRil7cmV0dXJuIGZ1bmN0aW9uKEwpe3JldHVybiB3KFtGLExdKX19ZnVuY3Rpb24gdyhGKXtpZihDKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuZm9yKDt4Oyl0cnl7aWYoQz0xLEQmJihCPUZbMF0mMj9EW1wicmV0dXJuXCJdOkZbMF0/RFtcInRocm93XCJdfHwoKEI9RFtcInJldHVyblwiXSkmJkIuY2FsbChEKSwwKTpELm5leHQpJiYhKEI9Qi5jYWxsKEQsRlsxXSkpLmRvbmUpcmV0dXJuIEI7aWYoRD0wLEIpRj1bRlswXSYyLEIudmFsdWVdO3N3aXRjaChGWzBdKXtjYXNlIDA6Y2FzZSAxOkI9RjticmVhaztjYXNlIDQ6cmV0dXJuIHgubGFiZWwrKyx7dmFsdWU6RlsxXSxkb25lOiExfTtjYXNlIDU6eC5sYWJlbCsrO0Q9RlsxXTtGPVswXTtjb250aW51ZTtjYXNlIDc6Rj14LmwucG9wKCk7eC5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShCPXguaSxCPTA8Qi5sZW5ndGgmJkJbQi5sZW5ndGgtMV0pJiYoNj09PUZbMF18fDI9PT1GWzBdKSl7eD0wO2NvbnRpbnVlfWlmKDM9PT1GWzBdJiYoIUJ8fEZbMV0+QlswXSYmRlsxXTxCWzNdKSl4LmxhYmVsPUZbMV07ZWxzZSBpZig2PT09RlswXSYmeC5sYWJlbDxCWzFdKXgubGFiZWw9QlsxXSxcbkI9RjtlbHNlIGlmKEImJngubGFiZWw8QlsyXSl4LmxhYmVsPUJbMl0seC5sLnB1c2goRik7ZWxzZXtCWzJdJiZ4LmwucG9wKCk7eC5pLnBvcCgpO2NvbnRpbnVlfX1GPXEuY2FsbChyLHgpfWNhdGNoKEwpe0Y9WzYsTF0sRD0wfWZpbmFsbHl7Qz1CPTB9aWYoRlswXSY1KXRocm93IEZbMV07cmV0dXJue3ZhbHVlOkZbMF0/RlsxXTp2b2lkIDAsZG9uZTohMH19dmFyIHg9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKEJbMF0mMSl0aHJvdyBCWzFdO3JldHVybiBCWzFdfSxpOltdLGw6W119LEMsRCxCLEs7cmV0dXJuIEs9e25leHQ6dSgwKSxcInRocm93XCI6dSgxKSxcInJldHVyblwiOnUoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihLW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygxNSk7dmFyIGM9ZygzNiksYT1nKDIwKSxiPWcoMTMpLGQ9ZygyNTApLFxuaD15LmRlZmF1bHQuSXcsaz1udWxsLGw9bnVsbCxtPW51bGwsbj0wO2c9ZnVuY3Rpb24ocil7ZnVuY3Rpb24gcSh1LHcpe3c9ci5jYWxsKHRoaXMsdSx3KXx8dGhpczt3LkhlPXUuamY7dy5ybT11Lm1mO3cuZGM9bnVsbDt3LnVjPW51bGw7dy5JbD17fTtyZXR1cm4gd31wKHEscik7cS51dj1mdW5jdGlvbih1LHcpe3ZhciB4PXZvaWQgMD09PXU/e306dTt1PXgucWc7dmFyIEM9eC5kZSxEPXguQWcsQj14Lk47eD14LmFhO3ZhciBLPXZvaWQgMD09PXc/e306dzt3PUsueGs7dmFyIEY9Sy5iO0s9Sy5kYTtpZihtKXJldHVybiBtO2s9e2NtZDpbXX07bD11Lm9KKHtkZTpDLEFnOkQseGs6dyxOOkJ9LHtiOkYsZGE6S30pO3JldHVybiBtPXUudEooe1BuOmssS0w6bCxxZzp1LGFhOnh9KS5sb2FkKCl9O3EuRk89ZnVuY3Rpb24oKXtsLk52KCl9O3EuYU09ZnVuY3Rpb24oKXtsLlpMKCl9O3Euaj1mdW5jdGlvbigpe3YobSk7dihsKTttPWw9az1udWxsO249MH07cS5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHQuSmJ9O1xucS5wcm90b3R5cGUuYWs9ZnVuY3Rpb24oKXtyZXR1cm4gYi5kZWZhdWx0LmJsfTtxLnByb3RvdHlwZS5QYT1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBmKHRoaXMsZnVuY3Rpb24odSl7c3dpdGNoKHUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5RQygpLFs0LHRoaXMuQnMoKV07Y2FzZSAxOnJldHVybiB1Lm0oKSx0aGlzLnVjLlBhKCksWzIsdGhpc119fSl9KX07cS5wcm90b3R5cGUucGM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLGZ1bmN0aW9uKHUpe3N3aXRjaCh1LmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuSWw9e30sdGhpcy5kYy5qKCksdGhpcy51Yy50Yi5jbGVhcigpLHRoaXMuUUcoKSxbNCx0aGlzLkJzKCldO2Nhc2UgMTpyZXR1cm4gdS5tKCksdGhpcy51Yy5yZWZyZXNoKCksWzIsdGhpc119fSl9KX07cS5wcm90b3R5cGUuTk09ZnVuY3Rpb24odSxcbncpe3ZhciB4PXUueWMsQz11LkFjO3RoaXMuSWw9e3NpemU6ZC5kZWZhdWx0LnJjKHUuc2l6ZSksZXhjaGFuZ2U6Q307dy53cml0ZSh4KX07cS5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3YodGhpcy51Yyk7dih0aGlzLmRjKTt0aGlzLkooKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuUUM9ZnVuY3Rpb24oKXt0aGlzLnVjPXEudXYodGhpcy5zLHRoaXMuYSkuVkoodGhpcy5IZSx0aGlzLk0pO3RoaXMuUkMoKX07cS5wcm90b3R5cGUuUkM9ZnVuY3Rpb24oKXt2YXIgdT10aGlzO3RoaXMudWMudShcInJlcXVlc3RzdGFydFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHUuUGwoKX0pLnUoXCJyZW5kZXJcIixmdW5jdGlvbigpe2Zvcih2YXIgdz1bXSx4PTA7eDxhcmd1bWVudHMubGVuZ3RoO3grKyl3W3hdPWFyZ3VtZW50c1t4XTtyZXR1cm4gdS5YRS5hcHBseSh1LHcpfSkuTmEoXCJ0YXJnZXRpbmd1cGRhdGVcIix0aGlzKTt0aGlzLk9DKCl9O3EucHJvdG90eXBlLk9DPWZ1bmN0aW9uKCl7dmFyIHU9dGhpcztcbnRoaXMudWMudShcInJlcXVlc3RzdGFydFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHUua2ooXCJwdWJBZHNcIisgKytuKX0pLnUoXCJyZXNwb25zZVwiLGZ1bmN0aW9uKCl7dS5WaShcInB1YkFkc1wiK24pLmtqKFwiQWRJbmplY3RcIil9KS51KFwicmVuZGVyXCIsZnVuY3Rpb24oKXtyZXR1cm4gdS5WaShcIkFkSW5qZWN0XCIpfSl9O3EucHJvdG90eXBlLlFHPWZ1bmN0aW9uKCl7dGhpcy51Yy50Tyh0aGlzLk0pfTtxLnByb3RvdHlwZS5Ccz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB1O3JldHVybiBmKHRoaXMsZnVuY3Rpb24odyl7c3dpdGNoKHcubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5ybCgpLFs0LHRoaXMuZm0oKV07Y2FzZSAxOnJldHVybiB1PXcubSgpLHRoaXMudWMudGIuZFAodGhpcy5kYyx1KSxbMix0aGlzXX19KX0pfTtxLnByb3RvdHlwZS5QbD1mdW5jdGlvbigpe2QuZGVmYXVsdC5sb2coXCIgIFNldHRpbmcgYWQgdW5pdDogXCIrdGhpcy5IZSk7XG5kLmRlZmF1bHQubG9nKFwiICBTZXR0aW5nIHBvc3NpYmxlIGFkIHNpemVzOiBcIit0aGlzLk0pO2QuZGVmYXVsdC5sb2coXCIgIFNldHRpbmcgY3VzdG9tIHRhcmdldGluZyBwYXJhbWV0ZXJzOiBcIix0aGlzLnVjLnRiLkVoKCkpO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5YRT1mdW5jdGlvbih1LHcpe3ZhciB4PXRoaXM7dm9pZCAwPT09dyYmKHc9dGhpcy5zLk4pO3ZhciBDO3RoaXMuWEYodyk7dz10aGlzLmRBKHUpOyhDPXt9LEMuT0s9ZnVuY3Rpb24oKXt2YXIgRD14LmFoKHUpO3guZGooRCl9LEMuTk9GSUxMPWZ1bmN0aW9uKCl7cmV0dXJuIHguQmUoKX0sQy5FUlJPUj1mdW5jdGlvbigpe2QuZGVmYXVsdC5sb2coXCIgIEFkIHRhZyByZXR1cm5lZCBidXQgZmFpbGVkIHRvIHJldHJpZXZlIGNvbnRlbnRzOiBObyBkYXRhXCIpO3guaGEoKX0sQylbd10oKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuZEE9ZnVuY3Rpb24odSl7cmV0dXJuIHUuaXNFbXB0eT9cIk5PRklMTFwiOnUuc2l6ZT9cIk9LXCI6XG5cIkVSUk9SXCJ9O3EucHJvdG90eXBlLmFoPWZ1bmN0aW9uKHUpe3U9ZC5kZWZhdWx0LmV4dGVuZCh7c2l6ZTpkLmRlZmF1bHQucmModS5zaXplKSxUaDp0aGlzLkIoKSxMTTp1LmxpbmVJdGVtSWQsVWU6dS5jcmVhdGl2ZUlkLGNwOnUueWllbGRHcm91cElkc30sdGhpcy5JbCk7dS5leGNoYW5nZT11LmV4Y2hhbmdlfHxoLmdJKHUpO3JldHVybiB1fTtxLnByb3RvdHlwZS5raj1mdW5jdGlvbih1KXt0aGlzLmEuemMuQmcodSk7cmV0dXJuIHRoaXN9O3EucHJvdG90eXBlLlZpPWZ1bmN0aW9uKHUpe3RoaXMuZihcImJlbmNobWFya3NcIix0aGlzLmEuemMuaGcodSkpO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5ybD1mdW5jdGlvbigpe3RoaXMuZGM9dGhpcy5ybS5QZCh0aGlzLkhlLHRoaXMuTSk7cmV0dXJuIHRoaXN9O3EucHJvdG90eXBlLmZtPWZ1bmN0aW9uKCl7dmFyIHU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odyl7dS5kYy5vbmNlKFwicmVhZHlcIix3KS5OYShcImJlbmNobWFya3NcIixcbnUpLlZoKHUuTSl9KX07cmV0dXJuIHF9KGEuZGVmYXVsdCk7dC5kZWZhdWx0PWd9LHsxMzoxMywxNToxNSwyMDoyMCwyNTA6MjUwLDM2OjM2fV0sMjQ6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGMpe2Zvcih2YXIgYSxiPTEsZD1hcmd1bWVudHMubGVuZ3RoO2I8ZDtiKyspe2E9YXJndW1lbnRzW2JdO2Zvcih2YXIgaCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGgpJiYoY1toXT1hW2hdKX1yZXR1cm4gY307T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygyMTcpLGU9ZygyMTUpLGY9ZygyNDIpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7dGhpcy5aYz1udWxsfWMucHJvdG90eXBlLmFPPWZ1bmN0aW9uKGEpe3RoaXMuWmM9YX07Yy5wcm90b3R5cGUucEw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBmdW5jdGlvbihiKXt2YXIgZCxcbmg9YS5aYy5DaCgpLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gMDxsLmlhfSkubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBlLmRlZmF1bHQuRmoobC5pYSxwLmRlZmF1bHQpfSksaz1NYXRoLm1heC5hcHBseShNYXRoLGgpO3JldHVybiBoLmxlbmd0aD92KHt9LGIsKGQ9e30sZFtmLlhwXT1rLGQpKTpifX07cmV0dXJuIGN9KCk7dC5kZWZhdWx0PUguY1I9Z30sezIxNToyMTUsMjE3OjIxNywyNDI6MjQyfV0sMjU6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI2KSxwPWcoMjcpLGU9ZygyOCk7dC5kZWZhdWx0PXtvSjpmdW5jdGlvbihmLGMpe3JldHVybiBuZXcgdi5kZWZhdWx0KGYsYyl9LHRKOmZ1bmN0aW9uKGYpe3JldHVybiBuZXcgcC5kZWZhdWx0KGYpfSxHSjpmdW5jdGlvbihmKXtyZXR1cm4gbmV3IGUuZGVmYXVsdChmKX19fSx7MjY6MjYsMjc6MjcsMjg6Mjh9XSwyNjpbZnVuY3Rpb24oZyx5LFxudCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUsZil7dGhpcy51Rz1lLkFnO3RoaXMuYUY9ZS54azt0aGlzLk5yPWUuZGU7dGhpcy5DZD1lLk47dGhpcy5hPWZ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHAsXCJDT05TT0xFX1BPTExfSU5URVJWQUxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDUwMH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkocCxcIkNPTlNPTEVfUE9MTF9USU1FT1VUXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA1RTN9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7cC5LSz1mdW5jdGlvbihlKXtlLl90eW50X2dwdF9pZnJhbWVfaWQ9TnVtYmVyKGUuX3R5bnRfZ3B0X2lmcmFtZV9pZCl8fDA7cmV0dXJuXCJ0eW50LWdwdC1pZnJhbWUtXCIrICsrZS5fdHludF9ncHRfaWZyYW1lX2lkfTtwLlZUPWZ1bmN0aW9uKGUpe2RlbGV0ZSBlLl90eW50X2dwdF9pZnJhbWVfaWR9O1xucC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihlKXt0aGlzLlBGKCkuQUQoZSk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLmpuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLkNkLmpuKGUpfTtwLnByb3RvdHlwZS5Odj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5hLmRhLmZpKHtMajpmdW5jdGlvbigpe3JldHVybiBlLldxKCl9LGNnOmZ1bmN0aW9uKGYpe2UuYS5iLlYoZixcImhlaWdodFwiLFwiMTAwJVwiKX0sb3B0aW9uczp7aW50ZXJ2YWw6NTAwLHRpbWVvdXQ6NUUzfX0pfTtwLnByb3RvdHlwZS5aTD1mdW5jdGlvbigpe3RoaXMuQ3EoKX07cC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuQ3EoKTt0aGlzLkNkLmooKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuV3E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DZC5nZXRFbGVtZW50QnlJZChcImdvb2dsZV9wdWJjb25zb2xlX2NvbnNvbGVcIil9O3AucHJvdG90eXBlLkNxPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5XcSgpO2UmJnRoaXMuYS5iLlYoZSxcblwiaGVpZ2h0XCIsXCIwXCIpfTtwLnByb3RvdHlwZS5QRj1mdW5jdGlvbigpe3ZhciBlPXAuS0sodGhpcy5Ocik7dGhpcy5DZC5vTyhlKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuQUQ9ZnVuY3Rpb24oZSl7dGhpcy5DZC5HayhcImdvb2dsZXRhZ1wiLGUpLkdrKFwiVHludFNJQ1wiLHRoaXMudUcpLkdrKFwicnVuSnNvblBSZWNlaXZlclwiLHRoaXMuZ0UoKSkuR2soXCJQcm9taXNlXCIsdGhpcy5hRikudGQoe3VybDpcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L3RhZy9qcy9ncHQuanNcIn0pO3RoaXMubkQoKSYmdGhpcy5OdigpfTtwLnByb3RvdHlwZS5uRD1mdW5jdGlvbigpe3JldHVybiAwPFtcImdvb2dsZV9kZWJ1Z1wiLFwiZ29vZ2xlX2NvbnNvbGVcIixcImdvb2dsZV9mb3JjZV9jb25zb2xlXCIsXCJnb29nZmNcIl0uZmlsdGVyKHYuZGVmYXVsdC55dSkubGVuZ3RofHxcIjFcIj09PXRoaXMuQ2QueG4oXCJnb29nbGVfcHViY29uc29sZVwiKVswXX07cC5wcm90b3R5cGUuZ0U9ZnVuY3Rpb24oKXt2YXIgZT1cbnRoaXM7cmV0dXJuIGZ1bmN0aW9uKGYsYyl7cmV0dXJuIGUuZEMoZikoYyl9fTtwLnByb3RvdHlwZS5kQz1mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdChcIi5cIikucmVkdWNlKGZ1bmN0aW9uKGYsYyl7cmV0dXJuIGZbY119LHRoaXMuTnIpfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9Z30sezI1MDoyNTB9XSwyNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlKXt0aGlzLlhnPWUuUG47dGhpcy5hcj1lLktMO3RoaXMuckM9ZS5xZzt0aGlzLnRzPVtdO3RoaXMucW09MDt0aGlzLlZjPWUuYWF9cC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbigpe3RoaXMuJEEoKTt0aGlzLmFyLmxvYWQodGhpcy5YZyk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLlZKPWZ1bmN0aW9uKGUsZil7dmFyIGM9dGhpcy5hci5qbih0aGlzLk1CKCkpO2U9dGhpcy5yQy5HSih7UG46dGhpcy5YZyxcbmVsZW1lbnQ6YyxhYTp0aGlzLlZjfSkucmVnaXN0ZXIoZSxmKTt0aGlzLnRzLnB1c2goZSk7cmV0dXJuIGV9O3AucHJvdG90eXBlLmhlPWZ1bmN0aW9uKGUpe3ZhciBmO3ZvaWQgMD09PWYmJihmPXRoaXMpO3RoaXMuWGcuY21kLnB1c2goZnVuY3Rpb24oKXt2LmRlZmF1bHQucW4oZSxbXSxmKX0pfTtwLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmooKX0pO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS4kQT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5oZShmdW5jdGlvbigpe2UuWGcucHViYWRzKCk7ZS5YZy5lbmFibGVTZXJ2aWNlcygpfSl9O3AucHJvdG90eXBlLk1CPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5xbTt0aGlzLnFtPSsrZTtyZXR1cm5cInR5bnQtZ3B0LXNsb3QtXCIrdGhpcy5xbX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PWd9LHsyNTA6MjUwfV0sMjg6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGwpe3JldHVybiBsLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gbS5zcGxpdChcInhcIikubWFwKE51bWJlcil9KX1cbmZ1bmN0aW9uIHAobCl7cmV0dXJuIE9iamVjdC5rZXlzKGwpLm1hcChmdW5jdGlvbihtKXtyZXR1cm5bbSxbXS5jb25jYXQobFttXSkubWFwKFN0cmluZyldfSkucmVkdWNlKGZ1bmN0aW9uKG0sbil7dmFyIHI9blswXTtuPW5bMV07dmFyIHE7cmV0dXJuIGMoe30sbSwocT17fSxxW3JdPW4scSkpfSx7fSl9ZnVuY3Rpb24gZShsKXt2YXIgbT1sLmlkO3JldHVyblwiSUZSQU1FXCI9PT1sLm5vZGVOYW1lJiYhZC50ZXN0KG0pfXZhciBmPXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgbD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24obSxuKXttLl9fcHJvdG9fXz1ufXx8ZnVuY3Rpb24obSxuKXtmb3IodmFyIHIgaW4gbiluLmhhc093blByb3BlcnR5KHIpJiYobVtyXT1uW3JdKX07cmV0dXJuIGZ1bmN0aW9uKG0sbil7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9bX1sKG0sbik7bS5wcm90b3R5cGU9bnVsbD09PVxubj9PYmplY3QuY3JlYXRlKG4pOihyLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcil9fSgpLGM9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihsKXtmb3IodmFyIG0sbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKXttPWFyZ3VtZW50c1tuXTtmb3IodmFyIHEgaW4gbSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobSxxKSYmKGxbcV09bVtxXSl9cmV0dXJuIGx9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBhPWcoMjUwKSxiPVtcInJlcXVlc3RzdGFydFwiLFwicmVuZGVyXCIsXCJyZXNwb25zZVwiLFwidGFyZ2V0aW5ndXBkYXRlXCJdLGQ9L2hpZGRlbnxyZW1vdmUvLGg9W1wiMzIweDUwXCIsXCIzMjB4MTAwXCJdO2c9ZnVuY3Rpb24obCl7ZnVuY3Rpb24gbShuKXt2YXIgcj1uLlBuLHE9bi5lbGVtZW50O249bi5hYTt2YXIgdT1sLmNhbGwodGhpcyl8fHRoaXM7dS4kYShtLkgoKSk7dS5BYj17cGc6cixcblplOm51bGx9O3UuSGE9cTt1LktsPVtdO3UudGI9bmV3IGsodSk7dS5WYz1uO3JldHVybiB1fWYobSxsKTttLkg9ZnVuY3Rpb24oKXtyZXR1cm4gYn07bS5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24obixyKXt2YXIgcT10aGlzO3RoaXMuaGUoZnVuY3Rpb24oKXtyZXR1cm4gcS5sRihuLHIpfSk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLlBhPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmhlKGZ1bmN0aW9uKCl7bi5maigpLnN5KCk7bi5BYi5wZy5kaXNwbGF5KG4uSGEuaWQpfSk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuaGUoZnVuY3Rpb24oKXt2YXIgcixxPW4uQWIucGcucHViYWRzKCk7bi50Yi5Iaygocj17fSxyLnJzaD1cIjFcIixyKSk7bi5maigpO3EucmVmcmVzaChbbi5BYi5aZV0pfSk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnRPPWZ1bmN0aW9uKG4pe3ZhciByLHEsdT1hLmRlZmF1bHQuUWUodGhpcy5LbCxcbm4pO3RoaXMudGIuSGsoKHI9e30sci5yc2hfc3o9bixyKSk7bj0wPGEuZGVmYXVsdC5RZSh0aGlzLktsLGgpLmxlbmd0aDswPHUubGVuZ3RoJiZuJiZ0aGlzLnRiLkhrKChxPXt9LHEuZXhjbF9zcmM9W1wiZWJkYVwiXSxxKSl9O20ucHJvdG90eXBlLmhlPWZ1bmN0aW9uKG4pe3ZhciByO3ZvaWQgMD09PXImJihyPXRoaXMpO3RoaXMuQWIucGcuY21kLnB1c2goZnVuY3Rpb24oKXthLmRlZmF1bHQucW4obixbXSxyKX0pfTttLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmhlKGZ1bmN0aW9uKCl7bi5BYi5wZy5kZXN0cm95U2xvdHMoW24uQWIuWmVdKX0pO3RoaXMuSigpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5wej1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGEuZGVmYXVsdC5haSh0aGlzLkhhLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiSUZSQU1FXCIpKS5maWx0ZXIoZSkubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBuLlZjLmJKKHIpfSlbMF19O20ucHJvdG90eXBlLmxGPVxuZnVuY3Rpb24obixyKXt2YXIgcT10aGlzLkFiLnBnLHU9dihyKSx3PXRoaXMuSGE7dGhpcy5LbD1yO3RoaXMuQWIuWmU9cS5kZWZpbmVTbG90KG4sdSx3LmlkKTt0aGlzLkFiLlplLmFkZFNlcnZpY2UocS5wdWJhZHMoKSk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLm9xPWZ1bmN0aW9uKG4scil7dmFyIHE9dGhpczt0aGlzLkFiLnBnLnB1YmFkcygpLmFkZEV2ZW50TGlzdGVuZXIobixmdW5jdGlvbih1KXtmb3IodmFyIHc9W10seD0xO3g8YXJndW1lbnRzLmxlbmd0aDt4Kyspd1t4LTFdPWFyZ3VtZW50c1t4XTtxLkVGKHUuc2xvdCxyLFt1XS5jb25jYXQodykpfSk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLkVGPWZ1bmN0aW9uKG4scixxKXt0aGlzLnVEKG4pJiZhLmRlZmF1bHQucW4ocixxLHRoaXMpfTttLnByb3RvdHlwZS51RD1mdW5jdGlvbihuKXtmdW5jdGlvbiByKHEpe3JldHVybiBxLmdldEFkVW5pdFBhdGgoKStcIjpcIitxLmdldFNsb3RFbGVtZW50SWQoKX1yZXR1cm4gcih0aGlzLkFiLlplKT09PVxucihuKX07bS5wcm90b3R5cGUuZmo9ZnVuY3Rpb24oKXt0aGlzLmYoXCJyZXF1ZXN0c3RhcnRcIik7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnN5PWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLm9xKFwic2xvdFJlc3BvbnNlUmVjZWl2ZWRcIixmdW5jdGlvbigpe3JldHVybiBuLmYoXCJyZXNwb25zZVwiKX0pLm9xKFwic2xvdFJlbmRlckVuZGVkXCIsZnVuY3Rpb24ocil7bi5mKFwicmVuZGVyXCIscixuLnB6KCkpfSl9O3JldHVybiBtfShnKDE0OCkuZGVmYXVsdCk7dmFyIGs9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKG0pe3RoaXMucG09bTt0aGlzLmZkPXt9fWwucHJvdG90eXBlLmRQPWZ1bmN0aW9uKG0sbil7dGhpcy53RShtKS5IayhuKX07bC5wcm90b3R5cGUuRWg9ZnVuY3Rpb24oKXtyZXR1cm4gYS5kZWZhdWx0LkViKHRoaXMuZmQpfTtsLnByb3RvdHlwZS5Iaz1mdW5jdGlvbihtKXtmdW5jdGlvbiBuKHUsdyl7ci5mZFt1XT13O3IucG0uaGUoZnVuY3Rpb24oKXt0aGlzLkFiLlplLnNldFRhcmdldGluZyh1LFxudyl9KX12YXIgcj10aGlzLHE9cChtKTtPYmplY3Qua2V5cyhxKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe24odSxxW3VdKX0pfTtsLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZmQ9e307dGhpcy5wbS5oZShmdW5jdGlvbigpe3RoaXMuQWIuWmUuY2xlYXJUYXJnZXRpbmcoKX0pO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS53RT1mdW5jdGlvbihtKXt2YXIgbj10aGlzO20uaHUoKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe24ucG0uZihcInRhcmdldGluZ3VwZGF0ZVwiLHIsbS5rdShyKSl9KTtyZXR1cm4gdGhpc307cmV0dXJuIGx9KCk7dC5kZWZhdWx0PWd9LHsxNDg6MTQ4LDI1MDoyNTB9XSwyOTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjQ3KSxwPWcoMjM4KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmKXt0aGlzLmxhPWY7dGhpcy5EcT10aGlzLlpjPXRoaXMuc2U9bnVsbDt0aGlzLmE9e21hOm51bGwsXG56YzpudWxsLERiOm51bGx9O3RoaXMuaGo9dGhpcy5xbD10aGlzLkJmPW51bGx9ZS5wcm90b3R5cGUuR289ZnVuY3Rpb24oZil7dGhpcy5zZT1mO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5lTz1mdW5jdGlvbihmKXt0aGlzLkRxPWY7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLmpPPWZ1bmN0aW9uKGYpe3RoaXMuYS5tYT1mO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5Ibz1mdW5jdGlvbihmKXt0aGlzLmEuemM9ZjtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuWWg9ZnVuY3Rpb24oZil7dGhpcy5hLkRiPWY7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLmJPPWZ1bmN0aW9uKGYpe3RoaXMucWw9ZjtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuTm89ZnVuY3Rpb24oZil7dGhpcy5CZj1mO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS52Tz1mdW5jdGlvbihmKXt0aGlzLmhqPWY7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLlBkPWZ1bmN0aW9uKGYsYyl7dmFyIGE9di5ocS50dCh7b2Q6dGhpcy5hLnpjfSk7XG5hLk1tKHYuZGwua2ksdGhpcy5SQihjKSk7dGhpcy5ObChjKSYmKHRoaXMuWmM9dGhpcy5zZS5QZChmLGMpLHRoaXMuaXkoYSkpO3JldHVybiBhfTtlLnByb3RvdHlwZS5peT1mdW5jdGlvbihmKXt2YXIgYz10aGlzLnFsLnBMKCk7dGhpcy5xbC5hTyh0aGlzLlpjKTtmLnJIKGMpLk1tKHYuZGwuJGIsdGhpcy5FbCgpKX07ZS5wcm90b3R5cGUuUkI9ZnVuY3Rpb24oZil7Zj10aGlzLmxhLk1hKHAuZGVmYXVsdC5KYix7WXY6dGhpcy5EcSxQbzpmWzBdLGZpbHRlcnM6e3NpemU6ZlswXX19KTt2YXIgYz10aGlzLmhqLmx0KCksYT10aGlzLmxhLmZrKCk7cmV0dXJue0NhOnRoaXMubGEuWGQoKS5DYSxlYjphLmViLHFjOmEucWMsUmU6YyxIajpmLkhqLEdOOmYuRk4seWs6Zi55ayxGYTpmLkZhLERvOmYuRG8sSk86dGhpcy5CZn19O2UucHJvdG90eXBlLk5sPWZ1bmN0aW9uKGYpe2Y9dGhpcy5sYS5NYShwLmRlZmF1bHQuJGIse2ZpbHRlcnM6e3NpemU6ZlswXX0sUmI6dGhpcy5hLkRifSk7cmV0dXJuIG51bGwhPT1cbnRoaXMuc2UmJjA8Zi5wbi5sZW5ndGh9O2UucHJvdG90eXBlLkVsPWZ1bmN0aW9uKCl7cmV0dXJue21kOnRoaXMuWmMsb2Q6dGhpcy5hLnpjLERiOnRoaXMuYS5EYixEOnRoaXMubGEuJCgpfX07cmV0dXJuIGV9KCk7dC5kZWZhdWx0PWd9LHsyMzg6MjM4LDI0NzoyNDd9XSwzMDpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxoKXtkLl9fcHJvdG9fXz1ofXx8ZnVuY3Rpb24oZCxoKXtmb3IodmFyIGsgaW4gaCloLmhhc093blByb3BlcnR5KGspJiYoZFtrXT1oW2tdKX07cmV0dXJuIGZ1bmN0aW9uKGQsaCl7ZnVuY3Rpb24gaygpe3RoaXMuY29uc3RydWN0b3I9ZH1iKGQsaCk7ZC5wcm90b3R5cGU9bnVsbD09PWg/T2JqZWN0LmNyZWF0ZShoKTooay5wcm90b3R5cGU9aC5wcm90b3R5cGUsbmV3IGspfX0oKSxwPXRoaXMmJlxudGhpcy53YXx8ZnVuY3Rpb24oYixkLGgsayl7cmV0dXJuIG5ldyAoaHx8KGg9UHJvbWlzZSkpKGZ1bmN0aW9uKGwsbSl7ZnVuY3Rpb24gbih1KXt0cnl7cShrLm5leHQodSkpfWNhdGNoKHcpe20odyl9fWZ1bmN0aW9uIHIodSl7dHJ5e3Eoa1tcInRocm93XCJdKHUpKX1jYXRjaCh3KXttKHcpfX1mdW5jdGlvbiBxKHUpe3UuZG9uZT9sKHUudmFsdWUpOihuZXcgaChmdW5jdGlvbih3KXt3KHUudmFsdWUpfSkpLnRoZW4obixyKX1xKChrPWsuYXBwbHkoYixkfHxbXSkpLm5leHQoKSl9KX0sZT10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGgodSl7cmV0dXJuIGZ1bmN0aW9uKHcpe3JldHVybiBrKFt1LHddKX19ZnVuY3Rpb24gayh1KXtpZihtKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7bDspdHJ5e2lmKG09MSxuJiYocj11WzBdJjI/bltcInJldHVyblwiXTp1WzBdP25bXCJ0aHJvd1wiXXx8KChyPW5bXCJyZXR1cm5cIl0pJiZcbnIuY2FsbChuKSwwKTpuLm5leHQpJiYhKHI9ci5jYWxsKG4sdVsxXSkpLmRvbmUpcmV0dXJuIHI7aWYobj0wLHIpdT1bdVswXSYyLHIudmFsdWVdO3N3aXRjaCh1WzBdKXtjYXNlIDA6Y2FzZSAxOnI9dTticmVhaztjYXNlIDQ6cmV0dXJuIGwubGFiZWwrKyx7dmFsdWU6dVsxXSxkb25lOiExfTtjYXNlIDU6bC5sYWJlbCsrO249dVsxXTt1PVswXTtjb250aW51ZTtjYXNlIDc6dT1sLmwucG9wKCk7bC5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShyPWwuaSxyPTA8ci5sZW5ndGgmJnJbci5sZW5ndGgtMV0pJiYoNj09PXVbMF18fDI9PT11WzBdKSl7bD0wO2NvbnRpbnVlfWlmKDM9PT11WzBdJiYoIXJ8fHVbMV0+clswXSYmdVsxXTxyWzNdKSlsLmxhYmVsPXVbMV07ZWxzZSBpZig2PT09dVswXSYmbC5sYWJlbDxyWzFdKWwubGFiZWw9clsxXSxyPXU7ZWxzZSBpZihyJiZsLmxhYmVsPHJbMl0pbC5sYWJlbD1yWzJdLGwubC5wdXNoKHUpO2Vsc2V7clsyXSYmbC5sLnBvcCgpO2wuaS5wb3AoKTtcbmNvbnRpbnVlfX11PWQuY2FsbChiLGwpfWNhdGNoKHcpe3U9WzYsd10sbj0wfWZpbmFsbHl7bT1yPTB9aWYodVswXSY1KXRocm93IHVbMV07cmV0dXJue3ZhbHVlOnVbMF0/dVsxXTp2b2lkIDAsZG9uZTohMH19dmFyIGw9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKHJbMF0mMSl0aHJvdyByWzFdO3JldHVybiByWzFdfSxpOltdLGw6W119LG0sbixyLHE7cmV0dXJuIHE9e25leHQ6aCgwKSxcInRocm93XCI6aCgxKSxcInJldHVyblwiOmgoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihxW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPWcoMzYpLGM9ZygxMyk7eT1nKDIwKTt2YXIgYT1nKDI1MCk7Zz1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKGgsayl7az1iLmNhbGwodGhpcyxoLGspfHx0aGlzO2suTGc9aC5QZTtrLkhlPWguamY7ay5ybT1oLm1mO2suS3k9XG5oLlRtO2suZGM9bnVsbDtyZXR1cm4ga312KGQsYik7ZC5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQuSmJ9O2QucHJvdG90eXBlLmFrPWZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVmYXVsdC5ibH07ZC5wcm90b3R5cGUuUGE9ZnVuY3Rpb24oKXt2YXIgaD10aGlzO3RoaXMucmwoKS5QbCgpLmZtKHtlTjpmdW5jdGlvbigpe3JldHVybiBoLk9iKCl9fSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLnBjPWZ1bmN0aW9uKCl7dGhpcy5kYy5qKCk7dGhpcy5QYSgpO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5kYztudWxsIT09aCYmaC5qKCk7dGhpcy5KKCk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLk9iPWZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtzd2l0Y2goaC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuVEcoKS4kRSgpXTtcbmNhc2UgMTpyZXR1cm4gaC5tKCksWzIsdGhpc119fSl9KX07ZC5wcm90b3R5cGUuVEc9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLGs9dGhpcy5kYztrLmh1KCkuZm9yRWFjaChmdW5jdGlvbihsKXt2YXIgbT1rLmt1KGwpO2gueEUobCxtKX0pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS4kRT1mdW5jdGlvbigpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBoLGssbDtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKG0pe3N3aXRjaChtLmxhYmVsKXtjYXNlIDA6aD10aGlzLnFDKCk7aWYobnVsbD09PWgpcmV0dXJuIHRoaXMuQmUoKSxbMix0aGlzXTtrPXRoaXMuYWgoaCk7bS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbS5pLnB1c2goWzEsMywsNF0pLFs0LHRoaXMuWmcoay5zaXplLGgueWMpXTtjYXNlIDI6cmV0dXJuIG0ubSgpLHRoaXMuZGooayksWzMsNF07Y2FzZSAzOnJldHVybiBsPW0ubSgpLHRoaXMuaGEoe2Vycm9yTWVzc2FnZTpsLm1lc3NhZ2V9KSxbMyw0XTtcbmNhc2UgNDpyZXR1cm5bMix0aGlzXX19KX0pfTtkLnByb3RvdHlwZS5aZz1mdW5jdGlvbihoLGspe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24obCl7c3dpdGNoKGwubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLkxnLlduKHRoaXMuQigpLGgsayldO2Nhc2UgMTpyZXR1cm4gbC5tKCksWzIsdGhpc119fSl9KX07ZC5wcm90b3R5cGUucUM9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLkt5LlF0KHRoaXMuSGUpO2lmKG51bGw9PT1oKXJldHVybiBudWxsO2g9aC5DaCgpLnNvcnQoZnVuY3Rpb24oayxsKXtyZXR1cm4gbC5pYS1rLmlhfSk7cmV0dXJuIDA8aC5sZW5ndGgmJjA8aFswXS5pYT9oWzBdOm51bGx9O2QucHJvdG90eXBlLmFoPWZ1bmN0aW9uKGgpe3ZhciBrPXtzaXplOmEuZGVmYXVsdC5yYyhoLnNpemUpLFRoOnRoaXMuQigpLGV4Y2hhbmdlOmguQWN9O2EuZGVmYXVsdC5sb2coXCIgIFByZS1iaWRkZXI6IFwiK2guQWMrXG5cIiB3b24gdGhlIGF1Y3Rpb24uXCIpO3JldHVybiBrfTtkLnByb3RvdHlwZS5QbD1mdW5jdGlvbigpe2EuZGVmYXVsdC5sb2coXCIgIFNldHRpbmcgYWQgdW5pdDogXCIrdGhpcy5IZSk7YS5kZWZhdWx0LmxvZyhcIiAgU2V0dGluZyBwb3NzaWJsZSBhZCBzaXplczogXCIrdGhpcy5NKTtyZXR1cm4gdGhpc307ZC5wcm90b3R5cGUucmw9ZnVuY3Rpb24oKXt0aGlzLmRjPXRoaXMucm0uUGQodGhpcy5IZSx0aGlzLk0pO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5mbT1mdW5jdGlvbihoKXt0aGlzLmRjLm9uY2UoXCJyZWFkeVwiLGguZU4pLk5hKFwiYmVuY2htYXJrc1wiLHRoaXMpLlZoKHRoaXMuTSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLnhFPWZ1bmN0aW9uKGgsayl7dGhpcy5mKFwidGFyZ2V0aW5ndXBkYXRlXCIsaCxrKX07cmV0dXJuIGR9KHkuZGVmYXVsdCk7dC5kZWZhdWx0PWd9LHsxMzoxMywyMDoyMCwyNTA6MjUwLDM2OjM2fV0sMzE6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcblwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjQ3KSxwPWcoMjM4KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmKXt0aGlzLnJhPWY7dGhpcy5aYz10aGlzLnNlPW51bGw7dGhpcy5hPXt6YzpudWxsLERiOm51bGx9fWUucHJvdG90eXBlLkdvPWZ1bmN0aW9uKGYpe3RoaXMuc2U9ZjtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuSG89ZnVuY3Rpb24oZil7dGhpcy5hLnpjPWY7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLlloPWZ1bmN0aW9uKGYpe3RoaXMuYS5EYj1mO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5QZD1mdW5jdGlvbihmLGMpe3ZhciBhPXYuaHEudHQoe29kOnRoaXMuYS56Y30pO3RoaXMuTmwoYykmJih0aGlzLlpjPXRoaXMuc2UuUGQoZixjKSxhLk1tKHYuZGwuJGIsdGhpcy5FbCgpKSk7cmV0dXJuIGF9O2UucHJvdG90eXBlLk5sPWZ1bmN0aW9uKGYpe2Y9dGhpcy5yYS5NYShwLmRlZmF1bHQuJGIse2ZpbHRlcnM6e3NpemU6ZlswXX0sUmI6dGhpcy5hLkRifSk7XG5yZXR1cm4gbnVsbCE9PXRoaXMuc2UmJjA8Zi5wbi5sZW5ndGh9O2UucHJvdG90eXBlLkVsPWZ1bmN0aW9uKCl7cmV0dXJue21kOnRoaXMuWmMsb2Q6dGhpcy5hLnpjLERiOnRoaXMuYS5EYixEOnRoaXMucmEuJCgpfX07cmV0dXJuIGV9KCk7dC5kZWZhdWx0PWd9LHsyMzg6MjM4LDI0NzoyNDd9XSwzMjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24ocCl7Zm9yKHZhciBlLGY9MSxjPWFyZ3VtZW50cy5sZW5ndGg7ZjxjO2YrKyl7ZT1hcmd1bWVudHNbZl07Zm9yKHZhciBhIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYSkmJihwW2FdPWVbYV0pfXJldHVybiBwfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlLGYpe3RoaXMucz1lO3RoaXMuYT1mfXAucHJvdG90eXBlLkVoPWZ1bmN0aW9uKGUsZil7cmV0dXJuIHYoe30sXG50aGlzLnMse1BlOmZ9KX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PWd9LHt9XSwzMzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjM4KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlLGYsYyl7dGhpcy5zPWU7dGhpcy5hPWY7dGhpcy5yYT1jfXAucHJvdG90eXBlLkVoPWZ1bmN0aW9uKGUpe3ZhciBmPXRoaXMucztyZXR1cm57amY6dGhpcy5WQihlKS5qZixtZjpmLm1mLFhhOmYuWGEsYWE6Zi5hYSxxZzpmLnFnLEFnOmYuQWcsZGU6Zi5kZSxOOmYuTn19O3AucHJvdG90eXBlLlZCPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJhLk1hKHYuZGVmYXVsdC5KYix7UG86ZSxmaWx0ZXJzOntzaXplOmV9fSl9O3JldHVybiBwfSgpO3QuZGVmYXVsdD1nfSx7MjM4OjIzOH1dLDM0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYocCxcbmUpe3RoaXMucz1wO3RoaXMuYT1lfXYucHJvdG90eXBlLkVoPWZ1bmN0aW9uKHAsZSl7dmFyIGY9dGhpcy5zO3A9Zi5tZjt2YXIgYz1mLlRtLGE9Zi5YYSxiPWYuTjtmPWYuRmIuR2MoKTtyZXR1cm57bWY6cCxUbTpjLFhhOmEsamY6ZixQZTplLE46Yn19O3JldHVybiB2fSgpO3QuZGVmYXVsdD1nfSx7fV0sMzU6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIzKSxwPWcoMzApLGU9ZygzNiksZj1nKDIyKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe3RoaXMubXE9e319Yy5wcm90b3R5cGUubW49ZnVuY3Rpb24oYSxiKXt0aGlzLm1xW2FdPWI7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLkJKPWZ1bmN0aW9uKGEsYixkKXt2YXIgaCxrPXRoaXMubXFbYV07Yj1rLkVoKGIsZCk7az1rLmE7ZD0oaD17fSxoW2UuZGVmYXVsdC5KYl09di5kZWZhdWx0LGhbZS5kZWZhdWx0Lk1wXT1wLmRlZmF1bHQsaFtlLmRlZmF1bHQuUmNdPVxuZi5kZWZhdWx0LGgpO2lmKGRbYV0pcmV0dXJuIG5ldyBkW2FdKGIsayk7dGhyb3cgRXJyb3IoXCJJbnZhbGlkIGFkIHByb3ZpZGVyIGFkYXB0ZXIgbmFtZTogXCIrYSk7fTtyZXR1cm4gY30oKTt0LmRlZmF1bHQ9Z30sezIyOjIyLDIzOjIzLDMwOjMwLDM2OjM2fV0sMzY6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9SC5OUD17UmM6XCJkZW1vXCIsSmI6XCJkZnBcIixNcDpcImhiXCIsZ3A6XCJhcGlcIn19LHt9XSwzNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlKXt0aGlzLnlsPWUuTzt0aGlzLk1mPXtjZjplLmNmLGFuaW1hdGlvbjplLmFuaW1hdGlvbixnYTplLmdhfTt0aGlzLmJjPWUudmQ7dGhpcy5LPWUuRzt0aGlzLnNsPWUuWG07dGhpcy5RZj1lLnRvO3RoaXMuWWc9XG5udWxsO3RoaXMudj1lLkR9cC5wcm90b3R5cGUuUWE9ZnVuY3Rpb24oZSl7dmFyIGY9dGhpcztyZXR1cm4gdGhpcy5LLkloKCk/ZTplLmZpbHRlcihmdW5jdGlvbihjKXtjPXYuZGVmYXVsdC5yYyhjKTtyZXR1cm4gZi5MbChjLndpZHRoLGMuaGVpZ2h0KX0pfTtwLnByb3RvdHlwZS5MbD1mdW5jdGlvbihlLGYpe3JldHVybiB0aGlzLktDKGUsZik/dGhpcy5EQyhlKTohMH07cC5wcm90b3R5cGUuS0M9ZnVuY3Rpb24oZSxmKXtyZXR1cm4gbnVsbCE9PXRoaXMuTWYuY2YmJlwib3ZlcmxheVwiIT09dGhpcy5NZi5hbmltYXRpb24mJnRoaXMuJHooZSxmKX07cC5wcm90b3R5cGUuJHo9ZnVuY3Rpb24oZSxmKXtyZXR1cm4gdGhpcy5zbCh7d2lkdGg6ZSxoZWlnaHQ6Zn0sdGhpcy55bCx0aGlzLmJjKS4kSH07cC5wcm90b3R5cGUuREM9ZnVuY3Rpb24oZSl7dGhpcy5BeigpO3JldHVybiB0aGlzLnF6KGUpPD10aGlzLkl6KCl9O3AucHJvdG90eXBlLkF6PWZ1bmN0aW9uKCl7bnVsbD09PXRoaXMuWWcmJlxuKHRoaXMuUWYudHUoKXx8dGhpcy5RZi5QbSh0aGlzLnYpLHRoaXMuWWc9e2xlZnQ6dGhpcy5RZi5iayhcImxlZnRcIikscmlnaHQ6dGhpcy5RZi5iayhcInJpZ2h0XCIpfSl9O3AucHJvdG90eXBlLnF6PWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heChlLXRoaXMuWWdbdGhpcy5NZi5nYS5WYl0sMCl9O3AucHJvdG90eXBlLkl6PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5NZi5jZjtyZXR1cm5cInZpZXdwb3J0XCI9PT1lP3RoaXMuWnooKTplfTtwLnByb3RvdHlwZS5aej1mdW5jdGlvbigpe3JldHVybntsZWZ0OnRoaXMuWWcucmlnaHQscmlnaHQ6dGhpcy5ZZy5sZWZ0fVt0aGlzLk1mLmdhLlZiXX07cmV0dXJuIHB9KCk7SC5SUT1nO3QuZGVmYXVsdD1nfSx7MjUwOjI1MH1dLDM4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUpe3RoaXMuSz1lLkc7dGhpcy5rRj1cbmUuSU47dGhpcy5qRT1lLldNfXAucHJvdG90eXBlLlFhPWZ1bmN0aW9uKGUsZil7dmFyIGM9dGhpcztyZXR1cm4gdGhpcy5LLkloKCk/ZTplLmZpbHRlcihmdW5jdGlvbihhKXthPXYuZGVmYXVsdC5yYyhhKTtyZXR1cm4gYy5MbChhLGYpfSl9O3AucHJvdG90eXBlLm9MPWZ1bmN0aW9uKGUsZil7ZT12LmRlZmF1bHQucmMoZSk7cmV0dXJuIHRoaXMueHIoKT9lW2ZdOjB9O3AucHJvdG90eXBlLkxsPWZ1bmN0aW9uKGUsZil7cmV0dXJuIHRoaXMueHIoKT90aGlzLmtEKGUsZik6ITB9O3AucHJvdG90eXBlLnhyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuakUuVk0oKX07cC5wcm90b3R5cGUua0Q9ZnVuY3Rpb24oZSxmKXt2YXIgYz10aGlzLmtGLlMoKTtlPXt3aWR0aDp0aGlzLmhyKGUud2lkdGgsYy53aWR0aCksaGVpZ2h0OnRoaXMuaHIoZS5oZWlnaHQsYy5oZWlnaHQpfTtyZXR1cm4gZj9lW2ZdOmUud2lkdGgmJmUuaGVpZ2h0fTtwLnByb3RvdHlwZS5ocj1mdW5jdGlvbihlLGYpe3JldHVybiBlPD1cbihmfHwwKX07cmV0dXJuIHB9KCk7SC5wUz1nO3QuZGVmYXVsdD1nfSx7MjUwOjI1MH1dLDM5OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygzOCkscD1nKDM3KSxlPWcoNDEpLGY9Zyg0MCk7Zyg0Mik7dmFyIGM9ZygyMzgpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe3RoaXMuc2w9Yi5YbTt0aGlzLlFmPWIudG87dGhpcy5CbT1iLlFjO3RoaXMuemU9Yi5Ubjt0aGlzLmJjPWIudmR9YS5wcm90b3R5cGUuVkk9ZnVuY3Rpb24oYixkLGgpe3ZhciBrPWIuTWEoYy5kZWZhdWx0Lk9rLHtmaWx0ZXJzOmQsRzpofSkuY2Y7Yj1iLk1hKGMuZGVmYXVsdC5GZyx7ZmlsdGVyczpkfSk7cmV0dXJuIHRoaXMuVUkoe086Yi5PLGdhOmIuZ2EsYW5pbWF0aW9uOmIuYW5pbWF0aW9uLGNmOmssRzpoLFhtOnRoaXMuc2wsdG86dGhpcy5RZix2ZDp0aGlzLmJjLEQ6dGhpcy5CbS4kKCl9KX07YS5wcm90b3R5cGUuVUk9XG5mdW5jdGlvbihiKXtyZXR1cm4gbmV3IHAuZGVmYXVsdChiKX07YS5wcm90b3R5cGUucko9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy52SihiKSxoPXRoaXMuc0ooKTtyZXR1cm4gdGhpcy56ZS5XYz90aGlzLkRKKHtHOmIsSU46aCxXTTpkfSk6bnVsbH07YS5wcm90b3R5cGUuREo9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyB2LmRlZmF1bHQoYil9O2EucHJvdG90eXBlLnZKPWZ1bmN0aW9uKGIpe3JldHVybiBuZXcgZS5kZWZhdWx0KGIsdGhpcy56ZSl9O2EucHJvdG90eXBlLnNKPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmLmRlZmF1bHQodGhpcy56ZSl9O3JldHVybiBhfSgpO0guT1A9Zzt0LmRlZmF1bHQ9Z30sezIzODoyMzgsMzc6MzcsMzg6MzgsNDA6NDAsNDE6NDEsNDI6NDJ9XSw0MDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHApe3RoaXMuemU9cH12LnByb3RvdHlwZS5TPVxuZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56ZS5rcX07cmV0dXJuIHZ9KCk7dC5kZWZhdWx0PWd9LHt9XSw0MTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHAsZSl7dGhpcy5LPXA7dGhpcy56ZT1lfXYucHJvdG90eXBlLlZNPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuSy5JaCgpJiYhdGhpcy56ZS5HdSgpfTtyZXR1cm4gdn0oKTt0LmRlZmF1bHQ9Z30se31dLDQyOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYocCl7dGhpcy5CbT1wfXYucHJvdG90eXBlLlM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CbS5ZZSgpfTtyZXR1cm4gdn0oKTt0LmRlZmF1bHQ9Z30se31dLDQzOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIsXG57dmFsdWU6ITB9KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdihwLGUpe3RoaXMuQ2Q9cDt0aGlzLks9ZX12LnByb3RvdHlwZS5PYz1mdW5jdGlvbihwKXt0aGlzLkNkLk9jKHApO3RoaXMuSy5PYyhwKTtyZXR1cm4gdGhpc307cmV0dXJuIHZ9KCk7dC5kZWZhdWx0PUguUFA9Z30se31dLDQ0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PUguS1M9W1wiU0NSSVBUXCIsXCJCVVRUT05cIixcIklNR1wiLFwiQlJcIl19LHt9XSw0NTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKSxwPWcoMjM4KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmLGMpe3ZhciBhPXRoaXM7dGhpcy5zPWY7dGhpcy5hPWM7dGhpcy5LYT10aGlzLlQ9bnVsbDt0aGlzLmVoPTA7dGhpcy5KZj0hMTt0aGlzLm9sPW51bGw7dGhpcy5LYj17d2F0ZXJmYWxsZmluaXNoOmZ1bmN0aW9uKCl7cmV0dXJuIGEueXMoKX19fVxuZS5wcm90b3R5cGUuV3M9ZnVuY3Rpb24oZil7dGhpcy5UPWY7aWYoIXRoaXMuZ0QoKSlyZXR1cm4gdGhpcy5qKCk7dGhpcy5ULmZhKHRoaXMuS2IpO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5Ldj1mdW5jdGlvbihmKXt0aGlzLkthPWZ9O2UucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLlQuT2EodGhpcy5LYik7dGhpcy55ZSgpLmNsZWFyVGltZW91dCh0aGlzLm9sKTt0aGlzLm9sPW51bGw7dGhpcy5KZj0hMDt2LmRlZmF1bHQubG9nKFwiRGlzYWJsaW5nIGF1dG8gcmVmcmVzaFwiKTtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuZ0Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jZCgpLk9IfTtlLnByb3RvdHlwZS55cz1mdW5jdGlvbigpeyF0aGlzLlQudnUoKXx8dGhpcy5qcigpfHx0aGlzLkpmfHx0aGlzLmRHKCk7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLmRHPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcyxjPXRoaXMuY2QoKS5Dajt2LmRlZmF1bHQubG9nKFwiQXR0ZW1wdGluZyBhbiBpbmxpbmUgcmVmcmVzaCBpbiBcIitcbmMrXCIgc2Vjb25kc1wiKTt0aGlzLm9sPXRoaXMueWUoKS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5kRCgpfHxmLmVEKCk/Zi5qKCk6Zi5JeSgpfSwxRTMqYyl9O2UucHJvdG90eXBlLkl5PWZ1bmN0aW9uKCl7dmFyIGY9dGhpcyxjPXRoaXMuY2QoKTsrK3RoaXMuZWg7dGhpcy5NbCgpfHxjLlBIP3RoaXMueWUoKS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGYuakYoKX0sMCk6KHYuZGVmYXVsdC5sb2coXCJTa2lwcGluZyBpbmxpbmUgcmVmcmVzaCBzaW5jZSB0aGUgYWQgaXMgbm90IHZpc2libGVcIiksdGhpcy55cygpKTt0aGlzLkhBKCl9O2UucHJvdG90eXBlLmpGPWZ1bmN0aW9uKCl7dGhpcy5ULmZmKHRoaXMuS2EpO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5NbD1mdW5jdGlvbigpe3JldHVyblwidmlzaWJsZVwiPT09dGhpcy5hLlFjLmhrKCl9O2UucHJvdG90eXBlLmREPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuVC5GZH07ZS5wcm90b3R5cGUuZUQ9ZnVuY3Rpb24oKXt2YXIgZj1cbnRoaXMuY2QoKS5OSCxjPXRoaXMuVC5GZC5RSygpO3JldHVybiB2LmRlZmF1bHQuY2EoZixjKT8odi5kZWZhdWx0LmxvZyhjK1wiIGhhcyBibG9ja2VkIGF1dG8gcmVmcmVzaFwiKSwhMCk6ITF9O2UucHJvdG90eXBlLkhBPWZ1bmN0aW9uKCl7dGhpcy5qcigpJiZ0aGlzLmooKX07ZS5wcm90b3R5cGUuanI9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLmNkKCk7cmV0dXJuIHRoaXMuZWg+PWYubmt9O2UucHJvdG90eXBlLmNkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucy5aYS5NYShwLmRlZmF1bHQuUGsse1JiOnRoaXMuYS5SYn0pfTtlLnByb3RvdHlwZS55ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuUWMuJCgpfTtyZXR1cm4gZX0oKTtILkNRPWc7dC5kZWZhdWx0PWd9LHsyMzg6MjM4LDI1MDoyNTB9XSw0NjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKSxwPWcoMjM4KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmLFxuYyl7dmFyIGE9Zi5EO3RoaXMucmE9Zi5aYTt0aGlzLnY9YTt0aGlzLmE9Yzt0aGlzLkthPXRoaXMuVD1udWxsO3RoaXMuZWg9MDt0aGlzLkVtPXRoaXMuaGw9bnVsbH1lLnByb3RvdHlwZS5Xcz1mdW5jdGlvbihmKXt2YXIgYz10aGlzO3RoaXMuVD1mO2lmKCF0aGlzLnZEKCkpcmV0dXJuIHRoaXM7dGhpcy5FbT1mdW5jdGlvbigpe3JldHVybiBjLnhzKCl9O3RoaXMuVC51KFwid2F0ZXJmYWxsZmluaXNoXCIsdGhpcy5FbSk7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLkt2PWZ1bmN0aW9uKGYpe3RoaXMuS2E9Zn07ZS5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuVC5uYShcIndhdGVyZmFsbGZpbmlzaFwiLHRoaXMuRW0pO3RoaXMudi5jbGVhclRpbWVvdXQodGhpcy5obCk7dGhpcy5obD1udWxsO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS52RD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNkKCkuWU19O2UucHJvdG90eXBlLnhzPWZ1bmN0aW9uKCl7aWYoIXRoaXMucUcoKSlyZXR1cm4gdGhpcy5qKCksXG50aGlzO3RoaXMuaEYoKTtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUucUc9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLlQ7cmV0dXJuIWYudnUoKSYmIWYueHUoKSYmIXRoaXMudEQoKX07ZS5wcm90b3R5cGUudEQ9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLmNkKCk7cmV0dXJuIHRoaXMuZWg+PWYub299O2UucHJvdG90eXBlLmhGPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcyxjPXRoaXMuY2QoKS5aTTt2LmRlZmF1bHQubG9nKFwiV2lsbCB0cnkgdG8gcmVmcmVzaCBhZCBhZnRlciBcIitjK1wiIHNlY29uZHNcIik7dGhpcy5obD10aGlzLnYuc2V0VGltZW91dChmdW5jdGlvbigpe2YuaUYoKX0sMUUzKmMpfTtlLnByb3RvdHlwZS5pRj1mdW5jdGlvbigpeysrdGhpcy5laDt0aGlzLk1sKCk/dGhpcy5nRigpOih2LmRlZmF1bHQubG9nKFwiU2tpcHBpbmcgbm8tZmlsbCByZWZyZXNoIHNpbmNlIHRoZSBhZCBpcyBub3QgdmlzaWJsZVwiKSx0aGlzLnhzKCkpfTtlLnByb3RvdHlwZS5nRj1mdW5jdGlvbigpe3RoaXMuVC5wYyh0aGlzLkthKX07XG5lLnByb3RvdHlwZS5NbD1mdW5jdGlvbigpe3JldHVyblwidmlzaWJsZVwiPT09dGhpcy5hLlFjLmhrKCl9O2UucHJvdG90eXBlLmNkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmEuTWEocC5kZWZhdWx0LlBrLHtSYjp0aGlzLmEuUmJ9KX07cmV0dXJuIGV9KCk7SC5PUj1nO3QuZGVmYXVsdD1nfSx7MjM4OjIzOCwyNTA6MjUwfV0sNDc6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmKGFbZF09YltkXSl9O3JldHVybiBmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoKXt0aGlzLmNvbnN0cnVjdG9yPWF9YyhhLGIpO2EucHJvdG90eXBlPW51bGw9PT1iP09iamVjdC5jcmVhdGUoYik6KGQucHJvdG90eXBlPVxuYi5wcm90b3R5cGUsbmV3IGQpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDMpLGU9ZygyNTApLGY9XCJlbnRyeWZpbGwgZW50cnlub2ZpbGwgd2F0ZXJmYWxsc3RhcnQgd2F0ZXJmYWxsZmluaXNoIGltcHJlc3Npb24gYWRibG9jayBwYXNzYmFjayB0YXJnZXRpbmd1cGRhdGUgZGlhZ25vc3RpY3MgYmVuY2htYXJrcyB2aWV3YWJsZWFkc2xvdFwiLnNwbGl0KFwiIFwiKTtnPWZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGEoYil7dmFyIGQ9Yy5jYWxsKHRoaXMpfHx0aGlzO2QuJGEoYS5IKCkpO2QuZWM9Yi5uUDtkLkZkPW51bGw7ZC5ReD1iLmZIO2QuT3I9Yi5sTjtkLlFiPWIuZWk7ZC5WZz0wO3JldHVybiBkfXYoYSxjKTthLkg9ZnVuY3Rpb24oKXtyZXR1cm4gZn07YS5wcm90b3R5cGUuUGE9ZnVuY3Rpb24oYil7aWYodGhpcy5ReC5saj09PXAuZGVmYXVsdC5RaylyZXR1cm4gdGhpcy5uRSgpLlpyKCksdGhpczt0aGlzLmtHKCkuZmgoYikuYkcoKTtcbnJldHVybiB0aGlzfTthLnByb3RvdHlwZS5wYz1mdW5jdGlvbihiKXt0aGlzLlZnPTA7dGhpcy5XbCgpO3RoaXMuZWMucGMoYik7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLmZmPWZ1bmN0aW9uKGIpe3RoaXMuV2woKTt0aGlzLmVjLmZmKGIpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5JTD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYy5lTChiKX07YS5wcm90b3R5cGUueHU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5Pci5TTCgpfTthLnByb3RvdHlwZS52dT1mdW5jdGlvbigpe3JldHVybiAwPHRoaXMuVmd9O2EucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLlZnPTA7dGhpcy5lYy5qKCk7dGhpcy5KKCk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLmtHPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxkPXRoaXMuZWM7ZC5mYSh7c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gYi5XbCgpfSxlbnRyeWZpbGw6ZnVuY3Rpb24oKXtmb3IodmFyIGg9W10saz0wO2s8YXJndW1lbnRzLmxlbmd0aDtrKyspaFtrXT1cbmFyZ3VtZW50c1trXTtyZXR1cm4gYi54Qy5hcHBseShiLGgpfSxmaW5pc2g6ZnVuY3Rpb24oKXtyZXR1cm4gYi5BQygpfX0pO1wiZW50cnlyZXF1ZXN0c3RhcnQgZW50cnlub2ZpbGwgaW1wcmVzc2lvbiB0YXJnZXRpbmd1cGRhdGUgZGlhZ25vc3RpY3MgYmVuY2htYXJrc1wiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe2QuTmEoaCxiKX0pO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5maD1mdW5jdGlvbihiKXt0aGlzLmVjLlBhKGIpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5iRz1mdW5jdGlvbigpe3ZhciBiPXRoaXM7dGhpcy5RYi5vbmNlKFwidmlld2FibGVcIixmdW5jdGlvbigpe2IuZihcInZpZXdhYmxlYWRzbG90XCIpO2IuUWIuZGlzY29ubmVjdCgpfSkub2JzZXJ2ZSgpfTthLnByb3RvdHlwZS54Qz1mdW5jdGlvbihiKXtmb3IodmFyIGQ9W10saD0xO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZFtoLTFdPWFyZ3VtZW50c1toXTsrK3RoaXMuVmc7dGhpcy5wRS5hcHBseSh0aGlzLFxuW2JdLmNvbmNhdChkKSk7dGhpcy5GZHx8Yi5qYygpLkpmfHx0aGlzLk5BKGIpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5OQT1mdW5jdGlvbihiKXt2YXIgZD10aGlzLGg7Yi5DdCh7TU06KGg9e30saC5jbG9zZXN0YXJ0PWZ1bmN0aW9uKCl7ZC5GZD1udWxsfSxoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZC5GZD1udWxsfSk7dGhpcy5GZD1ifTthLnByb3RvdHlwZS5BQz1mdW5jdGlvbigpe3RoaXMuekUoKTswPT09dGhpcy5WZyYmdGhpcy5acigpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5acj1mdW5jdGlvbigpe3RoaXMueHUoKT8odGhpcy5Pci5sb2FkKCksdGhpcy52RSgpKTplLmRlZmF1bHQubG9nKFwiTm8gcGFzc2JhY2sgdGFnIGNvbmZpZ3VyZWQgYnkgcHVibGlzaGVyLlwiKX07YS5wcm90b3R5cGUucEU9ZnVuY3Rpb24oKXtmb3IodmFyIGI9W10sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspYltkXT1hcmd1bWVudHNbZF07dGhpcy5mLmFwcGx5KHRoaXMsW1wiZW50cnlmaWxsXCJdLmNvbmNhdChiKSk7XG5yZXR1cm4gdGhpc307YS5wcm90b3R5cGUuV2w9ZnVuY3Rpb24oKXt0aGlzLmYoXCJ3YXRlcmZhbGxzdGFydFwiLHRoaXMuZWMpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS56RT1mdW5jdGlvbigpe3RoaXMuZihcIndhdGVyZmFsbGZpbmlzaFwiKX07YS5wcm90b3R5cGUubkU9ZnVuY3Rpb24oKXt0aGlzLmYoXCJhZGJsb2NrXCIpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS52RT1mdW5jdGlvbigpe2UuZGVmYXVsdC5sb2coXCJQYXNzaW5nIGNvbnRyb2wgYmFjayB0byBwdWJsaXNoZXIuXCIpO3RoaXMuZihcInBhc3NiYWNrXCIpfTtyZXR1cm4gYX0oZygxNDgpLmRlZmF1bHQpO0guUVA9Zzt0LmRlZmF1bHQ9Z30sezE0ODoxNDgsMjUwOjI1MCwzOjN9XSw0ODpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMud2F8fGZ1bmN0aW9uKGEsYixkLGgpe3JldHVybiBuZXcgKGR8fChkPVByb21pc2UpKShmdW5jdGlvbihrLGwpe2Z1bmN0aW9uIG0ocSl7dHJ5e3IoaC5uZXh0KHEpKX1jYXRjaCh1KXtsKHUpfX1cbmZ1bmN0aW9uIG4ocSl7dHJ5e3IoaFtcInRocm93XCJdKHEpKX1jYXRjaCh1KXtsKHUpfX1mdW5jdGlvbiByKHEpe3EuZG9uZT9rKHEudmFsdWUpOihuZXcgZChmdW5jdGlvbih1KXt1KHEudmFsdWUpfSkpLnRoZW4obSxuKX1yKChoPWguYXBwbHkoYSxifHxbXSkpLm5leHQoKSl9KX0scD10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQocSl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBoKFtxLHVdKX19ZnVuY3Rpb24gaChxKXtpZihsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7azspdHJ5e2lmKGw9MSxtJiYobj1xWzBdJjI/bVtcInJldHVyblwiXTpxWzBdP21bXCJ0aHJvd1wiXXx8KChuPW1bXCJyZXR1cm5cIl0pJiZuLmNhbGwobSksMCk6bS5uZXh0KSYmIShuPW4uY2FsbChtLHFbMV0pKS5kb25lKXJldHVybiBuO2lmKG09MCxuKXE9W3FbMF0mMixuLnZhbHVlXTtzd2l0Y2gocVswXSl7Y2FzZSAwOmNhc2UgMTpuPVxucTticmVhaztjYXNlIDQ6cmV0dXJuIGsubGFiZWwrKyx7dmFsdWU6cVsxXSxkb25lOiExfTtjYXNlIDU6ay5sYWJlbCsrO209cVsxXTtxPVswXTtjb250aW51ZTtjYXNlIDc6cT1rLmwucG9wKCk7ay5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShuPWsuaSxuPTA8bi5sZW5ndGgmJm5bbi5sZW5ndGgtMV0pJiYoNj09PXFbMF18fDI9PT1xWzBdKSl7az0wO2NvbnRpbnVlfWlmKDM9PT1xWzBdJiYoIW58fHFbMV0+blswXSYmcVsxXTxuWzNdKSlrLmxhYmVsPXFbMV07ZWxzZSBpZig2PT09cVswXSYmay5sYWJlbDxuWzFdKWsubGFiZWw9blsxXSxuPXE7ZWxzZSBpZihuJiZrLmxhYmVsPG5bMl0pay5sYWJlbD1uWzJdLGsubC5wdXNoKHEpO2Vsc2V7blsyXSYmay5sLnBvcCgpO2suaS5wb3AoKTtjb250aW51ZX19cT1iLmNhbGwoYSxrKX1jYXRjaCh1KXtxPVs2LHVdLG09MH1maW5hbGx5e2w9bj0wfWlmKHFbMF0mNSl0aHJvdyBxWzFdO3JldHVybnt2YWx1ZTpxWzBdP3FbMV06dm9pZCAwLFxuZG9uZTohMH19dmFyIGs9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKG5bMF0mMSl0aHJvdyBuWzFdO3JldHVybiBuWzFdfSxpOltdLGw6W119LGwsbSxuLHI7cmV0dXJuIHI9e25leHQ6ZCgwKSxcInRocm93XCI6ZCgxKSxcInJldHVyblwiOmQoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihyW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBlPWcoNTApLGY9Zyg0NCksYz1nKDI1MCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixkKXt0aGlzLlRnPWIuZG9jdW1lbnQ7dGhpcy5oZD1iLlV2O3RoaXMuJGc9Yi5sbzt0aGlzLmE9ZDt0aGlzLldjPXRoaXMuSWQ9bnVsbDt0aGlzLkhkPXttb2RlOm51bGwsRWs6bnVsbH07dGhpcy5rcT1udWxsfWEucHJvdG90eXBlLlhuPWZ1bmN0aW9uKGIsZCl7dGhpcy5DeigpKHRoaXMuSWQsYixkKX07YS5wcm90b3R5cGUuYnQ9XG5mdW5jdGlvbigpe3JldHVybiB2KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBwKHRoaXMsZnVuY3Rpb24oYil7c3dpdGNoKGIubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5aRigpLFs0LHRoaXMuVkYoKV07Y2FzZSAxOnJldHVybiBiLm0oKSxjLmRlZmF1bHQubG9nKFwiTWF0Y2hpbmcgdGFyZ2V0IGVsZW1lbnQ6XCIsdGhpcy5JZD90aGlzLlRxKHRoaXMuSWQpOlwibm9uZVwiKSx0aGlzLlNGKCkuVEYoKS5VRigpLHRoaXMuTEMoKSxbMix0aGlzXX19KX0pfTthLnByb3RvdHlwZS5HdT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuV2M7cmV0dXJuISghYnx8XCJCT0RZXCIhPT1iLm5vZGVOYW1lKX07YS5wcm90b3R5cGUuTEM9ZnVuY3Rpb24oKXt0aGlzLiRnJiZ0aGlzLkhkLkVrJiYhdGhpcy5oZC5rZWVwTG9hZGVySWZyYW1lJiZ0aGlzLiRnLiRMKCl9O2EucHJvdG90eXBlLlNGPWZ1bmN0aW9uKCl7dGhpcy5IZC5tb2RlPXRoaXMuRXooKXx8ZS5kZWZhdWx0LnZpO2MuZGVmYXVsdC5sb2coXCJJbnNlcnRpb24gTW9kZTogXCIrXG50aGlzLkhkLm1vZGUpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5Fej1mdW5jdGlvbigpe2lmKCF0aGlzLkpDKCkpcmV0dXJuIGMuZGVmYXVsdC5sb2coXCJJbnNlcnRpb24gTW9kZTogbm90IHNwZWNpZmllZFwiKSxudWxsO3ZhciBiPXRoaXMuaGQubG9jYXRpb24uaW5zZXJ0aW9uQXQ7cmV0dXJuIGI9PT1lLmRlZmF1bHQudmkmJnRoaXMuSWQmJnRoaXMuc0QoKT8oYy5kZWZhdWx0LmxvZyhcIkluc2VydGlvbiBNb2RlOlwiLFwiTWF0Y2hpbmcgc2VsZWN0b3IgdGFyZ2V0IGVsZW1lbnQgZG9lc24ndCBhY2NlcHQgbmVzdGVkIGVsZW1lbnRzXCIpLGUuZGVmYXVsdC5zcCk6dGhpcy5xRChiKT9iOm51bGx9O2EucHJvdG90eXBlLnFEPWZ1bmN0aW9uKGIpe3ZhciBkPWMuZGVmYXVsdC5HTChlLmRlZmF1bHQpO3JldHVybiBjLmRlZmF1bHQuY2EoZCxiKX07YS5wcm90b3R5cGUuVkY9ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYixkLGg7cmV0dXJuIHAodGhpcyxcbmZ1bmN0aW9uKGspe3N3aXRjaChrLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGI9dGhpcy5hLHRoaXMuSGQuRWs/WzQsdGhpcy5LRSgpXTpbMywyXTtjYXNlIDE6cmV0dXJuIGg9ay5tKCksWzMsM107Y2FzZSAyOmg9dGhpcy5UZy5ib2R5LGsubGFiZWw9MztjYXNlIDM6cmV0dXJuIGQ9aCxkfHx0aGlzLmNyKCl8fChjLmRlZmF1bHQubG9nKFwiTWF0Y2hpbmcgc2VsZWN0b3IgdGFyZ2V0IGVsZW1lbnQgbm90IGZvdW5kLFwiLFwic2VhcmNoaW5nIGZvciBhIGRlZmF1bHQgdGFyZ2V0IGVsZW1lbnRcIiksZD1iLnl0LmZpbmQodGhpcy4kZy5QZixiLmIpKSx0aGlzLklkPWQsWzIsdGhpc119fSl9KX07YS5wcm90b3R5cGUuS0U9ZnVuY3Rpb24oKXt2YXIgYj10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkKXtmdW5jdGlvbiBoKCl7cmV0dXJuIGIuVGcucXVlcnlTZWxlY3RvcihiLkhkLkVrKX1iLmEueGIucWsoYi5UZy5kZWZhdWx0VmlldyxmdW5jdGlvbigpe3RyeXt2YXIgaz1oKCk7ZChrKX1jYXRjaChsKXtkKG51bGwpfX0pO1xudHJ5e2IuYS5kYS5maSh7TGo6aCxjZzpkLG9wdGlvbnM6e3RpbWVvdXQ6MUU0LFJ2OmR9fSl9Y2F0Y2goayl7Yy5kZWZhdWx0LmxvZyhcIkludmFsaWQgTG9jYXRpb24gU2VsZWN0b3JcIiksZChudWxsKX19KX07YS5wcm90b3R5cGUuc0Q9ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0LmNhKGYuZGVmYXVsdCx0aGlzLklkLnRhZ05hbWUpfTthLnByb3RvdHlwZS5URj1mdW5jdGlvbigpe3ZhciBiPXRoaXMuSWQ7aWYoIWIpcmV0dXJuIHRoaXM7dGhpcy5XYz10aGlzLnBEKCk/Yjp0aGlzLklkLnBhcmVudEVsZW1lbnQ7dGhpcy5XYy5zZXRBdHRyaWJ1dGUoXCJ0eW50LWRhdGFcIixcInRhcmdldFwiKTtjLmRlZmF1bHQubG9nKFwiSW5zZXJ0aW9uIHRhcmdldCBlbGVtZW50OlwiLHRoaXMuVHEodGhpcy5XYykpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5VRj1mdW5jdGlvbigpe3ZhciBiPXRoaXMuV2M7dGhpcy5rcT1iP3RoaXMuYS5iLm9iKGIpOnt9fTthLnByb3RvdHlwZS5wRD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkhkLm1vZGU9PT1cbmUuZGVmYXVsdC52aX07YS5wcm90b3R5cGUuWkY9ZnVuY3Rpb24oKXt2YXIgYj1udWxsO3RoaXMuY3IoKT9iPXRoaXMuaGQubG9jYXRpb24uc2VsZWN0b3I6dGhpcy5oZC50YXJnZXRJZCYmKGI9XCIjXCIrdGhpcy5oZC50YXJnZXRJZCk7dGhpcy5IZC5Faz1ifTthLnByb3RvdHlwZS5jcj1mdW5jdGlvbigpe3JldHVybiEoIXRoaXMuaGQubG9jYXRpb258fCF0aGlzLmhkLmxvY2F0aW9uLnNlbGVjdG9yKX07YS5wcm90b3R5cGUuSkM9ZnVuY3Rpb24oKXtyZXR1cm4hKCF0aGlzLmhkLmxvY2F0aW9ufHwhdGhpcy5oZC5sb2NhdGlvbi5pbnNlcnRpb25BdCl9O2EucHJvdG90eXBlLkN6PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxkO3JldHVybihkPXt9LGRbZS5kZWZhdWx0LnZpXT1mdW5jdGlvbigpe2Zvcih2YXIgaD1bXSxrPTA7azxhcmd1bWVudHMubGVuZ3RoO2srKyloW2tdPWFyZ3VtZW50c1trXTtyZXR1cm4gYi5iRC5hcHBseShiLGgpfSxkW2UuZGVmYXVsdC5zcF09ZnVuY3Rpb24oKXtmb3IodmFyIGg9XG5bXSxrPTA7azxhcmd1bWVudHMubGVuZ3RoO2srKyloW2tdPWFyZ3VtZW50c1trXTtyZXR1cm4gYi5hRC5hcHBseShiLGgpfSxkW2UuZGVmYXVsdC5zd109ZnVuY3Rpb24oKXtmb3IodmFyIGg9W10saz0wO2s8YXJndW1lbnRzLmxlbmd0aDtrKyspaFtrXT1hcmd1bWVudHNba107cmV0dXJuIGIuJEMuYXBwbHkoYixoKX0sZClbdGhpcy5IZC5tb2RlXX07YS5wcm90b3R5cGUuYkQ9ZnVuY3Rpb24oYixkLGgpe3ZhciBrPXRoaXMuYS5iO2lmKHRoaXMuR3UoKSlyZXR1cm4gay53byhiLGQsaCksdGhpcztrLkVIKGIsZCxoKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuYUQ9ZnVuY3Rpb24oYixkLGgpe3RoaXMuYS5iLmxNKGIsZCxoKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuJEM9ZnVuY3Rpb24oYixkLGgpe3ZhciBrPXRoaXMuYS5iLGw7ZG8gYj0obD1iLm5leHRFbGVtZW50U2libGluZykmJnRoaXMuYS5iLk5MKGwsXCJ0eW50LXZpZXdhYmlsaXR5XCIpP2w6Yjt3aGlsZShiPT09bCk7ay5DdShiLFxuZCxoKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuVHE9ZnVuY3Rpb24oYil7cmV0dXJuIGI/dGhpcy5hLmIuQmgoYik6XCJcIn07cmV0dXJuIGF9KCk7dC5kZWZhdWx0PUguU1A9Z30sezI1MDoyNTAsNDQ6NDQsNTA6NTB9XSw0OTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoNDgpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUsZil7dGhpcy5NQz1lO3RoaXMuYT1mfXAucHJvdG90eXBlLnJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2LmRlZmF1bHQodGhpcy5NQyx0aGlzLmEpfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9Z30sezQ4OjQ4fV0sNTA6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9SC5BUz17dmk6XCJpbnNpZGVcIixzcDpcImJlZm9yZVwiLHN3OlwiYWZ0ZXJcIn19LHt9XSw1MTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFxuXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9W1wiaW1wcmVzc2lvblwiLFwicGFzc2JhY2tcIl07Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoZSl7dGhpcy5qYT1lLkZiO3RoaXMuVD1udWxsO3RoaXMuS2I9e319cC5wcm90b3R5cGUuT2g9ZnVuY3Rpb24oZSl7dGhpcy5UPWU7dGhpcy4kRigpO3RoaXMuVC5mYSh0aGlzLktiKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuVC5PYSh0aGlzLktiKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuJEY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3YuZm9yRWFjaChmdW5jdGlvbihmKXtlLktiW2ZdPWZ1bmN0aW9uKCl7ZS5qYS5mKGYpfX0pfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9SC5VUD1nfSx7fV0sNTI6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdihwLGUpe3RoaXMuVD1wO3RoaXMuTnE9ZS5zS31cbnYucHJvdG90eXBlLlFhPWZ1bmN0aW9uKHApe3ZhciBlPXRoaXM7dGhpcy5OcS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuV3MoZS5UKS5LdihwKX0pO3RoaXMuVC5QYShwKTtyZXR1cm4gdGhpc307di5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuTnEuZm9yRWFjaChmdW5jdGlvbihwKXtyZXR1cm4gcC5qKCl9KTtyZXR1cm4gdGhpc307cmV0dXJuIHZ9KCk7SC5WUD1nO3QuZGVmYXVsdD1nfSx7fV0sNTM6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmKGFbZF09YltkXSl9O3JldHVybiBmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoKXt0aGlzLmNvbnN0cnVjdG9yPWF9YyhhLGIpO2EucHJvdG90eXBlPVxubnVsbD09PWI/T2JqZWN0LmNyZWF0ZShiKTooZC5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IGQpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDU5KSxlPWcoMjUwKSxmPVtdO2c9ZnVuY3Rpb24oYyl7ZnVuY3Rpb24gYShiKXt2YXIgZD1jLmNhbGwodGhpcyl8fHRoaXM7ZC5CYT1lLmRlZmF1bHQucmMoYi5zaXplKTtyZXR1cm4gZH12KGEsYyk7YS5IPWZ1bmN0aW9uKCl7cmV0dXJuIGZ9O2EucHJvdG90eXBlLlM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07YS5wcm90b3R5cGUuSm49ZnVuY3Rpb24oKXtyZXR1cm4gcC5kZWZhdWx0LlZrfTthLnByb3RvdHlwZS5PYz1mdW5jdGlvbigpe3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5sdj1mdW5jdGlvbigpe307YS5wcm90b3R5cGUuV2I9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlLkloPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2EucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLkooKTtcbnJldHVybiB0aGlzfTtyZXR1cm4gYX0oZygxNDgpLmRlZmF1bHQpO0gudVI9Zzt0LmRlZmF1bHQ9Z30sezE0ODoxNDgsMjUwOjI1MCw1OTo1OX1dLDU0OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBjPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWJ9fHxmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCBpbiBiKWIuaGFzT3duUHJvcGVydHkoZCkmJihhW2RdPWJbZF0pfTtyZXR1cm4gZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKCl7dGhpcy5jb25zdHJ1Y3Rvcj1hfWMoYSxiKTthLnByb3RvdHlwZT1udWxsPT09Yj9PYmplY3QuY3JlYXRlKGIpOihkLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgZCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoNTkpO3k9ZygxNDgpO3ZhciBlPWcoNTYpLFxuZj1bXCJ2aWV3YWJsZVwiLFwibm90dmlld2FibGVcIl07Zz1mdW5jdGlvbihjKXtmdW5jdGlvbiBhKGIsZCl7dmFyIGg9Yy5jYWxsKHRoaXMpfHx0aGlzO2guQmE9bmV3IGUuZGVmYXVsdDtoLlFiPWIuZWk7aC5hPWQ7cmV0dXJuIGh9dihhLGMpO2EuSD1mdW5jdGlvbigpe3JldHVybiBmfTthLnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQmEuUygpfTthLnByb3RvdHlwZS5Kbj1mdW5jdGlvbigpe3JldHVybiBwLmRlZmF1bHQuVXd9O2EucHJvdG90eXBlLk9jPWZ1bmN0aW9uKGIpe3RoaXMuQmE9dGhpcy5CYS5LdChiKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUubHY9ZnVuY3Rpb24oKXt0aGlzLlFiLmRpc2Nvbm5lY3QoKS5PYyh0aGlzLlMoKSkuTmEoXCJ2aWV3YWJsZVwiLHRoaXMpLk5hKFwibm90dmlld2FibGVcIix0aGlzKS5vYnNlcnZlKCl9O2EucHJvdG90eXBlLldiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUWIuV2IoKX07YS5wcm90b3R5cGUuSWg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYS5LdSgpfTtcbmEucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLkooKTt0aGlzLlFiJiZ0aGlzLlFiLmRpc2Nvbm5lY3QoKTtyZXR1cm4gdGhpc307cmV0dXJuIGF9KHkuZGVmYXVsdCk7SC5MUj1nO3QuZGVmYXVsdD1nfSx7MTQ4OjE0OCw1Njo1Niw1OTo1OX1dLDU1OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYocCl7dGhpcy5CYT1wfXYucHJvdG90eXBlLlM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYX07di5wcm90b3R5cGUuS3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307di5wcm90b3R5cGUuS3U9ZnVuY3Rpb24oKXtyZXR1cm4hMH07cmV0dXJuIHZ9KCk7dC5kZWZhdWx0PUguclI9Z30se31dLDU2OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9Zyg1NSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoKXt9XG5wLnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7cmV0dXJue3dpZHRoOjEsaGVpZ2h0OjF9fTtwLnByb3RvdHlwZS5LdD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHYuZGVmYXVsdChlKX07cC5wcm90b3R5cGUuS3U9ZnVuY3Rpb24oKXtyZXR1cm4hMX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PUgudlI9Z30sezU1OjU1fV0sNTc6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDU0KSxwPWcoNTMpLGU9ZygyMTgpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGMsYSl7dGhpcy5hPWE7dGhpcy5CYT1jLnNpemU7dGhpcy5XeD1jLlFzfWYucHJvdG90eXBlLm10PWZ1bmN0aW9uKGMsYSl7dmFyIGI9dGhpcy5QQihjKTtpZihiKXJldHVybiBiLmNhbGwodGhpcyxhKTt0aHJvdyBFcnJvcihcIkFkU2xvdENvbnRhaW5lcjogSW52YWxpZCBwcm9kdWN0IG5hbWU6IFwiK2MpO307Zi5wcm90b3R5cGUuako9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdCgpfTtcbmYucHJvdG90eXBlLnFKPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLnB0KHtlaTp0aGlzLndBKGMpfSx7Yjp0aGlzLmEuYn0pfTtmLnByb3RvdHlwZS5wdD1mdW5jdGlvbihjLGEpe3ZvaWQgMD09PWMmJihjPXt9KTt2b2lkIDA9PT1hJiYoYT17fSk7cmV0dXJuIG5ldyB2LmRlZmF1bHQoYyxhKX07Zi5wcm90b3R5cGUuaUo9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAuZGVmYXVsdCh7c2l6ZTp0aGlzLkJhfSl9O2YucHJvdG90eXBlLlBCPWZ1bmN0aW9uKGMpe3ZhciBhO3JldHVybihhPXt9LGFbZS5kZWZhdWx0LmthXT10aGlzLmpKLGFbZS5kZWZhdWx0LlJhXT10aGlzLmlKLGFbZS5kZWZhdWx0LnBhXT10aGlzLnFKLGEpW2NdfTtmLnByb3RvdHlwZS53QT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5XeC5OaihjLHtWczp7c2l6ZTp0aGlzLkJhfX0pfTtyZXR1cm4gZn0oKTt0LmRlZmF1bHQ9SC5SUD1nfSx7MjE4OjIxOCw1Mzo1Myw1NDo1NH1dLDU4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXG5cIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9SC5WUT17ZmluZDpmdW5jdGlvbih2LHApe2Rve3Y9di5wYXJlbnRFbGVtZW50O3ZhciBlPXAubWModil9d2hpbGUoMT49ZSYmXCJCT0RZXCIhPT12Lm5vZGVOYW1lKTtyZXR1cm4gdn19fSx7fV0sNTk6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPXtVdzpcIm11bHRpXCIsVms6XCJmaXhlZFwifTt0LmRlZmF1bHQ9ZztILnlTPWd9LHt9XSw2MDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoNjEpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKCl7fXAucHJvdG90eXBlLnBKPWZ1bmN0aW9uKGUsZil7cmV0dXJuIG5ldyB2LmRlZmF1bHQuQXAoZSxmKX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PUguTlM9Z30sezYxOjYxfV0sNjE6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZcbnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgZj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxhKXtjLl9fcHJvdG9fXz1hfXx8ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoY1tiXT1hW2JdKX07cmV0dXJuIGZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDI1MCksZT1bXCJjYWxjdWxhdGVcIl07Zz1mdW5jdGlvbihmKXtmdW5jdGlvbiBjKGEsYil7dmFyIGQ9Zi5jYWxsKHRoaXMpfHx0aGlzO2QuJGEoYy5IKCkpO2QuamE9YTtkLmE9YjtyZXR1cm4gZH12KGMsZik7Yy5IPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O1xuYy5wcm90b3R5cGUuJHM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLllHKCk7aWYobnVsbCE9PWEpcmV0dXJuIHAuZGVmYXVsdC5sb2coXCJDYW5ub3QgZGV0ZXJtaW5lIHZpZXdhYmlsaXR5OlwiLGEpLHRoaXMuRHIoXCJubVwiKSxcIm5tXCI7YT10aGlzLmZ6KCk7dGhpcy5EcihhKTtyZXR1cm4gYX07Yy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuSigpO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5mej1mdW5jdGlvbigpe3ZhciBhPXRoaXMuamEubmcoKTthPU1hdGgucm91bmQodGhpcy5hLmIuRW4oYSkpO3JldHVyblwidmlzaWJsZVwiPT09dGhpcy5hLnZpZXdwb3J0LmhrKCk/YTowfTtjLnByb3RvdHlwZS5ZRz1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5qYS4kKCksZD1be1pvOmZ1bmN0aW9uKCl7cmV0dXJuIGEuamEuVmooKX0sZXJyb3JNZXNzYWdlOlwiTm8gSW5QYWdlIElGUkFNRSBJRFwifSx7Wm86ZnVuY3Rpb24oKXtyZXR1cm4gSC5YZShiKT09PXRvcH0sZXJyb3JNZXNzYWdlOlwiTm8gYWNjZXNzIHRvIHRvcFwifSxcbntabzpmdW5jdGlvbigpe3JldHVybiBhLmphLm5nKCl9LGVycm9yTWVzc2FnZTpcIlNsb3QgSUZSQU1FIG5vdCBmb3VuZFwifV0saD0wO2g8ZC5sZW5ndGg7KytoKWlmKCFkW2hdLlpvKCkpcmV0dXJuIGRbaF0uZXJyb3JNZXNzYWdlO3JldHVybiBudWxsfTtjLnByb3RvdHlwZS5Ecj1mdW5jdGlvbihhKXt0aGlzLmYoXCJjYWxjdWxhdGVcIixhKX07cmV0dXJuIGN9KGcoMTQ4KS5kZWZhdWx0KTt5PXtJUzpcIm5tXCJ9O3QuZGVmYXVsdD17QXA6Zyx2eDp5fTtILkdSPXtBcDpnLHZ4Onl9fSx7MTQ4OjE0OCwyNTA6MjUwfV0sNjI6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIHA9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsZil7ZS5fX3Byb3RvX189Zn18fGZ1bmN0aW9uKGUsZil7Zm9yKHZhciBjIGluIGYpZi5oYXNPd25Qcm9wZXJ0eShjKSYmKGVbY109ZltjXSl9O3JldHVybiBmdW5jdGlvbihlLFxuZil7ZnVuY3Rpb24gYygpe3RoaXMuY29uc3RydWN0b3I9ZX1wKGUsZik7ZS5wcm90b3R5cGU9bnVsbD09PWY/T2JqZWN0LmNyZWF0ZShmKTooYy5wcm90b3R5cGU9Zi5wcm90b3R5cGUsbmV3IGMpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPWZ1bmN0aW9uKHApe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXAmJnAuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXYoZSxwKTtlLnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLk9jPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2UucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307ZS5wcm90b3R5cGUuV2I9ZnVuY3Rpb24oKXtyZXR1cm4hMX07cmV0dXJuIGV9KGcoMTQ4KS5kZWZhdWx0KTt0LmRlZmF1bHQ9SC5uUj1nfSx7MTQ4OjE0OH1dLDYzOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXG5cIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDY1KSxwPWcoNjQpLGU9Zyg2Mik7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoKXt9Zi5wcm90b3R5cGUuVGU9ZnVuY3Rpb24oYyxhKXtyZXR1cm4gbmV3IHYuZGVmYXVsdChjLGEpfTtmLnByb3RvdHlwZS5LST1mdW5jdGlvbihjKXtyZXR1cm4gYy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9O2YucHJvdG90eXBlLk5qPWZ1bmN0aW9uKGMsYSl7cmV0dXJuIG5ldyBwLmRlZmF1bHQoYyxhKX07Zi5wcm90b3R5cGUuZUo9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGUuZGVmYXVsdH07cmV0dXJuIGZ9KCk7dC5kZWZhdWx0PUguUFM9Z30sezYyOjYyLDY0OjY0LDY1OjY1fV0sNjQ6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGYsYyl7Zi5fX3Byb3RvX189XG5jfXx8ZnVuY3Rpb24oZixjKXtmb3IodmFyIGEgaW4gYyljLmhhc093blByb3BlcnR5KGEpJiYoZlthXT1jW2FdKX07cmV0dXJuIGZ1bmN0aW9uKGYsYyl7ZnVuY3Rpb24gYSgpe3RoaXMuY29uc3RydWN0b3I9Zn1lKGYsYyk7Zi5wcm90b3R5cGU9bnVsbD09PWM/T2JqZWN0LmNyZWF0ZShjKTooYS5wcm90b3R5cGU9Yy5wcm90b3R5cGUsbmV3IGEpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1bXCJ2aWV3YWJsZVwiLFwibm90dmlld2FibGVcIl07Zz1mdW5jdGlvbihlKXtmdW5jdGlvbiBmKGMsYSl7dmFyIGI9Yy5laSxkPWMuc2l6ZTtkPXZvaWQgMD09PWQ/e3dpZHRoOjAsaGVpZ2h0OjB9OmQ7dmFyIGg9Yy5sZDtjPWMuS0g7dmFyIGs9ZS5jYWxsKHRoaXMpfHx0aGlzO2suUWI9YjtrLkJhPWQ7ay5hPWE7ay4keD1oO2subWw9YztyZXR1cm4ga312KGYsZSk7Zi5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbigpe3RoaXMuWEMoKTtcbnRoaXMuUWIuTmEoXCJ2aWV3YWJsZVwiLHRoaXMpLk5hKFwibm90dmlld2FibGVcIix0aGlzKTt0aGlzLlFiLm9ic2VydmUoKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuT2M9ZnVuY3Rpb24oYyl7dGhpcy5CYT1jO3RoaXMucHEoKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuUWIuZGlzY29ubmVjdCgpO3RoaXMuYS5iLnJlbW92ZSh0aGlzLm1sKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuV2I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5RYi5XYigpfTtmLnByb3RvdHlwZS5YQz1mdW5jdGlvbigpe3RoaXMucHEoKTt0aGlzLmEuYi5hcHBlbmQodGhpcy4keCx0aGlzLm1sKX07Zi5wcm90b3R5cGUucHE9ZnVuY3Rpb24oKXt0aGlzLmEuYi5vYSh0aGlzLm1sLHt3aWR0aDp0aGlzLkJhLndpZHRoK1wicHhcIixoZWlnaHQ6dGhpcy5CYS5oZWlnaHQrXCJweFwiLGxlZnQ6XCI1MCVcIixtYXJnaW46XCIwIDAgMCAtXCIrTWF0aC5mbG9vcih0aGlzLkJhLndpZHRoL1xuMikrXCJweFwifSl9O2YuSD1mdW5jdGlvbigpe3JldHVybiBwfTtyZXR1cm4gZn0oZygxNDgpLmRlZmF1bHQpO3QuZGVmYXVsdD1ILk1TPWd9LHsxNDg6MTQ4fV0sNjU6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGYsYyl7Zi5fX3Byb3RvX189Y318fGZ1bmN0aW9uKGYsYyl7Zm9yKHZhciBhIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShhKSYmKGZbYV09Y1thXSl9O3JldHVybiBmdW5jdGlvbihmLGMpe2Z1bmN0aW9uIGEoKXt0aGlzLmNvbnN0cnVjdG9yPWZ9ZShmLGMpO2YucHJvdG90eXBlPW51bGw9PT1jP09iamVjdC5jcmVhdGUoYyk6KGEucHJvdG90eXBlPWMucHJvdG90eXBlLG5ldyBhKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDEzOCk7Zz1nKDE0OCk7dmFyIHA9XG5beS5kZWZhdWx0LnRjLHkuZGVmYXVsdC5CZCx5LmRlZmF1bHQuVGMseS5kZWZhdWx0LklnXTtnPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoYyxhKXt2YXIgYj1lLmNhbGwodGhpcyl8fHRoaXM7Yi5IYT1jLmVsZW1lbnQ7Yi5Hcz0hMTtiLnJqPWMua2U7Yi5xaj17fTtiLmE9YTtyZXR1cm4gYn12KGYsZSk7Zi5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbigpe3RoaXMuRXMoKTt0aGlzLnV5KCk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLnNGKCk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLldiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR3N9O2YucHJvdG90eXBlLnlFPWZ1bmN0aW9uKCl7dGhpcy5mKFwidmlld2FibGVcIil9O2YucHJvdG90eXBlLnVFPWZ1bmN0aW9uKCl7dGhpcy5mKFwibm90dmlld2FibGVcIil9O2YucHJvdG90eXBlLkVzPWZ1bmN0aW9uKCl7dGhpcy5Hcz10aGlzLmEuYi5Fbih0aGlzLkhhKT49dGhpcy5yajtpZih0aGlzLldiKCkpcmV0dXJuIHRoaXMueUUoKSxcbnRoaXM7dGhpcy51RSgpO3JldHVybiB0aGlzfTtmLnByb3RvdHlwZS51eT1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoKXtyZXR1cm4gYS5FcygpfXZhciBhPXRoaXM7cC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2EucWpbYl09Y30pO3RoaXMuYS52aWV3cG9ydC5mYSh0aGlzLnFqKX07Zi5wcm90b3R5cGUuc0Y9ZnVuY3Rpb24oKXt0aGlzLmEudmlld3BvcnQuT2EodGhpcy5xaik7dGhpcy5xaj17fX07cmV0dXJuIGZ9KGcuZGVmYXVsdCk7dC5kZWZhdWx0PUguT1M9Z30sezEzODoxMzgsMTQ4OjE0OH1dLDY2OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihmKXtmb3IodmFyIGMsYT0xLGI9YXJndW1lbnRzLmxlbmd0aDthPGI7YSsrKXtjPWFyZ3VtZW50c1thXTtmb3IodmFyIGQgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxkKSYmKGZbZF09Y1tkXSl9cmV0dXJuIGZ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFxuXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygyNTApLGU9ZygyMTgpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGMpe3ZhciBhPWMuYXcsYj1jLiR2LGQ9Yy5rZSxoPWMuWUw7dGhpcy5qYT1jLkZiO3RoaXMucmo9ZDt0aGlzLmE9aDt0aGlzLmtoPWE7dGhpcy5aRz1ifWYucHJvdG90eXBlLlNJPWZ1bmN0aW9uKGMpe3ZhciBhLGI9KGE9e30sYVtlLmRlZmF1bHQua2FdPXRoaXMuckEsYVtlLmRlZmF1bHQuUmFdPXRoaXMucUEsYVtlLmRlZmF1bHQucGFdPXRoaXMucEEsYSk7aWYoYltjXSlyZXR1cm4gYltjXS5jYWxsKHRoaXMpO3Rocm93IEVycm9yKFwiQWRTbG90Vmlld2FiaWxpdHk6IEludmFsaWQgcHJvZHVjdCBuYW1lOiBcIitjKTt9O2YucHJvdG90eXBlLlRlPWZ1bmN0aW9uKGMpe2M9cC5kZWZhdWx0LmV4dGVuZCh7a2U6dGhpcy5yan0sYyk7cmV0dXJuIHRoaXMua2guVGUoYyx0aGlzLmEpfTtmLnByb3RvdHlwZS5CST1mdW5jdGlvbihjLGEpe3ZhciBiPXRoaXMsZCxoPVxuKGQ9e30sZFtlLmRlZmF1bHQucGFdPWZ1bmN0aW9uKCl7cmV0dXJuIGIuTmooYSx7VnM6e3NpemU6e3dpZHRoOjEsaGVpZ2h0OjF9fSxmYjp7a2U6MTAwfX0pfSxkKTtyZXR1cm4gaFtjXT9oW2NdKCk6dGhpcy5sQSgpfTtmLnByb3RvdHlwZS5Oaj1mdW5jdGlvbihjLGEpe3ZhciBiPWEuZmI7YT1hLlZzO2E9dm9pZCAwPT09YT97fTphO3ZhciBkPXRoaXMua2guS0koYyk7Yj10aGlzLmtoLlRlKHYoe2VsZW1lbnQ6ZCxrZTp0aGlzLnJqfSx2b2lkIDA9PT1iP3t9OmIpLHRoaXMuYSk7cmV0dXJuIHRoaXMua2guTmoodih7ZWk6YixsZDpjLEtIOmR9LGEpLHRoaXMuYSl9O2YucHJvdG90eXBlLnJBPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2YucHJvdG90eXBlLnFBPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWkcucEoodGhpcy5qYSx0aGlzLmEpfTtmLnByb3RvdHlwZS5wQT1mdW5jdGlvbigpe3JldHVybiBudWxsfTtmLnByb3RvdHlwZS5sQT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtoLmVKKCl9O1xucmV0dXJuIGZ9KCk7dC5kZWZhdWx0PUguV1A9Z30sezIxODoyMTgsMjUwOjI1MH1dLDY3OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy53YXx8ZnVuY3Rpb24oZSxmLGMsYSl7cmV0dXJuIG5ldyAoY3x8KGM9UHJvbWlzZSkpKGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gaChtKXt0cnl7bChhLm5leHQobSkpfWNhdGNoKG4pe2Qobil9fWZ1bmN0aW9uIGsobSl7dHJ5e2woYVtcInRocm93XCJdKG0pKX1jYXRjaChuKXtkKG4pfX1mdW5jdGlvbiBsKG0pe20uZG9uZT9iKG0udmFsdWUpOihuZXcgYyhmdW5jdGlvbihuKXtuKG0udmFsdWUpfSkpLnRoZW4oaCxrKX1sKChhPWEuYXBwbHkoZSxmfHxbXSkpLm5leHQoKSl9KX0scD10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihlLGYpe2Z1bmN0aW9uIGMobSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBhKFttLG5dKX19ZnVuY3Rpb24gYShtKXtpZihkKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuZm9yKDtiOyl0cnl7aWYoZD0xLGgmJihrPW1bMF0mMj9oW1wicmV0dXJuXCJdOm1bMF0/aFtcInRocm93XCJdfHwoKGs9aFtcInJldHVyblwiXSkmJmsuY2FsbChoKSwwKTpoLm5leHQpJiYhKGs9ay5jYWxsKGgsbVsxXSkpLmRvbmUpcmV0dXJuIGs7aWYoaD0wLGspbT1bbVswXSYyLGsudmFsdWVdO3N3aXRjaChtWzBdKXtjYXNlIDA6Y2FzZSAxOms9bTticmVhaztjYXNlIDQ6cmV0dXJuIGIubGFiZWwrKyx7dmFsdWU6bVsxXSxkb25lOiExfTtjYXNlIDU6Yi5sYWJlbCsrO2g9bVsxXTttPVswXTtjb250aW51ZTtjYXNlIDc6bT1iLmwucG9wKCk7Yi5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShrPWIuaSxrPTA8ay5sZW5ndGgmJmtbay5sZW5ndGgtMV0pJiYoNj09PW1bMF18fDI9PT1tWzBdKSl7Yj0wO2NvbnRpbnVlfWlmKDM9PT1tWzBdJiYoIWt8fG1bMV0+a1swXSYmbVsxXTxrWzNdKSliLmxhYmVsPW1bMV07ZWxzZSBpZig2PT09bVswXSYmYi5sYWJlbDxrWzFdKWIubGFiZWw9a1sxXSxcbms9bTtlbHNlIGlmKGsmJmIubGFiZWw8a1syXSliLmxhYmVsPWtbMl0sYi5sLnB1c2gobSk7ZWxzZXtrWzJdJiZiLmwucG9wKCk7Yi5pLnBvcCgpO2NvbnRpbnVlfX1tPWYuY2FsbChlLGIpfWNhdGNoKG4pe209WzYsbl0saD0wfWZpbmFsbHl7ZD1rPTB9aWYobVswXSY1KXRocm93IG1bMV07cmV0dXJue3ZhbHVlOm1bMF0/bVsxXTp2b2lkIDAsZG9uZTohMH19dmFyIGI9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKGtbMF0mMSl0aHJvdyBrWzFdO3JldHVybiBrWzFdfSxpOltdLGw6W119LGQsaCxrLGw7cmV0dXJuIGw9e25leHQ6YygwKSxcInRocm93XCI6YygxKSxcInJldHVyblwiOmMoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihsW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGx9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGYsYyxhKXt0aGlzLktnPWY7dGhpcy5OeT1cbmM7dGhpcy5wbD1hfWUucHJvdG90eXBlLlduPWZ1bmN0aW9uKGYsYyxhKXtyZXR1cm4gdih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYj10aGlzO3JldHVybiBwKHRoaXMsZnVuY3Rpb24oZCl7c3dpdGNoKGQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLk55LmZuKGYsYyx0aGlzLnBsKS5VbShcIkFkSW5qZWN0XCIsZnVuY3Rpb24oKXtyZXR1cm4gYi5LZy5uTyhhKX0pXTtjYXNlIDE6cmV0dXJuIGQubSgpLFsyLHRoaXNdfX0pfSl9O3JldHVybiBlfSgpO3QuZGVmYXVsdD1ILmJRPWd9LHt9XSw2ODpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHAsZSl7dGhpcy5WRz1wO3RoaXMudXo9ZX12LnByb3RvdHlwZS5XSD1mdW5jdGlvbihwLGUpe3JldHVybiB0aGlzLlZHLmJpKFtwLHRoaXMudXooZSldLmpvaW4oXCItXCIpKX07cmV0dXJuIHZ9KCk7dC5kZWZhdWx0PVxuSC5ZUD1nfSx7fV0sNjk6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDY3KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlLGYpe3RoaXMuS2c9ZTt0aGlzLk15PWZ9cC5wcm90b3R5cGUuQ0k9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB2LmRlZmF1bHQodGhpcy5LZyx0aGlzLk15LGUpfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9SC5jUT1nfSx7Njc6Njd9XSw3MDpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24ocCl7Zm9yKHZhciBlLGY9MSxjPWFyZ3VtZW50cy5sZW5ndGg7ZjxjO2YrKyl7ZT1hcmd1bWVudHNbZl07Zm9yKHZhciBhIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsYSkmJihwW2FdPWVbYV0pfXJldHVybiBwfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtcbmc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUpe3RoaXMucmI9dih7fSxlKX1wLnByb3RvdHlwZS5YZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJiLnljfTtwLnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7cmV0dXJuIHYoe30sdGhpcy5yYi5zaXplKX07cC5wcm90b3R5cGUuSkw9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnJiLmNwKT90aGlzLnJiLmNwWzBdOjB9O3AucHJvdG90eXBlLiR0PWZ1bmN0aW9uKCl7cmV0dXJue3BsYXRmb3JtOnRoaXMucmIuZXhjaGFuZ2UsTmQ6dGhpcy5yYi5zaXplLFVlOnRoaXMucmIuVWV9fTtwLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7fTtyZXR1cm4gcH0oKTtILlhQPWc7dC5kZWZhdWx0PWd9LHt9XSw3MTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKTt0LmRlZmF1bHQ9SC4kUD17amU6ZnVuY3Rpb24ocCl7dmFyIGU9di5kZWZhdWx0LlBjKHYuZGVmYXVsdC5LaihwLlMoKSxcbnt3aWR0aDowLGhlaWdodDowfSkpO3A9e2V4Y2hhbmdlOnAucmIuZXhjaGFuZ2Usc2l6ZTplLGxpbmVJdGVtSWQ6di5kZWZhdWx0LktqKHAucmIuTE0sXCIwXCIpLGNyZWF0aXZlSWQ6di5kZWZhdWx0LktqKHAucmIuVWUsXCIwXCIpLHlpZWxkR3JvdXBJZDp2LmRlZmF1bHQuS2oocC5KTCgpLFwiMFwiKX07cmV0dXJuIHYuZGVmYXVsdC5DZyhcInNyYz17ZXhjaGFuZ2V9O210PWJhbm5lcjtzej17c2l6ZX07bG49e2xpbmVJdGVtSWR9O2M9e2NyZWF0aXZlSWR9O3lnPXt5aWVsZEdyb3VwSWR9XCIscCl9fX0sezI1MDoyNTB9XSw3MjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoNzApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKCl7fXAucHJvdG90eXBlLmtKPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdi5kZWZhdWx0KGUpfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9SC5hUT1nfSx7NzA6NzB9XSw3MzpbZnVuY3Rpb24oZyxcbnksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBkPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihoLGspe2guX19wcm90b19fPWt9fHxmdW5jdGlvbihoLGspe2Zvcih2YXIgbCBpbiBrKWsuaGFzT3duUHJvcGVydHkobCkmJihoW2xdPWtbbF0pfTtyZXR1cm4gZnVuY3Rpb24oaCxrKXtmdW5jdGlvbiBsKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ofWQoaCxrKTtoLnByb3RvdHlwZT1udWxsPT09az9PYmplY3QuY3JlYXRlKGspOihsLnByb3RvdHlwZT1rLnByb3RvdHlwZSxuZXcgbCl9fSgpLHA9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihkKXtmb3IodmFyIGgsaz0xLGw9YXJndW1lbnRzLmxlbmd0aDtrPGw7aysrKXtoPWFyZ3VtZW50c1trXTtmb3IodmFyIG0gaW4gaClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaCxtKSYmKGRbbV09aFttXSl9cmV0dXJuIGR9LFxuZT10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihkLGgsayxsKXtyZXR1cm4gbmV3IChrfHwoaz1Qcm9taXNlKSkoZnVuY3Rpb24obSxuKXtmdW5jdGlvbiByKHcpe3RyeXt1KGwubmV4dCh3KSl9Y2F0Y2goeCl7bih4KX19ZnVuY3Rpb24gcSh3KXt0cnl7dShsW1widGhyb3dcIl0odykpfWNhdGNoKHgpe24oeCl9fWZ1bmN0aW9uIHUodyl7dy5kb25lP20ody52YWx1ZSk6KG5ldyBrKGZ1bmN0aW9uKHgpe3gody52YWx1ZSl9KSkudGhlbihyLHEpfXUoKGw9bC5hcHBseShkLGh8fFtdKSkubmV4dCgpKX0pfSxmPXRoaXMmJnRoaXMueGF8fGZ1bmN0aW9uKGQsaCl7ZnVuY3Rpb24gayh3KXtyZXR1cm4gZnVuY3Rpb24oeCl7cmV0dXJuIGwoW3cseF0pfX1mdW5jdGlvbiBsKHcpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDttOyl0cnl7aWYobj0xLHImJihxPXdbMF0mMj9yW1wicmV0dXJuXCJdOndbMF0/cltcInRocm93XCJdfHwoKHE9XG5yW1wicmV0dXJuXCJdKSYmcS5jYWxsKHIpLDApOnIubmV4dCkmJiEocT1xLmNhbGwocix3WzFdKSkuZG9uZSlyZXR1cm4gcTtpZihyPTAscSl3PVt3WzBdJjIscS52YWx1ZV07c3dpdGNoKHdbMF0pe2Nhc2UgMDpjYXNlIDE6cT13O2JyZWFrO2Nhc2UgNDpyZXR1cm4gbS5sYWJlbCsrLHt2YWx1ZTp3WzFdLGRvbmU6ITF9O2Nhc2UgNTptLmxhYmVsKys7cj13WzFdO3c9WzBdO2NvbnRpbnVlO2Nhc2UgNzp3PW0ubC5wb3AoKTttLmkucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHE9bS5pLHE9MDxxLmxlbmd0aCYmcVtxLmxlbmd0aC0xXSkmJig2PT09d1swXXx8Mj09PXdbMF0pKXttPTA7Y29udGludWV9aWYoMz09PXdbMF0mJighcXx8d1sxXT5xWzBdJiZ3WzFdPHFbM10pKW0ubGFiZWw9d1sxXTtlbHNlIGlmKDY9PT13WzBdJiZtLmxhYmVsPHFbMV0pbS5sYWJlbD1xWzFdLHE9dztlbHNlIGlmKHEmJm0ubGFiZWw8cVsyXSltLmxhYmVsPXFbMl0sbS5sLnB1c2godyk7ZWxzZXtxWzJdJiZcbm0ubC5wb3AoKTttLmkucG9wKCk7Y29udGludWV9fXc9aC5jYWxsKGQsbSl9Y2F0Y2goeCl7dz1bNix4XSxyPTB9ZmluYWxseXtuPXE9MH1pZih3WzBdJjUpdGhyb3cgd1sxXTtyZXR1cm57dmFsdWU6d1swXT93WzFdOnZvaWQgMCxkb25lOiEwfX12YXIgbT17bGFiZWw6MCxtOmZ1bmN0aW9uKCl7aWYocVswXSYxKXRocm93IHFbMV07cmV0dXJuIHFbMV19LGk6W10sbDpbXX0sbixyLHEsdTtyZXR1cm4gdT17bmV4dDprKDApLFwidGhyb3dcIjprKDEpLFwicmV0dXJuXCI6aygyKX0sXCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmKHVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksdX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDE0OCk7dmFyIGM9ZygyNTApLGE9ZygxNDUpLllrLld3LGI9W1wiaW1wcmVzc2lvblwiLFwicmVuZGVyZWRcIixcImNsb3Nlc3RhcnRcIixcImNsb3NlZFwiLFwiZGlhZ25vc3RpY3NcIl0uY29uY2F0KGEpO1xuZz1mdW5jdGlvbihkKXtmdW5jdGlvbiBoKGssbCl7dmFyIG09ZC5jYWxsKHRoaXMpfHx0aGlzO20uJGEoaC5IKCkpO20uVXg9ay5rSDttLkpmPSExO20uYT1sO20uZHI9e307bS5BZT17VW46ay5payxSbjprLmFmLFJIOmsuRGp9O20ueWE9e2hjOmsuSSxUZDprLk1lfTtyZXR1cm4gbX12KGgsZCk7aC5IPWZ1bmN0aW9uKCl7cmV0dXJuIGJ9O2gucHJvdG90eXBlLldlPWZ1bmN0aW9uKCl7cmV0dXJuIHAoe2pIOnRoaXMuU3EoKX0sdGhpcy55YS5UZC5XZSgpKX07aC5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBrO3JldHVybiBmKHRoaXMsZnVuY3Rpb24obCl7c3dpdGNoKGwubGFiZWwpe2Nhc2UgMDp0aGlzLnlHKCkuYXkoKS5qeSgpLllBKCksbC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gbC5pLnB1c2goWzEsMywsNF0pLHRoaXMueWEuVGQubmModGhpcy55YS5oYyksdGhpcy5QdigpLFs0LHRoaXMuRkUoKV07XG5jYXNlIDI6cmV0dXJuWzIsbC5tKCldO2Nhc2UgMzp0aHJvdyBrPWwubSgpLHRoaXMuSWEoay5tZXNzYWdlKSxrO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX07aC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLnlhLlRkLmNsb3NlKCk7cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLkp2PWZ1bmN0aW9uKGspe3RoaXMuZHI9aztyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuUHY9ZnVuY3Rpb24oKXt0aGlzLkFlLlVuLnN0YXJ0KCl9O2gucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLnlhLlRkLmooKTt0aGlzLkJHKCkudXIoKS5wRigpLkooKS5tRigpO3JldHVybiB0aGlzfTtoLnByb3RvdHlwZS55Rz1mdW5jdGlvbigpe3ZhciBrPXRoaXM7dGhpcy5BZS5SSC5VbShcIkFkUmVuZGVyXCIsZnVuY3Rpb24oKXtyZXR1cm4gay5hSCgpfSk7cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLmFIPWZ1bmN0aW9uKCl7dmFyIGs9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obCl7cmV0dXJuIGsueWEuVGQub25jZShcInJlbmRlcmVkXCIsXG5sKX0pfTtoLnByb3RvdHlwZS5qeT1mdW5jdGlvbigpe3ZhciBrPXRoaXM7dGhpcy5BZS5Vbi51KFwiaW1wcmVzc2lvblwiLGZ1bmN0aW9uKCl7cmV0dXJuIGsucUUoay5kcil9KTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuYXk9ZnVuY3Rpb24oKXt2YXIgaz10aGlzO3RoaXMueWEuVGQub25jZShcImNsb3Nlc3RhcnRcIixmdW5jdGlvbigpe2Zvcih2YXIgbD1bXSxtPTA7bTxhcmd1bWVudHMubGVuZ3RoO20rKylsW21dPWFyZ3VtZW50c1ttXTtrLmYuYXBwbHkoayxbXCJjbG9zZXN0YXJ0XCJdLmNvbmNhdChsKSl9KS5vbmNlKFwiY2xvc2VkXCIsZnVuY3Rpb24oKXtmb3IodmFyIGw9W10sbT0wO208YXJndW1lbnRzLmxlbmd0aDttKyspbFttXT1hcmd1bWVudHNbbV07dmFyIG47KG49ay51cigpKS5mLmFwcGx5KG4sW1wiY2xvc2VkXCJdLmNvbmNhdChsKSl9KS5vbmNlKFwicmVuZGVyZWRcIixmdW5jdGlvbigpe2Zvcih2YXIgbD1bXSxtPTA7bTxhcmd1bWVudHMubGVuZ3RoO20rKylsW21dPWFyZ3VtZW50c1ttXTtcbmsuZi5hcHBseShrLFtcInJlbmRlcmVkXCJdLmNvbmNhdChsKSl9KTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuU3E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55YS5UZC5CKCl9O2gucHJvdG90eXBlLm1GPWZ1bmN0aW9uKCl7dGhpcy5hLmIucmVtb3ZlKHRoaXMueWEuaGMucGFyZW50Tm9kZSl9O2gucHJvdG90eXBlLkZFPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcyxmdW5jdGlvbihrKXtzd2l0Y2goay5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZUIoKV07Y2FzZSAxOnJldHVybiBrLm0oKSx0aGlzLnlhLlRkLm9wZW4oKSxbMix0aGlzXX19KX0pfTtoLnByb3RvdHlwZS5lQj1mdW5jdGlvbigpe3ZhciBrPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwpe2suYS5kYS5maSh7TGo6ZnVuY3Rpb24oKXtyZXR1cm4gay5hLm1hLnJNKGsueWEuaGMub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyl9LGNnOmZ1bmN0aW9uKCl7cmV0dXJuIGwoayl9LFxub3B0aW9uczpudWxsLGNvbnRleHQ6a30pfHxrLklhKFwiV2FpdGluZyBmb3Igc2ljLmNzcyB0byBmaW5pc2ggbG9hZGluZy4uLlwiKX0pfTtoLnByb3RvdHlwZS5ZQT1mdW5jdGlvbigpe3ZhciBrPXRoaXM7dGhpcy5BZS5Sbi5Kbyh0aGlzLlNxKCkpO2EuZm9yRWFjaChmdW5jdGlvbihsKXtrLkFlLlJuLnUobCxmdW5jdGlvbihtLG4pe3JldHVybiBrLmYobCxtLG4pfSl9KX07aC5wcm90b3R5cGUucEY9ZnVuY3Rpb24oKXt0aGlzLkFlLlJuLkooKTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUucUU9ZnVuY3Rpb24oayl7dGhpcy5mKFwiaW1wcmVzc2lvblwiLGspO3JldHVybiB0aGlzfTtoLnByb3RvdHlwZS5JYT1mdW5jdGlvbigpe2Zvcih2YXIgaz1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylrW2xdPWFyZ3VtZW50c1tsXTtjLmRlZmF1bHQubG9nLmFwcGx5KGMuZGVmYXVsdCxbdGhpcy5VeCtcIjpcIl0uY29uY2F0KGspKTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUudXI9ZnVuY3Rpb24oKXt0aGlzLkpmPVxuITA7cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLkJHPWZ1bmN0aW9uKCl7dGhpcy5BZS5Vbi5zdG9wKCk7cmV0dXJuIHRoaXN9O3JldHVybiBofSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1ILmRRPWd9LHsxNDU6MTQ1LDE0ODoxNDgsMjUwOjI1MH1dLDc0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9Zyg3NSkscD1nKDc2KSxlPWcoNzkpLGY9Zyg3OCksYz1nKDc3KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe3ZhciBoO3RoaXMuZWE9Yi5uYjt0aGlzLmE9ZDt0aGlzLlNBPShoPXt9LGhbdi5kZWZhdWx0Lm9pXT1wLmRlZmF1bHQsaFt2LmRlZmF1bHQuQmldPWUuZGVmYXVsdCxoW3YuZGVmYXVsdC54aV09Zi5kZWZhdWx0LGhbdi5kZWZhdWx0Lk5PTkVdPWMuZGVmYXVsdCxoKX1hLnByb3RvdHlwZS5sSj1mdW5jdGlvbihiLGQpe2Q9e25iOnt4Yjp0aGlzLmVhLnhiLHZhOnRoaXMuZWEudmF9LEc6ZCxcbldoOnRoaXMuZWEuV2guJEkodGhpcy5hLnZpZXdwb3J0LiQoKSl9O3JldHVybiBuZXcgdGhpcy5TQVtiXShkLHtiOnRoaXMuYS5iLHZpZXdwb3J0OnRoaXMuYS52aWV3cG9ydH0pfTtyZXR1cm4gYX0oKTt0LmRlZmF1bHQ9Z30sezc1Ojc1LDc2Ojc2LDc3Ojc3LDc4Ojc4LDc5Ojc5fV0sNzU6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9SC5nUT17b2k6XCJleHBhbnNpb25cIixCaTpcInNjcm9sbGVyXCIseGk6XCJwYXJhbGxheFwiLE5PTkU6XCJub25lXCJ9fSx7fV0sNzY6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGgsayl7aC5fX3Byb3RvX189a318fGZ1bmN0aW9uKGgsayl7Zm9yKHZhciBsIGluIGspay5oYXNPd25Qcm9wZXJ0eShsKSYmKGhbbF09XG5rW2xdKX07cmV0dXJuIGZ1bmN0aW9uKGgsayl7ZnVuY3Rpb24gbCgpe3RoaXMuY29uc3RydWN0b3I9aH1kKGgsayk7aC5wcm90b3R5cGU9bnVsbD09PWs/T2JqZWN0LmNyZWF0ZShrKToobC5wcm90b3R5cGU9ay5wcm90b3R5cGUsbmV3IGwpfX0oKTt5PXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZCl7Zm9yKHZhciBoLGs9MSxsPWFyZ3VtZW50cy5sZW5ndGg7azxsO2srKyl7aD1hcmd1bWVudHNba107Zm9yKHZhciBtIGluIGgpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgsbSkmJihkW21dPWhbbV0pfXJldHVybiBkfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDEwNSksZT1nKDc1KSxmPWcoMjUwKTtnPWcoMTQ4KTt2YXIgYz17XCItd2Via2l0LXRyYW5zaXRpb25cIjpcImhlaWdodCAxc1wiLHRyYW5zaXRpb246XCJoZWlnaHQgMXNcIn0sYT15KHtkaXNwbGF5OlwiYmxvY2tcIixtYXJnaW5MZWZ0OlwiYXV0b1wiLFxubWFyZ2luUmlnaHQ6XCJhdXRvXCIscG9zaXRpb246XCJyZWxhdGl2ZVwifSxjKSxiPVtcImVmZmVjdHN0YXJ0ZWRcIixcImVmZmVjdHN0b3BwZWRcIixcInZpZXdhYmxlYWRjb250ZW50XCJdO2c9ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gaChrLGwpe3ZhciBtPWQuY2FsbCh0aGlzKXx8dGhpczttLmE9bDttLlVnPWsubmIueGI7bS5xYT17cmQ6ay5uYi52YSxXYTpudWxsfTttLks9ay5HO20uZ2w9bnVsbDttLkY9e307cmV0dXJuIG19dihoLGQpO2gucHJvdG90eXBlLiRqPWZ1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdC5vaX07aC5wcm90b3R5cGUucmc9ZnVuY3Rpb24oayxsLG0pe3RoaXMuRi5qZD1rO3RoaXMuRi5JPWw7dGhpcy5GLnViPW07dGhpcy5nbD10aGlzLmhBKCk7dGhpcy5HZSgpO3JldHVybiB0aGlzfTtoLnByb3RvdHlwZS5laz1mdW5jdGlvbigpe3JldHVybiBwLmRlZmF1bHQub2krXCIgXCIrcC5kZWZhdWx0LnhwfTtoLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3ZhciBrPXRoaXMsbD10aGlzLksuUygpLFxubT10aGlzLmEuYi5tYyh0aGlzLkYuSSksbj1mLmRlZmF1bHQuZXh0ZW5kKGEse2hlaWdodDpsLmhlaWdodCtcInB4XCJ9KTt0aGlzLmJyKFwiZWZmZWN0c3RhcnRlZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGsud0YoKX0pO208bC53aWR0aCYmKG4ud2lkdGg9bC53aWR0aCtcInB4XCIpO3RoaXMuYS5iLnFiKHRoaXMuRi51YixwLmRlZmF1bHQueGYpLm9hKHRoaXMuRi5JLG4pLnFiKHRoaXMuRi5qZCxwLmRlZmF1bHQueHApO3RoaXMudEMoKTt0aGlzLnFhLldhLm9ic2VydmUoKTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3ZhciBrPXRoaXM7dGhpcy5icihcImVmZmVjdHN0b3BwZWRcIixmdW5jdGlvbigpe2suZ2wuSigpfSk7dGhpcy5hLmIub2EodGhpcy5GLkksZi5kZWZhdWx0LmV4dGVuZCh7aGVpZ2h0OlwiMHB4XCJ9LGMpKX07aC5wcm90b3R5cGUua2s9ZnVuY3Rpb24oKXtyZXR1cm4hMH07aC5wcm90b3R5cGUuS2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xYS5XYS5XYigpfTtcbmgucHJvdG90eXBlLkprPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2gucHJvdG90eXBlLmhBPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVWcucGQodGhpcy5GLkkpfTtoLnByb3RvdHlwZS5icj1mdW5jdGlvbihrLGwpe3ZhciBtPXRoaXM7dGhpcy5nbC5vbmNlKFwidHJhbnNpdGlvbmVuZFwiLGZ1bmN0aW9uKCl7bCgpO20uZihrKX0pfTtoLnByb3RvdHlwZS53Rj1mdW5jdGlvbigpe3RoaXMuYS5iLm9hKHRoaXMuRi5JLHtcIi13ZWJraXQtdHJhbnNpdGlvblwiOlwiXCIsdHJhbnNpdGlvbjpcIlwifSk7cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLnRDPWZ1bmN0aW9uKCl7dmFyIGs9dGhpczt0aGlzLksudShcInNpemVjaGFuZ2VcIixmdW5jdGlvbihsKXtrLmEuYi5vYShrLkYuSSx7aGVpZ2h0OmwuaGVpZ2h0K1wicHhcIix3aWR0aDpsLndpZHRoK1wicHhcIn0pfSl9O2gucHJvdG90eXBlLkdlPWZ1bmN0aW9uKCl7dmFyIGs9dGhpczsodGhpcy5xYS5XYT10aGlzLnFhLnJkLlRlKHtlbGVtZW50OnRoaXMuRi51Yn0pKS51KFwidmlld2FibGVcIixcbmZ1bmN0aW9uKCl7cmV0dXJuIGsuZihcInZpZXdhYmxlYWRjb250ZW50XCIpfSl9O2guSD1mdW5jdGlvbigpe3JldHVybiBifTtyZXR1cm4gaH0oZy5kZWZhdWx0KTt0LmRlZmF1bHQ9SC5oUT1nfSx7MTA1OjEwNSwxNDg6MTQ4LDI1MDoyNTAsNzU6NzV9XSw3NzpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgZj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxhKXtjLl9fcHJvdG9fXz1hfXx8ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoY1tiXT1hW2JdKX07cmV0dXJuIGZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcblwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMTA1KSxlPVtcImVmZmVjdHN0YXJ0ZWRcIixcImVmZmVjdHN0b3BwZWRcIixcInZpZXdhYmxlYWRjb250ZW50XCJdO2c9ZnVuY3Rpb24oZil7ZnVuY3Rpb24gYyhhLGIpe3ZhciBkPWYuY2FsbCh0aGlzKXx8dGhpcztkLks9YS5HO2QucWE9e3JkOmEubmIudmEsV2E6bnVsbH07ZC5hPWI7ZC5GPXt9O3JldHVybiBkfXYoYyxmKTtjLnByb3RvdHlwZS4kaj1mdW5jdGlvbigpe3JldHVyblwiXCJ9O2MucHJvdG90eXBlLnJnPWZ1bmN0aW9uKGEsYixkKXt0aGlzLkYuamQ9YTt0aGlzLkYuST1iO3RoaXMuRi51Yj1kO3RoaXMuR2UoKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuZWs9ZnVuY3Rpb24oKXtyZXR1cm4gcC5kZWZhdWx0Lk13fTtjLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuSy5TKCk7dGhpcy5hLmIucWIodGhpcy5GLnViLHAuZGVmYXVsdC54Zik7dGhpcy5hLmIub2EodGhpcy5GLnViLHtoZWlnaHQ6YS5oZWlnaHQrXG5cInB4XCIsd2lkdGg6YS53aWR0aCtcInB4XCJ9KTt0aGlzLnFhLldhLm9ic2VydmUoKTt0aGlzLmYoXCJlZmZlY3RzdGFydGVkXCIpO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5mKFwiZWZmZWN0c3RvcHBlZFwiKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUua2s9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Yy5wcm90b3R5cGUuS2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xYS5XYS5XYigpfTtjLnByb3RvdHlwZS5Kaz1mdW5jdGlvbigpe3JldHVybiExfTtjLnByb3RvdHlwZS5HZT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7KHRoaXMucWEuV2E9dGhpcy5xYS5yZC5UZSh7ZWxlbWVudDp0aGlzLkYudWJ9KSkudShcInZpZXdhYmxlXCIsZnVuY3Rpb24oKXtyZXR1cm4gYS5mKFwidmlld2FibGVhZGNvbnRlbnRcIil9KX07Yy5IPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBjfShnKDE0OCkuZGVmYXVsdCk7dC5kZWZhdWx0PUgublE9Z30sezEwNToxMDUsMTQ4OjE0OH1dLFxuNzg6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsaCl7ZC5fX3Byb3RvX189aH18fGZ1bmN0aW9uKGQsaCl7Zm9yKHZhciBrIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShrKSYmKGRba109aFtrXSl9O3JldHVybiBmdW5jdGlvbihkLGgpe2Z1bmN0aW9uIGsoKXt0aGlzLmNvbnN0cnVjdG9yPWR9YihkLGgpO2QucHJvdG90eXBlPW51bGw9PT1oP09iamVjdC5jcmVhdGUoaCk6KGsucHJvdG90eXBlPWgucHJvdG90eXBlLG5ldyBrKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygxMDUpLGU9Zyg3NSksZj1nKDEzOCk7Zz1nKDE0OCk7dmFyIGM9W2YuZGVmYXVsdC50YyxmLmRlZmF1bHQuQmQsZi5kZWZhdWx0LlRjXSxhPVtcImVmZmVjdHN0YXJ0ZWRcIixcImVmZmVjdHN0b3BwZWRcIixcblwidmlld2FibGVhZGNvbnRlbnRcIl07Zz1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKGgsayl7dmFyIGw9Yi5jYWxsKHRoaXMpfHx0aGlzO2wuSz1oLkc7bC5xYT17cmQ6aC5uYi52YSxXYTpudWxsfTtsLmE9aztsLkY9e307bC5saD17fTtsLkZmPXtBazpudWxsLGJ3Om51bGwsTHM6bnVsbH07bC5YZj1oLldoO3JldHVybiBsfXYoZCxiKTtkLnByb3RvdHlwZS4kaj1mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHQueGl9O2QucHJvdG90eXBlLnJnPWZ1bmN0aW9uKGgsayxsKXt0aGlzLkYuamQ9aDt0aGlzLkYuST1rO3RoaXMuRi51Yj1sO3RoaXMuRi5pSD1sLnF1ZXJ5U2VsZWN0b3IoXCIudHludC1hZC1mcmFtZS1jb250YWluZXJcIik7dGhpcy54cSgpLkdlKCk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLmVrPWZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmYXVsdC54aX07ZC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLGs9dGhpcy5LLlMoKSxsPXRoaXMuYS5iO3RoaXMueHEoKTtcbmwub2EodGhpcy5GLmpkLHt3aWR0aDprLndpZHRoK1wicHhcIixoZWlnaHQ6dGhpcy5GZi5BaytcInB4XCJ9KS5vYSh0aGlzLkYudWIse3dpZHRoOmsud2lkdGgrXCJweFwifSk7dGhpcy5hLnZpZXdwb3J0LiQoKS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5xYihoLkYudWIscC5kZWZhdWx0LnhmKX0sMCk7dGhpcy5xYS5XYS5vYnNlcnZlKCk7dGhpcy5vbSgpLndxKCkuem0oKS5ueSgpLmYoXCJlZmZlY3RzdGFydGVkXCIpO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5mKFwiZWZmZWN0c3RvcHBlZFwiKS5xRigpO3RoaXMucWEuV2EuZGlzY29ubmVjdCgpO3RoaXMuWGYuZGlzY29ubmVjdCgpO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5raz1mdW5jdGlvbigpe3JldHVybiExfTtkLnByb3RvdHlwZS5LYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnFhLldhLldiKCl9O2QucHJvdG90eXBlLkprPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2QucHJvdG90eXBlLm9tPWZ1bmN0aW9uKCl7dmFyIGg9XG50aGlzLkYuSS5xdWVyeVNlbGVjdG9yKFwiLnR5bnQtYWQtZGlzY2xvc3VyZVwiKTt0aGlzLmEuYi5xYihoLHAuZGVmYXVsdC5OcCk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLnhxPWZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5LLlMoKTt0aGlzLkZmLkFrPU1hdGgucm91bmQoLjYyNSpoLmhlaWdodCk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLndxPWZ1bmN0aW9uKCl7dGhpcy5leigpLnZxKCk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLmV6PWZ1bmN0aW9uKCl7dGhpcy5GZi5idz10aGlzLmEudmlld3BvcnQuJCgpLmlubmVySGVpZ2h0O3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS52cT1mdW5jdGlvbigpe3RoaXMuRmYuTHM9dGhpcy5hLmIuSWModGhpcy5GLkkpfTtkLnByb3RvdHlwZS56bT1mdW5jdGlvbigpe3ZhciBoPXRoaXMuU0IoKSxrPWguYncsbD1oLkxzO2g9ay1oLkFrO3ZhciBtPXRoaXMuYS52aWV3cG9ydC5naygpLnRvcDtsPWwudG9wLW07bT1sL2g7dmFyIG49dGhpcy5LLlMoKTtcbms9e3RvcDpNYXRoLnJvdW5kKG0qKGstbi5oZWlnaHQpKStcInB4XCIsYm90dG9tOlwiYXV0b1wifTswPj1sP2s9e3RvcDowLGJvdHRvbTpcImF1dG9cIn06bD5oJiYoaz17dG9wOlwiYXV0b1wiLGJvdHRvbTowfSk7dGhpcy5ORygpLk9HKGspO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5TQj1mdW5jdGlvbigpe3RoaXMuYS5iLkdhLldofHx0aGlzLnZxKCk7cmV0dXJuIHRoaXMuRmZ9O2QucHJvdG90eXBlLk9HPWZ1bmN0aW9uKGgpe3RoaXMuYS5iLm9hKHRoaXMuRi5pSCxoKX07ZC5wcm90b3R5cGUuTkc9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmEuYi50YSh0aGlzLkYuamQpLnRvcDt0aGlzLmEuYi5HYS5nSyYmdGhpcy5hLmIub2EodGhpcy5GLnViLHt0b3A6LWgrXCJweFwifSk7cmV0dXJuIHRoaXN9O2QucHJvdG90eXBlLkdlPWZ1bmN0aW9uKCl7dmFyIGg9dGhpcyxrPXRoaXMuSy5TKCksbD10aGlzLnFhLldhPXRoaXMucWEucmQuVGUoe2VsZW1lbnQ6dGhpcy5GLmpkLGtlOk1hdGgucm91bmQoNTAqXG5rLmhlaWdodC90aGlzLkZmLkFrKX0pO2wub25jZShcInZpZXdhYmxlXCIsZnVuY3Rpb24oKXtoLmYoXCJ2aWV3YWJsZWFkY29udGVudFwiKTtsLmRpc2Nvbm5lY3QoKX0pfTtkLnByb3RvdHlwZS5ueT1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoKXtrLndxKCkuem0oKX12YXIgaz10aGlzO3RoaXMuWGYuZk4oaCkub2JzZXJ2ZSh0aGlzLmEudmlld3BvcnQuJCgpLmRvY3VtZW50LmJvZHkpO2MuZm9yRWFjaChmdW5jdGlvbihsKXtrLmxoW2xdPWh9KTt0aGlzLmxoW2YuZGVmYXVsdC5JZ109ZnVuY3Rpb24oKXtrLnptKCl9O3RoaXMuYS52aWV3cG9ydC5mYSh0aGlzLmxoKTtyZXR1cm4gdGhpc307ZC5wcm90b3R5cGUucUY9ZnVuY3Rpb24oKXt0aGlzLmEudmlld3BvcnQuT2EodGhpcy5saCk7dGhpcy5saD17fX07ZC5IPWZ1bmN0aW9uKCl7cmV0dXJuIGF9O3JldHVybiBkfShnLmRlZmF1bHQpO3QuZGVmYXVsdD1ILm9RPWd9LHsxMDU6MTA1LDEzODoxMzgsMTQ4OjE0OCw3NTo3NX1dLDc5OltmdW5jdGlvbihnLFxueSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGE9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGIsZCl7Yi5fX3Byb3RvX189ZH18fGZ1bmN0aW9uKGIsZCl7Zm9yKHZhciBoIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShoKSYmKGJbaF09ZFtoXSl9O3JldHVybiBmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGgoKXt0aGlzLmNvbnN0cnVjdG9yPWJ9YShiLGQpO2IucHJvdG90eXBlPW51bGw9PT1kP09iamVjdC5jcmVhdGUoZCk6KGgucHJvdG90eXBlPWQucHJvdG90eXBlLG5ldyBoKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygxMDUpLGU9Zyg3NSksZj1nKDEzOCksYz1bXCJlZmZlY3RzdGFydGVkXCIsXCJlZmZlY3RzdG9wcGVkXCIsXCJ2aWV3YWJsZWFkY29udGVudFwiXTtnPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCxoKXt2YXIgaz1hLmNhbGwodGhpcyl8fFxudGhpcztrLks9ZC5HO2sucWE9e3JkOmQubmIudmEsV2E6bnVsbH07ay5hPWg7ay5GPXt9O3JldHVybiBrfXYoYixhKTtiLnByb3RvdHlwZS4kaj1mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHQuQml9O2IucHJvdG90eXBlLnJnPWZ1bmN0aW9uKGQsaCxrKXt0aGlzLkYuamQ9ZDt0aGlzLkYuST1oO3RoaXMuRi51Yj1rO3RoaXMuR2UoKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuZWs9ZnVuY3Rpb24oKXtyZXR1cm4gcC5kZWZhdWx0LkJpfTtiLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3ZhciBkPXRoaXMsaCxrPXRoaXMuSy5TKCksbD10aGlzLmEuYjt0aGlzLnhtKCk7dGhpcy5hLnZpZXdwb3J0LiQoKS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5xYihkLkYudWIscC5kZWZhdWx0LnhmKS53YihkLkYuamQscC5kZWZhdWx0Lnd4KX0sMCk7bC5WKHRoaXMuRi51YixcIndpZHRoXCIsay53aWR0aCtcInB4XCIpO3RoaXMuYS52aWV3cG9ydC5mYSgoaD17fSxoW2YuZGVmYXVsdC5UY109ZnVuY3Rpb24oKXtyZXR1cm4gZC54bSgpfSxcbmhbZi5kZWZhdWx0LnRjXT1mdW5jdGlvbigpe3JldHVybiBkLnhtKCl9LGgpKTt0aGlzLm9tKCk7dGhpcy5xYS5XYS5vYnNlcnZlKCk7dGhpcy5mKFwiZWZmZWN0c3RhcnRlZFwiKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuZihcImVmZmVjdHN0b3BwZWRcIik7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmtrPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2IucHJvdG90eXBlLktjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucWEuV2EuV2IoKX07Yi5wcm90b3R5cGUuSms9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Yi5wcm90b3R5cGUueG09ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9dGhpcy5hLnZpZXdwb3J0LiQoKTtoLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaz1kLmEudmlld3BvcnQuWWUoKSxsPWQueXooKTtkLmEuYi5WKGQuRi5qZCxcImhlaWdodFwiLGguaW5uZXJIZWlnaHQrXCJweFwiKS5vYShkLkYuSSx7aGVpZ2h0OmguaW5uZXJIZWlnaHQrXCJweFwiLGNsaXA6XCJyZWN0KDAgXCIrXG5rLndpZHRoK1wicHggXCIraC5pbm5lckhlaWdodCtcInB4IDApXCJ9KS5WKGQuRi51YixcImxlZnRcIixsK1wicHhcIil9LDApO3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS55ej1mdW5jdGlvbigpe3ZhciBkPXRoaXMuYS5iLnRhKHRoaXMuRi5JKSxoPXRoaXMuSy5TKCk7cmV0dXJuIGQubGVmdCtNYXRoLnJvdW5kKChkLndpZHRoLWgud2lkdGgpLzIpfTtiLnByb3RvdHlwZS5vbT1mdW5jdGlvbigpe2Zvcih2YXIgZD10aGlzLkYuSS5xdWVyeVNlbGVjdG9yQWxsKFwiLnR5bnQtYWQtZGlzY2xvc3VyZVwiKSxoPXRoaXMuYS5iLGs9MDtrPGQubGVuZ3RoO2srKyloLnFiKGRba10scC5kZWZhdWx0Lk5wKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuR2U9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxrPXRoaXMuSy5TKCk7dGhpcy5hLmIud2IoaCxcInR5bnQtYWQtc2Nyb2xsZXItdmlld2FiaWxpdHlcIikub2EoaCx7d2lkdGg6ay53aWR0aCtcInB4XCIsaGVpZ2h0OmsuaGVpZ2h0K1xuXCJweFwifSk7dGhpcy5GLkkuYXBwZW5kQ2hpbGQoaCk7KHRoaXMucWEuV2E9dGhpcy5xYS5yZC5UZSh7ZWxlbWVudDpofSkpLnUoXCJ2aWV3YWJsZVwiLGZ1bmN0aW9uKCl7cmV0dXJuIGQuZihcInZpZXdhYmxlYWRjb250ZW50XCIpfSl9O2IuSD1mdW5jdGlvbigpe3JldHVybiBjfTtyZXR1cm4gYn0oZygxNDgpLmRlZmF1bHQpO3QuZGVmYXVsdD1ILnBRPWd9LHsxMDU6MTA1LDEzODoxMzgsMTQ4OjE0OCw3NTo3NX1dLDgwOltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihhKXtmb3IodmFyIGIsZD0xLGg9YXJndW1lbnRzLmxlbmd0aDtkPGg7ZCsrKXtiPWFyZ3VtZW50c1tkXTtmb3IodmFyIGsgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixrKSYmKGFba109YltrXSl9cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygxNSk7dmFyIHA9ZygxMjMpLFxuZT1nKDI1MCksZj1nKDg3KSxjPXkuZGVmYXVsdC5TYTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe3RoaXMuYT1kO3RoaXMuZWE9Yi5uYjt0aGlzLmd6PWIuYXQ7dGhpcy52PWIuRH1hLnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24oYil7dmFyIGQ9Yi52ZCxoPWIudGo7ZD10aGlzLmd6KGIuT2UuUygpLGguTyxkKTtiPXRoaXMuaHooYixkKTtyZXR1cm4gdGhpcy5lYS5NZS5mSihkLGIsdGhpcy5hKX07YS5wcm90b3R5cGUuaHo9ZnVuY3Rpb24oYixkKXt2YXIgaD1iLnRqLGs9Yi5HLGw9Yi5PZTtiPWIuYWU7dmFyIG09dGhpcy5rQShoLGwsZCk7cmV0dXJuIHYoe09lOmwsRDp0aGlzLnZ9LHRoaXMuaXooe3RqOmgsbmg6ZCxhZTpiLEc6a30pLHtkZzptfSl9O2EucHJvdG90eXBlLml6PWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsaD1iLnRqLGs9Yi5uaCxsPWIuYWUsbT1iLkcsbjtiPShuPXt9LG5bZi5kZWZhdWx0LlVjXT1mdW5jdGlvbigpe3JldHVybiBkLlR6KGgsbCl9LG5bZi5kZWZhdWx0LnNjXT1cbmZ1bmN0aW9uKCl7cmV0dXJuIGQuRnooaCl9LG5bZi5kZWZhdWx0LnBhXT1mdW5jdGlvbigpe3JldHVybiBkLkR6KGgsbSl9LG4pO3JldHVybiBlLmRlZmF1bHQuc24oYltrXSl8fHt9fTthLnByb3RvdHlwZS5Uej1mdW5jdGlvbihiLGQpe3ZhciBoPWIub24saz1iLmdhO2I9Yi5hbmltYXRpb247ZD10aGlzLmVhLnhiLnBkKGQpO3JldHVybntvbjpoLGdhOmssYW5pbWF0aW9uOmIsbU06ZCxaYjp0aGlzLmVhLlpiLnpKKHRoaXMuYS52aWV3cG9ydCx0aGlzLmVhLnp0LlpJKCkpLGpLOnRoaXMuZWEuR3R9fTthLnByb3RvdHlwZS5Gej1mdW5jdGlvbihiKXtyZXR1cm57V206Yi5XbSxMazp0aGlzLmVhLkxrLmNyZWF0ZSh0aGlzLnYse3ZpZXdwb3J0OnRoaXMuYS52aWV3cG9ydCxkYTp0aGlzLmEuZGF9KX19O2EucHJvdG90eXBlLkR6PWZ1bmN0aW9uKGIsZCl7cmV0dXJue2VmZmVjdDp0aGlzLmVhLmVmZmVjdC5sSihiLmVmZmVjdCxkKSxHOmR9fTthLnByb3RvdHlwZS5rQT1mdW5jdGlvbihiLFxuZCxoKXtkPWQucmIuZXhjaGFuZ2U7cmV0dXJuIHRoaXMuZWEuZGcuUkkoe2dNOnAuZGVmYXVsdC5DTShiLk8pLEV0OnRoaXMuZWEueGIsbmg6aCxwSDpiLnZIJiZkPT09Yy5McH0se2I6dGhpcy5hLmJ9KX07cmV0dXJuIGF9KCk7dC5kZWZhdWx0PUguRFA9Z30sezEyMzoxMjMsMTU6MTUsMjUwOjI1MCw4Nzo4N31dLDgxOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihmLGMsYSl7Zj1wLmRlZmF1bHQoZixjLGEpO3JldHVybiBlLmRlZmF1bHRbZl19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9Zyg4OCksZT1nKDgyKTtILkVQPXY7dC5kZWZhdWx0PXZ9LHs4Mjo4Miw4ODo4OH1dLDgyOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY7eT1nKDg3KTt2YXIgcD1nKDg2KSxlPWcoOTcpLGY9Zyg4NSksYz1nKDg0KTtnPWcoODkpO2c9KHY9e30sdlt5LmRlZmF1bHQuc2NdPVxucC5kZWZhdWx0LHZbeS5kZWZhdWx0LlVjXT1lLmRlZmF1bHQsdlt5LmRlZmF1bHQub2VdPWYuZGVmYXVsdCx2W3kuZGVmYXVsdC5wYV09Yy5kZWZhdWx0LHZbeS5kZWZhdWx0Lk5PTkVdPWcuZGVmYXVsdCx2KTt0LmRlZmF1bHQ9Z30sezg0Ojg0LDg1Ojg1LDg2Ojg2LDg3Ojg3LDg5Ojg5LDk3Ojk3fV0sODM6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGIpe2Zvcih2YXIgZCxoPTEsaz1hcmd1bWVudHMubGVuZ3RoO2g8aztoKyspe2Q9YXJndW1lbnRzW2hdO2Zvcih2YXIgbCBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGwpJiYoYltsXT1kW2xdKX1yZXR1cm4gYn07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygxNzEpLGU9ZygxMTIpLGY9ZygyNDkpLGM9Zyg4NyksYT1nKDgyKTt0LmRlZmF1bHQ9SC5GUD17Zko6ZnVuY3Rpb24oYixcbmQsaCl7dmFyIGs9YS5kZWZhdWx0W2JdLGw7Yj0obD17fSxsW2MuZGVmYXVsdC5VY109e2FuaW1hdGlvbjplLmRlZmF1bHQoZC5EKSxZYjpwLmRlZmF1bHQsZGE6Zi5kZWZhdWx0fSxsKVtiXXx8e307cmV0dXJuIG5ldyBrKGQsdih7fSxoLGIpKX19fSx7MTEyOjExMiwxNzE6MTcxLDI0OToyNDksODI6ODIsODc6ODd9XSw4NDpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYixkKXtiLl9fcHJvdG9fXz1kfXx8ZnVuY3Rpb24oYixkKXtmb3IodmFyIGggaW4gZClkLmhhc093blByb3BlcnR5KGgpJiYoYltoXT1kW2hdKX07cmV0dXJuIGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gaCgpe3RoaXMuY29uc3RydWN0b3I9Yn1hKGIsZCk7Yi5wcm90b3R5cGU9bnVsbD09PWQ/T2JqZWN0LmNyZWF0ZShkKTooaC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsXG5uZXcgaCl9fSgpLHA9dGhpcyYmdGhpcy53YXx8ZnVuY3Rpb24oYSxiLGQsaCl7cmV0dXJuIG5ldyAoZHx8KGQ9UHJvbWlzZSkpKGZ1bmN0aW9uKGssbCl7ZnVuY3Rpb24gbShxKXt0cnl7cihoLm5leHQocSkpfWNhdGNoKHUpe2wodSl9fWZ1bmN0aW9uIG4ocSl7dHJ5e3IoaFtcInRocm93XCJdKHEpKX1jYXRjaCh1KXtsKHUpfX1mdW5jdGlvbiByKHEpe3EuZG9uZT9rKHEudmFsdWUpOihuZXcgZChmdW5jdGlvbih1KXt1KHEudmFsdWUpfSkpLnRoZW4obSxuKX1yKChoPWguYXBwbHkoYSxifHxbXSkpLm5leHQoKSl9KX0sZT10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQocSl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBoKFtxLHVdKX19ZnVuY3Rpb24gaChxKXtpZihsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7azspdHJ5e2lmKGw9MSxtJiYobj1xWzBdJjI/bVtcInJldHVyblwiXTpxWzBdP21bXCJ0aHJvd1wiXXx8XG4oKG49bVtcInJldHVyblwiXSkmJm4uY2FsbChtKSwwKTptLm5leHQpJiYhKG49bi5jYWxsKG0scVsxXSkpLmRvbmUpcmV0dXJuIG47aWYobT0wLG4pcT1bcVswXSYyLG4udmFsdWVdO3N3aXRjaChxWzBdKXtjYXNlIDA6Y2FzZSAxOm49cTticmVhaztjYXNlIDQ6cmV0dXJuIGsubGFiZWwrKyx7dmFsdWU6cVsxXSxkb25lOiExfTtjYXNlIDU6ay5sYWJlbCsrO209cVsxXTtxPVswXTtjb250aW51ZTtjYXNlIDc6cT1rLmwucG9wKCk7ay5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShuPWsuaSxuPTA8bi5sZW5ndGgmJm5bbi5sZW5ndGgtMV0pJiYoNj09PXFbMF18fDI9PT1xWzBdKSl7az0wO2NvbnRpbnVlfWlmKDM9PT1xWzBdJiYoIW58fHFbMV0+blswXSYmcVsxXTxuWzNdKSlrLmxhYmVsPXFbMV07ZWxzZSBpZig2PT09cVswXSYmay5sYWJlbDxuWzFdKWsubGFiZWw9blsxXSxuPXE7ZWxzZSBpZihuJiZrLmxhYmVsPG5bMl0pay5sYWJlbD1uWzJdLGsubC5wdXNoKHEpO2Vsc2V7blsyXSYmXG5rLmwucG9wKCk7ay5pLnBvcCgpO2NvbnRpbnVlfX1xPWIuY2FsbChhLGspfWNhdGNoKHUpe3E9WzYsdV0sbT0wfWZpbmFsbHl7bD1uPTB9aWYocVswXSY1KXRocm93IHFbMV07cmV0dXJue3ZhbHVlOnFbMF0/cVsxXTp2b2lkIDAsZG9uZTohMH19dmFyIGs9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKG5bMF0mMSl0aHJvdyBuWzFdO3JldHVybiBuWzFdfSxpOltdLGw6W119LGwsbSxuLHI7cmV0dXJuIHI9e25leHQ6ZCgwKSxcInRocm93XCI6ZCgxKSxcInJldHVyblwiOmQoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihyW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPWcoODcpLGM9W1wicmVuZGVyZWRcIixcImNsb3Nlc3RhcnRcIixcImNsb3NlZFwiLFwidmlld2FibGVhZGNvbnRlbnRcIl07Zz1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQsaCl7dmFyIGs9YS5jYWxsKHRoaXMpfHxcbnRoaXM7ay5nYj1kLmRnO2suWD1udWxsO2suYmQ9ZC5lZmZlY3Q7ay5LPWQuRztrLmE9aDtrLnY9ZC5EO2suQ2Y9ZC5PZTtyZXR1cm4ga312KGIsYSk7Yi5IPWZ1bmN0aW9uKCl7cmV0dXJuIGN9O2IucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gZi5kZWZhdWx0LnBhfTtiLnByb3RvdHlwZS5XZT1mdW5jdGlvbigpe3JldHVybntwaDp0aGlzLkdsKCl9fTtiLnByb3RvdHlwZS5HbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJkLiRqKCl9O2IucHJvdG90eXBlLm5jPWZ1bmN0aW9uKGQpe3RoaXMuWD17T3M6ZC5wYXJlbnROb2RlLEhtOmQsTWQ6ZC5xdWVyeVNlbGVjdG9yKFwiLnR5bnQtaW5mZWVkXCIpLE46ZC5xdWVyeVNlbGVjdG9yKFwiLnR5bnQtYWQtZnJhbWVcIil9O3RoaXMuYS5iLndiKHRoaXMuWC5Pcyx0aGlzLmJkLmVrKCkpO3RoaXMuZ2IubmMoZCk7dGhpcy5iZC5raygpfHx0aGlzLmdiLiRlKCk7dGhpcy5iZC5yZyh0aGlzLlguT3MsdGhpcy5YLkhtLHRoaXMuWC5NZCl9O2IucHJvdG90eXBlLm9wZW49XG5mdW5jdGlvbigpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oZCl7c3dpdGNoKGQubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5leSgpLHRoaXMuYmQuTmEoXCJ2aWV3YWJsZWFkY29udGVudFwiLHRoaXMpLHRoaXMuYmQuSmsoKT9bNCx0aGlzLnRHKCldOlszLDJdO2Nhc2UgMTpyZXR1cm4gZC5tKCksWzIsdGhpc107Y2FzZSAyOnJldHVybls0LHRoaXMuaGgoKV07Y2FzZSAzOnJldHVybiBkLm0oKSxbMix0aGlzXX19KX0pfTtiLnByb3RvdHlwZS5LYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJkLktjKCl9O2IucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLmYoXCJjbG9zZXN0YXJ0XCIpO3RoaXMuYmQub25jZShcImVmZmVjdHN0b3BwZWRcIixmdW5jdGlvbigpe3JldHVybiBkLndDKCl9KS5zdG9wKCk7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLkooKTt0aGlzLksuaigpO1xudGhpcy5nYi5qKCk7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmV5PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPVwiY2xpY2tcIjt0aGlzLmEudmlld3BvcnQuTWImJihoPVwidGFwXCIsdGhpcy5nYi51KFwiY2xpY2tcIixmdW5jdGlvbihrKXtyZXR1cm4gay5zdG9wUHJvcGFnYXRpb24oKX0pKTt0aGlzLmdiLnUoaCxmdW5jdGlvbigpe2Zvcih2YXIgaz1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylrW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gZC5jbG9zZS5hcHBseShkLGspfSl9O2IucHJvdG90eXBlLnRHPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLksubHYoKTtyZXR1cm4gdGhpcy5LLldiKCk/dGhpcy5oaCgpOm5ldyBQcm9taXNlKGZ1bmN0aW9uKGgpe2QuSy5vbmNlKFwidmlld2FibGVcIixmdW5jdGlvbigpe2Zvcih2YXIgaz1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylrW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gcChkLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLFxuZnVuY3Rpb24obSl7c3dpdGNoKG0ubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmhoLmFwcGx5KHRoaXMsayldO2Nhc2UgMTpyZXR1cm4gbS5tKCksaCgpLFsyXX19KX0pfSl9KX07Yi5wcm90b3R5cGUuaGg9ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuYmQub25jZShcImVmZmVjdHN0YXJ0ZWRcIixmdW5jdGlvbigpe3JldHVybiBkLnZDKCl9KS5zdGFydCgpO3JldHVybiBQcm9taXNlLnJlc29sdmUoKX07Yi5wcm90b3R5cGUudkM9ZnVuY3Rpb24oKXt0aGlzLmYoXCJyZW5kZXJlZFwiKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUud0M9ZnVuY3Rpb24oKXt0aGlzLmYoXCJjbG9zZWRcIik7cmV0dXJuIHRoaXN9O3JldHVybiBifShnKDE0OCkuZGVmYXVsdCk7dC5kZWZhdWx0PUguRVI9Z30sezE0ODoxNDgsODc6ODd9XSw4NTpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZlxuQXJyYXkmJmZ1bmN0aW9uKGIsZCl7Yi5fX3Byb3RvX189ZH18fGZ1bmN0aW9uKGIsZCl7Zm9yKHZhciBoIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShoKSYmKGJbaF09ZFtoXSl9O3JldHVybiBmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGgoKXt0aGlzLmNvbnN0cnVjdG9yPWJ9YShiLGQpO2IucHJvdG90eXBlPW51bGw9PT1kP09iamVjdC5jcmVhdGUoZCk6KGgucHJvdG90eXBlPWQucHJvdG90eXBlLG5ldyBoKX19KCkscD10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihhLGIsZCxoKXtyZXR1cm4gbmV3IChkfHwoZD1Qcm9taXNlKSkoZnVuY3Rpb24oayxsKXtmdW5jdGlvbiBtKHEpe3RyeXtyKGgubmV4dChxKSl9Y2F0Y2godSl7bCh1KX19ZnVuY3Rpb24gbihxKXt0cnl7cihoW1widGhyb3dcIl0ocSkpfWNhdGNoKHUpe2wodSl9fWZ1bmN0aW9uIHIocSl7cS5kb25lP2socS52YWx1ZSk6KG5ldyBkKGZ1bmN0aW9uKHUpe3UocS52YWx1ZSl9KSkudGhlbihtLG4pfXIoKGg9aC5hcHBseShhLGJ8fFtdKSkubmV4dCgpKX0pfSxcbmU9dGhpcyYmdGhpcy54YXx8ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKHEpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gaChbcSx1XSl9fWZ1bmN0aW9uIGgocSl7aWYobCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2s7KXRyeXtpZihsPTEsbSYmKG49cVswXSYyP21bXCJyZXR1cm5cIl06cVswXT9tW1widGhyb3dcIl18fCgobj1tW1wicmV0dXJuXCJdKSYmbi5jYWxsKG0pLDApOm0ubmV4dCkmJiEobj1uLmNhbGwobSxxWzFdKSkuZG9uZSlyZXR1cm4gbjtpZihtPTAsbilxPVtxWzBdJjIsbi52YWx1ZV07c3dpdGNoKHFbMF0pe2Nhc2UgMDpjYXNlIDE6bj1xO2JyZWFrO2Nhc2UgNDpyZXR1cm4gay5sYWJlbCsrLHt2YWx1ZTpxWzFdLGRvbmU6ITF9O2Nhc2UgNTprLmxhYmVsKys7bT1xWzFdO3E9WzBdO2NvbnRpbnVlO2Nhc2UgNzpxPWsubC5wb3AoKTtrLmkucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKG49ay5pLG49MDxuLmxlbmd0aCYmXG5uW24ubGVuZ3RoLTFdKSYmKDY9PT1xWzBdfHwyPT09cVswXSkpe2s9MDtjb250aW51ZX1pZigzPT09cVswXSYmKCFufHxxWzFdPm5bMF0mJnFbMV08blszXSkpay5sYWJlbD1xWzFdO2Vsc2UgaWYoNj09PXFbMF0mJmsubGFiZWw8blsxXSlrLmxhYmVsPW5bMV0sbj1xO2Vsc2UgaWYobiYmay5sYWJlbDxuWzJdKWsubGFiZWw9blsyXSxrLmwucHVzaChxKTtlbHNle25bMl0mJmsubC5wb3AoKTtrLmkucG9wKCk7Y29udGludWV9fXE9Yi5jYWxsKGEsayl9Y2F0Y2godSl7cT1bNix1XSxtPTB9ZmluYWxseXtsPW49MH1pZihxWzBdJjUpdGhyb3cgcVsxXTtyZXR1cm57dmFsdWU6cVswXT9xWzFdOnZvaWQgMCxkb25lOiEwfX12YXIgaz17bGFiZWw6MCxtOmZ1bmN0aW9uKCl7aWYoblswXSYxKXRocm93IG5bMV07cmV0dXJuIG5bMV19LGk6W10sbDpbXX0sbCxtLG4scjtyZXR1cm4gcj17bmV4dDpkKDApLFwidGhyb3dcIjpkKDEpLFwicmV0dXJuXCI6ZCgyKX0sXCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmXG4ocltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZj1nKDg3KSxjPVtcInJlbmRlcmVkXCJdO2c9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe3JldHVybiBudWxsIT09YSYmYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9dihiLGEpO2IuSD1mdW5jdGlvbigpe3JldHVybiBjfTtiLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIGYuZGVmYXVsdC5vZX07Yi5wcm90b3R5cGUuV2U9ZnVuY3Rpb24oKXtyZXR1cm57cGg6XCJcIn19O2IucHJvdG90eXBlLm5jPWZ1bmN0aW9uKCl7fTtiLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbigpe3RoaXMuZihcInJlbmRlcmVkXCIpO3JldHVyblsyLHRoaXNdfSl9KX07Yi5wcm90b3R5cGUuS2M9ZnVuY3Rpb24oKXtyZXR1cm4hMH07XG5iLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5KKCk7cmV0dXJuIHRoaXN9O3JldHVybiBifShnKDE0OCkuZGVmYXVsdCk7dC5kZWZhdWx0PUguRlI9Z30sezE0ODoxNDgsODc6ODd9XSw4NjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxoKXtkLl9fcHJvdG9fXz1ofXx8ZnVuY3Rpb24oZCxoKXtmb3IodmFyIGsgaW4gaCloLmhhc093blByb3BlcnR5KGspJiYoZFtrXT1oW2tdKX07cmV0dXJuIGZ1bmN0aW9uKGQsaCl7ZnVuY3Rpb24gaygpe3RoaXMuY29uc3RydWN0b3I9ZH1iKGQsaCk7ZC5wcm90b3R5cGU9bnVsbD09PWg/T2JqZWN0LmNyZWF0ZShoKTooay5wcm90b3R5cGU9aC5wcm90b3R5cGUsbmV3IGspfX0oKSxwPXRoaXMmJnRoaXMud2F8fFxuZnVuY3Rpb24oYixkLGgsayl7cmV0dXJuIG5ldyAoaHx8KGg9UHJvbWlzZSkpKGZ1bmN0aW9uKGwsbSl7ZnVuY3Rpb24gbih1KXt0cnl7cShrLm5leHQodSkpfWNhdGNoKHcpe20odyl9fWZ1bmN0aW9uIHIodSl7dHJ5e3Eoa1tcInRocm93XCJdKHUpKX1jYXRjaCh3KXttKHcpfX1mdW5jdGlvbiBxKHUpe3UuZG9uZT9sKHUudmFsdWUpOihuZXcgaChmdW5jdGlvbih3KXt3KHUudmFsdWUpfSkpLnRoZW4obixyKX1xKChrPWsuYXBwbHkoYixkfHxbXSkpLm5leHQoKSl9KX0sZT10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGgodSl7cmV0dXJuIGZ1bmN0aW9uKHcpe3JldHVybiBrKFt1LHddKX19ZnVuY3Rpb24gayh1KXtpZihtKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7bDspdHJ5e2lmKG09MSxuJiYocj11WzBdJjI/bltcInJldHVyblwiXTp1WzBdP25bXCJ0aHJvd1wiXXx8KChyPW5bXCJyZXR1cm5cIl0pJiZyLmNhbGwobiksXG4wKTpuLm5leHQpJiYhKHI9ci5jYWxsKG4sdVsxXSkpLmRvbmUpcmV0dXJuIHI7aWYobj0wLHIpdT1bdVswXSYyLHIudmFsdWVdO3N3aXRjaCh1WzBdKXtjYXNlIDA6Y2FzZSAxOnI9dTticmVhaztjYXNlIDQ6cmV0dXJuIGwubGFiZWwrKyx7dmFsdWU6dVsxXSxkb25lOiExfTtjYXNlIDU6bC5sYWJlbCsrO249dVsxXTt1PVswXTtjb250aW51ZTtjYXNlIDc6dT1sLmwucG9wKCk7bC5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShyPWwuaSxyPTA8ci5sZW5ndGgmJnJbci5sZW5ndGgtMV0pJiYoNj09PXVbMF18fDI9PT11WzBdKSl7bD0wO2NvbnRpbnVlfWlmKDM9PT11WzBdJiYoIXJ8fHVbMV0+clswXSYmdVsxXTxyWzNdKSlsLmxhYmVsPXVbMV07ZWxzZSBpZig2PT09dVswXSYmbC5sYWJlbDxyWzFdKWwubGFiZWw9clsxXSxyPXU7ZWxzZSBpZihyJiZsLmxhYmVsPHJbMl0pbC5sYWJlbD1yWzJdLGwubC5wdXNoKHUpO2Vsc2V7clsyXSYmbC5sLnBvcCgpO2wuaS5wb3AoKTtjb250aW51ZX19dT1cbmQuY2FsbChiLGwpfWNhdGNoKHcpe3U9WzYsd10sbj0wfWZpbmFsbHl7bT1yPTB9aWYodVswXSY1KXRocm93IHVbMV07cmV0dXJue3ZhbHVlOnVbMF0/dVsxXTp2b2lkIDAsZG9uZTohMH19dmFyIGw9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKHJbMF0mMSl0aHJvdyByWzFdO3JldHVybiByWzFdfSxpOltdLGw6W119LG0sbixyLHE7cmV0dXJuIHE9e25leHQ6aCgwKSxcInRocm93XCI6aCgxKSxcInJldHVyblwiOmgoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihxW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPWcoMTA1KSxjPWcoODcpLGE9W1wicmVuZGVyZWRcIixcImNsb3Nlc3RhcnRcIixcImNsb3NlZFwiLFwidmlld2FibGVhZGNvbnRlbnRcIl07Zz1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKGgsayl7dmFyIGw9Yi5jYWxsKHRoaXMpfHx0aGlzO2wuUHk9aC5XbXx8XG4wO2wuRXE9ITE7bC5DZj1oLk9lO2wuYT1rO2wuWD1udWxsO2wuZ2I9aC5kZztsLnY9aC5EO2wudXM9aC5MaztyZXR1cm4gbH12KGQsYik7ZC5IPWZ1bmN0aW9uKCl7cmV0dXJuIGF9O2QucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0LnNjfTtkLnByb3RvdHlwZS5XZT1mdW5jdGlvbigpe3JldHVybntwaDpcIlwifX07ZC5wcm90b3R5cGUubmM9ZnVuY3Rpb24oaCl7dGhpcy5YPXtIbTpoLFZ1OmgucXVlcnlTZWxlY3RvcihcIi5pbnZpZXctbGV2ZWwtMFwiKSxOaDpoLnF1ZXJ5U2VsZWN0b3IoXCIuaW52aWV3LWxldmVsLTFcIiksSm06aC5xdWVyeVNlbGVjdG9yKFwiLnR5bnQtYWQtZnJhbWUtY29udGFpbmVyXCIpfTt0aGlzLmEuYi53Yih0aGlzLlguVnUsXCJ0eW50LWxhenlib3lcIik7dGhpcy5nYi5uYyhoKX07ZC5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBoPXRoaXM7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihrKXtzd2l0Y2goay5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmdiLnUoXCJjbGlja1wiLFxuZnVuY3Rpb24oKXtmb3IodmFyIGw9W10sbT0wO208YXJndW1lbnRzLmxlbmd0aDttKyspbFttXT1hcmd1bWVudHNbbV07cmV0dXJuIGguY2xvc2UuYXBwbHkoaCxsKX0pLFs0LHRoaXMuYkgoKV07Y2FzZSAxOnJldHVybiBrLm0oKSx0aGlzLmEuYi5Idih0aGlzLlguSm0sdGhpcy5DZi5TKCkpLnFiKHRoaXMuWC5OaCxmLmRlZmF1bHQueGYpLm9hKHRoaXMuWC5OaCx7dHJhbnNmb3JtOlwidHJhbnNsYXRlWSgtMTAwJSlcIixcInBhZGRpbmctYm90dG9tXCI6dGhpcy5QeStcInB4XCJ9KSx0aGlzLkVxPSEwLHRoaXMuZihcInZpZXdhYmxlYWRjb250ZW50XCIpLFsyLHRoaXNdfX0pfSl9O2QucHJvdG90eXBlLktjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRXF9O2QucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dmFyIGg9dGhpczt0aGlzLnYuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBoLmYoXCJjbG9zZXN0YXJ0XCIpfSwwKTt0aGlzLmEueGIub25jZSh0aGlzLlguTmgsXCJ0cmFuc2l0aW9uZW5kXCIsXG5mdW5jdGlvbigpe3JldHVybiBoLmYoXCJjbG9zZWRcIil9KTt0aGlzLmEuYi5WKHRoaXMuWC5OaCxcInRyYW5zZm9ybVwiLFwiXCIpO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5KKCk7dGhpcy5nYi5qKCk7dGhpcy51cy5jSygpO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5iSD1mdW5jdGlvbigpe3ZhciBoPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGspe2guYS54Yi5vbmNlKGguWC5OaCxcInRyYW5zaXRpb25lbmRcIixmdW5jdGlvbigpe2gudXMub0soaC5YLlZ1KTtoLmYoXCJyZW5kZXJlZFwiKTtrKCl9KX0pfTtyZXR1cm4gZH0oZygxNDgpLmRlZmF1bHQpO3QuZGVmYXVsdD1ILklSPWd9LHsxMDU6MTA1LDE0ODoxNDgsODc6ODd9XSw4NzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILkdQPXtVYzpcInRhbGxib3ktcmlzaW5nLXN0YXJcIixzYzpcImxhenlib3ktcmlzaW5nLXN0YXJcIixcbm9lOlwic2lhYlwiLHBhOlwiaW5mZWVkXCIsTk9ORTpcIm5vbmVcIn19LHt9XSw4ODpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYodSx3LHgpe3ZhciBDPWUoe30sblt4XSksRD1bdSx3XS5qb2luKFwieFwiKTtyZXR1cm4gT2JqZWN0LmtleXMoQykuZmlsdGVyKGZ1bmN0aW9uKEIpe3JldHVybiBtLmRlZmF1bHQuY2EoQ1tCXSxEKX0pfWZ1bmN0aW9uIHAodSx3LHgpe3ZhciBDPWUoe30sclt3XVt4XSk7cmV0dXJuIE9iamVjdC5rZXlzKEMpLmZpbHRlcihmdW5jdGlvbihEKXtEPUNbRF07cmV0dXJuIG0uZGVmYXVsdC53TSh1LERbMF0sRFsxXSl9KX12YXIgZT10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHUpe2Zvcih2YXIgdyx4PTEsQz1hcmd1bWVudHMubGVuZ3RoO3g8Qzt4Kyspe3c9YXJndW1lbnRzW3hdO2Zvcih2YXIgRCBpbiB3KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3LEQpJiYodVtEXT13W0RdKX1yZXR1cm4gdX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXG5cIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZixjLGEsYixkLGgsayxsPWcoODcpLG09ZygyNTApO2c9ZygyMTgpO3ZhciBuPXtkZXNrdG9wOihmPXt9LGZbbC5kZWZhdWx0LlVjXT1bXCIxNjB4NjAwXCIsXCIzMDB4NjAwXCIsXCIzMDB4MjUwXCJdLGZbbC5kZWZhdWx0LnNjXT1bXCI3Mjh4OTBcIl0sZiksdGFibGV0OihjPXt9LGNbbC5kZWZhdWx0LlVjXT1bXCIxNjB4NjAwXCJdLGNbbC5kZWZhdWx0LnNjXT1bXCI3Mjh4OTBcIl0sYyksbW9iaWxlOihhPXt9LGFbbC5kZWZhdWx0LlVjXT1bXSxhW2wuZGVmYXVsdC5zY109W1wiMzIweDEwMFwiLFwiMzIweDUwXCIsXCIzMDB4NTBcIl0sYSl9LHI9e2hlaWdodDp7ZGVza3RvcDp7fSx0YWJsZXQ6KGI9e30sYltsLmRlZmF1bHQuc2NdPVs2MCwxODBdLGIpLG1vYmlsZTooZD17fSxkW2wuZGVmYXVsdC5zY109WzMzLDE4MF0sZCl9LHdpZHRoOntkZXNrdG9wOihoPXt9LGhbbC5kZWZhdWx0LlVjXT1bMTIwLDMxOV0saFtsLmRlZmF1bHQuc2NdPVs3MjgsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXSxcbmgpLHRhYmxldDp7fSxtb2JpbGU6e319fSxxPShrPXt9LGtbZy5kZWZhdWx0LlJhXT1sLmRlZmF1bHQub2Usa1tnLmRlZmF1bHQucGFdPWwuZGVmYXVsdC5wYSxrW2cuZGVmYXVsdC5rYV09bnVsbCxrKTt0LmRlZmF1bHQ9ZnVuY3Rpb24odSx3LHgpeyh4PXFbeF0pfHwoeD11LndpZHRoLHU9dS5oZWlnaHQseD12KHgsdSx3KS5jb25jYXQocCh1LFwiaGVpZ2h0XCIsdykscCh4LFwid2lkdGhcIix3KSxbbC5kZWZhdWx0Lk5PTkVdKVswXSk7cmV0dXJuIHh9fSx7MjE4OjIxOCwyNTA6MjUwLDg3Ojg3fV0sODk6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsYSl7Yy5fX3Byb3RvX189YX18fGZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGNbYl09YVtiXSl9O3JldHVybiBmdW5jdGlvbihjLFxuYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDg3KTt5PWcoMTQ4KTt2YXIgZT1nKDI1MCk7Zz1mdW5jdGlvbihmKXtmdW5jdGlvbiBjKGEpe3ZhciBiPWYuY2FsbCh0aGlzKXx8dGhpcztiLkNmPWEuT2U7cmV0dXJuIGJ9dihjLGYpO2MuSD1mdW5jdGlvbigpe3JldHVybltdfTtjLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmYXVsdC5OT05FfTtjLnByb3RvdHlwZS5XZT1mdW5jdGlvbigpe3JldHVybntwaDpcIlwifX07Yy5wcm90b3R5cGUubmM9ZnVuY3Rpb24oKXt2YXIgYT1cIkludmFsaWQgYWQgc2l6ZTogXCIrZS5kZWZhdWx0LlBjKHRoaXMuQ2YuUygpKTt0aHJvdyBFcnJvcihhKTt9O2MucHJvdG90eXBlLm9wZW49XG5mdW5jdGlvbigpe3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5LYz1mdW5jdGlvbigpe3JldHVybiExfTtjLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5KKCk7cmV0dXJuIHRoaXN9O3JldHVybiBjfSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1ILlFSPWd9LHsxNDg6MTQ4LDI1MDoyNTAsODc6ODd9XSw5MDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHAsZSl7dGhpcy5UbD1wO3RoaXMuV0Y9ZX12LnByb3RvdHlwZS5kTj1mdW5jdGlvbihwKXt0aGlzLldGKHApO3JldHVybiB0aGlzfTt2LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHAsZSl7dGhpcy5UbC5vYnNlcnZlKHAsZSk7cmV0dXJuIHRoaXN9O3YucHJvdG90eXBlLnRha2VSZWNvcmRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVGwudGFrZVJlY29yZHMoKX07XG52LnByb3RvdHlwZS5kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5UbC5kaXNjb25uZWN0KCk7cmV0dXJuIHRoaXN9O3JldHVybiB2fSgpO3QuZGVmYXVsdD1ILldRPWd9LHt9XSw5MTpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoYyxhKXtmdW5jdGlvbiBiKCl7fXJldHVybiBuZXcgYyhuZXcgYShmdW5jdGlvbigpe2Zvcih2YXIgZD1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5hcHBseSh2b2lkIDAsZCl9KSxmdW5jdGlvbihkKXtiPWR9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDkwKSxlPWcoOTIpLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlLnVub2JzZXJ2ZT1mdW5jdGlvbigpe307Yy5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe307cmV0dXJuIGN9KCk7dC5kZWZhdWx0PVxuSC5YUT17Wkk6ZnVuY3Rpb24oKXtyZXR1cm4gdihwLmRlZmF1bHQsTXV0YXRpb25PYnNlcnZlcil9LCRJOmZ1bmN0aW9uKGMpe3JldHVybiB2KGUuZGVmYXVsdCxjLlJlc2l6ZU9ic2VydmVyfHxmKX19fSx7OTA6OTAsOTI6OTJ9XSw5MjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHAsZSl7dGhpcy5YZj1wO3RoaXMuWUY9ZX12LnByb3RvdHlwZS5mTj1mdW5jdGlvbihwKXt0aGlzLllGKHApO3JldHVybiB0aGlzfTt2LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHAsZSl7dGhpcy5YZi5vYnNlcnZlKHAsZSk7cmV0dXJuIHRoaXN9O3YucHJvdG90eXBlLnVub2JzZXJ2ZT1mdW5jdGlvbihwKXt0aGlzLlhmLnVub2JzZXJ2ZShwKTtyZXR1cm4gdGhpc307di5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuWGYuZGlzY29ubmVjdCgpO3JldHVybiB0aGlzfTtcbnJldHVybiB2fSgpO3QuZGVmYXVsdD1ILllRPWd9LHt9XSw5MzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTI5KTt0LmRlZmF1bHQ9e3pKOmZ1bmN0aW9uKHAsZSl7cmV0dXJuIG5ldyB2LmRlZmF1bHQocCxlKX19fSx7MTI5OjEyOX1dLDk0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxMzApLHA9ZygxMjcpLGU9ZygxMjUpLGY9ZygyNDkpO3QuZGVmYXVsdD17Y0o6ZnVuY3Rpb24oYyxhLGIpe3JldHVybiBuZXcgdi5kZWZhdWx0KGMsYSx7YjpwLmRlZmF1bHQsYmFja2dyb3VuZDplLmRlZmF1bHQsZGE6Zi5kZWZhdWx0LGFuaW1hdGU6Yi5hbmltYXRlfSl9fX0sezEyNToxMjUsMTI3OjEyNywxMzA6MTMwLDI0OToyNDl9XSw5NTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLFxue3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApLHA9e2JvdHRvbTpcIlwiLHRvcDpcIlwiLHRyYW5zZm9ybTpcIlwifTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmLGMpe3ZhciBhPWMudmlld3BvcnQ7Yz1jLmRhO3RoaXMudj1mO3RoaXMuVWE9YTt0aGlzLkRHPWM7dGhpcy5iaj10aGlzLkhzPW51bGx9ZS5wcm90b3R5cGUub0s9ZnVuY3Rpb24oZil7dGhpcy53eShmKS5ucyhmKX07ZS5wcm90b3R5cGUuY0s9ZnVuY3Rpb24oKXt0aGlzLlhyKCl9O2UucHJvdG90eXBlLnd5PWZ1bmN0aW9uKGYpe3ZhciBjPXRoaXMsYT10aGlzLkhzPXRoaXMuREcuUGooe3RuOmZ1bmN0aW9uKCl7Yy5ucyhmKTtjLmJqJiZjLlhyKCl9LGRlbGF5VGltZToyMDB9KTshMCE9PXRoaXMuYmomJnRoaXMuVWEudShcInJlc2l6ZVwiLGEpO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5Ycj1mdW5jdGlvbigpe3RoaXMuVWEubmEoXCJyZXNpemVcIix0aGlzLkhzKX07ZS5wcm90b3R5cGUub3o9ZnVuY3Rpb24oZil7dGhpcy5pcigpJiYodGhpcy5iaj1cbmYuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tPT09dGhpcy52LmlubmVySGVpZ2h0KX07ZS5wcm90b3R5cGUuaXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52LmlubmVyV2lkdGg+dGhpcy52LmlubmVySGVpZ2h0fTtlLnByb3RvdHlwZS5ucz1mdW5jdGlvbihmKXt0aGlzLm96KGYpOyExPT09dGhpcy5iaiYmdGhpcy5pcigpP3YuZGVmYXVsdC5leHRlbmQoZi5zdHlsZSx7Ym90dG9tOlwiYXV0b1wiLHRvcDp0aGlzLnYuaW5uZXJIZWlnaHQrXCJweFwiLHRyYW5zZm9ybTpcInRyYW5zbGF0ZVkoMClcIn0pOnYuZGVmYXVsdC5leHRlbmQoZi5zdHlsZSxwKX07cmV0dXJuIGV9KCk7dC5kZWZhdWx0PUguQlM9Z30sezI1MDoyNTB9XSw5NjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoOTUpO3QuZGVmYXVsdD17Y3JlYXRlOmZ1bmN0aW9uKHAsZSl7cmV0dXJuIG5ldyB2LmRlZmF1bHQocCxcbmUpfX19LHs5NTo5NX1dLDk3OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBoPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihrLGwpe2suX19wcm90b19fPWx9fHxmdW5jdGlvbihrLGwpe2Zvcih2YXIgbSBpbiBsKWwuaGFzT3duUHJvcGVydHkobSkmJihrW21dPWxbbV0pfTtyZXR1cm4gZnVuY3Rpb24oayxsKXtmdW5jdGlvbiBtKCl7dGhpcy5jb25zdHJ1Y3Rvcj1rfWgoayxsKTtrLnByb3RvdHlwZT1udWxsPT09bD9PYmplY3QuY3JlYXRlKGwpOihtLnByb3RvdHlwZT1sLnByb3RvdHlwZSxuZXcgbSl9fSgpLHA9dGhpcyYmdGhpcy53YXx8ZnVuY3Rpb24oaCxrLGwsbSl7cmV0dXJuIG5ldyAobHx8KGw9UHJvbWlzZSkpKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gcSh4KXt0cnl7dyhtLm5leHQoeCkpfWNhdGNoKEMpe3IoQyl9fWZ1bmN0aW9uIHUoeCl7dHJ5e3cobVtcInRocm93XCJdKHgpKX1jYXRjaChDKXtyKEMpfX1cbmZ1bmN0aW9uIHcoeCl7eC5kb25lP24oeC52YWx1ZSk6KG5ldyBsKGZ1bmN0aW9uKEMpe0MoeC52YWx1ZSl9KSkudGhlbihxLHUpfXcoKG09bS5hcHBseShoLGt8fFtdKSkubmV4dCgpKX0pfSxlPXRoaXMmJnRoaXMueGF8fGZ1bmN0aW9uKGgsayl7ZnVuY3Rpb24gbCh4KXtyZXR1cm4gZnVuY3Rpb24oQyl7cmV0dXJuIG0oW3gsQ10pfX1mdW5jdGlvbiBtKHgpe2lmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtuOyl0cnl7aWYocj0xLHEmJih1PXhbMF0mMj9xW1wicmV0dXJuXCJdOnhbMF0/cVtcInRocm93XCJdfHwoKHU9cVtcInJldHVyblwiXSkmJnUuY2FsbChxKSwwKTpxLm5leHQpJiYhKHU9dS5jYWxsKHEseFsxXSkpLmRvbmUpcmV0dXJuIHU7aWYocT0wLHUpeD1beFswXSYyLHUudmFsdWVdO3N3aXRjaCh4WzBdKXtjYXNlIDA6Y2FzZSAxOnU9eDticmVhaztjYXNlIDQ6cmV0dXJuIG4ubGFiZWwrKyx7dmFsdWU6eFsxXSxkb25lOiExfTtcbmNhc2UgNTpuLmxhYmVsKys7cT14WzFdO3g9WzBdO2NvbnRpbnVlO2Nhc2UgNzp4PW4ubC5wb3AoKTtuLmkucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHU9bi5pLHU9MDx1Lmxlbmd0aCYmdVt1Lmxlbmd0aC0xXSkmJig2PT09eFswXXx8Mj09PXhbMF0pKXtuPTA7Y29udGludWV9aWYoMz09PXhbMF0mJighdXx8eFsxXT51WzBdJiZ4WzFdPHVbM10pKW4ubGFiZWw9eFsxXTtlbHNlIGlmKDY9PT14WzBdJiZuLmxhYmVsPHVbMV0pbi5sYWJlbD11WzFdLHU9eDtlbHNlIGlmKHUmJm4ubGFiZWw8dVsyXSluLmxhYmVsPXVbMl0sbi5sLnB1c2goeCk7ZWxzZXt1WzJdJiZuLmwucG9wKCk7bi5pLnBvcCgpO2NvbnRpbnVlfX14PWsuY2FsbChoLG4pfWNhdGNoKEMpe3g9WzYsQ10scT0wfWZpbmFsbHl7cj11PTB9aWYoeFswXSY1KXRocm93IHhbMV07cmV0dXJue3ZhbHVlOnhbMF0/eFsxXTp2b2lkIDAsZG9uZTohMH19dmFyIG49e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKHVbMF0mMSl0aHJvdyB1WzFdO1xucmV0dXJuIHVbMV19LGk6W10sbDpbXX0scixxLHUsdztyZXR1cm4gdz17bmV4dDpsKDApLFwidGhyb3dcIjpsKDEpLFwicmV0dXJuXCI6bCgyKX0sXCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmKHdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksd307T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGY9ZygxMDUpLGM9ZygxMzgpLGE9Zyg4Nyk7eT1nKDE0OCk7dmFyIGI9ZygyNTApLGQ9W1wicmVuZGVyZWRcIixcImNsb3Nlc3RhcnRcIixcImNsb3NlZFwiLFwidmlld2FibGVhZGNvbnRlbnRcIl07Zz1mdW5jdGlvbihoKXtmdW5jdGlvbiBrKGwsbSl7dmFyIG49aC5jYWxsKHRoaXMpfHx0aGlzO24uSGk9e3R5cGU6bC5hbmltYXRpb24sTmM6e319O24uZnI9bC5tTTtuLnNhPXtnYTpsLmdhLFROOmwub24/MTA6MCxmYjpsLlpifTtuLkhmPXtaaDp7Y29udGVudDpudWxsLGJhY2tncm91bmQ6bnVsbH0scmQ6bC5qS307bi5QYj17TmQ6bnVsbCxcbkltOm51bGwsZ3Q6ITEsdW86ITF9O24uQ2Y9bC5PZTtuLmE9bTtuLlg9bnVsbDtuLmdiPWwuZGc7bi52PWwuRDtuLlo9e3ZpZXdwb3J0OntkdDpmdW5jdGlvbigpe2Zvcih2YXIgcj1bXSxxPTA7cTxhcmd1bWVudHMubGVuZ3RoO3ErKylyW3FdPWFyZ3VtZW50c1txXTtyZXR1cm4gbi5jbG9zZS5hcHBseShuLHIpfX0scG9zaXRpb246e3N2OmZ1bmN0aW9uKCl7cmV0dXJuIG4ueXkoKX19fTtyZXR1cm4gbn12KGssaCk7ay5IPWZ1bmN0aW9uKCl7cmV0dXJuIGR9O2sucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gYS5kZWZhdWx0LlVjfTtrLnByb3RvdHlwZS5XZT1mdW5jdGlvbigpe3JldHVybntwaDp0aGlzLkdsKCl9fTtrLnByb3RvdHlwZS5uYz1mdW5jdGlvbihsKXt0aGlzLlg9e0htOmwsTWU6bC5xdWVyeVNlbGVjdG9yKFwiLmludmlldy1sZXZlbC0wXCIpLE5zOmwucGFyZW50Tm9kZSxNZDpsLnF1ZXJ5U2VsZWN0b3IoXCIuaW52aWV3LWxldmVsLTFcIiksSm06bC5xdWVyeVNlbGVjdG9yKFwiLnR5bnQtYWQtZnJhbWUtY29udGFpbmVyXCIpLFxuTjpsLnF1ZXJ5U2VsZWN0b3IoXCIudHludC1hZC1mcmFtZVwiKSxZYjpbXSxvdjpbXSxyazpudWxsfTt0aGlzLmEuYi53Yih0aGlzLlguTWUsXCJ0eW50LXRhbGxib3lcIik7dGhpcy5nYi5uYyhsKX07ay5wcm90b3R5cGUub3Blbj1mdW5jdGlvbigpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBsLG07cmV0dXJuIGUodGhpcyxmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiBsPXRoaXMuWCx0aGlzLkFzKCksbT10aGlzLlBiLkltLndpZHRoLHRoaXMuYS5iLnFiKGwuTWQsZi5kZWZhdWx0LnhmKS5WKGwuTWQsdGhpcy5zYS5nYS5WYiwtbStcInB4XCIpLHRoaXMuY3koKS52eSgpLHRoaXMuc2EuZmIubU8obSkuS20obC5OcykudShcInBvc2l0aW9uY2hhbmdlXCIsdGhpcy5aLnBvc2l0aW9uLnN2KSxbNCx0aGlzLmhoKCldO2Nhc2UgMTpyZXR1cm4gbi5tKCksWzIsdGhpc119fSl9KX07ay5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzLFxudm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBsPXRoaXM7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihtKXtzd2l0Y2gobS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLnYuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBsLmYoXCJjbG9zZXN0YXJ0XCIpfSwwKSxbNCx0aGlzLmdzKFwiY2xvc2VcIildO2Nhc2UgMTpyZXR1cm4gbS5tKCksdGhpcy52LnNjcm9sbEJ5KDAsMSksdGhpcy52LnNjcm9sbEJ5KDAsLTEpLHRoaXMuZihcImNsb3NlZFwiKSxbMix0aGlzXX19KX0pfTtrLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy50RigpO3RoaXMuZnIuSigpO3RoaXMud20oe1ViOiExfSk7dGhpcy5KKCk7dGhpcy5zYS5mYi5uYShcInBvc2l0aW9uY2hhbmdlXCIsdGhpcy5aLnBvc2l0aW9uLnN2KTt0aGlzLmdiLmooKTtyZXR1cm4gdGhpc307ay5wcm90b3R5cGUuS2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYi5ndH07ay5wcm90b3R5cGUuR2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYS5nYS52ZXJ0aWNhbCtcblwiLVwiK3RoaXMuc2EuZ2EuVmIrXCI6XCIrdGhpcy5IaS50eXBlfTtrLnByb3RvdHlwZS5jeT1mdW5jdGlvbigpe3ZhciBsPXRoaXM7dGhpcy5nYi51KFwiY2xpY2tcIixmdW5jdGlvbigpe3JldHVybiBsLmNsb3NlKCl9KTt0aGlzLmEudmlld3BvcnQuTWImJnRoaXMuZHkoKTtyZXR1cm4gdGhpc307ay5wcm90b3R5cGUuZHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7cmV0dXJuIG0uY2xvc2UoKX12YXIgbT10aGlzLG49XCJzd2lwZVwiK3RoaXMuc2EuZ2EuVmI7dGhpcy5hLmIud2IodGhpcy5YLk1lLFwidHludC1tb2JpbGUtY2xvc2UtYnV0dG9uXCIpO3RoaXMuZ2IudShcInRhcFwiLGwpLnUobixsKTt0aGlzLmZyLnUobixmdW5jdGlvbihyKXtyLnRhcmdldD09PW0udi5kb2N1bWVudC5ib2R5JiZyLmRldGFpbC5GTSYmbS5jbG9zZSgpfSwhMSx7c3dpcGVWZWxvY2l0eTouN30pfTtrLnByb3RvdHlwZS52eT1mdW5jdGlvbigpe3ZhciBsLG09dGhpcy5aLnZpZXdwb3J0LmhQPXRoaXMuYS5kYS5Qaih7dG46dGhpcy5waixcbmRlbGF5VGltZTo4MDAseHY6bnVsbCxjb250ZXh0OnRoaXN9KSxuPXRoaXMuWi52aWV3cG9ydC5kdDt0aGlzLmEudmlld3BvcnQub25jZShjLmRlZmF1bHQuQmQsbikub25jZShjLmRlZmF1bHQuVGMsbikuZmEoKGw9e30sbFtjLmRlZmF1bHQudGNdPW0sbFtjLmRlZmF1bHQuQ2ldPW0sbCkpfTtrLnByb3RvdHlwZS50Rj1mdW5jdGlvbigpe3ZhciBsLG09dGhpcy5aLnZpZXdwb3J0LmhQLG49dGhpcy5aLnZpZXdwb3J0LmR0O3RoaXMuYS52aWV3cG9ydC5PYSgobD17fSxsW2MuZGVmYXVsdC50Y109bSxsW2MuZGVmYXVsdC5DaV09bSxsW2MuZGVmYXVsdC5CZF09bixsW2MuZGVmYXVsdC5UY109bixsKSl9O2sucHJvdG90eXBlLkFzPWZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5QYixtPWwuTmQ7aWYobnVsbD09PWwuSW18fG51bGw9PT1tKWw9dGhpcy5QYi5JbT10aGlzLkNmLlMoKSx0aGlzLmEuYi5Idih0aGlzLlguSm0sbCksdGhpcy5QYi5OZD17d2lkdGg6bC53aWR0aCt0aGlzLnNhLlROLFxuaGVpZ2h0OmwuaGVpZ2h0fX07ay5wcm90b3R5cGUuaGg9ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGwpe3N3aXRjaChsLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuYS5ZYi5yZXNldCgpLHRoaXMuUGIuZ3Q9ITAsdGhpcy5mKFwidmlld2FibGVhZGNvbnRlbnRcIiksWzQsdGhpcy5ncyhcIm9wZW5cIildO2Nhc2UgMTpyZXR1cm4gbC5tKCksdGhpcy5mKFwicmVuZGVyZWRcIikuQXMoKSxbMix0aGlzXX19KX0pfTtrLnByb3RvdHlwZS5ncz1mdW5jdGlvbihsKXt2YXIgbT10aGlzLG47cmV0dXJuKG49e30sbi5wdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIG0ubUcobCl9LG4ub3ZlcmxheT1mdW5jdGlvbigpe3JldHVybiBtLkdFKGwpfSxuKVt0aGlzLkhpLnR5cGVdKCl9O2sucHJvdG90eXBlLkdFPWZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnBqKCkucnMobCl9O2sucHJvdG90eXBlLm1HPWZ1bmN0aW9uKGwpe3JldHVybiBQcm9taXNlLmFsbChbdGhpcy5ycyhsKSxcbnRoaXMucnoobCkoKV0pfTtrLnByb3RvdHlwZS5ycz1mdW5jdGlvbihsKXt2YXIgbT10aGlzLG49dGhpcy5YLHI9dGhpcy5hLnZpZXdwb3J0Lk1iPzUwMDowO2w9XCJjbG9zZVwiPT09bD8tdGhpcy5hLmIuekwobi5NZCk6MDt0aGlzLkhpLk5jW3RoaXMuc2EuZ2EuVmJdPWwrXCJweFwiO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihxKXttLnYuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBtLmEuYW5pbWF0aW9uLmFuaW1hdGUobi5NZCxtLkhpLHEpfSxyKX0pfTtrLnByb3RvdHlwZS5IcT1mdW5jdGlvbihsLG0pe3JldHVybiB0aGlzLkhmLnJkLmNKKGwsbSx7YW5pbWF0ZTp0aGlzLmEuYW5pbWF0aW9uLmFuaW1hdGV9KX07ay5wcm90b3R5cGUucno9ZnVuY3Rpb24obCl7dmFyIG09dGhpcyxuLHI9e1ViOiF0aGlzLmEudmlld3BvcnQuTWJ9O3JldHVybihuPXt9LG4ub3Blbj1mdW5jdGlvbigpe3JldHVybiBtLk9xKCkuVHIocil9LG4uY2xvc2U9ZnVuY3Rpb24oKXtyZXR1cm4gbS53bShyKX0sXG5uKVtsXX07ay5wcm90b3R5cGUueXk9ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGwpe3N3aXRjaChsLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy53bSh7VWI6ITF9KV07Y2FzZSAxOnJldHVybiBsLm0oKSx0aGlzLk9xKCksWzQsdGhpcy5Ucih7VWI6ITF9KV07Y2FzZSAyOnJldHVybiBsLm0oKSxbMl19fSl9KX07ay5wcm90b3R5cGUuT3E9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLlgsbT10aGlzLmEuWWI7bS5LbShsLk5zKS5QbSh0aGlzLnYsdGhpcy5zYS5mYik7Yi5kZWZhdWx0LmV4dGVuZChsLHtZYjptLlhkKCksb3Y6bS5iYWNrZ3JvdW5kfSk7dGhpcy5hLnZpZXdwb3J0Lk1ifHwobC5yaz1tLmxnKTt0aGlzLnBqKCk7cmV0dXJuIHRoaXN9O2sucHJvdG90eXBlLlRyPWZ1bmN0aW9uKGwpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBtO3JldHVybiBlKHRoaXMsXG5mdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiBtPXRoaXMuYS5ZYi5iayh0aGlzLnNhLmdhLlZiKSx0aGlzLlBiLk5kLndpZHRoPm0/WzQsdGhpcy5ERihtLGwpXTpbMywyXTtjYXNlIDE6cmV0dXJuIG4ubSgpLFsyLHRoaXNdO2Nhc2UgMjpyZXR1cm4gdGhpcy5zYS5mYi5vYnNlcnZlKCksWzIsdGhpc119fSl9KX07ay5wcm90b3R5cGUuREY9ZnVuY3Rpb24obCxtKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbixyLHEsdTtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKHcpe3N3aXRjaCh3LmxhYmVsKXtjYXNlIDA6cmV0dXJuIG49e2Zyb206bCwkaDp0aGlzLlBiLk5kLndpZHRoLGJOOnRoaXMuc2EuZ2EuVmIsRDp0aGlzLnZ9LHI9dGhpcy5IZi5aaD17Y29udGVudDp0aGlzLnNBKG4pLGJhY2tncm91bmQ6dGhpcy5IcSh0aGlzLlgub3Ysbil9LHE9ci5jb250ZW50LHU9ci5iYWNrZ3JvdW5kLHRoaXMuUGIudW89ITAsWzQsdGhpcy5hLmRhLnZvKFt7eWg6ZnVuY3Rpb24oKXtmb3IodmFyIHg9XG5bXSxDPTA7Qzxhcmd1bWVudHMubGVuZ3RoO0MrKyl4W0NdPWFyZ3VtZW50c1tDXTtyZXR1cm4gcS5zaGlmdC5hcHBseShxLFttXS5jb25jYXQoeCkpfX0se3loOmZ1bmN0aW9uKCl7Zm9yKHZhciB4PVtdLEM9MDtDPGFyZ3VtZW50cy5sZW5ndGg7QysrKXhbQ109YXJndW1lbnRzW0NdO3JldHVybiB1LkVPLmFwcGx5KHUsW21dLmNvbmNhdCh4KSl9fV0pXTtjYXNlIDE6cmV0dXJuIHcubSgpLHRoaXMucGooKSx0aGlzLmEuWWIuQnYoKSx0aGlzLnNhLmZiLmZPKHRoaXMuWC5ZYikub2JzZXJ2ZSgpLHRoaXMub3koKSxbMl19fSl9KX07ay5wcm90b3R5cGUub3k9ZnVuY3Rpb24oKXt2YXIgbD10aGlzO3RoaXMuc2EuZmIuZmEoe3N0aWNreWVsZW1lbnRhZGQ6ZnVuY3Rpb24obSl7cmV0dXJuIGwuZnkobSl9LHN0aWNreWVsZW1lbnRyZW1vdmU6ZnVuY3Rpb24obSl7cmV0dXJuIGwubkYobSl9LHN0aWNreWVsZW1lbnRjaGFuZ2U6ZnVuY3Rpb24obSl7cmV0dXJuIGwuSEYobSl9fSl9O2sucHJvdG90eXBlLnNBPVxuZnVuY3Rpb24obCl7dmFyIG09dGhpcy5MeigpO3JldHVybiB0aGlzLkhxKG0sbCl9O2sucHJvdG90eXBlLkx6PWZ1bmN0aW9uKCl7dmFyIGw9Yi5kZWZhdWx0LlFlKHRoaXMuWC5ZYix0aGlzLnNhLmZiLlhpKTtyZXR1cm4gYi5kZWZhdWx0LlFlKGwsdGhpcy5hLlliLlRLKCkpfTtrLnByb3RvdHlwZS53bT1mdW5jdGlvbihsKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbSxuLHIscT10aGlzO3JldHVybiBlKHRoaXMsZnVuY3Rpb24odSl7c3dpdGNoKHUubGFiZWwpe2Nhc2UgMDppZighdGhpcy5QYi51bylyZXR1cm5bMixuZXcgUHJvbWlzZShmdW5jdGlvbih3KXtxLnYuc2V0VGltZW91dCh3LDQwMCl9KV07dGhpcy5zYS5mYi5kaXNjb25uZWN0KCk7dGhpcy5QYi51bz0hMTttPXRoaXMuSGYuWmg7bj1tLmNvbnRlbnQ7cj1tLmJhY2tncm91bmQ7cmV0dXJuWzQsdGhpcy5hLmRhLnZvKFt7eWg6ZnVuY3Rpb24oKXtmb3IodmFyIHc9W10seD0wO3g8YXJndW1lbnRzLmxlbmd0aDt4Kyspd1t4XT1cbmFyZ3VtZW50c1t4XTtyZXR1cm4gbi51bnNoaWZ0LmFwcGx5KG4sW2xdLmNvbmNhdCh3KSl9fSx7eWg6ZnVuY3Rpb24oKXtmb3IodmFyIHc9W10seD0wO3g8YXJndW1lbnRzLmxlbmd0aDt4Kyspd1t4XT1hcmd1bWVudHNbeF07cmV0dXJuIHIuY1AuYXBwbHkocixbbF0uY29uY2F0KHcpKX19XSldO2Nhc2UgMTpyZXR1cm4gdS5tKCksdGhpcy5hLlliLkJ2KCksWzIsdGhpc119fSl9KX07ay5wcm90b3R5cGUuZnk9ZnVuY3Rpb24obCl7dGhpcy5IZi5aaC5jb250ZW50LmFkZEVsZW1lbnQobCx0aGlzLlBiLk5kLndpZHRoKTtyZXR1cm4gdGhpc307ay5wcm90b3R5cGUubkY9ZnVuY3Rpb24obCl7dGhpcy5hLlliLnFQKGwpfHx0aGlzLkhmLlpoLmNvbnRlbnQuS04obCk7cmV0dXJuIHRoaXN9O2sucHJvdG90eXBlLkhGPWZ1bmN0aW9uKGwpe3RoaXMuSGYuWmguY29udGVudC5EdihsKTtyZXR1cm4gdGhpc307ay5wcm90b3R5cGUucGo9ZnVuY3Rpb24oKXt0aGlzLmEudmlld3BvcnQuTWImJlxudGhpcy5GQygpJiZ0aGlzLnYuc2Nyb2xsQnkoMCwwKTt0aGlzLmEuYi5WKHRoaXMuWC5NZCxcImJvdHRvbVwiLHRoaXMuS3ooKStcInB4XCIpO3JldHVybiB0aGlzfTtrLnByb3RvdHlwZS5Lej1mdW5jdGlvbigpe3ZhciBsPXRoaXMuT0IoKS5oZWlnaHQsbT10aGlzLmEuYjttPXRoaXMuYS52aWV3cG9ydC5NYj9tLnRhKG0uWEkoKSkuYm90dG9tOm0uY2sodGhpcy52KTt2YXIgbj10aGlzLmJDKCk7bD1tLW4tbDtyZXR1cm5cImJvdHRvbVwiPT09dGhpcy5zYS5nYS52ZXJ0aWNhbD9NYXRoLm1pbihsLDApOmx9O2sucHJvdG90eXBlLkZDPWZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5hLlliO3JldHVybiBsLmJrKHRoaXMuc2EuZ2EuVmIpIT09bC50TCh0aGlzLnNhLmdhLlZiKX07ay5wcm90b3R5cGUuT0I9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLmEuYi50YSh0aGlzLlguTWQpLG09dGhpcy5nYi5SdCgpO2wudG9wPU1hdGgubWluKG0sbC50b3ApO2wuaGVpZ2h0PWwuYm90dG9tLWwudG9wO3JldHVybiBsfTtcbmsucHJvdG90eXBlLmJDPWZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5YO3JldHVybiBsLnJrJiYhdGhpcy5hLmIudWQobC5yaywhMCk/KGw9dGhpcy5hLmIudGEobC5yayksTWF0aC5tYXgobC5ib3R0b20sMCkpOjB9O3JldHVybiBrfSh5LmRlZmF1bHQpO2cuJEg9ITA7dC5kZWZhdWx0PUguRFM9Z30sezEwNToxMDUsMTM4OjEzOCwxNDg6MTQ4LDI1MDoyNTAsODc6ODd9XSw5ODpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoNzMpO3QuZGVmYXVsdD1ILmlRPXtJSjpmdW5jdGlvbihwLGUpe3JldHVybiBuZXcgdi5kZWZhdWx0KHAsZSl9fX0sezczOjczfV0sOTk6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGEpe2Zvcih2YXIgYixkPTEsaD1hcmd1bWVudHMubGVuZ3RoO2Q8aDtkKyspe2I9YXJndW1lbnRzW2RdO2Zvcih2YXIgayBpbiBiKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLFxuaykmJihhW2tdPWJba10pfXJldHVybiBhfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcCxlPWcoMTIzKTtnPWcoMjE4KTt2YXIgZj0ocD17fSxwW2cuZGVmYXVsdC5wYV09ITEscFtnLmRlZmF1bHQub2VdPSExLHBbZy5kZWZhdWx0LmthXT0hMCxwKSxjPVtcImNsb3NlLWJ1dHRvblwiXTtwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXt2YXIgZD1iLk9kLGg9Yi5iTSxrPWIuZ2EsbD1iLnZkO3RoaXMueWw9Yi5PO3RoaXMuSmw9aDt0aGlzLk1nPWQ7dGhpcy56Rz1rO3RoaXMuYmM9bH1hLnByb3RvdHlwZS5qTD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuTWdbXCJ0eW50LWFkXCJdLGQ9dGhpcy5KbC5MSygpLGg9e3N0YXJ0UG9zaXRpb25Ib3Jpem9udGFsOnRoaXMuekcuVmIsaXNPZmZTY3JlZW5BZFVuaXQ6ISFmW3RoaXMuYmNdLHVuaXF1ZUlkOmQsdGFnOnRoaXMuWEIoKX07cmV0dXJue2dIOmQsU246Yi5CayhoKXx8XCJcIn19O2EucHJvdG90eXBlLmlDPVxuZnVuY3Rpb24oKXt2YXIgYj10aGlzO3JldHVybiBjLnJlZHVjZShmdW5jdGlvbihkLGgpe3ZhciBrO3JldHVybiB2KHt9LGQsKGs9e30sa1toXT1iLk1nW2hdfHxcIlwiLGspKX0se30pfTthLnByb3RvdHlwZS5YQj1mdW5jdGlvbigpe3ZhciBiPXtpc1RvdWNoQWRVbml0OmUuZGVmYXVsdC5JTSh0aGlzLnlsKX07cmV0dXJuIHRoaXMuWUIoKS5CayhiLHRoaXMuaUMoKSl9O2EucHJvdG90eXBlLllCPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5NZ1t0aGlzLmJjXTtpZighYil0aHJvdyBFcnJvcihcIkNvdWxkIG5vdCBsb2NhdGUgdGVtcGxhdGUgZm9yIFwiK3RoaXMuYmMpO3JldHVybiBifTtyZXR1cm4gYX0oKTt0LmRlZmF1bHQ9SC5qUT1wfSx7MTIzOjEyMywyMTg6MjE4fV0sMTAwOltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIGYsYz0xLGE9YXJndW1lbnRzLmxlbmd0aDtjPGE7YysrKXtmPWFyZ3VtZW50c1tjXTtcbmZvcih2YXIgYiBpbiBmKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLGIpJiYoZVtiXT1mW2JdKX1yZXR1cm4gZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9Zyg5OSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZixjLGEpe3RoaXMuTWc9Zjt0aGlzLkpsPWM7dGhpcy5iYz1hfWUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbihmKXtmPXYoe30sZix7T2Q6dGhpcy5NZyxiTTp0aGlzLkpsLHZkOnRoaXMuYmN9KTtyZXR1cm4gbmV3IHAuZGVmYXVsdChmKX07cmV0dXJuIGV9KCk7dC5kZWZhdWx0PUgua1E9Z30sezk5Ojk5fV0sMTAxOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApO3QuZGVmYXVsdD1ILmxRPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcCgpe31wLkxLPWZ1bmN0aW9uKCl7dmFyIGU7dm9pZCAwPT09ZSYmKGU9XG5cInR5bnQtYWQtXCIpO3JldHVyblwiXCIrZSt2LmRlZmF1bHQud3YoKX07cmV0dXJuIHB9KCl9LHsyNTA6MjUwfV0sMTAyOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PUguRFQ9ZnVuY3Rpb24odixwKXt2PXYuakwoKTt2YXIgZT12LmdILGY9di5TbjtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYyl7cC5YbihmLnRyaW0oKSxmdW5jdGlvbigpe3ZhciBhPXAuV2MsYj1hLnF1ZXJ5U2VsZWN0b3IoXCIjXCIrZSk7YT1hLnF1ZXJ5U2VsZWN0b3IoXCIudHludC12aWV3YWJpbGl0eVwiKTtjKHtJOmIsbGQ6YSxQczpiLnF1ZXJ5U2VsZWN0b3IoXCIudHludC1hZC1mcmFtZVwiKX0pfSl9KX19LHt9XSwxMDM6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIzOCkscD1nKDI1MCksZT1nKDIxOCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoYyl7dGhpcy5yYT1cbmMuWmE7dGhpcy5lYT1jLm5iO3RoaXMuU3g9Yy5Nczt0aGlzLk5nPXt9O3RoaXMudj1jLkQ7dGhpcy55YT17YWU6Yy5hZSxHOmMuRyxJOmMuSX07dGhpcy5wbD1jLllhfWYucHJvdG90eXBlLnZqPWZ1bmN0aW9uKGMpe3RoaXMudUIoYyk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLlRIPWZ1bmN0aW9uKGMpe2M9dGhpcy5reihjKTtyZXR1cm4gdGhpcy5lYS5rZC5JSihjLHRoaXMuTmcpfTtmLnByb3RvdHlwZS51Qj1mdW5jdGlvbihjKXtwLmRlZmF1bHQuZXh0ZW5kKHRoaXMuTmcsYyl9O2YucHJvdG90eXBlLmpBPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhLkRqLmZuKGMucmIuVGgsYy5TKCksdGhpcy5wbCl9O2YucHJvdG90eXBlLmt6PWZ1bmN0aW9uKGMpe3ZhciBhPXRoaXMueGUodi5kZWZhdWx0LkZnLGMuUygpKSxiPXRoaXMucmEuY3UoKTthPXRoaXMuU3guY3JlYXRlKHt0ajphLE9lOmMsdmQ6YixHOnRoaXMueWEuRyxhZTp0aGlzLnlhLmFlfSk7cmV0dXJue01lOmEsaWs6dGhpcy5lYS5pay5jcmVhdGUoYixcbmEpLGtIOmMucmIuVGgsYWY6dGhpcy5uQSh0aGlzLnlhLkkpLEk6dGhpcy55YS5JLERqOnRoaXMuakEoYyl9fTtmLnByb3RvdHlwZS5uQT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYS5hZi53SihjLHtzdG9wUHJvcGFnYXRpb246IXRoaXMuQnooKX0pfTtmLnByb3RvdHlwZS5Cej1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhLmN1KCk9PT1lLmRlZmF1bHQucGF9O2YucHJvdG90eXBlLnhlPWZ1bmN0aW9uKGMsYSl7YT1wLmRlZmF1bHQuZXh0ZW5kKHtmaWx0ZXJzOntzaXplOmF9fSx2b2lkIDApO3JldHVybiB0aGlzLnJhLk1hKGMsYSl9O3JldHVybiBmfSgpO3QuZGVmYXVsdD1ILmVRPWd9LHsyMTg6MjE4LDIzODoyMzgsMjUwOjI1MH1dLDEwNDpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZil7Zm9yKHZhciBjLGE9MSxiPWFyZ3VtZW50cy5sZW5ndGg7YTxiO2ErKyl7Yz1hcmd1bWVudHNbYV07Zm9yKHZhciBkIGluIGMpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsXG5kKSYmKGZbZF09Y1tkXSl9cmV0dXJuIGZ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMTAzKSxlPWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihjKXt0aGlzLlp4PWM7dGhpcy5OZz17fX1mLnByb3RvdHlwZS52aj1mdW5jdGlvbihjKXtlLmRlZmF1bHQuZXh0ZW5kKHRoaXMuTmcsYyk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLlFJPWZ1bmN0aW9uKGMpe3JldHVybihuZXcgcC5kZWZhdWx0KHYoe30sdGhpcy5aeCxjKSkpLnZqKHRoaXMuTmcpfTtyZXR1cm4gZn0oKTt0LmRlZmF1bHQ9Z30sezEwMzoxMDMsMjUwOjI1MH1dLDEwNTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILmZRPXt4cDpcInR5bnQtYWQtY29sbGFwc2VcIixvaTpcInR5bnQtYWQtZXhwYW5zaW9uXCIsTXc6XCJ0eW50LWFkLWRpc3BsYXlcIixCaTpcInR5bnQtYWQtc2Nyb2xsZXJcIixcbnd4OlwidHludC1hZC1zY3JvbGxlci1vcGVuXCIseGk6XCJ0eW50LWFkLXBhcmFsbGF4XCIseGY6XCJ0eW50LW5vdC12aWV3YWJsZVwiLE5wOlwidHludC1oaWRkZW5cIn19LHt9XSwxMDY6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KG4pe251bGwhPT1uJiZuLmooKX12YXIgcD10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIG49T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIscSl7ci5fX3Byb3RvX189cX18fGZ1bmN0aW9uKHIscSl7Zm9yKHZhciB1IGluIHEpcS5oYXNPd25Qcm9wZXJ0eSh1KSYmKHJbdV09cVt1XSl9O3JldHVybiBmdW5jdGlvbihyLHEpe2Z1bmN0aW9uIHUoKXt0aGlzLmNvbnN0cnVjdG9yPXJ9bihyLHEpO3IucHJvdG90eXBlPW51bGw9PT1xP09iamVjdC5jcmVhdGUocSk6KHUucHJvdG90eXBlPXEucHJvdG90eXBlLG5ldyB1KX19KCksZT10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihuLHIscSx1KXtyZXR1cm4gbmV3IChxfHxcbihxPVByb21pc2UpKShmdW5jdGlvbih3LHgpe2Z1bmN0aW9uIEMoSyl7dHJ5e0IodS5uZXh0KEspKX1jYXRjaChGKXt4KEYpfX1mdW5jdGlvbiBEKEspe3RyeXtCKHVbXCJ0aHJvd1wiXShLKSl9Y2F0Y2goRil7eChGKX19ZnVuY3Rpb24gQihLKXtLLmRvbmU/dyhLLnZhbHVlKToobmV3IHEoZnVuY3Rpb24oRil7RihLLnZhbHVlKX0pKS50aGVuKEMsRCl9QigodT11LmFwcGx5KG4scnx8W10pKS5uZXh0KCkpfSl9LGY9dGhpcyYmdGhpcy54YXx8ZnVuY3Rpb24obixyKXtmdW5jdGlvbiBxKEspe3JldHVybiBmdW5jdGlvbihGKXtyZXR1cm4gdShbSyxGXSl9fWZ1bmN0aW9uIHUoSyl7aWYoeCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO3c7KXRyeXtpZih4PTEsQyYmKEQ9S1swXSYyP0NbXCJyZXR1cm5cIl06S1swXT9DW1widGhyb3dcIl18fCgoRD1DW1wicmV0dXJuXCJdKSYmRC5jYWxsKEMpLDApOkMubmV4dCkmJiEoRD1ELmNhbGwoQyxcbktbMV0pKS5kb25lKXJldHVybiBEO2lmKEM9MCxEKUs9W0tbMF0mMixELnZhbHVlXTtzd2l0Y2goS1swXSl7Y2FzZSAwOmNhc2UgMTpEPUs7YnJlYWs7Y2FzZSA0OnJldHVybiB3LmxhYmVsKysse3ZhbHVlOktbMV0sZG9uZTohMX07Y2FzZSA1OncubGFiZWwrKztDPUtbMV07Sz1bMF07Y29udGludWU7Y2FzZSA3Oks9dy5sLnBvcCgpO3cuaS5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoRD13LmksRD0wPEQubGVuZ3RoJiZEW0QubGVuZ3RoLTFdKSYmKDY9PT1LWzBdfHwyPT09S1swXSkpe3c9MDtjb250aW51ZX1pZigzPT09S1swXSYmKCFEfHxLWzFdPkRbMF0mJktbMV08RFszXSkpdy5sYWJlbD1LWzFdO2Vsc2UgaWYoNj09PUtbMF0mJncubGFiZWw8RFsxXSl3LmxhYmVsPURbMV0sRD1LO2Vsc2UgaWYoRCYmdy5sYWJlbDxEWzJdKXcubGFiZWw9RFsyXSx3LmwucHVzaChLKTtlbHNle0RbMl0mJncubC5wb3AoKTt3LmkucG9wKCk7Y29udGludWV9fUs9ci5jYWxsKG4sdyl9Y2F0Y2goRil7Sz1cbls2LEZdLEM9MH1maW5hbGx5e3g9RD0wfWlmKEtbMF0mNSl0aHJvdyBLWzFdO3JldHVybnt2YWx1ZTpLWzBdP0tbMV06dm9pZCAwLGRvbmU6ITB9fXZhciB3PXtsYWJlbDowLG06ZnVuY3Rpb24oKXtpZihEWzBdJjEpdGhyb3cgRFsxXTtyZXR1cm4gRFsxXX0saTpbXSxsOltdfSx4LEMsRCxCO3JldHVybiBCPXtuZXh0OnEoMCksXCJ0aHJvd1wiOnEoMSksXCJyZXR1cm5cIjpxKDIpfSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiYoQltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxCfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgYz1nKDcxKSxhPWcoMTcwKSxiPWcoMTA4KSxkPWcoMjUwKTt5PWcoMTQ4KTt2YXIgaD1nKDEwNyksaz1cInJlcXVlc3RzdGFydCBmaWxsIG5vZmlsbCBpbXByZXNzaW9uIHRhcmdldGluZ3VwZGF0ZSBkaWFnbm9zdGljcyBiZW5jaG1hcmtzXCIuc3BsaXQoXCIgXCIpLGw9ay5zbGljZSgpLFxubT1mdW5jdGlvbihuKXtmdW5jdGlvbiByKHEpe3ZhciB1PW4uY2FsbCh0aGlzKXx8dGhpczt1LiRhKHIuSCgpKTt1LnpsPXEuUmo7dS5DYj1xLlNiO3Uuamw9cS5hZzt1LkxhPXt0YWc6bnVsbCxrZDpudWxsLHdoOm51bGwsVWo6bnVsbH07dS5MZj17VGI6cS5UYixZYTpxLllhfTtyZXR1cm4gdX1wKHIsbik7ci5IPWZ1bmN0aW9uKCl7cmV0dXJuIGt9O3IucHJvdG90eXBlLlBhPWZ1bmN0aW9uKHEpe3N3aXRjaCh0aGlzLnltKHEpLnRsKCkpe2Nhc2UgYS5kZWZhdWx0LnpmOnJldHVybiB0aGlzLlZsKCk7Y2FzZSBhLmRlZmF1bHQucmk6cmV0dXJuIHRoaXMuQnIoKTtkZWZhdWx0OnJldHVybiB0aGlzLmVHKCkuakcoKS5ubShoLmRlZmF1bHQuQWkpLmRtKGguZGVmYXVsdC5BaSl9fTtyLnByb3RvdHlwZS5wYz1mdW5jdGlvbihxKXtzd2l0Y2godGhpcy5jcygpLnltKHEpLnRsKCkpe2Nhc2UgYS5kZWZhdWx0LnpmOnJldHVybiB0aGlzLlZsKCk7Y2FzZSBhLmRlZmF1bHQucmk6cmV0dXJuIHRoaXMuQnIoKTtcbmRlZmF1bHQ6cmV0dXJuIHRoaXMubm0oaC5kZWZhdWx0LnppKS5kbShoLmRlZmF1bHQuemkpfX07ci5wcm90b3R5cGUuZmY9ZnVuY3Rpb24ocSl7cmV0dXJuIHRoaXMueW0ocSkudGwoKT09PWEuZGVmYXVsdC56Zj90aGlzLlZsKCk6dGhpcy5ubShoLmRlZmF1bHQuSGcpLmRtKGguZGVmYXVsdC5IZyl9O3IucHJvdG90eXBlLlZkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTGEudGFnfTtyLnByb3RvdHlwZS5qYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkxhLmtkfTtyLnByb3RvdHlwZS51bj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkxhLndofTtyLnByb3RvdHlwZS5Bbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkxhLlVqfTtyLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5MZi5ZYS5KKCk7dGhpcy5jcygpLkooKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUudGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5MYS53aC5KdT90aGlzLmpEKCk/YS5kZWZhdWx0LnJpOm51bGw6YS5kZWZhdWx0LnpmfTtcbnIucHJvdG90eXBlLnh6PWZ1bmN0aW9uKHEpe3E9KHZvaWQgMD09PXE/e306cSkuSUs7cmV0dXJuKHZvaWQgMD09PXE/MDpxKT9iLmRlZmF1bHQuS3A6bnVsbH07ci5wcm90b3R5cGUuRXk9ZnVuY3Rpb24ocSl7dGhpcy5MYS50YWc9cTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuRnk9ZnVuY3Rpb24ocSl7dih0aGlzLkxhLmtkKTt0aGlzLkxhLmtkPXE7dGhpcy5jRygpfTtyLnByb3RvdHlwZS5jcz1mdW5jdGlvbigpe3ZhciBxPXRoaXMuTGE7dihxLnRhZyk7cS50YWc9bnVsbDt2KHEua2QpO3Eua2Q9bnVsbDtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUueW09ZnVuY3Rpb24ocSl7dGhpcy5MYS53aD10aGlzLnpsLlFhKHEpO3RoaXMuTGEuVWo9dGhpcy54eihxKTt0aGlzLklhKFwiTWF0Y2hpbmcgcHVibGlzaGVyIGV4Y2x1c2lvbnM6XCIsdGhpcy5MYS53aC5ubyk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLmpEPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTGEuVWo9PT1iLmRlZmF1bHQuS3B9O1xuci5wcm90b3R5cGUubm09ZnVuY3Rpb24ocSl7dmFyIHU9dGhpcy5MYS53aC5JdDt0aGlzLmZqKHEpLkpEKHEsdSkuUkYodSk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLkpEPWZ1bmN0aW9uKHEsdSl7dmFyIHc7dT1bXCJhZCByZXF1ZXN0OlwiLFwiZWxpZ2libGVTaXplcyA9XCIsdS5qb2luKFwiLFwiKV07dmFyIHg9KHc9e30sd1toLmRlZmF1bHQuQWldPVwiU3RhcnRpbmdcIix3W2guZGVmYXVsdC56aV09XCJSZWZyZXNoaW5nXCIsd1toLmRlZmF1bHQuSGddPVwiUmVmcmVzaGluZyAoaW4tcGxhY2UpXCIsdyk7dGhpcy5JYS5hcHBseSh0aGlzLFt4W3FdXS5jb25jYXQodSkpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5SRj1mdW5jdGlvbihxKXt0aGlzLkNiLmtPKHEpfTtyLnByb3RvdHlwZS5kbT1mdW5jdGlvbihxKXt2YXIgdSx3PXRoaXMuQ2I7KHU9e30sdVtoLmRlZmF1bHQuQWldPWZ1bmN0aW9uKCl7cmV0dXJuIHcuUGEoKX0sdVtoLmRlZmF1bHQuemldPWZ1bmN0aW9uKCl7cmV0dXJuIHcucGMoKX0sXG51W2guZGVmYXVsdC5IZ109ZnVuY3Rpb24oKXtyZXR1cm4gdy5wYygpfSx1KVtxXSgpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5lRz1mdW5jdGlvbigpe3RoaXMuTGYuWWEuTmEoXCJiZW5jaG1hcmtzXCIsdGhpcyk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLmpHPWZ1bmN0aW9uKCl7dmFyIHE9dGhpczt0aGlzLkNiLnUoXCJhZHJlc3BvbnNlXCIsZnVuY3Rpb24odSl7dmFyIHc9Yy5kZWZhdWx0LmplKHUpO3EuSWEoXCJSZWNlaXZlZCByZXNwb25zZSBmcm9tIGFkIHNlcnZlcjpcIix3KS5BeSh1KS5FeSh1KS56RCgpfSkudShcIm5vZmlsbHJlc3BvbnNlXCIsZnVuY3Rpb24odSl7cS5JYShcIkFkIHNlcnZlciBjb3VsZCBub3QgZmluZCBkZW1hbmQgdG8gZmlsbCB0aGUgc2xvdC5cIikuQmUoYS5kZWZhdWx0Lkp3LHUpfSkudShcImVycm9yXCIsZnVuY3Rpb24odSl7cS5JYShcIkFkIHJlcXVlc3QgZmFpbGVkIGFuIGFkIGR1ZSB0byBlcnJvciBvciB0aW1lb3V0LlwiKS5CZShhLmRlZmF1bHQueWQsdSl9KS5OYShcInRhcmdldGluZ3VwZGF0ZVwiLFxudGhpcykuTmEoXCJiZW5jaG1hcmtzXCIsdGhpcykuTmEoXCJkaWFnbm9zdGljc1wiLHRoaXMpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS56RD1mdW5jdGlvbigpe3RoaXMuamMoKT90aGlzLlBHKCk6dGhpcy5DRCgpfTtyLnByb3RvdHlwZS5QRz1mdW5jdGlvbigpe3RoaXMuenIoKTt0aGlzLmpjKCkuSnYodGhpcy5WZCgpLiR0KCkpLlB2KCl9O3IucHJvdG90eXBlLkNEPWZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5qbC5USCh0aGlzLkxhLnRhZyk7dGhpcy5GeShxKTt0aGlzLnpyKCl9O3IucHJvdG90eXBlLkF5PWZ1bmN0aW9uKHEpe3RoaXMuTGYuVGIuT2MocS5TKCkpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5jRz1mdW5jdGlvbigpe3ZhciBxPXRoaXM7dGhpcy5qYygpLk5hKFwiaW1wcmVzc2lvblwiLHRoaXMpLk5hKFwiZGlhZ25vc3RpY3NcIix0aGlzKS5vbmNlKFwiY2xvc2VkXCIsZnVuY3Rpb24oKXtyZXR1cm4gcS5MYS5rZC5qKCl9KX07ci5wcm90b3R5cGUuenI9ZnVuY3Rpb24oKXt0aGlzLmYoXCJmaWxsXCIpfTtcbnIucHJvdG90eXBlLkJlPWZ1bmN0aW9uKCl7Zm9yKHZhciBxPVtdLHU9MDt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKXFbdV09YXJndW1lbnRzW3VdO3RoaXMuZi5hcHBseSh0aGlzLFtcIm5vZmlsbFwiXS5jb25jYXQocSkpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5WbD1mdW5jdGlvbigpe3RoaXMuSWEoXCJVc2VyIGlzIG5vdCBlbGlnaWJsZSBmb3IgYW55IGFkIGZyb20gdGhpcyBzb3VyY2UuIFNraXBwaW5nIGFkIHJlcXVlc3QuXCIpO3JldHVybiB0aGlzLkJlKGEuZGVmYXVsdC56Zil9O3IucHJvdG90eXBlLkJyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSWEoXCJTa2lwcGluZyBhZCByZXF1ZXN0IGZyb20gdGhpcyBzb3VyY2UgZHVlIHRvIGZpbHRlcjogXCIrdGhpcy5MYS5VaikuQmUoYS5kZWZhdWx0LnJpKX07ci5wcm90b3R5cGUuZmo9ZnVuY3Rpb24ocSl7dGhpcy5mKFwicmVxdWVzdHN0YXJ0XCIscSk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7Zm9yKHZhciBxPVxuW10sdT0wO3U8YXJndW1lbnRzLmxlbmd0aDt1KyspcVt1XT1hcmd1bWVudHNbdV07ZC5kZWZhdWx0LmxvZy5hcHBseShkLmRlZmF1bHQsW3RoaXMuQ2IuQigpLFwiOlwiXS5jb25jYXQocSkpO3JldHVybiB0aGlzfTtyZXR1cm4gcn0oeS5kZWZhdWx0KTtnPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHIocSl7dmFyIHU9bi5jYWxsKHRoaXMpfHx0aGlzO3UuJGEoci5IKCkpO3Uuemw9cS5Sajt1LkNiPXEuU2I7dS5qbD1xLmFnO3Uuc2I9e1hiOm51bGwsanY6MH07dS5MZj17VGI6cS5UYixZYTpxLllhfTtyZXR1cm4gdX1wKHIsbik7ci5IPWZ1bmN0aW9uKCl7cmV0dXJuIGx9O3IucHJvdG90eXBlLlBhPWZ1bmN0aW9uKHEpe3ZhciB1PXRoaXMsdz1tLkgoKTt0aGlzLnNiLlhiPW5ldyBtKHtSajp0aGlzLnpsLFNiOnRoaXMuQ2IsYWc6dGhpcy5qbCxUYjp0aGlzLkxmLlRiLFlhOnRoaXMuTGYuWWF9KTt3LmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIHUuc2IuWGIuTmEoeCx1KX0pO3RoaXMuc2IuWGIudShcInJlcXVlc3RzdGFydFwiLFxuZnVuY3Rpb24oKXsrK3Uuc2IuanZ9KTt0aGlzLnNiLlhiLlBhKHEpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5Bbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNiLlhiLkFuKCl9O3IucHJvdG90eXBlLnBjPWZ1bmN0aW9uKHEpezA8dGhpcy5zYi5qdj90aGlzLnNiLlhiLnBjKHEpOih2KHRoaXMuc2IuWGIpLHRoaXMuUGEocSkpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5mZj1mdW5jdGlvbihxKXt0aGlzLnNiLlhiLmZmKHEpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5WZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNiLlhiLlZkKCl9O3IucHJvdG90eXBlLlFLPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuVmQoKS5yYi5leGNoYW5nZX07ci5wcm90b3R5cGUuamM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zYi5YYi5qYygpfTtyLnByb3RvdHlwZS51bj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNiLlhiLnVuKCl9O3IucHJvdG90eXBlLkN0PWZ1bmN0aW9uKHEpe3E9KHZvaWQgMD09PVxucT97fTpxKS5NTTt2YXIgdT12b2lkIDA9PT1xP3t9OnE7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHc7cmV0dXJuIGYodGhpcyxmdW5jdGlvbih4KXtzd2l0Y2goeC5sYWJlbCl7Y2FzZSAwOnJldHVybiB3PXRoaXMuamMoKSxbNCx3LmZhKHUpLkp2KHRoaXMuVmQoKS4kdCgpKS5vcGVuKCldO2Nhc2UgMTpyZXR1cm4geC5tKCksWzIsdGhpc119fSl9KX07ci5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuSigpO3RoaXMuQ2IuaigpO3YodGhpcy5zYi5YYik7cmV0dXJuIHRoaXN9O3JldHVybiByfSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1nO0guc1E9Z30sezEwNzoxMDcsMTA4OjEwOCwxNDg6MTQ4LDE3MDoxNzAsMjUwOjI1MCw3MTo3MX1dLDEwNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILm9SPXtBaTpcIlJFUVVFU1RcIix6aTpcIlJFRlJFU0hcIixIZzpcIlJFRlJFU0hfSU5MSU5FXCJ9fSxcbnt9XSwxMDg6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9e0twOlwicmVncz1nZHByXCJ9fSx7fV0sMTA5OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBjPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWJ9fHxmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCBpbiBiKWIuaGFzT3duUHJvcGVydHkoZCkmJihhW2RdPWJbZF0pfTtyZXR1cm4gZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKCl7dGhpcy5jb25zdHJ1Y3Rvcj1hfWMoYSxiKTthLnByb3RvdHlwZT1udWxsPT09Yj9PYmplY3QuY3JlYXRlKGIpOihkLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgZCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPVxuXCJlbnRyeXJlcXVlc3RzdGFydCBlbnRyeWZpbGwgZW50cnlub2ZpbGwgZW50cnl2aWV3YWJsZWFkc2xvdCBzdGFydCBmaW5pc2ggaW1wcmVzc2lvbiB0YXJnZXRpbmd1cGRhdGUgZGlhZ25vc3RpY3MgYmVuY2htYXJrc1wiLnNwbGl0KFwiIFwiKSxlPXtyZXF1ZXN0c3RhcnQ6XCJlbnRyeXJlcXVlc3RzdGFydFwiLHZpZXdhYmxlYWRzbG90OlwiZW50cnl2aWV3YWJsZWFkc2xvdFwiLGltcHJlc3Npb246XCJpbXByZXNzaW9uXCIsdGFyZ2V0aW5ndXBkYXRlOlwidGFyZ2V0aW5ndXBkYXRlXCIsZGlhZ25vc3RpY3M6XCJkaWFnbm9zdGljc1wiLGJlbmNobWFya3M6XCJiZW5jaG1hcmtzXCIsZmlsbDpcImVudHJ5ZmlsbFwiLG5vZmlsbDpcImVudHJ5bm9maWxsXCJ9LGY9XCJyZXF1ZXN0c3RhcnQgdmlld2FibGVhZHNsb3QgaW1wcmVzc2lvbiB0YXJnZXRpbmd1cGRhdGUgZGlhZ25vc3RpY3MgYmVuY2htYXJrc1wiLnNwbGl0KFwiIFwiKTtnPWZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGEoKXt2YXIgYj1jLmNhbGwodGhpcyl8fHRoaXM7XG5iLiRhKGEuSCgpKTtiLkdkPVtdO2IuV2k9bmV3IFdlYWtNYXA7Yi5DbD0wO2IuUWk9LTE7Yi5LYT1udWxsO2IuaW09bnVsbDtyZXR1cm4gYn12KGEsYyk7YS5IPWZ1bmN0aW9uKCl7cmV0dXJuIHB9O2EucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihiKXt0aGlzLkdkLnB1c2goYik7dGhpcy5XaS5zZXQoYix7fSk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLlBhPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXM7dGhpcy5HZC5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBkLmJGKGgpfSk7dGhpcy5maChiLHtRYTpmdW5jdGlvbihoKXtyZXR1cm4gaC5QYShiKX19KTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUucGM9ZnVuY3Rpb24oYil7dGhpcy5maChiLHtRYTpmdW5jdGlvbihkKXtyZXR1cm4gZC5wYyhiKX19KTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuZmY9ZnVuY3Rpb24oYil7dGhpcy5maChiLHtRYTpmdW5jdGlvbihkKXtyZXR1cm4gZC5mZihiKX19KTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuaj1cbmZ1bmN0aW9uKCl7dGhpcy5HZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe3JldHVybiBiLmooKX0pO3RoaXMuR2Q9W107dGhpcy5XaT1uZXcgV2Vha01hcDt0aGlzLmltPXRoaXMuS2E9bnVsbDt0aGlzLkNsPTA7dGhpcy5nbSgpLkooKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuZUw9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuR2QuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBiPT09ZC5DYi5CKCl9KVswXXx8bnVsbH07YS5wcm90b3R5cGUuZmg9ZnVuY3Rpb24oYixkKXt2YXIgaD10aGlzO3RoaXMuS2E9Yjt0aGlzLmltPWQ7dGhpcy5HZC5mb3JFYWNoKGZ1bmN0aW9uKGspe3JldHVybiBoLkZHKGspfSk7dGhpcy5nbSgpLkFHKCk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLkFHPWZ1bmN0aW9uKCl7Kyt0aGlzLkNsO3RoaXMuZihcInN0YXJ0XCIpO3RoaXMuRnEoKX07YS5wcm90b3R5cGUuRnE9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnp5KCksZD10aGlzLmltO2I/ZC5RYShiLHRoaXMuS2EpOlxudGhpcy5kQigpfTthLnByb3RvdHlwZS5iRj1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKGspe3JldHVybiBiLnUoayxmdW5jdGlvbigpe2Zvcih2YXIgbD1bXSxtPTA7bTxhcmd1bWVudHMubGVuZ3RoO20rKylsW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gaC55ci5hcHBseShoLFtrLGJdLmNvbmNhdChsKSl9KX12YXIgaD10aGlzO2YuZm9yRWFjaChmdW5jdGlvbihrKXtyZXR1cm4gZChrKX0pO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS55cj1mdW5jdGlvbihiLGQpe2Zvcih2YXIgaD1bXSxrPTI7azxhcmd1bWVudHMubGVuZ3RoO2srKyloW2stMl09YXJndW1lbnRzW2tdO3RoaXMuZi5hcHBseSh0aGlzLFtlW2JdLGRdLmNvbmNhdChoKSk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLkZHPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoayl7dmFyIGw9aC5XaS5nZXQoYilba109ZnVuY3Rpb24oKXtmb3IodmFyIG09W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspbVtuXT1hcmd1bWVudHNbbl07XG52YXIgcjsocj1oLk1HKGIpKS55ci5hcHBseShyLFtrLGJdLmNvbmNhdChtKSkuRnEoKX07Yi51KGssbCl9dmFyIGg9dGhpcztbXCJmaWxsXCIsXCJub2ZpbGxcIl0uZm9yRWFjaChmdW5jdGlvbihrKXtyZXR1cm4gZChrKX0pO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5NRz1mdW5jdGlvbihiKXt2YXIgZD10aGlzO1tcImZpbGxcIixcIm5vZmlsbFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBiLm5hKGgsZC5XaS5nZXQoYilbaF0pfSk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLmRCPWZ1bmN0aW9uKCl7dGhpcy5mKFwiZmluaXNoXCIpfTthLnByb3RvdHlwZS56eT1mdW5jdGlvbigpe3RoaXMuZkQoKT90aGlzLmdtKCk6Kyt0aGlzLlFpO3JldHVybiB0aGlzLkdkW3RoaXMuUWldfTthLnByb3RvdHlwZS5nbT1mdW5jdGlvbigpe3RoaXMuUWk9LTE7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLmZEPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUWk9PT10aGlzLkdkLmxlbmd0aC0xfTtyZXR1cm4gYX0oZygxNDgpLmRlZmF1bHQpO1xudC5kZWZhdWx0PWc7SC5xUT1nfSx7MTQ4OjE0OH1dLDExMDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlKXt0aGlzLkpzPWU7dGhpcy5lYz10aGlzLkpzLktKKCl9cC5wcm90b3R5cGUuRks9ZnVuY3Rpb24oZSl7dmFyIGY9dGhpcztlLmZvckVhY2goZnVuY3Rpb24oYyl7di5kZWZhdWx0LmxvZyhcIkFkZGluZyB0byB3YXRlcmZhbGw6IFwiK2MubXApO2YuZWMuYXBwZW5kKGYubUEoYykpfSk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLm1BPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLkpzLmhKKGUubXApfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9ZztILnJRPWd9LHsyNTA6MjUwfV0sMTExOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxMDYpLHA9ZygxMDkpO2c9XG5mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZil7dGhpcy5LPWYuRzt0aGlzLlZ4PWYuVGI7dGhpcy5lYT1mLm5ifWUucHJvdG90eXBlLmhKPWZ1bmN0aW9uKGYpe3ZhciBjPXRoaXMuSy5TKCksYT10aGlzLmVhLm5LLnBkKCksYj10aGlzLmVhLlBlLkNJKGEpO2Y9dGhpcy5lYS5TYi5CSihmLGMsYik7Yz10aGlzLmVhLmFnLlFJKHtZYTphfSk7Yj10aGlzLmVhLmhILm50KGYsdGhpcy5LKTtyZXR1cm4gdGhpcy5nSih7U2I6ZixhZzpjLFJqOmIsWWE6YSxUYjp0aGlzLlZ4fSl9O2UucHJvdG90eXBlLmdKPWZ1bmN0aW9uKGYpe3JldHVybiBuZXcgdi5kZWZhdWx0KGYpfTtlLnByb3RvdHlwZS5LSj1mdW5jdGlvbigpe3JldHVybiBuZXcgcC5kZWZhdWx0fTtyZXR1cm4gZX0oKTt0LmRlZmF1bHQ9ZztILnRRPWd9LHsxMDY6MTA2LDEwOToxMDl9XSwxMTI6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KEYsTCx6KXtmdW5jdGlvbiBBKCl7dmFyIE89bmV3IERhdGUtSixTPUJbSV0oTy9HKTtPPj1cbkcmJihFLmJuPSEwKTtoKEYsTCxFLFMpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBMLnN0ZXAmJkwuc3RlcChTKTtNPUMoQSk7RS5ibiYmayhNLEYseil9dmFyIEo9bmV3IERhdGUsST1MLmRVfHxcImxpbmVhclwiLEc9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBMLmR1cmF0aW9uJiZcIm51bWJlclwiPT09dHlwZW9mIEwuZHVyYXRpb24/TC5kdXJhdGlvbjo0MDAsRT17TmM6W10sbGY6bnVsbCx2dDp7fSxjdDowLGR1cmF0aW9uOkcsYm46ITEsQm86bnVsbH0sTTtGLmxlbmd0aHx8KEY9W0ZdKTt3LnB1c2goRik7aWYoXCJ3aWR0aFwiaW4gTC5OY3x8XCJoZWlnaHRcImluIEwuTmMpTC5RaD1hKEYpOzA9PT1HPyhoKEYsTCxFLG51bGwpLGsobnVsbCxGLHopKTpDKEEpfWZ1bmN0aW9uIHAoRixMLHosQSl7XCIwXCIhPT1MJiZtLmRlZmF1bHQuc2hvdyhGKTtsLmFuaW1hdGUoRix7TmM6e29wYWNpdHk6TH0sZHVyYXRpb246en0sZnVuY3Rpb24oSil7XCIwXCI9PT1MJiZtLmRlZmF1bHQuJGUoSlswXSk7XCJmdW5jdGlvblwiPT09XG50eXBlb2YgQSYmQShKKX0pfWZ1bmN0aW9uIGUoRixMLHope2wucm4oRixcIjBcIixMLHopfWZ1bmN0aW9uIGYoRixMLHope20uZGVmYXVsdC5zaG93KEYpO2wucm4oRixcIjFcIixMLHopfWZ1bmN0aW9uIGMoRil7dmFyIEw9e30sej1GLm1hdGNoKC9eKFsrLV0pPS8pO0wuQW89bnVsbDt6JiYoTC5Bbz1cIitcIj09PXpbMV0/XCJhZGRcIjpcInN1YnRyYWN0XCIsRj1GLnJlcGxhY2UoelswXSxcIlwiKSk7TC5VPU51bWJlcihGLm1hdGNoKHIpWzBdKTtMLnpiPUYubWF0Y2gocSk/Ri5tYXRjaChxKVswXTpcIlwiO3JldHVybiBMfWZ1bmN0aW9uIGEoRil7Zm9yKHZhciBMPVtdLHo9MDt6PEYubGVuZ3RoO3orKylMLnB1c2goe292ZXJmbG93Om0uZGVmYXVsdC5BKEZbel0sXCJvdmVyZmxvd1wiKSxvdmVyZmxvd1k6bS5kZWZhdWx0LkEoRlt6XSxcIm92ZXJmbG93LXlcIil9KSxGW3pdLnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCI7cmV0dXJuIEx9ZnVuY3Rpb24gYihGKXtDPUYucmVxdWVzdEFuaW1hdGlvbkZyYW1lO0Q9Ri5jYW5jZWxBbmltYXRpb25GcmFtZTtcbm4uZGVmYXVsdC50ZyhDKXx8dS5zb21lKGZ1bmN0aW9uKEwpe0M9RltMK1wiUmVxdWVzdEFuaW1hdGlvbkZyYW1lXCJdO0Q9RltMK1wiQ2FuY2VsQW5pbWF0aW9uRnJhbWVcIl18fEZbTCtcIkNhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZVwiXTtyZXR1cm4gbi5kZWZhdWx0LnRnKEMpfSl9ZnVuY3Rpb24gZChGKXtuLmRlZmF1bHQudGcoQykmJm4uZGVmYXVsdC50ZyhEKXx8KEM9ZnVuY3Rpb24oTCl7dmFyIHo9KG5ldyBEYXRlKS5nZXRUaW1lKCksQT1NYXRoLm1heCgwLDE2LSh6LXgpKSxKPUYuc2V0VGltZW91dChmdW5jdGlvbigpe0woeitBKX0sQSk7eD16K0E7cmV0dXJuIEp9LEQ9ZnVuY3Rpb24oTCl7cmV0dXJuIEYuY2xlYXJUaW1lb3V0KEwpfSl9ZnVuY3Rpb24gaChGLEwseixBKXtmb3IodmFyIEo9T2JqZWN0LmtleXMoTC5OYyksST1GLmxlbmd0aCxHPTA7RzxJO0crKyl7dmFyIEU9dm9pZCAwO3ZhciBNPXt9LE89bS5kZWZhdWx0LiRkKEZbR10sSik7Zm9yKEUgaW4gTylpZihPLmhhc093blByb3BlcnR5KEUpKXt2YXIgUz1cbk9bRV07aWYoXCJhdXRvXCI9PT1TfHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIFN8fFwiXCI9PT1TKVM9XCIwcHhcIjtLW0VdfHwoUz1jKFMpKTtNW0VdPVN9RT1NO3ouSHQ9Rzt6Lk5jPUo7ei52YWx1ZXM9TC5OYzt6LnZ0PUU7ei5sZj1MLmxmO3ouY3Q9QTt6LlFoPUwuUWg7RT1GW0ddO009ejtPPU0udmFsdWVzO1M9TS5OYztmb3IodmFyIERhPU0ubGYsdmE9TS52dCx3YT1NLmN0LHlhPU0uYm4sYmE9Uy5sZW5ndGgscmE9MDtyYTxiYTtyYSsrKXt2YXIgemE9U1tyYV0sRWE9S1t6YV0seGE9dmFbemFdLEJhPU9bemFdO2lmKEVhJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgRWEuc3RlcClFYS5zdGVwKHhhLEJhLHdhKTtlbHNle3hhPXZhW3phXTtCYT1jKEJhKTtpZihCYS5Bbyl7dmFyIEthPUJhO3ZhciBJYT12b2lkIDA7dmFyIE49QmEuVSxQPXhhLlUsVT1CYS5BbzswIT09TS5kdXJhdGlvbiYmXCJudW1iZXJcIj09PXR5cGVvZiBNLkJvP0lhPU0uQm86KFwiYWRkXCI9PT1VJiYoSWE9TitQKSxcInN1YnRyYWN0XCI9PT1cblUmJihJYT1OLVApLE0uQm89SWEpO0thLlU9SWF9eGEuVSs9d2EqKEJhLlUteGEuVSl9aWYoeWF8fDA9PT1NLmR1cmF0aW9uKU0uUWgmJihFLnN0eWxlLm92ZXJmbG93PU0uUWhbTS5IdF0ub3ZlcmZsb3csRS5zdHlsZS5vdmVyZmxvd1k9TS5RaFtNLkh0XS5vdmVyZmxvd1kpLHhhPUJhO0VhfHwoeGE9eGEuVSt4YS56Yik7bS5kZWZhdWx0LlYoRSx6YSx4YSxEYSl9fX1mdW5jdGlvbiBrKEYsTCx6KXt2YXIgQT13LmluZGV4T2YoTCk7MDw9QSYmdy5zcGxpY2UoQSwxKTtGJiZEKEYpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiB6JiZ6KEwpfXZhciBsPXRoaXM7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIG09ZygxMjcpLG49ZygyNTApLHI9L1swLTkuLV17MSx9L2dpLHE9L3B4fGVtfHJlbXxjbXxtbXxpbnxwdHxwY3wlfGRlZy9naSx1PVtcIm1zXCIsXCJtb3pcIixcIndlYmtpdFwiLFwib1wiXSx3PVtdLHg9MCxDLEQsQj17bGluZWFyOmZ1bmN0aW9uKEYpe3JldHVybiBGfSxcbmVhc2VJbjpmdW5jdGlvbihGKXtyZXR1cm4gMS1NYXRoLnNpbihNYXRoLmFjb3MoRikpfX0sSz17YmFja2dyb3VuZFBvc2l0aW9uOntwYXJzZTpmdW5jdGlvbihGKXtyZXR1cm4gRn0sc3RlcDpmdW5jdGlvbihGLEwseil7W1wieFwiLFwieVwiXS5mb3JFYWNoKGZ1bmN0aW9uKEEpe0ZbQV0uVSs9eiooTFtBXS5VLUZbQV0uVSl9KX0sc3RyaW5naWZ5OmZ1bmN0aW9uKEYpe3JldHVybiBGfX19O0gudUs9ZjtILnZLPWU7SC5ybj1wO0guYW5pbWF0ZT12O3QuZGVmYXVsdD1mdW5jdGlvbihGKXtiKEYpO2QoRik7cmV0dXJue3VLOmYsdks6ZSxybjpwLGFuaW1hdGU6dn19fSx7MTI3OjEyNywyNTA6MjUwfV0sMTEzOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihULFgscGEpe3ZhciBvYT1uYi5KYjtvYT1PLmRlZmF1bHQuSGMoKS5JTChvYSkuQ2I7cGE9WmEuamkuUXQocGEpLmlMKFQpO04uZGVmYXVsdC5sb2coXCIgIEhlYWRlciBCaWRkaW5nOiBcIitUK1wiIHdvbiB0aGUgYXVjdGlvbi5cIik7b2EuTk0ocGEsXG5YKX1mdW5jdGlvbiBwKFQpe3JldHVybiBuZXcgdy5kZWZhdWx0KHthdDplYi5kZWZhdWx0LG5iOntNZTp4LmRlZmF1bHQseGI6eWEuZGVmYXVsdCxkZzpuZXcgUy5kZWZhdWx0LExrOkMuZGVmYXVsdCxaYjpDYS5kZWZhdWx0LHp0OlBhLmRlZmF1bHQsR3Q6VWEuZGVmYXVsdH0sRDpUfSx7Yjp2YS5kZWZhdWx0LHhiOndhLmRlZmF1bHQsZGE6S2EuZGVmYXVsdCx2aWV3cG9ydDpQLmRlZmF1bHQuSGgoKX0pfWZ1bmN0aW9uIGUoVCl7dmFyIFg9VC5vaCxwYT1ULnJoO3JldHVybihuZXcgSS5kZWZhdWx0KHtaYTpULlphLEc6VC5HLEk6VC5JLFlhOlQuWWEsTXM6cChULkQpLG5iOntrZDpHLmRlZmF1bHQsYWY6bmV3IHJhLmRlZmF1bHQoUC5kZWZhdWx0LkhoKCkpLGlrOntjcmVhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIG9hPVtdLGRhPTA7ZGE8YXJndW1lbnRzLmxlbmd0aDtkYSsrKW9hW2RhXT1hcmd1bWVudHNbZGFdO3JldHVybiBuZXcgKEUuZGVmYXVsdC5iaW5kLmFwcGx5KEUuZGVmYXVsdCxcblt2b2lkIDBdLmNvbmNhdChvYSkpKX19LERqOnBhfSxhZTpYLldjfSkpLnZqKHtiOnZhLmRlZmF1bHQsbWE6YmEuZGVmYXVsdCxkYTpLYS5kZWZhdWx0fSl9ZnVuY3Rpb24gZihULFgpe3JldHVybiBkKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYSxvYTtyZXR1cm4gaCh0aGlzLGZ1bmN0aW9uKCl7cGE9bmV3IHEuZGVmYXVsdChtLmRlZmF1bHQsci5kZWZhdWx0LEJhLmRlZmF1bHQua2EpO29hPXBhLmNyZWF0ZSh7TzpULGdhOntWYjpcImxlZnRcIix2ZXJ0aWNhbDpcImJvdHRvbVwifX0pO3JldHVyblsyLG4uZGVmYXVsdChvYSxYKV19KX0pfWZ1bmN0aW9uIGMoVCl7dmFyIFg9VC5TYixwYT1ULm9oLG9hPVQuSSxkYT1ULkcsbGE9VC5aYSxtYT1ULlRiLFk9VC5yaCxoYT1ULllhO1Q9VC5EO3ZhciBXPW5ldyB1LmRlZmF1bHQoe30pO3JldHVybiBuZXcgTS5kZWZhdWx0KHtTYjpYLGFnOmUoe0Q6VCxaYTpsYSxvaDpwYSxHOmRhLFlhOmhhLEk6b2Escmg6WX0pLFJqOlcubnQoWCxcbmRhKSxUYjptYSxZYTpoYX0pfWZ1bmN0aW9uIGEoVCxYKXtyZXR1cm4gZCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGEsb2EsZGEsbGEsbWEsWSxoYSxXO3JldHVybiBoKHRoaXMsZnVuY3Rpb24odWEpe3N3aXRjaCh1YS5sYWJlbCl7Y2FzZSAwOnJldHVybiB1YT1uZXcgSWEuZGVmYXVsdCx1YT17ZG9jdW1lbnQ6WC5kb2N1bWVudCxVdjp7fSxDVDp1YS5uZygpfSxwYT0obmV3IEsuZGVmYXVsdCh1YSx7Yjp2YS5kZWZhdWx0LHhiOndhLmRlZmF1bHQseXQ6RGEuZGVmYXVsdCxkYTpLYS5kZWZhdWx0fSkpLnJ0KCksWzQscGEuYnQoKV07Y2FzZSAxOnJldHVybiB1YS5tKCksb2E9bmV3IGwuZGVmYXVsdCh7Yjp2YS5kZWZhdWx0LHFkOndhLmRlZmF1bHR9KSxbNCxmKFQuZ2V0KFwiZGV2aWNlRmFtaWx5XCIpLHBhKV07Y2FzZSAyOnJldHVybiBkYT11YS5tKCksbGE9ZGEuSSxtYT1kYS5QcyxZPWRhLmxkLGhhPW5ldyBvYi5kZWZhdWx0KG1hLHtiOnZhLmRlZmF1bHQsbWE6YmEuZGVmYXVsdCxcbnFkOndhLmRlZmF1bHR9KSxXPW9hLnpJKGhhKSxbMix7TjpoYSxJOmxhLG9oOnBhLGFhOm9hLHNqOlcuUngsdmI6Vy5LZyxOZTpXLlR4LGxkOll9XX19KX0pfWZ1bmN0aW9uIGIoVCxYLHBhKXtyZXR1cm4gZCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgb2EsZGEsbGEsbWEsWSxoYSxXLHVhLFFhLFZhLEZhLGZiLGdiLGhiO3JldHVybiBoKHRoaXMsZnVuY3Rpb24oV2Epe3N3aXRjaChXYS5sYWJlbCl7Y2FzZSAwOnJldHVybiBvYT1PLmRlZmF1bHQudUwoKSxkYT0obmV3IEIuZGVmYXVsdCh7UXM6bmV3IEYuZGVmYXVsdCh7YXc6bmV3IEwuZGVmYXVsdCwkdjpuZXcgei5kZWZhdWx0fSl9KSkubXQoQmEuZGVmYXVsdC5rYSx2b2lkIDApLGxhPW5ldyBpYS5kZWZhdWx0LG1hPW5hLmRlZmF1bHQucGQoKSxZPUguJCgpLFs0LGEoVCxZKV07Y2FzZSAxOmhhPVdhLm0oKTtXPWhhLk47dWE9aGEuSTtRYT1oYS5vaDtWYT1oYS5hYTtGYT1oYS5zajtmYj1oYS52YjtnYj1oYS5OZTtcbmhiPW5ldyBVLmRlZmF1bHQoZmIsbGEsbWEpO1dhPW1hO3ZhciBwYj1sYSwkYT1uZXcgWi5kZWZhdWx0KFcsZGEpLGliPUZhLHFiPWdiLHJiPXVhO3ZhciBhYj1kYTt2YXIgYmI9VyxNYT1oYjthYj1uZXcgc2Ioe2NvbnRlbnQ6WCxzaXplOk4uZGVmYXVsdC5yYyhwYSksWGE6bmV3IEouZGVmYXVsdChhYixiYiksUGU6TWEsTjpiYn0pO3JldHVyblsyLHtZYTpXYSxyaDpwYixUYjokYSxzajppYixOZTpxYixJOnJiLFNiOmFiLG9oOlFhLFphOm9hLEc6ZGEsYWE6VmEsRDpZfV19fSl9KX12YXIgZD10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihULFgscGEsb2Epe3JldHVybiBuZXcgKHBhfHwocGE9UHJvbWlzZSkpKGZ1bmN0aW9uKGRhLGxhKXtmdW5jdGlvbiBtYShXKXt0cnl7aGEob2EubmV4dChXKSl9Y2F0Y2godWEpe2xhKHVhKX19ZnVuY3Rpb24gWShXKXt0cnl7aGEob2FbXCJ0aHJvd1wiXShXKSl9Y2F0Y2godWEpe2xhKHVhKX19ZnVuY3Rpb24gaGEoVyl7Vy5kb25lP2RhKFcudmFsdWUpOlxuKG5ldyBwYShmdW5jdGlvbih1YSl7dWEoVy52YWx1ZSl9KSkudGhlbihtYSxZKX1oYSgob2E9b2EuYXBwbHkoVCxYfHxbXSkpLm5leHQoKSl9KX0saD10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihULFgpe2Z1bmN0aW9uIHBhKFcpe3JldHVybiBmdW5jdGlvbih1YSl7cmV0dXJuIG9hKFtXLHVhXSl9fWZ1bmN0aW9uIG9hKFcpe2lmKGxhKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7ZGE7KXRyeXtpZihsYT0xLG1hJiYoWT1XWzBdJjI/bWFbXCJyZXR1cm5cIl06V1swXT9tYVtcInRocm93XCJdfHwoKFk9bWFbXCJyZXR1cm5cIl0pJiZZLmNhbGwobWEpLDApOm1hLm5leHQpJiYhKFk9WS5jYWxsKG1hLFdbMV0pKS5kb25lKXJldHVybiBZO2lmKG1hPTAsWSlXPVtXWzBdJjIsWS52YWx1ZV07c3dpdGNoKFdbMF0pe2Nhc2UgMDpjYXNlIDE6WT1XO2JyZWFrO2Nhc2UgNDpyZXR1cm4gZGEubGFiZWwrKyx7dmFsdWU6V1sxXSxkb25lOiExfTtcbmNhc2UgNTpkYS5sYWJlbCsrO21hPVdbMV07Vz1bMF07Y29udGludWU7Y2FzZSA3Olc9ZGEubC5wb3AoKTtkYS5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShZPWRhLmksWT0wPFkubGVuZ3RoJiZZW1kubGVuZ3RoLTFdKSYmKDY9PT1XWzBdfHwyPT09V1swXSkpe2RhPTA7Y29udGludWV9aWYoMz09PVdbMF0mJighWXx8V1sxXT5ZWzBdJiZXWzFdPFlbM10pKWRhLmxhYmVsPVdbMV07ZWxzZSBpZig2PT09V1swXSYmZGEubGFiZWw8WVsxXSlkYS5sYWJlbD1ZWzFdLFk9VztlbHNlIGlmKFkmJmRhLmxhYmVsPFlbMl0pZGEubGFiZWw9WVsyXSxkYS5sLnB1c2goVyk7ZWxzZXtZWzJdJiZkYS5sLnBvcCgpO2RhLmkucG9wKCk7Y29udGludWV9fVc9WC5jYWxsKFQsZGEpfWNhdGNoKHVhKXtXPVs2LHVhXSxtYT0wfWZpbmFsbHl7bGE9WT0wfWlmKFdbMF0mNSl0aHJvdyBXWzFdO3JldHVybnt2YWx1ZTpXWzBdP1dbMV06dm9pZCAwLGRvbmU6ITB9fXZhciBkYT17bGFiZWw6MCxtOmZ1bmN0aW9uKCl7aWYoWVswXSZcbjEpdGhyb3cgWVsxXTtyZXR1cm4gWVsxXX0saTpbXSxsOltdfSxsYSxtYSxZLGhhO3JldHVybiBoYT17bmV4dDpwYSgwKSxcInRocm93XCI6cGEoMSksXCJyZXR1cm5cIjpwYSgyKX0sXCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmKGhhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGhhfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgaz1nKDMpLGw9Zyg1KSxtPWcoMjQ4KSxuPWcoMTAyKSxyPWcoMTAxKSxxPWcoMTAwKSx1PWcoMTEpLHc9Zyg4MCkseD1nKDgzKSxDPWcoOTYpO3Q9ZygxNSk7dmFyIEQ9ZygxOSksQj1nKDU3KSxLPWcoNDkpLEY9Zyg2NiksTD1nKDYzKSx6PWcoNjApLEE9Zyg3MSksSj1nKDcyKSxJPWcoMTAzKSxHPWcoOTgpLEU9ZygyKSxNPWcoMTA2KSxPPWcoMTE2KSxTPWcoMTIwKSxEYT1nKDU4KSx2YT1nKDEyNyksd2E9ZygxNDcpLHlhPWcoMTQ5KSxiYT1nKDEyNikscmE9ZygxNDYpLHphPVxuZygxNjUpLEVhPWcoMTcxKSx4YT1nKDE3MyksQmE9ZygyMTgpLEthPWcoMjQ5KSxJYT1nKDEzNCksTj1nKDI1MCksUD1nKDI1MSksVT1nKDY3KSxaPWcoNDMpLGlhPWcoMTgwKSxuYT1nKDEzNyksQ2E9Zyg5MyksUGE9Zyg5MSksVWE9Zyg5NCksWmE9ZygyMTApLG9iPWcoMTgpLGViPWcoODgpLFJhPXQuZGVmYXVsdC5TYSxuYj1ELmRlZmF1bHQuU2Esc2I9RC5kZWZhdWx0LmlpLnl3O2c9RC5kZWZhdWx0LmlpLndmO0guQVBJPXkuamc9e0FkOntSZW5kZXI6ZnVuY3Rpb24oVCxYKXtyZXR1cm4gZCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGEsb2EsZGEsbGEsbWEsWTtyZXR1cm4gaCh0aGlzLGZ1bmN0aW9uKGhhKXtzd2l0Y2goaGEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcGE9Ty5kZWZhdWx0LkluKCksWzQsYihwYSxULFgpXTtjYXNlIDE6cmV0dXJuIG9hPWhhLm0oKSxkYT1vYS5hYSxsYT1vYS5OZSxtYT1jKG9hKSxZPWZ1bmN0aW9uKCl7dmFyIFc9ZGEsdWE9bGEsXG5RYT1tYSxWYT1wYTt1YT0obmV3IHhhLmRlZmF1bHQpLnN0KHVhKTsobmV3IHphLmpwKFcsSC4kKCkpKS5NaihRYSx6YS5sZS5Paih6YS5sZS50aCgpLFZhKSkuSWsodWEpLk12KCk7bWEuQ3QoKX0sbWEudShcImZpbGxcIixZKS5QYSgpLFsyXX19KX0pfSxJbmZvOmZ1bmN0aW9uKCl7dmFyIFQ9Ty5kZWZhdWx0LkhjKCkuRmQ7cmV0dXJuIFQ/KFQ9VC5WZCgpLEEuZGVmYXVsdC5qZShUKSk6bnVsbH0sQ29udGVudHM6ZnVuY3Rpb24oKXt2YXIgVD1PLmRlZmF1bHQuSGMoKS5GZDtyZXR1cm4gVD8oVD1ULlZkKCksVC5YZCgpKTpudWxsfSxJc0Jsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gTy5kZWZhdWx0Lk1LKCk9PT1rLmRlZmF1bHQuUWt9LFJlbmRlckFwbnhQcmU6ZnVuY3Rpb24oKXtmb3IodmFyIFQ9W10sWD0wO1g8YXJndW1lbnRzLmxlbmd0aDtYKyspVFtYXT1hcmd1bWVudHNbWF07di5hcHBseSh2b2lkIDAsW1JhLnVmXS5jb25jYXQoVCkpfSxSZW5kZXJBb2xQcmU6ZnVuY3Rpb24oKXtmb3IodmFyIFQ9XG5bXSxYPTA7WDxhcmd1bWVudHMubGVuZ3RoO1grKylUW1hdPWFyZ3VtZW50c1tYXTt2LmFwcGx5KHZvaWQgMCxbUmEuc2ZdLmNvbmNhdChUKSl9LFJlbmRlck94UHJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBUPVtdLFg9MDtYPGFyZ3VtZW50cy5sZW5ndGg7WCsrKVRbWF09YXJndW1lbnRzW1hdO3YuYXBwbHkodm9pZCAwLFtSYS55Zl0uY29uY2F0KFQpKX0sUmVuZGVyVHR4UHJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBUPVtdLFg9MDtYPGFyZ3VtZW50cy5sZW5ndGg7WCsrKVRbWF09YXJndW1lbnRzW1hdO3YuYXBwbHkodm9pZCAwLFtSYS5BZl0uY29uY2F0KFQpKX0sUmVuZGVyQW16blByZTpmdW5jdGlvbigpe2Zvcih2YXIgVD1bXSxYPTA7WDxhcmd1bWVudHMubGVuZ3RoO1grKylUW1hdPWFyZ3VtZW50c1tYXTt2LmFwcGx5KHZvaWQgMCxbUmEucmZdLmNvbmNhdChUKSl9fSxQYWdlOntBbmFseXplOmZ1bmN0aW9uKCl7cmV0dXJuIEVhLmRlZmF1bHQuZHVtcChILiQoKSl9fSxDbGllbnQ6e0Rlc3Ryb3k6Ty5kZWZhdWx0Lmp9LFxuQ29uc29sZTp7U2hvdzpnLkZPLEhpZGU6Zy5hTSxEZWJ1ZzpmdW5jdGlvbihUKXtOLmRlZmF1bHQuVE8oVCl9fX19LHsxMDA6MTAwLDEwMToxMDEsMTAyOjEwMiwxMDM6MTAzLDEwNjoxMDYsMTE6MTEsMTE2OjExNiwxMjA6MTIwLDEyNjoxMjYsMTI3OjEyNywxMzQ6MTM0LDEzNzoxMzcsMTQ2OjE0NiwxNDc6MTQ3LDE0OToxNDksMTU6MTUsMTY1OjE2NSwxNzE6MTcxLDE3MzoxNzMsMTg6MTgsMTgwOjE4MCwxOToxOSwyOjIsMjEwOjIxMCwyMTg6MjE4LDI0ODoyNDgsMjQ5OjI0OSwyNTA6MjUwLDI1MToyNTEsMzozLDQzOjQzLDQ5OjQ5LDU6NSw1Nzo1Nyw1ODo1OCw2MDo2MCw2Mzo2Myw2Njo2Niw2Nzo2Nyw3MTo3MSw3Mjo3Miw4MDo4MCw4Mzo4Myw4ODo4OCw5MTo5MSw5Mzo5Myw5NDo5NCw5Njo5Niw5ODo5OH1dLDExNDpbZnVuY3Rpb24oZyl7ZygxNTApLnJOKCk7ZygxMTYpO2coMTEzKX0sezExMzoxMTMsMTE2OjExNiwxNTA6MTUwfV0sMTE1OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXG5cIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPXtkdTpmdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5mRlt2XX0sZkY6e2ZhY2Vib29rOlwiMTBcIix0d2l0dGVyOlwiMjBcIixwaW50ZXJlc3Q6XCIzMFwiLG90aGVyOlwiNDBcIixtYWlsOlwiNTBcIixmb3J1bTpcIjYwXCIsYmxvZzpcIjcwXCIsXCJxJmFcIjpcIjgwXCIsYWxsc2VhcmNoOlwiOTBcIixnb29nbGU6XCI5MSw5MFwiLHNlYXJjaDpcIjkyLDkwXCIsdW5rbm93bjpcIjEwMFwiLGJsYW5rOlwiMTEwXCIsXCJpbnRlcm5hbC1tYWlsXCI6XCIxMjBcIixcImludGVybmFsLW90aGVyXCI6XCIxMzBcIixzaGFyZWQ6XCIxNDBcIixcImhhc2hlZC1peFwiOlwiMTQxLDE0MFwiLFwiaGFzaGVkLWF4XCI6XCIxNDIsMTQwXCIsaG9tZXBhZ2U6XCIxNTBcIixyZWxhdGVkY29udGVudDpcIjE2MFwiLG91dGJyYWluOlwiMTYxLDE2MFwiLHRhYm9vbGE6XCIxNjIsMTYwXCIsemVyZ25ldDpcIjE2MywxNjBcIn19O3QuZGVmYXVsdD1nO0guSVE9Z30se31dLDExNjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2LHA7ZnVuY3Rpb24gZSgpe3ZhciBSPXthZjpuZXcgVy5kZWZhdWx0KEdhKX07XG5OYS5kZWZhdWx0LnBPKGphLlNLKCkpO3ZhciBRPWIoUiksYWE9US5WTjtRLiROLmNvbm5lY3QoKS5vbmNlKFwiaGFuZHNoYWtlXCIsZnVuY3Rpb24oKXtMYS53TyhBYS5nZXQoXCJwcm9kdWN0XCIpKS5pTyhBYS5nZXQoXCJkZXZpY2VGYW1pbHlcIikpLnNldE9yaWVudGF0aW9uKEFhLmdldChcImRldmljZU9yaWVudGF0aW9uXCIpKS5jTyhBYS5nZXQoXCJicm93c2VyXCIpKS5nTyhBYS5nZXQoXCJjb3VudHJ5XCIpKS5CTyhBYS5nZXQoXCJyZWZlcnJlclwiKSkuTW8oISFqYS5WZSgpKTt2YXIgZmE9eihYLmRlZmF1bHQuSmIse1l2OmthLmxvY2F0aW9uLnBhdGhuYW1lLFBvOmphLkdoKCl9KS5IaixWPXooWC5kZWZhdWx0LkpnKS5uTTtBYS5zZXQoXCJjYXRlZ29yeUlkc1wiLGZhLmpvaW4oXCIsXCIpKS5zZXQoXCJpbnN0YWxsTWV0aG9kXCIsVikuYWIodWEuUi5keCk7amI9Ui5hZi5tSigpO3A9R2E7cC51KEpiLmRlZmF1bHQuV2ssTmEuZGVmYXVsdC5wcm94eShBYS5lUCxBYSkpO3Y9RmEubGUueUooamIscCxBYSk7di5ETygpO1xuYSgpO2phLlZlKCkmJlwiMFwiPT09amEuVmUoKT9OYS5kZWZhdWx0LmxvZyhcIkRldGVjdGVkIF9fcnRjcmVhdGl2ZWlkPTAuIFVzZSBUeW50U0lDLkFQSS5BZC5SZW5kZXIoKSB0byBkaXNwbGF5IGFuIGFkLlwiKTphYSgpfSl9ZnVuY3Rpb24gZihSLFEpe3JldHVybiBGYS5sZS5ZSSh7dUk6Uixzb3VyY2U6UX0pfWZ1bmN0aW9uIGMoUil7ZnVuY3Rpb24gUShhYSl7QWEudShcImJlZm9yZUVtaXRSZW1vdGVcIixmdW5jdGlvbigpe3JldHVybiBhYS5SZChSKX0pO3JldHVybiBhYX1mKEZhLm5pLmFxLHtKTjp7SGI6WGEuRmgoKS5IYn19KS5SZChSKTtmKEZhLm5pLkhwLGphKS5SZChSKTtRKGYoRmEubmkuVklFV1BPUlQsR2EpKS5SZChSKTtRKGYoRmEubmkuRXAse2I6bGEuZGVmYXVsdCxmSzprYS5kb2N1bWVudH0pKS5SZChSKX1mdW5jdGlvbiBhKCl7bnVsbCE9PWtiJiZrYi51KFwiY2FsY3VsYXRlXCIsZnVuY3Rpb24oUil7QWEuc2V0KFwiYWRWaWV3YWJpbGl0eVwiLFIpfSl9ZnVuY3Rpb24gYihSKXtjKEFhLklIKCkpO1xuaGEuZGVmYXVsdC5oTShqYS5iSSgpK1wiL3N0eWxlc2hlZXRzL3NpYy5jc3NcIixrYSk7dmFyIFE9bCgpO3JldHVybntWTjpmdW5jdGlvbigpe3JldHVybiBrKFEsUil9LCROOkFhfX1mdW5jdGlvbiBkKCl7cmV0dXJuIEkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIFIsUSxhYSxmYSxWLHRhO3JldHVybiBHKHRoaXMsZnVuY3Rpb24ocWEpe3N3aXRjaChxYS5sYWJlbCl7Y2FzZSAwOnJldHVybiBxYT17ZG9jdW1lbnQ6a2EuZG9jdW1lbnQsVXY6amEuTG4oKSxsbzp0Yn0sUj1jYj0obmV3IEJhLmRlZmF1bHQocWEse2I6bGEuZGVmYXVsdCx4YjptYS5kZWZhdWx0LHl0OktiLmRlZmF1bHQsZGE6TWEuZGVmYXVsdH0pKS5ydCgpLFs0LFIuYnQoKV07Y2FzZSAxOnJldHVybiBxYS5tKCksUT16KFguZGVmYXVsdC5GZyksYWE9US5PLGZhPVEuZ2EsVj1uZXcgVWEuZGVmYXVsdChpYS5kZWZhdWx0LFphLmRlZmF1bHQsamEuR2MoKSksdGE9Vi5jcmVhdGUoe086YWEsZ2E6ZmF9KSxcblsyLG5hLmRlZmF1bHQodGEsUildfX0pfSl9ZnVuY3Rpb24gaChSKXtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgUSxhYSxmYSxWLHRhLHFhO3JldHVybiBHKHRoaXMsZnVuY3Rpb24oY2Epe3N3aXRjaChjYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGQoKV07Y2FzZSAxOnJldHVybiBRPWNhLm0oKSxhYT1RLkksZmE9US5QcyxWPVEubGQsY2E9bmV3IHdhLmRlZmF1bHQoZmEse2I6bGEuZGVmYXVsdCxtYTpoYS5kZWZhdWx0LHFkOm1hLmRlZmF1bHR9KSxjYS5TTigpLHRhPWNhLHFhPShuZXcgeGEuZGVmYXVsdCh7c2l6ZTpqYS5HaCgpLFFzOkIoKX0se2I6bGEuZGVmYXVsdCxkYTpNYS5kZWZhdWx0LFRuOmNiLHZpZXdwb3J0OkdhfSkpLm10KGphLkdjKCksViksWzIse0k6YWEsTjp0YSx2YjpSLmp0KHRhKSxOZTpSLmt0KHRhKSxHOnFhLGxkOlZ9XX19KX0pfWZ1bmN0aW9uIGsoUixRKXt2YXIgYWE9US5hZjtyZXR1cm4gSSh0aGlzLHZvaWQgMCx2b2lkIDAsXG5mdW5jdGlvbigpe3ZhciBmYSxWLHRhLHFhLGNhLEhhLGVhLEphLEJiO3JldHVybiBHKHRoaXMsZnVuY3Rpb24oWWEpe3N3aXRjaChZYS5sYWJlbCl7Y2FzZSAwOnJldHVybiBmYT1uZXcgYWIuZGVmYXVsdChMYSksdGI9KFlhPWphLm5nKCkpP25ldyBWYS5kZWZhdWx0KHtsSDpZYX0se2I6bGEuZGVmYXVsdH0pOm51bGwsVj1uZXcgTy5kZWZhdWx0KHtiOmxhLmRlZmF1bHQscWQ6bWEuZGVmYXVsdCxtYTpoYS5kZWZhdWx0fSksWzQsaChWKV07Y2FzZSAxOnRhPVlhLm0oKTtxYT10YS5JO2NhPXRhLk47SGE9dGEudmI7ZWE9dGEuTmU7SmE9dGEuRztCYj10YS5sZDtDYi51dih7QWc6SCxxZzpRYS5kZWZhdWx0LE46Y2EsZGU6a2EsYWE6Vn0se2I6bGEuZGVmYXVsdCx4azp3aW5kb3cuUHJvbWlzZSxkYTpNYS5kZWZhdWx0fSk7U2E9Uih7cGI6ZmEsSTpxYSxhYTpWLEc6SmEsbGQ6QmIsTjpjYSx2YjpIYSxiZjphYX0pO3ViPW5ldyBJYS5kZWZhdWx0KFNhLHtzSzpbbmV3IGZiLmRlZmF1bHQoe1phOkxhLFxuRDp3aW5kb3d9LHtSYjpFLmRlZmF1bHQsUWM6R2F9KSxuZXcgc2IuZGVmYXVsdCh7WmE6TGF9LHtSYjpFLmRlZmF1bHQsUWM6R2F9KV19KTtEYj0obmV3IEthLmRlZmF1bHQoe0ZiOmphfSkpLk9oKFNhKTtZYT1TYTt2YXIgRWI9Vix2Yj1lYSxMYj0xRTMqKHBhcnNlSW50KEUuZGVmYXVsdC5sYyhcImFkX2luZm9fZGVsYXlcIiksMTApfHwxKSxNYj1wYXJzZUludChFLmRlZmF1bHQubGMoXCJhZF9sb2dfY29udGVudHNcIiksMTApfHwxMDAsd2I9U2E7dmI9KG5ldyBOYi5kZWZhdWx0KHtQTjpuZXcgaGIuZGVmYXVsdCh7YmU6amEuYmUoKX0pLGNvbnRleHQ6WGF9KSkuVUgodmIpLk9oKHdiKTt3Yj1uZXcgRmEuanAoRWIsa2EpO0ZiPUZhLmxlLkFJKEFhLEViLHdiKS5GbyhMYikuSW8oTWIpLklrKHZiKS5PaChZYSk7dWIuUWEoe2xuOk5hLmRlZmF1bHQuTU8obmV3IERhdGUpLHVybDpqYS5GbigpLEVqOkFhLmdldChcImJyb3dzZXJcIiksTzpBYS5nZXQoXCJkZXZpY2VGYW1pbHlcIiksYmU6amEuYmUoKSxcblFjOkdhLElLOiEhWGEuRmgoKS5IS30pO3JldHVyblsyXX19KX0pfWZ1bmN0aW9uIGwoKXt2YXIgUj1tKCk7cmV0dXJuIGZ1bmN0aW9uKFEpe3ZhciBhYT1RLmxkO1E9Uih7cGI6US5wYixJOlEuSSxhYTpRLmFhLEc6US5HLE46US5OLHZiOlEudmIsYmY6US5iZn0pO3ZhciBmYT1uZXcgV2EuZGVmYXVsdCh7bG86dGIsU0o6a2EuZG9jdW1lbnQuYm9keSxrTjp6KFguZGVmYXVsdC5VcCksdmQ6amEuR2MoKSxsazpqYS5saygpfSx7YjpsYS5kZWZhdWx0LHZpZXdwb3J0OkdhfSk7YWE9QigpLkJJKGphLkdjKCksYWEpO3JldHVybiBuZXcgRWEuZGVmYXVsdCh7blA6USxmSDp4YixlaTphYSxsTjpmYX0pfX1mdW5jdGlvbiBtKCl7dmFyIFI9bigpO3JldHVybiBmdW5jdGlvbihRKXtyZXR1cm4gUih7cGI6US5wYixJOlEuSSxOOlEuTix2YjpRLnZiLEc6US5HLGFhOlEuYWEsYmY6US5iZn0pLkZLKEwoKSkuZWN9fWZ1bmN0aW9uIG4oKXt2YXIgUj1yKCk7cmV0dXJuIGZ1bmN0aW9uKFEpe3ZhciBhYT1cblEuYmY7cmV0dXJuIG5ldyBSYS5kZWZhdWx0KFIoe3BiOlEucGIsRzpRLkcsSTpRLkksTjpRLk4sdmI6US52YixhYTpRLmFhLHJoOm5ldyBxYi5kZWZhdWx0KEYoKSxuZXcgcmIuZGVmYXVsdChOYS5kZWZhdWx0LEsoeihYLmRlZmF1bHQuRmcpLk8samEuR2MoKSkpKSxiZjphYX0pKX19ZnVuY3Rpb24gcigpe3ZhciBSPXEoKTtyZXR1cm4gZnVuY3Rpb24oUSl7dmFyIGFhPVEucGIsZmE9US5HLFY9US5JLHRhPVEuTixxYT1RLnZiLGNhPVEuYWEsSGE9US5yaDtRPVEuYmY7cmV0dXJuIG5ldyBuYi5kZWZhdWx0KHtHOmZhLFRiOm5ldyBPYi5kZWZhdWx0KHRhLGZhKSxuYjp7aEg6bmV3IFMuZGVmYXVsdCh7dWo6bmV3IHphLmRlZmF1bHQoe3RvOmdiLmRlZmF1bHQsUWM6R2EsVG46Y2IsdmQ6amEuR2MoKSxYbTpQYi5kZWZhdWx0fSksWmE6TGF9KSxTYjpSKHtwYjphYSxYYTpuZXcgWi5kZWZhdWx0LGFhOmNhLE46dGF9KSxhZzpEKGZhLFYse0RqOkhhLGFmOlF9KSxuSzpRYi5kZWZhdWx0LFxudmI6cWEsUGU6bmV3IFJiLmRlZmF1bHQocWEsSGEpfX0pfX1mdW5jdGlvbiBxKCl7dmFyIFI9QygpO3JldHVybiBmdW5jdGlvbihRKXt2YXIgYWE9US5wYixmYT1RLlhhLFY9US5hYTtRPVEuTjtyZXR1cm4obmV3IHJhLmRlZmF1bHQpLm1uKGRiLkpiLHUoe3BiOmFhLFhhOmZhLGFhOlYsbW86UixOOlF9KSkubW4oZGIuTXAsdyh7cGI6YWEsWGE6ZmEsbW86UixOOlF9KSkubW4oZGIuUmMseCh7WGE6ZmEsTjpRfSkpfX1mdW5jdGlvbiB1KFIpe3ZhciBRPVIuWGEsYWE9Ui5hYSxmYT1SLk4sVj13aW5kb3cuUHJvbWlzZSx0YT1RYS5kZWZhdWx0O3ZhciBxYT1SLnBiO1I9Ui5tbztxYT0obmV3IFNiKFhhKSkuR28oUihsYi5Tay5LdyxxYSkpLmVPKGthLmxvY2F0aW9uLnBhdGhuYW1lKS5qTyhoYS5kZWZhdWx0KS5IbyhGKCkudWgoKSkuWWgoRS5kZWZhdWx0KS5iTyhuZXcgZGEuZGVmYXVsdCkuTm8oa2IpLnZPKHFhKTtyZXR1cm4gbmV3IFRiKHtxZzp0YSxtZjpxYSxBZzpILFhhOlEsYWE6YWEsXG5kZTprYSxOOmZhfSx7YjpsYS5kZWZhdWx0LHpjOkYoKS51aCgpLHhrOlYsZGE6TWEuZGVmYXVsdH0sTGEpfWZ1bmN0aW9uIHcoUil7dmFyIFE9Ui5YYSxhYT1SLk4sZmE9bGIuamk7dmFyIFY9Ui5wYjtSPVIubW87Vj0obmV3IFViKFhhKSkuR28oUihsYi5Tay5YdyxWKSkuSG8oRigpLnVoKCkpLlloKEUuZGVmYXVsdCk7cmV0dXJuIG5ldyBWYih7VG06ZmEsbWY6VixGYjpqYSxYYTpRLE46YWF9LHt9LExhKX1mdW5jdGlvbiB4KFIpe3JldHVybiBuZXcgV2Ioe1VlOmphLlZlKCksUUg6amEuT28oKSxEOmphLiQoKSxYYTpSLlhhLE46Ui5OfSx7bWE6aGEuZGVmYXVsdH0pfWZ1bmN0aW9uIEMoKXt2YXIgUj0obmV3IFhiLmRlZmF1bHQoWWIuZGVmYXVsdCkpLmZNKGthLGhhLmRlZmF1bHQpLFE9eWIuZGVmYXVsdC5ESSh5Yi5kZWZhdWx0LkVJKHliLmRlZmF1bHQuRkkoa2EsaGEuZGVmYXVsdCkpKTtyZXR1cm4gZnVuY3Rpb24oYWEsZmEpe3JldHVybihuZXcgbGIucnAoe2NvbnRleHQ6WGEsXG55TjpqYS5GbigpLFhvOmphLkVMKCkscGI6ZmEsUU86YWEsRDprYSxtYTpoYS5kZWZhdWx0LFFtOm5ldyBaYi5kZWZhdWx0KFIpLHlqOiRiLmRlZmF1bHQsT206UX0pKS5ObyhrYikuWWgoRS5kZWZhdWx0KX19ZnVuY3Rpb24gRChSLFEsYWEpe3JldHVybihuZXcgQ2EuZGVmYXVsdCh7WmE6TGEsTXM6bmV3IERhLmRlZmF1bHQoe2F0OkdiLmRlZmF1bHQsbmI6e01lOnZhLmRlZmF1bHQseGI6WS5kZWZhdWx0LGRnOm5ldyBULmRlZmF1bHQsZWZmZWN0Om5ldyBQYS5kZWZhdWx0KHtuYjp7eGI6WS5kZWZhdWx0LHZhOkIoKSxXaDpIYi5kZWZhdWx0fX0se2I6bGEuZGVmYXVsdCx2aWV3cG9ydDpHYX0pLExrOnlhLmRlZmF1bHQsWmI6YWMuZGVmYXVsdCx6dDpIYi5kZWZhdWx0LEd0OmJjLmRlZmF1bHR9LEQ6a2F9LHtiOmxhLmRlZmF1bHQseGI6bWEuZGVmYXVsdCxkYTpNYS5kZWZhdWx0LHZpZXdwb3J0OkdhfSksRzpSLEk6USxuYjpKKHtrZDpvYi5kZWZhdWx0LGlrOntjcmVhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIGZhPVxuW10sVj0wO1Y8YXJndW1lbnRzLmxlbmd0aDtWKyspZmFbVl09YXJndW1lbnRzW1ZdO3JldHVybiBuZXcgKGViLmRlZmF1bHQuYmluZC5hcHBseShlYi5kZWZhdWx0LFt2b2lkIDBdLmNvbmNhdChmYSkpKX19fSxhYSksRDprYSxhZTpjYi5XY30pKS52aih7YjpsYS5kZWZhdWx0LG1hOmhhLmRlZmF1bHQsZGE6TWEuZGVmYXVsdH0pfWZ1bmN0aW9uIEIoKXt2YXIgUj16KFguZGVmYXVsdC5pcSx7UmI6RS5kZWZhdWx0fSkua2U7cmV0dXJuIG5ldyBOLmRlZmF1bHQoe0ZiOmphLGtlOlIsJHY6bmV3IFUuZGVmYXVsdCxhdzpuZXcgUC5kZWZhdWx0LFlMOntiOmxhLmRlZmF1bHQsVG46Y2Isdmlld3BvcnQ6R2F9fSl9ZnVuY3Rpb24gSyhSLFEpe3JldHVybiBmdW5jdGlvbihhYSl7cmV0dXJuIEdiLmRlZmF1bHQoYWEsUixRKX19ZnVuY3Rpb24gRigpe3JldHVybiBuZXcgcGIuZGVmYXVsdCh7VU86bmV3ICRhLmRlZmF1bHQoSC5YZSh3aW5kb3cpKSxLazpuZXcgJGEuZGVmYXVsdChILiQoKSksXG5DYzpuZXcgJGEuZGVmYXVsdCh3aW5kb3cpfSxILlhlKHdpbmRvdyk9PT13aW5kb3c/aWIuZGVmYXVsdC5mcTppYi5kZWZhdWx0LnRwKX1mdW5jdGlvbiBMKCl7dmFyIFI9bnVsbDtpZihqYS5WZSgpKXJldHVybiBjYzt0cnl7Uj1KU09OLnBhcnNlKEUuZGVmYXVsdC5sYyhcImFkX3dhdGVyZmFsbFwiKSl9Y2F0Y2goUSl7TmEuZGVmYXVsdC5sb2coXCJVc2luZyBkZWZhdWx0IGFkIHdhdGVyZmFsbCBjb25maWd1cmF0aW9uXCIpfXJldHVybiBSfHxkY31mdW5jdGlvbiB6KFIsUSl7UT1OYS5kZWZhdWx0LmV4dGVuZCh7ZmlsdGVyczp7c2l6ZTpqYS5HaCgpfX0sUSk7cmV0dXJuIExhLk1hKFIsUSl9ZnVuY3Rpb24gQShSKXtudWxsIT09UiYmUi5qKCl9dmFyIEo9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihSKXtmb3IodmFyIFEsYWE9MSxmYT1hcmd1bWVudHMubGVuZ3RoO2FhPGZhO2FhKyspe1E9YXJndW1lbnRzW2FhXTtmb3IodmFyIFYgaW4gUSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUSxcblYpJiYoUltWXT1RW1ZdKX1yZXR1cm4gUn0sST10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihSLFEsYWEsZmEpe3JldHVybiBuZXcgKGFhfHwoYWE9UHJvbWlzZSkpKGZ1bmN0aW9uKFYsdGEpe2Z1bmN0aW9uIHFhKGVhKXt0cnl7SGEoZmEubmV4dChlYSkpfWNhdGNoKEphKXt0YShKYSl9fWZ1bmN0aW9uIGNhKGVhKXt0cnl7SGEoZmFbXCJ0aHJvd1wiXShlYSkpfWNhdGNoKEphKXt0YShKYSl9fWZ1bmN0aW9uIEhhKGVhKXtlYS5kb25lP1YoZWEudmFsdWUpOihuZXcgYWEoZnVuY3Rpb24oSmEpe0phKGVhLnZhbHVlKX0pKS50aGVuKHFhLGNhKX1IYSgoZmE9ZmEuYXBwbHkoUixRfHxbXSkpLm5leHQoKSl9KX0sRz10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihSLFEpe2Z1bmN0aW9uIGFhKGVhKXtyZXR1cm4gZnVuY3Rpb24oSmEpe3JldHVybiBmYShbZWEsSmFdKX19ZnVuY3Rpb24gZmEoZWEpe2lmKHRhKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuZm9yKDtWOyl0cnl7aWYodGE9MSxxYSYmKGNhPWVhWzBdJjI/cWFbXCJyZXR1cm5cIl06ZWFbMF0/cWFbXCJ0aHJvd1wiXXx8KChjYT1xYVtcInJldHVyblwiXSkmJmNhLmNhbGwocWEpLDApOnFhLm5leHQpJiYhKGNhPWNhLmNhbGwocWEsZWFbMV0pKS5kb25lKXJldHVybiBjYTtpZihxYT0wLGNhKWVhPVtlYVswXSYyLGNhLnZhbHVlXTtzd2l0Y2goZWFbMF0pe2Nhc2UgMDpjYXNlIDE6Y2E9ZWE7YnJlYWs7Y2FzZSA0OnJldHVybiBWLmxhYmVsKysse3ZhbHVlOmVhWzFdLGRvbmU6ITF9O2Nhc2UgNTpWLmxhYmVsKys7cWE9ZWFbMV07ZWE9WzBdO2NvbnRpbnVlO2Nhc2UgNzplYT1WLmwucG9wKCk7Vi5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShjYT1WLmksY2E9MDxjYS5sZW5ndGgmJmNhW2NhLmxlbmd0aC0xXSkmJig2PT09ZWFbMF18fDI9PT1lYVswXSkpe1Y9MDtjb250aW51ZX1pZigzPT09ZWFbMF0mJighY2F8fGVhWzFdPmNhWzBdJiZlYVsxXTxjYVszXSkpVi5sYWJlbD1lYVsxXTtcbmVsc2UgaWYoNj09PWVhWzBdJiZWLmxhYmVsPGNhWzFdKVYubGFiZWw9Y2FbMV0sY2E9ZWE7ZWxzZSBpZihjYSYmVi5sYWJlbDxjYVsyXSlWLmxhYmVsPWNhWzJdLFYubC5wdXNoKGVhKTtlbHNle2NhWzJdJiZWLmwucG9wKCk7Vi5pLnBvcCgpO2NvbnRpbnVlfX1lYT1RLmNhbGwoUixWKX1jYXRjaChKYSl7ZWE9WzYsSmFdLHFhPTB9ZmluYWxseXt0YT1jYT0wfWlmKGVhWzBdJjUpdGhyb3cgZWFbMV07cmV0dXJue3ZhbHVlOmVhWzBdP2VhWzFdOnZvaWQgMCxkb25lOiEwfX12YXIgVj17bGFiZWw6MCxtOmZ1bmN0aW9uKCl7aWYoY2FbMF0mMSl0aHJvdyBjYVsxXTtyZXR1cm4gY2FbMV19LGk6W10sbDpbXX0sdGEscWEsY2EsSGE7cmV0dXJuIEhhPXtuZXh0OmFhKDApLFwidGhyb3dcIjphYSgxKSxcInJldHVyblwiOmFhKDIpfSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiYoSGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksSGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFxuXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIEU9ZygxKSxNPWcoNCksTz1nKDUpLFM9ZygxMSksRGE9Zyg4MCksdmE9Zyg4Myksd2E9ZygxOCkseWE9Zyg5NiksYmE9ZygxOSkscmE9ZygzNSksemE9ZygzOSksRWE9Zyg0NykseGE9Zyg1NyksQmE9Zyg0OSksS2E9Zyg1MSksSWE9Zyg1MiksTj1nKDY2KSxQPWcoNjMpLFU9Zyg2MCksWj1nKDcyKSxpYT1nKDI0OCksbmE9ZygxMDIpLENhPWcoMTA0KSxQYT1nKDc0KSxVYT1nKDEwMCksWmE9ZygxMDEpLG9iPWcoOTgpLGViPWcoMiksUmE9ZygxMTApLG5iPWcoMTExKSxzYj1nKDQ1KSxUPWcoMTIwKSxYPWcoMjM4KSxwYT1nKDEyMiksb2E9ZygxMzIpLGRhPWcoMjQpLGxhPWcoMTI3KSxtYT1nKDE0NyksWT1nKDE0OSksaGE9ZygxMjYpLFc9ZygxNDYpLHVhPWcoMTY3KSxRYT1nKDI1KSxWYT1nKDE1NiksRmE9ZygxNjUpLGZiPWcoNDYpLGdiPWcoMTcxKSxoYj1nKDE3MyksV2E9ZygxNzYpLHBiPWcoMTgzKSwkYT1nKDE4MiksaWI9ZygxODQpLFxucWI9ZygxNzcpLHJiPWcoNjgpLGFiPWcoMjE2KSxiYj1nKDIxOSksTWE9ZygyNDkpLGVjPWcoMTM0KSxOYT1nKDI1MCksSmI9ZygxMzgpLGZjPWcoMjUxKSxPYj1nKDQzKSxRYj1nKDEzNyksUmI9Zyg2OSksTmI9ZygxNzQpLEtiPWcoNTgpLFBiPWcoODEpLEdiPWcoODgpLGxiPWcoMjEwKSwkYj1nKDIwMSksWmI9ZygxOTgpLFhiPWcoMjAwKSxZYj1nKDE5OSkseWI9ZygxOTApLGFjPWcoOTMpLEhiPWcoOTEpLGJjPWcoOTQpLGRiPWJhLmRlZmF1bHQuU2EsQ2I9YmEuZGVmYXVsdC5paS53ZixUYj1iYS5kZWZhdWx0LlRrLndmLFNiPWJhLmRlZmF1bHQuZ3Eud2YsVmI9YmEuZGVmYXVsdC5Uay50aSxVYj1iYS5kZWZhdWx0LmdxLnRpLFdiPWJhLmRlZmF1bHQuVGsuRnAsR2E9ZmMuZGVmYXVsdC5IaCgpLGRjPVt7bXA6ZGIuSmJ9XSxjYz1be21wOmRiLlJjfV0samE9ZnVuY3Rpb24oKXt2YXIgUj1uZXcgb2EuZGVmYXVsdChrYSk7Ui5WZSgpfHwoUj1uZXcgZWMuZGVmYXVsdChrYSkpO3JldHVybiBSLmVuKCl9KCk7XG5iYi5kZWZhdWx0LmxPKGphKTt2YXIgTGE9YmIuZGVmYXVsdDt2YXIga2I9QigpLlNJKGphLkdjKCkpLHhiPShuZXcgTS5kZWZhdWx0KHtoSzpsYS5kZWZhdWx0LGlLOm1hLmRlZmF1bHQsRDprYX0pKS5RYSgpO3ZhciBqYj1wPW51bGw7dmFyIEFhPUZhLmxlLmNyZWF0ZVNlc3Npb24oe2tuOkZhLmxlLnRoKCksRmI6amF9LHtuTjpGKCkudWgoKX0pO3ZhciBGYj12PW51bGw7dmFyIFhhPW5ldyBwYS5kZWZhdWx0KExhLEFhLmdldEFsbCgpLGphKSxTYT1udWxsLHViPW51bGwsRGI9bnVsbCxjYj1udWxsLHRiPW51bGwsSWI9ITE7bWEuZGVmYXVsdC5tdihrYSxmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtJYnx8ZSgpfSwwKX0pO3QuZGVmYXVsdD1ILkpRPXtNSzpmdW5jdGlvbigpe3JldHVybiB4Yi5san0sSGM6ZnVuY3Rpb24oKXtyZXR1cm4gU2F9LHVMOmZ1bmN0aW9uKCl7cmV0dXJuIExhfSxJbjpmdW5jdGlvbigpe3JldHVybiBBYX0sZ1Q6ZnVuY3Rpb24oKXtJYj0hMH0sXG5qOmZ1bmN0aW9uKCl7TmEuZGVmYXVsdC5sb2coXCJTaHV0dGluZyBkb3duLi4uXCIpO0NiLmooKTtBKEZiKTtBKFNhKTtBKHViKTtBKERiKTtqYiYmamIuSigpO0Eodik7eGIuaigpO0FhLmooKTtHYS5qKCl9fX0sezE6MSwxMDA6MTAwLDEwMToxMDEsMTAyOjEwMiwxMDQ6MTA0LDExOjExLDExMDoxMTAsMTExOjExMSwxMjA6MTIwLDEyMjoxMjIsMTI2OjEyNiwxMjc6MTI3LDEzMjoxMzIsMTM0OjEzNCwxMzc6MTM3LDEzODoxMzgsMTQ2OjE0NiwxNDc6MTQ3LDE0OToxNDksMTU2OjE1NiwxNjU6MTY1LDE2NzoxNjcsMTcxOjE3MSwxNzM6MTczLDE3NDoxNzQsMTc2OjE3NiwxNzc6MTc3LDE4OjE4LDE4MjoxODIsMTgzOjE4MywxODQ6MTg0LDE5OjE5LDE5MDoxOTAsMTk4OjE5OCwxOTk6MTk5LDI6MiwyMDA6MjAwLDIwMToyMDEsMjEwOjIxMCwyMTY6MjE2LDIxOToyMTksMjM4OjIzOCwyNDoyNCwyNDg6MjQ4LDI0OToyNDksMjU6MjUsMjUwOjI1MCwyNTE6MjUxLDM1OjM1LDM5OjM5LDQ6NCxcbjQzOjQzLDQ1OjQ1LDQ2OjQ2LDQ3OjQ3LDQ5OjQ5LDU6NSw1MTo1MSw1Mjo1Miw1Nzo1Nyw1ODo1OCw2MDo2MCw2Mzo2Myw2Njo2Niw2ODo2OCw2OTo2OSw3Mjo3Miw3NDo3NCw4MDo4MCw4MTo4MSw4Mzo4Myw4ODo4OCw5MTo5MSw5Mzo5Myw5NDo5NCw5Njo5Niw5ODo5OH1dLDExNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTE4KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlLGYpe3RoaXMuJGM9dGhpcy5IYT1udWxsO3RoaXMuVWc9ZS5FdDt0aGlzLmE9Zjt0aGlzLldDPWUuZ019cC5wcm90b3R5cGUubmM9ZnVuY3Rpb24oZSl7dGhpcy5IYT1lLnF1ZXJ5U2VsZWN0b3IoXCIuXCIrdi5kZWZhdWx0LkdwKTt0aGlzLmEuYi53Yih0aGlzLkhhLHRoaXMuRGwoKSk7dGhpcy4kYz10aGlzLlVnLnBkKHRoaXMuSGEpO3RoaXMuV0MmJnRoaXMuJGUoKX07cC5wcm90b3R5cGUuUnQ9ZnVuY3Rpb24oKXt9O3AucHJvdG90eXBlLnU9XG5mdW5jdGlvbihlLGYpe3RoaXMuJGMudShlLGYpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5mYT1mdW5jdGlvbihlKXt0aGlzLiRjLmZhKGUpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5jaz1mdW5jdGlvbigpe307cC5wcm90b3R5cGUuJGU9ZnVuY3Rpb24oKXt0aGlzLmEuYi4kZSh0aGlzLkhhKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2lmKCF0aGlzLkhhKXJldHVybiB0aGlzO3RoaXMuYS5iLnJlbW92ZSh0aGlzLkhhKTt0aGlzLiRjLkooKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuRGw9ZnVuY3Rpb24oKXtyZXR1cm4gdi5kZWZhdWx0LkJ4LkR3fTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9ZztILktRPWd9LHsxMTg6MTE4fV0sMTE4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz17R3A6XCJ0eW50LWNsb3NlLWJ0blwiLEZ3OlwidHludC1jbG9zZS1idG4tY29udGFpbmVyXCIsZHc6XCJ0eW50LWFkeC1jbG9zZS1idXR0b25cIixcbkJ4OntEdzpcInR5bnQtY2xvc2UtYnV0dG9uLWNpcmNsZVwifX07dC5kZWZhdWx0PWc7SC5MUT1nfSx7fV0sMTE5OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYoKXt9di5wcm90b3R5cGUubmM9ZnVuY3Rpb24oKXt9O3YucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt9O3JldHVybiB2fSgpO3QuZGVmYXVsdD1nO0guTVE9Z30se31dLDEyMDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoODcpLHA9ZygxMjEpLGU9ZygxMTcpLGY9ZygxMTkpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7fWMucHJvdG90eXBlLlJJPWZ1bmN0aW9uKGEsYil7dmFyIGQsaD0oZD17fSxkW3YuZGVmYXVsdC5VY109dGhpcy51dCxkW3YuZGVmYXVsdC5zY109dGhpcy51dCxkW3YuZGVmYXVsdC5wYV09dGhpcy5USSxkW3YuZGVmYXVsdC5vZV09XG50aGlzLm90LGRbdi5kZWZhdWx0Lk5PTkVdPXRoaXMub3QsZCk7ZD1cIkNsb3NlQnV0dG9uRmFjdG9yeTogSW52YWxpZCBlbmNsb3N1cmUgbmFtZTogXCIrYS5uaDtpZihoW2EubmhdKXJldHVybiBoW2EubmhdLmNhbGwodGhpcyxhLGIpO3Rocm93IEVycm9yKGQpO307Yy5wcm90b3R5cGUudXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHAuZGVmYXVsdChhLGIpfTtjLnByb3RvdHlwZS5UST1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZS5kZWZhdWx0KGEsYil9O2MucHJvdG90eXBlLm90PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmLmRlZmF1bHR9O3JldHVybiBjfSgpO0guTlE9Zzt0LmRlZmF1bHQ9Z30sezExNzoxMTcsMTE5OjExOSwxMjE6MTIxLDg3Ojg3fV0sMTIxOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxMTgpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUsZil7dGhpcy4kYz10aGlzLkdmPVxudGhpcy5IYT1udWxsO3RoaXMuVWc9ZS5FdDt0aGlzLmd5PWUucEg7dGhpcy5hPWZ9cC5wcm90b3R5cGUubmM9ZnVuY3Rpb24oZSl7dGhpcy5IYT1lLnF1ZXJ5U2VsZWN0b3IoXCIuXCIrdi5kZWZhdWx0LkdwKTt0aGlzLkdmPWUucXVlcnlTZWxlY3RvcihcIi5cIit2LmRlZmF1bHQuRncpO3RoaXMuYS5iLndiKHRoaXMuR2YsdGhpcy5EbCgpKTt0aGlzLiRjPXRoaXMuVWcucGQodGhpcy5IYSl9O3AucHJvdG90eXBlLlJ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5iLnRhKHRoaXMuR2YpLnRvcH07cC5wcm90b3R5cGUudT1mdW5jdGlvbihlLGYpe3RoaXMuJGMudShlLGYpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5mYT1mdW5jdGlvbihlKXt0aGlzLiRjLmZhKGUpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5jaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuYi55TCh0aGlzLkhhLFwiaW5uZXJcIil9O3AucHJvdG90eXBlLiRlPWZ1bmN0aW9uKCl7dGhpcy5hLmIuJGUodGhpcy5HZik7cmV0dXJuIHRoaXN9O1xucC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe2lmKCF0aGlzLkdmKXJldHVybiB0aGlzO3RoaXMuYS5iLnJlbW92ZSh0aGlzLkdmKTt0aGlzLiRjLkooKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuRGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5neT92LmRlZmF1bHQuZHc6XCJcIn07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PUguT1E9Z30sezExODoxMTh9XSwxMjI6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI1MCkscD17fSxlPXt9LGY9e307Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiLGQpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhLk1hKXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgcHJvdmlkZWQgY29uZmlnIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIG1ldGhvZHM6IGdldENvbmZpZ1wiKTtwPWE7ZT1kO2Y9Yn1jLnByb3RvdHlwZS5Jbj1mdW5jdGlvbigpe3JldHVybntzZXNzaW9uSWQ6Zi5zZXNzaW9uSWR9fTtcbmMucHJvdG90eXBlLlhkPWZ1bmN0aW9uKCl7cmV0dXJue0NhOmYuY29udGVudENhdGVnb3J5SWR9fTtjLnByb3RvdHlwZS5UdD1mdW5jdGlvbigpe3JldHVybnskbjpmLmlwLGVLOmYuZG50RW5hYmxlZCxObTpmLmFnZW50LEJ0OmYuZGV2aWNlRmFtaWx5LGFUOmYuYnJvd3NlckZhbWlseX19O2MucHJvdG90eXBlLmZrPWZ1bmN0aW9uKCl7cmV0dXJue2tQOmYudXNlcklkLGViOmYuZG4scWM6Zi5pdn19O2MucHJvdG90eXBlLkZoPWZ1bmN0aW9uKCl7cmV0dXJue0hLOnRoaXMuenooKSxIYjp0aGlzLlh6KCl9fTtjLnByb3RvdHlwZS5NYT1mdW5jdGlvbigpe2Zvcih2YXIgYT1bXSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylhW2JdPWFyZ3VtZW50c1tiXTtyZXR1cm4gcC5NYS5hcHBseShwLGEpfTtjLnByb3RvdHlwZS4kPWZ1bmN0aW9uKCl7cmV0dXJuIGUuJCgpfTtjLnByb3RvdHlwZS5Yej1mdW5jdGlvbigpe3JldHVybiB2LmRlZmF1bHQuUChcInVzcHJpdmFjeVwiKXx8ZS5xdSgpfTtcbmMucHJvdG90eXBlLnp6PWZ1bmN0aW9uKCl7dmFyIGE9di5kZWZhdWx0LlAoXCJnZHByXCIpO3JldHVybiBOdW1iZXIodi5kZWZhdWx0LndkKG51bGwhPT1hP2E6Zi5nZHByRWxpZ2libGUpKX07cmV0dXJuIGN9KCk7dC5kZWZhdWx0PWc7SC5TUT1nfSx7MjUwOjI1MH1dLDEyMzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PVtcIm1vYmlsZVwiLFwidGFibGV0XCJdO3QuZGVmYXVsdD1ILmFSPXtDTTpmdW5jdGlvbihwKXtyZXR1cm5cIm1vYmlsZVwiPT09cH0sc006ZnVuY3Rpb24ocCl7cmV0dXJuXCJkZXNrdG9wXCI9PT1wfSxMVDpmdW5jdGlvbihwKXtyZXR1cm5cInRhYmxldFwiPT09cH0sSU06ZnVuY3Rpb24ocCl7cmV0dXJuIHYuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PXB9KX19fSx7fV0sMTI0OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIGYsXG5jPTEsYT1hcmd1bWVudHMubGVuZ3RoO2M8YTtjKyspe2Y9YXJndW1lbnRzW2NdO2Zvcih2YXIgYiBpbiBmKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLGIpJiYoZVtiXT1mW2JdKX1yZXR1cm4gZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygyNTApO3QuZGVmYXVsdD1ILmVSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31lLmxMPWZ1bmN0aW9uKGYsYyl7dmFyIGE9W107Zj1mLlllKCk7dmFyIGI9dih7bmY6MCxnaTpmLndpZHRoLEVnOjAsTms6Zi5oZWlnaHR9LGMpO2M9Yi5naTtmPWIuRWc7dmFyIGQ9Yi5Oaztmb3IoYj1iLm5mO2I8YztiKz0yMClhLnB1c2goe25mOmIsZ2k6YixFZzpmLE5rOmR9KTtyZXR1cm4gZS5jTChhKX07ZS5jTD1mdW5jdGlvbihmKXtmPWYubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBlLmJMKGMpfSk7cmV0dXJuIHAuZGVmYXVsdC5rZyhmKX07ZS5iTD1mdW5jdGlvbihmKXt2YXIgYz1cbkguYUwoKSxhPVtdLGI9cC5kZWZhdWx0LlRqKGYubmYpLGQ9cC5kZWZhdWx0LlRqKGYuZ2kpLGg9cC5kZWZhdWx0LlRqKGYuRWcpO2Y9cC5kZWZhdWx0LlRqKGYuTmspO2Zvcih2YXIgaz1oO2I8ZHx8azxmO2I9TWF0aC5taW4oYiswLGQpLGs9TWF0aC5taW4oays1LGYpKTA8PWImJjA8PWsmJihoPWMuZWxlbWVudEZyb21Qb2ludChiLGspKSYmXCJIVE1MXCIhPT1oLm5vZGVOYW1lJiZoIT09YVthLmxlbmd0aC0xXSYmYS5wdXNoKGgpO3JldHVybiBhfTtyZXR1cm4gZX0oKX0sezI1MDoyNTB9XSwxMjU6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGYsYyl7aWYoZi5oYXNPd25Qcm9wZXJ0eShcIl90eW50X2JnaW1hZ2VzaXplXCIpKXJldHVybiBjKGYuX3R5bnRfYmdpbWFnZXNpemUpO3ZhciBhPWUuZGVmYXVsdC5BKGYsXCJiYWNrZ3JvdW5kLWltYWdlXCIpLnJlcGxhY2UoL3VybFxcKChbJ1wiXSk/KC4qPylcXDFcXCkvZ2ksXCIkMlwiKTtlLmRlZmF1bHQuT00oYSxmdW5jdGlvbihiKXtiPWYuX3R5bnRfYmdpbWFnZXNpemU9XG57d2lkdGg6Yi53aWR0aCxoZWlnaHQ6Yi5oZWlnaHR9O3JldHVybiBjKGIpfSl9ZnVuY3Rpb24gcChmLGMsYSl7dmFyIGI9e2F1dG86ZnVuY3Rpb24oayl7cmV0dXJuIGNba119LHB4OmZ1bmN0aW9uKGssbCl7cmV0dXJuIGx9LFwiJVwiOmZ1bmN0aW9uKGssbCl7cmV0dXJuIGwvMTAwKmFba119fTt2YXIgZD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7aWYoZi51Zyl7ZD1hLndpZHRoL2Mud2lkdGg7dmFyIGg9YS5oZWlnaHQvYy5oZWlnaHQ7ZD1cImNvdmVyXCI9PT1mLnVnP01hdGgubWF4KGQsaCk6TWF0aC5taW4oZCxoKTtmPXt3aWR0aDpjLndpZHRoKmQsaGVpZ2h0OmMuaGVpZ2h0KmR9fWVsc2VbXCJ3aWR0aFwiLFwiaGVpZ2h0XCJdLmZvckVhY2goZnVuY3Rpb24oayl7dmFyIGw9ZS5kZWZhdWx0LlNoKGZba10pO2wuemImJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiW2wuemJdJiYoZltrXT1iW2wuemJdKGssbC5VKSl9KTtyZXR1cm4gZn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIixcbnt2YWx1ZTohMH0pO3ZhciBlPWcoMTI3KTt0LmRlZmF1bHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKCl7fWYuc0w9ZnVuY3Rpb24oYyxhKXt2YXIgYj1lLmRlZmF1bHQuQShjLFwiYmFja2dyb3VuZC1wb3NpdGlvblwiKSxkPWM7aWYoZi53dShjKSlpZihiLkZ1KXtcIkJPRFlcIj09PWMudGFnTmFtZSYmKGQ9Yy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KTt2YXIgaD1lLmRlZmF1bHQub2IoZCk7Zi5CTChjLGZ1bmN0aW9uKGspe3ZhciBsPXt9O1tcInhcIixcInlcIl0uZm9yRWFjaChmdW5jdGlvbihtKXt2YXIgbj1cInhcIj09PW0/XCJ3aWR0aFwiOlwiaGVpZ2h0XCIscj1oW25dO249a1tuXTt2YXIgcT1iW21dO2xbbV09XCJweFwiPT09cS56Yj9xLlU6cS5VLzEwMCooci1uKX0pO3JldHVybiBhKGwpfSl9ZWxzZSBjPXt4OmIueC5VLHk6Yi55LlV9LGEoYyk7ZWxzZSBhKHt4OjAseTowfSl9O2YuQkw9ZnVuY3Rpb24oYyxhKXt2YXIgYj1lLmRlZmF1bHQuQShjLFwiYmFja2dyb3VuZC1zaXplXCIpLGQ9YyxoPXt9O1xuYi5JdSYmKFwiQk9EWVwiPT09Yy50YWdOYW1lJiYoZD1jLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpLGg9ZS5kZWZhdWx0Lm9iKGQpKTtiLk91P3YoYyxmdW5jdGlvbihrKXtyZXR1cm4gYShwKGIsayxoKSl9KTphKHAoYix7fSxoKSl9O2Yud3U9ZnVuY3Rpb24oYyl7cmV0dXJuIGUuZGVmYXVsdC5zdShjKX07cmV0dXJuIGZ9KCk7ZS5kZWZhdWx0LmdnLmJhY2tncm91bmRQb3NpdGlvbj17Z2V0OmZ1bmN0aW9uKGYsYyl7ZnVuY3Rpb24gYShoKXtyZXR1cm4gYltoXX12YXIgYj17bGVmdDpcIjAlXCIsdG9wOlwiMCVcIixjZW50ZXI6XCI1MCVcIixyaWdodDpcIjEwMCVcIixib3R0b206XCIxMDAlXCJ9LGQ9e0Z1OiExfTtcImJhY2tncm91bmRQb3NpdGlvblhcImluIGYuc3R5bGU/ZD17eDplLmRlZmF1bHQuQShmLFwiYmFja2dyb3VuZC1wb3NpdGlvbi14XCIpLHk6ZS5kZWZhdWx0LkEoZixcImJhY2tncm91bmQtcG9zaXRpb24teVwiKX06KGQ9Yy5zcGxpdChcIiBcIiksZD17eDpkWzBdLHk6ZFsxXX0pO1tcInhcIixcInlcIl0uZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgaz1cbmUuZGVmYXVsdC5TaChkW2hdLnJlcGxhY2UoLyh0b3B8Y2VudGVyfHJpZ2h0fGJvdHRvbXxsZWZ0KS9nLGEpKTtcIiVcIj09PWsuemImJjAhPT1rLlUmJihkLkZ1PSEwKTtkW2hdPWt9LHRoaXMpO3JldHVybiBkfSxzZXQ6ZnVuY3Rpb24oZixjLGEpe2UuZGVmYXVsdC56ZyhmLFwiYmFja2dyb3VuZC1wb3NpdGlvblwiLFtjLnguVStjLnguemIsYy55LlUrYy55LnpiXS5qb2luKFwiIFwiKSxhKX0scmVtb3ZlOmZ1bmN0aW9uKGYpe1wiYmFja2dyb3VuZFBvc2l0aW9uWFwiaW4gZi5zdHlsZT9lLmRlZmF1bHQuTE4oZixbXCJiYWNrZ3JvdW5kUG9zaXRpb25YXCIsXCJiYWNrZ3JvdW5kUG9zaXRpb25ZXCJdKTplLmRlZmF1bHQuemcoZixcImJhY2tncm91bmRQb3NpdGlvblwiLFwiXCIpfX07ZS5kZWZhdWx0LmdnLmJhY2tncm91bmRTaXplPXtnZXQ6ZnVuY3Rpb24oZixjKXtmPXt3aWR0aDpcImF1dG9cIixoZWlnaHQ6XCJhdXRvXCIsdWc6bnVsbCxJdTohMSxPdTohMX07c3dpdGNoKGMpe2Nhc2UgXCJhdXRvXCI6YnJlYWs7Y2FzZSBcImNvdmVyXCI6Y2FzZSBcImNvbnRhaW5cIjpmLnVnPVxuYzticmVhaztkZWZhdWx0OnZhciBhPWMuc3BsaXQoXCIgXCIpO2M9YVswXTthPWFbMV07Zi53aWR0aD1jO1widW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmKGYuaGVpZ2h0PWEpfWlmKCEvcHgvLnRlc3QoZi53aWR0aCl8fCEvcHgvLnRlc3QoZi5oZWlnaHQpKWlmKGYuSXU9ITAsZi51Z3x8XCJhdXRvXCI9PT1mLndpZHRofHxcImF1dG9cIj09PWYuaGVpZ2h0KWYuT3U9ITA7cmV0dXJuIGZ9LHNldDpmdW5jdGlvbihmLGMsYSl7ZS5kZWZhdWx0LnpnKGYsXCJiYWNrZ3JvdW5kLXNpemVcIixjLnVnfHxbYy53aWR0aCxjLmhlaWdodF0uam9pbihcIiBcIiksYSl9fX0sezEyNzoxMjd9XSwxMjY6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGMpe2Zvcih2YXIgYSxiPTEsZD1hcmd1bWVudHMubGVuZ3RoO2I8ZDtiKyspe2E9YXJndW1lbnRzW2JdO2Zvcih2YXIgaCBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGgpJiYoY1toXT1cbmFbaF0pfXJldHVybiBjfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDEzMSksZT1nKDI1MCksZj1nKDEyNyk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoKXt9Yy5FVD1mdW5jdGlvbihhLGIpe1wib2JqZWN0XCI9PT10eXBlb2YgYiYmKGErPVwiP1wiK2UuZGVmYXVsdC5mbChiKSk7Yj1uZXcgSW1hZ2UoMSwxKTtiLnNyYz1hO3JldHVybiBifTtjLnRkPWZ1bmN0aW9uKGEpe3ZhciBiPWEudnYsZD1hLmZ0LGg9YS5oYyxrPWEuUlQsbD1hLkQ7YT1hLnVybDtlLmRlZmF1bHQuTWMoYikmJihhKz1jLnZBKGIsZCkpO2I9aHx8Zi5kZWZhdWx0Llh0KGwpO2YuZGVmYXVsdC5hcHBlbmQoYixjLnRBKGIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyxhLGspKTtyZXR1cm4gYX07Yy52QT1mdW5jdGlvbihhLGIpe1wic3RyaW5nXCI9PT10eXBlb2YgYiYmYiYmKGEuY2FsbGJhY2s9Yik7cmV0dXJuXCI/XCIrZS5kZWZhdWx0LmZsKGEpfTtjLnRBPWZ1bmN0aW9uKGEsXG5iLGQpe2Z1bmN0aW9uIGgoKXtsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3JldHVybiBkKCl9dmFyIGs9dGhpcyxsPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIlNDUklQVFwiKTtsLmFzeW5jPSEwO2wudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2wuc3JjPWI7XCJmdW5jdGlvblwiPT09dHlwZW9mIGQmJihsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2Zvcih2YXIgbT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyltW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4hbC5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGwucmVhZHlTdGF0ZSk/aC5hcHBseShrLG0pOm51bGx9LGwub25lcnJvcj1mdW5jdGlvbigpe2Zvcih2YXIgbT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyltW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gaC5hcHBseShrLG0pfSk7cmV0dXJuIGx9O2MuWW49ZnVuY3Rpb24oYSxiLGQpe3ZvaWQgMD09PWImJihiPVxue30pO3JldHVybiBjLmpNKHtTbjpcIjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPlwiLHBhcmVudEVsZW1lbnQ6YSx3aWR0aDoxLGhlaWdodDoxLGF0dHJpYnV0ZXM6ZS5kZWZhdWx0LkRjKHtzdHlsZTp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHZpc2liaWxpdHk6XCJoaWRkZW5cIn0sZnJhbWVCb3JkZXI6MH0sYiksY2c6ZH0pfTtjLmpNPWZ1bmN0aW9uKGEpe3ZhciBiPWEuU24sZD1hLmNnO2E9dGhpcy5pTSh7cGFyZW50RWxlbWVudDphLnBhcmVudEVsZW1lbnQsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsYXR0cmlidXRlczphLmF0dHJpYnV0ZXMsRDphLkR9KTtyZXR1cm4gcC5kZWZhdWx0LmJwKGIsYSxkLGMpfTtjLmlNPWZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50RWxlbWVudCxkPWEud2lkdGgsaD1hLmhlaWdodCxrPWIub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiSUZSQU1FXCIpO2E9dih7ZnJhbWVCb3JkZXI6MH0sYS5hdHRyaWJ1dGVzKTthLnN0eWxlJiZcbihlLmRlZmF1bHQuZXh0ZW5kKGsuc3R5bGUsYS5zdHlsZSksZGVsZXRlIGEuc3R5bGUpO2UuZGVmYXVsdC5leHRlbmQoayxhKTtjLlNHKGssZCxoKTtmLmRlZmF1bHQucHJlcGVuZChiLGspO3JldHVybiBrfTtjLlNHPWZ1bmN0aW9uKGEsYixkKXtcIm51bWJlclwiPT09dHlwZW9mIGImJmYuZGVmYXVsdC5WKGEsXCJ3aWR0aFwiLGIrXCJweFwiKTtcIm51bWJlclwiPT09dHlwZW9mIGQmJmYuZGVmYXVsdC5WKGEsXCJoZWlnaHRcIixkK1wicHhcIil9O2MuYnA9ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBwLmRlZmF1bHQuYnAoYSxiLGQpfTtjLmhNPWZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiTElOS1wiKTtkLnR5cGU9XCJ0ZXh0L2Nzc1wiO2QucmVsPVwic3R5bGVzaGVldFwiO2QuaHJlZj1hO2YuZGVmYXVsdC5hcHBlbmQoZi5kZWZhdWx0Llh0KGIpLGQpfTtjLnJNPWZ1bmN0aW9uKGEpe2E9YS5kb2N1bWVudC5zdHlsZVNoZWV0cztmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYilpZihhW2JdLmhyZWYmJlxuZS5kZWZhdWx0LktPKGFbYl0uaHJlZixcIi9zaWMuY3NzXCIpKXJldHVybiEwO3JldHVybiExfTtyZXR1cm4gY30oKTt0LmRlZmF1bHQ9ZztILmtSPWd9LHsxMjc6MTI3LDEzMToxMzEsMjUwOjI1MH1dLDEyNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKSxwPWcoMTUyKTtnKDE1NSk7dmFyIGU9XCJBUFBMRVQgQVJFQSBBVURJTyBCVVRUT04gQ0FOVkFTIERJQUxPRyBFTUJFRCBGUkFNRSBIUiBJRlJBTUUgSU1HIElOUFVUIE1FTlVJVEVNIE1FVEVSIE9CSkVDVCBQUk9HUkVTUyBTRUxFQ1QgVklERU9cIi5zcGxpdChcIiBcIiksZj1bXCJBXCIsXCJTUEFOXCIsXCJJXCJdLmNvbmNhdChlKSxjPXtzUzpcIl90eW50X29mZnNldFwiLGJxOlwiX3R5bnRfZml4ZWRfb2Zmc2V0X3BhcmVudFwiLEx3Oi9bMC05Li1dezEsfS9naSxHeDovcHh8ZW18cmVtfGNtfG1tfGlufHB0fHBjfCV8ZGVnL2dpLERwOnt3aWR0aDpbXCJsZWZ0XCIsXG5cInJpZ2h0XCJdLGhlaWdodDpbXCJ0b3BcIixcImJvdHRvbVwiXX0sYW46bmV3IFdlYWtNYXAsYXBwZW5kOmZ1bmN0aW9uKGEsYil7YS5hcHBlbmRDaGlsZChiKTtyZXR1cm4gdGhpc30scHJlcGVuZDpmdW5jdGlvbihhLGIpe2EuaW5zZXJ0QmVmb3JlKGIsYS5maXJzdENoaWxkKTtyZXR1cm4gdGhpc30sR1Q6ZnVuY3Rpb24oYSxiKXthLmluc2VydEFkamFjZW50RWxlbWVudChcImJlZm9yZWJlZ2luXCIsYil9LEZUOmZ1bmN0aW9uKGEsYil7YS5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmVuZFwiLGIpfSx3bzpmdW5jdGlvbihhLGIsZCl7YT10aGlzLk9pKGEsYS5maXJzdENoaWxkLGQpO2I9dGhpcy5naihiKTthLmprKGIpfSxFSDpmdW5jdGlvbihhLGIsZCl7YT10aGlzLk9pKGEsYS5sYXN0Q2hpbGQsZCk7Yj10aGlzLmdqKGIpO2EuamsoYil9LGxNOmZ1bmN0aW9uKGEsYixkKXthPXRoaXMuT2koYSxhLnByZXZpb3VzRWxlbWVudFNpYmxpbmcsZCk7Yj10aGlzLmdqKGIpO2EuamsoYil9LEN1OmZ1bmN0aW9uKGEsXG5iLGQpe2E9dGhpcy5PaShhLGEsZCk7Yj10aGlzLmdqKGIpO2EuamsoYil9LGdqOmZ1bmN0aW9uKGEpe1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1bXCI8c2NyaXB0PlwiLHYuZGVmYXVsdC5tayhhKSxcIigpXFx4M2Mvc2NyaXB0PlwiXS5qb2luKFwiXFxuXCIpKTthPWEucmVwbGFjZSgvKDxzY3JpcHRbXj5dKj4pXFxzKlxceDNjIS0tL2lnLFwiJDFcIik7YT1hLnJlcGxhY2UoL1xcLz9cXC8/LS1cXHgzZVxccyooPFxcL3NjcmlwdD4pL2lnLFwiJDFcIik7YT1hLnJlcGxhY2UoLyg8c3R5bGVbXj5dKj4pXFxzKlxceDNjIS0tL2lnLFwiJDFcIik7cmV0dXJuIGE9YS5yZXBsYWNlKC8tLVxceDNlXFxzKig8XFwvc3R5bGU+KS9pZyxcIiQxXCIpfSxPaTpmdW5jdGlvbihhLGIsZCl7YT1uZXcgcC5kZWZhdWx0KHtoYzphLE92OmIsRDp0aGlzLkVhKGEpfSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGQmJihhLm9uY29tcGxldGU9ZCk7cmV0dXJuIGF9LGNsZWFyOmZ1bmN0aW9uKGEpe2EuaW5uZXJIVE1MPVwiXCI7cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbihhKXthLnBhcmVudE5vZGUmJlxuYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO3JldHVybiB0aGlzfSxFYTpmdW5jdGlvbihhKXt0aGlzLlN1KGEpfHwoYT05PT09YS5ub2RlVHlwZT9hOmEub3duZXJEb2N1bWVudCxhPWEuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93KTtyZXR1cm4gYX0sWnQ6ZnVuY3Rpb24oYSl7YT10aGlzLkVhKGEpO3ZhciBiPW51bGw7dHJ5e2I9YS5mcmFtZUVsZW1lbnR9Y2F0Y2goZCl7fXJldHVybiBifSxvYjpmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspYltkLTFdPWFyZ3VtZW50c1tkXTtkPXRoaXMuRWEoYSk7dmFyIGg9ZC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaz1kLmRvY3VtZW50LmJvZHk7ZD17fTtkPW51bGw7dGhpcy5TdShhKT8oYj1cIkNTUzFDb21wYXRcIj09PWEuZG9jdW1lbnQuY29tcGF0TW9kZT9oOmssZD17d2lkdGg6Yi5jbGllbnRXaWR0aCxoZWlnaHQ6Yi5jbGllbnRIZWlnaHR9KTo5PT09YS5ub2RlVHlwZT8oZD1mdW5jdGlvbihsKXtyZXR1cm4gTWF0aC5tYXgoa1tcInNjcm9sbFwiK1xubF0saFtcInNjcm9sbFwiK2xdLGtbXCJvZmZzZXRcIitsXSxoW1wib2Zmc2V0XCIrbF0saFtcImNsaWVudFwiK2xdKX0sZD17d2lkdGg6ZChcIldpZHRoXCIpLGhlaWdodDpkKFwiSGVpZ2h0XCIpfSk6ZD10aGlzLmdMLmFwcGx5KHRoaXMsW2FdLmNvbmNhdChiKSk7cmV0dXJuIGR9LGdMOmZ1bmN0aW9uKGEsYil7cmV0dXJue3dpZHRoOk51bWJlcih0aGlzLld0KGEsYixcIndpZHRoXCIpKSxoZWlnaHQ6TnVtYmVyKHRoaXMuV3QoYSxiLFwiaGVpZ2h0XCIpKX19LFd0OmZ1bmN0aW9uKGEsYixkKXtiPWJ8fFwiY29udGVudFwiO3ZhciBoPXYuZGVmYXVsdC5wcm94eShmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5vSChbdGhpcy5BKGEsW2wsdGhpcy5EcFtkXVswXV0uam9pbihcIi1cIikpLHRoaXMuQShhLFtsLHRoaXMuRHBbZF1bMV1dLmpvaW4oXCItXCIpKV0pfSx0aGlzKSxrPWFbXCJvZmZzZXRcIit2LmRlZmF1bHQuYlAoZCldO1wiY29udGVudFwiPT09YiYmKGstPWgoXCJwYWRkaW5nXCIpKTtpZihcImNvbnRlbnRcIj09PWJ8fFwiaW5uZXJcIj09PVxuYilrLT1oKFwiYm9yZGVyXCIpO1wiZnVsbE91dGVyXCI9PT1iJiYoays9aChcIm1hcmdpblwiKSk7cmV0dXJuIGt9LHhMOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkPVtdLGg9YTt0aGlzLkxjKGgpOyl0aGlzLnVkKGgpJiYoZC5wdXNoKHtlbGVtZW50OmgsQmM6dGhpcy4kZChoLFtcInBvc2l0aW9uXCIsXCJ2aXNpYmlsaXR5XCIsXCJkaXNwbGF5XCJdKX0pLHRoaXMub2EoaCx7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHZpc2liaWxpdHk6XCJoaWRkZW5cIixkaXNwbGF5OlwiYmxvY2tcIn0pKSxoPWgucGFyZW50Tm9kZTthPWIuY2FsbCh0aGlzLGEpO2ZvcihiPTA7YjxkLmxlbmd0aDsrK2IpdGhpcy5vYShkW2JdLmVsZW1lbnQsZFtiXS5CYyk7cmV0dXJuIGF9LGV1OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLGQ9W10saD0xO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZFtoLTFdPWFyZ3VtZW50c1toXTtyZXR1cm4gdGhpcy54TChhLGZ1bmN0aW9uKCl7cmV0dXJuIGIub2IuYXBwbHkoYixbYV0uY29uY2F0KGQpKX0pfSxcbm1jOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWFbYl09YXJndW1lbnRzW2JdO3JldHVybiB0aGlzLm9iLmFwcGx5KHRoaXMsYSkud2lkdGh9LHpMOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWFbYl09YXJndW1lbnRzW2JdO3JldHVybiB0aGlzLmV1LmFwcGx5KHRoaXMsYSkud2lkdGh9LGNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPVtdLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWFbYl09YXJndW1lbnRzW2JdO3JldHVybiB0aGlzLm9iLmFwcGx5KHRoaXMsYSkuaGVpZ2h0fSx5TDpmdW5jdGlvbigpe2Zvcih2YXIgYT1bXSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylhW2JdPWFyZ3VtZW50c1tiXTtyZXR1cm4gdGhpcy5ldS5hcHBseSh0aGlzLGEpLmhlaWdodH0sSHY6ZnVuY3Rpb24oYSxiLGQpe3ZhciBoPWI7di5kZWZhdWx0Lk1jKGIpJiYoaD1iLndpZHRoLGQ9Yi5oZWlnaHQpO1xuaD10aGlzLlNoKGgpO2Q9dGhpcy5TaChkKTt0aGlzLm9hKGEse3dpZHRoOlwiXCIraC5VKyhoLnpifHxcInB4XCIpLGhlaWdodDpcIlwiK2QuVSsoZC56Ynx8XCJweFwiKX0pO3JldHVybiB0aGlzfSxEbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vYyhhKT9hLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OmEub2Zmc2V0UGFyZW50fSxJYzpmdW5jdGlvbihhKXt2YXIgYj0wLGQ9MDtpZihhLm9mZnNldFBhcmVudHx8XCJudW1iZXJcIj09PXR5cGVvZiBhLm9mZnNldExlZnQpe2RvIGIrPWEub2Zmc2V0TGVmdCxkKz1hLm9mZnNldFRvcCxhPWEub2Zmc2V0UGFyZW50O3doaWxlKGEpfWVsc2UgYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QmJihhPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYj1hLmxlZnQsZD1hLnRvcCk7cmV0dXJue2xlZnQ6Yix0b3A6ZH19LE9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuXCJyaWdodFwiPT09Yj90aGlzLlZLKGEpOnRoaXMuSWMoYSkubGVmdH0sVks6ZnVuY3Rpb24oYSl7dmFyIGI9XG50aGlzLkRuKGEpLGQ9dGhpcy4kZChhLFtcInBvc2l0aW9uXCIsXCJyaWdodFwiLFwibGVmdFwiXSksaD1kLnBvc2l0aW9uLGs9ZC5yaWdodDtyZXR1cm5cImF1dG9cIiE9PWs/XCJzdHJpbmdcIj09PXR5cGVvZiBrP2sucmVwbGFjZShcInB4XCIsXCJcIik6azpcInN0YXRpY1wiPT09aD9cIlwiOlwicmVsYXRpdmVcIj09PWg/LTEqKHBhcnNlSW50KGQubGVmdCwxMCl8fDApOnRoaXMubWMoYiktKGEub2Zmc2V0TGVmdCthLm9mZnNldFdpZHRoKX0sSG46ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFnZVhPZmZzZXR8fGEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR9LGd1OmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhZ2VZT2Zmc2V0fHxhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B9LEVuOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9e30pO2I9Yi5EO2lmKCFiKXtiPXRoaXMuRWEoYSk7aWYoSC5YZShiKSE9PXRvcClyZXR1cm4gbnVsbDtiPXRvcH1hPXRoaXMudGEoYSk7cmV0dXJuKGI9XG50aGlzLmF1KFt7bGVmdDowLHRvcDowLHJpZ2h0OmIuaW5uZXJXaWR0aCxib3R0b206Yi5pbm5lckhlaWdodH0sYV0pKT8oYj1iLndpZHRoKmIuaGVpZ2h0LGE9YS53aWR0aCphLmhlaWdodCxiL2EqMTAwKTowfSx0YTpmdW5jdGlvbihhLGIpe3ZhciBkPXYuZGVmYXVsdC5EYyh7fSxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtiPXYuZGVmYXVsdC5EYyh7fSxiKTtiLmN3JiYhdGhpcy5vYyhhKSYmKGI9dGhpcy5FYShhKSxhPXRoaXMuSG4oYiksYj10aGlzLmd1KGIpLGQubGVmdCs9YSxkLnJpZ2h0Kz1hLGQudG9wKz1iLGQuYm90dG9tKz1iKTtyZXR1cm4gZH0scnU6ZnVuY3Rpb24oYSxiLGQpe3ZhciBoPXRoaXMuUXUoYSk7Yj10aGlzLkFoKGEsYik7YT10aGlzLnRhKGEsZCk7Zm9yKHZhciBrLGw9MDtsPGIubGVuZ3RoJiZhOysrbClrPWJbbF0sIXRoaXMuWkgoayl8fGgmJiF0aGlzLkRNKGspfHwoYT10aGlzLmF1KFthLGtdLGQpKTtyZXR1cm4gYX0scHU6ZnVuY3Rpb24oYSl7dGhpcy53YihhLFxuXCJ0eW50LWNsZWFyZml4XCIpO3ZhciBiPXRoaXMudGEoYSk7MD49Yi5oZWlnaHQmJnRoaXMuUXUoYSkmJih0aGlzLndiKGEsXCJ0eW50LWRpc3BsYXktdGFibGVcIiksYj10aGlzLnRhKGEpLHRoaXMucWIoYSxcInR5bnQtZGlzcGxheS10YWJsZVwiKSk7dGhpcy5xYihhLFwidHludC1jbGVhcmZpeFwiKTtyZXR1cm4gYn0sYXU6ZnVuY3Rpb24oYSxiKXt2YXIgZD1bXTtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKHZhciBoPTA7aDxhLmxlbmd0aDsrK2gpZC5wdXNoKHRoaXMudk0oYVtoXSk/dGhpcy50YShhW2hdLGIpOmFbaF0pO2E9e2xlZnQ6ZFswXS5sZWZ0LHJpZ2h0OmRbMF0ucmlnaHQsdG9wOmRbMF0udG9wLGJvdHRvbTpkWzBdLmJvdHRvbX07Zm9yKGg9MTtoPGQubGVuZ3RoOysraCl7YS5sZWZ0PU1hdGgubWF4KGEubGVmdCxkW2hdLmxlZnQpO2EucmlnaHQ9TWF0aC5taW4oYS5yaWdodCxkW2hdLnJpZ2h0KTtpZihhLmxlZnQ+PWEucmlnaHQpcmV0dXJuIG51bGw7YS50b3A9TWF0aC5tYXgoYS50b3AsXG5kW2hdLnRvcCk7YS5ib3R0b209TWF0aC5taW4oYS5ib3R0b20sZFtoXS5ib3R0b20pO2lmKGEudG9wPj1hLmJvdHRvbSlyZXR1cm4gbnVsbH1hLndpZHRoPWEucmlnaHQtYS5sZWZ0O2EuaGVpZ2h0PWEuYm90dG9tLWEudG9wO3JldHVybiBhfSxZZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnRhKGEpLmxlZnQ7dGhpcy5vYyhhKSYmKGIrPXRoaXMuSG4odGhpcy5FYShhKSkpO3JldHVybiBifSxHbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdShhKS10aGlzLllkKGEpfSxtdTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PXNhLmJvZHk/dGhpcy5tYyhzYSktdGhpcy5tYyhzYS5ib2R5KTp0aGlzLm1jKHNhLmJvZHkpLXRoaXMubWMoYSxcIm91dGVyXCIpfSxCVDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5VdChhLFwid2lkdGhcIil9LGp1OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlV0KGEsXCJoZWlnaHRcIil9LFV0OmZ1bmN0aW9uKGEsYil7dmFyIGQ9MDtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7XG52YXIgaD1hWzBdO2Zvcih2YXIgaz0wO2s8YS5sZW5ndGg7KytrKXt2YXIgbD10aGlzLm9iKGFba10pO2xbYl0+ZCYmKGg9YVtrXSxkPWxbYl0pfXJldHVybiBofSx4VDpmdW5jdGlvbihhKXtyZXR1cm4gYS50ZXh0Q29udGVudHx8YS5pbm5lclRleHR8fFwiXCJ9LFh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXXx8YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LEFoOmZ1bmN0aW9uKGEsYixkKXt2b2lkIDA9PT1kJiYoZD17fSk7Zm9yKHZhciBoPWImJnRoaXMuTGMoYiksaz1bXSxsPWEucGFyZW50Tm9kZTtsJiZ0aGlzLkxjKGwpJiYoIWJ8fCFofHx0aGlzLmNvbnRhaW5zKGIsbCkpOylrLnB1c2gobCksbD1sLnBhcmVudE5vZGU7cmV0dXJuIGQuWk8mJiFoJiYoYT10aGlzLlp0KGEpKT9rLmNvbmNhdChhKS5jb25jYXQodGhpcy5BaChhLGIsZCkpOmt9LFhLOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7W2FdLmNvbmNhdCh0aGlzLkFoKGEpKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLnpNKGQpP1xuKGI9ZCwhMCk6ITF9LHRoaXMpO3JldHVybiBifSxCaDpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPVwiXCIpO3ZhciBkPXRoaXMuRGgoYSk7aWYoIWR8fFwiaHRtbFwiPT09ZHx8XCJib2R5XCI9PT1kfHwhYS5nZXRBdHRyaWJ1dGUpcmV0dXJuKGR8fFwiKG5vbmUpXCIpK2I7dmFyIGg9YS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSxrPWEuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIik7aCYmKGQrPVwiI1wiK2gpO2smJihkKz1cIi5cIitrLnRyaW0oKS5zcGxpdCgvW1xcc1xcbl0rLykuam9pbihcIi5cIikpO2I9XCJcIitkK2I7cmV0dXJuIG51bGw9PT1hLnBhcmVudE5vZGU/XCIobm9uZSkgPiBcIitiOnRoaXMuQmgoYS5wYXJlbnROb2RlLFwiID4gXCIrYil9LHpNOmZ1bmN0aW9uKGEpe3JldHVybiEoXCJhXCIhPT10aGlzLkRoKGEpfHwhYS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpKX0sRGg6ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhLm5vZGVOYW1lP2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpcIlwifSxzaG93OmZ1bmN0aW9uKGEpe2lmKHRoaXMudWQoYSkmJlxuKHRoaXMuVihhLFwiZGlzcGxheVwiLFwiXCIpLHRoaXMudWQoYSkpKXt2YXIgYj1zYS5jcmVhdGVFbGVtZW50KGEubm9kZU5hbWUpO3RoaXMucHJlcGVuZChzYS5ib2R5LGIpO3ZhciBkPXRoaXMuQShiLFwiZGlzcGxheVwiKTt0aGlzLnJlbW92ZShiKTt0aGlzLlYoYSxcImRpc3BsYXlcIixkKX19LCRlOmZ1bmN0aW9uKGEpe2lmKHRoaXMudWQoYSkpcmV0dXJuIHRoaXM7dGhpcy5WKGEsXCJkaXNwbGF5XCIsXCJub25lXCIpO3JldHVybiB0aGlzfSxNdDpmdW5jdGlvbihhLGIpe2E9di5kZWZhdWx0LmFpKGEpO2IuZm9yRWFjaChmdW5jdGlvbihkLGgpe2JbaF09ZC50b1VwcGVyQ2FzZSgpfSk7Yj12LmRlZmF1bHQuVXMoYik7cmV0dXJuIGEuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiEhYltkLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCldfSl9LHhLOmZ1bmN0aW9uKGEsYil7dmFyIGQ9T2JqZWN0LmtleXMoYik7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpLmZpbHRlcihmdW5jdGlvbihoKXtoPVxudGhpcy4kZChoLGQpO3ZhciBrPSEwLGw7Zm9yKGwgaW4gaCliW2xdLnRvU3RyaW5nKCkhPT1oW2xdJiYoaz0hMSk7cmV0dXJuIGt9LHRoaXMpfSxxdDpmdW5jdGlvbihhLGIpe3ZhciBkPWEuY2xvbmVOb2RlKCExKTt0aGlzLlYoZCxcInZpc2liaWxpdHlcIixcImhpZGRlblwiLFwiaW1wb3J0YW50XCIpO3RoaXMuQShhLFwicG9zaXRpb25cIikubWF0Y2goL3N0YXRpY3xyZWxhdGl2ZS8pJiZ0aGlzLlYoZCxcInBvc2l0aW9uXCIsXCJhYnNvbHV0ZVwiLFwiaW1wb3J0YW50XCIpO2EucGFyZW50Tm9kZSYmMT09PWEucGFyZW50Tm9kZS5ub2RlVHlwZSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkLGEpO2ImJnRoaXMuVihkLFwiZGlzcGxheVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpO3JldHVybiBkfSxnbjpmdW5jdGlvbihhLGIsZCl7dm9pZCAwPT09YiYmKGI9XCJESVZcIik7Yj1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYik7Yi5pZD1kfHxcInR5bnQtdG1wLVwiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXEQvZyxcblwiXCIpO2Iuc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiO2Iuc3R5bGUubGVmdD1cIi0xMDAwMHB4XCI7Yi5zdHlsZS50b3A9XCItMTAwMDBweFwiO3RoaXMucHJlcGVuZChhLmRvY3VtZW50LmJvZHl8fGEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGIpO3JldHVybiBifSxYSTpmdW5jdGlvbigpe3ZhciBhPXNhLmdldEVsZW1lbnRCeUlkKFwidHludC1jb3JuZXItc3RpY2t5XCIpO2F8fChhPXNhLmNyZWF0ZUVsZW1lbnQoXCJESVZcIiksYS5pZD1cInR5bnQtY29ybmVyLXN0aWNreVwiLGEuc3R5bGUuY3NzVGV4dD1cInBvc2l0aW9uOmZpeGVkOyByaWdodDowOyBib3R0b206MDsgdmlzaWJpbGl0eTpoaWRkZW5cIixzYS5ib2R5LmFwcGVuZENoaWxkKGEpKTtyZXR1cm4gYX0sRUs6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuR2EueXYpe3ZhciBiPTA9PT1wYXJzZUludCh0aGlzLkEoYSxcIm1hcmdpbkxlZnRcIiksMTApP1widHludC1vbmVweC1tYXJnaW5cIjpcInR5bnQtemVyby1tYXJnaW5cIjt0aGlzLndiKGEsYik7dGhpcy5ZZChhKTtcbnRoaXMucWIoYSxiKX19LGNvbnRhaW5zOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuY29udGFpbnMoYil8fGIucGFyZW50Tm9kZSYmYS5jb250YWlucyhiLnBhcmVudE5vZGUpfSxiZzpmdW5jdGlvbihhLGIpe2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7KytkKWlmKGFbZF0mJnRoaXMuY29udGFpbnMoYVtkXSxiKSlyZXR1cm4gYVtkXTtyZXR1cm4hMX0saXU6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuR2EubUk/dGhpcy5FYShhKS5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6YS5jdXJyZW50U3R5bGV9LEE6ZnVuY3Rpb24oYSxiLGQpe3ZvaWQgMD09PWQmJihkPXt9KTt2YXIgaD1kLlBPfHx0aGlzLml1KGEpO2I9di5kZWZhdWx0LlVvKGIpO2g9aC5nZXRQcm9wZXJ0eVZhbHVlJiZoLmdldFByb3BlcnR5VmFsdWUoYil8fGhbYl07Yj10aGlzLmdnW3YuZGVmYXVsdC5iaShiKV07cmV0dXJuIWQuR08mJmImJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmdldD9iLmdldC5jYWxsKHRoaXMsYSxoKTpofSwkZDpmdW5jdGlvbihhLFxuYixkKXt2b2lkIDA9PT1kJiYoZD17fSk7dmFyIGg9e307ZC5QTz10aGlzLml1KGEpO2Zvcih2YXIgaz0wLGw7azxiLmxlbmd0aDsrK2spbD10aGlzLkEoYSxiW2tdLGQpLFwidW5kZWZpbmVkXCIhPT10eXBlb2YgbCYmKGhbYltrXV09bCk7cmV0dXJuIGh9LHduOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuWGooYSxbYl0pW2JdfSxYajpmdW5jdGlvbihhLGIsZCl7dm9pZCAwPT09ZCYmKGQ9e30pO3ZhciBoPXt9LGs9bnVsbCxsPXt9LG09ITE7ZC51c2VDYWNoZSYmdGhpcy5hbi5oYXMoYSkmJihsPXRoaXMuYW4uZ2V0KGEpKTtmb3IodmFyIG49MDtuPGIubGVuZ3RoOysrbilkPWJbbl0sbC5oYXNPd25Qcm9wZXJ0eShkKXx8KChtPWEuc3R5bGVbZF0pJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5JiZcImltcG9ydGFudFwiPT09YS5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KG0pP2xbZF09bTptJiZ0aGlzLkdhLmFJKHRoaXMuRWEoYSkpJiYoXCJsZWZ0XCI9PT1cbmR8fFwicmlnaHRcIj09PWQpP2xbZF09dGhpcy5BKGEsZCk6YS5jdXJyZW50U3R5bGU/bFtkXT1hLmN1cnJlbnRTdHlsZVtkXTooa3x8KGs9dGhpcy5xdChhLCEwKSksbFtkXT10aGlzLkEoayxkLHtHTzohMH0pKSxtPSEwKSxoW2RdPWxbZF07ayYmMT09PWEucGFyZW50Tm9kZS5ub2RlVHlwZSYmdGhpcy5yZW1vdmUoayk7bSYmdGhpcy5hbi5zZXQoYSxsKTtyZXR1cm4gaH0sVjpmdW5jdGlvbihhLGIsZCxoKXt2YXIgaz10aGlzLmdnW3YuZGVmYXVsdC5iaShiKV07ayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsuc2V0P2suc2V0LmNhbGwodGhpcyxhLGQsaCk6dGhpcy56ZyhhLGIsZCxoKTtyZXR1cm4gdGhpc30semc6ZnVuY3Rpb24oYSxiLGQsaCl7dm9pZCAwPT09aCYmKGg9bnVsbCk7aWYobnVsbD09PWQpcmV0dXJuIHRoaXM7Yy5HYS5Idz8oYj12LmRlZmF1bHQuVW8oYiksYS5zdHlsZS5zZXRQcm9wZXJ0eShiLGQudG9TdHJpbmcoKSxoKSk6KGI9di5kZWZhdWx0LmJpKGIpLGEuc3R5bGVbYl09XG5kKTtyZXR1cm4gdGhpc30sb2E6ZnVuY3Rpb24oYSxiLGQpe3ZhciBoPXRoaXM7T2JqZWN0LmtleXMoYikuZm9yRWFjaChmdW5jdGlvbihrKXtyZXR1cm4gaC5WKGEsayxiW2tdLGQpfSk7cmV0dXJuIHRoaXN9LHlnOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5nZ1t2LmRlZmF1bHQuYmkoYildO2QmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLnJlbW92ZT9kLnJlbW92ZS5jYWxsKHRoaXMsYSk6dGhpcy56ZyhhLGIsXCJcIik7cmV0dXJuIHRoaXN9LExOOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDsrK2QpdGhpcy55ZyhhLGJbZF0pO3JldHVybiB0aGlzfSxOTDpmdW5jdGlvbihhLGIpe3JldHVybiBhLmNsYXNzTmFtZS5tYXRjaChuZXcgUmVnRXhwKFwiKF58XFxcXHMrKVwiK2IrXCIoXFxcXHMrfCQpXCIsXCJpZ1wiKSl9LHdiOmZ1bmN0aW9uKGEsYil7aWYoIWJ8fFwic3RyaW5nXCIhPT10eXBlb2YgYilyZXR1cm4gdGhpcztiPWIubWF0Y2goL1xcUysvZyl8fFtdO3ZhciBkPWEuY2xhc3NOYW1lP1xuKFwiIFwiK2EuY2xhc3NOYW1lK1wiIFwiKS5yZXBsYWNlKC9bXFx0XFxyXFxuXFxmXS9nLFwiIFwiKTpcIiBcIjtmb3IodmFyIGg9MDtoPGIubGVuZ3RoOysraCkwPmQuaW5kZXhPZihcIiBcIitiW2hdK1wiIFwiKSYmKGQrPWJbaF0rXCIgXCIpO2I9ZC50cmltKCk7YS5jbGFzc05hbWUhPT1iJiYoYS5jbGFzc05hbWU9Yik7cmV0dXJuIHRoaXN9LHFiOmZ1bmN0aW9uKGEsYil7aWYoIWJ8fFwic3RyaW5nXCIhPT10eXBlb2YgYilyZXR1cm4gdGhpczt2YXIgZD1iLm1hdGNoKC9cXFMrL2cpfHxbXTt2YXIgaD1hLmNsYXNzTmFtZT8oXCIgXCIrYS5jbGFzc05hbWUrXCIgXCIpLnJlcGxhY2UoL1tcXHRcXHJcXG5cXGZdL2csXCIgXCIpOlwiXCI7Zm9yKHZhciBrPTA7azxkLmxlbmd0aDsrK2spZm9yKDswPD1oLmluZGV4T2YoXCIgXCIrZFtrXStcIiBcIik7KWg9aC5yZXBsYWNlKFwiIFwiK2Rba10rXCIgXCIsXCIgXCIpO2I9Yj9oLnRyaW0oKTpcIlwiO2EuY2xhc3NOYW1lIT09YiYmKGEuY2xhc3NOYW1lPWIpO3JldHVybiB0aGlzfSxTaDpmdW5jdGlvbihhKXt2YXIgYj1cblN0cmluZyhhKS5tYXRjaCh0aGlzLkx3KSxkPVN0cmluZyhhKS5tYXRjaCh0aGlzLkd4KTtyZXR1cm4gYj97VTorYlswXSx6YjpkP2RbMF06XCJcIn06e1U6XCJcIix6YjphfX0sb0g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsZD0wLGg9YS5sZW5ndGg7ZDxoOysrZCliKz0rdGhpcy5TaChhW2RdKS5VfHwwO3JldHVybiBifSx1ZDpmdW5jdGlvbihhLGIpe3ZhciBkPVwibm9uZVwiPT09dGhpcy5BKGEsXCJkaXNwbGF5XCIpO3JldHVybiBkfHwhYj9kOnRoaXMudWQoYS5wYXJlbnROb2RlLHRoaXMuTGMoYS5wYXJlbnROb2RlKSl9LE11OmZ1bmN0aW9uKGEsYil7cmV0dXJuIXRoaXMucnUoYSxiKX0sUXU6ZnVuY3Rpb24oYSl7YT10aGlzLkEoYSxcInBvc2l0aW9uXCIpO3JldHVyblwiZml4ZWRcIj09PWF8fFwiYWJzb2x1dGVcIj09PWF9LERNOmZ1bmN0aW9uKGEpe3JldHVyblwic3RhdGljXCIhPT10aGlzLkEoYSxcInBvc2l0aW9uXCIpfSxaSDpmdW5jdGlvbihhKXthPXRoaXMuJGQoYSxbXCJvdmVyZmxvd1wiLFwib3ZlcmZsb3dYXCIsXG5cIm92ZXJmbG93WVwiXSk7cmV0dXJuIGEub3ZlcmZsb3dYJiZcInZpc2libGVcIiE9PWEub3ZlcmZsb3dYfHxhLm92ZXJmbG93WSYmXCJ2aXNpYmxlXCIhPT1hLm92ZXJmbG93WXx8YS5vdmVyZmxvdyYmMD5hLm92ZXJmbG93LmluZGV4T2YoXCJ2aXNpYmxlXCIpfSxRbjpmdW5jdGlvbihhLGIpe2I9KHZvaWQgMD09PWI/e306YikuZEk7Yj12b2lkIDA9PT1iPyExOmI7dmFyIGQ9MDtmb3IoYT1hLmNoaWxkTm9kZXM7ZDxhLmxlbmd0aDtkKyspe3ZhciBoPWFbZF0saztpZihrPWgubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSlrPXRoaXMuRWEoaCksaz0hKGggaW5zdGFuY2VvZiBrLkhUTUxTY3JpcHRFbGVtZW50fHxoIGluc3RhbmNlb2Ygay5TVkdUaXRsZUVsZW1lbnR8fGggaW5zdGFuY2VvZiBrLlNWR0Rlc2NFbGVtZW50KTtpZihrKXtpZih0aGlzLlFuKGgpKXJldHVybiEwO2lmKCFiKWJyZWFrfWVsc2UgaWYoaC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiZoLmRhdGEudHJpbSgpKXJldHVybiEwfXJldHVybiExfSxcbkpUOmZ1bmN0aW9uKGEpe2E9YS5jaGlsZE5vZGVzO2Zvcih2YXIgYixkPTA7ZDxhLmxlbmd0aDtkKyspaWYoYj1hW2RdLCEoXCJTQ1JJUFRcIj09PWIubm9kZU5hbWV8fFwiSU1HXCI9PT1iLm5vZGVOYW1lJiYxPj1iLndpZHRoJiYxPj1iLmhlaWdodHx8Mz09PWIubm9kZVR5cGUmJlwiXCI9PT1iLmRhdGEudHJpbSgpfHw4PT09Yi5ub2RlVHlwZXx8Yi5zdHlsZSYmKFwiaGlkZGVuXCI9PT1iLnN0eWxlLnZpc2liaWxpdHl8fFwibm9uZVwiPT09Yi5zdHlsZS5kaXNwbGF5KXx8XCJESVZcIj09PWIubm9kZU5hbWUmJjA9PT1iLmNoaWxkTm9kZXMubGVuZ3RoKSlyZXR1cm4hMTtyZXR1cm4hMH0sdE06ZnVuY3Rpb24oYSxiKXtpZihcImlmcmFtZVwiIT09dGhpcy5EaChhKSlyZXR1cm4hMTtpZigwPD1hLnNyYy5pbmRleE9mKFwiZ29vZ2xlYWRzLmcuZG91YmxlY2xpY2submV0L3BhZ2VhZC92aWV3dGhyb3VnaGNvbnZlcnNpb25cIikpcmV0dXJuITA7aWYoIWJ8fCFiLmFVKWlmKGI9dGhpcy5vYihhKSw1PmIud2lkdGgmJlxuNT5iLmhlaWdodClyZXR1cm4hMDtpZihiPXRoaXMuWXQoYSkpe2lmKCFiLmJvZHl8fHRoaXMuTXQoYi5ib2R5LmNoaWxkcmVuLFtcInNjcmlwdFwiXSkubGVuZ3RoPT09Yi5ib2R5LmNoaWxkcmVuLmxlbmd0aCYmIXRoaXMuUW4oYi5ib2R5KSlyZXR1cm4hMH1lbHNlIGlmKDA9PT1hLnNyYy5sZW5ndGgpcmV0dXJuITA7cmV0dXJuITF9LFl0OmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7dHJ5e2I9YS5jb250ZW50V2luZG93LmRvY3VtZW50fWNhdGNoKGQpe31yZXR1cm4gYn0sUnU6ZnVuY3Rpb24oYSxiKXtiPWImJmIuWEo7dmFyIGQ7aWYoYil7dmFyIGg9XCJ0eW50LW5vLXRyYW5zaXRpb25cIjsoZD0oZD10aGlzLnV1KGEpJiZ0aGlzLnZuKGEsXCJ0cmFuc2l0aW9uLXByb3BlcnR5XCIpKSYmL29wYWNpdHl8YWxsLy50ZXN0KGQpKSYmdGhpcy53YihhLGgpfWQ9XCJoaWRkZW5cIj09PXRoaXMuQShhLFwidmlzaWJpbGl0eVwiKXx8LjAxPj1wYXJzZUZsb2F0KHRoaXMuQShhLFwib3BhY2l0eVwiKSl8fHRoaXMuaW8oYSk7XG5iJiYodGhpcy5xYihhLGgpLGg9XCJ0cmFuc2l0aW9uXCJpbiBzYS5ib2R5LnN0eWxlP1widHJhbnNpdGlvbmVuZFwiOlwid2Via2l0VHJhbnNpdGlvbkVuZFwiLGI9YS5vd25lckRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIiksYi5pbml0RXZlbnQoaCwhMCwhMCksYS5kaXNwYXRjaEV2ZW50KGIpKTtyZXR1cm4gZH0sVUw6ZnVuY3Rpb24oYSl7aWYoMD09PWEuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYj0wO2I8Zi5sZW5ndGg7YisrKWlmKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZltiXSlbMF0pcmV0dXJuITA7cmV0dXJuITF9LGlvOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRNKGEpfHwhdi5kZWZhdWx0LmNhKGUsYS5ub2RlTmFtZSkmJiF0aGlzLlVMKGEpJiYhdGhpcy5RbihhLHtkSTohMH0pJiZ0aGlzLlRMKGEpJiYhdGhpcy5zdShhKSYmIXRoaXMuTUwoYSkmJiF0aGlzLlBMKGEpfSxUTDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLkEoYSxcImJhY2tncm91bmQtY29sb3JcIik7XG5hPXRoaXMuRWEoYSk7cmV0dXJuIWJ8fFwiXCI9PT1ifHxcIm5vbmVcIj09PWJ8fFwidHJhbnNwYXJlbnRcIj09PWJ8fGI9PT10aGlzLkdhLlJKKGEpfSxzdTpmdW5jdGlvbihhKXtyZXR1cm5cIm5vbmVcIiE9PXRoaXMuQShhLFwiYmFja2dyb3VuZC1pbWFnZVwiKX0sTUw6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiLFwibGVmdFwiXSxkPTA7ZDxiLmxlbmd0aDsrK2QpaWYoMDxwYXJzZUludCh0aGlzLkEoYSxcImJvcmRlci1cIitiW2RdKSwxMCkpcmV0dXJuITA7cmV0dXJuITF9LFBMOmZ1bmN0aW9uKGEpe3JldHVybihhPXRoaXMuQShhLFwiYm94LXNoYWRvd1wiKSkmJlwibm9uZVwiIT09YX0sTGM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5FYShhKTtyZXR1cm4gYT09PWJ8fDk9PT1hLm5vZGVUeXBlPyExOmE9PT1iLmRvY3VtZW50LmJvZHk/ITE6dGhpcy5jb250YWlucyhiLmRvY3VtZW50LmJvZHksYSl9LEtUOmZ1bmN0aW9uKGEpe3ZhciBiPSEwO3RyeXtiPSEhdGhpcy5adChhKX1jYXRjaChkKXt9cmV0dXJuIGJ9LFxuU3U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPT1hJiZhPT09YS53aW5kb3d9LHZNOmZ1bmN0aW9uKGEpe3JldHVybiEhKGEmJmEub3duZXJEb2N1bWVudCYmdGhpcy5FYShhKS5hbGVydCl9LHhNOmZ1bmN0aW9uKGEpe3JldHVybiAwIT09dGhpcy5FbihhKX0sSHU6ZnVuY3Rpb24oYSl7dmFyIGI9cGFyc2VJbnQodGhpcy5BKHNhLmJvZHksXCJwYWRkaW5nLWxlZnRcIiksMTApK3BhcnNlSW50KHRoaXMuQShzYS5ib2R5LFwicGFkZGluZy1yaWdodFwiKSwxMCk7cmV0dXJuIE1hdGguYWJzKHRoaXMuWWQoYSktdGhpcy5HbihhKSk8PWIrNH0sb2M6ZnVuY3Rpb24oYSl7cmV0dXJuIGEub2Zmc2V0UGFyZW50PT09dGhpcy5HYS5BSyh0aGlzLkVhKGEpKSYmXCJmaXhlZFwiPT09dGhpcy5BKGEsXCJwb3NpdGlvblwiKX0sSFQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuRXUoYSxcImxlZnRcIil9LElUOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkV1KGEsXCJyaWdodFwiKX0sRXU6ZnVuY3Rpb24oYSxiKXtyZXR1cm5cImF1dG9cIj09PVxudGhpcy5BKGEsYil8fFwiYXV0b1wiPT09dGhpcy53bihhLGIpfSxvTTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLiRkKGEsW1wibGVmdFwiLFwicmlnaHRcIl0pO2lmKFwiYXV0b1wiPT09Yi5sZWZ0JiZcImF1dG9cIj09PWIucmlnaHQpcmV0dXJuITA7YT10aGlzLlhqKGEsW1wibGVmdFwiLFwicmlnaHRcIl0pO3JldHVyblwiYXV0b1wiPT09YS5sZWZ0JiZcImF1dG9cIj09PWEucmlnaHQ/ITA6ITF9LGhvOmZ1bmN0aW9uKGEsYil7Yj12LmRlZmF1bHQuZXh0ZW5kKHt1c2VDYWNoZTohMH0sYik7aWYoIXRoaXMuTGMoYSkpcmV0dXJuITA7aWYoIXRoaXMuUUwoYSxiKSlyZXR1cm4hMTtiPU1hdGguY2VpbCh0aGlzLm1jKGEucGFyZW50Tm9kZSl8fHRoaXMucHUoYS5wYXJlbnROb2RlKS53aWR0aCk7cmV0dXJuIE1hdGguY2VpbCh0aGlzLm1jKGEsXCJvdXRlclwiKSk+PWI/ITA6dGhpcy5wTShhKSYmdGhpcy5IdShhKX0sUUw6ZnVuY3Rpb24oYSxiKXtiPXYuZGVmYXVsdC5leHRlbmQoe3VzZUNhY2hlOiEwfSxiKTthPXRoaXMuWGooYSxcbltcIndpZHRoXCIsXCJtYXgtd2lkdGhcIl0sYik7cmV0dXJuIHRoaXMuTHUoYS53aWR0aCkmJnRoaXMuTHUoYVtcIm1heC13aWR0aFwiXSl9LEx1OmZ1bmN0aW9uKGEpe3JldHVyblwiYXV0b1wiPT09YXx8XCJub25lXCI9PT1hfHwwPD1TdHJpbmcoYSkuaW5kZXhPZihcIiVcIil9LE9NOmZ1bmN0aW9uKGEsYil7dmFyIGQ9bmV3IEltYWdlO2Qub25sb2FkPWQub25lcnJvcj12LmRlZmF1bHQucHJveHkoYix0aGlzLGQpO2Quc3JjPWF9LHNldFRyYW5zZm9ybTpmdW5jdGlvbihhLGIsZCl7Zm9yKHZhciBoPVtcIlwiLFwiLXdlYmtpdC1cIixcIi1tb3otXCIsXCItbXMtXCIsXCItby1cIl0saz0wO2s8aC5sZW5ndGg7KytrKXRoaXMuVihhLGhba10rXCJ0cmFuc2Zvcm1cIixiKSxkJiZ0aGlzLlYoYSxoW2tdK1widHJhbnNmb3JtLW9yaWdpblwiLGQpfSx2bjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLkEoYSxiKXx8dGhpcy5BKGEsXCItbW96LVwiK2IpfHx0aGlzLkEoYSxcIi13ZWJraXQtXCIrYil8fHRoaXMuQShhLFwiLW8tXCIrYil9LE9MOmZ1bmN0aW9uKGEsXG5iKXtmb3IodmFyIGQ9ITE7YSYmIWQmJmI7KWQ9Yi5jYWxsKHRoaXMsYSksYT1hLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGR9LFdMOmZ1bmN0aW9uKGEpe2lmKCF0aGlzLnV1KGEpKXJldHVybiExO2E9dGhpcy52bihhLFwidHJhbnNpdGlvbi1wcm9wZXJ0eVwiKTtyZXR1cm4vbGVmdHxyaWdodHxhbGx8dHJhbnNmb3JtLy50ZXN0KGEpfSx1dTpmdW5jdGlvbihhKXthPXBhcnNlRmxvYXQodGhpcy52bihhLFwidHJhbnNpdGlvbi1kdXJhdGlvblwiKSk7cmV0dXJuIWlzTmFOKGEpJiYwPGF9LERMOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuRWEoYSkuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtiLnNlbGVjdE5vZGVDb250ZW50cyhhKTthPWIuZ2V0Q2xpZW50UmVjdHMoKTtiPWFbMF0ubGVmdDtmb3IodmFyIGQ9MTtkPGEubGVuZ3RoO2QrKylhW2RdLmxlZnQ8YiYmKGI9YVtkXS5sZWZ0KTtyZXR1cm57bGVmdDpifX0scE06ZnVuY3Rpb24oYSl7cmV0dXJuXCJub25lXCI9PT10aGlzLkEoYSxcImZsb2F0XCIpP1xuMD50aGlzLkEoYSxcImRpc3BsYXlcIikuaW5kZXhPZihcImlubGluZVwiKTohMH0sZ2c6e2xlZnQ6e2dldDpmdW5jdGlvbihhLGIpe2lmKDA8PWIuaW5kZXhPZihcIiVcIikpe2I9Yy5JYyhhKS5sZWZ0O3ZhciBkPXRoaXMuRG4oYSksaD0wO2Mub2MoYSl8fChoPWMuSWMoZCkubGVmdCtwYXJzZUludChjLkEoZCxcImJvcmRlci1sZWZ0XCIpLDEwKSk7Yj1iLWgtcGFyc2VJbnQoYy5BKGEsXCJtYXJnaW4tbGVmdFwiKSwxMCkrXCJweFwifXJldHVybiBifX19fTtjLkdhPXttSTpcImdldENvbXB1dGVkU3R5bGVcImluIHdpbmRvdyxIdzohIUNTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLmdldFByb3BlcnR5VmFsdWUsV2g6XCJSZXNpemVPYnNlcnZlclwiaW4gd2luZG93fTtjLkdhLkdqPWZ1bmN0aW9uKGEpe3JldHVybiEvRmlyZWZveC9pLnRlc3QoYS5uYXZpZ2F0b3IudXNlckFnZW50KX07KGZ1bmN0aW9uKCl7dmFyIGE9c2EuY3JlYXRlRWxlbWVudChcImRpdlwiKSxiPXNhLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5jLm9hKGEse3Bvc2l0aW9uOlwicmVsYXRpdmVcIixsZWZ0OlwiLTEwMDAwcHhcIixtYXJnaW46XCIwIGF1dG9cIix3aWR0aDpcIjIwMHB4XCIsaGVpZ2h0OlwiMjAwcHhcIix2aXNpYmlsaXR5OlwiaGlkZGVuXCJ9KTtjLm9hKGIse3Bvc2l0aW9uOlwiZml4ZWRcIix0b3A6XCI1MHB4XCIsd2lkdGg6XCI1MHB4XCIsaGVpZ2h0OlwiNTBweFwifSk7Yy5hcHBlbmQoYSxiKTtjLmFwcGVuZChzYS5kb2N1bWVudEVsZW1lbnQsYSk7dmFyIGQ9Yy5JYyhiKS5sZWZ0LGg9MDw9ZDtpZighaCl7Yy5WKGEsXCJsZWZ0XCIsXCItOTkwMHB4XCIpO3ZhciBrPWMuSWMoYikubGVmdH1jLnJlbW92ZShhKTtjLkdhLkJLPWg7Yy5HYS55dj1ofHxkIT09a30pKCk7KGZ1bmN0aW9uKCl7dmFyIGE7Yy5HYS5BSz1mdW5jdGlvbihiKXthPWJbYy5icV07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBhKXJldHVybiBhO3ZhciBkPWMuYnE7aWYoc2EuYm9keSl7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtjLlYoaCxcInBvc2l0aW9uXCIsXCJmaXhlZFwiLFxuXCJpbXBvcnRhbnRcIik7Yy5hcHBlbmQoc2EuYm9keSxoKTthPWgub2Zmc2V0UGFyZW50O2MucmVtb3ZlKGgpO2g9YX1lbHNlIGg9bnVsbDtyZXR1cm4gYltkXT1hPWh9fSkoKTsoZnVuY3Rpb24oKXt2YXIgYTtjLkdhLlJKPWZ1bmN0aW9uKGIpe2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgYSlyZXR1cm4gYTtiPWMuZ24oYik7Yy5WKGIsXCJiYWNrZ3JvdW5kLWNvbG9yXCIsXCJ0cmFuc3BhcmVudFwiKTthPWMuQShiLFwiYmFja2dyb3VuZC1jb2xvclwiKTtjLnJlbW92ZShiKTtyZXR1cm4gYX19KSgpOyhmdW5jdGlvbigpe2Zvcih2YXIgYT1bXCJUb3BcIixcIlJpZ2h0XCIsXCJCb3R0b21cIixcIkxlZnRcIl0sYj1udWxsLGQ9MDtkPGEubGVuZ3RoOysrZCliPWFbZF0sYy5nZ1tcImJvcmRlclwiK2FbZF1dPWZ1bmN0aW9uKGgpe3JldHVybntnZXQ6ZnVuY3Rpb24oayl7cmV0dXJuIGMuQShrLHYuZGVmYXVsdC5VbyhcImJvcmRlclwiK2grXCJXaWR0aFwiKSl9fX0oYil9KSgpOyhmdW5jdGlvbigpe3ZhciBhPW51bGw7Yy5HYS5hST1cbmZ1bmN0aW9uKGIpe2lmKG51bGw9PT1hKXt2YXIgZD1iLmRvY3VtZW50O2I9Yy5nbihiKTtkPWQuY3JlYXRlRWxlbWVudChcIkRJVlwiKTtkLmlkPVwidHludC10bXAtXCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoL1xcRC9nLFwiXCIpO2Quc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiO2Quc3R5bGUubGVmdD1cImF1dG9cIjtjLmFwcGVuZChiLGQpO2E9XCJhdXRvXCI9PT1jLkEoZCxcImxlZnRcIik7Yy5yZW1vdmUoYil9cmV0dXJuIGF9fSkoKTsoZnVuY3Rpb24oKXt2YXIgYT1zYS5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGI9c2EuY3JlYXRlRWxlbWVudChcImRpdlwiKTthLnN0eWxlLnRyYW5zZm9ybT1cInRyYW5zbGF0ZVkoMTAwcHgpXCI7Yi5zdHlsZS5wb3NpdGlvbj1cImZpeGVkXCI7Yi5zdHlsZS50b3A9MDtjLmFwcGVuZChhLGIpO2MuYXBwZW5kKHNhLmRvY3VtZW50RWxlbWVudCxhKTtjLkdhLmdLPWMudGEoYSkudG9wPT09Yy50YShiKS50b3A7Yy5yZW1vdmUoYSl9KSgpO3QuZGVmYXVsdD1jO1xuSC5kUj1jfSx7MTUyOjE1MiwxNTU6MTU1LDI1MDoyNTB9XSwxMjg6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGIsZCxoKXtyZXR1cm4gYi5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJlwiU0NSSVBUXCIhPT1iLm5vZGVOYW1lJiZjLmRlZmF1bHQuTGMoYixoKSYmIWMuZGVmYXVsdC5iZyhkLGIpfWZ1bmN0aW9uIHAoYil7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBiP2IucmVwbGFjZSgvXFxzKy9nLFwiIFwiKS50cmltKCk6XCJcIn1mdW5jdGlvbiBlKGIpe3JldHVybiBudWxsIT09Yn1mdW5jdGlvbiBmKGIsZCxoKXt2b2lkIDA9PT1kJiYoZD1bXSk7dmFyIGs9W10sbD1bXTtpZighKHRoaXMgaW5zdGFuY2VvZiBmKSlyZXR1cm4gbmV3IGYoYixkKTtiLmZvckVhY2goZnVuY3Rpb24obSl7dmFyIG49bnVsbCxyPW51bGwscT1udWxsLHU9bnVsbDtpZihcImNoaWxkTGlzdFwiPT09bS50eXBlKUFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobS5hZGRlZE5vZGVzLGZ1bmN0aW9uKHcpe3YodyxcbmQsaCkmJmEuZGVmYXVsdC5tYihrLHcpfSk7ZWxzZSBpZihcImF0dHJpYnV0ZXNcIj09PW0udHlwZSYmdihtLnRhcmdldCxkLGgpJiYobj1tLnRhcmdldCxyPW0uYXR0cmlidXRlTmFtZSxhLmRlZmF1bHQubWIobCxuKSxuLl90eW50X2F0dHJpYnV0ZV9tdXRhdGlvbnM9bi5fdHludF9hdHRyaWJ1dGVfbXV0YXRpb25zfHx7fSwhKHIgaW4gbi5fdHludF9hdHRyaWJ1dGVfbXV0YXRpb25zKSkpe3E9cChtLm9sZFZhbHVlKTthOnN3aXRjaChyKXtjYXNlIFwic3R5bGVcIjptPW4uc3R5bGUuY3NzVGV4dDticmVhayBhO2Nhc2UgXCJjbGFzc1wiOm09bi5jbGFzc05hbWU7YnJlYWsgYTtkZWZhdWx0Om09bi5nZXRBdHRyaWJ1dGUocil9dT1wKG0pO24uX3R5bnRfYXR0cmlidXRlX211dGF0aW9uc1tyXT1xPT09dT9udWxsOntvbGRWYWx1ZTpxLHZhbHVlOnV9fX0pO2w9bC5tYXAoZnVuY3Rpb24obSl7dmFyIG49YS5kZWZhdWx0Lk50KG0uX3R5bnRfYXR0cmlidXRlX211dGF0aW9ucyxlKTtuPWEuZGVmYXVsdC5lbyhuKT9cbm51bGw6e2VsZW1lbnQ6bSxhdHRyaWJ1dGVzOm59O2RlbGV0ZSBtLl90eW50X2F0dHJpYnV0ZV9tdXRhdGlvbnM7cmV0dXJuIG59KS5maWx0ZXIoZSk7cmV0dXJue3VIOmssY0k6bCxsSzprLmxlbmd0aCtsLmxlbmd0aH19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGM9ZygxMjcpLGE9ZygyNTApO3QuZGVmYXVsdD1ILk1SPWZ9LHsxMjc6MTI3LDI1MDoyNTB9XSwxMjk6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKG0sbil7bS5fX3Byb3RvX189bn18fGZ1bmN0aW9uKG0sbil7Zm9yKHZhciByIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShyKSYmKG1bcl09bltyXSl9O3JldHVybiBmdW5jdGlvbihtLG4pe2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPW19bChtLG4pO20ucHJvdG90eXBlPVxubnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooci5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDEyNyksZT1nKDEyOCksZj1nKDEzOCksYz1nKDI0OSksYT1nKDI1MCk7eT1nKDE0OCk7ZygxNTMpO2coMTU1KTt2YXIgYj1bXCJzdGlja3llbGVtZW50YWRkXCIsXCJzdGlja3llbGVtZW50Y2hhbmdlXCIsXCJzdGlja3llbGVtZW50cmVtb3ZlXCIsXCJwb3NpdGlvbmNoYW5nZVwiXSxkPW5ldyBXZWFrTWFwLGg9W10saz1uZXcgV2Vha01hcDtnPWZ1bmN0aW9uKGwpe2Z1bmN0aW9uIG0obixyKXt2YXIgcT1sLmNhbGwodGhpcyl8fHRoaXM7cS4kYShtLkgoKSk7cS5LcT17fTtxLkpxPWMuZGVmYXVsdC5Qaih7dG46ZnVuY3Rpb24oKXtyZXR1cm4gcS5DcigpfSxkZWxheVRpbWU6NTAwLHh2OnEuS3F9KTtxLlhpPVtdO3EuQmw9MUU0O3EuTmk9W107cS5taj0wO3Eud3M9bnVsbDtxLkdyPXI7cS5VYT1cbm47cS52PXEuVWEuJCgpO3JldHVybiBxfXYobSxsKTttLkg9ZnVuY3Rpb24oKXtyZXR1cm4gYn07bS5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5Hci5kTihmdW5jdGlvbihyKXtyZXR1cm4gbi5jQShyKX0pLm9ic2VydmUodGhpcy5VYS5WYS5kb2N1bWVudC5ib2R5LHthdHRyaWJ1dGVzOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwLGF0dHJpYnV0ZU9sZFZhbHVlOiEwLGF0dHJpYnV0ZUZpbHRlcjpcInN0eWxlIGNsYXNzIHdpZHRoIGJvcmRlciBzcmMgaHNwYWNlIG1hcmdpbndpZHRoIGNlbGxwYWRkaW5nIGNlbGxzcGFjaW5nXCIuc3BsaXQoXCIgXCIpfSk7dGhpcy5VYS51KGYuZGVmYXVsdC50Yyx0aGlzLkpxKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuR3IuZGlzY29ubmVjdCgpO3RoaXMudi5jbGVhclRpbWVvdXQodGhpcy5LcS5Ubyk7dGhpcy5kcygpO3RoaXMuVWEubmEoZi5kZWZhdWx0LnRjLHRoaXMuSnEpO1xudGhpcy5KKCk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLldLPWZ1bmN0aW9uKCl7cmV0dXJuIGh9O20ucHJvdG90eXBlLkttPWZ1bmN0aW9uKG4pe2EuZGVmYXVsdC5tYih0aGlzLlhpLG4pO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5tTz1mdW5jdGlvbihuKXt0aGlzLkJsPW47cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLmZPPWZ1bmN0aW9uKG4pe3ZhciByPXRoaXM7dGhpcy5OaT1uLmZpbHRlcih0aGlzLmxyKTt0aGlzLk5pLmZvckVhY2goZnVuY3Rpb24ocSl7ci5oZihxLHIuWmkocSkpfSk7dGhpcy5jdj10aGlzLllxKHRoaXMuTmkpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5oZj1mdW5jdGlvbihuLHIpe3ZhciBxPWQuZ2V0KG4pO3E/cj1hLmRlZmF1bHQuZXh0ZW5kKHEscnx8e30pOnJ8fChyPXtCYzpwLmRlZmF1bHQuQShuLFwicG9zaXRpb25cIil9KTtkLnNldChuLHIpfTttLnByb3RvdHlwZS5jQT1mdW5jdGlvbihuKXtuPW5ldyBlLmRlZmF1bHQobix0aGlzLlhpLHRoaXMudik7XG4wIT09bi5sSyYmdGhpcy5yRyhuKSYmdGhpcy5JRygpfTttLnByb3RvdHlwZS5yRz1mdW5jdGlvbihuKXt2YXIgcj10aGlzLHE9W10sdT1uLnVILnNsaWNlKDAsMTApO249bi5jSS5zbGljZSgwLDEwKTt2YXIgdz0hMSx4PW51bGw7az1uZXcgV2Vha01hcDt1LmZvckVhY2goZnVuY3Rpb24oQyl7YS5kZWZhdWx0Lm1iKHEsQyk7YS5kZWZhdWx0Lm1iKGgsQyk7ci5oZihDLHIuWmkoQykpfSk7bi5mb3JFYWNoKGZ1bmN0aW9uKEMpe3ZhciBEPUMuZWxlbWVudDtDPWQuZ2V0KEQpfHx7fTt2YXIgQj1yLlppKEQpO2EuZGVmYXVsdC5tYihxLEQpO2EuZGVmYXVsdC5tYihoLEQpO0MmJnIuYkEoRCxDKTtyLnNHKEQsQyxCKSYmKHc9ITApO3Iudi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5oZihELEIpO3IuVUcoQi50cmFuc2l0aW9uRHVyYXRpb24pfSwwKX0pO3g9YS5kZWZhdWx0LnVuaXF1ZShxLmZpbHRlcih0aGlzLmxyKS5jb25jYXQodGhpcy5OaSkpOzAhPT14Lmxlbmd0aCYmdGhpcy5HQyh4KSYmXG4odz0hMCk7cmV0dXJuIHd9O20ucHJvdG90eXBlLnNHPWZ1bmN0aW9uKG4scixxKXt2YXIgdT0hMTtpZighci5oYXNPd25Qcm9wZXJ0eShcIm9mZnNldFwiKXx8cS5CYyE9PXIuQmN8fHIuQXUhPT1xLkF1KXU9ITA7ZWxzZSBpZihuLnN0eWxlLmxlZnQmJlwiYWJzb2x1dGVcIj09PXEuQmMmJnEub2Zmc2V0Pj1yLm9mZnNldCt0aGlzLkJsKWEuZGVmYXVsdC5tYih0aGlzLlhpLG4pO2Vsc2UgaWYocS5vZmZzZXQhPT1yLm9mZnNldHx8cS5oZWlnaHQhPT1yLmhlaWdodHx8cS50cmFuc2Zvcm0hPT1yLnRyYW5zZm9ybSl1PSEwO3JldHVybiB1fTttLnByb3RvdHlwZS5iQT1mdW5jdGlvbihuLHIpe2lmKC9weC8udGVzdChuLnN0eWxlLmxlZnQpKXt2YXIgcT10aGlzLlppKG4pO1wiZml4ZWRcIj09PXEuQmM/XCJmaXhlZFwiIT09ci5CYyYmcS5vZmZzZXQ+PXRoaXMuQmw/KHEuR0s9ITAsdGhpcy5oZihuLHEpLHRoaXMuZihcInN0aWNreWVsZW1lbnRhZGRcIixuKSk6ci5HSyYmdGhpcy5mKFwic3RpY2t5ZWxlbWVudGNoYW5nZVwiLFxubik6XCJmaXhlZFwiPT09ci5CYyYmXCJmaXhlZFwiIT09cS5CYyYmKHRoaXMuaGYobixxKSx0aGlzLmYoXCJzdGlja3llbGVtZW50cmVtb3ZlXCIsbikpfX07bS5wcm90b3R5cGUuWmk9ZnVuY3Rpb24obil7aWYoay5oYXMobikpdmFyIHI9ay5nZXQobik7ZWxzZSByPXAuZGVmYXVsdC4kZChuLFtcInBvc2l0aW9uXCIsXCJoZWlnaHRcIixcInRyYW5zZm9ybVwiLFwidHJhbnNpdGlvbi1kdXJhdGlvblwiXSkscj17QmM6ci5wb3NpdGlvbixvZmZzZXQ6cC5kZWZhdWx0LkljKG4pLmxlZnQsaGVpZ2h0OnIuaGVpZ2h0LEF1Olwic3RhdGljXCI9PT1yLnBvc2l0aW9uPyEwOjA8PXRoaXMuZkMobiksdHJhbnNmb3JtOnIudHJhbnNmb3JtLHRyYW5zaXRpb25EdXJhdGlvbjpyW1widHJhbnNpdGlvbi1kdXJhdGlvblwiXX0say5zZXQobixyKTtyZXR1cm4gcn07bS5wcm90b3R5cGUuZkM9ZnVuY3Rpb24obil7bj1wLmRlZmF1bHQucXQobik7bi5zdHlsZS5sZWZ0PVwiXCI7dmFyIHI9cC5kZWZhdWx0LkljKG4pLmxlZnQ7cC5kZWZhdWx0LnJlbW92ZShuKTtcbnJldHVybiByfTttLnByb3RvdHlwZS5scj1mdW5jdGlvbihuKXtyZXR1cm4gcC5kZWZhdWx0LnhNKG4pJiY1PD1wLmRlZmF1bHQubWMobikmJiFwLmRlZmF1bHQuaG8obikmJnAuZGVmYXVsdC5MYyhuKX07bS5wcm90b3R5cGUuR0M9ZnVuY3Rpb24obil7bj10aGlzLllxKG4pO3ZhciByPW4hPT10aGlzLmN2O3RoaXMuY3Y9bjtyZXR1cm4gcn07bS5wcm90b3R5cGUuWXE9ZnVuY3Rpb24obil7bj1uLmZpbHRlcihkLmhhcyxkKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIGQuZ2V0KHIpLm9mZnNldH0pO3JldHVybiBNYXRoLm1pbi5hcHBseShNYXRoLG4pfTttLnByb3RvdHlwZS5VRz1mdW5jdGlvbihuKXt2YXIgcj0wPG4uaW5kZXhPZihcIm1zXCIpPzE6MUUzO249TnVtYmVyKG4ucmVwbGFjZSgvc3xtcy8sXCJcIikpO3RoaXMubWo9TWF0aC5tYXgocipuLHRoaXMubWopfTttLnByb3RvdHlwZS5JRz1mdW5jdGlvbigpe3ZhciBuPXRoaXMscj0wPT09dGhpcy5taj8wOnRoaXMubWorNTA7dGhpcy5kcygpO1xudGhpcy53cz10aGlzLnYuc2V0VGltZW91dChmdW5jdGlvbigpe24uQ3IoKX0scil9O20ucHJvdG90eXBlLmRzPWZ1bmN0aW9uKCl7dGhpcy52LmNsZWFyVGltZW91dCh0aGlzLndzKX07bS5wcm90b3R5cGUuQ3I9ZnVuY3Rpb24oKXt0aGlzLmYoXCJwb3NpdGlvbmNoYW5nZVwiKTtyZXR1cm4gdGhpc307cmV0dXJuIG19KHkuZGVmYXVsdCk7dC5kZWZhdWx0PUguY1M9Z30sezEyNzoxMjcsMTI4OjEyOCwxMzg6MTM4LDE0ODoxNDgsMTUzOjE1MywxNTU6MTU1LDI0OToyNDksMjUwOjI1MH1dLDEzMDpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGQ9MSxoPWFyZ3VtZW50cy5sZW5ndGg7ZDxoO2QrKyl7Yj1hcmd1bWVudHNbZF07Zm9yKHZhciBrIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsaykmJihhW2tdPWJba10pfXJldHVybiBhfSxwPXRoaXMmJnRoaXMud2F8fGZ1bmN0aW9uKGEsXG5iLGQsaCl7cmV0dXJuIG5ldyAoZHx8KGQ9UHJvbWlzZSkpKGZ1bmN0aW9uKGssbCl7ZnVuY3Rpb24gbShxKXt0cnl7cihoLm5leHQocSkpfWNhdGNoKHUpe2wodSl9fWZ1bmN0aW9uIG4ocSl7dHJ5e3IoaFtcInRocm93XCJdKHEpKX1jYXRjaCh1KXtsKHUpfX1mdW5jdGlvbiByKHEpe3EuZG9uZT9rKHEudmFsdWUpOihuZXcgZChmdW5jdGlvbih1KXt1KHEudmFsdWUpfSkpLnRoZW4obSxuKX1yKChoPWguYXBwbHkoYSxifHxbXSkpLm5leHQoKSl9KX0sZT10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQocSl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBoKFtxLHVdKX19ZnVuY3Rpb24gaChxKXtpZihsKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7azspdHJ5e2lmKGw9MSxtJiYobj1xWzBdJjI/bVtcInJldHVyblwiXTpxWzBdP21bXCJ0aHJvd1wiXXx8KChuPW1bXCJyZXR1cm5cIl0pJiZuLmNhbGwobSksMCk6XG5tLm5leHQpJiYhKG49bi5jYWxsKG0scVsxXSkpLmRvbmUpcmV0dXJuIG47aWYobT0wLG4pcT1bcVswXSYyLG4udmFsdWVdO3N3aXRjaChxWzBdKXtjYXNlIDA6Y2FzZSAxOm49cTticmVhaztjYXNlIDQ6cmV0dXJuIGsubGFiZWwrKyx7dmFsdWU6cVsxXSxkb25lOiExfTtjYXNlIDU6ay5sYWJlbCsrO209cVsxXTtxPVswXTtjb250aW51ZTtjYXNlIDc6cT1rLmwucG9wKCk7ay5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShuPWsuaSxuPTA8bi5sZW5ndGgmJm5bbi5sZW5ndGgtMV0pJiYoNj09PXFbMF18fDI9PT1xWzBdKSl7az0wO2NvbnRpbnVlfWlmKDM9PT1xWzBdJiYoIW58fHFbMV0+blswXSYmcVsxXTxuWzNdKSlrLmxhYmVsPXFbMV07ZWxzZSBpZig2PT09cVswXSYmay5sYWJlbDxuWzFdKWsubGFiZWw9blsxXSxuPXE7ZWxzZSBpZihuJiZrLmxhYmVsPG5bMl0pay5sYWJlbD1uWzJdLGsubC5wdXNoKHEpO2Vsc2V7blsyXSYmay5sLnBvcCgpO2suaS5wb3AoKTtjb250aW51ZX19cT1cbmIuY2FsbChhLGspfWNhdGNoKHUpe3E9WzYsdV0sbT0wfWZpbmFsbHl7bD1uPTB9aWYocVswXSY1KXRocm93IHFbMV07cmV0dXJue3ZhbHVlOnFbMF0/cVsxXTp2b2lkIDAsZG9uZTohMH19dmFyIGs9e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKG5bMF0mMSl0aHJvdyBuWzFdO3JldHVybiBuWzFdfSxpOltdLGw6W119LGwsbSxuLHI7cmV0dXJuIHI9e25leHQ6ZCgwKSxcInRocm93XCI6ZCgxKSxcInJldHVyblwiOmQoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihyW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPWcoMjUwKSxjPW5ldyBXZWFrTWFwO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsZCxoKXt0aGlzLnZlPWI7dGhpcy5MPXYoe2Zyb206MCwkaDowLHhqOnt9fSxkKTt0aGlzLkphPXRoaXMuTC5iTjt0aGlzLlNnPXtsZWZ0OlwicmlnaHRcIixcbnJpZ2h0OlwibGVmdFwifVt0aGlzLkphXTt0aGlzLmE9aH1hLnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbihiKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZCxoLGs9dGhpcztyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGwpe3N3aXRjaChsLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGQ9e3NpOnRoaXMudmUsQWo6dGhpcy5uRyxCajpbYl0sY29udGV4dDp0aGlzfSxoPXRoaXMuYS5iLHRoaXMudmUuZm9yRWFjaChmdW5jdGlvbihtKXtrLktkKG0sXCJfdHludF9vZmZzZXRcIixoLk9uKG0say5KYSkrXCJweFwiKX0pLFs0LHRoaXMuYS5kYS5SaChkKV07Y2FzZSAxOnJldHVybiBsLm0oKSxbMix0aGlzXX19KX0pfTthLnByb3RvdHlwZS5FTz1mdW5jdGlvbihiKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZDtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3N3aXRjaChoLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGQ9e3NpOnRoaXMudmUsQWo6dGhpcy5vRyxcbkJqOltiXSxjb250ZXh0OnRoaXN9LFs0LHRoaXMuYS5kYS5SaChkKV07Y2FzZSAxOnJldHVybiBoLm0oKSxbMix0aGlzXX19KX0pfTthLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGIpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBkO3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7c3dpdGNoKGgubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZD17c2k6dGhpcy52ZSxBajp0aGlzLktHLEJqOltiXSxjb250ZXh0OnRoaXN9LFs0LHRoaXMuYS5kYS5SaChkKV07Y2FzZSAxOnJldHVybiBoLm0oKSxbMix0aGlzXX19KX0pfTthLnByb3RvdHlwZS5jUD1mdW5jdGlvbihiKXtyZXR1cm4gcCh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZDtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKGgpe3N3aXRjaChoLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGQ9e3NpOnRoaXMudmUsQWo6dGhpcy5MRyxCajpbYl0sY29udGV4dDp0aGlzfSxbNCx0aGlzLmEuZGEuUmgoZCldO1xuY2FzZSAxOnJldHVybiBoLm0oKSxbMix0aGlzXX19KX0pfTthLnByb3RvdHlwZS5hZGRFbGVtZW50PWZ1bmN0aW9uKGIpe3RoaXMuS2QoYixcIl90eW50X2Nzc19zaGlmdF9hbW91bnRcIix0aGlzLkwuJGgtdGhpcy5MLmZyb20pLkR2KGIpO2YuZGVmYXVsdC53Zyh0aGlzLnZlLFtiXSk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLktOPWZ1bmN0aW9uKGIpe2YuZGVmYXVsdC5Dbyh0aGlzLnZlLGIpfTthLnByb3RvdHlwZS5Edj1mdW5jdGlvbihiKXt0aGlzLklGKGIpfTthLnByb3RvdHlwZS5JRj1mdW5jdGlvbihiKXt2YXIgZD1wYXJzZUludCh0aGlzLmEuYi5BKGIsdGhpcy5KYSksMTApLGg9dGhpcy5VcShiKTt0aGlzLm9zKGIsZD9kLWgrXCJweFwiOlwiXCIpfTthLnByb3RvdHlwZS5HRj1mdW5jdGlvbihiKXt0aGlzLm9zKGIsYi5zdHlsZVt0aGlzLkphXSl9O2EucHJvdG90eXBlLm9zPWZ1bmN0aW9uKGIsZCl7dGhpcy5LZChiLFwiX3R5bnRfY3NzX2lubGluZV9wb3NpdGlvblwiLHt2YWx1ZTpkLFxucHJpb3JpdHk6Yi5zdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KHRoaXMuSmEpfSl9O2EucHJvdG90eXBlLm5qPWZ1bmN0aW9uKGIsZCl7dmFyIGg9dGhpcyxrPWQud2osbD1kLlViO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihtKXtoLmEuYW5pbWF0ZShbYl0se05jOmssbGY6aC5MLnhqLmxmLGR1cmF0aW9uOmw/bnVsbDowfSxtKX0pfTthLnByb3RvdHlwZS5uRz1mdW5jdGlvbihiLGQpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBoLGssbCxtPXRoaXM7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiBrPXRoaXMuTC4kaC10aGlzLkwuZnJvbSwobD10aGlzLmEuYi5PTChiLHRoaXMuYS5iLldMKSkmJnRoaXMuYS5iLndiKGIsXCJ0eW50LW5vLXRyYW5zaXRpb25cIiksdGhpcy5aQShiKS5LZChiLFwiX3R5bnRfY3NzX3NoaWZ0X2Ftb3VudFwiLGspLkdGKGIpLHRoaXMuTC54ai5sZj10aGlzLnN6KGIpLFxuWzQsdGhpcy5uaihiLHt3ajooaD17fSxoW3RoaXMuSmFdPVwiKz1cIisoaytcInB4XCIpLGgpLFViOmQuVWJ9KV07Y2FzZSAxOnJldHVybiBuLm0oKSxsJiZ0aGlzLkwuRC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG0uYS5iLnFiKGIsXCJ0eW50LW5vLXRyYW5zaXRpb25cIil9LDApLFsyLHRoaXNdfX0pfSl9O2EucHJvdG90eXBlLnN6PWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuZGQoYixcIl90eW50X2Nzc19pbmxpbmVfcG9zaXRpb25cIik7cmV0dXJuXCJcIiE9PWQudmFsdWUmJmQudmFsdWU9PT10aGlzLmEuYi53bihiLHRoaXMuSmEpP2QucHJpb3JpdHk6XCJpbXBvcnRhbnRcIn07YS5wcm90b3R5cGUub0c9ZnVuY3Rpb24oYixkKXt2YXIgaD10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihrKXtoLmEuYmFja2dyb3VuZC5zTChiLGZ1bmN0aW9uKGwpe3JldHVybiBwKGgsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBtLG4scixxLHU7cmV0dXJuIGUodGhpcyxmdW5jdGlvbih3KXtzd2l0Y2gody5sYWJlbCl7Y2FzZSAwOnJldHVybiBtPVxudGhpcy5teihiLGwpLG49bS5NSixyPW0uTkoscT1tLlhNLHRoaXMuRkYoYixuLHIpLHU9dGhpcy5MLnhqPXRoaXMubnooYiksdGhpcy5hLmIuVihiLFwiYmFja2dyb3VuZFBvc2l0aW9uXCIscix1KSxbNCx0aGlzLm5qKGIse3dqOntiYWNrZ3JvdW5kUG9zaXRpb246cX0sVWI6ZC5VYn0pXTtjYXNlIDE6cmV0dXJuIHcubSgpLGsoKSxbMl19fSl9KX0pfSl9O2EucHJvdG90eXBlLm16PWZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gaChtLG4pe3JldHVybntVOm4semI6XCJweFwifX12YXIgaz10aGlzLkwuJGgtdGhpcy5MLmZyb207Yj10aGlzLmEuYi5BKGIsXCJiYWNrZ3JvdW5kUG9zaXRpb25cIik7dmFyIGw9Zi5kZWZhdWx0LiR1KGQsaCk7ZD1mLmRlZmF1bHQuJHUoe3g6ZC54K2sseTpkLnl9LGgpOzA+PWwueC5VJiYoXCIlXCIhPT1iLnguemJ8fDA9PT1iLnguVSkmJihkLnguVT1NYXRoLm1pbihkLnguVSwwKSk7cmV0dXJue01KOmIsTko6bCxYTTpkfX07YS5wcm90b3R5cGUuRkY9ZnVuY3Rpb24oYixcbmQsaCl7ZD17dmFsdWU6ZCxvTjpoLFpuOmIuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uLEJ1OmIuc3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eShcImJhY2tncm91bmRQb3NpdGlvblwiKX07dGhpcy5LZChiLFwiX3R5bnRfYmdwb3NcIixkKX07YS5wcm90b3R5cGUubno9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5kZChiLFwiX3R5bnRfYmdwb3NcIik7cmV0dXJuXCJcIiE9PWQuWm4mJmQuWm49PT0odGhpcy5hLmIud24oYixcImJhY2tncm91bmRQb3NpdGlvblwiKT9kLkJ1OlwiaW1wb3J0YW50XCIpfTthLnByb3RvdHlwZS5LRz1mdW5jdGlvbihiLGQpe3JldHVybiBwKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBoLGssbDtyZXR1cm4gZSh0aGlzLGZ1bmN0aW9uKG0pe3N3aXRjaChtLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGs9dGhpcy5kZChiLFwiX3R5bnRfY3NzX2lubGluZV9wb3NpdGlvblwiKSxsPXRoaXMuVXEoYiksdGhpcy5MLnhqLmxmPWIuc3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eSh0aGlzLkphKSxcbls0LHRoaXMubmooYix7d2o6KGg9e30saFt0aGlzLkphXT1cIis9XCIrKC1sK1wicHhcIiksaCksVWI6ZC5VYn0pXTtjYXNlIDE6cmV0dXJuIG0ubSgpLHRoaXMuYS5iLnlnKGIsdGhpcy5KYSkuVihiLHRoaXMuSmEsay52YWx1ZSxrLnByaW9yaXR5KSx0aGlzLnpGKGIpLFsyLHRoaXNdfX0pfSl9O2EucHJvdG90eXBlLkxHPWZ1bmN0aW9uKGIsZCl7cmV0dXJuIHAodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGg7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihrKXtzd2l0Y2goay5sYWJlbCl7Y2FzZSAwOnJldHVybiBoPXRoaXMuZGQoYixcIl90eW50X2JncG9zXCIpLFs0LHRoaXMubmooYix7d2o6e2JhY2tncm91bmRQb3NpdGlvbjpoLm9OfSxVYjpkLlVifSldO2Nhc2UgMTpyZXR1cm4gay5tKCksdGhpcy5hLmIueWcoYixcImJhY2tncm91bmRQb3NpdGlvblwiKS56ZyhiLFwiYmFja2dyb3VuZFBvc2l0aW9uXCIsaC5abixoLkJ1KSxbMix0aGlzXX19KX0pfTthLnByb3RvdHlwZS5VcT1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5kZChiLFxuXCJfdHludF9jc3Nfc2hpZnRfYW1vdW50XCIpfHwwfTthLnByb3RvdHlwZS5aQT1mdW5jdGlvbihiKXtcInN0YXRpY1wiPT09dGhpcy5hLmIuQShiLFwicG9zaXRpb25cIikmJnRoaXMuYUIoYik7dGhpcy5SeihiKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuYUI9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5hLmI7dGhpcy5LZChiLFwiX3R5bnRfY3NzX3dhc19zdGF0aWNcIiwhMCk7ZC5WKGIsXCJwb3NpdGlvblwiLFwicmVsYXRpdmVcIik7dmFyIGg9cGFyc2VJbnQoZC5BKGIucGFyZW50Tm9kZSxcInBhZGRpbmctdG9wXCIpLDEwKTtoJiZkLnhLKGIuY2hpbGRyZW4se3Bvc2l0aW9uOlwiYWJzb2x1dGVcIn0pLmZvckVhY2goZnVuY3Rpb24oayl7dmFyIGw9cGFyc2VJbnQoZC5BKGssXCJtYXJnaW4tdG9wXCIpLDEwKTtkLlYoayxcIm1hcmdpbi10b3BcIixsLWgrXCJweFwiKX0pfTthLnByb3RvdHlwZS5Sej1mdW5jdGlvbihiKXt2YXIgZD10aGlzLmEuYi5YaihiLFtcImxlZnRcIixcInJpZ2h0XCJdKTt0aGlzLmEuYi5vYyhiKSYmXG5cImF1dG9cIj09PWRbdGhpcy5KYV0mJnRoaXMuZ0EoYik7XCJhdXRvXCIhPT1kW3RoaXMuU2ddJiZ0aGlzLmZBKGIpfTthLnByb3RvdHlwZS5mQT1mdW5jdGlvbihiKXt2YXIgZD10aGlzLmEuYjt0aGlzLktkKGIsXCJfdHludF9kaXJlY3Rpb25fb2Zmc2V0X3Byb3BlcnR5XCIsZC5BKGIsdGhpcy5TZykpO3ZhciBoPWQuT24oYix0aGlzLkphKTtkLndiKGIsXCJ0eW50LW5vLVwiK3RoaXMuU2crXCItcG9zaXRpb25cIikuVihiLHRoaXMuSmEsaCtcInB4XCIpfTthLnByb3RvdHlwZS5nQT1mdW5jdGlvbihiKXt2YXIgZD10aGlzLmEuYjt0aGlzLktkKGIsXCJfdHludF9jc3Nfd2FzX2F1dG9fZml4ZWRcIiwhMCk7ZC5WKGIsdGhpcy5KYSx0aGlzLmRkKGIsXCJfdHludF9vZmZzZXRcIil8fGQuT24oYix0aGlzLkphKStcInB4XCIpfTthLnByb3RvdHlwZS56Rj1mdW5jdGlvbihiKXt0aGlzLnlGKGIpLkFGKGIpLkJGKGIpfTthLnByb3RvdHlwZS55Rj1mdW5jdGlvbihiKXt0aGlzLmRkKGIsXCJfdHludF9jc3Nfd2FzX2F1dG9fZml4ZWRcIikmJlxuKHRoaXMuY20oYixcIl90eW50X2Nzc193YXNfYXV0b19maXhlZFwiKSx0aGlzLmEuYi55ZyhiLHRoaXMuU2cpKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuQUY9ZnVuY3Rpb24oYil7dGhpcy5kZChiLFwiX3R5bnRfZGlyZWN0aW9uX29mZnNldF9wcm9wZXJ0eVwiKSYmKHRoaXMuYS5iLnFiKGIsXCJ0eW50LW5vLVwiK3RoaXMuU2crXCItcG9zaXRpb25cIiksdGhpcy5jbShiLFwiX3R5bnRfZGlyZWN0aW9uX29mZnNldF9wcm9wZXJ0eVwiKSx0aGlzLmEuYi55ZyhiLHRoaXMuSmEpKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuQkY9ZnVuY3Rpb24oYil7dGhpcy5kZChiLFwiX3R5bnRfY3NzX3dhc19zdGF0aWNcIikmJlwicmVsYXRpdmVcIj09PWIuc3R5bGUucG9zaXRpb24mJih0aGlzLmEuYi55ZyhiLFwicG9zaXRpb25cIiksdGhpcy5jbShiLFwiX3R5bnRfY3NzX3dhc19zdGF0aWNcIikpfTthLnByb3RvdHlwZS5kZD1mdW5jdGlvbihiLGQpe3JldHVybihjLmdldChiKXx8e30pW2RdfTthLnByb3RvdHlwZS5LZD1cbmZ1bmN0aW9uKGIsZCxoKXt2YXIgaztjLnNldChiLHYoe30sYy5nZXQoYiksKGs9e30sa1tkXT1oLGspKSk7cmV0dXJuIHRoaXN9O2EucHJvdG90eXBlLmNtPWZ1bmN0aW9uKGIsZCl7ZGVsZXRlIChjLmdldChiKXx8e30pW2RdfTtyZXR1cm4gYX0oKTt0LmRlZmF1bHQ9ZztILmxSPWd9LHsyNTA6MjUwfV0sMTMxOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihmKXtyZXR1cm4gZiYmZi5kb2N1bWVudD9mLmRvY3VtZW50OntvcGVuOmZ1bmN0aW9uKCl7fSx3cml0ZTpmdW5jdGlvbigpe30sY2xvc2U6ZnVuY3Rpb24oKXt9fX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDE0NyksZT1nKDEyNyk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoYyxhKXt0aGlzLk9mPWM7dGhpcy5hPWE7dGhpcy5HbT0hMTt0aGlzLkhyPWZ1bmN0aW9uKCl7fX1mLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7dGhpcy5HbT0hMTt0aGlzLkJiKCkub3BlbigpO1xucmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGMpe2M9dGhpcy5ORShjKTt0aGlzLkdtPSEwO3RoaXMuQmIoKS53cml0ZShjKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUubnY9ZnVuY3Rpb24oYyl7dm9pZCAwPT09YyYmKGM9ZnVuY3Rpb24oKXt9KTt0aGlzLkhyPWM7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dmFyIGM9dGhpczt0aGlzLkJiKCkuY2xvc2UoKTt0aGlzLmEucWQucWsodGhpcy55ZSgpLGZ1bmN0aW9uKCl7Yy5IcigpfSk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLkRIPWZ1bmN0aW9uKGMpe3RoaXMuYS5tYS50ZCh7dXJsOmMuc3JjLGhjOnRoaXMuQmIoKS5ib2R5fSl9O2YucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLkJiKCkuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZShjKX07Zi5wcm90b3R5cGUuRU09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIXRoaXMuT2YuY29udGVudERvY3VtZW50fWNhdGNoKGMpe3JldHVybiExfX07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZi5wcm90b3R5cGUsXCJjaGlsZHJlblwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CYigpLmJvZHkuY2hpbGRyZW59LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGYucHJvdG90eXBlLFwiaW5uZXJIVE1MXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLkJiKCkuYm9keS5pbm5lckhUTUx9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7Zi5icD1mdW5jdGlvbihjLGEsYixkKXt2YXIgaD1hLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7KG5ldyBmKGEse2I6ZS5kZWZhdWx0LHFkOnAuZGVmYXVsdCxtYTpkfSkpLm52KGIpLm9wZW4oKS53cml0ZShjKS5jbG9zZSgpO3JldHVybiBofTtmLnByb3RvdHlwZS5CYj1mdW5jdGlvbigpe3JldHVybiB2KHRoaXMuT2YuY29udGVudFdpbmRvdyl9O2YucHJvdG90eXBlLnllPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuT2YuY29udGVudFdpbmRvd307XG5mLnByb3RvdHlwZS5ORT1mdW5jdGlvbihjKXt2YXIgYTtpZihhPSF0aGlzLkdtKWE9Yyx2b2lkIDA9PT1hJiYoYT1cIlwiKSxhPTAhPT1hLnRyaW0oKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCI8IWRvY3R5cGUgXCIpO3JldHVybiBhP1wiPCFET0NUWVBFIGh0bWw+XFxuXCIrYzpjfTtyZXR1cm4gZn0oKTt0LmRlZmF1bHQ9SC5qUj1nfSx7MTI3OjEyNywxNDc6MTQ3fV0sMTMyOltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBmPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihjLGEpe2MuX19wcm90b19fPWF9fHxmdW5jdGlvbihjLGEpe2Zvcih2YXIgYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJihjW2JdPWFbYl0pfTtyZXR1cm4gZnVuY3Rpb24oYyxhKXtmdW5jdGlvbiBiKCl7dGhpcy5jb25zdHJ1Y3Rvcj1jfWYoYyxhKTtjLnByb3RvdHlwZT1udWxsPT09YT9PYmplY3QuY3JlYXRlKGEpOlxuKGIucHJvdG90eXBlPWEucHJvdG90eXBlLG5ldyBiKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDEzMyk7dmFyIHA9ZygyNTApLGU9ZygyMTgpO2c9ZnVuY3Rpb24oZil7ZnVuY3Rpb24gYygpe3JldHVybiBudWxsIT09ZiYmZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9dihjLGYpO2MucHJvdG90eXBlLmVuPWZ1bmN0aW9uKCl7dmFyIGE9cC5kZWZhdWx0LlAoXCJlbnZcIik7dGhpcy5KZD10aGlzLkpjKCkuZXx8XCJcIjtcInN0cmluZ1wiPT09dHlwZW9mIGEmJih0aGlzLkpkPWE/YStcIi1cIjpcIlwiKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUueW49ZnVuY3Rpb24oKXt2YXIgYT1KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChwLmRlZmF1bHQuUChcImN1c3RvbXZhcnNcIikpKTtyZXR1cm4gYT9wLmRlZmF1bHQuamUocC5kZWZhdWx0LlR2KGEpLHtzZXBhcmF0b3I6XCI7XCIsZW5jb2RlOiEwfSkrXCI7XCI6XCJcIn07Yy5wcm90b3R5cGUuVmU9XG5mdW5jdGlvbigpe3JldHVybiBwLmRlZmF1bHQuUChcImNyZWF0aXZlaWRcIil9O2MucHJvdG90eXBlLmY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuSGM9ZnVuY3Rpb24oKXtyZXR1cm57cHJvZHVjdDpwLmRlZmF1bHQuUChcInByb2R1Y3RcIil8fGUuZGVmYXVsdC5rYSxzaXplOlwiXCJ9fTtjLnByb3RvdHlwZS5Mbj1mdW5jdGlvbigpe3JldHVybntsb2NhdGlvbjp7c2VsZWN0b3I6cC5kZWZhdWx0LlAoXCJzZWxlY3RvclwiKSxpbnNlcnRpb25BdDpwLmRlZmF1bHQuUChcImluc2VydGlvbmF0XCIpfX19O3JldHVybiBjfSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1ILiRRPWd9LHsxMzM6MTMzLDIxODoyMTgsMjUwOjI1MH1dLDEzMzpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgZj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxhKXtjLl9fcHJvdG9fXz1hfXx8ZnVuY3Rpb24oYyxcbmEpe2Zvcih2YXIgYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJihjW2JdPWFbYl0pfTtyZXR1cm4gZnVuY3Rpb24oYyxhKXtmdW5jdGlvbiBiKCl7dGhpcy5jb25zdHJ1Y3Rvcj1jfWYoYyxhKTtjLnByb3RvdHlwZT1udWxsPT09YT9PYmplY3QuY3JlYXRlKGEpOihiLnByb3RvdHlwZT1hLnByb3RvdHlwZSxuZXcgYil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMjUwKTt5PWcoMTQ4KTt2YXIgZT1nKDIxOCk7Zz1mdW5jdGlvbihmKXtmdW5jdGlvbiBjKGEpe3ZhciBiPWYuY2FsbCh0aGlzKXx8dGhpcztiLkpkPVwiXCI7Yi52PWE7cmV0dXJuIGJ9dihjLGYpO2MucHJvdG90eXBlLmVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLm5kPWZ1bmN0aW9uKGEpe3JldHVyblwiaHR0cHM6Ly9cIit0aGlzLkpkK2F9O2MucHJvdG90eXBlLmJJPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmQoSC5Ddyl9O2MucHJvdG90eXBlLk9vPVxuZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZChILnh4KX07Yy5wcm90b3R5cGUuQUw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZChILnl4KX07Yy5wcm90b3R5cGUuRUw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5kKFwic3NjLjMzYWNyb3NzLmNvbVwiKTtyZXR1cm4gcC5kZWZhdWx0LlAoXCIzM3hjaHVybFwiKXx8YStcIi9hcGkvZXhjaGFuZ2VcIn07Yy5wcm90b3R5cGUuRkw9ZnVuY3Rpb24oKXt2YXIgYT1bdGhpcy5uZChcImNkbi50eW50LmNvbS90aS5qc1wiKSx0aGlzLm5kKFwiY2RuLnR5bnQuY29tL2F0aS5qc1wiKSx0aGlzLm5kKFwiY2RuLnR5bnQuY29tL3NpYWIuanNcIiksdGhpcy5uZChcImNkbi50eW50LmNvbS9yY2l2LmpzXCIpLHRoaXMubmQoXCJjZG4udHludC5jb20vaW5mZWVkLmpzXCIpXS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIucmVwbGFjZSgvXlteOl0rOi8sXCJcIil9KTtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuXCJodHRwOlwiK2J9KS5jb25jYXQoYS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuXCJodHRwczpcIitcbmJ9KSl9O2MucHJvdG90eXBlLkpjPWZ1bmN0aW9uKCl7cmV0dXJuKEFycmF5LmlzQXJyYXkoT2EpJiZPYS5sZW5ndGgmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYS5nZXRDb25maWc/T2E6dGhpcy52LlR5bnQpfHxbXX07Yy5wcm90b3R5cGUuR2M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IYygpLnByb2R1Y3R9O2MucHJvdG90eXBlLkdoPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2MucHJvdG90eXBlLnF1PWZ1bmN0aW9uKCl7cmV0dXJuXCJcIn07Yy5wcm90b3R5cGUuUHU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5HYygpPT09ZS5kZWZhdWx0LlJhfTtjLnByb3RvdHlwZS5TSz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuSGMoKSxiPWEucHJvZHVjdDtyZXR1cm4gYS5zaXplP2IrXCI6XCIrYS5zaXplOmJ9O2MucHJvdG90eXBlLkhjPWZ1bmN0aW9uKCl7cmV0dXJue3Byb2R1Y3Q6ZS5kZWZhdWx0LmthLHNpemU6XCJcIn19O2MucHJvdG90eXBlLiQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52fTtjLnByb3RvdHlwZS5iZT1cbmZ1bmN0aW9uKCl7cmV0dXJuIEguWGUodGhpcy52KSE9PXdpbmRvdy50b3B9O2MucHJvdG90eXBlLktuPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2MucHJvdG90eXBlLlpkPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2MucHJvdG90eXBlLnNkPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2MucHJvdG90eXBlLkZuPWZ1bmN0aW9uKCl7dmFyIGE9SC5YZShILiQoKSk7cmV0dXJuIGE9PT1hLnBhcmVudD9hLmRvY3VtZW50LlVSTDphLmRvY3VtZW50LnJlZmVycmVyfTtjLnByb3RvdHlwZS5Waj1mdW5jdGlvbigpe3JldHVybiBudWxsfTtjLnByb3RvdHlwZS5uZz1mdW5jdGlvbigpe3JldHVybiBudWxsfTtjLnByb3RvdHlwZS55bj1mdW5jdGlvbigpe3JldHVybiBudWxsfTtjLnByb3RvdHlwZS5WZT1mdW5jdGlvbigpe3JldHVybiBudWxsfTtjLnByb3RvdHlwZS5Mbj1mdW5jdGlvbigpe3JldHVybnt9fTtjLnByb3RvdHlwZS5saz1mdW5jdGlvbigpe3JldHVybiExfTtyZXR1cm4gY30oeS5kZWZhdWx0KTtcbnQuZGVmYXVsdD1ILnBSPWd9LHsxNDg6MTQ4LDIxODoyMTgsMjUwOjI1MH1dLDEzNDpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgZj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxhKXtjLl9fcHJvdG9fXz1hfXx8ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoY1tiXT1hW2JdKX07cmV0dXJuIGZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTMzKTt2YXIgcD1nKDI1MCksZT1nKDIxOCk7Zz1mdW5jdGlvbihmKXtmdW5jdGlvbiBjKCl7cmV0dXJuIG51bGwhPT1cbmYmJmYuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXYoYyxmKTtjLnByb3RvdHlwZS5lbj1mdW5jdGlvbigpe3ZhciBhPXAuZGVmYXVsdC5QKFwiZW52XCIpO3RoaXMuSmQ9dGhpcy5KYygpLmV8fFwiXCI7XCJzdHJpbmdcIj09PXR5cGVvZiBhJiYodGhpcy5KZD1hP2ErXCItXCI6XCJcIik7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLktuPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5KYygpO3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmdldENvbmZpZz9hLmdldENvbmZpZygpOm51bGx9O2MucHJvdG90eXBlLlpkPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5LbigpO3JldHVybiBhP2EuZG9tYWluOm51bGx9O2MucHJvdG90eXBlLnNkPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuSmMoKSxiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBkPWFbYl07aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkJiYyMj09PWQubGVuZ3RoJiYwPmQuaW5kZXhPZihcIiFcIikpcmV0dXJuIGR9cmV0dXJuIG51bGx9O2MucHJvdG90eXBlLlZqPVxuZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IYygpLmlmcmFtZUlkfTtjLnByb3RvdHlwZS5uZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuVmooKTtyZXR1cm4hYXx8dGhpcy5iZSgpP251bGw6dG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpfHxudWxsfTtjLnByb3RvdHlwZS5HaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLlB1KCk/dGhpcy5IYygpLnNpemU6bnVsbH07Yy5wcm90b3R5cGUuSGM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9DKCk7YS5wcm9kdWN0PXRoaXMubEUoYS5wcm9kdWN0KTtyZXR1cm4gYX07Yy5wcm90b3R5cGUueW49ZnVuY3Rpb24oKXt2YXIgYT1KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChwLmRlZmF1bHQuUChcImN1c3RvbXZhcnNcIikpKXx8dGhpcy5uQygpO3JldHVybiBhP3AuZGVmYXVsdC5qZShwLmRlZmF1bHQuVHYoYSkse3NlcGFyYXRvcjpcIjtcIixlbmNvZGU6ITB9KStcIjtcIjpcIlwifTtjLnByb3RvdHlwZS5mPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxcbmQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKWJbZC0xXT1hcmd1bWVudHNbZF07dmFyIGg7ZD10aGlzLkpjKCk7dGhpcy4kaShcImVtaXRcIik/KGg9ZC5hZHMpLmVtaXQuYXBwbHkoaCxbYV0uY29uY2F0KGIpKTpwLmRlZmF1bHQubG9nKFwiV2FybmluZzogVHludCBDbGllbnQgZW1pdCgpIG1ldGhvZCBkb2VzIG5vdCBleGlzdC5cIik7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLkxuPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5KYygpLGI9dGhpcy5uZygpO3JldHVybihhPWI/YS5hZHMuZ2V0U2xvdChiLmNvbnRlbnRXaW5kb3cpOm51bGwpJiZhLm9wdGlvbnN8fHt9fTtjLnByb3RvdHlwZS5xdT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuSmMoKTtyZXR1cm4gcC5kZWZhdWx0LnNuKGEuZ2V0VXNwU3RyaW5nLGEpfHxcIlwifTtjLnByb3RvdHlwZS5saz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuVmooKTtyZXR1cm4gYT8wPT09YS5pbmRleE9mKFwieDMzeFwiKTohMX07Yy5wcm90b3R5cGUub0M9ZnVuY3Rpb24oKXt2YXIgYT1cbnRoaXMuSmMoKSxiPXtwcm9kdWN0OmUuZGVmYXVsdC5rYSxzaXplOlwiXCJ9LGQ9bnVsbDt0aGlzLiRpKFwiZ2V0U2xvdFwiKSYmKGQ9YS5hZHMuZ2V0U2xvdCh3aW5kb3cpKTtyZXR1cm4gZHx8Yn07Yy5wcm90b3R5cGUubkM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLkpjKCkuYWRzLGI9e30sZD1udWxsO2lmKCF0aGlzLiRpKFwiZ2V0VGFyZ2V0aW5nXCIpfHwhdGhpcy4kaShcImdldFRhcmdldGluZ0tleXNcIikpcmV0dXJuIG51bGw7ZD1hLmdldFRhcmdldGluZ0tleXMoKTtkLmZvckVhY2goZnVuY3Rpb24oaCl7YltoXT1hLmdldFRhcmdldGluZyhoKX0pO3JldHVybiBwLmRlZmF1bHQuZW8oYik/bnVsbDpifTtjLnByb3RvdHlwZS5sRT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gZS5kZWZhdWx0LlJhO2E9YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcVysvZyxcIlwiKTtyZXR1cm5cImlucGFnZVwiPT09YT9lLmRlZmF1bHQuUmE6YS5tYXRjaCgvXihpbnZpZXd8aW5wYWdlfHNpYWJ8aW5mZWVkKSQvKT9cbmE6ZS5kZWZhdWx0LmthfTtjLnByb3RvdHlwZS4kaT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLkpjKCkuYWRzO3JldHVybiEhYiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGJbYV19O3JldHVybiBjfSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1ILkhTPWd9LHsxMzM6MTMzLDIxODoyMTgsMjUwOjI1MH1dLDEzNTpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoaCl7ZnVuY3Rpb24gaygpe31mdW5jdGlvbiBsKEIpe2sua2MoQikudShcIm1vdXNlbW92ZVwiLGZ1bmN0aW9uKEspe2suY2xpZW50WD1LLmNsaWVudFg7ay5jbGllbnRZPUsuY2xpZW50WX0pfWZ1bmN0aW9uIG0oKXtyZXR1cm4gay5EYSYmXCJJRlJBTUVcIj09PWsuRGEubm9kZU5hbWV9ZnVuY3Rpb24gbigpe2lmKCFrLnVrKXJldHVybiBrLkNjO3ZhciBCPWUuZGVmYXVsdC5FYShrLnVrKS5kb2N1bWVudCxLPUIuYWN0aXZlRWxlbWVudDtyZXR1cm4gSyE9PUIuYm9keSYmbnVsbCE9PUs/SzprLkNjfWZ1bmN0aW9uIHIoKXtkZWxldGUgay5EYS50eW50Qmx1cn1cbmZ1bmN0aW9uIHEoQil7ay5EYS50eW50Qmx1cj0hMDtCKCk7cigpfWZ1bmN0aW9uIHUoQil7Qj1CLnRhcmdldDt2YXIgSz1rLkRhO0IhPT1rLkNjfHwhbSgpfHxrLkRhLnR5bnRCbHVyfHwhQi5kb2N1bWVudC5oYXNGb2N1cygpJiZrLkdqfHwoay5EYS50eW50Qmx1cj0hMCxjLmRlZmF1bHQuZihLLFwiaWZyYW1lY2xpY2tcIix7Y2xpZW50WDprLmNsaWVudFgsY2xpZW50WTprLmNsaWVudFl9KSxjLmRlZmF1bHQub25jZShLLFwibW91c2VvdXRcIixmdW5jdGlvbigpe0suYmx1cigpfSksQi5zZXRUaW1lb3V0KHIsMCkpfWZ1bmN0aW9uIHcoQixLKXtmdW5jdGlvbiBGKCl7cShmdW5jdGlvbigpe3JldHVybiBCLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9KX1pZihCPT09SylGKCk7ZWxzZXt2YXIgTD1LLnNjcm9sbFgsej1LLnNjcm9sbFk7RigpO0suc2Nyb2xsVG8oTCx6KX19ZnVuY3Rpb24geChCKXt2YXIgSz1rLmtjKEIpO0sudShcIm1vdXNlb3ZlclwiLGZ1bmN0aW9uKEYpe2lmKCFGLnRhcmdldHx8XG5GLnRhcmdldCE9PWsuQ2MuZnJhbWVFbGVtZW50KWlmKGsuQ2M9QixrLkRhPUYudGFyZ2V0LGsudWs9Ri5yZWxhdGVkVGFyZ2V0LG0oKSl7Sy5uYShcImJsdXJcIix1KTtpZihGPW0oKSYmay5EYSE9PWsudHYpay50dj1rLkRhO2lmKEZ8fGEuYWwuTnUoay5EYSkpRj1uKCksdyhGLEIpO0sub25jZShcImJsdXJcIix1KX19LCEwKX1mdW5jdGlvbiBDKEIpe2sua2MoQikudShcIm1vdXNlb3V0XCIsZnVuY3Rpb24oSyl7ay5DYz09PUImJihrLkRhPUsucmVsYXRlZFRhcmdldCxrLnVrPUsudGFyZ2V0KX0sITApfWZ1bmN0aW9uIEQoQil7Qi5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKGsuQ2M9PT1CJiZtKCkmJm0oKSYmYS5hbC5OdShrLkRhKSl7dmFyIEs9bigpO2suRGEuYmx1cigpO3EoZnVuY3Rpb24oKXtyZXR1cm4gSy5mb2N1cygpfSl9fSwxRTMpO0I9PT1oJiZjLmRlZmF1bHQucWsoQixmdW5jdGlvbigpe2suR2o9ZS5kZWZhdWx0LkdhLkdqKEIpfSl9ay5hcD1bXTtrLkNjPWg7ay51az1udWxsO1xuay5EYT1udWxsO2sudHY9bnVsbDtrLmNsaWVudFg9MDtrLmNsaWVudFk9MDtrLkdqPSExO2sua2M9ZnVuY3Rpb24oQil7Yi5oYXMoQil8fGIuc2V0KEIsbmV3IGMuZGVmYXVsdChCKSk7cmV0dXJuIGIuZ2V0KEIpfTtrLmo9ZnVuY3Rpb24oKXtrLmFwLmZvckVhY2goZnVuY3Rpb24oQil7ay5rYyhCKS5KKCl9KX07ay5Mdj1mdW5jdGlvbihCLEspe0suTWJ8fGYuZGVmYXVsdC5jYShrLmFwLEIpfHwoQj09PWgmJmwoQikseChCKSxDKEIpLEQoQiksZi5kZWZhdWx0Lm1iKGsuYXAsQikpfTtrLkx2KGgscC5kZWZhdWx0LkhoKCkpO3JldHVybiBrfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMjUxKSxlPWcoMTI3KSxmPWcoMjUwKSxjPWcoMTQ3KSxhPWcoMTQ1KSxiPW5ldyBXZWFrTWFwLGQ9bnVsbDt0LmRlZmF1bHQ9SC5iVD1mdW5jdGlvbihoKXtkfHwoZD12KGgpKTtyZXR1cm4gZH19LHsxMjc6MTI3LDE0NToxNDUsMTQ3OjE0NyxcbjI1MDoyNTAsMjUxOjI1MX1dLDEzNjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILmdSPXtBdzpcImJsdXJcIixQdzpcImZvY3VzXCIsUXc6XCJmb2N1c2luXCIsUnc6XCJmb2N1c291dFwiLGV4OlwicGFnZWhpZGVcIixpeDpcInBhZ2VzaG93XCJ9fSx7fV0sMTM3OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxNDgpO3QuZGVmYXVsdD17cGQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYuZGVmYXVsdH19fSx7MTQ4OjE0OH1dLDEzODpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILlNTPXtXazpcImd1dHRlcmNoYW5nZVwiLHpSOlwiaHVtYW5zY3JvbGx2ZXJ0aWNhbFwiLFRjOlwib3JpZW50YXRpb25jaGFuZ2VcIiwkdzpcIm9yaWVudGF0aW9uY2hhbmdlbGFuZHNjYXBlXCIsXG5heDpcIm9yaWVudGF0aW9uY2hhbmdlcG9ydHJhaXRcIix0YzpcInJlc2l6ZVwiLElnOlwic2Nyb2xsXCIsY3E6XCJzY3JvbGxob3Jpem9udGFsXCIsQ2k6XCJzY3JvbGx2ZXJ0aWNhbFwiLEJkOlwiem9vbVwiLEt4Olwiem9vbWluXCIsTng6XCJ6b29tb3V0XCIsTXg6XCJ6b29taW5waW5jaFwiLEx4Olwiem9vbWluZG91YmxldGFwXCIsUHg6XCJ6b29tb3V0cGluY2hcIixPeDpcInpvb21vdXRkb3VibGV0YXBcIn19LHt9XSwxMzk6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTQyKTtnPXtWdzpnKDE0MSkuZGVmYXVsdCxGeDp5LmRlZmF1bHR9O3QuZGVmYXVsdD1nO0gudFI9Z30sezE0MToxNDEsMTQyOjE0Mn1dLDE0MDpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoYil7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBEYXRlLnBhcnNlKGQuc3RhcnQpPD1iJiZiPD1EYXRlLnBhcnNlKGQuZW5kKX19ZnVuY3Rpb24gcChiLGQsaCl7dmFyIGs9ZC5RYShiLFxuaCk7cmV0dXJuIGIuZmlsdGVyKGZ1bmN0aW9uKGwpe3JldHVybiFhLmRlZmF1bHQuY2EoayxsKX0pfWZ1bmN0aW9uIGUoYixkLGgpe3ZhciBrPWguYks7cmV0dXJuIHAoYixkLGspLm1hcChmdW5jdGlvbihsKXtyZXR1cm5bXCJtaW5fXCIraC5ITitcIl9cIitrLGQub0wobCxrKSxbbF1dfSl9ZnVuY3Rpb24gZihiLGQpe3ZhciBoPXRoaXMuWWYuVU0saz1bXTtoJiYoaz1rLmNvbmNhdChiW2RdPGhbZF0/W1tcIm1pbl9icm93c2VyX1wiK2QsaFtkXV1dOltdKSk7cmV0dXJuIGt9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDE0Mik7dmFyIGM9Zyg1OSksYT1nKDI1MCk7Zz17fTtnW3kuZGVmYXVsdC55cF09ZnVuY3Rpb24oYil7cmV0dXJuIGIuYW8/W1tcImNvbmZpZ3VyZWRcIiwhMV1dOltdfTtnW3kuZGVmYXVsdC5ScF09ZnVuY3Rpb24oYil7cmV0dXJuIGIuam8/W1tcInBhZ2VfYmxvY2tlZFwiLCEwXV06W119O2dbeS5kZWZhdWx0LkNwXT1mdW5jdGlvbihiKXt2YXIgZD1cbmIuTztyZXR1cm4gYi5jbz9bW1wiZGV2aWNlXCIsZF1dOjA9PT10aGlzLlNmLmxlbmd0aD9bW1wiZGV2aWNlXCIsZF1dOltdfTtnW3kuZGVmYXVsdC5lcV09ZnVuY3Rpb24oYil7dmFyIGQ9Yi5HO2I9ZC5KbigpO2Q9YS5kZWZhdWx0LlBjKGQuUygpKTtyZXR1cm4gYiE9PWMuZGVmYXVsdC5Wa3x8YS5kZWZhdWx0LmNhKHRoaXMuU2YsZCk/W106W1tcInNsb3Rfc2l6ZVwiLGRdLFtcInBvc3NpYmxlX2FkX3NpemVzXCIsdGhpcy5TZi5qb2luKFwiLFwiKXx8XCJub25lXCJdXX07Z1t5LmRlZmF1bHQuVVJMXT1mdW5jdGlvbihiKXt2YXIgZD1iLnVybDtyZXR1cm4gdGhpcy5ZZi5pUC5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIGgmJihuZXcgUmVnRXhwKGgpKS50ZXN0KGQpfSkubWFwKGZ1bmN0aW9uKGgpe3JldHVybltcInVybF9wYXR0ZXJuXCIsbmV3IFJlZ0V4cChoKV19KX07Z1t5LmRlZmF1bHQudnBdPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLllmLlNILmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZCYmXG4wPD1iLkVqLmluZGV4T2YoZCl9KS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuW1wiYnJvd3NlclwiLGRdfSl9O2dbeS5kZWZhdWx0LmpxXT1mdW5jdGlvbihiKXtyZXR1cm4gYi5iZSYmIXRoaXMuWWYueEg/W1tcImNyb3NzX2RvbWFpbl9hbGxvd2VkXCIsITFdXTpbXX07Z1t5LmRlZmF1bHQuQnBdPWZ1bmN0aW9uKGIpe2I9RGF0ZS5wYXJzZShiLmxuKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLllmLnd0KSYmYj90aGlzLllmLnd0LmZpbHRlcih2KGIpKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuW1wiZGF0ZV9yYW5nZVwiLFtkLnN0YXJ0LGQuZW5kXS5qb2luKFwiX1wiKV19KTpbXX07Z1t5LmRlZmF1bHQuVklFV1BPUlRdPWZ1bmN0aW9uKGIpe2I9Yi5RYy5ZZSgpO3JldHVybiBmLmNhbGwodGhpcyxiLFwid2lkdGhcIikuY29uY2F0KGYuY2FsbCh0aGlzLGIsXCJoZWlnaHRcIikpfTtnW3kuZGVmYXVsdC56cF09ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmlsLnRJLGQ9W107YiYmKGQ9cCh0aGlzLlNmLGIpKTtcbnJldHVybiAwPGQubGVuZ3RoP1tbXCJtYXhfY29udGVudF9wdXNoXCIsYi5NZi5jZixkXV06W119O2dbeS5kZWZhdWx0LkpwXT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuaWwuRHU7cmV0dXJuIGI/ZSh0aGlzLlNmLGIse2JLOlwid2lkdGhcIixITjpcImluc2VydGlvbl90YXJnZXRcIn0pOltdfTtnW3kuZGVmYXVsdC5PcF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbC5EdT9bXTpbW1wibm9faW5zZXJ0aW9uX3RhcmdldFwiLCEwXV19O3QuZGVmYXVsdD1nfSx7MTQyOjE0MiwyNTA6MjUwLDU5OjU5fV0sMTQxOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihjLGEsYil7Yz1jK1wiPVwiK2E7QXJyYXkuaXNBcnJheShiKSYmKGM9Yi5qb2luKFwiLFwiKStcIjpcIitjKTtyZXR1cm4gY31mdW5jdGlvbiBwKGMpe3JldHVybiBudWxsPT09Yz9bXTpPYmplY3Qua2V5cyhjKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtcbnZhciBlPWcoMTQwKSxmPWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIpe3RoaXMuWWY9YTt0aGlzLmlsPWI7dGhpcy5mcz17fTt0aGlzLlNmPVtdO3RoaXMuV2Y9W119Yy5VVD1mdW5jdGlvbihhLGIpe2UuZGVmYXVsdFthXT1iO3JldHVybiBjfTtjLmVVPWZ1bmN0aW9uKGEpe2RlbGV0ZSBlLmRlZmF1bHRbYV07cmV0dXJuIGN9O2MucHJvdG90eXBlLnNPPWZ1bmN0aW9uKGEpe3RoaXMuU2Y9YS5zbGljZSgpO3RoaXMuV2Y9YS5zbGljZSgpO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS55Tz1mdW5jdGlvbihhKXt0aGlzLldmPWEuc2xpY2UoKX07Yy5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oYSxiKXtiPWJ8fHt9O2I9ZS5kZWZhdWx0W2FdLmNhbGwodGhpcyxiKTswPGIubGVuZ3RoJiZ0aGlzLlZFKGEsYik7cmV0dXJuIGIuc2xpY2UoKX07Yy5wcm90b3R5cGUud0w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5XZi5zbGljZSgpfTtjLnByb3RvdHlwZS5tTD1mdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQua2cocCh0aGlzLmZzKSkuc2xpY2UoKX07XG5jLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1MKCkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiB2LmFwcGx5KHZvaWQgMCxhKX0pLmpvaW4oXCIgXCIpfTtjLnByb3RvdHlwZS5WRT1mdW5jdGlvbihhLGIpe3ZhciBkPXRoaXM7Yi5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBkLnJGLmFwcGx5KGQsaCl9KTt0aGlzLmZzW2FdPWJ9O2MucHJvdG90eXBlLnJGPWZ1bmN0aW9uKGEsYixkKXt2YXIgaD1kfHx0aGlzLldmO3RoaXMuV2Y9dGhpcy5XZi5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIDA+aC5pbmRleE9mKGspfSk7cmV0dXJuIHRoaXN9O3JldHVybiBjfSgpO3QuZGVmYXVsdD1nfSx7MTQwOjE0MCwyNTA6MjUwfV0sMTQyOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PXt5cDpcIkNPTkZJR19NSVNTSU5HXCIsUnA6XCJQQUdFX0ZMQUdcIixlcTpcIklOVkFMSURfU0laRVwiLFxuQ3A6XCJERVZJQ0VcIixVUkw6XCJVUkxfUEFUVEVSTlwiLHZwOlwiQlJPV1NFUlwiLGpxOlwiWERPTUFJTlwiLEJwOlwiREFURV9SQU5HRVwiLFZJRVdQT1JUOlwiVklFV1BPUlRfU0laRVwiLHpwOlwiQ09OVEVOVF9QVVNIXCIsSnA6XCJDT05UQUlORVJfU0laRVwiLE9wOlwiTk9fSU5TRVJUSU9OX1RBUkdFVFwifX0se31dLDE0MzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PXtJeDpcIlVTXCIsVHc6XCJJTlRMXCJ9O2c9e29TOnYsRWk6e3lJOmZ1bmN0aW9uKHApe3JldHVybiFwfHwvVVN8TE9DQUwvaS50ZXN0KHApP3YuSXg6di5Ud319fTt0LmRlZmF1bHQ9ZztILndSPWd9LHt9XSwxNDQ6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoZSxmKXt2b2lkIDA9PT1mJiYoZj17fSk7dGhpcy5xSD1mdW5jdGlvbigpe3RoaXMub3B0aW9ucz1cbmY7dGhpcy5lbGVtZW50PWU7dGhpcy5Tdj0hMTt0aGlzLnN0YXJ0PXt9O3RoaXMuRGs9e307dGhpcy5lbmQ9e307dGhpcy5Fdj17fTt0aGlzLnNrPW51bGw7dGhpcy5Rdj10aGlzLm9wdGlvbnMuc3dpcGVWZWxvY2l0eVRocmVzaG9sZHx8LjM7dGhpcy5rSz10aGlzLm9wdGlvbnMuZG91YmxlVGFwVGhyZXNob2xkfHwzMDA7dGhpcy5wcmV2ZW50RGVmYXVsdD1cInVuZGVmaW5lZFwiPT09dHlwZW9mIHRoaXMub3B0aW9ucy5wcmV2ZW50RGVmYXVsdD8hMTp0aGlzLm9wdGlvbnMucHJldmVudERlZmF1bHQ7dGhpcy5TZD17fTt0aGlzLlV1PTA7dGhpcy5FYz17YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGRldGFpbDp7fX19fXAucHJvdG90eXBlLmZhPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnFIKCk7dGhpcy5lbGVtZW50Ll90eW50X2hhc190b3VjaF9ldmVudF9saXN0ZW5lcnN8fCh0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixmdW5jdGlvbigpe2Zvcih2YXIgZj1cbltdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWZbY109YXJndW1lbnRzW2NdO3JldHVybiBlLlhPLmFwcGx5KGUsZil9LCExKSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLGZ1bmN0aW9uKCl7Zm9yKHZhciBmPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWZbY109YXJndW1lbnRzW2NdO3JldHVybiBlLldPLmFwcGx5KGUsZil9LCExKSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsZnVuY3Rpb24oKXtmb3IodmFyIGY9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspZltjXT1hcmd1bWVudHNbY107cmV0dXJuIGUuVk8uYXBwbHkoZSxmKX0sITEpLHRoaXMuZWxlbWVudC5fdHludF9oYXNfdG91Y2hfZXZlbnRfbGlzdGVuZXJzPSEwKX07cC5wcm90b3R5cGUuWE89ZnVuY3Rpb24oZSl7cC5pZ3x8KHAuUm89ITEsdGhpcy5wcmV2ZW50RGVmYXVsdCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLkVjLmRldGFpbC5zb3VyY2VFbGVtZW50PVxuZS50YXJnZXQsdGhpcy5Tdj0hMCx0aGlzLnN0YXJ0LnRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5zdGFydC50aW1lLXRoaXMuVXU8dGhpcy5rSyYmZS50b3VjaGVzJiYxPT09ZS50b3VjaGVzLmxlbmd0aCYmdGhpcy5tZy5kb3VibGVUYXAuY2FsbCh0aGlzKSxlLnRvdWNoZXMmJigxPGUudG91Y2hlcy5sZW5ndGgmJih0aGlzLkRrLng9ZS50b3VjaGVzWzFdLmNsaWVudFgsdGhpcy5Eay55PWUudG91Y2hlc1sxXS5jbGllbnRZKSx0aGlzLnN0YXJ0Lng9ZS50b3VjaGVzWzBdLmNsaWVudFgsdGhpcy5zdGFydC55PWUudG91Y2hlc1swXS5jbGllbnRZKSx0aGlzLlV1PXRoaXMuc3RhcnQudGltZSl9O3AucHJvdG90eXBlLldPPWZ1bmN0aW9uKGUpe3RoaXMuU3YmJih0aGlzLnByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCksZS50b3VjaGVzJiYodGhpcy5lbmQueD1lLnRvdWNoZXNbMF0uY2xpZW50WCx0aGlzLmVuZC55PWUudG91Y2hlc1swXS5jbGllbnRZLDE8ZS50b3VjaGVzLmxlbmd0aCYmXG50aGlzLmVJKGUpKSl9O3AucHJvdG90eXBlLlZPPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lbmQueHx8dGhpcy5lbmQueTt0aGlzLlNkLnRpbWU9KG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy5zdGFydC50aW1lO3RoaXMuU2QueD10aGlzLmVuZC54LXRoaXMuc3RhcnQueDt0aGlzLlNkLnk9dGhpcy5lbmQueS10aGlzLnN0YXJ0Lnk7dmFyIGY9TWF0aC5hYnModGhpcy5TZC54L3RoaXMuU2QudGltZSl8fDAsYz1NYXRoLmFicyh0aGlzLlNkLnkvdGhpcy5TZC50aW1lKXx8MDt0aGlzLlB0PXRoaXMuZkwoKTsoZj50aGlzLlF2fHxjPnRoaXMuUXYmJmUpJiZ0aGlzLm1nLnN3aXBlLmNhbGwodGhpcyk7dGhpcy5zayYmcC5pZyYmdGhpcy5tZy5waW5jaC5jYWxsKHRoaXMscC5pZyk7IXAuUm8mJiFlJiYyNTA+dGhpcy5TZC50aW1lJiYhcC5pZyYmKHRoaXMubWcudGFwLmNhbGwodGhpcykscC5Sbz0hMCk7dGhpcy5lbmQueD1udWxsO3RoaXMuc2s9dGhpcy5lbmQueT1udWxsO3AuaWc9ITF9O3AucHJvdG90eXBlLmVJPVxuZnVuY3Rpb24oZSl7dGhpcy5Fdi54PWUudG91Y2hlc1sxXS5jbGllbnRYO3RoaXMuRXYueT1lLnRvdWNoZXNbMV0uY2xpZW50WTt2YXIgZj10aGlzLnN0YXJ0LngtdGhpcy5Eay54LGM9dGhpcy5zdGFydC55LXRoaXMuRGsueSxhPWUudG91Y2hlc1swXS5jbGllbnRYLWUudG91Y2hlc1sxXS5jbGllbnRYO2U9ZS50b3VjaGVzWzBdLmNsaWVudFktZS50b3VjaGVzWzFdLmNsaWVudFk7dGhpcy5zaz0xPk1hdGguc3FydChhKmErZSplKS9NYXRoLnNxcnQoZipmK2MqYyk/XCJpblwiOlwib3V0XCI7dGhpcy5tZy5waW5jaC5jYWxsKHRoaXMpfTtwLnByb3RvdHlwZS5mTD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0aGlzLnN0YXJ0LngtdGhpcy5lbmQueCk+PU1hdGguYWJzKHRoaXMuc3RhcnQueS10aGlzLmVuZC55KT8wPHRoaXMuc3RhcnQueC10aGlzLmVuZC54P1wibGVmdFwiOlwicmlnaHRcIjowPHRoaXMuc3RhcnQueS10aGlzLmVuZC55P1widXBcIjpcImRvd25cIn07cC5wcm90b3R5cGUuY3JlYXRlRXZlbnQ9XG5mdW5jdGlvbihlKXtlPW5ldyBDdXN0b21FdmVudChlLHRoaXMuRWMpO3AuaWc9ITA7dGhpcy5lbGVtZW50LmRpc3BhdGNoRXZlbnQoZSl9O3AucHJvdG90eXBlLmZJPWZ1bmN0aW9uKCl7cmV0dXJuIDIwPj1NYXRoLmFicygodGhpcy5lbmQueS10aGlzLnN0YXJ0LnkpLyh0aGlzLmVuZC54LXRoaXMuc3RhcnQueCkqKHRoaXMuZW5kLngtdGhpcy5zdGFydC54KSl9O3JldHVybiBwfSgpO3YucHJvdG90eXBlLm1nPXtzd2lwZWxlZnQ6ITAsc3dpcGVyaWdodDohMCxzd2lwZXVwOiEwLHN3aXBlZG93bjohMCxwaW5jaGluOiEwLHBpbmNob3V0OiEwLGVuZHBpbmNoaW46ITAsZW5kcGluY2hvdXQ6ITAsc3dpcGU6ZnVuY3Rpb24oKXt0aGlzLkVjLmRldGFpbC5uZj10aGlzLnN0YXJ0Lng7dGhpcy5FYy5kZXRhaWwuRWc9dGhpcy5zdGFydC55O3RoaXMuRWMuZGV0YWlsLmdpPXRoaXMuZW5kLng7dGhpcy5FYy5kZXRhaWwuTms9dGhpcy5lbmQueTt0aGlzLkVjLmRldGFpbC5kaXJlY3Rpb249dGhpcy5QdDtcbnRoaXMuRWMuZGV0YWlsLkZNPXRoaXMuZkkoKTt0aGlzLmNyZWF0ZUV2ZW50KFwic3dpcGVcIik7dGhpcy5jcmVhdGVFdmVudChcInN3aXBlXCIrdGhpcy5QdCl9LHBpbmNoOmZ1bmN0aW9uKHApe3RoaXMuY3JlYXRlRXZlbnQoKHA/XCJlbmRwaW5jaFwiOlwicGluY2hcIikrdGhpcy5zayl9LHRhcDpmdW5jdGlvbigpe3RoaXMuRWMuZGV0YWlsLm5mPXRoaXMuc3RhcnQueDt0aGlzLkVjLmRldGFpbC5FZz10aGlzLnN0YXJ0Lnk7dGhpcy5jcmVhdGVFdmVudChcInRhcFwiKX0sZG91YmxlVGFwOmZ1bmN0aW9uKCl7dGhpcy5jcmVhdGVFdmVudChcImRvdWJsZXRhcFwiKX19O3YuaWc9ITE7di5Sbz0hMTt2LmNyZWF0ZT1mdW5jdGlvbihwLGUpe3JldHVybiBuZXcgdihwLGUpfTt2LkdNPWZ1bmN0aW9uKHApe3JldHVybiEhdi5wcm90b3R5cGUubWdbcF19O3QuZGVmYXVsdD12fSx7fV0sMTQ1OltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihuKXtyZXR1cm4obnx8XCJcIikucmVwbGFjZSgvXmh0dHA6XFwvXFwvLyxcblwiXCIpLnJlcGxhY2UoL153d3dcXC4vLFwiXCIpLnJlcGxhY2UoLyMuKiQvLFwiXCIpLnJlcGxhY2UoL1xcLyQvLFwiXCIpfWZ1bmN0aW9uIHAobil7cmV0dXJuIDA8XCJhZHZlcnRpc2luZyBhbmFseXRpY3MgeWFob28gY2xpY2sgZG91YmxlY2xpY2sgcHViYWRzIGNvdW50ZXIgYW5hbHl0aWNzIHlpZWxkbWFuYWdlciBhdGRtdCBnb29nbGVzeW5kaWNhdGlvbiBtZWVibyAybWRuIDJvNyBxdWFudHNlcnZlIG9tbml0dXJlIG92ZXJ0dXJlIGFkbW9iIG1ldHJpYyBlc3RhdCBzdGF0aXN0aWNzIHlpbWcgZ29vZ2xlYWRzIGFkcmV2b2x2ZXIgZmVlZGJ1cm5lciBzY29yZWNhcmRyZXNlYXJjaCB0cmFmZmljIGltcndvcmxkd2lkZSBzcG9uc29yZWQgYWRibGFkZSBhZGJveFwiLnNwbGl0KFwiIFwiKS5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIDA8PW4uaW5kZXhPZihyKX0pLmxlbmd0aHx8ISFuLm1hdGNoKC9cXGJhZHM/XFxiLyl9dmFyIGU9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBuPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8XG57X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIscSl7ci5fX3Byb3RvX189cX18fGZ1bmN0aW9uKHIscSl7Zm9yKHZhciB1IGluIHEpcS5oYXNPd25Qcm9wZXJ0eSh1KSYmKHJbdV09cVt1XSl9O3JldHVybiBmdW5jdGlvbihyLHEpe2Z1bmN0aW9uIHUoKXt0aGlzLmNvbnN0cnVjdG9yPXJ9bihyLHEpO3IucHJvdG90eXBlPW51bGw9PT1xP09iamVjdC5jcmVhdGUocSk6KHUucHJvdG90eXBlPXEucHJvdG90eXBlLG5ldyB1KX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGY9ZygxMjcpLGM9ZygyNTApLGE9ZygxNDgpLGI9ZygxNDcpO2coMTU1KTt2YXIgZD1cImNsaWNrIGlmcmFtZWNsaWNrIHRhcCBzd2lwZSBzd2lwZWxlZnQgc3dpcGVyaWdodCBzd2lwZXVwIHN3aXBlZG93blwiLnNwbGl0KFwiIFwiKSxoPWQuY29uY2F0KFtcImhvdmVyXCJdKTtnPXt5UjpkLFd3Omh9O3QuWWs9Zzt2YXIgaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4ocixcbnEpe3ZhciB1PXRoaXM7dGhpcy5IYT1yO2E6e2lmKHEpe2lmKFwicGFnZVhcImluIHEpe3E9e3g6cS5wYWdlWCx5OnEucGFnZVl9O2JyZWFrIGF9aWYoXCJkZXRhaWxcImluIHEpe3E9e3g6cS5kZXRhaWwubmYseTpxLmRldGFpbC5FZ307YnJlYWsgYX19cT17eDowLHk6MH19dGhpcy5HcT1xO3RoaXMua0U9Zi5kZWZhdWx0LkRoKHIpO3RoaXMud0c9ci5nZXRBdHRyaWJ1dGUoXCJzcmNcIil8fFwiXCI7dGhpcy5haj0odGhpcy5wcj1mLmRlZmF1bHQuWEsocil8fG51bGwpP3YodGhpcy5wci5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpKTpcIlwiO3RoaXMuUHI9Zi5kZWZhdWx0LkJoKHIpO3RoaXMuT2w9dGhpcy5haj9cIkxJTktcIjpcIkJPRFlcIjsodGhpcy5hanx8XCJpZnJhbWVcIj09PXRoaXMua0UpJiZbdGhpcy53Ryx0aGlzLmFqLHRoaXMuUHJdLmZvckVhY2goZnVuY3Rpb24odyl7dyYmcCh3KSYmKHUuT2w9XCJBRFwiKX0pfW4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuT2wsTWF0aC5yb3VuZCh0aGlzLkdxLngpLFxuTWF0aC5yb3VuZCh0aGlzLkdxLnkpLHRoaXMuUHIsdGhpcy5hal0uam9pbihcIjpcIil9O3JldHVybiBufSgpLGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24gcihxLHUpe3ZhciB3PW4uY2FsbCh0aGlzLHEsdSl8fHRoaXM7dy5lbGVtZW50PXE7dy5oVD11O3cubmFtZT13LkIoKTtyZXR1cm4gd31lKHIsbik7ci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfHxrLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfTtyLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIHIuQih0aGlzLmVsZW1lbnQpfTtyLkI9ZnVuY3Rpb24ocSl7dmFyIHU9W10sdz1mLmRlZmF1bHQuQWgocSxudWxsLHtaTzohMH0pO3cucmV2ZXJzZSgpLnB1c2gocSk7Zm9yKHE9MDtxPHcubGVuZ3RoOysrcSl7aWYoXCJleGNsdWRlXCI9PT13W3FdLmdldEF0dHJpYnV0ZShcImhzLWV4Y2x1ZGVcIikpcmV0dXJuIG51bGw7dmFyIHg9d1txXS5nZXRBdHRyaWJ1dGUoXCJocy1uYW1lXCIpO3gmJnUucHVzaCh4KX1yZXR1cm4gdS5qb2luKFwiID4gXCIpfHxcbm51bGx9O3IuSm89ZnVuY3Rpb24ocSx1KXtxLnNldEF0dHJpYnV0ZShcImhzLW5hbWVcIix1KX07ci5OdT1mdW5jdGlvbihxKXtyZXR1cm4hIXIuQihxKX07cmV0dXJuIHJ9KGspO3QuYWw9bDt5PWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHIocSx1KXt2YXIgdz1xLnJvb3QseD1xLnZpZXdwb3J0O3E9cS5MdDt2b2lkIDA9PT11JiYodT17fSk7dmFyIEM9bi5jYWxsKHRoaXMpfHx0aGlzO0Mucm9vdD13O0Mub3B0aW9ucz11O0MucGs9bmV3IGIuZGVmYXVsdCh3KTtDLnZpZXdwb3J0PXg7Qy53ZT1xO0MuJGEoci5IKCkpO3EuTHYoZi5kZWZhdWx0LkVhKHcpLHgpO0MubHkoKTtyZXR1cm4gQ31lKHIsbik7ci5wcm90b3R5cGUuSj1mdW5jdGlvbigpe3RoaXMucGsuSigpO2EuZGVmYXVsdC5wcm90b3R5cGUuSi5jYWxsKHRoaXMpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5Cbj1mdW5jdGlvbihxLHUpe3JldHVybiBuZXcgayhxLHUpfTtyLkg9ZnVuY3Rpb24oKXtyZXR1cm4gZH07ci5wcm90b3R5cGUuRmw9XG5mdW5jdGlvbihxKXtyZXR1cm4gcS5kZXRhaWwmJnEuZGV0YWlsLnNvdXJjZUVsZW1lbnQ/cS5kZXRhaWwuc291cmNlRWxlbWVudDpxLnRhcmdldH07ci5wcm90b3R5cGUubHk9ZnVuY3Rpb24oKXsodGhpcy52aWV3cG9ydC5NYj9cInRhcCBzd2lwZSBzd2lwZWxlZnQgc3dpcGVyaWdodCBzd2lwZXVwIHN3aXBlZG93blwiLnNwbGl0KFwiIFwiKTpbXCJjbGlja1wiLFwiaWZyYW1lY2xpY2tcIl0pLmZvckVhY2godGhpcy5jRix0aGlzKX07ci5wcm90b3R5cGUuY0Y9ZnVuY3Rpb24ocSx1KXt2YXIgdz10aGlzLHg9dGhpcy5vcHRpb25zLm5JO3U9XCJzdHJpbmdcIj09PXR5cGVvZiB1JiZ1P3U6cTt0aGlzLnBrLnUocSxmdW5jdGlvbihDKXtpZigheHx8eChDKSl3Lm9wdGlvbnMuc3RvcFByb3BhZ2F0aW9uJiZDLnN0b3BQcm9wYWdhdGlvbigpLHcuZih1LEMsdy5Cbih3LkZsKEMpLEMpKX0sITEse3ByZXZlbnREZWZhdWx0OnRoaXMub3B0aW9ucy5zdG9wUHJvcGFnYXRpb259KX07cmV0dXJuIHJ9KGEuZGVmYXVsdCk7XG50LlprPXk7dmFyIG09ZnVuY3Rpb24obil7ZnVuY3Rpb24gcihxLHUpe3ZhciB3PW4uY2FsbCh0aGlzLHEsdSl8fHRoaXM7dT1jLmRlZmF1bHQuZXh0ZW5kKHtzdG9wUHJvcGFnYXRpb246ITAsbkk6ZnVuY3Rpb24oeCl7cmV0dXJuISFsLkIodGhpcy5GbCh4KSl9fSx1KTt3LnZpZXdwb3J0Lk1ifHwody5way51KFwibW91c2VvdmVyXCIsZnVuY3Rpb24oeCl7dy5oRCgpJiYoeC5zdG9wUHJvcGFnYXRpb24oKSx3LmYoXCJob3ZlclwiLHgsdy5Cbih3LkZsKHgpLHgpKSl9KSx3LnBrLnUoXCJtb3VzZW91dFwiLGZ1bmN0aW9uKCl7dy5yRCgpfSkpO3cuUGk9bnVsbDtyZXR1cm4gd31lKHIsbik7ci5wcm90b3R5cGUuSm89ZnVuY3Rpb24ocSl7bC5Kbyh0aGlzLnJvb3QscSl9O3IucHJvdG90eXBlLkJuPWZ1bmN0aW9uKHEsdSl7cmV0dXJuIG5ldyBsKHEsdSl9O3IuSD1mdW5jdGlvbigpe3JldHVybiBofTtyLnByb3RvdHlwZS5oRD1mdW5jdGlvbigpe2lmKCF0aGlzLndlLkRhKXJldHVybiExO3ZhciBxPVxubC5CKHRoaXMud2UuRGEpO2lmKHE9PT10aGlzLlBpKXJldHVybiExO3RoaXMuUGk9cTtyZXR1cm4hMH07ci5wcm90b3R5cGUuckQ9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLndlLkRhP2wuQih0aGlzLndlLkRhKTpudWxsO3RoaXMuUGk9PT1xfHxxfHwodGhpcy5QaT1udWxsKX07cmV0dXJuIHJ9KHkpO3QuUHA9bTtILlprPXtCUjprLFprOnksYWw6bCxQcDptLFlrOmd9O0guWWs9Z30sezEyNzoxMjcsMTQ3OjE0NywxNDg6MTQ4LDE1NToxNTUsMjUwOjI1MH1dLDE0NjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTM1KSxwPWcoMTQ1KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmKXt0aGlzLndlPXYuZGVmYXVsdChmLiQoKSk7dGhpcy5VYT1mfWUucHJvdG90eXBlLm1KPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwLlprKHtyb290OnRoaXMuVWEuVmEuZG9jdW1lbnQuYm9keSx2aWV3cG9ydDp0aGlzLlVhLFxuTHQ6dGhpcy53ZX0sdm9pZCAwKX07ZS5wcm90b3R5cGUud0o9ZnVuY3Rpb24oZixjKXtyZXR1cm4gbmV3IHAuUHAoe3Jvb3Q6Zix2aWV3cG9ydDp0aGlzLlVhLEx0OnRoaXMud2V9LGMpfTtyZXR1cm4gZX0oKTtILkNSPWc7dC5kZWZhdWx0PWd9LHsxMzU6MTM1LDE0NToxNDV9XSwxNDc6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI0OSkscD1nKDE0NCksZT1nKDI1MCk7eT1nKDE0OCk7ZygxNTUpO2c9ZnVuY3Rpb24oZil7ZnVuY3Rpb24gYyhsKXtmLmNhbGwobCk7dGhpcy5lbGVtZW50PWx9ZnVuY3Rpb24gYShsKXtsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKTtyZXR1cm4vXFxbb2JqZWN0IFxcUytFdmVudFxcXS8udGVzdChsKX12YXIgYj1uZXcgV2Vha01hcCxkPW5ldyBXZWFrTWFwLGg9e2luaXRFdmVudDpbXCJ0eXBlXCIsXCJidWJibGVzXCIsXCJjYW5jZWxhYmxlXCJdLGluaXRVSUV2ZW50OltcInR5cGVcIixcblwiYnViYmxlc1wiLFwiY2FuY2VsYWJsZVwiLFwidmlld1wiLFwiZGV0YWlsXCJdLGluaXRNb3VzZUV2ZW50OlwidHlwZSBidWJibGVzIGNhbmNlbGFibGUgdmlldyBkZXRhaWwgc2NyZWVuWCBzY3JlZW5ZIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGFsdEtleSBzaGlmdEtleSBtZXRhS2V5IGJ1dHRvbiByZWxhdGVkVGFyZ2V0XCIuc3BsaXQoXCIgXCIpfSxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChyKXttW3JdLmZvckVhY2goZnVuY3Rpb24ocSl7bVtxXT1yfSl9dmFyIG09e01vdXNlRXZlbnQ6XCJjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW92ZXIgbW91c2Vtb3ZlIG1vdXNlb3V0XCIuc3BsaXQoXCIgXCIpLEtleUJvYXJkRXZlbnQ6W1wia2V5ZG93blwiLFwia2V5dXBcIixcImtleXByZXNzXCJdLEhUTUxFdmVudDpcImxvYWQgdW5sb2FkIGFib3J0IGVycm9yIHNlbGVjdCBjaGFuZ2Ugc3VibWl0IHJlc2V0IGZvY3VzIGJsdXIgcmVzaXplIHNjcm9sbFwiLnNwbGl0KFwiIFwiKSxVSUV2ZW50OltcIkRPTUZvY3VzSW5cIixcblwiRE9NRm9jdXNPdXRcIixcIkRPTUFjdGl2YXRlXCJdfSxuO2ZvcihuIGluIG0pbChuKTtyZXR1cm4gbX0oKTtlLmRlZmF1bHQuZE0oYyxmKTtjLnByb3RvdHlwZS51PWZ1bmN0aW9uKGwsbSxuLHIpe2lmKCF0aGlzLmVsZW1lbnQpcmV0dXJuIHRoaXM7bj1ufHwhMTtmLnByb3RvdHlwZS51LmNhbGwodGhpcyxsLG0pO3RoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGwsbSxuKTtwLmRlZmF1bHQuR00obCkmJnAuZGVmYXVsdC5jcmVhdGUodGhpcy5lbGVtZW50LHIpLmZhKCk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24obCxtLG4pe2Z1bmN0aW9uIHIoKXttLmFwcGx5KHEsYXJndW1lbnRzKTtxLm5hKGwscixuKX12YXIgcT10aGlzO2Quc2V0KG0scik7cmV0dXJuIHRoaXMudShsLHIsbil9O2MucHJvdG90eXBlLm5hPWZ1bmN0aW9uKGwsbSxuKXtuPW58fCExO2lmKGQuaGFzKG0pKXt2YXIgcj1kLmdldChtKTt0aGlzLmVsZW1lbnQmJnRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGwsXG5yLG4pO2YucHJvdG90eXBlLm5hLmNhbGwodGhpcyxsLHIpfXRoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobCxtLG4pO2YucHJvdG90eXBlLm5hLmNhbGwodGhpcyxsLG0pO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5KPWZ1bmN0aW9uKGwpe3ZhciBtPW51bGw7aWYobCl0aGlzLk9hKGwsdGhpcy5PdCh0aGlzLmRrKGwpKSk7ZWxzZSBpZih0aGlzLnphKWZvcihtIGluIHRoaXMuemEpdGhpcy5PYShtLHRoaXMuT3QodGhpcy5kayhtKSkpO2YucHJvdG90eXBlLkouY2FsbCh0aGlzLGwpO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5mPWZ1bmN0aW9uKGwsbSl7dmFyIG4scj17fSxxPVtdO2lmKCF0aGlzLmVsZW1lbnQpcmV0dXJuIHRoaXM7XCJvYmplY3RcIj09PXR5cGVvZiBsJiYobT1sLGw9bC50eXBlKTtpZighYShtKSl7dmFyIHU9a1tsXXx8XCJFdmVudFwiO3ZhciB3PW18fHt9O3c9ZS5kZWZhdWx0LmV4dGVuZCh7dHlwZTpsLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0sXG53KTttPXNhLmNyZWF0ZUV2ZW50KHUrXCJzXCIpO2w9XCJmdW5jdGlvblwiPT09dHlwZW9mIG1bXCJpbml0XCIrdV0/XCJpbml0XCIrdTpcImluaXRFdmVudFwiO2hbbF0uZm9yRWFjaChmdW5jdGlvbih4KXtxLnB1c2god1t4XSk7clt4XT0hMH0pO21bbF0uYXBwbHkobSxxKTtmb3IobiBpbiB3KXJbbl18fChtW25dPXdbbl0pfXRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG0pO3JldHVybiB0aGlzfTtjLnU9ZnVuY3Rpb24obCxtLG4scixxKXtyZXR1cm4gbD90aGlzLmtjKGwpLnUobSxuLHIscSk6dGhpc307Yy5uYT1mdW5jdGlvbihsLG0sbixyKXtyZXR1cm4gbD90aGlzLmtjKGwpLm5hKG0sbixyKTp0aGlzfTtjLm9uY2U9ZnVuY3Rpb24obCxtLG4scil7cmV0dXJuIGw/dGhpcy5rYyhsKS5vbmNlKG0sbixyKTp0aGlzfTtjLmY9ZnVuY3Rpb24obCxtLG4pe3JldHVybiBsP3RoaXMua2MobCkuZihtLG4pOnRoaXN9O2MubXY9ZnVuY3Rpb24obCxtKXt2LmRlZmF1bHQuZmkoe0xqOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZG9jdW1lbnQuYm9keX0sXG5jZzptfSl9O2MucWs9ZnVuY3Rpb24obCxtKXt2YXIgbj10aGlzLHI9bnVsbCxxPW51bGw7bnVsbCE9PWwmJmw9PT1sLndpbmRvdyYmbC5kb2N1bWVudCYmKHI9bC5kb2N1bWVudCxcImNvbXBsZXRlXCI9PT1yLnJlYWR5U3RhdGV8fFwibG9hZGVkXCI9PT1yLnJlYWR5U3RhdGV8fGwualF1ZXJ5JiZsLmpRdWVyeS5pc1JlYWR5P20oKToocT1mdW5jdGlvbigpe24ubmEocixcIkRPTUNvbnRlbnRMb2FkZWRcIixxKTtuLm5hKGwsXCJsb2FkXCIscSk7bSgpfSxuLnUocixcIkRPTUNvbnRlbnRMb2FkZWRcIixxKSxuLnUobCxcImxvYWRcIixxKSkpfTtjLmtjPWZ1bmN0aW9uKGwpe2IuaGFzKGwpfHxiLnNldChsLG5ldyBjKGwpKTtyZXR1cm4gYi5nZXQobCl9O3JldHVybiBjfSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1nO0guaFI9Z30sezE0NDoxNDQsMTQ4OjE0OCwxNTU6MTU1LDI0OToyNDksMjUwOjI1MH1dLDE0ODpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLFxue3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYoKXt0aGlzLmVkPTB9dmFyIHA9W107di5kdW1wPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2cocCl9O3YucHJvdG90eXBlLmRrPWZ1bmN0aW9uKGUpe3ZhciBmPXRoaXMuVnEoKTtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXt2YXIgYz17fTtmb3IodmFyIGEgaW4gZilmLmhhc093blByb3BlcnR5KGEpJiZlLnRlc3QoYSkmJihjW2FdPWZbYV0pfWVsc2UgYz1mW2VdfHwoZltlXT1bXSk7cmV0dXJuIGN9O3YucHJvdG90eXBlLk90PWZ1bmN0aW9uKGUpe3ZhciBmPVtdO2UuZm9yRWFjaChmdW5jdGlvbihjKXtmLnB1c2goYy5saXN0ZW5lcil9KTtyZXR1cm4gZn07di5wcm90b3R5cGUuQ249ZnVuY3Rpb24oZSl7dmFyIGY9dGhpcy5kayhlKTtpZihmIGluc3RhbmNlb2YgQXJyYXkpe3ZhciBjPXt9O2NbZV09Zn1yZXR1cm4gY3x8Zn07di5wcm90b3R5cGUudT1mdW5jdGlvbihlLGYpe2U9dGhpcy5DbihlKTt2YXIgYz1cIm9iamVjdFwiPT09XG50eXBlb2YgZixhO2ZvcihhIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShhKSYmLTE9PT10aGlzLmVyKGVbYV0sZikmJihlW2FdLnB1c2goYz9mOntsaXN0ZW5lcjpmLG9uY2U6ITF9KSwrK3RoaXMuZWQpO3RoaXMudHkoKTtyZXR1cm4gdGhpc307di5wcm90b3R5cGUub25jZT1mdW5jdGlvbihlLGYpe3JldHVybiB0aGlzLnUoZSx7bGlzdGVuZXI6ZixvbmNlOiEwfSl9O3YucHJvdG90eXBlLlVKPWZ1bmN0aW9uKGUpe3RoaXMuZGsoZSk7cmV0dXJuIHRoaXN9O3YucHJvdG90eXBlLiRhPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaCh0aGlzLlVKLHRoaXMpfTt2LnByb3RvdHlwZS5uYT1mdW5jdGlvbihlLGYpe2U9dGhpcy5DbihlKTt2YXIgYztmb3IoYyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoYykpe3ZhciBhPXRoaXMuZXIoZVtjXSxmKTstMSE9PWEmJihlW2NdLnNwbGljZShhLDEpLC0tdGhpcy5lZCl9dGhpcy5XcigpO3JldHVybiB0aGlzfTt2LnByb3RvdHlwZS5mYT1mdW5jdGlvbihlLGYpe3JldHVybiB0aGlzLlp1KCExLFxuZSxmKX07di5wcm90b3R5cGUuT2E9ZnVuY3Rpb24oZSxmKXtyZXR1cm4gdGhpcy5adSghMCxlLGYpfTt2LnByb3RvdHlwZS5adT1mdW5jdGlvbihlLGYsYyl7dmFyIGEsYj1lP3RoaXMubmE6dGhpcy51O2U9ZT90aGlzLk9hOnRoaXMuZmE7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBmfHxmIGluc3RhbmNlb2YgUmVnRXhwKWZvcihhPWMubGVuZ3RoO2EtLTspYi5jYWxsKHRoaXMsZixjW2FdKTtlbHNlIGZvcih2YXIgZCBpbiBmKWYuaGFzT3duUHJvcGVydHkoZCkmJihhPWZbZF0pJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/Yi5jYWxsKHRoaXMsZCxhKTplLmNhbGwodGhpcyxkLGEpKTtyZXR1cm4gdGhpc307di5wcm90b3R5cGUuSj1mdW5jdGlvbihlKXt2YXIgZj10eXBlb2YgZSxjPXRoaXMuVnEoKTtpZihcInN0cmluZ1wiPT09Zil0aGlzLmVkLT0oY1tlXXx8W10pLmxlbmd0aCxkZWxldGUgY1tlXTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBSZWdFeHApZm9yKHZhciBhIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShhKSYmXG5lLnRlc3QoYSkmJih0aGlzLmVkLT1jW2FdLmxlbmd0aCxkZWxldGUgY1thXSk7ZWxzZSB0aGlzLmVkPTAsZGVsZXRlIHRoaXMuemE7dGhpcy5XcigpO3JldHVybiB0aGlzfTt2LnByb3RvdHlwZS5mPWZ1bmN0aW9uKGUpe3ZhciBmPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxjPXRoaXMuQ24oZSksYSxiO2ZvcihiIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShiKSl7dmFyIGQ9Y1tiXS5zbGljZSgwKTtmb3IoYT1kLmxlbmd0aDthLS07KXt2YXIgaD1kW2FdOyEwPT09aC5vbmNlJiZ0aGlzLm5hKGUsaC5saXN0ZW5lcik7aC5saXN0ZW5lci5hcHBseSh0aGlzLGZ8fFtdKX19cmV0dXJuIHRoaXN9O3YucHJvdG90eXBlLk5hPWZ1bmN0aW9uKGUsZil7dGhpcy51KGUsZnVuY3Rpb24oKXtmLmYuYXBwbHkoZixbZV0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpKX0pO3JldHVybiB0aGlzfTt2LnByb3RvdHlwZS5lcj1mdW5jdGlvbihlLFxuZil7Zm9yKHZhciBjPWUubGVuZ3RoO2MtLTspaWYoZVtjXS5saXN0ZW5lcj09PWYpcmV0dXJuIGM7cmV0dXJuLTF9O3YucHJvdG90eXBlLlZxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuemF8fCh0aGlzLnphPXt9KX07di5wcm90b3R5cGUudHk9ZnVuY3Rpb24oKXt2YXIgZT1wLmluZGV4T2YodGhpcyk7MDx0aGlzLmVkJiYwPmUmJnAucHVzaCh0aGlzKX07di5wcm90b3R5cGUuV3I9ZnVuY3Rpb24oKXt2YXIgZT1wLmluZGV4T2YodGhpcyk7MD09PXRoaXMuZWQmJjA8PWUmJnAuc3BsaWNlKGUsMSl9O3JldHVybiB2fSgpO3QuZGVmYXVsdD1nO0guc1I9Z30se31dLDE0OTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTQ3KTtnPXtwZDpmdW5jdGlvbihwKXtyZXR1cm4gbmV3IHYuZGVmYXVsdChwKX19O3QuZGVmYXVsdD1nO0guaVI9Z30sezE0NzoxNDd9XSwxNTA6W2Z1bmN0aW9uKGcseSx0KXsoZnVuY3Rpb24odixcbnApe1wib2JqZWN0XCI9PT10eXBlb2YgdCYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiB5P3kuamc9cCgpOlwiZnVuY3Rpb25cIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5aUz9kZWZpbmUocCk6di5tUj1wKCl9KSh0aGlzLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdihOLFApe3lhW01dPU47eWFbTSsxXT1QO00rPTI7Mj09PU0mJihTP1MoYik6YmEoKSl9ZnVuY3Rpb24gcCgpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBwcm9jZXNzLlBUKGIpfX1mdW5jdGlvbiBlKCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBPP2Z1bmN0aW9uKCl7TyhiKX06YSgpfWZ1bmN0aW9uIGYoKXt2YXIgTj0wLFA9bmV3IHZhKGIpLFU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7UC5vYnNlcnZlKFUse2NoYXJhY3RlckRhdGE6ITB9KTtyZXR1cm4gZnVuY3Rpb24oKXtVLmRhdGE9Tj0rK04lMn19ZnVuY3Rpb24gYygpe3ZhciBOPW5ldyBNZXNzYWdlQ2hhbm5lbDtOLnBvcnQxLm9ubWVzc2FnZT1iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBOLnBvcnQyLnBvc3RNZXNzYWdlKDApfX1cbmZ1bmN0aW9uIGEoKXt2YXIgTj1zZXRUaW1lb3V0O3JldHVybiBmdW5jdGlvbigpe3JldHVybiBOKGIsMSl9fWZ1bmN0aW9uIGIoKXtmb3IodmFyIE49MDtOPE07Tis9MikoMCx5YVtOXSkoeWFbTisxXSkseWFbTl09dm9pZCAwLHlhW04rMV09dm9pZCAwO009MH1mdW5jdGlvbiBkKCl7dHJ5e3ZhciBOPWcoXCJ2ZXJ0eFwiKTtPPU4uWFR8fE4uV1Q7cmV0dXJuIGUoKX1jYXRjaChQKXtyZXR1cm4gYSgpfX1mdW5jdGlvbiBoKE4sUCl7dmFyIFU9YXJndW1lbnRzLFo9dGhpcyxpYT1uZXcgdGhpcy5jb25zdHJ1Y3RvcihsKTt2b2lkIDA9PT1pYVtyYV0mJkEoaWEpO3ZhciBuYT1aLmxiO25hP2Z1bmN0aW9uKCl7dmFyIENhPVVbbmEtMV07dihmdW5jdGlvbigpe3JldHVybiBMKG5hLGlhLENhLFouamIpfSl9KCk6QihaLGlhLE4sUCk7cmV0dXJuIGlhfWZ1bmN0aW9uIGsoTil7aWYoTiYmXCJvYmplY3RcIj09PXR5cGVvZiBOJiZOLmNvbnN0cnVjdG9yPT09dGhpcylyZXR1cm4gTjt2YXIgUD1uZXcgdGhpcyhsKTtcbncoUCxOKTtyZXR1cm4gUH1mdW5jdGlvbiBsKCl7fWZ1bmN0aW9uIG0oTil7dHJ5e3JldHVybiBOLnRoZW59Y2F0Y2goUCl7cmV0dXJuIEJhLmVycm9yPVAsQmF9fWZ1bmN0aW9uIG4oTixQLFUsWil7dHJ5e04uY2FsbChQLFUsWil9Y2F0Y2goaWEpe3JldHVybiBpYX19ZnVuY3Rpb24gcihOLFAsVSl7dihmdW5jdGlvbihaKXt2YXIgaWE9ITEsbmE9bihVLFAsZnVuY3Rpb24oQ2Epe2lhfHwoaWE9ITAsUCE9PUNhP3coWixDYSk6QyhaLENhKSl9LGZ1bmN0aW9uKENhKXtpYXx8KGlhPSEwLEQoWixDYSkpfSxcIlNldHRsZTogXCIrKFouT2x8fFwiIHVua25vd24gcHJvbWlzZVwiKSk7IWlhJiZuYSYmKGlhPSEwLEQoWixuYSkpfSxOKX1mdW5jdGlvbiBxKE4sUCl7UC5sYj09PUVhP0MoTixQLmpiKTpQLmxiPT09eGE/RChOLFAuamIpOkIoUCx2b2lkIDAsZnVuY3Rpb24oVSl7cmV0dXJuIHcoTixVKX0sZnVuY3Rpb24oVSl7cmV0dXJuIEQoTixVKX0pfWZ1bmN0aW9uIHUoTixQLFUpe1AuY29uc3RydWN0b3I9PT1cbk4uY29uc3RydWN0b3ImJlU9PT1oJiZQLmNvbnN0cnVjdG9yLnJlc29sdmU9PT1rP3EoTixQKTpVPT09QmE/RChOLEJhLmVycm9yKTp2b2lkIDA9PT1VP0MoTixQKTpcImZ1bmN0aW9uXCI9PT10eXBlb2YgVT9yKE4sUCxVKTpDKE4sUCl9ZnVuY3Rpb24gdyhOLFApe049PT1QP0QoTixuZXcgVHlwZUVycm9yKFwiWW91IGNhbm5vdCByZXNvbHZlIGEgcHJvbWlzZSB3aXRoIGl0c2VsZlwiKSk6XCJmdW5jdGlvblwiPT09dHlwZW9mIFB8fFwib2JqZWN0XCI9PT10eXBlb2YgUCYmbnVsbCE9PVA/dShOLFAsbShQKSk6QyhOLFApfWZ1bmN0aW9uIHgoTil7Ti5KciYmTi5KcihOLmpiKTtLKE4pfWZ1bmN0aW9uIEMoTixQKXtOLmxiPT09emEmJihOLmpiPVAsTi5sYj1FYSwwIT09Ti5paC5sZW5ndGgmJnYoSyxOKSl9ZnVuY3Rpb24gRChOLFApe04ubGI9PT16YSYmKE4ubGI9eGEsTi5qYj1QLHYoeCxOKSl9ZnVuY3Rpb24gQihOLFAsVSxaKXt2YXIgaWE9Ti5paCxuYT1pYS5sZW5ndGg7Ti5Kcj1udWxsO2lhW25hXT1cblA7aWFbbmErRWFdPVU7aWFbbmEreGFdPVo7MD09PW5hJiZOLmxiJiZ2KEssTil9ZnVuY3Rpb24gSyhOKXt2YXIgUD1OLmloLFU9Ti5sYjtpZigwIT09UC5sZW5ndGgpe2Zvcih2YXIgWixpYSxuYT1OLmpiLENhPTA7Q2E8UC5sZW5ndGg7Q2ErPTMpWj1QW0NhXSxpYT1QW0NhK1VdLFo/TChVLFosaWEsbmEpOmlhKG5hKTtOLmloLmxlbmd0aD0wfX1mdW5jdGlvbiBGKCl7dGhpcy5lcnJvcj1udWxsfWZ1bmN0aW9uIEwoTixQLFUsWil7dmFyIGlhPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBVLG5hPXZvaWQgMCxDYT12b2lkIDAsUGE9dm9pZCAwLFVhPXZvaWQgMDtpZihpYSl7dHJ5e25hPVUoWil9Y2F0Y2goWmEpe0thLmVycm9yPVphLG5hPUthfW5hPT09S2E/KFVhPSEwLENhPW5hLmVycm9yLG5hPW51bGwpOlBhPSEwO2lmKFA9PT1uYSl7RChQLG5ldyBUeXBlRXJyb3IoXCJBIHByb21pc2VzIGNhbGxiYWNrIGNhbm5vdCByZXR1cm4gdGhhdCBzYW1lIHByb21pc2UuXCIpKTtyZXR1cm59fWVsc2UgbmE9XG5aLFBhPSEwO1AubGI9PT16YSYmKGlhJiZQYT93KFAsbmEpOlVhP0QoUCxDYSk6Tj09PUVhP0MoUCxuYSk6Tj09PXhhJiZEKFAsbmEpKX1mdW5jdGlvbiB6KE4sUCl7dHJ5e1AoZnVuY3Rpb24oVSl7dyhOLFUpfSxmdW5jdGlvbihVKXtEKE4sVSl9KX1jYXRjaChVKXtEKE4sVSl9fWZ1bmN0aW9uIEEoTil7TltyYV09SWErKztOLmxiPXZvaWQgMDtOLmpiPXZvaWQgMDtOLmloPVtdfWZ1bmN0aW9uIEooTixQKXt0aGlzLmNEPU47dGhpcy5lZj1uZXcgTihsKTt0aGlzLmVmW3JhXXx8QSh0aGlzLmVmKTtFKFApPyh0aGlzLllDPVAsdGhpcy5qaj10aGlzLmxlbmd0aD1QLmxlbmd0aCx0aGlzLmpiPUFycmF5KHRoaXMubGVuZ3RoKSwwPT09dGhpcy5sZW5ndGg/Qyh0aGlzLmVmLHRoaXMuamIpOih0aGlzLmxlbmd0aD10aGlzLmxlbmd0aHx8MCx0aGlzLmdCKCksMD09PXRoaXMuamomJkModGhpcy5lZix0aGlzLmpiKSkpOkQodGhpcy5lZixFcnJvcihcIkFycmF5IE1ldGhvZHMgbXVzdCBiZSBwcm92aWRlZCBhbiBBcnJheVwiKSl9XG5mdW5jdGlvbiBJKE4pe3RoaXNbcmFdPUlhKys7dGhpcy5qYj10aGlzLmxiPXZvaWQgMDt0aGlzLmloPVtdO2lmKGwhPT1OKXtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgTil0aHJvdyBuZXcgVHlwZUVycm9yKFwiWW91IG11c3QgcGFzcyBhIHJlc29sdmVyIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvclwiKTtpZih0aGlzIGluc3RhbmNlb2YgSSl6KHRoaXMsTik7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUHJvbWlzZSc6IFBsZWFzZSB1c2UgdGhlICduZXcnIG9wZXJhdG9yLCB0aGlzIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uXCIpO319dmFyIEc9dm9pZCAwLEU9Rz1BcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oTil7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE4pfSxNPVxuMCxPPXZvaWQgMCxTPXZvaWQgMCxEYT0oRz1cInVuZGVmaW5lZFwiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwKXx8e30sdmE9RGEuTXV0YXRpb25PYnNlcnZlcnx8RGEuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtEYT1cInVuZGVmaW5lZFwiPT09dHlwZW9mIHNlbGYmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgcHJvY2VzcyYmXCJbb2JqZWN0IHByb2Nlc3NdXCI9PT17fS50b1N0cmluZy5jYWxsKHByb2Nlc3MpO3ZhciB3YT1cInVuZGVmaW5lZFwiIT09dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5JiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGltcG9ydFNjcmlwdHMmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwseWE9QXJyYXkoMUUzKSxiYT12b2lkIDA7YmE9RGE/cCgpOnZhP2YoKTp3YT9jKCk6dm9pZCAwPT09RyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGc/ZCgpOmEoKTt2YXIgcmE9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDE2KSx6YT12b2lkIDAsRWE9MSxcbnhhPTIsQmE9bmV3IEYsS2E9bmV3IEYsSWE9MDtKLnByb3RvdHlwZS5nQj1mdW5jdGlvbigpe2Zvcih2YXIgTj10aGlzLmxlbmd0aCxQPXRoaXMuWUMsVT0wO3RoaXMubGI9PT16YSYmVTxOO1UrKyl0aGlzLlJBKFBbVV0sVSl9O0oucHJvdG90eXBlLlJBPWZ1bmN0aW9uKE4sUCl7dmFyIFU9dGhpcy5jRCxaPVUucmVzb2x2ZTtaPT09az8oWj1tKE4pLFo9PT1oJiZOLmxiIT09emE/dGhpcy5tbShOLmxiLFAsTi5qYik6XCJmdW5jdGlvblwiIT09dHlwZW9mIFo/KHRoaXMuamotLSx0aGlzLmpiW1BdPU4pOlU9PT1JPyhVPW5ldyBVKGwpLHUoVSxOLFopLHRoaXMuRm0oVSxQKSk6dGhpcy5GbShuZXcgVShmdW5jdGlvbihpYSl7cmV0dXJuIGlhKE4pfSksUCkpOnRoaXMuRm0oWihOKSxQKX07Si5wcm90b3R5cGUubW09ZnVuY3Rpb24oTixQLFUpe3ZhciBaPXRoaXMuZWY7Wi5sYj09PXphJiYodGhpcy5qai0tLE49PT14YT9EKFosVSk6dGhpcy5qYltQXT1VKTswPT09dGhpcy5qaiYmQyhaLHRoaXMuamIpfTtcbkoucHJvdG90eXBlLkZtPWZ1bmN0aW9uKE4sUCl7dmFyIFU9dGhpcztCKE4sdm9pZCAwLGZ1bmN0aW9uKFope3JldHVybiBVLm1tKEVhLFAsWil9LGZ1bmN0aW9uKFope3JldHVybiBVLm1tKHhhLFAsWil9KX07SS5hbGw9ZnVuY3Rpb24oTil7cmV0dXJuKG5ldyBKKHRoaXMsTikpLmVmfTtJLnJhY2U9ZnVuY3Rpb24oTil7dmFyIFA9dGhpcztyZXR1cm4gRShOKT9uZXcgUChmdW5jdGlvbihVLFope2Zvcih2YXIgaWE9Ti5sZW5ndGgsbmE9MDtuYTxpYTtuYSsrKVAucmVzb2x2ZShOW25hXSkudGhlbihVLFopfSk6bmV3IFAoZnVuY3Rpb24oVSxaKXtyZXR1cm4gWihuZXcgVHlwZUVycm9yKFwiWW91IG11c3QgcGFzcyBhbiBhcnJheSB0byByYWNlLlwiKSl9KX07SS5yZXNvbHZlPWs7SS5yZWplY3Q9ZnVuY3Rpb24oTil7dmFyIFA9bmV3IHRoaXMobCk7RChQLE4pO3JldHVybiBQfTtJLlhTPWZ1bmN0aW9uKE4pe1M9Tn07SS5XUz1mdW5jdGlvbihOKXt2PU59O0kuVlM9djtJLnByb3RvdHlwZT1cbntjb25zdHJ1Y3RvcjpJLHRoZW46aCxcImNhdGNoXCI6ZnVuY3Rpb24oTil7cmV0dXJuIHRoaXMudGhlbihudWxsLE4pfX07SS5yTj1mdW5jdGlvbigpe3ZhciBOPXZvaWQgMDtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIGdsb2JhbClOPWdsb2JhbDtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2VsZilOPXNlbGY7ZWxzZSB0cnl7Tj1GdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goWil7dGhyb3cgRXJyb3IoXCJwb2x5ZmlsbCBmYWlsZWQgYmVjYXVzZSBnbG9iYWwgb2JqZWN0IGlzIHVuYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnRcIik7fXZhciBQPU4uUHJvbWlzZTtpZihQKXt2YXIgVT1udWxsO3RyeXtVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChQLnJlc29sdmUoKSl9Y2F0Y2goWil7fWlmKFwiW29iamVjdCBQcm9taXNlXVwiPT09VSYmIVAuY1QpcmV0dXJufU4uUHJvbWlzZT1JfTtyZXR1cm4gSS5Qcm9taXNlPUl9KX0se31dLDE1MTpbZnVuY3Rpb24oZyxcbnkpe2c9e307KGZ1bmN0aW9uKHQsdil7ZnVuY3Rpb24gcChrKXtyZXR1cm4gU3RyaW5nKG51bGw9PT1rfHx2b2lkIDA9PT1rP1wiXCI6ayl9dC5wZT1mdW5jdGlvbihrLGwsbSxuKXt0aGlzLnI9a3x8dGhpcy5yO3RoaXMuUWQ9bTt0aGlzLm9wdGlvbnM9bjt0aGlzLnRleHQ9bHx8XCJcIjt0aGlzLlNlPXY/W106XCJcIn07dC5wZS5wcm90b3R5cGU9e3I6ZnVuY3Rpb24oKXtyZXR1cm5cIlwifSxsUDpmdW5jdGlvbihrKXtrPXAoayk7cmV0dXJuIGQudGVzdChrKT9rLnJlcGxhY2UoZSxcIiZhbXA7XCIpLnJlcGxhY2UoZixcIiZsdDtcIikucmVwbGFjZShjLFwiJmd0O1wiKS5yZXBsYWNlKGEsXCImIzM5O1wiKS5yZXBsYWNlKGIsXCImcXVvdDtcIik6a30sdDpwLEJrOmZ1bmN0aW9uKGssbCxtKXtyZXR1cm4gdGhpcy55Yihba10sbHx8e30sbSl9LHliOmZ1bmN0aW9uKGssbCxtKXtyZXR1cm4gdGhpcy5yKGssbCxtKX0sVU46ZnVuY3Rpb24oayxsLG0sbil7az1tW2tdO2lmKCFrKXJldHVyblwiXCI7dGhpcy5RZCYmXCJzdHJpbmdcIj09XG50eXBlb2YgayYmKGs9dGhpcy5RZC5jb21waWxlKGssdGhpcy5vcHRpb25zKSk7cmV0dXJuIGsueWIobCxtLG4pfSxFbzpmdW5jdGlvbihrLGwsbSl7dmFyIG49a1trLmxlbmd0aC0xXTtpZihoKG4pKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKWsucHVzaChuW3JdKSxtKGssbCx0aGlzKSxrLnBvcCgpO2Vsc2UgbShrLGwsdGhpcyl9LENrOmZ1bmN0aW9uKGssbCxtLG4scixxLHUpe2lmKGgoaykmJjA9PT1rLmxlbmd0aClyZXR1cm4hMTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBrJiYoaz10aGlzLlNNKGssbCxtLG4scixxLHUpKTttPVwiXCI9PT1rfHwhIWs7IW4mJm0mJmwmJmwucHVzaChcIm9iamVjdFwiPT10eXBlb2Ygaz9rOmxbbC5sZW5ndGgtMV0pO3JldHVybiBtfSxkOmZ1bmN0aW9uKGssbCxtLG4pe3ZhciByPWsuc3BsaXQoXCIuXCIpLHE9dGhpcy5GYyhyWzBdLGwsbSxuKSx1PW51bGw7aWYoXCIuXCI9PT1rJiZoKGxbbC5sZW5ndGgtMl0pKXJldHVybiBsW2wubGVuZ3RoLTFdO2ZvcihrPTE7azxcbnIubGVuZ3RoO2srKylxJiZcIm9iamVjdFwiPT10eXBlb2YgcSYmcltrXWluIHE/KHU9cSxxPXFbcltrXV0pOnE9XCJcIjtpZihuJiYhcSlyZXR1cm4hMTtufHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBxfHwobC5wdXNoKHUpLHE9dGhpcy5YdShxLGwsbSksbC5wb3AoKSk7cmV0dXJuIHF9LEZjOmZ1bmN0aW9uKGssbCxtLG4pe2Zvcih2YXIgcj0hMSxxLHU9ITEsdz1sLmxlbmd0aC0xOzA8PXc7dy0tKWlmKChxPWxbd10pJiZcIm9iamVjdFwiPT10eXBlb2YgcSYmayBpbiBxKXtyPXFba107dT0hMDticmVha31pZighdSlyZXR1cm4gbj8hMTpcIlwiO258fFwiZnVuY3Rpb25cIiE9dHlwZW9mIHJ8fChyPXRoaXMuWHUocixsLG0pKTtyZXR1cm4gcn0senU6ZnVuY3Rpb24oayxsLG0sbixyKXt2YXIgcT10aGlzLlFkLHU9dGhpcy5vcHRpb25zO3UuWUo9cjtuPWsuY2FsbChsLG4pO249bnVsbD09bj9TdHJpbmcobik6bi50b1N0cmluZygpO3RoaXMubyhxLmNvbXBpbGUobix1KS5CayhsLG0pKTtyZXR1cm4hMX0sbzp2P1xuZnVuY3Rpb24oayl7dGhpcy5TZS5wdXNoKGspfTpmdW5jdGlvbihrKXt0aGlzLlNlKz1rfSx4aDp2P2Z1bmN0aW9uKCl7dmFyIGs9dGhpcy5TZS5qb2luKFwiXCIpO3RoaXMuU2U9W107cmV0dXJuIGt9OmZ1bmN0aW9uKCl7dmFyIGs9dGhpcy5TZTt0aGlzLlNlPVwiXCI7cmV0dXJuIGt9LFNNOmZ1bmN0aW9uKGssbCxtLG4scixxLHUpe2w9bFtsLmxlbmd0aC0xXTtpZighbiYmdGhpcy5RZCYmMDxrLmxlbmd0aClyZXR1cm4gdGhpcy56dShrLGwsbSx0aGlzLnRleHQuc3Vic3RyaW5nKHIscSksdSk7az1rLmNhbGwobCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygayl7aWYobilyZXR1cm4hMDtpZih0aGlzLlFkKXJldHVybiB0aGlzLnp1KGssbCxtLHRoaXMudGV4dC5zdWJzdHJpbmcocixxKSx1KX1yZXR1cm4ga30sWHU6ZnVuY3Rpb24oayxsLG0pe2w9bFtsLmxlbmd0aC0xXTtrPWsuY2FsbChsKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBrJiYoaz1wKGsuY2FsbChsKSksdGhpcy5RZCYmfmsuaW5kZXhPZihcInt7XCIpKT9cbnRoaXMuUWQuY29tcGlsZShrLHRoaXMub3B0aW9ucykuQmsobCxtKTpwKGspfX07dmFyIGU9LyYvZyxmPS88L2csYz0vPi9nLGE9LycvZyxiPS9cIi9nLGQ9L1smPD5cIiddLyxoPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGspe3JldHVyblwiW29iamVjdCBBcnJheV1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChrKX19KShnKTsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gdihyKXtcIn1cIj09PXIubi5zdWJzdHIoci5uLmxlbmd0aC0xKSYmKHIubj1yLm4uc3Vic3RyaW5nKDAsci5uLmxlbmd0aC0xKSl9ZnVuY3Rpb24gcChyKXtyZXR1cm4gci50cmltP3IudHJpbSgpOnIucmVwbGFjZSgvXlxccyp8XFxzKiQvZyxcIlwiKX1mdW5jdGlvbiBlKHIscSx1KXtpZihxLmNoYXJBdCh1KSE9ci5jaGFyQXQoMCkpcmV0dXJuITE7Zm9yKHZhciB3PTEseD1yLmxlbmd0aDt3PHg7dysrKWlmKHEuY2hhckF0KHUrdykhPXIuY2hhckF0KHcpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGYocixxLHUsXG53KXtxPVtdO2Zvcih2YXIgeDswPHIubGVuZ3RoOyl7eD1yLnNoaWZ0KCk7dmFyIEM7aWYoIShDPVwiI1wiPT14LnRhZ3x8XCJeXCI9PXgudGFnKSlhOntDPXg7Zm9yKHZhciBEPXcsQj0wLEs9RC5sZW5ndGg7QjxLO0IrKylpZihEW0JdLiRNPT1DLm4pe0MudGFnPVwiI1wiO0M9ITA7YnJlYWsgYX1DPXZvaWQgMH1pZihDKXUucHVzaCh4KSx4LmZ2PWYocix4LnRhZyx1LHcpO2Vsc2UgaWYoXCIvXCI9PXgudGFnKXtpZigwPT09dS5sZW5ndGgpdGhyb3cgRXJyb3IoXCJDbG9zaW5nIHRhZyB3aXRob3V0IG9wZW5lcjogL1wiK3gubik7cj11LnBvcCgpO2lmKHU9eC5uIT1yLm4pe2E6e3U9MDtmb3IoQz13Lmxlbmd0aDt1PEM7dSsrKWlmKHdbdV0uUWQ9PXgubiYmd1t1XS4kTT09ci5uKXt3PSEwO2JyZWFrIGF9dz12b2lkIDB9dT0hd31pZih1KXRocm93IEVycm9yKFwiTmVzdGluZyBlcnJvcjogXCIrci5uK1wiIHZzLiBcIit4Lm4pO3IuZW5kPXguSmg7cmV0dXJuIHF9cS5wdXNoKHgpfWlmKDA8dS5sZW5ndGgpdGhyb3cgRXJyb3IoXCJtaXNzaW5nIGNsb3NpbmcgdGFnOiBcIitcbnUucG9wKCkubik7cmV0dXJuIHF9ZnVuY3Rpb24gYyhyKXtyZXR1cm4gci5yZXBsYWNlKG0sXCJcXFxcXFxcXFwiKS5yZXBsYWNlKGgsJ1xcXFxcIicpLnJlcGxhY2UoayxcIlxcXFxuXCIpLnJlcGxhY2UobCxcIlxcXFxyXCIpfWZ1bmN0aW9uIGEocil7cmV0dXJufnIuaW5kZXhPZihcIi5cIik/XCJkXCI6XCJmXCJ9ZnVuY3Rpb24gYihyKXtmb3IodmFyIHE9XCJcIix1PTAsdz1yLmxlbmd0aDt1PHc7dSsrKXt2YXIgeD1yW3VdLnRhZztpZihcIiNcIj09eCl7eD1yW3VdLmZ2O3ZhciBDPWEoclt1XS5uKSxEPXJbdV0uSmgsQj1yW3VdLmVuZCxLPXJbdV0uZ04rXCIgXCIrclt1XS5MSjt4PVwiaWYoXy5zKF8uXCIrQysnKFwiJytjKHJbdV0ubikrJ1wiLGMscCwxKSxjLHAsMCwnK0QrXCIsXCIrQisnLFwiJytLKydcIikpe18ucnMoYyxwLGZ1bmN0aW9uKGMscCxfKXsnK2IoeCkrXCJ9KTtjLnBvcCgpO31cIjtxKz14fWVsc2VcIl5cIj09eD8oeD1yW3VdLmZ2LHg9XCJpZighXy5zKF8uXCIrYShyW3VdLm4pKycoXCInK2Moclt1XS5uKSsnXCIsYyxwLDEpLGMscCwxLDAsMCxcIlwiKSl7JytcbmIoeCkrXCJ9O1wiLHErPXgpOlwiPFwiPT14fHxcIj5cIj09eD8oeD1yW3VdLHg9J18uYihfLnJwKFwiJytjKHgubikrJ1wiLGMscCxcIicrKHguY018fFwiXCIpKydcIikpOycscSs9eCk6XCJ7XCI9PXh8fFwiJlwiPT14Pyh4PVwiXy5iKF8udChfLlwiK2Eoclt1XS5uKSsnKFwiJytjKHJbdV0ubikrJ1wiLGMscCwwKSkpOycscSs9eCk6XCJcXG5cIj09eD9xKz0nXy5iKFwiXFxcXG5cIicrKHIubGVuZ3RoLTE9PXU/XCJcIjpcIiArIGlcIikrXCIpO1wiOlwiX3ZcIj09eD8oeD1cIl8uYihfLnYoXy5cIithKHJbdV0ubikrJyhcIicrYyhyW3VdLm4pKydcIixjLHAsMCkpKTsnLHErPXgpOnZvaWQgMD09PXgmJihxKz0nXy5iKFwiJysoYyhyW3VdKSsnXCIpOycpKX1yZXR1cm4gcX12YXIgZD0vXFxTLyxoPS9cIi9nLGs9L1xcbi9nLGw9L1xcci9nLG09L1xcXFwvZyxuPXtcIiNcIjoxLFwiXlwiOjIsXCIvXCI6MyxcIiFcIjo0LFwiPlwiOjUsXCI8XCI6NixcIj1cIjo3LF92OjgsXCJ7XCI6OSxcIiZcIjoxMH07dC5XTj1mdW5jdGlvbihyLHEpe2Z1bmN0aW9uIHUoKXswPEYubGVuZ3RoJiYoTC5wdXNoKG5ldyBTdHJpbmcoRikpLFxuRj1cIlwiKX1mdW5jdGlvbiB3KEUsTSl7dSgpO2lmKEUpYTp7RT0hMDtmb3IodmFyIE89SjtPPEwubGVuZ3RoO08rKylpZihFPUxbT10udGFnJiZuW0xbT10udGFnXTxuLl92fHwhTFtPXS50YWcmJm51bGw9PT1MW09dLm1hdGNoKGQpLCFFKXtFPSExO2JyZWFrIGF9fWlmKEUpe009Sjtmb3IodmFyIFM7TTxMLmxlbmd0aDtNKyspTFtNXS50YWd8fCgoUz1MW00rMV0pJiZcIj5cIj09Uy50YWcmJihTLmNNPUxbTV0udG9TdHJpbmcoKSksTC5zcGxpY2UoTSwxKSl9ZWxzZSBNfHxMLnB1c2goe3RhZzpcIlxcblwifSk7ej0hMTtKPUwubGVuZ3RofWZ1bmN0aW9uIHgoRSxNKXt2YXIgTz1cIj1cIitHLFM9RS5pbmRleE9mKE8sTSk7RT1wKEUuc3Vic3RyaW5nKEUuaW5kZXhPZihcIj1cIixNKSsxLFMpKS5zcGxpdChcIiBcIik7ST1FWzBdO0c9RVsxXTtyZXR1cm4gUytPLmxlbmd0aC0xfXZhciBDPXIubGVuZ3RoLEQ9MCxCPW51bGwsSz1udWxsLEY9XCJcIixMPVtdLHo9ITEsQT0wLEo9MCxJPVwie3tcIixHPVwifX1cIjtxJiZcbihxPXEuc3BsaXQoXCIgXCIpLEk9cVswXSxHPXFbMV0pO2ZvcihBPTA7QTxDO0ErKykwPT1EP2UoSSxyLEEpPygtLUEsdSgpLEQ9MSk6XCJcXG5cIj09ci5jaGFyQXQoQSk/dyh6KTpGKz1yLmNoYXJBdChBKToxPT1EPyhBKz1JLmxlbmd0aC0xLEI9KEs9bltyLmNoYXJBdChBKzEpXSk/ci5jaGFyQXQoQSsxKTpcIl92XCIsXCI9XCI9PUI/KEE9eChyLEEpLEQ9MCk6KEsmJkErKyxEPTIpLHo9QSk6ZShHLHIsQSk/KEwucHVzaCh7dGFnOkIsbjpwKEYpLGdOOkksTEo6RyxKaDpcIi9cIj09Qj96LUcubGVuZ3RoOkErSS5sZW5ndGh9KSxGPVwiXCIsQSs9Ry5sZW5ndGgtMSxEPTAsXCJ7XCI9PUImJihcIn19XCI9PUc/QSsrOnYoTFtMLmxlbmd0aC0xXSkpKTpGKz1yLmNoYXJBdChBKTt3KHosITApO3JldHVybiBMfTt0LkpLPWZ1bmN0aW9uKHIscSx1KXtyPSd2YXIgXz10aGlzO18uYihpPWl8fFwiXCIpOycrYihyKStcInJldHVybiBfLmZsKCk7XCI7cmV0dXJuIHUuSkg/XCJmdW5jdGlvbihjLHAsaSl7XCIrcitcIjt9XCI6bmV3IHQucGUobmV3IEZ1bmN0aW9uKFwiY1wiLFxuXCJwXCIsXCJpXCIscikscSx0LHUpfTt0LnBhcnNlPWZ1bmN0aW9uKHIscSx1KXt1PXV8fHt9O3JldHVybiBmKHIsXCJcIixbXSx1LllUfHxbXSl9O3QuY2FjaGU9e307dC5jb21waWxlPWZ1bmN0aW9uKHIscSl7cT1xfHx7fTt2YXIgdT1yK1wifHxcIishIXEuSkgsdz10aGlzLmNhY2hlW3VdO2lmKHcpcmV0dXJuIHc7dz10aGlzLkpLKHRoaXMucGFyc2UodGhpcy5XTihyLHEuWUopLHIscSkscixxKTtyZXR1cm4gdGhpcy5jYWNoZVt1XT13fX0pKGcpO3kuamc9Z30se31dLDE1MjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1mdW5jdGlvbih2KXtmdW5jdGlvbiBwKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMscT1tLndyaXRlLHU9bS53cml0ZWxuO20ud3JpdGU9YjttLndyaXRlbG49YTtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtmKGQsZnVuY3Rpb24oKXttLndyaXRlPXE7bS53cml0ZWxuPXU7ci5vbmNvbXBsZXRlLmNhbGwoKX0pfX1cbmZ1bmN0aW9uIGUobixyKXtpZihuLmFkZEV2ZW50TGlzdGVuZXIpbi5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixyLCEwKSxuLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsciwhMCk7ZWxzZSBpZihuLmF0dGFjaEV2ZW50KW4uYXR0YWNoRXZlbnQoXCJvbmVycm9yXCIsciwhMCksbi5hdHRhY2hFdmVudChcIm9ubG9hZFwiLHIsITApLG4uYXR0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixmdW5jdGlvbigpe1wiY29tcGxldGVcIiE9bi5yZWFkeVN0YXRlJiZcImxvYWRlZFwiIT1uLnJlYWR5U3RhdGV8fHIoKX0pO2Vsc2UgdGhyb3cgRXJyb3IoXCJGYWlsZWQgdG8gYXR0YWNoIGxpc3RlbmVycyB0byBzY3JpcHQuXCIpO31mdW5jdGlvbiBmKG4scil7ZnVuY3Rpb24gcSgpe2lmKG4ubGVuZ3RoKXt2YXIgdT1uLnNoaWZ0KCk7az11LnBsYWNlaG9sZGVyO2lmKHUubm9kZS5zcmMpe3ZhciB3PW0uY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTt3LnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIjt3LnNyYz11Lm5vZGUuc3JjO1xuZSh3LHEpO3UucGxhY2Vob2xkZXIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodyx1LnBsYWNlaG9sZGVyKX1lbHNle2lmKHUubm9kZS5pbm5lckhUTUwpdHJ5e2wuZXZhbCh1Lm5vZGUuaW5uZXJIVE1MKX1jYXRjaCh4KXt9cSgpfX1lbHNlIHIoKX1xKCl9ZnVuY3Rpb24gYyhuKXt2YXIgcj1tLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7aWYoXCJvYmplY3RcIj09dHlwZW9mIG4mJm4ucGFyZW50Tm9kZSlyLmFwcGVuZENoaWxkKG4pO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIG4mJm4ubGVuZ3RoKWZvcig7bi5sZW5ndGg7KXIuYXBwZW5kQ2hpbGQoblswXSk7ZWxzZSByLmlubmVySFRNTD1cIjxzcGFuPi48L3NwYW4+XCIrbixyLnJlbW92ZUNoaWxkKHIuY2hpbGROb2Rlc1swXSk7bj1yLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO2Zvcih2YXIgcT1uLmxlbmd0aC0xOzA8PXE7cS0tKXt2YXIgdT1uW3FdLHc9bS5jcmVhdGVDb21tZW50KFwiU2NyaXB0IHBsYWNlaG9sZGVyXCIpO3UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodyxcbnUpO3UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1KTtkLnVuc2hpZnQoe3BsYWNlaG9sZGVyOncsbm9kZTp1fSl9Zm9yKHI9ci5jaGlsZE5vZGVzO3IubGVuZ3RoOyluPXJbMF0sayYmay5wYXJlbnROb2RlP2sucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixrLm5leHRTaWJsaW5nKTpoLmFwcGVuZENoaWxkKG4pLGs9bn1mdW5jdGlvbiBhKG4pe2MobitcIlxcblwiKX1mdW5jdGlvbiBiKG4pe2Mobil9dmFyIGQ9W107dGhpcy5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7fTt0aGlzLmV2YWw9cChmdW5jdGlvbihuKXt0cnl7bC5ldmFsKG4pfWNhdGNoKHIpe319KTt0aGlzLmprPXAoZnVuY3Rpb24obil7YyhuKX0pO3Y9ZnVuY3Rpb24obixyKXtmb3IodmFyIHEgaW4gcilyLmhhc093blByb3BlcnR5KHEpJiYobltxXT1cInVuZGVmaW5lZFwiPT09dHlwZW9mIG5bcV0/cltxXTpuW3FdKTtyZXR1cm4gbn0odnx8e30se0Q6di5ELE92Om51bGx9KTt2LmhjPXYuaGN8fHYuRC5kb2N1bWVudC5ib2R5O3ZhciBoPVxudi5oYzt2YXIgaz12Lk92O3ZhciBsPXYuRDt2YXIgbT1sLmRvY3VtZW50fX0se31dLDE1MzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTQ3KTtnKDE1NSk7KGZ1bmN0aW9uKHApe2Z1bmN0aW9uIGUoKXtxPSExO3ZhciBEPXU7dT1bXTtELnNvcnQoZnVuY3Rpb24oSyxGKXtyZXR1cm4gSy5Wdi1GLlZ2fSk7dmFyIEI9ITE7RC5mb3JFYWNoKGZ1bmN0aW9uKEspe3ZhciBGPUsudGFrZVJlY29yZHMoKTtmKEspO0YubGVuZ3RoJiYoSy5ZSChGLEspLEI9ITApfSk7QiYmZSgpfWZ1bmN0aW9uIGYoRCl7RC5yby5mb3JFYWNoKGZ1bmN0aW9uKEIpeyhCPWwuZ2V0KEIpKSYmQi5mb3JFYWNoKGZ1bmN0aW9uKEspe0suZmI9PT1EJiZLLk1OKCl9KX0pfWZ1bmN0aW9uIGMoRCxCKXtmb3IodmFyIEs9RDtLO0s9Sy5wYXJlbnROb2RlKXt2YXIgRj1sLmdldChLKTtpZihGKWZvcih2YXIgTD0wO0w8Ri5sZW5ndGg7TCsrKXt2YXIgej1cbkZbTF0sQT16Lm9wdGlvbnM7KEs9PT1EfHxBLnN1YnRyZWUpJiYoQT1CKEEpKSYmei5lbnF1ZXVlKEEpfX19ZnVuY3Rpb24gYShEKXt0aGlzLllIPUQ7dGhpcy5ybz1bXTt0aGlzLnprPVtdO3RoaXMuVnY9Kyt3fWZ1bmN0aW9uIGIoRCxCKXt0aGlzLnR5cGU9RDt0aGlzLnRhcmdldD1CO3RoaXMuYWRkZWROb2Rlcz1bXTt0aGlzLnJlbW92ZWROb2Rlcz1bXTt0aGlzLm9sZFZhbHVlPXRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPXRoaXMuYXR0cmlidXRlTmFtZT10aGlzLm5leHRTaWJsaW5nPXRoaXMucHJldmlvdXNTaWJsaW5nPW51bGx9ZnVuY3Rpb24gZChELEIpe3JldHVybiB4PW5ldyBiKEQsQil9ZnVuY3Rpb24gaChEKXtpZihDKXJldHVybiBDO3ZhciBCPXgsSz1uZXcgYihCLnR5cGUsQi50YXJnZXQpO0suYWRkZWROb2Rlcz1CLmFkZGVkTm9kZXMuc2xpY2UoKTtLLnJlbW92ZWROb2Rlcz1CLnJlbW92ZWROb2Rlcy5zbGljZSgpO0sucHJldmlvdXNTaWJsaW5nPUIucHJldmlvdXNTaWJsaW5nO1xuSy5uZXh0U2libGluZz1CLm5leHRTaWJsaW5nO0suYXR0cmlidXRlTmFtZT1CLmF0dHJpYnV0ZU5hbWU7Sy5hdHRyaWJ1dGVOYW1lc3BhY2U9Qi5hdHRyaWJ1dGVOYW1lc3BhY2U7Sy5vbGRWYWx1ZT1CLm9sZFZhbHVlO0M9SztDLm9sZFZhbHVlPUQ7cmV0dXJuIEN9ZnVuY3Rpb24gayhELEIsSyl7dGhpcy5mYj1EO3RoaXMudGFyZ2V0PUI7dGhpcy5vcHRpb25zPUs7dGhpcy5Xbz1bXX12YXIgbD1uZXcgV2Vha01hcCxtPXAuTlQ7aWYoIW0pe3ZhciBuPVtdLHI9U3RyaW5nKE1hdGgucmFuZG9tKCkpO3YuZGVmYXVsdC51KHAsXCJtZXNzYWdlXCIsZnVuY3Rpb24oRCl7RC5kYXRhPT09ciYmKEQ9bixuPVtdLEQuZm9yRWFjaChmdW5jdGlvbihCKXtCKCl9KSl9KTttPWZ1bmN0aW9uKEQpe24ucHVzaChEKTtwLnBvc3RNZXNzYWdlKHIsXCIqXCIpfX12YXIgcT0hMSx1PVtdLHc9MDthLnByb3RvdHlwZT17b2JzZXJ2ZTpmdW5jdGlvbihELEIpe0Q9cC5BeCYmcC5BeC5mVShEKXx8RDtpZighQi5jaGlsZExpc3QmJlxuIUIuYXR0cmlidXRlcyYmIUIuY2hhcmFjdGVyRGF0YXx8Qi5hdHRyaWJ1dGVPbGRWYWx1ZSYmIUIuYXR0cmlidXRlc3x8Qi5hdHRyaWJ1dGVGaWx0ZXImJkIuYXR0cmlidXRlRmlsdGVyLmxlbmd0aCYmIUIuYXR0cmlidXRlc3x8Qi5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUmJiFCLmNoYXJhY3RlckRhdGEpdGhyb3cgbmV3IFN5bnRheEVycm9yO3ZhciBLPWwuZ2V0KEQpO0t8fGwuc2V0KEQsSz1bXSk7Zm9yKHZhciBGLEw9MDtMPEsubGVuZ3RoO0wrKylpZihLW0xdLmZiPT09dGhpcyl7Rj1LW0xdO0YuT2EoKTtGLm9wdGlvbnM9QjticmVha31GfHwoRj1uZXcgayh0aGlzLEQsQiksSy5wdXNoKEYpLHRoaXMucm8ucHVzaChEKSk7Ri5mYSgpfSxkaXNjb25uZWN0OmZ1bmN0aW9uKCl7dGhpcy5yby5mb3JFYWNoKGZ1bmN0aW9uKEQpe0Q9bC5nZXQoRCk7Zm9yKHZhciBCPTA7QjxELmxlbmd0aDtCKyspe3ZhciBLPURbQl07aWYoSy5mYj09PXRoaXMpe0suT2EoKTtELnNwbGljZShCLDEpO2JyZWFrfX19LFxudGhpcyk7dGhpcy56az1bXX0sdGFrZVJlY29yZHM6ZnVuY3Rpb24oKXt2YXIgRD10aGlzLnprO3RoaXMuems9W107cmV0dXJuIER9fTt2YXIgeCxDO2sucHJvdG90eXBlPXtlbnF1ZXVlOmZ1bmN0aW9uKEQpe3ZhciBCPXRoaXMuZmIuemssSz1CLmxlbmd0aDtpZigwPEIubGVuZ3RoKXt2YXIgRj1CW0stMV07aWYoRj1GPT09RD9GOiFDfHxGIT09QyYmRiE9PXg/bnVsbDpDKXtCW0stMV09RjtyZXR1cm59fWVsc2UgdS5wdXNoKHRoaXMuZmIpLHF8fChxPSEwLG0oZSkpO0JbS109RH0sZmE6ZnVuY3Rpb24oKXt0aGlzLlJzKHRoaXMudGFyZ2V0KX0sUnM6ZnVuY3Rpb24oRCl7dmFyIEI9dGhpcy5vcHRpb25zO0IuYXR0cmlidXRlcyYmRC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQXR0ck1vZGlmaWVkXCIsdGhpcywhMCk7Qi5jaGFyYWN0ZXJEYXRhJiZELmFkZEV2ZW50TGlzdGVuZXIoXCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWRcIix0aGlzLCEwKTtCLmNoaWxkTGlzdCYmRC5hZGRFdmVudExpc3RlbmVyKFwiRE9NTm9kZUluc2VydGVkXCIsXG50aGlzLCEwKTsoQi5jaGlsZExpc3R8fEIuc3VidHJlZSkmJkQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTU5vZGVSZW1vdmVkXCIsdGhpcywhMCl9LE9hOmZ1bmN0aW9uKCl7dGhpcy5Bdih0aGlzLnRhcmdldCl9LEF2OmZ1bmN0aW9uKEQpe3ZhciBCPXRoaXMub3B0aW9ucztCLmF0dHJpYnV0ZXMmJkQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTUF0dHJNb2RpZmllZFwiLHRoaXMsITApO0IuY2hhcmFjdGVyRGF0YSYmRC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkXCIsdGhpcywhMCk7Qi5jaGlsZExpc3QmJkQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTU5vZGVJbnNlcnRlZFwiLHRoaXMsITApOyhCLmNoaWxkTGlzdHx8Qi5zdWJ0cmVlKSYmRC5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NTm9kZVJlbW92ZWRcIix0aGlzLCEwKX0sdEg6ZnVuY3Rpb24oRCl7aWYoRCE9PXRoaXMudGFyZ2V0KXt0aGlzLlJzKEQpO3RoaXMuV28ucHVzaChEKTt2YXIgQj1sLmdldChEKTtcbkJ8fGwuc2V0KEQsQj1bXSk7Qi5wdXNoKHRoaXMpfX0sTU46ZnVuY3Rpb24oKXt2YXIgRD10aGlzLldvO3RoaXMuV289W107RC5mb3JFYWNoKGZ1bmN0aW9uKEIpe3RoaXMuQXYoQik7Qj1sLmdldChCKTtmb3IodmFyIEs9MDtLPEIubGVuZ3RoO0srKylpZihCW0tdPT09dGhpcyl7Qi5zcGxpY2UoSywxKTticmVha319LHRoaXMpfX07ay5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oRCl7RC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtzd2l0Y2goRC50eXBlKXtjYXNlIFwiRE9NQXR0ck1vZGlmaWVkXCI6dmFyIEI9RC5hdHRyTmFtZSxLPUQucmVsYXRlZE5vZGUubmFtZXNwYWNlVVJJLEY9RC50YXJnZXQsTD1uZXcgZChcImF0dHJpYnV0ZXNcIixGKTtMLmF0dHJpYnV0ZU5hbWU9QjtMLmF0dHJpYnV0ZU5hbWVzcGFjZT1LO3ZhciB6PUQuYXR0ckNoYW5nZT09PU11dGF0aW9uRXZlbnQuc1A/bnVsbDpELnByZXZWYWx1ZTtjKEYsZnVuY3Rpb24oRyl7aWYoRy5hdHRyaWJ1dGVzJiZcbighRy5hdHRyaWJ1dGVGaWx0ZXJ8fCFHLmF0dHJpYnV0ZUZpbHRlci5sZW5ndGh8fC0xIT09Ry5hdHRyaWJ1dGVGaWx0ZXIuaW5kZXhPZihCKXx8LTEhPT1HLmF0dHJpYnV0ZUZpbHRlci5pbmRleE9mKEspKSlyZXR1cm4gRy5hdHRyaWJ1dGVPbGRWYWx1ZT9oKHopOkx9KTticmVhaztjYXNlIFwiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkXCI6Rj1ELnRhcmdldDtMPWQoXCJjaGFyYWN0ZXJEYXRhXCIsRik7ej1ELnByZXZWYWx1ZTtjKEYsZnVuY3Rpb24oRyl7aWYoRy5jaGFyYWN0ZXJEYXRhKXJldHVybiBHLmNoYXJhY3RlckRhdGFPbGRWYWx1ZT9oKHopOkx9KTticmVhaztjYXNlIFwiRE9NTm9kZVJlbW92ZWRcIjp0aGlzLnRIKEQudGFyZ2V0KTtjYXNlIFwiRE9NTm9kZUluc2VydGVkXCI6Rj1ELnJlbGF0ZWROb2RlO3ZhciBBPUQudGFyZ2V0O2lmKFwiRE9NTm9kZUluc2VydGVkXCI9PT1ELnR5cGUpe0Q9W0FdO3ZhciBKPVtdfWVsc2UgRD1bXSxKPVtBXTt2YXIgST1BLnByZXZpb3VzU2libGluZztcbkE9QS5uZXh0U2libGluZztMPWQoXCJjaGlsZExpc3RcIixGKTtMLmFkZGVkTm9kZXM9RDtMLnJlbW92ZWROb2Rlcz1KO0wucHJldmlvdXNTaWJsaW5nPUk7TC5uZXh0U2libGluZz1BO2MoRixmdW5jdGlvbihHKXtpZihHLmNoaWxkTGlzdClyZXR1cm4gTH0pfXg9Qz12b2lkIDB9O3AuSnNNdXRhdGlvbk9ic2VydmVyPWE7IXAuTXV0YXRpb25PYnNlcnZlciYmcC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyJiYocC5NdXRhdGlvbk9ic2VydmVyPXAuV2ViS2l0TXV0YXRpb25PYnNlcnZlcik7cC5NdXRhdGlvbk9ic2VydmVyfHwocC5NdXRhdGlvbk9ic2VydmVyPWEpfSkod2luZG93KX0sezE0NzoxNDcsMTU1OjE1NX1dLDE1NDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHosQSl7dmFyIEo9dGhpcyxJPTA7Si5xZj1uZXcgQShcIlBPU1RcIix6LG51bGwpO0oucWYub25jaHVuaz1mdW5jdGlvbihHLFxuRSl7aWYoMjAwPT09Rylmb3IoOzspe0c9RS5zbGljZShJKTt2YXIgTT1HLmluZGV4T2YoXCJcXG5cIik7aWYoLTE9PT1NKWJyZWFrO0krPU0rMTtKLmRpc3BhdGNoRXZlbnQobmV3IHIoXCJtZXNzYWdlXCIse2RhdGE6Ry5zbGljZSgwLE0pfSkpfX07Si5xZi5vbmZpbmlzaD1mdW5jdGlvbihHLEUpe0oucWYub25jaHVuayhHLEUpO0oucWY9bnVsbDtKLmRpc3BhdGNoRXZlbnQobmV3IHIoXCJjbG9zZVwiLHtyZWFzb246MjAwPT09Rz9cIm5ldHdvcmtcIjpcInBlcm1hbmVudFwifSkpfX1mdW5jdGlvbiBwKHosQSxKLEkpe3RoaXMueWI9ejt0aGlzLnV4PUE7dGhpcy5ETj1KO3RoaXMudnc9STt0aGlzLmhzKCl9ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiBmKHosQSxKKXt2YXIgST1cImFcIit4LnhnKDYpLEc9MDt6PUEoeC5MbSh6LFwiYz1cIitlc2NhcGUoXCJfanAuXCIrSSkpLGZ1bmN0aW9uKEUpe3N3aXRjaChHKXtjYXNlIDA6ZGVsZXRlIHcuX2pwW0ldO0ooRSk7YnJlYWs7Y2FzZSAxOkooRSk7Rz0yO2JyZWFrO2Nhc2UgMjpkZWxldGUgdy5fanBbSV19fSk7XG53Ll9qcFtJXT16O3JldHVybiBmdW5jdGlvbigpe3cuX2pwW0ldJiYoRz0xLHcuX2pwW0ldKHguZWcoMUUzLFwiSlNPTlAgdXNlciBhYm9ydGVkIHJlYWRcIikpKX19ZnVuY3Rpb24gYyh6LEEpe2Z1bmN0aW9uIEooUyl7TSYmKE0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChNKSxNPW51bGwpO0kmJih3LmNsZWFyVGltZW91dChPKSxJLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoSSksST1JLm9ucmVhZHlzdGF0ZWNoYW5nZT1JLm9uZXJyb3I9SS5vbmxvYWQ9SS5vbmNsaWNrPW51bGwsQShTKSxBPW51bGwpfXZhciBJPXUuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSxHPSExLEU9bnVsbDtJLmlkPVwiYVwiK3gueGcoOCk7SS5zcmM9ejtJLnR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIjtJLmNoYXJzZXQ9XCJVVEYtOFwiO0kub25lcnJvcj1mdW5jdGlvbigpe0V8fChFPXcuc2V0VGltZW91dChmdW5jdGlvbigpe0d8fEooeC5lZygxMDA2LFwiSlNPTlAgc2NyaXB0IGxvYWRlZCBhYm5vcm1hbGx5IChvbmVycm9yKVwiKSl9LFxuMUUzKSl9O0kub25sb2FkPWZ1bmN0aW9uKCl7Sih4LmVnKDEwMDYsXCJKU09OUCBzY3JpcHQgbG9hZGVkIGFibm9ybWFsbHkgKG9ubG9hZClcIikpfTtJLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKC9sb2FkZWR8Y2xvc2VkLy50ZXN0KEkucmVhZHlTdGF0ZSkpe2lmKEkmJkkuaHRtbEZvciYmSS5vbmNsaWNrKXtHPSEwO3RyeXtJLm9uY2xpY2soKX1jYXRjaChTKXt9fUkmJkooeC5lZygxMDA2LFwiSlNPTlAgc2NyaXB0IGxvYWRlZCBhYm5vcm1hbGx5IChvbnJlYWR5c3RhdGVjaGFuZ2UpXCIpKX19O2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgSS5hc3luYyYmdS5hdHRhY2hFdmVudClpZigvb3BlcmEvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXt2YXIgTT11LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7TS50ZXh0PVwidHJ5IHsgdmFyIGEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnXCIrSS5pZCtcIicpOyBpZiAoYSkgeyBhLm9uZXJyb3IoKTsgfSB9IGNhdGNoICh4KSB7IH07XCI7XG5JLmFzeW5jPU0uYXN5bmM9ITF9ZWxzZXt0cnl7SS5odG1sRm9yPUkuaWQsSS5ldmVudD1cIm9uY2xpY2tcIn1jYXRjaChTKXt9SS5hc3luYz0hMH1cInVuZGVmaW5lZFwiIT09dHlwZW9mIEkuYXN5bmMmJihJLmFzeW5jPSEwKTt2YXIgTz13LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtKKHguZWcoMTAwNixcIkpTT05QIHNjcmlwdCBsb2FkZWQgYWJub3JtYWxseSAodGltZW91dClcIikpfSw2NUUzKTt6PXUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO3ouaW5zZXJ0QmVmb3JlKEksei5maXJzdENoaWxkKTtNJiZ6Lmluc2VydEJlZm9yZShNLHouZmlyc3RDaGlsZCk7cmV0dXJuIEp9ZnVuY3Rpb24gYSh6KXtyZXR1cm4gZnVuY3Rpb24oQSxKLEkpe0E9eC5hZGRQYXRoKEEsXCIveGhyX3NlbmRcIik7KG5ldyB6KFwiUE9TVFwiLEEsSikpLm9uZmluaXNoPWZ1bmN0aW9uKEcpe0koMjAwPT09R3x8MjA0PT09RyxcImh0dHAgc3RhdHVzIFwiK0cpfTtyZXR1cm4gZnVuY3Rpb24oRyl7SSghMSxHKX19fVxuZnVuY3Rpb24gYih6LEEsSil7ZnVuY3Rpb24gSSgpe08ub25lcnJvciYmKE8ub25yZWFkeXN0YXRlY2hhbmdlPU8ub25lcnJvcj1PLm9ubG9hZD1udWxsLHguZGVsYXkoNTAwLGZ1bmN0aW9uKCl7Ty5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKE8pO089bnVsbH0pLEUudmFsdWU9XCJcIixKKCEwKSl9aWYoIShcIl9zZW5kX2Zvcm1cImluIHRoaXMpKXt2YXIgRz10aGlzLkxGPXUuY3JlYXRlRWxlbWVudChcImZvcm1cIik7dmFyIEU9dGhpcy5LRj11LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtFLm5hbWU9XCJkXCI7Ry5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO0cuc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiO0cubWV0aG9kPVwiUE9TVFwiO0cuZW5jdHlwZT1cImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiO0cuYWNjZXB0Q2hhcnNldD1cIlVURi04XCI7Ry5hcHBlbmRDaGlsZChFKTt1LmJvZHkuYXBwZW5kQ2hpbGQoRyl9Rz10aGlzLkxGO0U9dGhpcy5LRjt2YXIgTT1cImFcIit4LnhnKDgpO0cudGFyZ2V0PVxuTTt6PXguYWRkUGF0aCh6LFwiL2pzb25wX3NlbmRcIik7ej14LkxtKHosXCJpPVwiK00pO0cuYWN0aW9uPXo7dHJ5e3ZhciBPPXUuY3JlYXRlRWxlbWVudCgnPGlmcmFtZSBuYW1lPVwiJytNKydcIj4nKX1jYXRjaChTKXtPPXUuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKSxPLm5hbWU9TX1PLmlkPU07Ry5hcHBlbmRDaGlsZChPKTtPLnN0eWxlLmRpc3BsYXk9XCJub25lXCI7dHJ5e0UudmFsdWU9QX1jYXRjaChTKXt4LmxvZyhcIllvdXIgYnJvd3NlciBpcyBzZXJpb3VzbHkgYnJva2VuLiBHbyBob21lISBcIitTLm1lc3NhZ2UpfUcuc3VibWl0KCk7Ty5vbmVycm9yPU8ub25sb2FkPUk7Ty5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtcImNvbXBsZXRlXCI9PU8ucmVhZHlTdGF0ZSYmSSgpfTtyZXR1cm4gSX1mdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGgoeixBLEope2lmKHRoaXM9PT13KXJldHVybiBuZXcgaCh6LEEsSik7dmFyIEk7dGhpcy5MPXtkZXZlbDohMSxkZWJ1ZzohMSxwcm90b2NvbHNfd2hpdGVsaXN0OltdLFxuaW5mbzp7d2Vic29ja2V0OiEwLGNvb2tpZV9uZWVkZWQ6ITF9LHJ0dDoxRTN9O0omJnguYU4odGhpcy5MLEopO0E9dGhpcy5MLmluZm87Sj10aGlzLkwucnR0O3RoaXMucnE9eC56SCh6KTt0aGlzLk5GPXRoaXMuTC5zZXJ2ZXJ8fHguQk4oKTt0aGlzLkwucHJvdG9jb2xzX3doaXRlbGlzdCYmdGhpcy5MLnByb3RvY29sc193aGl0ZWxpc3QubGVuZ3RoJiYoST10aGlzLkwucHJvdG9jb2xzX3doaXRlbGlzdCk7dGhpcy5hbT1bXTt0aGlzLnByb3RvY29sPW51bGw7dGhpcy5yZWFkeVN0YXRlPWguQ09OTkVDVElORztBPyh0aGlzLkJ5KEEsSixJKSx0aGlzLkVkKCkpOnRoaXMuRWQoMTAwMixcIkNhbid0IGNvbm5lY3QgdG8gc2VydmVyXCIsITApfWZ1bmN0aW9uIGsoKXt9ZnVuY3Rpb24gbCgpe2Zvcih2YXIgeiBpbiBLKUtbel0oKSxkZWxldGUgS1t6XX1mdW5jdGlvbiBtKHope3ZhciBBLEo9e30sST1bXTtmb3IoQT0wOzY1NTM2PkE7QSsrKUkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKEEpKTtcbnoubGFzdEluZGV4PTA7SS5qb2luKFwiXCIpLnJlcGxhY2UoeixmdW5jdGlvbihHKXtKW0ddPVwiXFxcXHVcIisoXCIwMDAwXCIrRy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpO3JldHVyblwiXCJ9KTt6Lmxhc3RJbmRleD0wO3JldHVybiBKfWZ1bmN0aW9uIG4oeil7dGhpcy56YT16fHxbXTt0aGlzLlo9e319ZnVuY3Rpb24gcih6LEEpe3RoaXMudHlwZT16O2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgQSlmb3IodmFyIEogaW4gQSlBLmhhc093blByb3BlcnR5KEopJiYodGhpc1tKXT1BW0pdKX1mdW5jdGlvbiBxKCl7fXZhciB1PWRvY3VtZW50LHc9d2luZG93LHg9e307cS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih6LEEpe3RoaXMuWnx8KHRoaXMuWj17fSk7eiBpbiB0aGlzLlp8fCh0aGlzLlpbel09W10pO3o9dGhpcy5aW3pdOy0xPT09eC56aih6LEEpJiZ6LnB1c2goQSl9O3EucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oeixBKXtpZih0aGlzLlomJlxueiBpbiB0aGlzLlope3ZhciBKPXRoaXMuWlt6XTtBPXguemooSixBKTstMSE9PUEmJigxPEoubGVuZ3RoP3RoaXMuWlt6XT1KLnNsaWNlKDAsQSkuY29uY2F0KEouc2xpY2UoQSsxKSk6ZGVsZXRlIHRoaXMuWlt6XSl9fTtxLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHope3ZhciBBPXoudHlwZSxKPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTt0aGlzW1wib25cIitBXSYmdGhpc1tcIm9uXCIrQV0uYXBwbHkodGhpcyxKKTtpZih0aGlzLlomJkEgaW4gdGhpcy5aKWZvcih2YXIgST0wO0k8dGhpcy5aW0FdLmxlbmd0aDtJKyspdGhpcy5aW0FdW0ldLmFwcGx5KHRoaXMsSil9O3IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHo9W10sQTtmb3IoQSBpbiB0aGlzKWlmKHRoaXMuaGFzT3duUHJvcGVydHkoQSkpe3ZhciBKPXRoaXNbQV07XCJmdW5jdGlvblwiPT09dHlwZW9mIEomJihKPVwiW2Z1bmN0aW9uXVwiKTt6LnB1c2goQStcIj1cIitKKX1yZXR1cm5cIlNpbXBsZUV2ZW50KFwiK1xuei5qb2luKFwiLCBcIikrXCIpXCJ9O24ucHJvdG90eXBlLmY9ZnVuY3Rpb24oeil7dGhpcy5Gcyh6KTtpZighdGhpcy5Fcil7dmFyIEE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3RoaXNbXCJvblwiK3pdJiZ0aGlzW1wib25cIit6XS5hcHBseSh0aGlzLEEpO2lmKHogaW4gdGhpcy5aKWZvcih2YXIgSj0wO0o8dGhpcy5aW3pdLmxlbmd0aDtKKyspdGhpcy5aW3pdW0pdLmFwcGx5KHRoaXMsQSl9fTtuLnByb3RvdHlwZS51PWZ1bmN0aW9uKHosQSl7dGhpcy5Gcyh6KTt0aGlzLkVyfHwoeiBpbiB0aGlzLlp8fCh0aGlzLlpbel09W10pLHRoaXMuWlt6XS5wdXNoKEEpKX07bi5wcm90b3R5cGUuRnM9ZnVuY3Rpb24oeil7LTE9PT14LnpqKHRoaXMuemEseikmJngubG9nKFwiRXZlbnQgXCIrSlNPTi5zdHJpbmdpZnkoeikrXCIgbm90IGxpc3RlZCBcIitKU09OLnN0cmluZ2lmeSh0aGlzLnphKStcIiBpbiBcIit0aGlzKX07bi5wcm90b3R5cGUuZ3Y9ZnVuY3Rpb24oKXt0aGlzLkVyPSEwO1xuZm9yKHZhciB6PTA7ejx0aGlzLnphLmxlbmd0aDt6KyspZGVsZXRlIHRoaXNbdGhpcy56YVt6XV07dGhpcy5aPXt9fTt4LnhnPWZ1bmN0aW9uKHope3ZhciBBPUF8fDM3O3ZhciBKLEk9W107Zm9yKEo9MDtKPHo7SisrKUkucHVzaChcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV9cIi5zdWJzdHIoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKkEpLDEpKTtyZXR1cm4gSS5qb2luKFwiXCIpfTt4LkFOPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZmxvb3IoMUUzKk1hdGgucmFuZG9tKCkpfTt4LkJOPWZ1bmN0aW9uKCl7cmV0dXJuKEFycmF5KDQpLmpvaW4oXCIwXCIpK3guQU4oKSkuc2xpY2UoLTMpfTt4LmFkZFBhdGg9ZnVuY3Rpb24oeixBKXt6PXouc3BsaXQoXCI/XCIpO3JldHVybiB6WzBdK0ErKHpbMV0/XCI/XCIrelsxXTpcIlwiKX07eC5MbT1mdW5jdGlvbih6LEEpe3JldHVybiB6KygtMT09PXouaW5kZXhPZihcIj9cIik/XCI/XCIrQTpcIiZcIitBKX07eC5hTj1mdW5jdGlvbih6LEEpe2Zvcih2YXIgSiBpbiBBKUEuaGFzT3duUHJvcGVydHkoSikmJlxuKHpbSl09QVtKXSl9O3gucU49ZnVuY3Rpb24oKXtcIl9qcFwiaW4gd3x8KHcuX2pwPXt9KX07eC5lZz1mdW5jdGlvbih6LEEpe3JldHVyblwiY1wiK0pTT04uc3RyaW5naWZ5KFt6LEFdKX07eC5Zbz1mdW5jdGlvbih6KXtyZXR1cm4gMUUzPT09enx8M0UzPD16JiY0OTk5Pj16fTt4LnhJPWZ1bmN0aW9uKHope3JldHVybiAxMDA8ej8zKno6eisyMDB9O3gubG9nPWZ1bmN0aW9uKCl7dy5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2cuYXBwbHkmJmNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsYXJndW1lbnRzKX07eC5DSz1mdW5jdGlvbih6KXtyZXR1cm4tMT09PXouaW5kZXhPZihcIiNcIil9O3guekg9ZnVuY3Rpb24oeil7dmFyIEE9dS5sb2NhdGlvbjtpZigheil0aHJvdyBFcnJvcihcImFtZW5kVXJsOiBObyBVUkwgcHJvdmlkZWRcIik7aWYoIXguQ0soeikpdGhyb3cgRXJyb3IoXCJhbWVuZFVybDogT25seSBiYXNpYyB1cmxzIGFyZSBzdXBwb3J0ZWRcIik7MD09PXouaW5kZXhPZihcIi8vXCIpJiZcbih6PUEucHJvdG9jb2wreik7MD09PXouaW5kZXhPZihcIi9cIikmJih6PUEucHJvdG9jb2wrXCIvL1wiK0EuaG9zdCt6KTtyZXR1cm4gej16LnJlcGxhY2UoL1tcXC9dKyQvLFwiXCIpfTt4LnpqPWZ1bmN0aW9uKHosQSl7Zm9yKHZhciBKPTA7Sjx6Lmxlbmd0aDtKKyspaWYoeltKXT09PUEpcmV0dXJuIEo7cmV0dXJuLTF9O3guJFM9ZnVuY3Rpb24oeixBKXtBPXguemooeixBKTtyZXR1cm4tMT09PUE/ei5zbGljZSgpOnouc2xpY2UoMCxBKS5jb25jYXQoei5zbGljZShBKzEpKX07eC5pc0FycmF5PUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHope3JldHVybiAwPD17fS50b1N0cmluZy5jYWxsKHopLmluZGV4T2YoXCJBcnJheVwiKX07eC5kZWxheT1mdW5jdGlvbih6LEEpe1wiZnVuY3Rpb25cIj09PXR5cGVvZiB6JiYoQT16LHo9MCk7cmV0dXJuIHcuc2V0VGltZW91dChBLHopfTt2YXIgQz0vW1xceDAwLVxceDFmXFx1ZDgwMC1cXHVkZmZmXFx1ZmZmZVxcdWZmZmZcXHUwMzAwLVxcdTAzMzNcXHUwMzNkLVxcdTAzNDZcXHUwMzRhLVxcdTAzNGNcXHUwMzUwLVxcdTAzNTJcXHUwMzU3LVxcdTAzNThcXHUwMzVjLVxcdTAzNjJcXHUwMzc0XFx1MDM3ZVxcdTAzODdcXHUwNTkxLVxcdTA1YWZcXHUwNWM0XFx1MDYxMC1cXHUwNjE3XFx1MDY1My1cXHUwNjU0XFx1MDY1Ny1cXHUwNjViXFx1MDY1ZC1cXHUwNjVlXFx1MDZkZi1cXHUwNmUyXFx1MDZlYi1cXHUwNmVjXFx1MDczMFxcdTA3MzItXFx1MDczM1xcdTA3MzUtXFx1MDczNlxcdTA3M2FcXHUwNzNkXFx1MDczZi1cXHUwNzQxXFx1MDc0M1xcdTA3NDVcXHUwNzQ3XFx1MDdlYi1cXHUwN2YxXFx1MDk1MVxcdTA5NTgtXFx1MDk1ZlxcdTA5ZGMtXFx1MDlkZFxcdTA5ZGZcXHUwYTMzXFx1MGEzNlxcdTBhNTktXFx1MGE1YlxcdTBhNWVcXHUwYjVjLVxcdTBiNWRcXHUwZTM4LVxcdTBlMzlcXHUwZjQzXFx1MGY0ZFxcdTBmNTJcXHUwZjU3XFx1MGY1Y1xcdTBmNjlcXHUwZjcyLVxcdTBmNzZcXHUwZjc4XFx1MGY4MC1cXHUwZjgzXFx1MGY5M1xcdTBmOWRcXHUwZmEyXFx1MGZhN1xcdTBmYWNcXHUwZmI5XFx1MTkzOS1cXHUxOTNhXFx1MWExN1xcdTFiNmJcXHUxY2RhLVxcdTFjZGJcXHUxZGMwLVxcdTFkY2ZcXHUxZGZjXFx1MWRmZVxcdTFmNzFcXHUxZjczXFx1MWY3NVxcdTFmNzdcXHUxZjc5XFx1MWY3YlxcdTFmN2RcXHUxZmJiXFx1MWZiZVxcdTFmYzlcXHUxZmNiXFx1MWZkM1xcdTFmZGJcXHUxZmUzXFx1MWZlYlxcdTFmZWUtXFx1MWZlZlxcdTFmZjlcXHUxZmZiXFx1MWZmZFxcdTIwMDAtXFx1MjAwMVxcdTIwZDAtXFx1MjBkMVxcdTIwZDQtXFx1MjBkN1xcdTIwZTctXFx1MjBlOVxcdTIxMjZcXHUyMTJhLVxcdTIxMmJcXHUyMzI5LVxcdTIzMmFcXHUyYWRjXFx1MzAyYi1cXHUzMDJjXFx1YWFiMi1cXHVhYWIzXFx1ZjkwMC1cXHVmYTBkXFx1ZmExMFxcdWZhMTJcXHVmYTE1LVxcdWZhMWVcXHVmYTIwXFx1ZmEyMlxcdWZhMjUtXFx1ZmEyNlxcdWZhMmEtXFx1ZmEyZFxcdWZhMzAtXFx1ZmE2ZFxcdWZhNzAtXFx1ZmFkOVxcdWZiMWRcXHVmYjFmXFx1ZmIyYS1cXHVmYjM2XFx1ZmIzOC1cXHVmYjNjXFx1ZmIzZVxcdWZiNDAtXFx1ZmI0MVxcdWZiNDMtXFx1ZmI0NFxcdWZiNDYtXFx1ZmI0ZVxcdWZmZjAtXFx1ZmZmZl0vZyxcbkQ7eC5xdW90ZT1mdW5jdGlvbih6KXt6PUpTT04uc3RyaW5naWZ5KHopO0MubGFzdEluZGV4PTA7aWYoIUMudGVzdCh6KSlyZXR1cm4gejtEfHwoRD1tKEMpKTtyZXR1cm4gei5yZXBsYWNlKEMsZnVuY3Rpb24oQSl7cmV0dXJuIERbQV19KX07dmFyIEI9W1wid2Vic29ja2V0XCIsXCJ4aHItc3RyZWFtaW5nXCIsXCJqc29ucC1wb2xsaW5nXCJdO3gudU49ZnVuY3Rpb24oKXtmb3IodmFyIHo9e30sQT0wO0E8Qi5sZW5ndGg7QSsrKXt2YXIgSj1CW0FdO3pbSl09aFtKXSYmaFtKXS5lbmFibGVkKCl9cmV0dXJuIHp9O3guYUs9ZnVuY3Rpb24oeixBLEope3ZhciBJPXt9LEc9W107QXx8KEE9Qik7Zm9yKHZhciBFPTA7RTxBLmxlbmd0aDtFKyspe3ZhciBNPUFbRV07SVtNXT16W01dfSExIT09Si53ZWJzb2NrZXQmJkkud2Vic29ja2V0JiZHLnB1c2goXCJ3ZWJzb2NrZXRcIik7SVtcInhoci1zdHJlYW1pbmdcIl0mJiFKLm51bGxfb3JpZ2luJiZHLnB1c2goXCJ4aHItc3RyZWFtaW5nXCIpO0lbXCJqc29ucC1wb2xsaW5nXCJdJiZcbkcucHVzaChcImpzb25wLXBvbGxpbmdcIik7cmV0dXJuIEd9O3guZlQ9ZnVuY3Rpb24oKXt2YXIgej1cImFcIit4LnhnKDgpO2lmKCEoXCJfc29ja2pzX2dsb2JhbFwiaW4gdykpe3ZhciBBPXt9O3cuX3NvY2tqc19nbG9iYWw9ZnVuY3Rpb24oSil7SiBpbiBBfHwoQVtKXT17aWQ6SixBdDpmdW5jdGlvbigpe2RlbGV0ZSBBW0pdfX0pO3JldHVybiBBW0pdfX1yZXR1cm4gdy5fc29ja2pzX2dsb2JhbCh6KX07eC5hdHRhY2hFdmVudD1mdW5jdGlvbih6LEEpe1widW5kZWZpbmVkXCIhPT10eXBlb2Ygdy5hZGRFdmVudExpc3RlbmVyP3cuYWRkRXZlbnRMaXN0ZW5lcih6LEEsITEpOih1LmF0dGFjaEV2ZW50KFwib25cIit6LEEpLHcuYXR0YWNoRXZlbnQoXCJvblwiK3osQSkpfTt4LmRldGFjaEV2ZW50PWZ1bmN0aW9uKHosQSl7XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiB3LmFkZEV2ZW50TGlzdGVuZXI/dy5yZW1vdmVFdmVudExpc3RlbmVyKHosQSwhMSk6KHUuZGV0YWNoRXZlbnQoXCJvblwiK3osQSksdy5kZXRhY2hFdmVudChcIm9uXCIrXG56LEEpKX07dmFyIEs9e30sRj0hMTt4LmF0dGFjaEV2ZW50KFwidW5sb2FkXCIsZnVuY3Rpb24oKXtGfHwoRj0hMCxsKCkpfSk7eC5Xdj1mdW5jdGlvbih6KXt2YXIgQT14LnhnKDgpO0tbQV09ejtGJiZ4LmRlbGF5KGwpO3JldHVybiBBfTt4Llh2PWZ1bmN0aW9uKHope3ogaW4gSyYmZGVsZXRlIEtbel19O2sucHJvdG90eXBlPW5ldyBuKFtcImNodW5rXCIsXCJmaW5pc2hcIl0pO2sucHJvdG90eXBlLnhHPWZ1bmN0aW9uKHosQSxKLEkpe3ZhciBHPXRoaXM7dHJ5e0cuSWI9bmV3IFhNTEh0dHBSZXF1ZXN0fWNhdGNoKE0pe31pZighRy5JYil0cnl7Ry5JYj1uZXcgdy5BY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIil9Y2F0Y2goTSl7fWlmKHcuQWN0aXZlWE9iamVjdHx8dy5YRG9tYWluUmVxdWVzdClBPXguTG0oQSxcInQ9XCIrRGF0ZS5ub3coKSk7Ry5jaT14Lld2KGZ1bmN0aW9uKCl7Ry51ZSghMCl9KTt0cnl7Ry5JYi5vcGVuKHosQSwhMCl9Y2F0Y2goTSl7Ry5mKFwiZmluaXNoXCIsMCxcblwiXCIpO0cudWUoKTtyZXR1cm59SSYmSS5RVHx8KEcuSWIud2l0aENyZWRlbnRpYWxzPVwidHJ1ZVwiKTtpZihJJiZJLmhlYWRlcnMpZm9yKHZhciBFIGluIEkuaGVhZGVycylHLkliLnNldFJlcXVlc3RIZWFkZXIoRSxJLmhlYWRlcnNbRV0pO0cuSWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoRy5JYil7dmFyIE09Ry5JYjtzd2l0Y2goTS5yZWFkeVN0YXRlKXtjYXNlIDM6dHJ5e3ZhciBPPU0uc3RhdHVzO3ZhciBTPU0ucmVzcG9uc2VUZXh0fWNhdGNoKERhKXt9MTIyMz09PU8mJihPPTIwNCk7UyYmMDxTLmxlbmd0aCYmRy5mKFwiY2h1bmtcIixPLFMpO2JyZWFrO2Nhc2UgNDpPPU0uc3RhdHVzLDEyMjM9PT1PJiYoTz0yMDQpLEcuZihcImZpbmlzaFwiLE8sTS5yZXNwb25zZVRleHQpLEcudWUoITEpfX19O0cuSWIuc2VuZChKKX07ay5wcm90b3R5cGUudWU9ZnVuY3Rpb24oeil7aWYodGhpcy5JYil7eC5Ydih0aGlzLmNpKTt0aGlzLkliLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe307XG5pZih6KXRyeXt0aGlzLkliLmFib3J0KCl9Y2F0Y2goQSl7fXRoaXMuY2k9dGhpcy5JYj1udWxsfX07ay5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLmd2KCk7dGhpcy51ZSghMCl9Oyh4Lkp4PWZ1bmN0aW9uKCl7dmFyIHo9dGhpcyxBPWFyZ3VtZW50czt4LmRlbGF5KGZ1bmN0aW9uKCl7ei54Ry5hcHBseSh6LEEpfSl9KS5wcm90b3R5cGU9bmV3IGs7aC5wcm90b3R5cGU9bmV3IHE7aC52ZXJzaW9uPVwiMC4zLjRcIjtoLkNPTk5FQ1RJTkc9MDtoLk9QRU49MTtoLkNMT1NJTkc9MjtoLkNMT1NFRD0zO2gucHJvdG90eXBlLndsPWZ1bmN0aW9uKCl7dGhpcy5MLmRlYnVnJiZ4LmxvZy5hcHBseSh4LGFyZ3VtZW50cyl9O2gucHJvdG90eXBlLk1BPWZ1bmN0aW9uKCl7dGhpcy5yZWFkeVN0YXRlPT09aC5DT05ORUNUSU5HPyh0aGlzLiRmJiYody5jbGVhclRpbWVvdXQodGhpcy4kZiksdGhpcy4kZj1udWxsKSx0aGlzLnJlYWR5U3RhdGU9aC5PUEVOLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgcihcIm9wZW5cIikpKTpcbnRoaXMuRWQoMTAwNixcIlNlcnZlciBsb3N0IHNlc3Npb25cIil9O2gucHJvdG90eXBlLkxxPWZ1bmN0aW9uKHope3RoaXMucmVhZHlTdGF0ZT09PWguT1BFTiYmdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyByKFwibWVzc2FnZVwiLHtkYXRhOnp9KSl9O2gucHJvdG90eXBlLkxBPWZ1bmN0aW9uKCl7dGhpcy5yZWFkeVN0YXRlPT09aC5PUEVOJiZ0aGlzLmRpc3BhdGNoRXZlbnQobmV3IHIoXCJoZWFydGJlYXRcIix7fSkpfTtoLnByb3RvdHlwZS5FZD1mdW5jdGlvbih6LEEsSil7dmFyIEk9dGhpcztpZihJLnJlYWR5U3RhdGUhPT1oLkNPTk5FQ1RJTkcmJkkucmVhZHlTdGF0ZSE9PWguT1BFTiYmSS5yZWFkeVN0YXRlIT09aC5DTE9TSU5HKXRocm93IEVycm9yKFwiSU5WQUxJRF9TVEFURV9FUlJcIik7SS5nciYmKEkuZ3IuZ3YoKSxJLmdyPW51bGwpO0kub2omJihJLm9qLm5uKCksSS5vaj1udWxsKTt2YXIgRz1uZXcgcihcImNsb3NlXCIse2NvZGU6eixyZWFzb246QSx3YXNDbGVhbjp4LllvKHopfSk7aWYoIXguWW8oeikmJlxuSS5yZWFkeVN0YXRlPT09aC5DT05ORUNUSU5HJiYhSil7aWYoSS56cyhHKSlyZXR1cm47Rz1uZXcgcihcImNsb3NlXCIse2NvZGU6MkUzLHJlYXNvbjpcIkFsbCB0cmFuc3BvcnRzIGZhaWxlZFwiLHdhc0NsZWFuOiExLGxhc3RfZXZlbnQ6R30pfUkucmVhZHlTdGF0ZT1oLkNMT1NFRDt4LmRlbGF5KGZ1bmN0aW9uKCl7SS5kaXNwYXRjaEV2ZW50KEcpfSl9O2gucHJvdG90eXBlLlNpPWZ1bmN0aW9uKHope3N3aXRjaCh6LnNsaWNlKDAsMSkpe2Nhc2UgXCJvXCI6dGhpcy5NQSgpO2JyZWFrO2Nhc2UgXCJhXCI6ej1KU09OLnBhcnNlKHouc2xpY2UoMSl8fFwiW11cIik7Zm9yKHZhciBBPTA7QTx6Lmxlbmd0aDtBKyspdGhpcy5McSh6W0FdKTticmVhaztjYXNlIFwibVwiOno9SlNPTi5wYXJzZSh6LnNsaWNlKDEpfHxcIm51bGxcIik7dGhpcy5McSh6KTticmVhaztjYXNlIFwiY1wiOno9SlNPTi5wYXJzZSh6LnNsaWNlKDEpfHxcIltdXCIpO3RoaXMuRWQoelswXSx6WzFdKTticmVhaztjYXNlIFwiaFwiOnRoaXMuTEEoKX19O1xuaC5wcm90b3R5cGUuenM9ZnVuY3Rpb24oeil7dmFyIEE9dGhpcztBLnByb3RvY29sJiYoQS53bChcIkNsb3NlZCB0cmFuc3BvcnQ6XCIsQS5wcm90b2NvbCxcIlwiK3opLEEucHJvdG9jb2w9bnVsbCk7QS4kZiYmKHcuY2xlYXJUaW1lb3V0KEEuJGYpLEEuJGY9bnVsbCk7Zm9yKDs7KXt6PUEucHJvdG9jb2w9QS5hbS5zaGlmdCgpO2lmKCF6KXJldHVybiExO2lmKGhbel0mJiEwPT09aFt6XS5kdiYmKCF1LmJvZHl8fFwidW5kZWZpbmVkXCIhPT10eXBlb2YgdS5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPT11LnJlYWR5U3RhdGUmJlwiaW50ZXJhY3RpdmVcIiE9PXUucmVhZHlTdGF0ZSkpcmV0dXJuIEEuYW0udW5zaGlmdCh6KSxBLnByb3RvY29sPVwid2FpdGluZy1mb3ItbG9hZFwiLHcuc2V0VGltZW91dChmdW5jdGlvbigpe0EuenMoKX0sMjAwKSwhMDtpZihoW3pdJiZoW3pdLmVuYWJsZWQoQS5MKSl7QS4kZj14LmRlbGF5KChBLkwucnRvfHwwKSooaFt6XS5Ddnx8MSl8fDVFMyxmdW5jdGlvbigpe0EucmVhZHlTdGF0ZT09PVxuaC5DT05ORUNUSU5HJiZBLkVkKDIwMDcsXCJUcmFuc3BvcnQgdGltZW91dGVkXCIpfSk7dmFyIEo9eC54Zyg4KTtKPXguYWRkUGF0aChBLnJxLFwiL1wiK0EuTkYrXCIvXCIrSik7QS53bChcIk9wZW5pbmcgdHJhbnNwb3J0OlwiLHosXCIgdXJsOlwiK0osXCIgUlRPOlwiK0EuTC5ydG8pO0Eub2o9bmV3IGhbel0oQSxKLEEucnEpO3JldHVybiEwfUEud2woXCJTa2lwcGluZyB0cmFuc3BvcnQ6XCIseil9fTtoLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbih6LEEpe2lmKHomJiF4LllvKHopKXRocm93IEVycm9yKFwiSU5WQUxJRF9BQ0NFU1NfRVJSXCIpO2lmKHRoaXMucmVhZHlTdGF0ZSE9PWguQ09OTkVDVElORyYmdGhpcy5yZWFkeVN0YXRlIT09aC5PUEVOKXJldHVybiExO3RoaXMucmVhZHlTdGF0ZT1oLkNMT1NJTkc7dGhpcy5FZCh6fHwxRTMsQXx8XCJOb3JtYWwgY2xvc3VyZVwiKTtyZXR1cm4hMH07aC5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbih6KXtpZih0aGlzLnJlYWR5U3RhdGU9PT1oLkNPTk5FQ1RJTkcpdGhyb3cgRXJyb3IoXCJJTlZBTElEX1NUQVRFX0VSUlwiKTtcbnRoaXMucmVhZHlTdGF0ZT09PWguT1BFTiYmdGhpcy5vai5EdCh4LnF1b3RlKFwiXCIreikpO3JldHVybiEwfTtoLnByb3RvdHlwZS5CeT1mdW5jdGlvbih6LEEsSil7dGhpcy5MLmluZm89ejt0aGlzLkwucnR0PUE7dGhpcy5MLnJ0bz14LnhJKEEpO3RoaXMuTC5pbmZvLm51bGxfb3JpZ2luPSF1LmRvbWFpbjtBPXgudU4oKTt0aGlzLmFtPXguYUsoQSxKLHopfTt2YXIgTD1oLndlYnNvY2tldD1mdW5jdGlvbih6LEEpe3ZhciBKPXRoaXM7QT14LmFkZFBhdGgoQSxcIi93ZWJzb2NrZXRcIik7QT1cImh0dHBzXCI9PT1BLnNsaWNlKDAsNSk/XCJ3c3NcIitBLnNsaWNlKDUpOlwid3NcIitBLnNsaWNlKDQpO0oueWI9ejtKLnVybD1BO0ouRGc9bmV3ICh3LldlYlNvY2tldHx8dy5Nb3pXZWJTb2NrZXQpKEoudXJsKTtKLkRnLm9ubWVzc2FnZT1mdW5jdGlvbihJKXtKLnliLlNpKEkuZGF0YSl9O0ouY2k9eC5XdihmdW5jdGlvbigpe0ouRGcuY2xvc2UoKX0pO0ouRGcub25jbG9zZT1mdW5jdGlvbigpe0oueWIuU2koeC5lZygxMDA2LFxuXCJXZWJTb2NrZXQgY29ubmVjdGlvbiBicm9rZW5cIikpfX07TC5wcm90b3R5cGUuRHQ9ZnVuY3Rpb24oeil7dGhpcy5EZy5zZW5kKFwiW1wiK3orXCJdXCIpfTtMLnByb3RvdHlwZS5ubj1mdW5jdGlvbigpe3ZhciB6PXRoaXMuRGc7eiYmKHoub25tZXNzYWdlPXoub25jbG9zZT1udWxsLHouY2xvc2UoKSx4Llh2KHRoaXMuY2kpLHRoaXMuY2k9dGhpcy55Yj10aGlzLkRnPW51bGwpfTtMLmVuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hKCF3LldlYlNvY2tldCYmIXcuTW96V2ViU29ja2V0KX07TC5Ddj0yO2QucHJvdG90eXBlLkZ2PWZ1bmN0aW9uKHope3RoaXMuRms9W107dGhpcy5zZW5kZXI9en07ZC5wcm90b3R5cGUuRHQ9ZnVuY3Rpb24oeil7dGhpcy5Gay5wdXNoKHopO3RoaXMuWGh8fHRoaXMuR3YoKX07ZC5wcm90b3R5cGUuWU49ZnVuY3Rpb24oKXt2YXIgej10aGlzO3ouWGg9ZnVuY3Rpb24oKXt6LlhoPW51bGw7dy5jbGVhclRpbWVvdXQoQSl9O3ZhciBBPXguZGVsYXkoMjUsZnVuY3Rpb24oKXt6LlhoPVxubnVsbDt6Lkd2KCl9KX07ZC5wcm90b3R5cGUuR3Y9ZnVuY3Rpb24oKXt2YXIgej10aGlzOzA8ei5Gay5sZW5ndGgmJih6LlhoPXouc2VuZGVyKHouVm8sXCJbXCIrei5Gay5qb2luKFwiLFwiKStcIl1cIixmdW5jdGlvbihBLEope3ouWGg9bnVsbDshMT09PUE/ei55Yi5FZCgxMDA2LFwiU2VuZGluZyBlcnJvciBcIitKKTp6LllOKCl9KSx6LkZrPVtdKX07ZC5wcm90b3R5cGUuWE49ZnVuY3Rpb24oKXt0aGlzLm1zJiZ0aGlzLm1zKCk7dGhpcy5tcz1udWxsfTtMPWhbXCJqc29ucC1wb2xsaW5nXCJdPWZ1bmN0aW9uKHosQSl7eC5xTigpO3RoaXMueWI9ejt0aGlzLlZvPUE7dGhpcy5GdihiKTt0aGlzLmpzKCl9O0wucHJvdG90eXBlPW5ldyBkO0wucHJvdG90eXBlLmpzPWZ1bmN0aW9uKCl7dmFyIHo9dGhpczt6LmlqPWYoeC5hZGRQYXRoKHouVm8sXCIvanNvbnBcIiksYyxmdW5jdGlvbihBKXt6LmlqPW51bGw7QSYmKHoubnJ8fHoueWIuU2koQSkpO3oubnJ8fHouanMoKX0pfTtMLmVuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07XG5MLmR2PSEwO0wucHJvdG90eXBlLm5uPWZ1bmN0aW9uKCl7dGhpcy5ucj0hMDt0aGlzLmlqJiZ0aGlzLmlqKCk7dGhpcy55Yj10aGlzLmlqPW51bGw7dGhpcy5YTigpfTtlLnByb3RvdHlwZT1uZXcgZDtlLnByb3RvdHlwZS5RYT1mdW5jdGlvbih6LEEsSixJLEcpe3RoaXMueWI9ejt0aGlzLlZvPUE7dGhpcy5GdihhKEcpKTt0aGlzLmRmPW5ldyBwKHosSSx4LmFkZFBhdGgoQSxKKSxHKX07ZS5wcm90b3R5cGUubm49ZnVuY3Rpb24oKXt0aGlzLmRmJiYodGhpcy5kZi5hYm9ydCgpLHRoaXMuZGY9bnVsbCl9O0w9aFtcInhoci1zdHJlYW1pbmdcIl09ZnVuY3Rpb24oeixBKXt0aGlzLlFhKHosQSxcIi94aHJfc3RyZWFtaW5nXCIsdix4Lkp4KX07TC5wcm90b3R5cGU9bmV3IGU7TC5lbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHcuWE1MSHR0cFJlcXVlc3QmJlwid2l0aENyZWRlbnRpYWxzXCJpbiBuZXcgWE1MSHR0cFJlcXVlc3QmJiEvb3BlcmEvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfTtcbkwuQ3Y9MjtMLmR2PSEwO3AucHJvdG90eXBlLmhzPWZ1bmN0aW9uKCl7dmFyIHo9dGhpcyxBPXouZGY9bmV3IHoudXgoei5ETix6LnZ3KTtBLm9ubWVzc2FnZT1mdW5jdGlvbihKKXt6LnliLlNpKEouZGF0YSl9O0Eub25jbG9zZT1mdW5jdGlvbihKKXt6LmRmPUE9QS5vbm1lc3NhZ2U9QS5vbmNsb3NlPW51bGw7ei5wTnx8KFwicGVybWFuZW50XCI9PT1KLnJlYXNvbj96LnliLkVkKDEwMDYsXCJQb2xsaW5nIGVycm9yIChcIitKLnJlYXNvbitcIilcIik6ei5ocygpKX19O3AucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKCl7dGhpcy5wTj0hMDt0aGlzLmRmJiZ0aGlzLmRmLmFib3J0KCl9O3YucHJvdG90eXBlPW5ldyBxO3YucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKCl7dGhpcy5xZiYmKHRoaXMucWYuY2xvc2UoKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IHIoXCJjbG9zZVwiLHtyZWFzb246XCJ1c2VyXCJ9KSksdGhpcy5xZj1udWxsKX07aC55VD1mdW5jdGlvbigpe3JldHVybiB4fTtyZXR1cm4gaH0oKTtcbnQuZGVmYXVsdD1nfSx7fV0sMTU1OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1nKDI1MCk7XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBXZWFrTWFwJiZnLmRlZmF1bHQudGcoV2Vha01hcCl8fGZ1bmN0aW9uKHYpe2Z1bmN0aW9uIHAoKXt0aGlzLm5hbWU9XCJfX3N0XCIrKDFFOSpNYXRoLnJhbmRvbSgpPj4+MCkrKGYrKyArXCJfX1wiKX12YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHksZj1EYXRlLm5vdygpJTFFOTtwLnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKGMsYSl7dmFyIGI9Y1t0aGlzLm5hbWVdO2ImJmJbMF09PT1jP2JbMV09YTplKGMsdGhpcy5uYW1lLHt2YWx1ZTpbYyxhXSx3cml0YWJsZTohMH0pfSxnZXQ6ZnVuY3Rpb24oYyl7dmFyIGE7cmV0dXJuKGE9Y1t0aGlzLm5hbWVdKSYmYVswXT09PWM/YVsxXTp2b2lkIDB9LEF0OmZ1bmN0aW9uKGMpe3ZhciBhPWNbdGhpcy5uYW1lXTtpZighYSlyZXR1cm4hMTtjPVxuYVswXT09PWM7YVswXT1hWzFdPXZvaWQgMDtyZXR1cm4gY30saGFzOmZ1bmN0aW9uKGMpe3ZhciBhPWNbdGhpcy5uYW1lXTtyZXR1cm4gYT9hWzBdPT09YzohMX19O3AucHJvdG90eXBlW1wiZGVsZXRlXCJdPXAucHJvdG90eXBlLkF0O3AucHJvdG90eXBlLmhhcz1wLnByb3RvdHlwZS5oYXM7di5XZWFrTWFwPXB9KHdpbmRvdyl9LHsyNTA6MjUwfV0sMTU2OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYocCxlKXt0aGlzLlBmPXAubEg7dGhpcy5UQz10aGlzLlBmLnN0eWxlLmNzc1RleHQ7dGhpcy5hPWV9di5wcm90b3R5cGUuJEw9ZnVuY3Rpb24oKXt0aGlzLmEuYi5vYSh0aGlzLlBmLHt3aWR0aDowLGhlaWdodDowfSl9O3YucHJvdG90eXBlLlJOPWZ1bmN0aW9uKCl7dGhpcy5QZi5zdHlsZS5jc3NUZXh0PXRoaXMuVEM7cmV0dXJuIHRoaXN9O3YucHJvdG90eXBlLlhuPWZ1bmN0aW9uKHAsXG5lKXt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIGY9dGhpcy5QZi5jb250ZW50V2luZG93LmRvY3VtZW50O2U/dGhpcy5hLmIuQ3UodGhpcy5QZixwKTp0aGlzLmEuYi53byhmLmJvZHkscCl9O3JldHVybiB2fSgpO3QuZGVmYXVsdD1ILkpSPWd9LHt9XSwxNTc6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdjt5PWcoMjQ3KTt2YXIgcD1nKDcxKSxlPWcoMTA3KSxmPWcoMjI0KSxjPWcoMTY3KSxhPWcoMTcwKSxiPWcoMjUwKTtnKDE1NSk7dmFyIGQ9Zi5kZWZhdWx0LlpwLGg9KHY9e30sdlt5LkR4LiRiXT1cInByZWJpZGRlclBhcmFtc1wiLHYpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKG0sbixyKXt2YXIgcT10aGlzO3RoaXMua2I9bTt0aGlzLlFsPXI7dGhpcy5Jcz1uZXcgV2Vha01hcDt0aGlzLkRtPVtdO3RoaXMuVD1udWxsO3RoaXMuS2I9e3dhdGVyZmFsbHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHEuTUUoKX0sXG5lbnRyeXJlcXVlc3RzdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdT1bXSx3PTA7dzxhcmd1bWVudHMubGVuZ3RoO3crKyl1W3ddPWFyZ3VtZW50c1t3XTtyZXR1cm4gcS5TRC5hcHBseShxLHUpfSxlbnRyeWZpbGw6ZnVuY3Rpb24oKXtmb3IodmFyIHU9W10sdz0wO3c8YXJndW1lbnRzLmxlbmd0aDt3KyspdVt3XT1hcmd1bWVudHNbd107cmV0dXJuIHEuUUQuYXBwbHkocSx1KX0sZW50cnlub2ZpbGw6ZnVuY3Rpb24oKXtmb3IodmFyIHU9W10sdz0wO3c8YXJndW1lbnRzLmxlbmd0aDt3KyspdVt3XT1hcmd1bWVudHNbd107cmV0dXJuIHEuUkQuYXBwbHkocSx1KX0sdmlld2FibGVhZHNsb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gcS5iRSgpfSx0YXJnZXRpbmd1cGRhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIHU9W10sdz0wO3c8YXJndW1lbnRzLmxlbmd0aDt3KyspdVt3XT1hcmd1bWVudHNbd107cmV0dXJuIHEuYUUuYXBwbHkocSx1KX0sZGlhZ25vc3RpY3M6ZnVuY3Rpb24oKXtmb3IodmFyIHU9XG5bXSx3PTA7dzxhcmd1bWVudHMubGVuZ3RoO3crKyl1W3ddPWFyZ3VtZW50c1t3XTtyZXR1cm4gcS5QRC5hcHBseShxLHUpfSxiZW5jaG1hcmtzOmZ1bmN0aW9uKCl7Zm9yKHZhciB1PVtdLHc9MDt3PGFyZ3VtZW50cy5sZW5ndGg7dysrKXVbd109YXJndW1lbnRzW3ddO3JldHVybiBxLkxELmFwcGx5KHEsdSl9LGFkYmxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gcS5GRCgpfSxwYXNzYmFjazpmdW5jdGlvbigpe3JldHVybiBxLlpEKCl9fTt0aGlzLlJmPW51bGw7dGhpcy5MPXtxaDowLFBoOm51bGx9O3RoaXMuVmM9bn1sLnByb3RvdHlwZS5Gbz1mdW5jdGlvbihtKXt0aGlzLkwucWg9bTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuSW89ZnVuY3Rpb24obSl7dGhpcy5MLlBoPW07cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLklrPWZ1bmN0aW9uKG0pe3RoaXMuUmY9bTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuT2g9ZnVuY3Rpb24obSl7dGhpcy5UPW07bS5mYSh0aGlzLktiKTtyZXR1cm4gdGhpc307XG5sLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5EbS5mb3JFYWNoKGZ1bmN0aW9uKG0pe3JldHVybiBtLmooKX0pO3RoaXMuVC5PYSh0aGlzLktiKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuY0U9ZnVuY3Rpb24oKXt0aGlzLmtiLnNldChcImNvcnJlbGF0b3JJZFwiLHRoaXMuVC5lYy5DbCk7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLlNEPWZ1bmN0aW9uKG0sbil7dGhpcy5OZihtKS5zZXQoXCJyZWZyZXNoUGFyYW1zXCIse3JzaDpOdW1iZXIobj09PWUuZGVmYXVsdC5IZyl9KTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuUUQ9ZnVuY3Rpb24obSl7dmFyIG49dGhpcy5OZihtKSxyPW0uQ2IscT1tLlZkKCksdT1tLmpjKCkuV2UoKSx3PXUuakg7dT11LnBoO3RoaXMucXIobSxuKTtuLnNldChcImFkUHJvdmlkZXJcIixyLkIoKSkuc2V0KFwiZGlzcGxheWFibGVTaXplc1wiLHIuTS5qb2luKFwiLFwiKSkuc2V0KFwiZWxpZ2liaWxpdHlcIixcImVsaWdpYmxlXCIpLnNldChcInJlbmRlckRlY2lzaW9uXCIsXG5cInllc1wiKS5zZXQoXCJhZFwiLHAuZGVmYXVsdC5qZShxKSkuc2V0KFwidW5pdFwiLHcpLnNldChcImFkVmFyaWF0aW9uXCIsdSkuc2V0KFwibW9uaXRvcnNcIix0aGlzLk1GKCkpLmFiKGMuUi5mcCkucEsoe2FhOnRoaXMuVmMsUk06dGhpcy5RbCxRTjp0aGlzLlJmfSx0aGlzLkwpO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5SRD1mdW5jdGlvbihtLG4scil7dmFyIHE9dGhpcy5OZihtKSx1PW0uQ2I7Yi5kZWZhdWx0LkxoKHIpJiZxLmFwcGVuZChcImFkUmVxdWVzdEVycm9yc1wiLHIpO3RoaXMucXIobSxxKTtxLnNldChcImFkUHJvdmlkZXJcIix1LkIoKSkuc2V0KFwiZGlzcGxheWFibGVTaXplc1wiLHUuTS5qb2luKFwiLFwiKSkuc2V0KFwiZWxpZ2liaWxpdHlcIixuPT09YS5kZWZhdWx0LnpmP1wiaW5lbGlnaWJsZVwiOlwiZWxpZ2libGVcIikuc2V0KFwicmVuZGVyRGVjaXNpb25cIixcIm5vLVwiK24pLnNldChcImZpbHRlclJlYXNvblwiLG0uQW4oKSkuYWIoYy5SLmZwKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuYkU9ZnVuY3Rpb24oKXt0aGlzLmtiLmFiKGMuUi5sdyk7XG5yZXR1cm4gdGhpc307bC5wcm90b3R5cGUuYUU9ZnVuY3Rpb24obSxuLHIpe209dGhpcy5OZihtKTsobj1oW25dKSYmbS5zZXQobixyKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuUEQ9ZnVuY3Rpb24obSxuKXt0aGlzLk5mKG0pLmZjKG4pO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5MRD1mdW5jdGlvbihtLG4pe3RoaXMuTmYobSkuZ2Mobik7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLkZEPWZ1bmN0aW9uKCl7dGhpcy5rYi5hYihjLlIuZXcpO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5aRD1mdW5jdGlvbigpe3RoaXMua2IuYWIoYy5SLmp3KTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuTmY9ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuSXMuZ2V0KG0pfHx0aGlzLmhFKG0pfTtsLnByb3RvdHlwZS5oRT1mdW5jdGlvbihtKXt2YXIgbj10aGlzLlFsLnRoKCk7bj10aGlzLlFsLk9qKG4sdGhpcy5rYik7bj1uZXcgayhtLG4pO3RoaXMuRG0ucHVzaChuKTt0aGlzLklzLnNldChtLG4pO1xucmV0dXJuIG59O2wucHJvdG90eXBlLmVBPWZ1bmN0aW9uKCl7dGhpcy5EbS5mb3JFYWNoKGZ1bmN0aW9uKG0pe3JldHVybiBtLmNsZWFyKCl9KX07bC5wcm90b3R5cGUucXI9ZnVuY3Rpb24obSxuKXtuLnNldChcImV4Y2x1c2lvbnNNYXRjaGVkXCIsbS51bigpLm5vKX07bC5wcm90b3R5cGUuTUU9ZnVuY3Rpb24oKXt0aGlzLmNFKCkuZUEoKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuTUY9ZnVuY3Rpb24oKXt2YXIgbT10aGlzLlJmLmRMKGQudWkpO3JldHVybiBtJiZtLmxlbmd0aD9cImltcDpcIittLmpvaW4oXCIsXCIpOlwiXCJ9O3JldHVybiBsfSgpO3ZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChtLG4pe3RoaXMuZkI9bTt0aGlzLkZlPW47dGhpcy5PZz1udWxsfWwucHJvdG90eXBlLnBLPWZ1bmN0aW9uKG0sbil7dGhpcy5PZ3x8KHRoaXMuT2c9bS5STS5Naih0aGlzLmZCLHRoaXMuRmUpLHRoaXMuT2cuRm8obi5xaCkuSW8obi5QaCkuSWsobS5RTikuTXYoKSl9O2wucHJvdG90eXBlLnNldD1cbmZ1bmN0aW9uKG0sbil7dGhpcy5GZS5zZXQobSxuKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKG0sbil7dGhpcy5GZS5hcHBlbmQobSxuKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuZ2M9ZnVuY3Rpb24obSl7dGhpcy5GZS5nYyhtKX07bC5wcm90b3R5cGUuZmM9ZnVuY3Rpb24obSl7dGhpcy5GZS5mYyhtKX07bC5wcm90b3R5cGUuYWI9ZnVuY3Rpb24obSl7dGhpcy5GZS5hYihtKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLkZlLmNsZWFyKCk7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLk9nJiZ0aGlzLk9nLmooKTtyZXR1cm4gdGhpc307cmV0dXJuIGx9KCk7dC5kZWZhdWx0PWc7SC5UUD1nfSx7MTA3OjEwNywxNTU6MTU1LDE2NzoxNjcsMTcwOjE3MCwyMjQ6MjI0LDI0NzoyNDcsMjUwOjI1MCw3MTo3MX1dLDE1ODpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuWXx8XG5PYmplY3QuYXNzaWdufHxmdW5jdGlvbihmKXtmb3IodmFyIGMsYT0xLGI9YXJndW1lbnRzLmxlbmd0aDthPGI7YSsrKXtjPWFyZ3VtZW50c1thXTtmb3IodmFyIGQgaW4gYylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxkKSYmKGZbZF09Y1tkXSl9cmV0dXJuIGZ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMTY3KSxlPWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihjKXt2YXIgYT1jLmFhLGI9Yy5wUCxkPWMuRCxoPXRoaXM7dGhpcy5taD1jLm9QO3RoaXMuTGQ9Yjt0aGlzLmtsPXtpbXByZXNzaW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciBrPVtdLGw9MDtsPGFyZ3VtZW50cy5sZW5ndGg7bCsrKWtbbF09YXJndW1lbnRzW2xdO3JldHVybiBoLldELmFwcGx5KGgsayl9LHJlbmRlcmVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBrPVtdLGw9MDtsPGFyZ3VtZW50cy5sZW5ndGg7bCsrKWtbbF09YXJndW1lbnRzW2xdO1xucmV0dXJuIGguWEQuYXBwbHkoaCxrKX0sY2xvc2VzdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgaz1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKylrW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gaC5ORC5hcHBseShoLGspfSxjbG9zZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGs9W10sbD0wO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspa1tsXT1hcmd1bWVudHNbbF07cmV0dXJuIGguTUQuYXBwbHkoaCxrKX19O3RoaXMuUmY9bnVsbDt0aGlzLkw9e3FoOjAsUGg6bnVsbCxBSDpkfTt0aGlzLlZjPWF9Zi5wcm90b3R5cGUuRm89ZnVuY3Rpb24oYyl7dGhpcy5MLnFoPWM7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLklvPWZ1bmN0aW9uKGMpe3RoaXMuTC5QaD1jO3JldHVybiB0aGlzfTtmLnByb3RvdHlwZS5Jaz1mdW5jdGlvbihjKXt0aGlzLlJmPWM7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLk12PWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5mRSh7aG92ZXI6cC5SLmd3LGNsaWNrOnAuUi5lcCxpZnJhbWVjbGljazpwLlIuZXAsXG50YXA6cC5SLnF3LHN3aXBlbGVmdDpwLlIubncsc3dpcGVyaWdodDpwLlIub3csc3dpcGV1cDpwLlIucHcsc3dpcGVkb3duOnAuUi5td30sdGhpcy5MZCk7ZS5kZWZhdWx0LmV4dGVuZCh0aGlzLmtsLGMpO3RoaXMubWguamMoKS5mYSh0aGlzLmtsKX07Zi5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMubWguamMoKS5PYSh0aGlzLmtsKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuV0Q9ZnVuY3Rpb24oKXt0aGlzLkxkLmFiKHAuUi5ydyk7dGhpcy5IRCgpO3JldHVybiB0aGlzfTtmLnByb3RvdHlwZS5ORD1mdW5jdGlvbigpe3RoaXMuTGQuYWIocC5SLmZ3KTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuTUQ9ZnVuY3Rpb24oKXt0aGlzLklhKFwiQWQgaGFzIGZpbmlzaGVkIGNsb3NpbmcuXCIpO3JldHVybiB0aGlzfTtmLnByb3RvdHlwZS5YRD1mdW5jdGlvbigpe3RoaXMuSWEoXCJBZCBoYXMgZmluaXNoZWQgb3BlbmluZy5cIik7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLkhEPWZ1bmN0aW9uKCl7dmFyIGM9XG50aGlzLGE9dGhpcy5MZCxiPXRoaXMuTCxkPXRoaXMubWguamMoKTtiLkFILnNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLkpmfHwoYy5zQygpLGEuYWIocC5SLmh3KSl9LGIucWgpfTtmLnByb3RvdHlwZS5LRD1mdW5jdGlvbihjKXtjPXRoaXMuVmMuaXQoYyk7dmFyIGE9Yy5QSygpO2MuVkwoKXx8dGhpcy5ZRCgpO3RoaXMuSUQoYy5OSyh0aGlzLlJmKSxhKTt0aGlzLnBHKHRoaXMuTC5QaCkmJnRoaXMuR0QoYSl9O2YucHJvdG90eXBlLnNDPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5taC5DYi5ZcjtjLkVNKCk/dGhpcy5PRCgpOnRoaXMuS0QoYyl9O2YucHJvdG90eXBlLllEPWZ1bmN0aW9uKCl7dGhpcy5JYShcIldhcm5pbmc6IEFkIGFwcGVhcnMgdG8gaGF2ZSBub24gdmlzaWJsZSBlbGVtZW50cy5cIik7dGhpcy5MZC5mYyh7aXNfYmxhbms6MX0pfTtmLnByb3RvdHlwZS5JRD1mdW5jdGlvbihjLGEpe3RoaXMuTGQuZmMoe2FkX2xlbmd0aDphLmxlbmd0aCxhZF9lbGVtZW50czpjLmpvaW4oXCIsXCIpfSl9O1xuZi5wcm90b3R5cGUucEc9ZnVuY3Rpb24oYyl7cmV0dXJuIG51bGwhPT1jJiZlLmRlZmF1bHQuWXUoMS9jKX07Zi5wcm90b3R5cGUuT0Q9ZnVuY3Rpb24oKXt0aGlzLklhKFwiQ2Fubm90IHJlYWQgdGhlIGNvbnRlbnQgb2YgYSBjcm9zcyBkb21haW4gaWZyYW1lLlwiKTt0aGlzLkxkLmZjKHtpc19zYWZlZnJhbWU6MX0pfTtmLnByb3RvdHlwZS5HRD1mdW5jdGlvbihjKXt0aGlzLkxkLmZjKHthZF9jb250ZW50czpjP1wifHx8XCIrYytcInx8fDtcIjpcIlwifSl9O2YucHJvdG90eXBlLklhPWZ1bmN0aW9uKCl7Zm9yKHZhciBjPVtdLGE9MDthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKWNbYV09YXJndW1lbnRzW2FdO2E9dGhpcy5taC5DYi5CKCkrXCI6XCI7ZS5kZWZhdWx0LmxvZy5hcHBseShlLmRlZmF1bHQsW2FdLmNvbmNhdChjKSk7cmV0dXJuIHRoaXN9O2YucHJvdG90eXBlLmZFPWZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYihkKXtyZXR1cm4gZnVuY3Rpb24oaCxrKXtrJiZhLnNldChcImhvdHNwb3RJZFwiLFxuay50b1N0cmluZygpKTthLmFiKGNbZF0pfX1yZXR1cm4gT2JqZWN0LmtleXMoYykucmVkdWNlKGZ1bmN0aW9uKGQsaCl7dmFyIGs7cmV0dXJuIHYoe30sZCwoaz17fSxrW2hdPWIoaCksaykpfSx7fSl9O3JldHVybiBmfSgpO3QuZGVmYXVsdD1nO0gubVE9Z30sezE2NzoxNjcsMjUwOjI1MH1dLDE1OTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTY5KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChlLGYpe3RoaXMuYmE9ZTt0aGlzLmtiPWY7dGhpcy5SbD17fTt0aGlzLlJsW3YuZGVmYXVsdC5ocF09dGhpcy5rYi5hcHBlbmQ7dGhpcy5SbFt2LmRlZmF1bHQuUXBdPXRoaXMua2Iuc2V0fXAucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLGYpe3RoaXMuYmEuc2V0KGUsZik7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iYS5nZXQoZSl9O3AucHJvdG90eXBlLmFwcGVuZD1cbmZ1bmN0aW9uKGUsZil7dGhpcy5iYS5hcHBlbmQoZSxmKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmJhLmNsZWFyKCk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLmdjPWZ1bmN0aW9uKGUpe3RoaXMuYmEuZ2MoZSl9O3AucHJvdG90eXBlLmZjPWZ1bmN0aW9uKGUpe3RoaXMuYmEuZmMoZSl9O3AucHJvdG90eXBlLmFiPWZ1bmN0aW9uKGUpe3ZhciBmPXt9O3RoaXMudkIoZik7dGhpcy5rYi5hYihlKTt0aGlzLkpHKGYpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5zZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iYS5zZyhlKX07cC5wcm90b3R5cGUudkI9ZnVuY3Rpb24oZSl7dmFyIGY9dGhpcyxjPXRoaXMuYmEuZ2V0QWxsKCk7T2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbihhKXtlW2FdPWYua2IuZ2V0KGEpO2YuUmxbZi5iYS5uTChhKV0uY2FsbChmLmtiLGEsY1thXSl9KX07cC5wcm90b3R5cGUuSkc9ZnVuY3Rpb24oZSl7dmFyIGY9XG50aGlzLGM9dGhpcy5iYS5nZXRBbGwoKTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Yua2Iuc2V0KGEsZVthXSl9KX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PWc7SC5UUT1nfSx7MTY5OjE2OX1dLDE2MDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiB2KHApe3ZhciBlPXAuZks7dGhpcy5QQT1wLmI7dGhpcy5UZz1lfXYucHJvdG90eXBlLlJkPWZ1bmN0aW9uKHApe3ZhciBlPXRoaXMuUEEub2IodGhpcy5UZyk7cC5zZXQoXCJwYWdlV2lkdGhcIixlLndpZHRoKS5zZXQoXCJwYWdlSGVpZ2h0XCIsZS5oZWlnaHQpO3JldHVybiB0aGlzfTtyZXR1cm4gdn0oKTt0LmRlZmF1bHQ9SC5mUj1nfSx7fV0sMTYxOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApLHA9ZygxNjQpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGYpe3RoaXMuamE9XG5mfWUucHJvdG90eXBlLlJkPWZ1bmN0aW9uKGYpe3ZhciBjPXRoaXMuamEueW4oKTtwLmRlZmF1bHQuV0koZikuc2V0KFwidmVyc2lvblwiLHYuZGVmYXVsdC5ITCgpKS5zZXQoXCJhZ2VudFwiLHYuZGVmYXVsdC5ObigpKS5zZXQoXCJwcm9kdWN0XCIsdGhpcy5qYS5HYygpKS5LbyhcInVzZXJJZFwiLG51bGwsXCJ1c2VyaWRcIikuc2V0KFwic2Vzc2lvbklkXCIsbnVsbCkuSXYoXCJvcHRvdXRWYWx1ZVwiLFwib3B0b3V0XCIpLkl2KFwiZGV2aWNlRmFtaWx5XCIsXCJkZXZpY2VmYW1pbHlcIikuS28oXCJwdWJsaXNoZXJVUkxcIix0aGlzLmphLkZuKCksXCJwdWJ1cmxcIikuS28oXCJyZWZlcnJlclVSTFwiLHYuZGVmYXVsdC52TCh0aGlzLmphLiQoKSksXCJyZWZlcnJlcnVybFwiKS5MbyhcInB1Ymxpc2hlcklkXCIsdGhpcy5qYS5zZCgpLFwicHViaWRcIikuTG8oXCJwdWJsaXNoZXJcIix0aGlzLmphLlpkKCksXCJwdWJkb21haW5cIikuc2V0KFwiZGlzcGxheWFibGVTaXplc1wiLHRoaXMuamEuR2goKSx7Y246dGhpcy5qYS5QdSgpfSkuc2V0KFwiY3VzdG9tVmFyc1wiLFxuYyx7Y246MDxjLmxlbmd0aH0pO3JldHVybiB0aGlzfTtyZXR1cm4gZX0oKTt0LmRlZmF1bHQ9SC5xUj1nfSx7MTY0OjE2NCwyNTA6MjUwfV0sMTYyOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHYocCl7dGhpcy5ibT1wfXYucHJvdG90eXBlLlJkPWZ1bmN0aW9uKHApe3Auc2V0KFwidXNQcml2YWN5XCIsdGhpcy5ibS5KTi5IYik7cmV0dXJuIHRoaXN9O3JldHVybiB2fSgpO3QuZGVmYXVsdD1ILnFTPWd9LHt9XSwxNjM6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdihwKXt0aGlzLlVhPXB9di5wcm90b3R5cGUuUmQ9ZnVuY3Rpb24ocCl7dmFyIGU9dGhpcy5VYS5ZZSgpLGY9dGhpcy5VYS5LZixjPXRoaXMuVWEuZ2soKSxhPXRoaXMuVWEuaGsoKTtwLnNldChcInZpZXdwb3J0V2lkdGhcIixcbmUud2lkdGgpLnNldChcInZpZXdwb3J0SGVpZ2h0XCIsZS5oZWlnaHQpLnNldChcInNjcmVlbldpZHRoXCIsZi53aWR0aCkuc2V0KFwic2NyZWVuSGVpZ2h0XCIsZi5oZWlnaHQpLnNldChcInNjcm9sbFhcIixjLmxlZnQpLnNldChcInNjcm9sbFlcIixjLnRvcCkuc2V0KFwicGFnZVZpc2liaWxpdHlcIixhKTtyZXR1cm4gdGhpc307cmV0dXJuIHZ9KCk7dC5kZWZhdWx0PUguUlM9Z30se31dLDE2NDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjUwKTt0LmRlZmF1bHQ9SC5VUT17V0k6ZnVuY3Rpb24ocCl7cmV0dXJue3NldDpmdW5jdGlvbihlLGYsYyl7Yz0odm9pZCAwPT09Yz97fTpjKS5jbjsodm9pZCAwPT09Y3x8YykmJnAuc2V0KGUsZik7cmV0dXJuIHRoaXN9LEtvOmZ1bmN0aW9uKGUsZixjKXtyZXR1cm4gdGhpcy5zZXQoZSx2LmRlZmF1bHQuUChjKXx8Zil9LEl2OmZ1bmN0aW9uKGUsZil7cmV0dXJuIHRoaXMuTG8oZSxcbiExLGYpfSxMbzpmdW5jdGlvbihlLGYsYyl7Zj12LmRlZmF1bHQuUChjKXx8ZjtyZXR1cm4gdGhpcy5zZXQoZSxmLHtjbjpmfSl9fX19fSx7MjUwOjI1MH1dLDE2NTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2LHA9ZygxNTcpLGU9ZygxNTgpLGY9ZygxNjYpLGM9ZygxNTkpLGE9ZygxNjcpLGI9ZygxNjgpO3k9ZygxNjApO3ZhciBkPWcoMTYxKSxoPWcoMTYyKTtnPWcoMTYzKTt2YXIgaz17VklFV1BPUlQ6XCJWSUVXUE9SVFwiLGFxOlwiUkVHVUxBVElPTlNcIixIcDpcIkVOVlwiLEVwOlwiRE9NXCJ9O3Qubmk9azt2YXIgbD0odj17fSx2W2suVklFV1BPUlRdPWcuZGVmYXVsdCx2W2suYXFdPWguZGVmYXVsdCx2W2suSHBdPWQuZGVmYXVsdCx2W2suRXBdPXkuZGVmYXVsdCx2KTt0LmxlPXtBSTpmdW5jdGlvbihtLG4scil7cmV0dXJuIG5ldyBwLmRlZmF1bHQobSxuLHtNajpmdW5jdGlvbigpe2Zvcih2YXIgcT1bXSxcbnU9MDt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKXFbdV09YXJndW1lbnRzW3VdO3JldHVybiByLk1qLmFwcGx5KHIscSl9LHRoOnRoaXMudGgsT2o6dGhpcy5Pan0pfSx5SjpmdW5jdGlvbihtLG4scil7cmV0dXJuIG5ldyBmLmRlZmF1bHQobSxuLHIpfSxPajpmdW5jdGlvbihtLG4pe3JldHVybiBuZXcgYy5kZWZhdWx0KG0sbil9LGNyZWF0ZVNlc3Npb246ZnVuY3Rpb24obSxuKXtyZXR1cm4gbmV3IGEuZGVmYXVsdCh7a246bS5rbixGYjptLkZifSxuKX0sdGg6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGIuZGVmYXVsdH0sWUk6ZnVuY3Rpb24obSl7cmV0dXJuIG5ldyBsW20udUldKG0uc291cmNlKX19O3Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBtKG4scil7dGhpcy5WYz1uO3RoaXMudj1yfW0ucHJvdG90eXBlLk1qPWZ1bmN0aW9uKG4scil7cmV0dXJuIG5ldyBlLmRlZmF1bHQoe2FhOnRoaXMuVmMsb1A6bixwUDpyLEQ6dGhpcy52fSl9O3JldHVybiBtfSgpO3QuanA9dn0sezE1NzoxNTcsMTU4OjE1OCxcbjE1OToxNTksMTYwOjE2MCwxNjE6MTYxLDE2MjoxNjIsMTYzOjE2MywxNjY6MTY2LDE2NzoxNjcsMTY4OjE2OH1dLDE2NjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMTY3KSxwPWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShmLGMsYSl7dmFyIGI9dGhpczt0aGlzLkxyPWY7dGhpcy54Yz1jO3RoaXMua2I9YTt0aGlzLk1yPXt9O3RoaXMuS3M9e307dGhpcy5rcz1mdW5jdGlvbigpe2Zvcih2YXIgZD1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylkW2hdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi4kRC5hcHBseShiLGQpfX1lLnByb3RvdHlwZS5ETz1mdW5jdGlvbigpe3RoaXMuZ0coKS5sRygpfTtlLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5Mci5PYSh0aGlzLk1yKTt0aGlzLnhjLk9hKHRoaXMuS3MpO3RoaXMueGMubmEoXCJzY3JvbGx2ZXJ0aWNhbFwiLHRoaXMua3MpO3JldHVybiB0aGlzfTtcbmUucHJvdG90eXBlLmdHPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy50cih7Y2xpY2s6di5SLlNwLGlmcmFtZWNsaWNrOnYuUi5TcCx0YXA6di5SLm54LHN3aXBlbGVmdDp2LlIua3gsc3dpcGVyaWdodDp2LlIubHgsc3dpcGV1cDp2LlIubXgsc3dpcGVkb3duOnYuUi5qeH0pO3AuZGVmYXVsdC5leHRlbmQodGhpcy5NcixmKTt0aGlzLkxyLmZhKGYpO3JldHVybiB0aGlzfTtlLnByb3RvdHlwZS5sRz1mdW5jdGlvbigpe3ZhciBmPXRoaXMudHIoe29yaWVudGF0aW9uY2hhbmdlcG9ydHJhaXQ6di5SLmd4LG9yaWVudGF0aW9uY2hhbmdlbGFuZHNjYXBlOnYuUi5meCx6b29taW5waW5jaDp2LlIucXgsem9vbWluZG91YmxldGFwOnYuUi5veCx6b29tb3V0cGluY2g6di5SLnN4LHpvb21vdXRkb3VibGV0YXA6di5SLnJ4fSk7cC5kZWZhdWx0LmV4dGVuZCh0aGlzLktzLGYpO3RoaXMueGMuZmEoZikub25jZShcInNjcm9sbHZlcnRpY2FsXCIsdGhpcy5rcyl9O2UucHJvdG90eXBlLnRyPWZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGMoaCl7cmV0dXJuIGZ1bmN0aW9uKGssXG5sKXtsJiZiLnNldChcImhvdHNwb3RJZFwiLGwudG9TdHJpbmcoKSk7Yi5hYihmW2hdKX19dmFyIGE9e30sYj10aGlzLmtiLGQ7Zm9yKGQgaW4gZilmLmhhc093blByb3BlcnR5KGQpJiYoYVtkXT1jKGQpKTtyZXR1cm4gYX07ZS5wcm90b3R5cGUuJEQ9ZnVuY3Rpb24oKXt0aGlzLmtiLmFiKHYuUi5oeCk7cmV0dXJuIHRoaXN9O3JldHVybiBlfSgpO3QuZGVmYXVsdD1nO0guVFI9Z30sezE2NzoxNjcsMjUwOjI1MH1dLDE2NzpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYobil7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBufHxudWxsPT09bnx8IW4uc2Vzc2lvbklkKXJldHVybiBiLmRlZmF1bHQubG9nKFwiICBJbnZhbGlkIHJlc3BvbnNlIC0gZXhwZWN0ZWQgc2Vzc2lvbiBJRDpcIixiLmRlZmF1bHQudmcobikpLG51bGw7Yi5kZWZhdWx0LmxvZyhbXCIgIFJlY2VpdmVkIHVzZXIgSUQgPSBcIixuLnVzZXJJZHx8XCIobm9uZSlcIixcIiwgc2Vzc2lvbiBJRCA9IFwiLG4uc2Vzc2lvbklkXS5qb2luKFwiXCIpKTtcbnJldHVybiBufXZhciBwPXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgbj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocixxKXtyLl9fcHJvdG9fXz1xfXx8ZnVuY3Rpb24ocixxKXtmb3IodmFyIHUgaW4gcSlxLmhhc093blByb3BlcnR5KHUpJiYoclt1XT1xW3VdKX07cmV0dXJuIGZ1bmN0aW9uKHIscSl7ZnVuY3Rpb24gdSgpe3RoaXMuY29uc3RydWN0b3I9cn1uKHIscSk7ci5wcm90b3R5cGU9bnVsbD09PXE/T2JqZWN0LmNyZWF0ZShxKToodS5wcm90b3R5cGU9cS5wcm90b3R5cGUsbmV3IHUpfX0oKSxlPXRoaXMmJnRoaXMuWXx8T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24obil7Zm9yKHZhciByLHE9MSx1PWFyZ3VtZW50cy5sZW5ndGg7cTx1O3ErKyl7cj1hcmd1bWVudHNbcV07Zm9yKHZhciB3IGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsdykmJihuW3ddPXJbd10pfXJldHVybiBufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmPWcoMTI2KSxjPWcoMTE1KSxhPWcoMSksYj1nKDI1MCk7eT1nKDE0OCk7dmFyIGQ9ZygxNTQpO2c9e2V3OlwiQURfQkxPQ0tFUl9ERVRFQ1RFRFwiLGVwOlwiQURfQ0xJQ0tcIixmdzpcIkFEX0NMT1NFXCIsZ3c6XCJBRF9IT1ZFUl9JTlwiLGh3OlwiQURfSU5GT1wiLGp3OlwiQURfUkVRVUVTVF9QQVNTQkFDS1wiLGZwOlwiQURfU0VSVkVSX1JFU1BPTlNFXCIsbXc6XCJBRF9TV0lQRV9ET1dOXCIsbnc6XCJBRF9TV0lQRV9MRUZUXCIsb3c6XCJBRF9TV0lQRV9SSUdIVFwiLHB3OlwiQURfU1dJUEVfVVBcIixxdzpcIkFEX1RBUFwiLHJ3OlwiQURfVklFV1wiLGx3OlwiQURfU0xPVF9WSUVXQUJMRVwiLFNwOlwiUEFHRV9DTElDS1wiLGR4OlwiUEFHRV9FTlRFUlwiLFJSOlwiUEFHRV9FWElUXCIsZng6XCJQQUdFX09SSUVOVEFUSU9OX0NIQU5HRV9MQU5EU0NBUEVcIixneDpcIlBBR0VfT1JJRU5UQVRJT05fQ0hBTkdFX1BPUlRSQUlUXCIsaHg6XCJQQUdFX1NDUk9MTFwiLFxuang6XCJQQUdFX1NXSVBFX0RPV05cIixreDpcIlBBR0VfU1dJUEVfTEVGVFwiLGx4OlwiUEFHRV9TV0lQRV9SSUdIVFwiLG14OlwiUEFHRV9TV0lQRV9VUFwiLG54OlwiUEFHRV9UQVBcIixveDpcIlBBR0VfWk9PTV9JTl9ET1VCTEVUQVBcIixxeDpcIlBBR0VfWk9PTV9JTl9QSU5DSFwiLHJ4OlwiUEFHRV9aT09NX09VVF9ET1VCTEVUQVBcIixzeDpcIlBBR0VfWk9PTV9PVVRfUElOQ0hcIn07dC5SPWc7dmFyIGg9e0FEX0NMSUNLOltcImhvdHNwb3RJZFwiXSxBRF9DTE9TRTpbXCJhZFwiXSxBRF9IT1ZFUl9JTjpbXCJob3RzcG90SWRcIl0sQURfSU5GTzpbXCJhZFwiLFwiZGlhZ25vc3RpY3NcIixcImFkVmlld2FiaWxpdHlcIl0sQURfU0VSVkVSX1JFU1BPTlNFOltcImFkUHJvdmlkZXJcIixcInJlbmRlckRlY2lzaW9uXCIsXCJhZFwiLFwiYWRWaWV3YWJpbGl0eVwiXSxBRF9TV0lQRV9ET1dOOltcImhvdHNwb3RJZFwiXSxBRF9TV0lQRV9MRUZUOltcImhvdHNwb3RJZFwiXSxBRF9TV0lQRV9SSUdIVDpbXCJob3RzcG90SWRcIl0sQURfU1dJUEVfVVA6W1wiaG90c3BvdElkXCJdLFxuQURfVEFQOltcImhvdHNwb3RJZFwiXSxBRF9WSUVXOltcImFkXCIsXCJ1bml0XCIsXCJhZFZpZXdhYmlsaXR5XCJdLFBBR0VfQ0xJQ0s6W1wiaG90c3BvdElkXCJdLFBBR0VfRU5URVI6W1wicHVibGlzaGVyVVJMXCIsXCJyZWZlcnJlclVSTFwiXSxQQUdFX1NXSVBFX0RPV046W1wiaG90c3BvdElkXCJdLFBBR0VfU1dJUEVfTEVGVDpbXCJob3RzcG90SWRcIl0sUEFHRV9TV0lQRV9SSUdIVDpbXCJob3RzcG90SWRcIl0sUEFHRV9TV0lQRV9VUDpbXCJob3RzcG90SWRcIl0sUEFHRV9UQVA6W1wiaG90c3BvdElkXCJdfSxrPXtDT05ORUNUSU5HOjAsT1BFTjoxLENMT1NJTkc6MixDTE9TRUQ6M307dC5hYz1rO3ZhciBsPVtcIl9cIixcImNhbGxiYWNrXCJdLG09W1wiQUJUZXN0QnVja2V0XCIsXCJkblwiLFwiaXZcIl07eT1mdW5jdGlvbihuKXtmdW5jdGlvbiByKHEsdSl7dmFyIHc9bi5jYWxsKHRoaXMpfHx0aGlzO3cuSWU9bnVsbDt3LmJhPXEua247dy5SaT17fTt3LlRhPWsuQ0xPU0VEO3cuU2w9W107dy5qYT1xLkZiO3cuRWY9e01rOnUubk4sWnY6e1hzOm51bGx9fTtcbnJldHVybiB3fXAocixuKTtyLnByb3RvdHlwZS5JSD1mdW5jdGlvbigpe3ZhciBxPXRoaXM7cmV0dXJue3NldDpmdW5jdGlvbigpe2Zvcih2YXIgdT1bXSx3PTA7dzxhcmd1bWVudHMubGVuZ3RoO3crKyl1W3ddPWFyZ3VtZW50c1t3XTtyZXR1cm4gcS5zZXQuYXBwbHkocSx1KX19fTtyLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKCl7dmFyIHE9dGhpcyx1PXRoaXMuamEuT28oKStcIi9hdXRob3JpemVcIix3PWUoe30sdGhpcy5iYS5nZXRBbGwoKSx7XzoobmV3IERhdGUpLmdldFRpbWUoKX0pLHg9Yi5kZWZhdWx0Lm1rKGZ1bmN0aW9uKEMpe3JldHVybiBxLk9BKEMpfSk7dGhpcy5naChrLkNPTk5FQ1RJTkcpO2IuZGVmYXVsdC5sb2coXCJQb3B1bGF0aW5nIHNlc3Npb24gaW5mb3JtYXRpb24uLi5cIik7dGhpcy5FZi5adi5Ycz1mLmRlZmF1bHQudGQoe3VybDp1LHZ2OncsZnQ6eCxEOnRoaXMuamEuJCgpfSk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLmFiPWZ1bmN0aW9uKHEpe3RoaXMuc2V0KFwiZXZlbnRUeXBlXCIsXG5xKS5mKFwiYmVmb3JlRW1pdFJlbW90ZVwiKS5VRChxKS5ycihcImV2ZW50XCIsYi5kZWZhdWx0LkViKHRoaXMuYmEuZ2V0QWxsKCkpKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuZGlzY29ubmVjdD1mdW5jdGlvbigpe3ZhciBxPXRoaXMuVGE7cSE9PWsuQ0xPU0lORyYmcSE9PWsuQ0xPU0VEJiZ0aGlzLmdoKGsuQ0xPU0lORykuSWUuY2xvc2UoKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLmJhLmdldChxKX07ci5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLmJhLmhhcyhxKX07ci5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHEsdSl7dGhpcy5iYS5hcHBlbmQocSx1KTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHEsdSx3KXt3PWUoe30sdyx7SE86Yi5kZWZhdWx0LmNhKG0scSl9KTt0aGlzLmJhLnNldChxLHUsdyk7XCJyZWZlcnJlclwiPT09cSYmdGhpcy5zZXQoXCJyZWZlcnJhbFR5cGVcIixiLmRlZmF1bHQuUChcInJlZmVycmVyY29kZVwiKXx8XG5jLmRlZmF1bHQuZHUodSkpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5wbz1mdW5jdGlvbihxKXtmb3IodmFyIHUgaW4gcSlxLmhhc093blByb3BlcnR5KHUpJiZ0aGlzLnNldCh1LHFbdV0pfTtyLnByb3RvdHlwZS5zZz1mdW5jdGlvbihxKXtyZXR1cm4gdGhpcy5iYS5zZyhxKX07ci5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmJhLmNsZWFyKCk7dGhpcy5SaT17fTt0aGlzLkJxKCk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLmR1bXA9ZnVuY3Rpb24oKXt0aGlzLmJhLmR1bXAoKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmEuZ2V0QWxsKCl9O3IucHJvdG90eXBlLmdjPWZ1bmN0aW9uKHEpe3RoaXMuYmEuZ2MocSl9O3IucHJvdG90eXBlLmZjPWZ1bmN0aW9uKHEpe3RoaXMuYmEuZmMocSl9O3IucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCk7dGhpcy5JZSYmdGhpcy5kaXNjb25uZWN0KCk7dGhpcy5naChrLkNMT1NFRCkuSigpO1xucmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLmVQPWZ1bmN0aW9uKHEpe3ZhciB1PXRoaXMuZ2V0KFwibGVmdEd1dHRlcldpZHRoXCIpO3EhPT11JiYodGhpcy5zZXQoXCJsZWZ0R3V0dGVyV2lkdGhcIixxKSxiLmRlZmF1bHQubG9nKFwiTGVmdCBndXR0ZXIgc2l6ZSB1cGRhdGU6IHdpZHRoID0gXCIrcStcIiBwaXhlbHNcIikpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5PQT1mdW5jdGlvbihxKXt2YXIgdT10aGlzO3E9dihxKTtpZighcSlyZXR1cm4gdGhpczt0aGlzLnBvKHEpO3E9dGhpcy5nZXQoXCJzZXNzaW9uSWRcIik7dmFyIHc9dGhpcy5nZXQoXCJBQlRlc3RCdWNrZXRcIikseD1bXCJ3ZWJzb2NrZXRcIixcInhoci1zdHJlYW1pbmdcIixcImpzb25wLXBvbGxpbmdcIl0sQz10aGlzLmphLk9vKCkrXCIvc2Vzc2lvbj9KU0VTU0lPTklEPVwiK3E7SC5zZXNzaW9uSWQ9cTt3JiYoYS5kZWZhdWx0LnpPKHcpLGIuZGVmYXVsdC5sb2coXCIgIEEvQiB0ZXN0IGJ1Y2tldDogXCIsYS5kZWZhdWx0LkNMKCkpLHRoaXMuSEcoKSk7XG50aGlzLmYoXCJoYW5kc2hha2VcIik7Yi5kZWZhdWx0LmxvZyhcIkNvbm5lY3RpbmcgdG8gbG9nZ2luZyBzZXJ2ZXIuLi5cIik7Yi5kZWZhdWx0LndkKGIuZGVmYXVsdC5QKFwibm93ZWJzb2NrZXRcIikpJiYoeC5zaGlmdCgpLGIuZGVmYXVsdC53ZChiLmRlZmF1bHQuUChcIm5veGhyXCIpKSYmeC5zaGlmdCgpKTt0aGlzLkllPW5ldyBkLmRlZmF1bHQoQyxudWxsLHtwcm90b2NvbHNfd2hpdGVsaXN0Onh9KTt0aGlzLkVmLk1rLkJnKFwic2Vzc2lvbkNvbm5lY3Rpb25cIik7dGhpcy5JZS5vbm9wZW49ZnVuY3Rpb24oKXtmb3IodmFyIEQ9W10sQj0wO0I8YXJndW1lbnRzLmxlbmd0aDtCKyspRFtCXT1hcmd1bWVudHNbQl07cmV0dXJuIHUuREUuYXBwbHkodSxEKX07dGhpcy5JZS5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXtmb3IodmFyIEQ9W10sQj0wO0I8YXJndW1lbnRzLmxlbmd0aDtCKyspRFtCXT1hcmd1bWVudHNbQl07cmV0dXJuIHUuQ0UuYXBwbHkodSxEKX07dGhpcy5JZS5vbmNsb3NlPWZ1bmN0aW9uKCl7Zm9yKHZhciBEPVxuW10sQj0wO0I8YXJndW1lbnRzLmxlbmd0aDtCKyspRFtCXT1hcmd1bWVudHNbQl07cmV0dXJuIHUuQkUuYXBwbHkodSxEKX07cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLkRFPWZ1bmN0aW9uKCl7dmFyIHE9dGhpcy5FZi5Nazt0aGlzLmdjKHEuaGcoXCJzZXNzaW9uQ29ubmVjdGlvblwiKSk7Yi5kZWZhdWx0LmxvZyhcIlNhdmluZyBzZXNzaW9uIGluZm9ybWF0aW9uLi4uXCIpO3EuQmcoXCJzZXNzaW9uSW5pdFwiKTtxPXtuYW1lOlwiaW5pdFwiLGFyZ3M6Yi5kZWZhdWx0LkViKHRoaXMuYmEuZ2V0QWxsKCkpfTt0aGlzLmxzKHEpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5DRT1mdW5jdGlvbihxKXt2YXIgdT1KU09OLnBhcnNlKHEuZGF0YSk7cT11Lm5hbWU7dT11LmFyZ3M7dGhpcy5mKFwicmVjdlwiLHEsdSk7XCJpbml0LWNvbXBsZXRlXCI9PT1xPyh0aGlzLnBvKHUpLHRoaXMuZ2ModGhpcy5FZi5Nay5oZyhcInNlc3Npb25Jbml0XCIpKSx0aGlzLndyKHUpLkNlKCkpOmIuZGVmYXVsdC5sb2coXCJSZWNlaXZlZCBtZXNzYWdlIG9mIHVua25vd24gdHlwZVwiLFxucSx1KTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuQkU9ZnVuY3Rpb24ocSl7Yi5kZWZhdWx0LmxvZyhxLndhc0NsZWFuP1wiU2Vzc2lvbiBlbmRlZCBub3JtYWxseVwiOlwiTG9zdCBjb25uZWN0aW9uOiBcIitxLnJlYXNvbik7dGhpcy5naChrLkNMT1NFRCk7dGhpcy5mKFwiY2xvc2VcIik7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLkNlPWZ1bmN0aW9uKCl7Yi5kZWZhdWx0LmxvZyhcIlJlYWR5IHRvIHN0cmVhbSBldmVudHMuXCIpO3RoaXMuZ2goay5PUEVOKS5DQigpLmYoXCJyZWFkeVwiKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuVUQ9ZnVuY3Rpb24ocSl7dmFyIHU9dGhpcyx3PShoW3FdfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiF1LnNnKHgpfSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4K1wiID0+IFwiK3UuZ2V0KHgpfSkuam9pbihcIiwgXCIpO2IuZGVmYXVsdC5sb2coXCJDYXB0dXJlIGV2ZW50OiBcIitxKyh3P1wiOiBcIit3OlwiXCIpKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUucnI9XG5mdW5jdGlvbihxLHUpe3ZhciB3PXRoaXMuVGE7c3dpdGNoKHcpe2Nhc2Ugay5DT05ORUNUSU5HOmIuZGVmYXVsdC5sb2coXCIgICogRXZlbnQgcXVldWVkIHVudGlsIHNlc3Npb24gY29ubmVjdHNcIik7cT17bmFtZTpxLGFyZ3M6dX07dGhpcy5TbC5wdXNoKHEpO2JyZWFrO2Nhc2Ugay5PUEVOOnU9dGhpcy5UQih1KTtxPXtuYW1lOnEsYXJnczp1fTt0aGlzLmxzKHEpLndyKHUpO2JyZWFrO2Nhc2Ugay5DTE9TSU5HOmIuZGVmYXVsdC5sb2coXCIgICogRXZlbnQgZGlzY2FyZGVkOiBTZXNzaW9uIGlzIGNsb3NpbmdcIik7YnJlYWs7Y2FzZSBrLkNMT1NFRDpiLmRlZmF1bHQubG9nKFwiICAqIEV2ZW50IGRpc2NhcmRlZDogU2Vzc2lvbiBpcyBjbG9zZWRcIik7YnJlYWs7ZGVmYXVsdDpiLmRlZmF1bHQubG9nKFwiICAqIEV2ZW50IGRpc2NhcmRlZDogU3RhdGUgXCIrdytcIiBpbnZhbGlkXCIpfXJldHVybiB0aGlzfTtyLnByb3RvdHlwZS5DQj1mdW5jdGlvbigpe3ZhciBxPXRoaXMsdT10aGlzLlNsLHc9XG51Lmxlbmd0aDswPHcmJmIuZGVmYXVsdC5sb2coW1wiRmx1c2hpbmcgXCIsdyxcIiBxdWV1ZWQgZXZlbnRcIisoMTx3P1wic1wiOlwiXCIpLFwiLlwiXS5qb2luKFwiXCIpKTt1LmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIHEucnIoeC5uYW1lLHguYXJncyl9KTt0aGlzLkJxKCk7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLkJxPWZ1bmN0aW9uKCl7dGhpcy5TbD1bXX07ci5wcm90b3R5cGUubHM9ZnVuY3Rpb24ocSl7dGhpcy5JZS5zZW5kKGIuZGVmYXVsdC52ZyhxKSk7dGhpcy5mKFwic2VuZFwiLHEpO3JldHVybiB0aGlzfTtyLnByb3RvdHlwZS5naD1mdW5jdGlvbihxKXt0aGlzLlRhPXE7cmV0dXJuIHRoaXN9O3IucHJvdG90eXBlLlRCPWZ1bmN0aW9uKHEpe3E9Yi5kZWZhdWx0Lmt2KHRoaXMuUmkscXx8dGhpcy5iYS5nZXRBbGwoKSx7eG86W1wic2Vzc2lvbklkXCIsXCJldmVudFR5cGVcIl19KTtmb3IodmFyIHU9MDt1PGwubGVuZ3RoOysrdSlkZWxldGUgcVtsW3VdXTtyZXR1cm4gcX07ci5wcm90b3R5cGUud3I9XG5mdW5jdGlvbihxKXt0aGlzLlJpPWUoe30sdGhpcy5SaSxxKTtyZXR1cm4gdGhpc307ci5wcm90b3R5cGUuSEc9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLkVmLk1rO3RoaXMuZ2MocS5udSh0aGlzLmphKSk7cT1xLk1uKHRoaXMuRWYuWnYuWHMse2NlOlwiYXV0aG9yaXplXCJ9KTt0aGlzLmdjKHEpfTtyZXR1cm4gcn0oeS5kZWZhdWx0KTt5LlI9Zzt5LmFjPWs7dC5kZWZhdWx0PXk7SC53Uz15fSx7MToxLDExNToxMTUsMTI2OjEyNiwxNDg6MTQ4LDE1NDoxNTQsMjUwOjI1MH1dLDE2ODpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoZil7Znx8XCJudW1iZXJcIj09PXR5cGVvZiBmfHwoZj1cIlwiKTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJihmPWUuZGVmYXVsdC5MaChmKT9lLmRlZmF1bHQuamUoZix7c2VwYXJhdG9yOlwiO1wifSkrXCI7XCI6XCJcIik7XCJzdHJpbmdcIj09PXR5cGVvZiBmJiYoZj1mLnJlcGxhY2UoL1xcdC9nLFwiICBcIikucmVwbGFjZSgvXFxyP1xcbi9nLFwiICAgIFwiKS5zdWJzdHJpbmcoMCw1RTQpKTtcbnJldHVybiBmfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMTY5KSxlPWcoMjUwKTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpe3RoaXMuSWY9e307dGhpcy52cj17fX1mLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYyxhLGIpe2I9Ynx8e307dGhpcy5JZltjXT1iLkhPP2E6dihhKTt0aGlzLnZyW2NdPWIubVB8fHAuZGVmYXVsdC5RcDtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLklmW2NdfTtmLnByb3RvdHlwZS5uTD1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy52cltjXX07Zi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGMpe3JldHVybiBjIGluIHRoaXMuSWZ9O2YucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihjLGEpe3ZhciBiPXRoaXMuc2coYyk/XCJcIjp0aGlzLmdldChjKTthPXYoYSk7dGhpcy5zZXQoYyxiK2EudHJpbSgpLHttUDpwLmRlZmF1bHQuaHB9KTtyZXR1cm4gdGhpc307XG5mLnByb3RvdHlwZS5zZz1mdW5jdGlvbihjKXtjPXRoaXMuZ2V0KGMpO3JldHVybiEoY3x8MD09PWMpfTtmLnByb3RvdHlwZS5wbz1mdW5jdGlvbihjKXt2YXIgYT10aGlzO09iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24oYil7cmV0dXJuIGEuc2V0KGIsY1tiXSl9KX07Zi5wcm90b3R5cGUuZHVtcD1mdW5jdGlvbigpe2UuZGVmYXVsdC5sb2coXCJTZXNzaW9uIGRhdGEgc3RvcmUgZHVtcDogXCIsZS5kZWZhdWx0LkViKHRoaXMuSWYpKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuZ2M9ZnVuY3Rpb24oYyl7ZS5kZWZhdWx0LkxoKGMpJiZ0aGlzLmFwcGVuZChcInBlcmZvcm1hbmNlXCIsYyl9O2YucHJvdG90eXBlLmZjPWZ1bmN0aW9uKGMpe2UuZGVmYXVsdC5MaChjKSYmdGhpcy5hcHBlbmQoXCJkaWFnbm9zdGljc1wiLGMpfTtmLnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5JZn07Zi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLklmPXt9O3JldHVybiB0aGlzfTtcbnJldHVybiBmfSgpO3QuZGVmYXVsdD1nO0gueFM9Z30sezE2OToxNjksMjUwOjI1MH1dLDE2OTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9e2hwOlwiYXBwZW5kXCIsUXA6XCJvdmVyd3JpdGVcIn07dC5kZWZhdWx0PWc7SC5MUz1nfSx7fV0sMTcwOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz17Snc6XCJkZnBcIix5ZDpcImVyclwiLHpmOlwicHViXCIscmk6XCJmaWx0ZXJlZFwifTt0LmRlZmF1bHQ9ZztILk5SPWd9LHt9XSwxNzE6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KCl7TD0hMX1mdW5jdGlvbiBwKEcpe2lmKHUuaGFzKEcpKXJldHVybiB1LmdldChHKTt2YXIgRT1sLmRlZmF1bHQudGEoRyk7dS5zZXQoRyxFKTtyLmRlZmF1bHQubWIoQSxHKTtyZXR1cm4gRX1mdW5jdGlvbiBlKEcpe0c9cChHKTtyZXR1cm57d2lkdGg6Ry5yaWdodC1HLmxlZnQsXG5oZWlnaHQ6Ry5ib3R0b20tRy50b3B9fWZ1bmN0aW9uIGYoRyl7cmV0dXJuIDA8cChHKS5oZWlnaHQ/cChHKTpsLmRlZmF1bHQucHUoRyl9ZnVuY3Rpb24gYyhHKXt1W1wiZGVsZXRlXCJdKEcpfWZ1bmN0aW9uIGEoRyxFLE0pe0c9bC5kZWZhdWx0Lm1jKEcpO3JldHVybiBHPj1FJiZHPE19ZnVuY3Rpb24gYihHKXt4W1wiZGVsZXRlXCJdKEcpfWZ1bmN0aW9uIGQoRyl7SS5ibyhHKSYmIUkuZm8oRykmJihyLmRlZmF1bHQud2coSS5jb250ZW50LFtHXSksci5kZWZhdWx0LndnKEkua2YsW0ddKSl9ZnVuY3Rpb24gaChHKXtyLmRlZmF1bHQuQ28oSS5jb250ZW50LEcpO3IuZGVmYXVsdC5DbyhJLmtmLEcpO2MoRyl9ZnVuY3Rpb24gayhHKXtyZXR1cm5bRyxHLmZpcnN0RWxlbWVudENoaWxkXS5maWx0ZXIoQm9vbGVhbikuc29tZShmdW5jdGlvbihFKXtyZXR1cm4vXnRhcmdldC9pLnRlc3QoRS5nZXRBdHRyaWJ1dGUoXCJ0eW50LWRhdGFcIikpfSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIsXG57dmFsdWU6ITB9KTt2YXIgbD1nKDEyNyksbT1nKDEyNCksbj1nKDEyNSk7eT1nKDI1MSk7dmFyIHI9ZygyNTApO2coMTU1KTt2YXIgcT1cImRpdiBzcGFuIHRhYmxlIHVsIG9sIGxpIGRsIHAgaHIgc3Ryb25nIGNlbnRlciBmb3JtIGgxIGgyIGgzIGg0IGg1IGg2IGZpZWxkc2V0IHByZSBhIGhlYWRlciBoZ3JvdXAgZm9vdGVyIHNlY3Rpb24gYXJ0aWNsZSBuYXYgaW5zIGNhbnZhcyBvYmplY3QgZW1iZWQgaWZyYW1lIGJvZHkgYXNpZGUgYWRkcmVzcyBmaWdjYXB0aW9uIGZpZ3VyZSBhdWRpbyB2aWRlbyBvdXRwdXQgYmxvY2txdW90ZSBtYWluIHRib2R5IHRyIHRkIHBocCB0aW1lIGlcIi5zcGxpdChcIiBcIiksdT1uZXcgV2Vha01hcCx3PW5ldyBXZWFrTWFwLHg9bmV3IFdlYWtNYXAsQz15LmRlZmF1bHQuSGgoKSxELEI9bnVsbCxLPW51bGwsRj1udWxsLEw9ITEsej1bXSxBPVtdLEo9W107Qy5mYSh7cmVzaXplOnYsem9vbTp2LG9yaWVudGF0aW9uY2hhbmdlOnZ9KTt2YXIgST1mdW5jdGlvbigpe2Z1bmN0aW9uIEcoKXt9XG5HLlBtPWZ1bmN0aW9uKEUsTSl7dmFyIE89e3N0aWNreWVsZW1lbnRhZGQ6ZCxzdGlja3llbGVtZW50cmVtb3ZlOmgsc3RpY2t5ZWxlbWVudGNoYW5nZTpjfTtHLnhPKEUsTSk7Ry5LaChNLHZvaWQgMCk7TD0hMDtNJiYoTS5PYShPKSxNLmZhKE8pKX07Ry54Tz1mdW5jdGlvbihFLE0pe3RoaXMuY29udGVudD1bXTt0aGlzLnNoPVtdO3RoaXMuYmFja2dyb3VuZD1bXTt0aGlzLmtmPVtdO3RoaXMuWmI9TTtCPWwuZGVmYXVsdC5vYihFKTtLPWwuZGVmYXVsdC5vYihFLmRvY3VtZW50KTtGPXAoRS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpfTtHLktoPWZ1bmN0aW9uKEUsTSl7dGhpcy55SyhNKTt0aGlzLnpLKCk7dGhpcy5mUCgpO3RoaXMuZ1AoKTtBLmZvckVhY2goYyk7QT1bXTtKLmZvckVhY2goYik7Sj1bXX07Ry5ibz1mdW5jdGlvbihFKXt2YXIgTTtpZihNPWwuZGVmYXVsdC5MYyhFKSYmIWwuZGVmYXVsdC5iZyh6LEUpJiYhbC5kZWZhdWx0LnVkKEUpJiYwPHAoRSkucmlnaHQmJnAoRSkudG9wPD1cbksuaGVpZ2h0LTMmJjM8PWYoRSkuYm90dG9tLUYudG9wJiYhbC5kZWZhdWx0LlJ1KEUse1hKOiEwfSkmJiF0aGlzLktNKEUpJiZhKEUsMCw1RTMpJiYhbC5kZWZhdWx0Lk11KEUpJiYhdGhpcy5BTShFKSl7TT1lKEUpO3ZhciBPPWwuZGVmYXVsdC4kZChFLFtcInpJbmRleFwiLFwicG9zaXRpb25cIl0pO2lmKE09TS53aWR0aD49Qi53aWR0aCYmTS5oZWlnaHQ+PUIuaGVpZ2h0JiZcImZpeGVkXCI9PT1PLnBvc2l0aW9uJiYwPk51bWJlcihPLnpJbmRleCkpe009RS5jaGlsZHJlblswXTtpZihPPTE9PT1FLmNoaWxkcmVuLmxlbmd0aCYmXCJpbWdcIj09PWwuZGVmYXVsdC5EaChNKSlNPWUoTSksTz1lKEUpLE89TS53aWR0aD09PU0uaGVpZ2h0JiZNLndpZHRoPT09Ty53aWR0aDtNPU99TT0hTX1yZXR1cm4gTSYmKCFsLmRlZmF1bHQuaG8oRSl8fHRoaXMuSE0oRSl8fHRoaXMudU0oRSkpfTtHLkhNPWZ1bmN0aW9uKEUpe2lmKHIuZGVmYXVsdC5jYShbXCJoMVwiLFwiaDJcIixcImgzXCIsXCJkaXZcIixcInBcIl0sRS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSlmb3IodmFyIE09XG5FLmNoaWxkTm9kZXMsTz0wO088TS5sZW5ndGg7TysrKWlmKDM9PT1NW09dLm5vZGVUeXBlJiYzPD1NW09dLmRhdGEudHJpbSgpLmxlbmd0aClyZXR1cm4hMT09PXguaGFzKEUpJiYoeC5zZXQoRSwhMCksSi5wdXNoKEUpKSwhMDtyZXR1cm4hMX07Ry5mbz1mdW5jdGlvbihFKXtpZih3LmhhcyhFKSlyZXR1cm4gdy5nZXQoRSk7dmFyIE09L25vLWNvbnRlbnQvaS50ZXN0KEUuZ2V0QXR0cmlidXRlKFwidHludC1kYXRhXCIpKTt3LnNldChFLE0pO3JldHVybiBNfTtHLnVNPWZ1bmN0aW9uKEUpe3JldHVybi9eY29udGVudC9pLnRlc3QoRS5nZXRBdHRyaWJ1dGUoXCJ0eW50LWRhdGFcIikpfHxrKEUpfTtHLnlNPWZ1bmN0aW9uKEUpe3ZhciBNPXRoaXMubGc7cmV0dXJuIGwuZGVmYXVsdC5MYyhFKSYmIWwuZGVmYXVsdC5iZyh6LEUpJiZsLmRlZmF1bHQuWWQoRSk8dGhpcy5HYiYmYShFLDUsNTAwKSYmIWwuZGVmYXVsdC5obyhFKSYmKCFNfHxwKEUpLnRvcD49cChNKS5ib3R0b20pJiZwKEUpLnRvcDw9XG5LLmhlaWdodC0zJiYzPD1wKEUpLmJvdHRvbS1GLnRvcCYmIWwuZGVmYXVsdC5NdShFKSYmIWwuZGVmYXVsdC5pbyhFKX07Ry5BTT1mdW5jdGlvbihFKXtpZihFJiYxMDA8PXBhcnNlSW50KGwuZGVmYXVsdC5BKEUsXCJ6LWluZGV4XCIpLDEwKSl7dmFyIE09bC5kZWZhdWx0LkEoRSxcImJhY2tncm91bmQtY29sb3JcIik7aWYoTSYmXCJ0cmFuc3BhcmVudFwiIT09TSl7dmFyIE89bC5kZWZhdWx0LkRuKEUpLFM9cGFyc2VGbG9hdChsLmRlZmF1bHQuQShFLFwib3BhY2l0eVwiKSwxMCk7TT1yLmRlZmF1bHQucHYoTSk7dmFyIERhPXIuZGVmYXVsdC5wdihsLmRlZmF1bHQuQShPLFwiYmFja2dyb3VuZC1jb2xvclwiKSksdmE9ci5kZWZhdWx0LllLKE0sRGEpO2lmKC44Pj1TfHxNJiZEYSYmMjA+PXZhKWlmKEU9bC5kZWZhdWx0Lm9iKEUpLE89bC5kZWZhdWx0Lm9iKE8pLEUud2lkdGg+PU8ud2lkdGgmJkUuaGVpZ2h0Pj1PLmhlaWdodClyZXR1cm4hMH19cmV0dXJuITF9O0cuS009ZnVuY3Rpb24oRSl7cmV0dXJuIHAoRSkudG9wPD1cbkIuaGVpZ2h0LTMmJjM8PWYoRSkuYm90dG9tPyExOmwuZGVmYXVsdC5vYyhFKT8hMDowPGwuZGVmYXVsdC5BaChFKS5maWx0ZXIobC5kZWZhdWx0Lm9jLGwuZGVmYXVsdCkubGVuZ3RofTtHLnFQPWZ1bmN0aW9uKEUpe3ZhciBNO2lmKE09dGhpcy5ibyhFKSlhOntNPUU7dmFyIE89dm9pZCAwO2Zvcih2b2lkIDA9PT1PJiYoTz0xNSk7TT1NLnBhcmVudE5vZGU7KWlmKE8tLSwwPk8pe009ITE7YnJlYWsgYX1NPSEwfU0mJiFsLmRlZmF1bHQub2MoRSkmJihNPXIuZGVmYXVsdC5RZSh0aGlzLmNvbnRlbnQsW0VdKSxNPSFsLmRlZmF1bHQuYmcoTSxFKSk7cmV0dXJuIE19O0cuQnY9ZnVuY3Rpb24oKXtsLmRlZmF1bHQuR2EueXZ8fChEPXIuZGVmYXVsdC5rZyh0aGlzLmNvbnRlbnQubWFwKHRoaXMuUXEsdGhpcykpLEQuZm9yRWFjaChsLmRlZmF1bHQuRUssbC5kZWZhdWx0KSl9O0cuS209ZnVuY3Rpb24oRSl7ci5kZWZhdWx0Lm1iKHosRSk7cmV0dXJuIHRoaXN9O0cuWGQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50fTtcbkcublQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaH07Ry5rVD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhY2tncm91bmR9O0cud1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rZn07Ry5wVD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxnfTtHLnJUPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuR2J9O0cuYms9ZnVuY3Rpb24oRSl7cmV0dXJuXCJyaWdodFwiPT09RT90aGlzLmdmOnRoaXMuR2J9O0cudEw9ZnVuY3Rpb24oRSl7cmV0dXJuXCJyaWdodFwiPT09RT90aGlzLnpvOnRoaXMueW99O0cuc1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55b307Ry50VD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnpvfTtHLnFUPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTWh9O0cudlQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZn07Ry50dT1mdW5jdGlvbigpe3JldHVybiBMfTtHLnJlc2V0PWZ1bmN0aW9uKCl7ej1bXTt0aGlzLmxnPXRoaXMuUW89dGhpcy5nZj10aGlzLnpvPXRoaXMueW89dGhpcy5HYj10aGlzLk1oPVxudGhpcy5aYj1udWxsO3RoaXMuY29udGVudD1bXTt0aGlzLnNoPVtdO3RoaXMuYmFja2dyb3VuZD1bXTt0aGlzLmtmPVtdO0w9ITF9O0cueUs9ZnVuY3Rpb24oRSl7dm9pZCAwPT09RSYmKEU9MTUpO3RoaXMuUHEoc2EuZG9jdW1lbnRFbGVtZW50LEUpOzA9PT10aGlzLmNvbnRlbnQubGVuZ3RoJiYoci5kZWZhdWx0LmxvZyhcIk5vIGNvbnRlbnQgZGV0ZWN0ZWQuIFNlbGVjdGluZyBkb2N1bWVudCBib2R5LlwiKSx0aGlzLmNvbnRlbnQ9W3NhLmJvZHldKTt0aGlzLkFCKCl9O0cueks9ZnVuY3Rpb24oKXt2YXIgRT10aGlzLmNvbnRlbnQsTT1CLndpZHRoLE89bnVsbCxTPTA7dGhpcy5Rbz10aGlzLlFvfHxsLmRlZmF1bHQuanUoRSk7dmFyIERhPWwuZGVmYXVsdC5JYyh0aGlzLlFvKS50b3A7Zm9yKHZhciB2YT0wO3ZhPEUubGVuZ3RoOysrdmEpe3ZhciB3YT1FW3ZhXS5wYXJlbnROb2RlO2lmKHdhIT09TyYmbC5kZWZhdWx0LkxjKHdhKSl7dmFyIHlhPWwuZGVmYXVsdC5vYih3YSksYmE9bC5kZWZhdWx0LkljKHdhKSxcbnJhO2lmKChyYT01PD15YS5oZWlnaHQmJjI1MD49eWEuaGVpZ2h0KSYmIShyYT15YS53aWR0aD09PU0pKXtyYT13YTt2YXIgemE9TSxFYT1sLmRlZmF1bHQuRWEocmEpLmdldENvbXB1dGVkU3R5bGUocmEucGFyZW50Tm9kZSk7cmE9bC5kZWZhdWx0LnRhKHJhKTtyYT15YS53aWR0aD56YSYmXCJoaWRkZW5cIj09PUVhLm92ZXJmbG93JiY1Pj1yYS5sZWZ0fXJhJiZiYS50b3A8RGEmJjMwMD49YmEudG9wJiYoYmE9bC5kZWZhdWx0LnRhKHdhKS5ib3R0b20sKCFPfHxPLmNvbnRhaW5zKHdhKXx8Uzw9YmEpJiY0MDA+YmEmJihPPXRoaXMubGc9d2EsUz1iYSkpfX19O0cuWWQ9ZnVuY3Rpb24oRSl7cmV0dXJuIHguaGFzKEUpP2wuZGVmYXVsdC5ETChFKS5sZWZ0OmwuZGVmYXVsdC5ZZChFKX07Ry5mUD1mdW5jdGlvbigpe3ZhciBFPXRoaXM7dGhpcy55bz10aGlzLkdiO3RoaXMuR2I9TWF0aC5taW4uYXBwbHkoTWF0aCx0aGlzLnNoLm1hcChmdW5jdGlvbihNKXtyZXR1cm4gRS5ZZChNKX0pKTt0aGlzLkJCKCkuZm9yRWFjaChmdW5jdGlvbihNKXt2YXIgTz1cbmwuZGVmYXVsdC5iZyhFLmNvbnRlbnQsTSksUztpZihPKWZvcig7bC5kZWZhdWx0LmNvbnRhaW5zKE8sTSk7KShTPXAoTSx7Y3c6ITB9KSkmJjA8Uy5yaWdodCYmMDxTLmJvdHRvbSYmUy53aWR0aDxCLndpZHRoJiZTLmxlZnQ8RS5HYiYmKFM9bC5kZWZhdWx0LnJ1KE0sTyx7Y3c6ITB9KSkmJjA8Uy5yaWdodCYmMDxTLmJvdHRvbSYmUy53aWR0aDxCLndpZHRoJiYoRS5HYj1NYXRoLm1pbihFLkdiLFMubGVmdCkpLE09TS5wYXJlbnROb2RlfSk7dGhpcy5HYj1NYXRoLm1heCh0aGlzLkdiLDApO0MuJE8odGhpcy5HYil9O0cuZ1A9ZnVuY3Rpb24oKXt0aGlzLnpvPXRoaXMuZ2Y7dGhpcy5nZj1NYXRoLm1pbi5hcHBseShNYXRoLHRoaXMuY29udGVudC5tYXAobC5kZWZhdWx0LkduLGwuZGVmYXVsdCkpO3RoaXMuZ2Y9TWF0aC5tYXgodGhpcy5nZiwwKX07Ry5USz1mdW5jdGlvbigpe2Z1bmN0aW9uIEUoTyl7cmV0dXJuIE0uZmlsdGVyKGZ1bmN0aW9uKFMpe3JldHVybiBsLmRlZmF1bHQuY29udGFpbnMoTyxcblMpfSl9dmFyIE09Ry5jb250ZW50O3JldHVybiBsLmRlZmF1bHQuR2EuQks/W106Ry5rZi5maWx0ZXIobC5kZWZhdWx0Lm9NLGwuZGVmYXVsdCkucmVkdWNlKGZ1bmN0aW9uKE8sUyl7Uz1FKFMpO3JldHVybiBPLmNvbmNhdChTKX0sW10pfTtHLmR1bXA9ZnVuY3Rpb24oRSxNKXshTSYmdGhpcy50dSgpfHx0aGlzLlBtKEUpO2NvbnNvbGUubG9nKFwiUEFHRSBDT05URU5UOlwiKTt0aGlzLlVpKHRoaXMuY29udGVudCk7Y29uc29sZS5sb2coXCJMRUZUIEdVVFRFUiBXSURUSDogXCIrdGhpcy5HYik7Y29uc29sZS5sb2coXCJMRUZUIEdVVFRFUiBFTEVNRU5UUzpcIik7dGhpcy5VaSh0aGlzLk1oKTtjb25zb2xlLmxvZyhcIlJJR0hUIEdVVFRFUiBXSURUSDogXCIrdGhpcy5nZik7Y29uc29sZS5sb2coXCJQQUdFIEJBQ0tHUk9VTkQ6XCIpO3RoaXMuVWkodGhpcy5iYWNrZ3JvdW5kKTtjb25zb2xlLmxvZyhcIlNUSUNLSUVTOlwiKTt0aGlzLlVpKHRoaXMua2YpO2NvbnNvbGUubG9nKFwiRlVMTC1XSURUSCBIRUFERVI6XCIpO1xudGhpcy5sZyYmY29uc29sZS5sb2cobC5kZWZhdWx0LkJoKHRoaXMubGcpKX07Ry5QcT1mdW5jdGlvbihFLE0pe2Z1bmN0aW9uIE8oYmEpe0cuWmImJkcuWmIuaGYoYmEpO2lmKCFHLmZvKGJhKSlpZihHLmJvKGJhKSlyLmRlZmF1bHQubWIoRy5jb250ZW50LGJhKSwrK0RhLGwuZGVmYXVsdC5vYyhiYSl8fFMoYmEpO2Vsc2UgaWYoIWwuZGVmYXVsdC5iZyh6LGJhKSYmIWwuZGVmYXVsdC51ZChiYSkpe2lmKG4uZGVmYXVsdC53dShiYSkpe3ZhciByYT1sLmRlZmF1bHQuQShiYSxcImJhY2tncm91bmQtc2l6ZVwiKTtyYT0hcmEudWd9ZWxzZSByYT0hMTtyYSYmci5kZWZhdWx0Lm1iKEcuYmFja2dyb3VuZCxiYSk7ci5kZWZhdWx0Lm1iKHZhLGJhKX19ZnVuY3Rpb24gUyhiYSl7YmE9Ry5RcShiYSk7ci5kZWZhdWx0LndnKEcua2YsYmEpO2JhLmZvckVhY2goZnVuY3Rpb24ocmEpe0cuUHEocmEsMyl9KX12YXIgRGE9MDtFPVtFXTtmb3IodmFyIHZhPVtdLHdhLHlhPTA7MDxFLmxlbmd0aCYmeWE8XG5NO3lhKyspdmE9W10sRS5mb3JFYWNoKE8pLCsrd2EsRT12YSxFPUUubWFwKGZ1bmN0aW9uKGJhKXtyZXR1cm4gci5kZWZhdWx0LmFpKGJhLmNoaWxkcmVuKX0pLEU9ci5kZWZhdWx0LnFvLmFwcGx5KHIuZGVmYXVsdCxFKSxFPWwuZGVmYXVsdC5NdChFLHEpfTtHLkFCPWZ1bmN0aW9uKCl7dmFyIEU9dGhpcy5jb250ZW50LmZpbHRlcihmdW5jdGlvbihNKXtyZXR1cm4hbC5kZWZhdWx0LnVkKE0sITApJiYobC5kZWZhdWx0Lkh1KE0pfHwwPmwuZGVmYXVsdC5tdShNKXx8bC5kZWZhdWx0Lm9jKE0pJiYtMjAwPj1wYXJzZUludChsLmRlZmF1bHQuQShNLFwibWFyZ2luLWxlZnRcIiksMTApKX0pOzA9PT1FLmxlbmd0aCYmKEU9W2wuZGVmYXVsdC5qdSh0aGlzLmNvbnRlbnQpXSk7dGhpcy5zaD1FfTtHLkJCPWZ1bmN0aW9uKCl7dmFyIEU9dGhpcy5NaHx8bS5kZWZhdWx0LmxMKEMse25mOjAsZ2k6dGhpcy5HYn0pO3JldHVybiB0aGlzLk1oPXIuZGVmYXVsdC51bmlxdWUoRS5jb25jYXQodGhpcy5aYj9cbnRoaXMuWmIuV0soKTpbXSkuY29uY2F0KHRoaXMuY29udGVudCkpLmZpbHRlcih0aGlzLnlNLHRoaXMpfTtHLlFxPWZ1bmN0aW9uKEUpe3ZhciBNPVtdLE89W107XCJkaXYgdWwgYSBoZWFkZXIgbmF2IHNlY3Rpb24gYXNpZGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihTKXtPPUUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoUyk7Zm9yKFM9MDtTPE1hdGgubWluKE8ubGVuZ3RoLDFFMyk7KytTKUU9T1tTXSx0aGlzLlpiJiZ0aGlzLlpiLmhmKEUpLGwuZGVmYXVsdC5vYyhFKSYmIXRoaXMuRUMoRSkmJk0ucHVzaChFKX0sdGhpcyk7cmV0dXJuIE19O0cuRUM9ZnVuY3Rpb24oRSl7Zm9yKHZhciBNPSExO0UmJiFNOyl0aGlzLmZvKEUpJiYoTT0hMCksRT1FLnBhcmVudEVsZW1lbnQ7cmV0dXJuIE19O0cuVWk9ZnVuY3Rpb24oRSl7dmFyIE09dGhpcztFLmZvckVhY2goZnVuY3Rpb24oTyl7Y29uc29sZS5sb2cobC5kZWZhdWx0LkJoKE8pLGwuZGVmYXVsdC5ZZChPKSxsLmRlZmF1bHQuR24oTyksXG5yLmRlZmF1bHQuY2EoTS5zaCxPKT9cIkNPUkVcIjpcIlwiKX0pfTtyZXR1cm4gR30oKTt0LmRlZmF1bHQ9SC5TUj1JfSx7MTI0OjEyNCwxMjU6MTI1LDEyNzoxMjcsMTU1OjE1NSwyNTA6MjUwLDI1MToyNTF9XSwxNzI6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdixwPWcoMjUwKTtnPWcoMjI0KTt2YXIgZT1nLmRlZmF1bHQueWksZj1nLmRlZmF1bHQuWnAsYz0odj17fSx2W2YudWldPVwiaHR0cHM6Ly96Lm1vYXRhZHMuY29tLzMzYWNyb3NzZGlzcGxheTU5NDE0OTkyMjI1MS9tb2F0YWQuanNcIix2KTt2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXt0aGlzLmxtPWJ9YS5wcm90b3R5cGUuT049ZnVuY3Rpb24oYixkLGgpe3ZhciBrPWNbYl07ayYmKHAuZGVmYXVsdC5sb2coXCJBdHRhY2hpbmcgTU9BVCBcIitiK1wiIG1vbml0b3JcIiksZD10aGlzLmhDKGQpLGI9dGhpcy5WeShiLGssZCksaC5rTShiKSl9O2EucHJvdG90eXBlLnJMPVxuZnVuY3Rpb24oKXtyZXR1cm4gZS53aX07YS5wcm90b3R5cGUua289ZnVuY3Rpb24oYil7dmFyIGQ9Yi5nZXRBdHRyaWJ1dGUoXCJzcmNcIik7Yj1PYmplY3Qua2V5cyhjKS5tYXAoZnVuY3Rpb24oaCl7cmV0dXJuIGNbaF19KTtyZXR1cm4gZD9iLnNvbWUoZnVuY3Rpb24oaCl7cmV0dXJuIDA8PWQuaW5kZXhPZihoKX0pOiExfTthLnByb3RvdHlwZS5oQz1mdW5jdGlvbihiKXt2YXIgZD10aGlzLmxtLGg9Yi5OZD9wLmRlZmF1bHQuUGMoYi5OZCk6XCIweDBcIjtyZXR1cm57bW9hdENsaWVudExldmVsMTpiLnBsYXRmb3JtLG1vYXRDbGllbnRMZXZlbDI6ZC5GYSxtb2F0Q2xpZW50TGV2ZWwzOmQuZ2UsbW9hdENsaWVudFNsaWNlcjE6aCxtb2F0Q2xpZW50U2xpY2VyMjpkLmNvbnRleHQuVHQoKS5CdCxtb2F0Q2xpZW50U2xpY2VyMzpkLnpofX07YS5wcm90b3R5cGUuVnk9ZnVuY3Rpb24oYixkLGgpe3ZhciBrO3JldHVybihrPXt9LGtbZi51aV09dGhpcy5UeSxrKVtiXShkLGgpfTthLnByb3RvdHlwZS5UeT1cbmZ1bmN0aW9uKGIsZCl7ZD1wLmRlZmF1bHQuZmwoZCk7cmV0dXJuIGIrXCIjXCIrZH07cmV0dXJuIGF9KCk7dC5kZWZhdWx0PXY7SC5LUj12fSx7MjI0OjIyNCwyNTA6MjUwfV0sMTczOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDIyNCk7dmFyIHY9ZygxNzIpLHA9ZygxNzUpLGU9ZygyNTApLGY9eS5kZWZhdWx0LnlpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEpe3RoaXMubG09YX1jLnByb3RvdHlwZS5FSj1mdW5jdGlvbihhLGIpe3ZhciBkLGg9KGQ9e30sZFtmLndpXT10aGlzLnVKLGQpO2I9ZS5kZWZhdWx0LmV4dGVuZChiLHRoaXMubG0pO2lmKCFoW2FdKXRocm93IEVycm9yKFwiSW52YWxpZCBwYXJ0bmVyIGNvZGU6IFwiK2EpO3JldHVybiBuZXcgaFthXShiKX07Yy5wcm90b3R5cGUuc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBwLmRlZmF1bHQoYSl9O2MucHJvdG90eXBlLnVKPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdi5kZWZhdWx0KGEpfTtcbnJldHVybiBjfSgpO3QuZGVmYXVsdD1nO0guWFI9Z30sezE3MjoxNzIsMTc1OjE3NSwyMjQ6MjI0LDI1MDoyNTB9XSwxNzQ6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMjI0KTt2YXIgdj1nKDIzOCkscD1nKDI1MCksZT15LmRlZmF1bHQueWksZj1PYmplY3Qua2V5cyh5LmRlZmF1bHQuJHApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEpe3RoaXMuYnM9YS5QTjt0aGlzLmxhPWEuY29udGV4dH1jLnByb3RvdHlwZS5VSD1mdW5jdGlvbihhKXthPXRoaXMuYnMuc3QoYSk7dGhpcy5oRyhhKTtyZXR1cm4gYX07Yy5wcm90b3R5cGUuaEc9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztPYmplY3Qua2V5cyhlKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkoZCl9KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2YuZm9yRWFjaChmdW5jdGlvbihoKXtiLnB5KGEsZVtkXSxoKX0pfSl9O2MucHJvdG90eXBlLnB5PVxuZnVuY3Rpb24oYSxiLGQpe3ZhciBoPXRoaXMuakMoKSxrPXAuZGVmYXVsdC5leHRlbmQoe2NvbnRleHQ6dGhpcy5sYX0saCk7aFtiXVtkXSYmKGI9dGhpcy5icy5FSihiLGspLGEuc0goYixkKSl9O2MucHJvdG90eXBlLmpDPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuTWEodi5kZWZhdWx0LlRwKX07cmV0dXJuIGN9KCk7dC5kZWZhdWx0PWc7SC5yUz1nfSx7MjI0OjIyNCwyMzg6MjM4LDI1MDoyNTB9XSwxNzU6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI1MCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoZSl7dGhpcy53Yz17fTt0aGlzLlQ9bnVsbDt0aGlzLktiPXt9O3RoaXMuSEU9ZX1wLnByb3RvdHlwZS5PaD1mdW5jdGlvbihlKXt0aGlzLlQ9ZTt0aGlzLmFHKCk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5UJiYodGhpcy5ULk9hKHRoaXMuS2IpLFxudGhpcy5UPW51bGwpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5kTD1mdW5jdGlvbihlKXtyZXR1cm4oZT10aGlzLndjW2VdKT9lLm1hcChmdW5jdGlvbihmKXtyZXR1cm4gZi5yTCgpfSk6W119O3AucHJvdG90eXBlLmtvPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLlFCKCkuc29tZShmdW5jdGlvbihmKXtyZXR1cm4gZi5rbyhlKX0pfTtwLnByb3RvdHlwZS5zSD1mdW5jdGlvbihlLGYpe3RoaXMud2NbZl18fCh0aGlzLndjW2ZdPVtdKTt0aGlzLndjW2ZdLnB1c2goZSl9O3AucHJvdG90eXBlLmFHPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5lRSgpLGY7Zm9yKGYgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGYpKXRoaXMuVC5vbmNlKGYsZVtmXSk7dGhpcy5LYj1lfTtwLnByb3RvdHlwZS5lRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZCl7YS53Yy5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09ZnVuY3Rpb24oaCxrKXtmLnlDKGQsayl9KX12YXIgZj10aGlzLGM9e30sYT10aGlzLGI7Zm9yKGIgaW4gdGhpcy53YyllKGIpO1xucmV0dXJuIGN9O3AucHJvdG90eXBlLnlDPWZ1bmN0aW9uKGUsZil7dmFyIGM9dGhpczt0aGlzLndjW2VdLmZvckVhY2goZnVuY3Rpb24oYSl7YS5PTihlLGYsYy5IRSl9KX07cC5wcm90b3R5cGUuUUI9ZnVuY3Rpb24oKXt2YXIgZT1bXSxmO2ZvcihmIGluIHRoaXMud2MpdGhpcy53Yy5oYXNPd25Qcm9wZXJ0eShmKSYmZS5wdXNoKHRoaXMud2NbZl0pO3JldHVybiB2LmRlZmF1bHQudW5pcXVlKHYuZGVmYXVsdC5rZyhlKSl9O3JldHVybiBwfSgpO3QuZGVmYXVsdD1nO0guWVI9Z30sezI1MDoyNTB9XSwxNzY6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIxOCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoZSxmKXt0aGlzLiRnPWUubG87dGhpcy5EQT1lLlNKO3RoaXMuWWw9ZS5rTjt0aGlzLmJjPWUudmQ7dGhpcy53RD1lLmxrO3RoaXMuYT1mfXAucHJvdG90eXBlLlNMPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLllsfTtcbnAucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGYsYz0oZj17fSxmW3YuZGVmYXVsdC5wYV09ZnVuY3Rpb24oKXtyZXR1cm4gZS5FRCgpfSxmKVt0aGlzLmJjXTtpZihjKXJldHVybiBjKCksdGhpczt0aGlzLkJEKCk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLkVEPWZ1bmN0aW9uKCl7dGhpcy4kZy5STigpLlhuKHRoaXMuWWwsdGhpcy53RCk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLkJEPWZ1bmN0aW9uKCl7dGhpcy5hLmIud28odGhpcy5EQSx0aGlzLllsKX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PUguWlI9Z30sezIxODoyMTh9XSwxNzc6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDE3OCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoZSxmKXt0aGlzLkpFPWU7dGhpcy5YeD1mfXAucHJvdG90eXBlLmZuPWZ1bmN0aW9uKGUsZixjKXtyZXR1cm4gbmV3IHYuZGVmYXVsdCh0aGlzLkpFLnVoKHRoaXMuWHguV0goZSxcbmYpKSxjKX07cmV0dXJuIHB9KCk7dC5kZWZhdWx0PUguWlA9Z30sezE3ODoxNzh9XSwxNzg6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLndhfHxmdW5jdGlvbihlLGYsYyxhKXtyZXR1cm4gbmV3IChjfHwoYz1Qcm9taXNlKSkoZnVuY3Rpb24oYixkKXtmdW5jdGlvbiBoKG0pe3RyeXtsKGEubmV4dChtKSl9Y2F0Y2gobil7ZChuKX19ZnVuY3Rpb24gayhtKXt0cnl7bChhW1widGhyb3dcIl0obSkpfWNhdGNoKG4pe2Qobil9fWZ1bmN0aW9uIGwobSl7bS5kb25lP2IobS52YWx1ZSk6KG5ldyBjKGZ1bmN0aW9uKG4pe24obS52YWx1ZSl9KSkudGhlbihoLGspfWwoKGE9YS5hcHBseShlLGZ8fFtdKSkubmV4dCgpKX0pfSxwPXRoaXMmJnRoaXMueGF8fGZ1bmN0aW9uKGUsZil7ZnVuY3Rpb24gYyhtKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGEoW20sbl0pfX1mdW5jdGlvbiBhKG0pe2lmKGQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG5mb3IoO2I7KXRyeXtpZihkPTEsaCYmKGs9bVswXSYyP2hbXCJyZXR1cm5cIl06bVswXT9oW1widGhyb3dcIl18fCgoaz1oW1wicmV0dXJuXCJdKSYmay5jYWxsKGgpLDApOmgubmV4dCkmJiEoaz1rLmNhbGwoaCxtWzFdKSkuZG9uZSlyZXR1cm4gaztpZihoPTAsayltPVttWzBdJjIsay52YWx1ZV07c3dpdGNoKG1bMF0pe2Nhc2UgMDpjYXNlIDE6az1tO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYi5sYWJlbCsrLHt2YWx1ZTptWzFdLGRvbmU6ITF9O2Nhc2UgNTpiLmxhYmVsKys7aD1tWzFdO209WzBdO2NvbnRpbnVlO2Nhc2UgNzptPWIubC5wb3AoKTtiLmkucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGs9Yi5pLGs9MDxrLmxlbmd0aCYma1trLmxlbmd0aC0xXSkmJig2PT09bVswXXx8Mj09PW1bMF0pKXtiPTA7Y29udGludWV9aWYoMz09PW1bMF0mJigha3x8bVsxXT5rWzBdJiZtWzFdPGtbM10pKWIubGFiZWw9bVsxXTtlbHNlIGlmKDY9PT1tWzBdJiZiLmxhYmVsPGtbMV0pYi5sYWJlbD1rWzFdLFxuaz1tO2Vsc2UgaWYoayYmYi5sYWJlbDxrWzJdKWIubGFiZWw9a1syXSxiLmwucHVzaChtKTtlbHNle2tbMl0mJmIubC5wb3AoKTtiLmkucG9wKCk7Y29udGludWV9fW09Zi5jYWxsKGUsYil9Y2F0Y2gobil7bT1bNixuXSxoPTB9ZmluYWxseXtkPWs9MH1pZihtWzBdJjUpdGhyb3cgbVsxXTtyZXR1cm57dmFsdWU6bVswXT9tWzFdOnZvaWQgMCxkb25lOiEwfX12YXIgYj17bGFiZWw6MCxtOmZ1bmN0aW9uKCl7aWYoa1swXSYxKXRocm93IGtbMV07cmV0dXJuIGtbMV19LGk6W10sbDpbXX0sZCxoLGssbDtyZXR1cm4gbD17bmV4dDpjKDApLFwidGhyb3dcIjpjKDEpLFwicmV0dXJuXCI6YygyKX0sXCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmKGxbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksbH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZixjKXt0aGlzLnNxPWY7dGhpcy5YQT1cbmN9ZS5wcm90b3R5cGUuVW09ZnVuY3Rpb24oZixjKXtyZXR1cm4gdih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4gcCh0aGlzLGZ1bmN0aW9uKGIpe3N3aXRjaChiLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuc3EuQmcoZiksWzQsYygpXTtjYXNlIDE6cmV0dXJuIGIubSgpLGE9dGhpcy5zcS5oZyhmKSx0aGlzLlhBLmYoXCJiZW5jaG1hcmtzXCIsYSksWzIsdGhpc119fSl9KX07cmV0dXJuIGV9KCk7dC5kZWZhdWx0PUguRVE9Z30se31dLDE3OTpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMud2F8fGZ1bmN0aW9uKGUsZixjLGEpe3JldHVybiBuZXcgKGN8fChjPVByb21pc2UpKShmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGgobSl7dHJ5e2woYS5uZXh0KG0pKX1jYXRjaChuKXtkKG4pfX1mdW5jdGlvbiBrKG0pe3RyeXtsKGFbXCJ0aHJvd1wiXShtKSl9Y2F0Y2gobil7ZChuKX19ZnVuY3Rpb24gbChtKXttLmRvbmU/YihtLnZhbHVlKToobmV3IGMoZnVuY3Rpb24obil7bihtLnZhbHVlKX0pKS50aGVuKGgsXG5rKX1sKChhPWEuYXBwbHkoZSxmfHxbXSkpLm5leHQoKSl9KX0scD10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihlLGYpe2Z1bmN0aW9uIGMobSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBhKFttLG5dKX19ZnVuY3Rpb24gYShtKXtpZihkKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7YjspdHJ5e2lmKGQ9MSxoJiYoaz1tWzBdJjI/aFtcInJldHVyblwiXTptWzBdP2hbXCJ0aHJvd1wiXXx8KChrPWhbXCJyZXR1cm5cIl0pJiZrLmNhbGwoaCksMCk6aC5uZXh0KSYmIShrPWsuY2FsbChoLG1bMV0pKS5kb25lKXJldHVybiBrO2lmKGg9MCxrKW09W21bMF0mMixrLnZhbHVlXTtzd2l0Y2gobVswXSl7Y2FzZSAwOmNhc2UgMTprPW07YnJlYWs7Y2FzZSA0OnJldHVybiBiLmxhYmVsKysse3ZhbHVlOm1bMV0sZG9uZTohMX07Y2FzZSA1OmIubGFiZWwrKztoPW1bMV07bT1bMF07Y29udGludWU7Y2FzZSA3Om09Yi5sLnBvcCgpO2IuaS5wb3AoKTtcbmNvbnRpbnVlO2RlZmF1bHQ6aWYoIShrPWIuaSxrPTA8ay5sZW5ndGgmJmtbay5sZW5ndGgtMV0pJiYoNj09PW1bMF18fDI9PT1tWzBdKSl7Yj0wO2NvbnRpbnVlfWlmKDM9PT1tWzBdJiYoIWt8fG1bMV0+a1swXSYmbVsxXTxrWzNdKSliLmxhYmVsPW1bMV07ZWxzZSBpZig2PT09bVswXSYmYi5sYWJlbDxrWzFdKWIubGFiZWw9a1sxXSxrPW07ZWxzZSBpZihrJiZiLmxhYmVsPGtbMl0pYi5sYWJlbD1rWzJdLGIubC5wdXNoKG0pO2Vsc2V7a1syXSYmYi5sLnBvcCgpO2IuaS5wb3AoKTtjb250aW51ZX19bT1mLmNhbGwoZSxiKX1jYXRjaChuKXttPVs2LG5dLGg9MH1maW5hbGx5e2Q9az0wfWlmKG1bMF0mNSl0aHJvdyBtWzFdO3JldHVybnt2YWx1ZTptWzBdP21bMV06dm9pZCAwLGRvbmU6ITB9fXZhciBiPXtsYWJlbDowLG06ZnVuY3Rpb24oKXtpZihrWzBdJjEpdGhyb3cga1sxXTtyZXR1cm4ga1sxXX0saTpbXSxsOltdfSxkLGgsayxsO3JldHVybiBsPXtuZXh0OmMoMCksXCJ0aHJvd1wiOmMoMSksXG5cInJldHVyblwiOmMoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJihsW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGx9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fWUucHJvdG90eXBlLlVtPWZ1bmN0aW9uKGYsYyl7cmV0dXJuIHYodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcyxmdW5jdGlvbihhKXtzd2l0Y2goYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGMoKV07Y2FzZSAxOnJldHVybiBhLm0oKSxbMix0aGlzXX19KX0pfTtyZXR1cm4gZX0oKTt0LmRlZmF1bHQ9SC5QUj1nfSx7fV0sMTgwOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxNzkpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKCl7fXAucHJvdG90eXBlLmZuPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2LmRlZmF1bHR9O1xucmV0dXJuIHB9KCk7dC5kZWZhdWx0PWd9LHsxNzk6MTc5fV0sMTgxOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihhLGIpezA8PWEmJmIoKX1mdW5jdGlvbiBwKGEsYixkKXtjLmRlZmF1bHQubG9nKFwiLS0tIFBlcmYuIE1ldHJpYyBcIithK2QrXCI6IFwiK2IrXCJtcyAtLS1cIil9dmFyIGU9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihhKXtmb3IodmFyIGIsZD0xLGg9YXJndW1lbnRzLmxlbmd0aDtkPGg7ZCsrKXtiPWFyZ3VtZW50c1tkXTtmb3IodmFyIGsgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixrKSYmKGFba109YltrXSl9cmV0dXJuIGF9LGY9dGhpcyYmdGhpcy5VU3x8ZnVuY3Rpb24oYSxiKXt2YXIgZD17fSxoO2ZvcihoIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsaCkmJjA+Yi5pbmRleE9mKGgpJiYoZFtoXT1hW2hdKTtpZihudWxsIT1hJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGs9XG4wO2ZvcihoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoYSk7azxoLmxlbmd0aDtrKyspMD5iLmluZGV4T2YoaFtrXSkmJihkW2hba11dPWFbaFtrXV0pfXJldHVybiBkfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgYz1nKDI1MCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixkKXt2b2lkIDA9PT1kJiYoZD1cIlwiKTt0aGlzLnZjPWI7dGhpcy5KZD1kfWEucHJvdG90eXBlLk1uPWZ1bmN0aW9uKGIsZCl7cmV0dXJuIHRoaXMuWHEoZSh7ZWU6dGhpcy52Yy5La30sZCx7SnQ6Yn0pKX07YS5wcm90b3R5cGUuQmc9ZnVuY3Rpb24oYil7dGhpcy52Yy5Lay5tYXJrKFwiXCIrdGhpcy5KZCtiK1wiU3RhcnRcIil9O2EucHJvdG90eXBlLmhnPWZ1bmN0aW9uKGIpe2I9dGhpcy5KZCtiO3ZhciBkPWIrXCJTdGFydFwiLGg9dGhpcy52Yy5LaztpZigwIT09aC5nZXRFbnRyaWVzQnlOYW1lKGQpLmxlbmd0aCl7dmFyIGs9YitcIkVuZFwiO2guY2xlYXJNYXJrcyhrKS5tYXJrKGspLmNsZWFyTWVhc3VyZXMoYikubWVhc3VyZShiLFxuZCxrKTtyZXR1cm4gdGhpcy5YcSh7SnQ6YixjZTpiLGVlOnRoaXMudmMuS2t9KX19O2EucHJvdG90eXBlLm51PWZ1bmN0aW9uKGIpe3JldHVybiBlKHt9LHRoaXMudWwodGhpcy4kcShiKSksdGhpcy56cShiKSl9O2EucHJvdG90eXBlLlpCPWZ1bmN0aW9uKGIsZCl7ZD1kLmdldEVudHJpZXMoKTtmb3IodmFyIGg9W10saz1kLmxlbmd0aDtrLS07KXt2YXIgbD1kW2tdO2IudGVzdChsLm5hbWUpJiZoLnB1c2gobCl9cmV0dXJuIGh9O2EucHJvdG90eXBlLlhxPWZ1bmN0aW9uKGIpe3ZhciBkPWIuSnQsaD1iLmVlO2I9ZihiLFtcImVudHJ5TmFtZVwiLFwicGVyZm9ybWFuY2VBcGlcIl0pO2Q9XCJzdHJpbmdcIj09PXR5cGVvZiBkP2guZ2V0RW50cmllc0J5TmFtZShkKTp0aGlzLlpCKGQsaCk7cmV0dXJuIHRoaXMuJEIoZFswXSxlKHtlZTpofSxiKSl9O2EucHJvdG90eXBlLiRCPWZ1bmN0aW9uKGIsZCl7aWYoYil7dmFyIGg9e30saz1NYXRoLmZsb29yKGIuZHVyYXRpb24pO2lmKGQuU3Mpe3ZhciBsPVxuTWF0aC5mbG9vcihiLnN0YXJ0VGltZS0oZC5lZS50aW1pbmcuZG9tTG9hZGluZy1kLmVlLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpKTt2KGwsZnVuY3Rpb24oKXtwKGQuY2UsbCxcIlN0YXJ0XCIpO2hbZC5jZStcIkxvYWRTdGFydFwiXT1sfSl9dihrLGZ1bmN0aW9uKCl7cChkLmNlLGssXCJEdXJhdGlvblwiKTtoW2QuY2UrXCJEdXJhdGlvblwiXT1rfSk7cmV0dXJuIGh9fTthLnByb3RvdHlwZS5lQz1mdW5jdGlvbihiLGQpe2Zvcih2YXIgaD17fSxrPTAsbD1iLmxlbmd0aDtrPGw7aysrKWMuZGVmYXVsdC5leHRlbmQoaCx0aGlzLk1uKGJba10udXJsLGUoe30sYltrXSxkKSkpO3JldHVybiBofTthLnByb3RvdHlwZS4kcT1mdW5jdGlvbihiKXtiPWIuRkwoKTtmb3IodmFyIGQ9LyhbXlxcL10rKSg/PVxcLlxcdyskKS8saD1bXSxrPTA7azxiLmxlbmd0aDtrKyspe3ZhciBsPWJba10ubWF0Y2goZCk7KGw9bCYmbFswXSkmJmgucHVzaCh7dXJsOmJba10sY2U6bH0pfWgucHVzaCh7Y2U6XCJ0eW50Q29uZmlnXCIsXG51cmw6L3R5bnRcXC5jb21cXC9zY3JpcHRcXC9zYy99KTtyZXR1cm4gaH07YS5wcm90b3R5cGUudWw9ZnVuY3Rpb24oYixkKXt2b2lkIDA9PT1kJiYoZD17fSk7cmV0dXJuIHRoaXMuZUMoYixlKHtTczohMCxlZTp0aGlzLnZjLkNjfSxkKSl9O2EucHJvdG90eXBlLnpxPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLk1uKGIuQUwoKSx7Y2U6XCJzaWNcIixTczohMCxlZTp0aGlzLnZjLkNjfSl9O3JldHVybiBhfSgpO0guUGVyZm9ybWFuY2U9Zzt0LmRlZmF1bHQ9Z30sezI1MDoyNTB9XSwxODI6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGYpe3JldHVybntvYmplY3Q6Zi5wZXJmb3JtYW5jZX1bdHlwZW9mIGYucGVyZm9ybWFuY2VdfHxlfWZ1bmN0aW9uIHAoZixjLGEpe3ZhciBiO3JldHVybihiPXt9LGJbYV09ZltjXSxiKVt0eXBlb2YgZltjXV18fGVbY119T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGU9e2NsZWFyTWFya3M6ZnVuY3Rpb24oKXt9LFxubWFyazpmdW5jdGlvbigpe30sY2xlYXJNZWFzdXJlczpmdW5jdGlvbigpe30sbWVhc3VyZTpmdW5jdGlvbigpe30sZ2V0RW50cmllc0J5TmFtZTpmdW5jdGlvbigpe3JldHVybltdfSxnZXRFbnRyaWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LHRpbWluZzp7ZG9tTG9hZGluZzowLG5hdmlnYXRpb25TdGFydDowfX07Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoYyl7dGhpcy52PWN9Zi5wcm90b3R5cGUuY2xlYXJNYXJrcz1mdW5jdGlvbihjKXt0aGlzLlVmKFwiY2xlYXJNYXJrc1wiKShjKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUubWFyaz1mdW5jdGlvbihjKXt0aGlzLlVmKFwibWFya1wiKShjKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUuY2xlYXJNZWFzdXJlcz1mdW5jdGlvbihjKXt0aGlzLlVmKFwiY2xlYXJNZWFzdXJlc1wiKShjKTtyZXR1cm4gdGhpc307Zi5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbihjLGEsYil7dGhpcy5VZihcIm1lYXN1cmVcIikoYyxhLGIpO3JldHVybiB0aGlzfTtcbmYucHJvdG90eXBlLmdldEVudHJpZXNCeU5hbWU9ZnVuY3Rpb24oKXtmb3IodmFyIGM9W10sYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspY1thXT1hcmd1bWVudHNbYV07cmV0dXJuIHRoaXMuVWYoXCJnZXRFbnRyaWVzQnlOYW1lXCIpLmFwcGx5KHZvaWQgMCxjKX07Zi5wcm90b3R5cGUuZ2V0RW50cmllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlVmKFwiZ2V0RW50cmllc1wiKSgpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZi5wcm90b3R5cGUsXCJ0aW1pbmdcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAodih0aGlzLnYpLFwidGltaW5nXCIsXCJvYmplY3RcIil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7Zi5wcm90b3R5cGUuVWY9ZnVuY3Rpb24oYyl7dmFyIGE9dih0aGlzLnYpO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgYj1bXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKyliW2RdPWFyZ3VtZW50c1tkXTtyZXR1cm4gcChhLGMsXCJmdW5jdGlvblwiKS5hcHBseShhLGIpfX07XG5yZXR1cm4gZn0oKTt0LmRlZmF1bHQ9SC4kUj1nfSx7fV0sMTgzOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxODEpLHA9ZygxODUpLGU9ZygxODQpO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGMsYSl7dmFyIGIsZD10aGlzO3RoaXMudmM9Yzt0aGlzLklFPWE7dGhpcy5MRT0oYj17fSxiW2UuZGVmYXVsdC5mcV09ZnVuY3Rpb24oaCl7cmV0dXJuIGQudUEoaCl9LGJbZS5kZWZhdWx0LnRwXT1mdW5jdGlvbihoKXtyZXR1cm4gZC5pQShoKX0sYil9Zi5wcm90b3R5cGUudWg9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuTEVbdGhpcy5JRV0oYyl9O2YucHJvdG90eXBlLnVBPWZ1bmN0aW9uKGMpe3JldHVybiBuZXcgdi5kZWZhdWx0KHRoaXMudmMsYyl9O2YucHJvdG90eXBlLmlBPWZ1bmN0aW9uKGMpe3JldHVybiBuZXcgcC5kZWZhdWx0KHRoaXMudmMsYyl9O3JldHVybiBmfSgpO3QuZGVmYXVsdD1ILmFTPVxuZ30sezE4MToxODEsMTg0OjE4NCwxODU6MTg1fV0sMTg0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PUguYlM9e2ZxOlwiVE9QXCIsdHA6XCJCRUxPV19UT1BcIn19LHt9XSwxODU6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGYsYyl7Zi5fX3Byb3RvX189Y318fGZ1bmN0aW9uKGYsYyl7Zm9yKHZhciBhIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShhKSYmKGZbYV09Y1thXSl9O3JldHVybiBmdW5jdGlvbihmLGMpe2Z1bmN0aW9uIGEoKXt0aGlzLmNvbnN0cnVjdG9yPWZ9ZShmLGMpO2YucHJvdG90eXBlPW51bGw9PT1jP09iamVjdC5jcmVhdGUoYyk6KGEucHJvdG90eXBlPWMucHJvdG90eXBlLG5ldyBhKX19KCkscD10aGlzJiZ0aGlzLll8fFxuT2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciBmLGM9MSxhPWFyZ3VtZW50cy5sZW5ndGg7YzxhO2MrKyl7Zj1hcmd1bWVudHNbY107Zm9yKHZhciBiIGluIGYpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsYikmJihlW2JdPWZbYl0pfXJldHVybiBlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtnPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXYoZixlKTtmLnByb3RvdHlwZS5udT1mdW5jdGlvbihjKXt2YXIgYT10aGlzLiRxKGMpO3JldHVybiBwKHt9LHRoaXMudWwoYSksdGhpcy51bChhLHtlZTp0aGlzLnZjLlVPfSksdGhpcy56cShjKSl9O3JldHVybiBmfShnKDE4MSkuZGVmYXVsdCk7SC5DUz1nO3QuZGVmYXVsdD1nfSx7MTgxOjE4MX1dLDE4NjpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoQixLKXtyZXR1cm4gZnVuY3Rpb24oRil7cmV0dXJuIEIuZmlsdGVyKGZ1bmN0aW9uKEwpe0w9XG5MLm1hdGNoO3JldHVybiBMKEYpfSkubWFwKGZ1bmN0aW9uKEwpe3JldHVybiBMLlVkfSkuY29uY2F0KFtLXSlbMF19fWZ1bmN0aW9uIHAoQil7cmV0dXJuIGZ1bmN0aW9uKEspe3JldHVybiBCLmV2ZXJ5KGZ1bmN0aW9uKEYpe3JldHVybiBGKEspfSl9fWZ1bmN0aW9uIGUoQil7cmV0dXJuIGZ1bmN0aW9uKEspe3JldHVybiBLLnFLPT09Qn19ZnVuY3Rpb24gZihCKXtyZXR1cm4gZnVuY3Rpb24oSyl7cmV0dXJuIEsubWVzc2FnZT09PUJ9fWZ1bmN0aW9uIGMoQil7cmV0dXJuIGZ1bmN0aW9uKEspe3JldHVybiBLLnR5cGU9PT1CfX1mdW5jdGlvbiBhKEIpe3JldHVybltCLkZhLEIucHJvZHVjdCxCLk8sQi5yZWdpb24sXCJ0aWVyMVwiXS5qb2luKFwiOlwiKX1mdW5jdGlvbiBiKEIpe3JldHVybiBCLnNwbGl0KFwieFwiKS5tYXAoTnVtYmVyKX12YXIgZD10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIEI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJlxuZnVuY3Rpb24oSyxGKXtLLl9fcHJvdG9fXz1GfXx8ZnVuY3Rpb24oSyxGKXtmb3IodmFyIEwgaW4gRilGLmhhc093blByb3BlcnR5KEwpJiYoS1tMXT1GW0xdKX07cmV0dXJuIGZ1bmN0aW9uKEssRil7ZnVuY3Rpb24gTCgpe3RoaXMuY29uc3RydWN0b3I9S31CKEssRik7Sy5wcm90b3R5cGU9bnVsbD09PUY/T2JqZWN0LmNyZWF0ZShGKTooTC5wcm90b3R5cGU9Ri5wcm90b3R5cGUsbmV3IEwpfX0oKSxoPXRoaXMmJnRoaXMud2F8fGZ1bmN0aW9uKEIsSyxGLEwpe3JldHVybiBuZXcgKEZ8fChGPVByb21pc2UpKShmdW5jdGlvbih6LEEpe2Z1bmN0aW9uIEooRSl7dHJ5e0coTC5uZXh0KEUpKX1jYXRjaChNKXtBKE0pfX1mdW5jdGlvbiBJKEUpe3RyeXtHKExbXCJ0aHJvd1wiXShFKSl9Y2F0Y2goTSl7QShNKX19ZnVuY3Rpb24gRyhFKXtFLmRvbmU/eihFLnZhbHVlKToobmV3IEYoZnVuY3Rpb24oTSl7TShFLnZhbHVlKX0pKS50aGVuKEosSSl9RygoTD1MLmFwcGx5KEIsS3x8W10pKS5uZXh0KCkpfSl9LFxuaz10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihCLEspe2Z1bmN0aW9uIEYoRSl7cmV0dXJuIGZ1bmN0aW9uKE0pe3JldHVybiBMKFtFLE1dKX19ZnVuY3Rpb24gTChFKXtpZihBKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7ejspdHJ5e2lmKEE9MSxKJiYoST1FWzBdJjI/SltcInJldHVyblwiXTpFWzBdP0pbXCJ0aHJvd1wiXXx8KChJPUpbXCJyZXR1cm5cIl0pJiZJLmNhbGwoSiksMCk6Si5uZXh0KSYmIShJPUkuY2FsbChKLEVbMV0pKS5kb25lKXJldHVybiBJO2lmKEo9MCxJKUU9W0VbMF0mMixJLnZhbHVlXTtzd2l0Y2goRVswXSl7Y2FzZSAwOmNhc2UgMTpJPUU7YnJlYWs7Y2FzZSA0OnJldHVybiB6LmxhYmVsKysse3ZhbHVlOkVbMV0sZG9uZTohMX07Y2FzZSA1OnoubGFiZWwrKztKPUVbMV07RT1bMF07Y29udGludWU7Y2FzZSA3OkU9ei5sLnBvcCgpO3ouaS5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoST16LmksST0wPEkubGVuZ3RoJiZcbklbSS5sZW5ndGgtMV0pJiYoNj09PUVbMF18fDI9PT1FWzBdKSl7ej0wO2NvbnRpbnVlfWlmKDM9PT1FWzBdJiYoIUl8fEVbMV0+SVswXSYmRVsxXTxJWzNdKSl6LmxhYmVsPUVbMV07ZWxzZSBpZig2PT09RVswXSYmei5sYWJlbDxJWzFdKXoubGFiZWw9SVsxXSxJPUU7ZWxzZSBpZihJJiZ6LmxhYmVsPElbMl0pei5sYWJlbD1JWzJdLHoubC5wdXNoKEUpO2Vsc2V7SVsyXSYmei5sLnBvcCgpO3ouaS5wb3AoKTtjb250aW51ZX19RT1LLmNhbGwoQix6KX1jYXRjaChNKXtFPVs2LE1dLEo9MH1maW5hbGx5e0E9ST0wfWlmKEVbMF0mNSl0aHJvdyBFWzFdO3JldHVybnt2YWx1ZTpFWzBdP0VbMV06dm9pZCAwLGRvbmU6ITB9fXZhciB6PXtsYWJlbDowLG06ZnVuY3Rpb24oKXtpZihJWzBdJjEpdGhyb3cgSVsxXTtyZXR1cm4gSVsxXX0saTpbXSxsOltdfSxBLEosSSxHO3JldHVybiBHPXtuZXh0OkYoMCksXCJ0aHJvd1wiOkYoMSksXCJyZXR1cm5cIjpGKDIpfSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZcbihHW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLEd9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygyMDYpO3ZhciBsPWcoMTUpLG09ZygyNTApLG49ZygyMDkpO2c9ZygxODcpO3ZhciByPWcuZGVmYXVsdC5ucCxxPWcuZGVmYXVsdC5scCx1PWcuZGVmYXVsdC5rcCx3PW4uZGVmYXVsdC5hYyx4PW4uZGVmYXVsdC5TYyxDPWwuZGVmYXVsdC5TYSxEPVwiMTYweDYwMCAzMDB4NjAwIDMwMHgyNTAgNzI4eDkwIDMyMHg1MCAzMjB4MTAwIDMwMHg1MFwiLnNwbGl0KFwiIFwiKTtnPWZ1bmN0aW9uKEIpe2Z1bmN0aW9uIEsoRixMLHope0Y9Qi5jYWxsKHRoaXMsRixMLHopfHx0aGlzO0YuUWc9TC5PbTtGLnZHPUwuSU87Ri5ibT1MLlVoO3JldHVybiBGfWQoSyxCKTtLLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIEMucmZ9O0sucHJvdG90eXBlLm9nPWZ1bmN0aW9uKEYpe3JldHVybiBtLmRlZmF1bHQuUm0oRCxGKX07XG5LLnByb3RvdHlwZS5pZT1mdW5jdGlvbigpezA9PT10aGlzLk0ubGVuZ3RoPyh0aGlzLkFhPTAsdGhpcy5OYigpKTp0aGlzLnVGKCl9O0sucHJvdG90eXBlLlVDPWZ1bmN0aW9uKCl7cmV0dXJuIGgodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIGsodGhpcyxmdW5jdGlvbihGKXtzd2l0Y2goRi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuUWcuS2goe2dkcHI6e2VuYWJsZWQ6ITEsY29uc2VudDpcIlwifSxwYXJhbXM6e3VzX3ByaXZhY3k6dGhpcy5ibS5IYn19KV07Y2FzZSAxOnJldHVybiBGLm0oKSxbMix0aGlzXX19KX0pfTtLLnByb3RvdHlwZS51Rj1mdW5jdGlvbigpe2godGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIEYsTDtyZXR1cm4gayh0aGlzLGZ1bmN0aW9uKHope3N3aXRjaCh6LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5Ecyh7aHY6MSxyZWFkeVN0YXRlOncubmV9KS5VQygpXTtjYXNlIDE6ei5tKCksei5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gei5pLnB1c2goWzIsXG40LCw1XSksWzQsdGhpcy5RZy53Syh7c2xvdHM6W3tzbG90SUQ6W1wiYW16LXNsb3RcIix0aGlzLlFnLlZuKCldLmpvaW4oXCItXCIpLHNsb3ROYW1lOmEodGhpcy52Ryksc2l6ZXM6dGhpcy5NLm1hcChiKX1dfSldO2Nhc2UgMzpyZXR1cm4gRj16Lm0oKSx0aGlzLllFKEYpLFszLDVdO2Nhc2UgNDpyZXR1cm4gTD16Lm0oKSx0aGlzLmRoKEwpLFszLDVdO2Nhc2UgNTpyZXR1cm5bMix0aGlzLkRzKHtodjowLHJlYWR5U3RhdGU6dy5taX0pLk5iKCldfX0pfSl9O0sucHJvdG90eXBlLkRzPWZ1bmN0aW9uKEYpe3ZhciBMPUYucmVhZHlTdGF0ZTt0aGlzLkFhPUYuaHY7dGhpcy5UYT1MO3JldHVybiB0aGlzfTtLLnByb3RvdHlwZS5ZRT1mdW5jdGlvbihGKXtGLmxlbmd0aCYmdGhpcy5PYihGWzBdKX07Sy5wcm90b3R5cGUuT2I9ZnVuY3Rpb24oRil7dmFyIEw9dGhpcztpZigwPnRoaXMuTS5pbmRleE9mKEYuc2l6ZSkpcmV0dXJuIHRoaXMuaGEoeC5HZyxGKTt2YXIgej1iKEYuc2l6ZSksQT16WzBdO1xuej16WzFdO3ZhciBKPUYuYW16bmJpZCxJPW0uZGVmYXVsdC5tayhmdW5jdGlvbihHKXtyZXR1cm4gTC5RZy5OTihHLmRvYyxHLmJpZElkKX0pO3JldHVybiB0aGlzLlBnKHtpYTp0aGlzLlFnLlFKKEopLGZlOkosd2lkdGg6QSxoZWlnaHQ6eix5Yzp0aGlzLmp6KEYuYW16bmlpZCxJKSxXOjF9KX07Sy5wcm90b3R5cGUuTXE9ZnVuY3Rpb24oRil7cmV0dXJuIHRoaXMuTGIuUWooRix0aGlzLkIoKSwxKX07Sy5wcm90b3R5cGUuano9ZnVuY3Rpb24oRixMKXtyZXR1cm5cIjxzY3JpcHQ+cGFyZW50LnJ1bkpzb25QUmVjZWl2ZXIoJ1wiKyhMK1wiJywgeyBkb2M6IGRvY3VtZW50LCBiaWRJZDogJ1wiKyhGK1wiJyB9KTtcXHgzYy9zY3JpcHQ+XCIpKX07Sy5wcm90b3R5cGUuZGg9ZnVuY3Rpb24oRil7dmFyIEw9dGhpcyx6LEE9cChbYyhyLkRpKSxmKHEubWUpXSksSj1wKFtjKHIudHcpLGUodS56eCldKSxJPXAoW2Moci5EaSksZihxLllwKV0pO0E9dihbe21hdGNoOkEsVWQ6eC5tZX0se21hdGNoOkosVWQ6eC56ZH0sXG57bWF0Y2g6SSxVZDp4LnpkfV0seC50Zik7KHo9e30selt4Lm1lXT1mdW5jdGlvbigpe3JldHVybiBMLmhhKHgubWUpfSx6W3guemRdPWZ1bmN0aW9uKCl7cmV0dXJuIEwuaGEoeC56ZCxudWxsLEYubWVzc2FnZSl9LHpbeC50Zl09ZnVuY3Rpb24oKXtyZXR1cm4gTC5oYSh4LnRmLG51bGwsRi5tZXNzYWdlKX0seilbQShGKV0oKTtyZXR1cm4gdGhpc307cmV0dXJuIEt9KHkuZGVmYXVsdCk7dC5kZWZhdWx0PUgucHA9Z30sezE1OjE1LDE4NzoxODcsMjA2OjIwNiwyMDk6MjA5LDI1MDoyNTB9XSwxODc6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9e25wOntEaTpcIjMzeEFtYXpvbkJpZGRlckVycm9yXCIsdHc6XCJhcHNMaWJyYXJ5RXJyb3JcIn0sbHA6e21lOlwiTmV0d29yayBFcnJvclwiLFlwOlwiUHJpY2luZyBFcnJvclwifSx3dzp7Tnc6XCJhbWF6b25BcHNGYWNhZGUtZmV0Y2hCaWRzXCJ9LGtwOnt5ZDpcIkVycm9yXCIsXG56eDpcIlN5bnRheEVycm9yXCJ9LG9wOntsaTpcImJpZHJlc3BvbnNlXCIseWQ6XCJlcnJvclwifX19LHt9XSwxODg6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIHA9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsZil7ZS5fX3Byb3RvX189Zn18fGZ1bmN0aW9uKGUsZil7Zm9yKHZhciBjIGluIGYpZi5oYXNPd25Qcm9wZXJ0eShjKSYmKGVbY109ZltjXSl9O3JldHVybiBmdW5jdGlvbihlLGYpe2Z1bmN0aW9uIGMoKXt0aGlzLmNvbnN0cnVjdG9yPWV9cChlLGYpO2UucHJvdG90eXBlPW51bGw9PT1mP09iamVjdC5jcmVhdGUoZik6KGMucHJvdG90eXBlPWYucHJvdG90eXBlLG5ldyBjKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1mdW5jdGlvbihwKXtmdW5jdGlvbiBlKGYpe3ZhciBjPXAuY2FsbCh0aGlzLGYuZS5tc2cpfHxcbnRoaXM7Yy50eXBlPWYuX3R5cGU7Yy5sb2NhdGlvbj1mLmUuZWw7Yy5xSz1mLmUuZXQ7cmV0dXJuIGN9dihlLHApO3JldHVybiBlfShFcnJvcik7dC5kZWZhdWx0PWd9LHt9XSwxODk6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGspe2Zvcih2YXIgbCxtPTEsbj1hcmd1bWVudHMubGVuZ3RoO208bjttKyspe2w9YXJndW1lbnRzW21dO2Zvcih2YXIgciBpbiBsKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLHIpJiYoa1tyXT1sW3JdKX1yZXR1cm4ga307T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygxODgpO3k9ZygxODcpO3ZhciBlPWcoMjUwKSxmPXkuZGVmYXVsdC5ucCxjPXkuZGVmYXVsdC5scCxhPXkuZGVmYXVsdC5rcCxiPXkuZGVmYXVsdC5vcCxkPXtwdWJJRDpcIjI4NDBmMDZjLTVkODktNDg1My1hMDNlLTNiZmE1NjdkZDMzY1wifSxoPXtlOnttc2c6Yy5tZSxcbmVsOnkuZGVmYXVsdC53dy5OdyxldDphLnlkfSxfdHlwZTpmLkRpfTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gayhsLG0pe3ZhciBuPXRoaXM7dGhpcy5EZj1sO3RoaXMuT0U9bTt0aGlzLmhtPVwiUEVORElOR1wiO3RoaXMuZXM9e307dGhpcy5Jcj1mdW5jdGlvbihyKXtyZXR1cm4gbi56QyhyKX19ay5wcm90b3R5cGUuS2g9ZnVuY3Rpb24obCl7dmFyIG09dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obil7bS5EZi5XaihcImluaXRcIikodih7fSxkLGwpLG4pfSl9O2sucHJvdG90eXBlLndLPWZ1bmN0aW9uKGwpe3ZhciBtPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gcSh3KXtyZXR1cm4gcihuZXcgcC5kZWZhdWx0KHcpKX1mdW5jdGlvbiB1KCl7cmV0dXJuIHIobmV3IHAuZGVmYXVsdChoKSl9bS5FRShmdW5jdGlvbigpe3U9ZnVuY3Rpb24odyl7cmV0dXJuIG4odyl9fSk7bS5ZaSgpLm9uY2UoYi55ZCxxKTttLkRmLldqKFwiZmV0Y2hCaWRzXCIpKGwsXG5mdW5jdGlvbih3KXttLllpKCkubmEoYi55ZCxxKTt1KHcpfSl9KX07ay5wcm90b3R5cGUuTk49ZnVuY3Rpb24obCxtKXt0aGlzLkRmLldqKFwicmVuZGVySW1wXCIpKGwsbSx7fSk7cmV0dXJuIHRoaXN9O2sucHJvdG90eXBlLlZuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRGYuVm4oKX07ay5wcm90b3R5cGUuUUo9ZnVuY3Rpb24obCl7dHJ5e3JldHVybiB0aGlzLk9FLlNPKGwpfWNhdGNoKG0pe3Rocm93IG5ldyBwLmRlZmF1bHQoe2U6e2V0OmEueWQsbXNnOmMuWXB9LF90eXBlOmYuRGl9KTt9fTtrLnByb3RvdHlwZS5nQz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkRmLldqKFwiZGVidWdcIikoXCJnZXRTdGF0ZVwiKS5BQVhSZXFzLmxlbmd0aC50b1N0cmluZygpfTtrLnByb3RvdHlwZS5FRT1mdW5jdGlvbihsKXtmdW5jdGlvbiBtKCl7dmFyIHI7cmV0dXJuKHI9e30sci5QRU5ESU5HPWZ1bmN0aW9uKCl7bi5iQigpO20oKX0sci5FTkFCTEVEPWZ1bmN0aW9uKCl7dHJ5e3ZhciBxPW4uZ0MoKTtcbm4uZXNbcV09bH1jYXRjaCh1KXtuLktBKCksbSgpfX0sci5ESVNBQkxFRD1mdW5jdGlvbigpe3JldHVybiBsKCl9LHIpW24uaG1dKCl9dmFyIG49dGhpczttKCl9O2sucHJvdG90eXBlLktBPWZ1bmN0aW9uKCl7dGhpcy5ZaSgpLm5hKGIubGksdGhpcy5Jcik7dGhpcy5obT1cIkRJU0FCTEVEXCJ9O2sucHJvdG90eXBlLmJCPWZ1bmN0aW9uKCl7dGhpcy5ZaSgpLnUoYi5saSx0aGlzLklyKTt0aGlzLmhtPVwiRU5BQkxFRFwifTtrLnByb3RvdHlwZS56Qz1mdW5jdGlvbihsKXtlLmRlZmF1bHQuc24odGhpcy5lc1tsLmNiXSk7cmV0dXJuIHRoaXN9O2sucHJvdG90eXBlLllpPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRGYua2MoKX07cmV0dXJuIGt9KCk7dC5kZWZhdWx0PUgudVE9Z30sezE4NzoxODcsMTg4OjE4OCwyNTA6MjUwfV0sMTkwOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxODkpLHA9ZygxOTEpLFxuZT1nKDE5MyksZj1nKDE0OCk7dC5kZWZhdWx0PUgudlE9e0RJOmZ1bmN0aW9uKGMpe3JldHVybiBuZXcgdi5kZWZhdWx0KGMsZS5kZWZhdWx0KX0sRUk6ZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBwLmRlZmF1bHQoYyl9LEpJOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmLmRlZmF1bHR9LEZJOmZ1bmN0aW9uKGMsYSl7cmV0dXJuIHAuZGVmYXVsdC53Tih7ZGU6YyxtYTphLEdIOnRoaXMuSkkoKX0pfX19LHsxNDg6MTQ4LDE4OToxODksMTkxOjE5MSwxOTM6MTkzfV0sMTkxOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihiLGQpe3ZhciBoPWQ7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBofSxzZXQ6ZnVuY3Rpb24oayl7aD1iKGspfSxlbnVtZXJhYmxlOiEwfX1mdW5jdGlvbiBwKGIsZCl7ZnVuY3Rpb24gaCh1LHcpe3JldHVybiBmdW5jdGlvbih4KXt2YXIgQz14W3VdO3hbdV09ZnVuY3Rpb24oKXtmb3IodmFyIEQ9W10sQj0wO0I8YXJndW1lbnRzLmxlbmd0aDtCKyspRFtCXT1hcmd1bWVudHNbQl07XG5kLmYuYXBwbHkoZCxbd10uY29uY2F0KEQpKTtyZXR1cm4gQy5jYWxsLmFwcGx5KEMsW3hdLmNvbmNhdChEKSl9O3JldHVybiB4fX1mdW5jdGlvbiBrKHUpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdz1bXSx4PTA7eDxhcmd1bWVudHMubGVuZ3RoO3grKyl3W3hdPWFyZ3VtZW50c1t4XTtyZXR1cm4gYi5hcHN0YWcuX1EucHVzaChbdSx3XSl9fXZhciBsLG0sbixyLHE9KGw9e2luaXQ6ayhhLklOSVQpLGZldGNoQmlkczprKGEuT3cpfSxsLl9RPVtdLGwpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLmRlZmF1bHQuZXh0ZW5kKGIsKG09e30sbS5fXzMzeF9hbXpuX21ldGE9KG49e30sbltjLnVwXT0wLG5bYy5JTklUXT1mdW5jdGlvbih1LHcpe2IuYXBzdGFnLmluaXQodSx3KTtiLl9fMzN4X2Ftem5fbWV0YVtjLklOSVRdPWZ1bmN0aW9uKHgsQyl7cmV0dXJuIEMoKX19LG5bYy5JcF09ZCxuKSxtLmFwc3RhZ0RFQlVHPXtleHBvc2VFcnJvcnM6ITB9LG0pKSwocj17fSxcbnIuYXBzdGFnRXJyb3JzPXYoaChcInB1c2hcIixmLnlkKSksci5hcHN0YWc9dihmdW5jdGlvbih1KXtyZXR1cm4gZnVuY3Rpb24odyl7cmV0dXJuIHUucmVkdWNlKGZ1bmN0aW9uKHgsQyl7cmV0dXJuIEMoeCl9LHcpfX0oW2goXCJwdW50XCIsZi5saSksaChcImJpZHNcIixmLmxpKV0pLHEpLHIpKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZT1nKDI1MCksZj1nKDE4NykuZGVmYXVsdC5vcCxjPXt1cDpcIkJJRF9SRVFVRVNUX0NPVU5URVJcIixJTklUOlwiaW5pdFwiLElwOlwiRVZFTlRfRU1JVFRFUlwifSxhPXtJTklUOlwiaVwiLE93OlwiZlwifTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihkKXt0aGlzLklpPWR9Yi53Tj1mdW5jdGlvbihkKXt2YXIgaD1kLmRlLGs9ZC5tYTtkPWQuR0g7dmFyIGw9aC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInR5bnQtYW16bi1hcHMtY29udGFpbmVyXCIpO2w/az1sLmNvbnRlbnRXaW5kb3c6KGg9cChrLlluKGguZG9jdW1lbnQuYm9keSxcbntpZDpcInR5bnQtYW16bi1hcHMtY29udGFpbmVyXCJ9KS5kZWZhdWx0VmlldyxkKSxrLnRkKHtoYzpoLmRvY3VtZW50LmJvZHksdXJsOlwiaHR0cHM6Ly9jLmFtYXpvbi1hZHN5c3RlbS5jb20vYWF4Mi9hcHN0YWcuanNcIn0pLGs9aCk7cmV0dXJuIGt9O2IucHJvdG90eXBlLldqPWZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGgoKXtmb3IodmFyIGw9W10sbT0wO208YXJndW1lbnRzLmxlbmd0aDttKyspbFttXT1hcmd1bWVudHNbbV07dmFyIG47cmV0dXJuKG49ay5JaS5hcHN0YWcpW2RdLmFwcGx5KG4sbCl9dmFyIGs9dGhpcztyZXR1cm57aW5pdDpmdW5jdGlvbigpe2Zvcih2YXIgbD1bXSxtPTA7bTxhcmd1bWVudHMubGVuZ3RoO20rKylsW21dPWFyZ3VtZW50c1ttXTt2YXIgbjtyZXR1cm4obj1rLklpLl9fMzN4X2Ftem5fbWV0YSlbYy5JTklUXS5hcHBseShuLGwpfX1bZF18fGh9O2IucHJvdG90eXBlLlZuPWZ1bmN0aW9uKCl7cmV0dXJuKyt0aGlzLklpLl9fMzN4X2Ftem5fbWV0YVtjLnVwXX07XG5iLnByb3RvdHlwZS5rYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLklpLl9fMzN4X2Ftem5fbWV0YVtjLklwXX07cmV0dXJuIGJ9KCk7dC5kZWZhdWx0PUgud1E9Z30sezE4NzoxODcsMjUwOjI1MH1dLDE5MjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1cImV6RjdZbnRuTVdscGJ6b3dMalExTEdZd2JqUTZObjBzTVdkbk5IRnZPakF1TWpVc04yczNOelZ6T2pBdU5qVXNaM3AwWlRZNE9qQXVNRFVzZFdJNWQycHJPakF1TVRVc2IzSnBNSGN3T2pBdU16VXNkbVk0WVRKdk9qQXVOVFVzYTNadWNHbzBPakF1TnpVc1pUZDRaMk5uT2pBdU9EVXNjbXBrZVhCek9qQXVPVFVzYzNkaU1qZzZNaTQ0ZlN3eWUyTjJhSFJ6T2pNdU5peHJaRFoyTkRveE1IMHNNM3N4ZFdoaE9Eb3dMalFzZG5RNVptczZNaXh3YzJ4ak9qRTBMSGd5TjJ4ek9qRTRmU3cxZTNSeFpqUXdPakF1T0N4cGFIWnJNRG94TWl4MWVtUmhPRG95TUgwc04zc3liMnhqTURvMExqZ3NjbTVyYzJjNk1TNDJMSGR1Wkdoak9qTXVNaXhoTm1Ga1l6bzRMSGgzWW01ck9qRTJmU3c1ZXpCc2NqQm5Pak11T0N4d2EzRm5kem93TGpZc2VXcG5aem94TGpJc2VESm1hVGc2TjMwc2JIc3pORE0xY3pveExqY3NPRE4yZFc4Nk15NHpMSGd5ZG1JME9qQXVNWDBzWm5zek0zWTVZem94TXl3NVkyMDBaem93TGpJc2RHSnpkekE2TVgwc2MzdHJkRFJvY3pvd0xqTXNiVEl5YnpBNk1Ua3VOWDBzYm5zeE1UaDFPRG93TGpVc2RqQXdlbXM2TWk0eExHUnBjV3RuT2pndU5YMHNlWHN5TXpOemR6bzFMalVzYjJzMmQzYzZNQzQzTEhocGQzYzZOQzQwTEdsaVp6RnpPakV6TGpWOUxHcDdOVFo0YUdNNk1DNDVMSFUxZDNoek9qUXVNU3h1ZURZeWJ6b3hNQzQxZlN4MGV6UnpZamxqT2pFdU1TeDBjbUZ3Y3pvMExqTXNZMkV3WVc4Nk55NDFmU3h4ZTIxMmVYUmpPakV1TXl4MmJXMHdkem94TVM0MWZTeGtlMkptWjJjd09qRXVOQ3h4WlhWcGJ6bzFmU3g0ZTJGdE9EQXdPakV1TlN4MWJHVnlhem95TGpOOUxHVjdabVIwZWpRNk1TNDRMR3RrYlc4d09qTXVOSDBzY250eGRXTmpaem94TGprc2RuVTFNV002TXk0MWZTeGhlMnBxYVcwNE9qSXVNaXhrWVhKeU5Eb3hOWDBzYVh0aU9EVmpNRG95TGpVc1kyZ3phVGc2TVRndU5YMHNhSHRqT1d0b2N6b3lMallzYW5JNWFqUTZPWDBzZFh0dWNUSjJORG95TGpjc2Izb3hNV002TVRVdU5YMHNjSHN6ZVRjM2F6b3lMamtzZUhkNlkzYzZOQzQxZlN4aWV6UnlibXN3T2pFNUxITm9iM1U0T2pOOUxIWjdjbTluWlRnNk15NHhMSG8yTldack9qa3VOWDBzYlhzMGEydGpaem8yTGpVc1l6STVaSE02TXk0M0xHUmlOMnN3T2pFMkxqVjlMR2Q3YVdGelkyYzZOQzR5TEdwcWNXbHZPakUzZlN4amUyMW5aM3ByT2pRdU5peG5OM0UwWnpveE1YMHNkM3RzYmpocWF6bzBMamNzYlhjMmNITTZNVGN1Tlgwc2EzdGxOVE53WXpvMExqa3NkM1pqWVc4Nk1UUXVOWDBzTkhweWJYbHZPakl1TkN3MmFYQmxhMmM2TkN4NlpHbzJaR002TXk0NUxHOTRjR2RqWnpveE1pNDFmUT09XCJ9LFxue31dLDE5MzpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoZSxmKXtmb3IodmFyIGMgaW4gZilpZigwPT09ZS5pbmRleE9mKGMpKXJldHVyblwibnVtYmVyXCI9PT10eXBlb2YgZltjXT9mW2NdOnYoZS5zbGljZShjLmxlbmd0aCksZltjXSk7dGhyb3cgRXJyb3IoXCJLZXkgbm90IGZvdW5kOiBcIitlKTt9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz1nKDE5Mik7dmFyIHA9SlNPTi5wYXJzZShhdG9iKGcuZGVmYXVsdCkucmVwbGFjZSgvXFx7L2csXCI6e1wiKS5yZXBsYWNlKC8oXFx3Kyk6L2csJ1wiJDFcIjonKS5zbGljZSgxKSk7dC5kZWZhdWx0PUgucXA9e1NPOmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdihlLHApfWNhdGNoKGYpe3Rocm93IEVycm9yKFwiQ29kZSBub3QgZm91bmQ6IFwiK2UpO319fX0sezE5MjoxOTJ9XSwxOTQ6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIG09T2JqZWN0LnNldFByb3RvdHlwZU9mfHxcbntfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24obixyKXtuLl9fcHJvdG9fXz1yfXx8ZnVuY3Rpb24obixyKXtmb3IodmFyIHEgaW4gcilyLmhhc093blByb3BlcnR5KHEpJiYobltxXT1yW3FdKX07cmV0dXJuIGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gcSgpe3RoaXMuY29uc3RydWN0b3I9bn1tKG4scik7bi5wcm90b3R5cGU9bnVsbD09PXI/T2JqZWN0LmNyZWF0ZShyKToocS5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IHEpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcDt5PWcoMjA2KTt2YXIgZT1nKDIwOSksZj1nKDE1KSxjPWcoMjUwKTtnPWcoMjE4KTt2YXIgYT1lLmRlZmF1bHQuU2MsYj1mLmRlZmF1bHQuU2EsZD1bXCIxNjB4NjAwXCIsXCIzMDB4MjUwXCIsXCIzMDB4NjAwXCIsXCI3Mjh4OTBcIixcIjMyMHg1MFwiXSxoPXtkZXNrdG9wOlwiZGVza3RvcFwiLHRhYmxldDpcInRhYmxldG1vYmlsZVwiLG1vYmlsZTpcIm1vYmlsZXdlYlwifSxcbms9KHA9e30scFtnLmRlZmF1bHQua2FdPVwiSVNQXCIscFtnLmRlZmF1bHQuUmFdPVwiU0lBQlwiLHBbZy5kZWZhdWx0LnBhXT1cIklGRFwiLHApO3A9ZnVuY3Rpb24obSl7ZnVuY3Rpb24gbigpe3JldHVybiBudWxsIT09bSYmbS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9dihuLG0pO24ucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gYi5zZn07bi5wcm90b3R5cGUub2c9ZnVuY3Rpb24ocil7cmV0dXJuIGMuZGVmYXVsdC5SbShkLHIpfTtuLnByb3RvdHlwZS5pZT1mdW5jdGlvbigpe3ZhciByPXRoaXMuWHkoKTswPT09dGhpcy5NLmxlbmd0aD8odGhpcy5BYT0wLHRoaXMuTmIoKSk6KHRoaXMuQ3Moci5sZW5ndGgpLHIuZm9yRWFjaCh0aGlzLmVtLHRoaXMpKX07bi5wcm90b3R5cGUuWHk9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiB0aGlzLkxiLlptKHRoaXMuTSx0aGlzLkIoKSkubWFwKGZ1bmN0aW9uKHEpe3JldHVybnt1cmw6ci4keShxKSxXOnEuV319KX07bi5wcm90b3R5cGUuJHk9XG5mdW5jdGlvbihyKXtyZXR1cm4gYy5kZWZhdWx0LkNnKFwiaHR0cHM6Ly9hZHNlcnZlci11cy5hZHRlY2guYWR2ZXJ0aXNpbmcuY29tL3B1YmFwaS8zLjAvOTk5My4xLzM1ODExNTYvMC8wLztub3BlcmY9MTthbGlhcz17YWxpYXN9O2NtZD1iaWQ7Y29ycz15ZXM7YmlkZmxvb3I9e2JpZGZsb29yfTt2PTI7e3JlZ3VsYXRpb25zfVwiLHthbGlhczpuZXcgbChyLnNpemVzWzBdLHIuVyx0aGlzLnMpLGJpZGZsb29yOlN0cmluZyhyLnZrKSxyZWd1bGF0aW9uczp0aGlzLlp5KCl9KX07bi5wcm90b3R5cGUuWnk9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnMuVWguSGI7cmV0dXJuIHI/XCJ1c19wcml2YWN5PVwiK3IrXCI7XCI6XCJcIn07bi5wcm90b3R5cGUuT2I9ZnVuY3Rpb24ocixxLHUpe3ZhciB3PXRoaXMseCxDPSh4PXt9LHguT0s9ZnVuY3Rpb24oKXtyZXR1cm4gdy5EZShyLHUpfSx4Lk5PX1JFU1BPTlNFPWZ1bmN0aW9uKCl7cmV0dXJuIHcuaGEoYS4kayl9LHguRVJST1I9ZnVuY3Rpb24oKXtyZXR1cm4gdy5oYShhLlhrLFxucixcIkVycm9yIFwiK3Euc3RhdHVzKX0seCk7eD10aGlzLnZsKHIscSk7LS10aGlzLkFhO0NbeF0oKTswPT09dGhpcy5BYSYmdGhpcy5OYigpO3JldHVybiB0aGlzfTtuLnByb3RvdHlwZS52bD1mdW5jdGlvbihyLHEpe3JldHVybiAyMDAhPT1xLnN0YXR1cz9cIkVSUk9SXCI6cj9cIk9LXCI6XCJOT19SRVNQT05TRVwifTtuLnByb3RvdHlwZS5EZT1mdW5jdGlvbihyLHEpe3ZhciB1PXRoaXM7dHJ5e3ZhciB3PUpTT04ucGFyc2UocikseD13LnNlYXRiaWQ7eCYmeC5sZW5ndGgmJnhbMF0uYmlkLmZvckVhY2goZnVuY3Rpb24oQyl7dS5qaChDLHcuZXh0JiZ3LmV4dC5waXhlbHMscSl9KX1jYXRjaChDKXt0aGlzLmhhKGEuemQscixDKX1yZXR1cm4gdGhpc307bi5wcm90b3R5cGUuamg9ZnVuY3Rpb24ocixxLHUpe3IudyYmci5oJiZ0aGlzLlhHKHIscSx1KX07bi5wcm90b3R5cGUuWEc9ZnVuY3Rpb24ocixxLHUpe2lmKGMuZGVmYXVsdC5jYSh0aGlzLk0sW3IudyxyLmhdLmpvaW4oXCJ4XCIpKSl7dmFyIHc9XG5wYXJzZUZsb2F0KHIucHJpY2UpO3I9e2lhOncsZmU6dGhpcy5NaSh3KSx3aWR0aDpwYXJzZUludChyLncsMTApLGhlaWdodDpwYXJzZUludChyLmgsMTApLHljOnIuYWRtKyhxfHxcIlwiKSxXOnV9O3RoaXMuUGcocil9ZWxzZSB0aGlzLmhhKGEuR2cscil9O24ucHJvdG90eXBlLmVtPWZ1bmN0aW9uKHIpe3ZhciBxPXRoaXM7SC5FaS53SChyLnVybCxmdW5jdGlvbih1LHcpe3EuT2IodSx3LHIuVyl9KTtyZXR1cm4gdGhpc307cmV0dXJuIG59KHkuZGVmYXVsdCk7dC5kZWZhdWx0PXA7dmFyIGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBtKG4scixxKXt0aGlzLkJhPW47dGhpcy5zbT1yO3RoaXMucz1xfW0ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5zLHI9bi5wcm9kdWN0LHE9bi5PO249e3B1YmlkOnRoaXMuY0Iobi5GYSkscHJvZHVjdDprW3JdLGRldmljZWlkOmhbcV18fFwiZGVza3RvcFwiLHNpemU6dGhpcy5CYSx0aWVyOnRoaXMuc219O3JldHVybiBjLmRlZmF1bHQuQ2coXCJ7cHViaWR9X3twcm9kdWN0fV97ZGV2aWNlaWR9X0lOVExfe3NpemV9X3RpZXJ7dGllcn1cIixcbm4pfTttLnByb3RvdHlwZS5jQj1mdW5jdGlvbihuKXtyZXR1cm4gbi5yZXBsYWNlKC9bQS1aXS9nLGZ1bmN0aW9uKHIpe3JldHVyblwiLlwiK3IudG9Mb3dlckNhc2UoKX0pfTtyZXR1cm4gbX0oKX0sezE1OjE1LDIwNjoyMDYsMjA5OjIwOSwyMTg6MjE4LDI1MDoyNTB9XSwxOTU6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KEwpe3JldHVybiBmdW5jdGlvbih6KXtyZXR1cm4gei5jb2RlPT09TH19ZnVuY3Rpb24gcChMKXtyZXR1cm4gZnVuY3Rpb24oeil7cmV0dXJuIXYoTCkoeil9fWZ1bmN0aW9uIGUoTCl7cmV0dXJuIGZ1bmN0aW9uKHope3JldHVybiB6LmVyck1lc3NhZ2U9PT1MfX1mdW5jdGlvbiBmKEwpe3JldHVybiBMLnJlZHVjZShmdW5jdGlvbih6LEEpe3JldHVybiBmdW5jdGlvbihKKXtyZXR1cm4geihKKSYmQShKKX19LGZ1bmN0aW9uKCl7cmV0dXJuITB9KX1mdW5jdGlvbiBjKEwseixBKXtyZXR1cm4oTD1GW0xdLmZpbHRlcihmdW5jdGlvbihKKXtyZXR1cm4gSi5tYXRjaCh6KX0pWzBdKT9cbkwuVWQ6QX1mdW5jdGlvbiBhKEwpe3JldHVybiBMPyc8ZGl2IHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3Zpc2liaWxpdHk6aGlkZGVuXCI+PGltZyBzcmM9XCInKyhlbmNvZGVVUkkoTCkrJ1wiIGFsdD48L2Rpdj4nKTpcIlwifWZ1bmN0aW9uIGIoTCl7TD1MW0wuYWRUeXBlXTt2YXIgej0oTC50cmFja2Vyc3x8W10pLnJlZHVjZShmdW5jdGlvbihBLEope3JldHVybiBBLmNvbmNhdChKLmltcHJlc3Npb25fdXJscyl9LFtdKS5tYXAoYSkuam9pbihcIlwiKTtyZXR1cm4gTC5jb250ZW50K3p9ZnVuY3Rpb24gZChMKXtyZXR1cm4gTC5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIHouc3BsaXQoXCJ4XCIpLm1hcChOdW1iZXIpfSl9dmFyIGg9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBMPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih6LEEpe3ouX19wcm90b19fPUF9fHxmdW5jdGlvbih6LEEpe2Zvcih2YXIgSiBpbiBBKUEuaGFzT3duUHJvcGVydHkoSikmJlxuKHpbSl09QVtKXSl9O3JldHVybiBmdW5jdGlvbih6LEEpe2Z1bmN0aW9uIEooKXt0aGlzLmNvbnN0cnVjdG9yPXp9TCh6LEEpO3oucHJvdG90eXBlPW51bGw9PT1BP09iamVjdC5jcmVhdGUoQSk6KEoucHJvdG90eXBlPUEucHJvdG90eXBlLG5ldyBKKX19KCksaz10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKEwpe2Zvcih2YXIgeixBPTEsSj1hcmd1bWVudHMubGVuZ3RoO0E8SjtBKyspe3o9YXJndW1lbnRzW0FdO2Zvcih2YXIgSSBpbiB6KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh6LEkpJiYoTFtJXT16W0ldKX1yZXR1cm4gTH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGwsbSxuO3k9ZygyMDYpO3ZhciByPWcoMTUpLHE9ZygyMDkpLHU9ZygyNTApLHc9ZygyMTgpLHg9ZygyMTEpLEM9cS5kZWZhdWx0LlNjLEQ9KGw9e30sbFt3LmRlZmF1bHQua2FdPVwiSVNQXCIsbFt3LmRlZmF1bHQuUmFdPVxuXCJTSUFCXCIsbFt3LmRlZmF1bHQucGFdPVwiSUZEXCIsbCksQj0obT17fSxtW3gueGQudmZdPVwiYWJvdmVcIixtW3gueGQuUmtdPVwiYmVsb3dcIixtKSxLPXIuZGVmYXVsdC5TYSxGPShuPXt9LG4uYWRSZXF1ZXN0RmFpbHVyZT1be21hdGNoOmYoW3YoMCksZShcIkZhaWx1cmUgdG8gY29udGFjdCBlbmRwb2ludC4gVGhpcyBjYW4gYmUgY2F1c2VkIGJ5IGludmFsaWQgQ09SUyBoZWFkZXJzIG9yIGZhaWx1cmUgb2Ygc2VydmVyIHRvIHJlc3BvbmQuXCIpXSksVWQ6Qy5tZX0se21hdGNoOmYoW3YoMjAwKSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihMKXtyZXR1cm4hIUwuZXhjZXB0aW9ufX0oKV0pLFVkOkMuemR9LHttYXRjaDpmKFtwKDIwMCkscCgwKV0pLFVkOkMuWGt9XSxuLmFkQmFkUmVxdWVzdD1be21hdGNoOmYoW3YoMjAwKSxlKFwibm8gYmlkc1wiKV0pLFVkOkMuQ3h9XSxuKTtnPWZ1bmN0aW9uKEwpe2Z1bmN0aW9uIHooQSxKLEkpe0E9TC5jYWxsKHRoaXMsQSxKLEkpfHx0aGlzO0EuWmw9XG57fTtBLnJlPUouUW07QS5aZj1cIlwiO3JldHVybiBBfWgoeixMKTt6LnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIEsudWZ9O3oucHJvdG90eXBlLm9nPWZ1bmN0aW9uKEEpe3JldHVybiBBfTt6LnByb3RvdHlwZS5pZT1mdW5jdGlvbigpezA9PT10aGlzLk0ubGVuZ3RoPyh0aGlzLkFhPTAsdGhpcy5OYigpKTp0aGlzLlZDKCkuRUEoKX07ei5wcm90b3R5cGUuUXo9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLEo9dS5kZWZhdWx0LmtnKHRoaXMuTS5tYXAoZnVuY3Rpb24oSSl7cmV0dXJuIEEucy55ai5WSCh7aU46QS5zLHNpemVzOltJXSxuYW1lOkEuQigpLFJlOkEuTGJ9KX0pKS5yZWR1Y2UoZnVuY3Rpb24oSSxHKXt2YXIgRTtyZXR1cm4gdS5kZWZhdWx0LmV4dGVuZChJLChFPXt9LEVbRy5XXT0oSVtHLlddfHxbXSkuY29uY2F0KFtHXSksRSkpfSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKEopLm1hcChmdW5jdGlvbihJKXtyZXR1cm57VzpJLFZtOkpbSV19fSl9O3oucHJvdG90eXBlLlZDPVxuZnVuY3Rpb24oKXt0aGlzLnJlLnJnKCkucU8oe2Rpc2FibGVQc2E6ITAsY29uc2VudE1hbmFnZW1lbnQ6e2Rpc2FibGVkOiEwfSxrZXl3b3JkczprKHtyZWZlcnJlcjp0aGlzLnMuT0oscHJvZDpEW3RoaXMucy5wcm9kdWN0XSxjYzp0aGlzLnMuQ2F9LG51bGw9PT10aGlzLnMudmE/e306e1wiMzN4dmlzXCI6dGhpcy5zLnZhfSx0aGlzLnMuZWIsdGhpcy5zLnFjKX0pLkZIKHRoaXMucy5VaCkuREsoKTt0aGlzLlpmPVwiXCIrdGhpcy5yZS5obigpO3JldHVybiB0aGlzfTt6LnByb3RvdHlwZS5sej1mdW5jdGlvbigpe3ZhciBBPXRoaXMsSjtyZXR1cm4gSj17fSxKLmFkQXZhaWxhYmxlPWZ1bmN0aW9uKEkpe3JldHVybiBBLlBFKEkpfSxKLmFkTm9CaWQ9ZnVuY3Rpb24oSSl7cmV0dXJuIEEuU0UoSSl9LEouYWRSZXF1ZXN0RmFpbHVyZT1mdW5jdGlvbihJKXtyZXR1cm4gQS5URShJKX0sSi5hZEVycm9yPWZ1bmN0aW9uKEkpe3JldHVybiBBLlJFKEkpfSxKLmFkQmFkUmVxdWVzdD1mdW5jdGlvbihJKXtyZXR1cm4gQS5RRShJKX0sXG5KfTt6LnByb3RvdHlwZS54bD1mdW5jdGlvbigpey0tdGhpcy5BYTtyZXR1cm4gdGhpc307ei5wcm90b3R5cGUuRUE9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLEo9dGhpcy5ReigpO0ouZm9yRWFjaChmdW5jdGlvbihJKXtBLkdBKEkuVm0pfSk7Si5mb3JFYWNoKGZ1bmN0aW9uKEkpe0EuREQoSS5XLEkuVm0ubGVuZ3RoKX0pO0o9Si5yZWR1Y2UoZnVuY3Rpb24oSSxHKXtyZXR1cm4gSStHLlZtLmxlbmd0aH0sMCk7dGhpcy5DcyhKKX07ei5wcm90b3R5cGUuR0E9ZnVuY3Rpb24oQSl7QS5mb3JFYWNoKHRoaXMuRkEsdGhpcyl9O3oucHJvdG90eXBlLkREPWZ1bmN0aW9uKEEsSil7Zm9yKHZhciBJPUFycmF5KEopLEc9MDtHPEo7RysrKUlbR109XCIzM3hfYXBuX2FzdF90YWdfXCIrRytcIl9cIitBK1wiX1wiK3RoaXMuWmY7dGhpcy5yZS5QTShJKX07ei5wcm90b3R5cGUuRkE9ZnVuY3Rpb24oQSxKKXt2YXIgST1BLlcsRz1BLnRrO0o9XCIzM3hfYXBuX2FzdF90YWdfXCIrSitcIl9cIitJK1wiX1wiK3RoaXMuWmY7XG5BPXRoaXMuU3ooQSxKKTt0aGlzLnJlLldKKEEpO3RoaXMuWmxbR109STtyZXR1cm4gdGhpcy5HeShKKX07ei5wcm90b3R5cGUuR3k9ZnVuY3Rpb24oQSl7dmFyIEo9dGhpcyxJPXRoaXMubHooKTtPYmplY3Qua2V5cyhJKS5mb3JFYWNoKGZ1bmN0aW9uKEcpe0oucmUuY04oe3Njb3BlOkouWmYscks6RyxSTzpBLExMOklbR119KX0pfTt6LnByb3RvdHlwZS5RRT1mdW5jdGlvbihBKXtyZXR1cm4gdGhpcy54bCgpLmRoKGMoXCJhZEJhZFJlcXVlc3RcIixBLEMudGYpLEEpLlVsKCl9O3oucHJvdG90eXBlLlNFPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLk9iKG51bGwsdGhpcy5abFtBLnRhZ0lkXSl9O3oucHJvdG90eXBlLlBFPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLk9iKEEsdGhpcy5abFtBLnRhZ0lkXSl9O3oucHJvdG90eXBlLlJFPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLmRoKEMuR3csQSl9O3oucHJvdG90eXBlLlRFPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLnhsKCkuZGgoYyhcImFkUmVxdWVzdEZhaWx1cmVcIixcbkEsQy50ZiksQSkuVWwoKX07ei5wcm90b3R5cGUuZGg9ZnVuY3Rpb24oQSxKKXt0aGlzLmhhKEEsSixKLmVyck1lc3NhZ2UpO3JldHVybiB0aGlzfTt6LnByb3RvdHlwZS5Kej1mdW5jdGlvbihBKXt2YXIgSj10aGlzLnMsST1KLnJ2LlNtO3JldHVybiBKLnByb2R1Y3QhPT13LmRlZmF1bHQuUmF8fHUuZGVmYXVsdC5jYShJfHxbXSxBKT8xMDAxOjMxMzV9O3oucHJvdG90eXBlLlN6PWZ1bmN0aW9uKEEsSil7dmFyIEk9QS50ayxHPXRoaXMuSnooSSksRT10aGlzLnMualA/e3Jlc2VydmU6QS52a306e2tleXdvcmRzOntwZjpTdHJpbmcoQS53ayl9fTtyZXR1cm4gayh7bWVtYmVyOkcsdGFnSWQ6TnVtYmVyKEkpLHNpemVzOmQoQS5zaXplcyksdGFyZ2V0SWQ6Sixub0JpZElmVW5zb2xkOiEwLHByZWJpZDohMCxwb3NpdGlvbjoxMDAxPT09Rz9CW3gueGQudmZdOkJbeC5oaS4kbyh0aGlzLnMudmEpXX0sRSl9O3oucHJvdG90eXBlLk9iPWZ1bmN0aW9uKEEsSil7dGhpcy54bCgpO0EmJnRoaXMuRGUoQSxcbkopO3JldHVybiB0aGlzLlVsKCl9O3oucHJvdG90eXBlLlVsPWZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMuQWEpcmV0dXJuIHRoaXM7dGhpcy5yZS56dih0aGlzLlpmKTtyZXR1cm4gdGhpcy5OYigpfTt6LnByb3RvdHlwZS5CQz1mdW5jdGlvbihBKXt2YXIgSj1BLmFkVHlwZTtyZXR1cm4gSiYmQVtKXSYmQVtKXS5jb250ZW50fTt6LnByb3RvdHlwZS5DQz1mdW5jdGlvbihBKXtyZXR1cm4gQS53aWR0aCYmQS5oZWlnaHR9O3oucHJvdG90eXBlLnhEPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLkNDKEEpJiZ0aGlzLkJDKEEpfTt6LnByb3RvdHlwZS5EZT1mdW5jdGlvbihBLEope3ZhciBJPXRoaXMucy55aixHPUkuQk07ST1JLkpNO3JldHVybiBHKEEuY3JlYXRpdmVJZC50b1N0cmluZygpKXx8IXRoaXMueEQoQSk/dGhpczpJKEEsdGhpcy5NKT90aGlzLlBnKHRoaXMuR0IoQSxKKSk6dGhpcy5oYShDLkdnLEEpfTt6LnByb3RvdHlwZS5HQj1mdW5jdGlvbihBLEope3ZhciBJPUEuY3BtO3JldHVybntpYTpJLFxuZmU6dGhpcy5NaShJKSx3aWR0aDpBLndpZHRoLGhlaWdodDpBLmhlaWdodCx5YzpiKEEpLFc6Sn19O3oucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLnJlLnp2KHRoaXMuWmYpO3JldHVybiB0aGlzfTtyZXR1cm4gen0oeS5kZWZhdWx0KTt0LmRlZmF1bHQ9Z30sezE1OjE1LDIwNjoyMDYsMjA5OjIwOSwyMTE6MjExLDIxODoyMTgsMjUwOjI1MH1dLDE5NjpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYodyl7XCJfdHludF9veF9pZnJhbWVfaWRcImluIHd8fCh3Ll90eW50X294X2lmcmFtZV9pZD0wKTtyZXR1cm5cInR5bnQtb3gtaWZyYW1lLVwiKyArK3cuX3R5bnRfb3hfaWZyYW1lX2lkfXZhciBwPXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgdz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oeCxDKXt4Ll9fcHJvdG9fXz1DfXx8ZnVuY3Rpb24oeCxDKXtmb3IodmFyIEQgaW4gQylDLmhhc093blByb3BlcnR5KEQpJiZcbih4W0RdPUNbRF0pfTtyZXR1cm4gZnVuY3Rpb24oeCxDKXtmdW5jdGlvbiBEKCl7dGhpcy5jb25zdHJ1Y3Rvcj14fXcoeCxDKTt4LnByb3RvdHlwZT1udWxsPT09Qz9PYmplY3QuY3JlYXRlKEMpOihELnByb3RvdHlwZT1DLnByb3RvdHlwZSxuZXcgRCl9fSgpLGU9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbih3KXtmb3IodmFyIHgsQz0xLEQ9YXJndW1lbnRzLmxlbmd0aDtDPEQ7QysrKXt4PWFyZ3VtZW50c1tDXTtmb3IodmFyIEIgaW4geClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCxCKSYmKHdbQl09eFtCXSl9cmV0dXJuIHd9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBmO3k9ZygyMDYpO3ZhciBjPWcoMTI2KSxhPWcoMTI3KSxiPWcoMjA5KSxkPWcoMTUpLGg9ZygyNTApO2c9ZygyMTgpO3ZhciBrPWIuZGVmYXVsdC5TYyxsPWIuZGVmYXVsdC5hYyxtPWQuZGVmYXVsdC5TYSxuPVwiMTYweDYwMCAzMDB4MjUwIDMwMHg2MDAgNzI4eDkwIDMyMHg1MCA5NzB4MjUwIDMyMHg0ODAgNDgweDMyMCA3MjB4MzAwIDc1MHgzMDAgNTUweDQ4MCA1ODB4NDAwXCIuc3BsaXQoXCIgXCIpLFxucj0oZj17fSxmW2cuZGVmYXVsdC5rYV09XCJJU1BcIixmW2cuZGVmYXVsdC5SYV09XCJTSUFCXCIsZltnLmRlZmF1bHQucGFdPVwiSUZEXCIsZik7Zj1mdW5jdGlvbih3KXtmdW5jdGlvbiB4KEMsRCxCKXtDPXcuY2FsbCh0aGlzLEMsRCxCKXx8dGhpcztDLktyPXt9O3JldHVybiBDfXAoeCx3KTt4LnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIG0ueWZ9O3gucHJvdG90eXBlLm9nPWZ1bmN0aW9uKEMpe3JldHVybiBoLmRlZmF1bHQuUm0obixDKX07eC5wcm90b3R5cGUuaWU9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLk96KCk7MD09PXRoaXMuTS5sZW5ndGg/KHRoaXMuQWE9MCx0aGlzLk5iKCkpOih0aGlzLlRhPWwubmUsdGhpcy5BYT1DLmxlbmd0aCxDLmZvckVhY2godGhpcy5lbSx0aGlzKSl9O3gucHJvdG90eXBlLmVtPWZ1bmN0aW9uKEMpe3ZhciBEPXRoaXMsQj12KHRoaXMudik7Yy5kZWZhdWx0LlluKHRoaXMudi5kb2N1bWVudC5ib2R5LHtpZDpCfSxmdW5jdGlvbigpe0QuZUYoQikuSkYoQixcbkMpfSl9O3gucHJvdG90eXBlLld5PWZ1bmN0aW9uKEMpe3ZhciBEPXRoaXMucyxCPUQudmEsSz1ELkNhLEY9RC5lYjtEPUQucWM7dmFyIEw9bmV3IHUoQy5XLHRoaXMucyk7cmV0dXJuWyhuZXcgcSh0aGlzLk0pKS5yTyhMKS5DTyhCKS51TyhDLndrKS5kTyhLKS5oTyhGKS5BTyhEKS5QZCgpXX07eC5wcm90b3R5cGUuT3o9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5MYi5ZbSh0aGlzLk0sdGhpcy5CKCkpfTt4LnByb3RvdHlwZS5KRj1mdW5jdGlvbihDLEQpe3ZhciBCPXRoaXMsSz10aGlzLlpxKEMpO0suT1hfZGZwX2Fkcz10aGlzLld5KEQpO0sub3hEb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEIuT2IoQyxELlcpfTtjLmRlZmF1bHQudGQoe3VybDpcImh0dHBzOi8vMzNhY3Jvc3MtZC5vcGVueC5uZXQvdy8xLjAvanN0YWc/bmM9MTcxMTg1MjEtMzNBY3Jvc3NcIixEOkt9KX07eC5wcm90b3R5cGUuT2I9ZnVuY3Rpb24oQyxEKXtDPXRoaXMuWnEoQyk7dGhpcy5JQyhDKT90aGlzLldFKEMsRCk6XG50aGlzLkFsKGsuJGspO3JldHVybiB0aGlzfTt4LnByb3RvdHlwZS5JQz1mdW5jdGlvbihDKXtyZXR1cm4gQy5PWCYmQy5PWC5kZnBfYmlkZGVyJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgQy5PWC5kZnBfYmlkZGVyLmdldFByaWNlTWFwfTt4LnByb3RvdHlwZS5XRT1mdW5jdGlvbihDLEQpe3ZhciBCPXRoaXM7Qz10aGlzLkNGKEMpO3ZhciBLPUMuaE47dGhpcy5XRyhLLEMuZXJyb3IpJiYoT2JqZWN0LmtleXMoSykuZm9yRWFjaChmdW5jdGlvbihGKXstLUIuQWE7Qi5EZShLW0ZdLEQpfSksMD09PXRoaXMuQWEmJnRoaXMuTmIoKSl9O3gucHJvdG90eXBlLkNGPWZ1bmN0aW9uKEMpe3ZhciBEPW51bGwsQj1udWxsO3RyeXtEPUMuT1guZGZwX2JpZGRlci5nZXRQcmljZU1hcCgpfWNhdGNoKEspe0I9S31yZXR1cm57aE46RCxlcnJvcjpCfX07eC5wcm90b3R5cGUuV0c9ZnVuY3Rpb24oQyxEKXtyZXR1cm4gbnVsbCE9PUQ/KHRoaXMuQWwoay50ZixudWxsLEQpLCExKTpcIm9iamVjdFwiIT09dHlwZW9mIEM/XG4odGhpcy5BbChrLnpkLEMpLCExKTohMH07eC5wcm90b3R5cGUuRGU9ZnVuY3Rpb24oQyxEKXt2YXIgQj1DLnNpemU7QiYmKGguZGVmYXVsdC5jYSh0aGlzLk0sQik/dGhpcy5qaChDLEIsRCk6dGhpcy5oYShrLkdnLEMpKTtyZXR1cm4gdGhpc307eC5wcm90b3R5cGUuamg9ZnVuY3Rpb24oQyxELEIpe0Q9RC5zcGxpdChcInhcIik7Qz17aWE6cGFyc2VGbG9hdChDLnByaWNlKS8xMDAsd2lkdGg6cGFyc2VJbnQoRFswXSwxMCksaGVpZ2h0OnBhcnNlSW50KERbMV0sMTApLHljOkMuYWQsVzpCfTtpc05hTihDLmlhKXx8KEMuZmU9dGhpcy5NaShDLmlhKSx0aGlzLlBnKEMpKX07eC5wcm90b3R5cGUuQWw9ZnVuY3Rpb24oQyxELEIpe3RoaXMuaGEoQyxELEIpO3RoaXMuTmIoKX07eC5wcm90b3R5cGUuZUY9ZnVuY3Rpb24oQyl7dmFyIEQ9dGhpcy52LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEMpO3RoaXMuS3JbQ109YS5kZWZhdWx0LkVhKGEuZGVmYXVsdC5ZdChEKSk7cmV0dXJuIHRoaXN9O1xueC5wcm90b3R5cGUuWnE9ZnVuY3Rpb24oQyl7cmV0dXJuIHRoaXMuS3JbQ119O3JldHVybiB4fSh5LmRlZmF1bHQpO3ZhciBxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdyh4KXt0aGlzLk09eDt0aGlzLnRiPXt9O3RoaXMuQUU9MH13LnByb3RvdHlwZS5yTz1mdW5jdGlvbih4KXt0aGlzLnRiLnRrPXg7cmV0dXJuIHRoaXN9O3cucHJvdG90eXBlLkNPPWZ1bmN0aW9uKHgpe3RoaXMudGIudmE9eDtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUudU89ZnVuY3Rpb24oeCl7dGhpcy50Yi53az14O3JldHVybiB0aGlzfTt3LnByb3RvdHlwZS5kTz1mdW5jdGlvbih4KXt0aGlzLnRiLkNhPXg7cmV0dXJuIHRoaXN9O3cucHJvdG90eXBlLmhPPWZ1bmN0aW9uKHgpe3RoaXMudGIuWko9eDtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUuQU89ZnVuY3Rpb24oeCl7dGhpcy50Yi5xYz14O3JldHVybiB0aGlzfTt3LnByb3RvdHlwZS5QZD1mdW5jdGlvbigpe3JldHVybltcIi8xNzExODUyMS8yMDA2MTYxXCIsdGhpcy5NLFxudGhpcy5LQigpLHRoaXMuYnooKV19O3cucHJvdG90eXBlLmJ6PWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy50YixDPXgudmE7eD1lKHtwbGFjZW1lbnQ6eC50ay50b1N0cmluZygpLHBmOlN0cmluZyh4LndrKSxjYzp4LkNhfSx4LlpKLHgucWMpO251bGwhPT1DJiYoeFtcIjMzeHZpc1wiXT1TdHJpbmcoQykpO3JldHVybiB4fTt3LnByb3RvdHlwZS5LQj1mdW5jdGlvbigpe3JldHVyblwidHludC1veC1zbG90LVwiKyArK3RoaXMuQUV9O3JldHVybiB3fSgpLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB3KHgsQyl7dGhpcy5zbT14O3RoaXMucz1DfXcucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5zO3JldHVybiBoLmRlZmF1bHQuQ2coXCJ7cHViaWR9Ontwcm9kdWN0fTp7ZGV2aWNlfTp7cmVnaW9ufTp0aWVye3RpZXJ9XCIse3B1YmlkOnguRmEscHJvZHVjdDpyW3gucHJvZHVjdF0sZGV2aWNlOnguTyxyZWdpb246eC5yZWdpb24sdGllcjp0aGlzLnNtfSl9O3JldHVybiB3fSgpO1xudC5kZWZhdWx0PWZ9LHsxMjY6MTI2LDEyNzoxMjcsMTU6MTUsMjA2OjIwNiwyMDk6MjA5LDIxODoyMTgsMjUwOjI1MH1dLDE5NzpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgaz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24obCxtKXtsLl9fcHJvdG9fXz1tfXx8ZnVuY3Rpb24obCxtKXtmb3IodmFyIG4gaW4gbSltLmhhc093blByb3BlcnR5KG4pJiYobFtuXT1tW25dKX07cmV0dXJuIGZ1bmN0aW9uKGwsbSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9bH1rKGwsbSk7bC5wcm90b3R5cGU9bnVsbD09PW0/T2JqZWN0LmNyZWF0ZShtKToobi5wcm90b3R5cGU9bS5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMjA2KTt2YXIgcD1nKDIwOSksZT1nKDE1KSxmPWcoMjUwKSxjPXAuZGVmYXVsdC5TYyxcbmE9cC5kZWZhdWx0LmFjLGI9cC5kZWZhdWx0LmJ4LGQ9ZS5kZWZhdWx0LlNhLGg9MDtnPWZ1bmN0aW9uKGspe2Z1bmN0aW9uIGwoKXtyZXR1cm4gbnVsbCE9PWsmJmsuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXYobCxrKTtsLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIGQuQWZ9O2wucHJvdG90eXBlLm9nPWZ1bmN0aW9uKG0pe3JldHVybiBtfTtsLnByb3RvdHlwZS5pZT1mdW5jdGlvbigpe3ZhciBtPXRoaXM7dGhpcy5UYT1hLm5lO3RoaXMuQWErPTE7aCs9MTt2YXIgbj10aGlzLll5KCk7bj17bWV0aG9kOlwiUE9TVFwiLHVybDp0aGlzLnMuWG8sbU46Zi5kZWZhdWx0LnZnKG4pLGNvbnRlbnRUeXBlOlwidGV4dC9wbGFpblwifTtmLmRlZmF1bHQucmVxdWVzdChuKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiBtLk9iKHIpfSkuY2F0Y2goZnVuY3Rpb24ocil7cmV0dXJuIG0uaGEoYy5YayxyKX0pfTtsLnByb3RvdHlwZS5PYj1mdW5jdGlvbihtKXt2YXIgbj10aGlzLHIscT1cbihyPXt9LHIuT0s9ZnVuY3Rpb24oKXtyZXR1cm4gbi5EZShtKX0sci5OT19SRVNQT05TRT1mdW5jdGlvbigpe3JldHVybiBuLmhhKGMuJGspfSxyLkVSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuIG4uaGEobS5uYnIsbSxiW20ubmJyXSl9LHIpO3I9dGhpcy52bChtKTstLXRoaXMuQWE7cVtyXSgpOzA9PT10aGlzLkFhJiZ0aGlzLk5iKCk7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLkRlPWZ1bmN0aW9uKG0pe3RyeXt2YXIgbj1tLnNlYXRiaWQ7biYmMDxuLmxlbmd0aCYmKG49blswXS5iaWRbMF0sdGhpcy5qaChuLG4uZXh0LnRpZXJJZCkpfWNhdGNoKHIpe3RoaXMuaGEoYy56ZCxtLHIpfXJldHVybiB0aGlzfTtsLnByb3RvdHlwZS5qaD1mdW5jdGlvbihtLG4pe3ZvaWQgMD09PW4mJihuPTApO2lmKG0udyYmbS5oKXt2YXIgcj1bbS53LG0uaF0uam9pbihcInhcIik7aWYoZi5kZWZhdWx0LmNhKHRoaXMuTSxyKSl7dmFyIHE9cGFyc2VGbG9hdChtLnByaWNlKTttPXtXOnRoaXMuVXoocixuKSxpYTpxLFxuZmU6dGhpcy5NaShxKSx3aWR0aDpwYXJzZUludChtLncsMTApLGhlaWdodDpwYXJzZUludChtLmgsMTApLHljOm0uYWRtfTt0aGlzLlBnKG0pfWVsc2UgdGhpcy5oYShjLkdnLG0pfX07bC5wcm90b3R5cGUudmw9ZnVuY3Rpb24obSl7cmV0dXJuIG0/bS5uYnI/XCJFUlJPUlwiOlwiT0tcIjpcIk5PX1JFU1BPTlNFXCJ9O2wucHJvdG90eXBlLlVCPWZ1bmN0aW9uKCl7cmV0dXJue2Rlc2t0b3A6Mixtb2JpbGU6NCx0YWJsZXQ6NX1bdGhpcy5zLk9dfHx0aGlzLnMuT307bC5wcm90b3R5cGUuTEI9ZnVuY3Rpb24obSxuKXtyZXR1cm4gbS5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIHIuc2l6ZXNbMF09PT1ufSkuc29ydChmdW5jdGlvbihyLHEpe3JldHVybiByLlctcS5XfSkubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByLnZrfSl9O2wucHJvdG90eXBlLm9BPWZ1bmN0aW9uKCl7dmFyIG09dGhpcyxuPXRoaXMuTGIuWm0odGhpcy5NLHRoaXMuQigpKTtyZXR1cm4gdGhpcy5NLm1hcChmdW5jdGlvbihyKXt2YXIgcT1cbmYuZGVmYXVsdC5yYyhyKSx1PXEud2lkdGg7cT1xLmhlaWdodDtyPW0uTEIobixyKTtyZXR1cm57dzp1LGg6cSxleHQ6e3R0eDp7YmlkZmxvb3JzOnJ9fX19KX07bC5wcm90b3R5cGUuWXk9ZnVuY3Rpb24oKXtyZXR1cm57aWQ6dGhpcy5zLnNlc3Npb25JZCtcIjpcIitoLGltcDp0aGlzLlN5KCksc2l0ZTp0aGlzLmF6KCksZGV2aWNlOnRoaXMuUXkoKSx1c2VyOnRoaXMuZHooKSxyZWdzOnRoaXMuVXkoKX19O2wucHJvdG90eXBlLklCPWZ1bmN0aW9uKCl7dmFyIG09dGhpcztyZXR1cm4gT2JqZWN0LmtleXModGhpcy5zLlNqKS5tYXAoZnVuY3Rpb24obil7cmV0dXJue25hbWU6bixlbmFibGVkOm0ucy5TaltuXX19KX07bC5wcm90b3R5cGUuU3k9ZnVuY3Rpb24oKXtyZXR1cm5be2lkOlwiMVwiLGJhbm5lcjp7Zm9ybWF0OnRoaXMub0EoKSxleHQ6e3R0eDp7dmlld2FiaWxpdHk6e2Ftb3VudDpudWxsPT09dGhpcy5zLnZhP3ZvaWQgMDpTdHJpbmcodGhpcy5zLnZhKX19fX0sc2VjdXJlOjA8PXRoaXMudi5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKFwiaHR0cHNcIik/XG4xOjAsZXh0Ont0dHg6e3Byb2Q6dGhpcy5zLnByb2R1Y3R9fX1dfTtsLnByb3RvdHlwZS5hej1mdW5jdGlvbigpe3JldHVybntpZDp0aGlzLnMuRmEscGFnZTp0aGlzLnMueE4sZXh0Ont0dHg6e3BhZ2VjYXQ6dGhpcy5zLkNhLHNzcF9jb25maWdzOnRoaXMuSUIoKX19fX07bC5wcm90b3R5cGUuUXk9ZnVuY3Rpb24oKXtyZXR1cm57dWE6dGhpcy5zLk5tLGlwOnRoaXMucy4kbixkZXZpY2V0eXBlOnRoaXMuVUIoKSxkbnQ6dGhpcy5zLmRLLGdlbzp7ZXh0Ont0dHg6e3ByaWNpbmc6dGhpcy5zLnpofX19fX07bC5wcm90b3R5cGUuZHo9ZnVuY3Rpb24oKXtyZXR1cm57aWQ6dGhpcy5zLmlkfHx2b2lkIDAsZXh0Ont0dHg6e2RlbTp0aGlzLnMuZWJ9LGNvbnNlbnQ6XCJcIn19fTtsLnByb3RvdHlwZS5VeT1mdW5jdGlvbigpe3JldHVybntleHQ6e2dkcHI6MCx1c19wcml2YWN5OnRoaXMucy5IYn19fTtsLnByb3RvdHlwZS5Vej1mdW5jdGlvbihtLG4pe209dGhpcy5MYi5abShbbV0sdGhpcy5CKCkpO1xudmFyIHI9bS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuVz09PW59KTtyZXR1cm4gMDxyLmxlbmd0aD9yWzBdLlc6bVswXS5XfTtyZXR1cm4gbH0oeS5kZWZhdWx0KTt0LmRlZmF1bHQ9Z30sezE1OjE1LDIwNjoyMDYsMjA5OjIwOSwyNTA6MjUwfV0sMTk4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUpe3RoaXMucXE9ZTt0aGlzLlhjPW51bGw7dGhpcy5EZD1bXTt0aGlzLnphPXt9fXAucHJvdG90eXBlLnJnPWZ1bmN0aW9uKCl7dGhpcy5YYz10aGlzLnFxLnZOKCk7dGhpcy5EZD10aGlzLlhjLmFucTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuREs9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuRGQucHVzaChmdW5jdGlvbigpe2UuWGMuc2V0RW5kcG9pbnQoXCJodHRwczovL2liLmFkbnhzLmNvbVwiKX0pfTtwLnByb3RvdHlwZS5xTz1mdW5jdGlvbihlKXt2YXIgZj1cbnRoaXM7dGhpcy5EZC5wdXNoKGZ1bmN0aW9uKCl7Zi5YYy5zZXRQYWdlT3B0cyhlKX0pO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5XSj1mdW5jdGlvbihlKXt2YXIgZj10aGlzO3RoaXMuRGQucHVzaChmdW5jdGlvbigpe2YuWGMuZGVmaW5lVGFnKGUpfSl9O3AucHJvdG90eXBlLlBNPWZ1bmN0aW9uKGUpe3ZhciBmPXRoaXM7dGhpcy5EZC5wdXNoKGZ1bmN0aW9uKCl7Zi5YYy5sb2FkVGFncyhlKX0pfTtwLnByb3RvdHlwZS5jTj1mdW5jdGlvbihlKXt2YXIgZj10aGlzLGM9ZS5zY29wZSxhPWUuckssYj1lLlJPLGQ9ZS5MTDt0aGlzLnphW2NdPXRoaXMuemFbY118fHt9O3RoaXMuemFbY11bYV09dGhpcy56YVtjXVthXXx8W107dGhpcy56YVtjXVthXS5wdXNoKGIpO3RoaXMuRGQucHVzaChmdW5jdGlvbigpe2YuWGMub25FdmVudChhLGIsZCl9KX07cC5wcm90b3R5cGUuRkg9ZnVuY3Rpb24oZSl7dGhpcy5DeShlLkhiKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuenY9ZnVuY3Rpb24oZSl7dmFyIGY9XG50aGlzO3RoaXMuRGQucHVzaChmdW5jdGlvbigpe09iamVjdC5rZXlzKGYuemFbZV18fHt9KS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Yub0YoZSxjKX0pO2RlbGV0ZSBmLnphW2VdfSl9O3AucHJvdG90eXBlLmhuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXEuaG4oKX07cC5wcm90b3R5cGUuQ3k9ZnVuY3Rpb24oZSl7dGhpcy53Qih7dXNfcHJpdmFjeTplfSl9O3AucHJvdG90eXBlLndCPWZ1bmN0aW9uKGUpe3ZhciBmPXRoaXM7dGhpcy5EZC5wdXNoKGZ1bmN0aW9uKCl7di5kZWZhdWx0LmV4dGVuZChmLlhjLnJlcXVlc3RzLGUpfSl9O3AucHJvdG90eXBlLm9GPWZ1bmN0aW9uKGUsZil7dmFyIGM9dGhpczt0aGlzLnphW2VdW2ZdLmZvckVhY2goZnVuY3Rpb24oYSl7Yy5YYy5vZmZFdmVudChmLGEpfSl9O3JldHVybiBwfSgpO3QuZGVmYXVsdD1ILnlRPWd9LHsyNTA6MjUwfV0sMTk5OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7XG50LmRlZmF1bHQ9SC56UT17bG9hZDpmdW5jdGlvbih2LHApe3YudGQoe2hjOnAuZG9jdW1lbnQuYm9keSx1cmw6XCJodHRwczovL2FjZG4uYWRueHMuY29tL2FzdC9hc3QuanNcIn0pO3JldHVybiB0aGlzfX19LHt9XSwyMDA6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI1MCk7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAoZSl7dGhpcy5EeT1lO3RoaXMuWWM9bnVsbH1wLnByb3RvdHlwZS5mTT1mdW5jdGlvbihlLGYpe3ZhciBjPWUuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0eW50LWFwbi1hc3QtY29udGFpbmVyXCIpO2lmKGMpcmV0dXJuIHRoaXMuWWM9Yy5jb250ZW50V2luZG93LHRoaXM7ZT1mLlluKGUuZG9jdW1lbnQuYm9keSx7aWQ6XCJ0eW50LWFwbi1hc3QtY29udGFpbmVyXCJ9KS5kZWZhdWx0Vmlldzt0aGlzLkR5LmxvYWQoZixlKTt0aGlzLlljPWU7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLnZOPVxuZnVuY3Rpb24oKXt2LmRlZmF1bHQuZXh0ZW5kKHRoaXMuWWMse2FwbnRhZzp0aGlzLlljLmFwbnRhZ3x8e2FucTpbXX19KTtyZXR1cm4gdGhpcy5ZYy5hcG50YWd9O3AucHJvdG90eXBlLmhuPWZ1bmN0aW9uKCl7dGhpcy5ZYy5fX2FwbnNjb3BlPXRoaXMuWWMuX19hcG5zY29wZXx8MDt0aGlzLlljLl9fYXBuc2NvcGUrKztyZXR1cm4gdGhpcy5ZYy5fX2FwbnNjb3BlfTtyZXR1cm4gcH0oKTt0LmRlZmF1bHQ9SC5BUT1nfSx7MjUwOjI1MH1dLDIwMTpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoYyxhKXt2YXIgYj1hLnJ2LGQ9Yy5XLTE7cmV0dXJuIE9iamVjdC5rZXlzKGIpLnJlZHVjZShmdW5jdGlvbihoLGspeyhrPWJba11bZF0pJiZoLnB1c2gocCh7dGs6a30sYykpO3JldHVybiBofSxbXSl9dmFyIHA9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihjKXtmb3IodmFyIGEsYj0xLGQ9YXJndW1lbnRzLmxlbmd0aDtiPGQ7YisrKXthPWFyZ3VtZW50c1tiXTtmb3IodmFyIGggaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxcbmgpJiYoY1toXT1hW2hdKX1yZXR1cm4gY307T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGU9ZygyNTApLGY9XCIxNzE4MzQ2MSAyNzUyODQ3OCAxODE1ODMwNSAxODE1ODM0NCAyMDE5NTEzNyAyNTE2MDM2NiAzOTA0MTM2MiAzOTIwOTI3OCAxOTgyNDIyMCAzOTA0MTM0MSAzOTA0MTM1NyAxOTgyNDIxNyAxODE1ODM0MyAzOTIwOTI1MyAzOTIwOTMyMSAzOTIwOTMwNCAyOTU1NzQ4MyAyOTU1NzU3NyAyOTU1NzUwMyA0NTQ4MzMxMiAyOTU1NzUzMyAyOTU1NzU3NSAyOTU1NzUzNiA0MTgyMTI4OCA0MTgyMTI4OSA0MjUxOTUxNSA0MjUxOTc1NCA0MjUxOTY0MyA0MjUxOTc1NiA0MjUxOTc1NSA0MjUxOTY0MSA0MjUxOTQ5NiA0OTM1NTk1MSA1NjQ4ODU0MiA0OTM1NjAwM1wiLnNwbGl0KFwiIFwiKTtnPXtCTTpmdW5jdGlvbihjKXtyZXR1cm4gYyYmZS5kZWZhdWx0LmNhKGYsU3RyaW5nKGMpKX0sVkg6ZnVuY3Rpb24oYyl7dmFyIGE9Yy5pTjtjPVxuYy5SZS5ZbShjLnNpemVzLGMubmFtZSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiB2KGIsYSl9KTtyZXR1cm4gZS5kZWZhdWx0LmtnKGMpfSxKTTpmdW5jdGlvbihjLGEpe2M9ZS5kZWZhdWx0LlBjKHt3aWR0aDpjLndpZHRoLGhlaWdodDpjLmhlaWdodH0pO3JldHVybiBlLmRlZmF1bHQuY2EoYSxjKX0sdFA6Zn07SC5CUT1nO3QuZGVmYXVsdD1nfSx7MjUwOjI1MH1dLDIwMjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQgaW4gYiliLmhhc093blByb3BlcnR5KGQpJiYoYVtkXT1iW2RdKX07cmV0dXJuIGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZCgpe3RoaXMuY29uc3RydWN0b3I9YX1jKGEsYik7YS5wcm90b3R5cGU9bnVsbD09PWI/T2JqZWN0LmNyZWF0ZShiKTpcbihkLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgZCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygyMDkpO3ZhciBwPWcoMjUwKTtnPWcoMTQ4KTt2YXIgZT15LmRlZmF1bHQuYWMsZj1bXCJhbGxiaWRzYmFja1wiXTtnPWZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGEoYixkLGgpe3ZhciBrPWMuY2FsbCh0aGlzKXx8dGhpcztrLiRhKGEuSCgpKTtrLk09YjtrLkxiPWQ7ay5PeT1oO2sudGU9W107ay5UYT1lLk5PTkU7ay5Gcj0wO3JldHVybiBrfXYoYSxjKTthLnByb3RvdHlwZS5uSD1mdW5jdGlvbihiLGQsaCl7Yj10aGlzLk95Lk5JKGIsZCxoKTt0aGlzLnRlLnB1c2goYil9O2EucHJvdG90eXBlLmllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpezA9PT0tLWguRnImJmguTmIoKX1mdW5jdGlvbiBkKCl7aC5UYT1lLmNsfXZhciBoPXRoaXM7dGhpcy5Gcj10aGlzLnRlLmxlbmd0aDt0aGlzLlRhPWUubmU7dGhpcy50ZS5mb3JFYWNoKGZ1bmN0aW9uKGspe2sub25jZShcImJpZHJlc3BvbnNlXCIsXG5kKTtrLm9uY2UoXCJhbGxiaWRzYmFja1wiLGIpO2suaWUoKX0pfTthLnByb3RvdHlwZS56bj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRlLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gMDxiLk0ubGVuZ3RofSl9O2EucHJvdG90eXBlLmtMPWZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmYXVsdC5RZSh0aGlzLnRlLHRoaXMuem4oKSl9O2EucHJvdG90eXBlLkNoPWZ1bmN0aW9uKCl7dmFyIGI9W107dGhpcy56bigpLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGg9ZC5oTCgpOzA8aC5pYT9iLnB1c2goe0FjOmQuQigpLHN0YXR1czpkLlRhLGlhOmguaWEsd2lkdGg6aC53aWR0aCxoZWlnaHQ6aC5oZWlnaHQsc2l6ZTpbaC53aWR0aCxoLmhlaWdodF0uam9pbihcInhcIikseWM6aC55YyxXOmguVyxmZTpoLmZlLHNvOmQuWGwsVHU6ZC5jan0pOmIucHVzaCh7QWM6ZC5CKCksc3RhdHVzOmQuVGEsaWE6MCxXOjAsZmU6XCIwXCIsc286ZC5YbCxUdTpkLmNqfSl9LHRoaXMpO3JldHVybiBifTthLnByb3RvdHlwZS5pTD1cbmZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuQ2goKS5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIGguQWM9PT1ifSk7cmV0dXJuIDA8ZC5sZW5ndGg/ZFswXTpudWxsfTthLnByb3RvdHlwZS5VSz1mdW5jdGlvbihiKXt2YXIgZD10aGlzLnRlLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gaC5CKCk9PT1ifSk7cmV0dXJuIDA8ZC5sZW5ndGg/ZFswXTpudWxsfTthLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy50ZS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3JldHVybiBiLmooKX0pO3RoaXMuSigpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5OYj1mdW5jdGlvbigpe3RoaXMuVGE9ZS5taTt0aGlzLmYoXCJhbGxiaWRzYmFja1wiKTtyZXR1cm4gdGhpc307YS5IPWZ1bmN0aW9uKCl7cmV0dXJuIGZ9O3JldHVybiBhfShnLmRlZmF1bHQpO3QuZGVmYXVsdD1nfSx7MTQ4OjE0OCwyMDk6MjA5LDI1MDoyNTB9XSwyMDM6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIixcbnt2YWx1ZTohMH0pO3ZhciB2PWcoMjA0KSxwPWcoMjExKTt5PWcoMTUpO3ZhciBlPWcoMjM4KSxmPWcoMjUwKSxjPWcoMjE4KSxhPXkuZGVmYXVsdC5TYSxiPVtdO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGgpe3RoaXMubGE9aC5jb250ZXh0O3RoaXMuaGo9aC5wYjt0aGlzLlNyPWgueU47dGhpcy5DRz1oLlFPO3RoaXMudj1oLkQ7dGhpcy5LaT17YVA6e3VybDpoLlhvfSxUczp7Qkg6aC5RbSxYTDpoLnlqfSx5SDp7dEs6aC5PbX19O3RoaXMuYT17RGI6bnVsbCxtYTpoLm1hfTt0aGlzLkJmPW51bGx9ZC5wcm90b3R5cGUuTm89ZnVuY3Rpb24oaCl7dGhpcy5CZj1oO3JldHVybiB0aGlzfTtkLnByb3RvdHlwZS5ZaD1mdW5jdGlvbihoKXt0aGlzLmEuRGI9aDtyZXR1cm4gdGhpc307ZC5wcm90b3R5cGUuUGQ9ZnVuY3Rpb24oaCxrKXt2YXIgbD10aGlzLmNDKGspLG09dGhpcy5oai5sdCgpO2g9di5kZWZhdWx0LkxJKHtqZjpoLHNpemVzOmssUmU6bX0pO3RoaXMuYnkoaCxsKTtyZXR1cm4gaH07XG5kLnByb3RvdHlwZS5ieT1mdW5jdGlvbihoLGspe3ZhciBsPXRoaXMsbT1rLmdlLG49ay5wbixyPXRoaXMuWXooKTtuPXRoaXMuQ0cobik7dGhpcy5XQihuLG0scikuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgdT1sLkhCKHttSDpxLG9JOmssdmE6cn0pO2gubkgocSx1LGwudil9KX07ZC5wcm90b3R5cGUuY0M9ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXMubGEuTWEoZS5kZWZhdWx0LiRiLHtmaWx0ZXJzOntzaXplOmhbMF19LFJiOnRoaXMuYS5EYn0pfTtkLnByb3RvdHlwZS5IQj1mdW5jdGlvbihoKXt2YXIgaz1oLm1ILGw9aC5vSTtoPWgudmE7dmFyIG07cmV0dXJuKG09e30sbVthLnVmXT10aGlzLkZCLG1bYS5zZl09dGhpcy5FQixtW2EueWZdPXRoaXMuSkIsbVthLkFmXT10aGlzLk5CLG1bYS5yZl09dGhpcy5EQixtKVtrXS5jYWxsKHRoaXMsbCxoKX07ZC5wcm90b3R5cGUuREI9ZnVuY3Rpb24oaCl7cmV0dXJue09tOnRoaXMuS2kueUgudEssVWg6e0hiOnRoaXMubGEuRmgoKS5IYn0sXG5JTzp7RmE6aC5GYSxwcm9kdWN0OmguZ2UsTzpoLk8scmVnaW9uOmgucmVnaW9ufX19O2QucHJvdG90eXBlLlJxPWZ1bmN0aW9uKCl7cmV0dXJue0hiOnRoaXMubGEuRmgoKS5IYn19O2QucHJvdG90eXBlLkZCPWZ1bmN0aW9uKGgsayl7dmFyIGw9aC5nZSxtPWguTEgsbj1oLk1IO2g9dGhpcy5kRShsLGssaC5DSCk7dmFyIHI9dGhpcy5sYS5YZCgpLkNhLHE9dGhpcy5sYS5maygpLHU9cS5lYjtxPXEucWM7cmV0dXJue1VoOnRoaXMuUnEoKSxDYTpyLGViOnUscWM6cSxPSjp0aGlzLlNyLHZhOmsscnY6aCxwcm9kdWN0OmwsbWE6dGhpcy5hLm1hLFFtOnRoaXMuS2kuVHMuQkgsTEg6bSx5ajp0aGlzLktpLlRzLlhMLGpQOm59fTtkLnByb3RvdHlwZS5FQj1mdW5jdGlvbihoKXtyZXR1cm57RmE6aC5GYSxwcm9kdWN0OmguZ2UsTzpoLk8sVWg6dGhpcy5ScSgpfX07ZC5wcm90b3R5cGUuSkI9ZnVuY3Rpb24oaCxrKXt2YXIgbD10aGlzLmxhLmZrKCk7cmV0dXJue0NhOnRoaXMubGEuWGQoKS5DYSxcbmViOmwuZWIscWM6bC5xYyx2YTprLEZhOmguRmEscHJvZHVjdDpoLmdlLE86aC5PLHJlZ2lvbjpoLnJlZ2lvbn19O2QucHJvdG90eXBlLk5CPWZ1bmN0aW9uKGgsayl7dmFyIGw9dGhpcy5sYS5YZCgpLkNhLG09aC5TaixuPWguemgscj1oLkZhLHE9dGhpcy5sYS5UdCgpLHU9cS5lSyx3PXEuQnQseD1xLiRuO3E9cS5ObTt2YXIgQz10aGlzLmxhLkZoKCkuSGIsRD10aGlzLmxhLmZrKCk7cmV0dXJue05tOnEsQ2E6bCxPOncsZEs6dSxTajptLHpoOm4saWQ6RC5rUCwkbjp4LGViOkQuZWIscHJvZHVjdDpoLmdlLEZhOnIseE46dGhpcy5TcixzZXNzaW9uSWQ6dGhpcy5sYS5JbigpLnNlc3Npb25JZCxYbzp0aGlzLktpLmFQLnVybCxIYjpDLHZhOmt9fTtkLnByb3RvdHlwZS5Zej1mdW5jdGlvbigpe3JldHVybiB0aGlzLkJmP3RoaXMuQmYuJHMoKTpudWxsfTtkLnByb3RvdHlwZS5kRT1mdW5jdGlvbihoLGssbCl7dmFyIG09cC51dy5uSihsKTtsPW0uYnUocC54ZC52Zik7bT1tLmJ1KHAueGQuUmspO1xucmV0dXJuIGg9PT1jLmRlZmF1bHQua2E/e1NtOmwsWnM6W119OnAuaGkuJG8oayk9PT1wLnhkLnZmP3tTbTpsLFpzOm19OntTbTpbXSxaczptfX07ZC5wcm90b3R5cGUuV0I9ZnVuY3Rpb24oaCxrLGwpe2w9cC5oaS4kbyhsKTtyZXR1cm4gayE9PWMuZGVmYXVsdC5SYXx8bD09PXAueGQudmY/aDpoLmZpbHRlcihmdW5jdGlvbihtKXtyZXR1cm4hZi5kZWZhdWx0LmNhKGIsbSl9KX07cmV0dXJuIGR9KCk7dC5kZWZhdWx0PWd9LHsxNToxNSwyMDQ6MjA0LDIxMToyMTEsMjE4OjIxOCwyMzg6MjM4LDI1MDoyNTB9XSwyMDQ6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIwMikscD1nKDIwNyksZT17fTtnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpe31mLkxJPWZ1bmN0aW9uKGMpe3ZhciBhPWMuamYsYj1jLnNpemVzO2M9Yy5SZTt2YXIgZD1mLk9JKGIsYyk7Yj1mLmVNKGIsYyxkKTtyZXR1cm4gZVthXT1cbmJ9O2YuT0k9ZnVuY3Rpb24oYyxhKXtyZXR1cm4gbmV3IHAuZGVmYXVsdChjLGEpfTtmLmVNPWZ1bmN0aW9uKGMsYSxiKXtyZXR1cm4gbmV3IHYuZGVmYXVsdChjLGEsYil9O2YuUXQ9ZnVuY3Rpb24oYyl7cmV0dXJuIGVbY118fG51bGx9O3JldHVybiBmfSgpO3QuZGVmYXVsdD1nO0guamk9Z30sezIwMjoyMDIsMjA3OjIwN31dLDIwNTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILndwPVt7dGhyZXNob2xkOjEsaWM6NX0se3RocmVzaG9sZDo1LGljOjEwfSx7dGhyZXNob2xkOjIwLGljOjUwfSx7dGhyZXNob2xkOjEwMCxpYzo1MDB9XX0se31dLDIwNjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgaz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24obCxtKXtsLl9fcHJvdG9fXz1tfXx8XG5mdW5jdGlvbihsLG0pe2Zvcih2YXIgbiBpbiBtKW0uaGFzT3duUHJvcGVydHkobikmJihsW25dPW1bbl0pfTtyZXR1cm4gZnVuY3Rpb24obCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sfWsobCxtKTtsLnByb3RvdHlwZT1udWxsPT09bT9PYmplY3QuY3JlYXRlKG0pOihuLnByb3RvdHlwZT1tLnByb3RvdHlwZSxuZXcgbil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygyMDkpO3ZhciBwPWcoMjUwKSxlPWcoMTQ4KSxmPWcoMjE1KSxjPWcoMjA1KSxhPXkuZGVmYXVsdC5hYyxiPXkuZGVmYXVsdC5TYyxkPXkuZGVmYXVsdC5waSxoPVtcImJpZHJlc3BvbnNlXCIsXCJiaWRlcnJvclwiLFwiYWxsYmlkc2JhY2tcIl07Zz1mdW5jdGlvbihrKXtmdW5jdGlvbiBsKG0sbixyKXt2YXIgcT1tLnNpemVzO209bS5SZTt2YXIgdT1rLmNhbGwodGhpcyl8fHRoaXM7dS4kYShsLkgoKSk7dS5zPW47dS5NPXUub2cocSk7dS5MYj1tO3UuVGE9XG5hLk5PTkU7dS5BYT0wO3UudXE9W107dS5YbD0wO3UuY2o9bnVsbDt1LnY9cjtyZXR1cm4gdX12KGwsayk7bC5wcm90b3R5cGUuQj1mdW5jdGlvbigpe3RoaXMuYmgoXCJnZXROYW1lXCIpO3JldHVybiBudWxsfTtsLnByb3RvdHlwZS5vZz1mdW5jdGlvbigpe3RoaXMuYmgoXCJnZXRTdXBwb3J0ZWRTaXplc1wiKTtyZXR1cm4gbnVsbH07bC5wcm90b3R5cGUuaWU9ZnVuY3Rpb24oKXt0aGlzLmJoKFwicmVxdWVzdEJpZHNcIil9O2wucHJvdG90eXBlLmhMPWZ1bmN0aW9uKCl7dmFyIG09e2lhOjB9O3RoaXMudXEuZm9yRWFjaChmdW5jdGlvbihuKXtuLmlhJiZuLnljJiZuLmlhPm0uaWEmJihtPW4pfSk7cmV0dXJuIHAuZGVmYXVsdC5FYihtKX07bC5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMuSigpO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5NaT1mdW5jdGlvbihtKXtyZXR1cm5cIlwiK2YuZGVmYXVsdC5GaihtLGMuZGVmYXVsdCl9O2wucHJvdG90eXBlLkNzPWZ1bmN0aW9uKG0pe3RoaXMuVGE9XG5hLm5lO3RoaXMuQWE9bX07bC5wcm90b3R5cGUuUGc9ZnVuY3Rpb24obSl7dGhpcy5UYT1hLmNsO3RoaXMuTXEobSkmJih0aGlzLnVxLnB1c2gobSksdGhpcy5mKFwiYmlkcmVzcG9uc2VcIixtKSk7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLk1xPWZ1bmN0aW9uKG0pe3JldHVybiB0aGlzLkxiLlFqKG0sdGhpcy5CKCkpfTtsLnByb3RvdHlwZS5OYj1mdW5jdGlvbigpe3RoaXMuVGE9YS5taTt0aGlzLmYoXCJhbGxiaWRzYmFja1wiKTtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuaGE9ZnVuY3Rpb24obSxuLHIpeysrdGhpcy5YbDt0aGlzLmNqPXtjb2RlOm0sbWVzc2FnZTpkW21dfHxcIihub25lKVwiLHJlc3BvbnNlOm58fFwiKG5vbmUpXCIsZGV0YWlsczpyfHxcIihub25lKVwifTt0aGlzLmYoXCJiaWRlcnJvclwiLHAuZGVmYXVsdC5FYih0aGlzLmNqKSk7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLmJoPWZ1bmN0aW9uKG0pe3RoaXMuaGEoYi5adyxudWxsLG0rXCIoKSBub3QgaW1wbGVtZW50ZWRcIil9O1xubC5IPWZ1bmN0aW9uKCl7cmV0dXJuIGh9O3JldHVybiBsfShlLmRlZmF1bHQpO3QuZGVmYXVsdD1nfSx7MTQ4OjE0OCwyMDU6MjA1LDIwOToyMDksMjE1OjIxNSwyNTA6MjUwfV0sMjA3OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygxOTQpLHA9ZygxOTcpO3k9ZygxNSk7dmFyIGU9ZygxOTYpLGY9ZygxOTUpLGM9ZygxODYpLGE9eS5kZWZhdWx0LlNhO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGQsaCl7dGhpcy5NPWQ7dGhpcy5MYj1ofWIucHJvdG90eXBlLk5JPWZ1bmN0aW9uKGQsaCxrKXt2YXIgbCxtPShsPXt9LGxbYS51Zl09dGhpcy5JSSxsW2Euc2ZdPXRoaXMuSEksbFthLnlmXT10aGlzLnhKLGxbYS5BZl09dGhpcy5ISixsW2EucmZdPXRoaXMuR0ksbCk7aWYobVtkXSlyZXR1cm4gbVtkXS5jYWxsKHRoaXMsaCxrKTt0aHJvdyBFcnJvcihcIkludmFsaWQgYWRhcHRlciBuYW1lOiBcIitkKTt9O1xuYi5wcm90b3R5cGUuR0k9ZnVuY3Rpb24oZCxoKXtyZXR1cm4gbmV3IGMuZGVmYXVsdCh0aGlzLldnKCksZCxoKX07Yi5wcm90b3R5cGUuSUk9ZnVuY3Rpb24oZCxoKXtyZXR1cm4gbmV3IGYuZGVmYXVsdCh0aGlzLldnKCksZCxoKX07Yi5wcm90b3R5cGUuSEk9ZnVuY3Rpb24oZCxoKXtyZXR1cm4gbmV3IHYuZGVmYXVsdCh0aGlzLldnKCksZCxoKX07Yi5wcm90b3R5cGUueEo9ZnVuY3Rpb24oZCxoKXtyZXR1cm4gbmV3IGUuZGVmYXVsdCh0aGlzLldnKCksZCxoKX07Yi5wcm90b3R5cGUuSEo9ZnVuY3Rpb24oZCxoKXtyZXR1cm4gbmV3IHAuZGVmYXVsdCh0aGlzLldnKCksZCxoKX07Yi5wcm90b3R5cGUuV2c9ZnVuY3Rpb24oKXtyZXR1cm57c2l6ZXM6dGhpcy5NLFJlOnRoaXMuTGJ9fTtyZXR1cm4gYn0oKTt0LmRlZmF1bHQ9ZztILkdRPWd9LHsxNToxNSwxODY6MTg2LDE5NDoxOTQsMTk1OjE5NSwxOTY6MTk2LDE5NzoxOTd9XSwyMDg6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGQsXG5oKXtyZXR1cm4gZC5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIHAuZGVmYXVsdC5jYShoLGspfSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDE1KTt2YXIgcD1nKDI1MCk7Zz15LmRlZmF1bHQuU2E7eT1nLnVmO3ZhciBlPWcuc2YsZj1nLnlmLGM9Zy5BZixhPVt5LGUsZixjLGcucmZdLGI9W3ksZSxmLGNdO3QuZGVmYXVsdD17S3c6ZnVuY3Rpb24oZCl7cmV0dXJuIHYoZCxhKX0sWHc6ZnVuY3Rpb24oZCl7cmV0dXJuIHYoZCxiKX19fSx7MTU6MTUsMjUwOjI1MH1dLDIwOTpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD1ILmVTPXtTYzp7bWU6XCI5MFwiLCRrOlwiOTlcIixYazpcIjEwMFwiLHpkOlwiMTAxXCIsdGY6XCIxMDJcIixHZzpcIjExMFwiLFp3OlwiMTIwXCIsR3c6XCIxMzBcIixDeDpcIjE0MFwifSxwaTp7OTA6XCJVbmFibGUgdG8gY29udGFjdCBzZXJ2ZXJcIiw5OTpcIlJlY2VpdmVkIGVtcHR5IHJlc3BvbnNlIGZyb20gc2VydmVyXCIsXG4xMDA6XCJSZWNlaXZlZCBub24tMjAwIHJlc3BvbnNlIGZvciBIVFRQIHJlcXVlc3RcIiwxMDE6XCJSZWNlaXZlZCBpbnZhbGlkIGJpZCByZXNwb25zZVwiLDEwMjpcIkVycm9yIHRocm93biBieSBBUEkgZnVuY3Rpb25cIiwxMTA6XCJSZWNlaXZlZCByZXNwb25zZSBmb3Igc2l6ZSB3ZSBkaWQgbm90IHJlcXVlc3RcIiwxMjA6XCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQgYnkgYmlkZGVyXCIsMTMwOlwiUmVjZWl2ZWQgYmlkIHJlc3BvbnNlIHdpdGggdW4tcmVuZGVyYWJsZSBjcmVhdGl2ZVwiLDE0MDpcIlRoZSBhZCByZXF1ZXN0IGhhcyBiZWVuIHRocm90dGxlZFwifSxhYzp7Tk9ORTpcIk5PTkVcIixuZTpcIlBFTkRJTkdcIixjbDpcIlJFQ0VJVklOR1wiLG1pOlwiQ09NUExFVEVcIn0sYng6ezA6XCJVbmtub3duIEVycm9yXCIsMTpcIlRlY2huaWNhbCBFcnJvclwiLDI6XCJJbnZhbGlkIFJlcXVlc3RcIiwzOlwiS25vd24gV2ViIFNwaWRlclwiLDQ6XCJTdXNwZWN0ZWQgTm9uLUh1bWFuIFRyYWZmaWNcIiw1OlwiQ2xvdWQsIERhdGEgY2VudGVyLCBvciBQcm94eSBJUFwiLFxuNjpcIlVuc3VwcG9ydGVkIERldmljZVwiLDc6XCJCbG9ja2VkIFB1Ymxpc2hlciBPciBTaXRlXCIsODpcIlVubWF0Y2hlZCBVc2VyXCIsOTpcIkRhaWx5IFJlYWRlciBDYXAgTWV0XCIsMTA6XCJEYWlseSBEb21haW4gQ2FwIE1ldFwifX19LHt9XSwyMTA6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMjExKTt0LnR4PXk7dmFyIHY9ZygyMDIpO3Quenc9di5kZWZhdWx0O3ZhciBwPWcoMjAzKTt0LnJwPXAuZGVmYXVsdDt2YXIgZT1nKDIwNSk7dC53cD1lLmRlZmF1bHQ7dmFyIGY9ZygyMDQpO3Quamk9Zi5kZWZhdWx0O3ZhciBjPWcoMjA2KTt0LkJ3PWMuZGVmYXVsdDt2YXIgYT1nKDIwOCk7dC5Taz1hLmRlZmF1bHQ7dmFyIGI9ZygxOTUpLGQ9ZygxOTQpO3QueHc9ZC5kZWZhdWx0O3ZhciBoPWcoMTk3KTt0LkV4PWguZGVmYXVsdDt2YXIgaz1nKDE5Nik7dC5jeD1rLmRlZmF1bHQ7dmFyIGw9ZygxODYpO3QucHA9bC5kZWZhdWx0O1xudmFyIG09ZygxOTMpO3QucXA9bS5kZWZhdWx0O3ZhciBuPWcoMjA5KTtnPW4uZGVmYXVsdC5TYzt2YXIgcj1uLmRlZmF1bHQucGk7bj1uLmRlZmF1bHQuYWM7dC5TYz1nO3QucGk9cjt0LmFjPW47SC5kUz17U2M6ZyxwaTpyLGFjOm4senc6di5kZWZhdWx0LHJwOnAuZGVmYXVsdCxqaTpmLmRlZmF1bHQsQnc6Yy5kZWZhdWx0LHhROmIuZGVmYXVsdCx4dzpkLmRlZmF1bHQsY3g6ay5kZWZhdWx0LEV4OmguZGVmYXVsdCxwcDpsLmRlZmF1bHQscXA6bS5kZWZhdWx0LHR4Onksd3A6ZS5kZWZhdWx0LFNrOmEuZGVmYXVsdH19LHsxODY6MTg2LDE5MzoxOTMsMTk0OjE5NCwxOTU6MTk1LDE5NjoxOTYsMTk3OjE5NywyMDI6MjAyLDIwMzoyMDMsMjA0OjIwNCwyMDU6MjA1LDIwNjoyMDYsMjA4OjIwOCwyMDk6MjA5LDIxMToyMTF9XSwyMTE6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGMpe3JldHVybiBBcnJheS5pc0FycmF5KGMpP3AuZGVmYXVsdC5mZyhjKTpcInN0cmluZ1wiPT09dHlwZW9mIGM/XG5bY106bnVsbH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDI1MCksZT17dmY6XCJhdGZcIixSazpcImJ0ZlwifTt0LnhkPWU7dmFyIGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEpe3RoaXMubGw9YX1jLnByb3RvdHlwZS5idT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmxsO3JldHVybiBwLmRlZmF1bHQuTWMoYikmJiFBcnJheS5pc0FycmF5KGIpP3YodGhpcy5sbFthXSk6dih0aGlzLmxsKX07cmV0dXJuIGN9KCk7dC5MUD1mO3QudXc9e25KOmZ1bmN0aW9uKGMpe3JldHVybiBuZXcgZihjKX19O2c9eyRvOmZ1bmN0aW9uKGMpe3JldHVyblwibnVtYmVyXCI9PT10eXBlb2YgYyYmNTA8PWM/ZS52ZjplLlJrfX07dC5oaT1nO0guaGk9ZztILnhkPWV9LHsyNTA6MjUwfV0sMjEyOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKGUsXG5mKXt0aGlzLlRmPWU7dGhpcy4kbD1mfXAucHJvdG90eXBlLlptPWZ1bmN0aW9uKGUsZil7dmFyIGM9dGhpcztyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb25jYXQoYy55cShbYl0sZikpfSxbXSl9O3AucHJvdG90eXBlLlltPWZ1bmN0aW9uKGUsZil7cmV0dXJuIHRoaXMueXEoZSxmKX07cC5wcm90b3R5cGUuUWo9ZnVuY3Rpb24oZSxmLGMpe3ZvaWQgMD09PWMmJihjPXRoaXMuSHooKSk7cmV0dXJuIHRoaXMuJGwuUWooZSxmLGMpfTtwLnByb3RvdHlwZS5Iej1mdW5jdGlvbigpe3ZhciBlPXRoaXMuVGYuU287cmV0dXJuIGUuaW5kZXhPZihNYXRoLm1pbi5hcHBseShNYXRoLGUpKSsxfTtwLnByb3RvdHlwZS55cT1mdW5jdGlvbihlLGYpe3ZhciBjPXRoaXM7cmV0dXJuIHRoaXMuY3ooKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGMuTXooZSxhLGYpfSl9O3AucHJvdG90eXBlLmN6PWZ1bmN0aW9uKCl7cmV0dXJuIHYuZGVmYXVsdC5DTigxLHRoaXMuVGYuU28ubGVuZ3RoKX07XG5wLnByb3RvdHlwZS5Nej1mdW5jdGlvbihlLGYsYyl7Yz17c2l6ZXM6ZSxXOmYsYXY6Y307cmV0dXJue3NpemVzOmUsVzpmLHZrOnRoaXMuJGwuJG0oYyksd2s6dGhpcy4kbC5YSChjKX19O3JldHVybiBwfSgpO3QuZGVmYXVsdD1ILkZRPWd9LHsyNTA6MjUwfV0sMjEzOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyMTQpLHA9ZygyMTUpLGU9ZygyNTApO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGMpe3RoaXMuVGY9Y31mLnByb3RvdHlwZS4kbT1mdW5jdGlvbihjKXt2YXIgYT10aGlzLkd6KGMuc2l6ZXMpO2E9cC5kZWZhdWx0LndJKGEpO3ZhciBiPXRoaXMuVnooYy5XKTtjPXRoaXMuUHooYy5hdik7cmV0dXJuIHAuZGVmYXVsdC52SShhKmIvKDEtYykpfTtmLnByb3RvdHlwZS5YSD1mdW5jdGlvbihjKXtjPXRoaXMuJG0oYyk7cmV0dXJuIHAuZGVmYXVsdC5GaihjLHYuZGVmYXVsdCl9O2YucHJvdG90eXBlLlFqPVxuZnVuY3Rpb24oYyxhLGIpe2E9e3NpemVzOltlLmRlZmF1bHQuUGMoYyldLFc6YixhdjphfTthPXRoaXMuJG0oYSk7cmV0dXJuIGMuaWE+PWF9O2YucHJvdG90eXBlLkd6PWZ1bmN0aW9uKGMpe3ZhciBhPXRoaXM7Yz1jLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gYS5sQyhkKX0pO3ZhciBiPU1hdGgubWluLmFwcGx5KE1hdGgsYyk7cmV0dXJuIDA8Yy5sZW5ndGg/YjowfTtmLnByb3RvdHlwZS5sQz1mdW5jdGlvbihjKXt2YXIgYT10aGlzLlRmLGI9YS5zTjthPWEuVEo7cmV0dXJuIGIuaGFzT3duUHJvcGVydHkoYyk/YltjXTphfTtmLnByb3RvdHlwZS5Wej1mdW5jdGlvbihjKXtyZXR1cm4gYz90aGlzLlRmLlNvW2MtMV06MX07Zi5wcm90b3R5cGUuUHo9ZnVuY3Rpb24oYyl7dmFyIGE9dGhpcy5UZi50TjtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShjKT9hW2NdOjB9O3JldHVybiBmfSgpO3QuZGVmYXVsdD1nO0guZlM9Z30sezIxNDoyMTQsMjE1OjIxNSwyNTA6MjUwfV0sMjE0OltmdW5jdGlvbihnLFxueSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9SC5nUz1be3RocmVzaG9sZDo1LGljOjV9LHt0aHJlc2hvbGQ6MTAsaWM6MjV9LHt0aHJlc2hvbGQ6MjAsaWM6NTB9XX0se31dLDIxNTpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoZixjKXtyZXR1cm4gZi50aHJlc2hvbGQtYy50aHJlc2hvbGR9ZnVuY3Rpb24gcChmKXtyZXR1cm4gTWF0aC5yb3VuZCgxMDAqZil9ZnVuY3Rpb24gZShmLGMpe2M9Yy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGY8YS50aHJlc2hvbGR9KTtyZXR1cm4gMDxjLmxlbmd0aD9jWzBdLmljOm51bGx9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PUguaFM9e0ZqOmZ1bmN0aW9uKGYsYyl7Zj1NYXRoLm1heChmLDApO3ZhciBhPWMuc2xpY2UoKS5zb3J0KHYpO2M9ZShmLGEpO251bGw9PT1jP2Y9cChhW2EubGVuZ3RoLTFdLnRocmVzaG9sZCk6XG4oZj1wKGYpLGY9TWF0aC5mbG9vcihmL2MpKmMpO3JldHVybiBmfSx3STpwLHZJOmZ1bmN0aW9uKGYpe3JldHVybiBNYXRoLmZsb29yKGYpLzEwMH0sVFQ6dn19LHt9XSwyMTY6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIzOCkscD1nKDIxMyksZT1nKDIxMik7Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoYyl7dGhpcy5yYT1jfWYucHJvdG90eXBlLkFKPWZ1bmN0aW9uKGMpe3JldHVybiBuZXcgcC5kZWZhdWx0KGMpfTtmLnByb3RvdHlwZS5sdD1mdW5jdGlvbigpe3ZhciBjPXRoaXMua0MoKSxhPXRoaXMuQUooYyk7cmV0dXJuIHRoaXMuTUkoYyxhKX07Zi5wcm90b3R5cGUuTUk9ZnVuY3Rpb24oYyxhKXtyZXR1cm4gbmV3IGUuZGVmYXVsdChjLGEpfTtmLnByb3RvdHlwZS5rQz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJhLk1hKHYuZGVmYXVsdC5XcCl9O3JldHVybiBmfSgpO3QuZGVmYXVsdD1ILmlTPVxuZ30sezIxMjoyMTIsMjEzOjIxMywyMzg6MjM4fV0sMjE3OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PUguSlM9W3t0aHJlc2hvbGQ6MSxpYzo1fSx7dGhyZXNob2xkOjUsaWM6MTB9LHt0aHJlc2hvbGQ6MjAsaWM6NTB9LHt0aHJlc2hvbGQ6MTAwLGljOjUwMH1dfSx7fV0sMjE4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PUgualM9e2thOlwiaW52aWV3XCIsUmE6XCJzaWFiXCIscGE6XCJpbmZlZWRcIn19LHt9XSwyMTk6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIyNSk7eT1nKDIzOCk7dmFyIHA9ZygxMTUpLGU9ZygyMzkpLGY9ZygyMjMpLGM9ZygyMjApLGE9ZygyMjEpLGI9ZygxNDMpLGQ9ZygyNTApLGg9e30saz1udWxsO1xuZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXt9bC5sTz1mdW5jdGlvbihtKXtrPW19O2wud089ZnVuY3Rpb24obSl7aC5wcm9kdWN0PW07cmV0dXJuIHRoaXN9O2wuaU89ZnVuY3Rpb24obSl7aC5PPW07cmV0dXJuIHRoaXN9O2wuc2V0T3JpZW50YXRpb249ZnVuY3Rpb24obSl7aC5vcmllbnRhdGlvbj1tO3JldHVybiB0aGlzfTtsLmNPPWZ1bmN0aW9uKG0pe2guRWo9bTtyZXR1cm4gdGhpc307bC5nTz1mdW5jdGlvbihtKXttPWQuZGVmYXVsdC5QKFwiY291bnRyeWNvZGVcIil8fG07aC5odD1tO2gucmVnaW9uPWIuZGVmYXVsdC5FaS55SShtKTtyZXR1cm4gdGhpc307bC5CTz1mdW5jdGlvbihtKXtoLmNVPW07aC5ZTz1kLmRlZmF1bHQuUChcInJlZmVycmVyY29kZVwiKXx8cC5kZWZhdWx0LmR1KG0pO3JldHVybiB0aGlzfTtsLk9jPWZ1bmN0aW9uKG0pe2guc2l6ZT1kLmRlZmF1bHQuUGMobSk7cmV0dXJuIHRoaXN9O2wuY3U9ZnVuY3Rpb24oKXtyZXR1cm4gaC5wcm9kdWN0fTtsLm9UPWZ1bmN0aW9uKCl7cmV0dXJuIGQuZGVmYXVsdC5mZyhoKX07XG5sLmRUPWZ1bmN0aW9uKCl7aD17fTtyZXR1cm4gdGhpc307bC5Nbz1mdW5jdGlvbihtKXtmLmRlZmF1bHQuTW8obSl9O2wuTWE9ZnVuY3Rpb24obSxuKXtuPWQuZGVmYXVsdC5leHRlbmQoZC5kZWZhdWx0LmZnKG4pLHtGYjprfSk7dmFyIHI9bi5maWx0ZXJzLHE9ZC5kZWZhdWx0LmZnKGgpO2QuZGVmYXVsdC5leHRlbmQocSxyKTtkLmRlZmF1bHQuTWMocS5zaXplKSYmKHEuc2l6ZT1kLmRlZmF1bHQuUGMocS5zaXplKSk7cj1kLmRlZmF1bHQuZmcobi5vcHRpb25zKTt2YXIgdT1rLktuKCk7cT1mLmRlZmF1bHQuak4odSxyLHEpO3JldHVybiB2LmRlZmF1bHRbbV0uZ2V0KHEsbil9O3JldHVybiBsfSgpO2cuc2Q9ZS5kZWZhdWx0LnNkO2cuWmQ9ZS5kZWZhdWx0LlpkO2cuSFE9Yy5kZWZhdWx0O2cuUFE9YS5kZWZhdWx0O2cuVlI9Zi5kZWZhdWx0O2cua1M9di5kZWZhdWx0O2cubFM9eS5kZWZhdWx0O2cuRWk9ZS5kZWZhdWx0O3QuZGVmYXVsdD1ILm1TPWd9LHsxMTU6MTE1LDE0MzoxNDMsXG4yMjA6MjIwLDIyMToyMjEsMjIzOjIyMywyMjU6MjI1LDIzODoyMzgsMjM5OjIzOSwyNTA6MjUwfV0sMjIwOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihjKXtyZXR1cm4gT2JqZWN0LmtleXMoYykuc29ydCgpLnJlZHVjZShmdW5jdGlvbihhLGIpe2EucHVzaChbYixjW2JdXS5qb2luKFwiOlwiKSk7cmV0dXJuIGF9LFtdKS5qb2luKFwiLFwiKX1mdW5jdGlvbiBwKGMpe2M9ZS5kZWZhdWx0LmV4dGVuZCh7fSxjKTtyZXR1cm4gdihjKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgZT1nKDI1MCksZj17fTt0LmRlZmF1bHQ9e3NldDpmdW5jdGlvbihjLGEpe2M9cChjKTtmW2NdPWUuZGVmYXVsdC5FYihhKX0sZ2V0OmZ1bmN0aW9uKGMpe2M9cChjKTtyZXR1cm4gZltjXXx8bnVsbH0sY291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoZikubGVuZ3RofSxjbGVhcjpmdW5jdGlvbigpe2Y9e319fX0sezI1MDoyNTB9XSwyMjE6W2Z1bmN0aW9uKGcsXG55LHQpe2Z1bmN0aW9uIHYoZSxmKXt2YXIgYz1mLmtleTtmPWYuSmo7ZVtjXSYmKGY9Zj9lW2NdW2ZdOmVbY10sZS5jb2xsYXBzZWQ9ZS5jb2xsYXBzZWR8fHt9LGUuY29sbGFwc2VkW2NdPSEhZixwLmRlZmF1bHQuRGMoZSxmLHtidjohMX0pLGRlbGV0ZSBlW2NdKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDI1MCk7dC5kZWZhdWx0PXtrSTpmdW5jdGlvbihlLGYpe3YoZSx7a2V5OlwicHJvZHVjdHNcIixKajpmfSl9LGhJOmZ1bmN0aW9uKGUsZil7dihlLHtrZXk6XCJkZXZpY2VzXCIsSmo6Zn0pfSxqSTpmdW5jdGlvbihlLGYpe3YoZSx7a2V5Olwib3JpZW50YXRpb25zXCIsSmo6Zn0pfSxpSTpmdW5jdGlvbihlLGYsYyl7dihlLHtrZXk6XCJnZW9cIixKajplLmdlb1tmXT9mOmN9KX19fSx7MjUwOjI1MH1dLDIyMjpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9e2thOlwiSU5WSUVXXCIsXG5vZTpcIlNJQUJcIixwYTpcIklGRFwifTt0LmRlZmF1bHQ9ZztILmJSPWd9LHt9XSwyMjM6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGQsaCl7dmFyIGs9ZS5kZWZhdWx0LkViKGEpLGw9ay5zaWMsbT1oLnByb2R1Y3Qsbj1oLk8scj1oLm9yaWVudGF0aW9uLHE9aC5yZWdpb24sdT1oLmh0LHc9aC5zaXplO2wuY29sbGFwc2VkPXt9O2lmKGQpe2ZvcihlLmRlZmF1bHQuRGMoayxkKTttJiZsLnByb2R1Y3RzfHxuJiZsLmRldmljZXN8fHImJmwub3JpZW50YXRpb25zfHx1JiZsLmdlbzspbSYmbC5wcm9kdWN0cyYmYy5kZWZhdWx0LmtJKGwsbSksbiYmbC5kZXZpY2VzJiZjLmRlZmF1bHQuaEkobCxuKSxyJiZsLm9yaWVudGF0aW9ucyYmYy5kZWZhdWx0LmpJKGwsciksdSYmbC5nZW8mJmMuZGVmYXVsdC5pSShsLHUscSksYnx8ZS5kZWZhdWx0LmxvZyhbXCJQdWJsaXNoZXIgY29uZmlndXJhdGlvbiAoXCIsbSxcIiA+IFwiLHAuZGVmYXVsdC5zTShuKT9uOm4rXCItXCIrcixcIiA+IFwiLHUsXCIpOiBcIl0uam9pbihcIlwiKSxcbmspO3cmJlwib2JqZWN0XCI9PT10eXBlb2YgbC5hZF9zaXplcyYmdyYmZS5kZWZhdWx0LkRjKGwsbC5hZF9zaXplc1t3XSk7bC5jb25maWd1cmVkPSEwfWVsc2UgYnx8ZS5kZWZhdWx0LmxvZyhcIk5vIHB1Ymxpc2hlciBjb25maWd1cmF0aW9uIHJlY2VpdmVkLlwiKSxsLmNvbmZpZ3VyZWQ9ITE7Yj0hMDtlLmRlZmF1bHQuZXh0ZW5kKGwsaCk7cmV0dXJuIGx9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHA9ZygxMjMpLGU9ZygyNTApLGY9ZygyMjApLGM9ZygyMjEpO2c9e307dmFyIGE9e3NpYzp7YWRfdW5pdDpudWxsLGFkX3NpemVzOnt9LGV4Y2x1c2lvbnM6e30sY29udGVudF90eXBlczp7fSxwcm9kdWN0czp7aW52aWV3OntkZXZpY2VzOnt0YWJsZXQ6e29yaWVudGF0aW9uczp7cG9ydHJhaXQ6e2V4Y2x1c2lvbnM6e21heF9jb250ZW50X3B1c2g6MH19fX0sbW9iaWxlOntleGNsdXNpb25zOnttYXhfY29udGVudF9wdXNoOjB9fX19LHNpYWI6e2RldmljZXM6e319LFxuaW5mZWVkOntkZXZpY2VzOnt9fX19fSxiPSExO2cuTW89ZnVuY3Rpb24oZCl7Yj1kfTtnLnVUPWZ1bmN0aW9uKCl7cmV0dXJuIGJ9O2cuak49ZnVuY3Rpb24oZCxoLGspe2g9ZS5kZWZhdWx0LmV4dGVuZCh7fSxoKTtrPWUuZGVmYXVsdC5leHRlbmQoe30sayk7aC5aVD9kPXYoZCxrKTooaD1mLmRlZmF1bHQuZ2V0KGspLGh8fChoPXYoZCxrKSxmLmRlZmF1bHQuc2V0KGssaCkpLGQ9aCk7cmV0dXJuIGR9O3QuZGVmYXVsdD1nfSx7MTIzOjEyMywyMjA6MjIwLDIyMToyMjEsMjUwOjI1MH1dLDIyNDpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2O2c9e3VpOlwiaW1wcmVzc2lvblwiLGl3OlwiYWRyZXF1ZXN0XCIsRXc6XCJjbGlja1wifTt5PSh2PXt9LHZbZy51aV09XCJpc3JcIix2W2cuaXddPVwiYXJzclwiLHZbZy5Fd109XCJjc3JcIix2KTt0LmRlZmF1bHQ9SC5XUj17eWk6e3dpOlwibW9hdFwifSxacDpnLCRwOnl9fSx7fV0sMjI1OltmdW5jdGlvbihnLFxueSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdjt5PWcoMjI3KTt2YXIgcD1nKDIzMiksZT1nKDIzNSksZj1nKDIzOCksYz1nKDIyNiksYT1nKDIyOCksYj1nKDIyOSksZD1nKDIzMCksaD1nKDIzMSksaz1nKDIzMyksbD1nKDIzNCksbT1nKDIzNik7Zz1nKDIzNyk7dC5kZWZhdWx0PSh2PXt9LHZbZi5kZWZhdWx0Lk9rXT1jLmRlZmF1bHQsdltmLmRlZmF1bHQuUGtdPXkuZGVmYXVsdCx2W2YuZGVmYXVsdC5GZ109YS5kZWZhdWx0LHZbZi5kZWZhdWx0Lmt3XT1iLmRlZmF1bHQsdltmLmRlZmF1bHQuSmJdPWQuZGVmYXVsdCx2W2YuZGVmYXVsdC4kYl09aC5kZWZhdWx0LHZbZi5kZWZhdWx0LlRwXT1wLmRlZmF1bHQsdltmLmRlZmF1bHQuVXBdPWsuZGVmYXVsdCx2W2YuZGVmYXVsdC5WcF09bC5kZWZhdWx0LHZbZi5kZWZhdWx0LkpnXT1tLmRlZmF1bHQsdltmLmRlZmF1bHQuaXFdPWcuZGVmYXVsdCx2W2YuZGVmYXVsdC5XcF09ZS5kZWZhdWx0LFxudil9LHsyMjY6MjI2LDIyNzoyMjcsMjI4OjIyOCwyMjk6MjI5LDIzMDoyMzAsMjMxOjIzMSwyMzI6MjMyLDIzMzoyMzMsMjM0OjIzNCwyMzU6MjM1LDIzNjoyMzYsMjM3OjIzNywyMzg6MjM4fV0sMjI2OltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihmKXtyZXR1cm4gcC5kZWZhdWx0LmJiKGYuZXhjbHVzaW9ucy5kYXRlX3JhbmdlcyxbXSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLm1hdGNoKC9cXGR7NH0tXFxkezJ9LVxcZHsyfV9cXGR7NH0tXFxkezJ9LVxcZHsyfS8pfSkubWFwKGZ1bmN0aW9uKGMpe2M9Yy5zcGxpdChcIl9cIik7cmV0dXJue2Zyb206Y1swXSwkaDpjWzFdfX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMjM5KSxlPWcoNTkpO3QuZGVmYXVsdD17Z2V0OmZ1bmN0aW9uKGYsYyl7cmV0dXJue1NIOmYuZXhjbHVkZV9icm93c2Vycz9mLmV4Y2x1ZGVfYnJvd3NlcnMudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovKTpbXSxcbmlQOnAuZGVmYXVsdC5iYihmLmV4Y2x1c2lvbnMudXJscyxbXSksd3Q6dihmKSxVTTp7d2lkdGg6cC5kZWZhdWx0LldkKGYubWluX2Jyb3dzZXJfd2lkdGgsMSksaGVpZ2h0OnAuZGVmYXVsdC5XZChmLm1pbl9icm93c2VyX2hlaWdodCwxKX0sY2Y6cC5kZWZhdWx0LlpLKGYuZXhjbHVzaW9ucy5tYXhfY29udGVudF9wdXNoLG51bGwsXCJtYXhwdXNoXCIpLE1UOnAuZGVmYXVsdC5XZChmLmV4Y2x1c2lvbnMubWluX2NvbnRhaW5lcl93aWR0aCxudWxsLFwibWlud2lkdGhcIikseEg6Yy5HLkpuKCk9PT1lLmRlZmF1bHQuVmt9fX19LHsyMzk6MjM5LDU5OjU5fV0sMjI3OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihrKXtmb3IodmFyIGwsbT0xLG49YXJndW1lbnRzLmxlbmd0aDttPG47bSsrKXtsPWFyZ3VtZW50c1ttXTtmb3IodmFyIHIgaW4gbClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobCxyKSYmKGtbcl09XG5sW3JdKX1yZXR1cm4ga307T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHAsZSxmPWcoMjM5KSxjPWcoMjUwKSxhPWcoMjE4KSxiPShwPXt9LHBbYS5kZWZhdWx0LmthXT17ZXY6MSxZczoxNX0scFthLmRlZmF1bHQuUmFdPXtldjowLFlzOjE1fSxwKSxkPShlPXt9LGVbYS5kZWZhdWx0LmthXT17Q2o6XCJhdXRvX3JlZnJlc2hfaW50ZXJ2YWxcIixuazpcIm1heF9hdXRvX3JlZnJlc2hlc1wiLG9vOlwibWF4X25vZmlsbF9yZWZyZXNoZXNcIn0sZVthLmRlZmF1bHQuUmFdPXtDajpcInNpYWJfYXV0b19yZWZyZXNoX2ludGVydmFsXCIsbms6XCJzaWFiX21heF9hdXRvX3JlZnJlc2hlc1wifSxlKSxoPVtdO3QuZGVmYXVsdD17Z2V0OmZ1bmN0aW9uKGssbCl7bD1sLlJiO3ZhciBtPWsuYXV0b19yZWZyZXNoX2ludGVydmFsO2lmKEFycmF5LmlzQXJyYXkobSkpe3ZhciBuPW1bMF07dmFyIHI9bVsxXX1uPWYuZGVmYXVsdC5XZChuLDAsXCJub2ZpbGxyZWZyZXNoaW50ZXJ2YWxcIik7XG5tPWYuZGVmYXVsdC5XZChyLDAsXCJhdXRvcmVmcmVzaGludGVydmFsXCIpO3I9cGFyc2VJbnQobC5sYygoZFtrLnByb2R1Y3RdfHx7fSkuQ2opLDEwKTttPTA9PT1tfHwwPT09cj8wOnJ8fG07bj17WU06MDxuLFpNOm4sT0g6MDxtLENqOm19O3I9YltrLnByb2R1Y3RdfHx7fTt2YXIgcT1kW2sucHJvZHVjdF18fHt9O209cGFyc2VJbnQobC5sYyhxLm9vKSwxMCk7cT1wYXJzZUludChsLmxjKHEubmspLDEwKTtyPXtvbzptfHxyLmV2LG5rOnF8fHIuWXN9O209KG09bC5sYyhcImF1dG9fcmVmcmVzaF9ibG9ja2VkX2V4Y2hhbmdlc1wiKSk/bS5zcGxpdChcIixcIik6W107bT17Tkg6Yy5kZWZhdWx0LnFvKGgsbSl9O2s9ay5wcm9kdWN0O2w9cGFyc2VJbnQobC5sYyhcInNpYWJfYXV0b19yZWZyZXNoX3doZW5fcGFnZV9oaWRkZW5cIiksMTApO3E9cGFyc2VJbnQoYy5kZWZhdWx0LlAoXCJzaWFicmVmcmVzaHdoZW5oaWRkZW5cIiksMTApO3JldHVybiB2KHt9LG4scixtLHtQSDohKGshPT1hLmRlZmF1bHQuUmF8fFxuIWwmJiFxKX0pfX19LHsyMTg6MjE4LDIzOToyMzksMjUwOjI1MH1dLDIyODpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoNzUpLHA9ZygyMzkpLGU9ZygyNTApLGY9W1wibGVmdFwiLFwicmlnaHRcIl0sYz1bXCJ0b3BcIixcImJvdHRvbVwiXTt0LmRlZmF1bHQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1wLmRlZmF1bHQuYmIoYS50Yl9wb3NpdGlvbixcIlwiLFwicG9zaXRpb25cIikudG9Mb3dlckNhc2UoKS5zcGxpdChcIi1cIiksZD1iWzBdO2I9YlsxXTtyZXR1cm57ZWZmZWN0OnAuZGVmYXVsdC5iYihhLmVmZmVjdCx2LmRlZmF1bHQuTk9ORSxcImVmZmVjdHR5cGVcIiksV206cC5kZWZhdWx0LldkKGEuYm90dG9tX21hcmdpbiwwLFwiYm90dG9tbWFyZ2luXCIpLHZIOnAuZGVmYXVsdC5ZaihhLmFkeF9tb2RpZmllZF9jbG9zZV9idXR0b24sITEsXCJhZHhhZGp1c3RjbG9zZWJ1dHRvblwiKSxPOmEuTyxhbmltYXRpb246cC5kZWZhdWx0LmJiKGEudGJfYW5pbWF0aW9uLFxuXCJwdXNoXCIsXCJhbmltYXRpb25cIikudG9Mb3dlckNhc2UoKSxnYTp7VmI6ZS5kZWZhdWx0LmNhKGYsYik/YjpcImxlZnRcIix2ZXJ0aWNhbDplLmRlZmF1bHQuY2EoYyxkKT9kOlwiYm90dG9tXCJ9LG9uOm51bGw9PT1wLmRlZmF1bHQuV2QoYS5leGNsdXNpb25zLm1heF9jb250ZW50X3B1c2gsbnVsbCxcIm1heHB1c2hcIil9fX19LHsyMzk6MjM5LDI1MDoyNTAsNzU6NzV9XSwyMjk6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIzOSk7dC5kZWZhdWx0PXtnZXQ6ZnVuY3Rpb24ocCl7cmV0dXJue2FzcGVjdFJhdGlvOnYuZGVmYXVsdC5iYihwLmFzcGVjdF9yYXRpbyxcIjQ6M1wiLFwiYXNwZWN0cmF0aW9cIiksbWF4V2lkdGg6di5kZWZhdWx0LldkKHAubWF4X3dpZHRoLE51bWJlci5NQVhfVkFMVUUsXCJtYXh3aWR0aFwiKX19fX0sezIzOToyMzl9XSwyMzA6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGIsZCl7dmFyIGgsXG5rPShoPXt9LGhbYS5kZWZhdWx0LmthXT1mdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQua2F9LGhbYS5kZWZhdWx0LnBhXT1mdW5jdGlvbigpe3JldHVybiBmLmRlZmF1bHQucGF9LGhbYS5kZWZhdWx0LlJhXT1mdW5jdGlvbihsKXtyZXR1cm4gZi5kZWZhdWx0Lm9lK1wiX1wiK2MuZGVmYXVsdC5QYyhsKX0saCk7cmV0dXJuIGUuZGVmYXVsdC5iYihiLmFkX3VuaXQsbnVsbCxcImFkdW5pdFwiKXx8a1tiLnByb2R1Y3RdLmNhbGwobnVsbCxkKX1mdW5jdGlvbiBwKGIsZCl7dmFyIGg9Yy5kZWZhdWx0LlAoXCJjYXRlZ29yeWlkc1wiKSxrPVtdO2g/az1baF06T2JqZWN0LmtleXMoZCkuZm9yRWFjaChmdW5jdGlvbihsKXtiLm1hdGNoKG5ldyBSZWdFeHAobCkpJiZrLnB1c2goZFtsXSl9KTswPGsubGVuZ3RoJiYoaz1jLmRlZmF1bHQudW5pcXVlKGsuam9pbihcIixcIikuc3BsaXQoXCIsXCIpKSk7cmV0dXJuIGt9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIGU9XG5nKDIzOSksZj1nKDIyMiksYz1nKDI1MCksYT1nKDIxOCk7dC5kZWZhdWx0PXtnZXQ6ZnVuY3Rpb24oYixkKXt2YXIgaD1jLmRlZmF1bHQuZXh0ZW5kKHt9LGQpLGs9ZS5kZWZhdWx0LmJiKGIubmV0d29ya19pZCxudWxsLFwibmV0d29ya2lkXCIpLGw9dihiLGguUG8pO2Q9ZC5GYjt2YXIgbT1lLmRlZmF1bHQuc2QoZCk7cmV0dXJue09UOmssWVM6bCxqZjpjLmRlZmF1bHQuQ2coXCIve25ldHdvcmtDb2RlfS97YWRVbml0SWR9XCIse25ldHdvcmtDb2RlOmssYWRVbml0SWQ6bH0pLEhqOnAoaC5Zdnx8XCJcIixiLmNvbnRlbnRfdHlwZXMpLEZOOmIuWU8sRmE6bSx5azplLmRlZmF1bHQuWmQoZCksRG86Yy5kZWZhdWx0LkNnKFwie3B1Ymxpc2hlcklkfTp7ZGV2aWNlfVwiLHtwdWJsaXNoZXJJZDptLGRldmljZTpiLk99KSxDYTpoLkNhLGViOmguZWJ9fX19LHsyMTg6MjE4LDIyMjoyMjIsMjM5OjIzOSwyNTA6MjUwfV0sMjMxOltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihjKXtyZXR1cm5bZi51ZixcbmYuc2YsZi55ZixmLkFmLGYucmZdLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gcC5kZWZhdWx0LllqKGUuZGVmYXVsdC5FTihjW2ErXCJfcHJlX2VuYWJsZWRcIl0pLCExLGErXCJwcmVcIil9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTUpO3ZhciBwPWcoMjM5KSxlPWcoMjUwKSxmPXkuZGVmYXVsdC5TYTt0LmRlZmF1bHQ9e2dldDpmdW5jdGlvbihjLGEpe3ZhciBiPWEuRmIsZD1hLlJiO3JldHVybntwbjp2KGMpLENIOnAuZGVmYXVsdC5iYihjLmFwbnhfcGlkLG51bGwsXCJhcG54cGlkXCIpLE1IOmUuZGVmYXVsdC53ZChlLmRlZmF1bHQuUChcImFzdHJlc2VydmVcIil8fGQubGMoXCJhc3RfcmVzZXJ2ZVwiKSksRmE6cC5kZWZhdWx0LnNkKGIpLHlrOnAuZGVmYXVsdC5aZChiKSxnZTpjLnByb2R1Y3QsTzpjLk8scmVnaW9uOmMucmVnaW9uLENhOmEuQ2Esemg6cC5kZWZhdWx0LlZ0KGMpLFNqOnAuZGVmYXVsdC5iYihjLnR0eF9wcmVfZW5hYmxlZCxcbnt9LFwiXCIpLGViOmEuZWJ9fX19LHsxNToxNSwyMzk6MjM5LDI1MDoyNTB9XSwyMzI6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGEsYil7cmV0dXJuIE9iamVjdC5rZXlzKGMpLnJlZHVjZShmdW5jdGlvbihkLGgpe3ZhciBrPWNbaF07ZFtoXT1lLmRlZmF1bHQud2QoZS5kZWZhdWx0LlAoXCJcIitiK2gpKXx8ZS5kZWZhdWx0Lll1KHAuZGVmYXVsdC5TdChhW2tdLDApLzEwMCk7cmV0dXJuIGR9LHt9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD1nKDIzOSk7eT1nKDIyNCk7dmFyIGU9ZygyNTApLGY9eS5kZWZhdWx0LnlpLGM9eS5kZWZhdWx0LiRwO3QuZGVmYXVsdD17Z2V0OmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5GYjtiPXt9O3ZhciBoPWYud2k7dmFyIGs9Zi53aTtrPXYocC5kZWZhdWx0LmJiKHAuZGVmYXVsdC5iYihhLnRyayx7fSlba10se30pLGspO3JldHVybiBiW2hdPWssYi5GYT1wLmRlZmF1bHQuc2QoZCksYi5nZT1hLnByb2R1Y3QsXG5iLnpoPXAuZGVmYXVsdC5WdChhKSxifX19LHsyMjQ6MjI0LDIzOToyMzksMjUwOjI1MH1dLDIzMzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB2PWcoMjM5KTt0LmRlZmF1bHQ9e2dldDpmdW5jdGlvbihwKXtyZXR1cm4gdi5kZWZhdWx0LmJiKHAucGFzc2JhY2tfdGFnLG51bGwpfX19LHsyMzk6MjM5fV0sMjM0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNTApLHA9ZygyMzkpO3QuZGVmYXVsdD17Z2V0OmZ1bmN0aW9uKGUsZil7Zj1mLiRKO2Y9dm9pZCAwPT09Zj97fTpmO3ZhciBjPXAuZGVmYXVsdC5iYihlLmFkX3NpemVzLHt9LFwiYWRzaXplc1wiKTt2LmRlZmF1bHQuTWMoYykmJiFBcnJheS5pc0FycmF5KGMpJiYoYz1PYmplY3Qua2V5cyhjKSk7Yz1jP1wic3RyaW5nXCI9PT10eXBlb2YgYz9jLnNwbGl0KFwiLFwiKTpjLnNsaWNlKCk6XG5bXTt2YXIgYT1bXTsoZj1mW2UucHJvZHVjdF0pJiZmW2UuT10mJihhPWZbZS5PXSk7cmV0dXJuIHYuZGVmYXVsdC5RZShjLGEpfX19LHsyMzk6MjM5LDI1MDoyNTB9XSwyMzU6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDIzOSk7dC5kZWZhdWx0PXtnZXQ6ZnVuY3Rpb24ocCl7cmV0dXJue1RKOnYuZGVmYXVsdC5TdChwLmZsciksc046di5kZWZhdWx0LlJLKHAuYWRfc2l6ZXMsXCJmbHJcIiksU286di5kZWZhdWx0LmJiKHAudG0sW10pLHROOnYuZGVmYXVsdC5iYihwLm1rcCx7fSl9fX19LHsyMzk6MjM5fV0sMjM2OltmdW5jdGlvbihnLHksdCl7ZnVuY3Rpb24gdihmLGMpe2Y9cC5kZWZhdWx0LllqKGZbY10sITEpO3JldHVybiBlLmRlZmF1bHQud2QoZS5kZWZhdWx0LlAoXCJza2lwY29uZmlnY2hlY2tcIikpfHxmfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1xudmFyIHA9ZygyMzkpLGU9ZygyNTApO3QuZGVmYXVsdD17Z2V0OmZ1bmN0aW9uKGYpe3JldHVybnthbzohdihmLFwiY29uZmlndXJlZFwiKSxjbzohdihmLmNvbGxhcHNlZCxcImRldmljZXNcIiksam86cC5kZWZhdWx0LllqKGYuZXhjbHVzaW9ucy5wYWdlLCExLFwicGFnZWZsYWdcIiksbk06Zi5pbnN0YWxsX21ldGhvZH19fX0sezIzOToyMzksMjUwOjI1MH1dLDIzNzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3QuZGVmYXVsdD17Z2V0OmZ1bmN0aW9uKHYscCl7dj1wLlJiLmxjKHYucHJvZHVjdCtcIl92aWV3YWJpbGl0eV9wZXJjZW50XCIpO3JldHVybntrZTp2P3BhcnNlSW50KHYsMTApOjUwfX19fSx7fV0sMjM4OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7Zz17T2s6XCJBRF9FWENMVVNJT05cIixQazpcIkFEX1JFRlJFU0hcIixGZzpcIkFEX1JFTkRFUlwiLFxua3c6XCJBRF9TTE9UX0NPTlRBSU5FUlwiLEpiOlwiREZQXCIsJGI6XCJIRUFERVJfQklERElOR1wiLFRwOlwiUEFSVE5FUl9SRVBPUlRFUlwiLFVwOlwiUEFTU0JBQ0tfVEFHXCIsVnA6XCJQT1NTSUJMRV9BRF9TSVpFU1wiLEpnOlwiU1RBVFVTXCIsaXE6XCJWSUVXQUJJTElUWVwiLFdwOlwiUFJJQ0VfRkxPT1JcIn07dC5kZWZhdWx0PWc7SC5RUT1nfSx7fV0sMjM5OltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5ZfHxPYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIGYsYz0xLGE9YXJndW1lbnRzLmxlbmd0aDtjPGE7YysrKXtmPWFyZ3VtZW50c1tjXTtmb3IodmFyIGIgaW4gZilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZixiKSYmKGVbYl09ZltiXSl9cmV0dXJuIGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBwPWcoMjUwKTt0LmRlZmF1bHQ9e1JLOmZ1bmN0aW9uKGUsZil7cmV0dXJuIE9iamVjdC5rZXlzKGV8fFxuW10pLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gZVtjXS5oYXNPd25Qcm9wZXJ0eShmKX0pLnJlZHVjZShmdW5jdGlvbihjLGEpe3ZhciBiO3JldHVybiB2KHt9LGMsKGI9e30sYlthXT1lW2FdW2ZdLGIpKX0se30pfSxZajpmdW5jdGlvbihlLGYsYyl7ZT1wLmRlZmF1bHQuUChjKXx8ZTtyZXR1cm4gcC5kZWZhdWx0LndkKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgZT9mOmUpfSxXZDpmdW5jdGlvbihlLGYsYyl7ZT1wYXJzZUludChwLmRlZmF1bHQuUChjKXx8ZSwxMCk7cmV0dXJuIGlzTmFOKGUpP2Y6ZX0sU3Q6ZnVuY3Rpb24oZSxmLGMpe2U9cGFyc2VGbG9hdChwLmRlZmF1bHQuUChjKXx8ZSk7cmV0dXJuIGlzTmFOKGUpP2Y6ZX0sWks6ZnVuY3Rpb24oZSxmLGMpe2M9cC5kZWZhdWx0LlAoYyk7ZT1bcGFyc2VGbG9hdChjKSxjLHBhcnNlRmxvYXQoZSksZV0uZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhfHwwPT09YX0pO3JldHVybiAwPGUubGVuZ3RoP2VbMF06Zn0sbVQ6ZnVuY3Rpb24oZSxcbmYsYyl7dmFyIGE9bnVsbDt0cnl7YT1KU09OLnBhcnNlKHAuZGVmYXVsdC5QKGMpKX1jYXRjaChiKXt9cmV0dXJuIGF8fGV8fGZ9LGJiOmZ1bmN0aW9uKGUsZixjKXtyZXR1cm4gcC5kZWZhdWx0LlAoYyl8fGV8fGZ9LFZ0OmZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbGxhcHNlZCYmZS5jb2xsYXBzZWQuZ2VvP2UuaHQ6ZS5yZWdpb259LFpkOmZ1bmN0aW9uKGUpe3JldHVybiBwLmRlZmF1bHQuUChcInB1YmRvbWFpblwiKXx8ZS5aZCgpfSxzZDpmdW5jdGlvbihlKXtyZXR1cm4gcC5kZWZhdWx0LlAoXCJwdWJpZFwiKXx8ZS5zZCgpfX19LHsyNTA6MjUwfV0sMjQwOltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dC5kZWZhdWx0PXtraTpcIkJBU0lDX0RGUFwiLCRiOlwiSEVBREVSX0JJRERJTkdcIn19LHt9XSwyNDE6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxcbntfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxhKXtjLl9fcHJvdG9fXz1hfXx8ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoY1tiXT1hW2JdKX07cmV0dXJuIGZ1bmN0aW9uKGMsYSl7ZnVuY3Rpb24gYigpe3RoaXMuY29uc3RydWN0b3I9Y31mKGMsYSk7Yy5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTQ4KTt2YXIgcD1nKDI1MCksZT1bXCJyZWFkeVwiLFwiYmVuY2htYXJrc1wiXTtnPWZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGMoYSl7dmFyIGI9Zi5jYWxsKHRoaXMpfHx0aGlzO2IuJGEoYy5IKCkpO2Iucz1hO2IuVmY9ITE7cmV0dXJuIGJ9dihjLGYpO2MuSD1mdW5jdGlvbigpe3JldHVybiBlfTtjLnByb3RvdHlwZS5sdT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlZmP1xucC5kZWZhdWx0LkViKHRoaXMuVXIoKSk6bnVsbH07Yy5wcm90b3R5cGUuaj1mdW5jdGlvbigpe3RoaXMudWUoKS5KKCk7dGhpcy5WZj0hMTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuQ2U9ZnVuY3Rpb24oKXt0aGlzLlZmPSEwO3ZhciBhPXRoaXMubHUoKTt0aGlzLnNyKGEpO3RoaXMuZihcInJlYWR5XCIsYSk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmJoPWZ1bmN0aW9uKGEpe3Rocm93IEVycm9yKFwiVGFyZ2V0aW5nU2VydmljZTogXCIrYStcIigpIG5vdCBpbXBsZW1lbnRlZFwiKTt9O3JldHVybiBjfSh5LmRlZmF1bHQpO3QuZGVmYXVsdD1nfSx7MTQ4OjE0OCwyNTA6MjUwfV0sMjQyOltmdW5jdGlvbihnLHksdCl7dmFyIHY9dGhpcyYmdGhpcy5DfHxmdW5jdGlvbigpe3ZhciBkPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihoLGspe2guX19wcm90b19fPWt9fHxmdW5jdGlvbihoLGspe2Zvcih2YXIgbCBpbiBrKWsuaGFzT3duUHJvcGVydHkobCkmJlxuKGhbbF09a1tsXSl9O3JldHVybiBmdW5jdGlvbihoLGspe2Z1bmN0aW9uIGwoKXt0aGlzLmNvbnN0cnVjdG9yPWh9ZChoLGspO2gucHJvdG90eXBlPW51bGw9PT1rP09iamVjdC5jcmVhdGUoayk6KGwucHJvdG90eXBlPWsucHJvdG90eXBlLG5ldyBsKX19KCkscD10aGlzJiZ0aGlzLll8fE9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGQpe2Zvcih2YXIgaCxrPTEsbD1hcmd1bWVudHMubGVuZ3RoO2s8bDtrKyspe2g9YXJndW1lbnRzW2tdO2Zvcih2YXIgbSBpbiBoKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLG0pJiYoZFttXT1oW21dKX1yZXR1cm4gZH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7eT1nKDI0MSk7dmFyIGU9ZygyNDYpLGY9ZygzNiksYz1nKDI1MCksYT1nKDIxNSksYj1nKDIxNyk7dC5YcD1cInBmXCI7Zz1mdW5jdGlvbihkKXtmdW5jdGlvbiBoKGspe3ZhciBsPWQuY2FsbCh0aGlzLGspfHx0aGlzO2wuc3M9XG5rLkpPO2wuTGI9ay5SZTtsLlFyPW51bGw7cmV0dXJuIGx9dihoLGQpO2gucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0LmtpfTtoLnByb3RvdHlwZS5WaD1mdW5jdGlvbihrKXt0aGlzLlFyPXRoaXMuTnooayk7dGhpcy5DZSgpfTtoLnByb3RvdHlwZS5Vcj1mdW5jdGlvbigpe3ZhciBrLGw9dGhpcy5zLG09bC5lYixuPWwucWM7bD1wKChrPXtjOmwuSGoscjpbbC5HTl0sZDpbbC55a10sZzpbbC5GYV0sZ2Q6W2wuRG9dLGNjOltsLkNhXX0sa1t0LlhwXT1bU3RyaW5nKHRoaXMuUXIpXSxrKSxtLG4pO3RoaXMuc3MmJihsLnZpcz10aGlzLnNzLiRzKCkpO3JldHVybiBsfTtoLnByb3RvdHlwZS5zcj1mdW5jdGlvbihrKXtcInZpc1wiaW4gayYmYy5kZWZhdWx0LmxvZyhcIiAgU2V0dGluZyBzbG90IHZpZXdhYmlsaXR5ICU6IFwiK2sudmlzKX07aC5wcm90b3R5cGUudWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuTno9ZnVuY3Rpb24oayl7az10aGlzLkxiLlltKGssXG5mLmRlZmF1bHQuSmIpLmZpbHRlcihmdW5jdGlvbihsKXtyZXR1cm4gMj09PWwuV30pWzBdLnZrO3JldHVybiBhLmRlZmF1bHQuRmooayxiLmRlZmF1bHQpfTtyZXR1cm4gaH0oeS5kZWZhdWx0KTt0LmRlZmF1bHQ9Z30sezIxNToyMTUsMjE3OjIxNywyNDE6MjQxLDI0NjoyNDYsMjUwOjI1MCwzNjozNn1dLDI0MzpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYixkKXtiLl9fcHJvdG9fXz1kfXx8ZnVuY3Rpb24oYixkKXtmb3IodmFyIGggaW4gZClkLmhhc093blByb3BlcnR5KGgpJiYoYltoXT1kW2hdKX07cmV0dXJuIGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gaCgpe3RoaXMuY29uc3RydWN0b3I9Yn1hKGIsZCk7Yi5wcm90b3R5cGU9bnVsbD09PWQ/T2JqZWN0LmNyZWF0ZShkKTooaC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsXG5uZXcgaCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygyNDEpO3ZhciBwPWcoMjQ2KSxlPWcoMjUwKSxmPWcoMjA5KS5kZWZhdWx0LmFjO2c9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXt2YXIgaCxrPWEuY2FsbCh0aGlzLGQpfHx0aGlzO2sudW09bnVsbDtrLnRxPVwiUEVORElOR1wiO2suaEI9KGg9e30saC5QRU5ESU5HPWZ1bmN0aW9uKGwsbSl7cmV0dXJuIGsuVEQobCxtKX0saC5ET05FPWZ1bmN0aW9uKCl7fSxoKTtrLnZzPXBhcnNlSW50KGsucy5EYi5sYyhcInByZWJpZF90aW1lb3V0XCIpLDEwKXx8MkUzO2submw9ZnVuY3Rpb24oKXtyZXR1cm4gay51QygpfTtyZXR1cm4ga312KGIsYSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsXCJQUklDRV9LRVlcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuXCJwcmVcIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYixcIlRJRVJfS0VZXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwidGllclwifSxcbmVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsXCJTSVpFX0tFWVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cInByZV9zelwifSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLFwiSEJfS0VZXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwiaGJcIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYixcIkFCX1RFU1RfVElNRU9VVF9TRVRUSU5HXCIse2dldDpmdW5jdGlvbigpe3JldHVyblwicHJlYmlkX3RpbWVvdXRcIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtiLnByb3RvdHlwZS5CPWZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmYXVsdC4kYn07Yi5wcm90b3R5cGUuVmg9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnMubWQ7dGhpcy5jSCgpO3RoaXMuZkcoKTtkLm9uY2UoXCJhbGxiaWRzYmFja1wiLHRoaXMubmwpO3RoaXMuU0MoKTtkLmllKCl9O1xuYi5wcm90b3R5cGUuY0g9ZnVuY3Rpb24oKXtmb3IodmFyIGQ9MCxoPXRoaXMucy5tZC5rTCgpO2Q8aC5sZW5ndGg7ZCsrKWUuZGVmYXVsdC5sb2coXCIgIFByZS1iaWRkZXI6IE5vIGVsaWdpYmxlIHNpemVzIGZvciBcIitoW2RdLkIoKSl9O2IucHJvdG90eXBlLlNDPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLnVtPXRoaXMucy5ELnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmRlZmF1bHQubG9nKFwiICBQcmUtYmlkZGVyOiBcIitkLnZzK1wibXMgdGltZW91dCBlbGFwc2VkLlwiKTtkLm5sKCl9LHRoaXMudnMpfTtiLnByb3RvdHlwZS51Qz1mdW5jdGlvbigpe3ZhciBkPXRoaXMucy5tZDt0aGlzLnRxPVwiRE9ORVwiO3RoaXMucy5ELmNsZWFyVGltZW91dCh0aGlzLnVtKTtkLm5hKFwiYWxsYmlkc2JhY2tcIix0aGlzLm5sKTt0aGlzLlZEKCkuQ2UoKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUuVXI9ZnVuY3Rpb24oKXt2YXIgZCxoPXRoaXMucy5tZC5DaCgpO3JldHVybiBkPXt9LGQucHJlPWgubWFwKGMuTE8pLFxuZC5wcmVfc3o9aC5tYXAoYy5OTyksZC50aWVyPWgubWFwKGMuT08pLGQuaGI9TnVtYmVyKGMuUkwoaCkpLGR9O2IucHJvdG90eXBlLmZHPWZ1bmN0aW9uKCl7Zm9yKHZhciBkPXRoaXMucy5vZCxoPTAsaz10aGlzLnMubWQuem4oKTtoPGsubGVuZ3RoO2grKyl7dmFyIGw9a1toXTt0aGlzLkdHKGwpO2QmJnRoaXMuRUcobCl9fTtiLnByb3RvdHlwZS5HRz1mdW5jdGlvbihkKXt2YXIgaD10aGlzO2QudShcImJpZGVycm9yXCIsZnVuY3Rpb24oayl7cmV0dXJuIGguaEJbaC50cV0oZCxrKX0pfTtiLnByb3RvdHlwZS5FRz1mdW5jdGlvbihkKXt2YXIgaD10aGlzLGs9dGhpcy5zLm9kLGw9ZC5CKCkrXCJQcmViaWRkZXJcIjtrLkJnKGwpO2Qub25jZShcImFsbGJpZHNiYWNrXCIsZnVuY3Rpb24oKXtyZXR1cm4gaC5kRihkKX0pfTtiLnByb3RvdHlwZS5kRj1mdW5jdGlvbihkKXtkPXRoaXMucy5vZC5oZyhkLkIoKStcIlByZWJpZGRlclwiKTt0aGlzLmYoXCJiZW5jaG1hcmtzXCIsZCk7cmV0dXJuIHRoaXN9O1xuYi5wcm90b3R5cGUuVkQ9ZnVuY3Rpb24oKXt0aGlzLnMubWQuQ2goKS5mb3JFYWNoKGMuUU0sdGhpcyk7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLnNyPWZ1bmN0aW9uKGQpe2UuZGVmYXVsdC5sb2coXCIgIFByZS1iaWRkZXI6IFRhcmdldGluZyA9XCIsZHx8XCIobm9uZSlcIil9O2IucHJvdG90eXBlLlREPWZ1bmN0aW9uKGQsaCl7ZS5kZWZhdWx0LmxvZyhcIiAgUHJlLWJpZGRlcjogXCIrZC5CKCkrXCIgLSBlcnJvcjpcIixoKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUudWU9ZnVuY3Rpb24oKXt0aGlzLnMubWQuaigpO3RoaXMucy5ELmNsZWFyVGltZW91dCh0aGlzLnVtKTtyZXR1cm4gdGhpc307cmV0dXJuIGJ9KHkuZGVmYXVsdCk7dmFyIGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7fWEuUU09ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChuKXt2YXIgcj1uLmlhLHE9bi5zaXplO3JldHVybiAwPHI/XCJIaWdoIGJpZDogJFwiK3IudG9GaXhlZCgyKStcIiBmb3IgdGhlIFwiK3ErXCIgc2l6ZVwiOjA8bi5zbz9cblwiTm8gYmlkLCBlcnJvciBvY2N1cnJlZFwiOlwiTm8gYmlkXCJ9Zm9yKHZhciBoLGs9dGhpcy5zLm1kLlVLKGIuQWMpLGw9MCxtPShoPXt9LGhbZi5OT05FXT1mdW5jdGlvbigpe3JldHVybltcIk5vIGF1Y3Rpb24gdG9vayBwbGFjZVwiXX0saFtmLm5lXT1mdW5jdGlvbigpe3JldHVybltcIkJpZCByZXF1ZXN0cyB0aW1lZCBvdXRcIl19LGhbZi5jbF09ZnVuY3Rpb24oKXt2YXIgbj1bZChiKV07ayYmbi5wdXNoKFwiICAoXCIray5BYStcIi9cIitrLk0ubGVuZ3RoK1wiKSByZXF1ZXN0cyB0aW1lZCBvdXRcIik7cmV0dXJuIG59LGhbZi5taV09ZnVuY3Rpb24oKXtyZXR1cm5bZChiKV19LGgpW2Iuc3RhdHVzXSgpO2w8bS5sZW5ndGg7bCsrKWUuZGVmYXVsdC5sb2coXCIgIFByZS1iaWRkZXI6IFwiK2IuQWMrXCIgLSBcIittW2xdKX07YS5MTz1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKGspe2s9ay5zdGF0dXM7cmV0dXJuIGs9PT1mLk5PTkV8fGs9PT1mLm5lfXZhciBoPWIuZmU7KGZ1bmN0aW9uKGspe3ZhciBsPWsuaWE7XG5yZXR1cm4gMDxrLnNvJiYwPT09bH0pKGIpP2g9XCJlXCIrYi5UdS5jb2RlOmQoYikmJihoPVwidFwiKTtyZXR1cm4gYi5BYytcIjpcIitofTthLk9PPWZ1bmN0aW9uKGIpe3JldHVybiBiLkFjK1wiOlwiK2IuV307YS5OTz1mdW5jdGlvbihiKXt2YXIgZD1iLnNpemU7cmV0dXJuIGIuQWMrXCI6XCIrKHZvaWQgMD09PWQ/XCIweDBcIjpkKX07YS5STD1mdW5jdGlvbihiKXtyZXR1cm4gYi5zb21lKGZ1bmN0aW9uKGQpe3JldHVybiAwPGQuaWF9KX07cmV0dXJuIGF9KCk7dC5kZWZhdWx0PWd9LHsyMDk6MjA5LDI0MToyNDEsMjQ2OjI0NiwyNTA6MjUwfV0sMjQ0OltmdW5jdGlvbihnLHksdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHY9ZygyNDUpLHA9ZygyNDYpLGU9ZygyNDIpLGY9ZygyNDMpO3QuZGVmYXVsdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoKXt9Yy5GSj1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIHAuZGVmYXVsdC5raTpyZXR1cm4gbmV3IGUuZGVmYXVsdChiKTtcbmNhc2UgcC5kZWZhdWx0LiRiOnJldHVybiBuZXcgZi5kZWZhdWx0KGIpO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXCJJbnZhbGlkIHRhcmdldGluZyBzZXJ2aWNlIGNvZGU6IFwiK2EpO319O2MudHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyB2LmRlZmF1bHQoe1pOOmMsb2Q6YS5vZH0pfTtyZXR1cm4gY30oKX0sezI0MjoyNDIsMjQzOjI0MywyNDU6MjQ1LDI0NjoyNDZ9XSwyNDU6W2Z1bmN0aW9uKGcseSx0KXt2YXIgdj10aGlzJiZ0aGlzLkN8fGZ1bmN0aW9uKCl7dmFyIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsYSl7Yy5fX3Byb3RvX189YX18fGZ1bmN0aW9uKGMsYSl7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGNbYl09YVtiXSl9O3JldHVybiBmdW5jdGlvbihjLGEpe2Z1bmN0aW9uIGIoKXt0aGlzLmNvbnN0cnVjdG9yPWN9ZihjLGEpO2MucHJvdG90eXBlPW51bGw9PT1hP09iamVjdC5jcmVhdGUoYSk6XG4oYi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGIpfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt5PWcoMTQ4KTt2YXIgcD1nKDI1MCksZT1bXCJyZWFkeVwiLFwiYmVuY2htYXJrc1wiXTtnPWZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGMoYSl7dmFyIGI9YS5aTjthPWEub2Q7dmFyIGQ9Zi5jYWxsKHRoaXMpfHx0aGlzO2QuJGEoYy5IKCkpO2QuRWU9W107ZC5Scj1bXTtkLmZkPXt9O2QuT0Y9YjtkLkppPWE7ZC5WZj0hMTtyZXR1cm4gZH12KGMsZik7Yy5IPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O2MucHJvdG90eXBlLk1tPWZ1bmN0aW9uKGEsYil7YT10aGlzLk9GLkZKKGEsYik7dGhpcy5FZS5wdXNoKGEpO3RoaXMuaUcoYSl9O2MucHJvdG90eXBlLnJIPWZ1bmN0aW9uKGEpe3RoaXMuUnIucHVzaChhKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuVmg9ZnVuY3Rpb24oYSl7dGhpcy5KaSYmdGhpcy5raigpOzA8dGhpcy5FZS5sZW5ndGg/dGhpcy52RihhKTpcbnRoaXMuQ2UoKX07Yy5wcm90b3R5cGUua3U9ZnVuY3Rpb24oYSl7YT10aGlzLm1DKGEpO3ZhciBiPW51bGw7bnVsbCE9PWEmJihiPWEubHUoKSk7cmV0dXJuIGJ9O2MucHJvdG90eXBlLmh1PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRWUubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLkIoKX0pfTtjLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5FZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBhLmooKX0pO3RoaXMuSigpO3RoaXMuRWU9W107dGhpcy5WZj0hMTt0aGlzLmZkPXt9O3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5pRz1mdW5jdGlvbihhKXthLk5hKFwiYmVuY2htYXJrc1wiLHRoaXMpfTtjLnByb3RvdHlwZS52Rj1mdW5jdGlvbihhKXt2YXIgYj10aGlzO1Byb21pc2UuYWxsKHRoaXMuRWUubWFwKGZ1bmN0aW9uKGQpe3JldHVybihuZXcgUHJvbWlzZShmdW5jdGlvbihoKXtkLm9uY2UoXCJyZWFkeVwiLGgpO2QuVmgoYSl9KSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gYi5aRShoKX0pfSkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYi5DZSgpfSl9O1xuYy5wcm90b3R5cGUuWkU9ZnVuY3Rpb24oYSl7cC5kZWZhdWx0LmV4dGVuZCh0aGlzLmZkLGEpO3JldHVybiB0aGlzfTtjLnByb3RvdHlwZS5tQz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5FZS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuQigpPT09YX0pWzBdfHxudWxsfTtjLnByb3RvdHlwZS5DZT1mdW5jdGlvbigpe3RoaXMuSmkmJnRoaXMuVmkoKTt0aGlzLlZmPSEwO3RoaXMuekIoKS5mKFwicmVhZHlcIix0aGlzLmZkKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuekI9ZnVuY3Rpb24oKXt0aGlzLmZkPXAuZGVmYXVsdC5sSS5hcHBseShwLmRlZmF1bHQsdGhpcy5ScikodGhpcy5mZCk7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLmtqPWZ1bmN0aW9uKCl7dGhpcy5KaS5CZyhcInRhcmdldGluZ1NlcnZpY2VzXCIpfTtjLnByb3RvdHlwZS5WaT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuSmkuaGcoXCJ0YXJnZXRpbmdTZXJ2aWNlc1wiKTt0aGlzLmYoXCJiZW5jaG1hcmtzXCIsYSl9O3JldHVybiBjfSh5LmRlZmF1bHQpO1xudC5kZWZhdWx0PWd9LHsxNDg6MTQ4LDI1MDoyNTB9XSwyNDY6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt0LmRlZmF1bHQ9e2tpOlwiQkFTSUNfREZQXCIsJGI6XCJIRUFERVJfQklERElOR1wifX0se31dLDI0NzpbZnVuY3Rpb24oZyx5LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygyNDApO3QuRHg9eS5kZWZhdWx0O3ZhciB2PWcoMjQ0KTt0LmhxPXYuZGVmYXVsdDt2YXIgcD1nKDI0NSk7dC5GUz1wLmRlZmF1bHQ7dmFyIGU9ZygyNDYpO3QuZGw9ZS5kZWZhdWx0O3Q9ZygyNDIpO2c9ZygyNDMpO0guRVM9e1VSOnkuZGVmYXVsdCx0Uzp2LmRlZmF1bHQsdVM6cC5kZWZhdWx0LHZTOmUuZGVmYXVsdCxpaTp7RFE6dC5kZWZhdWx0LEFSOmcuZGVmYXVsdH19fSx7MjQwOjI0MCwyNDI6MjQyLDI0MzoyNDMsMjQ0OjI0NCwyNDU6MjQ1LDI0NjoyNDZ9XSwyNDg6W2Z1bmN0aW9uKGcsXG55LHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO2c9ZygxNTEpO0guT2Q9e307SC5PZFtcImNsb3NlLWJ1dHRvblwiXT1uZXcgZy5wZShmdW5jdGlvbih2LHAsZSl7dGhpcy5vKGU9ZXx8XCJcIik7dGhpcy5vKCc8ZGl2IGNsYXNzPVwidHludC1jbG9zZS1idG4tY29udGFpbmVyXCI+Jyk7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKCcgIDxkaXYgY2xhc3M9XCJ0eW50LWNsb3NlLWJ0blwiIGhzLW5hbWU9XCJDbG9zZSBCdXR0b25cIj4nKTt0aGlzLm8oXCJcXG5cIitlKTt0aGlzLkNrKHRoaXMuRmMoXCJpc1RvdWNoQWRVbml0XCIsdixwLDEpLHYscCwwLDExNSwyMDYsXCJ7eyB9fVwiKSYmKHRoaXMuRW8odixwLGZ1bmN0aW9uKGYsYyxhKXthLm8oJyAgICAgIDxzcGFuIGNsYXNzPVwiY2hldnJvbiBjaGV2cm9uLScpO2EubyhhLnQoYS5GYyhcInN0YXJ0UG9zaXRpb25Ib3Jpem9udGFsXCIsZixjLDApKSk7YS5vKCdcIj4nKTthLm8oXCJcXG5cIitlKTthLm8oXCIgICAgICA8L3NwYW4+Q2xvc2VcIik7XG5hLm8oXCJcXG5cIil9KSx2LnBvcCgpKTt0aGlzLm8oXCIgICAgXCIpO3RoaXMuQ2sodGhpcy5GYyhcImlzVG91Y2hBZFVuaXRcIix2LHAsMSksdixwLDEsMCwwLFwiXCIpfHx0aGlzLm8oXCIgJnRpbWVzOyBDbG9zZSBBZCBcIik7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiICA8L2Rpdj5cIik7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiPC9kaXY+XCIpO3JldHVybiB0aGlzLnhoKCl9KTtILk9kLmluZmVlZD1uZXcgZy5wZShmdW5jdGlvbih2LHAsZSl7dGhpcy5vKGU9ZXx8XCJcIik7dGhpcy5vKCc8ZGl2IGNsYXNzPVwidHludC1pbmZlZWQgdHludC1ub3Qtdmlld2FibGVcIj4nKTt0aGlzLm8oXCJcXG5cIitlKTt0aGlzLm8oJyAgPHAgY2xhc3M9XCJ0eW50LWNsb3NlLWJ0blwiIGhzLW5hbWU9XCJDbG9zZSBCdXR0b25cIj48L3A+Jyk7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKCcgIDxkaXYgY2xhc3M9XCJ0eW50LWFkLWZyYW1lLWNvbnRhaW5lclwiPjxpZnJhbWUgZnJhbWVib3JkZXI9XCIwXCIgY2xhc3M9XCJ0eW50LWFkLWZyYW1lXCIgc2Nyb2xsaW5nPVwibm9cIj48L2lmcmFtZT48L2Rpdj4nKTtcbnRoaXMubyhcIlxcblwiK2UpO3RoaXMubyhcIjwvZGl2PlwiKTt0aGlzLm8oXCJcXG5cIitlKTt0aGlzLm8oJzxkaXYgY2xhc3M9XCJ0eW50LWFkLWRpc2Nsb3N1cmUgdHludC1oaWRkZW5cIj5BZHZlcnRpc2VtZW50PC9kaXY+Jyk7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKCc8ZGl2IGNsYXNzPVwidHludC1hZC1kaXNjbG9zdXJlIHR5bnQtYWQtZGlzY2xvc3VyZS1ib3R0b20gdHludC1oaWRkZW5cIj5zY3JvbGwgZm9yIG1vcmU8L2Rpdj4nKTtyZXR1cm4gdGhpcy54aCgpfSk7SC5PZC5pbnZpZXc9bmV3IGcucGUoZnVuY3Rpb24odixwLGUpe3RoaXMubyhlPWV8fFwiXCIpO3RoaXMubygnPGRpdiBjbGFzcz1cImludmlldy1sZXZlbC0wXCI+Jyk7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKCcgIDxkaXYgY2xhc3M9XCJpbnZpZXctbGV2ZWwtMSB0eW50LW5vdC12aWV3YWJsZVwiPicpO3RoaXMubyhcIlxcblwiK2UpO3RoaXMubyh0aGlzLlVOKFwiY2xvc2UtYnV0dG9uXCIsdixwLFwiICAgIFwiKSk7dGhpcy5vKCcgICAgPGRpdiBjbGFzcz1cInR5bnQtYWQtZnJhbWUtY29udGFpbmVyXCI+PGlmcmFtZSBmcmFtZWJvcmRlcj1cIjBcIiBjbGFzcz1cInR5bnQtYWQtZnJhbWVcIiBzY3JvbGxpbmc9XCJub1wiPjwvaWZyYW1lPjwvZGl2PicpO1xudGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiICA8L2Rpdj5cIik7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiPC9kaXY+XCIpO3JldHVybiB0aGlzLnhoKCl9KTtILk9kLnNpYWI9bmV3IGcucGUoZnVuY3Rpb24odixwLGUpe3RoaXMubyhlPWV8fFwiXCIpO3RoaXMubygnPGRpdiBjbGFzcz1cInR5bnQtc2lhYlwiPicpO3RoaXMubyhcIlxcblwiK2UpO3RoaXMubygnICAgIDxkaXYgY2xhc3M9XCJ0eW50LWFkLWZyYW1lLWNvbnRhaW5lclwiPjxpZnJhbWUgZnJhbWVib3JkZXI9XCIwXCIgY2xhc3M9XCJ0eW50LWFkLWZyYW1lXCIgc2Nyb2xsaW5nPVwibm9cIj48L2lmcmFtZT48L2Rpdj4nKTt0aGlzLm8oXCJcXG5cIitlKTt0aGlzLm8oXCI8L2Rpdj5cIik7cmV0dXJuIHRoaXMueGgoKX0pO0guT2RbXCJ0eW50LWFkXCJdPW5ldyBnLnBlKGZ1bmN0aW9uKHYscCxlKXt0aGlzLm8oZT1lfHxcIlwiKTt0aGlzLm8oJzxkaXYgY2xhc3M9XCJ0eW50LXZpZXdhYmlsaXR5XCI+PC9kaXY+Jyk7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiPGRpdlwiKTt0aGlzLkNrKHRoaXMuRmMoXCJpc09mZlNjcmVlbkFkVW5pdFwiLFxudixwLDEpLHYscCwwLDI5NCwzOTYsXCJ7eyB9fVwiKSYmKHRoaXMuRW8odixwLGZ1bmN0aW9uKGYsYyxhKXthLm8oJyBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luOi0xMHB4OyAnKTthLm8oYS50KGEuRmMoXCJzdGFydFBvc2l0aW9uSG9yaXpvbnRhbFwiLGYsYywwKSkpO2EubygnOjA7IHRvcDowXCInKX0pLHYucG9wKCkpO3RoaXMubygnIHR5bnQtZGF0YT1cIm5vLWNvbnRlbnRcIiBjbGFzcz1cInR5bnQtYWQtZmVuY2UgdHludC1hZC1mZW5jZS1zdGFydHBvcy0nKTt0aGlzLm8odGhpcy5sUCh0aGlzLkZjKFwic3RhcnRQb3NpdGlvbkhvcml6b250YWxcIix2LHAsMCkpKTt0aGlzLm8oJ1wiPicpO3RoaXMubyhcIlxcblwiK2UpO3RoaXMubygnICA8ZGl2IGlkPVwiJyk7dGhpcy5vKHRoaXMudCh0aGlzLkZjKFwidW5pcXVlSWRcIix2LHAsMCkpKTt0aGlzLm8oJ1wiIGNsYXNzPVwidHludC1hZC1jb250YWluZXJcIicpO3RoaXMuQ2sodGhpcy5GYyhcImlzT2ZmU2NyZWVuQWRVbml0XCIsXG52LHAsMSksdixwLDAsNTkwLDYzMyxcInt7IH19XCIpJiYodGhpcy5Fbyh2LHAsZnVuY3Rpb24oZixjLGEpe2EubygnIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MTBweFwiJyl9KSx2LnBvcCgpKTt0aGlzLm8oXCI+XCIpO3RoaXMubyhcIlxcblwiK2UpO3RoaXMubyhcIiAgICBcIik7dGhpcy5vKHRoaXMudCh0aGlzLkZjKFwidGFnXCIsdixwLDApKSk7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiICA8L2Rpdj5cIik7dGhpcy5vKFwiXFxuXCIrZSk7dGhpcy5vKFwiPC9kaXY+XCIpO3JldHVybiB0aGlzLnhoKCl9KTt0LmRlZmF1bHQ9SC5PZH0sezE1MToxNTF9XSwyNDk6W2Z1bmN0aW9uKGcseSx0KXtmdW5jdGlvbiB2KGgpe3JldHVybiBkLmRlZmF1bHQuZXh0ZW5kKHt0aW1lb3V0Om51bGwsaW50ZXJ2YWw6NTAsUnY6ZnVuY3Rpb24oKXt9fSxoKX1mdW5jdGlvbiBwKGgpe3ZhciBrPWguTGosbD1oLmNnLG09aC5jb250ZXh0LG49aC5ELHI9dm9pZCAwPT09bj93aW5kb3c6bjtoPXYoaC5vcHRpb25zKTtcbm49aC5pbnRlcnZhbDt2YXIgcT1oLnRpbWVvdXQsdT1oLlJ2LHc9bnVsbCx4PW51bGwsQz1rKCk7aWYoQylyZXR1cm4gbC5jYWxsKG0sQyksITA7dz1yLnNldEludGVydmFsKGZ1bmN0aW9uKCl7aWYoQz1rKCkpci5jbGVhckludGVydmFsKHcpLHIuY2xlYXJUaW1lb3V0KHgpLGwuY2FsbChtLEMpfSxuKTtudWxsIT09cSYmKHg9ci5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5jbGVhckludGVydmFsKHcpO3UuY2FsbChtLEMpfSxxKSk7cmV0dXJuITF9ZnVuY3Rpb24gZShoKXt2YXIgaz1oLnRuLGw9aC5kZWxheVRpbWUsbT1oLmNvbnRleHQsbj1oLkQscj12b2lkIDA9PT1uP3dpbmRvdzpuLHE9aC54djtxJiZcIm9iamVjdFwiPT09dHlwZW9mIHF8fChxPXt9KTtxLlRvPW51bGw7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB1PVtdLHc9MDt3PGFyZ3VtZW50cy5sZW5ndGg7dysrKXVbd109YXJndW1lbnRzW3ddO3IuY2xlYXJUaW1lb3V0KHEuVG8pO3EuVG89ci5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ay5hcHBseShtLFxudSl9LGwpfX1mdW5jdGlvbiBmKGgsayl7aWYoMD09PWgubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtoPWgubWFwKGZ1bmN0aW9uKGwpe3ZhciBtPWwuSEg7cmV0dXJuIGwueWguYXBwbHkobC5jb250ZXh0fHxrLHZvaWQgMD09PW0/W106bSl9KTtyZXR1cm4gUHJvbWlzZS5hbGwoaCl9ZnVuY3Rpb24gYyhoKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgayxsLG0sbixyO3JldHVybiBiKHRoaXMsZnVuY3Rpb24ocSl7c3dpdGNoKHEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gaz1oLnNpLGw9aC5BaixtPWguQmosbj1oLmNvbnRleHQscj1bXSxrLmZvckVhY2goZnVuY3Rpb24odSl7dmFyIHc9bS5zbGljZSgpO3cudW5zaGlmdCh1KTtyLnB1c2goe3loOmwsSEg6d30pfSksWzQsZihyLG4pXTtjYXNlIDE6cmV0dXJuIHEubSgpLFsyXX19KX0pfXZhciBhPXRoaXMmJnRoaXMud2F8fGZ1bmN0aW9uKGgsayxsLG0pe3JldHVybiBuZXcgKGx8fChsPVByb21pc2UpKShmdW5jdGlvbihuLFxucil7ZnVuY3Rpb24gcSh4KXt0cnl7dyhtLm5leHQoeCkpfWNhdGNoKEMpe3IoQyl9fWZ1bmN0aW9uIHUoeCl7dHJ5e3cobVtcInRocm93XCJdKHgpKX1jYXRjaChDKXtyKEMpfX1mdW5jdGlvbiB3KHgpe3guZG9uZT9uKHgudmFsdWUpOihuZXcgbChmdW5jdGlvbihDKXtDKHgudmFsdWUpfSkpLnRoZW4ocSx1KX13KChtPW0uYXBwbHkoaCxrfHxbXSkpLm5leHQoKSl9KX0sYj10aGlzJiZ0aGlzLnhhfHxmdW5jdGlvbihoLGspe2Z1bmN0aW9uIGwoeCl7cmV0dXJuIGZ1bmN0aW9uKEMpe3JldHVybiBtKFt4LENdKX19ZnVuY3Rpb24gbSh4KXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7bjspdHJ5e2lmKHI9MSxxJiYodT14WzBdJjI/cVtcInJldHVyblwiXTp4WzBdP3FbXCJ0aHJvd1wiXXx8KCh1PXFbXCJyZXR1cm5cIl0pJiZ1LmNhbGwocSksMCk6cS5uZXh0KSYmISh1PXUuY2FsbChxLHhbMV0pKS5kb25lKXJldHVybiB1O2lmKHE9XG4wLHUpeD1beFswXSYyLHUudmFsdWVdO3N3aXRjaCh4WzBdKXtjYXNlIDA6Y2FzZSAxOnU9eDticmVhaztjYXNlIDQ6cmV0dXJuIG4ubGFiZWwrKyx7dmFsdWU6eFsxXSxkb25lOiExfTtjYXNlIDU6bi5sYWJlbCsrO3E9eFsxXTt4PVswXTtjb250aW51ZTtjYXNlIDc6eD1uLmwucG9wKCk7bi5pLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh1PW4uaSx1PTA8dS5sZW5ndGgmJnVbdS5sZW5ndGgtMV0pJiYoNj09PXhbMF18fDI9PT14WzBdKSl7bj0wO2NvbnRpbnVlfWlmKDM9PT14WzBdJiYoIXV8fHhbMV0+dVswXSYmeFsxXTx1WzNdKSluLmxhYmVsPXhbMV07ZWxzZSBpZig2PT09eFswXSYmbi5sYWJlbDx1WzFdKW4ubGFiZWw9dVsxXSx1PXg7ZWxzZSBpZih1JiZuLmxhYmVsPHVbMl0pbi5sYWJlbD11WzJdLG4ubC5wdXNoKHgpO2Vsc2V7dVsyXSYmbi5sLnBvcCgpO24uaS5wb3AoKTtjb250aW51ZX19eD1rLmNhbGwoaCxuKX1jYXRjaChDKXt4PVs2LENdLHE9MH1maW5hbGx5e3I9XG51PTB9aWYoeFswXSY1KXRocm93IHhbMV07cmV0dXJue3ZhbHVlOnhbMF0/eFsxXTp2b2lkIDAsZG9uZTohMH19dmFyIG49e2xhYmVsOjAsbTpmdW5jdGlvbigpe2lmKHVbMF0mMSl0aHJvdyB1WzFdO3JldHVybiB1WzFdfSxpOltdLGw6W119LHIscSx1LHc7cmV0dXJuIHc9e25leHQ6bCgwKSxcInRocm93XCI6bCgxKSxcInJldHVyblwiOmwoMil9LFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJih3W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHd9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBkPWcoMjUwKTt0LmRlZmF1bHQ9e2ZpOnAsUGo6ZSx2bzpmLFJoOmN9O0guR1M9e2ZpOnAsUGo6ZSx2bzpmLFJoOmN9fSx7MjUwOjI1MH1dLDI1MDpbZnVuY3Rpb24oZyx5LHQpe2Z1bmN0aW9uIHYoKXtmb3IodmFyIGU9W10sZj0wO2Y8YXJndW1lbnRzLmxlbmd0aDtmKyspZVtmXT1hcmd1bWVudHNbZl07cmV0dXJuIEpTT04uc3RyaW5naWZ5LmFwcGx5KEpTT04sXG5lKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcD17cUw6ZnVuY3Rpb24oZSl7dmFyIGY9SC5vdSgpO3JldHVybiB0aGlzLnl1KGUpP2ZbZV06bnVsbH0seXU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBILm91KClbZV19LFA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucUwoXCJfX3J0XCIrZSl9LHZMOmZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gZS50b3AuZG9jdW1lbnQucmVmZXJyZXJ9Y2F0Y2goZil7cmV0dXJuIGUuZG9jdW1lbnQucmVmZXJyZXJ9fSwkSzpmdW5jdGlvbigpe3ZhciBlPW5ldyBEYXRlLGY9ZS50b0xvY2FsZVN0cmluZygpLnJlcGxhY2UoL1teXFx4MDAtXFx4N0ZdL2csXCJcIik7cmV0dXJuIGY9Zi5yZXBsYWNlKC9cXGQrOlxcZCs6XFxkKy8sZnVuY3Rpb24oYyl7cmV0dXJuIGMrXCIuXCIrU3RyaW5nKGUuZ2V0TWlsbGlzZWNvbmRzKCkrMUUzKS5zbGljZSgtMyl9KX0sd3Y6ZnVuY3Rpb24oZSl7ZT1lfHw4O3JldHVybigobmV3IERhdGUpLmdldFRpbWUoKSpcbk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KS5yZXBsYWNlKFwiLlwiLFwiXCIpLnN1YnN0cmluZygwLGUpfSx6TjpmdW5jdGlvbigpe3JldHVyblwiYVwiK3RoaXMud3YoKX0sWXU6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucmFuZG9tKCk8KHBhcnNlRmxvYXQoZSl8fDApfSxLajpmdW5jdGlvbihlLGYpe3JldHVybiBlfHxmfSxUTzpmdW5jdGlvbihlKXt0aGlzLnh0PWV9LHBPOmZ1bmN0aW9uKGUpe3RoaXMuV3U9ZX0sbG9nOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWVbZl09YXJndW1lbnRzW2ZdO2U9dGhpcy5tRShlKTt0aGlzLlBKfHx0aGlzLlFGKCk7dGhpcy54dCYmdGhpcy5JYShlKX0sUUY6ZnVuY3Rpb24oKXt0aGlzLnh0PXRoaXMud2QodGhpcy5QKFwiZGVidWdtb2RlXCIpKTt0aGlzLlBKPSEwfSxtRTpmdW5jdGlvbihlKXt2YXIgZj10aGlzO3JldHVybiBlLm1hcChmdW5jdGlvbihjKXtyZXR1cm5cIm9iamVjdFwiIT09dHlwZW9mIGM/YzpcbnAucU0oKT9mLkRjKHt9LGMpOnYoYyxudWxsLFwiICBcIil9KX0sb0Q6ZnVuY3Rpb24oKXt2YXIgZT1wLk5uKCk7cmV0dXJuIDA8PWUuaW5kZXhPZihcIk1TSUUgXCIpfHwwPD1lLmluZGV4T2YoXCJUcmlkZW50L1wiKX0saUQ6ZnVuY3Rpb24oKXtyZXR1cm4vRmlyZWZveC9pLnRlc3QocC5ObigpKX0sTm46ZnVuY3Rpb24oKXtyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudH0sSEw6ZnVuY3Rpb24oKXtyZXR1cm4gSC5WRVJTSU9OLnJlcGxhY2UoL15bQS1aYS16XSsvLFwiXCIpfSxxTTpmdW5jdGlvbigpe3JldHVybiEodGhpcy5vRCgpfHx0aGlzLmlEKCkpfSxJYTpmdW5jdGlvbihlKXt2YXIgZj13aW5kb3cuY29uc29sZSYmY29uc29sZS5sb2csYz10aGlzLiRLKCk7ZiYmKGUudW5zaGlmdChcIltcIisodGhpcy5XdT9jK1wiLCBcIit0aGlzLld1OmMpK1wiXSBcIiksdGhpcy50Zyhjb25zb2xlLmxvZyk/dGhpcy5wcm94eShjb25zb2xlLmxvZyxjb25zb2xlKS5hcHBseShjb25zb2xlLGUpOmNvbnNvbGUubG9nKGUuam9pbihcIiBcIikpKX0sXG5xbjpmdW5jdGlvbihlLGYsYyl7dHJ5e2UuYXBwbHkoYyxmKX1jYXRjaChhKXt0aGlzLmxvZyhhLnN0YWNrKSx3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSwwKX19LGplOmZ1bmN0aW9uKGUsZil7Zj1wLmV4dGVuZCh7c2VwYXJhdG9yOlwiJlwiLGVuY29kZTohMX0sZik7dmFyIGM9Zi5lbmNvZGU/ZW5jb2RlVVJJQ29tcG9uZW50OmZ1bmN0aW9uKGIpe3JldHVybiBifSxhPXAuTnQoZSxmdW5jdGlvbihiKXtyZXR1cm4gbnVsbCE9PWJ9KTtyZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBjKGIpK1wiPVwiK2MoYVtiXSl9KS5qb2luKGYuc2VwYXJhdG9yKX0sZmw6ZnVuY3Rpb24oZSxmKXt2b2lkIDA9PT1mJiYoZj1cIiZcIik7cmV0dXJuIHRoaXMuamUoZSx7c2VwYXJhdG9yOmYsZW5jb2RlOiEwfSl9LG1rOmZ1bmN0aW9uKGUsZil7dmFyIGM9SC4kKCksYT10aGlzLnpOKCksYj1mJiZmLiRUO2MuX3R5bnRfanBbYV09ZnVuY3Rpb24oZCl7Ynx8XG5kZWxldGUgYy5fdHludF9qcFthXTtlKGQpfTtyZXR1cm4gZXNjYXBlKFwiX3R5bnRfanAuXCIrYSl9LHZnOmZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBBcnJheS5wcm90b3R5cGUudG9KU09OKXt2YXIgZj1BcnJheS5wcm90b3R5cGUudG9KU09OO2RlbGV0ZSBBcnJheS5wcm90b3R5cGUudG9KU09OO2U9dihlKTtBcnJheS5wcm90b3R5cGUudG9KU09OPWZ9ZWxzZSBlPXYoZSk7cmV0dXJuIGV9LHByb3h5OmZ1bmN0aW9uKGUsZil7Zm9yKHZhciBjPVtdLGE9MjthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKWNbYS0yXT1hcmd1bWVudHNbYV07YT1udWxsO1wic3RyaW5nXCI9PT10eXBlb2YgZiYmKGE9ZVtmXSxmPWUsZT1hKTtyZXR1cm4gYT1mdW5jdGlvbigpe2Zvcih2YXIgYj1bXSxkPTA7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKyliW2RdPWFyZ3VtZW50c1tkXTtyZXR1cm4gZS5hcHBseShmfHx0aGlzLGMuY29uY2F0KGIpKX19LHhuOmZ1bmN0aW9uKGUsZil7Zj1mLmNvb2tpZS5zcGxpdChcIjtcIik7XG5lPWUudHJpbSgpO2Zvcih2YXIgYz0wO2M8Zi5sZW5ndGg7KytjKXt2YXIgYT1mW2NdLGI9YS5pbmRleE9mKFwiPVwiKTtpZihhLnN1YnN0cigwLGIpLnRyaW0oKT09PWUpcmV0dXJuIHVuZXNjYXBlKGEuc3Vic3RyKGIrMSkpfXJldHVyblwiXCJ9LCR1OmZ1bmN0aW9uKGUsZil7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZShmdW5jdGlvbihjLGEpe2NbYV09ZihhLGVbYV0pO3JldHVybiBjfSx7fSl9LE50OmZ1bmN0aW9uKGUsZil7dmFyIGM9e30sYTtmb3IoYSBpbiBlKWUuaGFzT3duUHJvcGVydHkoYSkmJmYoZVthXSkmJihjW2FdPWVbYV0pO3JldHVybiBjfSxNYzpmdW5jdGlvbihlKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lfSx0ZzpmdW5jdGlvbihlKXt2YXIgZj0vXlxccypmdW5jdGlvblxccyooXFxiW2EteiRfXVthLXowLTkkX10qXFxiKSpcXHMqXFwoKHwoW2EteiRfXVthLXowLTkkX10qKShcXHMqLFthLXokX11bYS16MC05JF9dKikqKVxcKVxccyp7XFxzKlxcW25hdGl2ZSBjb2RlXFxdXFxzKn1cXHMqJC9pO1xucmV0dXJuISFlJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSYmKGU9PT1GdW5jdGlvbi5wcm90b3R5cGV8fGYudGVzdChTdHJpbmcoZSkpKX0sZW86ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuTWMoZSkmJjA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGh9LExoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLk1jKGUpJiYhdGhpcy5lbyhlKX0sYWk6ZnVuY3Rpb24oZSxmKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSxmfHwwKX0sd2Q6ZnVuY3Rpb24oZSl7XCJzdHJpbmdcIiE9PXR5cGVvZiBlJiYoZT0hIWUpO3JldHVybiBlJiYvXih0cnVlfDF8b258eWVzfHkpJC9pLnRlc3QoZSl9LHJjOmZ1bmN0aW9uKGUpe1wic3RyaW5nXCI9PT10eXBlb2YgZSYmZS5tYXRjaCgvXlxcZCt4XFxkKyQvKSYmKGU9ZS5zcGxpdChcInhcIikpO0FycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aCYmKGU9e3dpZHRoOmVbMF0saGVpZ2h0OmVbMV19KTtwLk1jKGUpJiZcIndpZHRoXCJpbiBlJiZcImhlaWdodFwiaW5cbmUmJihlPXt3aWR0aDpOdW1iZXIoZS53aWR0aCksaGVpZ2h0Ok51bWJlcihlLmhlaWdodCl9KTtyZXR1cm4gZX0sUGM6ZnVuY3Rpb24oZSl7ZT10aGlzLnJjKGUpO3JldHVybiBlLndpZHRoK1wieFwiK2UuaGVpZ2h0fSxqVDpmdW5jdGlvbihlLGYpe2Y9Zi5zcGxpdChcIjpcIik7cmV0dXJuIE1hdGgucm91bmQoZSpmWzFdL2ZbMF0pfSxrdjpmdW5jdGlvbihlLGYsYyl7dmFyIGE9dGhpczt2b2lkIDA9PT1jJiYoYz17fSk7dmFyIGIsZD17fSxoPXt9LGs9KGI9e30sYi5IQU5ETEVfQllfVFlQRT1mdW5jdGlvbihuKXt2YXIgcj1uLmtleTtuLklqW3JdPW4ubm93W3JdfSxiLkhBTkRMRV9BUlJBWT1mdW5jdGlvbihuKXt2YXIgcj1uLm5vdyxxPW4ua2V5O249bi5JajthLnZnKHJbcV0pIT09YS52ZyhlW3FdKSYmKG5bcV09cltxXSl9LGIuSEFORExFX09CSkVDVD1mdW5jdGlvbihuKXt2YXIgcj1uLm5vdyxxPW4ua2V5O249bi5Jajt2YXIgdT1hLmt2KGVbcV0scltxXSk7YS5MaCh1KSYmKG5bcV09XG5yW3FdKX0sYi5IQU5ETEVfUFJJTUlUSVZFPWZ1bmN0aW9uKG4pe3ZhciByPW4ua2V5O24uSWpbcl09bi5ub3dbcl19LGIpO2MueG89dGhpcy5VcyhjLnhvfHxbXSk7Yj0wO2ZvcihjPXRoaXMueEIoZSxmLGMpO2I8Yy5sZW5ndGg7YisrKXt2YXIgbD1jW2JdLG09dGhpcy53eihlW2xdLGZbbF0pO2tbbV0oe1NUOmUsbm93OmYsa2V5OmwsYlU6aCxJajpkfSl9cmV0dXJuIEpTT04ucGFyc2UodGhpcy52ZyhkKSl9LHhCOmZ1bmN0aW9uKGUsZixjKXt2YXIgYT10aGlzO3JldHVybiBPYmplY3Qua2V5cyhmKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGEuSEMoZSxmLGIpfHxjLnhvW2JdfSl9LEhDOmZ1bmN0aW9uKGUsZixjKXtyZXR1cm4hZS5oYXNPd25Qcm9wZXJ0eShjKXx8ZVtjXSE9PWZbY119LHd6OmZ1bmN0aW9uKGUsZil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmKT9cIkhBTkRMRV9CWV9UWVBFXCI6XG5BcnJheS5pc0FycmF5KGYpP1wiSEFORExFX0FSUkFZXCI6dGhpcy5NYyhmKT9cIkhBTkRMRV9PQkpFQ1RcIjpcIkhBTkRMRV9QUklNSVRJVkVcIn0sZXh0ZW5kOmZ1bmN0aW9uKGUsZil7Zm9yKHZhciBjIGluIGYpZi5oYXNPd25Qcm9wZXJ0eShjKSYmKGVbY109ZltjXSk7cmV0dXJuIGV9LGZnOmZ1bmN0aW9uKGUsZil7Zj10aGlzLmFDKGYpO3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgZXx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBlP0FycmF5LmlzQXJyYXkoZSk/Zi5jYWxsKHRoaXMsW10sZSk6Zi5jYWxsKHRoaXMse30sZSk6ZX0sYUM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/dGhpcy5EYzp0aGlzLmV4dGVuZH0sRGM6ZnVuY3Rpb24oZSxmLGMpe3ZhciBhPUFycmF5LmlzQXJyYXkoZik7Yz10aGlzLmV4dGVuZCh7YnY6ITB9LGMpO3JldHVybiB0aGlzLmtyKGYpP2U6YSYmIWMuYnY/dGhpcy5FYihmKTphP3RoaXMuQUEoZSxmLGMpOnRoaXMuQkEoZSxmLGMpfSxrcjpmdW5jdGlvbihlKXtyZXR1cm4hZXx8XG5cIm9iamVjdFwiIT09dHlwZW9mIGV9LEFBOmZ1bmN0aW9uKGUsZixjKXt2YXIgYT10aGlzO3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgYixkPShiPXt9LGIuTk9UX0RFRklORUQ9ZnVuY3Rpb24obCl7bC52aFtsLkpoXT1hLkViKGwuZGkpfSxiLk9CSkVDVD1mdW5jdGlvbihsKXt2YXIgbT1sLnZoLG49bC5KaDttW25dPWEuRGMobVtuXSxsLmRpLGwub3B0aW9ucyl9LGIuQVJSQVk9ZnVuY3Rpb24obCl7bC52aC5wdXNoKGEuRWIobC5kaSkpfSxiKTtmb3IoYj0wO2I8Zi5sZW5ndGg7KytiKXt2YXIgaD1mW2JdLGs9dGhpcy52eihiLGUsaCk7aWYobnVsbCE9PWspZFtrXSh7dmg6ZSxKaDpiLGRpOmgsb3B0aW9uczpjfSl9cmV0dXJuIGV9LHZ6OmZ1bmN0aW9uKGUsZixjKXtyZXR1cm5cInVuZGVmaW5lZFwiPT09dHlwZW9mIGZbZV0/XCJOT1RfREVGSU5FRFwiOlwib2JqZWN0XCI9PT10eXBlb2YgYz9cIk9CSkVDVFwiOnRoaXMuY2EoZixjKT9udWxsOlwiQVJSQVlcIn0sQkE6ZnVuY3Rpb24oZSxmLGMpe2U9ZXx8XG57fTtmb3IodmFyIGEgaW4gZil7dmFyIGI9ZlthXTtlW2FdPXRoaXMua3IoYik/Yjp0aGlzLkNBKHt2aDplLGtleTphLGRpOmIsb3B0aW9uczpjfSl9cmV0dXJuIGV9LENBOmZ1bmN0aW9uKGUpe3ZhciBmPWUudmgsYz1lLmtleSxhPWUuZGk7ZT1lLm9wdGlvbnM7cmV0dXJuIGMgaW4gZj90aGlzLkRjKGZbY10sYSxlKTp0aGlzLkViKGEpfSxFYjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mZyhlLCEwKX0sZE06ZnVuY3Rpb24oZSxmKXtmdW5jdGlvbiBjKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfWZvcih2YXIgYSBpbiBmKWYuaGFzT3duUHJvcGVydHkoYSkmJihlW2FdPWZbYV0pO251bGw9PT1mP2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZik6KGMucHJvdG90eXBlPWYucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyBjKX0sY2E6ZnVuY3Rpb24oZSxmKXtyZXR1cm4gMDw9ZS5pbmRleE9mKGYpfSxRZTpmdW5jdGlvbihlKXtmb3IodmFyIGY9dGhpcyxjPVtdLGE9MTthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKWNbYS1cbjFdPWFyZ3VtZW50c1thXTt2YXIgYj10aGlzLnFvLmFwcGx5KHRoaXMsYyk7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiFmLmNhKGIsZCl9KX0sUm06ZnVuY3Rpb24oZSxmKXtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuY2EoZixjKX0sdGhpcyl9LG1iOmZ1bmN0aW9uKGUsZil7dGhpcy5jYShlLGYpfHxlLnB1c2goZik7cmV0dXJuIGV9LFVzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgZj17fSxjPTA7YzxlLmxlbmd0aDsrK2MpZltlW2NdXT0hMDtyZXR1cm4gZn0sQ286ZnVuY3Rpb24oZSxmKXtmb3IodmFyIGM7MDw9KGM9ZS5pbmRleE9mKGYpKTspZS5zcGxpY2UoYywxKTtyZXR1cm4gZX0sd2c6ZnVuY3Rpb24oZSxmKXtmb3IodmFyIGM9MDtjPGYubGVuZ3RoOysrYyl0aGlzLm1iKGUsZltjXSk7cmV0dXJuIGV9LHFvOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWVbZl09YXJndW1lbnRzW2ZdO2Y9W107XG5mb3IodmFyIGM9MDtjPGUubGVuZ3RoOysrYylmPXRoaXMud2coZixlW2NdKTtyZXR1cm4gZn0sdW5pcXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLndnKFtdLGUpfSxrZzpmdW5jdGlvbihlKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sW1tdXS5jb25jYXQoZSkpfSxsSTpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoO2YrKyllW2ZdPWFyZ3VtZW50c1tmXTtyZXR1cm4gZS5sZW5ndGg/ZS5yZWR1Y2UoZnVuY3Rpb24oYyxhKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGI9W10sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspYltkXT1hcmd1bWVudHNbZF07cmV0dXJuIGEoYy5hcHBseSh2b2lkIDAsYikpfX0pOmZ1bmN0aW9uKGMpe3JldHVybiBjfX0sVGo6ZnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGU/ZSgpOmV9LE1POmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoYyl7cmV0dXJuIDEwPmM/XCIwXCIrYzpjfXJldHVybltlLmdldEZ1bGxZZWFyKCksXG5mKGUuZ2V0TW9udGgoKSsxKSxmKGUuZ2V0RGF0ZSgpKV0uam9pbihcIi1cIil9LEtPOmZ1bmN0aW9uKGUsZil7cmV0dXJuIDA8PWUuaW5kZXhPZihmLGUubGVuZ3RoLWYubGVuZ3RoKX0sYmk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvLShbYS16XSkvZyxmdW5jdGlvbihmKXtyZXR1cm4gZlsxXS50b1VwcGVyQ2FzZSgpfSl9LFVvOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbYS16XVtBLVpdKS9nLGZ1bmN0aW9uKGYpe3JldHVybiBmWzBdK1wiLVwiK2ZbMV0udG9Mb3dlckNhc2UoKX0pfSxiUDpmdW5jdGlvbihlKXtyZXR1cm4gZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9LENnOmZ1bmN0aW9uKGUsZil7cmV0dXJuIGUucmVwbGFjZSgvXFx7KFtee31dKylcXH0vZyxmdW5jdGlvbihjLGEpe3JldHVybiBmW2FdfHxcIlwifSl9LHB2OmZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUmJihlPVwiXCIpO3ZhciBmPS9ecmdiYT9cXCgoXFxkKyksXFxzKihcXGQrKSxcXHMqKFxcZCspKD86LFxccypbXFxkXFwuXSspP1xcKSQvLFxuYz0vXiMoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSkkL2k7ZT1lLnRyaW0oKTtyZXR1cm4gMDw9ZS5pbmRleE9mKFwicmdiXCIpPyhmPWYuZXhlYyhlKSxwLklxKGYsMTApKTowPD1lLmluZGV4T2YoXCIjXCIpPyhmPWMuZXhlYyhlKSxwLklxKGYsMTYpKTpudWxsfSxJcTpmdW5jdGlvbihlLGYpe3JldHVybiBlP3tyZWQ6cGFyc2VJbnQoZVsxXSxmKSxncmVlbjpwYXJzZUludChlWzJdLGYpLGJsdWU6cGFyc2VJbnQoZVszXSxmKX06bnVsbH0sWUs6ZnVuY3Rpb24oZSxmKXtyZXR1cm4gZSYmZj9NYXRoLnNxcnQoTWF0aC5wb3coZi5yZWQtZS5yZWQsMikrTWF0aC5wb3coZi5ncmVlbi1lLmdyZWVuLDIpK01hdGgucG93KGYuYmx1ZS1lLmJsdWUsMikpOk51bWJlci5NQVhfVkFMVUV9LHdIOmZ1bmN0aW9uKGUsZixjKXt2YXIgYT1udWxsO3RyeXthPXRoaXMueUEoZSxjKSxhLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezM8YS5yZWFkeVN0YXRlJiZmJiZmKGEucmVzcG9uc2VUZXh0LFxuYSl9LGEuc2VuZChjKX1jYXRjaChiKXt0aGlzLmxvZyhiKX19LHlBOmZ1bmN0aW9uKGUsZil7dmFyIGM9bmV3IChILiQoKS5YTUxIdHRwUmVxdWVzdCkoXCJNU1hNTDIuWE1MSFRUUC4zLjBcIik7Yy5vcGVuKGY/XCJQT1NUXCI6XCJHRVRcIixlLDEpO2Muc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtdHlwZVwiLFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpO2Mud2l0aENyZWRlbnRpYWxzPSEwO3JldHVybiBjfSxzbjpmdW5jdGlvbihlLGYpe2Zvcih2YXIgYz1bXSxhPTI7YTxhcmd1bWVudHMubGVuZ3RoO2ErKyljW2EtMl09YXJndW1lbnRzW2FdO3JldHVybiBlP2UuYXBwbHkoZixjKTpudWxsfSx3TTpmdW5jdGlvbihlLGYsYyl7cmV0dXJuIGU+PWYmJmU8PWN9LENOOmZ1bmN0aW9uKGUsZil7Zm9yKHZhciBjPVtdO2U8PWY7ZSsrKWMucHVzaChlKTtyZXR1cm4gY30sZVQ6ZnVuY3Rpb24oZSxmLGMpe2U8Zj9lPWY6ZT5jJiYoZT1jKTtyZXR1cm4gZX0sbFQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigxRTkqXG5NYXRoLnJhbmRvbSgpKX0sRU46ZnVuY3Rpb24oZSl7cmV0dXJuXCJvYmplY3RcIiE9PXR5cGVvZiBlP3Aud2QoZSk6T2JqZWN0LmtleXMoZSkucmVkdWNlKGZ1bmN0aW9uKGYsYyl7cmV0dXJuISFlW2NdfHxmfSwhMSl9LHhBOmZ1bmN0aW9uKGUsZixjKXt2YXIgYT1uZXcgKEguJCgpLlhNTEh0dHBSZXF1ZXN0KTtcIndpdGhDcmVkZW50aWFsc1wiaW4gYT8oYS5vcGVuKGUsZiwhMCksYS53aXRoQ3JlZGVudGlhbHM9Yyk6YT1udWxsO3JldHVybiBhfSxyZXF1ZXN0OmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihmLGMpe3ZhciBhPWUubU4sYj1lLndpdGhDcmVkZW50aWFscyxkPWUuY29udGVudFR5cGU7ZD12b2lkIDA9PT1kP1wiYXBwbGljYXRpb24vanNvblwiOmQ7dmFyIGg9cC54QShlLm1ldGhvZCxlLnVybCx2b2lkIDA9PT1iPyExOmIpO2g/KGgub25sb2FkPWZ1bmN0aW9uKCl7MDw9aC5nZXRSZXNwb25zZUhlYWRlcihcImNvbnRlbnQtdHlwZVwiKS5pbmRleE9mKFwiYXBwbGljYXRpb24vanNvblwiKT9cbmYoSlNPTi5wYXJzZShoLnJlc3BvbnNlVGV4dCkpOmYoaC5yZXNwb25zZVRleHQpfSxoLm9uZXJyb3I9ZnVuY3Rpb24oKXtjKGgucmVzcG9uc2VUZXh0KX0sYSYmaC5zZXRSZXF1ZXN0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIsZCksaC5zZW5kKGEpKTpjKEVycm9yKFwiRmFpbGVkIHRvIGNyZWF0ZSBYSFIgb2JqZWN0XCIpKX0pfSxHTDpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBlW2ZdfSl9LFR2OmZ1bmN0aW9uKGUsZil7dm9pZCAwPT09ZiYmKGY9NjQpO3ZhciBjPXt9LGE7Zm9yKGEgaW4gZSllLmhhc093blByb3BlcnR5KGEpJiYoY1thLnNsaWNlKDAsZildPWVbYV0uc2xpY2UoMCxmKSk7cmV0dXJuIGN9fTt0LmRlZmF1bHQ9cDtILkVpPXB9LHt9XSwyNTE6W2Z1bmN0aW9uKGcseSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgdj1nKDI1MikscD1nKDEyNyksZT1nKDE0NyksZj1cbmcoMTQ5KSxjPW51bGw7dC5kZWZhdWx0PUguVFM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7fWEuSGg9ZnVuY3Rpb24oKXt2YXIgYjt2b2lkIDA9PT1iJiYoYj0hMCk7aWYobnVsbD09PWN8fCExPT09YiljPWEuSkooKTtyZXR1cm4gY307YS5KSj1mdW5jdGlvbigpe3JldHVybihuZXcgdi5kZWZhdWx0KFRhLHtiOnAuZGVmYXVsdCxxZDplLmRlZmF1bHQsRnQ6Zi5kZWZhdWx0fSkpLktoKCl9O3JldHVybiBhfSgpfSx7MTI3OjEyNywxNDc6MTQ3LDE0OToxNDksMjUyOjI1Mn1dLDI1MjpbZnVuY3Rpb24oZyx5LHQpe3ZhciB2PXRoaXMmJnRoaXMuQ3x8ZnVuY3Rpb24oKXt2YXIgYT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYixkKXtiLl9fcHJvdG9fXz1kfXx8ZnVuY3Rpb24oYixkKXtmb3IodmFyIGggaW4gZClkLmhhc093blByb3BlcnR5KGgpJiYoYltoXT1kW2hdKX07cmV0dXJuIGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gaCgpe3RoaXMuY29uc3RydWN0b3I9XG5ifWEoYixkKTtiLnByb3RvdHlwZT1udWxsPT09ZD9PYmplY3QuY3JlYXRlKGQpOihoLnByb3RvdHlwZT1kLnByb3RvdHlwZSxuZXcgaCl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3k9ZygxMzYpO3ZhciBwPWcoMTM4KTtnPWcoMTQ4KTt2YXIgZT1beS5kZWZhdWx0LlB3LHkuZGVmYXVsdC5Rdyx5LmRlZmF1bHQuaXhdLGY9W3kuZGVmYXVsdC5Bdyx5LmRlZmF1bHQuUncseS5kZWZhdWx0LmV4XSxjPVtwLmRlZmF1bHQuV2sscC5kZWZhdWx0LlRjLHAuZGVmYXVsdC4kdyxwLmRlZmF1bHQuYXgscC5kZWZhdWx0LnRjLHAuZGVmYXVsdC5JZyxwLmRlZmF1bHQuY3EscC5kZWZhdWx0LkNpLHAuZGVmYXVsdC5CZCxwLmRlZmF1bHQuS3gscC5kZWZhdWx0Lk54LHAuZGVmYXVsdC5NeCxwLmRlZmF1bHQuTHgscC5kZWZhdWx0LlB4LHAuZGVmYXVsdC5PeF07Zz1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQsaCl7dmFyIGs9YS5jYWxsKHRoaXMpfHxcbnRoaXM7ay5WYT1kO2suYT1oO2suS2Y9e307ay5BbT17fTtrLkxlPXt9O2suS2U9e307ay5SZz1udWxsO2suSGw9bnVsbDtrLmVIPSExO2suQ209MDtrLnhjPW51bGw7ay5MaT1udWxsO2suTWI9ITE7cmV0dXJuIGt9dihiLGEpO2IucHJvdG90eXBlLktoPWZ1bmN0aW9uKCl7dGhpcy54Yz10aGlzLmEuRnQucGQodGhpcy5WYSk7dGhpcy4kYShjKTt0aGlzLmptKCkuV3ooKTt0aGlzLnFzKDAsMCk7dGhpcy5rbSh0aGlzLlpqKCkpO3RoaXMua3koKTtyZXR1cm4gdGhpc307Yi5wcm90b3R5cGUua3k9ZnVuY3Rpb24oKXt0aGlzLm15KCk7dGhpcy54eSgpO3RoaXMucnkoKTt0aGlzLnF5KCk7dGhpcy5oeSgpfTtiLnByb3RvdHlwZS5oeT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoayxsKXtoLnhjLnUoayxmdW5jdGlvbigpe3JldHVybiBoLnBzKGwpfSl9dmFyIGg9dGhpcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgdGhpcy5WYS5kb2N1bWVudC5oYXNGb2N1cyYmdGhpcy5wcyh0aGlzLlZhLmRvY3VtZW50Lmhhc0ZvY3VzKCkpO1xuZS5mb3JFYWNoKGZ1bmN0aW9uKGspe2QoaywhMCl9KTtmLmZvckVhY2goZnVuY3Rpb24oayl7ZChrLCExKX0pfTtiLnByb3RvdHlwZS5teT1mdW5jdGlvbigpe3ZhciBkPXRoaXM7dGhpcy54Yy51KHAuZGVmYXVsdC5UYyxmdW5jdGlvbigpe2Quam0oKTtkLmttKGQuWmooKSk7ZC5mKHAuZGVmYXVsdC5UYytkLlJnKTtkLmYocC5kZWZhdWx0LlRjLGQuUmcpfSwhMSl9O2IucHJvdG90eXBlLnF5PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpczt0aGlzLnhjLnUocC5kZWZhdWx0LnRjLGZ1bmN0aW9uKGgpe3RyeXtkLlllKCksZC5qbSgpfWNhdGNoKGspe31kLmYocC5kZWZhdWx0LnRjLGgpfSwhMSl9O2IucHJvdG90eXBlLnJ5PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxoPSExO3RoaXMueGMudShwLmRlZmF1bHQuSWcsZnVuY3Rpb24oayl7aHx8KGg9ITAsZC5WYS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtkLmdrKCk7ZC5VQShrKTtkLnFzKGQuTGUudG9wLGQuTGUubGVmdCk7aD0hMX0pKX0sXG4hMSl9O2IucHJvdG90eXBlLlVBPWZ1bmN0aW9uKGQpe3ZhciBoPXRoaXMuTGUubGVmdCE9PXRoaXMuS2UubGVmdCxrPXRoaXMuTGUudG9wIT09dGhpcy5LZS50b3A7dGhpcy5WQShkLGgsayk7ITAhPT1rJiYhMCE9PWh8fHRoaXMuZihwLmRlZmF1bHQuSWcsZCl9O2IucHJvdG90eXBlLlZBPWZ1bmN0aW9uKGQsaCxrKXshMD09PWsmJnRoaXMuZihwLmRlZmF1bHQuQ2ksZCx0aGlzLmZ1KCkpOyEwPT09aCYmdGhpcy5mKHAuZGVmYXVsdC5jcSxkKX07Yi5wcm90b3R5cGUueHk9ZnVuY3Rpb24oKXt2YXIgZD10aGlzO3RoaXMuYS5xZC5xayh0aGlzLlZhLGZ1bmN0aW9uKCl7cmV0dXJuIGQuSHkoKX0pfTtiLnByb3RvdHlwZS5qbT1mdW5jdGlvbigpe3ZhciBkPXRoaXMuVmEsaD10aGlzLlZhLnNjcmVlbixrPWgud2lkdGg+aC5oZWlnaHQsbD1rP2gud2lkdGg6aC5oZWlnaHQ7aD1rP2guaGVpZ2h0Omgud2lkdGg7ZC5pbm5lckhlaWdodD5kLmlubmVyV2lkdGg/KHRoaXMuUmc9XCJwb3J0cmFpdFwiLFxudGhpcy5LZj17d2lkdGg6aCxoZWlnaHQ6bH0pOih0aGlzLlJnPVwibGFuZHNjYXBlXCIsdGhpcy5LZj17d2lkdGg6bCxoZWlnaHQ6aH0pO3JldHVybiB0aGlzfTtiLnByb3RvdHlwZS5rbT1mdW5jdGlvbihkKXt0aGlzLkNtPWR9O2IucHJvdG90eXBlLlpqPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5LZi53aWR0aC90aGlzLlZhLmlubmVyV2lkdGg7cmV0dXJuIE1hdGgucm91bmQoMUUzKih0aGlzLk1iP2Q6MSkpLzFFM307Yi5wcm90b3R5cGUuSHk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGssbCxtKXtoLkxpLnUoayxmdW5jdGlvbigpe2guVmEuc2V0VGltZW91dChsLG0pfSl9dmFyIGg9dGhpczt0aGlzLkxpPXRoaXMuYS5GdC5wZCh0aGlzLlZhLmRvY3VtZW50LmJvZHkpO2QoXCJlbmRwaW5jaG91dFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGgudm0oXCJwaW5jaFwiLFwiaW5cIil9LDEwMCk7ZChcImVuZHBpbmNoaW5cIixmdW5jdGlvbigpe3JldHVybiBoLnZtKFwicGluY2hcIixcIm91dFwiKX0sMTAwKTtkKFwiZG91YmxldGFwXCIsXG5mdW5jdGlvbigpe3JldHVybiBoLnZtKFwiZG91YmxldGFwXCIpfSw2MDApfTtiLnByb3RvdHlwZS52bT1mdW5jdGlvbihkLGgpe3ZvaWQgMD09PWgmJihoPW51bGwpO3ZhciBrPXRoaXMuWmooKTtpZihudWxsPT09aCl7aWYoaz09PXRoaXMuQ20mJiExPT09dGhpcy5lSClyZXR1cm47aD1rPHRoaXMuQ20/XCJvdXRcIjpcImluXCJ9dGhpcy5rbShrKTt0aGlzLldBKGQsaCl9O2IucHJvdG90eXBlLldBPWZ1bmN0aW9uKGQsaCl7dGhpcy5mKHAuZGVmYXVsdC5CZCtoK2QpO3RoaXMuZihwLmRlZmF1bHQuQmQraCxkKTt0aGlzLmYocC5kZWZhdWx0LkJkLGgsZCl9O2IucHJvdG90eXBlLnFzPWZ1bmN0aW9uKGQsaCl7dGhpcy5LZS50b3A9ZDt0aGlzLktlLmxlZnQ9aH07Yi5wcm90b3R5cGUuWWU9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1kKXZhciBkPXRoaXMuVmE7ZD10aGlzLmEuYi5vYihkKTt0aGlzLkFtLndpZHRoPWQud2lkdGg7dGhpcy5BbS5oZWlnaHQ9ZC5oZWlnaHQ7cmV0dXJuIHRoaXMuQW19O1xuYi5wcm90b3R5cGUucHM9ZnVuY3Rpb24oZCl7dGhpcy5IbD1kfTtiLnByb3RvdHlwZS5oaz1mdW5jdGlvbigpe3ZhciBkPXRoaXMuVmEuZG9jdW1lbnQ7cmV0dXJuIGQudmlzaWJpbGl0eVN0YXRlfHxkLndlYmtpdFZpc2liaWxpdHlTdGF0ZXx8ZC5tb3pWaXNpYmlsaXR5U3RhdGV8fHRoaXMucEMoKX07Yi5wcm90b3R5cGUucEM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMuSGw/dGhpcy5IbD9cInZpc2libGVcIjpcImhpZGRlblwiOlwidW5rbm93blwifTtiLnByb3RvdHlwZS4kTz1mdW5jdGlvbihkKXt0aGlzLmYocC5kZWZhdWx0LldrLFN0cmluZyhkKSl9O2IucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLkooKTt0aGlzLnhjLkooKTtudWxsIT09dGhpcy5MaSYmdGhpcy5MaS5KKCl9O2IucHJvdG90eXBlLiQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5WYX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwiZGltZW5zaW9uc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ZZSgpfSxcbmVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwiZGV2aWNlRGltZW5zaW9uc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LZn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJtb2JpbGVEZXZpY2VPcmllbnRhdGlvblwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SZ30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtiLnByb3RvdHlwZS5naz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkxlPXtsZWZ0OnRoaXMuYS5iLkhuKFRhKSx0b3A6dGhpcy5hLmIuZ3UoVGEpfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwic2Nyb2xsUG9zaXRpb25cIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2soKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtiLnByb3RvdHlwZS5mdT1mdW5jdGlvbigpe3ZhciBkPVxudGhpcy5MZS50b3AsaDtkPnRoaXMuS2UudG9wJiYoaD1cImRvd25cIik7ZDx0aGlzLktlLnRvcCYmKGg9XCJ1cFwiKTtyZXR1cm4gaH07T2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwic2Nyb2xsRGlyZWN0aW9uXCIse2dldDpmdW5jdGlvbigpe3ZhciBkPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGQuZnUoKX19LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLFwicHJldmlvdXNTY3JvbGxQb3NpdGlvblwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJwcmV2aW91c0RldmljZVZpZXdwb3J0U2NhbGVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWmooKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXG5cImV2ZW50c1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtiLkg9ZnVuY3Rpb24oKXtyZXR1cm4gY307Yi5wcm90b3R5cGUuV3o9ZnVuY3Rpb24oKXt0aGlzLk1iPVwib250b3VjaHN0YXJ0XCJpbiB0aGlzLlZhLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmdGhpcy55RCgpfTtiLnByb3RvdHlwZS55RD1mdW5jdGlvbigpe3ZhciBkPXRoaXMuS2YsaD1kLndpZHRoO2Q9ZC5oZWlnaHQ7cmV0dXJuIDEyMDA+PWgmJjJFMz49ZHx8MkUzPj1oJiYxMjAwPj1kfTtyZXR1cm4gYn0oZy5kZWZhdWx0KTt0LmRlZmF1bHQ9SC5RUz1nfSx7MTM2OjEzNiwxMzg6MTM4LDE0ODoxNDh9XX0se30sWzExNF0pO2thLlR5bnRTSUM9a2EuVHludFJUPUh9KSh3aW5kb3csd2luZG93LlR5bnR8fFtdKTtcbiJ9LCAiaGVhZGVyc1NpemUiOiAxNjIzLCAiYm9keVNpemUiOiAxMTY3MDgsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDExODMzMX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDEzNzUuMzMxLCAicmVjZWl2ZSI6IDUxMS43Mjl9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjE4M1oiLCAidGltZSI6IDQ0NC45NzQwMDAwMDAwMDAwNSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9hSHZWV010ZTRyNTRvTWFLbGdZajh1LmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlIn0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbSJ9LCB7Im5hbWUiOiAiUmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvc2F2ZWRfcmVzb3VyY2UoOSkuaHRtbCJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTk1LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogIl9fY2ZfYm0iLCAidmFsdWUiOiAicUNhSW9pVlpzS0ZSS0tDZlBjSGFIbTVUOUFTQmNWNG03R1lKR3g3OXR2dy0xNjg0OTQyODgxLTAtQWMxS05nVjhoeHZsRUQwSUM5cE01VHl5OVF2UUU2bmhYbW53MjFVcWppcDgyQUg2VGdIRnd4c3IzVUNiWWV0OHlKSjl2UkovdmpET08zMFZYS1lqZ01zPSIsICJodHRwT25seSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVR5cGUifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAidmFsdWUiOiAiVXNlci1BZ2VudCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVJlcXVlc3RlZC1XaXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtTGVuZ3RoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJDb250ZW50LVJhbmdlIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUNodW5rZWQtT3V0cHV0In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUGF0aCJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiWC1JcGZzLVJvb3RzIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLVN0cmVhbS1PdXRwdXQifSwgeyJuYW1lIjogIkNGLUNhY2hlLVN0YXR1cyIsICJ2YWx1ZSI6ICJNSVNTIn0sIHsibmFtZSI6ICJDRi1SYXkiLCAidmFsdWUiOiAiN2NjNmE0NmYwYTA0OTI1Yy1GUkEifSwgeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTI5MDMwNDAwLCBpbW11dGFibGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIxIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1kQTg0OTN1Q3JtaFFKaVp3Y3RpV0RwYXpNd3d6dFgyUTFucDNCcDltdzNvTVwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJfX2NmX2JtPXFDYUlvaVZac0tGUktLQ2ZQY0hhSG01VDlBU0JjVjRtN0dZSkd4Nzl0dnctMTY4NDk0Mjg4MS0wLUFjMUtOZ1Y4aHh2bEVEMElDOXBNNVR5eTlRdlFFNm5oWG1udzIxVXFqaXA4MkFINlRnSEZ3eHNyM1VDYllldDh5Sko5dlJKL3ZqRE9PMzBWWEtZamdNcz07IHBhdGg9LzsgZXhwaXJlcz1XZWQsIDI0LU1heS0yMyAxNjoxMToyMSBHTVQ7IGRvbWFpbj0uYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogIlRyYW5zZmVyLUVuY29kaW5nIiwgInZhbHVlIjogImNodW5rZWQifSwgeyJuYW1lIjogIlZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJYLUlwZnMtUGF0aCIsICJ2YWx1ZSI6ICIvaXBmcy9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS9KdW5vIC0gTXkgSnVubyBQZXJzb25hbGl6ZWQgU3RhcnQgUGFnZSAtIFNpZ24gaW5fZmlsZXMvYUh2VldNdGU0cjU0b01hS2xnWWo4dS5qcy5kb3dubG9hZCJ9LCB7Im5hbWUiOiAiWC1JcGZzLVJvb3RzIiwgInZhbHVlIjogImJhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLFFtWnlQMm5ZYUhhV1hMMzhkY2d2aGtxTUs2eWt1SGl1U1pSeTR3bTZTRUFNaXksUW1kQTg0OTN1Q3JtaFFKaVp3Y3RpV0RwYXpNd3d6dFgyUTFucDNCcDltdzNvTSJ9LCB7Im5hbWUiOiAiYWx0LXN2YyIsICJ2YWx1ZSI6ICJoMz1cIjo0NDNcIjsgbWE9ODY0MDAsIGgzLTI5PVwiOjQ0M1wiOyBtYT04NjQwMCJ9LCB7Im5hbWUiOiAieC1jZi1pcGZzLWNhY2hlLXN0YXR1cyIsICJ2YWx1ZSI6ICJtaXNzIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IDM2MDEsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMjc5NywgInRleHQiOiAiLyoqL1R5bnQuc2Moe1wiZFwiOnRydWUsXCJkb21haW5cIjpcInN0YXJ0Lm5ldHplcm8ubmV0XCIsXCJwXCI6W1wic2ljX3YxXCJdLFwic2ljXCI6e1wibmV0d29ya19pZFwiOlwiMzI4NjcwMTBcIixcImNvbnRlbnRfdHlwZXNcIjp7XCIuKlwiOlsxMF19LFwibWtwXCI6e1wiYW9sXCI6MC4yfSxcInRtXCI6WzEuMjUsMS4wLDAuNzVdLFwidHJrXCI6e1wibW9hdFwiOntcImlzclwiOjJ9fSxcInByb2R1Y3RzXCI6e1wiaW52aWV3XCI6e1wibWluX2Jyb3dzZXJfd2lkdGhcIjpcIjEwXCIsXCJtaW5fYnJvd3Nlcl9oZWlnaHRcIjpcIjEwXCIsXCJleGNsdWRlX2Jyb3dzZXJzXCI6XCJJRSA4LjBcIixcImFwbnhfcHJlX2VuYWJsZWRcIjp0cnVlLFwib3hfcHJlX2VuYWJsZWRcIjp0cnVlLFwiYW9sX3ByZV9lbmFibGVkXCI6dHJ1ZSxcImFtem5fcHJlX2VuYWJsZWRcIjpmYWxzZSxcImluc3RhbGxfbWV0aG9kXCI6XCJERlBcIixcInRiX3Bvc2l0aW9uXCI6XCJib3R0b20tbGVmdFwiLFwidGJfYW5pbWF0aW9uXCI6XCJwdXNoXCIsXCJtdWx0aV9hZF9lbmFibGVkXCI6dHJ1ZSxcIm11bHRpX2FkX2F1dG9jbG9zZV9hZnRlclwiOjMwLFwiYXV0b19yZWZyZXNoX2ludGVydmFsXCI6WzE1LDMwXSxcInR0eF9wcmVfZW5hYmxlZFwiOntcIjMzeGNoYW5nZVwiOnRydWV9LFwiZGV2aWNlc1wiOntcImRlc2t0b3BcIjp7XCJhcG54X3BpZFwiOltcIjExNDk0MzU2XCIsXCIxMTQ5NDM0OFwiLFwiMTE0OTQzNTdcIl0sXCJhZF91bml0XCI6XCJBXzMwMHg2MDBfMzAweDI1MF8xNjB4NjAwXCIsXCJhZF9zaXplc1wiOntcIjMwMHg2MDBcIjp7XCJmbHJcIjowLjI1fSxcIjMwMHgyNTBcIjp7XCJmbHJcIjowLjI1fSxcIjE2MHg2MDBcIjp7XCJmbHJcIjowLjI1fX0sXCJnZW9cIjp7XCJVU1wiOntcImFkX3NpemVzXCI6e1wiMzAweDYwMFwiOntcImZsclwiOjAuMjV9LFwiMzAweDI1MFwiOntcImZsclwiOjAuMjV9LFwiMTYweDYwMFwiOntcImZsclwiOjAuMjV9fX19fSxcIm1vYmlsZVwiOntcImFwbnhfcGlkXCI6W1wiMTE0OTQzNjBcIixcIjExNDk0MzUwXCIsXCIxMTQ5NDM2MVwiXSxcImFkX3VuaXRcIjpcIkFfMzIweDEwMF8zMjB4NTBcIixcImFkX3NpemVzXCI6e1wiMzIweDEwMFwiOntcImZsclwiOjAuMjV9LFwiMzIweDUwXCI6e1wiZmxyXCI6MC4yNX19LFwiZ2VvXCI6e1wiVVNcIjp7XCJhZF9zaXplc1wiOntcIjMyMHgxMDBcIjp7XCJmbHJcIjowLjI1fSxcIjMyMHg1MFwiOntcImZsclwiOjAuMjV9fX19fSxcInRhYmxldFwiOntcImFwbnhfcGlkXCI6W1wiMTE0OTQzNTJcIixcIjExNDk0MzQ2XCIsXCIxMTQ5NDM1M1wiXSxcImFkX3VuaXRcIjpcIkFfMTYweDYwMFwiLFwiYWRfc2l6ZXNcIjp7XCIxNjB4NjAwXCI6e1wiZmxyXCI6MC4yNX19LFwiZ2VvXCI6e1wiVVNcIjp7XCJhZF9zaXplc1wiOntcIjE2MHg2MDBcIjp7XCJmbHJcIjowLjI1fX19fX19LFwiZXhjbHVzaW9uc1wiOntcInVybHNcIjpbXCJcXFxcYltcXFxcdy4lKy1dKyhAfCUoMjUpKjQwKVthLXpBLVowLTkuLV0rKFxcXFwufCUoMjUpKjJbZUVdKVthLXpBLVpdezIsfVxcXFxiXCJdLFwiZGF0ZV9yYW5nZXNcIjpbXSxcIm1heF9jb250ZW50X3B1c2hcIjpcIjIwMFwifX0sXCJzaWFiXCI6e1wiYXBueF9wcmVfZW5hYmxlZFwiOmZhbHNlLFwib3hfcHJlX2VuYWJsZWRcIjp0cnVlLFwiYW9sX3ByZV9lbmFibGVkXCI6dHJ1ZSxcImFtem5fcHJlX2VuYWJsZWRcIjpmYWxzZSxcImF1dG9fcmVmcmVzaF9pbnRlcnZhbFwiOlswLDMwXSxcInR0eF9wcmVfZW5hYmxlZFwiOntcIjMzeGNoYW5nZVwiOnRydWV9LFwiZGV2aWNlc1wiOntcImRlc2t0b3BcIjp7XCJhcG54X3BpZFwiOntcImF0ZlwiOltdLFwiYnRmXCI6W119LFwiYWRfc2l6ZXNcIjp7XCIzMDB4NjAwXCI6e1wiZmxyXCI6MC4yNSxcInBhc3NiYWNrX3RhZ1wiOlwiXFx1MDAzY3NjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nLy91Lm9wZW54Lm5ldC9kLm1pbi5qcydcXHUwMDNlXFx1MDAzYy9zY3JpcHRcXHUwMDNlXCJ9LFwiMzAweDI1MFwiOntcImZsclwiOjAuMjUsXCJwYXNzYmFja190YWdcIjpcIlxcdTAwM2NzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9Jy8vdS5vcGVueC5uZXQvZC5taW4uanMnXFx1MDAzZVxcdTAwM2Mvc2NyaXB0XFx1MDAzZVwifSxcIjE2MHg2MDBcIjp7XCJmbHJcIjowLjI1LFwicGFzc2JhY2tfdGFnXCI6XCJcXHUwMDNjc2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPScvL3Uub3BlbngubmV0L2QubWluLmpzJ1xcdTAwM2VcXHUwMDNjL3NjcmlwdFxcdTAwM2VcIn0sXCI3Mjh4OTBcIjp7XCJmbHJcIjowLjI1LFwicGFzc2JhY2tfdGFnXCI6XCJcXHUwMDNjc2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPScvL3Uub3BlbngubmV0L2QubWluLmpzJ1xcdTAwM2VcXHUwMDNjL3NjcmlwdFxcdTAwM2VcIn19LFwiZ2VvXCI6e1wiVVNcIjp7XCJhZF9zaXplc1wiOntcIjMwMHg2MDBcIjp7XCJmbHJcIjowLjI1fSxcIjMwMHgyNTBcIjp7XCJmbHJcIjowLjI1fSxcIjE2MHg2MDBcIjp7XCJmbHJcIjowLjI1fSxcIjcyOHg5MFwiOntcImZsclwiOjAuMjV9fX19fSxcInRhYmxldFwiOntcImFwbnhfcGlkXCI6e1wiYXRmXCI6W10sXCJidGZcIjpbXX0sXCJhZF9zaXplc1wiOntcIjMwMHg2MDBcIjp7XCJmbHJcIjowLjI1LFwicGFzc2JhY2tfdGFnXCI6XCJcXHUwMDNjc2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPScvL3Uub3BlbngubmV0L2QubWluLmpzJ1xcdTAwM2VcXHUwMDNjL3NjcmlwdFxcdTAwM2VcIn0sXCIzMDB4MjUwXCI6e1wiZmxyXCI6MC4yNSxcInBhc3NiYWNrX3RhZ1wiOlwiXFx1MDAzY3NjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nLy91Lm9wZW54Lm5ldC9kLm1pbi5qcydcXHUwMDNlXFx1MDAzYy9zY3JpcHRcXHUwMDNlXCJ9LFwiMTYweDYwMFwiOntcImZsclwiOjAuMjUsXCJwYXNzYmFja190YWdcIjpcIlxcdTAwM2NzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9Jy8vdS5vcGVueC5uZXQvZC5taW4uanMnXFx1MDAzZVxcdTAwM2Mvc2NyaXB0XFx1MDAzZVwifSxcIjcyOHg5MFwiOntcImZsclwiOjAuMjUsXCJwYXNzYmFja190YWdcIjpcIlxcdTAwM2NzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9Jy8vdS5vcGVueC5uZXQvZC5taW4uanMnXFx1MDAzZVxcdTAwM2Mvc2NyaXB0XFx1MDAzZVwifX0sXCJnZW9cIjp7XCJVU1wiOntcImFkX3NpemVzXCI6e1wiMzAweDYwMFwiOntcImZsclwiOjAuMjV9LFwiMzAweDI1MFwiOntcImZsclwiOjAuMjV9LFwiMTYweDYwMFwiOntcImZsclwiOjAuMjV9LFwiNzI4eDkwXCI6e1wiZmxyXCI6MC4yNX19fX19LFwibW9iaWxlXCI6e1wiYXBueF9waWRcIjp7XCJhdGZcIjpbXSxcImJ0ZlwiOltdfSxcImFkX3NpemVzXCI6e1wiMzIweDUwXCI6e1wiZmxyXCI6MC4yNSxcInBhc3NiYWNrX3RhZ1wiOlwiXFx1MDAzY3NjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nLy91Lm9wZW54Lm5ldC9kLm1pbi5qcydcXHUwMDNlXFx1MDAzYy9zY3JpcHRcXHUwMDNlXCJ9LFwiMzAweDUwXCI6e1wiZmxyXCI6MC4yNSxcInBhc3NiYWNrX3RhZ1wiOlwiXFx1MDAzY3NjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nLy91Lm9wZW54Lm5ldC9kLm1pbi5qcydcXHUwMDNlXFx1MDAzYy9zY3JpcHRcXHUwMDNlXCJ9LFwiMzAweDI1MFwiOntcImZsclwiOjAuMjUsXCJwYXNzYmFja190YWdcIjpcIlxcdTAwM2NzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9Jy8vdS5vcGVueC5uZXQvZC5taW4uanMnXFx1MDAzZVxcdTAwM2Mvc2NyaXB0XFx1MDAzZVwifX0sXCJnZW9cIjp7XCJVU1wiOntcImFkX3NpemVzXCI6e1wiMzIweDUwXCI6e1wiZmxyXCI6MC4yNX0sXCIzMDB4NTBcIjp7XCJmbHJcIjowLjI1fSxcIjMwMHgyNTBcIjp7XCJmbHJcIjowLjI1fX19fX19LFwiZXhjbHVzaW9uc1wiOntcInVybHNcIjpbXCJcXFxcYltcXFxcdy4lKy1dKyhAfCUoMjUpKjQwKVthLXpBLVowLTkuLV0rKFxcXFwufCUoMjUpKjJbZUVdKVthLXpBLVpdezIsfVxcXFxiXCJdfX19fX0pIn0sICJoZWFkZXJzU2l6ZSI6IDE2NDIsICJib2R5U2l6ZSI6IDgwNCwgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogMjQ0Nn0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDQ0My4xMzYsICJyZWNlaXZlIjogMS44Mzh9LCAicGFnZXJlZiI6ICJwYWdlQGQ5Njk5OTVlMGU2ZGRmNDI4MTE2YzNhOWRiNDllOTc1IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjo0NzAwOjo2ODExOjYwMGRdIiwgIl9zZXJ2ZXJQb3J0IjogODAsICJfc2VjdXJpdHlEZXRhaWxzIjoge319LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDIzLTA1LTI0VDE1OjQxOjE4LjE4M1oiLCAidGltZSI6IDkwOS44OTc5OTk5OTk5OTk5LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cDovL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpLmlwZnMuY2YtaXBmcy5jb20vSnVubyUyMC0lMjBNeSUyMEp1bm8lMjBQZXJzb25hbGl6ZWQlMjBTdGFydCUyMFBhZ2UlMjAtJTIwU2lnbiUyMGluX2ZpbGVzL3JjaXYuanMuZG93bmxvYWQiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiQWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiQWNjZXB0LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiSG9zdCIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tIn0sIHsibmFtZSI6ICJSZWZlcmVyIiwgInZhbHVlIjogImh0dHA6Ly9iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tL0p1bm8lMjAtJTIwTXklMjBKdW5vJTIwUGVyc29uYWxpemVkJTIwU3RhcnQlMjBQYWdlJTIwLSUyMFNpZ24lMjBpbl9maWxlcy9zYXZlZF9yZXNvdXJjZSg5KS5odG1sIn0sIHsibmFtZSI6ICJVc2VyLUFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTMuMC41NjcyLjUzIFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA1NzcsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiT0siLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiX19jZl9ibSIsICJ2YWx1ZSI6ICI1TXk5ZHA2MmdQLnJ4MXd1eHFicnV1dERwX1Fsb0JFUk9QNnBlS2dvSGM4LTE2ODQ5NDI4ODAtMC1BZklIaTIyN3JMR3loSisxRmk0SVI2L1M5VTJoWDlrb1owQ1A3SVJobEFNWTUycjNXcE54WDdTWnoxaXJ6QmNLQ3VENTk5WXloNURzamlHbDZZS2Q4QWs9IiwgImh0dHBPbmx5IjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ2NTZmNDM5YjhlLUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtVHlwZSIsICJ2YWx1ZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIldlZCwgMjQgTWF5IDIwMjMgMTU6NDE6MjAgR01UIn0sIHsibmFtZSI6ICJFVGFnIiwgInZhbHVlIjogIlcvXCJRbVJqNjEyb1JwYVJqZ1BmR3pZQTE1TWZLQWZLc2NxRVluSjZ4NWZGWHVSNldCXCIifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJjbG91ZGZsYXJlIn0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIl9fY2ZfYm09NU15OWRwNjJnUC5yeDF3dXhxYnJ1dXREcF9RbG9CRVJPUDZwZUtnb0hjOC0xNjg0OTQyODgwLTAtQWZJSGkyMjdyTEd5aEorMUZpNElSNi9TOVUyaFg5a29aMENQN0lSaGxBTVk1MnIzV3BOeFg3U1p6MWlyekJjS0N1RDU5OVl5aDVEc2ppR2w2WUtkOEFrPTsgcGF0aD0vOyBleHBpcmVzPVdlZCwgMjQtTWF5LTIzIDE2OjExOjIwIEdNVDsgZG9tYWluPS5iYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aS5pcGZzLmNmLWlwZnMuY29tOyBIdHRwT25seTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAiVHJhbnNmZXItRW5jb2RpbmciLCAidmFsdWUiOiAiY2h1bmtlZCJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9yY2l2LmpzLmRvd25sb2FkIn0sIHsibmFtZSI6ICJYLUlwZnMtUm9vdHMiLCAidmFsdWUiOiAiYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWksUW1aeVAybllhSGFXWEwzOGRjZ3Zoa3FNSzZ5a3VIaXVTWlJ5NHdtNlNFQU1peSxRbVJqNjEyb1JwYVJqZ1BmR3pZQTE1TWZLQWZLc2NxRVluSjZ4NWZGWHVSNldCIn0sIHsibmFtZSI6ICJhbHQtc3ZjIiwgInZhbHVlIjogImgzPVwiOjQ0M1wiOyBtYT04NjQwMCwgaDMtMjk9XCI6NDQzXCI7IG1hPTg2NDAwIn0sIHsibmFtZSI6ICJ4LWNmLWlwZnMtY2FjaGUtc3RhdHVzIiwgInZhbHVlIjogIm1pc3MifV0sICJjb250ZW50IjogeyJzaXplIjogMTU4MDYsICJtaW1lVHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMTAxNzUsICJ0ZXh0IjogIi8vdjE3MiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAyMCAzM0Fjcm9zcyBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcblxuVHludD13aW5kb3cuVHludHx8W107XG5cInVuZGVmaW5lZFwiPT10eXBlb2YgVHludC5BVElMJiZcInVuZGVmaW5lZFwiPT10eXBlb2YgVHludC5SQ0lWTCYmZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7fWZ1bmN0aW9uIEIoYSxiLGMsbCl7dmFyIGQ9ZnVuY3Rpb24oYSxiLGMsbCxkKXthLnNpemU9Ynx8XCJcIjthLnNpemU/KGI9Yi5zcGxpdChcInhcIiksYS53aWR0aD1iWzBdLGEuaGVpZ2h0PWJbMV0pOihhLndpZHRoPVwiMFwiLGEuaGVpZ2h0PVwiMFwiKTthLnRhcmdldElkPWN8fFwiXCI7YS5wcm9kdWN0PWx8fFwiaW5wYWdlXCI7ZD9hLmRpc3Rybz1kOlwiaW52aWV3XCI9PWEucHJvZHVjdCYmKGEuZGlzdHJvPVwiUkNJVlwiKTthLmlmcmFtZUlkPW51bGw7YS5zaWNXaW5kb3c9bnVsbH07MjI9PWEubGVuZ3RoPyh0aGlzLnB1Ymxpc2hlcklkPWEsdGhpcy5vcHRpb25zPWN8fHt9LGQodGhpcyx0aGlzLm9wdGlvbnMuc2l6ZXx8XCIxeDFcIix0aGlzLm9wdGlvbnMudGFyZ2V0SWR8fFwiXCIsYikpOmQodGhpcyxhLGIsYyxsKX1mdW5jdGlvbiB3KGEsYixjKXt0aGlzLnR5cGU9XG5hO3RoaXMuZm49Yjt0aGlzLm9uY2U9ISFjfXZhciBlPXdpbmRvdyxrPWRvY3VtZW50LGY9e2Rpc3RybzpcIlJDSVZcIixpZDpcIlJDSVYtXCIrKG5ldyBEYXRlKS5nZXRUaW1lKCl9O1R5bnQuUkNJVkw9ITA7RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSk7dmFyIGQ9e19tYXhSZWY6NjAwLF9pZE1hY3JvOlwiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFcIixpbml0OmZ1bmN0aW9uKCl7dGhpcy5faWNVcmw9Zi5wcm90b2NvbCsoVHludC5lfHxcIlwiKStcImljLnR5bnQuY29tXCI7dGhpcy5fZGViVXJsPWYucHJvdG9jb2wrKFR5bnQuZXx8XCJcIikrXCJkZS50eW50LmNvbS9kZWIvdjJcIjt0aGlzLl9zaWNVcmw9Zi5wcm90b2NvbCsoVHludC5lfHxcIlwiKStcImNkbi1zaWMuMzNhY3Jvc3MuY29tLzEvamF2YXNjcmlwdHMvc2ljLmpzXCI7dGhpcy5fYXBVcmw9Zi5wcm90b2NvbCsoVHludC5lfHxcIlwiKStcImNkbi1hcC4zM2Fjcm9zcy5jb20vamF2YXNjcmlwdHMvYXAuanNcIn0sXG5uZXdFbGU6ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kfHx3aW5kb3c7YT1kLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYSk7YiYmdGhpcy5leHRlbmQoYSxiKTtjJiZ0aGlzLmV4dGVuZChhLnN0eWxlLGMpO3JldHVybiBhfSxpbmplY3RTY3JpcHQ6ZnVuY3Rpb24oYSxiLGMpe2I9Ynx8d2luZG93O2E9dGhpcy5uZXdFbGUoXCJzY3JpcHRcIix7YXN5bmM6XCJhc3luY1wiLHJlZmVycmVyUG9saWN5OlwidW5zYWZlLXVybFwiLHR5cGU6XCJ0ZXh0L2phdmFzY3JpcHRcIixzcmM6YX0sbnVsbCxiKTt0aGlzLmluc2VydEVsZShhLGN8fGIuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF0pfSxpbmplY3RTaWNTY3JpcHQ6ZnVuY3Rpb24oYSl7dGhpcy5pbmplY3RTY3JpcHQodGhpcy5fc2ljVXJsLHdpbmRvdyxhKX0saW5qZWN0QXBvbGxvU2NyaXB0OmZ1bmN0aW9uKCl7dGhpcy5pbmplY3RTY3JpcHQodGhpcy5fYXBVcmwpfSxpbmplY3RTaWNJZnJhbWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVxue3dpZHRoOmEud2lkdGgrXCJweFwiLGhlaWdodDphLmhlaWdodCtcInB4XCIsYm9yZGVyOlwiMCBub25lXCIsbWFyZ2luOlwiMFwifTtjJiZ0aGlzLmV4dGVuZChkLGMpO2M9dGhpcy5uZXdFbGUoXCJpZnJhbWVcIix7cmVmZXJyZXJQb2xpY3k6XCJ1bnNhZmUtdXJsXCIsc3JjOlwiYWJvdXQ6YmxhbmtcIixmcmFtZUJvcmRlcjpcIjBcIixmcmFtZVNwYWNpbmc6XCIwXCIsc2Nyb2xsaW5nOlwibm9cIn0sZCk7dGhpcy5pbnNlcnRFbGUoYyxiKTthLmlmcmFtZUlkPXRoaXMuZWxlSWQoYyk7YS5zaWNXaW5kb3c9Yy5jb250ZW50V2luZG93O2E9Yy5jb250ZW50V2luZG93LmRvY3VtZW50O2Eub3BlbigpO2Eud3JpdGUoJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj4qe21hcmdpbjowO3BhZGRpbmc6MDt9PC9zdHlsZT48L2hlYWQ+PGJvZHk+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+d2luZG93LlR5bnQgPSB3aW5kb3cucGFyZW50LlR5bnQ7XFx4M2Mvc2NyaXB0PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cIicrXG50aGlzLl9zaWNVcmwrJ1wiPlxceDNjL3NjcmlwdD48L2JvZHk+PC9odG1sPicpO2EuY2xvc2UoKX0saW5zZXJ0RWxlOmZ1bmN0aW9uKGEsYil7Yj9cInNjcmlwdFwiPT1iLnRhZ05hbWUudG9Mb3dlckNhc2UoKT9iLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYik6Yi5hcHBlbmRDaGlsZChhKTpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpfSxlbGVJZDpmdW5jdGlvbihhKXt2YXIgYj1hLmlkO2J8fChiPVwieDMzeFwiK0RhdGUubm93KCksYS5pZD1iKTtyZXR1cm4gYn0sX2ltZ3M6W10saW5qZWN0UGl4ZWw6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3RyeXtkPWsuY3JlYXRlRWxlbWVudChcImltZ1wiKX1jYXRjaChlKXtkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIil9ZCYmKHRoaXMuX2ltZ3MucHVzaChkKSxiJiYoZC5vbmxvYWQ9YiksYyYmKGQub25lcnJvcj1jKSxkLnJlZmVycmVyUG9saWN5PVwidW5zYWZlLXVybFwiLGQuc3JjPWEpfSxkb2NVcmw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldExpbmsoXCJjYW5vbmljYWxcIik7XG5hfHwoYT10aGlzLmdldE1ldGEoXCJwcm9wZXJ0eVwiLFwib2c6dXJsXCIsXCJuYW1lXCIsXCJvcmlnaW5hbC1zb3VyY2VcIikpO2lmKGEpe2lmKDAhPWEuaW5kZXhPZihcImh0dHBcIikpe3ZhciBiPWYucHJvdG9jb2wrZS5sb2NhdGlvbi5ob3N0K2UubG9jYXRpb24ucGF0aG5hbWUsYz1rLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYmFzZVwiKVswXTtjJiYoYz1jLmdldEF0dHJpYnV0ZShcImhyZWZcIikpJiYoYj1jKTtcIi9cIj09YS5jaGFyQXQoMCk/KGM9Yi5pbmRleE9mKFwiL1wiLDkpLC0xPGMmJihiPWIuc2xpY2UoMCxjKSkpOihjPWIubGFzdEluZGV4T2YoXCIvXCIpLGI9OTxjP2Iuc2xpY2UoMCxjKzEpOmIrXCIvXCIpO2E9YithfXJldHVybiBhfXJldHVyblwiXCJ9LGdldE1ldGE6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZz1udWxsLGY9bnVsbCxoPWsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJtZXRhXCIpO2ZvcihlPTA7ZTxoLmxlbmd0aDsrK2UpZ3x8aFtlXS5nZXRBdHRyaWJ1dGUoYSkhPT1iP2MmJiFmJiZoW2VdLmdldEF0dHJpYnV0ZShjKT09PVxuZCYmKGY9aFtlXS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpfHxudWxsKTpnPWhbZV0uZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKXx8bnVsbDtyZXR1cm4gZ3x8Zn0sZ2V0TGluazpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT1rLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwibGlua1wiKTtmb3IoYz0wO2M8ZS5sZW5ndGg7KytjKWlmKGQ9ZVtjXS5nZXRBdHRyaWJ1dGUoXCJyZWxcIiksZVtjXS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpJiZkJiYoIWImJjA8PWQuaW5kZXhPZihhKXx8YiYmZD09YSkpcmV0dXJuIGVbY10uaHJlZjtyZXR1cm4gbnVsbH0sZXh0ZW5kOmZ1bmN0aW9uKGEsYil7dmFyIGMsZDtmb3IoYz0xO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpZm9yKGQgaW4gYXJndW1lbnRzW2NdKWFyZ3VtZW50c1tjXS5oYXNPd25Qcm9wZXJ0eShkKSYmKGFbZF09YXJndW1lbnRzW2NdW2RdKTtyZXR1cm4gYX0saXNBcnJheTpmdW5jdGlvbihhKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgYSYmXCJbb2JqZWN0IEFycmF5XVwiPT09XG5PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9LGluQXJyYXk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMDw9dGhpcy5pbmRleE9mKGEsYil9LHRvQXJyYXk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxifHwwKX0saW5kZXhPZjpmdW5jdGlvbihhLGIpe2lmKGEuaW5kZXhPZilyZXR1cm4gYS5pbmRleE9mKGIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7KytjKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVybi0xfSx1bmlxdWU6ZnVuY3Rpb24oYSl7dmFyIGIsYz17fSxkPVtdO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpY1thW2JdXXx8KGNbYVtiXV09ITAsZC5wdXNoKGFbYl0pKTtyZXR1cm4gZH0saWZyYW1lVHlwZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaWZyYW1lRWxlKCksYj14O2lmKGEpYj1hLmlkJiYwPD1hLmlkLnNlYXJjaCgvZ29vZ2xlX2Fkcz9faT9mcmFtZS8pPzY6eTtlbHNlIHRyeXt3aW5kb3chPXdpbmRvdy50b3AmJihiPVxuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdy4kc2Y/ejp1KX1jYXRjaChjKXtiPXUsZC5jbG9nKFwiaWZyYW1lVHlwZTogXCIrYy5tZXNzYWdlKX1yZXR1cm4gYn0saWZyYW1lRWxlOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7YT1hfHx3aW5kb3c7dHJ5e2I9YS5mcmFtZUVsZW1lbnR9Y2F0Y2goYyl7fXJldHVybiBifSxpZnJhbWVUb3A6ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3csYj1udWxsO3RyeXtmb3IoO2EhPXdpbmRvdy50b3A7KWI9YSxhPWEucGFyZW50fWNhdGNoKGMpe3JldHVybiBudWxsfXJldHVybiBiP3RoaXMuaWZyYW1lRWxlKGIpOm51bGx9LGdldFRvcFdpbjpmdW5jdGlvbigpe3ZhciBhPXdpbmRvdzt0cnl7Zm9yKDthLnBhcmVudCE9PWEmJmEucGFyZW50LmRvY3VtZW50OylhPWEucGFyZW50fWNhdGNoKGIpe31yZXR1cm4gYX0saXNvbGF0ZWQ6ZnVuY3Rpb24oKXt2YXIgYT0hMDt0cnl7XCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LnRvcC5vcGVuJiYoYT0hMSl9Y2F0Y2goYil7fXJldHVybiBhfSxcbnR5bnRJZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlxdWUoVHludCkuam9pbihcIn5cIil9LGdldFB1YklkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPW51bGwsYj0wO2I8VHludC5sZW5ndGg7KytiKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBUeW50W2JdJiYyMj09VHludFtiXS5sZW5ndGgmJjA+VHludFtiXS5pbmRleE9mKFwiIVwiKSl7YT1UeW50W2JdO2JyZWFrfXJldHVybiBhfSxjb3VudElkczpmdW5jdGlvbihhKXt2YXIgYixjPTA7Zm9yKGI9MDtiPFR5bnQubGVuZ3RoOysrYilUeW50W2JdPT09YSYmKytjO3JldHVybiBjfSxfbG9nOmZ1bmN0aW9uKGEpe1widW5kZWZpbmVkXCI9PXR5cGVvZiBUeW50LmRlYnVnJiYwPGUubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoXCJfX3RjZGVidWdtb2RlPTFcIikmJmUuY29uc29sZSYmZS5jb25zb2xlLmxvZyYmKFR5bnQuZGVidWc9ITApO2lmKCEwPT09VHludC5kZWJ1Z3x8MT09PVR5bnQuZGVidWcpYS51bnNoaWZ0KFwiW1RDXVwiKSxlLmNvbnNvbGUubG9nLmFwcGx5KGUuY29uc29sZSxcbmEpfSxsb2c6ZnVuY3Rpb24oKXtmLmluWE9JZnJhbWUoKT90aGlzLmNsb2cuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuX2xvZyh0aGlzLnRvQXJyYXkoYXJndW1lbnRzKSl9LGNsb2c6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRvQXJyYXkoYXJndW1lbnRzKTthLnVuc2hpZnQoZi5pZCk7dGhpcy5fbG9nKGEpfSxjYWxsSWNVOmZ1bmN0aW9uKCl7ZS5fMzNBY3Jvc3Muc3RhdGUuaWNEb25lPUE7ZC5jbG9nKFwiQ2FsbGluZyBJQy9VXCIpO3RoaXMuaW5qZWN0UGl4ZWwodGhpcy5faWNVcmwrXCIvdVwiLGZ1bmN0aW9uKCl7ZS5fMzNBY3Jvc3Muc3RhdGUuaWNEb25lPXR9KX0sY2FsbEljOmZ1bmN0aW9uKCl7dmFyIGEsYixjLGwscixnLHAsaDtpZighZS5fMzNBY3Jvc3Muc3RhdGUuaWNEb25lKXtlLl8zM0Fjcm9zcy5zdGF0ZS5pY0RvbmU9QTtiPXRoaXMuZ2V0Q29va2llKGsuY29va2llLFwidHJhY2VydHJhZmZpY1wiKTthPWUubG9jYXRpb24uaGFzaDthPS90eW50PS8udGVzdChhKT9hLm1hdGNoKC90eW50PT8oW14/JiQjXSopLylbMV06XG4hMTtsPWM9dGhpcy5faWNVcmwrXCIvYi9wP2lkPVwiK3RoaXMudHludElkcygpKyhiP1wiJmV0PVwiK2I6XCJcIikrKGE/XCImYT1cIithOlwiXCIpKyhcInN0cmluZ1wiPT10eXBlb2YgVHludC5iP1wiJmI9XCIrVHludC5iOlwiXCIpK1wiJmxtPVwiK2YudHlwZStcIiZ0cz1cIitEYXRlLm5vdygpK1wiJmRuPVwiK2YuZGlzdHJvK1wiJmlzbz1cIisodGhpcy5pc29sYXRlZCgpP1wiMVwiOlwiMFwiKSsobnVsbD09bS51c3BTdHJpbmc/XCJcIjpcIiZ1c19wcml2YWN5PVwiK20udXNwU3RyaW5nKTsoYT10aGlzLmdldE1ldGEoXCJwcm9wZXJ0eVwiLFwib2c6aW1hZ2U6dXJsXCIsXCJwcm9wZXJ0eVwiLFwib2c6aW1hZ2VcIikpJiYobCs9XCImaW1nPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnRydW5jKGEsMjUwKSkpO3I9bDsoYT10aGlzLmdldE1ldGEoXCJwcm9wZXJ0eVwiLFwib2c6dGl0bGVcIikpJiZhIT1rLnRpdGxlJiYocis9XCImY3Q9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudHJ1bmMoYSwyMDApKSk7Zz1yO2sucmVmZXJyZXImJihhPXRoaXMudHJ1bmMoay5yZWZlcnJlcixcbnRoaXMuX21heFJlZiksZys9XCImcj1cIitlbmNvZGVVUklDb21wb25lbnQoYSkpO3A9ZztpZihhPWsudGl0bGV8fGUubG9jYXRpb24uaG9zdG5hbWUpYT10aGlzLnRyaW0odGhpcy50cnVuYyhhLDIwMCkpLHArPVwiJnQ9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGEpO2g9cDtpZihhPXRoaXMuZG9jVXJsKCkpYT10aGlzLnRydW5jKGEsNDAwKSxoKz1cIiZjdT1cIitlbmNvZGVVUklDb21wb25lbnQoYSk7Yj1oO2lmKGE9dGhpcy5nZXRMaW5rKFwiYW1waHRtbFwiLCEwKSlhPXRoaXMudHJ1bmMoYSwyNTApLGIrPVwiJmFoPVwiK2VuY29kZVVSSUNvbXBvbmVudChhKTtkLmNhbGxJYy5yc3A9ZnVuY3Rpb24oKXtlLl8zM0Fjcm9zcy5zdGF0ZS5pY0RvbmU9dH07ZC5jbG9nKFwiQ2FsbGluZyBJQ1wiKTt0aGlzLmluamVjdFBpeGVsKGIsZC5jYWxsSWMucnNwLGZ1bmN0aW9uKCl7ZC5pbmplY3RQaXhlbChoLGQuY2FsbEljLnJzcCxmdW5jdGlvbigpe2QuaW5qZWN0UGl4ZWwocCxkLmNhbGxJYy5yc3AsZnVuY3Rpb24oKXtkLmluamVjdFBpeGVsKGcsXG5kLmNhbGxJYy5yc3AsZnVuY3Rpb24oKXtkLmluamVjdFBpeGVsKHIsZC5jYWxsSWMucnNwLGZ1bmN0aW9uKCl7ZC5pbmplY3RQaXhlbChsLGQuY2FsbEljLnJzcCxmdW5jdGlvbigpe2QuaW5qZWN0UGl4ZWwoYyxkLmNhbGxJYy5yc3ApfSl9KX0pfSl9KX0pfX0sY2FsbERlYjpmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gbChhLGIpe2QuY2xvZyhcIkNhbGxpbmcgREVCIFwiK2IrKGE/XCJcIjpcIiBvbiBJQyB0aW1lb3V0XCIpKTt2YXIgYz1lbmNvZGVVUklDb21wb25lbnQoZC50cnVuYyhrLnJlZmVycmVyLGQuX21heFJlZikpLGw9bS51c3BTdHJpbmcmJjQ9PW0udXNwU3RyaW5nLmxlbmd0aD9cIiZ1c19wcml2YWN5PVwiK20udXNwU3RyaW5nOlwiXCI7ZC5pbmplY3RTY3JpcHQoZC5fZGViVXJsK1wiP2lkPVwiK2QudHludElkcygpK1wiJmRuPVwiK2YuZGlzdHJvK1wiJmNjPVwiK2IrXCImcj1cIitjK2wsZSl9XCJ1bmRlZmluZWRcIj09dHlwZW9mIGEmJihhPTEpO2UuXzMzQWNyb3NzLnN0YXRlLmRlRG9uZT49YXx8KCsrZS5fMzNBY3Jvc3Muc3RhdGUuZGVEb25lLFxuMSE9PWUuXzMzQWNyb3NzLnN0YXRlLmRlRG9uZSYmITAhPT1jfHx0aGlzLndoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZS5fMzNBY3Jvc3Muc3RhdGUuaWNEb25lPT10fSxsLHt0aW1lb3V0OjMwMCx0aW1lb3V0Q2FsbGJhY2s6bCxjYWxsYmFja0RhdGE6ZS5fMzNBY3Jvc3Muc3RhdGUuZGVEb25lfSx0aGlzKSxiJiYwPGIubGVuZ3RoJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5jYWxsRGViKGEsYiwhMCl9LGIuc2hpZnQoKSkpfSxjYWxsRGViWDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxjKXtkW2I/XCJsb2dcIjpcImNsb2dcIl0oXCJDYWxsaW5nIERFQnggXCIrYysoYT9cIlwiOlwiIG9uIElDIHRpbWVvdXRcIikpO3ZhciBnPWVuY29kZVVSSUNvbXBvbmVudChkLnRydW5jKGsucmVmZXJyZXIsZC5fbWF4UmVmKSkscD1tLnVzcFN0cmluZyYmND09bS51c3BTdHJpbmcubGVuZ3RoP1wiJnVzX3ByaXZhY3k9XCIrbS51c3BTdHJpbmc6XCJcIjtkLmluamVjdFNjcmlwdChkLl9kZWJVcmwrXCI/bT14Y2gmaWQ9XCIrXG5kLnR5bnRJZHMoKStcIiZkbj1cIitmLmRpc3RybytcIiZjYz1cIitjK1wiJnI9XCIrZytwLGUpfWF8fChhPTEwKTtlLl8zM0Fjcm9zcy5zdGF0ZS5keERvbmU+PWF8fCgrK2UuXzMzQWNyb3NzLnN0YXRlLmR4RG9uZSx0aGlzLndoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZS5fMzNBY3Jvc3Muc3RhdGUuaWNEb25lPT10fSxjLHt0aW1lb3V0OjMwMCx0aW1lb3V0Q2FsbGJhY2s6YyxjYWxsYmFja0RhdGE6ZS5fMzNBY3Jvc3Muc3RhdGUuZHhEb25lfSx0aGlzKSl9LGpzb25EZWNvZGU6ZnVuY3Rpb24oYSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgQXJyYXkucHJvdG90eXBlLnRvSlNPTilyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSk7dmFyIGI9QXJyYXkucHJvdG90eXBlLnRvSlNPTjtkZWxldGUgQXJyYXkucHJvdG90eXBlLnRvSlNPTjthPUpTT04uc3RyaW5naWZ5KGEpO0FycmF5LnByb3RvdHlwZS50b0pTT049YjtyZXR1cm4gYX0sZ2V0Q29va2llOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWIrXCI9XCIsXG5kPWEuc3BsaXQoXCI7XCIpLGU9MDtlPGQubGVuZ3RoO2UrKyl7Zm9yKHZhciBnPWRbZV07XCIgXCI9PWcuY2hhckF0KDApOylnPWcuc3Vic3RyaW5nKDEsZy5sZW5ndGgpO2lmKDA9PWcuaW5kZXhPZihjKSlyZXR1cm4gZy5zdWJzdHJpbmcoYy5sZW5ndGgsZy5sZW5ndGgpfXJldHVybiBudWxsfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL15cXHMrfFxccyskL2csXCJcIil9LHRydW5jOmZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZighYXx8YS5sZW5ndGg8PWIpcmV0dXJuIGE7Yz1hLnN1YnN0cmluZygwLGIpO2ZvcihkPTE7Mz49ZDsrK2QpaWYoXCIlXCI9PWMuY2hhckF0KGMubGVuZ3RoLWQpKXJldHVybiBjLnN1YnN0cmluZygwLGMubGVuZ3RoLWQpO3JldHVybiBjfSx3aGVuOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBmLGcsayxoPW51bGwsdj1udWxsLHE9YSgpO2M9Y3x8e307Zj1jLmludGVydmFsfHw1MDtnPWMudGltZW91dDtrPWMudGltZW91dENhbGxiYWNrfHxmdW5jdGlvbigpe307XG5pZihxKXJldHVybiBiLmNhbGwoZCxxLGMuY2FsbGJhY2tEYXRhKSwhMDtoPWUuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtpZihxPWEoKSllLmNsZWFySW50ZXJ2YWwoaCksZS5jbGVhclRpbWVvdXQodiksYi5jYWxsKGQscSxjLmNhbGxiYWNrRGF0YSl9LGYpO2cmJih2PWUuc2V0VGltZW91dChmdW5jdGlvbigpe2UuY2xlYXJJbnRlcnZhbChoKTtrLmNhbGwoZCxxLGMuY2FsbGJhY2tEYXRhKX0sZykpO3JldHVybiExfSxwcm9iOmZ1bmN0aW9uKGEpe2E9cGFyc2VGbG9hdChhKXx8MDtyZXR1cm4gTWF0aC5yYW5kb20oKTxhfSxvbjpmdW5jdGlvbihhLGIsYyxkKXthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKGIsYyxkfHwhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudChcIm9uXCIrYixjKX0sb2ZmOmZ1bmN0aW9uKGEsYixjLGQpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcj9hLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLGR8fCExKTphLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KFwib25cIitcbmIsYyl9fSxtPXt1c3BTdHJpbmc6bnVsbCxpbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXdpbmRvdyxiOyFiOyl7dHJ5e2EuZnJhbWVzLl9fdXNwYXBpTG9jYXRvciYmKGI9YSl9Y2F0Y2goYyl7fWlmKGE9PT13aW5kb3cudG9wKWJyZWFrO2E9YS5wYXJlbnR9dmFyIGY9e307ZS5fX3VzcGFwaT1mdW5jdGlvbihhLGMsZCl7aWYoYil7dmFyIGU9XCJ1c3AtXCIrTWF0aC5yYW5kb20oKTthPXtfX3VzcGFwaUNhbGw6e2NvbW1hbmQ6YSxjYWxsSWQ6ZSx2ZXJzaW9uOmN9fTtmW2VdPWQ7Yi5wb3N0TWVzc2FnZShhLFwiKlwiKX1lbHNlIGQoe21zZzpcIl9fdXNwYXBpIG5vdCBmb3VuZFwifSwhMSl9O2Qub24od2luZG93LFwibWVzc2FnZVwiLGZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YTtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEuZGF0YSl0cnl7Yj1KU09OLnBhcnNlKGEuZGF0YSl9Y2F0Y2goYyl7fWIuX191c3BhcGlSZXR1cm4mJihhPWIuX191c3BhcGlSZXR1cm4sXG5mW2EuY2FsbElkXShhLnJldHVyblZhbHVlLGEuc3VjY2VzcyksZGVsZXRlIGZbYS5jYWxsSWRdKX0sITEpfSxjPWZ1bmN0aW9uKCl7ZS5fX3VzcGFwaShcImdldFVTUERhdGFcIiwxLGZ1bmN0aW9uKGIsYyl7YyYmKGEudXNwU3RyaW5nPWIudXNwU3RyaW5nKX0pfTtlLl9fdXNwYXBpfHxiKCk7dHJ5e2MoKX1jYXRjaChmKXtiKCksYygpfVR5bnQuZ2V0VXNwU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGEudXNwU3RyaW5nfTtUeW50LmdldENvbnNlbnRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19fSxBPTEsdD0yLHg9MCx1PTMsej00LHk9NTtmLnR5cGU9MDtmLmluSWZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZT54fTtmLmluU09JZnJhbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlPj15JiY2Pj10aGlzLnR5cGV9O2YuaW5YT0lmcmFtZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGU+PXUmJnRoaXMudHlwZTw9en07Zi5pbml0PWZ1bmN0aW9uKCl7dGhpcy50eXBlPVxuZC5pZnJhbWVUeXBlKCk7dGhpcy5pblNPSWZyYW1lKCkmJihlPWQuZ2V0VG9wV2luKCksaz1lLmRvY3VtZW50KTtlLl8zM0Fjcm9zc3x8KGUuXzMzQWNyb3NzPXt9KTtlLl8zM0Fjcm9zcy5zdGF0ZXx8KGUuXzMzQWNyb3NzLnN0YXRlPXtpY0RvbmU6MCxkZURvbmU6MCxkeERvbmU6MCxpdkRvbmU6ITF9KTt0aGlzLnByb3RvY29sPVwiaHR0cHM6Ly9cIjtkLmluaXQoKTttLmluaXQoKTt0aGlzLmlzb2xhdGVkPWQuaXNvbGF0ZWQoKTtkLmNsb2coXCJ4b2k9XCIrdGhpcy5pblhPSWZyYW1lKCkrXCIsIHNvaT1cIit0aGlzLmluU09JZnJhbWUoKStcIiwgaXNvPVwiK3RoaXMuaXNvbGF0ZWQpO2UuXzMzQWNyb3NzLnB2VHN8fChlLl8zM0Fjcm9zcy5wdlRzPURhdGUubm93KCkpfTtUeW50LnNldHRpbmdzfHwoVHludC5zZXR0aW5ncz17X2Vycm9yOjAsX3BlbmRpbmc6ITEsX3B1YklkOm51bGwsX3NjVXJsOlwiaHR0cHM6Ly9cIisoVHludC5lfHxcIlwiKStcInNjLnR5bnQuY29tL3NjcmlwdC9zYy9cIixfc2V0dGluZ3M6e30sXG5fY29weTpudWxsLGlzUmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX2Vycm9yJiZudWxsIT10aGlzLl9jb3B5fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0dGluZ3N9LHB1YklkOmZ1bmN0aW9uKCl7bnVsbD09dGhpcy5fcHViSWQmJih0aGlzLl9wdWJJZD1kLmdldFB1YklkKCkpO3JldHVybiB0aGlzLl9wdWJJZH0sZG93bmxvYWQ6ZnVuY3Rpb24oKXt2YXIgYSxiO24uYWRhcHQoVHludC5jbWQpO3RoaXMuX3BlbmRpbmd8fHRoaXMuaXNSZWFkeSgpfHwoYT10aGlzLFR5bnQuZ2V0Q29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIGEuaXNSZWFkeSgpP2EuX2NvcHk6bnVsbH0sVHludC5zYz1mdW5jdGlvbihjKXtjbGVhclRpbWVvdXQoYik7YS5fZXJyb3I9Yy5mbHx8MDswPT09YS5fZXJyb3I/KGEuX2luaXQoYyksZC5sb2coXCJTZXR0aW5ncyBkb3dubG9hZGVkXCIsYS5fY29weSksVHludC5jbWRGbHVzaCgpKTpkLmxvZyhcIkVSUk9SOiBTZXR0aW5ncyBkb3dubG9hZCBmYWlsZWQ6IFwiLFxuYS5fZXJyb3IpO2EuX3BlbmRpbmc9ITF9LHRoaXMucHViSWQoKSYmKGQubG9nKFwiRG93bmxvYWRpbmcgc2V0dGluZ3NcIiksdGhpcy5fcGVuZGluZz0hMCxkLmluamVjdFNjcmlwdCh0aGlzLl9zY1VybCt0aGlzLnB1YklkKCkrXCIuanNcIiksYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VHludC5zYyh7Zmw6MX0pfSwxRTQpKSl9LF9pbml0OmZ1bmN0aW9uKGEpe2E9YXx8e307ITEhPT1hLmQ/KFR5bnQubyYmZC5leHRlbmQoYSxUeW50Lm8pLHRoaXMuX292cihhKSk6YT1UeW50Lml8fGUudHludFZhcmlhYmxlc3x8e307dGhpcy5fZGVmKCk7ZC5leHRlbmQodGhpcy5fc2V0dGluZ3MsYSk7dGhpcy5fdmFsKCk7dGhpcy5fY29weT1cInVuZGVmaW5lZFwiIT09dHlwZW9mIEpTT04mJlwiZnVuY3Rpb25cIj09dHlwZW9mIEpTT04ucGFyc2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIEpTT04uc3RyaW5naWZ5P0pTT04ucGFyc2UoZC5qc29uRGVjb2RlKHRoaXMuX3NldHRpbmdzKSk6dGhpcy5fc2V0dGluZ3N9LFxuX292cjpmdW5jdGlvbihhKXtpZihkLmlzQXJyYXkoVHludC5vdmVycmlkZXMpKWZvcih2YXIgYj0wO2I8VHludC5vdmVycmlkZXMubGVuZ3RoO2IrKylcIm9iamVjdFwiPT10eXBlb2YgVHludC5vdmVycmlkZXNbYl0mJmQuZXh0ZW5kKGEsVHludC5vdmVycmlkZXNbYl0pfSxfZGVmOmZ1bmN0aW9uKCl7dGhpcy5fc2V0dGluZ3MuZD0hMDt0aGlzLl9zZXR0aW5ncy5hPSEwO3RoaXMuX3NldHRpbmdzLmFkPSEwO3RoaXMuX3NldHRpbmdzLmF3PTg7dGhpcy5fc2V0dGluZ3MuY2M9MDt0aGlzLl9zZXR0aW5ncy5iPSExO3RoaXMuX3NldHRpbmdzLmFwPVwiUmVhZCBtb3JlOlwiO3RoaXMuX3NldHRpbmdzLmFzPVwiXCI7dGhpcy5fc2V0dGluZ3Muc3Q9ITE7dGhpcy5fc2V0dGluZ3Muc3U9ITA7dGhpcy5fc2V0dGluZ3Mudz0hMTt0aGlzLl9zZXR0aW5ncy5mPSExO3RoaXMuX3NldHRpbmdzLnNzPVwiXCJ9LF92YWw6ZnVuY3Rpb24oKXt0aGlzLl9zZXR0aW5ncy5hfHwodGhpcy5fc2V0dGluZ3MuYT0hMSk7XG42PHRoaXMuX3NldHRpbmdzLmNjJiYodGhpcy5fc2V0dGluZ3MuY2M9MCk7OD50aGlzLl9zZXR0aW5ncy5hdyYmKHRoaXMuX3NldHRpbmdzLmF3PTgpO3RoaXMuX3NldHRpbmdzLnN1fHwodGhpcy5fc2V0dGluZ3Muc3U9ITEpO3RoaXMuX3NldHRpbmdzLncmJiF0aGlzLl90d1VzZXIodGhpcy5fc2V0dGluZ3MudykmJih0aGlzLl9zZXR0aW5ncy53PSExKTt0aGlzLl9zZXR0aW5ncy5mJiYhdGhpcy5fZmJVc2VyKHRoaXMuX3NldHRpbmdzLmYpJiYodGhpcy5fc2V0dGluZ3MuZj0hMSk7MDx0aGlzLl9lcnJvciYmKHRoaXMuX3NldHRpbmdzLmE9ITEsdGhpcy5fc2V0dGluZ3MuYj0hMSl9LF90d1VzZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL15cXHd7MSwxNX0kLy50ZXN0KGF8fFwiXCIpfSxfZmJVc2VyOmZ1bmN0aW9uKGEpe3JldHVybi9eW1xcdy5dezIsfSQvLnRlc3QoYXx8XCJcIil9fSk7XCJ1bmRlZmluZWRcIj09dHlwZW9mIFR5bnQuY21kJiYoVHludC5jbWQ9W10pO24ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oKXtuLmFkYXB0KGFyZ3VtZW50cyk7XG5uLmV4ZWMoYXJndW1lbnRzKX07bi5leGVjPWZ1bmN0aW9uKGEpe2QubG9nKFwiRXhlY3V0aW5nIGNvbW1hbmRzXCIsYSk7dHJ5e2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGFbYl0pYVtiXSgpO2Vsc2VcIm9iamVjdFwiPT10eXBlb2YgYVtiXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgYVtiXS5mbiYmYVtiXS5mbigpfWNhdGNoKGMpe2QubG9nKFwiRVJST1I6IFR5bnQuY21kIGZhaWxlZDogXCIsYyl9fTtuLmFkYXB0PWZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoZC5pc0FycmF5KGEpKWZvcihiPTA7YjxhLmxlbmd0aDsrK2IpXCJvYmplY3RcIj09dHlwZW9mIGFbYl0mJihjPWFbYl0ucHVibGlzaGVySWQsXCJzdHJpbmdcIiE9dHlwZW9mIGN8fDIyIT1jLmxlbmd0aHx8ZC5pbkFycmF5KFR5bnQsYyl8fChUeW50LnB1c2goYyksZC5sb2coXCJBZGFwdGVkXCIsYykpKX07XCJ1bmRlZmluZWRcIj09dHlwZW9mIFR5bnQuY21kRmx1c2gmJihUeW50LmNtZEZsdXNoPWZ1bmN0aW9uKCl7dmFyIGE9XG5UeW50LmNtZDtpZighYXx8ZC5pc0FycmF5KGEpKVR5bnQuY21kPW5ldyBuLGEmJjA8YS5sZW5ndGgmJm4uZXhlYyhhKX0pO1R5bnQuYWRzfHwoVHludC5hZHM9e19zbG90czpbXSxkaXNwbGF5OmZ1bmN0aW9uKGEsYixjLGUpe1wic3RyaW5nXCI9PXR5cGVvZiBhP3RoaXMuYWRkU2xvdChuZXcgQihhLGIsYyxlKSk6ZC5sb2coXCJFUlJPUjogSW52YWxpZCBwcm9kdWN0XCIpfSxnZXRTbG90OmZ1bmN0aW9uKGEpe3JldHVybihhPXRoaXMuZ2V0U2xvdHMoYSkpJiYwPGEubGVuZ3RoP2FbMF06bnVsbH0sZ2V0U2xvdHM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPHRoaXMuX3Nsb3RzLmxlbmd0aDsrK2MpdGhpcy5fc2xvdHNbY10uc2ljV2luZG93PT09YSYmYi5wdXNoKHRoaXMuX3Nsb3RzW2NdKTtyZXR1cm4gMDxiLmxlbmd0aD9iOm51bGx9LGFkZFNsb3Q6ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbCxjPVR5bnQuc2V0dGluZ3MuZ2V0KCksZT1cIkluamVjdGluZyBzaWMvXCIrYS5wcm9kdWN0O1xuaWYoYyYmYy5zaWMpaWYoYS5zaWNXaW5kb3c9d2luZG93LFwiaW52aWV3XCI9PWEucHJvZHVjdCYmdGhpcy5pdlJlYWR5KGMsYSkpdGhpcy5pdkRvbmUoITApLHRoaXMuX3Nsb3RzLnB1c2goYSksZC5sb2coZSxhKSxkLmluamVjdFNpY1NjcmlwdCgpLGQuY2FsbERlYlgobnVsbCwhMCk7ZWxzZXtpZihcImlucGFnZVwiPT1hLnByb2R1Y3QmJnRoaXMuaXBSZWFkeShjKXx8XCJpbmZlZWRcIj09YS5wcm9kdWN0JiZ0aGlzLmlmUmVhZHkoYykpYS50YXJnZXRJZCYmKGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYS50YXJnZXRJZCkpLGYuaW5JZnJhbWUoKT8odGhpcy5fc2V0SWZyYW1lSWQoYSksdGhpcy5fc2xvdHMucHVzaChhKSxkLmxvZyhlLGEpLGQuaW5qZWN0U2ljU2NyaXB0KGIpKToodGhpcy5fc2xvdHMucHVzaChhKSxkLmxvZyhlK1wiIGludG8gaWZyYW1lXCIsYSksZC5pbmplY3RTaWNJZnJhbWUoYSxiLFwiaW5mZWVkXCI9PWEucHJvZHVjdD97cG9zaXRpb246XCJhYnNvbHV0ZVwifTpudWxsKSl9ZWxzZSBkLmxvZyhcIkVSUk9SOiBzZXR0aW5ncyBvciAuc2ljIHVuZGVmaW5lZFwiLFxuYyl9LF9zZXRJZnJhbWVJZDpmdW5jdGlvbihhKXt2YXIgYj1kLmlmcmFtZVRvcCgpO2ImJihhLmlmcmFtZUlkPWQuZWxlSWQoYikpfSxpdkRvbmU6ZnVuY3Rpb24oYSl7ITA9PT1hJiYoZS5fMzNBY3Jvc3Muc3RhdGUuaXZEb25lPSEwKTtyZXR1cm4gZS5fMzNBY3Jvc3Muc3RhdGUuaXZEb25lfSxpdlJlYWR5OmZ1bmN0aW9uKGEsYil7dmFyIGM9ITEsZTshdGhpcy5pdkRvbmUoKSYmZC5pc0FycmF5KGEucCkmJmQuaW5BcnJheShhLnAsXCJzaWNfdjFcIikmJmEuc2ljLnByb2R1Y3RzJiZhLnNpYy5wcm9kdWN0cy5pbnZpZXcmJihlPWEuc2ljLnByb2R1Y3RzLmludmlldy5pbnN0YWxsX21ldGhvZHx8YS5zaWMuaW5zdGFsbF9tZXRob2QsXCJUSVwiPT1iLmRpc3Rybz9cIk9uIFBhZ2VcIj09ZSYmKGM9ITApOlwiT24gUGFnZVwiIT1lJiYoYz0hMCkpO3JldHVybiBjfSxpcFJlYWR5OmZ1bmN0aW9uKGEpe3JldHVybiBhLnNpYy5wcm9kdWN0cyYmYS5zaWMucHJvZHVjdHMuc2lhYn0saWZSZWFkeTpmdW5jdGlvbihhKXtyZXR1cm4gYS5zaWMucHJvZHVjdHMmJlxuYS5zaWMucHJvZHVjdHMuaW5mZWVkfSxfZXZlbnRzOltdLG9uOmZ1bmN0aW9uKGEsYil7dGhpcy5fZXZlbnRzLnB1c2gobmV3IHcoYSxiLCExKSl9LG9uY2U6ZnVuY3Rpb24oYSxiKXt0aGlzLl9ldmVudHMucHVzaChuZXcgdyhhLGIsITApKX0sb2ZmOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yzx0aGlzLl9ldmVudHMubGVuZ3RoOysrYyl0aGlzLl9ldmVudHNbY10mJnRoaXMuX2V2ZW50c1tjXS50eXBlPT09YSYmdGhpcy5fZXZlbnRzW2NdLmZuPT09YiYmKHRoaXMuX2V2ZW50c1tjXT1udWxsKX0sZW1pdDpmdW5jdGlvbihhKXt2YXIgYixjO2ZvcihiPTA7Yjx0aGlzLl9ldmVudHMubGVuZ3RoOysrYil0aGlzLl9ldmVudHNbYl0mJnRoaXMuX2V2ZW50c1tiXS50eXBlPT09YSYmKGM9dGhpcy5fZXZlbnRzW2JdLGMub25jZSYmKHRoaXMuX2V2ZW50c1tiXT1udWxsKSxjLmZuLmFwcGx5KGMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSl9LF90YXJnZXRpbmc6e30sXG5zZXRUYXJnZXRpbmc6ZnVuY3Rpb24oYSxiKXt0aGlzLl90YXJnZXRpbmdbYV09Yn0sZ2V0VGFyZ2V0aW5nOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl90YXJnZXRpbmdbYV19LGdldFRhcmdldGluZ0tleXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fdGFyZ2V0aW5nKX19KTtmLmluaXQoKTtkLmNhbGxJYygpO1R5bnQuc2V0dGluZ3MuZG93bmxvYWQoKTtkLmNhbGxEZWIoKX0oKTtcbiJ9LCAiaGVhZGVyc1NpemUiOiAxNjI0LCAiYm9keVNpemUiOiA1NjMxLCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA3MjU1fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogOTA4LjE2NSwgInJlY2VpdmUiOiAxLjczM30sICJwYWdlcmVmIjogInBhZ2VAZDk2OTk5NWUwZTZkZGY0MjgxMTZjM2E5ZGI0OWU5NzUiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjQ3MDA6OjY4MTE6NjAwZF0iLCAiX3NlcnZlclBvcnQiOiA4MCwgIl9zZWN1cml0eURldGFpbHMiOiB7fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjMtMDUtMjRUMTU6NDE6MTguMTgzWiIsICJ0aW1lIjogMjE3MS40NDksICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS9KdW5vJTIwLSUyME15JTIwSnVubyUyMFBlcnNvbmFsaXplZCUyMFN0YXJ0JTIwUGFnZSUyMC0lMjBTaWduJTIwaW5fZmlsZXMvb3NkX2xpc3RlbmVyLmpzLmRvd25sb2FkIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbXSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDExMywgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICJPSyIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtVHlwZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJSYW5nZSJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJ2YWx1ZSI6ICJVc2VyLUFnZW50In0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzIiwgInZhbHVlIjogIlgtUmVxdWVzdGVkLVdpdGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnMiLCAidmFsdWUiOiAiQ29udGVudC1MZW5ndGgifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIkNvbnRlbnQtUmFuZ2UifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtQ2h1bmtlZC1PdXRwdXQifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtSXBmcy1QYXRoIn0sIHsibmFtZSI6ICJBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycyIsICJ2YWx1ZSI6ICJYLUlwZnMtUm9vdHMifSwgeyJuYW1lIjogIkFjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzIiwgInZhbHVlIjogIlgtU3RyZWFtLU91dHB1dCJ9LCB7Im5hbWUiOiAiQ0YtQ2FjaGUtU3RhdHVzIiwgInZhbHVlIjogIk1JU1MifSwgeyJuYW1lIjogIkNGLVJheSIsICJ2YWx1ZSI6ICI3Y2M2YTQ2M2RlOWU5MjVjLUZSQSJ9LCB7Im5hbWUiOiAiQ2FjaGUtQ29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MjkwMzA0MDAsIGltbXV0YWJsZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjIwIEdNVCJ9LCB7Im5hbWUiOiAiRVRhZyIsICJ2YWx1ZSI6ICJXL1wiUW1aUFlYOVdxY3FyMXNKVWNCcjZrNXIzTllRdzhKRnl0RUd5S2VpdlBnRGdMQlwiIn0sIHsibmFtZSI6ICJTZXJ2ZXIiLCAidmFsdWUiOiAiY2xvdWRmbGFyZSJ9LCB7Im5hbWUiOiAiVmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIlgtSXBmcy1QYXRoIiwgInZhbHVlIjogIi9pcGZzL2JhZnliZWlhNmZodnkycXhnZHB4YndpbWJqYmt3aDZiem5qM2JvbnV5ajJ2ZGtyYmsyYzU1bzRwYXlpL0p1bm8gLSBNeSBKdW5vIFBlcnNvbmFsaXplZCBTdGFydCBQYWdlIC0gU2lnbiBpbl9maWxlcy9vc2RfbGlzdGVuZXIuanMuZG93bmxvYWQifSwgeyJuYW1lIjogIlgtSXBmcy1Sb290cyIsICJ2YWx1ZSI6ICJiYWZ5YmVpYTZmaHZ5MnF4Z2RweGJ3aW1iamJrd2g2YnpuajNib251eWoydmRrcmJrMmM1NW80cGF5aSxRbVp5UDJuWWFIYVdYTDM4ZGNndmhrcU1LNnlrdUhpdVNaUnk0d202U0VBTWl5LFFtWlBZWDlXcWNxcjFzSlVjQnI2azVyM05ZUXc4SkZ5dEVHeUtlaXZQZ0RnTEIifSwgeyJuYW1lIjogImFsdC1zdmMiLCAidmFsdWUiOiAiaDM9XCI6NDQzXCI7IG1hPTg2NDAwLCBoMy0yOT1cIjo0NDNcIjsgbWE9ODY0MDAifSwgeyJuYW1lIjogIngtY2YtaXBmcy1jYWNoZS1zdGF0dXMiLCAidmFsdWUiOiAibWlzcyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA3NTkwNCwgIm1pbWVUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCAiY29tcHJlc3Npb24iOiA3NzE2MSwgInRleHQiOiAiKGZ1bmN0aW9uKHdpbmRvdyxkb2N1bWVudCl7LypcblxuIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuXG4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiovXG52YXIgbDtmdW5jdGlvbiBhYShhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX12YXIgYmE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTtmdW5jdGlvbiBjYShhKXthPVtcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyxcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZixcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcihcIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3RcIik7fXZhciBkYT1jYSh0aGlzKTtmdW5jdGlvbiBlYShhLGIpe2lmKGIpYTp7dmFyIGM9ZGE7YT1hLnNwbGl0KFwiLlwiKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZT1hW2RdO2lmKCEoZSBpbiBjKSlicmVhayBhO2M9Y1tlXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZudWxsIT1iJiZiYShjLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSl9fWZ1bmN0aW9uIGZhKGEpe3ZhciBiPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTp7bmV4dDphYShhKX19ZnVuY3Rpb24gaGEoYSl7aWYoIShhIGluc3RhbmNlb2YgQXJyYXkpKXthPWZhKGEpO2Zvcih2YXIgYixjPVtdOyEoYj1hLm5leHQoKSkuZG9uZTspYy5wdXNoKGIudmFsdWUpO2E9Y31yZXR1cm4gYX12YXIgaWE9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9PYmplY3QuY3JlYXRlOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt9Yi5wcm90b3R5cGU9YTtyZXR1cm4gbmV3IGJ9LGphO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZilqYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIga2E7YTp7dmFyIGxhPXt3YjohMH0sbWE9e307dHJ5e21hLl9fcHJvdG9fXz1sYTtrYT1tYS53YjticmVhayBhfWNhdGNoKGEpe31rYT0hMX1qYT1rYT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYStcIiBpcyBub3QgZXh0ZW5zaWJsZVwiKTtyZXR1cm4gYX06bnVsbH12YXIgbmE9amE7ZnVuY3Rpb24gcihhLGIpe2EucHJvdG90eXBlPWlhKGIucHJvdG90eXBlKTthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2lmKG5hKW5hKGEsYik7ZWxzZSBmb3IodmFyIGMgaW4gYilpZihcInByb3RvdHlwZVwiIT1jKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXX12YXIgb2E9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKGQpZm9yKHZhciBlIGluIGQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsZSkmJihhW2VdPWRbZV0pfXJldHVybiBhfTtlYShcIk9iamVjdC5hc3NpZ25cIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8b2F9KTtlYShcIk1hdGgudHJ1bmNcIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxJbmZpbml0eT09PWJ8fC1JbmZpbml0eT09PWJ8fDA9PT1iKXJldHVybiBiO3ZhciBjPU1hdGguZmxvb3IoTWF0aC5hYnMoYikpO3JldHVybiAwPmI/LWM6Y319KTt2YXIgdD10aGlzfHxzZWxmO2Z1bmN0aW9uIHBhKGEsYil7YT1hLnNwbGl0KFwiLlwiKTt2YXIgYz10O2FbMF1pbiBjfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgYy5leGVjU2NyaXB0fHxjLmV4ZWNTY3JpcHQoXCJ2YXIgXCIrYVswXSk7Zm9yKHZhciBkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8dm9pZCAwPT09Yj9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn1mdW5jdGlvbiBxYSgpe31mdW5jdGlvbiB1KGEpe2EuTWE9dm9pZCAwO2EuZj1mdW5jdGlvbigpe3JldHVybiBhLk1hP2EuTWE6YS5NYT1uZXcgYX19ZnVuY3Rpb24gcmEoYSl7dmFyIGI9dHlwZW9mIGE7Yj1cIm9iamVjdFwiIT1iP2I6YT9BcnJheS5pc0FycmF5KGEpP1wiYXJyYXlcIjpiOlwibnVsbFwiO3JldHVyblwiYXJyYXlcIj09Ynx8XCJvYmplY3RcIj09YiYmXCJudW1iZXJcIj09dHlwZW9mIGEubGVuZ3RofWZ1bmN0aW9uIHNhKGEsYil7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWMuc2xpY2UoKTtkLnB1c2guYXBwbHkoZCxhcmd1bWVudHMpO3JldHVybiBhLmFwcGx5KHRoaXMsZCl9fXZhciB0YT1EYXRlLm5vdztmdW5jdGlvbiB1YShhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5wcm90b3R5cGU9bmV3IGM7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YX1mdW5jdGlvbiB2YShhKXtyZXR1cm4gYX07dmFyIHdhO2Z1bmN0aW9uIHhhKGEsYil7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXJldHVyblwic3RyaW5nXCIhPT10eXBlb2YgYnx8MSE9Yi5sZW5ndGg/LTE6YS5pbmRleE9mKGIsMCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYyBpbiBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX1mdW5jdGlvbiB2KGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpfWZ1bmN0aW9uIHlhKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9W10sZT0wLGY9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxnPTA7ZzxjO2crKylpZihnIGluIGYpe3ZhciBoPWZbZ107Yi5jYWxsKHZvaWQgMCxoLGcsYSkmJihkW2UrK109aCl9cmV0dXJuIGR9ZnVuY3Rpb24gemEoYSxiLGMpe2Zvcih2YXIgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2Euc3BsaXQoXCJcIik6YSxnPTA7ZzxkO2crKylnIGluIGYmJihlW2ddPWIuY2FsbChjLGZbZ10sZyxhKSk7cmV0dXJuIGV9ZnVuY3Rpb24gQWEoYSxiLGMpe3ZhciBkPWM7dihhLGZ1bmN0aW9uKGUsZil7ZD1iLmNhbGwodm9pZCAwLGQsZSxmLGEpfSk7cmV0dXJuIGR9ZnVuY3Rpb24gQmEoYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYmYi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gQ2EoYSxiKXthOntmb3IodmFyIGM9YS5sZW5ndGgsZD1cInN0cmluZ1wiPT09dHlwZW9mIGE/YS5zcGxpdChcIlwiKTphLGU9MDtlPGM7ZSsrKWlmKGUgaW4gZCYmYi5jYWxsKHZvaWQgMCxkW2VdLGUsYSkpe2I9ZTticmVhayBhfWI9LTF9cmV0dXJuIDA+Yj9udWxsOlwic3RyaW5nXCI9PT10eXBlb2YgYT9hLmNoYXJBdChiKTphW2JdfWZ1bmN0aW9uIHcoYSxiKXtyZXR1cm4gMDw9eGEoYSxiKX1mdW5jdGlvbiBEYShhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfWZ1bmN0aW9uIEVhKGEpe3ZhciBiPWEubGVuZ3RoO2lmKDA8Yil7Zm9yKHZhciBjPUFycmF5KGIpLGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX1mdW5jdGlvbiBGYShhLGIsYyl7cmV0dXJuIDI+PWFyZ3VtZW50cy5sZW5ndGg/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxiKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIsYyl9ZnVuY3Rpb24gSGEoYSxiKXthLnNvcnQoYnx8SWEpfWZ1bmN0aW9uIElhKGEsYil7cmV0dXJuIGE+Yj8xOmE8Yj8tMTowfWZ1bmN0aW9uIEphKGEpe2Zvcih2YXIgYj1bXSxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdO2lmKEFycmF5LmlzQXJyYXkoZCkpZm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKz04MTkyKWZvcih2YXIgZj1KYS5hcHBseShudWxsLEZhKGQsZSxlKzgxOTIpKSxnPTA7ZzxmLmxlbmd0aDtnKyspYi5wdXNoKGZbZ10pO2Vsc2UgYi5wdXNoKGQpfXJldHVybiBifWZ1bmN0aW9uIEthKGEsYixjKXtyZXR1cm4gRGEuYXBwbHkoW10semEoYSxiLGMpKX07ZnVuY3Rpb24gTGEoYSl7dmFyIGI9ITEsYztyZXR1cm4gZnVuY3Rpb24oKXtifHwoYz1hKCksYj0hMCk7cmV0dXJuIGN9fWZ1bmN0aW9uIE1hKGEpe3ZhciBiPWE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYil7dmFyIGM9YjtiPW51bGw7YygpfX19O2Z1bmN0aW9uIE5hKGEsYixjKXtmb3IodmFyIGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9ZnVuY3Rpb24gT2EoYSxiKXt2YXIgYz17fSxkO2ZvcihkIGluIGEpYi5jYWxsKHZvaWQgMCxhW2RdLGQsYSkmJihjW2RdPWFbZF0pO3JldHVybiBjfWZ1bmN0aW9uIFBhKGEpe3ZhciBiPVFhLGM7Zm9yKGMgaW4gYilpZighYS5jYWxsKHZvaWQgMCxiW2NdLGMsYikpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gVGEoYSl7dmFyIGI9W10sYz0wLGQ7Zm9yKGQgaW4gYSliW2MrK109YVtkXTtyZXR1cm4gYn1mdW5jdGlvbiBVYShhKXt2YXIgYj17fSxjO2ZvcihjIGluIGEpYltjXT1hW2NdO3JldHVybiBifXZhciBWYT1cImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZlwiLnNwbGl0KFwiIFwiKTtmdW5jdGlvbiB4KGEsYil7Zm9yKHZhciBjLGQsZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe2Q9YXJndW1lbnRzW2VdO2ZvcihjIGluIGQpYVtjXT1kW2NdO2Zvcih2YXIgZj0wO2Y8VmEubGVuZ3RoO2YrKyljPVZhW2ZdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGMpJiYoYVtjXT1kW2NdKX19O3ZhciBXYTtmdW5jdGlvbiBYYShhLGIpe3RoaXMuYj1hPT09WWEmJmJ8fFwiXCI7dGhpcy5hPVphfXZhciBaYT17fSxZYT17fTtmdW5jdGlvbiAkYShhKXtyZXR1cm4vXltcXHNcXHhhMF0qKFtcXHNcXFNdKj8pW1xcc1xceGEwXSokLy5leGVjKGEpWzFdfWZ1bmN0aW9uIHkoYSxiKXtyZXR1cm4tMSE9YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoYi50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBhYihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07dmFyIHo7YTp7dmFyIGJiPXQubmF2aWdhdG9yO2lmKGJiKXt2YXIgY2I9YmIudXNlckFnZW50O2lmKGNiKXt6PWNiO2JyZWFrIGF9fXo9XCJcIn1mdW5jdGlvbiBBKGEpe3JldHVybi0xIT16LmluZGV4T2YoYSl9O2Z1bmN0aW9uIGRiKCl7cmV0dXJuIEEoXCJTYWZhcmlcIikmJiEoZWIoKXx8QShcIkNvYXN0XCIpfHxBKFwiT3BlcmFcIil8fEEoXCJFZGdlXCIpfHxBKFwiRWRnL1wiKXx8QShcIk9QUlwiKXx8QShcIkZpcmVmb3hcIil8fEEoXCJGeGlPU1wiKXx8QShcIlNpbGtcIil8fEEoXCJBbmRyb2lkXCIpKX1mdW5jdGlvbiBlYigpe3JldHVybihBKFwiQ2hyb21lXCIpfHxBKFwiQ3JpT1NcIikpJiYhQShcIkVkZ2VcIil9O2Z1bmN0aW9uIGZiKGEpe3ZhciBiPU51bWJlcihhKTtyZXR1cm4gMD09YiYmL15bXFxzXFx4YTBdKiQvLnRlc3QoYSk/TmFOOmJ9ZnVuY3Rpb24gZ2IoKXtyZXR1cm5cIm9wYWNpdHlcIi5yZXBsYWNlKC9cXC0oW2Etel0pL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gaGIoYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csXCItJDFcIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBpYihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXnxbXFxzXSspKFthLXpdKS9nLGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYytkLnRvVXBwZXJDYXNlKCl9KX07dmFyIGpiPTAsa2I9MDtmdW5jdGlvbiBsYigpe3RoaXMuYT1bXX1sYi5wcm90b3R5cGUubGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9O2Z1bmN0aW9uIG1iKGEsYil7Zm9yKDsxMjc8YjspYS5hLnB1c2goYiYxMjd8MTI4KSxiPj4+PTc7YS5hLnB1c2goYil9ZnVuY3Rpb24gbmIoYSxiKXthLmEucHVzaChiPj4+MCYyNTUpO2EuYS5wdXNoKGI+Pj44JjI1NSk7YS5hLnB1c2goYj4+PjE2JjI1NSk7YS5hLnB1c2goYj4+PjI0JjI1NSl9O2Z1bmN0aW9uIG9iKGEpe29iW1wiIFwiXShhKTtyZXR1cm4gYX1vYltcIiBcIl09cWE7ZnVuY3Rpb24gcGIoYSxiKXt0cnl7cmV0dXJuIG9iKGFbYl0pLCEwfWNhdGNoKGMpe31yZXR1cm4hMX1mdW5jdGlvbiBxYihhLGIpe3ZhciBjPXJiO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYyxhKT9jW2FdOmNbYV09YihhKX07dmFyIHNiPUEoXCJPcGVyYVwiKSxCPUEoXCJUcmlkZW50XCIpfHxBKFwiTVNJRVwiKSx0Yj1BKFwiRWRnZVwiKSx1Yj1BKFwiR2Vja29cIikmJiEoeSh6LFwiV2ViS2l0XCIpJiYhQShcIkVkZ2VcIikpJiYhKEEoXCJUcmlkZW50XCIpfHxBKFwiTVNJRVwiKSkmJiFBKFwiRWRnZVwiKSx2Yj15KHosXCJXZWJLaXRcIikmJiFBKFwiRWRnZVwiKSx3Yj12YiYmQShcIk1vYmlsZVwiKTtmdW5jdGlvbiB4Yigpe3ZhciBhPXQuZG9jdW1lbnQ7cmV0dXJuIGE/YS5kb2N1bWVudE1vZGU6dm9pZCAwfXZhciB5YjthOnt2YXIgemI9XCJcIixBYj1mdW5jdGlvbigpe3ZhciBhPXo7aWYodWIpcmV0dXJuL3J2OihbXlxcKTtdKykoXFwpfDspLy5leGVjKGEpO2lmKHRiKXJldHVybi9FZGdlXFwvKFtcXGRcXC5dKykvLmV4ZWMoYSk7aWYoQilyZXR1cm4vXFxiKD86TVNJRXxydilbOiBdKFteXFwpO10rKShcXCl8OykvLmV4ZWMoYSk7aWYodmIpcmV0dXJuL1dlYktpdFxcLyhcXFMrKS8uZXhlYyhhKTtpZihzYilyZXR1cm4vKD86VmVyc2lvbilbIFxcL10/KFxcUyspLy5leGVjKGEpfSgpO0FiJiYoemI9QWI/QWJbMV06XCJcIik7aWYoQil7dmFyIEJiPXhiKCk7aWYobnVsbCE9QmImJkJiPnBhcnNlRmxvYXQoemIpKXt5Yj1TdHJpbmcoQmIpO2JyZWFrIGF9fXliPXpifXZhciBDYj15YixyYj17fTtmdW5jdGlvbiBEYihhKXtyZXR1cm4gcWIoYSxmdW5jdGlvbigpe2Zvcih2YXIgYj0wLGM9JGEoU3RyaW5nKENiKSkuc3BsaXQoXCIuXCIpLGQ9JGEoU3RyaW5nKGEpKS5zcGxpdChcIi5cIiksZT1NYXRoLm1heChjLmxlbmd0aCxkLmxlbmd0aCksZj0wOzA9PWImJmY8ZTtmKyspe3ZhciBnPWNbZl18fFwiXCIsaD1kW2ZdfHxcIlwiO2Rve2c9LyhcXGQqKShcXEQqKSguKikvLmV4ZWMoZyl8fFtcIlwiLFwiXCIsXCJcIixcIlwiXTtoPS8oXFxkKikoXFxEKikoLiopLy5leGVjKGgpfHxbXCJcIixcIlwiLFwiXCIsXCJcIl07aWYoMD09Z1swXS5sZW5ndGgmJjA9PWhbMF0ubGVuZ3RoKWJyZWFrO2I9YWIoMD09Z1sxXS5sZW5ndGg/MDpwYXJzZUludChnWzFdLDEwKSwwPT1oWzFdLmxlbmd0aD8wOnBhcnNlSW50KGhbMV0sMTApKXx8YWIoMD09Z1syXS5sZW5ndGgsMD09aFsyXS5sZW5ndGgpfHxhYihnWzJdLGhbMl0pO2c9Z1szXTtoPWhbM119d2hpbGUoMD09Yil9cmV0dXJuIDA8PWJ9KX12YXIgRWI7aWYodC5kb2N1bWVudCYmQil7dmFyIEZiPXhiKCk7RWI9RmI/RmI6cGFyc2VJbnQoQ2IsMTApfHx2b2lkIDB9ZWxzZSBFYj12b2lkIDA7dmFyIEdiPUViO3ZhciBIYj17fSxJYj1udWxsO2Z1bmN0aW9uIEpiKCl7dGhpcy5iPVtdO3RoaXMuYT1uZXcgbGJ9ZnVuY3Rpb24gS2IoYSxiLGMpe2lmKG51bGwhPWMpe21iKGEuYSw4KmIpO2E9YS5hO3ZhciBkPWM7Yz0wPmQ7ZD1NYXRoLmFicyhkKTtiPWQ+Pj4wO2Q9TWF0aC5mbG9vcigoZC1iKS80Mjk0OTY3Mjk2KTtkPj4+PTA7YyYmKGQ9fmQ+Pj4wLGI9KH5iPj4+MCkrMSw0Mjk0OTY3Mjk1PGImJihiPTAsZCsrLDQyOTQ5NjcyOTU8ZCYmKGQ9MCkpKTtqYj1iO2tiPWQ7Yz1qYjtmb3IoYj1rYjswPGJ8fDEyNzxjOylhLmEucHVzaChjJjEyN3wxMjgpLGM9KGM+Pj43fGI8PDI1KT4+PjAsYj4+Pj03O2EuYS5wdXNoKGMpfX07ZnVuY3Rpb24gTGIoKXt9dmFyIE1iPVwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXksTmI9W107ZnVuY3Rpb24gT2IoYSl7dmFyIGI9YS5jK2EuZzthLmFbYl18fChhLmI9YS5hW2JdPXt9KX1mdW5jdGlvbiBQYihhLGIpe2lmKGI8YS5jKXtiKz1hLmc7dmFyIGM9YS5hW2JdO3JldHVybiBjPT09TmI/YS5hW2JdPVtdOmN9aWYoYS5iKXJldHVybiBjPWEuYltiXSxjPT09TmI/YS5iW2JdPVtdOmN9ZnVuY3Rpb24gUWIoYSxiKXthPVBiKGEsYik7cmV0dXJuIG51bGw9PWE/MDphfWZ1bmN0aW9uIFJiKGEsYixjKXswIT09Yz9iPGEuYz9hLmFbYithLmddPWM6KE9iKGEpLGEuYltiXT1jKTpiPGEuYz9hLmFbYithLmddPW51bGw6KE9iKGEpLGRlbGV0ZSBhLmJbYl0pO3JldHVybiBhfUxiLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEudG9TdHJpbmcoKX07dmFyIFNiO1NiPVtcImF2LmtleVwiLFwianNcIixcIjIwMjAwODI4XCJdLnNsaWNlKC0xKVswXTtmdW5jdGlvbiBUYihhLGIsYyxkLGUpe2lmKGUpYz1hKyhcIiZcIitiK1wiPVwiK2MpO2Vsc2V7dmFyIGY9XCImXCIrYitcIj1cIixnPWEuaW5kZXhPZihmKTswPmc/Yz1hK2YrYzooZys9Zi5sZW5ndGgsZj1hLmluZGV4T2YoXCImXCIsZyksYz0wPD1mP2Euc3Vic3RyaW5nKDAsZykrYythLnN1YnN0cmluZyhmKTphLnN1YnN0cmluZygwLGcpK2MpfXJldHVybiAyRTM8Yy5sZW5ndGg/dm9pZCAwIT09ZD9UYihhLGIsZCx2b2lkIDAsZSk6YTpjfTt2YXIgQz1kb2N1bWVudCxEPXdpbmRvdzt2YXIgVWI9TGEoZnVuY3Rpb24oKXt2YXIgYT0hMTt0cnl7dmFyIGI9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXthPSEwfX0pO3QuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixudWxsLGIpfWNhdGNoKGMpe31yZXR1cm4gYX0pO2Z1bmN0aW9uIFZiKGEpe3JldHVybiBhP2EucGFzc2l2ZSYmVWIoKT9hOmEuY2FwdHVyZXx8ITE6ITF9ZnVuY3Rpb24gV2IoYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcj8oYS5hZGRFdmVudExpc3RlbmVyKGIsYyxWYihkKSksITApOiExfWZ1bmN0aW9uIFhiKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsVmIodm9pZCAwKSl9O3ZhciBZYj1CfHxzYnx8dmI7ZnVuY3Rpb24gRShhLGIpe3RoaXMueD12b2lkIDAhPT1hP2E6MDt0aGlzLnk9dm9pZCAwIT09Yj9iOjB9RS5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9O0UucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3JldHVybiB0aGlzfTtFLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe3RoaXMueD1NYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTtyZXR1cm4gdGhpc307ZnVuY3Rpb24gRihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifUYucHJvdG90eXBlLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O0YucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGgucm91bmQodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5yb3VuZCh0aGlzLmhlaWdodCk7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIFpiKGEpe3JldHVybiBhP25ldyAkYihIKGEpKTp3YXx8KHdhPW5ldyAkYil9ZnVuY3Rpb24gYWMoYSxiLGMpe3ZhciBkPWRvY3VtZW50O2M9Y3x8ZDthPWEmJlwiKlwiIT1hP1N0cmluZyhhKS50b1VwcGVyQ2FzZSgpOlwiXCI7aWYoYy5xdWVyeVNlbGVjdG9yQWxsJiZjLnF1ZXJ5U2VsZWN0b3ImJihhfHxiKSlyZXR1cm4gYy5xdWVyeVNlbGVjdG9yQWxsKGErKGI/XCIuXCIrYjpcIlwiKSk7aWYoYiYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXtjPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShiKTtpZihhKXtkPXt9O2Zvcih2YXIgZT0wLGY9MCxnO2c9Y1tmXTtmKyspYT09Zy5ub2RlTmFtZSYmKGRbZSsrXT1nKTtkLmxlbmd0aD1lO3JldHVybiBkfXJldHVybiBjfWM9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZShhfHxcIipcIik7aWYoYil7ZD17fTtmb3IoZj1lPTA7Zz1jW2ZdO2YrKylhPWcuY2xhc3NOYW1lLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuc3BsaXQmJncoYS5zcGxpdCgvXFxzKy8pLGIpJiYoZFtlKytdPWcpO2QubGVuZ3RoPWU7cmV0dXJuIGR9cmV0dXJuIGN9ZnVuY3Rpb24gYmMoYSl7dmFyIGI9YS5zY3JvbGxpbmdFbGVtZW50P2Euc2Nyb2xsaW5nRWxlbWVudDp2Ynx8XCJDU1MxQ29tcGF0XCIhPWEuY29tcGF0TW9kZT9hLmJvZHl8fGEuZG9jdW1lbnRFbGVtZW50OmEuZG9jdW1lbnRFbGVtZW50O2E9YS5wYXJlbnRXaW5kb3d8fGEuZGVmYXVsdFZpZXc7cmV0dXJuIEImJkRiKFwiMTBcIikmJmEucGFnZVlPZmZzZXQhPWIuc2Nyb2xsVG9wP25ldyBFKGIuc2Nyb2xsTGVmdCxiLnNjcm9sbFRvcCk6bmV3IEUoYS5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0LGEucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKX1mdW5jdGlvbiBjYyhhKXtyZXR1cm4gYT9hLnBhcmVudFdpbmRvd3x8YS5kZWZhdWx0Vmlldzp3aW5kb3d9ZnVuY3Rpb24gZGMoYSxiKXtpZighYXx8IWIpcmV0dXJuITE7aWYoYS5jb250YWlucyYmMT09Yi5ub2RlVHlwZSlyZXR1cm4gYT09Ynx8YS5jb250YWlucyhiKTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gYT09Ynx8ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik7Zm9yKDtiJiZhIT1iOyliPWIucGFyZW50Tm9kZTtyZXR1cm4gYj09YX1mdW5jdGlvbiBIKGEpe3JldHVybiA5PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50fHxhLmRvY3VtZW50fWZ1bmN0aW9uIGVjKGEpe3RyeXtyZXR1cm4gYS5jb250ZW50V2luZG93fHwoYS5jb250ZW50RG9jdW1lbnQ/Y2MoYS5jb250ZW50RG9jdW1lbnQpOm51bGwpfWNhdGNoKGIpe31yZXR1cm4gbnVsbH1mdW5jdGlvbiBmYyhhLGIpe2EmJihhPWEucGFyZW50Tm9kZSk7Zm9yKHZhciBjPTA7YTspe2lmKGIoYSkpcmV0dXJuIGE7YT1hLnBhcmVudE5vZGU7YysrfXJldHVybiBudWxsfWZ1bmN0aW9uICRiKGEpe3RoaXMuYT1hfHx0LmRvY3VtZW50fHxkb2N1bWVudH07ZnVuY3Rpb24gZ2MoKXtyZXR1cm4gQShcImlQYWRcIil8fEEoXCJBbmRyb2lkXCIpJiYhQShcIk1vYmlsZVwiKXx8QShcIlNpbGtcIil9O3ZhciBoYz0vXig/OihbXjovPyMuXSspOik/KD86XFwvXFwvKD86KFteXFxcXC8/I10qKUApPyhbXlxcXFwvPyNdKj8pKD86OihbMC05XSspKT8oPz1bXFxcXC8/I118JCkpPyhbXj8jXSspPyg/OlxcPyhbXiNdKikpPyg/OiMoW1xcc1xcU10qKSk/JC87ZnVuY3Rpb24gaWMoYSxiKXtpZihhKXthPWEuc3BsaXQoXCImXCIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLmluZGV4T2YoXCI9XCIpLGU9bnVsbDtpZigwPD1kKXt2YXIgZj1hW2NdLnN1YnN0cmluZygwLGQpO2U9YVtjXS5zdWJzdHJpbmcoZCsxKX1lbHNlIGY9YVtjXTtiKGYsZT9kZWNvZGVVUklDb21wb25lbnQoZS5yZXBsYWNlKC9cXCsvZyxcIiBcIikpOlwiXCIpfX19O2Z1bmN0aW9uIGpjKGEpe3RyeXtyZXR1cm4hIWEmJm51bGwhPWEubG9jYXRpb24uaHJlZiYmcGIoYSxcImZvb1wiKX1jYXRjaChiKXtyZXR1cm4hMX19ZnVuY3Rpb24ga2MoYSxiKXtpZihhKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiLmNhbGwodm9pZCAwLGFbY10sYyxhKX1mdW5jdGlvbiBsYygpe3ZhciBhPW1jO2lmKCFhKXJldHVyblwiXCI7dmFyIGI9Ly4qWyYjP11nb29nbGVfZGVidWcoPVteJl0qKT8oJi4qKT8kLzt0cnl7dmFyIGM9Yi5leGVjKGRlY29kZVVSSUNvbXBvbmVudChhKSk7aWYoYylyZXR1cm4gY1sxXSYmMTxjWzFdLmxlbmd0aD9jWzFdLnN1YnN0cmluZygxKTpcInRydWVcIn1jYXRjaChkKXt9cmV0dXJuXCJcIn07ZnVuY3Rpb24gbmMoKXt0aGlzLkE9dGhpcy5BO3RoaXMuWT10aGlzLll9bmMucHJvdG90eXBlLkE9ITE7bmMucHJvdG90eXBlLm5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuQX07bmMucHJvdG90eXBlLks9ZnVuY3Rpb24oKXt0aGlzLkF8fCh0aGlzLkE9ITAsdGhpcy5pYSgpKX07bmMucHJvdG90eXBlLmlhPWZ1bmN0aW9uKCl7aWYodGhpcy5ZKWZvcig7dGhpcy5ZLmxlbmd0aDspdGhpcy5ZLnNoaWZ0KCkoKX07ZnVuY3Rpb24gSShhLGIsYyxkKXt0aGlzLnRvcD1hO3RoaXMucmlnaHQ9Yjt0aGlzLmJvdHRvbT1jO3RoaXMubGVmdD1kfWZ1bmN0aW9uIG9jKGEpe3JldHVybiBhLnJpZ2h0LWEubGVmdH1mdW5jdGlvbiBwYyhhKXtyZXR1cm4gYS5ib3R0b20tYS50b3B9ZnVuY3Rpb24gcWMoYSl7cmV0dXJuIG5ldyBJKGEudG9wLGEucmlnaHQsYS5ib3R0b20sYS5sZWZ0KX1JLnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5jZWlsKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguY2VpbCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLmNlaWwodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmNlaWwodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307SS5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmZsb29yKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGguZmxvb3IodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5mbG9vcih0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguZmxvb3IodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307SS5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLnJvdW5kKHRoaXMudG9wKTt0aGlzLnJpZ2h0PU1hdGgucm91bmQodGhpcy5yaWdodCk7dGhpcy5ib3R0b209TWF0aC5yb3VuZCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGgucm91bmQodGhpcy5sZWZ0KTtyZXR1cm4gdGhpc307ZnVuY3Rpb24gcmMoYSxiLGMpe2IgaW5zdGFuY2VvZiBFPyhhLmxlZnQrPWIueCxhLnJpZ2h0Kz1iLngsYS50b3ArPWIueSxhLmJvdHRvbSs9Yi55KTooYS5sZWZ0Kz1iLGEucmlnaHQrPWIsXCJudW1iZXJcIj09PXR5cGVvZiBjJiYoYS50b3ArPWMsYS5ib3R0b20rPWMpKTtyZXR1cm4gYX07ZnVuY3Rpb24gc2MoYSxiLGMpe2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzfHwoYS5nb29nbGVfaW1hZ2VfcmVxdWVzdHM9W10pO3ZhciBkPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtjJiYoZC5yZWZlcnJlclBvbGljeT1cIm5vLXJlZmVycmVyXCIpO2Quc3JjPWI7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHMucHVzaChkKX1mdW5jdGlvbiB1YyhhKXtpZih2YygpKXNjKHdpbmRvdyxhLCEwKTtlbHNle3ZhciBiPXQuZG9jdW1lbnQ7aWYoYi5ib2R5KXt2YXIgYz1iLmdldEVsZW1lbnRCeUlkKFwiZ29vZy1zcmNsZXNzLWlmcmFtZVwiKTtpZighYyl7Yz0obmV3ICRiKGIpKS5hO3ZhciBkPVwiSUZSQU1FXCI7XCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIj09PWMuY29udGVudFR5cGUmJihkPWQudG9Mb3dlckNhc2UoKSk7Yz1jLmNyZWF0ZUVsZW1lbnQoZCk7Yy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiO2MuaWQ9XCJnb29nLXNyY2xlc3MtaWZyYW1lXCI7Yi5ib2R5LmFwcGVuZENoaWxkKGMpfWI9Y31lbHNlIGI9bnVsbDtiJiZiLmNvbnRlbnRXaW5kb3cmJnNjKGIuY29udGVudFdpbmRvdyxhLCEwKX19dmFyIHZjPUxhKGZ1bmN0aW9uKCl7cmV0dXJuXCJyZWZlcnJlclBvbGljeVwiaW4gdC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpfSk7dmFyIHdjPXt9O2Z1bmN0aW9uIHhjKCl7fWZ1bmN0aW9uIHljKGEsYil7aWYoYiE9PXdjKXRocm93IEVycm9yKFwiQmFkIHNlY3JldFwiKTt0aGlzLmE9YX1yKHljLHhjKTt5Yy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hfTtuZXcgeWMoXCJhYm91dDpibGFua1wiLHdjKTtuZXcgeWMoXCJhYm91dDppbnZhbGlkI3pUU3pcIix3Yyk7dmFyIHpjPXt9O2Z1bmN0aW9uIEFjKGEpe3RyeXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChiKXtyZXR1cm57bGVmdDowLHRvcDowLHJpZ2h0OjAsYm90dG9tOjB9fX1mdW5jdGlvbiBCYyhhLGIpe3ZhciBjPW5ldyBFKDAsMCksZD1jYyhIKGEpKTtpZighcGIoZCxcInBhcmVudFwiKSlyZXR1cm4gYztkb3tpZihkPT1iKXt2YXIgZT1hLGY9SChlKTt2YXIgZz1uZXcgRSgwLDApO3ZhciBoPWY/SChmKTpkb2N1bWVudDtoPSFCfHw5PD1OdW1iZXIoR2IpfHxcIkNTUzFDb21wYXRcIj09WmIoaCkuYS5jb21wYXRNb2RlP2guZG9jdW1lbnRFbGVtZW50OmguYm9keTtlIT1oJiYoZT1BYyhlKSxmPWJjKFpiKGYpLmEpLGcueD1lLmxlZnQrZi54LGcueT1lLnRvcCtmLnkpfWVsc2UgZz1BYyhhKSxnPW5ldyBFKGcubGVmdCxnLnRvcCk7Yy54Kz1nLng7Yy55Kz1nLnl9d2hpbGUoZCYmZCE9YiYmZCE9ZC5wYXJlbnQmJihhPWQuZnJhbWVFbGVtZW50KSYmKGQ9ZC5wYXJlbnQpKTtyZXR1cm4gY307dmFyIENjPSEhd2luZG93Lmdvb2dsZV9hc3luY19pZnJhbWVfaWQsRGM9Q2MmJndpbmRvdy5wYXJlbnR8fHdpbmRvdztmdW5jdGlvbiBFYygpe2lmKENjJiYhamMoRGMpKXt2YXIgYT1cIi5cIitDLmRvbWFpbjt0cnl7Zm9yKDsyPGEuc3BsaXQoXCIuXCIpLmxlbmd0aCYmIWpjKERjKTspQy5kb21haW49YT1hLnN1YnN0cihhLmluZGV4T2YoXCIuXCIpKzEpLERjPXdpbmRvdy5wYXJlbnR9Y2F0Y2goYil7fWpjKERjKXx8KERjPXdpbmRvdyl9cmV0dXJuIERjfTtmdW5jdGlvbiBGYyhhLGIsYyl7dHJ5e2EmJihiPWIudG9wKTt2YXIgZD12b2lkIDA7dmFyIGU9YjtjPXZvaWQgMD09PWM/ITE6YzthJiZudWxsIT09ZSYmZSE9ZS50b3AmJihlPWUudG9wKTt0cnl7aWYodm9pZCAwPT09Yz8wOmMpdmFyIGY9KG5ldyBGKGUuaW5uZXJXaWR0aCxlLmlubmVySGVpZ2h0KSkucm91bmQoKTtlbHNle3ZhciBnPShlfHx3aW5kb3cpLmRvY3VtZW50LGg9XCJDU1MxQ29tcGF0XCI9PWcuY29tcGF0TW9kZT9nLmRvY3VtZW50RWxlbWVudDpnLmJvZHk7Zj0obmV3IEYoaC5jbGllbnRXaWR0aCxoLmNsaWVudEhlaWdodCkpLnJvdW5kKCl9ZD1mfWNhdGNoKG4pe2Q9bmV3IEYoLTEyMjQ1OTMzLC0xMjI0NTkzMyl9YT1kO3ZhciBtPWJjKFpiKGIuZG9jdW1lbnQpLmEpO2lmKC0xMjI0NTkzMz09YS53aWR0aCl7dmFyIGs9YS53aWR0aDt2YXIgcD1uZXcgSShrLGssayxrKX1lbHNlIHA9bmV3IEkobS55LG0ueCthLndpZHRoLG0ueSthLmhlaWdodCxtLngpO3JldHVybiBwfWNhdGNoKG4pe3JldHVybiBuZXcgSSgtMTIyNDU5MzMsLTEyMjQ1OTMzLC0xMjI0NTkzMywtMTIyNDU5MzMpfX07dmFyIEdjPXt2YjpcInRzPTBcIix1YjpcIm9wcD0xXCIsTmI6XCJhZGY9MVwifSxIYz17Tk9ORTowLE1iOjF9O2Z1bmN0aW9uIEljKCl7dGhpcy5EPTA7dGhpcy5jPSExO3RoaXMuYj0tMTt0aGlzLmE9ITE7dGhpcy5nPTB9SWMucHJvdG90eXBlLmlzVmlzaWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmE/LjM8PXRoaXMuRDouNTw9dGhpcy5EfTt2YXIgSj17TGI6MCxPYjoxfSxKYz17NjY4MTIzNzI4OjAsNjY4MTIzNzI5OjF9LEtjPXtOT05FOjAsVWI6MSxQYjoyfSxMYz17NDgwNTk2Nzg0OjAsNDgwNTk2Nzg1OjEsMjEwNjMzNTU6Mn07ZnVuY3Rpb24gTWMoKXt0aGlzLmE9bnVsbDt0aGlzLmc9ITE7dGhpcy5jPW51bGx9ZnVuY3Rpb24gSyhhKXthLmc9ITA7cmV0dXJuIGF9ZnVuY3Rpb24gTmMoYSxiKXthLmMmJnYoYixmdW5jdGlvbihjKXtjPWEuY1tjXTt2b2lkIDAhPT1jJiZhLmIoYyl9KX1mdW5jdGlvbiBPYyhhKXtNYy5jYWxsKHRoaXMpO3RoaXMuaD1hfXIoT2MsTWMpO09jLnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKCEoYj1udWxsIT09dGhpcy5hKSl7YTp7Yj10aGlzLmg7Zm9yKGMgaW4gYilpZihiW2NdPT1hKXt2YXIgYz0hMDticmVhayBhfWM9ITF9Yj0hY31ifHwodGhpcy5hPWEpfTtmdW5jdGlvbiBQYygpe01jLmNhbGwodGhpcyl9cihQYyxNYyk7UGMucHJvdG90eXBlLmI9ZnVuY3Rpb24oYSl7bnVsbD09PXRoaXMuYSYmXCJudW1iZXJcIj09PXR5cGVvZiBhJiYodGhpcy5hPWEpfTtmdW5jdGlvbiBRYygpe3RoaXMuYT17fTt0aGlzLmI9e319ZnVuY3Rpb24gTChhLGIsYyl7YS5hW2JdfHwoYS5hW2JdPW5ldyBPYyhjKSk7cmV0dXJuIGEuYVtiXX1mdW5jdGlvbiBNKGEsYil7dmFyIGM9YS5iO2lmKG51bGwhPT1jJiZiIGluIGMpcmV0dXJuIGEuYltiXTtpZihhPWEuYVtiXSlyZXR1cm4gYS5hfWZ1bmN0aW9uIFJjKGEpe3ZhciBiPXt9LGM9T2EoYS5hLGZ1bmN0aW9uKGQpe3JldHVybiBkLmd9KTtOYShjLGZ1bmN0aW9uKGQsZSl7ZD12b2lkIDAhPT1hLmJbZV0/U3RyaW5nKGEuYltlXSk6ZC5nJiZudWxsIT09ZC5hP1N0cmluZyhkLmEpOlwiXCI7MDxkLmxlbmd0aCYmKGJbZV09ZCl9LGEpO3JldHVybiBifWZ1bmN0aW9uIFNjKGEsYil7Yj1iLnNwbGl0KFwiJlwiKTtmb3IodmFyIGM9Yi5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YltjXS5zcGxpdChcIj1cIiksZT1kWzBdO2Q9MTxkLmxlbmd0aD9wYXJzZUludChkWzFdLDEwKToxO2lzTmFOKGQpfHwoZT1hLmFbZV0pJiZlLmIoZCl9cmV0dXJuIGIuam9pbihcIiZcIil9ZnVuY3Rpb24gVGMoYSxiKXt2KFRhKGEuYSksZnVuY3Rpb24oYyl7cmV0dXJuIE5jKGMsYil9KX1mdW5jdGlvbiBVYyhhLGIpe2ImJlwic3RyaW5nXCI9PT10eXBlb2YgYiYmKGI9Yi5tYXRjaCgvWyY7P11laWQ9KFteJjtdKykvKSkmJjI9PT1iLmxlbmd0aCYmKGI9ZGVjb2RlVVJJQ29tcG9uZW50KGJbMV0pLnNwbGl0KFwiLFwiKSxiPXphKGIsZnVuY3Rpb24oYyl7cmV0dXJuIE51bWJlcihjKX0pLFRjKGEsYikpfTtmdW5jdGlvbiBWYyhhKXtMKGEsXCJvZFwiLEhjKTtLKEwoYSxcIm9wYWNcIixKKSk7SyhMKGEsXCJzYmVvc1wiLEopKTtLKEwoYSxcInByZlwiLEopKTtLKEwoYSxcIm13dFwiLEopKTtMKGEsXCJpb2dlb1wiLEopfTt2YXIgV2M9IUImJiFkYigpO2Z1bmN0aW9uIFhjKGEsYil7aWYoLy1bYS16XS8udGVzdChiKSlyZXR1cm4gbnVsbDtpZihXYyYmYS5kYXRhc2V0KXtpZighKCFBKFwiQW5kcm9pZFwiKXx8ZWIoKXx8QShcIkZpcmVmb3hcIil8fEEoXCJGeGlPU1wiKXx8QShcIk9wZXJhXCIpfHxBKFwiU2lsa1wiKXx8YiBpbiBhLmRhdGFzZXQpKXJldHVybiBudWxsO2E9YS5kYXRhc2V0W2JdO3JldHVybiB2b2lkIDA9PT1hP251bGw6YX1yZXR1cm4gYS5nZXRBdHRyaWJ1dGUoXCJkYXRhLVwiK2hiKGIpKX1mdW5jdGlvbiBZYyhhLGIpe3JldHVybi8tW2Etel0vLnRlc3QoYik/ITE6V2MmJmEuZGF0YXNldD9iIGluIGEuZGF0YXNldDphLmhhc0F0dHJpYnV0ZT9hLmhhc0F0dHJpYnV0ZShcImRhdGEtXCIraGIoYikpOiEhYS5nZXRBdHRyaWJ1dGUoXCJkYXRhLVwiK2hiKGIpKX07ZnVuY3Rpb24gWmMoKXt0aGlzLmI9dGhpcy5hPW51bGw7dGhpcy5nPXRoaXMuaD0wO3RoaXMuYz1cIm5vXCI7dGhpcy5pPSExfWZ1bmN0aW9uICRjKGEpe2lmKCFhKXJldHVybiExO3RyeXt2YXIgYj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBiJiYzMDw9Yi5oZWlnaHQmJjMwPD1iLndpZHRofWNhdGNoKGMpe3JldHVybiExfX1mdW5jdGlvbiBhZChhKXtyZXR1cm4geWEoYSxmdW5jdGlvbihiKXtyZXR1cm4gJGMoYil9KX1mdW5jdGlvbiBiZChhLGIpe2I9dm9pZCAwPT09Yj8hMDpiO3JldHVybiB5YShhLGZ1bmN0aW9uKGMpe3JldHVyblwiU0NSSVBUXCIhPWMubm9kZU5hbWUmJighYnx8XCJGT05UXCIhPWMubm9kZU5hbWUpfSl9ZnVuY3Rpb24gY2QoYSxiKXtiPXZvaWQgMD09PWI/ITA6YjtpZighYSlyZXR1cm4gbnVsbDtpZighYS5jaGlsZHJlbilyZXR1cm4gYTtmb3IodmFyIGM9YmQoRWEoYS5jaGlsZHJlbiksYik7Yy5sZW5ndGg7KXt2YXIgZD1hZChjKTtpZigxPT1kLmxlbmd0aClyZXR1cm4gZFswXTtpZigxPGQubGVuZ3RoKWJyZWFrO2M9S2EoYyxmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGlsZHJlbj9iZChFYShlLmNoaWxkcmVuKSk6W119LGIpfXJldHVybiBhfWZ1bmN0aW9uIGRkKGEsYil7cmV0dXJuIEphKHphKGIsZnVuY3Rpb24oYyl7dmFyIGQ9YXx8ZG9jdW1lbnQ7cmV0dXJuIEVhKGQucXVlcnlTZWxlY3RvckFsbCYmZC5xdWVyeVNlbGVjdG9yP2QucXVlcnlTZWxlY3RvckFsbChcIi5cIitjKTphYyhcIipcIixjLGEpKX0pKX1mdW5jdGlvbiBlZChhKXt2YXIgYj0hMDtiPXZvaWQgMD09PWI/ITE6Yjt2YXIgYz12b2lkIDA9PT1jPyExOmM7YS5iPWEuYTthLmM9XCJtdWVcIjtpZighJGMoYS5hKSl7dmFyIGQ9Y2QoYS5hKSxlPWNkKGEuYSwhMSk7JGMoZSkmJmUhPWQmJihhLmk9ITApOyRjKGQpPyhhLmI9ZCxhLmM9XCJpZVwiKTpiJiYoY3x8RCE9PUQudG9wKSYmKGI9ZGQoRC5kb2N1bWVudC5ib2R5LFtcIkdvb2dsZUFjdGl2ZVZpZXdJbm5lckNvbnRhaW5lclwiXSksMT09Yi5sZW5ndGgmJihhLmI9YlswXSxhLmM9XCJjZVwiKSl9fTtmdW5jdGlvbiBmZChhLGIpe3RoaXMuYj0odm9pZCAwPT09YT8wOmEpfHwwO3RoaXMuYT0odm9pZCAwPT09Yj9cIlwiOmIpfHxcIlwifWZ1bmN0aW9uIGdkKGEpe3JldHVybiEhYS5ifHwhIWEuYX1mZC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iKyh0aGlzLmE/XCItXCI6XCJcIikrdGhpcy5hfTtmdW5jdGlvbiBOKCl7fU4ucHJvdG90eXBlLmE9ZnVuY3Rpb24oKXtyZXR1cm4gMH07Ti5wcm90b3R5cGUuYz1mdW5jdGlvbigpe3JldHVybiAwfTtOLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O04ucHJvdG90eXBlLmI9ZnVuY3Rpb24oKXtyZXR1cm4gMH07ZnVuY3Rpb24gaGQoKXtpZighaWQoKSl0aHJvdyBFcnJvcigpO31yKGhkLE4pO2Z1bmN0aW9uIGlkKCl7cmV0dXJuISghRHx8IUQucGVyZm9ybWFuY2UpfWhkLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7cmV0dXJuIGlkKCkmJkQucGVyZm9ybWFuY2Uubm93P0QucGVyZm9ybWFuY2Uubm93KCk6Ti5wcm90b3R5cGUuYS5jYWxsKHRoaXMpfTtoZC5wcm90b3R5cGUuYz1mdW5jdGlvbigpe3JldHVybiBpZCgpJiZELnBlcmZvcm1hbmNlLm1lbW9yeT9ELnBlcmZvcm1hbmNlLm1lbW9yeS50b3RhbEpTSGVhcFNpemV8fDA6Ti5wcm90b3R5cGUuYy5jYWxsKHRoaXMpfTtoZC5wcm90b3R5cGUuZz1mdW5jdGlvbigpe3JldHVybiBpZCgpJiZELnBlcmZvcm1hbmNlLm1lbW9yeT9ELnBlcmZvcm1hbmNlLm1lbW9yeS51c2VkSlNIZWFwU2l6ZXx8MDpOLnByb3RvdHlwZS5nLmNhbGwodGhpcyl9O2hkLnByb3RvdHlwZS5iPWZ1bmN0aW9uKCl7cmV0dXJuIGlkKCkmJkQucGVyZm9ybWFuY2UubWVtb3J5P0QucGVyZm9ybWFuY2UubWVtb3J5LmpzSGVhcFNpemVMaW1pdHx8MDpOLnByb3RvdHlwZS5iLmNhbGwodGhpcyl9O2Z1bmN0aW9uIGpkKCl7cmV0dXJue3Zpc2libGU6MSxoaWRkZW46MixwcmVyZW5kZXI6MyxwcmV2aWV3OjQsdW5sb2FkZWQ6NX1bQy52aXNpYmlsaXR5U3RhdGV8fEMud2Via2l0VmlzaWJpbGl0eVN0YXRlfHxDLm1velZpc2liaWxpdHlTdGF0ZXx8XCJcIl18fDB9O2Z1bmN0aW9uIGtkKCl7fWtkLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gMT09PWpkKCl9O3ZhciBsZD0vXmh0dHBzPzpcXC9cXC8oXFx3fC0pK1xcLmNkblxcLmFtcHByb2plY3RcXC4obmV0fG9yZykoXFw/fFxcL3wkKS87ZnVuY3Rpb24gbWQoKXt2YXIgYT10LGI9W10sYz1udWxsO2Rve3ZhciBkPWE7aWYoamMoZCkpe3ZhciBlPWQubG9jYXRpb24uaHJlZjtjPWQuZG9jdW1lbnQmJmQuZG9jdW1lbnQucmVmZXJyZXJ8fG51bGx9ZWxzZSBlPWMsYz1udWxsO2IucHVzaChuZXcgbmQoZXx8XCJcIixkKSk7dHJ5e2E9ZC5wYXJlbnR9Y2F0Y2goZil7YT1udWxsfX13aGlsZShhJiZkIT1hKTtkPTA7Zm9yKGE9Yi5sZW5ndGgtMTtkPD1hOysrZCliW2RdLmRlcHRoPWEtZDtkPXQ7aWYoZC5sb2NhdGlvbiYmZC5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnMmJmQubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zLmxlbmd0aD09Yi5sZW5ndGgtMSlmb3IoYT0xO2E8Yi5sZW5ndGg7KythKWU9YlthXSxlLnVybHx8KGUudXJsPWQubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zW2EtMV18fFwiXCIsZS5pYj0hMCk7cmV0dXJuIGJ9ZnVuY3Rpb24gb2QoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1mdW5jdGlvbiBuZChhLGIsYyl7dGhpcy51cmw9YTt0aGlzLm89Yjt0aGlzLmliPSEhYzt0aGlzLmRlcHRoPW51bGx9O2Z1bmN0aW9uIHBkKCl7dGhpcy5jPVwiJlwiO3RoaXMuYj17fTt0aGlzLmc9MDt0aGlzLmE9W119ZnVuY3Rpb24gcWQoYSxiKXt2YXIgYz17fTtjW2FdPWI7cmV0dXJuW2NdfWZ1bmN0aW9uIHJkKGEsYixjLGQsZSl7dmFyIGY9W107a2MoYSxmdW5jdGlvbihnLGgpeyhnPXNkKGcsYixjLGQsZSkpJiZmLnB1c2goaCtcIj1cIitnKX0pO3JldHVybiBmLmpvaW4oYil9ZnVuY3Rpb24gc2QoYSxiLGMsZCxlKXtpZihudWxsPT1hKXJldHVyblwiXCI7Yj1ifHxcIiZcIjtjPWN8fFwiLCRcIjtcInN0cmluZ1wiPT10eXBlb2YgYyYmKGM9Yy5zcGxpdChcIlwiKSk7aWYoYSBpbnN0YW5jZW9mIEFycmF5KXtpZihkPWR8fDAsZDxjLmxlbmd0aCl7Zm9yKHZhciBmPVtdLGc9MDtnPGEubGVuZ3RoO2crKylmLnB1c2goc2QoYVtnXSxiLGMsZCsxLGUpKTtyZXR1cm4gZi5qb2luKGNbZF0pfX1lbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBhKXJldHVybiBlPWV8fDAsMj5lP2VuY29kZVVSSUNvbXBvbmVudChyZChhLGIsYyxkLGUrMSkpOlwiLi4uXCI7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYSkpfWZ1bmN0aW9uIHRkKGEsYixjKXtiPWIrXCIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tXCIrYzt2YXIgZD11ZChhKS1jLmxlbmd0aDtpZigwPmQpcmV0dXJuXCJcIjthLmEuc29ydChmdW5jdGlvbihwLG4pe3JldHVybiBwLW59KTtjPW51bGw7Zm9yKHZhciBlPVwiXCIsZj0wO2Y8YS5hLmxlbmd0aDtmKyspZm9yKHZhciBnPWEuYVtmXSxoPWEuYltnXSxtPTA7bTxoLmxlbmd0aDttKyspe2lmKCFkKXtjPW51bGw9PWM/ZzpjO2JyZWFrfXZhciBrPXJkKGhbbV0sYS5jLFwiLCRcIik7aWYoayl7az1lK2s7aWYoZD49ay5sZW5ndGgpe2QtPWsubGVuZ3RoO2IrPWs7ZT1hLmM7YnJlYWt9Yz1udWxsPT1jP2c6Y319YT1cIlwiO251bGwhPWMmJihhPWUrXCJ0cm49XCIrYyk7cmV0dXJuIGIrYX1mdW5jdGlvbiB1ZChhKXt2YXIgYj0xLGM7Zm9yKGMgaW4gYS5iKWI9Yy5sZW5ndGg+Yj9jLmxlbmd0aDpiO3JldHVybiAzOTk3LWItYS5jLmxlbmd0aC0xfTtmdW5jdGlvbiB2ZCgpe3RoaXMuYj1uZXcga2Q7dGhpcy5hPWlkKCk/bmV3IGhkOm5ldyBOfXZkLnByb3RvdHlwZS5zZXRJbnRlcnZhbD1mdW5jdGlvbihhLGIpe3JldHVybiBELnNldEludGVydmFsKGEsYil9O3ZkLnByb3RvdHlwZS5jbGVhckludGVydmFsPWZ1bmN0aW9uKGEpe0QuY2xlYXJJbnRlcnZhbChhKX07dmQucHJvdG90eXBlLnNldFRpbWVvdXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRC5zZXRUaW1lb3V0KGEsYil9O3ZkLnByb3RvdHlwZS5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oYSl7RC5jbGVhclRpbWVvdXQoYSl9O2Z1bmN0aW9uIHdkKGEpe08oKTt2YXIgYj1FYygpfHxEO3NjKGIsYSwhMSl9dSh2ZCk7ZnVuY3Rpb24geGQoKXt9ZnVuY3Rpb24gTygpe3ZhciBhPXhkLmYoKTtpZighYS5hKXtpZighRCl0aHJvdyBFcnJvcihcIkNvbnRleHQgaGFzIG5vdCBiZWVuIHNldCBhbmQgd2luZG93IGlzIHVuZGVmaW5lZC5cIik7YS5hPXZkLmYoKX1yZXR1cm4gYS5hfXUoeGQpO2Z1bmN0aW9uIHlkKGEpe2F8fChhPVtdKTt0aGlzLmc9LTE7dGhpcy5hPWE7YTp7aWYoYT10aGlzLmEubGVuZ3RoKXstLWE7dmFyIGI9dGhpcy5hW2FdO2lmKCEobnVsbD09PWJ8fFwib2JqZWN0XCIhPXR5cGVvZiBifHxBcnJheS5pc0FycmF5KGIpfHxNYiYmYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXt0aGlzLmM9YS0gLTE7dGhpcy5iPWI7YnJlYWsgYX19dGhpcy5jPU51bWJlci5NQVhfVkFMVUV9fXVhKHlkLExiKTtmdW5jdGlvbiB6ZChhKXt0aGlzLmc9YTt0aGlzLmE9LTE7dGhpcy5iPXRoaXMuYz0wfWZ1bmN0aW9uIEFkKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe2Zvcih2YXIgZD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoOysrZSlkW2VdPWFyZ3VtZW50c1tlXTtpZigtMTxhLmEpcmV0dXJuIGIuYXBwbHkobnVsbCxoYShkKSk7dHJ5e3JldHVybiBhLmE9YS5nLmEuYSgpLGIuYXBwbHkobnVsbCxoYShkKSl9ZmluYWxseXthLmMrPWEuZy5hLmEoKS1hLmEsYS5hPS0xLGEuYis9MX19fTtmdW5jdGlvbiBCZChhLGIpe3RoaXMuYj1hO3RoaXMuYz1iO3RoaXMuYT1uZXcgemQoYSl9O3ZhciBDZD17WGI6MSxaYjoyLFdiOjN9LERkLEVkPW5ldyBYYShZYSxcImh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL29zZC5qc1wiKTtEZD1FZCBpbnN0YW5jZW9mIFhhJiZFZC5jb25zdHJ1Y3Rvcj09PVhhJiZFZC5hPT09WmE/RWQuYjpcInR5cGVfZXJyb3I6Q29uc3RcIjt2YXIgRmQ7aWYodm9pZCAwPT09V2Epe3ZhciBHZD1udWxsLEhkPXQudHJ1c3RlZFR5cGVzO2lmKEhkJiZIZC5jcmVhdGVQb2xpY3kpe3RyeXtHZD1IZC5jcmVhdGVQb2xpY3koXCJnb29nI2h0bWxcIix7Y3JlYXRlSFRNTDp2YSxjcmVhdGVTY3JpcHQ6dmEsY3JlYXRlU2NyaXB0VVJMOnZhfSl9Y2F0Y2goYSl7dC5jb25zb2xlJiZ0LmNvbnNvbGUuZXJyb3IoYS5tZXNzYWdlKX1XYT1HZH1lbHNlIFdhPUdkfShGZD1XYSkmJkZkLmNyZWF0ZVNjcmlwdFVSTChEZCk7ZnVuY3Rpb24gUCgpe3RoaXMuaj12b2lkIDA7dGhpcy5tPTA7dGhpcy5jPW5ldyBmZCgwLFwiXCIpO3RoaXMuYj0wO3RoaXMubD0tMTt0aGlzLmE9bmV3IFFjO0soTCh0aGlzLmEsXCJtdlwiLEtjKSkuYz12b2lkIDA9PT1MYz9udWxsOkxjO0wodGhpcy5hLFwib21pZFwiLEopO0soTCh0aGlzLmEsXCJlcG9oXCIsSikpO0soTCh0aGlzLmEsXCJlcHBoXCIsSikpO0soTCh0aGlzLmEsXCJ1bXRcIixKKSkuYz12b2lkIDA9PT1KYz9udWxsOkpjO0soTCh0aGlzLmEsXCJwaGVsXCIsSikpO0soTCh0aGlzLmEsXCJwaGVsbFwiLEopKTtLKEwodGhpcy5hLFwib3NlaWRcIixDZCkpO3ZhciBhPXRoaXMuYTthLmEuc2xvaXx8KGEuYS5zbG9pPW5ldyBQYyk7SyhhLmEuc2xvaSk7SyhMKHRoaXMuYSxcInhkaVwiLEopKTtLKEwodGhpcy5hLFwiYW1wXCIsSikpO0soTCh0aGlzLmEsXCJwcmZcIixKKSk7SyhMKHRoaXMuYSxcImd0eFwiLEopKTtLKEwodGhpcy5hLFwibXZwX2x2XCIsSikpO0soTCh0aGlzLmEsXCJlb2NtXCIsSikpO0soTCh0aGlzLmEsXCJyeGxpc3RcIixKKSk7SyhMKHRoaXMuYSxcInZjbVwiLEopKTt0aGlzLmc9bmV3IEJkKE8oKSx0aGlzLmEpO3RoaXMuaD1udWxsO3RoaXMuaT0hMX1mdW5jdGlvbiBJZChhLGIpe1wic3RyaW5nXCI9PT10eXBlb2YgYiYmMCE9Yi5sZW5ndGgmJlNjKGEuYSxiKX11KFApO2Z1bmN0aW9uIEpkKCl7dmFyIGE9XCJodHRwczpcIjtEJiZELmxvY2F0aW9uJiZcImh0dHA6XCI9PT1ELmxvY2F0aW9uLnByb3RvY29sJiYoYT1cImh0dHA6XCIpO3RoaXMuYj1hO3RoaXMuYT0uMDE7dGhpcy5jPU1hdGgucmFuZG9tKCl9ZnVuY3Rpb24gS2QoYSxiLGMsZCxlKXtpZigoZD9hLmM6TWF0aC5yYW5kb20oKSk8KGV8fGEuYSkpdHJ5e2lmKGMgaW5zdGFuY2VvZiBwZCl2YXIgZj1jO2Vsc2UgZj1uZXcgcGQsa2MoYyxmdW5jdGlvbihoLG0pe3ZhciBrPWYscD1rLmcrKztoPXFkKG0saCk7ay5hLnB1c2gocCk7ay5iW3BdPWh9KTt2YXIgZz10ZChmLGEuYixcIi9wYWdlYWQvZ2VuXzIwND9pZD1cIitiK1wiJlwiKTtnJiZ3ZChnKX1jYXRjaChoKXt9fTtmdW5jdGlvbiBMZChhLGIsYyl7Yz12b2lkIDA9PT1jP3t9OmM7dGhpcy5lcnJvcj1hO3RoaXMuY29udGV4dD1iLmNvbnRleHQ7dGhpcy5tc2c9Yi5tZXNzYWdlfHxcIlwiO3RoaXMuaWQ9Yi5pZHx8XCJqc2Vycm9yXCI7dGhpcy5tZXRhPWN9O3ZhciBNZD1udWxsO2Z1bmN0aW9uIE5kKCl7dmFyIGE9dC5wZXJmb3JtYW5jZTtyZXR1cm4gYSYmYS5ub3cmJmEudGltaW5nP01hdGguZmxvb3IoYS5ub3coKSthLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQpOnRhKCl9ZnVuY3Rpb24gT2QoKXt2YXIgYT12b2lkIDA9PT1hP3Q6YTtyZXR1cm4oYT1hLnBlcmZvcm1hbmNlKSYmYS5ub3c/YS5ub3coKTpudWxsfTtmdW5jdGlvbiBQZChhLGIsYyl7dGhpcy5sYWJlbD1hO3RoaXMudHlwZT1iO3RoaXMudmFsdWU9Yzt0aGlzLmR1cmF0aW9uPTA7dGhpcy51bmlxdWVJZD1NYXRoLnJhbmRvbSgpO3RoaXMuc2xvdElkPXZvaWQgMH07dmFyIFE9dC5wZXJmb3JtYW5jZSxRZD0hIShRJiZRLm1hcmsmJlEubWVhc3VyZSYmUS5jbGVhck1hcmtzKSxSZD1MYShmdW5jdGlvbigpe3ZhciBhO2lmKGE9UWQpe3ZhciBiO2lmKG51bGw9PT1NZCl7TWQ9XCJcIjt0cnl7YT1cIlwiO3RyeXthPXQudG9wLmxvY2F0aW9uLmhhc2h9Y2F0Y2goYyl7YT10LmxvY2F0aW9uLmhhc2h9YSYmKE1kPShiPWEubWF0Y2goL1xcYmRlaWQ9KFtcXGQsXSspLykpP2JbMV06XCJcIil9Y2F0Y2goYyl7fX1iPU1kO2E9ISFiLmluZGV4T2YmJjA8PWIuaW5kZXhPZihcIjEzMzdcIil9cmV0dXJuIGF9KTtmdW5jdGlvbiBTZCgpe3ZhciBhPUVjKCk7dGhpcy5iPVtdO3RoaXMuYz1hfHx0O3ZhciBiPW51bGw7YSYmKGEuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZT1hLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWV8fFtdLHRoaXMuYj1hLmdvb2dsZV9qc19yZXBvcnRpbmdfcXVldWUsYj1hLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyk7dGhpcy5hPVJkKCl8fChudWxsIT1iP2I6MT5NYXRoLnJhbmRvbSgpKX1mdW5jdGlvbiBUZChhKXthJiZRJiZSZCgpJiYoUS5jbGVhck1hcmtzKFwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfc3RhcnRcIiksUS5jbGVhck1hcmtzKFwiZ29vZ19cIithLmxhYmVsK1wiX1wiK2EudW5pcXVlSWQrXCJfZW5kXCIpKX1TZC5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5hKXJldHVybiBudWxsO3ZhciBjPU9kKCl8fE5kKCk7YT1uZXcgUGQoYSxiLGMpO2I9XCJnb29nX1wiK2EubGFiZWwrXCJfXCIrYS51bmlxdWVJZCtcIl9zdGFydFwiO1EmJlJkKCkmJlEubWFyayhiKTtyZXR1cm4gYX07ZnVuY3Rpb24gVWQoKXt2YXIgYT1WZDt0aGlzLmk9V2Q7dGhpcy5oPVwianNlcnJvclwiO3RoaXMuZz0hMDt0aGlzLmI9bnVsbDt0aGlzLmo9dGhpcy5jO3RoaXMuYT12b2lkIDA9PT1hP251bGw6YX1mdW5jdGlvbiBYZChhLGIsYyl7cmV0dXJuIEFkKFAuZigpLmcuYSxmdW5jdGlvbigpe3RyeXtpZihhLmEmJmEuYS5hKXt2YXIgZD1hLmEuc3RhcnQoYi50b1N0cmluZygpLDMpO3ZhciBlPWMoKTt2YXIgZj1hLmEsZz1kO2lmKGYuYSYmXCJudW1iZXJcIj09PXR5cGVvZiBnLnZhbHVlKXt2YXIgaD1PZCgpfHxOZCgpO2cuZHVyYXRpb249aC1nLnZhbHVlO3ZhciBtPVwiZ29vZ19cIitnLmxhYmVsK1wiX1wiK2cudW5pcXVlSWQrXCJfZW5kXCI7USYmUmQoKSYmUS5tYXJrKG0pOyFmLmF8fDIwNDg8Zi5iLmxlbmd0aHx8Zi5iLnB1c2goZyl9fWVsc2UgZT1jKCl9Y2F0Y2goayl7Zj1hLmc7dHJ5e1RkKGQpLGY9YS5qKGIsbmV3IFlkKFpkKGspKSx2b2lkIDAsdm9pZCAwKX1jYXRjaChwKXthLmMoMjE3LHApfWlmKCFmKXRocm93IGs7fXJldHVybiBlfSkoKX1mdW5jdGlvbiAkZChhLGIpe3ZhciBjPWFlO3JldHVybiBBZChQLmYoKS5nLmEsZnVuY3Rpb24oZCl7Zm9yKHZhciBlPVtdLGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7KytmKWVbZl09YXJndW1lbnRzW2ZdO3JldHVybiBYZChjLGEsZnVuY3Rpb24oKXtyZXR1cm4gYi5hcHBseSh2b2lkIDAsZSl9KX0pfVVkLnByb3RvdHlwZS5jPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZT1lfHx0aGlzLmg7dHJ5e3ZhciBmPW5ldyBwZDtmLmEucHVzaCgxKTtmLmJbMV09cWQoXCJjb250ZXh0XCIsYSk7Yi5lcnJvciYmYi5tZXRhJiZiLmlkfHwoYj1uZXcgWWQoWmQoYikpKTtpZihiLm1zZyl7dmFyIGc9Yi5tc2cuc3Vic3RyaW5nKDAsNTEyKTtmLmEucHVzaCgyKTtmLmJbMl09cWQoXCJtc2dcIixnKX12YXIgaD1iLm1ldGF8fHt9O2lmKHRoaXMuYil0cnl7dGhpcy5iKGgpfWNhdGNoKHRjKXt9aWYoZCl0cnl7ZChoKX1jYXRjaCh0Yyl7fWI9W2hdO2YuYS5wdXNoKDMpO2YuYlszXT1iO3ZhciBtPW1kKCksaz1uZXcgbmQodC5sb2NhdGlvbi5ocmVmLHQsITEpO2I9bnVsbDt2YXIgcD1tLmxlbmd0aC0xO2ZvcihkPXA7MDw9ZDstLWQpe3ZhciBuPW1bZF07IWImJmxkLnRlc3Qobi51cmwpJiYoYj1uKTtpZihuLnVybCYmIW4uaWIpe2s9bjticmVha319bj1udWxsO3ZhciBxPW0ubGVuZ3RoJiZtW3BdLnVybDswIT1rLmRlcHRoJiZxJiYobj1tW3BdKTt2YXIgRz1uZXcgb2QoayxuKTtpZihHLmIpe3ZhciBHYT1HLmIudXJsfHxcIlwiO2YuYS5wdXNoKDQpO2YuYls0XT1xZChcInRvcFwiLEdhKX12YXIgUmE9e3VybDpHLmEudXJsfHxcIlwifTtpZihHLmEudXJsKXt2YXIgU2E9Ry5hLnVybC5tYXRjaChoYyksaWU9U2FbMV0samU9U2FbM10sa2U9U2FbNF07bT1cIlwiO2llJiYobSs9aWUrXCI6XCIpO2plJiYobSs9XCIvL1wiLG0rPWplLGtlJiYobSs9XCI6XCIra2UpKTt2YXIgbGU9bX1lbHNlIGxlPVwiXCI7UmE9W1JhLHt1cmw6bGV9XTtmLmEucHVzaCg1KTtmLmJbNV09UmE7S2QodGhpcy5pLGUsZiwhMSxjKX1jYXRjaCh0Yyl7dHJ5e0tkKHRoaXMuaSxlLHtjb250ZXh0OlwiZWNtc2VyclwiLHJjdHg6YSxtc2c6WmQodGMpLHVybDpHJiZHLmEudXJsfSwhMSxjKX1jYXRjaChSaCl7fX1yZXR1cm4gdGhpcy5nfTtmdW5jdGlvbiBaZChhKXt2YXIgYj1hLnRvU3RyaW5nKCk7YS5uYW1lJiYtMT09Yi5pbmRleE9mKGEubmFtZSkmJihiKz1cIjogXCIrYS5uYW1lKTthLm1lc3NhZ2UmJi0xPT1iLmluZGV4T2YoYS5tZXNzYWdlKSYmKGIrPVwiOiBcIithLm1lc3NhZ2UpO2lmKGEuc3RhY2spe2E9YS5zdGFjazt0cnl7LTE9PWEuaW5kZXhPZihiKSYmKGE9YitcIlxcblwiK2EpO2Zvcih2YXIgYzthIT1jOyljPWEsYT1hLnJlcGxhY2UoLygoaHR0cHM/OlxcLy4uKlxcLylbXlxcLzpdKjpcXGQrKD86LnxcXG4pKilcXDIvLFwiJDFcIik7Yj1hLnJlcGxhY2UoL1xcbiAqL2csXCJcXG5cIil9Y2F0Y2goZCl7fX1yZXR1cm4gYn1mdW5jdGlvbiBZZChhKXtMZC5jYWxsKHRoaXMsRXJyb3IoYSkse21lc3NhZ2U6YX0pfXIoWWQsTGQpO3ZhciBXZCxhZSxWZD1uZXcgU2Q7ZnVuY3Rpb24gYmUoKXt2YXIgYT1FYygpO2EmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLmdvb2dsZV9tZWFzdXJlX2pzX3RpbWluZyYmIWEuZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nJiYoYT1WZCxhLmE9ITEsYS5iIT1hLmMuZ29vZ2xlX2pzX3JlcG9ydGluZ19xdWV1ZSYmKFJkKCkmJnYoYS5iLFRkKSxhLmIubGVuZ3RoPTApKX0oZnVuY3Rpb24oKXtXZD1uZXcgSmQ7YWU9bmV3IFVkO3ZhciBhPUVjKCk7YSYmYS5kb2N1bWVudCYmKFwiY29tcGxldGVcIj09YS5kb2N1bWVudC5yZWFkeVN0YXRlP2JlKCk6VmQuYSYmV2IoYSxcImxvYWRcIixmdW5jdGlvbigpe2JlKCl9KSl9KSgpO2Z1bmN0aW9uIGNlKGEpe2FlLmI9ZnVuY3Rpb24oYil7dihhLGZ1bmN0aW9uKGMpe2MoYil9KX19ZnVuY3Rpb24gZGUoYSxiKXtyZXR1cm4gWGQoYWUsYSxiKX1mdW5jdGlvbiBSKGEsYil7cmV0dXJuICRkKGEsYil9ZnVuY3Rpb24gZWUoYSxiKXtLZChXZCxhLGIsXCJqc2Vycm9yXCIhPWEsdm9pZCAwKX1mdW5jdGlvbiBmZShhLGIsYyxkKXthZS5jKGEsYixjLGQpfTt2YXIgZ2U9RGF0ZS5ub3coKSxoZT0tMSxtZT0hMTtmdW5jdGlvbiBTKCl7cmV0dXJuIERhdGUubm93KCktZ2V9ZnVuY3Rpb24gbmUoKXt2YXIgYT1QLmYoKS5qLGI9bWU/UygpLWhlOi0xO2lmKDk0NzE5MDU0Mj09YSlyZXR1cm4gMTAwO2lmKDc5NDYzMDY5PT1hKXJldHVybiAyMDA7YT1bMkUzLDRFM107dmFyIGM9WzI1MCw1MDAsMUUzXTtmZSg2MzcsRXJyb3IoKSwuMDAxKTt2YXIgZD0tMTstMSE9YiYmLTE+YiYmKGQ9Yik7Zm9yKGI9MDtiPGEubGVuZ3RoOysrYilpZihkPGFbYl0pe3ZhciBlPWNbYl07YnJlYWt9dm9pZCAwPT09ZSYmKGU9Y1thLmxlbmd0aF0pO3JldHVybiBlfTtmdW5jdGlvbiBvZShhKXtmb3IodmFyIGI9MCxjPWEsZD0wO2EmJmEhPWEucGFyZW50OylhPWEucGFyZW50LGQrKyxqYyhhKSYmKGM9YSxiPWQpO3JldHVybntvOmMsbGV2ZWw6Yn19O3ZhciBRYT17S2I6XCJhZGRFdmVudExpc3RlbmVyXCIsUWI6XCJnZXRNYXhTaXplXCIsUmI6XCJnZXRTY3JlZW5TaXplXCIsU2I6XCJnZXRTdGF0ZVwiLFRiOlwiZ2V0VmVyc2lvblwiLFliOlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLFZiOlwiaXNWaWV3YWJsZVwifTtmdW5jdGlvbiBwZShhKXt2YXIgYj1hIT09YS50b3AsYz1hLnRvcD09PW9lKGEpLm8sZD0tMSxlPTA7aWYoYiYmYyYmYS50b3AubXJhaWQpe2Q9Mzt2YXIgZj1hLnRvcC5tcmFpZH1lbHNlIGQ9KGY9YS5tcmFpZCk/Yj9jPzI6MTowOi0xO2YmJihmLklTX0dNQV9TREt8fChlPTIpLFBhKGZ1bmN0aW9uKGcpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBmW2ddfSl8fChlPTEpKTtyZXR1cm57TDpmLHJhOmUsR2I6ZH19O2Z1bmN0aW9uIHFlKGEpe3JldHVybihhPWEuZG9jdW1lbnQpJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5lbGVtZW50RnJvbVBvaW50fTtpZihDJiZDLlVSTCl7dmFyIHJlLG1jPUMuVVJMO3JlPSEhbWMmJjA8bGMoKS5sZW5ndGg7YWUuZz0hcmV9ZnVuY3Rpb24gVChhLGIsYyxkKXt2YXIgZT12b2lkIDA9PT1lPyExOmU7Yz0kZChkLGMpO1diKGEsYixjLHtjYXB0dXJlOmV9KTtyZXR1cm4gY307ZnVuY3Rpb24gc2UoYSxiKXthJiYoYS5iJiYoYls0XT1hLmIpLGEuYSYmKGJbMTJdPWEuYSkpfWZ1bmN0aW9uIHRlKGEpe3ZhciBiPVtdO05hKGEsZnVuY3Rpb24oYyxkKXtkPWVuY29kZVVSSUNvbXBvbmVudChkKTtcInN0cmluZ1wiPT09dHlwZW9mIGMmJihjPWVuY29kZVVSSUNvbXBvbmVudChjKSk7Yi5wdXNoKGQrXCI9XCIrYyl9KTtiLnB1c2goXCIyND1cIitEYXRlLm5vdygpKTtyZXR1cm4gYi5qb2luKFwiXFxuXCIpfTt2YXIgdWU9MDtmdW5jdGlvbiB2ZShhKXt2YXIgYj1NYXRoLnBvdygxMCwyKTtyZXR1cm4gTWF0aC5mbG9vcihhKmIpL2J9ZnVuY3Rpb24gd2UoYSxiKXt0cnl7dWUrKyxiLnBvc3RNZXNzYWdlKGEsXCIqXCIpfWNhdGNoKGMpe319ZnVuY3Rpb24geGUoYSxiKXtiJiYoYShiKSxiLmZyYW1lcyYmdihiLmZyYW1lcyxmdW5jdGlvbihjKXt4ZShhLGMpfSkpfWZ1bmN0aW9uIHllKGEpe3JldHVybiBuZXcgSShhLnRvcCxhLnJpZ2h0LGEuYm90dG9tLGEubGVmdCl9ZnVuY3Rpb24gemUoKXt2YXIgYT1PKCkuYjtyZXR1cm4gMD09PWpkKCk/LTE6YS5pc1Zpc2libGUoKT8wOjF9ZnVuY3Rpb24gQWUoYSl7cmV0dXJuW2EudG9wLGEubGVmdCxhLmJvdHRvbSxhLnJpZ2h0XS5qb2luKFwiLVwiKX1mdW5jdGlvbiBCZShhKXtpZighYSlyZXR1cm4gbnVsbDthPWEuc3BsaXQoXCItXCIpO3JldHVybiA0PT1hLmxlbmd0aD9uZXcgSShmYihhWzBdKSxmYihhWzNdKSxmYihhWzJdKSxmYihhWzFdKSk6bnVsbH1mdW5jdGlvbiBDZShhLGIsYyl7aWYoYiYmYSlpZihjJiYwPGMubGVuZ3RoKWZvcihjPXlhKGMsZnVuY3Rpb24oZSl7dmFyIGY9ZS5wYXJlbnQmJmUucGFyZW50IT09ZTtyZXR1cm4gZT09PUQudG9wfHxmfSksYT1mYShjKSxjPWEubmV4dCgpOyFjLmRvbmU7Yz1hLm5leHQoKSl3ZShiLGMudmFsdWUpO2Vsc2V7Yz1bXTt2YXIgZD1lYyhhKTtkJiZjLnB1c2goZCk7aWYoMD09PWMubGVuZ3RoKXRyeXtjPXphKGFjKFwiSUZSQU1FXCIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLHZvaWQgMCxhKSxmdW5jdGlvbihlKXtyZXR1cm4gZWMoZSl9KX1jYXRjaChlKXt9YT1mYShjKTtmb3IoYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpe2M9Yy52YWx1ZTt0cnl7YiYmeGUoc2Eod2UsYiksYyl9Y2F0Y2goZSl7fX19fWZ1bmN0aW9uIERlKGEpe2lmKCFhKXJldHVybiAwO2lmKFljKGEsXCJnb29nbGVBdkRtXCIpKXN3aXRjaChYYyhhLFwiZ29vZ2xlQXZEbVwiKSl7Y2FzZSBcIjFcIjpyZXR1cm4gMTtjYXNlIFwiMlwiOmJyZWFrO2Nhc2UgXCIzXCI6cmV0dXJuIDM7ZGVmYXVsdDpyZXR1cm4gMX1yZXR1cm4gMn1mdW5jdGlvbiBFZShhKXt2YXIgYj17fTtpZih2b2lkIDA9PWEpcmV0dXJuIGI7XCI/XCI9PT1hLmNoYXJBdCgwKSYmKGE9YS5zdWJzdHJpbmcoMSkpO2ljKGEsZnVuY3Rpb24oYyxkKXtyZXR1cm4gYltjXT1kfSk7cmV0dXJuIGJ9O2Z1bmN0aW9uIEZlKCl7dmFyIGE9ejtyZXR1cm4gYT9CYShcIkFuZHJvaWQgVFY7QXBwbGVUVjtBcHBsZSBUVjtHb29nbGVUVjtIYmJUVjtOZXRDYXN0LlRWO09wZXJhIFRWO1BPVl9UVjtTTUFSVC1UVjtTbWFydFRWO1RWIFN0b3JlO0FtYXpvbldlYkFwcFBsYXRmb3JtO01pQk9YXCIuc3BsaXQoXCI7XCIpLGZ1bmN0aW9uKGIpe3JldHVybiB5KGEsYil9KXx8eShhLFwiT01JL1wiKSYmIXkoYSxcIlhpYW9NaS9cIik/ITA6eShhLFwiUHJlc3RvXCIpJiZ5KGEsXCJMaW51eFwiKSYmIXkoYSxcIlgxMVwiKSYmIXkoYSxcIkFuZHJvaWRcIikmJiF5KGEsXCJNb2JpXCIpOiExfWZ1bmN0aW9uIEdlKCl7dmFyIGE9ejtyZXR1cm4geShhLFwiQXBwbGVUVlwiKXx8eShhLFwiQXBwbGUgVFZcIil8fHkoYSxcIkNGTmV0d29ya1wiKXx8eShhLFwidHZPU1wiKX1mdW5jdGlvbiBIZSgpe3ZhciBhPXo7cmV0dXJuIHkoYSxcInNka19nb29nbGVfYXR2X3g4NlwiKXx8eShhLFwiQW5kcm9pZCBUVlwiKX07ZnVuY3Rpb24gVSgpe3RoaXMuaD0hamMoRC50b3ApO3RoaXMuaT1nYygpfHwhZ2MoKSYmKEEoXCJpUG9kXCIpfHxBKFwiaVBob25lXCIpfHxBKFwiQW5kcm9pZFwiKXx8QShcIklFTW9iaWxlXCIpKTt2YXIgYT1tZCgpO2E9MDxhLmxlbmd0aCYmbnVsbCE9YVthLmxlbmd0aC0xXSYmbnVsbCE9YVthLmxlbmd0aC0xXS51cmw/KChhPWFbYS5sZW5ndGgtMV0udXJsLm1hdGNoKGhjKVszXXx8bnVsbCk/ZGVjb2RlVVJJKGEpOmEpfHxcIlwiOlwiXCI7dGhpcy5kb21haW49YTt0aGlzLmE9bmV3IEkoMCwwLDAsMCk7dGhpcy5sPW5ldyBGKDAsMCk7dGhpcy5jPW5ldyBGKDAsMCk7dGhpcy5iPW5ldyBJKDAsMCwwLDApO3RoaXMuaj1uZXcgRSgwLDApO3RoaXMubT1udWxsO3RoaXMucz0hMTt0aGlzLmc9ISghRHx8IXBlKEQpLkwpO0llKHRoaXMpfWZ1bmN0aW9uIEplKGEsYil7YiYmYi5zY3JlZW4mJihhLmw9bmV3IEYoYi5zY3JlZW4ud2lkdGgsYi5zY3JlZW4uaGVpZ2h0KSl9ZnVuY3Rpb24gS2UoYSxiKXt2YXIgYz1hLmE/bmV3IEYob2MoYS5hKSxwYyhhLmEpKTpuZXcgRigwLDApO2I9dm9pZCAwPT09Yj9EOmI7bnVsbCE9PWImJmIhPWIudG9wJiYoYj1iLnRvcCk7dmFyIGQ9MCxlPTA7dHJ5e3ZhciBmPWIuZG9jdW1lbnQsZz1mLmJvZHksaD1mLmRvY3VtZW50RWxlbWVudDtpZihcIkNTUzFDb21wYXRcIj09Zi5jb21wYXRNb2RlJiZoLnNjcm9sbEhlaWdodClkPWguc2Nyb2xsSGVpZ2h0IT1jLmhlaWdodD9oLnNjcm9sbEhlaWdodDpoLm9mZnNldEhlaWdodCxlPWguc2Nyb2xsV2lkdGghPWMud2lkdGg/aC5zY3JvbGxXaWR0aDpoLm9mZnNldFdpZHRoO2Vsc2V7dmFyIG09aC5zY3JvbGxIZWlnaHQsaz1oLnNjcm9sbFdpZHRoLHA9aC5vZmZzZXRIZWlnaHQsbj1oLm9mZnNldFdpZHRoO2guY2xpZW50SGVpZ2h0IT1wJiYobT1nLnNjcm9sbEhlaWdodCxrPWcuc2Nyb2xsV2lkdGgscD1nLm9mZnNldEhlaWdodCxuPWcub2Zmc2V0V2lkdGgpO20+Yy5oZWlnaHQ/bT5wPyhkPW0sZT1rKTooZD1wLGU9bik6bTxwPyhkPW0sZT1rKTooZD1wLGU9bil9dmFyIHE9bmV3IEYoZSxkKX1jYXRjaChHKXtxPW5ldyBGKC0xMjI0NTkzMywtMTIyNDU5MzMpfWEuYz1xfWZ1bmN0aW9uIEllKGEpe0QmJkQuZG9jdW1lbnQmJihhLmI9RmMoITEsRCxhLmkpLGEuYT1GYyghMCxELGEuaSksYS5tPWEuYSxLZShhLEQpLEplKGEsRCkpfWZ1bmN0aW9uIExlKCl7aWYoVS5mKCkucylyZXR1cm4hMDt2YXIgYT1PKCkuYi5pc1Zpc2libGUoKSxiPTA9PT1qZCgpO3JldHVybiBhfHxifXUoVSk7dmFyIE1lPW5ldyBJKDAsMCwwLDApO2Z1bmN0aW9uIE5lKGEsYil7Yj1PZShiKTtyZXR1cm4gMD09PWI/MDpPZShhKS9ifWZ1bmN0aW9uIE9lKGEpe3JldHVybiBNYXRoLm1heChhLmJvdHRvbS1hLnRvcCwwKSpNYXRoLm1heChhLnJpZ2h0LWEubGVmdCwwKX1mdW5jdGlvbiBQZShhLGIpe2lmKCFhfHwhYilyZXR1cm4hMTtmb3IodmFyIGM9MDtudWxsIT09YSYmMTAwPmMrKzspe2lmKGE9PT1iKXJldHVybiEwO3RyeXthOnt2YXIgZD12b2lkIDA7aWYoWWImJiEoQiYmRGIoXCI5XCIpJiYhRGIoXCIxMFwiKSYmdC5TVkdFbGVtZW50JiZhIGluc3RhbmNlb2YgdC5TVkdFbGVtZW50KSYmKGQ9YS5wYXJlbnRFbGVtZW50KSl7dmFyIGU9ZDticmVhayBhfWQ9YS5wYXJlbnROb2RlO3ZhciBmPXR5cGVvZiBkO2U9KFwib2JqZWN0XCI9PWYmJm51bGwhPWR8fFwiZnVuY3Rpb25cIj09ZikmJjE9PWQubm9kZVR5cGU/ZDpudWxsfWlmKGE9ZXx8YSl7dmFyIGc9SChhKSxoPWcmJmNjKGcpLG09aCYmaC5mcmFtZUVsZW1lbnQ7bSYmKGE9bSl9fWNhdGNoKGspe2JyZWFrfX1yZXR1cm4hMX1mdW5jdGlvbiBRZShhLGIsYyl7aWYoIWF8fCFiKXJldHVybiExO2I9cmMocWMoYSksLWIubGVmdCwtYi50b3ApO2E9KGIubGVmdCtiLnJpZ2h0KS8yO2I9KGIudG9wK2IuYm90dG9tKS8yO3ZhciBkPUVjKCk7amMoZC50b3ApJiZkLnRvcCYmZC50b3AuZG9jdW1lbnQmJihkPWQudG9wKTtpZighcWUoZCkpcmV0dXJuITE7YT1kLmRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYSxiKTtpZighYSlyZXR1cm4hMTtiPShiPShiPUgoYykpJiZiLmRlZmF1bHRWaWV3JiZiLmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCkmJlBlKGIsYSk7ZD1hPT09YzthPSFkJiZhJiZmYyhhLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09Y30pO3JldHVybiEoYnx8ZHx8YSl9ZnVuY3Rpb24gUmUoYSxiLGMsZCl7cmV0dXJuIFUuZigpLmg/ITE6MD49b2MoYSl8fDA+PXBjKGEpPyEwOmMmJmQ/ZGUoMjA4LGZ1bmN0aW9uKCl7cmV0dXJuIFFlKGEsYixjKX0pOiExfTtmdW5jdGlvbiBTZShhLGIsYyl7dmFyIGQ9bmV3IEkoMCwwLDAsMCk7dGhpcy50aW1lPWE7dGhpcy52b2x1bWU9bnVsbDt0aGlzLmM9Yjt0aGlzLmE9ZDt0aGlzLmI9Y307ZnVuY3Rpb24gVGUoYSxiLGMsZCxlLGYsZyl7dGhpcy5qPWE7dGhpcy5oPWI7dGhpcy5jPWM7dGhpcy5hPWQ7dGhpcy5nPWU7dGhpcy5iPWY7dGhpcy5pPWd9O2Z1bmN0aW9uIFVlKGEpe3RoaXMuYz1hO3RoaXMuYj0wO3RoaXMuYT1udWxsfVVlLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXtPKCkuY2xlYXJUaW1lb3V0KHRoaXMuYSk7dGhpcy5hPW51bGx9O2Z1bmN0aW9uIFZlKGEpe3ZhciBiPU8oKTthLmE9Yi5zZXRUaW1lb3V0KEFkKFAuZigpLmcuYSxSKDE0MyxmdW5jdGlvbigpe2EuYisrO2EuYy50YigpfSkpLG5lKCkpfTtmdW5jdGlvbiBWKGEsYixjKXt0aGlzLm89YTt0aGlzLkM9dm9pZCAwPT09Yz9cIm5hXCI6Yzt0aGlzLmc9W107dGhpcy5sPSExO3RoaXMuYz1uZXcgU2UoLTEsITAsdGhpcyk7dGhpcy5iPXRoaXM7dGhpcy5oPWI7dGhpcy5zPXRoaXMuSD10aGlzLm09ITE7dGhpcy5JPVwidWtcIjt0aGlzLko9ITE7dGhpcy5qPSEwfWw9Vi5wcm90b3R5cGU7bC5SYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhKCl9O2wuYmE9ZnVuY3Rpb24oKXtyZXR1cm4hMX07bC5tYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmw9ITB9O2wuZWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLkl9O2wuZmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iLnN9O2Z1bmN0aW9uIFcoYSxiLGMpe2lmKCFhLnN8fCh2b2lkIDA9PT1jPzA6YykpYS5zPSEwLGEuST1iLGEuaD0wLGEucGEoKSxhLmIhPWF8fFdlKGEpfWwuRz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuQ307bC5NPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5LYSgpfTtsLkthPWZ1bmN0aW9uKCl7cmV0dXJue319O2wuTz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuaH07ZnVuY3Rpb24gWGUoYSxiKXt3KGEuZyxiKXx8KGEuZy5wdXNoKGIpLGIua2EoYS5iKSxiLlUoYS5jKSxiLmhhKCkmJihhLm09ITApKX1mdW5jdGlvbiBZZShhLGIpe3ZhciBjPWEuZyxkPXhhKGMsYik7MDw9ZCYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGMsZCwxKTthLm0mJmIuaGEoKSYmWmUoYSl9bC52YT1mdW5jdGlvbigpe3ZhciBhPVUuZigpO2EuYT1GYyghMCx0aGlzLm8sYS5pKX07bC53YT1mdW5jdGlvbigpe0plKFUuZigpLHRoaXMubyl9O2wuUWE9ZnVuY3Rpb24oKXtLZShVLmYoKSx0aGlzLm8pfTtsLnFiPWZ1bmN0aW9uKCl7dmFyIGE9VS5mKCk7YS5iPUZjKCExLHRoaXMubyxhLmkpfTtsLkxhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYy5hfTtmdW5jdGlvbiAkZShhKXthPWEuYjthLndhKCk7YS52YSgpO2EucWIoKTthLlFhKCk7YS5jLmE9YS5MYSgpfWZ1bmN0aW9uIGFmKGEpe3ZhciBiPVMoKSxjPUxlKCk7cmV0dXJuIG5ldyBTZShiLGMsYSl9bC50Yj1mdW5jdGlvbigpe307ZnVuY3Rpb24gWmUoYSl7YS5tPWEuZy5sZW5ndGg/QmEoYS5nLGZ1bmN0aW9uKGIpe3JldHVybiBiLmhhKCl9KTohMX1sLnBhPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBiZihhKXt2YXIgYj1FYShhLmcpO3YoYixmdW5jdGlvbihjKXtjLlUoYS5jKX0pfWZ1bmN0aW9uIFdlKGEpe3ZhciBiPUVhKGEuZyk7dihiLGZ1bmN0aW9uKGMpe2Mua2EoYS5iKX0pO2EuYiE9YXx8YmYoYSl9bC5rYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmIsYz1hLk8oKTt0aGlzLmI9Yz49dGhpcy5oP2E6dGhpcztiIT09dGhpcy5iPyh0aGlzLmI9PXRoaXN8fDE9PWMmJjAhPXRoaXMuaHx8dGhpcy5wYSgpLHRoaXMuaj10aGlzLmIuaixXZSh0aGlzKSk6dGhpcy5qIT09dGhpcy5iLmomJih0aGlzLmo9dGhpcy5iLmosV2UodGhpcykpfTtsLlU9ZnVuY3Rpb24oYSl7aWYoYS5iPT09dGhpcy5iKXt2YXIgYjtpZighKGI9dGhpcy5IKSl7Yj10aGlzLmM7dmFyIGM9dGhpcy5tO2lmKGM9YSYmKHZvaWQgMD09PWN8fCFjfHxiLnZvbHVtZT09YS52b2x1bWUpJiZiLmM9PWEuYyliPWIuYSxjPWEuYSxjPWI9PWM/ITA6YiYmYz9iLnRvcD09Yy50b3AmJmIucmlnaHQ9PWMucmlnaHQmJmIuYm90dG9tPT1jLmJvdHRvbSYmYi5sZWZ0PT1jLmxlZnQ6ITE7Yj0hY310aGlzLmM9YTtiJiZiZih0aGlzKX19O2Z1bmN0aW9uIGNmKGEsYil7YS5oIT09YiYmKGEuYiE9YSYmYj5hLmIuaCYmKGEuYj1hLFdlKGEpKSxhLmg9Yil9bC5oYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm19O2wuSz1mdW5jdGlvbigpe3RoaXMuSj0hMH07bC5uYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkp9O2Z1bmN0aW9uIGRmKGEsYixjLGQpe3RoaXMuYz1hO3RoaXMuYT1uZXcgSSgwLDAsMCwwKTt0aGlzLmw9bmV3IEkoMCwwLDAsMCk7dGhpcy5iPWI7dGhpcy5BPWM7dGhpcy5DPWQ7dGhpcy51PSExO3RoaXMudGltZXN0YW1wPS0xO3RoaXMuaD1uZXcgVGUoYi5jLHRoaXMuYSxuZXcgSSgwLDAsMCwwKSwwLDAsUygpLDApfWw9ZGYucHJvdG90eXBlO2wucGI9ZnVuY3Rpb24oKXtyZXR1cm4hMH07bC51YT1mdW5jdGlvbigpe307bC5KYT1mdW5jdGlvbigpe2lmKHRoaXMuYyl7dmFyIGE9dGhpcy5jLGI9dGhpcy5iLmIubzt0cnl7dHJ5e3ZhciBjPXllKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfWNhdGNoKGspe2M9bmV3IEkoMCwwLDAsMCl9dmFyIGQ9Yy5yaWdodC1jLmxlZnQsZT1jLmJvdHRvbS1jLnRvcCxmPUJjKGEsYiksZz1mLngsaD1mLnk7dmFyIG09bmV3IEkoTWF0aC5yb3VuZChoKSxNYXRoLnJvdW5kKGcrZCksTWF0aC5yb3VuZChoK2UpLE1hdGgucm91bmQoZykpfWNhdGNoKGspe209cWMoTWUpfXRoaXMuYT1lZih0aGlzLG0pfX07bC5ZYT1mdW5jdGlvbigpe3RoaXMubD10aGlzLmIuYy5hfTtsLmRhPWZ1bmN0aW9uKCl7dGhpcy5KYSgpO3RoaXMuaD1uZXcgVGUodGhpcy5iLmMsdGhpcy5hLHRoaXMuaC5jLHRoaXMuaC5hLHRoaXMuaC5nLFMoKSx0aGlzLmguaSl9O2Z1bmN0aW9uIGVmKGEsYil7dmFyIGM9b2MoYiksZD1wYyhiKTtpZigxPT0hTShQLmYoKS5hLFwidmNtXCIpfHwhYS5jKXJldHVybiBiO2E9YS5jO2lmKCEoYS52aWRlb0hlaWdodCYmYS52aWRlb1dpZHRoJiZjJiZkKSlyZXR1cm4gYjt2YXIgZT1xYyhiKTthLnZpZGVvV2lkdGgvYS52aWRlb0hlaWdodD5jL2Q/KGUudG9wPWIudG9wK01hdGguZmxvb3IoKGQtYS52aWRlb0hlaWdodCkvMiksZS5ib3R0b209ZS50b3ArYS52aWRlb0hlaWdodCk6KGUubGVmdD1iLmxlZnQrTWF0aC5mbG9vcigoYy1hLnZpZGVvV2lkdGgpLzIpLGUucmlnaHQ9ZS5sZWZ0K2EudmlkZW9XaWR0aCk7cmV0dXJuIGV9bC5LPWZ1bmN0aW9uKCl7dGhpcy5uYSgpfHwoWWUodGhpcy5iLHRoaXMpLHRoaXMudWEoKSx0aGlzLnU9ITApfTtsLm5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudX07bC5NPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5NKCl9O2wuTz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuTygpfTtsLmVhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5lYSgpfTtsLmZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYi5mYSgpfTtsLmthPWZ1bmN0aW9uKCl7fTtsLlU9ZnVuY3Rpb24oKXt0aGlzLmRhKCl9O2wuaGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5DfTtmdW5jdGlvbiBmZihhKXt0aGlzLmg9ITE7dGhpcy5hPWE7dGhpcy5nPXFhfWw9ZmYucHJvdG90eXBlO2wuTz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmEuTygpfTtsLmVhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5lYSgpfTtsLmZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYS5mYSgpfTtsLmNyZWF0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bnVsbDt0aGlzLmEmJihkPXRoaXMuWmEoYSxiLGMpLFhlKHRoaXMuYSxkKSk7cmV0dXJuIGR9O2wubmI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5PYSgpfTtsLk9hPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2wubWI9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYS5tYSgpPyhYZSh0aGlzLmEsdGhpcyksdGhpcy5nPWEsITApOiExfTtsLmthPWZ1bmN0aW9uKGEpezA9PWEuTygpJiZ0aGlzLmcoYS5lYSgpLHRoaXMpfTtsLlU9ZnVuY3Rpb24oKXt9O2wuaGE9ZnVuY3Rpb24oKXtyZXR1cm4hMX07bC5LPWZ1bmN0aW9uKCl7dGhpcy5oPSEwfTtsLm5hPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaH07bC5NPWZ1bmN0aW9uKCl7cmV0dXJue319O2Z1bmN0aW9uIGdmKGEsYixjKXt0aGlzLmM9dm9pZCAwPT09Yz8wOmM7dGhpcy5iPWE7dGhpcy5hPW51bGw9PWI/XCJcIjpifWZ1bmN0aW9uIGhmKGEpe3N3aXRjaChNYXRoLnRydW5jKGEuYykpe2Nhc2UgLTE2OnJldHVybi0xNjtjYXNlIC04OnJldHVybi04O2Nhc2UgMDpyZXR1cm4gMDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7ZGVmYXVsdDpyZXR1cm4gMTZ9fWZ1bmN0aW9uIGpmKGEsYil7cmV0dXJuIGEuYzxiLmM/ITA6YS5jPmIuYz8hMTphLmI8Yi5iPyEwOmEuYj5iLmI/ITE6dHlwZW9mIGEuYTx0eXBlb2YgYi5hPyEwOnR5cGVvZiBhLmE+dHlwZW9mIGIuYT8hMTphLmE8Yi5hfTtmdW5jdGlvbiBrZigpe3RoaXMuYz0wO3RoaXMuYT1bXTt0aGlzLmI9ITF9a2YucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIsYyl7Kyt0aGlzLmM7YT1uZXcgZ2YoYSxiLGMpO3RoaXMuYS5wdXNoKG5ldyBnZihhLmIsYS5hLGEuYyt0aGlzLmMvNDA5NikpO3RoaXMuYj0hMDtyZXR1cm4gdGhpc307ZnVuY3Rpb24gbGYoYSxiKXt2KGIuYSxmdW5jdGlvbihjKXthLmFkZChjLmIsYy5hLGhmKGMpKX0pfWZ1bmN0aW9uIG1mKGEsYil7dmFyIGM9dm9pZCAwPT09Yz8wOmM7dmFyIGQ9dm9pZCAwPT09ZD8hMDpkO2tjKGIsZnVuY3Rpb24oZSxmKXtkJiZ2b2lkIDA9PT1lfHxhLmFkZChmLGUsYyl9KTtyZXR1cm4gYX1mdW5jdGlvbiBuZihhKXt2YXIgYj1vZjthLmImJihIYShhLmEsZnVuY3Rpb24oYyxkKXtyZXR1cm4gamYoZCxjKT8xOmpmKGMsZCk/LTE6MH0pLGEuYj0hMSk7cmV0dXJuIEFhKGEuYSxmdW5jdGlvbihjLGQpe2Q9YihkKTtyZXR1cm5cIlwiK2MrKFwiXCIhPWMmJlwiXCIhPWQ/XCImXCI6XCJcIikrZH0sXCJcIil9O2Z1bmN0aW9uIG9mKGEpe3ZhciBiPWEuYjthPWEuYTtyZXR1cm5cIlwiPT09YT9iOlwiYm9vbGVhblwiPT09dHlwZW9mIGE/YT9iOlwiXCI6QXJyYXkuaXNBcnJheShhKT8wPT09YS5sZW5ndGg/YjpiK1wiPVwiK2Euam9pbigpOmIrXCI9XCIrKHcoW1wibXRvc1wiLFwidG9zXCIsXCJwXCJdLGIpP2E6ZW5jb2RlVVJJQ29tcG9uZW50KGEpKX07ZnVuY3Rpb24gcGYoYSl7dmFyIGI9dm9pZCAwPT09Yj8hMDpiO3RoaXMuYT1uZXcga2Y7dm9pZCAwIT09YSYmbGYodGhpcy5hLGEpO2ImJnRoaXMuYS5hZGQoXCJ2XCIsU2IsLTE2KX1wZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT1cIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vL3BhZ2VhZC9nZW5fMjA0XCIsYj1uZih0aGlzLmEpOzA8Yi5sZW5ndGgmJihhKz1cIj9cIitiKTtyZXR1cm4gYX07ZnVuY3Rpb24gcWYoYSl7dmFyIGI9W10sYz1bXTtOYShhLGZ1bmN0aW9uKGQsZSl7aWYoIShlIGluIE9iamVjdC5wcm90b3R5cGUpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZClzd2l0Y2goQXJyYXkuaXNBcnJheShkKSYmKGQ9ZC5qb2luKFwiLFwiKSksZD1bZSxcIj1cIixkXS5qb2luKFwiXCIpLGUpe2Nhc2UgXCJhZGtcIjpjYXNlIFwiclwiOmNhc2UgXCJ0dFwiOmNhc2UgXCJlcnJvclwiOmNhc2UgXCJtdG9zXCI6Y2FzZSBcInRvc1wiOmNhc2UgXCJwXCI6Y2FzZSBcImJzXCI6Yi51bnNoaWZ0KGQpO2JyZWFrO2Nhc2UgXCJyZXFcIjpjYXNlIFwidXJsXCI6Y2FzZSBcInJlZmVycmVyXCI6Y2FzZSBcImlmcmFtZV9sb2NcIjpjLnB1c2goZCk7YnJlYWs7ZGVmYXVsdDpiLnB1c2goZCl9fSk7cmV0dXJuIGIuY29uY2F0KGMpfWZ1bmN0aW9uIHJmKCl7aWYoU2ImJlwidW5yZWxlYXNlZFwiIT09U2IpcmV0dXJuIFNifWZ1bmN0aW9uIHNmKGEpe2lmKC8mdj1bXiZdKy8udGVzdChhKSlyZXR1cm4gYTt2YXIgYj1yZigpO3JldHVybiBiP2ErXCImdj1cIitlbmNvZGVVUklDb21wb25lbnQoYik6YX1mdW5jdGlvbiB0ZihhKXt2YXIgYj12b2lkIDA9PT1iPzRFMzpiO2E9c2YoYS50b1N0cmluZygpKTthPWEuc3Vic3RyaW5nKDAsYik7d2QoYSl9O2Z1bmN0aW9uIHVmKCl7dGhpcy5hPTB9dSh1Zik7ZnVuY3Rpb24gdmYoYSxiLGMpe3YoYS5jLGZ1bmN0aW9uKGQpe3ZhciBlPWEuYTtpZighZC5hJiYoZC5jKGIsYyksZC5nKCkpKXtkLmE9ITA7dmFyIGY9ZC5iKCksZz1uZXcga2Y7Zy5hZGQoXCJpZFwiLFwiYXYtanNcIik7Zy5hZGQoXCJ0eXBlXCIsXCJ2ZXJpZlwiKTtnLmFkZChcInZ0eXBlXCIsZC5oKTtkPXVmLmYoKTtnLmFkZChcImlcIixkLmErKyk7Zy5hZGQoXCJhZGtcIixlKTttZihnLGYpO2U9bmV3IHBmKGcpO3RmKGUpfX0pfTtmdW5jdGlvbiB3Zigpe3RoaXMuYT10aGlzLmI9dGhpcy5jPTB9ZnVuY3Rpb24geGYoYSxiLGMsZCl7YiYmKGEuYys9YyxhLmIrPWMsYS5hPU1hdGgubWF4KGEuYSxhLmIpKTtpZih2b2lkIDA9PT1kPyFiOmQpYS5iPTB9O3ZhciB5Zj1bMSwuNzUsLjUsLjMsMF07ZnVuY3Rpb24gemYoYSl7dGhpcy5hPWE9dm9pZCAwPT09YT95ZjphO3RoaXMuYj16YSh0aGlzLmEsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHdmfSl9ZnVuY3Rpb24gQWYoYSl7cmV0dXJuIEJmKGEsZnVuY3Rpb24oYil7cmV0dXJuIGIuY30sITEpfWZ1bmN0aW9uIENmKGEpe3JldHVybiBCZihhLGZ1bmN0aW9uKGIpe3JldHVybiBiLmF9LCEwKX1mdW5jdGlvbiBEZihhLGIsYyxkLGUsZil7dmFyIGc9dm9pZCAwPT09Zz8hMDpnO2M9Zj9NYXRoLm1pbihiLGMpOmM7Zm9yKGY9MDtmPGEuYS5sZW5ndGg7ZisrKXt2YXIgaD1hLmFbZl0sbT0wPGMmJmM+PWg7aD0hKDA8YiYmYj49aCl8fGQ7eGYoYS5iW2ZdLGcmJm0sZSwhZ3x8aCl9fWZ1bmN0aW9uIEJmKGEsYixjKXthPXphKGEuYixmdW5jdGlvbihkKXtyZXR1cm4gYihkKX0pO3JldHVybiBjP2E6RWYoYSl9ZnVuY3Rpb24gRWYoYSl7cmV0dXJuIHphKGEsZnVuY3Rpb24oYixjLGQpe3JldHVybiAwPGM/ZFtjXS1kW2MtMV06ZFtjXX0pfTtmdW5jdGlvbiBGZigpe3RoaXMuYT1uZXcgemY7dGhpcy5jPW5ldyB3Zjt0aGlzLmI9LTE7dGhpcy5nPW5ldyB6ZihbMSwuOSwuOCwuNywuNiwuNSwuNCwuMywuMiwuMSwwXSl9ZnVuY3Rpb24gR2YoYSl7cmV0dXJuIDFFMzw9YS5jLmF9O3ZhciBIZj1uZXcgSSgwLDAsMCwwKTtmdW5jdGlvbiBYKGEsYixjKXtuYy5jYWxsKHRoaXMpO3RoaXMuRmI9cWMoSGYpO3RoaXMuYz1uZXcgRmY7dGhpcy5XPS0yO0RhdGUubm93KCk7dGhpcy5zYj0tMTt0aGlzLmdiPWI7dGhpcy5TPW51bGw7dGhpcy5zPSExO3RoaXMuY2E9bnVsbDt0aGlzLkI9LTE7dGhpcy5aPWM7dGhpcy5JYT10aGlzLkFhPXFhO3RoaXMuYj1uZXcgWmM7dGhpcy5iLmE9YTt0aGlzLmIuYj1hO3RoaXMudT0hMTt0aGlzLmk9e3lhOm51bGwseGE6bnVsbH07dGhpcy4kPSEwO3RoaXMuSD1udWxsO1AuZigpLm0rKzt0aGlzLmc9bmV3IEljO3RoaXMucmI9dGhpcy5hYT0tMTt0aGlzLkZhPTA7dGhpcy5DPS0xO3RoaXMuYT1udWxsO3RoaXMucWE9bmV3IEkoMCwwLDAsMCk7dGhpcy5mYj0hMTt0aGlzLmo9bmV3IFFjO1ZjKHRoaXMuaik7KGE9dGhpcy5iLmEpJiZhLmdldEF0dHJpYnV0ZSYmWWMoYSxcImdvb2dsZUF2SW5hcHBcIikmJihVLmYoKS5nPSEwKTsxPT10aGlzLlo/KGE9dGhpcy5qLmEub2QpJiZhLmIoMSk6KGE9dGhpcy5qLmEub2QpJiZhLmIoMCl9cihYLG5jKTtsPVgucHJvdG90eXBlO2wuaWE9ZnVuY3Rpb24oKXt0aGlzLmIuYiYmKHRoaXMuaS55YSYmKFhiKHRoaXMuYi5iLFwibW91c2VvdmVyXCIsdGhpcy5pLnlhKSx0aGlzLmkueWE9bnVsbCksdGhpcy5pLnhhJiYoWGIodGhpcy5iLmIsXCJtb3VzZW91dFwiLHRoaXMuaS54YSksdGhpcy5pLnhhPW51bGwpKTt0aGlzLkgmJnRoaXMuSC5LKCk7dGhpcy5hJiZ0aGlzLmEuSygpO2RlbGV0ZSB0aGlzLmM7ZGVsZXRlIHRoaXMuQWE7ZGVsZXRlIHRoaXMuSWE7ZGVsZXRlIHRoaXMuYi5hO2RlbGV0ZSB0aGlzLmIuYjtkZWxldGUgdGhpcy5pO2RlbGV0ZSB0aGlzLkg7ZGVsZXRlIHRoaXMuYTtkZWxldGUgdGhpcy5qO25jLnByb3RvdHlwZS5pYS5jYWxsKHRoaXMpfTtmdW5jdGlvbiBJZihhKXtyZXR1cm4gYS5hP2EuYS5hOmEuRmJ9bC50YT1mdW5jdGlvbihhKXtJZChQLmYoKSxhKX07bC5vYj1mdW5jdGlvbigpe3JldHVybiExfTtsLlBhPWZ1bmN0aW9uKCl7dGhpcy5zPSEwfTtsLmdhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc307bC5TYT1mdW5jdGlvbigpe3RoaXMuZy5EPTB9O2wuVGE9ZnVuY3Rpb24oKXt0aGlzLmM9bmV3IEZmfTtmdW5jdGlvbiBKZihhLGIpe2lmKGEuYSl7aWYoYi5HKCk9PT1hLmEuRygpKXJldHVybjthLmEuSygpO2EuYT1udWxsfWI9Yi5jcmVhdGUoYS5iLmIsYS5qLGEub2IoKSk7aWYoYj1udWxsIT1iJiZiLnBiKCk/YjpudWxsKWEuYT1ifWZ1bmN0aW9uIEtmKGEsYixjKXtpZihhLmEpe2EuYS5kYSgpO3ZhciBkPWEuYS5oLGU9ZC5qLGY9ZS5hO2lmKG51bGwhPWQuYyl7dmFyIGc9ZC5oO2EuY2E9bmV3IEUoZy5sZWZ0LWYubGVmdCxnLnRvcC1mLnRvcCk7YS5xYT1kLmN9Zj1hLnphKCk/TWF0aC5tYXgoZC5hLGQuZyk6ZC5hO2c9e307bnVsbCE9PWUudm9sdW1lJiYoZy52b2x1bWU9ZS52b2x1bWUpO2EuUyYmLTEhPWEuZ2ImJi0xIT09ZC5iJiYtMSE9PWEuUy5iPyhlPWQuYi1hLlMuYixlPTFFNDxlPzA6ZSk6ZT0wO2EuUz1kO2EuVWEoZixiLGMsITEsZyxlLGQuaSl9fWZ1bmN0aW9uIExmKGEpe2lmKGEuZ2EoKSYmYS5IKXt2YXIgYj0xPT1NKGEuaixcIm9kXCIpLGM9VS5mKCkuYSxkPWEuSCxlPW5ldyBGKG9jKGMpLHBjKGMpKTtjPWEuemEoKTthPXtIYjphLmE/YS5hLkcoKTpcIm5zXCIsY2E6YS5jYSxKYjplLHphOmMsRDphLmcuRCxJYjpifTtpZihiPWQuYil7Yi5kYSgpO2U9Yi5oO3ZhciBmPWUuai5hLGc9bnVsbCxoPW51bGw7bnVsbCE9ZS5jJiZmJiYoZz1lLmgsZz1uZXcgRShnLmxlZnQtZi5sZWZ0LGcudG9wLWYudG9wKSxoPW5ldyBGKGYucmlnaHQtZi5sZWZ0LGYuYm90dG9tLWYudG9wKSk7Yz17SGI6Yi5HKCksY2E6ZyxKYjpoLHphOmMsSWI6ITEsRDpjP01hdGgubWF4KGUuYSxlLmcpOmUuYX19ZWxzZSBjPW51bGw7YyYmdmYoZCxhLGMpfX1sLlVhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3RoaXMudXx8KHRoaXMuZ2EoKSYmKGU9bmV3IEljLGUuYz1jLGUuYj16ZSgpLGUuRD0wPT09dGhpcy5CJiYxPT09TSh0aGlzLmosXCJvcGFjXCIpPzA6YSxlLmE9dGhpcy5vYSgpLGUuZz1nLGE9dGhpcy5jLGM9dGhpcy5nLGQ9ZCYmdGhpcy5nLkQ+PSh0aGlzLm9hKCk/LjM6LjUpLGEuYj1NYXRoLm1heChhLmIsZS5EKSxEZihhLmcsZS5nLGMuZyxlLmMsZixkKSxEZihhLmEsZS5ELGMuRCxlLmMsZixkKSxkPWR8fGMuYSE9ZS5hP2MuaXNWaXNpYmxlKCkmJmUuaXNWaXNpYmxlKCk6Yy5pc1Zpc2libGUoKSxjPSFlLmlzVmlzaWJsZSgpfHxlLmMseGYoYS5jLGQsZixjKSx0aGlzLmdiPWIsMDxlLkQmJigtMT09PXRoaXMuYWEmJih0aGlzLmFhPWIpLHRoaXMucmI9YiksLTE9PXRoaXMuc2ImJkdmKHRoaXMuYykmJih0aGlzLnNiPWIpLC0yPT10aGlzLlcmJih0aGlzLlc9T2UoSWYodGhpcykpP2UuRDotMSksdGhpcy5nPWUpLHRoaXMuQWEodGhpcykpfTtsLm9hPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2wuemE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYnx8ITF9O2Z1bmN0aW9uIE1mKGEpe2EuYi5iJiYoYS5pLnlhPVQoYS5iLmIsXCJtb3VzZW92ZXJcIixmdW5jdGlvbigpe3ZhciBiPVMoKTthLkM9Yn0sMTQ5KSxhLmkueGE9VChhLmIuYixcIm1vdXNlb3V0XCIsZnVuY3Rpb24oKXt2YXIgYj1TKCk7LTE9PWEuQ3x8YjxhLkN8fChhLkZhKz1iLWEuQyk7YS5DPS0xfSwxNTApKX1mdW5jdGlvbiBOZihhLGIsYyl7YiYmKGEuQWE9Yik7YyYmKGEuSWE9Yyl9O2Z1bmN0aW9uIE9mKGEpe3JldHVybiBkYigpPyhhPShhPUgoYSkpJiZjYyhhKSwhIShhJiZhLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucyYmMDxhLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2lucy5sZW5ndGgmJmEubG9jYXRpb24ub3JpZ2luPT1hLmxvY2F0aW9uLmFuY2VzdG9yT3JpZ2luc1swXSkpOiEwfTt2YXIgUGY9XCJTdG9wSXRlcmF0aW9uXCJpbiB0P3QuU3RvcEl0ZXJhdGlvbjp7bWVzc2FnZTpcIlN0b3BJdGVyYXRpb25cIixzdGFjazpcIlwifTtmdW5jdGlvbiBRZigpe31RZi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3Rocm93IFBmO307UWYucHJvdG90eXBlLldhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIFJmKGEpe2lmKGEgaW5zdGFuY2VvZiBRZilyZXR1cm4gYTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLldhKXJldHVybiBhLldhKCExKTtpZihyYShhKSl7dmFyIGI9MCxjPW5ldyBRZjtjLm5leHQ9ZnVuY3Rpb24oKXtmb3IoOzspe2lmKGI+PWEubGVuZ3RoKXRocm93IFBmO2lmKGIgaW4gYSlyZXR1cm4gYVtiKytdO2IrK319O3JldHVybiBjfXRocm93IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO31mdW5jdGlvbiBTZihhLGIpe2lmKHJhKGEpKXRyeXt2KGEsYix2b2lkIDApfWNhdGNoKGMpe2lmKGMhPT1QZil0aHJvdyBjO31lbHNle2E9UmYoYSk7dHJ5e2Zvcig7OyliLmNhbGwodm9pZCAwLGEubmV4dCgpLHZvaWQgMCxhKX1jYXRjaChjKXtpZihjIT09UGYpdGhyb3cgYzt9fX1mdW5jdGlvbiBUZihhLGIpe3ZhciBjPTE7U2YoYSxmdW5jdGlvbihkKXtjPWIuY2FsbCh2b2lkIDAsYyxkKX0pO3JldHVybiBjfWZ1bmN0aW9uIFVmKGEsYil7dmFyIGM9UmYoYSk7YT1uZXcgUWY7YS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGQ9Yy5uZXh0KCk7aWYoYi5jYWxsKHZvaWQgMCxkLHZvaWQgMCxjKSlyZXR1cm4gZDt0aHJvdyBQZjt9O3JldHVybiBhfWZ1bmN0aW9uIFZmKGEpe3ZhciBiPVJmKGEpO2E9bmV3IFFmO3ZhciBjPTEwMDthLm5leHQ9ZnVuY3Rpb24oKXtpZigwPGMtLSlyZXR1cm4gYi5uZXh0KCk7dGhyb3cgUGY7fTtyZXR1cm4gYX07ZnVuY3Rpb24gV2YoYSxiKXt0aGlzLmM9Yjt0aGlzLmI9bnVsbD09YTt0aGlzLmE9YX1yKFdmLFFmKTtXZi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe2lmKHRoaXMuYil0aHJvdyBQZjt2YXIgYT10aGlzLmF8fG51bGw7dGhpcy5iPW51bGw9PWE7dmFyIGI7aWYoYj1hKXtiPXRoaXMuYztpZihwYihhLFwicGFyZW50RWxlbWVudFwiKSYmbnVsbCE9YS5wYXJlbnRFbGVtZW50JiZhIT1hLnBhcmVudEVsZW1lbnQpdmFyIGM9YS5wYXJlbnRFbGVtZW50O2Vsc2UgaWYoYil7dmFyIGQ9dm9pZCAwPT09ZD9PZjpkO2lmKGQoYSkpdHJ5e3ZhciBlPUgoYSksZj1lJiZjYyhlKSxnPWYmJmYuZnJhbWVFbGVtZW50O2M9bnVsbD09Zz9udWxsOmd9Y2F0Y2goaCl7Yz1udWxsfWVsc2UgYz1udWxsfWVsc2UgYz1udWxsO2I9Y310aGlzLmE9YjtyZXR1cm4gYX07ZnVuY3Rpb24gWGYoYSl7dmFyIGI9MTthPVZmKG5ldyBXZihhLCEwKSk7YT1VZihhLGZ1bmN0aW9uKCl7cmV0dXJuIDA8Yn0pO3JldHVybiBUZihhLGZ1bmN0aW9uKGMsZCl7dmFyIGU9MTtpZihwYihkLFwic3R5bGVcIikmJmQuc3R5bGUpe3ZhciBmPXBhcnNlRmxvYXQ7YTp7dmFyIGc9SChkKTtpZihnLmRlZmF1bHRWaWV3JiZnLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUmJihnPWcuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwpKSl7Zz1nLm9wYWNpdHl8fGcuZ2V0UHJvcGVydHlWYWx1ZShcIm9wYWNpdHlcIil8fFwiXCI7YnJlYWsgYX1nPVwiXCJ9aWYoIWcpe2c9ZC5zdHlsZVtnYigpXTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIGcpZD1nO2Vsc2V7Zz1kLnN0eWxlO3ZhciBoPXpjLm9wYWNpdHk7aWYoIWgpe3ZhciBtPWdiKCk7aD1tO3ZvaWQgMD09PWQuc3R5bGVbbV0mJihtPSh2Yj9cIldlYmtpdFwiOnViP1wiTW96XCI6Qj9cIm1zXCI6c2I/XCJPXCI6bnVsbCkraWIobSksdm9pZCAwIT09ZC5zdHlsZVttXSYmKGg9bSkpO3pjLm9wYWNpdHk9aH1kPWdbaF18fFwiXCJ9Zz1kfWY9ZihnKTtcIm51bWJlclwiIT09dHlwZW9mIGZ8fGlzTmFOKGYpfHwoZT1mKX1yZXR1cm4gYj1jKmV9KX07ZnVuY3Rpb24gWWYoYSxiLGMsZCxlLGYsZyl7Zj12b2lkIDA9PT1mP3FhOmY7Zz12b2lkIDA9PT1nP1tdOmc7WC5jYWxsKHRoaXMsYyxkLGUpO3RoaXMuRGE9Yjt0aGlzLkVhPXRoaXMubD0wO3RoaXMuTj1udWxsO3RoaXMuYmI9dGhpcy5IYT1cIlwiO3RoaXMuSj1bXTt0aGlzLkY9W107dGhpcy5CYT10aGlzLiRhPVwiXCI7dGhpcy5lYj0hMTt0aGlzLlQ9NDt0aGlzLkdhPVtdO3RoaXMuUD10aGlzLm09XCJcIjt0aGlzLlhhPSExO3RoaXMuQ2E9bnVsbDt0aGlzLlI9MDt0aGlzLkk9dGhpcy5jYj16ZSgpO3RoaXMuaD0wO3RoaXMua2I9Zjt0aGlzLmxiPSExO3RoaXMuWD0tMTt0aGlzLmpiPWc7aWYoYT10aGlzLmIuYSkwPT10aGlzLmw/dGhpcy5iLmE/KGI9dGhpcy5iLmEuX2Fka18sYnx8KGI9KGI9WGModGhpcy5iLmEsXCJnb29nbGVBdkFka1wiKSkmJiEvW14wLTldLy50ZXN0KGIpP3BhcnNlSW50KGIsMTApOjApKTpiPTA6Yj10aGlzLmwsdGhpcy5sPWIsXCJcIj09dGhpcy5IYSYmKHRoaXMuSGE9U3RyaW5nKGEuX2F2aV98fFwiXCIpKSxcIlwiPT10aGlzLmJiJiYodGhpcy5iYj1hLl9hdmlob3N0Xz9TdHJpbmcoYS5fYXZpaG9zdF8pOlwicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb21cIiksdGhpcy5KLmxlbmd0aHx8KHRoaXMuSj1aZihhLFwiX2F2aWN4bl9cIixcImdvb2dsZUF2Q3huXCIpKSx0aGlzLkYubGVuZ3RofHwodGhpcy5GPVpmKGEsXCJfYXZpZW9zY3huX1wiLFwiZ29vZ2xlRU9TQXZDeG5cIikpLFwiXCI9PXRoaXMuJGEmJih0aGlzLiRhPVN0cmluZyhhLl9hdmlleHRjeG5ffHxYYyhhLFwiZ29vZ2xlQXZFeHRDeG5cIil8fFwiXCIpKSxcIlwiPT10aGlzLkJhJiYodGhpcy5CYT1TdHJpbmcoYS5fY2lkX3x8XCJcIikpLHRoaXMuZWJ8fCh0aGlzLmViPSEhYS5faW1tX3x8WWMoYSxcImdvb2dsZUF2SW1tZWRpYXRlXCIpKSxcIlwiPT10aGlzLlAmJih0aGlzLlA9U3RyaW5nKGEuX2N2dV98fFhjKGEsXCJnb29nbGVBdkNwbWF2XCIpfHxcIlwiKSksXCJcIj09dGhpcy5tJiYodGhpcy5tPVN0cmluZyhYYyhhLFwiZ29vZ2xlQXZCdHJcIil8fFwiXCIpKSx0aGlzLnRhKFN0cmluZyhhLl9hdm1ffHxYYyhhLFwiZ29vZ2xlQXZNZXRhZGF0YVwiKXx8XCJcIikpO1VjKFAuZigpLmEsdGhpcy5EYSl9cihZZixYKTtmdW5jdGlvbiBaZihhLGIsYyl7cmV0dXJuKGE9U3RyaW5nKGFbYl18fFhjKGEsYyl8fFwiXCIpKT9hLnNwbGl0KFwifFwiKTpbXX1sPVlmLnByb3RvdHlwZTtsLmlhPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuR2E7ZGVsZXRlIHRoaXMuamI7WC5wcm90b3R5cGUuaWEuY2FsbCh0aGlzKX07ZnVuY3Rpb24gJGYoYSxiLGMpe3YoYS5qYixmdW5jdGlvbihkKXtyZXR1cm4gZC5hKGEsYyxiKX0pfWwuZ2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zJiYhKDE9PXRoaXMuaHx8Mz09dGhpcy5oKX07ZnVuY3Rpb24gYWcoYSxiKXthLmg9PWJ8fDI9PWEuaHx8MT09YS5oJiYzPT1ifHwoYS5oPWIsMSE9YS5oJiYzIT1hLmh8fGEuVGEoKSl9bC5TYT1mdW5jdGlvbigpe1gucHJvdG90eXBlLlNhLmNhbGwodGhpcyk7dGhpcy5xYT1uZXcgSSgwLDAsMCwwKX07bC5UYT1mdW5jdGlvbigpe1gucHJvdG90eXBlLlRhLmNhbGwodGhpcyk7dGhpcy5xYT1uZXcgSSgwLDAsMCwwKX07bC5QYT1mdW5jdGlvbigpe3RoaXMuc3x8KE5kKCksdGhpcy5rYighMSx0aGlzLlcpLG51bGwhPXRoaXMubSYmXCJcIiE9dGhpcy5tJiYodWModGhpcy5tKSx0aGlzLm09XCJcIikpO1gucHJvdG90eXBlLlBhLmNhbGwodGhpcyk7YmcodGhpcyl9O2Z1bmN0aW9uIGJnKGEpe2lmKGEucyYmdD09dC50b3Ape3ZhciBiPXQucGFnZVlPZmZzZXQ7bnVsbCE9YiYmKGEuWD1NYXRoLm1heChiLGEuWCkpOyRmKGEsNCx7fSl9fWwudGE9ZnVuY3Rpb24oYSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhJiYwIT1hLmxlbmd0aCl7dmFyIGI9bmV3IFFjLGM9UC5mKCk7TChiLFwib21pZFwiLEopO1NjKGIsYSk7Yj1NKGIsXCJvbWlkXCIpO251bGwhPT1iJiYoYy5hLmIub21pZD1iKTthPVNjKHRoaXMuaixhKTtjPWEuc3BsaXQoXCImXCIpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07XCJ0cz0wXCI9PWQ/dGhpcy4kPSExOjA9PWQubGFzdEluZGV4T2YoXCJsYT1cIiwwKT8oZD1kLnNwbGl0KFwiPVwiKVsxXSxcIjBcIj09ZD90aGlzLlI9MjpcIjFcIj09ZCYmKHRoaXMuUj0xKSk6MD09ZC5sYXN0SW5kZXhPZihcImNyPVwiLDApP1wiMVwiPT1kLnNwbGl0KFwiPVwiKVsxXSYmKHRoaXMuZmI9ITApOlwiYWRmPTFcIj09ZCYmKHRoaXMubGI9ITApfXRoaXMuZy5hPXRoaXMub2EoKTtYLnByb3RvdHlwZS50YS5jYWxsKHRoaXMsYSl9fTtsLlVhPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPUdmKHRoaXMuYyksbT1NYXRoLmZsb29yKDEwMCp0aGlzLmcuRCk7dGhpcy5SPTI0MjUwMDw9T2UoSWYodGhpcykpPzE6MjtYLnByb3RvdHlwZS5VYS5jYWxsKHRoaXMsYSxiLGMsZCxlLGYsZyk7LTE9PXRoaXMuSSYmLTEhPXRoaXMuZy5iP3RoaXMuST10aGlzLmcuYjowPT10aGlzLkkmJjE9PXRoaXMuZy5iJiYodGhpcy5JPTEpO2E9R2YodGhpcy5jKTtiPU1hdGguZmxvb3IoMTAwKnRoaXMuZy5EKTsoIWgmJmF8fGIhPW0pJiZ0aGlzLmtiKGEsYik7dHJ5e3RoaXMuQj1YZih0aGlzLmIuYil9Y2F0Y2goayl7fWJnKHRoaXMpfTtsLm9hPWZ1bmN0aW9uKCl7cmV0dXJuIHdiPyExOjE9PXRoaXMuUn07ZnVuY3Rpb24gY2coYSxiLGMpe3ZhciBkPVtdLGU9W107ZD12b2lkIDA9PT1kP1tdOmQ7ZT12b2lkIDA9PT1lP1tdOmU7YS5KLmxlbmd0aHx8KGEuSGE9YixkJiYoYS5KPWQpLGEuQmE9dm9pZCAwPT09Yz9cIlwiOmMpOyFhLkYubGVuZ3RoJiZlJiYoYS5GPWUpfWZ1bmN0aW9uIGRnKGEpe2lmKGEuQ2EpcmV0dXJuIGEuQ2E7dmFyIGI9e307cmV0dXJuIGIucnN0PXZvaWQgMCxiLmRsdD12b2lkIDAsYi5ycHQ9dm9pZCAwLGIuaXNkPXZvaWQgMCxiLm1zZD0wPD1hLlg/YS5YOnZvaWQgMCxifWwub2I9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZnVuY3Rpb24gZWcoYSxiLGMsZCl7ZGYuY2FsbCh0aGlzLGEsYixjLGQpfXIoZWcsZGYpO2VnLnByb3RvdHlwZS5oYj1mdW5jdGlvbihhKXtyZXR1cm4gUmUoYSx0aGlzLmwsdGhpcy5jLDE9PU0odGhpcy5BLFwib2RcIikpfTtlZy5wcm90b3R5cGUuZGE9ZnVuY3Rpb24oKXt0aGlzLnRpbWVzdGFtcD1TKCk7dGhpcy5KYSgpO3RoaXMuWWEoKTt2YXIgYT10aGlzLmE7dmFyIGI9dGhpcy5sO2E9YS5sZWZ0PD1iLnJpZ2h0JiZiLmxlZnQ8PWEucmlnaHQmJmEudG9wPD1iLmJvdHRvbSYmYi50b3A8PWEuYm90dG9tP25ldyBJKE1hdGgubWF4KGEudG9wLGIudG9wKSxNYXRoLm1pbihhLnJpZ2h0LGIucmlnaHQpLE1hdGgubWluKGEuYm90dG9tLGIuYm90dG9tKSxNYXRoLm1heChhLmxlZnQsYi5sZWZ0KSk6bmV3IEkoMCwwLDAsMCk7Yj1hLnRvcD49YS5ib3R0b218fGEubGVmdD49YS5yaWdodD9uZXcgSSgwLDAsMCwwKTphO2E9dGhpcy5iLmM7dmFyIGM9MCxkPTAsZT0wOzA8KHRoaXMuYS5ib3R0b20tdGhpcy5hLnRvcCkqKHRoaXMuYS5yaWdodC10aGlzLmEubGVmdCkmJih0aGlzLmhiKGIpP2I9bmV3IEkoMCwwLDAsMCk6KGM9VS5mKCkubCxlPW5ldyBJKDAsYy5oZWlnaHQsYy53aWR0aCwwKSxjPU5lKGIsdGhpcy5hKSxkPU5lKGIsVS5mKCkuYSksZT1OZShiLGUpKSk7Yj1iLnRvcD49Yi5ib3R0b218fGIubGVmdD49Yi5yaWdodD9uZXcgSSgwLDAsMCwwKTpyYyhiLC10aGlzLmEubGVmdCwtdGhpcy5hLnRvcCk7TGUoKXx8KGQ9Yz0wKTt0aGlzLmg9bmV3IFRlKGEsdGhpcy5hLGIsYyxkLHRoaXMudGltZXN0YW1wLGUpfTtlZy5wcm90b3R5cGUuRz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmIuRygpfTtmdW5jdGlvbiBmZyhhKXt2YXIgYj1bXTtnZyhuZXcgaGcsYSxiKTtyZXR1cm4gYi5qb2luKFwiXCIpfWZ1bmN0aW9uIGhnKCl7fWZ1bmN0aW9uIGdnKGEsYixjKXtpZihudWxsPT1iKWMucHVzaChcIm51bGxcIik7ZWxzZXtpZihcIm9iamVjdFwiPT10eXBlb2YgYil7aWYoQXJyYXkuaXNBcnJheShiKSl7dmFyIGQ9YjtiPWQubGVuZ3RoO2MucHVzaChcIltcIik7Zm9yKHZhciBlPVwiXCIsZj0wO2Y8YjtmKyspYy5wdXNoKGUpLGdnKGEsZFtmXSxjKSxlPVwiLFwiO2MucHVzaChcIl1cIik7cmV0dXJufWlmKGIgaW5zdGFuY2VvZiBTdHJpbmd8fGIgaW5zdGFuY2VvZiBOdW1iZXJ8fGIgaW5zdGFuY2VvZiBCb29sZWFuKWI9Yi52YWx1ZU9mKCk7ZWxzZXtjLnB1c2goXCJ7XCIpO2U9XCJcIjtmb3IoZCBpbiBiKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGQpJiYoZj1iW2RdLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGYmJihjLnB1c2goZSksaWcoZCxjKSxjLnB1c2goXCI6XCIpLGdnKGEsZixjKSxlPVwiLFwiKSk7Yy5wdXNoKFwifVwiKTtyZXR1cm59fXN3aXRjaCh0eXBlb2YgYil7Y2FzZSBcInN0cmluZ1wiOmlnKGIsYyk7YnJlYWs7Y2FzZSBcIm51bWJlclwiOmMucHVzaChpc0Zpbml0ZShiKSYmIWlzTmFOKGIpP1N0cmluZyhiKTpcIm51bGxcIik7YnJlYWs7Y2FzZSBcImJvb2xlYW5cIjpjLnB1c2goU3RyaW5nKGIpKTticmVhaztjYXNlIFwiZnVuY3Rpb25cIjpjLnB1c2goXCJudWxsXCIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoXCJVbmtub3duIHR5cGU6IFwiK3R5cGVvZiBiKTt9fX12YXIgamc9eydcIic6J1xcXFxcIicsXCJcXFxcXCI6XCJcXFxcXFxcXFwiLFwiL1wiOlwiXFxcXC9cIixcIlxcYlwiOlwiXFxcXGJcIixcIlxcZlwiOlwiXFxcXGZcIixcIlxcblwiOlwiXFxcXG5cIixcIlxcclwiOlwiXFxcXHJcIixcIlxcdFwiOlwiXFxcXHRcIixcIlxceDBCXCI6XCJcXFxcdTAwMGJcIn0sa2c9L1xcdWZmZmYvLnRlc3QoXCJcXHVmZmZmXCIpPy9bXFxcXFwiXFx4MDAtXFx4MWZcXHg3Zi1cXHVmZmZmXS9nOi9bXFxcXFwiXFx4MDAtXFx4MWZcXHg3Zi1cXHhmZl0vZztmdW5jdGlvbiBpZyhhLGIpe2IucHVzaCgnXCInLGEucmVwbGFjZShrZyxmdW5jdGlvbihjKXt2YXIgZD1qZ1tjXTtkfHwoZD1cIlxcXFx1XCIrKGMuY2hhckNvZGVBdCgwKXw2NTUzNikudG9TdHJpbmcoMTYpLnN1YnN0cigxKSxqZ1tjXT1kKTtyZXR1cm4gZH0pLCdcIicpfTtmdW5jdGlvbiBsZygpe3RoaXMua2V5PVwiZ29vZ19hZHNwZWVkXCI7dGhpcy5jPVszLDRdO3RoaXMuYj1udWxsfWxnLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEsYixjKXtpZighdyh0aGlzLmMsYyl8fCFnZChuZXcgZmQoYS5sLGEuTikpKXJldHVybiExO2M9e307Yz0oY1swXT10aGlzLmtleSxjWzQwXT1mZyhkZyhhKSksYyk7dmFyIGQ7aWYoZD10aGlzLmIpYTp7ZD10aGlzLmI7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGMpfHxkW2VdIT09Y1tlXSl7ZD0hMTticmVhayBhfWZvcih2YXIgZiBpbiBjKWlmKCEoZiBpbiBkKSl7ZD0hMTticmVhayBhfWQ9ITB9aWYoZClyZXR1cm4hMTt0aGlzLmI9YztlPXt9O3goZSxjLGIpO3JldHVybiBtZyhhLHtWYTp7fSxOYTplfSl9O2Z1bmN0aW9uIG5nKCl7dGhpcy5rZXk9XCJnb29nX3VwZGF0ZV9kYXRhXCI7dGhpcy5iPTA7dGhpcy5jPSExfW5nLnByb3RvdHlwZS5hPWZ1bmN0aW9uKGEsYixjKXtpZihjIT10aGlzLmJ8fCFnZChuZXcgZmQoYS5sLGEuTikpKXJldHVybiExO2M9MT09YS5UO3ZhciBkPUdmKGEuYyksZT17fSxmPXt9O2I9e05hOihlWzBdPXRoaXMua2V5LGVbNDBdPWZnKGRnKGEpKSxlKSxWYTpPYmplY3QuYXNzaWduKHt9LGIsKGYucj1iLnIsZikpfTtpZihjKXJldHVybiBkJiYhdGhpcy5jPyh0aGlzLmM9ZCxtZyhhLGIpKTohMTt0aGlzLmM9ZDtyZXR1cm4gbWcoYSxiKX07ZnVuY3Rpb24gb2coYSl7bmcuY2FsbCh0aGlzLGEpO3RoaXMua2V5PVwiZ29vZ19pbWFnZV9yZXF1ZXN0XCI7dGhpcy5iPTJ9cihvZyxuZyk7ZnVuY3Rpb24gcGcoYSl7bmcuY2FsbCh0aGlzLGEpO3RoaXMua2V5PVwiZ29vZ19pbWFnZV9yZXF1ZXN0XCI7dGhpcy5iPTF9cihwZyxuZyk7cGcucHJvdG90eXBlLmE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSFhLlhhO2lmKEdmKGEuYykmJmEuJHx8ZCl7aWYoYj1uZy5wcm90b3R5cGUuYS5jYWxsKHRoaXMsYSxiLGMpKWlmKEdmKGEuYyl8fChhLlhhPSEwKSxHZihhLmMpfHxhLiQpYS4kPSExO3JldHVybiBifXJldHVybiExfTtmdW5jdGlvbiBxZygpe3RoaXMuYj1bXTt0aGlzLmE9W119ZnVuY3Rpb24gcmcoKXt2YXIgYT1zZztyZXR1cm4gMD09YS5iLmxlbmd0aD9hLmE6MD09YS5hLmxlbmd0aD9hLmI6RGEoYS5hLGEuYil9dShxZyk7dmFyIHNnPXFnLmYoKTtmdW5jdGlvbiB0Zygpe3RoaXMuYT10aGlzLmI9bnVsbH1mdW5jdGlvbiB1ZyhhLGIpe2Z1bmN0aW9uIGMoZCxlKXtiKGQsZSl9aWYobnVsbD09YS5iKXJldHVybiExO2EuYT1DYShhLmIsZnVuY3Rpb24oZCl7cmV0dXJuIG51bGwhPWQmJmQubmIoKX0pO2EuYSYmKGEuYS5tYihjKT8kZShhLmEuYSk6YihhLmEuYS5lYSgpLGEuYSkpO3JldHVybiBudWxsIT1hLmF9dSh0Zyk7ZnVuY3Rpb24gdmcoYSl7YT13ZyhhKTtmZi5jYWxsKHRoaXMsYS5sZW5ndGg/YVthLmxlbmd0aC0xXTpuZXcgVihELDApKTt0aGlzLmM9YTt0aGlzLmI9bnVsbH1yKHZnLGZmKTtsPXZnLnByb3RvdHlwZTtsLkc9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5iP3RoaXMuYjp0aGlzLmEpLkcoKX07bC5NPWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuYj90aGlzLmI6dGhpcy5hKS5NKCl9O2wuTz1mdW5jdGlvbigpe3JldHVybih0aGlzLmI/dGhpcy5iOnRoaXMuYSkuTygpfTtsLm1iPWZ1bmN0aW9uKGEpe3ZhciBiPSExO3YodGhpcy5jLGZ1bmN0aW9uKGMpe2MubWEoKSYmKGI9ITApfSk7YiYmKHRoaXMuZz1hLFhlKHRoaXMuYSx0aGlzKSk7cmV0dXJuIGJ9O2wuSz1mdW5jdGlvbigpe3YodGhpcy5jLGZ1bmN0aW9uKGEpe2EucGEoKTthLksoKX0pO2ZmLnByb3RvdHlwZS5LLmNhbGwodGhpcyl9O2wubmI9ZnVuY3Rpb24oKXtyZXR1cm4gQmEodGhpcy5jLGZ1bmN0aW9uKGEpe3JldHVybiBhLlJhKCl9KX07bC5PYT1mdW5jdGlvbigpe3JldHVybiBCYSh0aGlzLmMsZnVuY3Rpb24oYSl7cmV0dXJuIGEuYmEoKX0pfTtsLlphPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IGVnKGEsdGhpcy5hLGIsYyl9O2wuVT1mdW5jdGlvbihhKXt0aGlzLmI9YS5ifTtmdW5jdGlvbiB3ZyhhKXtpZighYS5sZW5ndGgpcmV0dXJuW107YT15YShhLGZ1bmN0aW9uKGMpe3JldHVybiBudWxsIT1jJiZjLlJhKCl9KTtmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylYZShhW2ItMV0sYVtiXSk7cmV0dXJuIGF9O3ZhciB4Zz17dGhyZXNob2xkOlswLC4zLC41LC43NSwxXX07ZnVuY3Rpb24geWcoYSxiLGMsZCl7ZGYuY2FsbCh0aGlzLGEsYixjLGQpO3RoaXMucz10aGlzLm09dGhpcy5pPXRoaXMuaj10aGlzLmc9bnVsbH1yKHlnLGVnKTtsPXlnLnByb3RvdHlwZTtsLnBiPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLnN8fCh0aGlzLnM9UygpKTtpZihkZSgyOTgsZnVuY3Rpb24oKXtyZXR1cm4gemcoYSl9KSlyZXR1cm4hMDtXKHRoaXMuYixcIm1zZlwiKTtyZXR1cm4hMX07bC51YT1mdW5jdGlvbigpe2lmKHRoaXMuZyYmdGhpcy5jKXRyeXt0aGlzLmcudW5vYnNlcnZlKHRoaXMuYyksdGhpcy5qPyh0aGlzLmoudW5vYnNlcnZlKHRoaXMuYyksdGhpcy5qPW51bGwpOnRoaXMuaSYmKHRoaXMuaS5kaXNjb25uZWN0KCksdGhpcy5pPW51bGwpfWNhdGNoKGEpe319O2Z1bmN0aW9uIEFnKGEpe3JldHVybiBhLmcmJmEuZy50YWtlUmVjb3Jkcz9hLmcudGFrZVJlY29yZHMoKTpbXX1mdW5jdGlvbiB6ZyhhKXtpZighYS5jKXJldHVybiExO3ZhciBiPWEuYyxjPWEuYi5iLm8sZD1QLmYoKS5nLmE7YS5nPW5ldyBjLkludGVyc2VjdGlvbk9ic2VydmVyKEFkKGQsZnVuY3Rpb24oZSl7cmV0dXJuIEJnKGEsZSl9KSx4Zyk7ZD1BZChkLGZ1bmN0aW9uKCl7YS5nLnVub2JzZXJ2ZShiKTthLmcub2JzZXJ2ZShiKTtCZyhhLEFnKGEpKX0pO2MuUmVzaXplT2JzZXJ2ZXI/KGEuaj1uZXcgYy5SZXNpemVPYnNlcnZlcihkKSxhLmoub2JzZXJ2ZShiKSk6Yy5NdXRhdGlvbk9ic2VydmVyJiYoYS5pPW5ldyB0Lk11dGF0aW9uT2JzZXJ2ZXIoZCksYS5pLm9ic2VydmUoYix7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSkpO2EuZy5vYnNlcnZlKGIpO0JnKGEsQWcoYSkpO3JldHVybiEwfWZ1bmN0aW9uIEJnKGEsYil7dHJ5e2lmKGIubGVuZ3RoKXthLm18fChhLm09UygpKTt2YXIgYz1DZyhiKSxkPUJjKGEuYyxhLmIuYi5vKSxlPWQueCxmPWQueTthLmE9ZWYoYSxuZXcgSShNYXRoLnJvdW5kKGYpLE1hdGgucm91bmQoZSkrYy5ib3VuZGluZ0NsaWVudFJlY3Qud2lkdGgsTWF0aC5yb3VuZChmKStjLmJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQsTWF0aC5yb3VuZChlKSkpO3ZhciBnPXllKGMuaW50ZXJzZWN0aW9uUmVjdCk7YS5sPXJjKGcsYS5hLmxlZnQtZy5sZWZ0LGEuYS50b3AtZy50b3ApfX1jYXRjaChoKXthLnVhKCksZmUoMjk5LGgpfX1mdW5jdGlvbiBDZyhhKXtyZXR1cm4gQWEoYSxmdW5jdGlvbihiLGMpe3JldHVybiBiLnRpbWU+Yy50aW1lP2I6Y30sYVswXSl9bC5kYT1mdW5jdGlvbigpe3ZhciBhPUFnKHRoaXMpOzA8YS5sZW5ndGgmJkJnKHRoaXMsYSk7ZWcucHJvdG90eXBlLmRhLmNhbGwodGhpcyl9O2wuSmE9ZnVuY3Rpb24oKXt9O2wuaGI9ZnVuY3Rpb24oKXtyZXR1cm4hMX07bC5ZYT1mdW5jdGlvbigpe307bC5NPWZ1bmN0aW9uKCl7dmFyIGE9e307cmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcy5iLk0oKSwoYS5uaW90X29icz10aGlzLnMsYS5uaW90X2Niaz10aGlzLm0sYSkpfTtsLkc9ZnVuY3Rpb24oKXtyZXR1cm5cIm5pb1wifTtmdW5jdGlvbiBEZyhhKXthPXZvaWQgMD09PWE/RDphO2ZmLmNhbGwodGhpcyxuZXcgVihhLDIpKX1yKERnLGZmKTtEZy5wcm90b3R5cGUuRz1mdW5jdGlvbigpe3JldHVyblwibmlvXCJ9O0RnLnByb3RvdHlwZS5PYT1mdW5jdGlvbigpe3ZhciBhPXo7cmV0dXJuIGEmJjA8PWEudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiY29iYWx0XCIpPyExOiFVLmYoKS5nJiZudWxsIT10aGlzLmEuYi5vLkludGVyc2VjdGlvbk9ic2VydmVyfTtEZy5wcm90b3R5cGUuWmE9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgeWcoYSx0aGlzLmEsYixjKX07ZnVuY3Rpb24gRWcoKXt2YXIgYT1GZygpO1YuY2FsbCh0aGlzLEQudG9wLGEsXCJnZW9cIil9cihFZyxWKTtFZy5wcm90b3R5cGUuTGE9ZnVuY3Rpb24oKXtyZXR1cm4gVS5mKCkuYX07RWcucHJvdG90eXBlLmJhPWZ1bmN0aW9uKCl7dmFyIGE9RmcoKTtjZih0aGlzLGEpO3JldHVybiAyPT1hfTtmdW5jdGlvbiBGZygpe1AuZigpO3ZhciBhPVUuZigpO3JldHVybiBhLmh8fGEuZz8wOjJ9dShFZyk7ZnVuY3Rpb24gR2coKXt9dShHZyk7ZnVuY3Rpb24gSGcoKXt0aGlzLmRvbmU9ITE7dGhpcy5hPXt5YjowLHhiOjAsJGI6MCxhYjowLHNhOi0xLENiOjAsQmI6MCxEYjowfTt0aGlzLmk9bnVsbDt0aGlzLmo9ITE7dGhpcy5oPVwiXCI7dGhpcy5iPW51bGw7dGhpcy5sPTA7dGhpcy5nPW5ldyBVZSh0aGlzKX1mdW5jdGlvbiBJZygpe3ZhciBhPVk7aWYoIWEuail7YS5qPSEwO2Zvcih2YXIgYj1yZygpLGMsZD0wO2Q8Yi5sZW5ndGg7KytkKWM9YltkXSxjLmIuYiYmTWYoYyk7SmcoYSxmdW5jdGlvbihlKXtmb3IodmFyIGY9W10sZz0wO2c8YXJndW1lbnRzLmxlbmd0aDsrK2cpZltnXT1hcmd1bWVudHNbZ107cmV0dXJuIGEuYy5hcHBseShhLGhhKGYpKX0pO2EuYygpfX1IZy5wcm90b3R5cGUudGI9ZnVuY3Rpb24oKXtLZyh0aGlzLHJnKCksITEpfTtmdW5jdGlvbiBMZygpe0dnLmYoKTt2YXIgYT10Zy5mKCk7bnVsbCE9YS5hJiZhLmEuYT8kZShhLmEuYSk6SWUoVS5mKCkpfWZ1bmN0aW9uIEtnKGEsYixjKXtpZighYS5kb25lJiYoYS5nLmNhbmNlbCgpLDAhPWIubGVuZ3RoKSl7YS5iPW51bGw7dHJ5e0xnKCk7dmFyIGQ9UygpLGU9UC5mKCk7ZS5sPWQ7aWYobnVsbCE9dGcuZigpLmEpZm9yKGU9MDtlPGIubGVuZ3RoO2UrKylLZihiW2VdLGQsYyk7ZWxzZSBlZShhLmgse3N0cmF0ZWd5X25vdF9zZWxlY3RlZDoxLGJpbjplLmJ9KTtmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKUxmKGJbZF0pOysrYS5hLmFiO01nKGEpfWZpbmFsbHl7Yz92KGIsZnVuY3Rpb24oZil7cmV0dXJuIGYuU2EoKX0pOlZlKGEuZyl9fX1mdW5jdGlvbiBKZyhhLGIpe2lmKCFhLmkpe2I9JGQoMTQyLGIpO08oKTt2YXIgYztDLnZpc2liaWxpdHlTdGF0ZT9jPVwidmlzaWJpbGl0eWNoYW5nZVwiOkMubW96VmlzaWJpbGl0eVN0YXRlP2M9XCJtb3p2aXNpYmlsaXR5Y2hhbmdlXCI6Qy53ZWJraXRWaXNpYmlsaXR5U3RhdGUmJihjPVwid2Via2l0dmlzaWJpbGl0eWNoYW5nZVwiKTtjJiZXYihDLGMsYix7Y2FwdHVyZTohMX0pJiYoYS5pPWIpfX1IZy5wcm90b3R5cGUuYz1mdW5jdGlvbigpe3ZhciBhPUxlKCksYj1TKCk7YT8obWV8fChoZT1iLHYoc2cuYixmdW5jdGlvbihjKXtyZXR1cm4gYy5jLmkoYiwhYy5oKCkpfSkpLG1lPSEwKToodGhpcy5sPU5nKHRoaXMsYiksbWU9ITEsdihzZy5iLGZ1bmN0aW9uKGMpe2MuZ2EoKSYmYy5jLmgoYil9KSk7S2codGhpcyxyZygpLCFhKX07ZnVuY3Rpb24gT2coYSxiLGMpe2lmKCFhLmJ8fGMpe2M9Yi5kb2N1bWVudDt2YXIgZD0tMSxlPVMoKTstMT09YS5hLnNhJiYoZD1lKTt2YXIgZj1VLmYoKSxnPVAuZigpLGg9UmMoZy5hKSxtPXJnKCk7dHJ5e2lmKDA8bS5sZW5ndGgpe3ZhciBrPWYuYTtrJiYoaC5icz1bb2MoaykscGMoayldKTt2YXIgcD1mLmM7cCYmKGgucHM9W3Aud2lkdGgscC5oZWlnaHRdKTtiLnNjcmVlbiYmKGguc2NzPVtiLnNjcmVlbi53aWR0aCxiLnNjcmVlbi5oZWlnaHRdKX1lbHNlIGgudXJsPWVuY29kZVVSSUNvbXBvbmVudChiLmxvY2F0aW9uLmhyZWYuc3Vic3RyaW5nKDAsNTEyKSksYy5yZWZlcnJlciYmKGgucmVmZXJyZXI9ZW5jb2RlVVJJQ29tcG9uZW50KGMucmVmZXJyZXIuc3Vic3RyaW5nKDAsNTEyKSkpO2gudHQ9ZDtoLnB0PS0xO2guYmluPWcuYjt2b2lkIDAhPT1iLmdvb2dsZV9vc2RfbG9hZF9wdWJfcGFnZV9leHAmJihoLm9scHA9Yi5nb29nbGVfb3NkX2xvYWRfcHViX3BhZ2VfZXhwKTtoLmRlYj1bMSxhLmEueWIsYS5hLnhiLGEuYS5hYixhLmEuc2EsdWUsYS5nLmIsYS5hLkNiLGEuYS5CYixhLmEuRGJdLmpvaW4oXCItXCIpO2gudHZ0PU5nKGEsZSk7Zi5nJiYoaC5pbmFwcD0xKTtpZihudWxsIT09YiYmYiE9Yi50b3ApezA8bS5sZW5ndGgmJihoLmlmcmFtZV9sb2M9ZW5jb2RlVVJJQ29tcG9uZW50KGIubG9jYXRpb24uaHJlZi5zdWJzdHJpbmcoMCw1MTIpKSk7dmFyIG49Zi5iO2guaXM9W29jKG4pLHBjKG4pXX19Y2F0Y2goRyl7aC5lcnJvcj0xfWEuYj1ofWE9VWEoYS5iKTtiPVAuZigpLmc7dmFyIHE7aWYoMT09TShiLmMsXCJwcmZcIikpe2s9bmV3IHlkO3A9Yi5hO249MDstMTxwLmEmJihuPXAuZy5hLmEoKS1wLmEpO2s9UmIoaywxLHAuYytuKTtwPWIuYTtrPVJiKGssNSwtMTxwLmE/cC5iKzE6cC5iKTtrPVJiKGssMixiLmIuYS5nKCkpO2s9UmIoaywzLGIuYi5hLmMoKSk7az1SYihrLDQsYi5iLmEuYigpKTtiPXt9O3A9bmV3IEpiO249UGIoaywxKTtuPW51bGw9PW4/bjorbjtuPW51bGw9PW4/MDpuO2lmKDAhPT1uJiYoYz1uLG51bGwhPWMpKXttYihwLmEsOSk7bj1wLmE7ZT1jO2U9KGM9MD5lPzE6MCk/LWU6ZTtpZigwPT09ZSlrYj0wPDEvZT8wOjIxNDc0ODM2NDgsamI9MDtlbHNlIGlmKGlzTmFOKGUpKWtiPTIxNDc0ODM2NDcsamI9NDI5NDk2NzI5NTtlbHNlIGlmKDEuNzk3NjkzMTM0ODYyMzE1N0UzMDg8ZSlrYj0oYzw8MzF8MjE0NjQzNTA3Mik+Pj4wLGpiPTA7ZWxzZSBpZigyLjIyNTA3Mzg1ODUwNzIwMTRFLTMwOD5lKWUvPU1hdGgucG93KDIsLTEwNzQpLGtiPShjPDwzMXxlLzQyOTQ5NjcyOTYpPj4+MCxqYj1lPj4+MDtlbHNle2Y9ZTtkPTA7aWYoMjw9Zilmb3IoOzI8PWYmJjEwMjM+ZDspZCsrLGYvPTI7ZWxzZSBmb3IoOzE+ZiYmLTEwMjI8ZDspZio9MixkLS07ZSo9TWF0aC5wb3coMiwtZCk7a2I9KGM8PDMxfGQrMTAyMzw8MjB8MTA0ODU3NiplJjEwNDg1NzUpPj4+MDtqYj00NTAzNTk5NjI3MzcwNDk2KmU+Pj4wfW5iKG4samIpO25iKG4sa2IpfW49UWIoaywyKTswIT09biYmbnVsbCE9biYmS2IocCwyLG4pO249UWIoaywzKTswIT09biYmbnVsbCE9biYmS2IocCwzLG4pO249UWIoayw0KTswIT09biYmbnVsbCE9biYmS2IocCw0LG4pO249UWIoayw1KTtpZigwIT09biYmbnVsbCE9biYmbnVsbCE9bilpZihtYihwLmEsNDApLGs9cC5hLDA8PW4pbWIoayxuKTtlbHNle2ZvcihjPTA7OT5jO2MrKylrLmEucHVzaChuJjEyN3wxMjgpLG4+Pj03O2suYS5wdXNoKDEpfWs9bmV3IFVpbnQ4QXJyYXkocC5hLmxlbmd0aCgpKTtjPXAuYjtkPWMubGVuZ3RoO2ZvcihlPW49MDtlPGQ7ZSsrKWY9Y1tlXSxrLnNldChmLG4pLG4rPWYubGVuZ3RoO2M9cC5hO2Q9Yy5hO2MuYT1bXTtrLnNldChkLG4pO3AuYj1ba107dm9pZCAwPT09cSYmKHE9MCk7aWYoIUliKWZvcihJYj17fSxwPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIi5zcGxpdChcIlwiKSxuPVtcIisvPVwiLFwiKy9cIixcIi1fPVwiLFwiLV8uXCIsXCItX1wiXSxjPTA7NT5jO2MrKylmb3IoZD1wLmNvbmNhdChuW2NdLnNwbGl0KFwiXCIpKSxIYltjXT1kLGU9MDtlPGQubGVuZ3RoO2UrKylmPWRbZV0sdm9pZCAwPT09SWJbZl0mJihJYltmXT1lKTtxPUhiW3FdO3A9W107Zm9yKG49MDtuPGsubGVuZ3RoO24rPTMpZz1rW25dLGg9KGM9bisxPGsubGVuZ3RoKT9rW24rMV06MCxmPShkPW4rMjxrLmxlbmd0aCk/a1tuKzJdOjAsZT1nPj4yLGc9KGcmMyk8PDR8aD4+NCxoPShoJjE1KTw8MnxmPj42LGYmPTYzLGR8fChmPTY0LGN8fChoPTY0KSkscC5wdXNoKHFbZV0scVtnXSxxW2hdfHxcIlwiLHFbZl18fFwiXCIpO3E9KGIucGY9cC5qb2luKFwiXCIpLGIpfWVsc2UgcT17fTt4KGEscSk7cmV0dXJuIGF9ZnVuY3Rpb24gUGcoKXt2KHJnKCksZnVuY3Rpb24oYSl7YS5iLmEmJkdnLmYoKX0pfWZ1bmN0aW9uIE1nKGEpe3ZhciBiPVAuZigpLGM9MT09PU0oYi5hLFwibGxwXCIpO1wib3NkXCI9PWEuaCYmdihzZy5hLGZ1bmN0aW9uKGQpe2lmKGMpe2lmKDE9PWIuYnx8R2YoZC5jKXx8ZC51KXt2YXIgZT17fTskZihkLDAsKGUucj12b2lkIDAsZSkpfX1lbHNlIGU9e30sJGYoZCwwLChlLnI9dm9pZCAwLGUpKX0pfWZ1bmN0aW9uIE5nKGEsYil7YT1hLmw7bWUmJihhKz1iLWhlKTtyZXR1cm4gYX1mdW5jdGlvbiBRZyhhKXtyZXR1cm4oYT1hLm1hdGNoKC9bJlxcPztdYWRmPShbMC05XSspLykpJiYyPT1hLmxlbmd0aD9wYXJzZUludChhWzFdLDEwKTowfWZ1bmN0aW9uIFJnKCl7dmFyIGE9WTt2YXIgYj12b2lkIDA9PT1iP2Z1bmN0aW9uKCl7cmV0dXJue319OmI7YWUuaD1cImF2LWpzXCI7V2QuYT0uMDE7Y2UoW2Z1bmN0aW9uKGMpe3ZhciBkPVAuZigpLGU9e307eChjLChlLmJpbj1kLmIsZS50eXBlPVwiZXJyb3JcIixlKSxSYyhkLmEpLE9nKGEsRCksYigpKTtpZihkPXJmKCkpZT17fSx4KGMsKGUudj1lbmNvZGVVUklDb21wb25lbnQoZCksZSkpfV0pfWZ1bmN0aW9uIFNnKGEpe3ZhciBiPW5ldyBUZztzd2l0Y2goYSl7Y2FzZSAwOmNhc2UgNTpyZXR1cm5bXTtkZWZhdWx0OnJldHVybiBhPTQ9PT1QLmYoKS5iLFtuZXcgbmcoYiksbmV3IHBnKGIpLG5ldyBvZyhiKV0uY29uY2F0KGhhKGE/W106W25ldyBsZ10pKX19dShIZyk7dmFyIFk9SGcuZigpO2Z1bmN0aW9uIFRnKCl7fWZ1bmN0aW9uIG1nKGEsYil7Yj1ifHx7fTt2YXIgYz12b2lkIDA9PT1iLlZhP3t9OmIuVmE7Yj12b2lkIDA9PT1iLk5hP3t9OmIuTmE7dmFyIGQ9Yi5yLGU9Y1swXSxmPU9nKFksRWMoKSwhMSksZz17fTt4KGcsZixjKTtjPXt9O3ZhciBoPWc7aD12b2lkIDA9PT1oP3t9Omg7Zz17fTt2YXIgbT1VLmYoKTtmPVJjKGEuaik7dmFyIGs9bS5qLHA9SWYoYSk7Zi5wPVtwLnRvcCtrLnkscC5sZWZ0K2sueCxwLmJvdHRvbStrLnkscC5yaWdodCtrLnhdO2s9YS5jO2YudG9zPUFmKGsuYSk7Zi5tdG9zPUNmKGsuYSk7Zi5tY3Z0PWsuYy5hO2YucnM9YS5aOyhwPTU9PWEuWil8fChmLmh0PWEuRmEpOzA8PWEuYWEmJihmLnRmcz1hLmFhLGYudGxzPWEucmIpO2YubWM9dmUoay5iKTtmLmx0ZT12ZShhLlcpO2YuYmFzPWEuY2I7Zi5iYWM9YS5JO20uaCYmKGZbXCJpZlwiXT1hLnU/MDoxKTtmLm1ldD1hLmIuYztwJiZhLkRhJiYoZi5yZXE9ZW5jb2RlVVJJQ29tcG9uZW50KGEuRGEpLnN1YnN0cmluZygwLDEwMCkpO2Eub2EoKSYmKGYubGE9XCIxXCIpO2YuYXZtcz1hLmE/YS5hLkcoKTpcIm5zXCI7YS5hJiZ4KGYsYS5hLk0oKSk7MCE9YS5oJiYoZi5tZD1hLmgpO2YuYnRyPW51bGwhPWEubSYmXCJcIiE9YS5tPzE6MDtmLmNwbWF2PW51bGwhPWEuUCYmbnVsbCE9YS5QLm1hdGNoKC9cXC9wYWdlYWRcXC9hZHZpZXdcXD8uKmFpPS4qJnZ0PVxcZCsvaSk/MTowO2YubG09YS5UO3goZixkZyhhKSk7aCYmeChmLGgpO2YuYWRrPWEubDthLmxiJiZhLkVhJiYoZi5hZGY9YS5FYSk7aD1hLnU7bT1QLmYoKTshZCYmaCYmbS5oJiYoZD1tLmgpO2QmJihmLnI9ZCk7MD09PWEuQiYmKGYuaW52aXM9MSk7ZD1xZihmKS5qb2luKFwiJlwiKTtnWzNdPWQ7Z1sxMV09aDtnWzI5XT1QLmYoKS5iO2dbMF09ZTtnWzddPWEuZy5EO2dbOV09QWUoYS5xYSk7Z1syOF09YS5aO2dbMzJdPWEuYT9hLmEuRygpOlwibnNcIjtnWzVdPUdmKGEuYykmJjQhPWEuVDtnWzEzXT1DZihhLmMuYSkuam9pbihcIixcIik7Z1sxOF09MD09T2UoSWYoYSkpO251bGwhPWEuY2EmJihnWzIwXT1hLmNhLnksZ1syMV09YS5jYS54KTtlPVUuZigpO251bGwhPWUuYiYmKGdbMjJdPW9jKGUuYiksZ1syM109cGMoZS5iKSk7bnVsbCE9ZS5hJiYoZ1szMF09b2MoZS5hKSxnWzMxXT1wYyhlLmEpLGdbMzhdPUFlKGUuYSkpO2Q9ZS5qO2Y9SWYoYSk7Z1szN109QWUobmV3IEkoZi50b3ArZC55LGYucmlnaHQrZC54LGYuYm90dG9tK2QueSxmLmxlZnQrZC54KSk7ZS5jJiYoZT1lLmMsZ1szOV09ZS53aWR0aCtcIi1cIitlLmhlaWdodCk7LTEhPWEuQiYmKGdbMjVdPWEuQik7c2UobmV3IGZkKGEubCxhLk4pLGcpO3goYyxnLGIpO2I9YS5iLmE7YT1hLkdhO3RyeXt2YXIgbj10ZShjKTtDZShiLG4sYSl9Y2F0Y2gocSl7fXJldHVybiEwfTtmdW5jdGlvbiBVZygpe1YuY2FsbCh0aGlzLEQsMixcImllbVwiKX1yKFVnLFYpO2w9VWcucHJvdG90eXBlO2wuTGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKHEsRyl7cmV0dXJuISFiLm8uZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChxLEcpfXZhciBiPXRoaXMsYz1uZXcgSSgwLHRoaXMuby5pbm5lcldpZHRofHx0aGlzLm8ud2lkdGgsdGhpcy5vLmlubmVySGVpZ2h0fHx0aGlzLm8uaGVpZ2h0LDApLGQ9YmMoZG9jdW1lbnQpLGU9TWF0aC5mbG9vcihjLmxlZnQtZC54KSxmPU1hdGguZmxvb3IoYy50b3AtZC55KSxnPU1hdGguZmxvb3IoYy5yaWdodC1kLngpLGg9TWF0aC5mbG9vcihjLmJvdHRvbS1kLnkpO2M9YShlLGYpO2Q9YShnLGgpO2lmKGMmJmQpcmV0dXJuIG5ldyBJKGYsZyxoLGUpO3ZhciBtPWEoZyxmKSxrPWEoZSxoKTtpZihjKWg9WihmLGgsZnVuY3Rpb24ocSl7cmV0dXJuIGEoZSxxKX0pLGc9WihlLGcsZnVuY3Rpb24ocSl7cmV0dXJuIGEocSxmKX0pO2Vsc2UgaWYobSloPVooZixoLGZ1bmN0aW9uKHEpe3JldHVybiBhKGcscSl9KSxlPVooZyxlLGZ1bmN0aW9uKHEpe3JldHVybiBhKHEsZil9KTtlbHNlIGlmKGspZj1aKGgsZixmdW5jdGlvbihxKXtyZXR1cm4gYShlLHEpfSksZz1aKGUsZyxmdW5jdGlvbihxKXtyZXR1cm4gYShxLGgpfSk7ZWxzZSBpZihkKWY9WihoLGYsZnVuY3Rpb24ocSl7cmV0dXJuIGEoZyxxKX0pLGU9WihnLGUsZnVuY3Rpb24ocSl7cmV0dXJuIGEocSxoKX0pO2Vsc2V7dmFyIHA9TWF0aC5mbG9vcigoZStnKS8yKSxuPU1hdGguZmxvb3IoKGYraCkvMik7aWYoIWEocCxuKSlyZXR1cm4gbmV3IEkoMCwwLDAsMCk7Zj1aKG4sZixmdW5jdGlvbihxKXtyZXR1cm4gYShwLHEpfSk7aD1aKG4saCxmdW5jdGlvbihxKXtyZXR1cm4gYShwLHEpfSk7ZT1aKHAsZSxmdW5jdGlvbihxKXtyZXR1cm4gYShxLG4pfSk7Zz1aKHAsZyxmdW5jdGlvbihxKXtyZXR1cm4gYShxLG4pfSl9cmV0dXJuIG5ldyBJKGYsZyxoLGUpfTtmdW5jdGlvbiBaKGEsYixjKXtpZihjKGIpKXJldHVybiBiO2Zvcih2YXIgZD0xNTtkLS07KXt2YXIgZT1NYXRoLmZsb29yKChhK2IpLzIpO2lmKGU9PWF8fGU9PWIpYnJlYWs7YyhlKT9hPWU6Yj1lfXJldHVybiBhfWwuYmE9ZnVuY3Rpb24oKXtyZXR1cm4gVS5mKCkuaCYmQiYmRGIoOCkmJnFlKHRoaXMubyl9O2wudmE9ZnVuY3Rpb24oKXt9O2wud2E9ZnVuY3Rpb24oKXt9O2wuUWE9ZnVuY3Rpb24oKXt9O2wucWI9ZnVuY3Rpb24oKXt9O3UoVWcpO2Z1bmN0aW9uIFZnKCl7Vi5jYWxsKHRoaXMsRCwyLFwibXJhaWRcIik7dGhpcy5CPTA7dGhpcy51PXRoaXMuQT0hMTt0aGlzLmk9bnVsbDt0aGlzLmE9cGUodGhpcy5vKTt0aGlzLmMuYT1uZXcgSSgwLDAsMCwwKTt0aGlzLkY9ITF9cihWZyxWKTtsPVZnLnByb3RvdHlwZTtsLmJhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuYS5MfTtsLkthPWZ1bmN0aW9uKCl7dmFyIGE9e307dGhpcy5CJiYoYS5tcmFpZD10aGlzLkIpO3RoaXMuQSYmKGEubWxjPTEpO2EubXRvcD10aGlzLmEuR2I7dGhpcy5pJiYoYS5tc2U9dGhpcy5pKTt0aGlzLkYmJihhLm1zYz0xKTthLm1jcD10aGlzLmEucmE7cmV0dXJuIGF9O2wuVj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTE7ZDxhcmd1bWVudHMubGVuZ3RoOysrZCljW2QtMV09YXJndW1lbnRzW2RdO3RyeXtyZXR1cm4gdGhpcy5hLkxbYV0uYXBwbHkodGhpcy5hLkwsYyl9Y2F0Y2goZSl7ZmUoNTM4LGUsLjAxLGZ1bmN0aW9uKGYpe2YubWV0aG9kPWF9KX19O2Z1bmN0aW9uIFdnKGEsYixjKXthLlYoXCJhZGRFdmVudExpc3RlbmVyXCIsYixjKX1sLm1hPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZih0aGlzLmwpcmV0dXJuIXRoaXMuZmEoKTt0aGlzLmw9ITA7aWYoMj09PXRoaXMuYS5yYSlyZXR1cm4gdGhpcy5pPVwibmdcIixXKHRoaXMsXCJ3XCIpLCExO2lmKDE9PT10aGlzLmEucmEpcmV0dXJuIHRoaXMuaT1cIm1tXCIsVyh0aGlzLFwid1wiKSwhMTtVLmYoKS5zPSEwO3RoaXMuby5kb2N1bWVudC5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCI9PXRoaXMuby5kb2N1bWVudC5yZWFkeVN0YXRlP1hnKHRoaXMpOlQodGhpcy5vLFwibG9hZFwiLGZ1bmN0aW9uKCl7TygpLnNldFRpbWVvdXQoUigyOTIsZnVuY3Rpb24oKXtyZXR1cm4gWGcoYSl9KSwxMDApfSwyOTIpO3JldHVybiEwfTtmdW5jdGlvbiBYZyhhKXtQLmYoKS5pPSEhYS5WKFwiaXNWaWV3YWJsZVwiKTtXZyhhLFwidmlld2FibGVDaGFuZ2VcIixZZyk7XCJsb2FkaW5nXCI9PT1hLlYoXCJnZXRTdGF0ZVwiKT9XZyhhLFwicmVhZHlcIixaZyk6JGcoYSl9ZnVuY3Rpb24gJGcoYSl7XCJzdHJpbmdcIj09PXR5cGVvZiBhLmEuTC5BRk1BX0xJREFSPyhhLkE9ITAsYWgoYSkpOihhLmEucmE9MyxhLmk9XCJuY1wiLFcoYSxcIndcIikpfWZ1bmN0aW9uIGFoKGEpe2EudT0hMTt2YXIgYj0xPT1NKFAuZigpLmEsXCJybW10XCIpLGM9ISFhLlYoXCJpc1ZpZXdhYmxlXCIpOyhiPyFjOjEpJiZPKCkuc2V0VGltZW91dChSKDUyNCxmdW5jdGlvbigpe2EudXx8KGJoKGEpLGZlKDU0MCxFcnJvcigpKSxhLmk9XCJtdFwiLFcoYSxcIndcIikpfSksNTAwKTtjaChhKTtXZyhhLGEuYS5MLkFGTUFfTElEQVIsZGgpfWZ1bmN0aW9uIGNoKGEpe3ZhciBiPTE9PU0oUC5mKCkuYSxcInNuZWlvXCIpLGM9dm9pZCAwIT09YS5hLkwuQUZNQV9MSURBUl9FWFBfMSxkPXZvaWQgMCE9PWEuYS5MLkFGTUFfTElEQVJfRVhQXzI7KGI9YiYmZCkmJihhLmEuTC5BRk1BX0xJREFSX0VYUF8yPSEwKTtjJiYoYS5hLkwuQUZNQV9MSURBUl9FWFBfMT0hYil9ZnVuY3Rpb24gYmgoYSl7YS5WKFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLGEuYS5MLkFGTUFfTElEQVIsZGgpO2EuQT0hMX1sLnZhPWZ1bmN0aW9uKCl7dmFyIGE9VS5mKCksYj1laCh0aGlzLFwiZ2V0TWF4U2l6ZVwiKTthLmE9bmV3IEkoMCxiLndpZHRoLGIuaGVpZ2h0LDApfTtsLndhPWZ1bmN0aW9uKCl7VS5mKCkubD1laCh0aGlzLFwiZ2V0U2NyZWVuU2l6ZVwiKX07ZnVuY3Rpb24gZWgoYSxiKXtpZihcImxvYWRpbmdcIj09PWEuVihcImdldFN0YXRlXCIpKXJldHVybiBuZXcgRigtMSwtMSk7Yj1hLlYoYik7aWYoIWIpcmV0dXJuIG5ldyBGKC0xLC0xKTthPXBhcnNlSW50KGIud2lkdGgsMTApO2I9cGFyc2VJbnQoYi5oZWlnaHQsMTApO3JldHVybiBpc05hTihhKXx8aXNOYU4oYik/bmV3IEYoLTEsLTEpOm5ldyBGKGEsYil9bC5LPWZ1bmN0aW9uKCl7YmgodGhpcyk7Vi5wcm90b3R5cGUuSy5jYWxsKHRoaXMpfTtmdW5jdGlvbiBaZygpe3RyeXt2YXIgYT1WZy5mKCk7YS5WKFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLFwicmVhZHlcIixaZyk7JGcoYSl9Y2F0Y2goYil7ZmUoNTQxLGIpfX1mdW5jdGlvbiBkaChhLGIpe3RyeXt2YXIgYz1WZy5mKCk7Yy51PSEwO3ZhciBkPWE/bmV3IEkoYS55LGEueCthLndpZHRoLGEueSthLmhlaWdodCxhLngpOm5ldyBJKDAsMCwwLDApO3ZhciBlPWFmKGMpO2UuYT1kO2Uudm9sdW1lPWI7Yy5VKGUpfWNhdGNoKGYpe2ZlKDU0MixmKX19ZnVuY3Rpb24gWWcoYSl7dmFyIGI9UC5mKCksYz1WZy5mKCk7YSYmIWIuaSYmKGIuaT0hMCxjLkY9ITAsYy5pJiZXKGMsXCJ3XCIsITApKX11KFZnKTtmdW5jdGlvbiBmaCgpe1YuY2FsbCh0aGlzLEQsMSxcIm9zZFwiKTt0aGlzLmE9bnVsbDt0aGlzLkI9W107dGhpcy5GPXRoaXMudT10aGlzLmk9dGhpcy5BPTA7dGhpcy5IPSEwfXIoZmgsVik7bD1maC5wcm90b3R5cGU7bC5LYT1mdW5jdGlvbigpe3ZhciBhPXt9O3JldHVybiBhLmV4Zz0xLGF9O2wuemI9ZnVuY3Rpb24oYSl7dyh0aGlzLkIsYSl8fHRoaXMuQi5wdXNoKGEpfTtmdW5jdGlvbiBnaChhKXt2YXIgYj0wO2E9YS5vO3RyeXtpZihhJiZhLkdvb2dfQWRTZW5zZV9nZXRBZEFkYXB0ZXJJbnN0YW5jZSlyZXR1cm4gYX1jYXRjaChjKXt9Zm9yKDthJiY1PmI7KXt0cnl7aWYoYS5nb29nbGVfb3NkX3N0YXRpY19mcmFtZSlyZXR1cm4gYS5nb29nbGVfb3NkX3N0YXRpY19mcmFtZX1jYXRjaChjKXt9dHJ5e2lmKGEuYXN3aWZ0XzAmJmEuYXN3aWZ0XzAuZ29vZ2xlX29zZF9zdGF0aWNfZnJhbWUpcmV0dXJuIGEuYXN3aWZ0XzAuZ29vZ2xlX29zZF9zdGF0aWNfZnJhbWV9Y2F0Y2goYyl7fWIrKzthPWEhPWEucGFyZW50P2EucGFyZW50Om51bGx9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaGgoYSxiKXt2YXIgYz17fTtzZShQLmYoKS5jLGMpO2NbMF09XCJnb29nX3JlcXVlc3RfbW9uaXRvcmluZ1wiO2NbNl09NDtjWzE2XT0hMTthLmEmJmloKGEuYSxjKTt0cnl7dmFyIGQ9dGUoYyk7Yi5wb3N0TWVzc2FnZShkLFwiKlwiKX1jYXRjaChlKXt9fWZ1bmN0aW9uIGpoKGEpeysrYS51O2lmKDI9PWEuQSlraChhKTtlbHNle2lmKDEwPGEudSl7aWYoMjA8YS51KXtXKGEsXCJub1wiKTtyZXR1cm59MTE9PWEudSYmKE8oKS5jbGVhckludGVydmFsKGEuaSksYS5pPU8oKS5zZXRJbnRlcnZhbChSKDE5NyxmdW5jdGlvbigpe3JldHVybiBqaChhKX0pLDUwMCkpfWlmKGEuby5wb3N0TWVzc2FnZSlpZihnZChQLmYoKS5jKSl7dmFyIGI9Z2goYSk7YiYmaGgoYSxiKX1lbHNlIFcoYSxcImliXCIpO2Vsc2UgVyhhLFwiY1wiKX19bC5tYT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYodGhpcy5sKXJldHVybiF0aGlzLmZhKCk7dGhpcy5sPSEwO2lmKCFnZChQLmYoKS5jKSlyZXR1cm4gVyh0aGlzLFwiaWJcIiksITE7VCh0LFwibWVzc2FnZVwiLGZ1bmN0aW9uKGMpe2lmKG51bGwhPWMmJmMuZGF0YSYmXCJzdHJpbmdcIj09PXR5cGVvZiBjLmRhdGEpe3ZhciBkPWMuZGF0YTtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQpdmFyIGU9bnVsbDtlbHNle2U9e307ZD1kLnNwbGl0KFwiXFxuXCIpO2Zvcih2YXIgZj0wO2YhPWQubGVuZ3RoOysrZil7dmFyIGc9ZFtmXSxoPWcuaW5kZXhPZihcIj1cIik7aWYoISgwPj1oKSl7dmFyIG09TnVtYmVyKGcuc3Vic3RyKDAsaCkpO2c9Zy5zdWJzdHIoaCsxKTtzd2l0Y2gobSl7Y2FzZSAzNjpjYXNlIDg6Y2FzZSAxMTpjYXNlIDE2OmNhc2UgNTpjYXNlIDE4Omc9XCJ0cnVlXCI9PWc7YnJlYWs7Y2FzZSA0OmNhc2UgMzM6Y2FzZSA2OmNhc2UgMjU6Y2FzZSAyODpjYXNlIDI5OmNhc2UgMjQ6Y2FzZSAzMTpjYXNlIDMwOmNhc2UgMjM6Y2FzZSAyMjpjYXNlIDc6Y2FzZSAyMTpjYXNlIDIwOmc9TnVtYmVyKGcpO2JyZWFrO2Nhc2UgMzppZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZGVjb2RlVVJJQ29tcG9uZW50KXRyeXtnPWRlY29kZVVSSUNvbXBvbmVudChnKX1jYXRjaChwKXt0aHJvdyBFcnJvcihcIkVycm9yOiBVUkkgbWFsZm9ybWVkOiBcIitnKTt9fWVbbV09Z319ZT1lWzBdP2U6bnVsbH1pZihkPWUpZD1uZXcgZmQoZVs0XSxlWzEyXSksZj1QLmYoKS5jLGQ9Zi5hfHxkLmE/Zi5hPT1kLmE6Zi5ifHxkLmI/Zi5iPT1kLmI6ITE7aWYoZCYmKGQ9ZVsyOV0sZj1lWzBdLHcoW1wiZ29vZ19hY2tub3dsZWRnZV9tb25pdG9yaW5nXCIsXCJnb29nX2dldF9tb2RlXCIsXCJnb29nX3VwZGF0ZV9kYXRhXCIsXCJnb29nX2ltYWdlX3JlcXVlc3RcIixcImdvb2dfYWRzcGVlZFwiXSxmKSkpe2xoKGEsZSk7aWYoXCJnb29nX2dldF9tb2RlXCI9PWYmJmMuc291cmNlKXttPXt9O3NlKFAuZigpLmMsbSk7bVswXT1cImdvb2dfcHJvdmlkZV9tb2RlXCI7bVs2XT00O21bMTZdPSExO2EuYSYmaWgoYS5hLG0pO3RyeXt2YXIgaz10ZShtKTtjLnNvdXJjZS5wb3N0TWVzc2FnZShrLGMub3JpZ2luKTttaChhLGspfWNhdGNoKHApe2ZlKDQwNixwKX19aWYoXCJnb29nX2dldF9tb2RlXCI9PWZ8fFwiZ29vZ19hY2tub3dsZWRnZV9tb25pdG9yaW5nXCI9PWYpYS5hJiYoYS5hLlo9ZVsyOF0pLGEuQT0yLGtoKGEpO2lmKGEuYXx8YS5nLmxlbmd0aCl7Yz00PT1kO2lmKCFjKXttPWVbMF07ZD0hMTtmPVUuZigpO2s9YS5jLmE7KGc9ZVszMl0pJiZcIm9zZFwiIT09ZyYmKDE9PU0oUC5mKCkuYSxcInJ4bGlzdFwiKT9hLkM9XCJvc2RcIjphLkM9Zyk7XCJnb29nX2Fja25vd2xlZGdlX21vbml0b3JpbmdcIj09bSYmKCh2b2lkIDAhPT1lWzM2XT9lWzM2XTohZVs4XSk/Y2YoYSwyKTpjZihhLDApLFdlKGEpKTtlWzM3XSYmKG09QmUoZVszN10pKSYmKGQ9ITAsZi5qPW5ldyBFKG0ubGVmdCxtLnRvcCkpO2lmKGVbMzhdKXtpZihtPUJlKGVbMzhdKSlkPSEwLGYuYT1tfWVsc2UgaXNOYU4oZVszMF0pfHxpc05hTihlWzMxXSl8fChmLmF8fChmLmE9bmV3IEkoMCwwLDAsMCkpLGQ9ITAsZi5hLnJpZ2h0PWYuYS5sZWZ0K2VbMzBdLGYuYS5ib3R0b209Zi5hLnRvcCtlWzMxXSk7ZVs5XSYmKGQ9ITAsbT1CZShlWzldKSkmJihrPW0sZi5tPW0pO2VbMzldJiYoKG09ZVszOV0pPyhtPW0uc3BsaXQoXCItXCIpLG09Mj09bS5sZW5ndGg/bmV3IEYoZmIobVswXSksZmIobVsxXSkpOm51bGwpOm09bnVsbCxtJiYoZi5jPW0pKTtkJiYoZD1hZihhKSxkLmE9ayxhLlUoZCkpfWs9RWUoZVszXSkucjtpZihjKXN3aXRjaChkPWVbMF0sYz0xMDAqZVsyNV0sXCJudW1iZXJcIiE9PXR5cGVvZiBjfHxpc05hTihjKXx8YS5hJiYod2luZG93LmRvY3VtZW50W1wiNENHZUFyYlZRXCJdPWN8MCksdm9pZCAwIT1lWzE4XSYmYS5hJiYoYS5hLlk9ZVsxOF0pLGM9ZVs3XSx2b2lkIDAhPWMmJjA8YyYmYS5hJiYoYz1hLmEsYy5UJiYoZj1cIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2dlbl8yMDQ/aWQ9YWNfb3BwJnZzYmx0PVwiK2VbN10sYy5GJiYoZis9XCImYXZpPVwiK2MuRiksdGYoZiksYy5UPSExKSksZj0hIWVbNV0sYz0hIWVbMTFdLFwiZ29vZ191cGRhdGVfZGF0YVwiIT1kJiZcImdvb2dfaW1hZ2VfcmVxdWVzdFwiIT1kfHwhYS5hfHwobT1hLmEsbS5qPUVlKGVbM10pLCsrbS4kKSxtPSFjJiZcImdvb2dfdXBkYXRlX2RhdGFcIj09ZCYmIWVbMThdLGQpe2Nhc2UgXCJnb29nX2ltYWdlX3JlcXVlc3RcIjphLmEmJm5oKGEuYSxrfHxcInVcIixmLGMpO2Nhc2UgXCJnb29nX3VwZGF0ZV9kYXRhXCI6aWYobSYmYS5hJiYoaz1hLmEsay5DPSEwLG9oKGspJiZrLlMmJihkPWsuaiwzIT1rLmIpKSl7ZC5yPVwibVwiO2ZvcihtPTA7bTxrLmcubGVuZ3RoOysrbSlnPXBoKGssay5nW21dLGQsITApLHRmKGcpO2suUz0hMX1mJiZhLmEmJihrPWEuYSxvaChrKSYmKGsuQj0hMCxxaChrLFwiMVwiKSxrLkgmJjMhPWsuYiYmIWsuWSYmKHVjKGsuSCksay5IPVwiXCIpLGsubCYmKGQ9VWEoay5qKSxkLnI9XCJ2XCIscmgoayxkLCEwKSksay5sfHwxIT1rLmN8fChrLlI9ITApKSk7YyYmYS5hJiYoYz1hLmEsb2goYykmJihjLmg9ITEsYy5TPSExLHFoKGMsXCIzXCIpLGMubCYmKGs9VWEoYy5qKSxudWxsIT09ayYmXCJyXCJpbiBrfHwoay5yPVwidWtcIikscmgoYyxrLCEwKSkpKX1lbHNlXCJhY1wiPT1rJiZhLmEmJm5oKGEuYSxcImFjXCIsdm9pZCAwLHZvaWQgMCk7KGM9ZVs0MF0pJiZhLmEmJihjPUpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGMpKSxrPXt9LHNoKChrLnJzdD1jLnJzdCxrLmRsdD1jLmRsdCxrLnJwdD1jLnJwdCxrLmlzZD1jLmlzZCxrLm1zZD1jLm1zZCxrKSkpO2VbMTFdJiYoZT1FZShlWzNdKS5yfHxcIm1zZlwiLFcoYSxlKSl9fX19LDExOCk7dmFyIGI9UigxOTcsZnVuY3Rpb24oKXtqaChhKX0pO3RoaXMuQT0xO2IoKTt0aGlzLmk9TygpLnNldEludGVydmFsKGIsMTAwKTtyZXR1cm4hMH07bC5wYT1mdW5jdGlvbigpe3ZhciBhPXt9O3NlKFAuZigpLmMsYSk7YVswXT1cImdvb2dfc3RvcF9tb25pdG9yaW5nXCI7bWgodGhpcyx0ZShhKSk7a2godGhpcyl9O2Z1bmN0aW9uIGtoKGEpe08oKS5jbGVhckludGVydmFsKGEuaSk7YS5pPTB9ZnVuY3Rpb24gbWgoYSxiKXt2YXIgYz1naChhKSxkPSFjO2QmJihjPWEuby5wYXJlbnQpO2lmKGMmJmMucG9zdE1lc3NhZ2UpdHJ5e2MucG9zdE1lc3NhZ2UoYixcIipcIiksZCYmYS5vLnBvc3RNZXNzYWdlKGIsXCIqXCIpLGEuRisrfWNhdGNoKGUpe319ZnVuY3Rpb24gbGgoYSxiKXt2KGEuQixmdW5jdGlvbihjKXtjKGIpfSl9bC5SYT1mdW5jdGlvbigpe3JldHVybiA0PT09UC5mKCkuYj8hMDp0aGlzLmJhKCl9O2wudmE9ZnVuY3Rpb24oKXt9O2wud2E9ZnVuY3Rpb24oKXt9O2wuUWE9ZnVuY3Rpb24oKXt9O2wuYmE9ZnVuY3Rpb24oKXtyZXR1cm4gVS5mKCkuaCYmIXRoaXMuc307dShmaCk7ZnVuY3Rpb24gdGgoKXt2YXIgYT0vWyZcXD8jXWV4az0oW14mIF0rKS8uZXhlYyhELmxvY2F0aW9uLmhyZWYpO3JldHVybiBhJiYyPT1hLmxlbmd0aD9hWzFdOm51bGx9O3ZhciB1aD1bXCJGUkFNRVwiLFwiSU1HXCIsXCJJRlJBTUVcIl0sdmg9L15bMDFdKHB4KT8kLztmdW5jdGlvbiB3aChhLGIsYyl7ZnVuY3Rpb24gZChHYSl7aHx8KGg9ITAsYihHYSkpfXZhciBlPSExLGY9ITAsZz0hMTtlPXZvaWQgMD09PWU/ITA6ZTtmPXZvaWQgMD09PWY/ITE6ZjtnPXZvaWQgMD09PWc/ITE6ZzthPVwic3RyaW5nXCI9PT10eXBlb2YgYT9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTphO2lmKCFhKXJldHVybiExO2N8fChjPWZ1bmN0aW9uKEdhLFJhLFNhKXtHYS5hZGRFdmVudExpc3RlbmVyKFJhLFNhKX0pO2Zvcih2YXIgaD0hMSxtLGsscD0wO3A8dWgubGVuZ3RoOysrcClpZih1aFtwXT09YS50YWdOYW1lKXtrPTM7bT1bYV07YnJlYWt9bXx8KG09YS5xdWVyeVNlbGVjdG9yQWxsKHVoLmpvaW4oXCIsXCIpKSxrPTIpO3ZhciBuPTA7YT0hMTtmb3IocD0wO3A8bS5sZW5ndGg7cCsrKXt2YXIgcT1tW3BdO2lmKGd8fCEoXCJJTUdcIiE9cS50YWdOYW1lfHwhcS5jb21wbGV0ZXx8cS5uYXR1cmFsV2lkdGgmJnEubmF0dXJhbEhlaWdodD92aC50ZXN0KHEuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikpJiZ2aC50ZXN0KHEuZ2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIpKToxKSl7aWYoXCJJTUdcIj09cS50YWdOYW1lKXZhciBHPXEubmF0dXJhbFdpZHRoJiZxLm5hdHVyYWxIZWlnaHQ/ITA6ITE7ZWxzZSB0cnl7Rz1cImNvbXBsZXRlXCI9PT0ocS5yZWFkeVN0YXRlP3EucmVhZHlTdGF0ZTpxLmNvbnRlbnRXaW5kb3cmJnEuY29udGVudFdpbmRvdy5kb2N1bWVudCYmcS5jb250ZW50V2luZG93LmRvY3VtZW50LnJlYWR5U3RhdGUpPyEwOiExfWNhdGNoKEdhKXtHPXZvaWQgMD09PWY/ITE6Zn1HP2E9ITA6KG4rKyxjKHEsXCJsb2FkXCIsZnVuY3Rpb24oKXtuLS07bnx8ZChrKX0pKX19bT1udWxsO2lmKDA9PT1uJiYhYSYmXCJjb21wbGV0ZVwiPT09dC5kb2N1bWVudC5yZWFkeVN0YXRlKWs9NTtlbHNlIGlmKG58fCFhKXJldHVybiBjKHQsXCJsb2FkXCIsZnVuY3Rpb24oKXtkKDQpfSksITE7ZSYmZChrKTtyZXR1cm4hMH07ZnVuY3Rpb24geGgoKXt0aGlzLnU9MDt0aGlzLkY9XCJcIjt0aGlzLmc9W107dGhpcy5XPVwiXCI7dGhpcy5ZPXRoaXMuQz10aGlzLkI9dGhpcy5BPXRoaXMuaD10aGlzLmw9dGhpcy5TPSExO3RoaXMuST1uZXcgZmQobnVsbCxudWxsKTt2YXIgYT17fTt0aGlzLmo9KGEubXRvcz1cIjAsMCwwLDAsMFwiLGEubWN2dD1cIjBcIixhLnA9XCIwLDAsMCwwXCIsYS50b3M9XCIwLDAsMCwwLDBcIixhKTt0aGlzLlA9W107dGhpcy5SPSExO3RoaXMuSD10aGlzLk49XCJcIjt0aGlzLmE9bmV3IFpjO3RoaXMuSj0hMTt0aGlzLmI9MDt0aGlzLm09dGhpcy5zPW51bGw7dGhpcy4kPXRoaXMuYz0wO3RoaXMuWD1cIlwiO3RoaXMuVD0hMTt0aGlzLmk9bnVsbDt0aGlzLmFhPXRoaXMuWj0wO1ZjKFAuZigpLmEpO1JnKCl9bD14aC5wcm90b3R5cGU7bC5rYT1mdW5jdGlvbihhKXt2YXIgYj10Zy5mKCkuYTtzd2l0Y2goYS5PKCkpe2Nhc2UgMDpiJiZZZShiLmEsdGhpcyk7eWgodGhpcyxhKTticmVhaztjYXNlIDI6YiYmWWUoYi5hLHRoaXMpfX07bC5VPWZ1bmN0aW9uKCl7fTtsLmhhPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2Z1bmN0aW9uIHJoKGEsYixjLGQpe2M9dm9pZCAwPT09Yz8hMTpjO2Q9dm9pZCAwPT09ZD8hMTpkO2E6e2ZvcihlIGluIGIpe3ZhciBlPSExO2JyZWFrIGF9ZT0hMH1pZighKGV8fGEuUnx8MiE9YS5jJiYhYykmJjMhPWEuYil7Zm9yKGU9MDtlPGEuZy5sZW5ndGg7KytlKXt2YXIgZj1waChhLGEuZ1tlXSxiLGMsZCk7aWYoTShQLmYoKS5hLFwic2Jlb3NcIikmJiFjKXt2YXIgZz1FYygpfHxEO2lmKGcubmF2aWdhdG9yJiZnLm5hdmlnYXRvci5zZW5kQmVhY29uKXt2YXIgaD1zZihmLnRvU3RyaW5nKCkpLnNwbGl0KFwiP1wiKTtnPWcubmF2aWdhdG9yLnNlbmRCZWFjb24oaFswXSxoWzFdKX1lbHNlIGc9ITE7Z3x8dGYoZi50b1N0cmluZygpK1wiJnNiZXJyPTFcIil9ZWxzZSB0ZihmKX1kfHwoYz9hLmw9ITE6YS5SPSEwKX19ZnVuY3Rpb24gemgoYSxiKXt2YXIgYz1bXTthJiZjLnB1c2goXCJhdmk9XCIrYSk7YiYmYy5wdXNoKFwiY2lkPVwiK2IpO3JldHVybiBjLmxlbmd0aD9cIi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vYWN0aXZldmlldz9cIitjLmpvaW4oXCImXCIpOlwiLy9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9hY3RpdmV2aWV3XCJ9ZnVuY3Rpb24gcGgoYSxiLGMsZCxlKXt2YXIgZj12b2lkIDA9PT1mPzRFMzpmO2Q9KHZvaWQgMD09PWU/MDplKT9cIm9zZGV4cFwiOih2b2lkIDA9PT1kPzA6ZCk/MT09TShQLmYoKS5hLFwiYXZ4bVwiKT9cIm9zZHhtXCI6XCJvc2RpbVwiOmEuQT9cIm9zZDJcIjpcIm9zZHRvc1wiO2IrPS0xPGIuaW5kZXhPZihcIj9cIik/XCImXCI6XCI/XCI7ZT1QLmYoKTt4KGMsUmMoZS5hKSk7Yy5pZD1kO2MudnM9YS5CPzQ6YS5DPzM6MjtcIm9zZDJcIj09ZCYmYS5oJiZhLkImJihjLnRzZj0xKTtjLnVjPWEuJDtkPWZoLmYoKS5GO2MudXBjPWQ7Yy50Z3Q9YS5hLmE/YS5hLmE/YS5hLmEudGFnTmFtZTpcIlwiOlwibmZcIjtjLmNsPWEuSj8xOjA7aWYoZD1hLmEpYy5jZWM9ZC5oLGMud2Y9ZC5pPzE6MCxjLmNhYz1kLmcsZD1kLmEsYy5jZD1kP2QuY2xpZW50V2lkdGgrXCJ4XCIrZC5jbGllbnRIZWlnaHQ6XCJuZlwiLGMuaXRwbD1kP051bWJlcihYYyhkLFwiZ29vZ2xlQXZJdHBsXCIpKXx8MDotMTtmb3IoZD0wO2Q8YS5QLmxlbmd0aDtkKyspe3ZhciBnPWU9dm9pZCAwLGg9dm9pZCAwO3RyeXt2YXIgbT1mYShhLlBbZF0oKSk7ZT1tLm5leHQoKS52YWx1ZTtnPW0ubmV4dCgpLnZhbHVlO2g9bS5uZXh0KCkudmFsdWV9Y2F0Y2goayl7fWNbZV09Zy5sZW5ndGg8Zj9nOmh8fFwibWF4X2xlbmd0aFwifWE9dm9pZCAwIT09Yz9uZihtZihuZXcga2YsYykpOlwiXCI7cmV0dXJuIGIrYX1mdW5jdGlvbiBxaChhLGIpe2lmKGEuTil7dHJ5e3VjKFRiKGEuTixcInZpXCIsYikpfWNhdGNoKGMpe313KEFoLGIpJiYoYS5OPVwiXCIpfX1mdW5jdGlvbiBuaChhLGIsYyxkKXtjPXZvaWQgMD09PWM/ITE6YztkPXZvaWQgMD09PWQ/ITE6ZDt2YXIgZT1VYShhLmopO2Uucj1iO2I9ITA7MT09TShQLmYoKS5hLFwiYXZ4bVwiKSYmKGI9Y3x8ZCk7YiYmKGI9Yz80OmQ/MjozLGI9dm9pZCAwPT09Yj8zOmIsYS5sJiYzIT0odm9pZCAwPT09Yj8zOmIpJiZyaChhLGUsITApLGI9YS5CfHxhLkMsYS5BfHxhLmgmJmIpJiYocmgoYSxlKSxhLkE9ITEsYS5oPSExKTtjfHxkfHxxaChhLFwiMFwiKX1mdW5jdGlvbiBvaChhKXtyZXR1cm4gMT09YS5jfHwyPT1hLmN8fGEubH1sLkFiPWZ1bmN0aW9uKGEpe3RoaXMuUC5wdXNoKGEpfTtmdW5jdGlvbiBCaChhKXt2YXIgYj1maC5mKCk7UC5mKCkuYz1hLkk7Yi5hPWE7Yi5tYSgpfWZ1bmN0aW9uIENoKGEpe2EuYj1EZShhLmEuYSk7aWYoMT09YS5ifHwzPT1hLmIpe3ZhciBiPWEuYS5hO2EubT1SKDI4MyxmdW5jdGlvbigpe2EuYj1EZShhLmEuYSk7aWYoMCE9YS5iKXtpZihhLmkpe3ZhciBkPWEuaSxlPWEuYjtkLmghPWUmJihhZyhkLGUpLGQuZ2EoKSYmWS5jKCkpfTI9PWEuYiYmKGQ9YS5hLmEsYS5zPyhhLnMuZGlzY29ubmVjdCgpLGEucz1udWxsKTpkJiZkLnJlbW92ZUV2ZW50TGlzdGVuZXImJmQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTUF0dHJNb2RpZmllZFwiLGEubSkpO2EubT1udWxsfX0pO2lmKE11dGF0aW9uT2JzZXJ2ZXImJmIpe3ZhciBjPXthdHRyaWJ1dGVzOiEwfTtjLmF0dHJpYnV0ZUZpbHRlcj1bXCJkYXRhLVwiK2hiKFwiZ29vZ2xlQXZEbVwiKV07YS5zPW5ldyB0Lk11dGF0aW9uT2JzZXJ2ZXIoYS5tKTthLnMub2JzZXJ2ZShiLGMpfWVsc2UgYiYmYi5hZGRFdmVudExpc3RlbmVyP2IuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUF0dHJNb2RpZmllZFwiLGEubSk6ZmUoMjg2LEVycm9yKCkpfX1mdW5jdGlvbiBEaChhKXthLko9ITA7RWgoYSk7YT1hLmk7YS5zfHwoYS5QYSgpLGEuZ2EoKSYmWS5jKCkpfWZ1bmN0aW9uIGloKGEsYil7dmFyIGM9UC5mKCk7Yls2XT00O2JbMTZdPWEuaDthPXQucGVyZm9ybWFuY2U7YlszM109YSYmYS50aW1pbmcmJmEudGltaW5nLmRvbUxvYWRpbmd8fC0xO2JbMjldPWMuYn1mdW5jdGlvbiBGaCgpe3ZhciBhPVAuZigpO2lmKDE9PU0oYS5hLFwicnhsaXN0XCIpJiYhdWIpcmV0dXJuIGE9W1ZnLmYoKSxFZy5mKCksVWcuZigpLGZoLmYoKV0sW25ldyBEZyhEKSxuZXcgdmcoYSldO3ZhciBiPVtFZy5mKCksVWcuZigpXSxjPTE9PU0oYS5hLFwiYW1wXCIpOygxIT1NKGEuYSxcInhkaVwiKXx8YykmJmIudW5zaGlmdChmaC5mKCkpO3JldHVybltuZXcgdmcoYiksbmV3IERnKEQpXX1mdW5jdGlvbiB5aChhLGIpe2lmKGEuaSYmIWEuaS5uYSgpKXt2YXIgYz1bbmV3IERnKEQpXSxkPXRnLmYoKTtkLmI9Yzt1ZyhkLGZ1bmN0aW9uKGUsZil7R2goYSxlLGYpfSk/SmYoYS5pLGQuYSk6R2goYSxcImlcIixiKX19ZnVuY3Rpb24gSGgoYSl7dmFyIGI9dGcuZigpO2lmKG51bGw9PWIuYSl7aWYobnVsbD09Yi5iKXt2YXIgYz1GaCgpO2IuYj1jfXVnKGIsZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pP1kuZG9uZXx8KFhlKGIuYS5hLGEpLEloKCkpOkdoKGEsXCJpXCIpfX1mdW5jdGlvbiBFaChhKXt2YXIgYj1QLmYoKSxjPUQubG9jYXRpb24uaHJlZixkPVNnKGEuYyk7ZD1uZXcgWWYoRCxjLGEuYS5hLC0xLGEuWixxYSxkKTtlZChkLmIpO2EuaT1kO2QuVD1hLmM7ZC5HYT1bRF07ZC5JYT1hLmphO2QudGEoYS5YKTtkLmw9YS5JLmI7ZC5OPWEuSS5hO2QuRWE9UWcoYyk7Y2coZCxhLkYsYS5XKTtzZy5hLnB1c2goZCk7YWcoZCxhLmIpO1BnKCk7Yz10Zy5mKCk7bnVsbCE9Yy5hP0pmKGQsYy5hKTpOZihkLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGZ1bmN0aW9uKGUpe2Zvcih2YXIgZj1bXSxnPTA7Zzxhcmd1bWVudHMubGVuZ3RoOysrZylmW2ddPWFyZ3VtZW50c1tnXTtyZXR1cm4gYS5qYS5hcHBseShhLGhhKGYpKX0pO2IuaCYmYS5qYShkLGIuaCk7cmV0dXJuIGR9ZnVuY3Rpb24gR2goYSxiLGMpe1AuZigpLmg9Yjtmb3IodmFyIGQ9ZmEoc2cuYSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpYS5qYShlLnZhbHVlLGIpO0poKGIsYyl9ZnVuY3Rpb24gc2goYSl7dihzZy5hLGZ1bmN0aW9uKGIpe2IuQ2E9YX0pfWwuamE9ZnVuY3Rpb24oYSxiKXthLnU9ITA7dmFyIGM9e307JGYoYSwyLChjLnI9YixjKSk7YS5hJiZhLmEudWEoKX07ZnVuY3Rpb24gSmgoYSxiKXtpZighWS5kb25lJiZzZy5hLmxlbmd0aCl7WS5nLmNhbmNlbCgpO3ZhciBjPU9nKFksRWMoKSwhMSk7YiYmKGMuYXZtcz1iLkcoKSx4KGMsYi5NKCkpKTtjPXt9O2E9KGMucj1hLGMpO2ImJihhLmF2bXM9Yi5HKCkseChhLGIuTSgpKSk7Yj1zZy5hOzA8Yi5sZW5ndGgmJktnKFksYiwhMCk7Yj1mYShiKTtmb3IoYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYz1jLnZhbHVlLGMudT0hMCwkZihjLDEsYSk7WS5kb25lPSEwO2ZoLmYoKS5wYSgpfX1mdW5jdGlvbiBLaChhLGIpe2EuWD1iO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYil7Yj1TYyhQLmYoKS5hLGIpLnNwbGl0KFwiJlwiKTtmb3IodmFyIGM9Yi5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YltjXSxlPUdjO2Q9PWUudmI/KGEuaD0hMSxiLnNwbGljZShjLDEpKTpkPT1lLnViJiYoYS5UPSEwLGIuc3BsaWNlKGMsMSkpfUlkKFAuZigpLGIuam9pbihcIiZcIikpfX1mdW5jdGlvbiBJaCgpe2lmKC0xPT1ZLmEuc2Epe3ZhciBhPUVjKCk7SWcoKTthLnNldFRpbWVvdXQoUigxMzEsZnVuY3Rpb24oKXtKaChcInRcIil9KSwzNkU1KTtZLmEuc2E9UygpLSAtMX19ZnVuY3Rpb24gTGgoYSl7ZnVuY3Rpb24gYihlKXtkJiZjfHwoZD0hMCxuaChhLGUsYS5CLCFhLkMpKX12YXIgYz0xPT1NKFAuZigpLmEsXCJwaGVsXCIpLGQ9ITE7VChELFwidW5sb2FkXCIsZnVuY3Rpb24oKXtiKFwidVwiKX0sMTE5KTtjJiZUKEQsXCJwYWdlaGlkZVwiLGZ1bmN0aW9uKCl7YihcInBoXCIpfSw0OTApfWZ1bmN0aW9uIE1oKGEpe0NoKGEpO2EuSj13aChhLmEuYSxmdW5jdGlvbigpe3JldHVybiBEaChhKX0sZnVuY3Rpb24oYixjLGQpe1QoYixjLGQsMTE2KX0pO2EuSiYmRGgoYSl9ZnVuY3Rpb24gTmgoYSxiKXtmdW5jdGlvbiBjKCl7aWYoIWEuYS5hKXt2YXIgZT1hLmEsZj1udWxsO3ZhciBnPShELmRvY3VtZW50fHxkb2N1bWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJTQ1JJUFRcIik7MDxnLmxlbmd0aCYmKGc9Z1tnLmxlbmd0aC0xXSkmJmcucGFyZW50RWxlbWVudCYmKGY9Zy5wYXJlbnRFbGVtZW50KTtmfHwoZj1ELmRvY3VtZW50LmJvZHkpO2lmKGc9Zil7Zj1TdHJpbmcoYik7Zz1kZChnLFtcIkdvb2dsZUFjdGl2ZVZpZXdFbGVtZW50XCJdKTtmb3IodmFyIGg9W10sbT1mYShnKSxrPW0ubmV4dCgpOyFrLmRvbmU7az1tLm5leHQoKSlrPWsudmFsdWUsWWMoayxcImdvb2dsZUF2QWRrXCIpJiZYYyhrLFwiZ29vZ2xlQXZBZGtcIik9PWYmJmgucHVzaChrKTsyPT1oLmxlbmd0aCYmKGRjKGhbMF0saFsxXSk/aD1baFsxXV06ZGMoaFsxXSxoWzBdKSYmKGg9W2hbMF1dKSk7ZS5oPWcubGVuZ3RoO2UuZz1oLmxlbmd0aDsxPT1oLmxlbmd0aD9lLmE9aFswXTooZj1oLGYubGVuZ3RoPyhnPWFkKGYpLGY9MDxnLmxlbmd0aD9nWzBdOmZbMF0pOmY9bnVsbCxlLmE9Zil9ZC0tO2EuYS5hP01oKGEpOjA8ZD9ELnNldFRpbWVvdXQoJGQoMTIyLGMpLDEwMCk6KGU9RWgoYSksYS5qYShlLFwiblwiKSl9fXZhciBkPTEwO2MoKX1sLkViPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCxtLGsscCl7dmFyIG49dGhpcztEYXRlJiZEJiZELnNjcmVlbiYmRC5kb2N1bWVudCYmRC5kb2N1bWVudC5ib2R5JiZELmRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0JiYoUC5mKCkuYj00LHRoaXMudT1hLHRoaXMuTj1iLHRoaXMuSD1kLHRoaXMubD1mLGcmJktoKHRoaXMsZyksYT1QLmYoKSxhLmI9NCx0aGlzLmg9Zix0aGlzLkk9bmV3IGZkKGUsdGgoKSksVChELFwibG9hZFwiLGZ1bmN0aW9uKCl7cWgobixcIi0xXCIpfSwxMTcpLHRoaXMuRj1jfHxcIlwiLHRoaXMuVz1tLGM9a3x8emgoYyxtKSx3KHRoaXMuZyxjKXx8dGhpcy5nLnB1c2goYykscCYmIXcodGhpcy5nLHApJiZ0aGlzLmcucHVzaChwKSxMaCh0aGlzKSwocD1VLmYoKS5nfHx5KHosXCJDcktleVwiKXx8eSh6LFwiUGxheVN0YXRpb25cIil8fHkoeixcIlJva3VcIil8fEZlKCl8fHkoeixcIlhib3hcIil8fEdlKCl8fEhlKCkpfHwoTygpLHA9MCE9PWpkKCkpLHA/KDE9PU0oYS5hLFwiZXBvaFwiKSYmVChELmRvY3VtZW50LFwidmlzaWJpbGl0eWNoYW5nZVwiLGZ1bmN0aW9uKCl7dmFyIHE9RC5kb2N1bWVudDsobnVsbCE9cS5oaWRkZW4/cS5oaWRkZW46bnVsbCE9cS5tb3pIaWRkZW4/cS5tb3pIaWRkZW46bnVsbCE9cS53ZWJraXRIaWRkZW4mJnEud2Via2l0SGlkZGVuKSYmISgzPD1uLmFhKSYmKG4uYWErKyxxPVVhKG4uaikscS5yPVwiaHZjXCIscmgobixxLCExLCEwKSl9LDQ1NSksMT09TShhLmEsXCJlcHBoXCIpJiZUKEQsXCJwYWdlaGlkZVwiLE1hKGZ1bmN0aW9uKCl7aWYobi5DKXt2YXIgcT1VYShuLmopO3Eucj1cInBoXCI7cmgobixxLCExLCEwKX19KSw0NTcpLC0xPT10aGlzLnU/dGhpcy5jPWY/MzoxOi0yPT10aGlzLnU/dGhpcy5jPTM6MDx0aGlzLnUmJih0aGlzLmM9Mix0aGlzLkE9ITApLHRoaXMuaCYmIXRoaXMuQSYmLTE9PXRoaXMudSYmKHRoaXMuYz0yKSxZLmg9XCJvc2RcIixhLmo9OTQ3MTkwNTQyLEJoKHRoaXMpLEhoKHRoaXMpLE5oKHRoaXMsZSkpOihlPXt9LGU9KGUucj1cInB2XCIsZSkscmgodGhpcyxlLCEwKSx0aGlzLmM9NSxCaCh0aGlzKSkpfTt1KHhoKTt2YXIgQWg9W1wiMVwiLFwiMFwiLFwiM1wiXSxPaD1SKDEyMyxmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpYltjXT1hcmd1bWVudHNbY107dmFyIGQ7cmV0dXJuKGQ9eGguZigpKS5FYi5hcHBseShkLGhhKGIpKX0pO3BhKFwib3NkbGZtXCIsT2gpO3ZhciBQaD1SKDEyNCxmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpYltjXT1hcmd1bWVudHNbY107dmFyIGQ7cmV0dXJuKGQ9eGguZigpKS5BYi5hcHBseShkLGhhKGIpKX0pO3BhKFwib3NkbGFjXCIsUGgpO3ZhciBRaD1SKDEyNSxmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2MpYltjXT1hcmd1bWVudHNbY107dmFyIGQ7cmV0dXJuKGQ9ZmguZigpKS56Yi5hcHBseShkLGhhKGIpKX0pO3BhKFwib3NkbGFtcmNcIixRaCk7fSkuY2FsbCh0aGlzLHRoaXMsdGhpcy5kb2N1bWVudCk7XG4ifSwgImhlYWRlcnNTaXplIjogMTI1NywgImJvZHlTaXplIjogLTEyNTcsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDB9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IC0xLCAiY29ubmVjdCI6IC0xLCAic3NsIjogLTEsICJzZW5kIjogMCwgIndhaXQiOiAyMDAzLjk1NywgInJlY2VpdmUiOiAxNjcuNDkyfSwgInBhZ2VyZWYiOiAicGFnZUBkOTY5OTk1ZTBlNmRkZjQyODExNmMzYTlkYjQ5ZTk3NSIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6NDcwMDo6NjgxMTo2MDBkXSIsICJfc2VydmVyUG9ydCI6IDgwLCAiX3NlY3VyaXR5RGV0YWlscyI6IHt9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyMy0wNS0yNFQxNTo0MToxOC40OTdaIiwgInRpbWUiOiAyNDcuNjc0LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9hZHMucHVibWF0aWMuY29tL0FkU2VydmVyL2pzL3B3dC8xNTg4MjYvMjYyOC9wd3QuanMiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiOmF1dGhvcml0eSIsICJ2YWx1ZSI6ICJhZHMucHVibWF0aWMuY29tIn0sIHsibmFtZSI6ICI6bWV0aG9kIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiOnBhdGgiLCAidmFsdWUiOiAiL0FkU2VydmVyL2pzL3B3dC8xNTg4MjYvMjYyOC9wd3QuanMifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciJ9LCB7Im5hbWUiOiAicmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwOi8vYmFmeWJlaWE2Zmh2eTJxeGdkcHhid2ltYmpia3doNmJ6bmozYm9udXlqMnZka3JiazJjNTVvNHBheWkuaXBmcy5jZi1pcGZzLmNvbS8ifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogInNjcmlwdCJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibm8tY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTEzLjAuNTY3Mi41MyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNTA0LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJhY2NlcHQtcmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJjYWNoZS1jb250cm9sIiwgInZhbHVlIjogIm1heC1hZ2U9MTM5NjU2In0sIHsibmFtZSI6ICJjb250ZW50LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjc3ODU4In0sIHsibmFtZSI6ICJjb250ZW50LXR5cGUiLCAidmFsdWUiOiAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJ9LCB7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJXZWQsIDI0IE1heSAyMDIzIDE1OjQxOjE4IEdNVCJ9LCB7Im5hbWUiOiAiZXhwaXJlcyIsICJ2YWx1ZSI6ICJGcmksIDI2IE1heSAyMDIzIDA2OjI4OjU0IEdNVCJ9LCB7Im5hbWUiOiAibGFzdC1tb2RpZmllZCIsICJ2YWx1ZSI6ICJTYXQsIDI5IEFwciAyMDIzIDAwOjI3OjI3IEdNVCJ9LCB7Im5hbWUiOiAicDNwIiwgInZhbHVlIjogIkNQPVwiTk9JIERTUCBDT1IgTEFXIENVUiBBRE1vIERFVm8gVEFJbyBQU0FvIFBTRG8gSVZBbyBJVkRvIEhJU28gT1RQbyBPVVIgU0FNbyBCVVMgVU5JIENPTSBOQVYgSU5UIERFTSBDTlQgU1RBIFBSRSBMT0NcIiwgQ1A9XCJOT0kgRFNQIENPUiBMQVcgQ1VSIEFETW8gREVWbyBUQUlvIFBTQW8gUFNEbyBJVkFvIElWRG8gSElTbyBPVFBvIE9VUiBTQU1vIEJVUyBVTkkgQ09NIE5BViBJTlQgREVNIENOVCBTVEEgUFJFIExPQ1wiIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiQXBhY2hlIn0sIHsibmFtZSI6ICJ2YXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyNTYzNzEsICJtaW1lVHlwZSI6ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwgImNvbXByZXNzaW9uIjogMTc3OTY2LCAidGV4dCI6ICJpZiAod2luZG93Lm93cGJqcyAmJiB3aW5kb3cuUFdUKSB7ICAgICBjb25zb2xlLmxvZygnREVCVUcgLSBmb3IgaWRlbnRpdHkgb25seSBwcm9maWxlLCBkZXRlY3RlZCBkdXBsaWNhdGUgb3dwYmpzIGFuZCBwd3QgbmFtZXNwYWNlcy4gRXhpdGluZyBJZGVudGl0eSBIdWInKTsgfSBlbHNlIHsvKiBwcmViaWQuanMgdjYuMTguMFVwZGF0ZWQgOiAyMDIzLTAyLTIyKi8vKiEgRm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBwcmViaWQtY29yZS5qcy5MSUNFTlNFLnR4dCAqLyFmdW5jdGlvbigpe3ZhciBlLG49ezQ4Nzc6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHtQZDpmdW5jdGlvbigpe3JldHVybiBzfSxUaDpmdW5jdGlvbigpe3JldHVybiBjfSxfVTpmdW5jdGlvbigpe3JldHVybiBkfX0pO3ZhciByPXQoNjk5NiksaT10KDk4NTMpLG89dCgyNjUpLGE9dCgxODc5KSx1PVwib3V0c3RyZWFtXCI7ZnVuY3Rpb24gYyhlKXt2YXIgbj10aGlzLHQ9ZS51cmwsYz1lLmNvbmZpZyxzPWUuaWQsZD1lLmNhbGxiYWNrLGY9ZS5sb2FkZWQsbD1lLmFkVW5pdENvZGU7dGhpcy51cmw9dCx0aGlzLmNvbmZpZz1jLHRoaXMuaGFuZGxlcnM9e30sdGhpcy5pZD1zLHRoaXMubG9hZGVkPWYsdGhpcy5jbWQ9W10sdGhpcy5wdXNoPWZ1bmN0aW9uKGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGU/bi5sb2FkZWQ/ZS5jYWxsKCk6bi5jbWQucHVzaChlKTooMCxpLmxvZ0Vycm9yKShcIkNvbW1hbmRzIGdpdmVuIHRvIFJlbmRlcmVyLnB1c2ggbXVzdCBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb25cIil9LHRoaXMuY2FsbGJhY2s9ZHx8ZnVuY3Rpb24oKXtuLmxvYWRlZD0hMCxuLnByb2Nlc3MoKX0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzLGM9ZnVuY3Rpb24oKXtlLl9yZW5kZXI/ZS5fcmVuZGVyLmFwcGx5KGUsbik6KDAsaS5sb2dXYXJuKShcIk5vIHJlbmRlciBmdW5jdGlvbiB3YXMgcHJvdmlkZWQsIHBsZWFzZSB1c2UgLnNldFJlbmRlciBvbiB0aGUgcmVuZGVyZXJcIil9OyFmdW5jdGlvbihlKXt2YXIgbj1vd3BianMuYWRVbml0cyx0PSgwLGEuc0UpKG4sKGZ1bmN0aW9uKG4pe3JldHVybiBuLmNvZGU9PT1lfSkpO2lmKCF0KXJldHVybiExO3ZhciByPSgwLG8uWikodCxcInJlbmRlcmVyXCIpLGk9ISEociYmci51cmwmJnIucmVuZGVyKSx1PSgwLG8uWikodCxcIm1lZGlhVHlwZXMudmlkZW8ucmVuZGVyZXJcIiksYz0hISh1JiZ1LnVybCYmdS5yZW5kZXIpO3JldHVybiEhKGkmJiEwIT09ci5iYWNrdXBPbmx5fHxjJiYhMCE9PXUuYmFja3VwT25seSl9KGwpPyh0aGlzLmNtZC51bnNoaWZ0KGMpLCgwLHIuQikodCx1LHRoaXMuY2FsbGJhY2spKTooKDAsaS5sb2dXYXJuKShcIkV4dGVybmFsIEpzIG5vdCBsb2FkZWQgYnkgUmVuZGVyZXIgc2luY2UgcmVuZGVyZXIgdXJsIGFuZCBjYWxsYmFjayBpcyBhbHJlYWR5IGRlZmluZWQgb24gYWRVbml0IFwiLmNvbmNhdChsKSksYygpKX0uYmluZCh0aGlzKX1mdW5jdGlvbiBzKGUpe3JldHVybiEoIWV8fCFlLnVybCl9ZnVuY3Rpb24gZChlLG4pe2UucmVuZGVyKG4pfWMuaW5zdGFsbD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGMoe3VybDplLnVybCxjb25maWc6ZS5jb25maWcsaWQ6ZS5pZCxjYWxsYmFjazplLmNhbGxiYWNrLGxvYWRlZDplLmxvYWRlZCxhZFVuaXRDb2RlOmUuYWRVbml0Q29kZX0pfSxjLnByb3RvdHlwZS5nZXRDb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25maWd9LGMucHJvdG90eXBlLnNldFJlbmRlcj1mdW5jdGlvbihlKXt0aGlzLl9yZW5kZXI9ZX0sYy5wcm90b3R5cGUuc2V0RXZlbnRIYW5kbGVycz1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzPWV9LGMucHJvdG90eXBlLmhhbmRsZVZpZGVvRXZlbnQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5pZCx0PWUuZXZlbnROYW1lO1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuaGFuZGxlcnNbdF0mJnRoaXMuaGFuZGxlcnNbdF0oKSwoMCxpLmxvZ01lc3NhZ2UpKFwiUHJlYmlkIFJlbmRlcmVyIGV2ZW50IGZvciBpZCBcIi5jb25jYXQobixcIiB0eXBlIFwiKS5jb25jYXQodCkpfSxjLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNtZC5sZW5ndGg+MDspdHJ5e3RoaXMuY21kLnNoaWZ0KCkuY2FsbCgpfWNhdGNoKGUpeygwLGkubG9nRXJyb3IpKFwiRXJyb3IgcHJvY2Vzc2luZyBSZW5kZXJlciBjb21tYW5kOiBcIixlKX19fSw3MjYzOmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LmQobix7ZjpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByPXQoMjY1KSxpPXt9O2Z1bmN0aW9uIG8oZSxuLHQpe3ZhciByPWZ1bmN0aW9uKGUsbil7dmFyIHQ9aVtlXT1pW2VdfHx7YmlkZGVyczp7fX07cmV0dXJuIG4/dC5iaWRkZXJzW25dPXQuYmlkZGVyc1tuXXx8e306dH0oZSx0KTtyZXR1cm4gcltuXT0ocltuXXx8MCkrMSxyW25dfXZhciBhPXtpbmNyZW1lbnRSZXF1ZXN0c0NvdW50ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSxcInJlcXVlc3RzQ291bnRlclwiKX0saW5jcmVtZW50QmlkZGVyUmVxdWVzdHNDb3VudGVyOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG8oZSxcInJlcXVlc3RzQ291bnRlclwiLG4pfSxpbmNyZW1lbnRCaWRkZXJXaW5zQ291bnRlcjpmdW5jdGlvbihlLG4pe3JldHVybiBvKGUsXCJ3aW5zQ291bnRlclwiLG4pfSxnZXRSZXF1ZXN0c0NvdW50ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5aKShpLFwiXCIuY29uY2F0KGUsXCIucmVxdWVzdHNDb3VudGVyXCIpKXx8MH0sZ2V0QmlkZGVyUmVxdWVzdHNDb3VudGVyOmZ1bmN0aW9uKGUsbil7cmV0dXJuKDAsci5aKShpLFwiXCIuY29uY2F0KGUsXCIuYmlkZGVycy5cIikuY29uY2F0KG4sXCIucmVxdWVzdHNDb3VudGVyXCIpKXx8MH0sZ2V0QmlkZGVyV2luc0NvdW50ZXI6ZnVuY3Rpb24oZSxuKXtyZXR1cm4oMCxyLlopKGksXCJcIi5jb25jYXQoZSxcIi5iaWRkZXJzLlwiKS5jb25jYXQobixcIi53aW5zQ291bnRlclwiKSl8fDB9fX0sMjgwMTpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXt2YXIgbj1lO3JldHVybntjYWxsQmlkczpmdW5jdGlvbigpe30sc2V0QmlkZGVyQ29kZTpmdW5jdGlvbihlKXtuPWV9LGdldEJpZGRlckNvZGU6ZnVuY3Rpb24oKXtyZXR1cm4gbn19fXQuZChuLHtaOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSl9LDc2MDI6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHtxSjpmdW5jdGlvbigpe3JldHVybiBXfSxWUDpmdW5jdGlvbigpe3JldHVybiAkfSxaUDpmdW5jdGlvbigpe3JldHVybiBpZX0sSk86ZnVuY3Rpb24oKXtyZXR1cm4gSn0scnA6ZnVuY3Rpb24oKXtyZXR1cm4gUX0sdVY6ZnVuY3Rpb24oKXtyZXR1cm4gbmV9LEN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRlfSxuWDpmdW5jdGlvbigpe3JldHVybiBYfX0pO3ZhciByPXQoOTg1MyksaT10KDI2NSksbz10KDEyNjkpLGE9dCg5MDE3KSx1PXQoMTYwOSksYz10KDU3NTUpLHM9dCg4OTYyKSxkPXQoMzQ5NCksZj10KDE4NzkpLGw9dCg3MjYzKSxnPXQoMjY2MSk7ZnVuY3Rpb24gcChlKXtyZXR1cm4gcD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxwKGUpfWZ1bmN0aW9uIHYoZSxuKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiZudWxsIT09bil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuJiZuLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksbiYmeShlLG4pfWZ1bmN0aW9uIHkoZSxuKXtyZXR1cm4geT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLG4pe3JldHVybiBlLl9fcHJvdG9fXz1uLGV9LHkoZSxuKX1mdW5jdGlvbiBiKGUpe3ZhciBuPWZ1bmN0aW9uKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQscj1tKGUpO2lmKG4pe3ZhciBpPW0odGhpcykuY29uc3RydWN0b3I7dD1SZWZsZWN0LmNvbnN0cnVjdChyLGFyZ3VtZW50cyxpKX1lbHNlIHQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7aWYobiYmKFwib2JqZWN0XCI9PT1wKG4pfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKSlyZXR1cm4gbjtpZih2b2lkIDAhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9KGUpfSh0aGlzLHQpfX1mdW5jdGlvbiBtKGUpe3JldHVybiBtPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxtKGUpfWZ1bmN0aW9uIGgoZSxuKXtpZighKGUgaW5zdGFuY2VvZiBuKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIEUoZSxuKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsVChyLmtleSkscil9fWZ1bmN0aW9uIFMoZSxuLHQpe3JldHVybiBuJiZFKGUucHJvdG90eXBlLG4pLHQmJkUoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gVChlKXt2YXIgbj1mdW5jdGlvbihlLG4pe2lmKFwib2JqZWN0XCIhPT1wKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgdD1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09dCl7dmFyIHI9dC5jYWxsKGUsXCJzdHJpbmdcIik7aWYoXCJvYmplY3RcIiE9PXAocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVyblwic3ltYm9sXCI9PT1wKG4pP246U3RyaW5nKG4pfWZ1bmN0aW9uIEEoZSxuLHQpeyFmdW5jdGlvbihlLG4pe2lmKG4uaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdFwiKX0oZSxuKSxuLnNldChlLHQpfWZ1bmN0aW9uIEkoZSxuKXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi5nZXQ/bi5nZXQuY2FsbChlKTpuLnZhbHVlfShlLEMoZSxuLFwiZ2V0XCIpKX1mdW5jdGlvbiB3KGUsbix0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLHQpe2lmKG4uc2V0KW4uc2V0LmNhbGwoZSx0KTtlbHNle2lmKCFuLndyaXRhYmxlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkXCIpO24udmFsdWU9dH19KGUsQyhlLG4sXCJzZXRcIiksdCksdH1mdW5jdGlvbiBDKGUsbix0KXtpZighbi5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBcIit0K1wiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO3JldHVybiBuLmdldChlKX12YXIgTz1uZXcgV2Vha01hcCxCPW5ldyBXZWFrTWFwLFU9bmV3IFdlYWtNYXAsUj1uZXcgV2Vha01hcCxqPW5ldyBXZWFrTWFwLEQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIG4sdCxyO2godGhpcyxlKSxBKHRoaXMsTyx7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksQSh0aGlzLEIse3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLEEodGhpcyxVLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxBKHRoaXMsUix7d3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksQSh0aGlzLGose3dyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLG49dGhpcyxyPXZvaWQgMCwodD1UKHQ9XCJnZW5lcmF0ZWRUaW1lXCIpKWluIG4/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5bdF09cix0aGlzLnJlc2V0KCl9cmV0dXJuIFMoZSxbe2tleTpcInJlc2V0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3codGhpcyxVLG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXt3KGUsUiwoZnVuY3Rpb24odCl7dyhlLGosITApLHcoZSxCLHQpLG4odCl9KSl9KSkpLHcodGhpcyxPLCExKSx3KHRoaXMsQixudWxsKSx3KHRoaXMsaiwhMSksdGhpcy5nZW5lcmF0ZWRUaW1lPW51bGx9fSx7a2V5OlwiZW5hYmxlXCIsdmFsdWU6ZnVuY3Rpb24oKXt3KHRoaXMsTywhMCl9fSx7a2V5OlwiZW5hYmxlZFwiLGdldDpmdW5jdGlvbigpe3JldHVybiBJKHRoaXMsTyl9fSx7a2V5OlwicmVhZHlcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLGopfX0se2tleTpcInByb21pc2VcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLE8pfHxJKHRoaXMsUikuY2FsbCh0aGlzLG51bGwpLEkodGhpcyxVKX19LHtrZXk6XCJzZXRDb25zZW50RGF0YVwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTooMCxyLnRpbWVzdGFtcCkoKTt0aGlzLmdlbmVyYXRlZFRpbWU9bixJKHRoaXMsUikuY2FsbCh0aGlzLGUpfX0se2tleTpcImdldENvbnNlbnREYXRhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gSSh0aGlzLEIpfX1dKSxlfSgpLF89ZnVuY3Rpb24oZSl7dih0LGUpO3ZhciBuPWIodCk7ZnVuY3Rpb24gdCgpe3JldHVybiBoKHRoaXMsdCksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIFModCxbe2tleTpcImdldENvbnNlbnRNZXRhXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldENvbnNlbnREYXRhKCk7aWYoZSYmdGhpcy5nZW5lcmF0ZWRUaW1lKXJldHVybnt1c3A6ZSxnZW5lcmF0ZWRBdDp0aGlzLmdlbmVyYXRlZFRpbWV9fX1dKSx0fShEKSxrPWZ1bmN0aW9uKGUpe3YodCxlKTt2YXIgbj1iKHQpO2Z1bmN0aW9uIHQoKXtyZXR1cm4gaCh0aGlzLHQpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBTKHQsW3trZXk6XCJnZXRDb25zZW50TWV0YVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDb25zZW50RGF0YSgpO2lmKGUmJmUudmVuZG9yRGF0YSYmdGhpcy5nZW5lcmF0ZWRUaW1lKXJldHVybntnZHByQXBwbGllczplLmdkcHJBcHBsaWVzLGNvbnNlbnRTdHJpbmdTaXplOigwLHIuaXNTdHIpKGUudmVuZG9yRGF0YS50Y1N0cmluZyk/ZS52ZW5kb3JEYXRhLnRjU3RyaW5nLmxlbmd0aDowLGdlbmVyYXRlZEF0OnRoaXMuZ2VuZXJhdGVkVGltZSxhcGlWZXJzaW9uOmUuYXBpVmVyc2lvbn19fV0pLHR9KEQpO2Z1bmN0aW9uIFAoZSl7cmV0dXJuIFA9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sUChlKX1mdW5jdGlvbiBOKGUsbil7dmFyIHQ9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuJiYocj1yLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKS5lbnVtZXJhYmxlfSkpKSx0LnB1c2guYXBwbHkodCxyKX1yZXR1cm4gdH1mdW5jdGlvbiB4KGUpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciB0PW51bGwhPWFyZ3VtZW50c1tuXT9hcmd1bWVudHNbbl06e307biUyP04oT2JqZWN0KHQpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihuKXtNKGUsbix0W25dKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTpOKE9iamVjdCh0KSkuZm9yRWFjaCgoZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHEoZSxuKXsobnVsbD09bnx8bj5lLmxlbmd0aCkmJihuPWUubGVuZ3RoKTtmb3IodmFyIHQ9MCxyPW5ldyBBcnJheShuKTt0PG47dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBNKGUsbix0KXtyZXR1cm4obj1mdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbihlLG4pe2lmKFwib2JqZWN0XCIhPT1QKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgdD1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09dCl7dmFyIHI9dC5jYWxsKGUsXCJzdHJpbmdcIik7aWYoXCJvYmplY3RcIiE9PVAocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVyblwic3ltYm9sXCI9PT1QKG4pP246U3RyaW5nKG4pfShuKSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW25dPXQsZX1mdW5jdGlvbiBHKCl7cmV0dXJuIEc9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfXJldHVybiBlfSxHLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgVz17Q0xJRU5UOlwiY2xpZW50XCIsU0VSVkVSOlwic2VydmVyXCJ9LEY9dCg1NjQ0KSx6PXQoMjMxOSksTD17fSxLPUwuYmlkZGVyUmVnaXN0cnk9e30sVj1MLmFsaWFzUmVnaXN0cnk9e30sSD1bXTtzLnZjLmdldENvbmZpZyhcInMyc0NvbmZpZ1wiLChmdW5jdGlvbihlKXtlJiZlLnMyc0NvbmZpZyYmKEg9KDAsci5pc0FycmF5KShlLnMyc0NvbmZpZyk/ZS5zMnNDb25maWc6W2UuczJzQ29uZmlnXSl9KSk7dmFyIFo9e30sWT0oMCxkLnozKShcInN5bmNcIiwoZnVuY3Rpb24oZSl7dmFyIG49ZS5iaWRkZXJDb2RlLHQ9ZS5hdWN0aW9uSWQsbz1lLmJpZGRlclJlcXVlc3RJZCxhPWUuYWRVbml0cyx1PWUuc3JjO3JldHVybiBhLnJlZHVjZSgoZnVuY3Rpb24oZSxhKXtyZXR1cm4gZS5wdXNoKGEuYmlkcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZGRlcj09PW59KSkucmVkdWNlKChmdW5jdGlvbihlLG4pe3ZhciBjPW51bGw9PShuPUcoe30sbiwoMCxyLmdldERlZmluZWRQYXJhbXMpKGEsW1wibmF0aXZlUGFyYW1zXCIsXCJvcnRiMkltcFwiLFwibWVkaWFUeXBlXCIsXCJyZW5kZXJlclwiLFwic3RvcmVkQXVjdGlvblJlc3BvbnNlXCJdKSkpLm1lZGlhVHlwZXM/YS5tZWRpYVR5cGVzOm4ubWVkaWFUeXBlcztyZXR1cm4oMCxyLmlzVmFsaWRNZWRpYVR5cGVzKShjKT9uPUcoe30sbix7bWVkaWFUeXBlczpjfSk6KDAsci5sb2dFcnJvcikoXCJtZWRpYVR5cGVzIGlzIG5vdCBjb3JyZWN0bHkgY29uZmlndXJlZCBmb3IgYWR1bml0IFwiLmNvbmNhdChhLmNvZGUpKSxlLnB1c2goRyh7fSxuLHthZFVuaXRDb2RlOmEuY29kZSx0cmFuc2FjdGlvbklkOmEudHJhbnNhY3Rpb25JZCxzaXplczooMCxpLlopKGMsXCJiYW5uZXIuc2l6ZXNcIil8fCgwLGkuWikoYyxcInZpZGVvLnBsYXllclNpemVcIil8fFtdLGJpZElkOm4uYmlkX2lkfHwoMCxyLmdldFVuaXF1ZUlkZW50aWZpZXJTdHIpKCksYmlkZGVyUmVxdWVzdElkOm8sYXVjdGlvbklkOnQsc3JjOnUsYmlkUmVxdWVzdHNDb3VudDpsLmYuZ2V0UmVxdWVzdHNDb3VudGVyKGEuY29kZSksYmlkZGVyUmVxdWVzdHNDb3VudDpsLmYuZ2V0QmlkZGVyUmVxdWVzdHNDb3VudGVyKGEuY29kZSxuLmJpZGRlciksYmlkZGVyV2luc0NvdW50OmwuZi5nZXRCaWRkZXJXaW5zQ291bnRlcihhLmNvZGUsbi5iaWRkZXIpfSkpLGV9KSxbXSkpLGV9KSxbXSkucmVkdWNlKHIuZmxhdHRlbixbXSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm5cIlwiIT09ZX0pKX0pLFwiZ2V0Qmlkc1wiKSxKPSgwLGQuejMpKFwic3luY1wiLChmdW5jdGlvbihlLG4pe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLmdldFMyU0JpZGRlcnM7aWYobnVsbD09bilyZXR1cm4gZTt2YXIgcj0odm9pZCAwPT09dD9uZTp0KShuKTtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiByLmhhcyhlLmJpZGRlcil9KSl9KSxcImZpbHRlckJpZHNGb3JBZFVuaXRcIiksUT1uZXcgayxYPW5ldyBfLCQ9e2dldENvcHBhOmZ1bmN0aW9uKCl7cmV0dXJuISFzLnZjLmdldENvbmZpZyhcImNvcHBhXCIpfX0sZWU9KDAsZC56MykoXCJzeW5jXCIsKGZ1bmN0aW9uKGUsbil7cmV0dXJuKDAsby5VQikoZSxuKX0pLFwic2V0dXBBZFVuaXRNZWRpYVR5cGVzXCIpO2Z1bmN0aW9uIG5lKGUpeygwLHIuaXNBcnJheSkoZSl8fChlPVtlXSk7dmFyIG49bmV3IFNldChbbnVsbF0pO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuZW5hYmxlZH0pKS5mbGF0TWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRkZXJzfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBuLmFkZChlKX0pKSxufXZhciB0ZT0oMCxkLnozKShcInN5bmNcIiwoZnVuY3Rpb24oZSxuKXt2YXIgdCxpPShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLmdldFMyU0JpZGRlcnMsbz0odm9pZCAwPT09aT9uZTppKShuKTtyZXR1cm4oMCxyLmdldEJpZGRlckNvZGVzKShlKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbby5oYXMobik/Vy5TRVJWRVI6Vy5DTElFTlRdLnB1c2gobiksZX0pLChNKHQ9e30sVy5DTElFTlQsW10pLE0odCxXLlNFUlZFUixbXSksdCkpfSksXCJwYXJ0aXRpb25CaWRkZXJzXCIpO2Z1bmN0aW9uIHJlKGUsbix0KXt0cnl7dmFyIGk9S1tlXS5nZXRTcGVjKCk7aSYmaVtuXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaVtuXSYmKCgwLHIubG9nSW5mbykoXCJJbnZva2luZyBcIi5jb25jYXQoZSxcIi5cIikuY29uY2F0KG4pKSxzLnZjLnJ1bldpdGhCaWRkZXIoZSxyLmJpbmQuY2FsbChpW25dLGksdCkpKX1jYXRjaCh0KXsoMCxyLmxvZ1dhcm4pKFwiRXJyb3IgY2FsbGluZyBcIi5jb25jYXQobixcIiBvZiBcIikuY29uY2F0KGUpKX19TC5tYWtlQmlkUmVxdWVzdHM9KDAsZC56MykoXCJzeW5jXCIsKGZ1bmN0aW9uKGUsbix0LGksbyl7ei5lbWl0KEYuRVZFTlRTLkJFRk9SRV9SRVFVRVNUX0JJRFMsZSksKDAsYS5GYikoZSksZT1lZShlLG8pO3ZhciB1PXRlKGUsSCksYz11W1cuQ0xJRU5UXSxkPXVbVy5TRVJWRVJdO3MudmMuZ2V0Q29uZmlnKFwiYmlkZGVyU2VxdWVuY2VcIik9PT1zLkZEJiYoYz0oMCxyLnNodWZmbGUpKGMpKTt2YXIgbD0oMCxnLm4pKCkscD1bXTtILmZvckVhY2goKGZ1bmN0aW9uKGkpe2lmKGkmJmkuZW5hYmxlZCl7dmFyIG89ZnVuY3Rpb24oZSxuKXt2YXIgdD0oMCxyLmRlZXBDbG9uZSkoZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5iaWRzPUooZS5iaWRzLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYmlkX2lkPSgwLHIuZ2V0VW5pcXVlSWRlbnRpZmllclN0cikoKSxlfSkpfSkpLHQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gMCE9PWUuYmlkcy5sZW5ndGh9KSl9KGUsaSksYT0oMCxyLmdlbmVyYXRlVVVJRCkoKTtkLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB1PSgwLHIuZ2V0VW5pcXVlSWRlbnRpZmllclN0cikoKSxjPXtiaWRkZXJDb2RlOmUsYXVjdGlvbklkOnQsYmlkZGVyUmVxdWVzdElkOnUsdW5pcXVlUGJzVGlkOmEsYmlkczpZKHtiaWRkZXJDb2RlOmUsYXVjdGlvbklkOnQsYmlkZGVyUmVxdWVzdElkOnUsYWRVbml0czooMCxyLmRlZXBDbG9uZSkobyksc3JjOkYuUzJTLlNSQ30pLGF1Y3Rpb25TdGFydDpuLHRpbWVvdXQ6aS50aW1lb3V0LHNyYzpGLlMyUy5TUkMscmVmZXJlckluZm86bH07MCE9PWMuYmlkcy5sZW5ndGgmJnAucHVzaChjKX0pKSxvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUuYmlkcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybigwLGYuc0UpKHAsKGZ1bmN0aW9uKG4pe3JldHVybigwLGYuc0UpKG4uYmlkcywoZnVuY3Rpb24obil7cmV0dXJuIG4uYmlkSWQ9PT1lLmJpZF9pZH0pKX0pKX0pKTtlLmJpZHM9bn0pKSxwLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuYWRVbml0c1MyU0NvcHkmJihlLmFkVW5pdHNTMlNDb3B5PW8uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRzLmxlbmd0aD4wfSkpKX0pKX19KSk7dmFyIHY9ZnVuY3Rpb24oZSl7dmFyIG49KDAsci5kZWVwQ2xvbmUpKGUpO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuYmlkcz1KKGUuYmlkcyxudWxsKX0pKSxuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT1lLmJpZHMubGVuZ3RofSkpfShlKTtyZXR1cm4gYy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgYT0oMCxyLmdldFVuaXF1ZUlkZW50aWZpZXJTdHIpKCksdT17YmlkZGVyQ29kZTplLGF1Y3Rpb25JZDp0LGJpZGRlclJlcXVlc3RJZDphLGJpZHM6WSh7YmlkZGVyQ29kZTplLGF1Y3Rpb25JZDp0LGJpZGRlclJlcXVlc3RJZDphLGFkVW5pdHM6KDAsci5kZWVwQ2xvbmUpKHYpLGxhYmVsczpvLHNyYzpcImNsaWVudFwifSksYXVjdGlvblN0YXJ0Om4sdGltZW91dDppLHJlZmVyZXJJbmZvOmx9LGM9S1tlXTtjfHwoMCxyLmxvZ0Vycm9yKShcIlRyeWluZyB0byBtYWtlIGEgcmVxdWVzdCBmb3IgYmlkZGVyIHRoYXQgZG9lcyBub3QgZXhpc3Q6IFwiLmNvbmNhdChlKSksYyYmdS5iaWRzJiYwIT09dS5iaWRzLmxlbmd0aCYmcC5wdXNoKHUpfSkpLFEuZ2V0Q29uc2VudERhdGEoKSYmcC5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmdkcHJDb25zZW50PVEuZ2V0Q29uc2VudERhdGEoKX0pKSxYLmdldENvbnNlbnREYXRhKCkmJnAuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51c3BDb25zZW50PVguZ2V0Q29uc2VudERhdGEoKX0pKSxwfSksXCJtYWtlQmlkUmVxdWVzdHNcIiksTC5jYWxsQmlkcz1mdW5jdGlvbihlLG4sdCxpLG8sYSx1KXtpZihuLmxlbmd0aCl7dmFyIGQ9KHk9bi5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbTnVtYmVyKHZvaWQgMCE9PW4uc3JjJiZuLnNyYz09PUYuUzJTLlNSQyldLnB1c2gobiksZX0pLFtbXSxbXV0pLDIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oeSl8fGZ1bmN0aW9uKGUsbil7dmFyIHQ9bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9dCl7dmFyIHIsaSxvLGEsdT1bXSxjPSEwLHM9ITE7dHJ5e2ZvcihvPSh0PXQuY2FsbChlKSkubmV4dCwwOyEoYz0ocj1vLmNhbGwodCkpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLDIhPT11Lmxlbmd0aCk7Yz0hMCk7fWNhdGNoKGUpe3M9ITAsaT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT10LnJldHVybiYmKGE9dC5yZXR1cm4oKSxPYmplY3QoYSkhPT1hKSlyZXR1cm59ZmluYWxseXtpZihzKXRocm93IGl9fXJldHVybiB1fX0oeSl8fGZ1bmN0aW9uKGUsbil7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHEoZSwyKTt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PXQmJmUuY29uc3RydWN0b3ImJih0PWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PXR8fFwiU2V0XCI9PT10P0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PXR8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpP3EoZSwyKTp2b2lkIDB9fSh5KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxmPWRbMF0sbD1kWzFdLGc9W107bC5mb3JFYWNoKChmdW5jdGlvbihlKXtmb3IodmFyIG49LTEsdD0wO3Q8Zy5sZW5ndGg7Kyt0KWlmKGUudW5pcXVlUGJzVGlkPT09Z1t0XS51bmlxdWVQYnNUaWQpe249dDticmVha31uPD0tMSYmZy5wdXNoKGUpfSkpO3ZhciBwPTAsdj0oMCxyLmdlbmVyYXRlVVVJRCkoKTtILmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGUmJmdbcF0mJm5lKGUpLmhhcyhnW3BdLmJpZGRlckNvZGUpKXt2YXIgbj0oMCxjLk8pKGEsbz97cmVxdWVzdDpvLnJlcXVlc3QuYmluZChudWxsLFwiczJzXCIpLGRvbmU6by5kb25lfTp2b2lkIDApLHU9ZS5iaWRkZXJzLHM9S1tlLmFkYXB0ZXJdLGQ9Z1twXS51bmlxdWVQYnNUaWQsZj1nW3BdLmFkVW5pdHNTMlNDb3B5LHk9bC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnVuaXF1ZVBic1RpZD09PWR9KSk7aWYocyl7dmFyIGI9e3RpZDp2LGFkX3VuaXRzOmYsczJzQ29uZmlnOmV9O2lmKGIuYWRfdW5pdHMubGVuZ3RoKXt2YXIgbT15Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnQ9KDAsci50aW1lc3RhbXApKCksaS5iaW5kKGUpfSkpLGg9KDAsci5nZXRCaWRkZXJDb2RlcykoYi5hZF91bml0cykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdS5pbmNsdWRlcyhlKX0pKTsoMCxyLmxvZ01lc3NhZ2UpKFwiQ0FMTElORyBTMlMgSEVBREVSIEJJRERFUlMgPT09PSBcIi5jb25jYXQoaC5sZW5ndGg+MD9oLmpvaW4oXCIsIFwiKTonTm8gYmlkZGVyIHNwZWNpZmllZCwgdXNpbmcgXCJvcnRiMkltcFwiIGRlZmluaXRpb24ocykgb25seScpKSx5LmZvckVhY2goKGZ1bmN0aW9uKGUpe3ouZW1pdChGLkVWRU5UUy5CSURfUkVRVUVTVEVELHgoeCh7fSxlKSx7fSx7dGlkOnZ9KSl9KSkscy5jYWxsQmlkcyhiLGwsdCwoZnVuY3Rpb24oKXtyZXR1cm4gbS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSkpfSksbil9fWVsc2UoMCxyLmxvZ0Vycm9yKShcIm1pc3NpbmcgXCIrZS5hZGFwdGVyKTtwKyt9fSkpLGYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5zdGFydD0oMCxyLnRpbWVzdGFtcCkoKTt2YXIgbj1LW2UuYmlkZGVyQ29kZV07cy52Yy5ydW5XaXRoQmlkZGVyKGUuYmlkZGVyQ29kZSwoZnVuY3Rpb24oKXsoMCxyLmxvZ01lc3NhZ2UpKFwiQ0FMTElORyBCSURERVJcIiksei5lbWl0KEYuRVZFTlRTLkJJRF9SRVFVRVNURUQsZSl9KSk7dmFyIGQ9KDAsYy5PKShhLG8/e3JlcXVlc3Q6by5yZXF1ZXN0LmJpbmQobnVsbCxlLmJpZGRlckNvZGUpLGRvbmU6by5kb25lfTp2b2lkIDApLGY9aS5iaW5kKGUpO3RyeXtzLnZjLnJ1bldpdGhCaWRkZXIoZS5iaWRkZXJDb2RlLHIuYmluZC5jYWxsKG4uY2FsbEJpZHMsbixlLHQsZixkLHUscy52Yy5jYWxsYmFja1dpdGhCaWRkZXIoZS5iaWRkZXJDb2RlKSkpfWNhdGNoKG4peygwLHIubG9nRXJyb3IpKFwiXCIuY29uY2F0KGUuYmlkZGVyQ29kZSxcIiBCaWQgQWRhcHRlciBlbWl0dGVkIGFuIHVuY2F1Z2h0IGVycm9yIHdoZW4gcGFyc2luZyB0aGVpciBiaWRSZXF1ZXN0XCIpLHtlOm4sYmlkUmVxdWVzdDplfSksZigpfX0pKX1lbHNlKDAsci5sb2dXYXJuKShcImNhbGxCaWRzIGV4ZWN1dGVkIHdpdGggbm8gYmlkUmVxdWVzdHMuICBXZXJlIHRoZXkgZmlsdGVyZWQgYnkgbGFiZWxzIG9yIHNpemluZz9cIik7dmFyIHl9LEwudmlkZW9BZGFwdGVycz1bXSxMLnJlZ2lzdGVyQmlkQWRhcHRlcj1mdW5jdGlvbihlLG4pe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLnN1cHBvcnRlZE1lZGlhVHlwZXMsaT12b2lkIDA9PT10P1tdOnQ7ZSYmbj9cImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhbGxCaWRzPyhLW25dPWUsKDAsZi5xOSkoaSxcInZpZGVvXCIpJiZMLnZpZGVvQWRhcHRlcnMucHVzaChuKSwoMCxmLnE5KShpLFwibmF0aXZlXCIpJiZhLlNnLnB1c2gobikpOigwLHIubG9nRXJyb3IpKFwiQmlkZGVyIGFkYXB0b3IgZXJyb3IgZm9yIGJpZGRlciBjb2RlOiBcIituK1wiYmlkZGVyIG11c3QgaW1wbGVtZW50IGEgY2FsbEJpZHMoKSBmdW5jdGlvblwiKTooMCxyLmxvZ0Vycm9yKShcImJpZEFkYXB0ZXIgb3IgYmlkZGVyQ29kZSBub3Qgc3BlY2lmaWVkXCIpfSxMLmFsaWFzQmlkQWRhcHRlcj1mdW5jdGlvbihlLG4sdCl7aWYodm9pZCAwPT09S1tuXSl7dmFyIGk9S1tlXTtpZih2b2lkIDA9PT1pKXt2YXIgbz1bXTtILmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKHQuYmlkZGVycyYmdC5iaWRkZXJzLmxlbmd0aCl7dmFyIHI9dCYmdC5iaWRkZXJzO3QmJigwLGYucTkpKHIsbik/VltuXT1lOm8ucHVzaChlKX19KSksby5mb3JFYWNoKChmdW5jdGlvbihlKXsoMCxyLmxvZ0Vycm9yKSgnYmlkZGVyQ29kZSBcIicrZSsnXCIgaXMgbm90IGFuIGV4aXN0aW5nIGJpZGRlci4nLFwiYWRhcHRlck1hbmFnZXIuYWxpYXNCaWRBZGFwdGVyXCIpfSkpfWVsc2UgdHJ5e3ZhciBjLHM9ZnVuY3Rpb24oZSl7dmFyIG49W107cmV0dXJuKDAsZi5xOSkoTC52aWRlb0FkYXB0ZXJzLGUpJiZuLnB1c2goXCJ2aWRlb1wiKSwoMCxmLnE5KShhLlNnLGUpJiZuLnB1c2goXCJuYXRpdmVcIiksbn0oZSk7aWYoaS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPU9iamVjdC5wcm90b3R5cGUpKGM9bmV3IGkuY29uc3RydWN0b3IpLnNldEJpZGRlckNvZGUobik7ZWxzZXt2YXIgZD1pLmdldFNwZWMoKSxsPXQmJnQuZ3ZsaWQsZz10JiZ0LnNraXBQYnNBbGlhc2luZztjPSgwLHUubmV3QmlkZGVyKShHKHt9LGQse2NvZGU6bixndmxpZDpsLHNraXBQYnNBbGlhc2luZzpnfSkpLFZbbl09ZX1MLnJlZ2lzdGVyQmlkQWRhcHRlcihjLG4se3N1cHBvcnRlZE1lZGlhVHlwZXM6c30pfWNhdGNoKG4peygwLHIubG9nRXJyb3IpKGUrXCIgYmlkZGVyIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGFsaWFzaW5nLlwiLFwiYWRhcHRlck1hbmFnZXIuYWxpYXNCaWRBZGFwdGVyXCIpfX1lbHNlKDAsci5sb2dNZXNzYWdlKSgnYWxpYXMgbmFtZSBcIicrbisnXCIgaGFzIGJlZW4gYWxyZWFkeSBzcGVjaWZpZWQuJyl9LEwucmVnaXN0ZXJBbmFseXRpY3NBZGFwdGVyPWZ1bmN0aW9uKGUpe3ZhciBuPWUuYWRhcHRlcix0PWUuY29kZSxpPWUuZ3ZsaWQ7biYmdD9cImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmVuYWJsZUFuYWx5dGljcz8obi5jb2RlPXQsWlt0XT17YWRhcHRlcjpuLGd2bGlkOml9KTooMCxyLmxvZ0Vycm9yKSgnUHJlYmlkIEVycm9yOiBBbmFseXRpY3MgYWRhcHRvciBlcnJvciBmb3IgYW5hbHl0aWNzIFwiJy5jb25jYXQodCwnXCJcXG4gICAgICAgIGFuYWx5dGljcyBhZGFwdGVyIG11c3QgaW1wbGVtZW50IGFuIGVuYWJsZUFuYWx5dGljcygpIGZ1bmN0aW9uJykpOigwLHIubG9nRXJyb3IpKFwiUHJlYmlkIEVycm9yOiBhbmFseXRpY3NBZGFwdGVyIG9yIGFuYWx5dGljc0NvZGUgbm90IHNwZWNpZmllZFwiKX0sTC5lbmFibGVBbmFseXRpY3M9ZnVuY3Rpb24oZSl7KDAsci5pc0FycmF5KShlKXx8KGU9W2VdKSwoMCxyLl9lYWNoKShlLChmdW5jdGlvbihlKXt2YXIgbj1aW2UucHJvdmlkZXJdO24mJm4uYWRhcHRlcj9uLmFkYXB0ZXIuZW5hYmxlQW5hbHl0aWNzKGUpOigwLHIubG9nRXJyb3IpKFwiUHJlYmlkIEVycm9yOiBubyBhbmFseXRpY3MgYWRhcHRlciBmb3VuZCBpbiByZWdpc3RyeSBmb3IgJ1wiLmNvbmNhdChlLnByb3ZpZGVyLFwiJy5cIikpfSkpfSxMLmdldEJpZEFkYXB0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIEtbZV19LEwuZ2V0QW5hbHl0aWNzQWRhcHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gWltlXX0sTC5jYWxsVGltZWRPdXRCaWRkZXJzPWZ1bmN0aW9uKGUsbix0KXtuPW4ubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gbi5wYXJhbXM9KDAsci5nZXRVc2VyQ29uZmlndXJlZFBhcmFtcykoZSxuLmFkVW5pdENvZGUsbi5iaWRkZXIpLG4udGltZW91dD10LG59KSksbj0oMCxyLmdyb3VwQnkpKG4sXCJiaWRkZXJcIiksT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmUoZSxcIm9uVGltZW91dFwiLG5bZV0pfSkpfSxMLmNhbGxCaWRXb25CaWRkZXI9ZnVuY3Rpb24oZSxuLHQpe24ucGFyYW1zPSgwLHIuZ2V0VXNlckNvbmZpZ3VyZWRQYXJhbXMpKHQsbi5hZFVuaXRDb2RlLG4uYmlkZGVyKSxsLmYuaW5jcmVtZW50QmlkZGVyV2luc0NvdW50ZXIobi5hZFVuaXRDb2RlLG4uYmlkZGVyKSxyZShlLFwib25CaWRXb25cIixuKX0sTC5jYWxsU2V0VGFyZ2V0aW5nQmlkZGVyPWZ1bmN0aW9uKGUsbil7cmUoZSxcIm9uU2V0VGFyZ2V0aW5nXCIsbil9LEwuY2FsbEJpZFZpZXdhYmxlQmlkZGVyPWZ1bmN0aW9uKGUsbil7cmUoZSxcIm9uQmlkVmlld2FibGVcIixuKX0sTC5jYWxsQmlkZGVyRXJyb3I9ZnVuY3Rpb24oZSxuLHQpe3JlKGUsXCJvbkJpZGRlckVycm9yXCIse2Vycm9yOm4sYmlkZGVyUmVxdWVzdDp0fSl9O3ZhciBpZT1MfSwxNjA5OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LnIobiksdC5kKG4se2dldElhYlN1YkNhdGVnb3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGp9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sbmV3QmlkZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIE99LHByZWxvYWRCaWRkZXJNYXBwaW5nRmlsZTpmdW5jdGlvbigpe3JldHVybiBSfSxwcm9jZXNzQmlkZGVyUmVxdWVzdHM6ZnVuY3Rpb24oKXtyZXR1cm4gQn0scmVnaXN0ZXJCaWRkZXI6ZnVuY3Rpb24oKXtyZXR1cm4gQ30scmVnaXN0ZXJTeW5jSW5uZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVX0sc3RvcmFnZTpmdW5jdGlvbigpe3JldHVybiBBfX0pO3ZhciByPXQoMjgwMSksaT10KDc2MDIpLG89dCg4OTYyKSxhPXQoMTQ3NyksdT10KDcxMTIpLGM9dCg5MDE3KSxzPXQoMTkyOSksZD10KDU2NDQpLGY9dCgyMzE5KSxsPXQoMTg3OSksZz10KDU3NTUpLHA9dCg5ODUzKSx2PXQoMjY1KSx5PXQoODI2NSksYj10KDM0OTQpLG09dCg1ODQ5KSxoPXQoNDc2Nik7ZnVuY3Rpb24gRShlLG4peyhudWxsPT1ufHxuPmUubGVuZ3RoKSYmKG49ZS5sZW5ndGgpO2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KG4pO3Q8bjt0Kyspclt0XT1lW3RdO3JldHVybiByfWZ1bmN0aW9uIFMoZSl7cmV0dXJuIFM9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sUyhlKX1mdW5jdGlvbiBUKCl7cmV0dXJuIFQ9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfXJldHVybiBlfSxULmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgQT0oMCxtLmVBKShcImJpZGRlckZhY3RvcnlcIiksST1bXCJjcG1cIixcInR0bFwiLFwiY3JlYXRpdmVJZFwiLFwibmV0UmV2ZW51ZVwiLFwiY3VycmVuY3lcIl0sdz0xO2Z1bmN0aW9uIEMoZSl7dmFyIG49QXJyYXkuaXNBcnJheShlLnN1cHBvcnRlZE1lZGlhVHlwZXMpP3tzdXBwb3J0ZWRNZWRpYVR5cGVzOmUuc3VwcG9ydGVkTWVkaWFUeXBlc306dm9pZCAwO2Z1bmN0aW9uIHQoZSl7dmFyIHQ9TyhlKTtpLlpQLnJlZ2lzdGVyQmlkQWRhcHRlcih0LGUuY29kZSxuKX10KGUpLEFycmF5LmlzQXJyYXkoZS5hbGlhc2VzKSYmZS5hbGlhc2VzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByLG8sYT1uOygwLHAuaXNQbGFpbk9iamVjdCkobikmJihhPW4uY29kZSxyPW4uZ3ZsaWQsbz1uLnNraXBQYnNBbGlhc2luZyksaS5aUC5hbGlhc1JlZ2lzdHJ5W2FdPWUuY29kZSx0KFQoe30sZSx7Y29kZTphLGd2bGlkOnIsc2tpcFBic0FsaWFzaW5nOm99KSl9KSl9ZnVuY3Rpb24gTyhlKXtyZXR1cm4gVChuZXcgci5aKGUuY29kZSkse2dldFNwZWM6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmZyZWV6ZShlKX0scmVnaXN0ZXJTeW5jczpuLGNhbGxCaWRzOmZ1bmN0aW9uKHIsdSxjLHMsbCxnKXtpZihBcnJheS5pc0FycmF5KHIuYmlkcykpe3ZhciB2PXt9LHk9W10sYj1yLmJpZHMuZmlsdGVyKHQpO2lmKDAhPT1iLmxlbmd0aCl7dmFyIG09e307Yi5mb3JFYWNoKChmdW5jdGlvbihlKXttW2UuYmlkSWRdPWUsZS5hZFVuaXRDb2RlfHwoZS5hZFVuaXRDb2RlPWUucGxhY2VtZW50Q29kZSl9KSksQihlLGIscixzLGcse29uUmVxdWVzdDpmdW5jdGlvbihlKXtyZXR1cm4gZi5lbWl0KGQuRVZFTlRTLkJFRk9SRV9CSURERVJfSFRUUCxyLGUpfSxvblJlc3BvbnNlOmZ1bmN0aW9uKG4pe2woZS5jb2RlKSx5LnB1c2gobil9LG9uRXJyb3I6ZnVuY3Rpb24obix0KXtsKGUuY29kZSksaS5aUC5jYWxsQmlkZGVyRXJyb3IoZS5jb2RlLHQsciksZi5lbWl0KGQuRVZFTlRTLkJJRERFUl9FUlJPUix7ZXJyb3I6dCxiaWRkZXJSZXF1ZXN0OnJ9KSwoMCxwLmxvZ0Vycm9yKShcIlNlcnZlciBjYWxsIGZvciBcIi5jb25jYXQoZS5jb2RlLFwiIGZhaWxlZDogXCIpLmNvbmNhdChuLFwiIFwiKS5jb25jYXQodC5zdGF0dXMsXCIuIENvbnRpbnVpbmcgd2l0aG91dCBiaWRzLlwiKSl9LG9uQmlkOmZ1bmN0aW9uKG4pe3ZhciB0PW1bbi5yZXF1ZXN0SWRdO2lmKHQpe24ub3JpZ2luYWxDcG09bi5jcG0sbi5vcmlnaW5hbEN1cnJlbmN5PW4uY3VycmVuY3ksbi5tZXRhPW4ubWV0YXx8VCh7fSxuW3QuYmlkZGVyXSk7dmFyIHI9VCgoMCxhLm0pKGQuU1RBVFVTLkdPT0QsdCksbik7IWZ1bmN0aW9uKGUsbil7dltlXT0hMCxEKGUsbikmJnUoZSxuKX0odC5hZFVuaXRDb2RlLHIpfWVsc2UoMCxwLmxvZ1dhcm4pKFwiQmlkZGVyIFwiLmNvbmNhdChlLmNvZGUsXCIgbWFkZSBiaWQgZm9yIHVua25vd24gcmVxdWVzdCBJRDogXCIpLmNvbmNhdChuLnJlcXVlc3RJZCxcIi4gSWdub3JpbmcuXCIpKX0sb25Db21wbGV0aW9uOmh9KX1lbHNlIGgoKX1mdW5jdGlvbiBoKCl7YygpLG8udmMucnVuV2l0aEJpZGRlcihlLmNvZGUsKGZ1bmN0aW9uKCl7Zi5lbWl0KGQuRVZFTlRTLkJJRERFUl9ET05FLHIpLG4oeSxyLmdkcHJDb25zZW50LHIudXNwQ29uc2VudCl9KSl9fX0pO2Z1bmN0aW9uIG4obix0LHIpe1UoZSxuLHQscil9ZnVuY3Rpb24gdChuKXtyZXR1cm4hIWUuaXNCaWRSZXF1ZXN0VmFsaWQobil8fCgoMCxwLmxvZ1dhcm4pKFwiSW52YWxpZCBiaWQgc2VudCB0byBiaWRkZXIgXCIuY29uY2F0KGUuY29kZSxcIjogXCIpLmNvbmNhdChKU09OLnN0cmluZ2lmeShuKSkpLCExKX19dmFyIEI9KDAsYi56MykoXCJzeW5jXCIsKGZ1bmN0aW9uKGUsbix0LHIsaSxvKXt2YXIgYT1vLm9uUmVxdWVzdCx1PW8ub25SZXNwb25zZSxjPW8ub25FcnJvcixzPW8ub25CaWQsZD1vLm9uQ29tcGxldGlvbixmPWUuYnVpbGRSZXF1ZXN0cyhuLHQpO2lmKGYmJjAhPT1mLmxlbmd0aCl7QXJyYXkuaXNBcnJheShmKXx8KGY9W2ZdKTt2YXIgbD0oMCxwLmRlbGF5RXhlY3V0aW9uKShkLGYubGVuZ3RoKTtmLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciB0LG89aSgoZnVuY3Rpb24odCxyKXt0cnl7dD1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe312YXIgaTt0PXtib2R5OnQsaGVhZGVyczp7Z2V0OnIuZ2V0UmVzcG9uc2VIZWFkZXIuYmluZChyKX19LHUodCk7dHJ5e2k9ZS5pbnRlcnByZXRSZXNwb25zZSh0LG4pfWNhdGNoKG4pe3JldHVybigwLHAubG9nRXJyb3IpKFwiQmlkZGVyIFwiLmNvbmNhdChlLmNvZGUsXCIgZmFpbGVkIHRvIGludGVycHJldCB0aGUgc2VydmVyJ3MgcmVzcG9uc2UuIENvbnRpbnVpbmcgd2l0aG91dCBiaWRzXCIpLG51bGwsbiksdm9pZCBsKCl9aSYmKCgwLHAuaXNBcnJheSkoaSk/aS5mb3JFYWNoKHMpOnMoaSkpLGwoKX0pKSxkPWkoKGZ1bmN0aW9uKGUsbil7YyhlLG4pLGwoKX0pKTtzd2l0Y2goYShuKSxuLm1ldGhvZCl7Y2FzZVwiR0VUXCI6cihcIlwiLmNvbmNhdChuLnVybCkuY29uY2F0KCh0PW4uZGF0YSk/XCI/XCIuY29uY2F0KFwib2JqZWN0XCI9PT1TKHQpPygwLHAucGFyc2VRdWVyeVN0cmluZ1BhcmFtZXRlcnMpKHQpOnQpOlwiXCIpLHtzdWNjZXNzOm8sZXJyb3I6ZH0sdm9pZCAwLFQoe21ldGhvZDpcIkdFVFwiLHdpdGhDcmVkZW50aWFsczohMH0sbi5vcHRpb25zKSk7YnJlYWs7Y2FzZVwiUE9TVFwiOnIobi51cmwse3N1Y2Nlc3M6byxlcnJvcjpkfSxcInN0cmluZ1wiPT10eXBlb2Ygbi5kYXRhP24uZGF0YTpKU09OLnN0cmluZ2lmeShuLmRhdGEpLFQoe21ldGhvZDpcIlBPU1RcIixjb250ZW50VHlwZTpcInRleHQvcGxhaW5cIix3aXRoQ3JlZGVudGlhbHM6ITB9LG4ub3B0aW9ucykpO2JyZWFrO2RlZmF1bHQ6KDAscC5sb2dXYXJuKShcIlNraXBwaW5nIGludmFsaWQgcmVxdWVzdCBmcm9tIFwiLmNvbmNhdChlLmNvZGUsXCIuIFJlcXVlc3QgdHlwZSBcIikuY29uY2F0KG4udHlwZSxcIiBtdXN0IGJlIEdFVCBvciBQT1NUXCIpKSxsKCl9fSkpfWVsc2UgZCgpfSksXCJwcm9jZXNzQmlkZGVyUmVxdWVzdHNcIiksVT0oMCxiLnozKShcImFzeW5jXCIsKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBhPW8udmMuZ2V0Q29uZmlnKFwidXNlclN5bmMuYWxpYXNTeW5jRW5hYmxlZFwiKTtpZihlLmdldFVzZXJTeW5jcyYmKGF8fCFpLlpQLmFsaWFzUmVnaXN0cnlbZS5jb2RlXSkpe3ZhciBjPW8udmMuZ2V0Q29uZmlnKFwidXNlclN5bmMuZmlsdGVyU2V0dGluZ3NcIikscz1lLmdldFVzZXJTeW5jcyh7aWZyYW1lRW5hYmxlZDohKCFjfHwhYy5pZnJhbWUmJiFjLmFsbCkscGl4ZWxFbmFibGVkOiEoIWN8fCFjLmltYWdlJiYhYy5hbGwpfSxuLHQscik7cyYmKEFycmF5LmlzQXJyYXkocyl8fChzPVtzXSkscy5mb3JFYWNoKChmdW5jdGlvbihuKXt1LmtfLnJlZ2lzdGVyU3luYyhuLnR5cGUsZS5jb2RlLG4udXJsKX0pKSl9fSksXCJyZWdpc3RlclN5bmNzXCIpO2Z1bmN0aW9uIFIoZSxuKXtpZighby52Yy5nZXRDb25maWcoXCJhZHBvZC5icmFuZENhdGVnb3J5RXhjbHVzaW9uXCIpKXJldHVybiBlLmNhbGwodGhpcyxuKTtuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuKDAsdi5aKShlLFwibWVkaWFUeXBlcy52aWRlby5jb250ZXh0XCIpPT09eS5PaH0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZHMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRkZXJ9KSl9KSkucmVkdWNlKHAuZmxhdHRlbixbXSkuZmlsdGVyKHAudW5pcXVlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49aS5aUC5nZXRCaWRBZGFwdGVyKGUpO2lmKG4uZ2V0U3BlYygpLmdldE1hcHBpbmdGaWxlSW5mbyl7dmFyIHQ9bi5nZXRTcGVjKCkuZ2V0TWFwcGluZ0ZpbGVJbmZvKCkscj10LnJlZnJlc2hJbkRheXM/dC5yZWZyZXNoSW5EYXlzOncsbz10LmxvY2FsU3RvcmFnZUtleT90LmxvY2FsU3RvcmFnZUtleTpuLmdldFNwZWMoKS5jb2RlLGE9QS5nZXREYXRhRnJvbUxvY2FsU3RvcmFnZShvKTt0cnl7KCEoYT1hP0pTT04ucGFyc2UoYSk6dm9pZCAwKXx8KDAscC50aW1lc3RhbXApKCk+YS5sYXN0VXBkYXRlZCsyNCpyKjYwKjYwKjFlMykmJigwLGcuaCkodC51cmwse3N1Y2Nlc3M6ZnVuY3Rpb24obil7dHJ5e249SlNPTi5wYXJzZShuKTt2YXIgdD17bGFzdFVwZGF0ZWQ6KDAscC50aW1lc3RhbXApKCksbWFwcGluZzpuLm1hcHBpbmd9O0Euc2V0RGF0YUluTG9jYWxTdG9yYWdlKG8sSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoKG4peygwLHAubG9nRXJyb3IpKFwiRmFpbGVkIHRvIHBhcnNlIFwiLmNvbmNhdChlLFwiIGJpZGRlciB0cmFuc2xhdGlvbiBtYXBwaW5nIGZpbGVcIikpfX0sZXJyb3I6ZnVuY3Rpb24oKXsoMCxwLmxvZ0Vycm9yKShcIkZhaWxlZCB0byBsb2FkIFwiLmNvbmNhdChlLFwiIGJpZGRlciB0cmFuc2xhdGlvbiBmaWxlXCIpKX19KX1jYXRjaChuKXsoMCxwLmxvZ0Vycm9yKShcIkZhaWxlZCB0byBwYXJzZSBcIi5jb25jYXQoZSxcIiBiaWRkZXIgdHJhbnNsYXRpb24gbWFwcGluZyBmaWxlXCIpKX19fSkpLGUuY2FsbCh0aGlzLG4pfWZ1bmN0aW9uIGooZSxuKXt2YXIgdD1pLlpQLmdldEJpZEFkYXB0ZXIoZSk7aWYodC5nZXRTcGVjKCkuZ2V0TWFwcGluZ0ZpbGVJbmZvKXt2YXIgcj10LmdldFNwZWMoKS5nZXRNYXBwaW5nRmlsZUluZm8oKSxvPXIubG9jYWxTdG9yYWdlS2V5P3IubG9jYWxTdG9yYWdlS2V5OnQuZ2V0QmlkZGVyQ29kZSgpLGE9QS5nZXREYXRhRnJvbUxvY2FsU3RvcmFnZShvKTtpZihhKXt0cnl7YT1KU09OLnBhcnNlKGEpfWNhdGNoKG4peygwLHAubG9nRXJyb3IpKFwiRmFpbGVkIHRvIHBhcnNlIFwiLmNvbmNhdChlLFwiIG1hcHBpbmcgZGF0YSBzdG9yZWQgaW4gbG9jYWwgc3RvcmFnZVwiKSl9cmV0dXJuIGEubWFwcGluZ1tuXT9hLm1hcHBpbmdbbl06bnVsbH19fWZ1bmN0aW9uIEQoZSxuKXt2YXIgdCxyPShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLmluZGV4LGk9dm9pZCAwPT09cj9oLksuaW5kZXg6cjtmdW5jdGlvbiBvKGUpe3JldHVyblwiSW52YWxpZCBiaWQgZnJvbSBcIi5jb25jYXQobi5iaWRkZXJDb2RlLFwiLiBJZ25vcmluZyBiaWQ6IFwiKS5jb25jYXQoZSl9cmV0dXJuIGU/bj8odD1PYmplY3Qua2V5cyhuKSxJLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4oMCxsLnE5KSh0LGUpJiYhKDAsbC5xOSkoW3ZvaWQgMCxudWxsXSxuW2VdKX0pKT9cIm5hdGl2ZVwiIT09bi5tZWRpYVR5cGV8fCgwLGMucjQpKG4se2luZGV4Oml9KT9cInZpZGVvXCIhPT1uLm1lZGlhVHlwZXx8KDAscy5Ebikobix7aW5kZXg6aX0pPyEoXCJiYW5uZXJcIj09PW4ubWVkaWFUeXBlJiYhZnVuY3Rpb24oZSxuKXt2YXIgdD0oYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9KS5pbmRleCxyPXZvaWQgMD09PXQ/aC5LLmluZGV4OnQ7aWYoKG4ud2lkdGh8fDA9PT1wYXJzZUludChuLndpZHRoLDEwKSkmJihuLmhlaWdodHx8MD09PXBhcnNlSW50KG4uaGVpZ2h0LDEwKSkpcmV0dXJuIG4ud2lkdGg9cGFyc2VJbnQobi53aWR0aCwxMCksbi5oZWlnaHQ9cGFyc2VJbnQobi5oZWlnaHQsMTApLCEwO3ZhciBpLG89ci5nZXRCaWRSZXF1ZXN0KG4pLGE9ci5nZXRNZWRpYVR5cGVzKG4pLHU9byYmby5zaXplc3x8YSYmYS5iYW5uZXImJmEuYmFubmVyLnNpemVzLGM9KDAscC5wYXJzZVNpemVzSW5wdXQpKHUpO2lmKDE9PT1jLmxlbmd0aCl7dmFyIHM9KDIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oaT1jWzBdLnNwbGl0KFwieFwiKSl8fGZ1bmN0aW9uKGUsbil7dmFyIHQ9bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9dCl7dmFyIHIsaSxvLGEsdT1bXSxjPSEwLHM9ITE7dHJ5e2ZvcihvPSh0PXQuY2FsbChlKSkubmV4dCwwOyEoYz0ocj1vLmNhbGwodCkpLmRvbmUpJiYodS5wdXNoKHIudmFsdWUpLDIhPT11Lmxlbmd0aCk7Yz0hMCk7fWNhdGNoKGUpe3M9ITAsaT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZudWxsIT10LnJldHVybiYmKGE9dC5yZXR1cm4oKSxPYmplY3QoYSkhPT1hKSlyZXR1cm59ZmluYWxseXtpZihzKXRocm93IGl9fXJldHVybiB1fX0oaSl8fGZ1bmN0aW9uKGUsbil7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIEUoZSwyKTt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PXQmJmUuY29uc3RydWN0b3ImJih0PWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PXR8fFwiU2V0XCI9PT10P0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PXR8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpP0UoZSwyKTp2b2lkIDB9fShpKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxkPXNbMF0sZj1zWzFdO3JldHVybiBuLndpZHRoPXBhcnNlSW50KGQsMTApLG4uaGVpZ2h0PXBhcnNlSW50KGYsMTApLCEwfXJldHVybiExfShlLG4se2luZGV4Oml9KSYmKCgwLHAubG9nRXJyb3IpKG8oXCJCYW5uZXIgYmlkcyByZXF1aXJlIGEgd2lkdGggYW5kIGhlaWdodFwiKSksMSkpOigoMCxwLmxvZ0Vycm9yKShvKFwiVmlkZW8gYmlkIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgdmFzdFVybCBvciByZW5kZXJlciBwcm9wZXJ0eVwiKSksITEpOigoMCxwLmxvZ0Vycm9yKShvKFwiTmF0aXZlIGJpZCBtaXNzaW5nIHNvbWUgcmVxdWlyZWQgcHJvcGVydGllcy5cIikpLCExKTooKDAscC5sb2dFcnJvcikobyhcIkJpZGRlciBcIi5jb25jYXQobi5iaWRkZXJDb2RlLFwiIGlzIG1pc3NpbmcgcmVxdWlyZWQgcGFyYW1zLiBDaGVjayBodHRwOi8vcHJlYmlkLm9yZy9kZXYtZG9jcy9iaWRkZXItYWRhcHRlci0xLmh0bWwgZm9yIGxpc3Qgb2YgcGFyYW1zLlwiKSkpLCExKSk6KCgwLHAubG9nV2FybikoXCJTb21lIGFkYXB0ZXIgdHJpZWQgdG8gYWRkIGFuIHVuZGVmaW5lZCBiaWQgZm9yIFwiLmNvbmNhdChlLFwiLlwiKSksITEpOigoMCxwLmxvZ1dhcm4pKFwiTm8gYWRVbml0Q29kZSB3YXMgc3VwcGxpZWQgdG8gYWRkQmlkUmVzcG9uc2UuXCIpLCExKX0oMCxiLnY1KShcImNoZWNrQWRVbml0U2V0dXBcIikuYmVmb3JlKFIpfSw2OTk2OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LmQobix7QjpmdW5jdGlvbigpe3JldHVybiB1fX0pO3ZhciByPXQoMTg3OSksaT10KDk4NTMpLG89e30sYT1bXCJhZGxvb3hcIixcImNyaXRlb1wiLFwib3V0c3RyZWFtXCIsXCJhZGFnaW9cIixcImJyb3dzaVwiLFwiYnJhbmRtZXRyaWNzXCIsXCJqdXN0dGFnXCJdO2Z1bmN0aW9uIHUoZSxuLHQpe2lmKG4mJmUpe2lmKCgwLHIucTkpKGEsbikpcmV0dXJuIG9bZV0/KHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihvW2VdLmxvYWRlZD90KCk6b1tlXS5jYWxsYmFja3MucHVzaCh0KSksb1tlXS50YWcpOihvW2VdPXtsb2FkZWQ6ITEsdGFnOm51bGwsY2FsbGJhY2tzOltdfSx0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZvW2VdLmNhbGxiYWNrcy5wdXNoKHQpLCgwLGkubG9nV2FybikoXCJtb2R1bGUgXCIuY29uY2F0KG4sXCIgaXMgbG9hZGluZyBleHRlcm5hbCBKYXZhU2NyaXB0XCIpKSxmdW5jdGlvbihuLHQpe3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7cmV0dXJuIHIudHlwZT1cInRleHQvamF2YXNjcmlwdFwiLHIuYXN5bmM9ITAsb1tlXS50YWc9cixyLnJlYWR5U3RhdGU/ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtcImxvYWRlZFwiIT09ci5yZWFkeVN0YXRlJiZcImNvbXBsZXRlXCIhPT1yLnJlYWR5U3RhdGV8fChyLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHQoKSl9OnIub25sb2FkPWZ1bmN0aW9uKCl7dCgpfSxyLnNyYz1uLCgwLGkuaW5zZXJ0RWxlbWVudCkocikscn0oZSwoZnVuY3Rpb24oKXtvW2VdLmxvYWRlZD0hMDt0cnl7Zm9yKHZhciBuPTA7bjxvW2VdLmNhbGxiYWNrcy5sZW5ndGg7bisrKW9bZV0uY2FsbGJhY2tzW25dKCl9Y2F0Y2goZSl7KDAsaS5sb2dFcnJvcikoXCJFcnJvciBleGVjdXRpbmcgY2FsbGJhY2tcIixcImFkbG9hZGVyLmpzOmxvYWRFeHRlcm5hbFNjcmlwdFwiLGUpfX0pKSk7KDAsaS5sb2dFcnJvcikoXCJcIi5jb25jYXQobixcIiBub3Qgd2hpdGVsaXN0ZWQgZm9yIGxvYWRpbmcgZXh0ZXJuYWwgSmF2YVNjcmlwdFwiKSl9ZWxzZSgwLGkubG9nRXJyb3IpKFwiY2Fubm90IGxvYWQgZXh0ZXJuYWwgc2NyaXB0IHdpdGhvdXQgdXJsIGFuZCBtb2R1bGVDb2RlXCIpfX0sNTc1NTpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se086ZnVuY3Rpb24oKXtyZXR1cm4gc30saDpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciByPXQoODk2MiksaT10KDk4NTMpO2Z1bmN0aW9uIG8oKXtyZXR1cm4gbz1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9cmV0dXJuIGV9LG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sYShlKX12YXIgdT00LGM9cygpO2Z1bmN0aW9uIHMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06M2UzLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHQ9bi5yZXF1ZXN0LGM9bi5kb25lO3JldHVybiBmdW5jdGlvbihuLHMsZCl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9O3RyeXt2YXIgbCxnPWYubWV0aG9kfHwoZD9cIlBPU1RcIjpcIkdFVFwiKSxwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO3AuaHJlZj1uO3ZhciB2PVwib2JqZWN0XCI9PT1hKHMpJiZudWxsIT09cz9zOntzdWNjZXNzOmZ1bmN0aW9uKCl7KDAsaS5sb2dNZXNzYWdlKShcInhociBzdWNjZXNzXCIpfSxlcnJvcjpmdW5jdGlvbihlKXsoMCxpLmxvZ0Vycm9yKShcInhociBlcnJvclwiLG51bGwsZSl9fTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzJiYodi5zdWNjZXNzPXMpLChsPW5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKGwucmVhZHlTdGF0ZT09PXUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIGMmJmMocC5vcmlnaW4pO3ZhciBlPWwuc3RhdHVzO2U+PTIwMCYmZTwzMDB8fDMwND09PWU/di5zdWNjZXNzKGwucmVzcG9uc2VUZXh0LGwpOnYuZXJyb3IobC5zdGF0dXNUZXh0LGwpfX0sci52Yy5nZXRDb25maWcoXCJkaXNhYmxlQWpheFRpbWVvdXRcIil8fChsLm9udGltZW91dD1mdW5jdGlvbigpeygwLGkubG9nRXJyb3IpKFwiICB4aHIgdGltZW91dCBhZnRlciBcIixsLnRpbWVvdXQsXCJtc1wiKX0pLFwiR0VUXCI9PT1nJiZkKXt2YXIgeT0oMCxpLnBhcnNlVXJsKShuLGYpO28oeS5zZWFyY2gsZCksbj0oMCxpLmJ1aWxkVXJsKSh5KX1sLm9wZW4oZyxuLCEwKSxyLnZjLmdldENvbmZpZyhcImRpc2FibGVBamF4VGltZW91dFwiKXx8KGwudGltZW91dD1lKSxmLndpdGhDcmVkZW50aWFscyYmKGwud2l0aENyZWRlbnRpYWxzPSEwKSwoMCxpLl9lYWNoKShmLmN1c3RvbUhlYWRlcnMsKGZ1bmN0aW9uKGUsbil7bC5zZXRSZXF1ZXN0SGVhZGVyKG4sZSl9KSksZi5wcmVmbGlnaHQmJmwuc2V0UmVxdWVzdEhlYWRlcihcIlgtUmVxdWVzdGVkLVdpdGhcIixcIlhNTEh0dHBSZXF1ZXN0XCIpLGwuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLGYuY29udGVudFR5cGV8fFwidGV4dC9wbGFpblwiKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0KHAub3JpZ2luKSxcIlBPU1RcIj09PWcmJmQ/bC5zZW5kKGQpOmwuc2VuZCgpfWNhdGNoKGUpeygwLGkubG9nRXJyb3IpKFwieGhyIGNvbnN0cnVjdGlvblwiLGUpLFwib2JqZWN0XCI9PT1hKHMpJiZudWxsIT09cyYmcy5lcnJvcihlKX19fX0sNDg5MjpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se0QkOmZ1bmN0aW9uKCl7cmV0dXJuIE59LExYOmZ1bmN0aW9uKCl7cmV0dXJuIEZ9LFJIOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LFl0OmZ1bmN0aW9uKCl7cmV0dXJuIGp9LFl3OmZ1bmN0aW9uKCl7cmV0dXJuIEl9LGRnOmZ1bmN0aW9uKCl7cmV0dXJuIE19LGUwOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGxVOmZ1bmN0aW9uKCl7cmV0dXJuIFB9LG12OmZ1bmN0aW9uKCl7cmV0dXJuIHd9LHNxOmZ1bmN0aW9uKCl7cmV0dXJuIGt9LHZPOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9fSk7dmFyIHI9dCg5ODUzKSxpPXQoMjY1KSxvPXQoNTU1MyksYT10KDkwMTcpLHU9dCg5MDUpLGM9dCg0ODc3KSxzPXQoODk2MiksZD10KDcxMTIpLGY9dCgzNDk0KSxsPXQoMTg3OSksZz10KDE5MjkpLHA9dCg4MjY1KSx2PXQoNDc2NikseT10KDk2MjQpO2Z1bmN0aW9uIGIoZSl7cmV0dXJuIGI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sYihlKX1mdW5jdGlvbiBtKCl7cmV0dXJuIG09T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfXJldHVybiBlfSxtLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgaD1kLmtfLnN5bmNVc2VycyxFPXQoNzYwMikuWlAsUz10KDIzMTkpLFQ9dCg1NjQ0KSxBPVwic3RhcnRlZFwiLEk9XCJpblByb2dyZXNzXCIsdz1cImNvbXBsZXRlZFwiO1Mub24oVC5FVkVOVFMuQklEX0FESlVTVE1FTlQsKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXt2YXIgbj1lLmJpZGRlckNvZGUsdD1lLmNwbSxpPXkuUy5nZXQobnx8bnVsbCxcImJpZENwbUFkanVzdG1lbnRcIik7aWYoaSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaSl0cnl7dD1pKGUuY3BtLG0oe30sZSkpfWNhdGNoKGUpeygwLHIubG9nRXJyb3IpKFwiRXJyb3IgZHVyaW5nIGJpZCBhZGp1c3RtZW50XCIsXCJiaWRtYW5hZ2VyLmpzXCIsZSl9dD49MCYmKGUuY3BtPXQpfShlKX0pKTt2YXIgQz00LE89e30sQj17fSxVPVtdO2Z1bmN0aW9uIFIoZSl7dmFyIG4sdCxhLHUsZD1lLmFkVW5pdHMsZj1lLmFkVW5pdENvZGVzLHA9ZS5jYWxsYmFjayx5PWUuY2JUaW1lb3V0LFI9ZS5sYWJlbHMsaz1lLmF1Y3Rpb25JZCxxPWQsTT1SLEc9ZixXPVtdLEY9W10sej1bXSxLPWt8fCgwLHIuZ2VuZXJhdGVVVUlEKSgpLFY9cCxIPXksWj1bXSxZPW5ldyBTZXQ7ZnVuY3Rpb24gSigpe3JldHVybnthdWN0aW9uSWQ6Syx0aW1lc3RhbXA6bixhdWN0aW9uRW5kOnQsYXVjdGlvblN0YXR1czphLGFkVW5pdHM6cSxhZFVuaXRDb2RlczpHLGxhYmVsczpNLGJpZGRlclJlcXVlc3RzOlcsbm9CaWRzOnosYmlkc1JlY2VpdmVkOkYsd2lubmluZ0JpZHM6Wix0aW1lb3V0Okh9fWZ1bmN0aW9uIFEoZSxuKXtpZihuJiZjbGVhclRpbWVvdXQodSksdm9pZCAwPT09dCl7dmFyIGk9W107ZSYmKCgwLHIubG9nTWVzc2FnZSkoXCJBdWN0aW9uIFwiLmNvbmNhdChLLFwiIHRpbWVkT3V0XCIpKSxvPVksKGk9Vy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybihlLmJpZHN8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFvLmhhcyhlLmJpZGRlcil9KSl9KSkucmVkdWNlKHIuZmxhdHRlbixbXSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm57YmlkSWQ6ZS5iaWRJZCxiaWRkZXI6ZS5iaWRkZXIsYWRVbml0Q29kZTplLmFkVW5pdENvZGUsYXVjdGlvbklkOmUuYXVjdGlvbklkfX0pKSkubGVuZ3RoJiZTLmVtaXQoVC5FVkVOVFMuQklEX1RJTUVPVVQsaSkpLGE9dyx0PURhdGUubm93KCksUy5lbWl0KFQuRVZFTlRTLkFVQ1RJT05fRU5ELEooKSksXyhxLChmdW5jdGlvbigpe3RyeXtpZihudWxsIT1WKXt2YXIgbj1HLHQ9Ri5maWx0ZXIoci5iaW5kLmNhbGwoci5hZFVuaXRzRmlsdGVyLHRoaXMsbikpLnJlZHVjZShMLHt9KTtWLmFwcGx5KG93cGJqcyxbdCxlLEtdKSxWPW51bGx9fWNhdGNoKGUpeygwLHIubG9nRXJyb3IpKFwiRXJyb3IgZXhlY3V0aW5nIGJpZHNCYWNrSGFuZGxlclwiLG51bGwsZSl9ZmluYWxseXtpLmxlbmd0aCYmRS5jYWxsVGltZWRPdXRCaWRkZXJzKGQsaSxIKTt2YXIgbz1zLnZjLmdldENvbmZpZyhcInVzZXJTeW5jXCIpfHx7fTtvLmVuYWJsZU92ZXJyaWRlfHxoKG8uc3luY0RlbGF5KX19KSl9dmFyIG99ZnVuY3Rpb24gWCgpe3MudmMucmVzZXRCaWRkZXIoKSwoMCxyLmxvZ0luZm8pKFwiQmlkcyBSZWNlaXZlZCBmb3IgQXVjdGlvbiB3aXRoIGlkOiBcIi5jb25jYXQoSyksRiksYT13LFEoITEsITApfWZ1bmN0aW9uICQoZSl7WS5hZGQoZSl9ZnVuY3Rpb24gZWUoZSl7dmFyIG49dGhpcztlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuO249ZSxXPVcuY29uY2F0KG4pfSkpO3ZhciB0PXt9LGQ9e2JpZFJlcXVlc3RzOmUscnVuOmZ1bmN0aW9uKCl7dmFyIGQseTtkPVEuYmluZChudWxsLCEwKSx5PXNldFRpbWVvdXQoZCxIKSx1PXksYT1JLFMuZW1pdChULkVWRU5UUy5BVUNUSU9OX0lOSVQsSigpKTt2YXIgaD1mdW5jdGlvbihlLG4pe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLmluZGV4LGE9dm9pZCAwPT09dD92LksuaW5kZXg6dCx1PTAsZD0hMSxmPW5ldyBTZXQscD17fSx5PXt9O2Z1bmN0aW9uIGgoKXt1LS0sZCYmMD09PXUmJmUoKX1mdW5jdGlvbiBFKGUsdCl7cFt0LnJlcXVlc3RJZF09ITAsdSsrO3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciBuPWUuYWRVbml0Q29kZSx0PWUuYmlkLGk9ZS5hdWN0aW9uSWQsYT0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5pbmRleCx1PXZvaWQgMD09PWE/di5LLmluZGV4OmEsZD11LmdldEJpZGRlclJlcXVlc3QodCksZj1kJiZkLnN0YXJ0fHx0LnJlcXVlc3RUaW1lc3RhbXAsbD1tKHt9LHQse2F1Y3Rpb25JZDppLHJlc3BvbnNlVGltZXN0YW1wOigwLHIudGltZXN0YW1wKSgpLHJlcXVlc3RUaW1lc3RhbXA6ZixjcG06cGFyc2VGbG9hdCh0LmNwbSl8fDAsYmlkZGVyOnQuYmlkZGVyQ29kZSxhZFVuaXRDb2RlOm59KTtsLnRpbWVUb1Jlc3BvbmQ9bC5yZXNwb25zZVRpbWVzdGFtcC1sLnJlcXVlc3RUaW1lc3RhbXAsUy5lbWl0KFQuRVZFTlRTLkJJRF9BREpVU1RNRU5ULGwpO3ZhciBnPXUuZ2V0QWRVbml0KGwpLnJlbmRlcmVyLHA9bC5tZWRpYVR5cGUseT11LmdldE1lZGlhVHlwZXMobCksaD15JiZ5W3BdLEU9aCYmaC5yZW5kZXJlcixBPW51bGw7RSYmRS51cmwmJkUucmVuZGVyJiYoITAhPT1FLmJhY2t1cE9ubHl8fCF0LnJlbmRlcmVyKT9BPUU6ZyYmZy51cmwmJmcucmVuZGVyJiYoITAhPT1nLmJhY2t1cE9ubHl8fCF0LnJlbmRlcmVyKSYmKEE9ZyksQSYmKGwucmVuZGVyZXI9Yy5UaC5pbnN0YWxsKHt1cmw6QS51cmx9KSxsLnJlbmRlcmVyLnNldFJlbmRlcihBLnJlbmRlcikpO3ZhciBJPXgodC5tZWRpYVR5cGUseSxzLnZjLmdldENvbmZpZyhcIm1lZGlhVHlwZVByaWNlR3JhbnVsYXJpdHlcIikpLHc9KDAsby5EKShsLmNwbSxcIm9iamVjdFwiPT09YihJKT9JOnMudmMuZ2V0Q29uZmlnKFwiY3VzdG9tUHJpY2VCdWNrZXRcIikscy52Yy5nZXRDb25maWcoXCJjdXJyZW5jeS5ncmFudWxhcml0eU11bHRpcGxpZXJcIikpO3JldHVybiBsLnBiTGc9dy5sb3csbC5wYk1nPXcubWVkLGwucGJIZz13LmhpZ2gsbC5wYkFnPXcuYXV0byxsLnBiRGc9dy5kZW5zZSxsLnBiQ2c9dy5jdXN0b20sbH0oe2FkVW5pdENvZGU6ZSxiaWQ6dCxhdWN0aW9uSWQ6bi5nZXRBdWN0aW9uSWQoKX0pO1widmlkZW9cIj09PWEubWVkaWFUeXBlP2Z1bmN0aW9uKGUsbix0KXt2YXIgbz0oYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9KS5pbmRleCxhPXZvaWQgMD09PW8/di5LLmluZGV4Om8sdT0hMCxjPSgwLGkuWikoYS5nZXRNZWRpYVR5cGVzKHtyZXF1ZXN0SWQ6bi5vcmlnaW5hbFJlcXVlc3RJZHx8bi5yZXF1ZXN0SWQsdHJhbnNhY3Rpb25JZDpuLnRyYW5zYWN0aW9uSWR9KSxcInZpZGVvXCIpLGQ9YyYmKDAsaS5aKShjLFwiY29udGV4dFwiKTtzLnZjLmdldENvbmZpZyhcImNhY2hlLnVybFwiKSYmZCE9PWcuZ1omJighbi52aWRlb0NhY2hlS2V5fHxzLnZjLmdldENvbmZpZyhcImNhY2hlLmlnbm9yZUJpZGRlckNhY2hlS2V5XCIpPyh1PSExLE4oZSxuLHQsYykpOm4udmFzdFVybHx8KCgwLHIubG9nRXJyb3IpKFwidmlkZW9DYWNoZUtleSBzcGVjaWZpZWQgYnV0IG5vdCByZXF1aXJlZCB2YXN0VXJsIGZvciB2aWRlbyBiaWRcIiksdT0hMSkpLHUmJihQKGUsbiksdCgpKX0obixhLGgpOihQKG4sYSksaCgpKX1mdW5jdGlvbiBBKCl7dmFyIHQ9bi5nZXRCaWRSZXF1ZXN0cygpLGk9cy52Yy5nZXRDb25maWcoXCJhdWN0aW9uT3B0aW9uc1wiKTtpZihmLmFkZCh0aGlzKSxpJiYhKDAsci5pc0VtcHR5KShpKSl7dmFyIG89aS5zZWNvbmRhcnlCaWRkZXJzO28mJiF0LmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4oMCxsLnE5KShvLGUuYmlkZGVyQ29kZSl9KSkmJih0PXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hKDAsbC5xOSkobyxlLmJpZGRlckNvZGUpfSkpKX1kPXQuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBmLmhhcyhlKX0pKSx0aGlzLmJpZHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cFtlLmJpZElkXXx8KG4uYWRkTm9CaWQoZSksUy5lbWl0KFQuRVZFTlRTLk5PX0JJRCxlKSl9KSksZCYmMD09PXUmJmUoKX1yZXR1cm57YWRkQmlkUmVzcG9uc2U6ZnVuY3Rpb24oZSxuKXt2YXIgdCxyLGk9YS5nZXRCaWRkZXJSZXF1ZXN0KG4pO3Q9aSYmaS5iaWRkZXJSZXF1ZXN0SWR8fFwiXCIscj1qLmNhbGwoe2Rpc3BhdGNoOkV9LGUsbiksbnVsbD09eVt0XSYmKHlbdF09UHJvbWlzZS5yZXNvbHZlKCkpLHlbdF09eVt0XS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUocikuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfSkpfSxhZGFwdGVyRG9uZTpmdW5jdGlvbigpeyFmdW5jdGlvbihlLHQpe3ZhciByPWUudGltZW91dDsobnVsbD09cnx8cj5uLmdldFRpbWVvdXQoKSkmJihyPW4uZ2V0VGltZW91dCgpKTt2YXIgaT1uLmdldEF1Y3Rpb25TdGFydCgpK3ItRGF0ZS5ub3coKSxvPXlbZS5iaWRkZXJSZXF1ZXN0SWRdLGE9eVtcIlwiXTsobnVsbCE9b3x8bnVsbCE9YSkmJmk+MD9Qcm9taXNlLnJhY2UoW25ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dChlLGkpfSkpLFByb21pc2UucmVzb2x2ZShhKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvfSkpXSkudGhlbih0KTp0KCl9KHRoaXMsQS5iaW5kKHRoaXMpKX19fShYLG4pO0UuY2FsbEJpZHMocSxlLGguYWRkQmlkUmVzcG9uc2UsaC5hZGFwdGVyRG9uZSx7cmVxdWVzdDpmdW5jdGlvbihlLG4pe3AoTyxuKSxwKHQsZSksQltlXXx8KEJbZV09e1NSQTohMCxvcmlnaW46bn0pLHRbZV0+MSYmKEJbZV0uU1JBPSExKX0sZG9uZTpmdW5jdGlvbihlKXtPW2VdLS0sVVswXSYmZihVWzBdKSYmVS5zaGlmdCgpfX0sSCwkKX19O2Z1bmN0aW9uIGYoZSl7dmFyIG49ITAsdD1zLnZjLmdldENvbmZpZyhcIm1heFJlcXVlc3RzUGVyT3JpZ2luXCIpfHxDO3JldHVybiBlLmJpZFJlcXVlc3RzLnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciByPTEsaT12b2lkIDAhPT1lLnNyYyYmZS5zcmM9PT1ULlMyUy5TUkM/XCJzMnNcIjplLmJpZGRlckNvZGU7cmV0dXJuIEJbaV0mJighMT09PUJbaV0uU1JBJiYocj1NYXRoLm1pbihlLmJpZHMubGVuZ3RoLHQpKSxPW0JbaV0ub3JpZ2luXStyPnQmJihuPSExKSksIW59KSksbiYmZS5ydW4oKSxufWZ1bmN0aW9uIHAoZSxuKXt2b2lkIDA9PT1lW25dP2Vbbl09MTplW25dKyt9ZihkKXx8KCgwLHIubG9nV2FybikoXCJxdWV1ZWluZyBhdWN0aW9uIGR1ZSB0byBsaW1pdGVkIGVuZHBvaW50IGNhcGFjaXR5XCIpLFUucHVzaChkKSl9cmV0dXJue2FkZEJpZFJlY2VpdmVkOmZ1bmN0aW9uKGUpe0Y9Ri5jb25jYXQoZSl9LGFkZE5vQmlkOmZ1bmN0aW9uKGUpe3o9ei5jb25jYXQoZSl9LGV4ZWN1dGVDYWxsYmFjazpRLGNhbGxCaWRzOmZ1bmN0aW9uKCl7YT1BLG49RGF0ZS5ub3coKTt2YXIgZT1FLm1ha2VCaWRSZXF1ZXN0cyhxLG4sSyxILE0pOygwLHIubG9nSW5mbykoXCJCaWRzIFJlcXVlc3RlZCBmb3IgQXVjdGlvbiB3aXRoIGlkOiBcIi5jb25jYXQoSyksZSksZS5sZW5ndGg8MT8oKDAsci5sb2dXYXJuKShcIk5vIHZhbGlkIGJpZCByZXF1ZXN0cyByZXR1cm5lZCBmb3IgYXVjdGlvblwiKSxYKCkpOkQuY2FsbCh7ZGlzcGF0Y2g6ZWUsY29udGV4dDp0aGlzfSxlKX0sYWRkV2lubmluZ0JpZDpmdW5jdGlvbihlKXtaPVouY29uY2F0KGUpLEUuY2FsbEJpZFdvbkJpZGRlcihlLmJpZGRlcixlLGQpfSxzZXRCaWRUYXJnZXRpbmc6ZnVuY3Rpb24oZSl7RS5jYWxsU2V0VGFyZ2V0aW5nQmlkZGVyKGUuYmlkZGVyLGUpfSxnZXRXaW5uaW5nQmlkczpmdW5jdGlvbigpe3JldHVybiBafSxnZXRBdWN0aW9uU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn0sZ2V0VGltZW91dDpmdW5jdGlvbigpe3JldHVybiBIfSxnZXRBdWN0aW9uSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gS30sZ2V0QXVjdGlvblN0YXR1czpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRBZFVuaXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LGdldEFkVW5pdENvZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIEd9LGdldEJpZFJlcXVlc3RzOmZ1bmN0aW9uKCl7cmV0dXJuIFd9LGdldEJpZHNSZWNlaXZlZDpmdW5jdGlvbigpe3JldHVybiBGfSxnZXROb0JpZHM6ZnVuY3Rpb24oKXtyZXR1cm4gen19fXZhciBqPSgwLGYuejMpKFwic3luY1wiLChmdW5jdGlvbihlLG4pe3RoaXMuZGlzcGF0Y2guY2FsbChudWxsLGUsbil9KSxcImFkZEJpZFJlc3BvbnNlXCIpLEQ9KDAsZi56MykoXCJzeW5jXCIsKGZ1bmN0aW9uKGUpe3RoaXMuZGlzcGF0Y2guY2FsbCh0aGlzLmNvbnRleHQsZSl9KSxcImFkZEJpZGRlclJlcXVlc3RzXCIpLF89KDAsZi56MykoXCJhc3luY1wiLChmdW5jdGlvbihlLG4pe24mJm4oKX0pLFwiYmlkc0JhY2tDYWxsYmFja1wiKTtmdW5jdGlvbiBrKGUsbil7bi50aW1lVG9SZXNwb25kPmUuZ2V0VGltZW91dCgpK3MudmMuZ2V0Q29uZmlnKFwidGltZW91dEJ1ZmZlclwiKSYmZS5leGVjdXRlQ2FsbGJhY2soITApfWZ1bmN0aW9uIFAoZSxuKXt2YXIgdCxyLGk7dD1uLGk9ITA9PT15LlMuZ2V0KHQuYmlkZGVyQ29kZSxcImFsbG93WmVyb0NwbUJpZHNcIik/dC5jcG0+PTA6dC5jcG0+MCx0LmJpZGRlckNvZGUmJihpfHx0LmRlYWxJZCkmJihyPWZ1bmN0aW9uKGUsbil7dmFyIHQ9KGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSkuaW5kZXgscj12b2lkIDA9PT10P3YuSy5pbmRleDp0O2lmKCFuKXJldHVybnt9O3ZhciBpPXIuZ2V0QmlkUmVxdWVzdChuKSxvPXt9O3JldHVybiB6KG8sRihuLm1lZGlhVHlwZSxlKSxuLGkpLGUmJnkuUy5nZXRPd24oZSxULkpTT05fTUFQUElORy5BRFNFUlZFUl9UQVJHRVRJTkcpJiYoeihvLHkuUy5vd25TZXR0aW5nc0ZvcihlKSxuLGkpLG4uc2VuZFN0YW5kYXJkVGFyZ2V0aW5nPXkuUy5nZXQoZSxcInNlbmRTdGFuZGFyZFRhcmdldGluZ1wiKSksbi5uYXRpdmUmJihvPW0oe30sbywoMCxhLlVyKShuKSkpLG99KHQuYmlkZGVyQ29kZSx0KSksdC5hZHNlcnZlclRhcmdldGluZz1tKHQuYWRzZXJ2ZXJUYXJnZXRpbmd8fHt9LHIpLFMuZW1pdChULkVWRU5UUy5CSURfUkVTUE9OU0UsbiksZS5hZGRCaWRSZWNlaXZlZChuKSxrKGUsbil9dmFyIE49KDAsZi56MykoXCJhc3luY1wiLChmdW5jdGlvbihlLG4sdCxpKXsoMCx1LmgpKFtuXSwoZnVuY3Rpb24oaSxvKXtpPygoMCxyLmxvZ1dhcm4pKFwiRmFpbGVkIHRvIHNhdmUgdG8gdGhlIHZpZGVvIGNhY2hlOiBcIi5jb25jYXQoaSxcIi4gVmlkZW8gYmlkIG11c3QgYmUgZGlzY2FyZGVkLlwiKSksayhlLG4pKTpcIlwiPT09b1swXS51dWlkPygoMCxyLmxvZ1dhcm4pKFwiU3VwcGxpZWQgdmlkZW8gY2FjaGUga2V5IHdhcyBhbHJlYWR5IGluIHVzZSBieSBQcmViaWQgQ2FjaGU7IGNhY2hpbmcgYXR0ZW1wdCB3YXMgcmVqZWN0ZWQuIFZpZGVvIGJpZCBtdXN0IGJlIGRpc2NhcmRlZC5cIiksayhlLG4pKToobi52aWRlb0NhY2hlS2V5PW9bMF0udXVpZCxuLnZhc3RVcmx8fChuLnZhc3RVcmw9KDAsdS56KShuLnZpZGVvQ2FjaGVLZXkpKSxQKGUsbiksdCgpKX0pKX0pLFwiY2FsbFByZWJpZENhY2hlXCIpO2Z1bmN0aW9uIHgoZSxuLHQpe2lmKGUmJnQpe2lmKGU9PT1wLnBYKXt2YXIgcj0oMCxpLlopKG4sXCJcIi5jb25jYXQocC5wWCxcIi5jb250ZXh0XCIpLFwiaW5zdHJlYW1cIik7aWYodFtcIlwiLmNvbmNhdChwLnBYLFwiLVwiKS5jb25jYXQocildKXJldHVybiB0W1wiXCIuY29uY2F0KHAucFgsXCItXCIpLmNvbmNhdChyKV19cmV0dXJuIHRbZV19fXZhciBxPWZ1bmN0aW9uKGUpe3ZhciBuPShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30pLmluZGV4LHQ9dm9pZCAwPT09bj92LksuaW5kZXg6bixyPXgoZS5tZWRpYVR5cGUsdC5nZXRNZWRpYVR5cGVzKGUpLHMudmMuZ2V0Q29uZmlnKFwibWVkaWFUeXBlUHJpY2VHcmFudWxhcml0eVwiKSk7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUubWVkaWFUeXBlJiZyP1wic3RyaW5nXCI9PXR5cGVvZiByP3I6XCJjdXN0b21cIjpzLnZjLmdldENvbmZpZyhcInByaWNlR3JhbnVsYXJpdHlcIil9LE09ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PWV8fHEobik7cmV0dXJuIHQ9PT1ULkdSQU5VTEFSSVRZX09QVElPTlMuQVVUTz9uLnBiQWc6dD09PVQuR1JBTlVMQVJJVFlfT1BUSU9OUy5ERU5TRT9uLnBiRGc6dD09PVQuR1JBTlVMQVJJVFlfT1BUSU9OUy5MT1c/bi5wYkxnOnQ9PT1ULkdSQU5VTEFSSVRZX09QVElPTlMuTUVESVVNP24ucGJNZzp0PT09VC5HUkFOVUxBUklUWV9PUFRJT05TLkhJR0g/bi5wYkhnOnQ9PT1ULkdSQU5VTEFSSVRZX09QVElPTlMuQ1VTVE9NP24ucGJDZzp2b2lkIDB9fSxHPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLm1ldGEmJmUubWV0YS5hZHZlcnRpc2VyRG9tYWlucyYmZS5tZXRhLmFkdmVydGlzZXJEb21haW5zLmxlbmd0aD4wP2UubWV0YS5hZHZlcnRpc2VyRG9tYWluc1swXTpcIlwifX07ZnVuY3Rpb24gVyhlLG4pe3JldHVybntrZXk6ZSx2YWw6XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9mdW5jdGlvbihlLHQpe3JldHVybiBuKGUsdCl9OmZ1bmN0aW9uKGUpe3JldHVybigwLHIuZ2V0VmFsdWUpKGUsbil9fX1mdW5jdGlvbiBGKGUsbil7dmFyIHQ9VC5UQVJHRVRJTkdfS0VZUyxvPW0oe30seS5TLnNldHRpbmdzRm9yKG51bGwpKTtpZihvW1QuSlNPTl9NQVBQSU5HLkFEU0VSVkVSX1RBUkdFVElOR118fChvW1QuSlNPTl9NQVBQSU5HLkFEU0VSVkVSX1RBUkdFVElOR109ZnVuY3Rpb24oKXt2YXIgZT1ULlRBUkdFVElOR19LRVlTO3JldHVybltXKGUuQklEREVSLFwiYmlkZGVyQ29kZVwiKSxXKGUuQURfSUQsXCJhZElkXCIpLFcoZS5QUklDRV9CVUNLRVQsTSgpKSxXKGUuU0laRSxcInNpemVcIiksVyhlLkRFQUwsXCJkZWFsSWRcIiksVyhlLlNPVVJDRSxcInNvdXJjZVwiKSxXKGUuRk9STUFULFwibWVkaWFUeXBlXCIpLFcoZS5BRE9NQUlOLEcoKSldfSgpKSxcInZpZGVvXCI9PT1lKXt2YXIgYT1vW1QuSlNPTl9NQVBQSU5HLkFEU0VSVkVSX1RBUkdFVElOR10uc2xpY2UoKTtpZihvW1QuSlNPTl9NQVBQSU5HLkFEU0VSVkVSX1RBUkdFVElOR109YSxbdC5VVUlELHQuQ0FDSEVfSURdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMD09PSgwLGwuc0UpKGEsKGZ1bmN0aW9uKG4pe3JldHVybiBuLmtleT09PWV9KSkmJmEucHVzaChXKGUsXCJ2aWRlb0NhY2hlS2V5XCIpKX0pKSxzLnZjLmdldENvbmZpZyhcImNhY2hlLnVybFwiKSYmKCFufHwhMSE9PXkuUy5nZXQobixcInNlbmRTdGFuZGFyZFRhcmdldGluZ1wiKSkpe3ZhciB1PSgwLHIucGFyc2VVcmwpKHMudmMuZ2V0Q29uZmlnKFwiY2FjaGUudXJsXCIpKTt2b2lkIDA9PT0oMCxsLnNFKShhLChmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXk9PT10LkNBQ0hFX0hPU1R9KSkmJmEucHVzaChXKHQuQ0FDSEVfSE9TVCwoZnVuY3Rpb24oZSl7cmV0dXJuKDAsaS5aKShlLFwiYWRzZXJ2ZXJUYXJnZXRpbmcuXCIuY29uY2F0KHQuQ0FDSEVfSE9TVCkpP2UuYWRzZXJ2ZXJUYXJnZXRpbmdbdC5DQUNIRV9IT1NUXTp1Lmhvc3RuYW1lfSkpKX19cmV0dXJuIG99ZnVuY3Rpb24geihlLG4sdCxpKXt2YXIgbz1uW1QuSlNPTl9NQVBQSU5HLkFEU0VSVkVSX1RBUkdFVElOR107cmV0dXJuIHQuc2l6ZT10LmdldFNpemUoKSwoMCxyLl9lYWNoKShvLChmdW5jdGlvbihvKXt2YXIgYT1vLmtleSx1PW8udmFsO2lmKGVbYV0mJigwLHIubG9nV2FybikoXCJUaGUga2V5OiBcIithK1wiIGlzIGJlaW5nIG92ZXJ3cml0dGVuXCIpLCgwLHIuaXNGbikodSkpdHJ5e3U9dSh0LGkpfWNhdGNoKGUpeygwLHIubG9nRXJyb3IpKFwiYmlkbWFuYWdlclwiLFwiRVJST1JcIixlKX0odm9pZCAwPT09bi5zdXBwcmVzc0VtcHR5S2V5c3x8ITAhPT1uLnN1cHByZXNzRW1wdHlLZXlzKSYmYSE9PVQuVEFSR0VUSU5HX0tFWVMuREVBTHx8ISgwLHIuaXNFbXB0eVN0cikodSkmJm51bGwhPXU/ZVthXT11OigwLHIubG9nSW5mbykoXCJzdXBwcmVzc2luZyBlbXB0eSBrZXkgJ1wiK2ErXCInIGZyb20gYWRzZXJ2ZXIgdGFyZ2V0aW5nXCIpfSkpLGV9ZnVuY3Rpb24gTChlLG4pe3JldHVybiBlW24uYWRVbml0Q29kZV18fChlW24uYWRVbml0Q29kZV09e2JpZHM6W119KSxlW24uYWRVbml0Q29kZV0uYmlkcy5wdXNoKG4pLGV9fSw0NzY2OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LmQobix7SzpmdW5jdGlvbigpe3JldHVybiBzfX0pO3ZhciByPXQoOTg1MyksaT10KDQ4OTIpLG89dCgxODc5KTtmdW5jdGlvbiBhKCl7cmV0dXJuIGE9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfXJldHVybiBlfSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB1KGUpe2EodGhpcyx7Z2V0QXVjdGlvbjpmdW5jdGlvbihuKXt2YXIgdD1uLmF1Y3Rpb25JZDtpZihudWxsIT10KXJldHVybiBlKCkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXVjdGlvbklkKCk9PT10fSkpfSxnZXRBZFVuaXQ6ZnVuY3Rpb24obil7dmFyIHQ9bi50cmFuc2FjdGlvbklkO2lmKG51bGwhPXQpcmV0dXJuIGUoKS5mbGF0TWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBZFVuaXRzKCl9KSkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJhbnNhY3Rpb25JZD09PXR9KSl9LGdldE1lZGlhVHlwZXM6ZnVuY3Rpb24oZSl7dmFyIG49ZS50cmFuc2FjdGlvbklkLHQ9ZS5yZXF1ZXN0SWQ7aWYobnVsbCE9dCl7dmFyIHI9dGhpcy5nZXRCaWRSZXF1ZXN0KHtyZXF1ZXN0SWQ6dH0pO2lmKG51bGwhPXImJihudWxsPT1ufHxyLnRyYW5zYWN0aW9uSWQ9PT1uKSlyZXR1cm4gci5tZWRpYVR5cGVzfWVsc2UgaWYobnVsbCE9bil7dmFyIGk9dGhpcy5nZXRBZFVuaXQoe3RyYW5zYWN0aW9uSWQ6bn0pO2lmKG51bGwhPWkpcmV0dXJuIGkubWVkaWFUeXBlc319LGdldEJpZGRlclJlcXVlc3Q6ZnVuY3Rpb24obil7dmFyIHQ9bi5yZXF1ZXN0SWQscj1uLmJpZGRlclJlcXVlc3RJZDtpZihudWxsIT10fHxudWxsIT1yKXt2YXIgaT1lKCkuZmxhdE1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QmlkUmVxdWVzdHMoKX0pKTtyZXR1cm4gbnVsbCE9ciYmKGk9aS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZGRlclJlcXVlc3RJZD09PXJ9KSkpLG51bGw9PXQ/aVswXTppLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZHMmJm51bGwhPWUuYmlkcy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRJZD09PXR9KSl9KSl9fSxnZXRCaWRSZXF1ZXN0OmZ1bmN0aW9uKG4pe3ZhciB0PW4ucmVxdWVzdElkO2lmKG51bGwhPXQpcmV0dXJuIGUoKS5mbGF0TWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRCaWRSZXF1ZXN0cygpfSkpLmZsYXRNYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZHN9KSkuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuYmlkSWQ9PT10fSkpfX0pfXZhciBjPXQoNTY0NCkscz1mdW5jdGlvbigpe3ZhciBlPVtdLG49e2FkZFdpbm5pbmdCaWQ6ZnVuY3Rpb24obil7dmFyIHQ9KDAsby5zRSkoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXVjdGlvbklkKCk9PT1uLmF1Y3Rpb25JZH0pKTt0PyhuLnN0YXR1cz1jLkJJRF9TVEFUVVMuUkVOREVSRUQsdC5hZGRXaW5uaW5nQmlkKG4pKTooMCxyLmxvZ1dhcm4pKFwiQXVjdGlvbiBub3QgZm91bmQgd2hlbiBhZGRpbmcgd2lubmluZyBiaWRcIil9LGdldEFsbFdpbm5pbmdCaWRzOmZ1bmN0aW9uKCl7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRXaW5uaW5nQmlkcygpfSkpLnJlZHVjZShyLmZsYXR0ZW4sW10pfSxnZXRCaWRzUmVxdWVzdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRCaWRSZXF1ZXN0cygpfSkpLnJlZHVjZShyLmZsYXR0ZW4sW10pfSxnZXROb0JpZHM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldE5vQmlkcygpfSkpLnJlZHVjZShyLmZsYXR0ZW4sW10pfSxnZXRCaWRzUmVjZWl2ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe2lmKGUuZ2V0QXVjdGlvblN0YXR1cygpPT09aS5tdilyZXR1cm4gZS5nZXRCaWRzUmVjZWl2ZWQoKX0pKS5yZWR1Y2Uoci5mbGF0dGVuLFtdKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfSxnZXRBbGxCaWRzRm9yQWRVbml0Q29kZTpmdW5jdGlvbihuKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEJpZHNSZWNlaXZlZCgpfSkpLnJlZHVjZShyLmZsYXR0ZW4sW10pLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuYWRVbml0Q29kZT09PW59KSl9LGdldEFkVW5pdHM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEFkVW5pdHMoKX0pKS5yZWR1Y2Uoci5mbGF0dGVuLFtdKX0sZ2V0QWRVbml0Q29kZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEFkVW5pdENvZGVzKCl9KSkucmVkdWNlKHIuZmxhdHRlbixbXSkuZmlsdGVyKHIudW5pcXVlcyl9LGNyZWF0ZUF1Y3Rpb246ZnVuY3Rpb24obil7dmFyIHQ9bi5hZFVuaXRzLHI9bi5hZFVuaXRDb2RlcyxvPW4uY2FsbGJhY2ssYT1uLmNiVGltZW91dCx1PW4ubGFiZWxzLGM9bi5hdWN0aW9uSWQscz0oMCxpLnZPKSh7YWRVbml0czp0LGFkVW5pdENvZGVzOnIsY2FsbGJhY2s6byxjYlRpbWVvdXQ6YSxsYWJlbHM6dSxhdWN0aW9uSWQ6Y30pO3JldHVybiBmdW5jdGlvbihuKXtlLnB1c2gobil9KHMpLHN9LGZpbmRCaWRCeUFkSWQ6ZnVuY3Rpb24obil7cmV0dXJuKDAsby5zRSkoZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEJpZHNSZWNlaXZlZCgpfSkpLnJlZHVjZShyLmZsYXR0ZW4sW10pLChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZElkPT09bn0pKX0sZ2V0U3RhbmRhcmRCaWRkZXJBZFNlcnZlclRhcmdldGluZzpmdW5jdGlvbigpe3JldHVybigwLGkuTFgpKClbYy5KU09OX01BUFBJTkcuQURTRVJWRVJfVEFSR0VUSU5HXX0sc2V0U3RhdHVzRm9yQmlkczpmdW5jdGlvbih0LHIpe3ZhciBpPW4uZmluZEJpZEJ5QWRJZCh0KTtpZihpJiYoaS5zdGF0dXM9ciksaSYmcj09PWMuQklEX1NUQVRVUy5CSURfVEFSR0VUSU5HX1NFVCl7dmFyIGE9KDAsby5zRSkoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXVjdGlvbklkKCk9PT1pLmF1Y3Rpb25JZH0pKTthJiZhLnNldEJpZFRhcmdldGluZyhpKX19LGdldExhc3RBdWN0aW9uSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5sZW5ndGgmJmVbZS5sZW5ndGgtMV0uZ2V0QXVjdGlvbklkKCl9LGNsZWFyQWxsQXVjdGlvbnM6ZnVuY3Rpb24oKXtlLmxlbmd0aD0wfX07cmV0dXJuIG4uaW5kZXg9bmV3IHUoKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSksbn0oKX0sOTYyNDpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se1M6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTt2YXIgcj10KDI2NSksaT10KDk4NTMpLG89dCgyNTI4KTtmdW5jdGlvbiBhKGUpe3JldHVybiBhPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGEoZSl9ZnVuY3Rpb24gdShlLG4sdCl7aWYoIW4uaGFzKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO3JldHVybiB0fXZhciBjPXQoNTY0NCkscz1uZXcgV2Vha1NldDtmdW5jdGlvbiBkKGUpe3JldHVybiBudWxsPT1lP3RoaXMuZGVmYXVsdFNjb3BlOmV9dmFyIGY9bmV3KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShuLHQpe3ZhciByOyFmdW5jdGlvbihlLG4pe2lmKCEoZSBpbnN0YW5jZW9mIG4pKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsZSksZnVuY3Rpb24oZSxuKXtpZihuLmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGluaXRpYWxpemUgdGhlIHNhbWUgcHJpdmF0ZSBlbGVtZW50cyB0d2ljZSBvbiBhbiBvYmplY3RcIil9KHRoaXMscj1zKSxyLmFkZCh0aGlzKSx0aGlzLmdldFNldHRpbmdzPW4sdGhpcy5kZWZhdWx0U2NvcGU9dH12YXIgbix0O3JldHVybiBuPWUsKHQ9W3trZXk6XCJnZXRcIix2YWx1ZTpmdW5jdGlvbihlLG4pe3ZhciB0PXRoaXMuZ2V0T3duKGUsbik7cmV0dXJuIHZvaWQgMD09PXQmJih0PXRoaXMuZ2V0T3duKG51bGwsbikpLHR9fSx7a2V5OlwiZ2V0T3duXCIsdmFsdWU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZT11KHRoaXMscyxkKS5jYWxsKHRoaXMsZSksKDAsci5aKSh0aGlzLmdldFNldHRpbmdzKCksXCJcIi5jb25jYXQoZSxcIi5cIikuY29uY2F0KG4pKX19LHtrZXk6XCJnZXRTY29wZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZ2V0U2V0dGluZ3MoKSkuZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gbiE9PWUuZGVmYXVsdFNjb3BlfSkpfX0se2tleTpcInNldHRpbmdzRm9yXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKDAsaS5tZXJnZURlZXApKHt9LHRoaXMub3duU2V0dGluZ3NGb3IobnVsbCksdGhpcy5vd25TZXR0aW5nc0ZvcihlKSl9fSx7a2V5Olwib3duU2V0dGluZ3NGb3JcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT11KHRoaXMscyxkKS5jYWxsKHRoaXMsZSksdGhpcy5nZXRTZXR0aW5ncygpW2VdfHx7fX19XSkmJmZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PTA7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLChpPWZ1bmN0aW9uKGUsbil7aWYoXCJvYmplY3RcIiE9PWEoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciB0PWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT10KXt2YXIgcj10LmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09YShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oci5rZXkpLFwic3ltYm9sXCI9PT1hKGkpP2k6U3RyaW5nKGkpKSxyKX12YXIgaX0obi5wcm90b3R5cGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxlfSgpKSgoZnVuY3Rpb24oKXtyZXR1cm4oMCxvLlIpKCkuYmlkZGVyU2V0dGluZ3N8fHt9fSksYy5KU09OX01BUFBJTkcuQkRfU0VUVElOR19TVEFOREFSRCl9LDE0Nzc6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHttOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9dCg5ODUzKTtmdW5jdGlvbiBpKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSx0PW4uc3JjLGk9dm9pZCAwPT09dD9cImNsaWVudFwiOnQsbz1uLmJpZGRlcixhPXZvaWQgMD09PW8/XCJcIjpvLHU9bi5iaWRJZCxjPW4udHJhbnNhY3Rpb25JZCxzPW4uYXVjdGlvbklkLGQ9aSxmPWV8fDA7dGhpcy5iaWRkZXJDb2RlPWEsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5zdGF0dXNNZXNzYWdlPWZ1bmN0aW9uKCl7c3dpdGNoKGYpe2Nhc2UgMDpyZXR1cm5cIlBlbmRpbmdcIjtjYXNlIDE6cmV0dXJuXCJCaWQgYXZhaWxhYmxlXCI7Y2FzZSAyOnJldHVyblwiQmlkIHJldHVybmVkIGVtcHR5IG9yIGVycm9yIHJlc3BvbnNlXCI7Y2FzZSAzOnJldHVyblwiQmlkIHRpbWVkIG91dFwifX0oKSx0aGlzLmFkSWQ9KDAsci5nZXRVbmlxdWVJZGVudGlmaWVyU3RyKSgpLHRoaXMucmVxdWVzdElkPXUsdGhpcy50cmFuc2FjdGlvbklkPWMsdGhpcy5hdWN0aW9uSWQ9cyx0aGlzLm1lZGlhVHlwZT1cImJhbm5lclwiLHRoaXMuc291cmNlPWQsdGhpcy5nZXRTdGF0dXNDb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRoK1wieFwiK3RoaXMuaGVpZ2h0fSx0aGlzLmdldElkZW50aWZpZXJzPWZ1bmN0aW9uKCl7cmV0dXJue3NyYzp0aGlzLnNvdXJjZSxiaWRkZXI6dGhpcy5iaWRkZXJDb2RlLGJpZElkOnRoaXMucmVxdWVzdElkLHRyYW5zYWN0aW9uSWQ6dGhpcy50cmFuc2FjdGlvbklkLGF1Y3Rpb25JZDp0aGlzLmF1Y3Rpb25JZH19fWZ1bmN0aW9uIG8oZSxuKXtyZXR1cm4gbmV3IGkoZSxuKX19LDg5NjI6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHtGRDpmdW5jdGlvbigpe3JldHVybiBUfSx2YzpmdW5jdGlvbigpe3JldHVybiBPfX0pO3ZhciByPXQoNTU1MyksaT10KDE4NzkpLG89dCg5ODUzKSxhPXQoMjY1KSx1PVtcImZwZFwiXTtmdW5jdGlvbiBjKGUsbil7dmFyIHQ9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuJiYocj1yLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKS5lbnVtZXJhYmxlfSkpKSx0LnB1c2guYXBwbHkodCxyKX1yZXR1cm4gdH1mdW5jdGlvbiBzKGUsbix0KXtyZXR1cm4obj1mdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbihlLG4pe2lmKFwib2JqZWN0XCIhPT1kKGUpfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgdD1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09dCl7dmFyIHI9dC5jYWxsKGUsXCJzdHJpbmdcIik7aWYoXCJvYmplY3RcIiE9PWQocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVyblwic3ltYm9sXCI9PT1kKG4pP246U3RyaW5nKG4pfShuKSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW25dPXQsZX1mdW5jdGlvbiBkKGUpe3JldHVybiBkPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGQoZSl9ZnVuY3Rpb24gZigpe3JldHVybiBmPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX1yZXR1cm4gZX0sZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGw9dCg1NjQ0KSxnPVwiVFJVRVwiPT09KDAsby5nZXRQYXJhbWV0ZXJCeU5hbWUpKGwuREVCVUdfTU9ERSkudG9VcHBlckNhc2UoKSxwPTNlMyx2PXdpbmRvdy5sb2NhdGlvbi5vcmlnaW4seT0hMCxiPSExLG09ITEsaD0hMCxFPTEwLFM9NDAwLFQ9XCJyYW5kb21cIixBPXt9O0FbVF09ITAsQS5maXhlZD0hMDt2YXIgST1ULHc9e0xPVzpcImxvd1wiLE1FRElVTTpcIm1lZGl1bVwiLEhJR0g6XCJoaWdoXCIsQVVUTzpcImF1dG9cIixERU5TRTpcImRlbnNlXCIsQ1VTVE9NOlwiY3VzdG9tXCJ9LEM9XCIqXCIsTz1mdW5jdGlvbigpe3ZhciBlLG4sdCxsPVtdLFQ9bnVsbDtmdW5jdGlvbiBPKCl7ZT17fTt2YXIgYT17X2RlYnVnOmcsZ2V0IGRlYnVnKCl7cmV0dXJuIHRoaXMuX2RlYnVnfSxzZXQgZGVidWcoZSl7dGhpcy5fZGVidWc9ZX0sX2JpZGRlclRpbWVvdXQ6cCxnZXQgYmlkZGVyVGltZW91dCgpe3JldHVybiB0aGlzLl9iaWRkZXJUaW1lb3V0fSxzZXQgYmlkZGVyVGltZW91dChlKXt0aGlzLl9iaWRkZXJUaW1lb3V0PWV9LF9wdWJsaXNoZXJEb21haW46dixnZXQgcHVibGlzaGVyRG9tYWluKCl7cmV0dXJuIHRoaXMuX3B1Ymxpc2hlckRvbWFpbn0sc2V0IHB1Ymxpc2hlckRvbWFpbihlKXt0aGlzLl9wdWJsaXNoZXJEb21haW49ZX0sX3ByaWNlR3JhbnVsYXJpdHk6dy5NRURJVU0sc2V0IHByaWNlR3JhbnVsYXJpdHkoZSl7YyhlKSYmKFwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX3ByaWNlR3JhbnVsYXJpdHk9dShlKT9lOncuTUVESVVNOigwLG8uaXNQbGFpbk9iamVjdCkoZSkmJih0aGlzLl9jdXN0b21QcmljZUJ1Y2tldD1lLHRoaXMuX3ByaWNlR3JhbnVsYXJpdHk9dy5DVVNUT00sKDAsby5sb2dNZXNzYWdlKShcIlVzaW5nIGN1c3RvbSBwcmljZSBncmFudWxhcml0eVwiKSkpfSxnZXQgcHJpY2VHcmFudWxhcml0eSgpe3JldHVybiB0aGlzLl9wcmljZUdyYW51bGFyaXR5fSxfY3VzdG9tUHJpY2VCdWNrZXQ6e30sZ2V0IGN1c3RvbVByaWNlQnVja2V0KCl7cmV0dXJuIHRoaXMuX2N1c3RvbVByaWNlQnVja2V0fSxfbWVkaWFUeXBlUHJpY2VHcmFudWxhcml0eTp7fSxnZXQgbWVkaWFUeXBlUHJpY2VHcmFudWxhcml0eSgpe3JldHVybiB0aGlzLl9tZWRpYVR5cGVQcmljZUdyYW51bGFyaXR5fSxzZXQgbWVkaWFUeXBlUHJpY2VHcmFudWxhcml0eShlKXt2YXIgbj10aGlzO3RoaXMuX21lZGlhVHlwZVByaWNlR3JhbnVsYXJpdHk9T2JqZWN0LmtleXMoZSkucmVkdWNlKChmdW5jdGlvbih0LHIpe3JldHVybiBjKGVbcl0pP1wic3RyaW5nXCI9PXR5cGVvZiBlP3Rbcl09dShlW3JdKT9lW3JdOm4uX3ByaWNlR3JhbnVsYXJpdHk6KDAsby5pc1BsYWluT2JqZWN0KShlKSYmKHRbcl09ZVtyXSwoMCxvLmxvZ01lc3NhZ2UpKFwiVXNpbmcgY3VzdG9tIHByaWNlIGdyYW51bGFyaXR5IGZvciBcIi5jb25jYXQocikpKTooMCxvLmxvZ1dhcm4pKFwiSW52YWxpZCBwcmljZSBncmFudWxhcml0eSBmb3IgbWVkaWEgdHlwZTogXCIuY29uY2F0KHIpKSx0fSkse30pfSxfc2VuZEFsbEJpZHM6eSxnZXQgZW5hYmxlU2VuZEFsbEJpZHMoKXtyZXR1cm4gdGhpcy5fc2VuZEFsbEJpZHN9LHNldCBlbmFibGVTZW5kQWxsQmlkcyhlKXt0aGlzLl9zZW5kQWxsQmlkcz1lfSxfdXNlQmlkQ2FjaGU6bSxnZXQgdXNlQmlkQ2FjaGUoKXtyZXR1cm4gdGhpcy5fdXNlQmlkQ2FjaGV9LHNldCB1c2VCaWRDYWNoZShlKXt0aGlzLl91c2VCaWRDYWNoZT1lfSxfZGV2aWNlQWNjZXNzOmgsZ2V0IGRldmljZUFjY2Vzcygpe3JldHVybiB0aGlzLl9kZXZpY2VBY2Nlc3N9LHNldCBkZXZpY2VBY2Nlc3MoZSl7dGhpcy5fZGV2aWNlQWNjZXNzPWV9LF9iaWRkZXJTZXF1ZW5jZTpJLGdldCBiaWRkZXJTZXF1ZW5jZSgpe3JldHVybiB0aGlzLl9iaWRkZXJTZXF1ZW5jZX0sc2V0IGJpZGRlclNlcXVlbmNlKGUpe0FbZV0/dGhpcy5fYmlkZGVyU2VxdWVuY2U9ZTooMCxvLmxvZ1dhcm4pKFwiSW52YWxpZCBvcmRlcjogXCIuY29uY2F0KGUsXCIuIEJpZGRlciBTZXF1ZW5jZSB3YXMgbm90IHNldC5cIikpfSxfdGltZW91dEJ1ZmZlcjpTLGdldCB0aW1lb3V0QnVmZmVyKCl7cmV0dXJuIHRoaXMuX3RpbWVvdXRCdWZmZXJ9LHNldCB0aW1lb3V0QnVmZmVyKGUpe3RoaXMuX3RpbWVvdXRCdWZmZXI9ZX0sX2Rpc2FibGVBamF4VGltZW91dDpiLGdldCBkaXNhYmxlQWpheFRpbWVvdXQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZUFqYXhUaW1lb3V0fSxzZXQgZGlzYWJsZUFqYXhUaW1lb3V0KGUpe3RoaXMuX2Rpc2FibGVBamF4VGltZW91dD1lfSxfbWF4TmVzdGVkSWZyYW1lczpFLGdldCBtYXhOZXN0ZWRJZnJhbWVzKCl7cmV0dXJuIHRoaXMuX21heE5lc3RlZElmcmFtZXN9LHNldCBtYXhOZXN0ZWRJZnJhbWVzKGUpe3RoaXMuX21heE5lc3RlZElmcmFtZXM9ZX0sX2F1Y3Rpb25PcHRpb25zOnt9LGdldCBhdWN0aW9uT3B0aW9ucygpe3JldHVybiB0aGlzLl9hdWN0aW9uT3B0aW9uc30sc2V0IGF1Y3Rpb25PcHRpb25zKGUpeyhmdW5jdGlvbihlKXtpZighKDAsby5pc1BsYWluT2JqZWN0KShlKSlyZXR1cm4oMCxvLmxvZ1dhcm4pKFwiQXVjdGlvbiBPcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0XCIpLCExO2Zvcih2YXIgbj0wLHQ9T2JqZWN0LmtleXMoZSk7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07aWYoXCJzZWNvbmRhcnlCaWRkZXJzXCIhPT1yJiZcInN1cHByZXNzU3RhbGVSZW5kZXJcIiE9PXIpcmV0dXJuKDAsby5sb2dXYXJuKShcIkF1Y3Rpb24gT3B0aW9ucyBnaXZlbiBhbiBpbmNvcnJlY3QgcGFyYW06IFwiLmNvbmNhdChyKSksITE7aWYoXCJzZWNvbmRhcnlCaWRkZXJzXCI9PT1yKXtpZighKDAsby5pc0FycmF5KShlW3JdKSlyZXR1cm4oMCxvLmxvZ1dhcm4pKFwiQXVjdGlvbiBPcHRpb25zIFwiLmNvbmNhdChyLFwiIG11c3QgYmUgb2YgdHlwZSBBcnJheVwiKSksITE7aWYoIWVbcl0uZXZlcnkoby5pc1N0cikpcmV0dXJuKDAsby5sb2dXYXJuKShcIkF1Y3Rpb24gT3B0aW9ucyBcIi5jb25jYXQocixcIiBtdXN0IGJlIG9ubHkgc3RyaW5nXCIpKSwhMX1lbHNlIGlmKFwic3VwcHJlc3NTdGFsZVJlbmRlclwiPT09ciYmISgwLG8uaXNCb29sZWFuKShlW3JdKSlyZXR1cm4oMCxvLmxvZ1dhcm4pKFwiQXVjdGlvbiBPcHRpb25zIFwiLmNvbmNhdChyLFwiIG11c3QgYmUgb2YgdHlwZSBib29sZWFuXCIpKSwhMX1yZXR1cm4hMH0pKGUpJiYodGhpcy5fYXVjdGlvbk9wdGlvbnM9ZSl9fTtmdW5jdGlvbiB1KGUpe3JldHVybigwLGkuc0UpKE9iamVjdC5rZXlzKHcpLChmdW5jdGlvbihuKXtyZXR1cm4gZT09PXdbbl19KSl9ZnVuY3Rpb24gYyhlKXtpZighZSlyZXR1cm4oMCxvLmxvZ0Vycm9yKShcIlByZWJpZCBFcnJvcjogbm8gdmFsdWUgcGFzc2VkIHRvIGBzZXRQcmljZUdyYW51bGFyaXR5KClgXCIpLCExO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXUoZSl8fCgwLG8ubG9nV2FybikoXCJQcmViaWQgV2FybmluZzogc2V0UHJpY2VHcmFudWxhcml0eSB3YXMgY2FsbGVkIHdpdGggaW52YWxpZCBzZXR0aW5nLCB1c2luZyBgbWVkaXVtYCBhcyBkZWZhdWx0LlwiKTtlbHNlIGlmKCgwLG8uaXNQbGFpbk9iamVjdCkoZSkmJiEoMCxyLnQpKGUpKXJldHVybigwLG8ubG9nRXJyb3IpKFwiSW52YWxpZCBjdXN0b20gcHJpY2UgdmFsdWUgcGFzc2VkIHRvIGBzZXRQcmljZUdyYW51bGFyaXR5KClgXCIpLCExO3JldHVybiEwfW4mJl8oT2JqZWN0LmtleXMobikucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBuW3RdIT09YVt0XSYmKGVbdF09YVt0XXx8e30pLGV9KSx7fSkpLG49YSx0PXt9fWZ1bmN0aW9uIEIoKXtpZihUJiZ0JiYoMCxvLmlzUGxhaW5PYmplY3QpKHRbVF0pKXt2YXIgZT10W1RdLHI9bmV3IFNldChPYmplY3Qua2V5cyhuKS5jb25jYXQoT2JqZWN0LmtleXMoZSkpKTtyZXR1cm4oMCxpLk9jKShyKS5yZWR1Y2UoKGZ1bmN0aW9uKHQscil7cmV0dXJuIHZvaWQgMD09PWVbcl0/dFtyXT1uW3JdOnZvaWQgMD09PW5bcl0/dFtyXT1lW3JdOigwLG8uaXNQbGFpbk9iamVjdCkoZVtyXSk/dFtyXT0oMCxvLm1lcmdlRGVlcCkoe30sbltyXSxlW3JdKTp0W3JdPWVbcl0sdH0pLHt9KX1yZXR1cm4gZih7fSxuKX1mdW5jdGlvbiBVKGUpe3ZhciBuPXt9O3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj1cImNvbnRleHRcIj09PXQ/XCJzaXRlXCI6dDtuW3JdPVwic2l0ZVwiPT09cnx8XCJ1c2VyXCI9PT1yP09iamVjdC5rZXlzKGVbdF0pLnJlZHVjZSgoZnVuY3Rpb24obixyKXtyZXR1cm5cImRhdGFcIj09PXI/KDAsby5tZXJnZURlZXApKG4se2V4dDp7ZGF0YTplW3RdW3JdfX0pOigwLG8ubWVyZ2VEZWVwKShuLHMoe30scixlW3RdW3JdKSksbn0pLHt9KTplW3RdfSkpLG59ZnVuY3Rpb24gUihlKXt2YXIgbj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm5cImNvbnRleHRcIj09PWV9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmtleXMoZVt0XSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7XCJkYXRhXCI9PT1yPygwLG8ubWVyZ2VEZWVwKShuLHtleHQ6e2RhdGE6ZVt0XVtyXX19KTpcIm9iamVjdFwiIT09ZChlW3RdW3JdKXx8QXJyYXkuaXNBcnJheShlW3RdW3JdKT8oMCxvLm1lcmdlRGVlcCkobix7ZXh0OntkYXRhOnMoe30sci50b0xvd2VyQ2FzZSgpLGVbdF1bcl0pfX0pOk9iamVjdC5rZXlzKGVbdF1bcl0pLmZvckVhY2goKGZ1bmN0aW9uKGkpeygwLG8ubWVyZ2VEZWVwKShuLHtleHQ6e2RhdGE6cyh7fSxyLnRvTG93ZXJDYXNlKCkscyh7fSxpLnRvTG93ZXJDYXNlKCksZVt0XVtyXVtpXSkpfX0pfSkpfSkpfSkpLG59ZnVuY3Rpb24gaih0KXtpZigoMCxvLmlzUGxhaW5PYmplY3QpKHQpKXt2YXIgcj1PYmplY3Qua2V5cyh0KSxpPXt9O3IuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIGE9XCJmcGRcIj09PXI/XCJvcnRiMlwiOnIsdT1cImZwZFwiPT09cj9VKHRbcl0pOnRbcl07KDAsby5pc1BsYWluT2JqZWN0KShlW2FdKSYmKDAsby5pc1BsYWluT2JqZWN0KSh1KSYmKHU9Zih7fSxlW2FdLHUpKSxpW2FdPW5bYV09dX0pKSxfKGkpfWVsc2UoMCxvLmxvZ0Vycm9yKShcInNldENvbmZpZyBvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0XCIpfWZ1bmN0aW9uIEQoZSxuKXt2YXIgdD1uO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlJiYodD1lLGU9QyksXCJmdW5jdGlvblwiPT10eXBlb2YgdCl7dmFyIHI9e3RvcGljOmUsY2FsbGJhY2s6dH07cmV0dXJuIGwucHVzaChyKSxmdW5jdGlvbigpe2wuc3BsaWNlKGwuaW5kZXhPZihyKSwxKX19KDAsby5sb2dFcnJvcikoXCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gXyhlKXt2YXIgbj1PYmplY3Qua2V5cyhlKTtsLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuKDAsaS5xOSkobixlLnRvcGljKX0pKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuLmNhbGxiYWNrKHMoe30sbi50b3BpYyxlW24udG9waWNdKSl9KSksbC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRvcGljPT09Q30pKS5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gbi5jYWxsYmFjayhlKX0pKX1mdW5jdGlvbiBrKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07dHJ5eyFmdW5jdGlvbihlKXtpZighKDAsby5pc1BsYWluT2JqZWN0KShlKSl0aHJvd1wic2V0QmlkZGVyQ29uZmlnIGJpZGRlciBvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0XCI7aWYoIUFycmF5LmlzQXJyYXkoZS5iaWRkZXJzKXx8IWUuYmlkZGVycy5sZW5ndGgpdGhyb3dcInNldEJpZGRlckNvbmZpZyBiaWRkZXIgb3B0aW9ucyBtdXN0IGNvbnRhaW4gYSBiaWRkZXJzIGxpc3Qgd2l0aCBhdCBsZWFzdCAxIGJpZGRlclwiO2lmKCEoMCxvLmlzUGxhaW5PYmplY3QpKGUuY29uZmlnKSl0aHJvd1wic2V0QmlkZGVyQ29uZmlnIGJpZGRlciBvcHRpb25zIG11c3QgY29udGFpbiBhIGNvbmZpZyBvYmplY3RcIn0oZSksZS5iaWRkZXJzLmZvckVhY2goKGZ1bmN0aW9uKHIpe3Rbcl18fCh0W3JdPXt9KSxPYmplY3Qua2V5cyhlLmNvbmZpZykuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dmFyIGE9XCJmcGRcIj09PWk/XCJvcnRiMlwiOmksdT1cImZwZFwiPT09aT9VKGUuY29uZmlnW2ldKTplLmNvbmZpZ1tpXTtpZigoMCxvLmlzUGxhaW5PYmplY3QpKHUpKXt2YXIgYz1uP28ubWVyZ2VEZWVwOk9iamVjdC5hc3NpZ247dFtyXVthXT1jKHt9LHRbcl1bYV18fHt9LHUpfWVsc2UgdFtyXVthXT11fSkpfSkpfWNhdGNoKGUpeygwLG8ubG9nRXJyb3IpKGUpfX1mdW5jdGlvbiBQKGUsbil7VD1lO3RyeXtyZXR1cm4gbigpfWZpbmFsbHl7TigpfX1mdW5jdGlvbiBOKCl7VD1udWxsfXJldHVybiBPKCkse2dldEN1cnJlbnRCaWRkZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVH0scmVzZXRCaWRkZXI6TixnZXRDb25maWc6ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoPD0xJiZcImZ1bmN0aW9uXCIhPXR5cGVvZihhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF07cmV0dXJuIGU/KDAsYS5aKShCKCksZSk6QigpfXJldHVybiBELmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfSxyZWFkQ29uZmlnOmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aDw9MSYmXCJmdW5jdGlvblwiIT10eXBlb2YoYXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdKSl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLG49KDAsby5kZWVwQ2xvbmUpKEIoKSk7cmV0dXJuIGU/KDAsYS5aKShuLGUpOm59cmV0dXJuIEQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9LHNldENvbmZpZzpqLG1lcmdlQ29uZmlnOmZ1bmN0aW9uKGUpe2lmKCgwLG8uaXNQbGFpbk9iamVjdCkoZSkpe3ZhciBuPU9iamVjdC5rZXlzKGUpLnJlZHVjZSgoZnVuY3Rpb24obix0KXt2YXIgcj1CKClbdF18fHt9O3JldHVybiBuW3RdPSgwLG8ubWVyZ2VEZWVwKShyLGVbdF0pLG59KSx7fSk7cmV0dXJuIGooZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHQ9bnVsbCE9YXJndW1lbnRzW25dP2FyZ3VtZW50c1tuXTp7fTtuJTI/YyhPYmplY3QodCksITApLmZvckVhY2goKGZ1bmN0aW9uKG4pe3MoZSxuLHRbbl0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOmMoT2JqZWN0KHQpKS5mb3JFYWNoKChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSl9cmV0dXJuIGV9KHt9LG4pKSxufSgwLG8ubG9nRXJyb3IpKFwibWVyZ2VDb25maWcgaW5wdXQgbXVzdCBiZSBhbiBvYmplY3RcIil9LHNldERlZmF1bHRzOmZ1bmN0aW9uKHQpeygwLG8uaXNQbGFpbk9iamVjdCkoZSk/KGYoZSx0KSxmKG4sdCkpOigwLG8ubG9nRXJyb3IpKFwiZGVmYXVsdHMgbXVzdCBiZSBhbiBvYmplY3RcIil9LHJlc2V0Q29uZmlnOk8scnVuV2l0aEJpZGRlcjpQLGNhbGxiYWNrV2l0aEJpZGRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbil7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkodCksaT0wO2k8dDtpKyspcltpXT1hcmd1bWVudHNbaV07cmV0dXJuIFAoZSxvLmJpbmQuY2FsbC5hcHBseShvLmJpbmQsW24sdGhpc10uY29uY2F0KHIpKSl9KDAsby5sb2dXYXJuKShcImNvbmZpZy5jYWxsYmFja1dpdGhCaWRkZXIgY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb25cIil9fX0sc2V0QmlkZGVyQ29uZmlnOmssZ2V0QmlkZGVyQ29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LG1lcmdlQmlkZGVyQ29uZmlnOmZ1bmN0aW9uKGUpe3JldHVybiBrKGUsITApfSxjb252ZXJ0QWRVbml0RnBkOmZ1bmN0aW9uKGUpe3ZhciBuPVtdO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0O2UuZnBkPyhlLm9ydGIySW1wPygwLG8ubWVyZ2VEZWVwKShlLm9ydGIySW1wLFIoZS5mcGQpKTplLm9ydGIySW1wPVIoZS5mcGQpLG4ucHVzaCgoKHQ9ZSkuZnBkLGZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgdCxyLGk9ZnVuY3Rpb24oZSxuKXtpZihudWxsPT1lKXJldHVybnt9O3ZhciB0LHIsaT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxvLmxlbmd0aDtyKyspdD1vW3JdLG4uaW5kZXhPZih0KT49MHx8KGlbdF09ZVt0XSk7cmV0dXJuIGl9KGUsbik7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8by5sZW5ndGg7cisrKXQ9b1tyXSxuLmluZGV4T2YodCk+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHQpJiYoaVt0XT1lW3RdKX1yZXR1cm4gaX0odCx1KSkpKTpuLnB1c2goZSl9KSksbn0sZ2V0TGVnYWN5RnBkOmZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PT1kKGUpKXt2YXIgbj17fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9XCJzaXRlXCI9PT10P1wiY29udGV4dFwiOnQ7bltyXT1cImNvbnRleHRcIj09PXJ8fFwidXNlclwiPT09cj9PYmplY3Qua2V5cyhlW3RdKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVyblwiZGF0YVwiIT09ZX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7cmV0dXJuXCJleHRcIj09PXI/KDAsby5tZXJnZURlZXApKG4sZVt0XVtyXSk6KDAsby5tZXJnZURlZXApKG4scyh7fSxyLGVbdF1bcl0pKSxufSkse30pOmVbdF19KSksbn19LGdldExlZ2FjeUltcEZwZDpmdW5jdGlvbihlKXtpZihcIm9iamVjdFwiPT09ZChlKSl7dmFyIG49e307cmV0dXJuKDAsYS5aKShlLFwiZXh0LmRhdGFcIikmJk9iamVjdC5rZXlzKGUuZXh0LmRhdGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe1wicGJhZHNsb3RcIj09PXQ/KDAsby5tZXJnZURlZXApKG4se2NvbnRleHQ6e3BiQWRTbG90OmUuZXh0LmRhdGFbdF19fSk6XCJhZHNlcnZlclwiPT09dD8oMCxvLm1lcmdlRGVlcCkobix7Y29udGV4dDp7YWRTZXJ2ZXI6ZS5leHQuZGF0YVt0XX19KTooMCxvLm1lcmdlRGVlcCkobix7Y29udGV4dDp7ZGF0YTpzKHt9LHQsZS5leHQuZGF0YVt0XSl9fSl9KSksbn19fX0oKX0sNTU1MzpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se0Q6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sdDpmdW5jdGlvbigpe3JldHVybiBnfX0pO3ZhciByPXQoMTg3OSksaT10KDk4NTMpLG89MixhPXtidWNrZXRzOlt7bWF4OjUsaW5jcmVtZW50Oi41fV19LHU9e2J1Y2tldHM6W3ttYXg6MjAsaW5jcmVtZW50Oi4xfV19LGM9e2J1Y2tldHM6W3ttYXg6MjAsaW5jcmVtZW50Oi4wMX1dfSxzPXtidWNrZXRzOlt7bWF4OjMsaW5jcmVtZW50Oi4wMX0se21heDo4LGluY3JlbWVudDouMDV9LHttYXg6MjAsaW5jcmVtZW50Oi41fV19LGQ9e2J1Y2tldHM6W3ttYXg6NSxpbmNyZW1lbnQ6LjA1fSx7bWF4OjEwLGluY3JlbWVudDouMX0se21heDoyMCxpbmNyZW1lbnQ6LjV9XX07ZnVuY3Rpb24gZihlLG4pe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToxLHI9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4ocikmJihyPVwiXCIpLHtsb3c6XCJcIj09PXI/XCJcIjpsKGUsYSx0KSxtZWQ6XCJcIj09PXI/XCJcIjpsKGUsdSx0KSxoaWdoOlwiXCI9PT1yP1wiXCI6bChlLGMsdCksYXV0bzpcIlwiPT09cj9cIlwiOmwoZSxkLHQpLGRlbnNlOlwiXCI9PT1yP1wiXCI6bChlLHMsdCksY3VzdG9tOlwiXCI9PT1yP1wiXCI6bChlLG4sdCl9fWZ1bmN0aW9uIGwoZSxuLHQpe3ZhciBpPVwiXCI7aWYoIWcobikpcmV0dXJuIGk7dmFyIGE9bi5idWNrZXRzLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5tYXg+bi5tYXg/ZTpufSkse21heDowfSksdT0wLGM9KDAsci5zRSkobi5idWNrZXRzLChmdW5jdGlvbihuKXtpZihlPmEubWF4KnQpe3ZhciByPW4ucHJlY2lzaW9uO3ZvaWQgMD09PXImJihyPW8pLGk9KG4ubWF4KnQpLnRvRml4ZWQocil9ZWxzZXtpZihlPD1uLm1heCp0JiZlPj11KnQpcmV0dXJuIG4ubWluPXUsbjt1PW4ubWF4fX0pKTtyZXR1cm4gYyYmKGk9ZnVuY3Rpb24oZSxuLHQpe3ZhciByPXZvaWQgMCE9PW4ucHJlY2lzaW9uP24ucHJlY2lzaW9uOm8saT1uLmluY3JlbWVudCp0LGE9bi5taW4qdCx1PU1hdGgucG93KDEwLHIrMiksYz0oZSp1LWEqdSkvKGkqdSkscz1NYXRoLmZsb29yKGMpKmkrYTtyZXR1cm4ocz1OdW1iZXIocy50b0ZpeGVkKDEwKSkpLnRvRml4ZWQocil9KGUsYyx0KSksaX1mdW5jdGlvbiBnKGUpe2lmKCgwLGkuaXNFbXB0eSkoZSl8fCFlLmJ1Y2tldHN8fCFBcnJheS5pc0FycmF5KGUuYnVja2V0cykpcmV0dXJuITE7dmFyIG49ITA7cmV0dXJuIGUuYnVja2V0cy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLm1heCYmZS5pbmNyZW1lbnR8fChuPSExKX0pKSxufX0sMzYzNjpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4seyQ4OmZ1bmN0aW9uKCl7cmV0dXJuIFN9LEpJOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGdGOmZ1bmN0aW9uKCl7cmV0dXJuIGd9LHd0OmZ1bmN0aW9uKCl7cmV0dXJuIFR9fSk7dmFyIHIsaSxvPXQoODk2MiksYT10KDQ4OTIpLHU9dCgzNDk0KSxjPSgwLHQoOTg1MykucHJlZml4TG9nKShcIkRFQlVHOlwiKSxzPWMubG9nV2FybixkPWMubG9nTWVzc2FnZSxmPVwib3dwYmpzOmRlYnVnZ2luZ1wiLGw9W2Z1bmN0aW9uKGUpe3AoKSxmdW5jdGlvbihlKXtyPWguYmluZChlKSxhLll0LmJlZm9yZShyLDUpLGk9RS5iaW5kKGUpLGEuZTAuYmVmb3JlKGksNSl9KGUpfV0sZz1bcF07ZnVuY3Rpb24gcCgpe2EuWXQuZ2V0SG9va3Moe2hvb2s6cn0pLnJlbW92ZSgpLGEuZTAuZ2V0SG9va3Moe2hvb2s6aX0pLnJlbW92ZSgpfWZ1bmN0aW9uIHYoZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtvLnZjLnNldENvbmZpZyh7ZGVidWc6ITB9KSxsLmZvckVhY2goKGZ1bmN0aW9uKG4pe3JldHVybiBuKGUpfSkpLGQoXCJiaWRkZXIgb3ZlcnJpZGVzIGVuYWJsZWRcIi5jb25jYXQobj9cIiBmcm9tIHNlc3Npb25cIjpcIlwiKSl9ZnVuY3Rpb24geShlLG4sdCl7cmV0dXJuISghZS5iaWRkZXJ8fGUuYmlkZGVyPT09bil8fCEoIWUuYWRVbml0Q29kZXx8ZS5hZFVuaXRDb2RlPT09dCl9ZnVuY3Rpb24gYihlLG4pe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYtMT09PWUuaW5kZXhPZihuKX1mdW5jdGlvbiBtKGUsbix0KXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4tMT09PVtcImFkVW5pdENvZGVcIixcImJpZGRlclwiXS5pbmRleE9mKGUpfSkpLnJlZHVjZSgoZnVuY3Rpb24obixyKXtyZXR1cm4gZChcImJpZGRlciBvdmVycmlkZXMgY2hhbmdlZCAnXCIuY29uY2F0KG4uYWRVbml0Q29kZSxcIi9cIikuY29uY2F0KG4uYmlkZGVyQ29kZSxcIicgXCIpLmNvbmNhdCh0LFwiLlwiKS5jb25jYXQocixcIiBmcm9tICdcIikuY29uY2F0KG5bcl0sXCIuanMnIHRvICdcIikuY29uY2F0KGVbcl0sXCInXCIpKSxuW3JdPWVbcl0sbi5pc0RlYnVnPSEwLG59KSxuKX1mdW5jdGlvbiBoKGUsbix0KXt2YXIgcj10aGlzO2Ioci5iaWRkZXJzLHQuYmlkZGVyQ29kZSk/cyhcImJpZGRlciAnXCIuY29uY2F0KHQuYmlkZGVyQ29kZSxcIicgZXhjbHVkZWQgZnJvbSBhdWN0aW9uIGJ5IGJpZGRlciBvdmVycmlkZXNcIikpOihBcnJheS5pc0FycmF5KHIuYmlkcykmJnIuYmlkcy5mb3JFYWNoKChmdW5jdGlvbihlKXt5KGUsdC5iaWRkZXJDb2RlLG4pfHxtKGUsdCxcImJpZGRlclwiKX0pKSxlKG4sdCkpfWZ1bmN0aW9uIEUoZSxuKXt2YXIgdD10aGlzLHI9bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFiKHQuYmlkZGVycyxlLmJpZGRlckNvZGUpfHwocyhcImJpZFJlcXVlc3QgJ1wiLmNvbmNhdChlLmJpZGRlckNvZGUsXCInIGV4Y2x1ZGVkIGZyb20gYXVjdGlvbiBieSBiaWRkZXIgb3ZlcnJpZGVzXCIpKSwhMSl9KSk7QXJyYXkuaXNBcnJheSh0LmJpZFJlcXVlc3RzKSYmci5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmJpZFJlcXVlc3RzLmZvckVhY2goKGZ1bmN0aW9uKG4pe2UuYmlkcy5mb3JFYWNoKChmdW5jdGlvbih0KXt5KG4sZS5iaWRkZXJDb2RlLHQuYWRVbml0Q29kZSl8fG0obix0LFwiYmlkUmVxdWVzdFwiKX0pKX0pKX0pKSxlKHIpfXZhciBTPSgwLHUuejMpKFwic3luY1wiLChmdW5jdGlvbihlKXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5zZXNzaW9uU3RvcmFnZSx0PXZvaWQgMD09PW4/d2luZG93LnNlc3Npb25TdG9yYWdlOm47aWYoZS5lbmFibGVkKXRyeXt0LnNldEl0ZW0oZixKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2goZSl7fWVsc2UgdHJ5e3QucmVtb3ZlSXRlbShmKX1jYXRjaChlKXt9fSkpO2Z1bmN0aW9uIFQoZSl7dmFyIG47dHJ5e2U9ZXx8d2luZG93LnNlc3Npb25TdG9yYWdlLG49SlNPTi5wYXJzZShlLmdldEl0ZW0oZikpfWNhdGNoKGUpe31uJiZ2KG4sITApfW8udmMuZ2V0Q29uZmlnKFwiZGVidWdnaW5nXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5zZXNzaW9uU3RvcmFnZSx0PXZvaWQgMD09PW4/d2luZG93LnNlc3Npb25TdG9yYWdlOm47UyhlLHtzZXNzaW9uU3RvcmFnZTp0fSksZS5lbmFibGVkP3YoZSk6KGcuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSxkKFwiYmlkZGVyIG92ZXJyaWRlcyBkaXNhYmxlZFwiKSl9KGUuZGVidWdnaW5nKX0pKX0sMjMxOTpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcigpe3JldHVybiByPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX1yZXR1cm4gZX0sci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dC5yKG4pLHQuZChuLHtlbWl0OmZ1bmN0aW9uKCl7cmV0dXJuIHl9LGdldDpmdW5jdGlvbigpe3JldHVybiBwfSxnZXRFdmVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sb2ZmOmZ1bmN0aW9uKCl7cmV0dXJuIGd9LG9uOmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7dmFyIGk9dCg5ODUzKSxvPXQoNTY0NCksYT1BcnJheS5wcm90b3R5cGUuc2xpY2UsdT1BcnJheS5wcm90b3R5cGUucHVzaCxjPWkuX21hcChvLkVWRU5UUywoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkscz1vLkVWRU5UX0lEX1BBVEhTLGQ9W10sZj1mdW5jdGlvbigpe3ZhciBlPXt9LG49e29uOmZ1bmN0aW9uKG4sdCxyKXtpZihmdW5jdGlvbihlKXtyZXR1cm4gaS5jb250YWlucyhjLGUpfShuKSl7dmFyIG89ZVtuXXx8e3F1ZTpbXX07cj8ob1tyXT1vW3JdfHx7cXVlOltdfSxvW3JdLnF1ZS5wdXNoKHQpKTpvLnF1ZS5wdXNoKHQpLGVbbl09b31lbHNlIGkubG9nRXJyb3IoXCJXcm9uZyBldmVudCBuYW1lIDogXCIrbitcIiBWYWxpZCBldmVudCBuYW1lcyA6XCIrYyl9LGVtaXQ6ZnVuY3Rpb24obil7IWZ1bmN0aW9uKG4sdCl7aS5sb2dNZXNzYWdlKFwiRW1pdHRpbmcgZXZlbnQgZm9yOiBcIituKTt2YXIgcj10WzBdfHx7fSxvPXJbc1tuXV0sYT1lW25dfHx7cXVlOltdfSxjPWkuX21hcChhLChmdW5jdGlvbihlLG4pe3JldHVybiBufSkpLGY9W107ZC5wdXNoKHtldmVudFR5cGU6bixhcmdzOnIsaWQ6byxlbGFwc2VkVGltZTppLmdldFBlcmZvcm1hbmNlTm93KCl9KSxvJiZpLmNvbnRhaW5zKGMsbykmJnUuYXBwbHkoZixhW29dLnF1ZSksdS5hcHBseShmLGEucXVlKSxpLl9lYWNoKGYsKGZ1bmN0aW9uKGUpe2lmKGUpdHJ5e2UuYXBwbHkobnVsbCx0KX1jYXRjaChlKXtpLmxvZ0Vycm9yKFwiRXJyb3IgZXhlY3V0aW5nIGhhbmRsZXI6XCIsXCJldmVudHMuanNcIixlKX19KSl9KG4sYS5jYWxsKGFyZ3VtZW50cywxKSl9LG9mZjpmdW5jdGlvbihuLHQscil7dmFyIG89ZVtuXTtpLmlzRW1wdHkobyl8fGkuaXNFbXB0eShvLnF1ZSkmJmkuaXNFbXB0eShvW3JdKXx8ciYmKGkuaXNFbXB0eShvW3JdKXx8aS5pc0VtcHR5KG9bcl0ucXVlKSl8fChyP2kuX2VhY2gob1tyXS5xdWUsKGZ1bmN0aW9uKGUpe3ZhciBuPW9bcl0ucXVlO2U9PT10JiZuLnNwbGljZShuLmluZGV4T2YoZSksMSl9KSk6aS5fZWFjaChvLnF1ZSwoZnVuY3Rpb24oZSl7dmFyIG49by5xdWU7ZT09PXQmJm4uc3BsaWNlKG4uaW5kZXhPZihlKSwxKX0pKSxlW25dPW8pfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sZ2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIGkuX2VhY2goZCwoZnVuY3Rpb24obil7dmFyIHQ9cih7fSxuKTtlLnB1c2godCl9KSksZX19O3JldHVybiBufSgpLGw9Zi5vbixnPWYub2ZmLHA9Zi5nZXQsdj1mLmdldEV2ZW50cyx5PWYuZW1pdH0sMzQ5NDpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se0J4OmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGJBOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LG8wOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHY1OmZ1bmN0aW9uKCl7cmV0dXJuIHV9LHozOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIHI9dCgxNDMyKSxpPXQubihyKTtmdW5jdGlvbiBvKGUsbil7KG51bGw9PW58fG4+ZS5sZW5ndGgpJiYobj1lLmxlbmd0aCk7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkobik7dDxuO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9dmFyIGE9aSgpKHt1c2VQcm94eTohMSxyZWFkeTppKCkuU1lOQ3xpKCkuQVNZTkN8aSgpLlFVRVVFfSksdT1hLmdldDtmdW5jdGlvbiBjKGUsbil7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjE1OzA9PT1lLmdldEhvb2tzKHtob29rOm59KS5sZW5ndGgmJmUuYmVmb3JlKG4sdCl9dmFyIHM9e307ZnVuY3Rpb24gZChlLG4pe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLnBvc3RJbnN0YWxsQWxsb3dlZCxyPXZvaWQgMCE9PXQmJnQ7YShcImFzeW5jXCIsKGZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4uYXBwbHkodm9pZCAwLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG8oZSl9KHQ9ZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KHQpfHxmdW5jdGlvbihlLG4pe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvKGUsbik7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT10JiZlLmNvbnN0cnVjdG9yJiYodD1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT10fHxcIlNldFwiPT09dD9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT10fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KT9vKGUsbik6dm9pZCAwfX0odCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpO3ZhciB0fSkpLHImJihzW2VdPW4pfSksZSkoW10pfWZ1bmN0aW9uIGYoZSl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkobj4xP24tMTowKSxyPTE7cjxuO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3ZhciBpPXNbZV07aWYoaSlyZXR1cm4gaS5hcHBseSh2b2lkIDAsdCk7dShlKS5iZWZvcmUoKGZ1bmN0aW9uKGUsbil7bi5wdXNoKHQpLGUobil9KSl9fSw4MjY1OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LmQobix7QjU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sTWs6ZnVuY3Rpb24oKXtyZXR1cm4gb30sT2g6ZnVuY3Rpb24oKXtyZXR1cm4gYX0scFg6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KTt2YXIgcj1cIm5hdGl2ZVwiLGk9XCJ2aWRlb1wiLG89XCJiYW5uZXJcIixhPVwiYWRwb2RcIn0sOTAxNzpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se0ZiOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LEpMOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LFNnOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LFVyOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGU2OmZ1bmN0aW9uKCl7cmV0dXJuIG19LGVLOmZ1bmN0aW9uKCl7cmV0dXJuIEV9LHI0OmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LHhjOmZ1bmN0aW9uKCl7cmV0dXJuIGd9LHpzOmZ1bmN0aW9uKCl7cmV0dXJuIHZ9fSk7dmFyIHI9dCgyNjUpLGk9dCg5ODUzKSxvPXQoMTg3OSksYT10KDQ3NjYpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sdShlKX1mdW5jdGlvbiBjKGUsbil7dmFyIHQ9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuJiYocj1yLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKS5lbnVtZXJhYmxlfSkpKSx0LnB1c2guYXBwbHkodCxyKX1yZXR1cm4gdH1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciB0PW51bGwhPWFyZ3VtZW50c1tuXT9hcmd1bWVudHNbbl06e307biUyP2MoT2JqZWN0KHQpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihuKXtkKGUsbix0W25dKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTpjKE9iamVjdCh0KSkuZm9yRWFjaCgoZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGQoZSxuLHQpe3JldHVybihuPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKGUsbil7aWYoXCJvYmplY3RcIiE9PXUoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciB0PWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT10KXt2YXIgcj10LmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09dShyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09PXUobik/bjpTdHJpbmcobil9KG4pKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7dmFsdWU6dCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbbl09dCxlfXZhciBmPXQoNTY0NCksbD1bXSxnPU9iamVjdC5rZXlzKGYuTkFUSVZFX0tFWVMpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGYuTkFUSVZFX0tFWVNbZV19KSkscD17aW1hZ2U6e2ltYWdlOntyZXF1aXJlZDohMH0sdGl0bGU6e3JlcXVpcmVkOiEwfSxzcG9uc29yZWRCeTp7cmVxdWlyZWQ6ITB9LGNsaWNrVXJsOntyZXF1aXJlZDohMH0sYm9keTp7cmVxdWlyZWQ6ITF9LGljb246e3JlcXVpcmVkOiExfX19O2Z1bmN0aW9uIHYoZSl7cmV0dXJuIGUmJmUudHlwZSYmKChuPWUudHlwZSkmJigwLG8ucTkpKE9iamVjdC5rZXlzKHApLG4pfHwoKDAsaS5sb2dFcnJvcikoXCJcIi5jb25jYXQobixcIiBuYXRpdmVQYXJhbSBpcyBub3Qgc3VwcG9ydGVkXCIpKSwwKSk/cFtlLnR5cGVdOmU7dmFyIG59ZnVuY3Rpb24geShlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUubmF0aXZlUGFyYW1zfHwoMCxyLlopKGUsXCJtZWRpYVR5cGVzLm5hdGl2ZVwiKTtuJiYoZS5uYXRpdmVQYXJhbXM9dihuKSl9KSl9ZnVuY3Rpb24gYihlKXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5pbmRleCx0PXZvaWQgMD09PW4/YS5LLmluZGV4Om47aWYoISgwLHIuWikoZSxcIm5hdGl2ZS5jbGlja1VybFwiKSlyZXR1cm4hMTt2YXIgaT10LmdldEFkVW5pdChlKS5uYXRpdmVQYXJhbXM7aWYoIWkpcmV0dXJuITA7dmFyIHU9T2JqZWN0LmtleXMoaSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gaVtlXS5yZXF1aXJlZH0pKSxjPU9iamVjdC5rZXlzKGUubmF0aXZlKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiBlLm5hdGl2ZVtuXX0pKTtyZXR1cm4gdS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5xOSkoYyxlKX0pKX1mdW5jdGlvbiBtKGUsbil7dmFyIHQ7cmV0dXJuXCJjbGlja1wiPT09ZS5hY3Rpb24/dD1uLm5hdGl2ZSYmbi5uYXRpdmUuY2xpY2tUcmFja2VyczoodD1uLm5hdGl2ZSYmbi5uYXRpdmUuaW1wcmVzc2lvblRyYWNrZXJzLG4ubmF0aXZlJiZuLm5hdGl2ZS5qYXZhc2NyaXB0VHJhY2tlcnMmJigwLGkuaW5zZXJ0SHRtbEludG9JZnJhbWUpKG4ubmF0aXZlLmphdmFzY3JpcHRUcmFja2VycykpLCh0fHxbXSkuZm9yRWFjaChpLnRyaWdnZXJQaXhlbCksZS5hY3Rpb259ZnVuY3Rpb24gaChlKXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5pbmRleCx0PXZvaWQgMD09PW4/YS5LLmluZGV4Om4saT17fSxvPXQuZ2V0QWRVbml0KGUpOygwLHIuWikobyxcIm5hdGl2ZVBhcmFtcy5yZW5kZXJlclVybFwiKT9lLm5hdGl2ZS5yZW5kZXJlclVybD1UKG8ubmF0aXZlUGFyYW1zLnJlbmRlcmVyVXJsKTooMCxyLlopKG8sXCJuYXRpdmVQYXJhbXMuYWRUZW1wbGF0ZVwiKSYmKGUubmF0aXZlLmFkVGVtcGxhdGU9VChvLm5hdGl2ZVBhcmFtcy5hZFRlbXBsYXRlKSk7dmFyIHU9ITEhPT0oMCxyLlopKG8sXCJuYXRpdmVQYXJhbXMuc2VuZFRhcmdldGluZ0tleXNcIiksYz1mdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4oMCxyLlopKGUsXCJuYXRpdmVQYXJhbXMuZXh0XCIpJiZPYmplY3Qua2V5cyhlLm5hdGl2ZVBhcmFtcy5leHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bZV09XCJoYl9uYXRpdmVfXCIuY29uY2F0KGUpfSkpLHMocyh7fSxmLk5BVElWRV9LRVlTKSxuKX0obyksZD1zKHMoe30sZS5uYXRpdmUpLGUubmF0aXZlLmV4dCk7cmV0dXJuIGRlbGV0ZSBkLmV4dCxPYmplY3Qua2V5cyhkKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgdD1jW25dLGE9VChlLm5hdGl2ZVtuXSl8fFQoKDAsci5aKShlLFwibmF0aXZlLmV4dC5cIi5jb25jYXQobikpKTtpZihcImFkVGVtcGxhdGVcIiE9PW4mJnQmJmEpe3ZhciBzPSgwLHIuWikobyxcIm5hdGl2ZVBhcmFtcy5cIi5jb25jYXQobixcIi5zZW5kSWRcIikpO1wiYm9vbGVhblwiIT10eXBlb2YgcyYmKHM9KDAsci5aKShvLFwibmF0aXZlUGFyYW1zLmV4dC5cIi5jb25jYXQobixcIi5zZW5kSWRcIikpKSxzJiYoYT1cIlwiLmNvbmNhdCh0LFwiOlwiKS5jb25jYXQoZS5hZElkKSk7dmFyIGQ9KDAsci5aKShvLFwibmF0aXZlUGFyYW1zLlwiLmNvbmNhdChuLFwiLnNlbmRUYXJnZXRpbmdLZXlzXCIpKTtcImJvb2xlYW5cIiE9dHlwZW9mIGQmJihkPSgwLHIuWikobyxcIm5hdGl2ZVBhcmFtcy5leHQuXCIuY29uY2F0KG4sXCIuc2VuZFRhcmdldGluZ0tleXNcIikpKSwoXCJib29sZWFuXCI9PXR5cGVvZiBkP2Q6dSkmJihpW3RdPWEpfX0pKSxpfWZ1bmN0aW9uIEUoZSxuKXt2YXIgdD17bWVzc2FnZTpcImFzc2V0UmVzcG9uc2VcIixhZElkOmUuYWRJZCxhc3NldHM6W119O3JldHVybiBuLm5hdGl2ZS5oYXNPd25Qcm9wZXJ0eShcImFkVGVtcGxhdGVcIikmJih0LmFkVGVtcGxhdGU9VChuLm5hdGl2ZS5hZFRlbXBsYXRlKSksbi5uYXRpdmUuaGFzT3duUHJvcGVydHkoXCJyZW5kZXJlclVybFwiKSYmKHQucmVuZGVyZXJVcmw9VChuLm5hdGl2ZS5yZW5kZXJlclVybCkpLGUuYXNzZXRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPSgwLGkuZ2V0S2V5QnlWYWx1ZSkoZi5OQVRJVkVfS0VZUyxlKSxvPVQobi5uYXRpdmVbcl0pO3QuYXNzZXRzLnB1c2goe2tleTpyLHZhbHVlOm99KX0pKSx0fWZ1bmN0aW9uIFMoZSxuKXt2YXIgdD17bWVzc2FnZTpcImFzc2V0UmVzcG9uc2VcIixhZElkOmUuYWRJZCxhc3NldHM6W119O3JldHVybiBPYmplY3Qua2V5cyhuLm5hdGl2ZSkuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtpZihcImFkVGVtcGxhdGVcIj09PWUmJm4ubmF0aXZlW2VdKXQuYWRUZW1wbGF0ZT1UKG4ubmF0aXZlW2VdKTtlbHNlIGlmKFwicmVuZGVyZXJVcmxcIj09PWUmJm4ubmF0aXZlW2VdKXQucmVuZGVyZXJVcmw9VChuLm5hdGl2ZVtlXSk7ZWxzZSBpZihcImV4dFwiPT09ZSlPYmplY3Qua2V5cyhuLm5hdGl2ZVtlXSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7aWYobi5uYXRpdmVbZV1bcl0pe3ZhciBpPVQobi5uYXRpdmVbZV1bcl0pO3QuYXNzZXRzLnB1c2goe2tleTpyLHZhbHVlOml9KX19KSk7ZWxzZSBpZihuLm5hdGl2ZVtlXSYmZi5OQVRJVkVfS0VZUy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGk9VChuLm5hdGl2ZVtlXSk7dC5hc3NldHMucHVzaCh7a2V5OmUsdmFsdWU6aX0pfX0pKSx0fWZ1bmN0aW9uIFQoZSl7cmV0dXJuXCJvYmplY3RcIj09PXUoZSkmJmUudXJsP2UudXJsOmV9fSwxODc5OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUsbix0KXtyZXR1cm4gZSYmZS5pbmNsdWRlcyhuLHQpfHwhMX1mdW5jdGlvbiBpKCl7cmV0dXJuIEFycmF5LmZyb20uYXBwbHkoQXJyYXksYXJndW1lbnRzKX1mdW5jdGlvbiBvKGUsbix0KXtyZXR1cm4gZSYmZS5maW5kKG4sdCl9ZnVuY3Rpb24gYShlLG4sdCl7cmV0dXJuIGUmJmUuZmluZEluZGV4KG4sdCl9dC5kKG4se09jOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGN4OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHE5OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNFOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSl9LDI3ODY6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHt6aDpmdW5jdGlvbigpe3JldHVybiBvZX0sTzU6ZnVuY3Rpb24oKXtyZXR1cm4gYWV9fSk7dmFyIHI9dCgyNTI4KSxpPXQoOTg1Myksbz10KDI2NSksYT10KDIzMTkpLHU9dCg5MDE3KSxjPXQoNTY0NCkscz10KDQ3NjYpLGQ9dCgxODc5KSxmPXQoNDg3NyksbD10KDg5NjIpLGc9Yy5FVkVOVFMscD1nLkFEX1JFTkRFUl9GQUlMRUQsdj1nLkFEX1JFTkRFUl9TVUNDRUVERUQ7ZnVuY3Rpb24geShlKXt2YXIgbj1lLnJlYXNvbix0PWUubWVzc2FnZSxyPWUuYmlkLG89ZS5pZCx1PXtyZWFzb246bixtZXNzYWdlOnR9O3ImJih1LmJpZD1yKSxvJiYodS5hZElkPW8pLCgwLGkubG9nRXJyb3IpKHQpLGEuZW1pdChwLHUpfWZ1bmN0aW9uIGIoZSl7dmFyIG49ZS5kb2MsdD1lLmJpZCxyPWUuaWQsaT17ZG9jOm59O3QmJihpLmJpZD10KSxyJiYoaS5hZElkPXIpLGEuZW1pdCh2LGkpfXZhciBtPWMuRVZFTlRTLkJJRF9XT04saD1jLkVWRU5UUy5TVEFMRV9SRU5ERVIsRT17XCJQcmViaWQgUmVxdWVzdFwiOmZ1bmN0aW9uKGUsbix0KXtpZihudWxsIT10KXtpZih0LnN0YXR1cyE9PWMuQklEX1NUQVRVUy5SRU5ERVJFRHx8KCgwLGkubG9nV2FybikoXCJBZCBpZCBcIi5jb25jYXQodC5hZElkLFwiIGhhcyBiZWVuIHJlbmRlcmVkIGJlZm9yZVwiKSksYS5lbWl0KGgsdCksISgwLG8uWikobC52Yy5nZXRDb25maWcoXCJhdWN0aW9uT3B0aW9uc1wiKSxcInN1cHByZXNzU3RhbGVSZW5kZXJcIikpKXt0cnl7IWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5hZElkLHI9ZS5hZCxvPWUuYWRVcmwsYT1lLndpZHRoLHU9ZS5oZWlnaHQsYz1lLnJlbmRlcmVyLHM9ZS5jcG0sZD1lLm9yaWdpbmFsQ3BtOygwLGYuUGQpKGMpPygwLGYuX1UpKGMsZSk6dCYmKFQoZSksbih7bWVzc2FnZTpcIlByZWJpZCBSZXNwb25zZVwiLGFkOigwLGkucmVwbGFjZUF1Y3Rpb25QcmljZSkocixkfHxzKSxhZFVybDooMCxpLnJlcGxhY2VBdWN0aW9uUHJpY2UpKG8sZHx8cyksYWRJZDp0LHdpZHRoOmEsaGVpZ2h0OnV9KSl9KHQsZSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgeSh7cmVhc29uOmMuQURfUkVOREVSX0ZBSUxFRF9SRUFTT04uRVhDRVBUSU9OLG1lc3NhZ2U6ZS5tZXNzYWdlLGlkOm4uYWRJZCxiaWQ6dH0pfXMuSy5hZGRXaW5uaW5nQmlkKHQpLGEuZW1pdChtLHQpfX1lbHNlIHkoe3JlYXNvbjpjLkFEX1JFTkRFUl9GQUlMRURfUkVBU09OLkNBTk5PVF9GSU5EX0FELG1lc3NhZ2U6XCJDYW5ub3QgZmluZCBhZCAnXCIuY29uY2F0KG4uYWRJZCxcIicgZm9yIGNyb3NzLW9yaWdpbiByZW5kZXIgcmVxdWVzdFwiKSxpZDpuLmFkSWR9KX0sXCJQcmViaWQgTmF0aXZlXCI6ZnVuY3Rpb24oZSxuLHQpe2lmKG51bGwhPXQpc3dpdGNoKG4uYWN0aW9uKXtjYXNlXCJhc3NldFJlcXVlc3RcIjplKCgwLHUuZUspKG4sdCkpO2JyZWFrO2Nhc2VcImFsbEFzc2V0UmVxdWVzdFwiOmUoKDAsdS5KTCkobix0KSk7YnJlYWs7Y2FzZVwicmVzaXplTmF0aXZlSGVpZ2h0XCI6dC5oZWlnaHQ9bi5oZWlnaHQsdC53aWR0aD1uLndpZHRoLFQodCk7YnJlYWs7ZGVmYXVsdDppZihcImNsaWNrXCI9PT0oMCx1LmU2KShuLHQpKXJldHVybjtzLksuYWRkV2lubmluZ0JpZCh0KSxhLmVtaXQobSx0KX1lbHNlKDAsaS5sb2dFcnJvcikoXCJDYW5ub3QgZmluZCBhZCAnXCIuY29uY2F0KG4uYWRJZCxcIicgZm9yIHgtb3JpZ2luIGV2ZW50IHJlcXVlc3RcIikpfSxcIlByZWJpZCBFdmVudFwiOmZ1bmN0aW9uKGUsbix0KXtpZihudWxsIT10KWlmKHQuc3RhdHVzPT09Yy5CSURfU1RBVFVTLlJFTkRFUkVEKXN3aXRjaChuLmV2ZW50KXtjYXNlIGMuRVZFTlRTLkFEX1JFTkRFUl9GQUlMRUQ6eSh7YmlkOnQsaWQ6bi5hZElkLHJlYXNvbjpuLmluZm8ucmVhc29uLG1lc3NhZ2U6bi5pbmZvLm1lc3NhZ2V9KTticmVhaztjYXNlIGMuRVZFTlRTLkFEX1JFTkRFUl9TVUNDRUVERUQ6Yih7ZG9jOm51bGwsYmlkOnQsaWQ6bi5hZElkfSk7YnJlYWs7ZGVmYXVsdDooMCxpLmxvZ0Vycm9yKShcIlJlY2VpdmVkIHgtb3JpZ2luIGV2ZW50IHJlcXVlc3QgZm9yIHVuc3VwcG9ydGVkIGV2ZW50OiAnXCIuY29uY2F0KG4uZXZlbnQsXCInIChhZElkOiAnXCIpLmNvbmNhdChuLmFkSWQsXCInKVwiKSl9ZWxzZSgwLGkubG9nV2FybikoXCJSZWNlaXZlZCB4LW9yaWdpbiBldmVudCByZXF1ZXN0IHdpdGhvdXQgY29ycmVzcG9uZGluZyByZW5kZXIgcmVxdWVzdCBmb3IgYWQgJ1wiLmNvbmNhdChuLmFkSWQsXCInXCIpKTtlbHNlKDAsaS5sb2dFcnJvcikoXCJDYW5ub3QgZmluZCBhZCAnXCIuY29uY2F0KG4uYWRJZCxcIicgZm9yIHgtb3JpZ2luIGV2ZW50IHJlcXVlc3RcIikpfX07ZnVuY3Rpb24gUyhlKXt2YXIgbj1lLm1lc3NhZ2U/XCJtZXNzYWdlXCI6XCJkYXRhXCIsdD17fTt0cnl7dD1KU09OLnBhcnNlKGVbbl0pfWNhdGNoKGUpe3JldHVybn1pZih0JiZ0LmFkSWQmJnQubWVzc2FnZSl7dmFyIHI9KDAsZC5zRSkocy5LLmdldEJpZHNSZWNlaXZlZCgpLChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZElkPT09dC5hZElkfSkpO0UuaGFzT3duUHJvcGVydHkodC5tZXNzYWdlKSYmRVt0Lm1lc3NhZ2VdKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLm9yaWdpbiYmMD09PWUucG9ydHMubGVuZ3RoP2Z1bmN0aW9uKCl7dmFyIGU9XCJDYW5ub3QgcG9zdCBtZXNzYWdlIHRvIGEgZnJhbWUgd2l0aCBudWxsIG9yaWdpbi4gUGxlYXNlIHVwZGF0ZSBjcmVhdGl2ZXMgdG8gdXNlIE1lc3NhZ2VDaGFubmVsLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ByZWJpZC9QcmViaWQuanMvaXNzdWVzLzc4NzBcIjt0aHJvdygwLGkubG9nRXJyb3IpKGUpLG5ldyBFcnJvcihlKX06ZS5wb3J0cy5sZW5ndGg+MD9mdW5jdGlvbihuKXtlLnBvcnRzWzBdLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KG4pKX06ZnVuY3Rpb24obil7ZS5zb3VyY2UucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkobiksZS5vcmlnaW4pfX0oZSksdCxyKX19ZnVuY3Rpb24gVChlKXt2YXIgbj1lLmFkSWQsdD1lLmFkVW5pdENvZGUscj1lLndpZHRoLG89ZS5oZWlnaHQ7W1wiZGl2XCIsXCJpZnJhbWVcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4oMCxpLmlzR3B0UHViYWRzRGVmaW5lZCkoKT9mdW5jdGlvbihlKXt2YXIgbj0oMCxkLnNFKSh3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcygpLmdldFNsb3RzKCksKGZ1bmN0aW9uKG4pe3JldHVybigwLGQuc0UpKG4uZ2V0VGFyZ2V0aW5nS2V5cygpLChmdW5jdGlvbih0KXtyZXR1cm4oMCxkLnE5KShuLmdldFRhcmdldGluZyh0KSxlKX0pKX0pKTtyZXR1cm4gbj9uLmdldFNsb3RFbGVtZW50SWQoKTpudWxsfShlKTooMCxpLmlzQXBuR2V0VGFnRGVmaW5lZCkoKT9mdW5jdGlvbihlKXt2YXIgbj13aW5kb3cuYXBudGFnLmdldFRhZyhlKTtyZXR1cm4gbiYmbi50YXJnZXRJZH0obik6bn0obix0KSxvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHIpO3JldHVybiBvJiZvLnF1ZXJ5U2VsZWN0b3IoZSl9KGUrJzpub3QoW3N0eWxlKj1cImRpc3BsYXk6IG5vbmVcIl0pJyk7aWYoYSl7dmFyIHU9YS5zdHlsZTt1LndpZHRoPXIrXCJweFwiLHUuaGVpZ2h0PW8rXCJweFwifWVsc2UoMCxpLmxvZ1dhcm4pKFwiVW5hYmxlIHRvIGxvY2F0ZSBtYXRjaGluZyBwYWdlIGVsZW1lbnQgZm9yIGFkVW5pdENvZGUgXCIuY29uY2F0KHQsXCIuICBDYW4ndCByZXNpemUgaXQgdG8gYWQncyBkaW1lbnNpb25zLiAgUGxlYXNlIHJldmlldyBzZXR1cC5cIikpfSkpfXZhciBBPXQoNzExMiksST10KDk3NDIpLHc9dCgzNDk0KSxDPXQoMzYzNiksTz10KDcyNjMpLEI9dCgxNDc3KSxVPXQoNTg0OSksUj10KDc2MDIpO2Z1bmN0aW9uIGooZSl7cmV0dXJuIGo9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0saihlKX1mdW5jdGlvbiBEKGUsbil7KG51bGw9PW58fG4+ZS5sZW5ndGgpJiYobj1lLmxlbmd0aCk7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkobik7dDxuO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9ZnVuY3Rpb24gXygpe3JldHVybiBfPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX1yZXR1cm4gZX0sXy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGs9KDAsci5SKSgpLFA9dCg1NjQ0KSxOPXQoNzYwMikuWlAseD10KDIzMTkpLHE9QS5rXy50cmlnZ2VyVXNlclN5bmNzLE09UC5FVkVOVFMsRz1NLkFERF9BRF9VTklUUyxXPU0uQklEX1dPTixGPU0uUkVRVUVTVF9CSURTLHo9TS5TRVRfVEFSR0VUSU5HLEw9TS5TVEFMRV9SRU5ERVIsSz1QLkFEX1JFTkRFUl9GQUlMRURfUkVBU09OLFY9Sy5QUkVWRU5UX1dSSVRJTkdfT05fTUFJTl9ET0NVTUVOVCxIPUsuTk9fQUQsWj1LLkVYQ0VQVElPTixZPUsuQ0FOTk9UX0ZJTkRfQUQsSj1LLk1JU1NJTkdfRE9DX09SX0FESUQsUT17YmlkV29uOmZ1bmN0aW9uKGUpe3ZhciBuPXMuSy5nZXRCaWRzUmVxdWVzdGVkKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYWRVbml0Q29kZX0pKX0pKS5yZWR1Y2UoaS5mbGF0dGVuKS5maWx0ZXIoaS51bmlxdWVzKTtpZigoMCxpLmNvbnRhaW5zKShuLGUpKXJldHVybiEwOygwLGkubG9nRXJyb3IpKCdUaGUgXCInK2UrJ1wiIHBsYWNlbWVudCBpcyBub3QgZGVmaW5lZC4nKX19O2Z1bmN0aW9uIFgoZSxuLHQpe2UuZGVmYXVsdFZpZXcmJmUuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50JiYoZS5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQud2lkdGg9bixlLmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudC5oZWlnaHQ9dCl9ZnVuY3Rpb24gJChlLG4pe3ZhciB0PVtdO3JldHVybigwLGkuaXNBcnJheSkoZSkmJihuP2UubGVuZ3RoPT09bjplLmxlbmd0aD4wKSYmKGUuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybigwLGkuaXNBcnJheU9mTnVtcykoZSwyKX0pKT90PWU6KDAsaS5pc0FycmF5T2ZOdW1zKShlLDIpJiZ0LnB1c2goZSkpLHR9ZnVuY3Rpb24gZWUoZSl7dmFyIG49KDAsaS5kZWVwQ2xvbmUpKGUpLHQ9bi5tZWRpYVR5cGVzLmJhbm5lcixyPSQodC5zaXplcyk7cmV0dXJuIHIubGVuZ3RoPjA/KHQuc2l6ZXM9cixuLnNpemVzPXIpOigoMCxpLmxvZ0Vycm9yKShcIkRldGVjdGVkIGEgbWVkaWFUeXBlcy5iYW5uZXIgb2JqZWN0IHdpdGhvdXQgYSBwcm9wZXIgc2l6ZXMgZmllbGQuICBQbGVhc2UgZW5zdXJlIHRoZSBzaXplcyBhcmUgbGlzdGVkIGxpa2U6IFtbMzAwLCAyNTBdLCAuLi5dLiAgUmVtb3ZpbmcgaW52YWxpZCBtZWRpYVR5cGVzLmJhbm5lciBvYmplY3QgZnJvbSByZXF1ZXN0LlwiKSxkZWxldGUgbi5tZWRpYVR5cGVzLmJhbm5lciksbn1mdW5jdGlvbiBuZShlKXt2YXIgbj0oMCxpLmRlZXBDbG9uZSkoZSksdD1uLm1lZGlhVHlwZXMudmlkZW87aWYodC5wbGF5ZXJTaXplKXt2YXIgcj1cIm51bWJlclwiPT10eXBlb2YgdC5wbGF5ZXJTaXplWzBdPzI6MSxvPSQodC5wbGF5ZXJTaXplLHIpO28ubGVuZ3RoPjA/KDI9PT1yJiYoMCxpLmxvZ0luZm8pKFwiVHJhbnNmb3JtaW5nIHZpZGVvLnBsYXllclNpemUgZnJvbSBbNjQwLDQ4MF0gdG8gW1s2NDAsNDgwXV0gc28gaXQncyBpbiB0aGUgcHJvcGVyIGZvcm1hdC5cIiksdC5wbGF5ZXJTaXplPW8sbi5zaXplcz1vKTooKDAsaS5sb2dFcnJvcikoXCJEZXRlY3RlZCBpbmNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBtZWRpYVR5cGVzLnZpZGVvLnBsYXllclNpemUuICBQbGVhc2Ugc3BlY2lmeSBvbmx5IG9uZSBzZXQgb2YgZGltZW5zaW9ucyBpbiBhIGZvcm1hdCBsaWtlOiBbWzY0MCwgNDgwXV0uIFJlbW92aW5nIGludmFsaWQgbWVkaWFUeXBlcy52aWRlby5wbGF5ZXJTaXplIHByb3BlcnR5IGZyb20gcmVxdWVzdC5cIiksZGVsZXRlIG4ubWVkaWFUeXBlcy52aWRlby5wbGF5ZXJTaXplKX1yZXR1cm4gbn1mdW5jdGlvbiB0ZShlKXt2YXIgbj0oMCxpLmRlZXBDbG9uZSkoZSksdD1uLm1lZGlhVHlwZXMubmF0aXZlO3JldHVybiB0LmltYWdlJiZ0LmltYWdlLnNpemVzJiYhQXJyYXkuaXNBcnJheSh0LmltYWdlLnNpemVzKSYmKCgwLGkubG9nRXJyb3IpKFwiUGxlYXNlIHVzZSBhbiBhcnJheSBvZiBzaXplcyBmb3IgbmF0aXZlLmltYWdlLnNpemVzIGZpZWxkLiAgUmVtb3ZpbmcgaW52YWxpZCBtZWRpYVR5cGVzLm5hdGl2ZS5pbWFnZS5zaXplcyBwcm9wZXJ0eSBmcm9tIHJlcXVlc3QuXCIpLGRlbGV0ZSBuLm1lZGlhVHlwZXMubmF0aXZlLmltYWdlLnNpemVzKSx0LmltYWdlJiZ0LmltYWdlLmFzcGVjdF9yYXRpb3MmJiFBcnJheS5pc0FycmF5KHQuaW1hZ2UuYXNwZWN0X3JhdGlvcykmJigoMCxpLmxvZ0Vycm9yKShcIlBsZWFzZSB1c2UgYW4gYXJyYXkgb2Ygc2l6ZXMgZm9yIG5hdGl2ZS5pbWFnZS5hc3BlY3RfcmF0aW9zIGZpZWxkLiAgUmVtb3ZpbmcgaW52YWxpZCBtZWRpYVR5cGVzLm5hdGl2ZS5pbWFnZS5hc3BlY3RfcmF0aW9zIHByb3BlcnR5IGZyb20gcmVxdWVzdC5cIiksZGVsZXRlIG4ubWVkaWFUeXBlcy5uYXRpdmUuaW1hZ2UuYXNwZWN0X3JhdGlvcyksdC5pY29uJiZ0Lmljb24uc2l6ZXMmJiFBcnJheS5pc0FycmF5KHQuaWNvbi5zaXplcykmJigoMCxpLmxvZ0Vycm9yKShcIlBsZWFzZSB1c2UgYW4gYXJyYXkgb2Ygc2l6ZXMgZm9yIG5hdGl2ZS5pY29uLnNpemVzIGZpZWxkLiAgUmVtb3ZpbmcgaW52YWxpZCBtZWRpYVR5cGVzLm5hdGl2ZS5pY29uLnNpemVzIHByb3BlcnR5IGZyb20gcmVxdWVzdC5cIiksZGVsZXRlIG4ubWVkaWFUeXBlcy5uYXRpdmUuaWNvbi5zaXplcyksbn1mdW5jdGlvbiByZShlLG4pe3ZhciB0PSgwLG8uWikoZSxcIm1lZGlhVHlwZXMuXCIuY29uY2F0KG4sXCIucG9zXCIpKTtpZighKDAsaS5pc051bWJlcikodCl8fGlzTmFOKHQpfHwhaXNGaW5pdGUodCkpe3ZhciByPVwiVmFsdWUgb2YgcHJvcGVydHkgJ3Bvcycgb24gYWQgdW5pdCBcIi5jb25jYXQoZS5jb2RlLFwiIHNob3VsZCBiZSBvZiB0eXBlOiBOdW1iZXJcIik7KDAsaS5sb2dXYXJuKShyKSx4LmVtaXQoUC5FVkVOVFMuQVVDVElPTl9ERUJVRyx7dHlwZTpcIldBUk5JTkdcIixhcmd1bWVudHM6cn0pLGRlbGV0ZSBlLm1lZGlhVHlwZXNbbl0ucG9zfXJldHVybiBlfWZ1bmN0aW9uIGllKGUpe3ZhciBuPWZ1bmN0aW9uKG4pe3JldHVyblwiYWRVbml0LmNvZGUgJ1wiLmNvbmNhdChlLmNvZGUsXCInIFwiKS5jb25jYXQobil9LHQ9ZS5tZWRpYVR5cGVzLHI9ZS5iaWRzO3JldHVybiBudWxsPT1yfHwoMCxpLmlzQXJyYXkpKHIpP251bGw9PXImJm51bGw9PWUub3J0YjJJbXA/KCgwLGkubG9nRXJyb3IpKG4oXCJoYXMgbm8gJ2FkVW5pdC5iaWRzJyBhbmQgbm8gJ2FkVW5pdC5vcnRiMkltcCcuIFJlbW92aW5nIGFkVW5pdCBmcm9tIGF1Y3Rpb25cIikpLG51bGwpOnQmJjAhPT1PYmplY3Qua2V5cyh0KS5sZW5ndGg/KG51bGw9PWUub3J0YjJJbXB8fG51bGwhPXImJjAhPT1yLmxlbmd0aHx8KGUuYmlkcz1be2JpZGRlcjpudWxsfV0sKDAsaS5sb2dNZXNzYWdlKShuKFwiZGVmaW5lcyAnYWRVbml0Lm9ydGIySW1wJyB3aXRoIG5vICdhZFVuaXQuYmlkcyc7IGl0IHdpbGwgYmUgc2VlbiBvbmx5IGJ5IFMyUyBhZGFwdGVyc1wiKSkpLGUpOigoMCxpLmxvZ0Vycm9yKShuKFwiZG9lcyBub3QgZGVmaW5lIGEgJ21lZGlhVHlwZXMnIG9iamVjdC4gIFRoaXMgaXMgYSByZXF1aXJlZCBmaWVsZCBmb3IgdGhlIGF1Y3Rpb24sIHNvIHRoaXMgYWRVbml0IGhhcyBiZWVuIHJlbW92ZWQuXCIpKSxudWxsKTooKDAsaS5sb2dFcnJvcikobihcImRlZmluZXMgJ2FkVW5pdC5iaWRzJyB0aGF0IGlzIG5vdCBhbiBhcnJheS4gUmVtb3ZpbmcgYWRVbml0IGZyb20gYXVjdGlvblwiKSksbnVsbCl9KDAsQy53dCkoKSxrLmJpZGRlclNldHRpbmdzPWsuYmlkZGVyU2V0dGluZ3N8fHt9LGsubGliTG9hZGVkPSEwLGsudmVyc2lvbj1cInY2LjE4LjBcIiwoMCxpLmxvZ0luZm8pKFwiUHJlYmlkLmpzIHY2LjE4LjAgbG9hZGVkXCIpLGsuaW5zdGFsbGVkTW9kdWxlcz1rLmluc3RhbGxlZE1vZHVsZXN8fFtdLGsuYWRVbml0cz1rLmFkVW5pdHN8fFtdLGsudHJpZ2dlclVzZXJTeW5jcz1xO3ZhciBvZT17dmFsaWRhdGVBZFVuaXQ6aWUsdmFsaWRhdGVCYW5uZXJNZWRpYVR5cGU6ZWUsdmFsaWRhdGVWaWRlb01lZGlhVHlwZTpuZSx2YWxpZGF0ZU5hdGl2ZU1lZGlhVHlwZTp0ZSx2YWxpZGF0ZVNpemVzOiR9LGFlPSgwLHcuejMpKFwic3luY1wiLChmdW5jdGlvbihlKXt2YXIgbj1bXTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihudWxsIT0oZT1pZShlKSkpe3ZhciB0LHIsaSxvPWUubWVkaWFUeXBlcztvLmJhbm5lciYmKHQ9ZWUoZSksby5iYW5uZXIuaGFzT3duUHJvcGVydHkoXCJwb3NcIikmJih0PXJlKHQsXCJiYW5uZXJcIikpKSxvLnZpZGVvJiYocj1uZSh0fHxlKSxvLnZpZGVvLmhhc093blByb3BlcnR5KFwicG9zXCIpJiYocj1yZShyLFwidmlkZW9cIikpKSxvLm5hdGl2ZSYmKGk9dGUocnx8dHx8ZSkpO3ZhciBhPV8oe30sdCxyLGkpO24ucHVzaChhKX19KSksbn0pLFwiY2hlY2tBZFVuaXRTZXR1cFwiKTtmdW5jdGlvbiB1ZShlKXt2YXIgbj1zLktbZV0oKS5maWx0ZXIoaS5iaW5kLmNhbGwoaS5hZFVuaXRzRmlsdGVyLHRoaXMscy5LLmdldEFkVW5pdENvZGVzKCkpKSx0PXMuSy5nZXRMYXN0QXVjdGlvbklkKCk7cmV0dXJuIG4ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZFVuaXRDb2RlfSkpLmZpbHRlcihpLnVuaXF1ZXMpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gbi5hdWN0aW9uSWQ9PT10JiZuLmFkVW5pdENvZGU9PT1lfSkpfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmVbMF0mJmVbMF0uYWRVbml0Q29kZX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuPXt9LHI9e2JpZHM6ZX0sKHQ9ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24oZSxuKXtpZihcIm9iamVjdFwiIT09aihlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHQ9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXQpe3ZhciByPXQuY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPT1qKHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT09aihuKT9uOlN0cmluZyhuKX0odD1lWzBdLmFkVW5pdENvZGUpKWluIG4/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5bdF09cixuO3ZhciBuLHQscn0pKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIF8oZSxuKX0pLHt9KX1mdW5jdGlvbiBjZShlLG4sdCl7dmFyIHI9bi5xdWVyeVNlbGVjdG9yKHQpO2UucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlPT09cnx8KDAsaS5pbnNlcnRFbGVtZW50KShlLG4sdCl9ay5nZXRBZHNlcnZlclRhcmdldGluZ0ZvckFkVW5pdENvZGVTdHI9ZnVuY3Rpb24oZSl7aWYoKDAsaS5sb2dJbmZvKShcIkludm9raW5nIG93cGJqcy5nZXRBZHNlcnZlclRhcmdldGluZ0ZvckFkVW5pdENvZGVTdHJcIixhcmd1bWVudHMpLGUpe3ZhciBuPWsuZ2V0QWRzZXJ2ZXJUYXJnZXRpbmdGb3JBZFVuaXRDb2RlKGUpO3JldHVybigwLGkudHJhbnNmb3JtQWRTZXJ2ZXJUYXJnZXRpbmdPYmopKG4pfSgwLGkubG9nTWVzc2FnZSkoXCJOZWVkIHRvIGNhbGwgZ2V0QWRzZXJ2ZXJUYXJnZXRpbmdGb3JBZFVuaXRDb2RlU3RyIHdpdGggYWR1bml0Q29kZVwiKX0say5nZXRIaWdoZXN0VW51c2VkQmlkUmVzcG9uc2VGb3JBZFVuaXRDb2RlPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPXMuSy5nZXRBbGxCaWRzRm9yQWRVbml0Q29kZShlKS5maWx0ZXIoSS51OC5pc1VudXNlZEJpZCkuZmlsdGVyKEkudTguaXNCaWROb3RFeHBpcmVkKTtyZXR1cm4gbi5sZW5ndGg/bi5yZWR1Y2UoaS5nZXRIaWdoZXN0Q3BtKTp7fX0oMCxpLmxvZ01lc3NhZ2UpKFwiTmVlZCB0byBjYWxsIGdldEhpZ2hlc3RVbnVzZWRCaWRSZXNwb25zZUZvckFkVW5pdENvZGUgd2l0aCBhZHVuaXRDb2RlXCIpfSxrLmdldEFkc2VydmVyVGFyZ2V0aW5nRm9yQWRVbml0Q29kZT1mdW5jdGlvbihlKXtyZXR1cm4gay5nZXRBZHNlcnZlclRhcmdldGluZyhlKVtlXX0say5nZXRBZHNlcnZlclRhcmdldGluZz1mdW5jdGlvbihlKXtyZXR1cm4oMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLmdldEFkc2VydmVyVGFyZ2V0aW5nXCIsYXJndW1lbnRzKSxJLnEwLmdldEFsbFRhcmdldGluZyhlKX0say5nZXRDb25zZW50TWV0YWRhdGE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLmdldENvbnNlbnRNZXRhZGF0YVwiKSx7Z2RwcjpSLnJwLmdldENvbnNlbnRNZXRhKCksdXNwOlIublguZ2V0Q29uc2VudE1ldGEoKSxjb3BwYTohIWwudmMuZ2V0Q29uZmlnKFwiY29wcGFcIil9fSxrLmdldE5vQmlkcz1mdW5jdGlvbigpe3JldHVybigwLGkubG9nSW5mbykoXCJJbnZva2luZyBvd3BianMuZ2V0Tm9CaWRzXCIsYXJndW1lbnRzKSx1ZShcImdldE5vQmlkc1wiKX0say5nZXROb0JpZHNGb3JBZFVuaXRDb2RlPWZ1bmN0aW9uKGUpe3JldHVybntiaWRzOnMuSy5nZXROb0JpZHMoKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiBuLmFkVW5pdENvZGU9PT1lfSkpfX0say5nZXRCaWRSZXNwb25zZXM9ZnVuY3Rpb24oKXtyZXR1cm4oMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLmdldEJpZFJlc3BvbnNlc1wiLGFyZ3VtZW50cyksdWUoXCJnZXRCaWRzUmVjZWl2ZWRcIil9LGsuZ2V0QmlkUmVzcG9uc2VzRm9yQWRVbml0Q29kZT1mdW5jdGlvbihlKXtyZXR1cm57YmlkczpzLksuZ2V0Qmlkc1JlY2VpdmVkKCkuZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gbi5hZFVuaXRDb2RlPT09ZX0pKX19LGsuc2V0VGFyZ2V0aW5nRm9yR1BUQXN5bmM9ZnVuY3Rpb24oZSxuKXtpZigoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLnNldFRhcmdldGluZ0ZvckdQVEFzeW5jXCIsYXJndW1lbnRzKSwoMCxpLmlzR3B0UHViYWRzRGVmaW5lZCkoKSl7dmFyIHQ9SS5xMC5nZXRBbGxUYXJnZXRpbmcoZSk7SS5xMC5yZXNldFByZXNldFRhcmdldGluZyhlLG4pLEkucTAuc2V0VGFyZ2V0aW5nRm9yR1BUKHQsbiksT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmtleXModFtlXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7XCJoYl9hZGlkXCI9PT1uJiZzLksuc2V0U3RhdHVzRm9yQmlkcyh0W2VdW25dLFAuQklEX1NUQVRVUy5CSURfVEFSR0VUSU5HX1NFVCl9KSl9KSkseC5lbWl0KHosdCl9ZWxzZSgwLGkubG9nRXJyb3IpKFwid2luZG93Lmdvb2dsZXRhZyBpcyBub3QgZGVmaW5lZCBvbiB0aGUgcGFnZVwiKX0say5zZXRUYXJnZXRpbmdGb3JBc3Q9ZnVuY3Rpb24oZSl7KDAsaS5sb2dJbmZvKShcIkludm9raW5nIG93cGJqcy5zZXRUYXJnZXRpbmdGb3JBblwiLGFyZ3VtZW50cyksSS5xMC5pc0FwbnRhZ0RlZmluZWQoKT8oSS5xMC5zZXRUYXJnZXRpbmdGb3JBc3QoZSkseC5lbWl0KHosSS5xMC5nZXRBbGxUYXJnZXRpbmcoKSkpOigwLGkubG9nRXJyb3IpKFwid2luZG93LmFwbnRhZyBpcyBub3QgZGVmaW5lZCBvbiB0aGUgcGFnZVwiKX0say5yZW5kZXJBZD0oMCx3LnozKShcImFzeW5jXCIsKGZ1bmN0aW9uKGUsbix0KXtpZigoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLnJlbmRlckFkXCIsYXJndW1lbnRzKSwoMCxpLmxvZ01lc3NhZ2UpKFwiQ2FsbGluZyByZW5kZXJBZCB3aXRoIGFkSWQgOlwiK24pLGUmJm4pdHJ5e3ZhciByPXMuSy5maW5kQmlkQnlBZElkKG4pO2lmKHIpe3ZhciBhPSEwO2lmKHImJnIuc3RhdHVzPT09UC5CSURfU1RBVFVTLlJFTkRFUkVEJiYoKDAsaS5sb2dXYXJuKShcIkFkIGlkIFwiLmNvbmNhdChyLmFkSWQsXCIgaGFzIGJlZW4gcmVuZGVyZWQgYmVmb3JlXCIpKSx4LmVtaXQoTCxyKSwoMCxvLlopKGwudmMuZ2V0Q29uZmlnKFwiYXVjdGlvbk9wdGlvbnNcIiksXCJzdXBwcmVzc1N0YWxlUmVuZGVyXCIpJiYoYT0hMSkpLGEpe2lmKHIuYWQ9KDAsaS5yZXBsYWNlQXVjdGlvblByaWNlKShyLmFkLHIub3JpZ2luYWxDcG18fHIuY3BtKSxyLmFkVXJsPSgwLGkucmVwbGFjZUF1Y3Rpb25QcmljZSkoci5hZFVybCxyLm9yaWdpbmFsQ3BtfHxyLmNwbSksdCYmdC5jbGlja1Rocm91Z2gpe3ZhciB1PXQuY2xpY2tUaHJvdWdoO3IuYWQ9KDAsaS5yZXBsYWNlQ2xpY2tUaHJvdWdoKShyLmFkLHUpLHIuYWRVcmw9KDAsaS5yZXBsYWNlQ2xpY2tUaHJvdWdoKShyLmFkVXJsLHUpfXMuSy5hZGRXaW5uaW5nQmlkKHIpLHguZW1pdChXLHIpO3ZhciBjPXIuaGVpZ2h0LGQ9ci53aWR0aCxnPXIuYWQscD1yLm1lZGlhVHlwZSx2PXIuYWRVcmwsbT1yLnJlbmRlcmVyLGg9ZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIkNyZWF0aXZlIFwiLmNvbmNhdChyLmNyZWF0aXZlSWQsXCIgc2VydmVkIGJ5IFwiKS5jb25jYXQoci5iaWRkZXIsXCIgUHJlYmlkLmpzIEhlYWRlciBCaWRkaW5nXCIpKTtpZigoMCxpLmluc2VydEVsZW1lbnQpKGgsZSxcImh0bWxcIiksKDAsZi5QZCkobSkpKDAsZi5fVSkobSxyKSxjZShoLGUsXCJodG1sXCIpLGIoe2RvYzplLGJpZDpyLGlkOm59KTtlbHNlIGlmKGU9PT1kb2N1bWVudCYmISgwLGkuaW5JZnJhbWUpKCl8fFwidmlkZW9cIj09PXApe3ZhciBFPVwiRXJyb3IgdHJ5aW5nIHRvIHdyaXRlIGFkLiBBZCByZW5kZXIgY2FsbCBhZCBpZCBcIi5jb25jYXQobixcIiB3YXMgcHJldmVudGVkIGZyb20gd3JpdGluZyB0byB0aGUgbWFpbiBkb2N1bWVudC5cIik7eSh7cmVhc29uOlYsbWVzc2FnZTpFLGJpZDpyLGlkOm59KX1lbHNlIGlmKGcpZS53cml0ZShnKSxlLmNsb3NlKCksWChlLGQsYyksY2UoaCxlLFwiaHRtbFwiKSwoMCxpLmNhbGxCdXJsKShyKSxiKHtkb2M6ZSxiaWQ6cixpZDpufSk7ZWxzZSBpZih2KXt2YXIgUz0oMCxpLmNyZWF0ZUludmlzaWJsZUlmcmFtZSkoKTtTLmhlaWdodD1jLFMud2lkdGg9ZCxTLnN0eWxlLmRpc3BsYXk9XCJpbmxpbmVcIixTLnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCIsUy5zcmM9diwoMCxpLmluc2VydEVsZW1lbnQpKFMsZSxcImJvZHlcIiksWChlLGQsYyksY2UoaCxlLFwiaHRtbFwiKSwoMCxpLmNhbGxCdXJsKShyKSxiKHtkb2M6ZSxiaWQ6cixpZDpufSl9ZWxzZXt2YXIgVD1cIkVycm9yIHRyeWluZyB0byB3cml0ZSBhZC4gTm8gYWQgZm9yIGJpZCByZXNwb25zZSBpZDogXCIuY29uY2F0KG4pO3koe3JlYXNvbjpILG1lc3NhZ2U6VCxiaWQ6cixpZDpufSl9fX1lbHNle3ZhciBBPVwiRXJyb3IgdHJ5aW5nIHRvIHdyaXRlIGFkLiBDYW5ub3QgZmluZCBhZCBieSBnaXZlbiBpZCA6IFwiLmNvbmNhdChuKTt5KHtyZWFzb246WSxtZXNzYWdlOkEsaWQ6bn0pfX1jYXRjaChlKXt2YXIgST1cIkVycm9yIHRyeWluZyB0byB3cml0ZSBhZCBJZCA6XCIuY29uY2F0KG4sXCIgdG8gdGhlIHBhZ2U6XCIpLmNvbmNhdChlLm1lc3NhZ2UpO3koe3JlYXNvbjpaLG1lc3NhZ2U6SSxpZDpufSl9ZWxzZXt2YXIgdz1cIkVycm9yIHRyeWluZyB0byB3cml0ZSBhZCBJZCA6XCIuY29uY2F0KG4sXCIgdG8gdGhlIHBhZ2UuIE1pc3NpbmcgZG9jdW1lbnQgb3IgYWRJZFwiKTt5KHtyZWFzb246SixtZXNzYWdlOncsaWQ6bn0pfX0pKSxrLnJlbW92ZUFkVW5pdD1mdW5jdGlvbihlKXsoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLnJlbW92ZUFkVW5pdFwiLGFyZ3VtZW50cyksZT8oKDAsaS5pc0FycmF5KShlKT9lOltlXSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWsuYWRVbml0cy5sZW5ndGgtMTtuPj0wO24tLSlrLmFkVW5pdHNbbl0uY29kZT09PWUmJmsuYWRVbml0cy5zcGxpY2UobiwxKX0pKTprLmFkVW5pdHM9W119LGsucmVxdWVzdEJpZHM9KDAsdy56MykoXCJhc3luY1wiLChmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWUuYmlkc0JhY2tIYW5kbGVyLHQ9ZS50aW1lb3V0LHI9ZS5hZFVuaXRzLG89ZS5hZFVuaXRDb2RlcyxhPWUubGFiZWxzLHU9ZS5hdWN0aW9uSWQ7eC5lbWl0KEYpO3ZhciBjPXR8fGwudmMuZ2V0Q29uZmlnKFwiYmlkZGVyVGltZW91dFwiKTtyPXImJmwudmMuY29udmVydEFkVW5pdEZwZCgoMCxpLmlzQXJyYXkpKHIpP3I6W3JdKXx8ay5hZFVuaXRzLCgwLGkubG9nSW5mbykoXCJJbnZva2luZyBvd3BianMucmVxdWVzdEJpZHNcIixhcmd1bWVudHMpO3ZhciBmPVtdLGc9W107aWYobC52Yy5nZXRDb25maWcoXCJzMnNDb25maWdcIiwoZnVuY3Rpb24oZSl7ZSYmZS5zMnNDb25maWcmJihmPUFycmF5LmlzQXJyYXkoZS5zMnNDb25maWcpP2UuczJzQ29uZmlnOltlLnMyc0NvbmZpZ10pfSkpLGYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG47Zy5wdXNoLmFwcGx5KGcsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gRChlKX0obj1lLmJpZGRlcnMpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShuKXx8ZnVuY3Rpb24oZSxuKXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gRChlLG4pO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09dCYmZS5jb25zdHJ1Y3RvciYmKHQ9ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09dHx8XCJTZXRcIj09PXQ/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09dHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCk/RChlLG4pOnZvaWQgMH19KG4pfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKX0pKSxyPWFlKHIpLG8mJm8ubGVuZ3RoP3I9ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybigwLGQucTkpKG8sZS5jb2RlKX0pKTpvPXImJnIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb2RlfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49T2JqZWN0LmtleXMoZS5tZWRpYVR5cGVzfHx7YmFubmVyOlwiYmFubmVyXCJ9KSx0PWUuYmlkcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZGRlcn0pKSxyPU4uYmlkZGVyUmVnaXN0cnksbz1nP3QuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hKDAsZC5xOSkoZyxlKX0pKTp0O2UudHJhbnNhY3Rpb25JZD0oMCxpLmdlbmVyYXRlVVVJRCkoKSxvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBvPXJbdF0sYT1vJiZvLmdldFNwZWMmJm8uZ2V0U3BlYygpLHU9YSYmYS5zdXBwb3J0ZWRNZWRpYVR5cGVzfHxbXCJiYW5uZXJcIl07bi5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4oMCxkLnE5KSh1LGUpfSkpP08uZi5pbmNyZW1lbnRCaWRkZXJSZXF1ZXN0c0NvdW50ZXIoZS5jb2RlLHQpOigoMCxpLmxvZ1dhcm4pKCgwLGkudW5zdXBwb3J0ZWRCaWRkZXJNZXNzYWdlKShlLHQpKSxlLmJpZHM9ZS5iaWRzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYmlkZGVyIT09dH0pKSl9KSksTy5mLmluY3JlbWVudFJlcXVlc3RzQ291bnRlcihlLmNvZGUpfSkpLHImJjAhPT1yLmxlbmd0aCl7dmFyIHA9cy5LLmNyZWF0ZUF1Y3Rpb24oe2FkVW5pdHM6cixhZFVuaXRDb2RlczpvLGNhbGxiYWNrOm4sY2JUaW1lb3V0OmMsbGFiZWxzOmEsYXVjdGlvbklkOnV9KSx2PXIubGVuZ3RoO3Y+MTUmJigwLGkubG9nSW5mbykoXCJDdXJyZW50IGF1Y3Rpb24gXCIuY29uY2F0KHAuZ2V0QXVjdGlvbklkKCksXCIgY29udGFpbnMgXCIpLmNvbmNhdCh2LFwiIGFkVW5pdHMuXCIpLHIpLG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIEkucTAuc2V0TGF0ZXN0QXVjdGlvbkZvckFkVW5pdChlLHAuZ2V0QXVjdGlvbklkKCkpfSkpLHAuY2FsbEJpZHMoKX1lbHNlIGlmKCgwLGkubG9nTWVzc2FnZSkoXCJObyBhZFVuaXRzIGNvbmZpZ3VyZWQuIE5vIGJpZHMgcmVxdWVzdGVkLlwiKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXRyeXtuKCl9Y2F0Y2goZSl7KDAsaS5sb2dFcnJvcikoXCJFcnJvciBleGVjdXRpbmcgYmlkc0JhY2tIYW5kbGVyXCIsbnVsbCxlKX19KSksay5yZXF1ZXN0Qmlkcy5iZWZvcmUoKGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gdChlKXtmb3IodmFyIG47bj1lLnNoaWZ0KCk7KW4oKX10KFUuTGQpLHQoc2UpLGUuY2FsbCh0aGlzLG4pfSksNDkpLGsuYWRkQWRVbml0cz1mdW5jdGlvbihlKXsoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLmFkZEFkVW5pdHNcIixhcmd1bWVudHMpLGsuYWRVbml0cy5wdXNoLmFwcGx5KGsuYWRVbml0cyxsLnZjLmNvbnZlcnRBZFVuaXRGcGQoKDAsaS5pc0FycmF5KShlKT9lOltlXSkpLHguZW1pdChHKX0say5vbkV2ZW50PWZ1bmN0aW9uKGUsbix0KXsoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLm9uRXZlbnRcIixhcmd1bWVudHMpLCgwLGkuaXNGbikobik/IXR8fFFbZV0uY2FsbChudWxsLHQpP3gub24oZSxuLHQpOigwLGkubG9nRXJyb3IpKCdUaGUgaWQgcHJvdmlkZWQgaXMgbm90IHZhbGlkIGZvciBldmVudCBcIicrZSsnXCIgYW5kIG5vIGhhbmRsZXIgd2FzIHNldC4nKTooMCxpLmxvZ0Vycm9yKSgnVGhlIGV2ZW50IGhhbmRsZXIgcHJvdmlkZWQgaXMgbm90IGEgZnVuY3Rpb24gYW5kIHdhcyBub3Qgc2V0IG9uIGV2ZW50IFwiJytlKydcIi4nKX0say5vZmZFdmVudD1mdW5jdGlvbihlLG4sdCl7KDAsaS5sb2dJbmZvKShcIkludm9raW5nIG93cGJqcy5vZmZFdmVudFwiLGFyZ3VtZW50cyksdCYmIVFbZV0uY2FsbChudWxsLHQpfHx4Lm9mZihlLG4sdCl9LGsuZ2V0RXZlbnRzPWZ1bmN0aW9uKCl7cmV0dXJuKDAsaS5sb2dJbmZvKShcIkludm9raW5nIG93cGJqcy5nZXRFdmVudHNcIikseC5nZXRFdmVudHMoKX0say5yZWdpc3RlckJpZEFkYXB0ZXI9ZnVuY3Rpb24oZSxuKXsoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLnJlZ2lzdGVyQmlkQWRhcHRlclwiLGFyZ3VtZW50cyk7dHJ5e04ucmVnaXN0ZXJCaWRBZGFwdGVyKGUoKSxuKX1jYXRjaChlKXsoMCxpLmxvZ0Vycm9yKShcIkVycm9yIHJlZ2lzdGVyaW5nIGJpZGRlciBhZGFwdGVyIDogXCIrZS5tZXNzYWdlKX19LGsucmVnaXN0ZXJBbmFseXRpY3NBZGFwdGVyPWZ1bmN0aW9uKGUpeygwLGkubG9nSW5mbykoXCJJbnZva2luZyBvd3BianMucmVnaXN0ZXJBbmFseXRpY3NBZGFwdGVyXCIsYXJndW1lbnRzKTt0cnl7Ti5yZWdpc3RlckFuYWx5dGljc0FkYXB0ZXIoZSl9Y2F0Y2goZSl7KDAsaS5sb2dFcnJvcikoXCJFcnJvciByZWdpc3RlcmluZyBhbmFseXRpY3MgYWRhcHRlciA6IFwiK2UubWVzc2FnZSl9fSxrLmNyZWF0ZUJpZD1mdW5jdGlvbihlKXtyZXR1cm4oMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLmNyZWF0ZUJpZFwiLGFyZ3VtZW50cyksKDAsQi5tKShlKX07dmFyIHNlPVtdLGRlPSgwLHcuejMpKFwiYXN5bmNcIiwoZnVuY3Rpb24oZSl7ZSYmISgwLGkuaXNFbXB0eSkoZSk/KCgwLGkubG9nSW5mbykoXCJJbnZva2luZyBvd3BianMuZW5hYmxlQW5hbHl0aWNzIGZvcjogXCIsZSksTi5lbmFibGVBbmFseXRpY3MoZSkpOigwLGkubG9nRXJyb3IpKFwib3dwYmpzLmVuYWJsZUFuYWx5dGljcyBzaG91bGQgYmUgY2FsbGVkIHdpdGggb3B0aW9uIHt9XCIpfSksXCJlbmFibGVBbmFseXRpY3NDYlwiKTtmdW5jdGlvbiBmZShlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUuY2FsbGVkKXRyeXtlLmNhbGwoKSxlLmNhbGxlZD0hMH1jYXRjaChlKXsoMCxpLmxvZ0Vycm9yKShcIkVycm9yIHByb2Nlc3NpbmcgY29tbWFuZCA6XCIsXCJwcmViaWQuanNcIixlKX19KSl9ay5lbmFibGVBbmFseXRpY3M9ZnVuY3Rpb24oZSl7c2UucHVzaChkZS5iaW5kKHRoaXMsZSkpfSxrLmFsaWFzQmlkZGVyPWZ1bmN0aW9uKGUsbix0KXsoMCxpLmxvZ0luZm8pKFwiSW52b2tpbmcgb3dwYmpzLmFsaWFzQmlkZGVyXCIsYXJndW1lbnRzKSxlJiZuP04uYWxpYXNCaWRBZGFwdGVyKGUsbix0KTooMCxpLmxvZ0Vycm9yKShcImJpZGRlckNvZGUgYW5kIGFsaWFzIG11c3QgYmUgcGFzc2VkIGFzIGFyZ3VtZW50c1wiLFwib3dwYmpzLmFsaWFzQmlkZGVyXCIpfSxrLmdldEFsbFdpbm5pbmdCaWRzPWZ1bmN0aW9uKCl7cmV0dXJuIHMuSy5nZXRBbGxXaW5uaW5nQmlkcygpfSxrLmdldEFsbFByZWJpZFdpbm5pbmdCaWRzPWZ1bmN0aW9uKCl7cmV0dXJuIHMuSy5nZXRCaWRzUmVjZWl2ZWQoKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXR1cz09PVAuQklEX1NUQVRVUy5CSURfVEFSR0VUSU5HX1NFVH0pKX0say5nZXRIaWdoZXN0Q3BtQmlkcz1mdW5jdGlvbihlKXtyZXR1cm4gSS5xMC5nZXRXaW5uaW5nQmlkcyhlKX0say5tYXJrV2lubmluZ0JpZEFzVXNlZD1mdW5jdGlvbihlKXt2YXIgbj1bXTtlLmFkVW5pdENvZGUmJmUuYWRJZD9uPXMuSy5nZXRCaWRzUmVjZWl2ZWQoKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiBuLmFkSWQ9PT1lLmFkSWQmJm4uYWRVbml0Q29kZT09PWUuYWRVbml0Q29kZX0pKTplLmFkVW5pdENvZGU/bj1JLnEwLmdldFdpbm5pbmdCaWRzKGUuYWRVbml0Q29kZSk6ZS5hZElkP249cy5LLmdldEJpZHNSZWNlaXZlZCgpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIG4uYWRJZD09PWUuYWRJZH0pKTooMCxpLmxvZ1dhcm4pKFwiSW1wcm9wZXIgdXNlIG9mIG1hcmtXaW5uaW5nQmlkQXNVc2VkLiBJdCBuZWVkcyBhbiBhZFVuaXRDb2RlIG9yIGFuIGFkSWQgdG8gZnVuY3Rpb24uXCIpLG4ubGVuZ3RoPjAmJihuWzBdLnN0YXR1cz1QLkJJRF9TVEFUVVMuUkVOREVSRUQpfSxrLmdldENvbmZpZz1sLnZjLmdldENvbmZpZyxrLnJlYWRDb25maWc9bC52Yy5yZWFkQ29uZmlnLGsubWVyZ2VDb25maWc9bC52Yy5tZXJnZUNvbmZpZyxrLm1lcmdlQmlkZGVyQ29uZmlnPWwudmMubWVyZ2VCaWRkZXJDb25maWcsay5zZXRDb25maWc9bC52Yy5zZXRDb25maWcsay5zZXRCaWRkZXJDb25maWc9bC52Yy5zZXRCaWRkZXJDb25maWcsay5xdWUucHVzaCgoZnVuY3Rpb24oKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixTLCExKX0pKSxrLmNtZC5wdXNoPWZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpdHJ5e2UuY2FsbCgpfWNhdGNoKGUpeygwLGkubG9nRXJyb3IpKFwiRXJyb3IgcHJvY2Vzc2luZyBjb21tYW5kIDpcIixlLm1lc3NhZ2UsZS5zdGFjayl9ZWxzZSgwLGkubG9nRXJyb3IpKFwiQ29tbWFuZHMgd3JpdHRlbiBpbnRvIG93cGJqcy5jbWQucHVzaCBtdXN0IGJlIHdyYXBwZWQgaW4gYSBmdW5jdGlvblwiKX0say5xdWUucHVzaD1rLmNtZC5wdXNoLGsucHJvY2Vzc1F1ZXVlPWZ1bmN0aW9uKCl7dy56My5yZWFkeSgpLGZlKGsucXVlKSxmZShrLmNtZCl9fSwyNTI4OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKCl7cmV0dXJuIHdpbmRvdy5vd3BianN9dC5kKG4se1I6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KSx3aW5kb3cub3dwYmpzPXdpbmRvdy5vd3BianN8fHt9LHdpbmRvdy5vd3BianMuY21kPXdpbmRvdy5vd3BianMuY21kfHxbXSx3aW5kb3cub3dwYmpzLnF1ZT13aW5kb3cub3dwYmpzLnF1ZXx8W10sd2luZG93Ll9wYmpzR2xvYmFscz13aW5kb3cuX3BianNHbG9iYWxzfHxbXSx3aW5kb3cuX3BianNHbG9iYWxzLnB1c2goXCJvd3BianNcIil9LDI2NjE6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHtuOmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7dmFyIHI9dCg4OTYyKSxpPXQoOTg1Myksbz1mdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3ZhciBuPXIudmMuZ2V0Q29uZmlnKFwicGFnZVVybFwiKTtpZihuKXJldHVybiBuO3RyeXt2YXIgdD1lLnF1ZXJ5U2VsZWN0b3IoXCJsaW5rW3JlbD0nY2Fub25pY2FsJ11cIik7aWYobnVsbCE9PXQpcmV0dXJuIHQuaHJlZn1jYXRjaChlKXt9cmV0dXJuIG51bGx9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsbyxhLHU9W10sYz1mdW5jdGlvbihlKXt0cnl7aWYoIWUubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zKXJldHVybjtyZXR1cm4gZS5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnN9Y2F0Y2goZSl7fX0oZSkscz1yLnZjLmdldENvbmZpZyhcIm1heE5lc3RlZElmcmFtZXNcIiksZD0hMSxmPTAsbD0hMSxnPSExO2Rve3ZhciBwPXQsdj1nLHk9dm9pZCAwLGI9ITEsbT1udWxsO2c9ITEsdD10P3QucGFyZW50OmU7dHJ5e3k9dC5sb2NhdGlvbi5ocmVmfHxudWxsfWNhdGNoKGUpe2I9ITB9aWYoYilpZih2KXt2YXIgaD1wLmNvbnRleHQ7dHJ5e289bT1oLnNvdXJjZVVybCxsPSEwLHQ9PT1lLnRvcCYmKGQ9ITApLGguY2Fub25pY2FsVXJsJiYoYT1oLmNhbm9uaWNhbFVybCl9Y2F0Y2goZSl7fX1lbHNleygwLGkubG9nV2FybikoXCJUcnlpbmcgdG8gYWNjZXNzIGNyb3NzIGRvbWFpbiBpZnJhbWUuIENvbnRpbnVpbmcgd2l0aG91dCByZWZlcnJlciBhbmQgbG9jYXRpb25cIik7dHJ5e3ZhciBFPXAuZG9jdW1lbnQucmVmZXJyZXI7RSYmKG09RSx0PT09ZS50b3AmJihkPSEwKSl9Y2F0Y2goZSl7fSFtJiZjJiZjW2YtMV0mJihtPWNbZi0xXSksbSYmIWwmJihvPW0pfWVsc2V7aWYoeSYmKG89bT15LGw9ITEsdD09PWUudG9wKSl7ZD0hMDt2YXIgUz1uKHQuZG9jdW1lbnQpO1MmJihhPVMpfXQuY29udGV4dCYmdC5jb250ZXh0LnNvdXJjZVVybCYmKGc9ITApfXUucHVzaChtKSxmKyt9d2hpbGUodCE9PWUudG9wJiZmPHMpO3JldHVybiB1LnJldmVyc2UoKSx7cmVmZXJlcjpvfHxudWxsLHJlYWNoZWRUb3A6ZCxpc0FtcDpsLG51bUlmcmFtZXM6Zi0xLHN0YWNrOnUsY2Fub25pY2FsVXJsOmF8fG51bGx9fX0od2luZG93KX0sMTI2OTpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se1VCOmZ1bmN0aW9uKCl7cmV0dXJuIGd9LGxPOmZ1bmN0aW9uKCl7cmV0dXJuIGR9fSk7dmFyIHI9dCg4OTYyKSxpPXQoOTg1Myksbz10KDI2NSksYT10KDE4NzkpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sdShlKX12YXIgYz1bXTtmdW5jdGlvbiBzKGUsbil7cmV0dXJuIGUubGFiZWxBbGw/e2xhYmVsQWxsOiEwLGxhYmVsczplLmxhYmVsQWxsLGFjdGl2ZUxhYmVsczpufTp7bGFiZWxBbGw6ITEsbGFiZWxzOmUubGFiZWxBbnksYWN0aXZlTGFiZWxzOm59fWZ1bmN0aW9uIGQoZSl7dmFyIG49bChhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06Yyk7cmV0dXJuIW4uc2hvdWxkRmlsdGVyfHwhIW4uc2l6ZXNTdXBwb3J0ZWRbZV19ZnVuY3Rpb24gZigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWUubGFiZWxzLHQ9dm9pZCAwPT09bj9bXTpuLHI9ZS5sYWJlbEFsbCx1PXZvaWQgMCE9PXImJnIscz1lLmFjdGl2ZUxhYmVscyxkPXZvaWQgMD09PXM/W106cyxmPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGc9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAscD1sKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpjKTtmPSgwLGkuaXNQbGFpbk9iamVjdCkoZik/KDAsaS5kZWVwQ2xvbmUpKGYpOmc/e2Jhbm5lcjp7c2l6ZXM6Z319Ont9O3ZhciB2PSgwLG8uWikoZixcImJhbm5lci5zaXplc1wiKTtwLnNob3VsZEZpbHRlciYmdiYmKGYuYmFubmVyLnNpemVzPXYuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gcC5zaXplc1N1cHBvcnRlZFtlXX0pKSk7dmFyIHk9T2JqZWN0LmtleXMoZiksYj17YWN0aXZlOnkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVyblwiYmFubmVyXCIhPT1lfSkpfHx5LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwiYmFubmVyXCI9PT1lfSkpJiYoMCxvLlopKGYsXCJiYW5uZXIuc2l6ZXMubGVuZ3RoXCIpPjAmJigwPT09dC5sZW5ndGh8fCF1JiYodC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gcC5sYWJlbHNbZV19KSl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsYS5xOSkoZCxlKX0pKSl8fHUmJnQucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlP3AubGFiZWxzW25dfHwoMCxhLnE5KShkLG4pOmV9KSwhMCkpLG1lZGlhVHlwZXM6Zn07cmV0dXJuIHYmJnYubGVuZ3RoIT09Zi5iYW5uZXIuc2l6ZXMubGVuZ3RoJiYoYi5maWx0ZXJSZXN1bHRzPXtiZWZvcmU6dixhZnRlcjpmLmJhbm5lci5zaXplc30pLGJ9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7aWYoXCJvYmplY3RcIj09PXUobikmJlwic3RyaW5nXCI9PXR5cGVvZiBuLm1lZGlhUXVlcnkmJm4ubWVkaWFRdWVyeS5sZW5ndGg+MCl7dmFyIHQ9ITE7dHJ5e3Q9KDAsaS5nZXRXaW5kb3dUb3ApKCkubWF0Y2hNZWRpYShuLm1lZGlhUXVlcnkpLm1hdGNoZXN9Y2F0Y2goZSl7KDAsaS5sb2dXYXJuKShcIlVuZnJpZW5kbHkgaUZyYW1lIGJsb2NrcyBzaXplQ29uZmlnIGZyb20gYmVpbmcgY29ycmVjdGx5IGV2YWx1YXRlZFwiKSx0PW1hdGNoTWVkaWEobi5tZWRpYVF1ZXJ5KS5tYXRjaGVzfXQmJihBcnJheS5pc0FycmF5KG4uc2l6ZXNTdXBwb3J0ZWQpJiYoZS5zaG91bGRGaWx0ZXI9ITApLFtcImxhYmVsc1wiLFwic2l6ZXNTdXBwb3J0ZWRcIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuKG5bdF18fFtdKS5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZVt0XVtuXT0hMH0pKX0pKSl9ZWxzZSgwLGkubG9nV2FybikoJ3NpemVDb25maWcgcnVsZSBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnR5IFwibWVkaWFRdWVyeVwiJyk7cmV0dXJuIGV9KSx7bGFiZWxzOnt9LHNpemVzU3VwcG9ydGVkOnt9LHNob3VsZEZpbHRlcjohMX0pfWZ1bmN0aW9uIGcoZSxuKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZihzKHQsbiksdC5tZWRpYVR5cGVzLHQuc2l6ZXMpLG89ci5hY3RpdmUsYT1yLm1lZGlhVHlwZXMsdT1yLmZpbHRlclJlc3VsdHM7cmV0dXJuIG8/KHUmJigwLGkubG9nSW5mbykoJ1NpemUgbWFwcGluZyBmaWx0ZXJlZCBhZFVuaXQgXCInLmNvbmNhdCh0LmNvZGUsJ1wiIGJhbm5lciBzaXplcyBmcm9tICcpLHUuYmVmb3JlLFwidG8gXCIsdS5hZnRlciksdC5tZWRpYVR5cGVzPWEsdC5iaWRzPXQuYmlkcy5yZWR1Y2UoKGZ1bmN0aW9uKGUscil7dmFyIG89ZihzKHIsbiksdC5tZWRpYVR5cGVzKSxhPW8uYWN0aXZlLHU9by5tZWRpYVR5cGVzLGM9by5maWx0ZXJSZXN1bHRzO3JldHVybiBhPyhjJiYoKDAsaS5sb2dJbmZvKSgnU2l6ZSBtYXBwaW5nIGZpbHRlcmVkIGFkVW5pdCBcIicuY29uY2F0KHQuY29kZSwnXCIgYmlkZGVyIFwiJykuY29uY2F0KHIuYmlkZGVyLCdcIiBiYW5uZXIgc2l6ZXMgZnJvbSAnKSxjLmJlZm9yZSxcInRvIFwiLGMuYWZ0ZXIpLHIubWVkaWFUeXBlcz11KSxlLnB1c2gocikpOigwLGkubG9nSW5mbykoJ1NpemUgbWFwcGluZyBkZWFjdGl2YXRlZCBhZFVuaXQgXCInLmNvbmNhdCh0LmNvZGUsJ1wiIGJpZGRlciBcIicpLmNvbmNhdChyLmJpZGRlciwnXCInKSksZX0pLFtdKSxlLnB1c2godCkpOigwLGkubG9nSW5mbykoJ1NpemUgbWFwcGluZyBkaXNhYmxlZCBhZFVuaXQgXCInLmNvbmNhdCh0LmNvZGUsJ1wiJykpLGV9KSxbXSl9ci52Yy5nZXRDb25maWcoXCJzaXplQ29uZmlnXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlKXtjPWV9KGUuc2l6ZUNvbmZpZyl9KSl9LDU4NDk6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QuZChuLHtMZDpmdW5jdGlvbigpe3JldHVybiBjfSxTNjpmdW5jdGlvbigpe3JldHVybiBkfSxkZjpmdW5jdGlvbigpe3JldHVybiBsfSxlQTpmdW5jdGlvbigpe3JldHVybiBmfX0pO3ZhciByPXQoMzQ5NCksaT10KDk4NTMpLG89dCgxODc5KSxhPXQoOTYyNCksdT1bXCJjb3JlXCIsXCJwcmViaWQtbW9kdWxlXCJdLGM9W107ZnVuY3Rpb24gcygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWUuZ3ZsaWQsdD1lLm1vZHVsZU5hbWUscj1lLmJpZGRlckNvZGUscz1lLm1vZHVsZVR5cGUsZj0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5iaWRkZXJTZXR0aW5ncyxsPXZvaWQgMD09PWY/YS5TOmY7ZnVuY3Rpb24gZyhlKXtyZXR1cm4oMCxvLnE5KSh1LHMpP2Uoe3ZhbGlkOiEwfSk6ZnVuY3Rpb24oKXtpZihudWxsPT1yKXJldHVybiExO3ZhciBlPWwuZ2V0KHIsXCJzdG9yYWdlQWxsb3dlZFwiKTtyZXR1cm4gbnVsbCE9ZSYmIWV9KCk/KCgwLGkubG9nSW5mbykoXCJiaWRkZXJTZXR0aW5ncyBkZW5pZWQgYWNjZXNzIHRvIGRldmljZSBzdG9yYWdlIGZvciBiaWRkZXIgJ1wiLmNvbmNhdChyLFwiJ1wiKSksZSh7dmFsaWQ6ITF9KSk6KGQobixyfHx0LHtoYXNFbmZvcmNlbWVudEhvb2s6ITF9LChmdW5jdGlvbihuKXtpZihuJiZuLmhhc0VuZm9yY2VtZW50SG9vaylhPWUobik7ZWxzZXt2YXIgdD17aGFzRW5mb3JjZW1lbnRIb29rOiExLHZhbGlkOigwLGkuaGFzRGV2aWNlQWNjZXNzKSgpfTthPWUodCl9fSkpLGEpO3ZhciBhfXZhciBwPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKGUpe2lmKGUmJmUudmFsaWQpdHJ5e3JldHVybiEhd2luZG93LmxvY2FsU3RvcmFnZX1jYXRjaChlKXsoMCxpLmxvZ0Vycm9yKShcIkxvY2FsIHN0b3JhZ2UgYXBpIGRpc2FibGVkXCIpfXJldHVybiExfTtpZighZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZSlyZXR1cm4gZyhuKTtjLnB1c2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZyhuKTtlKHQpfSkpfTtyZXR1cm57c2V0Q29va2llOmZ1bmN0aW9uKGUsbix0LHIsaSxvKXt2YXIgYT1mdW5jdGlvbihvKXtpZihvJiZvLnZhbGlkKXt2YXIgYT1pJiZcIlwiIT09aT9cIiA7ZG9tYWluPVwiLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoaSkpOlwiXCIsdT10JiZcIlwiIT09dD9cIiA7ZXhwaXJlcz1cIi5jb25jYXQodCk6XCJcIixjPW51bGwhPXImJlwibm9uZVwiPT1yLnRvTG93ZXJDYXNlKCk/XCI7IFNlY3VyZVwiOlwiXCI7ZG9jdW1lbnQuY29va2llPVwiXCIuY29uY2F0KGUsXCI9XCIpLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQobikpLmNvbmNhdCh1LFwiOyBwYXRoPS9cIikuY29uY2F0KGEpLmNvbmNhdChyP1wiOyBTYW1lU2l0ZT1cIi5jb25jYXQocik6XCJcIikuY29uY2F0KGMpfX07aWYoIW98fFwiZnVuY3Rpb25cIiE9dHlwZW9mIG8pcmV0dXJuIGcoYSk7Yy5wdXNoKChmdW5jdGlvbigpe3ZhciBlPWcoYSk7byhlKX0pKX0sZ2V0Q29va2llOmZ1bmN0aW9uKGUsbil7dmFyIHQ9ZnVuY3Rpb24obil7aWYobiYmbi52YWxpZCl7dmFyIHQ9d2luZG93LmRvY3VtZW50LmNvb2tpZS5tYXRjaChcIihefDspXFxcXHMqXCIrZStcIlxcXFxzKj1cXFxccyooW147XSopXFxcXHMqKDt8JClcIik7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbMl0pOm51bGx9cmV0dXJuIG51bGx9O2lmKCFufHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXJldHVybiBnKHQpO2MucHVzaCgoZnVuY3Rpb24oKXt2YXIgZT1nKHQpO24oZSl9KSl9LGxvY2FsU3RvcmFnZUlzRW5hYmxlZDpmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbihlKXtpZihlJiZlLnZhbGlkKXRyeXtyZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwcmViaWQuY29va2llVGVzdFwiLFwiMVwiKSxcIjFcIj09PWxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicHJlYmlkLmNvb2tpZVRlc3RcIil9Y2F0Y2goZSl7fWZpbmFsbHl7dHJ5e2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwicHJlYmlkLmNvb2tpZVRlc3RcIil9Y2F0Y2goZSl7fX1yZXR1cm4hMX07aWYoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpcmV0dXJuIGcobik7Yy5wdXNoKChmdW5jdGlvbigpe3ZhciB0PWcobik7ZSh0KX0pKX0sY29va2llc0FyZUVuYWJsZWQ6ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUudmFsaWR8fCEoMCxpLmNoZWNrQ29va2llU3VwcG9ydCkoKSYmKHdpbmRvdy5kb2N1bWVudC5jb29raWU9XCJwcmViaWQuY29va2llVGVzdFwiLC0xPT09d2luZG93LmRvY3VtZW50LmNvb2tpZS5pbmRleE9mKFwicHJlYmlkLmNvb2tpZVRlc3RcIikpKX07aWYoIWV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpcmV0dXJuIGcobik7Yy5wdXNoKChmdW5jdGlvbigpe3ZhciB0PWcobik7ZSh0KX0pKX0sc2V0RGF0YUluTG9jYWxTdG9yYWdlOmZ1bmN0aW9uKGUsbix0KXt2YXIgcj1mdW5jdGlvbih0KXt0JiZ0LnZhbGlkJiZwKCkmJndpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLG4pfTtpZighdHx8XCJmdW5jdGlvblwiIT10eXBlb2YgdClyZXR1cm4gZyhyKTtjLnB1c2goKGZ1bmN0aW9uKCl7dmFyIGU9ZyhyKTt0KGUpfSkpfSxnZXREYXRhRnJvbUxvY2FsU3RvcmFnZTpmdW5jdGlvbihlLG4pe3ZhciB0PWZ1bmN0aW9uKG4pe3JldHVybiBuJiZuLnZhbGlkJiZwKCk/d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpOm51bGx9O2lmKCFufHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXJldHVybiBnKHQpO2MucHVzaCgoZnVuY3Rpb24oKXt2YXIgZT1nKHQpO24oZSl9KSl9LHJlbW92ZURhdGFGcm9tTG9jYWxTdG9yYWdlOmZ1bmN0aW9uKGUsbil7dmFyIHQ9ZnVuY3Rpb24obil7biYmbi52YWxpZCYmcCgpJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSl9O2lmKCFufHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXJldHVybiBnKHQpO2MucHVzaCgoZnVuY3Rpb24oKXt2YXIgZT1nKHQpO24oZSl9KSl9LGhhc0xvY2FsU3RvcmFnZTpwLGZpbmRTaW1pbGFyQ29va2llczpmdW5jdGlvbihlLG4pe3ZhciB0PWZ1bmN0aW9uKG4pe2lmKG4mJm4udmFsaWQpe3ZhciB0PVtdO2lmKCgwLGkuaGFzRGV2aWNlQWNjZXNzKSgpKWZvcih2YXIgcj1kb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpO3IubGVuZ3RoOyl7dmFyIG89ci5wb3AoKSxhPW8uaW5kZXhPZihcIj1cIik7YT1hPDA/by5sZW5ndGg6YSxkZWNvZGVVUklDb21wb25lbnQoby5zbGljZSgwLGEpLnJlcGxhY2UoL15cXHMrLyxcIlwiKSkuaW5kZXhPZihlKT49MCYmdC5wdXNoKGRlY29kZVVSSUNvbXBvbmVudChvLnNsaWNlKGErMSkpKX1yZXR1cm4gdH19O2lmKCFufHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXJldHVybiBnKHQpO2MucHVzaCgoZnVuY3Rpb24oKXt2YXIgZT1nKHQpO24oZSl9KSl9fX12YXIgZD0oMCxyLnozKShcImFzeW5jXCIsKGZ1bmN0aW9uKGUsbix0LHIpe3IodCl9KSxcInZhbGlkYXRlU3RvcmFnZUVuZm9yY2VtZW50XCIpO2Z1bmN0aW9uIGYoZSl7cmV0dXJuIHMoe21vZHVsZU5hbWU6ZSxtb2R1bGVUeXBlOlwiY29yZVwifSl9ZnVuY3Rpb24gbCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWUuZ3ZsaWQsdD1lLm1vZHVsZU5hbWUscj1lLmJpZGRlckNvZGU7aWYoYXJndW1lbnRzLmxlbmd0aD4xfHxhcmd1bWVudHMubGVuZ3RoPjAmJiEoMCxpLmlzUGxhaW5PYmplY3QpKGFyZ3VtZW50c1swXSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnZvY2F0aW9uIGZvciBnZXRTdG9yYWdlTWFuYWdlclwiKTtyZXR1cm4gcyh7Z3ZsaWQ6bixtb2R1bGVOYW1lOnQsYmlkZGVyQ29kZTpyfSl9fSw5NzQyOmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LmQobix7YlA6ZnVuY3Rpb24oKXtyZXR1cm4gT30sb2w6ZnVuY3Rpb24oKXtyZXR1cm4gQ30scTA6ZnVuY3Rpb24oKXtyZXR1cm4gQn0sdTg6ZnVuY3Rpb24oKXtyZXR1cm4gd319KTt2YXIgcj10KDk4NTMpLGk9dCgyNjUpLG89dCg4OTYyKSxhPXQoOTAxNyksdT10KDQ3NjYpLGM9dCgxMjY5KSxzPXQoODI2NSksZD10KDM0OTQpLGY9dCg5NjI0KSxsPXQoMTg3OSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxnKGUpfWZ1bmN0aW9uIHAoKXtyZXR1cm4gcD1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmKGVbcl09dFtyXSl9cmV0dXJuIGV9LHAuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHYoZSxuLHQpe3JldHVybihuPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKGUsbil7aWYoXCJvYmplY3RcIiE9PWcoZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciB0PWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT10KXt2YXIgcj10LmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09ZyhyKSlyZXR1cm4gcjt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhlKX0oZSk7cmV0dXJuXCJzeW1ib2xcIj09PWcobik/bjpTdHJpbmcobil9KG4pKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7dmFsdWU6dCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbbl09dCxlfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGIoZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8ZnVuY3Rpb24oZSxuKXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gYihlLG4pO3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm5cIk9iamVjdFwiPT09dCYmZS5jb25zdHJ1Y3RvciYmKHQ9ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09dHx8XCJTZXRcIj09PXQ/QXJyYXkuZnJvbShlKTpcIkFyZ3VtZW50c1wiPT09dHx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QodCk/YihlLG4pOnZvaWQgMH19KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIGIoZSxuKXsobnVsbD09bnx8bj5lLmxlbmd0aCkmJihuPWUubGVuZ3RoKTtmb3IodmFyIHQ9MCxyPW5ldyBBcnJheShuKTt0PG47dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn12YXIgbT10KDU2NDQpLGg9W10sRT0yMCxTPVwidGFyZ2V0aW5nQ29udHJvbHMuYWxsb3dUYXJnZXRpbmdLZXlzXCIsVD1cInRhcmdldGluZ0NvbnRyb2xzLmFkZFRhcmdldGluZ0tleXNcIixBPSdPbmx5IG9uZSBvZiBcIicuY29uY2F0KFMsJ1wiIG9yIFwiJykuY29uY2F0KFQsJ1wiIGNhbiBiZSBzZXQnKSxJPU9iamVjdC5rZXlzKG0uVEFSR0VUSU5HX0tFWVMpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG0uVEFSR0VUSU5HX0tFWVNbZV19KSksdz17aXNCaWROb3RFeHBpcmVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlc3BvbnNlVGltZXN0YW1wKzFlMyplLnR0bC0xZTM+KDAsci50aW1lc3RhbXApKCl9LGlzVW51c2VkQmlkOmZ1bmN0aW9uKGUpe3JldHVybiBlJiYoZS5zdGF0dXMmJiEoMCxsLnE5KShbbS5CSURfU1RBVFVTLlJFTkRFUkVEXSxlLnN0YXR1cyl8fCFlLnN0YXR1cyl9fSxDPSgwLGQuejMpKFwic3luY1wiLChmdW5jdGlvbihlLG4pe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowO2lmKCEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXSkpe3ZhciBpPVtdLGE9by52Yy5nZXRDb25maWcoXCJzZW5kQmlkc0NvbnRyb2wuZGVhbFByaW9yaXRpemF0aW9uXCIpLHU9KDAsci5ncm91cEJ5KShlLFwiYWRVbml0Q29kZVwiKTtyZXR1cm4gT2JqZWN0LmtleXModSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG89W10sYz0oMCxyLmdyb3VwQnkpKHVbZV0sXCJiaWRkZXJDb2RlXCIpO09iamVjdC5rZXlzKGMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvLnB1c2goY1tlXS5yZWR1Y2UobikpfSkpLHQ+MD8obz1hP28uc29ydChPKCEwKSk6by5zb3J0KChmdW5jdGlvbihlLG4pe3JldHVybiBuLmNwbS1lLmNwbX0pKSxpLnB1c2guYXBwbHkoaSx5KG8uc2xpY2UoMCx0KSkpKTppLnB1c2guYXBwbHkoaSx5KG8pKX0pKSxpfXJldHVybiBlfSkpO2Z1bmN0aW9uIE8oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiBmdW5jdGlvbihuLHQpe3JldHVybiB2b2lkIDAhPT1uLmFkc2VydmVyVGFyZ2V0aW5nLmhiX2RlYWwmJnZvaWQgMD09PXQuYWRzZXJ2ZXJUYXJnZXRpbmcuaGJfZGVhbD8tMTp2b2lkIDA9PT1uLmFkc2VydmVyVGFyZ2V0aW5nLmhiX2RlYWwmJnZvaWQgMCE9PXQuYWRzZXJ2ZXJUYXJnZXRpbmcuaGJfZGVhbD8xOmU/dC5jcG0tbi5jcG06dC5hZHNlcnZlclRhcmdldGluZy5oYl9wYi1uLmFkc2VydmVyVGFyZ2V0aW5nLmhiX3BifX12YXIgQj1mdW5jdGlvbihlKXt2YXIgbj17fSx0PXt9O2Z1bmN0aW9uIHUoZSxuKXtyZXR1cm4gZS5hZHNlcnZlclRhcmdldGluZyYmbiYmKCgwLHIuaXNBcnJheSkobikmJigwLGwucTkpKG4sZS5hZFVuaXRDb2RlKXx8XCJzdHJpbmdcIj09dHlwZW9mIG4mJmUuYWRVbml0Q29kZT09PW4pfWZ1bmN0aW9uIGQobil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIG4/W25dOigwLHIuaXNBcnJheSkobik/bjplLmdldEFkVW5pdENvZGVzKCl8fFtdfWZ1bmN0aW9uIGcoKXt2YXIgbj1lLmdldEJpZHNSZWNlaXZlZCgpO2lmKG8udmMuZ2V0Q29uZmlnKFwidXNlQmlkQ2FjaGVcIikpe3ZhciBhPW8udmMuZ2V0Q29uZmlnKFwiYmlkQ2FjaGVGaWx0ZXJGdW5jdGlvblwiKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZS5hZFVuaXRDb2RlXT09PWUuYXVjdGlvbklkfHwhIWEoZSl9KSkpfWVsc2Ugbj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZS5hZFVuaXRDb2RlXT09PWUuYXVjdGlvbklkfSkpO3JldHVybiBuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4oMCxpLlopKGUsXCJ2aWRlby5jb250ZXh0XCIpIT09cy5PaH0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVyblwiYmFubmVyXCIhPT1lLm1lZGlhVHlwZXx8KDAsYy5sTykoW2Uud2lkdGgsZS5oZWlnaHRdKX0pKS5maWx0ZXIody5pc1VudXNlZEJpZCkuZmlsdGVyKHcuaXNCaWROb3RFeHBpcmVkKSxDKG4sci5nZXRPbGRlc3RIaWdoZXN0Q3BtQmlkKX1mdW5jdGlvbiBiKGUsdCl7dmFyIHI9bi5nZXRXaW5uaW5nQmlkcyhlLHQpLGk9QigpO3JldHVybiByPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdih7fSxlLmFkVW5pdENvZGUsT2JqZWN0LmtleXMoZS5hZHNlcnZlclRhcmdldGluZykuZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gdm9pZCAwPT09ZS5zZW5kU3RhbmRhcmRUYXJnZXRpbmd8fGUuc2VuZFN0YW5kYXJkVGFyZ2V0aW5nfHwtMT09PWkuaW5kZXhPZihuKX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKG4sdCl7dmFyIHI9W2UuYWRzZXJ2ZXJUYXJnZXRpbmdbdF1dLGk9dih7fSx0LnN1YnN0cmluZygwLEUpLHIpO2lmKHQ9PT1tLlRBUkdFVElOR19LRVlTLkRFQUwpe3ZhciBvPXYoe30sXCJcIi5jb25jYXQodCxcIl9cIikuY29uY2F0KGUuYmlkZGVyQ29kZSkuc3Vic3RyaW5nKDAsRSkscik7cmV0dXJuW10uY29uY2F0KHkobiksW2ksb10pfXJldHVybltdLmNvbmNhdCh5KG4pLFtpXSl9KSxbXSkpfSkpLHJ9ZnVuY3Rpb24gQigpe3JldHVybiBlLmdldFN0YW5kYXJkQmlkZGVyQWRTZXJ2ZXJUYXJnZXRpbmcoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pKS5jb25jYXQoSSkuZmlsdGVyKHIudW5pcXVlcyl9ZnVuY3Rpb24gVShlLG4sdCxpKXtyZXR1cm4gT2JqZWN0LmtleXMobi5hZHNlcnZlclRhcmdldGluZykuZmlsdGVyKFIoKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5sZW5ndGgmJmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5hZFVuaXRDb2RlPT09bi5hZFVuaXRDb2RlJiZ0LmFkc2VydmVyVGFyZ2V0aW5nW2VdfX0odCkpLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpeygwLHIuaXNBcnJheSkodC5hZHNlcnZlclRhcmdldGluZ1tlXSl8fCh0LmFkc2VydmVyVGFyZ2V0aW5nW2VdPVt0LmFkc2VydmVyVGFyZ2V0aW5nW2VdXSksdC5hZHNlcnZlclRhcmdldGluZ1tlXT10LmFkc2VydmVyVGFyZ2V0aW5nW2VdLmNvbmNhdChuLmFkc2VydmVyVGFyZ2V0aW5nW2VdKS5maWx0ZXIoci51bmlxdWVzKSxkZWxldGUgbi5hZHNlcnZlclRhcmdldGluZ1tlXX19KHQpKX0pKSxlLnB1c2gobiksZX1mdW5jdGlvbiBSKCl7dmFyIGU9QigpLmNvbmNhdChhLnhjKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuLTE9PT1lLmluZGV4T2Yobil9fWZ1bmN0aW9uIGooZSl7cmV0dXJuIHYoe30sZS5hZFVuaXRDb2RlLE9iamVjdC5rZXlzKGUuYWRzZXJ2ZXJUYXJnZXRpbmcpLmZpbHRlcihSKCkpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHYoe30sbi5zdWJzdHJpbmcoMCxFKSxbZS5hZHNlcnZlclRhcmdldGluZ1tuXV0pfSkpKX1mdW5jdGlvbiBEKGUsbil7cmV0dXJuIG4ubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gdih7fSxcIlwiLmNvbmNhdChuLFwiX1wiKS5jb25jYXQoZS5iaWRkZXJDb2RlKS5zdWJzdHJpbmcoMCxFKSxbZS5hZHNlcnZlclRhcmdldGluZ1tuXV0pfSkpfXJldHVybiBuLnNldExhdGVzdEF1Y3Rpb25Gb3JBZFVuaXQ9ZnVuY3Rpb24oZSxuKXt0W2VdPW59LG4ucmVzZXRQcmVzZXRUYXJnZXRpbmc9ZnVuY3Rpb24obix0KXtpZigoMCxyLmlzR3B0UHViYWRzRGVmaW5lZCkoKSl7dmFyIGk9ZChuKSxvPWUuZ2V0QWRVbml0cygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuKDAsbC5xOSkoaSxlLmNvZGUpfSkpLGE9aC5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbbl09bnVsbCxlfSkse30pO3dpbmRvdy5nb29nbGV0YWcucHViYWRzKCkuZ2V0U2xvdHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj0oMCxyLmlzRm4pKHQpJiZ0KGUpO28uZm9yRWFjaCgoZnVuY3Rpb24odCl7KHQuY29kZT09PWUuZ2V0QWRVbml0UGF0aCgpfHx0LmNvZGU9PT1lLmdldFNsb3RFbGVtZW50SWQoKXx8KDAsci5pc0ZuKShuKSYmbih0LmNvZGUpKSYmZS51cGRhdGVUYXJnZXRpbmdGcm9tTWFwKGEpfSkpfSkpfX0sbi5yZXNldFByZXNldFRhcmdldGluZ0FTVD1mdW5jdGlvbihlKXtkKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXdpbmRvdy5hcG50YWcuZ2V0VGFnKGUpO2lmKG4mJm4ua2V5d29yZHMpe3ZhciB0PU9iamVjdC5rZXlzKG4ua2V5d29yZHMpLHI9e307dC5mb3JFYWNoKChmdW5jdGlvbihlKXsoMCxsLnE5KShoLGUudG9Mb3dlckNhc2UoKSl8fChyW2VdPW4ua2V5d29yZHNbZV0pfSkpLHdpbmRvdy5hcG50YWcubW9kaWZ5VGFnKGUse2tleXdvcmRzOnJ9KX19KSl9LG4uZ2V0QWxsVGFyZ2V0aW5nPWZ1bmN0aW9uKG4pe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpnKCksYz1kKG4pLHM9YihjLHQpLmNvbmNhdChmdW5jdGlvbihlLG4pe3JldHVybiBuLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuKDAsbC5xOSkoZSxuLmFkVW5pdENvZGUpfSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHAoe30sZSl9KSkucmVkdWNlKFUsW10pLm1hcChqKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfShjLHQpKS5jb25jYXQoby52Yy5nZXRDb25maWcoXCJlbmFibGVTZW5kQWxsQmlkc1wiKT9mdW5jdGlvbihlLG4pe3ZhciB0PUkuY29uY2F0KGEueGMpLGk9by52Yy5nZXRDb25maWcoXCJzZW5kQmlkc0NvbnRyb2wuYmlkTGltaXRcIiksYz1DKG4sci5nZXRIaWdoZXN0Q3BtLGkpLHM9by52Yy5nZXRDb25maWcoXCJ0YXJnZXRpbmdDb250cm9scy5hbGxvd1NlbmRBbGxCaWRzVGFyZ2V0aW5nS2V5c1wiKSxkPXM/cy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBtLlRBUkdFVElOR19LRVlTW2VdfSkpOnQ7cmV0dXJuIGMubWFwKChmdW5jdGlvbihuKXtpZih1KG4sZSkpcmV0dXJuIHYoe30sbi5hZFVuaXRDb2RlLEQobix0LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PW4uYWRzZXJ2ZXJUYXJnZXRpbmdbZV0mJi0xIT09ZC5pbmRleE9mKGUpfSkpKSl9KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKX0oYyx0KTpmdW5jdGlvbihlLG4pe2lmKCEwPT09by52Yy5nZXRDb25maWcoXCJ0YXJnZXRpbmdDb250cm9scy5hbHdheXNJbmNsdWRlRGVhbHNcIikpe3ZhciB0PUkuY29uY2F0KGEueGMpO3JldHVybiBDKG4sci5nZXRIaWdoZXN0Q3BtKS5tYXAoKGZ1bmN0aW9uKG4pe2lmKG4uZGVhbElkJiZ1KG4sZSkpcmV0dXJuIHYoe30sbi5hZFVuaXRDb2RlLEQobix0LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PW4uYWRzZXJ2ZXJUYXJnZXRpbmdbZV19KSkpKX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfXJldHVybltdfShjLHQpKS5jb25jYXQoZnVuY3Rpb24obil7ZnVuY3Rpb24gdChlKXtyZXR1cm4oMCxpLlopKGUsbS5KU09OX01BUFBJTkcuQURTRVJWRVJfVEFSR0VUSU5HKX1yZXR1cm4gZS5nZXRBZFVuaXRzKCkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4oMCxsLnE5KShuLGUuY29kZSkmJnQoZSl9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdih7fSxlLmNvZGUsZnVuY3Rpb24oZSl7dmFyIG49dChlKTtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4oMCxyLmlzU3RyKShuW2VdKSYmKG5bZV09bltlXS5zcGxpdChcIixcIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KSkpLCgwLHIuaXNBcnJheSkobltlXSl8fChuW2VdPVtuW2VdXSksdih7fSxlLG5bZV0pfSkpfShlKSl9KSl9KGMpKTtzLm1hcCgoZnVuY3Rpb24oZSl7T2JqZWN0LmtleXMoZSkubWFwKChmdW5jdGlvbihuKXtlW25dLm1hcCgoZnVuY3Rpb24oZSl7LTE9PT1oLmluZGV4T2YoT2JqZWN0LmtleXMoZSlbMF0pJiYoaD1PYmplY3Qua2V5cyhlKS5jb25jYXQoaCkpfSkpfSkpfSkpO3ZhciBmPU9iamVjdC5rZXlzKHAoe30sbS5ERUZBVUxUX1RBUkdFVElOR19LRVlTLG0uTkFUSVZFX0tFWVMpKSx5PW8udmMuZ2V0Q29uZmlnKFMpLEU9by52Yy5nZXRDb25maWcoVCk7aWYobnVsbCE9RSYmbnVsbCE9eSl0aHJvdyBuZXcgRXJyb3IoQSk7eT1udWxsIT1FP2YuY29uY2F0KEUpOnl8fGYsQXJyYXkuaXNBcnJheSh5KSYmeS5sZW5ndGg+MCYmKHM9ZnVuY3Rpb24oZSxuKXt2YXIgdD1wKHt9LG0uVEFSR0VUSU5HX0tFWVMsbS5OQVRJVkVfS0VZUyksaT1PYmplY3Qua2V5cyh0KSxvPXt9OygwLHIubG9nSW5mbykoXCJhbGxvd1RhcmdldGluZ0tleXMgLSBhbGxvd2VkIGtleXMgWyBcIi5jb25jYXQobi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oXCIsIFwiKSxcIiBdXCIpKSxlLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9T2JqZWN0LmtleXMoZSlbMF0sYT1lW3JdLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHI9T2JqZWN0LmtleXMoZSlbMF0sYT0wPT09aS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiAwPT09ci5pbmRleE9mKHRbZV0pfSkpLmxlbmd0aHx8KDAsbC5zRSkobiwoZnVuY3Rpb24oZSl7dmFyIG49dFtlXTtyZXR1cm4gMD09PXIuaW5kZXhPZihuKX0pKTtyZXR1cm4gb1tyXT0hYSxhfSkpO2Vbcl09YX0pKTt2YXIgYT1PYmplY3Qua2V5cyhvKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBvW2VdfSkpO3JldHVybigwLHIubG9nSW5mbykoXCJhbGxvd1RhcmdldGluZ0tleXMgLSByZW1vdmVkIGtleXMgWyBcIi5jb25jYXQoYS5qb2luKFwiLCBcIiksXCIgXVwiKSksZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlW09iamVjdC5rZXlzKGUpWzBdXS5sZW5ndGg+MH0pKX0ocyx5KSkscz1mdW5jdGlvbihlKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHYoe30sT2JqZWN0LmtleXMoZSlbMF0sZVtPYmplY3Qua2V5cyhlKVswXV0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdih7fSxPYmplY3Qua2V5cyhlKVswXSxlW09iamVjdC5rZXlzKGUpWzBdXS5qb2luKFwiLFwiKSl9KSkucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBwKG4sZSl9KSx7fSkpfSkpLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXt2YXIgdD1PYmplY3Qua2V5cyhuKVswXTtyZXR1cm4gZVt0XT1wKHt9LGVbdF0sblt0XSksZX0pLHt9KTtyZXR1cm4gbn0ocyk7dmFyIHc9by52Yy5nZXRDb25maWcoXCJ0YXJnZXRpbmdDb250cm9scy5hdWN0aW9uS2V5TWF4Q2hhcnNcIik7cmV0dXJuIHcmJigoMCxyLmxvZ0luZm8pKFwiRGV0ZWN0ZWQgJ3RhcmdldGluZ0NvbnRyb2xzLmF1Y3Rpb25LZXlNYXhDaGFycycgd2FzIGFjdGl2ZSBmb3IgdGhpcyBhdWN0aW9uOyBzZXQgd2l0aCBhIGxpbWl0IG9mIFwiLmNvbmNhdCh3LFwiIGNoYXJhY3RlcnMuICBSdW5uaW5nIGNoZWNrcyBvbiBhdWN0aW9uIGtleXMuLi5cIikpLHM9ZnVuY3Rpb24oZSxuKXt2YXIgdD0oMCxyLmRlZXBDbG9uZSkoZSksaT1PYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybnthZFVuaXRDb2RlOmUsYWRzZXJ2ZXJUYXJnZXRpbmc6dFtlXX19KSkuc29ydChPKCkpO3JldHVybiBpLnJlZHVjZSgoZnVuY3Rpb24oZSxpLG8sYSl7dmFyIHUsYz0odT1pLmFkc2VydmVyVGFyZ2V0aW5nLE9iamVjdC5rZXlzKHUpLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZStcIlwiLmNvbmNhdChuLFwiJTNkXCIpLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQodVtuXSksXCIlMjZcIil9KSxcIlwiKSk7bysxPT09YS5sZW5ndGgmJihjPWMuc2xpY2UoMCwtMykpO3ZhciBzPWkuYWRVbml0Q29kZSxkPWMubGVuZ3RoO3JldHVybiBkPD1uPyhuLT1kLCgwLHIubG9nSW5mbykoXCJBZFVuaXQgJ1wiLmNvbmNhdChzLFwiJyBhdWN0aW9uIGtleXMgY29tcHJpc2VkIG9mIFwiKS5jb25jYXQoZCxcIiBjaGFyYWN0ZXJzLiAgRGVkdWN0ZWQgZnJvbSBydW5uaW5nIHRocmVzaG9sZDsgbmV3IGxpbWl0IGlzIFwiKS5jb25jYXQobiksdFtzXSksZVtzXT10W3NdKTooMCxyLmxvZ1dhcm4pKFwiVGhlIGZvbGxvd2luZyBrZXlzIGZvciBhZFVuaXRDb2RlICdcIi5jb25jYXQocyxcIicgZXhjZWVkZWQgdGhlIGN1cnJlbnQgbGltaXQgb2YgdGhlICdhdWN0aW9uS2V5TWF4Q2hhcnMnIHNldHRpbmcuXFxuVGhlIGtleS1zZXQgc2l6ZSB3YXMgXCIpLmNvbmNhdChkLFwiLCB0aGUgY3VycmVudCBhbGxvdHRlZCBhbW91bnQgd2FzIFwiKS5jb25jYXQobixcIi5cXG5cIiksdFtzXSksbysxPT09YS5sZW5ndGgmJjA9PT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJigwLHIubG9nRXJyb3IpKFwiTm8gYXVjdGlvbiB0YXJnZXRpbmcga2V5cyB3ZXJlIHBlcm1pdHRlZCBkdWUgdG8gdGhlIHNldHRpbmcgaW4gc2V0Q29uZmlnKHRhcmdldGluZ0NvbnRyb2xzLmF1Y3Rpb25LZXlNYXhDaGFycykuICBQbGVhc2UgcmV2aWV3IHNldHVwIGFuZCBjb25zaWRlciBhZGp1c3RpbmcuXCIpLGV9KSx7fSl9KHMsdykpLGMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7c1tlXXx8KHNbZV09e30pfSkpLHN9LG8udmMuZ2V0Q29uZmlnKFwidGFyZ2V0aW5nQ29udHJvbHNcIiwoZnVuY3Rpb24oZSl7bnVsbCE9KDAsaS5aKShlLFMpJiZudWxsIT0oMCxpLlopKGUsVCkmJigwLHIubG9nRXJyb3IpKEEpfSkpLG4uc2V0VGFyZ2V0aW5nRm9yR1BUPWZ1bmN0aW9uKGUsbil7d2luZG93Lmdvb2dsZXRhZy5wdWJhZHMoKS5nZXRTbG90cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5rZXlzKGUpLmZpbHRlcihuP24odCk6KDAsci5pc0FkVW5pdENvZGVNYXRjaGluZ1Nsb3QpKHQpKS5mb3JFYWNoKChmdW5jdGlvbihuKXtPYmplY3Qua2V5cyhlW25dKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj1lW25dW3RdO1wic3RyaW5nXCI9PXR5cGVvZiByJiYtMSE9PXIuaW5kZXhPZihcIixcIikmJihyPXIuc3BsaXQoXCIsXCIpKSxlW25dW3RdPXJ9KSksKDAsci5sb2dNZXNzYWdlKShcIkF0dGVtcHRpbmcgdG8gc2V0IHRhcmdldGluZy1tYXAgZm9yIHNsb3Q6IFwiLmNvbmNhdCh0LmdldFNsb3RFbGVtZW50SWQoKSxcIiB3aXRoIHRhcmdldGluZy1tYXA6XCIpLGVbbl0pLHQudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcChlW25dKX0pKX0pKX0sbi5nZXRXaW5uaW5nQmlkcz1mdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ZygpLHQ9ZChlKTtyZXR1cm4gbi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybigwLGwucTkpKHQsZS5hZFVuaXRDb2RlKX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEwPT09Zi5TLmdldChlLmJpZGRlckNvZGUsXCJhbGxvd1plcm9DcG1CaWRzXCIpP2UuY3BtPj0wOmUuY3BtPjB9KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZFVuaXRDb2RlfSkpLmZpbHRlcihyLnVuaXF1ZXMpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4uZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gbi5hZFVuaXRDb2RlPT09ZT9uOm51bGx9KSkucmVkdWNlKHIuZ2V0SGlnaGVzdENwbSl9KSl9LG4uc2V0VGFyZ2V0aW5nRm9yQXN0PWZ1bmN0aW9uKGUpe3ZhciB0PW4uZ2V0QWxsVGFyZ2V0aW5nKGUpO3RyeXtuLnJlc2V0UHJlc2V0VGFyZ2V0aW5nQVNUKGUpfWNhdGNoKGUpeygwLHIubG9nRXJyb3IpKFwidW5hYmxlIHRvIHJlc2V0IHRhcmdldGluZyBmb3IgQVNUXCIrZSl9T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKHRbZV0pLmZvckVhY2goKGZ1bmN0aW9uKG4pe2lmKCgwLHIubG9nTWVzc2FnZSkoXCJBdHRlbXB0aW5nIHRvIHNldCB0YXJnZXRpbmcgZm9yIHRhcmdldElkOiBcIi5jb25jYXQoZSxcIiBrZXk6IFwiKS5jb25jYXQobixcIiB2YWx1ZTogXCIpLmNvbmNhdCh0W2VdW25dKSksKDAsci5pc1N0cikodFtlXVtuXSl8fCgwLHIuaXNBcnJheSkodFtlXVtuXSkpe3ZhciBpPXt9O24uc2VhcmNoKC9wdFswLTldLyk8MD9pW24udG9VcHBlckNhc2UoKV09dFtlXVtuXTppW25dPXRbZV1bbl0sd2luZG93LmFwbnRhZy5zZXRLZXl3b3JkcyhlLGkse292ZXJyaWRlS2V5VmFsdWU6ITB9KX19KSl9KSl9LG4uaXNBcG50YWdEZWZpbmVkPWZ1bmN0aW9uKCl7aWYod2luZG93LmFwbnRhZyYmKDAsci5pc0ZuKSh3aW5kb3cuYXBudGFnLnNldEtleXdvcmRzKSlyZXR1cm4hMH0sbn0odS5LKX0sNzExMjpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se2tfOmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7dmFyIHI9dCg5ODUzKSxpPXQoODk2Miksbz10KDE4NzkpLGE9dCg1ODQ5KTtmdW5jdGlvbiB1KGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLG4pe3ZhciB0PW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPXQpe3ZhciByLGksbyxhLHU9W10sYz0hMCxzPSExO3RyeXtpZihvPSh0PXQuY2FsbChlKSkubmV4dCwwPT09bil7aWYoT2JqZWN0KHQpIT09dClyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPW8uY2FsbCh0KSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksdS5sZW5ndGghPT1uKTtjPSEwKTt9Y2F0Y2goZSl7cz0hMCxpPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXQucmV0dXJuJiYoYT10LnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKHMpdGhyb3cgaX19cmV0dXJuIHV9fShlLG4pfHxmdW5jdGlvbihlLG4pe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBjKGUsbik7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT10JiZlLmNvbnN0cnVjdG9yJiYodD1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT10fHxcIlNldFwiPT09dD9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT10fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KT9jKGUsbik6dm9pZCAwfX0oZSxuKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIGMoZSxuKXsobnVsbD09bnx8bj5lLmxlbmd0aCkmJihuPWUubGVuZ3RoKTtmb3IodmFyIHQ9MCxyPW5ldyBBcnJheShuKTt0PG47dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBzKCl7cmV0dXJuIHM9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgdD1hcmd1bWVudHNbbl07Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pfXJldHVybiBlfSxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1pLnZjLnNldERlZmF1bHRzKHt1c2VyU3luYzooMCxyLmRlZXBDbG9uZSkoe3N5bmNFbmFibGVkOiEwLGZpbHRlclNldHRpbmdzOntpbWFnZTp7YmlkZGVyczpcIipcIixmaWx0ZXI6XCJpbmNsdWRlXCJ9fSxzeW5jc1BlckJpZGRlcjo1LHN5bmNEZWxheTozZTMsYXVjdGlvbkRlbGF5OjB9KX0pO3ZhciBkPSgwLGEuZUEpKFwidXNlcnN5bmNcIiksZj0hKDAsci5pc1NhZmFyaUJyb3dzZXIpKCkmJmQuY29va2llc0FyZUVuYWJsZWQoKSxsPWZ1bmN0aW9uKGUpe3ZhciBuPXt9LHQ9e2ltYWdlOltdLGlmcmFtZTpbXX0sYT1uZXcgU2V0LGM9e30sZD17aW1hZ2U6ITAsaWZyYW1lOiExfSxmPWUuY29uZmlnO2Z1bmN0aW9uIGwoKXtpZihmLnN5bmNFbmFibGVkJiZlLmJyb3dzZXJTdXBwb3J0c0Nvb2tpZXMpe3RyeXtkLmlmcmFtZSYmZyh0LmlmcmFtZSwoZnVuY3Rpb24oZSl7dmFyIG49dShlLDIpLGk9blswXSxvPW5bMV07KDAsci5sb2dNZXNzYWdlKShcIkludm9raW5nIGlmcmFtZSB1c2VyIHN5bmMgZm9yIGJpZGRlcjogXCIuY29uY2F0KGkpKSwoMCxyLmluc2VydFVzZXJTeW5jSWZyYW1lKShvKSxmdW5jdGlvbihlLG4pe2UuaW1hZ2U9ZS5pbWFnZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdIT09bn0pKX0odCxpKX0pKSxkLmltYWdlJiZnKHQuaW1hZ2UsKGZ1bmN0aW9uKGUpe3ZhciBuPXUoZSwyKSx0PW5bMF0saT1uWzFdOygwLHIubG9nTWVzc2FnZSkoXCJJbnZva2luZyBpbWFnZSBwaXhlbCB1c2VyIHN5bmMgZm9yIGJpZGRlcjogXCIuY29uY2F0KHQpKSwoMCxyLnRyaWdnZXJQaXhlbCkoaSl9KSl9Y2F0Y2goZSl7cmV0dXJuKDAsci5sb2dFcnJvcikoXCJFcnJvciBmaXJpbmcgdXNlciBzeW5jc1wiLGUpfXQ9e2ltYWdlOltdLGlmcmFtZTpbXX19fWZ1bmN0aW9uIGcoZSxuKXsoMCxyLnNodWZmbGUpKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe24oZSksYS5hZGQoZVswXSl9KSl9cmV0dXJuIGkudmMuZ2V0Q29uZmlnKFwidXNlclN5bmNcIiwoZnVuY3Rpb24oZSl7aWYoZS51c2VyU3luYyl7dmFyIG49ZS51c2VyU3luYy5maWx0ZXJTZXR0aW5nczsoMCxyLmlzUGxhaW5PYmplY3QpKG4pJiYobi5pbWFnZXx8bi5hbGx8fChlLnVzZXJTeW5jLmZpbHRlclNldHRpbmdzLmltYWdlPXtiaWRkZXJzOlwiKlwiLGZpbHRlcjpcImluY2x1ZGVcIn0pKX1mPXMoZixlLnVzZXJTeW5jKX0pKSxuLnJlZ2lzdGVyU3luYz1mdW5jdGlvbihlLGksbyl7cmV0dXJuIGEuaGFzKGkpPygwLHIubG9nTWVzc2FnZSkoJ2FscmVhZHkgZmlyZWQgc3luY3MgZm9yIFwiJy5jb25jYXQoaSwnXCIsIGlnbm9yaW5nIHJlZ2lzdGVyU3luYyBjYWxsJykpOmYuc3luY0VuYWJsZWQmJigwLHIuaXNBcnJheSkodFtlXSk/aT8wIT09Zi5zeW5jc1BlckJpZGRlciYmTnVtYmVyKGNbaV0pPj1mLnN5bmNzUGVyQmlkZGVyPygwLHIubG9nV2FybikoJ051bWJlciBvZiB1c2VyIHN5bmNzIGV4Y2VlZGVkIGZvciBcIicuY29uY2F0KGksJ1wiJykpOm4uY2FuQmlkZGVyUmVnaXN0ZXJTeW5jKGUsaSk/KHRbZV0ucHVzaChbaSxvXSksdm9pZChjPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbbl0/ZVtuXSs9MTplW25dPTEsZX0oYyxpKSkpOigwLHIubG9nV2FybikoJ0JpZGRlciBcIicuY29uY2F0KGksJ1wiIG5vdCBwZXJtaXR0ZWQgdG8gcmVnaXN0ZXIgdGhlaXIgXCInKS5jb25jYXQoZSwnXCIgdXNlclN5bmMgcGl4ZWxzLicpKTooMCxyLmxvZ1dhcm4pKFwiQmlkZGVyIGlzIHJlcXVpcmVkIGZvciByZWdpc3RlcmluZyBzeW5jXCIpOigwLHIubG9nV2FybikoJ1VzZXIgc3luYyB0eXBlIFwiJy5jb25jYXQoZSwnXCIgbm90IHN1cHBvcnRlZCcpKX0sbi5zeW5jVXNlcnM9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MDtpZihlKXJldHVybiBzZXRUaW1lb3V0KGwsTnVtYmVyKGUpKTtsKCl9LG4udHJpZ2dlclVzZXJTeW5jcz1mdW5jdGlvbigpe2YuZW5hYmxlT3ZlcnJpZGUmJm4uc3luY1VzZXJzKCl9LG4uY2FuQmlkZGVyUmVnaXN0ZXJTeW5jPWZ1bmN0aW9uKGUsbil7cmV0dXJuIWYuZmlsdGVyU2V0dGluZ3N8fCFmdW5jdGlvbihlLG4pe3ZhciB0PWYuZmlsdGVyU2V0dGluZ3M7aWYoZnVuY3Rpb24oZSxuKXtpZihlLmFsbCYmZVtuXSlyZXR1cm4oMCxyLmxvZ1dhcm4pKCdEZXRlY3RlZCBwcmVzZW5jZSBvZiB0aGUgXCJmaWx0ZXJTZXR0aW5ncy5hbGxcIiBhbmQgXCJmaWx0ZXJTZXR0aW5ncy4nLmNvbmNhdChuLCdcIiBpbiB1c2VyU3luYyBjb25maWcuICBZb3UgY2Fubm90IG1peCBcImFsbFwiIHdpdGggXCJpZnJhbWUvaW1hZ2VcIiBjb25maWdzOyB0aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuJykpLCExO3ZhciB0PWUuYWxsP2UuYWxsOmVbbl0saT1lLmFsbD9cImFsbFwiOm47aWYoIXQpcmV0dXJuITE7dmFyIG89dC5maWx0ZXIsYT10LmJpZGRlcnM7cmV0dXJuIG8mJlwiaW5jbHVkZVwiIT09byYmXCJleGNsdWRlXCIhPT1vPygoMCxyLmxvZ1dhcm4pKCdVc2VyU3luYyBcImZpbHRlclNldHRpbmdzLicuY29uY2F0KGksXCIuZmlsdGVyXFxcIiBzZXR0aW5nICdcIikuY29uY2F0KG8sXCInIGlzIG5vdCBhIHZhbGlkIG9wdGlvbjsgdXNlIGVpdGhlciAnaW5jbHVkZScgb3IgJ2V4Y2x1ZGUnLlwiKSksITEpOiEhKFwiKlwiPT09YXx8QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MCYmYS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsci5pc1N0cikoZSkmJlwiKlwiIT09ZX0pKSl8fCgoMCxyLmxvZ1dhcm4pKCdEZXRlY3RlZCBhbiBpbnZhbGlkIHNldHVwIGluIHVzZXJTeW5jIFwiZmlsdGVyU2V0dGluZ3MuJy5jb25jYXQoaSxcIi5iaWRkZXJzXFxcIjsgdXNlIGVpdGhlciAnKicgKHRvIHJlcHJlc2VudCBhbGwgYmlkZGVycykgb3IgYW4gYXJyYXkgb2YgYmlkZGVycy5cIikpLCExKX0odCxlKSl7ZFtlXT0hMDt2YXIgaT10LmFsbD90LmFsbDp0W2VdLGE9XCIqXCI9PT1pLmJpZGRlcnM/W25dOmkuYmlkZGVycyx1PXtpbmNsdWRlOmZ1bmN0aW9uKGUsbil7cmV0dXJuISgwLG8ucTkpKGUsbil9LGV4Y2x1ZGU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4oMCxvLnE5KShlLG4pfX07cmV0dXJuIHVbaS5maWx0ZXJ8fFwiaW5jbHVkZVwiXShhLG4pfXJldHVybiFkW2VdfShlLG4pfSxufSh7Y29uZmlnOmkudmMuZ2V0Q29uZmlnKFwidXNlclN5bmNcIiksYnJvd3NlclN1cHBvcnRzQ29va2llczpmfSl9LDk4NTM6ZnVuY3Rpb24oZSxuLHQpe1widXNlIHN0cmljdFwiO3QucihuKSx0LmQobix7X2VhY2g6ZnVuY3Rpb24oKXtyZXR1cm4geWV9LF9tYXA6ZnVuY3Rpb24oKXtyZXR1cm4gbWV9LGFkVW5pdHNGaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gemV9LGJpbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sYnVpbGRVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gT259LGNhbGxCdXJsOmZ1bmN0aW9uKCl7cmV0dXJuIEFlfSxjaGVja0Nvb2tpZVN1cHBvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gWGV9LGNodW5rOmZ1bmN0aW9uKCl7cmV0dXJuIEVufSxjbGVhbk9iajpmdW5jdGlvbigpe3JldHVybiBwbn0sY29tcGFyZU9uOmZ1bmN0aW9uKCl7cmV0dXJuIEFufSxjb250YWluczpmdW5jdGlvbigpe3JldHVybiBiZX0sY29udmVydENhbWVsVG9VbmRlcnNjb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIGdufSxjb252ZXJ0VHlwZXM6ZnVuY3Rpb24oKXtyZXR1cm4gYm59LGNyZWF0ZUludmlzaWJsZUlmcmFtZTpmdW5jdGlvbigpe3JldHVybiBvZX0sY3JlYXRlVHJhY2tQaXhlbEh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4gQ2V9LGNyZWF0ZVRyYWNrUGl4ZWxJZnJhbWVIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIE9lfSxjeXJiNTNIYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIFJufSxkZWJ1Z1R1cm5lZE9uOmZ1bmN0aW9uKCl7cmV0dXJuIGllfSxkZWVwQWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHUuWn0sZGVlcENsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIExlfSxkZWVwRXF1YWw6ZnVuY3Rpb24oKXtyZXR1cm4gQm59LGRlZXBTZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBjLlp9LGRlbGF5RXhlY3V0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuICRlfSxmaWxsOmZ1bmN0aW9uKCl7cmV0dXJuIGhufSxmbGF0dGVuOmZ1bmN0aW9uKCl7cmV0dXJuIFJlfSxmb3JtYXRRUzpmdW5jdGlvbigpe3JldHVybiB3bn0sZ2VuZXJhdGVVVUlEOmZ1bmN0aW9uKCl7cmV0dXJuIHF9LGdldEFkVW5pdFNpemVzOmZ1bmN0aW9uKCl7cmV0dXJuIHp9LGdldEJpZElkUGFyYW1ldGVyOmZ1bmN0aW9uKCl7cmV0dXJuIE19LGdldEJpZFJlcXVlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gamV9LGdldEJpZGRlckNvZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIFBlfSxnZXRETlQ6ZnVuY3Rpb24oKXtyZXR1cm4gYW59LGdldERlZmluZWRQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gbm59LGdldEdwdFNsb3RJbmZvRm9yQWRVbml0Q29kZTpmdW5jdGlvbigpe3JldHVybiBkbn0sZ2V0SGlnaGVzdENwbTpmdW5jdGlvbigpe3JldHVybiBxZX0sZ2V0S2V5QnlWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBrZX0sZ2V0S2V5czpmdW5jdGlvbigpe3JldHVybiBEZX0sZ2V0TGF0ZXN0SGlnaGVzdENwbUJpZDpmdW5jdGlvbigpe3JldHVybiBHZX0sZ2V0TWF4VmFsdWVGcm9tQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gVG59LGdldE1pblZhbHVlRnJvbUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIFNufSxnZXRPbGRlc3RIaWdoZXN0Q3BtQmlkOmZ1bmN0aW9uKCl7cmV0dXJuIE1lfSxnZXRPcmlnaW46ZnVuY3Rpb24oKXtyZXR1cm4gb259LGdldFBhcmFtZXRlckJ5TmFtZTpmdW5jdGlvbigpe3JldHVybiBhZX0sZ2V0UGVyZm9ybWFuY2VOb3c6ZnVuY3Rpb24oKXtyZXR1cm4gSmV9LGdldFByZWJpZEludGVybmFsOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGdldFVuaXF1ZUlkZW50aWZpZXJTdHI6ZnVuY3Rpb24oKXtyZXR1cm4geH0sZ2V0VXNlckNvbmZpZ3VyZWRQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gcm59LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIF9lfSxnZXRWYWx1ZVN0cmluZzpmdW5jdGlvbigpe3JldHVybiBCZX0sZ2V0V2luZG93TG9jYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gSn0sZ2V0V2luZG93U2VsZjpmdW5jdGlvbigpe3JldHVybiBZfSxnZXRXaW5kb3dUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gWn0sZ3JvdXBCeTpmdW5jdGlvbigpe3JldHVybiBlbn0saGFzQ29uc29sZUxvZ2dlcjpmdW5jdGlvbigpe3JldHVybiByZX0saGFzRGV2aWNlQWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIFFlfSxoYXNPd246ZnVuY3Rpb24oKXtyZXR1cm4gaGV9LGluSWZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIEtlfSxpbnNlcnRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIEVlfSxpbnNlcnRIdG1sSW50b0lmcmFtZTpmdW5jdGlvbigpe3JldHVybiBJZX0saW5zZXJ0VXNlclN5bmNJZnJhbWU6ZnVuY3Rpb24oKXtyZXR1cm4gd2V9LGludGVybmFsOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9LGlzQTpmdW5jdGlvbigpe3JldHVybiB1ZX0saXNBZFVuaXRDb2RlTWF0Y2hpbmdTbG90OmZ1bmN0aW9uKCl7cmV0dXJuIGNufSxpc0FwbkdldFRhZ0RlZmluZWQ6ZnVuY3Rpb24oKXtyZXR1cm4geGV9LGlzQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZGV9LGlzQXJyYXlPZk51bXM6ZnVuY3Rpb24oKXtyZXR1cm4gbW59LGlzQm9vbGVhbjpmdW5jdGlvbigpe3JldHVybiBnZX0saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiBwZX0saXNFbXB0eVN0cjpmdW5jdGlvbigpe3JldHVybiB2ZX0saXNGbjpmdW5jdGlvbigpe3JldHVybiBjZX0saXNHcHRQdWJhZHNEZWZpbmVkOmZ1bmN0aW9uKCl7cmV0dXJuIE5lfSxpc0ludGVnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbG59LGlzTnVtYmVyOmZ1bmN0aW9uKCl7cmV0dXJuIGZlfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIGxlfSxpc1NhZmFyaUJyb3dzZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVmV9LGlzU2xvdE1hdGNoaW5nQWRVbml0Q29kZTpmdW5jdGlvbigpe3JldHVybiBzbn0saXNTdHI6ZnVuY3Rpb24oKXtyZXR1cm4gc2V9LGlzVmFsaWRNZWRpYVR5cGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRufSxsb2dFcnJvcjpmdW5jdGlvbigpe3JldHVybiBlZX0sbG9nSW5mbzpmdW5jdGlvbigpe3JldHVybiBYfSxsb2dNZXNzYWdlOmZ1bmN0aW9uKCl7cmV0dXJuIFF9LGxvZ1dhcm46ZnVuY3Rpb24oKXtyZXR1cm4gJH0sbWVyZ2VEZWVwOmZ1bmN0aW9uKCl7cmV0dXJuIFVufSxwYXJzZUdQVFNpbmdsZVNpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiBLfSxwYXJzZUdQVFNpbmdsZVNpemVBcnJheVRvUnRiU2l6ZTpmdW5jdGlvbigpe3JldHVybiBWfSxwYXJzZVFTOmZ1bmN0aW9uKCl7cmV0dXJuIElufSxwYXJzZVF1ZXJ5U3RyaW5nUGFyYW1ldGVyczpmdW5jdGlvbigpe3JldHVybiBXfSxwYXJzZVNpemVzSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTH0scGFyc2VVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gQ259LHBpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdm59LHByZWZpeExvZzpmdW5jdGlvbigpe3JldHVybiBuZX0scmVwbGFjZUF1Y3Rpb25QcmljZTpmdW5jdGlvbigpe3JldHVybiBIZX0scmVwbGFjZUNsaWNrVGhyb3VnaDpmdW5jdGlvbigpe3JldHVybiBaZX0sc2h1ZmZsZTpmdW5jdGlvbigpe3JldHVybiBGZX0sc2tpcFVuZGVmaW5lZFZhbHVlczpmdW5jdGlvbigpe3JldHVybiBqbn0sdGltZXN0YW1wOmZ1bmN0aW9uKCl7cmV0dXJuIFllfSx0cmFuc2Zvcm1BZFNlcnZlclRhcmdldGluZ09iajpmdW5jdGlvbigpe3JldHVybiBGfSx0cmFuc2Zvcm1CaWRkZXJQYXJhbUtleXdvcmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHlufSx0cmlnZ2VyUGl4ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gVGV9LHRyeUFwcGVuZFF1ZXJ5U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIEd9LHVuaXF1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gVWV9LHVuc3VwcG9ydGVkQmlkZGVyTWVzc2FnZTpmdW5jdGlvbigpe3JldHVybiBmbn0sd2FpdEZvckVsZW1lbnRUb0xvYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gU2V9fSk7dmFyIHI9dCg4OTYyKSxpPXQoNzA3OSksbz10Lm4oaSksYT10KDE4NzkpLHU9dCgyNjUpLGM9dCg0ODA2KTtmdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBmKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGQoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gZChlLG4pe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBmKGUsbik7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT10JiZlLmNvbnN0cnVjdG9yJiYodD1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT10fHxcIlNldFwiPT09dD9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT10fHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KT9mKGUsbik6dm9pZCAwfX1mdW5jdGlvbiBmKGUsbil7KG51bGw9PW58fG4+ZS5sZW5ndGgpJiYobj1lLmxlbmd0aCk7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkobik7dDxuO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9ZnVuY3Rpb24gbChlLG4sdCl7cmV0dXJuKG49ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24oZSxuKXtpZihcIm9iamVjdFwiIT09cChlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHQ9ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXQpe3ZhciByPXQuY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPT1wKHIpKXJldHVybiByO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT09cChuKT9uOlN0cmluZyhuKX0obikpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVtuXT10LGV9ZnVuY3Rpb24gZygpe3JldHVybiBnPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHQ9YXJndW1lbnRzW25dO2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYoZVtyXT10W3JdKX1yZXR1cm4gZX0sZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcChlKXtyZXR1cm4gcD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxwKGUpfXZhciB2LHk9dCg1NjQ0KSxiPVwiQXJyYXlcIixtPVwiU3RyaW5nXCIsaD1cIkZ1bmN0aW9uXCIsRT1cIk51bWJlclwiLFM9XCJPYmplY3RcIixUPVwiQm9vbGVhblwiLEE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxJPUJvb2xlYW4od2luZG93LmNvbnNvbGUpLHc9Qm9vbGVhbihJJiZ3aW5kb3cuY29uc29sZS5sb2cpLEM9Qm9vbGVhbihJJiZ3aW5kb3cuY29uc29sZS5pbmZvKSxPPUJvb2xlYW4oSSYmd2luZG93LmNvbnNvbGUud2FybiksQj1Cb29sZWFuKEkmJndpbmRvdy5jb25zb2xlLmVycm9yKSxVPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXYmJih2PXQoMjMxOSkpLHYuZW1pdC5hcHBseSh2LGFyZ3VtZW50cyl9LFI9e2NoZWNrQ29va2llU3VwcG9ydDpYZSxjcmVhdGVUcmFja1BpeGVsSWZyYW1lSHRtbDpPZSxnZXRXaW5kb3dTZWxmOlksZ2V0V2luZG93VG9wOlosZ2V0V2luZG93TG9jYXRpb246SixpbnNlcnRVc2VyU3luY0lmcmFtZTp3ZSxpbnNlcnRFbGVtZW50OkVlLGlzRm46Y2UsdHJpZ2dlclBpeGVsOlRlLGxvZ0Vycm9yOmVlLGxvZ1dhcm46JCxsb2dNZXNzYWdlOlEsbG9nSW5mbzpYLHBhcnNlUVM6SW4sZm9ybWF0UVM6d24sZGVlcEVxdWFsOkJuLGlzRW1wdHk6cGUsc2tpcFVuZGVmaW5lZFZhbHVlczpqbn0saj17fTtmdW5jdGlvbiBEKCl7cmV0dXJuIGp9dmFyIF8saz17fSxQPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG59LmJpbmQobnVsbCwxLGspKCk9PT1rP0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkoZSx0LmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9fSxOPShfPTAsZnVuY3Rpb24oKXtyZXR1cm4rK199KTtmdW5jdGlvbiB4KCl7cmV0dXJuIE4oKStNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMil9ZnVuY3Rpb24gcShlKXtyZXR1cm4gZT8oZV4od2luZG93JiZ3aW5kb3cuY3J5cHRvJiZ3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEpKVswXSUxNjoxNipNYXRoLnJhbmRvbSgpKT4+ZS80KS50b1N0cmluZygxNik6KFsxZTddKy0xZTMrLTRlMystOGUzKy0xZTExKS5yZXBsYWNlKC9bMDE4XS9nLHEpfWZ1bmN0aW9uIE0oZSxuKXtyZXR1cm4gbiYmbltlXT9uW2VdOlwiXCJ9ZnVuY3Rpb24gRyhlLG4sdCl7cmV0dXJuIHQ/ZStuK1wiPVwiK2VuY29kZVVSSUNvbXBvbmVudCh0KStcIiZcIjplfWZ1bmN0aW9uIFcoZSl7dmFyIG49XCJcIjtmb3IodmFyIHQgaW4gZSllLmhhc093blByb3BlcnR5KHQpJiYobis9dCtcIj1cIitlbmNvZGVVUklDb21wb25lbnQoZVt0XSkrXCImXCIpO3JldHVybiBuLnJlcGxhY2UoLyYkLyxcIlwiKX1mdW5jdGlvbiBGKGUpe3JldHVybiBlJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5sZW5ndGg+MD9EZShlKS5tYXAoKGZ1bmN0aW9uKG4pe3JldHVyblwiXCIuY29uY2F0KG4sXCI9XCIpLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoX2UoZSxuKSkpfSkpLmpvaW4oXCImXCIpOlwiXCJ9ZnVuY3Rpb24geihlKXtpZihlKXt2YXIgbj1bXTtpZihlLm1lZGlhVHlwZXMmJmUubWVkaWFUeXBlcy5iYW5uZXImJkFycmF5LmlzQXJyYXkoZS5tZWRpYVR5cGVzLmJhbm5lci5zaXplcykpe3ZhciB0PWUubWVkaWFUeXBlcy5iYW5uZXIuc2l6ZXM7QXJyYXkuaXNBcnJheSh0WzBdKT9uPXQ6bi5wdXNoKHQpfWVsc2UgQXJyYXkuaXNBcnJheShlLnNpemVzKSYmKEFycmF5LmlzQXJyYXkoZS5zaXplc1swXSk/bj1lLnNpemVzOm4ucHVzaChlLnNpemVzKSk7cmV0dXJuIG59fWZ1bmN0aW9uIEwoZSl7dmFyIG49W107aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciB0PWUuc3BsaXQoXCIsXCIpLHI9L14oXFxkKSt4KFxcZCkrJC9pO2lmKHQpZm9yKHZhciBpIGluIHQpaGUodCxpKSYmdFtpXS5tYXRjaChyKSYmbi5wdXNoKHRbaV0pfWVsc2UgaWYoXCJvYmplY3RcIj09PXAoZSkpe3ZhciBvPWUubGVuZ3RoO2lmKG8+MClpZigyPT09byYmXCJudW1iZXJcIj09dHlwZW9mIGVbMF0mJlwibnVtYmVyXCI9PXR5cGVvZiBlWzFdKW4ucHVzaChLKGUpKTtlbHNlIGZvcih2YXIgYT0wO2E8bzthKyspbi5wdXNoKEsoZVthXSkpfXJldHVybiBufWZ1bmN0aW9uIEsoZSl7aWYoSChlKSlyZXR1cm4gZVswXStcInhcIitlWzFdfWZ1bmN0aW9uIFYoZSl7aWYoSChlKSlyZXR1cm57dzplWzBdLGg6ZVsxXX19ZnVuY3Rpb24gSChlKXtyZXR1cm4gZGUoZSkmJjI9PT1lLmxlbmd0aCYmIWlzTmFOKGVbMF0pJiYhaXNOYU4oZVsxXSl9ZnVuY3Rpb24gWigpe3JldHVybiB3aW5kb3cudG9wfWZ1bmN0aW9uIFkoKXtyZXR1cm4gd2luZG93LnNlbGZ9ZnVuY3Rpb24gSigpe3JldHVybiB3aW5kb3cubG9jYXRpb259ZnVuY3Rpb24gUSgpe2llKCkmJncmJmNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsdGUoYXJndW1lbnRzLFwiTUVTU0FHRTpcIikpfWZ1bmN0aW9uIFgoKXtpZSgpJiZDJiZjb25zb2xlLmluZm8uYXBwbHkoY29uc29sZSx0ZShhcmd1bWVudHMsXCJJTkZPOlwiKSl9ZnVuY3Rpb24gJCgpe2llKCkmJk8mJmNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLHRlKGFyZ3VtZW50cyxcIldBUk5JTkc6XCIpKSxVKHkuRVZFTlRTLkFVQ1RJT05fREVCVUcse3R5cGU6XCJXQVJOSU5HXCIsYXJndW1lbnRzOmFyZ3VtZW50c30pfWZ1bmN0aW9uIGVlKCl7aWUoKSYmQiYmY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLHRlKGFyZ3VtZW50cyxcIkVSUk9SOlwiKSksVSh5LkVWRU5UUy5BVUNUSU9OX0RFQlVHLHt0eXBlOlwiRVJST1JcIixhcmd1bWVudHM6YXJndW1lbnRzfSl9ZnVuY3Rpb24gbmUoZSl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krKylyW2ldPWFyZ3VtZW50c1tpXTtuLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHIpKX19cmV0dXJue2xvZ0Vycm9yOm4oZWUpLGxvZ1dhcm46bigkKSxsb2dNZXNzYWdlOm4oUSksbG9nSW5mbzpuKFgpfX1mdW5jdGlvbiB0ZShlLG4pe2U9W10uc2xpY2UuY2FsbChlKTt2YXIgdD1yLnZjLmdldEN1cnJlbnRCaWRkZXIoKTtyZXR1cm4gbiYmZS51bnNoaWZ0KG4pLHQmJmUudW5zaGlmdChpKFwiI2FhYVwiKSksZS51bnNoaWZ0KGkoXCIjM2I4OGMzXCIpKSxlLnVuc2hpZnQoXCIlY1ByZWJpZFwiKyh0P1wiJWNcIi5jb25jYXQodCk6XCJcIikpLGU7ZnVuY3Rpb24gaShlKXtyZXR1cm5cImRpc3BsYXk6IGlubGluZS1ibG9jazsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6IFwiLmNvbmNhdChlLFwiOyBwYWRkaW5nOiAxcHggNHB4OyBib3JkZXItcmFkaXVzOiAzcHg7XCIpfX1mdW5jdGlvbiByZSgpe3JldHVybiB3fWZ1bmN0aW9uIGllKCl7cmV0dXJuISFyLnZjLmdldENvbmZpZyhcImRlYnVnXCIpfWZ1bmN0aW9uIG9lKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtyZXR1cm4gZS5pZD14KCksZS5oZWlnaHQ9MCxlLndpZHRoPTAsZS5ib3JkZXI9XCIwcHhcIixlLmhzcGFjZT1cIjBcIixlLnZzcGFjZT1cIjBcIixlLm1hcmdpbldpZHRoPVwiMFwiLGUubWFyZ2luSGVpZ2h0PVwiMFwiLGUuc3R5bGUuYm9yZGVyPVwiMFwiLGUuc2Nyb2xsaW5nPVwibm9cIixlLmZyYW1lQm9yZGVyPVwiMFwiLGUuc3JjPVwiYWJvdXQ6YmxhbmtcIixlLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsZX1mdW5jdGlvbiBhZShlKXtyZXR1cm4gSW4oSigpLnNlYXJjaClbZV18fFwiXCJ9ZnVuY3Rpb24gdWUoZSxuKXtyZXR1cm4gQS5jYWxsKGUpPT09XCJbb2JqZWN0IFwiK24rXCJdXCJ9ZnVuY3Rpb24gY2UoZSl7cmV0dXJuIHVlKGUsaCl9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuIHVlKGUsbSl9ZnVuY3Rpb24gZGUoZSl7cmV0dXJuIHVlKGUsYil9ZnVuY3Rpb24gZmUoZSl7cmV0dXJuIHVlKGUsRSl9ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIHVlKGUsUyl9ZnVuY3Rpb24gZ2UoZSl7cmV0dXJuIHVlKGUsVCl9ZnVuY3Rpb24gcGUoZSl7aWYoIWUpcmV0dXJuITA7aWYoZGUoZSl8fHNlKGUpKXJldHVybiEoZS5sZW5ndGg+MCk7Zm9yKHZhciBuIGluIGUpaWYoaGFzT3duUHJvcGVydHkuY2FsbChlLG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHZlKGUpe3JldHVybiBzZShlKSYmKCFlfHwwPT09ZS5sZW5ndGgpfWZ1bmN0aW9uIHllKGUsbil7aWYoIXBlKGUpKXtpZihjZShlLmZvckVhY2gpKXJldHVybiBlLmZvckVhY2gobix0aGlzKTt2YXIgdD0wLHI9ZS5sZW5ndGg7aWYocj4wKWZvcig7dDxyO3QrKyluKGVbdF0sdCxlKTtlbHNlIGZvcih0IGluIGUpaGFzT3duUHJvcGVydHkuY2FsbChlLHQpJiZuLmNhbGwodGhpcyxlW3RdLHQpfX1mdW5jdGlvbiBiZShlLG4pe2lmKHBlKGUpKXJldHVybiExO2lmKGNlKGUuaW5kZXhPZikpcmV0dXJuLTEhPT1lLmluZGV4T2Yobik7Zm9yKHZhciB0PWUubGVuZ3RoO3QtLTspaWYoZVt0XT09PW4pcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbWUoZSxuKXtpZihwZShlKSlyZXR1cm5bXTtpZihjZShlLm1hcCkpcmV0dXJuIGUubWFwKG4pO3ZhciB0PVtdO3JldHVybiB5ZShlLChmdW5jdGlvbihyLGkpe3QucHVzaChuKHIsaSxlKSl9KSksdH1mdW5jdGlvbiBoZShlLG4pe3JldHVybiBlLmhhc093blByb3BlcnR5P2UuaGFzT3duUHJvcGVydHkobik6dm9pZCAwIT09ZVtuXSYmZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbbl0hPT1lW25dfWZ1bmN0aW9uIEVlKGUsbix0LHIpe3ZhciBpO249bnx8ZG9jdW1lbnQsaT10P24uZ2V0RWxlbWVudHNCeVRhZ05hbWUodCk6bi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIik7dHJ5e2lmKChpPWkubGVuZ3RoP2k6bi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIikpLmxlbmd0aCl7aT1pWzBdO3ZhciBvPXI/bnVsbDppLmZpcnN0Q2hpbGQ7cmV0dXJuIGkuaW5zZXJ0QmVmb3JlKGUsbyl9fWNhdGNoKGUpe319ZnVuY3Rpb24gU2UoZSxuKXt2YXIgdD1udWxsO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocil7dmFyIGk9ZnVuY3Rpb24gbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIixuKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLG4pLG51bGwhPXQmJndpbmRvdy5jbGVhclRpbWVvdXQodCkscigpfTtlLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsaSksZS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixpKSxudWxsIT1uJiYodD13aW5kb3cuc2V0VGltZW91dChpLG4pKX0pKX1mdW5jdGlvbiBUZShlLG4sdCl7dmFyIHI9bmV3IEltYWdlO24mJlIuaXNGbihuKSYmU2Uocix0KS50aGVuKG4pLHIuc3JjPWV9ZnVuY3Rpb24gQWUoZSl7dmFyIG49ZS5zb3VyY2UsdD1lLmJ1cmw7bj09PXkuUzJTLlNSQyYmdCYmUi50cmlnZ2VyUGl4ZWwodCl9ZnVuY3Rpb24gSWUoZSl7aWYoZSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtuLmlkPXgoKSxuLndpZHRoPTAsbi5oZWlnaHQ9MCxuLmhzcGFjZT1cIjBcIixuLnZzcGFjZT1cIjBcIixuLm1hcmdpbldpZHRoPVwiMFwiLG4ubWFyZ2luSGVpZ2h0PVwiMFwiLG4uc3R5bGUuZGlzcGxheT1cIm5vbmVcIixuLnN0eWxlLmhlaWdodD1cIjBweFwiLG4uc3R5bGUud2lkdGg9XCIwcHhcIixuLnNjcm9sbGluZz1cIm5vXCIsbi5mcmFtZUJvcmRlcj1cIjBcIixuLmFsbG93dHJhbnNwYXJlbmN5PVwidHJ1ZVwiLFIuaW5zZXJ0RWxlbWVudChuLGRvY3VtZW50LFwiYm9keVwiKSxuLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQub3BlbigpLG4uY29udGVudFdpbmRvdy5kb2N1bWVudC53cml0ZShlKSxuLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKX19ZnVuY3Rpb24gd2UoZSxuLHQpe3ZhciByPVIuY3JlYXRlVHJhY2tQaXhlbElmcmFtZUh0bWwoZSwhMSxcImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW5cIiksaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2kuaW5uZXJIVE1MPXI7dmFyIG89aS5maXJzdENoaWxkO24mJlIuaXNGbihuKSYmU2Uobyx0KS50aGVuKG4pLFIuaW5zZXJ0RWxlbWVudChvLGRvY3VtZW50LFwiaHRtbFwiLCEwKX1mdW5jdGlvbiBDZShlKXtyZXR1cm4gZT8nPGRpdiBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7dmlzaWJpbGl0eTpoaWRkZW47XCI+PGltZyBzcmM9XCInK2VuY29kZVVSSShlKSsnXCI+PC9kaXY+JzpcIlwifWZ1bmN0aW9uIE9lKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpcIlwiO3JldHVybiBlPygoIShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSkmJihlPWVuY29kZVVSSShlKSksbiYmKG49J3NhbmRib3g9XCInLmNvbmNhdChuLCdcIicpKSxcIjxpZnJhbWUgXCIuY29uY2F0KG4sJyBpZD1cIicpLmNvbmNhdCh4KCksJ1wiXFxuICAgICAgZnJhbWVib3JkZXI9XCIwXCJcXG4gICAgICBhbGxvd3RyYW5zcGFyZW5jeT1cInRydWVcIlxcbiAgICAgIG1hcmdpbmhlaWdodD1cIjBcIiBtYXJnaW53aWR0aD1cIjBcIlxcbiAgICAgIHdpZHRoPVwiMFwiIGhzcGFjZT1cIjBcIiB2c3BhY2U9XCIwXCIgaGVpZ2h0PVwiMFwiXFxuICAgICAgc3R5bGU9XCJoZWlnaHQ6MHB4O3dpZHRoOjBweDtkaXNwbGF5Om5vbmU7XCJcXG4gICAgICBzY3JvbGxpbmc9XCJub1wiXFxuICAgICAgc3JjPVwiJykuY29uY2F0KGUsJ1wiPlxcbiAgICA8L2lmcmFtZT4nKSk6XCJcIn1mdW5jdGlvbiBCZShlLG4sdCl7cmV0dXJuIG51bGw9PW4/dDpzZShuKT9uOmZlKG4pP24udG9TdHJpbmcoKTp2b2lkIFIubG9nV2FybihcIlVuc3Vwb3J0ZWQgdHlwZSBmb3IgcGFyYW06IFwiK2UrXCIgcmVxdWlyZWQgdHlwZTogU3RyaW5nXCIpfWZ1bmN0aW9uIFVlKGUsbix0KXtyZXR1cm4gdC5pbmRleE9mKGUpPT09bn1mdW5jdGlvbiBSZShlLG4pe3JldHVybiBlLmNvbmNhdChuKX1mdW5jdGlvbiBqZShlLG4pe3ZhciB0O2lmKGUpcmV0dXJuIG4uc29tZSgoZnVuY3Rpb24obil7dmFyIHI9KDAsYS5zRSkobi5iaWRzLChmdW5jdGlvbihuKXtyZXR1cm5bXCJiaWRJZFwiLFwiYWRJZFwiLFwiYmlkX2lkXCJdLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiBuW3RdPT09ZX0pKX0pKTtyZXR1cm4gciYmKHQ9cikscn0pKSx0fWZ1bmN0aW9uIERlKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKX1mdW5jdGlvbiBfZShlLG4pe3JldHVybiBlW25dfWZ1bmN0aW9uIGtlKGUsbil7Zm9yKHZhciB0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSYmZVt0XT09PW4pcmV0dXJuIHR9ZnVuY3Rpb24gUGUoKXtyZXR1cm4oYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm93cGJqcy5hZFVuaXRzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJpZHMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRkZXJ9KSkucmVkdWNlKFJlLFtdKX0pKS5yZWR1Y2UoUmUsW10pLmZpbHRlcihVZSl9ZnVuY3Rpb24gTmUoKXtpZih3aW5kb3cuZ29vZ2xldGFnJiZjZSh3aW5kb3cuZ29vZ2xldGFnLnB1YmFkcykmJmNlKHdpbmRvdy5nb29nbGV0YWcucHViYWRzKCkuZ2V0U2xvdHMpKXJldHVybiEwfWZ1bmN0aW9uIHhlKCl7aWYod2luZG93LmFwbnRhZyYmY2Uod2luZG93LmFwbnRhZy5nZXRUYWcpKXJldHVybiEwfXZhciBxZT1XZShcInRpbWVUb1Jlc3BvbmRcIiwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZT5ufSkpLE1lPVdlKFwicmVzcG9uc2VUaW1lc3RhbXBcIiwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZT5ufSkpLEdlPVdlKFwicmVzcG9uc2VUaW1lc3RhbXBcIiwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZTxufSkpO2Z1bmN0aW9uIFdlKGUsbil7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIHQuY3BtPT09ci5jcG0/bih0W2VdLHJbZV0pP3I6dDp0LmNwbTxyLmNwbT9yOnR9fWZ1bmN0aW9uIEZlKGUpe2Zvcih2YXIgbj1lLmxlbmd0aDtuPjA7KXt2YXIgdD1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbikscj1lWy0tbl07ZVtuXT1lW3RdLGVbdF09cn1yZXR1cm4gZX1mdW5jdGlvbiB6ZShlLG4pe3JldHVybigwLGEucTkpKGUsbiYmbi5hZFVuaXRDb2RlKX1mdW5jdGlvbiBMZShlKXtyZXR1cm4gbygpKGUpfWZ1bmN0aW9uIEtlKCl7dHJ5e3JldHVybiBSLmdldFdpbmRvd1NlbGYoKSE9PVIuZ2V0V2luZG93VG9wKCl9Y2F0Y2goZSl7cmV0dXJuITB9fWZ1bmN0aW9uIFZlKCl7cmV0dXJuL14oKD8hY2hyb21lfGFuZHJvaWR8Y3Jpb3N8Znhpb3MpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX1mdW5jdGlvbiBIZShlLG4pe2lmKGUpcmV0dXJuIGUucmVwbGFjZSgvXFwkXFx7QVVDVElPTl9QUklDRVxcfS9nLG4pfWZ1bmN0aW9uIFplKGUsbil7aWYoZSYmbiYmXCJzdHJpbmdcIj09dHlwZW9mIG4pcmV0dXJuIGUucmVwbGFjZSgvXFwke0NMSUNLVEhST1VHSH0vZyxuKX1mdW5jdGlvbiBZZSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfWZ1bmN0aW9uIEplKCl7cmV0dXJuIHdpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLm5vdyYmd2luZG93LnBlcmZvcm1hbmNlLm5vdygpfHwwfWZ1bmN0aW9uIFFlKCl7cmV0dXJuITEhPT1yLnZjLmdldENvbmZpZyhcImRldmljZUFjY2Vzc1wiKX1mdW5jdGlvbiBYZSgpe2lmKHdpbmRvdy5uYXZpZ2F0b3IuY29va2llRW5hYmxlZHx8ZG9jdW1lbnQuY29va2llLmxlbmd0aClyZXR1cm4hMH1mdW5jdGlvbiAkZShlLG4pe2lmKG48MSl0aHJvdyBuZXcgRXJyb3IoXCJudW1SZXF1aXJlZENhbGxzIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuIEdvdCBcIi5jb25jYXQobikpO3ZhciB0PTA7cmV0dXJuIGZ1bmN0aW9uKCl7Kyt0PT09biYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGVuKGUsbil7cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybihlW3Rbbl1dPWVbdFtuXV18fFtdKS5wdXNoKHQpLGV9KSx7fSl9ZnVuY3Rpb24gbm4oZSxuKXtyZXR1cm4gbi5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiBlW25dfSkpLnJlZHVjZSgoZnVuY3Rpb24obix0KXtyZXR1cm4gZyhuLGwoe30sdCxlW3RdKSl9KSx7fSl9ZnVuY3Rpb24gdG4oZSl7dmFyIG49W1wiYmFubmVyXCIsXCJuYXRpdmVcIixcInZpZGVvXCJdO3JldHVybiEhT2JqZWN0LmtleXMoZSkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybigwLGEucTkpKG4sZSl9KSkmJighZS52aWRlb3x8IWUudmlkZW8uY29udGV4dHx8KDAsYS5xOSkoW1wiaW5zdHJlYW1cIixcIm91dHN0cmVhbVwiLFwiYWRwb2RcIl0sZS52aWRlby5jb250ZXh0KSl9ZnVuY3Rpb24gcm4oZSxuLHQpe3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29kZT09PW59KSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRzfSkpLnJlZHVjZShSZSxbXSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5iaWRkZXI9PT10fSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyYW1zfHx7fX0pKX1mdW5jdGlvbiBvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luP3dpbmRvdy5sb2NhdGlvbi5vcmlnaW46d2luZG93LmxvY2F0aW9uLnByb3RvY29sK1wiLy9cIit3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUrKHdpbmRvdy5sb2NhdGlvbi5wb3J0P1wiOlwiK3dpbmRvdy5sb2NhdGlvbi5wb3J0OlwiXCIpfWZ1bmN0aW9uIGFuKCl7cmV0dXJuXCIxXCI9PT1uYXZpZ2F0b3IuZG9Ob3RUcmFja3x8XCIxXCI9PT13aW5kb3cuZG9Ob3RUcmFja3x8XCIxXCI9PT1uYXZpZ2F0b3IubXNEb05vdFRyYWNrfHxcInllc1wiPT09bmF2aWdhdG9yLmRvTm90VHJhY2t9dmFyIHVuPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZ2V0QWRVbml0UGF0aCgpPT09bnx8ZS5nZXRTbG90RWxlbWVudElkKCk9PT1ufTtmdW5jdGlvbiBjbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHVuKGUsbil9fWZ1bmN0aW9uIHNuKGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdW4obixlKX19ZnVuY3Rpb24gZG4oZSl7dmFyIG47cmV0dXJuIE5lKCkmJihuPSgwLGEuc0UpKHdpbmRvdy5nb29nbGV0YWcucHViYWRzKCkuZ2V0U2xvdHMoKSxzbihlKSkpLG4/e2dwdFNsb3Q6bi5nZXRBZFVuaXRQYXRoKCksZGl2SWQ6bi5nZXRTbG90RWxlbWVudElkKCl9Ont9fWZ1bmN0aW9uIGZuKGUsbil7dmFyIHQ9T2JqZWN0LmtleXMoZS5tZWRpYVR5cGVzfHx7YmFubmVyOlwiYmFubmVyXCJ9KS5qb2luKFwiLCBcIik7cmV0dXJuXCJcXG4gICAgXCIuY29uY2F0KGUuY29kZSxcIiBpcyBhIFwiKS5jb25jYXQodCxcIiBhZCB1bml0XFxuICAgIGNvbnRhaW5pbmcgYmlkZGVycyB0aGF0IGRvbid0IHN1cHBvcnQgXCIpLmNvbmNhdCh0LFwiOiBcIikuY29uY2F0KG4sXCIuXFxuICAgIFRoaXMgYmlkZGVyIHdvbid0IGZldGNoIGRlbWFuZC5cXG4gIFwiKX1mdW5jdGlvbiBsbihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcj9OdW1iZXIuaXNJbnRlZ2VyKGUpOlwibnVtYmVyXCI9PXR5cGVvZiBlJiZpc0Zpbml0ZShlKSYmTWF0aC5mbG9vcihlKT09PWV9ZnVuY3Rpb24gZ24oZSl7cmV0dXJuIGUucmVwbGFjZSgvKD86XnxcXC4/KShbQS1aXSkvZywoZnVuY3Rpb24oZSxuKXtyZXR1cm5cIl9cIituLnRvTG93ZXJDYXNlKCl9KSkucmVwbGFjZSgvXl8vLFwiXCIpfWZ1bmN0aW9uIHBuKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHZvaWQgMCE9PWVbdF0mJihuW3RdPWVbdF0pLG59KSx7fSl9ZnVuY3Rpb24gdm4oZSxuKXtyZXR1cm5cIm9iamVjdFwiIT09cChlKT97fTpuLnJlZHVjZSgoZnVuY3Rpb24odCxyLGkpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpcmV0dXJuIHQ7dmFyIG89cixhPXIubWF0Y2goL14oLis/KVxcc2FzXFxzKC4rPykkL2kpO2EmJihyPWFbMV0sbz1hWzJdKTt2YXIgdT1lW3JdO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG5baSsxXSYmKHU9bltpKzFdKHUsdCkpLHZvaWQgMCE9PXUmJih0W29dPXUpLHR9KSx7fSl9ZnVuY3Rpb24geW4oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwia2V5d29yZHNcIix0PVtdO3JldHVybiB5ZShlLChmdW5jdGlvbihlLHIpe2lmKGRlKGUpKXt2YXIgaT1bXTt5ZShlLChmdW5jdGlvbihlKXsoKGU9QmUobitcIi5cIityLGUpKXx8XCJcIj09PWUpJiZpLnB1c2goZSl9KSksZT1pfWVsc2V7aWYoIXNlKGU9QmUobitcIi5cIityLGUpKSlyZXR1cm47ZT1bZV19dC5wdXNoKHtrZXk6cix2YWx1ZTplfSl9KSksdH1mdW5jdGlvbiBibihlLG4pe3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcixpO25bdF0mJihjZShlW3RdKT9uW3RdPWVbdF0oblt0XSk6blt0XT0ocj1lW3RdLGk9blt0XSxcInN0cmluZ1wiPT09cj9pJiZpLnRvU3RyaW5nKCk6XCJudW1iZXJcIj09PXI/TnVtYmVyKGkpOmkpLGlzTmFOKG5bdF0pJiZkZWxldGUgbi5rZXkpfSkpLG59ZnVuY3Rpb24gbW4oZSxuKXtyZXR1cm4gZGUoZSkmJighbnx8ZS5sZW5ndGg9PT1uKSYmZS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGxuKGUpfSkpfWZ1bmN0aW9uIGhuKGUsbil7Zm9yKHZhciB0PVtdLHI9MDtyPG47cisrKXt2YXIgaT1sZShlKT9MZShlKTplO3QucHVzaChpKX1yZXR1cm4gdH1mdW5jdGlvbiBFbihlLG4pe2Zvcih2YXIgdD1bXSxyPTA7cjxNYXRoLmNlaWwoZS5sZW5ndGgvbik7cisrKXt2YXIgaT1yKm4sbz1pK247dC5wdXNoKGUuc2xpY2UoaSxvKSl9cmV0dXJuIHR9ZnVuY3Rpb24gU24oZSl7cmV0dXJuIE1hdGgubWluLmFwcGx5KE1hdGgscyhlKSl9ZnVuY3Rpb24gVG4oZSl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgscyhlKSl9ZnVuY3Rpb24gQW4oZSl7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG5bZV08dFtlXT8xOm5bZV0+dFtlXT8tMTowfX1mdW5jdGlvbiBJbihlKXtyZXR1cm4gZT9lLnJlcGxhY2UoL15cXD8vLFwiXCIpLnNwbGl0KFwiJlwiKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7dmFyIHQscj0oMixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0PW4uc3BsaXQoXCI9XCIpKXx8ZnVuY3Rpb24oZSxuKXt2YXIgdD1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT10KXt2YXIgcixpLG8sYSx1PVtdLGM9ITAscz0hMTt0cnl7Zm9yKG89KHQ9dC5jYWxsKGUpKS5uZXh0LDA7IShjPShyPW8uY2FsbCh0KSkuZG9uZSkmJih1LnB1c2goci52YWx1ZSksMiE9PXUubGVuZ3RoKTtjPSEwKTt9Y2F0Y2goZSl7cz0hMCxpPWV9ZmluYWxseXt0cnl7aWYoIWMmJm51bGwhPXQucmV0dXJuJiYoYT10LnJldHVybigpLE9iamVjdChhKSE9PWEpKXJldHVybn1maW5hbGx5e2lmKHMpdGhyb3cgaX19cmV0dXJuIHV9fSh0KXx8ZCh0LDIpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGk9clswXSxvPXJbMV07cmV0dXJuL1xcW1xcXSQvLnRlc3QoaSk/KGVbaT1pLnJlcGxhY2UoXCJbXVwiLFwiXCIpXT1lW2ldfHxbXSxlW2ldLnB1c2gobykpOmVbaV09b3x8XCJcIixlfSkse30pOnt9fWZ1bmN0aW9uIHduKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBBcnJheS5pc0FycmF5KGVbbl0pP2Vbbl0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm5cIlwiLmNvbmNhdChuLFwiW109XCIpLmNvbmNhdChlKX0pKS5qb2luKFwiJlwiKTpcIlwiLmNvbmNhdChuLFwiPVwiKS5jb25jYXQoZVtuXSl9KSkuam9pbihcIiZcIil9ZnVuY3Rpb24gQ24oZSxuKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtuJiZcIm5vRGVjb2RlV2hvbGVVUkxcImluIG4mJm4ubm9EZWNvZGVXaG9sZVVSTD90LmhyZWY9ZTp0LmhyZWY9ZGVjb2RlVVJJQ29tcG9uZW50KGUpO3ZhciByPW4mJlwiZGVjb2RlU2VhcmNoQXNTdHJpbmdcImluIG4mJm4uZGVjb2RlU2VhcmNoQXNTdHJpbmc7cmV0dXJue2hyZWY6dC5ocmVmLHByb3RvY29sOih0LnByb3RvY29sfHxcIlwiKS5yZXBsYWNlKC86JC8sXCJcIiksaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0Oit0LnBvcnQscGF0aG5hbWU6dC5wYXRobmFtZS5yZXBsYWNlKC9eKD8hXFwvKS8sXCIvXCIpLHNlYXJjaDpyP3Quc2VhcmNoOlIucGFyc2VRUyh0LnNlYXJjaHx8XCJcIiksaGFzaDoodC5oYXNofHxcIlwiKS5yZXBsYWNlKC9eIy8sXCJcIiksaG9zdDp0Lmhvc3R8fHdpbmRvdy5sb2NhdGlvbi5ob3N0fX1mdW5jdGlvbiBPbihlKXtyZXR1cm4oZS5wcm90b2NvbHx8XCJodHRwXCIpK1wiOi8vXCIrKGUuaG9zdHx8ZS5ob3N0bmFtZSsoZS5wb3J0P1wiOlwiLmNvbmNhdChlLnBvcnQpOlwiXCIpKSsoZS5wYXRobmFtZXx8XCJcIikrKGUuc2VhcmNoP1wiP1wiLmNvbmNhdChSLmZvcm1hdFFTKGUuc2VhcmNofHxcIlwiKSk6XCJcIikrKGUuaGFzaD9cIiNcIi5jb25jYXQoZS5oYXNoKTpcIlwiKX1mdW5jdGlvbiBCbihlLG4pe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30pLmNoZWNrVHlwZXMscj12b2lkIDAhPT10JiZ0O2lmKGU9PT1uKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPT1wKGUpfHxudWxsPT09ZXx8XCJvYmplY3RcIiE9PXAobil8fG51bGw9PT1ufHxyJiZlLmNvbnN0cnVjdG9yIT09bi5jb25zdHJ1Y3RvcilyZXR1cm4hMTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGghPT1PYmplY3Qua2V5cyhuKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBpIGluIGUpe2lmKCFuLmhhc093blByb3BlcnR5KGkpKXJldHVybiExO2lmKCFCbihlW2ldLG5baV0se2NoZWNrVHlwZXM6cn0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIFVuKGUpe2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KG4+MT9uLTE6MCkscj0xO3I8bjtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTtpZighdC5sZW5ndGgpcmV0dXJuIGU7dmFyIGk9dC5zaGlmdCgpO2lmKGxlKGUpJiZsZShpKSl7dmFyIG89ZnVuY3Rpb24obil7bGUoaVtuXSk/KGVbbl18fGcoZSxsKHt9LG4se30pKSxVbihlW25dLGlbbl0pKTpkZShpW25dKT9lW25dP2RlKGVbbl0pJiZpW25dLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0xLGk9MDtpPGVbbl0ubGVuZ3RoO2krKylpZihCbihlW25dW2ldLHQpKXtyPTA7YnJlYWt9ciYmZVtuXS5wdXNoKHQpfSkpOmcoZSxsKHt9LG4scyhpW25dKSkpOmcoZSxsKHt9LG4saVtuXSkpfTtmb3IodmFyIGEgaW4gaSlvKGEpfXJldHVybiBVbi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdCh0KSl9ZnVuY3Rpb24gUm4oZSl7Zm9yKHZhciBuLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjAscj1mdW5jdGlvbihlLG4pe2lmKGNlKE1hdGguaW11bCkpcmV0dXJuIE1hdGguaW11bChlLG4pO3ZhciB0PSg0MTk0MzAzJmUpKihufD0wKTtyZXR1cm4gNDI5MDc3Mjk5MiZlJiYodCs9KDQyOTA3NzI5OTImZSkqbnwwKSwwfHR9LGk9MzczNTkyODU1OV50LG89MTEwMzU0Nzk5MV50LGE9MDthPGUubGVuZ3RoO2ErKylpPXIoaV4obj1lLmNoYXJDb2RlQXQoYSkpLDI2NTQ0MzU3NjEpLG89cihvXm4sMTU5NzMzNDY3Nyk7cmV0dXJuIGk9cihpXmk+Pj4xNiwyMjQ2ODIyNTA3KV5yKG9ebz4+PjEzLDMyNjY0ODk5MDkpLCg0Mjk0OTY3Mjk2KigyMDk3MTUxJihvPXIob15vPj4+MTYsMjI0NjgyMjUwNylecihpXmk+Pj4xMywzMjY2NDg5OTA5KSkpKyhpPj4+MCkpLnRvU3RyaW5nKCl9ZnVuY3Rpb24gam4oZSl7dmFyIG4sdD17fTtmb3IobiBpbiBlKWVbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fX0sMTkyOTpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7dC5kKG4se0RuOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LExEOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGdaOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGhEOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9fSk7dmFyIHI9dCgyNjUpLGk9dCg5ODUzKSxvPXQoODk2MiksYT10KDM0OTQpLHU9dCg0NzY2KSxjPVwib3V0c3RyZWFtXCIscz1cImluc3RyZWFtXCI7ZnVuY3Rpb24gZChlKXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9KS5pbmRleCx0PXZvaWQgMD09PW4/dS5LLmluZGV4Om4saT0oMCxyLlopKHQuZ2V0TWVkaWFUeXBlcyhlKSxcInZpZGVvXCIpLG89aSYmKDAsci5aKShpLFwiY29udGV4dFwiKSxhPXQuZ2V0QWRVbml0KGUpO3JldHVybiBmKGUsYSxpLG8pfXZhciBmPSgwLGEuejMpKFwic3luY1wiLChmdW5jdGlvbihlLG4sdCxyKXtyZXR1cm4gdCYmciE9PWM/by52Yy5nZXRDb25maWcoXCJjYWNoZS51cmxcIil8fCFlLnZhc3RYbWx8fGUudmFzdFVybD8hKCFlLnZhc3RVcmwmJiFlLnZhc3RYbWwpOigoMCxpLmxvZ0Vycm9yKSgnXFxuICAgICAgICBUaGlzIGJpZCBjb250YWlucyBvbmx5IHZhc3RYbWwgYW5kIHdpbGwgbm90IHdvcmsgd2hlbiBhIHByZWJpZCBjYWNoZSB1cmwgaXMgbm90IHNwZWNpZmllZC5cXG4gICAgICAgIFRyeSBlbmFibGluZyBwcmViaWQgY2FjaGUgd2l0aCBvd3BianMuc2V0Q29uZmlnKHsgY2FjaGU6IHt1cmw6IFwiLi4uXCJ9IH0pO1xcbiAgICAgICcpLCExKTpyIT09Y3x8ISEoZS5yZW5kZXJlcnx8biYmbi5yZW5kZXJlcnx8dC5yZW5kZXJlcil9KSxcImNoZWNrVmlkZW9CaWRTZXR1cFwiKX0sOTA1OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjt0LmQobix7aDpmdW5jdGlvbigpe3JldHVybiB1fSx6OmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7dmFyIHI9dCg1NzU1KSxpPXQoODk2Miksbz10KDQ3NjYpO2Z1bmN0aW9uIGEoZSl7dmFyIG4sdCxyLGE9KGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSkuaW5kZXgsdT12b2lkIDA9PT1hP28uSy5pbmRleDphLGM9ZS52YXN0WG1sP2UudmFzdFhtbDoobj1lLnZhc3RVcmwscj0odD1lLnZhc3RJbXBVcmwpP1wiPCFbQ0RBVEFbXCIuY29uY2F0KHQsXCJdXT5cIik6XCJcIiwnPFZBU1QgdmVyc2lvbj1cIjMuMFwiPlxcbiAgICA8QWQ+XFxuICAgICAgPFdyYXBwZXI+XFxuICAgICAgICA8QWRTeXN0ZW0+cHJlYmlkLm9yZyB3cmFwcGVyPC9BZFN5c3RlbT5cXG4gICAgICAgIDxWQVNUQWRUYWdVUkk+PCFbQ0RBVEFbJy5jb25jYXQobixcIl1dPjwvVkFTVEFkVGFnVVJJPlxcbiAgICAgICAgPEltcHJlc3Npb24+XCIpLmNvbmNhdChyLFwiPC9JbXByZXNzaW9uPlxcbiAgICAgICAgPENyZWF0aXZlcz48L0NyZWF0aXZlcz5cXG4gICAgICA8L1dyYXBwZXI+XFxuICAgIDwvQWQ+XFxuICA8L1ZBU1Q+XCIpKSxzPXUuZ2V0QXVjdGlvbihlKTt3aW5kb3cmJndpbmRvdy5QV1QmJihjPXdpbmRvdy5QV1QuVXBkYXRlVmFzdFdpdGhUcmFja2VyKGUsYykpO3ZhciBkPXt0eXBlOlwieG1sXCIsdmFsdWU6Yyx0dGxzZWNvbmRzOk51bWJlcihlLnR0bCl9O3JldHVybiBpLnZjLmdldENvbmZpZyhcImNhY2hlLnZhc3R0cmFja1wiKSYmKGQuYmlkZGVyPWUuYmlkZGVyLGQuYmlkaWQ9ZS5yZXF1ZXN0SWQsZC5haWQ9ZS5hdWN0aW9uSWQpLG51bGwhPXMmJihkLnRpbWVzdGFtcD1zLmdldEF1Y3Rpb25TdGFydCgpKSxcInN0cmluZ1wiPT10eXBlb2YgZS5jdXN0b21DYWNoZUtleSYmXCJcIiE9PWUuY3VzdG9tQ2FjaGVLZXkmJihkLmtleT1lLmN1c3RvbUNhY2hlS2V5KSxkfWZ1bmN0aW9uIHUoZSxuKXt2YXIgdD17cHV0czplLm1hcChhKX07KDAsci5oKShpLnZjLmdldENvbmZpZyhcImNhY2hlLnVybFwiKSxmdW5jdGlvbihlKXtyZXR1cm57c3VjY2VzczpmdW5jdGlvbihuKXt2YXIgdDt0cnl7dD1KU09OLnBhcnNlKG4pLnJlc3BvbnNlc31jYXRjaChuKXtyZXR1cm4gdm9pZCBlKG4sW10pfXQ/ZShudWxsLHQpOmUobmV3IEVycm9yKFwiVGhlIGNhY2hlIHNlcnZlciBkaWRuJ3QgcmVzcG9uZCB3aXRoIGEgcmVzcG9uc2VzIHByb3BlcnR5LlwiKSxbXSl9LGVycm9yOmZ1bmN0aW9uKG4sdCl7ZShuZXcgRXJyb3IoXCJFcnJvciBzdG9yaW5nIHZpZGVvIGFkIGluIHRoZSBjYWNoZTogXCIuY29uY2F0KG4sXCI6IFwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkodCkpKSxbXSl9fX0obiksSlNPTi5zdHJpbmdpZnkodCkse2NvbnRlbnRUeXBlOlwidGV4dC9wbGFpblwiLHdpdGhDcmVkZW50aWFsczohMH0pfWZ1bmN0aW9uIGMoZSl7cmV0dXJuXCJcIi5jb25jYXQoaS52Yy5nZXRDb25maWcoXCJjYWNoZS51cmxcIiksXCI/dXVpZD1cIikuY29uY2F0KGUpfX0sMjY1OmZ1bmN0aW9uKGUsbix0KXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUsbix0LHIsaSl7Zm9yKG49bi5zcGxpdD9uLnNwbGl0KFwiLlwiKTpuLHI9MDtyPG4ubGVuZ3RoO3IrKyllPWU/ZVtuW3JdXTppO3JldHVybiBlPT09aT90OmV9dC5kKG4se1o6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KX0sNDgwNjpmdW5jdGlvbihlLG4sdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlLG4sdCl7bi5zcGxpdCYmKG49bi5zcGxpdChcIi5cIikpO2Zvcih2YXIgcixpPTAsbz1uLmxlbmd0aCxhPWU7aTxvOysraSlyPWFbbltpXV0sYT1hW25baV1dPWk9PT1vLTE/dDpudWxsIT1yP3I6IX5uW2krMV0uaW5kZXhPZihcIi5cIikmJituW2krMV0+LTE/W106e319dC5kKG4se1o6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KX0sMTQzMjpmdW5jdGlvbihlKXt1LlNZTkM9MSx1LkFTWU5DPTIsdS5RVUVVRT00O3ZhciBuPVwiZnVuLWhvb2tzXCIsdD1PYmplY3QuZnJlZXplKHt1c2VQcm94eTohMCxyZWFkeTowfSkscj1uZXcgV2Vha01hcCxpPVwiMiwxLDBcIj09PVsxXS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbix0KXtyZXR1cm5bZSxuLHRdfSksMikudG9TdHJpbmcoKT9BcnJheS5wcm90b3R5cGUucmVkdWNlOmZ1bmN0aW9uKGUsbil7dmFyIHQscj1PYmplY3QodGhpcyksaT1yLmxlbmd0aD4+PjAsbz0wO2lmKG4pdD1uO2Vsc2V7Zm9yKDtvPGkmJiEobyBpbiByKTspbysrO3Q9cltvKytdfWZvcig7bzxpOylvIGluIHImJih0PWUodCxyW29dLG8scikpLG8rKztyZXR1cm4gdH07ZnVuY3Rpb24gbyhlLG4pe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLG4pfXZhciBhPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe3JldHVybiBpLmNhbGwobyhhcmd1bWVudHMsMSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuIG4mJk9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09blt0XX0pKSxlfSksZSl9O2Z1bmN0aW9uIHUoZSl7dmFyIGMscz17fSxkPVtdO2Z1bmN0aW9uIGYoZSxuKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP3YuY2FsbChudWxsLFwic3luY1wiLGUsbik6XCJzdHJpbmdcIj09dHlwZW9mIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4/di5hcHBseShudWxsLGFyZ3VtZW50cyk6XCJvYmplY3RcIj09dHlwZW9mIGU/bC5hcHBseShudWxsLGFyZ3VtZW50cyk6dm9pZCAwfWZ1bmN0aW9uIGwoZSxuLHQpe3ZhciByPSEwO3ZvaWQgMD09PW4mJihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLHI9ITEpO3ZhciBpPXt9LG89W1wiY29uc3RydWN0b3JcIl07ZG97KG49bi5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiEoXCJmdW5jdGlvblwiIT10eXBlb2YgZVtuXXx8LTEhPT1vLmluZGV4T2Yobil8fG4ubWF0Y2goL15fLykpfSkpKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uLnNwbGl0KFwiOlwiKSxvPXJbMF0sYT1yWzFdfHxcInN5bmNcIjtpZighaVtvXSl7dmFyIHU9ZVtvXTtpW29dPWVbb109dihhLHUsdD9bdCxvXTp2b2lkIDApfX0pKSxlPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKX13aGlsZShyJiZlKTtyZXR1cm4gaX1mdW5jdGlvbiBnKGUpe3ZhciB0PUFycmF5LmlzQXJyYXkoZSk/ZTplLnNwbGl0KFwiLlwiKTtyZXR1cm4gaS5jYWxsKHQsKGZ1bmN0aW9uKHIsaSxvKXt2YXIgYT1yW2ldLHU9ITE7cmV0dXJuIGF8fChvPT09dC5sZW5ndGgtMT8oY3x8ZC5wdXNoKChmdW5jdGlvbigpe3V8fGNvbnNvbGUud2FybihuK1wiOiByZWZlcmVuY2VkICdcIitlK1wiJyBidXQgaXQgd2FzIG5ldmVyIGNyZWF0ZWRcIil9KSkscltpXT1wKChmdW5jdGlvbihlKXtyW2ldPWUsdT0hMH0pKSk6cltpXT17fSl9KSxzKX1mdW5jdGlvbiBwKGUpe3ZhciBuPVtdLHQ9W10saT1mdW5jdGlvbigpe30sbz17YmVmb3JlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGMuY2FsbCh0aGlzLG4sXCJiZWZvcmVcIixlLHQpfSxhZnRlcjpmdW5jdGlvbihlLG4pe3JldHVybiBjLmNhbGwodGhpcyx0LFwiYWZ0ZXJcIixlLG4pfSxnZXRIb29rczpmdW5jdGlvbihlKXt2YXIgcj1uLmNvbmNhdCh0KTtcIm9iamVjdFwiPT10eXBlb2YgZSYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiBPYmplY3Qua2V5cyhlKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIG5bdF09PT1lW3RdfSkpfSkpKTt0cnl7YShyLHtyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnJlbW92ZSgpfSkpLHRoaXN9fSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihcImVycm9yIGFkZGluZyBgcmVtb3ZlYCB0byBhcnJheSwgZGlkIHlvdSBtb2RpZnkgQXJyYXkucHJvdG90eXBlP1wiKX1yZXR1cm4gcn0scmVtb3ZlQWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SG9va3MoKS5yZW1vdmUoKX19LHU9e2luc3RhbGw6ZnVuY3Rpb24ocixvLGEpe3RoaXMudHlwZT1yLGk9YSxhKG4sdCksZSYmZShvKX19O3JldHVybiByLnNldChvLmFmdGVyLHUpLG87ZnVuY3Rpb24gYyhlLHIsbyxhKXt2YXIgdT17aG9vazpvLHR5cGU6cixwcmlvcml0eTphfHwxMCxyZW1vdmU6ZnVuY3Rpb24oKXt2YXIgcj1lLmluZGV4T2YodSk7LTEhPT1yJiYoZS5zcGxpY2UociwxKSxpKG4sdCkpfX07cmV0dXJuIGUucHVzaCh1KSxlLnNvcnQoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIG4ucHJpb3JpdHktZS5wcmlvcml0eX0pKSxpKG4sdCksdGhpc319ZnVuY3Rpb24gdih0LGkscyl7dmFyIGY9aS5hZnRlciYmci5nZXQoaS5hZnRlcik7aWYoZil7aWYoZi50eXBlIT09dCl0aHJvdyBuK1wiOiByZWNyZWF0ZWQgaG9va2FibGUgd2l0aCBkaWZmZXJlbnQgdHlwZVwiO3JldHVybiBpfXZhciBsLHYseT1zP2cocyk6cCgpLGI9e2dldDpmdW5jdGlvbihlLG4pe3JldHVybiB5W25dfHxSZWZsZWN0LmdldC5hcHBseShSZWZsZWN0LGFyZ3VtZW50cyl9fTtyZXR1cm4gY3x8ZC5wdXNoKG0pLGUudXNlUHJveHkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5JiZQcm94eS5yZXZvY2FibGU/dj1uZXcgUHJveHkoaSxiKToodj1mdW5jdGlvbigpe3JldHVybiBiLmFwcGx5P2IuYXBwbHkoaSx0aGlzLG8oYXJndW1lbnRzKSk6aS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGEodix5KSksci5nZXQodi5hZnRlcikuaW5zdGFsbCh0LHYsKGZ1bmN0aW9uKGUsbil7dmFyIHIsaT1bXTtmdW5jdGlvbiBhKGUpe2kucHVzaChlLmhvb2spfWUubGVuZ3RofHxuLmxlbmd0aD8oZS5mb3JFYWNoKGEpLHI9aS5wdXNoKHZvaWQgMCktMSxuLmZvckVhY2goYSksbD1mdW5jdGlvbihlLG4sYSl7dmFyIHUsYz0wLHM9XCJhc3luY1wiPT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgYVthLmxlbmd0aC0xXSYmYS5wb3AoKTtmdW5jdGlvbiBkKGUpe1wic3luY1wiPT09dD91PWU6cyYmcy5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZihlKXtpZihpW2NdKXt2YXIgcj1vKGFyZ3VtZW50cyk7cmV0dXJuIGYuYmFpbD1kLHIudW5zaGlmdChmKSxpW2MrK10uYXBwbHkobixyKX1cInN5bmNcIj09PXQ/dT1lOnMmJnMuYXBwbHkobnVsbCxhcmd1bWVudHMpfXJldHVybiBpW3JdPWZ1bmN0aW9uKCl7dmFyIHI9byhhcmd1bWVudHMsMSk7XCJhc3luY1wiPT09dCYmcyYmKGRlbGV0ZSBmLmJhaWwsci5wdXNoKGYpKTt2YXIgaT1lLmFwcGx5KG4scik7XCJzeW5jXCI9PT10JiZmKGkpfSxmLmFwcGx5KG51bGwsYSksdX0pOmw9dm9pZCAwLG0oKX0pKSx2O2Z1bmN0aW9uIG0oKXshYyYmKFwic3luY1wiIT09dHx8ZS5yZWFkeSZ1LlNZTkMpJiYoXCJhc3luY1wiIT09dHx8ZS5yZWFkeSZ1LkFTWU5DKT9cInN5bmNcIiE9PXQmJmUucmVhZHkmdS5RVUVVRT9iLmFwcGx5PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO2QucHVzaCgoZnVuY3Rpb24oKXt2LmFwcGx5KGVbMV0sZVsyXSl9KSl9OmIuYXBwbHk9ZnVuY3Rpb24oKXt0aHJvdyBuK1wiOiBob29rZWQgZnVuY3Rpb24gbm90IHJlYWR5XCJ9OmIuYXBwbHk9bH19cmV0dXJuKGU9YSh7fSx0LGUpKS5yZWFkeT9mLnJlYWR5PWZ1bmN0aW9uKCl7Yz0hMCxmdW5jdGlvbihlKXtmb3IodmFyIG47bj1lLnNoaWZ0KCk7KW4oKX0oZCl9OmM9ITAsZi5nZXQ9ZyxmfWUuZXhwb3J0cz11fSw3MDc5OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbiBlKG4pe3ZhciB0PUFycmF5LmlzQXJyYXkobik/W106e307Zm9yKHZhciByIGluIG4pe3ZhciBpPW5bcl07dFtyXT1pJiZcIm9iamVjdFwiPT10eXBlb2YgaT9lKGkpOml9cmV0dXJuIHR9fSw1NjQ0OmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7XCJKU09OX01BUFBJTkdcIjp7XCJQTF9DT0RFXCI6XCJjb2RlXCIsXCJQTF9TSVpFXCI6XCJzaXplc1wiLFwiUExfQklEU1wiOlwiYmlkc1wiLFwiQkRfQklEREVSXCI6XCJiaWRkZXJcIixcIkJEX0lEXCI6XCJwYXJhbXNkXCIsXCJCRF9QTF9JRFwiOlwicGxhY2VtZW50SWRcIixcIkFEU0VSVkVSX1RBUkdFVElOR1wiOlwiYWRzZXJ2ZXJUYXJnZXRpbmdcIixcIkJEX1NFVFRJTkdfU1RBTkRBUkRcIjpcInN0YW5kYXJkXCJ9LFwiREVCVUdfTU9ERVwiOlwicGJqc19kZWJ1Z1wiLFwiU1RBVFVTXCI6e1wiR09PRFwiOjEsXCJOT19CSURcIjoyfSxcIkNCXCI6e1wiVFlQRVwiOntcIkFMTF9CSURTX0JBQ0tcIjpcImFsbFJlcXVlc3RlZEJpZHNCYWNrXCIsXCJBRF9VTklUX0JJRFNfQkFDS1wiOlwiYWRVbml0Qmlkc0JhY2tcIixcIkJJRF9XT05cIjpcImJpZFdvblwiLFwiUkVRVUVTVF9CSURTXCI6XCJyZXF1ZXN0Qmlkc1wifX0sXCJFVkVOVFNcIjp7XCJBVUNUSU9OX0lOSVRcIjpcImF1Y3Rpb25Jbml0XCIsXCJBVUNUSU9OX0VORFwiOlwiYXVjdGlvbkVuZFwiLFwiQklEX0FESlVTVE1FTlRcIjpcImJpZEFkanVzdG1lbnRcIixcIkJJRF9USU1FT1VUXCI6XCJiaWRUaW1lb3V0XCIsXCJCSURfUkVRVUVTVEVEXCI6XCJiaWRSZXF1ZXN0ZWRcIixcIkJJRF9SRVNQT05TRVwiOlwiYmlkUmVzcG9uc2VcIixcIk5PX0JJRFwiOlwibm9CaWRcIixcIkJJRF9XT05cIjpcImJpZFdvblwiLFwiQklEREVSX0RPTkVcIjpcImJpZGRlckRvbmVcIixcIkJJRERFUl9FUlJPUlwiOlwiYmlkZGVyRXJyb3JcIixcIlNFVF9UQVJHRVRJTkdcIjpcInNldFRhcmdldGluZ1wiLFwiQkVGT1JFX1JFUVVFU1RfQklEU1wiOlwiYmVmb3JlUmVxdWVzdEJpZHNcIixcIkJFRk9SRV9CSURERVJfSFRUUFwiOlwiYmVmb3JlQmlkZGVySHR0cFwiLFwiUkVRVUVTVF9CSURTXCI6XCJyZXF1ZXN0Qmlkc1wiLFwiQUREX0FEX1VOSVRTXCI6XCJhZGRBZFVuaXRzXCIsXCJBRF9SRU5ERVJfRkFJTEVEXCI6XCJhZFJlbmRlckZhaWxlZFwiLFwiQURfUkVOREVSX1NVQ0NFRURFRFwiOlwiYWRSZW5kZXJTdWNjZWVkZWRcIixcIlRDRjJfRU5GT1JDRU1FTlRcIjpcInRjZjJFbmZvcmNlbWVudFwiLFwiQVVDVElPTl9ERUJVR1wiOlwiYXVjdGlvbkRlYnVnXCIsXCJCSURfVklFV0FCTEVcIjpcImJpZFZpZXdhYmxlXCIsXCJTVEFMRV9SRU5ERVJcIjpcInN0YWxlUmVuZGVyXCIsXCJCSUxMQUJMRV9FVkVOVFwiOlwiYmlsbGFibGVFdmVudFwifSxcIkFEX1JFTkRFUl9GQUlMRURfUkVBU09OXCI6e1wiUFJFVkVOVF9XUklUSU5HX09OX01BSU5fRE9DVU1FTlRcIjpcInByZXZlbnRXcml0aW5nT25NYWluRG9jdW1lbnRcIixcIk5PX0FEXCI6XCJub0FkXCIsXCJFWENFUFRJT05cIjpcImV4Y2VwdGlvblwiLFwiQ0FOTk9UX0ZJTkRfQURcIjpcImNhbm5vdEZpbmRBZFwiLFwiTUlTU0lOR19ET0NfT1JfQURJRFwiOlwibWlzc2luZ0RvY09yQWRpZFwifSxcIkVWRU5UX0lEX1BBVEhTXCI6e1wiYmlkV29uXCI6XCJhZFVuaXRDb2RlXCJ9LFwiR1JBTlVMQVJJVFlfT1BUSU9OU1wiOntcIkxPV1wiOlwibG93XCIsXCJNRURJVU1cIjpcIm1lZGl1bVwiLFwiSElHSFwiOlwiaGlnaFwiLFwiQVVUT1wiOlwiYXV0b1wiLFwiREVOU0VcIjpcImRlbnNlXCIsXCJDVVNUT01cIjpcImN1c3RvbVwifSxcIlRBUkdFVElOR19LRVlTXCI6e1wiQklEREVSXCI6XCJoYl9iaWRkZXJcIixcIkFEX0lEXCI6XCJoYl9hZGlkXCIsXCJQUklDRV9CVUNLRVRcIjpcImhiX3BiXCIsXCJTSVpFXCI6XCJoYl9zaXplXCIsXCJERUFMXCI6XCJoYl9kZWFsXCIsXCJTT1VSQ0VcIjpcImhiX3NvdXJjZVwiLFwiRk9STUFUXCI6XCJoYl9mb3JtYXRcIixcIlVVSURcIjpcImhiX3V1aWRcIixcIkNBQ0hFX0lEXCI6XCJoYl9jYWNoZV9pZFwiLFwiQ0FDSEVfSE9TVFwiOlwiaGJfY2FjaGVfaG9zdFwiLFwiQURPTUFJTlwiOlwiaGJfYWRvbWFpblwifSxcIkRFRkFVTFRfVEFSR0VUSU5HX0tFWVNcIjp7XCJCSURERVJcIjpcImhiX2JpZGRlclwiLFwiQURfSURcIjpcImhiX2FkaWRcIixcIlBSSUNFX0JVQ0tFVFwiOlwiaGJfcGJcIixcIlNJWkVcIjpcImhiX3NpemVcIixcIkRFQUxcIjpcImhiX2RlYWxcIixcIlNPVVJDRVwiOlwiaGJfc291cmNlXCIsXCJGT1JNQVRcIjpcImhiX2Zvcm1hdFwiLFwiVVVJRFwiOlwiaGJfdXVpZFwiLFwiQ0FDSEVfSURcIjpcImhiX2NhY2hlX2lkXCIsXCJDQUNIRV9IT1NUXCI6XCJoYl9jYWNoZV9ob3N0XCJ9LFwiTkFUSVZFX0tFWVNcIjp7XCJ0aXRsZVwiOlwicHd0X25hdGl2ZV90aXRsZVwiLFwiYm9keVwiOlwicHd0X25hdGl2ZV9ib2R5XCIsXCJib2R5MlwiOlwicHd0X25hdGl2ZV9ib2R5MlwiLFwicHJpdmFjeUxpbmtcIjpcInB3dF9uYXRpdmVfcHJpdmFjeVwiLFwic3BvbnNvcmVkQnlcIjpcInB3dF9uYXRpdmVfYnJhbmRcIixcImltYWdlXCI6XCJwd3RfbmF0aXZlX2ltYWdlXCIsXCJpY29uXCI6XCJwd3RfbmF0aXZlX2ljb25cIixcImNsaWNrVXJsXCI6XCJwd3RfbmF0aXZlX2xpbmt1cmxcIixcImRpc3BsYXlVcmxcIjpcInB3dF9uYXRpdmVfZGlzcGxheXVybFwiLFwiY3RhXCI6XCJwd3RfbmF0aXZlX2N0YVwiLFwicmF0aW5nXCI6XCJwd3RfbmF0aXZlX3JhdGluZ1wiLFwiYWRkcmVzc1wiOlwicHd0X25hdGl2ZV9hZGRyZXNzXCIsXCJkb3dubG9hZHNcIjpcInB3dF9uYXRpdmVfZG93bmxvYWRzXCIsXCJsaWtlc1wiOlwicHd0X25hdGl2ZV9saWtlc1wiLFwicGhvbmVcIjpcInB3dF9uYXRpdmVfcGhvbmVcIixcInByaWNlXCI6XCJwd3RfbmF0aXZlX3ByaWNlXCIsXCJzYWxlUHJpY2VcIjpcInB3dF9uYXRpdmVfc2FsZXByaWNlXCJ9LFwiUzJTXCI6e1wiU1JDXCI6XCJzMnNcIixcIkRFRkFVTFRfRU5EUE9JTlRcIjpcImh0dHBzOi8vcHJlYmlkLmFkbnhzLmNvbS9wYnMvdjEvb3BlbnJ0YjIvYXVjdGlvblwiLFwiU1lOQ0VEX0JJRERFUlNfS0VZXCI6XCJwYmpzU3luY3NcIn0sXCJCSURfU1RBVFVTXCI6e1wiQklEX1RBUkdFVElOR19TRVRcIjpcInRhcmdldGluZ1NldFwiLFwiUkVOREVSRURcIjpcInJlbmRlcmVkXCIsXCJCSURfUkVKRUNURURcIjpcImJpZFJlamVjdGVkXCJ9LFwiUkVGUkVTSF9JRE1PRFVMRVNfTElTVFwiOntcIlBSSU1BUllfTU9EVUxFU1wiOltcImlkNUlkXCIsXCJwdWJsaW5rSWRcIl0sXCJTQ1JJUFRfQkFTRURfTU9EVUxFU1wiOltcInplb3RhcElkUGx1c1wiLFwiaWRlbnRpdHlMaW5rXCIsXCJwdWJsaW5rSWRcIl19LFwiTU9EVUxFX1BBUkFNX1RPX1VQREFURV9GT1JfU1NPXCI6e1wiaWQ1SWRcIjpbe1wia2V5XCI6XCJwZFwifV0sXCJwdWJsaW5rSWRcIjpbe1wia2V5XCI6XCJlXCIsXCJoYXNoVHlwZVwiOlwiTUQ1XCJ9XX19Jyl9fSx0PXt9O2Z1bmN0aW9uIHIoZSl7dmFyIGk9dFtlXTtpZih2b2lkIDAhPT1pKXJldHVybiBpLmV4cG9ydHM7dmFyIG89dFtlXT17ZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsciksby5leHBvcnRzfXIubT1uLGU9W10sci5PPWZ1bmN0aW9uKG4sdCxpLG8pe2lmKCF0KXt2YXIgYT0xLzA7Zm9yKGQ9MDtkPGUubGVuZ3RoO2QrKyl7dD1lW2RdWzBdLGk9ZVtkXVsxXSxvPWVbZF1bMl07Zm9yKHZhciB1PSEwLGM9MDtjPHQubGVuZ3RoO2MrKykoITEmb3x8YT49bykmJk9iamVjdC5rZXlzKHIuTykuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiByLk9bZV0odFtjXSl9KSk/dC5zcGxpY2UoYy0tLDEpOih1PSExLG88YSYmKGE9bykpO2lmKHUpe2Uuc3BsaWNlKGQtLSwxKTt2YXIgcz1pKCk7dm9pZCAwIT09cyYmKG49cyl9fXJldHVybiBufW89b3x8MDtmb3IodmFyIGQ9ZS5sZW5ndGg7ZD4wJiZlW2QtMV1bMl0+bztkLS0pZVtkXT1lW2QtMV07ZVtkXT1bdCxpLG9dfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIuZChuLHthOm59KSxufSxyLmQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHQgaW4gbilyLm8obix0KSYmIXIubyhlLHQpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpuW3RdfSl9LHIuZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaChlKXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLHIubz1mdW5jdGlvbihlLG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKX0sci5yPWZ1bmN0aW9uKGUpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LGZ1bmN0aW9uKCl7dmFyIGU9ezU2MDI6MH07ci5PLmo9ZnVuY3Rpb24obil7cmV0dXJuIDA9PT1lW25dfTt2YXIgbj1mdW5jdGlvbihuLHQpe3ZhciBpLG8sYT10WzBdLHU9dFsxXSxjPXRbMl0scz0wO2lmKGEuc29tZSgoZnVuY3Rpb24obil7cmV0dXJuIDAhPT1lW25dfSkpKXtmb3IoaSBpbiB1KXIubyh1LGkpJiYoci5tW2ldPXVbaV0pO2lmKGMpdmFyIGQ9YyhyKX1mb3IobiYmbih0KTtzPGEubGVuZ3RoO3MrKylvPWFbc10sci5vKGUsbykmJmVbb10mJmVbb11bMF0oKSxlW29dPTA7cmV0dXJuIHIuTyhkKX0sdD1zZWxmLm93cGJqc0NodW5rPXNlbGYub3dwYmpzQ2h1bmt8fFtdO3QuZm9yRWFjaChuLmJpbmQobnVsbCwwKSksdC5wdXNoPW4uYmluZChudWxsLHQucHVzaC5iaW5kKHQpKX0oKTt2YXIgaT1yKDI3ODYpO2k9ci5PKGkpfSgpO1widXNlIHN0cmljdFwiOyhzZWxmLm93cGJqc0NodW5rPXNlbGYub3dwYmpzQ2h1bmt8fFtdKS5wdXNoKFtbODU1NF0sezQ5MDk6ZnVuY3Rpb24oZSxyLG8pe3ZhciBuPW8oOTg1MyksdD1vKDU3NTUpLGk9bygzNDk0KSxjPW8oNzYwMik7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxzKGUpfXZhciB1PVwiMzNhY3Jvc3NJZFwiLGE9e25hbWU6dSxndmxpZDo1OCxkZWNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHI9e30sbj17ZW52ZWxvcGU6ZX0sKG89ZnVuY3Rpb24oZSl7dmFyIHI9ZnVuY3Rpb24oZSxyKXtpZihcIm9iamVjdFwiIT09cyhlKXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIG89ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PW8pe3ZhciBuPW8uY2FsbChlLFwic3RyaW5nXCIpO2lmKFwib2JqZWN0XCIhPT1zKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKX1yZXR1cm4gU3RyaW5nKGUpfShlKTtyZXR1cm5cInN5bWJvbFwiPT09cyhyKT9yOlN0cmluZyhyKX0obz11KSlpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPW4scjt2YXIgcixvLG59LGdldElkOmZ1bmN0aW9uKGUscil7dmFyIG89ZS5wYXJhbXMsaT12b2lkIDA9PT1vP3t9Om87aWYoXCJzdHJpbmdcIj09dHlwZW9mIGkucGlkKXt2YXIgcz1pLnBpZCxhPWkuYXBpVXJsLGw9dm9pZCAwPT09YT9cImh0dHBzOi8vbGV4aWNvbi4zM2Fjcm9zcy5jb20vdjEvZW52ZWxvcGVcIjphO3JldHVybntjYWxsYmFjazpmdW5jdGlvbihlKXsoMCx0Lk8pKDFlNCkobCx7c3VjY2VzczpmdW5jdGlvbihyKXt2YXIgbzt0cnl7bz1mdW5jdGlvbihlKXtpZihlLnN1Y2NlZWRlZCl7aWYoZS5kYXRhLmVudmVsb3BlKXJldHVybiBlLmRhdGEuZW52ZWxvcGU7KDAsbi5sb2dNZXNzYWdlKShcIlwiLmNvbmNhdCh1LFwiOiBObyBlbnZlbG9wZSB3YXMgcmVjZWl2ZWRcIikpfWVsc2UoMCxuLmxvZ0Vycm9yKShcIlwiLmNvbmNhdCh1LFwiOiBVbnN1Y2Nlc3NmdWwgcmVzcG9uc2VcIikpfShKU09OLnBhcnNlKHIpKX1jYXRjaChlKXsoMCxuLmxvZ0Vycm9yKShcIlwiLmNvbmNhdCh1LFwiOiBJRCByZWFkaW5nIGVycm9yOlwiKSxlKX1lKG8pfSxlcnJvcjpmdW5jdGlvbihyKXsoMCxuLmxvZ0Vycm9yKShcIlwiLmNvbmNhdCh1LFwiOiBJRCBlcnJvciByZXNwb25zZVwiKSxyKSxlKCl9fSxmdW5jdGlvbihlLHIpe3ZhciBvPWMublguZ2V0Q29uc2VudERhdGEoKSxuPUJvb2xlYW4obnVsbD09cj92b2lkIDA6ci5nZHByQXBwbGllcyksdD17cGlkOmUsZ2RwcjpOdW1iZXIobiksc3JjOlwicGJqc1wiLHZlcjpcIjYuMTguMFwifTtyZXR1cm4gbyYmKHQudXNfcHJpdmFjeT1vKSxuJiYodC5nZHByX2NvbnNlbnQ9ci5jb25zZW50U3RyaW5nfHxcIlwiKSx0fShzLHIpLHttZXRob2Q6XCJHRVRcIix3aXRoQ3JlZGVudGlhbHM6ITB9KX19fSgwLG4ubG9nRXJyb3IpKFwiXCIuY29uY2F0KHUsXCI6IFN1Ym1vZHVsZSByZXF1aXJlcyBhIHBhcnRuZXIgSUQgdG8gYmUgZGVmaW5lZFwiKSl9fTsoMCxpLkJ4KShcInVzZXJJZFwiLGEpLHdpbmRvdy5vd3BianMuaW5zdGFsbGVkTW9kdWxlcy5wdXNoKFwiMzNhY3Jvc3NJZFN5c3RlbVwiKX19LGZ1bmN0aW9uKGUpe2UoZS5zPTQ5MDkpfV0pO1widXNlIHN0cmljdFwiOyhzZWxmLm93cGJqc0NodW5rPXNlbGYub3dwYmpzQ2h1bmt8fFtdKS5wdXNoKFtbMTI2Nl0sezE2NTQ6ZnVuY3Rpb24obix0LGUpe3ZhciBvPWUoOTg1MyksYT1lKDg5NjIpLGk9ZSg3NjAyKSxyPWUoMTg3OSk7ZnVuY3Rpb24gcyhuKXtyZXR1cm4gcz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24obil7cmV0dXJuIHR5cGVvZiBufTpmdW5jdGlvbihuKXtyZXR1cm4gbiYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZuLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZuIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBufSxzKG4pfWZ1bmN0aW9uIGMobix0LGUpe3JldHVybih0PWZ1bmN0aW9uKG4pe3ZhciB0PWZ1bmN0aW9uKG4sdCl7aWYoXCJvYmplY3RcIiE9PXMobil8fG51bGw9PT1uKXJldHVybiBuO3ZhciBlPW5bU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1lKXt2YXIgbz1lLmNhbGwobixcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09cyhvKSlyZXR1cm4gbzt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIil9cmV0dXJuIFN0cmluZyhuKX0obik7cmV0dXJuXCJzeW1ib2xcIj09PXModCk/dDpTdHJpbmcodCl9KHQpKWluIG4/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7dmFsdWU6ZSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOm5bdF09ZSxufXZhciBsLGQsdSxmLHAsZz0hMCxtPXt2YWx1ZTpnLGRlZmluZWRJbkNvbmZpZzohMX0sQz0wLHY9ITEsYj17aWFiOmZ1bmN0aW9uKG4sdCxlKXtmdW5jdGlvbiBhKGEsaSl7KDAsby5sb2dJbmZvKShcIlJlY2VpdmVkIGEgcmVzcG9uc2UgZnJvbSBDTVBcIixhKSxpPyExIT09YS5nZHByQXBwbGllcyYmXCJ0Y2xvYWRlZFwiIT09YS5ldmVudFN0YXR1cyYmXCJ1c2VyYWN0aW9uY29tcGxldGVcIiE9PWEuZXZlbnRTdGF0dXN8fG4oYSxlKTp0KFwiQ01QIHVuYWJsZSB0byByZWdpc3RlciBjYWxsYmFjayBmdW5jdGlvbi4gIFBsZWFzZSBjaGVjayBDTVAgc2V0dXAuXCIsZSl9dmFyIGk9ZnVuY3Rpb24oKXt2YXIgdD17fTtmdW5jdGlvbiBhKCl7dC5nZXRDb25zZW50RGF0YSYmdC5nZXRWZW5kb3JDb25zZW50cyYmKCgwLG8ubG9nSW5mbykoXCJSZWNlaXZlZCBhbGwgcmVxdWVzdGVkIHJlc3BvbnNlcyBmcm9tIENNUFwiLHQpLG4odCxlKSl9cmV0dXJue2NvbnNlbnREYXRhQ2FsbGJhY2s6ZnVuY3Rpb24obil7dC5nZXRDb25zZW50RGF0YT1uLGEoKX0sdmVuZG9yQ29uc2VudHNDYWxsYmFjazpmdW5jdGlvbihuKXt0LmdldFZlbmRvckNvbnNlbnRzPW4sYSgpfX19KCkscz17fSxsPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQsZT13aW5kb3c7IW47KXt0cnl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5fX3RjZmFwaXx8XCJmdW5jdGlvblwiPT10eXBlb2YgZS5fX2NtcCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZS5fX3RjZmFwaT8oQz0yLHQ9ZS5fX3RjZmFwaSk6KEM9MSx0PWUuX19jbXApLG49ZTticmVha319Y2F0Y2gobil7fXRyeXtpZihlLmZyYW1lcy5fX3RjZmFwaUxvY2F0b3Ipe0M9MixuPWU7YnJlYWt9fWNhdGNoKG4pe310cnl7aWYoZS5mcmFtZXMuX19jbXBMb2NhdG9yKXtDPTEsbj1lO2JyZWFrfX1jYXRjaChuKXt9aWYoZT09PXdpbmRvdy50b3ApYnJlYWs7ZT1lLnBhcmVudH1yZXR1cm57Y21wRnJhbWU6bixjbXBGdW5jdGlvbjp0fX0oKSxkPWwuY21wRnJhbWUsdT1sLmNtcEZ1bmN0aW9uO2lmKCFkKXJldHVybiB0KFwiQ01QIG5vdCBmb3VuZC5cIixlKTtmdW5jdGlvbiBmKG4sdCl7dmFyIGE9ZS5hZFVuaXRzLGk9MSxyPTE7aWYoQXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MCl7dmFyIHM9KDAsby5nZXRBZFVuaXRTaXplcykoYVswXSk7aT1zWzBdWzBdLHI9c1swXVsxXX13aW5kb3cuJHNmLmV4dC5yZWdpc3RlcihpLHIsKGZ1bmN0aW9uKGUsbyl7aWYoXCJjbXBSZXR1cm5cIj09PWUpe3ZhciBhPVwiZ2V0Q29uc2VudERhdGFcIj09PW4/by52ZW5kb3JDb25zZW50RGF0YTpvLnZlbmRvckNvbnNlbnRzO3QoYSl9fSkpLHdpbmRvdy4kc2YuZXh0LmNtcChuKX1mdW5jdGlvbiBwKG4sdCxlKXt2YXIgbz0yPT09Qz9cIl9fdGNmYXBpXCI6XCJfX2NtcFwiLGE9XCJcIi5jb25jYXQobyxcIkNhbGxcIik7ZnVuY3Rpb24gaShuKXt2YXIgdD1cIlwiLmNvbmNhdChvLFwiUmV0dXJuXCIpLGU9XCJzdHJpbmdcIj09dHlwZW9mIG4uZGF0YSYmKDAsci5xOSkobi5kYXRhLHQpP0pTT04ucGFyc2Uobi5kYXRhKTpuLmRhdGE7aWYoZVt0XSYmZVt0XS5jYWxsSWQpe3ZhciBhPWVbdF07dm9pZCAwIT09c1thLmNhbGxJZF0mJnNbYS5jYWxsSWRdKGEucmV0dXJuVmFsdWUsYS5zdWNjZXNzKX19Mj09PUM/KHdpbmRvd1tvXT1mdW5jdGlvbihuLGUsbyxpKXt2YXIgcj1NYXRoLnJhbmRvbSgpK1wiXCIsbD1jKHt9LGEse2NvbW1hbmQ6bix2ZXJzaW9uOmUscGFyYW1ldGVyOmksY2FsbElkOnJ9KTtzW3JdPW8sdC5wb3N0TWVzc2FnZShsLFwiKlwiKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSwhMSksd2luZG93W29dKG4sQyxlKSk6KHdpbmRvd1tvXT1mdW5jdGlvbihuLGUsbyl7dmFyIGk9TWF0aC5yYW5kb20oKStcIlwiLHI9Yyh7fSxhLHtjb21tYW5kOm4scGFyYW1ldGVyOmUsY2FsbElkOml9KTtzW2ldPW8sdC5wb3N0TWVzc2FnZShyLFwiKlwiKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSwhMSksd2luZG93W29dKG4sdm9pZCAwLGUpKX0oMCxvLmlzRm4pKHUpPygoMCxvLmxvZ0luZm8pKFwiRGV0ZWN0ZWQgQ01QIEFQSSBpcyBkaXJlY3RseSBhY2Nlc3NpYmxlLCBjYWxsaW5nIGl0IG5vdy4uLlwiKSwxPT09Qz8odShcImdldENvbnNlbnREYXRhXCIsbnVsbCxpLmNvbnNlbnREYXRhQ2FsbGJhY2spLHUoXCJnZXRWZW5kb3JDb25zZW50c1wiLG51bGwsaS52ZW5kb3JDb25zZW50c0NhbGxiYWNrKSk6Mj09PUMmJnUoXCJhZGRFdmVudExpc3RlbmVyXCIsQyxhKSk6MT09PUMmJndpbmRvdy4kc2YmJndpbmRvdy4kc2YuZXh0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3aW5kb3cuJHNmLmV4dC5jbXA/KCgwLG8ubG9nSW5mbykoXCJEZXRlY3RlZCBQcmViaWQuanMgaXMgZW5jYXNlZCBpbiBhIFNhZmVGcmFtZSBhbmQgQ01QIGlzIHJlZ2lzdGVyZWQsIGNhbGxpbmcgaXQgbm93Li4uXCIpLGYoXCJnZXRDb25zZW50RGF0YVwiLGkuY29uc2VudERhdGFDYWxsYmFjayksZihcImdldFZlbmRvckNvbnNlbnRzXCIsaS52ZW5kb3JDb25zZW50c0NhbGxiYWNrKSk6KCgwLG8ubG9nSW5mbykoXCJEZXRlY3RlZCBDTVAgaXMgb3V0c2lkZSB0aGUgY3VycmVudCBpZnJhbWUgd2hlcmUgUHJlYmlkLmpzIGlzIGxvY2F0ZWQsIGNhbGxpbmcgaXQgbm93Li4uXCIpLDE9PT1DPyhwKFwiZ2V0Q29uc2VudERhdGFcIixkLGkuY29uc2VudERhdGFDYWxsYmFjaykscChcImdldFZlbmRvckNvbnNlbnRzXCIsZCxpLnZlbmRvckNvbnNlbnRzQ2FsbGJhY2spKToyPT09QyYmcChcImFkZEV2ZW50TGlzdGVuZXJcIixkLGEpKX0sc3RhdGljOmZ1bmN0aW9uKG4sdCxlKXtuKGYsZSl9fTtmdW5jdGlvbiB3KG4sdCl7dmFyIGU9e2NvbnRleHQ6dGhpcyxhcmdzOlt0XSxuZXh0Rm46bixhZFVuaXRzOnQuYWRVbml0c3x8b3dwYmpzLmFkVW5pdHMsYmlkc0JhY2tIYW5kbGVyOnQuYmlkc0JhY2tIYW5kbGVyLGhhdmVFeGl0ZWQ6ITEsdGltZXI6bnVsbH07cmV0dXJuIHA/KCgwLG8ubG9nSW5mbykoXCJVc2VyIGNvbnNlbnQgaW5mb3JtYXRpb24gYWxyZWFkeSBrbm93bi4gIFB1bGxpbmcgaW50ZXJuYWxseSBzdG9yZWQgaW5mb3JtYXRpb24uLi5cIiksTShudWxsLGUpKTooMCxyLnE5KShPYmplY3Qua2V5cyhiKSxsKT8oYltsXS5jYWxsKHRoaXMseSxoLGUpLHZvaWQoZS5oYXZlRXhpdGVkfHwoMD09PWQ/eSh2b2lkIDAsZSk6ZS50aW1lcj1zZXRUaW1lb3V0KEQuYmluZChudWxsLGUpLGQpKSkpOigoMCxvLmxvZ1dhcm4pKFwiQ01QIGZyYW1ld29yayAoXCIuY29uY2F0KGwsXCIpIGlzIG5vdCBhIHN1cHBvcnRlZCBmcmFtZXdvcmsuICBBYm9ydGluZyBjb25zZW50TWFuYWdlbWVudCBtb2R1bGUgYW5kIHJlc3VtaW5nIGF1Y3Rpb24uXCIpKSxpLnJwLnNldENvbnNlbnREYXRhKG51bGwpLGUubmV4dEZuLmFwcGx5KGUuY29udGV4dCxlLmFyZ3MpKX1mdW5jdGlvbiB5KG4sdCl7XCJzdGF0aWNcIj09PWwmJjI9PShDPW4uZ2V0Q29uc2VudERhdGE/MTpuLmdldFRDRGF0YT8yOjApJiYobj1uLmdldFRDRGF0YSk7dmFyIGU9MT09PUM/ZnVuY3Rpb24obil7dmFyIHQ9biYmbi5nZXRDb25zZW50RGF0YSYmbi5nZXRDb25zZW50RGF0YS5nZHByQXBwbGllcztyZXR1cm4hKFwiYm9vbGVhblwiPT10eXBlb2YgdCYmKCEwIT09dHx8KDAsby5pc1N0cikobi5nZXRDb25zZW50RGF0YS5jb25zZW50RGF0YSkmJigwLG8uaXNQbGFpbk9iamVjdCkobi5nZXRWZW5kb3JDb25zZW50cykmJk9iamVjdC5rZXlzKG4uZ2V0VmVuZG9yQ29uc2VudHMpLmxlbmd0aD4xKSl9OjI9PT1DP2Z1bmN0aW9uKCl7dmFyIHQ9biYmXCJib29sZWFuXCI9PXR5cGVvZiBuLmdkcHJBcHBsaWVzP24uZ2RwckFwcGxpZXM6dSxlPW4mJm4udGNTdHJpbmc7cmV0dXJuIShcImJvb2xlYW5cIj09dHlwZW9mIHQmJighMCE9PXR8fCgwLG8uaXNTdHIpKGUpKSl9Om51bGw7bS5kZWZpbmVkSW5Db25maWcmJjI9PT1DPygwLG8ubG9nV2FybikoXCInYWxsb3dBdWN0aW9uV2l0aG91dENvbnNlbnQnIGlnbm9yZWQgZm9yIFRDRiAyXCIpOm0uZGVmaW5lZEluQ29uZmlnfHwxIT09Q3x8KDAsby5sb2dJbmZvKShcIidhbGxvd0F1Y3Rpb25XaXRob3V0Q29uc2VudCcgdXNpbmcgc3lzdGVtIGRlZmF1bHQ6IChcIi5jb25jYXQoZyxcIikuXCIpKSwoMCxvLmlzRm4pKGUpP2Uobik/aChcIkNNUCByZXR1cm5lZCB1bmV4cGVjdGVkIHZhbHVlIGR1cmluZyBsb29rdXAgcHJvY2Vzcy5cIix0LG4pOihjbGVhclRpbWVvdXQodC50aW1lciksayhuKSxNKG51bGwsdCkpOmgoXCJVbmFibGUgdG8gZGVyaXZlIENNUCB2ZXJzaW9uIHRvIHByb2Nlc3MgZGF0YS4gIENvbnNlbnQgb2JqZWN0IGRvZXMgbm90IGNvbmZvcm0gdG8gVENGIHYxIG9yIHYyIHNwZWNzLlwiLHQsbil9ZnVuY3Rpb24gRChuKXsyPT09Qz8oKDAsby5sb2dXYXJuKShcIk5vIHJlc3BvbnNlIGZyb20gQ01QLCBjb250aW51aW5nIGF1Y3Rpb24uLi5cIiksayh2b2lkIDApLE0obnVsbCxuKSk6aChcIkNNUCB3b3JrZmxvdyBleGNlZWRlZCB0aW1lb3V0IHRocmVzaG9sZC5cIixuKX1mdW5jdGlvbiBoKG4sdCxlKXtjbGVhclRpbWVvdXQodC50aW1lciksbS52YWx1ZSYmMT09PUMmJmsodm9pZCAwKSxNKG4sdCxlKX1mdW5jdGlvbiBrKG4pezE9PT1DP3A9e2NvbnNlbnRTdHJpbmc6bj9uLmdldENvbnNlbnREYXRhLmNvbnNlbnREYXRhOnZvaWQgMCx2ZW5kb3JEYXRhOm4/bi5nZXRWZW5kb3JDb25zZW50czp2b2lkIDAsZ2RwckFwcGxpZXM6bj9uLmdldENvbnNlbnREYXRhLmdkcHJBcHBsaWVzOnV9OihwPXtjb25zZW50U3RyaW5nOm4/bi50Y1N0cmluZzp2b2lkIDAsdmVuZG9yRGF0YTpufHx2b2lkIDAsZ2RwckFwcGxpZXM6biYmXCJib29sZWFuXCI9PXR5cGVvZiBuLmdkcHJBcHBsaWVzP24uZ2RwckFwcGxpZXM6dX0sbiYmbi5hZGR0bENvbnNlbnQmJigwLG8uaXNTdHIpKG4uYWRkdGxDb25zZW50KSYmKHAuYWRkdGxDb25zZW50PW4uYWRkdGxDb25zZW50KSkscC5hcGlWZXJzaW9uPUMsaS5ycC5zZXRDb25zZW50RGF0YShwKX1mdW5jdGlvbiBNKG4sdCxlKXtpZighMT09PXQuaGF2ZUV4aXRlZCl7dC5oYXZlRXhpdGVkPSEwO3ZhciBhPXQuY29udGV4dCxyPXQuYXJncyxzPXQubmV4dEZuO24/bS52YWx1ZSYmMT09PUM/KCgwLG8ubG9nV2FybikobitcIiAnYWxsb3dBdWN0aW9uV2l0aG91dENvbnNlbnQnIGFjdGl2YXRlZC5cIixlKSxzLmFwcGx5KGEscikpOigoMCxvLmxvZ0Vycm9yKShuK1wiIENhbmNlbGluZyBhdWN0aW9uIGFzIHBlciBjb25zZW50TWFuYWdlbWVudCBjb25maWcuXCIsZSksaS5ycC5zZXRDb25zZW50RGF0YShudWxsKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmJpZHNCYWNrSGFuZGxlcj90LmJpZHNCYWNrSGFuZGxlcigpOigwLG8ubG9nRXJyb3IpKFwiRXJyb3IgZXhlY3V0aW5nIGJpZHNCYWNrSGFuZGxlclwiKSk6cy5hcHBseShhLHIpfX1hLnZjLmdldENvbmZpZyhcImNvbnNlbnRNYW5hZ2VtZW50XCIsKGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihuKXsobj1uJiYobi5nZHByfHxuLnVzcD9uLmdkcHI6bikpJiZcIm9iamVjdFwiPT09cyhuKT8oKDAsby5pc1N0cikobi5jbXBBcGkpP2w9bi5jbXBBcGk6KGw9XCJpYWJcIiwoMCxvLmxvZ0luZm8pKFwiY29uc2VudE1hbmFnZW1lbnQgY29uZmlnIGRpZCBub3Qgc3BlY2lmeSBjbXAuICBVc2luZyBzeXN0ZW0gZGVmYXVsdCBzZXR0aW5nIChcIi5jb25jYXQoXCJpYWJcIixcIikuXCIpKSksKDAsby5pc051bWJlcikobi50aW1lb3V0KT9kPW4udGltZW91dDooZD0xZTQsKDAsby5sb2dJbmZvKShcImNvbnNlbnRNYW5hZ2VtZW50IGNvbmZpZyBkaWQgbm90IHNwZWNpZnkgdGltZW91dC4gIFVzaW5nIHN5c3RlbSBkZWZhdWx0IHNldHRpbmcgKFwiLmNvbmNhdCgxZTQsXCIpLlwiKSkpLFwiYm9vbGVhblwiPT10eXBlb2Ygbi5hbGxvd0F1Y3Rpb25XaXRob3V0Q29uc2VudCYmKG0udmFsdWU9bi5hbGxvd0F1Y3Rpb25XaXRob3V0Q29uc2VudCxtLmRlZmluZWRJbkNvbmZpZz0hMCksdT0hMD09PW4uZGVmYXVsdEdkcHJTY29wZSwoMCxvLmxvZ0luZm8pKFwiY29uc2VudE1hbmFnZW1lbnQgbW9kdWxlIGhhcyBiZWVuIGFjdGl2YXRlZC4uLlwiKSxpLnJwLmVuYWJsZSgpLFwic3RhdGljXCI9PT1sJiYoKDAsby5pc1BsYWluT2JqZWN0KShuLmNvbnNlbnREYXRhKT8oZj1uLmNvbnNlbnREYXRhLGQ9MCk6KDAsby5sb2dFcnJvcikoXCJjb25zZW50TWFuYWdlbWVudCBjb25maWcgd2l0aCBjbXBBcGk6ICdzdGF0aWMnIGRpZCBub3Qgc3BlY2lmeSBjb25zZW50RGF0YS4gTm8gY29uc2VudHMgd2lsbCBiZSBhdmFpbGFibGUgdG8gYWRhcHRlcnMuXCIpKSx2fHxvd3BianMucmVxdWVzdEJpZHMuYmVmb3JlKHcsNTApLHY9ITApOigwLG8ubG9nV2FybikoXCJjb25zZW50TWFuYWdlbWVudCBjb25maWcgbm90IGRlZmluZWQsIGV4aXRpbmcgY29uc2VudCBtYW5hZ2VyXCIpfShuLmNvbnNlbnRNYW5hZ2VtZW50KX0pKSx3aW5kb3cub3dwYmpzLmluc3RhbGxlZE1vZHVsZXMucHVzaChcImNvbnNlbnRNYW5hZ2VtZW50XCIpfX0sZnVuY3Rpb24obil7bihuLnM9MTY1NCl9XSk7XCJ1c2Ugc3RyaWN0XCI7KHNlbGYub3dwYmpzQ2h1bms9c2VsZi5vd3BianNDaHVua3x8W10pLnB1c2goW1s1MTYwXSx7MTM2NjpmdW5jdGlvbihuLHQsZSl7dmFyIGE9ZSg5ODUzKSxvPWUoODk2MiksaT1lKDc2MDIpO2Z1bmN0aW9uIHMobil7cmV0dXJuIHM9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbn06ZnVuY3Rpb24obil7cmV0dXJuIG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmbi5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmbiE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygbn0scyhuKX12YXIgYyx1LHIsbCxwPSExLGQ9e2lhYjpmdW5jdGlvbihuLHQsZSl7dmFyIG8saT0obz17fSx7Y29uc2VudERhdGFDYWxsYmFjazpmdW5jdGlvbihhLGkpe2kmJmEudXNwU3RyaW5nJiYoby51c1ByaXZhY3k9YS51c3BTdHJpbmcpLG8udXNQcml2YWN5P24obyxlKTp0KFwiVW5hYmxlIHRvIGdldCBVU1AgY29uc2VudCBzdHJpbmcuXCIsZSl9fSkscz17fSxjPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQsZT13aW5kb3c7IW47KXt0cnl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5fX3VzcGFwaSl7dD1lLl9fdXNwYXBpLG49ZTticmVha319Y2F0Y2gobil7fXRyeXtpZihlLmZyYW1lcy5fX3VzcGFwaUxvY2F0b3Ipe249ZTticmVha319Y2F0Y2gobil7fWlmKGU9PT13aW5kb3cudG9wKWJyZWFrO2U9ZS5wYXJlbnR9cmV0dXJue3VzcGFwaUZyYW1lOm4sdXNwYXBpRnVuY3Rpb246dH19KCksdT1jLnVzcGFwaUZyYW1lLHI9Yy51c3BhcGlGdW5jdGlvbjtpZighdSlyZXR1cm4gdChcIlVTUCBDTVAgbm90IGZvdW5kLlwiLGUpOygwLGEuaXNGbikocik/KCgwLGEubG9nSW5mbykoXCJEZXRlY3RlZCBVU1AgQ01QIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUsIGNhbGxpbmcgaXQgbm93Li4uXCIpLHIoXCJnZXRVU1BEYXRhXCIsMSxpLmNvbnNlbnREYXRhQ2FsbGJhY2spKTooKDAsYS5sb2dJbmZvKShcIkRldGVjdGVkIFVTUCBDTVAgaXMgb3V0c2lkZSB0aGUgY3VycmVudCBpZnJhbWUgd2hlcmUgUHJlYmlkLmpzIGlzIGxvY2F0ZWQsIGNhbGxpbmcgaXQgbm93Li4uXCIpLGZ1bmN0aW9uKG4sdCxlKXt3aW5kb3cuX191c3BhcGk9ZnVuY3Rpb24obixlLGEpe3ZhciBvPU1hdGgucmFuZG9tKCkrXCJcIixpPXtfX3VzcGFwaUNhbGw6e2NvbW1hbmQ6bix2ZXJzaW9uOmUsY2FsbElkOm99fTtzW29dPWEsdC5wb3N0TWVzc2FnZShpLFwiKlwiKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsKGZ1bmN0aW9uKG4pe3ZhciB0PW4mJm4uZGF0YSYmbi5kYXRhLl9fdXNwYXBpUmV0dXJuO3QmJnQuY2FsbElkJiZ2b2lkIDAhPT1zW3QuY2FsbElkXSYmKHNbdC5jYWxsSWRdKHQucmV0dXJuVmFsdWUsdC5zdWNjZXNzKSxkZWxldGUgc1t0LmNhbGxJZF0pfSksITEpLHdpbmRvdy5fX3VzcGFwaShcImdldFVTUERhdGFcIiwxLGUpfSgwLHUsaS5jb25zZW50RGF0YUNhbGxiYWNrKSl9LHN0YXRpYzpmdW5jdGlvbihuLHQsZSl7bihyLGUpfX07ZnVuY3Rpb24gZihuLHQpe3ZhciBlPXtjb250ZXh0OnRoaXMsYXJnczpbdF0sbmV4dEZuOm4sYWRVbml0czp0LmFkVW5pdHN8fG93cGJqcy5hZFVuaXRzLGJpZHNCYWNrSGFuZGxlcjp0LmJpZHNCYWNrSGFuZGxlcixoYXZlRXhpdGVkOiExLHRpbWVyOm51bGx9O2lmKCFkW2NdKXJldHVybigwLGEubG9nV2FybikoXCJVU1AgZnJhbWV3b3JrIChcIi5jb25jYXQoYyxcIikgaXMgbm90IGEgc3VwcG9ydGVkIGZyYW1ld29yay4gQWJvcnRpbmcgY29uc2VudE1hbmFnZW1lbnQgbW9kdWxlIGFuZCByZXN1bWluZyBhdWN0aW9uLlwiKSksaS5uWC5zZXRDb25zZW50RGF0YShudWxsKSxlLm5leHRGbi5hcHBseShlLmNvbnRleHQsZS5hcmdzKTtkW2NdLmNhbGwodGhpcyxnLGIsZSksZS5oYXZlRXhpdGVkfHwoMD09PXU/Zyh2b2lkIDAsZSk6ZS50aW1lcj1zZXRUaW1lb3V0KG0uYmluZChudWxsLGUpLHUpKX1mdW5jdGlvbiBnKG4sdCl7biYmbi51c1ByaXZhY3k/KGNsZWFyVGltZW91dCh0LnRpbWVyKSxmdW5jdGlvbihuKXtuJiZuLnVzUHJpdmFjeSYmKGw9bi51c1ByaXZhY3ksaS5uWC5zZXRDb25zZW50RGF0YShsKSl9KG4pLHkobnVsbCx0KSk6YihcIlVTUEFQSSByZXR1cm5lZCB1bmV4cGVjdGVkIHZhbHVlIGR1cmluZyBsb29rdXAgcHJvY2Vzcy5cIix0LG4pfWZ1bmN0aW9uIG0obil7YihcIlVTUEFQSSB3b3JrZmxvdyBleGNlZWRlZCB0aW1lb3V0IHRocmVzaG9sZC5cIixuKX1mdW5jdGlvbiBiKG4sdCxlKXtjbGVhclRpbWVvdXQodC50aW1lcikseShuLHQsZSl9ZnVuY3Rpb24geShuLHQsZSl7aWYoITE9PT10LmhhdmVFeGl0ZWQpe3QuaGF2ZUV4aXRlZD0hMDt2YXIgbz10LmNvbnRleHQscz10LmFyZ3MsYz10Lm5leHRGbjtuJiYoKDAsYS5sb2dXYXJuKShuK1wiIFJlc3VtaW5nIGF1Y3Rpb24gd2l0aG91dCBjb25zZW50IGRhdGEgYXMgcGVyIGNvbnNlbnRNYW5hZ2VtZW50IGNvbmZpZy5cIixlKSxpLm5YLnNldENvbnNlbnREYXRhKG51bGwpKSxjLmFwcGx5KG8scyl9fW8udmMuZ2V0Q29uZmlnKFwiY29uc2VudE1hbmFnZW1lbnRcIiwoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG4peyhuPW4mJm4udXNwKSYmXCJvYmplY3RcIj09PXMobik/KCgwLGEuaXNTdHIpKG4uY21wQXBpKT9jPW4uY21wQXBpOihjPVwiaWFiXCIsKDAsYS5sb2dJbmZvKShcImNvbnNlbnRNYW5hZ2VtZW50LnVzcCBjb25maWcgZGlkIG5vdCBzcGVjaWZ5IGNtcEFwaS4gVXNpbmcgc3lzdGVtIGRlZmF1bHQgc2V0dGluZyAoXCIuY29uY2F0KFwiaWFiXCIsXCIpLlwiKSkpLCgwLGEuaXNOdW1iZXIpKG4udGltZW91dCk/dT1uLnRpbWVvdXQ6KHU9NTAsKDAsYS5sb2dJbmZvKShcImNvbnNlbnRNYW5hZ2VtZW50LnVzcCBjb25maWcgZGlkIG5vdCBzcGVjaWZ5IHRpbWVvdXQuIFVzaW5nIHN5c3RlbSBkZWZhdWx0IHNldHRpbmcgKFwiLmNvbmNhdCg1MCxcIikuXCIpKSksKDAsYS5sb2dJbmZvKShcIlVTUEFQSSBjb25zZW50TWFuYWdlbWVudCBtb2R1bGUgaGFzIGJlZW4gYWN0aXZhdGVkLi4uXCIpLGkublguZW5hYmxlKCksXCJzdGF0aWNcIj09PWMmJigoMCxhLmlzUGxhaW5PYmplY3QpKG4uY29uc2VudERhdGEpJiYoMCxhLmlzUGxhaW5PYmplY3QpKG4uY29uc2VudERhdGEuZ2V0VVNQRGF0YSk/KG4uY29uc2VudERhdGEuZ2V0VVNQRGF0YS51c3BTdHJpbmcmJihyPXt1c1ByaXZhY3k6bi5jb25zZW50RGF0YS5nZXRVU1BEYXRhLnVzcFN0cmluZ30pLHU9MCk6KDAsYS5sb2dFcnJvcikoXCJjb25zZW50TWFuYWdlbWVudCBjb25maWcgd2l0aCBjbXBBcGk6ICdzdGF0aWMnIGRpZCBub3Qgc3BlY2lmeSBjb25zZW50RGF0YS4gTm8gY29uc2VudHMgd2lsbCBiZSBhdmFpbGFibGUgdG8gYWRhcHRlcnMuXCIpKSxwfHxvd3BianMucmVxdWVzdEJpZHMuYmVmb3JlKGYsNTApLHA9ITApOigwLGEubG9nV2FybikoXCJjb25zZW50TWFuYWdlbWVudC51c3AgY29uZmlnIG5vdCBkZWZpbmVkLCBleGl0aW5nIHVzcCBjb25zZW50IG1hbmFnZXJcIil9KG4uY29uc2VudE1hbmFnZW1lbnQpfSkpLHdpbmRvdy5vd3BianMuaW5zdGFsbGVkTW9kdWxlcy5wdXNoKFwiY29uc2VudE1hbmFnZW1lbnRVc3BcIil9fSxmdW5jdGlvbihuKXtuKG4ucz0xMzY2KX1dKTtcInVzZSBzdHJpY3RcIjsoc2VsZi5vd3BianNDaHVuaz1zZWxmLm93cGJqc0NodW5rfHxbXSkucHVzaChbWzkwNzNdLHs4MjUzOmZ1bmN0aW9uKG8sZSxuKXt2YXIgdD1uKDk4NTMpLHI9big1NzU1KSxjPW4oMjY2MSksaT1uKDM0OTQpLGE9XCJjcml0ZW9cIixkPSgwLG4oNTg0OSkuZGYpKHtndmxpZDo5MSxtb2R1bGVOYW1lOmF9KSxsPVwiY3RvX2JpZGlkXCIscz1cImN0b19idW5kbGVcIix1PW5ldyBEYXRlKDApLnRvU3RyaW5nKCkscD1uZXcgRGF0ZSgoMCx0LnRpbWVzdGFtcCkoKSszMzY5NmU2KS50b1N0cmluZygpO2Z1bmN0aW9uIGYobyl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPSgwLHQucGFyc2VVcmwpKG8se25vRGVjb2RlV2hvbGVVUkw6ITB9KTtyZXR1cm4gZT9cIlwiLmNvbmNhdChuLmhvc3RuYW1lKTpcIlwiLmNvbmNhdChuLnByb3RvY29sLFwiOi8vXCIpLmNvbmNhdChuLmhvc3RuYW1lKS5jb25jYXQobi5wb3J0P1wiOlwiK24ucG9ydDpcIlwiLFwiL1wiKX1mdW5jdGlvbiBnKG8pe3JldHVybiBkLmdldENvb2tpZShvKXx8ZC5nZXREYXRhRnJvbUxvY2FsU3RvcmFnZShvKX1mdW5jdGlvbiBiKG8sZSxuKXtvJiZlJiYoZC5zZXREYXRhSW5Mb2NhbFN0b3JhZ2UobyxlKSxtKG8sZSxwLG4sITApKX1mdW5jdGlvbiBtKG8sZSxuLHQscil7Zm9yKHZhciBjPXQuc3BsaXQoXCIuXCIpLGk9MDtpPGMubGVuZ3RoOysraSl7dmFyIGE9Yy5zbGljZShjLmxlbmd0aC1pLTEsYy5sZW5ndGgpLmpvaW4oXCIuXCIpO3RyeXtpZihkLnNldENvb2tpZShvLGUsbixudWxsLFwiLlwiK2EpLHIpe3ZhciBsPWQuZ2V0Q29va2llKG8pO2lmKGwmJmw9PT1lKWJyZWFrfX1jYXRjaChvKXt9fX12YXIgaD17bmFtZTphLGd2bGlkOjkxLGRlY29kZTpmdW5jdGlvbihvKXtyZXR1cm4gb30sZ2V0SWQ6ZnVuY3Rpb24obyxlKXt2YXIgbj1lJiZcImJvb2xlYW5cIj09dHlwZW9mIGUuZ2RwckFwcGxpZXMmJmUuZ2RwckFwcGxpZXM/ZS5jb25zZW50U3RyaW5nOnZvaWQgMCxpPXtidW5kbGU6ZyhzKSxiaWRJZDpnKGwpfTtyZXR1cm57aWQ6aS5iaWRJZD97Y3JpdGVvSWQ6aS5iaWRJZH06dm9pZCAwLGNhbGxiYWNrOmZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihvLGUsbil7dmFyIGk9ZC5jb29raWVzQXJlRW5hYmxlZCgpLGE9ZC5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQoKSxwPWYoKDAsYy5uKSgpLnJlZmVyZXIpLGc9Zihkb2N1bWVudC5sb2NhdGlvbi5ocmVmLCEwKSxoPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBjcml0ZW9fcHVidGFnLEk9ZnVuY3Rpb24obyxlLG4sdCxyLGMsaSl7cmV0dXJuXCJodHRwczovL2d1bS5jcml0ZW8uY29tL3NpZC9qc29uP29yaWdpbj1wcmViaWRcIitcIlwiLmNvbmNhdChvP1wiJnRvcFVybD1cIitlbmNvZGVVUklDb21wb25lbnQobyk6XCJcIikrXCJcIi5jb25jYXQoZT9cIiZkb21haW49XCIrZW5jb2RlVVJJQ29tcG9uZW50KGUpOlwiXCIpK1wiXCIuY29uY2F0KG4/XCImYnVuZGxlPVwiK2VuY29kZVVSSUNvbXBvbmVudChuKTpcIlwiKStcIlwiLmNvbmNhdChpP1wiJmdkcHJTdHJpbmc9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGkpOlwiXCIpK1wiXCIuY29uY2F0KHQ/XCImY3c9MVwiOlwiXCIpK1wiXCIuY29uY2F0KGM/XCImcGJ0PTFcIjpcIlwiKStcIlwiLmNvbmNhdChyP1wiJmxzdz0xXCI6XCJcIil9KHAsZyxvLmJ1bmRsZSxpLGEsaCxlKSx2PXtzdWNjZXNzOmZ1bmN0aW9uKG8pe3ZhciBlLHI9SlNPTi5wYXJzZShvKTtpZihyLmFjd3NVcmw/KFwic3RyaW5nXCI9PXR5cGVvZiByLmFjd3NVcmw/W3IuYWN3c1VybF06ci5hY3dzVXJsKS5mb3JFYWNoKChmdW5jdGlvbihvKXtyZXR1cm4oMCx0LnRyaWdnZXJQaXhlbCkobyl9KSk6ci5idW5kbGUmJmIocyxyLmJ1bmRsZSxnKSxyLmJpZElkKXtiKGwsci5iaWRJZCxnKTt2YXIgYz17Y3JpdGVvSWQ6ci5iaWRJZH07bihjKX1lbHNlIG0oZT1sLFwiXCIsdSxnLCEwKSxkLnJlbW92ZURhdGFGcm9tTG9jYWxTdG9yYWdlKGUpLG4oKX0sZXJyb3I6ZnVuY3Rpb24obyl7KDAsdC5sb2dFcnJvcikoXCJjcml0ZW9JZFN5c3RlbTogdW5hYmxlIHRvIHN5bmMgdXNlciBpZFwiLG8pLG4oKX19OygwLHIuaCkoSSx2LHZvaWQgMCx7bWV0aG9kOlwiR0VUXCIsY29udGVudFR5cGU6XCJhcHBsaWNhdGlvbi9qc29uXCIsd2l0aENyZWRlbnRpYWxzOiEwfSl9KGksbixvKX19fX07KDAsaS5CeCkoXCJ1c2VySWRcIixoKSx3aW5kb3cub3dwYmpzLmluc3RhbGxlZE1vZHVsZXMucHVzaChcImNyaXRlb0lkU3lzdGVtXCIpfX0sZnVuY3Rpb24obyl7byhvLnM9ODI1Myl9XSk7XCJ1c2Ugc3RyaWN0XCI7KHNlbGYub3dwYmpzQ2h1bms9c2VsZi5vd3BianNDaHVua3x8W10pLnB1c2goW1sxNjE4XSx7NTk1NDpmdW5jdGlvbihlLHIsdCl7dmFyIG89dCgyNjUpLG49dCg5ODUzKSxhPXQoNDgwNiksaT10KDU3NTUpLHM9dCgzNDk0KSxjPXQoMjY2MSkscD10KDU4NDkpLGQ9dCg3NjAyKSx1PTMwLGc9XCJpZDVpZFwiLGw9XCJcIi5jb25jYXQoZyxcIl9wcml2YWN5XCIpLG09XCJodG1sNVwiLGY9XCJVc2VyIElEIC0gSUQ1IHN1Ym1vZHVsZTogXCIsdj1bXCJwYmpzLWlkNWlkXCIsXCJpZDVpZC4xc3RcIixcImlkNWlkXCJdLGI9KDAscC5kZikoe2d2bGlkOjEzMSxtb2R1bGVOYW1lOlwiaWQ1SWRcIn0pLHk9e25hbWU6XCJpZDVJZFwiLGd2bGlkOjEzMSxkZWNvZGU6ZnVuY3Rpb24oZSxyKXt2YXIgdD0wO2lmKGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLnVuaXZlcnNhbF91aWQpe3ZhciBpPXtpZDVpZDp7dWlkOmUudW5pdmVyc2FsX3VpZCxleHQ6e2xpbmtUeXBlOnQ9ZS5saW5rX3R5cGV8fHR9fX07c3dpdGNoKCgwLG8uWikoZSxcImFiX3Rlc3RpbmcucmVzdWx0XCIpKXtjYXNlXCJjb250cm9sXCI6KDAsbi5sb2dJbmZvKShmK1wiQS9CIFRlc3RpbmcgLSB1c2VyIGlzIGluIHRoZSBDb250cm9sIEdyb3VwOiBJRDUgSUQgaXMgTk9UIGV4cG9zZWRcIiksKDAsYS5aKShpLFwiaWQ1aWQuZXh0LmFiVGVzdGluZ0NvbnRyb2xHcm91cFwiLCEwKTticmVhaztjYXNlXCJlcnJvclwiOigwLG4ubG9nRXJyb3IpKGYrXCJBL0IgVGVzdGluZyBFUlJPUiEgY29udHJvbEdyb3VwUGN0IG11c3QgYmUgYSBudW1iZXIgPj0gMCBhbmQgPD0gMVwiKTticmVhaztjYXNlXCJub3JtYWxcIjooMCxuLmxvZ0luZm8pKGYrXCJBL0IgVGVzdGluZyAtIHVzZXIgaXMgTk9UIGluIHRoZSBDb250cm9sIEdyb3VwXCIpLCgwLGEuWikoaSxcImlkNWlkLmV4dC5hYlRlc3RpbmdDb250cm9sR3JvdXBcIiwhMSl9cmV0dXJuKDAsbi5sb2dJbmZvKShmK1wiRGVjb2RlZCBJRFwiLGkpLGl9fSxnZXRJZDpmdW5jdGlvbihlLHIsdCl7aWYoSShlKSl7dmFyIGEscz1cImh0dHBzOi8vaWQ1LXN5bmMuY29tL2cvdjIvXCIuY29uY2F0KGUucGFyYW1zLnBhcnRuZXIsXCIuanNvblwiKSxwPXImJlwiYm9vbGVhblwiPT10eXBlb2Ygci5nZHByQXBwbGllcyYmci5nZHByQXBwbGllcz8xOjAsZz1kLm5YLmdldENvbnNlbnREYXRhKCkseT0oMCxjLm4pKCksUz10JiZ0LnNpZ25hdHVyZT90LnNpZ25hdHVyZToodi5mb3JFYWNoKChmdW5jdGlvbihlKXtiLmdldENvb2tpZShlKSYmKGE9SlNPTi5wYXJzZShiLmdldENvb2tpZShlKSl8fGEpfSkpLGEmJmEuc2lnbmF0dXJlfHxcIlwiKSxDPXtwYXJ0bmVyOmUucGFyYW1zLnBhcnRuZXIsZ2RwcjpwLG5iUGFnZTpfKGUucGFyYW1zLnBhcnRuZXIpLG86XCJwYmpzXCIscmY6eS5yZWZlcmVyLHRvcDp5LnJlYWNoZWRUb3A/MTowLHU6eS5zdGFja1swXXx8d2luZG93LmxvY2F0aW9uLmhyZWYsdjpcIjYuMTguMFwifTshcHx8dm9pZCAwPT09ci5jb25zZW50U3RyaW5nfHwoMCxuLmlzRW1wdHkpKHIuY29uc2VudFN0cmluZyl8fCgwLG4uaXNFbXB0eVN0cikoci5jb25zZW50U3RyaW5nKXx8KEMuZ2Rwcl9jb25zZW50PXIuY29uc2VudFN0cmluZyksdm9pZCAwPT09Z3x8KDAsbi5pc0VtcHR5KShnKXx8KDAsbi5pc0VtcHR5U3RyKShnKXx8KEMudXNfcHJpdmFjeT1nKSx2b2lkIDA9PT1TfHwoMCxuLmlzRW1wdHlTdHIpKFMpfHwoQy5zPVMpLHZvaWQgMD09PWUucGFyYW1zLnBkfHwoMCxuLmlzRW1wdHlTdHIpKGUucGFyYW1zLnBkKXx8KEMucGQ9ZS5wYXJhbXMucGQpLHZvaWQgMD09PWUucGFyYW1zLnByb3ZpZGVyfHwoMCxuLmlzRW1wdHlTdHIpKGUucGFyYW1zLnByb3ZpZGVyKXx8KEMucHJvdmlkZXI9ZS5wYXJhbXMucHJvdmlkZXIpO3ZhciBFPWZ1bmN0aW9uKGUpe3JldHVybigwLG8uWikoZSxcInBhcmFtcy5hYlRlc3RpbmdcIix7ZW5hYmxlZDohMX0pfShlKTtyZXR1cm4hMD09PUUuZW5hYmxlZCYmKEMuYWJfdGVzdGluZz17ZW5hYmxlZDohMCxjb250cm9sX2dyb3VwX3BjdDpFLmNvbnRyb2xHcm91cFBjdH0pLHtjYWxsYmFjazpmdW5jdGlvbihyKXt2YXIgdD17c3VjY2VzczpmdW5jdGlvbih0KXt2YXIgbyxhO2lmKHQpdHJ5e289SlNPTi5wYXJzZSh0KSwoMCxuLmxvZ0luZm8pKGYrXCJyZXNwb25zZSByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXJcIixvKSxEKGUucGFyYW1zLnBhcnRuZXIsMCksby5wcml2YWN5JiZrKGwsSlNPTi5zdHJpbmdpZnkoby5wcml2YWN5KSx1KSxlLnN0b3JhZ2UudHlwZT09PW0mJihhPWUucGFyYW1zLnBhcnRuZXIsKDAsbi5sb2dJbmZvKShmK1wicmVtb3ZpbmcgbGVnYWN5IGNvb2tpZXNcIiksdi5mb3JFYWNoKChmdW5jdGlvbihlKXtiLnNldENvb2tpZShcIlwiLmNvbmNhdChlKSxcIiBcIixoKC0xKSksYi5zZXRDb29raWUoXCJcIi5jb25jYXQoZSxcIl9uYlwiKSxcIiBcIixoKC0xKSksYi5zZXRDb29raWUoXCJcIi5jb25jYXQoZSxcIl9cIikuY29uY2F0KGEsXCJfbmJcIiksXCIgXCIsaCgtMSkpLGIuc2V0Q29va2llKFwiXCIuY29uY2F0KGUsXCJfbGFzdFwiKSxcIiBcIixoKC0xKSl9KSkpfWNhdGNoKGUpeygwLG4ubG9nRXJyb3IpKGYrZSl9cihvKX0sZXJyb3I6ZnVuY3Rpb24oZSl7KDAsbi5sb2dFcnJvcikoZitcImdldElkIGZldGNoIGVuY291bnRlcmVkIGFuIGVycm9yXCIsZSkscigpfX07KDAsbi5sb2dJbmZvKShmK1wicmVxdWVzdGluZyBhbiBJRCBmcm9tIHRoZSBzZXJ2ZXJcIixDKSwoMCxpLmgpKHMsdCxKU09OLnN0cmluZ2lmeShDKSx7bWV0aG9kOlwiUE9TVFwiLHdpdGhDcmVkZW50aWFsczohMH0pfX19fSxleHRlbmRJZDpmdW5jdGlvbihlLHIsdCl7cmV0dXJuIEkoZSksXyhlJiZlLnBhcmFtcyYmZS5wYXJhbXMucGFydG5lcnx8MCksKDAsbi5sb2dJbmZvKShmK1widXNpbmcgY2FjaGVkIElEXCIsdCksdH19O2Z1bmN0aW9uIEkoZSl7cmV0dXJuIGUmJmUucGFyYW1zJiZlLnBhcmFtcy5wYXJ0bmVyJiZcIm51bWJlclwiPT10eXBlb2YgZS5wYXJhbXMucGFydG5lcj9lLnN0b3JhZ2UmJmUuc3RvcmFnZS50eXBlJiZlLnN0b3JhZ2UubmFtZT8oZS5zdG9yYWdlLnR5cGUhPT1tJiYoMCxuLmxvZ1dhcm4pKGYrXCJzdG9yYWdlIHR5cGUgcmVjb21tZW5kZWQgdG8gYmUgJ1wiLmNvbmNhdChtLFwiJy4gSW4gYSBmdXR1cmUgcmVsZWFzZSB0aGlzIG1heSBiZWNvbWUgYSBzdHJpY3QgcmVxdWlyZW1lbnRcIikpLGUuc3RvcmFnZS5uYW1lIT09ZyYmKDAsbi5sb2dXYXJuKShmK1wic3RvcmFnZSBuYW1lIHJlY29tbWVuZGVkIHRvIGJlICdcIi5jb25jYXQoZyxcIicuIEluIGEgZnV0dXJlIHJlbGVhc2UgdGhpcyBtYXkgYmVjb21lIGEgc3RyaWN0IHJlcXVpcmVtZW50XCIpKSwhMCk6KCgwLG4ubG9nRXJyb3IpKGYrXCJzdG9yYWdlIHJlcXVpcmVkIHRvIGJlIHNldFwiKSwhMSk6KCgwLG4ubG9nRXJyb3IpKGYrXCJwYXJ0bmVyIHJlcXVpcmVkIHRvIGJlIGRlZmluZWQgYXMgYSBudW1iZXJcIiksITEpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkrODY0ZTUqZSkudG9VVENTdHJpbmcoKX1mdW5jdGlvbiBTKGUpe3JldHVyblwiXCIuY29uY2F0KGcsXCJfXCIpLmNvbmNhdChlLFwiX25iXCIpfWZ1bmN0aW9uIEQoZSxyKXtrKFMoZSkscix1KX1mdW5jdGlvbiBfKGUpe3ZhciByPWZ1bmN0aW9uKGUpe3ZhciByLHQsbz0ocj1TKGUpLFwiXCI9PT0odD1iLmdldERhdGFGcm9tTG9jYWxTdG9yYWdlKFwiXCIuY29uY2F0KHIsXCJfZXhwXCIpKSl8fHQmJm5ldyBEYXRlKHQpLmdldFRpbWUoKS1EYXRlLm5vdygpPjA/Yi5nZXREYXRhRnJvbUxvY2FsU3RvcmFnZShyKTooYi5yZW1vdmVEYXRhRnJvbUxvY2FsU3RvcmFnZShyKSxudWxsKSk7cmV0dXJuIG8/cGFyc2VJbnQobyk6MH0oZSkrMTtyZXR1cm4gRChlLHIpLHJ9ZnVuY3Rpb24gayhlLHIsdCl7Yi5zZXREYXRhSW5Mb2NhbFN0b3JhZ2UoXCJcIi5jb25jYXQoZSxcIl9leHBcIiksaCh0KSksYi5zZXREYXRhSW5Mb2NhbFN0b3JhZ2UoXCJcIi5jb25jYXQoZSkscil9KDAscy5CeCkoXCJ1c2VySWRcIix5KSx3aW5kb3cub3dwYmpzLmluc3RhbGxlZE1vZHVsZXMucHVzaChcImlkNUlkU3lzdGVtXCIpfX0sZnVuY3Rpb24oZSl7ZShlLnM9NTk1NCl9XSk7XCJ1c2Ugc3RyaWN0XCI7KHNlbGYub3dwYmpzQ2h1bms9c2VsZi5vd3BianNDaHVua3x8W10pLnB1c2goW1s5MTE0XSx7NDE2MDpmdW5jdGlvbihlLHQsbil7dmFyIGk9big5ODUzKSxvPW4oMjY1KSxyPW4oNTc1NSkscz1uKDM0OTQpLGQ9KDAsbig1ODQ5KS5kZikoKSxjPXtuYW1lOlwiaWRlbnRpdHlMaW5rXCIsZ3ZsaWQ6OTcsZGVjb2RlOmZ1bmN0aW9uKGUpe3JldHVybntpZGxfZW52OmV9fSxnZXRJZDpmdW5jdGlvbihlLHQpe3ZhciBuPWUmJmUucGFyYW1zfHx7fTtpZihuJiZcInN0cmluZ1wiPT10eXBlb2Ygbi5waWQpe3ZhciByPXQmJlwiYm9vbGVhblwiPT10eXBlb2YgdC5nZHByQXBwbGllcyYmdC5nZHByQXBwbGllcz8xOjAscz1yP3QuY29uc2VudFN0cmluZzpcIlwiLGQ9Mj09PW8uWih0LFwidmVuZG9yRGF0YS50Y2ZQb2xpY3lWZXJzaW9uXCIpO2lmKCFyfHxzJiZcIlwiIT09cyl7dmFyIGM9XCJodHRwczovL2FwaS5ybGNkbi5jb20vYXBpL2lkZW50aXR5L2VudmVsb3BlP3BpZD1cIi5jb25jYXQobi5waWQpLmNvbmNhdChyPyhkP1wiJmN0PTQmY3Y9XCI6XCImY3Q9MSZjdj1cIikrczpcIlwiKTtyZXR1cm57Y2FsbGJhY2s6ZnVuY3Rpb24oZSl7d2luZG93LmF0cz8oaS5sb2dJbmZvKFwiaWRlbnRpdHlMaW5rOiBBVFMgZXhpc3RzIVwiKSx3aW5kb3cuYXRzLnJldHJpZXZlRW52ZWxvcGUoKGZ1bmN0aW9uKHQpe3Q/KGkubG9nSW5mbyhcImlkZW50aXR5TGluazogQW4gZW52ZWxvcGUgY2FuIGJlIHJldHJpZXZlZCBmcm9tIEFUUyFcIiksYSghMCksZShKU09OLnBhcnNlKHQpLmVudmVsb3BlKSk6bChjLGUsbil9KSkpOmwoYyxlLG4pfX19aS5sb2dJbmZvKFwiaWRlbnRpdHlMaW5rOiBDb25zZW50IHN0cmluZyBpcyByZXF1aXJlZCB0byBjYWxsIGVudmVsb3BlIEFQSS5cIil9ZWxzZSBpLmxvZ0Vycm9yKFwiaWRlbnRpdHlMaW5rOiByZXF1aXJlcyBwYXJ0bmVyIGlkIHRvIGJlIGRlZmluZWRcIil9fTtmdW5jdGlvbiBsKGUsdCxuKXt2YXIgbyxzPXtzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciBuO2lmKGUpdHJ5e249SlNPTi5wYXJzZShlKX1jYXRjaChlKXtpLmxvZ0luZm8oZSl9dChuJiZuLmVudmVsb3BlP24uZW52ZWxvcGU6XCJcIil9LGVycm9yOmZ1bmN0aW9uKGUpe2kubG9nSW5mbyhcImlkZW50aXR5TGluazogaWRlbnRpdHlMaW5rOiBJRCBmZXRjaCBlbmNvdW50ZXJlZCBhbiBlcnJvclwiLGUpLHQoKX19O24ubm90VXNlM1B8fGQuZ2V0Q29va2llKFwiX2xyX3JldHJ5X3JlcXVlc3RcIil8fCgobz1uZXcgRGF0ZSkuc2V0VGltZShvLmdldFRpbWUoKSszNmU1KSxkLnNldENvb2tpZShcIl9scl9yZXRyeV9yZXF1ZXN0XCIsXCJ0cnVlXCIsby50b1VUQ1N0cmluZygpKSxpLmxvZ0luZm8oXCJpZGVudGl0eUxpbms6IEEgM1AgcmV0cmlldmFsIGlzIGF0dGVtcHRlZCFcIiksYSghMSksKDAsci5oKShlLHMsdm9pZCAwLHttZXRob2Q6XCJHRVRcIix3aXRoQ3JlZGVudGlhbHM6ITB9KSl9ZnVuY3Rpb24gYShlKXt2YXIgdD1uZXcgRGF0ZTt0LnNldFRpbWUodC5nZXRUaW1lKCkrMjU5MmU2KSxkLnNldENvb2tpZShcIl9scl9lbnZfc3JjX2F0c1wiLGUsdC50b1VUQ1N0cmluZygpKX0oMCxzLkJ4KShcInVzZXJJZFwiLGMpLHdpbmRvdy5vd3BianMuaW5zdGFsbGVkTW9kdWxlcy5wdXNoKFwiaWRlbnRpdHlMaW5rSWRTeXN0ZW1cIil9fSxmdW5jdGlvbihlKXtlKGUucz00MTYwKX1dKTtcInVzZSBzdHJpY3RcIjsoc2VsZi5vd3BianNDaHVuaz1zZWxmLm93cGJqc0NodW5rfHxbXSkucHVzaChbWzMzOTBdLHs1OTAyOmZ1bmN0aW9uKGUsbix0KXt2YXIgcj10KDk4NTMpLG89dCg1NzU1KSxpPXQoMzQ5NCk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxhKGUpfXZhciBjPW5ldyBSZWdFeHAoXCJeXCIuY29uY2F0KFwiWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9XCIsXCIkXCIpLFwiaVwiKTtmdW5jdGlvbiB1KGUpe3JldHVyblwib2JqZWN0XCI9PT1hKGUpP0pTT04uc3RyaW5naWZ5KGUpOlwiXCIrZX1mdW5jdGlvbiBmKGUpe3JldHVybiBudWxsIT1lJiZkKGUpLmxlbmd0aD4wfWZ1bmN0aW9uIGwoZSl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBzPSEhU3RyaW5nLnByb3RvdHlwZS50cmltO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIHM/KFwiXCIrZSkudHJpbSgpOihcIlwiK2UpLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLFwiXCIpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGV9ZnVuY3Rpb24gaChlLG4pe3JldHVybiBwKGUpJiZwKG4pJiZkKGUudG9Mb3dlckNhc2UoKSk9PT1kKG4udG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gdihlKXtyZXR1cm4hIWUmJlwib2JqZWN0XCI9PT1hKGUpJiYhbChlKX1mdW5jdGlvbiBnKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlfWZ1bmN0aW9uIG0oZSl7cmV0dXJuIHkoZSw4NjRlNSl9ZnVuY3Rpb24geShlLG4pe3JldHVybiBuZXcgRGF0ZSgobmV3IERhdGUpLmdldFRpbWUoKStlKm4pfWZ1bmN0aW9uIHcoZSxuLHQpe3JldHVybiBmKG4pP1tlLGcodCk/dChuKTpuXTpbXX1mdW5jdGlvbiBTKGUsbil7cmV0dXJuIHcoZSxuLChmdW5jdGlvbihlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpfSkpfWZ1bmN0aW9uIGIoZSxuLHQpe3JldHVybiB3KGUsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KGUpKX0pKX1mdW5jdGlvbiBDKGUsbix0KXtyZXR1cm4gZihuKSYmZyh0KSYmdChuKT9bZSxlbmNvZGVVUklDb21wb25lbnQobildOltdfWZ1bmN0aW9uIEkoZSxuKXt2YXIgdD17fSxyPWZ1bmN0aW9uKGUpe3JldHVybiB2KGUpP2U6e319LG89cihlKSxpPXIobik7cmV0dXJuIE9iamVjdC5rZXlzKG8pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09b1tlXX0pKSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWlbZV19KSksdH12YXIgeD1cIl9fbGlfX2V2dF9idXNcIixFPVwibGlfZXJyb3JzXCIsTz1cImxpcHNcIixSPVwicHJlX2xpcHNcIixrPVwiX2xpX2R1aWRcIixqPTEsVT01ZTMsTD1cImh0dHBzOi8vaWR4LmxpYWRtLmNvbS9pZGV4XCI7ZnVuY3Rpb24gRChlLG4pe3dpbmRvdyYmd2luZG93W3hdJiZ3aW5kb3dbeF0uZW1pdChlLG4pfWZ1bmN0aW9uIE4oZSxuKXtEKGUsbil9ZnVuY3Rpb24gXyhlLG4pe0EoZSxuLm1lc3NhZ2Usbil9ZnVuY3Rpb24gQShlLG4pe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxyPW5ldyBFcnJvcihufHx0Lm1lc3NhZ2UpO3Iuc3RhY2s9dC5zdGFjayxyLm5hbWU9ZXx8XCJ1bmtub3duIGVycm9yXCIsci5saW5lTnVtYmVyPXQubGluZU51bWJlcixyLmNvbHVtbk51bWJlcj10LmNvbHVtbk51bWJlcixEKEUscil9dmFyIEY9MDtmdW5jdGlvbiBUKGUsbix0LHIpe3ZhciBvPWUmJmUuY29sbGVjdG9yVXJsfHxcImh0dHBzOi8vcnAubGlhZG0uY29tXCI7ZnVuY3Rpb24gaShlKXthKGUsXCJwXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBuLnBpeGVsR2V0KGUsdCl9KSl9ZnVuY3Rpb24gYShlLG4sdCl7aWYoZS5zZW5kc1BpeGVsKCkpe2cocikmJnIoKTt2YXIgaT1TKFwiZHRzdG1wXCIsYygpKSxhPWUuYXNRdWVyeSgpLnByZXBlbmRQYXJhbShpKS50b1F1ZXJ5U3RyaW5nKCk7dChcIlwiLmNvbmNhdChvLFwiL1wiKS5jb25jYXQobikuY29uY2F0KGEpKX19ZnVuY3Rpb24gYygpe3ZhciBlPW5ldyBEYXRlO3JldHVybiBuZXcgRGF0ZShlLnRvVVRDU3RyaW5nKCkpLmdldFRpbWUoKStlLmdldE1pbGxpc2Vjb25kcygpfXJldHVybntzZW5kQWpheDpmdW5jdGlvbihlKXthKGUsXCJqXCIsKGZ1bmN0aW9uKHIpe24uYWpheEdldChyLChmdW5jdGlvbihlKXtnKHQpJiZ0KCksZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PUpTT04ucGFyc2UoZSkuYmFrZXJzO2lmKGwodCkpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspbi5waXhlbEdldChcIlwiLmNvbmNhdCh0W3JdLFwiP2R0c3RtcD1cIikuY29uY2F0KGMoKSkpfWNhdGNoKGUpe0EoXCJDYWxsQmFrZXJzXCIsXCJFcnJvciB3aGlsZSBjYWxsaW5nIGJha2Vyc1wiLGUpfX0oZSl9KSwoZnVuY3Rpb24obil7aShlKSxBKFwiQWpheEZhaWxlZFwiLG4ubWVzc2FnZSxuKX0pLEYpfSkpfSxzZW5kUGl4ZWw6aX19ZnVuY3Rpb24gTShlKXt0aGlzLnNpemU9cGFyc2VJbnQoZSl8fDUsdGhpcy5oPXt9LHRoaXMucT17fX1NLnByb3RvdHlwZT17b246ZnVuY3Rpb24oZSxuLHQpeyh0aGlzLmhbZV18fCh0aGlzLmhbZV09W10pKS5wdXNoKHtmbjpuLGN0eDp0fSk7Zm9yKHZhciByPSh0aGlzLnFbZV18fFtdKS5sZW5ndGgsbz0wO288cjtvKyspbi5hcHBseSh0LHRoaXMucVtlXVtvXSk7cmV0dXJuIHRoaXN9LG9uY2U6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPXRoaXMsbz10aGlzLnFbZV18fFtdO2lmKG8ubGVuZ3RoPjApcmV0dXJuIG4uYXBwbHkodCxvWzBdKSx0aGlzO3ZhciBpPWZ1bmN0aW9uIG8oKXtyLm9mZihlLG8pLG4uYXBwbHkodCxhcmd1bWVudHMpfTtyZXR1cm4gaS5fPW4sdGhpcy5vbihlLGksdCl9LGVtaXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHQ9KHRoaXMuaFtlXXx8W10pLnNsaWNlKCkscj0wLG89dC5sZW5ndGg7cjxvO3IrKyl0W3JdLmZuLmFwcGx5KHRbcl0uY3R4LG4pO3ZhciBpPXRoaXMucVtlXXx8KHRoaXMucVtlXT1bXSk7cmV0dXJuIGkubGVuZ3RoPj10aGlzLnNpemUmJmkuc2hpZnQoKSxpLnB1c2gobiksdGhpc30sb2ZmOmZ1bmN0aW9uKGUsbil7dmFyIHQ9dGhpcy5oW2VdLHI9W107aWYodCYmbilmb3IodmFyIG89MCxpPXQubGVuZ3RoO288aTtvKyspdFtvXS5mbiE9PW4mJnRbb10uZm4uXyE9PW4mJnIucHVzaCh0W29dKTtyZXR1cm4gci5sZW5ndGg/dGhpcy5oW2VdPXI6ZGVsZXRlIHRoaXMuaFtlXSx0aGlzfX07dmFyIFA9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCI7ZnVuY3Rpb24gRyhlKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgbjtmb3IoZT1cIlwiLmNvbmNhdChlKSxuPTA7bjxlLmxlbmd0aDtuKyspaWYoZS5jaGFyQ29kZUF0KG4pPjI1NSlyZXR1cm4gbnVsbDt2YXIgdCxyPVwiXCI7Zm9yKG49MDtuPGUubGVuZ3RoO24rPTMpe3ZhciBvPVt2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDBdO29bMF09ZS5jaGFyQ29kZUF0KG4pPj4yLG9bMV09KDMmZS5jaGFyQ29kZUF0KG4pKTw8NCxlLmxlbmd0aD5uKzEmJihvWzFdfD1lLmNoYXJDb2RlQXQobisxKT4+NCxvWzJdPSgxNSZlLmNoYXJDb2RlQXQobisxKSk8PDIpLGUubGVuZ3RoPm4rMiYmKG9bMl18PWUuY2hhckNvZGVBdChuKzIpPj42LG9bM109NjMmZS5jaGFyQ29kZUF0KG4rMikpO2Zvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKXZvaWQgMD09PW9baV0/cis9XCI9XCI6cis9KHQ9b1tpXSk+PTAmJnQ8NjQ/UFt0XTp2b2lkIDB9cmV0dXJuIHJ9KGUpO3JldHVybiBufHxcIlwifXZhciBKPS9bKy9dfD0rJC9nLFE9e1wiK1wiOlwiLVwiLFwiL1wiOlwiX1wifTtmdW5jdGlvbiBWKGUpe3JldHVybiBRW2VdfHxcIlwifWZ1bmN0aW9uIEgoZSl7dmFyIG49bnVsbCx0PWVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lKFswLTlBLUZdezJ9KS9nLChmdW5jdGlvbihlLG4pe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFwiMHhcIituKX0pKTt0cnl7bj13aW5kb3cmJmcod2luZG93LmJ0b2EpP3dpbmRvdy5idG9hOkd9Y2F0Y2goZSl7bj1HfXJldHVybiBuKHQpLnJlcGxhY2UoSixWKX1mb3IodmFyIFc9W10scT0wO3E8NjQ7KVdbcV09MHw0Mjk0OTY3Mjk2Kk1hdGguc2luKCsrcSVNYXRoLlBJKTtmdW5jdGlvbiB6KGUpe3ZhciBuLHQscixvPVtuPTE3MzI1ODQxOTMsdD00MDIzMjMzNDE3LH5uLH50XSxpPVtdLGE9dW5lc2NhcGUoZW5jb2RlVVJJKGUpKStcInUwMDgwXCIsYz1hLmxlbmd0aDtmb3IoZT0tLWMvNCsyfDE1LGlbLS1lXT04KmM7fmM7KWlbYz4+Ml18PWEuY2hhckNvZGVBdChjKTw8OCpjLS07Zm9yKHE9YT0wO3E8ZTtxKz0xNil7Zm9yKGM9bzthPDY0O2M9W3I9Y1szXSxuKygocj1jWzBdK1tuJnR8fm4mcixyJm58fnImdCxuXnRecix0XihufH5yKV1bYz1hPj40XStXW2FdK35+aVtxfDE1JlthLDUqYSsxLDMqYSs1LDcqYV1bY11dKTw8KGM9WzcsMTIsMTcsMjIsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNiwxMCwxNSwyMV1bNCpjK2ErKyU0XSl8cj4+Pi1jKSxuLHRdKW49MHxjWzFdLHQ9Y1syXTtmb3IoYT00O2E7KW9bLS1hXSs9Y1thXX1mb3IoZT1cIlwiO2E8MzI7KWUrPShvW2E+PjNdPj40KigxXmErKykmMTUpLnRvU3RyaW5nKDE2KTtyZXR1cm4gZX1mdW5jdGlvbiBCKGUpe3ZhciBuLHQscixvLGksYT1bXSxjPVt0PTE3MzI1ODQxOTMscj00MDIzMjMzNDE3LH50LH5yLDMyODUzNzc1MjBdLHU9W10sZj11bmVzY2FwZShlbmNvZGVVUkkoZSkpK1widTAwODBcIixsPWYubGVuZ3RoO2Zvcih1W2U9LS1sLzQrMnwxNV09OCpsO35sOyl1W2w+PjJdfD1mLmNoYXJDb2RlQXQobCk8PDgqfmwtLTtmb3Iobj1sPTA7bjxlO24rPTE2KXtmb3IodD1jO2w8ODA7dD1bdFs0XSsoYVtsXT1sPDE2P35+dVtuK2xdOjIqZnxmPDApKzE1MTg1MDAyNDkrW3Imb3x+ciZpLGY9MzQxMjc1MTQ0KyhyXm9eaSksODgyNDU5NDU5KyhyJm98ciZpfG8maSksZisxNTM1Njk0Mzg5XVtsKysvNT4+Ml0rKChmPXRbMF0pPDw1fGY+Pj4yNyksZixyPDwzMHxyPj4+MixvLGldKWY9YVtsLTNdXmFbbC04XV5hW2wtMTRdXmFbbC0xNl0scj10WzFdLG89dFsyXSxpPXRbM107Zm9yKGw9NTtsOyljWy0tbF0rPXRbbF19Zm9yKGY9XCJcIjtsPDQwOylmKz0oY1tsPj4zXT4+NCooNy1sKyspJjE1KS50b1N0cmluZygxNik7cmV0dXJuIGZ9Zm9yKHZhciAkLFg9MTgsSz1bXSxZPVtdO1g+MTtYLS0pZm9yKCQ9WDskPDMyMDspS1skKz1YXT0xO2Z1bmN0aW9uIFooZSxuKXtyZXR1cm4gNDI5NDk2NzI5NipNYXRoLnBvdyhlLDEvbil8MH1mb3IoJD0wOyQ8NjQ7KUtbKytYXXx8KFlbJF09WihYLDIpLEtbJCsrXT1aKFgsMykpO2Z1bmN0aW9uIGVlKGUsbil7cmV0dXJuIGU+Pj5ufGU8PC1ufWZ1bmN0aW9uIG5lKGUpe3ZhciBuPVkuc2xpY2UoWD0kPTAsOCksdD1bXSxyPXVuZXNjYXBlKGVuY29kZVVSSShlKSkrXCJ1MDA4MFwiLG89ci5sZW5ndGg7Zm9yKHRbZT0tLW8vNCsyfDE1XT04Km87fm87KXRbbz4+Ml18PXIuY2hhckNvZGVBdChvKTw8OCp+by0tO2ZvcihvPVtdO1g8ZTtYKz0xNil7Zm9yKFo9bi5zbGljZSgpOyQ8NjQ7Wi51bnNoaWZ0KHIrKGVlKHI9WlswXSwyKV5lZShyLDEzKV5lZShyLDIyKSkrKHImWlsxXV5aWzFdJlpbMl1eWlsyXSZyKSkpWlszXSs9cj0wfChvWyRdPSQ8MTY/fn50WyQrWF06KGVlKHI9b1skLTJdLDE3KV5lZShyLDE5KV5yPj4+MTApK29bJC03XSsoZWUocj1vWyQtMTVdLDcpXmVlKHIsMTgpXnI+Pj4zKStvWyQtMTZdKStaLnBvcCgpKyhlZShyPVpbNF0sNileZWUociwxMSleZWUociwyNSkpKyhyJlpbNV1efnImWls2XSkrS1skKytdO2ZvcigkPTg7JDspblstLSRdKz1aWyRdfWZvcihyPVwiXCI7JDw2NDspcis9KG5bJD4+M10+PjQqKDctJCsrKSYxNSkudG9TdHJpbmcoMTYpO3JldHVybiByfXZhciB0ZT1mdW5jdGlvbigpe3JldHVybi8oXFxzKyk/W2EtZjAtOV17MzIsNjR9KFxccyspPy9naX0scmU9ezMyOlwibWQ1XCIsNDA6XCJzaGExXCIsNjQ6XCJzaGEyNTZcIn07ZnVuY3Rpb24gb2UoZSl7dmFyIG49aWUoZSk7cmV0dXJuISFuJiZudWxsIT1yZVtuLmxlbmd0aF19ZnVuY3Rpb24gaWUoZSl7dmFyIG49ZS5tYXRjaCh0ZSgpKTtyZXR1cm4gbiYmbi5tYXAoZClbMF19ZnVuY3Rpb24gYWUoZSl7dmFyIG49ZS50b0xvd2VyQ2FzZSgpO3JldHVybnttZDU6eihuKSxzaGExOkIobiksc2hhMjU2Om5lKG4pfX12YXIgY2U9ZnVuY3Rpb24oKXtyZXR1cm4vXFxTKyhAfCU0MClcXFMrXFwuXFxTKy99O2Z1bmN0aW9uIHVlKGUpe2Zvcih2YXIgbj1mdW5jdGlvbihlKXtmb3IodmFyIG49W10sdD1uZXcgUmVnRXhwKFwiKFtcXFxcd1xcXFxkListXSsoQHwlNDApW1xcXFx3XFxcXGQtXSsuW1xcXFx3XFxcXGQuLV0rKVwiLFwiZ1wiKSxyPXQuZXhlYyhlKTtyOyluLnB1c2goZChyWzFdKSkscj10LmV4ZWMoZSk7cmV0dXJuIG59KGUpLHQ9W10scj1lLG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIGk9bltvXSxhPWFlKGkpO3I9ci5yZXBsYWNlKGksYS5tZDUpLHQucHVzaChhKX1yZXR1cm57c3RyaW5nV2l0aG91dFJhd0VtYWlsczpyLGhhc2hlc0Zyb21PcmlnaW5hbFN0cmluZzp0fX12YXIgZmU9XCIqKioqKioqKipcIjtmdW5jdGlvbiBsZShlLG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBuJiYodD1kKG4pLGNlKCkudGVzdCh0KSk/ZmU6bjt2YXIgdH12YXIgc2U9W1wiaXRlbXNcIixcIml0ZW1pZHNcIl0sZGU9W1wiZW1haWxcIixcImVtYWlsaGFzaFwiLFwiaGFzaFwiLFwiaGFzaGVkZW1haWxcIl0scGU9W2Z1bmN0aW9uKGUpe2Zvcih2YXIgbix0PWUuZXZlbnRTb3VyY2Uscj0wLG89T2JqZWN0LmtleXModCk7cjxvLmxlbmd0aDtyKyspe3ZhciBpPW9bcl0sYT1pLnRvTG93ZXJDYXNlKCk7aWYoZGUuaW5kZXhPZihhKT4tMSl7dmFyIGM9ZCh1KHRbaV0pKSxmPShuPXZvaWQgMCwobj1jLm1hdGNoKGNlKCkpKSYmbi5tYXAoZClbMF0pLGw9aWUoYyk7aWYoZil7dmFyIHM9YWUoZGVjb2RlVVJJQ29tcG9uZW50KGYpKTtyZXR1cm4gSSh7aGFzaGVkRW1haWw6W3MubWQ1LHMuc2hhMSxzLnNoYTI1Nl19LGUpfWlmKGwmJm9lKGwpKXJldHVybiBJKHtoYXNoZWRFbWFpbDpbbC50b0xvd2VyQ2FzZSgpXX0sZSl9fXJldHVybiBlfSxmdW5jdGlvbihlKXt2YXIgbj1lLmV2ZW50U291cmNlO3JldHVybiBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLnRvTG93ZXJDYXNlKCk7c2UuaW5kZXhPZih0KT4tMSYmbChuW2VdKSYmbltlXS5sZW5ndGg+MTAmJihuW2VdLmxlbmd0aD0xMCl9KSkse319XSxoZT1mdW5jdGlvbihlKXt2YXIgbj1cIlwiO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PTA9PT1uLmxlbmd0aD9cIj9cIjpcIiZcIjtlJiZlLmxlbmd0aCYmMj09PWUubGVuZ3RoJiZlWzBdJiZlWzFdJiYobj1cIlwiLmNvbmNhdChuKS5jb25jYXQodCkuY29uY2F0KGVbMF0sXCI9XCIpLmNvbmNhdChlWzFdKSl9KSksbn07ZnVuY3Rpb24gdmUoZSl7cmV0dXJuLTE9PT1lLmluZGV4T2YoXCIlXCIpP2U6ZGVjb2RlVVJJQ29tcG9uZW50KGUpfWZ1bmN0aW9uIGdlKGUpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm5cImZhbHNlXCIhPT1lJiYoXCJ0cnVlXCI9PT1lfHxlKX0oZnVuY3Rpb24oZSl7cmV0dXJuXCJudWxsXCI9PT1lfHxcInVuZGVmaW5lZFwiPT09ZT9udWxsOmV9KGZ1bmN0aW9uKGUpe3JldHVybiBpc05hTigrZSk/ZTorZX0oZSkpKX12YXIgbWU9W1wic2V0ZW1haWxcIixcInNldGVtYWlsaGFzaFwiLFwic2V0aGFzaGVkZW1haWxcIl0seWU9W1tcImFwcElkXCIsZnVuY3Rpb24oZSl7cmV0dXJuIFMoXCJhaWRcIixlKX1dLFtcImV2ZW50U291cmNlXCIsZnVuY3Rpb24oZSl7cmV0dXJuIHcoXCJzZVwiLGUsKGZ1bmN0aW9uKGUpe3JldHVybiBIKEpTT04uc3RyaW5naWZ5KGUsbGUpKX0pKX1dLFtcImxpdmVDb25uZWN0SWRcIixmdW5jdGlvbihlKXtyZXR1cm4gUyhcImR1aWRcIixlKX1dLFtcInRyYWNrZXJOYW1lXCIsZnVuY3Rpb24oZSl7cmV0dXJuIFMoXCJ0bmFcIixlKX1dLFtcInBhZ2VVcmxcIixmdW5jdGlvbihlKXtyZXR1cm4gUyhcInB1XCIsZSl9XSxbXCJlcnJvckRldGFpbHNcIixmdW5jdGlvbihlKXtyZXR1cm4gdyhcImFlXCIsZSwoZnVuY3Rpb24oZSl7cmV0dXJuIEgoSlNPTi5zdHJpbmdpZnkoZSkpfSkpfV0sW1wicmV0cmlldmVkSWRlbnRpZmllcnNcIixmdW5jdGlvbihlKXt2YXIgbj1bXTtyZXR1cm4gbChlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gbi5wdXNoKFMoXCJleHRfXCIuY29uY2F0KGUubmFtZSksZS52YWx1ZSkpfSkpLG59XSxbXCJoYXNoZXNGcm9tSWRlbnRpZmllcnNcIixmdW5jdGlvbihlKXt2YXIgbj1bXTtyZXR1cm4gbChlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gbi5wdXNoKFMoXCJzY3JlXCIsXCJcIi5jb25jYXQoZS5tZDUsXCIsXCIpLmNvbmNhdChlLnNoYTEsXCIsXCIpLmNvbmNhdChlLnNoYTI1NikpKX0pKSxufV0sW1wiZGVjaXNpb25JZHNcIixmdW5jdGlvbihlKXtyZXR1cm4gYihcImxpX2RpZFwiLGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlLmpvaW4oXCIsXCIpfSkpfV0sW1wiaGFzaGVkRW1haWxcIixmdW5jdGlvbihlKXtyZXR1cm4gYihcImVcIixlLChmdW5jdGlvbihlKXtyZXR1cm4gZS5qb2luKFwiLFwiKX0pKX1dLFtcInVzUHJpdmFjeVN0cmluZ1wiLGZ1bmN0aW9uKGUpe3JldHVybiBTKFwidXNfcHJpdmFjeVwiLGUpfV0sW1wid3JhcHBlck5hbWVcIixmdW5jdGlvbihlKXtyZXR1cm4gUyhcIndwblwiLGUpfV0sW1wiZ2RwckFwcGxpZXNcIixmdW5jdGlvbihlKXtyZXR1cm4gYihcImdkcHJcIixlLChmdW5jdGlvbihlKXtyZXR1cm4gZT8xOjB9KSl9XSxbXCJwcml2YWN5TW9kZVwiLGZ1bmN0aW9uKGUpe3JldHVybiBDKFwibjNwY1wiLGU/MTowLChmdW5jdGlvbihlKXtyZXR1cm4gMT09PWV9KSl9XSxbXCJwcml2YWN5TW9kZVwiLGZ1bmN0aW9uKGUpe3JldHVybiBDKFwibjNwY3RcIixlPzE6MCwoZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfSkpfV0sW1wicHJpdmFjeU1vZGVcIixmdW5jdGlvbihlKXtyZXR1cm4gQyhcIm5iXCIsZT8xOjAsKGZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX0pKX1dLFtcImdkcHJDb25zZW50XCIsZnVuY3Rpb24oZSl7cmV0dXJuIFMoXCJnZHByX2NvbnNlbnRcIixlKX1dLFtcInJlZmVycmVyXCIsZnVuY3Rpb24oZSl7cmV0dXJuIFMoXCJyZWZyXCIsZSl9XSxbXCJjb250ZXh0RWxlbWVudHNcIixmdW5jdGlvbihlKXtyZXR1cm4gUyhcImNcIixlKX1dXTtmdW5jdGlvbiB3ZShlKXtyZXR1cm4gd2UucHJlcGVuZFBhcmFtPWZ1bmN0aW9uKG4pe3ZhciB0PWU7cmV0dXJuIHQudW5zaGlmdChuKSxuZXcgd2UodCl9LHdlLnRvUXVlcnlTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaGUoZSl9LHdlfWZ1bmN0aW9uIFNlKGUpe3ZhciBuPXt9O2Z1bmN0aW9uIHQoKXt2YXIgZT1bXTtyZXR1cm4geWUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9dFswXSxvPW5bcl0saT10WzFdKG8pO2kmJmkubGVuZ3RoJiYoaVswXWluc3RhbmNlb2YgQXJyYXk/ZT1lLmNvbmNhdChpKTplLnB1c2goaSkpfSkpLGV9cmV0dXJuIGUmJihuPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHYoZS5ldmVudFNvdXJjZSk/cGUucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBJKGUsbihlKSl9KSxlKTplfShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKSl9Y2F0Y2goZSl7cmV0dXJuIEEoXCJTdGF0ZUNvbWJpbmVXaXRoXCIsXCJFcnJvciB3aGlsZSBleHRyYWN0aW5nIGV2ZW50IGRhdGFcIixlKSxufX0oZSkpLHtkYXRhOm4sY29tYmluZVdpdGg6ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBTZShJKGUsbikpfSxhc1F1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB3ZSh0KCkpfSxhc1R1cGxlczp0LHNlbmRzUGl4ZWw6ZnVuY3Rpb24oKXt2YXIgZT12KG4uZXZlbnRTb3VyY2UpP24uZXZlbnRTb3VyY2U6e30sdD1PYmplY3Qua2V5cyhlKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVyblwiZXZlbnRuYW1lXCI9PT1lLnRvTG93ZXJDYXNlKCl8fFwiZXZlbnRcIj09PWUudG9Mb3dlckNhc2UoKX0pKSxyPXQmJnQubGVuZ3RoPj0xJiZ0WzBdLG89ciYmZChuLmV2ZW50U291cmNlW3JdKTtyZXR1cm4hb3x8LTE9PT1tZS5pbmRleE9mKG8udG9Mb3dlckNhc2UoKSl9fX1mdW5jdGlvbiBiZSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3c7cmV0dXJuIHhlKChmdW5jdGlvbigpe3JldHVybiBlLnRvcC5kb2N1bWVudC5yZWZlcnJlcn0pKX1mdW5jdGlvbiBDZSgpe2Zvcih2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3csdD14ZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnN9KSl8fHt9LHI9W10sbz1uO28hPT10b3A7KXIucHVzaChvKSxvPW8ucGFyZW50O3IucHVzaChvKTtmb3IodmFyIGk9ZnVuY3Rpb24obil7ZT14ZSgoZnVuY3Rpb24oKXtyZXR1cm4gcltuXS5sb2NhdGlvbi5ocmVmfSkpLDAhPT1uJiYoZXx8KGU9eGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHJbbi0xXS5kb2N1bWVudC5yZWZlcnJlcn0pKSksZXx8KGU9dFtuLTFdKSl9LGE9ci5sZW5ndGgtMTthPj0wJiYhZTthLS0paShhKTtyZXR1cm4gZX1mdW5jdGlvbiBJZShlLG4sdCl7aWYoIWUmJm4mJlwiXCIhPT1uJiZ0KXt2YXIgcj1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD13aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKSxyPVwiXCIsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgaT1yK3VlKHRbb10ub3V0ZXJIVE1MKS5zdHJpbmdXaXRob3V0UmF3RW1haWxzO2lmKHZvaWQgMCxhPWVuY29kZVVSSShpKS5zcGxpdCgvJS4ufC4vKS5sZW5ndGgtMSwhKDQqTWF0aC5jZWlsKGEvMyk8PW4pKXJldHVybiByO3I9aX12YXIgYTtyZXR1cm4gcn0obix0KTtyZXR1cm4gSChyKX1yZXR1cm5cIlwifWZ1bmN0aW9uIHhlKGUpe3RyeXtyZXR1cm4gZSgpfWNhdGNoKGUpe3JldHVybn19dmFyIEVlPW51bGw7ZnVuY3Rpb24gT2UoZSl7cmV0dXJuIEVlfHwoRWU9e3BhZ2VVcmw6Q2UoKSxyZWZlcnJlcjpiZSgpLGNvbnRleHRFbGVtZW50czpJZShlLnByaXZhY3lNb2RlLGUuY29udGV4dFNlbGVjdG9ycyxlLmNvbnRleHRFbGVtZW50c0xlbmd0aCl9KSxFZX12YXIgUmU9bnVsbCxrZT1udWxsLGplPTEyMCxVZT17ZXJyb3JEZXRhaWxzOnttZXNzYWdlOlwiVW5rbm93biBtZXNzYWdlXCIsbmFtZTpcIlVua25vd24gbmFtZVwifX07ZnVuY3Rpb24gTGUoZSl7dHJ5e3ZhciBuPTEqZTtyZXR1cm4gaXNOYU4obik/dm9pZCAwOm59Y2F0Y2goZSl7fX1mdW5jdGlvbiBEZShlKXt0cnl7cmV0dXJuIGUmJmUubGVuZ3RoJiZlLmxlbmd0aD5qZT9cIlwiLmNvbmNhdChlLnN1YnN0cigwLGplKSxcIi4uLlwiKTplfWNhdGNoKGUpe319ZnVuY3Rpb24gTmUoZSl7a2UmJmtlLnNlbmRQaXhlbChuZXcgU2UoZnVuY3Rpb24oZSl7cmV0dXJuIGU/e2Vycm9yRGV0YWlsczp7bWVzc2FnZTpEZShlLm1lc3NhZ2UpLG5hbWU6RGUoZS5uYW1lKSxzdGFja1RyYWNlOkRlKGUuc3RhY2spLGxpbmVOdW1iZXI6TGUoZS5saW5lTnVtYmVyKSxsaW5lQ29sdW1uOkxlKGUubGluZUNvbHVtbiksZmlsZU5hbWU6RGUoZS5maWxlTmFtZSl9fTpVZX0oZSkpLmNvbWJpbmVXaXRoKFJlfHx7fSkuY29tYmluZVdpdGgoT2Uoe30pKSl9dmFyIF9lLEFlLEZlPVwiMDEyMzQ1Njc4OUFCQ0RFRkdISktNTlBRUlNUVldYWVpcIixUZT1GZS5sZW5ndGgsTWU9TWF0aC5wb3coMiw0OCktMSxQZT0xMCxHZT0xNixKZT0oX2U9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6bnVsbCwoQWU9X2UmJihfZS5jcnlwdG98fF9lLm1zQ3J5cHRvKSk/ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gQWUuZ2V0UmFuZG9tVmFsdWVzKGUpLGVbMF0vMjU1fTpmdW5jdGlvbigpe3JldHVybiBNYXRoLnJhbmRvbSgpfSk7dmFyIFFlPVwiX2xjMl9mcGlcIixWZT1cIl9saV9kY2RtX2NcIixIZT03MzA7ZnVuY3Rpb24gV2UoZSxuKXt0cnl7dmFyIHQ9ZS5leHBpcmF0aW9uRGF5c3x8SGUscj1mdW5jdGlvbigpe3ZhciBlPW4uZ2V0Q29va2llKFZlKTtpZihlKXJldHVybiBlO2Zvcih2YXIgdD1kb2N1bWVudC5kb21haW58fGRvY3VtZW50LmxvY2F0aW9uJiZkb2N1bWVudC5sb2NhdGlvbi5ob3N0fHx3aW5kb3cmJndpbmRvdy5sb2NhdGlvbiYmd2luZG93LmxvY2F0aW9uLmhvc3R8fFwibG9jYWxob3N0XCIscj10LnNwbGl0KFwiLlwiKSxvPXIubGVuZ3RoO28+MDtvLS0pe3ZhciBpPVwiLlwiLmNvbmNhdChyLnNsaWNlKG8tMSxyLmxlbmd0aCkuam9pbihcIi5cIikpO2lmKG4uc2V0Q29va2llKFZlLGksdm9pZCAwLFwiTGF4XCIsaSksbi5nZXRDb29raWUoVmUpKXJldHVybiBpfXJldHVyblwiLlwiLmNvbmNhdCh0KX0oKSxvPXtleHBpcmVzOnQsZG9tYWluOnJ9LGk9ZnVuY3Rpb24oZSx0KXt0cnl7dmFyIHI9bi5nZXQoZSksaT1tKG8uZXhwaXJlcyk7cmV0dXJuIHI/bi5zZXQoZSxyLGksby5kb21haW4pOm4uc2V0KGUsdCxpLG8uZG9tYWluKSxuLmdldChlKX1jYXRjaChlKXtyZXR1cm4gQShcIkNvb2tpZUxzR2V0T3JBZGRcIixcIkZhaWxlZCBtYW5pcHVsYXRpbmcgY29va2llIGphciBvciBsc1wiLGUpLG51bGx9fShRZSwoYT1cIlwiLmNvbmNhdChmdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MTI7cmV0dXJuIEIoZS5yZXBsYWNlKC9eXFwuLyxcIlwiKSkuc3Vic3RyaW5nKDAsbil9KHIpLFwiLS1cIikuY29uY2F0KGZ1bmN0aW9uKGUsbil7aWYoZT5NZSl0aHJvdyh0PW5ldyBFcnJvcihcImNhbm5vdCBlbmNvZGUgdGltZSBncmVhdGVyIHRoYW4gXCIrTWUpKS5zb3VyY2U9XCJVbGlkXCIsdDtmb3IodmFyIHQscixvPVwiXCI7bj4wO24tLSlyPWUlVGUsbz1GZS5jaGFyQXQocikrbyxlPShlLXIpL1RlO3JldHVybiBvfShEYXRlLm5vdygpLFBlKStmdW5jdGlvbihlKXtmb3IodmFyIG49XCJcIjtlPjA7ZS0tKXQ9dm9pZCAwLCh0PU1hdGguZmxvb3IoSmUoKSpUZSkpPT09VGUmJih0PVRlLTEpLG49RmUuY2hhckF0KHQpK247dmFyIHQ7cmV0dXJuIG59KEdlKSksYS50b0xvY2FsZUxvd2VyQ2FzZSgpKSk7cmV0dXJuIGkmJm4uc2V0RGF0YUluTG9jYWxTdG9yYWdlKGssaSkse2RvbWFpbjpyLGxpdmVDb25uZWN0SWQ6aSxwZW9wbGVWZXJpZmllZElkOml9fWNhdGNoKGUpe3JldHVybiBBKFwiSWRlbnRpZmllcnNSZXNvbHZlXCIsXCJFcnJvciB3aGlsZSBtYW5hZ2luZyBpZGVudGlmaWVyc1wiLGUpLHt9fXZhciBhfXZhciBxZT1tKDMwKSx6ZT1cImxpX2RpZFwiLEJlPVwibGlkaWRzLlwiLCRlPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gdC5pbmRleE9mKGUpPT09bn0sWGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlJiZjLnRlc3QoZChlKSl9KGUpfSxLZT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZChlKS5sZW5ndGg+MH07ZnVuY3Rpb24gWWUoZSxuKXt2YXIgdCxyLG8saSxhLGM9e307dHJ5e3ZhciB1PWUucGFnZVVybCYmKHQ9ZS5wYWdlVXJsLGE9e30sdCYmLTEhPT0ocj10LmluZGV4T2YoXCI/XCIpKSYmKG89dC5zbGljZShyKzEpKSYmKC0xPT09KGk9by5pbmRleE9mKFwiI1wiKSl8fChvPW8uc2xpY2UoMCxpKSkpPyhvLnNwbGl0KFwiJlwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlKXtpZihcIltdXCI9PT0oZT0oKGU9ZS5zcGxpdChcIj1cIikpJiYyPT09ZS5sZW5ndGg/ZTpbZVswXSxcInRydWVcIl0pLm1hcCh2ZSkpWzBdLnNsaWNlKC0yKSYmKGFbZVswXT1lWzBdLnNsaWNlKDAsLTIpXT1hW2VbMF1dfHxbXSksIWFbZVswXV0pcmV0dXJuIGFbZVswXV09Z2UoZVsxXSk7bChhW2VbMF1dKT9hW2VbMF1dLnB1c2goZ2UoZVsxXSkpOmFbZVswXV09W2FbZVswXV0sZ2UoZVsxXSldfX0pKSxhKTphKXx8e30sZj1bXS5jb25jYXQodVt6ZV18fFtdKSxzPW4uZmluZFNpbWlsYXJDb29raWVzKEJlKTtmLm1hcChkKS5maWx0ZXIoS2UpLmZpbHRlcihYZSkuZmlsdGVyKCRlKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gcj10LG89ZS5kb21haW4sdm9pZChyJiZuLnNldENvb2tpZShcIlwiLmNvbmNhdChCZSkuY29uY2F0KHIpLHIscWUsXCJMYXhcIixvKSk7dmFyIHIsb30pKSxjPXtkZWNpc2lvbklkczpmLmNvbmNhdChzKS5tYXAoZCkuZmlsdGVyKEtlKS5maWx0ZXIoWGUpLmZpbHRlcigkZSl9fWNhdGNoKGUpe0EoXCJEZWNpc2lvbnNSZXNvbHZlXCIsXCJFcnJvciB3aGlsZSBtYW5hZ2luZyBkZWNpc2lvbiBpZHNcIixlKX1yZXR1cm4gY31mdW5jdGlvbiBaZShlLG4pe3RyeXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmb3IodmFyIHQ9W10scj1bXSxvPTA7bzxlLmxlbmd0aDtvKyspe3ZhciBpPWVbb10sYT1uLmdldENvb2tpZShpKXx8bi5nZXREYXRhRnJvbUxvY2FsU3RvcmFnZShpKTtpZihhKXt2YXIgYz11ZSh1KGEpKTt0LnB1c2goe25hbWU6aSx2YWx1ZTpjLnN0cmluZ1dpdGhvdXRSYXdFbWFpbHN9KSxyPXIuY29uY2F0KGMuaGFzaGVzRnJvbU9yaWdpbmFsU3RyaW5nKX19cmV0dXJue3JldHJpZXZlZElkZW50aWZpZXJzOnQsaGFzaGVzRnJvbUlkZW50aWZpZXJzOmVuKHIpfX0oZnVuY3Rpb24oZSl7dmFyIG49W107ZS5pZGVudGlmaWVyc1RvUmVzb2x2ZSYmKGwoZS5pZGVudGlmaWVyc1RvUmVzb2x2ZSk/bj1lLmlkZW50aWZpZXJzVG9SZXNvbHZlOnAoZS5pZGVudGlmaWVyc1RvUmVzb2x2ZSkmJihuPWUuaWRlbnRpZmllcnNUb1Jlc29sdmUuc3BsaXQoXCIsXCIpKSk7Zm9yKHZhciB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XT1uW3RdLnRyaW0oKTtyZXR1cm4gbn0oZSksbil9Y2F0Y2goZSl7cmV0dXJuIF8oXCJJZGVudGlmaWVyc0VucmljaGVyXCIsZSkse319fWZ1bmN0aW9uIGVuKGUpe2Zvcih2YXIgbj17fSx0PVtdLHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLm1kNSBpbiBufHwodC5wdXNoKGVbcl0pLG5bZVtyXS5tZDVdPSEwKTtyZXR1cm4gdH12YXIgbm49XCJfX2xpX2lkZXhfY2FjaGVcIjtmdW5jdGlvbiB0bihlKXtpZihlKXt2YXIgbj1IKEpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm5cIlwiLmNvbmNhdChubixcIl9cIikuY29uY2F0KG4pfXJldHVybiBubn1mdW5jdGlvbiBybihlLG4sdCl7dHJ5e3ZhciByPWV8fHt9LG89ci5pZGVudGl0eVJlc29sdXRpb25Db25maWd8fHt9LGk9ci5yZXRyaWV2ZWRJZGVudGlmaWVyc3x8W10sYT1vLmV4cGlyYXRpb25Ib3Vyc3x8aixjPW8uc291cmNlfHxcInVua25vd25cIix1PW8ucHVibGlzaGVySWR8fFwiYW55XCIsZj1vLnVybHx8TCxzPW8uYWpheFRpbWVvdXR8fFUsZD1bXTtkLnB1c2goUyhcImR1aWRcIixyLnBlb3BsZVZlcmlmaWVkSWQpKSxkLnB1c2goUyhcInVzX3ByaXZhY3lcIixyLnVzUHJpdmFjeVN0cmluZykpLGQucHVzaCh3KFwiZ2RwclwiLHIuZ2RwckFwcGxpZXMsKGZ1bmN0aW9uKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZT8xOjApfSkpKSxkLnB1c2goQyhcIm4zcGNcIixyLnByaXZhY3lNb2RlPzE6MCwoZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lfSkpKSxkLnB1c2goUyhcImdkcHJfY29uc2VudFwiLHIuZ2RwckNvbnNlbnQpKSxpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2QucHVzaChTKGUubmFtZSxlLnZhbHVlKSl9KSk7dmFyIHA9ZnVuY3Rpb24oZSl7dmFyIG49ZC5zbGljZSgpLmNvbmNhdChmdW5jdGlvbihlKXtpZihlJiZ2KGUpKXt2YXIgbj1bXTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9ZVt0XTtyJiYhdihyKSYmci5sZW5ndGgmJihsKHIpP3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ucHVzaChbZW5jb2RlVVJJQ29tcG9uZW50KHQpLGVuY29kZVVSSUNvbXBvbmVudChlKV0pfSkpOm4ucHVzaChbZW5jb2RlVVJJQ29tcG9uZW50KHQpLGVuY29kZVVSSUNvbXBvbmVudChyKV0pKX0pKSxufXJldHVybltdfShlKSksdD1oZShuKTtyZXR1cm5cIlwiLmNvbmNhdChmLFwiL1wiKS5jb25jYXQoYyxcIi9cIikuY29uY2F0KHUpLmNvbmNhdCh0KX07cmV0dXJue3Jlc29sdmU6ZnVuY3Rpb24oZSxvLGkpe3RyeXshZnVuY3Rpb24oZSxvLGkpe3ZhciBjPW4uZ2V0KHRuKGkpKTtjP2UoSlNPTi5wYXJzZShjKSk6dC5hamF4R2V0KHAoaSksZnVuY3Rpb24oZSxuLHQscixvKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIGE9e307aWYoaSl0cnl7YT1KU09OLnBhcnNlKGkpfWNhdGNoKGUpe18oXCJJZGVudGl0eVJlc29sdmVyUGFyc2VyXCIsZSl9dHJ5e2Uuc2V0KHRuKG8pLEpTT04uc3RyaW5naWZ5KGEpLHkodCwzNmU1KSxuKX1jYXRjaChlKXtfKFwiSWRlbnRpdHlSZXNvbHZlclN0b3JhZ2VcIixlKX1yKGEpfX0obixyLmRvbWFpbixhLGUsaSksbyxzKX0oZSxvLGkpfWNhdGNoKGUpe28oKSxfKFwiSWRlbnRpdHlSZXNvbHZlXCIsZSl9fSxnZXRVcmw6ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSl9fX1jYXRjaChlKXtyZXR1cm4gXyhcIklkZW50aXR5UmVzb2x2ZXJcIixlKSx7cmVzb2x2ZTpmdW5jdGlvbihuLHQpe3QoKSxfKFwiSWRlbnRpdHlSZXNvbHZlci5yZXNvbHZlXCIsZSl9LGdldFVybDpmdW5jdGlvbigpe18oXCJJZGVudGl0eVJlc29sdmVyLmdldFVybFwiLGUpfX19fXZhciBvbj17Y29va2llOlwiY29va2llXCIsbG9jYWxTdG9yYWdlOlwibHNcIixub25lOlwibm9uZVwiLGRpc2FibGVkOlwiZGlzYWJsZWRcIn0sYW49ZnVuY3Rpb24oKXt9LGNuPWZ1bmN0aW9uKCl7fSx1bj17fTtmdW5jdGlvbiBmbihlLG4sdCl7aWYoZSYmdihlKSlpZihlLmNvbmZpZylBKFwiU3RyYXlDb25maWdcIixcIlJlY2VpdmVkIGEgY29uZmlnIGFmdGVyIExDIGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWRcIixuZXcgRXJyb3IoZSkpO2Vsc2V7dmFyIHI9dC5jb21iaW5lV2l0aCh7ZXZlbnRTb3VyY2U6ZX0pO3VuLmhhc2hlZEVtYWlsPXVuLmhhc2hlZEVtYWlsfHxyLmRhdGEuaGFzaGVkRW1haWw7dmFyIG89SSh7ZXZlbnRTb3VyY2U6ZX0sdW4pO24uc2VuZEFqYXgodC5jb21iaW5lV2l0aChvKSl9ZWxzZSBBKFwiRXZlbnROb3RBbk9iamVjdFwiLFwiUmVjZWl2ZWQgZXZlbnQgd2FzIG5vdCBhbiBvYmplY3RcIixuZXcgRXJyb3IoZSkpfXZhciBsbj1mdW5jdGlvbihlLG4sdCl7dHJ5e3ZhciByPXdpbmRvdy5saVF8fFtdLG89dihlKSYmZXx8e307aWYod2luZG93JiYod2luZG93LmxpUT1mdW5jdGlvbihlKXt0cnl7aWYod2luZG93JiZ3aW5kb3cubGlRJiZ3aW5kb3cubGlRLnJlYWR5KXt2YXIgbj13aW5kb3cubGlRLmNvbmZpZyYmZnVuY3Rpb24oZSxuKXtpZihlLmFwcElkIT09bi5hcHBJZHx8ZS53cmFwcGVyTmFtZSE9PW4ud3JhcHBlck5hbWV8fGUuY29sbGVjdG9yVXJsIT09bi5jb2xsZWN0b3JVcmwpcmV0dXJue2FwcElkOltlLmFwcElkLG4uYXBwSWRdLHdyYXBwZXJOYW1lOltlLndyYXBwZXJOYW1lLG4ud3JhcHBlck5hbWVdLGNvbGxlY3RvclVybDpbZS5jb2xsZWN0b3JVcmwsbi5jb2xsZWN0b3JVcmxdfX0od2luZG93LmxpUS5jb25maWcsZSk7aWYobil7dmFyIHQ9bmV3IEVycm9yO3QubmFtZT1cIkNvbmZpZ1NlbnRcIix0Lm1lc3NhZ2U9XCJBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcmVjZWl2ZWRcIixBKFwiTENEdXBsaWNhdGlvblwiLEpTT04uc3RyaW5naWZ5KG4pLHQpfXJldHVybiB3aW5kb3cubGlRfX1jYXRjaChlKXt9fShvKXx8ZnVuY3Rpb24oZSxuLHQpe3RyeXshZnVuY3Rpb24oZSxuKXtlfHwoZT01KTt0cnl7cmV0dXJuIHdpbmRvd3x8bihuZXcgRXJyb3IoXCJCdXMgY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gdGhlIHdpbmRvdywgd2hpY2ggaXMgbm90IHByZXNlbnRcIikpLHdpbmRvdyYmIXdpbmRvd1t4XSYmKHdpbmRvd1t4XT1uZXcgTShlKSksd2luZG93W3hdfWNhdGNoKGUpe24oZSl9fSgpO3ZhciByPWZ1bmN0aW9uKGUpe3ZhciBuPVtdO2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUmJmVbdF0mJmcoZVt0XSk/ZVt0XToobi5wdXNoKHQpLGNuKX12YXIgcj17YWpheEdldDp0KFwiYWpheEdldFwiKSxwaXhlbEdldDp0KFwicGl4ZWxHZXRcIil9O3JldHVybiBuLmxlbmd0aD4wJiZBKFwiQ2FsbEhhbmRsZXJcIixcIlRoZSBjYWxsIGZ1bmN0aW9ucyAnXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KG4pLFwiJyBhcmUgbm90IHByb3ZpZGVkXCIpKSxyfSh0KSxvPUkoZSxmKHk9ZSkmJmYoeS5nZHByQXBwbGllcyk/e3ByaXZhY3lNb2RlOiEheS5nZHByQXBwbGllc306e30pOyFmdW5jdGlvbihlLG4pe3RyeXt3aW5kb3cmJndpbmRvd1t4XSYmZyh3aW5kb3dbeF0ub24pJiZ3aW5kb3dbeF0ub24oRSxOZSksa2U9bmV3IFQoZSxuKSxSZT1lfHx7fX1jYXRjaChlKXt9fShvLHIpO3ZhciBpPWZ1bmN0aW9uKGUsbil7dmFyIHQ9W107ZnVuY3Rpb24gcihyKXt2YXIgbz1uJiZuW3JdJiZnKG5bcl0pO3JldHVybiBoKGUsb24uZGlzYWJsZWQpP2FuOm8/bltyXToodC5wdXNoKHIpLGFuKX12YXIgbz1mdW5jdGlvbihuKXtyZXR1cm4gaChlLG9uLm5vbmUpP2FuOnIobil9LGk9e2xvY2FsU3RvcmFnZUlzRW5hYmxlZDpvKFwibG9jYWxTdG9yYWdlSXNFbmFibGVkXCIpLGdldENvb2tpZTpyKFwiZ2V0Q29va2llXCIpLHNldENvb2tpZTpvKFwic2V0Q29va2llXCIpLGdldERhdGFGcm9tTG9jYWxTdG9yYWdlOnIoXCJnZXREYXRhRnJvbUxvY2FsU3RvcmFnZVwiKSxyZW1vdmVEYXRhRnJvbUxvY2FsU3RvcmFnZTpvKFwicmVtb3ZlRGF0YUZyb21Mb2NhbFN0b3JhZ2VcIiksc2V0RGF0YUluTG9jYWxTdG9yYWdlOm8oXCJzZXREYXRhSW5Mb2NhbFN0b3JhZ2VcIiksZmluZFNpbWlsYXJDb29raWVzOnIoXCJmaW5kU2ltaWxhckNvb2tpZXNcIil9O3JldHVybiB0Lmxlbmd0aD4wJiZBKFwiU3RvcmFnZUhhbmRsZXJcIixcIlRoZSBzdG9yYWdlIGZ1bmN0aW9ucyAnXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHQpLFwiJyBhcmUgbm90IHByb3ZpZGVkXCIpKSx7Z2V0OmZ1bmN0aW9uKG4pe2lmKGgoZSxvbi5ub25lKXx8aChlLG9uLmRpc2FibGVkKSlyZXR1cm4gbnVsbDtpZihoKGUsb24ubG9jYWxTdG9yYWdlKSl7aWYoaS5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQoKSl7dmFyIHQ9XCJcIi5jb25jYXQobixcIl9leHBcIikscj1pLmdldERhdGFGcm9tTG9jYWxTdG9yYWdlKHQpO3JldHVybiByJiZEYXRlLnBhcnNlKHIpPD0obmV3IERhdGUpLmdldFRpbWUoKSYmaS5yZW1vdmVEYXRhRnJvbUxvY2FsU3RvcmFnZShuKSxpLmdldERhdGFGcm9tTG9jYWxTdG9yYWdlKG4pfXJldHVybiBudWxsfXJldHVybiBpLmdldENvb2tpZShuKX0sc2V0OmZ1bmN0aW9uKG4sdCxyLG8pe2lmKGgoZSxvbi5ub25lKXx8aChlLG9uLmRpc2FibGVkKSk7ZWxzZSBpZihoKGUsb24ubG9jYWxTdG9yYWdlKSl7aWYoaS5sb2NhbFN0b3JhZ2VJc0VuYWJsZWQoKSl7dmFyIGE9XCJcIi5jb25jYXQobixcIl9leHBcIik7aS5zZXREYXRhSW5Mb2NhbFN0b3JhZ2Uobix0KSxpLnNldERhdGFJbkxvY2FsU3RvcmFnZShhLFwiXCIuY29uY2F0KHIpKX19ZWxzZSBpLnNldENvb2tpZShuLHQsci50b1VUQ1N0cmluZygpLFwiTGF4XCIsbyl9LGxvY2FsU3RvcmFnZUlzRW5hYmxlZDppLmxvY2FsU3RvcmFnZUlzRW5hYmxlZCxnZXRDb29raWU6aS5nZXRDb29raWUsc2V0Q29va2llOmkuc2V0Q29va2llLGdldERhdGFGcm9tTG9jYWxTdG9yYWdlOmkuZ2V0RGF0YUZyb21Mb2NhbFN0b3JhZ2UscmVtb3ZlRGF0YUZyb21Mb2NhbFN0b3JhZ2U6aS5yZW1vdmVEYXRhRnJvbUxvY2FsU3RvcmFnZSxzZXREYXRhSW5Mb2NhbFN0b3JhZ2U6aS5zZXREYXRhSW5Mb2NhbFN0b3JhZ2UsZmluZFNpbWlsYXJDb29raWVzOmkuZmluZFNpbWlsYXJDb29raWVzfX0oby5wcml2YWN5TW9kZT9vbi5kaXNhYmxlZDpvLnN0b3JhZ2VTdHJhdGVneSxuKSxhPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29tYmluZVdpdGgobihlLmRhdGEsaSkpfSxjPVtXZSxZZV0sdT1bT2UsWmVdLnJlZHVjZShhLG5ldyBTZShvKSkscz1jLnJlZHVjZShhLHUpLGQ9SShvLHtwZW9wbGVWZXJpZmllZElkOnMuZGF0YS5wZW9wbGVWZXJpZmllZElkfSkscD1uZXcgVChvLHIsKGZ1bmN0aW9uKCl7cmV0dXJuIE4oTyxkKX0pLChmdW5jdGlvbigpe3JldHVybiBOKFIsXCIwXCIpfSkpLHY9cm4ocy5kYXRhLGksciksbT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KGUpLHQ9MDt0PGU7dCsrKW5bdF09YXJndW1lbnRzW3RdO3JldHVybiBmdW5jdGlvbihlLG4sdCl7dHJ5e2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9ZTtsKHIpP3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGZuKGUsbix0KX0pKTpmbihyLG4sdCl9KSl9Y2F0Y2goZSl7QShcIkxDUHVzaFwiLFwiRmFpbGVkIHNlbmRpbmcgYW4gZXZlbnRcIixlKX19KG4scCxzKX07cmV0dXJue3B1c2g6bSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIG0oe30pfSxwZW9wbGVWZXJpZmllZElkOnMuZGF0YS5wZW9wbGVWZXJpZmllZElkLHJlYWR5OiEwLHJlc29sdmU6di5yZXNvbHZlLHJlc29sdXRpb25DYWxsVXJsOnYuZ2V0VXJsLGNvbmZpZzplfX1jYXRjaChlKXtBKFwiTENDb25zdHJ1Y3Rpb25cIixcIkZhaWxlZCB0byBidWlsZCBMQ1wiLGUpfXZhciB5fShvLG4sdCl8fHIpLGwocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspd2luZG93LmxpUS5wdXNoKHJbaV0pfWNhdGNoKGUpe0EoXCJMQ0NvbnN0cnVjdGlvblwiLFwiRmFpbGVkIHRvIGJ1aWxkIExDXCIsZSl9cmV0dXJuIHdpbmRvdy5saVF9O2Z1bmN0aW9uIHNuKGUsbix0KXt2YXIgcj12KGUpJiZlfHx7fTtyZXR1cm4gbG4ocixuLHQpfXZhciBkbj10KDc2MDIpLHBuPXQoNTg0OSk7ZnVuY3Rpb24gaG4oZSl7cmV0dXJuIGhuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LGhuKGUpfWZ1bmN0aW9uIHZuKGUpe3JldHVyblwib2JqZWN0XCI9PT1obihlKT9KU09OLnN0cmluZ2lmeShlKTpcIlwiK2V9ZnVuY3Rpb24gZ24oZSl7cmV0dXJuIG51bGwhPWUmJnduKGUpLmxlbmd0aD4wfWZ1bmN0aW9uIG1uKGUpe3JldHVyblwiW29iamVjdCBBcnJheV1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX12YXIgeW49ISFTdHJpbmcucHJvdG90eXBlLnRyaW07ZnVuY3Rpb24gd24oZSl7cmV0dXJuIHluPyhcIlwiK2UpLnRyaW0oKTooXCJcIitlKS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZyxcIlwiKX1mdW5jdGlvbiBTbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZX1mdW5jdGlvbiBibihlLG4pe3JldHVybiBTbihlKSYmU24obikmJnduKGUudG9Mb3dlckNhc2UoKSk9PT13bihuLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIENuKGUpe3JldHVybiEhZSYmXCJvYmplY3RcIj09PWhuKGUpJiYhbW4oZSl9ZnVuY3Rpb24gSW4oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24geG4oZSxuLHQpe3JldHVybiBnbihuKT9bZSxJbih0KT90KG4pOm5dOltdfWZ1bmN0aW9uIEVuKGUsbil7cmV0dXJuIHhuKGUsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKX0pKX1mdW5jdGlvbiBPbihlLG4pe3ZhciB0PXt9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIENuKGUpP2U6e319LG89cihlKSxpPXIobik7cmV0dXJuIE9iamVjdC5rZXlzKG8pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09b1tlXX0pKSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWlbZV19KSksdH12YXIgUm49ZnVuY3Rpb24oZSl7dmFyIG49XCJcIjtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD0wPT09bi5sZW5ndGg/XCI/XCI6XCImXCI7ZSYmZS5sZW5ndGgmJjI9PT1lLmxlbmd0aCYmZVswXSYmZVsxXSYmKG49XCJcIi5jb25jYXQobikuY29uY2F0KHQpLmNvbmNhdChlWzBdLFwiPVwiKS5jb25jYXQoZVsxXSkpfSkpLG59LGtuPVwiX19saV9fZXZ0X2J1c1wiLGpuPVwibGlfZXJyb3JzXCIsVW49XCJfbGlfZHVpZFwiLExuPTVlMyxEbj1cImh0dHBzOi8vaWR4LmxpYWRtLmNvbS9pZGV4XCI7ZnVuY3Rpb24gTm4oZSxuKXtfbihlLG4ubWVzc2FnZSxuKX1mdW5jdGlvbiBfbihlLG4pe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxyPW5ldyBFcnJvcihufHx0Lm1lc3NhZ2UpO3Iuc3RhY2s9dC5zdGFjayxyLm5hbWU9ZXx8XCJ1bmtub3duIGVycm9yXCIsci5saW5lTnVtYmVyPXQubGluZU51bWJlcixyLmNvbHVtbk51bWJlcj10LmNvbHVtbk51bWJlcixmdW5jdGlvbihlLG4pe3dpbmRvdyYmd2luZG93W2tuXSYmd2luZG93W2tuXS5lbWl0KGUsbil9KGpuLHIpfWZvcih2YXIgQW49W10sRm49MDtGbjw2NDspQW5bRm5dPTB8NDI5NDk2NzI5NipNYXRoLnNpbigrK0ZuJU1hdGguUEkpO2Zvcih2YXIgVG4sTW49MTgsUG49W10sR249W107TW4+MTtNbi0tKWZvcihUbj1NbjtUbjwzMjA7KVBuW1RuKz1Nbl09MTtmdW5jdGlvbiBKbihlLG4pe3JldHVybiA0Mjk0OTY3Mjk2Kk1hdGgucG93KGUsMS9uKXwwfWZvcihUbj0wO1RuPDY0OylQblsrK01uXXx8KEduW1RuXT1KbihNbiwyKSxQbltUbisrXT1KbihNbiwzKSk7dmFyIFFuPWZ1bmN0aW9uKCl7cmV0dXJuL1xcUysoQHwlNDApXFxTK1xcLlxcUysvfTtmdW5jdGlvbiBWbihlKXtyZXR1cm4gUW4oKS50ZXN0KGUpfXZhciBIbj17Y29va2llOlwiY29va2llXCIsbG9jYWxTdG9yYWdlOlwibHNcIixub25lOlwibm9uZVwiLGRpc2FibGVkOlwiZGlzYWJsZWRcIn0sV249ZnVuY3Rpb24oKXt9LHFuPWZ1bmN0aW9uKCl7fTtmdW5jdGlvbiB6bihlLG4sdCl7dHJ5e3ZhciByPWZ1bmN0aW9uKGUpe3ZhciBuPVtdO2Z1bmN0aW9uIHQodCl7cmV0dXJuIGUmJmVbdF0mJkluKGVbdF0pP2VbdF06KG4ucHVzaCh0KSxxbil9dmFyIHI9e2FqYXhHZXQ6dChcImFqYXhHZXRcIikscGl4ZWxHZXQ6dChcInBpeGVsR2V0XCIpfTtyZXR1cm4gbi5sZW5ndGg+MCYmX24oXCJDYWxsSGFuZGxlclwiLFwiVGhlIGNhbGwgZnVuY3Rpb25zICdcIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkobiksXCInIGFyZSBub3QgcHJvdmlkZWRcIikpLHJ9KHQpLG89T24oZSxnbihmPWUpJiZnbihmLmdkcHJBcHBsaWVzKT97cHJpdmFjeU1vZGU6ISFmLmdkcHJBcHBsaWVzfTp7fSksaT1mdW5jdGlvbihlLG4pe3ZhciB0PVtdO2Z1bmN0aW9uIHIocil7dmFyIG89biYmbltyXSYmSW4obltyXSk7cmV0dXJuIGJuKGUsSG4uZGlzYWJsZWQpP1duOm8/bltyXToodC5wdXNoKHIpLFduKX12YXIgbz17bG9jYWxTdG9yYWdlSXNFbmFibGVkOmJuKGUsSG4ubm9uZSk/V246cihcImxvY2FsU3RvcmFnZUlzRW5hYmxlZFwiKSxnZXRDb29raWU6cihcImdldENvb2tpZVwiKSxnZXREYXRhRnJvbUxvY2FsU3RvcmFnZTpyKFwiZ2V0RGF0YUZyb21Mb2NhbFN0b3JhZ2VcIil9O3JldHVybiB0Lmxlbmd0aD4wJiZfbihcIlN0b3JhZ2VIYW5kbGVyXCIsXCJUaGUgc3RvcmFnZSBmdW5jdGlvbnMgJ1wiLmNvbmNhdChKU09OLnN0cmluZ2lmeSh0KSxcIicgYXJlIG5vdCBwcm92aWRlZFwiKSksb30oby5wcml2YWN5TW9kZT9Ibi5kaXNhYmxlZDpvLnN0b3JhZ2VTdHJhdGVneSxuKSxhPU9uKG8sZnVuY3Rpb24oZSxuKXt0cnl7cmV0dXJue3Blb3BsZVZlcmlmaWVkSWQ6ZS5wZW9wbGVWZXJpZmllZElkfHxuLmdldERhdGFGcm9tTG9jYWxTdG9yYWdlKFVuKX19Y2F0Y2goZSl7cmV0dXJuIF9uKFwiUGVvcGxlVmVyaWZpZWRFbnJpY2hcIixlLm1lc3NhZ2UsZSkse319fShvLGkpKSxjPU9uKGEsZnVuY3Rpb24oZSxuKXt0cnl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZS5pZGVudGlmaWVyc1RvUmVzb2x2ZT1lLmlkZW50aWZpZXJzVG9SZXNvbHZlfHxbXTtmb3IodmFyIHQ9bW4oZS5pZGVudGlmaWVyc1RvUmVzb2x2ZSk/ZS5pZGVudGlmaWVyc1RvUmVzb2x2ZTp2bihlLmlkZW50aWZpZXJzVG9SZXNvbHZlKS5zcGxpdChcIixcIikscj1bXSxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBpPXduKHRbb10pLGE9bi5nZXRDb29raWUoaSl8fG4uZ2V0RGF0YUZyb21Mb2NhbFN0b3JhZ2UoaSk7IWF8fChjPXZuKGEpLFFuKCkudGVzdChjKSl8fFZuKHZuKGEpKXx8ci5wdXNoKHtuYW1lOmksdmFsdWU6dm4oYSl9KX12YXIgYztyZXR1cm57cmV0cmlldmVkSWRlbnRpZmllcnM6cn19KGUsbil9Y2F0Y2goZSl7cmV0dXJuIE5uKFwiSWRlbnRpZmllcnNFbnJpY2hcIixlKSx7fX19KGEsaSkpLHU9ZnVuY3Rpb24oZSxuKXt0cnl7dmFyIHQ9ZXx8e30scj10LmlkZW50aXR5UmVzb2x1dGlvbkNvbmZpZ3x8e30sbz10LnJldHJpZXZlZElkZW50aWZpZXJzfHxbXSxpPXIuc291cmNlfHxcInVua25vd25cIixhPXIucHVibGlzaGVySWR8fFwiYW55XCIsYz1yLnVybHx8RG4sdT1yLmFqYXhUaW1lb3V0fHxMbixmPVtdO2YucHVzaChFbihcImR1aWRcIix0LnBlb3BsZVZlcmlmaWVkSWQpKSxmLnB1c2goRW4oXCJ1c19wcml2YWN5XCIsdC51c1ByaXZhY3lTdHJpbmcpKSxmLnB1c2goeG4oXCJnZHByXCIsdC5nZHByQXBwbGllcywoZnVuY3Rpb24oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlPzE6MCl9KSkpLGYucHVzaCgocz10LnByaXZhY3lNb2RlPzE6MCxkPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZX0sZ24ocykmJkluKGQpJiZkKHMpP1tcIm4zcGNcIixlbmNvZGVVUklDb21wb25lbnQocyldOltdKSksZi5wdXNoKEVuKFwiZ2Rwcl9jb25zZW50XCIsdC5nZHByQ29uc2VudCkpLG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zi5wdXNoKEVuKGUubmFtZSxlLnZhbHVlKSl9KSk7dmFyIGw9ZnVuY3Rpb24oZSl7dmFyIG49Zi5zbGljZSgpLmNvbmNhdChmdW5jdGlvbihlKXtpZihlJiZDbihlKSl7dmFyIG49W107cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPWVbdF07ciYmIUNuKHIpJiZyLmxlbmd0aCYmKG1uKHIpP3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ucHVzaChbZW5jb2RlVVJJQ29tcG9uZW50KHQpLGVuY29kZVVSSUNvbXBvbmVudChlKV0pfSkpOm4ucHVzaChbZW5jb2RlVVJJQ29tcG9uZW50KHQpLGVuY29kZVVSSUNvbXBvbmVudChyKV0pKX0pKSxufXJldHVybltdfShlKSksdD1SbihuKTtyZXR1cm5cIlwiLmNvbmNhdChjLFwiL1wiKS5jb25jYXQoaSxcIi9cIikuY29uY2F0KGEpLmNvbmNhdCh0KX07cmV0dXJue3Jlc29sdmU6ZnVuY3Rpb24oZSx0LHIpe3RyeXshZnVuY3Rpb24oZSx0LHIpe24uYWpheEdldChsKHIpLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtpZihuKXRyeXt0PUpTT04ucGFyc2Uobil9Y2F0Y2goZSl7Tm4oXCJJZGVudGl0eVJlc29sdmVyUGFyc2VyXCIsZSl9ZSh0KX19KGUpLHQsdSl9KGUsdCxyKX1jYXRjaChlKXt0KCksTm4oXCJJZGVudGl0eVJlc29sdmVcIixlKX19LGdldFVybDpmdW5jdGlvbihlKXtyZXR1cm4gbChlKX19fWNhdGNoKGUpe3JldHVybiBObihcIklkZW50aXR5UmVzb2x2ZXJcIixlKSx7cmVzb2x2ZTpmdW5jdGlvbihuLHQpe3QoKSxObihcIklkZW50aXR5UmVzb2x2ZXIucmVzb2x2ZVwiLGUpfSxnZXRVcmw6ZnVuY3Rpb24oKXtObihcIklkZW50aXR5UmVzb2x2ZXIuZ2V0VXJsXCIsZSl9fX12YXIgcyxkfShjLHIpO3JldHVybntwdXNoOmZ1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cubGlRLnB1c2goZSl9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmxpUS5wdXNoKHt9KX0scGVvcGxlVmVyaWZpZWRJZDpjLnBlb3BsZVZlcmlmaWVkSWQscmVhZHk6ITAscmVzb2x2ZTp1LnJlc29sdmUscmVzb2x1dGlvbkNhbGxVcmw6dS5nZXRVcmwsY29uZmlnOmV9fWNhdGNoKGUpe312YXIgZn1mdW5jdGlvbiBCbihlLG4sdCl7dHJ5e3JldHVybiB3aW5kb3cmJih3aW5kb3cubGlRPXdpbmRvdy5saVF8fFtdKSx6bihDbihlKSYmZXx8e30sbix0KX1jYXRjaChlKXt9cmV0dXJue319ZnVuY3Rpb24gJG4oZSl7cmV0dXJuICRuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LCRuKGUpfWZ1bmN0aW9uIFhuKGUsbil7dmFyIHQ9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuJiYocj1yLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKS5lbnVtZXJhYmxlfSkpKSx0LnB1c2guYXBwbHkodCxyKX1yZXR1cm4gdH1mdW5jdGlvbiBLbihlKXtmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgdD1udWxsIT1hcmd1bWVudHNbbl0/YXJndW1lbnRzW25dOnt9O24lMj9YbihPYmplY3QodCksITApLmZvckVhY2goKGZ1bmN0aW9uKG4pe1luKGUsbix0W25dKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTpYbihPYmplY3QodCkpLmZvckVhY2goKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBZbihlLG4sdCl7cmV0dXJuKG49ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24oZSxuKXtpZihcIm9iamVjdFwiIT09JG4oZSl8fG51bGw9PT1lKXJldHVybiBlO3ZhciB0PWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT10KXt2YXIgcj10LmNhbGwoZSxcInN0cmluZ1wiKTtpZihcIm9iamVjdFwiIT09JG4ocikpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVyblwic3ltYm9sXCI9PT0kbihuKT9uOlN0cmluZyhuKX0obikpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVtuXT10LGV9dmFyIFpuPVwibGl2ZUludGVudElkXCIsZXQ9KDAscG4uZGYpKHtndmxpZDpudWxsLG1vZHVsZU5hbWU6Wm59KSxudD17YWpheEdldDpmdW5jdGlvbihlLG4sdCxyKXsoMCxvLk8pKHIpKGUse3N1Y2Nlc3M6bixlcnJvcjp0fSx2b2lkIDAse21ldGhvZDpcIkdFVFwiLHdpdGhDcmVkZW50aWFsczohMH0pfSxwaXhlbEdldDpmdW5jdGlvbihlLG4pe3JldHVybigwLHIudHJpZ2dlclBpeGVsKShlLG4pfX0sdHQ9ITEscnQ9bnVsbDtmdW5jdGlvbiBvdChlKXtpZihydClyZXR1cm4gcnQ7dmFyIG49e3NvdXJjZTpcInByZWJpZFwiLHB1Ymxpc2hlcklkOihlPWV8fHt9KS5wdWJsaXNoZXJJZHx8XCJhbnlcIn07ZS51cmwmJihuLnVybD1lLnVybCksZS5wYXJ0bmVyJiYobi5zb3VyY2U9ZS5wYXJ0bmVyKSxlLmFqYXhUaW1lb3V0JiYobi5hamF4VGltZW91dD1lLmFqYXhUaW1lb3V0KTt2YXIgdCxyLG89KHI9e30sKHQ9KHQ9ZS5saUNvbGxlY3RDb25maWcpfHx7fSkuYXBwSWQmJihyLmFwcElkPXQuYXBwSWQpLHQuZnBpU3RvcmFnZVN0cmF0ZWd5JiYoci5zdG9yYWdlU3RyYXRlZ3k9dC5mcGlTdG9yYWdlU3RyYXRlZ3kpLHQuZnBpRXhwaXJhdGlvbkRheXMmJihyLmV4cGlyYXRpb25EYXlzPXQuZnBpRXhwaXJhdGlvbkRheXMpLHQuY29sbGVjdG9yVXJsJiYoci5jb2xsZWN0b3JVcmw9dC5jb2xsZWN0b3JVcmwpLHIpO28ud3JhcHBlck5hbWU9XCJwcmViaWRcIixvLmlkZW50aXR5UmVzb2x1dGlvbkNvbmZpZz1uLG8uaWRlbnRpZmllcnNUb1Jlc29sdmU9ZS5pZGVudGlmaWVyc1RvUmVzb2x2ZXx8W10sZS5lbWFpbEhhc2gmJihvLmV2ZW50U291cmNlPXtoYXNoOmUuZW1haWxIYXNofSk7dmFyIGk9ZG4ublguZ2V0Q29uc2VudERhdGEoKTtpJiYoby51c1ByaXZhY3lTdHJpbmc9aSk7dmFyIGE9ZG4ucnAuZ2V0Q29uc2VudERhdGEoKTtyZXR1cm4gYSYmKG8uZ2RwckFwcGxpZXM9YS5nZHByQXBwbGllcyxvLmdkcHJDb25zZW50PWEuY29uc2VudFN0cmluZykscnQ9YXQuZ2V0SW5pdGlhbGl6ZXIoKShvLGV0LG50KSxlLmVtYWlsSGFzaCYmcnQucHVzaCh7aGFzaDplLmVtYWlsSGFzaH0pLHJ0fWZ1bmN0aW9uIGl0KCl7IXR0JiZydCYmKHJ0LmZpcmUoKSx0dD0hMCl9dmFyIGF0PXttb2R1bGVNb2RlOm51bGwsbmFtZTpabixzZXRNb2R1bGVNb2RlOmZ1bmN0aW9uKGUpe3RoaXMubW9kdWxlTW9kZT1lfSxnZXRJbml0aWFsaXplcjpmdW5jdGlvbigpe3JldHVyblwibWluaW1hbFwiPT09dGhpcy5tb2R1bGVNb2RlP0JuOnNufSxkZWNvZGU6ZnVuY3Rpb24oZSxuKXt2YXIgdD1uJiZuLnBhcmFtc3x8e307cmV0dXJuIHJ0fHxvdCh0KSxpdCgpLGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLnVuaWZpZWRJZD9mdW5jdGlvbihlKXt2YXIgbj17bGlwYmlkOmUudW5pZmllZElkfTtyZXR1cm4gZGVsZXRlIGUudW5pZmllZElkLHtsaXBiOktuKEtuKHt9LG4pLGUpfX0oZSk6dm9pZCAwfSxnZXRJZDpmdW5jdGlvbihlKXt2YXIgbj1vdChlJiZlLnBhcmFtc3x8e30pO2lmKG4pcmV0dXJuIGl0KCkse2NhbGxiYWNrOmZ1bmN0aW9uKGUpe24ucmVzb2x2ZSgoZnVuY3Rpb24obil7ZShuKX0pLChmdW5jdGlvbihuKXsoMCxyLmxvZ0Vycm9yKShcIlwiLmNvbmNhdChabixcIjogSUQgZmV0Y2ggZW5jb3VudGVyZWQgYW4gZXJyb3I6IFwiKSxuKSxlKCl9KSl9fX19OygwLGkuQngpKFwidXNlcklkXCIsYXQpLHdpbmRvdy5vd3BianMuaW5zdGFsbGVkTW9kdWxlcy5wdXNoKFwibGl2ZUludGVudElkU3lzdGVtXCIpfX0sZnVuY3Rpb24oZSl7ZShlLnM9NTkwMil9XSk7XCJ1c2Ugc3RyaWN0XCI7KHNlbGYub3dwYmpzQ2h1bms9c2VsZi5vd3BianNDaHVua3x8W10pLnB1c2goW1s5Mjk5XSx7MzkxMTpmdW5jdGlvbihlLG8sdCl7dmFyIGEsaT10KDk4NTMpLHI9dCg1NzU1KSxuPXQoMzQ5NCkscz10KDU4NDkpLGM9dCg3NjAyKSxkPVwicGFub3JhbWFJZFwiLHA9XCJcIi5jb25jYXQoZCxcIl9leHBpcnlcIiksbD1cIl9jY19pZFwiLHY9XCJsb3RhbWVQYW5vcmFtYUlkXCIsbT03LGc9ODY0ZTUsdT0oMCxzLmRmKSh7Z3ZsaWQ6OTUsbW9kdWxlTmFtZTp2fSk7ZnVuY3Rpb24gZihlKXt2YXIgbz1udWxsO2lmKHUuY29va2llc0FyZUVuYWJsZWQoKSYmKG89dS5nZXRDb29raWUoZSx2b2lkIDApKSx1Lmhhc0xvY2FsU3RvcmFnZSgpJiZudWxsPT09byl7dmFyIHQ9dS5nZXREYXRhRnJvbUxvY2FsU3RvcmFnZShcIlwiLmNvbmNhdChlLFwiX2V4cFwiKSx2b2lkIDApOyhcIlwiPT09dHx8dCYmbmV3IERhdGUodCkuZ2V0VGltZSgpLURhdGUubm93KCk+MCkmJihvPXUuZ2V0RGF0YUZyb21Mb2NhbFN0b3JhZ2UoZSx2b2lkIDApKX1yZXR1cm4gb31mdW5jdGlvbiBTKGUsbyl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOigwLGkudGltZXN0YW1wKSgpK20qZztpZihlJiZvKXt2YXIgcj1uZXcgRGF0ZSh0KS50b1VUQ1N0cmluZygpO3UuY29va2llc0FyZUVuYWJsZWQoKSYmdS5zZXRDb29raWUoZSxvLHIsXCJMYXhcIixhLHZvaWQgMCksdS5oYXNMb2NhbFN0b3JhZ2UoKSYmKHUuc2V0RGF0YUluTG9jYWxTdG9yYWdlKFwiXCIuY29uY2F0KGUsXCJfZXhwXCIpLFN0cmluZyh0KSx2b2lkIDApLHUuc2V0RGF0YUluTG9jYWxTdG9yYWdlKGUsbyx2b2lkIDApKX19ZnVuY3Rpb24gXyhlKXtpZihlKXtpZih1LmNvb2tpZXNBcmVFbmFibGVkKCkpe3ZhciBvPW5ldyBEYXRlKDApLnRvVVRDU3RyaW5nKCk7dS5zZXRDb29raWUoZSxcIlwiLG8sXCJMYXhcIixhLHZvaWQgMCl9dS5oYXNMb2NhbFN0b3JhZ2UoKSYmdS5yZW1vdmVEYXRhRnJvbUxvY2FsU3RvcmFnZShlLHZvaWQgMCl9fXZhciB5PXtuYW1lOnYsZ3ZsaWQ6OTUsZGVjb2RlOmZ1bmN0aW9uKGUsbyl7cmV0dXJuKDAsaS5pc1N0cikoZSk/e2xvdGFtZVBhbm9yYW1hSWQ6ZX06dm9pZCAwfSxnZXRJZDpmdW5jdGlvbihlLG8sdCl7YT15LmZpbmRSb290RG9tYWluKCk7dmFyIG49KGUmJmUucGFyYW1zfHx7fSkuY2xpZW50SWQscz0hKDAsaS5pc0VtcHR5KShuKSx2PWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnZvaWQgMCxvPXtkYXRhOmYoZCksZXhwaXJ5VGltZXN0YW1wTXM6MCxjbGllbnRFeHBpcnlUaW1lc3RhbXBNczowfTt0cnl7aWYoZSl7dmFyIHQ9ZihcIlwiLmNvbmNhdChwLFwiX1wiKS5jb25jYXQoZSkpOygwLGkuaXNTdHIpKHQpJiYoby5jbGllbnRFeHBpcnlUaW1lc3RhbXBNcz1wYXJzZUludCh0LDEwKSl9dmFyIGE9ZihwKTsoMCxpLmlzU3RyKShhKSYmKG8uZXhwaXJ5VGltZXN0YW1wTXM9cGFyc2VJbnQoYSwxMCkpfWNhdGNoKGUpeygwLGkubG9nRXJyb3IpKGUpfXJldHVybiBvfShuKSxtPURhdGUubm93KCk+di5leHBpcnlUaW1lc3RhbXBNcztpZihzJiZEYXRlLm5vdygpPHYuY2xpZW50RXhwaXJ5VGltZXN0YW1wTXMpcmV0dXJue2lkOnZvaWQgMCxyZWFzb246XCJOT19DTElFTlRfQ09OU0VOVFwifTtpZighbSlyZXR1cm57aWQ6di5kYXRhfTt2YXIgZyxoPXUuY29va2llc0FyZUVuYWJsZWQoKT91LmdldENvb2tpZShsLHZvaWQgMCk6dS5oYXNMb2NhbFN0b3JhZ2UoKT91LmdldERhdGFGcm9tTG9jYWxTdG9yYWdlKGwsdm9pZCAwKTp2b2lkIDAseD1jLm5YLmdldENvbnNlbnREYXRhKCk7cmV0dXJuIHZvaWQgMD09PXh8fCgwLGkuaXNFbXB0eSkoeCl8fCgwLGkuaXNFbXB0eVN0cikoeCl8fChnPXgpLGd8fChnPWYoXCJ1c19wcml2YWN5XCIpKSx7Y2FsbGJhY2s6ZnVuY3Rpb24oZSl7dmFyIHQsYz17fTtoJiYoYy5mcD1oKSxvJiYoKDAsaS5pc0Jvb2xlYW4pKG8uZ2RwckFwcGxpZXMpJiYoYy5nZHByX2Fwc