Líderské zručnosti
Komunikačné zručnosti
Osobnostný rozvoj
Energy management
Predajné techniky
Firemné vzdelávanie
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Prihlás sa do NEplavkovej VÝZVY
Práve teraz máš možnosť prihlásiť sa do NEplavkovej výzvy v ktorej získaš ZDARMA:
- Dozvieš sa o 4 energiách, ktoré si potrebujeme dobíjať.
- Na 7 dní vyjdeš zo svojej komfortnej zóny.
- Začneš si budovať nové návyky.
- Pozrieš sa na svoj energy management z nového uhla.
Vypĺň túto príhlašku a odhališ pokyny potrebné k začatiu výzvy:
Cgo8Zm9ybQoJCW1ldGhvZD0icG9zdCIKCQlpZD0ic2Utd2ViZm9ybS0xIgoJCXN0eWxlPSJ3aWR0aDogNTM1cHgiCiB0YXJnZXQ9Il9zZWxmIiBjbGFzcz0ic2Utd2ViZm9ybS0xIHNlLXdlYmZvcm0iIGFjdGlvbj0iaHR0cHM6Ly9hcHAuc21hcnRlbWFpbGluZy5jei9wdWJsaWMvd2ViLWZvcm1zLXYyL2Rpc3BsYXktZm9ybS8xNTEyNzQtcmNneXJhMmR0MjlidWJzb2Q0OHZxMjhqeHE2YWczcDl5d3diajkxcnEwdDI3enh1ZmxiNHQ0M2J4anQzYWxoMnU0cGE0NjlqZ3EzZTM5NnBrOTFqYjhvdjF5ZjN2cG5heXpucSI+CgoKCTxkaXYgY2xhc3M9InNlLXdlYmZvcm0taW5uZXIiPgoJCTxkaXYgY2xhc3M9InNlLWhlYWRlciI+CgkJCTxoMz4KCQkJCVpEUkFNQSBwcmlobMOhc2VuaWUgZG8gTkVwbGF2a292ZWogVsOdWlZZCgkJCTwvaDM+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9InNlLWJvZHkiPgoJCQk8dWw+Cgk8bGk+CgkJPGxhYmVsIGZvcj0iZnJtLXdlYkZvcm1IdG1sUmVuZGVyZXItd2ViRm9ybUZvcm0tZmllbGRzLWRmX25hbWUiIGNsYXNzPSJzZS1sYWJlbCAiPk1lbm88L2xhYmVsPgoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWVsZHNbZGZfbmFtZV0iIGlkPSJmcm0td2ViRm9ybUh0bWxSZW5kZXJlci13ZWJGb3JtRm9ybS1maWVsZHMtZGZfbmFtZSI+Cgk8L2xpPgoJPGxpPgoJCTxsYWJlbCBmb3I9ImZybS13ZWJGb3JtSHRtbFJlbmRlcmVyLXdlYkZvcm1Gb3JtLWZpZWxkcy1kZl9lbWFpbGFkZHJlc3MiIGNsYXNzPSJzZS1sYWJlbCBzZS1yZXF1aXJlZCI+RW1haWxvdsOhIGFkcmVzYTwvbGFiZWw+CgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpZWxkc1tkZl9lbWFpbGFkZHJlc3NdIiBkYXRhLWVtYWlsYWRkcmVzcz0iMSIgaWQ9ImZybS13ZWJGb3JtSHRtbFJlbmRlcmVyLXdlYkZvcm1Gb3JtLWZpZWxkcy1kZl9lbWFpbGFkZHJlc3MiIHJlcXVpcmVkIGRhdGEtbmV0dGUtcnVsZXM9J1t7Im9wIjoiOmZpbGxlZCIsIm1zZyI6IkVtYWlsb3bDoSBhZHJlc2EgamUgcG92aW5uw6kgcG9sZS4ifSx7Im9wIjoiOmVtYWlsIiwibXNnIjoiRW1haWxvdsOhIGFkcmVzYSBqZSBwb3Zpbm7DqSBwb2xlLiJ9LHsib3AiOiJTRTIwXFxWYWxpZGF0b3JzXFxUeXBlc0Zvcm1WYWxpZGF0b3I6OnZhbGlkYXRlRW1haWxBZGRyZXNzIiwibXNnIjoiRW1haWxvdsOhIGFkcmVzYSBqZSBwb3Zpbm7DqSBwb2xlLiJ9XSc+Cgk8L2xpPgoKCgoKCQkJPC91bD4KCQk8L2Rpdj4KCgkJPGRpdiBjbGFzcz0ic2Utc3VibWl0Ij4KCQkJPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9Il9zdWJtaXQiIHZhbHVlPSJQcmlqw61tYW0gdsO9enZ1Ij5Qcmlqw61tYW0gdsO9enZ1PC9idXR0b24+CgkJPC9kaXY+CgoJPC9kaXY+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgaWQ9InNlLXJlZi1maWVsZC1pZCIgdmFsdWU9IiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2Vzc2lvbmlkIiBpZD0ic2Utc2Vzc2lvbmlkLWZpZWxkIiB2YWx1ZT0iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZXNzaW9uVWlkIiBpZD0ic2Utc2Vzc2lvblVpZC1maWVsZCIgdmFsdWU9IiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX2RvIiB2YWx1ZT0id2ViRm9ybUh0bWxSZW5kZXJlci13ZWJGb3JtRm9ybS1zdWJtaXQiPjwvZm9ybT4KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0sLnNlLXdyYXBwZXJ7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO291dGxpbmU6MDt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLC5zZS13cmFwcGVyLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAqLC5zZS13cmFwcGVyICp7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybXt3aWR0aDo0MDBweDtiYWNrZ3JvdW5kOiNlOGU4ZTg7b3ZlcmZsb3c6aGlkZGVuO30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gPiAqLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utd2ViZm9ybS1pbm5lciA+ICp7d2lkdGg6MTAwJX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWhlYWRlciBoM3ttYXJnaW46MDtwYWRkaW5nOjI0cHggMjRweCA1cHh9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1pbWFnZXtiYWNrZ3JvdW5kLXNpemU6Y292ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTAlIDUwJTttYXJnaW4tdG9wOjE1cHh9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1ib2R5IHVse21hcmdpbjowIDUlO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaXtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOi41ZW0gMDt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1ib2R5IHVsIGxpIGxhYmVsLnNlLXJlcXVpcmVkOmFmdGVye2NvbnRlbnQ6IiAqIjtjb2xvcjojZjAwfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBsYWJlbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6NXB4IDA7bWFyZ2luOjB9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1zdWJtaXR7cGFkZGluZzoxNHB4IDI0cHggMjRweCAyNHB4O30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLXN1Ym1pdCBidXR0b24sI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1zdWJtaXQgZGl2LnNlLWZha2V7Y3Vyc29yOnBvaW50ZXJ9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1jbG9zZXt3aWR0aDphdXRvfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utd2ViZm9ybS1zZW50LWluZm8sI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS13ZWJmb3JtLXNlbmRpbmctaW5mb3tkaXNwbGF5Om5vbmU7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utd2ViZm9ybS1zZW50LWluZm8gaDMsI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS13ZWJmb3JtLXNlbmRpbmctaW5mbyBoM3t0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MWVtfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS13ZWJmb3JtLXNlbnQgLnNlLWhlYWRlciwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2Utd2ViZm9ybS1zZW5kaW5nIC5zZS1oZWFkZXIsI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLXdlYmZvcm0tc2VudCAuc2UtYm9keSwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2Utd2ViZm9ybS1zZW5kaW5nIC5zZS1ib2R5LCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS13ZWJmb3JtLXNlbnQgLnNlLXRleHQsI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLXdlYmZvcm0tc2VuZGluZyAuc2UtdGV4dCwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2Utd2ViZm9ybS1zZW50IC5zZS1zdWJtaXQsI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLXdlYmZvcm0tc2VuZGluZyAuc2Utc3VibWl0e2Rpc3BsYXk6bm9uZX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2Utd2ViZm9ybS1zZW50IC5zZS13ZWJmb3JtLXNlbnQtaW5mb3tkaXNwbGF5OmJsb2NrfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS13ZWJmb3JtLXNlbmRpbmcgLnNlLXdlYmZvcm0tc2VudC1pbmZve2Rpc3BsYXk6bm9uZX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2Utd2ViZm9ybS1zZW5kaW5nIC5zZS13ZWJmb3JtLXNlbmRpbmctaW5mb3tkaXNwbGF5OmJsb2NrfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS1oYXMtaW1hZ2UtYXNpZGV7ZGlzcGxheTp0YWJsZTt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLWhhcy1pbWFnZS1hc2lkZSAuc2UtaW1hZ2UtYXNpZGV7bWFyZ2luLXRvcDowO2Rpc3BsYXk6dGFibGUtY2VsbCAhaW1wb3J0YW50O3dpZHRoOjUwJX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRlIC5zZS13ZWJmb3JtLWlubmVye2Rpc3BsYXk6dGFibGUtY2VsbCAhaW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDo1MCU7cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4O30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRlIC5zZS13ZWJmb3JtLWlubmVyIC5zZS1oZWFkZXIgaDN7cGFkZGluZy1sZWZ0OjEycHg7dGV4dC1hbGlnbjpsZWZ0fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS1oYXMtaW1hZ2UtYXNpZGUgLnNlLXdlYmZvcm0taW5uZXIgLnNlLWltYWdle2Rpc3BsYXk6bm9uZX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRlLnNlLXNocmlua3t3aWR0aDoxMDAlICFpbXBvcnRhbnQ7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS1oYXMtaW1hZ2UtYXNpZGUuc2Utc2hyaW5rIC5zZS13ZWJmb3JtLWlubmVyIC5zZS1pbWFnZXtkaXNwbGF5OmJsb2NrfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS1oYXMtaW1hZ2UtYXNpZGUuc2Utc2hyaW5rIC5zZS1pbWFnZS1hc2lkZXtkaXNwbGF5Om5vbmUgIWltcG9ydGFudH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRlLnNlLXNocmluayAuc2Utd2ViZm9ybS1pbm5lcntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O3dpZHRoOjEwMCU7dmVydGljYWwtYWxpZ246bm9uZX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gdWwuc2UtZXJyb3Jze2xpc3Qtc3R5bGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjAgMTBweDt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIHVsLnNlLWVycm9ycyBsaXtjb2xvcjojZmZmO21hcmdpbjoxMHB4IDA7YmFja2dyb3VuZDojZGE1NTU1Oy13ZWJraXQtYm9yZGVyLXJhZGl1czoxMHB4Oy1tb3otYm9yZGVyLXJhZGl1czoxMHB4O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjAgMTBweDt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIHVsLnNlLWVycm9ycyBsaSBkaXZ7ZGlzcGxheTp0YWJsZS1yb3c7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSB1bC5zZS1lcnJvcnMgbGkgZGl2ID4gKntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmc6OHB4IDB9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIHVsLnNlLWVycm9ycyBsaSAuZmF7Zm9udC1zaXplOjMwcHg7cGFkZGluZy1yaWdodDoxNXB4fSNzZS13ZWJmb3JtLTEgLnNlLWNsb3NlIGEsLnNlLWNsb3NlIGF7Zm9udC1zaXplOjMwcHggIWltcG9ydGFudDtjb250ZW50OiJcZDciICFpbXBvcnRhbnQ7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0sLnNlLXdyYXBwZXJ7Zm9udC1zaXplOjE0cHg7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLC5zZS13cmFwcGVyLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAqLC5zZS13cmFwcGVyICp7bGluZS1oZWlnaHQ6aW5pdGlhbCAhaW1wb3J0YW50fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSBpbnB1dFt0eXBlPXRleHRdLC5zZS13cmFwcGVyIGlucHV0W3R5cGU9dGV4dF0sI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIGlucHV0W3R5cGU9bnVtYmVyXSwuc2Utd3JhcHBlciBpbnB1dFt0eXBlPW51bWJlcl0sI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIGlucHV0W3R5cGU9ZGF0ZV0sLnNlLXdyYXBwZXIgaW5wdXRbdHlwZT1kYXRlXXtoZWlnaHQ6YXV0byAhaW1wb3J0YW50fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybXt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIGlucHV0e2JvcmRlcjowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gPiAqLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utd2ViZm9ybS1pbm5lciA+ICp7d2lkdGg6MTAwJX0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLXRleHR7Y29sb3I6IzM4MzgzODt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS10ZXh0IHB7cGFkZGluZzoxMHB4IDI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOjA7bWFyZ2luOjB9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1oZWFkZXIgaDN7Y29sb3I6I2ZmYmEyNTtmb250LXNpemU6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjEuMjUgIWltcG9ydGFudDtib3JkZXI6MH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGl7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQ6bm9uZTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBsYWJlbHtmb250LXNpemU6MTJweDtjb2xvcjojMzgzODM4O2ZvbnQtd2VpZ2h0OjYwMDt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1ib2R5IHVsIGxpIGxhYmVsLnNlLXJhZGlvLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBsYWJlbC5zZS1jaGVja2JveHtmb250LXNpemU6MTJweDttYXJnaW46MDtmb250LXdlaWdodDo0MDA7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBsYWJlbC5zZS1yYWRpbyBpbnB1dCwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgbGFiZWwuc2UtY2hlY2tib3ggaW5wdXR7bWFyZ2luOi0zcHggNXB4IDAgMH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgaW5wdXRbdHlwZT10ZXh0XSwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgaW5wdXRbdHlwZT1udW1iZXJdLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBpbnB1dFt0eXBlPWRhdGVdLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSB0ZXh0YXJlYSwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgc2VsZWN0e3dpZHRoOjEwMCU7cGFkZGluZzo4cHg7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjFweCBzb2xpZCAjZGNkY2RjO2JhY2tncm91bmQtY29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzM4MzgzOH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgaW5wdXRbdHlwZT10ZXh0XSwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgaW5wdXRbdHlwZT1udW1iZXJdLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBpbnB1dFt0eXBlPWRhdGVde2ZvbnQtc2l6ZToxNHB4O2Rpc3BsYXk6YmxvY2t9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1ib2R5IHVsIGxpIHRleHRhcmVhe2hlaWdodDo2MHB4O3Jlc2l6ZTpub25lO2xpbmUtaGVpZ2h0OjEuMmVtfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBzZWxlY3R7Zm9udC1zaXplOjEycHh9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1zdWJtaXR7dGV4dC1hbGlnbjpjZW50ZXI7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utc3VibWl0IGJ1dHRvbiwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLXN1Ym1pdCBkaXYuc2UtZmFrZXtwYWRkaW5nOjEwcHggMzBweDtkaXNwbGF5OmJsb2NrO21hcmdpbjowIGF1dG87YmFja2dyb3VuZDojZmZiYTI1O2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjowO2ZvbnQtc2l6ZToxNnB4O2NvbG9yOiNmZmY7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvO2N1cnNvcjpwb2ludGVyfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtY2xvc2V7d2lkdGg6YXV0b30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRle2Rpc3BsYXk6dGFibGU7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS1oYXMtaW1hZ2UtYXNpZGUgLnNlLWltYWdlLWFzaWRle21hcmdpbi10b3A6MDtkaXNwbGF5OnRhYmxlLWNlbGwgIWltcG9ydGFudDt3aWR0aDo1MCV9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLWhhcy1pbWFnZS1hc2lkZSAuc2Utd2ViZm9ybS1pbm5lcntkaXNwbGF5OnRhYmxlLWNlbGwgIWltcG9ydGFudDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2lkdGg6NTAlO3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweDt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLWhhcy1pbWFnZS1hc2lkZSAuc2Utd2ViZm9ybS1pbm5lciAuc2UtaGVhZGVyIGgze3BhZGRpbmctbGVmdDoxMnB4O3RleHQtYWxpZ246bGVmdH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRlIC5zZS13ZWJmb3JtLWlubmVyIC5zZS1pbWFnZXtkaXNwbGF5Om5vbmV9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLWhhcy1pbWFnZS1hc2lkZSAuc2Utd2ViZm9ybS1pbm5lciAuc2UtdGV4dHt0ZXh0LWFsaWduOmxlZnQ7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybS5zZS1oYXMtaW1hZ2UtYXNpZGUgLnNlLXdlYmZvcm0taW5uZXIgLnNlLXRleHQgcHt0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZy1sZWZ0OjEycHh9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLnNlLWhhcy1pbWFnZS1hc2lkZSAuc2Utd2ViZm9ybS1pbm5lciAuc2Utc3VibWl0e3BhZGRpbmctbGVmdDoxMnB4O3RleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50O30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0uc2UtaGFzLWltYWdlLWFzaWRlIC5zZS13ZWJmb3JtLWlubmVyIC5zZS1zdWJtaXQgPiAqe3RleHQtYWxpZ246Y2VudGVyfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSB1bC5zZS1lcnJvcnN7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MCAxMHB4O30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gdWwuc2UtZXJyb3JzIGxpe2NvbG9yOiNmZmY7bWFyZ2luOjEwcHggMDtiYWNrZ3JvdW5kOiNkYTU1NTU7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjEwcHg7LW1vei1ib3JkZXItcmFkaXVzOjEwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MCAxMHB4O30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gdWwuc2UtZXJyb3JzIGxpIGRpdntkaXNwbGF5OnRhYmxlLXJvdzt9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIHVsLnNlLWVycm9ycyBsaSBkaXYgPiAqe2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZzo4cHggMH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gdWwuc2UtZXJyb3JzIGxpIC5mYXtmb250LXNpemU6MzBweDtwYWRkaW5nLXJpZ2h0OjE1cHh9I3NlLXdlYmZvcm0tMSAuc2UtY2xvc2UgYSwuc2UtY2xvc2UgYXtjb2xvcjojYTFhMWExICFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6bm9ybWFsfS5zZS1wb3B1cC1vcGVue292ZXJmbG93OmhpZGRlbjt9LnNlLXBvcHVwLW9wZW4gLnNlLXBvcHVwe292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0b30uc2UtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDo5OTk4O2JhY2tncm91bmQtY29sb3I6IzAwMDt9LnNlLWJhY2tkcm9wLnNlLWZhZGV7b3BhY2l0eTowO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApfS5zZS1iYWNrZHJvcC5zZS1pbntvcGFjaXR5Oi41O2ZpbHRlcjphbHBoYShvcGFjaXR5PTUwKX0uc2Utc2Nyb2xsYmFyLW1lYXN1cmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi05OTk5cHg7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpzY3JvbGx9LnNlLXBvcHVwe2Rpc3BsYXk6bm9uZTtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDo5OTk5Oy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO291dGxpbmU6MDt9LnNlLXBvcHVwLnNlLWZhZGUgLnNlLXBvcHVwLWlubmVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yNSUpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlKDAsLTI1JSk7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0yNSUpO3RyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMjUlKTstd2Via2l0LXRyYW5zaXRpb246LXdlYmtpdC10cmFuc2Zvcm0gLjNzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246LW8tdHJhbnNmb3JtIC4zcyBlYXNlLW91dDt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZS1vdXR9LnNlLXBvcHVwLnNlLWluIC5zZS1wb3B1cC1pbm5lcnstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApOy1vLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCl9LnNlLXBvcHVwIC5zZS1wb3B1cC1pbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDphdXRvO21hcmdpbjoxMHB4IGF1dG87fS5zZS1wb3B1cCAuc2UtcG9wdXAtaW5uZXIgI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3Jte3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpO2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm94LXNoYWRvdzowIDNweCA5cHggcmdiYSgwLDAsMCwwLjUpO2JveC1zaGFkb3c6MCAzcHggOXB4IHJnYmEoMCwwLDAsMC41KTstd2Via2l0LWJhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveDtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7b3V0bGluZTowOy13ZWJraXQtYm94LXNoYWRvdzowIDVweCAxNXB4IHJnYmEoMCwwLDAsMC41KTtib3gtc2hhZG93OjAgNXB4IDE1cHggcmdiYSgwLDAsMCwwLjUpO30uc2UtcG9wdXAgLnNlLXBvcHVwLWlubmVyICNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtaGVhZGVye21pbi1oZWlnaHQ6MTYuNDI4NTcxNDNweDt9LnNlLXBvcHVwIC5zZS1wb3B1cC1pbm5lciAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWhlYWRlciAuc2UtY2xvc2V7bWFyZ2luLXRvcDotMnB4fS5zZS1wb3B1cCAuc2UtcG9wdXAtaW5uZXIgI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1ib2R5e3Bvc2l0aW9uOnJlbGF0aXZlfS5zZS1wb3B1cCAuc2UtcG9wdXAtaW5uZXIgI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1zdWJtaXQ6YmVmb3JlLC5zZS1wb3B1cCAuc2UtcG9wdXAtaW5uZXIgI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1zdWJtaXQ6YWZ0ZXJ7Y29udGVudDoiICI7ZGlzcGxheTp0YWJsZX0uc2UtcG9wdXAgLnNlLXBvcHVwLWlubmVyICNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utc3VibWl0OmFmdGVye2NsZWFyOmJvdGh9LnNlLXBvcHVwIC5zZS1wb3B1cC1pbm5lciAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7dG9wOjA7cmlnaHQ6MTBweH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LnNlLXBvcHVwIC5zZS1wb3B1cC1pbm5lcnt3aWR0aDozNTBweDttYXJnaW46MzBweCBhdXRvO30uc2UtcG9wdXAgLnNlLXBvcHVwLWlubmVyICNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybXt3aWR0aDoxMDAlfX0uc2UtYnV0dG9ue3dpZHRoOmF1dG87ZGlzcGxheTpub25lO2N1cnNvcjpwb2ludGVyfS5zZS1wb3B1cC1idXR0b257cG9zaXRpb246Zml4ZWQ7dGV4dC1hbGlnbjpyaWdodDt6LWluZGV4Ojk5OTtyaWdodDo1JTtib3R0b206MDt9LnNlLXBvcHVwLWJ1dHRvbiwuc2UtcG9wdXAtYnV0dG9uICp7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fUBtZWRpYSAobWF4LXdpZHRoOjc2OHB4KXsuc2UtcG9wdXAtYnV0dG9ue3dpZHRoOjkwJX19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5zZS1wb3B1cC1idXR0b257cmlnaHQ6MTAlfX0uc2UtcG9wdXAtYnV0dG9uIC5zZS1pbWFnZXtkaXBsYXk6bm9uZX0uc2UtcG9wdXAtYnV0dG9uIC5zZS1idXR0b24uc2UtdG9we3RvcDowfS5zZS1wb3B1cC1idXR0b24gLnNlLWJ1dHRvbi5zZS1ib3R0b217Ym90dG9tOjB9LnNlLXBvcHVwLWJ1dHRvbiAuc2UtYnV0dG9uOmhvdmVyey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6c2hha2U7LXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246LjhzOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjUwJSAxMDAlfS5zZS1wb3B1cC1idXR0b24gLnNlLWNsb3Nle2Rpc3BsYXk6bm9uZTt9LnNlLXBvcHVwLWJ1dHRvbiAuc2UtY2xvc2U6YWZ0ZXJ7Y2xlYXI6Ym90aH0uc2UtcG9wdXAtYnV0dG9uIC5zZS1jb250YWluZXJ7ZGlzcGxheTpub25lO3RleHQtYWxpZ246bGVmdH0uc2UtcG9wdXAtYnV0dG9uICNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybXtkaXNwbGF5Om5vbmV9LnNlLXBvcHVwLWJ1dHRvbi5zZS1idXR0b24tc2hvdyAuc2UtYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zZS1wb3B1cC1idXR0b24uc2Utb3BlbntvdmVyZmxvdy15OmF1dG87fS5zZS1wb3B1cC1idXR0b24uc2Utb3BlbiAuc2UtY2xvc2V7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTBweDtyaWdodDoxOHB4O3otaW5kZXg6OTk5fS5zZS1wb3B1cC1idXR0b24uc2Utb3BlbiAuc2UtYnV0dG9ue2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlO2N1cnNvcjppbmhlcml0fS5zZS1wb3B1cC1idXR0b24uc2Utb3BlbiAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm17d2lkdGg6MTAwJX0uc2UtcG9wdXAtYnV0dG9uLnNlLW9wZW4gLnNlLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO21hcmdpbjowIDAgMCBhdXRvO21heC13aWR0aDoxMDAlICFpbXBvcnRhbnR9QC13ZWJraXQta2V5ZnJhbWVzIHNoYWtlezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDVweCkgcm90YXRlKDApfTEwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtNXB4KSByb3RhdGUoMCl9MjAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDVweCkgcm90YXRlKDApfTMwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtNXB4KSByb3RhdGUoMCl9NDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDRweCkgcm90YXRlKDApfTUwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtNHB4KSByb3RhdGUoMCl9NjAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDNweCkgcm90YXRlKDApfTcwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtM3B4KSByb3RhdGUoMCl9ODAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDJweCkgcm90YXRlKDApfTkwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwtMnB4KSByb3RhdGUoMCl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKSByb3RhdGUoMCl9fS5zZS1idXR0b257d2lkdGg6YXV0bztkaXNwbGF5Om5vbmU7Y3Vyc29yOnBvaW50ZXJ9LnNlLXBvcHVwLWJ1dHRvbntwb3NpdGlvbjpmaXhlZDt0ZXh0LWFsaWduOnJpZ2h0O3otaW5kZXg6OTk5O3JpZ2h0OjUlO2JvdHRvbTowO30uc2UtcG9wdXAtYnV0dG9uLC5zZS1wb3B1cC1idXR0b24gKnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9QG1lZGlhIChtYXgtd2lkdGg6NzY4cHgpey5zZS1wb3B1cC1idXR0b257d2lkdGg6OTAlfX1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCl7LnNlLXBvcHVwLWJ1dHRvbntyaWdodDoxMCV9fS5zZS1wb3B1cC1idXR0b24gLnNlLWltYWdle2RpcGxheTpub25lfS5zZS1wb3B1cC1idXR0b24gLnNlLWJ1dHRvbi5zZS10b3B7dG9wOjB9LnNlLXBvcHVwLWJ1dHRvbiAuc2UtYnV0dG9uLnNlLWJvdHRvbXtib3R0b206MH0uc2UtcG9wdXAtYnV0dG9uIC5zZS1idXR0b246aG92ZXJ7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpzaGFrZTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjouOHM7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46NTAlIDEwMCV9LnNlLXBvcHVwLWJ1dHRvbiAuc2UtY2xvc2V7ZGlzcGxheTpub25lO30uc2UtcG9wdXAtYnV0dG9uIC5zZS1jbG9zZTphZnRlcntjbGVhcjpib3RofS5zZS1wb3B1cC1idXR0b24gLnNlLWNvbnRhaW5lcntkaXNwbGF5Om5vbmU7dGV4dC1hbGlnbjpsZWZ0fS5zZS1wb3B1cC1idXR0b24gI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3Jte2Rpc3BsYXk6bm9uZX0uc2UtcG9wdXAtYnV0dG9uLnNlLWJ1dHRvbi1zaG93IC5zZS1idXR0b257ZGlzcGxheTppbmxpbmUtYmxvY2t9LnNlLXBvcHVwLWJ1dHRvbi5zZS1vcGVue292ZXJmbG93LXk6YXV0bzt9LnNlLXBvcHVwLWJ1dHRvbi5zZS1vcGVuIC5zZS1jbG9zZXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMHB4O3JpZ2h0OjE4cHg7ei1pbmRleDo5OTl9LnNlLXBvcHVwLWJ1dHRvbi5zZS1vcGVuIC5zZS1idXR0b257ZGlzcGxheTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOmluaGVyaXR9LnNlLXBvcHVwLWJ1dHRvbi5zZS1vcGVuICNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybXt3aWR0aDoxMDAlfS5zZS1wb3B1cC1idXR0b24uc2Utb3BlbiAuc2UtY29udGFpbmVye2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgMCAwIGF1dG87bWF4LXdpZHRoOjEwMCUgIWltcG9ydGFudH1ALXdlYmtpdC1rZXlmcmFtZXMgc2hha2V7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsNXB4KSByb3RhdGUoMCl9MTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC01cHgpIHJvdGF0ZSgwKX0yMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsNXB4KSByb3RhdGUoMCl9MzAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC01cHgpIHJvdGF0ZSgwKX00MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsNHB4KSByb3RhdGUoMCl9NTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC00cHgpIHJvdGF0ZSgwKX02MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsM3B4KSByb3RhdGUoMCl9NzAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0zcHgpIHJvdGF0ZSgwKX04MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMnB4KSByb3RhdGUoMCl9OTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLC0ycHgpIHJvdGF0ZSgwKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApIHJvdGF0ZSgwKX19LnNlLWJ1dHRvbnttYXJnaW46MCAwIC0xNXB4IDA7YmFja2dyb3VuZDojZmZiYTI1O2JvcmRlci1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6MDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDowO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowO3BhZGRpbmc6MTVweCAxNXB4IDMwcHggMTVweDtmb250LXNpemU6MTZweDtjb2xvcjojZmZmfS5zZS1wb3B1cC1idXR0b24gI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3Jtey13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxMHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MTBweDstbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDoxMHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDoxMHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MTBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czoxMHB4O292ZXJmbG93LXk6YXV0b30uc2UtbGltaXQtd2lkdGguc2Utd3JhcHBlci5zZS1wb3B1cCAuc2UtcG9wdXAtaW5uZXIsLnNlLWxpbWl0LXdpZHRoLnNlLXdyYXBwZXIuc2UtcG9wdXAtYnV0dG9uIC5zZS1wb3B1cC1pbm5lcnt3aWR0aDphdXRvICFpbXBvcnRhbnR9LnNlLWxpbWl0LXdpZHRoLnNlLXdyYXBwZXIuc2UtcG9wdXAgI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtLC5zZS1saW1pdC13aWR0aC5zZS13cmFwcGVyLnNlLXBvcHVwLWJ1dHRvbiAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm17d2lkdGg6YXV0byAhaW1wb3J0YW50O30uc2UtbGltaXQtd2lkdGguc2Utd3JhcHBlci5zZS1wb3B1cCAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWltYWdlLWFzaWRlLC5zZS1saW1pdC13aWR0aC5zZS13cmFwcGVyLnNlLXBvcHVwLWJ1dHRvbiAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWltYWdlLWFzaWRle2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDt3aWR0aDoxMDAlICFpbXBvcnRhbnR9LnNlLWxpbWl0LXdpZHRoLnNlLXdyYXBwZXIuc2UtcG9wdXAgI3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS13ZWJmb3JtLWlubmVyLC5zZS1saW1pdC13aWR0aC5zZS13cmFwcGVyLnNlLXBvcHVwLWJ1dHRvbiAjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLXdlYmZvcm0taW5uZXJ7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O3dpZHRoOjEwMCUgIWltcG9ydGFudH0jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm17Ym9yZGVyOjNweCBzb2xpZCAjZWFlYWVhO30jc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgaW5wdXRbdHlwZT0idGV4dCJdLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtYm9keSB1bCBsaSBpbnB1dFt0eXBlPSJudW1iZXIiXSwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLWJvZHkgdWwgbGkgaW5wdXRbdHlwZT0iZGF0ZSJde2JveC1zaGFkb3c6aW5zZXQgMnB4IDJweCAycHggI2VlZTtiYWNrZ3JvdW5kOiNmYmZiZmI7Ym9yZGVyOjFweCAjZGNkY2RjIHNvbGlkfSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2UtaGVhZGVyIGgze2NvbG9yOiMzODM4Mzg7Zm9udC1zaXplOjE4cHh9I3NlLXdlYmZvcm0tMS5zZS13ZWJmb3JtIC5zZS1zdWJtaXQgYnV0dG9uLCNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utc3VibWl0IGRpdi5zZS1mYWtle2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM4NjZhMzM7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjODY2YTMzO3RleHQtc2hhZG93OjFweCAxcHggMnB4ICNmZmJhMjU7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzM4MzgzODtiYWNrZ3JvdW5kLWNvbG9yOiNmNGIyMjM7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y0YjIyMyAwJSwjYzg5MjFkIDEwMCUpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmNGIyMjMgMCUsI2M4OTIxZCAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNmNGIyMjMgMCUsI2M4OTIxZCAxMDAlKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2Y0YjIyMyAwJSwjYzg5MjFkIDEwMCUpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvcCwjZjRiMjIzIDAlLCNjODkyMWQgMTAwJSk7fSNzZS13ZWJmb3JtLTEuc2Utd2ViZm9ybSAuc2Utc3VibWl0IGJ1dHRvbjpob3Zlciwjc2Utd2ViZm9ybS0xLnNlLXdlYmZvcm0gLnNlLXN1Ym1pdCBkaXYuc2UtZmFrZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNGIyMjM7YmFja2dyb3VuZC1pbWFnZTpub25lfUBtZWRpYShtYXgtd2lkdGg6IDQ5MHB4KXsjc2Utd2ViZm9ybS0xe3dpZHRoOjEwMCUgIWltcG9ydGFudDt9LnNlLXdlYmZvcm0tdjItc2xpZGV1cC1jb250YWluZXJ7cmlnaHQ6IDA7fX0KPC9zdHlsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zZS13ZWJmb3JtLWlubmVyIHNwYW4gewoJCWZvbnQtc2l6ZTogMTJweDsKCQlmb250LXdlaWdodDogNDAwOwoJfQoKCS5zZS13ZWJmb3JtLXByaW1hcnktcHVycG9zZSB7CgkJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiYmJiYmI7CgkJdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50OwoJCXBhZGRpbmc6IDEwcHggMHB4IDE1cHggMHB4ICFpbXBvcnRhbnQ7CgkJbWFyZ2luOiA1cHggMCAwIDAgIWltcG9ydGFudDsKCQljb2xvcjogIzQ0NDsKCX0KCgkuc2UtbGljZW5zZS1hZ3JlZW1lbnQgewoJCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmJiYmJiOwoJCXRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKCX0KCgkuc2UtbGljZW5zZS1hZ3JlZW1lbnQgc3BhbiB7CgkJZm9udC1zaXplOiAxMnB4OwoJCWZvbnQtd2VpZ2h0OiA0MDA7Cgl9CgoJLnNlLWxpY2Vuc2UtYWdyZWVtZW50IC5zZS1jaGVja2JveCBpbnB1dCB7CgkJbWFyZ2luOiAxcHggNXB4IDFweCAwICFpbXBvcnRhbnQ7Cgl9CgoJLnNlLXN1Ym1pdCB7CgkJbWFyZ2luLXRvcDogMTBweDsKCX0KPC9zdHlsZT4KPHNjcmlwdD4KCXZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgewogICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQogICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH0KICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQogICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsKICAgIH0pOwp9Owp2YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkgewogICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZzsKICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCAidGhyb3ciOiB2ZXJiKDEpLCAicmV0dXJuIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnOwogICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9CiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7CiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTsKICAgICAgICB3aGlsZSAoXykgdHJ5IHsKICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVsicmV0dXJuIl0gOiBvcFswXSA/IHlbInRocm93Il0gfHwgKCh0ID0geVsicmV0dXJuIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0OwogICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07CiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTsKICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsKICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpOwogICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfQogICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9OwogICAgfQp9Owp2YXIgQ29tcG9zaXRpb25CZWhhdmlvckxvYWRlciA9IChmdW5jdGlvbiAoKSB7CiAgICBmdW5jdGlvbiBDb21wb3NpdGlvbkJlaGF2aW9yTG9hZGVyKCkgewogICAgICAgIHRoaXMucG9wdXBCZWhhdmlvckxvYWRlciA9IG5ldyBQb3B1cEJlaGF2aW9yTG9hZGVyKCk7CiAgICAgICAgdGhpcy5zbGlkZXVwQmVoYXZpb3JMb2FkZXIgPSBuZXcgU2xpZGV1cEJlaGF2aW9yTG9hZGVyKCk7CiAgICB9CiAgICBDb21wb3NpdGlvbkJlaGF2aW9yTG9hZGVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKGNvbmZpZywgZm9ybSkgewogICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubG9hZChjb25maWcsIGZvcm0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0LCB0aGlzLmxvYWQoY29uZmlnLCBmb3JtKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOyB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0sIDEpOwogICAgfTsKICAgIENvbXBvc2l0aW9uQmVoYXZpb3JMb2FkZXIucHJvdG90eXBlLmxvYWQgPSBmdW5jdGlvbiAoY29uZmlnLCBmb3JtKSB7CiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY29tcG9zaXRpb247CiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKICAgICAgICAgICAgICAgIGNvbXBvc2l0aW9uID0gY29uZmlnLmNvbXBvc2l0aW9uOwogICAgICAgICAgICAgICAgaWYgKGNvbXBvc2l0aW9uID09PSAnZGVmYXVsdCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjb21wb3NpdGlvbiA9PT0gJ3BvcHVwJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgdGhpcy5wb3B1cEJlaGF2aW9yTG9hZGVyLmxvYWQoY29uZmlnLCBmb3JtKV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoY29tcG9zaXRpb24gPT09ICdzbGlkZS11cCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMuc2xpZGV1cEJlaGF2aW9yTG9hZGVyLmxvYWQoY29uZmlnKV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gWzIsIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd1bmtub3duIGNvbXBvc2l0aW9uOiAnICsgY29tcG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgfSldOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH07CiAgICByZXR1cm4gQ29tcG9zaXRpb25CZWhhdmlvckxvYWRlcjsKfSgpKTsKdmFyIENvbXBvc2l0aW9uQ3NzTG9hZGVyID0gKGZ1bmN0aW9uICgpIHsKICAgIGZ1bmN0aW9uIENvbXBvc2l0aW9uQ3NzTG9hZGVyKCkgewogICAgfQogICAgQ29tcG9zaXRpb25Dc3NMb2FkZXIubG9hZENvbXBvc2l0aW9uQ3NzID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIGNzc0lkLCBsaW5rLCByZXN1bHQ7CiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKICAgICAgICAgICAgICAgIGNzc0lkID0gJ3NlLWNvbXBvc2l0aW9uLScgKyBjb25maWcuY29tcG9zaXRpb24gKyAnLWNzcyc7CiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY3NzSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9KV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwogICAgICAgICAgICAgICAgbGluay5pZCA9IGNzc0lkOwogICAgICAgICAgICAgICAgbGluay5yZWwgPSAnc3R5bGVzaGVldCc7CiAgICAgICAgICAgICAgICBsaW5rLnR5cGUgPSAndGV4dC9jc3MnOwogICAgICAgICAgICAgICAgbGluay5ocmVmID0gY29uZmlnLnJvb3RVcmwgKyAnL3dlYi1mb3Jtcy12Mi9jb21wb3NpdGlvbi0nICsgY29uZmlnLmNvbXBvc2l0aW9uICsgJy5jc3MnOwogICAgICAgICAgICAgICAgbGluay5tZWRpYSA9ICdhbGwnOwogICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKICAgICAgICAgICAgICAgICAgICBsaW5rLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobGluayk7CiAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHJlc3VsdF07CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfTsKICAgIHJldHVybiBDb21wb3NpdGlvbkNzc0xvYWRlcjsKfSgpKTsKdmFyIFBvcHVwQmVoYXZpb3JMb2FkZXIgPSAoZnVuY3Rpb24gKCkgewogICAgZnVuY3Rpb24gUG9wdXBCZWhhdmlvckxvYWRlcigpIHsKICAgIH0KICAgIFBvcHVwQmVoYXZpb3JMb2FkZXIucHJvdG90eXBlLmxvYWQgPSBmdW5jdGlvbiAoY29uZmlnLCBmb3JtKSB7CiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUG9wdXBCZWhhdmlvckxvYWRlci5pc0Jsb2NrZWQoY29uZmlnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgQ29tcG9zaXRpb25Dc3NMb2FkZXIubG9hZENvbXBvc2l0aW9uQ3NzKGNvbmZpZyldOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwVG9nZ2xlcihjb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmV4cGlyYXRpb24ubWV0aG9kID09PSAnc3VibWl0Q29va2llJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBCZWhhdmlvckxvYWRlci5zZXRCbG9ja2luZ0Nvb2tpZShjb25maWcsIC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3B1cEJlaGF2aW9yTG9hZGVyLnNldEJsb2NraW5nQ29va2llKGNvbmZpZywgMzY1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH07CiAgICBQb3B1cEJlaGF2aW9yTG9hZGVyLnByb3RvdHlwZS5zZXR1cFRvZ2dsZXIgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgdmFyIGNvbnRhaW5lckRpdklkID0gJyNzZS13ZWJmb3JtLXBvcHVwLScKICAgICAgICAgICAgKyBjb25maWcuZm9ybUd1aWQ7CiAgICAgICAgdmFyIG1vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjb250YWluZXJEaXZJZCArICIgLnNlLXdlYmZvcm0tdjItbW9kYWwiKTsKICAgICAgICB2YXIgY2xvc2VCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRhaW5lckRpdklkICsgIiAuc2Utd2ViZm9ybS12Mi1jbG9zZS1idXR0b24iKTsKICAgICAgICB2YXIgdG9nZ2xlciA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbW9kYWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgIHZhciBkaXNwbGF5ZWQgPSBtb2RhbC5jbGFzc0xpc3QudG9nZ2xlKCJzZS13ZWJmb3JtLXYyLXNob3ctbW9kYWwiKTsKICAgICAgICAgICAgaWYgKCFkaXNwbGF5ZWQpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoY29uZmlnLmV4cGlyYXRpb24ubWV0aG9kID09PSAnY29va2llJykgewogICAgICAgICAgICAgICAgUG9wdXBCZWhhdmlvckxvYWRlci5zZXRCbG9ja2luZ0Nvb2tpZShjb25maWcsIGNvbmZpZy5leHBpcmF0aW9uLnZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFBvcHVwQmVoYXZpb3JMb2FkZXIuc2V0QmxvY2tpbmdDb29raWUoY29uZmlnLCBudWxsKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdmFyIHdpbmRvd01vZGFsQ2xvc2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbW9kYWwpIHsKICAgICAgICAgICAgICAgIHRvZ2dsZXIoKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgaWYgKGNvbmZpZy50cmlnZ2VyLm5hbWUgPT09ICdub25lJykgewogICAgICAgICAgICB0b2dnbGVyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGNvbmZpZy50cmlnZ2VyLm5hbWUgPT09ICdkZWxheScpIHsKICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodG9nZ2xlciwgTnVtYmVyKGNvbmZpZy50cmlnZ2VyLnZhbHVlKS52YWx1ZU9mKCkgKiAxMDAwKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoY29uZmlnLnRyaWdnZXIubmFtZSA9PT0gJ3Njcm9sbCcpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKG1vZGFsLmhhc0F0dHJpYnV0ZSgnZGF0YS10b2dnbGVkJykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoU2Nyb2xsRGlzcGxheURlY2lkZXIuc2hvdWxkQmVEaXNwbGF5ZWQoY29uZmlnKSkgewogICAgICAgICAgICAgICAgICAgIG1vZGFsLnNldEF0dHJpYnV0ZSgnZGF0YS10b2dnbGVkJywgJzEnKTsKICAgICAgICAgICAgICAgICAgICB0b2dnbGVyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRvZ2dsZXIpOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHdpbmRvd01vZGFsQ2xvc2UpOwogICAgfTsKICAgIFBvcHVwQmVoYXZpb3JMb2FkZXIuaXNNb2JpbGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FuZHJvaWQvaSkKICAgICAgICAgICAgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvd2ViT1MvaSkKICAgICAgICAgICAgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBob25lL2kpCiAgICAgICAgICAgIHx8IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQYWQvaSkKICAgICAgICAgICAgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVBvZC9pKQogICAgICAgICAgICB8fCBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9CbGFja0JlcnJ5L2kpCiAgICAgICAgICAgIHx8IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1dpbmRvd3MgUGhvbmUvaSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CiAgICBQb3B1cEJlaGF2aW9yTG9hZGVyLmhpZGVQb3B1cE9uTW9iaWxlID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHJldHVybiAoUG9wdXBCZWhhdmlvckxvYWRlci5pc01vYmlsZSgpICYmIGNvbmZpZy5oaWRlUG9wdXBPbk1vYmlsZSk7CiAgICB9OwogICAgUG9wdXBCZWhhdmlvckxvYWRlci5pc0Jsb2NrZWQgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgaWYgKFBvcHVwQmVoYXZpb3JMb2FkZXIuaXNQcmV2aWV3KGNvbmZpZykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoUG9wdXBCZWhhdmlvckxvYWRlci5oaWRlUG9wdXBPbk1vYmlsZShjb25maWcpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICB2YXIgd2ViRm9ybUJsb2NrZXJDb29raWVOYW1lID0gUG9wdXBCZWhhdmlvckxvYWRlci5nZXRCbG9ja2luZ0Nvb2tpZU5hbWUoY29uZmlnKTsKICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cCgnKD86Xnw7ICknCiAgICAgICAgICAgICsgZW5jb2RlVVJJQ29tcG9uZW50KHdlYkZvcm1CbG9ja2VyQ29va2llTmFtZSkKICAgICAgICAgICAgKyAnPShbXjtdKiknKS5leGVjKGRvY3VtZW50LmNvb2tpZSk7CiAgICAgICAgdmFyIGNvb2tpZVZhbHVlID0gcmVzdWx0ID8gcmVzdWx0WzFdIDogbnVsbDsKICAgICAgICByZXR1cm4gY29va2llVmFsdWUgPT09ICdzZXQnOwogICAgfTsKICAgIFBvcHVwQmVoYXZpb3JMb2FkZXIuaXNQcmV2aWV3ID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZi5zdGFydHNXaXRoKGNvbmZpZy5yb290VXJsKTsKICAgIH07CiAgICBQb3B1cEJlaGF2aW9yTG9hZGVyLmdldEJsb2NraW5nQ29va2llTmFtZSA9IGZ1bmN0aW9uIChjb25maWcpIHsKICAgICAgICByZXR1cm4gJ3NlLXdlYmZvcm0tc2Vzc2lvbi0nICsgY29uZmlnLmZvcm1HdWlkOwogICAgfTsKICAgIFBvcHVwQmVoYXZpb3JMb2FkZXIuc2V0QmxvY2tpbmdDb29raWUgPSBmdW5jdGlvbiAoY29uZmlnLCBkYXlzKSB7CiAgICAgICAgaWYgKFBvcHVwQmVoYXZpb3JMb2FkZXIuaXNQcmV2aWV3KGNvbmZpZykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgZXhwaXJlcyA9ICcnOwogICAgICAgIGlmIChkYXlzICE9PSBudWxsKSB7CiAgICAgICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7CiAgICAgICAgICAgIGV4cGlyZXMgPSAiOyBleHBpcmVzPSIgKyBkYXRlLnRvVVRDU3RyaW5nKCk7CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmNvb2tpZQogICAgICAgICAgICA9IFBvcHVwQmVoYXZpb3JMb2FkZXIuZ2V0QmxvY2tpbmdDb29raWVOYW1lKGNvbmZpZykKICAgICAgICAgICAgICAgICsgIj0iCiAgICAgICAgICAgICAgICArICdzZXQnCiAgICAgICAgICAgICAgICArIGV4cGlyZXMKICAgICAgICAgICAgICAgICsgJzsgcGF0aD0vJzsKICAgIH07CiAgICByZXR1cm4gUG9wdXBCZWhhdmlvckxvYWRlcjsKfSgpKTsKdmFyIFNjcm9sbERpc3BsYXlEZWNpZGVyID0gKGZ1bmN0aW9uICgpIHsKICAgIGZ1bmN0aW9uIFNjcm9sbERpc3BsYXlEZWNpZGVyKCkgewogICAgfQogICAgU2Nyb2xsRGlzcGxheURlY2lkZXIuc2hvdWxkQmVEaXNwbGF5ZWQgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgdmFyIGlzQWJzb2x1dGUgPSBjb25maWcudHJpZ2dlci52YWx1ZS5pbmRleE9mKCclJykgPT09IC0xOwogICAgICAgIGlmIChpc0Fic29sdXRlKSB7CiAgICAgICAgICAgIHZhciBzY3JvbGxlZFRvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CiAgICAgICAgICAgIHJldHVybiBzY3JvbGxlZFRvcCA+PSBOdW1iZXIoY29uZmlnLnRyaWdnZXIudmFsdWUpLnZhbHVlT2YoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICB2YXIgYiA9IGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgIHZhciBwZXJjZW50ID0gKGguc2Nyb2xsVG9wIHx8IGIuc2Nyb2xsVG9wKQogICAgICAgICAgICAgICAgLyAoKGguc2Nyb2xsSGVpZ2h0IHx8IGIuc2Nyb2xsSGVpZ2h0KSAtIGguY2xpZW50SGVpZ2h0KQogICAgICAgICAgICAgICAgKiAxMDA7CiAgICAgICAgICAgIHJldHVybiBwZXJjZW50ID49IE51bWJlcihjb25maWcudHJpZ2dlci52YWx1ZSkudmFsdWVPZigpOwogICAgICAgIH0KICAgIH07CiAgICByZXR1cm4gU2Nyb2xsRGlzcGxheURlY2lkZXI7Cn0oKSk7CnZhciBTbGlkZXVwQmVoYXZpb3JMb2FkZXIgPSAoZnVuY3Rpb24gKCkgewogICAgZnVuY3Rpb24gU2xpZGV1cEJlaGF2aW9yTG9hZGVyKCkgewogICAgfQogICAgU2xpZGV1cEJlaGF2aW9yTG9hZGVyLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewogICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0LCBDb21wb3NpdGlvbkNzc0xvYWRlci5sb2FkQ29tcG9zaXRpb25Dc3MoY29uZmlnKV07CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBUb2dnbGVyKGNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfTsKICAgIFNsaWRldXBCZWhhdmlvckxvYWRlci5wcm90b3R5cGUuc2V0dXBUb2dnbGVyID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHZhciBjb250YWluZXJEaXZJZCA9ICdzZS13ZWJmb3JtLXNsaWRldXAtJwogICAgICAgICAgICArIGNvbmZpZy5mb3JtR3VpZDsKICAgICAgICB2YXIgdHJpZ2dlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZS13ZWJmb3JtLXNsaWRldXAtdHJpZ2dlci0nICsgY29uZmlnLmZvcm1HdWlkKTsKICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyRGl2SWQpOwogICAgICAgIHZhciBhdmFpbGFibGVIZWlnaHQgPSBzY3JlZW4uYXZhaWxIZWlnaHQgKiAwLjg7CiAgICAgICAgaWYgKGNvbnRhaW5lci5jbGllbnRIZWlnaHQgPj0gYXZhaWxhYmxlSGVpZ2h0KSB7CiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgKyAncHgnOwogICAgICAgICAgICBjb250YWluZXIuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7CiAgICAgICAgfQogICAgICAgIHZhciBmb3JtQ3Vyc29yID0gY29udGFpbmVyLmNsaWVudEhlaWdodDsKICAgICAgICBjb250YWluZXIuc3R5bGUuYm90dG9tID0gJy0nICsgZm9ybUN1cnNvciArICdweCc7CiAgICAgICAgdmFyIG9wZW5JZCA9IG51bGw7CiAgICAgICAgZnVuY3Rpb24gZm9ybUZyYW1lU2hvdygpIHsKICAgICAgICAgICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCB0cnVlKTsKICAgICAgICAgICAgZm9ybUN1cnNvciA9IE1hdGgubWF4KDAsIGZvcm1DdXJzb3IgLSAyMCk7CiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5ib3R0b20gPSAnLScgKyBmb3JtQ3Vyc29yICsgJ3B4JzsKICAgICAgICAgICAgaWYgKGZvcm1DdXJzb3IgPD0gMCkgewogICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwob3BlbklkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBvcGVuSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZm9ybUZyYW1lU2hvdywgMSk7CiAgICAgICAgfSk7CgogICAgICAgIGlmIChjb25maWcudHJpZ2dlci5uYW1lID09PSAnZGVsYXknKSB7CiAgICAgICAgICAgIHZhciB0b2dnbGVyID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdoaWRkZW4nLCBmYWxzZSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnaGlkZGVuJywgdHJ1ZSk7CiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRvZ2dsZXIsIE51bWJlcihjb25maWcudHJpZ2dlci52YWx1ZSkudmFsdWVPZigpICogMTAwMCk7CiAgICAgICAgfQoKICAgICAgICB2YXIgY2xvc2VCdXR0b24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLnNlLXdlYmZvcm0tdjItc2xpZGV1cC1jbG9zZS1idXR0b24nKTsKICAgICAgICB2YXIgY2xvc2VJZCA9IG51bGw7CiAgICAgICAgZnVuY3Rpb24gZm9ybUZyYW1lSGlkZSgpIHsKICAgICAgICAgICAgZm9ybUN1cnNvciA9IE1hdGgubWluKGNvbnRhaW5lci5jbGllbnRIZWlnaHQsIGZvcm1DdXJzb3IgKyAyMCk7CiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5ib3R0b20gPSAnLScgKyBmb3JtQ3Vyc29yICsgJ3B4JzsKICAgICAgICAgICAgaWYgKGZvcm1DdXJzb3IgPj0gY29udGFpbmVyLmNsaWVudEhlaWdodCkgewogICAgICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xvc2VJZCk7CiAgICAgICAgICAgICAgICB0cmlnZ2VyLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGRlbicsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjbG9zZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgY2xvc2VJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChmb3JtRnJhbWVIaWRlLCAxKTsKICAgICAgICB9KTsKICAgIH07CiAgICByZXR1cm4gU2xpZGV1cEJlaGF2aW9yTG9hZGVyOwp9KCkpOwp2YXIgVmFsaWRhdGlvbkxvYWRlciA9IChmdW5jdGlvbiAoKSB7CiAgICBmdW5jdGlvbiBWYWxpZGF0aW9uTG9hZGVyKCkgewogICAgfQogICAgVmFsaWRhdGlvbkxvYWRlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChjb25maWcsIGZvcm0pIHsKICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJykgewogICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmxvYWQoY29uZmlnLCBmb3JtKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCwgdGhpcy5sb2FkKGNvbmZpZywgZm9ybSldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAxKTsKICAgIH07CiAgICBWYWxpZGF0aW9uTG9hZGVyLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24gKGNvbmZpZywgZm9ybSkgewogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIHJlYWR5OwogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICByZWFkeSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEZvcm1WYWxpZGF0b3IoY29uZmlnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEVtYWlsQ29ycmVjdGlvblN1Z2dlc3RlckpzKGNvbmZpZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRFbWFpbENvcnJlY3Rpb25TdWdnZXN0ZXJDc3MoY29uZmlnKQogICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIFByb21pc2UuYWxsKHJlYWR5KV07CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIE5ldHRlLmluaXRGb3JtKGZvcm0pOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRBdXRvQ29tcGxldGUoY29uZmlnLCBmb3JtKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OwogICAgVmFsaWRhdGlvbkxvYWRlci5wcm90b3R5cGUuaW5pdEF1dG9Db21wbGV0ZSA9IGZ1bmN0aW9uIChjb25maWcsIGZvcm0pIHsKICAgICAgICBuZXcgYXV0b0NvbXBsZXRlKHsKICAgICAgICAgICAgc2VsZWN0b3I6IGZvcm0ucXVlcnlTZWxlY3RvcignaW5wdXRbZGF0YS1lbWFpbGFkZHJlc3M9IjEiXScpLAogICAgICAgICAgICBtaW5DaGFyczogNSwKICAgICAgICAgICAgZGVsYXk6IDUwMCwKICAgICAgICAgICAgc291cmNlOiBmdW5jdGlvbiAodGVybSwgcmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgeGhyOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBjb25maWcucm9vdFVybAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnL2FwaS92My9lbWFpbC1jb3JyZWN0aW9uLXN1Z2dlc3Rlcj9lbWFpbGFkZHJlc3M9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB0ZXJtKTsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3VnZ2VzdGlvbiA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCkuZGF0YS5zdWdnZXN0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWdnZXN0aW9uICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZShbc3VnZ2VzdGlvbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwogICAgVmFsaWRhdGlvbkxvYWRlci5wcm90b3R5cGUubG9hZEVtYWlsQ29ycmVjdGlvblN1Z2dlc3RlckNzcyA9IGZ1bmN0aW9uIChjb25maWcpIHsKICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBjc3NJZCwgbGluaywgcmVzdWx0OwogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CiAgICAgICAgICAgICAgICBjc3NJZCA9ICdzZS1hdXRvY29tcGxldGUtY3NzJzsKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjc3NJZCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CiAgICAgICAgICAgICAgICBsaW5rLmlkID0gY3NzSWQ7CiAgICAgICAgICAgICAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAgICAgICAgICAgICAgIGxpbmsudHlwZSA9ICd0ZXh0L2Nzcyc7CiAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBjb25maWcucm9vdFVybCArICcvd2ViLWZvcm1zLXYyL2F1dG8tY29tcGxldGUuY3NzJzsKICAgICAgICAgICAgICAgIGxpbmsubWVkaWEgPSAnYWxsJzsKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgbGluay5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGxpbmspOwogICAgICAgICAgICAgICAgcmV0dXJuIFsyLCByZXN1bHRdOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH07CiAgICBWYWxpZGF0aW9uTG9hZGVyLnByb3RvdHlwZS5sb2FkRW1haWxDb3JyZWN0aW9uU3VnZ2VzdGVySnMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgc2NyaXB0LCByZXN1bHQ7CiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXV0b0NvbXBsZXRlICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gY29uZmlnLnJvb3RVcmwgKyAnL3dlYi1mb3Jtcy12Mi9hdXRvLWNvbXBsZXRlLm1pbi5qcyc7CiAgICAgICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgICAgICAgICAgICAgIHJldHVybiBbMiwgcmVzdWx0XTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OwogICAgVmFsaWRhdGlvbkxvYWRlci5wcm90b3R5cGUubG9hZEZvcm1WYWxpZGF0b3IgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgc2NyaXB0LCByZXN1bHQ7CiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgTmV0dGUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9KV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBOZXR0ZSA9IHsKICAgICAgICAgICAgICAgICAgICBub0luaXQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgaW5pdEZvcm06IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgICAgICAgICBzY3JpcHQuc3JjID0gY29uZmlnLnJvb3RVcmwgKyAnL3dlYi1mb3Jtcy12Mi9uZXR0ZUZvcm1zLm1pbi5qcyc7CiAgICAgICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgICAgICAgICAgICAgIHJldHVybiBbMiwgcmVzdWx0XTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OwogICAgcmV0dXJuIFZhbGlkYXRpb25Mb2FkZXI7Cn0oKSk7CnZhciBXZWJGb3JtTG9hZGVyID0gKGZ1bmN0aW9uICgpIHsKICAgIGZ1bmN0aW9uIFdlYkZvcm1Mb2FkZXIoKSB7CiAgICAgICAgdGhpcy52YWxpZGF0aW9uTG9hZGVyID0gbmV3IFZhbGlkYXRpb25Mb2FkZXIoKTsKICAgICAgICB0aGlzLmNvbXBvc2l0aW9uQmVoYXZpb3JMb2FkZXIgPSBuZXcgQ29tcG9zaXRpb25CZWhhdmlvckxvYWRlcigpOwogICAgfQogICAgV2ViRm9ybUxvYWRlci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnJlbmRlcihjb25maWcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIFs0LCB0aGlzLnJlbmRlcihjb25maWcpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7IH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICBzY3JpcHQuc3JjID0gJ2h0dHBzOi8vY2RuLnBvbHlmaWxsLmlvL3YyL3BvbHlmaWxsLm1pbi5qcz9mZWF0dXJlcz1lczYnOwogICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICAgICAgfSwgMSk7CiAgICB9OwogICAgV2ViRm9ybUxvYWRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIGZvcm1IdG1sLCBmb3JtOwogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQsIHRoaXMubG9hZEZvcm0oY29uZmlnKV07CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBmb3JtSHRtbCA9IF9hLnNlbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSA9IFdlYkZvcm1Mb2FkZXIuaW5zZXJ0Rm9ybVRvRG9tKGNvbmZpZywgZm9ybUh0bWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwVHJhY2tpbmdJbnB1dHNTZXNzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgUHJvbWlzZS5hbGwoWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9zaXRpb25CZWhhdmlvckxvYWRlci5pbml0KGNvbmZpZywgZm9ybSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uTG9hZGVyLmluaXQoY29uZmlnLCBmb3JtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH07CiAgICBXZWJGb3JtTG9hZGVyLnByb3RvdHlwZS5zZXR1cFRyYWNraW5nSW5wdXRzU2Vzc2lvbiA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgdyA9IHdpbmRvdzsKICAgICAgICB3Ll9zc2FxID0gdy5fc3NhcSB8fCBbXTsKICAgICAgICB3Ll9zc2FxLnB1c2goWydnZXRTZXNzaW9uSWQnLCBmdW5jdGlvbiAoc2Vzc2lvbklkKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Utc2Vzc2lvbmlkLWZpZWxkJykudmFsdWUgPSBzZXNzaW9uSWQ7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Utc2Vzc2lvblVpZC1maWVsZCcpLnZhbHVlID0gc2Vzc2lvbklkOwogICAgICAgICAgICB9XSk7CiAgICB9OwogICAgV2ViRm9ybUxvYWRlci5pbnNlcnRGb3JtVG9Eb20gPSBmdW5jdGlvbiAoY29uZmlnLCBmb3JtSHRtbCkgewogICAgICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBmb3JtSHRtbDsKICAgICAgICBpZiAoY29uZmlnLmNvbXBvc2l0aW9uID09PSAnc2xpZGUtdXAnIHx8IGNvbmZpZy5jb21wb3NpdGlvbiA9PT0gJ3BvcHVwJykgewogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHNjcmlwdFRhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZS13ZWJmb3JtU2NyaXB0TG9hZGVyLScKICAgICAgICAgICAgICAgICsgY29uZmlnLmFjY291bnRJZAogICAgICAgICAgICAgICAgKyAnLScKICAgICAgICAgICAgICAgICsgY29uZmlnLmZvcm1HdWlkKTsKICAgICAgICAgICAgaWYgKHNjcmlwdFRhZyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgc2NyaXB0VGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLXdlYmZvcm1TY3JpcHRMb2FkZXItJwogICAgICAgICAgICAgICAgICAgICsgY29uZmlnLmZvcm1HdWlkKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzY3JpcHRUYWcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgc2NyaXB0VGFnLm5leHRTaWJsaW5nKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXTsKICAgIH07CiAgICBXZWJGb3JtTG9hZGVyLnByb3RvdHlwZS5sb2FkRm9ybSA9IGZ1bmN0aW9uIChjb25maWcpIHsKICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciB4aHIsIHJlc3VsdDsKICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkgewogICAgICAgICAgICAgICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgY29uZmlnLnJvb3RVcmwKICAgICAgICAgICAgICAgICAgICArICcvcHVibGljL3dlYi1mb3Jtcy12Mi9sb2FkLWZvcm0taHRtbC13cmFwcGVyLycKICAgICAgICAgICAgICAgICAgICArIGNvbmZpZy5hY2NvdW50SWQKICAgICAgICAgICAgICAgICAgICArICctJwogICAgICAgICAgICAgICAgICAgICsgY29uZmlnLmZvcm1HdWlkKTsKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoJycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgeGhyLnNlbmQoKTsKICAgICAgICAgICAgICAgIHJldHVybiBbMiwgcmVzdWx0XTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9OwogICAgcmV0dXJuIFdlYkZvcm1Mb2FkZXI7Cn0oKSk7CgoJdmFyIGxvYWRlciA9IG5ldyBXZWJGb3JtTG9hZGVyKCk7Cgl2YXIgY29uZmlnID0gewoJCXJvb3RVcmw6ICJodHRwczpcL1wvYXBwLnNtYXJ0ZW1haWxpbmcuY3pcLyIsCgkJYWNjb3VudElkOiAxNTEyNzQsCgkJaGlkZVBvcHVwT25Nb2JpbGU6IHRydWUsCgkJZm9ybUd1aWQ6ICJyY2d5cmEyZHQyOWJ1YnNvZDQ4dnEyOGp4cTZhZzNwOXl3d2JqOTFycTB0Mjd6eHVmbGI0dDQzYnhqdDNhbGgydTRwYTQ2OWpncTNlMzk2cGs5MWpiOG92MXlmM3ZwbmF5em5xIiwKCQljb21wb3NpdGlvbjogImRlZmF1bHQiLAoJCXRyaWdnZXI6IHsKCQkJbmFtZTogIm5vbmUiLAoJCQl2YWx1ZTogbnVsbAoJCX0sCgkJZXhwaXJhdGlvbjogewoJCQltZXRob2Q6ICJzdWJtaXRDb29raWUiLAoJCQl2YWx1ZTogMzAKCQl9Cgl9OwoJdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Utd2ViZm9ybS0nICsgMSk7Cglsb2FkZXIudmFsaWRhdGlvbkxvYWRlci5pbml0KAoJCWNvbmZpZywKCQlmb3JtCgkpOwoJbG9hZGVyLmNvbXBvc2l0aW9uQmVoYXZpb3JMb2FkZXIuaW5pdCgKCQljb25maWcsCgkJZm9ybQoJKQo8L3NjcmlwdD4K
Komunita Firemného Kouča
Pridaj sa aj do Komunity Firemného kouča, kde nájdeš najnovšie soft skills nástroje.
Komunita na Facebooku
KATEGÓRIE
Líderské zručnosti
Komunikačné zručnosti
Osobnostný rozvoj
Energy management
Predajné techniky
Kariérne zručnosti
FACEBOOK
Firemný Kouč
Firemný kouč
Vzdelávacia platforma plná soft skills nástrojov patrí pod vzdelávaciu spoločnosť SUVko Coaching, ktorá tieto nástroje preveruje a trénuje vo firemnom vzdelávaní.
Visit our Facebook
Visit our Instagram
Visit our LinkedIn
Kontaktné údaje
© Copyright 2018 - SUVko s.r.o. - Všetky práva vyhradené
Scroll Up
linkedin
facebook
pinterest
youtube
rss
twitter
instagram
facebook-blank
rss-blank
linkedin-blank
pinterest
youtube
twitter
instagram