tx · 37j5GHYvnciKjeiEYLjeAJ3Pkf7TD5LQjEGmea7NEx3c

3MxZ7YNAqigXR5jrgvpb48Uc6B29ouDzQyN:  -0.03700000 Waves

2023.06.24 13:14 [2636562] smart account 3MxZ7YNAqigXR5jrgvpb48Uc6B29ouDzQyN > SELF 0.00000000 Waves

{ "type": 13, "id": "37j5GHYvnciKjeiEYLjeAJ3Pkf7TD5LQjEGmea7NEx3c", "fee": 3700000, "feeAssetId": null, "timestamp": 1687601680146, "version": 2, "chainId": 84, "sender": "3MxZ7YNAqigXR5jrgvpb48Uc6B29ouDzQyN", "senderPublicKey": "HHCdafdi3D2htEYJw8cBoNYC8w76euLWKYENK4kanmGM", "proofs": [ "PNmMSkZ3sE7Turzau4otcqftdvkK4JoN1UmVZgWYjujoFu7nn6zoEowMGrVHZu8mVjcunSec5XzZMpfLMis3ihb" ], "script": "base64:BgJBCAISBQoDAQEEEgUKAwgIARIAEgMKAQESABIAEgASAwoBARIDCgEBEgMKAQESABIAEgASAwoBCBIDCgEIEgMKAQhlAA1rX3RvdGFsU3VwcGx5Ag1rX3RvdGFsU3VwcGx5AA9rX3Jld2FyZEJhbGFuY2UCD2tfcmV3YXJkQmFsYW5jZQAPa19sb2NrZWRCYWxhbmNlAg9rX2xvY2tlZEJhbGFuY2UADWtfZnJlZUJhbGFuY2UCDWtfZnJlZUJhbGFuY2UAD2tfZXhjZXNzQmFsYW5jZQIPa19leGNlc3NCYWxhbmNlAAxrX3ZhdWx0QXNzZXQCDGtfdmF1bHRBc3NldAAUa192YXVsdEFzc2V0RGVjaW1hbHMCFGtfdmF1bHRBc3NldERlY2ltYWxzABRrX21heFNwb3RVdGlsaXphdGlvbgIUa19tYXhTcG90VXRpbGl6YXRpb24AE2tfd2l0aGRyYXdQZXJQZXJpb2QCE2tfd2l0aGRyYXdQZXJQZXJpb2QAE2tfd2l0aGRyYXdVbmxpbWl0ZWQCE2tfd2l0aGRyYXdVbmxpbWl0ZWQABmtfcmF0ZQIGa19yYXRlABBrX2xhc3RVcGRhdGVUaW1lAhBrX2xhc3RVcGRhdGVUaW1lABZrX3Jld2FyZFBlclRva2VuU3RvcmVkAhZrX3Jld2FyZFBlclRva2VuU3RvcmVkAAxrX3Jld2FyZFJhdGUCDGtfcmV3YXJkUmF0ZQAOa19wZXJpb2RGaW5pc2gCDmtfcGVyaW9kRmluaXNoABRrX3VzZXJSZXdhcmRQZXJUb2tlbgIUa191c2VyUmV3YXJkUGVyVG9rZW4ADGtfdXNlclJld2FyZAIMa191c2VyUmV3YXJkAAlrX2JhbGFuY2UCCWtfYmFsYW5jZQAOa19hdmVyYWdlX3JhdGUCDmtfYXZlcmFnZV9yYXRlABBrX3dpdGhkcmF3X2xpbWl0AhBrX3dpdGhkcmF3X2xpbWl0ABRrX2xhc3Rfd2l0aGRyYXdfZGF0ZQIUa19sYXN0X3dpdGhkcmF3X2RhdGUAFGtfd2l0aGRyYXdfaW5fcGVyaW9kAhRrX3dpdGhkcmF3X2luX3BlcmlvZAANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzAAVrX2FtbQIFa19hbW0AEmtfZ292ZXJuYW5jZV9hc3NldAILa19nb3ZfYXNzZXQADWtfcXVvdGVfYXNzZXQCDWtfcXVvdGVfYXNzZXQAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABFrX21hbmFnZXJfYWRkcmVzcwIRa19tYW5hZ2VyX2FkZHJlc3MADmtfc3BvdF9hZGRyZXNzAg5rX3Nwb3RfYWRkcmVzcwAUa19jb2xsYXRlcmFsX2FkZHJlc3MCFGtfY29sbGF0ZXJhbF9hZGRyZXNzAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MCE0Nvb3JkaW5hdG9yIG5vdCBzZXQCG0Nvb3JkaW5hdG9yIGFkZHJlc3MgaW52YWxpZAEMYWRtaW5BZGRyZXNzAAkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUPa19hZG1pbl9hZGRyZXNzAhVBZG1pbiBhZGRyZXNzIG5vdCBzZXQBC2lzV2hpdGVsaXN0AQhfYWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmwgCCQELY29vcmRpbmF0b3IACQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQUIX2FkZHJlc3MHAQtzcG90QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUOa19zcG90X2FkZHJlc3MCFFNwb3QgYWRkcmVzcyBub3Qgc2V0AhRTcG90IGFkZHJlc3MgaW52YWxpZAEPZ292ZXJuYW5jZUFzc2V0AAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUSa19nb3Zlcm5hbmNlX2Fzc2V0AhhHb3Zlcm5hbmNlIGFzc2V0IG5vdCBzZXQBCnF1b3RlQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFDWtfcXVvdGVfYXNzZXQBDXZhdWx0QXNzZXRTdHIACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa192YXVsdEFzc2V0AhNWYXVsdCBhc3NldCBub3Qgc2V0AQp2YXVsdEFzc2V0AAQLX2Fzc2V0SWRTdHIJAQ12YXVsdEFzc2V0U3RyAAMJAAACBQtfYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQULX2Fzc2V0SWRTdHIBEnZhdWx0QXNzZXREZWNpbWFscwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBRRrX3ZhdWx0QXNzZXREZWNpbWFscwIcVmF1bHQgYXNzZXQgZGVjaW1hbHMgbm90IHNldAEObWFuYWdlckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEWtfbWFuYWdlcl9hZGRyZXNzAhdNYW5hZ2VyIGFkZHJlc3Mgbm90IHNldAIXTWFuYWdlciBhZGRyZXNzIGludmFsaWQADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoACgAKAAhEVVJBVElPTgkAaAIJAGgCCQBoAgAHADwAPAAYAApOT19BRERSRVNTAgAACU5PX1NUQUtFUgAAARFhc3NldEZyb21EZWNpbWFscwEHX2Ftb3VudAQNYXNzZXREZWNpbWFscwkBEnZhdWx0QXNzZXREZWNpbWFscwADCQAAAgUNYXNzZXREZWNpbWFscwAGCQBpAgUHX2Ftb3VudABkAwkAAAIFDWFzc2V0RGVjaW1hbHMACAUHX2Ftb3VudAkAAgECFkludmFsaWQgYXNzZXQgZGVjaW1hbHMBD2Fzc2V0VG9EZWNpbWFscwEHX2Ftb3VudAQNYXNzZXREZWNpbWFscwkBEnZhdWx0QXNzZXREZWNpbWFscwADCQAAAgUNYXNzZXREZWNpbWFscwAGCQBoAgUHX2Ftb3VudABkAwkAAAIFDWFzc2V0RGVjaW1hbHMACAUHX2Ftb3VudAkAAgECFkludmFsaWQgYXNzZXQgZGVjaW1hbHMBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEbWludgICX3gCX3kDCQBmAgUCX3gFAl95BQJfeQUCX3gAD1dJVEhEUkFXX1BFUklPRAkAaAIAgKMFAOgHABNXSVRIRFJBV19QRVJfUEVSSU9ECQEEZGl2ZAIJAGgCAAEFDERFQ0lNQUxfVU5JVAkAaAIABAUMREVDSU1BTF9VTklUAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBBGludDABAWsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawAAAQRpbnQxAQFrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFDERFQ0lNQUxfVU5JVAEFaW50T3ICAWsDdmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFA3ZhbAELdG90YWxTdXBwbHkACQEEaW50MAEFDWtfdG90YWxTdXBwbHkBBHJhdGUACQEEaW50MQEFBmtfcmF0ZQEJYmFsYW5jZU9mAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFCWtfYmFsYW5jZQUHX3N0YWtlcgELYXZlcmFnZVJhdGUBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUOa19hdmVyYWdlX3JhdGUFB19zdGFrZXIBDXdpdGhkcmF3TGltaXQBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUQa193aXRoZHJhd19saW1pdAUHX3N0YWtlcgERd2l0aGRyYXduSW5QZXJpb2QBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUUa193aXRoZHJhd19pbl9wZXJpb2QFB19zdGFrZXIBEWxhc3RXaXRoZHJhd25EYXRlAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFFGtfbGFzdF93aXRoZHJhd19kYXRlBQdfc3Rha2VyAQtmcmVlQmFsYW5jZQAJAQRpbnQwAQUNa19mcmVlQmFsYW5jZQENbG9ja2VkQmFsYW5jZQAJAQRpbnQwAQUPa19sb2NrZWRCYWxhbmNlAQ1leGNlc3NCYWxhbmNlAAkBBGludDABBQ9rX2V4Y2Vzc0JhbGFuY2UBFHJld2FyZFBlclRva2VuU3RvcmVkAAkBBGludDABBRZrX3Jld2FyZFBlclRva2VuU3RvcmVkAQ5sYXN0VXBkYXRlVGltZQAJAQRpbnQwAQUQa19sYXN0VXBkYXRlVGltZQEKcmV3YXJkUmF0ZQAJAQRpbnQwAQUMa19yZXdhcmRSYXRlAQxwZXJpb2RGaW5pc2gACQEEaW50MAEFDmtfcGVyaW9kRmluaXNoAQ1yZXdhcmRCYWxhbmNlAAkBBGludDABBQ9rX3Jld2FyZEJhbGFuY2UBB3Jld2FyZHMBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUMa191c2VyUmV3YXJkBQdfc3Rha2VyARZ1c2VyUmV3YXJkUGVyVG9rZW5QYWlkAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFFGtfdXNlclJld2FyZFBlclRva2VuBQdfc3Rha2VyARJtYXhTcG90VXRpbGl6YXRpb24ACQEEaW50MAEFFGtfbWF4U3BvdFV0aWxpemF0aW9uARF3aXRoZHJhd1BlclBlcmlvZAAJAQVpbnRPcgIFE2tfd2l0aGRyYXdQZXJQZXJpb2QFE1dJVEhEUkFXX1BFUl9QRVJJT0QBEXdpdGhkcmF3VW5saW1pdGVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBRNrX3dpdGhkcmF3VW5saW1pdGVkBwELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHARBjdXJyZW50VGltZXN0YW1wAAgFCWxhc3RCbG9jawl0aW1lc3RhbXABE2N1cnJlbnRUaW1lc3RhbXBTZWMACQBpAgkBEGN1cnJlbnRUaW1lc3RhbXAAAOgHARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEHX3N0YWtlcgQLY3VycmVudERhdGUJARBjdXJyZW50VGltZXN0YW1wAAQQbGFzdFdpdGhkcmF3RGF0ZQkBEWxhc3RXaXRoZHJhd25EYXRlAQUHX3N0YWtlcgQLJHQwNjU5OTcxMDYDCQBmAgkAZQIFC2N1cnJlbnREYXRlBRBsYXN0V2l0aGRyYXdEYXRlBQ9XSVRIRFJBV19QRVJJT0QJAJUKAwULY3VycmVudERhdGUJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgAABBJfd2l0aGRyYXduSW5QZXJpb2QJARF3aXRoZHJhd25JblBlcmlvZAEFB19zdGFrZXIDCQERd2l0aGRyYXdVbmxpbWl0ZWQACQCVCgMFEGxhc3RXaXRoZHJhd0RhdGUJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgUSX3dpdGhkcmF3bkluUGVyaW9kCQCVCgMFEGxhc3RXaXRoZHJhd0RhdGUJAGUCCQENd2l0aGRyYXdMaW1pdAEFB19zdGFrZXIFEl93aXRoZHJhd25JblBlcmlvZAUSX3dpdGhkcmF3bkluUGVyaW9kBBRuZXdMYXN0V2l0aGRyYXduRGF0ZQgFCyR0MDY1OTk3MTA2Al8xBBF3aXRoZHJhd0xpbWl0TGVmdAgFCyR0MDY1OTk3MTA2Al8yBBhhbHJlYWR5V2l0aGRyYXduSW5QZXJpb2QIBQskdDA2NTk5NzEwNgJfMwkAlQoDBRRuZXdMYXN0V2l0aGRyYXduRGF0ZQURd2l0aGRyYXdMaW1pdExlZnQFGGFscmVhZHlXaXRoZHJhd25JblBlcmlvZAEOY29tcHV0ZU5ld1JhdGUBE19hbW91bnRPZlF1b3RlQXNzZXQEB25ld1JhdGUDCQBmAgkBC3RvdGFsU3VwcGx5AAAACQEEZGl2ZAIJAGQCCQELZnJlZUJhbGFuY2UABRNfYW1vdW50T2ZRdW90ZUFzc2V0CQELdG90YWxTdXBwbHkABQxERUNJTUFMX1VOSVQFB25ld1JhdGUBGGxhc3RUaW1lUmV3YXJkQXBwbGljYWJsZQAJAQRtaW52AgkBE2N1cnJlbnRUaW1lc3RhbXBTZWMACQEMcGVyaW9kRmluaXNoAAEOcmV3YXJkUGVyVG9rZW4BDV9iYWxhbmNlRGVsdGEDCQAAAgkAZAIJAQt0b3RhbFN1cHBseQAFDV9iYWxhbmNlRGVsdGEAAAkBFHJld2FyZFBlclRva2VuU3RvcmVkAAQMdGltZUludGVydmFsCQBlAgkBGGxhc3RUaW1lUmV3YXJkQXBwbGljYWJsZQAJAQ5sYXN0VXBkYXRlVGltZQAEEmFjdHVhbFRpbWVJbnRlcnZhbAMJAGYCAAAFDHRpbWVJbnRlcnZhbAAABQx0aW1lSW50ZXJ2YWwEBGRpZmYJAQRkaXZkAgkAaAIJAQpyZXdhcmRSYXRlAAUSYWN0dWFsVGltZUludGVydmFsCQBkAgkBC3RvdGFsU3VwcGx5AAUNX2JhbGFuY2VEZWx0YQkAZAIJARRyZXdhcmRQZXJUb2tlblN0b3JlZAAFBGRpZmYBBmVhcm5lZAIHX3N0YWtlcg1fYmFsYW5jZURlbHRhBAtyZXdhcmREZWx0YQkAZQIJAQ5yZXdhcmRQZXJUb2tlbgEFDV9iYWxhbmNlRGVsdGEJARZ1c2VyUmV3YXJkUGVyVG9rZW5QYWlkAQUHX3N0YWtlcgkAZAIJAQRtdWxkAgkAZAIJAQliYWxhbmNlT2YBBQdfc3Rha2VyBQ1fYmFsYW5jZURlbHRhBQtyZXdhcmREZWx0YQkBB3Jld2FyZHMBBQdfc3Rha2VyAQx1cGRhdGVSZXdhcmQCB19zdGFrZXINX2JhbGFuY2VEZWx0YQQXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQ5yZXdhcmRQZXJUb2tlbgEFDV9iYWxhbmNlRGVsdGEEEW5ld0xhc3RVcGRhdGVUaW1lCQETY3VycmVudFRpbWVzdGFtcFNlYwAECyR0MDgzMjg4NTIwAwkBAiE9AgUHX3N0YWtlcgIACQCUCgIJAQZlYXJuZWQCBQdfc3Rha2VyBQ1fYmFsYW5jZURlbHRhBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkAlAoCAAAAAAQMc3Rha2VyRWFybmVkCAULJHQwODMyODg1MjACXzEEGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAgFCyR0MDgzMjg4NTIwAl8yCQCWCgQFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkBRFuZXdMYXN0VXBkYXRlVGltZQUMc3Rha2VyRWFybmVkBRhzdGFrZXJSZXdhcmRQZXJUb2tlblBhaWQBEXVwZGF0ZVVzZXJCYWxhbmNlAgVfdXNlcgdfY2hhbmdlAwkAZwIJAGQCCQEJYmFsYW5jZU9mAQUFX3VzZXIFB19jaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUJa19iYWxhbmNlBQVfdXNlcgkAZAIJAQliYWxhbmNlT2YBBQVfdXNlcgUHX2NoYW5nZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgItVmF1bHQ6IGNhbiBub3QgdXBkYXRlIHVzZXIgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEJAQliYWxhbmNlT2YBBQVfdXNlcgIJIGNoYW5nZTogCQCkAwEFB19jaGFuZ2UBFHNldFVzZXJXaXRoZHJhd0xpbWl0AgVfdXNlcgVfcmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUQa193aXRoZHJhd19saW1pdAUFX3VzZXIFBV9yYXRlBQNuaWwBEnNldFVzZXJBdmVyYWdlUmF0ZQIFX3VzZXIFX3JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfYXZlcmFnZV9yYXRlBQVfdXNlcgUFX3JhdGUFA25pbAERdXBkYXRlRnJlZUJhbGFuY2UBB19jaGFuZ2UEB2JhbGFuY2UJAQtmcmVlQmFsYW5jZQADCQBnAgkAZAIFB2JhbGFuY2UFB19jaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19mcmVlQmFsYW5jZQkAZAIFB2JhbGFuY2UFB19jaGFuZ2UFA25pbAkAAgEJAKwCAgkArAICCQCsAgICLVZhdWx0OiBjYW4gbm90IHVwZGF0ZSBmcmVlIGJhbGFuY2UuIEJhbGFuY2U6IAkApAMBBQdiYWxhbmNlAgkgY2hhbmdlOiAJAKQDAQUHX2NoYW5nZQETdXBkYXRlTG9ja2VkQmFsYW5jZQEHX2NoYW5nZQQHYmFsYW5jZQkBDWxvY2tlZEJhbGFuY2UAAwkAZwIJAGQCBQdiYWxhbmNlBQdfY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfbG9ja2VkQmFsYW5jZQkAZAIFB2JhbGFuY2UFB19jaGFuZ2UFA25pbAkAAgEJAKwCAgkArAICCQCsAgICL1ZhdWx0OiBjYW4gbm90IHVwZGF0ZSBsb2NrZWQgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEFB2JhbGFuY2UCCSBjaGFuZ2U6IAkApAMBBQdfY2hhbmdlARN1cGRhdGVFeGNlc3NCYWxhbmNlAQdfY2hhbmdlBAxuZXdJbWJhbGFuY2UJAGQCCQENZXhjZXNzQmFsYW5jZQAFB19jaGFuZ2UED3V0aWxpemF0aW9uUmF0ZQkBBGRpdmQCCQEDYWJzAQUMbmV3SW1iYWxhbmNlCQELZnJlZUJhbGFuY2UAAwkAZgIJARJtYXhTcG90VXRpbGl6YXRpb24ABQ91dGlsaXphdGlvblJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfZXhjZXNzQmFsYW5jZQUMbmV3SW1iYWxhbmNlBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICL1ZhdWx0OiBjYW4gbm90IHVwZGF0ZSBleGNlc3MgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEJAQ1leGNlc3NCYWxhbmNlAAIJIGNoYW5nZTogCQCkAwEFB19jaGFuZ2UCEyB1dGlsaXphdGlvbiByYXRlOiAJAKQDAQUPdXRpbGl6YXRpb25SYXRlAhcgbWF4IHV0aWxpemF0aW9uIHJhdGU6IAkApAMBCQESbWF4U3BvdFV0aWxpemF0aW9uAAERdXBkYXRlVG90YWxTdXBwbHkBB19jaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfdG90YWxTdXBwbHkJAGQCCQELdG90YWxTdXBwbHkABQdfY2hhbmdlBQNuaWwBCnVwZGF0ZVJhdGUBBV9yYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrX3JhdGUFBV9yYXRlBQNuaWwBFXNldFVzZXJXaXRoZHJhd1BhcmFtcwMFX3VzZXIRX2xhc3RXaXRoZHJhd0RhdGUKX3dpdGhkcmF3bgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa19sYXN0X3dpdGhkcmF3X2RhdGUFBV91c2VyBRFfbGFzdFdpdGhkcmF3RGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa193aXRoZHJhd19pbl9wZXJpb2QFBV91c2VyBQpfd2l0aGRyYXduBQNuaWwBE3VwZGF0ZVJld2FyZEJhbGFuY2UBBl9kZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19yZXdhcmRCYWxhbmNlCQBkAgkBDXJld2FyZEJhbGFuY2UABQZfZGVsdGEFA25pbAEQdXBkYXRlUmV3YXJkUmF0ZQELX3Jld2FyZFJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtfcmV3YXJkUmF0ZQULX3Jld2FyZFJhdGUFA25pbAEKdXBkYXRlVGltZQIPX2xhc3RVcGRhdGVUaW1lDV9wZXJpb2RGaW5pc2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbGFzdFVwZGF0ZVRpbWUFD19sYXN0VXBkYXRlVGltZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19wZXJpb2RGaW5pc2gFDV9wZXJpb2RGaW5pc2gFA25pbAEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBFV9yZXdhcmRQZXJUb2tlblN0b3JlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa19yZXdhcmRQZXJUb2tlblN0b3JlZAUVX3Jld2FyZFBlclRva2VuU3RvcmVkBQNuaWwBEXVwZGF0ZVVzZXJSZXdhcmRzAwdfc3Rha2VyB19yZXdhcmQTX3VzZXJSZXdhcmRQZXJUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUMa191c2VyUmV3YXJkBQdfc3Rha2VyBQdfcmV3YXJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRRrX3VzZXJSZXdhcmRQZXJUb2tlbgUHX3N0YWtlcgUTX3VzZXJSZXdhcmRQZXJUb2tlbgUDbmlsEAFpAQ5jaGFuZ2VTZXR0aW5ncwMTX21heFNwb3RVdGlsaXphdGlvbhJfd2l0aGRyYXdQZXJQZXJpb2QSX3dpdGhkcmF3VW5saW1pdGVkAwMDAwkBASEBCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYDCQBmAgAABRNfbWF4U3BvdFV0aWxpemF0aW9uBgkAZgIFE19tYXhTcG90VXRpbGl6YXRpb24FDERFQ0lNQUxfVU5JVAYDCQBmAgAABRJfd2l0aGRyYXdQZXJQZXJpb2QGCQBmAgUSX3dpdGhkcmF3UGVyUGVyaW9kBQxERUNJTUFMX1VOSVQJAAIBAh1JbnZhbGlkIGNoYW5nZVNldHRpbmdzIHBhcmFtcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa19tYXhTcG90VXRpbGl6YXRpb24FE19tYXhTcG90VXRpbGl6YXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfd2l0aGRyYXdQZXJQZXJpb2QFEl93aXRoZHJhd1BlclBlcmlvZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUTa193aXRoZHJhd1VubGltaXRlZAUSX3dpdGhkcmF3VW5saW1pdGVkBQNuaWwBaQEKaW5pdGlhbGl6ZQMMX2Nvb3JkaW5hdG9yC192YXVsdEFzc2V0E19tYXhTcG90VXRpbGl6YXRpb24DAwMDCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyBQR0aGlzBgkAZgIAAAUTX21heFNwb3RVdGlsaXphdGlvbgYJAGYCBRNfbWF4U3BvdFV0aWxpemF0aW9uBQxERUNJTUFMX1VOSVQJAAIBAhRVbmFibGUgdG8gaW5pdGlhbGl6ZQQNYXNzZXREZWNpbWFscwMJAAACBQtfdmF1bHRBc3NldAIFV0FWRVMACAQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQULX3ZhdWx0QXNzZXQJAKwCAgISSW52YWxpZCB0b2tlbiBpZDogBQtfdmF1bHRBc3NldAgFBGluZm8IZGVjaW1hbHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUUa19jb29yZGluYXRvckFkZHJlc3MJAKUIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDF9jb29yZGluYXRvcgIbSW52YWxpZCBjb29yZGluYXRvciBhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtfdmF1bHRBc3NldAULX3ZhdWx0QXNzZXQJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtfdmF1bHRBc3NldERlY2ltYWxzBQ1hc3NldERlY2ltYWxzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrX21heFNwb3RVdGlsaXphdGlvbgUTX21heFNwb3RVdGlsaXphdGlvbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYFA25pbAFpAQVzdGFrZQAEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBAdfYW1vdW50CQEPYXNzZXRUb0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnZhdWx0QXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIVSW52YWxpZCBjYWxsIHRvIHN0YWtlBA0kdDAxMzY5MDEzOTE5CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFDSR0MDEzNjkwMTM5MTkCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUNJHQwMTM2OTAxMzkxOQJfMgQMc3Rha2VyRWFybmVkCAUNJHQwMTM2OTAxMzkxOQJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAUNJHQwMTM2OTAxMzkxOQJfNAQLY3VycmVudFJhdGUJAQRyYXRlAAQPcHJldkF2ZXJhZ2VSYXRlCQELYXZlcmFnZVJhdGUBBQdfc3Rha2VyBAd2QW1vdW50CQEEZGl2ZAIFB19hbW91bnQFC2N1cnJlbnRSYXRlBA5uZXdBdmVyYWdlUmF0ZQkBBGRpdmQCCQBkAgkBBG11bGQCBQd2QW1vdW50BQtjdXJyZW50UmF0ZQkBBG11bGQCCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgUPcHJldkF2ZXJhZ2VSYXRlCQBkAgUHdkFtb3VudAkBCWJhbGFuY2VPZgEFB19zdGFrZXIED25ld1RvdGFsQmFsYW5jZQkAZAIFB3ZBbW91bnQJAQliYWxhbmNlT2YBBQdfc3Rha2VyBBBuZXdXaXRoZHJhd0xpbWl0CQEEbXVsZAIFD25ld1RvdGFsQmFsYW5jZQkBEXdpdGhkcmF3UGVyUGVyaW9kAAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKdmF1bHRBc3NldAAJARFhc3NldEZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEBm5vdGlmeQMJAGYCCQESbWF4U3BvdFV0aWxpemF0aW9uAAAACQD8BwQJAQtzcG90QWRkcmVzcwACGG5vdGlmeVZhdWx0QmFsYW5jZUNoYW5nZQkAzAgCCQENdmF1bHRBc3NldFN0cgAJAMwIAgUHX2Ftb3VudAUDbmlsBQNuaWwFA25pbAMJAAACBQZub3RpZnkFBm5vdGlmeQkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlVXNlclJld2FyZHMDBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAkBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkAQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQp1cGRhdGVUaW1lAgURbmV3TGFzdFVwZGF0ZVRpbWUJAQxwZXJpb2RGaW5pc2gACQERdXBkYXRlRnJlZUJhbGFuY2UBBQdfYW1vdW50CQERdXBkYXRlVXNlckJhbGFuY2UCBQdfc3Rha2VyBQd2QW1vdW50CQESc2V0VXNlckF2ZXJhZ2VSYXRlAgUHX3N0YWtlcgUObmV3QXZlcmFnZVJhdGUJARRzZXRVc2VyV2l0aGRyYXdMaW1pdAIFB19zdGFrZXIFEG5ld1dpdGhkcmF3TGltaXQJARF1cGRhdGVUb3RhbFN1cHBseQEFB3ZBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5TdGFrZQEHX2Ftb3VudAQHX3N0YWtlcgkApQgBCAUBaQZjYWxsZXIEEmFtb3VudE9mUXVvdGVBc3NldAkBD2Fzc2V0VG9EZWNpbWFscwEFB19hbW91bnQDAwMJAQIhPQIIBQFpCHBheW1lbnRzBQNuaWwGCQBnAgAABRJhbW91bnRPZlF1b3RlQXNzZXQGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhdJbnZhbGlkIGNhbGwgdG8gdW5TdGFrZQQNJHQwMTU1MDkxNTcyNQkBDHVwZGF0ZVJld2FyZAIFB19zdGFrZXIAAAQXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQIBQ0kdDAxNTUwOTE1NzI1Al8xBBFuZXdMYXN0VXBkYXRlVGltZQgFDSR0MDE1NTA5MTU3MjUCXzIEDHN0YWtlckVhcm5lZAgFDSR0MDE1NTA5MTU3MjUCXzMEGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAgFDSR0MDE1NTA5MTU3MjUCXzQEDSR0MDE1NzMyMTU4OTkJARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEFB19zdGFrZXIEFG5ld0xhc3RXaXRoZHJhd25EYXRlCAUNJHQwMTU3MzIxNTg5OQJfMQQRd2l0aGRyYXdMaW1pdExlZnQIBQ0kdDAxNTczMjE1ODk5Al8yBBhhbHJlYWR5V2l0aGRyYXduSW5QZXJpb2QIBQ0kdDAxNTczMjE1ODk5Al8zBAd2QW1vdW50CQEEZGl2ZAIFEmFtb3VudE9mUXVvdGVBc3NldAkBBHJhdGUAAwkAZgIFB3ZBbW91bnQFEXdpdGhkcmF3TGltaXRMZWZ0CQACAQIsSW52YWxpZCBjYWxsIHRvIHVuU3Rha2U6IHdpdGhkcmF3IG92ZXIgbGltaXQEFG5ld1dpdGhkcmF3bkluUGVyaW9kCQBkAgUYYWxyZWFkeVdpdGhkcmF3bkluUGVyaW9kBQd2QW1vdW50AwkAZgIFEmFtb3VudE9mUXVvdGVBc3NldAkBC2ZyZWVCYWxhbmNlAAkAAgECKEludmFsaWQgY2FsbCB0byB1blN0YWtlOiBiYWxhbmNlIHRvbyBsb3cEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgkBDXZhdWx0QXNzZXRTdHIACQDMCAIJARFhc3NldEZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQGbm90aWZ5AwkAZgIJARJtYXhTcG90VXRpbGl6YXRpb24AAAAJAPwHBAkBC3Nwb3RBZGRyZXNzAAIYbm90aWZ5VmF1bHRCYWxhbmNlQ2hhbmdlCQDMCAIJAQ12YXVsdEFzc2V0U3RyAAkAzAgCCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwFA25pbAMJAAACBQZub3RpZnkFBm5vdGlmeQkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlVXNlclJld2FyZHMDBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAkBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkAQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQp1cGRhdGVUaW1lAgURbmV3TGFzdFVwZGF0ZVRpbWUJAQxwZXJpb2RGaW5pc2gACQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkBEXVwZGF0ZVVzZXJCYWxhbmNlAgUHX3N0YWtlcgkBAS0BBQd2QW1vdW50CQERdXBkYXRlVG90YWxTdXBwbHkBCQEBLQEFB3ZBbW91bnQJARVzZXRVc2VyV2l0aGRyYXdQYXJhbXMDBQdfc3Rha2VyBRRuZXdMYXN0V2l0aGRyYXduRGF0ZQUUbmV3V2l0aGRyYXduSW5QZXJpb2QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQERYXNzZXRGcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQJAQp2YXVsdEFzc2V0AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3dpdGhkcmF3UmV3YXJkcwAEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNzUwOTE3NjU0CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFDSR0MDE3NTA5MTc2NTQCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUNJHQwMTc1MDkxNzY1NAJfMgQMc3Rha2VyRWFybmVkCAUNJHQwMTc1MDkxNzY1NAJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAUNJHQwMTc1MDkxNzY1NAJfNAMDCQBnAgAABQxzdGFrZXJFYXJuZWQGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhBObyByZXdhcmQ6IFZhdWx0CQDOCAIJAM4IAgkAzggCCQDOCAIJARF1cGRhdGVVc2VyUmV3YXJkcwMFB19zdGFrZXIAAAUYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCQEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkBCnVwZGF0ZVRpbWUCBRFuZXdMYXN0VXBkYXRlVGltZQkBDHBlcmlvZEZpbmlzaAAJARN1cGRhdGVSZXdhcmRCYWxhbmNlAQkBAS0BBQxzdGFrZXJFYXJuZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxzdGFrZXJFYXJuZWQJAQ9nb3Zlcm5hbmNlQXNzZXQABQNuaWwBaQEHYWRkRnJlZQAEB19hbW91bnQJAQ9hc3NldFRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnZhdWx0QXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBAwMJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkAAAIIBQFpBmNhbGxlcgkBC3Nwb3RBZGRyZXNzAAYJAAACCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIWSW52YWxpZCBhZGRGcmVlIHBhcmFtcwQHbmV3UmF0ZQkBDmNvbXB1dGVOZXdSYXRlAQUHX2Ftb3VudAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKdmF1bHRBc3NldAAJARFhc3NldEZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQUHX2Ftb3VudAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFkZExvY2tlZAAEB19hbW91bnQJAQ9hc3NldFRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnZhdWx0QXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBAwkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIGCQAAAggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECGEludmFsaWQgYWRkTG9ja2VkIHBhcmFtcwQHdW5zdGFrZQkA/AcECQEObWFuYWdlckFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQp2YXVsdEFzc2V0AAkBEWFzc2V0RnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVleGNoYW5nZUZyZWVBbmRMb2NrZWQBB19hbW91bnQDAwkBASEBCQELaW5pdGlhbGl6ZWQABgMJAQEhAQkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAHCQACAQIkSW52YWxpZCBleGNoYW5nZUZyZWVBbmRMb2NrZWQgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ9hc3NldFRvRGVjaW1hbHMBBQdfYW1vdW50BAduZXdSYXRlCQEOY29tcHV0ZU5ld1JhdGUBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzggCCQDOCAIJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlAWkBDndpdGhkcmF3TG9ja2VkAQdfYW1vdW50AwMDCQEBIQEJAQtpbml0aWFsaXplZAAGCQBnAgAABQdfYW1vdW50BgkBASEBCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgkAAgECHUludmFsaWQgd2l0aGRyYXdMb2NrZWQgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ9hc3NldFRvRGVjaW1hbHMBBQdfYW1vdW50BAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIJAQ12YXVsdEFzc2V0U3RyAAkAzAgCCQERYXNzZXRGcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARFhc3NldEZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnZhdWx0QXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGYm9ycm93AQdfYW1vdW50AwMDCQEBIQEJAQtpbml0aWFsaXplZAAGCQBnAgAABQdfYW1vdW50BgkBASEBCQAAAggFAWkGY2FsbGVyCQELc3BvdEFkZHJlc3MACQACAQIVSW52YWxpZCBib3Jyb3cgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ9hc3NldFRvRGVjaW1hbHMBBQdfYW1vdW50BAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIJAQ12YXVsdEFzc2V0U3RyAAkAzAgCCQERYXNzZXRGcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBE3VwZGF0ZUV4Y2Vzc0JhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARFhc3NldEZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnZhdWx0QXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFcmVwYXkABAdfYW1vdW50CQEPYXNzZXRUb0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQp2YXVsdEFzc2V0AAYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQMJAAACCAUBaQZjYWxsZXIJAQtzcG90QWRkcmVzcwAGCQAAAggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECFEludmFsaWQgcmVwYXkgcGFyYW1zBAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnZhdWx0QXNzZXQACQERYXNzZXRGcm9tRGVjaW1hbHMBBQdfYW1vdW50BQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkBE3VwZGF0ZUV4Y2Vzc0JhbGFuY2UBBQdfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmFkZFJld2FyZHMAAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQ9nb3Zlcm5hbmNlQXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIZSW52YWxpZCBhZGRSZXdhcmRzIHBhcmFtcwQHX3Jld2FyZAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCAkBDHVwZGF0ZVJld2FyZAIFCk5PX0FERFJFU1MFCU5PX1NUQUtFUgJfMQQJdGltZXN0YW1wCQETY3VycmVudFRpbWVzdGFtcFNlYwAEDW5ld1Jld2FyZFJhdGUDCQBmAgUJdGltZXN0YW1wCQEMcGVyaW9kRmluaXNoAAkAaQIFB19yZXdhcmQFCERVUkFUSU9OBA1yZW1haW5pbmdUaW1lCQBlAgkBDHBlcmlvZEZpbmlzaAAFCXRpbWVzdGFtcAQIbGVmdG92ZXIJAGgCCQEKcmV3YXJkUmF0ZQAFDXJlbWFpbmluZ1RpbWUJAGkCCQBkAgUHX3Jld2FyZAUIbGVmdG92ZXIFCERVUkFUSU9OCQDOCAIJAM4IAgkAzggCCQEQdXBkYXRlUmV3YXJkUmF0ZQEFDW5ld1Jld2FyZFJhdGUJARp1cGRhdGVSZXdhcmRQZXJUb2tlblN0b3JlZAEFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQETdXBkYXRlUmV3YXJkQmFsYW5jZQEFB19yZXdhcmQJAQp1cGRhdGVUaW1lAgUJdGltZXN0YW1wCQBkAgUJdGltZXN0YW1wBQhEVVJBVElPTgFpAQphY2tSZXdhcmRzAAQKcHJvZml0UmVzcAkA/AcECQEObWFuYWdlckFkZHJlc3MAAgtjbGFpbVByb2ZpdAkAzAgCCQENdmF1bHRBc3NldFN0cgAFA25pbAUDbmlsAwkAAAIFCnByb2ZpdFJlc3AFCnByb2ZpdFJlc3AEBnByb2ZpdAQHJG1hdGNoMAUKcHJvZml0UmVzcAMJAAECBQckbWF0Y2gwAgNJbnQEAXAFByRtYXRjaDAJAQ9hc3NldFRvRGVjaW1hbHMBBQFwCQACAQIcSW52YWxpZCBjbGFpbVByb2ZpdCByZXNwb25zZQQGcmVzdWx0AwkAZgIFBnByb2ZpdAAABAduZXdSYXRlCQEOY29tcHV0ZU5ld1JhdGUBBQZwcm9maXQEBXN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnZhdWx0QXNzZXQACQERYXNzZXRGcm9tRGVjaW1hbHMBBQZwcm9maXQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQUGcHJvZml0CQEKdXBkYXRlUmF0ZQEFB25ld1JhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3ZpZXdfcmV3YXJkAQdfc3Rha2VyBAdiYWxhbmNlCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgQPZGVwb3NpdGVkQW1vdW50CQEEbXVsZAIJAQthdmVyYWdlUmF0ZQEFB19zdGFrZXIFB2JhbGFuY2UEDWN1cnJlbnRBbW91bnQJAQRtdWxkAgkBBHJhdGUABQdiYWxhbmNlBAtlYXJuZWRRdW90ZQkAZQIFDWN1cnJlbnRBbW91bnQFD2RlcG9zaXRlZEFtb3VudAkAAgEJAKQDAQULZWFybmVkUXVvdGUBaQESdmlld19zdGFraW5nUmV3YXJkAQdfc3Rha2VyBAxzdGFrZXJFYXJuZWQICQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAAAl8zCQACAQkApAMBCQERYXNzZXRGcm9tRGVjaW1hbHMBBQxzdGFrZXJFYXJuZWQBaQESdmlld193aXRoZHJhd0xpbWl0AQdfc3Rha2VyBBF3aXRoZHJhd0xpbWl0TGVmdAgJARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEFB19zdGFrZXICXzIEDGxpbWl0SW5Bc3NldAkBEWFzc2V0RnJvbURlY2ltYWxzAQkBBG11bGQCBRF3aXRoZHJhd0xpbWl0TGVmdAkBBHJhdGUACQACAQkApAMBBQxsaW1pdEluQXNzZXQBAnR4AQZ2ZXJpZnkABA5jb29yZGluYXRvclN0cgkAnQgCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwMJAQlpc0RlZmluZWQBBQ5jb29yZGluYXRvclN0cgQFYWRtaW4JAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUOY29vcmRpbmF0b3JTdHIFD2tfYWRtaW5fYWRkcmVzcwMJAQlpc0RlZmluZWQBBQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVhZG1pbgkArAICCQCsAgIJAKwCAgIHc3RhdHVzXwkApQgBBQR0aGlzAgFfCQDYBAEIBQJ0eAJpZAcJAAIBAi51bmFibGUgdG8gdmVyaWZ5OiBhZG1pbiBub3Qgc2V0IGluIGNvb3JkaW5hdG9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5Luc9Gw==", "height": 2636562, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5JLXz32PHBWVcFX4VkgRzYo1PPEm3P5fFUYyu75sxJJb Next: none Diff:
OldNewDifferences
1919
2020 let i = "k_withdrawPerPeriod"
2121
22-let j = "k_rate"
22+let j = "k_withdrawUnlimited"
2323
24-let k = "k_lastUpdateTime"
24+let k = "k_rate"
2525
26-let l = "k_rewardPerTokenStored"
26+let l = "k_lastUpdateTime"
2727
28-let m = "k_rewardRate"
28+let m = "k_rewardPerTokenStored"
2929
30-let n = "k_periodFinish"
30+let n = "k_rewardRate"
3131
32-let o = "k_userRewardPerToken"
32+let o = "k_periodFinish"
3333
34-let p = "k_userReward"
34+let p = "k_userRewardPerToken"
3535
36-let q = "k_balance"
36+let q = "k_userReward"
3737
38-let r = "k_average_rate"
38+let r = "k_balance"
3939
40-let s = "k_withdraw_limit"
40+let s = "k_average_rate"
4141
42-let t = "k_last_withdraw_date"
42+let t = "k_withdraw_limit"
4343
44-let u = "k_withdraw_in_period"
44+let u = "k_last_withdraw_date"
4545
46-let v = "k_initialized"
46+let v = "k_withdraw_in_period"
4747
48-let w = "k_coordinatorAddress"
48+let w = "k_initialized"
4949
50-let x = "k_amm"
50+let x = "k_coordinatorAddress"
5151
52-let y = "k_gov_asset"
52+let y = "k_amm"
5353
54-let z = "k_quote_asset"
54+let z = "k_gov_asset"
5555
56-let A = "k_admin_address"
56+let A = "k_quote_asset"
5757
58-let B = "k_manager_address"
58+let B = "k_admin_address"
5959
60-let C = "k_spot_address"
60+let C = "k_manager_address"
6161
62-let D = "k_collateral_address"
62+let D = "k_spot_address"
6363
64-func E (F,G) = ((F + "_") + G)
64+let E = "k_collateral_address"
65+
66+func F (G,H) = ((G + "_") + H)
6567
6668
67-func H () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, w), "Coordinator not set")), "Coordinator address invalid")
69+func I () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, x), "Coordinator not set")), "Coordinator address invalid")
6870
6971
70-func I () = addressFromString(valueOrErrorMessage(getString(H(), A), "Admin address not set"))
72+func J () = addressFromString(valueOrErrorMessage(getString(I(), B), "Admin address not set"))
7173
7274
73-func J (G) = valueOrElse(getBoolean(H(), E(x, G)), false)
75+func K (H) = valueOrElse(getBoolean(I(), F(y, H)), false)
7476
7577
76-func K () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), C), "Spot address not set")), "Spot address invalid")
78+func L () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), D), "Spot address not set")), "Spot address invalid")
7779
7880
79-func L () = fromBase58String(valueOrErrorMessage(getString(H(), y), "Governance asset not set"))
81+func M () = fromBase58String(valueOrErrorMessage(getString(I(), z), "Governance asset not set"))
8082
8183
82-func M () = fromBase58String(getStringValue(H(), z))
84+func N () = fromBase58String(getStringValue(I(), A))
8385
8486
85-func N () = valueOrErrorMessage(getString(this, f), "Vault asset not set")
87+func O () = valueOrErrorMessage(getString(this, f), "Vault asset not set")
8688
8789
88-func O () = {
89- let P = N()
90- if ((P == "WAVES"))
90+func P () = {
91+ let Q = O()
92+ if ((Q == "WAVES"))
9193 then unit
92- else fromBase58String(P)
94+ else fromBase58String(Q)
9395 }
9496
9597
96-func Q () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set")
98+func R () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set")
9799
98100
99-func R () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), B), "Manager address not set")), "Manager address invalid")
101+func S () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), C), "Manager address not set")), "Manager address invalid")
100102
101103
102-let S = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
104+let T = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
103105
104-let T = (((7 * 60) * 60) * 24)
106+let U = (((7 * 60) * 60) * 24)
105107
106-let U = ""
108+let V = ""
107109
108-let V = 0
110+let W = 0
109111
110-func W (X) = {
111- let Y = Q()
112- if ((Y == 6))
113- then (X / 100)
114- else if ((Y == 8))
115- then X
112+func X (Y) = {
113+ let Z = R()
114+ if ((Z == 6))
115+ then (Y / 100)
116+ else if ((Z == 8))
117+ then Y
116118 else throw("Invalid asset decimals")
117119 }
118120
119121
120-func Z (X) = {
121- let Y = Q()
122- if ((Y == 6))
123- then (X * 100)
124- else if ((Y == 8))
125- then X
122+func aa (Y) = {
123+ let Z = R()
124+ if ((Z == 6))
125+ then (Y * 100)
126+ else if ((Z == 8))
127+ then Y
126128 else throw("Invalid asset decimals")
127129 }
128130
129131
130-func aa (ab,ac) = fraction(ab, S, ac, HALFEVEN)
132+func ab (ac,ad) = fraction(ac, T, ad, HALFEVEN)
131133
132134
133-func ad (ab,ac) = fraction(ab, ac, S, HALFEVEN)
135+func ae (ac,ad) = fraction(ac, ad, T, HALFEVEN)
134136
135137
136-func ae (ab) = if ((ab > 0))
137- then ab
138- else -(ab)
138+func af (ac) = if ((ac > 0))
139+ then ac
140+ else -(ac)
139141
140142
141-func af (ab,ac) = if ((ab > ac))
142- then ac
143- else ab
143+func ag (ac,ad) = if ((ac > ad))
144+ then ad
145+ else ac
144146
145147
146-let ag = (86400 * 1000)
148+let ah = (86400 * 1000)
147149
148-let ah = aa((1 * S), (4 * S))
150+let ai = ab((1 * T), (4 * T))
149151
150-func ai (aj) = valueOrErrorMessage(getInteger(this, aj), ("no value for " + aj))
152+func aj (ak) = valueOrErrorMessage(getInteger(this, ak), ("no value for " + ak))
151153
152154
153-func ak (aj) = valueOrElse(getInteger(this, aj), 0)
155+func al (ak) = valueOrElse(getInteger(this, ak), 0)
154156
155157
156-func al (aj) = valueOrElse(getInteger(this, aj), S)
158+func am (ak) = valueOrElse(getInteger(this, ak), T)
157159
158160
159-func am (aj,an) = valueOrElse(getInteger(this, aj), an)
161+func an (ak,ao) = valueOrElse(getInteger(this, ak), ao)
160162
161163
162-func ao () = ak(a)
164+func ap () = al(a)
163165
164166
165-func ap () = al(j)
167+func aq () = am(k)
166168
167169
168-func aq (ar) = ak(E(q, ar))
170+func ar (as) = al(F(r, as))
169171
170172
171-func as (ar) = ak(E(r, ar))
173+func at (as) = al(F(s, as))
172174
173175
174-func at (ar) = ak(E(s, ar))
176+func au (as) = al(F(t, as))
175177
176178
177-func au (ar) = ak(E(u, ar))
179+func av (as) = al(F(v, as))
178180
179181
180-func av (ar) = ak(E(t, ar))
182+func aw (as) = al(F(u, as))
181183
182184
183-func aw () = ak(d)
185+func ax () = al(d)
184186
185187
186-func ax () = ak(c)
188+func ay () = al(c)
187189
188190
189-func ay () = ak(e)
191+func az () = al(e)
190192
191193
192-func az () = ak(l)
194+func aA () = al(m)
193195
194196
195-func aA () = ak(k)
197+func aB () = al(l)
196198
197199
198-func aB () = ak(m)
200+func aC () = al(n)
199201
200202
201-func aC () = ak(n)
203+func aD () = al(o)
202204
203205
204-func aD () = ak(b)
206+func aE () = al(b)
205207
206208
207-func aE (ar) = ak(E(p, ar))
209+func aF (as) = al(F(q, as))
208210
209211
210-func aF (ar) = ak(E(o, ar))
212+func aG (as) = al(F(p, as))
211213
212214
213-func aG () = ak(h)
215+func aH () = al(h)
214216
215217
216-func aH () = am(i, ah)
218+func aI () = an(i, ai)
217219
218220
219-func aI () = valueOrElse(getBoolean(this, v), false)
221+func aJ () = valueOrElse(getBoolean(this, j), false)
220222
221223
222-func aJ () = lastBlock.timestamp
224+func aK () = valueOrElse(getBoolean(this, w), false)
223225
224226
225-func aK () = (aJ() / 1000)
227+func aL () = lastBlock.timestamp
226228
227229
228-func aL (ar) = {
229- let aM = aJ()
230- let aN = av(ar)
231- let aO = if (((aM - aN) > ag))
232- then $Tuple3(aM, at(ar), 0)
233- else $Tuple3(aN, (at(ar) - au(ar)), au(ar))
234- let aP = aO._1
235- let aQ = aO._2
236- let aR = aO._3
237- $Tuple3(aP, aQ, aR)
230+func aM () = (aL() / 1000)
231+
232+
233+func aN (as) = {
234+ let aO = aL()
235+ let aP = aw(as)
236+ let aQ = if (((aO - aP) > ah))
237+ then $Tuple3(aO, au(as), 0)
238+ else {
239+ let aR = av(as)
240+ if (aJ())
241+ then $Tuple3(aP, au(as), aR)
242+ else $Tuple3(aP, (au(as) - aR), aR)
243+ }
244+ let aS = aQ._1
245+ let aT = aQ._2
246+ let aU = aQ._3
247+ $Tuple3(aS, aT, aU)
238248 }
239249
240250
241-func aS (aT) = {
242- let aU = if ((ao() > 0))
243- then aa((aw() + aT), ao())
244- else S
245- aU
251+func aV (aW) = {
252+ let aX = if ((ap() > 0))
253+ then ab((ax() + aW), ap())
254+ else T
255+ aX
246256 }
247257
248258
249-func aV () = af(aK(), aC())
259+func aY () = ag(aM(), aD())
250260
251261
252-func aW (aX) = if (((ao() + aX) == 0))
253- then az()
262+func aZ (ba) = if (((ap() + ba) == 0))
263+ then aA()
254264 else {
255- let aY = (aV() - aA())
256- let aZ = if ((0 > aY))
265+ let bb = (aY() - aB())
266+ let bc = if ((0 > bb))
257267 then 0
258- else aY
259- let ba = aa((aB() * aZ), (ao() + aX))
260- (az() + ba)
268+ else bb
269+ let bd = ab((aC() * bc), (ap() + ba))
270+ (aA() + bd)
261271 }
262272
263273
264-func bb (ar,aX) = {
265- let bc = (aW(aX) - aF(ar))
266- (ad((aq(ar) + aX), bc) + aE(ar))
274+func be (as,ba) = {
275+ let bf = (aZ(ba) - aG(as))
276+ (ae((ar(as) + ba), bf) + aF(as))
267277 }
268278
269279
270-func bd (ar,aX) = {
271- let be = aW(aX)
272- let bf = aK()
273- let bg = if ((ar != ""))
274- then $Tuple2(bb(ar, aX), be)
280+func bg (as,ba) = {
281+ let bh = aZ(ba)
282+ let bi = aM()
283+ let bj = if ((as != ""))
284+ then $Tuple2(be(as, ba), bh)
275285 else $Tuple2(0, 0)
276- let bh = bg._1
277- let bi = bg._2
278- $Tuple4(be, bf, bh, bi)
286+ let bk = bj._1
287+ let bl = bj._2
288+ $Tuple4(bh, bi, bk, bl)
279289 }
280290
281291
282-func bj (bk,bl) = if (((aq(bk) + bl) >= 0))
283- then [IntegerEntry(E(q, bk), (aq(bk) + bl))]
284- else throw(((("Vault: can not update user balance. Balance: " + toString(aq(bk))) + " change: ") + toString(bl)))
292+func bm (bn,bo) = if (((ar(bn) + bo) >= 0))
293+ then [IntegerEntry(F(r, bn), (ar(bn) + bo))]
294+ else throw(((("Vault: can not update user balance. Balance: " + toString(ar(bn))) + " change: ") + toString(bo)))
285295
286296
287-func bm (bk,bn) = [IntegerEntry(E(s, bk), bn)]
297+func bp (bn,bq) = [IntegerEntry(F(t, bn), bq)]
288298
289299
290-func bo (bk,bn) = [IntegerEntry(E(r, bk), bn)]
300+func br (bn,bq) = [IntegerEntry(F(s, bn), bq)]
291301
292302
293-func bp (bl) = {
294- let bq = aw()
295- if (((bq + bl) >= 0))
296- then [IntegerEntry(d, (bq + bl))]
297- else throw(((("Vault: can not update free balance. Balance: " + toString(bq)) + " change: ") + toString(bl)))
303+func bs (bo) = {
304+ let bt = ax()
305+ if (((bt + bo) >= 0))
306+ then [IntegerEntry(d, (bt + bo))]
307+ else throw(((("Vault: can not update free balance. Balance: " + toString(bt)) + " change: ") + toString(bo)))
298308 }
299309
300310
301-func br (bl) = {
302- let bq = ax()
303- if (((bq + bl) >= 0))
304- then [IntegerEntry(c, (bq + bl))]
305- else throw(((("Vault: can not update locked balance. Balance: " + toString(bq)) + " change: ") + toString(bl)))
311+func bu (bo) = {
312+ let bt = ay()
313+ if (((bt + bo) >= 0))
314+ then [IntegerEntry(c, (bt + bo))]
315+ else throw(((("Vault: can not update locked balance. Balance: " + toString(bt)) + " change: ") + toString(bo)))
306316 }
307317
308318
309-func bs (bl) = {
310- let bt = (ay() + bl)
311- let bu = aa(ae(bt), aw())
312- if ((aG() > bu))
313- then [IntegerEntry(e, bt)]
314- else throw(((((((("Vault: can not update excess balance. Balance: " + toString(ay())) + " change: ") + toString(bl)) + " utilization rate: ") + toString(bu)) + " max utilization rate: ") + toString(aG())))
319+func bv (bo) = {
320+ let bw = (az() + bo)
321+ let bx = ab(af(bw), ax())
322+ if ((aH() > bx))
323+ then [IntegerEntry(e, bw)]
324+ else throw(((((((("Vault: can not update excess balance. Balance: " + toString(az())) + " change: ") + toString(bo)) + " utilization rate: ") + toString(bx)) + " max utilization rate: ") + toString(aH())))
315325 }
316326
317327
318-func bv (bl) = [IntegerEntry(a, (ao() + bl))]
328+func by (bo) = [IntegerEntry(a, (ap() + bo))]
319329
320330
321-func bw (bn) = [IntegerEntry(j, bn)]
331+func bz (bq) = [IntegerEntry(k, bq)]
322332
323333
324-func bx (bk,by,bz) = [IntegerEntry(E(t, bk), by), IntegerEntry(E(u, bk), bz)]
334+func bA (bn,bB,bC) = [IntegerEntry(F(u, bn), bB), IntegerEntry(F(v, bn), bC)]
325335
326336
327-func bA (bB) = [IntegerEntry(b, (aD() + bB))]
337+func bD (bE) = [IntegerEntry(b, (aE() + bE))]
328338
329339
330-func bC (bD) = [IntegerEntry(m, bD)]
340+func bF (bG) = [IntegerEntry(n, bG)]
331341
332342
333-func bE (bF,bG) = [IntegerEntry(k, bF), IntegerEntry(n, bG)]
343+func bH (bI,bJ) = [IntegerEntry(l, bI), IntegerEntry(o, bJ)]
334344
335345
336-func bH (bI) = [IntegerEntry(l, bI)]
346+func bK (bL) = [IntegerEntry(m, bL)]
337347
338348
339-func bJ (ar,bK,bL) = [IntegerEntry(E(p, ar), bK), IntegerEntry(E(o, ar), bL)]
349+func bM (as,bN,bO) = [IntegerEntry(F(q, as), bN), IntegerEntry(F(p, as), bO)]
340350
341351
342-@Callable(bM)
343-func changeSettings (bN,bO) = if (if (if (if (!(aI()))
352+@Callable(bP)
353+func changeSettings (bQ,bR,bS) = if (if (if (if (!(aK()))
344354 then true
345- else (bM.caller != I()))
355+ else (bP.caller != J()))
346356 then true
347- else if ((0 > bN))
357+ else if ((0 > bQ))
348358 then true
349- else (bN > S))
359+ else (bQ > T))
350360 then true
351- else if ((0 > bO))
361+ else if ((0 > bR))
352362 then true
353- else (bO > S))
363+ else (bR > T))
354364 then throw("Invalid changeSettings params")
355- else [IntegerEntry(h, bN), IntegerEntry(i, bO)]
365+ else [IntegerEntry(h, bQ), IntegerEntry(i, bR), BooleanEntry(j, bS)]
356366
357367
358368
359-@Callable(bM)
360-func initialize (bP,bQ,bN) = if (if (if (if (aI())
369+@Callable(bP)
370+func initialize (bT,bU,bQ) = if (if (if (if (aK())
361371 then true
362- else (bM.caller != this))
372+ else (bP.caller != this))
363373 then true
364- else (0 > bN))
374+ else (0 > bQ))
365375 then true
366- else (bN > S))
376+ else (bQ > T))
367377 then throw("Unable to initialize")
368378 else {
369- let Y = if ((bQ == "WAVES"))
379+ let Z = if ((bU == "WAVES"))
370380 then 8
371381 else {
372- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bQ)), ("Invalid token id: " + bQ))
373- bR.decimals
382+ let bV = valueOrErrorMessage(assetInfo(fromBase58String(bU)), ("Invalid token id: " + bU))
383+ bV.decimals
374384 }
375-[StringEntry(w, toString(valueOrErrorMessage(addressFromString(bP), "Invalid coordinator address"))), StringEntry(f, bQ), IntegerEntry(g, Y), IntegerEntry(h, bN), BooleanEntry(v, true)]
385+[StringEntry(x, toString(valueOrErrorMessage(addressFromString(bT), "Invalid coordinator address"))), StringEntry(f, bU), IntegerEntry(g, Z), IntegerEntry(h, bQ), BooleanEntry(w, true)]
376386 }
377387
378388
379389
380-@Callable(bM)
390+@Callable(bP)
381391 func stake () = {
382- let ar = toString(bM.caller)
383- let X = Z(bM.payments[0].amount)
384- if (if (if ((bM.payments[0].assetId != O()))
392+ let as = toString(bP.caller)
393+ let Y = aa(bP.payments[0].amount)
394+ if (if (if ((bP.payments[0].assetId != P()))
385395 then true
386- else (size(bM.payments) != 1))
396+ else (size(bP.payments) != 1))
387397 then true
388- else !(aI()))
398+ else !(aK()))
389399 then throw("Invalid call to stake")
390400 else {
391- let bS = bd(ar, 0)
392- let be = bS._1
393- let bf = bS._2
394- let bh = bS._3
395- let bi = bS._4
396- let bT = ap()
397- let bU = as(ar)
398- let bV = aa(X, bT)
399- let bW = aa((ad(bV, bT) + ad(aq(ar), bU)), (bV + aq(ar)))
400- let bX = (bV + aq(ar))
401- let bY = ad(bX, aH())
402- let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
403- if ((bZ == bZ))
401+ let bW = bg(as, 0)
402+ let bh = bW._1
403+ let bi = bW._2
404+ let bk = bW._3
405+ let bl = bW._4
406+ let bX = aq()
407+ let bY = at(as)
408+ let bZ = ab(Y, bX)
409+ let ca = ab((ae(bZ, bX) + ae(ar(as), bY)), (bZ + ar(as)))
410+ let cb = (bZ + ar(as))
411+ let cc = ae(cb, aI())
412+ let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
413+ if ((cd == cd))
404414 then {
405- let ca = if ((aG() > 0))
406- then invoke(K(), "notifyVaultBalanceChange", [N(), X], nil)
415+ let ce = if ((aH() > 0))
416+ then invoke(L(), "notifyVaultBalanceChange", [O(), Y], nil)
407417 else nil
408- if ((ca == ca))
409- then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(X)) ++ bj(ar, bV)) ++ bo(ar, bW)) ++ bm(ar, bY)) ++ bv(bV))
418+ if ((ce == ce))
419+ then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(Y)) ++ bm(as, bZ)) ++ br(as, ca)) ++ bp(as, cc)) ++ by(bZ))
410420 else throw("Strict value is not equal to itself.")
411421 }
412422 else throw("Strict value is not equal to itself.")
415425
416426
417427
418-@Callable(bM)
419-func unStake (X) = {
420- let ar = toString(bM.caller)
421- let cb = Z(X)
422- if (if (if ((bM.payments != nil))
428+@Callable(bP)
429+func unStake (Y) = {
430+ let as = toString(bP.caller)
431+ let cf = aa(Y)
432+ if (if (if ((bP.payments != nil))
423433 then true
424- else (0 >= cb))
434+ else (0 >= cf))
425435 then true
426- else !(aI()))
436+ else !(aK()))
427437 then throw("Invalid call to unStake")
428438 else {
429- let cc = bd(ar, 0)
430- let be = cc._1
431- let bf = cc._2
432- let bh = cc._3
433- let bi = cc._4
434- let cd = aL(ar)
435- let aP = cd._1
436- let aQ = cd._2
437- let aR = cd._3
438- let bV = aa(cb, ap())
439- if ((bV > aQ))
439+ let cg = bg(as, 0)
440+ let bh = cg._1
441+ let bi = cg._2
442+ let bk = cg._3
443+ let bl = cg._4
444+ let ch = aN(as)
445+ let aS = ch._1
446+ let aT = ch._2
447+ let aU = ch._3
448+ let bZ = ab(cf, aq())
449+ if ((bZ > aT))
440450 then throw("Invalid call to unStake: withdraw over limit")
441451 else {
442- let ce = (aR + bV)
443- if ((cb > aw()))
452+ let ci = (aU + bZ)
453+ if ((cf > ax()))
444454 then throw("Invalid call to unStake: balance too low")
445455 else {
446- let cf = invoke(R(), "withdraw", [N(), W(cb)], nil)
447- if ((cf == cf))
456+ let cj = invoke(S(), "withdraw", [O(), X(cf)], nil)
457+ if ((cj == cj))
448458 then {
449- let ca = if ((aG() > 0))
450- then invoke(K(), "notifyVaultBalanceChange", [N(), -(cb)], nil)
459+ let ce = if ((aH() > 0))
460+ then invoke(L(), "notifyVaultBalanceChange", [O(), -(cf)], nil)
451461 else nil
452- if ((ca == ca))
453- then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(-(cb))) ++ bj(ar, -(bV))) ++ bv(-(bV))) ++ bx(ar, aP, ce)) ++ [ScriptTransfer(bM.caller, W(cb), O())])
462+ if ((ce == ce))
463+ then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(-(cf))) ++ bm(as, -(bZ))) ++ by(-(bZ))) ++ bA(as, aS, ci)) ++ [ScriptTransfer(bP.caller, X(cf), P())])
454464 else throw("Strict value is not equal to itself.")
455465 }
456466 else throw("Strict value is not equal to itself.")
461471
462472
463473
464-@Callable(bM)
474+@Callable(bP)
465475 func withdrawRewards () = {
466- let ar = toString(bM.caller)
467- let cg = bd(ar, 0)
468- let be = cg._1
469- let bf = cg._2
470- let bh = cg._3
471- let bi = cg._4
472- if (if ((0 >= bh))
476+ let as = toString(bP.caller)
477+ let ck = bg(as, 0)
478+ let bh = ck._1
479+ let bi = ck._2
480+ let bk = ck._3
481+ let bl = ck._4
482+ if (if ((0 >= bk))
473483 then true
474- else !(aI()))
484+ else !(aK()))
475485 then throw("No reward: Vault")
476- else ((((bJ(ar, 0, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bA(-(bh))) ++ [ScriptTransfer(bM.caller, bh, L())])
486+ else ((((bM(as, 0, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bD(-(bk))) ++ [ScriptTransfer(bP.caller, bk, M())])
477487 }
478488
479489
480490
481-@Callable(bM)
491+@Callable(bP)
482492 func addFree () = {
483- let X = Z(bM.payments[0].amount)
484- if (if (if (if ((bM.payments[0].assetId != O()))
493+ let Y = aa(bP.payments[0].amount)
494+ if (if (if (if ((bP.payments[0].assetId != P()))
485495 then true
486- else (size(bM.payments) != 1))
496+ else (size(bP.payments) != 1))
487497 then true
488- else !(aI()))
498+ else !(aK()))
489499 then true
490- else !(if (if (J(toString(bM.caller)))
500+ else !(if (if (K(toString(bP.caller)))
491501 then true
492- else (bM.caller == K()))
502+ else (bP.caller == L()))
493503 then true
494- else (bM.caller == I())))
504+ else (bP.caller == J())))
495505 then throw("Invalid addFree params")
496506 else {
497- let aU = aS(X)
498- let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
499- if ((bZ == bZ))
500- then (bp(X) ++ bw(aU))
507+ let aX = aV(Y)
508+ let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
509+ if ((cd == cd))
510+ then (bs(Y) ++ bz(aX))
501511 else throw("Strict value is not equal to itself.")
502512 }
503513 }
504514
505515
506516
507-@Callable(bM)
517+@Callable(bP)
508518 func addLocked () = {
509- let X = Z(bM.payments[0].amount)
510- if (if (if (if ((bM.payments[0].assetId != O()))
519+ let Y = aa(bP.payments[0].amount)
520+ if (if (if (if ((bP.payments[0].assetId != P()))
511521 then true
512- else (size(bM.payments) != 1))
522+ else (size(bP.payments) != 1))
513523 then true
514- else !(aI()))
524+ else !(aK()))
515525 then true
516- else !(if (J(toString(bM.caller)))
526+ else !(if (K(toString(bP.caller)))
517527 then true
518- else (bM.caller == I())))
528+ else (bP.caller == J())))
519529 then throw("Invalid addLocked params")
520530 else {
521- let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
522- if ((cf == cf))
523- then br(X)
531+ let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
532+ if ((cj == cj))
533+ then bu(Y)
524534 else throw("Strict value is not equal to itself.")
525535 }
526536 }
527537
528538
529539
530-@Callable(bM)
531-func exchangeFreeAndLocked (X) = if (if (!(aI()))
540+@Callable(bP)
541+func exchangeFreeAndLocked (Y) = if (if (!(aK()))
532542 then true
533- else if (!(J(toString(bM.caller))))
534- then (bM.caller != I())
543+ else if (!(K(toString(bP.caller))))
544+ then (bP.caller != J())
535545 else false)
536546 then throw("Invalid exchangeFreeAndLocked params")
537547 else {
538- let cb = Z(X)
539- let aU = aS(-(cb))
540- ((br(cb) ++ bp(-(cb))) ++ bw(aU))
548+ let cf = aa(Y)
549+ let aX = aV(-(cf))
550+ ((bu(cf) ++ bs(-(cf))) ++ bz(aX))
541551 }
542552
543553
544554
545-@Callable(bM)
546-func withdrawLocked (X) = if (if (if (!(aI()))
555+@Callable(bP)
556+func withdrawLocked (Y) = if (if (if (!(aK()))
547557 then true
548- else (0 >= X))
558+ else (0 >= Y))
549559 then true
550- else !(J(toString(bM.caller))))
560+ else !(K(toString(bP.caller))))
551561 then throw("Invalid withdrawLocked params")
552562 else {
553- let cb = Z(X)
554- let cf = invoke(R(), "withdraw", [N(), W(cb)], nil)
555- if ((cf == cf))
556- then (br(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())])
563+ let cf = aa(Y)
564+ let cj = invoke(S(), "withdraw", [O(), X(cf)], nil)
565+ if ((cj == cj))
566+ then (bu(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())])
557567 else throw("Strict value is not equal to itself.")
558568 }
559569
560570
561571
562-@Callable(bM)
563-func borrow (X) = if (if (if (!(aI()))
572+@Callable(bP)
573+func borrow (Y) = if (if (if (!(aK()))
564574 then true
565- else (0 >= X))
575+ else (0 >= Y))
566576 then true
567- else !((bM.caller == K())))
577+ else !((bP.caller == L())))
568578 then throw("Invalid borrow params")
569579 else {
570- let cb = Z(X)
571- let cf = invoke(R(), "withdraw", [N(), W(cb)], nil)
572- if ((cf == cf))
573- then (bs(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())])
580+ let cf = aa(Y)
581+ let cj = invoke(S(), "withdraw", [O(), X(cf)], nil)
582+ if ((cj == cj))
583+ then (bv(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())])
574584 else throw("Strict value is not equal to itself.")
575585 }
576586
577587
578588
579-@Callable(bM)
589+@Callable(bP)
580590 func repay () = {
581- let X = Z(bM.payments[0].amount)
582- if (if (if (if ((bM.payments[0].assetId != O()))
591+ let Y = aa(bP.payments[0].amount)
592+ if (if (if (if ((bP.payments[0].assetId != P()))
583593 then true
584- else (size(bM.payments) != 1))
594+ else (size(bP.payments) != 1))
585595 then true
586- else !(aI()))
596+ else !(aK()))
587597 then true
588- else !(if ((bM.caller == K()))
598+ else !(if ((bP.caller == L()))
589599 then true
590- else (bM.caller == I())))
600+ else (bP.caller == J())))
591601 then throw("Invalid repay params")
592602 else {
593- let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
594- if ((cf == cf))
595- then bs(X)
603+ let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
604+ if ((cj == cj))
605+ then bv(Y)
596606 else throw("Strict value is not equal to itself.")
597607 }
598608 }
599609
600610
601611
602-@Callable(bM)
603-func addRewards () = if (if (if ((bM.payments[0].assetId != L()))
612+@Callable(bP)
613+func addRewards () = if (if (if ((bP.payments[0].assetId != M()))
604614 then true
605- else (size(bM.payments) != 1))
615+ else (size(bP.payments) != 1))
606616 then true
607- else !(aI()))
617+ else !(aK()))
608618 then throw("Invalid addRewards params")
609619 else {
610- let bK = bM.payments[0].amount
611- let be = bd(U, V)._1
612- let ch = aK()
613- let ci = if ((ch > aC()))
614- then (bK / T)
620+ let bN = bP.payments[0].amount
621+ let bh = bg(V, W)._1
622+ let cl = aM()
623+ let cm = if ((cl > aD()))
624+ then (bN / U)
615625 else {
616- let cj = (aC() - ch)
617- let ck = (aB() * cj)
618- ((bK + ck) / T)
626+ let cn = (aD() - cl)
627+ let co = (aC() * cn)
628+ ((bN + co) / U)
619629 }
620- (((bC(ci) ++ bH(be)) ++ bA(bK)) ++ bE(ch, (ch + T)))
630+ (((bF(cm) ++ bK(bh)) ++ bD(bN)) ++ bH(cl, (cl + U)))
621631 }
622632
623633
624634
625-@Callable(bM)
635+@Callable(bP)
626636 func ackRewards () = {
627- let cl = invoke(R(), "claimProfit", [N()], nil)
628- if ((cl == cl))
637+ let cp = invoke(S(), "claimProfit", [O()], nil)
638+ if ((cp == cp))
629639 then {
630- let cm = {
631- let cn = cl
632- if ($isInstanceOf(cn, "Int"))
640+ let cq = {
641+ let cr = cp
642+ if ($isInstanceOf(cr, "Int"))
633643 then {
634- let co = cn
635- Z(co)
644+ let cs = cr
645+ aa(cs)
636646 }
637647 else throw("Invalid claimProfit response")
638648 }
639- let cp = if ((cm > 0))
649+ let ct = if ((cq > 0))
640650 then {
641- let aU = aS(cm)
642- let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(cm))])
643- if ((bZ == bZ))
644- then (bp(cm) ++ bw(aU))
651+ let aX = aV(cq)
652+ let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(cq))])
653+ if ((cd == cd))
654+ then (bs(cq) ++ bz(aX))
645655 else throw("Strict value is not equal to itself.")
646656 }
647657 else nil
648- if ((cp == cp))
649- then cp
658+ if ((ct == ct))
659+ then ct
650660 else throw("Strict value is not equal to itself.")
651661 }
652662 else throw("Strict value is not equal to itself.")
654664
655665
656666
657-@Callable(bM)
658-func view_reward (ar) = {
659- let bq = aq(ar)
660- let cq = ad(as(ar), bq)
661- let cr = ad(ap(), bq)
662- let cs = (cr - cq)
663- throw(toString(cs))
667+@Callable(bP)
668+func view_reward (as) = {
669+ let bt = ar(as)
670+ let cu = ae(at(as), bt)
671+ let cv = ae(aq(), bt)
672+ let cw = (cv - cu)
673+ throw(toString(cw))
664674 }
665675
666676
667677
668-@Callable(bM)
669-func view_stakingReward (ar) = {
670- let bh = bd(ar, 0)._3
671- throw(toString(W(bh)))
678+@Callable(bP)
679+func view_stakingReward (as) = {
680+ let bk = bg(as, 0)._3
681+ throw(toString(X(bk)))
672682 }
673683
674684
675685
676-@Callable(bM)
677-func view_withdrawLimit (ar) = {
678- let aQ = aL(ar)._2
679- let ct = W(ad(aQ, ap()))
680- throw(toString(ct))
686+@Callable(bP)
687+func view_withdrawLimit (as) = {
688+ let aT = aN(as)._2
689+ let cx = X(ae(aT, aq()))
690+ throw(toString(cx))
681691 }
682692
683693
684-@Verifier(cu)
685-func cv () = {
686- let cw = getString(this, w)
687- if (isDefined(cw))
694+@Verifier(cy)
695+func cz () = {
696+ let cA = getString(this, x)
697+ if (isDefined(cA))
688698 then {
689- let cx = getString(addressFromStringValue(value(cw)), A)
690- if (isDefined(cx))
691- then valueOrElse(getBoolean(addressFromStringValue(value(cx)), ((("status_" + toString(this)) + "_") + toBase58String(cu.id))), false)
699+ let cB = getString(addressFromStringValue(value(cA)), B)
700+ if (isDefined(cB))
701+ then valueOrElse(getBoolean(addressFromStringValue(value(cB)), ((("status_" + toString(this)) + "_") + toBase58String(cy.id))), false)
692702 else throw("unable to verify: admin not set in coordinator")
693703 }
694- else sigVerify(cu.bodyBytes, cu.proofs[0], cu.senderPublicKey)
704+ else sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
695705 }
696706
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_totalSupply"
55
66 let b = "k_rewardBalance"
77
88 let c = "k_lockedBalance"
99
1010 let d = "k_freeBalance"
1111
1212 let e = "k_excessBalance"
1313
1414 let f = "k_vaultAsset"
1515
1616 let g = "k_vaultAssetDecimals"
1717
1818 let h = "k_maxSpotUtilization"
1919
2020 let i = "k_withdrawPerPeriod"
2121
22-let j = "k_rate"
22+let j = "k_withdrawUnlimited"
2323
24-let k = "k_lastUpdateTime"
24+let k = "k_rate"
2525
26-let l = "k_rewardPerTokenStored"
26+let l = "k_lastUpdateTime"
2727
28-let m = "k_rewardRate"
28+let m = "k_rewardPerTokenStored"
2929
30-let n = "k_periodFinish"
30+let n = "k_rewardRate"
3131
32-let o = "k_userRewardPerToken"
32+let o = "k_periodFinish"
3333
34-let p = "k_userReward"
34+let p = "k_userRewardPerToken"
3535
36-let q = "k_balance"
36+let q = "k_userReward"
3737
38-let r = "k_average_rate"
38+let r = "k_balance"
3939
40-let s = "k_withdraw_limit"
40+let s = "k_average_rate"
4141
42-let t = "k_last_withdraw_date"
42+let t = "k_withdraw_limit"
4343
44-let u = "k_withdraw_in_period"
44+let u = "k_last_withdraw_date"
4545
46-let v = "k_initialized"
46+let v = "k_withdraw_in_period"
4747
48-let w = "k_coordinatorAddress"
48+let w = "k_initialized"
4949
50-let x = "k_amm"
50+let x = "k_coordinatorAddress"
5151
52-let y = "k_gov_asset"
52+let y = "k_amm"
5353
54-let z = "k_quote_asset"
54+let z = "k_gov_asset"
5555
56-let A = "k_admin_address"
56+let A = "k_quote_asset"
5757
58-let B = "k_manager_address"
58+let B = "k_admin_address"
5959
60-let C = "k_spot_address"
60+let C = "k_manager_address"
6161
62-let D = "k_collateral_address"
62+let D = "k_spot_address"
6363
64-func E (F,G) = ((F + "_") + G)
64+let E = "k_collateral_address"
65+
66+func F (G,H) = ((G + "_") + H)
6567
6668
67-func H () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, w), "Coordinator not set")), "Coordinator address invalid")
69+func I () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, x), "Coordinator not set")), "Coordinator address invalid")
6870
6971
70-func I () = addressFromString(valueOrErrorMessage(getString(H(), A), "Admin address not set"))
72+func J () = addressFromString(valueOrErrorMessage(getString(I(), B), "Admin address not set"))
7173
7274
73-func J (G) = valueOrElse(getBoolean(H(), E(x, G)), false)
75+func K (H) = valueOrElse(getBoolean(I(), F(y, H)), false)
7476
7577
76-func K () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), C), "Spot address not set")), "Spot address invalid")
78+func L () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), D), "Spot address not set")), "Spot address invalid")
7779
7880
79-func L () = fromBase58String(valueOrErrorMessage(getString(H(), y), "Governance asset not set"))
81+func M () = fromBase58String(valueOrErrorMessage(getString(I(), z), "Governance asset not set"))
8082
8183
82-func M () = fromBase58String(getStringValue(H(), z))
84+func N () = fromBase58String(getStringValue(I(), A))
8385
8486
85-func N () = valueOrErrorMessage(getString(this, f), "Vault asset not set")
87+func O () = valueOrErrorMessage(getString(this, f), "Vault asset not set")
8688
8789
88-func O () = {
89- let P = N()
90- if ((P == "WAVES"))
90+func P () = {
91+ let Q = O()
92+ if ((Q == "WAVES"))
9193 then unit
92- else fromBase58String(P)
94+ else fromBase58String(Q)
9395 }
9496
9597
96-func Q () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set")
98+func R () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set")
9799
98100
99-func R () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), B), "Manager address not set")), "Manager address invalid")
101+func S () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), C), "Manager address not set")), "Manager address invalid")
100102
101103
102-let S = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
104+let T = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
103105
104-let T = (((7 * 60) * 60) * 24)
106+let U = (((7 * 60) * 60) * 24)
105107
106-let U = ""
108+let V = ""
107109
108-let V = 0
110+let W = 0
109111
110-func W (X) = {
111- let Y = Q()
112- if ((Y == 6))
113- then (X / 100)
114- else if ((Y == 8))
115- then X
112+func X (Y) = {
113+ let Z = R()
114+ if ((Z == 6))
115+ then (Y / 100)
116+ else if ((Z == 8))
117+ then Y
116118 else throw("Invalid asset decimals")
117119 }
118120
119121
120-func Z (X) = {
121- let Y = Q()
122- if ((Y == 6))
123- then (X * 100)
124- else if ((Y == 8))
125- then X
122+func aa (Y) = {
123+ let Z = R()
124+ if ((Z == 6))
125+ then (Y * 100)
126+ else if ((Z == 8))
127+ then Y
126128 else throw("Invalid asset decimals")
127129 }
128130
129131
130-func aa (ab,ac) = fraction(ab, S, ac, HALFEVEN)
132+func ab (ac,ad) = fraction(ac, T, ad, HALFEVEN)
131133
132134
133-func ad (ab,ac) = fraction(ab, ac, S, HALFEVEN)
135+func ae (ac,ad) = fraction(ac, ad, T, HALFEVEN)
134136
135137
136-func ae (ab) = if ((ab > 0))
137- then ab
138- else -(ab)
138+func af (ac) = if ((ac > 0))
139+ then ac
140+ else -(ac)
139141
140142
141-func af (ab,ac) = if ((ab > ac))
142- then ac
143- else ab
143+func ag (ac,ad) = if ((ac > ad))
144+ then ad
145+ else ac
144146
145147
146-let ag = (86400 * 1000)
148+let ah = (86400 * 1000)
147149
148-let ah = aa((1 * S), (4 * S))
150+let ai = ab((1 * T), (4 * T))
149151
150-func ai (aj) = valueOrErrorMessage(getInteger(this, aj), ("no value for " + aj))
152+func aj (ak) = valueOrErrorMessage(getInteger(this, ak), ("no value for " + ak))
151153
152154
153-func ak (aj) = valueOrElse(getInteger(this, aj), 0)
155+func al (ak) = valueOrElse(getInteger(this, ak), 0)
154156
155157
156-func al (aj) = valueOrElse(getInteger(this, aj), S)
158+func am (ak) = valueOrElse(getInteger(this, ak), T)
157159
158160
159-func am (aj,an) = valueOrElse(getInteger(this, aj), an)
161+func an (ak,ao) = valueOrElse(getInteger(this, ak), ao)
160162
161163
162-func ao () = ak(a)
164+func ap () = al(a)
163165
164166
165-func ap () = al(j)
167+func aq () = am(k)
166168
167169
168-func aq (ar) = ak(E(q, ar))
170+func ar (as) = al(F(r, as))
169171
170172
171-func as (ar) = ak(E(r, ar))
173+func at (as) = al(F(s, as))
172174
173175
174-func at (ar) = ak(E(s, ar))
176+func au (as) = al(F(t, as))
175177
176178
177-func au (ar) = ak(E(u, ar))
179+func av (as) = al(F(v, as))
178180
179181
180-func av (ar) = ak(E(t, ar))
182+func aw (as) = al(F(u, as))
181183
182184
183-func aw () = ak(d)
185+func ax () = al(d)
184186
185187
186-func ax () = ak(c)
188+func ay () = al(c)
187189
188190
189-func ay () = ak(e)
191+func az () = al(e)
190192
191193
192-func az () = ak(l)
194+func aA () = al(m)
193195
194196
195-func aA () = ak(k)
197+func aB () = al(l)
196198
197199
198-func aB () = ak(m)
200+func aC () = al(n)
199201
200202
201-func aC () = ak(n)
203+func aD () = al(o)
202204
203205
204-func aD () = ak(b)
206+func aE () = al(b)
205207
206208
207-func aE (ar) = ak(E(p, ar))
209+func aF (as) = al(F(q, as))
208210
209211
210-func aF (ar) = ak(E(o, ar))
212+func aG (as) = al(F(p, as))
211213
212214
213-func aG () = ak(h)
215+func aH () = al(h)
214216
215217
216-func aH () = am(i, ah)
218+func aI () = an(i, ai)
217219
218220
219-func aI () = valueOrElse(getBoolean(this, v), false)
221+func aJ () = valueOrElse(getBoolean(this, j), false)
220222
221223
222-func aJ () = lastBlock.timestamp
224+func aK () = valueOrElse(getBoolean(this, w), false)
223225
224226
225-func aK () = (aJ() / 1000)
227+func aL () = lastBlock.timestamp
226228
227229
228-func aL (ar) = {
229- let aM = aJ()
230- let aN = av(ar)
231- let aO = if (((aM - aN) > ag))
232- then $Tuple3(aM, at(ar), 0)
233- else $Tuple3(aN, (at(ar) - au(ar)), au(ar))
234- let aP = aO._1
235- let aQ = aO._2
236- let aR = aO._3
237- $Tuple3(aP, aQ, aR)
230+func aM () = (aL() / 1000)
231+
232+
233+func aN (as) = {
234+ let aO = aL()
235+ let aP = aw(as)
236+ let aQ = if (((aO - aP) > ah))
237+ then $Tuple3(aO, au(as), 0)
238+ else {
239+ let aR = av(as)
240+ if (aJ())
241+ then $Tuple3(aP, au(as), aR)
242+ else $Tuple3(aP, (au(as) - aR), aR)
243+ }
244+ let aS = aQ._1
245+ let aT = aQ._2
246+ let aU = aQ._3
247+ $Tuple3(aS, aT, aU)
238248 }
239249
240250
241-func aS (aT) = {
242- let aU = if ((ao() > 0))
243- then aa((aw() + aT), ao())
244- else S
245- aU
251+func aV (aW) = {
252+ let aX = if ((ap() > 0))
253+ then ab((ax() + aW), ap())
254+ else T
255+ aX
246256 }
247257
248258
249-func aV () = af(aK(), aC())
259+func aY () = ag(aM(), aD())
250260
251261
252-func aW (aX) = if (((ao() + aX) == 0))
253- then az()
262+func aZ (ba) = if (((ap() + ba) == 0))
263+ then aA()
254264 else {
255- let aY = (aV() - aA())
256- let aZ = if ((0 > aY))
265+ let bb = (aY() - aB())
266+ let bc = if ((0 > bb))
257267 then 0
258- else aY
259- let ba = aa((aB() * aZ), (ao() + aX))
260- (az() + ba)
268+ else bb
269+ let bd = ab((aC() * bc), (ap() + ba))
270+ (aA() + bd)
261271 }
262272
263273
264-func bb (ar,aX) = {
265- let bc = (aW(aX) - aF(ar))
266- (ad((aq(ar) + aX), bc) + aE(ar))
274+func be (as,ba) = {
275+ let bf = (aZ(ba) - aG(as))
276+ (ae((ar(as) + ba), bf) + aF(as))
267277 }
268278
269279
270-func bd (ar,aX) = {
271- let be = aW(aX)
272- let bf = aK()
273- let bg = if ((ar != ""))
274- then $Tuple2(bb(ar, aX), be)
280+func bg (as,ba) = {
281+ let bh = aZ(ba)
282+ let bi = aM()
283+ let bj = if ((as != ""))
284+ then $Tuple2(be(as, ba), bh)
275285 else $Tuple2(0, 0)
276- let bh = bg._1
277- let bi = bg._2
278- $Tuple4(be, bf, bh, bi)
286+ let bk = bj._1
287+ let bl = bj._2
288+ $Tuple4(bh, bi, bk, bl)
279289 }
280290
281291
282-func bj (bk,bl) = if (((aq(bk) + bl) >= 0))
283- then [IntegerEntry(E(q, bk), (aq(bk) + bl))]
284- else throw(((("Vault: can not update user balance. Balance: " + toString(aq(bk))) + " change: ") + toString(bl)))
292+func bm (bn,bo) = if (((ar(bn) + bo) >= 0))
293+ then [IntegerEntry(F(r, bn), (ar(bn) + bo))]
294+ else throw(((("Vault: can not update user balance. Balance: " + toString(ar(bn))) + " change: ") + toString(bo)))
285295
286296
287-func bm (bk,bn) = [IntegerEntry(E(s, bk), bn)]
297+func bp (bn,bq) = [IntegerEntry(F(t, bn), bq)]
288298
289299
290-func bo (bk,bn) = [IntegerEntry(E(r, bk), bn)]
300+func br (bn,bq) = [IntegerEntry(F(s, bn), bq)]
291301
292302
293-func bp (bl) = {
294- let bq = aw()
295- if (((bq + bl) >= 0))
296- then [IntegerEntry(d, (bq + bl))]
297- else throw(((("Vault: can not update free balance. Balance: " + toString(bq)) + " change: ") + toString(bl)))
303+func bs (bo) = {
304+ let bt = ax()
305+ if (((bt + bo) >= 0))
306+ then [IntegerEntry(d, (bt + bo))]
307+ else throw(((("Vault: can not update free balance. Balance: " + toString(bt)) + " change: ") + toString(bo)))
298308 }
299309
300310
301-func br (bl) = {
302- let bq = ax()
303- if (((bq + bl) >= 0))
304- then [IntegerEntry(c, (bq + bl))]
305- else throw(((("Vault: can not update locked balance. Balance: " + toString(bq)) + " change: ") + toString(bl)))
311+func bu (bo) = {
312+ let bt = ay()
313+ if (((bt + bo) >= 0))
314+ then [IntegerEntry(c, (bt + bo))]
315+ else throw(((("Vault: can not update locked balance. Balance: " + toString(bt)) + " change: ") + toString(bo)))
306316 }
307317
308318
309-func bs (bl) = {
310- let bt = (ay() + bl)
311- let bu = aa(ae(bt), aw())
312- if ((aG() > bu))
313- then [IntegerEntry(e, bt)]
314- else throw(((((((("Vault: can not update excess balance. Balance: " + toString(ay())) + " change: ") + toString(bl)) + " utilization rate: ") + toString(bu)) + " max utilization rate: ") + toString(aG())))
319+func bv (bo) = {
320+ let bw = (az() + bo)
321+ let bx = ab(af(bw), ax())
322+ if ((aH() > bx))
323+ then [IntegerEntry(e, bw)]
324+ else throw(((((((("Vault: can not update excess balance. Balance: " + toString(az())) + " change: ") + toString(bo)) + " utilization rate: ") + toString(bx)) + " max utilization rate: ") + toString(aH())))
315325 }
316326
317327
318-func bv (bl) = [IntegerEntry(a, (ao() + bl))]
328+func by (bo) = [IntegerEntry(a, (ap() + bo))]
319329
320330
321-func bw (bn) = [IntegerEntry(j, bn)]
331+func bz (bq) = [IntegerEntry(k, bq)]
322332
323333
324-func bx (bk,by,bz) = [IntegerEntry(E(t, bk), by), IntegerEntry(E(u, bk), bz)]
334+func bA (bn,bB,bC) = [IntegerEntry(F(u, bn), bB), IntegerEntry(F(v, bn), bC)]
325335
326336
327-func bA (bB) = [IntegerEntry(b, (aD() + bB))]
337+func bD (bE) = [IntegerEntry(b, (aE() + bE))]
328338
329339
330-func bC (bD) = [IntegerEntry(m, bD)]
340+func bF (bG) = [IntegerEntry(n, bG)]
331341
332342
333-func bE (bF,bG) = [IntegerEntry(k, bF), IntegerEntry(n, bG)]
343+func bH (bI,bJ) = [IntegerEntry(l, bI), IntegerEntry(o, bJ)]
334344
335345
336-func bH (bI) = [IntegerEntry(l, bI)]
346+func bK (bL) = [IntegerEntry(m, bL)]
337347
338348
339-func bJ (ar,bK,bL) = [IntegerEntry(E(p, ar), bK), IntegerEntry(E(o, ar), bL)]
349+func bM (as,bN,bO) = [IntegerEntry(F(q, as), bN), IntegerEntry(F(p, as), bO)]
340350
341351
342-@Callable(bM)
343-func changeSettings (bN,bO) = if (if (if (if (!(aI()))
352+@Callable(bP)
353+func changeSettings (bQ,bR,bS) = if (if (if (if (!(aK()))
344354 then true
345- else (bM.caller != I()))
355+ else (bP.caller != J()))
346356 then true
347- else if ((0 > bN))
357+ else if ((0 > bQ))
348358 then true
349- else (bN > S))
359+ else (bQ > T))
350360 then true
351- else if ((0 > bO))
361+ else if ((0 > bR))
352362 then true
353- else (bO > S))
363+ else (bR > T))
354364 then throw("Invalid changeSettings params")
355- else [IntegerEntry(h, bN), IntegerEntry(i, bO)]
365+ else [IntegerEntry(h, bQ), IntegerEntry(i, bR), BooleanEntry(j, bS)]
356366
357367
358368
359-@Callable(bM)
360-func initialize (bP,bQ,bN) = if (if (if (if (aI())
369+@Callable(bP)
370+func initialize (bT,bU,bQ) = if (if (if (if (aK())
361371 then true
362- else (bM.caller != this))
372+ else (bP.caller != this))
363373 then true
364- else (0 > bN))
374+ else (0 > bQ))
365375 then true
366- else (bN > S))
376+ else (bQ > T))
367377 then throw("Unable to initialize")
368378 else {
369- let Y = if ((bQ == "WAVES"))
379+ let Z = if ((bU == "WAVES"))
370380 then 8
371381 else {
372- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bQ)), ("Invalid token id: " + bQ))
373- bR.decimals
382+ let bV = valueOrErrorMessage(assetInfo(fromBase58String(bU)), ("Invalid token id: " + bU))
383+ bV.decimals
374384 }
375-[StringEntry(w, toString(valueOrErrorMessage(addressFromString(bP), "Invalid coordinator address"))), StringEntry(f, bQ), IntegerEntry(g, Y), IntegerEntry(h, bN), BooleanEntry(v, true)]
385+[StringEntry(x, toString(valueOrErrorMessage(addressFromString(bT), "Invalid coordinator address"))), StringEntry(f, bU), IntegerEntry(g, Z), IntegerEntry(h, bQ), BooleanEntry(w, true)]
376386 }
377387
378388
379389
380-@Callable(bM)
390+@Callable(bP)
381391 func stake () = {
382- let ar = toString(bM.caller)
383- let X = Z(bM.payments[0].amount)
384- if (if (if ((bM.payments[0].assetId != O()))
392+ let as = toString(bP.caller)
393+ let Y = aa(bP.payments[0].amount)
394+ if (if (if ((bP.payments[0].assetId != P()))
385395 then true
386- else (size(bM.payments) != 1))
396+ else (size(bP.payments) != 1))
387397 then true
388- else !(aI()))
398+ else !(aK()))
389399 then throw("Invalid call to stake")
390400 else {
391- let bS = bd(ar, 0)
392- let be = bS._1
393- let bf = bS._2
394- let bh = bS._3
395- let bi = bS._4
396- let bT = ap()
397- let bU = as(ar)
398- let bV = aa(X, bT)
399- let bW = aa((ad(bV, bT) + ad(aq(ar), bU)), (bV + aq(ar)))
400- let bX = (bV + aq(ar))
401- let bY = ad(bX, aH())
402- let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
403- if ((bZ == bZ))
401+ let bW = bg(as, 0)
402+ let bh = bW._1
403+ let bi = bW._2
404+ let bk = bW._3
405+ let bl = bW._4
406+ let bX = aq()
407+ let bY = at(as)
408+ let bZ = ab(Y, bX)
409+ let ca = ab((ae(bZ, bX) + ae(ar(as), bY)), (bZ + ar(as)))
410+ let cb = (bZ + ar(as))
411+ let cc = ae(cb, aI())
412+ let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
413+ if ((cd == cd))
404414 then {
405- let ca = if ((aG() > 0))
406- then invoke(K(), "notifyVaultBalanceChange", [N(), X], nil)
415+ let ce = if ((aH() > 0))
416+ then invoke(L(), "notifyVaultBalanceChange", [O(), Y], nil)
407417 else nil
408- if ((ca == ca))
409- then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(X)) ++ bj(ar, bV)) ++ bo(ar, bW)) ++ bm(ar, bY)) ++ bv(bV))
418+ if ((ce == ce))
419+ then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(Y)) ++ bm(as, bZ)) ++ br(as, ca)) ++ bp(as, cc)) ++ by(bZ))
410420 else throw("Strict value is not equal to itself.")
411421 }
412422 else throw("Strict value is not equal to itself.")
413423 }
414424 }
415425
416426
417427
418-@Callable(bM)
419-func unStake (X) = {
420- let ar = toString(bM.caller)
421- let cb = Z(X)
422- if (if (if ((bM.payments != nil))
428+@Callable(bP)
429+func unStake (Y) = {
430+ let as = toString(bP.caller)
431+ let cf = aa(Y)
432+ if (if (if ((bP.payments != nil))
423433 then true
424- else (0 >= cb))
434+ else (0 >= cf))
425435 then true
426- else !(aI()))
436+ else !(aK()))
427437 then throw("Invalid call to unStake")
428438 else {
429- let cc = bd(ar, 0)
430- let be = cc._1
431- let bf = cc._2
432- let bh = cc._3
433- let bi = cc._4
434- let cd = aL(ar)
435- let aP = cd._1
436- let aQ = cd._2
437- let aR = cd._3
438- let bV = aa(cb, ap())
439- if ((bV > aQ))
439+ let cg = bg(as, 0)
440+ let bh = cg._1
441+ let bi = cg._2
442+ let bk = cg._3
443+ let bl = cg._4
444+ let ch = aN(as)
445+ let aS = ch._1
446+ let aT = ch._2
447+ let aU = ch._3
448+ let bZ = ab(cf, aq())
449+ if ((bZ > aT))
440450 then throw("Invalid call to unStake: withdraw over limit")
441451 else {
442- let ce = (aR + bV)
443- if ((cb > aw()))
452+ let ci = (aU + bZ)
453+ if ((cf > ax()))
444454 then throw("Invalid call to unStake: balance too low")
445455 else {
446- let cf = invoke(R(), "withdraw", [N(), W(cb)], nil)
447- if ((cf == cf))
456+ let cj = invoke(S(), "withdraw", [O(), X(cf)], nil)
457+ if ((cj == cj))
448458 then {
449- let ca = if ((aG() > 0))
450- then invoke(K(), "notifyVaultBalanceChange", [N(), -(cb)], nil)
459+ let ce = if ((aH() > 0))
460+ then invoke(L(), "notifyVaultBalanceChange", [O(), -(cf)], nil)
451461 else nil
452- if ((ca == ca))
453- then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(-(cb))) ++ bj(ar, -(bV))) ++ bv(-(bV))) ++ bx(ar, aP, ce)) ++ [ScriptTransfer(bM.caller, W(cb), O())])
462+ if ((ce == ce))
463+ then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(-(cf))) ++ bm(as, -(bZ))) ++ by(-(bZ))) ++ bA(as, aS, ci)) ++ [ScriptTransfer(bP.caller, X(cf), P())])
454464 else throw("Strict value is not equal to itself.")
455465 }
456466 else throw("Strict value is not equal to itself.")
457467 }
458468 }
459469 }
460470 }
461471
462472
463473
464-@Callable(bM)
474+@Callable(bP)
465475 func withdrawRewards () = {
466- let ar = toString(bM.caller)
467- let cg = bd(ar, 0)
468- let be = cg._1
469- let bf = cg._2
470- let bh = cg._3
471- let bi = cg._4
472- if (if ((0 >= bh))
476+ let as = toString(bP.caller)
477+ let ck = bg(as, 0)
478+ let bh = ck._1
479+ let bi = ck._2
480+ let bk = ck._3
481+ let bl = ck._4
482+ if (if ((0 >= bk))
473483 then true
474- else !(aI()))
484+ else !(aK()))
475485 then throw("No reward: Vault")
476- else ((((bJ(ar, 0, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bA(-(bh))) ++ [ScriptTransfer(bM.caller, bh, L())])
486+ else ((((bM(as, 0, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bD(-(bk))) ++ [ScriptTransfer(bP.caller, bk, M())])
477487 }
478488
479489
480490
481-@Callable(bM)
491+@Callable(bP)
482492 func addFree () = {
483- let X = Z(bM.payments[0].amount)
484- if (if (if (if ((bM.payments[0].assetId != O()))
493+ let Y = aa(bP.payments[0].amount)
494+ if (if (if (if ((bP.payments[0].assetId != P()))
485495 then true
486- else (size(bM.payments) != 1))
496+ else (size(bP.payments) != 1))
487497 then true
488- else !(aI()))
498+ else !(aK()))
489499 then true
490- else !(if (if (J(toString(bM.caller)))
500+ else !(if (if (K(toString(bP.caller)))
491501 then true
492- else (bM.caller == K()))
502+ else (bP.caller == L()))
493503 then true
494- else (bM.caller == I())))
504+ else (bP.caller == J())))
495505 then throw("Invalid addFree params")
496506 else {
497- let aU = aS(X)
498- let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
499- if ((bZ == bZ))
500- then (bp(X) ++ bw(aU))
507+ let aX = aV(Y)
508+ let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
509+ if ((cd == cd))
510+ then (bs(Y) ++ bz(aX))
501511 else throw("Strict value is not equal to itself.")
502512 }
503513 }
504514
505515
506516
507-@Callable(bM)
517+@Callable(bP)
508518 func addLocked () = {
509- let X = Z(bM.payments[0].amount)
510- if (if (if (if ((bM.payments[0].assetId != O()))
519+ let Y = aa(bP.payments[0].amount)
520+ if (if (if (if ((bP.payments[0].assetId != P()))
511521 then true
512- else (size(bM.payments) != 1))
522+ else (size(bP.payments) != 1))
513523 then true
514- else !(aI()))
524+ else !(aK()))
515525 then true
516- else !(if (J(toString(bM.caller)))
526+ else !(if (K(toString(bP.caller)))
517527 then true
518- else (bM.caller == I())))
528+ else (bP.caller == J())))
519529 then throw("Invalid addLocked params")
520530 else {
521- let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
522- if ((cf == cf))
523- then br(X)
531+ let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
532+ if ((cj == cj))
533+ then bu(Y)
524534 else throw("Strict value is not equal to itself.")
525535 }
526536 }
527537
528538
529539
530-@Callable(bM)
531-func exchangeFreeAndLocked (X) = if (if (!(aI()))
540+@Callable(bP)
541+func exchangeFreeAndLocked (Y) = if (if (!(aK()))
532542 then true
533- else if (!(J(toString(bM.caller))))
534- then (bM.caller != I())
543+ else if (!(K(toString(bP.caller))))
544+ then (bP.caller != J())
535545 else false)
536546 then throw("Invalid exchangeFreeAndLocked params")
537547 else {
538- let cb = Z(X)
539- let aU = aS(-(cb))
540- ((br(cb) ++ bp(-(cb))) ++ bw(aU))
548+ let cf = aa(Y)
549+ let aX = aV(-(cf))
550+ ((bu(cf) ++ bs(-(cf))) ++ bz(aX))
541551 }
542552
543553
544554
545-@Callable(bM)
546-func withdrawLocked (X) = if (if (if (!(aI()))
555+@Callable(bP)
556+func withdrawLocked (Y) = if (if (if (!(aK()))
547557 then true
548- else (0 >= X))
558+ else (0 >= Y))
549559 then true
550- else !(J(toString(bM.caller))))
560+ else !(K(toString(bP.caller))))
551561 then throw("Invalid withdrawLocked params")
552562 else {
553- let cb = Z(X)
554- let cf = invoke(R(), "withdraw", [N(), W(cb)], nil)
555- if ((cf == cf))
556- then (br(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())])
563+ let cf = aa(Y)
564+ let cj = invoke(S(), "withdraw", [O(), X(cf)], nil)
565+ if ((cj == cj))
566+ then (bu(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())])
557567 else throw("Strict value is not equal to itself.")
558568 }
559569
560570
561571
562-@Callable(bM)
563-func borrow (X) = if (if (if (!(aI()))
572+@Callable(bP)
573+func borrow (Y) = if (if (if (!(aK()))
564574 then true
565- else (0 >= X))
575+ else (0 >= Y))
566576 then true
567- else !((bM.caller == K())))
577+ else !((bP.caller == L())))
568578 then throw("Invalid borrow params")
569579 else {
570- let cb = Z(X)
571- let cf = invoke(R(), "withdraw", [N(), W(cb)], nil)
572- if ((cf == cf))
573- then (bs(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())])
580+ let cf = aa(Y)
581+ let cj = invoke(S(), "withdraw", [O(), X(cf)], nil)
582+ if ((cj == cj))
583+ then (bv(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())])
574584 else throw("Strict value is not equal to itself.")
575585 }
576586
577587
578588
579-@Callable(bM)
589+@Callable(bP)
580590 func repay () = {
581- let X = Z(bM.payments[0].amount)
582- if (if (if (if ((bM.payments[0].assetId != O()))
591+ let Y = aa(bP.payments[0].amount)
592+ if (if (if (if ((bP.payments[0].assetId != P()))
583593 then true
584- else (size(bM.payments) != 1))
594+ else (size(bP.payments) != 1))
585595 then true
586- else !(aI()))
596+ else !(aK()))
587597 then true
588- else !(if ((bM.caller == K()))
598+ else !(if ((bP.caller == L()))
589599 then true
590- else (bM.caller == I())))
600+ else (bP.caller == J())))
591601 then throw("Invalid repay params")
592602 else {
593- let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))])
594- if ((cf == cf))
595- then bs(X)
603+ let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))])
604+ if ((cj == cj))
605+ then bv(Y)
596606 else throw("Strict value is not equal to itself.")
597607 }
598608 }
599609
600610
601611
602-@Callable(bM)
603-func addRewards () = if (if (if ((bM.payments[0].assetId != L()))
612+@Callable(bP)
613+func addRewards () = if (if (if ((bP.payments[0].assetId != M()))
604614 then true
605- else (size(bM.payments) != 1))
615+ else (size(bP.payments) != 1))
606616 then true
607- else !(aI()))
617+ else !(aK()))
608618 then throw("Invalid addRewards params")
609619 else {
610- let bK = bM.payments[0].amount
611- let be = bd(U, V)._1
612- let ch = aK()
613- let ci = if ((ch > aC()))
614- then (bK / T)
620+ let bN = bP.payments[0].amount
621+ let bh = bg(V, W)._1
622+ let cl = aM()
623+ let cm = if ((cl > aD()))
624+ then (bN / U)
615625 else {
616- let cj = (aC() - ch)
617- let ck = (aB() * cj)
618- ((bK + ck) / T)
626+ let cn = (aD() - cl)
627+ let co = (aC() * cn)
628+ ((bN + co) / U)
619629 }
620- (((bC(ci) ++ bH(be)) ++ bA(bK)) ++ bE(ch, (ch + T)))
630+ (((bF(cm) ++ bK(bh)) ++ bD(bN)) ++ bH(cl, (cl + U)))
621631 }
622632
623633
624634
625-@Callable(bM)
635+@Callable(bP)
626636 func ackRewards () = {
627- let cl = invoke(R(), "claimProfit", [N()], nil)
628- if ((cl == cl))
637+ let cp = invoke(S(), "claimProfit", [O()], nil)
638+ if ((cp == cp))
629639 then {
630- let cm = {
631- let cn = cl
632- if ($isInstanceOf(cn, "Int"))
640+ let cq = {
641+ let cr = cp
642+ if ($isInstanceOf(cr, "Int"))
633643 then {
634- let co = cn
635- Z(co)
644+ let cs = cr
645+ aa(cs)
636646 }
637647 else throw("Invalid claimProfit response")
638648 }
639- let cp = if ((cm > 0))
649+ let ct = if ((cq > 0))
640650 then {
641- let aU = aS(cm)
642- let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(cm))])
643- if ((bZ == bZ))
644- then (bp(cm) ++ bw(aU))
651+ let aX = aV(cq)
652+ let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(cq))])
653+ if ((cd == cd))
654+ then (bs(cq) ++ bz(aX))
645655 else throw("Strict value is not equal to itself.")
646656 }
647657 else nil
648- if ((cp == cp))
649- then cp
658+ if ((ct == ct))
659+ then ct
650660 else throw("Strict value is not equal to itself.")
651661 }
652662 else throw("Strict value is not equal to itself.")
653663 }
654664
655665
656666
657-@Callable(bM)
658-func view_reward (ar) = {
659- let bq = aq(ar)
660- let cq = ad(as(ar), bq)
661- let cr = ad(ap(), bq)
662- let cs = (cr - cq)
663- throw(toString(cs))
667+@Callable(bP)
668+func view_reward (as) = {
669+ let bt = ar(as)
670+ let cu = ae(at(as), bt)
671+ let cv = ae(aq(), bt)
672+ let cw = (cv - cu)
673+ throw(toString(cw))
664674 }
665675
666676
667677
668-@Callable(bM)
669-func view_stakingReward (ar) = {
670- let bh = bd(ar, 0)._3
671- throw(toString(W(bh)))
678+@Callable(bP)
679+func view_stakingReward (as) = {
680+ let bk = bg(as, 0)._3
681+ throw(toString(X(bk)))
672682 }
673683
674684
675685
676-@Callable(bM)
677-func view_withdrawLimit (ar) = {
678- let aQ = aL(ar)._2
679- let ct = W(ad(aQ, ap()))
680- throw(toString(ct))
686+@Callable(bP)
687+func view_withdrawLimit (as) = {
688+ let aT = aN(as)._2
689+ let cx = X(ae(aT, aq()))
690+ throw(toString(cx))
681691 }
682692
683693
684-@Verifier(cu)
685-func cv () = {
686- let cw = getString(this, w)
687- if (isDefined(cw))
694+@Verifier(cy)
695+func cz () = {
696+ let cA = getString(this, x)
697+ if (isDefined(cA))
688698 then {
689- let cx = getString(addressFromStringValue(value(cw)), A)
690- if (isDefined(cx))
691- then valueOrElse(getBoolean(addressFromStringValue(value(cx)), ((("status_" + toString(this)) + "_") + toBase58String(cu.id))), false)
699+ let cB = getString(addressFromStringValue(value(cA)), B)
700+ if (isDefined(cB))
701+ then valueOrElse(getBoolean(addressFromStringValue(value(cB)), ((("status_" + toString(this)) + "_") + toBase58String(cy.id))), false)
692702 else throw("unable to verify: admin not set in coordinator")
693703 }
694- else sigVerify(cu.bodyBytes, cu.proofs[0], cu.senderPublicKey)
704+ else sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
695705 }
696706

github/deemru/w8io/169f3d6 
235.06 ms