tx · EiHCAaxTjB73SEdWZBywpa2DFyKjfrww8Jrabs2bYLz5

3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU:  -0.01400000 Waves

2021.07.22 18:44 [1625042] smart account 3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU > SELF 0.00000000 Waves

{ "type": 13, "id": "EiHCAaxTjB73SEdWZBywpa2DFyKjfrww8Jrabs2bYLz5", "fee": 1400000, "feeAssetId": null, "timestamp": 1626968672535, "version": 2, "chainId": 84, "sender": "3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU", "senderPublicKey": "AWADFmQjf2WbDSqb24S9YZpix3VEdiBdeiJ2J2sSfQ49", "proofs": [ "4pS5KdwBVrMAxr1wMkF6D9NEprB9TTBuqfHH9vApVYuupiGQkHfwZLfcC5DSG7Kem5T5Eog9CGREuex9TvdSSTd4", "HjoNTFLQ219EUrHbHSDYtvgDzE4vtpJM8MwJRYTCsuX5QfH67vASuuKQbVtfNv15XZ3zR8SANte4WkXLr5h9s7j", "55w6NBcbQTPYDzDSnqkAZzCg3hX5oscVzZTyUowTex1yaVQxx7PvijL1qhK9ve3sQyk3CtxSTzDJV8VCYVzSWL68" ], "script": "base64:AAIFAAAAAAAAABsIAhIAEgASAwoBARIAEgASBgoEGBEBARIAEgAAAABTAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAEWFkbWluUHViS2V5V2FsbGV0AQAAACA+d1plWlbJ/ClXM7W8DUUtysyn+IWSDjd3WPNiFVIUEgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5TGFzdEludGVyZXN0AgAAAA1sYXN0X2ludGVyZXN0AAAAABNrZXlVc2VyTGFzdEludGVyZXN0AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAARa2V5VXNlclNXT1BMb2NrZWQCAAAADF9TV09QX2Ftb3VudAAAAAAUa2V5VXNlckdldEJhY2tIZWlnaHQCAAAADl9nZXRCYWNrSGVpZ2h0AAAAABJrZXlUb3RhbFNXT1BMb2NrZWQCAAAAEXRvdGFsX1NXT1BfYW1vdW50AAAAABJrVXNlclRvdGFsVm90ZVNXT1ACAAAAFV91c2VyX3RvdGFsX1NXT1Bfdm90ZQAAAAAXa2V5VXNlclZvdGVPcHRpb25BbW91bnQCAAAAE19TV09QX29wdGlvbl9hbW91bnQAAAAAGGtleVRvdGFsVm90ZU9wdGlvbkFtb3VudAIAAAAYdG90YWxfU1dPUF9vcHRpb25fYW1vdW50AAAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQCAAAAFF9TV09QX2NsYWltZWRfYW1vdW50AAAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50AgAAABlfU1dPUF9sYXN0X2NsYWltZWRfYW1vdW50AAAAAAtrZXlWb3RlTmFtZQIAAAAJdm90ZV9uYW1lAAAAAA1rZXlPcHRpb25OYW1lAgAAAAxfb3B0aW9uX25hbWUAAAAAFGtleVZvdGluZ1N0YXJ0SGVpZ2h0AgAAAAxfc3RhcnRIZWlnaHQAAAAAD2tleVZvdGVEdXJhdGlvbgIAAAAOX3ZvdGVfZHVyYXRpb24AAAAAHGtleVJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCAAAAHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkAAAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIAAAAeX3ByZXZpb3VzX3Bvb2xfZnJhY3Rpb25fcmV3YXJkAAAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24CAAAAGl9wb29sX3Jld2FyZF91cGRhdGVfaGVpZ2h0AAAAAB1rZXlUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAIAAAAedG90YWxfcmV3YXJkX3Blcl9ibG9ja19jdXJyZW50AAAAAB5rZXlUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMCAAAAH3RvdGFsX3Jld2FyZF9wZXJfYmxvY2tfcHJldmlvdXMAAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAIAAAAUcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAIAAAAlcmV3YXJkX3VwZGF0ZV9oZWlnaHRfZmlyc3RfcGFnaW5hdGlvbgAAAAAVa2V5Tm9Wb3RpbmdGb3JOZXdQb29sAgAAAAhfdm90ZV9ubwAAAAAWa2V5WWVzVm90aW5nRm9yTmV3UG9vbAIAAAAJX3ZvdGVfeWVzAAAAABtrZXlBbW91bnRPZlZvdGluZ0Zvck5ld1Bvb2wCAAAAEW1heF9hbW91bnRfdm90aW5nAAAAABtrZXlTdGF0dXNPZlZvdGluZ0Zvck5ld1Bvb2wCAAAAB19zdGF0dXMAAAAAH2tleUhlaWdodE9mUG9vbFZvdGluZ0Zvck5ld1Bvb2wCAAAADl9maW5pc2hfaGVpZ2h0AAAAAA9hY3RpdmVWb3RlRmlyc3QCAAAAFHZvdGluZ19hY3RpdmVfY2VsbF8xAAAAABBhY3RpdmVWb3RlU2Vjb25kAgAAABR2b3RpbmdfYWN0aXZlX2NlbGxfMgAAAAAPYWN0aXZlVm90ZVRoaXJkAgAAABR2b3RpbmdfYWN0aXZlX2NlbGxfMwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAAAZvcmFjbGUJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTpRaoekC86rvG6DuYumpJfGpiE4fNiswgBAAAAC2dldEFkbWluUHViAAAAAQAAAAtrZXlBZG1pblB1YgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAZvcmFjbGUFAAAAC2tleUFkbWluUHViAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAZzdHJpbmcEAAAAB25vdGhpbmcFAAAAByRtYXRjaDAJAAACAAAAAQIAAAAZQWRtaW4gcHVibGljIGtleSBpcyBlbXB0eQAAAAAMYWRtaW5QdWJLZXkxCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTEAAAAADGFkbWluUHViS2V5MgkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkyAAAAAAxhZG1pblB1YktleTMJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MwAAAAAIaXNBY3RpdmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAJa2V5QWN0aXZlBgAAAAASZmFybWluZ1NXT1BBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFULEuCdkaN7xkyPSmpBMwL+vYh0o63mS9mAAAAABJ2b3RpbmdMaXRlQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQaNn7fV6KdJ2lc/r/3JtTn+6HDaD4gyn8AAAAAEHZvdGluZ0Zvck5ld1Bvb2wJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVR2IeF5Fctzd38/oGN0UKsjLFsZGIPzS4IAAAAACWtleVNXT1BpZAIAAAAHU1dPUF9pZAAAAAAEU1dPUAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAABJmYXJtaW5nU1dPUEFkZHJlc3MFAAAACWtleVNXT1BpZAAAAAAKc2NhbGVWYWx1ZQAAAAAABfXhAAAAAAAOdG90YWxWb3RlU2hhcmUAAAAAAlQL5AAAAAAADGtTdGFydEhlaWdodAIAAAAMc3RhcnRfaGVpZ2h0AAAAAAtrQmFzZVBlcmlvZAIAAAALYmFzZV9wZXJpb2QAAAAADWtQZXJpb2RMZW5ndGgCAAAADXBlcmlvZF9sZW5ndGgAAAAAD2tVc2VyVG90YWxTdHJ1YwIAAAARX3VzZXJfdG90YWxfc3RydWMAAAAACmJhc2VQZXJpb2QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABJ2b3RpbmdMaXRlQ29udHJhY3QFAAAAC2tCYXNlUGVyaW9kAgAAACRFbXB0eSBrQmFzZVBlcmlvZCBhdCB2b3RpbmcgY29udHJhY3QAAAAAC3N0YXJ0SGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0BQAAAAxrU3RhcnRIZWlnaHQCAAAAJUVtcHR5IGtTdGFydEhlaWdodCBhdCB2b3RpbmcgY29udHJhY3QAAAAADHBlcmlvZExlbmd0aAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAUAAAANa1BlcmlvZExlbmd0aAIAAAAmRW1wdHkga1BlcmlvZExlbmd0aCBhdCB2b3RpbmcgY29udHJhY3QAAAAAD2ZpcnN0QWN0aXZlVm90ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAAA9hY3RpdmVWb3RlRmlyc3QCAAAAAAAAAAAQc2Vjb25kQWN0aXZlVm90ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAABBhY3RpdmVWb3RlU2Vjb25kAgAAAAAAAAAAD3RoaXJkQWN0aXZlVm90ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAAA9hY3RpdmVWb3RlVGhpcmQCAAAAAAAAAAAQY3VyclZvdGluZ1BlcmlvZAkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAQAAAAdzdXNwZW5kAAAAAQAAAAVjYXVzZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhrZXlDYXVzZQUAAAAFY2F1c2UFAAAAA25pbAEAAAASdGhyb3dOb3RFbm91Z2hTV09QAAAAAAkAAAIAAAABAgAAAEZOb3QgZW5vdWdoIFNXT1A6IHVzZXJTV09QTG9ja2VkIC0gdXNlclRvdGFsVm90ZUFtb3VudCA8IHZvdGVTV09QQW1vdW50AQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAAMbGFzdEludGVyZXN0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAD2tleUxhc3RJbnRlcmVzdAAAAAAAAAAAAAUAAAAMbGFzdEludGVyZXN0AQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAARa2V5VXNlclNXT1BMb2NrZWQAAAAAAAAAAAABAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAAAAAAAAAQAAABZnZXRVc2VyVG90YWxWb3RlQW1vdW50AAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAEmtVc2VyVG90YWxWb3RlU1dPUAAAAAAAAAAAAAEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIAAAAEdXNlcgAAAAxsYXN0SW50ZXJlc3QEAAAADnVzZXJTV09QQW1vdW50CQEAAAARZ2V0VXNlclNXT1BMb2NrZWQAAAABBQAAAAR1c2VyBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BAAAABV1c2VyTGFzdEludGVyZXN0VmFsdWUEAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAMbGFzdEludGVyZXN0CQAFFAAAAAIFAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQUAAAAOdXNlclNXT1BBbW91bnQBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgAAAARwb29sAAAABHVzZXIEAAAABnZvdGluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sBQAAAARwb29sAP//////////BAAAAA5oZWlnaHRPZlZvdGluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAGkAAAAAQUAAAAGdm90aW5nBQAAAB9rZXlIZWlnaHRPZlBvb2xWb3RpbmdGb3JOZXdQb29sAAAAAAAAAAAABAAAAA5zdGF0dXNPZlZvdGluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAGkAAAAAQUAAAAGdm90aW5nBQAAABtrZXlTdGF0dXNPZlZvdGluZ0Zvck5ld1Bvb2wGBAAAAA1jdXJyZW50SGVpZ2h0BQAAAAZoZWlnaHQDCQAAZgAAAAIAAAAAAAAAAAAFAAAABnZvdGluZwAAAAAAAAAAAAMJAQAAAAEhAAAAAQUAAAAOc3RhdHVzT2ZWb3RpbmcAAAAAAAAAAAADCQAAZgAAAAIFAAAADmhlaWdodE9mVm90aW5nBQAAAA1jdXJyZW50SGVpZ2h0CQAAZAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAQdm90aW5nRm9yTmV3UG9vbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyAgAAAAFfCQABpAAAAAEFAAAABnZvdGluZwUAAAAWa2V5WWVzVm90aW5nRm9yTmV3UG9vbAAAAAAAAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABB2b3RpbmdGb3JOZXdQb29sCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAABHVzZXICAAAAAV8JAAGkAAAAAQUAAAAGdm90aW5nBQAAABVrZXlOb1ZvdGluZ0Zvck5ld1Bvb2wAAAAAAAAAAAAAAAAAAAAAAAABAAAAIGdldFVzZXJUb3RhbFZvdGVGb3JOZXdQb29sQW1vdW50AAAAAQAAAAR1c2VyBAAAAAxsaXN0T2ZWb3RpbmcJAARMAAAAAgkBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgUAAAAPZmlyc3RBY3RpdmVWb3RlBQAAAAR1c2VyCQAETAAAAAIJAQAAACBnZXRVc2VyVG90YWxWb3RlQW1vdW50Rm9yT25lUG9vbAAAAAIFAAAAEHNlY29uZEFjdGl2ZVZvdGUFAAAABHVzZXIJAARMAAAAAgkBAAAAIGdldFVzZXJUb3RhbFZvdGVBbW91bnRGb3JPbmVQb29sAAAAAgUAAAAPdGhpcmRBY3RpdmVWb3RlBQAAAAR1c2VyBQAAAANuaWwJAAGWAAAAAQUAAAAMbGlzdE9mVm90aW5nAQAAABJnZXRUb3RhbFNXT1BMb2NrZWQAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEmtleVRvdGFsU1dPUExvY2tlZAAAAAAAAAAAAAEAAAAPZ2V0VXNlclZvdGVJbmZvAAAAAQAAAAR1c2VyBAAAAAskdDA2MzQ1Njg5NgMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAAEnZvdGluZ0xpdGVDb250cmFjdAkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAD2tVc2VyVG90YWxTdHJ1YwQAAAAEZGF0YQkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAAPa1VzZXJUb3RhbFN0cnVjAgAAABVFbXB0eSBrVXNlclRvdGFsU3RydWMCAAAAAV8JAAUVAAAAAwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAAJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAABCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAgQAAAAOdVBvb2xUb3RhbFNXT1AJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAASdm90aW5nTGl0ZUNvbnRyYWN0CQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAASa1VzZXJUb3RhbFZvdGVTV09QAAAAAAAAAAAACQAFFQAAAAMFAAAADnVQb29sVG90YWxTV09QAAAAAAAAAAAABQAAABBjdXJyVm90aW5nUGVyaW9kBAAAABF1c2VyVG90YWxWb3RlU1dPUAgFAAAACyR0MDYzNDU2ODk2AAAAAl8xBAAAAAt1c2VyVW52b3RlZAgFAAAACyR0MDYzNDU2ODk2AAAAAl8yBAAAABF1c2VyVW52b3RlZFBlcmlvZAgFAAAACyR0MDYzNDU2ODk2AAAAAl8zBAAAABF1c2VyVW52b3RlZEFjdHVhbAMJAAAAAAAAAgUAAAARdXNlclVudm90ZWRQZXJpb2QFAAAAEGN1cnJWb3RpbmdQZXJpb2QFAAAAC3VzZXJVbnZvdGVkAAAAAAAAAAAACQAFFAAAAAIFAAAAEXVzZXJUb3RhbFZvdGVTV09QBQAAABF1c2VyVW52b3RlZEFjdHVhbAEAAAAXZ2V0VXNlclZvdGVPcHRpb25BbW91bnQAAAABAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAF2tleVVzZXJWb3RlT3B0aW9uQW1vdW50AAAAAAAAAAAAAQAAABRnZXRWb3RpbmdTdGFydEhlaWdodAAAAAEAAAAIdm90ZU5hbWUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAh2b3RlTmFtZQUAAAAUa2V5Vm90aW5nU3RhcnRIZWlnaHQAAAAAAAAAAAABAAAAE2dldFBvb2xVcGRhdGVIZWlnaHQAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24AAAAAAAAAAAABAAAAGGlzRGVmaW5lUG9vbFVwZGF0ZUhlaWdodAAAAAEAAAAEcG9vbAkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24BAAAAEGdldEN1clBvb2xXZWlnaHQAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AAAAAAAAAAAAAQAAABFnZXRQcmV2UG9vbFdlaWdodAAAAAEAAAAEcG9vbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAAAAAAAAAAAAAQAAABNnZXRWb3RlT3B0aW9uQW1vdW50AAAAAwAAAAR1c2VyAAAACHZvdGVOYW1lAAAABm9wdGlvbgQAAAAUdXNlclZvdGVPcHRpb25BbW91bnQJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAIdm90ZU5hbWUFAAAABm9wdGlvbgkABCUAAAABBQAAAAR1c2VyBQAAABdrZXlVc2VyVm90ZU9wdGlvbkFtb3VudAQAAAAEdXZvYQQAAAAHJG1hdGNoMAUAAAAUdXNlclZvdGVPcHRpb25BbW91bnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAEdXZvYQUAAAAHJG1hdGNoMAUAAAAEdXZvYQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAEdXZvYQUAAAAHJG1hdGNoMAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAAAR1dm9hCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAAh2b3RlTmFtZQUAAAAGb3B0aW9uCQAEJQAAAAEFAAAABHVzZXIFAAAAF2tleVVzZXJWb3RlT3B0aW9uQW1vdW50AQAAAA9nZXRWb3RlRHVyYXRpb24AAAABAAAACHZvdGVOYW1lCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAh2b3RlTmFtZQUAAAAPa2V5Vm90ZUR1cmF0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAACHZvdGVOYW1lBQAAAA9rZXlWb3RlRHVyYXRpb24BAAAAGGdldFRvdGFsVm90ZU9wdGlvbkFtb3VudAAAAAIAAAAIdm90ZU5hbWUAAAAGb3B0aW9uBAAAABV0b3RhbFZvdGVPcHRpb25BbW91bnQJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIFAAAACHZvdGVOYW1lBQAAAAZvcHRpb24FAAAAGGtleVRvdGFsVm90ZU9wdGlvbkFtb3VudAQAAAAEdHZvYQQAAAAHJG1hdGNoMAUAAAAVdG90YWxWb3RlT3B0aW9uQW1vdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABHR2b2EFAAAAByRtYXRjaDAFAAAABHR2b2EDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABHR2b2EFAAAAByRtYXRjaDAAAAAAAAAAAAAJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IFAAAABHR2b2EBAAAAFGdldFVzZXJHZXRCYWNrQW1vdW50AAAABAAAAAh2b3RlTmFtZQAAAAZvcHRpb24AAAAEdXNlcgAAABFnZXRCYWNrU1dPUEhlaWdodAQAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAh2b3RlTmFtZQIAAAABXwUAAAAGb3B0aW9uAgAAAAFfCQAEJQAAAAEFAAAABHVzZXICAAAAAV8JAAGkAAAAAQUAAAARZ2V0QmFja1NXT1BIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAA2tleQEAAAAJY2xhaW1DYWxjAAAAAQAAAAZjYWxsZXIEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAskdDA5MzAwOTM4MAkBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACBQAAAAZjYWxsZXIFAAAADGxhc3RJbnRlcmVzdAQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAACyR0MDkzMDA5MzgwAAAAAl8xBAAAAA51c2VyU1dPUExvY2tlZAgFAAAACyR0MDkzMDA5MzgwAAAAAl8yBAAAAAtjbGFpbUFtb3VudAkAAGsAAAADBQAAAA51c2VyU1dPUExvY2tlZAkAAGUAAAACBQAAAAxsYXN0SW50ZXJlc3QFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAACnNjYWxlVmFsdWUEAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAMbGFzdEludGVyZXN0CQAFFAAAAAIFAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAALY2xhaW1BbW91bnQAAAAIAAAAAWkBAAAAB2FpckRyb3AAAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50BAAAAAskdDA5NjQ3OTcyMgkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAACyR0MDk2NDc5NzIyAAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAALJHQwOTY0Nzk3MjIAAAACXzIDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAARTV09QCQAAAgAAAAECAAAAFEluY29ycmVjdCBwbXRBc3NldElkBAAAAA90b3RhbFNXT1BMb2NrZWQJAQAAABJnZXRUb3RhbFNXT1BMb2NrZWQAAAAABAAAAAxsYXN0SW50ZXJlc3QJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAALaW50ZXJlc3ROZXcJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAKc2NhbGVWYWx1ZQUAAAAPdG90YWxTV09QTG9ja2VkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlMYXN0SW50ZXJlc3QFAAAAC2ludGVyZXN0TmV3BQAAAANuaWwAAAABaQEAAAAIbG9ja1NXT1AAAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50BAAAAA0kdDAxMDE2MDEwMjM1CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTAxNjAxMDIzNQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDEwMTYwMTAyMzUAAAACXzIDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAARTV09QCQAAAgAAAAECAAAAFEluY29ycmVjdCBwbXRBc3NldElkBAAAAAxsYXN0SW50ZXJlc3QJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAANJHQwMTAzNTExMDQzMwkBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAADGxhc3RJbnRlcmVzdAQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAADSR0MDEwMzUxMTA0MzMAAAACXzEEAAAADnVzZXJTV09QTG9ja2VkCAUAAAANJHQwMTAzNTExMDQzMwAAAAJfMgQAAAALY2xhaW1BbW91bnQJAABrAAAAAwUAAAAOdXNlclNXT1BMb2NrZWQJAABlAAAAAgUAAAAMbGFzdEludGVyZXN0BQAAABB1c2VyTGFzdEludGVyZXN0BQAAAApzY2FsZVZhbHVlBAAAABF1c2VyU1dPUExvY2tlZE5ldwkAAGQAAAACCQAAZAAAAAIFAAAADnVzZXJTV09QTG9ja2VkBQAAAAlwbXRBbW91bnQFAAAAC2NsYWltQW1vdW50BAAAAA91c2VyTmV3SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAASdG90YWxTV09QTG9ja2VkTmV3CQAAZAAAAAIJAABkAAAAAgUAAAAPdG90YWxTV09QTG9ja2VkBQAAAAlwbXRBbW91bnQFAAAAC2NsYWltQW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEWtleVVzZXJTV09QTG9ja2VkBQAAABF1c2VyU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxTV09QTG9ja2VkBQAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50BQAAAANuaWwAAAABaQEAAAAMd2l0aGRyYXdTV09QAAAAAQAAAA53aXRoZHJhd0Ftb3VudAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAABnAAAAAgAAAAAAAAAAAAUAAAAOd2l0aGRyYXdBbW91bnQJAAACAAAAAQIAAAATd2l0aGRyYXdBbW91bnQgPD0gMAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAAOdXNlclNXT1BMb2NrZWQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANJHQwMTE1ODUxMTY0MAkBAAAACWNsYWltQ2FsYwAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMTE1ODUxMTY0MAAAAAJfMQQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAxMTU4NTExNjQwAAAAAl8yBAAAAA0kdDAxMTY0NTExNzEwCQEAAAAPZ2V0VXNlclZvdGVJbmZvAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyVm90ZUFtb3VudAgFAAAADSR0MDExNjQ1MTE3MTAAAAACXzEEAAAAEHVzZXJVbnZvdGVBbW91bnQIBQAAAA0kdDAxMTY0NTExNzEwAAAAAl8yBAAAABh1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wJAQAAACBnZXRVc2VyVG90YWxWb3RlRm9yTmV3UG9vbEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgMDAwkAAGYAAAACAAAAAAAAAAAABQAAABB1c2VyVW52b3RlQW1vdW50BgkAAGYAAAACAAAAAAAAAAAABQAAAA51c2VyVm90ZUFtb3VudAYJAABmAAAAAgAAAAAAAAAAAAUAAAAYdXNlclZvdGVBbW91bnRGb3JOZXdQb29sCQAAAgAAAAECAAAASnVzZXJVbnZvdGVBbW91bnQgPCAwIHx8IHVzZXJWb3RlQW1vdW50IDwgMCB8fCB1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wgPCAwBAAAABJhdmFpbGFibGVUb1Vuc3Rha2UJAABlAAAAAgUAAAAOdXNlclNXT1BMb2NrZWQJAAGWAAAAAQkABEwAAAACBQAAABh1c2VyVm90ZUFtb3VudEZvck5ld1Bvb2wJAARMAAAAAgkAAGQAAAACBQAAAA51c2VyVm90ZUFtb3VudAUAAAAQdXNlclVudm90ZUFtb3VudAUAAAADbmlsAwkAAGYAAAACBQAAAA53aXRoZHJhd0Ftb3VudAUAAAASYXZhaWxhYmxlVG9VbnN0YWtlCQAAAgAAAAECAAAAI3dpdGhkcmF3QW1vdW50ID4gYXZhaWxhYmxlVG9VbnN0YWtlBAAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAABlAAAAAgkAAGQAAAACBQAAAA90b3RhbFNXT1BMb2NrZWQFAAAAC2NsYWltQW1vdW50BQAAAA53aXRoZHJhd0Ftb3VudAQAAAARdXNlclNXT1BhbW91bnROZXcJAABlAAAAAgkAAGQAAAACBQAAAA51c2VyU1dPUExvY2tlZAUAAAALY2xhaW1BbW91bnQFAAAADndpdGhkcmF3QW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEWtleVVzZXJTV09QTG9ja2VkBQAAABF1c2VyU1dPUGFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxTV09QTG9ja2VkBQAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA53aXRoZHJhd0Ftb3VudAUAAAAEU1dPUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQFAAAAA25pbAAAAAFpAQAAABRjbGFpbUFuZFdpdGhkcmF3U1dPUAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAA0kdDAxMzA4NTEzMTQwCQEAAAAJY2xhaW1DYWxjAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA91c2VyTmV3SW50ZXJlc3QIBQAAAA0kdDAxMzA4NTEzMTQwAAAAAl8xBAAAAAtjbGFpbUFtb3VudAgFAAAADSR0MDEzMDg1MTMxNDAAAAACXzIEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQDCQAAAAAAAAIFAAAAC2NsYWltQW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAUAAAAEU1dPUAUAAAADbmlsAAAAAWkBAAAAEWNsYWltQW5kU3Rha2VTV09QAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAAPdG90YWxTV09QTG9ja2VkCQEAAAASZ2V0VG90YWxTV09QTG9ja2VkAAAAAAQAAAAOdXNlclNXT1BMb2NrZWQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAMbGFzdEludGVyZXN0CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAAEAAAADSR0MDEzOTE5MTM5NzQJAQAAAAljbGFpbUNhbGMAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDEzOTE5MTM5NzQAAAACXzEEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTM5MTkxMzk3NAAAAAJfMgQAAAARdXNlclNXT1BMb2NrZWROZXcJAABkAAAAAgUAAAAOdXNlclNXT1BMb2NrZWQFAAAAC2NsYWltQW1vdW50BAAAABJ0b3RhbFNXT1BMb2NrZWROZXcJAABkAAAAAgUAAAAPdG90YWxTV09QTG9ja2VkBQAAAAtjbGFpbUFtb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAAAAAAAAAgUAAAALY2xhaW1BbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlUb3RhbFNXT1BMb2NrZWQFAAAAEnRvdGFsU1dPUExvY2tlZE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAARa2V5VXNlclNXT1BMb2NrZWQFAAAAEXVzZXJTV09QTG9ja2VkTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAUAAAADbmlsAAAAAWkBAAAADXVwZGF0ZVdlaWdodHMAAAAEAAAADGN1cnJlbnRQb29scwAAAA5jdXJyZW50UmV3YXJkcwAAABJyZXdhcmRVcGRhdGVIZWlnaHQAAAAKcGFnaW5hdGlvbgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAALYW1vdW50UG9vbHMAAAAAAAAAAAoEAAAAF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFWtleVJld2FyZFVwZGF0ZUhlaWdodAAAAAAAAAAAAAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAAUYWRtaW5QdWJLZXlTdGFydFN0b3AJAARMAAAAAgUAAAARYWRtaW5QdWJLZXlXYWxsZXQFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgkAAZAAAAABBQAAAAxjdXJyZW50UG9vbHMFAAAAC2Ftb3VudFBvb2xzCQAAAgAAAAEJAAEsAAAAAgIAAAAWTWF4IGFtb3VudCBvZiBwb29sIGlzIAkAAaQAAAABBQAAAAthbW91bnRQb29scwMJAABnAAAAAgUAAAAXdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAAC1yZXdhcmRVcGRhdGVIZWlnaHQgPD0gdG90YWxSZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAHGhlaWdodCA+PSByZXdhcmRVcGRhdGVIZWlnaHQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIAAAABAgAAABgwID49IHJld2FyZFVwZGF0ZUhlaWdodCAKAQAAAANzdW0AAAACAAAAAWEAAAABYgkAAGQAAAACBQAAAAFhBQAAAAFiCgEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIAAAALYWNjdW11bGF0ZWQAAAAEcG9vbAQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkBAAAAE2dldFBvb2xVcGRhdGVIZWlnaHQAAAABBQAAAARwb29sAwMJAQAAAAEhAAAAAQkBAAAAGGlzRGVmaW5lUG9vbFVwZGF0ZUhlaWdodAAAAAEFAAAABHBvb2wGAwkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQAAAAAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFAAAAF3RvdGFsUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAKcG9vbFJld2FyZAkBAAAAEGdldEN1clBvb2xXZWlnaHQAAAABBQAAAARwb29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAQAAAAKcG9vbFJld2FyZAkBAAAAEWdldFByZXZQb29sV2VpZ2h0AAAAAQUAAAAEcG9vbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwUAAAAKcG9vbFJld2FyZAUAAAALYWNjdW11bGF0ZWQKAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACAAAAC2FjY3VtdWxhdGVkAAAABHBvb2wEAAAACXBvb2xJbmRleAkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAxjdXJyZW50UG9vbHMFAAAABHBvb2wEAAAACnBvb2xSZXdhcmQJAAGRAAAAAgUAAAAOY3VycmVudFJld2FyZHMFAAAACXBvb2xJbmRleAMJAABmAAAAAgAAAAAAAAAAAAUAAAAKcG9vbFJld2FyZAkAAAIAAAABAgAAAA5Qb29sUmV3YXJkIDwgMAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQAAAApwb29sUmV3YXJkBQAAAAthY2N1bXVsYXRlZAoBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgAAAAthY2N1bXVsYXRlZAAAAARwb29sBAAAAApwb29sSGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uBQAAAApwb29sSGVpZ2h0BQAAAAthY2N1bXVsYXRlZAoBAAAADGdldFN1bVJld2FyZAAAAAIAAAAKY3VyVGVtcFN1bQAAAApwYWdpbmF0aW9uAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAAAAwkAAGYAAAACBQAAAApjdXJUZW1wU3VtBQAAAA50b3RhbFZvdGVTaGFyZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAEpzdW1SZXdhcmRQcmV2aW91cyA+IHRvdGFsVm90ZVNoYXJlIG9yIHN1bVJld2FyZEN1cnJlbnQgPiB0b3RhbFZvdGVTaGFyZSAtIAkAAaQAAAABBQAAAApwYWdpbmF0aW9uAgAAAAEgCQABpAAAAAEFAAAACmN1clRlbXBTdW0JAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQUAAAAKY3VyVGVtcFN1bQUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACRrZXlSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAADbmlsAwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAABBAAAABFjdXJUZW1wU3VtRnJvbUtleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA1rZXlUZW1wQ3VyU3VtAAAAAAAAAAAABAAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAACRrZXlSZXdhcmRVcGRhdGVGaXJzdFBhZ2luYXRpb25IZWlnaHQAAAAAAAAAAAADCQAAZgAAAAIJAABkAAAAAgUAAAAKY3VyVGVtcFN1bQUAAAARY3VyVGVtcFN1bUZyb21LZXkFAAAADnRvdGFsVm90ZVNoYXJlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAASnN1bVJld2FyZFByZXZpb3VzID4gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCA+IHRvdGFsVm90ZVNoYXJlIC0gCQABpAAAAAEFAAAACnBhZ2luYXRpb24CAAAAASAJAAGkAAAAAQkAAGQAAAACBQAAAApjdXJUZW1wU3VtBQAAABFjdXJUZW1wU3VtRnJvbUtleQMJAQAAAAIhPQAAAAIFAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAACAAAAAQIAAABEY3VycmVudCByZXdhcmRVcGRhdGVIZWlnaHQgIT0gcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQkAAGQAAAACBQAAAApjdXJUZW1wU3VtBQAAABFjdXJUZW1wU3VtRnJvbUtleQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACnBhZ2luYXRpb24AAAAAAAAAAAIEAAAABmN1clN1bQkAAGQAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADWtleVRlbXBDdXJTdW0AAAAAAAAAAAAFAAAACmN1clRlbXBTdW0EAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAJGtleVJld2FyZFVwZGF0ZUZpcnN0UGFnaW5hdGlvbkhlaWdodAAAAAAAAAAAAAMJAQAAAAIhPQAAAAIFAAAABmN1clN1bQUAAAAOdG90YWxWb3RlU2hhcmUJAAACAAAAAQIAAABJc3VtUmV3YXJkUHJldmlvdXMgIT0gdG90YWxWb3RlU2hhcmUgb3Igc3VtUmV3YXJkQ3VycmVudCAhPSB0b3RhbFZvdGVTaGFyZQMJAQAAAAIhPQAAAAIFAAAAJnJld2FyZFVwZGF0ZUhlaWdodEZpcnN0UGFnaW5hdGlvbkVudHJ5BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAACAAAAAQIAAABEY3VycmVudCByZXdhcmRVcGRhdGVIZWlnaHQgIT0gcmV3YXJkVXBkYXRlSGVpZ2h0Rmlyc3RQYWdpbmF0aW9uRW50cnkJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5VGVtcEN1clN1bQUAAAAGY3VyU3VtBQAAAANuaWwFAAAAA25pbAkAAAIAAAABAgAAABRJbmNvcnJlY3QgcGFnaW5hdGlvbgQAAAAWcHJldmlvdXNSZXdhcmRFbnRyeU5ldwQAAAAPJGxpc3QxODgzNTE4ODg3BQAAAAxjdXJyZW50UG9vbHMEAAAADyRzaXplMTg4MzUxODg4NwkAAZAAAAABBQAAAA8kbGlzdDE4ODM1MTg4ODcEAAAADyRhY2MwMTg4MzUxODg4NwUAAAADbmlsAwkAAAAAAAACBQAAAA8kc2l6ZTE4ODM1MTg4ODcAAAAAAAAAAAAFAAAADyRhY2MwMTg4MzUxODg4NwQAAAAPJGFjYzExODgzNTE4ODg3CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MwMTg4MzUxODg4NwkAAZEAAAACBQAAAA8kbGlzdDE4ODM1MTg4ODcAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTg4MzUxODg4NwAAAAAAAAAAAQUAAAAPJGFjYzExODgzNTE4ODg3BAAAAA8kYWNjMjE4ODM1MTg4ODcJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzExODgzNTE4ODg3CQABkQAAAAIFAAAADyRsaXN0MTg4MzUxODg4NwAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxODgzNTE4ODg3AAAAAAAAAAACBQAAAA8kYWNjMjE4ODM1MTg4ODcEAAAADyRhY2MzMTg4MzUxODg4NwkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMjE4ODM1MTg4ODcJAAGRAAAAAgUAAAAPJGxpc3QxODgzNTE4ODg3AAAAAAAAAAACAwkAAAAAAAACBQAAAA8kc2l6ZTE4ODM1MTg4ODcAAAAAAAAAAAMFAAAADyRhY2MzMTg4MzUxODg4NwQAAAAPJGFjYzQxODgzNTE4ODg3CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MzMTg4MzUxODg4NwkAAZEAAAACBQAAAA8kbGlzdDE4ODM1MTg4ODcAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTg4MzUxODg4NwAAAAAAAAAABAUAAAAPJGFjYzQxODgzNTE4ODg3BAAAAA8kYWNjNTE4ODM1MTg4ODcJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzQxODgzNTE4ODg3CQABkQAAAAIFAAAADyRsaXN0MTg4MzUxODg4NwAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxODgzNTE4ODg3AAAAAAAAAAAFBQAAAA8kYWNjNTE4ODM1MTg4ODcEAAAADyRhY2M2MTg4MzUxODg4NwkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNTE4ODM1MTg4ODcJAAGRAAAAAgUAAAAPJGxpc3QxODgzNTE4ODg3AAAAAAAAAAAFAwkAAAAAAAACBQAAAA8kc2l6ZTE4ODM1MTg4ODcAAAAAAAAAAAYFAAAADyRhY2M2MTg4MzUxODg4NwQAAAAPJGFjYzcxODgzNTE4ODg3CQEAAAAZY2hhbmdlUHJldmlvdXNSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M2MTg4MzUxODg4NwkAAZEAAAACBQAAAA8kbGlzdDE4ODM1MTg4ODcAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTg4MzUxODg4NwAAAAAAAAAABwUAAAAPJGFjYzcxODgzNTE4ODg3BAAAAA8kYWNjODE4ODM1MTg4ODcJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzcxODgzNTE4ODg3CQABkQAAAAIFAAAADyRsaXN0MTg4MzUxODg4NwAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxODgzNTE4ODg3AAAAAAAAAAAIBQAAAA8kYWNjODE4ODM1MTg4ODcEAAAADyRhY2M5MTg4MzUxODg4NwkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjODE4ODM1MTg4ODcJAAGRAAAAAgUAAAAPJGxpc3QxODgzNTE4ODg3AAAAAAAAAAAIAwkAAAAAAAACBQAAAA8kc2l6ZTE4ODM1MTg4ODcAAAAAAAAAAAkFAAAADyRhY2M5MTg4MzUxODg4NwQAAAAQJGFjYzEwMTg4MzUxODg4NwkBAAAAGWNoYW5nZVByZXZpb3VzUmV3YXJkRW50cnkAAAACBQAAAA8kYWNjOTE4ODM1MTg4ODcJAAGRAAAAAgUAAAAPJGxpc3QxODgzNTE4ODg3AAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE4ODM1MTg4ODcAAAAAAAAAAAoFAAAAECRhY2MxMDE4ODM1MTg4ODcEAAAAECRhY2MxMTE4ODM1MTg4ODcJAQAAABljaGFuZ2VQcmV2aW91c1Jld2FyZEVudHJ5AAAAAgUAAAAQJGFjYzEwMTg4MzUxODg4NwkAAZEAAAACBQAAAA8kbGlzdDE4ODM1MTg4ODcAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAAVY3VycmVudFJld2FyZEVudHJ5TmV3BAAAAA8kbGlzdDE4OTIwMTg5NzIFAAAADGN1cnJlbnRQb29scwQAAAAPJHNpemUxODkyMDE4OTcyCQABkAAAAAEFAAAADyRsaXN0MTg5MjAxODk3MgQAAAAPJGFjYzAxODkyMDE4OTcyBQAAAANuaWwDCQAAAAAAAAIFAAAADyRzaXplMTg5MjAxODk3MgAAAAAAAAAAAAUAAAAPJGFjYzAxODkyMDE4OTcyBAAAAA8kYWNjMTE4OTIwMTg5NzIJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMDE4OTIwMTg5NzIJAAGRAAAAAgUAAAAPJGxpc3QxODkyMDE4OTcyAAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTIwMTg5NzIAAAAAAAAAAAEFAAAADyRhY2MxMTg5MjAxODk3MgQAAAAPJGFjYzIxODkyMDE4OTcyCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzExODkyMDE4OTcyCQABkQAAAAIFAAAADyRsaXN0MTg5MjAxODk3MgAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxODkyMDE4OTcyAAAAAAAAAAACBQAAAA8kYWNjMjE4OTIwMTg5NzIEAAAADyRhY2MzMTg5MjAxODk3MgkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2MyMTg5MjAxODk3MgkAAZEAAAACBQAAAA8kbGlzdDE4OTIwMTg5NzIAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTg5MjAxODk3MgAAAAAAAAAAAwUAAAAPJGFjYzMxODkyMDE4OTcyBAAAAA8kYWNjNDE4OTIwMTg5NzIJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjMzE4OTIwMTg5NzIJAAGRAAAAAgUAAAAPJGxpc3QxODkyMDE4OTcyAAAAAAAAAAADAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTIwMTg5NzIAAAAAAAAAAAQFAAAADyRhY2M0MTg5MjAxODk3MgQAAAAPJGFjYzUxODkyMDE4OTcyCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzQxODkyMDE4OTcyCQABkQAAAAIFAAAADyRsaXN0MTg5MjAxODk3MgAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxODkyMDE4OTcyAAAAAAAAAAAFBQAAAA8kYWNjNTE4OTIwMTg5NzIEAAAADyRhY2M2MTg5MjAxODk3MgkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M1MTg5MjAxODk3MgkAAZEAAAACBQAAAA8kbGlzdDE4OTIwMTg5NzIAAAAAAAAAAAUDCQAAAAAAAAIFAAAADyRzaXplMTg5MjAxODk3MgAAAAAAAAAABgUAAAAPJGFjYzYxODkyMDE4OTcyBAAAAA8kYWNjNzE4OTIwMTg5NzIJAQAAABhjaGFuZ2VDdXJyZW50UmV3YXJkRW50cnkAAAACBQAAAA8kYWNjNjE4OTIwMTg5NzIJAAGRAAAAAgUAAAAPJGxpc3QxODkyMDE4OTcyAAAAAAAAAAAGAwkAAAAAAAACBQAAAA8kc2l6ZTE4OTIwMTg5NzIAAAAAAAAAAAcFAAAADyRhY2M3MTg5MjAxODk3MgQAAAAPJGFjYzgxODkyMDE4OTcyCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzcxODkyMDE4OTcyCQABkQAAAAIFAAAADyRsaXN0MTg5MjAxODk3MgAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxODkyMDE4OTcyAAAAAAAAAAAIBQAAAA8kYWNjODE4OTIwMTg5NzIEAAAADyRhY2M5MTg5MjAxODk3MgkBAAAAGGNoYW5nZUN1cnJlbnRSZXdhcmRFbnRyeQAAAAIFAAAADyRhY2M4MTg5MjAxODk3MgkAAZEAAAACBQAAAA8kbGlzdDE4OTIwMTg5NzIAAAAAAAAAAAgDCQAAAAAAAAIFAAAADyRzaXplMTg5MjAxODk3MgAAAAAAAAAACQUAAAAPJGFjYzkxODkyMDE4OTcyBAAAABAkYWNjMTAxODkyMDE4OTcyCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAPJGFjYzkxODkyMDE4OTcyCQABkQAAAAIFAAAADyRsaXN0MTg5MjAxODk3MgAAAAAAAAAACQMJAAAAAAAAAgUAAAAPJHNpemUxODkyMDE4OTcyAAAAAAAAAAAKBQAAABAkYWNjMTAxODkyMDE4OTcyBAAAABAkYWNjMTExODkyMDE4OTcyCQEAAAAYY2hhbmdlQ3VycmVudFJld2FyZEVudHJ5AAAAAgUAAAAQJGFjYzEwMTg5MjAxODk3MgkAAZEAAAACBQAAAA8kbGlzdDE4OTIwMTg5NzIAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAARaGVpZ2h0RW50cnlOZXdDdXIEAAAADyRsaXN0MTkwMDExOTA0NgUAAAAMY3VycmVudFBvb2xzBAAAAA8kc2l6ZTE5MDAxMTkwNDYJAAGQAAAAAQUAAAAPJGxpc3QxOTAwMTE5MDQ2BAAAAA8kYWNjMDE5MDAxMTkwNDYFAAAAA25pbAMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAABQAAAA8kYWNjMDE5MDAxMTkwNDYEAAAADyRhY2MxMTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzAxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAABBQAAAA8kYWNjMTE5MDAxMTkwNDYEAAAADyRhY2MyMTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzExOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAACBQAAAA8kYWNjMjE5MDAxMTkwNDYEAAAADyRhY2MzMTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzIxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAADBQAAAA8kYWNjMzE5MDAxMTkwNDYEAAAADyRhY2M0MTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzMxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAEBQAAAA8kYWNjNDE5MDAxMTkwNDYEAAAADyRhY2M1MTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzQxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAFBQAAAA8kYWNjNTE5MDAxMTkwNDYEAAAADyRhY2M2MTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzUxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAGBQAAAA8kYWNjNjE5MDAxMTkwNDYEAAAADyRhY2M3MTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzYxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAABgMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAHBQAAAA8kYWNjNzE5MDAxMTkwNDYEAAAADyRhY2M4MTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzcxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAABwMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAIBQAAAA8kYWNjODE5MDAxMTkwNDYEAAAADyRhY2M5MTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAPJGFjYzgxOTAwMTE5MDQ2CQABkQAAAAIFAAAADyRsaXN0MTkwMDExOTA0NgAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTAwMTE5MDQ2AAAAAAAAAAAJBQAAAA8kYWNjOTE5MDAxMTkwNDYEAAAAECRhY2MxMDE5MDAxMTkwNDYJAQAAABFjaGFuZ2VIZWlnaHRFbnRyeQAAAAIFAAAADyRhY2M5MTkwMDExOTA0NgkAAZEAAAACBQAAAA8kbGlzdDE5MDAxMTkwNDYAAAAAAAAAAAkDCQAAAAAAAAIFAAAADyRzaXplMTkwMDExOTA0NgAAAAAAAAAACgUAAAAQJGFjYzEwMTkwMDExOTA0NgQAAAAQJGFjYzExMTkwMDExOTA0NgkBAAAAEWNoYW5nZUhlaWdodEVudHJ5AAAAAgUAAAAQJGFjYzEwMTkwMDExOTA0NgkAAZEAAAACBQAAAA8kbGlzdDE5MDAxMTkwNDYAAAAAAAAAAAoJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZCAxMAQAAAAUc3VtUmV3YXJkQ3VycmVudFRlbXAEAAAADyRsaXN0MTkwODAxOTExMgUAAAAOY3VycmVudFJld2FyZHMEAAAADyRzaXplMTkwODAxOTExMgkAAZAAAAABBQAAAA8kbGlzdDE5MDgwMTkxMTIEAAAADyRhY2MwMTkwODAxOTExMgAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAAABQAAAA8kYWNjMDE5MDgwMTkxMTIEAAAADyRhY2MxMTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2MwMTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAAAQUAAAAPJGFjYzExOTA4MDE5MTEyBAAAAA8kYWNjMjE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjMTE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAABAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAIFAAAADyRhY2MyMTkwODAxOTExMgQAAAAPJGFjYzMxOTA4MDE5MTEyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzIxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAADBQAAAA8kYWNjMzE5MDgwMTkxMTIEAAAADyRhY2M0MTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2MzMTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAABAUAAAAPJGFjYzQxOTA4MDE5MTEyBAAAAA8kYWNjNTE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjNDE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAAEAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAUFAAAADyRhY2M1MTkwODAxOTExMgQAAAAPJGFjYzYxOTA4MDE5MTEyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzUxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAABQMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAAGBQAAAA8kYWNjNjE5MDgwMTkxMTIEAAAADyRhY2M3MTkwODAxOTExMgkBAAAAA3N1bQAAAAIFAAAADyRhY2M2MTkwODAxOTExMgkAAZEAAAACBQAAAA8kbGlzdDE5MDgwMTkxMTIAAAAAAAAAAAYDCQAAAAAAAAIFAAAADyRzaXplMTkwODAxOTExMgAAAAAAAAAABwUAAAAPJGFjYzcxOTA4MDE5MTEyBAAAAA8kYWNjODE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjNzE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAAHAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAgFAAAADyRhY2M4MTkwODAxOTExMgQAAAAPJGFjYzkxOTA4MDE5MTEyCQEAAAADc3VtAAAAAgUAAAAPJGFjYzgxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAACAMJAAAAAAAAAgUAAAAPJHNpemUxOTA4MDE5MTEyAAAAAAAAAAAJBQAAAA8kYWNjOTE5MDgwMTkxMTIEAAAAECRhY2MxMDE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAAA8kYWNjOTE5MDgwMTkxMTIJAAGRAAAAAgUAAAAPJGxpc3QxOTA4MDE5MTEyAAAAAAAAAAAJAwkAAAAAAAACBQAAAA8kc2l6ZTE5MDgwMTkxMTIAAAAAAAAAAAoFAAAAECRhY2MxMDE5MDgwMTkxMTIEAAAAECRhY2MxMTE5MDgwMTkxMTIJAQAAAANzdW0AAAACBQAAABAkYWNjMTAxOTA4MDE5MTEyCQABkQAAAAIFAAAADyRsaXN0MTkwODAxOTExMgAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwBAAAAA0kdDAxOTExODE5MjI5CQEAAAAMZ2V0U3VtUmV3YXJkAAAAAgUAAAAUc3VtUmV3YXJkQ3VycmVudFRlbXAFAAAACnBhZ2luYXRpb24EAAAAEHN1bVJld2FyZEN1cnJlbnQIBQAAAA0kdDAxOTExODE5MjI5AAAAAl8xBAAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQgFAAAADSR0MDE5MTE4MTkyMjkAAAACXzIEAAAAF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5AwkAAAAAAAACBQAAAApwYWdpbmF0aW9uAAAAAAAAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgAAAAECAAAAG3Jld2FyZFVwZGF0ZUhlaWdodCA8IGhlaWdodAkABE4AAAACCQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETgAAAAIFAAAAFnByZXZpb3VzUmV3YXJkRW50cnlOZXcFAAAAFWN1cnJlbnRSZXdhcmRFbnRyeU5ldwUAAAARaGVpZ2h0RW50cnlOZXdDdXIFAAAAEHN1bVJld2FyZEN1cnJlbnQFAAAAF3Jld2FyZFVwZGF0ZUhlaWdodEVudHJ5BQAAACZyZXdhcmRVcGRhdGVIZWlnaHRGaXJzdFBhZ2luYXRpb25FbnRyeQAAAAFpAQAAAAhzaHV0ZG93bgAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAEJAAEsAAAAAgIAAAAiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAhrZXlDYXVzZQIAAAAadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAQAAAAdzdXNwZW5kAAAAAQIAAAAPUGF1c2VkIGJ5IGFkbWluAAAAAWkBAAAACGFjdGl2YXRlAAAAAAMFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtleUFjdGl2ZQYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAIa2V5Q2F1c2UFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEmFkbWluUHViS2V5MVNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEmFkbWluUHViS2V5MlNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAxhZG1pblB1YktleTIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEmFkbWluUHViS2V5M1NpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAxhZG1pblB1YktleTMAAAAAAAAAAAEAAAAAAAAAAAAJAABnAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAAEmFkbWluUHViS2V5MVNpZ25lZAUAAAASYWRtaW5QdWJLZXkyU2lnbmVkBQAAABJhZG1pblB1YktleTNTaWduZWQAAAAAAAAAAAIi/6IL", "height": 1625042, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3jgUocGpNJuEQi9qdWJfkUTJ6E5Vp2Zmi1zwK5j6ttNh Next: 6KKcf4qEcrGTx8yBychqyXFc1kHEbrKvrNLUJygn5fgX Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let adminPubKey1 = base58'GFmKZ2naZFRoCvNbwKAQVGmLb1uBeWGDgFabdGBuZiuy'
5-
6-let adminPubKey2 = base58'GmJXRyhRA79g8yUGgKBAVdnFfQFDMjQG98b1MmLDh5kk'
7-
8-let adminPubKey3 = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP'
9-
104 let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
115
126 let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
7468 let activeVoteThird = "voting_active_cell_3"
7569
7670 let keyTempCurSum = "sum_reward_current"
71+
72+let keyAdminPubKey1 = "admin_pub_1"
73+
74+let keyAdminPubKey2 = "admin_pub_2"
75+
76+let keyAdminPubKey3 = "admin_pub_3"
77+
78+let oracle = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
79+
80+func getAdminPub (keyAdminPub) = match getString(oracle, keyAdminPub) {
81+ case string: String =>
82+ fromBase58String(string)
83+ case nothing =>
84+ throw("Admin public key is empty")
85+}
86+
87+
88+let adminPubKey1 = getAdminPub(keyAdminPubKey1)
89+
90+let adminPubKey2 = getAdminPub(keyAdminPubKey2)
91+
92+let adminPubKey3 = getAdminPub(keyAdminPubKey3)
7793
7894 let isActive = valueOrElse(getBoolean(this, keyActive), true)
7995
172188
173189
174190 func getUserVoteInfo (user) = {
175- let $t060366587 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
191+ let $t063456896 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
176192 then {
177193 let data = split(valueOrErrorMessage(getString(votingLiteContract, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
178194 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
181197 let uPoolTotalSWOP = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
182198 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
183199 }
184- let userTotalVoteSWOP = $t060366587._1
185- let userUnvoted = $t060366587._2
186- let userUnvotedPeriod = $t060366587._3
200+ let userTotalVoteSWOP = $t063456896._1
201+ let userUnvoted = $t063456896._2
202+ let userUnvotedPeriod = $t063456896._3
187203 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
188204 then userUnvoted
189205 else 0
248264
249265 func claimCalc (caller) = {
250266 let lastInterest = getLastInterestInfo()
251- let $t089959075 = getUserInterestInfo(caller, lastInterest)
252- let userLastInterest = $t089959075._1
253- let userSWOPLocked = $t089959075._2
267+ let $t093009380 = getUserInterestInfo(caller, lastInterest)
268+ let userLastInterest = $t093009380._1
269+ let userSWOPLocked = $t093009380._2
254270 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
255271 let userNewInterest = lastInterest
256272 $Tuple2(userNewInterest, claimAmount)
261277 func airDrop () = if (!(isActive))
262278 then throw("DApp is inactive at this moment")
263279 else {
264- let $t093409415 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
265- let pmtAmount = $t093409415._1
266- let pmtAssetId = $t093409415._2
280+ let $t096479722 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
281+ let pmtAmount = $t096479722._1
282+ let pmtAssetId = $t096479722._2
267283 if ((pmtAssetId != SWOP))
268284 then throw("Incorrect pmtAssetId")
269285 else {
280296 func lockSWOP () = if (!(isActive))
281297 then throw("DApp is inactive at this moment")
282298 else {
283- let $t098539928 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
284- let pmtAmount = $t098539928._1
285- let pmtAssetId = $t098539928._2
299+ let $t01016010235 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
300+ let pmtAmount = $t01016010235._1
301+ let pmtAssetId = $t01016010235._2
286302 if ((pmtAssetId != SWOP))
287303 then throw("Incorrect pmtAssetId")
288304 else {
289305 let lastInterest = getLastInterestInfo()
290- let $t01004410126 = getUserInterestInfo(i.caller, lastInterest)
291- let userLastInterest = $t01004410126._1
292- let userSWOPLocked = $t01004410126._2
306+ let $t01035110433 = getUserInterestInfo(i.caller, lastInterest)
307+ let userLastInterest = $t01035110433._1
308+ let userSWOPLocked = $t01035110433._2
293309 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
294310 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
295311 let userNewInterest = lastInterest
311327 else {
312328 let totalSWOPLocked = getTotalSWOPLocked()
313329 let userSWOPLocked = getUserSWOPLocked(i.caller)
314- let $t01127611331 = claimCalc(i.caller)
315- let userNewInterest = $t01127611331._1
316- let claimAmount = $t01127611331._2
317- let $t01133611401 = getUserVoteInfo(i.caller)
318- let userVoteAmount = $t01133611401._1
319- let userUnvoteAmount = $t01133611401._2
330+ let $t01158511640 = claimCalc(i.caller)
331+ let userNewInterest = $t01158511640._1
332+ let claimAmount = $t01158511640._2
333+ let $t01164511710 = getUserVoteInfo(i.caller)
334+ let userVoteAmount = $t01164511710._1
335+ let userUnvoteAmount = $t01164511710._2
320336 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
321337 if (if (if ((0 > userUnvoteAmount))
322338 then true
345361 then throw("DApp is inactive at this moment")
346362 else {
347363 let lastInterest = getLastInterestInfo()
348- let $t01277612831 = claimCalc(i.caller)
349- let userNewInterest = $t01277612831._1
350- let claimAmount = $t01277612831._2
364+ let $t01308513140 = claimCalc(i.caller)
365+ let userNewInterest = $t01308513140._1
366+ let claimAmount = $t01308513140._2
351367 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
352368 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
353369 if ((claimAmount == 0))
364380 let totalSWOPLocked = getTotalSWOPLocked()
365381 let userSWOPLocked = getUserSWOPLocked(i.caller)
366382 let lastInterest = getLastInterestInfo()
367- let $t01361013665 = claimCalc(i.caller)
368- let userNewInterest = $t01361013665._1
369- let claimAmount = $t01361013665._2
383+ let $t01391913974 = claimCalc(i.caller)
384+ let userNewInterest = $t01391913974._1
385+ let claimAmount = $t01391913974._2
370386 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
371387 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
372388 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
454470 else throw("Incorrect pagination")
455471
456472 let previousRewardEntryNew = {
457- let $list1853718589 = currentPools
458- let $size1853718589 = size($list1853718589)
459- let $acc01853718589 = nil
460- if (($size1853718589 == 0))
461- then $acc01853718589
473+ let $list1883518887 = currentPools
474+ let $size1883518887 = size($list1883518887)
475+ let $acc01883518887 = nil
476+ if (($size1883518887 == 0))
477+ then $acc01883518887
462478 else {
463- let $acc11853718589 = changePreviousRewardEntry($acc01853718589, $list1853718589[0])
464- if (($size1853718589 == 1))
465- then $acc11853718589
479+ let $acc11883518887 = changePreviousRewardEntry($acc01883518887, $list1883518887[0])
480+ if (($size1883518887 == 1))
481+ then $acc11883518887
466482 else {
467- let $acc21853718589 = changePreviousRewardEntry($acc11853718589, $list1853718589[1])
468- if (($size1853718589 == 2))
469- then $acc21853718589
483+ let $acc21883518887 = changePreviousRewardEntry($acc11883518887, $list1883518887[1])
484+ if (($size1883518887 == 2))
485+ then $acc21883518887
470486 else {
471- let $acc31853718589 = changePreviousRewardEntry($acc21853718589, $list1853718589[2])
472- if (($size1853718589 == 3))
473- then $acc31853718589
487+ let $acc31883518887 = changePreviousRewardEntry($acc21883518887, $list1883518887[2])
488+ if (($size1883518887 == 3))
489+ then $acc31883518887
474490 else {
475- let $acc41853718589 = changePreviousRewardEntry($acc31853718589, $list1853718589[3])
476- if (($size1853718589 == 4))
477- then $acc41853718589
491+ let $acc41883518887 = changePreviousRewardEntry($acc31883518887, $list1883518887[3])
492+ if (($size1883518887 == 4))
493+ then $acc41883518887
478494 else {
479- let $acc51853718589 = changePreviousRewardEntry($acc41853718589, $list1853718589[4])
480- if (($size1853718589 == 5))
481- then $acc51853718589
495+ let $acc51883518887 = changePreviousRewardEntry($acc41883518887, $list1883518887[4])
496+ if (($size1883518887 == 5))
497+ then $acc51883518887
482498 else {
483- let $acc61853718589 = changePreviousRewardEntry($acc51853718589, $list1853718589[5])
484- if (($size1853718589 == 6))
485- then $acc61853718589
499+ let $acc61883518887 = changePreviousRewardEntry($acc51883518887, $list1883518887[5])
500+ if (($size1883518887 == 6))
501+ then $acc61883518887
486502 else {
487- let $acc71853718589 = changePreviousRewardEntry($acc61853718589, $list1853718589[6])
488- if (($size1853718589 == 7))
489- then $acc71853718589
503+ let $acc71883518887 = changePreviousRewardEntry($acc61883518887, $list1883518887[6])
504+ if (($size1883518887 == 7))
505+ then $acc71883518887
490506 else {
491- let $acc81853718589 = changePreviousRewardEntry($acc71853718589, $list1853718589[7])
492- if (($size1853718589 == 8))
493- then $acc81853718589
507+ let $acc81883518887 = changePreviousRewardEntry($acc71883518887, $list1883518887[7])
508+ if (($size1883518887 == 8))
509+ then $acc81883518887
494510 else {
495- let $acc91853718589 = changePreviousRewardEntry($acc81853718589, $list1853718589[8])
496- if (($size1853718589 == 9))
497- then $acc91853718589
511+ let $acc91883518887 = changePreviousRewardEntry($acc81883518887, $list1883518887[8])
512+ if (($size1883518887 == 9))
513+ then $acc91883518887
498514 else {
499- let $acc101853718589 = changePreviousRewardEntry($acc91853718589, $list1853718589[9])
500- if (($size1853718589 == 10))
501- then $acc101853718589
515+ let $acc101883518887 = changePreviousRewardEntry($acc91883518887, $list1883518887[9])
516+ if (($size1883518887 == 10))
517+ then $acc101883518887
502518 else {
503- let $acc111853718589 = changePreviousRewardEntry($acc101853718589, $list1853718589[10])
519+ let $acc111883518887 = changePreviousRewardEntry($acc101883518887, $list1883518887[10])
504520 throw("List size exceed 10")
505521 }
506522 }
515531 }
516532 }
517533 let currentRewardEntryNew = {
518- let $list1862218674 = currentPools
519- let $size1862218674 = size($list1862218674)
520- let $acc01862218674 = nil
521- if (($size1862218674 == 0))
522- then $acc01862218674
534+ let $list1892018972 = currentPools
535+ let $size1892018972 = size($list1892018972)
536+ let $acc01892018972 = nil
537+ if (($size1892018972 == 0))
538+ then $acc01892018972
523539 else {
524- let $acc11862218674 = changeCurrentRewardEntry($acc01862218674, $list1862218674[0])
525- if (($size1862218674 == 1))
526- then $acc11862218674
540+ let $acc11892018972 = changeCurrentRewardEntry($acc01892018972, $list1892018972[0])
541+ if (($size1892018972 == 1))
542+ then $acc11892018972
527543 else {
528- let $acc21862218674 = changeCurrentRewardEntry($acc11862218674, $list1862218674[1])
529- if (($size1862218674 == 2))
530- then $acc21862218674
544+ let $acc21892018972 = changeCurrentRewardEntry($acc11892018972, $list1892018972[1])
545+ if (($size1892018972 == 2))
546+ then $acc21892018972
531547 else {
532- let $acc31862218674 = changeCurrentRewardEntry($acc21862218674, $list1862218674[2])
533- if (($size1862218674 == 3))
534- then $acc31862218674
548+ let $acc31892018972 = changeCurrentRewardEntry($acc21892018972, $list1892018972[2])
549+ if (($size1892018972 == 3))
550+ then $acc31892018972
535551 else {
536- let $acc41862218674 = changeCurrentRewardEntry($acc31862218674, $list1862218674[3])
537- if (($size1862218674 == 4))
538- then $acc41862218674
552+ let $acc41892018972 = changeCurrentRewardEntry($acc31892018972, $list1892018972[3])
553+ if (($size1892018972 == 4))
554+ then $acc41892018972
539555 else {
540- let $acc51862218674 = changeCurrentRewardEntry($acc41862218674, $list1862218674[4])
541- if (($size1862218674 == 5))
542- then $acc51862218674
556+ let $acc51892018972 = changeCurrentRewardEntry($acc41892018972, $list1892018972[4])
557+ if (($size1892018972 == 5))
558+ then $acc51892018972
543559 else {
544- let $acc61862218674 = changeCurrentRewardEntry($acc51862218674, $list1862218674[5])
545- if (($size1862218674 == 6))
546- then $acc61862218674
560+ let $acc61892018972 = changeCurrentRewardEntry($acc51892018972, $list1892018972[5])
561+ if (($size1892018972 == 6))
562+ then $acc61892018972
547563 else {
548- let $acc71862218674 = changeCurrentRewardEntry($acc61862218674, $list1862218674[6])
549- if (($size1862218674 == 7))
550- then $acc71862218674
564+ let $acc71892018972 = changeCurrentRewardEntry($acc61892018972, $list1892018972[6])
565+ if (($size1892018972 == 7))
566+ then $acc71892018972
551567 else {
552- let $acc81862218674 = changeCurrentRewardEntry($acc71862218674, $list1862218674[7])
553- if (($size1862218674 == 8))
554- then $acc81862218674
568+ let $acc81892018972 = changeCurrentRewardEntry($acc71892018972, $list1892018972[7])
569+ if (($size1892018972 == 8))
570+ then $acc81892018972
555571 else {
556- let $acc91862218674 = changeCurrentRewardEntry($acc81862218674, $list1862218674[8])
557- if (($size1862218674 == 9))
558- then $acc91862218674
572+ let $acc91892018972 = changeCurrentRewardEntry($acc81892018972, $list1892018972[8])
573+ if (($size1892018972 == 9))
574+ then $acc91892018972
559575 else {
560- let $acc101862218674 = changeCurrentRewardEntry($acc91862218674, $list1862218674[9])
561- if (($size1862218674 == 10))
562- then $acc101862218674
576+ let $acc101892018972 = changeCurrentRewardEntry($acc91892018972, $list1892018972[9])
577+ if (($size1892018972 == 10))
578+ then $acc101892018972
563579 else {
564- let $acc111862218674 = changeCurrentRewardEntry($acc101862218674, $list1862218674[10])
580+ let $acc111892018972 = changeCurrentRewardEntry($acc101892018972, $list1892018972[10])
565581 throw("List size exceed 10")
566582 }
567583 }
576592 }
577593 }
578594 let heightEntryNewCur = {
579- let $list1870318748 = currentPools
580- let $size1870318748 = size($list1870318748)
581- let $acc01870318748 = nil
582- if (($size1870318748 == 0))
583- then $acc01870318748
595+ let $list1900119046 = currentPools
596+ let $size1900119046 = size($list1900119046)
597+ let $acc01900119046 = nil
598+ if (($size1900119046 == 0))
599+ then $acc01900119046
584600 else {
585- let $acc11870318748 = changeHeightEntry($acc01870318748, $list1870318748[0])
586- if (($size1870318748 == 1))
587- then $acc11870318748
601+ let $acc11900119046 = changeHeightEntry($acc01900119046, $list1900119046[0])
602+ if (($size1900119046 == 1))
603+ then $acc11900119046
588604 else {
589- let $acc21870318748 = changeHeightEntry($acc11870318748, $list1870318748[1])
590- if (($size1870318748 == 2))
591- then $acc21870318748
605+ let $acc21900119046 = changeHeightEntry($acc11900119046, $list1900119046[1])
606+ if (($size1900119046 == 2))
607+ then $acc21900119046
592608 else {
593- let $acc31870318748 = changeHeightEntry($acc21870318748, $list1870318748[2])
594- if (($size1870318748 == 3))
595- then $acc31870318748
609+ let $acc31900119046 = changeHeightEntry($acc21900119046, $list1900119046[2])
610+ if (($size1900119046 == 3))
611+ then $acc31900119046
596612 else {
597- let $acc41870318748 = changeHeightEntry($acc31870318748, $list1870318748[3])
598- if (($size1870318748 == 4))
599- then $acc41870318748
613+ let $acc41900119046 = changeHeightEntry($acc31900119046, $list1900119046[3])
614+ if (($size1900119046 == 4))
615+ then $acc41900119046
600616 else {
601- let $acc51870318748 = changeHeightEntry($acc41870318748, $list1870318748[4])
602- if (($size1870318748 == 5))
603- then $acc51870318748
617+ let $acc51900119046 = changeHeightEntry($acc41900119046, $list1900119046[4])
618+ if (($size1900119046 == 5))
619+ then $acc51900119046
604620 else {
605- let $acc61870318748 = changeHeightEntry($acc51870318748, $list1870318748[5])
606- if (($size1870318748 == 6))
607- then $acc61870318748
621+ let $acc61900119046 = changeHeightEntry($acc51900119046, $list1900119046[5])
622+ if (($size1900119046 == 6))
623+ then $acc61900119046
608624 else {
609- let $acc71870318748 = changeHeightEntry($acc61870318748, $list1870318748[6])
610- if (($size1870318748 == 7))
611- then $acc71870318748
625+ let $acc71900119046 = changeHeightEntry($acc61900119046, $list1900119046[6])
626+ if (($size1900119046 == 7))
627+ then $acc71900119046
612628 else {
613- let $acc81870318748 = changeHeightEntry($acc71870318748, $list1870318748[7])
614- if (($size1870318748 == 8))
615- then $acc81870318748
629+ let $acc81900119046 = changeHeightEntry($acc71900119046, $list1900119046[7])
630+ if (($size1900119046 == 8))
631+ then $acc81900119046
616632 else {
617- let $acc91870318748 = changeHeightEntry($acc81870318748, $list1870318748[8])
618- if (($size1870318748 == 9))
619- then $acc91870318748
633+ let $acc91900119046 = changeHeightEntry($acc81900119046, $list1900119046[8])
634+ if (($size1900119046 == 9))
635+ then $acc91900119046
620636 else {
621- let $acc101870318748 = changeHeightEntry($acc91870318748, $list1870318748[9])
622- if (($size1870318748 == 10))
623- then $acc101870318748
637+ let $acc101900119046 = changeHeightEntry($acc91900119046, $list1900119046[9])
638+ if (($size1900119046 == 10))
639+ then $acc101900119046
624640 else {
625- let $acc111870318748 = changeHeightEntry($acc101870318748, $list1870318748[10])
641+ let $acc111900119046 = changeHeightEntry($acc101900119046, $list1900119046[10])
626642 throw("List size exceed 10")
627643 }
628644 }
637653 }
638654 }
639655 let sumRewardCurrentTemp = {
640- let $list1878218814 = currentRewards
641- let $size1878218814 = size($list1878218814)
642- let $acc01878218814 = 0
643- if (($size1878218814 == 0))
644- then $acc01878218814
656+ let $list1908019112 = currentRewards
657+ let $size1908019112 = size($list1908019112)
658+ let $acc01908019112 = 0
659+ if (($size1908019112 == 0))
660+ then $acc01908019112
645661 else {
646- let $acc11878218814 = sum($acc01878218814, $list1878218814[0])
647- if (($size1878218814 == 1))
648- then $acc11878218814
662+ let $acc11908019112 = sum($acc01908019112, $list1908019112[0])
663+ if (($size1908019112 == 1))
664+ then $acc11908019112
649665 else {
650- let $acc21878218814 = sum($acc11878218814, $list1878218814[1])
651- if (($size1878218814 == 2))
652- then $acc21878218814
666+ let $acc21908019112 = sum($acc11908019112, $list1908019112[1])
667+ if (($size1908019112 == 2))
668+ then $acc21908019112
653669 else {
654- let $acc31878218814 = sum($acc21878218814, $list1878218814[2])
655- if (($size1878218814 == 3))
656- then $acc31878218814
670+ let $acc31908019112 = sum($acc21908019112, $list1908019112[2])
671+ if (($size1908019112 == 3))
672+ then $acc31908019112
657673 else {
658- let $acc41878218814 = sum($acc31878218814, $list1878218814[3])
659- if (($size1878218814 == 4))
660- then $acc41878218814
674+ let $acc41908019112 = sum($acc31908019112, $list1908019112[3])
675+ if (($size1908019112 == 4))
676+ then $acc41908019112
661677 else {
662- let $acc51878218814 = sum($acc41878218814, $list1878218814[4])
663- if (($size1878218814 == 5))
664- then $acc51878218814
678+ let $acc51908019112 = sum($acc41908019112, $list1908019112[4])
679+ if (($size1908019112 == 5))
680+ then $acc51908019112
665681 else {
666- let $acc61878218814 = sum($acc51878218814, $list1878218814[5])
667- if (($size1878218814 == 6))
668- then $acc61878218814
682+ let $acc61908019112 = sum($acc51908019112, $list1908019112[5])
683+ if (($size1908019112 == 6))
684+ then $acc61908019112
669685 else {
670- let $acc71878218814 = sum($acc61878218814, $list1878218814[6])
671- if (($size1878218814 == 7))
672- then $acc71878218814
686+ let $acc71908019112 = sum($acc61908019112, $list1908019112[6])
687+ if (($size1908019112 == 7))
688+ then $acc71908019112
673689 else {
674- let $acc81878218814 = sum($acc71878218814, $list1878218814[7])
675- if (($size1878218814 == 8))
676- then $acc81878218814
690+ let $acc81908019112 = sum($acc71908019112, $list1908019112[7])
691+ if (($size1908019112 == 8))
692+ then $acc81908019112
677693 else {
678- let $acc91878218814 = sum($acc81878218814, $list1878218814[8])
679- if (($size1878218814 == 9))
680- then $acc91878218814
694+ let $acc91908019112 = sum($acc81908019112, $list1908019112[8])
695+ if (($size1908019112 == 9))
696+ then $acc91908019112
681697 else {
682- let $acc101878218814 = sum($acc91878218814, $list1878218814[9])
683- if (($size1878218814 == 10))
684- then $acc101878218814
698+ let $acc101908019112 = sum($acc91908019112, $list1908019112[9])
699+ if (($size1908019112 == 10))
700+ then $acc101908019112
685701 else {
686- let $acc111878218814 = sum($acc101878218814, $list1878218814[10])
702+ let $acc111908019112 = sum($acc101908019112, $list1908019112[10])
687703 throw("List size exceed 10")
688704 }
689705 }
697713 }
698714 }
699715 }
700- let $t01882018931 = getSumReward(sumRewardCurrentTemp, pagination)
701- let sumRewardCurrent = $t01882018931._1
702- let rewardUpdateHeightFirstPaginationEntry = $t01882018931._2
716+ let $t01911819229 = getSumReward(sumRewardCurrentTemp, pagination)
717+ let sumRewardCurrent = $t01911819229._1
718+ let rewardUpdateHeightFirstPaginationEntry = $t01911819229._2
703719 let rewardUpdateHeightEntry = if ((pagination == 2))
704720 then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
705721 else nil
729745
730746
731747 @Verifier(tx)
732-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
748+func verify () = {
749+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
750+ then 1
751+ else 0
752+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
753+ then 1
754+ else 0
755+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
756+ then 1
757+ else 0
758+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
759+ }
733760
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let adminPubKey1 = base58'GFmKZ2naZFRoCvNbwKAQVGmLb1uBeWGDgFabdGBuZiuy'
5-
6-let adminPubKey2 = base58'GmJXRyhRA79g8yUGgKBAVdnFfQFDMjQG98b1MmLDh5kk'
7-
8-let adminPubKey3 = base58'CFhbV6h41hVjbGHudGtS3fYUv7QAKRxFQzKNtx4B5PqP'
9-
104 let adminPubKeyStartStop = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
115
126 let adminPubKeyWallet = base58'5CqqMkmtXXt35KRH9LdWA3ap6TffPvTT5SHQzYrVFbBw'
137
148 let keyActive = "active"
159
1610 let keyCause = "shutdown_cause"
1711
1812 let keyLastInterest = "last_interest"
1913
2014 let keyUserLastInterest = "_last_interest"
2115
2216 let keyUserSWOPLocked = "_SWOP_amount"
2317
2418 let keyUserGetBackHeight = "_getBackHeight"
2519
2620 let keyTotalSWOPLocked = "total_SWOP_amount"
2721
2822 let kUserTotalVoteSWOP = "_user_total_SWOP_vote"
2923
3024 let keyUserVoteOptionAmount = "_SWOP_option_amount"
3125
3226 let keyTotalVoteOptionAmount = "total_SWOP_option_amount"
3327
3428 let keyUserSWOPClaimedAmount = "_SWOP_claimed_amount"
3529
3630 let keyUserSWOPLastClaimedAmount = "_SWOP_last_claimed_amount"
3731
3832 let keyVoteName = "vote_name"
3933
4034 let keyOptionName = "_option_name"
4135
4236 let keyVotingStartHeight = "_startHeight"
4337
4438 let keyVoteDuration = "_vote_duration"
4539
4640 let keyRewardPoolFractionCurrent = "_current_pool_fraction_reward"
4741
4842 let keyRewardPoolFractionPrevious = "_previous_pool_fraction_reward"
4943
5044 let keyHeightPoolFraction = "_pool_reward_update_height"
5145
5246 let keyTotalRewardPerBlockCurrent = "total_reward_per_block_current"
5347
5448 let keyTotalRewardPerBlockPrevious = "total_reward_per_block_previous"
5549
5650 let keyRewardUpdateHeight = "reward_update_height"
5751
5852 let keyRewardUpdateFirstPaginationHeight = "reward_update_height_first_pagination"
5953
6054 let keyNoVotingForNewPool = "_vote_no"
6155
6256 let keyYesVotingForNewPool = "_vote_yes"
6357
6458 let keyAmountOfVotingForNewPool = "max_amount_voting"
6559
6660 let keyStatusOfVotingForNewPool = "_status"
6761
6862 let keyHeightOfPoolVotingForNewPool = "_finish_height"
6963
7064 let activeVoteFirst = "voting_active_cell_1"
7165
7266 let activeVoteSecond = "voting_active_cell_2"
7367
7468 let activeVoteThird = "voting_active_cell_3"
7569
7670 let keyTempCurSum = "sum_reward_current"
71+
72+let keyAdminPubKey1 = "admin_pub_1"
73+
74+let keyAdminPubKey2 = "admin_pub_2"
75+
76+let keyAdminPubKey3 = "admin_pub_3"
77+
78+let oracle = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
79+
80+func getAdminPub (keyAdminPub) = match getString(oracle, keyAdminPub) {
81+ case string: String =>
82+ fromBase58String(string)
83+ case nothing =>
84+ throw("Admin public key is empty")
85+}
86+
87+
88+let adminPubKey1 = getAdminPub(keyAdminPubKey1)
89+
90+let adminPubKey2 = getAdminPub(keyAdminPubKey2)
91+
92+let adminPubKey3 = getAdminPub(keyAdminPubKey3)
7793
7894 let isActive = valueOrElse(getBoolean(this, keyActive), true)
7995
8096 let farmingSWOPAddress = Address(base58'3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT')
8197
8298 let votingLiteContract = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8399
84100 let votingForNewPool = Address(base58'3Mzgi6deFV8CyF2nqbWSBkqba5JaD42EXyb')
85101
86102 let keySWOPid = "SWOP_id"
87103
88104 let SWOP = fromBase58String(getStringValue(farmingSWOPAddress, keySWOPid))
89105
90106 let scaleValue = 100000000
91107
92108 let totalVoteShare = 10000000000
93109
94110 let kStartHeight = "start_height"
95111
96112 let kBasePeriod = "base_period"
97113
98114 let kPeriodLength = "period_length"
99115
100116 let kUserTotalStruc = "_user_total_struc"
101117
102118 let basePeriod = valueOrErrorMessage(getInteger(votingLiteContract, kBasePeriod), "Empty kBasePeriod at voting contract")
103119
104120 let startHeight = valueOrErrorMessage(getInteger(votingLiteContract, kStartHeight), "Empty kStartHeight at voting contract")
105121
106122 let periodLength = valueOrErrorMessage(getInteger(votingLiteContract, kPeriodLength), "Empty kPeriodLength at voting contract")
107123
108124 let firstActiveVote = valueOrElse(getString(votingForNewPool, activeVoteFirst), "")
109125
110126 let secondActiveVote = valueOrElse(getString(votingForNewPool, activeVoteSecond), "")
111127
112128 let thirdActiveVote = valueOrElse(getString(votingForNewPool, activeVoteThird), "")
113129
114130 let currVotingPeriod = (basePeriod + ((height - startHeight) / periodLength))
115131
116132 func suspend (cause) = [BooleanEntry(keyActive, false), StringEntry(keyCause, cause)]
117133
118134
119135 func throwNotEnoughSWOP () = throw("Not enough SWOP: userSWOPLocked - userTotalVoteAmount < voteSWOPAmount")
120136
121137
122138 func getLastInterestInfo () = {
123139 let lastInterest = valueOrElse(getInteger(this, keyLastInterest), 0)
124140 lastInterest
125141 }
126142
127143
128144 func getUserSWOPLocked (user) = valueOrElse(getInteger(this, (toString(user) + keyUserSWOPLocked)), 0)
129145
130146
131147 func getUserSWOPClaimedAmount (user) = valueOrElse(getInteger(this, (toString(user) + keyUserSWOPClaimedAmount)), 0)
132148
133149
134150 func getUserTotalVoteAmount (user) = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
135151
136152
137153 func getUserInterestInfo (user,lastInterest) = {
138154 let userSWOPAmount = getUserSWOPLocked(user)
139155 let userLastInterest = getInteger(this, (toString(user) + keyUserLastInterest))
140156 let userLastInterestValue = match userLastInterest {
141157 case userLastInterest: Int =>
142158 userLastInterest
143159 case _ =>
144160 lastInterest
145161 }
146162 $Tuple2(userLastInterestValue, userSWOPAmount)
147163 }
148164
149165
150166 func getUserTotalVoteAmountForOnePool (pool,user) = {
151167 let voting = valueOrElse(getInteger(votingForNewPool, pool), -1)
152168 let heightOfVoting = valueOrElse(getInteger(votingForNewPool, (toString(voting) + keyHeightOfPoolVotingForNewPool)), 0)
153169 let statusOfVoting = valueOrElse(getBoolean(votingForNewPool, (toString(voting) + keyStatusOfVotingForNewPool)), true)
154170 let currentHeight = height
155171 if ((0 > voting))
156172 then 0
157173 else if (!(statusOfVoting))
158174 then 0
159175 else if ((heightOfVoting > currentHeight))
160176 then (valueOrElse(getInteger(votingForNewPool, (((toString(user) + "_") + toString(voting)) + keyYesVotingForNewPool)), 0) + valueOrElse(getInteger(votingForNewPool, (((toString(user) + "_") + toString(voting)) + keyNoVotingForNewPool)), 0))
161177 else 0
162178 }
163179
164180
165181 func getUserTotalVoteForNewPoolAmount (user) = {
166182 let listOfVoting = [getUserTotalVoteAmountForOnePool(firstActiveVote, user), getUserTotalVoteAmountForOnePool(secondActiveVote, user), getUserTotalVoteAmountForOnePool(thirdActiveVote, user)]
167183 max(listOfVoting)
168184 }
169185
170186
171187 func getTotalSWOPLocked () = valueOrElse(getInteger(this, keyTotalSWOPLocked), 0)
172188
173189
174190 func getUserVoteInfo (user) = {
175- let $t060366587 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
191+ let $t063456896 = if (isDefined(getString(votingLiteContract, (toString(user) + kUserTotalStruc))))
176192 then {
177193 let data = split(valueOrErrorMessage(getString(votingLiteContract, (toString(user) + kUserTotalStruc)), "Empty kUserTotalStruc"), "_")
178194 $Tuple3(parseIntValue(data[0]), parseIntValue(data[1]), parseIntValue(data[2]))
179195 }
180196 else {
181197 let uPoolTotalSWOP = valueOrElse(getInteger(votingLiteContract, (toString(user) + kUserTotalVoteSWOP)), 0)
182198 $Tuple3(uPoolTotalSWOP, 0, currVotingPeriod)
183199 }
184- let userTotalVoteSWOP = $t060366587._1
185- let userUnvoted = $t060366587._2
186- let userUnvotedPeriod = $t060366587._3
200+ let userTotalVoteSWOP = $t063456896._1
201+ let userUnvoted = $t063456896._2
202+ let userUnvotedPeriod = $t063456896._3
187203 let userUnvotedActual = if ((userUnvotedPeriod == currVotingPeriod))
188204 then userUnvoted
189205 else 0
190206 $Tuple2(userTotalVoteSWOP, userUnvotedActual)
191207 }
192208
193209
194210 func getUserVoteOptionAmount (user) = valueOrElse(getInteger(this, (toString(user) + keyUserVoteOptionAmount)), 0)
195211
196212
197213 func getVotingStartHeight (voteName) = valueOrElse(getInteger(this, (voteName + keyVotingStartHeight)), 0)
198214
199215
200216 func getPoolUpdateHeight (pool) = valueOrElse(getInteger(this, (pool + keyHeightPoolFraction)), 0)
201217
202218
203219 func isDefinePoolUpdateHeight (pool) = isDefined(getInteger(this, (pool + keyHeightPoolFraction)))
204220
205221
206222 func getCurPoolWeight (pool) = valueOrElse(getInteger(this, (pool + keyRewardPoolFractionCurrent)), 0)
207223
208224
209225 func getPrevPoolWeight (pool) = valueOrElse(getInteger(this, (pool + keyRewardPoolFractionPrevious)), 0)
210226
211227
212228 func getVoteOptionAmount (user,voteName,option) = {
213229 let userVoteOptionAmount = getInteger(this, (((voteName + option) + toString(user)) + keyUserVoteOptionAmount))
214230 let uvoa = match userVoteOptionAmount {
215231 case uvoa: Int =>
216232 uvoa
217233 case uvoa: Unit =>
218234 0
219235 case _ =>
220236 throw("Match error")
221237 }
222238 valueOrErrorMessage(uvoa, (((("No data on the key: " + voteName) + option) + toString(user)) + keyUserVoteOptionAmount))
223239 }
224240
225241
226242 func getVoteDuration (voteName) = valueOrErrorMessage(getInteger(this, (voteName + keyVoteDuration)), (("No data on the key: " + voteName) + keyVoteDuration))
227243
228244
229245 func getTotalVoteOptionAmount (voteName,option) = {
230246 let totalVoteOptionAmount = getInteger(this, ((voteName + option) + keyTotalVoteOptionAmount))
231247 let tvoa = match totalVoteOptionAmount {
232248 case tvoa: Int =>
233249 tvoa
234250 case tvoa: Unit =>
235251 0
236252 case _ =>
237253 throw("Match error")
238254 }
239255 tvoa
240256 }
241257
242258
243259 func getUserGetBackAmount (voteName,option,user,getBackSWOPHeight) = {
244260 let key = ((((((voteName + "_") + option) + "_") + toString(user)) + "_") + toString(getBackSWOPHeight))
245261 valueOrErrorMessage(getInteger(this, key), ("No data on the key: " + key))
246262 }
247263
248264
249265 func claimCalc (caller) = {
250266 let lastInterest = getLastInterestInfo()
251- let $t089959075 = getUserInterestInfo(caller, lastInterest)
252- let userLastInterest = $t089959075._1
253- let userSWOPLocked = $t089959075._2
267+ let $t093009380 = getUserInterestInfo(caller, lastInterest)
268+ let userLastInterest = $t093009380._1
269+ let userSWOPLocked = $t093009380._2
254270 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
255271 let userNewInterest = lastInterest
256272 $Tuple2(userNewInterest, claimAmount)
257273 }
258274
259275
260276 @Callable(i)
261277 func airDrop () = if (!(isActive))
262278 then throw("DApp is inactive at this moment")
263279 else {
264- let $t093409415 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
265- let pmtAmount = $t093409415._1
266- let pmtAssetId = $t093409415._2
280+ let $t096479722 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
281+ let pmtAmount = $t096479722._1
282+ let pmtAssetId = $t096479722._2
267283 if ((pmtAssetId != SWOP))
268284 then throw("Incorrect pmtAssetId")
269285 else {
270286 let totalSWOPLocked = getTotalSWOPLocked()
271287 let lastInterest = getLastInterestInfo()
272288 let interestNew = (lastInterest + fraction(pmtAmount, scaleValue, totalSWOPLocked))
273289 [IntegerEntry(keyLastInterest, interestNew)]
274290 }
275291 }
276292
277293
278294
279295 @Callable(i)
280296 func lockSWOP () = if (!(isActive))
281297 then throw("DApp is inactive at this moment")
282298 else {
283- let $t098539928 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
284- let pmtAmount = $t098539928._1
285- let pmtAssetId = $t098539928._2
299+ let $t01016010235 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
300+ let pmtAmount = $t01016010235._1
301+ let pmtAssetId = $t01016010235._2
286302 if ((pmtAssetId != SWOP))
287303 then throw("Incorrect pmtAssetId")
288304 else {
289305 let lastInterest = getLastInterestInfo()
290- let $t01004410126 = getUserInterestInfo(i.caller, lastInterest)
291- let userLastInterest = $t01004410126._1
292- let userSWOPLocked = $t01004410126._2
306+ let $t01035110433 = getUserInterestInfo(i.caller, lastInterest)
307+ let userLastInterest = $t01035110433._1
308+ let userSWOPLocked = $t01035110433._2
293309 let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
294310 let userSWOPLockedNew = ((userSWOPLocked + pmtAmount) + claimAmount)
295311 let userNewInterest = lastInterest
296312 let totalSWOPLocked = getTotalSWOPLocked()
297313 let totalSWOPLockedNew = ((totalSWOPLocked + pmtAmount) + claimAmount)
298314 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
299315 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
300316 [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPLocked), userSWOPLockedNew), IntegerEntry(keyTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
301317 }
302318 }
303319
304320
305321
306322 @Callable(i)
307323 func withdrawSWOP (withdrawAmount) = if (!(isActive))
308324 then throw("DApp is inactive at this moment")
309325 else if ((0 >= withdrawAmount))
310326 then throw("withdrawAmount <= 0")
311327 else {
312328 let totalSWOPLocked = getTotalSWOPLocked()
313329 let userSWOPLocked = getUserSWOPLocked(i.caller)
314- let $t01127611331 = claimCalc(i.caller)
315- let userNewInterest = $t01127611331._1
316- let claimAmount = $t01127611331._2
317- let $t01133611401 = getUserVoteInfo(i.caller)
318- let userVoteAmount = $t01133611401._1
319- let userUnvoteAmount = $t01133611401._2
330+ let $t01158511640 = claimCalc(i.caller)
331+ let userNewInterest = $t01158511640._1
332+ let claimAmount = $t01158511640._2
333+ let $t01164511710 = getUserVoteInfo(i.caller)
334+ let userVoteAmount = $t01164511710._1
335+ let userUnvoteAmount = $t01164511710._2
320336 let userVoteAmountForNewPool = getUserTotalVoteForNewPoolAmount(i.caller)
321337 if (if (if ((0 > userUnvoteAmount))
322338 then true
323339 else (0 > userVoteAmount))
324340 then true
325341 else (0 > userVoteAmountForNewPool))
326342 then throw("userUnvoteAmount < 0 || userVoteAmount < 0 || userVoteAmountForNewPool < 0")
327343 else {
328344 let availableToUnstake = (userSWOPLocked - max([userVoteAmountForNewPool, (userVoteAmount + userUnvoteAmount)]))
329345 if ((withdrawAmount > availableToUnstake))
330346 then throw("withdrawAmount > availableToUnstake")
331347 else {
332348 let totalSWOPLockedNew = ((totalSWOPLocked + claimAmount) - withdrawAmount)
333349 let userSWOPamountNew = ((userSWOPLocked + claimAmount) - withdrawAmount)
334350 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
335351 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
336352 [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPLocked), userSWOPamountNew), IntegerEntry(keyTotalSWOPLocked, totalSWOPLockedNew), ScriptTransfer(i.caller, withdrawAmount, SWOP), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
337353 }
338354 }
339355 }
340356
341357
342358
343359 @Callable(i)
344360 func claimAndWithdrawSWOP () = if (!(isActive))
345361 then throw("DApp is inactive at this moment")
346362 else {
347363 let lastInterest = getLastInterestInfo()
348- let $t01277612831 = claimCalc(i.caller)
349- let userNewInterest = $t01277612831._1
350- let claimAmount = $t01277612831._2
364+ let $t01308513140 = claimCalc(i.caller)
365+ let userNewInterest = $t01308513140._1
366+ let claimAmount = $t01308513140._2
351367 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
352368 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
353369 if ((claimAmount == 0))
354370 then throw("You have 0 available SWOP")
355371 else [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount), ScriptTransfer(i.caller, claimAmount, SWOP)]
356372 }
357373
358374
359375
360376 @Callable(i)
361377 func claimAndStakeSWOP () = if (!(isActive))
362378 then throw("DApp is inactive at this moment")
363379 else {
364380 let totalSWOPLocked = getTotalSWOPLocked()
365381 let userSWOPLocked = getUserSWOPLocked(i.caller)
366382 let lastInterest = getLastInterestInfo()
367- let $t01361013665 = claimCalc(i.caller)
368- let userNewInterest = $t01361013665._1
369- let claimAmount = $t01361013665._2
383+ let $t01391913974 = claimCalc(i.caller)
384+ let userNewInterest = $t01391913974._1
385+ let claimAmount = $t01391913974._2
370386 let userSWOPLockedNew = (userSWOPLocked + claimAmount)
371387 let totalSWOPLockedNew = (totalSWOPLocked + claimAmount)
372388 let userClaimedAmount = getUserSWOPClaimedAmount(i.caller)
373389 let userClaimedAmountNew = (userClaimedAmount + claimAmount)
374390 if ((claimAmount == 0))
375391 then throw("You have 0 available SWOP")
376392 else [IntegerEntry((toString(i.caller) + keyUserLastInterest), userNewInterest), IntegerEntry(keyTotalSWOPLocked, totalSWOPLockedNew), IntegerEntry((toString(i.caller) + keyUserSWOPLocked), userSWOPLockedNew), IntegerEntry((toString(i.caller) + keyUserSWOPClaimedAmount), userClaimedAmountNew), IntegerEntry((toString(i.caller) + keyUserSWOPLastClaimedAmount), claimAmount)]
377393 }
378394
379395
380396
381397 @Callable(i)
382398 func updateWeights (currentPools,currentRewards,rewardUpdateHeight,pagination) = if (!(isActive))
383399 then throw("DApp is inactive at this moment")
384400 else {
385401 let amountPools = 10
386402 let totalRewardUpdateHeight = valueOrElse(getInteger(this, keyRewardUpdateHeight), 0)
387403 if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop, adminPubKeyWallet], i.callerPublicKey)))
388404 then throw("Only admin can call this function")
389405 else if ((size(currentPools) > amountPools))
390406 then throw(("Max amount of pool is " + toString(amountPools)))
391407 else if ((totalRewardUpdateHeight >= rewardUpdateHeight))
392408 then throw("rewardUpdateHeight <= totalRewardUpdateHeight")
393409 else if ((height >= rewardUpdateHeight))
394410 then throw("height >= rewardUpdateHeight")
395411 else if ((0 >= rewardUpdateHeight))
396412 then throw("0 >= rewardUpdateHeight ")
397413 else {
398414 func sum (a,b) = (a + b)
399415
400416 func changePreviousRewardEntry (accumulated,pool) = {
401417 let poolRewardUpdateHeight = getPoolUpdateHeight(pool)
402418 if (if (!(isDefinePoolUpdateHeight(pool)))
403419 then true
404420 else if ((rewardUpdateHeight != poolRewardUpdateHeight))
405421 then (poolRewardUpdateHeight == totalRewardUpdateHeight)
406422 else false)
407423 then {
408424 let poolReward = getCurPoolWeight(pool)
409425 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
410426 }
411427 else {
412428 let poolReward = getPrevPoolWeight(pool)
413429 IntegerEntry((pool + keyRewardPoolFractionPrevious), poolReward) :: accumulated
414430 }
415431 }
416432
417433 func changeCurrentRewardEntry (accumulated,pool) = {
418434 let poolIndex = value(indexOf(currentPools, pool))
419435 let poolReward = currentRewards[poolIndex]
420436 if ((0 > poolReward))
421437 then throw("PoolReward < 0")
422438 else IntegerEntry((pool + keyRewardPoolFractionCurrent), poolReward) :: accumulated
423439 }
424440
425441 func changeHeightEntry (accumulated,pool) = {
426442 let poolHeight = rewardUpdateHeight
427443 IntegerEntry((pool + keyHeightPoolFraction), poolHeight) :: accumulated
428444 }
429445
430446 func getSumReward (curTempSum,pagination) = if ((pagination == 0))
431447 then if ((curTempSum > totalVoteShare))
432448 then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString(curTempSum)))
433449 else $Tuple2([IntegerEntry(keyTempCurSum, curTempSum)], [IntegerEntry(keyRewardUpdateFirstPaginationHeight, rewardUpdateHeight)])
434450 else if ((pagination == 1))
435451 then {
436452 let curTempSumFromKey = valueOrElse(getInteger(this, keyTempCurSum), 0)
437453 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
438454 if (((curTempSum + curTempSumFromKey) > totalVoteShare))
439455 then throw(((("sumRewardPrevious > totalVoteShare or sumRewardCurrent > totalVoteShare - " + toString(pagination)) + " ") + toString((curTempSum + curTempSumFromKey))))
440456 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
441457 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
442458 else $Tuple2([IntegerEntry(keyTempCurSum, (curTempSum + curTempSumFromKey))], nil)
443459 }
444460 else if ((pagination == 2))
445461 then {
446462 let curSum = (valueOrElse(getInteger(this, keyTempCurSum), 0) + curTempSum)
447463 let rewardUpdateHeightFirstPaginationEntry = valueOrElse(getInteger(this, keyRewardUpdateFirstPaginationHeight), 0)
448464 if ((curSum != totalVoteShare))
449465 then throw("sumRewardPrevious != totalVoteShare or sumRewardCurrent != totalVoteShare")
450466 else if ((rewardUpdateHeightFirstPaginationEntry != rewardUpdateHeight))
451467 then throw("current rewardUpdateHeight != rewardUpdateHeightFirstPaginationEntry")
452468 else $Tuple2([IntegerEntry(keyTempCurSum, curSum)], nil)
453469 }
454470 else throw("Incorrect pagination")
455471
456472 let previousRewardEntryNew = {
457- let $list1853718589 = currentPools
458- let $size1853718589 = size($list1853718589)
459- let $acc01853718589 = nil
460- if (($size1853718589 == 0))
461- then $acc01853718589
473+ let $list1883518887 = currentPools
474+ let $size1883518887 = size($list1883518887)
475+ let $acc01883518887 = nil
476+ if (($size1883518887 == 0))
477+ then $acc01883518887
462478 else {
463- let $acc11853718589 = changePreviousRewardEntry($acc01853718589, $list1853718589[0])
464- if (($size1853718589 == 1))
465- then $acc11853718589
479+ let $acc11883518887 = changePreviousRewardEntry($acc01883518887, $list1883518887[0])
480+ if (($size1883518887 == 1))
481+ then $acc11883518887
466482 else {
467- let $acc21853718589 = changePreviousRewardEntry($acc11853718589, $list1853718589[1])
468- if (($size1853718589 == 2))
469- then $acc21853718589
483+ let $acc21883518887 = changePreviousRewardEntry($acc11883518887, $list1883518887[1])
484+ if (($size1883518887 == 2))
485+ then $acc21883518887
470486 else {
471- let $acc31853718589 = changePreviousRewardEntry($acc21853718589, $list1853718589[2])
472- if (($size1853718589 == 3))
473- then $acc31853718589
487+ let $acc31883518887 = changePreviousRewardEntry($acc21883518887, $list1883518887[2])
488+ if (($size1883518887 == 3))
489+ then $acc31883518887
474490 else {
475- let $acc41853718589 = changePreviousRewardEntry($acc31853718589, $list1853718589[3])
476- if (($size1853718589 == 4))
477- then $acc41853718589
491+ let $acc41883518887 = changePreviousRewardEntry($acc31883518887, $list1883518887[3])
492+ if (($size1883518887 == 4))
493+ then $acc41883518887
478494 else {
479- let $acc51853718589 = changePreviousRewardEntry($acc41853718589, $list1853718589[4])
480- if (($size1853718589 == 5))
481- then $acc51853718589
495+ let $acc51883518887 = changePreviousRewardEntry($acc41883518887, $list1883518887[4])
496+ if (($size1883518887 == 5))
497+ then $acc51883518887
482498 else {
483- let $acc61853718589 = changePreviousRewardEntry($acc51853718589, $list1853718589[5])
484- if (($size1853718589 == 6))
485- then $acc61853718589
499+ let $acc61883518887 = changePreviousRewardEntry($acc51883518887, $list1883518887[5])
500+ if (($size1883518887 == 6))
501+ then $acc61883518887
486502 else {
487- let $acc71853718589 = changePreviousRewardEntry($acc61853718589, $list1853718589[6])
488- if (($size1853718589 == 7))
489- then $acc71853718589
503+ let $acc71883518887 = changePreviousRewardEntry($acc61883518887, $list1883518887[6])
504+ if (($size1883518887 == 7))
505+ then $acc71883518887
490506 else {
491- let $acc81853718589 = changePreviousRewardEntry($acc71853718589, $list1853718589[7])
492- if (($size1853718589 == 8))
493- then $acc81853718589
507+ let $acc81883518887 = changePreviousRewardEntry($acc71883518887, $list1883518887[7])
508+ if (($size1883518887 == 8))
509+ then $acc81883518887
494510 else {
495- let $acc91853718589 = changePreviousRewardEntry($acc81853718589, $list1853718589[8])
496- if (($size1853718589 == 9))
497- then $acc91853718589
511+ let $acc91883518887 = changePreviousRewardEntry($acc81883518887, $list1883518887[8])
512+ if (($size1883518887 == 9))
513+ then $acc91883518887
498514 else {
499- let $acc101853718589 = changePreviousRewardEntry($acc91853718589, $list1853718589[9])
500- if (($size1853718589 == 10))
501- then $acc101853718589
515+ let $acc101883518887 = changePreviousRewardEntry($acc91883518887, $list1883518887[9])
516+ if (($size1883518887 == 10))
517+ then $acc101883518887
502518 else {
503- let $acc111853718589 = changePreviousRewardEntry($acc101853718589, $list1853718589[10])
519+ let $acc111883518887 = changePreviousRewardEntry($acc101883518887, $list1883518887[10])
504520 throw("List size exceed 10")
505521 }
506522 }
507523 }
508524 }
509525 }
510526 }
511527 }
512528 }
513529 }
514530 }
515531 }
516532 }
517533 let currentRewardEntryNew = {
518- let $list1862218674 = currentPools
519- let $size1862218674 = size($list1862218674)
520- let $acc01862218674 = nil
521- if (($size1862218674 == 0))
522- then $acc01862218674
534+ let $list1892018972 = currentPools
535+ let $size1892018972 = size($list1892018972)
536+ let $acc01892018972 = nil
537+ if (($size1892018972 == 0))
538+ then $acc01892018972
523539 else {
524- let $acc11862218674 = changeCurrentRewardEntry($acc01862218674, $list1862218674[0])
525- if (($size1862218674 == 1))
526- then $acc11862218674
540+ let $acc11892018972 = changeCurrentRewardEntry($acc01892018972, $list1892018972[0])
541+ if (($size1892018972 == 1))
542+ then $acc11892018972
527543 else {
528- let $acc21862218674 = changeCurrentRewardEntry($acc11862218674, $list1862218674[1])
529- if (($size1862218674 == 2))
530- then $acc21862218674
544+ let $acc21892018972 = changeCurrentRewardEntry($acc11892018972, $list1892018972[1])
545+ if (($size1892018972 == 2))
546+ then $acc21892018972
531547 else {
532- let $acc31862218674 = changeCurrentRewardEntry($acc21862218674, $list1862218674[2])
533- if (($size1862218674 == 3))
534- then $acc31862218674
548+ let $acc31892018972 = changeCurrentRewardEntry($acc21892018972, $list1892018972[2])
549+ if (($size1892018972 == 3))
550+ then $acc31892018972
535551 else {
536- let $acc41862218674 = changeCurrentRewardEntry($acc31862218674, $list1862218674[3])
537- if (($size1862218674 == 4))
538- then $acc41862218674
552+ let $acc41892018972 = changeCurrentRewardEntry($acc31892018972, $list1892018972[3])
553+ if (($size1892018972 == 4))
554+ then $acc41892018972
539555 else {
540- let $acc51862218674 = changeCurrentRewardEntry($acc41862218674, $list1862218674[4])
541- if (($size1862218674 == 5))
542- then $acc51862218674
556+ let $acc51892018972 = changeCurrentRewardEntry($acc41892018972, $list1892018972[4])
557+ if (($size1892018972 == 5))
558+ then $acc51892018972
543559 else {
544- let $acc61862218674 = changeCurrentRewardEntry($acc51862218674, $list1862218674[5])
545- if (($size1862218674 == 6))
546- then $acc61862218674
560+ let $acc61892018972 = changeCurrentRewardEntry($acc51892018972, $list1892018972[5])
561+ if (($size1892018972 == 6))
562+ then $acc61892018972
547563 else {
548- let $acc71862218674 = changeCurrentRewardEntry($acc61862218674, $list1862218674[6])
549- if (($size1862218674 == 7))
550- then $acc71862218674
564+ let $acc71892018972 = changeCurrentRewardEntry($acc61892018972, $list1892018972[6])
565+ if (($size1892018972 == 7))
566+ then $acc71892018972
551567 else {
552- let $acc81862218674 = changeCurrentRewardEntry($acc71862218674, $list1862218674[7])
553- if (($size1862218674 == 8))
554- then $acc81862218674
568+ let $acc81892018972 = changeCurrentRewardEntry($acc71892018972, $list1892018972[7])
569+ if (($size1892018972 == 8))
570+ then $acc81892018972
555571 else {
556- let $acc91862218674 = changeCurrentRewardEntry($acc81862218674, $list1862218674[8])
557- if (($size1862218674 == 9))
558- then $acc91862218674
572+ let $acc91892018972 = changeCurrentRewardEntry($acc81892018972, $list1892018972[8])
573+ if (($size1892018972 == 9))
574+ then $acc91892018972
559575 else {
560- let $acc101862218674 = changeCurrentRewardEntry($acc91862218674, $list1862218674[9])
561- if (($size1862218674 == 10))
562- then $acc101862218674
576+ let $acc101892018972 = changeCurrentRewardEntry($acc91892018972, $list1892018972[9])
577+ if (($size1892018972 == 10))
578+ then $acc101892018972
563579 else {
564- let $acc111862218674 = changeCurrentRewardEntry($acc101862218674, $list1862218674[10])
580+ let $acc111892018972 = changeCurrentRewardEntry($acc101892018972, $list1892018972[10])
565581 throw("List size exceed 10")
566582 }
567583 }
568584 }
569585 }
570586 }
571587 }
572588 }
573589 }
574590 }
575591 }
576592 }
577593 }
578594 let heightEntryNewCur = {
579- let $list1870318748 = currentPools
580- let $size1870318748 = size($list1870318748)
581- let $acc01870318748 = nil
582- if (($size1870318748 == 0))
583- then $acc01870318748
595+ let $list1900119046 = currentPools
596+ let $size1900119046 = size($list1900119046)
597+ let $acc01900119046 = nil
598+ if (($size1900119046 == 0))
599+ then $acc01900119046
584600 else {
585- let $acc11870318748 = changeHeightEntry($acc01870318748, $list1870318748[0])
586- if (($size1870318748 == 1))
587- then $acc11870318748
601+ let $acc11900119046 = changeHeightEntry($acc01900119046, $list1900119046[0])
602+ if (($size1900119046 == 1))
603+ then $acc11900119046
588604 else {
589- let $acc21870318748 = changeHeightEntry($acc11870318748, $list1870318748[1])
590- if (($size1870318748 == 2))
591- then $acc21870318748
605+ let $acc21900119046 = changeHeightEntry($acc11900119046, $list1900119046[1])
606+ if (($size1900119046 == 2))
607+ then $acc21900119046
592608 else {
593- let $acc31870318748 = changeHeightEntry($acc21870318748, $list1870318748[2])
594- if (($size1870318748 == 3))
595- then $acc31870318748
609+ let $acc31900119046 = changeHeightEntry($acc21900119046, $list1900119046[2])
610+ if (($size1900119046 == 3))
611+ then $acc31900119046
596612 else {
597- let $acc41870318748 = changeHeightEntry($acc31870318748, $list1870318748[3])
598- if (($size1870318748 == 4))
599- then $acc41870318748
613+ let $acc41900119046 = changeHeightEntry($acc31900119046, $list1900119046[3])
614+ if (($size1900119046 == 4))
615+ then $acc41900119046
600616 else {
601- let $acc51870318748 = changeHeightEntry($acc41870318748, $list1870318748[4])
602- if (($size1870318748 == 5))
603- then $acc51870318748
617+ let $acc51900119046 = changeHeightEntry($acc41900119046, $list1900119046[4])
618+ if (($size1900119046 == 5))
619+ then $acc51900119046
604620 else {
605- let $acc61870318748 = changeHeightEntry($acc51870318748, $list1870318748[5])
606- if (($size1870318748 == 6))
607- then $acc61870318748
621+ let $acc61900119046 = changeHeightEntry($acc51900119046, $list1900119046[5])
622+ if (($size1900119046 == 6))
623+ then $acc61900119046
608624 else {
609- let $acc71870318748 = changeHeightEntry($acc61870318748, $list1870318748[6])
610- if (($size1870318748 == 7))
611- then $acc71870318748
625+ let $acc71900119046 = changeHeightEntry($acc61900119046, $list1900119046[6])
626+ if (($size1900119046 == 7))
627+ then $acc71900119046
612628 else {
613- let $acc81870318748 = changeHeightEntry($acc71870318748, $list1870318748[7])
614- if (($size1870318748 == 8))
615- then $acc81870318748
629+ let $acc81900119046 = changeHeightEntry($acc71900119046, $list1900119046[7])
630+ if (($size1900119046 == 8))
631+ then $acc81900119046
616632 else {
617- let $acc91870318748 = changeHeightEntry($acc81870318748, $list1870318748[8])
618- if (($size1870318748 == 9))
619- then $acc91870318748
633+ let $acc91900119046 = changeHeightEntry($acc81900119046, $list1900119046[8])
634+ if (($size1900119046 == 9))
635+ then $acc91900119046
620636 else {
621- let $acc101870318748 = changeHeightEntry($acc91870318748, $list1870318748[9])
622- if (($size1870318748 == 10))
623- then $acc101870318748
637+ let $acc101900119046 = changeHeightEntry($acc91900119046, $list1900119046[9])
638+ if (($size1900119046 == 10))
639+ then $acc101900119046
624640 else {
625- let $acc111870318748 = changeHeightEntry($acc101870318748, $list1870318748[10])
641+ let $acc111900119046 = changeHeightEntry($acc101900119046, $list1900119046[10])
626642 throw("List size exceed 10")
627643 }
628644 }
629645 }
630646 }
631647 }
632648 }
633649 }
634650 }
635651 }
636652 }
637653 }
638654 }
639655 let sumRewardCurrentTemp = {
640- let $list1878218814 = currentRewards
641- let $size1878218814 = size($list1878218814)
642- let $acc01878218814 = 0
643- if (($size1878218814 == 0))
644- then $acc01878218814
656+ let $list1908019112 = currentRewards
657+ let $size1908019112 = size($list1908019112)
658+ let $acc01908019112 = 0
659+ if (($size1908019112 == 0))
660+ then $acc01908019112
645661 else {
646- let $acc11878218814 = sum($acc01878218814, $list1878218814[0])
647- if (($size1878218814 == 1))
648- then $acc11878218814
662+ let $acc11908019112 = sum($acc01908019112, $list1908019112[0])
663+ if (($size1908019112 == 1))
664+ then $acc11908019112
649665 else {
650- let $acc21878218814 = sum($acc11878218814, $list1878218814[1])
651- if (($size1878218814 == 2))
652- then $acc21878218814
666+ let $acc21908019112 = sum($acc11908019112, $list1908019112[1])
667+ if (($size1908019112 == 2))
668+ then $acc21908019112
653669 else {
654- let $acc31878218814 = sum($acc21878218814, $list1878218814[2])
655- if (($size1878218814 == 3))
656- then $acc31878218814
670+ let $acc31908019112 = sum($acc21908019112, $list1908019112[2])
671+ if (($size1908019112 == 3))
672+ then $acc31908019112
657673 else {
658- let $acc41878218814 = sum($acc31878218814, $list1878218814[3])
659- if (($size1878218814 == 4))
660- then $acc41878218814
674+ let $acc41908019112 = sum($acc31908019112, $list1908019112[3])
675+ if (($size1908019112 == 4))
676+ then $acc41908019112
661677 else {
662- let $acc51878218814 = sum($acc41878218814, $list1878218814[4])
663- if (($size1878218814 == 5))
664- then $acc51878218814
678+ let $acc51908019112 = sum($acc41908019112, $list1908019112[4])
679+ if (($size1908019112 == 5))
680+ then $acc51908019112
665681 else {
666- let $acc61878218814 = sum($acc51878218814, $list1878218814[5])
667- if (($size1878218814 == 6))
668- then $acc61878218814
682+ let $acc61908019112 = sum($acc51908019112, $list1908019112[5])
683+ if (($size1908019112 == 6))
684+ then $acc61908019112
669685 else {
670- let $acc71878218814 = sum($acc61878218814, $list1878218814[6])
671- if (($size1878218814 == 7))
672- then $acc71878218814
686+ let $acc71908019112 = sum($acc61908019112, $list1908019112[6])
687+ if (($size1908019112 == 7))
688+ then $acc71908019112
673689 else {
674- let $acc81878218814 = sum($acc71878218814, $list1878218814[7])
675- if (($size1878218814 == 8))
676- then $acc81878218814
690+ let $acc81908019112 = sum($acc71908019112, $list1908019112[7])
691+ if (($size1908019112 == 8))
692+ then $acc81908019112
677693 else {
678- let $acc91878218814 = sum($acc81878218814, $list1878218814[8])
679- if (($size1878218814 == 9))
680- then $acc91878218814
694+ let $acc91908019112 = sum($acc81908019112, $list1908019112[8])
695+ if (($size1908019112 == 9))
696+ then $acc91908019112
681697 else {
682- let $acc101878218814 = sum($acc91878218814, $list1878218814[9])
683- if (($size1878218814 == 10))
684- then $acc101878218814
698+ let $acc101908019112 = sum($acc91908019112, $list1908019112[9])
699+ if (($size1908019112 == 10))
700+ then $acc101908019112
685701 else {
686- let $acc111878218814 = sum($acc101878218814, $list1878218814[10])
702+ let $acc111908019112 = sum($acc101908019112, $list1908019112[10])
687703 throw("List size exceed 10")
688704 }
689705 }
690706 }
691707 }
692708 }
693709 }
694710 }
695711 }
696712 }
697713 }
698714 }
699715 }
700- let $t01882018931 = getSumReward(sumRewardCurrentTemp, pagination)
701- let sumRewardCurrent = $t01882018931._1
702- let rewardUpdateHeightFirstPaginationEntry = $t01882018931._2
716+ let $t01911819229 = getSumReward(sumRewardCurrentTemp, pagination)
717+ let sumRewardCurrent = $t01911819229._1
718+ let rewardUpdateHeightFirstPaginationEntry = $t01911819229._2
703719 let rewardUpdateHeightEntry = if ((pagination == 2))
704720 then [IntegerEntry(keyRewardUpdateHeight, rewardUpdateHeight)]
705721 else nil
706722 if ((height > rewardUpdateHeight))
707723 then throw("rewardUpdateHeight < height")
708724 else (((((previousRewardEntryNew ++ currentRewardEntryNew) ++ heightEntryNewCur) ++ sumRewardCurrent) ++ rewardUpdateHeightEntry) ++ rewardUpdateHeightFirstPaginationEntry)
709725 }
710726 }
711727
712728
713729
714730 @Callable(i)
715731 func shutdown () = if (!(isActive))
716732 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, keyCause), "the cause wasn't specified")))
717733 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
718734 then throw("Only admin can call this function")
719735 else suspend("Paused by admin")
720736
721737
722738
723739 @Callable(i)
724740 func activate () = if (isActive)
725741 then throw("DApp is already active")
726742 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKeyStartStop], i.callerPublicKey)))
727743 then throw("Only admin can call this function")
728744 else [BooleanEntry(keyActive, true), DeleteEntry(keyCause)]
729745
730746
731747 @Verifier(tx)
732-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
748+func verify () = {
749+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
750+ then 1
751+ else 0
752+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
753+ then 1
754+ else 0
755+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
756+ then 1
757+ else 0
758+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
759+ }
733760

github/deemru/w8io/169f3d6 
343.15 ms