tx · 9rLwGED59tdymuYLAbVXxJwupzQpEqdMW6uLfMLLVeVb

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.02600000 Waves

2022.08.03 12:46 [2168143] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "9rLwGED59tdymuYLAbVXxJwupzQpEqdMW6uLfMLLVeVb", "fee": 2600000, "feeAssetId": null, "timestamp": 1659520002101, "version": 1, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "5fFa9a9WeUWML6L9z6jPAJ12bQBfgGz5JkXqhka2LKSPzS3WVXNhM4CboUPeFF5hCH2sBkh2DELdb3KrW2X2iMD9" ], "script": "base64:BgJ2CAISBAoCCAESABIDCgEBEgASABIICgYCAQEBAQESABIDCgEIEgQKAggBEgMKAQgSBAoCCAESAwoBCBIDCgEIEgUKAwEBARIFCgMBAQESBgoECAgIARIDCgEIEgMKAQgSABIDCgEIEgcKBQgICAgIEgMKAQgSAFAAA1NFUAICX18ACVVTRVJERVBUSAAaAAVTQ0FMRQDoBwAFTVVMVDgAgMLXLwAKemVyb0JpZ0ludAkAtgIBAAAAFHByb2Nlc3NpbmdTdGFnZVRvdGFsAAAAFXByb2Nlc3NpbmdTdGFnZVNoYXJlcwABAQ5nZXROdW1iZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ9nZXROdW1iZXJPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAALa2V5TWF4RGVwdGgCDCVzX19tYXhEZXB0aAAPbWF4RGVwdGhEZWZhdWx0AB4ACG1heERlcHRoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleU1heERlcHRoBQ9tYXhEZXB0aERlZmF1bHQBEWtleUZhY3RvcnlBZGRyZXNzAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwARZmFjdG9yeUFkZHJlc3NTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQERa2V5RmFjdG9yeUFkZHJlc3MAAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEWZhY3RvcnlBZGRyZXNzU3RyARJrZXlFbWlzc2lvbkFkZHJlc3MAAh0lcyVzX19jb25maWdfX2VtaXNzaW9uQWRkcmVzcwETa2V5TnVtVG9Vc2VyTWFwcGluZwEDbnVtCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICB21hcHBpbmcJAMwIAgIIbnVtMnVzZXIJAMwIAgkApAMBBQNudW0FA25pbAUDU0VQABZrZXlSZWZlcnJhbFByb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAgtwcm9ncmFtTmFtZQUDbmlsBQNTRVAAGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0AgZ3eGxvY2sAE3JlZmVycmFsUHJvZ3JhbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZQUacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQAF2tleVJlZmVycmFsTWluR1d4QW1vdW50CQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAgxtaW5HV3hBbW91bnQFA25pbAUDU0VQABtyZWZlcnJhbE1pbkdXeEFtb3VudERlZmF1bHQJAGgCAPQDBQVNVUxUOAAUcmVmZXJyYWxNaW5HV3hBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUXa2V5UmVmZXJyYWxNaW5HV3hBbW91bnQFG3JlZmVycmFsTWluR1d4QW1vdW50RGVmYXVsdAAZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgIWcmVmZXJyZXJSZXdhcmRQZXJtaWxsZQUDbmlsBQNTRVAAHXJlZmVycmVyUmV3YXJkUGVybWlsbGVEZWZhdWx0ADIAFnJlZmVycmVyUmV3YXJkUGVybWlsbGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZQUdcmVmZXJyZXJSZXdhcmRQZXJtaWxsZURlZmF1bHQAGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICFnJlZmVycmFsUmV3YXJkUGVybWlsbGUFA25pbAUDU0VQAB1yZWZlcnJhbFJld2FyZFBlcm1pbGxlRGVmYXVsdAAyABZyZWZlcnJhbFJld2FyZFBlcm1pbGxlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUFHXJlZmVycmFsUmV3YXJkUGVybWlsbGVEZWZhdWx0AQtrZXlSZWZlcnJlcgEPcmVmZXJyYWxBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCHJlZmVycmVyCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFA1NFUAEUa2V5VW5jbGFpbWVkUmVmZXJyYWwCC3Byb2dyYW1OYW1lDmNsYWltZXJBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIRdW5jbGFpbWVkUmVmZXJyYWwJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUOY2xhaW1lckFkZHJlc3MFA25pbAUDU0VQABJlbWlzc2lvbkFkZHJlc3NTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQESa2V5RW1pc3Npb25BZGRyZXNzAAAQZW1pc3Npb25Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUSZW1pc3Npb25BZGRyZXNzU3RyAA1JZHhDZmdBc3NldElkAAEAFklkeENmZ1BhY2VtYWtlckFkZHJlc3MAAgAWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAADAA5JZHhDZmdNYXhEZXB0aAAEAQlrZXlDb25maWcAAgolc19fY29uZmlnARVyZWFkQ29uZmlnQXJyYXlPckZhaWwACQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEJa2V5Q29uZmlnAAUDU0VQAQxmb3JtYXRDb25maWcEDHd4QXNzZXRJZFN0chptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0chpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cghtYXhEZXB0aAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAIFDHd4QXNzZXRJZFN0cgkAzAgCBRptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgkAzAgCBRpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgkAzAgCCQCkAwEFCG1heERlcHRoBQNuaWwFA1NFUAEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIY2ZnQXJyYXkFFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QCKGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm90IGRlZmluZWQBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AQ1rZXlVc2Vyc0NvdW50AAIPJXNfX25leHRVc2VyTnVtARZrZXlSYXRlUGVyQmxvY2tDdXJyZW50AAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50ARRrZXlQb29sV2VpZ2h0VmlydHVhbAACICVzJXNfX3Bvb2xXZWlnaHRfX0dXWHZpcnR1YWxQT09MARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgACFSVzX19uZXh0UHJvY2Vzc2VkVXNlcgEPa2V5TGF0ZXN0UGVyaW9kAAIQJXNfX2xhdGVzdFBlcmlvZAENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARJrZXlQcm9jZXNzaW5nU3RhZ2UAAhMlc19fcHJvY2Vzc2luZ1N0YWdlARZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAIXJXNfX25leHRQcm9jZXNzZWRQZXJpb2QBG2tleU5leHRVbmxhaW1lZFBlcmlvZE9mVXNlcgEJdXNlckluZGV4CQC5CQIJAMwIAgIXJXMlZF9fbmV4dENsYWltZWRQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgFA25pbAUDU0VQARxrZXlMYXN0UHJvY2Vzc2VkUGVyaW9kT2ZVc2VyAQl1c2VySW5kZXgJALkJAgkAzAgCAhklcyVkX19sYXN0UHJvY2Vzc2VkUGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4BQNuaWwFA1NFUAESa2V5SGVpZ2h0Rm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAholcyVkX19zdGFydEhlaWdodEZvclBlcmlvZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABHWtleUF1eEVtaXNzaW9uUmV3YXJkRm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAhclcyVkX19hdXhFbWlzc2lvblJld2FyZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABF2tleVRvdGFsQW1vdW50Rm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAholcyVkX190b3RhbEFtb3VudEZvclBlcmlvZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABEWtleUxhc3RQYXlvdXRJbmZvAAISJXNfX2xhc3RQYXlvdXRJbmZvARBQZXJpb2RQYXlvdXRJbmZvAwZwZXJpb2QNbWF0Y2hlclJld2FyZA5lbWlzc2lvblJld2FyZAkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEFBnBlcmlvZAkAzAgCCQCkAwEFDW1hdGNoZXJSZXdhcmQJAMwIAgkApAMBBQ5lbWlzc2lvblJld2FyZAUDbmlsBQNTRVABFGtleVBheW91dEhpc3RvcnlJbmZvAQZwZXJpb2QJALkJAgkAzAgCAhglcyVzJWRfX3BheW91dHNfX2hpc3RvcnkJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIaJXMlZF9fdG90YWxXZWlnaHRGb3JQZXJpb2QJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kAgZwZXJpb2QJdXNlckluZGV4CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgJAMwIAgIBawkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QCBnBlcmlvZAl1c2VySW5kZXgJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCCQCkAwEFCXVzZXJJbmRleAkAzAgCAgFiCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEWa2V5VXNlcldlaWdodEZvclBlcmlvZAIGcGVyaW9kCXVzZXJJbmRleAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4CQDMCAICBndlaWdodAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAB5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwBCQEba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzAAEMSGlzdG9yeUVudHJ5BwR0eXBlBHVzZXIRYW1vdW50RnJvbU1hdGNoZXISYW1vdW50RnJvbUVtaXNzaW9uDWN1cnJlbnRQZXJpb2QMbGF0ZXN0UGVyaW9kAWkECmhpc3RvcnlLRVkJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIFBHVzZXIJAMwIAgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFA1NFUAQLaGlzdG9yeURBVEEJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQURYW1vdW50RnJvbU1hdGNoZXIJAMwIAgkApAMBBRJhbW91bnRGcm9tRW1pc3Npb24JAMwIAgkApAMBBQ1jdXJyZW50UGVyaW9kCQDMCAIJAKQDAQUMbGF0ZXN0UGVyaW9kBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgUKaGlzdG9yeUtFWQULaGlzdG9yeURBVEEBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkEAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yAQ5jYWxjVXNlcldlaWdodAQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MPaGVpZ2h0Rm9yUGVyaW9kBnBlcmlvZAl1c2VySW5kZXgEBWtMYXN0CQEca2V5TGFzdFByb2Nlc3NlZFBlcmlvZE9mVXNlcgEFCXVzZXJJbmRleAQEa0tleQkBFmtleVVzZXJLVmFsdWVGb3JQZXJpb2QCBQZwZXJpb2QFCXVzZXJJbmRleAQEa1JhdwkAmggCBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwUEa0tleQQLa1VzZXJXZWlnaHQJARZrZXlVc2VyV2VpZ2h0Rm9yUGVyaW9kAgUGcGVyaW9kBQl1c2VySW5kZXgDCQEJaXNEZWZpbmVkAQUEa1JhdwQBawkBBXZhbHVlAQUEa1JhdwQBYgkBBXZhbHVlAQkAmggCBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QCBQZwZXJpb2QFCXVzZXJJbmRleAQBdwkAZAIJAGgCBQFrBQ9oZWlnaHRGb3JQZXJpb2QFAWIDCQBmAgUBdwAACQCUCgIJAGkCBQF3BQVTQ0FMRQkAzAgCCQEMSW50ZWdlckVudHJ5AgUFa0xhc3QFBnBlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1VzZXJXZWlnaHQFAXcFA25pbAkAlAoCAAAFA25pbAQBcAkAmggCBQR0aGlzBQVrTGFzdAMDCQEJaXNEZWZpbmVkAQUBcAkAZwIFBnBlcmlvZAkBBXZhbHVlAQUBcAcEAnB2CQEFdmFsdWUBBQFwBAFrCQEFdmFsdWUBCQCaCAIFF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAIFAnB2BQl1c2VySW5kZXgEAWIJAQV2YWx1ZQEJAJoIAgUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kAgUCcHYFCXVzZXJJbmRleAQBdwkAZAIJAGgCBQFrBQ9oZWlnaHRGb3JQZXJpb2QFAWIDCQBmAgUBdwAACQCUCgIJAGkCBQF3BQVTQ0FMRQkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1VzZXJXZWlnaHQFAXcFA25pbAkAlAoCAAAFA25pbAkAlAoCAAAFA25pbAEWY2FsY1VzZXJXZWlnaHRGb3JDbGFpbQQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MPaGVpZ2h0Rm9yUGVyaW9kBnBlcmlvZAl1c2VySW5kZXgEC2tVc2VyV2VpZ2h0CQEWa2V5VXNlcldlaWdodEZvclBlcmlvZAIFBnBlcmlvZAUJdXNlckluZGV4BBB1c2VyV2VpZ2h0T3JVbml0CQCfCAEFC2tVc2VyV2VpZ2h0BAckbWF0Y2gwBRB1c2VyV2VpZ2h0T3JVbml0AwkAAQIFByRtYXRjaDACBFVuaXQAAAMJAAECBQckbWF0Y2gwAgNJbnQEAXcFByRtYXRjaDAJAGkCBQF3BQVTQ0FMRQkAAgECC01hdGNoIGVycm9yARVnZXRVc2VySW5kZXhCeUFkZHJlc3MCGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyC3VzZXJBZGRyZXNzBANrZXkJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIHbWFwcGluZwkAzAgCAgh1c2VyMm51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAJAQ1wYXJzZUludFZhbHVlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQdBZGRyZXNzAQkA2QQBBRpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgUDa2V5CQCsAgIJAKwCAgkArAICAg1Vc2VyIGFkZHJlc3MgBQt1c2VyQWRkcmVzcwItIGlzIG5vdCBmb3VuZCBpbiBib29zdGluZyBjb250cmFjdCBkYXRhLCBrZXk9BQNrZXkBCm5leHRQZXJpb2QACQEOZ2V0TnVtYmVyQnlLZXkBCQENa2V5TmV4dFBlcmlvZAABC2ludm9rZUNsYWltBhBib29zdGluZ0NvbnRyYWN0BnBlcmlvZAR1c2VyBWRlcHRoEHRvdGFsRnJvbU1hdGNoZXIRdG90YWxGcm9tRW1pc3Npb24EBnJlc3VsdAkA/AcEBQR0aGlzAg5jbGFpbU5leHRCYXRjaAkAzAgCBRBib29zdGluZ0NvbnRyYWN0CQDMCAIFBnBlcmlvZAkAzAgCBQR1c2VyCQDMCAIFBWRlcHRoCQDMCAIFEHRvdGFsRnJvbU1hdGNoZXIJAMwIAgURdG90YWxGcm9tRW1pc3Npb24FA25pbAUDbmlsAwkAAAIFBnJlc3VsdAUGcmVzdWx0BAckbWF0Y2gwBQZyZXN1bHQDCQABAgUHJG1hdGNoMAIPKEludCwgSW50LCBJbnQpBAFyBQckbWF0Y2gwBQFyCQACAQIXSW5jb3JyZWN0IGludm9rZSByZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWNsYWltSW50ZXJuYWwGEGJvb3N0aW5nQ29udHJhY3QNY3VycmVudFBlcmlvZAtjdXJyZW50VXNlcgVkZXB0aBZ1c2VyQWNjdW11bGF0ZWRNYXRjaGVyF3VzZXJBY2N1bXVsYXRlZEVtaXNzaW9uBBdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBB0FkZHJlc3MBBRBib29zdGluZ0NvbnRyYWN0BAxsYXRlc3RQZXJpb2QJAQ5nZXROdW1iZXJCeUtleQEJARZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAQLdG90YWxXZWlnaHQJAQ5nZXROdW1iZXJCeUtleQEJARdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QED2hlaWdodEZvclBlcmlvZAkBDmdldE51bWJlckJ5S2V5AQkBEmtleUhlaWdodEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QECnVzZXJXZWlnaHQJARZjYWxjVXNlcldlaWdodEZvckNsYWltBAUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MFD2hlaWdodEZvclBlcmlvZAUNY3VycmVudFBlcmlvZAULY3VycmVudFVzZXIEGnVzZXJBbW91bnRNYXRjaGVyRm9yUGVyaW9kCQBrAwkBDmdldE51bWJlckJ5S2V5AQkBF2tleVRvdGFsQW1vdW50Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAUKdXNlcldlaWdodAULdG90YWxXZWlnaHQEG3VzZXJBbW91bnRFbWlzc2lvbkZvclBlcmlvZAkAawMJAQ5nZXROdW1iZXJCeUtleQEJAR1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QFCnVzZXJXZWlnaHQFC3RvdGFsV2VpZ2h0AwMJAGcCAAAFBWRlcHRoBgkAZwIJAGQCBQ1jdXJyZW50UGVyaW9kAAEFDGxhdGVzdFBlcmlvZAkAlQoDCQBkAgUNY3VycmVudFBlcmlvZAABCQBkAgUWdXNlckFjY3VtdWxhdGVkTWF0Y2hlcgUadXNlckFtb3VudE1hdGNoZXJGb3JQZXJpb2QJAGQCBRd1c2VyQWNjdW11bGF0ZWRFbWlzc2lvbgUbdXNlckFtb3VudEVtaXNzaW9uRm9yUGVyaW9kCQELaW52b2tlQ2xhaW0GBRBib29zdGluZ0NvbnRyYWN0CQBkAgUNY3VycmVudFBlcmlvZAABBQtjdXJyZW50VXNlcgkAZQIFBWRlcHRoAAEJAGQCBRZ1c2VyQWNjdW11bGF0ZWRNYXRjaGVyBRp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAkAZAIFF3VzZXJBY2N1bXVsYXRlZEVtaXNzaW9uBRt1c2VyQW1vdW50RW1pc3Npb25Gb3JQZXJpb2QBEWNvbW1vbkNsYWltUmV3YXJkAgt1c2VyQWRkcmVzcwtzdGFydFBlcmlvZAQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwABAd1c2VySWR4CQEVZ2V0VXNlckluZGV4QnlBZGRyZXNzAgkAkQMCBQhjZmdBcnJheQUWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAULdXNlckFkZHJlc3MEDWN1cnJlbnRQZXJpb2QDCQECIT0CBQtzdGFydFBlcmlvZAUEdW5pdAkBBXZhbHVlAQULc3RhcnRQZXJpb2QJAQ5nZXROdW1iZXJCeUtleQEJARtrZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXIBBQd1c2VySWR4BBNuZXh0UHJvY2Vzc2VkUGVyaW9kCQEOZ2V0TnVtYmVyQnlLZXkBCQEWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAADCQBnAgUNY3VycmVudFBlcmlvZAUTbmV4dFByb2Nlc3NlZFBlcmlvZAkAAgECEE5vdGhpbmcgdG8gY2xhaW0EEGJvb3N0aW5nQ29udHJhY3QJANkEAQkAkQMCBQhjZmdBcnJheQUWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAQNJHQwMTI3MjkxMjg1NQkBDWNsYWltSW50ZXJuYWwGBRBib29zdGluZ0NvbnRyYWN0BQ1jdXJyZW50UGVyaW9kBQd1c2VySWR4BQlVU0VSREVQVEgAAAAABAZwZXJpb2QIBQ0kdDAxMjcyOTEyODU1Al8xBBFhbW91bnRGcm9tTWF0Y2hlcggFDSR0MDEyNzI5MTI4NTUCXzIEEmFtb3VudEZyb21FbWlzc2lvbggFDSR0MDEyNzI5MTI4NTUCXzMJAJgKBgUGcGVyaW9kBRFhbW91bnRGcm9tTWF0Y2hlcgUSYW1vdW50RnJvbUVtaXNzaW9uBQd1c2VySWR4BQhjZmdBcnJheQUTbmV4dFByb2Nlc3NlZFBlcmlvZBcBaQEWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQILdXNlckFkZHJlc3MOZ1d4QW1vdW50U3RhcnQECHJlZmVycmVyCQCdCAIFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAkBC2tleVJlZmVycmVyAQULdXNlckFkZHJlc3MEEWFjdGl2ZVJlZmVycmFsSW52AwkAAAIFCHJlZmVycmVyBQR1bml0BQR1bml0CQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJAGcCBQ5nV3hBbW91bnRTdGFydAUUcmVmZXJyYWxNaW5HV3hBbW91bnQFA25pbAUDbmlsAwkAAAIFEWFjdGl2ZVJlZmVycmFsSW52BRFhY3RpdmVSZWZlcnJhbEludgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOZmluYWxpemVIZWxwZXIABA9wcm9jZXNzaW5nU3RhZ2UJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVByb2Nlc3NpbmdTdGFnZQAFFHByb2Nlc3NpbmdTdGFnZVRvdGFsBA1jdXJyZW50UGVyaW9kCQEOZ2V0TnVtYmVyQnlLZXkBCQEWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAAEC2N1cnJlbnRVc2VyCQEOZ2V0TnVtYmVyQnlLZXkBCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIABAxsYXRlc3RQZXJpb2QJAQ5nZXROdW1iZXJCeUtleQEJAQ9rZXlMYXRlc3RQZXJpb2QABAp1c2Vyc0NvdW50CQELdmFsdWVPckVsc2UCCQCaCAIJARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAkBDWtleVVzZXJzQ291bnQAAAAEDnRvdGFsV2VpZ2h0S2V5CQEXa2V5VG90YWxXZWlnaHRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kBAt0b3RhbFdlaWdodAkBDmdldE51bWJlckJ5S2V5AQkBF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAQPaGVpZ2h0Rm9yUGVyaW9kCQEOZ2V0TnVtYmVyQnlLZXkBCQESa2V5SGVpZ2h0Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAMJAGYCBQ1jdXJyZW50UGVyaW9kBQxsYXRlc3RQZXJpb2QJAJQKAgUDbmlsBwMJAAACBQ9wcm9jZXNzaW5nU3RhZ2UFFHByb2Nlc3NpbmdTdGFnZVRvdGFsBA0kdDAxNDI1NTE0MzcxCQEOY2FsY1VzZXJXZWlnaHQECQEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAFD2hlaWdodEZvclBlcmlvZAUNY3VycmVudFBlcmlvZAULY3VycmVudFVzZXIECnVzZXJXZWlnaHQIBQ0kdDAxNDI1NTE0MzcxAl8xBAt1c2VyQWN0aW9ucwgFDSR0MDE0MjU1MTQzNzECXzIEDnRvdGFsV2VpZ2h0TmV3CQBkAgULdG90YWxXZWlnaHQFCnVzZXJXZWlnaHQEEXByb2Nlc3NpbmdBY3Rpb25zAwkAZgIJAGUCBQp1c2Vyc0NvdW50AAEFC2N1cnJlbnRVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIACQBkAgULY3VycmVudFVzZXIAAQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5UHJvY2Vzc2luZ1N0YWdlAAUVcHJvY2Vzc2luZ1N0YWdlU2hhcmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUOdG90YWxXZWlnaHRLZXkFDnRvdGFsV2VpZ2h0TmV3BQNuaWwFEXByb2Nlc3NpbmdBY3Rpb25zBQt1c2VyQWN0aW9ucwYDCQAAAgUPcHJvY2Vzc2luZ1N0YWdlBRVwcm9jZXNzaW5nU3RhZ2VTaGFyZXMECnVzZXJXZWlnaHQJARZjYWxjVXNlcldlaWdodEZvckNsYWltBAkBFmJvb3N0aW5nQ29udHJhY3RPckZhaWwABQ9oZWlnaHRGb3JQZXJpb2QFDWN1cnJlbnRQZXJpb2QFC2N1cnJlbnRVc2VyBBp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAkAawMJAQ5nZXROdW1iZXJCeUtleQEJARdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QFCnVzZXJXZWlnaHQFC3RvdGFsV2VpZ2h0BBt1c2VyQW1vdW50RW1pc3Npb25Gb3JQZXJpb2QJAGsDCQEOZ2V0TnVtYmVyQnlLZXkBCQEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kBQp1c2VyV2VpZ2h0BQt0b3RhbFdlaWdodAQPdXNlclRvdGFsQW1vdW50CQBkAgUbdXNlckFtb3VudEVtaXNzaW9uRm9yUGVyaW9kBRp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDUzKQIJARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAkBE2tleU51bVRvVXNlck1hcHBpbmcBBQtjdXJyZW50VXNlcgQIcmVmZXJyZXIJAJ0IAgUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsCQELa2V5UmVmZXJyZXIBBQt1c2VyQWRkcmVzcwQRYWN0aXZlUmVmZXJyYWxJbnYDCQAAAgUIcmVmZXJyZXIFBHVuaXQFBHVuaXQJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkAZwIFCnVzZXJXZWlnaHQFFHJlZmVycmFsTWluR1d4QW1vdW50BQNuaWwFA25pbAMJAAACBRFhY3RpdmVSZWZlcnJhbEludgURYWN0aXZlUmVmZXJyYWxJbnYEC3JlZmVycmFsSW52AwMJAAACBQhyZWZlcnJlcgUEdW5pdAYJAGYCBRRyZWZlcnJhbE1pbkdXeEFtb3VudAUKdXNlcldlaWdodAUEdW5pdAQOcmVmZXJyZXJSZXdhcmQJAGsDBQ91c2VyVG90YWxBbW91bnQFFnJlZmVycmVyUmV3YXJkUGVybWlsbGUFBVNDQUxFBA5yZWZlcnJhbFJld2FyZAkAawMFD3VzZXJUb3RhbEFtb3VudAUWcmVmZXJyYWxSZXdhcmRQZXJtaWxsZQUFU0NBTEUJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAgxpbmNVbmNsYWltZWQJAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQ5yZWZlcnJlclJld2FyZAkAzAgCBQ5yZWZlcnJhbFJld2FyZAUDbmlsBQNuaWwDCQAAAgULcmVmZXJyYWxJbnYFC3JlZmVycmFsSW52BBFwcm9jZXNzaW5nQWN0aW9ucwMJAGYCCQBlAgUKdXNlcnNDb3VudAABBQtjdXJyZW50VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleU5leHRQcm9jZXNzZWRVc2VyAAkAZAIFC2N1cnJlbnRVc2VyAAEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5leHRQcm9jZXNzZWRQZXJpb2QACQBkAgUNY3VycmVudFBlcmlvZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVByb2Nlc3NpbmdTdGFnZQAFA25pbAkAlAoCBRFwcm9jZXNzaW5nQWN0aW9ucwYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhhpbnZhbGlkIHByb2Nlc3Npbmcgc3RhZ2UBaQEPZmluYWxpemVXcmFwcGVyAQdjb3VudGVyBAZyZXN1bHQKAAFACQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUGcmVzdWx0BQZyZXN1bHQDCQEBIQEFBnJlc3VsdAMJAAACBQdjb3VudGVyBQhtYXhEZXB0aAkAAgECEk5vdGhpbmcgdG8gcHJvY2VzcwkAlAoCBQNuaWwFBHVuaXQDCQBmAgUHY291bnRlcgAACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZQIFB2NvdW50ZXIAAQUDbmlsBQNuaWwJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBHXByb2Nlc3NQZW5kaW5nUGVyaW9kc0FuZFVzZXJzAAkAlAoCBQNuaWwJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIFCG1heERlcHRoBQNuaWwFA25pbAFpAQdkZXBvc2l0AAQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEJANkEAQkAkQMCBQhjZmdBcnJheQUWSWR4Q2ZnUGFjZW1ha2VyQWRkcmVzcwkAAgECFFdyb25nIGNhbGxlciBhZGRyZXNzBAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQDCQECIT0CBQdhc3NldElkCQDZBAEJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQJAAIBAhNXcm9uZyBwYXltZW50IGFzc2V0BAZwZXJpb2QJAQpuZXh0UGVyaW9kAAQGZGVsdGFICQBlAgUGaGVpZ2h0CQEPZ2V0TnVtYmVyT3JGYWlsAQkBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQABAxlbWlzc2lvblJhdGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRBlbWlzc2lvbkNvbnRyYWN0CQEWa2V5UmF0ZVBlckJsb2NrQ3VycmVudAAJAKwCAgkArAICAhxtYW5kYXRvcnkgZW1pc3Npb25fY29udHJhY3QuCQEWa2V5UmF0ZVBlckJsb2NrQ3VycmVudAACDyBpcyBub3QgZGVmaW5lZAQGd2VpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUPZmFjdG9yeUNvbnRyYWN0CQEUa2V5UG9vbFdlaWdodFZpcnR1YWwACQCsAgIJAKwCAgIbbWFuZGF0b3J5IGZhY3RvcnlfY29udHJhY3QuCQEUa2V5UG9vbFdlaWdodFZpcnR1YWwAAg8gaXMgbm90IGRlZmluZWQECWF1eEFtb3VudAkAawMJAGgCBQZkZWx0YUgFBndlaWdodAUMZW1pc3Npb25SYXRlBQVNVUxUOAQCZW0JAPwHBAUQZW1pc3Npb25Db250cmFjdAIEZW1pdAkAzAgCBQlhdXhBbW91bnQFA25pbAUDbmlsAwkAAAIFAmVtBQJlbQQLbWF0Y2hlclBhcnQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BApwYXlvdXRJbmZvCQEQUGVyaW9kUGF5b3V0SW5mbwMFBnBlcmlvZAULbWF0Y2hlclBhcnQFCWF1eEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleUxhdGVzdFBlcmlvZAAFBnBlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUhlaWdodEZvclBlcmlvZAEFBnBlcmlvZAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBQZwZXJpb2QFCWF1eEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQABQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAEFBnBlcmlvZAULbWF0Y2hlclBhcnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlOZXh0UGVyaW9kAAkAZAIFBnBlcmlvZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0UGF5b3V0SW5mbwAFCnBheW91dEluZm8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVBheW91dEhpc3RvcnlJbmZvAQUGcGVyaW9kBQpwYXlvdXRJbmZvBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY2xhaW1OZXh0QmF0Y2gGEGJvb3N0aW5nQ29udHJhY3QNY3VycmVudFBlcmlvZAtjdXJyZW50VXNlcgVkZXB0aBB0b3RhbEZyb21NYXRjaGVyEXRvdGFsRnJvbUVtaXNzaW9uAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIkU2hvdWxkIGJlIGNhbGxlZCBieSB0aGlzIHNjcmlwdCBvbmx5BA9wZXJpb2RBbmRUb3RhbHMJAQ1jbGFpbUludGVybmFsBgUQYm9vc3RpbmdDb250cmFjdAUNY3VycmVudFBlcmlvZAULY3VycmVudFVzZXIFBWRlcHRoBRB0b3RhbEZyb21NYXRjaGVyBRF0b3RhbEZyb21FbWlzc2lvbgkAlAoCBQNuaWwFD3BlcmlvZEFuZFRvdGFscwFpAQtjbGFpbVJld2FyZAAEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBA0kdDAxOTkwNTIwMDMxCQERY29tbW9uQ2xhaW1SZXdhcmQCBQdhZGRyZXNzBQR1bml0BAZwZXJpb2QIBQ0kdDAxOTkwNTIwMDMxAl8xBBFhbW91bnRGcm9tTWF0Y2hlcggFDSR0MDE5OTA1MjAwMzECXzIEEmFtb3VudEZyb21FbWlzc2lvbggFDSR0MDE5OTA1MjAwMzECXzMEB3VzZXJJZHgIBQ0kdDAxOTkwNTIwMDMxAl80BAhjZmdBcnJheQgFDSR0MDE5OTA1MjAwMzECXzUEE25leHRQcm9jZXNzZWRQZXJpb2QIBQ0kdDAxOTkwNTIwMDMxAl82BA9jbGFpbWVkUmVmZXJyYWwKAAFACQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIFY2xhaW0JAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwCBWNsYWltCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG2tleU5leHRVbmxhaW1lZFBlcmlvZE9mVXNlcgEFB3VzZXJJZHgFBnBlcmlvZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGQCBRFhbW91bnRGcm9tTWF0Y2hlcgUSYW1vdW50RnJvbUVtaXNzaW9uCQDZBAEJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQJAMwIAgkBDEhpc3RvcnlFbnRyeQcCBWNsYWltBQdhZGRyZXNzCQBkAgURYW1vdW50RnJvbU1hdGNoZXIFD2NsYWltZWRSZWZlcnJhbAUSYW1vdW50RnJvbUVtaXNzaW9uBQZwZXJpb2QFE25leHRQcm9jZXNzZWRQZXJpb2QFAWkFA25pbAkAzAgCCQBkAgURYW1vdW50RnJvbU1hdGNoZXIFD2NsYWltZWRSZWZlcnJhbAkAzAgCBRJhbW91bnRGcm9tRW1pc3Npb24FA25pbAFpARNjbGFpbVJld2FyZFJFQURPTkxZAQdhZGRyZXNzBAxjbGFpbVJlc3VsdHMJARFjb21tb25DbGFpbVJld2FyZAIFB2FkZHJlc3MFBHVuaXQEEXJlZmVycmFsVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCaCAIFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAkBFGtleVVuY2xhaW1lZFJlZmVycmFsAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQUHYWRkcmVzcwAABAZhbW91bnQJAGQCCQBkAggFDGNsYWltUmVzdWx0cwJfMggFDGNsYWltUmVzdWx0cwJfMwURcmVmZXJyYWxVbmNsYWltZWQJAJQKAgUDbmlsBQZhbW91bnQBaQEcY2xhaW1SZXdhcmRQYWdpbmF0ZWRSRUFET05MWQIHYWRkcmVzcwtzdGFydFBlcmlvZAQNJHQwMjEwODkyMTIwNgkBEWNvbW1vbkNsYWltUmV3YXJkAgUHYWRkcmVzcwMJAGYCAAAFC3N0YXJ0UGVyaW9kBQR1bml0BQtzdGFydFBlcmlvZAQGcGVyaW9kCAUNJHQwMjEwODkyMTIwNgJfMQQLZnJvbU1hdGNoZXIIBQ0kdDAyMTA4OTIxMjA2Al8yBAxmcm9tRW1pc3Npb24IBQ0kdDAyMTA4OTIxMjA2Al8zBAZhbW91bnQJAGQCBQtmcm9tTWF0Y2hlcgUMZnJvbUVtaXNzaW9uCQCUCgIFA25pbAkAlAoCBQZhbW91bnQFBnBlcmlvZAFpARtjbGFpbVJld2FyZERldGFpbGVkUkVBRE9OTFkBB2FkZHJlc3MEDSR0MDIxNDU3MjE1MzIJARFjb21tb25DbGFpbVJld2FyZAIFB2FkZHJlc3MFBHVuaXQEB2lnbm9yZWQIBQ0kdDAyMTQ1NzIxNTMyAl8xBAtmcm9tTWF0Y2hlcggFDSR0MDIxNDU3MjE1MzICXzIEDGZyb21FbWlzc2lvbggFDSR0MDIxNDU3MjE1MzICXzMJAJQKAgUDbmlsCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQkAZAIFC2Zyb21NYXRjaGVyBQxmcm9tRW1pc3Npb24JAMwIAgkApAMBBQtmcm9tTWF0Y2hlcgkAzAgCCQCkAwEFDGZyb21FbWlzc2lvbgUDbmlsBQNTRVABaQEkY2xhaW1SZXdhcmREZXRhaWxlZFBhZ2luYXRlZFJFQURPTkxZAgdhZGRyZXNzC3N0YXJ0UGVyaW9kBA0kdDAyMTgyODIxOTQ1CQERY29tbW9uQ2xhaW1SZXdhcmQCBQdhZGRyZXNzAwkAZgIAAAULc3RhcnRQZXJpb2QFBHVuaXQFC3N0YXJ0UGVyaW9kBAZwZXJpb2QIBQ0kdDAyMTgyODIxOTQ1Al8xBAtmcm9tTWF0Y2hlcggFDSR0MDIxODI4MjE5NDUCXzIEDGZyb21FbWlzc2lvbggFDSR0MDIxODI4MjE5NDUCXzMJAJQKAgUDbmlsCQCUCgIJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBCQBkAgULZnJvbU1hdGNoZXIFDGZyb21FbWlzc2lvbgkAzAgCCQCkAwEFC2Zyb21NYXRjaGVyCQDMCAIJAKQDAQUMZnJvbUVtaXNzaW9uBQNuaWwFA1NFUAUGcGVyaW9kAWkBHWxhdGVzdEZpbmFsaXplZFBlcmlvZFJFQURPTkxZAQdhZGRyZXNzCQCUCgIFA25pbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5TGF0ZXN0UGVyaW9kAAD///////////8BAWkBIWxhdGVzdEZpbmFsaXplZFBlcmlvZEluZm9SRUFET05MWQEHYWRkcmVzcwkAlAoCBQNuaWwJAQ5nZXRTdHJpbmdCeUtleQEJARFrZXlMYXN0UGF5b3V0SW5mbwABaQEVY2FsY0d3eFBhcmFtc1JFQURPTkxZAw5nd3hBbW91bnRTdGFydA9sb2NrU3RhcnRIZWlnaHQSbG9ja0R1cmF0aW9uQmxvY2tzBA1sb2NrRW5kSGVpZ2h0CQBkAgUPbG9ja1N0YXJ0SGVpZ2h0BRJsb2NrRHVyYXRpb25CbG9ja3MEDHNjYWxlOFBhcmFtSwkBAS0BCQBrAwUOZ3d4QW1vdW50U3RhcnQFBVNDQUxFBRJsb2NrRHVyYXRpb25CbG9ja3MEDHNjYWxlOFBhcmFtQgkAaAIJAGsDBQ5nd3hBbW91bnRTdGFydAUFU0NBTEUFEmxvY2tEdXJhdGlvbkJsb2NrcwUNbG9ja0VuZEhlaWdodAkAlAoCBQNuaWwJAMwIAgUMc2NhbGU4UGFyYW1LCQDMCAIFDHNjYWxlOFBhcmFtQgkAzAgCCQEKbmV4dFBlcmlvZAAFA25pbAFpARpjYWxjR3d4QW1vdW50U3RhcnRSRUFET05MWQMMd3hMb2NrQW1vdW50DGxvY2tEdXJhdGlvbg9tYXhMb2NrRHVyYXRpb24EB2NvZWZmWDgJAGsDBQxsb2NrRHVyYXRpb24FBU1VTFQ4BQ9tYXhMb2NrRHVyYXRpb24EDmdXeEFtb3VudFN0YXJ0CQBrAwUMd3hMb2NrQW1vdW50BQdjb2VmZlg4BQVNVUxUOAkAlAoCBQNuaWwJAMwIAgUOZ1d4QW1vdW50U3RhcnQFA25pbAFpAQtjb25zdHJ1Y3RvcgQMd3hBc3NldElkU3RyGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyCG1heERlcHRoAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIObm90IGF1dGhvcml6ZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCWtleUNvbmZpZwAJAQxmb3JtYXRDb25maWcEBQx3eEFzc2V0SWRTdHIFGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyBRpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgUIbWF4RGVwdGgFA25pbAFpAQ1jb25zdHJ1Y3RvclYyAQ5mYWN0b3J5QWRkcmVzcwMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgECDm5vdCBhdXRob3JpemVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5QWRkcmVzcwAFDmZhY3RvcnlBZGRyZXNzBQNuaWwBaQENY29uc3RydWN0b3JWMwEPZW1pc3Npb25BZGRyZXNzAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIObm90IGF1dGhvcml6ZWQEEGluaXRMYXRlc3RQZXJpb2QDCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQEPa2V5TGF0ZXN0UGVyaW9kAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5TGF0ZXN0UGVyaW9kAAD///////////8BBQNuaWwJAM0IAgUQaW5pdExhdGVzdFBlcmlvZAkBC1N0cmluZ0VudHJ5AgkBEmtleUVtaXNzaW9uQWRkcmVzcwAFD2VtaXNzaW9uQWRkcmVzcwFpARVvbkVtaXNzaW9uRm9yR3d4U3RhcnQAAwkBAiE9AggFAWkGY2FsbGVyBQ9mYWN0b3J5Q29udHJhY3QJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAUGaGVpZ2h0BQNuaWwBaQEjbGF0ZXN0UGVyaW9kRW1pc3Npb25SZXdhcmRzUkVBRE9OTFkBB2FkZHJlc3MEBnBlcmlvZAkBCm5leHRQZXJpb2QACQCUCgIFA25pbAkAzAgCCQEOZ2V0TnVtYmVyQnlLZXkBCQEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBQZwZXJpb2QFA25pbAFpAQVjYWxjRAULeDFCaWdJbnRTdHILeDJCaWdJbnRTdHIMYW1wQmlnSW50U3RyE2FQcmVjaXNpb25CaWdJbnRTdHIYdGFyZ2V0UHJlY2lzaW9uQmlnSW50U3RyBAZuQ29pbnMJALYCAQACBAphUHJlY2lzaW9uCQCnAwEFE2FQcmVjaXNpb25CaWdJbnRTdHIED3RhcmdldFByZWNpc2lvbgkApwMBBRh0YXJnZXRQcmVjaXNpb25CaWdJbnRTdHIEAngxCQCnAwEFC3gxQmlnSW50U3RyBAJ4MgkApwMBBQt4MkJpZ0ludFN0cgQDYW1wCQC5AgIJAKcDAQUMYW1wQmlnSW50U3RyBQphUHJlY2lzaW9uBAFzCQC3AgIFAngxBQJ4MgMJAAACBQFzBQp6ZXJvQmlnSW50CQCUCgIFA25pbAkApgMBBQp6ZXJvQmlnSW50BANhbm4JALkCAgUDYW1wBQZuQ29pbnMEA2FycgkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcFA25pbAoBBGNhbGMCA2FjYwNjdXIEDSR0MDI1NDM0MjU2MjMFA2FjYwQBZAgFDSR0MDI1NDM0MjU2MjMCXzEEBWRQcmV2CAUNJHQwMjU0MzQyNTYyMwJfMgQCZHAJALoCAgkAuQICCQC5AgIFAWQFAWQFAWQJALkCAgkAuQICCQC5AgIFAngxBQJ4MgUGbkNvaW5zBQZuQ29pbnMEBWROZXh0CQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUDYW5uBQFzBQphUHJlY2lzaW9uCQC5AgIFAmRwBQZuQ29pbnMFAWQJALcCAgkAugICCQC5AgIJALgCAgUDYW5uBQphUHJlY2lzaW9uBQFkBQphUHJlY2lzaW9uCQC5AgIJALcCAgUGbkNvaW5zCQC2AgEAAQUCZHAJAJQKAgUFZE5leHQFAWQEDSR0MDI1ODM2MjU4ODYKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQFzBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcEBWROZXh0CAUNJHQwMjU4MzYyNTg4NgJfMQQFZFByZXYIBQ0kdDAyNTgzNjI1ODg2Al8yBAVkRGlmZgkBA2FicwEJALgCAgUFZE5leHQJAQV2YWx1ZQEFBWRQcmV2AwkAwAICBQ90YXJnZXRQcmVjaXNpb24FBWREaWZmCQCUCgIFA25pbAkApgMBBQVkTmV4dAkAAgEJAKwCAgIdRCBjYWxjdWxhdGlvbiBlcnJvciwgZERpZmYgPSAJAKYDAQUFZERpZmYBaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXnYKvU2", "chainId": 84, "height": 2168143, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A1ichLYXomENmwL7xKAmyQgqWz8tiegia1TctBb2uBkL Next: FNGL5U2RQniYaGwFTQGuzccHHYGBQ4yk7SxaQi9FZkyt Diff:
OldNewDifferences
7878 func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
7979
8080
81-let L = l(u())
82-
83-let M = addressFromStringValue(L)
84-
85-let N = 1
86-
87-let O = 2
88-
89-let P = 3
90-
91-let Q = 4
92-
93-func R () = "%s__config"
81+func L (M,N) = makeString(["%s%s%s%s", "unclaimedReferral", M, N], a)
9482
9583
96-func S () = split(l(R()), a)
84+let O = l(u())
85+
86+let P = addressFromStringValue(O)
87+
88+let Q = 1
89+
90+let R = 2
91+
92+let S = 3
93+
94+let T = 4
95+
96+func U () = "%s__config"
9797
9898
99-func T (U,V,W,q) = makeString(["%s%s%s%d", U, V, W, toString(q)], a)
99+func V () = split(l(U()), a)
100100
101101
102-func X () = {
103- let Y = S()
104- valueOrErrorMessage(addressFromString(Y[P]), "boosting contract address is not defined")
102+func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
103+
104+
105+func aa () = {
106+ let ab = V()
107+ valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
105108 }
106109
107110
108-func Z () = "%s%s__gwxRewardEmissionPart__startHeight"
111+func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
109112
110113
111-func aa () = "%s__nextUserNum"
114+func ad () = "%s__nextUserNum"
112115
113116
114-func ab () = "%s%s__ratePerBlock__current"
117+func ae () = "%s%s__ratePerBlock__current"
115118
116119
117-func ac () = "%s%s__poolWeight__GWXvirtualPOOL"
120+func af () = "%s%s__poolWeight__GWXvirtualPOOL"
118121
119122
120-func ad () = "%s__nextProcessedUser"
123+func ag () = "%s__nextProcessedUser"
121124
122125
123-func ae () = "%s__latestPeriod"
126+func ah () = "%s__latestPeriod"
124127
125128
126-func af () = "%s__nextPeriod"
129+func ai () = "%s__nextPeriod"
127130
128131
129-func ag () = "%s__processingStage"
132+func aj () = "%s__processingStage"
130133
131134
132-func ah () = "%s__nextProcessedPeriod"
135+func ak () = "%s__nextProcessedPeriod"
133136
134137
135-func ai (aj) = makeString(["%s%d__nextClaimedPeriod", toString(aj)], a)
138+func al (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
136139
137140
138-func ak (aj) = makeString(["%s%d__lastProcessedPeriod", toString(aj)], a)
141+func an (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
139142
140143
141-func al (am) = makeString(["%s%d__startHeightForPeriod", toString(am)], a)
144+func ao (ap) = makeString(["%s%d__startHeightForPeriod", toString(ap)], a)
142145
143146
144-func an (am) = makeString(["%s%d__auxEmissionReward", toString(am)], a)
147+func aq (ap) = makeString(["%s%d__auxEmissionReward", toString(ap)], a)
145148
146149
147-func ao (am) = makeString(["%s%d__totalAmountForPeriod", toString(am)], a)
150+func ar (ap) = makeString(["%s%d__totalAmountForPeriod", toString(ap)], a)
148151
149152
150-func ap () = "%s__lastPayoutInfo"
153+func as () = "%s__lastPayoutInfo"
151154
152155
153-func aq (am,ar,as) = makeString(["%d%d%d", toString(am), toString(ar), toString(as)], a)
156+func at (ap,au,av) = makeString(["%d%d%d", toString(ap), toString(au), toString(av)], a)
154157
155158
156-func at (am) = makeString(["%s%s%d__payouts__history", toString(am)], a)
159+func aw (ap) = makeString(["%s%s%d__payouts__history", toString(ap)], a)
157160
158161
159-func au (am) = makeString(["%s%d__totalWeightForPeriod", toString(am)], a)
162+func ax (ap) = makeString(["%s%d__totalWeightForPeriod", toString(ap)], a)
160163
161164
162-func av (am,aj) = makeString(["%s%d%s%d__paramByPeriod", toString(aj), "k", toString(am)], a)
165+func ay (ap,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(ap)], a)
163166
164167
165-func aw (am,aj) = makeString(["%s%d%s%d__paramByPeriod", toString(aj), "b", toString(am)], a)
168+func az (ap,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(ap)], a)
166169
167170
168-func ax (am,aj) = makeString(["%s%d%s%d__paramByPeriod", toString(aj), "weight", toString(am)], a)
171+func aA (ap,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(ap)], a)
169172
170173
171-func ay () = makeString(["%s%s", "config", "referralsContractAddress"], a)
174+func aB () = makeString(["%s%s", "config", "referralsContractAddress"], a)
172175
173176
174-let az = addressFromStringValue(l(ay()))
177+let aC = addressFromStringValue(l(aB()))
175178
176-func aA (aB,aC,aD,aE,aF,aG,aH) = {
177- let aI = makeString(["%s%s%s%s__history", aB, aC, toBase58String(aH.transactionId)], a)
178- let aJ = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aD), toString(aE), toString(aF), toString(aG)], a)
179- StringEntry(aI, aJ)
179+func aD (aE,aF,aG,aH,aI,aJ,aK) = {
180+ let aL = makeString(["%s%s%s%s__history", aE, aF, toBase58String(aK.transactionId)], a)
181+ let aM = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aG), toString(aH), toString(aI), toString(aJ)], a)
182+ StringEntry(aL, aM)
180183 }
181184
182185
183-func aK () = "%s__managerPublicKey"
186+func aN () = "%s__managerPublicKey"
184187
185188
186-func aL () = "%s__pendingManagerPublicKey"
189+func aO () = "%s__pendingManagerPublicKey"
187190
188191
189-func aM () = {
190- let aN = getString(aK())
191- if ($isInstanceOf(aN, "String"))
192+func aP () = {
193+ let aQ = getString(aN())
194+ if ($isInstanceOf(aQ, "String"))
192195 then {
193- let aO = aN
194- fromBase58String(aO)
196+ let aR = aQ
197+ fromBase58String(aR)
195198 }
196- else if ($isInstanceOf(aN, "Unit"))
199+ else if ($isInstanceOf(aQ, "Unit"))
197200 then unit
198201 else throw("Match error")
199202 }
200203
201204
202-func aP () = {
203- let aN = getString(aL())
204- if ($isInstanceOf(aN, "String"))
205+func aS () = {
206+ let aQ = getString(aO())
207+ if ($isInstanceOf(aQ, "String"))
205208 then {
206- let aO = aN
207- fromBase58String(aO)
209+ let aR = aQ
210+ fromBase58String(aR)
208211 }
209- else if ($isInstanceOf(aN, "Unit"))
212+ else if ($isInstanceOf(aQ, "Unit"))
210213 then unit
211214 else throw("Match error")
212215 }
213216
214217
215-func aQ (aH) = {
216- let aR = throw("Permission denied")
217- let aN = aM()
218- if ($isInstanceOf(aN, "ByteVector"))
218+func aT (aK) = {
219+ let aU = throw("Permission denied")
220+ let aQ = aP()
221+ if ($isInstanceOf(aQ, "ByteVector"))
219222 then {
220- let aS = aN
221- if ((aH.callerPublicKey == aS))
223+ let aV = aQ
224+ if ((aK.callerPublicKey == aV))
222225 then true
223- else aR
226+ else aU
224227 }
225- else if ($isInstanceOf(aN, "Unit"))
226- then if ((aH.caller == this))
228+ else if ($isInstanceOf(aQ, "Unit"))
229+ then if ((aK.caller == this))
227230 then true
228- else aR
231+ else aU
229232 else throw("Match error")
230233 }
231234
232235
233-func aT (aU,aV,am,aj) = {
234- let aW = ak(aj)
235- let aX = av(am, aj)
236- let aY = getInteger(aU, aX)
237- let aZ = ax(am, aj)
238- if (isDefined(aY))
236+func aW (aX,aY,ap,am) = {
237+ let aZ = an(am)
238+ let ba = ay(ap, am)
239+ let bb = getInteger(aX, ba)
240+ let bc = aA(ap, am)
241+ if (isDefined(bb))
239242 then {
240- let ba = value(aY)
241- let bb = value(getInteger(aU, aw(am, aj)))
242- let bc = ((ba * aV) + bb)
243- if ((bc > 0))
244- then $Tuple2((bc / c), [IntegerEntry(aW, am), IntegerEntry(aZ, bc)])
243+ let bd = value(bb)
244+ let be = value(getInteger(aX, az(ap, am)))
245+ let bf = ((bd * aY) + be)
246+ if ((bf > 0))
247+ then $Tuple2((bf / c), [IntegerEntry(aZ, ap), IntegerEntry(bc, bf)])
245248 else $Tuple2(0, nil)
246249 }
247250 else {
248- let bd = getInteger(this, aW)
249- if (if (isDefined(bd))
250- then (am >= value(bd))
251+ let bg = getInteger(this, aZ)
252+ if (if (isDefined(bg))
253+ then (ap >= value(bg))
251254 else false)
252255 then {
253- let be = value(bd)
254- let ba = value(getInteger(aU, av(be, aj)))
255- let bb = value(getInteger(aU, aw(be, aj)))
256- let bc = ((ba * aV) + bb)
257- if ((bc > 0))
258- then $Tuple2((bc / c), [IntegerEntry(aZ, bc)])
256+ let bh = value(bg)
257+ let bd = value(getInteger(aX, ay(bh, am)))
258+ let be = value(getInteger(aX, az(bh, am)))
259+ let bf = ((bd * aY) + be)
260+ if ((bf > 0))
261+ then $Tuple2((bf / c), [IntegerEntry(bc, bf)])
259262 else $Tuple2(0, nil)
260263 }
261264 else $Tuple2(0, nil)
263266 }
264267
265268
266-func bf (aU,aV,am,aj) = {
267- let aZ = ax(am, aj)
268- let bg = getInteger(aZ)
269- let aN = bg
270- if ($isInstanceOf(aN, "Unit"))
269+func bi (aX,aY,ap,am) = {
270+ let bc = aA(ap, am)
271+ let bj = getInteger(bc)
272+ let aQ = bj
273+ if ($isInstanceOf(aQ, "Unit"))
271274 then 0
272- else if ($isInstanceOf(aN, "Int"))
275+ else if ($isInstanceOf(aQ, "Int"))
273276 then {
274- let bc = aN
275- (bc / c)
277+ let bf = aQ
278+ (bf / c)
276279 }
277280 else throw("Match error")
278281 }
279282
280283
281-func bh (W,bi) = {
282- let i = makeString(["%s%s%s", "mapping", "user2num", bi], a)
283- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(W)), i), ((("User address " + bi) + " is not found in boosting contract data, key=") + i)))
284+func bk (Z,bl) = {
285+ let i = makeString(["%s%s%s", "mapping", "user2num", bl], a)
286+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), i), ((("User address " + bl) + " is not found in boosting contract data, key=") + i)))
284287 }
285288
286289
287-func bj () = h(af())
290+func bm () = h(ai())
288291
289292
290-func bk (bl,am,aC,bm,bn,bo) = {
291- let bp = invoke(this, "claimNextBatch", [bl, am, aC, bm, bn, bo], nil)
292- if ((bp == bp))
293+func bn (bo,ap,aF,bp,bq,br) = {
294+ let bs = invoke(this, "claimNextBatch", [bo, ap, aF, bp, bq, br], nil)
295+ if ((bs == bs))
293296 then {
294- let aN = bp
295- if ($isInstanceOf(aN, "(Int, Int, Int)"))
297+ let aQ = bs
298+ if ($isInstanceOf(aQ, "(Int, Int, Int)"))
296299 then {
297- let bq = aN
298- bq
300+ let bt = aQ
301+ bt
299302 }
300303 else throw("Incorrect invoke result")
301304 }
303306 }
304307
305308
306-func br (bl,aF,bs,bm,bt,bu) = {
307- let aU = Address(bl)
308- let aG = h(ah())
309- let bv = h(au(aF))
310- let aV = h(al(aF))
311- let bw = bf(aU, aV, aF, bs)
312- let bx = fraction(h(ao(aF)), bw, bv)
313- let by = fraction(h(an(aF)), bw, bv)
314- if (if ((0 >= bm))
309+func bu (bo,aI,bv,bp,bw,bx) = {
310+ let aX = Address(bo)
311+ let aJ = h(ak())
312+ let by = h(ax(aI))
313+ let aY = h(ao(aI))
314+ let bz = bi(aX, aY, aI, bv)
315+ let bA = fraction(h(ar(aI)), bz, by)
316+ let bB = fraction(h(aq(aI)), bz, by)
317+ if (if ((0 >= bp))
315318 then true
316- else ((aF + 1) >= aG))
317- then $Tuple3((aF + 1), (bt + bx), (bu + by))
318- else bk(bl, (aF + 1), bs, (bm - 1), (bt + bx), (bu + by))
319+ else ((aI + 1) >= aJ))
320+ then $Tuple3((aI + 1), (bw + bA), (bx + bB))
321+ else bn(bo, (aI + 1), bv, (bp - 1), (bw + bA), (bx + bB))
319322 }
320323
321324
322-func bz (bi,bA) = {
323- let Y = S()
324- let bB = bh(Y[P], bi)
325- let aF = if ((bA != unit))
326- then value(bA)
327- else h(ai(bB))
328- let bC = h(ah())
329- if ((aF >= bC))
325+func bC (bl,bD) = {
326+ let ab = V()
327+ let bE = bk(ab[S], bl)
328+ let aI = if ((bD != unit))
329+ then value(bD)
330+ else h(al(bE))
331+ let bF = h(ak())
332+ if ((aI >= bF))
330333 then throw("Nothing to claim")
331334 else {
332- let bl = fromBase58String(Y[P])
333- let bD = br(bl, aF, bB, b, 0, 0)
334- let am = bD._1
335- let aD = bD._2
336- let aE = bD._3
337- $Tuple6(am, aD, aE, bB, Y, bC)
335+ let bo = fromBase58String(ab[S])
336+ let bG = bu(bo, aI, bE, b, 0, 0)
337+ let ap = bG._1
338+ let aG = bG._2
339+ let aH = bG._3
340+ $Tuple6(ap, aG, aH, bE, ab, bF)
338341 }
339342 }
340343
341344
342-@Callable(aH)
343-func updateReferralActivity (bi,bE) = {
344- let bF = getString(az, J(bi))
345- let bG = if ((bF == unit))
345+@Callable(aK)
346+func updateReferralActivity (bl,bH) = {
347+ let bI = getString(aC, J(bl))
348+ let bJ = if ((bI == unit))
346349 then unit
347- else invoke(az, "updateReferralActivity", [z, bi, (bE >= C)], nil)
348- if ((bG == bG))
350+ else invoke(aC, "updateReferralActivity", [z, bl, (bH >= C)], nil)
351+ if ((bJ == bJ))
349352 then $Tuple2(nil, unit)
350353 else throw("Strict value is not equal to itself.")
351354 }
352355
353356
354357
355-@Callable(aH)
358+@Callable(aK)
356359 func finalizeHelper () = {
357- let bH = valueOrElse(getInteger(ag()), f)
358- let aF = h(ah())
359- let bs = h(ad())
360- let aG = h(ae())
361- let bI = valueOrElse(getInteger(X(), aa()), 0)
362- let bJ = au(aF)
363- let bv = h(au(aF))
364- let aV = h(al(aF))
365- if ((aF > aG))
360+ let bK = valueOrElse(getInteger(aj()), f)
361+ let aI = h(ak())
362+ let bv = h(ag())
363+ let aJ = h(ah())
364+ let bL = valueOrElse(getInteger(aa(), ad()), 0)
365+ let bM = ax(aI)
366+ let by = h(ax(aI))
367+ let aY = h(ao(aI))
368+ if ((aI > aJ))
366369 then $Tuple2(nil, false)
367- else if ((bH == f))
370+ else if ((bK == f))
368371 then {
369- let bK = aT(X(), aV, aF, bs)
370- let bw = bK._1
371- let bL = bK._2
372- let bM = (bv + bw)
373- let bN = if (((bI - 1) > bs))
374- then [IntegerEntry(ad(), (bs + 1))]
375- else [IntegerEntry(ag(), g), IntegerEntry(ad(), 0)]
376- $Tuple2((([IntegerEntry(bJ, bM)] ++ bN) ++ bL), true)
372+ let bN = aW(aa(), aY, aI, bv)
373+ let bz = bN._1
374+ let bO = bN._2
375+ let bP = (by + bz)
376+ let bQ = if (((bL - 1) > bv))
377+ then [IntegerEntry(ag(), (bv + 1))]
378+ else [IntegerEntry(aj(), g), IntegerEntry(ag(), 0)]
379+ $Tuple2((([IntegerEntry(bM, bP)] ++ bQ) ++ bO), true)
377380 }
378- else if ((bH == g))
381+ else if ((bK == g))
379382 then {
380- let bw = bf(X(), aV, aF, bs)
381- let bx = fraction(h(ao(aF)), bw, bv)
382- let by = fraction(h(an(aF)), bw, bv)
383- let bO = (by + bx)
384- let bi = getStringValue(X(), v(bs))
385- let bF = getString(az, J(bi))
386- let bG = if ((bF == unit))
383+ let bz = bi(aa(), aY, aI, bv)
384+ let bA = fraction(h(ar(aI)), bz, by)
385+ let bB = fraction(h(aq(aI)), bz, by)
386+ let bR = (bB + bA)
387+ let bl = getStringValue(aa(), v(bv))
388+ let bI = getString(aC, J(bl))
389+ let bJ = if ((bI == unit))
387390 then unit
388- else invoke(az, "updateReferralActivity", [z, bi, (bw >= C)], nil)
389- if ((bG == bG))
391+ else invoke(aC, "updateReferralActivity", [z, bl, (bz >= C)], nil)
392+ if ((bJ == bJ))
390393 then {
391- let bP = if (if ((bF == unit))
394+ let bS = if (if ((bI == unit))
392395 then true
393- else (C > bw))
396+ else (C > bz))
394397 then unit
395398 else {
396- let bQ = fraction(bO, F, c)
397- let bR = fraction(bO, I, c)
398- invoke(az, "incUnclaimed", [z, bi, bQ, bR], nil)
399+ let bT = fraction(bR, F, c)
400+ let bU = fraction(bR, I, c)
401+ invoke(aC, "incUnclaimed", [z, bl, bT, bU], nil)
399402 }
400- if ((bP == bP))
403+ if ((bS == bS))
401404 then {
402- let bN = if (((bI - 1) > bs))
403- then [IntegerEntry(ad(), (bs + 1))]
404- else [IntegerEntry(ah(), (aF + 1)), IntegerEntry(ad(), 0), DeleteEntry(ag())]
405- $Tuple2(bN, true)
405+ let bQ = if (((bL - 1) > bv))
406+ then [IntegerEntry(ag(), (bv + 1))]
407+ else [IntegerEntry(ak(), (aI + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
408+ $Tuple2(bQ, true)
406409 }
407410 else throw("Strict value is not equal to itself.")
408411 }
413416
414417
415418
416-@Callable(aH)
417-func finalizeWrapper (bS) = {
418- let bp = {
419- let bT = invoke(this, "finalizeHelper", nil, nil)
420- if ($isInstanceOf(bT, "Boolean"))
421- then bT
419+@Callable(aK)
420+func finalizeWrapper (bV) = {
421+ let bs = {
422+ let bW = invoke(this, "finalizeHelper", nil, nil)
423+ if ($isInstanceOf(bW, "Boolean"))
424+ then bW
422425 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
423426 }
424- if ((bp == bp))
425- then if (!(bp))
426- then if ((bS == q))
427+ if ((bs == bs))
428+ then if (!(bs))
429+ then if ((bV == q))
427430 then throw("Nothing to process")
428431 else $Tuple2(nil, unit)
429- else if ((bS > 0))
430- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bS - 1)], nil))
432+ else if ((bV > 0))
433+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bV - 1)], nil))
431434 else $Tuple2(nil, unit)
432435 else throw("Strict value is not equal to itself.")
433436 }
434437
435438
436439
437-@Callable(aH)
440+@Callable(aK)
438441 func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
439442
440443
441444
442-@Callable(aH)
445+@Callable(aK)
443446 func deposit () = {
444- let Y = S()
445- if ((aH.caller != Address(fromBase58String(Y[O]))))
447+ let ab = V()
448+ if ((aK.caller != Address(fromBase58String(ab[R]))))
446449 then throw("Wrong caller address")
447450 else {
448- let bU = value(value(aH.payments[0]).assetId)
449- if ((bU != fromBase58String(Y[N])))
451+ let bX = value(value(aK.payments[0]).assetId)
452+ if ((bX != fromBase58String(ab[Q])))
450453 then throw("Wrong payment asset")
451454 else {
452- let am = bj()
453- let bV = (height - j(Z()))
454- let bW = valueOrErrorMessage(getInteger(M, ab()), (("mandatory emission_contract." + ab()) + " is not defined"))
455- let bX = valueOrErrorMessage(getInteger(t, ac()), (("mandatory factory_contract." + ac()) + " is not defined"))
456- let bY = fraction((bV * bX), bW, d)
457- let bZ = invoke(M, "emit", [bY], nil)
458- if ((bZ == bZ))
455+ let ap = bm()
456+ let bY = (height - j(ac()))
457+ let bZ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
458+ let ca = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
459+ let cb = fraction((bY * ca), bZ, d)
460+ let cc = invoke(P, "emit", [cb], nil)
461+ if ((cc == cc))
459462 then {
460- let ca = value(aH.payments[0]).amount
461- let cb = aq(am, ca, bY)
462-[IntegerEntry(ae(), am), IntegerEntry(al(am), height), IntegerEntry(an(am), bY), IntegerEntry(Z(), height), IntegerEntry(ao(am), ca), IntegerEntry(af(), (am + 1)), StringEntry(ap(), cb), StringEntry(at(am), cb)]
463+ let cd = value(aK.payments[0]).amount
464+ let ce = at(ap, cd, cb)
465+[IntegerEntry(ah(), ap), IntegerEntry(ao(ap), height), IntegerEntry(aq(ap), cb), IntegerEntry(ac(), height), IntegerEntry(ar(ap), cd), IntegerEntry(ai(), (ap + 1)), StringEntry(as(), ce), StringEntry(aw(ap), ce)]
463466 }
464467 else throw("Strict value is not equal to itself.")
465468 }
468471
469472
470473
471-@Callable(aH)
472-func claimNextBatch (bl,aF,bs,bm,bn,bo) = if ((aH.caller != this))
474+@Callable(aK)
475+func claimNextBatch (bo,aI,bv,bp,bq,br) = if ((aK.caller != this))
473476 then throw("Should be called by this script only")
474477 else {
475- let cc = br(bl, aF, bs, bm, bn, bo)
476- $Tuple2(nil, cc)
478+ let cf = bu(bo, aI, bv, bp, bq, br)
479+ $Tuple2(nil, cf)
477480 }
478481
479482
480483
481-@Callable(aH)
484+@Callable(aK)
482485 func claimReward () = {
483- let cd = toString(aH.caller)
484- let ce = bz(cd, unit)
485- let am = ce._1
486- let aD = ce._2
487- let aE = ce._3
488- let bB = ce._4
489- let Y = ce._5
490- let bC = ce._6
491- $Tuple2([IntegerEntry(ai(bB), am), ScriptTransfer(aH.caller, (aD + aE), fromBase58String(Y[N])), aA("claim", cd, aD, aE, am, bC, aH)], [aD, aE])
486+ let cg = toString(aK.caller)
487+ let ch = bC(cg, unit)
488+ let ap = ch._1
489+ let aG = ch._2
490+ let aH = ch._3
491+ let bE = ch._4
492+ let ab = ch._5
493+ let bF = ch._6
494+ let ci = {
495+ let bW = invoke(aC, "claim", [z], nil)
496+ if ($isInstanceOf(bW, "Int"))
497+ then bW
498+ else throw(($getType(invoke(aC, "claim", [z], nil)) + " couldn't be cast to Int"))
499+ }
500+ $Tuple2([IntegerEntry(al(bE), ap), ScriptTransfer(aK.caller, (aG + aH), fromBase58String(ab[Q])), aD("claim", cg, (aG + ci), aH, ap, bF, aK)], [(aG + ci), aH])
492501 }
493502
494503
495504
496-@Callable(aH)
497-func claimRewardREADONLY (cd) = {
498- let cf = bz(cd, unit)
499- let cg = (cf._2 + cf._3)
500- $Tuple2(nil, cg)
505+@Callable(aK)
506+func claimRewardREADONLY (cg) = {
507+ let cj = bC(cg, unit)
508+ let ck = valueOrElse(getInteger(aC, L(z, cg)), 0)
509+ let cl = ((cj._2 + cj._3) + ck)
510+ $Tuple2(nil, cl)
501511 }
502512
503513
504514
505-@Callable(aH)
506-func claimRewardPaginatedREADONLY (cd,bA) = {
507- let ch = bz(cd, if ((0 > bA))
515+@Callable(aK)
516+func claimRewardPaginatedREADONLY (cg,bD) = {
517+ let cm = bC(cg, if ((0 > bD))
508518 then unit
509- else bA)
510- let am = ch._1
511- let ci = ch._2
512- let cj = ch._3
513- let cg = (ci + cj)
514- $Tuple2(nil, $Tuple2(cg, am))
519+ else bD)
520+ let ap = cm._1
521+ let cn = cm._2
522+ let co = cm._3
523+ let cl = (cn + co)
524+ $Tuple2(nil, $Tuple2(cl, ap))
515525 }
516526
517527
518528
519-@Callable(aH)
520-func claimRewardDetailedREADONLY (cd) = {
521- let ck = bz(cd, unit)
522- let cl = ck._1
523- let ci = ck._2
524- let cj = ck._3
525- $Tuple2(nil, makeString(["%d%d%d", toString((ci + cj)), toString(ci), toString(cj)], a))
529+@Callable(aK)
530+func claimRewardDetailedREADONLY (cg) = {
531+ let cp = bC(cg, unit)
532+ let cq = cp._1
533+ let cn = cp._2
534+ let co = cp._3
535+ $Tuple2(nil, makeString(["%d%d%d", toString((cn + co)), toString(cn), toString(co)], a))
526536 }
527537
528538
529539
530-@Callable(aH)
531-func claimRewardDetailedPaginatedREADONLY (cd,bA) = {
532- let cm = bz(cd, if ((0 > bA))
540+@Callable(aK)
541+func claimRewardDetailedPaginatedREADONLY (cg,bD) = {
542+ let cr = bC(cg, if ((0 > bD))
533543 then unit
534- else bA)
535- let am = cm._1
536- let ci = cm._2
537- let cj = cm._3
538- $Tuple2(nil, $Tuple2(makeString(["%d%d%d", toString((ci + cj)), toString(ci), toString(cj)], a), am))
544+ else bD)
545+ let ap = cr._1
546+ let cn = cr._2
547+ let co = cr._3
548+ $Tuple2(nil, $Tuple2(makeString(["%d%d%d", toString((cn + co)), toString(cn), toString(co)], a), ap))
539549 }
540550
541551
542552
543-@Callable(aH)
544-func latestFinalizedPeriodREADONLY (cd) = $Tuple2(nil, valueOrElse(getInteger(this, ae()), -1))
553+@Callable(aK)
554+func latestFinalizedPeriodREADONLY (cg) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
545555
546556
547557
548-@Callable(aH)
549-func latestFinalizedPeriodInfoREADONLY (cd) = $Tuple2(nil, k(ap()))
558+@Callable(aK)
559+func latestFinalizedPeriodInfoREADONLY (cg) = $Tuple2(nil, k(as()))
550560
551561
552562
553-@Callable(aH)
554-func calcGwxParamsREADONLY (cn,co,cp) = {
555- let cq = (co + cp)
556- let cr = -(fraction(cn, c, cp))
557- let cs = (fraction(cn, c, cp) * cq)
558- $Tuple2(nil, [cr, cs, bj()])
563+@Callable(aK)
564+func calcGwxParamsREADONLY (cs,ct,cu) = {
565+ let cv = (ct + cu)
566+ let cw = -(fraction(cs, c, cu))
567+ let cx = (fraction(cs, c, cu) * cv)
568+ $Tuple2(nil, [cw, cx, bm()])
559569 }
560570
561571
562572
563-@Callable(aH)
564-func calcGwxAmountStartREADONLY (ct,cu,cv) = {
565- let cw = fraction(cu, d, cv)
566- let bE = fraction(ct, cw, d)
567- $Tuple2(nil, [bE])
573+@Callable(aK)
574+func calcGwxAmountStartREADONLY (cy,cz,cA) = {
575+ let cB = fraction(cz, d, cA)
576+ let bH = fraction(cy, cB, d)
577+ $Tuple2(nil, [bH])
568578 }
569579
570580
571581
572-@Callable(aH)
573-func constructor (U,V,W,q) = if ((this != aH.caller))
582+@Callable(aK)
583+func constructor (X,Y,Z,q) = if ((this != aK.caller))
574584 then throw("not authorized")
575- else [StringEntry(R(), T(U, V, W, q))]
585+ else [StringEntry(U(), W(X, Y, Z, q))]
576586
577587
578588
579-@Callable(aH)
580-func constructorV2 (cx) = if ((this != aH.caller))
589+@Callable(aK)
590+func constructorV2 (cC) = if ((this != aK.caller))
581591 then throw("not authorized")
582- else [StringEntry(r(), cx)]
592+ else [StringEntry(r(), cC)]
583593
584594
585595
586-@Callable(aH)
587-func constructorV3 (cy) = if ((this != aH.caller))
596+@Callable(aK)
597+func constructorV3 (cD) = if ((this != aK.caller))
588598 then throw("not authorized")
589599 else {
590- let cz = if (isDefined(getInteger(this, ae())))
600+ let cE = if (isDefined(getInteger(this, ah())))
591601 then nil
592- else [IntegerEntry(ae(), -1)]
593- (cz :+ StringEntry(u(), cy))
602+ else [IntegerEntry(ah(), -1)]
603+ (cE :+ StringEntry(u(), cD))
594604 }
595605
596606
597607
598-@Callable(aH)
599-func onEmissionForGwxStart () = if ((aH.caller != t))
608+@Callable(aK)
609+func onEmissionForGwxStart () = if ((aK.caller != t))
600610 then throw("permissions denied")
601- else [IntegerEntry(Z(), height)]
611+ else [IntegerEntry(ac(), height)]
602612
603613
604614
605-@Callable(aH)
606-func latestPeriodEmissionRewardsREADONLY (cd) = {
607- let am = bj()
608- $Tuple2(nil, [h(an(am))])
615+@Callable(aK)
616+func latestPeriodEmissionRewardsREADONLY (cg) = {
617+ let ap = bm()
618+ $Tuple2(nil, [h(aq(ap))])
609619 }
610620
611621
612622
613-@Callable(aH)
614-func calcD (cA,cB,cC,cD,cE) = {
615- let cF = toBigInt(2)
616- let cG = parseBigIntValue(cD)
617- let cH = parseBigIntValue(cE)
618- let cI = parseBigIntValue(cA)
619- let cJ = parseBigIntValue(cB)
620- let cK = (parseBigIntValue(cC) * cG)
621- let aO = (cI + cJ)
622- if ((aO == e))
623+@Callable(aK)
624+func calcD (cF,cG,cH,cI,cJ) = {
625+ let cK = toBigInt(2)
626+ let cL = parseBigIntValue(cI)
627+ let cM = parseBigIntValue(cJ)
628+ let cN = parseBigIntValue(cF)
629+ let cO = parseBigIntValue(cG)
630+ let cP = (parseBigIntValue(cH) * cL)
631+ let aR = (cN + cO)
632+ if ((aR == e))
623633 then $Tuple2(nil, toString(e))
624634 else {
625- let cL = (cK * cF)
626- let cM = [1, 2, 3, 4, 5, 6, 7]
627- func cN (cO,cP) = {
628- let cQ = cO
629- let cR = cQ._1
630- let cS = cQ._2
631- let cT = (((cR * cR) * cR) / (((cI * cJ) * cF) * cF))
632- let cU = (((((cL * aO) / cG) + (cT * cF)) * cR) / ((((cL - cG) * cR) / cG) + ((cF + toBigInt(1)) * cT)))
633- $Tuple2(cU, cR)
635+ let cQ = (cP * cK)
636+ let cR = [1, 2, 3, 4, 5, 6, 7]
637+ func cS (cT,cU) = {
638+ let cV = cT
639+ let cW = cV._1
640+ let cX = cV._2
641+ let cY = (((cW * cW) * cW) / (((cN * cO) * cK) * cK))
642+ let cZ = (((((cQ * aR) / cL) + (cY * cK)) * cW) / ((((cQ - cL) * cW) / cL) + ((cK + toBigInt(1)) * cY)))
643+ $Tuple2(cZ, cW)
634644 }
635645
636- let cV = {
637- let cW = cM
638- let cX = size(cW)
639- let cY = $Tuple2(aO, unit)
640- func cZ (da,db) = if ((db >= cX))
641- then da
642- else cN(da, cW[db])
646+ let da = {
647+ let db = cR
648+ let dc = size(db)
649+ let dd = $Tuple2(aR, unit)
650+ func de (df,dg) = if ((dg >= dc))
651+ then df
652+ else cS(df, db[dg])
643653
644- func dc (da,db) = if ((db >= cX))
645- then da
654+ func dh (df,dg) = if ((dg >= dc))
655+ then df
646656 else throw("List size exceeds 7")
647657
648- dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7)
658+ dh(de(de(de(de(de(de(de(dd, 0), 1), 2), 3), 4), 5), 6), 7)
649659 }
650- let cU = cV._1
651- let cS = cV._2
652- let dd = m((cU - value(cS)))
653- if ((cH >= dd))
654- then $Tuple2(nil, toString(cU))
655- else throw(("D calculation error, dDiff = " + toString(dd)))
660+ let cZ = da._1
661+ let cX = da._2
662+ let di = m((cZ - value(cX)))
663+ if ((cM >= di))
664+ then $Tuple2(nil, toString(cZ))
665+ else throw(("D calculation error, dDiff = " + toString(di)))
656666 }
657667 }
658668
659669
660670
661-@Callable(aH)
662-func setManager (de) = {
663- let df = aQ(aH)
664- if ((df == df))
671+@Callable(aK)
672+func setManager (dj) = {
673+ let dk = aT(aK)
674+ if ((dk == dk))
665675 then {
666- let dg = fromBase58String(de)
667- if ((dg == dg))
668- then [StringEntry(aL(), de)]
676+ let dl = fromBase58String(dj)
677+ if ((dl == dl))
678+ then [StringEntry(aO(), dj)]
669679 else throw("Strict value is not equal to itself.")
670680 }
671681 else throw("Strict value is not equal to itself.")
673683
674684
675685
676-@Callable(aH)
686+@Callable(aK)
677687 func confirmManager () = {
678- let dh = aP()
679- let di = if (isDefined(dh))
688+ let dm = aS()
689+ let dn = if (isDefined(dm))
680690 then true
681691 else throw("No pending manager")
682- if ((di == di))
692+ if ((dn == dn))
683693 then {
684- let dj = if ((aH.callerPublicKey == value(dh)))
694+ let do = if ((aK.callerPublicKey == value(dm)))
685695 then true
686696 else throw("You are not pending manager")
687- if ((dj == dj))
688- then [StringEntry(aK(), toBase58String(value(dh))), DeleteEntry(aL())]
697+ if ((do == do))
698+ then [StringEntry(aN(), toBase58String(value(dm))), DeleteEntry(aO())]
689699 else throw("Strict value is not equal to itself.")
690700 }
691701 else throw("Strict value is not equal to itself.")
692702 }
693703
694704
695-@Verifier(dk)
696-func dl () = {
697- let dm = {
698- let aN = aM()
699- if ($isInstanceOf(aN, "ByteVector"))
705+@Verifier(dp)
706+func dq () = {
707+ let dr = {
708+ let aQ = aP()
709+ if ($isInstanceOf(aQ, "ByteVector"))
700710 then {
701- let aS = aN
702- aS
711+ let aV = aQ
712+ aV
703713 }
704- else if ($isInstanceOf(aN, "Unit"))
705- then dk.senderPublicKey
714+ else if ($isInstanceOf(aQ, "Unit"))
715+ then dp.senderPublicKey
706716 else throw("Match error")
707717 }
708- sigVerify(dk.bodyBytes, dk.proofs[0], dm)
718+ sigVerify(dp.bodyBytes, dp.proofs[0], dr)
709719 }
710720
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 26
77
88 let c = 1000
99
1010 let d = 100000000
1111
1212 let e = toBigInt(0)
1313
1414 let f = 0
1515
1616 let g = 1
1717
1818 func h (i) = valueOrElse(getInteger(this, i), 0)
1919
2020
2121 func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined"))
2222
2323
2424 func k (i) = valueOrElse(getString(this, i), "")
2525
2626
2727 func l (i) = valueOrErrorMessage(getString(this, i), (("mandatory this." + i) + " is not defined"))
2828
2929
3030 func m (n) = if ((e > n))
3131 then -(n)
3232 else n
3333
3434
3535 let o = "%s__maxDepth"
3636
3737 let p = 30
3838
3939 let q = valueOrElse(getInteger(this, o), p)
4040
4141 func r () = "%s%s__config__factoryAddress"
4242
4343
4444 let s = l(r())
4545
4646 let t = addressFromStringValue(s)
4747
4848 func u () = "%s%s__config__emissionAddress"
4949
5050
5151 func v (w) = makeString(["%s%s%s", "mapping", "num2user", toString(w)], a)
5252
5353
5454 let x = makeString(["%s%s", "referral", "programName"], a)
5555
5656 let y = "wxlock"
5757
5858 let z = valueOrElse(getString(this, x), y)
5959
6060 let A = makeString(["%s%s", "referral", "minGWxAmount"], a)
6161
6262 let B = (500 * d)
6363
6464 let C = valueOrElse(getInteger(this, A), B)
6565
6666 let D = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
6767
6868 let E = 50
6969
7070 let F = valueOrElse(getInteger(this, D), E)
7171
7272 let G = makeString(["%s%s", "referral", "referralRewardPermille"], a)
7373
7474 let H = 50
7575
7676 let I = valueOrElse(getInteger(this, G), H)
7777
7878 func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
7979
8080
81-let L = l(u())
82-
83-let M = addressFromStringValue(L)
84-
85-let N = 1
86-
87-let O = 2
88-
89-let P = 3
90-
91-let Q = 4
92-
93-func R () = "%s__config"
81+func L (M,N) = makeString(["%s%s%s%s", "unclaimedReferral", M, N], a)
9482
9583
96-func S () = split(l(R()), a)
84+let O = l(u())
85+
86+let P = addressFromStringValue(O)
87+
88+let Q = 1
89+
90+let R = 2
91+
92+let S = 3
93+
94+let T = 4
95+
96+func U () = "%s__config"
9797
9898
99-func T (U,V,W,q) = makeString(["%s%s%s%d", U, V, W, toString(q)], a)
99+func V () = split(l(U()), a)
100100
101101
102-func X () = {
103- let Y = S()
104- valueOrErrorMessage(addressFromString(Y[P]), "boosting contract address is not defined")
102+func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
103+
104+
105+func aa () = {
106+ let ab = V()
107+ valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
105108 }
106109
107110
108-func Z () = "%s%s__gwxRewardEmissionPart__startHeight"
111+func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
109112
110113
111-func aa () = "%s__nextUserNum"
114+func ad () = "%s__nextUserNum"
112115
113116
114-func ab () = "%s%s__ratePerBlock__current"
117+func ae () = "%s%s__ratePerBlock__current"
115118
116119
117-func ac () = "%s%s__poolWeight__GWXvirtualPOOL"
120+func af () = "%s%s__poolWeight__GWXvirtualPOOL"
118121
119122
120-func ad () = "%s__nextProcessedUser"
123+func ag () = "%s__nextProcessedUser"
121124
122125
123-func ae () = "%s__latestPeriod"
126+func ah () = "%s__latestPeriod"
124127
125128
126-func af () = "%s__nextPeriod"
129+func ai () = "%s__nextPeriod"
127130
128131
129-func ag () = "%s__processingStage"
132+func aj () = "%s__processingStage"
130133
131134
132-func ah () = "%s__nextProcessedPeriod"
135+func ak () = "%s__nextProcessedPeriod"
133136
134137
135-func ai (aj) = makeString(["%s%d__nextClaimedPeriod", toString(aj)], a)
138+func al (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
136139
137140
138-func ak (aj) = makeString(["%s%d__lastProcessedPeriod", toString(aj)], a)
141+func an (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
139142
140143
141-func al (am) = makeString(["%s%d__startHeightForPeriod", toString(am)], a)
144+func ao (ap) = makeString(["%s%d__startHeightForPeriod", toString(ap)], a)
142145
143146
144-func an (am) = makeString(["%s%d__auxEmissionReward", toString(am)], a)
147+func aq (ap) = makeString(["%s%d__auxEmissionReward", toString(ap)], a)
145148
146149
147-func ao (am) = makeString(["%s%d__totalAmountForPeriod", toString(am)], a)
150+func ar (ap) = makeString(["%s%d__totalAmountForPeriod", toString(ap)], a)
148151
149152
150-func ap () = "%s__lastPayoutInfo"
153+func as () = "%s__lastPayoutInfo"
151154
152155
153-func aq (am,ar,as) = makeString(["%d%d%d", toString(am), toString(ar), toString(as)], a)
156+func at (ap,au,av) = makeString(["%d%d%d", toString(ap), toString(au), toString(av)], a)
154157
155158
156-func at (am) = makeString(["%s%s%d__payouts__history", toString(am)], a)
159+func aw (ap) = makeString(["%s%s%d__payouts__history", toString(ap)], a)
157160
158161
159-func au (am) = makeString(["%s%d__totalWeightForPeriod", toString(am)], a)
162+func ax (ap) = makeString(["%s%d__totalWeightForPeriod", toString(ap)], a)
160163
161164
162-func av (am,aj) = makeString(["%s%d%s%d__paramByPeriod", toString(aj), "k", toString(am)], a)
165+func ay (ap,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(ap)], a)
163166
164167
165-func aw (am,aj) = makeString(["%s%d%s%d__paramByPeriod", toString(aj), "b", toString(am)], a)
168+func az (ap,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(ap)], a)
166169
167170
168-func ax (am,aj) = makeString(["%s%d%s%d__paramByPeriod", toString(aj), "weight", toString(am)], a)
171+func aA (ap,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(ap)], a)
169172
170173
171-func ay () = makeString(["%s%s", "config", "referralsContractAddress"], a)
174+func aB () = makeString(["%s%s", "config", "referralsContractAddress"], a)
172175
173176
174-let az = addressFromStringValue(l(ay()))
177+let aC = addressFromStringValue(l(aB()))
175178
176-func aA (aB,aC,aD,aE,aF,aG,aH) = {
177- let aI = makeString(["%s%s%s%s__history", aB, aC, toBase58String(aH.transactionId)], a)
178- let aJ = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aD), toString(aE), toString(aF), toString(aG)], a)
179- StringEntry(aI, aJ)
179+func aD (aE,aF,aG,aH,aI,aJ,aK) = {
180+ let aL = makeString(["%s%s%s%s__history", aE, aF, toBase58String(aK.transactionId)], a)
181+ let aM = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aG), toString(aH), toString(aI), toString(aJ)], a)
182+ StringEntry(aL, aM)
180183 }
181184
182185
183-func aK () = "%s__managerPublicKey"
186+func aN () = "%s__managerPublicKey"
184187
185188
186-func aL () = "%s__pendingManagerPublicKey"
189+func aO () = "%s__pendingManagerPublicKey"
187190
188191
189-func aM () = {
190- let aN = getString(aK())
191- if ($isInstanceOf(aN, "String"))
192+func aP () = {
193+ let aQ = getString(aN())
194+ if ($isInstanceOf(aQ, "String"))
192195 then {
193- let aO = aN
194- fromBase58String(aO)
196+ let aR = aQ
197+ fromBase58String(aR)
195198 }
196- else if ($isInstanceOf(aN, "Unit"))
199+ else if ($isInstanceOf(aQ, "Unit"))
197200 then unit
198201 else throw("Match error")
199202 }
200203
201204
202-func aP () = {
203- let aN = getString(aL())
204- if ($isInstanceOf(aN, "String"))
205+func aS () = {
206+ let aQ = getString(aO())
207+ if ($isInstanceOf(aQ, "String"))
205208 then {
206- let aO = aN
207- fromBase58String(aO)
209+ let aR = aQ
210+ fromBase58String(aR)
208211 }
209- else if ($isInstanceOf(aN, "Unit"))
212+ else if ($isInstanceOf(aQ, "Unit"))
210213 then unit
211214 else throw("Match error")
212215 }
213216
214217
215-func aQ (aH) = {
216- let aR = throw("Permission denied")
217- let aN = aM()
218- if ($isInstanceOf(aN, "ByteVector"))
218+func aT (aK) = {
219+ let aU = throw("Permission denied")
220+ let aQ = aP()
221+ if ($isInstanceOf(aQ, "ByteVector"))
219222 then {
220- let aS = aN
221- if ((aH.callerPublicKey == aS))
223+ let aV = aQ
224+ if ((aK.callerPublicKey == aV))
222225 then true
223- else aR
226+ else aU
224227 }
225- else if ($isInstanceOf(aN, "Unit"))
226- then if ((aH.caller == this))
228+ else if ($isInstanceOf(aQ, "Unit"))
229+ then if ((aK.caller == this))
227230 then true
228- else aR
231+ else aU
229232 else throw("Match error")
230233 }
231234
232235
233-func aT (aU,aV,am,aj) = {
234- let aW = ak(aj)
235- let aX = av(am, aj)
236- let aY = getInteger(aU, aX)
237- let aZ = ax(am, aj)
238- if (isDefined(aY))
236+func aW (aX,aY,ap,am) = {
237+ let aZ = an(am)
238+ let ba = ay(ap, am)
239+ let bb = getInteger(aX, ba)
240+ let bc = aA(ap, am)
241+ if (isDefined(bb))
239242 then {
240- let ba = value(aY)
241- let bb = value(getInteger(aU, aw(am, aj)))
242- let bc = ((ba * aV) + bb)
243- if ((bc > 0))
244- then $Tuple2((bc / c), [IntegerEntry(aW, am), IntegerEntry(aZ, bc)])
243+ let bd = value(bb)
244+ let be = value(getInteger(aX, az(ap, am)))
245+ let bf = ((bd * aY) + be)
246+ if ((bf > 0))
247+ then $Tuple2((bf / c), [IntegerEntry(aZ, ap), IntegerEntry(bc, bf)])
245248 else $Tuple2(0, nil)
246249 }
247250 else {
248- let bd = getInteger(this, aW)
249- if (if (isDefined(bd))
250- then (am >= value(bd))
251+ let bg = getInteger(this, aZ)
252+ if (if (isDefined(bg))
253+ then (ap >= value(bg))
251254 else false)
252255 then {
253- let be = value(bd)
254- let ba = value(getInteger(aU, av(be, aj)))
255- let bb = value(getInteger(aU, aw(be, aj)))
256- let bc = ((ba * aV) + bb)
257- if ((bc > 0))
258- then $Tuple2((bc / c), [IntegerEntry(aZ, bc)])
256+ let bh = value(bg)
257+ let bd = value(getInteger(aX, ay(bh, am)))
258+ let be = value(getInteger(aX, az(bh, am)))
259+ let bf = ((bd * aY) + be)
260+ if ((bf > 0))
261+ then $Tuple2((bf / c), [IntegerEntry(bc, bf)])
259262 else $Tuple2(0, nil)
260263 }
261264 else $Tuple2(0, nil)
262265 }
263266 }
264267
265268
266-func bf (aU,aV,am,aj) = {
267- let aZ = ax(am, aj)
268- let bg = getInteger(aZ)
269- let aN = bg
270- if ($isInstanceOf(aN, "Unit"))
269+func bi (aX,aY,ap,am) = {
270+ let bc = aA(ap, am)
271+ let bj = getInteger(bc)
272+ let aQ = bj
273+ if ($isInstanceOf(aQ, "Unit"))
271274 then 0
272- else if ($isInstanceOf(aN, "Int"))
275+ else if ($isInstanceOf(aQ, "Int"))
273276 then {
274- let bc = aN
275- (bc / c)
277+ let bf = aQ
278+ (bf / c)
276279 }
277280 else throw("Match error")
278281 }
279282
280283
281-func bh (W,bi) = {
282- let i = makeString(["%s%s%s", "mapping", "user2num", bi], a)
283- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(W)), i), ((("User address " + bi) + " is not found in boosting contract data, key=") + i)))
284+func bk (Z,bl) = {
285+ let i = makeString(["%s%s%s", "mapping", "user2num", bl], a)
286+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), i), ((("User address " + bl) + " is not found in boosting contract data, key=") + i)))
284287 }
285288
286289
287-func bj () = h(af())
290+func bm () = h(ai())
288291
289292
290-func bk (bl,am,aC,bm,bn,bo) = {
291- let bp = invoke(this, "claimNextBatch", [bl, am, aC, bm, bn, bo], nil)
292- if ((bp == bp))
293+func bn (bo,ap,aF,bp,bq,br) = {
294+ let bs = invoke(this, "claimNextBatch", [bo, ap, aF, bp, bq, br], nil)
295+ if ((bs == bs))
293296 then {
294- let aN = bp
295- if ($isInstanceOf(aN, "(Int, Int, Int)"))
297+ let aQ = bs
298+ if ($isInstanceOf(aQ, "(Int, Int, Int)"))
296299 then {
297- let bq = aN
298- bq
300+ let bt = aQ
301+ bt
299302 }
300303 else throw("Incorrect invoke result")
301304 }
302305 else throw("Strict value is not equal to itself.")
303306 }
304307
305308
306-func br (bl,aF,bs,bm,bt,bu) = {
307- let aU = Address(bl)
308- let aG = h(ah())
309- let bv = h(au(aF))
310- let aV = h(al(aF))
311- let bw = bf(aU, aV, aF, bs)
312- let bx = fraction(h(ao(aF)), bw, bv)
313- let by = fraction(h(an(aF)), bw, bv)
314- if (if ((0 >= bm))
309+func bu (bo,aI,bv,bp,bw,bx) = {
310+ let aX = Address(bo)
311+ let aJ = h(ak())
312+ let by = h(ax(aI))
313+ let aY = h(ao(aI))
314+ let bz = bi(aX, aY, aI, bv)
315+ let bA = fraction(h(ar(aI)), bz, by)
316+ let bB = fraction(h(aq(aI)), bz, by)
317+ if (if ((0 >= bp))
315318 then true
316- else ((aF + 1) >= aG))
317- then $Tuple3((aF + 1), (bt + bx), (bu + by))
318- else bk(bl, (aF + 1), bs, (bm - 1), (bt + bx), (bu + by))
319+ else ((aI + 1) >= aJ))
320+ then $Tuple3((aI + 1), (bw + bA), (bx + bB))
321+ else bn(bo, (aI + 1), bv, (bp - 1), (bw + bA), (bx + bB))
319322 }
320323
321324
322-func bz (bi,bA) = {
323- let Y = S()
324- let bB = bh(Y[P], bi)
325- let aF = if ((bA != unit))
326- then value(bA)
327- else h(ai(bB))
328- let bC = h(ah())
329- if ((aF >= bC))
325+func bC (bl,bD) = {
326+ let ab = V()
327+ let bE = bk(ab[S], bl)
328+ let aI = if ((bD != unit))
329+ then value(bD)
330+ else h(al(bE))
331+ let bF = h(ak())
332+ if ((aI >= bF))
330333 then throw("Nothing to claim")
331334 else {
332- let bl = fromBase58String(Y[P])
333- let bD = br(bl, aF, bB, b, 0, 0)
334- let am = bD._1
335- let aD = bD._2
336- let aE = bD._3
337- $Tuple6(am, aD, aE, bB, Y, bC)
335+ let bo = fromBase58String(ab[S])
336+ let bG = bu(bo, aI, bE, b, 0, 0)
337+ let ap = bG._1
338+ let aG = bG._2
339+ let aH = bG._3
340+ $Tuple6(ap, aG, aH, bE, ab, bF)
338341 }
339342 }
340343
341344
342-@Callable(aH)
343-func updateReferralActivity (bi,bE) = {
344- let bF = getString(az, J(bi))
345- let bG = if ((bF == unit))
345+@Callable(aK)
346+func updateReferralActivity (bl,bH) = {
347+ let bI = getString(aC, J(bl))
348+ let bJ = if ((bI == unit))
346349 then unit
347- else invoke(az, "updateReferralActivity", [z, bi, (bE >= C)], nil)
348- if ((bG == bG))
350+ else invoke(aC, "updateReferralActivity", [z, bl, (bH >= C)], nil)
351+ if ((bJ == bJ))
349352 then $Tuple2(nil, unit)
350353 else throw("Strict value is not equal to itself.")
351354 }
352355
353356
354357
355-@Callable(aH)
358+@Callable(aK)
356359 func finalizeHelper () = {
357- let bH = valueOrElse(getInteger(ag()), f)
358- let aF = h(ah())
359- let bs = h(ad())
360- let aG = h(ae())
361- let bI = valueOrElse(getInteger(X(), aa()), 0)
362- let bJ = au(aF)
363- let bv = h(au(aF))
364- let aV = h(al(aF))
365- if ((aF > aG))
360+ let bK = valueOrElse(getInteger(aj()), f)
361+ let aI = h(ak())
362+ let bv = h(ag())
363+ let aJ = h(ah())
364+ let bL = valueOrElse(getInteger(aa(), ad()), 0)
365+ let bM = ax(aI)
366+ let by = h(ax(aI))
367+ let aY = h(ao(aI))
368+ if ((aI > aJ))
366369 then $Tuple2(nil, false)
367- else if ((bH == f))
370+ else if ((bK == f))
368371 then {
369- let bK = aT(X(), aV, aF, bs)
370- let bw = bK._1
371- let bL = bK._2
372- let bM = (bv + bw)
373- let bN = if (((bI - 1) > bs))
374- then [IntegerEntry(ad(), (bs + 1))]
375- else [IntegerEntry(ag(), g), IntegerEntry(ad(), 0)]
376- $Tuple2((([IntegerEntry(bJ, bM)] ++ bN) ++ bL), true)
372+ let bN = aW(aa(), aY, aI, bv)
373+ let bz = bN._1
374+ let bO = bN._2
375+ let bP = (by + bz)
376+ let bQ = if (((bL - 1) > bv))
377+ then [IntegerEntry(ag(), (bv + 1))]
378+ else [IntegerEntry(aj(), g), IntegerEntry(ag(), 0)]
379+ $Tuple2((([IntegerEntry(bM, bP)] ++ bQ) ++ bO), true)
377380 }
378- else if ((bH == g))
381+ else if ((bK == g))
379382 then {
380- let bw = bf(X(), aV, aF, bs)
381- let bx = fraction(h(ao(aF)), bw, bv)
382- let by = fraction(h(an(aF)), bw, bv)
383- let bO = (by + bx)
384- let bi = getStringValue(X(), v(bs))
385- let bF = getString(az, J(bi))
386- let bG = if ((bF == unit))
383+ let bz = bi(aa(), aY, aI, bv)
384+ let bA = fraction(h(ar(aI)), bz, by)
385+ let bB = fraction(h(aq(aI)), bz, by)
386+ let bR = (bB + bA)
387+ let bl = getStringValue(aa(), v(bv))
388+ let bI = getString(aC, J(bl))
389+ let bJ = if ((bI == unit))
387390 then unit
388- else invoke(az, "updateReferralActivity", [z, bi, (bw >= C)], nil)
389- if ((bG == bG))
391+ else invoke(aC, "updateReferralActivity", [z, bl, (bz >= C)], nil)
392+ if ((bJ == bJ))
390393 then {
391- let bP = if (if ((bF == unit))
394+ let bS = if (if ((bI == unit))
392395 then true
393- else (C > bw))
396+ else (C > bz))
394397 then unit
395398 else {
396- let bQ = fraction(bO, F, c)
397- let bR = fraction(bO, I, c)
398- invoke(az, "incUnclaimed", [z, bi, bQ, bR], nil)
399+ let bT = fraction(bR, F, c)
400+ let bU = fraction(bR, I, c)
401+ invoke(aC, "incUnclaimed", [z, bl, bT, bU], nil)
399402 }
400- if ((bP == bP))
403+ if ((bS == bS))
401404 then {
402- let bN = if (((bI - 1) > bs))
403- then [IntegerEntry(ad(), (bs + 1))]
404- else [IntegerEntry(ah(), (aF + 1)), IntegerEntry(ad(), 0), DeleteEntry(ag())]
405- $Tuple2(bN, true)
405+ let bQ = if (((bL - 1) > bv))
406+ then [IntegerEntry(ag(), (bv + 1))]
407+ else [IntegerEntry(ak(), (aI + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
408+ $Tuple2(bQ, true)
406409 }
407410 else throw("Strict value is not equal to itself.")
408411 }
409412 else throw("Strict value is not equal to itself.")
410413 }
411414 else throw("invalid processing stage")
412415 }
413416
414417
415418
416-@Callable(aH)
417-func finalizeWrapper (bS) = {
418- let bp = {
419- let bT = invoke(this, "finalizeHelper", nil, nil)
420- if ($isInstanceOf(bT, "Boolean"))
421- then bT
419+@Callable(aK)
420+func finalizeWrapper (bV) = {
421+ let bs = {
422+ let bW = invoke(this, "finalizeHelper", nil, nil)
423+ if ($isInstanceOf(bW, "Boolean"))
424+ then bW
422425 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
423426 }
424- if ((bp == bp))
425- then if (!(bp))
426- then if ((bS == q))
427+ if ((bs == bs))
428+ then if (!(bs))
429+ then if ((bV == q))
427430 then throw("Nothing to process")
428431 else $Tuple2(nil, unit)
429- else if ((bS > 0))
430- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bS - 1)], nil))
432+ else if ((bV > 0))
433+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bV - 1)], nil))
431434 else $Tuple2(nil, unit)
432435 else throw("Strict value is not equal to itself.")
433436 }
434437
435438
436439
437-@Callable(aH)
440+@Callable(aK)
438441 func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
439442
440443
441444
442-@Callable(aH)
445+@Callable(aK)
443446 func deposit () = {
444- let Y = S()
445- if ((aH.caller != Address(fromBase58String(Y[O]))))
447+ let ab = V()
448+ if ((aK.caller != Address(fromBase58String(ab[R]))))
446449 then throw("Wrong caller address")
447450 else {
448- let bU = value(value(aH.payments[0]).assetId)
449- if ((bU != fromBase58String(Y[N])))
451+ let bX = value(value(aK.payments[0]).assetId)
452+ if ((bX != fromBase58String(ab[Q])))
450453 then throw("Wrong payment asset")
451454 else {
452- let am = bj()
453- let bV = (height - j(Z()))
454- let bW = valueOrErrorMessage(getInteger(M, ab()), (("mandatory emission_contract." + ab()) + " is not defined"))
455- let bX = valueOrErrorMessage(getInteger(t, ac()), (("mandatory factory_contract." + ac()) + " is not defined"))
456- let bY = fraction((bV * bX), bW, d)
457- let bZ = invoke(M, "emit", [bY], nil)
458- if ((bZ == bZ))
455+ let ap = bm()
456+ let bY = (height - j(ac()))
457+ let bZ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
458+ let ca = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
459+ let cb = fraction((bY * ca), bZ, d)
460+ let cc = invoke(P, "emit", [cb], nil)
461+ if ((cc == cc))
459462 then {
460- let ca = value(aH.payments[0]).amount
461- let cb = aq(am, ca, bY)
462-[IntegerEntry(ae(), am), IntegerEntry(al(am), height), IntegerEntry(an(am), bY), IntegerEntry(Z(), height), IntegerEntry(ao(am), ca), IntegerEntry(af(), (am + 1)), StringEntry(ap(), cb), StringEntry(at(am), cb)]
463+ let cd = value(aK.payments[0]).amount
464+ let ce = at(ap, cd, cb)
465+[IntegerEntry(ah(), ap), IntegerEntry(ao(ap), height), IntegerEntry(aq(ap), cb), IntegerEntry(ac(), height), IntegerEntry(ar(ap), cd), IntegerEntry(ai(), (ap + 1)), StringEntry(as(), ce), StringEntry(aw(ap), ce)]
463466 }
464467 else throw("Strict value is not equal to itself.")
465468 }
466469 }
467470 }
468471
469472
470473
471-@Callable(aH)
472-func claimNextBatch (bl,aF,bs,bm,bn,bo) = if ((aH.caller != this))
474+@Callable(aK)
475+func claimNextBatch (bo,aI,bv,bp,bq,br) = if ((aK.caller != this))
473476 then throw("Should be called by this script only")
474477 else {
475- let cc = br(bl, aF, bs, bm, bn, bo)
476- $Tuple2(nil, cc)
478+ let cf = bu(bo, aI, bv, bp, bq, br)
479+ $Tuple2(nil, cf)
477480 }
478481
479482
480483
481-@Callable(aH)
484+@Callable(aK)
482485 func claimReward () = {
483- let cd = toString(aH.caller)
484- let ce = bz(cd, unit)
485- let am = ce._1
486- let aD = ce._2
487- let aE = ce._3
488- let bB = ce._4
489- let Y = ce._5
490- let bC = ce._6
491- $Tuple2([IntegerEntry(ai(bB), am), ScriptTransfer(aH.caller, (aD + aE), fromBase58String(Y[N])), aA("claim", cd, aD, aE, am, bC, aH)], [aD, aE])
486+ let cg = toString(aK.caller)
487+ let ch = bC(cg, unit)
488+ let ap = ch._1
489+ let aG = ch._2
490+ let aH = ch._3
491+ let bE = ch._4
492+ let ab = ch._5
493+ let bF = ch._6
494+ let ci = {
495+ let bW = invoke(aC, "claim", [z], nil)
496+ if ($isInstanceOf(bW, "Int"))
497+ then bW
498+ else throw(($getType(invoke(aC, "claim", [z], nil)) + " couldn't be cast to Int"))
499+ }
500+ $Tuple2([IntegerEntry(al(bE), ap), ScriptTransfer(aK.caller, (aG + aH), fromBase58String(ab[Q])), aD("claim", cg, (aG + ci), aH, ap, bF, aK)], [(aG + ci), aH])
492501 }
493502
494503
495504
496-@Callable(aH)
497-func claimRewardREADONLY (cd) = {
498- let cf = bz(cd, unit)
499- let cg = (cf._2 + cf._3)
500- $Tuple2(nil, cg)
505+@Callable(aK)
506+func claimRewardREADONLY (cg) = {
507+ let cj = bC(cg, unit)
508+ let ck = valueOrElse(getInteger(aC, L(z, cg)), 0)
509+ let cl = ((cj._2 + cj._3) + ck)
510+ $Tuple2(nil, cl)
501511 }
502512
503513
504514
505-@Callable(aH)
506-func claimRewardPaginatedREADONLY (cd,bA) = {
507- let ch = bz(cd, if ((0 > bA))
515+@Callable(aK)
516+func claimRewardPaginatedREADONLY (cg,bD) = {
517+ let cm = bC(cg, if ((0 > bD))
508518 then unit
509- else bA)
510- let am = ch._1
511- let ci = ch._2
512- let cj = ch._3
513- let cg = (ci + cj)
514- $Tuple2(nil, $Tuple2(cg, am))
519+ else bD)
520+ let ap = cm._1
521+ let cn = cm._2
522+ let co = cm._3
523+ let cl = (cn + co)
524+ $Tuple2(nil, $Tuple2(cl, ap))
515525 }
516526
517527
518528
519-@Callable(aH)
520-func claimRewardDetailedREADONLY (cd) = {
521- let ck = bz(cd, unit)
522- let cl = ck._1
523- let ci = ck._2
524- let cj = ck._3
525- $Tuple2(nil, makeString(["%d%d%d", toString((ci + cj)), toString(ci), toString(cj)], a))
529+@Callable(aK)
530+func claimRewardDetailedREADONLY (cg) = {
531+ let cp = bC(cg, unit)
532+ let cq = cp._1
533+ let cn = cp._2
534+ let co = cp._3
535+ $Tuple2(nil, makeString(["%d%d%d", toString((cn + co)), toString(cn), toString(co)], a))
526536 }
527537
528538
529539
530-@Callable(aH)
531-func claimRewardDetailedPaginatedREADONLY (cd,bA) = {
532- let cm = bz(cd, if ((0 > bA))
540+@Callable(aK)
541+func claimRewardDetailedPaginatedREADONLY (cg,bD) = {
542+ let cr = bC(cg, if ((0 > bD))
533543 then unit
534- else bA)
535- let am = cm._1
536- let ci = cm._2
537- let cj = cm._3
538- $Tuple2(nil, $Tuple2(makeString(["%d%d%d", toString((ci + cj)), toString(ci), toString(cj)], a), am))
544+ else bD)
545+ let ap = cr._1
546+ let cn = cr._2
547+ let co = cr._3
548+ $Tuple2(nil, $Tuple2(makeString(["%d%d%d", toString((cn + co)), toString(cn), toString(co)], a), ap))
539549 }
540550
541551
542552
543-@Callable(aH)
544-func latestFinalizedPeriodREADONLY (cd) = $Tuple2(nil, valueOrElse(getInteger(this, ae()), -1))
553+@Callable(aK)
554+func latestFinalizedPeriodREADONLY (cg) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
545555
546556
547557
548-@Callable(aH)
549-func latestFinalizedPeriodInfoREADONLY (cd) = $Tuple2(nil, k(ap()))
558+@Callable(aK)
559+func latestFinalizedPeriodInfoREADONLY (cg) = $Tuple2(nil, k(as()))
550560
551561
552562
553-@Callable(aH)
554-func calcGwxParamsREADONLY (cn,co,cp) = {
555- let cq = (co + cp)
556- let cr = -(fraction(cn, c, cp))
557- let cs = (fraction(cn, c, cp) * cq)
558- $Tuple2(nil, [cr, cs, bj()])
563+@Callable(aK)
564+func calcGwxParamsREADONLY (cs,ct,cu) = {
565+ let cv = (ct + cu)
566+ let cw = -(fraction(cs, c, cu))
567+ let cx = (fraction(cs, c, cu) * cv)
568+ $Tuple2(nil, [cw, cx, bm()])
559569 }
560570
561571
562572
563-@Callable(aH)
564-func calcGwxAmountStartREADONLY (ct,cu,cv) = {
565- let cw = fraction(cu, d, cv)
566- let bE = fraction(ct, cw, d)
567- $Tuple2(nil, [bE])
573+@Callable(aK)
574+func calcGwxAmountStartREADONLY (cy,cz,cA) = {
575+ let cB = fraction(cz, d, cA)
576+ let bH = fraction(cy, cB, d)
577+ $Tuple2(nil, [bH])
568578 }
569579
570580
571581
572-@Callable(aH)
573-func constructor (U,V,W,q) = if ((this != aH.caller))
582+@Callable(aK)
583+func constructor (X,Y,Z,q) = if ((this != aK.caller))
574584 then throw("not authorized")
575- else [StringEntry(R(), T(U, V, W, q))]
585+ else [StringEntry(U(), W(X, Y, Z, q))]
576586
577587
578588
579-@Callable(aH)
580-func constructorV2 (cx) = if ((this != aH.caller))
589+@Callable(aK)
590+func constructorV2 (cC) = if ((this != aK.caller))
581591 then throw("not authorized")
582- else [StringEntry(r(), cx)]
592+ else [StringEntry(r(), cC)]
583593
584594
585595
586-@Callable(aH)
587-func constructorV3 (cy) = if ((this != aH.caller))
596+@Callable(aK)
597+func constructorV3 (cD) = if ((this != aK.caller))
588598 then throw("not authorized")
589599 else {
590- let cz = if (isDefined(getInteger(this, ae())))
600+ let cE = if (isDefined(getInteger(this, ah())))
591601 then nil
592- else [IntegerEntry(ae(), -1)]
593- (cz :+ StringEntry(u(), cy))
602+ else [IntegerEntry(ah(), -1)]
603+ (cE :+ StringEntry(u(), cD))
594604 }
595605
596606
597607
598-@Callable(aH)
599-func onEmissionForGwxStart () = if ((aH.caller != t))
608+@Callable(aK)
609+func onEmissionForGwxStart () = if ((aK.caller != t))
600610 then throw("permissions denied")
601- else [IntegerEntry(Z(), height)]
611+ else [IntegerEntry(ac(), height)]
602612
603613
604614
605-@Callable(aH)
606-func latestPeriodEmissionRewardsREADONLY (cd) = {
607- let am = bj()
608- $Tuple2(nil, [h(an(am))])
615+@Callable(aK)
616+func latestPeriodEmissionRewardsREADONLY (cg) = {
617+ let ap = bm()
618+ $Tuple2(nil, [h(aq(ap))])
609619 }
610620
611621
612622
613-@Callable(aH)
614-func calcD (cA,cB,cC,cD,cE) = {
615- let cF = toBigInt(2)
616- let cG = parseBigIntValue(cD)
617- let cH = parseBigIntValue(cE)
618- let cI = parseBigIntValue(cA)
619- let cJ = parseBigIntValue(cB)
620- let cK = (parseBigIntValue(cC) * cG)
621- let aO = (cI + cJ)
622- if ((aO == e))
623+@Callable(aK)
624+func calcD (cF,cG,cH,cI,cJ) = {
625+ let cK = toBigInt(2)
626+ let cL = parseBigIntValue(cI)
627+ let cM = parseBigIntValue(cJ)
628+ let cN = parseBigIntValue(cF)
629+ let cO = parseBigIntValue(cG)
630+ let cP = (parseBigIntValue(cH) * cL)
631+ let aR = (cN + cO)
632+ if ((aR == e))
623633 then $Tuple2(nil, toString(e))
624634 else {
625- let cL = (cK * cF)
626- let cM = [1, 2, 3, 4, 5, 6, 7]
627- func cN (cO,cP) = {
628- let cQ = cO
629- let cR = cQ._1
630- let cS = cQ._2
631- let cT = (((cR * cR) * cR) / (((cI * cJ) * cF) * cF))
632- let cU = (((((cL * aO) / cG) + (cT * cF)) * cR) / ((((cL - cG) * cR) / cG) + ((cF + toBigInt(1)) * cT)))
633- $Tuple2(cU, cR)
635+ let cQ = (cP * cK)
636+ let cR = [1, 2, 3, 4, 5, 6, 7]
637+ func cS (cT,cU) = {
638+ let cV = cT
639+ let cW = cV._1
640+ let cX = cV._2
641+ let cY = (((cW * cW) * cW) / (((cN * cO) * cK) * cK))
642+ let cZ = (((((cQ * aR) / cL) + (cY * cK)) * cW) / ((((cQ - cL) * cW) / cL) + ((cK + toBigInt(1)) * cY)))
643+ $Tuple2(cZ, cW)
634644 }
635645
636- let cV = {
637- let cW = cM
638- let cX = size(cW)
639- let cY = $Tuple2(aO, unit)
640- func cZ (da,db) = if ((db >= cX))
641- then da
642- else cN(da, cW[db])
646+ let da = {
647+ let db = cR
648+ let dc = size(db)
649+ let dd = $Tuple2(aR, unit)
650+ func de (df,dg) = if ((dg >= dc))
651+ then df
652+ else cS(df, db[dg])
643653
644- func dc (da,db) = if ((db >= cX))
645- then da
654+ func dh (df,dg) = if ((dg >= dc))
655+ then df
646656 else throw("List size exceeds 7")
647657
648- dc(cZ(cZ(cZ(cZ(cZ(cZ(cZ(cY, 0), 1), 2), 3), 4), 5), 6), 7)
658+ dh(de(de(de(de(de(de(de(dd, 0), 1), 2), 3), 4), 5), 6), 7)
649659 }
650- let cU = cV._1
651- let cS = cV._2
652- let dd = m((cU - value(cS)))
653- if ((cH >= dd))
654- then $Tuple2(nil, toString(cU))
655- else throw(("D calculation error, dDiff = " + toString(dd)))
660+ let cZ = da._1
661+ let cX = da._2
662+ let di = m((cZ - value(cX)))
663+ if ((cM >= di))
664+ then $Tuple2(nil, toString(cZ))
665+ else throw(("D calculation error, dDiff = " + toString(di)))
656666 }
657667 }
658668
659669
660670
661-@Callable(aH)
662-func setManager (de) = {
663- let df = aQ(aH)
664- if ((df == df))
671+@Callable(aK)
672+func setManager (dj) = {
673+ let dk = aT(aK)
674+ if ((dk == dk))
665675 then {
666- let dg = fromBase58String(de)
667- if ((dg == dg))
668- then [StringEntry(aL(), de)]
676+ let dl = fromBase58String(dj)
677+ if ((dl == dl))
678+ then [StringEntry(aO(), dj)]
669679 else throw("Strict value is not equal to itself.")
670680 }
671681 else throw("Strict value is not equal to itself.")
672682 }
673683
674684
675685
676-@Callable(aH)
686+@Callable(aK)
677687 func confirmManager () = {
678- let dh = aP()
679- let di = if (isDefined(dh))
688+ let dm = aS()
689+ let dn = if (isDefined(dm))
680690 then true
681691 else throw("No pending manager")
682- if ((di == di))
692+ if ((dn == dn))
683693 then {
684- let dj = if ((aH.callerPublicKey == value(dh)))
694+ let do = if ((aK.callerPublicKey == value(dm)))
685695 then true
686696 else throw("You are not pending manager")
687- if ((dj == dj))
688- then [StringEntry(aK(), toBase58String(value(dh))), DeleteEntry(aL())]
697+ if ((do == do))
698+ then [StringEntry(aN(), toBase58String(value(dm))), DeleteEntry(aO())]
689699 else throw("Strict value is not equal to itself.")
690700 }
691701 else throw("Strict value is not equal to itself.")
692702 }
693703
694704
695-@Verifier(dk)
696-func dl () = {
697- let dm = {
698- let aN = aM()
699- if ($isInstanceOf(aN, "ByteVector"))
705+@Verifier(dp)
706+func dq () = {
707+ let dr = {
708+ let aQ = aP()
709+ if ($isInstanceOf(aQ, "ByteVector"))
700710 then {
701- let aS = aN
702- aS
711+ let aV = aQ
712+ aV
703713 }
704- else if ($isInstanceOf(aN, "Unit"))
705- then dk.senderPublicKey
714+ else if ($isInstanceOf(aQ, "Unit"))
715+ then dp.senderPublicKey
706716 else throw("Match error")
707717 }
708- sigVerify(dk.bodyBytes, dk.proofs[0], dm)
718+ sigVerify(dp.bodyBytes, dp.proofs[0], dr)
709719 }
710720

github/deemru/w8io/169f3d6 
283.08 ms