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:
OldNewDifferences
8787
8888 let u = 5
8989
90-func v () = "%s__restConfig"
90+let v = 6
91+
92+func w () = "%s__restConfig"
9193
9294
93-func w () = "%s__rest2Addr"
95+func x () = "%s__rest2Addr"
9496
9597
96-func x () = "%s__restAddr"
98+func y () = "%s__restAddr"
9799
98100
99-let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
101+let z = addressFromStringValue(valueOrElse(getString(this, y()), m))
100102
101-func z (A) = split_4C(o(A, v()), a)
103+func A (B) = split_4C(o(B, w()), a)
102104
103105
104-func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
106+func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E)))
105107
106108
107-let E = 1
109+let F = 1
108110
109-let F = 8
111+let G = 8
110112
111-let G = z(y)
113+let H = A(z)
112114
113-let H = B(G, E)
115+let I = C(H, F)
114116
115-let I = B(G, F)
117+let J = C(H, G)
116118
117-let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
119+let K = addressFromStringValue(valueOrElse(getString(this, x()), l))
118120
119-let C = z(J)
121+let D = A(K)
120122
121-let K = B(C, r)
123+let L = C(D, r)
122124
123-let L = B(C, s)
125+let M = C(D, s)
124126
125-let M = B(C, t)
127+let N = C(D, t)
126128
127-let N = B(C, u)
129+let O = C(D, u)
128130
129-func O (P) = ("lastWeekTxIdByUser_" + P)
131+let P = C(D, v)
132+
133+func Q (R) = ("lastWeekTxIdByUser_" + R)
130134
131135
132-let Q = "wlg_assetId"
136+let S = "wlg_assetId"
133137
134-let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
138+let T = valueOrErrorMessage(getBinary(M, S), "WLGOLD is not issued yet")
135139
136-func S (P) = ("userBet_" + P)
140+func U (R) = ("userBet_" + R)
137141
138142
139-func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
143+func V (R,W) = ((("userWeekTickets_" + R) + "_") + toString(W))
140144
141145
142-func V (U) = ("totalWeekTickets_" + toString(U))
146+func X (W) = ("totalWeekTickets_" + toString(W))
143147
144148
145-func W (U) = ("totalWeekParticipants_" + toString(U))
149+func Y (W) = ("totalWeekParticipants_" + toString(W))
146150
147151
148-func X (U) = ("numNFT2Draw_" + toString(U))
152+func Z (W) = ("numNFT2Draw_" + toString(W))
149153
150154
151-func Y (U) = ("numNFTDrawn_" + toString(U))
155+func aa (W) = ("numNFTDrawn_" + toString(W))
152156
153157
154-func Z (U) = ("weekWinners_" + toString(U))
158+func ab (W) = ("weekWinners_" + toString(W))
155159
156160
157-func aa (ab) = {
158- let ac = (ab * g)
159- let ad = if ((ac > j))
160- then ac
161- else (ac + j)
162- (toInt(value(value(blockInfoByHeight(ad)).vrf)) % 4)
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)
163167 }
164168
165169
166-let ae = 0
170+let ag = 0
167171
168-let af = 1
172+let ah = 1
169173
170-let ag = 2
174+let ai = 2
171175
172-let ah = 8
176+let aj = 8
173177
174-let ai = 11
178+let ak = 11
175179
176-let aj = 12
180+let al = 12
177181
178-let ak = 15
182+let am = 15
179183
180-let al = 16
184+let an = 16
181185
182-let am = 19
186+let ao = 19
183187
184-let an = 23
188+let ap = 23
185189
186-let ao = 24
190+let aq = 24
187191
188-let ap = 25
192+let ar = 25
189193
190-let aq = 26
194+let as = 26
191195
192-let ar = 27
196+let at = 27
193197
194-let as = 28
198+let au = 28
195199
196-let at = 29
200+let av = 29
197201
198-func au (av) = {
199- let h = av
202+func aw (ax) = {
203+ let h = ax
200204 if ($isInstanceOf(h, "Int"))
201205 then {
202- let aw = h
203- aw
206+ let ay = h
207+ ay
204208 }
205209 else throw("fail to cast into Int")
206210 }
207211
208212
209-func ax (ay,az) = {
210- let aA = pow(10, 0, az, 0, 0, DOWN)
211- let aB = toString((ay % aA))
212- let aC = drop(toString(aA), (1 + size(aB)))
213- (((toString((ay / aA)) + ".") + aC) + aB)
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)
214218 }
215219
216220
217-func aD (aE,aF,aG) = if ((0 >= aE))
221+func aF (aG,aH,aI) = if ((0 >= aG))
218222 then throw("maxValue should be > 0")
219223 else {
220- let aH = sha256_16Kb((aF + aG))
221- (toInt(aH) % aE)
224+ let aJ = sha256_16Kb((aH + aI))
225+ (toInt(aJ) % aG)
222226 }
223227
224228
225-let aI = 100000000
229+let aK = 100000000
226230
227-let aJ = 3200
231+let aL = 3200
228232
229-let aK = 4000
233+let aM = 4000
230234
231-let aL = 3
235+let aN = 3
232236
233-let aM = 100000000000
237+let aO = 100000000000
234238
235-func aN (P) = ("userXP_" + P)
239+func aP (R) = ("userXP_" + R)
236240
237241
238-func aO (P) = ("userLevel_" + P)
242+func aQ (R) = ("userLevel_" + R)
239243
240244
241-let aP = 10000
245+let aR = 10000
242246
243-func aQ (aR) = fraction(aJ, pow(aR, 4, aK, 4, 4, DOWN), aI)
247+func aS (aT) = fraction(aL, pow(aT, 4, aM, 4, 4, DOWN), aK)
244248
245249
246-func aS (aT,aU) = {
247- let aV = aQ(aU)
248-[aV, (aL * (aV - aT))]
250+func aU (aV,aW) = {
251+ let aX = aS(aW)
252+[aX, (aN * (aX - aV))]
249253 }
250254
251255
252-let aW = 1000000
256+let aY = 1000000
253257
254-let aX = 100000000
258+let aZ = 100000000
255259
256-let aY = 100000000000000
260+let ba = 100000000000000
257261
258-let aZ = 200000
262+let bb = 200000
259263
260-let ba = 100000
264+let bc = 100000
261265
262-let bb = 400000
266+let bd = 400000
263267
264-let bc = 31557600000
268+let be = 31557600000
265269
266-let bd = 86400000
270+let bf = 86400000
267271
268-let be = 50000
272+let bg = 50000
269273
270-let bf = take(drop(this.bytes, 1), 1)
274+let bh = take(drop(this.bytes, 1), 1)
271275
272-let bg = {
273- let h = bf
276+let bi = {
277+ let h = bh
274278 if ((base58'2W' == h))
275279 then 1208630000
276280 else if ((base58'2T' == h))
278282 else throw("Unknown chain")
279283 }
280284
281-let bh = "teamAddr"
285+let bj = "teamAddr"
282286
283-let bi = "lastClaimedTime_team"
287+let bk = "lastClaimedTime_team"
284288
285-let bj = "teamAmountLeft"
289+let bl = "teamAmountLeft"
286290
287-let bk = "lastClaimedTime_activities"
291+let bm = "lastClaimedTime_activities"
288292
289-let bl = "activitiesAmountLeft"
293+let bn = "activitiesAmountLeft"
290294
291-let bm = "stakersAmountLeft"
295+let bo = "stakersAmountLeft"
292296
293-func bn (P) = ("lastClaimedTimeUserOld_" + P)
297+func bp (R) = ("lastClaimedTimeUserOld_" + R)
294298
295299
296-func bo (P) = ("lastArbTimeUser_" + P)
300+func bq (R) = ("lastArbTimeUser_" + R)
297301
298302
299-func bp (P) = ("lastWlgLimitUser_" + P)
303+func br (R) = ("lastWlgLimitUser_" + R)
300304
301305
302-func bq (br) = fraction(aY, (bb * (br + 1)), (6 * aW))
306+func bs (bt) = fraction(ba, (bd * (bt + 1)), (6 * aY))
303307
304308
305-let bs = "wlg_issueTime"
309+let bu = "wlg_issueTime"
306310
307-let bt = "wlg_issuedAmount"
311+let bv = "wlg_issuedAmount"
308312
309-let bu = "zbill_issuedAmount"
313+let bw = "zbill_issuedAmount"
310314
311-func bv (P) = ("acresStakedAmountByUser_" + P)
315+func bx (R) = ("acresStakedAmountByUser_" + R)
312316
313317
314-let bw = "acresStakedAmountTotal"
318+let by = "acresStakedAmountTotal"
315319
316-func bx (P) = ("wlgStakedAmountByUser_" + P)
320+func bz (R) = ("wlgStakedAmountByUser_" + R)
317321
318322
319-let by = "wlgStakedAmountTotal"
323+let bA = "wlgStakedAmountTotal"
320324
321-func bz (P) = ("wlgStakedTimeByUser_" + P)
325+func bB (R) = ("wlgStakedTimeByUser_" + R)
322326
323327
324-let bA = 0
328+let bC = 0
325329
326-let bB = 1
330+let bD = 1
327331
328-let bC = 2
332+let bE = 2
329333
330-let bD = 3
334+let bF = 3
331335
332-let bE = 4
336+let bG = 4
333337
334-let bF = 5
338+let bH = 5
335339
336-let bG = 6
340+let bI = 6
337341
338-func bH (bI,H,I) = {
339- let bJ = split(valueOrElse(getString(H, "resTypesProportions"), "0_0_0_0_0_0"), "_")
340- func bK (bL,bM) = (bL + parseIntValue(bM))
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))
341345
342- let bN = {
343- let bO = bJ
344- let bP = size(bO)
345- let bQ = 0
346- func bR (bS,bT) = if ((bT >= bP))
347- then bS
348- else bK(bS, bO[bT])
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])
349353
350- func bU (bS,bT) = if ((bT >= bP))
351- then bS
354+ func bW (bU,bV) = if ((bV >= bR))
355+ then bU
352356 else throw("List size exceeds 6")
353357
354- bU(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6)
358+ bW(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6)
355359 }
356- let bV = valueOrElse(getInteger(H, ("stakedPiecesByOwner_" + bI)), 0)
357- let bW = valueOrElse(getInteger(I, bw), 0)
358- let bX = valueOrElse(getInteger(I, bv(bI)), 0)
359-[bN, bV, bW, bX]
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]
360364 }
361365
362366
363-let bY = 0
367+let ca = 0
364368
365-let bZ = 1
369+let cb = 1
366370
367-let ca = 2
371+let cc = 2
368372
369-let cb = 3
373+let cd = 3
370374
371-let cc = 1733346000000
375+let ce = 1733346000000
372376
373-func cd (ce,cf,cg,ch,ci) = {
374- let cj = valueOrErrorMessage(getInteger(cf[bD], bt), "WLGOLD is not issued yet")
375- let ck = assetBalance(cf[bC], cg)
376- let cl = assetBalance(cf[bA], cg)
377- let cm = (assetBalance(cf[bD], cg) - ch)
378- let cn = assetBalance(cf[bE], cg)
379- let co = cf[bF]
380- let cp = (assetBalance(co, cg) + valueOrElse(getInteger(co, bu), 0))
381- let cq = ((ck + cm) + cp)
382- let cr = valueOrErrorMessage(getBinary(cf[bD], "wlg_assetId"), "Not initialized yet")
383- let cs = lastBlock.timestamp
384- let ct = valueOrErrorMessage(getInteger(cf[bD], bs), "Not initialized")
385- let cu = assetBalance(cf[bB], cr)
386- let cv = fraction(aY, aZ, aW)
387- let cw = valueOrElse(getInteger(cf[bD], bj), cv)
388- let cx = valueOrElse(getInteger(cf[bD], bi), ct)
389- let cy = addressFromStringValue(value(getString(cf[bD], bh)))
390- let cz = min([fraction(cv, (cs - cx), (3 * bc)), cw])
391- let cA = assetBalance(cy, cr)
392- let cB = fraction(aY, ba, aW)
393- let cC = valueOrElse(getInteger(cf[bD], bl), cB)
394- let cD = valueOrElse(getInteger(cf[bD], bk), ct)
395- let cE = min([fraction(cB, (cs - cD), (3 * bc)), cC])
396- let cF = assetBalance(cf[bA], cr)
397- let cG = valueOrElse(getInteger(cf[bD], bn(ce)), ct)
398- let cH = ((cG - ct) / bc)
399- let cI = min([min([cs, (ct + (3 * bc))]), cc])
400- let cJ = min([((cs - ct) / bc), 2])
401- let cK = bH(ce, cf[bB], cf[bG])
402- let cL = bq(cJ)
403- let cM = if ((cH == cJ))
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))
404408 then {
405- let cN = fraction(cL, (cI - cG), bc)
406- let cO = fraction(cN, ci, aW)
407- let cP = (cG + fraction((cI - cG), ci, aW))
408- $Tuple3(cO, cN, cP)
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)
409413 }
410- else if ((cH == (cJ - 1)))
414+ else if ((cJ == (cL - 1)))
411415 then {
412- let cQ = fraction(bq((cJ - 1)), ((ct + (bc * cJ)) - cG), bc)
413- let cN = fraction(cL, (cI - (ct + (bc * cJ))), bc)
414- let cR = (cQ + cN)
415- let cO = fraction(cR, ci, aW)
416- let cP = if ((cQ >= cO))
417- then (cG + fraction(bc, cO, bq((cJ - 1))))
418- else ((ct + (bc * cJ)) + fraction(bc, (cO - cQ), cL))
419- $Tuple3(cO, cR, cP)
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)
420424 }
421425 else {
422- let cS = fraction(bq((cJ - 2)), ((ct + (bc * (cJ - 1))) - cG), bc)
423- let cQ = bq((cJ - 1))
424- let cN = fraction(cL, (cI - (ct + (bc * cJ))), bc)
425- let cR = ((cS + cQ) + cN)
426- let cO = fraction(cR, ci, aW)
427- let cP = if ((cS >= cO))
428- then (cG + fraction(bc, cO, bq((cJ - 2))))
429- else if (((cS + cQ) >= cO))
430- then ((ct + (bc * (cJ - 1))) + fraction(bc, (cO - cS), bq((cJ - 1))))
431- else ((ct + (bc * cJ)) + fraction(bc, ((cO - cS) - cQ), cL))
432- $Tuple3(cO, cR, cP)
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)
433437 }
434- let cT = cM._1
435- let cU = cM._2
436- let cV = cM._3
437- let cW = fraction(fraction(cL, bd, bc), 25, cK[bY])
438- let cX = valueOrElse(getInteger(cf[bD], bm), 0)
439- let cY = fraction(cT, ((cK[bZ] * aX) + cK[cb]), ((cK[bY] * aX) + cK[ca]))
440- let cZ = fraction(cY, be, aW)
441- let da = (cY - cZ)
442- let db = fraction(cU, ((cK[bZ] * aX) + cK[cb]), ((cK[bY] * aX) + cK[ca]))
443-[cj, fraction((cq - bg), aX, cj), cq, ck, cl, cm, cn, ct, cx, cv, cw, cz, cA, cB, cC, cE, cF, cJ, cX, cL, cG, da, cW, cp, db, cV, cu]
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]
444448 }
445449
446450
447-let dc = 1000000
451+let de = 1000000
448452
449-let dd = 100000000
453+let df = 100000000
450454
451-let de = 200000
455+let dg = 200000
452456
453-let df = 100000
457+let dh = 100000
454458
455-let dg = 400000
459+let di = 400000
456460
457-let dh = 31557600000
461+let dj = 31557600000
458462
459-let di = 86400000
463+let dk = 86400000
460464
461-let dj = 1000000000
465+let dl = 1000000000
462466
463-let dk = 800000
467+let dm = 800000
464468
465-let dl = 100000
469+let dn = 100000
466470
467-let dm = 100000
471+let do = 100000
468472
469-let dn = 1731279600000
473+let dp = 1731279600000
470474
471-let do = "marketingAddr"
475+let dq = "marketingAddr"
472476
473-let dp = "teamAddr"
477+let dr = "teamAddr"
474478
475-let dq = "lastClaimedTime_team"
479+let ds = "lastClaimedTime_team"
476480
477-let dr = "teamAmountLeft"
481+let dt = "teamAmountLeft"
478482
479-let ds = "lastClaimedTime_activities"
483+let du = "lastClaimedTime_activities"
480484
481-let dt = "activitiesAmountLeft"
485+let dv = "activitiesAmountLeft"
482486
483-let du = "stakersAmountLeft"
487+let dw = "stakersAmountLeft"
484488
485-func dv (P) = ("lastClaimedTimeUser_" + P)
489+func dx (R) = ("lastClaimedTimeUser_" + R)
486490
487491
488-func dw (cj,br) = fraction(cj, (dg * (br + 1)), (6 * dc))
492+func dy (cl,bt) = fraction(cl, (di * (bt + 1)), (6 * de))
489493
490494
491-let dx = "wlg_issue10Time"
495+let dz = "wlg_issue10Time"
492496
493-let dy = "wlg_issueTime"
497+let dA = "wlg_issueTime"
494498
495-let dz = "wlg_issuedAmount"
499+let dB = "wlg_issuedAmount"
496500
497-let dA = "zbill_issuedAmount"
501+let dC = "zbill_issuedAmount"
498502
499-func dB (P) = ("acresStakedAmountByUser_" + P)
503+func dD (R) = ("acresStakedAmountByUser_" + R)
500504
501505
502-let dC = "acresStakedAmountTotal"
506+let dE = "acresStakedAmountTotal"
503507
504-let dD = "totalFarmingPower"
508+let dF = "totalFarmingPower"
505509
506-let dE = 0
510+let dG = 0
507511
508-let dF = 1
512+let dH = 1
509513
510-let dG = 2
514+let dI = 2
511515
512-let dH = 3
516+let dJ = 3
513517
514-let dI = 4
518+let dK = 4
515519
516-let dJ = 5
520+let dL = 5
517521
518-let dK = 100000000
522+let dM = 100000000
519523
520-let dL = "nftTotalIssued"
524+let dN = "nftTotalIssued"
521525
522-let dM = "nftTotalBurned"
526+let dO = "nftTotalBurned"
523527
524-let dN = "WlNftTotalStaked"
528+let dP = "WlNftTotalStaked"
525529
526-func dO (P) = ("userWlNftNumber_" + P)
530+func dQ (R) = ("userWlNftNumber_" + R)
527531
528532
529-func dP (P) = ("userFullBonus_" + P)
533+func dR (R) = ("userFullBonus_" + R)
530534
531535
532-let dQ = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
536+let dS = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
533537
534-func dR (dS) = {
535- let dT = ((dS + 99999999) / dd)
536- func dU (bL,bM) = if ((bM >= dT))
537- then bL
538- else (bL + 1)
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)
539543
540- let bO = dQ
541- let bP = size(bO)
542- let bQ = 0
543- func bR (bS,bT) = if ((bT >= bP))
544- then bS
545- else dU(bS, bO[bT])
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])
546550
547- func bU (bS,bT) = if ((bT >= bP))
548- then bS
551+ func bW (bU,bV) = if ((bV >= bR))
552+ then bU
549553 else throw("List size exceeds 10")
550554
551- bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
555+ bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
552556 }
553557
554558
555-func dV (dS) = ((dS * 20) * (dR(dS) + 4))
559+func dX (dU) = ((dU * 20) * (dT(dU) + 4))
556560
557561
558-func dW (dS,dX) = {
559- let dY = dV(dS)
560- $Tuple2(fraction(dY, (dc + dX), dc), dY)
562+func dY (dU,dZ) = {
563+ let ea = dX(dU)
564+ $Tuple2(fraction(ea, (de + dZ), de), ea)
561565 }
562566
563567
564-func dZ (bI,K) = {
565- let ea = valueOrElse(getInteger(K, dD), 0)
566- let bX = valueOrElse(getInteger(K, dB(bI)), 0)
567- let eb = valueOrElse(getInteger(K, dP(bI)), 0)
568- let cM = dW(bX, eb)
569- let ec = cM._1
570- let ed = cM._2
571-[ea, ec, ed, eb]
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]
572576 }
573577
574578
575-let ee = 0
579+let eg = 0
576580
577-let ef = 1
581+let eh = 1
578582
579-func eg (ce,cf,cg,ch) = {
580- let cj = valueOrErrorMessage(getInteger(cf[dG], dz), "WLGOLD is not issued yet")
581- let cl = assetBalance(cf[dE], cg)
582- let cm = (assetBalance(cf[dG], cg) - ch)
583- let cn = assetBalance(cf[dH], cg)
584- let eh = assetBalance(cf[dF], cg)
585- let co = cf[dI]
586- let cp = (assetBalance(co, cg) + valueOrElse(getInteger(co, dA), 0))
587- let cq = ((eh + cm) + cp)
588- let cr = valueOrErrorMessage(getBinary(cf[dG], "wlg_assetId"), "Not initialized yet")
589- let cs = lastBlock.timestamp
590- let ct = valueOrErrorMessage(getInteger(cf[dG], dy), "Not initialized")
591- let ei = assetBalance(cf[dG], cr)
592- let cv = fraction(cj, de, dc)
593- let cw = valueOrElse(getInteger(cf[dG], dr), cv)
594- let cx = valueOrElse(getInteger(cf[dG], dq), ct)
595- let cy = addressFromStringValue(value(getString(cf[dG], dp)))
596- let cz = min([fraction(cv, (cs - cx), (3 * dh)), cw])
597- let cA = assetBalance(cy, cr)
598- let cB = fraction(cj, df, dc)
599- let cC = valueOrElse(getInteger(cf[dG], dt), cB)
600- let cD = valueOrElse(getInteger(cf[dG], ds), ct)
601- let cE = min([fraction(cB, (cs - cD), (3 * dh)), cC])
602- let cF = assetBalance(cf[dE], cr)
603- let cG = valueOrElse(getInteger(cf[dG], dv(ce)), ct)
604- let cH = ((cG - ct) / dh)
605- let cI = min([cs, (ct + (3 * dh))])
606- let cJ = min([((cs - ct) / dh), 2])
607- let cK = dZ(ce, cf[dF])
608- let cL = dw(cj, cJ)
609- let ej = (ct + (dh * cJ))
610- let ek = (ct + (dh * (cJ - 1)))
611- let cN = fraction(cL, (cI - cG), dh)
612- let cU = if ((cH == cJ))
613- then cN
614- else if ((cH == (cJ - 1)))
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)))
615619 then {
616- let cQ = fraction(dw(cj, (cJ - 1)), (ej - cG), dh)
617- (cQ + cN)
620+ let cS = fraction(dy(cl, (cL - 1)), (el - cI), dj)
621+ (cS + cP)
618622 }
619623 else {
620- let cS = fraction(dw(cj, (cJ - 2)), (ek - cG), dh)
621- let cQ = dw(cj, (cJ - 1))
622- ((cS + cQ) + cN)
624+ let cU = fraction(dy(cl, (cL - 2)), (em - cI), dj)
625+ let cS = dy(cl, (cL - 1))
626+ ((cU + cS) + cP)
623627 }
624- let cX = valueOrElse(getInteger(cf[dG], du), 0)
625- let cT = if ((cK[ee] != 0))
626- then fraction(cU, cK[ef], cK[ee])
628+ let cZ = valueOrElse(getInteger(ch[dI], dw), 0)
629+ let cV = if ((cM[eg] != 0))
630+ then fraction(cW, cM[eh], cM[eg])
627631 else 0
628- let el = valueOrElse(getInteger(cf[dG], dx), dn)
629- let em = fraction(dj, max([(cs - el), 0]), di)
630- let en = fraction(em, dl, dc)
631- let eo = fraction(em, dm, dc)
632- let ep = max([(cs - max([dn, cG])), 0])
633- let eq = if ((cK[ee] != 0))
634- then fraction(fraction(fraction(dj, ep, di), cK[ef], cK[ee]), dk, dc)
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)
635639 else 0
636- let er = max([dn, cs])
637- let es = valueOrElse(getInteger(cf[dF], dC), 0)
638- let et = valueOrElse(getInteger(cf[dF], dL), 0)
639- let eu = valueOrElse(getInteger(cf[dF], dM), 0)
640- let ev = valueOrElse(getInteger(cf[dF], dN), 0)
641- let ew = valueOrElse(getInteger(cf[dF], dO(valueOrElse(ce, ""))), 0)
642-[cj, ei, fraction(cq, dd, cj), cq, cl, eh, cm, cn, ct, cx, cv, cw, cz, cA, cB, cC, cE, cF, cJ, cX, cL, cG, cp, cT, cI, em, en, eo, eq, er, cK[ee], es, et, eu, ev, ew]
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]
643647 }
644648
645649
646-let ex = "profitAddr"
650+let ez = "profitAddr"
647651
648-let ey = "stakersAmountPaidTotal"
652+let eA = "stakersAmountPaidTotal"
649653
650-func ez (P) = ("stakersAmountPaidUser_" + P)
654+func eB (R) = ("stakersAmountPaidUser_" + R)
651655
652656
653-func eA () = au(reentrantInvoke(K, "saveLastTx", nil, nil))
657+func eC () = aw(reentrantInvoke(L, "saveLastTx", nil, nil))
654658
655659
656-func eB (P) = {
657- let eC = valueOrElse(getInteger(bo(P)), 0)
658- let eD = valueOrElse(getInteger(K, bv(P)), 0)
659- let eE = valueOrElse(getInteger(bp(P)), eD)
660- let eF = (eE + fraction(eD, (lastBlock.timestamp - eC), e))
661- min([eF, eD])
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])
662666 }
663667
664668
665-let eG = 10
669+let eI = 10
666670
667-let eH = 11
671+let eJ = 11
668672
669-let eI = 14
673+let eK = 14
670674
671-let eJ = 15
675+let eL = 15
672676
673-let eK = 18
677+let eM = 18
674678
675-let eL = 24
679+let eN = 24
676680
677-let eM = 25
681+let eO = 25
678682
679-func eN (P) = {
680- let eO = addressFromStringValue(P)
681- let eP = addressFromStringValue(n)
682- let eQ = cd(P, [y, H, eP, L, M, N, I], k, 0, b)
683- let cs = lastBlock.timestamp
684- let cw = eQ[eG]
685- let eR = eQ[eH]
686- let cC = eQ[eI]
687- let eS = eQ[eJ]
688- let cT = eQ[eL]
689- let eT = ez(P)
690- let eU = eQ[eL]
691- let eV = eQ[eM]
692- $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(bh))), eR, R), ScriptTransfer(y, eS, R), IntegerEntry(eT, (valueOrElse(getInteger(eT), 0) + cT)), IntegerEntry(ey, (valueOrElse(getInteger(ey), 0) + eU)), IntegerEntry(bm, (eQ[eK] - eU)), IntegerEntry(bj, (cw - eR)), IntegerEntry(bi, cs), IntegerEntry(bl, (cC - eS)), IntegerEntry(bk, cs), IntegerEntry(bn(P), eV)], cT)
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)
693697 }
694698
695699
696-func eW (P) = {
697- let eQ = eg(P, [J, K, L, M, N], k, 0)
698- let eX = dv(P)
699- let cG = valueOrElse(getInteger(eX), 0)
700- let eV = eQ[ao]
701- if ((cG == eV))
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))
702706 then $Tuple2(nil, 0)
703707 else {
704- let cs = lastBlock.timestamp
705- let ct = eQ[ah]
706- let cw = eQ[ai]
707- let eR = (eQ[aj] + eQ[ar])
708- let eY = if ((eR > 0))
709- then [IntegerEntry(bj, ((cw - eR) + eQ[ar])), IntegerEntry(bi, cs), ScriptTransfer(addressFromStringValue(value(getString(bh))), eR, R)]
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)]
710714 else nil
711- let cC = eQ[ak]
712- let eS = eQ[al]
713- let eZ = if ((eS > 0))
714- then [IntegerEntry(bl, (cC - eS)), IntegerEntry(bk, cs), ScriptTransfer(y, eS, R)]
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)]
715719 else nil
716- let fa = eQ[aq]
717- let fb = if ((fa > 0))
718- then [ScriptTransfer(addressFromStringValue(value(getString(do))), fa, R)]
720+ let fc = eS[as]
721+ let fd = if ((fc > 0))
722+ then [ScriptTransfer(addressFromStringValue(value(getString(dq))), fc, T)]
719723 else nil
720- let cT = eQ[an]
721- let eT = ez(P)
722- let eU = (cT + eQ[as])
723- let fc = eQ[ap]
724- $Tuple2(((([Reissue(R, fc, true), IntegerEntry(bt, (eQ[ae] + fc)), IntegerEntry(dx, eQ[at]), IntegerEntry(eT, (valueOrElse(getInteger(eT), 0) + cT)), IntegerEntry(ey, (valueOrElse(getInteger(ey), 0) + cT)), IntegerEntry(bm, (eQ[am] - cT)), IntegerEntry(eX, eV)] ++ eY) ++ eZ) ++ fb), eU)
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)
725729 }
726730 }
727731
728732
729-func fd (P,fe) = {
730- let cs = lastBlock.timestamp
731- let ff = bz(P)
732- let fg = bx(P)
733- let eC = valueOrElse(getInteger(ff), 0)
734- let fh = valueOrElse(getInteger(fg), 0)
735- let fi = valueOrElse(getInteger(by), 0)
736- let aR = fraction(fraction(aP, fh, aM), (eC - cs), bd)
737- $Tuple3([IntegerEntry(ff, cs), IntegerEntry(fg, (fh + fe)), IntegerEntry(by, (fi + fe))], aR, fh)
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)
738742 }
739743
740744
741-func fj (P) = {
742- let U = (height / i)
743- let fk = (U - 1)
744- let fl = valueOrElse(getInteger(X(fk)), dJ)
745- let fm = valueOrElse(getInteger(Y(fk)), 0)
746- let fn = valueOrElse(getInteger(T(P, fk)), 0)
747- if ((0 >= fn))
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))
748752 then $Tuple2(nil, unit)
749753 else {
750- let fo = valueOrElse(getInteger(V(fk)), 0)
751- if ((0 >= fo))
752- then $Tuple2([DeleteEntry(T(P, fk))], unit)
754+ let fq = valueOrElse(getInteger(X(fm)), 0)
755+ if ((0 >= fq))
756+ then $Tuple2([DeleteEntry(V(R, fm))], unit)
753757 else {
754- let aG = value(value(blockInfoByHeight((U * i))).vrf)
755- let aF = fromBase58String(split(valueOrElse(getString(K, O(P)), "42_DEFAULT"), "_")[1])
756- let fp = aD(fo, aF, aG)
757- if (((fn * fl) > fp))
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))
758762 then {
759- let fq = invoke(K, "issuePickC1", [P], nil)
760- let fr = getString(Z(fk))
761- let fs = if (isDefined(fr))
762- then ((value(fr) + "_") + P)
763- else P
764- $Tuple2([IntegerEntry(Y(fk), (fm + 1)), DeleteEntry(T(P, fk)), StringEntry(Z(fk), fs)], fq)
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)
765769 }
766770 else {
767- let ft = (aD(9, (base58'29' + aF), aG) + 1)
768- let fu = fraction(fn, ft, 10)
769- let fv = T(P, U)
770- let fw = valueOrElse(getInteger(fv), 0)
771- $Tuple2(((if ((fu == 0))
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))
772776 then nil
773777 else {
774- let fx = [IntegerEntry(V(U), (valueOrElse(getInteger(V(U)), 0) + fu)), IntegerEntry(fv, (fw + fu))]
775- if ((fw > 0))
776- then fx
777- else (fx :+ IntegerEntry(W(U), (valueOrElse(getInteger(W(U)), 0) + 1)))
778- }) :+ DeleteEntry(T(P, fk))), fu)
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)
779783 }
780784 }
781785 }
782786 }
783787
784788
785-func fy (P,fz) = {
786- let U = (height / i)
787- let fv = T(P, U)
788- let fA = split(fz, "_")
789- let fB = valueOrElse(getInteger(V(U)), 0)
790- let fw = valueOrElse(getInteger(fv), 0)
791- let fC = if ((aa(parseIntValue(fA[0])) == parseIntValue(fA[1])))
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])))
792796 then 1
793797 else 0
794- let fD = valueOrElse(getInteger(W(U)), 0)
795- let fE = if (if ((fw == 0))
796- then (fC == 1)
798+ let fF = valueOrElse(getInteger(Y(W)), 0)
799+ let fG = if (if ((fy == 0))
800+ then (fE == 1)
797801 else false)
798- then [IntegerEntry(W(U), (fD + 1))]
802+ then [IntegerEntry(Y(W), (fF + 1))]
799803 else nil
800- $Tuple2(if ((fC == 0))
804+ $Tuple2(if ((fE == 0))
801805 then nil
802- else ((fE :+ IntegerEntry(fv, (fw + fC))) :+ IntegerEntry(V(U), (fB + fC))), fC)
806+ else ((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE)
803807 }
804808
805809
806-@Callable(fF)
807-func constructorV1 (fG,fH,cy,fI) = if ((fF.caller != this))
810+@Callable(fH)
811+func constructorV1 (fI,fJ,cA,fK) = if ((fH.caller != this))
808812 then throw("Permission denied")
809- else if (isDefined(getBinary(Q)))
813+ else if (isDefined(getBinary(S)))
810814 then throw("Already initialized")
811815 else {
812- let cj = aY
813- let fJ = Issue("WLGOLD", "WavesLands Gold investment token", cj, 8, true, unit, 0)
814- let fK = calculateAssetId(fJ)
815-[fJ, IntegerEntry(bs, lastBlock.timestamp), IntegerEntry(bt, cj), IntegerEntry(ey, 0), IntegerEntry(bm, fraction(aY, bb, b)), BinaryEntry(Q, fK), StringEntry(x(), fG), StringEntry(do, fH), StringEntry(bh, cy), StringEntry(ex, fI)]
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)]
816820 }
817821
818822
819823
820-@Callable(fF)
821-func constructorV2 (fL) = if ((fF.caller != this))
824+@Callable(fH)
825+func constructorV2 (fN) = if ((fH.caller != this))
822826 then throw("Permission denied")
823- else [StringEntry(w(), fL)]
827+ else [StringEntry(x(), fN)]
824828
825829
826830
827-@Callable(fF)
828-func buyWlg (fM) = {
829- let fN = eA()
830- if ((fN == fN))
831- then if ((size(fF.payments) != 1))
831+@Callable(fH)
832+func buyWlg (fO) = {
833+ let fP = eC()
834+ if ((fP == fP))
835+ then if ((size(fH.payments) != 1))
832836 then throw("exactly 1 payment must be attached")
833837 else {
834- let fO = fF.payments[0]
835- let fP = fO.amount
836- if (if (!(isDefined(fO.assetId)))
838+ let fQ = fH.payments[0]
839+ let fR = fQ.amount
840+ if (if (!(isDefined(fQ.assetId)))
837841 then true
838- else (value(fO.assetId) != k))
842+ else (value(fQ.assetId) != k))
839843 then throw("USDT payments only!")
840844 else {
841- let eO = fF.caller
842- let P = toString(eO)
843- if ((d > fP))
844- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
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"))
845849 else {
846- let eQ = eg("", [J, K, L, M, N], k, fP)
847- let fQ = eQ[ae]
848- let fR = eQ[ag]
849- let fS = fraction(fR, 6, 5, CEILING)
850- let fT = fraction(fP, c, fS)
851- let fU = eB(P)
852- if ((fT > fU))
853- then throw((("You can get max " + ax(fU, 8)) + " WLGOLD at the moment"))
854- else if ((fM > fT))
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))
855859 then throw("Price changed during operation, please try again")
856860 else {
857- let fV = (fP / 6)
858- $Tuple2([Reissue(R, fT, true), IntegerEntry(bt, (fQ + fT)), IntegerEntry(bo(P), lastBlock.timestamp), IntegerEntry(bp(P), (fU - fT)), ScriptTransfer(addressFromStringValue(value(getString(ex))), fV, k), ScriptTransfer(eO, fT, R)], fN)
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)
859863 }
860864 }
861865 }
865869
866870
867871
868-@Callable(fF)
869-func buyWlgREADONLY (p,fP) = {
870- let eQ = eg("", [J, K, L, M, N], k, fP)
871- let fR = eQ[ag]
872- let fS = fraction(fR, 6, 5, CEILING)
873- let fT = fraction(fP, c, fS)
874- let fU = eB(p)
875- let fW = fraction(fU, fS, c)
876- let fV = (fP / 6)
877- $Tuple2(nil, [fT, d, fW, fV])
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])
878882 }
879883
880884
881885
882-@Callable(fF)
883-func sellWlg (fX) = {
884- let fN = eA()
885- if ((fN == fN))
886- then if ((size(fF.payments) != 1))
886+@Callable(fH)
887+func sellWlg (fZ) = {
888+ let fP = eC()
889+ if ((fP == fP))
890+ then if ((size(fH.payments) != 1))
887891 then throw("exactly 1 payment must be attached")
888892 else {
889- let fO = fF.payments[0]
890- let fY = fO.amount
891- let eO = fF.caller
892- let P = toString(eO)
893- let fU = eB(P)
894- if ((fY > fU))
895- then throw((("You can spend max " + ax(fU, 8)) + " WLGOLD at the moment"))
896- else if (if (!(isDefined(fO.assetId)))
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)))
897901 then true
898- else (value(fO.assetId) != R))
902+ else (value(fQ.assetId) != T))
899903 then throw("WLGOLD payments only!")
900904 else {
901- let eQ = eg("", [J, K, L, M, N], k, 0)
902- let fQ = eQ[ae]
903- let fZ = (eQ[ag] / 2)
904- let fP = fraction(fY, fZ, c)
905- if ((d > fP))
906- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
907- else if ((fX > fP))
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))
908912 then throw("Price changed during operation, please try again")
909913 else {
910- let fV = (fP / 5)
911- $Tuple2([Burn(R, fY), IntegerEntry(bt, (fQ - fY)), IntegerEntry(bo(P), lastBlock.timestamp), IntegerEntry(bp(P), (fU - fY)), ScriptTransfer(addressFromStringValue(value(getString(ex))), fV, k), ScriptTransfer(eO, fP, k)], fN)
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)
912916 }
913917 }
914918 }
917921
918922
919923
920-@Callable(fF)
921-func sellWlgREADONLY (p,fY) = {
922- let fU = eB(p)
923- let eQ = eg("", [J, K, L, M, N], k, 0)
924- let fZ = (eQ[ag] / 2)
925- let fP = fraction(fY, fZ, c)
926- let ga = fraction(d, c, fZ)
927- let fV = (fP / 5)
928- $Tuple2(nil, [fP, ga, fU, fV])
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])
929933 }
930934
931935
932936
933-@Callable(fF)
937+@Callable(fH)
934938 func claim () = {
935- let fN = eA()
936- if ((fN == fN))
937- then if ((size(fF.payments) != 0))
939+ let fP = eC()
940+ if ((fP == fP))
941+ then if ((size(fH.payments) != 0))
938942 then throw("No payments required")
939943 else {
940- let gb = eW(toString(fF.caller))
941- let gc = gb._1
942- let gd = gb._2
943- $Tuple2((gc :+ ScriptTransfer(fF.caller, gd, R)), fN)
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)
944948 }
945949 else throw("Strict value is not equal to itself.")
946950 }
947951
948952
949953
950-@Callable(fF)
951-func onStakeUnstakeLand (P) = if (if (if ((fF.caller != H))
952- then (fF.caller != I)
954+@Callable(fH)
955+func onStakeUnstakeLand (R) = if (if (if ((fH.caller != I))
956+ then (fH.caller != J)
953957 else false)
954- then (fF.caller != K)
958+ then (fH.caller != L)
955959 else false)
956960 then throw("Permission denied")
957961 else {
958- let ge = eW(P)
959- if ((ge == ge))
962+ let gg = eY(R)
963+ if ((gg == gg))
960964 then {
961- let gd = ge._2
962- let gc = ge._1
963- $Tuple2(if ((gd > 0))
964- then (gc :+ ScriptTransfer(addressFromStringValue(P), gd, R))
965- else gc, gd)
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)
966970 }
967971 else throw("Strict value is not equal to itself.")
968972 }
969973
970974
971975
972-@Callable(fF)
973-func onStakeUnstakeLandOld (P) = if (if (if ((fF.caller != H))
974- then (fF.caller != I)
976+@Callable(fH)
977+func onStakeUnstakeLandOld (R) = if (if (if ((fH.caller != I))
978+ then (fH.caller != J)
975979 else false)
976- then (fF.caller != K)
980+ then (fH.caller != L)
977981 else false)
978982 then throw("Permission denied")
979983 else {
980- let gf = eN(P)
981- if ((gf == gf))
984+ let gh = eP(R)
985+ if ((gh == gh))
982986 then {
983- let gd = gf._2
984- let gc = gf._1
985- $Tuple2(if ((gd > 0))
986- then (gc :+ ScriptTransfer(addressFromStringValue(P), gd, R))
987- else nil, gd)
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)
988992 }
989993 else throw("Strict value is not equal to itself.")
990994 }
991995
992996
993997
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)
9961002 then throw("Permission denied")
9971003 else {
998- let eQ = eg("", [J, K, L, M, N], k, 0)
999- if ((fY > eQ[af]))
1000- then throw(((("Only " + ax(eQ[af], 8)) + " WLGOLD left on contract, can't burn ") + ax(fY, 8)))
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)))
10011007 else {
1002- let gg = (eQ[ae] - fY)
1003- $Tuple2([Burn(R, fY), IntegerEntry(bt, gg)], gg)
1008+ let gi = (eS[ag] - ga)
1009+ $Tuple2([Burn(T, ga), IntegerEntry(bv, gi)], gi)
10041010 }
10051011 }
10061012
10071013
10081014
1009-@Callable(fF)
1010-func betForTicket (gh) = {
1011- let fN = eA()
1012- if ((fN == fN))
1013- then if ((size(fF.payments) != 0))
1015+@Callable(fH)
1016+func betForTicket (gj) = {
1017+ let fP = eC()
1018+ if ((fP == fP))
1019+ then if ((size(fH.payments) != 0))
10141020 then throw("No payments required")
10151021 else {
1016- let P = toString(fF.caller)
1017- let fk = ((height / i) - 1)
1018- let fn = valueOrElse(getInteger(T(P, fk)), 0)
1019- let fo = valueOrElse(getInteger(V(fk)), 0)
1020- if (if ((fn > 0))
1021- then (fo > 0)
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)
10221028 else false)
10231029 then throw("Please open the chest first")
1024- else if (((gh / 4) != 0))
1030+ else if (((gj / 4) != 0))
10251031 then throw("Invalid bet: should be 0..3")
10261032 else {
1027- let gi = (height % g)
1028- if ((gi > (g - 3)))
1029- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - gi))) + " blocks"))
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"))
10301036 else {
1031- let gj = valueOrElse(getInteger(K, dB(P)), 0)
1032- if ((dK > gj))
1033- then throw((("You need to stake at least " + ax(dK, 8)) + " ACRES to bet"))
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"))
10341040 else {
1035- let gk = ((height / g) + 1)
1036- let gl = S(P)
1037- let gm = getString(gl)
1038- let gn = StringEntry(gl, ((toString(gk) + "_") + toString(gh)))
1039- if (isDefined(gm))
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))
10401046 then {
1041- let go = value(gm)
1042- if ((split(go, "_")[0] == toString(gk)))
1047+ let gq = value(go)
1048+ if ((split(gq, "_")[0] == toString(gm)))
10431049 then throw("You already bet for tomorrow")
10441050 else {
1045- let gp = fy(P, go)
1046- $Tuple2((gp._1 :+ gn), gp._2)
1051+ let gr = fA(R, gq)
1052+ $Tuple2((gr._1 :+ gp), gr._2)
10471053 }
10481054 }
1049- else $Tuple2([gn], 0)
1055+ else $Tuple2([gp], 0)
10501056 }
10511057 }
10521058 }
10561062
10571063
10581064
1059-@Callable(fF)
1060-func takeWlgXp (P) = if ((fF.caller != H))
1065+@Callable(fH)
1066+func takeWlgXp (R) = if ((fH.caller != I))
10611067 then throw("Permission denied")
10621068 else {
1063- let gq = fd(P, 0)
1064- let gc = gq._1
1065- let aR = gq._2
1066- $Tuple2(gc, aR)
1069+ let gs = ff(R, 0)
1070+ let ge = gs._1
1071+ let aT = gs._2
1072+ $Tuple2(ge, aT)
10671073 }
10681074
10691075
10701076
1071-@Callable(fF)
1072-func checkWlgXpREADONLY (P) = {
1073- let gr = fd(P, 0)
1074- let gs = gr._1
1075- let gt = gr._2
1076- let aU = (valueOrElse(getInteger(H, aN(P)), 0) + gt)
1077- let gu = aS(valueOrElse(getInteger(H, aO(P)), 0), aU)
1078- $Tuple2(nil, (gu :+ aU))
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))
10791085 }
10801086
10811087
10821088
1083-@Callable(fF)
1084-func setNumPrizes (fl) = if ((fF.caller != this))
1089+@Callable(fH)
1090+func setNumPrizes (fn) = if ((fH.caller != this))
10851091 then throw("Permission denied")
10861092 else {
1087- let U = (height / i)
1088- $Tuple2([IntegerEntry(X(U), fl)], fl)
1093+ let W = (height / i)
1094+ $Tuple2([IntegerEntry(Z(W), fn)], fn)
10891095 }
10901096
10911097
10921098
1093-@Callable(fF)
1099+@Callable(fH)
10941100 func openChest () = {
1095- let fN = eA()
1096- if ((fN == fN))
1097- then if ((size(fF.payments) != 0))
1101+ let fP = eC()
1102+ if ((fP == fP))
1103+ then if ((size(fH.payments) != 0))
10981104 then throw("No payments required")
10991105 else {
1100- let fk = ((height / i) - 1)
1101- let P = toString(fF.caller)
1102- let fn = valueOrElse(getInteger(T(P, fk)), 0)
1103- if ((0 >= fn))
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))
11041110 then throw("No gems to open the chest")
1105- else fj(P)
1111+ else fl(R)
11061112 }
11071113 else throw("Strict value is not equal to itself.")
11081114 }
11091115
11101116
11111117
1112-@Callable(fF)
1113-func addGemsFor (P,fC) = if ((fF.caller != this))
1118+@Callable(fH)
1119+func addGemsFor (R,fE) = if ((fH.caller != this))
11141120 then throw("Permission denied")
11151121 else {
1116- let U = (height / i)
1117- let fv = T(P, U)
1118- let fB = valueOrElse(getInteger(V(U)), 0)
1119- let fw = valueOrElse(getInteger(fv), 0)
1120- let fD = valueOrElse(getInteger(W(U)), 0)
1121- let fE = if (if ((fw == 0))
1122- then (fC == 1)
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)
11231129 else false)
1124- then [IntegerEntry(W(U), (fD + 1))]
1130+ then [IntegerEntry(Y(W), (fF + 1))]
11251131 else nil
1126- $Tuple2(((fE :+ IntegerEntry(fv, (fw + fC))) :+ IntegerEntry(V(U), (fB + fC))), fC)
1132+ $Tuple2(((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE)
11271133 }
11281134
11291135
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = 100000
1111
1212 let e = 86400000
1313
1414 let f = take(drop(this.bytes, 1), 1)
1515
1616 let g = {
1717 let h = f
1818 if ((base58'2W' == h))
1919 then 1440
2020 else if ((base58'2T' == h))
2121 then 60
2222 else throw("Unknown chain")
2323 }
2424
2525 let i = {
2626 let h = f
2727 if ((base58'2W' == h))
2828 then 10080
2929 else if ((base58'2T' == h))
3030 then 180
3131 else throw("Unknown chain")
3232 }
3333
3434 let j = {
3535 let h = f
3636 if ((base58'2W' == h))
3737 then 0
3838 else if ((base58'2T' == h))
3939 then 1146000
4040 else throw("Unknown chain")
4141 }
4242
4343 let k = {
4444 let h = f
4545 if ((base58'2W' == h))
4646 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
4747 else if ((base58'2T' == h))
4848 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4949 else throw("Unknown chain")
5050 }
5151
5252 let l = {
5353 let h = f
5454 if ((base58'2W' == h))
5555 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
5656 else if ((base58'2T' == h))
5757 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
5858 else throw("Unknown chain")
5959 }
6060
6161 let m = {
6262 let h = f
6363 if ((base58'2W' == h))
6464 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
6565 else if ((base58'2T' == h))
6666 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
6767 else throw("Unknown chain")
6868 }
6969
7070 let n = {
7171 let h = f
7272 if ((base58'2W' == h))
7373 then "3P2sk1KncSxRaZs8b4CWGPw2jkvvav74u4D"
7474 else if ((base58'2T' == h))
7575 then "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep"
7676 else throw("Unknown chain")
7777 }
7878
7979 func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
8080
8181
8282 let r = 1
8383
8484 let s = 2
8585
8686 let t = 4
8787
8888 let u = 5
8989
90-func v () = "%s__restConfig"
90+let v = 6
91+
92+func w () = "%s__restConfig"
9193
9294
93-func w () = "%s__rest2Addr"
95+func x () = "%s__rest2Addr"
9496
9597
96-func x () = "%s__restAddr"
98+func y () = "%s__restAddr"
9799
98100
99-let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
101+let z = addressFromStringValue(valueOrElse(getString(this, y()), m))
100102
101-func z (A) = split_4C(o(A, v()), a)
103+func A (B) = split_4C(o(B, w()), a)
102104
103105
104-func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
106+func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E)))
105107
106108
107-let E = 1
109+let F = 1
108110
109-let F = 8
111+let G = 8
110112
111-let G = z(y)
113+let H = A(z)
112114
113-let H = B(G, E)
115+let I = C(H, F)
114116
115-let I = B(G, F)
117+let J = C(H, G)
116118
117-let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
119+let K = addressFromStringValue(valueOrElse(getString(this, x()), l))
118120
119-let C = z(J)
121+let D = A(K)
120122
121-let K = B(C, r)
123+let L = C(D, r)
122124
123-let L = B(C, s)
125+let M = C(D, s)
124126
125-let M = B(C, t)
127+let N = C(D, t)
126128
127-let N = B(C, u)
129+let O = C(D, u)
128130
129-func O (P) = ("lastWeekTxIdByUser_" + P)
131+let P = C(D, v)
132+
133+func Q (R) = ("lastWeekTxIdByUser_" + R)
130134
131135
132-let Q = "wlg_assetId"
136+let S = "wlg_assetId"
133137
134-let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
138+let T = valueOrErrorMessage(getBinary(M, S), "WLGOLD is not issued yet")
135139
136-func S (P) = ("userBet_" + P)
140+func U (R) = ("userBet_" + R)
137141
138142
139-func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
143+func V (R,W) = ((("userWeekTickets_" + R) + "_") + toString(W))
140144
141145
142-func V (U) = ("totalWeekTickets_" + toString(U))
146+func X (W) = ("totalWeekTickets_" + toString(W))
143147
144148
145-func W (U) = ("totalWeekParticipants_" + toString(U))
149+func Y (W) = ("totalWeekParticipants_" + toString(W))
146150
147151
148-func X (U) = ("numNFT2Draw_" + toString(U))
152+func Z (W) = ("numNFT2Draw_" + toString(W))
149153
150154
151-func Y (U) = ("numNFTDrawn_" + toString(U))
155+func aa (W) = ("numNFTDrawn_" + toString(W))
152156
153157
154-func Z (U) = ("weekWinners_" + toString(U))
158+func ab (W) = ("weekWinners_" + toString(W))
155159
156160
157-func aa (ab) = {
158- let ac = (ab * g)
159- let ad = if ((ac > j))
160- then ac
161- else (ac + j)
162- (toInt(value(value(blockInfoByHeight(ad)).vrf)) % 4)
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)
163167 }
164168
165169
166-let ae = 0
170+let ag = 0
167171
168-let af = 1
172+let ah = 1
169173
170-let ag = 2
174+let ai = 2
171175
172-let ah = 8
176+let aj = 8
173177
174-let ai = 11
178+let ak = 11
175179
176-let aj = 12
180+let al = 12
177181
178-let ak = 15
182+let am = 15
179183
180-let al = 16
184+let an = 16
181185
182-let am = 19
186+let ao = 19
183187
184-let an = 23
188+let ap = 23
185189
186-let ao = 24
190+let aq = 24
187191
188-let ap = 25
192+let ar = 25
189193
190-let aq = 26
194+let as = 26
191195
192-let ar = 27
196+let at = 27
193197
194-let as = 28
198+let au = 28
195199
196-let at = 29
200+let av = 29
197201
198-func au (av) = {
199- let h = av
202+func aw (ax) = {
203+ let h = ax
200204 if ($isInstanceOf(h, "Int"))
201205 then {
202- let aw = h
203- aw
206+ let ay = h
207+ ay
204208 }
205209 else throw("fail to cast into Int")
206210 }
207211
208212
209-func ax (ay,az) = {
210- let aA = pow(10, 0, az, 0, 0, DOWN)
211- let aB = toString((ay % aA))
212- let aC = drop(toString(aA), (1 + size(aB)))
213- (((toString((ay / aA)) + ".") + aC) + aB)
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)
214218 }
215219
216220
217-func aD (aE,aF,aG) = if ((0 >= aE))
221+func aF (aG,aH,aI) = if ((0 >= aG))
218222 then throw("maxValue should be > 0")
219223 else {
220- let aH = sha256_16Kb((aF + aG))
221- (toInt(aH) % aE)
224+ let aJ = sha256_16Kb((aH + aI))
225+ (toInt(aJ) % aG)
222226 }
223227
224228
225-let aI = 100000000
229+let aK = 100000000
226230
227-let aJ = 3200
231+let aL = 3200
228232
229-let aK = 4000
233+let aM = 4000
230234
231-let aL = 3
235+let aN = 3
232236
233-let aM = 100000000000
237+let aO = 100000000000
234238
235-func aN (P) = ("userXP_" + P)
239+func aP (R) = ("userXP_" + R)
236240
237241
238-func aO (P) = ("userLevel_" + P)
242+func aQ (R) = ("userLevel_" + R)
239243
240244
241-let aP = 10000
245+let aR = 10000
242246
243-func aQ (aR) = fraction(aJ, pow(aR, 4, aK, 4, 4, DOWN), aI)
247+func aS (aT) = fraction(aL, pow(aT, 4, aM, 4, 4, DOWN), aK)
244248
245249
246-func aS (aT,aU) = {
247- let aV = aQ(aU)
248-[aV, (aL * (aV - aT))]
250+func aU (aV,aW) = {
251+ let aX = aS(aW)
252+[aX, (aN * (aX - aV))]
249253 }
250254
251255
252-let aW = 1000000
256+let aY = 1000000
253257
254-let aX = 100000000
258+let aZ = 100000000
255259
256-let aY = 100000000000000
260+let ba = 100000000000000
257261
258-let aZ = 200000
262+let bb = 200000
259263
260-let ba = 100000
264+let bc = 100000
261265
262-let bb = 400000
266+let bd = 400000
263267
264-let bc = 31557600000
268+let be = 31557600000
265269
266-let bd = 86400000
270+let bf = 86400000
267271
268-let be = 50000
272+let bg = 50000
269273
270-let bf = take(drop(this.bytes, 1), 1)
274+let bh = take(drop(this.bytes, 1), 1)
271275
272-let bg = {
273- let h = bf
276+let bi = {
277+ let h = bh
274278 if ((base58'2W' == h))
275279 then 1208630000
276280 else if ((base58'2T' == h))
277281 then 0
278282 else throw("Unknown chain")
279283 }
280284
281-let bh = "teamAddr"
285+let bj = "teamAddr"
282286
283-let bi = "lastClaimedTime_team"
287+let bk = "lastClaimedTime_team"
284288
285-let bj = "teamAmountLeft"
289+let bl = "teamAmountLeft"
286290
287-let bk = "lastClaimedTime_activities"
291+let bm = "lastClaimedTime_activities"
288292
289-let bl = "activitiesAmountLeft"
293+let bn = "activitiesAmountLeft"
290294
291-let bm = "stakersAmountLeft"
295+let bo = "stakersAmountLeft"
292296
293-func bn (P) = ("lastClaimedTimeUserOld_" + P)
297+func bp (R) = ("lastClaimedTimeUserOld_" + R)
294298
295299
296-func bo (P) = ("lastArbTimeUser_" + P)
300+func bq (R) = ("lastArbTimeUser_" + R)
297301
298302
299-func bp (P) = ("lastWlgLimitUser_" + P)
303+func br (R) = ("lastWlgLimitUser_" + R)
300304
301305
302-func bq (br) = fraction(aY, (bb * (br + 1)), (6 * aW))
306+func bs (bt) = fraction(ba, (bd * (bt + 1)), (6 * aY))
303307
304308
305-let bs = "wlg_issueTime"
309+let bu = "wlg_issueTime"
306310
307-let bt = "wlg_issuedAmount"
311+let bv = "wlg_issuedAmount"
308312
309-let bu = "zbill_issuedAmount"
313+let bw = "zbill_issuedAmount"
310314
311-func bv (P) = ("acresStakedAmountByUser_" + P)
315+func bx (R) = ("acresStakedAmountByUser_" + R)
312316
313317
314-let bw = "acresStakedAmountTotal"
318+let by = "acresStakedAmountTotal"
315319
316-func bx (P) = ("wlgStakedAmountByUser_" + P)
320+func bz (R) = ("wlgStakedAmountByUser_" + R)
317321
318322
319-let by = "wlgStakedAmountTotal"
323+let bA = "wlgStakedAmountTotal"
320324
321-func bz (P) = ("wlgStakedTimeByUser_" + P)
325+func bB (R) = ("wlgStakedTimeByUser_" + R)
322326
323327
324-let bA = 0
328+let bC = 0
325329
326-let bB = 1
330+let bD = 1
327331
328-let bC = 2
332+let bE = 2
329333
330-let bD = 3
334+let bF = 3
331335
332-let bE = 4
336+let bG = 4
333337
334-let bF = 5
338+let bH = 5
335339
336-let bG = 6
340+let bI = 6
337341
338-func bH (bI,H,I) = {
339- let bJ = split(valueOrElse(getString(H, "resTypesProportions"), "0_0_0_0_0_0"), "_")
340- func bK (bL,bM) = (bL + parseIntValue(bM))
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))
341345
342- let bN = {
343- let bO = bJ
344- let bP = size(bO)
345- let bQ = 0
346- func bR (bS,bT) = if ((bT >= bP))
347- then bS
348- else bK(bS, bO[bT])
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])
349353
350- func bU (bS,bT) = if ((bT >= bP))
351- then bS
354+ func bW (bU,bV) = if ((bV >= bR))
355+ then bU
352356 else throw("List size exceeds 6")
353357
354- bU(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6)
358+ bW(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6)
355359 }
356- let bV = valueOrElse(getInteger(H, ("stakedPiecesByOwner_" + bI)), 0)
357- let bW = valueOrElse(getInteger(I, bw), 0)
358- let bX = valueOrElse(getInteger(I, bv(bI)), 0)
359-[bN, bV, bW, bX]
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]
360364 }
361365
362366
363-let bY = 0
367+let ca = 0
364368
365-let bZ = 1
369+let cb = 1
366370
367-let ca = 2
371+let cc = 2
368372
369-let cb = 3
373+let cd = 3
370374
371-let cc = 1733346000000
375+let ce = 1733346000000
372376
373-func cd (ce,cf,cg,ch,ci) = {
374- let cj = valueOrErrorMessage(getInteger(cf[bD], bt), "WLGOLD is not issued yet")
375- let ck = assetBalance(cf[bC], cg)
376- let cl = assetBalance(cf[bA], cg)
377- let cm = (assetBalance(cf[bD], cg) - ch)
378- let cn = assetBalance(cf[bE], cg)
379- let co = cf[bF]
380- let cp = (assetBalance(co, cg) + valueOrElse(getInteger(co, bu), 0))
381- let cq = ((ck + cm) + cp)
382- let cr = valueOrErrorMessage(getBinary(cf[bD], "wlg_assetId"), "Not initialized yet")
383- let cs = lastBlock.timestamp
384- let ct = valueOrErrorMessage(getInteger(cf[bD], bs), "Not initialized")
385- let cu = assetBalance(cf[bB], cr)
386- let cv = fraction(aY, aZ, aW)
387- let cw = valueOrElse(getInteger(cf[bD], bj), cv)
388- let cx = valueOrElse(getInteger(cf[bD], bi), ct)
389- let cy = addressFromStringValue(value(getString(cf[bD], bh)))
390- let cz = min([fraction(cv, (cs - cx), (3 * bc)), cw])
391- let cA = assetBalance(cy, cr)
392- let cB = fraction(aY, ba, aW)
393- let cC = valueOrElse(getInteger(cf[bD], bl), cB)
394- let cD = valueOrElse(getInteger(cf[bD], bk), ct)
395- let cE = min([fraction(cB, (cs - cD), (3 * bc)), cC])
396- let cF = assetBalance(cf[bA], cr)
397- let cG = valueOrElse(getInteger(cf[bD], bn(ce)), ct)
398- let cH = ((cG - ct) / bc)
399- let cI = min([min([cs, (ct + (3 * bc))]), cc])
400- let cJ = min([((cs - ct) / bc), 2])
401- let cK = bH(ce, cf[bB], cf[bG])
402- let cL = bq(cJ)
403- let cM = if ((cH == cJ))
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))
404408 then {
405- let cN = fraction(cL, (cI - cG), bc)
406- let cO = fraction(cN, ci, aW)
407- let cP = (cG + fraction((cI - cG), ci, aW))
408- $Tuple3(cO, cN, cP)
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)
409413 }
410- else if ((cH == (cJ - 1)))
414+ else if ((cJ == (cL - 1)))
411415 then {
412- let cQ = fraction(bq((cJ - 1)), ((ct + (bc * cJ)) - cG), bc)
413- let cN = fraction(cL, (cI - (ct + (bc * cJ))), bc)
414- let cR = (cQ + cN)
415- let cO = fraction(cR, ci, aW)
416- let cP = if ((cQ >= cO))
417- then (cG + fraction(bc, cO, bq((cJ - 1))))
418- else ((ct + (bc * cJ)) + fraction(bc, (cO - cQ), cL))
419- $Tuple3(cO, cR, cP)
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)
420424 }
421425 else {
422- let cS = fraction(bq((cJ - 2)), ((ct + (bc * (cJ - 1))) - cG), bc)
423- let cQ = bq((cJ - 1))
424- let cN = fraction(cL, (cI - (ct + (bc * cJ))), bc)
425- let cR = ((cS + cQ) + cN)
426- let cO = fraction(cR, ci, aW)
427- let cP = if ((cS >= cO))
428- then (cG + fraction(bc, cO, bq((cJ - 2))))
429- else if (((cS + cQ) >= cO))
430- then ((ct + (bc * (cJ - 1))) + fraction(bc, (cO - cS), bq((cJ - 1))))
431- else ((ct + (bc * cJ)) + fraction(bc, ((cO - cS) - cQ), cL))
432- $Tuple3(cO, cR, cP)
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)
433437 }
434- let cT = cM._1
435- let cU = cM._2
436- let cV = cM._3
437- let cW = fraction(fraction(cL, bd, bc), 25, cK[bY])
438- let cX = valueOrElse(getInteger(cf[bD], bm), 0)
439- let cY = fraction(cT, ((cK[bZ] * aX) + cK[cb]), ((cK[bY] * aX) + cK[ca]))
440- let cZ = fraction(cY, be, aW)
441- let da = (cY - cZ)
442- let db = fraction(cU, ((cK[bZ] * aX) + cK[cb]), ((cK[bY] * aX) + cK[ca]))
443-[cj, fraction((cq - bg), aX, cj), cq, ck, cl, cm, cn, ct, cx, cv, cw, cz, cA, cB, cC, cE, cF, cJ, cX, cL, cG, da, cW, cp, db, cV, cu]
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]
444448 }
445449
446450
447-let dc = 1000000
451+let de = 1000000
448452
449-let dd = 100000000
453+let df = 100000000
450454
451-let de = 200000
455+let dg = 200000
452456
453-let df = 100000
457+let dh = 100000
454458
455-let dg = 400000
459+let di = 400000
456460
457-let dh = 31557600000
461+let dj = 31557600000
458462
459-let di = 86400000
463+let dk = 86400000
460464
461-let dj = 1000000000
465+let dl = 1000000000
462466
463-let dk = 800000
467+let dm = 800000
464468
465-let dl = 100000
469+let dn = 100000
466470
467-let dm = 100000
471+let do = 100000
468472
469-let dn = 1731279600000
473+let dp = 1731279600000
470474
471-let do = "marketingAddr"
475+let dq = "marketingAddr"
472476
473-let dp = "teamAddr"
477+let dr = "teamAddr"
474478
475-let dq = "lastClaimedTime_team"
479+let ds = "lastClaimedTime_team"
476480
477-let dr = "teamAmountLeft"
481+let dt = "teamAmountLeft"
478482
479-let ds = "lastClaimedTime_activities"
483+let du = "lastClaimedTime_activities"
480484
481-let dt = "activitiesAmountLeft"
485+let dv = "activitiesAmountLeft"
482486
483-let du = "stakersAmountLeft"
487+let dw = "stakersAmountLeft"
484488
485-func dv (P) = ("lastClaimedTimeUser_" + P)
489+func dx (R) = ("lastClaimedTimeUser_" + R)
486490
487491
488-func dw (cj,br) = fraction(cj, (dg * (br + 1)), (6 * dc))
492+func dy (cl,bt) = fraction(cl, (di * (bt + 1)), (6 * de))
489493
490494
491-let dx = "wlg_issue10Time"
495+let dz = "wlg_issue10Time"
492496
493-let dy = "wlg_issueTime"
497+let dA = "wlg_issueTime"
494498
495-let dz = "wlg_issuedAmount"
499+let dB = "wlg_issuedAmount"
496500
497-let dA = "zbill_issuedAmount"
501+let dC = "zbill_issuedAmount"
498502
499-func dB (P) = ("acresStakedAmountByUser_" + P)
503+func dD (R) = ("acresStakedAmountByUser_" + R)
500504
501505
502-let dC = "acresStakedAmountTotal"
506+let dE = "acresStakedAmountTotal"
503507
504-let dD = "totalFarmingPower"
508+let dF = "totalFarmingPower"
505509
506-let dE = 0
510+let dG = 0
507511
508-let dF = 1
512+let dH = 1
509513
510-let dG = 2
514+let dI = 2
511515
512-let dH = 3
516+let dJ = 3
513517
514-let dI = 4
518+let dK = 4
515519
516-let dJ = 5
520+let dL = 5
517521
518-let dK = 100000000
522+let dM = 100000000
519523
520-let dL = "nftTotalIssued"
524+let dN = "nftTotalIssued"
521525
522-let dM = "nftTotalBurned"
526+let dO = "nftTotalBurned"
523527
524-let dN = "WlNftTotalStaked"
528+let dP = "WlNftTotalStaked"
525529
526-func dO (P) = ("userWlNftNumber_" + P)
530+func dQ (R) = ("userWlNftNumber_" + R)
527531
528532
529-func dP (P) = ("userFullBonus_" + P)
533+func dR (R) = ("userFullBonus_" + R)
530534
531535
532-let dQ = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
536+let dS = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
533537
534-func dR (dS) = {
535- let dT = ((dS + 99999999) / dd)
536- func dU (bL,bM) = if ((bM >= dT))
537- then bL
538- else (bL + 1)
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)
539543
540- let bO = dQ
541- let bP = size(bO)
542- let bQ = 0
543- func bR (bS,bT) = if ((bT >= bP))
544- then bS
545- else dU(bS, bO[bT])
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])
546550
547- func bU (bS,bT) = if ((bT >= bP))
548- then bS
551+ func bW (bU,bV) = if ((bV >= bR))
552+ then bU
549553 else throw("List size exceeds 10")
550554
551- bU(bR(bR(bR(bR(bR(bR(bR(bR(bR(bR(bQ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
555+ bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
552556 }
553557
554558
555-func dV (dS) = ((dS * 20) * (dR(dS) + 4))
559+func dX (dU) = ((dU * 20) * (dT(dU) + 4))
556560
557561
558-func dW (dS,dX) = {
559- let dY = dV(dS)
560- $Tuple2(fraction(dY, (dc + dX), dc), dY)
562+func dY (dU,dZ) = {
563+ let ea = dX(dU)
564+ $Tuple2(fraction(ea, (de + dZ), de), ea)
561565 }
562566
563567
564-func dZ (bI,K) = {
565- let ea = valueOrElse(getInteger(K, dD), 0)
566- let bX = valueOrElse(getInteger(K, dB(bI)), 0)
567- let eb = valueOrElse(getInteger(K, dP(bI)), 0)
568- let cM = dW(bX, eb)
569- let ec = cM._1
570- let ed = cM._2
571-[ea, ec, ed, eb]
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]
572576 }
573577
574578
575-let ee = 0
579+let eg = 0
576580
577-let ef = 1
581+let eh = 1
578582
579-func eg (ce,cf,cg,ch) = {
580- let cj = valueOrErrorMessage(getInteger(cf[dG], dz), "WLGOLD is not issued yet")
581- let cl = assetBalance(cf[dE], cg)
582- let cm = (assetBalance(cf[dG], cg) - ch)
583- let cn = assetBalance(cf[dH], cg)
584- let eh = assetBalance(cf[dF], cg)
585- let co = cf[dI]
586- let cp = (assetBalance(co, cg) + valueOrElse(getInteger(co, dA), 0))
587- let cq = ((eh + cm) + cp)
588- let cr = valueOrErrorMessage(getBinary(cf[dG], "wlg_assetId"), "Not initialized yet")
589- let cs = lastBlock.timestamp
590- let ct = valueOrErrorMessage(getInteger(cf[dG], dy), "Not initialized")
591- let ei = assetBalance(cf[dG], cr)
592- let cv = fraction(cj, de, dc)
593- let cw = valueOrElse(getInteger(cf[dG], dr), cv)
594- let cx = valueOrElse(getInteger(cf[dG], dq), ct)
595- let cy = addressFromStringValue(value(getString(cf[dG], dp)))
596- let cz = min([fraction(cv, (cs - cx), (3 * dh)), cw])
597- let cA = assetBalance(cy, cr)
598- let cB = fraction(cj, df, dc)
599- let cC = valueOrElse(getInteger(cf[dG], dt), cB)
600- let cD = valueOrElse(getInteger(cf[dG], ds), ct)
601- let cE = min([fraction(cB, (cs - cD), (3 * dh)), cC])
602- let cF = assetBalance(cf[dE], cr)
603- let cG = valueOrElse(getInteger(cf[dG], dv(ce)), ct)
604- let cH = ((cG - ct) / dh)
605- let cI = min([cs, (ct + (3 * dh))])
606- let cJ = min([((cs - ct) / dh), 2])
607- let cK = dZ(ce, cf[dF])
608- let cL = dw(cj, cJ)
609- let ej = (ct + (dh * cJ))
610- let ek = (ct + (dh * (cJ - 1)))
611- let cN = fraction(cL, (cI - cG), dh)
612- let cU = if ((cH == cJ))
613- then cN
614- else if ((cH == (cJ - 1)))
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)))
615619 then {
616- let cQ = fraction(dw(cj, (cJ - 1)), (ej - cG), dh)
617- (cQ + cN)
620+ let cS = fraction(dy(cl, (cL - 1)), (el - cI), dj)
621+ (cS + cP)
618622 }
619623 else {
620- let cS = fraction(dw(cj, (cJ - 2)), (ek - cG), dh)
621- let cQ = dw(cj, (cJ - 1))
622- ((cS + cQ) + cN)
624+ let cU = fraction(dy(cl, (cL - 2)), (em - cI), dj)
625+ let cS = dy(cl, (cL - 1))
626+ ((cU + cS) + cP)
623627 }
624- let cX = valueOrElse(getInteger(cf[dG], du), 0)
625- let cT = if ((cK[ee] != 0))
626- then fraction(cU, cK[ef], cK[ee])
628+ let cZ = valueOrElse(getInteger(ch[dI], dw), 0)
629+ let cV = if ((cM[eg] != 0))
630+ then fraction(cW, cM[eh], cM[eg])
627631 else 0
628- let el = valueOrElse(getInteger(cf[dG], dx), dn)
629- let em = fraction(dj, max([(cs - el), 0]), di)
630- let en = fraction(em, dl, dc)
631- let eo = fraction(em, dm, dc)
632- let ep = max([(cs - max([dn, cG])), 0])
633- let eq = if ((cK[ee] != 0))
634- then fraction(fraction(fraction(dj, ep, di), cK[ef], cK[ee]), dk, dc)
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)
635639 else 0
636- let er = max([dn, cs])
637- let es = valueOrElse(getInteger(cf[dF], dC), 0)
638- let et = valueOrElse(getInteger(cf[dF], dL), 0)
639- let eu = valueOrElse(getInteger(cf[dF], dM), 0)
640- let ev = valueOrElse(getInteger(cf[dF], dN), 0)
641- let ew = valueOrElse(getInteger(cf[dF], dO(valueOrElse(ce, ""))), 0)
642-[cj, ei, fraction(cq, dd, cj), cq, cl, eh, cm, cn, ct, cx, cv, cw, cz, cA, cB, cC, cE, cF, cJ, cX, cL, cG, cp, cT, cI, em, en, eo, eq, er, cK[ee], es, et, eu, ev, ew]
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]
643647 }
644648
645649
646-let ex = "profitAddr"
650+let ez = "profitAddr"
647651
648-let ey = "stakersAmountPaidTotal"
652+let eA = "stakersAmountPaidTotal"
649653
650-func ez (P) = ("stakersAmountPaidUser_" + P)
654+func eB (R) = ("stakersAmountPaidUser_" + R)
651655
652656
653-func eA () = au(reentrantInvoke(K, "saveLastTx", nil, nil))
657+func eC () = aw(reentrantInvoke(L, "saveLastTx", nil, nil))
654658
655659
656-func eB (P) = {
657- let eC = valueOrElse(getInteger(bo(P)), 0)
658- let eD = valueOrElse(getInteger(K, bv(P)), 0)
659- let eE = valueOrElse(getInteger(bp(P)), eD)
660- let eF = (eE + fraction(eD, (lastBlock.timestamp - eC), e))
661- min([eF, eD])
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])
662666 }
663667
664668
665-let eG = 10
669+let eI = 10
666670
667-let eH = 11
671+let eJ = 11
668672
669-let eI = 14
673+let eK = 14
670674
671-let eJ = 15
675+let eL = 15
672676
673-let eK = 18
677+let eM = 18
674678
675-let eL = 24
679+let eN = 24
676680
677-let eM = 25
681+let eO = 25
678682
679-func eN (P) = {
680- let eO = addressFromStringValue(P)
681- let eP = addressFromStringValue(n)
682- let eQ = cd(P, [y, H, eP, L, M, N, I], k, 0, b)
683- let cs = lastBlock.timestamp
684- let cw = eQ[eG]
685- let eR = eQ[eH]
686- let cC = eQ[eI]
687- let eS = eQ[eJ]
688- let cT = eQ[eL]
689- let eT = ez(P)
690- let eU = eQ[eL]
691- let eV = eQ[eM]
692- $Tuple2([ScriptTransfer(addressFromStringValue(value(getString(bh))), eR, R), ScriptTransfer(y, eS, R), IntegerEntry(eT, (valueOrElse(getInteger(eT), 0) + cT)), IntegerEntry(ey, (valueOrElse(getInteger(ey), 0) + eU)), IntegerEntry(bm, (eQ[eK] - eU)), IntegerEntry(bj, (cw - eR)), IntegerEntry(bi, cs), IntegerEntry(bl, (cC - eS)), IntegerEntry(bk, cs), IntegerEntry(bn(P), eV)], cT)
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)
693697 }
694698
695699
696-func eW (P) = {
697- let eQ = eg(P, [J, K, L, M, N], k, 0)
698- let eX = dv(P)
699- let cG = valueOrElse(getInteger(eX), 0)
700- let eV = eQ[ao]
701- if ((cG == eV))
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))
702706 then $Tuple2(nil, 0)
703707 else {
704- let cs = lastBlock.timestamp
705- let ct = eQ[ah]
706- let cw = eQ[ai]
707- let eR = (eQ[aj] + eQ[ar])
708- let eY = if ((eR > 0))
709- then [IntegerEntry(bj, ((cw - eR) + eQ[ar])), IntegerEntry(bi, cs), ScriptTransfer(addressFromStringValue(value(getString(bh))), eR, R)]
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)]
710714 else nil
711- let cC = eQ[ak]
712- let eS = eQ[al]
713- let eZ = if ((eS > 0))
714- then [IntegerEntry(bl, (cC - eS)), IntegerEntry(bk, cs), ScriptTransfer(y, eS, R)]
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)]
715719 else nil
716- let fa = eQ[aq]
717- let fb = if ((fa > 0))
718- then [ScriptTransfer(addressFromStringValue(value(getString(do))), fa, R)]
720+ let fc = eS[as]
721+ let fd = if ((fc > 0))
722+ then [ScriptTransfer(addressFromStringValue(value(getString(dq))), fc, T)]
719723 else nil
720- let cT = eQ[an]
721- let eT = ez(P)
722- let eU = (cT + eQ[as])
723- let fc = eQ[ap]
724- $Tuple2(((([Reissue(R, fc, true), IntegerEntry(bt, (eQ[ae] + fc)), IntegerEntry(dx, eQ[at]), IntegerEntry(eT, (valueOrElse(getInteger(eT), 0) + cT)), IntegerEntry(ey, (valueOrElse(getInteger(ey), 0) + cT)), IntegerEntry(bm, (eQ[am] - cT)), IntegerEntry(eX, eV)] ++ eY) ++ eZ) ++ fb), eU)
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)
725729 }
726730 }
727731
728732
729-func fd (P,fe) = {
730- let cs = lastBlock.timestamp
731- let ff = bz(P)
732- let fg = bx(P)
733- let eC = valueOrElse(getInteger(ff), 0)
734- let fh = valueOrElse(getInteger(fg), 0)
735- let fi = valueOrElse(getInteger(by), 0)
736- let aR = fraction(fraction(aP, fh, aM), (eC - cs), bd)
737- $Tuple3([IntegerEntry(ff, cs), IntegerEntry(fg, (fh + fe)), IntegerEntry(by, (fi + fe))], aR, fh)
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)
738742 }
739743
740744
741-func fj (P) = {
742- let U = (height / i)
743- let fk = (U - 1)
744- let fl = valueOrElse(getInteger(X(fk)), dJ)
745- let fm = valueOrElse(getInteger(Y(fk)), 0)
746- let fn = valueOrElse(getInteger(T(P, fk)), 0)
747- if ((0 >= fn))
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))
748752 then $Tuple2(nil, unit)
749753 else {
750- let fo = valueOrElse(getInteger(V(fk)), 0)
751- if ((0 >= fo))
752- then $Tuple2([DeleteEntry(T(P, fk))], unit)
754+ let fq = valueOrElse(getInteger(X(fm)), 0)
755+ if ((0 >= fq))
756+ then $Tuple2([DeleteEntry(V(R, fm))], unit)
753757 else {
754- let aG = value(value(blockInfoByHeight((U * i))).vrf)
755- let aF = fromBase58String(split(valueOrElse(getString(K, O(P)), "42_DEFAULT"), "_")[1])
756- let fp = aD(fo, aF, aG)
757- if (((fn * fl) > fp))
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))
758762 then {
759- let fq = invoke(K, "issuePickC1", [P], nil)
760- let fr = getString(Z(fk))
761- let fs = if (isDefined(fr))
762- then ((value(fr) + "_") + P)
763- else P
764- $Tuple2([IntegerEntry(Y(fk), (fm + 1)), DeleteEntry(T(P, fk)), StringEntry(Z(fk), fs)], fq)
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)
765769 }
766770 else {
767- let ft = (aD(9, (base58'29' + aF), aG) + 1)
768- let fu = fraction(fn, ft, 10)
769- let fv = T(P, U)
770- let fw = valueOrElse(getInteger(fv), 0)
771- $Tuple2(((if ((fu == 0))
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))
772776 then nil
773777 else {
774- let fx = [IntegerEntry(V(U), (valueOrElse(getInteger(V(U)), 0) + fu)), IntegerEntry(fv, (fw + fu))]
775- if ((fw > 0))
776- then fx
777- else (fx :+ IntegerEntry(W(U), (valueOrElse(getInteger(W(U)), 0) + 1)))
778- }) :+ DeleteEntry(T(P, fk))), fu)
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)
779783 }
780784 }
781785 }
782786 }
783787
784788
785-func fy (P,fz) = {
786- let U = (height / i)
787- let fv = T(P, U)
788- let fA = split(fz, "_")
789- let fB = valueOrElse(getInteger(V(U)), 0)
790- let fw = valueOrElse(getInteger(fv), 0)
791- let fC = if ((aa(parseIntValue(fA[0])) == parseIntValue(fA[1])))
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])))
792796 then 1
793797 else 0
794- let fD = valueOrElse(getInteger(W(U)), 0)
795- let fE = if (if ((fw == 0))
796- then (fC == 1)
798+ let fF = valueOrElse(getInteger(Y(W)), 0)
799+ let fG = if (if ((fy == 0))
800+ then (fE == 1)
797801 else false)
798- then [IntegerEntry(W(U), (fD + 1))]
802+ then [IntegerEntry(Y(W), (fF + 1))]
799803 else nil
800- $Tuple2(if ((fC == 0))
804+ $Tuple2(if ((fE == 0))
801805 then nil
802- else ((fE :+ IntegerEntry(fv, (fw + fC))) :+ IntegerEntry(V(U), (fB + fC))), fC)
806+ else ((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE)
803807 }
804808
805809
806-@Callable(fF)
807-func constructorV1 (fG,fH,cy,fI) = if ((fF.caller != this))
810+@Callable(fH)
811+func constructorV1 (fI,fJ,cA,fK) = if ((fH.caller != this))
808812 then throw("Permission denied")
809- else if (isDefined(getBinary(Q)))
813+ else if (isDefined(getBinary(S)))
810814 then throw("Already initialized")
811815 else {
812- let cj = aY
813- let fJ = Issue("WLGOLD", "WavesLands Gold investment token", cj, 8, true, unit, 0)
814- let fK = calculateAssetId(fJ)
815-[fJ, IntegerEntry(bs, lastBlock.timestamp), IntegerEntry(bt, cj), IntegerEntry(ey, 0), IntegerEntry(bm, fraction(aY, bb, b)), BinaryEntry(Q, fK), StringEntry(x(), fG), StringEntry(do, fH), StringEntry(bh, cy), StringEntry(ex, fI)]
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)]
816820 }
817821
818822
819823
820-@Callable(fF)
821-func constructorV2 (fL) = if ((fF.caller != this))
824+@Callable(fH)
825+func constructorV2 (fN) = if ((fH.caller != this))
822826 then throw("Permission denied")
823- else [StringEntry(w(), fL)]
827+ else [StringEntry(x(), fN)]
824828
825829
826830
827-@Callable(fF)
828-func buyWlg (fM) = {
829- let fN = eA()
830- if ((fN == fN))
831- then if ((size(fF.payments) != 1))
831+@Callable(fH)
832+func buyWlg (fO) = {
833+ let fP = eC()
834+ if ((fP == fP))
835+ then if ((size(fH.payments) != 1))
832836 then throw("exactly 1 payment must be attached")
833837 else {
834- let fO = fF.payments[0]
835- let fP = fO.amount
836- if (if (!(isDefined(fO.assetId)))
838+ let fQ = fH.payments[0]
839+ let fR = fQ.amount
840+ if (if (!(isDefined(fQ.assetId)))
837841 then true
838- else (value(fO.assetId) != k))
842+ else (value(fQ.assetId) != k))
839843 then throw("USDT payments only!")
840844 else {
841- let eO = fF.caller
842- let P = toString(eO)
843- if ((d > fP))
844- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
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"))
845849 else {
846- let eQ = eg("", [J, K, L, M, N], k, fP)
847- let fQ = eQ[ae]
848- let fR = eQ[ag]
849- let fS = fraction(fR, 6, 5, CEILING)
850- let fT = fraction(fP, c, fS)
851- let fU = eB(P)
852- if ((fT > fU))
853- then throw((("You can get max " + ax(fU, 8)) + " WLGOLD at the moment"))
854- else if ((fM > fT))
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))
855859 then throw("Price changed during operation, please try again")
856860 else {
857- let fV = (fP / 6)
858- $Tuple2([Reissue(R, fT, true), IntegerEntry(bt, (fQ + fT)), IntegerEntry(bo(P), lastBlock.timestamp), IntegerEntry(bp(P), (fU - fT)), ScriptTransfer(addressFromStringValue(value(getString(ex))), fV, k), ScriptTransfer(eO, fT, R)], fN)
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)
859863 }
860864 }
861865 }
862866 }
863867 else throw("Strict value is not equal to itself.")
864868 }
865869
866870
867871
868-@Callable(fF)
869-func buyWlgREADONLY (p,fP) = {
870- let eQ = eg("", [J, K, L, M, N], k, fP)
871- let fR = eQ[ag]
872- let fS = fraction(fR, 6, 5, CEILING)
873- let fT = fraction(fP, c, fS)
874- let fU = eB(p)
875- let fW = fraction(fU, fS, c)
876- let fV = (fP / 6)
877- $Tuple2(nil, [fT, d, fW, fV])
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])
878882 }
879883
880884
881885
882-@Callable(fF)
883-func sellWlg (fX) = {
884- let fN = eA()
885- if ((fN == fN))
886- then if ((size(fF.payments) != 1))
886+@Callable(fH)
887+func sellWlg (fZ) = {
888+ let fP = eC()
889+ if ((fP == fP))
890+ then if ((size(fH.payments) != 1))
887891 then throw("exactly 1 payment must be attached")
888892 else {
889- let fO = fF.payments[0]
890- let fY = fO.amount
891- let eO = fF.caller
892- let P = toString(eO)
893- let fU = eB(P)
894- if ((fY > fU))
895- then throw((("You can spend max " + ax(fU, 8)) + " WLGOLD at the moment"))
896- else if (if (!(isDefined(fO.assetId)))
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)))
897901 then true
898- else (value(fO.assetId) != R))
902+ else (value(fQ.assetId) != T))
899903 then throw("WLGOLD payments only!")
900904 else {
901- let eQ = eg("", [J, K, L, M, N], k, 0)
902- let fQ = eQ[ae]
903- let fZ = (eQ[ag] / 2)
904- let fP = fraction(fY, fZ, c)
905- if ((d > fP))
906- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
907- else if ((fX > fP))
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))
908912 then throw("Price changed during operation, please try again")
909913 else {
910- let fV = (fP / 5)
911- $Tuple2([Burn(R, fY), IntegerEntry(bt, (fQ - fY)), IntegerEntry(bo(P), lastBlock.timestamp), IntegerEntry(bp(P), (fU - fY)), ScriptTransfer(addressFromStringValue(value(getString(ex))), fV, k), ScriptTransfer(eO, fP, k)], fN)
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)
912916 }
913917 }
914918 }
915919 else throw("Strict value is not equal to itself.")
916920 }
917921
918922
919923
920-@Callable(fF)
921-func sellWlgREADONLY (p,fY) = {
922- let fU = eB(p)
923- let eQ = eg("", [J, K, L, M, N], k, 0)
924- let fZ = (eQ[ag] / 2)
925- let fP = fraction(fY, fZ, c)
926- let ga = fraction(d, c, fZ)
927- let fV = (fP / 5)
928- $Tuple2(nil, [fP, ga, fU, fV])
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])
929933 }
930934
931935
932936
933-@Callable(fF)
937+@Callable(fH)
934938 func claim () = {
935- let fN = eA()
936- if ((fN == fN))
937- then if ((size(fF.payments) != 0))
939+ let fP = eC()
940+ if ((fP == fP))
941+ then if ((size(fH.payments) != 0))
938942 then throw("No payments required")
939943 else {
940- let gb = eW(toString(fF.caller))
941- let gc = gb._1
942- let gd = gb._2
943- $Tuple2((gc :+ ScriptTransfer(fF.caller, gd, R)), fN)
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)
944948 }
945949 else throw("Strict value is not equal to itself.")
946950 }
947951
948952
949953
950-@Callable(fF)
951-func onStakeUnstakeLand (P) = if (if (if ((fF.caller != H))
952- then (fF.caller != I)
954+@Callable(fH)
955+func onStakeUnstakeLand (R) = if (if (if ((fH.caller != I))
956+ then (fH.caller != J)
953957 else false)
954- then (fF.caller != K)
958+ then (fH.caller != L)
955959 else false)
956960 then throw("Permission denied")
957961 else {
958- let ge = eW(P)
959- if ((ge == ge))
962+ let gg = eY(R)
963+ if ((gg == gg))
960964 then {
961- let gd = ge._2
962- let gc = ge._1
963- $Tuple2(if ((gd > 0))
964- then (gc :+ ScriptTransfer(addressFromStringValue(P), gd, R))
965- else gc, gd)
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)
966970 }
967971 else throw("Strict value is not equal to itself.")
968972 }
969973
970974
971975
972-@Callable(fF)
973-func onStakeUnstakeLandOld (P) = if (if (if ((fF.caller != H))
974- then (fF.caller != I)
976+@Callable(fH)
977+func onStakeUnstakeLandOld (R) = if (if (if ((fH.caller != I))
978+ then (fH.caller != J)
975979 else false)
976- then (fF.caller != K)
980+ then (fH.caller != L)
977981 else false)
978982 then throw("Permission denied")
979983 else {
980- let gf = eN(P)
981- if ((gf == gf))
984+ let gh = eP(R)
985+ if ((gh == gh))
982986 then {
983- let gd = gf._2
984- let gc = gf._1
985- $Tuple2(if ((gd > 0))
986- then (gc :+ ScriptTransfer(addressFromStringValue(P), gd, R))
987- else nil, gd)
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)
988992 }
989993 else throw("Strict value is not equal to itself.")
990994 }
991995
992996
993997
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)
9961002 then throw("Permission denied")
9971003 else {
998- let eQ = eg("", [J, K, L, M, N], k, 0)
999- if ((fY > eQ[af]))
1000- then throw(((("Only " + ax(eQ[af], 8)) + " WLGOLD left on contract, can't burn ") + ax(fY, 8)))
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)))
10011007 else {
1002- let gg = (eQ[ae] - fY)
1003- $Tuple2([Burn(R, fY), IntegerEntry(bt, gg)], gg)
1008+ let gi = (eS[ag] - ga)
1009+ $Tuple2([Burn(T, ga), IntegerEntry(bv, gi)], gi)
10041010 }
10051011 }
10061012
10071013
10081014
1009-@Callable(fF)
1010-func betForTicket (gh) = {
1011- let fN = eA()
1012- if ((fN == fN))
1013- then if ((size(fF.payments) != 0))
1015+@Callable(fH)
1016+func betForTicket (gj) = {
1017+ let fP = eC()
1018+ if ((fP == fP))
1019+ then if ((size(fH.payments) != 0))
10141020 then throw("No payments required")
10151021 else {
1016- let P = toString(fF.caller)
1017- let fk = ((height / i) - 1)
1018- let fn = valueOrElse(getInteger(T(P, fk)), 0)
1019- let fo = valueOrElse(getInteger(V(fk)), 0)
1020- if (if ((fn > 0))
1021- then (fo > 0)
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)
10221028 else false)
10231029 then throw("Please open the chest first")
1024- else if (((gh / 4) != 0))
1030+ else if (((gj / 4) != 0))
10251031 then throw("Invalid bet: should be 0..3")
10261032 else {
1027- let gi = (height % g)
1028- if ((gi > (g - 3)))
1029- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - gi))) + " blocks"))
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"))
10301036 else {
1031- let gj = valueOrElse(getInteger(K, dB(P)), 0)
1032- if ((dK > gj))
1033- then throw((("You need to stake at least " + ax(dK, 8)) + " ACRES to bet"))
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"))
10341040 else {
1035- let gk = ((height / g) + 1)
1036- let gl = S(P)
1037- let gm = getString(gl)
1038- let gn = StringEntry(gl, ((toString(gk) + "_") + toString(gh)))
1039- if (isDefined(gm))
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))
10401046 then {
1041- let go = value(gm)
1042- if ((split(go, "_")[0] == toString(gk)))
1047+ let gq = value(go)
1048+ if ((split(gq, "_")[0] == toString(gm)))
10431049 then throw("You already bet for tomorrow")
10441050 else {
1045- let gp = fy(P, go)
1046- $Tuple2((gp._1 :+ gn), gp._2)
1051+ let gr = fA(R, gq)
1052+ $Tuple2((gr._1 :+ gp), gr._2)
10471053 }
10481054 }
1049- else $Tuple2([gn], 0)
1055+ else $Tuple2([gp], 0)
10501056 }
10511057 }
10521058 }
10531059 }
10541060 else throw("Strict value is not equal to itself.")
10551061 }
10561062
10571063
10581064
1059-@Callable(fF)
1060-func takeWlgXp (P) = if ((fF.caller != H))
1065+@Callable(fH)
1066+func takeWlgXp (R) = if ((fH.caller != I))
10611067 then throw("Permission denied")
10621068 else {
1063- let gq = fd(P, 0)
1064- let gc = gq._1
1065- let aR = gq._2
1066- $Tuple2(gc, aR)
1069+ let gs = ff(R, 0)
1070+ let ge = gs._1
1071+ let aT = gs._2
1072+ $Tuple2(ge, aT)
10671073 }
10681074
10691075
10701076
1071-@Callable(fF)
1072-func checkWlgXpREADONLY (P) = {
1073- let gr = fd(P, 0)
1074- let gs = gr._1
1075- let gt = gr._2
1076- let aU = (valueOrElse(getInteger(H, aN(P)), 0) + gt)
1077- let gu = aS(valueOrElse(getInteger(H, aO(P)), 0), aU)
1078- $Tuple2(nil, (gu :+ aU))
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))
10791085 }
10801086
10811087
10821088
1083-@Callable(fF)
1084-func setNumPrizes (fl) = if ((fF.caller != this))
1089+@Callable(fH)
1090+func setNumPrizes (fn) = if ((fH.caller != this))
10851091 then throw("Permission denied")
10861092 else {
1087- let U = (height / i)
1088- $Tuple2([IntegerEntry(X(U), fl)], fl)
1093+ let W = (height / i)
1094+ $Tuple2([IntegerEntry(Z(W), fn)], fn)
10891095 }
10901096
10911097
10921098
1093-@Callable(fF)
1099+@Callable(fH)
10941100 func openChest () = {
1095- let fN = eA()
1096- if ((fN == fN))
1097- then if ((size(fF.payments) != 0))
1101+ let fP = eC()
1102+ if ((fP == fP))
1103+ then if ((size(fH.payments) != 0))
10981104 then throw("No payments required")
10991105 else {
1100- let fk = ((height / i) - 1)
1101- let P = toString(fF.caller)
1102- let fn = valueOrElse(getInteger(T(P, fk)), 0)
1103- if ((0 >= fn))
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))
11041110 then throw("No gems to open the chest")
1105- else fj(P)
1111+ else fl(R)
11061112 }
11071113 else throw("Strict value is not equal to itself.")
11081114 }
11091115
11101116
11111117
1112-@Callable(fF)
1113-func addGemsFor (P,fC) = if ((fF.caller != this))
1118+@Callable(fH)
1119+func addGemsFor (R,fE) = if ((fH.caller != this))
11141120 then throw("Permission denied")
11151121 else {
1116- let U = (height / i)
1117- let fv = T(P, U)
1118- let fB = valueOrElse(getInteger(V(U)), 0)
1119- let fw = valueOrElse(getInteger(fv), 0)
1120- let fD = valueOrElse(getInteger(W(U)), 0)
1121- let fE = if (if ((fw == 0))
1122- then (fC == 1)
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)
11231129 else false)
1124- then [IntegerEntry(W(U), (fD + 1))]
1130+ then [IntegerEntry(Y(W), (fF + 1))]
11251131 else nil
1126- $Tuple2(((fE :+ IntegerEntry(fv, (fw + fC))) :+ IntegerEntry(V(U), (fB + fC))), fC)
1132+ $Tuple2(((fG :+ IntegerEntry(fx, (fy + fE))) :+ IntegerEntry(X(W), (fD + fE))), fE)
11271133 }
11281134
11291135

github/deemru/w8io/169f3d6 
438.68 ms