tx · 13x6zJHZgeSPRUKPxZHUgcUK1fBLrxgsZxsr3oc3FB3b

3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA:  -0.02400000 Waves

2024.03.16 22:17 [4086826] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves

{ "type": 13, "id": "13x6zJHZgeSPRUKPxZHUgcUK1fBLrxgsZxsr3oc3FB3b", "fee": 2400000, "feeAssetId": null, "timestamp": 1710616694471, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "3jGW4ZwuiL8cZ4sVdzK7hW1MaoSaF2G9on2zL5KW6cNqELMUHnKW3nF43NWvQzHzw2BFSznLasd4HFo1e1Wzc2Kp" ], "script": "base64:BgI3CAISAwoBCBIAEgQKAggIEgQKAggIEgASABIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCEUACnBlcmNoUHJpY2UJAGgCAGQAwIQ9AAVzY2FsZQCQTgAGc2NhbGUyAMCEPQEKaXNTaWNrRHVjawEGZHVja0lkCQCsAgIFBmR1Y2tJZAIFX3NpY2sBFHRyeUdldFN0cmluZ0V4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgABDHRyeUdldFN0cmluZwEDa2V5CQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQR0aGlzBQNrZXkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAIUc3RhdGljX29yYWNsZUFkZHJlc3MBFHN0YXRpY0tleV9lZ2dBc3NldElkAAIRc3RhdGljX2VnZ0Fzc2V0SWQBGnN0YXRpY0tleV9pbmN1YmF0b3JBZGRyZXNzAAIXc3RhdGljX2luY3ViYXRvckFkZHJlc3MBGHN0YXRpY0tleV9yZWJpcnRoQWRkcmVzcwACFXN0YXRpY19yZWJpcnRoQWRkcmVzcwEec3RhdGljS2V5X3R1cnRsZVJlYmlydGhBZGRyZXNzAAIbc3RhdGljX3R1cnRsZVJlYmlydGhBZGRyZXNzARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MBHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAhlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzARZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAITc3RhdGljX2l0ZW1zQWRkcmVzcwEZc3RhdGljS2V5X21ldGFSYWNlQWRkcmVzcwACFnN0YXRpY19tZXRhUmFjZUFkZHJlc3MBG3N0YXRpY0tleV9hY2NCb29zdGVyQWRkcmVzcwACGHN0YXRpY19hY2NCb29zdGVyQWRkcmVzcwEfc3RhdGljS2V5X3Byb3h5U3Rha2luZ0NvbnRyYWN0cwACHHN0YXRpY19wcm94eVN0YWtpbmdDb250cmFjdHMBFXN0YXRpY0tleV9tYWludGVuYW5jZQACEnN0YXRpY19tYWludGVuYW5jZQEZc3RhdGljS2V5X2NmTWFzdGVyQWRkcmVzcwACFnN0YXRpY19jZk1hc3RlckFkZHJlc3MBFXN0YXRpY0tleV9kdWNrV3JhcHBlcgACEnN0YXRpY19kdWNrV3JhcHBlcgEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAIVc3RhdGljX2NvdXBvbnNBZGRyZXNzARVzdGF0aWNLZXlfYnVybkFkZHJlc3MAAhJzdGF0aWNfYnVybkFkZHJlc3MBEnN0YXRpY0tleV9leHRyYUZlZQACD3N0YXRpY19leHRyYUZlZQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAhRzdGF0aWNfZmVlQWdncmVnYXRvcgEVc3RhdGljS2V5X2h1bnRBZGRyZXNzAAISc3RhdGljX2h1bnRBZGRyZXNzAQlnZXRPcmFjbGUACQEHQWRkcmVzcwEJANkEAQkBDHRyeUdldFN0cmluZwEJARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwABDWdldEVnZ0Fzc2V0SWQACQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAARNnZXRJbmN1YmF0b3JBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEac3RhdGljS2V5X2luY3ViYXRvckFkZHJlc3MAARFnZXRSZWJpcnRoQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9yZWJpcnRoQWRkcmVzcwABF2dldFR1cnRsZVJlYmlydGhBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEec3RhdGljS2V5X3R1cnRsZVJlYmlydGhBZGRyZXNzAAERZ2V0QnJlZWRlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAARVnZXRSZWZDb250cmFjdEFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAEPZ2V0SXRlbXNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwABEmdldE1ldGFyYWNlQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGXN0YXRpY0tleV9tZXRhUmFjZUFkZHJlc3MAARRnZXRBY2NCb29zdGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBG3N0YXRpY0tleV9hY2NCb29zdGVyQWRkcmVzcwABD2dldFByb3h5U3Rha2luZwAJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEfc3RhdGljS2V5X3Byb3h5U3Rha2luZ0NvbnRyYWN0cwABDmdldE1haW50ZW5hbmNlAAkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARVzdGF0aWNLZXlfbWFpbnRlbmFuY2UAARJnZXRDZk1hc3RlckFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARlzdGF0aWNLZXlfY2ZNYXN0ZXJBZGRyZXNzAAEQZ2V0RHVja1dyYXBwZXJTYwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFXN0YXRpY0tleV9kdWNrV3JhcHBlcgABEWdldENvdXBvbnNBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAEOZ2V0QnVybkFkZHJlc3MACQEHQWRkcmVzcwEJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQAJARVzdGF0aWNLZXlfYnVybkFkZHJlc3MAARBnZXRGZWVBZ2dyZWdhdG9yAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAQ5nZXRIdW50QWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFXN0YXRpY0tleV9odW50QWRkcmVzcwAADVJlZmVyZXJSZXdhcmQABQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEHcGF5bWVudAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIZRkNBUDogUGxlYXNlIGF0dGFjaCB3YXZlcwQJZmVlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCCQEJZ2V0T3JhY2xlAAkBEnN0YXRpY0tleV9leHRyYUZlZQADCQECIT0CCAUHcGF5bWVudAZhbW91bnQFCWZlZUFtb3VudAkAAgEJAKwCAgkArAICAhxGQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQCkAwEFCWZlZUFtb3VudAITIGFtb3VudCBvZiB3YXZlbGV0cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEQZ2V0RmVlQWdncmVnYXRvcgAFCWZlZUFtb3VudAUEdW5pdAUDbmlsARFnZXRSZXdhcmRQZXJCbG9jawAAAAEIaXNMb2NrZWQAAwkBAiE9AgkBDmdldE1haW50ZW5hbmNlAAIACQACAQkBDmdldE1haW50ZW5hbmNlAAAAAQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQ10cnlHZXRCb29sZWFuAQNrZXkEByRtYXRjaDAJAJsIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIHARV0cnlHZXRCb29sZWFuRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCbCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEOZ2V0QXNzZXRPcmlnaW4BCmdlbmVyYXRpb24DCQAAAgUKZ2VuZXJhdGlvbgIBRwkBE2dldEluY3ViYXRvckFkZHJlc3MACQERZ2V0QnJlZWRlckFkZHJlc3MAAQ5nZXRBc3NldFJhcml0eQIIZ2Vub3R5cGUKZ2VuZXJhdGlvbgQIcXVhbnRpdHkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQEOZ2V0QXNzZXRPcmlnaW4BBQpnZW5lcmF0aW9uCQCsAgIJAKwCAgIGc3RhdHNfBQhnZW5vdHlwZQIJX3F1YW50aXR5CQCsAgIJAKwCAgIGc3RhdHNfBQhnZW5vdHlwZQITX3F1YW50aXR5IG5vdCBmb3VuZAQFcG93ZXIJAGwGCQBpAgCQTgUIcXVhbnRpdHkABAAFAAEAAgUFRkxPT1IDCQBmAgUFcG93ZXIAAAUFcG93ZXIAAgEIYXNTdHJpbmcBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAUGc3RyaW5nCQACAQIhRkFTOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAh5GQUk6IHdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBCWFzQm9vbGVhbgEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EB2Jvb2xlYW4FByRtYXRjaDAFB2Jvb2xlYW4JAAIBAiJGQUI6IHdyb25nIHR5cGUsIGV4cGVjdGVkOiBCb29sZWFuARRnZXRBc3NldEZhcm1pbmdQb3dlcgIHYXNzZXRJZAdhZGRyZXNzAwMJAAACCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBmlzc3VlcgkBEWdldEJyZWVkZXJBZGRyZXNzAAYJAAACCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBmlzc3VlcgkBE2dldEluY3ViYXRvckFkZHJlc3MABAlmYXJtQm9vc3QJAQVhc0ludAEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACGmNhbGN1bGF0ZUZhcm1pbmdQb3dlckJvb3N0CQDMCAIJANgEAQUHYXNzZXRJZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAMJAAACBQlmYXJtQm9vc3QFCWZhcm1Cb29zdAQJYXNzZXROYW1lCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUECWlzSmFja3BvdAkAAAIJALICAgkBBXZhbHVlAQUJYXNzZXROYW1lAAECAVUEB2Zhcm1HZW4DBQlpc0phY2twb3QCAAkBCGFzU3RyaW5nAQkA/AcECQERZ2V0QnJlZWRlckFkZHJlc3MAAg5nZXRHZW5Gcm9tTmFtZQkAzAgCBQlhc3NldE5hbWUFA25pbAUDbmlsAwkAAAIFB2Zhcm1HZW4FB2Zhcm1HZW4EBnJhcml0eQMFCWlzSmFja3BvdABkBApnZW5lcmF0aW9uCQCvAgIJALICAgUJYXNzZXROYW1lAAIAAQkBDmdldEFzc2V0UmFyaXR5AgUHZmFybUdlbgUKZ2VuZXJhdGlvbgQRdG90YWxGYXJtaW5nUG93ZXIJAGQCBQZyYXJpdHkJAGsDBQZyYXJpdHkFCWZhcm1Cb29zdABkCQCUCgIFB2Zhcm1HZW4FEXRvdGFsRmFybWluZ1Bvd2VyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQINbm90IHZhbGlkIE5GVAEdZ2V0TGFzdEtub3duQXNzZXRGYXJtaW5nUG93ZXICB2FkZHJlc3MHYXNzZXRJZAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQdhc3NldElkAg1fZmFybWluZ1Bvd2VyAQxjYWxjSW50ZXJlc3QDEHByZXZpb3VzSW50ZXJlc3QWcHJldmlvdXNJbnRlcmVzdEhlaWdodBF0b3RhbEZhcm1pbmdQb3dlcgkAZAIFEHByZXZpb3VzSW50ZXJlc3QJAGkCCQBoAgkAaAIFBXNjYWxlCQERZ2V0UmV3YXJkUGVyQmxvY2sACQBlAgUGaGVpZ2h0BRZwcmV2aW91c0ludGVyZXN0SGVpZ2h0BRF0b3RhbEZhcm1pbmdQb3dlcgESZ2V0Q3VycmVudEludGVyZXN0AAMJAGYCCQENdHJ5R2V0SW50ZWdlcgECEnRvdGFsX2Zhcm1pbmdQb3dlcgAABBBwcmV2aW91c0ludGVyZXN0CQENdHJ5R2V0SW50ZWdlcgECF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0BBZwcmV2aW91c0ludGVyZXN0SGVpZ2h0CQENdHJ5R2V0SW50ZWdlcgECHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BBF0b3RhbEZhcm1pbmdQb3dlcgkBDXRyeUdldEludGVnZXIBAhJ0b3RhbF9mYXJtaW5nUG93ZXIJAQxjYWxjSW50ZXJlc3QDBRBwcmV2aW91c0ludGVyZXN0BRZwcmV2aW91c0ludGVyZXN0SGVpZ2h0BRF0b3RhbEZhcm1pbmdQb3dlcgMJAQIhPQIJAQ10cnlHZXRJbnRlZ2VyAQIRdG90YWxfc3RhcnRIZWlnaHQAAAkBDXRyeUdldEludGVnZXIBAhd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkAAgECHGZhcm1pbmcgaXMgbm90IGxhdW5jaGVkLCB5ZXQBFGNhbGNBc3NldFJld2FyZERlbHRhAwdhZGRyZXNzB2Fzc2V0SWQRYXNzZXRGYXJtaW5nUG93ZXIEFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUHYXNzZXRJZAISX2xhc3RDaGVja0ludGVyZXN0BA9jdXJyZW50SW50ZXJlc3QJARJnZXRDdXJyZW50SW50ZXJlc3QACQBoAgURYXNzZXRGYXJtaW5nUG93ZXIJAGUCBQ9jdXJyZW50SW50ZXJlc3QFFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QBFGFkZEFzc2V0SWRUb0dlbkVudHJ5Agdhc3NldElkCGFzc2V0R2VuBAxjdXJyZW50VmFsdWUJAQx0cnlHZXRTdHJpbmcBCQCsAgIJAKwCAgIHYXNzZXRzXwUIYXNzZXRHZW4CB19sb2NrZWQDCQAAAgUMY3VycmVudFZhbHVlAgAFB2Fzc2V0SWQJAKwCAgkArAICBQxjdXJyZW50VmFsdWUCASwFB2Fzc2V0SWQBDmdldFN0YWtlUmVzdWx0BAdhZGRyZXNzB2Fzc2V0SWQRYXNzZXRGYXJtaW5nUG93ZXIIdW5zdGFrZXIEBWFzc2V0CQDYBAEFB2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQICEnRvdGFsX2Zhcm1pbmdQb3dlcgkAZAIJAQ10cnlHZXRJbnRlZ2VyAQISdG90YWxfZmFybWluZ1Bvd2VyBRFhc3NldEZhcm1pbmdQb3dlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgIXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJARJnZXRDdXJyZW50SW50ZXJlc3QACQDMCAIJAQxJbnRlZ2VyRW50cnkCAh10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgZhc3NldF8FBWFzc2V0AgZfb3duZXIFB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCB19hc3NldF8FBWFzc2V0Ag1fZmFybWluZ1Bvd2VyBRFhc3NldEZhcm1pbmdQb3dlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCEl9sYXN0Q2hlY2tJbnRlcmVzdAkBEmdldEN1cnJlbnRJbnRlcmVzdAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCCV91bnN0YWtlcgUIdW5zdGFrZXIFA25pbAEQZ2V0VW5zdGFrZVJlc3VsdAYHYWRkcmVzcwdhc3NldElkBWNvbG9yBmNhbGxlcgpyZWFsQ2FsbGVyCWNsYWltRWdncwQGbG9ja2VkCQEIaXNMb2NrZWQAAwkAAAIFBmxvY2tlZAUGbG9ja2VkBAVhc3NldAkA2AQBBQdhc3NldElkBAh1bnN0YWtlcgkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCB19hc3NldF8FBWFzc2V0AglfdW5zdGFrZXIDAwkBAiE9AgUIdW5zdGFrZXICAAkBAiE9AgUIdW5zdGFrZXIFCnJlYWxDYWxsZXIHCQACAQJXRlVOOiBJdCBzZWVtcyBkdWNrIHdhcyBzdGFrZWQgdGhyb3VoIGEgZGFwcCwgbm90IGRpcmVjdGx5LCBwbGVhc2UgdW5zdGFrZSB0aHJvdWdoIGRhcHAhBBFhc3NldEZhcm1pbmdQb3dlcgkBHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAgUHYWRkcmVzcwUFYXNzZXQDCQEBIQEJAGYCBRFhc3NldEZhcm1pbmdQb3dlcgAACQACAQIqRkdVOiBBc3NldCBmYXJtaW5nIHBvd2VyIG5vdCBiaWdnZXIgdGhlbiAwBBBhc3NldFJld2FyZERlbHRhCQEUY2FsY0Fzc2V0UmV3YXJkRGVsdGEDBQdhZGRyZXNzBQVhc3NldAURYXNzZXRGYXJtaW5nUG93ZXIEDGZhcm1lZEFtb3VudAkAZAIFEGFzc2V0UmV3YXJkRGVsdGEJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQED3dpdGhkcmF3bkFtb3VudAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAIQX3dpdGhkcmF3bkFtb3VudAQGcmV3YXJkCQBpAgkAZQIFDGZhcm1lZEFtb3VudAUPd2l0aGRyYXduQW1vdW50CQBoAgUFc2NhbGUAZAQOaXNXaXRob3V0UGVyY2gJAQ10cnlHZXRCb29sZWFuAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCDl93aXRob3V0X3BlcmNoBBNyZXdhcmRBZnRlclNpY2tOZXNzBQZyZXdhcmQEDWFwcGVuZFBlcmNoZXMDBQ5pc1dpdGhvdXRQZXJjaAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAIOX3dpdGhvdXRfcGVyY2gFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCEl9wZXJjaGVzQXZhaWxhYmxlXwUFY29sb3IJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAhJfcGVyY2hlc0F2YWlsYWJsZV8FBWNvbG9yAAEFA25pbAQGc2VuZFR4AwUJY2xhaW1FZ2dzCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBoAgUTcmV3YXJkQWZ0ZXJTaWNrTmVzcwDAhD0JAQ1nZXRFZ2dBc3NldElkAAUDbmlsCQBoAgUTcmV3YXJkQWZ0ZXJTaWNrTmVzcwDAhD0JAJQKAgUDbmlsAAAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgISdG90YWxfZmFybWluZ1Bvd2VyCQBlAgkBDXRyeUdldEludGVnZXIBAhJ0b3RhbF9mYXJtaW5nUG93ZXIFEWFzc2V0RmFybWluZ1Bvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBEmdldEN1cnJlbnRJbnRlcmVzdAAJAMwIAgkBDEludGVnZXJFbnRyeQICHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBmFzc2V0XwUFYXNzZXQCBl9vd25lcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAIJX3Vuc3Rha2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAINX2Zhcm1pbmdQb3dlcgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAISX2xhc3RDaGVja0ludGVyZXN0CQESZ2V0Q3VycmVudEludGVyZXN0AAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCEF93aXRoZHJhd25BbW91bnQJAGQCBQ93aXRoZHJhd25BbW91bnQJAGgCBRNyZXdhcmRBZnRlclNpY2tOZXNzBQZzY2FsZTIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCB19hc3NldF8FBWFzc2V0AhZfbGFzdENoZWNrRmFybWVkQW1vdW50CQBkAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAIWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAUQYXNzZXRSZXdhcmREZWx0YQUDbmlsBQ1hcHBlbmRQZXJjaGVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwIBQZzZW5kVHgCXzEIBQZzZW5kVHgCXzIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BE2NhbGN1bGF0ZVBlcmNoUHJpY2UBB2FkZHJlc3MEEWhhc0FydGVmYWN0U3Rha2VkCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEUZ2V0QWNjQm9vc3RlckFkZHJlc3MACQCsAgIJAKwCAgILQVJULVhNSVNUTF8FB2FkZHJlc3MCBl9vd25lcgMJAAACBRFoYXNBcnRlZmFjdFN0YWtlZAIABQpwZXJjaFByaWNlCQBoAgkAaQIFCnBlcmNoUHJpY2UACgAJARBpc1Byb3h5U3Rha2luZ1NjAQdhZGRyZXNzBBBhbGxvd2VkQ29udHJhY3RzCQEPZ2V0UHJveHlTdGFraW5nAAQUYWxsb3dlZENvbnRyYWN0c0xpc3QJALUJAgUQYWxsb3dlZENvbnRyYWN0cwIBOwkBAiE9AgkAzwgCBRRhbGxvd2VkQ29udHJhY3RzTGlzdAUHYWRkcmVzcwUEdW5pdAESdW5zdGFrZU5GVEludGVybmFsAwVhc3NldAFpCGNsYWltRWdnBAdhc3NldElkCQDZBAEFBWFzc2V0BApyZWFsQ2FsbGVyCQClCAEIBQFpBmNhbGxlcgQHYWRkcmVzcwMJARBpc1Byb3h5U3Rha2luZ1NjAQkApQgBCAUBaQZjYWxsZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBQpyZWFsQ2FsbGVyBAVjb2xvcgkAsgICCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUAAQMJAAACBQVjb2xvcgIBVQkAAgECMEZVTjogdXNlIGFub3RoZXIgZnVuY3Rpb24gdG8gdW5zdGFrZSBKYWNrcG90IE5GVAQGcmVzdWx0CQEQZ2V0VW5zdGFrZVJlc3VsdAYFB2FkZHJlc3MFB2Fzc2V0SWQFBWNvbG9yCAUBaQZjYWxsZXIFCnJlYWxDYWxsZXIFCGNsYWltRWdnBQZyZXN1bHQBFnVuc3Rha2VKYWNrcG90SW50ZXJuYWwDBWFzc2V0AWkIY2xhaW1FZ2cEB2Fzc2V0SWQJANkEAQUFYXNzZXQECnJlYWxDYWxsZXIJAKUIAQgFAWkGY2FsbGVyBAdhZGRyZXNzAwkBEGlzUHJveHlTdGFraW5nU2MBCQClCAEIBQFpBmNhbGxlcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFCnJlYWxDYWxsZXIEBWNvbG9yCQEMdHJ5R2V0U3RyaW5nAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCC19wZXJjaENvbG9yAwkBAiE9AgkAsgICCQEFdmFsdWUBCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUAAQIBVQkAAgECDGphY2twb3Qgb25seQQGcmVzdWx0CQEQZ2V0VW5zdGFrZVJlc3VsdAYFB2FkZHJlc3MFB2Fzc2V0SWQFBWNvbG9yCAUBaQZjYWxsZXIFCnJlYWxDYWxsZXIFCGNsYWltRWdnBQZyZXN1bHQBB2dldEJvb2wBA2tleQQHJG1hdGNoMAkAmwgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcBCWlzVGVzdEVudgAJAQdnZXRCb29sAQIHVEVTVEVOVgwBaQEPY29uZmlndXJlT3JhY2xlAQZvcmFjbGUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg9GQ086IGFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAUGb3JhY2xlBQNuaWwBaQEEaW5pdAADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg5GSTogYWRtaW4gb25seQkAzAgCCQEMSW50ZWdlckVudHJ5AgIRdG90YWxfc3RhcnRIZWlnaHQFBmhlaWdodAUDbmlsAWkBCGJ1eVBlcmNoAgZjb2xvckkOcmVmZXJlckFkZHJlc3MEBmxvY2tlZAkBCGlzTG9ja2VkAAMJAAACBQZsb2NrZWQFBmxvY2tlZAQMdmFsaWRQYXltZW50AwMJAAACCAUBaQZjYWxsZXIJAQ5nZXRIdW50QWRkcmVzcwAGCQAAAggFAWkGY2FsbGVyCQESZ2V0TWV0YXJhY2VBZGRyZXNzAAUDbmlsCQEWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAEJAJEDAggFAWkIcGF5bWVudHMAAAMJAAACBQx2YWxpZFBheW1lbnQFDHZhbGlkUGF5bWVudAQFY29sb3IDCQAAAgUGY29sb3JJAgFVAgFCBQZjb2xvckkDCQBmAgAACQEFdmFsdWUBCQDPCAIJAMwIAgIBQgkAzAgCAgFSCQDMCAICAUcJAMwIAgIBWQUDbmlsBQVjb2xvcgkAAgECHnlvdSBuZWVkIHRvIHNldCBjb2xvciBwcm9wZXJseQQKZXhhY3RQcmljZQkBE2NhbGN1bGF0ZVBlcmNoUHJpY2UBCQClCAEIBQFpBmNhbGxlcgQJbGVmdFRvUGF5AwkAAAIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBBNhbW91bnRQYWlkQnlDb3Vwb25zCQEFYXNJbnQBCQD8BwQJARFnZXRDb3Vwb25zQWRkcmVzcwACCnVzZUNvdXBvbnMJAMwIAgUKZXhhY3RQcmljZQUDbmlsBQNuaWwDCQAAAgUTYW1vdW50UGFpZEJ5Q291cG9ucwUTYW1vdW50UGFpZEJ5Q291cG9ucwkAZQIFCmV4YWN0UHJpY2UFE2Ftb3VudFBhaWRCeUNvdXBvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FCmV4YWN0UHJpY2UEB3BheW1lbnQDCQECIT0CBQlsZWZ0VG9QYXkAAAQMZmlyc3RQYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUMZmlyc3RQYXltZW50B2Fzc2V0SWQJAQ1nZXRFZ2dBc3NldElkAAkAAgEJAKwCAgJBRkJQOiBZb3UgY2FuIGF0dGFjaCBvbmx5IEVHRyB0b2tlbnMgd2l0aCB0aGUgZm9sbG93aW5nIGFzc2V0IGlkOiAJANgEAQkBDWdldEVnZ0Fzc2V0SWQAAwkBAiE9AggFDGZpcnN0UGF5bWVudAZhbW91bnQFCWxlZnRUb1BheQkAAgEJAKwCAgkArAICCQCsAgICSEZCUDogVG8gYnV5IGEgcGVyY2ggeW91IGN1cnJlbnRseSBuZWVkIHRoZSBmb2xsb3dpbmcgYW1vdW50IG9mIEVHR2xldHM6IAkApAMBBQlsZWZ0VG9QYXkCASAJAKUIAQgFAWkGY2FsbGVyBBVyZWZlcmVyUmV3YXJkRm9yUGVyY2gJAGsDBQlsZWZ0VG9QYXkFDVJlZmVyZXJSZXdhcmQAZAQHcmVmQ2FsbAkBCWFzQm9vbGVhbgEJAPwHBAkBFWdldFJlZkNvbnRyYWN0QWRkcmVzcwACCnJlZlBheW1lbnQJAMwIAgUOcmVmZXJlckFkZHJlc3MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABRVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFA25pbAMJAAACBQdyZWZDYWxsBQdyZWZDYWxsBAZ0b0J1cm4DBQdyZWZDYWxsCQBlAgUJbGVmdFRvUGF5BRVyZWZlcmVyUmV3YXJkRm9yUGVyY2gFCWxlZnRUb1BheQQIYnVybkNhbGwJAPwHBAkBDmdldEJ1cm5BZGRyZXNzAAIUYnVybkF0dGFjaGVkUGF5bWVudHMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEVnZ0Fzc2V0SWQABQZ0b0J1cm4FA25pbAMJAAACBQhidXJuQ2FsbAUIYnVybkNhbGwFCWxlZnRUb1BheQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAwkAAAIFB3BheW1lbnQFB3BheW1lbnQEDnBlcmNoQW1vdW50S2V5CQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwkApQgBCAUBaQZjYWxsZXICEl9wZXJjaGVzQXZhaWxhYmxlXwUFY29sb3IEC3BlcmNoQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEFDnBlcmNoQW1vdW50S2V5CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDnBlcmNoQW1vdW50S2V5CQBkAgULcGVyY2hBbW91bnQAAQUDbmlsBQx2YWxpZFBheW1lbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMYWRkRnJlZVBlcmNoAgdhZGRyZXNzBWNvbG9yBAZsb2NrZWQJAQhpc0xvY2tlZAADCQAAAgUGbG9ja2VkBQZsb2NrZWQDCQBmAgAACQEFdmFsdWUBCQDPCAIJAMwIAgIBQgkAzAgCAgFSCQDMCAICAUcJAMwIAgIBWQUDbmlsBQVjb2xvcgkAAgECHnlvdSBuZWVkIHRvIHNldCBjb2xvciBwcm9wZXJseQMDAwkBAiE9AggFAWkGY2FsbGVyCQERZ2V0UmViaXJ0aEFkZHJlc3MACQECIT0CCAUBaQZjYWxsZXIJARdnZXRUdXJ0bGVSZWJpcnRoQWRkcmVzcwAHCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMHCQACAQIbcmViaXJ0aCBhbmQgc3dvcCBwcm9tbyBvbmx5BA5wZXJjaEFtb3VudEtleQkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCEl9wZXJjaGVzQXZhaWxhYmxlXwUFY29sb3IEC3BlcmNoQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEFDnBlcmNoQW1vdW50S2V5CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFDnBlcmNoQW1vdW50S2V5CQBkAgULcGVyY2hBbW91bnQAAQUDbmlsAgAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIc3Rha2VORlQABAZsb2NrZWQJAQhpc0xvY2tlZAADCQAAAgUGbG9ja2VkBQZsb2NrZWQEDHZhbGlkUGF5bWVudAMDCQAAAggFAWkGY2FsbGVyCQEOZ2V0SHVudEFkZHJlc3MABgkAAAIIBQFpBmNhbGxlcgkBEmdldE1ldGFyYWNlQWRkcmVzcwAFA25pbAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAEDCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECnJlYWxDYWxsZXIJAKUIAQgFAWkGY2FsbGVyBAdhZGRyZXNzAwkBEGlzUHJveHlTdGFraW5nU2MBCQClCAEIBQFpBmNhbGxlcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFCnJlYWxDYWxsZXIEBWNvbG9yCQCyAgIICQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEbmFtZQABBBBhdmFpbGFibGVQZXJjaGVzCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAhJfcGVyY2hlc0F2YWlsYWJsZV8FBWNvbG9yAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgECE05GVCBpcyBub3QgYXR0YWNoZWQDCQBnAgAABRBhdmFpbGFibGVQZXJjaGVzCQACAQkArAICAiNubyBwZXJjaGVzIGF2YWlsYWJsZSBmb3IgdGhlIGNvbG9yIAUFY29sb3IEDSR0MDE2NjA0MTY2NzcJARRnZXRBc3NldEZhcm1pbmdQb3dlcgIFB2Fzc2V0SWQFB2FkZHJlc3MECGFzc2V0R2VuCAUNJHQwMTY2MDQxNjY3NwJfMQQRYXNzZXRGYXJtaW5nUG93ZXIIBQ0kdDAxNjYwNDE2Njc3Al8yCQDOCAIJAM4IAgkBDmdldFN0YWtlUmVzdWx0BAUHYWRkcmVzcwUHYXNzZXRJZAURYXNzZXRGYXJtaW5nUG93ZXIFCnJlYWxDYWxsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAhJfcGVyY2hlc0F2YWlsYWJsZV8FBWNvbG9yCQBlAgUQYXZhaWxhYmxlUGVyY2hlcwABBQNuaWwFDHZhbGlkUGF5bWVudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARRzdGFrZU5GVFdpdGhvdXRQZXJjaAAEBmxvY2tlZAkBCGlzTG9ja2VkAAMJAAACBQZsb2NrZWQFBmxvY2tlZAQKZGFwcFRvQ2FsbAkApQgBCAUBaQZjYWxsZXIDCQEBIQEJARBpc1Byb3h5U3Rha2luZ1NjAQUKZGFwcFRvQ2FsbAkAAgECPkZTTldQOiBPbmx5IHRydXN0ZWQgc21hcnQgY29udHJhY3RzIGNhbiBzdGFrZSB3aXRob3V0IGEgcGVyY2ghBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAdhZGRyZXNzCQClCAEIBQFpDG9yaWdpbkNhbGxlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBAhNORlQgaXMgbm90IGF0dGFjaGVkBA0kdDAxNzMxNTE3Mzg4CQEUZ2V0QXNzZXRGYXJtaW5nUG93ZXICBQdhc3NldElkBQdhZGRyZXNzBAhhc3NldEdlbggFDSR0MDE3MzE1MTczODgCXzEEEWFzc2V0RmFybWluZ1Bvd2VyCAUNJHQwMTczMTUxNzM4OAJfMgQFYXNzZXQJANgEAQUHYXNzZXRJZAQKcmVhbENhbGxlcgkApQgBCAUBaQZjYWxsZXIJAM4IAgkBDmdldFN0YWtlUmVzdWx0BAUHYWRkcmVzcwUHYXNzZXRJZAURYXNzZXRGYXJtaW5nUG93ZXIFCnJlYWxDYWxsZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCB19hc3NldF8FBWFzc2V0Ag5fd2l0aG91dF9wZXJjaAYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQp1bnN0YWtlTkZUAQVhc3NldAQMdmFsaWRQYXltZW50AwkAAAIIBQFpBmNhbGxlcgkBEmdldE1ldGFyYWNlQWRkcmVzcwAFA25pbAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAADCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQEBnJlc3VsdAkBEnVuc3Rha2VORlRJbnRlcm5hbAMFBWFzc2V0BQFpBgkAlAoCCQDOCAIIBQZyZXN1bHQCXzEFDHZhbGlkUGF5bWVudAgFBnJlc3VsdAJfMgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZ1bnN0YWtlTkZUV2l0aG91dENsYWltAQVhc3NldAkBEnVuc3Rha2VORlRJbnRlcm5hbAMFBWFzc2V0BQFpBwFpAQxzdGFrZUphY2twb3QBBWNvbG9yBAZsb2NrZWQJAQhpc0xvY2tlZAADCQAAAgUGbG9ja2VkBQZsb2NrZWQEDHZhbGlkUGF5bWVudAMDCQAAAggFAWkGY2FsbGVyCQEOZ2V0SHVudEFkZHJlc3MABgkAAAIIBQFpBmNhbGxlcgkBEmdldE1ldGFyYWNlQWRkcmVzcwAFA25pbAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAEDCQAAAgUMdmFsaWRQYXltZW50BQx2YWxpZFBheW1lbnQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQECnJlYWxDYWxsZXIJAKUIAQgFAWkGY2FsbGVyBAdhZGRyZXNzAwkBEGlzUHJveHlTdGFraW5nU2MBCQClCAEIBQFpBmNhbGxlcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIFCnJlYWxDYWxsZXIEEGF2YWlsYWJsZVBlcmNoZXMJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCEl9wZXJjaGVzQXZhaWxhYmxlXwUFY29sb3IEC2Fzc2V0SXNzdWVyCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBmlzc3VlcgMJAQIhPQIIBQNwbXQGYW1vdW50AAEJAAIBAhNORlQgaXMgbm90IGF0dGFjaGVkAwMJAAACBQthc3NldElzc3VlcgkBE2dldEluY3ViYXRvckFkZHJlc3MABgkAAAIFC2Fzc2V0SXNzdWVyCQERZ2V0QnJlZWRlckFkZHJlc3MAAwkBAiE9AgkAsgICCQEFdmFsdWUBCAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBG5hbWUAAQIBVQkAAgECDGphY2twb3Qgb25seQMJAGcCAAAFEGF2YWlsYWJsZVBlcmNoZXMJAAIBCQCsAgICKEZTSjogbm8gcGVyY2hlcyBhdmFpbGFibGUgZm9yIHRoZSBjb2xvciAFBWNvbG9yBAxmYXJtaW5nUG93ZXIJARRnZXRBc3NldEZhcm1pbmdQb3dlcgIFB2Fzc2V0SWQFB2FkZHJlc3MJAM4IAgkAzggCCQEOZ2V0U3Rha2VSZXN1bHQEBQdhZGRyZXNzBQdhc3NldElkCAUMZmFybWluZ1Bvd2VyAl8yBQpyZWFsQ2FsbGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwISX3BlcmNoZXNBdmFpbGFibGVfBQVjb2xvcgkAZQIFEGF2YWlsYWJsZVBlcmNoZXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfCQDYBAEFB2Fzc2V0SWQCC19wZXJjaENvbG9yBQVjb2xvcgUDbmlsBQx2YWxpZFBheW1lbnQJAAIBAhJhc3NldCBpcyBub3QgdmFsaWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOdW5zdGFrZUphY2twb3QBBWFzc2V0BAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwAAAwkAAAIFDHZhbGlkUGF5bWVudAUMdmFsaWRQYXltZW50BAZyZXN1bHQJARZ1bnN0YWtlSmFja3BvdEludGVybmFsAwUFYXNzZXQFAWkGCQCUCgIJAM4IAggFBnJlc3VsdAJfMQUMdmFsaWRQYXltZW50CAUGcmVzdWx0Al8yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBHXVuc3Rha2VKYWNrcG90V2l0aG91dENsYWltRWdnAQVhc3NldAkBFnVuc3Rha2VKYWNrcG90SW50ZXJuYWwDBQVhc3NldAUBaQcBaQELY2xhaW1SZXdhcmQBBWFzc2V0BAZsb2NrZWQJAQhpc0xvY2tlZAADCQAAAgUGbG9ja2VkBQZsb2NrZWQEDHZhbGlkUGF5bWVudAMJAAACCAUBaQxvcmlnaW5DYWxsZXIJARJnZXRDZk1hc3RlckFkZHJlc3MABQNuaWwJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwAAAwkAAAIFDHZhbGlkUGF5bWVudAUMdmFsaWRQYXltZW50BAdhZGRyZXNzAwkAAAIIBQFpDG9yaWdpbkNhbGxlcgkBEmdldENmTWFzdGVyQWRkcmVzcwAJAKUIAQgFAWkGY2FsbGVyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYXNzZXRJZAkA2QQBBQVhc3NldAQRYXNzZXRGYXJtaW5nUG93ZXIJAR1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgIFB2FkZHJlc3MFBWFzc2V0BBBhc3NldFJld2FyZERlbHRhCQEUY2FsY0Fzc2V0UmV3YXJkRGVsdGEDBQdhZGRyZXNzBQVhc3NldAURYXNzZXRGYXJtaW5nUG93ZXIEDGZhcm1lZEFtb3VudAkAZAIFEGFzc2V0UmV3YXJkRGVsdGEJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUHYWRkcmVzcwIHX2Fzc2V0XwUFYXNzZXQCFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQED3dpdGhkcmF3bkFtb3VudAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAIQX3dpdGhkcmF3bkFtb3VudAQGcmV3YXJkCQBpAgkAZQIFDGZhcm1lZEFtb3VudAUPd2l0aGRyYXduQW1vdW50CQBoAgUFc2NhbGUAZAMJAGcCAAAFBnJld2FyZAkAAgECIUZDUjogeW91IGhhdmUgbm8gRUdHcyB0byB3aXRoZHJhdwkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCB19hc3NldF8FBWFzc2V0AhBfd2l0aGRyYXduQW1vdW50CQBkAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQVhc3NldAIQX3dpdGhkcmF3bkFtb3VudAkAaAIFBnJld2FyZAUGc2NhbGUyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQdhZGRyZXNzCQBoAgUGcmV3YXJkAMCEPQkBDWdldEVnZ0Fzc2V0SWQABQNuaWwFDHZhbGlkUGF5bWVudAkAaAIFBnJld2FyZADAhD0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkAAwkBCWlzVGVzdEVudgAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECWZpcnN0VXNlcgEgURzk/Wb/EmnS8VoUnzuy4vQ7f8HLaCeiNF5sONdX3W0ECnNlY29uZFVzZXIBIMFs347t041zj4ui+fqJD/R1zUQbVHJSo7Sc0lakLeB1BAl0aGlyZFVzZXIBIOdb9I6q0vlJnm6EJrj5fh/cZ6h93Cu41Op7zfJoCsElBA9maXJzdFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCWZpcnN0VXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJZmlyc3RVc2VyAAEAAAQQc2Vjb25kVXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCnNlY29uZFVzZXIAAQAABA90aGlyZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCXRoaXJkVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJdGhpcmRVc2VyAAEAAAQPc2lnbmF0dXJlc0NvdW50CQBkAgkAZAIFD2ZpcnN0VXNlclNpZ25lZAUQc2Vjb25kVXNlclNpZ25lZAUPdGhpcmRVc2VyU2lnbmVkBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAg9EYXRhVHJhbnNhY3Rpb24EA2R0eAUHJG1hdGNoMAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQkAZwIFD3NpZ25hdHVyZXNDb3VudAACSCErKg==", "height": 4086826, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5eST5vCxiUD2Qd1V7xpAbyo3TZ8mLKzYAoVjekzvCs2W Next: BTEUMWfctZ81YiwuiYhSQ2ibVNUWiSzWDFEUkg8myUJM Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = (100 * 1000000)
147147 }
148148
149149
150-func aa () = 274
150+func aa () = 0
151151
152152
153153 func ab () = if ((P() != ""))
268268 func aB (g,au) = ac((((("address_" + g) + "_asset_") + au) + "_farmingPower"))
269269
270270
271-func aC (aD) = {
272- let aE = k(("assets_" + aD))
273- if ((aE == ""))
274- then nil
275- else split(aE, ",")
276- }
271+func aC (aD,aE,aA) = (aD + (((b * aa()) * (height - aE)) / aA))
277272
278273
279-func aF (aG,aH,aA) = (aG + (((b * aa()) * (height - aH)) / aA))
280-
281-
282-func aI () = if ((ac("total_farmingPower") > 0))
274+func aF () = if ((ac("total_farmingPower") > 0))
283275 then {
284- let aG = ac("total_lastCheckInterest")
285- let aH = ac("total_lastCheckInterestHeight")
276+ let aD = ac("total_lastCheckInterest")
277+ let aE = ac("total_lastCheckInterestHeight")
286278 let aA = ac("total_farmingPower")
287- aF(aG, aH, aA)
279+ aC(aD, aE, aA)
288280 }
289281 else if ((ac("total_startHeight") != 0))
290282 then ac("total_lastCheckInterest")
291283 else throw("farming is not launched, yet")
292284
293285
294-func aJ (g,au,aK) = {
295- let aL = ac((((("address_" + g) + "_asset_") + au) + "_lastCheckInterest"))
296- let aM = aI()
297- (aK * (aM - aL))
286+func aG (g,au,aH) = {
287+ let aI = ac((((("address_" + g) + "_asset_") + au) + "_lastCheckInterest"))
288+ let aJ = aF()
289+ (aH * (aJ - aI))
298290 }
299291
300292
301-func aN (au,aO) = {
302- let aP = k((("assets_" + aO) + "_locked"))
303- if ((aP == ""))
293+func aK (au,aL) = {
294+ let aM = k((("assets_" + aL) + "_locked"))
295+ if ((aM == ""))
304296 then au
305- else ((aP + ",") + au)
297+ else ((aM + ",") + au)
306298 }
307299
308300
309-func aQ (g,au,aK,aR) = {
310- let aS = toBase58String(au)
311-[IntegerEntry("total_farmingPower", (ac("total_farmingPower") + aK)), IntegerEntry("total_lastCheckInterest", aI()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + aS) + "_owner"), g), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_farmingPower"), aK), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_lastCheckInterest"), aI()), StringEntry((((("address_" + g) + "_asset_") + aS) + "_unstaker"), aR)]
301+func aN (g,au,aH,aO) = {
302+ let aP = toBase58String(au)
303+[IntegerEntry("total_farmingPower", (ac("total_farmingPower") + aH)), IntegerEntry("total_lastCheckInterest", aF()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + aP) + "_owner"), g), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_farmingPower"), aH), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_lastCheckInterest"), aF()), StringEntry((((("address_" + g) + "_asset_") + aP) + "_unstaker"), aO)]
312304 }
313305
314306
315-func aT (g,au,aU,aV,aW,aX) = {
316- let aY = ab()
317- if ((aY == aY))
307+func aQ (g,au,aR,aS,aT,aU) = {
308+ let aV = ab()
309+ if ((aV == aV))
318310 then {
319- let aS = toBase58String(au)
320- let aR = k((((("address_" + g) + "_asset_") + aS) + "_unstaker"))
321- if (if ((aR != ""))
322- then (aR != aW)
311+ let aP = toBase58String(au)
312+ let aO = k((((("address_" + g) + "_asset_") + aP) + "_unstaker"))
313+ if (if ((aO != ""))
314+ then (aO != aT)
323315 else false)
324316 then throw("FUN: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
325317 else {
326- let aK = aB(g, aS)
327- if (!((aK > 0)))
318+ let aH = aB(g, aP)
319+ if (!((aH > 0)))
328320 then throw("FGU: Asset farming power not bigger then 0")
329321 else {
330- let aZ = aJ(g, aS, aK)
331- let ba = (aZ + ac((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount")))
332- let bb = ac((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"))
333- let bc = ((ba - bb) / (b * 100))
334- let bd = ae((((("address_" + g) + "_asset_") + aS) + "_without_perch"))
335- let be = bc
336- let bf = if (bd)
337- then [DeleteEntry((((("address_" + g) + "_asset_") + aS) + "_without_perch"))]
338- else [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aU), (ac(((("address_" + g) + "_perchesAvailable_") + aU)) + 1))]
339- let bg = if (aX)
340- then $Tuple2([ScriptTransfer(aV, (be * 1000000), F())], (be * 1000000))
322+ let aW = aG(g, aP, aH)
323+ let aX = (aW + ac((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount")))
324+ let aY = ac((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"))
325+ let aZ = ((aX - aY) / (b * 100))
326+ let ba = ae((((("address_" + g) + "_asset_") + aP) + "_without_perch"))
327+ let bb = aZ
328+ let bc = if (ba)
329+ then [DeleteEntry((((("address_" + g) + "_asset_") + aP) + "_without_perch"))]
330+ else [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aR), (ac(((("address_" + g) + "_perchesAvailable_") + aR)) + 1))]
331+ let bd = if (aU)
332+ then $Tuple2([ScriptTransfer(aS, (bb * 1000000), F())], (bb * 1000000))
341333 else $Tuple2(nil, 0)
342- $Tuple2(((([IntegerEntry("total_farmingPower", (ac("total_farmingPower") - aK)), IntegerEntry("total_lastCheckInterest", aI()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + aS) + "_owner")), DeleteEntry((((("address_" + g) + "_asset_") + aS) + "_unstaker")), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_farmingPower"), 0), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_lastCheckInterest"), aI()), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"), (bb + (be * c))), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount"), (ac((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount")) + aZ))] ++ bf) ++ [ScriptTransfer(aV, 1, au)]) ++ bg._1), bg._2)
334+ $Tuple2(((([IntegerEntry("total_farmingPower", (ac("total_farmingPower") - aH)), IntegerEntry("total_lastCheckInterest", aF()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + aP) + "_owner")), DeleteEntry((((("address_" + g) + "_asset_") + aP) + "_unstaker")), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_farmingPower"), 0), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_lastCheckInterest"), aF()), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"), (aY + (bb * c))), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount"), (ac((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount")) + aW))] ++ bc) ++ [ScriptTransfer(aS, 1, au)]) ++ bd._1), bd._2)
343335 }
344336 }
345337 }
347339 }
348340
349341
350-func bh (g) = {
351- let bi = f(N(), (("ART-XMISTL_" + g) + "_owner"))
352- if ((bi == ""))
342+func be (g) = {
343+ let bf = f(N(), (("ART-XMISTL_" + g) + "_owner"))
344+ if ((bf == ""))
353345 then a
354346 else ((a / 10) * 9)
355347 }
356348
357349
358-func bj (g) = {
359- let bk = O()
360- let bl = split(bk, ";")
361- (indexOf(bl, g) != unit)
350+func bg (g) = {
351+ let bh = O()
352+ let bi = split(bh, ";")
353+ (indexOf(bi, g) != unit)
362354 }
363355
364356
365-func bm (aS,bn,bo) = {
366- let au = fromBase58String(aS)
367- let aW = toString(bn.caller)
368- let g = if (bj(toString(bn.caller)))
369- then toString(bn.originCaller)
370- else aW
371- let aU = takeRight(value(assetInfo(au)).name, 1)
372- if ((aU == "U"))
357+func bj (aP,bk,bl) = {
358+ let au = fromBase58String(aP)
359+ let aT = toString(bk.caller)
360+ let g = if (bg(toString(bk.caller)))
361+ then toString(bk.originCaller)
362+ else aT
363+ let aR = takeRight(value(assetInfo(au)).name, 1)
364+ if ((aR == "U"))
373365 then throw("FUN: use another function to unstake Jackpot NFT")
374366 else {
375- let bp = aT(g, au, aU, bn.caller, aW, bo)
376- bp
367+ let bm = aQ(g, au, aR, bk.caller, aT, bl)
368+ bm
377369 }
378370 }
379371
380372
381-func bq (aS,bn,bo) = {
382- let au = fromBase58String(aS)
383- let aW = toString(bn.caller)
384- let g = if (bj(toString(bn.caller)))
385- then toString(bn.originCaller)
386- else aW
387- let aU = k((((("address_" + g) + "_asset_") + aS) + "_perchColor"))
373+func bn (aP,bk,bl) = {
374+ let au = fromBase58String(aP)
375+ let aT = toString(bk.caller)
376+ let g = if (bg(toString(bk.caller)))
377+ then toString(bk.originCaller)
378+ else aT
379+ let aR = k((((("address_" + g) + "_asset_") + aP) + "_perchColor"))
388380 if ((takeRight(value(value(assetInfo(au)).name), 1) != "U"))
389381 then throw("jackpot only")
390382 else {
391- let bp = aT(g, au, aU, bn.caller, aW, bo)
392- bp
383+ let bm = aQ(g, au, aR, bk.caller, aT, bl)
384+ bm
393385 }
394386 }
395387
396388
397-func br (h) = {
389+func bo (h) = {
398390 let i = getBoolean(this, h)
399391 if ($isInstanceOf(i, "Boolean"))
400392 then {
405397 }
406398
407399
408-func bs () = br("TESTENV")
400+func bp () = bo("TESTENV")
409401
410402
411-@Callable(bn)
412-func configureOracle (bt) = if ((bn.caller != this))
403+@Callable(bk)
404+func configureOracle (bq) = if ((bk.caller != this))
413405 then throw("FCO: admin only")
414- else [StringEntry(l(), bt)]
406+ else [StringEntry(l(), bq)]
415407
416408
417409
418-@Callable(bn)
419-func init () = if ((bn.caller != this))
410+@Callable(bk)
411+func init () = if ((bk.caller != this))
420412 then throw("FI: admin only")
421413 else [IntegerEntry("total_startHeight", height)]
422414
423415
424416
425-@Callable(bn)
426-func buyPerch (bu,bv) = {
427- let aY = ab()
428- if ((aY == aY))
417+@Callable(bk)
418+func buyPerch (br,bs) = {
419+ let aV = ab()
420+ if ((aV == aV))
429421 then {
430- let bw = if (if ((bn.caller == V()))
422+ let bt = if (if ((bk.caller == V()))
431423 then true
432- else (bn.caller == M()))
424+ else (bk.caller == M()))
433425 then nil
434- else X(bn.payments[0])
435- if ((bw == bw))
426+ else X(bk.payments[0])
427+ if ((bt == bt))
436428 then {
437- let aU = if ((bu == "U"))
429+ let aR = if ((br == "U"))
438430 then "B"
439- else bu
440- if ((0 > value(indexOf(["B", "R", "G", "Y"], aU))))
431+ else br
432+ if ((0 > value(indexOf(["B", "R", "G", "Y"], aR))))
441433 then throw("you need to set color properly")
442434 else {
443- let bx = bh(toString(bn.caller))
444- let by = if ((bn.originCaller == bn.caller))
435+ let bu = be(toString(bk.caller))
436+ let bv = if ((bk.originCaller == bk.caller))
445437 then {
446- let bz = ap(invoke(S(), "useCoupons", [bx], nil))
447- if ((bz == bz))
448- then (bx - bz)
438+ let bw = ap(invoke(S(), "useCoupons", [bu], nil))
439+ if ((bw == bw))
440+ then (bu - bw)
449441 else throw("Strict value is not equal to itself.")
450442 }
451- else bx
452- let Y = if ((by != 0))
443+ else bu
444+ let Y = if ((bv != 0))
453445 then {
454- let bA = if ((size(bn.payments) == 2))
455- then value(bn.payments[1])
456- else value(bn.payments[0])
457- if ((bA.assetId != F()))
446+ let bx = if ((size(bk.payments) == 2))
447+ then value(bk.payments[1])
448+ else value(bk.payments[0])
449+ if ((bx.assetId != F()))
458450 then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(F())))
459- else if ((bA.amount != by))
460- then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(by)) + " ") + toString(bn.caller)))
451+ else if ((bx.amount != bv))
452+ then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(bv)) + " ") + toString(bk.caller)))
461453 else {
462- let bB = fraction(by, W, 100)
463- let bC = ar(invoke(K(), "refPayment", [bv], [AttachedPayment(F(), bB)]))
464- if ((bC == bC))
454+ let by = fraction(bv, W, 100)
455+ let bz = ar(invoke(K(), "refPayment", [bs], [AttachedPayment(F(), by)]))
456+ if ((bz == bz))
465457 then {
466- let bD = if (bC)
467- then (by - bB)
468- else by
469- let bE = invoke(T(), "burnAttachedPayments", nil, [AttachedPayment(F(), bD)])
470- if ((bE == bE))
471- then by
458+ let bA = if (bz)
459+ then (bv - by)
460+ else bv
461+ let bB = invoke(T(), "burnAttachedPayments", nil, [AttachedPayment(F(), bA)])
462+ if ((bB == bB))
463+ then bv
472464 else throw("Strict value is not equal to itself.")
473465 }
474466 else throw("Strict value is not equal to itself.")
477469 else 0
478470 if ((Y == Y))
479471 then {
480- let bF = ((("address_" + toString(bn.caller)) + "_perchesAvailable_") + aU)
481- let bG = ac(bF)
482- ([IntegerEntry(bF, (bG + 1))] ++ bw)
472+ let bC = ((("address_" + toString(bk.caller)) + "_perchesAvailable_") + aR)
473+ let bD = ac(bC)
474+ ([IntegerEntry(bC, (bD + 1))] ++ bt)
483475 }
484476 else throw("Strict value is not equal to itself.")
485477 }
491483
492484
493485
494-@Callable(bn)
495-func addFreePerch (g,aU) = {
496- let aY = ab()
497- if ((aY == aY))
498- then if ((0 > value(indexOf(["B", "R", "G", "Y"], aU))))
486+@Callable(bk)
487+func addFreePerch (g,aR) = {
488+ let aV = ab()
489+ if ((aV == aV))
490+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aR))))
499491 then throw("you need to set color properly")
500- else if (if (if ((bn.caller != H()))
501- then (bn.caller != I())
492+ else if (if (if ((bk.caller != H()))
493+ then (bk.caller != I())
502494 else false)
503- then (bn.caller != this)
495+ then (bk.caller != this)
504496 else false)
505497 then throw("rebirth and swop promo only")
506498 else {
507- let bF = ((("address_" + g) + "_perchesAvailable_") + aU)
508- let bG = ac(bF)
509- $Tuple2([IntegerEntry(bF, (bG + 1))], "")
499+ let bC = ((("address_" + g) + "_perchesAvailable_") + aR)
500+ let bD = ac(bC)
501+ $Tuple2([IntegerEntry(bC, (bD + 1))], "")
510502 }
511503 else throw("Strict value is not equal to itself.")
512504 }
513505
514506
515507
516-@Callable(bn)
508+@Callable(bk)
517509 func stakeNFT () = {
518- let aY = ab()
519- if ((aY == aY))
510+ let aV = ab()
511+ if ((aV == aV))
520512 then {
521- let bw = if (if ((bn.caller == V()))
513+ let bt = if (if ((bk.caller == V()))
522514 then true
523- else (bn.caller == M()))
515+ else (bk.caller == M()))
524516 then nil
525- else X(bn.payments[1])
526- if ((bw == bw))
517+ else X(bk.payments[1])
518+ if ((bt == bt))
527519 then {
528- let bH = value(bn.payments[0])
529- let au = value(value(bn.payments[0]).assetId)
530- let aW = toString(bn.caller)
531- let g = if (bj(toString(bn.caller)))
532- then toString(bn.originCaller)
533- else aW
534- let aU = takeRight(value(assetInfo(au)).name, 1)
535- let bI = ac(((("address_" + g) + "_perchesAvailable_") + aU))
536- if ((bH.amount != 1))
520+ let bE = value(bk.payments[0])
521+ let au = value(value(bk.payments[0]).assetId)
522+ let aT = toString(bk.caller)
523+ let g = if (bg(toString(bk.caller)))
524+ then toString(bk.originCaller)
525+ else aT
526+ let aR = takeRight(value(assetInfo(au)).name, 1)
527+ let bF = ac(((("address_" + g) + "_perchesAvailable_") + aR))
528+ if ((bE.amount != 1))
537529 then throw("NFT is not attached")
538- else if ((0 >= bI))
539- then throw(("no perches available for the color " + aU))
530+ else if ((0 >= bF))
531+ then throw(("no perches available for the color " + aR))
540532 else {
541- let bJ = at(au, g)
542- let aO = bJ._1
543- let aK = bJ._2
544- ((aQ(g, au, aK, aW) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aU), (bI - 1))]) ++ bw)
533+ let bG = at(au, g)
534+ let aL = bG._1
535+ let aH = bG._2
536+ ((aN(g, au, aH, aT) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aR), (bF - 1))]) ++ bt)
545537 }
546538 }
547539 else throw("Strict value is not equal to itself.")
551543
552544
553545
554-@Callable(bn)
546+@Callable(bk)
555547 func stakeNFTWithoutPerch () = {
556- let aY = ab()
557- if ((aY == aY))
548+ let aV = ab()
549+ if ((aV == aV))
558550 then {
559- let bK = toString(bn.caller)
560- if (!(bj(bK)))
551+ let bH = toString(bk.caller)
552+ if (!(bg(bH)))
561553 then throw("FSNWP: Only trusted smart contracts can stake without a perch!")
562554 else {
563- let bH = value(bn.payments[0])
564- let au = value(value(bn.payments[0]).assetId)
565- let g = toString(bn.originCaller)
566- if ((bH.amount != 1))
555+ let bE = value(bk.payments[0])
556+ let au = value(value(bk.payments[0]).assetId)
557+ let g = toString(bk.originCaller)
558+ if ((bE.amount != 1))
567559 then throw("NFT is not attached")
568560 else {
569- let bL = at(au, g)
570- let aO = bL._1
571- let aK = bL._2
572- let aS = toBase58String(au)
573- let aW = toString(bn.caller)
574- (aQ(g, au, aK, aW) ++ [BooleanEntry((((("address_" + g) + "_asset_") + aS) + "_without_perch"), true)])
561+ let bI = at(au, g)
562+ let aL = bI._1
563+ let aH = bI._2
564+ let aP = toBase58String(au)
565+ let aT = toString(bk.caller)
566+ (aN(g, au, aH, aT) ++ [BooleanEntry((((("address_" + g) + "_asset_") + aP) + "_without_perch"), true)])
575567 }
576568 }
577569 }
580572
581573
582574
583-@Callable(bn)
584-func unstakeNFT (aS) = {
585- let bw = if ((bn.caller == M()))
575+@Callable(bk)
576+func unstakeNFT (aP) = {
577+ let bt = if ((bk.caller == M()))
586578 then nil
587- else X(bn.payments[0])
588- if ((bw == bw))
579+ else X(bk.payments[0])
580+ if ((bt == bt))
589581 then {
590- let bp = bm(aS, bn, true)
591- $Tuple2((bp._1 ++ bw), bp._2)
582+ let bm = bj(aP, bk, true)
583+ $Tuple2((bm._1 ++ bt), bm._2)
592584 }
593585 else throw("Strict value is not equal to itself.")
594586 }
595587
596588
597589
598-@Callable(bn)
599-func unstakeNFTWithoutClaim (aS) = bm(aS, bn, false)
590+@Callable(bk)
591+func unstakeNFTWithoutClaim (aP) = bj(aP, bk, false)
600592
601593
602594
603-@Callable(bn)
604-func stakeJackpot (aU) = {
605- let aY = ab()
606- if ((aY == aY))
595+@Callable(bk)
596+func stakeJackpot (aR) = {
597+ let aV = ab()
598+ if ((aV == aV))
607599 then {
608- let bw = if (if ((bn.caller == V()))
600+ let bt = if (if ((bk.caller == V()))
609601 then true
610- else (bn.caller == M()))
602+ else (bk.caller == M()))
611603 then nil
612- else X(bn.payments[1])
613- if ((bw == bw))
604+ else X(bk.payments[1])
605+ if ((bt == bt))
614606 then {
615- let bH = value(bn.payments[0])
616- let au = value(bH.assetId)
617- let aW = toString(bn.caller)
618- let g = if (bj(toString(bn.caller)))
619- then toString(bn.originCaller)
620- else aW
621- let bI = ac(((("address_" + g) + "_perchesAvailable_") + aU))
622- let bM = value(assetInfo(au)).issuer
623- if ((bH.amount != 1))
607+ let bE = value(bk.payments[0])
608+ let au = value(bE.assetId)
609+ let aT = toString(bk.caller)
610+ let g = if (bg(toString(bk.caller)))
611+ then toString(bk.originCaller)
612+ else aT
613+ let bF = ac(((("address_" + g) + "_perchesAvailable_") + aR))
614+ let bJ = value(assetInfo(au)).issuer
615+ if ((bE.amount != 1))
624616 then throw("NFT is not attached")
625- else if (if ((bM == G()))
617+ else if (if ((bJ == G()))
626618 then true
627- else (bM == J()))
619+ else (bJ == J()))
628620 then if ((takeRight(value(value(assetInfo(au)).name), 1) != "U"))
629621 then throw("jackpot only")
630- else if ((0 >= bI))
631- then throw(("FSJ: no perches available for the color " + aU))
622+ else if ((0 >= bF))
623+ then throw(("FSJ: no perches available for the color " + aR))
632624 else {
633- let bN = at(au, g)
634- ((aQ(g, au, bN._2, aW) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aU), (bI - 1)), StringEntry((((("address_" + g) + "_asset_") + toBase58String(au)) + "_perchColor"), aU)]) ++ bw)
625+ let bK = at(au, g)
626+ ((aN(g, au, bK._2, aT) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aR), (bF - 1)), StringEntry((((("address_" + g) + "_asset_") + toBase58String(au)) + "_perchColor"), aR)]) ++ bt)
635627 }
636628 else throw("asset is not valid")
637629 }
642634
643635
644636
645-@Callable(bn)
646-func unstakeJackpot (aS) = {
647- let bw = X(bn.payments[0])
648- if ((bw == bw))
637+@Callable(bk)
638+func unstakeJackpot (aP) = {
639+ let bt = X(bk.payments[0])
640+ if ((bt == bt))
649641 then {
650- let bp = bq(aS, bn, true)
651- $Tuple2((bp._1 ++ bw), bp._2)
642+ let bm = bn(aP, bk, true)
643+ $Tuple2((bm._1 ++ bt), bm._2)
652644 }
653645 else throw("Strict value is not equal to itself.")
654646 }
655647
656648
657649
658-@Callable(bn)
659-func unstakeJackpotWithoutClaimEgg (aS) = bq(aS, bn, false)
650+@Callable(bk)
651+func unstakeJackpotWithoutClaimEgg (aP) = bn(aP, bk, false)
660652
661653
662654
663-@Callable(bn)
664-func claimReward (aS) = {
665- let aY = ab()
666- if ((aY == aY))
655+@Callable(bk)
656+func claimReward (aP) = {
657+ let aV = ab()
658+ if ((aV == aV))
667659 then {
668- let bw = if ((bn.originCaller == Q()))
660+ let bt = if ((bk.originCaller == Q()))
669661 then nil
670- else X(bn.payments[0])
671- if ((bw == bw))
662+ else X(bk.payments[0])
663+ if ((bt == bt))
672664 then {
673- let g = if ((bn.originCaller == Q()))
674- then toString(bn.caller)
675- else toString(bn.originCaller)
676- let au = fromBase58String(aS)
677- let aK = aB(g, aS)
678- let aZ = aJ(g, aS, aK)
679- let ba = (aZ + ac((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount")))
680- let bb = ac((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"))
681- let bc = ((ba - bb) / (b * 100))
682- if ((0 >= bc))
665+ let g = if ((bk.originCaller == Q()))
666+ then toString(bk.caller)
667+ else toString(bk.originCaller)
668+ let au = fromBase58String(aP)
669+ let aH = aB(g, aP)
670+ let aW = aG(g, aP, aH)
671+ let aX = (aW + ac((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount")))
672+ let aY = ac((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"))
673+ let aZ = ((aX - aY) / (b * 100))
674+ if ((0 >= aZ))
683675 then throw("FCR: you have no EGGs to withdraw")
684- else $Tuple2(([IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"), (ac((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount")) + (bc * c))), ScriptTransfer(Address(fromBase58String(g)), (bc * 1000000), F())] ++ bw), (bc * 1000000))
676+ else $Tuple2(([IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"), (ac((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount")) + (aZ * c))), ScriptTransfer(Address(fromBase58String(g)), (aZ * 1000000), F())] ++ bt), (aZ * 1000000))
685677 }
686678 else throw("Strict value is not equal to itself.")
687679 }
689681 }
690682
691683
692-@Verifier(bO)
693-func bP () = if (bs())
694- then sigVerify(bO.bodyBytes, bO.proofs[0], bO.senderPublicKey)
684+@Verifier(bL)
685+func bM () = if (bp())
686+ then sigVerify(bL.bodyBytes, bL.proofs[0], bL.senderPublicKey)
695687 else {
696- let bQ = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
697- let bR = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
698- let bS = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
699- let bT = if (sigVerify(bO.bodyBytes, bO.proofs[0], bQ))
688+ let bN = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
689+ let bO = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
690+ let bP = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
691+ let bQ = if (sigVerify(bL.bodyBytes, bL.proofs[0], bN))
700692 then 1
701- else if (sigVerify(bO.bodyBytes, bO.proofs[1], bQ))
693+ else if (sigVerify(bL.bodyBytes, bL.proofs[1], bN))
702694 then 1
703- else if (sigVerify(bO.bodyBytes, bO.proofs[2], bQ))
695+ else if (sigVerify(bL.bodyBytes, bL.proofs[2], bN))
704696 then 1
705697 else 0
706- let bU = if (sigVerify(bO.bodyBytes, bO.proofs[0], bR))
698+ let bR = if (sigVerify(bL.bodyBytes, bL.proofs[0], bO))
707699 then 1
708- else if (sigVerify(bO.bodyBytes, bO.proofs[1], bR))
700+ else if (sigVerify(bL.bodyBytes, bL.proofs[1], bO))
709701 then 1
710- else if (sigVerify(bO.bodyBytes, bO.proofs[2], bR))
702+ else if (sigVerify(bL.bodyBytes, bL.proofs[2], bO))
711703 then 1
712704 else 0
713- let bV = if (sigVerify(bO.bodyBytes, bO.proofs[0], bS))
705+ let bS = if (sigVerify(bL.bodyBytes, bL.proofs[0], bP))
714706 then 1
715- else if (sigVerify(bO.bodyBytes, bO.proofs[1], bS))
707+ else if (sigVerify(bL.bodyBytes, bL.proofs[1], bP))
716708 then 1
717- else if (sigVerify(bO.bodyBytes, bO.proofs[2], bS))
709+ else if (sigVerify(bL.bodyBytes, bL.proofs[2], bP))
718710 then 1
719711 else 0
720- let bW = ((bT + bU) + bV)
721- let i = bO
722- (bW >= 2)
712+ let bT = ((bQ + bR) + bS)
713+ let i = bL
714+ if ($isInstanceOf(i, "DataTransaction"))
715+ then {
716+ let bU = i
717+ sigVerify(bL.bodyBytes, bL.proofs[0], bL.senderPublicKey)
718+ }
719+ else (bT >= 2)
723720 }
724721
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = (100 * 1000000)
55
66 let b = 10000
77
88 let c = 1000000
99
1010 func d (e) = (e + "_sick")
1111
1212
1313 func f (g,h) = {
1414 let i = getString(g, h)
1515 if ($isInstanceOf(i, "String"))
1616 then {
1717 let j = i
1818 j
1919 }
2020 else ""
2121 }
2222
2323
2424 func k (h) = f(this, h)
2525
2626
2727 func l () = "static_oracleAddress"
2828
2929
3030 func m () = "static_eggAssetId"
3131
3232
3333 func n () = "static_incubatorAddress"
3434
3535
3636 func o () = "static_rebirthAddress"
3737
3838
3939 func p () = "static_turtleRebirthAddress"
4040
4141
4242 func q () = "static_breederAddress"
4343
4444
4545 func r () = "static_refContractAddress"
4646
4747
4848 func s () = "static_itemsAddress"
4949
5050
5151 func t () = "static_metaRaceAddress"
5252
5353
5454 func u () = "static_accBoosterAddress"
5555
5656
5757 func v () = "static_proxyStakingContracts"
5858
5959
6060 func w () = "static_maintenance"
6161
6262
6363 func x () = "static_cfMasterAddress"
6464
6565
6666 func y () = "static_duckWrapper"
6767
6868
6969 func z () = "static_couponsAddress"
7070
7171
7272 func A () = "static_burnAddress"
7373
7474
7575 func B () = "static_extraFee"
7676
7777
7878 func C () = "static_feeAggregator"
7979
8080
8181 func D () = "static_huntAddress"
8282
8383
8484 func E () = Address(fromBase58String(k(l())))
8585
8686
8787 func F () = fromBase58String(f(E(), m()))
8888
8989
9090 func G () = Address(fromBase58String(f(E(), n())))
9191
9292
9393 func H () = Address(fromBase58String(f(E(), o())))
9494
9595
9696 func I () = Address(fromBase58String(f(E(), p())))
9797
9898
9999 func J () = Address(fromBase58String(f(E(), q())))
100100
101101
102102 func K () = Address(fromBase58String(f(E(), r())))
103103
104104
105105 func L () = Address(fromBase58String(f(E(), s())))
106106
107107
108108 func M () = Address(fromBase58String(f(E(), t())))
109109
110110
111111 func N () = Address(fromBase58String(f(E(), u())))
112112
113113
114114 func O () = f(E(), v())
115115
116116
117117 func P () = f(E(), w())
118118
119119
120120 func Q () = Address(fromBase58String(f(E(), x())))
121121
122122
123123 func R () = Address(fromBase58String(f(E(), y())))
124124
125125
126126 func S () = Address(fromBase58String(f(E(), z())))
127127
128128
129129 func T () = Address(fromBase58String(f(E(), A())))
130130
131131
132132 func U () = Address(fromBase58String(f(E(), C())))
133133
134134
135135 func V () = Address(fromBase58String(f(E(), D())))
136136
137137
138138 let W = 5
139139
140140 func X (Y) = if (isDefined(Y.assetId))
141141 then throw("FCAP: Please attach waves")
142142 else {
143143 let Z = getIntegerValue(E(), B())
144144 if ((Y.amount != Z))
145145 then throw((("FCAP: Please attach exactly " + toString(Z)) + " amount of wavelets"))
146146 else [ScriptTransfer(U(), Z, unit)]
147147 }
148148
149149
150-func aa () = 274
150+func aa () = 0
151151
152152
153153 func ab () = if ((P() != ""))
154154 then throw(P())
155155 else 0
156156
157157
158158 func ac (h) = {
159159 let i = getInteger(this, h)
160160 if ($isInstanceOf(i, "Int"))
161161 then {
162162 let ad = i
163163 ad
164164 }
165165 else 0
166166 }
167167
168168
169169 func ae (h) = {
170170 let i = getBoolean(this, h)
171171 if ($isInstanceOf(i, "Boolean"))
172172 then {
173173 let ad = i
174174 ad
175175 }
176176 else false
177177 }
178178
179179
180180 func af (g,h) = {
181181 let i = getBoolean(g, h)
182182 if ($isInstanceOf(i, "Boolean"))
183183 then {
184184 let ad = i
185185 ad
186186 }
187187 else false
188188 }
189189
190190
191191 func ag (ah) = if ((ah == "G"))
192192 then G()
193193 else J()
194194
195195
196196 func ai (aj,ah) = {
197197 let ak = valueOrErrorMessage(getInteger(ag(ah), (("stats_" + aj) + "_quantity")), (("stats_" + aj) + "_quantity not found"))
198198 let al = pow((10000 / ak), 4, 5, 1, 2, FLOOR)
199199 if ((al > 0))
200200 then al
201201 else 2
202202 }
203203
204204
205205 func am (an) = {
206206 let i = an
207207 if ($isInstanceOf(i, "String"))
208208 then {
209209 let ao = i
210210 ao
211211 }
212212 else throw("FAS: wrong type, expected: String")
213213 }
214214
215215
216216 func ap (an) = {
217217 let i = an
218218 if ($isInstanceOf(i, "Int"))
219219 then {
220220 let aq = i
221221 aq
222222 }
223223 else throw("FAI: wrong type, expected: Int")
224224 }
225225
226226
227227 func ar (an) = {
228228 let i = an
229229 if ($isInstanceOf(i, "Boolean"))
230230 then {
231231 let as = i
232232 as
233233 }
234234 else throw("FAB: wrong type, expected: Boolean")
235235 }
236236
237237
238238 func at (au,g) = if (if ((value(assetInfo(au)).issuer == J()))
239239 then true
240240 else (value(assetInfo(au)).issuer == G()))
241241 then {
242242 let av = ap(invoke(L(), "calculateFarmingPowerBoost", [toBase58String(au), g], nil))
243243 if ((av == av))
244244 then {
245245 let aw = value(assetInfo(au)).name
246246 let ax = (takeRight(value(aw), 1) == "U")
247247 let ay = if (ax)
248248 then ""
249249 else am(invoke(J(), "getGenFromName", [aw], nil))
250250 if ((ay == ay))
251251 then {
252252 let az = if (ax)
253253 then 100
254254 else {
255255 let ah = take(takeRight(aw, 2), 1)
256256 ai(ay, ah)
257257 }
258258 let aA = (az + fraction(az, av, 100))
259259 $Tuple2(ay, aA)
260260 }
261261 else throw("Strict value is not equal to itself.")
262262 }
263263 else throw("Strict value is not equal to itself.")
264264 }
265265 else throw("not valid NFT")
266266
267267
268268 func aB (g,au) = ac((((("address_" + g) + "_asset_") + au) + "_farmingPower"))
269269
270270
271-func aC (aD) = {
272- let aE = k(("assets_" + aD))
273- if ((aE == ""))
274- then nil
275- else split(aE, ",")
276- }
271+func aC (aD,aE,aA) = (aD + (((b * aa()) * (height - aE)) / aA))
277272
278273
279-func aF (aG,aH,aA) = (aG + (((b * aa()) * (height - aH)) / aA))
280-
281-
282-func aI () = if ((ac("total_farmingPower") > 0))
274+func aF () = if ((ac("total_farmingPower") > 0))
283275 then {
284- let aG = ac("total_lastCheckInterest")
285- let aH = ac("total_lastCheckInterestHeight")
276+ let aD = ac("total_lastCheckInterest")
277+ let aE = ac("total_lastCheckInterestHeight")
286278 let aA = ac("total_farmingPower")
287- aF(aG, aH, aA)
279+ aC(aD, aE, aA)
288280 }
289281 else if ((ac("total_startHeight") != 0))
290282 then ac("total_lastCheckInterest")
291283 else throw("farming is not launched, yet")
292284
293285
294-func aJ (g,au,aK) = {
295- let aL = ac((((("address_" + g) + "_asset_") + au) + "_lastCheckInterest"))
296- let aM = aI()
297- (aK * (aM - aL))
286+func aG (g,au,aH) = {
287+ let aI = ac((((("address_" + g) + "_asset_") + au) + "_lastCheckInterest"))
288+ let aJ = aF()
289+ (aH * (aJ - aI))
298290 }
299291
300292
301-func aN (au,aO) = {
302- let aP = k((("assets_" + aO) + "_locked"))
303- if ((aP == ""))
293+func aK (au,aL) = {
294+ let aM = k((("assets_" + aL) + "_locked"))
295+ if ((aM == ""))
304296 then au
305- else ((aP + ",") + au)
297+ else ((aM + ",") + au)
306298 }
307299
308300
309-func aQ (g,au,aK,aR) = {
310- let aS = toBase58String(au)
311-[IntegerEntry("total_farmingPower", (ac("total_farmingPower") + aK)), IntegerEntry("total_lastCheckInterest", aI()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + aS) + "_owner"), g), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_farmingPower"), aK), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_lastCheckInterest"), aI()), StringEntry((((("address_" + g) + "_asset_") + aS) + "_unstaker"), aR)]
301+func aN (g,au,aH,aO) = {
302+ let aP = toBase58String(au)
303+[IntegerEntry("total_farmingPower", (ac("total_farmingPower") + aH)), IntegerEntry("total_lastCheckInterest", aF()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + aP) + "_owner"), g), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_farmingPower"), aH), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_lastCheckInterest"), aF()), StringEntry((((("address_" + g) + "_asset_") + aP) + "_unstaker"), aO)]
312304 }
313305
314306
315-func aT (g,au,aU,aV,aW,aX) = {
316- let aY = ab()
317- if ((aY == aY))
307+func aQ (g,au,aR,aS,aT,aU) = {
308+ let aV = ab()
309+ if ((aV == aV))
318310 then {
319- let aS = toBase58String(au)
320- let aR = k((((("address_" + g) + "_asset_") + aS) + "_unstaker"))
321- if (if ((aR != ""))
322- then (aR != aW)
311+ let aP = toBase58String(au)
312+ let aO = k((((("address_" + g) + "_asset_") + aP) + "_unstaker"))
313+ if (if ((aO != ""))
314+ then (aO != aT)
323315 else false)
324316 then throw("FUN: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
325317 else {
326- let aK = aB(g, aS)
327- if (!((aK > 0)))
318+ let aH = aB(g, aP)
319+ if (!((aH > 0)))
328320 then throw("FGU: Asset farming power not bigger then 0")
329321 else {
330- let aZ = aJ(g, aS, aK)
331- let ba = (aZ + ac((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount")))
332- let bb = ac((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"))
333- let bc = ((ba - bb) / (b * 100))
334- let bd = ae((((("address_" + g) + "_asset_") + aS) + "_without_perch"))
335- let be = bc
336- let bf = if (bd)
337- then [DeleteEntry((((("address_" + g) + "_asset_") + aS) + "_without_perch"))]
338- else [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aU), (ac(((("address_" + g) + "_perchesAvailable_") + aU)) + 1))]
339- let bg = if (aX)
340- then $Tuple2([ScriptTransfer(aV, (be * 1000000), F())], (be * 1000000))
322+ let aW = aG(g, aP, aH)
323+ let aX = (aW + ac((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount")))
324+ let aY = ac((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"))
325+ let aZ = ((aX - aY) / (b * 100))
326+ let ba = ae((((("address_" + g) + "_asset_") + aP) + "_without_perch"))
327+ let bb = aZ
328+ let bc = if (ba)
329+ then [DeleteEntry((((("address_" + g) + "_asset_") + aP) + "_without_perch"))]
330+ else [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aR), (ac(((("address_" + g) + "_perchesAvailable_") + aR)) + 1))]
331+ let bd = if (aU)
332+ then $Tuple2([ScriptTransfer(aS, (bb * 1000000), F())], (bb * 1000000))
341333 else $Tuple2(nil, 0)
342- $Tuple2(((([IntegerEntry("total_farmingPower", (ac("total_farmingPower") - aK)), IntegerEntry("total_lastCheckInterest", aI()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + aS) + "_owner")), DeleteEntry((((("address_" + g) + "_asset_") + aS) + "_unstaker")), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_farmingPower"), 0), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_lastCheckInterest"), aI()), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"), (bb + (be * c))), IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount"), (ac((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount")) + aZ))] ++ bf) ++ [ScriptTransfer(aV, 1, au)]) ++ bg._1), bg._2)
334+ $Tuple2(((([IntegerEntry("total_farmingPower", (ac("total_farmingPower") - aH)), IntegerEntry("total_lastCheckInterest", aF()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + aP) + "_owner")), DeleteEntry((((("address_" + g) + "_asset_") + aP) + "_unstaker")), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_farmingPower"), 0), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_lastCheckInterest"), aF()), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"), (aY + (bb * c))), IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount"), (ac((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount")) + aW))] ++ bc) ++ [ScriptTransfer(aS, 1, au)]) ++ bd._1), bd._2)
343335 }
344336 }
345337 }
346338 else throw("Strict value is not equal to itself.")
347339 }
348340
349341
350-func bh (g) = {
351- let bi = f(N(), (("ART-XMISTL_" + g) + "_owner"))
352- if ((bi == ""))
342+func be (g) = {
343+ let bf = f(N(), (("ART-XMISTL_" + g) + "_owner"))
344+ if ((bf == ""))
353345 then a
354346 else ((a / 10) * 9)
355347 }
356348
357349
358-func bj (g) = {
359- let bk = O()
360- let bl = split(bk, ";")
361- (indexOf(bl, g) != unit)
350+func bg (g) = {
351+ let bh = O()
352+ let bi = split(bh, ";")
353+ (indexOf(bi, g) != unit)
362354 }
363355
364356
365-func bm (aS,bn,bo) = {
366- let au = fromBase58String(aS)
367- let aW = toString(bn.caller)
368- let g = if (bj(toString(bn.caller)))
369- then toString(bn.originCaller)
370- else aW
371- let aU = takeRight(value(assetInfo(au)).name, 1)
372- if ((aU == "U"))
357+func bj (aP,bk,bl) = {
358+ let au = fromBase58String(aP)
359+ let aT = toString(bk.caller)
360+ let g = if (bg(toString(bk.caller)))
361+ then toString(bk.originCaller)
362+ else aT
363+ let aR = takeRight(value(assetInfo(au)).name, 1)
364+ if ((aR == "U"))
373365 then throw("FUN: use another function to unstake Jackpot NFT")
374366 else {
375- let bp = aT(g, au, aU, bn.caller, aW, bo)
376- bp
367+ let bm = aQ(g, au, aR, bk.caller, aT, bl)
368+ bm
377369 }
378370 }
379371
380372
381-func bq (aS,bn,bo) = {
382- let au = fromBase58String(aS)
383- let aW = toString(bn.caller)
384- let g = if (bj(toString(bn.caller)))
385- then toString(bn.originCaller)
386- else aW
387- let aU = k((((("address_" + g) + "_asset_") + aS) + "_perchColor"))
373+func bn (aP,bk,bl) = {
374+ let au = fromBase58String(aP)
375+ let aT = toString(bk.caller)
376+ let g = if (bg(toString(bk.caller)))
377+ then toString(bk.originCaller)
378+ else aT
379+ let aR = k((((("address_" + g) + "_asset_") + aP) + "_perchColor"))
388380 if ((takeRight(value(value(assetInfo(au)).name), 1) != "U"))
389381 then throw("jackpot only")
390382 else {
391- let bp = aT(g, au, aU, bn.caller, aW, bo)
392- bp
383+ let bm = aQ(g, au, aR, bk.caller, aT, bl)
384+ bm
393385 }
394386 }
395387
396388
397-func br (h) = {
389+func bo (h) = {
398390 let i = getBoolean(this, h)
399391 if ($isInstanceOf(i, "Boolean"))
400392 then {
401393 let ad = i
402394 ad
403395 }
404396 else false
405397 }
406398
407399
408-func bs () = br("TESTENV")
400+func bp () = bo("TESTENV")
409401
410402
411-@Callable(bn)
412-func configureOracle (bt) = if ((bn.caller != this))
403+@Callable(bk)
404+func configureOracle (bq) = if ((bk.caller != this))
413405 then throw("FCO: admin only")
414- else [StringEntry(l(), bt)]
406+ else [StringEntry(l(), bq)]
415407
416408
417409
418-@Callable(bn)
419-func init () = if ((bn.caller != this))
410+@Callable(bk)
411+func init () = if ((bk.caller != this))
420412 then throw("FI: admin only")
421413 else [IntegerEntry("total_startHeight", height)]
422414
423415
424416
425-@Callable(bn)
426-func buyPerch (bu,bv) = {
427- let aY = ab()
428- if ((aY == aY))
417+@Callable(bk)
418+func buyPerch (br,bs) = {
419+ let aV = ab()
420+ if ((aV == aV))
429421 then {
430- let bw = if (if ((bn.caller == V()))
422+ let bt = if (if ((bk.caller == V()))
431423 then true
432- else (bn.caller == M()))
424+ else (bk.caller == M()))
433425 then nil
434- else X(bn.payments[0])
435- if ((bw == bw))
426+ else X(bk.payments[0])
427+ if ((bt == bt))
436428 then {
437- let aU = if ((bu == "U"))
429+ let aR = if ((br == "U"))
438430 then "B"
439- else bu
440- if ((0 > value(indexOf(["B", "R", "G", "Y"], aU))))
431+ else br
432+ if ((0 > value(indexOf(["B", "R", "G", "Y"], aR))))
441433 then throw("you need to set color properly")
442434 else {
443- let bx = bh(toString(bn.caller))
444- let by = if ((bn.originCaller == bn.caller))
435+ let bu = be(toString(bk.caller))
436+ let bv = if ((bk.originCaller == bk.caller))
445437 then {
446- let bz = ap(invoke(S(), "useCoupons", [bx], nil))
447- if ((bz == bz))
448- then (bx - bz)
438+ let bw = ap(invoke(S(), "useCoupons", [bu], nil))
439+ if ((bw == bw))
440+ then (bu - bw)
449441 else throw("Strict value is not equal to itself.")
450442 }
451- else bx
452- let Y = if ((by != 0))
443+ else bu
444+ let Y = if ((bv != 0))
453445 then {
454- let bA = if ((size(bn.payments) == 2))
455- then value(bn.payments[1])
456- else value(bn.payments[0])
457- if ((bA.assetId != F()))
446+ let bx = if ((size(bk.payments) == 2))
447+ then value(bk.payments[1])
448+ else value(bk.payments[0])
449+ if ((bx.assetId != F()))
458450 then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(F())))
459- else if ((bA.amount != by))
460- then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(by)) + " ") + toString(bn.caller)))
451+ else if ((bx.amount != bv))
452+ then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(bv)) + " ") + toString(bk.caller)))
461453 else {
462- let bB = fraction(by, W, 100)
463- let bC = ar(invoke(K(), "refPayment", [bv], [AttachedPayment(F(), bB)]))
464- if ((bC == bC))
454+ let by = fraction(bv, W, 100)
455+ let bz = ar(invoke(K(), "refPayment", [bs], [AttachedPayment(F(), by)]))
456+ if ((bz == bz))
465457 then {
466- let bD = if (bC)
467- then (by - bB)
468- else by
469- let bE = invoke(T(), "burnAttachedPayments", nil, [AttachedPayment(F(), bD)])
470- if ((bE == bE))
471- then by
458+ let bA = if (bz)
459+ then (bv - by)
460+ else bv
461+ let bB = invoke(T(), "burnAttachedPayments", nil, [AttachedPayment(F(), bA)])
462+ if ((bB == bB))
463+ then bv
472464 else throw("Strict value is not equal to itself.")
473465 }
474466 else throw("Strict value is not equal to itself.")
475467 }
476468 }
477469 else 0
478470 if ((Y == Y))
479471 then {
480- let bF = ((("address_" + toString(bn.caller)) + "_perchesAvailable_") + aU)
481- let bG = ac(bF)
482- ([IntegerEntry(bF, (bG + 1))] ++ bw)
472+ let bC = ((("address_" + toString(bk.caller)) + "_perchesAvailable_") + aR)
473+ let bD = ac(bC)
474+ ([IntegerEntry(bC, (bD + 1))] ++ bt)
483475 }
484476 else throw("Strict value is not equal to itself.")
485477 }
486478 }
487479 else throw("Strict value is not equal to itself.")
488480 }
489481 else throw("Strict value is not equal to itself.")
490482 }
491483
492484
493485
494-@Callable(bn)
495-func addFreePerch (g,aU) = {
496- let aY = ab()
497- if ((aY == aY))
498- then if ((0 > value(indexOf(["B", "R", "G", "Y"], aU))))
486+@Callable(bk)
487+func addFreePerch (g,aR) = {
488+ let aV = ab()
489+ if ((aV == aV))
490+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aR))))
499491 then throw("you need to set color properly")
500- else if (if (if ((bn.caller != H()))
501- then (bn.caller != I())
492+ else if (if (if ((bk.caller != H()))
493+ then (bk.caller != I())
502494 else false)
503- then (bn.caller != this)
495+ then (bk.caller != this)
504496 else false)
505497 then throw("rebirth and swop promo only")
506498 else {
507- let bF = ((("address_" + g) + "_perchesAvailable_") + aU)
508- let bG = ac(bF)
509- $Tuple2([IntegerEntry(bF, (bG + 1))], "")
499+ let bC = ((("address_" + g) + "_perchesAvailable_") + aR)
500+ let bD = ac(bC)
501+ $Tuple2([IntegerEntry(bC, (bD + 1))], "")
510502 }
511503 else throw("Strict value is not equal to itself.")
512504 }
513505
514506
515507
516-@Callable(bn)
508+@Callable(bk)
517509 func stakeNFT () = {
518- let aY = ab()
519- if ((aY == aY))
510+ let aV = ab()
511+ if ((aV == aV))
520512 then {
521- let bw = if (if ((bn.caller == V()))
513+ let bt = if (if ((bk.caller == V()))
522514 then true
523- else (bn.caller == M()))
515+ else (bk.caller == M()))
524516 then nil
525- else X(bn.payments[1])
526- if ((bw == bw))
517+ else X(bk.payments[1])
518+ if ((bt == bt))
527519 then {
528- let bH = value(bn.payments[0])
529- let au = value(value(bn.payments[0]).assetId)
530- let aW = toString(bn.caller)
531- let g = if (bj(toString(bn.caller)))
532- then toString(bn.originCaller)
533- else aW
534- let aU = takeRight(value(assetInfo(au)).name, 1)
535- let bI = ac(((("address_" + g) + "_perchesAvailable_") + aU))
536- if ((bH.amount != 1))
520+ let bE = value(bk.payments[0])
521+ let au = value(value(bk.payments[0]).assetId)
522+ let aT = toString(bk.caller)
523+ let g = if (bg(toString(bk.caller)))
524+ then toString(bk.originCaller)
525+ else aT
526+ let aR = takeRight(value(assetInfo(au)).name, 1)
527+ let bF = ac(((("address_" + g) + "_perchesAvailable_") + aR))
528+ if ((bE.amount != 1))
537529 then throw("NFT is not attached")
538- else if ((0 >= bI))
539- then throw(("no perches available for the color " + aU))
530+ else if ((0 >= bF))
531+ then throw(("no perches available for the color " + aR))
540532 else {
541- let bJ = at(au, g)
542- let aO = bJ._1
543- let aK = bJ._2
544- ((aQ(g, au, aK, aW) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aU), (bI - 1))]) ++ bw)
533+ let bG = at(au, g)
534+ let aL = bG._1
535+ let aH = bG._2
536+ ((aN(g, au, aH, aT) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aR), (bF - 1))]) ++ bt)
545537 }
546538 }
547539 else throw("Strict value is not equal to itself.")
548540 }
549541 else throw("Strict value is not equal to itself.")
550542 }
551543
552544
553545
554-@Callable(bn)
546+@Callable(bk)
555547 func stakeNFTWithoutPerch () = {
556- let aY = ab()
557- if ((aY == aY))
548+ let aV = ab()
549+ if ((aV == aV))
558550 then {
559- let bK = toString(bn.caller)
560- if (!(bj(bK)))
551+ let bH = toString(bk.caller)
552+ if (!(bg(bH)))
561553 then throw("FSNWP: Only trusted smart contracts can stake without a perch!")
562554 else {
563- let bH = value(bn.payments[0])
564- let au = value(value(bn.payments[0]).assetId)
565- let g = toString(bn.originCaller)
566- if ((bH.amount != 1))
555+ let bE = value(bk.payments[0])
556+ let au = value(value(bk.payments[0]).assetId)
557+ let g = toString(bk.originCaller)
558+ if ((bE.amount != 1))
567559 then throw("NFT is not attached")
568560 else {
569- let bL = at(au, g)
570- let aO = bL._1
571- let aK = bL._2
572- let aS = toBase58String(au)
573- let aW = toString(bn.caller)
574- (aQ(g, au, aK, aW) ++ [BooleanEntry((((("address_" + g) + "_asset_") + aS) + "_without_perch"), true)])
561+ let bI = at(au, g)
562+ let aL = bI._1
563+ let aH = bI._2
564+ let aP = toBase58String(au)
565+ let aT = toString(bk.caller)
566+ (aN(g, au, aH, aT) ++ [BooleanEntry((((("address_" + g) + "_asset_") + aP) + "_without_perch"), true)])
575567 }
576568 }
577569 }
578570 else throw("Strict value is not equal to itself.")
579571 }
580572
581573
582574
583-@Callable(bn)
584-func unstakeNFT (aS) = {
585- let bw = if ((bn.caller == M()))
575+@Callable(bk)
576+func unstakeNFT (aP) = {
577+ let bt = if ((bk.caller == M()))
586578 then nil
587- else X(bn.payments[0])
588- if ((bw == bw))
579+ else X(bk.payments[0])
580+ if ((bt == bt))
589581 then {
590- let bp = bm(aS, bn, true)
591- $Tuple2((bp._1 ++ bw), bp._2)
582+ let bm = bj(aP, bk, true)
583+ $Tuple2((bm._1 ++ bt), bm._2)
592584 }
593585 else throw("Strict value is not equal to itself.")
594586 }
595587
596588
597589
598-@Callable(bn)
599-func unstakeNFTWithoutClaim (aS) = bm(aS, bn, false)
590+@Callable(bk)
591+func unstakeNFTWithoutClaim (aP) = bj(aP, bk, false)
600592
601593
602594
603-@Callable(bn)
604-func stakeJackpot (aU) = {
605- let aY = ab()
606- if ((aY == aY))
595+@Callable(bk)
596+func stakeJackpot (aR) = {
597+ let aV = ab()
598+ if ((aV == aV))
607599 then {
608- let bw = if (if ((bn.caller == V()))
600+ let bt = if (if ((bk.caller == V()))
609601 then true
610- else (bn.caller == M()))
602+ else (bk.caller == M()))
611603 then nil
612- else X(bn.payments[1])
613- if ((bw == bw))
604+ else X(bk.payments[1])
605+ if ((bt == bt))
614606 then {
615- let bH = value(bn.payments[0])
616- let au = value(bH.assetId)
617- let aW = toString(bn.caller)
618- let g = if (bj(toString(bn.caller)))
619- then toString(bn.originCaller)
620- else aW
621- let bI = ac(((("address_" + g) + "_perchesAvailable_") + aU))
622- let bM = value(assetInfo(au)).issuer
623- if ((bH.amount != 1))
607+ let bE = value(bk.payments[0])
608+ let au = value(bE.assetId)
609+ let aT = toString(bk.caller)
610+ let g = if (bg(toString(bk.caller)))
611+ then toString(bk.originCaller)
612+ else aT
613+ let bF = ac(((("address_" + g) + "_perchesAvailable_") + aR))
614+ let bJ = value(assetInfo(au)).issuer
615+ if ((bE.amount != 1))
624616 then throw("NFT is not attached")
625- else if (if ((bM == G()))
617+ else if (if ((bJ == G()))
626618 then true
627- else (bM == J()))
619+ else (bJ == J()))
628620 then if ((takeRight(value(value(assetInfo(au)).name), 1) != "U"))
629621 then throw("jackpot only")
630- else if ((0 >= bI))
631- then throw(("FSJ: no perches available for the color " + aU))
622+ else if ((0 >= bF))
623+ then throw(("FSJ: no perches available for the color " + aR))
632624 else {
633- let bN = at(au, g)
634- ((aQ(g, au, bN._2, aW) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aU), (bI - 1)), StringEntry((((("address_" + g) + "_asset_") + toBase58String(au)) + "_perchColor"), aU)]) ++ bw)
625+ let bK = at(au, g)
626+ ((aN(g, au, bK._2, aT) ++ [IntegerEntry(((("address_" + g) + "_perchesAvailable_") + aR), (bF - 1)), StringEntry((((("address_" + g) + "_asset_") + toBase58String(au)) + "_perchColor"), aR)]) ++ bt)
635627 }
636628 else throw("asset is not valid")
637629 }
638630 else throw("Strict value is not equal to itself.")
639631 }
640632 else throw("Strict value is not equal to itself.")
641633 }
642634
643635
644636
645-@Callable(bn)
646-func unstakeJackpot (aS) = {
647- let bw = X(bn.payments[0])
648- if ((bw == bw))
637+@Callable(bk)
638+func unstakeJackpot (aP) = {
639+ let bt = X(bk.payments[0])
640+ if ((bt == bt))
649641 then {
650- let bp = bq(aS, bn, true)
651- $Tuple2((bp._1 ++ bw), bp._2)
642+ let bm = bn(aP, bk, true)
643+ $Tuple2((bm._1 ++ bt), bm._2)
652644 }
653645 else throw("Strict value is not equal to itself.")
654646 }
655647
656648
657649
658-@Callable(bn)
659-func unstakeJackpotWithoutClaimEgg (aS) = bq(aS, bn, false)
650+@Callable(bk)
651+func unstakeJackpotWithoutClaimEgg (aP) = bn(aP, bk, false)
660652
661653
662654
663-@Callable(bn)
664-func claimReward (aS) = {
665- let aY = ab()
666- if ((aY == aY))
655+@Callable(bk)
656+func claimReward (aP) = {
657+ let aV = ab()
658+ if ((aV == aV))
667659 then {
668- let bw = if ((bn.originCaller == Q()))
660+ let bt = if ((bk.originCaller == Q()))
669661 then nil
670- else X(bn.payments[0])
671- if ((bw == bw))
662+ else X(bk.payments[0])
663+ if ((bt == bt))
672664 then {
673- let g = if ((bn.originCaller == Q()))
674- then toString(bn.caller)
675- else toString(bn.originCaller)
676- let au = fromBase58String(aS)
677- let aK = aB(g, aS)
678- let aZ = aJ(g, aS, aK)
679- let ba = (aZ + ac((((("address_" + g) + "_asset_") + aS) + "_lastCheckFarmedAmount")))
680- let bb = ac((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"))
681- let bc = ((ba - bb) / (b * 100))
682- if ((0 >= bc))
665+ let g = if ((bk.originCaller == Q()))
666+ then toString(bk.caller)
667+ else toString(bk.originCaller)
668+ let au = fromBase58String(aP)
669+ let aH = aB(g, aP)
670+ let aW = aG(g, aP, aH)
671+ let aX = (aW + ac((((("address_" + g) + "_asset_") + aP) + "_lastCheckFarmedAmount")))
672+ let aY = ac((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"))
673+ let aZ = ((aX - aY) / (b * 100))
674+ if ((0 >= aZ))
683675 then throw("FCR: you have no EGGs to withdraw")
684- else $Tuple2(([IntegerEntry((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount"), (ac((((("address_" + g) + "_asset_") + aS) + "_withdrawnAmount")) + (bc * c))), ScriptTransfer(Address(fromBase58String(g)), (bc * 1000000), F())] ++ bw), (bc * 1000000))
676+ else $Tuple2(([IntegerEntry((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount"), (ac((((("address_" + g) + "_asset_") + aP) + "_withdrawnAmount")) + (aZ * c))), ScriptTransfer(Address(fromBase58String(g)), (aZ * 1000000), F())] ++ bt), (aZ * 1000000))
685677 }
686678 else throw("Strict value is not equal to itself.")
687679 }
688680 else throw("Strict value is not equal to itself.")
689681 }
690682
691683
692-@Verifier(bO)
693-func bP () = if (bs())
694- then sigVerify(bO.bodyBytes, bO.proofs[0], bO.senderPublicKey)
684+@Verifier(bL)
685+func bM () = if (bp())
686+ then sigVerify(bL.bodyBytes, bL.proofs[0], bL.senderPublicKey)
695687 else {
696- let bQ = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
697- let bR = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
698- let bS = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
699- let bT = if (sigVerify(bO.bodyBytes, bO.proofs[0], bQ))
688+ let bN = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
689+ let bO = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
690+ let bP = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
691+ let bQ = if (sigVerify(bL.bodyBytes, bL.proofs[0], bN))
700692 then 1
701- else if (sigVerify(bO.bodyBytes, bO.proofs[1], bQ))
693+ else if (sigVerify(bL.bodyBytes, bL.proofs[1], bN))
702694 then 1
703- else if (sigVerify(bO.bodyBytes, bO.proofs[2], bQ))
695+ else if (sigVerify(bL.bodyBytes, bL.proofs[2], bN))
704696 then 1
705697 else 0
706- let bU = if (sigVerify(bO.bodyBytes, bO.proofs[0], bR))
698+ let bR = if (sigVerify(bL.bodyBytes, bL.proofs[0], bO))
707699 then 1
708- else if (sigVerify(bO.bodyBytes, bO.proofs[1], bR))
700+ else if (sigVerify(bL.bodyBytes, bL.proofs[1], bO))
709701 then 1
710- else if (sigVerify(bO.bodyBytes, bO.proofs[2], bR))
702+ else if (sigVerify(bL.bodyBytes, bL.proofs[2], bO))
711703 then 1
712704 else 0
713- let bV = if (sigVerify(bO.bodyBytes, bO.proofs[0], bS))
705+ let bS = if (sigVerify(bL.bodyBytes, bL.proofs[0], bP))
714706 then 1
715- else if (sigVerify(bO.bodyBytes, bO.proofs[1], bS))
707+ else if (sigVerify(bL.bodyBytes, bL.proofs[1], bP))
716708 then 1
717- else if (sigVerify(bO.bodyBytes, bO.proofs[2], bS))
709+ else if (sigVerify(bL.bodyBytes, bL.proofs[2], bP))
718710 then 1
719711 else 0
720- let bW = ((bT + bU) + bV)
721- let i = bO
722- (bW >= 2)
712+ let bT = ((bQ + bR) + bS)
713+ let i = bL
714+ if ($isInstanceOf(i, "DataTransaction"))
715+ then {
716+ let bU = i
717+ sigVerify(bL.bodyBytes, bL.proofs[0], bL.senderPublicKey)
718+ }
719+ else (bT >= 2)
723720 }
724721

github/deemru/w8io/0e76f2f 
221.24 ms