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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c2FnZQAAAAIJAAQdAAAAAgUAAAANY29uZmlnQWRkcmVzcwIAAAAKZWJfcmV3YXJkcwIAAAAgbm8gZWJfcmV3YXJkcyBjb250cmFjdCBpbiBjb25maWcAAAAAC3ZpcmVzTWludGVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MCAAAADHZpcmVzX21pbnRlcgIAAAAUbWFpbjogbm8gdmlyZXNNaW50ZXICAAAAE2ludmFsaWQgdmlyZXNNaW50ZXIAAAAAB21heWJldlMJAAQdAAAAAgUAAAANY29uZmlnQWRkcmVzcwIAAAAMdmlyZXNfc3Rha2VyAAAAAAJ2UwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAAAdtYXliZXZTAgAAAA9ubyB2aXJlc19zdGFrZXIAAAAAAmRDCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MCAAAAEmRpdmlkZW5kc19jb250cmFjdAIAAAAVbm8gZGl2aWRlbmRzX2NvbnRyYWN0AgAAABppbnZhbGlkIGRpdmlkZW5kc19jb250cmFjdAAAAAADbVZEBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MFAAAAEGRpc3RyaWJ1dG9yU3RvcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABZAUAAAAHJG1hdGNoMAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAABZAUAAAAEdW5pdAAAAAACVkQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgUAAAADbVZEAgAAAB9ubyBkaXN0cmlidXRvciB0byBjbGFpbSByZXdhcmRzAAAAABFtYXliZVZpcmVzQXNzZXRJZAkABB0AAAACBQAAAAt2aXJlc01pbnRlcgIAAAAHYXNzZXRJZAAAAAAMdmlyZXNBc3NldElkCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAJZAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACBQAAABFtYXliZVZpcmVzQXNzZXRJZAIAAAAXdmlyZXMgYXNzZXRJZCBub3QgZm91bmQCAAAAFWludmFsaWQgdmlyZXMgYXNzZXRJZAEAAAAMdmlyZXNQYXltZW50AAAAAQAAAAFpAwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAAAAAAAAAAwkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAMdmlyZXNBc3NldElkCQAAAgAAAAECAAAACW5vdCB2aXJlcwgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AQAAABBhc3NldElkT2ZSZXNlcnZlAAAAAQAAAANyc3IJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAANyc3IFAAAADGFzc2V0SWRTdG9yZQIAAAARbm8gYXNzZXRJZCBpbiByc3IBAAAAEGNvbGxhdGVyYWxGYWN0b3IAAAABAAAAA3JzcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADWNvbmZpZ0FkZHJlc3MJAAEsAAAAAgkBAAAAEGFzc2V0SWRPZlJlc2VydmUAAAABBQAAAANyc3ICAAAAEV9Db2xsYXRlcmFsRmFjdG9yAgAAAB1ubyBDb2xsYXRlcmFsRmFjdG9yIGluIGNvbmZpZwEAAAAUbGlxdWlkYXRpb25UaHJlc2hvbGQAAAABAAAAA3JzcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADWNvbmZpZ0FkZHJlc3MJAAEsAAAAAgkBAAAAEGFzc2V0SWRPZlJlc2VydmUAAAABBQAAAANyc3ICAAAAFV9MaXF1aWRhdGlvblRocmVzaG9sZAIAAAAhbm8gTGlxdWlkYXRpb25UaHJlc2hvbGQgaW4gY29uZmlnAQAAABJsaXF1aWRhdGlvblBlbmFsdHkAAAABAAAAB2Fzc2V0SWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzCQABLAAAAAIFAAAAB2Fzc2V0SWQCAAAAE19MaXF1aWRhdGlvblBlbmFsdHkCAAAAH25vIExpcXVpZGF0aW9uUGVuYWx0eSBpbiBjb25maWcAAAAAFmFjY291bnRIZWFsdGhUaHJlc2hvbGQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABhhY2NvdW50X2hlYWx0aF90aHJlc2hvbGQCAAAAG25vIGFjY291bnRfaGVhbHRoX3RocmVzaG9sZAAAAAAUYWNjb3VudEhlYWx0aE92ZXJsYXAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABZhY2NvdW50X2hlYWx0aF9vdmVybGFwAgAAABlubyBhY2NvdW50X2hlYWx0aF9vdmVybGFwAAAAAA9jb2xsYXBzZVBlbmFsdHkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABBjb2xsYXBzZV9wZW5hbHR5AgAAABNubyBjb2xsYXBzZV9wZW5hbHR5AAAAAAtsaXF1aWRhdG9ycwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAA1jb25maWdBZGRyZXNzAgAAAAtsaXF1aWRhdG9ycwIAAAAAAQAAAA1maW5kUmVzZXJ2ZUJ5AAAAAgAAAAVzdG9yZQAAAAV2YWx1ZQoBAAAABGZvbGQAAAACAAAAAWEAAAABcgQAAAAHJG1hdGNoMAUAAAABYQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAAFZm91bmQFAAAAByRtYXRjaDAFAAAABWZvdW5kBAAAAANyc3IJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAFyAgAAAA9yc3IgYmFkIGFkZHJlc3MDCQAAAAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAANyc3IF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Y2FuJ3QgbGlxdWlkYXRlIGRlcG9zaXQgbm90IHVzZWQgYXMgY29sbGF0ZXJhbAQAAAANJHQwMTA2MzYxMDcyNgkBAAAAC3VzZXJCYWxhbmNlAAAAAgUAAAACYnIFAAAACGJvcnJvd2VyAwkAAAAAAAACBQAAAA0kdDAxMDYzNjEwNzI2BQAAAA0kdDAxMDYzNjEwNzI2BAAAAAt1c2VyRGVidFVzZAgFAAAADSR0MDEwNjM2MTA3MjYAAAACXzUEAAAACHVzZXJEZWJ0CAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfNAQAAAAMdXNlckFzc2V0VXNkCAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfMwQAAAAJdXNlckFzc2V0CAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfMgQAAAAGaWdub3JlCAUAAAANJHQwMTA2MzYxMDcyNgAAAAJfMQMJAABnAAAAAgUAAAAJdXNlckFzc2V0BQAAAAh1c2VyRGVidAkAAAIAAAABAgAAAC9jYW4ndCBsaXF1aWRhdGUgZGVidCBvZiBhc3NldCBvZiBwb3NpdGl2ZSBzYWxkbwMJAABnAAAAAgAAAAAAAAAAAAUAAAATbGlxdWlkYXRlRGVidEFtb3VudAkAAAIAAAABAgAAACdjYW4ndCBsaXF1aWRhdGUgemVybyBvciBuZWdhdGl2ZSBhbW91bnQDCQAAZgAAAAIJAABoAAAAAgUAAAATbGlxdWlkYXRlRGVidEFtb3VudAAAAAAAAAAAAgkAAGUAAAACBQAAAAh1c2VyRGVidAUAAAAJdXNlckFzc2V0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAC5jYW4ndCBsaXF1aWRhdGUgbW9yZSB0aGFuIGhhbGYgb2Ygc2FsZG86IGRlYnQ9CQABpAAAAAEFAAAACHVzZXJEZWJ0AgAAAAosIGRlcG9zaXQ9CQABpAAAAAEFAAAACXVzZXJBc3NldAIAAAAYLCBsaXF1aWRhdGVEZWJ0QW1vdW50ID0gCQABpAAAAAEFAAAAE2xpcXVpZGF0ZURlYnRBbW91bnQEAAAADWNvbGxhdGVyYWxVc2QJAABrAAAAAwUAAAATbGlxdWlkYXRlRGVidEFtb3VudAUAAAALdXNlckRlYnRVc2QFAAAACHVzZXJEZWJ0BAAAAA1wZW5hbHRpemVkVXNkCQAAawAAAAMFAAAADWNvbGxhdGVyYWxVc2QJAABkAAAAAgUAAAALZmFjdG9yc0Jhc2UJAQAAABJsaXF1aWRhdGlvblBlbmFsdHkAAAABBQAAAAtib3Jyb3dBc3NldAUAAAALZmFjdG9yc0Jhc2UEAAAAAm1jAwUAAAANZnJvbVByb3RlY3RlZAkBAAAADm1vdmVDb2xsYXRlcmFsAAAABAUAAAAIYm9ycm93ZXIFAAAAD2NvbGxhdGVyYWxBc3NldAUAAAACY3IFAAAAEWNvbGxhdGVyYWxSZXNlcnZlBQAAAAR1bml0AwkAAAAAAAACBQAAAAJtYwUAAAACbWMEAAAAFXRyYW5zZmVycmVkQ29sbGF0ZXJhbAkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAAAJjcgIAAAASdHJhbnNmZXJBVG9rZW5zRm9yCQAETAAAAAIFAAAACGJvcnJvd2VyCQAETAAAAAIFAAAACmxpcXVpZGF0b3IJAARMAAAAAgUAAAANcGVuYWx0aXplZFVzZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAFXRyYW5zZmVycmVkQ29sbGF0ZXJhbAUAAAAVdHJhbnNmZXJyZWRDb2xsYXRlcmFsBAAAAARwUncxCQEAAAAKbW92ZVN0cmVhbQAAAAUFAAAAEWNvbGxhdGVyYWxSZXNlcnZlAgAAAAdkZXBvc2l0BQAAAAhib3Jyb3dlcgUAAAAKbGlxdWlkYXRvcgUAAAAVdHJhbnNmZXJyZWRDb2xsYXRlcmFsAwkAAAAAAAACBQAAAARwUncxBQAAAARwUncxBAAAAA90cmFuc2ZlcnJlZERlYnQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAACYnICAAAAD3RyYW5zZmVyRGVidEZvcgkABEwAAAACBQAAAAhib3Jyb3dlcgkABEwAAAACBQAAAApsaXF1aWRhdG9yCQAETAAAAAIFAAAAE2xpcXVpZGF0ZURlYnRBbW91bnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA90cmFuc2ZlcnJlZERlYnQFAAAAD3RyYW5zZmVycmVkRGVidAQAAAAEcFJ3MgkBAAAACm1vdmVTdHJlYW0AAAAFBQAAAA1ib3Jyb3dSZXNlcnZlAgAAAAZib3Jyb3cFAAAACGJvcnJvd2VyBQAAAApsaXF1aWRhdG9yBQAAAA90cmFuc2ZlcnJlZERlYnQDCQAAAAAAAAIFAAAABHBSdzIFAAAABHBSdzIEAAAAFWxpcXVpZGF0b3JIZWFsdGhDaGVjawMJAQAAAAhjb250YWlucwAAAAIFAAAAC2xpcXVpZGF0b3JzBQAAAApsaXF1aWRhdG9yBQAAAANuaWwJAQAAAA12YWxpZGF0ZUFmdGVyAAAAAgUAAAAKbGlxdWlkYXRvcgIAAAARdHJhbnNmZXJyaW5nIGRlYnQDCQAAAAAAAAIFAAAAFWxpcXVpZGF0b3JIZWFsdGhDaGVjawUAAAAVbGlxdWlkYXRvckhlYWx0aENoZWNrCQAFFAAAAAIFAAAAFWxpcXVpZGF0b3JIZWFsdGhDaGVjawUAAAAVdHJhbnNmZXJyZWRDb2xsYXRlcmFsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAVZm9yY2VDb2xsYXBzZUludGVybmFsAAAABAAAAApsaXF1aWRhdG9yAAAAA3JzcgAAAAhib3Jyb3dlcgAAAA1mcm9tUHJvdGVjdGVkBAAAAA5yZXNlcnZlQWRkcmVzcwkBAAAAA3ZsUgAAAAEFAAAAA3JzcgMJAAAAAAAAAgUAAAAOcmVzZXJ2ZUFkZHJlc3MFAAAADnJlc2VydmVBZGRyZXNzBAAAAAJzaAkBAAAAEXN5bmNSZXdhcmRzSGVpZ2h0AAAAAQUAAAADcnNyAwkAAAAAAAACBQAAAAJzaAUAAAACc2gDCQAAAAAAAAIFAAAACmxpcXVpZGF0b3IFAAAACGJvcnJvd2VyCQAAAgAAAAECAAAAJGNhbid0IGNvbGxhcHNlIHNlbGYgaW4gdGhpcyBmdW5jdGlvbgQAAAANJHQwMTIzODkxMjQyNAkBAAAACXVzZXJQb3dlcgAAAAEFAAAACGJvcnJvd2VyBAAAAAJicAgFAAAADSR0MDEyMzg5MTI0MjQAAAACXzEEAAAAA2JwdQgFAAAADSR0MDEyMzg5MTI0MjQAAAACXzIDCQAAZgAAAAIFAAAAAmJwBQAAAANicHUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJWNhbid0IGZvcmNlIGNvbGxhcHNlIGhlYWx0aHkgdXNlcjogdT0FAAAACGJvcnJvd2VyAgAAAAUsIGJwPQkAAaQAAAABBQAAAAJicAIAAAAGLCBicHU9CQABpAAAAAEFAAAAA2JwdQQAAAAFYXNzZXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA5yZXNlcnZlQWRkcmVzcwIAAAAHYXNzZXRJZAkAASwAAAACAgAAABhubyBhc3NldElkIGZpZWxkIGluIHJzciAFAAAAA3JzcgQAAAACbWMDBQAAAA1mcm9tUHJvdGVjdGVkCQEAAAAObW92ZUNvbGxhdGVyYWwAAAAEBQAAAAhib3Jyb3dlcgUAAAAFYXNzZXQFAAAADnJlc2VydmVBZGRyZXNzBQAAAANyc3IFAAAABHVuaXQDCQAAAAAAAAIFAAAAAm1jBQAAAAJtYwQAAAANJHQwMTI3ODgxMjg5NgkBAAAAC3VzZXJCYWxhbmNlAAAAAgUAAAAOcmVzZXJ2ZUFkZHJlc3MFAAAACGJvcnJvd2VyAwkAAAAAAAACBQAAAA0kdDAxMjc4ODEyODk2BQAAAA0kdDAxMjc4ODEyODk2BAAAAAt1c2VyRGVidFVzZAgFAAAADSR0MDEyNzg4MTI4OTYAAAACXzUEAAAACHVzZXJEZWJ0CAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfNAQAAAAMdXNlckFzc2V0VXNkCAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfMwQAAAAPYm9ycm93ZXJEZXBvc2l0CAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfMgQAAAAGaWdub3JlCAUAAAANJHQwMTI3ODgxMjg5NgAAAAJfMQQAAAANcGVuYWx0aXplZFVzZAkAAGsAAAADCQABlwAAAAEJAARMAAAAAgUAAAAMdXNlckFzc2V0VXNkCQAETAAAAAIFAAAAC3VzZXJEZWJ0VXNkBQAAAANuaWwFAAAAD2NvbGxhcHNlUGVuYWx0eQUAAAALZmFjdG9yc0Jhc2UEAAAAEXRyYW5zZmVycmVkQXNzZXRzCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAADnJlc2VydmVBZGRyZXNzAgAAABJ0cmFuc2ZlckFUb2tlbnNGb3IJAARMAAAAAgUAAAAIYm9ycm93ZXIJAARMAAAAAgUAAAAKbGlxdWlkYXRvcgkABEwAAAACBQAAAA1wZW5hbHRpemVkVXNkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAARdHJhbnNmZXJyZWRBc3NldHMFAAAAEXRyYW5zZmVycmVkQXNzZXRzBAAAAARwUncxCQEAAAAKbW92ZVN0cmVhbQAAAAUFAAAAA3JzcgIAAAAHZGVwb3NpdAUAAAAIYm9ycm93ZXIFAAAACmxpcXVpZGF0b3IFAAAAEXRyYW5zZmVycmVkQXNzZXRzAwkAAAAAAAACBQAAAARwUncxBQAAAARwUncxBAAAAAljb2xsYXBzZWQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAAOcmVzZXJ2ZUFkZHJlc3MCAAAAC2NvbGxhcHNlRm9yCQAETAAAAAIFAAAACGJvcnJvd2VyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAJY29sbGFwc2VkBQAAAAljb2xsYXBzZWQEAAAABHBSdzIJAQAAAAx1cGRhdGVTdHJlYW0AAAAF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", "chainId": 87, "height": 3060480, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dmgi6FXUV4QaEQPFGxxa25dYa9m7YXitjLV5Eko4j5gw Next: FYugRjNsDRPdozY7MMr1DqLPC4fLem6onpqJANtykDY6 Diff:
OldNewDifferences
3636
3737 func p (c) = {
3838 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
5339 if ($isInstanceOf(n, "(Int, Int, Int)"))
5440 then {
5541 let q = n
6248 }
6349
6450
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) = {
9452 let n = c
9553 if ($isInstanceOf(n, "(Int, Int, Int, Int, Int, Boolean)"))
9654 then {
10462 }
10563
10664
107-let w = "config"
65+let t = "config"
10866
109-let x = "reserves"
67+let u = "reserves"
11068
111-let y = "aTokenId"
69+let v = "aTokenId"
11270
113-let z = "assetId"
71+let w = "assetId"
11472
115-let A = "vires_distributor"
73+let x = "vires_distributor"
11674
117-let B = addressFromStringValue(getStringValue(this, w))
75+let y = addressFromStringValue(getStringValue(this, t))
11876
119-let C = valueOrErrorMessage(getString(B, "primary_reserves"), "no reserves registered")
77+let z = valueOrErrorMessage(getString(y, "primary_reserves"), "no reserves registered")
12078
121-let D = split(C, "|")
79+let A = split(z, "|")
12280
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"))
12482
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")
12684
127-let G = getString(B, "vires_staker")
85+let D = getString(y, "vires_staker")
12886
129-let H = addressFromStringValue(valueOrErrorMessage(G, "no vires_staker"))
87+let E = addressFromStringValue(valueOrErrorMessage(D, "no vires_staker"))
13088
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")
13290
133-let J = {
134- let n = getString(B, A)
91+let G = {
92+ let n = getString(y, x)
13593 if ($isInstanceOf(n, "String"))
13694 then {
137- let K = n
138- addressFromStringValue(K)
95+ let H = n
96+ addressFromStringValue(H)
13997 }
14098 else unit
14199 }
142100
143-let L = valueOrErrorMessage(J, "no distributor to claim rewards")
101+let I = valueOrErrorMessage(G, "no distributor to claim rewards")
144102
145-let M = getString(F, "assetId")
103+let J = getString(C, "assetId")
146104
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")
148106
149-func O (P) = if ((size(P.payments) == 0))
107+func L (M) = if ((size(M.payments) == 0))
150108 then 0
151- else if ((P.payments[0].assetId != N))
109+ else if ((M.payments[0].assetId != K))
152110 then throw("not vires")
153- else P.payments[0].amount
111+ else M.payments[0].amount
154112
155113
156-func Q (R) = valueOrErrorMessage(getString(R, z), "no assetId in reserve")
114+func N (O) = valueOrErrorMessage(getString(O, w), "no assetId in rsr")
157115
158116
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")
160118
161119
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")
163121
164122
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")
166124
167125
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")
169127
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")
171129
172-let X = valueOrErrorMessage(getInteger(B, "collapse_penalty"), "no collapse_penalty")
130+let U = valueOrErrorMessage(getInteger(y, "collapse_penalty"), "no collapse_penalty")
173131
174-let Y = valueOrElse(getString(B, "liquidators"), "")
132+let V = valueOrElse(getString(y, "liquidators"), "")
175133
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
179137 if ($isInstanceOf(n, "Address"))
180138 then {
181- let ae = n
182- ae
139+ let ab = n
140+ ab
183141 }
184142 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
188146 else unit
189147 }
190148 }
191149
192150 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])
199157
200- func al (aj,ak) = if ((ak >= ag))
201- then aj
158+ func ai (ag,ah) = if ((ah >= ad))
159+ then ag
202160 else throw("List size exceeds 7")
203161
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)
205163 }
206164 if ($isInstanceOf(n, "Address"))
207165 then {
208- let ae = n
209- ae
166+ let ab = n
167+ ab
210168 }
211- else throw(("unknown " + aa))
169+ else throw(("unknown " + X))
212170 }
213171
214172
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))
218176
219177
220-func an (R,ao) = v(invoke(R, "userBalance", [ao], nil))
178+func ak (O,al) = s(invoke(O, "userBalance", [al], nil))
221179
222180
223-let ap = {
224- let n = getString(B, "protected_reserve")
181+let am = {
182+ let n = getString(y, "protected_reserve")
225183 if ($isInstanceOf(n, "String"))
226184 then {
227- let aq = n
228- valueOrErrorMessage(addressFromString(aq), "bad protected_reserve")
185+ let an = n
186+ valueOrErrorMessage(addressFromString(an), "bad protected_reserve")
229187 }
230188 else unit
231189 }
232190
233-let ar = valueOrErrorMessage(ap, "no protected reserve")
191+let ao = valueOrErrorMessage(am, "no protected rsr")
234192
235-func as (ao) = {
236- let at = {
237- let n = ap
193+func ap (al) = {
194+ let aq = {
195+ let n = am
238196 if ($isInstanceOf(n, "Address"))
239197 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)
242200 }
243201 else false
244202 }
245- if (at)
203+ if (aq)
246204 then throw("disallowed: can't have regular when protected exists")
247205 else unit
248206 }
249207
250208
251-func av (ao) = {
252- let aw = {
253- let n = ap
209+func as (al) = {
210+ let at = {
211+ let n = am
254212 if ($isInstanceOf(n, "Address"))
255213 then {
256- let au = n
257- m(invoke(au, "borrowPower", [ao], nil))
214+ let ar = n
215+ m(invoke(ar, "borrowPower", [al], nil))
258216 }
259217 else 0
260218 }
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))
277235 then 1
278236 else 0))
279- let aM = if (aK)
280- then aH
237+ let aJ = if (aH)
238+ then aE
281239 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)
287245 }
288246
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])
296254
297- func al (aj,ak) = if ((ak >= ag))
298- then aj
255+ func ai (ag,ah) = if ((ah >= ad))
256+ then ag
299257 else throw("List size exceeds 7")
300258
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)
302260 }
303- if (if ((aw > 0))
304- then (ad._3 > 2)
261+ if (if ((at > 0))
262+ then (aa._3 > 2)
305263 else false)
306264 then throw("can't have more than 2 borrows with protected collateral")
307- else ad
265+ else aa
308266 }
309267
310268
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))
317275 }
318276
319277
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)
327285 else false)
328286 then nil
329- else if (if ((aS == 0))
330- then (aT > 0)
287+ else if (if ((aP == 0))
288+ then (aQ > 0)
331289 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)) + ")"))
335293 else nil
336294 }
337295
338296
339-func aZ (R,ba,ao,bb,bc) = {
340- let n = J
297+func aW (O,aX,al,aY,aZ) = {
298+ let n = G
341299 if ($isInstanceOf(n, "Address"))
342300 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)
345303 }
346304 else unit
347305 }
348306
349307
350-func bd (R,ba,be,bf,bg) = {
351- let n = J
308+func ba (O,aX,bb,bc,bd) = {
309+ let n = G
352310 if ($isInstanceOf(n, "Address"))
353311 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)
356314 }
357315 else unit
358316 }
359317
360318
361-func bh (R) = {
362- let n = J
319+func be (O) = {
320+ let n = G
363321 if ($isInstanceOf(n, "Address"))
364322 then {
365- let ac = n
366- invoke(ac, "syncHeight", [R], nil)
323+ let Z = n
324+ invoke(Z, "syncHeight", [O], nil)
367325 }
368326 else unit
369327 }
370328
371329
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)]
374332 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))
377335 then nil
378336 else throw("Strict value is not equal to itself.")
379337 }
380338
381339
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))
386344 then {
387- let bp = bh(R)
388- if ((bp == bp))
345+ let bm = be(O)
346+ if ((bm == bm))
389347 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))
392350 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")
398356 else nil
399357 else throw("Strict value is not equal to itself.")
400358 }
406364 }
407365
408366
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))
412370 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)
418376 else throw("Strict value is not equal to itself.")
419377 }
420378
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])
428386
429- func al (aj,ak) = if ((ak >= ag))
430- then aj
387+ func ai (ag,ah) = if ((ah >= ad))
388+ then ag
431389 else throw("List size exceeds 7")
432390
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)
434392 }
435- (bx + bt)
393+ (bu + bq)
436394 }
437395 else throw("Strict value is not equal to itself.")
438396 }
439397
440398
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))
444402 then {
445- let j = if ((bA == "WAVES"))
403+ let j = if ((bx == "WAVES"))
446404 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))
450408 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))
453411 then unit
454412 else throw("Strict value is not equal to itself.")
455413 }
459417 }
460418
461419
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))
465423 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))
469427 then throw("can't liquidate non-positive amount")
470- else if ((bH == bG))
428+ else if ((bE == bD))
471429 then throw("collateralReserve equals borrowReserve")
472- else if ((bF == bI))
430+ else if ((bC == bF))
473431 then throw("can't liquidate self")
474432 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)))
480438 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)
489447 else false)
490448 then throw("can't liquidate deposit not used as collateral")
491449 else {
492- let bT = an(bO, bI)
493- if ((bT == bT))
450+ let bQ = ak(bL, bF)
451+ if ((bQ == bQ))
494452 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))
501459 then throw("can't liquidate debt of asset of positive saldo")
502- else if ((0 >= bJ))
460+ else if ((0 >= bG))
503461 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)))
506464 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)
511469 else unit
512- if ((ca == ca))
470+ if ((bX == bX))
513471 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))
516474 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))
519477 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))
522480 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))
525483 then {
526- let cf = if (contains(Y, bF))
484+ let cc = if (contains(V, bC))
527485 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)
531489 else throw("Strict value is not equal to itself.")
532490 }
533491 else throw("Strict value is not equal to itself.")
552510 }
553511
554512
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))
558516 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))
562520 then throw("can't collapse self in this function")
563521 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)))
569527 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)
573531 else unit
574- if ((ca == ca))
532+ if ((bX == bX))
575533 then {
576- let cj = an(ch, bI)
577- if ((cj == cj))
534+ let cg = ak(ce, bF)
535+ if ((cg == cg))
578536 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))
587545 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))
590548 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))
593551 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))
596554 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))
599557 then nil
600558 else throw("Strict value is not equal to itself.")
601559 }
618576 }
619577
620578
621-func co () = invoke(I, "shareProfitFromReserves", nil, nil)
579+func cl () = invoke(F, "shareProfitFromReserves", nil, nil)
622580
623581
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))
627585 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))
630588 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
634592 else throw("Strict value is not equal to itself.")
635593 }
636594 else throw("Strict value is not equal to itself.")
639597 }
640598
641599
642-@Callable(P)
643-func initialize (cr) = [k(w, cr)]
600+@Callable(M)
601+func initialize (co) = [k(t, co)]
644602
645603
646604
647-@Callable(P)
648-func deposit (R,bn) = bm(P, R, bn)
605+@Callable(M)
606+func deposit (O,bk) = bj(M, O, bk)
649607
650608
651609
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)
654612
655613
656614
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))
662620 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))
665623 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))
668626 then nil
669627 else throw("Strict value is not equal to itself.")
670628 }
675633
676634
677635
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))
684642 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))
687645 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")
691649 else throw("Strict value is not equal to itself.")
692650 }
693651 else throw("Strict value is not equal to itself.")
697655
698656
699657
700-@Callable(P)
658+@Callable(M)
701659 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))
705663 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))
710668 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))
713671 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))
716674 then nil
717675 else throw("Strict value is not equal to itself.")
718676 }
725683
726684
727685
728-@Callable(P)
686+@Callable(M)
729687 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))
735693 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))
738696 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))
741699 then nil
742700 else throw("Strict value is not equal to itself.")
743701 }
748706
749707
750708
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)
757715 else throw("Strict value is not equal to itself.")
758716 }
759717
760718
761719
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))
767725 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))
770728 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))
774732 then nil
775- else aV(ao, "withdrawing2")
733+ else aS(al, "withdrawing2")
776734 else throw("Strict value is not equal to itself.")
777735 }
778736 else throw("Strict value is not equal to itself.")
782740
783741
784742
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))
791749 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)
796754 else throw("Strict value is not equal to itself.")
797755 }
798756 else throw("Strict value is not equal to itself.")
800758
801759
802760
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")
809767 else throw("Strict value is not equal to itself.")
810768 }
811769
812770
813771
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))
820777 then {
821- let ac = invoke(R, "borrowFor", [ao, bg], nil)
822- if ((ac == ac))
778+ let bm = be(O)
779+ if ((bm == bm))
823780 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
827785 else throw("Strict value is not equal to itself.")
828786 }
829787 else throw("Strict value is not equal to itself.")
833791
834792
835793
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))
841800 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))
844803 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")
848807 else throw("Strict value is not equal to itself.")
849808 }
850809 else throw("Strict value is not equal to itself.")
854813
855814
856815
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))
862821 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))
865824 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))
868848 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))
871851 then nil
872852 else throw("Strict value is not equal to itself.")
873853 }
880860
881861
882862
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)
889869 else throw("Strict value is not equal to itself.")
890870 }
891871
892872
893873
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))
898878 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)
903883 else throw("Strict value is not equal to itself.")
904884 }
905885 else throw("Strict value is not equal to itself.")
907887
908888
909889
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))
915895 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))
918898 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)
921901 else throw("Strict value is not equal to itself.")
922902 }
923903 else throw("Strict value is not equal to itself.")
925905
926906
927907
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")
934914 else throw("Strict value is not equal to itself.")
935915 }
936916
937917
938918
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)
941921
942922
943923
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)
946926
947927
948928
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)
951931
952932
953933
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)
956936
957937
958938
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))
964944 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))
967947 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))
970950 then nil
971- else [AttachedPayment(N, cH)])
972- if ((cI == cI))
951+ else [AttachedPayment(K, cG)])
952+ if ((cH == cH))
973953 then nil
974954 else throw("Strict value is not equal to itself.")
975955 }
978958
979959
980960
981-@Callable(P)
961+@Callable(M)
982962 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))
986966 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))
989969 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)]
993973 else throw("Strict value is not equal to itself.")
994974 }
995975 else throw("Strict value is not equal to itself.")
999979
1000980
1001981
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))
1007987 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))
1010990 then nil
1011991 else throw("Strict value is not equal to itself.")
1012992 }
1015995
1016996
1017997
1018-@Callable(P)
998+@Callable(M)
1019999 func withdrawUnlockedVires () = {
1020- let ac = co()
1021- if ((ac == ac))
1000+ let Z = cl()
1001+ if ((Z == Z))
10221002 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))
10251005 then nil
10261006 else throw("Strict value is not equal to itself.")
10271007 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1000
55
66 func b (c,d,e) = {
77 let f = fraction(c, d, e)
88 let g = 3037000499
99 let h = ((((f % g) * (e % g)) % g) == (((c % g) * (d % g)) % g))
1010 if (h)
1111 then f
1212 else (f + 1)
1313 }
1414
1515
1616 func i (j) = if ((j == "WAVES"))
1717 then unit
1818 else fromBase58String(j)
1919
2020
2121 func k (l,c) = if (!(isDefined(getString(this, l))))
2222 then StringEntry(l, c)
2323 else throw(("already initialized: " + l))
2424
2525
2626 func m (c) = {
2727 let n = c
2828 if ($isInstanceOf(n, "Int"))
2929 then {
3030 let o = n
3131 o
3232 }
3333 else throw("wrong type, expected: Int")
3434 }
3535
3636
3737 func p (c) = {
3838 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
5339 if ($isInstanceOf(n, "(Int, Int, Int)"))
5440 then {
5541 let q = n
5642 q
5743 }
5844 else {
5945 let r = n
6046 throw("wrong type, expected: Int3")
6147 }
6248 }
6349
6450
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) = {
9452 let n = c
9553 if ($isInstanceOf(n, "(Int, Int, Int, Int, Int, Boolean)"))
9654 then {
9755 let q = n
9856 q
9957 }
10058 else {
10159 let r = n
10260 throw("wrong type, expected: Int5&Boolean")
10361 }
10462 }
10563
10664
107-let w = "config"
65+let t = "config"
10866
109-let x = "reserves"
67+let u = "reserves"
11068
111-let y = "aTokenId"
69+let v = "aTokenId"
11270
113-let z = "assetId"
71+let w = "assetId"
11472
115-let A = "vires_distributor"
73+let x = "vires_distributor"
11674
117-let B = addressFromStringValue(getStringValue(this, w))
75+let y = addressFromStringValue(getStringValue(this, t))
11876
119-let C = valueOrErrorMessage(getString(B, "primary_reserves"), "no reserves registered")
77+let z = valueOrErrorMessage(getString(y, "primary_reserves"), "no reserves registered")
12078
121-let D = split(C, "|")
79+let A = split(z, "|")
12280
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"))
12482
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")
12684
127-let G = getString(B, "vires_staker")
85+let D = getString(y, "vires_staker")
12886
129-let H = addressFromStringValue(valueOrErrorMessage(G, "no vires_staker"))
87+let E = addressFromStringValue(valueOrErrorMessage(D, "no vires_staker"))
13088
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")
13290
133-let J = {
134- let n = getString(B, A)
91+let G = {
92+ let n = getString(y, x)
13593 if ($isInstanceOf(n, "String"))
13694 then {
137- let K = n
138- addressFromStringValue(K)
95+ let H = n
96+ addressFromStringValue(H)
13997 }
14098 else unit
14199 }
142100
143-let L = valueOrErrorMessage(J, "no distributor to claim rewards")
101+let I = valueOrErrorMessage(G, "no distributor to claim rewards")
144102
145-let M = getString(F, "assetId")
103+let J = getString(C, "assetId")
146104
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")
148106
149-func O (P) = if ((size(P.payments) == 0))
107+func L (M) = if ((size(M.payments) == 0))
150108 then 0
151- else if ((P.payments[0].assetId != N))
109+ else if ((M.payments[0].assetId != K))
152110 then throw("not vires")
153- else P.payments[0].amount
111+ else M.payments[0].amount
154112
155113
156-func Q (R) = valueOrErrorMessage(getString(R, z), "no assetId in reserve")
114+func N (O) = valueOrErrorMessage(getString(O, w), "no assetId in rsr")
157115
158116
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")
160118
161119
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")
163121
164122
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")
166124
167125
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")
169127
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")
171129
172-let X = valueOrErrorMessage(getInteger(B, "collapse_penalty"), "no collapse_penalty")
130+let U = valueOrErrorMessage(getInteger(y, "collapse_penalty"), "no collapse_penalty")
173131
174-let Y = valueOrElse(getString(B, "liquidators"), "")
132+let V = valueOrElse(getString(y, "liquidators"), "")
175133
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
179137 if ($isInstanceOf(n, "Address"))
180138 then {
181- let ae = n
182- ae
139+ let ab = n
140+ ab
183141 }
184142 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
188146 else unit
189147 }
190148 }
191149
192150 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])
199157
200- func al (aj,ak) = if ((ak >= ag))
201- then aj
158+ func ai (ag,ah) = if ((ah >= ad))
159+ then ag
202160 else throw("List size exceeds 7")
203161
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)
205163 }
206164 if ($isInstanceOf(n, "Address"))
207165 then {
208- let ae = n
209- ae
166+ let ab = n
167+ ab
210168 }
211- else throw(("unknown " + aa))
169+ else throw(("unknown " + X))
212170 }
213171
214172
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))
218176
219177
220-func an (R,ao) = v(invoke(R, "userBalance", [ao], nil))
178+func ak (O,al) = s(invoke(O, "userBalance", [al], nil))
221179
222180
223-let ap = {
224- let n = getString(B, "protected_reserve")
181+let am = {
182+ let n = getString(y, "protected_reserve")
225183 if ($isInstanceOf(n, "String"))
226184 then {
227- let aq = n
228- valueOrErrorMessage(addressFromString(aq), "bad protected_reserve")
185+ let an = n
186+ valueOrErrorMessage(addressFromString(an), "bad protected_reserve")
229187 }
230188 else unit
231189 }
232190
233-let ar = valueOrErrorMessage(ap, "no protected reserve")
191+let ao = valueOrErrorMessage(am, "no protected rsr")
234192
235-func as (ao) = {
236- let at = {
237- let n = ap
193+func ap (al) = {
194+ let aq = {
195+ let n = am
238196 if ($isInstanceOf(n, "Address"))
239197 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)
242200 }
243201 else false
244202 }
245- if (at)
203+ if (aq)
246204 then throw("disallowed: can't have regular when protected exists")
247205 else unit
248206 }
249207
250208
251-func av (ao) = {
252- let aw = {
253- let n = ap
209+func as (al) = {
210+ let at = {
211+ let n = am
254212 if ($isInstanceOf(n, "Address"))
255213 then {
256- let au = n
257- m(invoke(au, "borrowPower", [ao], nil))
214+ let ar = n
215+ m(invoke(ar, "borrowPower", [al], nil))
258216 }
259217 else 0
260218 }
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))
277235 then 1
278236 else 0))
279- let aM = if (aK)
280- then aH
237+ let aJ = if (aH)
238+ then aE
281239 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)
287245 }
288246
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])
296254
297- func al (aj,ak) = if ((ak >= ag))
298- then aj
255+ func ai (ag,ah) = if ((ah >= ad))
256+ then ag
299257 else throw("List size exceeds 7")
300258
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)
302260 }
303- if (if ((aw > 0))
304- then (ad._3 > 2)
261+ if (if ((at > 0))
262+ then (aa._3 > 2)
305263 else false)
306264 then throw("can't have more than 2 borrows with protected collateral")
307- else ad
265+ else aa
308266 }
309267
310268
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))
317275 }
318276
319277
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)
327285 else false)
328286 then nil
329- else if (if ((aS == 0))
330- then (aT > 0)
287+ else if (if ((aP == 0))
288+ then (aQ > 0)
331289 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)) + ")"))
335293 else nil
336294 }
337295
338296
339-func aZ (R,ba,ao,bb,bc) = {
340- let n = J
297+func aW (O,aX,al,aY,aZ) = {
298+ let n = G
341299 if ($isInstanceOf(n, "Address"))
342300 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)
345303 }
346304 else unit
347305 }
348306
349307
350-func bd (R,ba,be,bf,bg) = {
351- let n = J
308+func ba (O,aX,bb,bc,bd) = {
309+ let n = G
352310 if ($isInstanceOf(n, "Address"))
353311 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)
356314 }
357315 else unit
358316 }
359317
360318
361-func bh (R) = {
362- let n = J
319+func be (O) = {
320+ let n = G
363321 if ($isInstanceOf(n, "Address"))
364322 then {
365- let ac = n
366- invoke(ac, "syncHeight", [R], nil)
323+ let Z = n
324+ invoke(Z, "syncHeight", [O], nil)
367325 }
368326 else unit
369327 }
370328
371329
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)]
374332 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))
377335 then nil
378336 else throw("Strict value is not equal to itself.")
379337 }
380338
381339
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))
386344 then {
387- let bp = bh(R)
388- if ((bp == bp))
345+ let bm = be(O)
346+ if ((bm == bm))
389347 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))
392350 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")
398356 else nil
399357 else throw("Strict value is not equal to itself.")
400358 }
401359 else throw("Strict value is not equal to itself.")
402360 }
403361 else throw("Strict value is not equal to itself.")
404362 }
405363 else throw("Strict value is not equal to itself.")
406364 }
407365
408366
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))
412370 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)
418376 else throw("Strict value is not equal to itself.")
419377 }
420378
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])
428386
429- func al (aj,ak) = if ((ak >= ag))
430- then aj
387+ func ai (ag,ah) = if ((ah >= ad))
388+ then ag
431389 else throw("List size exceeds 7")
432390
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)
434392 }
435- (bx + bt)
393+ (bu + bq)
436394 }
437395 else throw("Strict value is not equal to itself.")
438396 }
439397
440398
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))
444402 then {
445- let j = if ((bA == "WAVES"))
403+ let j = if ((bx == "WAVES"))
446404 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))
450408 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))
453411 then unit
454412 else throw("Strict value is not equal to itself.")
455413 }
456414 else throw("Strict value is not equal to itself.")
457415 }
458416 else throw("Strict value is not equal to itself.")
459417 }
460418
461419
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))
465423 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))
469427 then throw("can't liquidate non-positive amount")
470- else if ((bH == bG))
428+ else if ((bE == bD))
471429 then throw("collateralReserve equals borrowReserve")
472- else if ((bF == bI))
430+ else if ((bC == bF))
473431 then throw("can't liquidate self")
474432 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)))
480438 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)
489447 else false)
490448 then throw("can't liquidate deposit not used as collateral")
491449 else {
492- let bT = an(bO, bI)
493- if ((bT == bT))
450+ let bQ = ak(bL, bF)
451+ if ((bQ == bQ))
494452 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))
501459 then throw("can't liquidate debt of asset of positive saldo")
502- else if ((0 >= bJ))
460+ else if ((0 >= bG))
503461 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)))
506464 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)
511469 else unit
512- if ((ca == ca))
470+ if ((bX == bX))
513471 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))
516474 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))
519477 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))
522480 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))
525483 then {
526- let cf = if (contains(Y, bF))
484+ let cc = if (contains(V, bC))
527485 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)
531489 else throw("Strict value is not equal to itself.")
532490 }
533491 else throw("Strict value is not equal to itself.")
534492 }
535493 else throw("Strict value is not equal to itself.")
536494 }
537495 else throw("Strict value is not equal to itself.")
538496 }
539497 else throw("Strict value is not equal to itself.")
540498 }
541499 else throw("Strict value is not equal to itself.")
542500 }
543501 }
544502 else throw("Strict value is not equal to itself.")
545503 }
546504 else throw("Strict value is not equal to itself.")
547505 }
548506 }
549507 else throw("Strict value is not equal to itself.")
550508 }
551509 else throw("Strict value is not equal to itself.")
552510 }
553511
554512
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))
558516 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))
562520 then throw("can't collapse self in this function")
563521 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)))
569527 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)
573531 else unit
574- if ((ca == ca))
532+ if ((bX == bX))
575533 then {
576- let cj = an(ch, bI)
577- if ((cj == cj))
534+ let cg = ak(ce, bF)
535+ if ((cg == cg))
578536 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))
587545 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))
590548 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))
593551 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))
596554 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))
599557 then nil
600558 else throw("Strict value is not equal to itself.")
601559 }
602560 else throw("Strict value is not equal to itself.")
603561 }
604562 else throw("Strict value is not equal to itself.")
605563 }
606564 else throw("Strict value is not equal to itself.")
607565 }
608566 else throw("Strict value is not equal to itself.")
609567 }
610568 else throw("Strict value is not equal to itself.")
611569 }
612570 else throw("Strict value is not equal to itself.")
613571 }
614572 }
615573 else throw("Strict value is not equal to itself.")
616574 }
617575 else throw("Strict value is not equal to itself.")
618576 }
619577
620578
621-func co () = invoke(I, "shareProfitFromReserves", nil, nil)
579+func cl () = invoke(F, "shareProfitFromReserves", nil, nil)
622580
623581
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))
627585 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))
630588 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
634592 else throw("Strict value is not equal to itself.")
635593 }
636594 else throw("Strict value is not equal to itself.")
637595 }
638596 else throw("Strict value is not equal to itself.")
639597 }
640598
641599
642-@Callable(P)
643-func initialize (cr) = [k(w, cr)]
600+@Callable(M)
601+func initialize (co) = [k(t, co)]
644602
645603
646604
647-@Callable(P)
648-func deposit (R,bn) = bm(P, R, bn)
605+@Callable(M)
606+func deposit (O,bk) = bj(M, O, bk)
649607
650608
651609
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)
654612
655613
656614
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))
662620 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))
665623 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))
668626 then nil
669627 else throw("Strict value is not equal to itself.")
670628 }
671629 else throw("Strict value is not equal to itself.")
672630 }
673631 else throw("Strict value is not equal to itself.")
674632 }
675633
676634
677635
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))
684642 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))
687645 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")
691649 else throw("Strict value is not equal to itself.")
692650 }
693651 else throw("Strict value is not equal to itself.")
694652 }
695653 else throw("Strict value is not equal to itself.")
696654 }
697655
698656
699657
700-@Callable(P)
658+@Callable(M)
701659 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))
705663 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))
710668 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))
713671 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))
716674 then nil
717675 else throw("Strict value is not equal to itself.")
718676 }
719677 else throw("Strict value is not equal to itself.")
720678 }
721679 else throw("Strict value is not equal to itself.")
722680 }
723681 else throw("Strict value is not equal to itself.")
724682 }
725683
726684
727685
728-@Callable(P)
686+@Callable(M)
729687 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))
735693 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))
738696 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))
741699 then nil
742700 else throw("Strict value is not equal to itself.")
743701 }
744702 else throw("Strict value is not equal to itself.")
745703 }
746704 else throw("Strict value is not equal to itself.")
747705 }
748706
749707
750708
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)
757715 else throw("Strict value is not equal to itself.")
758716 }
759717
760718
761719
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))
767725 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))
770728 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))
774732 then nil
775- else aV(ao, "withdrawing2")
733+ else aS(al, "withdrawing2")
776734 else throw("Strict value is not equal to itself.")
777735 }
778736 else throw("Strict value is not equal to itself.")
779737 }
780738 else throw("Strict value is not equal to itself.")
781739 }
782740
783741
784742
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))
791749 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)
796754 else throw("Strict value is not equal to itself.")
797755 }
798756 else throw("Strict value is not equal to itself.")
799757 }
800758
801759
802760
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")
809767 else throw("Strict value is not equal to itself.")
810768 }
811769
812770
813771
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))
820777 then {
821- let ac = invoke(R, "borrowFor", [ao, bg], nil)
822- if ((ac == ac))
778+ let bm = be(O)
779+ if ((bm == bm))
823780 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
827785 else throw("Strict value is not equal to itself.")
828786 }
829787 else throw("Strict value is not equal to itself.")
830788 }
831789 else throw("Strict value is not equal to itself.")
832790 }
833791
834792
835793
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))
841800 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))
844803 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")
848807 else throw("Strict value is not equal to itself.")
849808 }
850809 else throw("Strict value is not equal to itself.")
851810 }
852811 else throw("Strict value is not equal to itself.")
853812 }
854813
855814
856815
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))
862821 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))
865824 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))
868848 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))
871851 then nil
872852 else throw("Strict value is not equal to itself.")
873853 }
874854 else throw("Strict value is not equal to itself.")
875855 }
876856 else throw("Strict value is not equal to itself.")
877857 }
878858 else throw("Strict value is not equal to itself.")
879859 }
880860
881861
882862
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)
889869 else throw("Strict value is not equal to itself.")
890870 }
891871
892872
893873
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))
898878 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)
903883 else throw("Strict value is not equal to itself.")
904884 }
905885 else throw("Strict value is not equal to itself.")
906886 }
907887
908888
909889
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))
915895 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))
918898 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)
921901 else throw("Strict value is not equal to itself.")
922902 }
923903 else throw("Strict value is not equal to itself.")
924904 }
925905
926906
927907
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")
934914 else throw("Strict value is not equal to itself.")
935915 }
936916
937917
938918
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)
941921
942922
943923
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)
946926
947927
948928
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)
951931
952932
953933
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)
956936
957937
958938
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))
964944 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))
967947 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))
970950 then nil
971- else [AttachedPayment(N, cH)])
972- if ((cI == cI))
951+ else [AttachedPayment(K, cG)])
952+ if ((cH == cH))
973953 then nil
974954 else throw("Strict value is not equal to itself.")
975955 }
976956 else throw("Strict value is not equal to itself.")
977957 }
978958
979959
980960
981-@Callable(P)
961+@Callable(M)
982962 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))
986966 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))
989969 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)]
993973 else throw("Strict value is not equal to itself.")
994974 }
995975 else throw("Strict value is not equal to itself.")
996976 }
997977 else throw("Strict value is not equal to itself.")
998978 }
999979
1000980
1001981
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))
1007987 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))
1010990 then nil
1011991 else throw("Strict value is not equal to itself.")
1012992 }
1013993 else throw("Strict value is not equal to itself.")
1014994 }
1015995
1016996
1017997
1018-@Callable(P)
998+@Callable(M)
1019999 func withdrawUnlockedVires () = {
1020- let ac = co()
1021- if ((ac == ac))
1000+ let Z = cl()
1001+ if ((Z == Z))
10221002 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))
10251005 then nil
10261006 else throw("Strict value is not equal to itself.")
10271007 }
10281008 else throw("Strict value is not equal to itself.")
10291009 }
10301010
10311011

github/deemru/w8io/6500d08 
372.79 ms