tx · DUg3371WqvKdHqXYPo6PGFt8PPWKGKBNPRSqTTLwGgqb

3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs:  -0.14000000 Waves

2022.10.19 12:42 [2279106] smart account 3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs > SELF 0.00000000 Waves

{ "type": 13, "id": "DUg3371WqvKdHqXYPo6PGFt8PPWKGKBNPRSqTTLwGgqb", "fee": 14000000, "feeAssetId": null, "timestamp": 1666172583996, "version": 2, "chainId": 84, "sender": "3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs", "senderPublicKey": "2EDucEDvqYfn6hdx4PbvykQFRoNgPMWX6SiVPjM8AyxM", "proofs": [ "3Tg5aRYW5kHAsMLY4iYdahHNoNGtffMSL8VPW7rBX6DB9YmbdcLJCb947qKfk71pLT79NLkaLe3gyyibF3w3qY6q", "3CTbR7mxz3s7QqD6Gc9z9Bd2M8Rjv7LqsjZzNYK4kUjwVaVb7LsH8qrehWzszRfRrjzeRA5WMBV2pLiNzxB6712G" ], "script": "base64:BgIdCAISABIAEgMKAQESABIAEgASBgoEGBEBARIAEgBXAAdrQWN0aXZlAgZhY3RpdmUABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UADWtMYXN0SW50ZXJlc3QCDWxhc3RfaW50ZXJlc3QAEWtVc2VyTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAAPa1VzZXJTV09QTG9ja2VkAgxfU1dPUF9hbW91bnQAEGtUb3RhbFNXT1BMb2NrZWQCEXRvdGFsX1NXT1BfYW1vdW50ABVrVXNlclN3b3BVbmxvY2tIZWlnaHQCE19TV09QX3VubG9ja19oZWlnaHQAEGtVc2VyR1N3b3BMb2NrZWQCDV9HU3dvcF9hbW91bnQAEWtUb3RhbEdTd29wTG9ja2VkAhJ0b3RhbF9HU3dvcF9hbW91bnQAEmtVc2VyVG90YWxWb3RlU1dPUAIWX3VzZXJfdG90YWxfdm90ZV9nU1dPUAAWa1VzZXJBdmFpbGFibGVGb3JDbGFpbQIZX3VzZXJfYXZhaWxhYmxlX2Zvcl9jbGFpbQAaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkABtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAATa0hlaWdodFBvb2xGcmFjdGlvbgIaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAE2tSZXdhcmRVcGRhdGVIZWlnaHQCFHJld2FyZF91cGRhdGVfaGVpZ2h0ACJrUmV3YXJkVXBkYXRlRmlyc3RQYWdpbmF0aW9uSGVpZ2h0AiVyZXdhcmRfdXBkYXRlX2hlaWdodF9maXJzdF9wYWdpbmF0aW9uABNrTm9Wb3RpbmdGb3JOZXdQb29sAghfdm90ZV9ubwAUa1llc1ZvdGluZ0Zvck5ld1Bvb2wCCV92b3RlX3llcwAZa1N0YXR1c09mVm90aW5nRm9yTmV3UG9vbAIHX3N0YXR1cwAda0hlaWdodE9mUG9vbFZvdGluZ0Zvck5ld1Bvb2wCDl9maW5pc2hfaGVpZ2h0AA9hY3RpdmVWb3RlRmlyc3QCFHZvdGluZ19hY3RpdmVfY2VsbF8xABBhY3RpdmVWb3RlU2Vjb25kAhR2b3RpbmdfYWN0aXZlX2NlbGxfMgAPYWN0aXZlVm90ZVRoaXJkAhR2b3RpbmdfYWN0aXZlX2NlbGxfMwALa1RlbXBDdXJTdW0CEnN1bV9yZXdhcmRfY3VycmVudAAXa0xhdW5jaHBhZEJvdWdodFRpY2tldHMCD19ib3VnaHRfdGlja2V0cwAYa0xhdW5jaHBhZFN3b3BQZXJUaWNrZXRzAhBfc3dvcF9wZXJfdGlja2V0ABJrTGF1bmNocGFkQWN0aXZlSWQCE2xhdW5jaHBhZF9hY3RpdmVfaWQAEmtMYXVuY2hwYWREdXJhdGlvbgIJX2R1cmF0aW9uABVrTGF1bmNocGFkU3RhcnRIZWlnaHQCDV9zdGFydF9oZWlnaHQADGtTdGFydEhlaWdodAIMc3RhcnRfaGVpZ2h0AAtrQmFzZVBlcmlvZAILYmFzZV9wZXJpb2QADWtQZXJpb2RMZW5ndGgCDXBlcmlvZF9sZW5ndGgAD2tVc2VyVG90YWxTdHJ1YwIRX3VzZXJfdG90YWxfc3RydWMAGmtMYXVjaHBhZEZyZWV6U3dvcER1cmF0aW9uAhVfZnJlZXplX3N3b3BfZHVyYXRpb24AB2tTV09QaWQCB1NXT1BfaWQAC2tBaXJkcm9wRmVlAgthaXJkcm9wX2ZlZQANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwAPa01vbmV5Qm94UHViS2V5AhFtb25leV9ib3hfcHViX2tleQAMa0Zhcm1pbmdBZGRyAg9mYXJtaW5nX2FkZHJlc3MAC2tWb3RpbmdBZGRyAg52b3RpbmdfYWRkcmVzcwASa1ZvdGluZ05ld1Bvb2xBZGRyAhd2b3RpbmdfbmV3X3Bvb2xfYWRkcmVzcwAOa0xhdW5jaHBhZEFkZHICEWxhdW5jaHBhZF9hZGRyZXNzABRrQWlyZHJvcE1vbmV5Qm94QWRkcgIVYWlyZHJvcF9mZWVfbW9uZXlfYm94AAZvcmFjbGUJAQdBZGRyZXNzAQEaAVRIE5cMwNMzzCUygLYp96dkaICr48x7S5kBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMADm1vbmV5Qm94UHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tNb25leUJveFB1YktleQALZmFybWluZ0FkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRmFybWluZ0FkZHIACnZvdGluZ0FkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrVm90aW5nQWRkcgARdm90aW5nTmV3UG9vbEFkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrVm90aW5nTmV3UG9vbEFkZHIADWxhdW5jaHBhZEFkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rTGF1bmNocGFkQWRkcgATYWlyZHJvcE1vbmV5Qm94QWRkcgkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFFGtBaXJkcm9wTW9uZXlCb3hBZGRyABRsb2NrU3dvcEJsb2Nrc0Ftb3VudAkAaAIA9k4ABAAEU1dPUAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQtmYXJtaW5nQWRkcgUHa1NXT1BpZAAKc2NhbGVWYWx1ZQCAwtcvAA50b3RhbFZvdGVTaGFyZQCAyK+gJQAJZmVlU2FjbGU2AMCEPQAKYmFzZVBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCnZvdGluZ0FkZHIFC2tCYXNlUGVyaW9kAiRFbXB0eSBrQmFzZVBlcmlvZCBhdCB2b3RpbmcgY29udHJhY3QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKdm90aW5nQWRkcgUMa1N0YXJ0SGVpZ2h0AiVFbXB0eSBrU3RhcnRIZWlnaHQgYXQgdm90aW5nIGNvbnRyYWN0AAxwZXJpb2RMZW5ndGgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQp2b3RpbmdBZGRyBQ1rUGVyaW9kTGVuZ3RoAiZFbXB0eSBrUGVyaW9kTGVuZ3RoIGF0IHZvdGluZyBjb250cmFjdAAPZmlyc3RBY3RpdmVWb3RlCQELdmFsdWVPckVsc2UCCQCdCAIFEXZvdGluZ05ld1Bvb2xBZGRyBQ9hY3RpdmVWb3RlRmlyc3QCAAAQc2Vjb25kQWN0aXZlVm90ZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBRF2b3RpbmdOZXdQb29sQWRkcgUQYWN0aXZlVm90ZVNlY29uZAIAAA90aGlyZEFjdGl2ZVZvdGUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgURdm90aW5nTmV3UG9vbEFkZHIFD2FjdGl2ZVZvdGVUaGlyZAIAAAZhY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUHa0FjdGl2ZQYACmFpcmRyb3BGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBm9yYWNsZQULa0FpcmRyb3BGZWUAEGN1cnJWb3RpbmdQZXJpb2QJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAEIaXNBY3RpdmUAAwUGYWN0aXZlBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BE2dldExhc3RJbnRlcmVzdEluZm8ACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtMYXN0SW50ZXJlc3QAAAESZ2V0VG90YWxMb2NrZWRJbmZvAAQPdG90YWxTd29wTG9ja2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEGtUb3RhbFNXT1BMb2NrZWQAAAQQdG90YWxHU3dvcExvY2tlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrVG90YWxHU3dvcExvY2tlZAUPdG90YWxTd29wTG9ja2VkCQCUCgIFD3RvdGFsU3dvcExvY2tlZAUQdG90YWxHU3dvcExvY2tlZAERZ2V0VXNlckxvY2tlZEluZm8BBHVzZXIEDnVzZXJTd29wTG9ja2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUPa1VzZXJTV09QTG9ja2VkAAAED3VzZXJHU3dvcExvY2tlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFEGtVc2VyR1N3b3BMb2NrZWQFDnVzZXJTd29wTG9ja2VkCQCUCgIFDnVzZXJTd29wTG9ja2VkBQ91c2VyR1N3b3BMb2NrZWQBE2dldFVzZXJJbnRlcmVzdEluZm8CBHVzZXIMbGFzdEludGVyZXN0BAskdDA0ODg3NDk1MAkBEWdldFVzZXJMb2NrZWRJbmZvAQUEdXNlcgQOdXNlclNXT1BBbW91bnQIBQskdDA0ODg3NDk1MAJfMQQPdXNlckdTd29wQW1vdW50CAULJHQwNDg4NzQ5NTACXzIEEHVzZXJMYXN0SW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRFrVXNlckxhc3RJbnRlcmVzdAUMbGFzdEludGVyZXN0CQCVCgMFEHVzZXJMYXN0SW50ZXJlc3QFDnVzZXJTV09QQW1vdW50BQ91c2VyR1N3b3BBbW91bnQBGGdldFVzZXJBdmFpbGFibGVGb3JDbGFpbQEEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFFmtVc2VyQXZhaWxhYmxlRm9yQ2xhaW0AAAEgZ2V0VXNlclRvdGFsVm90ZUFtb3VudEZvck9uZVBvb2wCBHBvb2wEdXNlcgQGdm90aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFEXZvdGluZ05ld1Bvb2xBZGRyBQRwb29sAP///////////wEEDmhlaWdodE9mVm90aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFEXZvdGluZ05ld1Bvb2xBZGRyCQCsAgIJAKQDAQUGdm90aW5nBR1rSGVpZ2h0T2ZQb29sVm90aW5nRm9yTmV3UG9vbAAABA5zdGF0dXNPZlZvdGluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBRF2b3RpbmdOZXdQb29sQWRkcgkArAICCQCkAwEFBnZvdGluZwUZa1N0YXR1c09mVm90aW5nRm9yTmV3UG9vbAYEDWN1cnJlbnRIZWlnaHQFBmhlaWdodAMJAGYCAAAFBnZvdGluZwAAAwkBASEBBQ5zdGF0dXNPZlZvdGluZwAAAwkAZgIFDmhlaWdodE9mVm90aW5nBQ1jdXJyZW50SGVpZ2h0CQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBRF2b3RpbmdOZXdQb29sQWRkcgkArAICCQCsAgIJAKwCAgkApQgBBQR1c2VyAgFfCQCkAwEFBnZvdGluZwUUa1llc1ZvdGluZ0Zvck5ld1Bvb2wAAAkBC3ZhbHVlT3JFbHNlAgkAmggCBRF2b3RpbmdOZXdQb29sQWRkcgkArAICCQCsAgIJAKwCAgkApQgBBQR1c2VyAgFfCQCkAwEFBnZvdGluZwUTa05vVm90aW5nRm9yTmV3UG9vbAAAAAABIGdldFVzZXJUb3RhbFZvdGVGb3JOZXdQb29sQW1vdW50AQR1c2VyBAxsaXN0T2ZWb3RpbmcJAMwIAgkBIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAgUPZmlyc3RBY3RpdmVWb3RlBQR1c2VyCQDMCAIJASBnZXRVc2VyVG90YWxWb3RlQW1vdW50Rm9yT25lUG9vbAIFEHNlY29uZEFjdGl2ZVZvdGUFBHVzZXIJAMwIAgkBIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAgUPdGhpcmRBY3RpdmVWb3RlBQR1c2VyBQNuaWwJAJYDAQUMbGlzdE9mVm90aW5nARhnZXRVc2VyQmxvY2tlZEluTGF1Y2hwYWQBBHVzZXIECmxhdWNocGFkSWQJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyBRJrTGF1bmNocGFkQWN0aXZlSWQAAAMJAAACBQpsYXVjaHBhZElkAgEwAAAEDGxTdGFydEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyCQCsAgIFCmxhdWNocGFkSWQFFWtMYXVuY2hwYWRTdGFydEhlaWdodAAABAlsRHVyYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUNbGF1bmNocGFkQWRkcgkArAICBQpsYXVjaHBhZElkBRJrTGF1bmNocGFkRHVyYXRpb24AAAQTbEZyZWV6ZVN3b3BEdXJhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyCQCsAgIFCmxhdWNocGFkSWQFGmtMYXVjaHBhZEZyZWV6U3dvcER1cmF0aW9uAAAEDmJsb2NrRW5kSGVpZ2h0CQBkAgkAZAIFDGxTdGFydEhlaWdodAUJbER1cmF0aW9uBRNsRnJlZXplU3dvcER1cmF0aW9uAwkAZgIFBmhlaWdodAUOYmxvY2tFbmRIZWlnaHQAAAQNYm91Z2h0VGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ1sYXVuY2hwYWRBZGRyCQCsAgIJAKwCAgkArAICCQClCAEFBHVzZXICAV8FCmxhdWNocGFkSWQFF2tMYXVuY2hwYWRCb3VnaHRUaWNrZXRzAAAEDXN3b3BQZXJUaWNrZXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNbGF1bmNocGFkQWRkcgkArAICBQpsYXVjaHBhZElkBRhrTGF1bmNocGFkU3dvcFBlclRpY2tldHMAAAkAaAIFDWJvdWdodFRpY2tldHMFDXN3b3BQZXJUaWNrZXQBD2dldFVzZXJWb3RlSW5mbwEEdXNlcgQLJHQwNzMxNDc4NDcDCQEJaXNEZWZpbmVkAQkAnQgCBQp2b3RpbmdBZGRyCQCsAgIJAKUIAQUEdXNlcgUPa1VzZXJUb3RhbFN0cnVjBARkYXRhCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQp2b3RpbmdBZGRyCQCsAgIJAKUIAQUEdXNlcgUPa1VzZXJUb3RhbFN0cnVjAhVFbXB0eSBrVXNlclRvdGFsU3RydWMCAV8JAJUKAwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGRhdGEAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGRhdGEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGRhdGEAAgQOdVBvb2xUb3RhbFNXT1AJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKdm90aW5nQWRkcgkArAICCQClCAEFBHVzZXIFEmtVc2VyVG90YWxWb3RlU1dPUAAACQCVCgMFDnVQb29sVG90YWxTV09QAAAFEGN1cnJWb3RpbmdQZXJpb2QEEXVzZXJUb3RhbFZvdGVTV09QCAULJHQwNzMxNDc4NDcCXzEEC3VzZXJVbnZvdGVkCAULJHQwNzMxNDc4NDcCXzIEEXVzZXJVbnZvdGVkUGVyaW9kCAULJHQwNzMxNDc4NDcCXzMEEXVzZXJVbnZvdGVkQWN0dWFsAwkAAAIFEXVzZXJVbnZvdGVkUGVyaW9kBRBjdXJyVm90aW5nUGVyaW9kBQt1c2VyVW52b3RlZAAACQCUCgIFEXVzZXJUb3RhbFZvdGVTV09QBRF1c2VyVW52b3RlZEFjdHVhbAETZ2V0UG9vbFVwZGF0ZUhlaWdodAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tIZWlnaHRQb29sRnJhY3Rpb24AAAEYaXNEZWZpbmVQb29sVXBkYXRlSGVpZ2h0AQRwb29sCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tIZWlnaHRQb29sRnJhY3Rpb24BEGdldEN1clBvb2xXZWlnaHQBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRprUmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAAAARFnZXRQcmV2UG9vbFdlaWdodAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFG2tSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwAAAQljbGFpbUNhbGMBBHVzZXIEDGxhc3RJbnRlcmVzdAkBE2dldExhc3RJbnRlcmVzdEluZm8ABAskdDA4NzIxODgxOAkBE2dldFVzZXJJbnRlcmVzdEluZm8CBQR1c2VyBQxsYXN0SW50ZXJlc3QEEHVzZXJMYXN0SW50ZXJlc3QIBQskdDA4NzIxODgxOAJfMQQOdXNlclNXT1BMb2NrZWQIBQskdDA4NzIxODgxOAJfMgQPdXNlckdTd29wQW1vdW50CAULJHQwODcyMTg4MTgCXzMEC2NsYWltQW1vdW50CQBrAwUPdXNlckdTd29wQW1vdW50CQBlAgUMbGFzdEludGVyZXN0BRB1c2VyTGFzdEludGVyZXN0BQpzY2FsZVZhbHVlBA91c2VyTmV3SW50ZXJlc3QFDGxhc3RJbnRlcmVzdAkAlAoCBQ91c2VyTmV3SW50ZXJlc3QFC2NsYWltQW1vdW50CQFpAQdhaXJEcm9wAAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQLJHQwOTA0ODkxMjMJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAULJHQwOTA0ODkxMjMCXzEECnBtdEFzc2V0SWQIBQskdDA5MDQ4OTEyMwJfMgMJAQIhPQIFCnBtdEFzc2V0SWQFBFNXT1AJAAIBAhRJbmNvcnJlY3QgcG10QXNzZXRJZAQQYWlyZHJvcEZlZUFtb3VudAkAbgQFCXBtdEFtb3VudAUKYWlyZHJvcEZlZQUJZmVlU2FjbGU2BQdDRUlMSU5HBAskdDA5Mjk2OTM1OAkBEmdldFRvdGFsTG9ja2VkSW5mbwAED3RvdGFsU1dPUExvY2tlZAgFCyR0MDkyOTY5MzU4Al8xBBB0b3RhbEdTd29wTG9ja2VkCAULJHQwOTI5NjkzNTgCXzIEDGxhc3RJbnRlcmVzdAkBE2dldExhc3RJbnRlcmVzdEluZm8ABAtpbnRlcmVzdE5ldwkAZAIFDGxhc3RJbnRlcmVzdAkAawMJAGUCBQlwbXRBbW91bnQFEGFpcmRyb3BGZWVBbW91bnQFCnNjYWxlVmFsdWUFEHRvdGFsR1N3b3BMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtMYXN0SW50ZXJlc3QFC2ludGVyZXN0TmV3CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2FpcmRyb3BNb25leUJveEFkZHIFEGFpcmRyb3BGZWVBbW91bnQFBFNXT1AFA25pbAFpAQhsb2NrU1dPUAAJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAECyR0MDk3MzY5ODExCQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFCyR0MDk3MzY5ODExAl8xBApwbXRBc3NldElkCAULJHQwOTczNjk4MTECXzIDCQECIT0CBQpwbXRBc3NldElkBQRTV09QCQACAQIUSW5jb3JyZWN0IHBtdEFzc2V0SWQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAxsYXN0SW50ZXJlc3QJARNnZXRMYXN0SW50ZXJlc3RJbmZvAAQMJHQwOTk2MjEwMDI1CQERZ2V0VXNlckxvY2tlZEluZm8BBQR1c2VyBA51c2VyU1dPUExvY2tlZAgFDCR0MDk5NjIxMDAyNQJfMQQPdXNlckdTd29wTG9ja2VkCAUMJHQwOTk2MjEwMDI1Al8yBA0kdDAxMDAzMDEwMDkxCQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAUNJHQwMTAwMzAxMDA5MQJfMQQUY2xhaW1BbW91bnRBdmFpbGFibGUIBQ0kdDAxMDAzMDEwMDkxAl8yBBFhdmFpbGFibGVGb3JDbGFpbQkBGGdldFVzZXJBdmFpbGFibGVGb3JDbGFpbQEFBHVzZXIEFGF2YWlsYWJsZUZvckNsYWltTmV3CQBkAgURYXZhaWxhYmxlRm9yQ2xhaW0FFGNsYWltQW1vdW50QXZhaWxhYmxlBBF1c2VyU1dPUExvY2tlZE5ldwkAZAIFDnVzZXJTV09QTG9ja2VkBQlwbXRBbW91bnQEEnVzZXJHU3dvcExvY2tlZE5ldwkAZAIFD3VzZXJHU3dvcExvY2tlZAUJcG10QW1vdW50BA0kdDAxMDMzOTEwNDAxCQESZ2V0VG90YWxMb2NrZWRJbmZvAAQPdG90YWxTV09QTG9ja2VkCAUNJHQwMTAzMzkxMDQwMQJfMQQQdG90YWxHU3dvcExvY2tlZAgFDSR0MDEwMzM5MTA0MDECXzIEEnRvdGFsU1dPUExvY2tlZE5ldwkAZAIFD3RvdGFsU1dPUExvY2tlZAUJcG10QW1vdW50BBN0b3RhbEdTd29wTG9ja2VkTmV3CQBkAgUQdG90YWxHU3dvcExvY2tlZAUJcG10QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFFWtVc2VyU3dvcFVubG9ja0hlaWdodAkAZAIFBmhlaWdodAUUbG9ja1N3b3BCbG9ja3NBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgURa1VzZXJMYXN0SW50ZXJlc3QFD3VzZXJOZXdJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBQ9rVXNlclNXT1BMb2NrZWQFEXVzZXJTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyR1N3b3BMb2NrZWQFEnVzZXJHU3dvcExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRZrVXNlckF2YWlsYWJsZUZvckNsYWltBRRhdmFpbGFibGVGb3JDbGFpbU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa1RvdGFsU1dPUExvY2tlZAUSdG90YWxTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrVG90YWxHU3dvcExvY2tlZAUTdG90YWxHU3dvcExvY2tlZE5ldwUDbmlsAWkBDHdpdGhkcmF3U1dPUAEOd2l0aGRyYXdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAx1bmxvY2tIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRVrVXNlclN3b3BVbmxvY2tIZWlnaHQAAAMJAGcCAAAFDndpdGhkcmF3QW1vdW50CQACAQITd2l0aGRyYXdBbW91bnQgPD0gMAMJAGYCBQx1bmxvY2tIZWlnaHQFBmhlaWdodAkAAgEJAKwCAgIYWW91IGNhbid0IHdpdGhkcmF3IHRpbGwgCQCkAwEFDHVubG9ja0hlaWdodAQNJHQwMTEzNzkxMTQ0MQkBEmdldFRvdGFsTG9ja2VkSW5mbwAED3RvdGFsU1dPUExvY2tlZAgFDSR0MDExMzc5MTE0NDECXzEEEHRvdGFsR1N3b3BMb2NrZWQIBQ0kdDAxMTM3OTExNDQxAl8yBA0kdDAxMTQ0NjExNTA5CQERZ2V0VXNlckxvY2tlZEluZm8BBQR1c2VyBA51c2VyU1dPUExvY2tlZAgFDSR0MDExNDQ2MTE1MDkCXzEED3VzZXJHU3dvcExvY2tlZAgFDSR0MDExNDQ2MTE1MDkCXzIEDSR0MDExNTE0MTE1NzUJAQljbGFpbUNhbGMBBQR1c2VyBA91c2VyTmV3SW50ZXJlc3QIBQ0kdDAxMTUxNDExNTc1Al8xBBRjbGFpbUFtb3VudEF2YWlsYWJsZQgFDSR0MDExNTE0MTE1NzUCXzIEDSR0MDExNTgwMTE2NDYJAQ9nZXRVc2VyVm90ZUluZm8BCAUBaQZjYWxsZXIEDnVzZXJWb3RlQW1vdW50CAUNJHQwMTE1ODAxMTY0NgJfMQQQdXNlclVudm90ZUFtb3VudAgFDSR0MDExNTgwMTE2NDYCXzIEGHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbAkBIGdldFVzZXJUb3RhbFZvdGVGb3JOZXdQb29sQW1vdW50AQgFAWkGY2FsbGVyBBJibG9ja2VkSW5MYXVuY2hwYWQJARhnZXRVc2VyQmxvY2tlZEluTGF1Y2hwYWQBCAUBaQZjYWxsZXIDAwMJAGYCAAAFEHVzZXJVbnZvdGVBbW91bnQGCQBmAgAABQ51c2VyVm90ZUFtb3VudAYJAGYCAAAFGHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbAkAAgECSnVzZXJVbnZvdGVBbW91bnQgPCAwIHx8IHVzZXJWb3RlQW1vdW50IDwgMCB8fCB1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wgPCAwBBJhdmFpbGFibGVUb1Vuc3Rha2UJAGUCBQ51c2VyU1dPUExvY2tlZAkAlgMBCQDMCAIFGHVzZXJWb3RlQW1vdW50Rm9yTmV3UG9vbAkAzAgCCQBkAgUOdXNlclZvdGVBbW91bnQFEHVzZXJVbnZvdGVBbW91bnQJAMwIAgUSYmxvY2tlZEluTGF1bmNocGFkBQNuaWwDCQBmAgUOd2l0aGRyYXdBbW91bnQFEmF2YWlsYWJsZVRvVW5zdGFrZQkAAgECI3dpdGhkcmF3QW1vdW50ID4gYXZhaWxhYmxlVG9VbnN0YWtlBBFhdmFpbGFibGVGb3JDbGFpbQkBGGdldFVzZXJBdmFpbGFibGVGb3JDbGFpbQEFBHVzZXIEFGF2YWlsYWJsZUZvckNsYWltTmV3CQBkAgURYXZhaWxhYmxlRm9yQ2xhaW0FFGNsYWltQW1vdW50QXZhaWxhYmxlBBJ0b3RhbFNXT1BMb2NrZWROZXcJAGUCBQ90b3RhbFNXT1BMb2NrZWQFDndpdGhkcmF3QW1vdW50BBF1c2VyU1dPUEFtb3VudE5ldwkAZQIFDnVzZXJTV09QTG9ja2VkBQ53aXRoZHJhd0Ftb3VudAQTdG90YWxHU3dvcExvY2tlZE5ldwkAZAIJAGUCBRB0b3RhbEdTd29wTG9ja2VkBQ91c2VyR1N3b3BMb2NrZWQFEXVzZXJTV09QQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEWtVc2VyTGFzdEludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUPa1VzZXJTV09QTG9ja2VkBRF1c2VyU1dPUEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlckdTd29wTG9ja2VkBRF1c2VyU1dPUEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRZrVXNlckF2YWlsYWJsZUZvckNsYWltBRRhdmFpbGFibGVGb3JDbGFpbU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa1RvdGFsU1dPUExvY2tlZAUSdG90YWxTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrVG90YWxHU3dvcExvY2tlZAUTdG90YWxHU3dvcExvY2tlZE5ldwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDndpdGhkcmF3QW1vdW50BQRTV09QBQNuaWwBaQEUY2xhaW1BbmRXaXRoZHJhd1NXT1AACQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQRYXZhaWxhYmxlRm9yQ2xhaW0JARhnZXRVc2VyQXZhaWxhYmxlRm9yQ2xhaW0BBQR1c2VyBA0kdDAxMzE2NTEzMjE3CQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAUNJHQwMTMxNjUxMzIxNwJfMQQLY2xhaW1BbW91bnQIBQ0kdDAxMzE2NTEzMjE3Al8yBA91c2VyQ2xhaW1BbW91bnQJAGQCBRFhdmFpbGFibGVGb3JDbGFpbQULY2xhaW1BbW91bnQDCQAAAgUPdXNlckNsYWltQW1vdW50AAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEWtVc2VyTGFzdEludGVyZXN0BQ91c2VyTmV3SW50ZXJlc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ91c2VyQ2xhaW1BbW91bnQFBFNXT1AFA25pbAFpARFjbGFpbUFuZFN0YWtlU1dPUAAJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxMzU5MDEzNjUyCQESZ2V0VG90YWxMb2NrZWRJbmZvAAQPdG90YWxTV09QTG9ja2VkCAUNJHQwMTM1OTAxMzY1MgJfMQQQdG90YWxHU3dvcExvY2tlZAgFDSR0MDEzNTkwMTM2NTICXzIEDSR0MDEzNjU3MTM3MjAJARFnZXRVc2VyTG9ja2VkSW5mbwEFBHVzZXIEDnVzZXJTV09QTG9ja2VkCAUNJHQwMTM2NTcxMzcyMAJfMQQPdXNlckdTd29wTG9ja2VkCAUNJHQwMTM2NTcxMzcyMAJfMgQRYXZhaWxhYmxlRm9yQ2xhaW0JARhnZXRVc2VyQXZhaWxhYmxlRm9yQ2xhaW0BBQR1c2VyBA0kdDAxMzc4NDEzODM1CQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAUNJHQwMTM3ODQxMzgzNQJfMQQLY2xhaW1BbW91bnQIBQ0kdDAxMzc4NDEzODM1Al8yBA91c2VyQ2xhaW1BbW91bnQJAGQCBRFhdmFpbGFibGVGb3JDbGFpbQULY2xhaW1BbW91bnQEEXVzZXJTV09QTG9ja2VkTmV3CQBkAgUOdXNlclNXT1BMb2NrZWQFD3VzZXJDbGFpbUFtb3VudAQSdXNlckdTd29wTG9ja2VkTmV3CQBkAgUPdXNlckdTd29wTG9ja2VkCQBoAgUPdXNlckNsYWltQW1vdW50AAIEEnRvdGFsU1dPUExvY2tlZE5ldwkAZAIFD3RvdGFsU1dPUExvY2tlZAUPdXNlckNsYWltQW1vdW50BBN0b3RhbEdTd29wTG9ja2VkTmV3CQBkAgUQdG90YWxHU3dvcExvY2tlZAkAaAIFD3VzZXJDbGFpbUFtb3VudAACAwkAAAIFD3VzZXJDbGFpbUFtb3VudAAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQClCAEIBQFpBmNhbGxlcgUVa1VzZXJTd29wVW5sb2NrSGVpZ2h0CQBkAgUGaGVpZ2h0BRRsb2NrU3dvcEJsb2Nrc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQClCAEIBQFpBmNhbGxlcgURa1VzZXJMYXN0SW50ZXJlc3QFD3VzZXJOZXdJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa1RvdGFsU1dPUExvY2tlZAUSdG90YWxTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrVG90YWxHU3dvcExvY2tlZAUTdG90YWxHU3dvcExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQClCAEIBQFpBmNhbGxlcgUPa1VzZXJTV09QTG9ja2VkBRF1c2VyU1dPUExvY2tlZE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQClCAEIBQFpBmNhbGxlcgUQa1VzZXJHU3dvcExvY2tlZAUSdXNlckdTd29wTG9ja2VkTmV3BQNuaWwBaQETbG9ja1NXT1BGcm9tRmFybWluZwAJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDSR0MDE0Nzc1MTQ4NTAJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAUNJHQwMTQ3NzUxNDg1MAJfMQQKcG10QXNzZXRJZAgFDSR0MDE0Nzc1MTQ4NTACXzIDCQECIT0CCAUBaQZjYWxsZXIFC2Zhcm1pbmdBZGRyCQACAQIjT25seSBmYXJtaW5nIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQECIT0CBQpwbXRBc3NldElkBQRTV09QCQACAQIUSW5jb3JyZWN0IHBtdEFzc2V0SWQEBHVzZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAxsYXN0SW50ZXJlc3QJARNnZXRMYXN0SW50ZXJlc3RJbmZvAAQNJHQwMTUwOTMxNTE1NgkBEWdldFVzZXJMb2NrZWRJbmZvAQUEdXNlcgQOdXNlclNXT1BMb2NrZWQIBQ0kdDAxNTA5MzE1MTU2Al8xBA91c2VyR1N3b3BMb2NrZWQIBQ0kdDAxNTA5MzE1MTU2Al8yBA0kdDAxNTE2MTE1MjIyCQEJY2xhaW1DYWxjAQUEdXNlcgQPdXNlck5ld0ludGVyZXN0CAUNJHQwMTUxNjExNTIyMgJfMQQUY2xhaW1BbW91bnRBdmFpbGFibGUIBQ0kdDAxNTE2MTE1MjIyAl8yBBFhdmFpbGFibGVGb3JDbGFpbQkBGGdldFVzZXJBdmFpbGFibGVGb3JDbGFpbQEFBHVzZXIEFGF2YWlsYWJsZUZvckNsYWltTmV3CQBkAgURYXZhaWxhYmxlRm9yQ2xhaW0FFGNsYWltQW1vdW50QXZhaWxhYmxlBBF1c2VyU1dPUExvY2tlZE5ldwkAZAIFDnVzZXJTV09QTG9ja2VkBQlwbXRBbW91bnQEEnVzZXJHU3dvcExvY2tlZE5ldwkAZAIFD3VzZXJHU3dvcExvY2tlZAkAaAIFCXBtdEFtb3VudAACBA0kdDAxNTQ3NDE1NTM2CQESZ2V0VG90YWxMb2NrZWRJbmZvAAQPdG90YWxTV09QTG9ja2VkCAUNJHQwMTU0NzQxNTUzNgJfMQQQdG90YWxHU3dvcExvY2tlZAgFDSR0MDE1NDc0MTU1MzYCXzIEEnRvdGFsU1dPUExvY2tlZE5ldwkAZAIFD3RvdGFsU1dPUExvY2tlZAUJcG10QW1vdW50BBN0b3RhbEdTd29wTG9ja2VkTmV3CQBkAgUQdG90YWxHU3dvcExvY2tlZAkAaAIFCXBtdEFtb3VudAACCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFFWtVc2VyU3dvcFVubG9ja0hlaWdodAkAZAIFBmhlaWdodAUUbG9ja1N3b3BCbG9ja3NBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgURa1VzZXJMYXN0SW50ZXJlc3QFD3VzZXJOZXdJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBQ9rVXNlclNXT1BMb2NrZWQFEXVzZXJTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFEGtVc2VyR1N3b3BMb2NrZWQFD3VzZXJHU3dvcExvY2tlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRZrVXNlckF2YWlsYWJsZUZvckNsYWltBRRhdmFpbGFibGVGb3JDbGFpbU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa1RvdGFsU1dPUExvY2tlZAUSdG90YWxTV09QTG9ja2VkTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrVG90YWxHU3dvcExvY2tlZAUTdG90YWxHU3dvcExvY2tlZE5ldwUDbmlsAWkBDXVwZGF0ZVdlaWdodHMEDGN1cnJlbnRQb29scw5jdXJyZW50UmV3YXJkcxJyZXdhcmRVcGRhdGVIZWlnaHQKcGFnaW5hdGlvbgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQLYW1vdW50UG9vbHMACgQXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa1Jld2FyZFVwZGF0ZUhlaWdodAAAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwkAzAgCBQ5tb25leUJveFB1YktleQUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQBmAgkAkAMBBQxjdXJyZW50UG9vbHMFC2Ftb3VudFBvb2xzCQACAQkArAICAhZNYXggYW1vdW50IG9mIHBvb2wgaXMgCQCkAwEFC2Ftb3VudFBvb2xzAwkAZwIFF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAAIBAi1yZXdhcmRVcGRhdGVIZWlnaHQgPD0gdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQDCQBnAgUGaGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAAIBAhxoZWlnaHQgPj0gcmV3YXJkVXBkYXRlSGVpZ2h0AwkAZwIAAAUScmV3YXJkVXBkYXRlSGVpZ2h0CQACAQIYMCA+PSByZXdhcmRVcGRhdGVIZWlnaHQgCgEDc3VtAgFhAWIJAGQCBQFhBQFiCgEZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQILYWNjdW11bGF0ZWQEcG9vbAQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkBE2dldFBvb2xVcGRhdGVIZWlnaHQBBQRwb29sAwMJAQEhAQkBGGlzRGVmaW5lUG9vbFVwZGF0ZUhlaWdodAEFBHBvb2wGAwkBAiE9AgUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAUXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQHBApwb29sUmV3YXJkCQEQZ2V0Q3VyUG9vbFdlaWdodAEFBHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQpwb29sUmV3YXJkBQthY2N1bXVsYXRlZAQKcG9vbFJld2FyZAkBEWdldFByZXZQb29sV2VpZ2h0AQUEcG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFCnBvb2xSZXdhcmQFC2FjY3VtdWxhdGVkCgEYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AgthY2N1bXVsYXRlZARwb29sBAlwb29sSW5kZXgJAQV2YWx1ZQEJAM8IAgUMY3VycmVudFBvb2xzBQRwb29sBApwb29sUmV3YXJkCQCRAwIFDmN1cnJlbnRSZXdhcmRzBQlwb29sSW5kZXgDCQBmAgAABQpwb29sUmV3YXJkCQACAQIOUG9vbFJld2FyZCA8IDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQFCnBvb2xSZXdhcmQFC2FjY3VtdWxhdGVkCgERY2hhbmdlSGVpZ2h0RW50cnkCC2FjY3VtdWxhdGVkBHBvb2wECnBvb2xIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAQHdXBVSW50cgkA/AcEBQtmYXJtaW5nQWRkcgISdXBkYXRlUG9vbEludGVyZXN0CQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFB3VwVUludHIFB3VwVUludHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgUKcG9vbEhlaWdodAULYWNjdW11bGF0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAQxnZXRTdW1SZXdhcmQCCmN1clRlbXBTdW0KcGFnaW5hdGlvbgMJAAACBQpwYWdpbmF0aW9uAAADCQBmAgUKY3VyVGVtcFN1bQUOdG90YWxWb3RlU2hhcmUJAAIBCQCsAgIJAKwCAgkArAICAkpzdW1SZXdhcmRQcmV2aW91cyA+IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgPiB0b3RhbFZvdGVTaGFyZSAtIAkApAMBBQpwYWdpbmF0aW9uAgEgCQCkAwEFCmN1clRlbXBTdW0JAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1RlbXBDdXJTdW0FCmN1clRlbXBTdW0FA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUia1Jld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BQNuaWwDCQAAAgUKcGFnaW5hdGlvbgABBBFjdXJUZW1wU3VtRnJvbUtleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrVGVtcEN1clN1bQAABCZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBSJrUmV3YXJkVXBkYXRlRmlyc3RQYWdpbmF0aW9uSGVpZ2h0AAADCQBmAgkAZAIFCmN1clRlbXBTdW0FEWN1clRlbXBTdW1Gcm9tS2V5BQ50b3RhbFZvdGVTaGFyZQkAAgEJAKwCAgkArAICCQCsAgICSnN1bVJld2FyZFByZXZpb3VzID4gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCA+IHRvdGFsVm90ZVNoYXJlIC0gCQCkAwEFCnBhZ2luYXRpb24CASAJAKQDAQkAZAIFCmN1clRlbXBTdW0FEWN1clRlbXBTdW1Gcm9tS2V5AwkBAiE9AgUmcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkFEnJld2FyZFVwZGF0ZUhlaWdodAkAAgECRGN1cnJlbnQgcmV3YXJkVXBkYXRlSGVpZ2h0ICE9IHJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tUZW1wQ3VyU3VtCQBkAgUKY3VyVGVtcFN1bQURY3VyVGVtcFN1bUZyb21LZXkFA25pbAUDbmlsAwkAAAIFCnBhZ2luYXRpb24AAgQGY3VyU3VtCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrVGVtcEN1clN1bQAABQpjdXJUZW1wU3VtBCZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBSJrUmV3YXJkVXBkYXRlRmlyc3RQYWdpbmF0aW9uSGVpZ2h0AAADCQECIT0CBQZjdXJTdW0FDnRvdGFsVm90ZVNoYXJlCQACAQJJc3VtUmV3YXJkUHJldmlvdXMgIT0gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCAhPSB0b3RhbFZvdGVTaGFyZQMJAQIhPQIFJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BRJyZXdhcmRVcGRhdGVIZWlnaHQJAAIBAkRjdXJyZW50IHJld2FyZFVwZGF0ZUhlaWdodCAhPSByZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrVGVtcEN1clN1bQUGY3VyU3VtBQNuaWwFA25pbAkAAgECFEluY29ycmVjdCBwYWdpbmF0aW9uBBZwcmV2aW91c1Jld2FyZEVudHJ5TmV3CgACJGwFDGN1cnJlbnRQb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQVY3VycmVudFJld2FyZEVudHJ5TmV3CgACJGwFDGN1cnJlbnRQb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBBFoZWlnaHRFbnRyeU5ld0N1cgoAAiRsBQxjdXJyZW50UG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEWNoYW5nZUhlaWdodEVudHJ5AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBBRzdW1SZXdhcmRDdXJyZW50VGVtcAoAAiRsBQ5jdXJyZW50UmV3YXJkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmM18xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDc3VtAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYzXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmM18yAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBA0kdDAyMDU1NzIwNjY4CQEMZ2V0U3VtUmV3YXJkAgUUc3VtUmV3YXJkQ3VycmVudFRlbXAFCnBhZ2luYXRpb24EEHN1bVJld2FyZEN1cnJlbnQIBQ0kdDAyMDU1NzIwNjY4Al8xBCZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQgFDSR0MDIwNTU3MjA2NjgCXzIEF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5AwkAAAIFCnBhZ2luYXRpb24AAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa1Jld2FyZFVwZGF0ZUhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BQNuaWwFA25pbAMJAGYCBQZoZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkAAgECG3Jld2FyZFVwZGF0ZUhlaWdodCA8IGhlaWdodAkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIFFnByZXZpb3VzUmV3YXJkRW50cnlOZXcFFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwURaGVpZ2h0RW50cnlOZXdDdXIFEHN1bVJld2FyZEN1cnJlbnQFF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5BSZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEFBmFjdGl2ZQkAAgEJAKwCAgIiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQZrQ2F1c2UCGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkCQEHc3VzcGVuZAECD1BhdXNlZCBieSBhZG1pbgFpAQhhY3RpdmF0ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDBQZhY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELRGVsZXRlRW50cnkBBQZrQ2F1c2UFA25pbAECdHgBBnZlcmlmeQAEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAmOSPtY=", "height": 2279106, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FyHkarCnBzEjCo6XAg9Bj2dZs7pPz62Mwb9fqAii9fcP Next: CZHRW83L3jrKgPjrDp9UJ1zCjV27zQSKPpuoHnoTfvMn Diff:
OldNewDifferences
319319 let totalGSwopLocked = $t01033910401._2
320320 let totalSWOPLockedNew = (totalSWOPLocked + pmtAmount)
321321 let totalGSwopLockedNew = (totalGSwopLocked + pmtAmount)
322-[IntegerEntry((user + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((user + kUserGSwopLocked), userGSwopLocked), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew)]
322+[IntegerEntry((user + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((user + kUserGSwopLocked), userGSwopLockedNew), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew)]
323323 }
324324 })
325325
334334 else if ((unlockHeight > height))
335335 then throw(("You can't withdraw till " + toString(unlockHeight)))
336336 else {
337- let $t01137611438 = getTotalLockedInfo()
338- let totalSWOPLocked = $t01137611438._1
339- let totalGSwopLocked = $t01137611438._2
340- let $t01144311506 = getUserLockedInfo(user)
341- let userSWOPLocked = $t01144311506._1
342- let userGSwopLocked = $t01144311506._2
343- let $t01151111572 = claimCalc(user)
344- let userNewInterest = $t01151111572._1
345- let claimAmountAvailable = $t01151111572._2
346- let $t01157711643 = getUserVoteInfo(i.caller)
347- let userVoteAmount = $t01157711643._1
348- let userUnvoteAmount = $t01157711643._2
337+ let $t01137911441 = getTotalLockedInfo()
338+ let totalSWOPLocked = $t01137911441._1
339+ let totalGSwopLocked = $t01137911441._2
340+ let $t01144611509 = getUserLockedInfo(user)
341+ let userSWOPLocked = $t01144611509._1
342+ let userGSwopLocked = $t01144611509._2
343+ let $t01151411575 = claimCalc(user)
344+ let userNewInterest = $t01151411575._1
345+ let claimAmountAvailable = $t01151411575._2
346+ let $t01158011646 = getUserVoteInfo(i.caller)
347+ let userVoteAmount = $t01158011646._1
348+ let userUnvoteAmount = $t01158011646._2
349349 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
350350 let blockedInLaunchpad = getUserBlockedInLauchpad(i.caller)
351351 if (if (if ((0 > userUnvoteAmount))
376376 func claimAndWithdrawSWOP () = valueOrElse(isActive(), {
377377 let user = toString(i.caller)
378378 let availableForClaim = getUserAvailableForClaim(user)
379- let $t01316213214 = claimCalc(user)
380- let userNewInterest = $t01316213214._1
381- let claimAmount = $t01316213214._2
379+ let $t01316513217 = claimCalc(user)
380+ let userNewInterest = $t01316513217._1
381+ let claimAmount = $t01316513217._2
382382 let userClaimAmount = (availableForClaim + claimAmount)
383383 if ((userClaimAmount == 0))
384384 then throw("You have 0 available SWOP")
390390 @Callable(i)
391391 func claimAndStakeSWOP () = valueOrElse(isActive(), {
392392 let user = toString(i.caller)
393- let $t01358713649 = getTotalLockedInfo()
394- let totalSWOPLocked = $t01358713649._1
395- let totalGSwopLocked = $t01358713649._2
396- let $t01365413717 = getUserLockedInfo(user)
397- let userSWOPLocked = $t01365413717._1
398- let userGSwopLocked = $t01365413717._2
393+ let $t01359013652 = getTotalLockedInfo()
394+ let totalSWOPLocked = $t01359013652._1
395+ let totalGSwopLocked = $t01359013652._2
396+ let $t01365713720 = getUserLockedInfo(user)
397+ let userSWOPLocked = $t01365713720._1
398+ let userGSwopLocked = $t01365713720._2
399399 let availableForClaim = getUserAvailableForClaim(user)
400- let $t01378113832 = claimCalc(user)
401- let userNewInterest = $t01378113832._1
402- let claimAmount = $t01378113832._2
400+ let $t01378413835 = claimCalc(user)
401+ let userNewInterest = $t01378413835._1
402+ let claimAmount = $t01378413835._2
403403 let userClaimAmount = (availableForClaim + claimAmount)
404404 let userSWOPLockedNew = (userSWOPLocked + userClaimAmount)
405405 let userGSwopLockedNew = (userGSwopLocked + (userClaimAmount * 2))
414414
415415 @Callable(i)
416416 func lockSWOPFromFarming () = valueOrElse(isActive(), {
417- let $t01477214847 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
418- let pmtAmount = $t01477214847._1
419- let pmtAssetId = $t01477214847._2
417+ let $t01477514850 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
418+ let pmtAmount = $t01477514850._1
419+ let pmtAssetId = $t01477514850._2
420420 if ((i.caller != farmingAddr))
421421 then throw("Only farming can call this function")
422422 else if ((pmtAssetId != SWOP))
424424 else {
425425 let user = toString(i.originCaller)
426426 let lastInterest = getLastInterestInfo()
427- let $t01509015153 = getUserLockedInfo(user)
428- let userSWOPLocked = $t01509015153._1
429- let userGSwopLocked = $t01509015153._2
430- let $t01515815219 = claimCalc(user)
431- let userNewInterest = $t01515815219._1
432- let claimAmountAvailable = $t01515815219._2
427+ let $t01509315156 = getUserLockedInfo(user)
428+ let userSWOPLocked = $t01509315156._1
429+ let userGSwopLocked = $t01509315156._2
430+ let $t01516115222 = claimCalc(user)
431+ let userNewInterest = $t01516115222._1
432+ let claimAmountAvailable = $t01516115222._2
433433 let availableForClaim = getUserAvailableForClaim(user)
434434 let availableForClaimNew = (availableForClaim + claimAmountAvailable)
435435 let userSWOPLockedNew = (userSWOPLocked + pmtAmount)
436436 let userGSwopLockedNew = (userGSwopLocked + (pmtAmount * 2))
437- let $t01547115533 = getTotalLockedInfo()
438- let totalSWOPLocked = $t01547115533._1
439- let totalGSwopLocked = $t01547115533._2
437+ let $t01547415536 = getTotalLockedInfo()
438+ let totalSWOPLocked = $t01547415536._1
439+ let totalGSwopLocked = $t01547415536._2
440440 let totalSWOPLockedNew = (totalSWOPLocked + pmtAmount)
441441 let totalGSwopLockedNew = (totalGSwopLocked + (pmtAmount * 2))
442442 [IntegerEntry((user + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((user + kUserGSwopLocked), userGSwopLocked), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew)]
577577
578578 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
579579 }
580- let $t02055420665 = getSumReward(sumRewardCurrentTemp, pagination)
581- let sumRewardCurrent = $t02055420665._1
582- let rewardUpdateHeightFirstPaginationEntry = $t02055420665._2
580+ let $t02055720668 = getSumReward(sumRewardCurrentTemp, pagination)
581+ let sumRewardCurrent = $t02055720668._1
582+ let rewardUpdateHeightFirstPaginationEntry = $t02055720668._2
583583 let rewardUpdateHeightEntry = if ((pagination == 2))
584584 then [IntegerEntry(kRewardUpdateHeight, rewardUpdateHeight)]
585585 else nil
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let kActive = "active"
55
66 let kCause = "shutdown_cause"
77
88 let kLastInterest = "last_interest"
99
1010 let kUserLastInterest = "_last_interest"
1111
1212 let kUserSWOPLocked = "_SWOP_amount"
1313
1414 let kTotalSWOPLocked = "total_SWOP_amount"
1515
1616 let kUserSwopUnlockHeight = "_SWOP_unlock_height"
1717
1818 let kUserGSwopLocked = "_GSwop_amount"
1919
2020 let kTotalGSwopLocked = "total_GSwop_amount"
2121
2222 let kUserTotalVoteSWOP = "_user_total_vote_gSWOP"
2323
2424 let kUserAvailableForClaim = "_user_available_for_claim"
2525
2626 let kRewardPoolFractionCurrent = "_current_pool_fraction_reward"
2727
2828 let kRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
2929
3030 let kHeightPoolFraction = "_pool_reward_update_height"
3131
3232 let kRewardUpdateHeight = "reward_update_height"
3333
3434 let kRewardUpdateFirstPaginationHeight = "reward_update_height_first_pagination"
3535
3636 let kNoVotingForNewPool = "_vote_no"
3737
3838 let kYesVotingForNewPool = "_vote_yes"
3939
4040 let kStatusOfVotingForNewPool = "_status"
4141
4242 let kHeightOfPoolVotingForNewPool = "_finish_height"
4343
4444 let activeVoteFirst = "voting_active_cell_1"
4545
4646 let activeVoteSecond = "voting_active_cell_2"
4747
4848 let activeVoteThird = "voting_active_cell_3"
4949
5050 let kTempCurSum = "sum_reward_current"
5151
5252 let kLaunchpadBoughtTickets = "_bought_tickets"
5353
5454 let kLaunchpadSwopPerTickets = "_swop_per_ticket"
5555
5656 let kLaunchpadActiveId = "launchpad_active_id"
5757
5858 let kLaunchpadDuration = "_duration"
5959
6060 let kLaunchpadStartHeight = "_start_height"
6161
6262 let kStartHeight = "start_height"
6363
6464 let kBasePeriod = "base_period"
6565
6666 let kPeriodLength = "period_length"
6767
6868 let kUserTotalStruc = "_user_total_struc"
6969
7070 let kLauchpadFreezSwopDuration = "_freeze_swop_duration"
7171
7272 let kSWOPid = "SWOP_id"
7373
7474 let kAirdropFee = "airdrop_fee"
7575
7676 let kAdminPubKey1 = "admin_pub_1"
7777
7878 let kAdminPubKey2 = "admin_pub_2"
7979
8080 let kAdminPubKey3 = "admin_pub_3"
8181
8282 let kMoneyBoxPubKey = "money_box_pub_key"
8383
8484 let kFarmingAddr = "farming_address"
8585
8686 let kVotingAddr = "voting_address"
8787
8888 let kVotingNewPoolAddr = "voting_new_pool_address"
8989
9090 let kLaunchpadAddr = "launchpad_address"
9191
9292 let kAirdropMoneyBoxAddr = "airdrop_fee_money_box"
9393
9494 let oracle = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9595
9696 func getBase58FromOracle (key) = match getString(oracle, key) {
9797 case string: String =>
9898 fromBase58String(string)
9999 case nothing =>
100100 throw((key + "is empty"))
101101 }
102102
103103
104104 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
105105
106106 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
107107
108108 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
109109
110110 let moneyBoxPubKey = getBase58FromOracle(kMoneyBoxPubKey)
111111
112112 let farmingAddr = Address(getBase58FromOracle(kFarmingAddr))
113113
114114 let votingAddr = Address(getBase58FromOracle(kVotingAddr))
115115
116116 let votingNewPoolAddr = Address(getBase58FromOracle(kVotingNewPoolAddr))
117117
118118 let launchpadAddr = Address(getBase58FromOracle(kLaunchpadAddr))
119119
120120 let airdropMoneyBoxAddr = Address(getBase58FromOracle(kAirdropMoneyBoxAddr))
121121
122122 let lockSwopBlocksAmount = (10102 * 4)
123123
124124 let SWOP = fromBase58String(getStringValue(farmingAddr, kSWOPid))
125125
126126 let scaleValue = 100000000
127127
128128 let totalVoteShare = 10000000000
129129
130130 let feeSacle6 = 1000000
131131
132132 let basePeriod = valueOrErrorMessage(getInteger(votingAddr, kBasePeriod), "Empty kBasePeriod at voting contract")
133133
134134 let startHeight = valueOrErrorMessage(getInteger(votingAddr, kStartHeight), "Empty kStartHeight at voting contract")
135135
136136 let periodLength = valueOrErrorMessage(getInteger(votingAddr, kPeriodLength), "Empty kPeriodLength at voting contract")
137137
138138 let firstActiveVote = valueOrElse(getString(votingNewPoolAddr, activeVoteFirst), "")
139139
140140 let secondActiveVote = valueOrElse(getString(votingNewPoolAddr, activeVoteSecond), "")
141141
142142 let thirdActiveVote = valueOrElse(getString(votingNewPoolAddr, activeVoteThird), "")
143143
144144 let active = valueOrElse(getBoolean(this, kActive), true)
145145
146146 let airdropFee = getIntegerValue(oracle, kAirdropFee)
147147
148148 let currVotingPeriod = (basePeriod + ((height - startHeight) / periodLength))
149149
150150 func suspend (cause) = [BooleanEntry(kActive, false), StringEntry(kCause, cause)]
151151
152152
153153 func isActive () = if (active)
154154 then unit
155155 else throw("DApp is inactive at this moment")
156156
157157
158158 func isAdminCall (i) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
159159 then unit
160160 else throw("Only admin can call this function")
161161
162162
163163 func getLastInterestInfo () = valueOrElse(getInteger(this, kLastInterest), 0)
164164
165165
166166 func getTotalLockedInfo () = {
167167 let totalSwopLocked = valueOrElse(getInteger(this, kTotalSWOPLocked), 0)
168168 let totalGSwopLocked = valueOrElse(getInteger(this, kTotalGSwopLocked), totalSwopLocked)
169169 $Tuple2(totalSwopLocked, totalGSwopLocked)
170170 }
171171
172172
173173 func getUserLockedInfo (user) = {
174174 let userSwopLocked = valueOrElse(getInteger(this, (user + kUserSWOPLocked)), 0)
175175 let userGSwopLocked = valueOrElse(getInteger(this, (user + kUserGSwopLocked)), userSwopLocked)
176176 $Tuple2(userSwopLocked, userGSwopLocked)
177177 }
178178
179179
180180 func getUserInterestInfo (user,lastInterest) = {
181181 let $t048874950 = getUserLockedInfo(user)
182182 let userSWOPAmount = $t048874950._1
183183 let userGSwopAmount = $t048874950._2
184184 let userLastInterest = valueOrElse(getInteger(this, (user + kUserLastInterest)), lastInterest)
185185 $Tuple3(userLastInterest, userSWOPAmount, userGSwopAmount)
186186 }
187187
188188
189189 func getUserAvailableForClaim (user) = valueOrElse(getInteger(this, (user + kUserAvailableForClaim)), 0)
190190
191191
192192 func getUserTotalVoteAmountForOnePool (pool,user) = {
193193 let voting = valueOrElse(getInteger(votingNewPoolAddr, pool), -1)
194194 let heightOfVoting = valueOrElse(getInteger(votingNewPoolAddr, (toString(voting) + kHeightOfPoolVotingForNewPool)), 0)
195195 let statusOfVoting = valueOrElse(getBoolean(votingNewPoolAddr, (toString(voting) + kStatusOfVotingForNewPool)), true)
196196 let currentHeight = height
197197 if ((0 > voting))
198198 then 0
199199 else if (!(statusOfVoting))
200200 then 0
201201 else if ((heightOfVoting > currentHeight))
202202 then (valueOrElse(getInteger(votingNewPoolAddr, (((toString(user) + "_") + toString(voting)) + kYesVotingForNewPool)), 0) + valueOrElse(getInteger(votingNewPoolAddr, (((toString(user) + "_") + toString(voting)) + kNoVotingForNewPool)), 0))
203203 else 0
204204 }
205205
206206
207207 func getUserTotalVoteForNewPoolAmount (user) = {
208208 let listOfVoting = [getUserTotalVoteAmountForOnePool(firstActiveVote, user), getUserTotalVoteAmountForOnePool(secondActiveVote, user), getUserTotalVoteAmountForOnePool(thirdActiveVote, user)]
209209 max(listOfVoting)
210210 }
211211
212212
213213 func getUserBlockedInLauchpad (user) = {
214214 let lauchpadId = toString(valueOrElse(getInteger(launchpadAddr, kLaunchpadActiveId), 0))
215215 if ((lauchpadId == "0"))
216216 then 0
217217 else {
218218 let lStartHeight = valueOrElse(getInteger(launchpadAddr, (lauchpadId + kLaunchpadStartHeight)), 0)
219219 let lDuration = valueOrElse(getInteger(launchpadAddr, (lauchpadId + kLaunchpadDuration)), 0)
220220 let lFreezeSwopDuration = valueOrElse(getInteger(launchpadAddr, (lauchpadId + kLauchpadFreezSwopDuration)), 0)
221221 let blockEndHeight = ((lStartHeight + lDuration) + lFreezeSwopDuration)
222222 if ((height > blockEndHeight))
223223 then 0
224224 else {
225225 let boughtTickets = valueOrElse(getInteger(launchpadAddr, (((toString(user) + "_") + lauchpadId) + kLaunchpadBoughtTickets)), 0)
226226 let swopPerTicket = valueOrElse(getInteger(launchpadAddr, (lauchpadId + kLaunchpadSwopPerTickets)), 0)
227227 (boughtTickets * swopPerTicket)
228228 }
229229 }
230230 }
231231
232232
233233 func getUserVoteInfo (user) = {
234234 let $t073147847 = if (isDefined(getString(votingAddr, (toString(user) + kUserTotalStruc))))
235235 then {
236236 let data = split(valueOrErrorMessage(getString(votingAddr, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
237237 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
238238 }
239239 else {
240240 let uPoolTotalSWOP = valueOrElse(getInteger(votingAddr, (toString(user) + kUserTotalVoteSWOP)), 0)
241241 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
242242 }
243243 let userTotalVoteSWOP = $t073147847._1
244244 let userUnvoted = $t073147847._2
245245 let userUnvotedPeriod = $t073147847._3
246246 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
247247 then userUnvoted
248248 else 0
249249 $Tuple2(userTotalVoteSWOP, userUnvotedActual)
250250 }
251251
252252
253253 func getPoolUpdateHeight (pool) = valueOrElse(getInteger(this, (pool + kHeightPoolFraction)), 0)
254254
255255
256256 func isDefinePoolUpdateHeight (pool) = isDefined(getInteger(this, (pool + kHeightPoolFraction)))
257257
258258
259259 func getCurPoolWeight (pool) = valueOrElse(getInteger(this, (pool + kRewardPoolFractionCurrent)), 0)
260260
261261
262262 func getPrevPoolWeight (pool) = valueOrElse(getInteger(this, (pool + kRewardPoolFractionPrevious)), 0)
263263
264264
265265 func claimCalc (user) = {
266266 let lastInterest = getLastInterestInfo()
267267 let $t087218818 = getUserInterestInfo(user, lastInterest)
268268 let userLastInterest = $t087218818._1
269269 let userSWOPLocked = $t087218818._2
270270 let userGSwopAmount = $t087218818._3
271271 let claimAmount = fraction(userGSwopAmount, (lastInterest - userLastInterest), scaleValue)
272272 let userNewInterest = lastInterest
273273 $Tuple2(userNewInterest, claimAmount)
274274 }
275275
276276
277277 @Callable(i)
278278 func airDrop () = valueOrElse(isActive(), {
279279 let $t090489123 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
280280 let pmtAmount = $t090489123._1
281281 let pmtAssetId = $t090489123._2
282282 if ((pmtAssetId != SWOP))
283283 then throw("Incorrect pmtAssetId")
284284 else {
285285 let airdropFeeAmount = fraction(pmtAmount, airdropFee, feeSacle6, CEILING)
286286 let $t092969358 = getTotalLockedInfo()
287287 let totalSWOPLocked = $t092969358._1
288288 let totalGSwopLocked = $t092969358._2
289289 let lastInterest = getLastInterestInfo()
290290 let interestNew = (lastInterest + fraction((pmtAmount - airdropFeeAmount), scaleValue, totalGSwopLocked))
291291 [IntegerEntry(kLastInterest, interestNew), ScriptTransfer(airdropMoneyBoxAddr, airdropFeeAmount, SWOP)]
292292 }
293293 })
294294
295295
296296
297297 @Callable(i)
298298 func lockSWOP () = valueOrElse(isActive(), {
299299 let $t097369811 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
300300 let pmtAmount = $t097369811._1
301301 let pmtAssetId = $t097369811._2
302302 if ((pmtAssetId != SWOP))
303303 then throw("Incorrect pmtAssetId")
304304 else {
305305 let user = toString(i.caller)
306306 let lastInterest = getLastInterestInfo()
307307 let $t0996210025 = getUserLockedInfo(user)
308308 let userSWOPLocked = $t0996210025._1
309309 let userGSwopLocked = $t0996210025._2
310310 let $t01003010091 = claimCalc(user)
311311 let userNewInterest = $t01003010091._1
312312 let claimAmountAvailable = $t01003010091._2
313313 let availableForClaim = getUserAvailableForClaim(user)
314314 let availableForClaimNew = (availableForClaim + claimAmountAvailable)
315315 let userSWOPLockedNew = (userSWOPLocked + pmtAmount)
316316 let userGSwopLockedNew = (userGSwopLocked + pmtAmount)
317317 let $t01033910401 = getTotalLockedInfo()
318318 let totalSWOPLocked = $t01033910401._1
319319 let totalGSwopLocked = $t01033910401._2
320320 let totalSWOPLockedNew = (totalSWOPLocked + pmtAmount)
321321 let totalGSwopLockedNew = (totalGSwopLocked + pmtAmount)
322-[IntegerEntry((user + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((user + kUserGSwopLocked), userGSwopLocked), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew)]
322+[IntegerEntry((user + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((user + kUserGSwopLocked), userGSwopLockedNew), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew)]
323323 }
324324 })
325325
326326
327327
328328 @Callable(i)
329329 func withdrawSWOP (withdrawAmount) = valueOrElse(isActive(), {
330330 let user = toString(i.caller)
331331 let unlockHeight = valueOrElse(getInteger(this, (user + kUserSwopUnlockHeight)), 0)
332332 if ((0 >= withdrawAmount))
333333 then throw("withdrawAmount <= 0")
334334 else if ((unlockHeight > height))
335335 then throw(("You can't withdraw till " + toString(unlockHeight)))
336336 else {
337- let $t01137611438 = getTotalLockedInfo()
338- let totalSWOPLocked = $t01137611438._1
339- let totalGSwopLocked = $t01137611438._2
340- let $t01144311506 = getUserLockedInfo(user)
341- let userSWOPLocked = $t01144311506._1
342- let userGSwopLocked = $t01144311506._2
343- let $t01151111572 = claimCalc(user)
344- let userNewInterest = $t01151111572._1
345- let claimAmountAvailable = $t01151111572._2
346- let $t01157711643 = getUserVoteInfo(i.caller)
347- let userVoteAmount = $t01157711643._1
348- let userUnvoteAmount = $t01157711643._2
337+ let $t01137911441 = getTotalLockedInfo()
338+ let totalSWOPLocked = $t01137911441._1
339+ let totalGSwopLocked = $t01137911441._2
340+ let $t01144611509 = getUserLockedInfo(user)
341+ let userSWOPLocked = $t01144611509._1
342+ let userGSwopLocked = $t01144611509._2
343+ let $t01151411575 = claimCalc(user)
344+ let userNewInterest = $t01151411575._1
345+ let claimAmountAvailable = $t01151411575._2
346+ let $t01158011646 = getUserVoteInfo(i.caller)
347+ let userVoteAmount = $t01158011646._1
348+ let userUnvoteAmount = $t01158011646._2
349349 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
350350 let blockedInLaunchpad = getUserBlockedInLauchpad(i.caller)
351351 if (if (if ((0 > userUnvoteAmount))
352352 then true
353353 else (0 > userVoteAmount))
354354 then true
355355 else (0 > userVoteAmountForNewPool))
356356 then throw("userUnvoteAmount < 0 || userVoteAmount < 0 || userVoteAmountForNewPool < 0")
357357 else {
358358 let availableToUnstake = (userSWOPLocked - max([userVoteAmountForNewPool, (userVoteAmount + userUnvoteAmount), blockedInLaunchpad]))
359359 if ((withdrawAmount > availableToUnstake))
360360 then throw("withdrawAmount > availableToUnstake")
361361 else {
362362 let availableForClaim = getUserAvailableForClaim(user)
363363 let availableForClaimNew = (availableForClaim + claimAmountAvailable)
364364 let totalSWOPLockedNew = (totalSWOPLocked - withdrawAmount)
365365 let userSWOPAmountNew = (userSWOPLocked - withdrawAmount)
366366 let totalGSwopLockedNew = ((totalGSwopLocked - userGSwopLocked) + userSWOPAmountNew)
367367 [IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPAmountNew), IntegerEntry((user + kUserGSwopLocked), userSWOPAmountNew), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew), ScriptTransfer(i.caller, withdrawAmount, SWOP)]
368368 }
369369 }
370370 }
371371 })
372372
373373
374374
375375 @Callable(i)
376376 func claimAndWithdrawSWOP () = valueOrElse(isActive(), {
377377 let user = toString(i.caller)
378378 let availableForClaim = getUserAvailableForClaim(user)
379- let $t01316213214 = claimCalc(user)
380- let userNewInterest = $t01316213214._1
381- let claimAmount = $t01316213214._2
379+ let $t01316513217 = claimCalc(user)
380+ let userNewInterest = $t01316513217._1
381+ let claimAmount = $t01316513217._2
382382 let userClaimAmount = (availableForClaim + claimAmount)
383383 if ((userClaimAmount == 0))
384384 then throw("You have 0 available SWOP")
385385 else [IntegerEntry((user + kUserLastInterest), userNewInterest), ScriptTransfer(i.caller, userClaimAmount, SWOP)]
386386 })
387387
388388
389389
390390 @Callable(i)
391391 func claimAndStakeSWOP () = valueOrElse(isActive(), {
392392 let user = toString(i.caller)
393- let $t01358713649 = getTotalLockedInfo()
394- let totalSWOPLocked = $t01358713649._1
395- let totalGSwopLocked = $t01358713649._2
396- let $t01365413717 = getUserLockedInfo(user)
397- let userSWOPLocked = $t01365413717._1
398- let userGSwopLocked = $t01365413717._2
393+ let $t01359013652 = getTotalLockedInfo()
394+ let totalSWOPLocked = $t01359013652._1
395+ let totalGSwopLocked = $t01359013652._2
396+ let $t01365713720 = getUserLockedInfo(user)
397+ let userSWOPLocked = $t01365713720._1
398+ let userGSwopLocked = $t01365713720._2
399399 let availableForClaim = getUserAvailableForClaim(user)
400- let $t01378113832 = claimCalc(user)
401- let userNewInterest = $t01378113832._1
402- let claimAmount = $t01378113832._2
400+ let $t01378413835 = claimCalc(user)
401+ let userNewInterest = $t01378413835._1
402+ let claimAmount = $t01378413835._2
403403 let userClaimAmount = (availableForClaim + claimAmount)
404404 let userSWOPLockedNew = (userSWOPLocked + userClaimAmount)
405405 let userGSwopLockedNew = (userGSwopLocked + (userClaimAmount * 2))
406406 let totalSWOPLockedNew = (totalSWOPLocked + userClaimAmount)
407407 let totalGSwopLockedNew = (totalGSwopLocked + (userClaimAmount * 2))
408408 if ((userClaimAmount == 0))
409409 then throw("You have 0 available SWOP")
410410 else [IntegerEntry((toString(i.caller) + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((toString(i.caller) + kUserLastInterest), userNewInterest), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew), IntegerEntry((toString(i.caller) + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((toString(i.caller) + kUserGSwopLocked), userGSwopLockedNew)]
411411 })
412412
413413
414414
415415 @Callable(i)
416416 func lockSWOPFromFarming () = valueOrElse(isActive(), {
417- let $t01477214847 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
418- let pmtAmount = $t01477214847._1
419- let pmtAssetId = $t01477214847._2
417+ let $t01477514850 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
418+ let pmtAmount = $t01477514850._1
419+ let pmtAssetId = $t01477514850._2
420420 if ((i.caller != farmingAddr))
421421 then throw("Only farming can call this function")
422422 else if ((pmtAssetId != SWOP))
423423 then throw("Incorrect pmtAssetId")
424424 else {
425425 let user = toString(i.originCaller)
426426 let lastInterest = getLastInterestInfo()
427- let $t01509015153 = getUserLockedInfo(user)
428- let userSWOPLocked = $t01509015153._1
429- let userGSwopLocked = $t01509015153._2
430- let $t01515815219 = claimCalc(user)
431- let userNewInterest = $t01515815219._1
432- let claimAmountAvailable = $t01515815219._2
427+ let $t01509315156 = getUserLockedInfo(user)
428+ let userSWOPLocked = $t01509315156._1
429+ let userGSwopLocked = $t01509315156._2
430+ let $t01516115222 = claimCalc(user)
431+ let userNewInterest = $t01516115222._1
432+ let claimAmountAvailable = $t01516115222._2
433433 let availableForClaim = getUserAvailableForClaim(user)
434434 let availableForClaimNew = (availableForClaim + claimAmountAvailable)
435435 let userSWOPLockedNew = (userSWOPLocked + pmtAmount)
436436 let userGSwopLockedNew = (userGSwopLocked + (pmtAmount * 2))
437- let $t01547115533 = getTotalLockedInfo()
438- let totalSWOPLocked = $t01547115533._1
439- let totalGSwopLocked = $t01547115533._2
437+ let $t01547415536 = getTotalLockedInfo()
438+ let totalSWOPLocked = $t01547415536._1
439+ let totalGSwopLocked = $t01547415536._2
440440 let totalSWOPLockedNew = (totalSWOPLocked + pmtAmount)
441441 let totalGSwopLockedNew = (totalGSwopLocked + (pmtAmount * 2))
442442 [IntegerEntry((user + kUserSwopUnlockHeight), (height + lockSwopBlocksAmount)), IntegerEntry((user + kUserLastInterest), userNewInterest), IntegerEntry((user + kUserSWOPLocked), userSWOPLockedNew), IntegerEntry((user + kUserGSwopLocked), userGSwopLocked), IntegerEntry((user + kUserAvailableForClaim), availableForClaimNew), IntegerEntry(kTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry(kTotalGSwopLocked, totalGSwopLockedNew)]
443443 }
444444 })
445445
446446
447447
448448 @Callable(i)
449449 func updateWeights (currentPools,currentRewards,rewardUpdateHeight,pagination) = valueOrElse(isActive(), {
450450 let amountPools = 10
451451 let totalRewardUpdateHeight = valueOrElse(getInteger(this, kRewardUpdateHeight), 0)
452452 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, moneyBoxPubKey], i.callerPublicKey)))
453453 then throw("Only admin can call this function")
454454 else if ((size(currentPools) > amountPools))
455455 then throw(("Max amount of pool is " + toString(amountPools)))
456456 else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
457457 then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
458458 else if ((height >= rewardUpdateHeight))
459459 then throw("height >= rewardUpdateHeight")
460460 else if ((0 >= rewardUpdateHeight))
461461 then throw("0 >= rewardUpdateHeight ")
462462 else {
463463 func sum (a,b) = (a + b)
464464
465465 func changePreviousRewardEntry (accumulated,pool) = {
466466 let poolRewardUpdateHeight = getPoolUpdateHeight(pool)
467467 if (if (!(isDefinePoolUpdateHeight(pool)))
468468 then true
469469 else if ((rewardUpdateHeight != poolRewardUpdateHeight))
470470 then (poolRewardUpdateHeight == totalRewardUpdateHeight)
471471 else false)
472472 then {
473473 let poolReward = getCurPoolWeight(pool)
474474 IntegerEntry((pool + kRewardPoolFractionPrevious), poolReward) :: accumulated
475475 }
476476 else {
477477 let poolReward = getPrevPoolWeight(pool)
478478 IntegerEntry((pool + kRewardPoolFractionPrevious), poolReward) :: accumulated
479479 }
480480 }
481481
482482 func changeCurrentRewardEntry (accumulated,pool) = {
483483 let poolIndex = value(indexOf(currentPools, pool))
484484 let poolReward = currentRewards[poolIndex]
485485 if ((0 > poolReward))
486486 then throw("PoolReward < 0")
487487 else IntegerEntry((pool + kRewardPoolFractionCurrent), poolReward) :: accumulated
488488 }
489489
490490 func changeHeightEntry (accumulated,pool) = {
491491 let poolHeight = rewardUpdateHeight
492492 let upUIntr = invoke(farmingAddr, "updatePoolInterest", [pool], nil)
493493 if ((upUIntr == upUIntr))
494494 then IntegerEntry((pool + kHeightPoolFraction), poolHeight) :: accumulated
495495 else throw("Strict value is not equal to itself.")
496496 }
497497
498498 func getSumReward (curTempSum,pagination) = if ((pagination == 0))
499499 then if ((curTempSum > totalVoteShare))
500500 then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(curTempSum)))
501501 else $Tuple2([IntegerEntry(kTempCurSum, curTempSum)], [IntegerEntry(kRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
502502 else if ((pagination == 1))
503503 then {
504504 let curTempSumFromKey = valueOrElse(getInteger(this, kTempCurSum), 0)
505505 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, kRewardUpdateFirstPaginationHeight), 0)
506506 if (((curTempSum + curTempSumFromKey) > totalVoteShare))
507507 then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((curTempSum + curTempSumFromKey))))
508508 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
509509 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
510510 else $Tuple2([IntegerEntry(kTempCurSum, (curTempSum + curTempSumFromKey))], nil)
511511 }
512512 else if ((pagination == 2))
513513 then {
514514 let curSum = (valueOrElse(getInteger(this, kTempCurSum), 0) + curTempSum)
515515 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, kRewardUpdateFirstPaginationHeight), 0)
516516 if ((curSum != totalVoteShare))
517517 then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
518518 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
519519 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
520520 else $Tuple2([IntegerEntry(kTempCurSum, curSum)], nil)
521521 }
522522 else throw("Incorrect pagination")
523523
524524 let previousRewardEntryNew = {
525525 let $l = currentPools
526526 let $s = size($l)
527527 let $acc0 = nil
528528 func $f0_1 ($a,$i) = if (($i >= $s))
529529 then $a
530530 else changePreviousRewardEntry($a, $l[$i])
531531
532532 func $f0_2 ($a,$i) = if (($i >= $s))
533533 then $a
534534 else throw("List size exceeds 10")
535535
536536 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
537537 }
538538 let currentRewardEntryNew = {
539539 let $l = currentPools
540540 let $s = size($l)
541541 let $acc0 = nil
542542 func $f1_1 ($a,$i) = if (($i >= $s))
543543 then $a
544544 else changeCurrentRewardEntry($a, $l[$i])
545545
546546 func $f1_2 ($a,$i) = if (($i >= $s))
547547 then $a
548548 else throw("List size exceeds 10")
549549
550550 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
551551 }
552552 let heightEntryNewCur = {
553553 let $l = currentPools
554554 let $s = size($l)
555555 let $acc0 = nil
556556 func $f2_1 ($a,$i) = if (($i >= $s))
557557 then $a
558558 else changeHeightEntry($a, $l[$i])
559559
560560 func $f2_2 ($a,$i) = if (($i >= $s))
561561 then $a
562562 else throw("List size exceeds 10")
563563
564564 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
565565 }
566566 let sumRewardCurrentTemp = {
567567 let $l = currentRewards
568568 let $s = size($l)
569569 let $acc0 = 0
570570 func $f3_1 ($a,$i) = if (($i >= $s))
571571 then $a
572572 else sum($a, $l[$i])
573573
574574 func $f3_2 ($a,$i) = if (($i >= $s))
575575 then $a
576576 else throw("List size exceeds 10")
577577
578578 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
579579 }
580- let $t02055420665 = getSumReward(sumRewardCurrentTemp, pagination)
581- let sumRewardCurrent = $t02055420665._1
582- let rewardUpdateHeightFirstPaginationEntry = $t02055420665._2
580+ let $t02055720668 = getSumReward(sumRewardCurrentTemp, pagination)
581+ let sumRewardCurrent = $t02055720668._1
582+ let rewardUpdateHeightFirstPaginationEntry = $t02055720668._2
583583 let rewardUpdateHeightEntry = if ((pagination == 2))
584584 then [IntegerEntry(kRewardUpdateHeight, rewardUpdateHeight)]
585585 else nil
586586 if ((height > rewardUpdateHeight))
587587 then throw("rewardUpdateHeight < height")
588588 else (((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNewCur) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
589589 }
590590 })
591591
592592
593593
594594 @Callable(i)
595595 func shutdown () = valueOrElse(isAdminCall(i), if (!(active))
596596 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, kCause), "the cause wasn't specified")))
597597 else suspend("Paused by admin"))
598598
599599
600600
601601 @Callable(i)
602602 func activate () = valueOrElse(isAdminCall(i), if (active)
603603 then throw("DApp is already active")
604604 else [BooleanEntry(kActive, true), DeleteEntry(kCause)])
605605
606606
607607 @Verifier(tx)
608608 func verify () = {
609609 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
610610 then 1
611611 else 0
612612 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
613613 then 1
614614 else 0
615615 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
616616 then 1
617617 else 0
618618 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
619619 }
620620

github/deemru/w8io/026f985 
74.63 ms