tx · 4XqrdzkJqUJ5szaRUELAyxBhV9FdsfqsqF8Lj5E4DN2e

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.02800000 Waves

2022.09.02 11:03 [2211252] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "4XqrdzkJqUJ5szaRUELAyxBhV9FdsfqsqF8Lj5E4DN2e", "fee": 2800000, "feeAssetId": null, "timestamp": 1662105540190, "version": 2, "chainId": 84, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "25pkyFethNaHYsNhf2sThKa3n7iTUz9KvZrJ5a7aJtctZbCdG1mY5bnt5pxehBkHuqnPGxQ6kqZWtVcSDU9bE6G3" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCE4ABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQAKc2xpcHBhZ2U0RAkAtgIBCQBlAgUGc2NhbGU4CQBpAgkAaAIFBnNjYWxlOAABBQZzY2FsZTgABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEGlkeEZhY3RTbGlwcENudHIABwARaWR4RmFjdEd3eFJld0NudHIACgAFZGVsYXkCCSVzX19kZWxheQECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgEFbGdvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBWxzb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0UHV0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUHaW5BbUFtdAUGYW10RGNtBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFB2luUHJBbXQFCHByaWNlRGNtBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQZhbXREY20EDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQhwcmljZURjbQQBcgMJAAACBQRscEVtAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBQ9pbkFtQXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUPaW5QckFzc2V0QW10WDE4BQhwcmljZURjbQkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTU2MDExNTk0NgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTU2MDExNTk0NgJfMQQKd3JpdGVQckFtdAgFDSR0MDE1NjAxMTU5NDYCXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFQFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQNYWRkb25Db250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEDYWRhAAIJbm8gYWRkb25zAhphZGRvbiBhZGRyZXNzIGluIG5vdCB2YWxpZAQFY2hlY2sJAP0HBAUNYWRkb25Db250cmFjdAISZW5zdXJlQ2FuUHV0T25lVGtuCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICt4gQFBnBtdEFtdAkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ4NTkyNTQzNQMJAAACBQpwbXRBc3NldElkBQRhbUlkAwMJAGYCBQZwbXRBbXQFCWFtQmFsYW5jZQYJAGYCBQthbUFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUJYW1CYWxhbmNlBQZwbXRBbXQFCXByQmFsYW5jZQkAZQIFBnBtdEFtdAULYW1Bc3NldFBhcnQFC3ByQXNzZXRQYXJ0AAAAAAMJAAACBQpwbXRBc3NldElkBQRwcklkAwMJAGYCBQZwbXRBbXQFCXByQmFsYW5jZQYJAGYCBQtwckFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFBnBtdEFtdAAAAAAJAGUCBQZwbXRBbXQFC3ByQXNzZXRQYXJ0BQthbUFzc2V0UGFydAkAAgECEHdyb25nIHBtdEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDI0ODU5MjU0MzUCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDI0ODU5MjU0MzUCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDI0ODU5MjU0MzUCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAyNDg1OTI1NDM1Al80BAx2aXJ0U3dhcEluUHIIBQ0kdDAyNDg1OTI1NDM1Al81BA12aXJ0U3dhcE91dEFtCAUNJHQwMjQ4NTkyNTQzNQJfNgQCRDAJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBBQxhbUJhbGFuY2VOb3cJAMwIAgkApAMBBQxwckJhbGFuY2VOb3cJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUMdmlydFN3YXBJblByBQ12aXJ0U3dhcE91dFByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQthbUFzc2V0UGFydAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAULcHJBc3NldFBhcnQFCHNsaXBwYWdlBgYFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlBAllbWl0THBBbXQJAKADAQgFCWxwQ2FsY1JlcwJfMgQBZQkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFlBQFlBAJlbAQHJG1hdGNoMAUBZQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcHV0Rm9yRnJlZQEHbWF4U2xwZwMJAGYCAAAFB21heFNscGcJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFB21heFNscGcHBwAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0T25lVGtuBQpleGNoUmVzdWx0B25vdFVzZWQJb3V0QW1vdW50Cm91dEFzc2V0SWQIc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdmYWN0Q2ZnCQEDZ2ZjAAQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICCldyIHNsIGFkZHIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBAZ0eElkNTgJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BA1hZGRvbkNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQNhZGEAAglubyBhZGRvbnMCGmFkZG9uIGFkZHJlc3MgaW4gbm90IHZhbGlkBAVjaGVjawkA/QcEBQ1hZGRvbkNvbnRyYWN0AhJlbnN1cmVDYW5HZXRPbmVUa24JAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwkAZgIAgJTr3AMFBnBtdEFtdAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAplc3RpbUFtQW10CAUBcgJfMQQKZXN0aW1QckFtdAgFAXICXzIECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMzA0NjYzMDkyMwMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQRwcklkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQAAAAABQpleGNoUmVzdWx0BQplc3RpbUFtQW10CQBkAgUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAkAAgECEHdyb25nIG91dEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDMwNDY2MzA5MjMCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDMwNDY2MzA5MjMCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDMwNDY2MzA5MjMCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAzMDQ2NjMwOTIzAl80BAx2aXJ0U3dhcEluUHIIBQ0kdDAzMDQ2NjMwOTIzAl81BA12aXJ0U3dhcE91dEFtCAUNJHQwMzA0NjYzMDkyMwJfNgQIdG90YWxHZXQIBQ0kdDAzMDQ2NjMwOTIzAl83AwMJAGYCAAAFDHZpcnRTd2FwSW5BbQYJAGYCAAAFDHZpcnRTd2FwSW5QcgkAAgECCldyb25nIGNhbGMEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMxNjI4MzE3MzIDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzE2MjgzMTczMgJfMQQFb3V0UHIIBQ0kdDAzMTYyODMxNzMyAl8yBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAGQCBQVvdXRBbQUFb3V0UHIDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4FBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BAFyCQECY2cBBQFpBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQMJAGYCBRJub0xlc3NUaGVuQW10QXNzZXQFCG91dEFtQW10CQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFCG91dEFtQW10AgMgPCAJAKQDAQUSbm9MZXNzVGhlbkFtdEFzc2V0AwkAZgIFFG5vTGVzc1RoZW5QcmljZUFzc2V0BQhvdXRQckFtdAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFCG91dFByQW10AgMgPCAJAKQDAQUUbm9MZXNzVGhlblByaWNlQXNzZXQEFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUUYnVybkxQQXNzZXRPbkZhY3RvcnkFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11bnN0YWtlQW5kR2V0AQZhbW91bnQEDWNoZWNrUGF5bWVudHMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQ1jaGVja1BheW1lbnRzBQ1jaGVja1BheW1lbnRzBANjZmcJAQNncGMABApmYWN0b3J5Q2ZnCQEDZ2ZjAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQKdW5zdGFrZUludgkA/AcEBQdzdGFraW5nAgd1bnN0YWtlCQDMCAIJANgEAQUJbHBBc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTAEAXYDAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQNzdHMGAwkAAAIFAXYFAXYEBWJ1cm5BCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBQVidXJuQQUFYnVybkEFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGFjdGl2YXRlAghhbXRBc1N0cgdwckFzU3RyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAKUIAQUDZmNhCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUIYW10QXNTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAnBhAAUHcHJBc1N0cgUDbmlsAgdzdWNjZXNzAWkBBHNldFMCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQELU3RyaW5nRW50cnkCBQFrBQF2BQNuaWwBaQEEc2V0SQIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQF2BQNuaWwBaQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQEDZ3BjAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAJwcgkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCcHIAAAkAzAgCCQCmAwEJAJEDAgUCcHIAAQkAzAgCCQCmAwEJAJEDAgUCcHIAAgUDbmlsAWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbAxyZXNTY2FsZU11bHQJAJQKAgUDbmlsCQECZjECCQCnAwEFA3ZhbAUMcmVzU2NhbGVNdWx0AWkBFHRvWDE4V3JhcHBlclJFQURPTkxZAgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJAJQKAgUDbmlsCQCmAwEJAQJ0MQIFB29yaWdWYWwFDW9yaWdTY2FsZU11bHQBaQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAghwckFtdFgxOAhhbUFtdFgxOAkAlAoCBQNuaWwJAKYDAQkBBGNwYmkCCQCnAwEFCHByQW10WDE4CQCnAwEFCGFtQW10WDE4AWkBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQHdXNyQWRkcgZpc0V2YWwGZW1pdExwCQCUCgIFA25pbAkBA2VwbwwFBnR4SWQ1OAUIc2xpcHBhZ2UFB2luQW1BbXQFBmluQW1JZAUHaW5QckFtdAUGaW5QcklkBQd1c3JBZGRyBQZpc0V2YWwFBmVtaXRMcAcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgHcG10QXNJZAhwbXRMcEFtdAd1c3JBZGRyBAFyCQEDZWdvBAUGdHhJZDU4BQdwbXRBc0lkBQhwbXRMcEFtdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXm8emkr", "height": 2211252, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 67gjPDDqhEH1QLMuzyhx13ppn6UUkn7kYNWdtyYacJZu Next: DkgEHkeziXTgxVu3yrfTjadMrJtpkw5uiHuK8o1ZLrZC Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 1000000
4+let a = 100000000
55
6-let b = 100000000
6+let b = toBigInt(100000000)
77
8-let c = toBigInt(100000000)
8+let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(1000000000000000000)
10+let d = toBigInt(0)
1111
12-let e = 1000
12+let e = toBigInt(1)
1313
14-let f = toBigInt(0)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt(1)
16+let g = "100"
1717
18-let h = toBigInt((b - ((b * 1) / b)))
18+let h = "1"
1919
20-let i = "100"
20+let i = "__"
2121
22-let j = "1"
22+let j = ""
2323
24-let k = "__"
24+let k = 1
2525
26-let l = ""
26+let l = 2
2727
28-let m = 1
28+let m = 3
2929
30-let n = 2
30+let n = 4
3131
32-let o = 3
32+let o = 1
3333
34-let p = 4
34+let p = 2
3535
36-let q = 1
36+let q = 3
3737
38-let r = 2
38+let r = 4
3939
40-let s = 3
40+let s = 5
4141
42-let t = 4
42+let t = 6
4343
44-let u = 5
44+let u = 7
4545
46-let v = 6
46+let v = 8
4747
48-let w = 7
48+let w = 9
4949
50-let x = 8
50+let x = 1
5151
52-let y = 9
52+let y = 7
5353
54-let z = 1
54+let z = 10
5555
56-let A = 7
56+let A = "%s__delay"
5757
58-let B = 10
59-
60-let C = 0
61-
62-func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6359
6460
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6662
6763
68-func J (K,L,M) = fraction(K, L, M)
64+func H (I,J,K) = fraction(I, J, K)
6965
7066
71-func N (H) = if ((f > H))
72- then -(H)
73- else H
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7470
7571
76-func O () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7773
7874
79-func P () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
8076
8177
82-func Q () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8379
8480
85-func R () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8682
8783
88-func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], k)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8985
9086
91-func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9288
9389
94-func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9591
9692
97-func Z () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9894
9995
100-func aa () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
10197
10298
103-func ab () = "%s__amp"
99+func Z () = "%s__amp"
104100
105101
106-func ac () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
107103
108104
109-let ad = "%s__feePermille"
110-
111-let ae = valueOrElse(getInteger(this, ad), C)
112-
113-func af () = "%s__factoryConfig"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
114106
115107
116-func ag () = "%s%s__matcher__publicKey"
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
117109
118110
119-func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
111+func ae () = "%s__factoryConfig"
120112
121113
122-func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
114+func af () = "%s%s__matcher__publicKey"
123115
124116
125-func am () = "%s__shutdown"
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
126118
127119
128-func an (ao) = throw(makeString(["lp_stable.ride:", ao], " "))
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
129121
130122
131-func ap (aq,ar,as) = an(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
123+func al () = "%s__shutdown"
132124
133125
134-func at (H) = {
135- let au = H
136- if ($isInstanceOf(au, "String"))
126+func am () = "%s__allowedLpStableScriptHash"
127+
128+
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130+
131+
132+func ar (F) = {
133+ let as = F
134+ if ($isInstanceOf(as, "String"))
137135 then {
138- let av = au
139- av
136+ let at = as
137+ at
140138 }
141- else an("fail cast to String")
139+ else throw("fail cast to String")
142140 }
143141
144142
145-func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
146144
147145
148-func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
149147
150148
151-let aA = addressFromStringValue(aw(this, O()))
149+let ay = addressFromStringValue(au(this, M()))
152150
153-let aB = aw(this, ab())
151+let az = au(this, Z())
154152
155-func aC () = valueOrElse(getBoolean(aA, am()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
156154
157155
158-func aD () = fromBase58String(aw(aA, ag()))
156+func aB () = fromBase58String(au(ay, af()))
159157
160158
161-let aE = addressFromPublicKey(aD())
162-
163-func aF () = {
164- let aG = aw(this, Z())
165- let aH = aw(this, aa())
166- let aI = az(aA, ak(aH))
167- let ai = az(aA, ak(aG))
168- split(aw(aA, ah(toString(ai), toString(aI))), k)
159+func aC () = {
160+ let aD = au(this, X())
161+ let aE = au(this, Y())
162+ let aF = ax(ay, aj(aE))
163+ let ah = ax(ay, aj(aD))
164+ split(au(ay, ag(toString(ah), toString(aF))), i)
169165 }
170166
171167
172-func aJ () = split(aw(aA, af()), k)
168+func aG () = split(au(ay, ae()), i)
173169
174170
175-func aK (aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU)], k)
171+func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
176172
177173
178-func aV (aW,aX,aY,aO,aR,aS) = makeString(["%d%d%d%d%d%d", toString(aW), toString(aX), toString(aY), toString(aO), toString(aR), toString(aS)], k)
174+func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
179175
180176
181-func aZ (ba) = if ((ba == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
182178 then wavesBalance(this).available
183- else assetBalance(this, fromBase58String(ba))
179+ else assetBalance(this, fromBase58String(aX))
184180
185181
186-func bb (bc,bd) = fraction(bc, d, bd)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
187183
188184
189-func be (bf,bg,bh) = {
190- let bi = fraction((bf - bg), c, bg)
191- let bj = ((bh - N(bi)) > f)
192- if (!(bj))
193- then an(("Big slippage: " + toString(bi)))
194- else $Tuple2(bj, min([bf, bg]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
195191 }
196192
197193
198-func bk (bl,bm,bh) = {
199- let bi = fraction(bm, c, bl)
200- let bn = (bh > bi)
201- if (if (bn)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
202198 then true
203- else (bm > bl))
204- then an(((((((toString(bm) + " ") + toString(bl)) + " ") + toString(bi)) + " ") + toString(bh)))
205- else bn
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
206202 }
207203
208204
209-func bo (bp,bq,br,bs) = {
210- let bt = D(br, bp)
211- let bu = D(bs, bq)
212- bb(bu, bt)
205+func bm (bn,bo,bp,bq) = {
206+ let br = B(bp, bn)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
213209 }
214210
215211
216-func bv (br,bs,bw) = {
217- let bx = aF()
218- let by = parseIntValue(bx[v])
219- let bz = parseIntValue(bx[w])
220- let bA = bo(by, bz, br, bs)
221- let bd = D(br, by)
222- let bc = D(bs, bz)
223- let bB = D(bw, b)
224- let bC = bb(bd, bB)
225- let bD = bb(bc, bB)
226-[bA, bC, bD]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
227223 }
228224
229225
230-func bE (br,bs,bw) = {
231- let bF = bv(br, bs, bw)
232-[G(bF[0], b), G(bF[1], b), G(bF[2], b)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
233229 }
234230
235231
236-func bG (bH,bI,bJ,bK) = {
237- let bx = aF()
238- let bL = bx[s]
239- let bM = bx[t]
240- let bN = bx[u]
241- let bO = parseIntValue(bx[v])
242- let bP = parseIntValue(bx[w])
243- let bQ = bx[r]
244- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
245- let bS = if ((bL == bI))
246- then true
247- else an("Wrong payment asset")
248- if ((bS == bS))
249- then {
250- let bT = aZ(bM)
251- let bU = aZ(bN)
252- let bV = fraction(bT, a, bO)
253- let bW = fraction(bU, a, bP)
254- let bX = D(bV, a)
255- let bY = D(bW, a)
256- let bZ = bb(bY, bX)
257- let ca = G(bZ, b)
258- let cb = D(bJ, b)
259- let cc = D(bR, b)
260- let cd = fraction(bX, cb, cc)
261- let ce = fraction(bY, cb, cc)
262- let cf = G(cd, a)
263- let cg = G(ce, a)
264- let ch = fraction(cf, bO, a)
265- let ci = fraction(cg, bP, a)
266- let cj = if ((bH == ""))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
242+ then throw("Wrong pmt asset")
243+ else {
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
254+ let ca = E(bY, bM)
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
267257 then nil
268- else [ScriptTransfer(bK, ch, if ((bM == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
269259 then unit
270- else fromBase58String(bM)), ScriptTransfer(bK, ci, if ((bN == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
271261 then unit
272- else fromBase58String(bN)), StringEntry(Y(toString(bK), bH), aV(ch, ci, bJ, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
273- $Tuple10(ch, ci, bM, bN, bT, bU, bR, bZ, bQ, cj)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
274264 }
275- else throw("Strict value is not equal to itself.")
276265 }
277266
278267
279-func ck (bH,cl,cm,cn,co,cp,bK,cq,cr,cs,ct,cu) = {
280- let bx = aF()
281- let bL = fromBase58String(bx[s])
282- let cv = bx[t]
283- let cw = bx[u]
284- let cx = bx[x]
285- let cy = bx[y]
286- let bO = parseIntValue(bx[v])
287- let bP = parseIntValue(bx[w])
288- let bQ = bx[r]
289- let bR = valueOrErrorMessage(assetInfo(bL), "Wrong lp asset").quantity
290- let bT = if (cq)
291- then aZ(cv)
292- else if (if (cs)
293- then (cu == cv)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
294283 else false)
295- then (aZ(cv) - ct)
296- else if (cs)
297- then aZ(cv)
298- else (aZ(cv) - cm)
299- let bU = if (cq)
300- then aZ(cw)
301- else if (if (cs)
302- then (cu == cw)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
303292 else false)
304- then (aZ(cw) - ct)
305- else if (cs)
306- then aZ(cw)
307- else (aZ(cw) - co)
308- let bV = fraction(bT, a, bO)
309- let bW = fraction(bU, a, bP)
310- let cz = fraction(cm, a, bO)
311- let cA = fraction(co, a, bP)
312- let cB = D(cz, a)
313- let cC = D(cA, a)
314- let cD = bb(cC, cB)
315- let bX = D(bV, a)
316- let bY = D(bW, a)
317- let cE = if ((bR == 0))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
318303 then {
319- let bZ = f
320- let cF = f
321- let cG = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
322- $Tuple5(G(cG, b), G(cB, a), G(cC, a), bb((bY + cC), (bX + cB)), cF)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
323308 }
324309 else {
325- let bZ = bb(bY, bX)
326- let cH = fraction(N((bZ - cD)), d, bZ)
327- let cF = D(cl, b)
328- let cI = if (((if ((bZ != f))
329- then (cH > cF)
330- else false) == false))
331- then true
332- else an(((("Price slippage " + toString(cH)) + " > ") + toString(cF)))
333- if ((cI == cI))
334- then {
335- let cc = D(bR, b)
336- let cJ = fraction(cB, bZ, d)
337- let cK = fraction(cC, d, bZ)
338- let cL = if ((cJ > cC))
339- then $Tuple2(cK, cB)
340- else $Tuple2(cB, cJ)
341- let cM = cL._1
342- let cN = cL._2
343- let cG = fraction(cc, cN, bY)
344- $Tuple5(G(cG, b), G(cM, a), G(cN, a), bZ, cF)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
315+ else false)
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
317+ else {
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
345328 }
346- else throw("Strict value is not equal to itself.")
347329 }
348- let cO = cE._1
349- let cP = fraction(cE._2, bO, a)
350- let cQ = fraction(cE._3, bP, a)
351- let cR = G(cE._4, b)
352- let cS = G(cE._5, b)
353- let cT = if ((cO > 0))
354- then true
355- else an("LP <= 0")
356- if ((cT == cT))
357- then {
358- let cU = if (!(cr))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
336+ then throw("LP <= 0")
337+ else {
338+ let cK = if (!(cj))
359339 then 0
360- else cO
361- let cV = (cm - cP)
362- let cW = (co - cQ)
363- let cX = if (if (cs)
364- then (cu == cv)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
365345 else false)
366- then $Tuple2(ct, 0)
367- else if (if (cs)
368- then (cu == cw)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
369349 else false)
370- then $Tuple2(0, ct)
371- else $Tuple2(cP, cQ)
372- let cY = cX._1
373- let cZ = cX._2
374- let da = [IntegerEntry(R(), cR), IntegerEntry(S(height, lastBlock.timestamp), cR), StringEntry(V(bK, bH), aK(cY, cZ, cU, cR, cl, cS, height, lastBlock.timestamp, cV, cW))]
375- $Tuple13(cO, cU, cR, bT, bU, bR, bL, bQ, da, cV, cW, cn, cp)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
376356 }
377- else throw("Strict value is not equal to itself.")
378357 }
379358
380359
381-func db (dc) = {
382- let bx = aF()
383- let dd = bx[t]
384- let de = bx[u]
385- let bQ = parseIntValue(bx[r])
386- let by = parseIntValue(bx[v])
387- let bz = parseIntValue(bx[w])
388- let df = aZ(dd)
389- let dg = aZ(de)
390- let bZ = if ((dc.orderType == Buy))
391- then bo(by, bz, (df + dc.amount), dg)
392- else bo(by, bz, (df - dc.amount), dg)
393- let ca = G(bZ, b)
394- if (if (if (aC())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
395374 then true
396- else (bQ == o))
375+ else (bO == m))
397376 then true
398- else (bQ == p))
399- then an("Admin blocked")
377+ else (bO == n))
378+ then throw("Admin blocked")
400379 else {
401- let dh = dc.assetPair.amountAsset
402- let di = if ((dh == unit))
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
403382 then "WAVES"
404- else toBase58String(value(dh))
405- let dj = dc.assetPair.priceAsset
406- let dk = if ((dj == unit))
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
385+ let da = if ((cZ == unit))
407386 then "WAVES"
408- else toBase58String(value(dj))
409- if (if ((di != dd))
387+ else toBase58String(value(cZ))
388+ if (if ((cY != cT))
410389 then true
411- else (dk != de))
412- then an("Wr assets")
390+ else (da != cU))
391+ then throw("Wr assets")
413392 else {
414- let dl = dc.price
415- let bP = fraction(b, bz, by)
416- let dm = J(dl, b, bP)
417- let dn = if ((dc.orderType == Buy))
418- then (ca >= dm)
419- else (dm >= ca)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
420399 true
421400 }
422401 }
423402 }
424403
425404
426-func do (dp) = {
427- let dq = if ((size(dp.payments) == 1))
405+func de (df) = if ((size(df.payments) != 1))
406+ then throw("1 pmnt exp")
407+ else {
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
417+ then true
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
421+ }
422+
423+
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
428428 then true
429- else an("1 payment expected")
430- if ((dq == dq))
431- then {
432- let dr = value(dp.payments[0])
433- let bI = value(dr.assetId)
434- let ct = dr.amount
435- let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
436- let ch = cE._1
437- let ci = cE._2
438- let bQ = parseIntValue(cE._9)
439- let cj = cE._10
440- if (if (aC())
441- then true
442- else (bQ == p))
443- then an(("Admin blocked: " + toString(bQ)))
444- else $Tuple5(ch, ci, ct, bI, cj)
445- }
446- else throw("Strict value is not equal to itself.")
429+ else (bO == l))
430+ then true
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
447434 }
448435
449436
450-func ds (dt,X,du,dv,bh,cr,cs,ct,cu) = {
451- let cE = ck(X, bh, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, false, cr, cs, ct, cu)
452- let bQ = parseIntValue(cE._8)
453- if (if (if (aC())
454- then true
455- else (bQ == n))
456- then true
457- else (bQ == p))
458- then an(("Blocked:" + toString(bQ)))
459- else cE
460- }
461-
462-
463-func dw (dx) = {
464- let dy = fraction(dx, ae, e)
465- $Tuple2((dx - dy), dy)
466- }
467-
468-
469-func dz () = {
470- let au = getString(P())
471- if ($isInstanceOf(au, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
472440 then {
473- let dA = au
474- fromBase58String(dA)
441+ let dl = as
442+ fromBase58String(dl)
475443 }
476- else if ($isInstanceOf(au, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
477445 then unit
478446 else throw("Match error")
479447 }
480448
481449
482-func dB () = {
483- let au = getString(Q())
484- if ($isInstanceOf(au, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
485453 then {
486- let dA = au
487- fromBase58String(dA)
454+ let dl = as
455+ fromBase58String(dl)
488456 }
489- else if ($isInstanceOf(au, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
490458 then unit
491459 else throw("Match error")
492460 }
493461
494462
495-let dC = an("Permission denied")
463+let dn = throw("Permission denied")
496464
497-func dD (dp) = {
498- let au = dz()
499- if ($isInstanceOf(au, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
500468 then {
501- let dE = au
502- if ((dp.callerPublicKey == dE))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
503471 then true
504- else dC
472+ else dn
505473 }
506- else if ($isInstanceOf(au, "Unit"))
507- then if ((dp.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
508476 then true
509- else dC
477+ else dn
510478 else throw("Match error")
511479 }
512480
513481
514-@Callable(dp)
515-func constructor (aA) = {
516- let dF = dD(dp)
517- if ((dF == dF))
518- then [StringEntry(O(), aA)]
482+@Callable(df)
483+func constructor (M) = {
484+ let dq = do(df)
485+ if ((dq == dq))
486+ then [StringEntry(M(), M)]
519487 else throw("Strict value is not equal to itself.")
520488 }
521489
522490
523491
524-@Callable(dp)
525-func setManager (dG) = {
526- let dF = dD(dp)
527- if ((dF == dF))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
528496 then {
529- let dH = fromBase58String(dG)
530- if ((dH == dH))
531- then [StringEntry(Q(), dG)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
532500 else throw("Strict value is not equal to itself.")
533501 }
534502 else throw("Strict value is not equal to itself.")
536504
537505
538506
539-@Callable(dp)
507+@Callable(df)
540508 func confirmManager () = {
541- let dI = dB()
542- let dJ = if (isDefined(dI))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
543511 then true
544- else an("No pending manager")
545- if ((dJ == dJ))
512+ else throw("No pending manager")
513+ if ((dt == dt))
546514 then {
547- let dK = if ((dp.callerPublicKey == value(dI)))
515+ let du = if ((df.callerPublicKey == value(bD)))
548516 then true
549- else an("You are not pending manager")
550- if ((dK == dK))
551- then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
517+ else throw("You are not pending manager")
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
552520 else throw("Strict value is not equal to itself.")
553521 }
554522 else throw("Strict value is not equal to itself.")
556524
557525
558526
559-@Callable(dp)
560-func put (bh,dL) = {
561- let dM = aJ()
562- let dN = valueOrErrorMessage(addressFromString(dM[z]), "Wrong staking contract")
563- let dO = valueOrErrorMessage(addressFromString(dM[A]), "Wrogn slippage contract")
564- let dP = if ((bh >= 0))
565- then true
566- else an("wrong slippage")
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
533+ then throw("Wrong slippage")
534+ else if ((size(df.payments) != 2))
535+ then throw("2 pmnts expd")
536+ else {
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
547+ then {
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
551+ then {
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
554+ }
555+ else unit
556+ }
557+ if ((dC == dC))
558+ then {
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
561+ else nil
562+ if ((dE == dE))
563+ then {
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
566+ else nil
567+ if ((dF == dF))
568+ then {
569+ let dG = if (dw)
570+ then {
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
573+ then nil
574+ else throw("Strict value is not equal to itself.")
575+ }
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
578+ }
579+ else throw("Strict value is not equal to itself.")
580+ }
581+ else throw("Strict value is not equal to itself.")
582+ }
583+ else throw("Strict value is not equal to itself.")
584+ }
585+ else throw("Strict value is not equal to itself.")
586+ }
587+ }
588+
589+
590+
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
567608 if ((dP == dP))
568- then {
569- let dQ = if ((size(dp.payments) == 2))
570- then true
571- else an("2 payments expected")
572- if ((dQ == dQ))
573- then {
574- let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], bh, true, false, 0, "")
575- let cU = dR._2
576- let bL = dR._7
577- let cj = dR._9
578- let cV = dR._10
579- let cW = dR._11
580- let bM = dR._12
581- let bN = dR._13
582- let cE = invoke(aA, "emit", [cU], nil)
583- if ((cE == cE))
584- then {
585- let dS = {
586- let au = cE
587- if ($isInstanceOf(au, "Address"))
588- then {
589- let dT = au
590- invoke(dT, "emit", [cU], nil)
591- }
592- else unit
593- }
594- if ((dS == dS))
609+ then if (if (if (if ((0 >= be))
610+ then true
611+ else (0 >= dI))
612+ then true
613+ else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
616+ then throw("Wrong params")
617+ else if ((size(df.payments) != 1))
618+ then throw("1 pmnt expd")
619+ else {
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
624+ then throw("Wrong pmt amt")
625+ else {
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
630+ then true
631+ else (dI > cl))
632+ then throw("invalid payment amount")
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
636+ then true
637+ else (dJ > cl))
638+ then throw("invalid payment amount")
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640+ else throw("wrong pmtAssetId")
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
595651 then {
596- let dU = if ((cV > 0))
597- then invoke(dO, "put", nil, [AttachedPayment(bM, cV)])
598- else nil
599- if ((dU == dU))
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
600662 then {
601- let dV = if ((cW > 0))
602- then invoke(dO, "put", nil, [AttachedPayment(bN, cW)])
603- else nil
604- if ((dV == dV))
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
666+ then {
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
669+ }
670+ else unit
671+ }
672+ if ((dC == dC))
605673 then {
606- let dW = if (dL)
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676+ else nil
677+ if ((dE == dE))
607678 then {
608- let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
609- if ((dX == dX))
610- then nil
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681+ else nil
682+ if ((dF == dF))
683+ then {
684+ let dG = if (dw)
685+ then {
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
688+ then nil
689+ else throw("Strict value is not equal to itself.")
690+ }
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
693+ }
611694 else throw("Strict value is not equal to itself.")
612695 }
613- else [ScriptTransfer(dp.caller, cU, bL)]
614- (cj ++ dW)
696+ else throw("Strict value is not equal to itself.")
615697 }
616698 else throw("Strict value is not equal to itself.")
617699 }
618700 else throw("Strict value is not equal to itself.")
619701 }
702+ else throw("Strict value is not equal to itself.")
703+ }
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+
708+
709+
710+@Callable(df)
711+func putForFree (eb) = if ((0 > eb))
712+ then throw("Wrong slpg")
713+ else if ((size(df.payments) != 2))
714+ then throw("2 pmnts expd")
715+ else {
716+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eb, false, false, 0, "")
717+ dY._9
718+ }
719+
720+
721+
722+@Callable(df)
723+func get () = {
724+ let cx = de(df)
725+ let ec = cx._1
726+ let cb = cx._2
727+ let cl = cx._3
728+ let bG = cx._4
729+ let cc = cx._5
730+ let ed = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
731+ if ((ed == ed))
732+ then cc
733+ else throw("Strict value is not equal to itself.")
734+ }
735+
736+
737+
738+@Callable(df)
739+func getOneTkn (ee,ef,eg,eh,be) = if ((size(df.payments) != 1))
740+ then throw("1 pmnt expd")
741+ else {
742+ let bv = aC()
743+ let bJ = bv[q]
744+ let bK = bv[r]
745+ let bL = bv[s]
746+ let bM = parseIntValue(bv[t])
747+ let bN = parseIntValue(bv[u])
748+ let bO = bv[p]
749+ let dx = aG()
750+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
751+ let dg = value(df.payments[0])
752+ let dN = valueOrElse(getString(this, aa()), "")
753+ let bI = if ((dN == toString(df.caller)))
754+ then df.originCaller
755+ else df.caller
756+ let bF = toBase58String(df.transactionId)
757+ let bG = value(dg.assetId)
758+ let cl = dg.amount
759+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
760+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
761+ if ((dP == dP))
762+ then if ((1000000000 > cl))
763+ then throw("Min pmt 10 LP")
764+ else if (if (if ((0 > be))
765+ then true
766+ else (0 > ee))
767+ then true
768+ else (0 > eg))
769+ then throw("Wrong params")
770+ else if ((bJ != toBase58String(bG)))
771+ then throw("Wrong LP")
772+ else {
773+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774+ let ei = cx._1
775+ let ej = cx._2
776+ let bQ = aW(bK)
777+ let bS = aW(bL)
778+ let ek = if ((eh == bK))
779+ then $Tuple7((bQ - ei), (bS - ej), ee, ej, 0, 0, (ei + ee))
780+ else if ((eh == bL))
781+ then $Tuple7((bQ - ei), (bS - ej), 0, 0, ee, ei, (ej + ee))
782+ else throw("wrong outAssetId")
783+ let dR = ek._1
784+ let dS = ek._2
785+ let dT = ek._3
786+ let dU = ek._4
787+ let dV = ek._5
788+ let dW = ek._6
789+ let el = ek._7
790+ if (if ((0 > dT))
791+ then true
792+ else (0 > dV))
793+ then throw("Wrong calc")
794+ else {
795+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
796+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
797+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
798+ if ((dX == dX))
799+ then {
800+ let em = bb(toBigInt(el), toBigInt(eg), toBigInt(be))
801+ if ((em == em))
802+ then {
803+ let en = if ((eh == bK))
804+ then $Tuple2(toInt(em._2), 0)
805+ else $Tuple2(0, toInt(em._2))
806+ let eo = en._1
807+ let ep = en._2
808+ let eq = aY(B(bS, bN), B(bQ, bM))
809+ let er = E(eq, a)
810+ let cc = [ScriptTransfer(bI, (eo + ep), if ((eh == "WAVES"))
811+ then unit
812+ else fromBase58String(eh)), StringEntry(W(toString(bI), bF), aS(eo, ep, cl, er, height, lastBlock.timestamp)), IntegerEntry(P(), er), IntegerEntry(Q(height, lastBlock.timestamp), er)]
813+ if ((cc == cc))
814+ then {
815+ let es = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
816+ if ((es == es))
817+ then cc
818+ else throw("Strict value is not equal to itself.")
819+ }
820+ else throw("Strict value is not equal to itself.")
821+ }
822+ else throw("Strict value is not equal to itself.")
823+ }
824+ else throw("Strict value is not equal to itself.")
825+ }
826+ }
827+ else throw("Strict value is not equal to itself.")
828+ }
829+
830+
831+
832+@Callable(df)
833+func getNoLess (et,eu) = {
834+ let cx = de(df)
835+ let ca = cx._1
836+ let cb = cx._2
837+ let cl = cx._3
838+ let bG = cx._4
839+ let cc = cx._5
840+ if ((et > ca))
841+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
842+ else if ((eu > cb))
843+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eu)))
844+ else {
845+ let ev = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
846+ if ((ev == ev))
847+ then cc
848+ else throw("Strict value is not equal to itself.")
849+ }
850+ }
851+
852+
853+
854+@Callable(df)
855+func unstakeAndGet (ew) = {
856+ let ex = if ((size(df.payments) != 0))
857+ then throw("No pmnts expd")
858+ else true
859+ if ((ex == ex))
860+ then {
861+ let bv = aC()
862+ let ey = aG()
863+ let dB = fromBase58String(bv[q])
864+ let ez = valueOrErrorMessage(addressFromString(ey[x]), "Wr st addr")
865+ let eA = invoke(ez, "unstake", [toBase58String(dB), ew], nil)
866+ if ((eA == eA))
867+ then {
868+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), ew, df.caller)
869+ let bO = parseIntValue(cx._9)
870+ let cc = cx._10
871+ let eB = if (if (aA())
872+ then true
873+ else (bO == n))
874+ then throw(("Blocked: " + toString(bO)))
875+ else true
876+ if ((eB == eB))
877+ then {
878+ let eC = invoke(ay, "burn", [ew], [AttachedPayment(dB, ew)])
879+ if ((eC == eC))
880+ then cc
620881 else throw("Strict value is not equal to itself.")
621882 }
622883 else throw("Strict value is not equal to itself.")
628889
629890
630891
631-@Callable(dp)
632-func putOneTkn (dY,dZ,bg,bh,dL) = {
633- let bx = aJ()
634- let dN = valueOrErrorMessage(addressFromString(bx[z]), "Wrong staking contract")
635- let dO = valueOrErrorMessage(addressFromString(bx[A]), "Wrong slippage contract")
636- let ea = valueOrErrorMessage(addressFromString(bx[B]), "Wrong gwx reward contract")
637- let eb = aF()
638- let bM = eb[t]
639- let bN = eb[u]
640- let bO = parseIntValue(eb[v])
641- let bP = parseIntValue(eb[w])
642- let ec = valueOrElse(getString(this, ac()), "")
643- let bK = if ((ec == toString(dp.caller)))
644- then dp.originCaller
645- else dp.caller
646- if (if (if (if ((0 >= bh))
647- then true
648- else (0 >= dY))
649- then true
650- else (0 >= dZ))
651- then true
652- else (0 >= bg))
653- then an("Wrong params")
654- else if ((size(dp.payments) != 1))
655- then an("1 payment expected")
656- else {
657- let dr = value(dp.payments[0])
658- let bI = toBase58String(value(dr.assetId))
659- let ed = dr.amount
660- let ee = dw(ed)
661- let ct = ee._1
662- let ef = ee._2
663- if (if (if ((dY > ct))
664- then true
665- else (dZ > ct))
666- then true
667- else (10000000 > ct))
668- then an("wrong payment amount")
669- else {
670- let bT = aZ(bM)
671- let bU = aZ(bN)
672- let eg = if ((bI == bM))
673- then $Tuple6((bT - ct), bU, (ct - dY), dZ, 0, 0)
674- else if ((bI == bN))
675- then $Tuple6(bT, (bU - ct), 0, 0, (ct - dZ), dY)
676- else an("wrong paymentAssetId")
677- let eh = eg._1
678- let ei = eg._2
679- let ej = eg._3
680- let ek = eg._4
681- let el = eg._5
682- let em = eg._6
683- let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
684- let bl = invoke(ea, "calcD", [toString(toBigInt(((eh + ej) - em))), toString(toBigInt(((ei + el) - ek))), aB, i, j], nil)
685- let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
686- if ((en == en))
687- then {
688- let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bM), dY), AttachedPayment(fromBase58String(bN), dZ), bh, true, true, ct, bI)
689- let bf = dR._2
690- let bL = dR._7
691- let cj = dR._9
692- let cV = dR._10
693- let cW = dR._11
694- let eo = be(toBigInt(bf), toBigInt(bg), toBigInt(bh))
695- let cU = toInt(eo._2)
696- let ep = invoke(aA, "emit", [cU], nil)
697- if ((ep == ep))
698- then {
699- let dS = {
700- let au = ep
701- if ($isInstanceOf(au, "Address"))
702- then {
703- let dT = au
704- invoke(dT, "emit", [cU], nil)
705- }
706- else unit
707- }
708- if ((dS == dS))
709- then {
710- let dU = if ((cV > 0))
711- then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bM), cV)])
712- else nil
713- if ((dU == dU))
714- then {
715- let dV = if ((cW > 0))
716- then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bN), cW)])
717- else nil
718- if ((dV == dV))
719- then {
720- let dW = if (dL)
721- then {
722- let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
723- if ((dX == dX))
724- then nil
725- else throw("Strict value is not equal to itself.")
726- }
727- else [ScriptTransfer(dp.caller, cU, bL)]
728- let eq = if ((ef > 0))
729- then [ScriptTransfer(aE, ef, fromBase58String(bI))]
730- else nil
731- ((cj ++ dW) ++ eq)
732- }
733- else throw("Strict value is not equal to itself.")
734- }
735- else throw("Strict value is not equal to itself.")
736- }
737- else throw("Strict value is not equal to itself.")
738- }
739- else throw("Strict value is not equal to itself.")
740- }
741- else throw("Strict value is not equal to itself.")
742- }
743- }
892+@Callable(df)
893+func activate (eD,eE) = if ((toString(df.caller) != toString(ay)))
894+ then throw("denied")
895+ else $Tuple2([StringEntry(X(), eD), StringEntry(Y(), eE)], "success")
896+
897+
898+
899+@Callable(df)
900+func setS (eF,eB) = if ((toString(df.caller) != au(this, aa())))
901+ then dn
902+ else [StringEntry(eF, eB)]
903+
904+
905+
906+@Callable(df)
907+func setI (eF,eB) = if ((toString(df.caller) != au(this, aa())))
908+ then dn
909+ else [IntegerEntry(eF, eB)]
910+
911+
912+
913+@Callable(df)
914+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
915+
916+
917+
918+@Callable(df)
919+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
920+
921+
922+
923+@Callable(df)
924+func calcPricesWrapperREADONLY (bp,bq,bu) = {
925+ let eG = bt(bp, bq, bu)
926+ $Tuple2(nil, [toString(eG[0]), toString(eG[1]), toString(eG[2])])
744927 }
745928
746929
747930
748-@Callable(dp)
749-func putForFree (er) = if ((0 > er))
750- then an("wrong slippage")
751- else if ((size(dp.payments) != 2))
752- then an("2 payments expected")
753- else {
754- let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], er, false, false, 0, "")
755- dR._9
756- }
931+@Callable(df)
932+func fromX18WrapperREADONLY (F,eH) = $Tuple2(nil, E(parseBigIntValue(F), eH))
757933
758934
759935
760-@Callable(dp)
761-func get () = {
762- let cE = do(dp)
763- let es = cE._1
764- let ci = cE._2
765- let ct = cE._3
766- let bI = cE._4
767- let cj = cE._5
768- let et = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
769- if ((et == et))
770- then cj
771- else throw("Strict value is not equal to itself.")
936+@Callable(df)
937+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
938+
939+
940+
941+@Callable(df)
942+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
943+
944+
945+
946+@Callable(df)
947+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eI,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eI, ci, cj, false, 0, ""))
948+
949+
950+
951+@Callable(df)
952+func estimateGetOperationWrapperREADONLY (bF,eJ,bH,eI) = {
953+ let cx = bE(bF, eJ, bH, addressFromStringValue(eI))
954+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
772955 }
773956
774957
775-
776-@Callable(dp)
777-func getOneTkn (eu,ev,ew,ex,bh) = if ((size(dp.payments) != 1))
778- then an("1 payment expected")
779- else {
780- let bx = aF()
781- let bL = bx[s]
782- let bM = bx[t]
783- let bN = bx[u]
784- let bO = parseIntValue(bx[v])
785- let bP = parseIntValue(bx[w])
786- let bQ = bx[r]
787- let dM = aJ()
788- let ea = valueOrErrorMessage(addressFromString(dM[B]), "Wrong gwxRewardContract address")
789- let dr = value(dp.payments[0])
790- let ec = valueOrElse(getString(this, ac()), "")
791- let bK = if ((ec == toString(dp.caller)))
792- then dp.originCaller
793- else dp.caller
794- let bH = toBase58String(dp.transactionId)
795- let bI = value(dr.assetId)
796- let ct = dr.amount
797- if ((1000000000 > ct))
798- then an("Min payment 10 LP")
799- else if (if (if ((0 > bh))
800- then true
801- else (0 > eu))
802- then true
803- else (0 > ew))
804- then an("Wrong params")
805- else if ((bL != toBase58String(bI)))
806- then an("Wrong LP")
807- else {
808- let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
809- let ey = cE._1
810- let ez = cE._2
811- let bT = aZ(bM)
812- let bU = aZ(bN)
813- let eA = if ((ex == bM))
814- then $Tuple7((bT - ey), (bU - ez), eu, ez, 0, 0, (ey + eu))
815- else if ((ex == bN))
816- then $Tuple7((bT - ey), (bU - ez), 0, 0, eu, ey, (ez + eu))
817- else an("wrong outAssetId")
818- let eh = eA._1
819- let ei = eA._2
820- let ej = eA._3
821- let ek = eA._4
822- let el = eA._5
823- let em = eA._6
824- let eB = eA._7
825- if (if ((0 > ej))
826- then true
827- else (0 > el))
828- then an("Wrong calc")
829- else {
830- let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
831- let bl = invoke(ea, "calcD", [toString(((eh - ej) + em)), toString(((ei + ek) - el)), aB, i, j], nil)
832- let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
833- if ((en == en))
834- then {
835- let eC = be(toBigInt(eB), toBigInt(ew), toBigInt(bh))
836- if ((eC == eC))
837- then {
838- let eD = if ((ex == bM))
839- then $Tuple2(toInt(eC._2), 0)
840- else $Tuple2(0, toInt(eC._2))
841- let eE = eD._1
842- let eF = eD._2
843- let eG = (eE + eF)
844- let eH = dw(eG)
845- let eI = eH._1
846- let ef = eH._2
847- let eJ = if ((ex == "WAVES"))
848- then unit
849- else fromBase58String(ex)
850- let eq = if ((ef > 0))
851- then [ScriptTransfer(aE, ef, eJ)]
852- else nil
853- let eK = if ((bO >= bP))
854- then bO
855- else bP
856- if ((eK == eK))
857- then {
858- let eL = bb(D(bU, eK), D(bT, eK))
859- let eM = G(eL, b)
860- let cj = [ScriptTransfer(bK, eI, eJ), StringEntry(Y(toString(bK), bH), aV(eE, eF, ct, eM, height, lastBlock.timestamp)), IntegerEntry(R(), eM), IntegerEntry(S(height, lastBlock.timestamp), eM)]
861- if ((cj == cj))
862- then {
863- let eN = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
864- if ((eN == eN))
865- then (cj ++ eq)
866- else throw("Strict value is not equal to itself.")
867- }
868- else throw("Strict value is not equal to itself.")
869- }
870- else throw("Strict value is not equal to itself.")
871- }
872- else throw("Strict value is not equal to itself.")
873- }
874- else throw("Strict value is not equal to itself.")
875- }
876- }
958+@Verifier(eK)
959+func eL () = {
960+ let eM = {
961+ let as = dk()
962+ if ($isInstanceOf(as, "ByteVector"))
963+ then {
964+ let dp = as
965+ dp
966+ }
967+ else if ($isInstanceOf(as, "Unit"))
968+ then eK.senderPublicKey
969+ else throw("Match error")
877970 }
878-
879-
880-
881-@Callable(dp)
882-func getNoLess (eO,eP) = {
883- let cE = do(dp)
884- let ch = cE._1
885- let ci = cE._2
886- let ct = cE._3
887- let bI = cE._4
888- let cj = cE._5
889- let eQ = if ((ch >= eO))
890- then true
891- else an(((("Failed: " + toString(ch)) + " < ") + toString(eO)))
892- if ((eQ == eQ))
971+ let as = eK
972+ if ($isInstanceOf(as, "Order"))
893973 then {
894- let eR = if ((ci >= eP))
895- then true
896- else an(((("Failed: " + toString(ci)) + " < ") + toString(eP)))
897- if ((eR == eR))
898- then {
899- let eS = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
900- if ((eS == eS))
901- then cj
902- else throw("Strict value is not equal to itself.")
903- }
904- else throw("Strict value is not equal to itself.")
905- }
906- else throw("Strict value is not equal to itself.")
907- }
908-
909-
910-
911-@Callable(dp)
912-func unstakeAndGet (dx) = {
913- let dq = if ((size(dp.payments) != 0))
914- then an("no payments expected")
915- else true
916- if ((dq == dq))
917- then {
918- let bx = aF()
919- let eT = aJ()
920- let bL = fromBase58String(bx[s])
921- let eU = valueOrErrorMessage(addressFromString(eT[z]), "wrong")
922- let eV = invoke(eU, "unstake", [toBase58String(bL), dx], nil)
923- if ((eV == eV))
924- then {
925- let cE = bG(toBase58String(dp.transactionId), toBase58String(bL), dx, dp.caller)
926- let bQ = parseIntValue(cE._9)
927- let cj = cE._10
928- let eW = if (if (aC())
929- then true
930- else (bQ == p))
931- then an(("Blocked: " + toString(bQ)))
932- else true
933- if ((eW == eW))
934- then {
935- let eX = invoke(aA, "burn", [dx], [AttachedPayment(bL, dx)])
936- if ((eX == eX))
937- then cj
938- else throw("Strict value is not equal to itself.")
939- }
940- else throw("Strict value is not equal to itself.")
941- }
942- else throw("Strict value is not equal to itself.")
943- }
944- else throw("Strict value is not equal to itself.")
945- }
946-
947-
948-
949-@Callable(dp)
950-func activate (eY,eZ) = if ((toString(dp.caller) != toString(aA)))
951- then an("denied")
952- else $Tuple2([StringEntry(Z(), eY), StringEntry(aa(), eZ)], "success")
953-
954-
955-
956-@Callable(dp)
957-func setS (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
958- then dC
959- else [StringEntry(fa, eW)]
960-
961-
962-
963-@Callable(dp)
964-func setI (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
965- then dC
966- else [IntegerEntry(fa, eW)]
967-
968-
969-
970-@Callable(dp)
971-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
972-
973-
974-
975-@Callable(dp)
976-func getAccBalanceWrapperREADONLY (ba) = $Tuple2(nil, aZ(ba))
977-
978-
979-
980-@Callable(dp)
981-func calcPricesWrapperREADONLY (br,bs,bw) = {
982- let fb = bv(br, bs, bw)
983- $Tuple2(nil, [toString(fb[0]), toString(fb[1]), toString(fb[2])])
984- }
985-
986-
987-
988-@Callable(dp)
989-func fromX18WrapperREADONLY (H,fc) = $Tuple2(nil, G(parseBigIntValue(H), fc))
990-
991-
992-
993-@Callable(dp)
994-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
995-
996-
997-
998-@Callable(dp)
999-func calcPriceBigIntWrapperREADONLY (bc,bd) = $Tuple2(nil, toString(bb(parseBigIntValue(bc), parseBigIntValue(bd))))
1000-
1001-
1002-
1003-@Callable(dp)
1004-func estimatePutOperationWrapperREADONLY (bH,bh,cm,fd,co,fe,ff,cq,cr) = $Tuple2(nil, ck(bH, bh, cm, fd, co, fe, ff, cq, cr, false, 0, ""))
1005-
1006-
1007-
1008-@Callable(dp)
1009-func estimateGetOperationWrapperREADONLY (bH,fg,bJ,ff) = {
1010- let cE = bG(bH, fg, bJ, addressFromStringValue(ff))
1011- $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
1012- }
1013-
1014-
1015-@Verifier(fh)
1016-func fi () = {
1017- let au = fh
1018- if ($isInstanceOf(au, "Order"))
1019- then {
1020- let dc = au
1021- let fj = aD()
1022- let aq = db(dc)
1023- let fk = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1024- let fl = sigVerify(dc.bodyBytes, dc.proofs[1], fj)
1025- if (if (if (aq)
1026- then fk
974+ let cS = as
975+ let eN = aB()
976+ let eO = cR(cS)
977+ let eP = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
978+ let eQ = sigVerify(cS.bodyBytes, cS.proofs[1], eN)
979+ if (if (if (eO)
980+ then eP
1027981 else false)
1028- then fl
982+ then eQ
1029983 else false)
1030984 then true
1031- else ap(aq, fk, fl)
985+ else an(eO, eP, eQ)
1032986 }
1033- else {
1034- let fm = {
1035- let fn = dz()
1036- if ($isInstanceOf(fn, "ByteVector"))
1037- then {
1038- let dE = fn
1039- dE
1040- }
1041- else if ($isInstanceOf(fn, "Unit"))
1042- then fh.senderPublicKey
1043- else throw("Match error")
987+ else if ($isInstanceOf(as, "SetScriptTransaction"))
988+ then {
989+ let dl = as
990+ let eR = blake2b256(value(dl.script))
991+ let eS = fromBase64String(value(getString(ay, am())))
992+ let eT = scriptHash(this)
993+ if (if ((eS == eR))
994+ then (eT != eR)
995+ else false)
996+ then true
997+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
1044998 }
1045- sigVerify(fh.bodyBytes, fh.proofs[0], fm)
1046- }
999+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
10471000 }
10481001
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 1000000
4+let a = 100000000
55
6-let b = 100000000
6+let b = toBigInt(100000000)
77
8-let c = toBigInt(100000000)
8+let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(1000000000000000000)
10+let d = toBigInt(0)
1111
12-let e = 1000
12+let e = toBigInt(1)
1313
14-let f = toBigInt(0)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt(1)
16+let g = "100"
1717
18-let h = toBigInt((b - ((b * 1) / b)))
18+let h = "1"
1919
20-let i = "100"
20+let i = "__"
2121
22-let j = "1"
22+let j = ""
2323
24-let k = "__"
24+let k = 1
2525
26-let l = ""
26+let l = 2
2727
28-let m = 1
28+let m = 3
2929
30-let n = 2
30+let n = 4
3131
32-let o = 3
32+let o = 1
3333
34-let p = 4
34+let p = 2
3535
36-let q = 1
36+let q = 3
3737
38-let r = 2
38+let r = 4
3939
40-let s = 3
40+let s = 5
4141
42-let t = 4
42+let t = 6
4343
44-let u = 5
44+let u = 7
4545
46-let v = 6
46+let v = 8
4747
48-let w = 7
48+let w = 9
4949
50-let x = 8
50+let x = 1
5151
52-let y = 9
52+let y = 7
5353
54-let z = 1
54+let z = 10
5555
56-let A = 7
56+let A = "%s__delay"
5757
58-let B = 10
59-
60-let C = 0
61-
62-func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6359
6460
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6662
6763
68-func J (K,L,M) = fraction(K, L, M)
64+func H (I,J,K) = fraction(I, J, K)
6965
7066
71-func N (H) = if ((f > H))
72- then -(H)
73- else H
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7470
7571
76-func O () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7773
7874
79-func P () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
8076
8177
82-func Q () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8379
8480
85-func R () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8682
8783
88-func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], k)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8985
9086
91-func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9288
9389
94-func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9591
9692
97-func Z () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9894
9995
100-func aa () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
10197
10298
103-func ab () = "%s__amp"
99+func Z () = "%s__amp"
104100
105101
106-func ac () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
107103
108104
109-let ad = "%s__feePermille"
110-
111-let ae = valueOrElse(getInteger(this, ad), C)
112-
113-func af () = "%s__factoryConfig"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
114106
115107
116-func ag () = "%s%s__matcher__publicKey"
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
117109
118110
119-func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
111+func ae () = "%s__factoryConfig"
120112
121113
122-func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
114+func af () = "%s%s__matcher__publicKey"
123115
124116
125-func am () = "%s__shutdown"
117+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
126118
127119
128-func an (ao) = throw(makeString(["lp_stable.ride:", ao], " "))
120+func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
129121
130122
131-func ap (aq,ar,as) = an(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
123+func al () = "%s__shutdown"
132124
133125
134-func at (H) = {
135- let au = H
136- if ($isInstanceOf(au, "String"))
126+func am () = "%s__allowedLpStableScriptHash"
127+
128+
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130+
131+
132+func ar (F) = {
133+ let as = F
134+ if ($isInstanceOf(as, "String"))
137135 then {
138- let av = au
139- av
136+ let at = as
137+ at
140138 }
141- else an("fail cast to String")
139+ else throw("fail cast to String")
142140 }
143141
144142
145-func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
146144
147145
148-func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
149147
150148
151-let aA = addressFromStringValue(aw(this, O()))
149+let ay = addressFromStringValue(au(this, M()))
152150
153-let aB = aw(this, ab())
151+let az = au(this, Z())
154152
155-func aC () = valueOrElse(getBoolean(aA, am()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
156154
157155
158-func aD () = fromBase58String(aw(aA, ag()))
156+func aB () = fromBase58String(au(ay, af()))
159157
160158
161-let aE = addressFromPublicKey(aD())
162-
163-func aF () = {
164- let aG = aw(this, Z())
165- let aH = aw(this, aa())
166- let aI = az(aA, ak(aH))
167- let ai = az(aA, ak(aG))
168- split(aw(aA, ah(toString(ai), toString(aI))), k)
159+func aC () = {
160+ let aD = au(this, X())
161+ let aE = au(this, Y())
162+ let aF = ax(ay, aj(aE))
163+ let ah = ax(ay, aj(aD))
164+ split(au(ay, ag(toString(ah), toString(aF))), i)
169165 }
170166
171167
172-func aJ () = split(aw(aA, af()), k)
168+func aG () = split(au(ay, ae()), i)
173169
174170
175-func aK (aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU)], k)
171+func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
176172
177173
178-func aV (aW,aX,aY,aO,aR,aS) = makeString(["%d%d%d%d%d%d", toString(aW), toString(aX), toString(aY), toString(aO), toString(aR), toString(aS)], k)
174+func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
179175
180176
181-func aZ (ba) = if ((ba == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
182178 then wavesBalance(this).available
183- else assetBalance(this, fromBase58String(ba))
179+ else assetBalance(this, fromBase58String(aX))
184180
185181
186-func bb (bc,bd) = fraction(bc, d, bd)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
187183
188184
189-func be (bf,bg,bh) = {
190- let bi = fraction((bf - bg), c, bg)
191- let bj = ((bh - N(bi)) > f)
192- if (!(bj))
193- then an(("Big slippage: " + toString(bi)))
194- else $Tuple2(bj, min([bf, bg]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
195191 }
196192
197193
198-func bk (bl,bm,bh) = {
199- let bi = fraction(bm, c, bl)
200- let bn = (bh > bi)
201- if (if (bn)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
202198 then true
203- else (bm > bl))
204- then an(((((((toString(bm) + " ") + toString(bl)) + " ") + toString(bi)) + " ") + toString(bh)))
205- else bn
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
206202 }
207203
208204
209-func bo (bp,bq,br,bs) = {
210- let bt = D(br, bp)
211- let bu = D(bs, bq)
212- bb(bu, bt)
205+func bm (bn,bo,bp,bq) = {
206+ let br = B(bp, bn)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
213209 }
214210
215211
216-func bv (br,bs,bw) = {
217- let bx = aF()
218- let by = parseIntValue(bx[v])
219- let bz = parseIntValue(bx[w])
220- let bA = bo(by, bz, br, bs)
221- let bd = D(br, by)
222- let bc = D(bs, bz)
223- let bB = D(bw, b)
224- let bC = bb(bd, bB)
225- let bD = bb(bc, bB)
226-[bA, bC, bD]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
227223 }
228224
229225
230-func bE (br,bs,bw) = {
231- let bF = bv(br, bs, bw)
232-[G(bF[0], b), G(bF[1], b), G(bF[2], b)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
233229 }
234230
235231
236-func bG (bH,bI,bJ,bK) = {
237- let bx = aF()
238- let bL = bx[s]
239- let bM = bx[t]
240- let bN = bx[u]
241- let bO = parseIntValue(bx[v])
242- let bP = parseIntValue(bx[w])
243- let bQ = bx[r]
244- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
245- let bS = if ((bL == bI))
246- then true
247- else an("Wrong payment asset")
248- if ((bS == bS))
249- then {
250- let bT = aZ(bM)
251- let bU = aZ(bN)
252- let bV = fraction(bT, a, bO)
253- let bW = fraction(bU, a, bP)
254- let bX = D(bV, a)
255- let bY = D(bW, a)
256- let bZ = bb(bY, bX)
257- let ca = G(bZ, b)
258- let cb = D(bJ, b)
259- let cc = D(bR, b)
260- let cd = fraction(bX, cb, cc)
261- let ce = fraction(bY, cb, cc)
262- let cf = G(cd, a)
263- let cg = G(ce, a)
264- let ch = fraction(cf, bO, a)
265- let ci = fraction(cg, bP, a)
266- let cj = if ((bH == ""))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
242+ then throw("Wrong pmt asset")
243+ else {
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
254+ let ca = E(bY, bM)
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
267257 then nil
268- else [ScriptTransfer(bK, ch, if ((bM == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
269259 then unit
270- else fromBase58String(bM)), ScriptTransfer(bK, ci, if ((bN == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
271261 then unit
272- else fromBase58String(bN)), StringEntry(Y(toString(bK), bH), aV(ch, ci, bJ, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
273- $Tuple10(ch, ci, bM, bN, bT, bU, bR, bZ, bQ, cj)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
274264 }
275- else throw("Strict value is not equal to itself.")
276265 }
277266
278267
279-func ck (bH,cl,cm,cn,co,cp,bK,cq,cr,cs,ct,cu) = {
280- let bx = aF()
281- let bL = fromBase58String(bx[s])
282- let cv = bx[t]
283- let cw = bx[u]
284- let cx = bx[x]
285- let cy = bx[y]
286- let bO = parseIntValue(bx[v])
287- let bP = parseIntValue(bx[w])
288- let bQ = bx[r]
289- let bR = valueOrErrorMessage(assetInfo(bL), "Wrong lp asset").quantity
290- let bT = if (cq)
291- then aZ(cv)
292- else if (if (cs)
293- then (cu == cv)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
294283 else false)
295- then (aZ(cv) - ct)
296- else if (cs)
297- then aZ(cv)
298- else (aZ(cv) - cm)
299- let bU = if (cq)
300- then aZ(cw)
301- else if (if (cs)
302- then (cu == cw)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
303292 else false)
304- then (aZ(cw) - ct)
305- else if (cs)
306- then aZ(cw)
307- else (aZ(cw) - co)
308- let bV = fraction(bT, a, bO)
309- let bW = fraction(bU, a, bP)
310- let cz = fraction(cm, a, bO)
311- let cA = fraction(co, a, bP)
312- let cB = D(cz, a)
313- let cC = D(cA, a)
314- let cD = bb(cC, cB)
315- let bX = D(bV, a)
316- let bY = D(bW, a)
317- let cE = if ((bR == 0))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
318303 then {
319- let bZ = f
320- let cF = f
321- let cG = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
322- $Tuple5(G(cG, b), G(cB, a), G(cC, a), bb((bY + cC), (bX + cB)), cF)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
323308 }
324309 else {
325- let bZ = bb(bY, bX)
326- let cH = fraction(N((bZ - cD)), d, bZ)
327- let cF = D(cl, b)
328- let cI = if (((if ((bZ != f))
329- then (cH > cF)
330- else false) == false))
331- then true
332- else an(((("Price slippage " + toString(cH)) + " > ") + toString(cF)))
333- if ((cI == cI))
334- then {
335- let cc = D(bR, b)
336- let cJ = fraction(cB, bZ, d)
337- let cK = fraction(cC, d, bZ)
338- let cL = if ((cJ > cC))
339- then $Tuple2(cK, cB)
340- else $Tuple2(cB, cJ)
341- let cM = cL._1
342- let cN = cL._2
343- let cG = fraction(cc, cN, bY)
344- $Tuple5(G(cG, b), G(cM, a), G(cN, a), bZ, cF)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
315+ else false)
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
317+ else {
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
345328 }
346- else throw("Strict value is not equal to itself.")
347329 }
348- let cO = cE._1
349- let cP = fraction(cE._2, bO, a)
350- let cQ = fraction(cE._3, bP, a)
351- let cR = G(cE._4, b)
352- let cS = G(cE._5, b)
353- let cT = if ((cO > 0))
354- then true
355- else an("LP <= 0")
356- if ((cT == cT))
357- then {
358- let cU = if (!(cr))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
336+ then throw("LP <= 0")
337+ else {
338+ let cK = if (!(cj))
359339 then 0
360- else cO
361- let cV = (cm - cP)
362- let cW = (co - cQ)
363- let cX = if (if (cs)
364- then (cu == cv)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
365345 else false)
366- then $Tuple2(ct, 0)
367- else if (if (cs)
368- then (cu == cw)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
369349 else false)
370- then $Tuple2(0, ct)
371- else $Tuple2(cP, cQ)
372- let cY = cX._1
373- let cZ = cX._2
374- let da = [IntegerEntry(R(), cR), IntegerEntry(S(height, lastBlock.timestamp), cR), StringEntry(V(bK, bH), aK(cY, cZ, cU, cR, cl, cS, height, lastBlock.timestamp, cV, cW))]
375- $Tuple13(cO, cU, cR, bT, bU, bR, bL, bQ, da, cV, cW, cn, cp)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
376356 }
377- else throw("Strict value is not equal to itself.")
378357 }
379358
380359
381-func db (dc) = {
382- let bx = aF()
383- let dd = bx[t]
384- let de = bx[u]
385- let bQ = parseIntValue(bx[r])
386- let by = parseIntValue(bx[v])
387- let bz = parseIntValue(bx[w])
388- let df = aZ(dd)
389- let dg = aZ(de)
390- let bZ = if ((dc.orderType == Buy))
391- then bo(by, bz, (df + dc.amount), dg)
392- else bo(by, bz, (df - dc.amount), dg)
393- let ca = G(bZ, b)
394- if (if (if (aC())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
395374 then true
396- else (bQ == o))
375+ else (bO == m))
397376 then true
398- else (bQ == p))
399- then an("Admin blocked")
377+ else (bO == n))
378+ then throw("Admin blocked")
400379 else {
401- let dh = dc.assetPair.amountAsset
402- let di = if ((dh == unit))
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
403382 then "WAVES"
404- else toBase58String(value(dh))
405- let dj = dc.assetPair.priceAsset
406- let dk = if ((dj == unit))
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
385+ let da = if ((cZ == unit))
407386 then "WAVES"
408- else toBase58String(value(dj))
409- if (if ((di != dd))
387+ else toBase58String(value(cZ))
388+ if (if ((cY != cT))
410389 then true
411- else (dk != de))
412- then an("Wr assets")
390+ else (da != cU))
391+ then throw("Wr assets")
413392 else {
414- let dl = dc.price
415- let bP = fraction(b, bz, by)
416- let dm = J(dl, b, bP)
417- let dn = if ((dc.orderType == Buy))
418- then (ca >= dm)
419- else (dm >= ca)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
420399 true
421400 }
422401 }
423402 }
424403
425404
426-func do (dp) = {
427- let dq = if ((size(dp.payments) == 1))
405+func de (df) = if ((size(df.payments) != 1))
406+ then throw("1 pmnt exp")
407+ else {
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
417+ then true
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
421+ }
422+
423+
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
428428 then true
429- else an("1 payment expected")
430- if ((dq == dq))
431- then {
432- let dr = value(dp.payments[0])
433- let bI = value(dr.assetId)
434- let ct = dr.amount
435- let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
436- let ch = cE._1
437- let ci = cE._2
438- let bQ = parseIntValue(cE._9)
439- let cj = cE._10
440- if (if (aC())
441- then true
442- else (bQ == p))
443- then an(("Admin blocked: " + toString(bQ)))
444- else $Tuple5(ch, ci, ct, bI, cj)
445- }
446- else throw("Strict value is not equal to itself.")
429+ else (bO == l))
430+ then true
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
447434 }
448435
449436
450-func ds (dt,X,du,dv,bh,cr,cs,ct,cu) = {
451- let cE = ck(X, bh, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, false, cr, cs, ct, cu)
452- let bQ = parseIntValue(cE._8)
453- if (if (if (aC())
454- then true
455- else (bQ == n))
456- then true
457- else (bQ == p))
458- then an(("Blocked:" + toString(bQ)))
459- else cE
460- }
461-
462-
463-func dw (dx) = {
464- let dy = fraction(dx, ae, e)
465- $Tuple2((dx - dy), dy)
466- }
467-
468-
469-func dz () = {
470- let au = getString(P())
471- if ($isInstanceOf(au, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
472440 then {
473- let dA = au
474- fromBase58String(dA)
441+ let dl = as
442+ fromBase58String(dl)
475443 }
476- else if ($isInstanceOf(au, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
477445 then unit
478446 else throw("Match error")
479447 }
480448
481449
482-func dB () = {
483- let au = getString(Q())
484- if ($isInstanceOf(au, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
485453 then {
486- let dA = au
487- fromBase58String(dA)
454+ let dl = as
455+ fromBase58String(dl)
488456 }
489- else if ($isInstanceOf(au, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
490458 then unit
491459 else throw("Match error")
492460 }
493461
494462
495-let dC = an("Permission denied")
463+let dn = throw("Permission denied")
496464
497-func dD (dp) = {
498- let au = dz()
499- if ($isInstanceOf(au, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
500468 then {
501- let dE = au
502- if ((dp.callerPublicKey == dE))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
503471 then true
504- else dC
472+ else dn
505473 }
506- else if ($isInstanceOf(au, "Unit"))
507- then if ((dp.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
508476 then true
509- else dC
477+ else dn
510478 else throw("Match error")
511479 }
512480
513481
514-@Callable(dp)
515-func constructor (aA) = {
516- let dF = dD(dp)
517- if ((dF == dF))
518- then [StringEntry(O(), aA)]
482+@Callable(df)
483+func constructor (M) = {
484+ let dq = do(df)
485+ if ((dq == dq))
486+ then [StringEntry(M(), M)]
519487 else throw("Strict value is not equal to itself.")
520488 }
521489
522490
523491
524-@Callable(dp)
525-func setManager (dG) = {
526- let dF = dD(dp)
527- if ((dF == dF))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
528496 then {
529- let dH = fromBase58String(dG)
530- if ((dH == dH))
531- then [StringEntry(Q(), dG)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
532500 else throw("Strict value is not equal to itself.")
533501 }
534502 else throw("Strict value is not equal to itself.")
535503 }
536504
537505
538506
539-@Callable(dp)
507+@Callable(df)
540508 func confirmManager () = {
541- let dI = dB()
542- let dJ = if (isDefined(dI))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
543511 then true
544- else an("No pending manager")
545- if ((dJ == dJ))
512+ else throw("No pending manager")
513+ if ((dt == dt))
546514 then {
547- let dK = if ((dp.callerPublicKey == value(dI)))
515+ let du = if ((df.callerPublicKey == value(bD)))
548516 then true
549- else an("You are not pending manager")
550- if ((dK == dK))
551- then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
517+ else throw("You are not pending manager")
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
552520 else throw("Strict value is not equal to itself.")
553521 }
554522 else throw("Strict value is not equal to itself.")
555523 }
556524
557525
558526
559-@Callable(dp)
560-func put (bh,dL) = {
561- let dM = aJ()
562- let dN = valueOrErrorMessage(addressFromString(dM[z]), "Wrong staking contract")
563- let dO = valueOrErrorMessage(addressFromString(dM[A]), "Wrogn slippage contract")
564- let dP = if ((bh >= 0))
565- then true
566- else an("wrong slippage")
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
533+ then throw("Wrong slippage")
534+ else if ((size(df.payments) != 2))
535+ then throw("2 pmnts expd")
536+ else {
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
547+ then {
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
551+ then {
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
554+ }
555+ else unit
556+ }
557+ if ((dC == dC))
558+ then {
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
561+ else nil
562+ if ((dE == dE))
563+ then {
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
566+ else nil
567+ if ((dF == dF))
568+ then {
569+ let dG = if (dw)
570+ then {
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
573+ then nil
574+ else throw("Strict value is not equal to itself.")
575+ }
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
578+ }
579+ else throw("Strict value is not equal to itself.")
580+ }
581+ else throw("Strict value is not equal to itself.")
582+ }
583+ else throw("Strict value is not equal to itself.")
584+ }
585+ else throw("Strict value is not equal to itself.")
586+ }
587+ }
588+
589+
590+
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
567608 if ((dP == dP))
568- then {
569- let dQ = if ((size(dp.payments) == 2))
570- then true
571- else an("2 payments expected")
572- if ((dQ == dQ))
573- then {
574- let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], bh, true, false, 0, "")
575- let cU = dR._2
576- let bL = dR._7
577- let cj = dR._9
578- let cV = dR._10
579- let cW = dR._11
580- let bM = dR._12
581- let bN = dR._13
582- let cE = invoke(aA, "emit", [cU], nil)
583- if ((cE == cE))
584- then {
585- let dS = {
586- let au = cE
587- if ($isInstanceOf(au, "Address"))
588- then {
589- let dT = au
590- invoke(dT, "emit", [cU], nil)
591- }
592- else unit
593- }
594- if ((dS == dS))
609+ then if (if (if (if ((0 >= be))
610+ then true
611+ else (0 >= dI))
612+ then true
613+ else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
616+ then throw("Wrong params")
617+ else if ((size(df.payments) != 1))
618+ then throw("1 pmnt expd")
619+ else {
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
624+ then throw("Wrong pmt amt")
625+ else {
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
630+ then true
631+ else (dI > cl))
632+ then throw("invalid payment amount")
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
636+ then true
637+ else (dJ > cl))
638+ then throw("invalid payment amount")
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640+ else throw("wrong pmtAssetId")
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
595651 then {
596- let dU = if ((cV > 0))
597- then invoke(dO, "put", nil, [AttachedPayment(bM, cV)])
598- else nil
599- if ((dU == dU))
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
600662 then {
601- let dV = if ((cW > 0))
602- then invoke(dO, "put", nil, [AttachedPayment(bN, cW)])
603- else nil
604- if ((dV == dV))
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
666+ then {
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
669+ }
670+ else unit
671+ }
672+ if ((dC == dC))
605673 then {
606- let dW = if (dL)
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676+ else nil
677+ if ((dE == dE))
607678 then {
608- let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
609- if ((dX == dX))
610- then nil
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681+ else nil
682+ if ((dF == dF))
683+ then {
684+ let dG = if (dw)
685+ then {
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
688+ then nil
689+ else throw("Strict value is not equal to itself.")
690+ }
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
693+ }
611694 else throw("Strict value is not equal to itself.")
612695 }
613- else [ScriptTransfer(dp.caller, cU, bL)]
614- (cj ++ dW)
696+ else throw("Strict value is not equal to itself.")
615697 }
616698 else throw("Strict value is not equal to itself.")
617699 }
618700 else throw("Strict value is not equal to itself.")
619701 }
702+ else throw("Strict value is not equal to itself.")
703+ }
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+
708+
709+
710+@Callable(df)
711+func putForFree (eb) = if ((0 > eb))
712+ then throw("Wrong slpg")
713+ else if ((size(df.payments) != 2))
714+ then throw("2 pmnts expd")
715+ else {
716+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eb, false, false, 0, "")
717+ dY._9
718+ }
719+
720+
721+
722+@Callable(df)
723+func get () = {
724+ let cx = de(df)
725+ let ec = cx._1
726+ let cb = cx._2
727+ let cl = cx._3
728+ let bG = cx._4
729+ let cc = cx._5
730+ let ed = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
731+ if ((ed == ed))
732+ then cc
733+ else throw("Strict value is not equal to itself.")
734+ }
735+
736+
737+
738+@Callable(df)
739+func getOneTkn (ee,ef,eg,eh,be) = if ((size(df.payments) != 1))
740+ then throw("1 pmnt expd")
741+ else {
742+ let bv = aC()
743+ let bJ = bv[q]
744+ let bK = bv[r]
745+ let bL = bv[s]
746+ let bM = parseIntValue(bv[t])
747+ let bN = parseIntValue(bv[u])
748+ let bO = bv[p]
749+ let dx = aG()
750+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
751+ let dg = value(df.payments[0])
752+ let dN = valueOrElse(getString(this, aa()), "")
753+ let bI = if ((dN == toString(df.caller)))
754+ then df.originCaller
755+ else df.caller
756+ let bF = toBase58String(df.transactionId)
757+ let bG = value(dg.assetId)
758+ let cl = dg.amount
759+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
760+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
761+ if ((dP == dP))
762+ then if ((1000000000 > cl))
763+ then throw("Min pmt 10 LP")
764+ else if (if (if ((0 > be))
765+ then true
766+ else (0 > ee))
767+ then true
768+ else (0 > eg))
769+ then throw("Wrong params")
770+ else if ((bJ != toBase58String(bG)))
771+ then throw("Wrong LP")
772+ else {
773+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774+ let ei = cx._1
775+ let ej = cx._2
776+ let bQ = aW(bK)
777+ let bS = aW(bL)
778+ let ek = if ((eh == bK))
779+ then $Tuple7((bQ - ei), (bS - ej), ee, ej, 0, 0, (ei + ee))
780+ else if ((eh == bL))
781+ then $Tuple7((bQ - ei), (bS - ej), 0, 0, ee, ei, (ej + ee))
782+ else throw("wrong outAssetId")
783+ let dR = ek._1
784+ let dS = ek._2
785+ let dT = ek._3
786+ let dU = ek._4
787+ let dV = ek._5
788+ let dW = ek._6
789+ let el = ek._7
790+ if (if ((0 > dT))
791+ then true
792+ else (0 > dV))
793+ then throw("Wrong calc")
794+ else {
795+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
796+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
797+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
798+ if ((dX == dX))
799+ then {
800+ let em = bb(toBigInt(el), toBigInt(eg), toBigInt(be))
801+ if ((em == em))
802+ then {
803+ let en = if ((eh == bK))
804+ then $Tuple2(toInt(em._2), 0)
805+ else $Tuple2(0, toInt(em._2))
806+ let eo = en._1
807+ let ep = en._2
808+ let eq = aY(B(bS, bN), B(bQ, bM))
809+ let er = E(eq, a)
810+ let cc = [ScriptTransfer(bI, (eo + ep), if ((eh == "WAVES"))
811+ then unit
812+ else fromBase58String(eh)), StringEntry(W(toString(bI), bF), aS(eo, ep, cl, er, height, lastBlock.timestamp)), IntegerEntry(P(), er), IntegerEntry(Q(height, lastBlock.timestamp), er)]
813+ if ((cc == cc))
814+ then {
815+ let es = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
816+ if ((es == es))
817+ then cc
818+ else throw("Strict value is not equal to itself.")
819+ }
820+ else throw("Strict value is not equal to itself.")
821+ }
822+ else throw("Strict value is not equal to itself.")
823+ }
824+ else throw("Strict value is not equal to itself.")
825+ }
826+ }
827+ else throw("Strict value is not equal to itself.")
828+ }
829+
830+
831+
832+@Callable(df)
833+func getNoLess (et,eu) = {
834+ let cx = de(df)
835+ let ca = cx._1
836+ let cb = cx._2
837+ let cl = cx._3
838+ let bG = cx._4
839+ let cc = cx._5
840+ if ((et > ca))
841+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
842+ else if ((eu > cb))
843+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eu)))
844+ else {
845+ let ev = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
846+ if ((ev == ev))
847+ then cc
848+ else throw("Strict value is not equal to itself.")
849+ }
850+ }
851+
852+
853+
854+@Callable(df)
855+func unstakeAndGet (ew) = {
856+ let ex = if ((size(df.payments) != 0))
857+ then throw("No pmnts expd")
858+ else true
859+ if ((ex == ex))
860+ then {
861+ let bv = aC()
862+ let ey = aG()
863+ let dB = fromBase58String(bv[q])
864+ let ez = valueOrErrorMessage(addressFromString(ey[x]), "Wr st addr")
865+ let eA = invoke(ez, "unstake", [toBase58String(dB), ew], nil)
866+ if ((eA == eA))
867+ then {
868+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), ew, df.caller)
869+ let bO = parseIntValue(cx._9)
870+ let cc = cx._10
871+ let eB = if (if (aA())
872+ then true
873+ else (bO == n))
874+ then throw(("Blocked: " + toString(bO)))
875+ else true
876+ if ((eB == eB))
877+ then {
878+ let eC = invoke(ay, "burn", [ew], [AttachedPayment(dB, ew)])
879+ if ((eC == eC))
880+ then cc
620881 else throw("Strict value is not equal to itself.")
621882 }
622883 else throw("Strict value is not equal to itself.")
623884 }
624885 else throw("Strict value is not equal to itself.")
625886 }
626887 else throw("Strict value is not equal to itself.")
627888 }
628889
629890
630891
631-@Callable(dp)
632-func putOneTkn (dY,dZ,bg,bh,dL) = {
633- let bx = aJ()
634- let dN = valueOrErrorMessage(addressFromString(bx[z]), "Wrong staking contract")
635- let dO = valueOrErrorMessage(addressFromString(bx[A]), "Wrong slippage contract")
636- let ea = valueOrErrorMessage(addressFromString(bx[B]), "Wrong gwx reward contract")
637- let eb = aF()
638- let bM = eb[t]
639- let bN = eb[u]
640- let bO = parseIntValue(eb[v])
641- let bP = parseIntValue(eb[w])
642- let ec = valueOrElse(getString(this, ac()), "")
643- let bK = if ((ec == toString(dp.caller)))
644- then dp.originCaller
645- else dp.caller
646- if (if (if (if ((0 >= bh))
647- then true
648- else (0 >= dY))
649- then true
650- else (0 >= dZ))
651- then true
652- else (0 >= bg))
653- then an("Wrong params")
654- else if ((size(dp.payments) != 1))
655- then an("1 payment expected")
656- else {
657- let dr = value(dp.payments[0])
658- let bI = toBase58String(value(dr.assetId))
659- let ed = dr.amount
660- let ee = dw(ed)
661- let ct = ee._1
662- let ef = ee._2
663- if (if (if ((dY > ct))
664- then true
665- else (dZ > ct))
666- then true
667- else (10000000 > ct))
668- then an("wrong payment amount")
669- else {
670- let bT = aZ(bM)
671- let bU = aZ(bN)
672- let eg = if ((bI == bM))
673- then $Tuple6((bT - ct), bU, (ct - dY), dZ, 0, 0)
674- else if ((bI == bN))
675- then $Tuple6(bT, (bU - ct), 0, 0, (ct - dZ), dY)
676- else an("wrong paymentAssetId")
677- let eh = eg._1
678- let ei = eg._2
679- let ej = eg._3
680- let ek = eg._4
681- let el = eg._5
682- let em = eg._6
683- let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
684- let bl = invoke(ea, "calcD", [toString(toBigInt(((eh + ej) - em))), toString(toBigInt(((ei + el) - ek))), aB, i, j], nil)
685- let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
686- if ((en == en))
687- then {
688- let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bM), dY), AttachedPayment(fromBase58String(bN), dZ), bh, true, true, ct, bI)
689- let bf = dR._2
690- let bL = dR._7
691- let cj = dR._9
692- let cV = dR._10
693- let cW = dR._11
694- let eo = be(toBigInt(bf), toBigInt(bg), toBigInt(bh))
695- let cU = toInt(eo._2)
696- let ep = invoke(aA, "emit", [cU], nil)
697- if ((ep == ep))
698- then {
699- let dS = {
700- let au = ep
701- if ($isInstanceOf(au, "Address"))
702- then {
703- let dT = au
704- invoke(dT, "emit", [cU], nil)
705- }
706- else unit
707- }
708- if ((dS == dS))
709- then {
710- let dU = if ((cV > 0))
711- then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bM), cV)])
712- else nil
713- if ((dU == dU))
714- then {
715- let dV = if ((cW > 0))
716- then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bN), cW)])
717- else nil
718- if ((dV == dV))
719- then {
720- let dW = if (dL)
721- then {
722- let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
723- if ((dX == dX))
724- then nil
725- else throw("Strict value is not equal to itself.")
726- }
727- else [ScriptTransfer(dp.caller, cU, bL)]
728- let eq = if ((ef > 0))
729- then [ScriptTransfer(aE, ef, fromBase58String(bI))]
730- else nil
731- ((cj ++ dW) ++ eq)
732- }
733- else throw("Strict value is not equal to itself.")
734- }
735- else throw("Strict value is not equal to itself.")
736- }
737- else throw("Strict value is not equal to itself.")
738- }
739- else throw("Strict value is not equal to itself.")
740- }
741- else throw("Strict value is not equal to itself.")
742- }
743- }
892+@Callable(df)
893+func activate (eD,eE) = if ((toString(df.caller) != toString(ay)))
894+ then throw("denied")
895+ else $Tuple2([StringEntry(X(), eD), StringEntry(Y(), eE)], "success")
896+
897+
898+
899+@Callable(df)
900+func setS (eF,eB) = if ((toString(df.caller) != au(this, aa())))
901+ then dn
902+ else [StringEntry(eF, eB)]
903+
904+
905+
906+@Callable(df)
907+func setI (eF,eB) = if ((toString(df.caller) != au(this, aa())))
908+ then dn
909+ else [IntegerEntry(eF, eB)]
910+
911+
912+
913+@Callable(df)
914+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
915+
916+
917+
918+@Callable(df)
919+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
920+
921+
922+
923+@Callable(df)
924+func calcPricesWrapperREADONLY (bp,bq,bu) = {
925+ let eG = bt(bp, bq, bu)
926+ $Tuple2(nil, [toString(eG[0]), toString(eG[1]), toString(eG[2])])
744927 }
745928
746929
747930
748-@Callable(dp)
749-func putForFree (er) = if ((0 > er))
750- then an("wrong slippage")
751- else if ((size(dp.payments) != 2))
752- then an("2 payments expected")
753- else {
754- let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], er, false, false, 0, "")
755- dR._9
756- }
931+@Callable(df)
932+func fromX18WrapperREADONLY (F,eH) = $Tuple2(nil, E(parseBigIntValue(F), eH))
757933
758934
759935
760-@Callable(dp)
761-func get () = {
762- let cE = do(dp)
763- let es = cE._1
764- let ci = cE._2
765- let ct = cE._3
766- let bI = cE._4
767- let cj = cE._5
768- let et = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
769- if ((et == et))
770- then cj
771- else throw("Strict value is not equal to itself.")
936+@Callable(df)
937+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
938+
939+
940+
941+@Callable(df)
942+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
943+
944+
945+
946+@Callable(df)
947+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eI,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eI, ci, cj, false, 0, ""))
948+
949+
950+
951+@Callable(df)
952+func estimateGetOperationWrapperREADONLY (bF,eJ,bH,eI) = {
953+ let cx = bE(bF, eJ, bH, addressFromStringValue(eI))
954+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
772955 }
773956
774957
775-
776-@Callable(dp)
777-func getOneTkn (eu,ev,ew,ex,bh) = if ((size(dp.payments) != 1))
778- then an("1 payment expected")
779- else {
780- let bx = aF()
781- let bL = bx[s]
782- let bM = bx[t]
783- let bN = bx[u]
784- let bO = parseIntValue(bx[v])
785- let bP = parseIntValue(bx[w])
786- let bQ = bx[r]
787- let dM = aJ()
788- let ea = valueOrErrorMessage(addressFromString(dM[B]), "Wrong gwxRewardContract address")
789- let dr = value(dp.payments[0])
790- let ec = valueOrElse(getString(this, ac()), "")
791- let bK = if ((ec == toString(dp.caller)))
792- then dp.originCaller
793- else dp.caller
794- let bH = toBase58String(dp.transactionId)
795- let bI = value(dr.assetId)
796- let ct = dr.amount
797- if ((1000000000 > ct))
798- then an("Min payment 10 LP")
799- else if (if (if ((0 > bh))
800- then true
801- else (0 > eu))
802- then true
803- else (0 > ew))
804- then an("Wrong params")
805- else if ((bL != toBase58String(bI)))
806- then an("Wrong LP")
807- else {
808- let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
809- let ey = cE._1
810- let ez = cE._2
811- let bT = aZ(bM)
812- let bU = aZ(bN)
813- let eA = if ((ex == bM))
814- then $Tuple7((bT - ey), (bU - ez), eu, ez, 0, 0, (ey + eu))
815- else if ((ex == bN))
816- then $Tuple7((bT - ey), (bU - ez), 0, 0, eu, ey, (ez + eu))
817- else an("wrong outAssetId")
818- let eh = eA._1
819- let ei = eA._2
820- let ej = eA._3
821- let ek = eA._4
822- let el = eA._5
823- let em = eA._6
824- let eB = eA._7
825- if (if ((0 > ej))
826- then true
827- else (0 > el))
828- then an("Wrong calc")
829- else {
830- let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
831- let bl = invoke(ea, "calcD", [toString(((eh - ej) + em)), toString(((ei + ek) - el)), aB, i, j], nil)
832- let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
833- if ((en == en))
834- then {
835- let eC = be(toBigInt(eB), toBigInt(ew), toBigInt(bh))
836- if ((eC == eC))
837- then {
838- let eD = if ((ex == bM))
839- then $Tuple2(toInt(eC._2), 0)
840- else $Tuple2(0, toInt(eC._2))
841- let eE = eD._1
842- let eF = eD._2
843- let eG = (eE + eF)
844- let eH = dw(eG)
845- let eI = eH._1
846- let ef = eH._2
847- let eJ = if ((ex == "WAVES"))
848- then unit
849- else fromBase58String(ex)
850- let eq = if ((ef > 0))
851- then [ScriptTransfer(aE, ef, eJ)]
852- else nil
853- let eK = if ((bO >= bP))
854- then bO
855- else bP
856- if ((eK == eK))
857- then {
858- let eL = bb(D(bU, eK), D(bT, eK))
859- let eM = G(eL, b)
860- let cj = [ScriptTransfer(bK, eI, eJ), StringEntry(Y(toString(bK), bH), aV(eE, eF, ct, eM, height, lastBlock.timestamp)), IntegerEntry(R(), eM), IntegerEntry(S(height, lastBlock.timestamp), eM)]
861- if ((cj == cj))
862- then {
863- let eN = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
864- if ((eN == eN))
865- then (cj ++ eq)
866- else throw("Strict value is not equal to itself.")
867- }
868- else throw("Strict value is not equal to itself.")
869- }
870- else throw("Strict value is not equal to itself.")
871- }
872- else throw("Strict value is not equal to itself.")
873- }
874- else throw("Strict value is not equal to itself.")
875- }
876- }
958+@Verifier(eK)
959+func eL () = {
960+ let eM = {
961+ let as = dk()
962+ if ($isInstanceOf(as, "ByteVector"))
963+ then {
964+ let dp = as
965+ dp
966+ }
967+ else if ($isInstanceOf(as, "Unit"))
968+ then eK.senderPublicKey
969+ else throw("Match error")
877970 }
878-
879-
880-
881-@Callable(dp)
882-func getNoLess (eO,eP) = {
883- let cE = do(dp)
884- let ch = cE._1
885- let ci = cE._2
886- let ct = cE._3
887- let bI = cE._4
888- let cj = cE._5
889- let eQ = if ((ch >= eO))
890- then true
891- else an(((("Failed: " + toString(ch)) + " < ") + toString(eO)))
892- if ((eQ == eQ))
971+ let as = eK
972+ if ($isInstanceOf(as, "Order"))
893973 then {
894- let eR = if ((ci >= eP))
895- then true
896- else an(((("Failed: " + toString(ci)) + " < ") + toString(eP)))
897- if ((eR == eR))
898- then {
899- let eS = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
900- if ((eS == eS))
901- then cj
902- else throw("Strict value is not equal to itself.")
903- }
904- else throw("Strict value is not equal to itself.")
905- }
906- else throw("Strict value is not equal to itself.")
907- }
908-
909-
910-
911-@Callable(dp)
912-func unstakeAndGet (dx) = {
913- let dq = if ((size(dp.payments) != 0))
914- then an("no payments expected")
915- else true
916- if ((dq == dq))
917- then {
918- let bx = aF()
919- let eT = aJ()
920- let bL = fromBase58String(bx[s])
921- let eU = valueOrErrorMessage(addressFromString(eT[z]), "wrong")
922- let eV = invoke(eU, "unstake", [toBase58String(bL), dx], nil)
923- if ((eV == eV))
924- then {
925- let cE = bG(toBase58String(dp.transactionId), toBase58String(bL), dx, dp.caller)
926- let bQ = parseIntValue(cE._9)
927- let cj = cE._10
928- let eW = if (if (aC())
929- then true
930- else (bQ == p))
931- then an(("Blocked: " + toString(bQ)))
932- else true
933- if ((eW == eW))
934- then {
935- let eX = invoke(aA, "burn", [dx], [AttachedPayment(bL, dx)])
936- if ((eX == eX))
937- then cj
938- else throw("Strict value is not equal to itself.")
939- }
940- else throw("Strict value is not equal to itself.")
941- }
942- else throw("Strict value is not equal to itself.")
943- }
944- else throw("Strict value is not equal to itself.")
945- }
946-
947-
948-
949-@Callable(dp)
950-func activate (eY,eZ) = if ((toString(dp.caller) != toString(aA)))
951- then an("denied")
952- else $Tuple2([StringEntry(Z(), eY), StringEntry(aa(), eZ)], "success")
953-
954-
955-
956-@Callable(dp)
957-func setS (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
958- then dC
959- else [StringEntry(fa, eW)]
960-
961-
962-
963-@Callable(dp)
964-func setI (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
965- then dC
966- else [IntegerEntry(fa, eW)]
967-
968-
969-
970-@Callable(dp)
971-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
972-
973-
974-
975-@Callable(dp)
976-func getAccBalanceWrapperREADONLY (ba) = $Tuple2(nil, aZ(ba))
977-
978-
979-
980-@Callable(dp)
981-func calcPricesWrapperREADONLY (br,bs,bw) = {
982- let fb = bv(br, bs, bw)
983- $Tuple2(nil, [toString(fb[0]), toString(fb[1]), toString(fb[2])])
984- }
985-
986-
987-
988-@Callable(dp)
989-func fromX18WrapperREADONLY (H,fc) = $Tuple2(nil, G(parseBigIntValue(H), fc))
990-
991-
992-
993-@Callable(dp)
994-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
995-
996-
997-
998-@Callable(dp)
999-func calcPriceBigIntWrapperREADONLY (bc,bd) = $Tuple2(nil, toString(bb(parseBigIntValue(bc), parseBigIntValue(bd))))
1000-
1001-
1002-
1003-@Callable(dp)
1004-func estimatePutOperationWrapperREADONLY (bH,bh,cm,fd,co,fe,ff,cq,cr) = $Tuple2(nil, ck(bH, bh, cm, fd, co, fe, ff, cq, cr, false, 0, ""))
1005-
1006-
1007-
1008-@Callable(dp)
1009-func estimateGetOperationWrapperREADONLY (bH,fg,bJ,ff) = {
1010- let cE = bG(bH, fg, bJ, addressFromStringValue(ff))
1011- $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
1012- }
1013-
1014-
1015-@Verifier(fh)
1016-func fi () = {
1017- let au = fh
1018- if ($isInstanceOf(au, "Order"))
1019- then {
1020- let dc = au
1021- let fj = aD()
1022- let aq = db(dc)
1023- let fk = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1024- let fl = sigVerify(dc.bodyBytes, dc.proofs[1], fj)
1025- if (if (if (aq)
1026- then fk
974+ let cS = as
975+ let eN = aB()
976+ let eO = cR(cS)
977+ let eP = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
978+ let eQ = sigVerify(cS.bodyBytes, cS.proofs[1], eN)
979+ if (if (if (eO)
980+ then eP
1027981 else false)
1028- then fl
982+ then eQ
1029983 else false)
1030984 then true
1031- else ap(aq, fk, fl)
985+ else an(eO, eP, eQ)
1032986 }
1033- else {
1034- let fm = {
1035- let fn = dz()
1036- if ($isInstanceOf(fn, "ByteVector"))
1037- then {
1038- let dE = fn
1039- dE
1040- }
1041- else if ($isInstanceOf(fn, "Unit"))
1042- then fh.senderPublicKey
1043- else throw("Match error")
987+ else if ($isInstanceOf(as, "SetScriptTransaction"))
988+ then {
989+ let dl = as
990+ let eR = blake2b256(value(dl.script))
991+ let eS = fromBase64String(value(getString(ay, am())))
992+ let eT = scriptHash(this)
993+ if (if ((eS == eR))
994+ then (eT != eR)
995+ else false)
996+ then true
997+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
1044998 }
1045- sigVerify(fh.bodyBytes, fh.proofs[0], fm)
1046- }
999+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
10471000 }
10481001

github/deemru/w8io/169f3d6 
306.07 ms