tx · BWk6rBfEbx27WyovjYbJCtXxnEzEsUSGqoXbG2whmDYM

3N6oaapvYkEryHUr4vAiPRXM3iS6kMYXito:  -0.05000000 Waves

2021.09.04 14:17 [1688236] smart account 3N6oaapvYkEryHUr4vAiPRXM3iS6kMYXito > SELF 0.00000000 Waves

{ "type": 13, "id": "BWk6rBfEbx27WyovjYbJCtXxnEzEsUSGqoXbG2whmDYM", "fee": 5000000, "feeAssetId": null, "timestamp": 1630754259129, "version": 2, "chainId": 84, "sender": "3N6oaapvYkEryHUr4vAiPRXM3iS6kMYXito", "senderPublicKey": "7PMrxEzirv6h9Z2zqLE47qrZd6v1AbRZER5Aqfo95Eyr", "proofs": [ "2APxVgqc6Dx1hpyupcNZnV5Q4omnXGzMtPb2Z2jBySmHu623Xh9UpkTAQE2h6C8JxixDmqPZBb8UpFZ6Rr5diTRF" ], "script": "base64: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dEJldEVnZ3MAAAABAAAABmdhbWVJZAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAANZ2V0QmV0RWdnc0tleQAAAAEFAAAABmdhbWVJZAEAAAAdZ2V0V2FpdGluZ0V4cGlyYXRpb25IZWlnaHRLZXkAAAABAAAABmdhbWVJZAkAASwAAAACCQABLAAAAAICAAAABGdhbWUJAAGkAAAAAQUAAAAGZ2FtZUlkAgAAABhfd2FpdGluZ0V4cGlyYXRpb25IZWlnaHQBAAAAGmdldFdhaXRpbmdFeHBpcmF0aW9uSGVpZ2h0AAAAAQAAAAZnYW1lSWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAHWdldFdhaXRpbmdFeHBpcmF0aW9uSGVpZ2h0S2V5AAAAAQUAAAAGZ2FtZUlkAQAAABZnZXRFeHBpcmF0aW9uSGVpZ2h0S2V5AAAAAQAAAAZnYW1lSWQJAAEsAAAAAgkAASwAAAACAgAAAARnYW1lCQABpAAAAAEFAAAABmdhbWVJZAIAAAARX2V4cGlyYXRpb25IZWlnaHQBAAAAE2dldEV4cGlyYXRpb25IZWlnaHQAAAABAAAABmdhbWVJZAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAWZ2V0RXhwaXJhdGlvbkhlaWdodEtleQAAAAEFAAAABmdhbWVJZAEAAAARZ2V0UmFyaXR5UmFuZ2VLZXkAAAACAAAABmdhbWVJZAAAAA1yYW5nZVBvc2l0aW9uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARnYW1lCQABpAAAAAEFAAAABmdhbWVJZAIAAAANX3Jhcml0eVJhbmdlXwUAAAANcmFuZ2VQb3NpdGlvbgEAAAAOZ2V0UmFyaXR5UmFuZ2UAAAACAAAABmdhbWVJZAAAAA1yYW5nZVBvc2l0aW9uCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABFnZXRSYXJpdHlSYW5nZUtleQAAAAIFAAAABmdhbWVJZAUAAAANcmFuZ2VQb3NpdGlvbgEAAAAKZ2V0U3RlcEtleQAAAAEAAAAGZ2FtZUlkCQABLAAAAAIJAAEsAAAAAgIAAAAEZ2FtZQkAAaQAAAABBQAAAAZnYW1lSWQCAAAABV9zdGVwAQAAAAdnZXRTdGVwAAAAAQAAAAZnYW1lSWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAACmdldFN0ZXBLZXkAAAABBQAAAAZnYW1lSWQBAAAADGdldFJhcml0eUtleQAAAAMAAAAGZ2FtZUlkAAAACnBsYXllclJvbGUAAAANcmFuZ2VQb3NpdGlvbgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEZ2FtZQkAAaQAAAABBQAAAAZnYW1lSWQCAAAAAV8FAAAACnBsYXllclJvbGUCAAAAAV8FAAAADXJhbmdlUG9zaXRpb24CAAAABlJhcml0eQEAAAAJZ2V0UmFyaXR5AAAAAwAAAAZnYW1lSWQAAAAKcGxheWVyUm9sZQAAAA1yYW5nZVBvc2l0aW9uCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAAxnZXRSYXJpdHlLZXkAAAADBQAAAAZnYW1lSWQFAAAACnBsYXllclJvbGUFAAAADXJhbmdlUG9zaXRpb24BAAAADGdldER1Y2tJZEtleQAAAAMAAAAGZ2FtZUlkAAAACnBsYXllclJvbGUAAAANcmFuZ2VQb3NpdGlvbgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEZ2FtZQkAAaQAAAABBQAAAAZnYW1lSWQCAAAAAV8FAAAACnBsYXllclJvbGUCAAAAAV8FAAAADXJhbmdlUG9zaXRpb24CAAAABkR1Y2tJZAEAAAAJZ2V0RHVja0lkAAAAAwAAAAZnYW1lSWQAAAAKcGxheWVyUm9sZQAAAA1yYW5nZVBvc2l0aW9uCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAADGdldER1Y2tJZEtleQAAAAMFAAAABmdhbWVJZAUAAAAKcGxheWVyUm9sZQUAAAANcmFuZ2VQb3NpdGlvbgEAAAAMZ2V0Q29tbWl0S2V5AAAAAgAAAAZnYW1lSWQAAAAKcGxheWVyUm9sZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARnYW1lCQABpAAAAAEFAAAABmdhbWVJZAIAAAABXwUAAAAKcGxheWVyUm9sZQIAAAAHX2NvbW1pdAEAAAAJZ2V0Q29tbWl0AAAAAgAAAAZnYW1lSWQAAAAKcGxheWVyUm9sZQkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAAxnZXRDb21taXRLZXkAAAACBQAAAAZnYW1lSWQFAAAACnBsYXllclJvbGUBAAAAD2dldER1Y2tPcmRlcktleQAAAAIAAAAGZ2FtZUlkAAAACnBsYXllclJvbGUJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEZ2FtZQkAAaQAAAABBQAAAAZnYW1lSWQCAAAAAV8FAAAACnBsYXllclJvbGUCAAAACl9kdWNrT3JkZXIBAAAADGdldER1Y2tPcmRlcgAAAAIAAAAGZ2FtZUlkAAAACnBsYXllclJvbGUJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAPZ2V0RHVja09yZGVyS2V5AAAAAgUAAAAGZ2FtZUlkBQAAAApwbGF5ZXJSb2xlAQAAAA9nZXRQcml6ZVNlbnRLZXkAAAACAAAABmdhbWVJZAAAAApwbGF5ZXJSb2xlCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABGdhbWUJAAGkAAAAAQUAAAAGZ2FtZUlkAgAAAAFfBQAAAApwbGF5ZXJSb2xlAgAAAApfcHJpemVTZW50AQAAAAxnZXRQcml6ZVNlbnQAAAACAAAABmdhbWVJZAAAAApwbGF5ZXJSb2xlCQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEJAQAAAA9nZXRQcml6ZVNlbnRLZXkAAAACBQAAAAZnYW1lSWQFAAAACnBsYXllclJvbGUBAAAAEGdldFBsYXllcldpbnNLZXkAAAABAAAADXBsYXllckFkZHJlc3MJAAEsAAAAAgUAAAANcGxheWVyQWRkcmVzcwIAAAAFX3dpbnMBAAAADWdldFBsYXllcldpbnMAAAABAAAADXBsYXllckFkZHJlc3MJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEGdldFBsYXllcldpbnNLZXkAAAABBQAAAA1wbGF5ZXJBZGRyZXNzAQAAABFnZXRQbGF5ZXJMb3Nlc0tleQAAAAEAAAANcGxheWVyQWRkcmVzcwkAASwAAAACBQAAAA1wbGF5ZXJBZGRyZXNzAgAAAAZfbG9zZXMBAAAADmdldFBsYXllckxv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BAAAAA0kYWNjMDYxNzg2MjA5AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAAABQAAAA0kYWNjMDYxNzg2MjA5BAAAAA0kYWNjMTYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzA2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAABBQAAAA0kYWNjMTYxNzg2MjA5BAAAAA0kYWNjMjYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzE2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAACBQAAAA0kYWNjMjYxNzg2MjA5BAAAAA0kYWNjMzYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzI2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAADBQAAAA0kYWNjMzYxNzg2MjA5BAAAAA0kYWNjNDYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzM2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAAEBQAAAA0kYWNjNDYxNzg2MjA5BAAAAA0kYWNjNTYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzQ2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAAFBQAAAA0kYWNjNTYxNzg2MjA5BAAAAA0kYWNjNjYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzU2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAAGBQAAAA0kYWNjNjYxNzg2MjA5BAAAAA0kYWNjNzYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzY2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAAHBQAAAA0kYWNjNzYxNzg2MjA5BAAAAA0kYWNjODYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzc2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTYxNzg2MjA5AAAAAAAAAAAIBQAAAA0kYWNjODYxNzg2MjA5BAAAAA0kYWNjOTYxNzg2MjA5CQEAAAAJaXNTeW1ib2xBAAAAAgUAAAANJGFjYzg2MTc4NjIwOQkAAZEAAAACBQAAAA0kbGlzdDYxNzg2MjA5AAAAAAAAAAAICQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgOAIAAAABQQkBAAAAEGdldEFtb3VudE9yQ2xlYXIAAAABCQABLAAAAAIJAAGkAAAAAQQAAAANJGxpc3Q2MjQ2NjI3NwUAAAAIZ2Vub3R5cGUEAAAADSRzaXplNjI0NjYyNzcJAAGQAAAAAQUAAAANJGxpc3Q2MjQ2NjI3NwQAAAANJGFjYzA2MjQ2NjI3NwAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAAAAUAAAANJGFjYzA2MjQ2NjI3NwQAAAANJGFjYzE2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2MwNjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAAAQUAAAANJGFjYzE2MjQ2NjI3NwQAAAANJGFjYzI2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2MxNjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAAAgUAAAANJGFjYzI2MjQ2NjI3NwQAAAANJGFjYzM2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2MyNjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAAAwUAAAANJGFjYzM2MjQ2NjI3NwQAAAANJGFjYzQ2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2MzNjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAABAUAAAANJGFjYzQ2MjQ2NjI3NwQAAAANJGFjYzU2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2M0NjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAABQUAAAANJGFjYzU2MjQ2NjI3NwQAAAANJGFjYzY2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2M1NjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAABgUAAAANJGFjYzY2MjQ2NjI3NwQAAAANJGFjYzc2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2M2NjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAABwUAAAANJGFjYzc2MjQ2NjI3NwQAAAANJGFjYzg2MjQ2NjI3NwkBAAAACWlzU3ltYm9sQgAAAAIFAAAADSRhY2M3NjI0NjYyNzcJAAGRAAAAAgUAAAANJGxpc3Q2MjQ2NjI3NwAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemU2MjQ2NjI3NwAAAAAAAAAACAUAAAANJGFj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YWNjMDYzODQ2NDE1BAAAAA0kYWNjMTYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzA2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAABBQAAAA0kYWNjMTYzODQ2NDE1BAAAAA0kYWNjMjYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzE2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAACBQAAAA0kYWNjMjYzODQ2NDE1BAAAAA0kYWNjMzYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzI2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAADBQAAAA0kYWNjMzYzODQ2NDE1BAAAAA0kYWNjNDYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzM2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAAEBQAAAA0kYWNjNDYzODQ2NDE1BAAAAA0kYWNjNTYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzQ2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAAFBQAAAA0kYWNjNTYzODQ2NDE1BAAAAA0kYWNjNjYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzU2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAAGBQAAAA0kYWNjNjYzODQ2NDE1BAAAAA0kYWNjNzYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzY2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAAHBQAAAA0kYWNjNzYzODQ2NDE1BAAAAA0kYWNjODYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzc2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTYzODQ2NDE1AAAAAAAAAAAIBQAAAA0kYWNjODYzODQ2NDE1BAAAAA0kYWNjOTYzODQ2NDE1CQEAAAAJaXNTeW1ib2xEAAAAAgUAAAANJGFjYzg2Mzg0NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzODQ2NDE1AAAAAAAAAAAICQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgOAIAAAABRAkBAAAAEGdldEFtb3VudE9yQ2xlYXIAAAABCQABLAAAAAIJAAGkAAAAAQQAAAANJGxpc3Q2NDUyNjQ4MwUAAAAIZ2Vub3R5cGUEAAAADSRzaXplNjQ1MjY0ODMJAAGQAAAAAQUAAAANJGxpc3Q2NDUyNjQ4MwQAAAANJGFjYzA2NDUyNjQ4MwAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAAAAUAAAANJGFjYzA2NDUyNjQ4MwQAAAANJGFjYzE2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2MwNjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAAAQUAAAANJGFjYzE2NDUyNjQ4MwQAAAANJGFjYzI2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2MxNjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAAAgUAAAANJGFjYzI2NDUyNjQ4MwQAAAANJGFjYzM2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2MyNjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAAAwUAAAANJGFjYzM2NDUyNjQ4MwQAAAANJGFjYzQ2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2MzNjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAABAUAAAANJGFjYzQ2NDUyNjQ4MwQAAAANJGFjYzU2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2M0NjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAABQUAAAANJGFjYzU2NDUyNjQ4MwQAAAANJGFjYzY2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2M1NjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAABgUAAAANJGFjYzY2NDUyNjQ4MwQAAAANJGFjYzc2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2M2NjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAABwUAAAANJGFjYzc2NDUyNjQ4MwQAAAANJGFjYzg2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2M3NjQ1MjY0ODMJAAGRAAAAAgUAAAANJGxpc3Q2NDUyNjQ4MwAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemU2NDUyNjQ4MwAAAAAAAAAACAUAAAANJGFjYzg2NDUyNjQ4MwQAAAANJGFjYzk2NDUyNjQ4MwkBAAAACWlzU3ltYm9sRQAAAAIFAAAADSRhY2M4NjQ1MjY0ODMJAAGR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AZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAABBQAAAA0kYWNjMTY1OTA2NjIxBAAAAA0kYWNjMjY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzE2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAACBQAAAA0kYWNjMjY1OTA2NjIxBAAAAA0kYWNjMzY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzI2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAADBQAAAA0kYWNjMzY1OTA2NjIxBAAAAA0kYWNjNDY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzM2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAAEBQAAAA0kYWNjNDY1OTA2NjIxBAAAAA0kYWNjNTY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzQ2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAAFBQAAAA0kYWNjNTY1OTA2NjIxBAAAAA0kYWNjNjY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzU2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAAFAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAAGBQAAAA0kYWNjNjY1OTA2NjIxBAAAAA0kYWNjNzY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzY2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAAGAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAAHBQAAAA0kYWNjNzY1OTA2NjIxBAAAAA0kYWNjODY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzc2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTY1OTA2NjIxAAAAAAAAAAAIBQAAAA0kYWNjODY1OTA2NjIxBAAAAA0kYWNjOTY1OTA2NjIxCQEAAAAJaXNTeW1ib2xHAAAAAgUAAAANJGFjYzg2NTkwNjYyMQkAAZEAAAACBQAAAA0kbGlzdDY1OTA2NjIxAAAAAAAAAAAICQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgOAIAAAABRwkBAAAAEGdldEFtb3VudE9yQ2xlYXIAAAABCQABLAAAAAIJAAGkAAAAAQQAAAANJGxpc3Q2NjU4NjY4OQUAAAAIZ2Vub3R5cGUEAAAADSRzaXplNjY1ODY2ODkJAAGQAAAAAQUAAAANJGxpc3Q2NjU4NjY4OQQAAAANJGFjYzA2NjU4NjY4OQAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAAAAUAAAANJGFjYzA2NjU4NjY4OQQAAAANJGFjYzE2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2MwNjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAAAQUAAAANJGFjYzE2NjU4NjY4OQQAAAANJGFjYzI2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2MxNjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAAAgUAAAANJGFjYzI2NjU4NjY4OQQAAAANJGFjYzM2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2MyNjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAAAwUAAAANJGFjYzM2NjU4NjY4OQQAAAANJGFjYzQ2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2MzNjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAABAUAAAANJGFjYzQ2NjU4NjY4OQQAAAANJGFjYzU2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2M0NjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAABQUAAAANJGFjYzU2NjU4NjY4OQQAAAANJGFjYzY2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2M1NjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAABQMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAABgUAAAANJGFjYzY2NjU4NjY4OQQAAAANJGFjYzc2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2M2NjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAABwUAAAANJGFjYzc2NjU4NjY4OQQAAAANJGFjYzg2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2M3NjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAABwMJAAAAAAAAAgUAAAANJHNpemU2NjU4NjY4OQAAAAAAAAAACAUAAAANJGFjYzg2NjU4NjY4OQQAAAANJGFjYzk2NjU4NjY4OQkBAAAACWlzU3ltYm9sSAAAAAIFAAAADSRhY2M4NjY1ODY2ODkJAAGRAAAAAgUAAAANJGxpc3Q2NjU4NjY4OQAAAAAAAAAACAkAAAIAAAABAgAAABJMaXN0IHNpemUgZXhjZWVkIDgCAAAAAUgBAAAADmdldEFzc2V0T3JpZ2luAAAAAQAAAApnZW5lcmF0aW9uAwkAAAAAAAACBQAAAApnZW5lcmF0aW9uAgAAAAFHBQAAABBpbmN1YmF0b3JBZGRyZXNzBQAAAA5icmVlZGVyQWRkcmVzcwEAAAAOZ2V0QXNzZXRSYXJpdHkAAAABAAAAB2Fzc2V0SWQDAwkAAAAAAAACCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABmlzc3VlcgkBAAAAB0FkZHJlc3MAAAABBQAAAA5icmVlZGVyQWRkcmVzcwYJAAAAAAAAAggJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAAZpc3N1ZXIJAQAAAAdBZGRyZXNzAAAAAQUAAAAQaW5jdWJhdG9yQWRkcmVzcwQAAAAJYXNzZXROYW1lCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABG5hbWUEAAAACmdlbmVyYXRpb24JAAEvAAAAAgkBAAAACXRha2VSaWdodAAAAAIFAAAACWFzc2V0TmFtZQAAAAAAAAAAAgAAAAAAAAAAAQQAAAADZ2VuCQABLAAAAAIJAAEsAAAAAgkBAAAABmdldEdlbgAAAAEFAAAACWFzc2V0TmFtZQIAAAABLQUAAAAKZ2VuZXJhdGlvbgQAAAAIcXVhbnRpdHkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAdBZGRyZXNzAAAAAQkBAAAADmdldEFzc2V0T3JpZ2luAAAAAQUAAAAKZ2VuZXJhdGlvbgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAADZ2VuAgAAAAlfcXVhbnRpdHkEAAAABXBvd2VyCQAAbAAAAAYJAABpAAAAAgAAAAAAAAAnEAUAAAAIcXVhbnRpdHkAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAIFAAAABUZMT09SAwkAAGYAAAACBQAAAAVwb3dlcgAAAAAAAAAAAAUAAAAFcG93ZXIAAAAAAAAAAAIJAAACAAAAAQIAAAANbm90IHZhbGlkIE5GVAEAAAAIZ2V0U2NvcmUAAAACAAAAAWEAAAABYgMJAABmAAAAAgUAAAABYQUAAAABYgAAAAAAAAAAAQMJAABmAAAAAgUAAAABYgUAAAABYQD//////////wAAAAAAAAAAAAEAAAAJZ2V0V2lubmVyAAAAAQAAAAZnYW1lSWQEAAAACGdhbWVTdGVwCQEAAAAHZ2V0U3RlcAAAAAEFAAAABmdhbWVJZAMJAABmAAAAAgAAAAAAAAAABgUAAAAIZ2FtZVN0ZXAEAAAAEGV4cGlyYXRpb25IZWlnaHQJAQAAABNnZXRFeHBpcmF0aW9uSGVpZ2h0AAAAAQUAAAAGZ2FtZUlkAwkAAAAAAAACBQAAABBleHBpcmF0aW9uSGVpZ2h0AAAAAAAAAAAACQAAAgAAAAECAAAAE0dhbWUgaXMgbm90IHN0YXJ0ZWQDCQAAZgAAAAIFAAAAEGV4cGlyYXRpb25IZWlnaHQFAAAABmhlaWdodAkAAAIAAAABAgAAAB9HYW1lIGlzIG5vdCBmaW5pc2hlZCBvciBleHBpcmVkAwkAAAAAAAACCQAAagAAAAIJAQAAAAdnZXRTdGVwAAAAAQUAAAAGZ2FtZUlkAAAAAAAAAAACAAAAAAAAAAAAAgAAAAVtYWtlcgIAAAAFdGFrZXIEAAAADm1ha2VyRHVja09yZGVyCQAEtQAAAAIJAQAAAAxnZXREdWNrT3JkZXIAAAACBQAAAAZnYW1lSWQCAAAABW1ha2VyAgAAAAEsBAAAAA50YWtlckR1Y2tPcmRlcgkABLUAAAACCQEAAAAMZ2V0RHVja09yZGVyAAAAAgUAAAAGZ2FtZUlkAgAAAAV0YWtlcgIAAAABLAQAAAAMbWFrZXJSYXJpdHkxCQEAAAAJZ2V0UmFyaXR5AAAAAwUAAAAGZ2FtZUlkAgAAAAVtYWtlcgkAAZEAAAACBQAAAA5tYWtlckR1Y2tPcmRlcgAAAAAAAAAAAAQAAAAMbWFrZXJSYXJpdHkyCQEAAAAJZ2V0UmFyaXR5AAAAAwUAAAAGZ2FtZUlkAgAAAAVtYWtlcgkAAZEAAAACBQAAAA5tYWtlckR1Y2tPcmRlcgAAAAAAAAAAAQQAAAAMbWFrZXJSYXJpdHkzCQEAAAAJZ2V0UmFyaXR5AAAAAwUAAAAGZ2FtZUlkAgAAAAVtYWtlcgkAAZEAAAACBQAAAA5tYWtlckR1Y2tPcmRlcgAAAAAAAAAAAgQAAAAMdGFrZXJSYXJpdHkxCQEAAAAJZ2V0UmFyaXR5AAAAAwUAAAAGZ2FtZUlkAgAAAAV0YWtlcgkAAZEAAAACBQAAAA50YWtlckR1Y2tPcmRlcgAAAAAAAAAAAAQAAAAMdGFrZXJSYXJpdHkyCQEAAAAJZ2V0UmFyaXR5AAAAAwUAAAAGZ2FtZUlkAgAAAAV0YWtlcgkAAZEAAAACBQAAAA50YWtlckR1Y2tPcmRlcgAAAAAAAAAAAQQAAAAMdGFrZXJSYXJpdHkzCQEAAAAJZ2V0UmFyaXR5AAAAAwUAAAAGZ2FtZUlkAgAAAAV0YWtlcgkAAZEAAAACBQAAAA50YWtlckR1Y2tPcmRlcgAAAAAAAAAAAgQAAAAKbWFrZXJTY29yZQkAAGQAAAACCQAAZAAAAAIJAQAAAAhnZXRTY29yZQAAAAIFAAAADG1ha2VyUmFyaXR5MQUAAAAMdGFrZXJSYXJpdHkxCQEAAAAIZ2V0U2NvcmUAAAACBQAAAAxtYWtlclJhcml0eTIFAAAADHRha2VyUmFyaXR5MgkBAAAACGdldFNjb3JlAAAAAgUAAAAMbWFrZXJSYXJpdHkzBQAAAAx0YWtlclJhcml0eTMDCQAAZgAAAAIFAAAACm1ha2VyU2NvcmUAAAAAAAAAAAACAAAABW1ha2VyAwkAAGYAAAACAAAAAAAAAAAABQAAAAptYWtlclNjb3JlAgAAAAV0YWtlcgIAAAAEZHJhdwAAAAcAAAABaQEAAAAIbWFrZUdhbWUAAAAEAAAABHNsb3QAAAAQcmFyaXR5UmFuZ2VXb3JzdAAAABFyYXJpdHlSYW5nZU1lZGl1bQAAAA9yYXJpdHlSYW5nZUJlc3QEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAKc2xvdEdhbWVJZAkBAAAAB2dldFNsb3QAAAABBQAAAARzbG90BAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAARlZ2dzCAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAABmdhbWVJZAkBAAAADWdldE5leHRHYW1lSWQAAAAAAwkBAAAAAiE9AAAAAgkBAAAAFGdldFBsYXllckN1cnJlbnRHYW1lAAAAAQUAAAANY2FsbGVyQWRkcmVzcwAAAAAAAAAAAAkAAAIAAAABAgAAAB9Zb3UgYWxyZWFkeSBoYXZlIGFuIGFjdGl2ZSBnYW1lAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAEc2xvdAYJAABnAAAAAgUAAAAEc2xvdAUAAAAFU0xPVFMJAAACAAAAAQIAAAAMSW52YWxpZCBzbG90AwkBAAAAAiE9AAAAAgUAAAAKc2xvdEdhbWVJZAAAAAAAAAAAAAkAAAIAAAABAgAAABFUaGlzIHNsb3QgaXMgYnVzeQMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC2VnZ3NBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAA2WW91IGNhbiBhdHRhY2ggb25seSBFR0dzIHdpdGggdGhlIGZvbGxvd2luZyBhc3NldCBpZDogCQACWAAAAAEFAAAAC2VnZ3NBc3NldElkAwkAAGcAAAACAAAAAAAAAAAABQAAAARlZ2dzCQAAAgAAAAECAAAAD05vdCBlbm91Z2ggRUdHcwMDCQAAZgAAAAIAAAAAAAAAAAEFAAAAEHJhcml0eVJhbmdlV29yc3QGCQAAZgAAAAIFAAAAEHJhcml0eVJhbmdlV29yc3QAAAAAAAAAAAUJAAACAAAAAQIAAAAnSW52YWxpZCByYXJpdHkgcmFuZ2UgZm9yIHRoZSB3b3JzdCBkdWNrAwMJAABmAAAAAgAAAAAAAAAAAQUAAAARcmFyaXR5UmFuZ2VNZWRpdW0GCQAAZgAAAAIFAAAAEXJhcml0eVJhbmdlTWVkaXVtAAAAAAAAAAAFCQAAAgAAAAECAAAAKEludmFsaWQgcmFyaXR5IHJhbmdlIGZvciB0aGUgbWVkaXVtIGR1Y2sDAwkAAGYAAAACAAAAAAAAAAABBQAAAA9yYXJpdHlSYW5nZUJlc3QGCQAAZgAAAAIFAAAAD3Jhcml0eVJhbmdlQmVzdAAAAAAAAAAABQkAAAIAAAABAgAAACZJbnZhbGlkIHJhcml0eSByYW5nZSBmb3IgdGhlIGJlc3QgZHVjawMJAABnAAAAAgUAAAAQcmFyaXR5UmFuZ2VXb3JzdAUAAAARcmFyaXR5UmFuZ2VNZWRpdW0JAAACAAAAAQIAAAAxVGhlIG1lZGl1bSBkdWNrIG11c3QgYmUgYmV0dGVyIHRoYW4gdGhlIHdvcnN0IG9uZQMJAABnAAAAAgUAAAARcmFyaXR5UmFuZ2VNZWRpdW0FAAAAD3Jhcml0eVJhbmdlQmVzdAkAAAIAAAABAgAAADBUaGUgYmVzdCBkdWNrIG11c3QgYmUgYmV0dGVyIHRoYW4gdGhlIG1lZGl1bSBvbmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABdnZXRQbGF5ZXJDdXJyZW50R2FtZUtleQAAAAEFAAAADWNhbGxlckFkZHJlc3MFAAAABmdhbWVJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALZ2V0TWFrZXJLZXkAAAABBQAAAAZnYW1lSWQFAAAADWNhbGxlckFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGdldFBsYXllclJvbGVLZXkAAAACBQAAAAZnYW1lSWQFAAAADWNhbGxlckFkZHJlc3MCAAAABW1ha2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANZ2V0QmV0RWdnc0tleQAAAAEFAAAABmdhbWVJZAUAAAAEZWdncwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldFJhcml0eVJhbmdlS2V5AAAAAgUAAAAGZ2FtZUlkAgAAAAV3b3JzdAUAAAAQcmFyaXR5UmFuZ2VXb3JzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldFJhcml0eVJhbmdlS2V5AAAAAgUAAAAGZ2FtZUlkAgAAAAZtZWRpdW0FAAAAEXJhcml0eVJhbmdlTWVkaXVtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0UmFyaXR5UmFuZ2VLZXkAAAACBQAAAAZnYW1lSWQCAAAABGJlc3QFAAAAD3Jhcml0eVJhbmdlQmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAHWdldFdhaXRpbmdFeHBpcmF0aW9uSGVpZ2h0S2V5AAAAAQUAAAAGZ2FtZUlkCQAAZAAAAAIFAAAABmhlaWdodAUAAAAHV0FJVElORwkABEwAAAACCQEAAAAMSW50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AAAAAQUAAAAGZ2FtZUlkBQAAAAZoZWlnaHQJAAACAAAAAQIAAAAbV2FpdGluZyBpcyBub3QgZmluaXNoZWQgeWV0BAAAAAVtYWtlcgkBAAAACGdldE1ha2VyAAAAAQUAAAAGZ2FtZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAXZ2V0UGxheWVyQ3VycmVudEdhbWVLZXkAAAABBQAAAAVtYWtlcgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACmdldFNsb3RLZXkAAAABBQAAAARzbG90AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAVtYWtlcgkBAAAACmdldEJldEVnZ3MAAAABBQAAAAZnYW1lSWQFAAAAC2VnZ3NBc3NldElkBQAAAANuaWwAAAABaQEAAAAJcGlja0R1Y2tzAAAAAAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAZnYW1lSWQJAQAAABRnZXRQbGF5ZXJDdXJyZW50R2FtZQAAAAEFAAAADWNhbGxlckFkZHJlc3MEAAAACnBsYXllclJvbGUJAQAAAA1nZXRQbGF5ZXJSb2xlAAAAAgUAAAAGZ2FtZUlkBQAAAA1jYWxsZXJBZGRyZXNzBAAAAAhnYW1lU3RlcAkBAAAAB2dldFN0ZXAAAAABBQAAAAZnYW1lSWQEAAAAEHdvcnN0UmFyaXR5UmFuZ2UJAQAAAA5nZXRSYXJpdHlSYW5nZQAAAAIFAAAABmdhbWVJZAIAAAAFd29yc3QEAAAAEW1lZGl1bVJhcml0eVJhbmdlCQEAAAAOZ2V0UmFyaXR5UmFuZ2UAAAACBQAAAAZnYW1lSWQCAAAABm1lZGl1bQQAAAAPYmVzdFJhcml0eVJhbmdlCQEAAAAOZ2V0UmFyaXR5UmFuZ2UAAAACBQAAAAZnYW1lSWQCAAAABGJlc3QEAAAAC3dvcnN0RHVja0lkCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAA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", "height": 1688236, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BQLVUSingR3ksRXjVSUkSbf6pEs3vwRF2d7rpidjn2QV Next: GHWTMhvPU4FDCmvJR1WnqoDHybpmzweD4XyjJgQHYdf1 Diff:
OldNewDifferences
77
88 let eggsAssetId = base58'3VUCuh9dWqe54SdzzNUkXhFXpc8UQynnJVh42B7MjNzN'
99
10-let makerFee = 1
11-
12-let takerFee = 1
13-
1410 let SLOTS = 10
1511
16-let WAITING = 5
12+let WAITING = 8
1713
18-let stepDuration = 3
14+let stepDuration = 5
1915
2016 func tryGetInteger (key) = match getInteger(this, key) {
2117 case b: Int =>
4945 }
5046
5147
52-func getPlayerCurrentGameKey (playerAddress) = ("currentGame_" + playerAddress)
48+func getPlayerCurrentGameKey (playerAddress) = (playerAddress + "_currentGame")
5349
5450
5551 func getPlayerCurrentGame (playerAddress) = tryGetInteger(getPlayerCurrentGameKey(playerAddress))
139135 func getPrizeSent (gameId,playerRole) = tryGetBoolean(getPrizeSentKey(gameId, playerRole))
140136
141137
142-func getScore (a,b) = if ((a > b))
143- then 1
144- else if ((b > a))
145- then -1
146- else 0
138+func getPlayerWinsKey (playerAddress) = (playerAddress + "_wins")
139+
140+
141+func getPlayerWins (playerAddress) = tryGetInteger(getPlayerWinsKey(playerAddress))
142+
143+
144+func getPlayerLosesKey (playerAddress) = (playerAddress + "_loses")
145+
146+
147+func getPlayerLoses (playerAddress) = tryGetInteger(getPlayerLosesKey(playerAddress))
148+
149+
150+func getPlayerDrawsKey (playerAddress) = (playerAddress + "_draws")
151+
152+
153+func getPlayerDraws (playerAddress) = tryGetInteger(getPlayerDrawsKey(playerAddress))
154+
155+
156+func getGamesPlayedKey () = "gamesPlayed"
157+
158+
159+func getGamesPlayed () = tryGetInteger(getGamesPlayedKey())
147160
148161
149162 func isSymbolA (accumulated,sym) = if ((sym == "A"))
194207 func getGen (assetName) = {
195208 let genotype = split(dropRight(drop(assetName, 5), 3), "")
196209 (((((((getAmountOrClear((toString({
197- let $list55935624 = genotype
198- let $size55935624 = size($list55935624)
199- let $acc055935624 = 0
200- if (($size55935624 == 0))
201- then $acc055935624
210+ let $list61786209 = genotype
211+ let $size61786209 = size($list61786209)
212+ let $acc061786209 = 0
213+ if (($size61786209 == 0))
214+ then $acc061786209
202215 else {
203- let $acc155935624 = isSymbolA($acc055935624, $list55935624[0])
204- if (($size55935624 == 1))
205- then $acc155935624
216+ let $acc161786209 = isSymbolA($acc061786209, $list61786209[0])
217+ if (($size61786209 == 1))
218+ then $acc161786209
206219 else {
207- let $acc255935624 = isSymbolA($acc155935624, $list55935624[1])
208- if (($size55935624 == 2))
209- then $acc255935624
220+ let $acc261786209 = isSymbolA($acc161786209, $list61786209[1])
221+ if (($size61786209 == 2))
222+ then $acc261786209
210223 else {
211- let $acc355935624 = isSymbolA($acc255935624, $list55935624[2])
212- if (($size55935624 == 3))
213- then $acc355935624
224+ let $acc361786209 = isSymbolA($acc261786209, $list61786209[2])
225+ if (($size61786209 == 3))
226+ then $acc361786209
214227 else {
215- let $acc455935624 = isSymbolA($acc355935624, $list55935624[3])
216- if (($size55935624 == 4))
217- then $acc455935624
228+ let $acc461786209 = isSymbolA($acc361786209, $list61786209[3])
229+ if (($size61786209 == 4))
230+ then $acc461786209
218231 else {
219- let $acc555935624 = isSymbolA($acc455935624, $list55935624[4])
220- if (($size55935624 == 5))
221- then $acc555935624
232+ let $acc561786209 = isSymbolA($acc461786209, $list61786209[4])
233+ if (($size61786209 == 5))
234+ then $acc561786209
222235 else {
223- let $acc655935624 = isSymbolA($acc555935624, $list55935624[5])
224- if (($size55935624 == 6))
225- then $acc655935624
236+ let $acc661786209 = isSymbolA($acc561786209, $list61786209[5])
237+ if (($size61786209 == 6))
238+ then $acc661786209
226239 else {
227- let $acc755935624 = isSymbolA($acc655935624, $list55935624[6])
228- if (($size55935624 == 7))
229- then $acc755935624
240+ let $acc761786209 = isSymbolA($acc661786209, $list61786209[6])
241+ if (($size61786209 == 7))
242+ then $acc761786209
230243 else {
231- let $acc855935624 = isSymbolA($acc755935624, $list55935624[7])
232- if (($size55935624 == 8))
233- then $acc855935624
244+ let $acc861786209 = isSymbolA($acc761786209, $list61786209[7])
245+ if (($size61786209 == 8))
246+ then $acc861786209
234247 else {
235- let $acc955935624 = isSymbolA($acc855935624, $list55935624[8])
248+ let $acc961786209 = isSymbolA($acc861786209, $list61786209[8])
236249 throw("List size exceed 8")
237250 }
238251 }
244257 }
245258 }
246259 }) + "A")) + getAmountOrClear((toString({
247- let $list56615692 = genotype
248- let $size56615692 = size($list56615692)
249- let $acc056615692 = 0
250- if (($size56615692 == 0))
251- then $acc056615692
260+ let $list62466277 = genotype
261+ let $size62466277 = size($list62466277)
262+ let $acc062466277 = 0
263+ if (($size62466277 == 0))
264+ then $acc062466277
252265 else {
253- let $acc156615692 = isSymbolB($acc056615692, $list56615692[0])
254- if (($size56615692 == 1))
255- then $acc156615692
266+ let $acc162466277 = isSymbolB($acc062466277, $list62466277[0])
267+ if (($size62466277 == 1))
268+ then $acc162466277
256269 else {
257- let $acc256615692 = isSymbolB($acc156615692, $list56615692[1])
258- if (($size56615692 == 2))
259- then $acc256615692
270+ let $acc262466277 = isSymbolB($acc162466277, $list62466277[1])
271+ if (($size62466277 == 2))
272+ then $acc262466277
260273 else {
261- let $acc356615692 = isSymbolB($acc256615692, $list56615692[2])
262- if (($size56615692 == 3))
263- then $acc356615692
274+ let $acc362466277 = isSymbolB($acc262466277, $list62466277[2])
275+ if (($size62466277 == 3))
276+ then $acc362466277
264277 else {
265- let $acc456615692 = isSymbolB($acc356615692, $list56615692[3])
266- if (($size56615692 == 4))
267- then $acc456615692
278+ let $acc462466277 = isSymbolB($acc362466277, $list62466277[3])
279+ if (($size62466277 == 4))
280+ then $acc462466277
268281 else {
269- let $acc556615692 = isSymbolB($acc456615692, $list56615692[4])
270- if (($size56615692 == 5))
271- then $acc556615692
282+ let $acc562466277 = isSymbolB($acc462466277, $list62466277[4])
283+ if (($size62466277 == 5))
284+ then $acc562466277
272285 else {
273- let $acc656615692 = isSymbolB($acc556615692, $list56615692[5])
274- if (($size56615692 == 6))
275- then $acc656615692
286+ let $acc662466277 = isSymbolB($acc562466277, $list62466277[5])
287+ if (($size62466277 == 6))
288+ then $acc662466277
276289 else {
277- let $acc756615692 = isSymbolB($acc656615692, $list56615692[6])
278- if (($size56615692 == 7))
279- then $acc756615692
290+ let $acc762466277 = isSymbolB($acc662466277, $list62466277[6])
291+ if (($size62466277 == 7))
292+ then $acc762466277
280293 else {
281- let $acc856615692 = isSymbolB($acc756615692, $list56615692[7])
282- if (($size56615692 == 8))
283- then $acc856615692
294+ let $acc862466277 = isSymbolB($acc762466277, $list62466277[7])
295+ if (($size62466277 == 8))
296+ then $acc862466277
284297 else {
285- let $acc956615692 = isSymbolB($acc856615692, $list56615692[8])
298+ let $acc962466277 = isSymbolB($acc862466277, $list62466277[8])
286299 throw("List size exceed 8")
287300 }
288301 }
294307 }
295308 }
296309 }) + "B"))) + getAmountOrClear((toString({
297- let $list57295760 = genotype
298- let $size57295760 = size($list57295760)
299- let $acc057295760 = 0
300- if (($size57295760 == 0))
301- then $acc057295760
310+ let $list63146345 = genotype
311+ let $size63146345 = size($list63146345)
312+ let $acc063146345 = 0
313+ if (($size63146345 == 0))
314+ then $acc063146345
302315 else {
303- let $acc157295760 = isSymbolC($acc057295760, $list57295760[0])
304- if (($size57295760 == 1))
305- then $acc157295760
316+ let $acc163146345 = isSymbolC($acc063146345, $list63146345[0])
317+ if (($size63146345 == 1))
318+ then $acc163146345
306319 else {
307- let $acc257295760 = isSymbolC($acc157295760, $list57295760[1])
308- if (($size57295760 == 2))
309- then $acc257295760
320+ let $acc263146345 = isSymbolC($acc163146345, $list63146345[1])
321+ if (($size63146345 == 2))
322+ then $acc263146345
310323 else {
311- let $acc357295760 = isSymbolC($acc257295760, $list57295760[2])
312- if (($size57295760 == 3))
313- then $acc357295760
324+ let $acc363146345 = isSymbolC($acc263146345, $list63146345[2])
325+ if (($size63146345 == 3))
326+ then $acc363146345
314327 else {
315- let $acc457295760 = isSymbolC($acc357295760, $list57295760[3])
316- if (($size57295760 == 4))
317- then $acc457295760
328+ let $acc463146345 = isSymbolC($acc363146345, $list63146345[3])
329+ if (($size63146345 == 4))
330+ then $acc463146345
318331 else {
319- let $acc557295760 = isSymbolC($acc457295760, $list57295760[4])
320- if (($size57295760 == 5))
321- then $acc557295760
332+ let $acc563146345 = isSymbolC($acc463146345, $list63146345[4])
333+ if (($size63146345 == 5))
334+ then $acc563146345
322335 else {
323- let $acc657295760 = isSymbolC($acc557295760, $list57295760[5])
324- if (($size57295760 == 6))
325- then $acc657295760
336+ let $acc663146345 = isSymbolC($acc563146345, $list63146345[5])
337+ if (($size63146345 == 6))
338+ then $acc663146345
326339 else {
327- let $acc757295760 = isSymbolC($acc657295760, $list57295760[6])
328- if (($size57295760 == 7))
329- then $acc757295760
340+ let $acc763146345 = isSymbolC($acc663146345, $list63146345[6])
341+ if (($size63146345 == 7))
342+ then $acc763146345
330343 else {
331- let $acc857295760 = isSymbolC($acc757295760, $list57295760[7])
332- if (($size57295760 == 8))
333- then $acc857295760
344+ let $acc863146345 = isSymbolC($acc763146345, $list63146345[7])
345+ if (($size63146345 == 8))
346+ then $acc863146345
334347 else {
335- let $acc957295760 = isSymbolC($acc857295760, $list57295760[8])
348+ let $acc963146345 = isSymbolC($acc863146345, $list63146345[8])
336349 throw("List size exceed 8")
337350 }
338351 }
344357 }
345358 }
346359 }) + "C"))) + getAmountOrClear((toString({
347- let $list57995830 = genotype
348- let $size57995830 = size($list57995830)
349- let $acc057995830 = 0
350- if (($size57995830 == 0))
351- then $acc057995830
360+ let $list63846415 = genotype
361+ let $size63846415 = size($list63846415)
362+ let $acc063846415 = 0
363+ if (($size63846415 == 0))
364+ then $acc063846415
352365 else {
353- let $acc157995830 = isSymbolD($acc057995830, $list57995830[0])
354- if (($size57995830 == 1))
355- then $acc157995830
366+ let $acc163846415 = isSymbolD($acc063846415, $list63846415[0])
367+ if (($size63846415 == 1))
368+ then $acc163846415
356369 else {
357- let $acc257995830 = isSymbolD($acc157995830, $list57995830[1])
358- if (($size57995830 == 2))
359- then $acc257995830
370+ let $acc263846415 = isSymbolD($acc163846415, $list63846415[1])
371+ if (($size63846415 == 2))
372+ then $acc263846415
360373 else {
361- let $acc357995830 = isSymbolD($acc257995830, $list57995830[2])
362- if (($size57995830 == 3))
363- then $acc357995830
374+ let $acc363846415 = isSymbolD($acc263846415, $list63846415[2])
375+ if (($size63846415 == 3))
376+ then $acc363846415
364377 else {
365- let $acc457995830 = isSymbolD($acc357995830, $list57995830[3])
366- if (($size57995830 == 4))
367- then $acc457995830
378+ let $acc463846415 = isSymbolD($acc363846415, $list63846415[3])
379+ if (($size63846415 == 4))
380+ then $acc463846415
368381 else {
369- let $acc557995830 = isSymbolD($acc457995830, $list57995830[4])
370- if (($size57995830 == 5))
371- then $acc557995830
382+ let $acc563846415 = isSymbolD($acc463846415, $list63846415[4])
383+ if (($size63846415 == 5))
384+ then $acc563846415
372385 else {
373- let $acc657995830 = isSymbolD($acc557995830, $list57995830[5])
374- if (($size57995830 == 6))
375- then $acc657995830
386+ let $acc663846415 = isSymbolD($acc563846415, $list63846415[5])
387+ if (($size63846415 == 6))
388+ then $acc663846415
376389 else {
377- let $acc757995830 = isSymbolD($acc657995830, $list57995830[6])
378- if (($size57995830 == 7))
379- then $acc757995830
390+ let $acc763846415 = isSymbolD($acc663846415, $list63846415[6])
391+ if (($size63846415 == 7))
392+ then $acc763846415
380393 else {
381- let $acc857995830 = isSymbolD($acc757995830, $list57995830[7])
382- if (($size57995830 == 8))
383- then $acc857995830
394+ let $acc863846415 = isSymbolD($acc763846415, $list63846415[7])
395+ if (($size63846415 == 8))
396+ then $acc863846415
384397 else {
385- let $acc957995830 = isSymbolD($acc857995830, $list57995830[8])
398+ let $acc963846415 = isSymbolD($acc863846415, $list63846415[8])
386399 throw("List size exceed 8")
387400 }
388401 }
394407 }
395408 }
396409 }) + "D"))) + getAmountOrClear((toString({
397- let $list58675898 = genotype
398- let $size58675898 = size($list58675898)
399- let $acc058675898 = 0
400- if (($size58675898 == 0))
401- then $acc058675898
410+ let $list64526483 = genotype
411+ let $size64526483 = size($list64526483)
412+ let $acc064526483 = 0
413+ if (($size64526483 == 0))
414+ then $acc064526483
402415 else {
403- let $acc158675898 = isSymbolE($acc058675898, $list58675898[0])
404- if (($size58675898 == 1))
405- then $acc158675898
416+ let $acc164526483 = isSymbolE($acc064526483, $list64526483[0])
417+ if (($size64526483 == 1))
418+ then $acc164526483
406419 else {
407- let $acc258675898 = isSymbolE($acc158675898, $list58675898[1])
408- if (($size58675898 == 2))
409- then $acc258675898
420+ let $acc264526483 = isSymbolE($acc164526483, $list64526483[1])
421+ if (($size64526483 == 2))
422+ then $acc264526483
410423 else {
411- let $acc358675898 = isSymbolE($acc258675898, $list58675898[2])
412- if (($size58675898 == 3))
413- then $acc358675898
424+ let $acc364526483 = isSymbolE($acc264526483, $list64526483[2])
425+ if (($size64526483 == 3))
426+ then $acc364526483
414427 else {
415- let $acc458675898 = isSymbolE($acc358675898, $list58675898[3])
416- if (($size58675898 == 4))
417- then $acc458675898
428+ let $acc464526483 = isSymbolE($acc364526483, $list64526483[3])
429+ if (($size64526483 == 4))
430+ then $acc464526483
418431 else {
419- let $acc558675898 = isSymbolE($acc458675898, $list58675898[4])
420- if (($size58675898 == 5))
421- then $acc558675898
432+ let $acc564526483 = isSymbolE($acc464526483, $list64526483[4])
433+ if (($size64526483 == 5))
434+ then $acc564526483
422435 else {
423- let $acc658675898 = isSymbolE($acc558675898, $list58675898[5])
424- if (($size58675898 == 6))
425- then $acc658675898
436+ let $acc664526483 = isSymbolE($acc564526483, $list64526483[5])
437+ if (($size64526483 == 6))
438+ then $acc664526483
426439 else {
427- let $acc758675898 = isSymbolE($acc658675898, $list58675898[6])
428- if (($size58675898 == 7))
429- then $acc758675898
440+ let $acc764526483 = isSymbolE($acc664526483, $list64526483[6])
441+ if (($size64526483 == 7))
442+ then $acc764526483
430443 else {
431- let $acc858675898 = isSymbolE($acc758675898, $list58675898[7])
432- if (($size58675898 == 8))
433- then $acc858675898
444+ let $acc864526483 = isSymbolE($acc764526483, $list64526483[7])
445+ if (($size64526483 == 8))
446+ then $acc864526483
434447 else {
435- let $acc958675898 = isSymbolE($acc858675898, $list58675898[8])
448+ let $acc964526483 = isSymbolE($acc864526483, $list64526483[8])
436449 throw("List size exceed 8")
437450 }
438451 }
444457 }
445458 }
446459 }) + "E"))) + getAmountOrClear((toString({
447- let $list59355966 = genotype
448- let $size59355966 = size($list59355966)
449- let $acc059355966 = 0
450- if (($size59355966 == 0))
451- then $acc059355966
460+ let $list65206551 = genotype
461+ let $size65206551 = size($list65206551)
462+ let $acc065206551 = 0
463+ if (($size65206551 == 0))
464+ then $acc065206551
452465 else {
453- let $acc159355966 = isSymbolF($acc059355966, $list59355966[0])
454- if (($size59355966 == 1))
455- then $acc159355966
466+ let $acc165206551 = isSymbolF($acc065206551, $list65206551[0])
467+ if (($size65206551 == 1))
468+ then $acc165206551
456469 else {
457- let $acc259355966 = isSymbolF($acc159355966, $list59355966[1])
458- if (($size59355966 == 2))
459- then $acc259355966
470+ let $acc265206551 = isSymbolF($acc165206551, $list65206551[1])
471+ if (($size65206551 == 2))
472+ then $acc265206551
460473 else {
461- let $acc359355966 = isSymbolF($acc259355966, $list59355966[2])
462- if (($size59355966 == 3))
463- then $acc359355966
474+ let $acc365206551 = isSymbolF($acc265206551, $list65206551[2])
475+ if (($size65206551 == 3))
476+ then $acc365206551
464477 else {
465- let $acc459355966 = isSymbolF($acc359355966, $list59355966[3])
466- if (($size59355966 == 4))
467- then $acc459355966
478+ let $acc465206551 = isSymbolF($acc365206551, $list65206551[3])
479+ if (($size65206551 == 4))
480+ then $acc465206551
468481 else {
469- let $acc559355966 = isSymbolF($acc459355966, $list59355966[4])
470- if (($size59355966 == 5))
471- then $acc559355966
482+ let $acc565206551 = isSymbolF($acc465206551, $list65206551[4])
483+ if (($size65206551 == 5))
484+ then $acc565206551
472485 else {
473- let $acc659355966 = isSymbolF($acc559355966, $list59355966[5])
474- if (($size59355966 == 6))
475- then $acc659355966
486+ let $acc665206551 = isSymbolF($acc565206551, $list65206551[5])
487+ if (($size65206551 == 6))
488+ then $acc665206551
476489 else {
477- let $acc759355966 = isSymbolF($acc659355966, $list59355966[6])
478- if (($size59355966 == 7))
479- then $acc759355966
490+ let $acc765206551 = isSymbolF($acc665206551, $list65206551[6])
491+ if (($size65206551 == 7))
492+ then $acc765206551
480493 else {
481- let $acc859355966 = isSymbolF($acc759355966, $list59355966[7])
482- if (($size59355966 == 8))
483- then $acc859355966
494+ let $acc865206551 = isSymbolF($acc765206551, $list65206551[7])
495+ if (($size65206551 == 8))
496+ then $acc865206551
484497 else {
485- let $acc959355966 = isSymbolF($acc859355966, $list59355966[8])
498+ let $acc965206551 = isSymbolF($acc865206551, $list65206551[8])
486499 throw("List size exceed 8")
487500 }
488501 }
494507 }
495508 }
496509 }) + "F"))) + getAmountOrClear((toString({
497- let $list60056036 = genotype
498- let $size60056036 = size($list60056036)
499- let $acc060056036 = 0
500- if (($size60056036 == 0))
501- then $acc060056036
510+ let $list65906621 = genotype
511+ let $size65906621 = size($list65906621)
512+ let $acc065906621 = 0
513+ if (($size65906621 == 0))
514+ then $acc065906621
502515 else {
503- let $acc160056036 = isSymbolG($acc060056036, $list60056036[0])
504- if (($size60056036 == 1))
505- then $acc160056036
516+ let $acc165906621 = isSymbolG($acc065906621, $list65906621[0])
517+ if (($size65906621 == 1))
518+ then $acc165906621
506519 else {
507- let $acc260056036 = isSymbolG($acc160056036, $list60056036[1])
508- if (($size60056036 == 2))
509- then $acc260056036
520+ let $acc265906621 = isSymbolG($acc165906621, $list65906621[1])
521+ if (($size65906621 == 2))
522+ then $acc265906621
510523 else {
511- let $acc360056036 = isSymbolG($acc260056036, $list60056036[2])
512- if (($size60056036 == 3))
513- then $acc360056036
524+ let $acc365906621 = isSymbolG($acc265906621, $list65906621[2])
525+ if (($size65906621 == 3))
526+ then $acc365906621
514527 else {
515- let $acc460056036 = isSymbolG($acc360056036, $list60056036[3])
516- if (($size60056036 == 4))
517- then $acc460056036
528+ let $acc465906621 = isSymbolG($acc365906621, $list65906621[3])
529+ if (($size65906621 == 4))
530+ then $acc465906621
518531 else {
519- let $acc560056036 = isSymbolG($acc460056036, $list60056036[4])
520- if (($size60056036 == 5))
521- then $acc560056036
532+ let $acc565906621 = isSymbolG($acc465906621, $list65906621[4])
533+ if (($size65906621 == 5))
534+ then $acc565906621
522535 else {
523- let $acc660056036 = isSymbolG($acc560056036, $list60056036[5])
524- if (($size60056036 == 6))
525- then $acc660056036
536+ let $acc665906621 = isSymbolG($acc565906621, $list65906621[5])
537+ if (($size65906621 == 6))
538+ then $acc665906621
526539 else {
527- let $acc760056036 = isSymbolG($acc660056036, $list60056036[6])
528- if (($size60056036 == 7))
529- then $acc760056036
540+ let $acc765906621 = isSymbolG($acc665906621, $list65906621[6])
541+ if (($size65906621 == 7))
542+ then $acc765906621
530543 else {
531- let $acc860056036 = isSymbolG($acc760056036, $list60056036[7])
532- if (($size60056036 == 8))
533- then $acc860056036
544+ let $acc865906621 = isSymbolG($acc765906621, $list65906621[7])
545+ if (($size65906621 == 8))
546+ then $acc865906621
534547 else {
535- let $acc960056036 = isSymbolG($acc860056036, $list60056036[8])
548+ let $acc965906621 = isSymbolG($acc865906621, $list65906621[8])
536549 throw("List size exceed 8")
537550 }
538551 }
544557 }
545558 }
546559 }) + "G"))) + getAmountOrClear((toString({
547- let $list60736104 = genotype
548- let $size60736104 = size($list60736104)
549- let $acc060736104 = 0
550- if (($size60736104 == 0))
551- then $acc060736104
560+ let $list66586689 = genotype
561+ let $size66586689 = size($list66586689)
562+ let $acc066586689 = 0
563+ if (($size66586689 == 0))
564+ then $acc066586689
552565 else {
553- let $acc160736104 = isSymbolH($acc060736104, $list60736104[0])
554- if (($size60736104 == 1))
555- then $acc160736104
566+ let $acc166586689 = isSymbolH($acc066586689, $list66586689[0])
567+ if (($size66586689 == 1))
568+ then $acc166586689
556569 else {
557- let $acc260736104 = isSymbolH($acc160736104, $list60736104[1])
558- if (($size60736104 == 2))
559- then $acc260736104
570+ let $acc266586689 = isSymbolH($acc166586689, $list66586689[1])
571+ if (($size66586689 == 2))
572+ then $acc266586689
560573 else {
561- let $acc360736104 = isSymbolH($acc260736104, $list60736104[2])
562- if (($size60736104 == 3))
563- then $acc360736104
574+ let $acc366586689 = isSymbolH($acc266586689, $list66586689[2])
575+ if (($size66586689 == 3))
576+ then $acc366586689
564577 else {
565- let $acc460736104 = isSymbolH($acc360736104, $list60736104[3])
566- if (($size60736104 == 4))
567- then $acc460736104
578+ let $acc466586689 = isSymbolH($acc366586689, $list66586689[3])
579+ if (($size66586689 == 4))
580+ then $acc466586689
568581 else {
569- let $acc560736104 = isSymbolH($acc460736104, $list60736104[4])
570- if (($size60736104 == 5))
571- then $acc560736104
582+ let $acc566586689 = isSymbolH($acc466586689, $list66586689[4])
583+ if (($size66586689 == 5))
584+ then $acc566586689
572585 else {
573- let $acc660736104 = isSymbolH($acc560736104, $list60736104[5])
574- if (($size60736104 == 6))
575- then $acc660736104
586+ let $acc666586689 = isSymbolH($acc566586689, $list66586689[5])
587+ if (($size66586689 == 6))
588+ then $acc666586689
576589 else {
577- let $acc760736104 = isSymbolH($acc660736104, $list60736104[6])
578- if (($size60736104 == 7))
579- then $acc760736104
590+ let $acc766586689 = isSymbolH($acc666586689, $list66586689[6])
591+ if (($size66586689 == 7))
592+ then $acc766586689
580593 else {
581- let $acc860736104 = isSymbolH($acc760736104, $list60736104[7])
582- if (($size60736104 == 8))
583- then $acc860736104
594+ let $acc866586689 = isSymbolH($acc766586689, $list66586689[7])
595+ if (($size66586689 == 8))
596+ then $acc866586689
584597 else {
585- let $acc960736104 = isSymbolH($acc860736104, $list60736104[8])
598+ let $acc966586689 = isSymbolH($acc866586689, $list66586689[8])
586599 throw("List size exceed 8")
587600 }
588601 }
616629 else 2
617630 }
618631 else throw("not valid NFT")
632+
633+
634+func getScore (a,b) = if ((a > b))
635+ then 1
636+ else if ((b > a))
637+ then -1
638+ else 0
619639
620640
621641 func getWinner (gameId) = {
655675 let callerAddress = toBase58String(i.caller.bytes)
656676 let slotGameId = getSlot(slot)
657677 let payment = value(i.payments[0])
658- let eggs = (payment.amount - makerFee)
678+ let eggs = payment.amount
659679 let gameId = getNextGameId()
660680 if ((getPlayerCurrentGame(callerAddress) != 0))
661681 then throw("You already have an active game")
705725 then throw("This slot is empty")
706726 else if ((payment.assetId != eggsAssetId))
707727 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
708- else if ((payment.amount != (getBetEggs(gameId) + takerFee)))
728+ else if ((payment.amount != getBetEggs(gameId)))
709729 then throw("Insufficient eggs amount")
710730 else if ((height >= getWaitingExpirationHeight(gameId)))
711731 then throw("This game is expired")
712- else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), gameId), StringEntry(getTakerKey(gameId), callerAddress), StringEntry(getPlayerRoleKey(gameId, callerAddress), "taker"), IntegerEntry(getStepKey(gameId), 0), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration)), IntegerEntry(getSlotKey(slot), 0)]
732+ else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), gameId), StringEntry(getTakerKey(gameId), callerAddress), StringEntry(getPlayerRoleKey(gameId, callerAddress), "taker"), IntegerEntry(getStepKey(gameId), 0), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration)), IntegerEntry(getSlotKey(slot), 0), IntegerEntry("gamesPlayed", (getGamesPlayed() + 1))]
713733 }
714734
715735
727747 then throw("Waiting is not finished yet")
728748 else {
729749 let maker = getMaker(gameId)
730-[IntegerEntry(getPlayerCurrentGameKey(maker), 0), IntegerEntry(getSlotKey(slot), 0), ScriptTransfer(Address(fromBase58String(maker)), (getBetEggs(gameId) + makerFee), eggsAssetId)]
750+[IntegerEntry(getPlayerCurrentGameKey(maker), 0), IntegerEntry(getSlotKey(slot), 0), ScriptTransfer(Address(fromBase58String(maker)), getBetEggs(gameId), eggsAssetId)]
731751 }
732752 }
733753
762782 then throw("It is the maker's turn to pick now")
763783 else if ((gameStep > 1))
764784 then throw("Ducks have already been picked")
765- else if (if ((worstRarity >= (worstRarityRange * 10)))
785+ else if (if ((worstRarity > (worstRarityRange * 10)))
766786 then true
767- else (((worstRarityRange - 1) * 10) > worstRarity))
787+ else (((worstRarityRange - 1) * 10) >= worstRarity))
768788 then throw("Worst duck doesn't fit rarity range")
769- else if (if ((mediumRarity >= (mediumRarityRange * 10)))
789+ else if (if ((mediumRarity > (mediumRarityRange * 10)))
770790 then true
771- else (((mediumRarityRange - 1) * 10) > mediumRarity))
791+ else (((mediumRarityRange - 1) * 10) >= mediumRarity))
772792 then throw("Medium duck doesn't fit rarity range")
773793 else if (if (if (if ((bestRarityRange == 5))
774- then (40 > bestRarity)
794+ then (40 >= bestRarity)
775795 else false)
776796 then true
777- else (bestRarity >= (bestRarityRange * 10)))
797+ else (bestRarity > (bestRarityRange * 10)))
778798 then true
779- else (((bestRarityRange - 1) * 10) > bestRarity))
799+ else (((bestRarityRange - 1) * 10) >= bestRarity))
780800 then throw("Best duck doesn't fit rarity range")
781801 else [IntegerEntry(getRarityKey(gameId, playerRole, "worst"), worstRarity), IntegerEntry(getRarityKey(gameId, playerRole, "medium"), mediumRarity), IntegerEntry(getRarityKey(gameId, playerRole, "best"), bestRarity), StringEntry(getDuckIdKey(gameId, playerRole, "worst"), toBase58String(worstDuckId)), StringEntry(getDuckIdKey(gameId, playerRole, "medium"), toBase58String(mediumDuckId)), StringEntry(getDuckIdKey(gameId, playerRole, "best"), toBase58String(bestDuckId)), IntegerEntry(getStepKey(gameId), (gameStep + 1)), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration)), ScriptTransfer(i.caller, 1, worstDuckId), ScriptTransfer(i.caller, 1, mediumDuckId), ScriptTransfer(i.caller, 1, bestDuckId)]
782802 }
860880 else if (getPrizeSent(gameId, playerRole))
861881 then throw("You have already got the prize")
862882 else if ((winner == playerRole))
863- then [IntegerEntry(getPlayerCurrentGameKey(makerAddress), 0), IntegerEntry(getPlayerCurrentGameKey(takerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), ScriptTransfer(i.caller, (getBetEggs(gameId) * 2), eggsAssetId)]
883+ then [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), IntegerEntry(getPlayerWinsKey(callerAddress), (getPlayerWins(callerAddress) + 1)), ScriptTransfer(i.caller, (getBetEggs(gameId) * 2), eggsAssetId)]
864884 else if ((winner == "draw"))
865- then [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), ScriptTransfer(i.caller, getBetEggs(gameId), eggsAssetId)]
866- else throw("You lose and don't have any prize")
885+ then [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), IntegerEntry(getPlayerDrawsKey(callerAddress), (getPlayerDraws(callerAddress) + 1)), ScriptTransfer(i.caller, getBetEggs(gameId), eggsAssetId)]
886+ else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), IntegerEntry(getPlayerLosesKey(callerAddress), (getPlayerLoses(callerAddress) + 1)), BooleanEntry(getPrizeSentKey(gameId, playerRole), true)]
867887 }
868888
869889
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let incubatorAddress = base58'3MtBigTsaeevrcJAEwVcr4quwkqcrtnjoAh'
55
66 let breederAddress = base58'3N285kYUMxPi6oZsdWrxhSY34dJHyu4kRN5'
77
88 let eggsAssetId = base58'3VUCuh9dWqe54SdzzNUkXhFXpc8UQynnJVh42B7MjNzN'
99
10-let makerFee = 1
11-
12-let takerFee = 1
13-
1410 let SLOTS = 10
1511
16-let WAITING = 5
12+let WAITING = 8
1713
18-let stepDuration = 3
14+let stepDuration = 5
1915
2016 func tryGetInteger (key) = match getInteger(this, key) {
2117 case b: Int =>
2218 b
2319 case _ =>
2420 0
2521 }
2622
2723
2824 func tryGetString (key) = match getString(this, key) {
2925 case a: String =>
3026 a
3127 case _ =>
3228 ""
3329 }
3430
3531
3632 func tryGetBoolean (key) = match getBoolean(this, key) {
3733 case b: Boolean =>
3834 b
3935 case _ =>
4036 false
4137 }
4238
4339
4440 func getNextGameId () = {
4541 let nextId = tryGetInteger("nextGameId")
4642 if ((nextId == 0))
4743 then 1
4844 else nextId
4945 }
5046
5147
52-func getPlayerCurrentGameKey (playerAddress) = ("currentGame_" + playerAddress)
48+func getPlayerCurrentGameKey (playerAddress) = (playerAddress + "_currentGame")
5349
5450
5551 func getPlayerCurrentGame (playerAddress) = tryGetInteger(getPlayerCurrentGameKey(playerAddress))
5652
5753
5854 func getSlotKey (slot) = ("slot" + toString(slot))
5955
6056
6157 func getSlot (slot) = tryGetInteger(getSlotKey(slot))
6258
6359
6460 func getPlayerRoleKey (gameId,playerAddress) = ((("game" + toString(gameId)) + "_") + playerAddress)
6561
6662
6763 func getPlayerRole (gameId,playerAddress) = tryGetString(getPlayerRoleKey(gameId, playerAddress))
6864
6965
7066 func getMakerKey (gameId) = (("game" + toString(gameId)) + "_maker")
7167
7268
7369 func getMaker (gameId) = tryGetString(getMakerKey(gameId))
7470
7571
7672 func getTakerKey (gameId) = (("game" + toString(gameId)) + "_taker")
7773
7874
7975 func getTaker (gameId) = tryGetString(getTakerKey(gameId))
8076
8177
8278 func getBetEggsKey (gameId) = (("game" + toString(gameId)) + "_betEggs")
8379
8480
8581 func getBetEggs (gameId) = tryGetInteger(getBetEggsKey(gameId))
8682
8783
8884 func getWaitingExpirationHeightKey (gameId) = (("game" + toString(gameId)) + "_waitingExpirationHeight")
8985
9086
9187 func getWaitingExpirationHeight (gameId) = tryGetInteger(getWaitingExpirationHeightKey(gameId))
9288
9389
9490 func getExpirationHeightKey (gameId) = (("game" + toString(gameId)) + "_expirationHeight")
9591
9692
9793 func getExpirationHeight (gameId) = tryGetInteger(getExpirationHeightKey(gameId))
9894
9995
10096 func getRarityRangeKey (gameId,rangePosition) = ((("game" + toString(gameId)) + "_rarityRange_") + rangePosition)
10197
10298
10399 func getRarityRange (gameId,rangePosition) = tryGetInteger(getRarityRangeKey(gameId, rangePosition))
104100
105101
106102 func getStepKey (gameId) = (("game" + toString(gameId)) + "_step")
107103
108104
109105 func getStep (gameId) = tryGetInteger(getStepKey(gameId))
110106
111107
112108 func getRarityKey (gameId,playerRole,rangePosition) = (((((("game" + toString(gameId)) + "_") + playerRole) + "_") + rangePosition) + "Rarity")
113109
114110
115111 func getRarity (gameId,playerRole,rangePosition) = tryGetInteger(getRarityKey(gameId, playerRole, rangePosition))
116112
117113
118114 func getDuckIdKey (gameId,playerRole,rangePosition) = (((((("game" + toString(gameId)) + "_") + playerRole) + "_") + rangePosition) + "DuckId")
119115
120116
121117 func getDuckId (gameId,playerRole,rangePosition) = tryGetString(getDuckIdKey(gameId, playerRole, rangePosition))
122118
123119
124120 func getCommitKey (gameId,playerRole) = (((("game" + toString(gameId)) + "_") + playerRole) + "_commit")
125121
126122
127123 func getCommit (gameId,playerRole) = tryGetString(getCommitKey(gameId, playerRole))
128124
129125
130126 func getDuckOrderKey (gameId,playerRole) = (((("game" + toString(gameId)) + "_") + playerRole) + "_duckOrder")
131127
132128
133129 func getDuckOrder (gameId,playerRole) = tryGetString(getDuckOrderKey(gameId, playerRole))
134130
135131
136132 func getPrizeSentKey (gameId,playerRole) = (((("game" + toString(gameId)) + "_") + playerRole) + "_prizeSent")
137133
138134
139135 func getPrizeSent (gameId,playerRole) = tryGetBoolean(getPrizeSentKey(gameId, playerRole))
140136
141137
142-func getScore (a,b) = if ((a > b))
143- then 1
144- else if ((b > a))
145- then -1
146- else 0
138+func getPlayerWinsKey (playerAddress) = (playerAddress + "_wins")
139+
140+
141+func getPlayerWins (playerAddress) = tryGetInteger(getPlayerWinsKey(playerAddress))
142+
143+
144+func getPlayerLosesKey (playerAddress) = (playerAddress + "_loses")
145+
146+
147+func getPlayerLoses (playerAddress) = tryGetInteger(getPlayerLosesKey(playerAddress))
148+
149+
150+func getPlayerDrawsKey (playerAddress) = (playerAddress + "_draws")
151+
152+
153+func getPlayerDraws (playerAddress) = tryGetInteger(getPlayerDrawsKey(playerAddress))
154+
155+
156+func getGamesPlayedKey () = "gamesPlayed"
157+
158+
159+func getGamesPlayed () = tryGetInteger(getGamesPlayedKey())
147160
148161
149162 func isSymbolA (accumulated,sym) = if ((sym == "A"))
150163 then (accumulated + 1)
151164 else (accumulated + 0)
152165
153166
154167 func isSymbolB (accumulated,sym) = if ((sym == "B"))
155168 then (accumulated + 1)
156169 else (accumulated + 0)
157170
158171
159172 func isSymbolC (accumulated,sym) = if ((sym == "C"))
160173 then (accumulated + 1)
161174 else (accumulated + 0)
162175
163176
164177 func isSymbolD (accumulated,sym) = if ((sym == "D"))
165178 then (accumulated + 1)
166179 else (accumulated + 0)
167180
168181
169182 func isSymbolE (accumulated,sym) = if ((sym == "E"))
170183 then (accumulated + 1)
171184 else (accumulated + 0)
172185
173186
174187 func isSymbolF (accumulated,sym) = if ((sym == "F"))
175188 then (accumulated + 1)
176189 else (accumulated + 0)
177190
178191
179192 func isSymbolG (accumulated,sym) = if ((sym == "G"))
180193 then (accumulated + 1)
181194 else (accumulated + 0)
182195
183196
184197 func isSymbolH (accumulated,sym) = if ((sym == "H"))
185198 then (accumulated + 1)
186199 else (accumulated + 0)
187200
188201
189202 func getAmountOrClear (amount) = if (contains(amount, "0"))
190203 then ""
191204 else amount
192205
193206
194207 func getGen (assetName) = {
195208 let genotype = split(dropRight(drop(assetName, 5), 3), "")
196209 (((((((getAmountOrClear((toString({
197- let $list55935624 = genotype
198- let $size55935624 = size($list55935624)
199- let $acc055935624 = 0
200- if (($size55935624 == 0))
201- then $acc055935624
210+ let $list61786209 = genotype
211+ let $size61786209 = size($list61786209)
212+ let $acc061786209 = 0
213+ if (($size61786209 == 0))
214+ then $acc061786209
202215 else {
203- let $acc155935624 = isSymbolA($acc055935624, $list55935624[0])
204- if (($size55935624 == 1))
205- then $acc155935624
216+ let $acc161786209 = isSymbolA($acc061786209, $list61786209[0])
217+ if (($size61786209 == 1))
218+ then $acc161786209
206219 else {
207- let $acc255935624 = isSymbolA($acc155935624, $list55935624[1])
208- if (($size55935624 == 2))
209- then $acc255935624
220+ let $acc261786209 = isSymbolA($acc161786209, $list61786209[1])
221+ if (($size61786209 == 2))
222+ then $acc261786209
210223 else {
211- let $acc355935624 = isSymbolA($acc255935624, $list55935624[2])
212- if (($size55935624 == 3))
213- then $acc355935624
224+ let $acc361786209 = isSymbolA($acc261786209, $list61786209[2])
225+ if (($size61786209 == 3))
226+ then $acc361786209
214227 else {
215- let $acc455935624 = isSymbolA($acc355935624, $list55935624[3])
216- if (($size55935624 == 4))
217- then $acc455935624
228+ let $acc461786209 = isSymbolA($acc361786209, $list61786209[3])
229+ if (($size61786209 == 4))
230+ then $acc461786209
218231 else {
219- let $acc555935624 = isSymbolA($acc455935624, $list55935624[4])
220- if (($size55935624 == 5))
221- then $acc555935624
232+ let $acc561786209 = isSymbolA($acc461786209, $list61786209[4])
233+ if (($size61786209 == 5))
234+ then $acc561786209
222235 else {
223- let $acc655935624 = isSymbolA($acc555935624, $list55935624[5])
224- if (($size55935624 == 6))
225- then $acc655935624
236+ let $acc661786209 = isSymbolA($acc561786209, $list61786209[5])
237+ if (($size61786209 == 6))
238+ then $acc661786209
226239 else {
227- let $acc755935624 = isSymbolA($acc655935624, $list55935624[6])
228- if (($size55935624 == 7))
229- then $acc755935624
240+ let $acc761786209 = isSymbolA($acc661786209, $list61786209[6])
241+ if (($size61786209 == 7))
242+ then $acc761786209
230243 else {
231- let $acc855935624 = isSymbolA($acc755935624, $list55935624[7])
232- if (($size55935624 == 8))
233- then $acc855935624
244+ let $acc861786209 = isSymbolA($acc761786209, $list61786209[7])
245+ if (($size61786209 == 8))
246+ then $acc861786209
234247 else {
235- let $acc955935624 = isSymbolA($acc855935624, $list55935624[8])
248+ let $acc961786209 = isSymbolA($acc861786209, $list61786209[8])
236249 throw("List size exceed 8")
237250 }
238251 }
239252 }
240253 }
241254 }
242255 }
243256 }
244257 }
245258 }
246259 }) + "A")) + getAmountOrClear((toString({
247- let $list56615692 = genotype
248- let $size56615692 = size($list56615692)
249- let $acc056615692 = 0
250- if (($size56615692 == 0))
251- then $acc056615692
260+ let $list62466277 = genotype
261+ let $size62466277 = size($list62466277)
262+ let $acc062466277 = 0
263+ if (($size62466277 == 0))
264+ then $acc062466277
252265 else {
253- let $acc156615692 = isSymbolB($acc056615692, $list56615692[0])
254- if (($size56615692 == 1))
255- then $acc156615692
266+ let $acc162466277 = isSymbolB($acc062466277, $list62466277[0])
267+ if (($size62466277 == 1))
268+ then $acc162466277
256269 else {
257- let $acc256615692 = isSymbolB($acc156615692, $list56615692[1])
258- if (($size56615692 == 2))
259- then $acc256615692
270+ let $acc262466277 = isSymbolB($acc162466277, $list62466277[1])
271+ if (($size62466277 == 2))
272+ then $acc262466277
260273 else {
261- let $acc356615692 = isSymbolB($acc256615692, $list56615692[2])
262- if (($size56615692 == 3))
263- then $acc356615692
274+ let $acc362466277 = isSymbolB($acc262466277, $list62466277[2])
275+ if (($size62466277 == 3))
276+ then $acc362466277
264277 else {
265- let $acc456615692 = isSymbolB($acc356615692, $list56615692[3])
266- if (($size56615692 == 4))
267- then $acc456615692
278+ let $acc462466277 = isSymbolB($acc362466277, $list62466277[3])
279+ if (($size62466277 == 4))
280+ then $acc462466277
268281 else {
269- let $acc556615692 = isSymbolB($acc456615692, $list56615692[4])
270- if (($size56615692 == 5))
271- then $acc556615692
282+ let $acc562466277 = isSymbolB($acc462466277, $list62466277[4])
283+ if (($size62466277 == 5))
284+ then $acc562466277
272285 else {
273- let $acc656615692 = isSymbolB($acc556615692, $list56615692[5])
274- if (($size56615692 == 6))
275- then $acc656615692
286+ let $acc662466277 = isSymbolB($acc562466277, $list62466277[5])
287+ if (($size62466277 == 6))
288+ then $acc662466277
276289 else {
277- let $acc756615692 = isSymbolB($acc656615692, $list56615692[6])
278- if (($size56615692 == 7))
279- then $acc756615692
290+ let $acc762466277 = isSymbolB($acc662466277, $list62466277[6])
291+ if (($size62466277 == 7))
292+ then $acc762466277
280293 else {
281- let $acc856615692 = isSymbolB($acc756615692, $list56615692[7])
282- if (($size56615692 == 8))
283- then $acc856615692
294+ let $acc862466277 = isSymbolB($acc762466277, $list62466277[7])
295+ if (($size62466277 == 8))
296+ then $acc862466277
284297 else {
285- let $acc956615692 = isSymbolB($acc856615692, $list56615692[8])
298+ let $acc962466277 = isSymbolB($acc862466277, $list62466277[8])
286299 throw("List size exceed 8")
287300 }
288301 }
289302 }
290303 }
291304 }
292305 }
293306 }
294307 }
295308 }
296309 }) + "B"))) + getAmountOrClear((toString({
297- let $list57295760 = genotype
298- let $size57295760 = size($list57295760)
299- let $acc057295760 = 0
300- if (($size57295760 == 0))
301- then $acc057295760
310+ let $list63146345 = genotype
311+ let $size63146345 = size($list63146345)
312+ let $acc063146345 = 0
313+ if (($size63146345 == 0))
314+ then $acc063146345
302315 else {
303- let $acc157295760 = isSymbolC($acc057295760, $list57295760[0])
304- if (($size57295760 == 1))
305- then $acc157295760
316+ let $acc163146345 = isSymbolC($acc063146345, $list63146345[0])
317+ if (($size63146345 == 1))
318+ then $acc163146345
306319 else {
307- let $acc257295760 = isSymbolC($acc157295760, $list57295760[1])
308- if (($size57295760 == 2))
309- then $acc257295760
320+ let $acc263146345 = isSymbolC($acc163146345, $list63146345[1])
321+ if (($size63146345 == 2))
322+ then $acc263146345
310323 else {
311- let $acc357295760 = isSymbolC($acc257295760, $list57295760[2])
312- if (($size57295760 == 3))
313- then $acc357295760
324+ let $acc363146345 = isSymbolC($acc263146345, $list63146345[2])
325+ if (($size63146345 == 3))
326+ then $acc363146345
314327 else {
315- let $acc457295760 = isSymbolC($acc357295760, $list57295760[3])
316- if (($size57295760 == 4))
317- then $acc457295760
328+ let $acc463146345 = isSymbolC($acc363146345, $list63146345[3])
329+ if (($size63146345 == 4))
330+ then $acc463146345
318331 else {
319- let $acc557295760 = isSymbolC($acc457295760, $list57295760[4])
320- if (($size57295760 == 5))
321- then $acc557295760
332+ let $acc563146345 = isSymbolC($acc463146345, $list63146345[4])
333+ if (($size63146345 == 5))
334+ then $acc563146345
322335 else {
323- let $acc657295760 = isSymbolC($acc557295760, $list57295760[5])
324- if (($size57295760 == 6))
325- then $acc657295760
336+ let $acc663146345 = isSymbolC($acc563146345, $list63146345[5])
337+ if (($size63146345 == 6))
338+ then $acc663146345
326339 else {
327- let $acc757295760 = isSymbolC($acc657295760, $list57295760[6])
328- if (($size57295760 == 7))
329- then $acc757295760
340+ let $acc763146345 = isSymbolC($acc663146345, $list63146345[6])
341+ if (($size63146345 == 7))
342+ then $acc763146345
330343 else {
331- let $acc857295760 = isSymbolC($acc757295760, $list57295760[7])
332- if (($size57295760 == 8))
333- then $acc857295760
344+ let $acc863146345 = isSymbolC($acc763146345, $list63146345[7])
345+ if (($size63146345 == 8))
346+ then $acc863146345
334347 else {
335- let $acc957295760 = isSymbolC($acc857295760, $list57295760[8])
348+ let $acc963146345 = isSymbolC($acc863146345, $list63146345[8])
336349 throw("List size exceed 8")
337350 }
338351 }
339352 }
340353 }
341354 }
342355 }
343356 }
344357 }
345358 }
346359 }) + "C"))) + getAmountOrClear((toString({
347- let $list57995830 = genotype
348- let $size57995830 = size($list57995830)
349- let $acc057995830 = 0
350- if (($size57995830 == 0))
351- then $acc057995830
360+ let $list63846415 = genotype
361+ let $size63846415 = size($list63846415)
362+ let $acc063846415 = 0
363+ if (($size63846415 == 0))
364+ then $acc063846415
352365 else {
353- let $acc157995830 = isSymbolD($acc057995830, $list57995830[0])
354- if (($size57995830 == 1))
355- then $acc157995830
366+ let $acc163846415 = isSymbolD($acc063846415, $list63846415[0])
367+ if (($size63846415 == 1))
368+ then $acc163846415
356369 else {
357- let $acc257995830 = isSymbolD($acc157995830, $list57995830[1])
358- if (($size57995830 == 2))
359- then $acc257995830
370+ let $acc263846415 = isSymbolD($acc163846415, $list63846415[1])
371+ if (($size63846415 == 2))
372+ then $acc263846415
360373 else {
361- let $acc357995830 = isSymbolD($acc257995830, $list57995830[2])
362- if (($size57995830 == 3))
363- then $acc357995830
374+ let $acc363846415 = isSymbolD($acc263846415, $list63846415[2])
375+ if (($size63846415 == 3))
376+ then $acc363846415
364377 else {
365- let $acc457995830 = isSymbolD($acc357995830, $list57995830[3])
366- if (($size57995830 == 4))
367- then $acc457995830
378+ let $acc463846415 = isSymbolD($acc363846415, $list63846415[3])
379+ if (($size63846415 == 4))
380+ then $acc463846415
368381 else {
369- let $acc557995830 = isSymbolD($acc457995830, $list57995830[4])
370- if (($size57995830 == 5))
371- then $acc557995830
382+ let $acc563846415 = isSymbolD($acc463846415, $list63846415[4])
383+ if (($size63846415 == 5))
384+ then $acc563846415
372385 else {
373- let $acc657995830 = isSymbolD($acc557995830, $list57995830[5])
374- if (($size57995830 == 6))
375- then $acc657995830
386+ let $acc663846415 = isSymbolD($acc563846415, $list63846415[5])
387+ if (($size63846415 == 6))
388+ then $acc663846415
376389 else {
377- let $acc757995830 = isSymbolD($acc657995830, $list57995830[6])
378- if (($size57995830 == 7))
379- then $acc757995830
390+ let $acc763846415 = isSymbolD($acc663846415, $list63846415[6])
391+ if (($size63846415 == 7))
392+ then $acc763846415
380393 else {
381- let $acc857995830 = isSymbolD($acc757995830, $list57995830[7])
382- if (($size57995830 == 8))
383- then $acc857995830
394+ let $acc863846415 = isSymbolD($acc763846415, $list63846415[7])
395+ if (($size63846415 == 8))
396+ then $acc863846415
384397 else {
385- let $acc957995830 = isSymbolD($acc857995830, $list57995830[8])
398+ let $acc963846415 = isSymbolD($acc863846415, $list63846415[8])
386399 throw("List size exceed 8")
387400 }
388401 }
389402 }
390403 }
391404 }
392405 }
393406 }
394407 }
395408 }
396409 }) + "D"))) + getAmountOrClear((toString({
397- let $list58675898 = genotype
398- let $size58675898 = size($list58675898)
399- let $acc058675898 = 0
400- if (($size58675898 == 0))
401- then $acc058675898
410+ let $list64526483 = genotype
411+ let $size64526483 = size($list64526483)
412+ let $acc064526483 = 0
413+ if (($size64526483 == 0))
414+ then $acc064526483
402415 else {
403- let $acc158675898 = isSymbolE($acc058675898, $list58675898[0])
404- if (($size58675898 == 1))
405- then $acc158675898
416+ let $acc164526483 = isSymbolE($acc064526483, $list64526483[0])
417+ if (($size64526483 == 1))
418+ then $acc164526483
406419 else {
407- let $acc258675898 = isSymbolE($acc158675898, $list58675898[1])
408- if (($size58675898 == 2))
409- then $acc258675898
420+ let $acc264526483 = isSymbolE($acc164526483, $list64526483[1])
421+ if (($size64526483 == 2))
422+ then $acc264526483
410423 else {
411- let $acc358675898 = isSymbolE($acc258675898, $list58675898[2])
412- if (($size58675898 == 3))
413- then $acc358675898
424+ let $acc364526483 = isSymbolE($acc264526483, $list64526483[2])
425+ if (($size64526483 == 3))
426+ then $acc364526483
414427 else {
415- let $acc458675898 = isSymbolE($acc358675898, $list58675898[3])
416- if (($size58675898 == 4))
417- then $acc458675898
428+ let $acc464526483 = isSymbolE($acc364526483, $list64526483[3])
429+ if (($size64526483 == 4))
430+ then $acc464526483
418431 else {
419- let $acc558675898 = isSymbolE($acc458675898, $list58675898[4])
420- if (($size58675898 == 5))
421- then $acc558675898
432+ let $acc564526483 = isSymbolE($acc464526483, $list64526483[4])
433+ if (($size64526483 == 5))
434+ then $acc564526483
422435 else {
423- let $acc658675898 = isSymbolE($acc558675898, $list58675898[5])
424- if (($size58675898 == 6))
425- then $acc658675898
436+ let $acc664526483 = isSymbolE($acc564526483, $list64526483[5])
437+ if (($size64526483 == 6))
438+ then $acc664526483
426439 else {
427- let $acc758675898 = isSymbolE($acc658675898, $list58675898[6])
428- if (($size58675898 == 7))
429- then $acc758675898
440+ let $acc764526483 = isSymbolE($acc664526483, $list64526483[6])
441+ if (($size64526483 == 7))
442+ then $acc764526483
430443 else {
431- let $acc858675898 = isSymbolE($acc758675898, $list58675898[7])
432- if (($size58675898 == 8))
433- then $acc858675898
444+ let $acc864526483 = isSymbolE($acc764526483, $list64526483[7])
445+ if (($size64526483 == 8))
446+ then $acc864526483
434447 else {
435- let $acc958675898 = isSymbolE($acc858675898, $list58675898[8])
448+ let $acc964526483 = isSymbolE($acc864526483, $list64526483[8])
436449 throw("List size exceed 8")
437450 }
438451 }
439452 }
440453 }
441454 }
442455 }
443456 }
444457 }
445458 }
446459 }) + "E"))) + getAmountOrClear((toString({
447- let $list59355966 = genotype
448- let $size59355966 = size($list59355966)
449- let $acc059355966 = 0
450- if (($size59355966 == 0))
451- then $acc059355966
460+ let $list65206551 = genotype
461+ let $size65206551 = size($list65206551)
462+ let $acc065206551 = 0
463+ if (($size65206551 == 0))
464+ then $acc065206551
452465 else {
453- let $acc159355966 = isSymbolF($acc059355966, $list59355966[0])
454- if (($size59355966 == 1))
455- then $acc159355966
466+ let $acc165206551 = isSymbolF($acc065206551, $list65206551[0])
467+ if (($size65206551 == 1))
468+ then $acc165206551
456469 else {
457- let $acc259355966 = isSymbolF($acc159355966, $list59355966[1])
458- if (($size59355966 == 2))
459- then $acc259355966
470+ let $acc265206551 = isSymbolF($acc165206551, $list65206551[1])
471+ if (($size65206551 == 2))
472+ then $acc265206551
460473 else {
461- let $acc359355966 = isSymbolF($acc259355966, $list59355966[2])
462- if (($size59355966 == 3))
463- then $acc359355966
474+ let $acc365206551 = isSymbolF($acc265206551, $list65206551[2])
475+ if (($size65206551 == 3))
476+ then $acc365206551
464477 else {
465- let $acc459355966 = isSymbolF($acc359355966, $list59355966[3])
466- if (($size59355966 == 4))
467- then $acc459355966
478+ let $acc465206551 = isSymbolF($acc365206551, $list65206551[3])
479+ if (($size65206551 == 4))
480+ then $acc465206551
468481 else {
469- let $acc559355966 = isSymbolF($acc459355966, $list59355966[4])
470- if (($size59355966 == 5))
471- then $acc559355966
482+ let $acc565206551 = isSymbolF($acc465206551, $list65206551[4])
483+ if (($size65206551 == 5))
484+ then $acc565206551
472485 else {
473- let $acc659355966 = isSymbolF($acc559355966, $list59355966[5])
474- if (($size59355966 == 6))
475- then $acc659355966
486+ let $acc665206551 = isSymbolF($acc565206551, $list65206551[5])
487+ if (($size65206551 == 6))
488+ then $acc665206551
476489 else {
477- let $acc759355966 = isSymbolF($acc659355966, $list59355966[6])
478- if (($size59355966 == 7))
479- then $acc759355966
490+ let $acc765206551 = isSymbolF($acc665206551, $list65206551[6])
491+ if (($size65206551 == 7))
492+ then $acc765206551
480493 else {
481- let $acc859355966 = isSymbolF($acc759355966, $list59355966[7])
482- if (($size59355966 == 8))
483- then $acc859355966
494+ let $acc865206551 = isSymbolF($acc765206551, $list65206551[7])
495+ if (($size65206551 == 8))
496+ then $acc865206551
484497 else {
485- let $acc959355966 = isSymbolF($acc859355966, $list59355966[8])
498+ let $acc965206551 = isSymbolF($acc865206551, $list65206551[8])
486499 throw("List size exceed 8")
487500 }
488501 }
489502 }
490503 }
491504 }
492505 }
493506 }
494507 }
495508 }
496509 }) + "F"))) + getAmountOrClear((toString({
497- let $list60056036 = genotype
498- let $size60056036 = size($list60056036)
499- let $acc060056036 = 0
500- if (($size60056036 == 0))
501- then $acc060056036
510+ let $list65906621 = genotype
511+ let $size65906621 = size($list65906621)
512+ let $acc065906621 = 0
513+ if (($size65906621 == 0))
514+ then $acc065906621
502515 else {
503- let $acc160056036 = isSymbolG($acc060056036, $list60056036[0])
504- if (($size60056036 == 1))
505- then $acc160056036
516+ let $acc165906621 = isSymbolG($acc065906621, $list65906621[0])
517+ if (($size65906621 == 1))
518+ then $acc165906621
506519 else {
507- let $acc260056036 = isSymbolG($acc160056036, $list60056036[1])
508- if (($size60056036 == 2))
509- then $acc260056036
520+ let $acc265906621 = isSymbolG($acc165906621, $list65906621[1])
521+ if (($size65906621 == 2))
522+ then $acc265906621
510523 else {
511- let $acc360056036 = isSymbolG($acc260056036, $list60056036[2])
512- if (($size60056036 == 3))
513- then $acc360056036
524+ let $acc365906621 = isSymbolG($acc265906621, $list65906621[2])
525+ if (($size65906621 == 3))
526+ then $acc365906621
514527 else {
515- let $acc460056036 = isSymbolG($acc360056036, $list60056036[3])
516- if (($size60056036 == 4))
517- then $acc460056036
528+ let $acc465906621 = isSymbolG($acc365906621, $list65906621[3])
529+ if (($size65906621 == 4))
530+ then $acc465906621
518531 else {
519- let $acc560056036 = isSymbolG($acc460056036, $list60056036[4])
520- if (($size60056036 == 5))
521- then $acc560056036
532+ let $acc565906621 = isSymbolG($acc465906621, $list65906621[4])
533+ if (($size65906621 == 5))
534+ then $acc565906621
522535 else {
523- let $acc660056036 = isSymbolG($acc560056036, $list60056036[5])
524- if (($size60056036 == 6))
525- then $acc660056036
536+ let $acc665906621 = isSymbolG($acc565906621, $list65906621[5])
537+ if (($size65906621 == 6))
538+ then $acc665906621
526539 else {
527- let $acc760056036 = isSymbolG($acc660056036, $list60056036[6])
528- if (($size60056036 == 7))
529- then $acc760056036
540+ let $acc765906621 = isSymbolG($acc665906621, $list65906621[6])
541+ if (($size65906621 == 7))
542+ then $acc765906621
530543 else {
531- let $acc860056036 = isSymbolG($acc760056036, $list60056036[7])
532- if (($size60056036 == 8))
533- then $acc860056036
544+ let $acc865906621 = isSymbolG($acc765906621, $list65906621[7])
545+ if (($size65906621 == 8))
546+ then $acc865906621
534547 else {
535- let $acc960056036 = isSymbolG($acc860056036, $list60056036[8])
548+ let $acc965906621 = isSymbolG($acc865906621, $list65906621[8])
536549 throw("List size exceed 8")
537550 }
538551 }
539552 }
540553 }
541554 }
542555 }
543556 }
544557 }
545558 }
546559 }) + "G"))) + getAmountOrClear((toString({
547- let $list60736104 = genotype
548- let $size60736104 = size($list60736104)
549- let $acc060736104 = 0
550- if (($size60736104 == 0))
551- then $acc060736104
560+ let $list66586689 = genotype
561+ let $size66586689 = size($list66586689)
562+ let $acc066586689 = 0
563+ if (($size66586689 == 0))
564+ then $acc066586689
552565 else {
553- let $acc160736104 = isSymbolH($acc060736104, $list60736104[0])
554- if (($size60736104 == 1))
555- then $acc160736104
566+ let $acc166586689 = isSymbolH($acc066586689, $list66586689[0])
567+ if (($size66586689 == 1))
568+ then $acc166586689
556569 else {
557- let $acc260736104 = isSymbolH($acc160736104, $list60736104[1])
558- if (($size60736104 == 2))
559- then $acc260736104
570+ let $acc266586689 = isSymbolH($acc166586689, $list66586689[1])
571+ if (($size66586689 == 2))
572+ then $acc266586689
560573 else {
561- let $acc360736104 = isSymbolH($acc260736104, $list60736104[2])
562- if (($size60736104 == 3))
563- then $acc360736104
574+ let $acc366586689 = isSymbolH($acc266586689, $list66586689[2])
575+ if (($size66586689 == 3))
576+ then $acc366586689
564577 else {
565- let $acc460736104 = isSymbolH($acc360736104, $list60736104[3])
566- if (($size60736104 == 4))
567- then $acc460736104
578+ let $acc466586689 = isSymbolH($acc366586689, $list66586689[3])
579+ if (($size66586689 == 4))
580+ then $acc466586689
568581 else {
569- let $acc560736104 = isSymbolH($acc460736104, $list60736104[4])
570- if (($size60736104 == 5))
571- then $acc560736104
582+ let $acc566586689 = isSymbolH($acc466586689, $list66586689[4])
583+ if (($size66586689 == 5))
584+ then $acc566586689
572585 else {
573- let $acc660736104 = isSymbolH($acc560736104, $list60736104[5])
574- if (($size60736104 == 6))
575- then $acc660736104
586+ let $acc666586689 = isSymbolH($acc566586689, $list66586689[5])
587+ if (($size66586689 == 6))
588+ then $acc666586689
576589 else {
577- let $acc760736104 = isSymbolH($acc660736104, $list60736104[6])
578- if (($size60736104 == 7))
579- then $acc760736104
590+ let $acc766586689 = isSymbolH($acc666586689, $list66586689[6])
591+ if (($size66586689 == 7))
592+ then $acc766586689
580593 else {
581- let $acc860736104 = isSymbolH($acc760736104, $list60736104[7])
582- if (($size60736104 == 8))
583- then $acc860736104
594+ let $acc866586689 = isSymbolH($acc766586689, $list66586689[7])
595+ if (($size66586689 == 8))
596+ then $acc866586689
584597 else {
585- let $acc960736104 = isSymbolH($acc860736104, $list60736104[8])
598+ let $acc966586689 = isSymbolH($acc866586689, $list66586689[8])
586599 throw("List size exceed 8")
587600 }
588601 }
589602 }
590603 }
591604 }
592605 }
593606 }
594607 }
595608 }
596609 }) + "H")))
597610 }
598611
599612
600613 func getAssetOrigin (generation) = if ((generation == "G"))
601614 then incubatorAddress
602615 else breederAddress
603616
604617
605618 func getAssetRarity (assetId) = if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
606619 then true
607620 else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
608621 then {
609622 let assetName = value(assetInfo(assetId)).name
610623 let generation = take(takeRight(assetName, 2), 1)
611624 let gen = ((getGen(assetName) + "-") + generation)
612625 let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + gen) + "_quantity"))
613626 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
614627 if ((power > 0))
615628 then power
616629 else 2
617630 }
618631 else throw("not valid NFT")
632+
633+
634+func getScore (a,b) = if ((a > b))
635+ then 1
636+ else if ((b > a))
637+ then -1
638+ else 0
619639
620640
621641 func getWinner (gameId) = {
622642 let gameStep = getStep(gameId)
623643 if ((6 > gameStep))
624644 then {
625645 let expirationHeight = getExpirationHeight(gameId)
626646 if ((expirationHeight == 0))
627647 then throw("Game is not started")
628648 else if ((expirationHeight > height))
629649 then throw("Game is not finished or expired")
630650 else if (((getStep(gameId) % 2) == 0))
631651 then "maker"
632652 else "taker"
633653 }
634654 else {
635655 let makerDuckOrder = split(getDuckOrder(gameId, "maker"), ",")
636656 let takerDuckOrder = split(getDuckOrder(gameId, "taker"), ",")
637657 let makerRarity1 = getRarity(gameId, "maker", makerDuckOrder[0])
638658 let makerRarity2 = getRarity(gameId, "maker", makerDuckOrder[1])
639659 let makerRarity3 = getRarity(gameId, "maker", makerDuckOrder[2])
640660 let takerRarity1 = getRarity(gameId, "taker", takerDuckOrder[0])
641661 let takerRarity2 = getRarity(gameId, "taker", takerDuckOrder[1])
642662 let takerRarity3 = getRarity(gameId, "taker", takerDuckOrder[2])
643663 let makerScore = ((getScore(makerRarity1, takerRarity1) + getScore(makerRarity2, takerRarity2)) + getScore(makerRarity3, takerRarity3))
644664 if ((makerScore > 0))
645665 then "maker"
646666 else if ((0 > makerScore))
647667 then "taker"
648668 else "draw"
649669 }
650670 }
651671
652672
653673 @Callable(i)
654674 func makeGame (slot,rarityRangeWorst,rarityRangeMedium,rarityRangeBest) = {
655675 let callerAddress = toBase58String(i.caller.bytes)
656676 let slotGameId = getSlot(slot)
657677 let payment = value(i.payments[0])
658- let eggs = (payment.amount - makerFee)
678+ let eggs = payment.amount
659679 let gameId = getNextGameId()
660680 if ((getPlayerCurrentGame(callerAddress) != 0))
661681 then throw("You already have an active game")
662682 else if (if ((0 > slot))
663683 then true
664684 else (slot >= SLOTS))
665685 then throw("Invalid slot")
666686 else if ((slotGameId != 0))
667687 then throw("This slot is busy")
668688 else if ((payment.assetId != eggsAssetId))
669689 then throw(("You can attach only EGGs with the following asset id: " + toBase58String(eggsAssetId)))
670690 else if ((0 >= eggs))
671691 then throw("Not enough EGGs")
672692 else if (if ((1 > rarityRangeWorst))
673693 then true
674694 else (rarityRangeWorst > 5))
675695 then throw("Invalid rarity range for the worst duck")
676696 else if (if ((1 > rarityRangeMedium))
677697 then true
678698 else (rarityRangeMedium > 5))
679699 then throw("Invalid rarity range for the medium duck")
680700 else if (if ((1 > rarityRangeBest))
681701 then true
682702 else (rarityRangeBest > 5))
683703 then throw("Invalid rarity range for the best duck")
684704 else if ((rarityRangeWorst >= rarityRangeMedium))
685705 then throw("The medium duck must be better than the worst one")
686706 else if ((rarityRangeMedium >= rarityRangeBest))
687707 then throw("The best duck must be better than the medium one")
688708 else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), gameId), StringEntry(getMakerKey(gameId), callerAddress), StringEntry(getPlayerRoleKey(gameId, callerAddress), "maker"), IntegerEntry(getBetEggsKey(gameId), eggs), IntegerEntry(getRarityRangeKey(gameId, "worst"), rarityRangeWorst), IntegerEntry(getRarityRangeKey(gameId, "medium"), rarityRangeMedium), IntegerEntry(getRarityRangeKey(gameId, "best"), rarityRangeBest), IntegerEntry(getWaitingExpirationHeightKey(gameId), (height + WAITING)), IntegerEntry(getSlotKey(slot), gameId), IntegerEntry("nextGameId", (gameId + 1))]
689709 }
690710
691711
692712
693713 @Callable(i)
694714 func takeGame (slot) = {
695715 let callerAddress = toBase58String(i.caller.bytes)
696716 let gameId = getSlot(slot)
697717 let payment = value(i.payments[0])
698718 if ((getPlayerCurrentGame(callerAddress) != 0))
699719 then throw("You already have an active game")
700720 else if (if ((0 > slot))
701721 then true
702722 else (slot >= SLOTS))
703723 then throw("Invalid slot")
704724 else if ((getSlot(slot) == 0))
705725 then throw("This slot is empty")
706726 else if ((payment.assetId != eggsAssetId))
707727 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
708- else if ((payment.amount != (getBetEggs(gameId) + takerFee)))
728+ else if ((payment.amount != getBetEggs(gameId)))
709729 then throw("Insufficient eggs amount")
710730 else if ((height >= getWaitingExpirationHeight(gameId)))
711731 then throw("This game is expired")
712- else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), gameId), StringEntry(getTakerKey(gameId), callerAddress), StringEntry(getPlayerRoleKey(gameId, callerAddress), "taker"), IntegerEntry(getStepKey(gameId), 0), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration)), IntegerEntry(getSlotKey(slot), 0)]
732+ else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), gameId), StringEntry(getTakerKey(gameId), callerAddress), StringEntry(getPlayerRoleKey(gameId, callerAddress), "taker"), IntegerEntry(getStepKey(gameId), 0), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration)), IntegerEntry(getSlotKey(slot), 0), IntegerEntry("gamesPlayed", (getGamesPlayed() + 1))]
713733 }
714734
715735
716736
717737 @Callable(i)
718738 func kickGame (slot) = {
719739 let gameId = getSlot(slot)
720740 if (if ((0 > slot))
721741 then true
722742 else (slot >= SLOTS))
723743 then throw("Invalid slot")
724744 else if ((gameId == 0))
725745 then throw("Slot is empty")
726746 else if ((getWaitingExpirationHeight(gameId) > height))
727747 then throw("Waiting is not finished yet")
728748 else {
729749 let maker = getMaker(gameId)
730-[IntegerEntry(getPlayerCurrentGameKey(maker), 0), IntegerEntry(getSlotKey(slot), 0), ScriptTransfer(Address(fromBase58String(maker)), (getBetEggs(gameId) + makerFee), eggsAssetId)]
750+[IntegerEntry(getPlayerCurrentGameKey(maker), 0), IntegerEntry(getSlotKey(slot), 0), ScriptTransfer(Address(fromBase58String(maker)), getBetEggs(gameId), eggsAssetId)]
731751 }
732752 }
733753
734754
735755
736756 @Callable(i)
737757 func pickDucks () = {
738758 let callerAddress = toBase58String(i.caller.bytes)
739759 let gameId = getPlayerCurrentGame(callerAddress)
740760 let playerRole = getPlayerRole(gameId, callerAddress)
741761 let gameStep = getStep(gameId)
742762 let worstRarityRange = getRarityRange(gameId, "worst")
743763 let mediumRarityRange = getRarityRange(gameId, "medium")
744764 let bestRarityRange = getRarityRange(gameId, "best")
745765 let worstDuckId = value(value(i.payments[0]).assetId)
746766 let mediumDuckId = value(value(i.payments[1]).assetId)
747767 let bestDuckId = value(value(i.payments[2]).assetId)
748768 let worstRarity = getAssetRarity(worstDuckId)
749769 let mediumRarity = getAssetRarity(mediumDuckId)
750770 let bestRarity = getAssetRarity(bestDuckId)
751771 if ((gameId == 0))
752772 then throw("You don't have an active game")
753773 else if ((getExpirationHeight(gameId) == 0))
754774 then throw("Game is not started")
755775 else if (if ((gameStep == 0))
756776 then (playerRole != "taker")
757777 else false)
758778 then throw("It is the taker's turn to pick now")
759779 else if (if ((gameStep == 1))
760780 then (playerRole != "maker")
761781 else false)
762782 then throw("It is the maker's turn to pick now")
763783 else if ((gameStep > 1))
764784 then throw("Ducks have already been picked")
765- else if (if ((worstRarity >= (worstRarityRange * 10)))
785+ else if (if ((worstRarity > (worstRarityRange * 10)))
766786 then true
767- else (((worstRarityRange - 1) * 10) > worstRarity))
787+ else (((worstRarityRange - 1) * 10) >= worstRarity))
768788 then throw("Worst duck doesn't fit rarity range")
769- else if (if ((mediumRarity >= (mediumRarityRange * 10)))
789+ else if (if ((mediumRarity > (mediumRarityRange * 10)))
770790 then true
771- else (((mediumRarityRange - 1) * 10) > mediumRarity))
791+ else (((mediumRarityRange - 1) * 10) >= mediumRarity))
772792 then throw("Medium duck doesn't fit rarity range")
773793 else if (if (if (if ((bestRarityRange == 5))
774- then (40 > bestRarity)
794+ then (40 >= bestRarity)
775795 else false)
776796 then true
777- else (bestRarity >= (bestRarityRange * 10)))
797+ else (bestRarity > (bestRarityRange * 10)))
778798 then true
779- else (((bestRarityRange - 1) * 10) > bestRarity))
799+ else (((bestRarityRange - 1) * 10) >= bestRarity))
780800 then throw("Best duck doesn't fit rarity range")
781801 else [IntegerEntry(getRarityKey(gameId, playerRole, "worst"), worstRarity), IntegerEntry(getRarityKey(gameId, playerRole, "medium"), mediumRarity), IntegerEntry(getRarityKey(gameId, playerRole, "best"), bestRarity), StringEntry(getDuckIdKey(gameId, playerRole, "worst"), toBase58String(worstDuckId)), StringEntry(getDuckIdKey(gameId, playerRole, "medium"), toBase58String(mediumDuckId)), StringEntry(getDuckIdKey(gameId, playerRole, "best"), toBase58String(bestDuckId)), IntegerEntry(getStepKey(gameId), (gameStep + 1)), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration)), ScriptTransfer(i.caller, 1, worstDuckId), ScriptTransfer(i.caller, 1, mediumDuckId), ScriptTransfer(i.caller, 1, bestDuckId)]
782802 }
783803
784804
785805
786806 @Callable(i)
787807 func commit (hash) = {
788808 let callerAddress = toBase58String(i.caller.bytes)
789809 let gameId = getPlayerCurrentGame(callerAddress)
790810 let playerRole = getPlayerRole(gameId, callerAddress)
791811 let gameStep = getStep(gameId)
792812 if ((gameId == 0))
793813 then throw("You don't have an active game")
794814 else if ((2 > gameStep))
795815 then throw("Commit is not started")
796816 else if (if ((gameStep == 2))
797817 then (playerRole != "taker")
798818 else false)
799819 then throw("It is the taker's turn to pick now")
800820 else if (if ((gameStep == 3))
801821 then (playerRole != "maker")
802822 else false)
803823 then throw("It is the maker's turn to pick now")
804824 else if ((gameStep > 3))
805825 then throw("Commit is finished")
806826 else [StringEntry(getCommitKey(gameId, playerRole), hash), IntegerEntry(getStepKey(gameId), (gameStep + 1)), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration))]
807827 }
808828
809829
810830
811831 @Callable(i)
812832 func reveal (duckOrder,salt) = {
813833 let callerAddress = toBase58String(i.caller.bytes)
814834 let gameId = getPlayerCurrentGame(callerAddress)
815835 let playerRole = getPlayerRole(gameId, callerAddress)
816836 let gameStep = getStep(gameId)
817837 if ((gameId == 0))
818838 then throw("You don't have an active game")
819839 else if ((4 > gameStep))
820840 then throw("Reveal is not started")
821841 else if (if ((gameStep == 4))
822842 then (playerRole != "taker")
823843 else false)
824844 then throw("It is the taker's turn to pick now")
825845 else if (if ((gameStep == 5))
826846 then (playerRole != "maker")
827847 else false)
828848 then throw("It is the maker's turn to pick now")
829849 else if ((gameStep > 5))
830850 then throw("Reveal is finished")
831851 else if (if (if (if (if (if ((duckOrder != "worst,medium,best"))
832852 then (duckOrder != "worst,best,medium")
833853 else false)
834854 then (duckOrder != "medium,worst,best")
835855 else false)
836856 then (duckOrder != "medium,best,worst")
837857 else false)
838858 then (duckOrder != "best,worst,medium")
839859 else false)
840860 then (duckOrder != "best,medium,worst")
841861 else false)
842862 then throw("Reveal data is not valid")
843863 else if ((toBase58String(sha256(toBytes((duckOrder + salt)))) != getCommit(gameId, playerRole)))
844864 then throw("Reveal doesn't match commit")
845865 else [StringEntry(getDuckOrderKey(gameId, playerRole), duckOrder), IntegerEntry(getStepKey(gameId), (gameStep + 1)), IntegerEntry(getExpirationHeightKey(gameId), (height + stepDuration))]
846866 }
847867
848868
849869
850870 @Callable(i)
851871 func getPrize () = {
852872 let callerAddress = toBase58String(i.caller.bytes)
853873 let gameId = getPlayerCurrentGame(callerAddress)
854874 let playerRole = getPlayerRole(gameId, callerAddress)
855875 let makerAddress = getMaker(gameId)
856876 let takerAddress = getTaker(gameId)
857877 let winner = getWinner(gameId)
858878 if ((gameId == 0))
859879 then throw("You don't have an active game")
860880 else if (getPrizeSent(gameId, playerRole))
861881 then throw("You have already got the prize")
862882 else if ((winner == playerRole))
863- then [IntegerEntry(getPlayerCurrentGameKey(makerAddress), 0), IntegerEntry(getPlayerCurrentGameKey(takerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), ScriptTransfer(i.caller, (getBetEggs(gameId) * 2), eggsAssetId)]
883+ then [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), IntegerEntry(getPlayerWinsKey(callerAddress), (getPlayerWins(callerAddress) + 1)), ScriptTransfer(i.caller, (getBetEggs(gameId) * 2), eggsAssetId)]
864884 else if ((winner == "draw"))
865- then [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), ScriptTransfer(i.caller, getBetEggs(gameId), eggsAssetId)]
866- else throw("You lose and don't have any prize")
885+ then [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), BooleanEntry(getPrizeSentKey(gameId, playerRole), true), IntegerEntry(getPlayerDrawsKey(callerAddress), (getPlayerDraws(callerAddress) + 1)), ScriptTransfer(i.caller, getBetEggs(gameId), eggsAssetId)]
886+ else [IntegerEntry(getPlayerCurrentGameKey(callerAddress), 0), IntegerEntry(getPlayerLosesKey(callerAddress), (getPlayerLoses(callerAddress) + 1)), BooleanEntry(getPrizeSentKey(gameId, playerRole), true)]
867887 }
868888
869889
870890 @Verifier(tx)
871891 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
872892

github/deemru/w8io/169f3d6 
360.95 ms