engdice Smart Contract
{
"id": "ssc-mainnet1",
"json": {
"contractName": "contract",
"contractAction": "deploy",
"contractPayload": {
"name": "engdice",
"params": "",
"code": "LyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi8KY29uc3QgU1RFRU1fUEVHR0VEX1NZTUJPTCA9ICdFTkcnOwpjb25zdCBDT05UUkFDVF9OQU1FID0gJ2VuZ2RpY2UnOwoKYWN0aW9ucy5jcmVhdGVTU0MgPSBhc3luYyhwYXlsb2FkKSA9PiB7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ3BhcmFtcycpOwoKICAgIGNvbnN0IHBhcmFtcyA9IHt9OwogICAgcGFyYW1zLmhvdXNlRWRnZSA9ICcwLjAxJzsKICAgIHBhcmFtcy5taW5CZXQgPSAnMC4xJzsKICAgIHBhcmFtcy5tYXhCZXQgPSAnMTAwJzsKICAgIGF3YWl0IGFwaS5kYi5pbnNlcnQoJ3BhcmFtcycsIHBhcmFtcyk7Cn07CgphY3Rpb25zLnJvbGwgPSBhc3luYyhwYXlsb2FkKSA9PiB7CiAgICAvLyBnZXQgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzCiAgICBjb25zdCB7IHJvbGwsIGFtb3VudCwgZGlyZWN0aW9uIH0gPSBwYXlsb2FkOwoKICAgIC8vIGNoZWNrIHRoZSBhY3Rpb24gcGFyYW1ldGVycwogICAgaWYgKGFwaS5hc3NlcnQocm9sbCAmJiBOdW1iZXIuaXNJbnRlZ2VyKHJvbGwpICYmIHJvbGwgPj0gMiAmJiByb2xsIDw9IDk2LCAncm9sbCBtdXN0IGJlIGFuIGludGVnZXIgYW5kIG11c3QgYmUgYmV0d2VlbiAyIGFuZCA5NicpICYmCiAgICAgICAgYXBpLmFzc2VydChhbW91bnQgJiYgdHlwZW9mIGFtb3VudCA9PT0gJ3N0cmluZycgJiYgYXBpLkJpZ051bWJlcihhbW91bnQpLmRwKCkgPD0gMyAmJiBhcGkuQmlnTnVtYmVyKGFtb3VudCkuZ3QoMCksICdpbnZhbGlkIGFtb3VudCcpICYmIGFwaS5hc3NlcnQoZGlyZWN0aW9uID09PSAnbGVzc2VyVGhhbicgfHwgZGlyZWN0aW9uID09PSAnZ3JlYXRlclRoYW4nLCAnaW52YWxpZCBkaXJlY3Rpb24nKSkgewogICAgICAgIC8vIGdldCB0aGUgY29udHJhY3QgcGFyYW1ldGVycwogICAgICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCdwYXJhbXMnLCB7fSk7CgogICAgICAgIC8vIGNoZWNrIHRoYXQgdGhlIGFtb3VudCBiZXQgaXMgaW4gdGhyIGFsbG93ZWQgcmFuZ2UKICAgICAgICBpZiAoYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGFtb3VudCkuZ3RlKHBhcmFtcy5taW5CZXQpICYmIGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUocGFyYW1zLm1heEJldCksICdhbW91bnQgbXVzdCBiZSBiZXR3ZWVuIG1pbkJldCBhbmQgbWF4QmV0JykpIHsKICAgICAgICAgICAgLy8gcmVxdWVzdCBsb2NrIG9mIGFtb3VudCBTVEVFTVAgdG9rZW5zCiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgndG9rZW5zJywgJ3RyYW5zZmVyVG9Db250cmFjdCcsIHsgc3ltYm9sOiBTVEVFTV9QRUdHRURfU1lNQk9MLCBxdWFudGl0eTogYW1vdW50LCB0bzogQ09OVFJBQ1RfTkFNRSB9KTsKCiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSB0b2tlbnMgd2VyZSBsb2NrZWQKICAgICAgICAgICAgaWYgKHJlcy5lcnJvcnMgPT09IHVuZGVmaW5lZCAmJgogICAgICAgICAgICAgICAgcmVzLmV2ZW50cyAmJiByZXMuZXZlbnRzLmZpbmQoZWwgPT4gZWwuY29udHJhY3QgPT09ICd0b2tlbnMnICYmIGVsLmV2ZW50ID09PSAndHJhbnNmZXJUb0NvbnRyYWN0JyAmJiBlbC5kYXRhLmZyb20gPT09IGFwaS5zZW5kZXIgJiYgZWwuZGF0YS50byA9PT0gQ09OVFJBQ1RfTkFNRSAmJiBlbC5kYXRhLnF1YW50aXR5ID09PSBhbW91bnQgJiYgZWwuZGF0YS5zeW1ib2wgPT09IFNURUVNX1BFR0dFRF9TWU1CT0wpICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIC8vIGdldCBhIGRldGVybWluaXN0aWMgcmFuZG9tIG51bWJlcgogICAgICAgICAgICAgICAgY29uc3QgcmFuZG9tID0gYXBpLnJhbmRvbSgpOwoKICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgcm9sbAogICAgICAgICAgICAgICAgY29uc3QgcmFuZG9tUm9sbCA9IE1hdGguZmxvb3IocmFuZG9tICogMTAwKSArIDE7CgogICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2dyZWF0ZXJUaGFuJykgewogICAgICAgICAgICAgICAgICAgIGlmIChyb2xsID4gcmFuZG9tUm9sbCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gYXBpLkJpZ051bWJlcigxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1pbnVzKHBhcmFtcy5ob3VzZUVkZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubXVsdGlwbGllZEJ5KDEwMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaXZpZGVkQnkocm9sbCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiB0b2tlbnMgd29uCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2Vuc1dvbiA9IGFwaS5CaWdOdW1iZXIoYW1vdW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLm11bHRpcGxpZWRCeShtdWx0aXBsaWVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvRml4ZWQoMywgYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgdGhlIHRva2VucyBvdXQKICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFwaS5zZW5kZXIsIFNURUVNX1BFR0dFRF9TWU1CT0wsIHRva2Vuc1dvbiwgJ3VzZXInKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVtaXQgYW4gZXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAgYXBpLmVtaXQoJ3Jlc3VsdHMnLCB7IG1lbW86IGB5b3Ugd29uLiByb2xsOiAke3JhbmRvbVJvbGx9LCB5b3VyIGJldDogJHtyb2xsfWAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXBpLmVtaXQoJ3Jlc3VsdHMnLCB7IG1lbW86IGB5b3UgbG9zdC4gcm9sbDogJHtyYW5kb21Sb2xsfSwgeW91ciBiZXQ6ICR7cm9sbH1gIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVzc2VyVGhhbicpIHsKICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgZGljZSByb2xsZWQgdW5kZXIgInJvbGwiCiAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmRvbVJvbGwgPCByb2xsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBhcGkuQmlnTnVtYmVyKDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWludXMocGFyYW1zLmhvdXNlRWRnZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tdWx0aXBsaWVkQnkoMTAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpdmlkZWRCeShyb2xsKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHRva2VucyB3b24KICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9rZW5zV29uID0gYXBpLkJpZ051bWJlcihhbW91bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubXVsdGlwbGllZEJ5KG11bHRpcGxpZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9GaXhlZCgzLCBhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VuZCB0aGUgdG9rZW5zIG91dAogICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYXBpLnNlbmRlciwgU1RFRU1fUEVHR0VEX1NZTUJPTCwgdG9rZW5zV29uLCAndXNlcicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW1pdCBhbiBldmVudAogICAgICAgICAgICAgICAgICAgICAgICBhcGkuZW1pdCgncmVzdWx0cycsIHsgbWVtbzogYHlvdSB3b24uIHJvbGw6ICR7cmFuZG9tUm9sbH0sIHlvdXIgYmV0OiAke3JvbGx9YCB9KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBlbWl0IGFuIGV2ZW50CiAgICAgICAgICAgICAgICAgICAgICAgIGFwaS5lbWl0KCdyZXN1bHRzJywgeyBtZW1vOiBgeW91IGxvc3QuIHJvbGw6ICR7cmFuZG9tUm9sbH0sIHlvdXIgYmV0OiAke3JvbGx9YCB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn07"
}
}
}