tx · 47vPwJCwH3qTQLhqYWyy7LPs5eckf7uVeuQa1rgR7huL

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03400000 Waves

2023.01.17 13:50 [2408829] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "47vPwJCwH3qTQLhqYWyy7LPs5eckf7uVeuQa1rgR7huL", "fee": 3400000, "feeAssetId": null, "timestamp": 1673952631063, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4NztMuWSrkUgjH7fUc8cYq6kroozei51VAWGKrxtFmgjKvjtbMB4be868c1HZMRGG4noDp8JZQUb1sa9g2qyyFmH" ], "script": "base64:BgKCJAgCEgYKBAEEAQgSAwoBCBIDCgEIEgMKAQgSABIECgIBBBIECgIBBBIDCgEBEgASBAoCCAESBAoCCAESBAoCCAESBAoCAQESAwoBARIFCgMBAQESBQoDAQgBEgQKAgEIEgQKAgEIEgQKAggIEgQKAggIEgQKAggBEgASAwoBCBIFCgMBAQESBAoCCAESBAoCAQESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiDHN3YXBDb250cmFjdCIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIDdG9lIgNvclYiBnNlbmRyViIGbWF0Y2hWIgNzdHIiByRtYXRjaDAiBnZhbFN0ciIPZ2V0U3RyaW5nT3JGYWlsIgNrZXkiBHN0cmYiBGFkZHIiBGludGYiCHRocm93RXJyIgNtc2ciA2ZjYSIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA3MDg2NzI3MiIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIDdmFkIgJBMSICQTIiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgJ2ZCICRDEiAkQwIgRzbHBnIgRmYWlsIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IgNmZWUiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE3NzM5MTgwODQiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgNtb2EiBW9yZGVyIgdhbXRBc0lkIgZwckFzSWQiD2FjY0FtdEFzQmFsYW5jZSIOYWNjUHJBc0JhbGFuY2UiCm9yQW10QXNzZXQiCm9yQW10QXNTdHIiCW9yUHJBc3NldCIJb3JQckFzU3RyIgpvcmRlclByaWNlIg5jYXN0T3JkZXJQcmljZSIRaXNPcmRlclByaWNlVmFsaWQiAmNnIgFpIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiBGdldEQiAnhwIgFuIgN4cDAiA3hwMSIKYVByZWNpc2lvbiIBYSIBcyIDYW5uIgt4cDBfeHAxX25fbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgRjYWxjIgNhY2MiA2N1ciINJHQwMjI2MzYyMjY1NiIBZCIFZm91bmQiAmRwIgVkTmV4dCIFZERpZmYiA2FyciINJHQwMjMwNzcyMzEyNCICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMzYyNDIzNjQ0IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIzOTUxMjM5OTgiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiD2xwQXNzZXRFbWlzc2lvbiINY2hlY2hFbWlzc2lvbiINJHQwMjQ3ODEyNTI0MyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDSR0MDI1MjQ5MjU0MjUiC2FtQW1vdW50UmF3IgtwckFtb3VudFJhdyINJHQwMjU0MjkyNTY4MyIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIGY2hlY2tEIghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMjc2ODUyNzc5NiIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAyNzk4NjI4MjkzIgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iBGdldFkiCWlzUmV2ZXJzZSITcG9vbEFtb3VudEluQmFsYW5jZSINJHQwMzA0MzAzMDQ1MCINJHQwMzA3ODEzMDgyOCINY2xlYW5BbW91bnRJbiIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iBmNoZWNrcyIHYXNzZXRJbiINJHQwMzEzODkzMTg1MiIFaW5kZXgiCGFzc2V0T3V0IgJkeSILdG90YWxHZXRSYXciCGNoZWNrTWluIglzd2FwcEFkZHIiC2NoZWNrQ2FsbGVyIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiDSR0MDM2NjgzMzY4NDEiB2VzdGltTFAiB21heFNscGciBmVzdFB1dCIJb3V0QW10QW10Ig1pc0dldERpc2FibGVkIg0kdDAzOTQ2MzM5NjE4Ig1scEFzc2V0QW1vdW50IgpscEVtaXNzaW9uIgRuZXdZIg0kdDA0MDQwODQwNDYzIg0kdDA0MDgwODQwOTIzIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0NDc2MTQ0OTQ5IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDUyMDg0NTMxMSINJHQwNDU1OTA0NTY5NCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNocAABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgVXQVZFUwABagIDMTAwAAFrAgExAAFsAgJfXwABbQIAAAFuAAEAAW8AAgABcAADAAFxAAQAAXIAAQABcwACAAF0AAMAAXUABAABdgAFAAF3AAYAAXgABwABeQAIAAF6AAkAAUEAAQABQgAGAAFDAAcAAUQACgABRQkAawMACgUBYQCQTgEBRgIBRwFICQC8AgMJALYCAQUBRwUBYwkAtgIBBQFIAQFJAgFKAUsJAKADAQkAvAIDBQFKCQC2AgEFAUsFAWMBAUwDAU0BTgFPCQBrAwUBTQUBTgUBTwEBUAEBSgMJAL8CAgUBZAUBSgkAvgIBBQFKBQFKAQFRAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBbAEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AQJhZQACByVzX19hbXABAmFmAAINJXNfX2FkZG9uQWRkcgECYWcAAhAlc19fc3dhcENvbnRyYWN0AQJhaAACESVzX19mYWN0b3J5Q29uZmlnAQJhaQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWoCAmFrAmFsCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhawICX18FAmFsAghfX2NvbmZpZwECYW0BAmFuCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFuAQJhbwACDCVzX19zaHV0ZG93bgECYXAAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXEAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXIDAmFzAmF0AmF1CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFzAgsgc25kclZhbGlkPQkApQMBBQJhdAIMIG10Y2hyVmFsaWQ9CQClAwEFAmF1AQJhdgEBSgQCYXcFAUoDCQABAgUCYXcCBlN0cmluZwQCYXgFAmF3BQJheAkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmF5AQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFAmF6CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQJhegIPIGlzIG5vdCBkZWZpbmVkAQJhQQICYUICYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhQgUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUIJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQwICYUICYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhQgUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUIJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhRAECYUUJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFFBQNuaWwCASAAAmFGCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUECBQR0aGlzCQEBUgAAAmFHCgACYUgJAPwHBAUCYUYCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhSAIDSW50BQJhSAkAAgEJAKwCAgkAAwEFAmFIAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFJCgACYUgJAPwHBAUCYUYCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUgCA0ludAUCYUgJAAIBCQCsAgIJAAMBBQJhSAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhSgkBAmFBAgUEdGhpcwkBAmFlAAECYUsACQELdmFsdWVPckVsc2UCCQCbCAIFAmFGCQECYW8ABwECYUwACQDZBAEJAQJhQQIFAmFGCQECYWkAAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFBAgUCYUYJAQJhcQABAmFOAAQCYU8JAQJhQQIFBHRoaXMJAQJhYwAEAmFQCQECYUECBQR0aGlzCQECYWQABAJhUQkBAmFDAgUCYUYJAQJhbQEFAmFQBAJhawkBAmFDAgUCYUYJAQJhbQEFAmFPCQC1CQIJAQJhQQIFAmFGCQECYWoCCQCkAwEFAmFrCQCkAwEFAmFRBQFsAQJhUgECYVMDCQAAAgUCYVMFAWkFBHVuaXQJANkEAQUCYVMBAmFUAQJhUwMJAAACBQJhUwUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhUwECYVUBAmFWCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVYFAXIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBcwkA2QQBCQCRAwIFAmFWBQF0CQECYVIBCQCRAwIFAmFWBQF1CQECYVIBCQCRAwIFAmFWBQF2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAXcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBeAACYVcJAQJhVQEJAQJhTgAAAmFYBQJhVwACYVkIBQJhWAJfMQACYVoIBQJhWAJfMgACYmEIBQJhWAJfMwACYmIIBQJhWAJfNAACYmMIBQJhWAJfNQACYmQIBQJhWAJfNgACYmUIBQJhWAJfNwECYmYACQC1CQIJAQJhQQIFAmFGCQECYWgABQFsAAJiZwkBAmJmAAACYmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJnBQFBAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJnBQFDAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYmoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJnBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmcFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJsCgJibQJibgJibwJicAJicQJicgJicwJidAJidQJidgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYFA25pbAUBbAECYncGAmJ4AmJ5AmJ6AmJwAmJzAmJ0CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJieQkAzAgCCQCkAwEFAmJ6CQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicwkAzAgCCQCkAwEFAmJ0BQNuaWwFAWwBAmJBAQJiQgMJAAACBQJiQgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkIBAmJDAgJiRAJiRQkAvAIDBQJiRAUBYwUCYkUBAmJGAwJiRwJiSAJiSQQCYkoJALwCAwkAuAICBQJiRwUCYkgFAWIFAmJIBAJiSwkAvwICCQC4AgIFAmJJCQEBUAEFAmJKBQFkAwkBASEBBQJiSwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiSgkAlAoCBQJiSwkAmQMBCQDMCAIFAmJHCQDMCAIFAmJIBQNuaWwBAmJMAwJiTQJiTgJiTwQCYkoJALwCAwUCYk4FAWIFAmJNBAJiUAkAvwICBQJiTwUCYkoDAwUCYlAGCQC/AgIFAmJOBQJiTQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYk4CASAJAKYDAQUCYk0CASAJAKYDAQUCYkoCASAJAKYDAQUCYk8FAmJQAQJiUQQCYlICYlMCYlQCYlUEAmJWCQEBRgIFAmJUBQJiUgQCYlcJAQFGAgUCYlUFAmJTCQECYkMCBQJiVwUCYlYBAmJYAwJiVAJiVQJiWQQCYloJAQJhTgAEAmNhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYloFAXcEAmNiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYloFAXgEAmNjCQECYlEEBQJjYQUCY2IFAmJUBQJiVQQCYkUJAQFGAgUCYlQFAmNhBAJiRAkBAUYCBQJiVQUCY2IEAmNkCQEBRgIFAmJZBQFhBAJjZQkBAmJDAgUCYkUFAmNkBAJjZgkBAmJDAgUCYkQFAmNkCQDMCAIFAmNjCQDMCAIFAmNlCQDMCAIFAmNmBQNuaWwBAmNnAwJiVAJiVQJiWQQCY2gJAQJiWAMFAmJUBQJiVQUCYlkJAMwIAgkBAUkCCQCRAwIFAmNoAAAFAWEJAMwIAgkBAUkCCQCRAwIFAmNoAAEFAWEJAMwIAgkBAUkCCQCRAwIFAmNoAAIFAWEFA25pbAECY2kCAmNqAmNrBAJjbAMJAAACBQJjawAAAAAJAGsDBQJjagUCY2sFAWEJAJQKAgkAZQIFAmNqBQJjbAUCY2wBAmNtBAJjbgJjbwJjcAJjcQQCYloJAQJhTgAEAmNyCQCRAwIFAmJaBQF0BAJjcwkAkQMCBQJiWgUBdQQCY3QJAJEDAgUCYloFAXYEAmN1CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYloFAXcEAmN2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYloFAXgEAmN3CQCRAwIFAmJaBQFzBAJjeAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNyAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmNyBQJjbwkAAgECD1dyb25nIHBtdCBhc3NldAQCY3kJAQJiQQEFAmNzBAJjegkBAUYCBQJjeQUCY3UEAmNBCQECYkEBBQJjdAQCY0IJAQFGAgUCY0EFAmN2BAJjQwkBAmJDAgUCY0IFAmN6BAJjRAkBAUkCBQJjQwUBYQQCY0UJAQFGAgUCY3AFAWEEAmNGCQEBRgIFAmN4BQFhBAJjRwkAvAIDBQJjegUCY0UFAmNGBAJjSAkAvAIDBQJjQgUCY0UFAmNGBAJjSQkBAUkCBQJjRwUCY3UEAmNKCQEBSQIFAmNIBQJjdgQCY0sDCQAAAgUCY24CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNxBQJjSQMJAAACBQJjcwIFV0FWRVMFBHVuaXQJANkEAQUCY3MJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3EFAmNKAwkAAAIFAmN0AgVXQVZFUwUEdW5pdAkA2QQBBQJjdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAmNxBQJjbgkBAmJ3BgUCY0kFAmNKBQJjcAUCY0QFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0QFA25pbAkAnAoKBQJjSQUCY0oFAmNzBQJjdAUCY3kFAmNBBQJjeAUCY0MFAmN3BQJjSwECY0wNAmNuAmJJAmNNAmNOAmNPAmNQAmNxAmNRAmNSAmNTAmNUAmNVAmNWBAJiWgkBAmFOAAQCY3IJANkEAQkAkQMCBQJiWgUBdAQCY1cJAJEDAgUCYloFAXUEAmNYCQCRAwIFAmJaBQF2BAJjWQkAkQMCBQJiWgUBeQQCY1oJAJEDAgUCYloFAXoEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYloFAXcEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYloFAXgEAmN3CQCRAwIFAmJaBQFzBAJkYwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjcgIIV3IgbHAgYXMIcXVhbnRpdHkEAmN5AwUCY1EJAQJiQQEFAmNXAwMFAmNTCQAAAgUCY1YFAmNXBwkAZQIJAQJiQQEFAmNXBQJjVQMFAmNTCQECYkEBBQJjVwkAZQIJAQJiQQEFAmNXBQJjTQQCY0EDBQJjUQkBAmJBAQUCY1gDAwUCY1MJAAACBQJjVgUCY1gHCQBlAgkBAmJBAQUCY1gFAmNVAwUCY1MJAQJiQQEFAmNYCQBlAgkBAmJBAQUCY1gFAmNPBAJkZAkBAUYCBQJjTQUCZGEEAmRlCQEBRgIFAmNPBQJkYgQCZGYJAQJiQwIFAmRlBQJkZAQCY3oJAQFGAgUCY3kFAmRhBAJjQgkBAUYCBQJjQQUCZGIEAmRnAwkAAAIFAmRjAAAEAmNDBQFkBAJkaAUBZAQCY2QJAHYGCQC5AgIFAmRkBQJkZQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUkCBQJjZAUBYQkBAUkCBQJkZAUCZGEJAQFJAgUCZGUFAmRiCQECYkMCCQC3AgIFAmNCBQJkZQkAtwICBQJjegUCZGQFAmRoBAJjQwkBAmJDAgUCY0IFAmN6BAJkaQkAvAIDCQEBUAEJALgCAgUCY0MFAmRmBQFjBQJjQwQCZGgJAQFGAgUCYkkFAWEDAwMFAmNUCQECIT0CBQJjQwUBZAcJAL8CAgUCZGkFAmRoBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkaQIDID4gCQCmAwEFAmRoBAJkagkBAUYCBQJkYwUBYQQCZGsJALwCAwUCZGQFAmNDBQFjBAJkbAkAvAIDBQJkZQUBYwUCY0MEAmRtAwkAvwICBQJkawUCZGUJAJQKAgUCZGwFAmRlCQCUCgIFAmRkBQJkawQCZG4IBQJkbQJfMQQCZG8IBQJkbQJfMgQCY2QJALwCAwUCZGoFAmRvBQJjQgkAlwoFCQEBSQIFAmNkBQFhCQEBSQIFAmRuBQJkYQkBAUkCBQJkbwUCZGIFAmNDBQJkaAQCZHAIBQJkZwJfMQQCZHEIBQJkZwJfMgQCZHIIBQJkZwJfMwQCY0QJAQFJAggFAmRnAl80BQFhBAJkcwkBAUkCCAUCZGcCXzUFAWEDCQBnAgAABQJkcAkAAgECB0xQIDw9IDAEAmR0AwkBASEBBQJjUgAABQJkcAQCZHUJAGUCBQJjTQUCZHEEAmR2CQBlAgUCY08FAmRyBAJkdwMDBQJjUwkAAAIFAmNWBQJjVwcJAJQKAgUCY1UAAAMDBQJjUwkAAAIFAmNWBQJjWAcJAJQKAgAABQJjVQkAlAoCBQJkcQUCZHIEAmR4CAUCZHcCXzEEAmR5CAUCZHcCXzIEAmR6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY3EFAmNuCQECYmwKBQJkeAUCZHkFAmR0BQJjRAUCYkkFAmRzBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdQUCZHYFA25pbAkAnwoNBQJkcAUCZHQFAmNEBQJjeQUCY0EFAmRjBQJjcgUCY3cFAmR6BQJkdQUCZHYFAmNOBQJjUAECZEEBAmRCBAJiWgkBAmFOAAQCZEMJAJEDAgUCYloFAXUEAmRECQCRAwIFAmJaBQF2BAJjdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJaBQFzBAJjYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJaBQF3BAJjYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJaBQF4BAJkRQkBAmJBAQUCZEMEAmRGCQECYkEBBQJkRAQCY0MDCQAAAggFAmRCCW9yZGVyVHlwZQUDQnV5CQECYlEEBQJjYQUCY2IJAGQCBQJkRQgFAmRCBmFtb3VudAUCZEYJAQJiUQQFAmNhBQJjYgkAZQIFAmRFCAUCZEIGYW1vdW50BQJkRgQCY0QJAQFJAgUCY0MFAWEDAwMJAQJhSwAGCQAAAgUCY3cFAXAGCQAAAgUCY3cFAXEJAAIBAg1BZG1pbiBibG9ja2VkBAJkRwgIBQJkQglhc3NldFBhaXILYW1vdW50QXNzZXQEAmRIAwkAAAIFAmRHBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkRwQCZEkICAUCZEIJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRKAwkAAAIFAmRJBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkSQMDCQECIT0CBQJkSAUCZEMGCQECIT0CBQJkSgUCZEQJAAIBAglXciBhc3NldHMEAmRLCAUCZEIFcHJpY2UEAmRiCQBrAwUBYQUCY2IFAmNhBAJkTAkBAUwDBQJkSwUBYQUCZGIEAmRNAwkAAAIIBQJkQglvcmRlclR5cGUFA0J1eQkAZwIFAmNEBQJkTAkAZwIFAmRMBQJjRAYBAmROAQJkTwMJAQIhPQIJAJADAQgFAmRPCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJkUAkBBXZhbHVlAQkAkQMCCAUCZE8IcGF5bWVudHMAAAQCY28JAQV2YWx1ZQEIBQJkUAdhc3NldElkBAJjVQgFAmRQBmFtb3VudAQCZGcJAQJjbQQJANgEAQgFAmRPDXRyYW5zYWN0aW9uSWQJANgEAQUCY28FAmNVCAUCZE8GY2FsbGVyBAJjSQgFAmRnAl8xBAJjSggFAmRnAl8yBAJjdwkBDXBhcnNlSW50VmFsdWUBCAUCZGcCXzkEAmNLCAUCZGcDXzEwAwMJAQJhSwAGCQAAAgUCY3cFAXEJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjdwkAlwoFBQJjSQUCY0oFAmNVBQJjbwUCY0sBAmRRCgJkUgJhYQJkUwJkVAJiSQJjUgJjUwJjVAJjVQJjVgQCZGcJAQJjTA0FAmFhBQJiSQgJAQV2YWx1ZQEFAmRTBmFtb3VudAgJAQV2YWx1ZQEFAmRTB2Fzc2V0SWQICQEFdmFsdWUBBQJkVAZhbW91bnQICQEFdmFsdWUBBQJkVAdhc3NldElkBQJkUgkAAAIFAmFhAgAFAmNSBQJjUwUCY1QFAmNVBQJjVgQCY3cJAQ1wYXJzZUludFZhbHVlAQgFAmRnAl84AwMDCQECYUsABgkAAAIFAmN3BQFvBgkAAAIFAmN3BQFxCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjdwUCZGcBAmRVAQJkVgQCZFcFAWcEAmRYCQCRAwIFAmRWAAAEAmRZCQCRAwIFAmRWAAEEAmRaCQCnAwEFAWoEAmVhCQC5AgIJAKcDAQUCYUoFAmRaBAJlYgkAtwICBQJkWAUCZFkDCQAAAgUCZWIFAWUFAWUEAmVjCQC5AgIFAmVhBQJkVwQCZWQJALkCAgkAuQICCQC5AgIFAmRYBQJkWQUCZFcFAmRXBAJlZQkAugICCQC5AgIFAmVjBQJlYgUCZFoEAmVmCQC4AgIFAmVjBQJkWgQCZWcJALcCAgUCZFcFAWYKAQJlaAICZWkCZWoEAmVrBQJlaQQCZWwIBQJlawJfMQQCZW0IBQJlawJfMgMJAQIhPQIFAmVtBQR1bml0BQJlaQQCZW4JALoCAgkAuQICCQC5AgIFAmVsBQJlbAUCZWwFAmVkBAJlbwkAugICCQC5AgIJALcCAgUCZWUJALkCAgUCZW4FAmRXBQJlbAkAtwICCQC6AgIJALkCAgUCZWYFAmVsBQJkWgkAuQICBQJlZwUCZW4EAmVwCQEBUQEJALgCAgUCZW8JAQV2YWx1ZQEFAmVsAwkAwAICBQFmBQJlcAkAlAoCBQJlbwUCZWoJAJQKAgUCZW8FBHVuaXQEAmVxCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVyCgACZXMFAmVxCgACZXQJAJADAQUCZXMKAAJldQkAlAoCBQJlYgUEdW5pdAoBAmV2AgJldwJleAMJAGcCBQJleAUCZXQFAmV3CQECZWgCBQJldwkAkQMCBQJlcwUCZXgKAQJleQICZXcCZXgDCQBnAgUCZXgFAmV0BQJldwkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZXkCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCBQJldQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlbAgFAmVyAl8xBAJlbQgFAmVyAl8yAwkBAiE9AgUCZW0FBHVuaXQFAmVsCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmVsAQJlegMCZFYCZE8CZUEEAmRXBQFnBAJlQgkAkQMCBQJkVgMJAAACBQJkTwAAAAEAAAQCZFoJAKcDAQUBagQCZWEJALkCAgkApwMBBQJhSgUCZFoEAmViBQJlQgQCZWMJALkCAgUCZWEFAmRXBAJlQwkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVBBQJlQQkAuQICBQJlQgUCZFcFAmVBBQJkWgkAuQICBQJlYwUCZFcEAmVECQC4AgIJALcCAgUCZWIJALoCAgkAuQICBQJlQQUCZFoFAmVjBQJlQQoBAmVoAgJlaQJlagQCZUUFAmVpBAJlRggFAmVFAl8xBAJlbQgFAmVFAl8yAwkBAiE9AgUCZW0FBHVuaXQFAmVpBAJlRwkAugICCQC3AgIJALkCAgUCZUYFAmVGBQJlQwkAtwICCQC5AgIFAWcFAmVGBQJlRAQCZUgJAQFRAQkAuAICBQJlRwkBBXZhbHVlAQUCZUYDCQDAAgIFAWYFAmVICQCUCgIFAmVHBQJlagkAlAoCBQJlRwUEdW5pdAQCZXEJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUkKAAJlcwUCZXEKAAJldAkAkAMBBQJlcwoAAmV1CQCUCgIFAmVBBQR1bml0CgECZXYCAmV3AmV4AwkAZwIFAmV4BQJldAUCZXcJAQJlaAIFAmV3CQCRAwIFAmVzBQJleAoBAmV5AgJldwJleAMJAGcCBQJleAUCZXQFAmV3CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJleQIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIJAQJldgIFAmV1AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVGCAUCZUkCXzEEAmVtCAUCZUkCXzIDCQECIT0CBQJlbQUEdW5pdAUCZUYJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUYBAmVKBQJlSwJjbwJjcQJhYQJlTAQCYVYJAQJhTgAEAmNzCQCRAwIFAmFWBQF1BAJjdAkAkQMCBQJhVgUBdgQCY3IJAJEDAgUCYVYFAXQEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAXcEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAXgEAmVNCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjcgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZU4DCQC/AgIFAmVNBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZU4FAmVOBAJjeQkBAmJBAQUCY3MEAmNBCQECYkEBBQJjdAQCZU8DCQAAAgUCYWECAAkAlAoCBQJjeQUCY0EDCQAAAgUCY28FAmNzAwkAZgIFAmVLBQJjeQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmN5BQJlSwUCY0EDCQAAAgUCY28FAmN0AwkAZgIFAmVLBQJjQQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY3kJAGUCBQJjQQUCZUsJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJlUAgFAmVPAl8xBAJlUQgFAmVPAl8yBAJlUgMJAAACBQJjbwUCY3MJAJQKAgUCZUsAAAMJAAACBQJjbwUCY3QJAJQKAgAABQJlSwkAAgECD2ludmFsaWQgcGF5bWVudAQCZVMIBQJlUgJfMQQCZVQIBQJlUgJfMgQCZVUDBQJlTAkAlQoDCAkBAmNpAgUCZVMFAmFHAl8xCAkBAmNpAgUCZVQFAmFHAl8xCAkBAmNpAgUCZUsFAmFHAl8yCQCVCgMFAmVTBQJlVAAABAJlVggFAmVVAl8xBAJlVwgFAmVVAl8yBAJjbAgFAmVVAl8zBAJlWAkAZAIFAmVQBQJlVgQCZVkJAGQCBQJlUQUCZVcEAmJOCQECZFUBCQDMCAIJALYCAQUCZVAJAMwIAgkAtgIBBQJlUQUDbmlsBAJiTQkBAmRVAQkAzAgCCQC2AgEFAmVYCQDMCAIJALYCAQUCZVkFA25pbAQCZVoDCQC/AgIFAmJNBQJiTgYJAQV0aHJvdwADCQAAAgUCZVoFAmVaBAJmYQkAvAIDBQJlTQkAuAICBQJiTQUCYk4FAmJOBAJjRAkBAUkCCQECYkMCCQEBRgIFAmVZBQJkYgkBAUYCBQJlWAUCZGEFAWEEAmR6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY3EFAmFhCQECYmwKBQJlUwUCZVQJAKADAQUCZmEFAmNEAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZmIJAGsDBQJlUQUBYQUCZVAEAmZjCQBrAwUCZUsFAWEJAGQCBQJmYgUBYQQCZmQJAGUCBQJlSwUCZmMEAmZlCQC8AgMFAmVNCQC2AgEFAmZkCQC2AgEFAmVRBAJmZgkAoAMBCQC8AgMJALgCAgUCZmEFAmZlBQFiBQJmZQkAlgoECQCgAwEFAmZhBQJkegUCY2wFAmZmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmZwYCZmgCZmkCZmoCZFICZmsCZmwEAmFWCQECYU4ABAJjcgkAkQMCBQJhVgUBdAQCY3MJAJEDAgUCYVYFAXUEAmN0CQCRAwIFAmFWBQF2BAJmbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFWBQF3BAJmbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFWBQF4BAJmbwkAkQMCBQJhVgUBcwQCY3EDCQAAAgUCZFIFAmJrBQJmawUCZFIEAmRQCQEFdmFsdWUBCQCRAwIFAmZqAAAEAmNvCQEFdmFsdWUBCAUCZFAHYXNzZXRJZAQCY1UIBQJkUAZhbW91bnQEAmNuCQDYBAEFAmZsAwkBAiE9AgUCY3IJANgEAQUCY28JAAIBAghXcm9uZyBMUAQCY3kJAQJiQQEFAmNzBAJjQQkBAmJBAQUCY3QEAmZwCgACYUgJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmaAkAzAgCBQJjVQUDbmlsBQNuaWwDCQABAgUCYUgCCihJbnQsIEludCkFAmFICQACAQkArAICCQADAQUCYUgCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZnAFAmZwBAJjbAgFAmZwAl8yBAJmcQgFAmZwAl8xBAJmcgMDCQBmAgUCZmkAAAkAZgIFAmZpBQJmcQcJAQJhRAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmkFA25pbAIABQJmcQQCZnMDCQAAAgUCZmgFAmNzCQCWCgQFAmZyAAAJAGUCCQBlAgUCY3kFAmZyBQJjbAUCY0EDCQAAAgUCZmgFAmN0CQCWCgQAAAUCZnIFAmN5CQBlAgkAZQIFAmNBBQJmcgUCY2wJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZnQIBQJmcwJfMQQCZnUIBQJmcwJfMgQCZVgIBQJmcwJfMwQCZVkIBQJmcwJfNAQCZnYJAQJiQwIJAQFGAgUCZVkFAmZuCQEBRgIFAmVYBQJmbQQCZncJAQFJAgUCZnYFAWEEAmZ4AwkAAAIFAmZoAgVXQVZFUwUEdW5pdAkA2QQBBQJmaAQCZnkDCQBmAgUCY2wAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCY2wFAmZ4BQNuaWwFA25pbAQCY0sJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcQUCZnIFAmZ4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY3EFAmNuCQECYncGBQJmdAUCZnUFAmNVBQJmdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJmdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmdwUDbmlsBQJmeQMJAAACBQJjSwUCY0sEAmZ6CQD8BwQFAmFGAgRidXJuCQDMCAIFAmNVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNvBQJjVQUDbmlsAwkAAAIFAmZ6BQJmegkAlAoCBQJjSwUCZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZBAAQCYXcJAKIIAQkBAVMAAwkAAQIFAmF3AgZTdHJpbmcEAmViBQJhdwkA2QQBBQJlYgMJAAECBQJhdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmQgAEAmF3CQCiCAEJAQFUAAMJAAECBQJhdwIGU3RyaW5nBAJlYgUCYXcJANkEAQUCZWIDCQABAgUCYXcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZkMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZkQBAmRPBAJhdwkBAmZBAAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZkUFAmF3CQAAAggFAmRPD2NhbGxlclB1YmxpY0tleQUCZkUDCQABAgUCYXcCBFVuaXQJAAACCAUCZE8GY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmZGAQJkTwQCYXcJAQJmQQADCQABAgUCYXcCCkJ5dGVWZWN0b3IEAmZFBQJhdwMJAAACCAUCZE8PY2FsbGVyUHVibGljS2V5BQJmRQYFAmZDAwkAAQIFAmF3AgRVbml0AwkAAAIIBQJkTwZjYWxsZXIFBHRoaXMGBQJmQwkAAgECC01hdGNoIGVycm9yAQJmRwMCZkgCZUECZkkEAmFWCQECYU4ABAJjcwkAkQMCBQJhVgUBdQQCY3QJAJEDAgUCYVYFAXYEAmRXBQFnBAJkWgkApwMBBQFqBAJlYQkAuQICCQCnAwEFAmFKBQJkWgQCZFYDCQAAAgUCZkgHCQDMCAIJALgCAgkAtgIBCQECYkEBBQJjcwUCZkkJAMwIAgkAtgIBCQECYkEBBQJjdAUDbmlsCQDMCAIJALgCAgkAtgIBCQECYkEBBQJjdAUCZkkJAMwIAgkAtgIBCQECYkEBBQJjcwUDbmlsBAJlQgkAkQMCBQJkVgAABAJlYgUCZUIEAmVjCQC5AgIFAmVhBQJkVwQCZUMJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlQQUCZUEJALkCAgUCZUIFAmRXBQJlQQUCZFoJALkCAgUCZWMFAmRXBAJlRAkAuAICCQC3AgIFAmViCQC6AgIJALkCAgUCZUEFAmRaBQJlYwUCZUEKAQJlaAICZWkCZWoEAmZKBQJlaQQCZUYIBQJmSgJfMQQCZW0IBQJmSgJfMgMJAQIhPQIFAmVtBQR1bml0BQJlaQQCZUcJALoCAgkAtwICCQC5AgIFAmVGBQJlRgUCZUMJALcCAgkAuQICBQFnBQJlRgUCZUQEAmVICQEBUQEJALgCAgUCZUcJAQV2YWx1ZQEFAmVGAwkAwAICBQFmBQJlSAkAlAoCBQJlRwUCZWoJAJQKAgUCZUcFBHVuaXQEAmVxCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmZLCgACZXMFAmVxCgACZXQJAJADAQUCZXMKAAJldQkAlAoCBQJlQQUEdW5pdAoBAmV2AgJldwJleAMJAGcCBQJleAUCZXQFAmV3CQECZWgCBQJldwkAkQMCBQJlcwUCZXgKAQJleQICZXcCZXgDCQBnAgUCZXgFAmV0BQJldwkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZXkCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCCQECZXYCBQJldQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlRggFAmZLAl8xBAJlbQgFAmZLAl8yAwkBAiE9AgUCZW0FBHVuaXQFAmVGCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVGHQJkTwEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMEAmZMAmZIAmZNAmZOBAJmTwkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkTwhwYXltZW50cwAABmFtb3VudAUCZkwGCQECYUQBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZE8GY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXkBCQECYWcABgkBAmFEAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJmTwUCZk8EAmRQCQEFdmFsdWUBCQCRAwIIBQJkTwhwYXltZW50cwAABAJmUAkA2AQBCQEFdmFsdWUBCAUCZFAHYXNzZXRJZAQCZlEDCQAAAgUCZkgHBAJmUgABBAJmUwkBAmF5AQkBAmFkAAQCZkkJAGUCCQECYkEBBQJmUAgJAQV2YWx1ZQEJAJEDAggFAmRPCHBheW1lbnRzAAAGYW1vdW50CQCVCgMFAmZTBQJmUgUCZkkEAmZSAAAEAmZTCQECYXkBCQECYWMABAJmSQkAZQIJAQJiQQEFAmZQCAkBBXZhbHVlAQkAkQMCCAUCZE8IcGF5bWVudHMAAAZhbW91bnQJAJUKAwUCZlMFAmZSBQJmSQQCZlMIBQJmUQJfMQQCZlIIBQJmUQJfMgQCZkkIBQJmUQJfMwQCYVYJAQJhTgAEAmNzCQCRAwIFAmFWBQF1BAJjdAkAkQMCBQJhVgUBdgQCZFYJAMwIAgkAuAICCQC2AgEJAQJiQQEFAmNzCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTwhwYXltZW50cwAABmFtb3VudAkAzAgCCQC2AgEJAQJiQQEFAmN0BQNuaWwEAmVBCQECZFUBBQJkVgQCZUYJAQJmRwMFAmZIBQJlQQkAtgIBBQJmSQQCZUIJALcCAgkAtgIBBQJmSQkAtgIBBQJmTAQCZlQJALgCAgkAuAICCQC2AgEJAQJiQQEFAmZTBQJlRgkAtgIBAAEEAmZVCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZlQFA25pbAQCZlYJAMwIAgkAZwIFAmZNBQJmVQkAzAgCCQACAQIuRXhjaGFuZ2UgcmVzdWx0ZWQgaW4gZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmTgkAoAMBBQJmVAkA2QQBBQJmUwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRPAQ9zZXRTd2FwQ29udHJhY3QBAmZXBAJmWAkBAmZGAQUCZE8DCQAAAgUCZlgFAmZYCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwAFAmZXBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE8BC2NvbnN0cnVjdG9yAQFSBAJlQwkBAmZGAQUCZE8DCQAAAgUCZUMFAmVDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAAUBUgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRPAQpzZXRNYW5hZ2VyAQJmWQQCZUMJAQJmRgEFAmRPAwkAAAIFAmVDBQJlQwQCZloJANkEAQUCZlkDCQAAAgUCZloFAmZaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAAUCZlkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTwEOY29uZmlybU1hbmFnZXIABAJjaAkBAmZCAAQCZ2EDCQEJaXNEZWZpbmVkAQUCY2gGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdhBQJnYQQCZ2IDCQAAAggFAmRPD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY2gGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdiBQJnYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwAJANgEAQkBBXZhbHVlAQUCY2gJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE8BA3B1dAICZ2MCZ2QEAmdlCQECYmYABAJnZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ2UFAUECCldyIHN0IGFkZHIEAmdnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnZQUBQwIKV3Igc2wgYWRkcgMJAGYCAAAFAmdjCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkTwhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnaAkBAmRRCgkApQgBCAUCZE8GY2FsbGVyCQDYBAEIBQJkTw10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRPCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRPCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkTwhwYXltZW50cwABBQJnYwYHBgAAAgAEAmR0CAUCZ2gCXzIEAmdpCAUCZ2gCXzcEAmNLCAUCZ2gCXzkEAmR1CAUCZ2gDXzEwBAJkdggFAmdoA18xMQQCY3MIBQJnaANfMTIEAmN0CAUCZ2gDXzEzBAJkZwkA/AcEBQJhRgIEZW1pdAkAzAgCBQJkdAUDbmlsBQNuaWwDCQAAAgUCZGcFAmRnBAJnagQCYXcFAmRnAwkAAQIFAmF3AgdBZGRyZXNzBAJnawUCYXcJAPwHBAUCZ2sCBGVtaXQJAMwIAgUCZHQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdqBQJnagQCZ2wDCQBmAgUCZHUAAAkA/AcEBQJnZwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJkdQUDbmlsBQNuaWwDCQAAAgUCZ2wFAmdsBAJnbQMJAGYCBQJkdgAACQD8BwQFAmdnAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3QFAmR2BQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmduAwUCZ2QEAmdvCQD8BwQFAmdmAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnaQUCZHQFA25pbAMJAAACBQJnbwUCZ28FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZE8GY2FsbGVyBQJkdAUCZ2kFA25pbAkAzggCBQJjSwUCZ24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE8BC3B1dE9uZVRrblYyAgJmaQJnZAQCZ3AKAAJhSAkA/AcEBQJhRgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFIAgdCb29sZWFuBQJhSAkAAgEJAKwCAgkAAwEFAmFIAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJncQMDAwkBAmFLAAYJAAACBQJhWgUBbwYJAAACBQJhWgUBcQYFAmdwBAJmTwkAzAgCAwMJAQEhAQUCZ3EGCQECZkQBBQJkTwYJAQJhRAECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRPCHBheW1lbnRzAAEGCQECYUQBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTwUCZk8EAmFWCQECYU4ABAJjcwkAkQMCBQJhVgUBdQQCY3QJAJEDAgUCYVYFAXYEAmNyCQDZBAEJAJEDAgUCYVYFAXQEAmZtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAXcEAmZuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVYFAXgEAmNxAwkAAAIIBQJkTwZjYWxsZXIFBHRoaXMIBQJkTwxvcmlnaW5DYWxsZXIIBQJkTwZjYWxsZXIEAmRQCQEFdmFsdWUBCQCRAwIIBQJkTwhwYXltZW50cwAABAJjbwkA2AQBCQEFdmFsdWUBCAUCZFAHYXNzZXRJZAQCY1UIBQJkUAZhbW91bnQEAmdyCQECZUoFBQJjVQUCY28JAKUIAQUCY3EJANgEAQgFAmRPDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdyBQJncgQCY2wIBQJncgJfMwQCY0sIBQJncgJfMgQCZ3MIBQJncgJfMQQCZHQDAwkAZgIFAmZpAAAJAGYCBQJmaQUCZ3MHCQECYUQBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZpBQNuaWwCAAUCZ3MEAmdoCQD8BwQFAmFGAgRlbWl0CQDMCAIFAmR0BQNuaWwFA25pbAMJAAACBQJnaAUCZ2gEAmdqBAJhdwUCZ2gDCQABAgUCYXcCB0FkZHJlc3MEAmdrBQJhdwkA/AcEBQJnawIEZW1pdAkAzAgCBQJkdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ2oFAmdqBAJnbgMFAmdkBAJnbwkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3IFAmR0BQNuaWwDCQAAAgUCZ28FAmdvBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRPBmNhbGxlcgUCZHQFAmNyBQNuaWwEAmZ5AwkAZgIFAmNsAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmNsCQDZBAEFAmNvBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY0sFAmduBQJmeQUCZHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE8BCnB1dEZvckZyZWUBAmd0AwkAZgIAAAUCZ3QJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZE8IcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ3UJAQJkUQoJAKUIAQgFAmRPBmNhbGxlcgkA2AQBCAUCZE8NdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkTwhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkTwhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZE8IcGF5bWVudHMAAQUCZ3QHBwYAAAIACAUCZ3UCXzkCZE8BA2dldAAEAmRnCQECZE4BBQJkTwQCZ3YIBQJkZwJfMQQCY0oIBQJkZwJfMgQCY1UIBQJkZwJfMwQCY28IBQJkZwJfNAQCY0sIBQJkZwJfNQQCZUQJAPwHBAUCYUYCBGJ1cm4JAMwIAgUCY1UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY28FAmNVBQNuaWwDCQAAAgUCZUQFAmVEBQJjSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTwELZ2V0T25lVGtuVjICAmZoAmZpBAJncAoAAmFICQD8BwQFAmFGAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUgCB0Jvb2xlYW4FAmFICQACAQkArAICCQADAQUCYUgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmd3AwMJAQJhSwAGCQAAAgUCYVoFAXEGBQJncAQCZk8JAMwIAgMDCQEBIQEFAmd3BgkBAmZEAQUCZE8GCQECYUQBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTwhwYXltZW50cwABBgkBAmFEAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk8FAmZPBAJneAkBAmZnBgUCZmgFAmZpCAUCZE8IcGF5bWVudHMIBQJkTwZjYWxsZXIIBQJkTwxvcmlnaW5DYWxsZXIIBQJkTw10cmFuc2FjdGlvbklkBAJjSwgFAmd4Al8xBAJmcggFAmd4Al8yCQCUCgIFAmNLBQJmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTwETZ2V0T25lVGtuVjJSRUFET05MWQICZmgCZ3kEAmFWCQECYU4ABAJjcwkAkQMCBQJhVgUBdQQCY3QJAJEDAgUCYVYFAXYEAmNyCQCRAwIFAmFWBQF0BAJkVgkAzAgCCQC2AgEJAQJiQQEFAmNzCQDMCAIJALYCAQkBAmJBAQUCY3QFA25pbAQCZ3oJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNyAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiTgkBAmRVAQUCZFYEAmJNCQC4AgIFAmJOCQC8AgMJALYCAQUCZ3kFAmJOBQJnegQCZlIDCQAAAgUCZmgFAmNzAAADCQAAAgUCZmgFAmN0AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ0EJAQJlegMFAmRWBQJmUgUCYk0EAmZUCQC4AgIJAJEDAgUCZFYFAmZSBQJnQQQCZlUJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmZUBQFmBQNuaWwEAmdCCQECY2kCBQJmVQUCYUkEAmZxCAUCZ0ICXzEEAmNsCAUCZ0ICXzIJAJQKAgUDbmlsCQCUCgIFAmZxBQJjbAJkTwEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZmgCZ3kEAmFWCQECYU4ABAJjcwkAkQMCBQJhVgUBdQQCY3QJAJEDAgUCYVYFAXYEAmNyCQCRAwIFAmFWBQF0BAJjeQkBAmJBAQUCY3MEAmNBCQECYkEBBQJjdAQCZ0MKAAJhSAkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZoCQDMCAIFAmd5BQNuaWwFA25pbAMJAAECBQJhSAIKKEludCwgSW50KQUCYUgJAAIBCQCsAgIJAAMBBQJhSAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZnEIBQJnQwJfMQQCY2wIBQJnQwJfMgQCZGcJAQJjbQQCAAUCY3IFAmd5BQR0aGlzBAJjSQgFAmRnAl8xBAJjSggFAmRnAl8yBAJnRAkAZAIFAmNJBQJjSgQCZmYDCQAAAgUCZ0QAAAMJAAACBQJmcQAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJmcQUCZ0QFAWEFAmdECQCUCgIFA25pbAkAlQoDBQJmcQUCY2wFAmZmAmRPAQlnZXROb0xlc3MCAmdFAmdGBAJkZwkBAmROAQUCZE8EAmNJCAUCZGcCXzEEAmNKCAUCZGcCXzIEAmNVCAUCZGcCXzMEAmNvCAUCZGcCXzQEAmNLCAUCZGcCXzUDCQBmAgUCZ0UFAmNJCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNJAgMgPCAJAKQDAQUCZ0UDCQBmAgUCZ0YFAmNKCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY0oCAyA8IAkApAMBBQJnRgQCZ0cJAPwHBAUCYUYCBGJ1cm4JAMwIAgUCY1UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY28FAmNVBQNuaWwDCQAAAgUCZ0cFAmdHBQJjSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTwENdW5zdGFrZUFuZEdldAECY2oEAmdIAwkBAiE9AgkAkAMBCAUCZE8IcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmdIBQJnSAQCYloJAQJhTgAEAmdJCQECYmYABAJnaQkA2QQBCQCRAwIFAmJaBQF0BAJnSgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ0kFAUECCldyIHN0IGFkZHIEAmdLCQD8BwQFAmdKAgd1bnN0YWtlCQDMCAIJANgEAQUCZ2kJAMwIAgUCY2oFA25pbAUDbmlsAwkAAAIFAmdLBQJnSwQCZGcJAQJjbQQJANgEAQgFAmRPDXRyYW5zYWN0aW9uSWQJANgEAQUCZ2kFAmNqCAUCZE8GY2FsbGVyBAJjdwkBDXBhcnNlSW50VmFsdWUBCAUCZGcCXzkEAmNLCAUCZGcDXzEwBAJnTAMDCQECYUsABgkAAAIFAmN3BQFxCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY3cGAwkAAAIFAmdMBQJnTAQCZ00JAPwHBAUCYUYCBGJ1cm4JAMwIAgUCY2oFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ2kFAmNqBQNuaWwDCQAAAgUCZ00FAmdNBQJjSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTwETdW5zdGFrZUFuZEdldE5vTGVzcwMCZ04CZ08CZ0YEAmd3AwkBAmFLAAYJAAACBQJhWgUBcQQCZk8JAMwIAgMJAQEhAQUCZ3cGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE8IcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTwUCZk8EAmdLCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmEJAMwIAgUCZ04FA25pbAUDbmlsAwkAAAIFAmdLBQJnSwQCZ1AJAQJjbQQJANgEAQgFAmRPDXRyYW5zYWN0aW9uSWQJANgEAQUCYmEFAmdOCAUCZE8GY2FsbGVyBAJjSQgFAmdQAl8xBAJjSggFAmdQAl8yBAJjSwgFAmdQA18xMAQCZ1EJAMwIAgMJAGcCBQJjSQUCZ08GCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ08FA25pbAIACQDMCAIDCQBnAgUCY0oFAmdGBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ0YFA25pbAIABQNuaWwDCQAAAgUCZ1EFAmdRBAJnRwkA/AcEBQJhRgIEYnVybgkAzAgCBQJnTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYQUCZ04FA25pbAMJAAACBQJnRwUCZ0cFAmNLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRPARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmdOAmZoAmZpBAJncAoAAmFICQD8BwQFAmFGAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUgCB0Jvb2xlYW4FAmFICQACAQkArAICCQADAQUCYUgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmd3AwMJAQJhSwAGCQAAAgUCYVoFAXEGBQJncAQCZk8JAMwIAgMDCQEBIQEFAmd3BgkBAmZEAQUCZE8GCQECYUQBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTwhwYXltZW50cwAABgkBAmFEAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk8FAmZPBAJiWgkBAmFOAAQCZ0kJAQJiZgAEAmdpCQDZBAEJAJEDAgUCYloFAXQEAmdKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnSQUBQQIKV3Igc3QgYWRkcgQCZ0sJAPwHBAUCZ0oCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnaQkAzAgCBQJnTgUDbmlsBQNuaWwDCQAAAgUCZ0sFAmdLBAJnUgkBAmZnBgUCZmgFAmZpCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnaQUCZ04FA25pbAgFAmRPBmNhbGxlcggFAmRPDG9yaWdpbkNhbGxlcggFAmRPDXRyYW5zYWN0aW9uSWQEAmNLCAUCZ1ICXzEEAmZyCAUCZ1ICXzIJAJQKAgUCY0sFAmZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRPARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJnUwJnVAQCYVYJAQJhTgAEAmNzCQCRAwIFAmFWBQF1BAJjdAkAkQMCBQJhVgUBdgQCY3IJAJEDAgUCYVYFAXQEAmdVCQECZUoFBQJnUwUCZ1QCAAIABgQCZmEIBQJnVQJfMQQCY0sIBQJnVQJfMgQCY2wIBQJnVQJfMwQCZmYIBQJnVQJfNAkAlAoCBQNuaWwJAJUKAwUCZmEFAmNsBQJmZgJkTwEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJnUwJnVAQCYVYJAQJhTgAEAmNzCQCRAwIFAmFWBQF1BAJjdAkAkQMCBQJhVgUBdgQCY3IJAJEDAgUCYVYFAXQEAmdWCQECZUoFBQJnUwUCZ1QCAAIABwQCZmEIBQJnVgJfMQQCY0sIBQJnVgJfMgQCY2wIBQJnVgJfMwQCZmYIBQJnVgJfNAkAlAoCBQNuaWwJAJUKAwUCZmEFAmNsBQJmZgJkTwEIYWN0aXZhdGUCAmdXAmdYAwkBAiE9AgkApQgBCAUCZE8GY2FsbGVyCQClCAEFAmFGCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAAUCZ1cJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAAUCZ1gFA25pbAIHc3VjY2VzcwJkTwEEc2V0UwICZ1kCZ0wDCQECIT0CCQClCAEIBQJkTwZjYWxsZXIJAQJhQQIFBHRoaXMJAQJhZgAFAmZDCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmdZBQJnTAUDbmlsAmRPAQRzZXRJAgJnWQJnTAMJAQIhPQIJAKUIAQgFAmRPBmNhbGxlcgkBAmFBAgUEdGhpcwkBAmFmAAUCZkMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmdZBQJnTAUDbmlsAmRPARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhTgACZE8BHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJCCQCUCgIFA25pbAkBAmJBAQUCYkICZE8BGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJUAmJVAmJZBAJnWgkBAmJYAwUCYlQFAmJVBQJiWQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmdaAAAJAMwIAgkApgMBCQCRAwIFAmdaAAEJAMwIAgkApgMBCQCRAwIFAmdaAAIFA25pbAJkTwEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSgJoYQkAlAoCBQNuaWwJAQFJAgkApwMBBQFKBQJoYQJkTwEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUcBSAkAlAoCBQNuaWwJAKYDAQkBAUYCBQFHBQFIAmRPAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJEAmJFCQCUCgIFA25pbAkApgMBCQECYkMCCQCnAwEFAmJECQCnAwEFAmJFAmRPASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY24CYkkCY00CY04CY08CY1ACaGICY1ECY1IJAJQKAgUDbmlsCQECY0wNBQJjbgUCYkkFAmNNBQJjTgUCY08FAmNQBQJoYgUCY1EFAmNSBgcAAAIAAmRPASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY24CaGMCY3ACaGIEAmRnCQECY20EBQJjbgUCaGMFAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBBQJoYgkAlAoCBQNuaWwJAJwKCggFAmRnAl8xCAUCZGcCXzIIBQJkZwJfMwgFAmRnAl80CAUCZGcCXzUIBQJkZwJfNggFAmRnAl83CQCmAwEIBQJkZwJfOAgFAmRnAl85CAUCZGcDXzEwAQJoZAECaGUABAJoZgQCYXcJAQJmQQADCQABAgUCYXcCCkJ5dGVWZWN0b3IEAmZFBQJhdwUCZkUDCQABAgUCYXcCBFVuaXQIBQJoZA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXcFAmhkAwkAAQIFAmF3AgVPcmRlcgQCZEIFAmF3BAJoZwkBAmFMAAQCaGgJAQJkQQEFAmRCBAJoaQkA9AMDCAUCZEIJYm9keUJ5dGVzCQCRAwIIBQJkQgZwcm9vZnMAAAgFAmRCD3NlbmRlclB1YmxpY0tleQQCaGoJAPQDAwgFAmRCCWJvZHlCeXRlcwkAkQMCCAUCZEIGcHJvb2ZzAAEFAmhnAwMDBQJoaAUCaGkHBQJoagcGCQECYXIDBQJoaAUCaGkFAmhqAwkAAQIFAmF3AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZWIFAmF3BAJoawkA9gMBCQEFdmFsdWUBCAUCZWIGc2NyaXB0BAJobAkA2wQBCQEFdmFsdWUBCQCdCAIFAmFGCQECYXAABAJobQkA8QcBBQR0aGlzAwMJAAACBQJobAUCaGsJAQIhPQIFAmhtBQJoawcGCQD0AwMIBQJoZAlib2R5Qnl0ZXMJAJEDAggFAmhkBnByb29mcwAABQJoZgkA9AMDCAUCaGQJYm9keUJ5dGVzCQCRAwIIBQJoZAZwcm9vZnMAAAUCaGYMAnlH", "chainId": 84, "height": 2408829, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6J4GfHLtAFMqJU6SrHPGqqEvnVfQaNixzKokUNLu5RLN Next: DoeuqXRFJRchjnDA2Mp2PhvQv5DQtWBWZtacmhmDeJ8S Diff:
OldNewDifferences
115115 func af () = "%s__addonAddr"
116116
117117
118-func ag () = "%s__factoryConfig"
118+func ag () = "%s__swapContract"
119119
120120
121-func ah () = "%s%s__matcher__publicKey"
121+func ah () = "%s__factoryConfig"
122122
123123
124-func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
124+func ai () = "%s%s__matcher__publicKey"
125125
126126
127-func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
127+func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
128128
129129
130-func an () = "%s__shutdown"
130+func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
131131
132132
133-func ao () = "%s__allowedLpStableScriptHash"
133+func ao () = "%s__shutdown"
134134
135135
136-func ap () = "%s__feeCollectorAddress"
136+func ap () = "%s__allowedLpStableScriptHash"
137137
138138
139-func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
139+func aq () = "%s__feeCollectorAddress"
140140
141141
142-func au (J) = {
143- let av = J
144- if ($isInstanceOf(av, "String"))
142+func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
143+
144+
145+func av (J) = {
146+ let aw = J
147+ if ($isInstanceOf(aw, "String"))
145148 then {
146- let aw = av
147- aw
149+ let ax = aw
150+ ax
148151 }
149152 else throw("fail cast to String")
150153 }
151154
152155
153-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
156+func ay (az) = valueOrErrorMessage(getString(az), (("mandatory this." + az) + " is not defined"))
154157
155158
156-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
159+func aA (aB,az) = valueOrErrorMessage(getString(aB, az), makeString(["mandatory ", toString(aB), ".", az, " not defined"], ""))
157160
158161
159-func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
162+func aC (aB,az) = valueOrErrorMessage(getInteger(aB, az), makeString(["mandatory ", toString(aB), ".", az, " not defined"], ""))
160163
161164
162-let aD = addressFromStringValue(ax(this, R()))
165+func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
163166
164-let aE = {
165- let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166- if ($isInstanceOf(aF, "Int"))
167- then aF
168- else throw(($getType(aF) + " couldn't be cast to Int"))
167+
168+let aF = addressFromStringValue(aA(this, R()))
169+
170+let aG = {
171+ let aH = invoke(aF, "getInFeeREADONLY", [toString(this)], nil)
172+ if ($isInstanceOf(aH, "Int"))
173+ then aH
174+ else throw(($getType(aH) + " couldn't be cast to Int"))
169175 }
170176
171-let aG = {
172- let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173- if ($isInstanceOf(aF, "Int"))
174- then aF
175- else throw(($getType(aF) + " couldn't be cast to Int"))
177+let aI = {
178+ let aH = invoke(aF, "getOutFeeREADONLY", [toString(this)], nil)
179+ if ($isInstanceOf(aH, "Int"))
180+ then aH
181+ else throw(($getType(aH) + " couldn't be cast to Int"))
176182 }
177183
178-let aH = ax(this, ae())
184+let aJ = aA(this, ae())
179185
180-func aI () = valueOrElse(getBoolean(aD, an()), false)
186+func aK () = valueOrElse(getBoolean(aF, ao()), false)
181187
182188
183-func aJ () = fromBase58String(ax(aD, ah()))
189+func aL () = fromBase58String(aA(aF, ai()))
184190
185191
186-let aK = addressFromStringValue(ax(aD, ap()))
192+let aM = addressFromStringValue(aA(aF, aq()))
187193
188-func aL () = {
189- let aM = ax(this, ac())
190- let aN = ax(this, ad())
191- let aO = aA(aD, al(aN))
192- let aj = aA(aD, al(aM))
193- split(ax(aD, ai(toString(aj), toString(aO))), l)
194+func aN () = {
195+ let aO = aA(this, ac())
196+ let aP = aA(this, ad())
197+ let aQ = aC(aF, am(aP))
198+ let ak = aC(aF, am(aO))
199+ split(aA(aF, aj(toString(ak), toString(aQ))), l)
194200 }
195201
196202
197-func aP (aQ) = if ((aQ == i))
203+func aR (aS) = if ((aS == i))
198204 then unit
199- else fromBase58String(aQ)
205+ else fromBase58String(aS)
200206
201207
202-func aR (aQ) = if ((aQ == unit))
208+func aT (aS) = if ((aS == unit))
203209 then i
204- else toBase58String(value(aQ))
210+ else toBase58String(value(aS))
205211
206212
207-func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
213+func aU (aV) = $Tuple7(addressFromStringValue(aV[r]), parseIntValue(aV[s]), fromBase58String(aV[t]), aR(aV[u]), aR(aV[v]), parseIntValue(aV[w]), parseIntValue(aV[x]))
208214
209215
210-let aU = aS(aL())
216+let aW = aU(aN())
211217
212-let aV = aU
218+let aX = aW
213219
214-let aW = aV._1
220+let aY = aX._1
215221
216-let aX = aV._2
222+let aZ = aX._2
217223
218-let aY = aV._3
224+let ba = aX._3
219225
220-let aZ = aV._4
226+let bb = aX._4
221227
222-let ba = aV._5
228+let bc = aX._5
223229
224-let bb = aV._6
230+let bd = aX._6
225231
226-let bc = aV._7
232+let be = aX._7
227233
228-func bd () = split(ax(aD, ag()), l)
234+func bf () = split(aA(aF, ah()), l)
229235
230236
231-let be = bd()
237+let bg = bf()
232238
233-let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
239+let bh = valueOrErrorMessage(addressFromString(bg[A]), "Invalid staking contract address")
234240
235-let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
241+let bi = valueOrErrorMessage(addressFromString(bg[C]), "Invalid slipage contract address")
236242
237-let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
243+let bj = valueOrErrorMessage(addressFromString(bg[D]), "Invalid gwx contract address")
238244
239-let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
245+let bk = valueOrErrorMessage(addressFromString(bg[B]), "Invalid gwx contract address")
240246
241-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
247+func bl (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv)], l)
242248
243249
244-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
250+func bw (bx,by,bz,bp,bs,bt) = makeString(["%d%d%d%d%d%d", toString(bx), toString(by), toString(bz), toString(bp), toString(bs), toString(bt)], l)
245251
246252
247-func by (bz) = if ((bz == "WAVES"))
253+func bA (bB) = if ((bB == "WAVES"))
248254 then wavesBalance(this).available
249- else assetBalance(this, fromBase58String(bz))
255+ else assetBalance(this, fromBase58String(bB))
250256
251257
252-func bA (bB,bC) = fraction(bB, c, bC)
258+func bC (bD,bE) = fraction(bD, c, bE)
253259
254260
255-func bD (bE,bF,bG) = {
256- let bH = fraction((bE - bF), b, bF)
257- let bI = ((bG - P(bH)) > d)
258- if (!(bI))
259- then throw(("Big slpg: " + toString(bH)))
260- else $Tuple2(bI, min([bE, bF]))
261+func bF (bG,bH,bI) = {
262+ let bJ = fraction((bG - bH), b, bH)
263+ let bK = ((bI - P(bJ)) > d)
264+ if (!(bK))
265+ then throw(("Big slpg: " + toString(bJ)))
266+ else $Tuple2(bK, min([bG, bH]))
261267 }
262268
263269
264-func bJ (bK,bL,bM) = {
265- let bH = fraction(bL, b, bK)
266- let bN = (bM > bH)
267- if (if (bN)
270+func bL (bM,bN,bO) = {
271+ let bJ = fraction(bN, b, bM)
272+ let bP = (bO > bJ)
273+ if (if (bP)
268274 then true
269- else (bL > bK))
270- then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271- else bN
275+ else (bN > bM))
276+ then throw(((((((toString(bN) + " ") + toString(bM)) + " ") + toString(bJ)) + " ") + toString(bO)))
277+ else bP
272278 }
273279
274280
275-func bO (bP,bQ,bR,bS) = {
276- let bT = F(bR, bP)
277- let bU = F(bS, bQ)
278- bA(bU, bT)
281+func bQ (bR,bS,bT,bU) = {
282+ let bV = F(bT, bR)
283+ let bW = F(bU, bS)
284+ bC(bW, bV)
279285 }
280286
281287
282-func bV (bR,bS,bW) = {
283- let bX = aL()
284- let bY = parseIntValue(bX[w])
285- let bZ = parseIntValue(bX[x])
286- let ca = bO(bY, bZ, bR, bS)
287- let bC = F(bR, bY)
288- let bB = F(bS, bZ)
289- let cb = F(bW, a)
290- let cc = bA(bC, cb)
291- let cd = bA(bB, cb)
292-[ca, cc, cd]
288+func bX (bT,bU,bY) = {
289+ let bZ = aN()
290+ let ca = parseIntValue(bZ[w])
291+ let cb = parseIntValue(bZ[x])
292+ let cc = bQ(ca, cb, bT, bU)
293+ let bE = F(bT, ca)
294+ let bD = F(bU, cb)
295+ let cd = F(bY, a)
296+ let ce = bC(bE, cd)
297+ let cf = bC(bD, cd)
298+[cc, ce, cf]
293299 }
294300
295301
296-func ce (bR,bS,bW) = {
297- let cf = bV(bR, bS, bW)
298-[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
302+func cg (bT,bU,bY) = {
303+ let ch = bX(bT, bU, bY)
304+[I(ch[0], a), I(ch[1], a), I(ch[2], a)]
299305 }
300306
301307
302-func cg (ch,ci) = {
303- let cj = if ((ci == 0))
308+func ci (cj,ck) = {
309+ let cl = if ((ck == 0))
304310 then 0
305- else fraction(ch, ci, a)
306- $Tuple2((ch - cj), cj)
311+ else fraction(cj, ck, a)
312+ $Tuple2((cj - cl), cl)
307313 }
308314
309315
310-func ck (cl,cm,cn,co) = {
311- let bX = aL()
312- let cp = bX[t]
313- let cq = bX[u]
314- let cr = bX[v]
315- let cs = parseIntValue(bX[w])
316- let ct = parseIntValue(bX[x])
317- let cu = bX[s]
318- let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319- if ((cp != cm))
316+func cm (cn,co,cp,cq) = {
317+ let bZ = aN()
318+ let cr = bZ[t]
319+ let cs = bZ[u]
320+ let ct = bZ[v]
321+ let cu = parseIntValue(bZ[w])
322+ let cv = parseIntValue(bZ[x])
323+ let cw = bZ[s]
324+ let cx = valueOrErrorMessage(assetInfo(fromBase58String(cr)), "Wrong LP id").quantity
325+ if ((cr != co))
320326 then throw("Wrong pmt asset")
321327 else {
322- let cw = by(cq)
323- let cx = F(cw, cs)
324- let cy = by(cr)
325- let cz = F(cy, ct)
326- let cA = bA(cz, cx)
327- let cB = I(cA, a)
328- let cC = F(cn, a)
329- let cD = F(cv, a)
330- let cE = fraction(cx, cC, cD)
331- let cF = fraction(cz, cC, cD)
332- let cG = I(cE, cs)
333- let cH = I(cF, ct)
334- let cI = if ((cl == ""))
328+ let cy = bA(cs)
329+ let cz = F(cy, cu)
330+ let cA = bA(ct)
331+ let cB = F(cA, cv)
332+ let cC = bC(cB, cz)
333+ let cD = I(cC, a)
334+ let cE = F(cp, a)
335+ let cF = F(cx, a)
336+ let cG = fraction(cz, cE, cF)
337+ let cH = fraction(cB, cE, cF)
338+ let cI = I(cG, cu)
339+ let cJ = I(cH, cv)
340+ let cK = if ((cn == ""))
335341 then nil
336- else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
342+ else [ScriptTransfer(cq, cI, if ((cs == "WAVES"))
337343 then unit
338- else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
344+ else fromBase58String(cs)), ScriptTransfer(cq, cJ, if ((ct == "WAVES"))
339345 then unit
340- else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341- $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
346+ else fromBase58String(ct)), StringEntry(ab(toString(cq), cn), bw(cI, cJ, cp, cD, height, lastBlock.timestamp)), IntegerEntry(U(), cD), IntegerEntry(V(height, lastBlock.timestamp), cD)]
347+ $Tuple10(cI, cJ, cs, ct, cy, cA, cx, cC, cw, cK)
342348 }
343349 }
344350
345351
346-func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347- let bX = aL()
348- let cp = fromBase58String(bX[t])
349- let cU = bX[u]
350- let cV = bX[v]
351- let cW = bX[y]
352- let cX = bX[z]
353- let cY = parseIntValue(bX[w])
354- let cZ = parseIntValue(bX[x])
355- let cu = bX[s]
356- let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357- let cw = if (cO)
358- then by(cU)
359- else if (if (cQ)
360- then (cT == cU)
352+func cL (cn,bI,cM,cN,cO,cP,cq,cQ,cR,cS,cT,cU,cV) = {
353+ let bZ = aN()
354+ let cr = fromBase58String(bZ[t])
355+ let cW = bZ[u]
356+ let cX = bZ[v]
357+ let cY = bZ[y]
358+ let cZ = bZ[z]
359+ let da = parseIntValue(bZ[w])
360+ let db = parseIntValue(bZ[x])
361+ let cw = bZ[s]
362+ let dc = valueOrErrorMessage(assetInfo(cr), "Wr lp as").quantity
363+ let cy = if (cQ)
364+ then bA(cW)
365+ else if (if (cS)
366+ then (cV == cW)
361367 else false)
362- then (by(cU) - cS)
363- else if (cQ)
364- then by(cU)
365- else (by(cU) - cK)
366- let cy = if (cO)
367- then by(cV)
368- else if (if (cQ)
369- then (cT == cV)
368+ then (bA(cW) - cU)
369+ else if (cS)
370+ then bA(cW)
371+ else (bA(cW) - cM)
372+ let cA = if (cQ)
373+ then bA(cX)
374+ else if (if (cS)
375+ then (cV == cX)
370376 else false)
371- then (by(cV) - cS)
372- else if (cQ)
373- then by(cV)
374- else (by(cV) - cM)
375- let db = F(cK, cY)
376- let dc = F(cM, cZ)
377- let dd = bA(dc, db)
378- let cx = F(cw, cY)
379- let cz = F(cy, cZ)
380- let de = if ((da == 0))
377+ then (bA(cX) - cU)
378+ else if (cS)
379+ then bA(cX)
380+ else (bA(cX) - cO)
381+ let dd = F(cM, da)
382+ let de = F(cO, db)
383+ let df = bC(de, dd)
384+ let cz = F(cy, da)
385+ let cB = F(cA, db)
386+ let dg = if ((dc == 0))
381387 then {
382- let cA = d
383- let df = d
384- let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385- $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
388+ let cC = d
389+ let dh = d
390+ let cd = pow((dd * de), 0, toBigInt(5), 1, 0, DOWN)
391+ $Tuple5(I(cd, a), I(dd, da), I(de, db), bC((cB + de), (cz + dd)), dh)
386392 }
387393 else {
388- let cA = bA(cz, cx)
389- let dg = fraction(P((cA - dd)), c, cA)
390- let df = F(bG, a)
391- if (if (if (cR)
392- then (cA != d)
394+ let cC = bC(cB, cz)
395+ let di = fraction(P((cC - df)), c, cC)
396+ let dh = F(bI, a)
397+ if (if (if (cT)
398+ then (cC != d)
393399 else false)
394- then (dg > df)
400+ then (di > dh)
395401 else false)
396- then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
402+ then throw(((("Price slippage " + toString(di)) + " > ") + toString(dh)))
397403 else {
398- let dh = F(da, a)
399- let di = fraction(db, cA, c)
400- let dj = fraction(dc, c, cA)
401- let dk = if ((di > dc))
402- then $Tuple2(dj, dc)
403- else $Tuple2(db, di)
404- let dl = dk._1
405- let dm = dk._2
406- let cb = fraction(dh, dm, cz)
407- $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
404+ let dj = F(dc, a)
405+ let dk = fraction(dd, cC, c)
406+ let dl = fraction(de, c, cC)
407+ let dm = if ((dk > de))
408+ then $Tuple2(dl, de)
409+ else $Tuple2(dd, dk)
410+ let dn = dm._1
411+ let do = dm._2
412+ let cd = fraction(dj, do, cB)
413+ $Tuple5(I(cd, a), I(dn, da), I(do, db), cC, dh)
408414 }
409415 }
410- let dn = de._1
411- let do = de._2
412- let dp = de._3
413- let cB = I(de._4, a)
414- let dq = I(de._5, a)
415- if ((0 >= dn))
416+ let dp = dg._1
417+ let dq = dg._2
418+ let dr = dg._3
419+ let cD = I(dg._4, a)
420+ let ds = I(dg._5, a)
421+ if ((0 >= dp))
416422 then throw("LP <= 0")
417423 else {
418- let dr = if (!(cP))
424+ let dt = if (!(cR))
419425 then 0
420- else dn
421- let ds = (cK - do)
422- let dt = (cM - dp)
423- let du = if (if (cQ)
424- then (cT == cU)
426+ else dp
427+ let du = (cM - dq)
428+ let dv = (cO - dr)
429+ let dw = if (if (cS)
430+ then (cV == cW)
425431 else false)
426- then $Tuple2(cS, 0)
427- else if (if (cQ)
428- then (cT == cV)
432+ then $Tuple2(cU, 0)
433+ else if (if (cS)
434+ then (cV == cX)
429435 else false)
430- then $Tuple2(0, cS)
431- else $Tuple2(do, dp)
432- let dv = du._1
433- let dw = du._2
434- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435- $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
436+ then $Tuple2(0, cU)
437+ else $Tuple2(dq, dr)
438+ let dx = dw._1
439+ let dy = dw._2
440+ let dz = [IntegerEntry(U(), cD), IntegerEntry(V(height, lastBlock.timestamp), cD), StringEntry(Y(cq, cn), bl(dx, dy, dt, cD, bI, ds, height, lastBlock.timestamp, du, dv))]
441+ $Tuple13(dp, dt, cD, cy, cA, dc, cr, cw, dz, du, dv, cN, cP)
436442 }
437443 }
438444
439445
440-func dy (dz) = {
441- let bX = aL()
442- let dA = bX[u]
443- let dB = bX[v]
444- let cu = parseIntValue(bX[s])
445- let bY = parseIntValue(bX[w])
446- let bZ = parseIntValue(bX[x])
447- let dC = by(dA)
448- let dD = by(dB)
449- let cA = if ((dz.orderType == Buy))
450- then bO(bY, bZ, (dC + dz.amount), dD)
451- else bO(bY, bZ, (dC - dz.amount), dD)
452- let cB = I(cA, a)
453- if (if (if (aI())
446+func dA (dB) = {
447+ let bZ = aN()
448+ let dC = bZ[u]
449+ let dD = bZ[v]
450+ let cw = parseIntValue(bZ[s])
451+ let ca = parseIntValue(bZ[w])
452+ let cb = parseIntValue(bZ[x])
453+ let dE = bA(dC)
454+ let dF = bA(dD)
455+ let cC = if ((dB.orderType == Buy))
456+ then bQ(ca, cb, (dE + dB.amount), dF)
457+ else bQ(ca, cb, (dE - dB.amount), dF)
458+ let cD = I(cC, a)
459+ if (if (if (aK())
454460 then true
455- else (cu == p))
461+ else (cw == p))
456462 then true
457- else (cu == q))
463+ else (cw == q))
458464 then throw("Admin blocked")
459465 else {
460- let dE = dz.assetPair.amountAsset
461- let dF = if ((dE == unit))
462- then "WAVES"
463- else toBase58String(value(dE))
464- let dG = dz.assetPair.priceAsset
466+ let dG = dB.assetPair.amountAsset
465467 let dH = if ((dG == unit))
466468 then "WAVES"
467469 else toBase58String(value(dG))
468- if (if ((dF != dA))
470+ let dI = dB.assetPair.priceAsset
471+ let dJ = if ((dI == unit))
472+ then "WAVES"
473+ else toBase58String(value(dI))
474+ if (if ((dH != dC))
469475 then true
470- else (dH != dB))
476+ else (dJ != dD))
471477 then throw("Wr assets")
472478 else {
473- let dI = dz.price
474- let cZ = fraction(a, bZ, bY)
475- let dJ = L(dI, a, cZ)
476- let dK = if ((dz.orderType == Buy))
477- then (cB >= dJ)
478- else (dJ >= cB)
479+ let dK = dB.price
480+ let db = fraction(a, cb, ca)
481+ let dL = L(dK, a, db)
482+ let dM = if ((dB.orderType == Buy))
483+ then (cD >= dL)
484+ else (dL >= cD)
479485 true
480486 }
481487 }
482488 }
483489
484490
485-func dL (dM) = if ((size(dM.payments) != 1))
491+func dN (dO) = if ((size(dO.payments) != 1))
486492 then throw("1 pmnt exp")
487493 else {
488- let dN = value(dM.payments[0])
489- let cm = value(dN.assetId)
490- let cS = dN.amount
491- let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492- let cG = de._1
493- let cH = de._2
494- let cu = parseIntValue(de._9)
495- let cI = de._10
496- if (if (aI())
494+ let dP = value(dO.payments[0])
495+ let co = value(dP.assetId)
496+ let cU = dP.amount
497+ let dg = cm(toBase58String(dO.transactionId), toBase58String(co), cU, dO.caller)
498+ let cI = dg._1
499+ let cJ = dg._2
500+ let cw = parseIntValue(dg._9)
501+ let cK = dg._10
502+ if (if (aK())
497503 then true
498- else (cu == q))
499- then throw(("Admin blocked: " + toString(cu)))
500- else $Tuple5(cG, cH, cS, cm, cI)
504+ else (cw == q))
505+ then throw(("Admin blocked: " + toString(cw)))
506+ else $Tuple5(cI, cJ, cU, co, cK)
501507 }
502508
503509
504-func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505- let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506- let cu = parseIntValue(de._8)
507- if (if (if (aI())
510+func dQ (dR,aa,dS,dT,bI,cR,cS,cT,cU,cV) = {
511+ let dg = cL(aa, bI, value(dS).amount, value(dS).assetId, value(dT).amount, value(dT).assetId, dR, (aa == ""), cR, cS, cT, cU, cV)
512+ let cw = parseIntValue(dg._8)
513+ if (if (if (aK())
508514 then true
509- else (cu == o))
515+ else (cw == o))
510516 then true
511- else (cu == q))
512- then throw(("Blocked:" + toString(cu)))
513- else de
517+ else (cw == q))
518+ then throw(("Blocked:" + toString(cw)))
519+ else dg
514520 }
515521
516522
517-func dS (dT) = {
518- let dU = g
519- let dV = dT[0]
520- let dW = dT[1]
521- let dX = parseBigIntValue(j)
522- let dY = (parseBigIntValue(aH) * dX)
523- let dZ = (dV + dW)
524- if ((dZ == e))
523+func dU (dV) = {
524+ let dW = g
525+ let dX = dV[0]
526+ let dY = dV[1]
527+ let dZ = parseBigIntValue(j)
528+ let ea = (parseBigIntValue(aJ) * dZ)
529+ let eb = (dX + dY)
530+ if ((eb == e))
525531 then e
526532 else {
527- let ea = (dY * dU)
528- let eb = (((dV * dW) * dU) * dU)
529- let ec = ((ea * dZ) / dX)
530- let ed = (ea - dX)
531- let ee = (dU + f)
532- func ef (eg,eh) = {
533- let ei = eg
534- let ej = ei._1
535- let ek = ei._2
536- if ((ek != unit))
537- then eg
533+ let ec = (ea * dW)
534+ let ed = (((dX * dY) * dW) * dW)
535+ let ee = ((ec * eb) / dZ)
536+ let ef = (ec - dZ)
537+ let eg = (dW + f)
538+ func eh (ei,ej) = {
539+ let ek = ei
540+ let el = ek._1
541+ let em = ek._2
542+ if ((em != unit))
543+ then ei
538544 else {
539- let el = (((ej * ej) * ej) / eb)
540- let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541- let en = Q((em - value(ej)))
542- if ((f >= en))
543- then $Tuple2(em, eh)
544- else $Tuple2(em, unit)
545+ let en = (((el * el) * el) / ed)
546+ let eo = (((ee + (en * dW)) * el) / (((ef * el) / dZ) + (eg * en)))
547+ let ep = Q((eo - value(el)))
548+ if ((f >= ep))
549+ then $Tuple2(eo, ej)
550+ else $Tuple2(eo, unit)
545551 }
546552 }
547553
548- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549- let ep = {
550- let eq = eo
551- let er = size(eq)
552- let es = $Tuple2(dZ, unit)
553- func et (eu,ev) = if ((ev >= er))
554- then eu
555- else ef(eu, eq[ev])
554+ let eq = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
555+ let er = {
556+ let es = eq
557+ let et = size(es)
558+ let eu = $Tuple2(eb, unit)
559+ func ev (ew,ex) = if ((ex >= et))
560+ then ew
561+ else eh(ew, es[ex])
556562
557- func ew (eu,ev) = if ((ev >= er))
558- then eu
563+ func ey (ew,ex) = if ((ex >= et))
564+ then ew
559565 else throw("List size exceeds 15")
560566
561- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
567+ ey(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(eu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
562568 }
563- let ej = ep._1
564- let ek = ep._2
565- if ((ek != unit))
566- then ej
567- else throw(("D calculation error, D = " + toString(ej)))
569+ let el = er._1
570+ let em = er._2
571+ if ((em != unit))
572+ then el
573+ else throw(("D calculation error, D = " + toString(el)))
568574 }
569575 }
570576
571577
572-func ex (dT,dM,ey) = {
573- let dU = g
574- let ez = dT[if ((dM == 0))
578+func ez (dV,dO,eA) = {
579+ let dW = g
580+ let eB = dV[if ((dO == 0))
575581 then 1
576582 else 0]
577- let dX = parseBigIntValue(j)
578- let dY = (parseBigIntValue(aH) * dX)
579- let dZ = ez
580- let ea = (dY * dU)
581- let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582- let eB = ((dZ + ((ey * dX) / ea)) - ey)
583- func ef (eg,eh) = {
584- let eC = eg
585- let eD = eC._1
586- let ek = eC._2
587- if ((ek != unit))
588- then eg
583+ let dZ = parseBigIntValue(j)
584+ let ea = (parseBigIntValue(aJ) * dZ)
585+ let eb = eB
586+ let ec = (ea * dW)
587+ let eC = (((((eA * eA) / (eB * dW)) * eA) * dZ) / (ec * dW))
588+ let eD = ((eb + ((eA * dZ) / ec)) - eA)
589+ func eh (ei,ej) = {
590+ let eE = ei
591+ let eF = eE._1
592+ let em = eE._2
593+ if ((em != unit))
594+ then ei
589595 else {
590- let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591- let eF = Q((eE - value(eD)))
592- if ((f >= eF))
593- then $Tuple2(eE, eh)
594- else $Tuple2(eE, unit)
596+ let eG = (((eF * eF) + eC) / ((g * eF) + eD))
597+ let eH = Q((eG - value(eF)))
598+ if ((f >= eH))
599+ then $Tuple2(eG, ej)
600+ else $Tuple2(eG, unit)
595601 }
596602 }
597603
598- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599- let eG = {
600- let eq = eo
601- let er = size(eq)
602- let es = $Tuple2(ey, unit)
603- func et (eu,ev) = if ((ev >= er))
604- then eu
605- else ef(eu, eq[ev])
604+ let eq = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
605+ let eI = {
606+ let es = eq
607+ let et = size(es)
608+ let eu = $Tuple2(eA, unit)
609+ func ev (ew,ex) = if ((ex >= et))
610+ then ew
611+ else eh(ew, es[ex])
606612
607- func ew (eu,ev) = if ((ev >= er))
608- then eu
613+ func ey (ew,ex) = if ((ex >= et))
614+ then ew
609615 else throw("List size exceeds 15")
610616
611- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
617+ ey(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(eu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
612618 }
613- let eD = eG._1
614- let ek = eG._2
615- if ((ek != unit))
616- then eD
617- else throw(("Y calculation error, Y = " + toString(eD)))
619+ let eF = eI._1
620+ let em = eI._2
621+ if ((em != unit))
622+ then eF
623+ else throw(("Y calculation error, Y = " + toString(eF)))
618624 }
619625
620626
621-func eH (eI,cm,co,aa,eJ) = {
622- let aT = aL()
623- let cq = aT[u]
624- let cr = aT[v]
625- let cp = aT[t]
626- let cY = parseIntValue(aT[w])
627- let cZ = parseIntValue(aT[x])
628- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629- let eL = if ((eK > e))
627+func eJ (eK,co,cq,aa,eL) = {
628+ let aV = aN()
629+ let cs = aV[u]
630+ let ct = aV[v]
631+ let cr = aV[t]
632+ let da = parseIntValue(aV[w])
633+ let db = parseIntValue(aV[x])
634+ let eM = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cr)), "invalid lp asset").quantity)
635+ let eN = if ((eM > e))
630636 then true
631637 else throw("initial deposit requires all coins")
632- if ((eL == eL))
638+ if ((eN == eN))
633639 then {
634- let cw = by(cq)
635- let cy = by(cr)
636- let eM = if ((aa == ""))
637- then $Tuple2(cw, cy)
638- else if ((cm == cq))
639- then if ((eI > cw))
640+ let cy = bA(cs)
641+ let cA = bA(ct)
642+ let eO = if ((aa == ""))
643+ then $Tuple2(cy, cA)
644+ else if ((co == cs))
645+ then if ((eK > cy))
640646 then throw("invalid payment amount")
641- else $Tuple2((cw - eI), cy)
642- else if ((cm == cr))
643- then if ((eI > cy))
647+ else $Tuple2((cy - eK), cA)
648+ else if ((co == ct))
649+ then if ((eK > cA))
644650 then throw("invalid payment amount")
645- else $Tuple2(cw, (cy - eI))
651+ else $Tuple2(cy, (cA - eK))
646652 else throw("wrong pmtAssetId")
647- let eN = eM._1
648- let eO = eM._2
649- let eP = if ((cm == cq))
650- then $Tuple2(eI, 0)
651- else if ((cm == cr))
652- then $Tuple2(0, eI)
653+ let eP = eO._1
654+ let eQ = eO._2
655+ let eR = if ((co == cs))
656+ then $Tuple2(eK, 0)
657+ else if ((co == ct))
658+ then $Tuple2(0, eK)
653659 else throw("invalid payment")
654- let eQ = eP._1
655- let eR = eP._2
656- let eS = if (eJ)
657- then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658- else $Tuple3(eQ, eR, 0)
659- let eT = eS._1
660- let eU = eS._2
661- let cj = eS._3
662- let eV = (eN + eT)
663- let eW = (eO + eU)
664- let bL = dS([toBigInt(eN), toBigInt(eO)])
665- let bK = dS([toBigInt(eV), toBigInt(eW)])
666- let eX = if ((bK > bL))
660+ let eS = eR._1
661+ let eT = eR._2
662+ let eU = if (eL)
663+ then $Tuple3(ci(eS, aG)._1, ci(eT, aG)._1, ci(eK, aG)._2)
664+ else $Tuple3(eS, eT, 0)
665+ let eV = eU._1
666+ let eW = eU._2
667+ let cl = eU._3
668+ let eX = (eP + eV)
669+ let eY = (eQ + eW)
670+ let bN = dU([toBigInt(eP), toBigInt(eQ)])
671+ let bM = dU([toBigInt(eX), toBigInt(eY)])
672+ let eZ = if ((bM > bN))
667673 then true
668674 else throw()
669- if ((eX == eX))
675+ if ((eZ == eZ))
670676 then {
671- let eY = fraction(eK, (bK - bL), bL)
672- let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674- let eZ = fraction(eO, a, eN)
675- let fa = fraction(eI, a, (eZ + a))
676- let fb = (eI - fa)
677- let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678- let fd = toInt(fraction((eY - fc), b, fc))
679- $Tuple4(toInt(eY), dx, cj, fd)
677+ let fa = fraction(eM, (bM - bN), bN)
678+ let cD = I(bC(F(eY, db), F(eX, da)), a)
679+ let dz = [IntegerEntry(U(), cD), IntegerEntry(V(height, lastBlock.timestamp), cD), StringEntry(Y(cq, aa), bl(eS, eT, toInt(fa), cD, 0, 0, height, lastBlock.timestamp, 0, 0))]
680+ let fb = fraction(eQ, a, eP)
681+ let fc = fraction(eK, a, (fb + a))
682+ let fd = (eK - fc)
683+ let fe = fraction(eM, toBigInt(fd), toBigInt(eQ))
684+ let ff = toInt(fraction((fa - fe), b, fe))
685+ $Tuple4(toInt(fa), dz, cl, ff)
680686 }
681687 else throw("Strict value is not equal to itself.")
682688 }
684690 }
685691
686692
687-func fe (ff,fg,fh,dP,fi,fj) = {
688- let aT = aL()
689- let cp = aT[t]
690- let cq = aT[u]
691- let cr = aT[v]
692- let fk = parseIntValue(aT[w])
693- let fl = parseIntValue(aT[x])
694- let fm = aT[s]
695- let co = if ((dP == bi))
696- then fi
697- else dP
698- let dN = value(fh[0])
699- let cm = value(dN.assetId)
700- let cS = dN.amount
701- let cl = toBase58String(fj)
702- if ((cp != toBase58String(cm)))
693+func fg (fh,fi,fj,dR,fk,fl) = {
694+ let aV = aN()
695+ let cr = aV[t]
696+ let cs = aV[u]
697+ let ct = aV[v]
698+ let fm = parseIntValue(aV[w])
699+ let fn = parseIntValue(aV[x])
700+ let fo = aV[s]
701+ let cq = if ((dR == bk))
702+ then fk
703+ else dR
704+ let dP = value(fj[0])
705+ let co = value(dP.assetId)
706+ let cU = dP.amount
707+ let cn = toBase58String(fl)
708+ if ((cr != toBase58String(co)))
703709 then throw("Wrong LP")
704710 else {
705- let cw = by(cq)
706- let cy = by(cr)
707- let fn = {
708- let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709- if ($isInstanceOf(aF, "(Int, Int)"))
710- then aF
711- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
711+ let cy = bA(cs)
712+ let cA = bA(ct)
713+ let fp = {
714+ let aH = invoke(this, "getOneTknV2READONLY", [fh, cU], nil)
715+ if ($isInstanceOf(aH, "(Int, Int)"))
716+ then aH
717+ else throw(($getType(aH) + " couldn't be cast to (Int, Int)"))
712718 }
713- if ((fn == fn))
719+ if ((fp == fp))
714720 then {
715- let cj = fn._2
716- let fo = fn._1
717- let fp = if (if ((fg > 0))
718- then (fg > fo)
721+ let cl = fp._2
722+ let fq = fp._1
723+ let fr = if (if ((fi > 0))
724+ then (fi > fq)
719725 else false)
720- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721- else fo
722- let fq = if ((ff == cq))
723- then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724- else if ((ff == cr))
725- then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726+ then aD(makeString(["amount to receive is less than ", toString(fi)], ""))
727+ else fq
728+ let fs = if ((fh == cs))
729+ then $Tuple4(fr, 0, ((cy - fr) - cl), cA)
730+ else if ((fh == ct))
731+ then $Tuple4(0, fr, cy, ((cA - fr) - cl))
726732 else throw("invalid out asset id")
727- let fr = fq._1
728- let fs = fq._2
729- let eV = fq._3
730- let eW = fq._4
731- let ft = bA(F(eW, fl), F(eV, fk))
732- let fu = I(ft, a)
733- let fv = if ((ff == "WAVES"))
733+ let ft = fs._1
734+ let fu = fs._2
735+ let eX = fs._3
736+ let eY = fs._4
737+ let fv = bC(F(eY, fn), F(eX, fm))
738+ let fw = I(fv, a)
739+ let fx = if ((fh == "WAVES"))
734740 then unit
735- else fromBase58String(ff)
736- let fw = if ((cj > 0))
737- then [ScriptTransfer(aK, cj, fv)]
741+ else fromBase58String(fh)
742+ let fy = if ((cl > 0))
743+ then [ScriptTransfer(aM, cl, fx)]
738744 else nil
739- let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740- if ((cI == cI))
745+ let cK = ([ScriptTransfer(cq, fr, fx), StringEntry(ab(toString(cq), cn), bw(ft, fu, cU, fw, height, lastBlock.timestamp)), IntegerEntry(U(), fw), IntegerEntry(V(height, lastBlock.timestamp), fw)] ++ fy)
746+ if ((cK == cK))
741747 then {
742- let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743- if ((fx == fx))
744- then $Tuple2(cI, fp)
748+ let fz = invoke(aF, "burn", [cU], [AttachedPayment(co, cU)])
749+ if ((fz == fz))
750+ then $Tuple2(cK, fr)
745751 else throw("Strict value is not equal to itself.")
746752 }
747753 else throw("Strict value is not equal to itself.")
751757 }
752758
753759
754-func fy () = {
755- let av = getString(S())
756- if ($isInstanceOf(av, "String"))
760+func fA () = {
761+ let aw = getString(S())
762+ if ($isInstanceOf(aw, "String"))
757763 then {
758- let dZ = av
759- fromBase58String(dZ)
764+ let eb = aw
765+ fromBase58String(eb)
760766 }
761- else if ($isInstanceOf(av, "Unit"))
767+ else if ($isInstanceOf(aw, "Unit"))
762768 then unit
763769 else throw("Match error")
764770 }
765771
766772
767-func fz () = {
768- let av = getString(T())
769- if ($isInstanceOf(av, "String"))
773+func fB () = {
774+ let aw = getString(T())
775+ if ($isInstanceOf(aw, "String"))
770776 then {
771- let dZ = av
772- fromBase58String(dZ)
777+ let eb = aw
778+ fromBase58String(eb)
773779 }
774- else if ($isInstanceOf(av, "Unit"))
780+ else if ($isInstanceOf(aw, "Unit"))
775781 then unit
776782 else throw("Match error")
777783 }
778784
779785
780-let fA = throw("Permission denied")
786+let fC = throw("Permission denied")
781787
782-func fB (dM) = {
783- let av = fy()
784- if ($isInstanceOf(av, "ByteVector"))
788+func fD (dO) = {
789+ let aw = fA()
790+ if ($isInstanceOf(aw, "ByteVector"))
785791 then {
786- let fC = av
787- (dM.callerPublicKey == fC)
792+ let fE = aw
793+ (dO.callerPublicKey == fE)
788794 }
789- else if ($isInstanceOf(av, "Unit"))
790- then (dM.caller == this)
795+ else if ($isInstanceOf(aw, "Unit"))
796+ then (dO.caller == this)
791797 else throw("Match error")
792798 }
793799
794800
795-func fD (dM) = {
796- let av = fy()
797- if ($isInstanceOf(av, "ByteVector"))
801+func fF (dO) = {
802+ let aw = fA()
803+ if ($isInstanceOf(aw, "ByteVector"))
798804 then {
799- let fC = av
800- if ((dM.callerPublicKey == fC))
805+ let fE = aw
806+ if ((dO.callerPublicKey == fE))
801807 then true
802- else fA
808+ else fC
803809 }
804- else if ($isInstanceOf(av, "Unit"))
805- then if ((dM.caller == this))
810+ else if ($isInstanceOf(aw, "Unit"))
811+ then if ((dO.caller == this))
806812 then true
807- else fA
813+ else fC
808814 else throw("Match error")
809815 }
810816
811817
812-@Callable(dM)
813-func constructor (R) = {
814- let eA = fD(dM)
815- if ((eA == eA))
816- then [StringEntry(R(), R)]
817- else throw("Strict value is not equal to itself.")
818+func fG (fH,eA,fI) = {
819+ let aV = aN()
820+ let cs = aV[u]
821+ let ct = aV[v]
822+ let dW = g
823+ let dZ = parseBigIntValue(j)
824+ let ea = (parseBigIntValue(aJ) * dZ)
825+ let dV = if ((fH == false))
826+ then [(toBigInt(bA(cs)) - fI), toBigInt(bA(ct))]
827+ else [(toBigInt(bA(ct)) - fI), toBigInt(bA(cs))]
828+ let eB = dV[0]
829+ let eb = eB
830+ let ec = (ea * dW)
831+ let eC = (((((eA * eA) / (eB * dW)) * eA) * dZ) / (ec * dW))
832+ let eD = ((eb + ((eA * dZ) / ec)) - eA)
833+ func eh (ei,ej) = {
834+ let fJ = ei
835+ let eF = fJ._1
836+ let em = fJ._2
837+ if ((em != unit))
838+ then ei
839+ else {
840+ let eG = (((eF * eF) + eC) / ((g * eF) + eD))
841+ let eH = Q((eG - value(eF)))
842+ if ((f >= eH))
843+ then $Tuple2(eG, ej)
844+ else $Tuple2(eG, unit)
845+ }
846+ }
847+
848+ let eq = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
849+ let fK = {
850+ let es = eq
851+ let et = size(es)
852+ let eu = $Tuple2(eA, unit)
853+ func ev (ew,ex) = if ((ex >= et))
854+ then ew
855+ else eh(ew, es[ex])
856+
857+ func ey (ew,ex) = if ((ex >= et))
858+ then ew
859+ else throw("List size exceeds 15")
860+
861+ ey(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(eu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
862+ }
863+ let eF = fK._1
864+ let em = fK._2
865+ if ((em != unit))
866+ then eF
867+ else throw(("Y calculation error, Y = " + toString(eF)))
818868 }
819869
820870
821-
822-@Callable(dM)
823-func setManager (fE) = {
824- let eA = fD(dM)
825- if ((eA == eA))
871+@Callable(dO)
872+func calculateAmountOutForSwapAndSendTokens (fL,fH,fM,fN) = {
873+ let fO = [if ((value(dO.payments[0]).amount >= fL))
874+ then true
875+ else aD("Wrong amount"), if ((dO.caller == addressFromStringValue(ay(ag()))))
876+ then true
877+ else aD("Permission denied")]
878+ if ((fO == fO))
826879 then {
827- let fF = fromBase58String(fE)
828- if ((fF == fF))
829- then [StringEntry(T(), fE)]
880+ let dP = value(dO.payments[0])
881+ let fP = toBase58String(value(dP.assetId))
882+ let fQ = if ((fH == false))
883+ then {
884+ let fR = 1
885+ let fS = ay(ad())
886+ let fI = (bA(fP) - value(dO.payments[0]).amount)
887+ $Tuple3(fS, fR, fI)
888+ }
889+ else {
890+ let fR = 0
891+ let fS = ay(ac())
892+ let fI = (bA(fP) - value(dO.payments[0]).amount)
893+ $Tuple3(fS, fR, fI)
894+ }
895+ let fS = fQ._1
896+ let fR = fQ._2
897+ let fI = fQ._3
898+ let aV = aN()
899+ let cs = aV[u]
900+ let ct = aV[v]
901+ let dV = [(toBigInt(bA(cs)) - toBigInt(value(dO.payments[0]).amount)), toBigInt(bA(ct))]
902+ let eA = dU(dV)
903+ let eF = fG(fH, eA, toBigInt(fI))
904+ let eB = (toBigInt(fI) + toBigInt(fL))
905+ let fT = ((toBigInt(bA(fS)) - eF) - toBigInt(1))
906+ let fU = max([0, toInt(fT)])
907+ let fV = [(fM >= fU), throw("Exchange resulted in fewer coins than expected")]
908+ if ((fV == fV))
909+ then [ScriptTransfer(addressFromStringValue(fN), toInt(fT), fromBase58String(fS))]
830910 else throw("Strict value is not equal to itself.")
831911 }
832912 else throw("Strict value is not equal to itself.")
834914
835915
836916
837-@Callable(dM)
838-func confirmManager () = {
839- let cf = fz()
840- let fG = if (isDefined(cf))
841- then true
842- else throw("No pending manager")
843- if ((fG == fG))
917+@Callable(dO)
918+func setSwapContract (fW) = {
919+ let fX = fF(dO)
920+ if ((fX == fX))
921+ then [StringEntry(ag(), fW)]
922+ else throw("Strict value is not equal to itself.")
923+ }
924+
925+
926+
927+@Callable(dO)
928+func constructor (R) = {
929+ let eC = fF(dO)
930+ if ((eC == eC))
931+ then [StringEntry(R(), R)]
932+ else throw("Strict value is not equal to itself.")
933+ }
934+
935+
936+
937+@Callable(dO)
938+func setManager (fY) = {
939+ let eC = fF(dO)
940+ if ((eC == eC))
844941 then {
845- let fH = if ((dM.callerPublicKey == value(cf)))
846- then true
847- else throw("You are not pending manager")
848- if ((fH == fH))
849- then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
942+ let fZ = fromBase58String(fY)
943+ if ((fZ == fZ))
944+ then [StringEntry(T(), fY)]
850945 else throw("Strict value is not equal to itself.")
851946 }
852947 else throw("Strict value is not equal to itself.")
854949
855950
856951
857-@Callable(dM)
858-func put (fI,fJ) = {
859- let fK = bd()
860- let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861- let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862- if ((0 > fI))
952+@Callable(dO)
953+func confirmManager () = {
954+ let ch = fB()
955+ let ga = if (isDefined(ch))
956+ then true
957+ else throw("No pending manager")
958+ if ((ga == ga))
959+ then {
960+ let gb = if ((dO.callerPublicKey == value(ch)))
961+ then true
962+ else throw("You are not pending manager")
963+ if ((gb == gb))
964+ then [StringEntry(S(), toBase58String(value(ch))), DeleteEntry(T())]
965+ else throw("Strict value is not equal to itself.")
966+ }
967+ else throw("Strict value is not equal to itself.")
968+ }
969+
970+
971+
972+@Callable(dO)
973+func put (gc,gd) = {
974+ let ge = bf()
975+ let gf = valueOrErrorMessage(addressFromString(ge[A]), "Wr st addr")
976+ let gg = valueOrErrorMessage(addressFromString(ge[C]), "Wr sl addr")
977+ if ((0 > gc))
863978 then throw("Wrong slippage")
864- else if ((size(dM.payments) != 2))
979+ else if ((size(dO.payments) != 2))
865980 then throw("2 pmnts expd")
866981 else {
867- let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868- let dr = fN._2
869- let fO = fN._7
870- let cI = fN._9
871- let ds = fN._10
872- let dt = fN._11
873- let cq = fN._12
874- let cr = fN._13
875- let de = invoke(aD, "emit", [dr], nil)
876- if ((de == de))
982+ let gh = dQ(toString(dO.caller), toBase58String(dO.transactionId), AttachedPayment(value(dO.payments[0]).assetId, value(dO.payments[0]).amount), dO.payments[1], gc, true, false, true, 0, "")
983+ let dt = gh._2
984+ let gi = gh._7
985+ let cK = gh._9
986+ let du = gh._10
987+ let dv = gh._11
988+ let cs = gh._12
989+ let ct = gh._13
990+ let dg = invoke(aF, "emit", [dt], nil)
991+ if ((dg == dg))
877992 then {
878- let fP = {
879- let av = de
880- if ($isInstanceOf(av, "Address"))
993+ let gj = {
994+ let aw = dg
995+ if ($isInstanceOf(aw, "Address"))
881996 then {
882- let fQ = av
883- invoke(fQ, "emit", [dr], nil)
997+ let gk = aw
998+ invoke(gk, "emit", [dt], nil)
884999 }
8851000 else unit
8861001 }
887- if ((fP == fP))
1002+ if ((gj == gj))
8881003 then {
889- let fR = if ((ds > 0))
890- then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
1004+ let gl = if ((du > 0))
1005+ then invoke(gg, "put", nil, [AttachedPayment(cs, du)])
8911006 else nil
892- if ((fR == fR))
1007+ if ((gl == gl))
8931008 then {
894- let fS = if ((dt > 0))
895- then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
1009+ let gm = if ((dv > 0))
1010+ then invoke(gg, "put", nil, [AttachedPayment(ct, dv)])
8961011 else nil
897- if ((fS == fS))
1012+ if ((gm == gm))
8981013 then {
899- let fT = if (fJ)
1014+ let gn = if (gd)
9001015 then {
901- let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902- if ((fU == fU))
1016+ let go = invoke(gf, "stake", nil, [AttachedPayment(gi, dt)])
1017+ if ((go == go))
9031018 then nil
9041019 else throw("Strict value is not equal to itself.")
9051020 }
906- else [ScriptTransfer(dM.caller, dr, fO)]
907- (cI ++ fT)
1021+ else [ScriptTransfer(dO.caller, dt, gi)]
1022+ (cK ++ gn)
9081023 }
9091024 else throw("Strict value is not equal to itself.")
9101025 }
9181033
9191034
9201035
921-@Callable(dM)
922-func putOneTknV2 (fg,fJ) = {
923- let fV = {
924- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925- if ($isInstanceOf(aF, "Boolean"))
926- then aF
927- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1036+@Callable(dO)
1037+func putOneTknV2 (fi,gd) = {
1038+ let gp = {
1039+ let aH = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1040+ if ($isInstanceOf(aH, "Boolean"))
1041+ then aH
1042+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
9281043 }
929- let fW = if (if (if (aI())
1044+ let gq = if (if (if (aK())
9301045 then true
931- else (aX == o))
1046+ else (aZ == o))
9321047 then true
933- else (aX == q))
1048+ else (aZ == q))
9341049 then true
935- else fV
936- let fX = [if (if (!(fW))
1050+ else gp
1051+ let fO = [if (if (!(gq))
9371052 then true
938- else fB(dM))
1053+ else fD(dO))
9391054 then true
940- else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1055+ else aD("put operation is blocked by admin"), if ((size(dO.payments) == 1))
9411056 then true
942- else aB("exactly 1 payment are expected")]
943- if ((fX == fX))
1057+ else aD("exactly 1 payment are expected")]
1058+ if ((fO == fO))
9441059 then {
945- let aT = aL()
946- let cq = aT[u]
947- let cr = aT[v]
948- let cp = fromBase58String(aT[t])
949- let fk = parseIntValue(aT[w])
950- let fl = parseIntValue(aT[x])
951- let co = if ((dM.caller == this))
952- then dM.originCaller
953- else dM.caller
954- let dN = value(dM.payments[0])
955- let cm = toBase58String(value(dN.assetId))
956- let cS = dN.amount
957- let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958- if ((fY == fY))
1060+ let aV = aN()
1061+ let cs = aV[u]
1062+ let ct = aV[v]
1063+ let cr = fromBase58String(aV[t])
1064+ let fm = parseIntValue(aV[w])
1065+ let fn = parseIntValue(aV[x])
1066+ let cq = if ((dO.caller == this))
1067+ then dO.originCaller
1068+ else dO.caller
1069+ let dP = value(dO.payments[0])
1070+ let co = toBase58String(value(dP.assetId))
1071+ let cU = dP.amount
1072+ let gr = eJ(cU, co, toString(cq), toBase58String(dO.transactionId), true)
1073+ if ((gr == gr))
9591074 then {
960- let cj = fY._3
961- let cI = fY._2
962- let fZ = fY._1
963- let dr = if (if ((fg > 0))
964- then (fg > fZ)
1075+ let cl = gr._3
1076+ let cK = gr._2
1077+ let gs = gr._1
1078+ let dt = if (if ((fi > 0))
1079+ then (fi > gs)
9651080 else false)
966- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967- else fZ
968- let fN = invoke(aD, "emit", [dr], nil)
969- if ((fN == fN))
1081+ then aD(makeString(["amount to receive is less than ", toString(fi)], ""))
1082+ else gs
1083+ let gh = invoke(aF, "emit", [dt], nil)
1084+ if ((gh == gh))
9701085 then {
971- let fP = {
972- let av = fN
973- if ($isInstanceOf(av, "Address"))
1086+ let gj = {
1087+ let aw = gh
1088+ if ($isInstanceOf(aw, "Address"))
9741089 then {
975- let fQ = av
976- invoke(fQ, "emit", [dr], nil)
1090+ let gk = aw
1091+ invoke(gk, "emit", [dt], nil)
9771092 }
9781093 else unit
9791094 }
980- if ((fP == fP))
1095+ if ((gj == gj))
9811096 then {
982- let fT = if (fJ)
1097+ let gn = if (gd)
9831098 then {
984- let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985- if ((fU == fU))
1099+ let go = invoke(bh, "stake", nil, [AttachedPayment(cr, dt)])
1100+ if ((go == go))
9861101 then nil
9871102 else throw("Strict value is not equal to itself.")
9881103 }
989- else [ScriptTransfer(dM.caller, dr, cp)]
990- let fw = if ((cj > 0))
991- then [ScriptTransfer(aK, cj, fromBase58String(cm))]
1104+ else [ScriptTransfer(dO.caller, dt, cr)]
1105+ let fy = if ((cl > 0))
1106+ then [ScriptTransfer(aM, cl, fromBase58String(co))]
9921107 else nil
993- $Tuple2(((cI ++ fT) ++ fw), dr)
1108+ $Tuple2(((cK ++ gn) ++ fy), dt)
9941109 }
9951110 else throw("Strict value is not equal to itself.")
9961111 }
10031118
10041119
10051120
1006-@Callable(dM)
1007-func putForFree (ga) = if ((0 > ga))
1121+@Callable(dO)
1122+func putForFree (gt) = if ((0 > gt))
10081123 then throw("Wrong slpg")
1009- else if ((size(dM.payments) != 2))
1124+ else if ((size(dO.payments) != 2))
10101125 then throw("2 pmnts expd")
10111126 else {
1012- let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013- gb._9
1127+ let gu = dQ(toString(dO.caller), toBase58String(dO.transactionId), AttachedPayment(value(dO.payments[0]).assetId, value(dO.payments[0]).amount), dO.payments[1], gt, false, false, true, 0, "")
1128+ gu._9
10141129 }
10151130
10161131
10171132
1018-@Callable(dM)
1133+@Callable(dO)
10191134 func get () = {
1020- let de = dL(dM)
1021- let gc = de._1
1022- let cH = de._2
1023- let cS = de._3
1024- let cm = de._4
1025- let cI = de._5
1026- let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027- if ((eB == eB))
1028- then cI
1135+ let dg = dN(dO)
1136+ let gv = dg._1
1137+ let cJ = dg._2
1138+ let cU = dg._3
1139+ let co = dg._4
1140+ let cK = dg._5
1141+ let eD = invoke(aF, "burn", [cU], [AttachedPayment(co, cU)])
1142+ if ((eD == eD))
1143+ then cK
10291144 else throw("Strict value is not equal to itself.")
10301145 }
10311146
10321147
10331148
1034-@Callable(dM)
1035-func getOneTknV2 (ff,fg) = {
1036- let fV = {
1037- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038- if ($isInstanceOf(aF, "Boolean"))
1039- then aF
1040- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1149+@Callable(dO)
1150+func getOneTknV2 (fh,fi) = {
1151+ let gp = {
1152+ let aH = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1153+ if ($isInstanceOf(aH, "Boolean"))
1154+ then aH
1155+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
10411156 }
1042- let gd = if (if (aI())
1157+ let gw = if (if (aK())
10431158 then true
1044- else (aX == q))
1159+ else (aZ == q))
10451160 then true
1046- else fV
1047- let fX = [if (if (!(gd))
1161+ else gp
1162+ let fO = [if (if (!(gw))
10481163 then true
1049- else fB(dM))
1164+ else fD(dO))
10501165 then true
1051- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1166+ else aD("get operation is blocked by admin"), if ((size(dO.payments) == 1))
10521167 then true
1053- else aB("exactly 1 payment are expected")]
1054- if ((fX == fX))
1168+ else aD("exactly 1 payment are expected")]
1169+ if ((fO == fO))
10551170 then {
1056- let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057- let cI = ge._1
1058- let fp = ge._2
1059- $Tuple2(cI, fp)
1171+ let gx = fg(fh, fi, dO.payments, dO.caller, dO.originCaller, dO.transactionId)
1172+ let cK = gx._1
1173+ let fr = gx._2
1174+ $Tuple2(cK, fr)
10601175 }
10611176 else throw("Strict value is not equal to itself.")
10621177 }
10631178
10641179
10651180
1066-@Callable(dM)
1067-func getOneTknV2READONLY (ff,gf) = {
1068- let aT = aL()
1069- let cq = aT[u]
1070- let cr = aT[v]
1071- let cp = aT[t]
1072- let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073- let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074- let bL = dS(dT)
1075- let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076- let gh = if ((ff == cq))
1181+@Callable(dO)
1182+func getOneTknV2READONLY (fh,gy) = {
1183+ let aV = aN()
1184+ let cs = aV[u]
1185+ let ct = aV[v]
1186+ let cr = aV[t]
1187+ let dV = [toBigInt(bA(cs)), toBigInt(bA(ct))]
1188+ let gz = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cr)), "invalid lp asset").quantity)
1189+ let bN = dU(dV)
1190+ let bM = (bN - fraction(toBigInt(gy), bN, gz))
1191+ let fR = if ((fh == cs))
10771192 then 0
1078- else if ((ff == cr))
1193+ else if ((fh == ct))
10791194 then 1
10801195 else throw("invalid out asset id")
1081- let gi = ex(dT, gh, bK)
1082- let gj = (dT[gh] - gi)
1083- let gk = max([0, toInt((gj - f))])
1084- let gl = cg(gk, aG)
1085- let fo = gl._1
1086- let cj = gl._2
1087- $Tuple2(nil, $Tuple2(fo, cj))
1196+ let gA = ez(dV, fR, bM)
1197+ let fT = (dV[fR] - gA)
1198+ let fU = max([0, toInt((fT - f))])
1199+ let gB = ci(fU, aI)
1200+ let fq = gB._1
1201+ let cl = gB._2
1202+ $Tuple2(nil, $Tuple2(fq, cl))
10881203 }
10891204
10901205
10911206
1092-@Callable(dM)
1093-func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094- let aT = aL()
1095- let cq = aT[u]
1096- let cr = aT[v]
1097- let cp = aT[t]
1098- let cw = by(cq)
1099- let cy = by(cr)
1100- let gm = {
1101- let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102- if ($isInstanceOf(aF, "(Int, Int)"))
1103- then aF
1104- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1207+@Callable(dO)
1208+func getOneTknV2WithBonusREADONLY (fh,gy) = {
1209+ let aV = aN()
1210+ let cs = aV[u]
1211+ let ct = aV[v]
1212+ let cr = aV[t]
1213+ let cy = bA(cs)
1214+ let cA = bA(ct)
1215+ let gC = {
1216+ let aH = invoke(this, "getOneTknV2READONLY", [fh, gy], nil)
1217+ if ($isInstanceOf(aH, "(Int, Int)"))
1218+ then aH
1219+ else throw(($getType(aH) + " couldn't be cast to (Int, Int)"))
11051220 }
1106- let fo = gm._1
1107- let cj = gm._2
1108- let de = ck("", cp, gf, this)
1109- let cG = de._1
1110- let cH = de._2
1111- let gn = (cG + cH)
1112- let fd = if ((gn == 0))
1113- then if ((fo == 0))
1221+ let fq = gC._1
1222+ let cl = gC._2
1223+ let dg = cm("", cr, gy, this)
1224+ let cI = dg._1
1225+ let cJ = dg._2
1226+ let gD = (cI + cJ)
1227+ let ff = if ((gD == 0))
1228+ then if ((fq == 0))
11141229 then 0
11151230 else throw("bonus calculation error")
1116- else fraction((fo - gn), a, gn)
1117- $Tuple2(nil, $Tuple3(fo, cj, fd))
1231+ else fraction((fq - gD), a, gD)
1232+ $Tuple2(nil, $Tuple3(fq, cl, ff))
11181233 }
11191234
11201235
11211236
1122-@Callable(dM)
1123-func getNoLess (go,gp) = {
1124- let de = dL(dM)
1125- let cG = de._1
1126- let cH = de._2
1127- let cS = de._3
1128- let cm = de._4
1129- let cI = de._5
1130- if ((go > cG))
1131- then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132- else if ((gp > cH))
1133- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
1237+@Callable(dO)
1238+func getNoLess (gE,gF) = {
1239+ let dg = dN(dO)
1240+ let cI = dg._1
1241+ let cJ = dg._2
1242+ let cU = dg._3
1243+ let co = dg._4
1244+ let cK = dg._5
1245+ if ((gE > cI))
1246+ then throw(((("Failed: " + toString(cI)) + " < ") + toString(gE)))
1247+ else if ((gF > cJ))
1248+ then throw(((("Failed: " + toString(cJ)) + " < ") + toString(gF)))
11341249 else {
1135- let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136- if ((gq == gq))
1137- then cI
1250+ let gG = invoke(aF, "burn", [cU], [AttachedPayment(co, cU)])
1251+ if ((gG == gG))
1252+ then cK
11381253 else throw("Strict value is not equal to itself.")
11391254 }
11401255 }
11411256
11421257
11431258
1144-@Callable(dM)
1145-func unstakeAndGet (ch) = {
1146- let gr = if ((size(dM.payments) != 0))
1259+@Callable(dO)
1260+func unstakeAndGet (cj) = {
1261+ let gH = if ((size(dO.payments) != 0))
11471262 then throw("No pmnts expd")
11481263 else true
1149- if ((gr == gr))
1264+ if ((gH == gH))
11501265 then {
1151- let bX = aL()
1152- let gs = bd()
1153- let fO = fromBase58String(bX[t])
1154- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155- let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156- if ((gu == gu))
1266+ let bZ = aN()
1267+ let gI = bf()
1268+ let gi = fromBase58String(bZ[t])
1269+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1270+ let gK = invoke(gJ, "unstake", [toBase58String(gi), cj], nil)
1271+ if ((gK == gK))
11571272 then {
1158- let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159- let cu = parseIntValue(de._9)
1160- let cI = de._10
1161- let gv = if (if (aI())
1273+ let dg = cm(toBase58String(dO.transactionId), toBase58String(gi), cj, dO.caller)
1274+ let cw = parseIntValue(dg._9)
1275+ let cK = dg._10
1276+ let gL = if (if (aK())
11621277 then true
1163- else (cu == q))
1164- then throw(("Blocked: " + toString(cu)))
1278+ else (cw == q))
1279+ then throw(("Blocked: " + toString(cw)))
11651280 else true
1166- if ((gv == gv))
1281+ if ((gL == gL))
11671282 then {
1168- let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169- if ((gw == gw))
1170- then cI
1283+ let gM = invoke(aF, "burn", [cj], [AttachedPayment(gi, cj)])
1284+ if ((gM == gM))
1285+ then cK
11711286 else throw("Strict value is not equal to itself.")
11721287 }
11731288 else throw("Strict value is not equal to itself.")
11791294
11801295
11811296
1182-@Callable(dM)
1183-func unstakeAndGetNoLess (gx,gy,gp) = {
1184- let gd = if (aI())
1297+@Callable(dO)
1298+func unstakeAndGetNoLess (gN,gO,gF) = {
1299+ let gw = if (aK())
11851300 then true
1186- else (aX == q)
1187- let fX = [if (!(gd))
1301+ else (aZ == q)
1302+ let fO = [if (!(gw))
11881303 then true
1189- else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1304+ else throw("get operation is blocked by admin"), if ((size(dO.payments) == 0))
11901305 then true
11911306 else throw("no payments are expected")]
1192- if ((fX == fX))
1307+ if ((fO == fO))
11931308 then {
1194- let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195- if ((gu == gu))
1309+ let gK = invoke(bh, "unstake", [toBase58String(ba), gN], nil)
1310+ if ((gK == gK))
11961311 then {
1197- let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198- let cG = gz._1
1199- let cH = gz._2
1200- let cI = gz._10
1201- let gA = [if ((cG >= gy))
1312+ let gP = cm(toBase58String(dO.transactionId), toBase58String(ba), gN, dO.caller)
1313+ let cI = gP._1
1314+ let cJ = gP._2
1315+ let cK = gP._10
1316+ let gQ = [if ((cI >= gO))
12021317 then true
1203- else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
1318+ else throw(makeString(["amount asset amount to receive is less than ", toString(gO)], "")), if ((cJ >= gF))
12041319 then true
1205- else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206- if ((gA == gA))
1320+ else throw(makeString(["price asset amount to receive is less than ", toString(gF)], ""))]
1321+ if ((gQ == gQ))
12071322 then {
1208- let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209- if ((gq == gq))
1210- then cI
1323+ let gG = invoke(aF, "burn", [gN], [AttachedPayment(ba, gN)])
1324+ if ((gG == gG))
1325+ then cK
12111326 else throw("Strict value is not equal to itself.")
12121327 }
12131328 else throw("Strict value is not equal to itself.")
12191334
12201335
12211336
1222-@Callable(dM)
1223-func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224- let fV = {
1225- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226- if ($isInstanceOf(aF, "Boolean"))
1227- then aF
1228- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1337+@Callable(dO)
1338+func unstakeAndGetOneTknV2 (gN,fh,fi) = {
1339+ let gp = {
1340+ let aH = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1341+ if ($isInstanceOf(aH, "Boolean"))
1342+ then aH
1343+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
12291344 }
1230- let gd = if (if (aI())
1345+ let gw = if (if (aK())
12311346 then true
1232- else (aX == q))
1347+ else (aZ == q))
12331348 then true
1234- else fV
1235- let fX = [if (if (!(gd))
1349+ else gp
1350+ let fO = [if (if (!(gw))
12361351 then true
1237- else fB(dM))
1352+ else fD(dO))
12381353 then true
1239- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1354+ else aD("get operation is blocked by admin"), if ((size(dO.payments) == 0))
12401355 then true
1241- else aB("no payments are expected")]
1242- if ((fX == fX))
1356+ else aD("no payments are expected")]
1357+ if ((fO == fO))
12431358 then {
1244- let bX = aL()
1245- let gs = bd()
1246- let fO = fromBase58String(bX[t])
1247- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let co = dM.caller
1249- let gB = this
1250- let gu = invoke(gt, "unstakeINTERNAL", [fO, gx, co.bytes, gB.bytes], nil)
1251- if ((gu == gu))
1359+ let bZ = aN()
1360+ let gI = bf()
1361+ let gi = fromBase58String(bZ[t])
1362+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1363+ let gK = invoke(gJ, "unstake", [toBase58String(gi), gN], nil)
1364+ if ((gK == gK))
12521365 then {
1253- let gC = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1254- let cI = gC._1
1255- let fp = gC._2
1256- $Tuple2(cI, fp)
1366+ let gR = fg(fh, fi, [AttachedPayment(gi, gN)], dO.caller, dO.originCaller, dO.transactionId)
1367+ let cK = gR._1
1368+ let fr = gR._2
1369+ $Tuple2(cK, fr)
12571370 }
12581371 else throw("Strict value is not equal to itself.")
12591372 }
12621375
12631376
12641377
1265-@Callable(dM)
1266-func putOneTknV2WithBonusREADONLY (gD,gE) = {
1267- let aT = aL()
1268- let cq = aT[u]
1269- let cr = aT[v]
1270- let cp = aT[t]
1271- let gF = eH(gD, gE, "", "", true)
1272- let eY = gF._1
1273- let cI = gF._2
1274- let cj = gF._3
1275- let fd = gF._4
1276- $Tuple2(nil, $Tuple3(eY, cj, fd))
1378+@Callable(dO)
1379+func putOneTknV2WithBonusREADONLY (gS,gT) = {
1380+ let aV = aN()
1381+ let cs = aV[u]
1382+ let ct = aV[v]
1383+ let cr = aV[t]
1384+ let gU = eJ(gS, gT, "", "", true)
1385+ let fa = gU._1
1386+ let cK = gU._2
1387+ let cl = gU._3
1388+ let ff = gU._4
1389+ $Tuple2(nil, $Tuple3(fa, cl, ff))
12771390 }
12781391
12791392
12801393
1281-@Callable(dM)
1282-func putOneTknV2WithoutTakeFeeREADONLY (gD,gE) = {
1283- let aT = aL()
1284- let cq = aT[u]
1285- let cr = aT[v]
1286- let cp = aT[t]
1287- let gG = eH(gD, gE, "", "", false)
1288- let eY = gG._1
1289- let cI = gG._2
1290- let cj = gG._3
1291- let fd = gG._4
1292- $Tuple2(nil, $Tuple3(eY, cj, fd))
1394+@Callable(dO)
1395+func putOneTknV2WithoutTakeFeeREADONLY (gS,gT) = {
1396+ let aV = aN()
1397+ let cs = aV[u]
1398+ let ct = aV[v]
1399+ let cr = aV[t]
1400+ let gV = eJ(gS, gT, "", "", false)
1401+ let fa = gV._1
1402+ let cK = gV._2
1403+ let cl = gV._3
1404+ let ff = gV._4
1405+ $Tuple2(nil, $Tuple3(fa, cl, ff))
12931406 }
12941407
12951408
12961409
1297-@Callable(dM)
1298-func activate (gH,gI) = if ((toString(dM.caller) != toString(aD)))
1410+@Callable(dO)
1411+func activate (gW,gX) = if ((toString(dO.caller) != toString(aF)))
12991412 then throw("denied")
1300- else $Tuple2([StringEntry(ac(), gH), StringEntry(ad(), gI)], "success")
1413+ else $Tuple2([StringEntry(ac(), gW), StringEntry(ad(), gX)], "success")
13011414
13021415
13031416
1304-@Callable(dM)
1305-func setS (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
1306- then fA
1307- else [StringEntry(gJ, gv)]
1417+@Callable(dO)
1418+func setS (gY,gL) = if ((toString(dO.caller) != aA(this, af())))
1419+ then fC
1420+ else [StringEntry(gY, gL)]
13081421
13091422
13101423
1311-@Callable(dM)
1312-func setI (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
1313- then fA
1314- else [IntegerEntry(gJ, gv)]
1424+@Callable(dO)
1425+func setI (gY,gL) = if ((toString(dO.caller) != aA(this, af())))
1426+ then fC
1427+ else [IntegerEntry(gY, gL)]
13151428
13161429
13171430
1318-@Callable(dM)
1319-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
1431+@Callable(dO)
1432+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
13201433
13211434
13221435
1323-@Callable(dM)
1324-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1436+@Callable(dO)
1437+func getAccBalanceWrapperREADONLY (bB) = $Tuple2(nil, bA(bB))
13251438
13261439
13271440
1328-@Callable(dM)
1329-func calcPricesWrapperREADONLY (bR,bS,bW) = {
1330- let gK = bV(bR, bS, bW)
1331- $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
1441+@Callable(dO)
1442+func calcPricesWrapperREADONLY (bT,bU,bY) = {
1443+ let gZ = bX(bT, bU, bY)
1444+ $Tuple2(nil, [toString(gZ[0]), toString(gZ[1]), toString(gZ[2])])
13321445 }
13331446
13341447
13351448
1336-@Callable(dM)
1337-func fromX18WrapperREADONLY (J,gL) = $Tuple2(nil, I(parseBigIntValue(J), gL))
1449+@Callable(dO)
1450+func fromX18WrapperREADONLY (J,ha) = $Tuple2(nil, I(parseBigIntValue(J), ha))
13381451
13391452
13401453
1341-@Callable(dM)
1454+@Callable(dO)
13421455 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
13431456
13441457
13451458
1346-@Callable(dM)
1347-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1459+@Callable(dO)
1460+func calcPriceBigIntWrapperREADONLY (bD,bE) = $Tuple2(nil, toString(bC(parseBigIntValue(bD), parseBigIntValue(bE))))
13481461
13491462
13501463
1351-@Callable(dM)
1352-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gM,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gM, cO, cP, true, false, 0, ""))
1464+@Callable(dO)
1465+func estimatePutOperationWrapperREADONLY (cn,bI,cM,cN,cO,cP,hb,cQ,cR) = $Tuple2(nil, cL(cn, bI, cM, cN, cO, cP, hb, cQ, cR, true, false, 0, ""))
13531466
13541467
13551468
1356-@Callable(dM)
1357-func estimateGetOperationWrapperREADONLY (cl,gN,cn,gM) = {
1358- let de = ck(cl, gN, cn, addressFromStringValue(gM))
1359- $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
1469+@Callable(dO)
1470+func estimateGetOperationWrapperREADONLY (cn,hc,cp,hb) = {
1471+ let dg = cm(cn, hc, cp, addressFromStringValue(hb))
1472+ $Tuple2(nil, $Tuple10(dg._1, dg._2, dg._3, dg._4, dg._5, dg._6, dg._7, toString(dg._8), dg._9, dg._10))
13601473 }
13611474
13621475
1363-@Verifier(gO)
1364-func gP () = {
1365- let gQ = {
1366- let av = fy()
1367- if ($isInstanceOf(av, "ByteVector"))
1476+@Verifier(hd)
1477+func he () = {
1478+ let hf = {
1479+ let aw = fA()
1480+ if ($isInstanceOf(aw, "ByteVector"))
13681481 then {
1369- let fC = av
1370- fC
1482+ let fE = aw
1483+ fE
13711484 }
1372- else if ($isInstanceOf(av, "Unit"))
1373- then gO.senderPublicKey
1485+ else if ($isInstanceOf(aw, "Unit"))
1486+ then hd.senderPublicKey
13741487 else throw("Match error")
13751488 }
1376- let av = gO
1377- if ($isInstanceOf(av, "Order"))
1489+ let aw = hd
1490+ if ($isInstanceOf(aw, "Order"))
13781491 then {
1379- let dz = av
1380- let gR = aJ()
1381- let gS = dy(dz)
1382- let gT = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1383- let gU = sigVerify(dz.bodyBytes, dz.proofs[1], gR)
1384- if (if (if (gS)
1385- then gT
1492+ let dB = aw
1493+ let hg = aL()
1494+ let hh = dA(dB)
1495+ let hi = sigVerify(dB.bodyBytes, dB.proofs[0], dB.senderPublicKey)
1496+ let hj = sigVerify(dB.bodyBytes, dB.proofs[1], hg)
1497+ if (if (if (hh)
1498+ then hi
13861499 else false)
1387- then gU
1500+ then hj
13881501 else false)
13891502 then true
1390- else aq(gS, gT, gU)
1503+ else ar(hh, hi, hj)
13911504 }
1392- else if ($isInstanceOf(av, "SetScriptTransaction"))
1505+ else if ($isInstanceOf(aw, "SetScriptTransaction"))
13931506 then {
1394- let dZ = av
1395- let gV = blake2b256(value(dZ.script))
1396- let gW = fromBase64String(value(getString(aD, ao())))
1397- let gX = scriptHash(this)
1398- if (if ((gW == gV))
1399- then (gX != gV)
1507+ let eb = aw
1508+ let hk = blake2b256(value(eb.script))
1509+ let hl = fromBase64String(value(getString(aF, ap())))
1510+ let hm = scriptHash(this)
1511+ if (if ((hl == hk))
1512+ then (hm != hk)
14001513 else false)
14011514 then true
1402- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1515+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
14031516 }
1404- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1517+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
14051518 }
14061519
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
6464 let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118-func ag () = "%s__factoryConfig"
118+func ag () = "%s__swapContract"
119119
120120
121-func ah () = "%s%s__matcher__publicKey"
121+func ah () = "%s__factoryConfig"
122122
123123
124-func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
124+func ai () = "%s%s__matcher__publicKey"
125125
126126
127-func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
127+func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
128128
129129
130-func an () = "%s__shutdown"
130+func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
131131
132132
133-func ao () = "%s__allowedLpStableScriptHash"
133+func ao () = "%s__shutdown"
134134
135135
136-func ap () = "%s__feeCollectorAddress"
136+func ap () = "%s__allowedLpStableScriptHash"
137137
138138
139-func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
139+func aq () = "%s__feeCollectorAddress"
140140
141141
142-func au (J) = {
143- let av = J
144- if ($isInstanceOf(av, "String"))
142+func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
143+
144+
145+func av (J) = {
146+ let aw = J
147+ if ($isInstanceOf(aw, "String"))
145148 then {
146- let aw = av
147- aw
149+ let ax = aw
150+ ax
148151 }
149152 else throw("fail cast to String")
150153 }
151154
152155
153-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
156+func ay (az) = valueOrErrorMessage(getString(az), (("mandatory this." + az) + " is not defined"))
154157
155158
156-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
159+func aA (aB,az) = valueOrErrorMessage(getString(aB, az), makeString(["mandatory ", toString(aB), ".", az, " not defined"], ""))
157160
158161
159-func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
162+func aC (aB,az) = valueOrErrorMessage(getInteger(aB, az), makeString(["mandatory ", toString(aB), ".", az, " not defined"], ""))
160163
161164
162-let aD = addressFromStringValue(ax(this, R()))
165+func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
163166
164-let aE = {
165- let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166- if ($isInstanceOf(aF, "Int"))
167- then aF
168- else throw(($getType(aF) + " couldn't be cast to Int"))
167+
168+let aF = addressFromStringValue(aA(this, R()))
169+
170+let aG = {
171+ let aH = invoke(aF, "getInFeeREADONLY", [toString(this)], nil)
172+ if ($isInstanceOf(aH, "Int"))
173+ then aH
174+ else throw(($getType(aH) + " couldn't be cast to Int"))
169175 }
170176
171-let aG = {
172- let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173- if ($isInstanceOf(aF, "Int"))
174- then aF
175- else throw(($getType(aF) + " couldn't be cast to Int"))
177+let aI = {
178+ let aH = invoke(aF, "getOutFeeREADONLY", [toString(this)], nil)
179+ if ($isInstanceOf(aH, "Int"))
180+ then aH
181+ else throw(($getType(aH) + " couldn't be cast to Int"))
176182 }
177183
178-let aH = ax(this, ae())
184+let aJ = aA(this, ae())
179185
180-func aI () = valueOrElse(getBoolean(aD, an()), false)
186+func aK () = valueOrElse(getBoolean(aF, ao()), false)
181187
182188
183-func aJ () = fromBase58String(ax(aD, ah()))
189+func aL () = fromBase58String(aA(aF, ai()))
184190
185191
186-let aK = addressFromStringValue(ax(aD, ap()))
192+let aM = addressFromStringValue(aA(aF, aq()))
187193
188-func aL () = {
189- let aM = ax(this, ac())
190- let aN = ax(this, ad())
191- let aO = aA(aD, al(aN))
192- let aj = aA(aD, al(aM))
193- split(ax(aD, ai(toString(aj), toString(aO))), l)
194+func aN () = {
195+ let aO = aA(this, ac())
196+ let aP = aA(this, ad())
197+ let aQ = aC(aF, am(aP))
198+ let ak = aC(aF, am(aO))
199+ split(aA(aF, aj(toString(ak), toString(aQ))), l)
194200 }
195201
196202
197-func aP (aQ) = if ((aQ == i))
203+func aR (aS) = if ((aS == i))
198204 then unit
199- else fromBase58String(aQ)
205+ else fromBase58String(aS)
200206
201207
202-func aR (aQ) = if ((aQ == unit))
208+func aT (aS) = if ((aS == unit))
203209 then i
204- else toBase58String(value(aQ))
210+ else toBase58String(value(aS))
205211
206212
207-func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
213+func aU (aV) = $Tuple7(addressFromStringValue(aV[r]), parseIntValue(aV[s]), fromBase58String(aV[t]), aR(aV[u]), aR(aV[v]), parseIntValue(aV[w]), parseIntValue(aV[x]))
208214
209215
210-let aU = aS(aL())
216+let aW = aU(aN())
211217
212-let aV = aU
218+let aX = aW
213219
214-let aW = aV._1
220+let aY = aX._1
215221
216-let aX = aV._2
222+let aZ = aX._2
217223
218-let aY = aV._3
224+let ba = aX._3
219225
220-let aZ = aV._4
226+let bb = aX._4
221227
222-let ba = aV._5
228+let bc = aX._5
223229
224-let bb = aV._6
230+let bd = aX._6
225231
226-let bc = aV._7
232+let be = aX._7
227233
228-func bd () = split(ax(aD, ag()), l)
234+func bf () = split(aA(aF, ah()), l)
229235
230236
231-let be = bd()
237+let bg = bf()
232238
233-let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
239+let bh = valueOrErrorMessage(addressFromString(bg[A]), "Invalid staking contract address")
234240
235-let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
241+let bi = valueOrErrorMessage(addressFromString(bg[C]), "Invalid slipage contract address")
236242
237-let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
243+let bj = valueOrErrorMessage(addressFromString(bg[D]), "Invalid gwx contract address")
238244
239-let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
245+let bk = valueOrErrorMessage(addressFromString(bg[B]), "Invalid gwx contract address")
240246
241-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
247+func bl (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv)], l)
242248
243249
244-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
250+func bw (bx,by,bz,bp,bs,bt) = makeString(["%d%d%d%d%d%d", toString(bx), toString(by), toString(bz), toString(bp), toString(bs), toString(bt)], l)
245251
246252
247-func by (bz) = if ((bz == "WAVES"))
253+func bA (bB) = if ((bB == "WAVES"))
248254 then wavesBalance(this).available
249- else assetBalance(this, fromBase58String(bz))
255+ else assetBalance(this, fromBase58String(bB))
250256
251257
252-func bA (bB,bC) = fraction(bB, c, bC)
258+func bC (bD,bE) = fraction(bD, c, bE)
253259
254260
255-func bD (bE,bF,bG) = {
256- let bH = fraction((bE - bF), b, bF)
257- let bI = ((bG - P(bH)) > d)
258- if (!(bI))
259- then throw(("Big slpg: " + toString(bH)))
260- else $Tuple2(bI, min([bE, bF]))
261+func bF (bG,bH,bI) = {
262+ let bJ = fraction((bG - bH), b, bH)
263+ let bK = ((bI - P(bJ)) > d)
264+ if (!(bK))
265+ then throw(("Big slpg: " + toString(bJ)))
266+ else $Tuple2(bK, min([bG, bH]))
261267 }
262268
263269
264-func bJ (bK,bL,bM) = {
265- let bH = fraction(bL, b, bK)
266- let bN = (bM > bH)
267- if (if (bN)
270+func bL (bM,bN,bO) = {
271+ let bJ = fraction(bN, b, bM)
272+ let bP = (bO > bJ)
273+ if (if (bP)
268274 then true
269- else (bL > bK))
270- then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271- else bN
275+ else (bN > bM))
276+ then throw(((((((toString(bN) + " ") + toString(bM)) + " ") + toString(bJ)) + " ") + toString(bO)))
277+ else bP
272278 }
273279
274280
275-func bO (bP,bQ,bR,bS) = {
276- let bT = F(bR, bP)
277- let bU = F(bS, bQ)
278- bA(bU, bT)
281+func bQ (bR,bS,bT,bU) = {
282+ let bV = F(bT, bR)
283+ let bW = F(bU, bS)
284+ bC(bW, bV)
279285 }
280286
281287
282-func bV (bR,bS,bW) = {
283- let bX = aL()
284- let bY = parseIntValue(bX[w])
285- let bZ = parseIntValue(bX[x])
286- let ca = bO(bY, bZ, bR, bS)
287- let bC = F(bR, bY)
288- let bB = F(bS, bZ)
289- let cb = F(bW, a)
290- let cc = bA(bC, cb)
291- let cd = bA(bB, cb)
292-[ca, cc, cd]
288+func bX (bT,bU,bY) = {
289+ let bZ = aN()
290+ let ca = parseIntValue(bZ[w])
291+ let cb = parseIntValue(bZ[x])
292+ let cc = bQ(ca, cb, bT, bU)
293+ let bE = F(bT, ca)
294+ let bD = F(bU, cb)
295+ let cd = F(bY, a)
296+ let ce = bC(bE, cd)
297+ let cf = bC(bD, cd)
298+[cc, ce, cf]
293299 }
294300
295301
296-func ce (bR,bS,bW) = {
297- let cf = bV(bR, bS, bW)
298-[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
302+func cg (bT,bU,bY) = {
303+ let ch = bX(bT, bU, bY)
304+[I(ch[0], a), I(ch[1], a), I(ch[2], a)]
299305 }
300306
301307
302-func cg (ch,ci) = {
303- let cj = if ((ci == 0))
308+func ci (cj,ck) = {
309+ let cl = if ((ck == 0))
304310 then 0
305- else fraction(ch, ci, a)
306- $Tuple2((ch - cj), cj)
311+ else fraction(cj, ck, a)
312+ $Tuple2((cj - cl), cl)
307313 }
308314
309315
310-func ck (cl,cm,cn,co) = {
311- let bX = aL()
312- let cp = bX[t]
313- let cq = bX[u]
314- let cr = bX[v]
315- let cs = parseIntValue(bX[w])
316- let ct = parseIntValue(bX[x])
317- let cu = bX[s]
318- let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319- if ((cp != cm))
316+func cm (cn,co,cp,cq) = {
317+ let bZ = aN()
318+ let cr = bZ[t]
319+ let cs = bZ[u]
320+ let ct = bZ[v]
321+ let cu = parseIntValue(bZ[w])
322+ let cv = parseIntValue(bZ[x])
323+ let cw = bZ[s]
324+ let cx = valueOrErrorMessage(assetInfo(fromBase58String(cr)), "Wrong LP id").quantity
325+ if ((cr != co))
320326 then throw("Wrong pmt asset")
321327 else {
322- let cw = by(cq)
323- let cx = F(cw, cs)
324- let cy = by(cr)
325- let cz = F(cy, ct)
326- let cA = bA(cz, cx)
327- let cB = I(cA, a)
328- let cC = F(cn, a)
329- let cD = F(cv, a)
330- let cE = fraction(cx, cC, cD)
331- let cF = fraction(cz, cC, cD)
332- let cG = I(cE, cs)
333- let cH = I(cF, ct)
334- let cI = if ((cl == ""))
328+ let cy = bA(cs)
329+ let cz = F(cy, cu)
330+ let cA = bA(ct)
331+ let cB = F(cA, cv)
332+ let cC = bC(cB, cz)
333+ let cD = I(cC, a)
334+ let cE = F(cp, a)
335+ let cF = F(cx, a)
336+ let cG = fraction(cz, cE, cF)
337+ let cH = fraction(cB, cE, cF)
338+ let cI = I(cG, cu)
339+ let cJ = I(cH, cv)
340+ let cK = if ((cn == ""))
335341 then nil
336- else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
342+ else [ScriptTransfer(cq, cI, if ((cs == "WAVES"))
337343 then unit
338- else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
344+ else fromBase58String(cs)), ScriptTransfer(cq, cJ, if ((ct == "WAVES"))
339345 then unit
340- else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341- $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
346+ else fromBase58String(ct)), StringEntry(ab(toString(cq), cn), bw(cI, cJ, cp, cD, height, lastBlock.timestamp)), IntegerEntry(U(), cD), IntegerEntry(V(height, lastBlock.timestamp), cD)]
347+ $Tuple10(cI, cJ, cs, ct, cy, cA, cx, cC, cw, cK)
342348 }
343349 }
344350
345351
346-func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347- let bX = aL()
348- let cp = fromBase58String(bX[t])
349- let cU = bX[u]
350- let cV = bX[v]
351- let cW = bX[y]
352- let cX = bX[z]
353- let cY = parseIntValue(bX[w])
354- let cZ = parseIntValue(bX[x])
355- let cu = bX[s]
356- let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357- let cw = if (cO)
358- then by(cU)
359- else if (if (cQ)
360- then (cT == cU)
352+func cL (cn,bI,cM,cN,cO,cP,cq,cQ,cR,cS,cT,cU,cV) = {
353+ let bZ = aN()
354+ let cr = fromBase58String(bZ[t])
355+ let cW = bZ[u]
356+ let cX = bZ[v]
357+ let cY = bZ[y]
358+ let cZ = bZ[z]
359+ let da = parseIntValue(bZ[w])
360+ let db = parseIntValue(bZ[x])
361+ let cw = bZ[s]
362+ let dc = valueOrErrorMessage(assetInfo(cr), "Wr lp as").quantity
363+ let cy = if (cQ)
364+ then bA(cW)
365+ else if (if (cS)
366+ then (cV == cW)
361367 else false)
362- then (by(cU) - cS)
363- else if (cQ)
364- then by(cU)
365- else (by(cU) - cK)
366- let cy = if (cO)
367- then by(cV)
368- else if (if (cQ)
369- then (cT == cV)
368+ then (bA(cW) - cU)
369+ else if (cS)
370+ then bA(cW)
371+ else (bA(cW) - cM)
372+ let cA = if (cQ)
373+ then bA(cX)
374+ else if (if (cS)
375+ then (cV == cX)
370376 else false)
371- then (by(cV) - cS)
372- else if (cQ)
373- then by(cV)
374- else (by(cV) - cM)
375- let db = F(cK, cY)
376- let dc = F(cM, cZ)
377- let dd = bA(dc, db)
378- let cx = F(cw, cY)
379- let cz = F(cy, cZ)
380- let de = if ((da == 0))
377+ then (bA(cX) - cU)
378+ else if (cS)
379+ then bA(cX)
380+ else (bA(cX) - cO)
381+ let dd = F(cM, da)
382+ let de = F(cO, db)
383+ let df = bC(de, dd)
384+ let cz = F(cy, da)
385+ let cB = F(cA, db)
386+ let dg = if ((dc == 0))
381387 then {
382- let cA = d
383- let df = d
384- let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385- $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
388+ let cC = d
389+ let dh = d
390+ let cd = pow((dd * de), 0, toBigInt(5), 1, 0, DOWN)
391+ $Tuple5(I(cd, a), I(dd, da), I(de, db), bC((cB + de), (cz + dd)), dh)
386392 }
387393 else {
388- let cA = bA(cz, cx)
389- let dg = fraction(P((cA - dd)), c, cA)
390- let df = F(bG, a)
391- if (if (if (cR)
392- then (cA != d)
394+ let cC = bC(cB, cz)
395+ let di = fraction(P((cC - df)), c, cC)
396+ let dh = F(bI, a)
397+ if (if (if (cT)
398+ then (cC != d)
393399 else false)
394- then (dg > df)
400+ then (di > dh)
395401 else false)
396- then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
402+ then throw(((("Price slippage " + toString(di)) + " > ") + toString(dh)))
397403 else {
398- let dh = F(da, a)
399- let di = fraction(db, cA, c)
400- let dj = fraction(dc, c, cA)
401- let dk = if ((di > dc))
402- then $Tuple2(dj, dc)
403- else $Tuple2(db, di)
404- let dl = dk._1
405- let dm = dk._2
406- let cb = fraction(dh, dm, cz)
407- $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
404+ let dj = F(dc, a)
405+ let dk = fraction(dd, cC, c)
406+ let dl = fraction(de, c, cC)
407+ let dm = if ((dk > de))
408+ then $Tuple2(dl, de)
409+ else $Tuple2(dd, dk)
410+ let dn = dm._1
411+ let do = dm._2
412+ let cd = fraction(dj, do, cB)
413+ $Tuple5(I(cd, a), I(dn, da), I(do, db), cC, dh)
408414 }
409415 }
410- let dn = de._1
411- let do = de._2
412- let dp = de._3
413- let cB = I(de._4, a)
414- let dq = I(de._5, a)
415- if ((0 >= dn))
416+ let dp = dg._1
417+ let dq = dg._2
418+ let dr = dg._3
419+ let cD = I(dg._4, a)
420+ let ds = I(dg._5, a)
421+ if ((0 >= dp))
416422 then throw("LP <= 0")
417423 else {
418- let dr = if (!(cP))
424+ let dt = if (!(cR))
419425 then 0
420- else dn
421- let ds = (cK - do)
422- let dt = (cM - dp)
423- let du = if (if (cQ)
424- then (cT == cU)
426+ else dp
427+ let du = (cM - dq)
428+ let dv = (cO - dr)
429+ let dw = if (if (cS)
430+ then (cV == cW)
425431 else false)
426- then $Tuple2(cS, 0)
427- else if (if (cQ)
428- then (cT == cV)
432+ then $Tuple2(cU, 0)
433+ else if (if (cS)
434+ then (cV == cX)
429435 else false)
430- then $Tuple2(0, cS)
431- else $Tuple2(do, dp)
432- let dv = du._1
433- let dw = du._2
434- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435- $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
436+ then $Tuple2(0, cU)
437+ else $Tuple2(dq, dr)
438+ let dx = dw._1
439+ let dy = dw._2
440+ let dz = [IntegerEntry(U(), cD), IntegerEntry(V(height, lastBlock.timestamp), cD), StringEntry(Y(cq, cn), bl(dx, dy, dt, cD, bI, ds, height, lastBlock.timestamp, du, dv))]
441+ $Tuple13(dp, dt, cD, cy, cA, dc, cr, cw, dz, du, dv, cN, cP)
436442 }
437443 }
438444
439445
440-func dy (dz) = {
441- let bX = aL()
442- let dA = bX[u]
443- let dB = bX[v]
444- let cu = parseIntValue(bX[s])
445- let bY = parseIntValue(bX[w])
446- let bZ = parseIntValue(bX[x])
447- let dC = by(dA)
448- let dD = by(dB)
449- let cA = if ((dz.orderType == Buy))
450- then bO(bY, bZ, (dC + dz.amount), dD)
451- else bO(bY, bZ, (dC - dz.amount), dD)
452- let cB = I(cA, a)
453- if (if (if (aI())
446+func dA (dB) = {
447+ let bZ = aN()
448+ let dC = bZ[u]
449+ let dD = bZ[v]
450+ let cw = parseIntValue(bZ[s])
451+ let ca = parseIntValue(bZ[w])
452+ let cb = parseIntValue(bZ[x])
453+ let dE = bA(dC)
454+ let dF = bA(dD)
455+ let cC = if ((dB.orderType == Buy))
456+ then bQ(ca, cb, (dE + dB.amount), dF)
457+ else bQ(ca, cb, (dE - dB.amount), dF)
458+ let cD = I(cC, a)
459+ if (if (if (aK())
454460 then true
455- else (cu == p))
461+ else (cw == p))
456462 then true
457- else (cu == q))
463+ else (cw == q))
458464 then throw("Admin blocked")
459465 else {
460- let dE = dz.assetPair.amountAsset
461- let dF = if ((dE == unit))
462- then "WAVES"
463- else toBase58String(value(dE))
464- let dG = dz.assetPair.priceAsset
466+ let dG = dB.assetPair.amountAsset
465467 let dH = if ((dG == unit))
466468 then "WAVES"
467469 else toBase58String(value(dG))
468- if (if ((dF != dA))
470+ let dI = dB.assetPair.priceAsset
471+ let dJ = if ((dI == unit))
472+ then "WAVES"
473+ else toBase58String(value(dI))
474+ if (if ((dH != dC))
469475 then true
470- else (dH != dB))
476+ else (dJ != dD))
471477 then throw("Wr assets")
472478 else {
473- let dI = dz.price
474- let cZ = fraction(a, bZ, bY)
475- let dJ = L(dI, a, cZ)
476- let dK = if ((dz.orderType == Buy))
477- then (cB >= dJ)
478- else (dJ >= cB)
479+ let dK = dB.price
480+ let db = fraction(a, cb, ca)
481+ let dL = L(dK, a, db)
482+ let dM = if ((dB.orderType == Buy))
483+ then (cD >= dL)
484+ else (dL >= cD)
479485 true
480486 }
481487 }
482488 }
483489
484490
485-func dL (dM) = if ((size(dM.payments) != 1))
491+func dN (dO) = if ((size(dO.payments) != 1))
486492 then throw("1 pmnt exp")
487493 else {
488- let dN = value(dM.payments[0])
489- let cm = value(dN.assetId)
490- let cS = dN.amount
491- let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492- let cG = de._1
493- let cH = de._2
494- let cu = parseIntValue(de._9)
495- let cI = de._10
496- if (if (aI())
494+ let dP = value(dO.payments[0])
495+ let co = value(dP.assetId)
496+ let cU = dP.amount
497+ let dg = cm(toBase58String(dO.transactionId), toBase58String(co), cU, dO.caller)
498+ let cI = dg._1
499+ let cJ = dg._2
500+ let cw = parseIntValue(dg._9)
501+ let cK = dg._10
502+ if (if (aK())
497503 then true
498- else (cu == q))
499- then throw(("Admin blocked: " + toString(cu)))
500- else $Tuple5(cG, cH, cS, cm, cI)
504+ else (cw == q))
505+ then throw(("Admin blocked: " + toString(cw)))
506+ else $Tuple5(cI, cJ, cU, co, cK)
501507 }
502508
503509
504-func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505- let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506- let cu = parseIntValue(de._8)
507- if (if (if (aI())
510+func dQ (dR,aa,dS,dT,bI,cR,cS,cT,cU,cV) = {
511+ let dg = cL(aa, bI, value(dS).amount, value(dS).assetId, value(dT).amount, value(dT).assetId, dR, (aa == ""), cR, cS, cT, cU, cV)
512+ let cw = parseIntValue(dg._8)
513+ if (if (if (aK())
508514 then true
509- else (cu == o))
515+ else (cw == o))
510516 then true
511- else (cu == q))
512- then throw(("Blocked:" + toString(cu)))
513- else de
517+ else (cw == q))
518+ then throw(("Blocked:" + toString(cw)))
519+ else dg
514520 }
515521
516522
517-func dS (dT) = {
518- let dU = g
519- let dV = dT[0]
520- let dW = dT[1]
521- let dX = parseBigIntValue(j)
522- let dY = (parseBigIntValue(aH) * dX)
523- let dZ = (dV + dW)
524- if ((dZ == e))
523+func dU (dV) = {
524+ let dW = g
525+ let dX = dV[0]
526+ let dY = dV[1]
527+ let dZ = parseBigIntValue(j)
528+ let ea = (parseBigIntValue(aJ) * dZ)
529+ let eb = (dX + dY)
530+ if ((eb == e))
525531 then e
526532 else {
527- let ea = (dY * dU)
528- let eb = (((dV * dW) * dU) * dU)
529- let ec = ((ea * dZ) / dX)
530- let ed = (ea - dX)
531- let ee = (dU + f)
532- func ef (eg,eh) = {
533- let ei = eg
534- let ej = ei._1
535- let ek = ei._2
536- if ((ek != unit))
537- then eg
533+ let ec = (ea * dW)
534+ let ed = (((dX * dY) * dW) * dW)
535+ let ee = ((ec * eb) / dZ)
536+ let ef = (ec - dZ)
537+ let eg = (dW + f)
538+ func eh (ei,ej) = {
539+ let ek = ei
540+ let el = ek._1
541+ let em = ek._2
542+ if ((em != unit))
543+ then ei
538544 else {
539- let el = (((ej * ej) * ej) / eb)
540- let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541- let en = Q((em - value(ej)))
542- if ((f >= en))
543- then $Tuple2(em, eh)
544- else $Tuple2(em, unit)
545+ let en = (((el * el) * el) / ed)
546+ let eo = (((ee + (en * dW)) * el) / (((ef * el) / dZ) + (eg * en)))
547+ let ep = Q((eo - value(el)))
548+ if ((f >= ep))
549+ then $Tuple2(eo, ej)
550+ else $Tuple2(eo, unit)
545551 }
546552 }
547553
548- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549- let ep = {
550- let eq = eo
551- let er = size(eq)
552- let es = $Tuple2(dZ, unit)
553- func et (eu,ev) = if ((ev >= er))
554- then eu
555- else ef(eu, eq[ev])
554+ let eq = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
555+ let er = {
556+ let es = eq
557+ let et = size(es)
558+ let eu = $Tuple2(eb, unit)
559+ func ev (ew,ex) = if ((ex >= et))
560+ then ew
561+ else eh(ew, es[ex])
556562
557- func ew (eu,ev) = if ((ev >= er))
558- then eu
563+ func ey (ew,ex) = if ((ex >= et))
564+ then ew
559565 else throw("List size exceeds 15")
560566
561- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
567+ ey(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(eu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
562568 }
563- let ej = ep._1
564- let ek = ep._2
565- if ((ek != unit))
566- then ej
567- else throw(("D calculation error, D = " + toString(ej)))
569+ let el = er._1
570+ let em = er._2
571+ if ((em != unit))
572+ then el
573+ else throw(("D calculation error, D = " + toString(el)))
568574 }
569575 }
570576
571577
572-func ex (dT,dM,ey) = {
573- let dU = g
574- let ez = dT[if ((dM == 0))
578+func ez (dV,dO,eA) = {
579+ let dW = g
580+ let eB = dV[if ((dO == 0))
575581 then 1
576582 else 0]
577- let dX = parseBigIntValue(j)
578- let dY = (parseBigIntValue(aH) * dX)
579- let dZ = ez
580- let ea = (dY * dU)
581- let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582- let eB = ((dZ + ((ey * dX) / ea)) - ey)
583- func ef (eg,eh) = {
584- let eC = eg
585- let eD = eC._1
586- let ek = eC._2
587- if ((ek != unit))
588- then eg
583+ let dZ = parseBigIntValue(j)
584+ let ea = (parseBigIntValue(aJ) * dZ)
585+ let eb = eB
586+ let ec = (ea * dW)
587+ let eC = (((((eA * eA) / (eB * dW)) * eA) * dZ) / (ec * dW))
588+ let eD = ((eb + ((eA * dZ) / ec)) - eA)
589+ func eh (ei,ej) = {
590+ let eE = ei
591+ let eF = eE._1
592+ let em = eE._2
593+ if ((em != unit))
594+ then ei
589595 else {
590- let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591- let eF = Q((eE - value(eD)))
592- if ((f >= eF))
593- then $Tuple2(eE, eh)
594- else $Tuple2(eE, unit)
596+ let eG = (((eF * eF) + eC) / ((g * eF) + eD))
597+ let eH = Q((eG - value(eF)))
598+ if ((f >= eH))
599+ then $Tuple2(eG, ej)
600+ else $Tuple2(eG, unit)
595601 }
596602 }
597603
598- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599- let eG = {
600- let eq = eo
601- let er = size(eq)
602- let es = $Tuple2(ey, unit)
603- func et (eu,ev) = if ((ev >= er))
604- then eu
605- else ef(eu, eq[ev])
604+ let eq = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
605+ let eI = {
606+ let es = eq
607+ let et = size(es)
608+ let eu = $Tuple2(eA, unit)
609+ func ev (ew,ex) = if ((ex >= et))
610+ then ew
611+ else eh(ew, es[ex])
606612
607- func ew (eu,ev) = if ((ev >= er))
608- then eu
613+ func ey (ew,ex) = if ((ex >= et))
614+ then ew
609615 else throw("List size exceeds 15")
610616
611- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
617+ ey(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(eu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
612618 }
613- let eD = eG._1
614- let ek = eG._2
615- if ((ek != unit))
616- then eD
617- else throw(("Y calculation error, Y = " + toString(eD)))
619+ let eF = eI._1
620+ let em = eI._2
621+ if ((em != unit))
622+ then eF
623+ else throw(("Y calculation error, Y = " + toString(eF)))
618624 }
619625
620626
621-func eH (eI,cm,co,aa,eJ) = {
622- let aT = aL()
623- let cq = aT[u]
624- let cr = aT[v]
625- let cp = aT[t]
626- let cY = parseIntValue(aT[w])
627- let cZ = parseIntValue(aT[x])
628- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629- let eL = if ((eK > e))
627+func eJ (eK,co,cq,aa,eL) = {
628+ let aV = aN()
629+ let cs = aV[u]
630+ let ct = aV[v]
631+ let cr = aV[t]
632+ let da = parseIntValue(aV[w])
633+ let db = parseIntValue(aV[x])
634+ let eM = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cr)), "invalid lp asset").quantity)
635+ let eN = if ((eM > e))
630636 then true
631637 else throw("initial deposit requires all coins")
632- if ((eL == eL))
638+ if ((eN == eN))
633639 then {
634- let cw = by(cq)
635- let cy = by(cr)
636- let eM = if ((aa == ""))
637- then $Tuple2(cw, cy)
638- else if ((cm == cq))
639- then if ((eI > cw))
640+ let cy = bA(cs)
641+ let cA = bA(ct)
642+ let eO = if ((aa == ""))
643+ then $Tuple2(cy, cA)
644+ else if ((co == cs))
645+ then if ((eK > cy))
640646 then throw("invalid payment amount")
641- else $Tuple2((cw - eI), cy)
642- else if ((cm == cr))
643- then if ((eI > cy))
647+ else $Tuple2((cy - eK), cA)
648+ else if ((co == ct))
649+ then if ((eK > cA))
644650 then throw("invalid payment amount")
645- else $Tuple2(cw, (cy - eI))
651+ else $Tuple2(cy, (cA - eK))
646652 else throw("wrong pmtAssetId")
647- let eN = eM._1
648- let eO = eM._2
649- let eP = if ((cm == cq))
650- then $Tuple2(eI, 0)
651- else if ((cm == cr))
652- then $Tuple2(0, eI)
653+ let eP = eO._1
654+ let eQ = eO._2
655+ let eR = if ((co == cs))
656+ then $Tuple2(eK, 0)
657+ else if ((co == ct))
658+ then $Tuple2(0, eK)
653659 else throw("invalid payment")
654- let eQ = eP._1
655- let eR = eP._2
656- let eS = if (eJ)
657- then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658- else $Tuple3(eQ, eR, 0)
659- let eT = eS._1
660- let eU = eS._2
661- let cj = eS._3
662- let eV = (eN + eT)
663- let eW = (eO + eU)
664- let bL = dS([toBigInt(eN), toBigInt(eO)])
665- let bK = dS([toBigInt(eV), toBigInt(eW)])
666- let eX = if ((bK > bL))
660+ let eS = eR._1
661+ let eT = eR._2
662+ let eU = if (eL)
663+ then $Tuple3(ci(eS, aG)._1, ci(eT, aG)._1, ci(eK, aG)._2)
664+ else $Tuple3(eS, eT, 0)
665+ let eV = eU._1
666+ let eW = eU._2
667+ let cl = eU._3
668+ let eX = (eP + eV)
669+ let eY = (eQ + eW)
670+ let bN = dU([toBigInt(eP), toBigInt(eQ)])
671+ let bM = dU([toBigInt(eX), toBigInt(eY)])
672+ let eZ = if ((bM > bN))
667673 then true
668674 else throw()
669- if ((eX == eX))
675+ if ((eZ == eZ))
670676 then {
671- let eY = fraction(eK, (bK - bL), bL)
672- let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674- let eZ = fraction(eO, a, eN)
675- let fa = fraction(eI, a, (eZ + a))
676- let fb = (eI - fa)
677- let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678- let fd = toInt(fraction((eY - fc), b, fc))
679- $Tuple4(toInt(eY), dx, cj, fd)
677+ let fa = fraction(eM, (bM - bN), bN)
678+ let cD = I(bC(F(eY, db), F(eX, da)), a)
679+ let dz = [IntegerEntry(U(), cD), IntegerEntry(V(height, lastBlock.timestamp), cD), StringEntry(Y(cq, aa), bl(eS, eT, toInt(fa), cD, 0, 0, height, lastBlock.timestamp, 0, 0))]
680+ let fb = fraction(eQ, a, eP)
681+ let fc = fraction(eK, a, (fb + a))
682+ let fd = (eK - fc)
683+ let fe = fraction(eM, toBigInt(fd), toBigInt(eQ))
684+ let ff = toInt(fraction((fa - fe), b, fe))
685+ $Tuple4(toInt(fa), dz, cl, ff)
680686 }
681687 else throw("Strict value is not equal to itself.")
682688 }
683689 else throw("Strict value is not equal to itself.")
684690 }
685691
686692
687-func fe (ff,fg,fh,dP,fi,fj) = {
688- let aT = aL()
689- let cp = aT[t]
690- let cq = aT[u]
691- let cr = aT[v]
692- let fk = parseIntValue(aT[w])
693- let fl = parseIntValue(aT[x])
694- let fm = aT[s]
695- let co = if ((dP == bi))
696- then fi
697- else dP
698- let dN = value(fh[0])
699- let cm = value(dN.assetId)
700- let cS = dN.amount
701- let cl = toBase58String(fj)
702- if ((cp != toBase58String(cm)))
693+func fg (fh,fi,fj,dR,fk,fl) = {
694+ let aV = aN()
695+ let cr = aV[t]
696+ let cs = aV[u]
697+ let ct = aV[v]
698+ let fm = parseIntValue(aV[w])
699+ let fn = parseIntValue(aV[x])
700+ let fo = aV[s]
701+ let cq = if ((dR == bk))
702+ then fk
703+ else dR
704+ let dP = value(fj[0])
705+ let co = value(dP.assetId)
706+ let cU = dP.amount
707+ let cn = toBase58String(fl)
708+ if ((cr != toBase58String(co)))
703709 then throw("Wrong LP")
704710 else {
705- let cw = by(cq)
706- let cy = by(cr)
707- let fn = {
708- let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709- if ($isInstanceOf(aF, "(Int, Int)"))
710- then aF
711- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
711+ let cy = bA(cs)
712+ let cA = bA(ct)
713+ let fp = {
714+ let aH = invoke(this, "getOneTknV2READONLY", [fh, cU], nil)
715+ if ($isInstanceOf(aH, "(Int, Int)"))
716+ then aH
717+ else throw(($getType(aH) + " couldn't be cast to (Int, Int)"))
712718 }
713- if ((fn == fn))
719+ if ((fp == fp))
714720 then {
715- let cj = fn._2
716- let fo = fn._1
717- let fp = if (if ((fg > 0))
718- then (fg > fo)
721+ let cl = fp._2
722+ let fq = fp._1
723+ let fr = if (if ((fi > 0))
724+ then (fi > fq)
719725 else false)
720- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721- else fo
722- let fq = if ((ff == cq))
723- then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724- else if ((ff == cr))
725- then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726+ then aD(makeString(["amount to receive is less than ", toString(fi)], ""))
727+ else fq
728+ let fs = if ((fh == cs))
729+ then $Tuple4(fr, 0, ((cy - fr) - cl), cA)
730+ else if ((fh == ct))
731+ then $Tuple4(0, fr, cy, ((cA - fr) - cl))
726732 else throw("invalid out asset id")
727- let fr = fq._1
728- let fs = fq._2
729- let eV = fq._3
730- let eW = fq._4
731- let ft = bA(F(eW, fl), F(eV, fk))
732- let fu = I(ft, a)
733- let fv = if ((ff == "WAVES"))
733+ let ft = fs._1
734+ let fu = fs._2
735+ let eX = fs._3
736+ let eY = fs._4
737+ let fv = bC(F(eY, fn), F(eX, fm))
738+ let fw = I(fv, a)
739+ let fx = if ((fh == "WAVES"))
734740 then unit
735- else fromBase58String(ff)
736- let fw = if ((cj > 0))
737- then [ScriptTransfer(aK, cj, fv)]
741+ else fromBase58String(fh)
742+ let fy = if ((cl > 0))
743+ then [ScriptTransfer(aM, cl, fx)]
738744 else nil
739- let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740- if ((cI == cI))
745+ let cK = ([ScriptTransfer(cq, fr, fx), StringEntry(ab(toString(cq), cn), bw(ft, fu, cU, fw, height, lastBlock.timestamp)), IntegerEntry(U(), fw), IntegerEntry(V(height, lastBlock.timestamp), fw)] ++ fy)
746+ if ((cK == cK))
741747 then {
742- let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743- if ((fx == fx))
744- then $Tuple2(cI, fp)
748+ let fz = invoke(aF, "burn", [cU], [AttachedPayment(co, cU)])
749+ if ((fz == fz))
750+ then $Tuple2(cK, fr)
745751 else throw("Strict value is not equal to itself.")
746752 }
747753 else throw("Strict value is not equal to itself.")
748754 }
749755 else throw("Strict value is not equal to itself.")
750756 }
751757 }
752758
753759
754-func fy () = {
755- let av = getString(S())
756- if ($isInstanceOf(av, "String"))
760+func fA () = {
761+ let aw = getString(S())
762+ if ($isInstanceOf(aw, "String"))
757763 then {
758- let dZ = av
759- fromBase58String(dZ)
764+ let eb = aw
765+ fromBase58String(eb)
760766 }
761- else if ($isInstanceOf(av, "Unit"))
767+ else if ($isInstanceOf(aw, "Unit"))
762768 then unit
763769 else throw("Match error")
764770 }
765771
766772
767-func fz () = {
768- let av = getString(T())
769- if ($isInstanceOf(av, "String"))
773+func fB () = {
774+ let aw = getString(T())
775+ if ($isInstanceOf(aw, "String"))
770776 then {
771- let dZ = av
772- fromBase58String(dZ)
777+ let eb = aw
778+ fromBase58String(eb)
773779 }
774- else if ($isInstanceOf(av, "Unit"))
780+ else if ($isInstanceOf(aw, "Unit"))
775781 then unit
776782 else throw("Match error")
777783 }
778784
779785
780-let fA = throw("Permission denied")
786+let fC = throw("Permission denied")
781787
782-func fB (dM) = {
783- let av = fy()
784- if ($isInstanceOf(av, "ByteVector"))
788+func fD (dO) = {
789+ let aw = fA()
790+ if ($isInstanceOf(aw, "ByteVector"))
785791 then {
786- let fC = av
787- (dM.callerPublicKey == fC)
792+ let fE = aw
793+ (dO.callerPublicKey == fE)
788794 }
789- else if ($isInstanceOf(av, "Unit"))
790- then (dM.caller == this)
795+ else if ($isInstanceOf(aw, "Unit"))
796+ then (dO.caller == this)
791797 else throw("Match error")
792798 }
793799
794800
795-func fD (dM) = {
796- let av = fy()
797- if ($isInstanceOf(av, "ByteVector"))
801+func fF (dO) = {
802+ let aw = fA()
803+ if ($isInstanceOf(aw, "ByteVector"))
798804 then {
799- let fC = av
800- if ((dM.callerPublicKey == fC))
805+ let fE = aw
806+ if ((dO.callerPublicKey == fE))
801807 then true
802- else fA
808+ else fC
803809 }
804- else if ($isInstanceOf(av, "Unit"))
805- then if ((dM.caller == this))
810+ else if ($isInstanceOf(aw, "Unit"))
811+ then if ((dO.caller == this))
806812 then true
807- else fA
813+ else fC
808814 else throw("Match error")
809815 }
810816
811817
812-@Callable(dM)
813-func constructor (R) = {
814- let eA = fD(dM)
815- if ((eA == eA))
816- then [StringEntry(R(), R)]
817- else throw("Strict value is not equal to itself.")
818+func fG (fH,eA,fI) = {
819+ let aV = aN()
820+ let cs = aV[u]
821+ let ct = aV[v]
822+ let dW = g
823+ let dZ = parseBigIntValue(j)
824+ let ea = (parseBigIntValue(aJ) * dZ)
825+ let dV = if ((fH == false))
826+ then [(toBigInt(bA(cs)) - fI), toBigInt(bA(ct))]
827+ else [(toBigInt(bA(ct)) - fI), toBigInt(bA(cs))]
828+ let eB = dV[0]
829+ let eb = eB
830+ let ec = (ea * dW)
831+ let eC = (((((eA * eA) / (eB * dW)) * eA) * dZ) / (ec * dW))
832+ let eD = ((eb + ((eA * dZ) / ec)) - eA)
833+ func eh (ei,ej) = {
834+ let fJ = ei
835+ let eF = fJ._1
836+ let em = fJ._2
837+ if ((em != unit))
838+ then ei
839+ else {
840+ let eG = (((eF * eF) + eC) / ((g * eF) + eD))
841+ let eH = Q((eG - value(eF)))
842+ if ((f >= eH))
843+ then $Tuple2(eG, ej)
844+ else $Tuple2(eG, unit)
845+ }
846+ }
847+
848+ let eq = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
849+ let fK = {
850+ let es = eq
851+ let et = size(es)
852+ let eu = $Tuple2(eA, unit)
853+ func ev (ew,ex) = if ((ex >= et))
854+ then ew
855+ else eh(ew, es[ex])
856+
857+ func ey (ew,ex) = if ((ex >= et))
858+ then ew
859+ else throw("List size exceeds 15")
860+
861+ ey(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(ev(eu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
862+ }
863+ let eF = fK._1
864+ let em = fK._2
865+ if ((em != unit))
866+ then eF
867+ else throw(("Y calculation error, Y = " + toString(eF)))
818868 }
819869
820870
821-
822-@Callable(dM)
823-func setManager (fE) = {
824- let eA = fD(dM)
825- if ((eA == eA))
871+@Callable(dO)
872+func calculateAmountOutForSwapAndSendTokens (fL,fH,fM,fN) = {
873+ let fO = [if ((value(dO.payments[0]).amount >= fL))
874+ then true
875+ else aD("Wrong amount"), if ((dO.caller == addressFromStringValue(ay(ag()))))
876+ then true
877+ else aD("Permission denied")]
878+ if ((fO == fO))
826879 then {
827- let fF = fromBase58String(fE)
828- if ((fF == fF))
829- then [StringEntry(T(), fE)]
880+ let dP = value(dO.payments[0])
881+ let fP = toBase58String(value(dP.assetId))
882+ let fQ = if ((fH == false))
883+ then {
884+ let fR = 1
885+ let fS = ay(ad())
886+ let fI = (bA(fP) - value(dO.payments[0]).amount)
887+ $Tuple3(fS, fR, fI)
888+ }
889+ else {
890+ let fR = 0
891+ let fS = ay(ac())
892+ let fI = (bA(fP) - value(dO.payments[0]).amount)
893+ $Tuple3(fS, fR, fI)
894+ }
895+ let fS = fQ._1
896+ let fR = fQ._2
897+ let fI = fQ._3
898+ let aV = aN()
899+ let cs = aV[u]
900+ let ct = aV[v]
901+ let dV = [(toBigInt(bA(cs)) - toBigInt(value(dO.payments[0]).amount)), toBigInt(bA(ct))]
902+ let eA = dU(dV)
903+ let eF = fG(fH, eA, toBigInt(fI))
904+ let eB = (toBigInt(fI) + toBigInt(fL))
905+ let fT = ((toBigInt(bA(fS)) - eF) - toBigInt(1))
906+ let fU = max([0, toInt(fT)])
907+ let fV = [(fM >= fU), throw("Exchange resulted in fewer coins than expected")]
908+ if ((fV == fV))
909+ then [ScriptTransfer(addressFromStringValue(fN), toInt(fT), fromBase58String(fS))]
830910 else throw("Strict value is not equal to itself.")
831911 }
832912 else throw("Strict value is not equal to itself.")
833913 }
834914
835915
836916
837-@Callable(dM)
838-func confirmManager () = {
839- let cf = fz()
840- let fG = if (isDefined(cf))
841- then true
842- else throw("No pending manager")
843- if ((fG == fG))
917+@Callable(dO)
918+func setSwapContract (fW) = {
919+ let fX = fF(dO)
920+ if ((fX == fX))
921+ then [StringEntry(ag(), fW)]
922+ else throw("Strict value is not equal to itself.")
923+ }
924+
925+
926+
927+@Callable(dO)
928+func constructor (R) = {
929+ let eC = fF(dO)
930+ if ((eC == eC))
931+ then [StringEntry(R(), R)]
932+ else throw("Strict value is not equal to itself.")
933+ }
934+
935+
936+
937+@Callable(dO)
938+func setManager (fY) = {
939+ let eC = fF(dO)
940+ if ((eC == eC))
844941 then {
845- let fH = if ((dM.callerPublicKey == value(cf)))
846- then true
847- else throw("You are not pending manager")
848- if ((fH == fH))
849- then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
942+ let fZ = fromBase58String(fY)
943+ if ((fZ == fZ))
944+ then [StringEntry(T(), fY)]
850945 else throw("Strict value is not equal to itself.")
851946 }
852947 else throw("Strict value is not equal to itself.")
853948 }
854949
855950
856951
857-@Callable(dM)
858-func put (fI,fJ) = {
859- let fK = bd()
860- let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861- let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862- if ((0 > fI))
952+@Callable(dO)
953+func confirmManager () = {
954+ let ch = fB()
955+ let ga = if (isDefined(ch))
956+ then true
957+ else throw("No pending manager")
958+ if ((ga == ga))
959+ then {
960+ let gb = if ((dO.callerPublicKey == value(ch)))
961+ then true
962+ else throw("You are not pending manager")
963+ if ((gb == gb))
964+ then [StringEntry(S(), toBase58String(value(ch))), DeleteEntry(T())]
965+ else throw("Strict value is not equal to itself.")
966+ }
967+ else throw("Strict value is not equal to itself.")
968+ }
969+
970+
971+
972+@Callable(dO)
973+func put (gc,gd) = {
974+ let ge = bf()
975+ let gf = valueOrErrorMessage(addressFromString(ge[A]), "Wr st addr")
976+ let gg = valueOrErrorMessage(addressFromString(ge[C]), "Wr sl addr")
977+ if ((0 > gc))
863978 then throw("Wrong slippage")
864- else if ((size(dM.payments) != 2))
979+ else if ((size(dO.payments) != 2))
865980 then throw("2 pmnts expd")
866981 else {
867- let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868- let dr = fN._2
869- let fO = fN._7
870- let cI = fN._9
871- let ds = fN._10
872- let dt = fN._11
873- let cq = fN._12
874- let cr = fN._13
875- let de = invoke(aD, "emit", [dr], nil)
876- if ((de == de))
982+ let gh = dQ(toString(dO.caller), toBase58String(dO.transactionId), AttachedPayment(value(dO.payments[0]).assetId, value(dO.payments[0]).amount), dO.payments[1], gc, true, false, true, 0, "")
983+ let dt = gh._2
984+ let gi = gh._7
985+ let cK = gh._9
986+ let du = gh._10
987+ let dv = gh._11
988+ let cs = gh._12
989+ let ct = gh._13
990+ let dg = invoke(aF, "emit", [dt], nil)
991+ if ((dg == dg))
877992 then {
878- let fP = {
879- let av = de
880- if ($isInstanceOf(av, "Address"))
993+ let gj = {
994+ let aw = dg
995+ if ($isInstanceOf(aw, "Address"))
881996 then {
882- let fQ = av
883- invoke(fQ, "emit", [dr], nil)
997+ let gk = aw
998+ invoke(gk, "emit", [dt], nil)
884999 }
8851000 else unit
8861001 }
887- if ((fP == fP))
1002+ if ((gj == gj))
8881003 then {
889- let fR = if ((ds > 0))
890- then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
1004+ let gl = if ((du > 0))
1005+ then invoke(gg, "put", nil, [AttachedPayment(cs, du)])
8911006 else nil
892- if ((fR == fR))
1007+ if ((gl == gl))
8931008 then {
894- let fS = if ((dt > 0))
895- then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
1009+ let gm = if ((dv > 0))
1010+ then invoke(gg, "put", nil, [AttachedPayment(ct, dv)])
8961011 else nil
897- if ((fS == fS))
1012+ if ((gm == gm))
8981013 then {
899- let fT = if (fJ)
1014+ let gn = if (gd)
9001015 then {
901- let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902- if ((fU == fU))
1016+ let go = invoke(gf, "stake", nil, [AttachedPayment(gi, dt)])
1017+ if ((go == go))
9031018 then nil
9041019 else throw("Strict value is not equal to itself.")
9051020 }
906- else [ScriptTransfer(dM.caller, dr, fO)]
907- (cI ++ fT)
1021+ else [ScriptTransfer(dO.caller, dt, gi)]
1022+ (cK ++ gn)
9081023 }
9091024 else throw("Strict value is not equal to itself.")
9101025 }
9111026 else throw("Strict value is not equal to itself.")
9121027 }
9131028 else throw("Strict value is not equal to itself.")
9141029 }
9151030 else throw("Strict value is not equal to itself.")
9161031 }
9171032 }
9181033
9191034
9201035
921-@Callable(dM)
922-func putOneTknV2 (fg,fJ) = {
923- let fV = {
924- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925- if ($isInstanceOf(aF, "Boolean"))
926- then aF
927- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1036+@Callable(dO)
1037+func putOneTknV2 (fi,gd) = {
1038+ let gp = {
1039+ let aH = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1040+ if ($isInstanceOf(aH, "Boolean"))
1041+ then aH
1042+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
9281043 }
929- let fW = if (if (if (aI())
1044+ let gq = if (if (if (aK())
9301045 then true
931- else (aX == o))
1046+ else (aZ == o))
9321047 then true
933- else (aX == q))
1048+ else (aZ == q))
9341049 then true
935- else fV
936- let fX = [if (if (!(fW))
1050+ else gp
1051+ let fO = [if (if (!(gq))
9371052 then true
938- else fB(dM))
1053+ else fD(dO))
9391054 then true
940- else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1055+ else aD("put operation is blocked by admin"), if ((size(dO.payments) == 1))
9411056 then true
942- else aB("exactly 1 payment are expected")]
943- if ((fX == fX))
1057+ else aD("exactly 1 payment are expected")]
1058+ if ((fO == fO))
9441059 then {
945- let aT = aL()
946- let cq = aT[u]
947- let cr = aT[v]
948- let cp = fromBase58String(aT[t])
949- let fk = parseIntValue(aT[w])
950- let fl = parseIntValue(aT[x])
951- let co = if ((dM.caller == this))
952- then dM.originCaller
953- else dM.caller
954- let dN = value(dM.payments[0])
955- let cm = toBase58String(value(dN.assetId))
956- let cS = dN.amount
957- let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958- if ((fY == fY))
1060+ let aV = aN()
1061+ let cs = aV[u]
1062+ let ct = aV[v]
1063+ let cr = fromBase58String(aV[t])
1064+ let fm = parseIntValue(aV[w])
1065+ let fn = parseIntValue(aV[x])
1066+ let cq = if ((dO.caller == this))
1067+ then dO.originCaller
1068+ else dO.caller
1069+ let dP = value(dO.payments[0])
1070+ let co = toBase58String(value(dP.assetId))
1071+ let cU = dP.amount
1072+ let gr = eJ(cU, co, toString(cq), toBase58String(dO.transactionId), true)
1073+ if ((gr == gr))
9591074 then {
960- let cj = fY._3
961- let cI = fY._2
962- let fZ = fY._1
963- let dr = if (if ((fg > 0))
964- then (fg > fZ)
1075+ let cl = gr._3
1076+ let cK = gr._2
1077+ let gs = gr._1
1078+ let dt = if (if ((fi > 0))
1079+ then (fi > gs)
9651080 else false)
966- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967- else fZ
968- let fN = invoke(aD, "emit", [dr], nil)
969- if ((fN == fN))
1081+ then aD(makeString(["amount to receive is less than ", toString(fi)], ""))
1082+ else gs
1083+ let gh = invoke(aF, "emit", [dt], nil)
1084+ if ((gh == gh))
9701085 then {
971- let fP = {
972- let av = fN
973- if ($isInstanceOf(av, "Address"))
1086+ let gj = {
1087+ let aw = gh
1088+ if ($isInstanceOf(aw, "Address"))
9741089 then {
975- let fQ = av
976- invoke(fQ, "emit", [dr], nil)
1090+ let gk = aw
1091+ invoke(gk, "emit", [dt], nil)
9771092 }
9781093 else unit
9791094 }
980- if ((fP == fP))
1095+ if ((gj == gj))
9811096 then {
982- let fT = if (fJ)
1097+ let gn = if (gd)
9831098 then {
984- let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985- if ((fU == fU))
1099+ let go = invoke(bh, "stake", nil, [AttachedPayment(cr, dt)])
1100+ if ((go == go))
9861101 then nil
9871102 else throw("Strict value is not equal to itself.")
9881103 }
989- else [ScriptTransfer(dM.caller, dr, cp)]
990- let fw = if ((cj > 0))
991- then [ScriptTransfer(aK, cj, fromBase58String(cm))]
1104+ else [ScriptTransfer(dO.caller, dt, cr)]
1105+ let fy = if ((cl > 0))
1106+ then [ScriptTransfer(aM, cl, fromBase58String(co))]
9921107 else nil
993- $Tuple2(((cI ++ fT) ++ fw), dr)
1108+ $Tuple2(((cK ++ gn) ++ fy), dt)
9941109 }
9951110 else throw("Strict value is not equal to itself.")
9961111 }
9971112 else throw("Strict value is not equal to itself.")
9981113 }
9991114 else throw("Strict value is not equal to itself.")
10001115 }
10011116 else throw("Strict value is not equal to itself.")
10021117 }
10031118
10041119
10051120
1006-@Callable(dM)
1007-func putForFree (ga) = if ((0 > ga))
1121+@Callable(dO)
1122+func putForFree (gt) = if ((0 > gt))
10081123 then throw("Wrong slpg")
1009- else if ((size(dM.payments) != 2))
1124+ else if ((size(dO.payments) != 2))
10101125 then throw("2 pmnts expd")
10111126 else {
1012- let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013- gb._9
1127+ let gu = dQ(toString(dO.caller), toBase58String(dO.transactionId), AttachedPayment(value(dO.payments[0]).assetId, value(dO.payments[0]).amount), dO.payments[1], gt, false, false, true, 0, "")
1128+ gu._9
10141129 }
10151130
10161131
10171132
1018-@Callable(dM)
1133+@Callable(dO)
10191134 func get () = {
1020- let de = dL(dM)
1021- let gc = de._1
1022- let cH = de._2
1023- let cS = de._3
1024- let cm = de._4
1025- let cI = de._5
1026- let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027- if ((eB == eB))
1028- then cI
1135+ let dg = dN(dO)
1136+ let gv = dg._1
1137+ let cJ = dg._2
1138+ let cU = dg._3
1139+ let co = dg._4
1140+ let cK = dg._5
1141+ let eD = invoke(aF, "burn", [cU], [AttachedPayment(co, cU)])
1142+ if ((eD == eD))
1143+ then cK
10291144 else throw("Strict value is not equal to itself.")
10301145 }
10311146
10321147
10331148
1034-@Callable(dM)
1035-func getOneTknV2 (ff,fg) = {
1036- let fV = {
1037- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038- if ($isInstanceOf(aF, "Boolean"))
1039- then aF
1040- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1149+@Callable(dO)
1150+func getOneTknV2 (fh,fi) = {
1151+ let gp = {
1152+ let aH = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1153+ if ($isInstanceOf(aH, "Boolean"))
1154+ then aH
1155+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
10411156 }
1042- let gd = if (if (aI())
1157+ let gw = if (if (aK())
10431158 then true
1044- else (aX == q))
1159+ else (aZ == q))
10451160 then true
1046- else fV
1047- let fX = [if (if (!(gd))
1161+ else gp
1162+ let fO = [if (if (!(gw))
10481163 then true
1049- else fB(dM))
1164+ else fD(dO))
10501165 then true
1051- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1166+ else aD("get operation is blocked by admin"), if ((size(dO.payments) == 1))
10521167 then true
1053- else aB("exactly 1 payment are expected")]
1054- if ((fX == fX))
1168+ else aD("exactly 1 payment are expected")]
1169+ if ((fO == fO))
10551170 then {
1056- let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057- let cI = ge._1
1058- let fp = ge._2
1059- $Tuple2(cI, fp)
1171+ let gx = fg(fh, fi, dO.payments, dO.caller, dO.originCaller, dO.transactionId)
1172+ let cK = gx._1
1173+ let fr = gx._2
1174+ $Tuple2(cK, fr)
10601175 }
10611176 else throw("Strict value is not equal to itself.")
10621177 }
10631178
10641179
10651180
1066-@Callable(dM)
1067-func getOneTknV2READONLY (ff,gf) = {
1068- let aT = aL()
1069- let cq = aT[u]
1070- let cr = aT[v]
1071- let cp = aT[t]
1072- let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073- let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074- let bL = dS(dT)
1075- let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076- let gh = if ((ff == cq))
1181+@Callable(dO)
1182+func getOneTknV2READONLY (fh,gy) = {
1183+ let aV = aN()
1184+ let cs = aV[u]
1185+ let ct = aV[v]
1186+ let cr = aV[t]
1187+ let dV = [toBigInt(bA(cs)), toBigInt(bA(ct))]
1188+ let gz = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cr)), "invalid lp asset").quantity)
1189+ let bN = dU(dV)
1190+ let bM = (bN - fraction(toBigInt(gy), bN, gz))
1191+ let fR = if ((fh == cs))
10771192 then 0
1078- else if ((ff == cr))
1193+ else if ((fh == ct))
10791194 then 1
10801195 else throw("invalid out asset id")
1081- let gi = ex(dT, gh, bK)
1082- let gj = (dT[gh] - gi)
1083- let gk = max([0, toInt((gj - f))])
1084- let gl = cg(gk, aG)
1085- let fo = gl._1
1086- let cj = gl._2
1087- $Tuple2(nil, $Tuple2(fo, cj))
1196+ let gA = ez(dV, fR, bM)
1197+ let fT = (dV[fR] - gA)
1198+ let fU = max([0, toInt((fT - f))])
1199+ let gB = ci(fU, aI)
1200+ let fq = gB._1
1201+ let cl = gB._2
1202+ $Tuple2(nil, $Tuple2(fq, cl))
10881203 }
10891204
10901205
10911206
1092-@Callable(dM)
1093-func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094- let aT = aL()
1095- let cq = aT[u]
1096- let cr = aT[v]
1097- let cp = aT[t]
1098- let cw = by(cq)
1099- let cy = by(cr)
1100- let gm = {
1101- let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102- if ($isInstanceOf(aF, "(Int, Int)"))
1103- then aF
1104- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1207+@Callable(dO)
1208+func getOneTknV2WithBonusREADONLY (fh,gy) = {
1209+ let aV = aN()
1210+ let cs = aV[u]
1211+ let ct = aV[v]
1212+ let cr = aV[t]
1213+ let cy = bA(cs)
1214+ let cA = bA(ct)
1215+ let gC = {
1216+ let aH = invoke(this, "getOneTknV2READONLY", [fh, gy], nil)
1217+ if ($isInstanceOf(aH, "(Int, Int)"))
1218+ then aH
1219+ else throw(($getType(aH) + " couldn't be cast to (Int, Int)"))
11051220 }
1106- let fo = gm._1
1107- let cj = gm._2
1108- let de = ck("", cp, gf, this)
1109- let cG = de._1
1110- let cH = de._2
1111- let gn = (cG + cH)
1112- let fd = if ((gn == 0))
1113- then if ((fo == 0))
1221+ let fq = gC._1
1222+ let cl = gC._2
1223+ let dg = cm("", cr, gy, this)
1224+ let cI = dg._1
1225+ let cJ = dg._2
1226+ let gD = (cI + cJ)
1227+ let ff = if ((gD == 0))
1228+ then if ((fq == 0))
11141229 then 0
11151230 else throw("bonus calculation error")
1116- else fraction((fo - gn), a, gn)
1117- $Tuple2(nil, $Tuple3(fo, cj, fd))
1231+ else fraction((fq - gD), a, gD)
1232+ $Tuple2(nil, $Tuple3(fq, cl, ff))
11181233 }
11191234
11201235
11211236
1122-@Callable(dM)
1123-func getNoLess (go,gp) = {
1124- let de = dL(dM)
1125- let cG = de._1
1126- let cH = de._2
1127- let cS = de._3
1128- let cm = de._4
1129- let cI = de._5
1130- if ((go > cG))
1131- then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132- else if ((gp > cH))
1133- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
1237+@Callable(dO)
1238+func getNoLess (gE,gF) = {
1239+ let dg = dN(dO)
1240+ let cI = dg._1
1241+ let cJ = dg._2
1242+ let cU = dg._3
1243+ let co = dg._4
1244+ let cK = dg._5
1245+ if ((gE > cI))
1246+ then throw(((("Failed: " + toString(cI)) + " < ") + toString(gE)))
1247+ else if ((gF > cJ))
1248+ then throw(((("Failed: " + toString(cJ)) + " < ") + toString(gF)))
11341249 else {
1135- let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136- if ((gq == gq))
1137- then cI
1250+ let gG = invoke(aF, "burn", [cU], [AttachedPayment(co, cU)])
1251+ if ((gG == gG))
1252+ then cK
11381253 else throw("Strict value is not equal to itself.")
11391254 }
11401255 }
11411256
11421257
11431258
1144-@Callable(dM)
1145-func unstakeAndGet (ch) = {
1146- let gr = if ((size(dM.payments) != 0))
1259+@Callable(dO)
1260+func unstakeAndGet (cj) = {
1261+ let gH = if ((size(dO.payments) != 0))
11471262 then throw("No pmnts expd")
11481263 else true
1149- if ((gr == gr))
1264+ if ((gH == gH))
11501265 then {
1151- let bX = aL()
1152- let gs = bd()
1153- let fO = fromBase58String(bX[t])
1154- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155- let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156- if ((gu == gu))
1266+ let bZ = aN()
1267+ let gI = bf()
1268+ let gi = fromBase58String(bZ[t])
1269+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1270+ let gK = invoke(gJ, "unstake", [toBase58String(gi), cj], nil)
1271+ if ((gK == gK))
11571272 then {
1158- let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159- let cu = parseIntValue(de._9)
1160- let cI = de._10
1161- let gv = if (if (aI())
1273+ let dg = cm(toBase58String(dO.transactionId), toBase58String(gi), cj, dO.caller)
1274+ let cw = parseIntValue(dg._9)
1275+ let cK = dg._10
1276+ let gL = if (if (aK())
11621277 then true
1163- else (cu == q))
1164- then throw(("Blocked: " + toString(cu)))
1278+ else (cw == q))
1279+ then throw(("Blocked: " + toString(cw)))
11651280 else true
1166- if ((gv == gv))
1281+ if ((gL == gL))
11671282 then {
1168- let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169- if ((gw == gw))
1170- then cI
1283+ let gM = invoke(aF, "burn", [cj], [AttachedPayment(gi, cj)])
1284+ if ((gM == gM))
1285+ then cK
11711286 else throw("Strict value is not equal to itself.")
11721287 }
11731288 else throw("Strict value is not equal to itself.")
11741289 }
11751290 else throw("Strict value is not equal to itself.")
11761291 }
11771292 else throw("Strict value is not equal to itself.")
11781293 }
11791294
11801295
11811296
1182-@Callable(dM)
1183-func unstakeAndGetNoLess (gx,gy,gp) = {
1184- let gd = if (aI())
1297+@Callable(dO)
1298+func unstakeAndGetNoLess (gN,gO,gF) = {
1299+ let gw = if (aK())
11851300 then true
1186- else (aX == q)
1187- let fX = [if (!(gd))
1301+ else (aZ == q)
1302+ let fO = [if (!(gw))
11881303 then true
1189- else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1304+ else throw("get operation is blocked by admin"), if ((size(dO.payments) == 0))
11901305 then true
11911306 else throw("no payments are expected")]
1192- if ((fX == fX))
1307+ if ((fO == fO))
11931308 then {
1194- let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195- if ((gu == gu))
1309+ let gK = invoke(bh, "unstake", [toBase58String(ba), gN], nil)
1310+ if ((gK == gK))
11961311 then {
1197- let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198- let cG = gz._1
1199- let cH = gz._2
1200- let cI = gz._10
1201- let gA = [if ((cG >= gy))
1312+ let gP = cm(toBase58String(dO.transactionId), toBase58String(ba), gN, dO.caller)
1313+ let cI = gP._1
1314+ let cJ = gP._2
1315+ let cK = gP._10
1316+ let gQ = [if ((cI >= gO))
12021317 then true
1203- else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
1318+ else throw(makeString(["amount asset amount to receive is less than ", toString(gO)], "")), if ((cJ >= gF))
12041319 then true
1205- else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206- if ((gA == gA))
1320+ else throw(makeString(["price asset amount to receive is less than ", toString(gF)], ""))]
1321+ if ((gQ == gQ))
12071322 then {
1208- let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209- if ((gq == gq))
1210- then cI
1323+ let gG = invoke(aF, "burn", [gN], [AttachedPayment(ba, gN)])
1324+ if ((gG == gG))
1325+ then cK
12111326 else throw("Strict value is not equal to itself.")
12121327 }
12131328 else throw("Strict value is not equal to itself.")
12141329 }
12151330 else throw("Strict value is not equal to itself.")
12161331 }
12171332 else throw("Strict value is not equal to itself.")
12181333 }
12191334
12201335
12211336
1222-@Callable(dM)
1223-func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224- let fV = {
1225- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226- if ($isInstanceOf(aF, "Boolean"))
1227- then aF
1228- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1337+@Callable(dO)
1338+func unstakeAndGetOneTknV2 (gN,fh,fi) = {
1339+ let gp = {
1340+ let aH = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1341+ if ($isInstanceOf(aH, "Boolean"))
1342+ then aH
1343+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
12291344 }
1230- let gd = if (if (aI())
1345+ let gw = if (if (aK())
12311346 then true
1232- else (aX == q))
1347+ else (aZ == q))
12331348 then true
1234- else fV
1235- let fX = [if (if (!(gd))
1349+ else gp
1350+ let fO = [if (if (!(gw))
12361351 then true
1237- else fB(dM))
1352+ else fD(dO))
12381353 then true
1239- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1354+ else aD("get operation is blocked by admin"), if ((size(dO.payments) == 0))
12401355 then true
1241- else aB("no payments are expected")]
1242- if ((fX == fX))
1356+ else aD("no payments are expected")]
1357+ if ((fO == fO))
12431358 then {
1244- let bX = aL()
1245- let gs = bd()
1246- let fO = fromBase58String(bX[t])
1247- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let co = dM.caller
1249- let gB = this
1250- let gu = invoke(gt, "unstakeINTERNAL", [fO, gx, co.bytes, gB.bytes], nil)
1251- if ((gu == gu))
1359+ let bZ = aN()
1360+ let gI = bf()
1361+ let gi = fromBase58String(bZ[t])
1362+ let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
1363+ let gK = invoke(gJ, "unstake", [toBase58String(gi), gN], nil)
1364+ if ((gK == gK))
12521365 then {
1253- let gC = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1254- let cI = gC._1
1255- let fp = gC._2
1256- $Tuple2(cI, fp)
1366+ let gR = fg(fh, fi, [AttachedPayment(gi, gN)], dO.caller, dO.originCaller, dO.transactionId)
1367+ let cK = gR._1
1368+ let fr = gR._2
1369+ $Tuple2(cK, fr)
12571370 }
12581371 else throw("Strict value is not equal to itself.")
12591372 }
12601373 else throw("Strict value is not equal to itself.")
12611374 }
12621375
12631376
12641377
1265-@Callable(dM)
1266-func putOneTknV2WithBonusREADONLY (gD,gE) = {
1267- let aT = aL()
1268- let cq = aT[u]
1269- let cr = aT[v]
1270- let cp = aT[t]
1271- let gF = eH(gD, gE, "", "", true)
1272- let eY = gF._1
1273- let cI = gF._2
1274- let cj = gF._3
1275- let fd = gF._4
1276- $Tuple2(nil, $Tuple3(eY, cj, fd))
1378+@Callable(dO)
1379+func putOneTknV2WithBonusREADONLY (gS,gT) = {
1380+ let aV = aN()
1381+ let cs = aV[u]
1382+ let ct = aV[v]
1383+ let cr = aV[t]
1384+ let gU = eJ(gS, gT, "", "", true)
1385+ let fa = gU._1
1386+ let cK = gU._2
1387+ let cl = gU._3
1388+ let ff = gU._4
1389+ $Tuple2(nil, $Tuple3(fa, cl, ff))
12771390 }
12781391
12791392
12801393
1281-@Callable(dM)
1282-func putOneTknV2WithoutTakeFeeREADONLY (gD,gE) = {
1283- let aT = aL()
1284- let cq = aT[u]
1285- let cr = aT[v]
1286- let cp = aT[t]
1287- let gG = eH(gD, gE, "", "", false)
1288- let eY = gG._1
1289- let cI = gG._2
1290- let cj = gG._3
1291- let fd = gG._4
1292- $Tuple2(nil, $Tuple3(eY, cj, fd))
1394+@Callable(dO)
1395+func putOneTknV2WithoutTakeFeeREADONLY (gS,gT) = {
1396+ let aV = aN()
1397+ let cs = aV[u]
1398+ let ct = aV[v]
1399+ let cr = aV[t]
1400+ let gV = eJ(gS, gT, "", "", false)
1401+ let fa = gV._1
1402+ let cK = gV._2
1403+ let cl = gV._3
1404+ let ff = gV._4
1405+ $Tuple2(nil, $Tuple3(fa, cl, ff))
12931406 }
12941407
12951408
12961409
1297-@Callable(dM)
1298-func activate (gH,gI) = if ((toString(dM.caller) != toString(aD)))
1410+@Callable(dO)
1411+func activate (gW,gX) = if ((toString(dO.caller) != toString(aF)))
12991412 then throw("denied")
1300- else $Tuple2([StringEntry(ac(), gH), StringEntry(ad(), gI)], "success")
1413+ else $Tuple2([StringEntry(ac(), gW), StringEntry(ad(), gX)], "success")
13011414
13021415
13031416
1304-@Callable(dM)
1305-func setS (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
1306- then fA
1307- else [StringEntry(gJ, gv)]
1417+@Callable(dO)
1418+func setS (gY,gL) = if ((toString(dO.caller) != aA(this, af())))
1419+ then fC
1420+ else [StringEntry(gY, gL)]
13081421
13091422
13101423
1311-@Callable(dM)
1312-func setI (gJ,gv) = if ((toString(dM.caller) != ax(this, af())))
1313- then fA
1314- else [IntegerEntry(gJ, gv)]
1424+@Callable(dO)
1425+func setI (gY,gL) = if ((toString(dO.caller) != aA(this, af())))
1426+ then fC
1427+ else [IntegerEntry(gY, gL)]
13151428
13161429
13171430
1318-@Callable(dM)
1319-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
1431+@Callable(dO)
1432+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
13201433
13211434
13221435
1323-@Callable(dM)
1324-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1436+@Callable(dO)
1437+func getAccBalanceWrapperREADONLY (bB) = $Tuple2(nil, bA(bB))
13251438
13261439
13271440
1328-@Callable(dM)
1329-func calcPricesWrapperREADONLY (bR,bS,bW) = {
1330- let gK = bV(bR, bS, bW)
1331- $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
1441+@Callable(dO)
1442+func calcPricesWrapperREADONLY (bT,bU,bY) = {
1443+ let gZ = bX(bT, bU, bY)
1444+ $Tuple2(nil, [toString(gZ[0]), toString(gZ[1]), toString(gZ[2])])
13321445 }
13331446
13341447
13351448
1336-@Callable(dM)
1337-func fromX18WrapperREADONLY (J,gL) = $Tuple2(nil, I(parseBigIntValue(J), gL))
1449+@Callable(dO)
1450+func fromX18WrapperREADONLY (J,ha) = $Tuple2(nil, I(parseBigIntValue(J), ha))
13381451
13391452
13401453
1341-@Callable(dM)
1454+@Callable(dO)
13421455 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
13431456
13441457
13451458
1346-@Callable(dM)
1347-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1459+@Callable(dO)
1460+func calcPriceBigIntWrapperREADONLY (bD,bE) = $Tuple2(nil, toString(bC(parseBigIntValue(bD), parseBigIntValue(bE))))
13481461
13491462
13501463
1351-@Callable(dM)
1352-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gM,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gM, cO, cP, true, false, 0, ""))
1464+@Callable(dO)
1465+func estimatePutOperationWrapperREADONLY (cn,bI,cM,cN,cO,cP,hb,cQ,cR) = $Tuple2(nil, cL(cn, bI, cM, cN, cO, cP, hb, cQ, cR, true, false, 0, ""))
13531466
13541467
13551468
1356-@Callable(dM)
1357-func estimateGetOperationWrapperREADONLY (cl,gN,cn,gM) = {
1358- let de = ck(cl, gN, cn, addressFromStringValue(gM))
1359- $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
1469+@Callable(dO)
1470+func estimateGetOperationWrapperREADONLY (cn,hc,cp,hb) = {
1471+ let dg = cm(cn, hc, cp, addressFromStringValue(hb))
1472+ $Tuple2(nil, $Tuple10(dg._1, dg._2, dg._3, dg._4, dg._5, dg._6, dg._7, toString(dg._8), dg._9, dg._10))
13601473 }
13611474
13621475
1363-@Verifier(gO)
1364-func gP () = {
1365- let gQ = {
1366- let av = fy()
1367- if ($isInstanceOf(av, "ByteVector"))
1476+@Verifier(hd)
1477+func he () = {
1478+ let hf = {
1479+ let aw = fA()
1480+ if ($isInstanceOf(aw, "ByteVector"))
13681481 then {
1369- let fC = av
1370- fC
1482+ let fE = aw
1483+ fE
13711484 }
1372- else if ($isInstanceOf(av, "Unit"))
1373- then gO.senderPublicKey
1485+ else if ($isInstanceOf(aw, "Unit"))
1486+ then hd.senderPublicKey
13741487 else throw("Match error")
13751488 }
1376- let av = gO
1377- if ($isInstanceOf(av, "Order"))
1489+ let aw = hd
1490+ if ($isInstanceOf(aw, "Order"))
13781491 then {
1379- let dz = av
1380- let gR = aJ()
1381- let gS = dy(dz)
1382- let gT = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1383- let gU = sigVerify(dz.bodyBytes, dz.proofs[1], gR)
1384- if (if (if (gS)
1385- then gT
1492+ let dB = aw
1493+ let hg = aL()
1494+ let hh = dA(dB)
1495+ let hi = sigVerify(dB.bodyBytes, dB.proofs[0], dB.senderPublicKey)
1496+ let hj = sigVerify(dB.bodyBytes, dB.proofs[1], hg)
1497+ if (if (if (hh)
1498+ then hi
13861499 else false)
1387- then gU
1500+ then hj
13881501 else false)
13891502 then true
1390- else aq(gS, gT, gU)
1503+ else ar(hh, hi, hj)
13911504 }
1392- else if ($isInstanceOf(av, "SetScriptTransaction"))
1505+ else if ($isInstanceOf(aw, "SetScriptTransaction"))
13931506 then {
1394- let dZ = av
1395- let gV = blake2b256(value(dZ.script))
1396- let gW = fromBase64String(value(getString(aD, ao())))
1397- let gX = scriptHash(this)
1398- if (if ((gW == gV))
1399- then (gX != gV)
1507+ let eb = aw
1508+ let hk = blake2b256(value(eb.script))
1509+ let hl = fromBase64String(value(getString(aF, ap())))
1510+ let hm = scriptHash(this)
1511+ if (if ((hl == hk))
1512+ then (hm != hk)
14001513 else false)
14011514 then true
1402- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1515+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
14031516 }
1404- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1517+ else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
14051518 }
14061519

github/deemru/w8io/169f3d6 
575.15 ms