tx · 53rW9Ba4zwe6GQjwSpduXNstE5AytXWAybVmptYug5aP 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy: -0.03600000 Waves 2024.12.15 15:49 [3415701] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves
{ "type": 13, "id": "53rW9Ba4zwe6GQjwSpduXNstE5AytXWAybVmptYug5aP", "fee": 3600000, "feeAssetId": null, "timestamp": 1734267002280, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "2zGCgujbTwwWiFkYXe6idUYQE9cUzUy1oXXrDawL424Wj5jnLmuz34Scnot4PgfL4anFcdtteH4ruy1aGiTtmFXu" ], "script": "base64:BgJSCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBCBIDCgEBEgMKAQESAwoBCBIDCgEIEgMKAQESABIECgIIAbkBAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ADk1JTlNIT1BQQVlNRU5UAKCNBgAKREFZX01JTExJUwCAuJkpAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQAKREFZX0JMT0NLUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACgCwMJAAACAQFUBQckbWF0Y2gwADwJAAIBAg1Vbmtub3duIGNoYWluAAtXRUVLX0JMT0NLUwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMADgTgMJAAACAQFUBQckbWF0Y2gwALQBCQACAQINVW5rbm93biBjaGFpbgAKVlJGX09GRlNFVAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAAAAwkAAAIBAVQFByRtYXRjaDAAkPlFCQACAQINVW5rbm93biBjaGFpbgALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BGd1l0YThiaUV6MzF6cGVGZTVESks4d0U1dHJTcFFWRjgDCQAAAgEBVAUHJG1hdGNoMAIjM043VXVZYXI2MjY0UDU4RkJoVldLUFFBaDRZdWEyaGduZ3YJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgASZWNvbm9teUNvbnRyYWN0U3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUDJzazFLbmNTeFJhWnM4YjRDV0dQdzJqa3Z2YXY3NHU0RAMJAAACAQFUBQckbWF0Y2gwAiMzTjh5NHd4WDNKQzRUZHJDSkJYWDE2U2pXZjZYMjU2aHJlcAkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQAQSWR4Q2ZnTWFya2V0RGFwcAAGAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBD2tleVJlc3QyQWRkcmVzcwACDSVzX19yZXN0MkFkZHIBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyAAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIIcmVzdDJDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhyZXN0MkNmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgAEUlkeENmZ1N0YWtpbmdEYXBwAAEAD0lkeENmZ0FjcmVzRGFwcAAIAAdyZXN0Q2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQxyZXN0Q29udHJhY3QAD3N0YWtpbmdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFEUlkeENmZ1N0YWtpbmdEYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAA1yZXN0MkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9rZXlSZXN0MkFkZHJlc3MABRZkZWZhdWx0UmVzdDJBZGRyZXNzU3RyAAhyZXN0MkNmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUNcmVzdDJDb250cmFjdAAOYWNyZXMyQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUQSWR4Q2ZnQWNyZXMyRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUNSWR4Q2ZnV2xnRGFwcAAScHV6emxlUG9vbENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ1B1enpsZVBvb2xEYXBwABJpbnZlc3RGdW5kQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAADm1hcmtldENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ01hcmtldERhcHABFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEEYWRkcgkArAICAhNsYXN0V2Vla1R4SWRCeVVzZXJfBQRhZGRyAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQBCmtleVVzZXJCZXQBBGFkZHIJAKwCAgIIdXNlckJldF8FBGFkZHIBEmtleVVzZXJXZWVrVGlja2V0cwIEYWRkcgR3ZWVrCQCsAgIJAKwCAgkArAICAhB1c2VyV2Vla1RpY2tldHNfBQRhZGRyAgFfCQCkAwEFBHdlZWsBE2tleVRvdGFsV2Vla1RpY2tldHMBBHdlZWsJAKwCAgIRdG90YWxXZWVrVGlja2V0c18JAKQDAQUEd2VlawEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQR3ZWVrCQCsAgICFnRvdGFsV2Vla1BhcnRpY2lwYW50c18JAKQDAQUEd2VlawEOa2V5TnVtTkZUMkRyYXcBBHdlZWsJAKwCAgIMbnVtTkZUMkRyYXdfCQCkAwEFBHdlZWsBDmtleU51bU5GVERyYXduAQR3ZWVrCQCsAgICDG51bU5GVERyYXduXwkApAMBBQR3ZWVrAQ5rZXlXZWVrV2lubmVycwEEd2VlawkArAICAgx3ZWVrV2lubmVyc18JAKQDAQUEd2VlawEKd2lubmluZ0JldAEDZGF5BAFiCQBoAgUDZGF5BQpEQVlfQkxPQ0tTBAFoAwkAZgIFAWIFClZSRl9PRkZTRVQFAWIJAGQCBQFiBQpWUkZfT0ZGU0VUCQBqAgkAsQkBCQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBBQFoA3ZyZgAEAAtpeFdsZ0Ftb3VudAAAAAhpeFdsZ1dsZwABAAppeFdsZ1ByaWNlAAIADml4V2xnSXNzdWVUaW1lAAgAD2l4V2xnVGVhbUFtTGVmdAALABNpeFdsZ1RlYW1BbUF2YWlsTm93AAwADml4V2xnQWN0QW1MZWZ0AA8AEml4V2xnQWN0QW1BdmFpbE5vdwAQABBpeFdsZ0FtTGVmdFRvdGFsABMAE2l4V2xnVXNlckFtQXZhaWxOb3cAFwAQaXhXbGdFZmZVc2VyVGltZQAYABJpeFdsZ0lzc3VlMTBBbW91bnQAGQAbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50ABoAFml4V2xnVGVhbUlzc3VlMTBBbW91bnQAGwAPaXhXbGdVc2VyMTBwYXJ0ABwAEGl4V2xnSXNzdWUxMFRpbWUAHQEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJANQWAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQAGU0NBTEU4AIDC1y8ADHhwTGV2ZWxTY2FsZQCAGQAPeHBMZXZlbFJlY2lwUG93AKAfABJudW1Qb2ludHNPbkxldmVsVXAAAwAPd2xnQmFzZUFtb3VudFhwAIDQ28P0AgEJa2V5VXNlclhQAQRhZGRyCQCsAgICB3VzZXJYUF8FBGFkZHIBDGtleVVzZXJMZXZlbAEEYWRkcgkArAICAgp1c2VyTGV2ZWxfBQRhZGRyAAV4cFdsZwCQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEHbGV2ZWxVcAIJY3VyckxldmVsBW5ld1hQBAhuZXdMZXZlbAkBCWxldmVsQnlYUAEFBW5ld1hQCQDMCAIFCG5ld0xldmVsCQDMCAIJAGgCBRJudW1Qb2ludHNPbkxldmVsVXAJAGUCBQhuZXdMZXZlbAUJY3VyckxldmVsBQNuaWwAAk02AMCEPQACTTgAgMLXLwAITUlMTElPTjYAgIDpg7HeFgAJVEVBTVNIQVJFAMCaDAANQUNUSVZJVFlTSEFSRQCgjQYAC1BMQVlFUlNIQVJFAIC1GAAKWUVBUk1JTExJUwCAhuvHdQAJREFZTUlMTElTAIC4mSkACEJBTktfRkVFANCGAwACY2gJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAE1VTRFRfVFZMX0NPUlJFQ1RJT04EByRtYXRjaDAFAmNoAwkAAAIBAVcFByRtYXRjaDAA8PWowAQDCQAAAgEBVAUHJG1hdGNoMAAACQACAQINVW5rbm93biBjaGFpbgALdGVhbUFkZHJLZXkCCHRlYW1BZGRyAA9sYXN0VGVhbVRpbWVLZXkCFGxhc3RDbGFpbWVkVGltZV90ZWFtABF0ZWFtQW1vdW50TGVmdEtleQIOdGVhbUFtb3VudExlZnQAFWxhc3RBY3Rpdml0aWVzVGltZUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMAEGFjdEFtb3VudExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABRzdGFrZXJzQW1vdW50TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBG2tleUxhc3RDbGFpbWVkVGltZUJ5VXNlck9sZAEEYWRkcgkArAICAhdsYXN0Q2xhaW1lZFRpbWVVc2VyT2xkXwUEYWRkcgEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEEYWRkcgkArAICAhFsYXN0V2xnTGltaXRVc2VyXwUEYWRkcgEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBBnBlcmlvZAkAawMFCE1JTExJT042CQBoAgULUExBWUVSU0hBUkUJAGQCBQZwZXJpb2QAAQkAaAIABgUCTTYAD3dsZ0lzc3VlVGltZUtleQINd2xnX2lzc3VlVGltZQASd2xnSXNzdWVkQW1vdW50S2V5AhB3bGdfaXNzdWVkQW1vdW50ABF6Yklzc3VlZEFtb3VudEtleQISemJpbGxfaXNzdWVkQW1vdW50ARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAE2FjcmVzU3Rha2VkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwBGGtleVdsZ1N0YWtlZEFtb3VudEJ5VXNlcgEEYWRkcgkArAICAhZ3bGdTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABF3bGdTdGFrZWRUb3RhbEtleQIUd2xnU3Rha2VkQW1vdW50VG90YWwBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUd2xnU3Rha2VkVGltZUJ5VXNlcl8FBGFkZHIACGRhcHBSZXN0AAAAC2RhcHBTdGFraW5nAAEAC2RhcHBFY29ub215AAIAB2RhcHBXbGcAAwAKZGFwcFB1enpsZQAEAA5kYXBwSW52ZXN0RnVuZAAFAAlkYXBwQWNyZXMABgEIZ2V0TGFuZHMDEnVzZXJBZGRyU3RyT3JFbXB0eQ9zdGFraW5nQ29udHJhY3QNYWNyZXNDb250cmFjdAQFcHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QCE3Jlc1R5cGVzUHJvcG9ydGlvbnMCCzBfMF8wXzBfMF8wAgFfCgEFYWRkZXICA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0EC3RvdGFsUGllY2VzCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlclBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAKwCAgIUc3Rha2VkUGllY2VzQnlPd25lcl8FEnVzZXJBZGRyU3RyT3JFbXB0eQAABAp0b3RhbEFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QFE2FjcmVzU3Rha2VkVG90YWxLZXkAAAQJdXNlckFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAACQDMCAIFC3RvdGFsUGllY2VzCQDMCAIFCnVzZXJQaWVjZXMJAMwIAgUKdG90YWxBY3JlcwkAzAgCBQl1c2VyQWNyZXMFA25pbAAOaWR4VG90YWxQaWVjZXMAAAANaWR4VXNlclBpZWNlcwABAA1pZHhUb3RhbEFjcmVzAAIADGlkeFVzZXJBY3JlcwADABFPTERfU1RBS0lOR19ERUFETACA+eObuTIBC2dldFdsZ1N0YXRzBQt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbg91c2VyUHJvcG9ydGlvbjYEDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRJ3bGdJc3N1ZWRBbW91bnRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQKZWNvbm9teVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwULZGFwcEVjb25vbXkFBnVzZHRJZAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcFJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUGdXNkdElkBRV1c2R0QmFsYW5jZUNvcnJlY3Rpb24ECXB1enpsZVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUKZGFwcFB1enpsZQUGdXNkdElkBBFpbnZlc3RGbmRDb250cmFjdAkAkQMCBQljb250cmFjdHMFDmRhcHBJbnZlc3RGdW5kBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEWludmVzdEZuZENvbnRyYWN0BQZ1c2R0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgURaW52ZXN0Rm5kQ29udHJhY3QFEXpiSXNzdWVkQW1vdW50S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUKZWNvbm9teVVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwUPd2xnSXNzdWVUaW1lS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQECmJhbmtXbGdvbGQJAPAHAgkAkQMCBQljb250cmFjdHMFC2RhcHBTdGFraW5nBQV3bGdJZAQJdGVhbVRvdGFsCQBrAwUITUlMTElPTjYFCVRFQU1TSEFSRQUCTTYEDnRlYW1BbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRF0ZWFtQW1vdW50TGVmdEtleQUJdGVhbVRvdGFsBAxsYXN0VGVhbVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFB2RhcHBXbGcFD2xhc3RUZWFtVGltZUtleQUJaXNzdWVUaW1lBAh0ZWFtQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAnQgCCQCRAwIFCWNvbnRyYWN0cwUHZGFwcFdsZwULdGVhbUFkZHJLZXkEFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUJdGVhbVRvdGFsCQBlAgUDbm93BQxsYXN0VGVhbVRpbWUJAGgCAAMFCllFQVJNSUxMSVMJAMwIAgUOdGVhbUFtb3VudExlZnQFA25pbAQKdGVhbVdsZ29sZAkA8AcCBQh0ZWFtQWRkcgUFd2xnSWQECGFjdFRvdGFsCQBrAwUITUlMTElPTjYFDUFDVElWSVRZU0hBUkUFAk02BA1hY3RBbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRBhY3RBbW91bnRMZWZ0S2V5BQhhY3RUb3RhbAQSbGFzdEFjdGl2aXRpZXNUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRVsYXN0QWN0aXZpdGllc1RpbWVLZXkFCWlzc3VlVGltZQQVYWN0QW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCGFjdFRvdGFsCQBlAgUDbm93BRJsYXN0QWN0aXZpdGllc1RpbWUJAGgCAAMFCllFQVJNSUxMSVMJAMwIAgUNYWN0QW1vdW50TGVmdAUDbmlsBAlhY3RXbGdvbGQJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHBSZXN0BQV3bGdJZAQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnCQEba2V5TGFzdENsYWltZWRUaW1lQnlVc2VyT2xkAQULdXNlckFkZHJPcHQFCWlzc3VlVGltZQQObGFzdFVzZXJQZXJpb2QJAGkCCQBlAgUMbGFzdFVzZXJUaW1lBQlpc3N1ZVRpbWUFCllFQVJNSUxMSVMECm5vd0xpbWl0ZWQJAJcDAQkAzAgCCQCXAwEJAMwIAgUDbm93CQDMCAIJAGQCBQlpc3N1ZVRpbWUJAGgCAAMFCllFQVJNSUxMSVMFA25pbAkAzAgCBRFPTERfU1RBS0lOR19ERUFETAUDbmlsBAljdXJQZXJpb2QJAJcDAQkAzAgCCQBpAgkAZQIFA25vdwUJaXNzdWVUaW1lBQpZRUFSTUlMTElTCQDMCAIAAgUDbmlsBANlZmYJAQhnZXRMYW5kcwMFC3VzZXJBZGRyT3B0CQCRAwIFCWNvbnRyYWN0cwULZGFwcFN0YWtpbmcJAJEDAgUJY29udHJhY3RzBQlkYXBwQWNyZXMEFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQUJY3VyUGVyaW9kBAgkdDA3OTE0MwMJAAACBQ5sYXN0VXNlclBlcmlvZAUJY3VyUGVyaW9kBAJhMAkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQFDGxhc3RVc2VyVGltZQUKWUVBUk1JTExJUwQIdXNlclBhcnQJAGsDBQJhMAUPdXNlclByb3BvcnRpb242BQJNNgQHZWZmVGltZQkAZAIFDGxhc3RVc2VyVGltZQkAawMJAGUCBQpub3dMaW1pdGVkBQxsYXN0VXNlclRpbWUFD3VzZXJQcm9wb3J0aW9uNgUCTTYJAJUKAwUIdXNlclBhcnQFAmEwBQdlZmZUaW1lAwkAAAIFDmxhc3RVc2VyUGVyaW9kCQBlAgUJY3VyUGVyaW9kAAEEAmExCQBrAwkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQkAZQIFCWN1clBlcmlvZAABCQBlAgkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMFCWN1clBlcmlvZAUMbGFzdFVzZXJUaW1lBQpZRUFSTUlMTElTBAJhMAkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQJAGQCBQlpc3N1ZVRpbWUJAGgCBQpZRUFSTUlMTElTBQljdXJQZXJpb2QFCllFQVJNSUxMSVMEBWF2YWlsCQBkAgUCYTEFAmEwBAh1c2VyUGFydAkAawMFBWF2YWlsBQ91c2VyUHJvcG9ydGlvbjYFAk02BAdlZmZUaW1lAwkAZwIFAmExBQh1c2VyUGFydAkAZAIFDGxhc3RVc2VyVGltZQkAawMFCllFQVJNSUxMSVMFCHVzZXJQYXJ0CQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAEJAGQCCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwUJY3VyUGVyaW9kCQBrAwUKWUVBUk1JTExJUwkAZQIFCHVzZXJQYXJ0BQJhMQUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQCVCgMFCHVzZXJQYXJ0BQVhdmFpbAUHZWZmVGltZQQCYTIJAGsDCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAIJAGUCCQBkAgUJaXNzdWVUaW1lCQBoAgUKWUVBUk1JTExJUwkAZQIFCWN1clBlcmlvZAABBQxsYXN0VXNlclRpbWUFCllFQVJNSUxMSVMEAmExCQEUZGlzdHJpYnV0aW9uQnlQZXJpb2QBCQBlAgUJY3VyUGVyaW9kAAEEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMFCWN1clBlcmlvZAUKWUVBUk1JTExJUwQFYXZhaWwJAGQCCQBkAgUCYTIFAmExBQJhMAQIdXNlclBhcnQJAGsDBQVhdmFpbAUPdXNlclByb3BvcnRpb242BQJNNgQHZWZmVGltZQMJAGcCBQJhMgUIdXNlclBhcnQJAGQCBQxsYXN0VXNlclRpbWUJAGsDBQpZRUFSTUlMTElTBQh1c2VyUGFydAkBFGRpc3RyaWJ1dGlvbkJ5UGVyaW9kAQkAZQIFCWN1clBlcmlvZAACAwkAZwIJAGQCBQJhMgUCYTEFCHVzZXJQYXJ0CQBkAgkAZAIFCWlzc3VlVGltZQkAaAIFCllFQVJNSUxMSVMJAGUCBQljdXJQZXJpb2QAAQkAawMFCllFQVJNSUxMSVMJAGUCBQh1c2VyUGFydAUCYTIJARRkaXN0cmlidXRpb25CeVBlcmlvZAEJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQlpc3N1ZVRpbWUJAGgCBQpZRUFSTUlMTElTBQljdXJQZXJpb2QJAGsDBQpZRUFSTUlMTElTCQBlAgkAZQIFCHVzZXJQYXJ0BQJhMgUCYTEFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAlQoDBQh1c2VyUGFydAUFYXZhaWwFB2VmZlRpbWUECnVzZXJBbW91bnQIBQgkdDA3OTE0MwJfMQQNdXNlckF2YWlsYWJsZQgFCCR0MDc5MTQzAl8yBAtlZmZMYXN0VGltZQgFCCR0MDc5MTQzAl8zBBBzTGFuZERhaWx5QW1vdW50CQBrAwkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgUJREFZTUlMTElTBQpZRUFSTUlMTElTABkJAJEDAgUDZWZmBQ5pZHhUb3RhbFBpZWNlcwQPYW1vdW50TGVmdFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQdkYXBwV2xnBRRzdGFrZXJzQW1vdW50TGVmdEtleQAABAh1c2VyVGVtcAkAawMFCnVzZXJBbW91bnQJAGQCCQBoAgkAkQMCBQNlZmYFDWlkeFVzZXJQaWVjZXMFAk04CQCRAwIFA2VmZgUMaWR4VXNlckFjcmVzCQBkAgkAaAIJAJEDAgUDZWZmBQ5pZHhUb3RhbFBpZWNlcwUCTTgJAJEDAgUDZWZmBQ1pZHhUb3RhbEFjcmVzBAxiYW5rRnJvbVVzZXIJAGsDBQh1c2VyVGVtcAUIQkFOS19GRUUFAk02BApyb2JiZWRVc2VyCQBlAgUIdXNlclRlbXAFDGJhbmtGcm9tVXNlcgQMdW5yb2JiZWRVc2VyCQBrAwUNdXNlckF2YWlsYWJsZQkAZAIJAGgCCQCRAwIFA2VmZgUNaWR4VXNlclBpZWNlcwUCTTgJAJEDAgUDZWZmBQxpZHhVc2VyQWNyZXMJAGQCCQBoAgkAkQMCBQNlZmYFDmlkeFRvdGFsUGllY2VzBQJNOAkAkQMCBQNlZmYFDWlkeFRvdGFsQWNyZXMJAMwIAgUMaXNzdWVkQW1vdW50CQDMCAIJAGsDCQBlAgUNdG90YWxGdW5kc1VzZAUTVVNEVF9UVkxfQ09SUkVDVElPTgUCTTgFDGlzc3VlZEFtb3VudAkAzAgCBQ10b3RhbEZ1bmRzVXNkCQDMCAIFCmVjb25vbXlVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQZ3bGdVc2QJAMwIAgUJcHV6emxlVXNkCQDMCAIFCWlzc3VlVGltZQkAzAgCBQxsYXN0VGVhbVRpbWUJAMwIAgUJdGVhbVRvdGFsCQDMCAIFDnRlYW1BbW91bnRMZWZ0CQDMCAIFFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAMwIAgUKdGVhbVdsZ29sZAkAzAgCBQhhY3RUb3RhbAkAzAgCBQ1hY3RBbW91bnRMZWZ0CQDMCAIFFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAzAgCBQlhY3RXbGdvbGQJAMwIAgUJY3VyUGVyaW9kCQDMCAIFD2Ftb3VudExlZnRUb3RhbAkAzAgCBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAMwIAgUMbGFzdFVzZXJUaW1lCQDMCAIFCnJvYmJlZFVzZXIJAMwIAgUQc0xhbmREYWlseUFtb3VudAkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUMdW5yb2JiZWRVc2VyCQDMCAIFC2VmZkxhc3RUaW1lCQDMCAIFCmJhbmtXbGdvbGQFA25pbAADTTZfAMCEPQADTThfAIDC1y8AClRFQU1fU0hBUkUAwJoMAA5BQ1RJVklUWV9TSEFSRQCgjQYADFBMQVlFUl9TSEFSRQCAtRgAC1lFQVJfTUlMTElTAICG68d1AAZEQVlfTVMAgLiZKQAHSVNTVUUxMACAlOvcAwAPUExBWUVSUzEwX1NIQVJFAIDqMAARTUFSS0VUSU5HMTBfU0hBUkUAoI0GAAxURUFNMTBfU0hBUkUAoI0GABFORVdfU1RBS0lOR19TVEFSVACA87jCsTIAEG1hcmtldGluZ0FkZHJLZXkCDW1hcmtldGluZ0FkZHIACnRlYW1BZHJLZXkCCHRlYW1BZGRyAA5sYXN0VGVhbVRpbUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0ADnRlYW1BbXRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAUbGFzdEFjdGl2aXRpZXNUaW1LZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzAA1hY3RBbXRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAARc3Rha2Vyc0FtdExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQRhZGRyCQCsAgICFGxhc3RDbGFpbWVkVGltZVVzZXJfBQRhZGRyAQ1kaXN0ckJ5UGVyaW9kAgxpc3N1ZWRBbW91bnQGcGVyaW9kCQBrAwUMaXNzdWVkQW1vdW50CQBoAgUMUExBWUVSX1NIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFA002XwARd2xnSXNzdWUxMFRpbWVLZXkCD3dsZ19pc3N1ZTEwVGltZQAOd2xnSXNzdWVUaW1LZXkCDXdsZ19pc3N1ZVRpbWUAD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAJZGFwcDJSZXN0AAAADGRhcHAyU3Rha2luZwABAAhkYXBwMldsZwACAAtkYXBwMlB1enpsZQADAA9kYXBwMkludmVzdEZ1bmQABAAVREVGQVVMVF9XRUVLTFlfUFJJWkVTAAUADUFDUkVTX0ZPUl9CRVQAgMLXLwARa2V5TmZ0VG90YWxJc3N1ZWQCDm5mdFRvdGFsSXNzdWVkABFrZXlOZnRUb3RhbEJ1cm5lZAIObmZ0VG90YWxCdXJuZWQAE2tleVdsTmZ0VG90YWxTdGFrZWQCEFdsTmZ0VG90YWxTdGFrZWQBEmtleVVzZXJXbE5mdE51bWJlcgEEYWRkcgkArAICAhB1c2VyV2xOZnROdW1iZXJfBQRhZGRyARBrZXlVc2VyRnVsbEJvbnVzAQRhZGRyCQCsAgICDnVzZXJGdWxsQm9udXNfBQRhZGRyAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgVhY3JlcwZib251czYECm5vdEJvbnVzZWQJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUFYWNyZXMJAJQKAgkAawMFCm5vdEJvbnVzZWQJAGQCBQNNNl8FBmJvbnVzNgUDTTZfBQpub3RCb251c2VkARBnZXRGYXJtaW5nUG93ZXJzAhJ1c2VyQWRkclN0ck9yRW1wdHkOYWNyZXMyQ29udHJhY3QEB3RvdGFsRlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QFFHRvdGFsRmFybWluZ1Bvd2VyS2V5AAAECXVzZXJBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAECXVzZXJCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBEGtleVVzZXJGdWxsQm9udXMBBRJ1c2VyQWRkclN0ck9yRW1wdHkAAAQIJHQwNzkxNDMJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQl1c2VyQWNyZXMFCXVzZXJCb251cwQNdXNlckZQYm9udXNlZAgFCCR0MDc5MTQzAl8xBBB1c2VyRlBub3RCb251c2VkCAUIJHQwNzkxNDMCXzIJAMwIAgUHdG90YWxGUAkAzAgCBQ11c2VyRlBib251c2VkCQDMCAIFEHVzZXJGUG5vdEJvbnVzZWQJAMwIAgUJdXNlckJvbnVzBQNuaWwACmlkeFRvdGFsRlAAAAAQaWR4VXNlckZQYm9udXNlZAABAQxnZXRXbGdTdGF0czIEC3VzZXJBZGRyT3B0CWNvbnRyYWN0cwZ1c2R0SWQVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAxpc3N1ZWRBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFD3dsZ0lzc3VlZEFtdEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0BAdyZXN0VXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBnVzZHRJZAUVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAlwdXp6bGVVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFC2RhcHAyUHV6emxlBQZ1c2R0SWQECWFjcmVzMlVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBQZ1c2R0SWQEEWludmVzdEZuZENvbnRyYWN0CQCRAwIFCWNvbnRyYWN0cwUPZGFwcDJJbnZlc3RGdW5kBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEWludmVzdEZuZENvbnRyYWN0BQZ1c2R0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgURaW52ZXN0Rm5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAQFd2xnSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDndsZ0lzc3VlVGltS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQEBndsZ1dsZwkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBXdsZ0lkBAl0ZWFtVG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFClRFQU1fU0hBUkUFA002XwQOdGVhbUFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ50ZWFtQW10TGVmdEtleQUJdGVhbVRvdGFsBAxsYXN0VGVhbVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ5sYXN0VGVhbVRpbUtleQUJaXNzdWVUaW1lBAh0ZWFtQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAnQgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFCnRlYW1BZHJLZXkEFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUJdGVhbVRvdGFsCQBlAgUDbm93BQxsYXN0VGVhbVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDnRlYW1BbW91bnRMZWZ0BQNuaWwECnRlYW1XbGdvbGQJAPAHAgUIdGVhbUFkZHIFBXdsZ0lkBAhhY3RUb3RhbAkAawMFDGlzc3VlZEFtb3VudAUOQUNUSVZJVFlfU0hBUkUFA002XwQNYWN0QW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDWFjdEFtdExlZnRLZXkFCGFjdFRvdGFsBBJsYXN0QWN0aXZpdGllc1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRRsYXN0QWN0aXZpdGllc1RpbUtleQUJaXNzdWVUaW1lBBVhY3RBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUIYWN0VG90YWwJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUNYWN0QW1vdW50TGVmdAUDbmlsBAlhY3RXbGdvbGQJAPAHAgkAkQMCBQljb250cmFjdHMFCWRhcHAyUmVzdAUFd2xnSWQEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcJARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQULdXNlckFkZHJPcHQFCWlzc3VlVGltZQQObGFzdFVzZXJQZXJpb2QJAGkCCQBlAgUMbGFzdFVzZXJUaW1lBQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTBApub3dMaW1pdGVkCQCXAwEJAMwIAgUDbm93CQDMCAIJAGQCBQlpc3N1ZVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTBQNuaWwECWN1clBlcmlvZAkAlwMBCQDMCAIJAGkCCQBlAgUDbm93BQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTCQDMCAIAAgUDbmlsBANlZmYJARBnZXRGYXJtaW5nUG93ZXJzAgULdXNlckFkZHJPcHQJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcEFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQFCWN1clBlcmlvZAQNcHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTBQljdXJQZXJpb2QEEXByZXZQcmV2UGVyaW9kRW5kCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMJAGUCBQljdXJQZXJpb2QAAQQCYTAJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBA11c2VyQXZhaWxhYmxlAwkAAAIFDmxhc3RVc2VyUGVyaW9kBQljdXJQZXJpb2QFAmEwAwkAAAIFDmxhc3RVc2VyUGVyaW9kCQBlAgUJY3VyUGVyaW9kAAEEAmExCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZQIFDXByZXZQZXJpb2RFbmQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMJAGQCBQJhMQUCYTAEAmEyCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAgkAZQIFEXByZXZQcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBAJhMQkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQJhMgUCYTEFAmEwBA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRFzdGFrZXJzQW10TGVmdEtleQAABAp1c2VyQW1vdW50AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMFDXVzZXJBdmFpbGFibGUJAJEDAgUDZWZmBRBpZHhVc2VyRlBib251c2VkCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAABA9sYXN0SXNzdWUxMFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRF3bGdJc3N1ZTEwVGltZUtleQURTkVXX1NUQUtJTkdfU1RBUlQEDWlzc3VlMTBBbW91bnQJAGsDBQdJU1NVRTEwCQCWAwEJAMwIAgkAZQIFA25vdwUPbGFzdElzc3VlMTBUaW1lCQDMCAIAAAUDbmlsBQZEQVlfTVMEFm1hcmtldGluZ0lzc3VlMTBBbW91bnQJAGsDBQ1pc3N1ZTEwQW1vdW50BRFNQVJLRVRJTkcxMF9TSEFSRQUDTTZfBBF0ZWFtSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFDFRFQU0xMF9TSEFSRQUDTTZfBA51c2VyMTBJbnRlcnZhbAkAlgMBCQDMCAIJAGUCBQNub3cJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQxsYXN0VXNlclRpbWUFA25pbAkAzAgCAAAFA25pbAQKdXNlcjEwcGFydAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDCQBrAwkAawMFB0lTU1VFMTAFDnVzZXIxMEludGVydmFsBQZEQVlfTVMJAJEDAgUDZWZmBRBpZHhVc2VyRlBib251c2VkCQCRAwIFA2VmZgUKaWR4VG90YWxGUAUPUExBWUVSUzEwX1NIQVJFBQNNNl8AAAQObmV3SXNzdWUxMFRpbWUJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQNub3cFA25pbAQQYWNyZXNTdGFrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQObmZ0VG90YWxJc3N1ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwURa2V5TmZ0VG90YWxJc3N1ZWQAAAQObmZ0VG90YWxCdXJuZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwURa2V5TmZ0VG90YWxCdXJuZWQAAAQQd2xOZnRUb3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBRNrZXlXbE5mdFRvdGFsU3Rha2VkAAAED3dsTmZ0VXNlclN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nCQESa2V5VXNlcldsTmZ0TnVtYmVyAQkBC3ZhbHVlT3JFbHNlAgULdXNlckFkZHJPcHQCAAAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwJAMwIAgUObmZ0VG90YWxJc3N1ZWQJAMwIAgUObmZ0VG90YWxCdXJuZWQJAMwIAgUQd2xOZnRUb3RhbFN0YWtlZAkAzAgCBQ93bE5mdFVzZXJTdGFrZWQFA25pbAANcHJvZml0QWRkcktleQIKcHJvZml0QWRkcgAZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQIWc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbAEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQRhZGRyCQCsAgICFnN0YWtlcnNBbW91bnRQYWlkVXNlcl8FBGFkZHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAESZ2V0U3dhcExpbWl0V2xnb2xkAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIAAAQMZGVmYXVsdExpbWl0CQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgUMZGVmYXVsdExpbWl0BAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGxhc3RUaW1lBQpEQVlfTUlMTElTCQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsABBpZHhXbGdUZWFtQW1MZWZ0AAoAFGlkeFdsZ1RlYW1BbUF2YWlsTm93AAsAD2lkeFdsZ0FjdEFtTGVmdAAOABNpZHhXbGdBY3RBbUF2YWlsTm93AA8AEWlkeFdsZ0FtTGVmdFRvdGFsABIAFGlkeFdsZ1VzZXJUb3RhbEF2YWlsABgAEWlkeFdsZ0VmZlVzZXJUaW1lABkBDWNsYWltSW50ZXJuYWwBBGFkZHIEBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYWRkcgQPZWNvbm9teUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBBRJlY29ub215Q29udHJhY3RTdHIECGN1clN0YXRzCQELZ2V0V2xnU3RhdHMFBQRhZGRyCQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBQ9zdGFraW5nQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QJAMwIAgUNYWNyZXNDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABQVNVUxUNgQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFEGlkeFdsZ1RlYW1BbUxlZnQECnRlYW1BbW91bnQJAJEDAgUIY3VyU3RhdHMFFGlkeFdsZ1RlYW1BbUF2YWlsTm93BA1hY3RBbW91bnRMZWZ0CQCRAwIFCGN1clN0YXRzBQ9pZHhXbGdBY3RBbUxlZnQECWFjdEFtb3VudAkAkQMCBQhjdXJTdGF0cwUTaWR4V2xnQWN0QW1BdmFpbE5vdwQKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUUaWR4V2xnVXNlclRvdGFsQXZhaWwEB3VzZXJLZXkJARhrZXlTdGFrZXJzQW1vdW50UGFpZFVzZXIBBQRhZGRyBAl1c2VyVG90YWwJAJEDAgUIY3VyU3RhdHMFFGlkeFdsZ1VzZXJUb3RhbEF2YWlsBAt1c2VyRWZmVGltZQkAkQMCBQhjdXJTdGF0cwURaWR4V2xnRWZmVXNlclRpbWUJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFC3RlYW1BZGRyS2V5BQp0ZWFtQW1vdW50BQp3bGdBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUJYWN0QW1vdW50BQp3bGdBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd1c2VyS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd1c2VyS2V5AAAFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkAAAUJdXNlclRvdGFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEWlkeFdsZ0FtTGVmdFRvdGFsBQl1c2VyVG90YWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5CQBlAgUOdGVhbUFtb3VudExlZnQFCnRlYW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2xhc3RUZWFtVGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBhY3RBbW91bnRMZWZ0S2V5CQBlAgUNYWN0QW1vdW50TGVmdAUJYWN0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0QWN0aXZpdGllc1RpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG2tleUxhc3RDbGFpbWVkVGltZUJ5VXNlck9sZAEFBGFkZHIFC3VzZXJFZmZUaW1lBQNuaWwFCnVzZXJBbW91bnQBDmNsYWltSW50ZXJuYWwyAQRhZGRyBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQFBGFkZHIJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEC3VzZXJUaW1lS2V5CQEWa2V5TGFzdENsYWltVGltZUJ5VXNlcgEFBGFkZHIEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQt1c2VyVGltZUtleQAABAt1c2VyRWZmVGltZQkAkQMCBQhjdXJTdGF0cwUQaXhXbGdFZmZVc2VyVGltZQMJAAACBQxsYXN0VXNlclRpbWUFC3VzZXJFZmZUaW1lCQCUCgIFA25pbAAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJAJEDAgUIY3VyU3RhdHMFDml4V2xnSXNzdWVUaW1lBA50ZWFtQW1vdW50TGVmdAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdUZWFtQW1MZWZ0BAp0ZWFtQW1vdW50CQBkAgkAkQMCBQhjdXJTdGF0cwUTaXhXbGdUZWFtQW1BdmFpbE5vdwkAkQMCBQhjdXJTdGF0cwUWaXhXbGdUZWFtSXNzdWUxMEFtb3VudAQLdGVhbUFjdGlvbnMDCQBmAgUKdGVhbUFtb3VudAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF0ZWFtQW1vdW50TGVmdEtleQkAZAIJAGUCBQ50ZWFtQW1vdW50TGVmdAUKdGVhbUFtb3VudAkAkQMCBQhjdXJTdGF0cwUWaXhXbGdUZWFtSXNzdWUxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPbGFzdFRlYW1UaW1lS2V5BQNub3cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQt0ZWFtQWRkcktleQUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQKYWN0QWN0aW9ucwMJAGYCBQlhY3RBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAQRbWFya2V0aW5nVHJhbnNmZXIDCQBmAgUPbWFya2V0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBRBtYXJrZXRpbmdBZGRyS2V5BQ9tYXJrZXRpbmdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgQJdXNlclRvdGFsCQBkAgUKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0BA5pc3N1ZWQxMEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQ5pc3N1ZWQxMEFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQ5pc3N1ZWQxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnSXNzdWUxMFRpbWVLZXkJAJEDAgUIY3VyU3RhdHMFEGl4V2xnSXNzdWUxMFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQt0ZWFtQWN0aW9ucwUKYWN0QWN0aW9ucwURbWFya2V0aW5nVHJhbnNmZXIFCXVzZXJUb3RhbAEOdGFrZVhwSW50ZXJuYWwCBGFkZHIFZGVsdGEEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3RpbWVLZXkJARZrZXlXbGdTdGFrZWRUaW1lQnlVc2VyAQUEYWRkcgQJYW1vdW50S2V5CQEYa2V5V2xnU3Rha2VkQW1vdW50QnlVc2VyAQUEYWRkcgQIbGFzdFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdGltZUtleQAABAdvbGRVc2VyCQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAABAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRF3bGdTdGFrZWRUb3RhbEtleQAABAJ4cAkAawMJAGsDBQV4cFdsZwUHb2xkVXNlcgUPd2xnQmFzZUFtb3VudFhwCQBlAgUIbGFzdFRpbWUFA25vdwUJREFZTUlMTElTCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFB3RpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJYW1vdW50S2V5CQBkAgUHb2xkVXNlcgUFZGVsdGEJAMwIAgkBDEludGVnZXJFbnRyeQIFEXdsZ1N0YWtlZFRvdGFsS2V5CQBkAgUIb2xkVG90YWwFBWRlbHRhBQNuaWwFAnhwBQdvbGRVc2VyARFvcGVuQ2hlc3RJbnRlcm5hbAEEYWRkcgQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MECGRyYXdXZWVrCQBlAgUEd2VlawABBAludW1Qcml6ZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDmtleU51bU5GVDJEcmF3AQUIZHJhd1dlZWsFFURFRkFVTFRfV0VFS0xZX1BSSVpFUwQLcHJpemVzRHJhd24JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDmtleU51bU5GVERyYXduAQUIZHJhd1dlZWsAAAQLdXNlclRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrAAADCQBnAgAABQt1c2VyVGlja2V0cwkAlAoCBQNuaWwFBHVuaXQEC3dlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUIZHJhd1dlZWsAAAMJAGcCAAAFC3dlZWtUaWNrZXRzCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrBQNuaWwFBHVuaXQEB2VudHJvcHkJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEJAGgCBQR3ZWVrBQtXRUVLX0JMT0NLUwN2cmYEBHNhbHQJANkEAQkAkQMCCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQRhZGRyAgo0Ml9ERUZBVUxUAgFfAAEEBnJhbmRvbQkBD2dldFJhbmRvbU51bWJlcgMFC3dlZWtUaWNrZXRzBQRzYWx0BQdlbnRyb3B5AwkAZgIJAGgCBQt1c2VyVGlja2V0cwUJbnVtUHJpemVzBQZyYW5kb20EC2lzc3VlUmVzdWx0CQD8BwQFDmFjcmVzMkNvbnRyYWN0Agtpc3N1ZVBpY2tDMQkAzAgCBQRhZGRyBQNuaWwFA25pbAQHd2lubmVycwkAoggBCQEOa2V5V2Vla1dpbm5lcnMBBQhkcmF3V2VlawQKbmV3V2lubmVycwMJAQlpc0RlZmluZWQBBQd3aW5uZXJzCQCsAgIJAKwCAgkBBXZhbHVlAQUHd2lubmVycwIBXwUEYWRkcgUEYWRkcgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5TnVtTkZURHJhd24BBQhkcmF3V2VlawkAZAIFC3ByaXplc0RyYXduAAEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlXZWVrV2lubmVycwEFCGRyYXdXZWVrBQpuZXdXaW5uZXJzBQNuaWwFC2lzc3VlUmVzdWx0BAdyYW5kb20xCQBkAgkBD2dldFJhbmRvbU51bWJlcgMACQkAywECAQFCBQRzYWx0BQdlbnRyb3B5AAEEC2NvbnNUaWNrZXRzCQBrAwULdXNlclRpY2tldHMFB3JhbmRvbTEACgQKdGlja2V0c0tleQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFBHdlZWsECm9sZFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKdGlja2V0c0tleQAACQCUCgIJAM0IAgMJAAACBQtjb25zVGlja2V0cwAABQNuaWwEDWNvbW1vbkFjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQR3ZWVrAAAFC2NvbnNUaWNrZXRzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQp0aWNrZXRzS2V5CQBkAgUKb2xkVGlja2V0cwULY29uc1RpY2tldHMFA25pbAMJAGYCBQpvbGRUaWNrZXRzAAAFDWNvbW1vbkFjdGlvbnMJAM0IAgUNY29tbW9uQWN0aW9ucwkBDEludGVnZXJFbnRyeQIJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQUEd2VlawAAAAEJAQtEZWxldGVFbnRyeQEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawULY29uc1RpY2tldHMBFGNsYWltVGlja2V0c0ludGVybmFsAgRhZGRyCnVzZXJCZXRTdHIEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTBAp0aWNrZXRzS2V5CQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUEd2VlawQGZGF5QmV0CQC1CQIFCnVzZXJCZXRTdHICAV8ED29sZFRvdGFsVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsAAAQKb2xkVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0aWNrZXRzS2V5AAAEDGRlbHRhVGlja2V0cwMJAAACCQEKd2lubmluZ0JldAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZkYXlCZXQAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmRheUJldAABAAEAAAQPb2xkUGFydGljaXBhbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrAAAEEnVwZGF0ZVBhcnRpY2lwYW50cwMDCQAAAgUKb2xkVGlja2V0cwAACQAAAgUMZGVsdGFUaWNrZXRzAAEHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQUEd2VlawkAZAIFD29sZFBhcnRpY2lwYW50cwABBQNuaWwFA25pbAkAlAoCAwkAAAIFDGRlbHRhVGlja2V0cwAABQNuaWwJAM0IAgkAzQgCBRJ1cGRhdGVQYXJ0aWNpcGFudHMJAQxJbnRlZ2VyRW50cnkCBQp0aWNrZXRzS2V5CQBkAgUKb2xkVGlja2V0cwUMZGVsdGFUaWNrZXRzCQEMSW50ZWdlckVudHJ5AgkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQR3ZWVrCQBkAgUPb2xkVG90YWxUaWNrZXRzBQxkZWx0YVRpY2tldHMFDGRlbHRhVGlja2V0cxABaQENY29uc3RydWN0b3JWMQQIcmVzdEFkZHINbWFya2V0aW5nQWRkcgh0ZWFtQWRkcgpwcm9maXRBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQDCQEJaXNEZWZpbmVkAQkAoQgBBQ13bGdBc3NldElkS2V5CQACAQITQWxyZWFkeSBpbml0aWFsaXplZAQMaXNzdWVkQW1vdW50BQhNSUxMSU9ONgQFaXNzdWUJAMMIBwIGV0xHT0xEAiBXYXZlc0xhbmRzIEdvbGQgaW52ZXN0bWVudCB0b2tlbgUMaXNzdWVkQW1vdW50AAgGBQR1bml0AAAEB2Fzc2V0SWQJALgIAQUFaXNzdWUJAMwIAgUFaXNzdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFD3dsZ0lzc3VlVGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQUMaXNzdWVkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5CQBrAwUITUlMTElPTjYFC1BMQVlFUlNIQVJFBQVNVUxUNgkAzAgCCQELQmluYXJ5RW50cnkCBQ13bGdBc3NldElkS2V5BQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFEG1hcmtldGluZ0FkZHJLZXkFDW1hcmtldGluZ0FkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgULdGVhbUFkZHJLZXkFCHRlYW1BZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDXByb2ZpdEFkZHJLZXkFCnByb2ZpdEFkZHIFA25pbAFpAQ1jb25zdHJ1Y3RvclYyAQlyZXN0MkFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5UmVzdDJBZGRyZXNzAAUJcmVzdDJBZGRyBQNuaWwBaQEGYnV5V2xnAQxtaW5Ub1JlY2VpdmUEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB3VzZHRBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQECHdsZ1ByaWNlCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlBAhidXlQcmljZQkAbgQFCHdsZ1ByaWNlAAYABQUHQ0VJTElORwQJd2xnQW1vdW50CQBrAwUHdXNkdEFtdAUFTVVMVDgFCGJ1eVByaWNlBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQRhZGRyAwkAZgIFCXdsZ0Ftb3VudAUGbWF4V2xnCQACAQkArAICCQCsAgICEFlvdSBjYW4gZ2V0IG1heCAJAQpmaXhlZFBvaW50AgUGbWF4V2xnAAgCFSBXTEdPTEQgYXQgdGhlIG1vbWVudAMJAGYCBQxtaW5Ub1JlY2VpdmUFCXdsZ0Ftb3VudAkAAgECMFByaWNlIGNoYW5nZWQgZHVyaW5nIG9wZXJhdGlvbiwgcGxlYXNlIHRyeSBhZ2FpbgQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAGCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQl3bGdBbW91bnQGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkJAGQCBQxjdXJXbGdBbW91bnQFCXdsZ0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWtleUxhc3RXbGdUcmFkZVRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgkAZQIFBm1heFdsZwUJd2xnQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXdsZ0Ftb3VudAUKd2xnQXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOYnV5V2xnUkVBRE9OTFkCB2FkZHJlc3MHdXNkdEFtdAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkBQd1c2R0QW10BAh3bGdQcmljZQkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQQIYnV5UHJpY2UJAG4EBQh3bGdQcmljZQAGAAUFB0NFSUxJTkcECXdsZ0Ftb3VudAkAawMFB3VzZHRBbXQFBU1VTFQ4BQhidXlQcmljZQQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUHYWRkcmVzcwQHbWF4VXNkdAkAawMFBm1heFdsZwUIYnV5UHJpY2UFBU1VTFQ4BAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgUDbmlsCQDMCAIFCXdsZ0Ftb3VudAkAzAgCBQ5NSU5TSE9QUEFZTUVOVAkAzAgCBQdtYXhVc2R0CQDMCAIFDHByb2ZpdEFtb3VudAUDbmlsAWkBB3NlbGxXbGcBCW1pbkFtb3VudAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAQGY2FsbGVyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUGY2FsbGVyBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQRhZGRyAwkAZgIFBndsZ0FtdAUGbWF4V2xnCQACAQkArAICCQCsAgICEllvdSBjYW4gc3BlbmQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQECXNlbGxQcmljZQkAaQIJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UAAgQHdXNkdEFtdAkAawMFBndsZ0FtdAUJc2VsbFByaWNlBQVNVUxUOAMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQDCQBmAgUJbWluQW1vdW50BQd1c2R0QW10CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAUJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBlAgUMY3VyV2xnQW1vdW50BQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUEYWRkcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEFBGFkZHIJAGUCBQZtYXhXbGcFBndsZ0FtdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFDXByb2ZpdEFkZHJLZXkFDHByb2ZpdEFtb3VudAULdXNkdEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQd1c2R0QW10BQt1c2R0QXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPc2VsbFdsZ1JFQURPTkxZAgdhZGRyZXNzBndsZ0FtdAQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUHYWRkcmVzcwQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAECXNlbGxQcmljZQkAaQIJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UAAgQHdXNkdEFtdAkAawMFBndsZ0FtdAUJc2VsbFByaWNlBQVNVUxUOAQGbWluV2xnCQBrAwUOTUlOU0hPUFBBWU1FTlQFBU1VTFQ4BQlzZWxsUHJpY2UEDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABQkAlAoCBQNuaWwJAMwIAgUHdXNkdEFtdAkAzAgCBQZtaW5XbGcJAMwIAgUGbWF4V2xnCQDMCAIFDHByb2ZpdEFtb3VudAUDbmlsAWkBBWNsYWltAAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQNJHQwMTY0MzkxNjUwOAkBDmNsYWltSW50ZXJuYWwyAQkApQgBCAUBaQZjYWxsZXIEB2FjdGlvbnMIBQ0kdDAxNjQzOTE2NTA4Al8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMTY0MzkxNjUwOAJfMgkAlAoCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQd2xnQ2xhaW1lZEFtb3VudAUKd2xnQXNzZXRJZAUMcHJvbG9nUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEm9uU3Rha2VVbnN0YWtlTGFuZAEEYWRkcgMDAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgUNYWNyZXNDb250cmFjdAcJAQIhPQIIBQFpBmNhbGxlcgUOYWNyZXMyQ29udHJhY3QHCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDSR0MDE2ODI4MTY4ODUJAQ5jbGFpbUludGVybmFsMgEFBGFkZHIDCQAAAgUNJHQwMTY4MjgxNjg4NQUNJHQwMTY4MjgxNjg4NQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDE2ODI4MTY4ODUCXzIEB2FjdGlvbnMIBQ0kdDAxNjgyODE2ODg1Al8xCQCUCgIDCQBmAgUQd2xnQ2xhaW1lZEFtb3VudAAACQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIFEHdsZ0NsYWltZWRBbW91bnQFCndsZ0Fzc2V0SWQFB2FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVb25TdGFrZVVuc3Rha2VMYW5kT2xkAQRhZGRyAwMDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0BwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTcyNjgxNzMyNAkBDWNsYWltSW50ZXJuYWwBBQRhZGRyAwkAAAIFDSR0MDE3MjY4MTczMjQFDSR0MDE3MjY4MTczMjQEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNzI2ODE3MzI0Al8yBAdhY3Rpb25zCAUNJHQwMTcyNjgxNzMyNAJfMQkAlAoCAwkAZgIFEHdsZ0NsYWltZWRBbW91bnQAAAkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyBRB3bGdDbGFpbWVkQW1vdW50BQp3bGdBc3NldElkBQNuaWwFEHdsZ0NsYWltZWRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKYnVybldsZ29sZAEGd2xnQW10AwMJAQIhPQIIBQFpBmNhbGxlcgUOYWNyZXMyQ29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgUObWFya2V0Q29udHJhY3QHCQACAQIRUGVybWlzc2lvbiBkZW5pZWQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAAAwkAZgIFBndsZ0FtdAkAkQMCBQhjdXJTdGF0cwUIaXhXbGdXbGcJAAIBCQCsAgIJAKwCAgkArAICAgVPbmx5IAkBCmZpeGVkUG9pbnQCCQCRAwIFCGN1clN0YXRzBQhpeFdsZ1dsZwAIAiUgV0xHT0xEIGxlZnQgb24gY29udHJhY3QsIGNhbid0IGJ1cm4gCQEKZml4ZWRQb2ludAIFBndsZ0FtdAAIBA13bGdBbW91bnRMZWZ0CQBlAgkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQFBndsZ0FtdAkAlAoCCQDMCAIJAQRCdXJuAgUKd2xnQXNzZXRJZAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkFDXdsZ0Ftb3VudExlZnQFA25pbAUNd2xnQW1vdW50TGVmdAFpAQxiZXRGb3JUaWNrZXQBA2JldAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIECGRyYXdXZWVrCQBlAgkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MAAQQLdXNlclRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrAAAEC3dlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUIZHJhd1dlZWsAAAMDCQBmAgULdXNlclRpY2tldHMAAAkAZgIFC3dlZWtUaWNrZXRzAAAHCQACAQIbUGxlYXNlIG9wZW4gdGhlIGNoZXN0IGZpcnN0AwkBAiE9AgkAaQIFA2JldAAEAAAJAAIBAhtJbnZhbGlkIGJldDogc2hvdWxkIGJlIDAuLjMEBm1vbWVudAkAagIFBmhlaWdodAUKREFZX0JMT0NLUwMJAGYCBQZtb21lbnQJAGUCBQpEQVlfQkxPQ0tTAAMJAAIBCQCsAgIJAKwCAgIxQ2Fubm90IGJldDogdGhlIGRheSBpcyBhbG1vc3QgZW5kZWQsIHBsZWFzZSB3YWl0IAkApAMBCQBlAgUKREFZX0JMT0NLUwUGbW9tZW50AgcgYmxvY2tzBAtzdGFrZWRBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUEYWRkcgAAAwkAZgIFDUFDUkVTX0ZPUl9CRVQFC3N0YWtlZEFjcmVzCQACAQkArAICCQCsAgICG1lvdSBuZWVkIHRvIHN0YWtlIGF0IGxlYXN0IAkBCmZpeGVkUG9pbnQCBQ1BQ1JFU19GT1JfQkVUAAgCDSBBQ1JFUyB0byBiZXQECHRvbW9ycm93CQBkAgkAaQIFBmhlaWdodAUKREFZX0JMT0NLUwABBAZiZXRLZXkJAQprZXlVc2VyQmV0AQUEYWRkcgQNb2xkVXNlckJldFN0cgkAoggBBQZiZXRLZXkEC25ld0JldEVudHJ5CQELU3RyaW5nRW50cnkCBQZiZXRLZXkJAKwCAgkArAICCQCkAwEFCHRvbW9ycm93AgFfCQCkAwEFA2JldAMJAQlpc0RlZmluZWQBBQ1vbGRVc2VyQmV0U3RyBAd1c2VyQmV0CQEFdmFsdWUBBQ1vbGRVc2VyQmV0U3RyAwkAAAIJAJEDAgkAtQkCBQd1c2VyQmV0AgFfAAAJAKQDAQUIdG9tb3Jyb3cJAAIBAhxZb3UgYWxyZWFkeSBiZXQgZm9yIHRvbW9ycm93BAFyCQEUY2xhaW1UaWNrZXRzSW50ZXJuYWwCBQRhZGRyBQd1c2VyQmV0CQCUCgIJAM0IAggFAXICXzEFC25ld0JldEVudHJ5CAUBcgJfMgkAlAoCCQDMCAIFC25ld0JldEVudHJ5BQNuaWwAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQl0YWtlV2xnWHABBGFkZHIDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA0kdDAxOTk1NjE5OTk5CQEOdGFrZVhwSW50ZXJuYWwCBQRhZGRyAAAEB2FjdGlvbnMIBQ0kdDAxOTk1NjE5OTk5Al8xBAJ4cAgFDSR0MDE5OTU2MTk5OTkCXzIJAJQKAgUHYWN0aW9ucwUCeHABaQESY2hlY2tXbGdYcFJFQURPTkxZAQRhZGRyBA0kdDAyMDA3NjIwMTI0CQEOdGFrZVhwSW50ZXJuYWwCBQRhZGRyAAAEB2lnbm9yZWQIBQ0kdDAyMDA3NjIwMTI0Al8xBAdkZWx0YVhQCAUNJHQwMjAwNzYyMDEyNAJfMgQFbmV3WFAJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBCWtleVVzZXJYUAEFBGFkZHIAAAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5VXNlckxldmVsAQUEYWRkcgAABQVuZXdYUAkAlAoCBQNuaWwJAM0IAgUJbHZsUG9pbnRzBQVuZXdYUAFpAQxzZXROdW1Qcml6ZXMBCW51bVByaXplcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5TnVtTkZUMkRyYXcBBQR3ZWVrBQludW1Qcml6ZXMFA25pbAUJbnVtUHJpemVzAWkBCW9wZW5DaGVzdAAEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECGRyYXdXZWVrCQBlAgkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MAAQQEYWRkcgkApQgBCAUBaQZjYWxsZXIEC3VzZXJUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawAAAwkAZwIAAAULdXNlclRpY2tldHMJAAIBAhlObyBnZW1zIHRvIG9wZW4gdGhlIGNoZXN0CQERb3BlbkNoZXN0SW50ZXJuYWwBBQRhZGRyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmFkZEdlbXNGb3ICBGFkZHIMZGVsdGFUaWNrZXRzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTBAp0aWNrZXRzS2V5CQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUEd2VlawQPb2xkVG90YWxUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawAABApvbGRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEFCnRpY2tldHNLZXkAAAQPb2xkUGFydGljaXBhbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrAAAEEnVwZGF0ZVBhcnRpY2lwYW50cwMDCQAAAgUKb2xkVGlja2V0cwAACQAAAgUMZGVsdGFUaWNrZXRzAAEHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQUEd2VlawkAZAIFD29sZFBhcnRpY2lwYW50cwABBQNuaWwFA25pbAkAlAoCCQDNCAIJAM0IAgUSdXBkYXRlUGFydGljaXBhbnRzCQEMSW50ZWdlckVudHJ5AgUKdGlja2V0c0tleQkAZAIFCm9sZFRpY2tldHMFDGRlbHRhVGlja2V0cwkBDEludGVnZXJFbnRyeQIJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawkAZAIFD29sZFRvdGFsVGlja2V0cwUMZGVsdGFUaWNrZXRzBQxkZWx0YVRpY2tldHMApTUtJQ==", "height": 3415701, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Fv5kpH7SLtaykk6Jh46YWctaXLcZDnzU6jZR3Gu6nwhk Next: none Diff:
Old | New | Differences | |
---|---|---|---|
87 | 87 | ||
88 | 88 | let u = 5 | |
89 | 89 | ||
90 | - | func v () = "%s__restConfig" | |
90 | + | let v = 6 | |
91 | + | ||
92 | + | func w () = "%s__restConfig" | |
91 | 93 | ||
92 | 94 | ||
93 | - | func | |
95 | + | func x () = "%s__rest2Addr" | |
94 | 96 | ||
95 | 97 | ||
96 | - | func | |
98 | + | func y () = "%s__restAddr" | |
97 | 99 | ||
98 | 100 | ||
99 | - | let | |
101 | + | let z = addressFromStringValue(valueOrElse(getString(this, y()), m)) | |
100 | 102 | ||
101 | - | func | |
103 | + | func A (B) = split_4C(o(B, w()), a) | |
102 | 104 | ||
103 | 105 | ||
104 | - | func | |
106 | + | func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E))) | |
105 | 107 | ||
106 | 108 | ||
107 | - | let | |
109 | + | let F = 1 | |
108 | 110 | ||
109 | - | let | |
111 | + | let G = 8 | |
110 | 112 | ||
111 | - | let | |
113 | + | let H = A(z) | |
112 | 114 | ||
113 | - | let | |
115 | + | let I = C(H, F) | |
114 | 116 | ||
115 | - | let | |
117 | + | let J = C(H, G) | |
116 | 118 | ||
117 | - | let | |
119 | + | let K = addressFromStringValue(valueOrElse(getString(this, x()), l)) | |
118 | 120 | ||
119 | - | let | |
121 | + | let D = A(K) | |
120 | 122 | ||
121 | - | let | |
123 | + | let L = C(D, r) | |
122 | 124 | ||
123 | - | let | |
125 | + | let M = C(D, s) | |
124 | 126 | ||
125 | - | let | |
127 | + | let N = C(D, t) | |
126 | 128 | ||
127 | - | let | |
129 | + | let O = C(D, u) | |
128 | 130 | ||
129 | - | func O (P) = ("lastWeekTxIdByUser_" + P) | |
131 | + | let P = C(D, v) | |
132 | + | ||
133 | + | func Q (R) = ("lastWeekTxIdByUser_" + R) | |
130 | 134 | ||
131 | 135 | ||
132 | - | let | |
136 | + | let S = "wlg_assetId" | |
133 | 137 | ||
134 | - | let | |
138 | + | let T = valueOrErrorMessage(getBinary(M, S), "WLGOLD is not issued yet") | |
135 | 139 | ||
136 | - | func | |
140 | + | func U (R) = ("userBet_" + R) | |
137 | 141 | ||
138 | 142 | ||
139 | - | func | |
143 | + | func V (R,W) = ((("userWeekTickets_" + R) + "_") + toString(W)) | |
140 | 144 | ||
141 | 145 | ||
142 | - | func | |
146 | + | func X (W) = ("totalWeekTickets_" + toString(W)) | |
143 | 147 | ||
144 | 148 | ||
145 | - | func | |
149 | + | func Y (W) = ("totalWeekParticipants_" + toString(W)) | |
146 | 150 | ||
147 | 151 | ||
148 | - | func | |
152 | + | func Z (W) = ("numNFT2Draw_" + toString(W)) | |
149 | 153 | ||
150 | 154 | ||
151 | - | func | |
155 | + | func aa (W) = ("numNFTDrawn_" + toString(W)) | |
152 | 156 | ||
153 | 157 | ||
154 | - | func | |
158 | + | func ab (W) = ("weekWinners_" + toString(W)) | |
155 | 159 | ||
156 | 160 | ||
157 | - | func | |
158 | - | let | |
159 | - | let | |
160 | - | then | |
161 | - | else ( | |
162 | - | (toInt(value(value(blockInfoByHeight( | |
161 | + | func ac (ad) = { | |
162 | + | let ae = (ad * g) | |
163 | + | let af = if ((ae > j)) | |
164 | + | then ae | |
165 | + | else (ae + j) | |
166 | + | (toInt(value(value(blockInfoByHeight(af)).vrf)) % 4) | |
163 | 167 | } | |
164 | 168 | ||
165 | 169 | ||
166 | - | let | |
170 | + | let ag = 0 | |
167 | 171 | ||
168 | - | let | |
172 | + | let ah = 1 | |
169 | 173 | ||
170 | - | let | |
174 | + | let ai = 2 | |
171 | 175 | ||
172 | - | let | |
176 | + | let aj = 8 | |
173 | 177 | ||
174 | - | let | |
178 | + | let ak = 11 | |
175 | 179 | ||
176 | - | let | |
180 | + | let al = 12 | |
177 | 181 | ||
178 | - | let | |
182 | + | let am = 15 | |
179 | 183 | ||
180 | - | let | |
184 | + | let an = 16 | |
181 | 185 | ||
182 | - | let | |
186 | + | let ao = 19 | |
183 | 187 | ||
184 | - | let | |
188 | + | let ap = 23 | |
185 | 189 | ||
186 | - | let | |
190 | + | let aq = 24 | |
187 | 191 | ||
188 | - | let | |
192 | + | let ar = 25 | |
189 | 193 | ||
190 | - | let | |
194 | + | let as = 26 | |
191 | 195 | ||
192 | - | let | |
196 | + | let at = 27 | |
193 | 197 | ||
194 | - | let | |
198 | + | let au = 28 | |
195 | 199 | ||
196 | - | let | |
200 | + | let av = 29 | |
197 | 201 | ||
198 | - | func | |
199 | - | let h = | |
202 | + | func aw (ax) = { | |
203 | + | let h = ax | |
200 | 204 | if ($isInstanceOf(h, "Int")) | |
201 | 205 | then { | |
202 | - | let | |
203 | - | | |
206 | + | let ay = h | |
207 | + | ay | |
204 | 208 | } | |
205 | 209 | else throw("fail to cast into Int") | |
206 | 210 | } | |
207 | 211 | ||
208 | 212 | ||
209 | - | func | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | (((toString(( | |
213 | + | func az (aA,aB) = { | |
214 | + | let aC = pow(10, 0, aB, 0, 0, DOWN) | |
215 | + | let aD = toString((aA % aC)) | |
216 | + | let aE = drop(toString(aC), (1 + size(aD))) | |
217 | + | (((toString((aA / aC)) + ".") + aE) + aD) | |
214 | 218 | } | |
215 | 219 | ||
216 | 220 | ||
217 | - | func | |
221 | + | func aF (aG,aH,aI) = if ((0 >= aG)) | |
218 | 222 | then throw("maxValue should be > 0") | |
219 | 223 | else { | |
220 | - | let | |
221 | - | (toInt( | |
224 | + | let aJ = sha256_16Kb((aH + aI)) | |
225 | + | (toInt(aJ) % aG) | |
222 | 226 | } | |
223 | 227 | ||
224 | 228 | ||
225 | - | let | |
229 | + | let aK = 100000000 | |
226 | 230 | ||
227 | - | let | |
231 | + | let aL = 3200 | |
228 | 232 | ||
229 | - | let | |
233 | + | let aM = 4000 | |
230 | 234 | ||
231 | - | let | |
235 | + | let aN = 3 | |
232 | 236 | ||
233 | - | let | |
237 | + | let aO = 100000000000 | |
234 | 238 | ||
235 | - | func | |
239 | + | func aP (R) = ("userXP_" + R) | |
236 | 240 | ||
237 | 241 | ||
238 | - | func | |
242 | + | func aQ (R) = ("userLevel_" + R) | |
239 | 243 | ||
240 | 244 | ||
241 | - | let | |
245 | + | let aR = 10000 | |
242 | 246 | ||
243 | - | func | |
247 | + | func aS (aT) = fraction(aL, pow(aT, 4, aM, 4, 4, DOWN), aK) | |
244 | 248 | ||
245 | 249 | ||
246 | - | func | |
247 | - | let | |
248 | - | [ | |
250 | + | func aU (aV,aW) = { | |
251 | + | let aX = aS(aW) | |
252 | + | [aX, (aN * (aX - aV))] | |
249 | 253 | } | |
250 | 254 | ||
251 | 255 | ||
252 | - | let | |
256 | + | let aY = 1000000 | |
253 | 257 | ||
254 | - | let | |
258 | + | let aZ = 100000000 | |
255 | 259 | ||
256 | - | let | |
260 | + | let ba = 100000000000000 | |
257 | 261 | ||
258 | - | let | |
262 | + | let bb = 200000 | |
259 | 263 | ||
260 | - | let | |
264 | + | let bc = 100000 | |
261 | 265 | ||
262 | - | let | |
266 | + | let bd = 400000 | |
263 | 267 | ||
264 | - | let | |
268 | + | let be = 31557600000 | |
265 | 269 | ||
266 | - | let | |
270 | + | let bf = 86400000 | |
267 | 271 | ||
268 | - | let | |
272 | + | let bg = 50000 | |
269 | 273 | ||
270 | - | let | |
274 | + | let bh = take(drop(this.bytes, 1), 1) | |
271 | 275 | ||
272 | - | let | |
273 | - | let h = | |
276 | + | let bi = { | |
277 | + | let h = bh | |
274 | 278 | if ((base58'2W' == h)) | |
275 | 279 | then 1208630000 | |
276 | 280 | else if ((base58'2T' == h)) | |
278 | 282 | else throw("Unknown chain") | |
279 | 283 | } | |
280 | 284 | ||
281 | - | let | |
285 | + | let bj = "teamAddr" | |
282 | 286 | ||
283 | - | let | |
287 | + | let bk = "lastClaimedTime_team" | |
284 | 288 | ||
285 | - | let | |
289 | + | let bl = "teamAmountLeft" | |
286 | 290 | ||
287 | - | let | |
291 | + | let bm = "lastClaimedTime_activities" | |
288 | 292 | ||
289 | - | let | |
293 | + | let bn = "activitiesAmountLeft" | |
290 | 294 | ||
291 | - | let | |
295 | + | let bo = "stakersAmountLeft" | |
292 | 296 | ||
293 | - | func | |
297 | + | func bp (R) = ("lastClaimedTimeUserOld_" + R) | |
294 | 298 | ||
295 | 299 | ||
296 | - | func | |
300 | + | func bq (R) = ("lastArbTimeUser_" + R) | |
297 | 301 | ||
298 | 302 | ||
299 | - | func | |
303 | + | func br (R) = ("lastWlgLimitUser_" + R) | |
300 | 304 | ||
301 | 305 | ||
302 | - | func | |
306 | + | func bs (bt) = fraction(ba, (bd * (bt + 1)), (6 * aY)) | |
303 | 307 | ||
304 | 308 | ||
305 | - | let | |
309 | + | let bu = "wlg_issueTime" | |
306 | 310 | ||
307 | - | let | |
311 | + | let bv = "wlg_issuedAmount" | |
308 | 312 | ||
309 | - | let | |
313 | + | let bw = "zbill_issuedAmount" | |
310 | 314 | ||
311 | - | func | |
315 | + | func bx (R) = ("acresStakedAmountByUser_" + R) | |
312 | 316 | ||
313 | 317 | ||
314 | - | let | |
318 | + | let by = "acresStakedAmountTotal" | |
315 | 319 | ||
316 | - | func | |
320 | + | func bz (R) = ("wlgStakedAmountByUser_" + R) | |
317 | 321 | ||
318 | 322 | ||
319 | - | let | |
323 | + | let bA = "wlgStakedAmountTotal" | |
320 | 324 | ||
321 | - | func | |
325 | + | func bB (R) = ("wlgStakedTimeByUser_" + R) | |
322 | 326 | ||
323 | 327 | ||
324 | - | let | |
328 | + | let bC = 0 | |
325 | 329 | ||
326 | - | let | |
330 | + | let bD = 1 | |
327 | 331 | ||
328 | - | let | |
332 | + | let bE = 2 | |
329 | 333 | ||
330 | - | let | |
334 | + | let bF = 3 | |
331 | 335 | ||
332 | - | let | |
336 | + | let bG = 4 | |
333 | 337 | ||
334 | - | let | |
338 | + | let bH = 5 | |
335 | 339 | ||
336 | - | let | |
340 | + | let bI = 6 | |
337 | 341 | ||
338 | - | func | |
339 | - | let | |
340 | - | func | |
342 | + | func bJ (bK,I,J) = { | |
343 | + | let bL = split(valueOrElse(getString(I, "resTypesProportions"), "0_0_0_0_0_0"), "_") | |
344 | + | func bM (bN,bO) = (bN + parseIntValue(bO)) | |
341 | 345 | ||
342 | - | let | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | func | |
347 | - | then | |
348 | - | else | |
346 | + | let bP = { | |
347 | + | let bQ = bL | |
348 | + | let bR = size(bQ) | |
349 | + | let bS = 0 | |
350 | + | func bT (bU,bV) = if ((bV >= bR)) | |
351 | + | then bU | |
352 | + | else bM(bU, bQ[bV]) | |
349 | 353 | ||
350 | - | func | |
351 | - | then | |
354 | + | func bW (bU,bV) = if ((bV >= bR)) | |
355 | + | then bU | |
352 | 356 | else throw("List size exceeds 6") | |
353 | 357 | ||
354 | - | | |
358 | + | bW(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6) | |
355 | 359 | } | |
356 | - | let | |
357 | - | let | |
358 | - | let | |
359 | - | [ | |
360 | + | let bX = valueOrElse(getInteger(I, ("stakedPiecesByOwner_" + bK)), 0) | |
361 | + | let bY = valueOrElse(getInteger(J, by), 0) | |
362 | + | let bZ = valueOrElse(getInteger(J, bx(bK)), 0) | |
363 | + | [bP, bX, bY, bZ] | |
360 | 364 | } | |
361 | 365 | ||
362 | 366 | ||
363 | - | let | |
367 | + | let ca = 0 | |
364 | 368 | ||
365 | - | let | |
369 | + | let cb = 1 | |
366 | 370 | ||
367 | - | let | |
371 | + | let cc = 2 | |
368 | 372 | ||
369 | - | let | |
373 | + | let cd = 3 | |
370 | 374 | ||
371 | - | let | |
375 | + | let ce = 1733346000000 | |
372 | 376 | ||
373 | - | func | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | let | |
379 | - | let | |
380 | - | let | |
381 | - | let | |
382 | - | let | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | let | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
395 | - | let | |
396 | - | let | |
397 | - | let | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | let | |
402 | - | let | |
403 | - | let | |
377 | + | func cf (cg,ch,ci,cj,ck) = { | |
378 | + | let cl = valueOrErrorMessage(getInteger(ch[bF], bv), "WLGOLD is not issued yet") | |
379 | + | let cm = assetBalance(ch[bE], ci) | |
380 | + | let cn = assetBalance(ch[bC], ci) | |
381 | + | let co = (assetBalance(ch[bF], ci) - cj) | |
382 | + | let cp = assetBalance(ch[bG], ci) | |
383 | + | let cq = ch[bH] | |
384 | + | let cr = (assetBalance(cq, ci) + valueOrElse(getInteger(cq, bw), 0)) | |
385 | + | let cs = ((cm + co) + cr) | |
386 | + | let ct = valueOrErrorMessage(getBinary(ch[bF], "wlg_assetId"), "Not initialized yet") | |
387 | + | let cu = lastBlock.timestamp | |
388 | + | let cv = valueOrErrorMessage(getInteger(ch[bF], bu), "Not initialized") | |
389 | + | let cw = assetBalance(ch[bD], ct) | |
390 | + | let cx = fraction(ba, bb, aY) | |
391 | + | let cy = valueOrElse(getInteger(ch[bF], bl), cx) | |
392 | + | let cz = valueOrElse(getInteger(ch[bF], bk), cv) | |
393 | + | let cA = addressFromStringValue(value(getString(ch[bF], bj))) | |
394 | + | let cB = min([fraction(cx, (cu - cz), (3 * be)), cy]) | |
395 | + | let cC = assetBalance(cA, ct) | |
396 | + | let cD = fraction(ba, bc, aY) | |
397 | + | let cE = valueOrElse(getInteger(ch[bF], bn), cD) | |
398 | + | let cF = valueOrElse(getInteger(ch[bF], bm), cv) | |
399 | + | let cG = min([fraction(cD, (cu - cF), (3 * be)), cE]) | |
400 | + | let cH = assetBalance(ch[bC], ct) | |
401 | + | let cI = valueOrElse(getInteger(ch[bF], bp(cg)), cv) | |
402 | + | let cJ = ((cI - cv) / be) | |
403 | + | let cK = min([min([cu, (cv + (3 * be))]), ce]) | |
404 | + | let cL = min([((cu - cv) / be), 2]) | |
405 | + | let cM = bJ(cg, ch[bD], ch[bI]) | |
406 | + | let cN = bs(cL) | |
407 | + | let cO = if ((cJ == cL)) | |
404 | 408 | then { | |
405 | - | let | |
406 | - | let | |
407 | - | let | |
408 | - | $Tuple3( | |
409 | + | let cP = fraction(cN, (cK - cI), be) | |
410 | + | let cQ = fraction(cP, ck, aY) | |
411 | + | let cR = (cI + fraction((cK - cI), ck, aY)) | |
412 | + | $Tuple3(cQ, cP, cR) | |
409 | 413 | } | |
410 | - | else if (( | |
414 | + | else if ((cJ == (cL - 1))) | |
411 | 415 | then { | |
412 | - | let | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | then ( | |
418 | - | else (( | |
419 | - | $Tuple3( | |
416 | + | let cS = fraction(bs((cL - 1)), ((cv + (be * cL)) - cI), be) | |
417 | + | let cP = fraction(cN, (cK - (cv + (be * cL))), be) | |
418 | + | let cT = (cS + cP) | |
419 | + | let cQ = fraction(cT, ck, aY) | |
420 | + | let cR = if ((cS >= cQ)) | |
421 | + | then (cI + fraction(be, cQ, bs((cL - 1)))) | |
422 | + | else ((cv + (be * cL)) + fraction(be, (cQ - cS), cN)) | |
423 | + | $Tuple3(cQ, cT, cR) | |
420 | 424 | } | |
421 | 425 | else { | |
422 | - | let | |
423 | - | let | |
424 | - | let | |
425 | - | let | |
426 | - | let | |
427 | - | let | |
428 | - | then ( | |
429 | - | else if ((( | |
430 | - | then (( | |
431 | - | else (( | |
432 | - | $Tuple3( | |
426 | + | let cU = fraction(bs((cL - 2)), ((cv + (be * (cL - 1))) - cI), be) | |
427 | + | let cS = bs((cL - 1)) | |
428 | + | let cP = fraction(cN, (cK - (cv + (be * cL))), be) | |
429 | + | let cT = ((cU + cS) + cP) | |
430 | + | let cQ = fraction(cT, ck, aY) | |
431 | + | let cR = if ((cU >= cQ)) | |
432 | + | then (cI + fraction(be, cQ, bs((cL - 2)))) | |
433 | + | else if (((cU + cS) >= cQ)) | |
434 | + | then ((cv + (be * (cL - 1))) + fraction(be, (cQ - cU), bs((cL - 1)))) | |
435 | + | else ((cv + (be * cL)) + fraction(be, ((cQ - cU) - cS), cN)) | |
436 | + | $Tuple3(cQ, cT, cR) | |
433 | 437 | } | |
434 | - | let | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | let | |
439 | - | let | |
440 | - | let | |
441 | - | let | |
442 | - | let | |
443 | - | [ | |
438 | + | let cV = cO._1 | |
439 | + | let cW = cO._2 | |
440 | + | let cX = cO._3 | |
441 | + | let cY = fraction(fraction(cN, bf, be), 25, cM[ca]) | |
442 | + | let cZ = valueOrElse(getInteger(ch[bF], bo), 0) | |
443 | + | let da = fraction(cV, ((cM[cb] * aZ) + cM[cd]), ((cM[ca] * aZ) + cM[cc])) | |
444 | + | let db = fraction(da, bg, aY) | |
445 | + | let dc = (da - db) | |
446 | + | let dd = fraction(cW, ((cM[cb] * aZ) + cM[cd]), ((cM[ca] * aZ) + cM[cc])) | |
447 | + | [cl, fraction((cs - bi), aZ, cl), cs, cm, cn, co, cp, cv, cz, cx, cy, cB, cC, cD, cE, cG, cH, cL, cZ, cN, cI, dc, cY, cr, dd, cX, cw] | |
444 | 448 | } | |
445 | 449 | ||
446 | 450 | ||
447 | - | let | |
451 | + | let de = 1000000 | |
448 | 452 | ||
449 | - | let | |
453 | + | let df = 100000000 | |
450 | 454 | ||
451 | - | let | |
455 | + | let dg = 200000 | |
452 | 456 | ||
453 | - | let | |
457 | + | let dh = 100000 | |
454 | 458 | ||
455 | - | let | |
459 | + | let di = 400000 | |
456 | 460 | ||
457 | - | let | |
461 | + | let dj = 31557600000 | |
458 | 462 | ||
459 | - | let | |
463 | + | let dk = 86400000 | |
460 | 464 | ||
461 | - | let | |
465 | + | let dl = 1000000000 | |
462 | 466 | ||
463 | - | let | |
467 | + | let dm = 800000 | |
464 | 468 | ||
465 | - | let | |
469 | + | let dn = 100000 | |
466 | 470 | ||
467 | - | let | |
471 | + | let do = 100000 | |
468 | 472 | ||
469 | - | let | |
473 | + | let dp = 1731279600000 | |
470 | 474 | ||
471 | - | let | |
475 | + | let dq = "marketingAddr" | |
472 | 476 | ||
473 | - | let | |
477 | + | let dr = "teamAddr" | |
474 | 478 | ||
475 | - | let | |
479 | + | let ds = "lastClaimedTime_team" | |
476 | 480 | ||
477 | - | let | |
481 | + | let dt = "teamAmountLeft" | |
478 | 482 | ||
479 | - | let | |
483 | + | let du = "lastClaimedTime_activities" | |
480 | 484 | ||
481 | - | let | |
485 | + | let dv = "activitiesAmountLeft" | |
482 | 486 | ||
483 | - | let | |
487 | + | let dw = "stakersAmountLeft" | |
484 | 488 | ||
485 | - | func | |
489 | + | func dx (R) = ("lastClaimedTimeUser_" + R) | |
486 | 490 | ||
487 | 491 | ||
488 | - | func | |
492 | + | func dy (cl,bt) = fraction(cl, (di * (bt + 1)), (6 * de)) | |
489 | 493 | ||
490 | 494 | ||
491 | - | let | |
495 | + | let dz = "wlg_issue10Time" | |
492 | 496 | ||
493 | - | let | |
497 | + | let dA = "wlg_issueTime" | |
494 | 498 | ||
495 | - | let | |
499 | + | let dB = "wlg_issuedAmount" | |
496 | 500 | ||
497 | - | let | |
501 | + | let dC = "zbill_issuedAmount" | |
498 | 502 | ||
499 | - | func | |
503 | + | func dD (R) = ("acresStakedAmountByUser_" + R) | |
500 | 504 | ||
501 | 505 | ||
502 | - | let | |
506 | + | let dE = "acresStakedAmountTotal" | |
503 | 507 | ||
504 | - | let | |
508 | + | let dF = "totalFarmingPower" | |
505 | 509 | ||
506 | - | let | |
510 | + | let dG = 0 | |
507 | 511 | ||
508 | - | let | |
512 | + | let dH = 1 | |
509 | 513 | ||
510 | - | let | |
514 | + | let dI = 2 | |
511 | 515 | ||
512 | - | let | |
516 | + | let dJ = 3 | |
513 | 517 | ||
514 | - | let | |
518 | + | let dK = 4 | |
515 | 519 | ||
516 | - | let | |
520 | + | let dL = 5 | |
517 | 521 | ||
518 | - | let | |
522 | + | let dM = 100000000 | |
519 | 523 | ||
520 | - | let | |
524 | + | let dN = "nftTotalIssued" | |
521 | 525 | ||
522 | - | let | |
526 | + | let dO = "nftTotalBurned" | |
523 | 527 | ||
524 | - | let | |
528 | + | let dP = "WlNftTotalStaked" | |
525 | 529 | ||
526 | - | func | |
530 | + | func dQ (R) = ("userWlNftNumber_" + R) | |
527 | 531 | ||
528 | 532 | ||
529 | - | func | |
533 | + | func dR (R) = ("userFullBonus_" + R) | |
530 | 534 | ||
531 | 535 | ||
532 | - | let | |
536 | + | let dS = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000] | |
533 | 537 | ||
534 | - | func | |
535 | - | let | |
536 | - | func | |
537 | - | then | |
538 | - | else ( | |
538 | + | func dT (dU) = { | |
539 | + | let dV = ((dU + 99999999) / df) | |
540 | + | func dW (bN,bO) = if ((bO >= dV)) | |
541 | + | then bN | |
542 | + | else (bN + 1) | |
539 | 543 | ||
540 | - | let | |
541 | - | let | |
542 | - | let | |
543 | - | func | |
544 | - | then | |
545 | - | else | |
544 | + | let bQ = dS | |
545 | + | let bR = size(bQ) | |
546 | + | let bS = 0 | |
547 | + | func bT (bU,bV) = if ((bV >= bR)) | |
548 | + | then bU | |
549 | + | else dW(bU, bQ[bV]) | |
546 | 550 | ||
547 | - | func | |
548 | - | then | |
551 | + | func bW (bU,bV) = if ((bV >= bR)) | |
552 | + | then bU | |
549 | 553 | else throw("List size exceeds 10") | |
550 | 554 | ||
551 | - | | |
555 | + | bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
552 | 556 | } | |
553 | 557 | ||
554 | 558 | ||
555 | - | func | |
559 | + | func dX (dU) = ((dU * 20) * (dT(dU) + 4)) | |
556 | 560 | ||
557 | 561 | ||
558 | - | func | |
559 | - | let | |
560 | - | $Tuple2(fraction( | |
562 | + | func dY (dU,dZ) = { | |
563 | + | let ea = dX(dU) | |
564 | + | $Tuple2(fraction(ea, (de + dZ), de), ea) | |
561 | 565 | } | |
562 | 566 | ||
563 | 567 | ||
564 | - | func | |
565 | - | let | |
566 | - | let | |
567 | - | let | |
568 | - | let | |
569 | - | let | |
570 | - | let | |
571 | - | [ | |
568 | + | func eb (bK,L) = { | |
569 | + | let ec = valueOrElse(getInteger(L, dF), 0) | |
570 | + | let bZ = valueOrElse(getInteger(L, dD(bK)), 0) | |
571 | + | let ed = valueOrElse(getInteger(L, dR(bK)), 0) | |
572 | + | let cO = dY(bZ, ed) | |
573 | + | let ee = cO._1 | |
574 | + | let ef = cO._2 | |
575 | + | [ec, ee, ef, ed] | |
572 | 576 | } | |
573 | 577 | ||
574 | 578 | ||
575 | - | let | |
579 | + | let eg = 0 | |
576 | 580 | ||
577 | - | let | |
581 | + | let eh = 1 | |
578 | 582 | ||
579 | - | func | |
580 | - | let | |
581 | - | let | |
582 | - | let | |
583 | - | let | |
584 | - | let | |
585 | - | let | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
593 | - | let | |
594 | - | let | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
602 | - | let | |
603 | - | let | |
604 | - | let | |
605 | - | let | |
606 | - | let | |
607 | - | let | |
608 | - | let | |
609 | - | let | |
610 | - | let | |
611 | - | let | |
612 | - | let | |
613 | - | then | |
614 | - | else if (( | |
583 | + | func ei (cg,ch,ci,cj) = { | |
584 | + | let cl = valueOrErrorMessage(getInteger(ch[dI], dB), "WLGOLD is not issued yet") | |
585 | + | let cn = assetBalance(ch[dG], ci) | |
586 | + | let co = (assetBalance(ch[dI], ci) - cj) | |
587 | + | let cp = assetBalance(ch[dJ], ci) | |
588 | + | let ej = assetBalance(ch[dH], ci) | |
589 | + | let cq = ch[dK] | |
590 | + | let cr = (assetBalance(cq, ci) + valueOrElse(getInteger(cq, dC), 0)) | |
591 | + | let cs = ((ej + co) + cr) | |
592 | + | let ct = valueOrErrorMessage(getBinary(ch[dI], "wlg_assetId"), "Not initialized yet") | |
593 | + | let cu = lastBlock.timestamp | |
594 | + | let cv = valueOrErrorMessage(getInteger(ch[dI], dA), "Not initialized") | |
595 | + | let ek = assetBalance(ch[dI], ct) | |
596 | + | let cx = fraction(cl, dg, de) | |
597 | + | let cy = valueOrElse(getInteger(ch[dI], dt), cx) | |
598 | + | let cz = valueOrElse(getInteger(ch[dI], ds), cv) | |
599 | + | let cA = addressFromStringValue(value(getString(ch[dI], dr))) | |
600 | + | let cB = min([fraction(cx, (cu - cz), (3 * dj)), cy]) | |
601 | + | let cC = assetBalance(cA, ct) | |
602 | + | let cD = fraction(cl, dh, de) | |
603 | + | let cE = valueOrElse(getInteger(ch[dI], dv), cD) | |
604 | + | let cF = valueOrElse(getInteger(ch[dI], du), cv) | |
605 | + | let cG = min([fraction(cD, (cu - cF), (3 * dj)), cE]) | |
606 | + | let cH = assetBalance(ch[dG], ct) | |
607 | + | let cI = valueOrElse(getInteger(ch[dI], dx(cg)), cv) | |
608 | + | let cJ = ((cI - cv) / dj) | |
609 | + | let cK = min([cu, (cv + (3 * dj))]) | |
610 | + | let cL = min([((cu - cv) / dj), 2]) | |
611 | + | let cM = eb(cg, ch[dH]) | |
612 | + | let cN = dy(cl, cL) | |
613 | + | let el = (cv + (dj * cL)) | |
614 | + | let em = (cv + (dj * (cL - 1))) | |
615 | + | let cP = fraction(cN, (cK - cI), dj) | |
616 | + | let cW = if ((cJ == cL)) | |
617 | + | then cP | |
618 | + | else if ((cJ == (cL - 1))) | |
615 | 619 | then { | |
616 | - | let | |
617 | - | ( | |
620 | + | let cS = fraction(dy(cl, (cL - 1)), (el - cI), dj) | |
621 | + | (cS + cP) | |
618 | 622 | } | |
619 | 623 | else { | |
620 | - | let | |
621 | - | let | |
622 | - | (( | |
624 | + | let cU = fraction(dy(cl, (cL - 2)), (em - cI), dj) | |
625 | + | let cS = dy(cl, (cL - 1)) | |
626 | + | ((cU + cS) + cP) | |
623 | 627 | } | |
624 | - | let | |
625 | - | let | |
626 | - | then fraction( | |
628 | + | let cZ = valueOrElse(getInteger(ch[dI], dw), 0) | |
629 | + | let cV = if ((cM[eg] != 0)) | |
630 | + | then fraction(cW, cM[eh], cM[eg]) | |
627 | 631 | else 0 | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
632 | - | let | |
633 | - | let | |
634 | - | then fraction(fraction(fraction( | |
632 | + | let en = valueOrElse(getInteger(ch[dI], dz), dp) | |
633 | + | let eo = fraction(dl, max([(cu - en), 0]), dk) | |
634 | + | let ep = fraction(eo, dn, de) | |
635 | + | let eq = fraction(eo, do, de) | |
636 | + | let er = max([(cu - max([dp, cI])), 0]) | |
637 | + | let es = if ((cM[eg] != 0)) | |
638 | + | then fraction(fraction(fraction(dl, er, dk), cM[eh], cM[eg]), dm, de) | |
635 | 639 | else 0 | |
636 | - | let | |
637 | - | let | |
638 | - | let | |
639 | - | let | |
640 | - | let | |
641 | - | let | |
642 | - | [ | |
640 | + | let et = max([dp, cu]) | |
641 | + | let eu = valueOrElse(getInteger(ch[dH], dE), 0) | |
642 | + | let ev = valueOrElse(getInteger(ch[dH], dN), 0) | |
643 | + | let ew = valueOrElse(getInteger(ch[dH], dO), 0) | |
644 | + | let ex = valueOrElse(getInteger(ch[dH], dP), 0) | |
645 | + | let ey = valueOrElse(getInteger(ch[dH], dQ(valueOrElse(cg, ""))), 0) | |
646 | + | [cl, ek, fraction(cs, df, cl), cs, cn, ej, co, cp, cv, cz, cx, cy, cB, cC, cD, cE, cG, cH, cL, cZ, cN, cI, cr, cV, cK, eo, ep, eq, es, et, cM[eg], eu, ev, ew, ex, ey] | |
643 | 647 | } | |
644 | 648 | ||
645 | 649 | ||
646 | - | let | |
650 | + | let ez = "profitAddr" | |
647 | 651 | ||
648 | - | let | |
652 | + | let eA = "stakersAmountPaidTotal" | |
649 | 653 | ||
650 | - | func | |
654 | + | func eB (R) = ("stakersAmountPaidUser_" + R) | |
651 | 655 | ||
652 | 656 | ||
653 | - | func | |
657 | + | func eC () = aw(reentrantInvoke(L, "saveLastTx", nil, nil)) | |
654 | 658 | ||
655 | 659 | ||
656 | - | func | |
657 | - | let | |
658 | - | let | |
659 | - | let | |
660 | - | let | |
661 | - | min([ | |
660 | + | func eD (R) = { | |
661 | + | let eE = valueOrElse(getInteger(bq(R)), 0) | |
662 | + | let eF = valueOrElse(getInteger(L, bx(R)), 0) | |
663 | + | let eG = valueOrElse(getInteger(br(R)), eF) | |
664 | + | let eH = (eG + fraction(eF, (lastBlock.timestamp - eE), e)) | |
665 | + | min([eH, eF]) | |
662 | 666 | } | |
663 | 667 | ||
664 | 668 | ||
665 | - | let | |
669 | + | let eI = 10 | |
666 | 670 | ||
667 | - | let | |
671 | + | let eJ = 11 | |
668 | 672 | ||
669 | - | let | |
673 | + | let eK = 14 | |
670 | 674 | ||
671 | - | let | |
675 | + | let eL = 15 | |
672 | 676 | ||
673 | - | let | |
677 | + | let eM = 18 | |
674 | 678 | ||
675 | - | let | |
679 | + | let eN = 24 | |
676 | 680 | ||
677 | - | let | |
681 | + | let eO = 25 | |
678 | 682 | ||
679 | - | func | |
680 | - | let | |
681 | - | let | |
682 | - | let | |
683 | - | let | |
684 | - | let | |
685 | - | let | |
686 | - | let | |
687 | - | let | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | let | |
692 | - | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString( | |
683 | + | func eP (R) = { | |
684 | + | let eQ = addressFromStringValue(R) | |
685 | + | let eR = addressFromStringValue(n) | |
686 | + | let eS = cf(R, [z, I, eR, M, N, O, J], k, 0, b) | |
687 | + | let cu = lastBlock.timestamp | |
688 | + | let cy = eS[eI] | |
689 | + | let eT = eS[eJ] | |
690 | + | let cE = eS[eK] | |
691 | + | let eU = eS[eL] | |
692 | + | let cV = eS[eN] | |
693 | + | let eV = eB(R) | |
694 | + | let eW = eS[eN] | |
695 | + | let eX = eS[eO] | |
696 | + | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(bj))), eT, T), ScriptTransfer(z, eU, T), IntegerEntry(eV, (valueOrElse(getInteger(eV), 0) + cV)), IntegerEntry(eA, (valueOrElse(getInteger(eA), 0) + eW)), IntegerEntry(bo, (eS[eM] - eW)), IntegerEntry(bl, (cy - eT)), IntegerEntry(bk, cu), IntegerEntry(bn, (cE - eU)), IntegerEntry(bm, cu), IntegerEntry(bp(R), eX)], cV) | |
693 | 697 | } | |
694 | 698 | ||
695 | 699 | ||
696 | - | func | |
697 | - | let | |
698 | - | let | |
699 | - | let | |
700 | - | let | |
701 | - | if (( | |
700 | + | func eY (R) = { | |
701 | + | let eS = ei(R, [K, L, M, N, O], k, 0) | |
702 | + | let eZ = dx(R) | |
703 | + | let cI = valueOrElse(getInteger(eZ), 0) | |
704 | + | let eX = eS[aq] | |
705 | + | if ((cI == eX)) | |
702 | 706 | then $Tuple2(nil, 0) | |
703 | 707 | else { | |
704 | - | let | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | then [IntegerEntry( | |
708 | + | let cu = lastBlock.timestamp | |
709 | + | let cv = eS[aj] | |
710 | + | let cy = eS[ak] | |
711 | + | let eT = (eS[al] + eS[at]) | |
712 | + | let fa = if ((eT > 0)) | |
713 | + | then [IntegerEntry(bl, ((cy - eT) + eS[at])), IntegerEntry(bk, cu), ScriptTransfer(addressFromStringValue(value(getString(bj))), eT, T)] | |
710 | 714 | else nil | |
711 | - | let | |
712 | - | let | |
713 | - | let | |
714 | - | then [IntegerEntry( | |
715 | + | let cE = eS[am] | |
716 | + | let eU = eS[an] | |
717 | + | let fb = if ((eU > 0)) | |
718 | + | then [IntegerEntry(bn, (cE - eU)), IntegerEntry(bm, cu), ScriptTransfer(z, eU, T)] | |
715 | 719 | else nil | |
716 | - | let | |
717 | - | let | |
718 | - | then [ScriptTransfer(addressFromStringValue(value(getString( | |
720 | + | let fc = eS[as] | |
721 | + | let fd = if ((fc > 0)) | |
722 | + | then [ScriptTransfer(addressFromStringValue(value(getString(dq))), fc, T)] | |
719 | 723 | else nil | |
720 | - | let | |
721 | - | let | |
722 | - | let | |
723 | - | let | |
724 | - | $Tuple2(((([Reissue( | |
724 | + | let cV = eS[ap] | |
725 | + | let eV = eB(R) | |
726 | + | let eW = (cV + eS[au]) | |
727 | + | let fe = eS[ar] | |
728 | + | $Tuple2(((([Reissue(T, fe, true), IntegerEntry(bv, (eS[ag] + fe)), IntegerEntry(dz, eS[av]), IntegerEntry(eV, (valueOrElse(getInteger(eV), 0) + cV)), IntegerEntry(eA, (valueOrElse(getInteger(eA), 0) + cV)), IntegerEntry(bo, (eS[ao] - cV)), IntegerEntry(eZ, eX)] ++ fa) ++ fb) ++ fd), eW) | |
725 | 729 | } | |
726 | 730 | } | |
727 | 731 | ||
728 | 732 | ||
729 | - | func | |
730 | - | let | |
731 | - | let | |
732 | - | let | |
733 | - | let | |
734 | - | let | |
735 | - | let | |
736 | - | let | |
737 | - | $Tuple3([IntegerEntry( | |
733 | + | func ff (R,fg) = { | |
734 | + | let cu = lastBlock.timestamp | |
735 | + | let fh = bB(R) | |
736 | + | let fi = bz(R) | |
737 | + | let eE = valueOrElse(getInteger(fh), 0) | |
738 | + | let fj = valueOrElse(getInteger(fi), 0) | |
739 | + | let fk = valueOrElse(getInteger(bA), 0) | |
740 | + | let aT = fraction(fraction(aR, fj, aO), (eE - cu), bf) | |
741 | + | $Tuple3([IntegerEntry(fh, cu), IntegerEntry(fi, (fj + fg)), IntegerEntry(bA, (fk + fg))], aT, fj) | |
738 | 742 | } | |
739 | 743 | ||
740 | 744 | ||
741 | - | func | |
742 | - | let | |
743 | - | let | |
744 | - | let | |
745 | - | let | |
746 | - | let | |
747 | - | if ((0 >= | |
745 | + | func fl (R) = { | |
746 | + | let W = (height / i) | |
747 | + | let fm = (W - 1) | |
748 | + | let fn = valueOrElse(getInteger(Z(fm)), dL) | |
749 | + | let fo = valueOrElse(getInteger(aa(fm)), 0) | |
750 | + | let fp = valueOrElse(getInteger(V(R, fm)), 0) | |
751 | + | if ((0 >= fp)) | |
748 | 752 | then $Tuple2(nil, unit) | |
749 | 753 | else { | |
750 | - | let | |
751 | - | if ((0 >= | |
752 | - | then $Tuple2([DeleteEntry( | |
754 | + | let fq = valueOrElse(getInteger(X(fm)), 0) | |
755 | + | if ((0 >= fq)) | |
756 | + | then $Tuple2([DeleteEntry(V(R, fm))], unit) | |
753 | 757 | else { | |
754 | - | let | |
755 | - | let | |
756 | - | let | |
757 | - | if ((( | |
758 | + | let aI = value(value(blockInfoByHeight((W * i))).vrf) | |
759 | + | let aH = fromBase58String(split(valueOrElse(getString(L, Q(R)), "42_DEFAULT"), "_")[1]) | |
760 | + | let fr = aF(fq, aH, aI) | |
761 | + | if (((fp * fn) > fr)) | |
758 | 762 | then { | |
759 | - | let | |
760 | - | let | |
761 | - | let | |
762 | - | then ((value( | |
763 | - | else | |
764 | - | $Tuple2([IntegerEntry( | |
763 | + | let fs = invoke(L, "issuePickC1", [R], nil) | |
764 | + | let ft = getString(ab(fm)) | |
765 | + | let fu = if (isDefined(ft)) | |
766 | + | then ((value(ft) + "_") + R) | |
767 | + | else R | |
768 | + | $Tuple2([IntegerEntry(aa(fm), (fo + 1)), DeleteEntry(V(R, fm)), StringEntry(ab(fm), fu)], fs) | |
765 | 769 | } | |
766 | 770 | else { | |
767 | - | let | |
768 | - | let | |
769 | - | let | |
770 | - | let | |
771 | - | $Tuple2(((if (( | |
771 | + | let fv = (aF(9, (base58'29' + aH), aI) + 1) | |
772 | + | let fw = fraction(fp, fv, 10) | |
773 | + | let fx = V(R, W) | |
774 | + | let fy = valueOrElse(getInteger(fx), 0) | |
775 | + | $Tuple2(((if ((fw == 0)) | |
772 | 776 | then nil | |
773 | 777 | else { | |
774 | - | let | |
775 | - | if (( | |
776 | - | then | |
777 | - | else ( | |
778 | - | }) :+ DeleteEntry( | |
778 | + | let fz = [IntegerEntry(X(W), (valueOrElse(getInteger(X(W)), 0) + fw)), IntegerEntry(fx, (fy + fw))] | |
779 | + | if ((fy > 0)) | |
780 | + | then fz | |
781 | + | else (fz :+ IntegerEntry(Y(W), (valueOrElse(getInteger(Y(W)), 0) + 1))) | |
782 | + | }) :+ DeleteEntry(V(R, fm))), fw) | |
779 | 783 | } | |
780 | 784 | } | |
781 | 785 | } | |
782 | 786 | } | |
783 | 787 | ||
784 | 788 | ||
785 | - | func | |
786 | - | let | |
787 | - | let | |
788 | - | let | |
789 | - | let | |
790 | - | let | |
791 | - | let | |
789 | + | func fA (R,fB) = { | |
790 | + | let W = (height / i) | |
791 | + | let fx = V(R, W) | |
792 | + | let fC = split(fB, "_") | |
793 | + | let fD = valueOrElse(getInteger(X(W)), 0) | |
794 | + | let fy = valueOrElse(getInteger(fx), 0) | |
795 | + | let fE = if ((ac(parseIntValue(fC[0])) == parseIntValue(fC[1]))) | |
792 | 796 | then 1 | |
793 | 797 | else 0 | |
794 | - | let | |
795 | - | let | |
796 | - | then ( | |
798 | + | let fF = valueOrElse(getInteger(Y(W)), 0) | |
799 | + | let fG = if (if ((fy == 0)) | |
800 | + | then (fE == 1) | |
797 | 801 | else false) | |
798 | - | then [IntegerEntry(W | |
802 | + | then [IntegerEntry(Y(W), (fF + 1))] | |
799 | 803 | else nil | |
800 | - | $Tuple2(if (( | |
804 | + | $Tuple2(if ((fE == 0)) | |
801 | 805 | then nil | |
802 | - | else (( | |
806 | + | else ((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE) | |
803 | 807 | } | |
804 | 808 | ||
805 | 809 | ||
806 | - | @Callable( | |
807 | - | func constructorV1 ( | |
810 | + | @Callable(fH) | |
811 | + | func constructorV1 (fI,fJ,cA,fK) = if ((fH.caller != this)) | |
808 | 812 | then throw("Permission denied") | |
809 | - | else if (isDefined(getBinary( | |
813 | + | else if (isDefined(getBinary(S))) | |
810 | 814 | then throw("Already initialized") | |
811 | 815 | else { | |
812 | - | let | |
813 | - | let | |
814 | - | let | |
815 | - | [ | |
816 | + | let cl = ba | |
817 | + | let fL = Issue("WLGOLD", "WavesLands Gold investment token", cl, 8, true, unit, 0) | |
818 | + | let fM = calculateAssetId(fL) | |
819 | + | [fL, IntegerEntry(bu, lastBlock.timestamp), IntegerEntry(bv, cl), IntegerEntry(eA, 0), IntegerEntry(bo, fraction(ba, bd, b)), BinaryEntry(S, fM), StringEntry(y(), fI), StringEntry(dq, fJ), StringEntry(bj, cA), StringEntry(ez, fK)] | |
816 | 820 | } | |
817 | 821 | ||
818 | 822 | ||
819 | 823 | ||
820 | - | @Callable( | |
821 | - | func constructorV2 ( | |
824 | + | @Callable(fH) | |
825 | + | func constructorV2 (fN) = if ((fH.caller != this)) | |
822 | 826 | then throw("Permission denied") | |
823 | - | else [StringEntry( | |
827 | + | else [StringEntry(x(), fN)] | |
824 | 828 | ||
825 | 829 | ||
826 | 830 | ||
827 | - | @Callable( | |
828 | - | func buyWlg ( | |
829 | - | let | |
830 | - | if (( | |
831 | - | then if ((size( | |
831 | + | @Callable(fH) | |
832 | + | func buyWlg (fO) = { | |
833 | + | let fP = eC() | |
834 | + | if ((fP == fP)) | |
835 | + | then if ((size(fH.payments) != 1)) | |
832 | 836 | then throw("exactly 1 payment must be attached") | |
833 | 837 | else { | |
834 | - | let | |
835 | - | let | |
836 | - | if (if (!(isDefined( | |
838 | + | let fQ = fH.payments[0] | |
839 | + | let fR = fQ.amount | |
840 | + | if (if (!(isDefined(fQ.assetId))) | |
837 | 841 | then true | |
838 | - | else (value( | |
842 | + | else (value(fQ.assetId) != k)) | |
839 | 843 | then throw("USDT payments only!") | |
840 | 844 | else { | |
841 | - | let | |
842 | - | let | |
843 | - | if ((d > | |
844 | - | then throw((("You can trade min " + | |
845 | + | let eQ = fH.caller | |
846 | + | let R = toString(eQ) | |
847 | + | if ((d > fR)) | |
848 | + | then throw((("You can trade min " + az(d, 6)) + " USDT")) | |
845 | 849 | else { | |
846 | - | let | |
847 | - | let | |
848 | - | let | |
849 | - | let | |
850 | - | let | |
851 | - | let | |
852 | - | if (( | |
853 | - | then throw((("You can get max " + | |
854 | - | else if (( | |
850 | + | let eS = ei("", [K, L, M, N, O], k, fR) | |
851 | + | let fS = eS[ag] | |
852 | + | let fT = eS[ai] | |
853 | + | let fU = fraction(fT, 6, 5, CEILING) | |
854 | + | let fV = fraction(fR, c, fU) | |
855 | + | let fW = eD(R) | |
856 | + | if ((fV > fW)) | |
857 | + | then throw((("You can get max " + az(fW, 8)) + " WLGOLD at the moment")) | |
858 | + | else if ((fO > fV)) | |
855 | 859 | then throw("Price changed during operation, please try again") | |
856 | 860 | else { | |
857 | - | let | |
858 | - | $Tuple2([Reissue( | |
861 | + | let fX = (fR / 6) | |
862 | + | $Tuple2([Reissue(T, fV, true), IntegerEntry(bv, (fS + fV)), IntegerEntry(bq(R), lastBlock.timestamp), IntegerEntry(br(R), (fW - fV)), ScriptTransfer(addressFromStringValue(value(getString(ez))), fX, k), ScriptTransfer(eQ, fV, T)], fP) | |
859 | 863 | } | |
860 | 864 | } | |
861 | 865 | } | |
865 | 869 | ||
866 | 870 | ||
867 | 871 | ||
868 | - | @Callable( | |
869 | - | func buyWlgREADONLY (p, | |
870 | - | let | |
871 | - | let | |
872 | - | let | |
873 | - | let | |
874 | - | let | |
875 | - | let | |
876 | - | let | |
877 | - | $Tuple2(nil, [ | |
872 | + | @Callable(fH) | |
873 | + | func buyWlgREADONLY (p,fR) = { | |
874 | + | let eS = ei("", [K, L, M, N, O], k, fR) | |
875 | + | let fT = eS[ai] | |
876 | + | let fU = fraction(fT, 6, 5, CEILING) | |
877 | + | let fV = fraction(fR, c, fU) | |
878 | + | let fW = eD(p) | |
879 | + | let fY = fraction(fW, fU, c) | |
880 | + | let fX = (fR / 6) | |
881 | + | $Tuple2(nil, [fV, d, fY, fX]) | |
878 | 882 | } | |
879 | 883 | ||
880 | 884 | ||
881 | 885 | ||
882 | - | @Callable( | |
883 | - | func sellWlg ( | |
884 | - | let | |
885 | - | if (( | |
886 | - | then if ((size( | |
886 | + | @Callable(fH) | |
887 | + | func sellWlg (fZ) = { | |
888 | + | let fP = eC() | |
889 | + | if ((fP == fP)) | |
890 | + | then if ((size(fH.payments) != 1)) | |
887 | 891 | then throw("exactly 1 payment must be attached") | |
888 | 892 | else { | |
889 | - | let | |
890 | - | let | |
891 | - | let | |
892 | - | let | |
893 | - | let | |
894 | - | if (( | |
895 | - | then throw((("You can spend max " + | |
896 | - | else if (if (!(isDefined( | |
893 | + | let fQ = fH.payments[0] | |
894 | + | let ga = fQ.amount | |
895 | + | let eQ = fH.caller | |
896 | + | let R = toString(eQ) | |
897 | + | let fW = eD(R) | |
898 | + | if ((ga > fW)) | |
899 | + | then throw((("You can spend max " + az(fW, 8)) + " WLGOLD at the moment")) | |
900 | + | else if (if (!(isDefined(fQ.assetId))) | |
897 | 901 | then true | |
898 | - | else (value( | |
902 | + | else (value(fQ.assetId) != T)) | |
899 | 903 | then throw("WLGOLD payments only!") | |
900 | 904 | else { | |
901 | - | let | |
902 | - | let | |
903 | - | let | |
904 | - | let | |
905 | - | if ((d > | |
906 | - | then throw((("You can trade min " + | |
907 | - | else if (( | |
905 | + | let eS = ei("", [K, L, M, N, O], k, 0) | |
906 | + | let fS = eS[ag] | |
907 | + | let gb = (eS[ai] / 2) | |
908 | + | let fR = fraction(ga, gb, c) | |
909 | + | if ((d > fR)) | |
910 | + | then throw((("You can trade min " + az(d, 6)) + " USDT")) | |
911 | + | else if ((fZ > fR)) | |
908 | 912 | then throw("Price changed during operation, please try again") | |
909 | 913 | else { | |
910 | - | let | |
911 | - | $Tuple2([Burn( | |
914 | + | let fX = (fR / 5) | |
915 | + | $Tuple2([Burn(T, ga), IntegerEntry(bv, (fS - ga)), IntegerEntry(bq(R), lastBlock.timestamp), IntegerEntry(br(R), (fW - ga)), ScriptTransfer(addressFromStringValue(value(getString(ez))), fX, k), ScriptTransfer(eQ, fR, k)], fP) | |
912 | 916 | } | |
913 | 917 | } | |
914 | 918 | } | |
917 | 921 | ||
918 | 922 | ||
919 | 923 | ||
920 | - | @Callable( | |
921 | - | func sellWlgREADONLY (p, | |
922 | - | let | |
923 | - | let | |
924 | - | let | |
925 | - | let | |
926 | - | let | |
927 | - | let | |
928 | - | $Tuple2(nil, [ | |
924 | + | @Callable(fH) | |
925 | + | func sellWlgREADONLY (p,ga) = { | |
926 | + | let fW = eD(p) | |
927 | + | let eS = ei("", [K, L, M, N, O], k, 0) | |
928 | + | let gb = (eS[ai] / 2) | |
929 | + | let fR = fraction(ga, gb, c) | |
930 | + | let gc = fraction(d, c, gb) | |
931 | + | let fX = (fR / 5) | |
932 | + | $Tuple2(nil, [fR, gc, fW, fX]) | |
929 | 933 | } | |
930 | 934 | ||
931 | 935 | ||
932 | 936 | ||
933 | - | @Callable( | |
937 | + | @Callable(fH) | |
934 | 938 | func claim () = { | |
935 | - | let | |
936 | - | if (( | |
937 | - | then if ((size( | |
939 | + | let fP = eC() | |
940 | + | if ((fP == fP)) | |
941 | + | then if ((size(fH.payments) != 0)) | |
938 | 942 | then throw("No payments required") | |
939 | 943 | else { | |
940 | - | let | |
941 | - | let | |
942 | - | let | |
943 | - | $Tuple2(( | |
944 | + | let gd = eY(toString(fH.caller)) | |
945 | + | let ge = gd._1 | |
946 | + | let gf = gd._2 | |
947 | + | $Tuple2((ge :+ ScriptTransfer(fH.caller, gf, T)), fP) | |
944 | 948 | } | |
945 | 949 | else throw("Strict value is not equal to itself.") | |
946 | 950 | } | |
947 | 951 | ||
948 | 952 | ||
949 | 953 | ||
950 | - | @Callable( | |
951 | - | func onStakeUnstakeLand ( | |
952 | - | then ( | |
954 | + | @Callable(fH) | |
955 | + | func onStakeUnstakeLand (R) = if (if (if ((fH.caller != I)) | |
956 | + | then (fH.caller != J) | |
953 | 957 | else false) | |
954 | - | then ( | |
958 | + | then (fH.caller != L) | |
955 | 959 | else false) | |
956 | 960 | then throw("Permission denied") | |
957 | 961 | else { | |
958 | - | let | |
959 | - | if (( | |
962 | + | let gg = eY(R) | |
963 | + | if ((gg == gg)) | |
960 | 964 | then { | |
961 | - | let | |
962 | - | let | |
963 | - | $Tuple2(if (( | |
964 | - | then ( | |
965 | - | else | |
965 | + | let gf = gg._2 | |
966 | + | let ge = gg._1 | |
967 | + | $Tuple2(if ((gf > 0)) | |
968 | + | then (ge :+ ScriptTransfer(addressFromStringValue(R), gf, T)) | |
969 | + | else ge, gf) | |
966 | 970 | } | |
967 | 971 | else throw("Strict value is not equal to itself.") | |
968 | 972 | } | |
969 | 973 | ||
970 | 974 | ||
971 | 975 | ||
972 | - | @Callable( | |
973 | - | func onStakeUnstakeLandOld ( | |
974 | - | then ( | |
976 | + | @Callable(fH) | |
977 | + | func onStakeUnstakeLandOld (R) = if (if (if ((fH.caller != I)) | |
978 | + | then (fH.caller != J) | |
975 | 979 | else false) | |
976 | - | then ( | |
980 | + | then (fH.caller != L) | |
977 | 981 | else false) | |
978 | 982 | then throw("Permission denied") | |
979 | 983 | else { | |
980 | - | let | |
981 | - | if (( | |
984 | + | let gh = eP(R) | |
985 | + | if ((gh == gh)) | |
982 | 986 | then { | |
983 | - | let | |
984 | - | let | |
985 | - | $Tuple2(if (( | |
986 | - | then ( | |
987 | - | else nil, | |
987 | + | let gf = gh._2 | |
988 | + | let ge = gh._1 | |
989 | + | $Tuple2(if ((gf > 0)) | |
990 | + | then (ge :+ ScriptTransfer(addressFromStringValue(R), gf, T)) | |
991 | + | else nil, gf) | |
988 | 992 | } | |
989 | 993 | else throw("Strict value is not equal to itself.") | |
990 | 994 | } | |
991 | 995 | ||
992 | 996 | ||
993 | 997 | ||
994 | - | @Callable(fF) | |
995 | - | func burnWlgold (fY) = if ((fF.caller != K)) | |
998 | + | @Callable(fH) | |
999 | + | func burnWlgold (ga) = if (if ((fH.caller != L)) | |
1000 | + | then (fH.caller != P) | |
1001 | + | else false) | |
996 | 1002 | then throw("Permission denied") | |
997 | 1003 | else { | |
998 | - | let | |
999 | - | if (( | |
1000 | - | then throw(((("Only " + | |
1004 | + | let eS = ei("", [K, L, M, N, O], k, 0) | |
1005 | + | if ((ga > eS[ah])) | |
1006 | + | then throw(((("Only " + az(eS[ah], 8)) + " WLGOLD left on contract, can't burn ") + az(ga, 8))) | |
1001 | 1007 | else { | |
1002 | - | let | |
1003 | - | $Tuple2([Burn( | |
1008 | + | let gi = (eS[ag] - ga) | |
1009 | + | $Tuple2([Burn(T, ga), IntegerEntry(bv, gi)], gi) | |
1004 | 1010 | } | |
1005 | 1011 | } | |
1006 | 1012 | ||
1007 | 1013 | ||
1008 | 1014 | ||
1009 | - | @Callable( | |
1010 | - | func betForTicket ( | |
1011 | - | let | |
1012 | - | if (( | |
1013 | - | then if ((size( | |
1015 | + | @Callable(fH) | |
1016 | + | func betForTicket (gj) = { | |
1017 | + | let fP = eC() | |
1018 | + | if ((fP == fP)) | |
1019 | + | then if ((size(fH.payments) != 0)) | |
1014 | 1020 | then throw("No payments required") | |
1015 | 1021 | else { | |
1016 | - | let | |
1017 | - | let | |
1018 | - | let | |
1019 | - | let | |
1020 | - | if (if (( | |
1021 | - | then ( | |
1022 | + | let R = toString(fH.caller) | |
1023 | + | let fm = ((height / i) - 1) | |
1024 | + | let fp = valueOrElse(getInteger(V(R, fm)), 0) | |
1025 | + | let fq = valueOrElse(getInteger(X(fm)), 0) | |
1026 | + | if (if ((fp > 0)) | |
1027 | + | then (fq > 0) | |
1022 | 1028 | else false) | |
1023 | 1029 | then throw("Please open the chest first") | |
1024 | - | else if ((( | |
1030 | + | else if (((gj / 4) != 0)) | |
1025 | 1031 | then throw("Invalid bet: should be 0..3") | |
1026 | 1032 | else { | |
1027 | - | let | |
1028 | - | if (( | |
1029 | - | then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - | |
1033 | + | let gk = (height % g) | |
1034 | + | if ((gk > (g - 3))) | |
1035 | + | then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - gk))) + " blocks")) | |
1030 | 1036 | else { | |
1031 | - | let | |
1032 | - | if (( | |
1033 | - | then throw((("You need to stake at least " + | |
1037 | + | let gl = valueOrElse(getInteger(L, dD(R)), 0) | |
1038 | + | if ((dM > gl)) | |
1039 | + | then throw((("You need to stake at least " + az(dM, 8)) + " ACRES to bet")) | |
1034 | 1040 | else { | |
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | let | |
1039 | - | if (isDefined( | |
1041 | + | let gm = ((height / g) + 1) | |
1042 | + | let gn = U(R) | |
1043 | + | let go = getString(gn) | |
1044 | + | let gp = StringEntry(gn, ((toString(gm) + "_") + toString(gj))) | |
1045 | + | if (isDefined(go)) | |
1040 | 1046 | then { | |
1041 | - | let | |
1042 | - | if ((split( | |
1047 | + | let gq = value(go) | |
1048 | + | if ((split(gq, "_")[0] == toString(gm))) | |
1043 | 1049 | then throw("You already bet for tomorrow") | |
1044 | 1050 | else { | |
1045 | - | let | |
1046 | - | $Tuple2(( | |
1051 | + | let gr = fA(R, gq) | |
1052 | + | $Tuple2((gr._1 :+ gp), gr._2) | |
1047 | 1053 | } | |
1048 | 1054 | } | |
1049 | - | else $Tuple2([ | |
1055 | + | else $Tuple2([gp], 0) | |
1050 | 1056 | } | |
1051 | 1057 | } | |
1052 | 1058 | } | |
1056 | 1062 | ||
1057 | 1063 | ||
1058 | 1064 | ||
1059 | - | @Callable( | |
1060 | - | func takeWlgXp ( | |
1065 | + | @Callable(fH) | |
1066 | + | func takeWlgXp (R) = if ((fH.caller != I)) | |
1061 | 1067 | then throw("Permission denied") | |
1062 | 1068 | else { | |
1063 | - | let | |
1064 | - | let | |
1065 | - | let | |
1066 | - | $Tuple2( | |
1069 | + | let gs = ff(R, 0) | |
1070 | + | let ge = gs._1 | |
1071 | + | let aT = gs._2 | |
1072 | + | $Tuple2(ge, aT) | |
1067 | 1073 | } | |
1068 | 1074 | ||
1069 | 1075 | ||
1070 | 1076 | ||
1071 | - | @Callable( | |
1072 | - | func checkWlgXpREADONLY ( | |
1073 | - | let | |
1074 | - | let | |
1075 | - | let | |
1076 | - | let | |
1077 | - | let | |
1078 | - | $Tuple2(nil, ( | |
1077 | + | @Callable(fH) | |
1078 | + | func checkWlgXpREADONLY (R) = { | |
1079 | + | let gt = ff(R, 0) | |
1080 | + | let gu = gt._1 | |
1081 | + | let gv = gt._2 | |
1082 | + | let aW = (valueOrElse(getInteger(I, aP(R)), 0) + gv) | |
1083 | + | let gw = aU(valueOrElse(getInteger(I, aQ(R)), 0), aW) | |
1084 | + | $Tuple2(nil, (gw :+ aW)) | |
1079 | 1085 | } | |
1080 | 1086 | ||
1081 | 1087 | ||
1082 | 1088 | ||
1083 | - | @Callable( | |
1084 | - | func setNumPrizes ( | |
1089 | + | @Callable(fH) | |
1090 | + | func setNumPrizes (fn) = if ((fH.caller != this)) | |
1085 | 1091 | then throw("Permission denied") | |
1086 | 1092 | else { | |
1087 | - | let | |
1088 | - | $Tuple2([IntegerEntry( | |
1093 | + | let W = (height / i) | |
1094 | + | $Tuple2([IntegerEntry(Z(W), fn)], fn) | |
1089 | 1095 | } | |
1090 | 1096 | ||
1091 | 1097 | ||
1092 | 1098 | ||
1093 | - | @Callable( | |
1099 | + | @Callable(fH) | |
1094 | 1100 | func openChest () = { | |
1095 | - | let | |
1096 | - | if (( | |
1097 | - | then if ((size( | |
1101 | + | let fP = eC() | |
1102 | + | if ((fP == fP)) | |
1103 | + | then if ((size(fH.payments) != 0)) | |
1098 | 1104 | then throw("No payments required") | |
1099 | 1105 | else { | |
1100 | - | let | |
1101 | - | let | |
1102 | - | let | |
1103 | - | if ((0 >= | |
1106 | + | let fm = ((height / i) - 1) | |
1107 | + | let R = toString(fH.caller) | |
1108 | + | let fp = valueOrElse(getInteger(V(R, fm)), 0) | |
1109 | + | if ((0 >= fp)) | |
1104 | 1110 | then throw("No gems to open the chest") | |
1105 | - | else | |
1111 | + | else fl(R) | |
1106 | 1112 | } | |
1107 | 1113 | else throw("Strict value is not equal to itself.") | |
1108 | 1114 | } | |
1109 | 1115 | ||
1110 | 1116 | ||
1111 | 1117 | ||
1112 | - | @Callable( | |
1113 | - | func addGemsFor ( | |
1118 | + | @Callable(fH) | |
1119 | + | func addGemsFor (R,fE) = if ((fH.caller != this)) | |
1114 | 1120 | then throw("Permission denied") | |
1115 | 1121 | else { | |
1116 | - | let | |
1117 | - | let | |
1118 | - | let | |
1119 | - | let | |
1120 | - | let | |
1121 | - | let | |
1122 | - | then ( | |
1122 | + | let W = (height / i) | |
1123 | + | let fx = V(R, W) | |
1124 | + | let fD = valueOrElse(getInteger(X(W)), 0) | |
1125 | + | let fy = valueOrElse(getInteger(fx), 0) | |
1126 | + | let fF = valueOrElse(getInteger(Y(W)), 0) | |
1127 | + | let fG = if (if ((fy == 0)) | |
1128 | + | then (fE == 1) | |
1123 | 1129 | else false) | |
1124 | - | then [IntegerEntry(W | |
1130 | + | then [IntegerEntry(Y(W), (fF + 1))] | |
1125 | 1131 | else nil | |
1126 | - | $Tuple2((( | |
1132 | + | $Tuple2(((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE) | |
1127 | 1133 | } | |
1128 | 1134 | ||
1129 | 1135 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 1000000 | |
7 | 7 | ||
8 | 8 | let c = 100000000 | |
9 | 9 | ||
10 | 10 | let d = 100000 | |
11 | 11 | ||
12 | 12 | let e = 86400000 | |
13 | 13 | ||
14 | 14 | let f = take(drop(this.bytes, 1), 1) | |
15 | 15 | ||
16 | 16 | let g = { | |
17 | 17 | let h = f | |
18 | 18 | if ((base58'2W' == h)) | |
19 | 19 | then 1440 | |
20 | 20 | else if ((base58'2T' == h)) | |
21 | 21 | then 60 | |
22 | 22 | else throw("Unknown chain") | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | let i = { | |
26 | 26 | let h = f | |
27 | 27 | if ((base58'2W' == h)) | |
28 | 28 | then 10080 | |
29 | 29 | else if ((base58'2T' == h)) | |
30 | 30 | then 180 | |
31 | 31 | else throw("Unknown chain") | |
32 | 32 | } | |
33 | 33 | ||
34 | 34 | let j = { | |
35 | 35 | let h = f | |
36 | 36 | if ((base58'2W' == h)) | |
37 | 37 | then 0 | |
38 | 38 | else if ((base58'2T' == h)) | |
39 | 39 | then 1146000 | |
40 | 40 | else throw("Unknown chain") | |
41 | 41 | } | |
42 | 42 | ||
43 | 43 | let k = { | |
44 | 44 | let h = f | |
45 | 45 | if ((base58'2W' == h)) | |
46 | 46 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
47 | 47 | else if ((base58'2T' == h)) | |
48 | 48 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
49 | 49 | else throw("Unknown chain") | |
50 | 50 | } | |
51 | 51 | ||
52 | 52 | let l = { | |
53 | 53 | let h = f | |
54 | 54 | if ((base58'2W' == h)) | |
55 | 55 | then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8" | |
56 | 56 | else if ((base58'2T' == h)) | |
57 | 57 | then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv" | |
58 | 58 | else throw("Unknown chain") | |
59 | 59 | } | |
60 | 60 | ||
61 | 61 | let m = { | |
62 | 62 | let h = f | |
63 | 63 | if ((base58'2W' == h)) | |
64 | 64 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
65 | 65 | else if ((base58'2T' == h)) | |
66 | 66 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
67 | 67 | else throw("Unknown chain") | |
68 | 68 | } | |
69 | 69 | ||
70 | 70 | let n = { | |
71 | 71 | let h = f | |
72 | 72 | if ((base58'2W' == h)) | |
73 | 73 | then "3P2sk1KncSxRaZs8b4CWGPw2jkvvav74u4D" | |
74 | 74 | else if ((base58'2T' == h)) | |
75 | 75 | then "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep" | |
76 | 76 | else throw("Unknown chain") | |
77 | 77 | } | |
78 | 78 | ||
79 | 79 | func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], "")) | |
80 | 80 | ||
81 | 81 | ||
82 | 82 | let r = 1 | |
83 | 83 | ||
84 | 84 | let s = 2 | |
85 | 85 | ||
86 | 86 | let t = 4 | |
87 | 87 | ||
88 | 88 | let u = 5 | |
89 | 89 | ||
90 | - | func v () = "%s__restConfig" | |
90 | + | let v = 6 | |
91 | + | ||
92 | + | func w () = "%s__restConfig" | |
91 | 93 | ||
92 | 94 | ||
93 | - | func | |
95 | + | func x () = "%s__rest2Addr" | |
94 | 96 | ||
95 | 97 | ||
96 | - | func | |
98 | + | func y () = "%s__restAddr" | |
97 | 99 | ||
98 | 100 | ||
99 | - | let | |
101 | + | let z = addressFromStringValue(valueOrElse(getString(this, y()), m)) | |
100 | 102 | ||
101 | - | func | |
103 | + | func A (B) = split_4C(o(B, w()), a) | |
102 | 104 | ||
103 | 105 | ||
104 | - | func | |
106 | + | func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E))) | |
105 | 107 | ||
106 | 108 | ||
107 | - | let | |
109 | + | let F = 1 | |
108 | 110 | ||
109 | - | let | |
111 | + | let G = 8 | |
110 | 112 | ||
111 | - | let | |
113 | + | let H = A(z) | |
112 | 114 | ||
113 | - | let | |
115 | + | let I = C(H, F) | |
114 | 116 | ||
115 | - | let | |
117 | + | let J = C(H, G) | |
116 | 118 | ||
117 | - | let | |
119 | + | let K = addressFromStringValue(valueOrElse(getString(this, x()), l)) | |
118 | 120 | ||
119 | - | let | |
121 | + | let D = A(K) | |
120 | 122 | ||
121 | - | let | |
123 | + | let L = C(D, r) | |
122 | 124 | ||
123 | - | let | |
125 | + | let M = C(D, s) | |
124 | 126 | ||
125 | - | let | |
127 | + | let N = C(D, t) | |
126 | 128 | ||
127 | - | let | |
129 | + | let O = C(D, u) | |
128 | 130 | ||
129 | - | func O (P) = ("lastWeekTxIdByUser_" + P) | |
131 | + | let P = C(D, v) | |
132 | + | ||
133 | + | func Q (R) = ("lastWeekTxIdByUser_" + R) | |
130 | 134 | ||
131 | 135 | ||
132 | - | let | |
136 | + | let S = "wlg_assetId" | |
133 | 137 | ||
134 | - | let | |
138 | + | let T = valueOrErrorMessage(getBinary(M, S), "WLGOLD is not issued yet") | |
135 | 139 | ||
136 | - | func | |
140 | + | func U (R) = ("userBet_" + R) | |
137 | 141 | ||
138 | 142 | ||
139 | - | func | |
143 | + | func V (R,W) = ((("userWeekTickets_" + R) + "_") + toString(W)) | |
140 | 144 | ||
141 | 145 | ||
142 | - | func | |
146 | + | func X (W) = ("totalWeekTickets_" + toString(W)) | |
143 | 147 | ||
144 | 148 | ||
145 | - | func | |
149 | + | func Y (W) = ("totalWeekParticipants_" + toString(W)) | |
146 | 150 | ||
147 | 151 | ||
148 | - | func | |
152 | + | func Z (W) = ("numNFT2Draw_" + toString(W)) | |
149 | 153 | ||
150 | 154 | ||
151 | - | func | |
155 | + | func aa (W) = ("numNFTDrawn_" + toString(W)) | |
152 | 156 | ||
153 | 157 | ||
154 | - | func | |
158 | + | func ab (W) = ("weekWinners_" + toString(W)) | |
155 | 159 | ||
156 | 160 | ||
157 | - | func | |
158 | - | let | |
159 | - | let | |
160 | - | then | |
161 | - | else ( | |
162 | - | (toInt(value(value(blockInfoByHeight( | |
161 | + | func ac (ad) = { | |
162 | + | let ae = (ad * g) | |
163 | + | let af = if ((ae > j)) | |
164 | + | then ae | |
165 | + | else (ae + j) | |
166 | + | (toInt(value(value(blockInfoByHeight(af)).vrf)) % 4) | |
163 | 167 | } | |
164 | 168 | ||
165 | 169 | ||
166 | - | let | |
170 | + | let ag = 0 | |
167 | 171 | ||
168 | - | let | |
172 | + | let ah = 1 | |
169 | 173 | ||
170 | - | let | |
174 | + | let ai = 2 | |
171 | 175 | ||
172 | - | let | |
176 | + | let aj = 8 | |
173 | 177 | ||
174 | - | let | |
178 | + | let ak = 11 | |
175 | 179 | ||
176 | - | let | |
180 | + | let al = 12 | |
177 | 181 | ||
178 | - | let | |
182 | + | let am = 15 | |
179 | 183 | ||
180 | - | let | |
184 | + | let an = 16 | |
181 | 185 | ||
182 | - | let | |
186 | + | let ao = 19 | |
183 | 187 | ||
184 | - | let | |
188 | + | let ap = 23 | |
185 | 189 | ||
186 | - | let | |
190 | + | let aq = 24 | |
187 | 191 | ||
188 | - | let | |
192 | + | let ar = 25 | |
189 | 193 | ||
190 | - | let | |
194 | + | let as = 26 | |
191 | 195 | ||
192 | - | let | |
196 | + | let at = 27 | |
193 | 197 | ||
194 | - | let | |
198 | + | let au = 28 | |
195 | 199 | ||
196 | - | let | |
200 | + | let av = 29 | |
197 | 201 | ||
198 | - | func | |
199 | - | let h = | |
202 | + | func aw (ax) = { | |
203 | + | let h = ax | |
200 | 204 | if ($isInstanceOf(h, "Int")) | |
201 | 205 | then { | |
202 | - | let | |
203 | - | | |
206 | + | let ay = h | |
207 | + | ay | |
204 | 208 | } | |
205 | 209 | else throw("fail to cast into Int") | |
206 | 210 | } | |
207 | 211 | ||
208 | 212 | ||
209 | - | func | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | (((toString(( | |
213 | + | func az (aA,aB) = { | |
214 | + | let aC = pow(10, 0, aB, 0, 0, DOWN) | |
215 | + | let aD = toString((aA % aC)) | |
216 | + | let aE = drop(toString(aC), (1 + size(aD))) | |
217 | + | (((toString((aA / aC)) + ".") + aE) + aD) | |
214 | 218 | } | |
215 | 219 | ||
216 | 220 | ||
217 | - | func | |
221 | + | func aF (aG,aH,aI) = if ((0 >= aG)) | |
218 | 222 | then throw("maxValue should be > 0") | |
219 | 223 | else { | |
220 | - | let | |
221 | - | (toInt( | |
224 | + | let aJ = sha256_16Kb((aH + aI)) | |
225 | + | (toInt(aJ) % aG) | |
222 | 226 | } | |
223 | 227 | ||
224 | 228 | ||
225 | - | let | |
229 | + | let aK = 100000000 | |
226 | 230 | ||
227 | - | let | |
231 | + | let aL = 3200 | |
228 | 232 | ||
229 | - | let | |
233 | + | let aM = 4000 | |
230 | 234 | ||
231 | - | let | |
235 | + | let aN = 3 | |
232 | 236 | ||
233 | - | let | |
237 | + | let aO = 100000000000 | |
234 | 238 | ||
235 | - | func | |
239 | + | func aP (R) = ("userXP_" + R) | |
236 | 240 | ||
237 | 241 | ||
238 | - | func | |
242 | + | func aQ (R) = ("userLevel_" + R) | |
239 | 243 | ||
240 | 244 | ||
241 | - | let | |
245 | + | let aR = 10000 | |
242 | 246 | ||
243 | - | func | |
247 | + | func aS (aT) = fraction(aL, pow(aT, 4, aM, 4, 4, DOWN), aK) | |
244 | 248 | ||
245 | 249 | ||
246 | - | func | |
247 | - | let | |
248 | - | [ | |
250 | + | func aU (aV,aW) = { | |
251 | + | let aX = aS(aW) | |
252 | + | [aX, (aN * (aX - aV))] | |
249 | 253 | } | |
250 | 254 | ||
251 | 255 | ||
252 | - | let | |
256 | + | let aY = 1000000 | |
253 | 257 | ||
254 | - | let | |
258 | + | let aZ = 100000000 | |
255 | 259 | ||
256 | - | let | |
260 | + | let ba = 100000000000000 | |
257 | 261 | ||
258 | - | let | |
262 | + | let bb = 200000 | |
259 | 263 | ||
260 | - | let | |
264 | + | let bc = 100000 | |
261 | 265 | ||
262 | - | let | |
266 | + | let bd = 400000 | |
263 | 267 | ||
264 | - | let | |
268 | + | let be = 31557600000 | |
265 | 269 | ||
266 | - | let | |
270 | + | let bf = 86400000 | |
267 | 271 | ||
268 | - | let | |
272 | + | let bg = 50000 | |
269 | 273 | ||
270 | - | let | |
274 | + | let bh = take(drop(this.bytes, 1), 1) | |
271 | 275 | ||
272 | - | let | |
273 | - | let h = | |
276 | + | let bi = { | |
277 | + | let h = bh | |
274 | 278 | if ((base58'2W' == h)) | |
275 | 279 | then 1208630000 | |
276 | 280 | else if ((base58'2T' == h)) | |
277 | 281 | then 0 | |
278 | 282 | else throw("Unknown chain") | |
279 | 283 | } | |
280 | 284 | ||
281 | - | let | |
285 | + | let bj = "teamAddr" | |
282 | 286 | ||
283 | - | let | |
287 | + | let bk = "lastClaimedTime_team" | |
284 | 288 | ||
285 | - | let | |
289 | + | let bl = "teamAmountLeft" | |
286 | 290 | ||
287 | - | let | |
291 | + | let bm = "lastClaimedTime_activities" | |
288 | 292 | ||
289 | - | let | |
293 | + | let bn = "activitiesAmountLeft" | |
290 | 294 | ||
291 | - | let | |
295 | + | let bo = "stakersAmountLeft" | |
292 | 296 | ||
293 | - | func | |
297 | + | func bp (R) = ("lastClaimedTimeUserOld_" + R) | |
294 | 298 | ||
295 | 299 | ||
296 | - | func | |
300 | + | func bq (R) = ("lastArbTimeUser_" + R) | |
297 | 301 | ||
298 | 302 | ||
299 | - | func | |
303 | + | func br (R) = ("lastWlgLimitUser_" + R) | |
300 | 304 | ||
301 | 305 | ||
302 | - | func | |
306 | + | func bs (bt) = fraction(ba, (bd * (bt + 1)), (6 * aY)) | |
303 | 307 | ||
304 | 308 | ||
305 | - | let | |
309 | + | let bu = "wlg_issueTime" | |
306 | 310 | ||
307 | - | let | |
311 | + | let bv = "wlg_issuedAmount" | |
308 | 312 | ||
309 | - | let | |
313 | + | let bw = "zbill_issuedAmount" | |
310 | 314 | ||
311 | - | func | |
315 | + | func bx (R) = ("acresStakedAmountByUser_" + R) | |
312 | 316 | ||
313 | 317 | ||
314 | - | let | |
318 | + | let by = "acresStakedAmountTotal" | |
315 | 319 | ||
316 | - | func | |
320 | + | func bz (R) = ("wlgStakedAmountByUser_" + R) | |
317 | 321 | ||
318 | 322 | ||
319 | - | let | |
323 | + | let bA = "wlgStakedAmountTotal" | |
320 | 324 | ||
321 | - | func | |
325 | + | func bB (R) = ("wlgStakedTimeByUser_" + R) | |
322 | 326 | ||
323 | 327 | ||
324 | - | let | |
328 | + | let bC = 0 | |
325 | 329 | ||
326 | - | let | |
330 | + | let bD = 1 | |
327 | 331 | ||
328 | - | let | |
332 | + | let bE = 2 | |
329 | 333 | ||
330 | - | let | |
334 | + | let bF = 3 | |
331 | 335 | ||
332 | - | let | |
336 | + | let bG = 4 | |
333 | 337 | ||
334 | - | let | |
338 | + | let bH = 5 | |
335 | 339 | ||
336 | - | let | |
340 | + | let bI = 6 | |
337 | 341 | ||
338 | - | func | |
339 | - | let | |
340 | - | func | |
342 | + | func bJ (bK,I,J) = { | |
343 | + | let bL = split(valueOrElse(getString(I, "resTypesProportions"), "0_0_0_0_0_0"), "_") | |
344 | + | func bM (bN,bO) = (bN + parseIntValue(bO)) | |
341 | 345 | ||
342 | - | let | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | func | |
347 | - | then | |
348 | - | else | |
346 | + | let bP = { | |
347 | + | let bQ = bL | |
348 | + | let bR = size(bQ) | |
349 | + | let bS = 0 | |
350 | + | func bT (bU,bV) = if ((bV >= bR)) | |
351 | + | then bU | |
352 | + | else bM(bU, bQ[bV]) | |
349 | 353 | ||
350 | - | func | |
351 | - | then | |
354 | + | func bW (bU,bV) = if ((bV >= bR)) | |
355 | + | then bU | |
352 | 356 | else throw("List size exceeds 6") | |
353 | 357 | ||
354 | - | | |
358 | + | bW(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6) | |
355 | 359 | } | |
356 | - | let | |
357 | - | let | |
358 | - | let | |
359 | - | [ | |
360 | + | let bX = valueOrElse(getInteger(I, ("stakedPiecesByOwner_" + bK)), 0) | |
361 | + | let bY = valueOrElse(getInteger(J, by), 0) | |
362 | + | let bZ = valueOrElse(getInteger(J, bx(bK)), 0) | |
363 | + | [bP, bX, bY, bZ] | |
360 | 364 | } | |
361 | 365 | ||
362 | 366 | ||
363 | - | let | |
367 | + | let ca = 0 | |
364 | 368 | ||
365 | - | let | |
369 | + | let cb = 1 | |
366 | 370 | ||
367 | - | let | |
371 | + | let cc = 2 | |
368 | 372 | ||
369 | - | let | |
373 | + | let cd = 3 | |
370 | 374 | ||
371 | - | let | |
375 | + | let ce = 1733346000000 | |
372 | 376 | ||
373 | - | func | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | let | |
379 | - | let | |
380 | - | let | |
381 | - | let | |
382 | - | let | |
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | let | |
388 | - | let | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
395 | - | let | |
396 | - | let | |
397 | - | let | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | let | |
402 | - | let | |
403 | - | let | |
377 | + | func cf (cg,ch,ci,cj,ck) = { | |
378 | + | let cl = valueOrErrorMessage(getInteger(ch[bF], bv), "WLGOLD is not issued yet") | |
379 | + | let cm = assetBalance(ch[bE], ci) | |
380 | + | let cn = assetBalance(ch[bC], ci) | |
381 | + | let co = (assetBalance(ch[bF], ci) - cj) | |
382 | + | let cp = assetBalance(ch[bG], ci) | |
383 | + | let cq = ch[bH] | |
384 | + | let cr = (assetBalance(cq, ci) + valueOrElse(getInteger(cq, bw), 0)) | |
385 | + | let cs = ((cm + co) + cr) | |
386 | + | let ct = valueOrErrorMessage(getBinary(ch[bF], "wlg_assetId"), "Not initialized yet") | |
387 | + | let cu = lastBlock.timestamp | |
388 | + | let cv = valueOrErrorMessage(getInteger(ch[bF], bu), "Not initialized") | |
389 | + | let cw = assetBalance(ch[bD], ct) | |
390 | + | let cx = fraction(ba, bb, aY) | |
391 | + | let cy = valueOrElse(getInteger(ch[bF], bl), cx) | |
392 | + | let cz = valueOrElse(getInteger(ch[bF], bk), cv) | |
393 | + | let cA = addressFromStringValue(value(getString(ch[bF], bj))) | |
394 | + | let cB = min([fraction(cx, (cu - cz), (3 * be)), cy]) | |
395 | + | let cC = assetBalance(cA, ct) | |
396 | + | let cD = fraction(ba, bc, aY) | |
397 | + | let cE = valueOrElse(getInteger(ch[bF], bn), cD) | |
398 | + | let cF = valueOrElse(getInteger(ch[bF], bm), cv) | |
399 | + | let cG = min([fraction(cD, (cu - cF), (3 * be)), cE]) | |
400 | + | let cH = assetBalance(ch[bC], ct) | |
401 | + | let cI = valueOrElse(getInteger(ch[bF], bp(cg)), cv) | |
402 | + | let cJ = ((cI - cv) / be) | |
403 | + | let cK = min([min([cu, (cv + (3 * be))]), ce]) | |
404 | + | let cL = min([((cu - cv) / be), 2]) | |
405 | + | let cM = bJ(cg, ch[bD], ch[bI]) | |
406 | + | let cN = bs(cL) | |
407 | + | let cO = if ((cJ == cL)) | |
404 | 408 | then { | |
405 | - | let | |
406 | - | let | |
407 | - | let | |
408 | - | $Tuple3( | |
409 | + | let cP = fraction(cN, (cK - cI), be) | |
410 | + | let cQ = fraction(cP, ck, aY) | |
411 | + | let cR = (cI + fraction((cK - cI), ck, aY)) | |
412 | + | $Tuple3(cQ, cP, cR) | |
409 | 413 | } | |
410 | - | else if (( | |
414 | + | else if ((cJ == (cL - 1))) | |
411 | 415 | then { | |
412 | - | let | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | then ( | |
418 | - | else (( | |
419 | - | $Tuple3( | |
416 | + | let cS = fraction(bs((cL - 1)), ((cv + (be * cL)) - cI), be) | |
417 | + | let cP = fraction(cN, (cK - (cv + (be * cL))), be) | |
418 | + | let cT = (cS + cP) | |
419 | + | let cQ = fraction(cT, ck, aY) | |
420 | + | let cR = if ((cS >= cQ)) | |
421 | + | then (cI + fraction(be, cQ, bs((cL - 1)))) | |
422 | + | else ((cv + (be * cL)) + fraction(be, (cQ - cS), cN)) | |
423 | + | $Tuple3(cQ, cT, cR) | |
420 | 424 | } | |
421 | 425 | else { | |
422 | - | let | |
423 | - | let | |
424 | - | let | |
425 | - | let | |
426 | - | let | |
427 | - | let | |
428 | - | then ( | |
429 | - | else if ((( | |
430 | - | then (( | |
431 | - | else (( | |
432 | - | $Tuple3( | |
426 | + | let cU = fraction(bs((cL - 2)), ((cv + (be * (cL - 1))) - cI), be) | |
427 | + | let cS = bs((cL - 1)) | |
428 | + | let cP = fraction(cN, (cK - (cv + (be * cL))), be) | |
429 | + | let cT = ((cU + cS) + cP) | |
430 | + | let cQ = fraction(cT, ck, aY) | |
431 | + | let cR = if ((cU >= cQ)) | |
432 | + | then (cI + fraction(be, cQ, bs((cL - 2)))) | |
433 | + | else if (((cU + cS) >= cQ)) | |
434 | + | then ((cv + (be * (cL - 1))) + fraction(be, (cQ - cU), bs((cL - 1)))) | |
435 | + | else ((cv + (be * cL)) + fraction(be, ((cQ - cU) - cS), cN)) | |
436 | + | $Tuple3(cQ, cT, cR) | |
433 | 437 | } | |
434 | - | let | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | let | |
439 | - | let | |
440 | - | let | |
441 | - | let | |
442 | - | let | |
443 | - | [ | |
438 | + | let cV = cO._1 | |
439 | + | let cW = cO._2 | |
440 | + | let cX = cO._3 | |
441 | + | let cY = fraction(fraction(cN, bf, be), 25, cM[ca]) | |
442 | + | let cZ = valueOrElse(getInteger(ch[bF], bo), 0) | |
443 | + | let da = fraction(cV, ((cM[cb] * aZ) + cM[cd]), ((cM[ca] * aZ) + cM[cc])) | |
444 | + | let db = fraction(da, bg, aY) | |
445 | + | let dc = (da - db) | |
446 | + | let dd = fraction(cW, ((cM[cb] * aZ) + cM[cd]), ((cM[ca] * aZ) + cM[cc])) | |
447 | + | [cl, fraction((cs - bi), aZ, cl), cs, cm, cn, co, cp, cv, cz, cx, cy, cB, cC, cD, cE, cG, cH, cL, cZ, cN, cI, dc, cY, cr, dd, cX, cw] | |
444 | 448 | } | |
445 | 449 | ||
446 | 450 | ||
447 | - | let | |
451 | + | let de = 1000000 | |
448 | 452 | ||
449 | - | let | |
453 | + | let df = 100000000 | |
450 | 454 | ||
451 | - | let | |
455 | + | let dg = 200000 | |
452 | 456 | ||
453 | - | let | |
457 | + | let dh = 100000 | |
454 | 458 | ||
455 | - | let | |
459 | + | let di = 400000 | |
456 | 460 | ||
457 | - | let | |
461 | + | let dj = 31557600000 | |
458 | 462 | ||
459 | - | let | |
463 | + | let dk = 86400000 | |
460 | 464 | ||
461 | - | let | |
465 | + | let dl = 1000000000 | |
462 | 466 | ||
463 | - | let | |
467 | + | let dm = 800000 | |
464 | 468 | ||
465 | - | let | |
469 | + | let dn = 100000 | |
466 | 470 | ||
467 | - | let | |
471 | + | let do = 100000 | |
468 | 472 | ||
469 | - | let | |
473 | + | let dp = 1731279600000 | |
470 | 474 | ||
471 | - | let | |
475 | + | let dq = "marketingAddr" | |
472 | 476 | ||
473 | - | let | |
477 | + | let dr = "teamAddr" | |
474 | 478 | ||
475 | - | let | |
479 | + | let ds = "lastClaimedTime_team" | |
476 | 480 | ||
477 | - | let | |
481 | + | let dt = "teamAmountLeft" | |
478 | 482 | ||
479 | - | let | |
483 | + | let du = "lastClaimedTime_activities" | |
480 | 484 | ||
481 | - | let | |
485 | + | let dv = "activitiesAmountLeft" | |
482 | 486 | ||
483 | - | let | |
487 | + | let dw = "stakersAmountLeft" | |
484 | 488 | ||
485 | - | func | |
489 | + | func dx (R) = ("lastClaimedTimeUser_" + R) | |
486 | 490 | ||
487 | 491 | ||
488 | - | func | |
492 | + | func dy (cl,bt) = fraction(cl, (di * (bt + 1)), (6 * de)) | |
489 | 493 | ||
490 | 494 | ||
491 | - | let | |
495 | + | let dz = "wlg_issue10Time" | |
492 | 496 | ||
493 | - | let | |
497 | + | let dA = "wlg_issueTime" | |
494 | 498 | ||
495 | - | let | |
499 | + | let dB = "wlg_issuedAmount" | |
496 | 500 | ||
497 | - | let | |
501 | + | let dC = "zbill_issuedAmount" | |
498 | 502 | ||
499 | - | func | |
503 | + | func dD (R) = ("acresStakedAmountByUser_" + R) | |
500 | 504 | ||
501 | 505 | ||
502 | - | let | |
506 | + | let dE = "acresStakedAmountTotal" | |
503 | 507 | ||
504 | - | let | |
508 | + | let dF = "totalFarmingPower" | |
505 | 509 | ||
506 | - | let | |
510 | + | let dG = 0 | |
507 | 511 | ||
508 | - | let | |
512 | + | let dH = 1 | |
509 | 513 | ||
510 | - | let | |
514 | + | let dI = 2 | |
511 | 515 | ||
512 | - | let | |
516 | + | let dJ = 3 | |
513 | 517 | ||
514 | - | let | |
518 | + | let dK = 4 | |
515 | 519 | ||
516 | - | let | |
520 | + | let dL = 5 | |
517 | 521 | ||
518 | - | let | |
522 | + | let dM = 100000000 | |
519 | 523 | ||
520 | - | let | |
524 | + | let dN = "nftTotalIssued" | |
521 | 525 | ||
522 | - | let | |
526 | + | let dO = "nftTotalBurned" | |
523 | 527 | ||
524 | - | let | |
528 | + | let dP = "WlNftTotalStaked" | |
525 | 529 | ||
526 | - | func | |
530 | + | func dQ (R) = ("userWlNftNumber_" + R) | |
527 | 531 | ||
528 | 532 | ||
529 | - | func | |
533 | + | func dR (R) = ("userFullBonus_" + R) | |
530 | 534 | ||
531 | 535 | ||
532 | - | let | |
536 | + | let dS = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000] | |
533 | 537 | ||
534 | - | func | |
535 | - | let | |
536 | - | func | |
537 | - | then | |
538 | - | else ( | |
538 | + | func dT (dU) = { | |
539 | + | let dV = ((dU + 99999999) / df) | |
540 | + | func dW (bN,bO) = if ((bO >= dV)) | |
541 | + | then bN | |
542 | + | else (bN + 1) | |
539 | 543 | ||
540 | - | let | |
541 | - | let | |
542 | - | let | |
543 | - | func | |
544 | - | then | |
545 | - | else | |
544 | + | let bQ = dS | |
545 | + | let bR = size(bQ) | |
546 | + | let bS = 0 | |
547 | + | func bT (bU,bV) = if ((bV >= bR)) | |
548 | + | then bU | |
549 | + | else dW(bU, bQ[bV]) | |
546 | 550 | ||
547 | - | func | |
548 | - | then | |
551 | + | func bW (bU,bV) = if ((bV >= bR)) | |
552 | + | then bU | |
549 | 553 | else throw("List size exceeds 10") | |
550 | 554 | ||
551 | - | | |
555 | + | bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
552 | 556 | } | |
553 | 557 | ||
554 | 558 | ||
555 | - | func | |
559 | + | func dX (dU) = ((dU * 20) * (dT(dU) + 4)) | |
556 | 560 | ||
557 | 561 | ||
558 | - | func | |
559 | - | let | |
560 | - | $Tuple2(fraction( | |
562 | + | func dY (dU,dZ) = { | |
563 | + | let ea = dX(dU) | |
564 | + | $Tuple2(fraction(ea, (de + dZ), de), ea) | |
561 | 565 | } | |
562 | 566 | ||
563 | 567 | ||
564 | - | func | |
565 | - | let | |
566 | - | let | |
567 | - | let | |
568 | - | let | |
569 | - | let | |
570 | - | let | |
571 | - | [ | |
568 | + | func eb (bK,L) = { | |
569 | + | let ec = valueOrElse(getInteger(L, dF), 0) | |
570 | + | let bZ = valueOrElse(getInteger(L, dD(bK)), 0) | |
571 | + | let ed = valueOrElse(getInteger(L, dR(bK)), 0) | |
572 | + | let cO = dY(bZ, ed) | |
573 | + | let ee = cO._1 | |
574 | + | let ef = cO._2 | |
575 | + | [ec, ee, ef, ed] | |
572 | 576 | } | |
573 | 577 | ||
574 | 578 | ||
575 | - | let | |
579 | + | let eg = 0 | |
576 | 580 | ||
577 | - | let | |
581 | + | let eh = 1 | |
578 | 582 | ||
579 | - | func | |
580 | - | let | |
581 | - | let | |
582 | - | let | |
583 | - | let | |
584 | - | let | |
585 | - | let | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
593 | - | let | |
594 | - | let | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | let | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
602 | - | let | |
603 | - | let | |
604 | - | let | |
605 | - | let | |
606 | - | let | |
607 | - | let | |
608 | - | let | |
609 | - | let | |
610 | - | let | |
611 | - | let | |
612 | - | let | |
613 | - | then | |
614 | - | else if (( | |
583 | + | func ei (cg,ch,ci,cj) = { | |
584 | + | let cl = valueOrErrorMessage(getInteger(ch[dI], dB), "WLGOLD is not issued yet") | |
585 | + | let cn = assetBalance(ch[dG], ci) | |
586 | + | let co = (assetBalance(ch[dI], ci) - cj) | |
587 | + | let cp = assetBalance(ch[dJ], ci) | |
588 | + | let ej = assetBalance(ch[dH], ci) | |
589 | + | let cq = ch[dK] | |
590 | + | let cr = (assetBalance(cq, ci) + valueOrElse(getInteger(cq, dC), 0)) | |
591 | + | let cs = ((ej + co) + cr) | |
592 | + | let ct = valueOrErrorMessage(getBinary(ch[dI], "wlg_assetId"), "Not initialized yet") | |
593 | + | let cu = lastBlock.timestamp | |
594 | + | let cv = valueOrErrorMessage(getInteger(ch[dI], dA), "Not initialized") | |
595 | + | let ek = assetBalance(ch[dI], ct) | |
596 | + | let cx = fraction(cl, dg, de) | |
597 | + | let cy = valueOrElse(getInteger(ch[dI], dt), cx) | |
598 | + | let cz = valueOrElse(getInteger(ch[dI], ds), cv) | |
599 | + | let cA = addressFromStringValue(value(getString(ch[dI], dr))) | |
600 | + | let cB = min([fraction(cx, (cu - cz), (3 * dj)), cy]) | |
601 | + | let cC = assetBalance(cA, ct) | |
602 | + | let cD = fraction(cl, dh, de) | |
603 | + | let cE = valueOrElse(getInteger(ch[dI], dv), cD) | |
604 | + | let cF = valueOrElse(getInteger(ch[dI], du), cv) | |
605 | + | let cG = min([fraction(cD, (cu - cF), (3 * dj)), cE]) | |
606 | + | let cH = assetBalance(ch[dG], ct) | |
607 | + | let cI = valueOrElse(getInteger(ch[dI], dx(cg)), cv) | |
608 | + | let cJ = ((cI - cv) / dj) | |
609 | + | let cK = min([cu, (cv + (3 * dj))]) | |
610 | + | let cL = min([((cu - cv) / dj), 2]) | |
611 | + | let cM = eb(cg, ch[dH]) | |
612 | + | let cN = dy(cl, cL) | |
613 | + | let el = (cv + (dj * cL)) | |
614 | + | let em = (cv + (dj * (cL - 1))) | |
615 | + | let cP = fraction(cN, (cK - cI), dj) | |
616 | + | let cW = if ((cJ == cL)) | |
617 | + | then cP | |
618 | + | else if ((cJ == (cL - 1))) | |
615 | 619 | then { | |
616 | - | let | |
617 | - | ( | |
620 | + | let cS = fraction(dy(cl, (cL - 1)), (el - cI), dj) | |
621 | + | (cS + cP) | |
618 | 622 | } | |
619 | 623 | else { | |
620 | - | let | |
621 | - | let | |
622 | - | (( | |
624 | + | let cU = fraction(dy(cl, (cL - 2)), (em - cI), dj) | |
625 | + | let cS = dy(cl, (cL - 1)) | |
626 | + | ((cU + cS) + cP) | |
623 | 627 | } | |
624 | - | let | |
625 | - | let | |
626 | - | then fraction( | |
628 | + | let cZ = valueOrElse(getInteger(ch[dI], dw), 0) | |
629 | + | let cV = if ((cM[eg] != 0)) | |
630 | + | then fraction(cW, cM[eh], cM[eg]) | |
627 | 631 | else 0 | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
632 | - | let | |
633 | - | let | |
634 | - | then fraction(fraction(fraction( | |
632 | + | let en = valueOrElse(getInteger(ch[dI], dz), dp) | |
633 | + | let eo = fraction(dl, max([(cu - en), 0]), dk) | |
634 | + | let ep = fraction(eo, dn, de) | |
635 | + | let eq = fraction(eo, do, de) | |
636 | + | let er = max([(cu - max([dp, cI])), 0]) | |
637 | + | let es = if ((cM[eg] != 0)) | |
638 | + | then fraction(fraction(fraction(dl, er, dk), cM[eh], cM[eg]), dm, de) | |
635 | 639 | else 0 | |
636 | - | let | |
637 | - | let | |
638 | - | let | |
639 | - | let | |
640 | - | let | |
641 | - | let | |
642 | - | [ | |
640 | + | let et = max([dp, cu]) | |
641 | + | let eu = valueOrElse(getInteger(ch[dH], dE), 0) | |
642 | + | let ev = valueOrElse(getInteger(ch[dH], dN), 0) | |
643 | + | let ew = valueOrElse(getInteger(ch[dH], dO), 0) | |
644 | + | let ex = valueOrElse(getInteger(ch[dH], dP), 0) | |
645 | + | let ey = valueOrElse(getInteger(ch[dH], dQ(valueOrElse(cg, ""))), 0) | |
646 | + | [cl, ek, fraction(cs, df, cl), cs, cn, ej, co, cp, cv, cz, cx, cy, cB, cC, cD, cE, cG, cH, cL, cZ, cN, cI, cr, cV, cK, eo, ep, eq, es, et, cM[eg], eu, ev, ew, ex, ey] | |
643 | 647 | } | |
644 | 648 | ||
645 | 649 | ||
646 | - | let | |
650 | + | let ez = "profitAddr" | |
647 | 651 | ||
648 | - | let | |
652 | + | let eA = "stakersAmountPaidTotal" | |
649 | 653 | ||
650 | - | func | |
654 | + | func eB (R) = ("stakersAmountPaidUser_" + R) | |
651 | 655 | ||
652 | 656 | ||
653 | - | func | |
657 | + | func eC () = aw(reentrantInvoke(L, "saveLastTx", nil, nil)) | |
654 | 658 | ||
655 | 659 | ||
656 | - | func | |
657 | - | let | |
658 | - | let | |
659 | - | let | |
660 | - | let | |
661 | - | min([ | |
660 | + | func eD (R) = { | |
661 | + | let eE = valueOrElse(getInteger(bq(R)), 0) | |
662 | + | let eF = valueOrElse(getInteger(L, bx(R)), 0) | |
663 | + | let eG = valueOrElse(getInteger(br(R)), eF) | |
664 | + | let eH = (eG + fraction(eF, (lastBlock.timestamp - eE), e)) | |
665 | + | min([eH, eF]) | |
662 | 666 | } | |
663 | 667 | ||
664 | 668 | ||
665 | - | let | |
669 | + | let eI = 10 | |
666 | 670 | ||
667 | - | let | |
671 | + | let eJ = 11 | |
668 | 672 | ||
669 | - | let | |
673 | + | let eK = 14 | |
670 | 674 | ||
671 | - | let | |
675 | + | let eL = 15 | |
672 | 676 | ||
673 | - | let | |
677 | + | let eM = 18 | |
674 | 678 | ||
675 | - | let | |
679 | + | let eN = 24 | |
676 | 680 | ||
677 | - | let | |
681 | + | let eO = 25 | |
678 | 682 | ||
679 | - | func | |
680 | - | let | |
681 | - | let | |
682 | - | let | |
683 | - | let | |
684 | - | let | |
685 | - | let | |
686 | - | let | |
687 | - | let | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | let | |
692 | - | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString( | |
683 | + | func eP (R) = { | |
684 | + | let eQ = addressFromStringValue(R) | |
685 | + | let eR = addressFromStringValue(n) | |
686 | + | let eS = cf(R, [z, I, eR, M, N, O, J], k, 0, b) | |
687 | + | let cu = lastBlock.timestamp | |
688 | + | let cy = eS[eI] | |
689 | + | let eT = eS[eJ] | |
690 | + | let cE = eS[eK] | |
691 | + | let eU = eS[eL] | |
692 | + | let cV = eS[eN] | |
693 | + | let eV = eB(R) | |
694 | + | let eW = eS[eN] | |
695 | + | let eX = eS[eO] | |
696 | + | $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(bj))), eT, T), ScriptTransfer(z, eU, T), IntegerEntry(eV, (valueOrElse(getInteger(eV), 0) + cV)), IntegerEntry(eA, (valueOrElse(getInteger(eA), 0) + eW)), IntegerEntry(bo, (eS[eM] - eW)), IntegerEntry(bl, (cy - eT)), IntegerEntry(bk, cu), IntegerEntry(bn, (cE - eU)), IntegerEntry(bm, cu), IntegerEntry(bp(R), eX)], cV) | |
693 | 697 | } | |
694 | 698 | ||
695 | 699 | ||
696 | - | func | |
697 | - | let | |
698 | - | let | |
699 | - | let | |
700 | - | let | |
701 | - | if (( | |
700 | + | func eY (R) = { | |
701 | + | let eS = ei(R, [K, L, M, N, O], k, 0) | |
702 | + | let eZ = dx(R) | |
703 | + | let cI = valueOrElse(getInteger(eZ), 0) | |
704 | + | let eX = eS[aq] | |
705 | + | if ((cI == eX)) | |
702 | 706 | then $Tuple2(nil, 0) | |
703 | 707 | else { | |
704 | - | let | |
705 | - | let | |
706 | - | let | |
707 | - | let | |
708 | - | let | |
709 | - | then [IntegerEntry( | |
708 | + | let cu = lastBlock.timestamp | |
709 | + | let cv = eS[aj] | |
710 | + | let cy = eS[ak] | |
711 | + | let eT = (eS[al] + eS[at]) | |
712 | + | let fa = if ((eT > 0)) | |
713 | + | then [IntegerEntry(bl, ((cy - eT) + eS[at])), IntegerEntry(bk, cu), ScriptTransfer(addressFromStringValue(value(getString(bj))), eT, T)] | |
710 | 714 | else nil | |
711 | - | let | |
712 | - | let | |
713 | - | let | |
714 | - | then [IntegerEntry( | |
715 | + | let cE = eS[am] | |
716 | + | let eU = eS[an] | |
717 | + | let fb = if ((eU > 0)) | |
718 | + | then [IntegerEntry(bn, (cE - eU)), IntegerEntry(bm, cu), ScriptTransfer(z, eU, T)] | |
715 | 719 | else nil | |
716 | - | let | |
717 | - | let | |
718 | - | then [ScriptTransfer(addressFromStringValue(value(getString( | |
720 | + | let fc = eS[as] | |
721 | + | let fd = if ((fc > 0)) | |
722 | + | then [ScriptTransfer(addressFromStringValue(value(getString(dq))), fc, T)] | |
719 | 723 | else nil | |
720 | - | let | |
721 | - | let | |
722 | - | let | |
723 | - | let | |
724 | - | $Tuple2(((([Reissue( | |
724 | + | let cV = eS[ap] | |
725 | + | let eV = eB(R) | |
726 | + | let eW = (cV + eS[au]) | |
727 | + | let fe = eS[ar] | |
728 | + | $Tuple2(((([Reissue(T, fe, true), IntegerEntry(bv, (eS[ag] + fe)), IntegerEntry(dz, eS[av]), IntegerEntry(eV, (valueOrElse(getInteger(eV), 0) + cV)), IntegerEntry(eA, (valueOrElse(getInteger(eA), 0) + cV)), IntegerEntry(bo, (eS[ao] - cV)), IntegerEntry(eZ, eX)] ++ fa) ++ fb) ++ fd), eW) | |
725 | 729 | } | |
726 | 730 | } | |
727 | 731 | ||
728 | 732 | ||
729 | - | func | |
730 | - | let | |
731 | - | let | |
732 | - | let | |
733 | - | let | |
734 | - | let | |
735 | - | let | |
736 | - | let | |
737 | - | $Tuple3([IntegerEntry( | |
733 | + | func ff (R,fg) = { | |
734 | + | let cu = lastBlock.timestamp | |
735 | + | let fh = bB(R) | |
736 | + | let fi = bz(R) | |
737 | + | let eE = valueOrElse(getInteger(fh), 0) | |
738 | + | let fj = valueOrElse(getInteger(fi), 0) | |
739 | + | let fk = valueOrElse(getInteger(bA), 0) | |
740 | + | let aT = fraction(fraction(aR, fj, aO), (eE - cu), bf) | |
741 | + | $Tuple3([IntegerEntry(fh, cu), IntegerEntry(fi, (fj + fg)), IntegerEntry(bA, (fk + fg))], aT, fj) | |
738 | 742 | } | |
739 | 743 | ||
740 | 744 | ||
741 | - | func | |
742 | - | let | |
743 | - | let | |
744 | - | let | |
745 | - | let | |
746 | - | let | |
747 | - | if ((0 >= | |
745 | + | func fl (R) = { | |
746 | + | let W = (height / i) | |
747 | + | let fm = (W - 1) | |
748 | + | let fn = valueOrElse(getInteger(Z(fm)), dL) | |
749 | + | let fo = valueOrElse(getInteger(aa(fm)), 0) | |
750 | + | let fp = valueOrElse(getInteger(V(R, fm)), 0) | |
751 | + | if ((0 >= fp)) | |
748 | 752 | then $Tuple2(nil, unit) | |
749 | 753 | else { | |
750 | - | let | |
751 | - | if ((0 >= | |
752 | - | then $Tuple2([DeleteEntry( | |
754 | + | let fq = valueOrElse(getInteger(X(fm)), 0) | |
755 | + | if ((0 >= fq)) | |
756 | + | then $Tuple2([DeleteEntry(V(R, fm))], unit) | |
753 | 757 | else { | |
754 | - | let | |
755 | - | let | |
756 | - | let | |
757 | - | if ((( | |
758 | + | let aI = value(value(blockInfoByHeight((W * i))).vrf) | |
759 | + | let aH = fromBase58String(split(valueOrElse(getString(L, Q(R)), "42_DEFAULT"), "_")[1]) | |
760 | + | let fr = aF(fq, aH, aI) | |
761 | + | if (((fp * fn) > fr)) | |
758 | 762 | then { | |
759 | - | let | |
760 | - | let | |
761 | - | let | |
762 | - | then ((value( | |
763 | - | else | |
764 | - | $Tuple2([IntegerEntry( | |
763 | + | let fs = invoke(L, "issuePickC1", [R], nil) | |
764 | + | let ft = getString(ab(fm)) | |
765 | + | let fu = if (isDefined(ft)) | |
766 | + | then ((value(ft) + "_") + R) | |
767 | + | else R | |
768 | + | $Tuple2([IntegerEntry(aa(fm), (fo + 1)), DeleteEntry(V(R, fm)), StringEntry(ab(fm), fu)], fs) | |
765 | 769 | } | |
766 | 770 | else { | |
767 | - | let | |
768 | - | let | |
769 | - | let | |
770 | - | let | |
771 | - | $Tuple2(((if (( | |
771 | + | let fv = (aF(9, (base58'29' + aH), aI) + 1) | |
772 | + | let fw = fraction(fp, fv, 10) | |
773 | + | let fx = V(R, W) | |
774 | + | let fy = valueOrElse(getInteger(fx), 0) | |
775 | + | $Tuple2(((if ((fw == 0)) | |
772 | 776 | then nil | |
773 | 777 | else { | |
774 | - | let | |
775 | - | if (( | |
776 | - | then | |
777 | - | else ( | |
778 | - | }) :+ DeleteEntry( | |
778 | + | let fz = [IntegerEntry(X(W), (valueOrElse(getInteger(X(W)), 0) + fw)), IntegerEntry(fx, (fy + fw))] | |
779 | + | if ((fy > 0)) | |
780 | + | then fz | |
781 | + | else (fz :+ IntegerEntry(Y(W), (valueOrElse(getInteger(Y(W)), 0) + 1))) | |
782 | + | }) :+ DeleteEntry(V(R, fm))), fw) | |
779 | 783 | } | |
780 | 784 | } | |
781 | 785 | } | |
782 | 786 | } | |
783 | 787 | ||
784 | 788 | ||
785 | - | func | |
786 | - | let | |
787 | - | let | |
788 | - | let | |
789 | - | let | |
790 | - | let | |
791 | - | let | |
789 | + | func fA (R,fB) = { | |
790 | + | let W = (height / i) | |
791 | + | let fx = V(R, W) | |
792 | + | let fC = split(fB, "_") | |
793 | + | let fD = valueOrElse(getInteger(X(W)), 0) | |
794 | + | let fy = valueOrElse(getInteger(fx), 0) | |
795 | + | let fE = if ((ac(parseIntValue(fC[0])) == parseIntValue(fC[1]))) | |
792 | 796 | then 1 | |
793 | 797 | else 0 | |
794 | - | let | |
795 | - | let | |
796 | - | then ( | |
798 | + | let fF = valueOrElse(getInteger(Y(W)), 0) | |
799 | + | let fG = if (if ((fy == 0)) | |
800 | + | then (fE == 1) | |
797 | 801 | else false) | |
798 | - | then [IntegerEntry(W | |
802 | + | then [IntegerEntry(Y(W), (fF + 1))] | |
799 | 803 | else nil | |
800 | - | $Tuple2(if (( | |
804 | + | $Tuple2(if ((fE == 0)) | |
801 | 805 | then nil | |
802 | - | else (( | |
806 | + | else ((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE) | |
803 | 807 | } | |
804 | 808 | ||
805 | 809 | ||
806 | - | @Callable( | |
807 | - | func constructorV1 ( | |
810 | + | @Callable(fH) | |
811 | + | func constructorV1 (fI,fJ,cA,fK) = if ((fH.caller != this)) | |
808 | 812 | then throw("Permission denied") | |
809 | - | else if (isDefined(getBinary( | |
813 | + | else if (isDefined(getBinary(S))) | |
810 | 814 | then throw("Already initialized") | |
811 | 815 | else { | |
812 | - | let | |
813 | - | let | |
814 | - | let | |
815 | - | [ | |
816 | + | let cl = ba | |
817 | + | let fL = Issue("WLGOLD", "WavesLands Gold investment token", cl, 8, true, unit, 0) | |
818 | + | let fM = calculateAssetId(fL) | |
819 | + | [fL, IntegerEntry(bu, lastBlock.timestamp), IntegerEntry(bv, cl), IntegerEntry(eA, 0), IntegerEntry(bo, fraction(ba, bd, b)), BinaryEntry(S, fM), StringEntry(y(), fI), StringEntry(dq, fJ), StringEntry(bj, cA), StringEntry(ez, fK)] | |
816 | 820 | } | |
817 | 821 | ||
818 | 822 | ||
819 | 823 | ||
820 | - | @Callable( | |
821 | - | func constructorV2 ( | |
824 | + | @Callable(fH) | |
825 | + | func constructorV2 (fN) = if ((fH.caller != this)) | |
822 | 826 | then throw("Permission denied") | |
823 | - | else [StringEntry( | |
827 | + | else [StringEntry(x(), fN)] | |
824 | 828 | ||
825 | 829 | ||
826 | 830 | ||
827 | - | @Callable( | |
828 | - | func buyWlg ( | |
829 | - | let | |
830 | - | if (( | |
831 | - | then if ((size( | |
831 | + | @Callable(fH) | |
832 | + | func buyWlg (fO) = { | |
833 | + | let fP = eC() | |
834 | + | if ((fP == fP)) | |
835 | + | then if ((size(fH.payments) != 1)) | |
832 | 836 | then throw("exactly 1 payment must be attached") | |
833 | 837 | else { | |
834 | - | let | |
835 | - | let | |
836 | - | if (if (!(isDefined( | |
838 | + | let fQ = fH.payments[0] | |
839 | + | let fR = fQ.amount | |
840 | + | if (if (!(isDefined(fQ.assetId))) | |
837 | 841 | then true | |
838 | - | else (value( | |
842 | + | else (value(fQ.assetId) != k)) | |
839 | 843 | then throw("USDT payments only!") | |
840 | 844 | else { | |
841 | - | let | |
842 | - | let | |
843 | - | if ((d > | |
844 | - | then throw((("You can trade min " + | |
845 | + | let eQ = fH.caller | |
846 | + | let R = toString(eQ) | |
847 | + | if ((d > fR)) | |
848 | + | then throw((("You can trade min " + az(d, 6)) + " USDT")) | |
845 | 849 | else { | |
846 | - | let | |
847 | - | let | |
848 | - | let | |
849 | - | let | |
850 | - | let | |
851 | - | let | |
852 | - | if (( | |
853 | - | then throw((("You can get max " + | |
854 | - | else if (( | |
850 | + | let eS = ei("", [K, L, M, N, O], k, fR) | |
851 | + | let fS = eS[ag] | |
852 | + | let fT = eS[ai] | |
853 | + | let fU = fraction(fT, 6, 5, CEILING) | |
854 | + | let fV = fraction(fR, c, fU) | |
855 | + | let fW = eD(R) | |
856 | + | if ((fV > fW)) | |
857 | + | then throw((("You can get max " + az(fW, 8)) + " WLGOLD at the moment")) | |
858 | + | else if ((fO > fV)) | |
855 | 859 | then throw("Price changed during operation, please try again") | |
856 | 860 | else { | |
857 | - | let | |
858 | - | $Tuple2([Reissue( | |
861 | + | let fX = (fR / 6) | |
862 | + | $Tuple2([Reissue(T, fV, true), IntegerEntry(bv, (fS + fV)), IntegerEntry(bq(R), lastBlock.timestamp), IntegerEntry(br(R), (fW - fV)), ScriptTransfer(addressFromStringValue(value(getString(ez))), fX, k), ScriptTransfer(eQ, fV, T)], fP) | |
859 | 863 | } | |
860 | 864 | } | |
861 | 865 | } | |
862 | 866 | } | |
863 | 867 | else throw("Strict value is not equal to itself.") | |
864 | 868 | } | |
865 | 869 | ||
866 | 870 | ||
867 | 871 | ||
868 | - | @Callable( | |
869 | - | func buyWlgREADONLY (p, | |
870 | - | let | |
871 | - | let | |
872 | - | let | |
873 | - | let | |
874 | - | let | |
875 | - | let | |
876 | - | let | |
877 | - | $Tuple2(nil, [ | |
872 | + | @Callable(fH) | |
873 | + | func buyWlgREADONLY (p,fR) = { | |
874 | + | let eS = ei("", [K, L, M, N, O], k, fR) | |
875 | + | let fT = eS[ai] | |
876 | + | let fU = fraction(fT, 6, 5, CEILING) | |
877 | + | let fV = fraction(fR, c, fU) | |
878 | + | let fW = eD(p) | |
879 | + | let fY = fraction(fW, fU, c) | |
880 | + | let fX = (fR / 6) | |
881 | + | $Tuple2(nil, [fV, d, fY, fX]) | |
878 | 882 | } | |
879 | 883 | ||
880 | 884 | ||
881 | 885 | ||
882 | - | @Callable( | |
883 | - | func sellWlg ( | |
884 | - | let | |
885 | - | if (( | |
886 | - | then if ((size( | |
886 | + | @Callable(fH) | |
887 | + | func sellWlg (fZ) = { | |
888 | + | let fP = eC() | |
889 | + | if ((fP == fP)) | |
890 | + | then if ((size(fH.payments) != 1)) | |
887 | 891 | then throw("exactly 1 payment must be attached") | |
888 | 892 | else { | |
889 | - | let | |
890 | - | let | |
891 | - | let | |
892 | - | let | |
893 | - | let | |
894 | - | if (( | |
895 | - | then throw((("You can spend max " + | |
896 | - | else if (if (!(isDefined( | |
893 | + | let fQ = fH.payments[0] | |
894 | + | let ga = fQ.amount | |
895 | + | let eQ = fH.caller | |
896 | + | let R = toString(eQ) | |
897 | + | let fW = eD(R) | |
898 | + | if ((ga > fW)) | |
899 | + | then throw((("You can spend max " + az(fW, 8)) + " WLGOLD at the moment")) | |
900 | + | else if (if (!(isDefined(fQ.assetId))) | |
897 | 901 | then true | |
898 | - | else (value( | |
902 | + | else (value(fQ.assetId) != T)) | |
899 | 903 | then throw("WLGOLD payments only!") | |
900 | 904 | else { | |
901 | - | let | |
902 | - | let | |
903 | - | let | |
904 | - | let | |
905 | - | if ((d > | |
906 | - | then throw((("You can trade min " + | |
907 | - | else if (( | |
905 | + | let eS = ei("", [K, L, M, N, O], k, 0) | |
906 | + | let fS = eS[ag] | |
907 | + | let gb = (eS[ai] / 2) | |
908 | + | let fR = fraction(ga, gb, c) | |
909 | + | if ((d > fR)) | |
910 | + | then throw((("You can trade min " + az(d, 6)) + " USDT")) | |
911 | + | else if ((fZ > fR)) | |
908 | 912 | then throw("Price changed during operation, please try again") | |
909 | 913 | else { | |
910 | - | let | |
911 | - | $Tuple2([Burn( | |
914 | + | let fX = (fR / 5) | |
915 | + | $Tuple2([Burn(T, ga), IntegerEntry(bv, (fS - ga)), IntegerEntry(bq(R), lastBlock.timestamp), IntegerEntry(br(R), (fW - ga)), ScriptTransfer(addressFromStringValue(value(getString(ez))), fX, k), ScriptTransfer(eQ, fR, k)], fP) | |
912 | 916 | } | |
913 | 917 | } | |
914 | 918 | } | |
915 | 919 | else throw("Strict value is not equal to itself.") | |
916 | 920 | } | |
917 | 921 | ||
918 | 922 | ||
919 | 923 | ||
920 | - | @Callable( | |
921 | - | func sellWlgREADONLY (p, | |
922 | - | let | |
923 | - | let | |
924 | - | let | |
925 | - | let | |
926 | - | let | |
927 | - | let | |
928 | - | $Tuple2(nil, [ | |
924 | + | @Callable(fH) | |
925 | + | func sellWlgREADONLY (p,ga) = { | |
926 | + | let fW = eD(p) | |
927 | + | let eS = ei("", [K, L, M, N, O], k, 0) | |
928 | + | let gb = (eS[ai] / 2) | |
929 | + | let fR = fraction(ga, gb, c) | |
930 | + | let gc = fraction(d, c, gb) | |
931 | + | let fX = (fR / 5) | |
932 | + | $Tuple2(nil, [fR, gc, fW, fX]) | |
929 | 933 | } | |
930 | 934 | ||
931 | 935 | ||
932 | 936 | ||
933 | - | @Callable( | |
937 | + | @Callable(fH) | |
934 | 938 | func claim () = { | |
935 | - | let | |
936 | - | if (( | |
937 | - | then if ((size( | |
939 | + | let fP = eC() | |
940 | + | if ((fP == fP)) | |
941 | + | then if ((size(fH.payments) != 0)) | |
938 | 942 | then throw("No payments required") | |
939 | 943 | else { | |
940 | - | let | |
941 | - | let | |
942 | - | let | |
943 | - | $Tuple2(( | |
944 | + | let gd = eY(toString(fH.caller)) | |
945 | + | let ge = gd._1 | |
946 | + | let gf = gd._2 | |
947 | + | $Tuple2((ge :+ ScriptTransfer(fH.caller, gf, T)), fP) | |
944 | 948 | } | |
945 | 949 | else throw("Strict value is not equal to itself.") | |
946 | 950 | } | |
947 | 951 | ||
948 | 952 | ||
949 | 953 | ||
950 | - | @Callable( | |
951 | - | func onStakeUnstakeLand ( | |
952 | - | then ( | |
954 | + | @Callable(fH) | |
955 | + | func onStakeUnstakeLand (R) = if (if (if ((fH.caller != I)) | |
956 | + | then (fH.caller != J) | |
953 | 957 | else false) | |
954 | - | then ( | |
958 | + | then (fH.caller != L) | |
955 | 959 | else false) | |
956 | 960 | then throw("Permission denied") | |
957 | 961 | else { | |
958 | - | let | |
959 | - | if (( | |
962 | + | let gg = eY(R) | |
963 | + | if ((gg == gg)) | |
960 | 964 | then { | |
961 | - | let | |
962 | - | let | |
963 | - | $Tuple2(if (( | |
964 | - | then ( | |
965 | - | else | |
965 | + | let gf = gg._2 | |
966 | + | let ge = gg._1 | |
967 | + | $Tuple2(if ((gf > 0)) | |
968 | + | then (ge :+ ScriptTransfer(addressFromStringValue(R), gf, T)) | |
969 | + | else ge, gf) | |
966 | 970 | } | |
967 | 971 | else throw("Strict value is not equal to itself.") | |
968 | 972 | } | |
969 | 973 | ||
970 | 974 | ||
971 | 975 | ||
972 | - | @Callable( | |
973 | - | func onStakeUnstakeLandOld ( | |
974 | - | then ( | |
976 | + | @Callable(fH) | |
977 | + | func onStakeUnstakeLandOld (R) = if (if (if ((fH.caller != I)) | |
978 | + | then (fH.caller != J) | |
975 | 979 | else false) | |
976 | - | then ( | |
980 | + | then (fH.caller != L) | |
977 | 981 | else false) | |
978 | 982 | then throw("Permission denied") | |
979 | 983 | else { | |
980 | - | let | |
981 | - | if (( | |
984 | + | let gh = eP(R) | |
985 | + | if ((gh == gh)) | |
982 | 986 | then { | |
983 | - | let | |
984 | - | let | |
985 | - | $Tuple2(if (( | |
986 | - | then ( | |
987 | - | else nil, | |
987 | + | let gf = gh._2 | |
988 | + | let ge = gh._1 | |
989 | + | $Tuple2(if ((gf > 0)) | |
990 | + | then (ge :+ ScriptTransfer(addressFromStringValue(R), gf, T)) | |
991 | + | else nil, gf) | |
988 | 992 | } | |
989 | 993 | else throw("Strict value is not equal to itself.") | |
990 | 994 | } | |
991 | 995 | ||
992 | 996 | ||
993 | 997 | ||
994 | - | @Callable(fF) | |
995 | - | func burnWlgold (fY) = if ((fF.caller != K)) | |
998 | + | @Callable(fH) | |
999 | + | func burnWlgold (ga) = if (if ((fH.caller != L)) | |
1000 | + | then (fH.caller != P) | |
1001 | + | else false) | |
996 | 1002 | then throw("Permission denied") | |
997 | 1003 | else { | |
998 | - | let | |
999 | - | if (( | |
1000 | - | then throw(((("Only " + | |
1004 | + | let eS = ei("", [K, L, M, N, O], k, 0) | |
1005 | + | if ((ga > eS[ah])) | |
1006 | + | then throw(((("Only " + az(eS[ah], 8)) + " WLGOLD left on contract, can't burn ") + az(ga, 8))) | |
1001 | 1007 | else { | |
1002 | - | let | |
1003 | - | $Tuple2([Burn( | |
1008 | + | let gi = (eS[ag] - ga) | |
1009 | + | $Tuple2([Burn(T, ga), IntegerEntry(bv, gi)], gi) | |
1004 | 1010 | } | |
1005 | 1011 | } | |
1006 | 1012 | ||
1007 | 1013 | ||
1008 | 1014 | ||
1009 | - | @Callable( | |
1010 | - | func betForTicket ( | |
1011 | - | let | |
1012 | - | if (( | |
1013 | - | then if ((size( | |
1015 | + | @Callable(fH) | |
1016 | + | func betForTicket (gj) = { | |
1017 | + | let fP = eC() | |
1018 | + | if ((fP == fP)) | |
1019 | + | then if ((size(fH.payments) != 0)) | |
1014 | 1020 | then throw("No payments required") | |
1015 | 1021 | else { | |
1016 | - | let | |
1017 | - | let | |
1018 | - | let | |
1019 | - | let | |
1020 | - | if (if (( | |
1021 | - | then ( | |
1022 | + | let R = toString(fH.caller) | |
1023 | + | let fm = ((height / i) - 1) | |
1024 | + | let fp = valueOrElse(getInteger(V(R, fm)), 0) | |
1025 | + | let fq = valueOrElse(getInteger(X(fm)), 0) | |
1026 | + | if (if ((fp > 0)) | |
1027 | + | then (fq > 0) | |
1022 | 1028 | else false) | |
1023 | 1029 | then throw("Please open the chest first") | |
1024 | - | else if ((( | |
1030 | + | else if (((gj / 4) != 0)) | |
1025 | 1031 | then throw("Invalid bet: should be 0..3") | |
1026 | 1032 | else { | |
1027 | - | let | |
1028 | - | if (( | |
1029 | - | then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - | |
1033 | + | let gk = (height % g) | |
1034 | + | if ((gk > (g - 3))) | |
1035 | + | then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - gk))) + " blocks")) | |
1030 | 1036 | else { | |
1031 | - | let | |
1032 | - | if (( | |
1033 | - | then throw((("You need to stake at least " + | |
1037 | + | let gl = valueOrElse(getInteger(L, dD(R)), 0) | |
1038 | + | if ((dM > gl)) | |
1039 | + | then throw((("You need to stake at least " + az(dM, 8)) + " ACRES to bet")) | |
1034 | 1040 | else { | |
1035 | - | let | |
1036 | - | let | |
1037 | - | let | |
1038 | - | let | |
1039 | - | if (isDefined( | |
1041 | + | let gm = ((height / g) + 1) | |
1042 | + | let gn = U(R) | |
1043 | + | let go = getString(gn) | |
1044 | + | let gp = StringEntry(gn, ((toString(gm) + "_") + toString(gj))) | |
1045 | + | if (isDefined(go)) | |
1040 | 1046 | then { | |
1041 | - | let | |
1042 | - | if ((split( | |
1047 | + | let gq = value(go) | |
1048 | + | if ((split(gq, "_")[0] == toString(gm))) | |
1043 | 1049 | then throw("You already bet for tomorrow") | |
1044 | 1050 | else { | |
1045 | - | let | |
1046 | - | $Tuple2(( | |
1051 | + | let gr = fA(R, gq) | |
1052 | + | $Tuple2((gr._1 :+ gp), gr._2) | |
1047 | 1053 | } | |
1048 | 1054 | } | |
1049 | - | else $Tuple2([ | |
1055 | + | else $Tuple2([gp], 0) | |
1050 | 1056 | } | |
1051 | 1057 | } | |
1052 | 1058 | } | |
1053 | 1059 | } | |
1054 | 1060 | else throw("Strict value is not equal to itself.") | |
1055 | 1061 | } | |
1056 | 1062 | ||
1057 | 1063 | ||
1058 | 1064 | ||
1059 | - | @Callable( | |
1060 | - | func takeWlgXp ( | |
1065 | + | @Callable(fH) | |
1066 | + | func takeWlgXp (R) = if ((fH.caller != I)) | |
1061 | 1067 | then throw("Permission denied") | |
1062 | 1068 | else { | |
1063 | - | let | |
1064 | - | let | |
1065 | - | let | |
1066 | - | $Tuple2( | |
1069 | + | let gs = ff(R, 0) | |
1070 | + | let ge = gs._1 | |
1071 | + | let aT = gs._2 | |
1072 | + | $Tuple2(ge, aT) | |
1067 | 1073 | } | |
1068 | 1074 | ||
1069 | 1075 | ||
1070 | 1076 | ||
1071 | - | @Callable( | |
1072 | - | func checkWlgXpREADONLY ( | |
1073 | - | let | |
1074 | - | let | |
1075 | - | let | |
1076 | - | let | |
1077 | - | let | |
1078 | - | $Tuple2(nil, ( | |
1077 | + | @Callable(fH) | |
1078 | + | func checkWlgXpREADONLY (R) = { | |
1079 | + | let gt = ff(R, 0) | |
1080 | + | let gu = gt._1 | |
1081 | + | let gv = gt._2 | |
1082 | + | let aW = (valueOrElse(getInteger(I, aP(R)), 0) + gv) | |
1083 | + | let gw = aU(valueOrElse(getInteger(I, aQ(R)), 0), aW) | |
1084 | + | $Tuple2(nil, (gw :+ aW)) | |
1079 | 1085 | } | |
1080 | 1086 | ||
1081 | 1087 | ||
1082 | 1088 | ||
1083 | - | @Callable( | |
1084 | - | func setNumPrizes ( | |
1089 | + | @Callable(fH) | |
1090 | + | func setNumPrizes (fn) = if ((fH.caller != this)) | |
1085 | 1091 | then throw("Permission denied") | |
1086 | 1092 | else { | |
1087 | - | let | |
1088 | - | $Tuple2([IntegerEntry( | |
1093 | + | let W = (height / i) | |
1094 | + | $Tuple2([IntegerEntry(Z(W), fn)], fn) | |
1089 | 1095 | } | |
1090 | 1096 | ||
1091 | 1097 | ||
1092 | 1098 | ||
1093 | - | @Callable( | |
1099 | + | @Callable(fH) | |
1094 | 1100 | func openChest () = { | |
1095 | - | let | |
1096 | - | if (( | |
1097 | - | then if ((size( | |
1101 | + | let fP = eC() | |
1102 | + | if ((fP == fP)) | |
1103 | + | then if ((size(fH.payments) != 0)) | |
1098 | 1104 | then throw("No payments required") | |
1099 | 1105 | else { | |
1100 | - | let | |
1101 | - | let | |
1102 | - | let | |
1103 | - | if ((0 >= | |
1106 | + | let fm = ((height / i) - 1) | |
1107 | + | let R = toString(fH.caller) | |
1108 | + | let fp = valueOrElse(getInteger(V(R, fm)), 0) | |
1109 | + | if ((0 >= fp)) | |
1104 | 1110 | then throw("No gems to open the chest") | |
1105 | - | else | |
1111 | + | else fl(R) | |
1106 | 1112 | } | |
1107 | 1113 | else throw("Strict value is not equal to itself.") | |
1108 | 1114 | } | |
1109 | 1115 | ||
1110 | 1116 | ||
1111 | 1117 | ||
1112 | - | @Callable( | |
1113 | - | func addGemsFor ( | |
1118 | + | @Callable(fH) | |
1119 | + | func addGemsFor (R,fE) = if ((fH.caller != this)) | |
1114 | 1120 | then throw("Permission denied") | |
1115 | 1121 | else { | |
1116 | - | let | |
1117 | - | let | |
1118 | - | let | |
1119 | - | let | |
1120 | - | let | |
1121 | - | let | |
1122 | - | then ( | |
1122 | + | let W = (height / i) | |
1123 | + | let fx = V(R, W) | |
1124 | + | let fD = valueOrElse(getInteger(X(W)), 0) | |
1125 | + | let fy = valueOrElse(getInteger(fx), 0) | |
1126 | + | let fF = valueOrElse(getInteger(Y(W)), 0) | |
1127 | + | let fG = if (if ((fy == 0)) | |
1128 | + | then (fE == 1) | |
1123 | 1129 | else false) | |
1124 | - | then [IntegerEntry(W | |
1130 | + | then [IntegerEntry(Y(W), (fF + 1))] | |
1125 | 1131 | else nil | |
1126 | - | $Tuple2((( | |
1132 | + | $Tuple2(((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE) | |
1127 | 1133 | } | |
1128 | 1134 | ||
1129 | 1135 |
github/deemru/w8io/169f3d6 438.68 ms ◑