tx · GPqPcWqYHNssKezTg34GapBCp2YKXCSBdqKAssMxg6xp
3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT: -0.01000000 Waves
2022.04.05 14:22 [3060480] smart account 3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT > SELF 0.00000000 Waves
{
"type": 13,
"id": "GPqPcWqYHNssKezTg34GapBCp2YKXCSBdqKAssMxg6xp",
"fee": 1000000,
"feeAssetId": null,
"timestamp": 1649156629528,
"version": 1,
"sender": "3PAZv9tgK1PX7dKR7b4kchq5qdpUS3G5sYT",
"senderPublicKey": "2cFG5wZimjVSeCT8ZCRybx7Mzo5tJF879aw2b31uLRmR",
"proofs": [
"2wTppp142gjfZcFFivN5Md9bDAhhrBJYG8QAWDcKTgQBgYgndV41hN6rUX8w3241WNS5LLMqQ5gbFJbU8x2aFtjs"
],
"script": "base64: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c2FnZQAAAAIJAAQdAAAAAgUAAAANY29uZmlnQWRkcmVzcwIAAAAKZWJfcmV3YXJkcwIAAAAgbm8gZWJfcmV3YXJkcyBjb250cmFjdCBpbiBjb25maWcAAAAAC3ZpcmVzTWludGVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MCAAAADHZpcmVzX21pbnRlcgIAAAAUbWFpbjogbm8gdmlyZXNNaW50ZXICAAAAE2ludmFsaWQgdmlyZXNNaW50ZXIAAAAAB21heWJldlMJAAQdAAAAAgUAAAANY29uZmlnQWRkcmVzcwIAAAAMdmlyZXNfc3Rha2VyAAAAAAJ2UwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAAAdtYXliZXZTAgAAAA9ubyB2aXJlc19zdGFrZXIAAAAAAmRDCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MCAAAAEmRpdmlkZW5kc19jb250cmFjdAIAAAAVbm8gZGl2aWRlbmRzX2NvbnRyYWN0AgAAABppbnZhbGlkIGRpdmlkZW5kc19jb250cmFjdAAAAAADbVZEBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MFAAAAEGRpc3RyaWJ1dG9yU3RvcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABZAUAAAAHJG1hdGNoMAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAABZAUAAAAEdW5pdAAAAAACVkQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgUAAAADbVZEAgAAAB9ubyBkaXN0cmlidXRvciB0byBjbGFpbSByZXdhcmRzAAAAABFtYXliZVZpcmVzQXNzZXRJZAkABB0AAAACBQAAAAt2aXJlc01pbnRlcgIAAAAHYXNzZXRJZAAAAAAMdmlyZXNBc3NldElkCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAJZAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAABFtYXliZVZpcmVzQXNzZXRJZAIAAAAXdmlyZXMgYXNzZXRJZCBub3QgZm91bmQCAAAAFWludmFsaWQgdmlyZXMgYXNzZXRJZAEAAAAMdmlyZXNQYXltZW50AAAAAQAAAAFpAwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAMdmlyZXNBc3NldElkCQAAAgAAAAECAAAACW5vdCB2aXJlcwgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AQAAABBhc3NldElkT2ZSZXNlcnZlAAAAAQAAAANyc3IJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAANyc3IFAAAADGFzc2V0SWRTdG9yZQIAAAARbm8gYXNzZXRJZCBpbiByc3IBAAAAEGNvbGxhdGVyYWxGYWN0b3IAAAABAAAAA3JzcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADWNvbmZpZ0FkZHJlc3MJAAEsAAAAAgkBAAAAEGFzc2V0SWRPZlJlc2VydmUAAAABBQAAAANyc3ICAAAAEV9Db2xsYXRlcmFsRmFjdG9yAgAAAB1ubyBDb2xsYXRlcmFsRmFjdG9yIGluIGNvbmZpZwEAAAAUbGlxdWlkYXRpb25UaHJlc2hvbGQAAAABAAAAA3JzcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADWNvbmZpZ0FkZHJlc3MJAAEsAAAAAgkBAAAAEGFzc2V0SWRPZlJlc2VydmUAAAABBQAAAANyc3ICAAAAFV9MaXF1aWRhdGlvblRocmVzaG9sZAIAAAAhbm8gTGlxdWlkYXRpb25UaHJlc2hvbGQgaW4gY29uZmlnAQAAABJsaXF1aWRhdGlvblBlbmFsdHkAAAABAAAAB2Fzc2V0SWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAIFAAAAB2Fzc2V0SWQCAAAAE19MaXF1aWRhdGlvblBlbmFsdHkCAAAAH25vIExpcXVpZGF0aW9uUGVuYWx0eSBpbiBjb25maWcAAAAAFmFjY291bnRIZWFsdGhUaHJlc2hvbGQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABhhY2NvdW50X2hlYWx0aF90aHJlc2hvbGQCAAAAG25vIGFjY291bnRfaGVhbHRoX3RocmVzaG9sZAAAAAAUYWNjb3VudEhlYWx0aE92ZXJsYXAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABZhY2NvdW50X2hlYWx0aF9vdmVybGFwAgAAABlubyBhY2NvdW50X2hlYWx0aF9vdmVybGFwAAAAAA9jb2xsYXBzZVBlbmFsdHkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABBjb2xsYXBzZV9wZW5hbHR5AgAAABNubyBjb2xsYXBzZV9wZW5hbHR5AAAAAAtsaXF1aWRhdG9ycwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAA1jb25maWdBZGRyZXNzAgAAAAtsaXF1aWRhdG9ycwIAAAAAAQAAAA1maW5kUmVzZXJ2ZUJ5AAAAAgAAAAVzdG9yZQAAAAV2YWx1ZQoBAAAABGZvbGQAAAACAAAAAWEAAAABcgQAAAAHJG1hdGNoMAUAAAABYQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAAFZm91bmQFAAAAByRtYXRjaDAFAAAABWZvdW5kBAAAAANyc3IJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAFyAgAAAA9yc3IgYmFkIGFkZHJlc3MDCQAAAAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAANyc3IFAAAABXN0b3JlCQABLAAAAAICAAAAC3JzciBoYXMgbm8gBQAAAAVzdG9yZQUAAAAFdmFsdWUFAAAAA3JzcgUAAAAEdW5pdAQAAAAHJG1hdGNoMAoAAAAAAiRsBQAAAAhyZXNlcnZlcwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAABHVuaXQKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAAARmb2xkAAAAAgUAAAACJGEJAAGRAAAAAgUAAAACJGwFAAAAAiRpCgEAAAAFJGYwXzIAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQAAAAUkZjBfMgAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIJAQAAAAUkZjBfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdBZGRyZXNzBAAAAAVmb3VuZAUAAAAHJG1hdGNoMAUAAAAFZm91bmQJAAACAAAAAQkAASwAAAACAgAAAAh1bmtub3duIAUAAAAFc3RvcmUBAAAAA3ZsUgAAAAEAAAABcgMJAQAAAAhjb250YWlucwAAAAIFAAAAC3Jlc2VydmVzU3RyBQAAAAFyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAABcgIAAAANbWFpbjogYmFkIHJzcgkAAAIAAAABCQABLAAAAAICAAAADHVua25vd24gcnNyOgUAAAABcgEAAAALdXNlckJhbGFuY2UAAAACAAAAA3JzcgAAAAR1c2VyCQEAAAARYXNVc2VyQmFsYW5jZURhdGEAAAABCQAD/AAAAAQFAAAAA3JzcgIAAAALdXNlckJhbGFuY2UJAARMAAAAAgUAAAAEdXNlcgUAAAADbmlsBQAAAANuaWwAAAAAFW1heWJlUHJvdGVjdGVkUmVzZXJ2ZQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABFwcm90ZWN0ZWRfcmVzZXJ2ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAANwZHMFAAAAByRtYXRjaDAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAANwZHMCAAAAFWJhZCBwcm90ZWN0ZWRfcmVzZXJ2ZQUAAAAEdW5pdAAAAAAQcHJvdGVjdGVkUmVzZXJ2ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAABVtYXliZVByb3RlY3RlZFJlc2VydmUCAAAAEG5vIHByb3RlY3RlZCByc3IBAAAAEWVuc3VyZU5vUHJvdGVjdGVkAAAAAQAAAAR1c2VyBAAAAANoYXMEAAAAByRtYXRjaDAFAAAAFW1heWJlUHJvdGVjdGVkUmVzZXJ2ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAACcGEFAAAAByRtYXRjaDAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAACcGEJAAEsAAAAAgIAAAAVcHJvdGVjdGVkX2NvbGxhdGVyYWxfBQAAAAR1c2VyBwcDBQAAAANoYXMJAAACAAAAAQIAAAA0ZGlzYWxsb3dlZDogY2FuJ3QgaGF2ZSByZWd1bGFyIHdoZW4gcHJvdGVjdGVkIGV4aXN0cwUAAAAEdW5pdAEAAAAJdXNlclBvd2VyAAAAAQAAAAR1c2VyBAAAABBwcm90ZWN0ZWREZXBvc2l0BAAAAAckbWF0Y2gwBQAAABVtYXliZVByb3RlY3RlZFJlc2VydmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0FkZHJlc3MEAAAAAnBhBQAAAAckbWF0Y2gwCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAAAnBhAgAAAAtib3Jyb3dQb3dlcgkABEwAAAACBQAAAAR1c2VyBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAoBAAAABGZvbGQAAAACAAAABnRvdGFscwAAAAFyBAAAAAskdDA1Mzc0NTQyMAUAAAAGdG90YWxzBAAAAAZ0b3RhbEQIBQAAAAskdDA1Mzc0NTQyMAAAAAJfMQQAAAAGdG90YWxCCAUAAAALJHQwNTM3NDU0MjAAAAACXzIEAAAAD251bWJlck9mQm9ycm93cwgFAAAACyR0MDUzNzQ1NDIwAAAAAl8zBAAAAANyc3IJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAFyAgAAAA9yc3IgYmFkIGFkZHJlc3MEAAAAAmNmCQEAAAAQY29sbGF0ZXJhbEZhY3RvcgAAAAEFAAAAA3JzcgQAAAACbHQJAQAAABRsaXF1aWRhdGlvblRocmVzaG9sZAAAAAEFAAAAA3JzcgQAAAALJHQwNTU3NDU2NTgJAQAAAAt1c2VyQmFsYW5jZQAAAAIFAAAAA3JzcgUAAAAEdXNlcgQAAAAFdG9rZW4IBQAAAAskdDA1NTc0NTY1OAAAAAJfMQQAAAAFYXNzZXQIBQAAAAskdDA1NTc0NTY1OAAAAAJfMgQAAAAKZGVwb3NpdFVzZAgFAAAACyR0MDU1NzQ1NjU4AAAAAl8zBAAAAARkZWJ0CAUAAAALJHQwNTU3NDU2NTgAAAACXzQEAAAAB2RlYnRVc2QIBQAAAAskdDA1NTc0NTY1OAAAAAJfNQQAAAAMYXNDb2xsYXRlcmFsCAUAAAALJHQwNTU3NDU2NTgAAAACXzYEAAAADHRvdGFsQm9ycm93cwkAAGQAAAACBQAAAA9udW1iZXJPZkJvcnJvd3MDCQAAZgAAAAIFAAAABGRlYnQAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAEAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QDBQAAAAxhc0NvbGxhdGVyYWwFAAAACmRlcG9zaXRVc2QAAAAAAAAAAAAEAAAACm92ZXJsYXBVc2QJAAGXAAAAAQkABEwAAAACBQAAAAdkZWJ0VXNkCQAETAAAAAIFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QFAAAAA25pbAQAAAANb3ZlcmxhcENoYXJnZQkBAAAADGZyYWN0aW9uQ2VpbAAAAAMFAAAACm92ZXJsYXBVc2QFAAAAFGFjY291bnRIZWFsdGhPdmVybGFwBQAAAAtmYWN0b3JzQmFzZQMJAABmAAAAAgUAAAAHZGVidFVzZAUAAAATZWZmZWN0aXZlRGVwb3NpdFVzZAkABRUAAAADBQAAAAZ0b3RhbEQJAABkAAAAAgkAAGQAAAACBQAAAAZ0b3RhbEIJAABrAAAAAwkAAGUAAAACBQAAAAdkZWJ0VXNkBQAAABNlZmZlY3RpdmVEZXBvc2l0VXNkBQAAAAtmYWN0b3JzQmFzZQUAAAACbHQFAAAADW92ZXJsYXBDaGFyZ2UFAAAADHRvdGFsQm9ycm93cwkABRUAAAADCQAAZAAAAAIFAAAABnRvdGFsRAkAAGsAAAADCQAAZQAAAAIFAAAAE2VmZmVjdGl2ZURlcG9zaXRVc2QFAAAAB2RlYnRVc2QFAAAAAmNmBQAAAAtmYWN0b3JzQmFzZQkAAGQAAAACBQAAAAZ0b3RhbEIFAAAADW92ZXJsYXBDaGFyZ2UFAAAADHRvdGFsQm9ycm93cwQAAAABcgoAAAAAAiRsBQAAAAhyZXNlcnZlcwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAJAAUVAAAAAwUAAAAQcHJvdGVjdGVkRGVwb3NpdAAAAAAAAAAAAAAAAAAAAAAAAAoBAAAABSRmMF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAABGZvbGQAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjBfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZHMgNwkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcDAwkAAGYAAAACBQAAABBwcm90ZWN0ZWREZXBvc2l0AAAAAAAAAAAACQAAZgAAAAIIBQAAAAFyAAAAAl8zAAAAAAAAAAACBwkAAAIAAAABAgAAADhjYW4ndCBoYXZlIG1vcmUgdGhhbiAyIGJvcnJvd3Mgd2l0aCBwcm90ZWN0ZWQgY29sbGF0ZXJhbAUAAAABcgEAAAANZ2V0VXNlckhlYWx0aAAAAAEAAAAHYWNjb3VudAQAAAALJHQwNjQ0NzY0OTgJAQAAAAZhc0ludDMAAAABCQEAAAAJdXNlclBvd2VyAAAAAQUAAAAHYWNjb3VudAQAAAACYnAIBQAAAAskdDA2NDQ3NjQ5OAAAAAJfMQQAAAADYnB1CAUAAAALJHQwNjQ0NzY0OTgAAAACXzIEAAAABmlnbm9yZQgFAAAACyR0MDY0NDc2NDk4AAAAAl8zCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAANicDoJAAGkAAAAAQUAAAACYnACAAAABiwgYnB1OgkAAaQAAAABBQAAAANicHUBAAAADXZhbGlkYXRlQWZ0ZXIAAAACAAAABHVzZXIAAAACb3AEAAAACyR0MDY2MDk2NjQwCQEAAAAJdXNlclBvd2VyAAAAAQUAAAAEdXNlcgQAAAACYnAIBQAAAAskdDA2NjA5NjY0MAAAAAJfMQQAAAADYnB1CAUAAAALJHQwNjYwOTY2NDAAAAACXzIEAAAACWFjY0hlYWx0aAkAAGkAAAACCQAAaAAAAAIJAABlAAAAAgUAAAACYnAFAAAAA2JwdQUAAAALZmFjdG9yc0Jhc2UFAAAAAmJwAwMJAAAAAAAAAgUAAAACYnAAAAAAAAAAAAAJAAAAAAAAAgUAAAADYnB1AAAAAAAAAAAABwUAAAADbmlsAwMJAAAAAAAAAgUAAAACYnAAAAAAAAAAAAAJAABmAAAAAgUAAAADYnB1AAAAAAAAAAAABwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgUAAAACb3ACAAAANSB0b28gbXVjaDogYnJlYWNoaW5nIGxpcXVpZGF0aW9uIHRocmVzaG9sZChicD0wLCBicHU9CQABpAAAAAEFAAAAA2JwdQMJAABmAAAAAgUAAAAWYWNjb3VudEhlYWx0aFRocmVzaG9sZAUAAAAJYWNjSGVhbHRoCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAACb3ACAAAALiB0b28gbXVjaDogYnJlYWNoaW5nIGxpcXVpZGF0aW9uIHRocmVzaG9sZChicD0JAAGkAAAAAQUAAAACYnACAAAABiwgYnB1PQkAAaQAAAABBQAAAANicHUCAAAACSwgaGVhbHRoPQkAAaQAAAABBQAAAAlhY2NIZWFsdGgCAAAAASkFAAAAA25pbAEAAAAMdXBkYXRlU3RyZWFtAAAABQAAAANyc3IAAAAGYWN0aW9uAAAABHVzZXIAAAAKdXNlckNoYW5nZQAAAAxzdHJlYW1DaGFuZ2UEAAAAByRtYXRjaDAFAAAAA21WRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAABYQUAAAAHJG1hdGNoMAkAA/wAAAAEBQAAAAFhAgAAAAhvbkFjdGlvbgkABEwAAAACBQAAAANyc3IJAARMAAAAAgUAAAAGYWN0aW9uCQAETAAAAAIFAAAABHVzZXIJAARMAAAAAgUAAAAKdXNlckNoYW5nZQkABEwAAAACBQAAAAxzdHJlYW1DaGFuZ2UFAAAAA25pbAUAAAADbmlsBQAAAAR1bml0AQAAAAptb3ZlU3RyZWFtAAAABQAAAANyc3IAAAAGYWN0aW9uAAAABGZyb20AAAAGc3RyaW5nAAAABmFtb3VudAQAAAAHJG1hdGNoMAUAAAADbVZEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdBZGRyZXNzBAAAAAFhBQAAAAckbWF0Y2gwCQAD/AAAAAQFAAAAAWECAAAABG1vdmUJAARMAAAAAgUAAAADcnNyCQAETAAAAAIFAAAABmFjdGlvbgkABEwAAAACBQAAAARmcm9tCQAETAAAAAIFAAAABnN0cmluZwkABEwAAAACBQAAAAZhbW91bnQFAAAAA25pbAUAAAADbmlsBQAAAAR1bml0AQAAABFzeW5jUmV3YXJkc0hlaWdodAAAAAEAAAADcnNyBAAAAAckbWF0Y2gwBQAAAANtVkQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0FkZHJlc3MEAAAAAWEFAAAAByRtYXRjaDAJAAP8AAAABAUAAAABYQIAAAAKc3luY0hlaWdodAkABEwAAAACBQAAAANyc3IFAAAAA25pbAUAAAADbmlsBQAAAAR1bml0AQAAAAxsb2NrT3JQYXlvdXQAAAADAAAACXJlY2lwaWVudAAAAAZhbW91bnQAAAAEbG9jawMJAQAAAAEhAAAAAQUAAAAEbG9jawkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAlyZWNpcGllbnQFAAAABmFtb3VudAUAAAAMdmlyZXNBc3NldElkBQAAAANuaWwEAAAABmRvTG9jawkAA/wAAAAEBQAAAAJkQwIAAAAHbG9ja0ZvcgkABEwAAAACCQAEJQAAAAEFAAAACXJlY2lwaWVudAkABEwAAAACAAAAAAAAAAABBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAADHZpcmVzQXNzZXRJZAUAAAAGYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAABmRvTG9jawUAAAAGZG9Mb2NrBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAAlkb0RlcG9zaXQAAAADAAAAAWkAAAADcnNyAAAAD3VzZUFzQ29sbGF0ZXJhbAQAAAAEdXNlcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAABmNoZWNrcwkBAAAAEWVuc3VyZU5vUHJvdGVjdGVkAAAAAQUAAAAEdXNlcgMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MEAAAAAnNoCQEAAAARc3luY1Jld2FyZHNIZWlnaHQAAAABBQAAAANyc3IDCQAAAAAAAAIFAAAAAnNoBQAAAAJzaAQAAAAGYWN0aW9uCQAD/AAAAAQJAQAAAAN2bFIAAAABBQAAAANyc3ICAAAACmRlcG9zaXRGb3IJAARMAAAAAgUAAAAEdXNlcgkABEwAAAACBQAAAA91c2VBc0NvbGxhdGVyYWwFAAAAA25pbAgFAAAAAWkAAAAIcGF5bWVudHMDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAGYWN0aW9uBAAAAANhbXQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAQAAAADcFJ3CQEAAAAMdXBkYXRlU3RyZWFtAAAABQUAAAADcnNyAgAAAAdkZXBvc2l0BQAAAAR1c2VyBQAAAANhbXQFAAAAA2FtdAMJAAAAAAAAAgUAAAADcFJ3BQAAAANwUncDCQEAAAABIQAAAAEFAAAAD3VzZUFzQ29sbGF0ZXJhbAkBAAAADXZhbGlkYXRlQWZ0ZXIAAAACBQAAAAR1c2VyAgAAAApkZXBvc2l0aW5nBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABZjbGFpbUFsbFJld2FyZHNGb3JVc2VyAAAAAQAAAAR1c2VyBAAAAAljbGFpbWVkRWIJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAADZWJSAgAAABBjbGFpbUViUmV3YXJkRm9yCQAETAAAAAIFAAAABHVzZXIJAARMAAAAAgD//////////wUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACWNsYWltZWRFYgUAAAAJY2xhaW1lZEViBAAAAA5yZXdhcmRSZXNlcnZlcwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAANY29uZmlnQWRkcmVzcwIAAAATcmV3YXJkYWJsZV9yZXNlcnZlcwIAAAAJbm8gc3RyaW5nAgAAAAF8CgEAAAAEZm9sZAAAAAIAAAADYWNjAAAAA3JzcgQAAAAHY2xhaW1lZAkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAAAJWRAIAAAAOY2xhaW1SZXdhcmRGb3IJAARMAAAAAgUAAAADcnNyCQAETAAAAAIFAAAABHVzZXIJAARMAAAAAgD//////////wUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB2NsYWltZWQFAAAAB2NsYWltZWQJAABkAAAAAgUAAAADYWNjBQAAAAdjbGFpbWVkCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQAAAAMY2xhaW1lZFRvdGFsCgAAAAACJGwFAAAADnJld2FyZFJlc2VydmVzCgAAAAACJHMJAAGQAAAAAQUAAAACJGwKAAAAAAUkYWNjMAAAAAAAAAAAAAoBAAAABSRmMF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAABGZvbGQAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjBfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZHMgNwkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcJAABkAAAAAgUAAAAMY2xhaW1lZFRvdGFsBQAAAAljbGFpbWVkRWIJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAA5tb3ZlQ29sbGF0ZXJhbAAAAAQAAAAEYWRkcgAAAAhhc3NldFN0cgAAAANyc3IAAAAKcmVzZXJ2ZVN0cgQAAAADYW10CQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAAEHByb3RlY3RlZFJlc2VydmUCAAAADndpdGhkcmF3VG9NYWluCQAETAAAAAIFAAAABGFkZHIJAARMAAAAAgUAAAAIYXNzZXRTdHIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAANhbXQFAAAAA2FtdAQAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAIYXNzZXRTdHICAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAACGFzc2V0U3RyBAAAAANkZXAJAAP8AAAABAUAAAADcnNyAgAAAApkZXBvc2l0Rm9yCQAETAAAAAIFAAAABGFkZHIJAARMAAAAAgYFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAHYXNzZXRJZAUAAAADYW10BQAAAANuaWwDCQAAAAAAAAIFAAAAA2RlcAUAAAADZGVwBAAAAARwcm9wCQEAAAAMdXBkYXRlU3RyZWFtAAAABQUAAAAKcmVzZXJ2ZVN0cgIAAAAHZGVwb3NpdAUAAAAEYWRkcgUAAAADYW10BQAAAANhbXQDCQAAAAAAAAIFAAAABHByb3AFAAAABHByb3AFAAAABHVuaXQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAAFHRyYW5zZmVyRGVidEludGVybmFsAAAABgAAAApsaXF1aWRhdG9yAAAADWJvcnJvd1Jlc2VydmUAAAARY29sbGF0ZXJhbFJlc2VydmUAAAAIYm9ycm93ZXIAAAATbGlxdWlkYXRlRGVidEFtb3VudAAAAA1mcm9tUHJvdGVjdGVkBAAAAANzaDEJAQAAABFzeW5jUmV3YXJkc0hlaWdodAAAAAEFAAAADWJvcnJvd1Jlc2VydmUDCQAAAAAAAAIFAAAAA3NoMQUAAAADc2gxBAAAAANzaDIJAQAAABFzeW5jUmV3YXJkc0hlaWdodAAAAAEFAAAAEWNvbGxhdGVyYWxSZXNlcnZlAwkAAAAAAAACBQAAAANzaDIFAAAAA3NoMgMJAABnAAAAAgAAAAAAAAAAAAUAAAATbGlxdWlkYXRlRGVidEFtb3VudAkAAAIAAAABAgAAACNjYW4ndCBsaXF1aWRhdGUgbm9uLXBvc2l0aXZlIGFtb3VudAMJAAAAAAAAAgUAAAARY29sbGF0ZXJhbFJlc2VydmUFAAAADWJvcnJvd1Jlc2VydmUJAAACAAAAAQIAAAAmY29sbGF0ZXJhbFJlc2VydmUgZXF1YWxzIGJvcnJvd1Jlc2VydmUDCQAAAAAAAAIFAAAACmxpcXVpZGF0b3IFAAAACGJvcnJvd2VyCQAAAgAAAAECAAAAFGNhbid0IGxpcXVpZGF0ZSBzZWxmBAAAAAskdDA5OTYwOTk5NQkBAAAACXVzZXJQb3dlcgAAAAEFAAAACGJvcnJvd2VyBAAAAAJicAgFAAAACyR0MDk5NjA5OTk1AAAAAl8xBAAAAANicHUIBQAAAAskdDA5OTYwOTk5NQAAAAJfMgMJAABmAAAAAgUAAAACYnAFAAAAA2JwdQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAgY2FuJ3QgbGlxdWlkYXRlIGhlYWx0aHkgdXNlcjogdT0FAAAACGJvcnJvd2VyAgAAAAUsIGJwPQkAAaQAAAABBQAAAAJicAIAAAAGLCBicHU9CQABpAAAAAEFAAAAA2JwdQQAAAACYnIJAQAAAAN2bFIAAAABBQAAAA1ib3Jyb3dSZXNlcnZlBAAAAAJjcgkBAAAAA3ZsUgAAAAEFAAAAEWNvbGxhdGVyYWxSZXNlcnZlBAAAAAtib3Jyb3dBc3NldAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAAmJyAgAAAAdhc3NldElkCQABLAAAAAICAAAAIm5vIGFzc2V0SWQgZmllbGQgaW4gYm9ycm93UmVzZXJ2ZSAFAAAADWJvcnJvd1Jlc2VydmUEAAAAD2NvbGxhdGVyYWxBc3NldAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAAmNyAgAAAAdhc3NldElkCQABLAAAAAICAAAAJm5vIGFzc2V0SWQgZmllbGQgaW4gY29sbGF0ZXJhbFJlc2VydmUgBQAAABFjb2xsYXRlcmFsUmVzZXJ2ZQQAAAAMaXNDb2xsYXRlcmFsCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAAmNyCQABLAAAAAIFAAAACGJvcnJvd2VyAgAAABBfdXNlQXNDb2xsYXRlcmFsBwMJAAAAAAAAAgUAAAAMaXNDb2xsYXRlcmFsBQAAAAxpc0NvbGxhdGVyYWwDAwkBAAAAASEAAAABBQAAAA1mcm9tUHJvdGVjdGVkCQEAAAABIQAAAAEFAAAADGlzQ29sbGF0ZXJhbAcJAAACAAAAAQIAAAAuY2FuJ3QgbGlxdWlkYXRlIGRlcG9zaXQgbm90IHVzZWQgYXMgY29sbGF0ZXJhbAQAAAANJHQwMTA2MzYxMDcyNgkBAAAAC3VzZXJCYWxhbmNlAAAAAgUAAAACYnIFAAAACGJvcnJvd2VyAwkAAAAAAAACBQAAAA0kdDAxMDYzNjEwNzI2BQAAAA0kdDAxMDYzNjEwNzI2BAAAAAt1c2VyRGVidFVzZAgFAAAADSR0MDEwNjM2MTA3MjYAAAACXzUEAAAACHVzZXJEZWJ0CAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfNAQAAAAMdXNlckFzc2V0VXNkCAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfMwQAAAAJdXNlckFzc2V0CAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfMgQAAAAGaWdub3JlCAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfMQMJAABnAAAAAgUAAAAJdXNlckFzc2V0BQAAAAh1c2VyRGVidAkAAAIAAAABAgAAAC9jYW4ndCBsaXF1aWRhdGUgZGVidCBvZiBhc3NldCBvZiBwb3NpdGl2ZSBzYWxkbwMJAABnAAAAAgAAAAAAAAAAAAUAAAATbGlxdWlkYXRlRGVidEFtb3VudAkAAAIAAAABAgAAACdjYW4ndCBsaXF1aWRhdGUgemVybyBvciBuZWdhdGl2ZSBhbW91bnQDCQAAZgAAAAIJAABoAAAAAgUAAAATbGlxdWlkYXRlRGVidEFtb3VudAAAAAAAAAAAAgkAAGUAAAACBQAAAAh1c2VyRGVidAUAAAAJdXNlckFzc2V0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAC5jYW4ndCBsaXF1aWRhdGUgbW9yZSB0aGFuIGhhbGYgb2Ygc2FsZG86IGRlYnQ9CQABpAAAAAEFAAAACHVzZXJEZWJ0AgAAAAosIGRlcG9zaXQ9CQABpAAAAAEFAAAACXVzZXJBc3NldAIAAAAYLCBsaXF1aWRhdGVEZWJ0QW1vdW50ID0gCQABpAAAAAEFAAAAE2xpcXVpZGF0ZURlYnRBbW91bnQEAAAADWNvbGxhdGVyYWxVc2QJAABrAAAAAwUAAAATbGlxdWlkYXRlRGVidEFtb3VudAUAAAALdXNlckRlYnRVc2QFAAAACHVzZXJEZWJ0BAAAAA1wZW5hbHRpemVkVXNkCQAAawAAAAMFAAAADWNvbGxhdGVyYWxVc2QJAABkAAAAAgUAAAALZmFjdG9yc0Jhc2UJAQAAABJsaXF1aWRhdGlvblBlbmFsdHkAAAABBQAAAAtib3Jyb3dBc3NldAUAAAALZmFjdG9yc0Jhc2UEAAAAAm1jAwUAAAANZnJvbVByb3RlY3RlZAkBAAAADm1vdmVDb2xsYXRlcmFsAAAABAUAAAAIYm9ycm93ZXIFAAAAD2NvbGxhdGVyYWxBc3NldAUAAAACY3IFAAAAEWNvbGxhdGVyYWxSZXNlcnZlBQAAAAR1bml0AwkAAAAAAAACBQAAAAJtYwUAAAACbWMEAAAAFXRyYW5zZmVycmVkQ29sbGF0ZXJhbAkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAAAJjcgIAAAASdHJhbnNmZXJBVG9rZW5zRm9yCQAETAAAAAIFAAAACGJvcnJvd2VyCQAETAAAAAIFAAAACmxpcXVpZGF0b3IJAARMAAAAAgUAAAANcGVuYWx0aXplZFVzZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAFXRyYW5zZmVycmVkQ29sbGF0ZXJhbAUAAAAVdHJhbnNmZXJyZWRDb2xsYXRlcmFsBAAAAARwUncxCQEAAAAKbW92ZVN0cmVhbQAAAAUFAAAAEWNvbGxhdGVyYWxSZXNlcnZlAgAAAAdkZXBvc2l0BQAAAAhib3Jyb3dlcgUAAAAKbGlxdWlkYXRvcgUAAAAVdHJhbnNmZXJyZWRDb2xsYXRlcmFsAwkAAAAAAAACBQAAAARwUncxBQAAAARwUncxBAAAAA90cmFuc2ZlcnJlZERlYnQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAACYnICAAAAD3RyYW5zZmVyRGVidEZvcgkABEwAAAACBQAAAAhib3Jyb3dlcgkABEwAAAACBQAAAApsaXF1aWRhdG9yCQAETAAAAAIFAAAAE2xpcXVpZGF0ZURlYnRBbW91bnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA90cmFuc2ZlcnJlZERlYnQFAAAAD3RyYW5zZmVycmVkRGVidAQAAAAEcFJ3MgkBAAAACm1vdmVTdHJlYW0AAAAFBQAAAA1ib3Jyb3dSZXNlcnZlAgAAAAZib3Jyb3cFAAAACGJvcnJvd2VyBQAAAApsaXF1aWRhdG9yBQAAAA90cmFuc2ZlcnJlZERlYnQDCQAAAAAAAAIFAAAABHBSdzIFAAAABHBSdzIEAAAAFWxpcXVpZGF0b3JIZWFsdGhDaGVjawMJAQAAAAhjb250YWlucwAAAAIFAAAAC2xpcXVpZGF0b3JzBQAAAApsaXF1aWRhdG9yBQAAAANuaWwJAQAAAA12YWxpZGF0ZUFmdGVyAAAAAgUAAAAKbGlxdWlkYXRvcgIAAAARdHJhbnNmZXJyaW5nIGRlYnQDCQAAAAAAAAIFAAAAFWxpcXVpZGF0b3JIZWFsdGhDaGVjawUAAAAVbGlxdWlkYXRvckhlYWx0aENoZWNrCQAFFAAAAAIFAAAAFWxpcXVpZGF0b3JIZWFsdGhDaGVjawUAAAAVdHJhbnNmZXJyZWRDb2xsYXRlcmFsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAVZm9yY2VDb2xsYXBzZUludGVybmFsAAAABAAAAApsaXF1aWRhdG9yAAAAA3JzcgAAAAhib3Jyb3dlcgAAAA1mcm9tUHJvdGVjdGVkBAAAAA5yZXNlcnZlQWRkcmVzcwkBAAAAA3ZsUgAAAAEFAAAAA3JzcgMJAAAAAAAAAgUAAAAOcmVzZXJ2ZUFkZHJlc3MFAAAADnJlc2VydmVBZGRyZXNzBAAAAAJzaAkBAAAAEXN5bmNSZXdhcmRzSGVpZ2h0AAAAAQUAAAADcnNyAwkAAAAAAAACBQAAAAJzaAUAAAACc2gDCQAAAAAAAAIFAAAACmxpcXVpZGF0b3IFAAAACGJvcnJvd2VyCQAAAgAAAAECAAAAJGNhbid0IGNvbGxhcHNlIHNlbGYgaW4gdGhpcyBmdW5jdGlvbgQAAAANJHQwMTIzODkxMjQyNAkBAAAACXVzZXJQb3dlcgAAAAEFAAAACGJvcnJvd2VyBAAAAAJicAgFAAAADSR0MDEyMzg5MTI0MjQAAAACXzEEAAAAA2JwdQgFAAAADSR0MDEyMzg5MTI0MjQAAAACXzIDCQAAZgAAAAIFAAAAAmJwBQAAAANicHUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJWNhbid0IGZvcmNlIGNvbGxhcHNlIGhlYWx0aHkgdXNlcjogdT0FAAAACGJvcnJvd2VyAgAAAAUsIGJwPQkAAaQAAAABBQAAAAJicAIAAAAGLCBicHU9CQABpAAAAAEFAAAAA2JwdQQAAAAFYXNzZXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA5yZXNlcnZlQWRkcmVzcwIAAAAHYXNzZXRJZAkAASwAAAACAgAAABhubyBhc3NldElkIGZpZWxkIGluIHJzciAFAAAAA3JzcgQAAAACbWMDBQAAAA1mcm9tUHJvdGVjdGVkCQEAAAAObW92ZUNvbGxhdGVyYWwAAAAEBQAAAAhib3Jyb3dlcgUAAAAFYXNzZXQFAAAADnJlc2VydmVBZGRyZXNzBQAAAANyc3IFAAAABHVuaXQDCQAAAAAAAAIFAAAAAm1jBQAAAAJtYwQAAAANJHQwMTI3ODgxMjg5NgkBAAAAC3VzZXJCYWxhbmNlAAAAAgUAAAAOcmVzZXJ2ZUFkZHJlc3MFAAAACGJvcnJvd2VyAwkAAAAAAAACBQAAAA0kdDAxMjc4ODEyODk2BQAAAA0kdDAxMjc4ODEyODk2BAAAAAt1c2VyRGVidFVzZAgFAAAADSR0MDEyNzg4MTI4OTYAAAACXzUEAAAACHVzZXJEZWJ0CAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfNAQAAAAMdXNlckFzc2V0VXNkCAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfMwQAAAAPYm9ycm93ZXJEZXBvc2l0CAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfMgQAAAAGaWdub3JlCAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfMQQAAAANcGVuYWx0aXplZFVzZAkAAGsAAAADCQABlwAAAAEJAARMAAAAAgUAAAAMdXNlckFzc2V0VXNkCQAETAAAAAIFAAAAC3VzZXJEZWJ0VXNkBQAAAANuaWwFAAAAD2NvbGxhcHNlUGVuYWx0eQUAAAALZmFjdG9yc0Jhc2UEAAAAEXRyYW5zZmVycmVkQXNzZXRzCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAADnJlc2VydmVBZGRyZXNzAgAAABJ0cmFuc2ZlckFUb2tlbnNGb3IJAARMAAAAAgUAAAAIYm9ycm93ZXIJAARMAAAAAgUAAAAKbGlxdWlkYXRvcgkABEwAAAACBQAAAA1wZW5hbHRpemVkVXNkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAARdHJhbnNmZXJyZWRBc3NldHMFAAAAEXRyYW5zZmVycmVkQXNzZXRzBAAAAARwUncxCQEAAAAKbW92ZVN0cmVhbQAAAAUFAAAAA3JzcgIAAAAHZGVwb3NpdAUAAAAIYm9ycm93ZXIFAAAACmxpcXVpZGF0b3IFAAAAEXRyYW5zZmVycmVkQXNzZXRzAwkAAAAAAAACBQAAAARwUncxBQAAAARwUncxBAAAAAljb2xsYXBzZWQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAAOcmVzZXJ2ZUFkZHJlc3MCAAAAC2NvbGxhcHNlRm9yCQAETAAAAAIFAAAACGJvcnJvd2VyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAJY29sbGFwc2VkBQAAAAljb2xsYXBzZWQEAAAABHBSdzIJAQAAAAx1cGRhdGVTdHJlYW0AAAAF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",
"chainId": 87,
"height": 3060480,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: Dmgi6FXUV4QaEQPFGxxa25dYa9m7YXitjLV5Eko4j5gw
Next: FYugRjNsDRPdozY7MMr1DqLPC4fLem6onpqJANtykDY6
Diff:
Old | New | | Differences |
---|
36 | 36 | | |
---|
37 | 37 | | func p (c) = { |
---|
38 | 38 | | let n = c |
---|
39 | | - | if ($isInstanceOf(n, "(Int, Int)")) |
---|
40 | | - | then { |
---|
41 | | - | let q = n |
---|
42 | | - | q |
---|
43 | | - | } |
---|
44 | | - | else { |
---|
45 | | - | let r = n |
---|
46 | | - | throw("wrong type, expected: Int2") |
---|
47 | | - | } |
---|
48 | | - | } |
---|
49 | | - | |
---|
50 | | - | |
---|
51 | | - | func s (c) = { |
---|
52 | | - | let n = c |
---|
53 | 39 | | if ($isInstanceOf(n, "(Int, Int, Int)")) |
---|
54 | 40 | | then { |
---|
55 | 41 | | let q = n |
---|
|
62 | 48 | | } |
---|
63 | 49 | | |
---|
64 | 50 | | |
---|
65 | | - | func t (c) = { |
---|
66 | | - | let n = c |
---|
67 | | - | if ($isInstanceOf(n, "(Int, Int, Int, Int)")) |
---|
68 | | - | then { |
---|
69 | | - | let q = n |
---|
70 | | - | q |
---|
71 | | - | } |
---|
72 | | - | else { |
---|
73 | | - | let r = n |
---|
74 | | - | throw("wrong type, expected: Int4") |
---|
75 | | - | } |
---|
76 | | - | } |
---|
77 | | - | |
---|
78 | | - | |
---|
79 | | - | func u (c) = { |
---|
80 | | - | let n = c |
---|
81 | | - | if ($isInstanceOf(n, "(Int, Int, Int, Int, Int)")) |
---|
82 | | - | then { |
---|
83 | | - | let q = n |
---|
84 | | - | q |
---|
85 | | - | } |
---|
86 | | - | else { |
---|
87 | | - | let r = n |
---|
88 | | - | throw("wrong type, expected: Int5") |
---|
89 | | - | } |
---|
90 | | - | } |
---|
91 | | - | |
---|
92 | | - | |
---|
93 | | - | func v (c) = { |
---|
| 51 | + | func s (c) = { |
---|
94 | 52 | | let n = c |
---|
95 | 53 | | if ($isInstanceOf(n, "(Int, Int, Int, Int, Int, Boolean)")) |
---|
96 | 54 | | then { |
---|
|
104 | 62 | | } |
---|
105 | 63 | | |
---|
106 | 64 | | |
---|
107 | | - | let w = "config" |
---|
| 65 | + | let t = "config" |
---|
108 | 66 | | |
---|
109 | | - | let x = "reserves" |
---|
| 67 | + | let u = "reserves" |
---|
110 | 68 | | |
---|
111 | | - | let y = "aTokenId" |
---|
| 69 | + | let v = "aTokenId" |
---|
112 | 70 | | |
---|
113 | | - | let z = "assetId" |
---|
| 71 | + | let w = "assetId" |
---|
114 | 72 | | |
---|
115 | | - | let A = "vires_distributor" |
---|
| 73 | + | let x = "vires_distributor" |
---|
116 | 74 | | |
---|
117 | | - | let B = addressFromStringValue(getStringValue(this, w)) |
---|
| 75 | + | let y = addressFromStringValue(getStringValue(this, t)) |
---|
118 | 76 | | |
---|
119 | | - | let C = valueOrErrorMessage(getString(B, "primary_reserves"), "no reserves registered") |
---|
| 77 | + | let z = valueOrErrorMessage(getString(y, "primary_reserves"), "no reserves registered") |
---|
120 | 78 | | |
---|
121 | | - | let D = split(C, "|") |
---|
| 79 | + | let A = split(z, "|") |
---|
122 | 80 | | |
---|
123 | | - | let E = addressFromStringValue(valueOrErrorMessage(getString(B, "eb_rewards"), "no eb_rewards contract in config")) |
---|
| 81 | + | let B = addressFromStringValue(valueOrErrorMessage(getString(y, "eb_rewards"), "no eb_rewards contract in config")) |
---|
124 | 82 | | |
---|
125 | | - | let F = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(B, "vires_minter"), "main: no viresMinter")), "invalid viresMinter") |
---|
| 83 | + | let C = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(y, "vires_minter"), "main: no viresMinter")), "invalid viresMinter") |
---|
126 | 84 | | |
---|
127 | | - | let G = getString(B, "vires_staker") |
---|
| 85 | + | let D = getString(y, "vires_staker") |
---|
128 | 86 | | |
---|
129 | | - | let H = addressFromStringValue(valueOrErrorMessage(G, "no vires_staker")) |
---|
| 87 | + | let E = addressFromStringValue(valueOrErrorMessage(D, "no vires_staker")) |
---|
130 | 88 | | |
---|
131 | | - | let I = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(B, "dividends_contract"), "no dividends_contract")), "invalid dividends_contract") |
---|
| 89 | + | let F = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(y, "dividends_contract"), "no dividends_contract")), "invalid dividends_contract") |
---|
132 | 90 | | |
---|
133 | | - | let J = { |
---|
134 | | - | let n = getString(B, A) |
---|
| 91 | + | let G = { |
---|
| 92 | + | let n = getString(y, x) |
---|
135 | 93 | | if ($isInstanceOf(n, "String")) |
---|
136 | 94 | | then { |
---|
137 | | - | let K = n |
---|
138 | | - | addressFromStringValue(K) |
---|
| 95 | + | let H = n |
---|
| 96 | + | addressFromStringValue(H) |
---|
139 | 97 | | } |
---|
140 | 98 | | else unit |
---|
141 | 99 | | } |
---|
142 | 100 | | |
---|
143 | | - | let L = valueOrErrorMessage(J, "no distributor to claim rewards") |
---|
| 101 | + | let I = valueOrErrorMessage(G, "no distributor to claim rewards") |
---|
144 | 102 | | |
---|
145 | | - | let M = getString(F, "assetId") |
---|
| 103 | + | let J = getString(C, "assetId") |
---|
146 | 104 | | |
---|
147 | | - | let N = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(M, "vires assetId not found")), "invalid vires assetId") |
---|
| 105 | + | let K = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(J, "vires assetId not found")), "invalid vires assetId") |
---|
148 | 106 | | |
---|
149 | | - | func O (P) = if ((size(P.payments) == 0)) |
---|
| 107 | + | func L (M) = if ((size(M.payments) == 0)) |
---|
150 | 108 | | then 0 |
---|
151 | | - | else if ((P.payments[0].assetId != N)) |
---|
| 109 | + | else if ((M.payments[0].assetId != K)) |
---|
152 | 110 | | then throw("not vires") |
---|
153 | | - | else P.payments[0].amount |
---|
| 111 | + | else M.payments[0].amount |
---|
154 | 112 | | |
---|
155 | 113 | | |
---|
156 | | - | func Q (R) = valueOrErrorMessage(getString(R, z), "no assetId in reserve") |
---|
| 114 | + | func N (O) = valueOrErrorMessage(getString(O, w), "no assetId in rsr") |
---|
157 | 115 | | |
---|
158 | 116 | | |
---|
159 | | - | func S (R) = valueOrErrorMessage(getInteger(B, (Q(R) + "_CollateralFactor")), "no CollateralFactor in config") |
---|
| 117 | + | func P (O) = valueOrErrorMessage(getInteger(y, (N(O) + "_CollateralFactor")), "no CollateralFactor in config") |
---|
160 | 118 | | |
---|
161 | 119 | | |
---|
162 | | - | func T (R) = valueOrErrorMessage(getInteger(B, (Q(R) + "_LiquidationThreshold")), "no LiquidationThreshold in config") |
---|
| 120 | + | func Q (O) = valueOrErrorMessage(getInteger(y, (N(O) + "_LiquidationThreshold")), "no LiquidationThreshold in config") |
---|
163 | 121 | | |
---|
164 | 122 | | |
---|
165 | | - | func U (j) = valueOrErrorMessage(getInteger(B, (j + "_LiquidationPenalty")), "no LiquidationPenalty in config") |
---|
| 123 | + | func R (j) = valueOrErrorMessage(getInteger(y, (j + "_LiquidationPenalty")), "no LiquidationPenalty in config") |
---|
166 | 124 | | |
---|
167 | 125 | | |
---|
168 | | - | let V = valueOrErrorMessage(getInteger(B, "account_health_threshold"), "no account_health_threshold") |
---|
| 126 | + | let S = valueOrErrorMessage(getInteger(y, "account_health_threshold"), "no account_health_threshold") |
---|
169 | 127 | | |
---|
170 | | - | let W = valueOrErrorMessage(getInteger(B, "account_health_overlap"), "no account_health_overlap") |
---|
| 128 | + | let T = valueOrErrorMessage(getInteger(y, "account_health_overlap"), "no account_health_overlap") |
---|
171 | 129 | | |
---|
172 | | - | let X = valueOrErrorMessage(getInteger(B, "collapse_penalty"), "no collapse_penalty") |
---|
| 130 | + | let U = valueOrErrorMessage(getInteger(y, "collapse_penalty"), "no collapse_penalty") |
---|
173 | 131 | | |
---|
174 | | - | let Y = valueOrElse(getString(B, "liquidators"), "") |
---|
| 132 | + | let V = valueOrElse(getString(y, "liquidators"), "") |
---|
175 | 133 | | |
---|
176 | | - | func Z (aa,c) = { |
---|
177 | | - | func ab (ac,ad) = { |
---|
178 | | - | let n = ac |
---|
| 134 | + | func W (X,c) = { |
---|
| 135 | + | func Y (Z,aa) = { |
---|
| 136 | + | let n = Z |
---|
179 | 137 | | if ($isInstanceOf(n, "Address")) |
---|
180 | 138 | | then { |
---|
181 | | - | let ae = n |
---|
182 | | - | ae |
---|
| 139 | + | let ab = n |
---|
| 140 | + | ab |
---|
183 | 141 | | } |
---|
184 | 142 | | else { |
---|
185 | | - | let R = valueOrErrorMessage(addressFromString(ad), "reserve bad address") |
---|
186 | | - | if ((valueOrErrorMessage(getString(R, aa), ("reserve has no " + aa)) == c)) |
---|
187 | | - | then R |
---|
| 143 | + | let O = valueOrErrorMessage(addressFromString(aa), "rsr bad address") |
---|
| 144 | + | if ((valueOrErrorMessage(getString(O, X), ("rsr has no " + X)) == c)) |
---|
| 145 | + | then O |
---|
188 | 146 | | else unit |
---|
189 | 147 | | } |
---|
190 | 148 | | } |
---|
191 | 149 | | |
---|
192 | 150 | | let n = { |
---|
193 | | - | let af = D |
---|
194 | | - | let ag = size(af) |
---|
195 | | - | let ah = unit |
---|
196 | | - | func ai (aj,ak) = if ((ak >= ag)) |
---|
197 | | - | then aj |
---|
198 | | - | else ab(aj, af[ak]) |
---|
| 151 | + | let ac = A |
---|
| 152 | + | let ad = size(ac) |
---|
| 153 | + | let ae = unit |
---|
| 154 | + | func af (ag,ah) = if ((ah >= ad)) |
---|
| 155 | + | then ag |
---|
| 156 | + | else Y(ag, ac[ah]) |
---|
199 | 157 | | |
---|
200 | | - | func al (aj,ak) = if ((ak >= ag)) |
---|
201 | | - | then aj |
---|
| 158 | + | func ai (ag,ah) = if ((ah >= ad)) |
---|
| 159 | + | then ag |
---|
202 | 160 | | else throw("List size exceeds 7") |
---|
203 | 161 | | |
---|
204 | | - | al(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
| 162 | + | ai(af(af(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
205 | 163 | | } |
---|
206 | 164 | | if ($isInstanceOf(n, "Address")) |
---|
207 | 165 | | then { |
---|
208 | | - | let ae = n |
---|
209 | | - | ae |
---|
| 166 | + | let ab = n |
---|
| 167 | + | ab |
---|
210 | 168 | | } |
---|
211 | | - | else throw(("unknown " + aa)) |
---|
| 169 | + | else throw(("unknown " + X)) |
---|
212 | 170 | | } |
---|
213 | 171 | | |
---|
214 | 172 | | |
---|
215 | | - | func am (ad) = if (contains(C, ad)) |
---|
216 | | - | then valueOrErrorMessage(addressFromString(ad), "main: bad reserve") |
---|
217 | | - | else throw(("unknown reserve:" + ad)) |
---|
| 173 | + | func aj (aa) = if (contains(z, aa)) |
---|
| 174 | + | then valueOrErrorMessage(addressFromString(aa), "main: bad rsr") |
---|
| 175 | + | else throw(("unknown rsr:" + aa)) |
---|
218 | 176 | | |
---|
219 | 177 | | |
---|
220 | | - | func an (R,ao) = v(invoke(R, "userBalance", [ao], nil)) |
---|
| 178 | + | func ak (O,al) = s(invoke(O, "userBalance", [al], nil)) |
---|
221 | 179 | | |
---|
222 | 180 | | |
---|
223 | | - | let ap = { |
---|
224 | | - | let n = getString(B, "protected_reserve") |
---|
| 181 | + | let am = { |
---|
| 182 | + | let n = getString(y, "protected_reserve") |
---|
225 | 183 | | if ($isInstanceOf(n, "String")) |
---|
226 | 184 | | then { |
---|
227 | | - | let aq = n |
---|
228 | | - | valueOrErrorMessage(addressFromString(aq), "bad protected_reserve") |
---|
| 185 | + | let an = n |
---|
| 186 | + | valueOrErrorMessage(addressFromString(an), "bad protected_reserve") |
---|
229 | 187 | | } |
---|
230 | 188 | | else unit |
---|
231 | 189 | | } |
---|
232 | 190 | | |
---|
233 | | - | let ar = valueOrErrorMessage(ap, "no protected reserve") |
---|
| 191 | + | let ao = valueOrErrorMessage(am, "no protected rsr") |
---|
234 | 192 | | |
---|
235 | | - | func as (ao) = { |
---|
236 | | - | let at = { |
---|
237 | | - | let n = ap |
---|
| 193 | + | func ap (al) = { |
---|
| 194 | + | let aq = { |
---|
| 195 | + | let n = am |
---|
238 | 196 | | if ($isInstanceOf(n, "Address")) |
---|
239 | 197 | | then { |
---|
240 | | - | let au = n |
---|
241 | | - | valueOrElse(getBoolean(au, ("protected_collateral_" + ao)), false) |
---|
| 198 | + | let ar = n |
---|
| 199 | + | valueOrElse(getBoolean(ar, ("protected_collateral_" + al)), false) |
---|
242 | 200 | | } |
---|
243 | 201 | | else false |
---|
244 | 202 | | } |
---|
245 | | - | if (at) |
---|
| 203 | + | if (aq) |
---|
246 | 204 | | then throw("disallowed: can't have regular when protected exists") |
---|
247 | 205 | | else unit |
---|
248 | 206 | | } |
---|
249 | 207 | | |
---|
250 | 208 | | |
---|
251 | | - | func av (ao) = { |
---|
252 | | - | let aw = { |
---|
253 | | - | let n = ap |
---|
| 209 | + | func as (al) = { |
---|
| 210 | + | let at = { |
---|
| 211 | + | let n = am |
---|
254 | 212 | | if ($isInstanceOf(n, "Address")) |
---|
255 | 213 | | then { |
---|
256 | | - | let au = n |
---|
257 | | - | m(invoke(au, "borrowPower", [ao], nil)) |
---|
| 214 | + | let ar = n |
---|
| 215 | + | m(invoke(ar, "borrowPower", [al], nil)) |
---|
258 | 216 | | } |
---|
259 | 217 | | else 0 |
---|
260 | 218 | | } |
---|
261 | | - | func ab (ax,ad) = { |
---|
262 | | - | let ay = ax |
---|
263 | | - | let az = ay._1 |
---|
264 | | - | let aA = ay._2 |
---|
265 | | - | let aB = ay._3 |
---|
266 | | - | let R = valueOrErrorMessage(addressFromString(ad), "reserve bad address") |
---|
267 | | - | let aC = S(R) |
---|
268 | | - | let aD = T(R) |
---|
269 | | - | let aE = an(R, ao) |
---|
270 | | - | let aF = aE._1 |
---|
271 | | - | let aG = aE._2 |
---|
272 | | - | let aH = aE._3 |
---|
273 | | - | let aI = aE._4 |
---|
274 | | - | let aJ = aE._5 |
---|
275 | | - | let aK = aE._6 |
---|
276 | | - | let aL = (aB + (if ((aI > 0)) |
---|
| 219 | + | func Y (au,aa) = { |
---|
| 220 | + | let av = au |
---|
| 221 | + | let aw = av._1 |
---|
| 222 | + | let ax = av._2 |
---|
| 223 | + | let ay = av._3 |
---|
| 224 | + | let O = valueOrErrorMessage(addressFromString(aa), "rsr bad address") |
---|
| 225 | + | let az = P(O) |
---|
| 226 | + | let aA = Q(O) |
---|
| 227 | + | let aB = ak(O, al) |
---|
| 228 | + | let aC = aB._1 |
---|
| 229 | + | let aD = aB._2 |
---|
| 230 | + | let aE = aB._3 |
---|
| 231 | + | let aF = aB._4 |
---|
| 232 | + | let aG = aB._5 |
---|
| 233 | + | let aH = aB._6 |
---|
| 234 | + | let aI = (ay + (if ((aF > 0)) |
---|
277 | 235 | | then 1 |
---|
278 | 236 | | else 0)) |
---|
279 | | - | let aM = if (aK) |
---|
280 | | - | then aH |
---|
| 237 | + | let aJ = if (aH) |
---|
| 238 | + | then aE |
---|
281 | 239 | | else 0 |
---|
282 | | - | let aN = min([aJ, aM]) |
---|
283 | | - | let aO = b(aN, W, a) |
---|
284 | | - | if ((aJ > aM)) |
---|
285 | | - | then $Tuple3(az, ((aA + fraction((aJ - aM), a, aD)) + aO), aL) |
---|
286 | | - | else $Tuple3((az + fraction((aM - aJ), aC, a)), (aA + aO), aL) |
---|
| 240 | + | let aK = min([aG, aJ]) |
---|
| 241 | + | let aL = b(aK, T, a) |
---|
| 242 | + | if ((aG > aJ)) |
---|
| 243 | + | then $Tuple3(aw, ((ax + fraction((aG - aJ), a, aA)) + aL), aI) |
---|
| 244 | + | else $Tuple3((aw + fraction((aJ - aG), az, a)), (ax + aL), aI) |
---|
287 | 245 | | } |
---|
288 | 246 | | |
---|
289 | | - | let ad = { |
---|
290 | | - | let af = D |
---|
291 | | - | let ag = size(af) |
---|
292 | | - | let ah = $Tuple3(aw, 0, 0) |
---|
293 | | - | func ai (aj,ak) = if ((ak >= ag)) |
---|
294 | | - | then aj |
---|
295 | | - | else ab(aj, af[ak]) |
---|
| 247 | + | let aa = { |
---|
| 248 | + | let ac = A |
---|
| 249 | + | let ad = size(ac) |
---|
| 250 | + | let ae = $Tuple3(at, 0, 0) |
---|
| 251 | + | func af (ag,ah) = if ((ah >= ad)) |
---|
| 252 | + | then ag |
---|
| 253 | + | else Y(ag, ac[ah]) |
---|
296 | 254 | | |
---|
297 | | - | func al (aj,ak) = if ((ak >= ag)) |
---|
298 | | - | then aj |
---|
| 255 | + | func ai (ag,ah) = if ((ah >= ad)) |
---|
| 256 | + | then ag |
---|
299 | 257 | | else throw("List size exceeds 7") |
---|
300 | 258 | | |
---|
301 | | - | al(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
| 259 | + | ai(af(af(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
302 | 260 | | } |
---|
303 | | - | if (if ((aw > 0)) |
---|
304 | | - | then (ad._3 > 2) |
---|
| 261 | + | if (if ((at > 0)) |
---|
| 262 | + | then (aa._3 > 2) |
---|
305 | 263 | | else false) |
---|
306 | 264 | | then throw("can't have more than 2 borrows with protected collateral") |
---|
307 | | - | else ad |
---|
| 265 | + | else aa |
---|
308 | 266 | | } |
---|
309 | 267 | | |
---|
310 | 268 | | |
---|
311 | | - | func aP (aQ) = { |
---|
312 | | - | let aR = s(av(aQ)) |
---|
313 | | - | let aS = aR._1 |
---|
314 | | - | let aT = aR._2 |
---|
315 | | - | let aU = aR._3 |
---|
316 | | - | ((("bp:" + toString(aS)) + ", bpu:") + toString(aT)) |
---|
| 269 | + | func aM (aN) = { |
---|
| 270 | + | let aO = p(as(aN)) |
---|
| 271 | + | let aP = aO._1 |
---|
| 272 | + | let aQ = aO._2 |
---|
| 273 | + | let aR = aO._3 |
---|
| 274 | + | ((("bp:" + toString(aP)) + ", bpu:") + toString(aQ)) |
---|
317 | 275 | | } |
---|
318 | 276 | | |
---|
319 | 277 | | |
---|
320 | | - | func aV (ao,aW) = { |
---|
321 | | - | let aX = av(ao) |
---|
322 | | - | let aS = aX._1 |
---|
323 | | - | let aT = aX._2 |
---|
324 | | - | let aY = (((aS - aT) * a) / aS) |
---|
325 | | - | if (if ((aS == 0)) |
---|
326 | | - | then (aT == 0) |
---|
| 278 | + | func aS (al,aT) = { |
---|
| 279 | + | let aU = as(al) |
---|
| 280 | + | let aP = aU._1 |
---|
| 281 | + | let aQ = aU._2 |
---|
| 282 | + | let aV = (((aP - aQ) * a) / aP) |
---|
| 283 | + | if (if ((aP == 0)) |
---|
| 284 | + | then (aQ == 0) |
---|
327 | 285 | | else false) |
---|
328 | 286 | | then nil |
---|
329 | | - | else if (if ((aS == 0)) |
---|
330 | | - | then (aT > 0) |
---|
| 287 | + | else if (if ((aP == 0)) |
---|
| 288 | + | then (aQ > 0) |
---|
331 | 289 | | else false) |
---|
332 | | - | then throw(((aW + " too much: breaching liquidation threshold(bp=0, bpu=") + toString(aT))) |
---|
333 | | - | else if ((V > aY)) |
---|
334 | | - | then throw((((((((aW + " too much: breaching liquidation threshold(bp=") + toString(aS)) + ", bpu=") + toString(aT)) + ", health=") + toString(aY)) + ")")) |
---|
| 290 | + | then throw(((aT + " too much: breaching liquidation threshold(bp=0, bpu=") + toString(aQ))) |
---|
| 291 | + | else if ((S > aV)) |
---|
| 292 | + | then throw((((((((aT + " too much: breaching liquidation threshold(bp=") + toString(aP)) + ", bpu=") + toString(aQ)) + ", health=") + toString(aV)) + ")")) |
---|
335 | 293 | | else nil |
---|
336 | 294 | | } |
---|
337 | 295 | | |
---|
338 | 296 | | |
---|
339 | | - | func aZ (R,ba,ao,bb,bc) = { |
---|
340 | | - | let n = J |
---|
| 297 | + | func aW (O,aX,al,aY,aZ) = { |
---|
| 298 | + | let n = G |
---|
341 | 299 | | if ($isInstanceOf(n, "Address")) |
---|
342 | 300 | | then { |
---|
343 | | - | let ac = n |
---|
344 | | - | invoke(ac, "onAction", [R, ba, ao, bb, bc], nil) |
---|
| 301 | + | let Z = n |
---|
| 302 | + | invoke(Z, "onAction", [O, aX, al, aY, aZ], nil) |
---|
345 | 303 | | } |
---|
346 | 304 | | else unit |
---|
347 | 305 | | } |
---|
348 | 306 | | |
---|
349 | 307 | | |
---|
350 | | - | func bd (R,ba,be,bf,bg) = { |
---|
351 | | - | let n = J |
---|
| 308 | + | func ba (O,aX,bb,bc,bd) = { |
---|
| 309 | + | let n = G |
---|
352 | 310 | | if ($isInstanceOf(n, "Address")) |
---|
353 | 311 | | then { |
---|
354 | | - | let ac = n |
---|
355 | | - | invoke(ac, "move", [R, ba, be, bf, bg], nil) |
---|
| 312 | + | let Z = n |
---|
| 313 | + | invoke(Z, "move", [O, aX, bb, bc, bd], nil) |
---|
356 | 314 | | } |
---|
357 | 315 | | else unit |
---|
358 | 316 | | } |
---|
359 | 317 | | |
---|
360 | 318 | | |
---|
361 | | - | func bh (R) = { |
---|
362 | | - | let n = J |
---|
| 319 | + | func be (O) = { |
---|
| 320 | + | let n = G |
---|
363 | 321 | | if ($isInstanceOf(n, "Address")) |
---|
364 | 322 | | then { |
---|
365 | | - | let ac = n |
---|
366 | | - | invoke(ac, "syncHeight", [R], nil) |
---|
| 323 | + | let Z = n |
---|
| 324 | + | invoke(Z, "syncHeight", [O], nil) |
---|
367 | 325 | | } |
---|
368 | 326 | | else unit |
---|
369 | 327 | | } |
---|
370 | 328 | | |
---|
371 | 329 | | |
---|
372 | | - | func bi (bj,bg,bk) = if (!(bk)) |
---|
373 | | - | then [ScriptTransfer(bj, bg, N)] |
---|
| 330 | + | func bf (bg,bd,bh) = if (!(bh)) |
---|
| 331 | + | then [ScriptTransfer(bg, bd, K)] |
---|
374 | 332 | | else { |
---|
375 | | - | let bl = invoke(I, "lockFor", [toString(bj), 1], [AttachedPayment(N, bg)]) |
---|
376 | | - | if ((bl == bl)) |
---|
| 333 | + | let bi = invoke(F, "lockFor", [toString(bg), 1], [AttachedPayment(K, bd)]) |
---|
| 334 | + | if ((bi == bi)) |
---|
377 | 335 | | then nil |
---|
378 | 336 | | else throw("Strict value is not equal to itself.") |
---|
379 | 337 | | } |
---|
380 | 338 | | |
---|
381 | 339 | | |
---|
382 | | - | func bm (P,R,bn) = { |
---|
383 | | - | let ao = toString(P.caller) |
---|
384 | | - | let bo = as(ao) |
---|
385 | | - | if ((bo == bo)) |
---|
| 340 | + | func bj (M,O,bk) = { |
---|
| 341 | + | let al = toString(M.caller) |
---|
| 342 | + | let bl = ap(al) |
---|
| 343 | + | if ((bl == bl)) |
---|
386 | 344 | | then { |
---|
387 | | - | let bp = bh(R) |
---|
388 | | - | if ((bp == bp)) |
---|
| 345 | + | let bm = be(O) |
---|
| 346 | + | if ((bm == bm)) |
---|
389 | 347 | | then { |
---|
390 | | - | let ba = invoke(am(R), "depositFor", [ao, bn], P.payments) |
---|
391 | | - | if ((ba == ba)) |
---|
| 348 | + | let aX = invoke(aj(O), "depositFor", [al, bk], M.payments) |
---|
| 349 | + | if ((aX == aX)) |
---|
392 | 350 | | then { |
---|
393 | | - | let bq = P.payments[0].amount |
---|
394 | | - | let br = aZ(R, "deposit", ao, bq, bq) |
---|
395 | | - | if ((br == br)) |
---|
396 | | - | then if (!(bn)) |
---|
397 | | - | then aV(ao, "depositing") |
---|
| 351 | + | let bn = M.payments[0].amount |
---|
| 352 | + | let bo = aW(O, "deposit", al, bn, bn) |
---|
| 353 | + | if ((bo == bo)) |
---|
| 354 | + | then if (!(bk)) |
---|
| 355 | + | then aS(al, "depositing") |
---|
398 | 356 | | else nil |
---|
399 | 357 | | else throw("Strict value is not equal to itself.") |
---|
400 | 358 | | } |
---|
|
406 | 364 | | } |
---|
407 | 365 | | |
---|
408 | 366 | | |
---|
409 | | - | func bs (ao) = { |
---|
410 | | - | let bt = m(invoke(E, "claimEbRewardFor", [ao, -1], nil)) |
---|
411 | | - | if ((bt == bt)) |
---|
| 367 | + | func bp (al) = { |
---|
| 368 | + | let bq = m(invoke(B, "claimEbRewardFor", [al, -1], nil)) |
---|
| 369 | + | if ((bq == bq)) |
---|
412 | 370 | | then { |
---|
413 | | - | let bu = split(valueOrErrorMessage(getString(B, "rewardable_reserves"), "no string"), "|") |
---|
414 | | - | func ab (bv,R) = { |
---|
415 | | - | let bw = m(invoke(L, "claimRewardFor", [R, ao, -1], nil)) |
---|
416 | | - | if ((bw == bw)) |
---|
417 | | - | then (bv + bw) |
---|
| 371 | + | let br = split(valueOrErrorMessage(getString(y, "rewardable_reserves"), "no string"), "|") |
---|
| 372 | + | func Y (bs,O) = { |
---|
| 373 | + | let bt = m(invoke(I, "claimRewardFor", [O, al, -1], nil)) |
---|
| 374 | + | if ((bt == bt)) |
---|
| 375 | + | then (bs + bt) |
---|
418 | 376 | | else throw("Strict value is not equal to itself.") |
---|
419 | 377 | | } |
---|
420 | 378 | | |
---|
421 | | - | let bx = { |
---|
422 | | - | let af = bu |
---|
423 | | - | let ag = size(af) |
---|
424 | | - | let ah = 0 |
---|
425 | | - | func ai (aj,ak) = if ((ak >= ag)) |
---|
426 | | - | then aj |
---|
427 | | - | else ab(aj, af[ak]) |
---|
| 379 | + | let bu = { |
---|
| 380 | + | let ac = br |
---|
| 381 | + | let ad = size(ac) |
---|
| 382 | + | let ae = 0 |
---|
| 383 | + | func af (ag,ah) = if ((ah >= ad)) |
---|
| 384 | + | then ag |
---|
| 385 | + | else Y(ag, ac[ah]) |
---|
428 | 386 | | |
---|
429 | | - | func al (aj,ak) = if ((ak >= ag)) |
---|
430 | | - | then aj |
---|
| 387 | + | func ai (ag,ah) = if ((ah >= ad)) |
---|
| 388 | + | then ag |
---|
431 | 389 | | else throw("List size exceeds 7") |
---|
432 | 390 | | |
---|
433 | | - | al(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
| 391 | + | ai(af(af(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
434 | 392 | | } |
---|
435 | | - | (bx + bt) |
---|
| 393 | + | (bu + bq) |
---|
436 | 394 | | } |
---|
437 | 395 | | else throw("Strict value is not equal to itself.") |
---|
438 | 396 | | } |
---|
439 | 397 | | |
---|
440 | 398 | | |
---|
441 | | - | func by (bz,bA,R,bB) = { |
---|
442 | | - | let bq = m(invoke(ar, "withdrawToMain", [bz, bA], nil)) |
---|
443 | | - | if ((bq == bq)) |
---|
| 399 | + | func bv (bw,bx,O,by) = { |
---|
| 400 | + | let bn = m(invoke(ao, "withdrawToMain", [bw, bx], nil)) |
---|
| 401 | + | if ((bn == bn)) |
---|
444 | 402 | | then { |
---|
445 | | - | let j = if ((bA == "WAVES")) |
---|
| 403 | + | let j = if ((bx == "WAVES")) |
---|
446 | 404 | | then unit |
---|
447 | | - | else fromBase58String(bA) |
---|
448 | | - | let bC = invoke(R, "depositFor", [bz, true], [AttachedPayment(j, bq)]) |
---|
449 | | - | if ((bC == bC)) |
---|
| 405 | + | else fromBase58String(bx) |
---|
| 406 | + | let bz = invoke(O, "depositFor", [bw, true], [AttachedPayment(j, bn)]) |
---|
| 407 | + | if ((bz == bz)) |
---|
450 | 408 | | then { |
---|
451 | | - | let bD = aZ(bB, "deposit", bz, bq, bq) |
---|
452 | | - | if ((bD == bD)) |
---|
| 409 | + | let bA = aW(by, "deposit", bw, bn, bn) |
---|
| 410 | + | if ((bA == bA)) |
---|
453 | 411 | | then unit |
---|
454 | 412 | | else throw("Strict value is not equal to itself.") |
---|
455 | 413 | | } |
---|
|
459 | 417 | | } |
---|
460 | 418 | | |
---|
461 | 419 | | |
---|
462 | | - | func bE (bF,bG,bH,bI,bJ,bK) = { |
---|
463 | | - | let bL = bh(bG) |
---|
464 | | - | if ((bL == bL)) |
---|
| 420 | + | func bB (bC,bD,bE,bF,bG,bH) = { |
---|
| 421 | + | let bI = be(bD) |
---|
| 422 | + | if ((bI == bI)) |
---|
465 | 423 | | then { |
---|
466 | | - | let bM = bh(bH) |
---|
467 | | - | if ((bM == bM)) |
---|
468 | | - | then if ((0 >= bJ)) |
---|
| 424 | + | let bJ = be(bE) |
---|
| 425 | + | if ((bJ == bJ)) |
---|
| 426 | + | then if ((0 >= bG)) |
---|
469 | 427 | | then throw("can't liquidate non-positive amount") |
---|
470 | | - | else if ((bH == bG)) |
---|
| 428 | + | else if ((bE == bD)) |
---|
471 | 429 | | then throw("collateralReserve equals borrowReserve") |
---|
472 | | - | else if ((bF == bI)) |
---|
| 430 | + | else if ((bC == bF)) |
---|
473 | 431 | | then throw("can't liquidate self") |
---|
474 | 432 | | else { |
---|
475 | | - | let bN = av(bI) |
---|
476 | | - | let aS = bN._1 |
---|
477 | | - | let aT = bN._2 |
---|
478 | | - | if ((aS > aT)) |
---|
479 | | - | then throw(((((("can't liquidate healthy user: u=" + bI) + ", bp=") + toString(aS)) + ", bpu=") + toString(aT))) |
---|
| 433 | + | let bK = as(bF) |
---|
| 434 | + | let aP = bK._1 |
---|
| 435 | + | let aQ = bK._2 |
---|
| 436 | + | if ((aP > aQ)) |
---|
| 437 | + | then throw(((((("can't liquidate healthy user: u=" + bF) + ", bp=") + toString(aP)) + ", bpu=") + toString(aQ))) |
---|
480 | 438 | | else { |
---|
481 | | - | let bO = am(bG) |
---|
482 | | - | let bP = am(bH) |
---|
483 | | - | let bQ = valueOrErrorMessage(getString(bO, "assetId"), ("no assetId field in borrowReserve " + bG)) |
---|
484 | | - | let bR = valueOrErrorMessage(getString(bP, "assetId"), ("no assetId field in collateralReserve " + bH)) |
---|
485 | | - | let bS = valueOrElse(getBoolean(bP, (bI + "_useAsCollateral")), false) |
---|
486 | | - | if ((bS == bS)) |
---|
487 | | - | then if (if (!(bK)) |
---|
488 | | - | then !(bS) |
---|
| 439 | + | let bL = aj(bD) |
---|
| 440 | + | let bM = aj(bE) |
---|
| 441 | + | let bN = valueOrErrorMessage(getString(bL, "assetId"), ("no assetId field in borrowReserve " + bD)) |
---|
| 442 | + | let bO = valueOrErrorMessage(getString(bM, "assetId"), ("no assetId field in collateralReserve " + bE)) |
---|
| 443 | + | let bP = valueOrElse(getBoolean(bM, (bF + "_useAsCollateral")), false) |
---|
| 444 | + | if ((bP == bP)) |
---|
| 445 | + | then if (if (!(bH)) |
---|
| 446 | + | then !(bP) |
---|
489 | 447 | | else false) |
---|
490 | 448 | | then throw("can't liquidate deposit not used as collateral") |
---|
491 | 449 | | else { |
---|
492 | | - | let bT = an(bO, bI) |
---|
493 | | - | if ((bT == bT)) |
---|
| 450 | + | let bQ = ak(bL, bF) |
---|
| 451 | + | if ((bQ == bQ)) |
---|
494 | 452 | | then { |
---|
495 | | - | let bU = bT._5 |
---|
496 | | - | let bV = bT._4 |
---|
497 | | - | let bW = bT._3 |
---|
498 | | - | let bX = bT._2 |
---|
499 | | - | let aU = bT._1 |
---|
500 | | - | if ((bX >= bV)) |
---|
| 453 | + | let bR = bQ._5 |
---|
| 454 | + | let bS = bQ._4 |
---|
| 455 | + | let bT = bQ._3 |
---|
| 456 | + | let bU = bQ._2 |
---|
| 457 | + | let aR = bQ._1 |
---|
| 458 | + | if ((bU >= bS)) |
---|
501 | 459 | | then throw("can't liquidate debt of asset of positive saldo") |
---|
502 | | - | else if ((0 >= bJ)) |
---|
| 460 | + | else if ((0 >= bG)) |
---|
503 | 461 | | then throw("can't liquidate zero or negative amount") |
---|
504 | | - | else if (((bJ * 2) > (bV - bX))) |
---|
505 | | - | then throw(((((("can't liquidate more than half of saldo: debt=" + toString(bV)) + ", deposit=") + toString(bX)) + ", liquidateDebtAmount = ") + toString(bJ))) |
---|
| 462 | + | else if (((bG * 2) > (bS - bU))) |
---|
| 463 | + | then throw(((((("can't liquidate more than half of saldo: debt=" + toString(bS)) + ", deposit=") + toString(bU)) + ", liquidateDebtAmount = ") + toString(bG))) |
---|
506 | 464 | | else { |
---|
507 | | - | let bY = fraction(bJ, bU, bV) |
---|
508 | | - | let bZ = fraction(bY, (a + U(bQ)), a) |
---|
509 | | - | let ca = if (bK) |
---|
510 | | - | then by(bI, bR, bP, bH) |
---|
| 465 | + | let bV = fraction(bG, bR, bS) |
---|
| 466 | + | let bW = fraction(bV, (a + R(bN)), a) |
---|
| 467 | + | let bX = if (bH) |
---|
| 468 | + | then bv(bF, bO, bM, bE) |
---|
511 | 469 | | else unit |
---|
512 | | - | if ((ca == ca)) |
---|
| 470 | + | if ((bX == bX)) |
---|
513 | 471 | | then { |
---|
514 | | - | let cb = m(invoke(bP, "transferATokensFor", [bI, bF, bZ], nil)) |
---|
515 | | - | if ((cb == cb)) |
---|
| 472 | + | let bY = m(invoke(bM, "transferATokensFor", [bF, bC, bW], nil)) |
---|
| 473 | + | if ((bY == bY)) |
---|
516 | 474 | | then { |
---|
517 | | - | let cc = bd(bH, "deposit", bI, bF, cb) |
---|
518 | | - | if ((cc == cc)) |
---|
| 475 | + | let bZ = ba(bE, "deposit", bF, bC, bY) |
---|
| 476 | + | if ((bZ == bZ)) |
---|
519 | 477 | | then { |
---|
520 | | - | let cd = m(invoke(bO, "transferDebtFor", [bI, bF, bJ], nil)) |
---|
521 | | - | if ((cd == cd)) |
---|
| 478 | + | let ca = m(invoke(bL, "transferDebtFor", [bF, bC, bG], nil)) |
---|
| 479 | + | if ((ca == ca)) |
---|
522 | 480 | | then { |
---|
523 | | - | let ce = bd(bG, "borrow", bI, bF, cd) |
---|
524 | | - | if ((ce == ce)) |
---|
| 481 | + | let cb = ba(bD, "borrow", bF, bC, ca) |
---|
| 482 | + | if ((cb == cb)) |
---|
525 | 483 | | then { |
---|
526 | | - | let cf = if (contains(Y, bF)) |
---|
| 484 | + | let cc = if (contains(V, bC)) |
---|
527 | 485 | | then nil |
---|
528 | | - | else aV(bF, "transferring debt") |
---|
529 | | - | if ((cf == cf)) |
---|
530 | | - | then $Tuple2(cf, cb) |
---|
| 486 | + | else aS(bC, "transferring debt") |
---|
| 487 | + | if ((cc == cc)) |
---|
| 488 | + | then $Tuple2(cc, bY) |
---|
531 | 489 | | else throw("Strict value is not equal to itself.") |
---|
532 | 490 | | } |
---|
533 | 491 | | else throw("Strict value is not equal to itself.") |
---|
|
552 | 510 | | } |
---|
553 | 511 | | |
---|
554 | 512 | | |
---|
555 | | - | func cg (bF,R,bI,bK) = { |
---|
556 | | - | let ch = am(R) |
---|
557 | | - | if ((ch == ch)) |
---|
| 513 | + | func cd (bC,O,bF,bH) = { |
---|
| 514 | + | let ce = aj(O) |
---|
| 515 | + | if ((ce == ce)) |
---|
558 | 516 | | then { |
---|
559 | | - | let bp = bh(R) |
---|
560 | | - | if ((bp == bp)) |
---|
561 | | - | then if ((bF == bI)) |
---|
| 517 | + | let bm = be(O) |
---|
| 518 | + | if ((bm == bm)) |
---|
| 519 | + | then if ((bC == bF)) |
---|
562 | 520 | | then throw("can't collapse self in this function") |
---|
563 | 521 | | else { |
---|
564 | | - | let ci = av(bI) |
---|
565 | | - | let aS = ci._1 |
---|
566 | | - | let aT = ci._2 |
---|
567 | | - | if ((aS > aT)) |
---|
568 | | - | then throw(((((("can't force collapse healthy user: u=" + bI) + ", bp=") + toString(aS)) + ", bpu=") + toString(aT))) |
---|
| 522 | + | let cf = as(bF) |
---|
| 523 | + | let aP = cf._1 |
---|
| 524 | + | let aQ = cf._2 |
---|
| 525 | + | if ((aP > aQ)) |
---|
| 526 | + | then throw(((((("can't force collapse healthy user: u=" + bF) + ", bp=") + toString(aP)) + ", bpu=") + toString(aQ))) |
---|
569 | 527 | | else { |
---|
570 | | - | let aG = valueOrErrorMessage(getString(ch, "assetId"), ("no assetId field in reserve " + R)) |
---|
571 | | - | let ca = if (bK) |
---|
572 | | - | then by(bI, aG, ch, R) |
---|
| 528 | + | let aD = valueOrErrorMessage(getString(ce, "assetId"), ("no assetId field in rsr " + O)) |
---|
| 529 | + | let bX = if (bH) |
---|
| 530 | + | then bv(bF, aD, ce, O) |
---|
573 | 531 | | else unit |
---|
574 | | - | if ((ca == ca)) |
---|
| 532 | + | if ((bX == bX)) |
---|
575 | 533 | | then { |
---|
576 | | - | let cj = an(ch, bI) |
---|
577 | | - | if ((cj == cj)) |
---|
| 534 | + | let cg = ak(ce, bF) |
---|
| 535 | + | if ((cg == cg)) |
---|
578 | 536 | | then { |
---|
579 | | - | let bU = cj._5 |
---|
580 | | - | let bV = cj._4 |
---|
581 | | - | let bW = cj._3 |
---|
582 | | - | let ck = cj._2 |
---|
583 | | - | let aU = cj._1 |
---|
584 | | - | let bZ = fraction(min([bW, bU]), X, a) |
---|
585 | | - | let cl = m(invoke(ch, "transferATokensFor", [bI, bF, bZ], nil)) |
---|
586 | | - | if ((cl == cl)) |
---|
| 537 | + | let bR = cg._5 |
---|
| 538 | + | let bS = cg._4 |
---|
| 539 | + | let bT = cg._3 |
---|
| 540 | + | let ch = cg._2 |
---|
| 541 | + | let aR = cg._1 |
---|
| 542 | + | let bW = fraction(min([bT, bR]), U, a) |
---|
| 543 | + | let ci = m(invoke(ce, "transferATokensFor", [bF, bC, bW], nil)) |
---|
| 544 | + | if ((ci == ci)) |
---|
587 | 545 | | then { |
---|
588 | | - | let cc = bd(R, "deposit", bI, bF, cl) |
---|
589 | | - | if ((cc == cc)) |
---|
| 546 | + | let bZ = ba(O, "deposit", bF, bC, ci) |
---|
| 547 | + | if ((bZ == bZ)) |
---|
590 | 548 | | then { |
---|
591 | | - | let cm = m(invoke(ch, "collapseFor", [bI], nil)) |
---|
592 | | - | if ((cm == cm)) |
---|
| 549 | + | let cj = m(invoke(ce, "collapseFor", [bF], nil)) |
---|
| 550 | + | if ((cj == cj)) |
---|
593 | 551 | | then { |
---|
594 | | - | let ce = aZ(R, "borrow", bI, -(cm), -(cm)) |
---|
595 | | - | if ((ce == ce)) |
---|
| 552 | + | let cb = aW(O, "borrow", bF, -(cj), -(cj)) |
---|
| 553 | + | if ((cb == cb)) |
---|
596 | 554 | | then { |
---|
597 | | - | let cn = aZ(R, "deposit", bI, -(cm), -(cm)) |
---|
598 | | - | if ((cn == cn)) |
---|
| 555 | + | let ck = aW(O, "deposit", bF, -(cj), -(cj)) |
---|
| 556 | + | if ((ck == ck)) |
---|
599 | 557 | | then nil |
---|
600 | 558 | | else throw("Strict value is not equal to itself.") |
---|
601 | 559 | | } |
---|
|
618 | 576 | | } |
---|
619 | 577 | | |
---|
620 | 578 | | |
---|
621 | | - | func co () = invoke(I, "shareProfitFromReserves", nil, nil) |
---|
| 579 | + | func cl () = invoke(F, "shareProfitFromReserves", nil, nil) |
---|
622 | 580 | | |
---|
623 | 581 | | |
---|
624 | | - | func cp (ao,R,bg,aW) = { |
---|
625 | | - | let bp = bh(toString(R)) |
---|
626 | | - | if ((bp == bp)) |
---|
| 582 | + | func cm (al,O,bd,aT) = { |
---|
| 583 | + | let bm = be(toString(O)) |
---|
| 584 | + | if ((bm == bm)) |
---|
627 | 585 | | then { |
---|
628 | | - | let cq = m(invoke(R, aW, [ao, bg], nil)) |
---|
629 | | - | if ((cq == cq)) |
---|
| 586 | + | let cn = m(invoke(O, aT, [al, bd], nil)) |
---|
| 587 | + | if ((cn == cn)) |
---|
630 | 588 | | then { |
---|
631 | | - | let br = aZ(toString(R), "deposit", ao, -(cq), -(cq)) |
---|
632 | | - | if ((br == br)) |
---|
633 | | - | then cq |
---|
| 589 | + | let bo = aW(toString(O), "deposit", al, -(cn), -(cn)) |
---|
| 590 | + | if ((bo == bo)) |
---|
| 591 | + | then cn |
---|
634 | 592 | | else throw("Strict value is not equal to itself.") |
---|
635 | 593 | | } |
---|
636 | 594 | | else throw("Strict value is not equal to itself.") |
---|
|
639 | 597 | | } |
---|
640 | 598 | | |
---|
641 | 599 | | |
---|
642 | | - | @Callable(P) |
---|
643 | | - | func initialize (cr) = [k(w, cr)] |
---|
| 600 | + | @Callable(M) |
---|
| 601 | + | func initialize (co) = [k(t, co)] |
---|
644 | 602 | | |
---|
645 | 603 | | |
---|
646 | 604 | | |
---|
647 | | - | @Callable(P) |
---|
648 | | - | func deposit (R,bn) = bm(P, R, bn) |
---|
| 605 | + | @Callable(M) |
---|
| 606 | + | func deposit (O,bk) = bj(M, O, bk) |
---|
649 | 607 | | |
---|
650 | 608 | | |
---|
651 | 609 | | |
---|
652 | | - | @Callable(P) |
---|
653 | | - | func depositRef (R,bn,cs) = bm(P, R, bn) |
---|
| 610 | + | @Callable(M) |
---|
| 611 | + | func depositRef (O,bk,cp) = bj(M, O, bk) |
---|
654 | 612 | | |
---|
655 | 613 | | |
---|
656 | 614 | | |
---|
657 | | - | @Callable(P) |
---|
658 | | - | func repay (R) = { |
---|
659 | | - | let ao = toString(P.caller) |
---|
660 | | - | let bp = bh(R) |
---|
661 | | - | if ((bp == bp)) |
---|
| 615 | + | @Callable(M) |
---|
| 616 | + | func repay (O) = { |
---|
| 617 | + | let al = toString(M.caller) |
---|
| 618 | + | let bm = be(O) |
---|
| 619 | + | if ((bm == bm)) |
---|
662 | 620 | | then { |
---|
663 | | - | let ct = m(invoke(am(R), "repayFor", [ao], P.payments)) |
---|
664 | | - | if ((ct == ct)) |
---|
| 621 | + | let cq = m(invoke(aj(O), "repayFor", [al], M.payments)) |
---|
| 622 | + | if ((cq == cq)) |
---|
665 | 623 | | then { |
---|
666 | | - | let br = aZ(R, "borrow", ao, -(ct), -(ct)) |
---|
667 | | - | if ((br == br)) |
---|
| 624 | + | let bo = aW(O, "borrow", al, -(cq), -(cq)) |
---|
| 625 | + | if ((bo == bo)) |
---|
668 | 626 | | then nil |
---|
669 | 627 | | else throw("Strict value is not equal to itself.") |
---|
670 | 628 | | } |
---|
|
675 | 633 | | |
---|
676 | 634 | | |
---|
677 | 635 | | |
---|
678 | | - | @Callable(P) |
---|
679 | | - | func mintAtoken (cu,bg) = { |
---|
680 | | - | let ao = toString(P.caller) |
---|
681 | | - | let cv = Z(y, cu) |
---|
682 | | - | let bp = bh(toString(cv)) |
---|
683 | | - | if ((bp == bp)) |
---|
| 636 | + | @Callable(M) |
---|
| 637 | + | func mintAtoken (cr,bd) = { |
---|
| 638 | + | let al = toString(M.caller) |
---|
| 639 | + | let cs = W(v, cr) |
---|
| 640 | + | let bm = be(toString(cs)) |
---|
| 641 | + | if ((bm == bm)) |
---|
684 | 642 | | then { |
---|
685 | | - | let bq = m(invoke(cv, "mintAtokenFor", [ao, bg], nil)) |
---|
686 | | - | if ((bq == bq)) |
---|
| 643 | + | let bn = m(invoke(cs, "mintAtokenFor", [al, bd], nil)) |
---|
| 644 | + | if ((bn == bn)) |
---|
687 | 645 | | then { |
---|
688 | | - | let br = aZ(toString(cv), "deposit", ao, -(bq), 0) |
---|
689 | | - | if ((br == br)) |
---|
690 | | - | then aV(ao, "minting") |
---|
| 646 | + | let bo = aW(toString(cs), "deposit", al, -(bn), 0) |
---|
| 647 | + | if ((bo == bo)) |
---|
| 648 | + | then aS(al, "minting") |
---|
691 | 649 | | else throw("Strict value is not equal to itself.") |
---|
692 | 650 | | } |
---|
693 | 651 | | else throw("Strict value is not equal to itself.") |
---|
|
697 | 655 | | |
---|
698 | 656 | | |
---|
699 | 657 | | |
---|
700 | | - | @Callable(P) |
---|
| 658 | + | @Callable(M) |
---|
701 | 659 | | func replenishWithAtoken () = { |
---|
702 | | - | let ao = toString(P.caller) |
---|
703 | | - | let bo = as(ao) |
---|
704 | | - | if ((bo == bo)) |
---|
| 660 | + | let al = toString(M.caller) |
---|
| 661 | + | let bl = ap(al) |
---|
| 662 | + | if ((bl == bl)) |
---|
705 | 663 | | then { |
---|
706 | | - | let cu = toBase58String(valueOrErrorMessage(P.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
707 | | - | let cv = Z(y, cu) |
---|
708 | | - | let bp = bh(toString(cv)) |
---|
709 | | - | if ((bp == bp)) |
---|
| 664 | + | let cr = toBase58String(valueOrErrorMessage(M.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
| 665 | + | let cs = W(v, cr) |
---|
| 666 | + | let bm = be(toString(cs)) |
---|
| 667 | + | if ((bm == bm)) |
---|
710 | 668 | | then { |
---|
711 | | - | let bq = m(invoke(cv, "replenishWithAtokenFor", [ao], P.payments)) |
---|
712 | | - | if ((bq == bq)) |
---|
| 669 | + | let bn = m(invoke(cs, "replenishWithAtokenFor", [al], M.payments)) |
---|
| 670 | + | if ((bn == bn)) |
---|
713 | 671 | | then { |
---|
714 | | - | let br = aZ(toString(cv), "deposit", ao, bq, 0) |
---|
715 | | - | if ((br == br)) |
---|
| 672 | + | let bo = aW(toString(cs), "deposit", al, bn, 0) |
---|
| 673 | + | if ((bo == bo)) |
---|
716 | 674 | | then nil |
---|
717 | 675 | | else throw("Strict value is not equal to itself.") |
---|
718 | 676 | | } |
---|
|
725 | 683 | | |
---|
726 | 684 | | |
---|
727 | 685 | | |
---|
728 | | - | @Callable(P) |
---|
| 686 | + | @Callable(M) |
---|
729 | 687 | | func redeemAtokens () = { |
---|
730 | | - | let ao = toString(P.caller) |
---|
731 | | - | let cu = toBase58String(valueOrErrorMessage(P.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
732 | | - | let cv = Z(y, cu) |
---|
733 | | - | let bp = bh(toString(cv)) |
---|
734 | | - | if ((bp == bp)) |
---|
| 688 | + | let al = toString(M.caller) |
---|
| 689 | + | let cr = toBase58String(valueOrErrorMessage(M.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
| 690 | + | let cs = W(v, cr) |
---|
| 691 | + | let bm = be(toString(cs)) |
---|
| 692 | + | if ((bm == bm)) |
---|
735 | 693 | | then { |
---|
736 | | - | let bq = m(invoke(cv, "redeemAtokensFor", [ao], P.payments)) |
---|
737 | | - | if ((bq == bq)) |
---|
| 694 | + | let bn = m(invoke(cs, "redeemAtokensFor", [al], M.payments)) |
---|
| 695 | + | if ((bn == bn)) |
---|
738 | 696 | | then { |
---|
739 | | - | let br = aZ(toString(cv), "deposit", ao, 0, -(bq)) |
---|
740 | | - | if ((br == br)) |
---|
| 697 | + | let bo = aW(toString(cs), "deposit", al, 0, -(bn)) |
---|
| 698 | + | if ((bo == bo)) |
---|
741 | 699 | | then nil |
---|
742 | 700 | | else throw("Strict value is not equal to itself.") |
---|
743 | 701 | | } |
---|
|
748 | 706 | | |
---|
749 | 707 | | |
---|
750 | 708 | | |
---|
751 | | - | @Callable(P) |
---|
752 | | - | func withdraw (j,bg) = { |
---|
753 | | - | let ao = toString(P.caller) |
---|
754 | | - | let cw = m(cp(ao, Z(z, j), bg, "withdrawFor")) |
---|
755 | | - | if ((cw == cw)) |
---|
756 | | - | then $Tuple2(aV(ao, "withdrawing"), cw) |
---|
| 709 | + | @Callable(M) |
---|
| 710 | + | func withdraw (j,bd) = { |
---|
| 711 | + | let al = toString(M.caller) |
---|
| 712 | + | let ct = m(cm(al, W(w, j), bd, "withdrawFor")) |
---|
| 713 | + | if ((ct == ct)) |
---|
| 714 | + | then $Tuple2(aS(al, "withdrawing"), ct) |
---|
757 | 715 | | else throw("Strict value is not equal to itself.") |
---|
758 | 716 | | } |
---|
759 | 717 | | |
---|
760 | 718 | | |
---|
761 | 719 | | |
---|
762 | | - | @Callable(P) |
---|
763 | | - | func withdraw2 (R,bg) = { |
---|
764 | | - | let ao = toString(P.caller) |
---|
765 | | - | let bp = bh(R) |
---|
766 | | - | if ((bp == bp)) |
---|
| 720 | + | @Callable(M) |
---|
| 721 | + | func withdraw2 (O,bd) = { |
---|
| 722 | + | let al = toString(M.caller) |
---|
| 723 | + | let bm = be(O) |
---|
| 724 | + | if ((bm == bm)) |
---|
767 | 725 | | then { |
---|
768 | | - | let bq = m(invoke(am(R), "withdrawFor", [ao, bg], nil)) |
---|
769 | | - | if ((bq == bq)) |
---|
| 726 | + | let bn = m(invoke(aj(O), "withdrawFor", [al, bd], nil)) |
---|
| 727 | + | if ((bn == bn)) |
---|
770 | 728 | | then { |
---|
771 | | - | let br = aZ(R, "deposit", ao, -(bq), -(bq)) |
---|
772 | | - | if ((br == br)) |
---|
773 | | - | then if (contains(Y, ao)) |
---|
| 729 | + | let bo = aW(O, "deposit", al, -(bn), -(bn)) |
---|
| 730 | + | if ((bo == bo)) |
---|
| 731 | + | then if (contains(V, al)) |
---|
774 | 732 | | then nil |
---|
775 | | - | else aV(ao, "withdrawing2") |
---|
| 733 | + | else aS(al, "withdrawing2") |
---|
776 | 734 | | else throw("Strict value is not equal to itself.") |
---|
777 | 735 | | } |
---|
778 | 736 | | else throw("Strict value is not equal to itself.") |
---|
|
782 | 740 | | |
---|
783 | 741 | | |
---|
784 | 742 | | |
---|
785 | | - | @Callable(P) |
---|
786 | | - | func protectCollateral (R) = { |
---|
787 | | - | let ao = toString(P.caller) |
---|
788 | | - | let ad = am(R) |
---|
789 | | - | let bq = m(cp(ao, ad, -1, "withdrawToMain")) |
---|
790 | | - | if ((bq == bq)) |
---|
| 743 | + | @Callable(M) |
---|
| 744 | + | func protectCollateral (O) = { |
---|
| 745 | + | let al = toString(M.caller) |
---|
| 746 | + | let aa = aj(O) |
---|
| 747 | + | let bn = m(cm(al, aa, -1, "withdrawToMain")) |
---|
| 748 | + | if ((bn == bn)) |
---|
791 | 749 | | then { |
---|
792 | | - | let j = i(getStringValue(ad, z)) |
---|
793 | | - | let cx = invoke(ar, "supplyFor", [ao], [AttachedPayment(j, bq)]) |
---|
794 | | - | if ((cx == cx)) |
---|
795 | | - | then $Tuple2(aV(ao, "protecting"), bq) |
---|
| 750 | + | let j = i(getStringValue(aa, w)) |
---|
| 751 | + | let cu = invoke(ao, "supplyFor", [al], [AttachedPayment(j, bn)]) |
---|
| 752 | + | if ((cu == cu)) |
---|
| 753 | + | then $Tuple2(aS(al, "protecting"), bn) |
---|
796 | 754 | | else throw("Strict value is not equal to itself.") |
---|
797 | 755 | | } |
---|
798 | 756 | | else throw("Strict value is not equal to itself.") |
---|
|
800 | 758 | | |
---|
801 | 759 | | |
---|
802 | 760 | | |
---|
803 | | - | @Callable(P) |
---|
804 | | - | func withdrawProtectedCollateral (j,bg) = { |
---|
805 | | - | let ao = toString(P.caller) |
---|
806 | | - | let ac = m(invoke(valueOrErrorMessage(ar, "no protectedReserve"), "withdrawFor", [ao, j, bg], nil)) |
---|
807 | | - | if ((ac == ac)) |
---|
808 | | - | then aV(ao, "withdrawing protected collateral") |
---|
| 761 | + | @Callable(M) |
---|
| 762 | + | func withdrawProtectedCollateral (j,bd) = { |
---|
| 763 | + | let al = toString(M.caller) |
---|
| 764 | + | let Z = m(invoke(valueOrErrorMessage(ao, "no protectedReserve"), "withdrawFor", [al, j, bd], nil)) |
---|
| 765 | + | if ((Z == Z)) |
---|
| 766 | + | then aS(al, "withdrawing protected collateral") |
---|
809 | 767 | | else throw("Strict value is not equal to itself.") |
---|
810 | 768 | | } |
---|
811 | 769 | | |
---|
812 | 770 | | |
---|
813 | 771 | | |
---|
814 | | - | @Callable(P) |
---|
815 | | - | func borrow (j,bg) = { |
---|
816 | | - | let ao = toString(P.caller) |
---|
817 | | - | let R = Z(z, j) |
---|
818 | | - | let bp = bh(toString(R)) |
---|
819 | | - | if ((bp == bp)) |
---|
| 772 | + | @Callable(M) |
---|
| 773 | + | func normalizeCollateral (O) = { |
---|
| 774 | + | let bw = toString(M.caller) |
---|
| 775 | + | let cv = aj(O) |
---|
| 776 | + | if ((cv == cv)) |
---|
820 | 777 | | then { |
---|
821 | | - | let ac = invoke(R, "borrowFor", [ao, bg], nil) |
---|
822 | | - | if ((ac == ac)) |
---|
| 778 | + | let bm = be(O) |
---|
| 779 | + | if ((bm == bm)) |
---|
823 | 780 | | then { |
---|
824 | | - | let br = aZ(toString(R), "borrow", ao, bg, bg) |
---|
825 | | - | if ((br == br)) |
---|
826 | | - | then aV(ao, "borrowing") |
---|
| 781 | + | let cw = valueOrErrorMessage(getString(cv, "assetId"), ("no assetId field in reserveAddress " + O)) |
---|
| 782 | + | let bX = bv(bw, cw, cv, O) |
---|
| 783 | + | if ((bX == bX)) |
---|
| 784 | + | then nil |
---|
827 | 785 | | else throw("Strict value is not equal to itself.") |
---|
828 | 786 | | } |
---|
829 | 787 | | else throw("Strict value is not equal to itself.") |
---|
|
833 | 791 | | |
---|
834 | 792 | | |
---|
835 | 793 | | |
---|
836 | | - | @Callable(P) |
---|
837 | | - | func borrow2 (R,bg) = { |
---|
838 | | - | let ao = toString(P.caller) |
---|
839 | | - | let bp = bh(R) |
---|
840 | | - | if ((bp == bp)) |
---|
| 794 | + | @Callable(M) |
---|
| 795 | + | func borrow (j,bd) = { |
---|
| 796 | + | let al = toString(M.caller) |
---|
| 797 | + | let O = W(w, j) |
---|
| 798 | + | let bm = be(toString(O)) |
---|
| 799 | + | if ((bm == bm)) |
---|
841 | 800 | | then { |
---|
842 | | - | let ac = invoke(am(R), "borrowFor", [ao, bg], nil) |
---|
843 | | - | if ((ac == ac)) |
---|
| 801 | + | let Z = invoke(O, "borrowFor", [al, bd], nil) |
---|
| 802 | + | if ((Z == Z)) |
---|
844 | 803 | | then { |
---|
845 | | - | let br = aZ(R, "borrow", ao, bg, bg) |
---|
846 | | - | if ((br == br)) |
---|
847 | | - | then aV(ao, "borrowing") |
---|
| 804 | + | let bo = aW(toString(O), "borrow", al, bd, bd) |
---|
| 805 | + | if ((bo == bo)) |
---|
| 806 | + | then aS(al, "borrowing") |
---|
848 | 807 | | else throw("Strict value is not equal to itself.") |
---|
849 | 808 | | } |
---|
850 | 809 | | else throw("Strict value is not equal to itself.") |
---|
|
854 | 813 | | |
---|
855 | 814 | | |
---|
856 | 815 | | |
---|
857 | | - | @Callable(P) |
---|
858 | | - | func collapse (R,bg) = { |
---|
859 | | - | let ao = toString(P.caller) |
---|
860 | | - | let bp = bh(R) |
---|
861 | | - | if ((bp == bp)) |
---|
| 816 | + | @Callable(M) |
---|
| 817 | + | func borrow2 (O,bd) = { |
---|
| 818 | + | let al = toString(M.caller) |
---|
| 819 | + | let bm = be(O) |
---|
| 820 | + | if ((bm == bm)) |
---|
862 | 821 | | then { |
---|
863 | | - | let cy = m(invoke(am(R), "collapseForAmount", [ao, bg], nil)) |
---|
864 | | - | if ((cy == cy)) |
---|
| 822 | + | let Z = invoke(aj(O), "borrowFor", [al, bd], nil) |
---|
| 823 | + | if ((Z == Z)) |
---|
865 | 824 | | then { |
---|
866 | | - | let br = aZ(R, "borrow", ao, -(cy), -(cy)) |
---|
867 | | - | if ((br == br)) |
---|
| 825 | + | let bo = aW(O, "borrow", al, bd, bd) |
---|
| 826 | + | if ((bo == bo)) |
---|
| 827 | + | then aS(al, "borrowing") |
---|
| 828 | + | else throw("Strict value is not equal to itself.") |
---|
| 829 | + | } |
---|
| 830 | + | else throw("Strict value is not equal to itself.") |
---|
| 831 | + | } |
---|
| 832 | + | else throw("Strict value is not equal to itself.") |
---|
| 833 | + | } |
---|
| 834 | + | |
---|
| 835 | + | |
---|
| 836 | + | |
---|
| 837 | + | @Callable(M) |
---|
| 838 | + | func collapse (O,bd) = { |
---|
| 839 | + | let al = toString(M.caller) |
---|
| 840 | + | let bm = be(O) |
---|
| 841 | + | if ((bm == bm)) |
---|
| 842 | + | then { |
---|
| 843 | + | let cx = m(invoke(aj(O), "collapseForAmount", [al, bd], nil)) |
---|
| 844 | + | if ((cx == cx)) |
---|
| 845 | + | then { |
---|
| 846 | + | let bo = aW(O, "borrow", al, -(cx), -(cx)) |
---|
| 847 | + | if ((bo == bo)) |
---|
868 | 848 | | then { |
---|
869 | | - | let ce = aZ(R, "deposit", ao, -(cy), -(cy)) |
---|
870 | | - | if ((ce == ce)) |
---|
| 849 | + | let cb = aW(O, "deposit", al, -(cx), -(cx)) |
---|
| 850 | + | if ((cb == cb)) |
---|
871 | 851 | | then nil |
---|
872 | 852 | | else throw("Strict value is not equal to itself.") |
---|
873 | 853 | | } |
---|
|
880 | 860 | | |
---|
881 | 861 | | |
---|
882 | 862 | | |
---|
883 | | - | @Callable(P) |
---|
884 | | - | func claimEbReward2 (bg,bk) = { |
---|
885 | | - | let ao = toString(P.caller) |
---|
886 | | - | let cy = m(invoke(E, "claimEbRewardFor", [ao, bg], nil)) |
---|
887 | | - | if ((cy == cy)) |
---|
888 | | - | then bi(P.caller, cy, bk) |
---|
| 863 | + | @Callable(M) |
---|
| 864 | + | func claimEbReward2 (bd,bh) = { |
---|
| 865 | + | let al = toString(M.caller) |
---|
| 866 | + | let cx = m(invoke(B, "claimEbRewardFor", [al, bd], nil)) |
---|
| 867 | + | if ((cx == cx)) |
---|
| 868 | + | then bf(M.caller, cx, bh) |
---|
889 | 869 | | else throw("Strict value is not equal to itself.") |
---|
890 | 870 | | } |
---|
891 | 871 | | |
---|
892 | 872 | | |
---|
893 | 873 | | |
---|
894 | | - | @Callable(P) |
---|
895 | | - | func claimReward2 (R,bg,bk) = { |
---|
896 | | - | let cz = am(R) |
---|
897 | | - | if ((cz == cz)) |
---|
| 874 | + | @Callable(M) |
---|
| 875 | + | func claimReward2 (O,bd,bh) = { |
---|
| 876 | + | let cy = aj(O) |
---|
| 877 | + | if ((cy == cy)) |
---|
898 | 878 | | then { |
---|
899 | | - | let ao = toString(P.caller) |
---|
900 | | - | let cy = m(invoke(L, "claimRewardFor", [R, ao, bg], nil)) |
---|
901 | | - | if ((cy == cy)) |
---|
902 | | - | then bi(P.caller, cy, bk) |
---|
| 879 | + | let al = toString(M.caller) |
---|
| 880 | + | let cx = m(invoke(I, "claimRewardFor", [O, al, bd], nil)) |
---|
| 881 | + | if ((cx == cx)) |
---|
| 882 | + | then bf(M.caller, cx, bh) |
---|
903 | 883 | | else throw("Strict value is not equal to itself.") |
---|
904 | 884 | | } |
---|
905 | 885 | | else throw("Strict value is not equal to itself.") |
---|
|
907 | 887 | | |
---|
908 | 888 | | |
---|
909 | 889 | | |
---|
910 | | - | @Callable(P) |
---|
911 | | - | func claimAllRewardsAndAllEbAvailable2 (bk,cA) = { |
---|
912 | | - | let ao = toString(P.caller) |
---|
913 | | - | let bP = bs(ao) |
---|
914 | | - | if ((bP == bP)) |
---|
| 890 | + | @Callable(M) |
---|
| 891 | + | func claimAllRewardsAndAllEbAvailable2 (bh,cz) = { |
---|
| 892 | + | let al = toString(M.caller) |
---|
| 893 | + | let bM = bp(al) |
---|
| 894 | + | if ((bM == bM)) |
---|
915 | 895 | | then { |
---|
916 | | - | let cB = if (cA) |
---|
917 | | - | then m(invoke(H, "unstakeAllViresFrom", [ao], nil)) |
---|
| 896 | + | let cA = if (cz) |
---|
| 897 | + | then m(invoke(E, "unstakeAllViresFrom", [al], nil)) |
---|
918 | 898 | | else 0 |
---|
919 | | - | if ((cB == cB)) |
---|
920 | | - | then bi(P.caller, (bP + cB), bk) |
---|
| 899 | + | if ((cA == cA)) |
---|
| 900 | + | then bf(M.caller, (bM + cA), bh) |
---|
921 | 901 | | else throw("Strict value is not equal to itself.") |
---|
922 | 902 | | } |
---|
923 | 903 | | else throw("Strict value is not equal to itself.") |
---|
|
925 | 905 | | |
---|
926 | 906 | | |
---|
927 | 907 | | |
---|
928 | | - | @Callable(P) |
---|
929 | | - | func disableUseAsCollateral (R) = { |
---|
930 | | - | let ao = toString(P.caller) |
---|
931 | | - | let K = invoke(am(R), "disableUseAsCollateralFor", [ao], nil) |
---|
932 | | - | if ((K == K)) |
---|
933 | | - | then aV(ao, "changing collateral status") |
---|
| 908 | + | @Callable(M) |
---|
| 909 | + | func disableUseAsCollateral (O) = { |
---|
| 910 | + | let al = toString(M.caller) |
---|
| 911 | + | let H = invoke(aj(O), "disableUseAsCollateralFor", [al], nil) |
---|
| 912 | + | if ((H == H)) |
---|
| 913 | + | then aS(al, "changing collateral status") |
---|
934 | 914 | | else throw("Strict value is not equal to itself.") |
---|
935 | 915 | | } |
---|
936 | 916 | | |
---|
937 | 917 | | |
---|
938 | 918 | | |
---|
939 | | - | @Callable(P) |
---|
940 | | - | func transferDebt (bO,bP,cC,cD) = bE(toString(P.caller), bO, bP, cC, cD, false) |
---|
| 919 | + | @Callable(M) |
---|
| 920 | + | func transferDebt (bL,bM,cB,cC) = bB(toString(M.caller), bL, bM, cB, cC, false) |
---|
941 | 921 | | |
---|
942 | 922 | | |
---|
943 | 923 | | |
---|
944 | | - | @Callable(P) |
---|
945 | | - | func transferDebt2 (bO,bP,cC,cD) = bE(toString(P.caller), bO, bP, cC, cD, true) |
---|
| 924 | + | @Callable(M) |
---|
| 925 | + | func transferDebt2 (bL,bM,cB,cC) = bB(toString(M.caller), bL, bM, cB, cC, true) |
---|
946 | 926 | | |
---|
947 | 927 | | |
---|
948 | 928 | | |
---|
949 | | - | @Callable(P) |
---|
950 | | - | func forceCollapse (ad,cC) = cg(toString(P.caller), ad, cC, false) |
---|
| 929 | + | @Callable(M) |
---|
| 930 | + | func forceCollapse (aa,cB) = cd(toString(M.caller), aa, cB, false) |
---|
951 | 931 | | |
---|
952 | 932 | | |
---|
953 | 933 | | |
---|
954 | | - | @Callable(P) |
---|
955 | | - | func forceCollapse2 (ad,cC) = cg(toString(P.caller), ad, cC, true) |
---|
| 934 | + | @Callable(M) |
---|
| 935 | + | func forceCollapse2 (aa,cB) = cd(toString(M.caller), aa, cB, true) |
---|
956 | 936 | | |
---|
957 | 937 | | |
---|
958 | 938 | | |
---|
959 | | - | @Callable(P) |
---|
960 | | - | func lockVires (cE,cF) = { |
---|
961 | | - | let ao = toString(P.caller) |
---|
962 | | - | let ac = co() |
---|
963 | | - | if ((ac == ac)) |
---|
| 939 | + | @Callable(M) |
---|
| 940 | + | func lockVires (cD,cE) = { |
---|
| 941 | + | let al = toString(M.caller) |
---|
| 942 | + | let Z = cl() |
---|
| 943 | + | if ((Z == Z)) |
---|
964 | 944 | | then { |
---|
965 | | - | let cG = if (cF) |
---|
966 | | - | then m(invoke(H, "unstakeAllViresFrom", [ao], nil)) |
---|
| 945 | + | let cF = if (cE) |
---|
| 946 | + | then m(invoke(E, "unstakeAllViresFrom", [al], nil)) |
---|
967 | 947 | | else 0 |
---|
968 | | - | let cH = (cG + O(P)) |
---|
969 | | - | let cI = invoke(I, "lockFor", [ao, cE], if ((cH == 0)) |
---|
| 948 | + | let cG = (cF + L(M)) |
---|
| 949 | + | let cH = invoke(F, "lockFor", [al, cD], if ((cG == 0)) |
---|
970 | 950 | | then nil |
---|
971 | | - | else [AttachedPayment(N, cH)]) |
---|
972 | | - | if ((cI == cI)) |
---|
| 951 | + | else [AttachedPayment(K, cG)]) |
---|
| 952 | + | if ((cH == cH)) |
---|
973 | 953 | | then nil |
---|
974 | 954 | | else throw("Strict value is not equal to itself.") |
---|
975 | 955 | | } |
---|
|
978 | 958 | | |
---|
979 | 959 | | |
---|
980 | 960 | | |
---|
981 | | - | @Callable(P) |
---|
| 961 | + | @Callable(M) |
---|
982 | 962 | | func withdrawAllPossibleVires () = { |
---|
983 | | - | let ao = toString(P.caller) |
---|
984 | | - | let ac = co() |
---|
985 | | - | if ((ac == ac)) |
---|
| 963 | + | let al = toString(M.caller) |
---|
| 964 | + | let Z = cl() |
---|
| 965 | + | if ((Z == Z)) |
---|
986 | 966 | | then { |
---|
987 | | - | let cJ = m(invoke(H, "unstakeAllViresFrom", [ao], nil)) |
---|
988 | | - | if ((cJ == cJ)) |
---|
| 967 | + | let cI = m(invoke(E, "unstakeAllViresFrom", [al], nil)) |
---|
| 968 | + | if ((cI == cI)) |
---|
989 | 969 | | then { |
---|
990 | | - | let cK = invoke(I, "withdrawUnlockedFor", [ao], nil) |
---|
991 | | - | if ((cK == cK)) |
---|
992 | | - | then [ScriptTransfer(P.caller, cJ, N)] |
---|
| 970 | + | let cJ = invoke(F, "withdrawUnlockedFor", [al], nil) |
---|
| 971 | + | if ((cJ == cJ)) |
---|
| 972 | + | then [ScriptTransfer(M.caller, cI, K)] |
---|
993 | 973 | | else throw("Strict value is not equal to itself.") |
---|
994 | 974 | | } |
---|
995 | 975 | | else throw("Strict value is not equal to itself.") |
---|
|
999 | 979 | | |
---|
1000 | 980 | | |
---|
1001 | 981 | | |
---|
1002 | | - | @Callable(P) |
---|
1003 | | - | func claimProtocolProfitFrom (be,cL) = { |
---|
1004 | | - | let ao = toString(P.caller) |
---|
1005 | | - | let ac = co() |
---|
1006 | | - | if ((ac == ac)) |
---|
| 982 | + | @Callable(M) |
---|
| 983 | + | func claimProtocolProfitFrom (bb,cK) = { |
---|
| 984 | + | let al = toString(M.caller) |
---|
| 985 | + | let Z = cl() |
---|
| 986 | + | if ((Z == Z)) |
---|
1007 | 987 | | then { |
---|
1008 | | - | let cK = invoke(I, "claimProfit", [be, ao, cL], nil) |
---|
1009 | | - | if ((cK == cK)) |
---|
| 988 | + | let cJ = invoke(F, "claimProfit", [bb, al, cK], nil) |
---|
| 989 | + | if ((cJ == cJ)) |
---|
1010 | 990 | | then nil |
---|
1011 | 991 | | else throw("Strict value is not equal to itself.") |
---|
1012 | 992 | | } |
---|
|
1015 | 995 | | |
---|
1016 | 996 | | |
---|
1017 | 997 | | |
---|
1018 | | - | @Callable(P) |
---|
| 998 | + | @Callable(M) |
---|
1019 | 999 | | func withdrawUnlockedVires () = { |
---|
1020 | | - | let ac = co() |
---|
1021 | | - | if ((ac == ac)) |
---|
| 1000 | + | let Z = cl() |
---|
| 1001 | + | if ((Z == Z)) |
---|
1022 | 1002 | | then { |
---|
1023 | | - | let cK = invoke(I, "withdrawUnlockedFor", [toString(P.caller)], nil) |
---|
1024 | | - | if ((cK == cK)) |
---|
| 1003 | + | let cJ = invoke(F, "withdrawUnlockedFor", [toString(M.caller)], nil) |
---|
| 1004 | + | if ((cJ == cJ)) |
---|
1025 | 1005 | | then nil |
---|
1026 | 1006 | | else throw("Strict value is not equal to itself.") |
---|
1027 | 1007 | | } |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = 1000 |
---|
5 | 5 | | |
---|
6 | 6 | | func b (c,d,e) = { |
---|
7 | 7 | | let f = fraction(c, d, e) |
---|
8 | 8 | | let g = 3037000499 |
---|
9 | 9 | | let h = ((((f % g) * (e % g)) % g) == (((c % g) * (d % g)) % g)) |
---|
10 | 10 | | if (h) |
---|
11 | 11 | | then f |
---|
12 | 12 | | else (f + 1) |
---|
13 | 13 | | } |
---|
14 | 14 | | |
---|
15 | 15 | | |
---|
16 | 16 | | func i (j) = if ((j == "WAVES")) |
---|
17 | 17 | | then unit |
---|
18 | 18 | | else fromBase58String(j) |
---|
19 | 19 | | |
---|
20 | 20 | | |
---|
21 | 21 | | func k (l,c) = if (!(isDefined(getString(this, l)))) |
---|
22 | 22 | | then StringEntry(l, c) |
---|
23 | 23 | | else throw(("already initialized: " + l)) |
---|
24 | 24 | | |
---|
25 | 25 | | |
---|
26 | 26 | | func m (c) = { |
---|
27 | 27 | | let n = c |
---|
28 | 28 | | if ($isInstanceOf(n, "Int")) |
---|
29 | 29 | | then { |
---|
30 | 30 | | let o = n |
---|
31 | 31 | | o |
---|
32 | 32 | | } |
---|
33 | 33 | | else throw("wrong type, expected: Int") |
---|
34 | 34 | | } |
---|
35 | 35 | | |
---|
36 | 36 | | |
---|
37 | 37 | | func p (c) = { |
---|
38 | 38 | | let n = c |
---|
39 | | - | if ($isInstanceOf(n, "(Int, Int)")) |
---|
40 | | - | then { |
---|
41 | | - | let q = n |
---|
42 | | - | q |
---|
43 | | - | } |
---|
44 | | - | else { |
---|
45 | | - | let r = n |
---|
46 | | - | throw("wrong type, expected: Int2") |
---|
47 | | - | } |
---|
48 | | - | } |
---|
49 | | - | |
---|
50 | | - | |
---|
51 | | - | func s (c) = { |
---|
52 | | - | let n = c |
---|
53 | 39 | | if ($isInstanceOf(n, "(Int, Int, Int)")) |
---|
54 | 40 | | then { |
---|
55 | 41 | | let q = n |
---|
56 | 42 | | q |
---|
57 | 43 | | } |
---|
58 | 44 | | else { |
---|
59 | 45 | | let r = n |
---|
60 | 46 | | throw("wrong type, expected: Int3") |
---|
61 | 47 | | } |
---|
62 | 48 | | } |
---|
63 | 49 | | |
---|
64 | 50 | | |
---|
65 | | - | func t (c) = { |
---|
66 | | - | let n = c |
---|
67 | | - | if ($isInstanceOf(n, "(Int, Int, Int, Int)")) |
---|
68 | | - | then { |
---|
69 | | - | let q = n |
---|
70 | | - | q |
---|
71 | | - | } |
---|
72 | | - | else { |
---|
73 | | - | let r = n |
---|
74 | | - | throw("wrong type, expected: Int4") |
---|
75 | | - | } |
---|
76 | | - | } |
---|
77 | | - | |
---|
78 | | - | |
---|
79 | | - | func u (c) = { |
---|
80 | | - | let n = c |
---|
81 | | - | if ($isInstanceOf(n, "(Int, Int, Int, Int, Int)")) |
---|
82 | | - | then { |
---|
83 | | - | let q = n |
---|
84 | | - | q |
---|
85 | | - | } |
---|
86 | | - | else { |
---|
87 | | - | let r = n |
---|
88 | | - | throw("wrong type, expected: Int5") |
---|
89 | | - | } |
---|
90 | | - | } |
---|
91 | | - | |
---|
92 | | - | |
---|
93 | | - | func v (c) = { |
---|
| 51 | + | func s (c) = { |
---|
94 | 52 | | let n = c |
---|
95 | 53 | | if ($isInstanceOf(n, "(Int, Int, Int, Int, Int, Boolean)")) |
---|
96 | 54 | | then { |
---|
97 | 55 | | let q = n |
---|
98 | 56 | | q |
---|
99 | 57 | | } |
---|
100 | 58 | | else { |
---|
101 | 59 | | let r = n |
---|
102 | 60 | | throw("wrong type, expected: Int5&Boolean") |
---|
103 | 61 | | } |
---|
104 | 62 | | } |
---|
105 | 63 | | |
---|
106 | 64 | | |
---|
107 | | - | let w = "config" |
---|
| 65 | + | let t = "config" |
---|
108 | 66 | | |
---|
109 | | - | let x = "reserves" |
---|
| 67 | + | let u = "reserves" |
---|
110 | 68 | | |
---|
111 | | - | let y = "aTokenId" |
---|
| 69 | + | let v = "aTokenId" |
---|
112 | 70 | | |
---|
113 | | - | let z = "assetId" |
---|
| 71 | + | let w = "assetId" |
---|
114 | 72 | | |
---|
115 | | - | let A = "vires_distributor" |
---|
| 73 | + | let x = "vires_distributor" |
---|
116 | 74 | | |
---|
117 | | - | let B = addressFromStringValue(getStringValue(this, w)) |
---|
| 75 | + | let y = addressFromStringValue(getStringValue(this, t)) |
---|
118 | 76 | | |
---|
119 | | - | let C = valueOrErrorMessage(getString(B, "primary_reserves"), "no reserves registered") |
---|
| 77 | + | let z = valueOrErrorMessage(getString(y, "primary_reserves"), "no reserves registered") |
---|
120 | 78 | | |
---|
121 | | - | let D = split(C, "|") |
---|
| 79 | + | let A = split(z, "|") |
---|
122 | 80 | | |
---|
123 | | - | let E = addressFromStringValue(valueOrErrorMessage(getString(B, "eb_rewards"), "no eb_rewards contract in config")) |
---|
| 81 | + | let B = addressFromStringValue(valueOrErrorMessage(getString(y, "eb_rewards"), "no eb_rewards contract in config")) |
---|
124 | 82 | | |
---|
125 | | - | let F = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(B, "vires_minter"), "main: no viresMinter")), "invalid viresMinter") |
---|
| 83 | + | let C = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(y, "vires_minter"), "main: no viresMinter")), "invalid viresMinter") |
---|
126 | 84 | | |
---|
127 | | - | let G = getString(B, "vires_staker") |
---|
| 85 | + | let D = getString(y, "vires_staker") |
---|
128 | 86 | | |
---|
129 | | - | let H = addressFromStringValue(valueOrErrorMessage(G, "no vires_staker")) |
---|
| 87 | + | let E = addressFromStringValue(valueOrErrorMessage(D, "no vires_staker")) |
---|
130 | 88 | | |
---|
131 | | - | let I = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(B, "dividends_contract"), "no dividends_contract")), "invalid dividends_contract") |
---|
| 89 | + | let F = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(y, "dividends_contract"), "no dividends_contract")), "invalid dividends_contract") |
---|
132 | 90 | | |
---|
133 | | - | let J = { |
---|
134 | | - | let n = getString(B, A) |
---|
| 91 | + | let G = { |
---|
| 92 | + | let n = getString(y, x) |
---|
135 | 93 | | if ($isInstanceOf(n, "String")) |
---|
136 | 94 | | then { |
---|
137 | | - | let K = n |
---|
138 | | - | addressFromStringValue(K) |
---|
| 95 | + | let H = n |
---|
| 96 | + | addressFromStringValue(H) |
---|
139 | 97 | | } |
---|
140 | 98 | | else unit |
---|
141 | 99 | | } |
---|
142 | 100 | | |
---|
143 | | - | let L = valueOrErrorMessage(J, "no distributor to claim rewards") |
---|
| 101 | + | let I = valueOrErrorMessage(G, "no distributor to claim rewards") |
---|
144 | 102 | | |
---|
145 | | - | let M = getString(F, "assetId") |
---|
| 103 | + | let J = getString(C, "assetId") |
---|
146 | 104 | | |
---|
147 | | - | let N = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(M, "vires assetId not found")), "invalid vires assetId") |
---|
| 105 | + | let K = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(J, "vires assetId not found")), "invalid vires assetId") |
---|
148 | 106 | | |
---|
149 | | - | func O (P) = if ((size(P.payments) == 0)) |
---|
| 107 | + | func L (M) = if ((size(M.payments) == 0)) |
---|
150 | 108 | | then 0 |
---|
151 | | - | else if ((P.payments[0].assetId != N)) |
---|
| 109 | + | else if ((M.payments[0].assetId != K)) |
---|
152 | 110 | | then throw("not vires") |
---|
153 | | - | else P.payments[0].amount |
---|
| 111 | + | else M.payments[0].amount |
---|
154 | 112 | | |
---|
155 | 113 | | |
---|
156 | | - | func Q (R) = valueOrErrorMessage(getString(R, z), "no assetId in reserve") |
---|
| 114 | + | func N (O) = valueOrErrorMessage(getString(O, w), "no assetId in rsr") |
---|
157 | 115 | | |
---|
158 | 116 | | |
---|
159 | | - | func S (R) = valueOrErrorMessage(getInteger(B, (Q(R) + "_CollateralFactor")), "no CollateralFactor in config") |
---|
| 117 | + | func P (O) = valueOrErrorMessage(getInteger(y, (N(O) + "_CollateralFactor")), "no CollateralFactor in config") |
---|
160 | 118 | | |
---|
161 | 119 | | |
---|
162 | | - | func T (R) = valueOrErrorMessage(getInteger(B, (Q(R) + "_LiquidationThreshold")), "no LiquidationThreshold in config") |
---|
| 120 | + | func Q (O) = valueOrErrorMessage(getInteger(y, (N(O) + "_LiquidationThreshold")), "no LiquidationThreshold in config") |
---|
163 | 121 | | |
---|
164 | 122 | | |
---|
165 | | - | func U (j) = valueOrErrorMessage(getInteger(B, (j + "_LiquidationPenalty")), "no LiquidationPenalty in config") |
---|
| 123 | + | func R (j) = valueOrErrorMessage(getInteger(y, (j + "_LiquidationPenalty")), "no LiquidationPenalty in config") |
---|
166 | 124 | | |
---|
167 | 125 | | |
---|
168 | | - | let V = valueOrErrorMessage(getInteger(B, "account_health_threshold"), "no account_health_threshold") |
---|
| 126 | + | let S = valueOrErrorMessage(getInteger(y, "account_health_threshold"), "no account_health_threshold") |
---|
169 | 127 | | |
---|
170 | | - | let W = valueOrErrorMessage(getInteger(B, "account_health_overlap"), "no account_health_overlap") |
---|
| 128 | + | let T = valueOrErrorMessage(getInteger(y, "account_health_overlap"), "no account_health_overlap") |
---|
171 | 129 | | |
---|
172 | | - | let X = valueOrErrorMessage(getInteger(B, "collapse_penalty"), "no collapse_penalty") |
---|
| 130 | + | let U = valueOrErrorMessage(getInteger(y, "collapse_penalty"), "no collapse_penalty") |
---|
173 | 131 | | |
---|
174 | | - | let Y = valueOrElse(getString(B, "liquidators"), "") |
---|
| 132 | + | let V = valueOrElse(getString(y, "liquidators"), "") |
---|
175 | 133 | | |
---|
176 | | - | func Z (aa,c) = { |
---|
177 | | - | func ab (ac,ad) = { |
---|
178 | | - | let n = ac |
---|
| 134 | + | func W (X,c) = { |
---|
| 135 | + | func Y (Z,aa) = { |
---|
| 136 | + | let n = Z |
---|
179 | 137 | | if ($isInstanceOf(n, "Address")) |
---|
180 | 138 | | then { |
---|
181 | | - | let ae = n |
---|
182 | | - | ae |
---|
| 139 | + | let ab = n |
---|
| 140 | + | ab |
---|
183 | 141 | | } |
---|
184 | 142 | | else { |
---|
185 | | - | let R = valueOrErrorMessage(addressFromString(ad), "reserve bad address") |
---|
186 | | - | if ((valueOrErrorMessage(getString(R, aa), ("reserve has no " + aa)) == c)) |
---|
187 | | - | then R |
---|
| 143 | + | let O = valueOrErrorMessage(addressFromString(aa), "rsr bad address") |
---|
| 144 | + | if ((valueOrErrorMessage(getString(O, X), ("rsr has no " + X)) == c)) |
---|
| 145 | + | then O |
---|
188 | 146 | | else unit |
---|
189 | 147 | | } |
---|
190 | 148 | | } |
---|
191 | 149 | | |
---|
192 | 150 | | let n = { |
---|
193 | | - | let af = D |
---|
194 | | - | let ag = size(af) |
---|
195 | | - | let ah = unit |
---|
196 | | - | func ai (aj,ak) = if ((ak >= ag)) |
---|
197 | | - | then aj |
---|
198 | | - | else ab(aj, af[ak]) |
---|
| 151 | + | let ac = A |
---|
| 152 | + | let ad = size(ac) |
---|
| 153 | + | let ae = unit |
---|
| 154 | + | func af (ag,ah) = if ((ah >= ad)) |
---|
| 155 | + | then ag |
---|
| 156 | + | else Y(ag, ac[ah]) |
---|
199 | 157 | | |
---|
200 | | - | func al (aj,ak) = if ((ak >= ag)) |
---|
201 | | - | then aj |
---|
| 158 | + | func ai (ag,ah) = if ((ah >= ad)) |
---|
| 159 | + | then ag |
---|
202 | 160 | | else throw("List size exceeds 7") |
---|
203 | 161 | | |
---|
204 | | - | al(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
| 162 | + | ai(af(af(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
205 | 163 | | } |
---|
206 | 164 | | if ($isInstanceOf(n, "Address")) |
---|
207 | 165 | | then { |
---|
208 | | - | let ae = n |
---|
209 | | - | ae |
---|
| 166 | + | let ab = n |
---|
| 167 | + | ab |
---|
210 | 168 | | } |
---|
211 | | - | else throw(("unknown " + aa)) |
---|
| 169 | + | else throw(("unknown " + X)) |
---|
212 | 170 | | } |
---|
213 | 171 | | |
---|
214 | 172 | | |
---|
215 | | - | func am (ad) = if (contains(C, ad)) |
---|
216 | | - | then valueOrErrorMessage(addressFromString(ad), "main: bad reserve") |
---|
217 | | - | else throw(("unknown reserve:" + ad)) |
---|
| 173 | + | func aj (aa) = if (contains(z, aa)) |
---|
| 174 | + | then valueOrErrorMessage(addressFromString(aa), "main: bad rsr") |
---|
| 175 | + | else throw(("unknown rsr:" + aa)) |
---|
218 | 176 | | |
---|
219 | 177 | | |
---|
220 | | - | func an (R,ao) = v(invoke(R, "userBalance", [ao], nil)) |
---|
| 178 | + | func ak (O,al) = s(invoke(O, "userBalance", [al], nil)) |
---|
221 | 179 | | |
---|
222 | 180 | | |
---|
223 | | - | let ap = { |
---|
224 | | - | let n = getString(B, "protected_reserve") |
---|
| 181 | + | let am = { |
---|
| 182 | + | let n = getString(y, "protected_reserve") |
---|
225 | 183 | | if ($isInstanceOf(n, "String")) |
---|
226 | 184 | | then { |
---|
227 | | - | let aq = n |
---|
228 | | - | valueOrErrorMessage(addressFromString(aq), "bad protected_reserve") |
---|
| 185 | + | let an = n |
---|
| 186 | + | valueOrErrorMessage(addressFromString(an), "bad protected_reserve") |
---|
229 | 187 | | } |
---|
230 | 188 | | else unit |
---|
231 | 189 | | } |
---|
232 | 190 | | |
---|
233 | | - | let ar = valueOrErrorMessage(ap, "no protected reserve") |
---|
| 191 | + | let ao = valueOrErrorMessage(am, "no protected rsr") |
---|
234 | 192 | | |
---|
235 | | - | func as (ao) = { |
---|
236 | | - | let at = { |
---|
237 | | - | let n = ap |
---|
| 193 | + | func ap (al) = { |
---|
| 194 | + | let aq = { |
---|
| 195 | + | let n = am |
---|
238 | 196 | | if ($isInstanceOf(n, "Address")) |
---|
239 | 197 | | then { |
---|
240 | | - | let au = n |
---|
241 | | - | valueOrElse(getBoolean(au, ("protected_collateral_" + ao)), false) |
---|
| 198 | + | let ar = n |
---|
| 199 | + | valueOrElse(getBoolean(ar, ("protected_collateral_" + al)), false) |
---|
242 | 200 | | } |
---|
243 | 201 | | else false |
---|
244 | 202 | | } |
---|
245 | | - | if (at) |
---|
| 203 | + | if (aq) |
---|
246 | 204 | | then throw("disallowed: can't have regular when protected exists") |
---|
247 | 205 | | else unit |
---|
248 | 206 | | } |
---|
249 | 207 | | |
---|
250 | 208 | | |
---|
251 | | - | func av (ao) = { |
---|
252 | | - | let aw = { |
---|
253 | | - | let n = ap |
---|
| 209 | + | func as (al) = { |
---|
| 210 | + | let at = { |
---|
| 211 | + | let n = am |
---|
254 | 212 | | if ($isInstanceOf(n, "Address")) |
---|
255 | 213 | | then { |
---|
256 | | - | let au = n |
---|
257 | | - | m(invoke(au, "borrowPower", [ao], nil)) |
---|
| 214 | + | let ar = n |
---|
| 215 | + | m(invoke(ar, "borrowPower", [al], nil)) |
---|
258 | 216 | | } |
---|
259 | 217 | | else 0 |
---|
260 | 218 | | } |
---|
261 | | - | func ab (ax,ad) = { |
---|
262 | | - | let ay = ax |
---|
263 | | - | let az = ay._1 |
---|
264 | | - | let aA = ay._2 |
---|
265 | | - | let aB = ay._3 |
---|
266 | | - | let R = valueOrErrorMessage(addressFromString(ad), "reserve bad address") |
---|
267 | | - | let aC = S(R) |
---|
268 | | - | let aD = T(R) |
---|
269 | | - | let aE = an(R, ao) |
---|
270 | | - | let aF = aE._1 |
---|
271 | | - | let aG = aE._2 |
---|
272 | | - | let aH = aE._3 |
---|
273 | | - | let aI = aE._4 |
---|
274 | | - | let aJ = aE._5 |
---|
275 | | - | let aK = aE._6 |
---|
276 | | - | let aL = (aB + (if ((aI > 0)) |
---|
| 219 | + | func Y (au,aa) = { |
---|
| 220 | + | let av = au |
---|
| 221 | + | let aw = av._1 |
---|
| 222 | + | let ax = av._2 |
---|
| 223 | + | let ay = av._3 |
---|
| 224 | + | let O = valueOrErrorMessage(addressFromString(aa), "rsr bad address") |
---|
| 225 | + | let az = P(O) |
---|
| 226 | + | let aA = Q(O) |
---|
| 227 | + | let aB = ak(O, al) |
---|
| 228 | + | let aC = aB._1 |
---|
| 229 | + | let aD = aB._2 |
---|
| 230 | + | let aE = aB._3 |
---|
| 231 | + | let aF = aB._4 |
---|
| 232 | + | let aG = aB._5 |
---|
| 233 | + | let aH = aB._6 |
---|
| 234 | + | let aI = (ay + (if ((aF > 0)) |
---|
277 | 235 | | then 1 |
---|
278 | 236 | | else 0)) |
---|
279 | | - | let aM = if (aK) |
---|
280 | | - | then aH |
---|
| 237 | + | let aJ = if (aH) |
---|
| 238 | + | then aE |
---|
281 | 239 | | else 0 |
---|
282 | | - | let aN = min([aJ, aM]) |
---|
283 | | - | let aO = b(aN, W, a) |
---|
284 | | - | if ((aJ > aM)) |
---|
285 | | - | then $Tuple3(az, ((aA + fraction((aJ - aM), a, aD)) + aO), aL) |
---|
286 | | - | else $Tuple3((az + fraction((aM - aJ), aC, a)), (aA + aO), aL) |
---|
| 240 | + | let aK = min([aG, aJ]) |
---|
| 241 | + | let aL = b(aK, T, a) |
---|
| 242 | + | if ((aG > aJ)) |
---|
| 243 | + | then $Tuple3(aw, ((ax + fraction((aG - aJ), a, aA)) + aL), aI) |
---|
| 244 | + | else $Tuple3((aw + fraction((aJ - aG), az, a)), (ax + aL), aI) |
---|
287 | 245 | | } |
---|
288 | 246 | | |
---|
289 | | - | let ad = { |
---|
290 | | - | let af = D |
---|
291 | | - | let ag = size(af) |
---|
292 | | - | let ah = $Tuple3(aw, 0, 0) |
---|
293 | | - | func ai (aj,ak) = if ((ak >= ag)) |
---|
294 | | - | then aj |
---|
295 | | - | else ab(aj, af[ak]) |
---|
| 247 | + | let aa = { |
---|
| 248 | + | let ac = A |
---|
| 249 | + | let ad = size(ac) |
---|
| 250 | + | let ae = $Tuple3(at, 0, 0) |
---|
| 251 | + | func af (ag,ah) = if ((ah >= ad)) |
---|
| 252 | + | then ag |
---|
| 253 | + | else Y(ag, ac[ah]) |
---|
296 | 254 | | |
---|
297 | | - | func al (aj,ak) = if ((ak >= ag)) |
---|
298 | | - | then aj |
---|
| 255 | + | func ai (ag,ah) = if ((ah >= ad)) |
---|
| 256 | + | then ag |
---|
299 | 257 | | else throw("List size exceeds 7") |
---|
300 | 258 | | |
---|
301 | | - | al(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
| 259 | + | ai(af(af(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
302 | 260 | | } |
---|
303 | | - | if (if ((aw > 0)) |
---|
304 | | - | then (ad._3 > 2) |
---|
| 261 | + | if (if ((at > 0)) |
---|
| 262 | + | then (aa._3 > 2) |
---|
305 | 263 | | else false) |
---|
306 | 264 | | then throw("can't have more than 2 borrows with protected collateral") |
---|
307 | | - | else ad |
---|
| 265 | + | else aa |
---|
308 | 266 | | } |
---|
309 | 267 | | |
---|
310 | 268 | | |
---|
311 | | - | func aP (aQ) = { |
---|
312 | | - | let aR = s(av(aQ)) |
---|
313 | | - | let aS = aR._1 |
---|
314 | | - | let aT = aR._2 |
---|
315 | | - | let aU = aR._3 |
---|
316 | | - | ((("bp:" + toString(aS)) + ", bpu:") + toString(aT)) |
---|
| 269 | + | func aM (aN) = { |
---|
| 270 | + | let aO = p(as(aN)) |
---|
| 271 | + | let aP = aO._1 |
---|
| 272 | + | let aQ = aO._2 |
---|
| 273 | + | let aR = aO._3 |
---|
| 274 | + | ((("bp:" + toString(aP)) + ", bpu:") + toString(aQ)) |
---|
317 | 275 | | } |
---|
318 | 276 | | |
---|
319 | 277 | | |
---|
320 | | - | func aV (ao,aW) = { |
---|
321 | | - | let aX = av(ao) |
---|
322 | | - | let aS = aX._1 |
---|
323 | | - | let aT = aX._2 |
---|
324 | | - | let aY = (((aS - aT) * a) / aS) |
---|
325 | | - | if (if ((aS == 0)) |
---|
326 | | - | then (aT == 0) |
---|
| 278 | + | func aS (al,aT) = { |
---|
| 279 | + | let aU = as(al) |
---|
| 280 | + | let aP = aU._1 |
---|
| 281 | + | let aQ = aU._2 |
---|
| 282 | + | let aV = (((aP - aQ) * a) / aP) |
---|
| 283 | + | if (if ((aP == 0)) |
---|
| 284 | + | then (aQ == 0) |
---|
327 | 285 | | else false) |
---|
328 | 286 | | then nil |
---|
329 | | - | else if (if ((aS == 0)) |
---|
330 | | - | then (aT > 0) |
---|
| 287 | + | else if (if ((aP == 0)) |
---|
| 288 | + | then (aQ > 0) |
---|
331 | 289 | | else false) |
---|
332 | | - | then throw(((aW + " too much: breaching liquidation threshold(bp=0, bpu=") + toString(aT))) |
---|
333 | | - | else if ((V > aY)) |
---|
334 | | - | then throw((((((((aW + " too much: breaching liquidation threshold(bp=") + toString(aS)) + ", bpu=") + toString(aT)) + ", health=") + toString(aY)) + ")")) |
---|
| 290 | + | then throw(((aT + " too much: breaching liquidation threshold(bp=0, bpu=") + toString(aQ))) |
---|
| 291 | + | else if ((S > aV)) |
---|
| 292 | + | then throw((((((((aT + " too much: breaching liquidation threshold(bp=") + toString(aP)) + ", bpu=") + toString(aQ)) + ", health=") + toString(aV)) + ")")) |
---|
335 | 293 | | else nil |
---|
336 | 294 | | } |
---|
337 | 295 | | |
---|
338 | 296 | | |
---|
339 | | - | func aZ (R,ba,ao,bb,bc) = { |
---|
340 | | - | let n = J |
---|
| 297 | + | func aW (O,aX,al,aY,aZ) = { |
---|
| 298 | + | let n = G |
---|
341 | 299 | | if ($isInstanceOf(n, "Address")) |
---|
342 | 300 | | then { |
---|
343 | | - | let ac = n |
---|
344 | | - | invoke(ac, "onAction", [R, ba, ao, bb, bc], nil) |
---|
| 301 | + | let Z = n |
---|
| 302 | + | invoke(Z, "onAction", [O, aX, al, aY, aZ], nil) |
---|
345 | 303 | | } |
---|
346 | 304 | | else unit |
---|
347 | 305 | | } |
---|
348 | 306 | | |
---|
349 | 307 | | |
---|
350 | | - | func bd (R,ba,be,bf,bg) = { |
---|
351 | | - | let n = J |
---|
| 308 | + | func ba (O,aX,bb,bc,bd) = { |
---|
| 309 | + | let n = G |
---|
352 | 310 | | if ($isInstanceOf(n, "Address")) |
---|
353 | 311 | | then { |
---|
354 | | - | let ac = n |
---|
355 | | - | invoke(ac, "move", [R, ba, be, bf, bg], nil) |
---|
| 312 | + | let Z = n |
---|
| 313 | + | invoke(Z, "move", [O, aX, bb, bc, bd], nil) |
---|
356 | 314 | | } |
---|
357 | 315 | | else unit |
---|
358 | 316 | | } |
---|
359 | 317 | | |
---|
360 | 318 | | |
---|
361 | | - | func bh (R) = { |
---|
362 | | - | let n = J |
---|
| 319 | + | func be (O) = { |
---|
| 320 | + | let n = G |
---|
363 | 321 | | if ($isInstanceOf(n, "Address")) |
---|
364 | 322 | | then { |
---|
365 | | - | let ac = n |
---|
366 | | - | invoke(ac, "syncHeight", [R], nil) |
---|
| 323 | + | let Z = n |
---|
| 324 | + | invoke(Z, "syncHeight", [O], nil) |
---|
367 | 325 | | } |
---|
368 | 326 | | else unit |
---|
369 | 327 | | } |
---|
370 | 328 | | |
---|
371 | 329 | | |
---|
372 | | - | func bi (bj,bg,bk) = if (!(bk)) |
---|
373 | | - | then [ScriptTransfer(bj, bg, N)] |
---|
| 330 | + | func bf (bg,bd,bh) = if (!(bh)) |
---|
| 331 | + | then [ScriptTransfer(bg, bd, K)] |
---|
374 | 332 | | else { |
---|
375 | | - | let bl = invoke(I, "lockFor", [toString(bj), 1], [AttachedPayment(N, bg)]) |
---|
376 | | - | if ((bl == bl)) |
---|
| 333 | + | let bi = invoke(F, "lockFor", [toString(bg), 1], [AttachedPayment(K, bd)]) |
---|
| 334 | + | if ((bi == bi)) |
---|
377 | 335 | | then nil |
---|
378 | 336 | | else throw("Strict value is not equal to itself.") |
---|
379 | 337 | | } |
---|
380 | 338 | | |
---|
381 | 339 | | |
---|
382 | | - | func bm (P,R,bn) = { |
---|
383 | | - | let ao = toString(P.caller) |
---|
384 | | - | let bo = as(ao) |
---|
385 | | - | if ((bo == bo)) |
---|
| 340 | + | func bj (M,O,bk) = { |
---|
| 341 | + | let al = toString(M.caller) |
---|
| 342 | + | let bl = ap(al) |
---|
| 343 | + | if ((bl == bl)) |
---|
386 | 344 | | then { |
---|
387 | | - | let bp = bh(R) |
---|
388 | | - | if ((bp == bp)) |
---|
| 345 | + | let bm = be(O) |
---|
| 346 | + | if ((bm == bm)) |
---|
389 | 347 | | then { |
---|
390 | | - | let ba = invoke(am(R), "depositFor", [ao, bn], P.payments) |
---|
391 | | - | if ((ba == ba)) |
---|
| 348 | + | let aX = invoke(aj(O), "depositFor", [al, bk], M.payments) |
---|
| 349 | + | if ((aX == aX)) |
---|
392 | 350 | | then { |
---|
393 | | - | let bq = P.payments[0].amount |
---|
394 | | - | let br = aZ(R, "deposit", ao, bq, bq) |
---|
395 | | - | if ((br == br)) |
---|
396 | | - | then if (!(bn)) |
---|
397 | | - | then aV(ao, "depositing") |
---|
| 351 | + | let bn = M.payments[0].amount |
---|
| 352 | + | let bo = aW(O, "deposit", al, bn, bn) |
---|
| 353 | + | if ((bo == bo)) |
---|
| 354 | + | then if (!(bk)) |
---|
| 355 | + | then aS(al, "depositing") |
---|
398 | 356 | | else nil |
---|
399 | 357 | | else throw("Strict value is not equal to itself.") |
---|
400 | 358 | | } |
---|
401 | 359 | | else throw("Strict value is not equal to itself.") |
---|
402 | 360 | | } |
---|
403 | 361 | | else throw("Strict value is not equal to itself.") |
---|
404 | 362 | | } |
---|
405 | 363 | | else throw("Strict value is not equal to itself.") |
---|
406 | 364 | | } |
---|
407 | 365 | | |
---|
408 | 366 | | |
---|
409 | | - | func bs (ao) = { |
---|
410 | | - | let bt = m(invoke(E, "claimEbRewardFor", [ao, -1], nil)) |
---|
411 | | - | if ((bt == bt)) |
---|
| 367 | + | func bp (al) = { |
---|
| 368 | + | let bq = m(invoke(B, "claimEbRewardFor", [al, -1], nil)) |
---|
| 369 | + | if ((bq == bq)) |
---|
412 | 370 | | then { |
---|
413 | | - | let bu = split(valueOrErrorMessage(getString(B, "rewardable_reserves"), "no string"), "|") |
---|
414 | | - | func ab (bv,R) = { |
---|
415 | | - | let bw = m(invoke(L, "claimRewardFor", [R, ao, -1], nil)) |
---|
416 | | - | if ((bw == bw)) |
---|
417 | | - | then (bv + bw) |
---|
| 371 | + | let br = split(valueOrErrorMessage(getString(y, "rewardable_reserves"), "no string"), "|") |
---|
| 372 | + | func Y (bs,O) = { |
---|
| 373 | + | let bt = m(invoke(I, "claimRewardFor", [O, al, -1], nil)) |
---|
| 374 | + | if ((bt == bt)) |
---|
| 375 | + | then (bs + bt) |
---|
418 | 376 | | else throw("Strict value is not equal to itself.") |
---|
419 | 377 | | } |
---|
420 | 378 | | |
---|
421 | | - | let bx = { |
---|
422 | | - | let af = bu |
---|
423 | | - | let ag = size(af) |
---|
424 | | - | let ah = 0 |
---|
425 | | - | func ai (aj,ak) = if ((ak >= ag)) |
---|
426 | | - | then aj |
---|
427 | | - | else ab(aj, af[ak]) |
---|
| 379 | + | let bu = { |
---|
| 380 | + | let ac = br |
---|
| 381 | + | let ad = size(ac) |
---|
| 382 | + | let ae = 0 |
---|
| 383 | + | func af (ag,ah) = if ((ah >= ad)) |
---|
| 384 | + | then ag |
---|
| 385 | + | else Y(ag, ac[ah]) |
---|
428 | 386 | | |
---|
429 | | - | func al (aj,ak) = if ((ak >= ag)) |
---|
430 | | - | then aj |
---|
| 387 | + | func ai (ag,ah) = if ((ah >= ad)) |
---|
| 388 | + | then ag |
---|
431 | 389 | | else throw("List size exceeds 7") |
---|
432 | 390 | | |
---|
433 | | - | al(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
| 391 | + | ai(af(af(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5), 6), 7) |
---|
434 | 392 | | } |
---|
435 | | - | (bx + bt) |
---|
| 393 | + | (bu + bq) |
---|
436 | 394 | | } |
---|
437 | 395 | | else throw("Strict value is not equal to itself.") |
---|
438 | 396 | | } |
---|
439 | 397 | | |
---|
440 | 398 | | |
---|
441 | | - | func by (bz,bA,R,bB) = { |
---|
442 | | - | let bq = m(invoke(ar, "withdrawToMain", [bz, bA], nil)) |
---|
443 | | - | if ((bq == bq)) |
---|
| 399 | + | func bv (bw,bx,O,by) = { |
---|
| 400 | + | let bn = m(invoke(ao, "withdrawToMain", [bw, bx], nil)) |
---|
| 401 | + | if ((bn == bn)) |
---|
444 | 402 | | then { |
---|
445 | | - | let j = if ((bA == "WAVES")) |
---|
| 403 | + | let j = if ((bx == "WAVES")) |
---|
446 | 404 | | then unit |
---|
447 | | - | else fromBase58String(bA) |
---|
448 | | - | let bC = invoke(R, "depositFor", [bz, true], [AttachedPayment(j, bq)]) |
---|
449 | | - | if ((bC == bC)) |
---|
| 405 | + | else fromBase58String(bx) |
---|
| 406 | + | let bz = invoke(O, "depositFor", [bw, true], [AttachedPayment(j, bn)]) |
---|
| 407 | + | if ((bz == bz)) |
---|
450 | 408 | | then { |
---|
451 | | - | let bD = aZ(bB, "deposit", bz, bq, bq) |
---|
452 | | - | if ((bD == bD)) |
---|
| 409 | + | let bA = aW(by, "deposit", bw, bn, bn) |
---|
| 410 | + | if ((bA == bA)) |
---|
453 | 411 | | then unit |
---|
454 | 412 | | else throw("Strict value is not equal to itself.") |
---|
455 | 413 | | } |
---|
456 | 414 | | else throw("Strict value is not equal to itself.") |
---|
457 | 415 | | } |
---|
458 | 416 | | else throw("Strict value is not equal to itself.") |
---|
459 | 417 | | } |
---|
460 | 418 | | |
---|
461 | 419 | | |
---|
462 | | - | func bE (bF,bG,bH,bI,bJ,bK) = { |
---|
463 | | - | let bL = bh(bG) |
---|
464 | | - | if ((bL == bL)) |
---|
| 420 | + | func bB (bC,bD,bE,bF,bG,bH) = { |
---|
| 421 | + | let bI = be(bD) |
---|
| 422 | + | if ((bI == bI)) |
---|
465 | 423 | | then { |
---|
466 | | - | let bM = bh(bH) |
---|
467 | | - | if ((bM == bM)) |
---|
468 | | - | then if ((0 >= bJ)) |
---|
| 424 | + | let bJ = be(bE) |
---|
| 425 | + | if ((bJ == bJ)) |
---|
| 426 | + | then if ((0 >= bG)) |
---|
469 | 427 | | then throw("can't liquidate non-positive amount") |
---|
470 | | - | else if ((bH == bG)) |
---|
| 428 | + | else if ((bE == bD)) |
---|
471 | 429 | | then throw("collateralReserve equals borrowReserve") |
---|
472 | | - | else if ((bF == bI)) |
---|
| 430 | + | else if ((bC == bF)) |
---|
473 | 431 | | then throw("can't liquidate self") |
---|
474 | 432 | | else { |
---|
475 | | - | let bN = av(bI) |
---|
476 | | - | let aS = bN._1 |
---|
477 | | - | let aT = bN._2 |
---|
478 | | - | if ((aS > aT)) |
---|
479 | | - | then throw(((((("can't liquidate healthy user: u=" + bI) + ", bp=") + toString(aS)) + ", bpu=") + toString(aT))) |
---|
| 433 | + | let bK = as(bF) |
---|
| 434 | + | let aP = bK._1 |
---|
| 435 | + | let aQ = bK._2 |
---|
| 436 | + | if ((aP > aQ)) |
---|
| 437 | + | then throw(((((("can't liquidate healthy user: u=" + bF) + ", bp=") + toString(aP)) + ", bpu=") + toString(aQ))) |
---|
480 | 438 | | else { |
---|
481 | | - | let bO = am(bG) |
---|
482 | | - | let bP = am(bH) |
---|
483 | | - | let bQ = valueOrErrorMessage(getString(bO, "assetId"), ("no assetId field in borrowReserve " + bG)) |
---|
484 | | - | let bR = valueOrErrorMessage(getString(bP, "assetId"), ("no assetId field in collateralReserve " + bH)) |
---|
485 | | - | let bS = valueOrElse(getBoolean(bP, (bI + "_useAsCollateral")), false) |
---|
486 | | - | if ((bS == bS)) |
---|
487 | | - | then if (if (!(bK)) |
---|
488 | | - | then !(bS) |
---|
| 439 | + | let bL = aj(bD) |
---|
| 440 | + | let bM = aj(bE) |
---|
| 441 | + | let bN = valueOrErrorMessage(getString(bL, "assetId"), ("no assetId field in borrowReserve " + bD)) |
---|
| 442 | + | let bO = valueOrErrorMessage(getString(bM, "assetId"), ("no assetId field in collateralReserve " + bE)) |
---|
| 443 | + | let bP = valueOrElse(getBoolean(bM, (bF + "_useAsCollateral")), false) |
---|
| 444 | + | if ((bP == bP)) |
---|
| 445 | + | then if (if (!(bH)) |
---|
| 446 | + | then !(bP) |
---|
489 | 447 | | else false) |
---|
490 | 448 | | then throw("can't liquidate deposit not used as collateral") |
---|
491 | 449 | | else { |
---|
492 | | - | let bT = an(bO, bI) |
---|
493 | | - | if ((bT == bT)) |
---|
| 450 | + | let bQ = ak(bL, bF) |
---|
| 451 | + | if ((bQ == bQ)) |
---|
494 | 452 | | then { |
---|
495 | | - | let bU = bT._5 |
---|
496 | | - | let bV = bT._4 |
---|
497 | | - | let bW = bT._3 |
---|
498 | | - | let bX = bT._2 |
---|
499 | | - | let aU = bT._1 |
---|
500 | | - | if ((bX >= bV)) |
---|
| 453 | + | let bR = bQ._5 |
---|
| 454 | + | let bS = bQ._4 |
---|
| 455 | + | let bT = bQ._3 |
---|
| 456 | + | let bU = bQ._2 |
---|
| 457 | + | let aR = bQ._1 |
---|
| 458 | + | if ((bU >= bS)) |
---|
501 | 459 | | then throw("can't liquidate debt of asset of positive saldo") |
---|
502 | | - | else if ((0 >= bJ)) |
---|
| 460 | + | else if ((0 >= bG)) |
---|
503 | 461 | | then throw("can't liquidate zero or negative amount") |
---|
504 | | - | else if (((bJ * 2) > (bV - bX))) |
---|
505 | | - | then throw(((((("can't liquidate more than half of saldo: debt=" + toString(bV)) + ", deposit=") + toString(bX)) + ", liquidateDebtAmount = ") + toString(bJ))) |
---|
| 462 | + | else if (((bG * 2) > (bS - bU))) |
---|
| 463 | + | then throw(((((("can't liquidate more than half of saldo: debt=" + toString(bS)) + ", deposit=") + toString(bU)) + ", liquidateDebtAmount = ") + toString(bG))) |
---|
506 | 464 | | else { |
---|
507 | | - | let bY = fraction(bJ, bU, bV) |
---|
508 | | - | let bZ = fraction(bY, (a + U(bQ)), a) |
---|
509 | | - | let ca = if (bK) |
---|
510 | | - | then by(bI, bR, bP, bH) |
---|
| 465 | + | let bV = fraction(bG, bR, bS) |
---|
| 466 | + | let bW = fraction(bV, (a + R(bN)), a) |
---|
| 467 | + | let bX = if (bH) |
---|
| 468 | + | then bv(bF, bO, bM, bE) |
---|
511 | 469 | | else unit |
---|
512 | | - | if ((ca == ca)) |
---|
| 470 | + | if ((bX == bX)) |
---|
513 | 471 | | then { |
---|
514 | | - | let cb = m(invoke(bP, "transferATokensFor", [bI, bF, bZ], nil)) |
---|
515 | | - | if ((cb == cb)) |
---|
| 472 | + | let bY = m(invoke(bM, "transferATokensFor", [bF, bC, bW], nil)) |
---|
| 473 | + | if ((bY == bY)) |
---|
516 | 474 | | then { |
---|
517 | | - | let cc = bd(bH, "deposit", bI, bF, cb) |
---|
518 | | - | if ((cc == cc)) |
---|
| 475 | + | let bZ = ba(bE, "deposit", bF, bC, bY) |
---|
| 476 | + | if ((bZ == bZ)) |
---|
519 | 477 | | then { |
---|
520 | | - | let cd = m(invoke(bO, "transferDebtFor", [bI, bF, bJ], nil)) |
---|
521 | | - | if ((cd == cd)) |
---|
| 478 | + | let ca = m(invoke(bL, "transferDebtFor", [bF, bC, bG], nil)) |
---|
| 479 | + | if ((ca == ca)) |
---|
522 | 480 | | then { |
---|
523 | | - | let ce = bd(bG, "borrow", bI, bF, cd) |
---|
524 | | - | if ((ce == ce)) |
---|
| 481 | + | let cb = ba(bD, "borrow", bF, bC, ca) |
---|
| 482 | + | if ((cb == cb)) |
---|
525 | 483 | | then { |
---|
526 | | - | let cf = if (contains(Y, bF)) |
---|
| 484 | + | let cc = if (contains(V, bC)) |
---|
527 | 485 | | then nil |
---|
528 | | - | else aV(bF, "transferring debt") |
---|
529 | | - | if ((cf == cf)) |
---|
530 | | - | then $Tuple2(cf, cb) |
---|
| 486 | + | else aS(bC, "transferring debt") |
---|
| 487 | + | if ((cc == cc)) |
---|
| 488 | + | then $Tuple2(cc, bY) |
---|
531 | 489 | | else throw("Strict value is not equal to itself.") |
---|
532 | 490 | | } |
---|
533 | 491 | | else throw("Strict value is not equal to itself.") |
---|
534 | 492 | | } |
---|
535 | 493 | | else throw("Strict value is not equal to itself.") |
---|
536 | 494 | | } |
---|
537 | 495 | | else throw("Strict value is not equal to itself.") |
---|
538 | 496 | | } |
---|
539 | 497 | | else throw("Strict value is not equal to itself.") |
---|
540 | 498 | | } |
---|
541 | 499 | | else throw("Strict value is not equal to itself.") |
---|
542 | 500 | | } |
---|
543 | 501 | | } |
---|
544 | 502 | | else throw("Strict value is not equal to itself.") |
---|
545 | 503 | | } |
---|
546 | 504 | | else throw("Strict value is not equal to itself.") |
---|
547 | 505 | | } |
---|
548 | 506 | | } |
---|
549 | 507 | | else throw("Strict value is not equal to itself.") |
---|
550 | 508 | | } |
---|
551 | 509 | | else throw("Strict value is not equal to itself.") |
---|
552 | 510 | | } |
---|
553 | 511 | | |
---|
554 | 512 | | |
---|
555 | | - | func cg (bF,R,bI,bK) = { |
---|
556 | | - | let ch = am(R) |
---|
557 | | - | if ((ch == ch)) |
---|
| 513 | + | func cd (bC,O,bF,bH) = { |
---|
| 514 | + | let ce = aj(O) |
---|
| 515 | + | if ((ce == ce)) |
---|
558 | 516 | | then { |
---|
559 | | - | let bp = bh(R) |
---|
560 | | - | if ((bp == bp)) |
---|
561 | | - | then if ((bF == bI)) |
---|
| 517 | + | let bm = be(O) |
---|
| 518 | + | if ((bm == bm)) |
---|
| 519 | + | then if ((bC == bF)) |
---|
562 | 520 | | then throw("can't collapse self in this function") |
---|
563 | 521 | | else { |
---|
564 | | - | let ci = av(bI) |
---|
565 | | - | let aS = ci._1 |
---|
566 | | - | let aT = ci._2 |
---|
567 | | - | if ((aS > aT)) |
---|
568 | | - | then throw(((((("can't force collapse healthy user: u=" + bI) + ", bp=") + toString(aS)) + ", bpu=") + toString(aT))) |
---|
| 522 | + | let cf = as(bF) |
---|
| 523 | + | let aP = cf._1 |
---|
| 524 | + | let aQ = cf._2 |
---|
| 525 | + | if ((aP > aQ)) |
---|
| 526 | + | then throw(((((("can't force collapse healthy user: u=" + bF) + ", bp=") + toString(aP)) + ", bpu=") + toString(aQ))) |
---|
569 | 527 | | else { |
---|
570 | | - | let aG = valueOrErrorMessage(getString(ch, "assetId"), ("no assetId field in reserve " + R)) |
---|
571 | | - | let ca = if (bK) |
---|
572 | | - | then by(bI, aG, ch, R) |
---|
| 528 | + | let aD = valueOrErrorMessage(getString(ce, "assetId"), ("no assetId field in rsr " + O)) |
---|
| 529 | + | let bX = if (bH) |
---|
| 530 | + | then bv(bF, aD, ce, O) |
---|
573 | 531 | | else unit |
---|
574 | | - | if ((ca == ca)) |
---|
| 532 | + | if ((bX == bX)) |
---|
575 | 533 | | then { |
---|
576 | | - | let cj = an(ch, bI) |
---|
577 | | - | if ((cj == cj)) |
---|
| 534 | + | let cg = ak(ce, bF) |
---|
| 535 | + | if ((cg == cg)) |
---|
578 | 536 | | then { |
---|
579 | | - | let bU = cj._5 |
---|
580 | | - | let bV = cj._4 |
---|
581 | | - | let bW = cj._3 |
---|
582 | | - | let ck = cj._2 |
---|
583 | | - | let aU = cj._1 |
---|
584 | | - | let bZ = fraction(min([bW, bU]), X, a) |
---|
585 | | - | let cl = m(invoke(ch, "transferATokensFor", [bI, bF, bZ], nil)) |
---|
586 | | - | if ((cl == cl)) |
---|
| 537 | + | let bR = cg._5 |
---|
| 538 | + | let bS = cg._4 |
---|
| 539 | + | let bT = cg._3 |
---|
| 540 | + | let ch = cg._2 |
---|
| 541 | + | let aR = cg._1 |
---|
| 542 | + | let bW = fraction(min([bT, bR]), U, a) |
---|
| 543 | + | let ci = m(invoke(ce, "transferATokensFor", [bF, bC, bW], nil)) |
---|
| 544 | + | if ((ci == ci)) |
---|
587 | 545 | | then { |
---|
588 | | - | let cc = bd(R, "deposit", bI, bF, cl) |
---|
589 | | - | if ((cc == cc)) |
---|
| 546 | + | let bZ = ba(O, "deposit", bF, bC, ci) |
---|
| 547 | + | if ((bZ == bZ)) |
---|
590 | 548 | | then { |
---|
591 | | - | let cm = m(invoke(ch, "collapseFor", [bI], nil)) |
---|
592 | | - | if ((cm == cm)) |
---|
| 549 | + | let cj = m(invoke(ce, "collapseFor", [bF], nil)) |
---|
| 550 | + | if ((cj == cj)) |
---|
593 | 551 | | then { |
---|
594 | | - | let ce = aZ(R, "borrow", bI, -(cm), -(cm)) |
---|
595 | | - | if ((ce == ce)) |
---|
| 552 | + | let cb = aW(O, "borrow", bF, -(cj), -(cj)) |
---|
| 553 | + | if ((cb == cb)) |
---|
596 | 554 | | then { |
---|
597 | | - | let cn = aZ(R, "deposit", bI, -(cm), -(cm)) |
---|
598 | | - | if ((cn == cn)) |
---|
| 555 | + | let ck = aW(O, "deposit", bF, -(cj), -(cj)) |
---|
| 556 | + | if ((ck == ck)) |
---|
599 | 557 | | then nil |
---|
600 | 558 | | else throw("Strict value is not equal to itself.") |
---|
601 | 559 | | } |
---|
602 | 560 | | else throw("Strict value is not equal to itself.") |
---|
603 | 561 | | } |
---|
604 | 562 | | else throw("Strict value is not equal to itself.") |
---|
605 | 563 | | } |
---|
606 | 564 | | else throw("Strict value is not equal to itself.") |
---|
607 | 565 | | } |
---|
608 | 566 | | else throw("Strict value is not equal to itself.") |
---|
609 | 567 | | } |
---|
610 | 568 | | else throw("Strict value is not equal to itself.") |
---|
611 | 569 | | } |
---|
612 | 570 | | else throw("Strict value is not equal to itself.") |
---|
613 | 571 | | } |
---|
614 | 572 | | } |
---|
615 | 573 | | else throw("Strict value is not equal to itself.") |
---|
616 | 574 | | } |
---|
617 | 575 | | else throw("Strict value is not equal to itself.") |
---|
618 | 576 | | } |
---|
619 | 577 | | |
---|
620 | 578 | | |
---|
621 | | - | func co () = invoke(I, "shareProfitFromReserves", nil, nil) |
---|
| 579 | + | func cl () = invoke(F, "shareProfitFromReserves", nil, nil) |
---|
622 | 580 | | |
---|
623 | 581 | | |
---|
624 | | - | func cp (ao,R,bg,aW) = { |
---|
625 | | - | let bp = bh(toString(R)) |
---|
626 | | - | if ((bp == bp)) |
---|
| 582 | + | func cm (al,O,bd,aT) = { |
---|
| 583 | + | let bm = be(toString(O)) |
---|
| 584 | + | if ((bm == bm)) |
---|
627 | 585 | | then { |
---|
628 | | - | let cq = m(invoke(R, aW, [ao, bg], nil)) |
---|
629 | | - | if ((cq == cq)) |
---|
| 586 | + | let cn = m(invoke(O, aT, [al, bd], nil)) |
---|
| 587 | + | if ((cn == cn)) |
---|
630 | 588 | | then { |
---|
631 | | - | let br = aZ(toString(R), "deposit", ao, -(cq), -(cq)) |
---|
632 | | - | if ((br == br)) |
---|
633 | | - | then cq |
---|
| 589 | + | let bo = aW(toString(O), "deposit", al, -(cn), -(cn)) |
---|
| 590 | + | if ((bo == bo)) |
---|
| 591 | + | then cn |
---|
634 | 592 | | else throw("Strict value is not equal to itself.") |
---|
635 | 593 | | } |
---|
636 | 594 | | else throw("Strict value is not equal to itself.") |
---|
637 | 595 | | } |
---|
638 | 596 | | else throw("Strict value is not equal to itself.") |
---|
639 | 597 | | } |
---|
640 | 598 | | |
---|
641 | 599 | | |
---|
642 | | - | @Callable(P) |
---|
643 | | - | func initialize (cr) = [k(w, cr)] |
---|
| 600 | + | @Callable(M) |
---|
| 601 | + | func initialize (co) = [k(t, co)] |
---|
644 | 602 | | |
---|
645 | 603 | | |
---|
646 | 604 | | |
---|
647 | | - | @Callable(P) |
---|
648 | | - | func deposit (R,bn) = bm(P, R, bn) |
---|
| 605 | + | @Callable(M) |
---|
| 606 | + | func deposit (O,bk) = bj(M, O, bk) |
---|
649 | 607 | | |
---|
650 | 608 | | |
---|
651 | 609 | | |
---|
652 | | - | @Callable(P) |
---|
653 | | - | func depositRef (R,bn,cs) = bm(P, R, bn) |
---|
| 610 | + | @Callable(M) |
---|
| 611 | + | func depositRef (O,bk,cp) = bj(M, O, bk) |
---|
654 | 612 | | |
---|
655 | 613 | | |
---|
656 | 614 | | |
---|
657 | | - | @Callable(P) |
---|
658 | | - | func repay (R) = { |
---|
659 | | - | let ao = toString(P.caller) |
---|
660 | | - | let bp = bh(R) |
---|
661 | | - | if ((bp == bp)) |
---|
| 615 | + | @Callable(M) |
---|
| 616 | + | func repay (O) = { |
---|
| 617 | + | let al = toString(M.caller) |
---|
| 618 | + | let bm = be(O) |
---|
| 619 | + | if ((bm == bm)) |
---|
662 | 620 | | then { |
---|
663 | | - | let ct = m(invoke(am(R), "repayFor", [ao], P.payments)) |
---|
664 | | - | if ((ct == ct)) |
---|
| 621 | + | let cq = m(invoke(aj(O), "repayFor", [al], M.payments)) |
---|
| 622 | + | if ((cq == cq)) |
---|
665 | 623 | | then { |
---|
666 | | - | let br = aZ(R, "borrow", ao, -(ct), -(ct)) |
---|
667 | | - | if ((br == br)) |
---|
| 624 | + | let bo = aW(O, "borrow", al, -(cq), -(cq)) |
---|
| 625 | + | if ((bo == bo)) |
---|
668 | 626 | | then nil |
---|
669 | 627 | | else throw("Strict value is not equal to itself.") |
---|
670 | 628 | | } |
---|
671 | 629 | | else throw("Strict value is not equal to itself.") |
---|
672 | 630 | | } |
---|
673 | 631 | | else throw("Strict value is not equal to itself.") |
---|
674 | 632 | | } |
---|
675 | 633 | | |
---|
676 | 634 | | |
---|
677 | 635 | | |
---|
678 | | - | @Callable(P) |
---|
679 | | - | func mintAtoken (cu,bg) = { |
---|
680 | | - | let ao = toString(P.caller) |
---|
681 | | - | let cv = Z(y, cu) |
---|
682 | | - | let bp = bh(toString(cv)) |
---|
683 | | - | if ((bp == bp)) |
---|
| 636 | + | @Callable(M) |
---|
| 637 | + | func mintAtoken (cr,bd) = { |
---|
| 638 | + | let al = toString(M.caller) |
---|
| 639 | + | let cs = W(v, cr) |
---|
| 640 | + | let bm = be(toString(cs)) |
---|
| 641 | + | if ((bm == bm)) |
---|
684 | 642 | | then { |
---|
685 | | - | let bq = m(invoke(cv, "mintAtokenFor", [ao, bg], nil)) |
---|
686 | | - | if ((bq == bq)) |
---|
| 643 | + | let bn = m(invoke(cs, "mintAtokenFor", [al, bd], nil)) |
---|
| 644 | + | if ((bn == bn)) |
---|
687 | 645 | | then { |
---|
688 | | - | let br = aZ(toString(cv), "deposit", ao, -(bq), 0) |
---|
689 | | - | if ((br == br)) |
---|
690 | | - | then aV(ao, "minting") |
---|
| 646 | + | let bo = aW(toString(cs), "deposit", al, -(bn), 0) |
---|
| 647 | + | if ((bo == bo)) |
---|
| 648 | + | then aS(al, "minting") |
---|
691 | 649 | | else throw("Strict value is not equal to itself.") |
---|
692 | 650 | | } |
---|
693 | 651 | | else throw("Strict value is not equal to itself.") |
---|
694 | 652 | | } |
---|
695 | 653 | | else throw("Strict value is not equal to itself.") |
---|
696 | 654 | | } |
---|
697 | 655 | | |
---|
698 | 656 | | |
---|
699 | 657 | | |
---|
700 | | - | @Callable(P) |
---|
| 658 | + | @Callable(M) |
---|
701 | 659 | | func replenishWithAtoken () = { |
---|
702 | | - | let ao = toString(P.caller) |
---|
703 | | - | let bo = as(ao) |
---|
704 | | - | if ((bo == bo)) |
---|
| 660 | + | let al = toString(M.caller) |
---|
| 661 | + | let bl = ap(al) |
---|
| 662 | + | if ((bl == bl)) |
---|
705 | 663 | | then { |
---|
706 | | - | let cu = toBase58String(valueOrErrorMessage(P.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
707 | | - | let cv = Z(y, cu) |
---|
708 | | - | let bp = bh(toString(cv)) |
---|
709 | | - | if ((bp == bp)) |
---|
| 664 | + | let cr = toBase58String(valueOrErrorMessage(M.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
| 665 | + | let cs = W(v, cr) |
---|
| 666 | + | let bm = be(toString(cs)) |
---|
| 667 | + | if ((bm == bm)) |
---|
710 | 668 | | then { |
---|
711 | | - | let bq = m(invoke(cv, "replenishWithAtokenFor", [ao], P.payments)) |
---|
712 | | - | if ((bq == bq)) |
---|
| 669 | + | let bn = m(invoke(cs, "replenishWithAtokenFor", [al], M.payments)) |
---|
| 670 | + | if ((bn == bn)) |
---|
713 | 671 | | then { |
---|
714 | | - | let br = aZ(toString(cv), "deposit", ao, bq, 0) |
---|
715 | | - | if ((br == br)) |
---|
| 672 | + | let bo = aW(toString(cs), "deposit", al, bn, 0) |
---|
| 673 | + | if ((bo == bo)) |
---|
716 | 674 | | then nil |
---|
717 | 675 | | else throw("Strict value is not equal to itself.") |
---|
718 | 676 | | } |
---|
719 | 677 | | else throw("Strict value is not equal to itself.") |
---|
720 | 678 | | } |
---|
721 | 679 | | else throw("Strict value is not equal to itself.") |
---|
722 | 680 | | } |
---|
723 | 681 | | else throw("Strict value is not equal to itself.") |
---|
724 | 682 | | } |
---|
725 | 683 | | |
---|
726 | 684 | | |
---|
727 | 685 | | |
---|
728 | | - | @Callable(P) |
---|
| 686 | + | @Callable(M) |
---|
729 | 687 | | func redeemAtokens () = { |
---|
730 | | - | let ao = toString(P.caller) |
---|
731 | | - | let cu = toBase58String(valueOrErrorMessage(P.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
732 | | - | let cv = Z(y, cu) |
---|
733 | | - | let bp = bh(toString(cv)) |
---|
734 | | - | if ((bp == bp)) |
---|
| 688 | + | let al = toString(M.caller) |
---|
| 689 | + | let cr = toBase58String(valueOrErrorMessage(M.payments[0].assetId, "bad assetId: waves not allowed")) |
---|
| 690 | + | let cs = W(v, cr) |
---|
| 691 | + | let bm = be(toString(cs)) |
---|
| 692 | + | if ((bm == bm)) |
---|
735 | 693 | | then { |
---|
736 | | - | let bq = m(invoke(cv, "redeemAtokensFor", [ao], P.payments)) |
---|
737 | | - | if ((bq == bq)) |
---|
| 694 | + | let bn = m(invoke(cs, "redeemAtokensFor", [al], M.payments)) |
---|
| 695 | + | if ((bn == bn)) |
---|
738 | 696 | | then { |
---|
739 | | - | let br = aZ(toString(cv), "deposit", ao, 0, -(bq)) |
---|
740 | | - | if ((br == br)) |
---|
| 697 | + | let bo = aW(toString(cs), "deposit", al, 0, -(bn)) |
---|
| 698 | + | if ((bo == bo)) |
---|
741 | 699 | | then nil |
---|
742 | 700 | | else throw("Strict value is not equal to itself.") |
---|
743 | 701 | | } |
---|
744 | 702 | | else throw("Strict value is not equal to itself.") |
---|
745 | 703 | | } |
---|
746 | 704 | | else throw("Strict value is not equal to itself.") |
---|
747 | 705 | | } |
---|
748 | 706 | | |
---|
749 | 707 | | |
---|
750 | 708 | | |
---|
751 | | - | @Callable(P) |
---|
752 | | - | func withdraw (j,bg) = { |
---|
753 | | - | let ao = toString(P.caller) |
---|
754 | | - | let cw = m(cp(ao, Z(z, j), bg, "withdrawFor")) |
---|
755 | | - | if ((cw == cw)) |
---|
756 | | - | then $Tuple2(aV(ao, "withdrawing"), cw) |
---|
| 709 | + | @Callable(M) |
---|
| 710 | + | func withdraw (j,bd) = { |
---|
| 711 | + | let al = toString(M.caller) |
---|
| 712 | + | let ct = m(cm(al, W(w, j), bd, "withdrawFor")) |
---|
| 713 | + | if ((ct == ct)) |
---|
| 714 | + | then $Tuple2(aS(al, "withdrawing"), ct) |
---|
757 | 715 | | else throw("Strict value is not equal to itself.") |
---|
758 | 716 | | } |
---|
759 | 717 | | |
---|
760 | 718 | | |
---|
761 | 719 | | |
---|
762 | | - | @Callable(P) |
---|
763 | | - | func withdraw2 (R,bg) = { |
---|
764 | | - | let ao = toString(P.caller) |
---|
765 | | - | let bp = bh(R) |
---|
766 | | - | if ((bp == bp)) |
---|
| 720 | + | @Callable(M) |
---|
| 721 | + | func withdraw2 (O,bd) = { |
---|
| 722 | + | let al = toString(M.caller) |
---|
| 723 | + | let bm = be(O) |
---|
| 724 | + | if ((bm == bm)) |
---|
767 | 725 | | then { |
---|
768 | | - | let bq = m(invoke(am(R), "withdrawFor", [ao, bg], nil)) |
---|
769 | | - | if ((bq == bq)) |
---|
| 726 | + | let bn = m(invoke(aj(O), "withdrawFor", [al, bd], nil)) |
---|
| 727 | + | if ((bn == bn)) |
---|
770 | 728 | | then { |
---|
771 | | - | let br = aZ(R, "deposit", ao, -(bq), -(bq)) |
---|
772 | | - | if ((br == br)) |
---|
773 | | - | then if (contains(Y, ao)) |
---|
| 729 | + | let bo = aW(O, "deposit", al, -(bn), -(bn)) |
---|
| 730 | + | if ((bo == bo)) |
---|
| 731 | + | then if (contains(V, al)) |
---|
774 | 732 | | then nil |
---|
775 | | - | else aV(ao, "withdrawing2") |
---|
| 733 | + | else aS(al, "withdrawing2") |
---|
776 | 734 | | else throw("Strict value is not equal to itself.") |
---|
777 | 735 | | } |
---|
778 | 736 | | else throw("Strict value is not equal to itself.") |
---|
779 | 737 | | } |
---|
780 | 738 | | else throw("Strict value is not equal to itself.") |
---|
781 | 739 | | } |
---|
782 | 740 | | |
---|
783 | 741 | | |
---|
784 | 742 | | |
---|
785 | | - | @Callable(P) |
---|
786 | | - | func protectCollateral (R) = { |
---|
787 | | - | let ao = toString(P.caller) |
---|
788 | | - | let ad = am(R) |
---|
789 | | - | let bq = m(cp(ao, ad, -1, "withdrawToMain")) |
---|
790 | | - | if ((bq == bq)) |
---|
| 743 | + | @Callable(M) |
---|
| 744 | + | func protectCollateral (O) = { |
---|
| 745 | + | let al = toString(M.caller) |
---|
| 746 | + | let aa = aj(O) |
---|
| 747 | + | let bn = m(cm(al, aa, -1, "withdrawToMain")) |
---|
| 748 | + | if ((bn == bn)) |
---|
791 | 749 | | then { |
---|
792 | | - | let j = i(getStringValue(ad, z)) |
---|
793 | | - | let cx = invoke(ar, "supplyFor", [ao], [AttachedPayment(j, bq)]) |
---|
794 | | - | if ((cx == cx)) |
---|
795 | | - | then $Tuple2(aV(ao, "protecting"), bq) |
---|
| 750 | + | let j = i(getStringValue(aa, w)) |
---|
| 751 | + | let cu = invoke(ao, "supplyFor", [al], [AttachedPayment(j, bn)]) |
---|
| 752 | + | if ((cu == cu)) |
---|
| 753 | + | then $Tuple2(aS(al, "protecting"), bn) |
---|
796 | 754 | | else throw("Strict value is not equal to itself.") |
---|
797 | 755 | | } |
---|
798 | 756 | | else throw("Strict value is not equal to itself.") |
---|
799 | 757 | | } |
---|
800 | 758 | | |
---|
801 | 759 | | |
---|
802 | 760 | | |
---|
803 | | - | @Callable(P) |
---|
804 | | - | func withdrawProtectedCollateral (j,bg) = { |
---|
805 | | - | let ao = toString(P.caller) |
---|
806 | | - | let ac = m(invoke(valueOrErrorMessage(ar, "no protectedReserve"), "withdrawFor", [ao, j, bg], nil)) |
---|
807 | | - | if ((ac == ac)) |
---|
808 | | - | then aV(ao, "withdrawing protected collateral") |
---|
| 761 | + | @Callable(M) |
---|
| 762 | + | func withdrawProtectedCollateral (j,bd) = { |
---|
| 763 | + | let al = toString(M.caller) |
---|
| 764 | + | let Z = m(invoke(valueOrErrorMessage(ao, "no protectedReserve"), "withdrawFor", [al, j, bd], nil)) |
---|
| 765 | + | if ((Z == Z)) |
---|
| 766 | + | then aS(al, "withdrawing protected collateral") |
---|
809 | 767 | | else throw("Strict value is not equal to itself.") |
---|
810 | 768 | | } |
---|
811 | 769 | | |
---|
812 | 770 | | |
---|
813 | 771 | | |
---|
814 | | - | @Callable(P) |
---|
815 | | - | func borrow (j,bg) = { |
---|
816 | | - | let ao = toString(P.caller) |
---|
817 | | - | let R = Z(z, j) |
---|
818 | | - | let bp = bh(toString(R)) |
---|
819 | | - | if ((bp == bp)) |
---|
| 772 | + | @Callable(M) |
---|
| 773 | + | func normalizeCollateral (O) = { |
---|
| 774 | + | let bw = toString(M.caller) |
---|
| 775 | + | let cv = aj(O) |
---|
| 776 | + | if ((cv == cv)) |
---|
820 | 777 | | then { |
---|
821 | | - | let ac = invoke(R, "borrowFor", [ao, bg], nil) |
---|
822 | | - | if ((ac == ac)) |
---|
| 778 | + | let bm = be(O) |
---|
| 779 | + | if ((bm == bm)) |
---|
823 | 780 | | then { |
---|
824 | | - | let br = aZ(toString(R), "borrow", ao, bg, bg) |
---|
825 | | - | if ((br == br)) |
---|
826 | | - | then aV(ao, "borrowing") |
---|
| 781 | + | let cw = valueOrErrorMessage(getString(cv, "assetId"), ("no assetId field in reserveAddress " + O)) |
---|
| 782 | + | let bX = bv(bw, cw, cv, O) |
---|
| 783 | + | if ((bX == bX)) |
---|
| 784 | + | then nil |
---|
827 | 785 | | else throw("Strict value is not equal to itself.") |
---|
828 | 786 | | } |
---|
829 | 787 | | else throw("Strict value is not equal to itself.") |
---|
830 | 788 | | } |
---|
831 | 789 | | else throw("Strict value is not equal to itself.") |
---|
832 | 790 | | } |
---|
833 | 791 | | |
---|
834 | 792 | | |
---|
835 | 793 | | |
---|
836 | | - | @Callable(P) |
---|
837 | | - | func borrow2 (R,bg) = { |
---|
838 | | - | let ao = toString(P.caller) |
---|
839 | | - | let bp = bh(R) |
---|
840 | | - | if ((bp == bp)) |
---|
| 794 | + | @Callable(M) |
---|
| 795 | + | func borrow (j,bd) = { |
---|
| 796 | + | let al = toString(M.caller) |
---|
| 797 | + | let O = W(w, j) |
---|
| 798 | + | let bm = be(toString(O)) |
---|
| 799 | + | if ((bm == bm)) |
---|
841 | 800 | | then { |
---|
842 | | - | let ac = invoke(am(R), "borrowFor", [ao, bg], nil) |
---|
843 | | - | if ((ac == ac)) |
---|
| 801 | + | let Z = invoke(O, "borrowFor", [al, bd], nil) |
---|
| 802 | + | if ((Z == Z)) |
---|
844 | 803 | | then { |
---|
845 | | - | let br = aZ(R, "borrow", ao, bg, bg) |
---|
846 | | - | if ((br == br)) |
---|
847 | | - | then aV(ao, "borrowing") |
---|
| 804 | + | let bo = aW(toString(O), "borrow", al, bd, bd) |
---|
| 805 | + | if ((bo == bo)) |
---|
| 806 | + | then aS(al, "borrowing") |
---|
848 | 807 | | else throw("Strict value is not equal to itself.") |
---|
849 | 808 | | } |
---|
850 | 809 | | else throw("Strict value is not equal to itself.") |
---|
851 | 810 | | } |
---|
852 | 811 | | else throw("Strict value is not equal to itself.") |
---|
853 | 812 | | } |
---|
854 | 813 | | |
---|
855 | 814 | | |
---|
856 | 815 | | |
---|
857 | | - | @Callable(P) |
---|
858 | | - | func collapse (R,bg) = { |
---|
859 | | - | let ao = toString(P.caller) |
---|
860 | | - | let bp = bh(R) |
---|
861 | | - | if ((bp == bp)) |
---|
| 816 | + | @Callable(M) |
---|
| 817 | + | func borrow2 (O,bd) = { |
---|
| 818 | + | let al = toString(M.caller) |
---|
| 819 | + | let bm = be(O) |
---|
| 820 | + | if ((bm == bm)) |
---|
862 | 821 | | then { |
---|
863 | | - | let cy = m(invoke(am(R), "collapseForAmount", [ao, bg], nil)) |
---|
864 | | - | if ((cy == cy)) |
---|
| 822 | + | let Z = invoke(aj(O), "borrowFor", [al, bd], nil) |
---|
| 823 | + | if ((Z == Z)) |
---|
865 | 824 | | then { |
---|
866 | | - | let br = aZ(R, "borrow", ao, -(cy), -(cy)) |
---|
867 | | - | if ((br == br)) |
---|
| 825 | + | let bo = aW(O, "borrow", al, bd, bd) |
---|
| 826 | + | if ((bo == bo)) |
---|
| 827 | + | then aS(al, "borrowing") |
---|
| 828 | + | else throw("Strict value is not equal to itself.") |
---|
| 829 | + | } |
---|
| 830 | + | else throw("Strict value is not equal to itself.") |
---|
| 831 | + | } |
---|
| 832 | + | else throw("Strict value is not equal to itself.") |
---|
| 833 | + | } |
---|
| 834 | + | |
---|
| 835 | + | |
---|
| 836 | + | |
---|
| 837 | + | @Callable(M) |
---|
| 838 | + | func collapse (O,bd) = { |
---|
| 839 | + | let al = toString(M.caller) |
---|
| 840 | + | let bm = be(O) |
---|
| 841 | + | if ((bm == bm)) |
---|
| 842 | + | then { |
---|
| 843 | + | let cx = m(invoke(aj(O), "collapseForAmount", [al, bd], nil)) |
---|
| 844 | + | if ((cx == cx)) |
---|
| 845 | + | then { |
---|
| 846 | + | let bo = aW(O, "borrow", al, -(cx), -(cx)) |
---|
| 847 | + | if ((bo == bo)) |
---|
868 | 848 | | then { |
---|
869 | | - | let ce = aZ(R, "deposit", ao, -(cy), -(cy)) |
---|
870 | | - | if ((ce == ce)) |
---|
| 849 | + | let cb = aW(O, "deposit", al, -(cx), -(cx)) |
---|
| 850 | + | if ((cb == cb)) |
---|
871 | 851 | | then nil |
---|
872 | 852 | | else throw("Strict value is not equal to itself.") |
---|
873 | 853 | | } |
---|
874 | 854 | | else throw("Strict value is not equal to itself.") |
---|
875 | 855 | | } |
---|
876 | 856 | | else throw("Strict value is not equal to itself.") |
---|
877 | 857 | | } |
---|
878 | 858 | | else throw("Strict value is not equal to itself.") |
---|
879 | 859 | | } |
---|
880 | 860 | | |
---|
881 | 861 | | |
---|
882 | 862 | | |
---|
883 | | - | @Callable(P) |
---|
884 | | - | func claimEbReward2 (bg,bk) = { |
---|
885 | | - | let ao = toString(P.caller) |
---|
886 | | - | let cy = m(invoke(E, "claimEbRewardFor", [ao, bg], nil)) |
---|
887 | | - | if ((cy == cy)) |
---|
888 | | - | then bi(P.caller, cy, bk) |
---|
| 863 | + | @Callable(M) |
---|
| 864 | + | func claimEbReward2 (bd,bh) = { |
---|
| 865 | + | let al = toString(M.caller) |
---|
| 866 | + | let cx = m(invoke(B, "claimEbRewardFor", [al, bd], nil)) |
---|
| 867 | + | if ((cx == cx)) |
---|
| 868 | + | then bf(M.caller, cx, bh) |
---|
889 | 869 | | else throw("Strict value is not equal to itself.") |
---|
890 | 870 | | } |
---|
891 | 871 | | |
---|
892 | 872 | | |
---|
893 | 873 | | |
---|
894 | | - | @Callable(P) |
---|
895 | | - | func claimReward2 (R,bg,bk) = { |
---|
896 | | - | let cz = am(R) |
---|
897 | | - | if ((cz == cz)) |
---|
| 874 | + | @Callable(M) |
---|
| 875 | + | func claimReward2 (O,bd,bh) = { |
---|
| 876 | + | let cy = aj(O) |
---|
| 877 | + | if ((cy == cy)) |
---|
898 | 878 | | then { |
---|
899 | | - | let ao = toString(P.caller) |
---|
900 | | - | let cy = m(invoke(L, "claimRewardFor", [R, ao, bg], nil)) |
---|
901 | | - | if ((cy == cy)) |
---|
902 | | - | then bi(P.caller, cy, bk) |
---|
| 879 | + | let al = toString(M.caller) |
---|
| 880 | + | let cx = m(invoke(I, "claimRewardFor", [O, al, bd], nil)) |
---|
| 881 | + | if ((cx == cx)) |
---|
| 882 | + | then bf(M.caller, cx, bh) |
---|
903 | 883 | | else throw("Strict value is not equal to itself.") |
---|
904 | 884 | | } |
---|
905 | 885 | | else throw("Strict value is not equal to itself.") |
---|
906 | 886 | | } |
---|
907 | 887 | | |
---|
908 | 888 | | |
---|
909 | 889 | | |
---|
910 | | - | @Callable(P) |
---|
911 | | - | func claimAllRewardsAndAllEbAvailable2 (bk,cA) = { |
---|
912 | | - | let ao = toString(P.caller) |
---|
913 | | - | let bP = bs(ao) |
---|
914 | | - | if ((bP == bP)) |
---|
| 890 | + | @Callable(M) |
---|
| 891 | + | func claimAllRewardsAndAllEbAvailable2 (bh,cz) = { |
---|
| 892 | + | let al = toString(M.caller) |
---|
| 893 | + | let bM = bp(al) |
---|
| 894 | + | if ((bM == bM)) |
---|
915 | 895 | | then { |
---|
916 | | - | let cB = if (cA) |
---|
917 | | - | then m(invoke(H, "unstakeAllViresFrom", [ao], nil)) |
---|
| 896 | + | let cA = if (cz) |
---|
| 897 | + | then m(invoke(E, "unstakeAllViresFrom", [al], nil)) |
---|
918 | 898 | | else 0 |
---|
919 | | - | if ((cB == cB)) |
---|
920 | | - | then bi(P.caller, (bP + cB), bk) |
---|
| 899 | + | if ((cA == cA)) |
---|
| 900 | + | then bf(M.caller, (bM + cA), bh) |
---|
921 | 901 | | else throw("Strict value is not equal to itself.") |
---|
922 | 902 | | } |
---|
923 | 903 | | else throw("Strict value is not equal to itself.") |
---|
924 | 904 | | } |
---|
925 | 905 | | |
---|
926 | 906 | | |
---|
927 | 907 | | |
---|
928 | | - | @Callable(P) |
---|
929 | | - | func disableUseAsCollateral (R) = { |
---|
930 | | - | let ao = toString(P.caller) |
---|
931 | | - | let K = invoke(am(R), "disableUseAsCollateralFor", [ao], nil) |
---|
932 | | - | if ((K == K)) |
---|
933 | | - | then aV(ao, "changing collateral status") |
---|
| 908 | + | @Callable(M) |
---|
| 909 | + | func disableUseAsCollateral (O) = { |
---|
| 910 | + | let al = toString(M.caller) |
---|
| 911 | + | let H = invoke(aj(O), "disableUseAsCollateralFor", [al], nil) |
---|
| 912 | + | if ((H == H)) |
---|
| 913 | + | then aS(al, "changing collateral status") |
---|
934 | 914 | | else throw("Strict value is not equal to itself.") |
---|
935 | 915 | | } |
---|
936 | 916 | | |
---|
937 | 917 | | |
---|
938 | 918 | | |
---|
939 | | - | @Callable(P) |
---|
940 | | - | func transferDebt (bO,bP,cC,cD) = bE(toString(P.caller), bO, bP, cC, cD, false) |
---|
| 919 | + | @Callable(M) |
---|
| 920 | + | func transferDebt (bL,bM,cB,cC) = bB(toString(M.caller), bL, bM, cB, cC, false) |
---|
941 | 921 | | |
---|
942 | 922 | | |
---|
943 | 923 | | |
---|
944 | | - | @Callable(P) |
---|
945 | | - | func transferDebt2 (bO,bP,cC,cD) = bE(toString(P.caller), bO, bP, cC, cD, true) |
---|
| 924 | + | @Callable(M) |
---|
| 925 | + | func transferDebt2 (bL,bM,cB,cC) = bB(toString(M.caller), bL, bM, cB, cC, true) |
---|
946 | 926 | | |
---|
947 | 927 | | |
---|
948 | 928 | | |
---|
949 | | - | @Callable(P) |
---|
950 | | - | func forceCollapse (ad,cC) = cg(toString(P.caller), ad, cC, false) |
---|
| 929 | + | @Callable(M) |
---|
| 930 | + | func forceCollapse (aa,cB) = cd(toString(M.caller), aa, cB, false) |
---|
951 | 931 | | |
---|
952 | 932 | | |
---|
953 | 933 | | |
---|
954 | | - | @Callable(P) |
---|
955 | | - | func forceCollapse2 (ad,cC) = cg(toString(P.caller), ad, cC, true) |
---|
| 934 | + | @Callable(M) |
---|
| 935 | + | func forceCollapse2 (aa,cB) = cd(toString(M.caller), aa, cB, true) |
---|
956 | 936 | | |
---|
957 | 937 | | |
---|
958 | 938 | | |
---|
959 | | - | @Callable(P) |
---|
960 | | - | func lockVires (cE,cF) = { |
---|
961 | | - | let ao = toString(P.caller) |
---|
962 | | - | let ac = co() |
---|
963 | | - | if ((ac == ac)) |
---|
| 939 | + | @Callable(M) |
---|
| 940 | + | func lockVires (cD,cE) = { |
---|
| 941 | + | let al = toString(M.caller) |
---|
| 942 | + | let Z = cl() |
---|
| 943 | + | if ((Z == Z)) |
---|
964 | 944 | | then { |
---|
965 | | - | let cG = if (cF) |
---|
966 | | - | then m(invoke(H, "unstakeAllViresFrom", [ao], nil)) |
---|
| 945 | + | let cF = if (cE) |
---|
| 946 | + | then m(invoke(E, "unstakeAllViresFrom", [al], nil)) |
---|
967 | 947 | | else 0 |
---|
968 | | - | let cH = (cG + O(P)) |
---|
969 | | - | let cI = invoke(I, "lockFor", [ao, cE], if ((cH == 0)) |
---|
| 948 | + | let cG = (cF + L(M)) |
---|
| 949 | + | let cH = invoke(F, "lockFor", [al, cD], if ((cG == 0)) |
---|
970 | 950 | | then nil |
---|
971 | | - | else [AttachedPayment(N, cH)]) |
---|
972 | | - | if ((cI == cI)) |
---|
| 951 | + | else [AttachedPayment(K, cG)]) |
---|
| 952 | + | if ((cH == cH)) |
---|
973 | 953 | | then nil |
---|
974 | 954 | | else throw("Strict value is not equal to itself.") |
---|
975 | 955 | | } |
---|
976 | 956 | | else throw("Strict value is not equal to itself.") |
---|
977 | 957 | | } |
---|
978 | 958 | | |
---|
979 | 959 | | |
---|
980 | 960 | | |
---|
981 | | - | @Callable(P) |
---|
| 961 | + | @Callable(M) |
---|
982 | 962 | | func withdrawAllPossibleVires () = { |
---|
983 | | - | let ao = toString(P.caller) |
---|
984 | | - | let ac = co() |
---|
985 | | - | if ((ac == ac)) |
---|
| 963 | + | let al = toString(M.caller) |
---|
| 964 | + | let Z = cl() |
---|
| 965 | + | if ((Z == Z)) |
---|
986 | 966 | | then { |
---|
987 | | - | let cJ = m(invoke(H, "unstakeAllViresFrom", [ao], nil)) |
---|
988 | | - | if ((cJ == cJ)) |
---|
| 967 | + | let cI = m(invoke(E, "unstakeAllViresFrom", [al], nil)) |
---|
| 968 | + | if ((cI == cI)) |
---|
989 | 969 | | then { |
---|
990 | | - | let cK = invoke(I, "withdrawUnlockedFor", [ao], nil) |
---|
991 | | - | if ((cK == cK)) |
---|
992 | | - | then [ScriptTransfer(P.caller, cJ, N)] |
---|
| 970 | + | let cJ = invoke(F, "withdrawUnlockedFor", [al], nil) |
---|
| 971 | + | if ((cJ == cJ)) |
---|
| 972 | + | then [ScriptTransfer(M.caller, cI, K)] |
---|
993 | 973 | | else throw("Strict value is not equal to itself.") |
---|
994 | 974 | | } |
---|
995 | 975 | | else throw("Strict value is not equal to itself.") |
---|
996 | 976 | | } |
---|
997 | 977 | | else throw("Strict value is not equal to itself.") |
---|
998 | 978 | | } |
---|
999 | 979 | | |
---|
1000 | 980 | | |
---|
1001 | 981 | | |
---|
1002 | | - | @Callable(P) |
---|
1003 | | - | func claimProtocolProfitFrom (be,cL) = { |
---|
1004 | | - | let ao = toString(P.caller) |
---|
1005 | | - | let ac = co() |
---|
1006 | | - | if ((ac == ac)) |
---|
| 982 | + | @Callable(M) |
---|
| 983 | + | func claimProtocolProfitFrom (bb,cK) = { |
---|
| 984 | + | let al = toString(M.caller) |
---|
| 985 | + | let Z = cl() |
---|
| 986 | + | if ((Z == Z)) |
---|
1007 | 987 | | then { |
---|
1008 | | - | let cK = invoke(I, "claimProfit", [be, ao, cL], nil) |
---|
1009 | | - | if ((cK == cK)) |
---|
| 988 | + | let cJ = invoke(F, "claimProfit", [bb, al, cK], nil) |
---|
| 989 | + | if ((cJ == cJ)) |
---|
1010 | 990 | | then nil |
---|
1011 | 991 | | else throw("Strict value is not equal to itself.") |
---|
1012 | 992 | | } |
---|
1013 | 993 | | else throw("Strict value is not equal to itself.") |
---|
1014 | 994 | | } |
---|
1015 | 995 | | |
---|
1016 | 996 | | |
---|
1017 | 997 | | |
---|
1018 | | - | @Callable(P) |
---|
| 998 | + | @Callable(M) |
---|
1019 | 999 | | func withdrawUnlockedVires () = { |
---|
1020 | | - | let ac = co() |
---|
1021 | | - | if ((ac == ac)) |
---|
| 1000 | + | let Z = cl() |
---|
| 1001 | + | if ((Z == Z)) |
---|
1022 | 1002 | | then { |
---|
1023 | | - | let cK = invoke(I, "withdrawUnlockedFor", [toString(P.caller)], nil) |
---|
1024 | | - | if ((cK == cK)) |
---|
| 1003 | + | let cJ = invoke(F, "withdrawUnlockedFor", [toString(M.caller)], nil) |
---|
| 1004 | + | if ((cJ == cJ)) |
---|
1025 | 1005 | | then nil |
---|
1026 | 1006 | | else throw("Strict value is not equal to itself.") |
---|
1027 | 1007 | | } |
---|
1028 | 1008 | | else throw("Strict value is not equal to itself.") |
---|
1029 | 1009 | | } |
---|
1030 | 1010 | | |
---|
1031 | 1011 | | |
---|