Kein Zugriff
Dieser Bereich ist nur fuer Pruefer / Auditoren zugaenglich.
Pruefer-Bereich
Teilnehmerergebnisse einsehen.
–
–
Modul-Details
Freischaltung, letzter Zugriff, PDF-Status und Video-Fortschritt
KGZ1bmN0aW9uKCl7CiAgdmFyIEFVRElUT1JfRU1BSUxTID0gWyJwcnVlZmVuQGRqaWJpbmhvLmNvbSJdOwogIHZhciAkID0gZnVuY3Rpb24oaWQpeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyB9OwoKICBmdW5jdGlvbiBnZXRVc2VyKCl7CiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZGpiX3VzZXIiKSB8fCAibnVsbCIpOyB9CiAgICBjYXRjaChlKXsgcmV0dXJuIG51bGw7IH0KICB9CgogIGZ1bmN0aW9uIGxvYWRTY3JpcHQoc3JjKXsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpewogICAgICB2YXIgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwogICAgICBzLnNyYyA9IHNyYzsgcy5vbmxvYWQgPSByZXNvbHZlOyBzLm9uZXJyb3IgPSByZWplY3Q7CiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7CiAgICB9KTsKICB9CgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyAgT1JORUsgVkVSSSAgKGdlcmNlayBBUEkgZ2VsaW5jZSBTQURFQ0UgYnVyYXNpIGRlZ2lzaXIpCiAgLy8gIEJla2xlbmVuIGVuZHBvaW50OiBnZXRBbGxQYXJ0aWNpcGFudHMgLyBnZXRVc2VyUHJvZ3Jlc3MKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgdmFyIE1PRFVMX1RJVExFUyA9IFsiU2Vzc2lvbiAxOiBHcnVuZGxhZ2VuIiwgIlNlc3Npb24gMjogVmVydGllZnVuZyJdOwoKICB2YXIgUEFSVElDSVBBTlRTID0gWwogICAgewogICAgICBuYW1lOiAiTGVuYSBIb2ZmbWFubiIsIGVtYWlsOiAibGVuYS5oQGV4YW1wbGUuZGUiLAogICAgICBlbnJvbGxlZDogIjAxLjAyLjIwMjYiLCBzdGF0dXM6ICJBYmdlc2NobG9zc2VuIiwgY29tcGxldGVkOiAiMTIuMDMuMjAyNiIsCiAgICAgIHF1aXo6IHsgc2NvcmU6IDkyLCBjb3JyZWN0OiAxMSwgdG90YWw6IDEyLCBkYXRlOiAiMTIuMDMuMjAyNiIgfSwKICAgICAgc2Vzc2lvbnM6IFsKICAgICAgICB7IHRpdGxlOiBNT0RVTF9USVRMRVNbMF0sIHBlcmNlbnQ6IDEwMCwgcGRmOiB0cnVlLCAgYWNjZXNzOiAiMDEuMDIuMjAyNiAxNDoyMCIsIGxhc3RXYXRjaDogIjAzLjAyLjIwMjYgMTk6MDUiIH0sCiAgICAgICAgeyB0aXRsZTogTU9EVUxfVElUTEVTWzFdLCBwZXJjZW50OiAxMDAsIHBkZjogdHJ1ZSwgIGFjY2VzczogIjAzLjAyLjIwMjYgMTk6MTAiLCBsYXN0V2F0Y2g6ICIxMC4wMy4yMDI2IDIxOjE0IiB9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICJNYXJjbyBCYXVlciIsIGVtYWlsOiAibWFyY28uYmF1ZXJAZXhhbXBsZS5kZSIsCiAgICAgIGVucm9sbGVkOiAiMTAuMDIuMjAyNiIsIHN0YXR1czogIkluIEJlYXJiZWl0dW5nIiwgY29tcGxldGVkOiAiLSIsCiAgICAgIHF1aXo6IG51bGwsCiAgICAgIHNlc3Npb25zOiBbCiAgICAgICAgeyB0aXRsZTogTU9EVUxfVElUTEVTWzBdLCBwZXJjZW50OiAxMDAsIHBkZjogdHJ1ZSwgIGFjY2VzczogIjEwLjAyLjIwMjYgMDk6MzAiLCBsYXN0V2F0Y2g6ICIxMS4wMi4yMDI2IDE4OjQwIiB9LAogICAgICAgIHsgdGl0bGU6IE1PRFVMX1RJVExFU1sxXSwgcGVyY2VudDogMzUsICBwZGY6IGZhbHNlLCBhY2Nlc3M6ICIxMS4wMi4yMDI2IDE4OjQ1IiwgbGFzdFdhdGNoOiAiMTIuMDIuMjAyNiAyMDowMiIgfQogICAgICBdCiAgICB9LAogICAgewogICAgICBuYW1lOiAiQXlsaW4gRGVtaXIiLCBlbWFpbDogImF5bGluLmRlbWlyQGV4YW1wbGUuZGUiLAogICAgICBlbnJvbGxlZDogIjA1LjAyLjIwMjYiLCBzdGF0dXM6ICJBYmdlc2NobG9zc2VuIiwgY29tcGxldGVkOiAiMDkuMDMuMjAyNiIsCiAgICAgIHF1aXo6IHsgc2NvcmU6IDc4LCBjb3JyZWN0OiA3LCB0b3RhbDogOSwgZGF0ZTogIjA5LjAzLjIwMjYiIH0sCiAgICAgIHNlc3Npb25zOiBbCiAgICAgICAgeyB0aXRsZTogTU9EVUxfVElUTEVTWzBdLCBwZXJjZW50OiAxMDAsIHBkZjogdHJ1ZSwgIGFjY2VzczogIjA1LjAyLjIwMjYgMTY6MDAiLCBsYXN0V2F0Y2g6ICIwNy4wMi4yMDI2IDE3OjMwIiB9LAogICAgICAgIHsgdGl0bGU6IE1PRFVMX1RJVExFU1sxXSwgcGVyY2VudDogMTAwLCBwZGY6IGZhbHNlLCBhY2Nlc3M6ICIwNy4wMi4yMDI2IDE3OjM1IiwgbGFzdFdhdGNoOiAiMDguMDMuMjAyNiAyMjoxMCIgfQogICAgICBdCiAgICB9LAogICAgewogICAgICBuYW1lOiAiVG9tIEtydWVnZXIiLCBlbWFpbDogInRvbS5rQGV4YW1wbGUuZGUiLAogICAgICBlbnJvbGxlZDogIjE4LjAyLjIwMjYiLCBzdGF0dXM6ICJJbiBCZWFyYmVpdHVuZyIsIGNvbXBsZXRlZDogIi0iLAogICAgICBxdWl6OiBudWxsLAogICAgICBzZXNzaW9uczogWwogICAgICAgIHsgdGl0bGU6IE1PRFVMX1RJVExFU1swXSwgcGVyY2VudDogNjAsIHBkZjogZmFsc2UsIGFjY2VzczogIjE4LjAyLjIwMjYgMTE6MTUiLCBsYXN0V2F0Y2g6ICIxOC4wMi4yMDI2IDExOjQ4IiB9LAogICAgICAgIHsgdGl0bGU6IE1PRFVMX1RJVExFU1sxXSwgcGVyY2VudDogMCwgIHBkZjogZmFsc2UsIGFjY2VzczogIi0iLCBsYXN0V2F0Y2g6ICItIiB9CiAgICAgIF0KICAgIH0KICBdOwoKICBmdW5jdGlvbiBhdmdDb21wbGV0aW9uKHApewogICAgdmFyIHN1bSA9IDA7CiAgICBmb3IodmFyIGk9MDtpPHAuc2Vzc2lvbnMubGVuZ3RoO2krKyl7IHN1bSArPSBwLnNlc3Npb25zW2ldLnBlcmNlbnQ7IH0KICAgIHJldHVybiBNYXRoLnJvdW5kKHN1bSAvIHAuc2Vzc2lvbnMubGVuZ3RoKTsKICB9CgogIGZ1bmN0aW9uIGVzYyhzKXsKICAgIHJldHVybiBTdHJpbmcocyA9PSBudWxsID8gIiIgOiBzKQogICAgICAucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTGlzdChmaWx0ZXIpewogICAgdmFyIGJveCA9ICQoImhhLWxpc3QiKTsKICAgIGJveC5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBmID0gKGZpbHRlciB8fCAiIikudG9Mb3dlckNhc2UoKTsKICAgIHZhciBzaG93biA9IDA7CiAgICBQQVJUSUNJUEFOVFMuZm9yRWFjaChmdW5jdGlvbihwLCBpZHgpewogICAgICBpZihmICYmIChwLm5hbWUgKyBwLmVtYWlsKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZikgPCAwKXsgcmV0dXJuOyB9CiAgICAgIHNob3duKys7CiAgICAgIHZhciBhdmcgPSBhdmdDb21wbGV0aW9uKHApOwogICAgICB2YXIgZG9uZSA9IHAuc3RhdHVzID09PSAiQWJnZXNjaGxvc3NlbiI7CiAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgcm93LnN0eWxlLmNzc1RleHQgPSAiZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjE2cHggMjBweDtjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkOyI7CiAgICAgIHJvdy5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojMWExYTFhOyI+JyArIGVzYyhwLm5hbWUpICsgJzwvZGl2PicKICAgICAgICArICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTNweDtjb2xvcjojODg4OyI+JyArIGVzYyhwLmVtYWlsKSArICc8L2Rpdj48L2Rpdj4nCiAgICAgICAgKyAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweDsiPicKICAgICAgICArICc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0OyI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6Izg4ODsiPlZpZGVvPC9kaXY+JwogICAgICAgICsgJzxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWExYTFhOyI+JyArIGF2ZyArICclPC9kaXY+PC9kaXY+JwogICAgICAgICsgJzxkaXYgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7bWluLXdpZHRoOjU0cHg7Ij48ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjojODg4OyI+UXVpejwvZGl2PicKICAgICAgICArICc8ZGl2IHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzFhMWExYTsiPicgKyAocC5xdWl6ID8gcC5xdWl6LnNjb3JlICsgIiUiIDogIi0iKSArICc8L2Rpdj48L2Rpdj4nCiAgICAgICAgKyAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtwYWRkaW5nOjRweCAxMHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7JwogICAgICAgICsgKGRvbmUgPyAiY29sb3I6IzFkN2EzYTtiYWNrZ3JvdW5kOiNlNmY0ZWE7IiA6ICJjb2xvcjojYjU2NTFkO2JhY2tncm91bmQ6I2ZiZWVkZTsiKSArICciPicKICAgICAgICArIGVzYyhwLnN0YXR1cykgKyAnPC9zcGFuPicKICAgICAgICArICc8c3BhbiBzdHlsZT0iY29sb3I6I2JiYjtmb250LXNpemU6MThweDsiPiZyc2FxdW87PC9zcGFuPjwvZGl2Pic7CiAgICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCl7IHNob3dEZXRhaWwoaWR4KTsgfSk7CiAgICAgIGJveC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICBpZihzaG93biA9PT0gMCl7CiAgICAgIGJveC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT0icGFkZGluZzoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM4ODg7Ij5LZWluZSBUZWlsbmVobWVyIGdlZnVuZGVuLjwvZGl2Pic7CiAgICB9CiAgICAkKCJoYS1jb3VudCIpLnRleHRDb250ZW50ID0gUEFSVElDSVBBTlRTLmxlbmd0aCArICIgVGVpbG5laG1lciI7CiAgfQoKICB2YXIgY3VycmVudElkeCA9IC0xOwoKICBmdW5jdGlvbiBzaG93RGV0YWlsKGlkeCl7CiAgICBjdXJyZW50SWR4ID0gaWR4OwogICAgdmFyIHAgPSBQQVJUSUNJUEFOVFNbaWR4XTsKICAgICQoImhhLWxpc3QtdmlldyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAkKCJoYS1kZXRhaWwtdmlldyIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgd2luZG93LnNjcm9sbFRvKDAsMCk7CgogICAgJCgiaGEtZC1uYW1lIikudGV4dENvbnRlbnQgPSBwLm5hbWU7CiAgICAkKCJoYS1kLWVtYWlsIikudGV4dENvbnRlbnQgPSBwLmVtYWlsOwoKICAgIHZhciBhdmcgPSBhdmdDb21wbGV0aW9uKHApOwogICAgdmFyIGNhcmRzID0gWwogICAgICBbIkVpbmdlc2NocmllYmVuIiwgcC5lbnJvbGxlZF0sCiAgICAgIFsiU3RhdHVzIiwgcC5zdGF0dXNdLAogICAgICBbIlZpZGVvLUZvcnRzY2hyaXR0IiwgYXZnICsgIiUiXSwKICAgICAgWyJRdWl6LUVyZ2VibmlzIiwgcC5xdWl6ID8gKHAucXVpei5zY29yZSArICIlICgiICsgcC5xdWl6LmNvcnJlY3QgKyAiLyIgKyBwLnF1aXoudG90YWwgKyAiKSIpIDogIk5vY2ggbmljaHQiXSwKICAgICAgWyJBYnNjaGx1c3NkYXR1bSIsIHAuY29tcGxldGVkXQogICAgXTsKICAgIHZhciBjYm94ID0gJCgiaGEtZC1jYXJkcyIpOwogICAgY2JveC5pbm5lckhUTUwgPSAiIjsKICAgIGNhcmRzLmZvckVhY2goZnVuY3Rpb24oYyl7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBlbC5zdHlsZS5jc3NUZXh0ID0gImJhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlZGVkZWQ7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTRweCAxNnB4OyI7CiAgICAgIGVsLmlubmVySFRNTCA9ICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDtjb2xvcjojODg4O21hcmdpbi1ib3R0b206NHB4OyI+JyArIGNbMF0gKyAnPC9kaXY+JwogICAgICAgICsgJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWExYTFhOyI+JyArIGVzYyhjWzFdKSArICc8L2Rpdj4nOwogICAgICBjYm94LmFwcGVuZENoaWxkKGVsKTsKICAgIH0pOwoKICAgIHZhciBzYm94ID0gJCgiaGEtZC1zZXNzaW9ucyIpOwogICAgc2JveC5pbm5lckhUTUwgPSAiIjsKICAgIHAuc2Vzc2lvbnMuZm9yRWFjaChmdW5jdGlvbihzLCBpKXsKICAgICAgdmFyIGNvbCA9IHMucGVyY2VudCA+PSA5MCA/ICIjMWQ3YTNhIiA6IChzLnBlcmNlbnQgPiAwID8gIiNiNTY1MWQiIDogIiNiYmIiKTsKICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICByb3cuc3R5bGUuY3NzVGV4dCA9ICJwYWRkaW5nOjE0cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkOyI7CiAgICAgIHJvdy5pbm5lckhUTUwgPQogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206NnB4OyI+JwogICAgICAgICsgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzFhMWExYTsiPicgKyBlc2Mocy50aXRsZSkgKyAnPC9zcGFuPicKICAgICAgICArICc8YiBzdHlsZT0iY29sb3I6JyArIGNvbCArICc7Zm9udC1zaXplOjE0cHg7Ij4nICsgcy5wZXJjZW50ICsgJyU8L2I+PC9kaXY+JwogICAgICAgICsgJzxkaXYgc3R5bGU9ImhlaWdodDo2cHg7YmFja2dyb3VuZDojZWVlO2JvcmRlci1yYWRpdXM6OTlweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLWJvdHRvbTo4cHg7Ij4nCiAgICAgICAgKyAnPGRpdiBzdHlsZT0id2lkdGg6JyArIHMucGVyY2VudCArICclO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6JyArIGNvbCArICc7Ij48L2Rpdj48L2Rpdj4nCiAgICAgICAgKyAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxNHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM3Nzc7Ij4nCiAgICAgICAgKyAnPHNwYW4+RnJlaWdlc2NoYWx0ZXQ6IDxiIHN0eWxlPSJjb2xvcjojNTU1OyI+JyArIGVzYyhzLmFjY2VzcykgKyAnPC9iPjwvc3Bhbj4nCiAgICAgICAgKyAnPHNwYW4+WnVsZXR6dCBnZXNlaGVuOiA8YiBzdHlsZT0iY29sb3I6IzU1NTsiPicgKyBlc2Mocy5sYXN0V2F0Y2gpICsgJzwvYj48L3NwYW4+JwogICAgICAgICsgJzxzcGFuPlBERjogPGIgc3R5bGU9ImNvbG9yOicgKyAocy5wZGYgPyAiIzFkN2EzYSIgOiAiI2I5MWMxYyIpICsgJzsiPicgKyAocy5wZGYgPyAiZ2VsZXNlbiIgOiAibmljaHQgZ2VsZXNlbiIpICsgJzwvYj48L3NwYW4+JwogICAgICAgICsgJzwvZGl2Pic7CiAgICAgIHNib3guYXBwZW5kQ2hpbGQocm93KTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gYmFja1RvTGlzdCgpewogICAgJCgiaGEtZGV0YWlsLXZpZXciKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgJCgiaGEtbGlzdC12aWV3Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwwKTsKICB9CgogIGZ1bmN0aW9uIGRvd25sb2FkUmVwb3J0KCl7CiAgICBpZihjdXJyZW50SWR4IDwgMCkgcmV0dXJuOwogICAgdmFyIHAgPSBQQVJUSUNJUEFOVFNbY3VycmVudElkeF07CiAgICB2YXIgYnRuID0gJCgiaGEtcmVwb3J0LWJ0biIpOwogICAgaWYoYnRuKXsgYnRuLmRpc2FibGVkID0gdHJ1ZTsgYnRuLnRleHRDb250ZW50ID0gIlBERiB3aXJkIGVyc3RlbGx0IC4uLiI7IH0KCiAgICB2YXIgcmVhZHkgPSAodHlwZW9mIHdpbmRvdy5qc3BkZiAhPT0gInVuZGVmaW5lZCIgJiYgd2luZG93LmpzcGRmLmpzUERGKQogICAgICA/IFByb21pc2UucmVzb2x2ZSgpCiAgICAgIDogbG9hZFNjcmlwdCgiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanNwZGYvMi41LjEvanNwZGYudW1kLm1pbi5qcyIpOwoKICAgIHJlYWR5LnRoZW4oZnVuY3Rpb24oKXsKICAgICAgdmFyIGpzUERGID0gd2luZG93LmpzcGRmLmpzUERGOwogICAgICB2YXIgZG9jID0gbmV3IGpzUERGKHsgb3JpZW50YXRpb246ICJwb3J0cmFpdCIsIHVuaXQ6ICJtbSIsIGZvcm1hdDogImE0IiB9KTsKICAgICAgdmFyIFcgPSAyMTAsIHggPSAxOCwgeSA9IDIyOwoKICAgICAgZG9jLnNldEZpbGxDb2xvcigyMywgMjMsIDI3KTsKICAgICAgZG9jLnJlY3QoMCwgMCwgVywgMzAsICJGIik7CiAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMjQ0LCAxMjMsIDMyKTsKICAgICAgZG9jLnNldEZvbnQoImhlbHZldGljYSIsICJib2xkIik7CiAgICAgIGRvYy5zZXRGb250U2l6ZSgxNik7CiAgICAgIGRvYy50ZXh0KCJESklCSU5ITyIsIHgsIDE1KTsKICAgICAgZG9jLnNldFRleHRDb2xvcigyNTUsIDI1NSwgMjU1KTsKICAgICAgZG9jLnNldEZvbnRTaXplKDExKTsKICAgICAgZG9jLnNldEZvbnQoImhlbHZldGljYSIsICJub3JtYWwiKTsKICAgICAgZG9jLnRleHQoIlRlaWxuZWhtZXJiZXJpY2h0IC0gSGVsZGVuIEt1cnMiLCB4LCAyMyk7CgogICAgICB5ID0gNDI7CiAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMjYsIDI2LCAyNik7CiAgICAgIGRvYy5zZXRGb250KCJoZWx2ZXRpY2EiLCAiYm9sZCIpOwogICAgICBkb2Muc2V0Rm9udFNpemUoMTUpOwogICAgICBkb2MudGV4dChwLm5hbWUsIHgsIHkpOwogICAgICBkb2Muc2V0Rm9udCgiaGVsdmV0aWNhIiwgIm5vcm1hbCIpOwogICAgICBkb2Muc2V0Rm9udFNpemUoMTApOwogICAgICBkb2Muc2V0VGV4dENvbG9yKDExMCwgMTEwLCAxMTApOwogICAgICBkb2MudGV4dChwLmVtYWlsLCB4LCB5ICsgNik7CgogICAgICB5ICs9IDE2OwogICAgICBmdW5jdGlvbiBrdihsYWJlbCwgdmFsdWUpewogICAgICAgIGRvYy5zZXRUZXh0Q29sb3IoMTIwLDEyMCwxMjApOyBkb2Muc2V0Rm9udFNpemUoMTApOwogICAgICAgIGRvYy50ZXh0KGxhYmVsLCB4LCB5KTsKICAgICAgICBkb2Muc2V0VGV4dENvbG9yKDI2LDI2LDI2KTsgZG9jLnNldEZvbnQoImhlbHZldGljYSIsImJvbGQiKTsKICAgICAgICBkb2MudGV4dChTdHJpbmcodmFsdWUpLCB4ICsgNjAsIHkpOwogICAgICAgIGRvYy5zZXRGb250KCJoZWx2ZXRpY2EiLCJub3JtYWwiKTsKICAgICAgICB5ICs9IDc7CiAgICAgIH0KICAgICAga3YoIkVpbmdlc2NocmllYmVuIGFtOiIsIHAuZW5yb2xsZWQpOwogICAgICBrdigiU3RhdHVzOiIsIHAuc3RhdHVzKTsKICAgICAga3YoIlZpZGVvLUZvcnRzY2hyaXR0OiIsIGF2Z0NvbXBsZXRpb24ocCkgKyAiJSIpOwogICAgICBrdigiUXVpei1FcmdlYm5pczoiLCBwLnF1aXogPyAocC5xdWl6LnNjb3JlICsgIiUgKCIgKyBwLnF1aXouY29ycmVjdCArICIvIiArIHAucXVpei50b3RhbCArICIgcmljaHRpZykiKSA6ICJOb2NoIG5pY2h0IGFiZ2VsZWd0Iik7CiAgICAgIGlmKHAucXVpeil7IGt2KCJRdWl6IGFiZ2VsZWd0IGFtOiIsIHAucXVpei5kYXRlKTsgfQogICAgICBrdigiQWJzY2hsdXNzZGF0dW06IiwgcC5jb21wbGV0ZWQpOwoKICAgICAgeSArPSA0OwogICAgICBkb2Muc2V0RHJhd0NvbG9yKDIyMCwyMjAsMjIwKTsgZG9jLmxpbmUoeCwgeSwgVyAtIHgsIHkpOyB5ICs9IDk7CiAgICAgIGRvYy5zZXRGb250KCJoZWx2ZXRpY2EiLCJib2xkIik7IGRvYy5zZXRGb250U2l6ZSgxMik7IGRvYy5zZXRUZXh0Q29sb3IoMjYsMjYsMjYpOwogICAgICBkb2MudGV4dCgiTW9kdWwtRGV0YWlscyIsIHgsIHkpOyB5ICs9IDg7CgogICAgICBkb2Muc2V0Rm9udFNpemUoOSk7CiAgICAgIHAuc2Vzc2lvbnMuZm9yRWFjaChmdW5jdGlvbihzLCBpKXsKICAgICAgICBkb2Muc2V0Rm9udCgiaGVsdmV0aWNhIiwiYm9sZCIpOyBkb2Muc2V0VGV4dENvbG9yKDI2LDI2LDI2KTsKICAgICAgICBkb2MudGV4dCgoaSsxKSArICIuICIgKyBzLnRpdGxlICsgIiAgLSAgIiArIHMucGVyY2VudCArICIlIiwgeCwgeSk7IHkgKz0gNTsKICAgICAgICBkb2Muc2V0Rm9udCgiaGVsdmV0aWNhIiwibm9ybWFsIik7IGRvYy5zZXRUZXh0Q29sb3IoMTEwLDExMCwxMTApOwogICAgICAgIGRvYy50ZXh0KCJGcmVpZ2VzY2hhbHRldDogIiArIHMuYWNjZXNzICsgIiAgIHwgICBadWxldHp0IGdlc2VoZW46ICIgKyBzLmxhc3RXYXRjaCArICIgICB8ICAgUERGOiAiICsgKHMucGRmID8gImdlbGVzZW4iIDogIm5pY2h0IGdlbGVzZW4iKSwgeCArIDMsIHkpOwogICAgICAgIHkgKz0gODsKICAgICAgfSk7CgogICAgICB5ICs9IDY7CiAgICAgIGRvYy5zZXREcmF3Q29sb3IoMjIwLDIyMCwyMjApOyBkb2MubGluZSh4LCB5LCBXIC0geCwgeSk7IHkgKz0gNzsKICAgICAgZG9jLnNldEZvbnRTaXplKDgpOyBkb2Muc2V0VGV4dENvbG9yKDE1MCwxNTAsMTUwKTsKICAgICAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgIHZhciBzdGFtcCA9ICgiMCIrbm93LmdldERhdGUoKSkuc2xpY2UoLTIpICsgIi4iICsgKCIwIisobm93LmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSArICIuIiArIG5vdy5nZXRGdWxsWWVhcigpOwogICAgICBkb2MudGV4dCgiRXJzdGVsbHQgYW0gIiArIHN0YW1wICsgIiBkdXJjaCBkZW4gUHJ1ZWZlci1CZXJlaWNoLiBWZXJ0cmF1bGljaC4iLCB4LCB5KTsKCiAgICAgIGRvYy5zYXZlKCJCZXJpY2h0XyIgKyBwLm5hbWUucmVwbGFjZSgvW15BLVphLXowLTldL2csIl8iKSArICIucGRmIik7CiAgICAgIGlmKGJ0bil7IGJ0bi5kaXNhYmxlZCA9IGZhbHNlOyBidG4udGV4dENvbnRlbnQgPSAiQmVyaWNodCBhbHMgUERGIGhlcnVudGVybGFkZW4iOyB9CiAgICB9KS5jYXRjaChmdW5jdGlvbigpewogICAgICBpZihidG4peyBidG4uZGlzYWJsZWQgPSBmYWxzZTsgYnRuLnRleHRDb250ZW50ID0gIkJlcmljaHQgYWxzIFBERiBoZXJ1bnRlcmxhZGVuIjsgfQogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBpbml0KCl7CiAgICB2YXIgdXNlciA9IGdldFVzZXIoKTsKICAgIGlmKCF1c2VyIHx8ICF1c2VyLmF1dGhfdG9rZW4pewogICAgICAkKCJoYS1uZWVkLWxvZ2luIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBlbWFpbCA9ICh1c2VyLmVtYWlsIHx8ICIiKS50b0xvd2VyQ2FzZSgpOwogICAgaWYoQVVESVRPUl9FTUFJTFMuaW5kZXhPZihlbWFpbCkgPCAwKXsKICAgICAgJCgiaGEtbm8tYWNjZXNzIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgIHJldHVybjsKICAgIH0KICAgICQoImhhLXBhbmVsIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICByZW5kZXJMaXN0KCIiKTsKCiAgICB2YXIgc2VhcmNoID0gJCgiaGEtc2VhcmNoIik7CiAgICBpZihzZWFyY2gpeyBzZWFyY2guYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbigpeyByZW5kZXJMaXN0KHNlYXJjaC52YWx1ZSk7IH0pOyB9CiAgICB2YXIgYmFjayA9ICQoImhhLWJhY2siKTsKICAgIGlmKGJhY2speyBiYWNrLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYmFja1RvTGlzdCk7IH0KICAgIHZhciByZXAgPSAkKCJoYS1yZXBvcnQtYnRuIik7CiAgICBpZihyZXApeyByZXAuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBkb3dubG9hZFJlcG9ydCk7IH0KICB9CgogIGluaXQoKTsKfSkoKTsK