tx · CP9gc4PVzoK3SzDQKBsCuacBsWSG6D8cYZ5csQ1x6sm6

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03400000 Waves

2022.10.06 14:02 [2260377] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "CP9gc4PVzoK3SzDQKBsCuacBsWSG6D8cYZ5csQ1x6sm6", "fee": 3400000, "feeAssetId": null, "timestamp": 1665054165563, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4Fz7azxavh7fuiBfBNxx1ZwSvn3TbmzqXTZV75Jayfs9Dvpt764ZDTu65vpnxAY12DFnonCjHffH95PgtjSXECE2" ], "script": "base64:BgKqIggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYzNTExNjY5NiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMTAyNzIxMDcyIg0kdDAyMTA3NjIxNTM3IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE1NDEyMTY3NSIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjE0NDIyMjQwIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNTk1MjM3MDMiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM4OTAyMzk3NyIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiIEY2FsYyIDYWNjIgNjdXIiDSR0MDI1MTM1MjUxNTUiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDI1NTc5MjU2MjUiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjYxMjUyNjE0NSIBeSIFeU5leHQiBXlEaWZmIg0kdDAyNjQ1MjI2NDk5IgFtIgJwbSICcGQiAm1tIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgVvdXRMcCIHZ3d4Q250ciIHcG9vbENmZyIFYWRkb24iEHBheW1lbnRBbW91bnRSYXciDSR0MDMxMTk1MzEyNDciDSR0MDMxNDA3MzIwMjMiDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiCWxwQ2FsY1JlcyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiB21heFNscGciCW91dEFtdEFtdCIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50Igplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDA0MDI4MTQwNzQxIgt0b3RhbEdldFJhdyIIZmluYWxSZXMiDSR0MDQxNDg4NDE1OTIiDSR0MDQyNjE3NDI3NzIiDWxwQXNzZXRBbW91bnQiDSR0MDQzMjg1NDM1OTMiFGFtb3VudEJhbGFuY2VGb3JTd2FwIhNwcmljZUJhbGFuY2VGb3JTd2FwIgxhbW91bnRUb1N3YXAiC2Ftb3VudFRvQWRkIgp5UHJlY2lzaW9uIg0kdDA0NDEyMTQ0MTcwIgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiDSR0MDQ0ODYxNDQ5MTAiDSR0MDQ1MjU1NDUzNzAiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDQ3Njc1NDc4NjMiBWFzc2V0IgxwYXltZW50QXNzZXQiDSR0MDQ4MjkxNDgzODEiDSR0MDQ4Mzg1NDg1NjciCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoXAABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgMxMDAAAWoCATEAAWsCAl9fAAFsAgAAAW0AAQABbgACAAFvAAMAAXAABAABcQABAAFyAAIAAXMAAwABdAAEAAF1AAUAAXYABgABdwAHAAF4AAgAAXkACQABegABAAFBAAcAAUIACgABQwkAawMABQUBYQCQTgEBRAIBRQFGCQC8AgMJALYCAQUBRQUBYwkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWMBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAL8CAgUBZAUBSAkAvgIBBQFIBQFIAQFPAQFIAwkAvwICBQFkBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBawEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAECYWMAAgclc19fYW1wAQJhZAACDSVzX19hZGRvbkFkZHIAAmFlAgclc19fZmVlAAJhZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUBQwECYWcAAhElc19fZmFjdG9yeUNvbmZpZwECYWgAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFpAgJhagJhawkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWoCAl9fBQJhawIIX19jb25maWcBAmFsAQJhbQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbQECYW4AAgwlc19fc2h1dGRvd24BAmFvAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFwAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFxAwJhcgJhcwJhdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcgILIHNuZHJWYWxpZD0JAKUDAQUCYXMCDCBtdGNoclZhbGlkPQkApQMBBQJhdAECYXUBAUgEAmF2BQFIAwkAAQIFAmF2AgZTdHJpbmcEAmF3BQJhdgUCYXcJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJheAICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQQICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAAJhQgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUEdGhpcwkBAVAAAAJhQwkBAmF4AgUEdGhpcwkBAmFjAAECYUQACQELdmFsdWVPckVsc2UCCQCbCAIFAmFCCQECYW4ABwECYUUACQDZBAEJAQJheAIFAmFCCQECYWgAAAJhRgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUIJAQJhcAABAmFHAAQCYUgJAQJheAIFBHRoaXMJAQJhYQAEAmFJCQECYXgCBQR0aGlzCQECYWIABAJhSgkBAmFBAgUCYUIJAQJhbAEFAmFJBAJhagkBAmFBAgUCYUIJAQJhbAEFAmFICQC1CQIJAQJheAIFAmFCCQECYWkCCQCkAwEFAmFqCQCkAwEFAmFKBQFrAQJhSwAJALUJAgkBAmF4AgUCYUIJAQJhZwAFAWsAAmFMCQECYUsAAAJhTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAXoCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJhTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUECIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFQCgJhUQJhUgJhUwJhVAJhVQJhVgJhVwJhWAJhWQJhWgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVEJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQkAzAgCCQCkAwEFAmFWCQDMCAIJAKQDAQUCYVcJAMwIAgkApAMBBQJhWAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoFA25pbAUBawECYmEGAmJiAmJjAmJkAmFUAmFXAmFYCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmIJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYBQNuaWwFAWsBAmJlAQJiZgMJAAACBQJiZgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmYBAmJnAgJiaAJiaQkAvAIDBQJiaAUBYwUCYmkBAmJqAwJiawJibAJibQQCYm4JALwCAwkAuAICBQJiawUCYmwFAWIFAmJsBAJibwkAvwICCQC4AgIFAmJtCQEBTgEFAmJuBQFkAwkBASEBBQJibwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJibgkAlAoCBQJibwkAmQMBCQDMCAIFAmJrCQDMCAIFAmJsBQNuaWwBAmJwAwJicQJicgJicwQCYm4JALwCAwUCYnIFAWIFAmJxBAJidAkAvwICBQJicwUCYm4DAwUCYnQGCQC/AgIFAmJyBQJicQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnICASAJAKYDAQUCYnECASAJAKYDAQUCYm4CASAJAKYDAQUCYnMFAmJ0AQJidQQCYnYCYncCYngCYnkEAmJ6CQEBRAIFAmJ4BQJidgQCYkEJAQFEAgUCYnkFAmJ3CQECYmcCBQJiQQUCYnoBAmJCAwJieAJieQJiQwQCYkQJAQJhRwAEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJHCQECYnUEBQJiRQUCYkYFAmJ4BQJieQQCYmkJAQFEAgUCYngFAmJFBAJiaAkBAUQCBQJieQUCYkYEAmJICQEBRAIFAmJDBQFhBAJiSQkBAmJnAgUCYmkFAmJIBAJiSgkBAmJnAgUCYmgFAmJICQDMCAIFAmJHCQDMCAIFAmJJCQDMCAIFAmJKBQNuaWwBAmJLAwJieAJieQJiQwQCYkwJAQJiQgMFAmJ4BQJieQUCYkMJAMwIAgkBAUcCCQCRAwIFAmJMAAAFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAEFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAIFAWEFA25pbAECYk0BAmJOBAJiTwkAawMFAmJOBQJhZgUBYQkAlAoCCQBlAgUCYk4FAmJPBQJiTwECYlAEAmJRAmJSAmJTAmJUBAJiRAkBAmFHAAQCYlUJAJEDAgUCYkQFAXMEAmJWCQCRAwIFAmJEBQF0BAJiVwkAkQMCBQJiRAUBdQQCYlgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCYloJAJEDAgUCYkQFAXIEAmNhCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlUFAmJSCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjYgkBAmJlAQUCYlYEAmNjCQEBRAIFAmNiBQJiWAQCY2QJAQJiZQEFAmJXBAJjZQkBAUQCBQJjZAUCYlkEAmNmCQECYmcCBQJjZQUCY2MEAmNnCQEBRwIFAmNmBQFhBAJjaAkBAUQCBQJiUwUBYQQCY2kJAQFEAgUCY2EFAWEEAmNqCQC8AgMFAmNjBQJjaAUCY2kEAmNrCQC8AgMFAmNlBQJjaAUCY2kEAmNsCQEBRwIFAmNqBQJiWAQCY20JAQFHAgUCY2sFAmJZBAJjbgMJAAACBQJiUQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmNsAwkAAAIFAmJWAgVXQVZFUwUEdW5pdAkA2QQBBQJiVgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVAUCY20DCQAAAgUCYlcCBVdBVkVTBQR1bml0CQDZBAEFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQJiVAUCYlEJAQJiYQYFAmNsBQJjbQUCYlMFAmNnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNnBQNuaWwJAJwKCgUCY2wFAmNtBQJiVgUCYlcFAmNiBQJjZAUCY2EFAmNmBQJiWgUCY24BAmNvDQJiUQJibQJjcAJjcQJjcgJjcwJiVAJjdAJjdQJjdgJjdwJjeAJjeQQCYkQJAQJhRwAEAmJVCQDZBAEJAJEDAgUCYkQFAXMEAmN6CQCRAwIFAmJEBQF0BAJjQQkAkQMCBQJiRAUBdQQCY0IJAJEDAgUCYkQFAXgEAmNDCQCRAwIFAmJEBQF5BAJjRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJjRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCY0YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlUCCFdyIGxwIGFzCHF1YW50aXR5BAJjYgMFAmN0CQECYmUBBQJjegMDBQJjdgkAAAIFAmN5BQJjegcJAGUCCQECYmUBBQJjegUCY3gDBQJjdgkBAmJlAQUCY3oJAGUCCQECYmUBBQJjegUCY3AEAmNkAwUCY3QJAQJiZQEFAmNBAwMFAmN2CQAAAgUCY3kFAmNBBwkAZQIJAQJiZQEFAmNBBQJjeAMFAmN2CQECYmUBBQJjQQkAZQIJAQJiZQEFAmNBBQJjcgQCY0cJAQFEAgUCY3AFAmNEBAJjSAkBAUQCBQJjcgUCY0UEAmNJCQECYmcCBQJjSAUCY0cEAmNjCQEBRAIFAmNiBQJjRAQCY2UJAQFEAgUCY2QFAmNFBAJjSgMJAAACBQJjRgAABAJjZgUBZAQCY0sFAWQEAmJICQB2BgkAuQICBQJjRwUCY0gAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkgFAWEJAQFHAgUCY0cFAmNECQEBRwIFAmNIBQJjRQkBAmJnAgkAtwICBQJjZQUCY0gJALcCAgUCY2MFAmNHBQJjSwQCY2YJAQJiZwIFAmNlBQJjYwQCY0wJALwCAwkBAU4BCQC4AgIFAmNmBQJjSQUBYwUCY2YEAmNLCQEBRAIFAmJtBQFhAwMDBQJjdwkBAiE9AgUCY2YFAWQHCQC/AgIFAmNMBQJjSwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0wCAyA+IAkApgMBBQJjSwQCY00JAQFEAgUCY0YFAWEEAmNOCQC8AgMFAmNHBQJjZgUBYwQCY08JALwCAwUCY0gFAWMFAmNmBAJjUAMJAL8CAgUCY04FAmNICQCUCgIFAmNPBQJjSAkAlAoCBQJjRwUCY04EAmNRCAUCY1ACXzEEAmNSCAUCY1ACXzIEAmJICQC8AgMFAmNNBQJjUgUCY2UJAJcKBQkBAUcCBQJiSAUBYQkBAUcCBQJjUQUCY0QJAQFHAgUCY1IFAmNFBQJjZgUCY0sEAmNTCAUCY0oCXzEEAmNUCAUCY0oCXzIEAmNVCAUCY0oCXzMEAmNnCQEBRwIIBQJjSgJfNAUBYQQCY1YJAQFHAggFAmNKAl81BQFhAwkAZwIAAAUCY1MJAAIBAgdMUCA8PSAwBAJjVwMJAQEhAQUCY3UAAAUCY1MEAmNYCQBlAgUCY3AFAmNUBAJjWQkAZQIFAmNyBQJjVQQCY1oDAwUCY3YJAAACBQJjeQUCY3oHCQCUCgIFAmN4AAADAwUCY3YJAAACBQJjeQUCY0EHCQCUCgIAAAUCY3gJAJQKAgUCY1QFAmNVBAJkYQgFAmNaAl8xBAJkYggFAmNaAl8yBAJkYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAmJUBQJiUQkBAmFQCgUCZGEFAmRiBQJjVwUCY2cFAmJtBQJjVgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1gFAmNZBQNuaWwJAJ8KDQUCY1MFAmNXBQJjZwUCY2IFAmNkBQJjRgUCYlUFAmJaBQJkYwUCY1gFAmNZBQJjcQUCY3MBAmRkAQJkZQQCYkQJAQJhRwAEAmRmCQCRAwIFAmJEBQF0BAJkZwkAkQMCBQJiRAUBdQQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBcgQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCZGgJAQJiZQEFAmRmBAJkaQkBAmJlAQUCZGcEAmNmAwkAAAIIBQJkZQlvcmRlclR5cGUFA0J1eQkBAmJ1BAUCYkUFAmJGCQBkAgUCZGgIBQJkZQZhbW91bnQFAmRpCQECYnUEBQJiRQUCYkYJAGUCBQJkaAgFAmRlBmFtb3VudAUCZGkEAmNnCQEBRwIFAmNmBQFhAwMDCQECYUQABgkAAAIFAmJaBQFvBgkAAAIFAmJaBQFwCQACAQINQWRtaW4gYmxvY2tlZAQCZGoICAUCZGUJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkawMJAAACBQJkagUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGoEAmRsCAgFAmRlCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkbQMJAAACBQJkbAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGwDAwkBAiE9AgUCZGsFAmRmBgkBAiE9AgUCZG0FAmRnCQACAQIJV3IgYXNzZXRzBAJkbggFAmRlBXByaWNlBAJjRQkAawMFAWEFAmJGBQJiRQQCZG8JAQFKAwUCZG4FAWEFAmNFBAJkcAMJAAACCAUCZGUJb3JkZXJUeXBlBQNCdXkJAGcCBQJjZwUCZG8JAGcCBQJkbwUCY2cGAQJkcQECZHIDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJjeAgFAmRyBmNhbGxlcgQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCYloJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjbggFAmNKA18xMAMDCQECYUQABgkAAAIFAmJaBQFwCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYloJAJcKBQUCY2wFAmNtBQJjeAUCYlIFAmNuAQJkdAoCZHUBWQJkdgJkdwJibQJjdQJjdgJjdwJjeAJjeQQCY0oJAQJjbw0FAVkFAmJtCAkBBXZhbHVlAQUCZHYGYW1vdW50CAkBBXZhbHVlAQUCZHYHYXNzZXRJZAgJAQV2YWx1ZQEFAmR3BmFtb3VudAgJAQV2YWx1ZQEFAmR3B2Fzc2V0SWQFAmR1CQAAAgUBWQIABQJjdQUCY3YFAmN3BQJjeAUCY3kEAmJaCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOAMDAwkBAmFEAAYJAAACBQJiWgUBbgYJAAACBQJiWgUBcAkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYloFAmNKAQJkeAQCZHkCYlICYlQBWQQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmRBCQECYk0BBQJkeQQCY3gIBQJkQQJfMQQCYk8IBQJkQQJfMgQCZEIDCQAAAgUBWQIACQCUCgIFAmNiBQJjZAMJAAACBQJiUgUCYlYDCQBmAgUCZHkFAmNiCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY2IFAmR5BQJjZAMJAAACBQJiUgUCYlcDCQBmAgUCZHkFAmNkCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjYgkAZQIFAmNkBQJkeQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAwkAAAIFAmJSBQJiVgkAlAoCBQJkQwUCZEQJAJQKAgUCZEQFAmRDBAJkRggFAmRFAl8xBAJkRwgFAmRFAl8yBAJkSAABBAJkSQoAAmRKCQD8BwQFAmFPAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQJjeAkAzAgCCQCkAwEFAmRGCQDMCAIJAKQDAQUCZEcJAMwIAgIACQDMCAIFAmFDCQDMCAIFAWkJAMwIAgkApAMBBQJkSAkAzAgCBQFqBQNuaWwFA25pbAMJAAECBQJkSgIKKEludCwgSW50KQUCZEoJAAIBCQCsAgIJAAMBBQJkSgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZEsDCQAAAgUCYlIFAmJWBQJkSQkAlAoCCAUCZEkCXzIIBQJkSQJfMQQCZEwIBQJkSwJfMQQCZE0IBQJkSwJfMgQCZE4JAQJkdAoFAmJUBQFZCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCZEwJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJXBQJkTQAABgYHBQJkeQUCYlIEAmRPCAUCZE4CXzIEAmRQCAUCZE4CXzcEAmNuCAUCZE4CXzkEAmNYCAUCZE4DXzEwBAJjWQgFAmROA18xMQUCZE4BAmRRBgJkUgJkUwJkVAJkdQJkVQJkVgMJAQIhPQIJAJADAQUCZFQAAQkAAgECCzEgcG1udCBleHBkBAJkegkBAmFHAAQCYlUJAJEDAgUCZHoFAXMEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCZFcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkegUBdgQCZFgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkegUBdwQCZFkJAJEDAgUCZHoFAXIEAmJUAwkAAAIFAmR1BQR0aGlzBQJkVQUCZHUEAmRzCQEFdmFsdWUBCQCRAwIFAmRUAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAlOvcAwUCY3gJAAIBAg1NaW4gcG10IDEwIExQBAJiUQkA2AQBBQJkVgMJAQIhPQIFAmJVCQDYBAEFAmJSCQACAQIIV3JvbmcgTFAEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJkWgoAAmRKCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZFIJAMwIAgUCY3gFA25pbAUDbmlsAwkAAQIFAmRKAgooSW50LCBJbnQpBQJkSgkAAgEJAKwCAgkAAwEFAmRKAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlYQgFAmRaAl8xBAJiTwgFAmRaAl8yBAJlYgMDCQBmAgUCZFMAAAkAZgIFAmRTBQJlYQcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmRTBQNuaWwCAAUCZWEEAmVjAwkAAAIFAmRSBQJiVgkAlAoCBQJlYgAACQCUCgIAAAUCZWIEAmVkCAUCZWMCXzEEAmVlCAUCZWMCXzIEAmVmCQECYmcCCQEBRAIFAmNkBQJkWAkBAUQCBQJjYgUCZFcEAmVnCQEBRwIFAmVmBQFhBAJlaAMJAAACBQJkUgIFV0FWRVMFBHVuaXQJANkEAQUCZFIEAmVpAwkAZgIFAmJPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmJPBQJlaAUDbmlsBQNuaWwEAmNuCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmViBQJlaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUCYlQFAmJRCQECYmEGBQJlZAUCZWUFAmN4BQJlZwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJlZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZwUDbmlsBQJlaQMJAAACBQJjbgUCY24EAmVqCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVqBQJlagkAlAoCBQJjbgUCZWIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVrAQJlbAQCZW0FAWcEAmVuCQCRAwIFAmVsAAAEAmVvCQCRAwIFAmVsAAEEAmVwCQCnAwEFAWkEAmVxCQC5AgIJAKcDAQUCYUMFAmVwBAJlcgkAtwICBQJlbgUCZW8DCQAAAgUCZXIFAWUFAWUEAmVzCQC5AgIFAmVxBQJlbQoBAmV0AgJldQJldgQCZXcFAmV1BAJleAgFAmV3Al8xBAJleQgFAmV3Al8yAwkBAiE9AgUCZXkFBHVuaXQFAmV1BAJlegkAugICCQC5AgIJALkCAgUCZXgFAmV4BQJleAkAuQICCQC5AgIJALkCAgUCZW4FAmVvBQJlbQUCZW0EAmVBCQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUCZXMFAmVyBQJlcAkAuQICBQJlegUCZW0FAmV4CQC3AgIJALoCAgkAuQICCQC4AgIFAmVzBQJlcAUCZXgFAmVwCQC5AgIJALcCAgUCZW0JALYCAQABBQJlegQCZUIJAQFPAQkAuAICBQJlQQkBBXZhbHVlAQUCZXgDCQDAAgIFAWYFAmVCCQCUCgIFAmVBBQJldgkAlAoCBQJlQQUEdW5pdAQCZUMJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwEAmVECgACZUUFAmVDCgACZUYJAJADAQUCZUUKAAJlRwkAlAoCBQJlcgUEdW5pdAoBAmVIAgJlSQJlSgMJAGcCBQJlSgUCZUYFAmVJCQECZXQCBQJlSQkAkQMCBQJlRQUCZUoKAQJlSwICZUkCZUoDCQBnAgUCZUoFAmVGBQJlSQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQJlSwIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIFAmVHAAAAAQACAAMABAAFAAYABwQCZXgIBQJlRAJfMQQCZXkIBQJlRAJfMgMJAQIhPQIFAmV5BQR1bml0BQJleAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJleAECZUwDAmVsAmRyAmVNBAJlbQUBZwQCZU4JAJEDAgUCZWwDCQAAAgUCZHIAAAABAAAEAmVwCQCnAwEFAWkEAmVxCQC5AgIJAKcDAQUCYUMFAmVwBAJlcgUCZU4EAmVzCQC5AgIFAmVxBQJlbQQCZU8JALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlTQUCZU0JALkCAgUCZU4FAmVtBQJlTQUCZXAJALkCAgUCZXMFAmVtBAJlUAkAuAICCQC3AgIFAmVyCQC6AgIJALkCAgUCZU0FAmVwBQJlcwUCZU0KAQJldAICZXUCZXYEAmVRBQJldQQCZVIIBQJlUQJfMQQCZXkIBQJlUQJfMgMJAQIhPQIFAmV5BQR1bml0BQJldQQCZVMJALoCAgkAtwICCQC5AgIFAmVSBQJlUgUCZU8JALcCAgkAuQICBQFnBQJlUgUCZVAEAmVUCQEBTwEJALgCAgUCZVMJAQV2YWx1ZQEFAmVSAwkAwAICBQFmBQJlVAkAlAoCBQJlUwUCZXYJAJQKAgUCZVMFBHVuaXQEAmVDCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVVCgACZUUFAmVDCgACZUYJAJADAQUCZUUKAAJlRwkAlAoCBQJlcgUEdW5pdAoBAmVIAgJlSQJlSgMJAGcCBQJlSgUCZUYFAmVJCQECZXQCBQJlSQkAkQMCBQJlRQUCZUoKAQJlSwICZUkCZUoDCQBnAgUCZUoFAmVGBQJlSQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZUsCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCCQECZUgCBQJlRwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlUggFAmVVAl8xBAJleQgFAmVVAl8yAwkBAiE9AgUCZXkFBHVuaXQFAmVSCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVSAQJlVgAEAmF2CQCiCAEJAQFRAAMJAAECBQJhdgIGU3RyaW5nBAJlcgUCYXYJANkEAQUCZXIDCQABAgUCYXYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVcABAJhdgkAoggBCQEBUgADCQABAgUCYXYCBlN0cmluZwQCZXIFAmF2CQDZBAEFAmVyAwkAAQIFAmF2AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmVYCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmVZAQJkcgQCYXYJAQJlVgADCQABAgUCYXYCCkJ5dGVWZWN0b3IEAmVaBQJhdgMJAAACCAUCZHIPY2FsbGVyUHVibGljS2V5BQJlWgYFAmVYAwkAAQIFAmF2AgRVbml0AwkAAAIIBQJkcgZjYWxsZXIFBHRoaXMGBQJlWAkAAgECC01hdGNoIGVycm9yHwJkcgELY29uc3RydWN0b3IBAVAEAmVPCQECZVkBBQJkcgMJAAACBQJlTwUCZU8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVAABQFQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBCnNldE1hbmFnZXIBAmZhBAJlTwkBAmVZAQUCZHIDCQAAAgUCZU8FAmVPBAJmYgkA2QQBBQJmYQMJAAACBQJmYgUCZmIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJmYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQ5jb25maXJtTWFuYWdlcgAEAmJMCQECZVcABAJmYwMJAQlpc0RlZmluZWQBBQJiTAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmMFAmZjBAJmZAMJAAACCAUCZHIPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiTAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmQFAmZkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJiTAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEDcHV0AgJmZQJmZgQCZmcJAQJhSwAEAmZoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmZwUBegIKV3Igc3QgYWRkcgQCZmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZnBQFBAgpXciBzbCBhZGRyAwkAZgIAAAUCZmUJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZqCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRyCHBheW1lbnRzAAEFAmZlBgcGAAACAAQCY1cIBQJmagJfMgQCZFAIBQJmagJfNwQCY24IBQJmagJfOQQCY1gIBQJmagNfMTAEAmNZCAUCZmoDXzExBAJiVggFAmZqA18xMgQCYlcIBQJmagNfMTMEAmNKCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJjSgUCY0oEAmZrBAJhdgUCY0oDCQABAgUCYXYCB0FkZHJlc3MEAmZsBQJhdgkA/AcEBQJmbAIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmsFAmZrBAJmbQMJAGYCBQJjWAAACQD8BwQFAmZpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmNYBQNuaWwFA25pbAMJAAACBQJmbQUCZm0EAmZuAwkAZgIFAmNZAAAJAPwHBAUCZmkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVwUCY1kFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8DBQJmZgQCZnAJAPwHBAUCZmgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRQBQJjVwUDbmlsAwkAAAIFAmZwBQJmcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcgZjYWxsZXIFAmNXBQJkUAUDbmlsCQDOCAIFAmNuBQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEJcHV0T25lVGtuBQJkTAJkTQJmcQJibQJmZgQCYkQJAQJhSwAEAmZoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRAUBegIKV3Igc3QgYWRkcgQCZmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQFBAgpXciBzbCBhZGRyBAJmcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUICC1dyIGd3eCBhZGRyBAJmcwkBAmFHAAQCYlYJAJEDAgUCZnMFAXQEAmJXCQCRAwIFAmZzBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZzBQF2BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZzBQF3BAJmdAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWQAAgAEAmJUAwkAAAIFAmZ0CQClCAEIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcgZjYWxsZXIDAwMDCQBnAgAABQJibQYJAGcCAAAFAmRMBgkAZwIAAAUCZE0GCQBnAgAABQJmcQkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQDYBAEJAQV2YWx1ZQEIBQJkcwdhc3NldElkBAJmdQgFAmRzBmFtb3VudAQCZnYJAQJiTQEFAmZ1BAJjeAgFAmZ2Al8xBAJiTwgFAmZ2Al8yAwkAZgIAgK3iBAUCZnUJAAIBAg1Xcm9uZyBwbXQgYW10BAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZncDCQAAAgUCYlIFAmJWAwMJAGYCBQJmdQUCY2IGCQBmAgUCZEwFAmN4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCY2IFAmZ1BQJjZAkAZQIFAmN4BQJkTAUCZE0AAAAAAwkAAAIFAmJSBQJiVwMDCQBmAgUCZnUFAmNkBgkAZgIFAmRNBQJjeAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCY2IJAGUCBQJjZAUCZnUAAAAACQBlAgUCY3gFAmRNBQJkTAkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRDCAUCZncCXzEEAmRECAUCZncCXzIEAmZ4CAUCZncCXzMEAmZ5CAUCZncCXzQEAmZ6CAUCZncCXzUEAmZBCAUCZncCXzYEAmJyCQD8BwQFAmZyAgVjYWxjRAkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZEQJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCYnEJAPwHBAUCZnICBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmRDBQJmeAUCZkEJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEQFAmZ6BQJmeQkAzAgCBQJhQwkAzAgCBQFpCQDMCAIFAWoFA25pbAUDbmlsBAJmQgkBAmJwAwkApwMBCQECYXUBBQJicQkApwMBCQECYXUBBQJicgUBaAMJAAACBQJmQgUCZkIEAmROCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJkTAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlcFAmRNBQJibQYGBgUCY3gFAmJSBAJkTwgFAmROAl8yBAJkUAgFAmROAl83BAJjbggFAmROAl85BAJjWAgFAmROA18xMAQCY1kIBQJkTgNfMTEEAmZDCQECYmoDCQC2AgEFAmRPCQC2AgEFAmZxCQC2AgEFAmJtBAJjVwkAoAMBCAUCZkMCXzIEAmZqCQD8BwQFAmFCAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAMJAAACBQJmagUCZmoEAmZrBAJhdgUCZmoDCQABAgUCYXYCB0FkZHJlc3MEAmZsBQJhdgkA/AcEBQJmbAIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmsFAmZrBAJmbQMJAGYCBQJjWAAACQD8BwQFAmZpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZtBQJmbQQCZm4DCQBmAgUCY1kAAAkA/AcEBQJmaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlcFAmNZBQNuaWwFA25pbAMJAAACBQJmbgUCZm4EAmZvAwUCZmYEAmZwCQD8BwQFAmZoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkUAUCY1cFA25pbAMJAAACBQJmcAUCZnAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHIGY2FsbGVyBQJjVwUCZFAFA25pbAQCZWkDCQBmAgUCYk8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCYk8JANkEAQUCYlIFA25pbAUDbmlsCQDOCAIJAM4IAgUCY24FAmZvBQJlaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgELcHV0T25lVGtuVjICAmRTAmZmAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkegkBAmFHAAQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJkVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR6BQF2BAJkWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR6BQF3BAJiVAMJAAACCAUCZHIGY2FsbGVyBQR0aGlzCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHIGY2FsbGVyBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCYlIJANgEAQkBBXZhbHVlAQgFAmRzB2Fzc2V0SWQEAmN4CAUCZHMGYW1vdW50AwkAZgIAgK3iBAUCY3gJAAIBAg1Xcm9uZyBwbXQgYW10BAJjSgkBAmR4BAUCY3gFAmJSCQClCAEFAmJUCQDYBAEIBQJkcg10cmFuc2FjdGlvbklkBAJkTwgFAmNKAl8yBAJkUAgFAmNKAl83BAJjbggFAmNKAl85BAJjWAgFAmNKA18xMAQCY1kIBQJjSgNfMTEEAmNXAwMJAGYCBQJkUwAACQBmAgUCZFMFAmRPBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZFMFA25pbAIABQJkTwQCZmoJAPwHBAUCYUICBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsEAmF2BQJmagMJAAECBQJhdgIHQWRkcmVzcwQCZmwFAmF2CQD8BwQFAmZsAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmawUCZmsEAmZtAwkAZgIFAmNYAAAJAPwHBAUCYU4CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJjWAUDbmlsBQNuaWwDCQAAAgUCZm0FAmZtBAJmbgMJAGYCBQJjWQAACQD8BwQFAmFOAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVwUCY1kFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8DBQJmZgQCZnAJAPwHBAUCYU0CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRQBQJjVwUDbmlsAwkAAAIFAmZwBQJmcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcgZjYWxsZXIFAmNXBQJkUAUDbmlsBAJiTwgJAQJiTQEFAmN4Al8yBAJlaQMJAGYCBQJiTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFGBQJiTwkA2QQBBQJiUgUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNuBQJmbwUCZWkFAmNXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyARZwdXRPbmVUa25WMk9sZFJFQURPTkxZAgJmRAJmRQQCY0oJAQJkeAQFAmZEBQJmRQIAAgAEAmRPCAUCY0oCXzIEAmRQCAUCY0oCXzcEAmNuCAUCY0oCXzkEAmNYCAUCY0oDXzEwBAJjWQgFAmNKA18xMQkAlAoCBQNuaWwFAmRPAmRyARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmRAJmRQQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY0oJAQJkeAQFAmZEBQJmRQIAAgAEAmRPCAUCY0oCXzIEAmNnCAUCY0oCXzMEAmZGCAUCY0oCXzYEAmRQCAUCY0oCXzcEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJmRwkAawMFAmNkBQFhBQJjYgQCZkgJAGsDBQJmRAUBYQkAZAIFAmZHBQFhBAJmSQkAZQIFAmZEBQJmSAQCZkoJAGsDBQJmRgUCZkkFAmNkBAJmSwkAawMJAGUCBQJkTwUCZkoFAWEFAmZKBAJiTwgJAQJiTQEFAmZEAl8yCQCUCgIFA25pbAkAlQoDBQJkTwUCYk8FAmZLAmRyAQpwdXRGb3JGcmVlAQJmTAMJAGYCAAAFAmZMCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmROCQECZHQKCQClCAEIBQJkcgZjYWxsZXIJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRyCHBheW1lbnRzAAEFAmZMBwcGAAACAAgFAmROAl85AmRyAQNnZXQABAJjSgkBAmRxAQUCZHIEAmZNCAUCY0oCXzEEAmNtCAUCY0oCXzIEAmN4CAUCY0oCXzMEAmJSCAUCY0oCXzQEAmNuCAUCY0oCXzUEAmVQCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVQBQJlUAUCY24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBCWdldE9uZVRrbgUCZk4CZk8CZlACZFICYm0DCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJECQECYUcABAJiVQkAkQMCBQJiRAUBcwQCYlYJAJEDAgUCYkQFAXQEAmJXCQCRAwIFAmJEBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCZmcJAQJhSwAEAmZyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmZwUBQgIKV3Igc2wgYWRkcgQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmZ0CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhZAACAAQCYlQDCQAAAgUCZnQJAKUIAQgFAmRyBmNhbGxlcggFAmRyDG9yaWdpbkNhbGxlcggFAmRyBmNhbGxlcgQCYlEJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAlOvcAwUCY3gJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJibQYJAGYCAAAFAmZOBgkAZgIAAAUCZlAJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiVQkA2AQBBQJiUgkAAgECCFdyb25nIExQBAJjSgkBAmJQBAkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCY3gIBQJkcgZjYWxsZXIEAmZRCAUCY0oCXzEEAmZSCAUCY0oCXzIEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJmUwMJAAACBQJkUgUCYlYJAJkKBwkAZQIFAmNiBQJmUQkAZQIFAmNkBQJmUgUCZk4FAmZSAAAAAAkAZAIFAmZRBQJmTgMJAAACBQJkUgUCYlcJAJkKBwkAZQIFAmNiBQJmUQkAZQIFAmNkBQJmUgAAAAAFAmZOBQJmUQkAZAIFAmZSBQJmTgkAAgECEHdyb25nIG91dEFzc2V0SWQEAmRDCAUCZlMCXzEEAmRECAUCZlMCXzIEAmZ4CAUCZlMCXzMEAmZ5CAUCZlMCXzQEAmZ6CAUCZlMCXzUEAmZBCAUCZlMCXzYEAmZUCAUCZlMCXzcDAwkAZgIAAAUCZngGCQBmAgAABQJmegkAAgECCldyb25nIGNhbGMEAmJyCQD8BwQFAmZyAgVjYWxjRAkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZEQJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCYnEJAPwHBAUCZnICBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkQwUCZngFAmZBCQDMCAIJAKQDAQkAZQIJAGQCBQJkRAUCZnkFAmZ6CQDMCAIFAmFDCQDMCAIFAWkJAMwIAgUBagUDbmlsBQNuaWwEAmZCCQECYnADCQCnAwEJAQJhdQEFAmJxCQCnAwEJAQJhdQEFAmJyBQFoAwkAAAIFAmZCBQJmQgQCZWEICQECYk0BBQJmVAJfMQQCZlUJAQJiagMJALYCAQUCZWEJALYCAQUCZlAJALYCAQUCYm0DCQAAAgUCZlUFAmZVBAJmVgMJAAACBQJkUgUCYlYJAJQKAgkAoAMBCAUCZlUCXzIAAAkAlAoCAAAJAKADAQgFAmZVAl8yBAJlZAgFAmZWAl8xBAJlZQgFAmZWAl8yBAJlYgkAZAIFAmVkBQJlZQQCYk8JAGUCBQJmVAUCZWEEAmVoAwkAAAIFAmRSAgVXQVZFUwUEdW5pdAkA2QQBBQJkUgQCZWkDCQBmAgUCYk8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCYk8FAmVoBQNuaWwFA25pbAQCZWYJAQJiZwIJAQFEAgUCY2QFAmJZCQEBRAIFAmNiBQJiWAQCZWcJAQFHAgUCZWYFAWEEAmNuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJUBQJlYgUCZWgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAmJUBQJiUQkBAmJhBgUCZWQFAmVlBQJjeAUCZWcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZWcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWcFA25pbAMJAAACBQJjbgUCY24EAmVqCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVqBQJlagkAzggCBQJjbgUCZWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBC2dldE9uZVRrblYyAgJkUgJkUwQCZlcJAQJkUQYFAmRSBQJkUwgFAmRyCHBheW1lbnRzCAUCZHIGY2FsbGVyCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHINdHJhbnNhY3Rpb25JZAQCY24IBQJmVwJfMQQCZWIIBQJmVwJfMgkAlAoCBQJjbgUCZWICZHIBFmdldE9uZVRrblYyT2xkUkVBRE9OTFkCAmRSAmZYBAJkegkBAmFHAAQCYlUJAJEDAgUCZHoFAXMEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY0oJAQJiUAQCAAUCYlUFAmZYBQR0aGlzBAJmUQgFAmNKAl8xBAJmUggFAmNKAl8yBAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZEMJAGUCBQJjYgUCZlEEAmRECQBlAgUCY2QFAmZSBAJmWQMJAAACBQJkUgUCYlYJAJYKBAUCZEQFAmRDBQJmUgUCZlEDCQAAAgUCZFIFAmJXCQCWCgQFAmRDBQJkRAUCZlEFAmZSCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZloIBQJmWQJfMQQCZ2EIBQJmWQJfMgQCZ2IIBQJmWQJfMwQCZ2MIBQJmWQJfNAQCZ2QAAQQCZk4KAAJkSgkA/AcEBQJhTwIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUCZ2IJAMwIAgkApAMBBQJmWgkAzAgCCQCkAwEFAmdhCQDMCAICAAkAzAgCBQJhQwkAzAgCBQFpCQDMCAIJAKQDAQUCZ2QJAMwIAgUBagUDbmlsBQNuaWwDCQABAgUCZEoCA0ludAUCZEoJAAIBCQCsAgIJAAMBBQJkSgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJmVAkAZAIFAmZOBQJnYwQCZ2UJAQJiTQEFAmZUBAJlYQgFAmdlAl8xBAJiTwgFAmdlAl8yCQCUCgIFA25pbAkAlAoCBQJlYQUCYk8CZHIBE2dldE9uZVRrblYyUkVBRE9OTFkCAmRSAmZYBAJkegkBAmFHAAQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJiVQkAkQMCBQJkegUBcwQCZWwJAMwIAgkAtgIBCQECYmUBBQJiVgkAzAgCCQC2AgEJAQJiZQEFAmJXBQNuaWwEAmdmCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYnIJAQJlawEFAmVsBAJicQkAuAICBQJicgkAvAIDCQC2AgEFAmZYBQJicgUCZ2YEAmdnAwkAAAIFAmRSBQJiVgAAAAEEAmdoCQECZUwDBQJlbAUCZ2cFAmJxBAJnaQkAuAICCQCRAwIFAmVsBQJnZwUCZ2gEAmZUCQCgAwEJALgCAgUCZ2kFAWYEAmdqCQECYk0BBQJmVAQCZWEIBQJnagJfMQQCYk8IBQJnagJfMgkAlAoCBQNuaWwJAJQKAgUCZWEFAmJPAmRyARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJkUgJmWAQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCYlUJAJEDAgUCZHoFAXMEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJnawoAAmRKCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZFIJAMwIAgUCZlgFA25pbAUDbmlsAwkAAQIFAmRKAgooSW50LCBJbnQpBQJkSgkAAgEJAKwCAgkAAwEFAmRKAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlYQgFAmdrAl8xBAJiTwgFAmdrAl8yBAJjSgkBAmJQBAIABQJiVQUCZlgFBHRoaXMEAmNsCAUCY0oCXzEEAmNtCAUCY0oCXzIEAmdsCQBkAgUCY2wFAmNtBAJmSwkAawMJAGUCBQJlYQUCZ2wFAWEFAmdsCQCUCgIFA25pbAkAlQoDBQJlYQUCYk8FAmZLAmRyAQlnZXROb0xlc3MCAmdtAmduBAJjSgkBAmRxAQUCZHIEAmNsCAUCY0oCXzEEAmNtCAUCY0oCXzIEAmN4CAUCY0oCXzMEAmJSCAUCY0oCXzQEAmNuCAUCY0oCXzUDCQBmAgUCZ20FAmNsCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNsAgMgPCAJAKQDAQUCZ20DCQBmAgUCZ24FAmNtCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY20CAyA8IAkApAMBBQJnbgQCZ28JAPwHBAUCYUICBGJ1cm4JAMwIAgUCY3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmN4BQNuaWwDCQAAAgUCZ28FAmdvBQJjbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgENdW5zdGFrZUFuZEdldAECYk4EAmdwAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmdwBQJncAQCYkQJAQJhRwAEAmdxCQECYUsABAJkUAkA2QQBCQCRAwIFAmJEBQFzBAJncgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3EFAXoCCldyIHN0IGFkZHIEAmdzCQD8BwQFAmdyAgd1bnN0YWtlCQDMCAIJANgEAQUCZFAJAMwIAgUCYk4FA25pbAUDbmlsAwkAAAIFAmdzBQJncwQCY0oJAQJiUAQJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQJANgEAQUCZFAFAmJOCAUCZHIGY2FsbGVyBAJiWgkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNuCAUCY0oDXzEwBAJndAMDCQECYUQABgkAAAIFAmJaBQFwCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCYloGAwkAAAIFAmd0BQJndAQCZ3UJAPwHBAUCYUICBGJ1cm4JAMwIAgUCYk4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZFAFAmJOBQNuaWwDCQAAAgUCZ3UFAmd1BQJjbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ3YCZFICZFMEAmdwAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmdwBQJncAQCYkQJAQJhRwAEAmdxCQECYUsABAJkUAkA2QQBCQCRAwIFAmJEBQFzBAJncgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3EFAXoCCldyIHN0IGFkZHIEAmdzCQD8BwQFAmdyAgd1bnN0YWtlCQDMCAIJANgEAQUCZFAJAMwIAgUCZ3YFA25pbAUDbmlsAwkAAAIFAmdzBQJncwQCZ3cJAQJkUQYFAmRSBQJkUwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZFAFAmd2BQNuaWwIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcg10cmFuc2FjdGlvbklkBAJjbggFAmd3Al8xBAJlYggFAmd3Al8yCQCUCgIFAmNuBQJlYgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgETcHV0T25lVGtuVjJSRUFET05MWQICYk4CZ3gEAmR6CQECYUcABAJiVgkAkQMCBQJkegUBdAQCYlcJAJEDAgUCZHoFAXUEAmJVCQCRAwIFAmR6BQFzBAJneQUCZ3gEAmZ1BQJiTgQCZ3oJAQJiTQEFAmZ1BAJmRAgFAmd6Al8xBAJiTwgFAmd6Al8yBAJnQQMJAAACBQJneQUCYlYJAJQKAgUCZkQAAAMJAAACBQJneQUCYlcJAJQKAgAABQJmRAkAAgECD2ludmFsaWQgcGF5bWVudAQCZ0IIBQJnQQJfMQQCZ0MIBQJnQQJfMgQCZ0QJAQJiZQEFAmJWBAJnRQkBAmJlAQUCYlcEAmdGCQBkAgUCZ0QFAmdCBAJnRwkAZAIFAmdEBQJnQwQCYnIJAQJlawEJAMwIAgkAtgIBBQJnRAkAzAgCCQC2AgEFAmdFBQNuaWwEAmJxCQECZWsBCQDMCAIJALYCAQUCZ0YJAMwIAgkAtgIBBQJnRwUDbmlsBAJnZgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmdICQC6AgIJALkCAgUCZ2YJALgCAgUCYnEFAmJyBQJicgkAlAoCBQNuaWwJAKADAQUCZ0gCZHIBCGFjdGl2YXRlAgJnSQJnSgMJAQIhPQIJAKUIAQgFAmRyBmNhbGxlcgkApQgBBQJhQgkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmdJCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmdKBQNuaWwCB3N1Y2Nlc3MCZHIBBHNldFMCAmdLAmd0AwkBAiE9AgkApQgBCAUCZHIGY2FsbGVyCQECYXgCBQR0aGlzCQECYWQABQJlWAkAzAgCCQELU3RyaW5nRW50cnkCBQJnSwUCZ3QFA25pbAJkcgEEc2V0SQICZ0sCZ3QDCQECIT0CCQClCAEIBQJkcgZjYWxsZXIJAQJheAIFBHRoaXMJAQJhZAAFAmVYCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJnSwUCZ3QFA25pbAJkcgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUcAAmRyARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiZgkAlAoCBQNuaWwJAQJiZQEFAmJmAmRyARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieAJieQJiQwQCZ0wJAQJiQgMFAmJ4BQJieQUCYkMJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJnTAAACQDMCAIJAKYDAQkAkQMCBQJnTAABCQDMCAIJAKYDAQkAkQMCBQJnTAACBQNuaWwCZHIBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgCZ00JAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUCZ00CZHIBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkcgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiaAJiaQkAlAoCBQNuaWwJAKYDAQkBAmJnAgkApwMBBQJiaAkApwMBBQJiaQJkcgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJRAmJtAmNwAmNxAmNyAmNzAmdOAmN0AmN1CQCUCgIFA25pbAkBAmNvDQUCYlEFAmJtBQJjcAUCY3EFAmNyBQJjcwUCZ04FAmN0BQJjdQYHAAACAAJkcgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJRAmdPAmJTAmdOBAJjSgkBAmJQBAUCYlEFAmdPBQJiUwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ04JAJQKAgUDbmlsCQCcCgoIBQJjSgJfMQgFAmNKAl8yCAUCY0oCXzMIBQJjSgJfNAgFAmNKAl81CAUCY0oCXzYIBQJjSgJfNwkApgMBCAUCY0oCXzgIBQJjSgJfOQgFAmNKA18xMAJkcgEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWYBAmdQAQJnUQAEAmdSBAJhdgkBAmVWAAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZVoFAmF2BQJlWgMJAAECBQJhdgIEVW5pdAgFAmdQD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdgUCZ1ADCQABAgUCYXYCBU9yZGVyBAJkZQUCYXYEAmdTCQECYUUABAJnVAkBAmRkAQUCZGUEAmdVCQD0AwMIBQJkZQlib2R5Qnl0ZXMJAJEDAggFAmRlBnByb29mcwAACAUCZGUPc2VuZGVyUHVibGljS2V5BAJnVgkA9AMDCAUCZGUJYm9keUJ5dGVzCQCRAwIIBQJkZQZwcm9vZnMAAQUCZ1MDAwMFAmdUBQJnVQcFAmdWBwYJAQJhcQMFAmdUBQJnVQUCZ1YDCQABAgUCYXYCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlcgUCYXYEAmdXCQD2AwEJAQV2YWx1ZQEIBQJlcgZzY3JpcHQEAmdYCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUIJAQJhbwAEAmdZCQDxBwEFBHRoaXMDAwkAAAIFAmdYBQJnVwkBAiE9AgUCZ1kFAmdXBwYJAPQDAwgFAmdQCWJvZHlCeXRlcwkAkQMCCAUCZ1AGcHJvb2ZzAAAFAmdSCQD0AwMIBQJnUAlib2R5Qnl0ZXMJAJEDAggFAmdQBnByb29mcwAABQJnUlGUl4I=", "chainId": 84, "height": 2260377, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7zXB8umsr8XLVrF7M8aJyWLr8VbMSDBHcxu82WyZeUiS Next: 8UttPyPvEACdcPQEKytncB94ie659AULnUyGUmQ9BT7z Diff:
OldNewDifferences
1313
1414 let f = toBigInt(1)
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = toBigInt(2)
1717
18-let h = "100"
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = "1"
20+let i = "100"
2121
22-let j = "__"
22+let j = "1"
2323
24-let k = ""
24+let k = "__"
2525
26-let l = 1
26+let l = ""
2727
28-let m = 2
28+let m = 1
2929
30-let n = 3
30+let n = 2
3131
32-let o = 4
32+let o = 3
3333
34-let p = 1
34+let p = 4
3535
36-let q = 2
36+let q = 1
3737
38-let r = 3
38+let r = 2
3939
40-let s = 4
40+let s = 3
4141
42-let t = 5
42+let t = 4
4343
44-let u = 6
44+let u = 5
4545
46-let v = 7
46+let v = 6
4747
48-let w = 8
48+let w = 7
4949
50-let x = 9
50+let x = 8
5151
52-let y = 1
52+let y = 9
5353
54-let z = 7
54+let z = 1
5555
56-let A = 10
56+let A = 7
5757
58-let B = fraction(5, a, 10000)
58+let B = 10
5959
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
60+let C = fraction(5, a, 10000)
61+
62+func D (E,F) = fraction(toBigInt(E), c, toBigInt(F))
6163
6264
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), c))
6466
6567
66-func I (J,K,L) = fraction(J, K, L)
68+func J (K,L,M) = fraction(K, L, M)
6769
6870
69-func M (G) = if ((d > G))
70- then -(G)
71- else G
71+func N (H) = if ((d > H))
72+ then -(H)
73+ else H
7274
7375
74-func N (G) = if ((d > G))
75- then -(G)
76- else G
76+func O (H) = if ((d > H))
77+ then -(H)
78+ else H
7779
7880
79-func O () = "%s__factoryContract"
81+func P () = "%s__factoryContract"
8082
8183
82-func P () = "%s__managerPublicKey"
84+func Q () = "%s__managerPublicKey"
8385
8486
85-func Q () = "%s__pendingManagerPublicKey"
87+func R () = "%s__pendingManagerPublicKey"
8688
8789
88-func R () = "%s%s__price__last"
90+func S () = "%s%s__price__last"
8991
9092
91-func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
93+func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], k)
9294
9395
94-func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
96+func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9597
9698
97-func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
99+func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
98100
99101
100-func Z () = "%s__amountAsset"
102+func aa () = "%s__amountAsset"
101103
102104
103-func aa () = "%s__priceAsset"
105+func ab () = "%s__priceAsset"
104106
105107
106-func ab () = "%s__amp"
108+func ac () = "%s__amp"
107109
108110
109-func ac () = "%s__addonAddr"
111+func ad () = "%s__addonAddr"
110112
111113
112-let ad = "%s__fee"
114+let ae = "%s__fee"
113115
114-let ae = valueOrElse(getInteger(this, ad), B)
116+let af = valueOrElse(getInteger(this, ae), C)
115117
116-func af () = "%s__factoryConfig"
118+func ag () = "%s__factoryConfig"
117119
118120
119-func ag () = "%s%s__matcher__publicKey"
121+func ah () = "%s%s__matcher__publicKey"
120122
121123
122-func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
124+func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
123125
124126
125-func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
127+func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
126128
127129
128-func am () = "%s__shutdown"
130+func an () = "%s__shutdown"
129131
130132
131-func an () = "%s__allowedLpStableScriptHash"
133+func ao () = "%s__allowedLpStableScriptHash"
132134
133135
134-func ao () = "%s__feeCollectorAddress"
136+func ap () = "%s__feeCollectorAddress"
135137
136138
137-func ap (aq,ar,as) = throw(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
139+func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
138140
139141
140-func at (G) = {
141- let au = G
142- if ($isInstanceOf(au, "String"))
142+func au (H) = {
143+ let av = H
144+ if ($isInstanceOf(av, "String"))
143145 then {
144- let av = au
145- av
146+ let aw = av
147+ aw
146148 }
147149 else throw("fail cast to String")
148150 }
149151
150152
151-func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
153+func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
152154
153155
154-func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
156+func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
155157
156158
157-let aA = addressFromStringValue(aw(this, O()))
159+let aB = addressFromStringValue(ax(this, P()))
158160
159-let aB = aw(this, ab())
161+let aC = ax(this, ac())
160162
161-func aC () = valueOrElse(getBoolean(aA, am()), false)
163+func aD () = valueOrElse(getBoolean(aB, an()), false)
162164
163165
164-func aD () = fromBase58String(aw(aA, ag()))
166+func aE () = fromBase58String(ax(aB, ah()))
165167
166168
167-let aE = addressFromStringValue(aw(aA, ao()))
169+let aF = addressFromStringValue(ax(aB, ap()))
168170
169-func aF () = {
170- let aG = aw(this, Z())
171- let aH = aw(this, aa())
172- let aI = az(aA, ak(aH))
173- let ai = az(aA, ak(aG))
174- split(aw(aA, ah(toString(ai), toString(aI))), j)
171+func aG () = {
172+ let aH = ax(this, aa())
173+ let aI = ax(this, ab())
174+ let aJ = aA(aB, al(aI))
175+ let aj = aA(aB, al(aH))
176+ split(ax(aB, ai(toString(aj), toString(aJ))), k)
175177 }
176178
177179
178-func aJ () = split(aw(aA, af()), j)
180+func aK () = split(ax(aB, ag()), k)
179181
180182
181-let aK = aJ()
183+let aL = aK()
182184
183-let aL = valueOrErrorMessage(addressFromString(aK[y]), "Invalid staking contract address")
185+let aM = valueOrErrorMessage(addressFromString(aL[z]), "Invalid staking contract address")
184186
185-let aM = valueOrErrorMessage(addressFromString(aK[z]), "Invalid slipage contract address")
187+let aN = valueOrErrorMessage(addressFromString(aL[A]), "Invalid slipage contract address")
186188
187-let aN = valueOrErrorMessage(addressFromString(aK[A]), "Invalid gwx contract address")
189+let aO = valueOrErrorMessage(addressFromString(aL[B]), "Invalid gwx contract address")
188190
189-func aO (aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY)], j)
191+func aP (aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ)], k)
190192
191193
192-func aZ (ba,bb,bc,aS,aV,aW) = makeString(["%d%d%d%d%d%d", toString(ba), toString(bb), toString(bc), toString(aS), toString(aV), toString(aW)], j)
194+func ba (bb,bc,bd,aT,aW,aX) = makeString(["%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(aT), toString(aW), toString(aX)], k)
193195
194196
195-func bd (be) = if ((be == "WAVES"))
197+func be (bf) = if ((bf == "WAVES"))
196198 then wavesBalance(this).available
197- else assetBalance(this, fromBase58String(be))
199+ else assetBalance(this, fromBase58String(bf))
198200
199201
200-func bf (bg,bh) = fraction(bg, c, bh)
202+func bg (bh,bi) = fraction(bh, c, bi)
201203
202204
203-func bi (bj,bk,bl) = {
204- let bm = fraction((bj - bk), b, bk)
205- let bn = ((bl - M(bm)) > d)
206- if (!(bn))
207- then throw(("Big slpg: " + toString(bm)))
208- else $Tuple2(bn, min([bj, bk]))
205+func bj (bk,bl,bm) = {
206+ let bn = fraction((bk - bl), b, bl)
207+ let bo = ((bm - N(bn)) > d)
208+ if (!(bo))
209+ then throw(("Big slpg: " + toString(bn)))
210+ else $Tuple2(bo, min([bk, bl]))
209211 }
210212
211213
212-func bo (bp,bq,br) = {
213- let bm = fraction(bq, b, bp)
214- let bs = (br > bm)
215- if (if (bs)
214+func bp (bq,br,bs) = {
215+ let bn = fraction(br, b, bq)
216+ let bt = (bs > bn)
217+ if (if (bt)
216218 then true
217- else (bq > bp))
218- then throw(((((((toString(bq) + " ") + toString(bp)) + " ") + toString(bm)) + " ") + toString(br)))
219- else bs
219+ else (br > bq))
220+ then throw(((((((toString(br) + " ") + toString(bq)) + " ") + toString(bn)) + " ") + toString(bs)))
221+ else bt
220222 }
221223
222224
223-func bt (bu,bv,bw,bx) = {
224- let by = C(bw, bu)
225- let bz = C(bx, bv)
226- bf(bz, by)
225+func bu (bv,bw,bx,by) = {
226+ let bz = D(bx, bv)
227+ let bA = D(by, bw)
228+ bg(bA, bz)
227229 }
228230
229231
230-func bA (bw,bx,bB) = {
231- let bC = aF()
232- let bD = parseIntValue(bC[u])
233- let bE = parseIntValue(bC[v])
234- let bF = bt(bD, bE, bw, bx)
235- let bh = C(bw, bD)
236- let bg = C(bx, bE)
237- let bG = C(bB, a)
238- let bH = bf(bh, bG)
239- let bI = bf(bg, bG)
240-[bF, bH, bI]
232+func bB (bx,by,bC) = {
233+ let bD = aG()
234+ let bE = parseIntValue(bD[v])
235+ let bF = parseIntValue(bD[w])
236+ let bG = bu(bE, bF, bx, by)
237+ let bi = D(bx, bE)
238+ let bh = D(by, bF)
239+ let bH = D(bC, a)
240+ let bI = bg(bi, bH)
241+ let bJ = bg(bh, bH)
242+[bG, bI, bJ]
241243 }
242244
243245
244-func bJ (bw,bx,bB) = {
245- let bK = bA(bw, bx, bB)
246-[F(bK[0], a), F(bK[1], a), F(bK[2], a)]
246+func bK (bx,by,bC) = {
247+ let bL = bB(bx, by, bC)
248+[G(bL[0], a), G(bL[1], a), G(bL[2], a)]
247249 }
248250
249251
250-func bL (bM) = {
251- let bN = fraction(bM, ae, a)
252- $Tuple2((bM - bN), bN)
252+func bM (bN) = {
253+ let bO = fraction(bN, af, a)
254+ $Tuple2((bN - bO), bO)
253255 }
254256
255257
256-func bO (bP,bQ,bR,bS) = {
257- let bC = aF()
258- let bT = bC[r]
259- let bU = bC[s]
260- let bV = bC[t]
261- let bW = parseIntValue(bC[u])
262- let bX = parseIntValue(bC[v])
263- let bY = bC[q]
264- let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bT)), "Wrong LP id").quantity
265- if ((bT != bQ))
258+func bP (bQ,bR,bS,bT) = {
259+ let bD = aG()
260+ let bU = bD[s]
261+ let bV = bD[t]
262+ let bW = bD[u]
263+ let bX = parseIntValue(bD[v])
264+ let bY = parseIntValue(bD[w])
265+ let bZ = bD[r]
266+ let ca = valueOrErrorMessage(assetInfo(fromBase58String(bU)), "Wrong LP id").quantity
267+ if ((bU != bR))
266268 then throw("Wrong pmt asset")
267269 else {
268- let ca = bd(bU)
269- let cb = C(ca, bW)
270- let cc = bd(bV)
271- let cd = C(cc, bX)
272- let ce = bf(cd, cb)
273- let cf = F(ce, a)
274- let cg = C(bR, a)
275- let ch = C(bZ, a)
276- let ci = fraction(cb, cg, ch)
277- let cj = fraction(cd, cg, ch)
278- let ck = F(ci, bW)
279- let cl = F(cj, bX)
280- let cm = if ((bP == ""))
270+ let cb = be(bV)
271+ let cc = D(cb, bX)
272+ let cd = be(bW)
273+ let ce = D(cd, bY)
274+ let cf = bg(ce, cc)
275+ let cg = G(cf, a)
276+ let ch = D(bS, a)
277+ let ci = D(ca, a)
278+ let cj = fraction(cc, ch, ci)
279+ let ck = fraction(ce, ch, ci)
280+ let cl = G(cj, bX)
281+ let cm = G(ck, bY)
282+ let cn = if ((bQ == ""))
281283 then nil
282- else [ScriptTransfer(bS, ck, if ((bU == "WAVES"))
284+ else [ScriptTransfer(bT, cl, if ((bV == "WAVES"))
283285 then unit
284- else fromBase58String(bU)), ScriptTransfer(bS, cl, if ((bV == "WAVES"))
286+ else fromBase58String(bV)), ScriptTransfer(bT, cm, if ((bW == "WAVES"))
285287 then unit
286- else fromBase58String(bV)), StringEntry(Y(toString(bS), bP), aZ(ck, cl, bR, cf, height, lastBlock.timestamp)), IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf)]
287- $Tuple10(ck, cl, bU, bV, ca, cc, bZ, ce, bY, cm)
288+ else fromBase58String(bW)), StringEntry(Z(toString(bT), bQ), ba(cl, cm, bS, cg, height, lastBlock.timestamp)), IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg)]
289+ $Tuple10(cl, cm, bV, bW, cb, cd, ca, cf, bZ, cn)
288290 }
289291 }
290292
291293
292-func cn (bP,bl,co,cp,cq,cr,bS,cs,ct,cu,cv,cw,cx) = {
293- let bC = aF()
294- let bT = fromBase58String(bC[r])
295- let cy = bC[s]
296- let cz = bC[t]
297- let cA = bC[w]
298- let cB = bC[x]
299- let cC = parseIntValue(bC[u])
300- let cD = parseIntValue(bC[v])
301- let bY = bC[q]
302- let cE = valueOrErrorMessage(assetInfo(bT), "Wr lp as").quantity
303- let ca = if (cs)
304- then bd(cy)
305- else if (if (cu)
306- then (cx == cy)
294+func co (bQ,bm,cp,cq,cr,cs,bT,ct,cu,cv,cw,cx,cy) = {
295+ let bD = aG()
296+ let bU = fromBase58String(bD[s])
297+ let cz = bD[t]
298+ let cA = bD[u]
299+ let cB = bD[x]
300+ let cC = bD[y]
301+ let cD = parseIntValue(bD[v])
302+ let cE = parseIntValue(bD[w])
303+ let bZ = bD[r]
304+ let cF = valueOrErrorMessage(assetInfo(bU), "Wr lp as").quantity
305+ let cb = if (ct)
306+ then be(cz)
307+ else if (if (cv)
308+ then (cy == cz)
307309 else false)
308- then (bd(cy) - cw)
309- else if (cu)
310- then bd(cy)
311- else (bd(cy) - co)
312- let cc = if (cs)
313- then bd(cz)
314- else if (if (cu)
315- then (cx == cz)
310+ then (be(cz) - cx)
311+ else if (cv)
312+ then be(cz)
313+ else (be(cz) - cp)
314+ let cd = if (ct)
315+ then be(cA)
316+ else if (if (cv)
317+ then (cy == cA)
316318 else false)
317- then (bd(cz) - cw)
318- else if (cu)
319- then bd(cz)
320- else (bd(cz) - cq)
321- let cF = C(co, cC)
322- let cG = C(cq, cD)
323- let cH = bf(cG, cF)
324- let cb = C(ca, cC)
325- let cd = C(cc, cD)
326- let cI = if ((cE == 0))
319+ then (be(cA) - cx)
320+ else if (cv)
321+ then be(cA)
322+ else (be(cA) - cr)
323+ let cG = D(cp, cD)
324+ let cH = D(cr, cE)
325+ let cI = bg(cH, cG)
326+ let cc = D(cb, cD)
327+ let ce = D(cd, cE)
328+ let cJ = if ((cF == 0))
327329 then {
328- let ce = d
329- let cJ = d
330- let bG = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
331- $Tuple5(F(bG, a), F(cF, cC), F(cG, cD), bf((cd + cG), (cb + cF)), cJ)
330+ let cf = d
331+ let cK = d
332+ let bH = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
333+ $Tuple5(G(bH, a), G(cG, cD), G(cH, cE), bg((ce + cH), (cc + cG)), cK)
332334 }
333335 else {
334- let ce = bf(cd, cb)
335- let cK = fraction(M((ce - cH)), c, ce)
336- let cJ = C(bl, a)
337- if (if (if (cv)
338- then (ce != d)
336+ let cf = bg(ce, cc)
337+ let cL = fraction(N((cf - cI)), c, cf)
338+ let cK = D(bm, a)
339+ if (if (if (cw)
340+ then (cf != d)
339341 else false)
340- then (cK > cJ)
342+ then (cL > cK)
341343 else false)
342- then throw(((("Price slippage " + toString(cK)) + " > ") + toString(cJ)))
344+ then throw(((("Price slippage " + toString(cL)) + " > ") + toString(cK)))
343345 else {
344- let cL = C(cE, a)
345- let cM = fraction(cF, ce, c)
346- let cN = fraction(cG, c, ce)
347- let cO = if ((cM > cG))
348- then $Tuple2(cN, cG)
349- else $Tuple2(cF, cM)
350- let cP = cO._1
351- let cQ = cO._2
352- let bG = fraction(cL, cQ, cd)
353- $Tuple5(F(bG, a), F(cP, cC), F(cQ, cD), ce, cJ)
346+ let cM = D(cF, a)
347+ let cN = fraction(cG, cf, c)
348+ let cO = fraction(cH, c, cf)
349+ let cP = if ((cN > cH))
350+ then $Tuple2(cO, cH)
351+ else $Tuple2(cG, cN)
352+ let cQ = cP._1
353+ let cR = cP._2
354+ let bH = fraction(cM, cR, ce)
355+ $Tuple5(G(bH, a), G(cQ, cD), G(cR, cE), cf, cK)
354356 }
355357 }
356- let cR = cI._1
357- let cS = cI._2
358- let cT = cI._3
359- let cf = F(cI._4, a)
360- let cU = F(cI._5, a)
361- if ((0 >= cR))
358+ let cS = cJ._1
359+ let cT = cJ._2
360+ let cU = cJ._3
361+ let cg = G(cJ._4, a)
362+ let cV = G(cJ._5, a)
363+ if ((0 >= cS))
362364 then throw("LP <= 0")
363365 else {
364- let cV = if (!(ct))
366+ let cW = if (!(cu))
365367 then 0
366- else cR
367- let cW = (co - cS)
368- let cX = (cq - cT)
369- let cY = if (if (cu)
370- then (cx == cy)
368+ else cS
369+ let cX = (cp - cT)
370+ let cY = (cr - cU)
371+ let cZ = if (if (cv)
372+ then (cy == cz)
371373 else false)
372- then $Tuple2(cw, 0)
373- else if (if (cu)
374- then (cx == cz)
374+ then $Tuple2(cx, 0)
375+ else if (if (cv)
376+ then (cy == cA)
375377 else false)
376- then $Tuple2(0, cw)
377- else $Tuple2(cS, cT)
378- let cZ = cY._1
379- let da = cY._2
380- let db = [IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf), StringEntry(V(bS, bP), aO(cZ, da, cV, cf, bl, cU, height, lastBlock.timestamp, cW, cX))]
381- $Tuple13(cR, cV, cf, ca, cc, cE, bT, bY, db, cW, cX, cp, cr)
378+ then $Tuple2(0, cx)
379+ else $Tuple2(cT, cU)
380+ let da = cZ._1
381+ let db = cZ._2
382+ let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, bQ), aP(da, db, cW, cg, bm, cV, height, lastBlock.timestamp, cX, cY))]
383+ $Tuple13(cS, cW, cg, cb, cd, cF, bU, bZ, dc, cX, cY, cq, cs)
382384 }
383385 }
384386
385387
386-func dc (dd) = {
387- let bC = aF()
388- let de = bC[s]
389- let df = bC[t]
390- let bY = parseIntValue(bC[q])
391- let bD = parseIntValue(bC[u])
392- let bE = parseIntValue(bC[v])
393- let dg = bd(de)
394- let dh = bd(df)
395- let ce = if ((dd.orderType == Buy))
396- then bt(bD, bE, (dg + dd.amount), dh)
397- else bt(bD, bE, (dg - dd.amount), dh)
398- let cf = F(ce, a)
399- if (if (if (aC())
388+func dd (de) = {
389+ let bD = aG()
390+ let df = bD[t]
391+ let dg = bD[u]
392+ let bZ = parseIntValue(bD[r])
393+ let bE = parseIntValue(bD[v])
394+ let bF = parseIntValue(bD[w])
395+ let dh = be(df)
396+ let di = be(dg)
397+ let cf = if ((de.orderType == Buy))
398+ then bu(bE, bF, (dh + de.amount), di)
399+ else bu(bE, bF, (dh - de.amount), di)
400+ let cg = G(cf, a)
401+ if (if (if (aD())
400402 then true
401- else (bY == n))
403+ else (bZ == o))
402404 then true
403- else (bY == o))
405+ else (bZ == p))
404406 then throw("Admin blocked")
405407 else {
406- let di = dd.assetPair.amountAsset
407- let dj = if ((di == unit))
408+ let dj = de.assetPair.amountAsset
409+ let dk = if ((dj == unit))
408410 then "WAVES"
409- else toBase58String(value(di))
410- let dk = dd.assetPair.priceAsset
411- let dl = if ((dk == unit))
411+ else toBase58String(value(dj))
412+ let dl = de.assetPair.priceAsset
413+ let dm = if ((dl == unit))
412414 then "WAVES"
413- else toBase58String(value(dk))
414- if (if ((dj != de))
415+ else toBase58String(value(dl))
416+ if (if ((dk != df))
415417 then true
416- else (dl != df))
418+ else (dm != dg))
417419 then throw("Wr assets")
418420 else {
419- let dm = dd.price
420- let cD = fraction(a, bE, bD)
421- let dn = I(dm, a, cD)
422- let do = if ((dd.orderType == Buy))
423- then (cf >= dn)
424- else (dn >= cf)
421+ let dn = de.price
422+ let cE = fraction(a, bF, bE)
423+ let do = J(dn, a, cE)
424+ let dp = if ((de.orderType == Buy))
425+ then (cg >= do)
426+ else (do >= cg)
425427 true
426428 }
427429 }
428430 }
429431
430432
431-func dp (dq) = if ((size(dq.payments) != 1))
433+func dq (dr) = if ((size(dr.payments) != 1))
432434 then throw("1 pmnt exp")
433435 else {
434- let dr = value(dq.payments[0])
435- let bQ = value(dr.assetId)
436- let cw = dr.amount
437- let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
438- let ck = cI._1
439- let cl = cI._2
440- let bY = parseIntValue(cI._9)
441- let cm = cI._10
442- if (if (aC())
436+ let ds = value(dr.payments[0])
437+ let bR = value(ds.assetId)
438+ let cx = ds.amount
439+ let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
440+ let cl = cJ._1
441+ let cm = cJ._2
442+ let bZ = parseIntValue(cJ._9)
443+ let cn = cJ._10
444+ if (if (aD())
443445 then true
444- else (bY == o))
445- then throw(("Admin blocked: " + toString(bY)))
446- else $Tuple5(ck, cl, cw, bQ, cm)
446+ else (bZ == p))
447+ then throw(("Admin blocked: " + toString(bZ)))
448+ else $Tuple5(cl, cm, cx, bR, cn)
447449 }
448450
449451
450-func ds (dt,X,du,dv,bl,ct,cu,cv,cw,cx) = {
451- let cI = cn(X, bl, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, (X == ""), ct, cu, cv, cw, cx)
452- let bY = parseIntValue(cI._8)
453- if (if (if (aC())
452+func dt (du,Y,dv,dw,bm,cu,cv,cw,cx,cy) = {
453+ let cJ = co(Y, bm, value(dv).amount, value(dv).assetId, value(dw).amount, value(dw).assetId, du, (Y == ""), cu, cv, cw, cx, cy)
454+ let bZ = parseIntValue(cJ._8)
455+ if (if (if (aD())
454456 then true
455- else (bY == m))
457+ else (bZ == n))
456458 then true
457- else (bY == o))
458- then throw(("Blocked:" + toString(bY)))
459- else cI
459+ else (bZ == p))
460+ then throw(("Blocked:" + toString(bZ)))
461+ else cJ
460462 }
461463
462464
463-func dw (dx,bQ,bS,X) = {
464- let dy = aF()
465- let bU = dy[s]
466- let bV = dy[t]
467- let ca = bd(bU)
468- let cc = bd(bV)
469- let dz = bL(dx)
470- let cw = dz._1
471- let bN = dz._2
472- let dA = if ((X == ""))
473- then $Tuple2(ca, cc)
474- else if ((bQ == bU))
475- then if ((dx > ca))
465+func dx (dy,bR,bT,Y) = {
466+ let dz = aG()
467+ let bV = dz[t]
468+ let bW = dz[u]
469+ let cb = be(bV)
470+ let cd = be(bW)
471+ let dA = bM(dy)
472+ let cx = dA._1
473+ let bO = dA._2
474+ let dB = if ((Y == ""))
475+ then $Tuple2(cb, cd)
476+ else if ((bR == bV))
477+ then if ((dy > cb))
476478 then throw("invalid payment amount")
477- else $Tuple2((ca - dx), cc)
478- else if ((bQ == bV))
479- then if ((dx > cc))
479+ else $Tuple2((cb - dy), cd)
480+ else if ((bR == bW))
481+ then if ((dy > cd))
480482 then throw("invalid payment amount")
481- else $Tuple2(ca, (cc - dx))
483+ else $Tuple2(cb, (cd - dy))
482484 else throw("wrong pmtAssetId")
483- let dB = dA._1
484- let dC = dA._2
485- let dD = if ((bQ == bU))
486- then $Tuple2(dB, dC)
487- else $Tuple2(dC, dB)
488- let dE = dD._1
489- let dF = dD._2
490- let dG = 1
491- let dH = {
492- let dI = invoke(aN, "calcPutXOnly", [toString(cw), toString(dE), toString(dF), "", aB, h, toString(dG), i], nil)
493- if ($isInstanceOf(dI, "(Int, Int)"))
494- then dI
495- else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
485+ let dC = dB._1
486+ let dD = dB._2
487+ let dE = if ((bR == bV))
488+ then $Tuple2(dC, dD)
489+ else $Tuple2(dD, dC)
490+ let dF = dE._1
491+ let dG = dE._2
492+ let dH = 1
493+ let dI = {
494+ let dJ = invoke(aO, "calcPutXOnly", [toString(cx), toString(dF), toString(dG), "", aC, i, toString(dH), j], nil)
495+ if ($isInstanceOf(dJ, "(Int, Int)"))
496+ then dJ
497+ else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
496498 }
497- let dJ = if ((bQ == bU))
498- then dH
499- else $Tuple2(dH._2, dH._1)
500- let dK = dJ._1
501- let dL = dJ._2
502- let dM = ds(bS, X, AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), 0, true, true, false, dx, bQ)
503- let dN = dM._2
504- let dO = dM._7
505- let cm = dM._9
506- let cW = dM._10
507- let cX = dM._11
508- dM
499+ let dK = if ((bR == bV))
500+ then dI
501+ else $Tuple2(dI._2, dI._1)
502+ let dL = dK._1
503+ let dM = dK._2
504+ let dN = dt(bT, Y, AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), 0, true, true, false, dy, bR)
505+ let dO = dN._2
506+ let dP = dN._7
507+ let cn = dN._9
508+ let cX = dN._10
509+ let cY = dN._11
510+ dN
509511 }
510512
511513
512-func dP (dQ,dR,dS,dt,dT,dU) = if ((size(dS) != 1))
514+func dQ (dR,dS,dT,du,dU,dV) = if ((size(dT) != 1))
513515 then throw("1 pmnt expd")
514516 else {
515- let dy = aF()
516- let bT = dy[r]
517- let bU = dy[s]
518- let bV = dy[t]
519- let dV = parseIntValue(dy[u])
520- let dW = parseIntValue(dy[v])
521- let dX = dy[q]
522- let bS = if ((dt == this))
523- then dT
524- else dt
525- let dr = value(dS[0])
526- let bQ = value(dr.assetId)
527- let cw = dr.amount
528- if ((1000000000 > cw))
517+ let dz = aG()
518+ let bU = dz[s]
519+ let bV = dz[t]
520+ let bW = dz[u]
521+ let dW = parseIntValue(dz[v])
522+ let dX = parseIntValue(dz[w])
523+ let dY = dz[r]
524+ let bT = if ((du == this))
525+ then dU
526+ else du
527+ let ds = value(dT[0])
528+ let bR = value(ds.assetId)
529+ let cx = ds.amount
530+ if ((1000000000 > cx))
529531 then throw("Min pmt 10 LP")
530532 else {
531- let bP = toBase58String(dU)
532- if ((bT != toBase58String(bQ)))
533+ let bQ = toBase58String(dV)
534+ if ((bU != toBase58String(bR)))
533535 then throw("Wrong LP")
534536 else {
535- let ca = bd(bU)
536- let cc = bd(bV)
537- let dY = {
538- let dI = invoke(this, "getOneTknV2READONLY", [dQ, cw], nil)
539- if ($isInstanceOf(dI, "(Int, Int)"))
540- then dI
541- else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
537+ let cb = be(bV)
538+ let cd = be(bW)
539+ let dZ = {
540+ let dJ = invoke(this, "getOneTknV2READONLY", [dR, cx], nil)
541+ if ($isInstanceOf(dJ, "(Int, Int)"))
542+ then dJ
543+ else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
542544 }
543- let dZ = dY._1
544- let bN = dY._2
545- let ea = if (if ((dR > 0))
546- then (dR > dZ)
545+ let ea = dZ._1
546+ let bO = dZ._2
547+ let eb = if (if ((dS > 0))
548+ then (dS > ea)
547549 else false)
548- then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
549- else dZ
550- let eb = if ((dQ == bU))
551- then $Tuple2(ea, 0)
552- else $Tuple2(0, ea)
553- let ec = eb._1
554- let ed = eb._2
555- let ee = bf(C(cc, dW), C(ca, dV))
556- let ef = F(ee, a)
557- let eg = if ((dQ == "WAVES"))
550+ then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
551+ else ea
552+ let ec = if ((dR == bV))
553+ then $Tuple2(eb, 0)
554+ else $Tuple2(0, eb)
555+ let ed = ec._1
556+ let ee = ec._2
557+ let ef = bg(D(cd, dX), D(cb, dW))
558+ let eg = G(ef, a)
559+ let eh = if ((dR == "WAVES"))
558560 then unit
559- else fromBase58String(dQ)
560- let eh = if ((bN > 0))
561- then [ScriptTransfer(aE, bN, eg)]
561+ else fromBase58String(dR)
562+ let ei = if ((bO > 0))
563+ then [ScriptTransfer(aF, bO, eh)]
562564 else nil
563- let cm = ([ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)] ++ eh)
564- if ((cm == cm))
565+ let cn = ([ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)] ++ ei)
566+ if ((cn == cn))
565567 then {
566- let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
567- if ((ei == ei))
568- then $Tuple2(cm, ea)
568+ let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
569+ if ((ej == ej))
570+ then $Tuple2(cn, eb)
569571 else throw("Strict value is not equal to itself.")
570572 }
571573 else throw("Strict value is not equal to itself.")
574576 }
575577
576578
577-func ej (ek) = {
578- let el = toBigInt(2)
579- let em = ek[0]
580- let en = ek[1]
581- let eo = parseBigIntValue(h)
582- let ep = (parseBigIntValue(aB) * eo)
583- let eq = (em + en)
584- if ((eq == e))
579+func ek (el) = {
580+ let em = g
581+ let en = el[0]
582+ let eo = el[1]
583+ let ep = parseBigIntValue(i)
584+ let eq = (parseBigIntValue(aC) * ep)
585+ let er = (en + eo)
586+ if ((er == e))
585587 then e
586588 else {
587- let er = (ep * el)
588- func es (et,eu) = {
589- let ev = et
590- let ew = ev._1
591- let ex = ev._2
592- if ((ex != unit))
593- then et
589+ let es = (eq * em)
590+ func et (eu,ev) = {
591+ let ew = eu
592+ let ex = ew._1
593+ let ey = ew._2
594+ if ((ey != unit))
595+ then eu
594596 else {
595- let ey = (((ew * ew) * ew) / (((em * en) * el) * el))
596- let ez = (((((er * eq) / eo) + (ey * el)) * ew) / ((((er - eo) * ew) / eo) + ((el + toBigInt(1)) * ey)))
597- let eA = N((ez - value(ew)))
598- if ((f >= eA))
599- then $Tuple2(ez, eu)
600- else $Tuple2(ez, unit)
597+ let ez = (((ex * ex) * ex) / (((en * eo) * em) * em))
598+ let eA = (((((es * er) / ep) + (ez * em)) * ex) / ((((es - ep) * ex) / ep) + ((em + toBigInt(1)) * ez)))
599+ let eB = O((eA - value(ex)))
600+ if ((f >= eB))
601+ then $Tuple2(eA, ev)
602+ else $Tuple2(eA, unit)
601603 }
602604 }
603605
604- let eB = [0, 1, 2, 3, 4, 5, 6]
605- let eC = {
606- let eD = eB
607- let eE = size(eD)
608- let eF = $Tuple2(eq, unit)
609- func eG (eH,eI) = if ((eI >= eE))
610- then eH
611- else es(eH, eD[eI])
606+ let eC = [0, 1, 2, 3, 4, 5, 6]
607+ let eD = {
608+ let eE = eC
609+ let eF = size(eE)
610+ let eG = $Tuple2(er, unit)
611+ func eH (eI,eJ) = if ((eJ >= eF))
612+ then eI
613+ else et(eI, eE[eJ])
612614
613- func eJ (eH,eI) = if ((eI >= eE))
614- then eH
615+ func eK (eI,eJ) = if ((eJ >= eF))
616+ then eI
615617 else throw("List size exceeds 7")
616618
617- eJ(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7)
619+ eK(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7)
618620 }
619- let ew = eC._1
620- let ex = eC._2
621- if ((ex != unit))
622- then ew
623- else throw(("D calculation error, D = " + toString(ew)))
621+ let ex = eD._1
622+ let ey = eD._2
623+ if ((ey != unit))
624+ then ex
625+ else throw(("D calculation error, D = " + toString(ex)))
624626 }
625627 }
626628
627629
628-func eK (ek,dq,eL) = {
629- let el = toBigInt(2)
630- let eM = ek[if ((dq == 0))
630+func eL (el,dr,eM) = {
631+ let em = g
632+ let eN = el[if ((dr == 0))
631633 then 1
632634 else 0]
633- let eo = parseBigIntValue(h)
634- let ep = (parseBigIntValue(aB) * eo)
635- let eq = eM
636- let er = (ep * el)
637- let eN = (((((eL * eL) / (eM * el)) * eL) * eo) / (er * el))
638- let eO = ((eq + ((eL * eo) / er)) - eL)
639- func es (et,eu) = {
640- let eP = et
641- let eQ = eP._1
642- let ex = eP._2
643- if ((ex != unit))
644- then et
635+ let ep = parseBigIntValue(i)
636+ let eq = (parseBigIntValue(aC) * ep)
637+ let er = eN
638+ let es = (eq * em)
639+ let eO = (((((eM * eM) / (eN * em)) * eM) * ep) / (es * em))
640+ let eP = ((er + ((eM * ep) / es)) - eM)
641+ func et (eu,ev) = {
642+ let eQ = eu
643+ let eR = eQ._1
644+ let ey = eQ._2
645+ if ((ey != unit))
646+ then eu
645647 else {
646- let eR = (((eQ * eQ) + eN) / ((toBigInt(2) * eQ) + eO))
647- let eS = N((eR - value(eQ)))
648- if ((f >= eS))
649- then $Tuple2(eR, eu)
650- else $Tuple2(eR, unit)
648+ let eS = (((eR * eR) + eO) / ((g * eR) + eP))
649+ let eT = O((eS - value(eR)))
650+ if ((f >= eT))
651+ then $Tuple2(eS, ev)
652+ else $Tuple2(eS, unit)
651653 }
652654 }
653655
654- let eB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
655- let eT = {
656- let eD = eB
657- let eE = size(eD)
658- let eF = $Tuple2(eq, unit)
659- func eG (eH,eI) = if ((eI >= eE))
660- then eH
661- else es(eH, eD[eI])
656+ let eC = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
657+ let eU = {
658+ let eE = eC
659+ let eF = size(eE)
660+ let eG = $Tuple2(er, unit)
661+ func eH (eI,eJ) = if ((eJ >= eF))
662+ then eI
663+ else et(eI, eE[eJ])
662664
663- func eJ (eH,eI) = if ((eI >= eE))
664- then eH
665+ func eK (eI,eJ) = if ((eJ >= eF))
666+ then eI
665667 else throw("List size exceeds 15")
666668
667- eJ(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
669+ eK(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
668670 }
669- let eQ = eT._1
670- let ex = eT._2
671- if ((ex != unit))
672- then eQ
673- else throw(("Y calculation error, Y = " + toString(eQ)))
671+ let eR = eU._1
672+ let ey = eU._2
673+ if ((ey != unit))
674+ then eR
675+ else throw(("Y calculation error, Y = " + toString(eR)))
674676 }
675677
676678
677-func eU () = {
678- let au = getString(P())
679- if ($isInstanceOf(au, "String"))
679+func eV () = {
680+ let av = getString(Q())
681+ if ($isInstanceOf(av, "String"))
680682 then {
681- let eq = au
682- fromBase58String(eq)
683+ let er = av
684+ fromBase58String(er)
683685 }
684- else if ($isInstanceOf(au, "Unit"))
686+ else if ($isInstanceOf(av, "Unit"))
685687 then unit
686688 else throw("Match error")
687689 }
688690
689691
690-func eV () = {
691- let au = getString(Q())
692- if ($isInstanceOf(au, "String"))
692+func eW () = {
693+ let av = getString(R())
694+ if ($isInstanceOf(av, "String"))
693695 then {
694- let eq = au
695- fromBase58String(eq)
696+ let er = av
697+ fromBase58String(er)
696698 }
697- else if ($isInstanceOf(au, "Unit"))
699+ else if ($isInstanceOf(av, "Unit"))
698700 then unit
699701 else throw("Match error")
700702 }
701703
702704
703-let eW = throw("Permission denied")
705+let eX = throw("Permission denied")
704706
705-func eX (dq) = {
706- let au = eU()
707- if ($isInstanceOf(au, "ByteVector"))
707+func eY (dr) = {
708+ let av = eV()
709+ if ($isInstanceOf(av, "ByteVector"))
708710 then {
709- let eY = au
710- if ((dq.callerPublicKey == eY))
711+ let eZ = av
712+ if ((dr.callerPublicKey == eZ))
711713 then true
712- else eW
714+ else eX
713715 }
714- else if ($isInstanceOf(au, "Unit"))
715- then if ((dq.caller == this))
716+ else if ($isInstanceOf(av, "Unit"))
717+ then if ((dr.caller == this))
716718 then true
717- else eW
719+ else eX
718720 else throw("Match error")
719721 }
720722
721723
722-@Callable(dq)
723-func constructor (O) = {
724- let eN = eX(dq)
725- if ((eN == eN))
726- then [StringEntry(O(), O)]
724+@Callable(dr)
725+func constructor (P) = {
726+ let eO = eY(dr)
727+ if ((eO == eO))
728+ then [StringEntry(P(), P)]
727729 else throw("Strict value is not equal to itself.")
728730 }
729731
730732
731733
732-@Callable(dq)
733-func setManager (eZ) = {
734- let eN = eX(dq)
735- if ((eN == eN))
734+@Callable(dr)
735+func setManager (fa) = {
736+ let eO = eY(dr)
737+ if ((eO == eO))
736738 then {
737- let fa = fromBase58String(eZ)
738- if ((fa == fa))
739- then [StringEntry(Q(), eZ)]
739+ let fb = fromBase58String(fa)
740+ if ((fb == fb))
741+ then [StringEntry(R(), fa)]
740742 else throw("Strict value is not equal to itself.")
741743 }
742744 else throw("Strict value is not equal to itself.")
744746
745747
746748
747-@Callable(dq)
749+@Callable(dr)
748750 func confirmManager () = {
749- let bK = eV()
750- let fb = if (isDefined(bK))
751+ let bL = eW()
752+ let fc = if (isDefined(bL))
751753 then true
752754 else throw("No pending manager")
753- if ((fb == fb))
755+ if ((fc == fc))
754756 then {
755- let fc = if ((dq.callerPublicKey == value(bK)))
757+ let fd = if ((dr.callerPublicKey == value(bL)))
756758 then true
757759 else throw("You are not pending manager")
758- if ((fc == fc))
759- then [StringEntry(P(), toBase58String(value(bK))), DeleteEntry(Q())]
760+ if ((fd == fd))
761+ then [StringEntry(Q(), toBase58String(value(bL))), DeleteEntry(R())]
760762 else throw("Strict value is not equal to itself.")
761763 }
762764 else throw("Strict value is not equal to itself.")
764766
765767
766768
767-@Callable(dq)
768-func put (fd,fe) = {
769- let ff = aJ()
770- let fg = valueOrErrorMessage(addressFromString(ff[y]), "Wr st addr")
771- let fh = valueOrErrorMessage(addressFromString(ff[z]), "Wr sl addr")
772- if ((0 > fd))
769+@Callable(dr)
770+func put (fe,ff) = {
771+ let fg = aK()
772+ let fh = valueOrErrorMessage(addressFromString(fg[z]), "Wr st addr")
773+ let fi = valueOrErrorMessage(addressFromString(fg[A]), "Wr sl addr")
774+ if ((0 > fe))
773775 then throw("Wrong slippage")
774- else if ((size(dq.payments) != 2))
776+ else if ((size(dr.payments) != 2))
775777 then throw("2 pmnts expd")
776778 else {
777- let fi = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fd, true, false, true, 0, "")
778- let cV = fi._2
779- let dO = fi._7
780- let cm = fi._9
781- let cW = fi._10
782- let cX = fi._11
783- let bU = fi._12
784- let bV = fi._13
785- let cI = invoke(aA, "emit", [cV], nil)
786- if ((cI == cI))
779+ let fj = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fe, true, false, true, 0, "")
780+ let cW = fj._2
781+ let dP = fj._7
782+ let cn = fj._9
783+ let cX = fj._10
784+ let cY = fj._11
785+ let bV = fj._12
786+ let bW = fj._13
787+ let cJ = invoke(aB, "emit", [cW], nil)
788+ if ((cJ == cJ))
787789 then {
788- let fj = {
789- let au = cI
790- if ($isInstanceOf(au, "Address"))
790+ let fk = {
791+ let av = cJ
792+ if ($isInstanceOf(av, "Address"))
791793 then {
792- let fk = au
793- invoke(fk, "emit", [cV], nil)
794+ let fl = av
795+ invoke(fl, "emit", [cW], nil)
794796 }
795797 else unit
796798 }
797- if ((fj == fj))
799+ if ((fk == fk))
798800 then {
799- let fl = if ((cW > 0))
800- then invoke(fh, "put", nil, [AttachedPayment(bU, cW)])
801+ let fm = if ((cX > 0))
802+ then invoke(fi, "put", nil, [AttachedPayment(bV, cX)])
801803 else nil
802- if ((fl == fl))
804+ if ((fm == fm))
803805 then {
804- let fm = if ((cX > 0))
805- then invoke(fh, "put", nil, [AttachedPayment(bV, cX)])
806+ let fn = if ((cY > 0))
807+ then invoke(fi, "put", nil, [AttachedPayment(bW, cY)])
806808 else nil
807- if ((fm == fm))
809+ if ((fn == fn))
808810 then {
809- let fn = if (fe)
811+ let fo = if (ff)
810812 then {
811- let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
812- if ((fo == fo))
813+ let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
814+ if ((fp == fp))
813815 then nil
814816 else throw("Strict value is not equal to itself.")
815817 }
816- else [ScriptTransfer(dq.caller, cV, dO)]
817- (cm ++ fn)
818+ else [ScriptTransfer(dr.caller, cW, dP)]
819+ (cn ++ fo)
818820 }
819821 else throw("Strict value is not equal to itself.")
820822 }
828830
829831
830832
831-@Callable(dq)
832-func putOneTkn (dK,dL,fp,bl,fe) = {
833- let bC = aJ()
834- let fg = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
835- let fh = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
836- let fq = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
837- let fr = aF()
838- let bU = fr[s]
839- let bV = fr[t]
840- let bW = parseIntValue(fr[u])
841- let bX = parseIntValue(fr[v])
842- let fs = valueOrElse(getString(this, ac()), "")
843- let bS = if ((fs == toString(dq.caller)))
844- then dq.originCaller
845- else dq.caller
846- if (if (if (if ((0 >= bl))
847- then true
848- else (0 >= dK))
833+@Callable(dr)
834+func putOneTkn (dL,dM,fq,bm,ff) = {
835+ let bD = aK()
836+ let fh = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
837+ let fi = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
838+ let fr = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
839+ let fs = aG()
840+ let bV = fs[t]
841+ let bW = fs[u]
842+ let bX = parseIntValue(fs[v])
843+ let bY = parseIntValue(fs[w])
844+ let ft = valueOrElse(getString(this, ad()), "")
845+ let bT = if ((ft == toString(dr.caller)))
846+ then dr.originCaller
847+ else dr.caller
848+ if (if (if (if ((0 >= bm))
849849 then true
850850 else (0 >= dL))
851851 then true
852- else (0 >= fp))
852+ else (0 >= dM))
853+ then true
854+ else (0 >= fq))
853855 then throw("Wrong params")
854- else if ((size(dq.payments) != 1))
856+ else if ((size(dr.payments) != 1))
855857 then throw("1 pmnt expd")
856858 else {
857- let dr = value(dq.payments[0])
858- let bQ = toBase58String(value(dr.assetId))
859- let ft = dr.amount
860- let fu = bL(ft)
861- let cw = fu._1
862- let bN = fu._2
863- if ((10000000 > ft))
859+ let ds = value(dr.payments[0])
860+ let bR = toBase58String(value(ds.assetId))
861+ let fu = ds.amount
862+ let fv = bM(fu)
863+ let cx = fv._1
864+ let bO = fv._2
865+ if ((10000000 > fu))
864866 then throw("Wrong pmt amt")
865867 else {
866- let ca = bd(bU)
867- let cc = bd(bV)
868- let fv = if ((bQ == bU))
869- then if (if ((ft > ca))
868+ let cb = be(bV)
869+ let cd = be(bW)
870+ let fw = if ((bR == bV))
871+ then if (if ((fu > cb))
870872 then true
871- else (dK > cw))
873+ else (dL > cx))
872874 then throw("invalid payment amount")
873- else $Tuple6((ca - ft), cc, (cw - dK), dL, 0, 0)
874- else if ((bQ == bV))
875- then if (if ((ft > cc))
875+ else $Tuple6((cb - fu), cd, (cx - dL), dM, 0, 0)
876+ else if ((bR == bW))
877+ then if (if ((fu > cd))
876878 then true
877- else (dL > cw))
879+ else (dM > cx))
878880 then throw("invalid payment amount")
879- else $Tuple6(ca, (cc - ft), 0, 0, (cw - dL), dK)
881+ else $Tuple6(cb, (cd - fu), 0, 0, (cx - dM), dL)
880882 else throw("wrong pmtAssetId")
881- let dB = fv._1
882- let dC = fv._2
883- let fw = fv._3
884- let fx = fv._4
885- let fy = fv._5
886- let fz = fv._6
887- let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
888- let bp = invoke(fq, "calcD", [toString(toBigInt(((dB + fw) - fz))), toString(toBigInt(((dC + fy) - fx))), aB, h, i], nil)
889- let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
890- if ((fA == fA))
883+ let dC = fw._1
884+ let dD = fw._2
885+ let fx = fw._3
886+ let fy = fw._4
887+ let fz = fw._5
888+ let fA = fw._6
889+ let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
890+ let bq = invoke(fr, "calcD", [toString(toBigInt(((dC + fx) - fA))), toString(toBigInt(((dD + fz) - fy))), aC, i, j], nil)
891+ let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
892+ if ((fB == fB))
891893 then {
892- let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), bl, true, true, true, cw, bQ)
893- let dN = dM._2
894- let dO = dM._7
895- let cm = dM._9
896- let cW = dM._10
897- let cX = dM._11
898- let fB = bi(toBigInt(dN), toBigInt(fp), toBigInt(bl))
899- let cV = toInt(fB._2)
900- let fi = invoke(aA, "emit", [cV], nil)
901- if ((fi == fi))
894+ let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), bm, true, true, true, cx, bR)
895+ let dO = dN._2
896+ let dP = dN._7
897+ let cn = dN._9
898+ let cX = dN._10
899+ let cY = dN._11
900+ let fC = bj(toBigInt(dO), toBigInt(fq), toBigInt(bm))
901+ let cW = toInt(fC._2)
902+ let fj = invoke(aB, "emit", [cW], nil)
903+ if ((fj == fj))
902904 then {
903- let fj = {
904- let au = fi
905- if ($isInstanceOf(au, "Address"))
905+ let fk = {
906+ let av = fj
907+ if ($isInstanceOf(av, "Address"))
906908 then {
907- let fk = au
908- invoke(fk, "emit", [cV], nil)
909+ let fl = av
910+ invoke(fl, "emit", [cW], nil)
909911 }
910912 else unit
911913 }
912- if ((fj == fj))
914+ if ((fk == fk))
913915 then {
914- let fl = if ((cW > 0))
915- then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
916+ let fm = if ((cX > 0))
917+ then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
916918 else nil
917- if ((fl == fl))
919+ if ((fm == fm))
918920 then {
919- let fm = if ((cX > 0))
920- then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
921+ let fn = if ((cY > 0))
922+ then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
921923 else nil
922- if ((fm == fm))
924+ if ((fn == fn))
923925 then {
924- let fn = if (fe)
926+ let fo = if (ff)
925927 then {
926- let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
927- if ((fo == fo))
928+ let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
929+ if ((fp == fp))
928930 then nil
929931 else throw("Strict value is not equal to itself.")
930932 }
931- else [ScriptTransfer(dq.caller, cV, dO)]
932- let eh = if ((bN > 0))
933- then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
933+ else [ScriptTransfer(dr.caller, cW, dP)]
934+ let ei = if ((bO > 0))
935+ then [ScriptTransfer(aF, bO, fromBase58String(bR))]
934936 else nil
935- ((cm ++ fn) ++ eh)
937+ ((cn ++ fo) ++ ei)
936938 }
937939 else throw("Strict value is not equal to itself.")
938940 }
949951
950952
951953
952-@Callable(dq)
953-func putOneTknV2 (dR,fe) = if ((size(dq.payments) != 1))
954+@Callable(dr)
955+func putOneTknV2 (dS,ff) = if ((size(dr.payments) != 1))
954956 then throw("1 pmnt expd")
955957 else {
956- let dy = aF()
957- let bU = dy[s]
958- let bV = dy[t]
959- let dV = parseIntValue(dy[u])
960- let dW = parseIntValue(dy[v])
961- let bS = if ((dq.caller == this))
962- then dq.originCaller
963- else dq.caller
964- let dr = value(dq.payments[0])
965- let bQ = toBase58String(value(dr.assetId))
966- let cw = dr.amount
967- if ((10000000 > cw))
958+ let dz = aG()
959+ let bV = dz[t]
960+ let bW = dz[u]
961+ let dW = parseIntValue(dz[v])
962+ let dX = parseIntValue(dz[w])
963+ let bT = if ((dr.caller == this))
964+ then dr.originCaller
965+ else dr.caller
966+ let ds = value(dr.payments[0])
967+ let bR = toBase58String(value(ds.assetId))
968+ let cx = ds.amount
969+ if ((10000000 > cx))
968970 then throw("Wrong pmt amt")
969971 else {
970- let cI = dw(cw, bQ, toString(bS), toBase58String(dq.transactionId))
971- let dN = cI._2
972- let dO = cI._7
973- let cm = cI._9
974- let cW = cI._10
975- let cX = cI._11
976- let cV = if (if ((dR > 0))
977- then (dR > dN)
972+ let cJ = dx(cx, bR, toString(bT), toBase58String(dr.transactionId))
973+ let dO = cJ._2
974+ let dP = cJ._7
975+ let cn = cJ._9
976+ let cX = cJ._10
977+ let cY = cJ._11
978+ let cW = if (if ((dS > 0))
979+ then (dS > dO)
978980 else false)
979- then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
980- else dN
981- let fi = invoke(aA, "emit", [cV], nil)
982- if ((fi == fi))
981+ then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
982+ else dO
983+ let fj = invoke(aB, "emit", [cW], nil)
984+ if ((fj == fj))
983985 then {
984- let fj = {
985- let au = fi
986- if ($isInstanceOf(au, "Address"))
986+ let fk = {
987+ let av = fj
988+ if ($isInstanceOf(av, "Address"))
987989 then {
988- let fk = au
989- invoke(fk, "emit", [cV], nil)
990+ let fl = av
991+ invoke(fl, "emit", [cW], nil)
990992 }
991993 else unit
992994 }
993- if ((fj == fj))
995+ if ((fk == fk))
994996 then {
995- let fl = if ((cW > 0))
996- then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
997+ let fm = if ((cX > 0))
998+ then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
997999 else nil
998- if ((fl == fl))
1000+ if ((fm == fm))
9991001 then {
1000- let fm = if ((cX > 0))
1001- then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
1002+ let fn = if ((cY > 0))
1003+ then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
10021004 else nil
1003- if ((fm == fm))
1005+ if ((fn == fn))
10041006 then {
1005- let fn = if (fe)
1007+ let fo = if (ff)
10061008 then {
1007- let fo = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
1008- if ((fo == fo))
1009+ let fp = invoke(aM, "stake", nil, [AttachedPayment(dP, cW)])
1010+ if ((fp == fp))
10091011 then nil
10101012 else throw("Strict value is not equal to itself.")
10111013 }
1012- else [ScriptTransfer(dq.caller, cV, dO)]
1013- let bN = bL(cw)._2
1014- let eh = if ((bN > 0))
1015- then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
1014+ else [ScriptTransfer(dr.caller, cW, dP)]
1015+ let bO = bM(cx)._2
1016+ let ei = if ((bO > 0))
1017+ then [ScriptTransfer(aF, bO, fromBase58String(bR))]
10161018 else nil
1017- $Tuple2(((cm ++ fn) ++ eh), cV)
1019+ $Tuple2(((cn ++ fo) ++ ei), cW)
10181020 }
10191021 else throw("Strict value is not equal to itself.")
10201022 }
10281030
10291031
10301032
1031-@Callable(dq)
1032-func putOneTknV2OldREADONLY (fC,fD) = {
1033- let cI = dw(fC, fD, "", "")
1034- let dN = cI._2
1035- let dO = cI._7
1036- let cm = cI._9
1037- let cW = cI._10
1038- let cX = cI._11
1039- $Tuple2(nil, dN)
1033+@Callable(dr)
1034+func putOneTknV2OldREADONLY (fD,fE) = {
1035+ let cJ = dx(fD, fE, "", "")
1036+ let dO = cJ._2
1037+ let dP = cJ._7
1038+ let cn = cJ._9
1039+ let cX = cJ._10
1040+ let cY = cJ._11
1041+ $Tuple2(nil, dO)
10401042 }
10411043
10421044
10431045
1044-@Callable(dq)
1045-func putOneTknV2WithBonusREADONLY (fC,fD) = {
1046- let dy = aF()
1047- let bU = dy[s]
1048- let bV = dy[t]
1049- let cI = dw(fC, fD, "", "")
1050- let dN = cI._2
1051- let cf = cI._3
1052- let fE = cI._6
1053- let dO = cI._7
1054- let ca = bd(bU)
1055- let cc = bd(bV)
1056- let fF = fraction(cc, a, ca)
1057- let fG = fraction(fC, a, (fF + a))
1058- let fH = (fC - fG)
1059- let fI = fraction(fE, fH, cc)
1060- let fJ = fraction((dN - fI), a, fI)
1061- let bN = bL(fC)._2
1062- $Tuple2(nil, $Tuple3(dN, bN, fJ))
1046+@Callable(dr)
1047+func putOneTknV2WithBonusREADONLY (fD,fE) = {
1048+ let dz = aG()
1049+ let bV = dz[t]
1050+ let bW = dz[u]
1051+ let cJ = dx(fD, fE, "", "")
1052+ let dO = cJ._2
1053+ let cg = cJ._3
1054+ let fF = cJ._6
1055+ let dP = cJ._7
1056+ let cb = be(bV)
1057+ let cd = be(bW)
1058+ let fG = fraction(cd, a, cb)
1059+ let fH = fraction(fD, a, (fG + a))
1060+ let fI = (fD - fH)
1061+ let fJ = fraction(fF, fI, cd)
1062+ let fK = fraction((dO - fJ), a, fJ)
1063+ let bO = bM(fD)._2
1064+ $Tuple2(nil, $Tuple3(dO, bO, fK))
10631065 }
10641066
10651067
10661068
1067-@Callable(dq)
1068-func putForFree (fK) = if ((0 > fK))
1069+@Callable(dr)
1070+func putForFree (fL) = if ((0 > fL))
10691071 then throw("Wrong slpg")
1070- else if ((size(dq.payments) != 2))
1072+ else if ((size(dr.payments) != 2))
10711073 then throw("2 pmnts expd")
10721074 else {
1073- let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fK, false, false, true, 0, "")
1074- dM._9
1075+ let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fL, false, false, true, 0, "")
1076+ dN._9
10751077 }
10761078
10771079
10781080
1079-@Callable(dq)
1081+@Callable(dr)
10801082 func get () = {
1081- let cI = dp(dq)
1082- let fL = cI._1
1083- let cl = cI._2
1084- let cw = cI._3
1085- let bQ = cI._4
1086- let cm = cI._5
1087- let eO = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1088- if ((eO == eO))
1089- then cm
1083+ let cJ = dq(dr)
1084+ let fM = cJ._1
1085+ let cm = cJ._2
1086+ let cx = cJ._3
1087+ let bR = cJ._4
1088+ let cn = cJ._5
1089+ let eP = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1090+ if ((eP == eP))
1091+ then cn
10901092 else throw("Strict value is not equal to itself.")
10911093 }
10921094
10931095
10941096
1095-@Callable(dq)
1096-func getOneTkn (fM,fN,fO,dQ,bl) = if ((size(dq.payments) != 1))
1097+@Callable(dr)
1098+func getOneTkn (fN,fO,fP,dR,bm) = if ((size(dr.payments) != 1))
10971099 then throw("1 pmnt expd")
10981100 else {
1099- let bC = aF()
1100- let bT = bC[r]
1101- let bU = bC[s]
1102- let bV = bC[t]
1103- let bW = parseIntValue(bC[u])
1104- let bX = parseIntValue(bC[v])
1105- let bY = bC[q]
1106- let ff = aJ()
1107- let fq = valueOrErrorMessage(addressFromString(ff[A]), "Wr sl addr")
1108- let dr = value(dq.payments[0])
1109- let fs = valueOrElse(getString(this, ac()), "")
1110- let bS = if ((fs == toString(dq.caller)))
1111- then dq.originCaller
1112- else dq.caller
1113- let bP = toBase58String(dq.transactionId)
1114- let bQ = value(dr.assetId)
1115- let cw = dr.amount
1116- if ((1000000000 > cw))
1101+ let bD = aG()
1102+ let bU = bD[s]
1103+ let bV = bD[t]
1104+ let bW = bD[u]
1105+ let bX = parseIntValue(bD[v])
1106+ let bY = parseIntValue(bD[w])
1107+ let bZ = bD[r]
1108+ let fg = aK()
1109+ let fr = valueOrErrorMessage(addressFromString(fg[B]), "Wr sl addr")
1110+ let ds = value(dr.payments[0])
1111+ let ft = valueOrElse(getString(this, ad()), "")
1112+ let bT = if ((ft == toString(dr.caller)))
1113+ then dr.originCaller
1114+ else dr.caller
1115+ let bQ = toBase58String(dr.transactionId)
1116+ let bR = value(ds.assetId)
1117+ let cx = ds.amount
1118+ if ((1000000000 > cx))
11171119 then throw("Min pmt 10 LP")
1118- else if (if (if ((0 > bl))
1120+ else if (if (if ((0 > bm))
11191121 then true
1120- else (0 > fM))
1122+ else (0 > fN))
11211123 then true
1122- else (0 > fO))
1124+ else (0 > fP))
11231125 then throw("Wrong params")
1124- else if ((bT != toBase58String(bQ)))
1126+ else if ((bU != toBase58String(bR)))
11251127 then throw("Wrong LP")
11261128 else {
1127- let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
1128- let fP = cI._1
1129- let fQ = cI._2
1130- let ca = bd(bU)
1131- let cc = bd(bV)
1132- let fR = if ((dQ == bU))
1133- then $Tuple7((ca - fP), (cc - fQ), fM, fQ, 0, 0, (fP + fM))
1134- else if ((dQ == bV))
1135- then $Tuple7((ca - fP), (cc - fQ), 0, 0, fM, fP, (fQ + fM))
1129+ let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
1130+ let fQ = cJ._1
1131+ let fR = cJ._2
1132+ let cb = be(bV)
1133+ let cd = be(bW)
1134+ let fS = if ((dR == bV))
1135+ then $Tuple7((cb - fQ), (cd - fR), fN, fR, 0, 0, (fQ + fN))
1136+ else if ((dR == bW))
1137+ then $Tuple7((cb - fQ), (cd - fR), 0, 0, fN, fQ, (fR + fN))
11361138 else throw("wrong outAssetId")
1137- let dB = fR._1
1138- let dC = fR._2
1139- let fw = fR._3
1140- let fx = fR._4
1141- let fy = fR._5
1142- let fz = fR._6
1143- let fS = fR._7
1144- if (if ((0 > fw))
1139+ let dC = fS._1
1140+ let dD = fS._2
1141+ let fx = fS._3
1142+ let fy = fS._4
1143+ let fz = fS._5
1144+ let fA = fS._6
1145+ let fT = fS._7
1146+ if (if ((0 > fx))
11451147 then true
1146- else (0 > fy))
1148+ else (0 > fz))
11471149 then throw("Wrong calc")
11481150 else {
1149- let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1150- let bp = invoke(fq, "calcD", [toString(((dB - fw) + fz)), toString(((dC + fx) - fy)), aB, h, i], nil)
1151- let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1152- if ((fA == fA))
1151+ let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
1152+ let bq = invoke(fr, "calcD", [toString(((dC - fx) + fA)), toString(((dD + fy) - fz)), aC, i, j], nil)
1153+ let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
1154+ if ((fB == fB))
11531155 then {
1154- let dZ = bL(fS)._1
1155- let fT = bi(toBigInt(dZ), toBigInt(fO), toBigInt(bl))
1156- if ((fT == fT))
1156+ let ea = bM(fT)._1
1157+ let fU = bj(toBigInt(ea), toBigInt(fP), toBigInt(bm))
1158+ if ((fU == fU))
11571159 then {
1158- let fU = if ((dQ == bU))
1159- then $Tuple2(toInt(fT._2), 0)
1160- else $Tuple2(0, toInt(fT._2))
1161- let ec = fU._1
1162- let ed = fU._2
1163- let ea = (ec + ed)
1164- let bN = (fS - dZ)
1165- let eg = if ((dQ == "WAVES"))
1160+ let fV = if ((dR == bV))
1161+ then $Tuple2(toInt(fU._2), 0)
1162+ else $Tuple2(0, toInt(fU._2))
1163+ let ed = fV._1
1164+ let ee = fV._2
1165+ let eb = (ed + ee)
1166+ let bO = (fT - ea)
1167+ let eh = if ((dR == "WAVES"))
11661168 then unit
1167- else fromBase58String(dQ)
1168- let eh = if ((bN > 0))
1169- then [ScriptTransfer(aE, bN, eg)]
1169+ else fromBase58String(dR)
1170+ let ei = if ((bO > 0))
1171+ then [ScriptTransfer(aF, bO, eh)]
11701172 else nil
1171- let ee = bf(C(cc, bX), C(ca, bW))
1172- let ef = F(ee, a)
1173- let cm = [ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)]
1174- if ((cm == cm))
1173+ let ef = bg(D(cd, bY), D(cb, bX))
1174+ let eg = G(ef, a)
1175+ let cn = [ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)]
1176+ if ((cn == cn))
11751177 then {
1176- let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1177- if ((ei == ei))
1178- then (cm ++ eh)
1178+ let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1179+ if ((ej == ej))
1180+ then (cn ++ ei)
11791181 else throw("Strict value is not equal to itself.")
11801182 }
11811183 else throw("Strict value is not equal to itself.")
11891191
11901192
11911193
1192-@Callable(dq)
1193-func getOneTknV2 (dQ,dR) = {
1194- let fV = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1195- let cm = fV._1
1196- let ea = fV._2
1197- $Tuple2(cm, ea)
1194+@Callable(dr)
1195+func getOneTknV2 (dR,dS) = {
1196+ let fW = dQ(dR, dS, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
1197+ let cn = fW._1
1198+ let eb = fW._2
1199+ $Tuple2(cn, eb)
11981200 }
11991201
12001202
12011203
1202-@Callable(dq)
1203-func getOneTknV2OldREADONLY (dQ,fW) = {
1204- let dy = aF()
1205- let bT = dy[r]
1206- let bU = dy[s]
1207- let bV = dy[t]
1208- let cI = bO("", bT, fW, this)
1209- let fP = cI._1
1210- let fQ = cI._2
1211- let ca = bd(bU)
1212- let cc = bd(bV)
1213- let dB = (ca - fP)
1214- let dC = (cc - fQ)
1215- let fX = if ((dQ == bU))
1216- then $Tuple4(dC, dB, fQ, fP)
1217- else if ((dQ == bV))
1218- then $Tuple4(dB, dC, fP, fQ)
1204+@Callable(dr)
1205+func getOneTknV2OldREADONLY (dR,fX) = {
1206+ let dz = aG()
1207+ let bU = dz[s]
1208+ let bV = dz[t]
1209+ let bW = dz[u]
1210+ let cJ = bP("", bU, fX, this)
1211+ let fQ = cJ._1
1212+ let fR = cJ._2
1213+ let cb = be(bV)
1214+ let cd = be(bW)
1215+ let dC = (cb - fQ)
1216+ let dD = (cd - fR)
1217+ let fY = if ((dR == bV))
1218+ then $Tuple4(dD, dC, fR, fQ)
1219+ else if ((dR == bW))
1220+ then $Tuple4(dC, dD, fQ, fR)
12191221 else throw("wrong outAssetId")
1220- let fY = fX._1
1221- let fZ = fX._2
1222- let ga = fX._3
1223- let gb = fX._4
1224- let gc = 1
1225- let fM = {
1226- let dI = invoke(aN, "calcSwapXToY", [toString(ga), toString(fY), toString(fZ), "", aB, h, toString(gc), i], nil)
1227- if ($isInstanceOf(dI, "Int"))
1228- then dI
1229- else throw(($getType(dI) + " couldn't be cast to Int"))
1222+ let fZ = fY._1
1223+ let ga = fY._2
1224+ let gb = fY._3
1225+ let gc = fY._4
1226+ let gd = 1
1227+ let fN = {
1228+ let dJ = invoke(aO, "calcSwapXToY", [toString(gb), toString(fZ), toString(ga), "", aC, i, toString(gd), j], nil)
1229+ if ($isInstanceOf(dJ, "Int"))
1230+ then dJ
1231+ else throw(($getType(dJ) + " couldn't be cast to Int"))
12301232 }
1231- let fS = (fM + gb)
1232- let gd = bL(fS)
1233- let dZ = gd._1
1234- let bN = gd._2
1235- $Tuple2(nil, $Tuple2(dZ, bN))
1233+ let fT = (fN + gc)
1234+ let ge = bM(fT)
1235+ let ea = ge._1
1236+ let bO = ge._2
1237+ $Tuple2(nil, $Tuple2(ea, bO))
12361238 }
12371239
12381240
12391241
1240-@Callable(dq)
1241-func getOneTknV2READONLY (dQ,fW) = {
1242- let dy = aF()
1243- let bU = dy[s]
1244- let bV = dy[t]
1245- let bT = dy[r]
1246- let ek = [toBigInt(bd(bU)), toBigInt(bd(bV))]
1247- let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1248- let bq = ej(ek)
1249- let bp = (bq - ((toBigInt(fW) * bq) / ge))
1250- let gf = if ((dQ == bU))
1242+@Callable(dr)
1243+func getOneTknV2READONLY (dR,fX) = {
1244+ let dz = aG()
1245+ let bV = dz[t]
1246+ let bW = dz[u]
1247+ let bU = dz[s]
1248+ let el = [toBigInt(be(bV)), toBigInt(be(bW))]
1249+ let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1250+ let br = ek(el)
1251+ let bq = (br - fraction(toBigInt(fX), br, gf))
1252+ let gg = if ((dR == bV))
12511253 then 0
12521254 else 1
1253- let gg = eK(ek, gf, bp)
1254- let gh = (ek[gf] - gg)
1255- let fS = toInt((gh - f))
1256- let gi = bL(fS)
1257- let dZ = gi._1
1258- let bN = gi._2
1259- $Tuple2(nil, $Tuple2(dZ, bN))
1255+ let gh = eL(el, gg, bq)
1256+ let gi = (el[gg] - gh)
1257+ let fT = toInt((gi - f))
1258+ let gj = bM(fT)
1259+ let ea = gj._1
1260+ let bO = gj._2
1261+ $Tuple2(nil, $Tuple2(ea, bO))
12601262 }
12611263
12621264
12631265
1264-@Callable(dq)
1265-func getOneTknV2WithBonusREADONLY (dQ,fW) = {
1266- let dy = aF()
1267- let bU = dy[s]
1268- let bV = dy[t]
1269- let bT = dy[r]
1270- let ca = bd(bU)
1271- let cc = bd(bV)
1272- let gj = {
1273- let dI = invoke(this, "getOneTknV2READONLY", [dQ, fW], nil)
1274- if ($isInstanceOf(dI, "(Int, Int)"))
1275- then dI
1276- else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
1266+@Callable(dr)
1267+func getOneTknV2WithBonusREADONLY (dR,fX) = {
1268+ let dz = aG()
1269+ let bV = dz[t]
1270+ let bW = dz[u]
1271+ let bU = dz[s]
1272+ let cb = be(bV)
1273+ let cd = be(bW)
1274+ let gk = {
1275+ let dJ = invoke(this, "getOneTknV2READONLY", [dR, fX], nil)
1276+ if ($isInstanceOf(dJ, "(Int, Int)"))
1277+ then dJ
1278+ else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
12771279 }
1278- let dZ = gj._1
1279- let bN = gj._2
1280- let cI = bO("", bT, fW, this)
1281- let ck = cI._1
1282- let cl = cI._2
1283- let gk = (ck + cl)
1284- let fJ = fraction((dZ - gk), a, gk)
1285- $Tuple2(nil, $Tuple3(dZ, bN, fJ))
1280+ let ea = gk._1
1281+ let bO = gk._2
1282+ let cJ = bP("", bU, fX, this)
1283+ let cl = cJ._1
1284+ let cm = cJ._2
1285+ let gl = (cl + cm)
1286+ let fK = fraction((ea - gl), a, gl)
1287+ $Tuple2(nil, $Tuple3(ea, bO, fK))
12861288 }
12871289
12881290
12891291
1290-@Callable(dq)
1291-func getNoLess (gl,gm) = {
1292- let cI = dp(dq)
1293- let ck = cI._1
1294- let cl = cI._2
1295- let cw = cI._3
1296- let bQ = cI._4
1297- let cm = cI._5
1298- if ((gl > ck))
1299- then throw(((("Failed: " + toString(ck)) + " < ") + toString(gl)))
1300- else if ((gm > cl))
1301- then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
1292+@Callable(dr)
1293+func getNoLess (gm,gn) = {
1294+ let cJ = dq(dr)
1295+ let cl = cJ._1
1296+ let cm = cJ._2
1297+ let cx = cJ._3
1298+ let bR = cJ._4
1299+ let cn = cJ._5
1300+ if ((gm > cl))
1301+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
1302+ else if ((gn > cm))
1303+ then throw(((("Failed: " + toString(cm)) + " < ") + toString(gn)))
13021304 else {
1303- let gn = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1304- if ((gn == gn))
1305- then cm
1305+ let go = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1306+ if ((go == go))
1307+ then cn
13061308 else throw("Strict value is not equal to itself.")
13071309 }
13081310 }
13091311
13101312
13111313
1312-@Callable(dq)
1313-func unstakeAndGet (bM) = {
1314- let go = if ((size(dq.payments) != 0))
1314+@Callable(dr)
1315+func unstakeAndGet (bN) = {
1316+ let gp = if ((size(dr.payments) != 0))
13151317 then throw("No pmnts expd")
13161318 else true
1317- if ((go == go))
1319+ if ((gp == gp))
13181320 then {
1319- let bC = aF()
1320- let gp = aJ()
1321- let dO = fromBase58String(bC[r])
1322- let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1323- let gr = invoke(gq, "unstake", [toBase58String(dO), bM], nil)
1324- if ((gr == gr))
1321+ let bD = aG()
1322+ let gq = aK()
1323+ let dP = fromBase58String(bD[s])
1324+ let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1325+ let gs = invoke(gr, "unstake", [toBase58String(dP), bN], nil)
1326+ if ((gs == gs))
13251327 then {
1326- let cI = bO(toBase58String(dq.transactionId), toBase58String(dO), bM, dq.caller)
1327- let bY = parseIntValue(cI._9)
1328- let cm = cI._10
1329- let gs = if (if (aC())
1328+ let cJ = bP(toBase58String(dr.transactionId), toBase58String(dP), bN, dr.caller)
1329+ let bZ = parseIntValue(cJ._9)
1330+ let cn = cJ._10
1331+ let gt = if (if (aD())
13301332 then true
1331- else (bY == o))
1332- then throw(("Blocked: " + toString(bY)))
1333+ else (bZ == p))
1334+ then throw(("Blocked: " + toString(bZ)))
13331335 else true
1334- if ((gs == gs))
1336+ if ((gt == gt))
13351337 then {
1336- let gt = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1337- if ((gt == gt))
1338- then cm
1338+ let gu = invoke(aB, "burn", [bN], [AttachedPayment(dP, bN)])
1339+ if ((gu == gu))
1340+ then cn
13391341 else throw("Strict value is not equal to itself.")
13401342 }
13411343 else throw("Strict value is not equal to itself.")
13471349
13481350
13491351
1350-@Callable(dq)
1351-func unstakeAndGetOneTkn (gu,dQ,dR) = {
1352- let go = if ((size(dq.payments) != 0))
1352+@Callable(dr)
1353+func unstakeAndGetOneTkn (gv,dR,dS) = {
1354+ let gp = if ((size(dr.payments) != 0))
13531355 then throw("No pmnts expd")
13541356 else true
1355- if ((go == go))
1357+ if ((gp == gp))
13561358 then {
1357- let bC = aF()
1358- let gp = aJ()
1359- let dO = fromBase58String(bC[r])
1360- let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1361- let gr = invoke(gq, "unstake", [toBase58String(dO), gu], nil)
1362- if ((gr == gr))
1359+ let bD = aG()
1360+ let gq = aK()
1361+ let dP = fromBase58String(bD[s])
1362+ let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1363+ let gs = invoke(gr, "unstake", [toBase58String(dP), gv], nil)
1364+ if ((gs == gs))
13631365 then {
1364- let gv = dP(dQ, dR, [AttachedPayment(dO, gu)], dq.caller, dq.originCaller, dq.transactionId)
1365- let cm = gv._1
1366- let ea = gv._2
1367- $Tuple2(cm, ea)
1366+ let gw = dQ(dR, dS, [AttachedPayment(dP, gv)], dr.caller, dr.originCaller, dr.transactionId)
1367+ let cn = gw._1
1368+ let eb = gw._2
1369+ $Tuple2(cn, eb)
13681370 }
13691371 else throw("Strict value is not equal to itself.")
13701372 }
13731375
13741376
13751377
1376-@Callable(dq)
1377-func putOneTknV2READONLY (bM,gw) = {
1378- let dy = aF()
1379- let bU = dy[s]
1380- let bV = dy[t]
1381- let bT = dy[r]
1382- let gx = gw
1383- let ft = bM
1384- let gy = bL(ft)
1385- let fC = gy._1
1386- let bN = gy._2
1387- let gz = if ((gx == bU))
1388- then $Tuple2(fC, 0)
1389- else if ((gx == bV))
1390- then $Tuple2(0, fC)
1378+@Callable(dr)
1379+func putOneTknV2READONLY (bN,gx) = {
1380+ let dz = aG()
1381+ let bV = dz[t]
1382+ let bW = dz[u]
1383+ let bU = dz[s]
1384+ let gy = gx
1385+ let fu = bN
1386+ let gz = bM(fu)
1387+ let fD = gz._1
1388+ let bO = gz._2
1389+ let gA = if ((gy == bV))
1390+ then $Tuple2(fD, 0)
1391+ else if ((gy == bW))
1392+ then $Tuple2(0, fD)
13911393 else throw("invalid payment")
1392- let gA = gz._1
1393- let gB = gz._2
1394- let gC = bd(bU)
1395- let gD = bd(bV)
1396- let gE = (gC + gA)
1397- let gF = (gC + gB)
1398- let bq = ej([toBigInt(gC), toBigInt(gD)])
1399- let bp = ej([toBigInt(gE), toBigInt(gF)])
1400- let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1401- let gG = ((ge * (bp - bq)) / bq)
1402- $Tuple2(nil, toInt(gG))
1394+ let gB = gA._1
1395+ let gC = gA._2
1396+ let gD = be(bV)
1397+ let gE = be(bW)
1398+ let gF = (gD + gB)
1399+ let gG = (gD + gC)
1400+ let br = ek([toBigInt(gD), toBigInt(gE)])
1401+ let bq = ek([toBigInt(gF), toBigInt(gG)])
1402+ let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1403+ let gH = ((gf * (bq - br)) / br)
1404+ $Tuple2(nil, toInt(gH))
14031405 }
14041406
14051407
14061408
1407-@Callable(dq)
1408-func activate (gH,gI) = if ((toString(dq.caller) != toString(aA)))
1409+@Callable(dr)
1410+func activate (gI,gJ) = if ((toString(dr.caller) != toString(aB)))
14091411 then throw("denied")
1410- else $Tuple2([StringEntry(Z(), gH), StringEntry(aa(), gI)], "success")
1412+ else $Tuple2([StringEntry(aa(), gI), StringEntry(ab(), gJ)], "success")
14111413
14121414
14131415
1414-@Callable(dq)
1415-func setS (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1416- then eW
1417- else [StringEntry(gJ, gs)]
1416+@Callable(dr)
1417+func setS (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
1418+ then eX
1419+ else [StringEntry(gK, gt)]
14181420
14191421
14201422
1421-@Callable(dq)
1422-func setI (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1423- then eW
1424- else [IntegerEntry(gJ, gs)]
1423+@Callable(dr)
1424+func setI (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
1425+ then eX
1426+ else [IntegerEntry(gK, gt)]
14251427
14261428
14271429
1428-@Callable(dq)
1429-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
1430+@Callable(dr)
1431+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
14301432
14311433
14321434
1433-@Callable(dq)
1434-func getAccBalanceWrapperREADONLY (be) = $Tuple2(nil, bd(be))
1435+@Callable(dr)
1436+func getAccBalanceWrapperREADONLY (bf) = $Tuple2(nil, be(bf))
14351437
14361438
14371439
1438-@Callable(dq)
1439-func calcPricesWrapperREADONLY (bw,bx,bB) = {
1440- let gK = bA(bw, bx, bB)
1441- $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
1440+@Callable(dr)
1441+func calcPricesWrapperREADONLY (bx,by,bC) = {
1442+ let gL = bB(bx, by, bC)
1443+ $Tuple2(nil, [toString(gL[0]), toString(gL[1]), toString(gL[2])])
14421444 }
14431445
14441446
14451447
1446-@Callable(dq)
1447-func fromX18WrapperREADONLY (G,gL) = $Tuple2(nil, F(parseBigIntValue(G), gL))
1448+@Callable(dr)
1449+func fromX18WrapperREADONLY (H,gM) = $Tuple2(nil, G(parseBigIntValue(H), gM))
14481450
14491451
14501452
1451-@Callable(dq)
1452-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1453+@Callable(dr)
1454+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14531455
14541456
14551457
1456-@Callable(dq)
1457-func calcPriceBigIntWrapperREADONLY (bg,bh) = $Tuple2(nil, toString(bf(parseBigIntValue(bg), parseBigIntValue(bh))))
1458+@Callable(dr)
1459+func calcPriceBigIntWrapperREADONLY (bh,bi) = $Tuple2(nil, toString(bg(parseBigIntValue(bh), parseBigIntValue(bi))))
14581460
14591461
14601462
1461-@Callable(dq)
1462-func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gM,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gM, cs, ct, true, false, 0, ""))
1463+@Callable(dr)
1464+func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gN,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gN, ct, cu, true, false, 0, ""))
14631465
14641466
14651467
1466-@Callable(dq)
1467-func estimateGetOperationWrapperREADONLY (bP,gN,bR,gM) = {
1468- let cI = bO(bP, gN, bR, addressFromStringValue(gM))
1469- $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
1468+@Callable(dr)
1469+func estimateGetOperationWrapperREADONLY (bQ,gO,bS,gN) = {
1470+ let cJ = bP(bQ, gO, bS, addressFromStringValue(gN))
1471+ $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
14701472 }
14711473
14721474
14731475
1474-@Callable(dq)
1475-func getFeeREADONLY () = $Tuple2(nil, ae)
1476+@Callable(dr)
1477+func getFeeREADONLY () = $Tuple2(nil, af)
14761478
14771479
1478-@Verifier(gO)
1479-func gP () = {
1480- let gQ = {
1481- let au = eU()
1482- if ($isInstanceOf(au, "ByteVector"))
1480+@Verifier(gP)
1481+func gQ () = {
1482+ let gR = {
1483+ let av = eV()
1484+ if ($isInstanceOf(av, "ByteVector"))
14831485 then {
1484- let eY = au
1485- eY
1486+ let eZ = av
1487+ eZ
14861488 }
1487- else if ($isInstanceOf(au, "Unit"))
1488- then gO.senderPublicKey
1489+ else if ($isInstanceOf(av, "Unit"))
1490+ then gP.senderPublicKey
14891491 else throw("Match error")
14901492 }
1491- let au = gO
1492- if ($isInstanceOf(au, "Order"))
1493+ let av = gP
1494+ if ($isInstanceOf(av, "Order"))
14931495 then {
1494- let dd = au
1495- let gR = aD()
1496- let gS = dc(dd)
1497- let gT = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1498- let gU = sigVerify(dd.bodyBytes, dd.proofs[1], gR)
1499- if (if (if (gS)
1500- then gT
1501- else false)
1496+ let de = av
1497+ let gS = aE()
1498+ let gT = dd(de)
1499+ let gU = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1500+ let gV = sigVerify(de.bodyBytes, de.proofs[1], gS)
1501+ if (if (if (gT)
15021502 then gU
15031503 else false)
1504+ then gV
1505+ else false)
15041506 then true
1505- else ap(gS, gT, gU)
1507+ else aq(gT, gU, gV)
15061508 }
1507- else if ($isInstanceOf(au, "SetScriptTransaction"))
1509+ else if ($isInstanceOf(av, "SetScriptTransaction"))
15081510 then {
1509- let eq = au
1510- let gV = blake2b256(value(eq.script))
1511- let gW = fromBase64String(value(getString(aA, an())))
1512- let gX = scriptHash(this)
1513- if (if ((gW == gV))
1514- then (gX != gV)
1511+ let er = av
1512+ let gW = blake2b256(value(er.script))
1513+ let gX = fromBase64String(value(getString(aB, ao())))
1514+ let gY = scriptHash(this)
1515+ if (if ((gX == gW))
1516+ then (gY != gW)
15151517 else false)
15161518 then true
1517- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1519+ else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15181520 }
1519- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1521+ else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15201522 }
15211523
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
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = toBigInt(2)
1717
18-let h = "100"
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = "1"
20+let i = "100"
2121
22-let j = "__"
22+let j = "1"
2323
24-let k = ""
24+let k = "__"
2525
26-let l = 1
26+let l = ""
2727
28-let m = 2
28+let m = 1
2929
30-let n = 3
30+let n = 2
3131
32-let o = 4
32+let o = 3
3333
34-let p = 1
34+let p = 4
3535
36-let q = 2
36+let q = 1
3737
38-let r = 3
38+let r = 2
3939
40-let s = 4
40+let s = 3
4141
42-let t = 5
42+let t = 4
4343
44-let u = 6
44+let u = 5
4545
46-let v = 7
46+let v = 6
4747
48-let w = 8
48+let w = 7
4949
50-let x = 9
50+let x = 8
5151
52-let y = 1
52+let y = 9
5353
54-let z = 7
54+let z = 1
5555
56-let A = 10
56+let A = 7
5757
58-let B = fraction(5, a, 10000)
58+let B = 10
5959
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
60+let C = fraction(5, a, 10000)
61+
62+func D (E,F) = fraction(toBigInt(E), c, toBigInt(F))
6163
6264
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), c))
6466
6567
66-func I (J,K,L) = fraction(J, K, L)
68+func J (K,L,M) = fraction(K, L, M)
6769
6870
69-func M (G) = if ((d > G))
70- then -(G)
71- else G
71+func N (H) = if ((d > H))
72+ then -(H)
73+ else H
7274
7375
74-func N (G) = if ((d > G))
75- then -(G)
76- else G
76+func O (H) = if ((d > H))
77+ then -(H)
78+ else H
7779
7880
79-func O () = "%s__factoryContract"
81+func P () = "%s__factoryContract"
8082
8183
82-func P () = "%s__managerPublicKey"
84+func Q () = "%s__managerPublicKey"
8385
8486
85-func Q () = "%s__pendingManagerPublicKey"
87+func R () = "%s__pendingManagerPublicKey"
8688
8789
88-func R () = "%s%s__price__last"
90+func S () = "%s%s__price__last"
8991
9092
91-func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
93+func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], k)
9294
9395
94-func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
96+func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9597
9698
97-func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
99+func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
98100
99101
100-func Z () = "%s__amountAsset"
102+func aa () = "%s__amountAsset"
101103
102104
103-func aa () = "%s__priceAsset"
105+func ab () = "%s__priceAsset"
104106
105107
106-func ab () = "%s__amp"
108+func ac () = "%s__amp"
107109
108110
109-func ac () = "%s__addonAddr"
111+func ad () = "%s__addonAddr"
110112
111113
112-let ad = "%s__fee"
114+let ae = "%s__fee"
113115
114-let ae = valueOrElse(getInteger(this, ad), B)
116+let af = valueOrElse(getInteger(this, ae), C)
115117
116-func af () = "%s__factoryConfig"
118+func ag () = "%s__factoryConfig"
117119
118120
119-func ag () = "%s%s__matcher__publicKey"
121+func ah () = "%s%s__matcher__publicKey"
120122
121123
122-func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
124+func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
123125
124126
125-func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
127+func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
126128
127129
128-func am () = "%s__shutdown"
130+func an () = "%s__shutdown"
129131
130132
131-func an () = "%s__allowedLpStableScriptHash"
133+func ao () = "%s__allowedLpStableScriptHash"
132134
133135
134-func ao () = "%s__feeCollectorAddress"
136+func ap () = "%s__feeCollectorAddress"
135137
136138
137-func ap (aq,ar,as) = throw(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
139+func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
138140
139141
140-func at (G) = {
141- let au = G
142- if ($isInstanceOf(au, "String"))
142+func au (H) = {
143+ let av = H
144+ if ($isInstanceOf(av, "String"))
143145 then {
144- let av = au
145- av
146+ let aw = av
147+ aw
146148 }
147149 else throw("fail cast to String")
148150 }
149151
150152
151-func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
153+func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
152154
153155
154-func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
156+func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
155157
156158
157-let aA = addressFromStringValue(aw(this, O()))
159+let aB = addressFromStringValue(ax(this, P()))
158160
159-let aB = aw(this, ab())
161+let aC = ax(this, ac())
160162
161-func aC () = valueOrElse(getBoolean(aA, am()), false)
163+func aD () = valueOrElse(getBoolean(aB, an()), false)
162164
163165
164-func aD () = fromBase58String(aw(aA, ag()))
166+func aE () = fromBase58String(ax(aB, ah()))
165167
166168
167-let aE = addressFromStringValue(aw(aA, ao()))
169+let aF = addressFromStringValue(ax(aB, ap()))
168170
169-func aF () = {
170- let aG = aw(this, Z())
171- let aH = aw(this, aa())
172- let aI = az(aA, ak(aH))
173- let ai = az(aA, ak(aG))
174- split(aw(aA, ah(toString(ai), toString(aI))), j)
171+func aG () = {
172+ let aH = ax(this, aa())
173+ let aI = ax(this, ab())
174+ let aJ = aA(aB, al(aI))
175+ let aj = aA(aB, al(aH))
176+ split(ax(aB, ai(toString(aj), toString(aJ))), k)
175177 }
176178
177179
178-func aJ () = split(aw(aA, af()), j)
180+func aK () = split(ax(aB, ag()), k)
179181
180182
181-let aK = aJ()
183+let aL = aK()
182184
183-let aL = valueOrErrorMessage(addressFromString(aK[y]), "Invalid staking contract address")
185+let aM = valueOrErrorMessage(addressFromString(aL[z]), "Invalid staking contract address")
184186
185-let aM = valueOrErrorMessage(addressFromString(aK[z]), "Invalid slipage contract address")
187+let aN = valueOrErrorMessage(addressFromString(aL[A]), "Invalid slipage contract address")
186188
187-let aN = valueOrErrorMessage(addressFromString(aK[A]), "Invalid gwx contract address")
189+let aO = valueOrErrorMessage(addressFromString(aL[B]), "Invalid gwx contract address")
188190
189-func aO (aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY)], j)
191+func aP (aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ)], k)
190192
191193
192-func aZ (ba,bb,bc,aS,aV,aW) = makeString(["%d%d%d%d%d%d", toString(ba), toString(bb), toString(bc), toString(aS), toString(aV), toString(aW)], j)
194+func ba (bb,bc,bd,aT,aW,aX) = makeString(["%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(aT), toString(aW), toString(aX)], k)
193195
194196
195-func bd (be) = if ((be == "WAVES"))
197+func be (bf) = if ((bf == "WAVES"))
196198 then wavesBalance(this).available
197- else assetBalance(this, fromBase58String(be))
199+ else assetBalance(this, fromBase58String(bf))
198200
199201
200-func bf (bg,bh) = fraction(bg, c, bh)
202+func bg (bh,bi) = fraction(bh, c, bi)
201203
202204
203-func bi (bj,bk,bl) = {
204- let bm = fraction((bj - bk), b, bk)
205- let bn = ((bl - M(bm)) > d)
206- if (!(bn))
207- then throw(("Big slpg: " + toString(bm)))
208- else $Tuple2(bn, min([bj, bk]))
205+func bj (bk,bl,bm) = {
206+ let bn = fraction((bk - bl), b, bl)
207+ let bo = ((bm - N(bn)) > d)
208+ if (!(bo))
209+ then throw(("Big slpg: " + toString(bn)))
210+ else $Tuple2(bo, min([bk, bl]))
209211 }
210212
211213
212-func bo (bp,bq,br) = {
213- let bm = fraction(bq, b, bp)
214- let bs = (br > bm)
215- if (if (bs)
214+func bp (bq,br,bs) = {
215+ let bn = fraction(br, b, bq)
216+ let bt = (bs > bn)
217+ if (if (bt)
216218 then true
217- else (bq > bp))
218- then throw(((((((toString(bq) + " ") + toString(bp)) + " ") + toString(bm)) + " ") + toString(br)))
219- else bs
219+ else (br > bq))
220+ then throw(((((((toString(br) + " ") + toString(bq)) + " ") + toString(bn)) + " ") + toString(bs)))
221+ else bt
220222 }
221223
222224
223-func bt (bu,bv,bw,bx) = {
224- let by = C(bw, bu)
225- let bz = C(bx, bv)
226- bf(bz, by)
225+func bu (bv,bw,bx,by) = {
226+ let bz = D(bx, bv)
227+ let bA = D(by, bw)
228+ bg(bA, bz)
227229 }
228230
229231
230-func bA (bw,bx,bB) = {
231- let bC = aF()
232- let bD = parseIntValue(bC[u])
233- let bE = parseIntValue(bC[v])
234- let bF = bt(bD, bE, bw, bx)
235- let bh = C(bw, bD)
236- let bg = C(bx, bE)
237- let bG = C(bB, a)
238- let bH = bf(bh, bG)
239- let bI = bf(bg, bG)
240-[bF, bH, bI]
232+func bB (bx,by,bC) = {
233+ let bD = aG()
234+ let bE = parseIntValue(bD[v])
235+ let bF = parseIntValue(bD[w])
236+ let bG = bu(bE, bF, bx, by)
237+ let bi = D(bx, bE)
238+ let bh = D(by, bF)
239+ let bH = D(bC, a)
240+ let bI = bg(bi, bH)
241+ let bJ = bg(bh, bH)
242+[bG, bI, bJ]
241243 }
242244
243245
244-func bJ (bw,bx,bB) = {
245- let bK = bA(bw, bx, bB)
246-[F(bK[0], a), F(bK[1], a), F(bK[2], a)]
246+func bK (bx,by,bC) = {
247+ let bL = bB(bx, by, bC)
248+[G(bL[0], a), G(bL[1], a), G(bL[2], a)]
247249 }
248250
249251
250-func bL (bM) = {
251- let bN = fraction(bM, ae, a)
252- $Tuple2((bM - bN), bN)
252+func bM (bN) = {
253+ let bO = fraction(bN, af, a)
254+ $Tuple2((bN - bO), bO)
253255 }
254256
255257
256-func bO (bP,bQ,bR,bS) = {
257- let bC = aF()
258- let bT = bC[r]
259- let bU = bC[s]
260- let bV = bC[t]
261- let bW = parseIntValue(bC[u])
262- let bX = parseIntValue(bC[v])
263- let bY = bC[q]
264- let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bT)), "Wrong LP id").quantity
265- if ((bT != bQ))
258+func bP (bQ,bR,bS,bT) = {
259+ let bD = aG()
260+ let bU = bD[s]
261+ let bV = bD[t]
262+ let bW = bD[u]
263+ let bX = parseIntValue(bD[v])
264+ let bY = parseIntValue(bD[w])
265+ let bZ = bD[r]
266+ let ca = valueOrErrorMessage(assetInfo(fromBase58String(bU)), "Wrong LP id").quantity
267+ if ((bU != bR))
266268 then throw("Wrong pmt asset")
267269 else {
268- let ca = bd(bU)
269- let cb = C(ca, bW)
270- let cc = bd(bV)
271- let cd = C(cc, bX)
272- let ce = bf(cd, cb)
273- let cf = F(ce, a)
274- let cg = C(bR, a)
275- let ch = C(bZ, a)
276- let ci = fraction(cb, cg, ch)
277- let cj = fraction(cd, cg, ch)
278- let ck = F(ci, bW)
279- let cl = F(cj, bX)
280- let cm = if ((bP == ""))
270+ let cb = be(bV)
271+ let cc = D(cb, bX)
272+ let cd = be(bW)
273+ let ce = D(cd, bY)
274+ let cf = bg(ce, cc)
275+ let cg = G(cf, a)
276+ let ch = D(bS, a)
277+ let ci = D(ca, a)
278+ let cj = fraction(cc, ch, ci)
279+ let ck = fraction(ce, ch, ci)
280+ let cl = G(cj, bX)
281+ let cm = G(ck, bY)
282+ let cn = if ((bQ == ""))
281283 then nil
282- else [ScriptTransfer(bS, ck, if ((bU == "WAVES"))
284+ else [ScriptTransfer(bT, cl, if ((bV == "WAVES"))
283285 then unit
284- else fromBase58String(bU)), ScriptTransfer(bS, cl, if ((bV == "WAVES"))
286+ else fromBase58String(bV)), ScriptTransfer(bT, cm, if ((bW == "WAVES"))
285287 then unit
286- else fromBase58String(bV)), StringEntry(Y(toString(bS), bP), aZ(ck, cl, bR, cf, height, lastBlock.timestamp)), IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf)]
287- $Tuple10(ck, cl, bU, bV, ca, cc, bZ, ce, bY, cm)
288+ else fromBase58String(bW)), StringEntry(Z(toString(bT), bQ), ba(cl, cm, bS, cg, height, lastBlock.timestamp)), IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg)]
289+ $Tuple10(cl, cm, bV, bW, cb, cd, ca, cf, bZ, cn)
288290 }
289291 }
290292
291293
292-func cn (bP,bl,co,cp,cq,cr,bS,cs,ct,cu,cv,cw,cx) = {
293- let bC = aF()
294- let bT = fromBase58String(bC[r])
295- let cy = bC[s]
296- let cz = bC[t]
297- let cA = bC[w]
298- let cB = bC[x]
299- let cC = parseIntValue(bC[u])
300- let cD = parseIntValue(bC[v])
301- let bY = bC[q]
302- let cE = valueOrErrorMessage(assetInfo(bT), "Wr lp as").quantity
303- let ca = if (cs)
304- then bd(cy)
305- else if (if (cu)
306- then (cx == cy)
294+func co (bQ,bm,cp,cq,cr,cs,bT,ct,cu,cv,cw,cx,cy) = {
295+ let bD = aG()
296+ let bU = fromBase58String(bD[s])
297+ let cz = bD[t]
298+ let cA = bD[u]
299+ let cB = bD[x]
300+ let cC = bD[y]
301+ let cD = parseIntValue(bD[v])
302+ let cE = parseIntValue(bD[w])
303+ let bZ = bD[r]
304+ let cF = valueOrErrorMessage(assetInfo(bU), "Wr lp as").quantity
305+ let cb = if (ct)
306+ then be(cz)
307+ else if (if (cv)
308+ then (cy == cz)
307309 else false)
308- then (bd(cy) - cw)
309- else if (cu)
310- then bd(cy)
311- else (bd(cy) - co)
312- let cc = if (cs)
313- then bd(cz)
314- else if (if (cu)
315- then (cx == cz)
310+ then (be(cz) - cx)
311+ else if (cv)
312+ then be(cz)
313+ else (be(cz) - cp)
314+ let cd = if (ct)
315+ then be(cA)
316+ else if (if (cv)
317+ then (cy == cA)
316318 else false)
317- then (bd(cz) - cw)
318- else if (cu)
319- then bd(cz)
320- else (bd(cz) - cq)
321- let cF = C(co, cC)
322- let cG = C(cq, cD)
323- let cH = bf(cG, cF)
324- let cb = C(ca, cC)
325- let cd = C(cc, cD)
326- let cI = if ((cE == 0))
319+ then (be(cA) - cx)
320+ else if (cv)
321+ then be(cA)
322+ else (be(cA) - cr)
323+ let cG = D(cp, cD)
324+ let cH = D(cr, cE)
325+ let cI = bg(cH, cG)
326+ let cc = D(cb, cD)
327+ let ce = D(cd, cE)
328+ let cJ = if ((cF == 0))
327329 then {
328- let ce = d
329- let cJ = d
330- let bG = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
331- $Tuple5(F(bG, a), F(cF, cC), F(cG, cD), bf((cd + cG), (cb + cF)), cJ)
330+ let cf = d
331+ let cK = d
332+ let bH = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
333+ $Tuple5(G(bH, a), G(cG, cD), G(cH, cE), bg((ce + cH), (cc + cG)), cK)
332334 }
333335 else {
334- let ce = bf(cd, cb)
335- let cK = fraction(M((ce - cH)), c, ce)
336- let cJ = C(bl, a)
337- if (if (if (cv)
338- then (ce != d)
336+ let cf = bg(ce, cc)
337+ let cL = fraction(N((cf - cI)), c, cf)
338+ let cK = D(bm, a)
339+ if (if (if (cw)
340+ then (cf != d)
339341 else false)
340- then (cK > cJ)
342+ then (cL > cK)
341343 else false)
342- then throw(((("Price slippage " + toString(cK)) + " > ") + toString(cJ)))
344+ then throw(((("Price slippage " + toString(cL)) + " > ") + toString(cK)))
343345 else {
344- let cL = C(cE, a)
345- let cM = fraction(cF, ce, c)
346- let cN = fraction(cG, c, ce)
347- let cO = if ((cM > cG))
348- then $Tuple2(cN, cG)
349- else $Tuple2(cF, cM)
350- let cP = cO._1
351- let cQ = cO._2
352- let bG = fraction(cL, cQ, cd)
353- $Tuple5(F(bG, a), F(cP, cC), F(cQ, cD), ce, cJ)
346+ let cM = D(cF, a)
347+ let cN = fraction(cG, cf, c)
348+ let cO = fraction(cH, c, cf)
349+ let cP = if ((cN > cH))
350+ then $Tuple2(cO, cH)
351+ else $Tuple2(cG, cN)
352+ let cQ = cP._1
353+ let cR = cP._2
354+ let bH = fraction(cM, cR, ce)
355+ $Tuple5(G(bH, a), G(cQ, cD), G(cR, cE), cf, cK)
354356 }
355357 }
356- let cR = cI._1
357- let cS = cI._2
358- let cT = cI._3
359- let cf = F(cI._4, a)
360- let cU = F(cI._5, a)
361- if ((0 >= cR))
358+ let cS = cJ._1
359+ let cT = cJ._2
360+ let cU = cJ._3
361+ let cg = G(cJ._4, a)
362+ let cV = G(cJ._5, a)
363+ if ((0 >= cS))
362364 then throw("LP <= 0")
363365 else {
364- let cV = if (!(ct))
366+ let cW = if (!(cu))
365367 then 0
366- else cR
367- let cW = (co - cS)
368- let cX = (cq - cT)
369- let cY = if (if (cu)
370- then (cx == cy)
368+ else cS
369+ let cX = (cp - cT)
370+ let cY = (cr - cU)
371+ let cZ = if (if (cv)
372+ then (cy == cz)
371373 else false)
372- then $Tuple2(cw, 0)
373- else if (if (cu)
374- then (cx == cz)
374+ then $Tuple2(cx, 0)
375+ else if (if (cv)
376+ then (cy == cA)
375377 else false)
376- then $Tuple2(0, cw)
377- else $Tuple2(cS, cT)
378- let cZ = cY._1
379- let da = cY._2
380- let db = [IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf), StringEntry(V(bS, bP), aO(cZ, da, cV, cf, bl, cU, height, lastBlock.timestamp, cW, cX))]
381- $Tuple13(cR, cV, cf, ca, cc, cE, bT, bY, db, cW, cX, cp, cr)
378+ then $Tuple2(0, cx)
379+ else $Tuple2(cT, cU)
380+ let da = cZ._1
381+ let db = cZ._2
382+ let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, bQ), aP(da, db, cW, cg, bm, cV, height, lastBlock.timestamp, cX, cY))]
383+ $Tuple13(cS, cW, cg, cb, cd, cF, bU, bZ, dc, cX, cY, cq, cs)
382384 }
383385 }
384386
385387
386-func dc (dd) = {
387- let bC = aF()
388- let de = bC[s]
389- let df = bC[t]
390- let bY = parseIntValue(bC[q])
391- let bD = parseIntValue(bC[u])
392- let bE = parseIntValue(bC[v])
393- let dg = bd(de)
394- let dh = bd(df)
395- let ce = if ((dd.orderType == Buy))
396- then bt(bD, bE, (dg + dd.amount), dh)
397- else bt(bD, bE, (dg - dd.amount), dh)
398- let cf = F(ce, a)
399- if (if (if (aC())
388+func dd (de) = {
389+ let bD = aG()
390+ let df = bD[t]
391+ let dg = bD[u]
392+ let bZ = parseIntValue(bD[r])
393+ let bE = parseIntValue(bD[v])
394+ let bF = parseIntValue(bD[w])
395+ let dh = be(df)
396+ let di = be(dg)
397+ let cf = if ((de.orderType == Buy))
398+ then bu(bE, bF, (dh + de.amount), di)
399+ else bu(bE, bF, (dh - de.amount), di)
400+ let cg = G(cf, a)
401+ if (if (if (aD())
400402 then true
401- else (bY == n))
403+ else (bZ == o))
402404 then true
403- else (bY == o))
405+ else (bZ == p))
404406 then throw("Admin blocked")
405407 else {
406- let di = dd.assetPair.amountAsset
407- let dj = if ((di == unit))
408+ let dj = de.assetPair.amountAsset
409+ let dk = if ((dj == unit))
408410 then "WAVES"
409- else toBase58String(value(di))
410- let dk = dd.assetPair.priceAsset
411- let dl = if ((dk == unit))
411+ else toBase58String(value(dj))
412+ let dl = de.assetPair.priceAsset
413+ let dm = if ((dl == unit))
412414 then "WAVES"
413- else toBase58String(value(dk))
414- if (if ((dj != de))
415+ else toBase58String(value(dl))
416+ if (if ((dk != df))
415417 then true
416- else (dl != df))
418+ else (dm != dg))
417419 then throw("Wr assets")
418420 else {
419- let dm = dd.price
420- let cD = fraction(a, bE, bD)
421- let dn = I(dm, a, cD)
422- let do = if ((dd.orderType == Buy))
423- then (cf >= dn)
424- else (dn >= cf)
421+ let dn = de.price
422+ let cE = fraction(a, bF, bE)
423+ let do = J(dn, a, cE)
424+ let dp = if ((de.orderType == Buy))
425+ then (cg >= do)
426+ else (do >= cg)
425427 true
426428 }
427429 }
428430 }
429431
430432
431-func dp (dq) = if ((size(dq.payments) != 1))
433+func dq (dr) = if ((size(dr.payments) != 1))
432434 then throw("1 pmnt exp")
433435 else {
434- let dr = value(dq.payments[0])
435- let bQ = value(dr.assetId)
436- let cw = dr.amount
437- let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
438- let ck = cI._1
439- let cl = cI._2
440- let bY = parseIntValue(cI._9)
441- let cm = cI._10
442- if (if (aC())
436+ let ds = value(dr.payments[0])
437+ let bR = value(ds.assetId)
438+ let cx = ds.amount
439+ let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
440+ let cl = cJ._1
441+ let cm = cJ._2
442+ let bZ = parseIntValue(cJ._9)
443+ let cn = cJ._10
444+ if (if (aD())
443445 then true
444- else (bY == o))
445- then throw(("Admin blocked: " + toString(bY)))
446- else $Tuple5(ck, cl, cw, bQ, cm)
446+ else (bZ == p))
447+ then throw(("Admin blocked: " + toString(bZ)))
448+ else $Tuple5(cl, cm, cx, bR, cn)
447449 }
448450
449451
450-func ds (dt,X,du,dv,bl,ct,cu,cv,cw,cx) = {
451- let cI = cn(X, bl, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, (X == ""), ct, cu, cv, cw, cx)
452- let bY = parseIntValue(cI._8)
453- if (if (if (aC())
452+func dt (du,Y,dv,dw,bm,cu,cv,cw,cx,cy) = {
453+ let cJ = co(Y, bm, value(dv).amount, value(dv).assetId, value(dw).amount, value(dw).assetId, du, (Y == ""), cu, cv, cw, cx, cy)
454+ let bZ = parseIntValue(cJ._8)
455+ if (if (if (aD())
454456 then true
455- else (bY == m))
457+ else (bZ == n))
456458 then true
457- else (bY == o))
458- then throw(("Blocked:" + toString(bY)))
459- else cI
459+ else (bZ == p))
460+ then throw(("Blocked:" + toString(bZ)))
461+ else cJ
460462 }
461463
462464
463-func dw (dx,bQ,bS,X) = {
464- let dy = aF()
465- let bU = dy[s]
466- let bV = dy[t]
467- let ca = bd(bU)
468- let cc = bd(bV)
469- let dz = bL(dx)
470- let cw = dz._1
471- let bN = dz._2
472- let dA = if ((X == ""))
473- then $Tuple2(ca, cc)
474- else if ((bQ == bU))
475- then if ((dx > ca))
465+func dx (dy,bR,bT,Y) = {
466+ let dz = aG()
467+ let bV = dz[t]
468+ let bW = dz[u]
469+ let cb = be(bV)
470+ let cd = be(bW)
471+ let dA = bM(dy)
472+ let cx = dA._1
473+ let bO = dA._2
474+ let dB = if ((Y == ""))
475+ then $Tuple2(cb, cd)
476+ else if ((bR == bV))
477+ then if ((dy > cb))
476478 then throw("invalid payment amount")
477- else $Tuple2((ca - dx), cc)
478- else if ((bQ == bV))
479- then if ((dx > cc))
479+ else $Tuple2((cb - dy), cd)
480+ else if ((bR == bW))
481+ then if ((dy > cd))
480482 then throw("invalid payment amount")
481- else $Tuple2(ca, (cc - dx))
483+ else $Tuple2(cb, (cd - dy))
482484 else throw("wrong pmtAssetId")
483- let dB = dA._1
484- let dC = dA._2
485- let dD = if ((bQ == bU))
486- then $Tuple2(dB, dC)
487- else $Tuple2(dC, dB)
488- let dE = dD._1
489- let dF = dD._2
490- let dG = 1
491- let dH = {
492- let dI = invoke(aN, "calcPutXOnly", [toString(cw), toString(dE), toString(dF), "", aB, h, toString(dG), i], nil)
493- if ($isInstanceOf(dI, "(Int, Int)"))
494- then dI
495- else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
485+ let dC = dB._1
486+ let dD = dB._2
487+ let dE = if ((bR == bV))
488+ then $Tuple2(dC, dD)
489+ else $Tuple2(dD, dC)
490+ let dF = dE._1
491+ let dG = dE._2
492+ let dH = 1
493+ let dI = {
494+ let dJ = invoke(aO, "calcPutXOnly", [toString(cx), toString(dF), toString(dG), "", aC, i, toString(dH), j], nil)
495+ if ($isInstanceOf(dJ, "(Int, Int)"))
496+ then dJ
497+ else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
496498 }
497- let dJ = if ((bQ == bU))
498- then dH
499- else $Tuple2(dH._2, dH._1)
500- let dK = dJ._1
501- let dL = dJ._2
502- let dM = ds(bS, X, AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), 0, true, true, false, dx, bQ)
503- let dN = dM._2
504- let dO = dM._7
505- let cm = dM._9
506- let cW = dM._10
507- let cX = dM._11
508- dM
499+ let dK = if ((bR == bV))
500+ then dI
501+ else $Tuple2(dI._2, dI._1)
502+ let dL = dK._1
503+ let dM = dK._2
504+ let dN = dt(bT, Y, AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), 0, true, true, false, dy, bR)
505+ let dO = dN._2
506+ let dP = dN._7
507+ let cn = dN._9
508+ let cX = dN._10
509+ let cY = dN._11
510+ dN
509511 }
510512
511513
512-func dP (dQ,dR,dS,dt,dT,dU) = if ((size(dS) != 1))
514+func dQ (dR,dS,dT,du,dU,dV) = if ((size(dT) != 1))
513515 then throw("1 pmnt expd")
514516 else {
515- let dy = aF()
516- let bT = dy[r]
517- let bU = dy[s]
518- let bV = dy[t]
519- let dV = parseIntValue(dy[u])
520- let dW = parseIntValue(dy[v])
521- let dX = dy[q]
522- let bS = if ((dt == this))
523- then dT
524- else dt
525- let dr = value(dS[0])
526- let bQ = value(dr.assetId)
527- let cw = dr.amount
528- if ((1000000000 > cw))
517+ let dz = aG()
518+ let bU = dz[s]
519+ let bV = dz[t]
520+ let bW = dz[u]
521+ let dW = parseIntValue(dz[v])
522+ let dX = parseIntValue(dz[w])
523+ let dY = dz[r]
524+ let bT = if ((du == this))
525+ then dU
526+ else du
527+ let ds = value(dT[0])
528+ let bR = value(ds.assetId)
529+ let cx = ds.amount
530+ if ((1000000000 > cx))
529531 then throw("Min pmt 10 LP")
530532 else {
531- let bP = toBase58String(dU)
532- if ((bT != toBase58String(bQ)))
533+ let bQ = toBase58String(dV)
534+ if ((bU != toBase58String(bR)))
533535 then throw("Wrong LP")
534536 else {
535- let ca = bd(bU)
536- let cc = bd(bV)
537- let dY = {
538- let dI = invoke(this, "getOneTknV2READONLY", [dQ, cw], nil)
539- if ($isInstanceOf(dI, "(Int, Int)"))
540- then dI
541- else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
537+ let cb = be(bV)
538+ let cd = be(bW)
539+ let dZ = {
540+ let dJ = invoke(this, "getOneTknV2READONLY", [dR, cx], nil)
541+ if ($isInstanceOf(dJ, "(Int, Int)"))
542+ then dJ
543+ else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
542544 }
543- let dZ = dY._1
544- let bN = dY._2
545- let ea = if (if ((dR > 0))
546- then (dR > dZ)
545+ let ea = dZ._1
546+ let bO = dZ._2
547+ let eb = if (if ((dS > 0))
548+ then (dS > ea)
547549 else false)
548- then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
549- else dZ
550- let eb = if ((dQ == bU))
551- then $Tuple2(ea, 0)
552- else $Tuple2(0, ea)
553- let ec = eb._1
554- let ed = eb._2
555- let ee = bf(C(cc, dW), C(ca, dV))
556- let ef = F(ee, a)
557- let eg = if ((dQ == "WAVES"))
550+ then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
551+ else ea
552+ let ec = if ((dR == bV))
553+ then $Tuple2(eb, 0)
554+ else $Tuple2(0, eb)
555+ let ed = ec._1
556+ let ee = ec._2
557+ let ef = bg(D(cd, dX), D(cb, dW))
558+ let eg = G(ef, a)
559+ let eh = if ((dR == "WAVES"))
558560 then unit
559- else fromBase58String(dQ)
560- let eh = if ((bN > 0))
561- then [ScriptTransfer(aE, bN, eg)]
561+ else fromBase58String(dR)
562+ let ei = if ((bO > 0))
563+ then [ScriptTransfer(aF, bO, eh)]
562564 else nil
563- let cm = ([ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)] ++ eh)
564- if ((cm == cm))
565+ let cn = ([ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)] ++ ei)
566+ if ((cn == cn))
565567 then {
566- let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
567- if ((ei == ei))
568- then $Tuple2(cm, ea)
568+ let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
569+ if ((ej == ej))
570+ then $Tuple2(cn, eb)
569571 else throw("Strict value is not equal to itself.")
570572 }
571573 else throw("Strict value is not equal to itself.")
572574 }
573575 }
574576 }
575577
576578
577-func ej (ek) = {
578- let el = toBigInt(2)
579- let em = ek[0]
580- let en = ek[1]
581- let eo = parseBigIntValue(h)
582- let ep = (parseBigIntValue(aB) * eo)
583- let eq = (em + en)
584- if ((eq == e))
579+func ek (el) = {
580+ let em = g
581+ let en = el[0]
582+ let eo = el[1]
583+ let ep = parseBigIntValue(i)
584+ let eq = (parseBigIntValue(aC) * ep)
585+ let er = (en + eo)
586+ if ((er == e))
585587 then e
586588 else {
587- let er = (ep * el)
588- func es (et,eu) = {
589- let ev = et
590- let ew = ev._1
591- let ex = ev._2
592- if ((ex != unit))
593- then et
589+ let es = (eq * em)
590+ func et (eu,ev) = {
591+ let ew = eu
592+ let ex = ew._1
593+ let ey = ew._2
594+ if ((ey != unit))
595+ then eu
594596 else {
595- let ey = (((ew * ew) * ew) / (((em * en) * el) * el))
596- let ez = (((((er * eq) / eo) + (ey * el)) * ew) / ((((er - eo) * ew) / eo) + ((el + toBigInt(1)) * ey)))
597- let eA = N((ez - value(ew)))
598- if ((f >= eA))
599- then $Tuple2(ez, eu)
600- else $Tuple2(ez, unit)
597+ let ez = (((ex * ex) * ex) / (((en * eo) * em) * em))
598+ let eA = (((((es * er) / ep) + (ez * em)) * ex) / ((((es - ep) * ex) / ep) + ((em + toBigInt(1)) * ez)))
599+ let eB = O((eA - value(ex)))
600+ if ((f >= eB))
601+ then $Tuple2(eA, ev)
602+ else $Tuple2(eA, unit)
601603 }
602604 }
603605
604- let eB = [0, 1, 2, 3, 4, 5, 6]
605- let eC = {
606- let eD = eB
607- let eE = size(eD)
608- let eF = $Tuple2(eq, unit)
609- func eG (eH,eI) = if ((eI >= eE))
610- then eH
611- else es(eH, eD[eI])
606+ let eC = [0, 1, 2, 3, 4, 5, 6]
607+ let eD = {
608+ let eE = eC
609+ let eF = size(eE)
610+ let eG = $Tuple2(er, unit)
611+ func eH (eI,eJ) = if ((eJ >= eF))
612+ then eI
613+ else et(eI, eE[eJ])
612614
613- func eJ (eH,eI) = if ((eI >= eE))
614- then eH
615+ func eK (eI,eJ) = if ((eJ >= eF))
616+ then eI
615617 else throw("List size exceeds 7")
616618
617- eJ(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7)
619+ eK(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7)
618620 }
619- let ew = eC._1
620- let ex = eC._2
621- if ((ex != unit))
622- then ew
623- else throw(("D calculation error, D = " + toString(ew)))
621+ let ex = eD._1
622+ let ey = eD._2
623+ if ((ey != unit))
624+ then ex
625+ else throw(("D calculation error, D = " + toString(ex)))
624626 }
625627 }
626628
627629
628-func eK (ek,dq,eL) = {
629- let el = toBigInt(2)
630- let eM = ek[if ((dq == 0))
630+func eL (el,dr,eM) = {
631+ let em = g
632+ let eN = el[if ((dr == 0))
631633 then 1
632634 else 0]
633- let eo = parseBigIntValue(h)
634- let ep = (parseBigIntValue(aB) * eo)
635- let eq = eM
636- let er = (ep * el)
637- let eN = (((((eL * eL) / (eM * el)) * eL) * eo) / (er * el))
638- let eO = ((eq + ((eL * eo) / er)) - eL)
639- func es (et,eu) = {
640- let eP = et
641- let eQ = eP._1
642- let ex = eP._2
643- if ((ex != unit))
644- then et
635+ let ep = parseBigIntValue(i)
636+ let eq = (parseBigIntValue(aC) * ep)
637+ let er = eN
638+ let es = (eq * em)
639+ let eO = (((((eM * eM) / (eN * em)) * eM) * ep) / (es * em))
640+ let eP = ((er + ((eM * ep) / es)) - eM)
641+ func et (eu,ev) = {
642+ let eQ = eu
643+ let eR = eQ._1
644+ let ey = eQ._2
645+ if ((ey != unit))
646+ then eu
645647 else {
646- let eR = (((eQ * eQ) + eN) / ((toBigInt(2) * eQ) + eO))
647- let eS = N((eR - value(eQ)))
648- if ((f >= eS))
649- then $Tuple2(eR, eu)
650- else $Tuple2(eR, unit)
648+ let eS = (((eR * eR) + eO) / ((g * eR) + eP))
649+ let eT = O((eS - value(eR)))
650+ if ((f >= eT))
651+ then $Tuple2(eS, ev)
652+ else $Tuple2(eS, unit)
651653 }
652654 }
653655
654- let eB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
655- let eT = {
656- let eD = eB
657- let eE = size(eD)
658- let eF = $Tuple2(eq, unit)
659- func eG (eH,eI) = if ((eI >= eE))
660- then eH
661- else es(eH, eD[eI])
656+ let eC = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
657+ let eU = {
658+ let eE = eC
659+ let eF = size(eE)
660+ let eG = $Tuple2(er, unit)
661+ func eH (eI,eJ) = if ((eJ >= eF))
662+ then eI
663+ else et(eI, eE[eJ])
662664
663- func eJ (eH,eI) = if ((eI >= eE))
664- then eH
665+ func eK (eI,eJ) = if ((eJ >= eF))
666+ then eI
665667 else throw("List size exceeds 15")
666668
667- eJ(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
669+ eK(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
668670 }
669- let eQ = eT._1
670- let ex = eT._2
671- if ((ex != unit))
672- then eQ
673- else throw(("Y calculation error, Y = " + toString(eQ)))
671+ let eR = eU._1
672+ let ey = eU._2
673+ if ((ey != unit))
674+ then eR
675+ else throw(("Y calculation error, Y = " + toString(eR)))
674676 }
675677
676678
677-func eU () = {
678- let au = getString(P())
679- if ($isInstanceOf(au, "String"))
679+func eV () = {
680+ let av = getString(Q())
681+ if ($isInstanceOf(av, "String"))
680682 then {
681- let eq = au
682- fromBase58String(eq)
683+ let er = av
684+ fromBase58String(er)
683685 }
684- else if ($isInstanceOf(au, "Unit"))
686+ else if ($isInstanceOf(av, "Unit"))
685687 then unit
686688 else throw("Match error")
687689 }
688690
689691
690-func eV () = {
691- let au = getString(Q())
692- if ($isInstanceOf(au, "String"))
692+func eW () = {
693+ let av = getString(R())
694+ if ($isInstanceOf(av, "String"))
693695 then {
694- let eq = au
695- fromBase58String(eq)
696+ let er = av
697+ fromBase58String(er)
696698 }
697- else if ($isInstanceOf(au, "Unit"))
699+ else if ($isInstanceOf(av, "Unit"))
698700 then unit
699701 else throw("Match error")
700702 }
701703
702704
703-let eW = throw("Permission denied")
705+let eX = throw("Permission denied")
704706
705-func eX (dq) = {
706- let au = eU()
707- if ($isInstanceOf(au, "ByteVector"))
707+func eY (dr) = {
708+ let av = eV()
709+ if ($isInstanceOf(av, "ByteVector"))
708710 then {
709- let eY = au
710- if ((dq.callerPublicKey == eY))
711+ let eZ = av
712+ if ((dr.callerPublicKey == eZ))
711713 then true
712- else eW
714+ else eX
713715 }
714- else if ($isInstanceOf(au, "Unit"))
715- then if ((dq.caller == this))
716+ else if ($isInstanceOf(av, "Unit"))
717+ then if ((dr.caller == this))
716718 then true
717- else eW
719+ else eX
718720 else throw("Match error")
719721 }
720722
721723
722-@Callable(dq)
723-func constructor (O) = {
724- let eN = eX(dq)
725- if ((eN == eN))
726- then [StringEntry(O(), O)]
724+@Callable(dr)
725+func constructor (P) = {
726+ let eO = eY(dr)
727+ if ((eO == eO))
728+ then [StringEntry(P(), P)]
727729 else throw("Strict value is not equal to itself.")
728730 }
729731
730732
731733
732-@Callable(dq)
733-func setManager (eZ) = {
734- let eN = eX(dq)
735- if ((eN == eN))
734+@Callable(dr)
735+func setManager (fa) = {
736+ let eO = eY(dr)
737+ if ((eO == eO))
736738 then {
737- let fa = fromBase58String(eZ)
738- if ((fa == fa))
739- then [StringEntry(Q(), eZ)]
739+ let fb = fromBase58String(fa)
740+ if ((fb == fb))
741+ then [StringEntry(R(), fa)]
740742 else throw("Strict value is not equal to itself.")
741743 }
742744 else throw("Strict value is not equal to itself.")
743745 }
744746
745747
746748
747-@Callable(dq)
749+@Callable(dr)
748750 func confirmManager () = {
749- let bK = eV()
750- let fb = if (isDefined(bK))
751+ let bL = eW()
752+ let fc = if (isDefined(bL))
751753 then true
752754 else throw("No pending manager")
753- if ((fb == fb))
755+ if ((fc == fc))
754756 then {
755- let fc = if ((dq.callerPublicKey == value(bK)))
757+ let fd = if ((dr.callerPublicKey == value(bL)))
756758 then true
757759 else throw("You are not pending manager")
758- if ((fc == fc))
759- then [StringEntry(P(), toBase58String(value(bK))), DeleteEntry(Q())]
760+ if ((fd == fd))
761+ then [StringEntry(Q(), toBase58String(value(bL))), DeleteEntry(R())]
760762 else throw("Strict value is not equal to itself.")
761763 }
762764 else throw("Strict value is not equal to itself.")
763765 }
764766
765767
766768
767-@Callable(dq)
768-func put (fd,fe) = {
769- let ff = aJ()
770- let fg = valueOrErrorMessage(addressFromString(ff[y]), "Wr st addr")
771- let fh = valueOrErrorMessage(addressFromString(ff[z]), "Wr sl addr")
772- if ((0 > fd))
769+@Callable(dr)
770+func put (fe,ff) = {
771+ let fg = aK()
772+ let fh = valueOrErrorMessage(addressFromString(fg[z]), "Wr st addr")
773+ let fi = valueOrErrorMessage(addressFromString(fg[A]), "Wr sl addr")
774+ if ((0 > fe))
773775 then throw("Wrong slippage")
774- else if ((size(dq.payments) != 2))
776+ else if ((size(dr.payments) != 2))
775777 then throw("2 pmnts expd")
776778 else {
777- let fi = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fd, true, false, true, 0, "")
778- let cV = fi._2
779- let dO = fi._7
780- let cm = fi._9
781- let cW = fi._10
782- let cX = fi._11
783- let bU = fi._12
784- let bV = fi._13
785- let cI = invoke(aA, "emit", [cV], nil)
786- if ((cI == cI))
779+ let fj = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fe, true, false, true, 0, "")
780+ let cW = fj._2
781+ let dP = fj._7
782+ let cn = fj._9
783+ let cX = fj._10
784+ let cY = fj._11
785+ let bV = fj._12
786+ let bW = fj._13
787+ let cJ = invoke(aB, "emit", [cW], nil)
788+ if ((cJ == cJ))
787789 then {
788- let fj = {
789- let au = cI
790- if ($isInstanceOf(au, "Address"))
790+ let fk = {
791+ let av = cJ
792+ if ($isInstanceOf(av, "Address"))
791793 then {
792- let fk = au
793- invoke(fk, "emit", [cV], nil)
794+ let fl = av
795+ invoke(fl, "emit", [cW], nil)
794796 }
795797 else unit
796798 }
797- if ((fj == fj))
799+ if ((fk == fk))
798800 then {
799- let fl = if ((cW > 0))
800- then invoke(fh, "put", nil, [AttachedPayment(bU, cW)])
801+ let fm = if ((cX > 0))
802+ then invoke(fi, "put", nil, [AttachedPayment(bV, cX)])
801803 else nil
802- if ((fl == fl))
804+ if ((fm == fm))
803805 then {
804- let fm = if ((cX > 0))
805- then invoke(fh, "put", nil, [AttachedPayment(bV, cX)])
806+ let fn = if ((cY > 0))
807+ then invoke(fi, "put", nil, [AttachedPayment(bW, cY)])
806808 else nil
807- if ((fm == fm))
809+ if ((fn == fn))
808810 then {
809- let fn = if (fe)
811+ let fo = if (ff)
810812 then {
811- let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
812- if ((fo == fo))
813+ let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
814+ if ((fp == fp))
813815 then nil
814816 else throw("Strict value is not equal to itself.")
815817 }
816- else [ScriptTransfer(dq.caller, cV, dO)]
817- (cm ++ fn)
818+ else [ScriptTransfer(dr.caller, cW, dP)]
819+ (cn ++ fo)
818820 }
819821 else throw("Strict value is not equal to itself.")
820822 }
821823 else throw("Strict value is not equal to itself.")
822824 }
823825 else throw("Strict value is not equal to itself.")
824826 }
825827 else throw("Strict value is not equal to itself.")
826828 }
827829 }
828830
829831
830832
831-@Callable(dq)
832-func putOneTkn (dK,dL,fp,bl,fe) = {
833- let bC = aJ()
834- let fg = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
835- let fh = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
836- let fq = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
837- let fr = aF()
838- let bU = fr[s]
839- let bV = fr[t]
840- let bW = parseIntValue(fr[u])
841- let bX = parseIntValue(fr[v])
842- let fs = valueOrElse(getString(this, ac()), "")
843- let bS = if ((fs == toString(dq.caller)))
844- then dq.originCaller
845- else dq.caller
846- if (if (if (if ((0 >= bl))
847- then true
848- else (0 >= dK))
833+@Callable(dr)
834+func putOneTkn (dL,dM,fq,bm,ff) = {
835+ let bD = aK()
836+ let fh = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
837+ let fi = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
838+ let fr = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
839+ let fs = aG()
840+ let bV = fs[t]
841+ let bW = fs[u]
842+ let bX = parseIntValue(fs[v])
843+ let bY = parseIntValue(fs[w])
844+ let ft = valueOrElse(getString(this, ad()), "")
845+ let bT = if ((ft == toString(dr.caller)))
846+ then dr.originCaller
847+ else dr.caller
848+ if (if (if (if ((0 >= bm))
849849 then true
850850 else (0 >= dL))
851851 then true
852- else (0 >= fp))
852+ else (0 >= dM))
853+ then true
854+ else (0 >= fq))
853855 then throw("Wrong params")
854- else if ((size(dq.payments) != 1))
856+ else if ((size(dr.payments) != 1))
855857 then throw("1 pmnt expd")
856858 else {
857- let dr = value(dq.payments[0])
858- let bQ = toBase58String(value(dr.assetId))
859- let ft = dr.amount
860- let fu = bL(ft)
861- let cw = fu._1
862- let bN = fu._2
863- if ((10000000 > ft))
859+ let ds = value(dr.payments[0])
860+ let bR = toBase58String(value(ds.assetId))
861+ let fu = ds.amount
862+ let fv = bM(fu)
863+ let cx = fv._1
864+ let bO = fv._2
865+ if ((10000000 > fu))
864866 then throw("Wrong pmt amt")
865867 else {
866- let ca = bd(bU)
867- let cc = bd(bV)
868- let fv = if ((bQ == bU))
869- then if (if ((ft > ca))
868+ let cb = be(bV)
869+ let cd = be(bW)
870+ let fw = if ((bR == bV))
871+ then if (if ((fu > cb))
870872 then true
871- else (dK > cw))
873+ else (dL > cx))
872874 then throw("invalid payment amount")
873- else $Tuple6((ca - ft), cc, (cw - dK), dL, 0, 0)
874- else if ((bQ == bV))
875- then if (if ((ft > cc))
875+ else $Tuple6((cb - fu), cd, (cx - dL), dM, 0, 0)
876+ else if ((bR == bW))
877+ then if (if ((fu > cd))
876878 then true
877- else (dL > cw))
879+ else (dM > cx))
878880 then throw("invalid payment amount")
879- else $Tuple6(ca, (cc - ft), 0, 0, (cw - dL), dK)
881+ else $Tuple6(cb, (cd - fu), 0, 0, (cx - dM), dL)
880882 else throw("wrong pmtAssetId")
881- let dB = fv._1
882- let dC = fv._2
883- let fw = fv._3
884- let fx = fv._4
885- let fy = fv._5
886- let fz = fv._6
887- let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
888- let bp = invoke(fq, "calcD", [toString(toBigInt(((dB + fw) - fz))), toString(toBigInt(((dC + fy) - fx))), aB, h, i], nil)
889- let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
890- if ((fA == fA))
883+ let dC = fw._1
884+ let dD = fw._2
885+ let fx = fw._3
886+ let fy = fw._4
887+ let fz = fw._5
888+ let fA = fw._6
889+ let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
890+ let bq = invoke(fr, "calcD", [toString(toBigInt(((dC + fx) - fA))), toString(toBigInt(((dD + fz) - fy))), aC, i, j], nil)
891+ let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
892+ if ((fB == fB))
891893 then {
892- let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), bl, true, true, true, cw, bQ)
893- let dN = dM._2
894- let dO = dM._7
895- let cm = dM._9
896- let cW = dM._10
897- let cX = dM._11
898- let fB = bi(toBigInt(dN), toBigInt(fp), toBigInt(bl))
899- let cV = toInt(fB._2)
900- let fi = invoke(aA, "emit", [cV], nil)
901- if ((fi == fi))
894+ let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), bm, true, true, true, cx, bR)
895+ let dO = dN._2
896+ let dP = dN._7
897+ let cn = dN._9
898+ let cX = dN._10
899+ let cY = dN._11
900+ let fC = bj(toBigInt(dO), toBigInt(fq), toBigInt(bm))
901+ let cW = toInt(fC._2)
902+ let fj = invoke(aB, "emit", [cW], nil)
903+ if ((fj == fj))
902904 then {
903- let fj = {
904- let au = fi
905- if ($isInstanceOf(au, "Address"))
905+ let fk = {
906+ let av = fj
907+ if ($isInstanceOf(av, "Address"))
906908 then {
907- let fk = au
908- invoke(fk, "emit", [cV], nil)
909+ let fl = av
910+ invoke(fl, "emit", [cW], nil)
909911 }
910912 else unit
911913 }
912- if ((fj == fj))
914+ if ((fk == fk))
913915 then {
914- let fl = if ((cW > 0))
915- then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
916+ let fm = if ((cX > 0))
917+ then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
916918 else nil
917- if ((fl == fl))
919+ if ((fm == fm))
918920 then {
919- let fm = if ((cX > 0))
920- then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
921+ let fn = if ((cY > 0))
922+ then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
921923 else nil
922- if ((fm == fm))
924+ if ((fn == fn))
923925 then {
924- let fn = if (fe)
926+ let fo = if (ff)
925927 then {
926- let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
927- if ((fo == fo))
928+ let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
929+ if ((fp == fp))
928930 then nil
929931 else throw("Strict value is not equal to itself.")
930932 }
931- else [ScriptTransfer(dq.caller, cV, dO)]
932- let eh = if ((bN > 0))
933- then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
933+ else [ScriptTransfer(dr.caller, cW, dP)]
934+ let ei = if ((bO > 0))
935+ then [ScriptTransfer(aF, bO, fromBase58String(bR))]
934936 else nil
935- ((cm ++ fn) ++ eh)
937+ ((cn ++ fo) ++ ei)
936938 }
937939 else throw("Strict value is not equal to itself.")
938940 }
939941 else throw("Strict value is not equal to itself.")
940942 }
941943 else throw("Strict value is not equal to itself.")
942944 }
943945 else throw("Strict value is not equal to itself.")
944946 }
945947 else throw("Strict value is not equal to itself.")
946948 }
947949 }
948950 }
949951
950952
951953
952-@Callable(dq)
953-func putOneTknV2 (dR,fe) = if ((size(dq.payments) != 1))
954+@Callable(dr)
955+func putOneTknV2 (dS,ff) = if ((size(dr.payments) != 1))
954956 then throw("1 pmnt expd")
955957 else {
956- let dy = aF()
957- let bU = dy[s]
958- let bV = dy[t]
959- let dV = parseIntValue(dy[u])
960- let dW = parseIntValue(dy[v])
961- let bS = if ((dq.caller == this))
962- then dq.originCaller
963- else dq.caller
964- let dr = value(dq.payments[0])
965- let bQ = toBase58String(value(dr.assetId))
966- let cw = dr.amount
967- if ((10000000 > cw))
958+ let dz = aG()
959+ let bV = dz[t]
960+ let bW = dz[u]
961+ let dW = parseIntValue(dz[v])
962+ let dX = parseIntValue(dz[w])
963+ let bT = if ((dr.caller == this))
964+ then dr.originCaller
965+ else dr.caller
966+ let ds = value(dr.payments[0])
967+ let bR = toBase58String(value(ds.assetId))
968+ let cx = ds.amount
969+ if ((10000000 > cx))
968970 then throw("Wrong pmt amt")
969971 else {
970- let cI = dw(cw, bQ, toString(bS), toBase58String(dq.transactionId))
971- let dN = cI._2
972- let dO = cI._7
973- let cm = cI._9
974- let cW = cI._10
975- let cX = cI._11
976- let cV = if (if ((dR > 0))
977- then (dR > dN)
972+ let cJ = dx(cx, bR, toString(bT), toBase58String(dr.transactionId))
973+ let dO = cJ._2
974+ let dP = cJ._7
975+ let cn = cJ._9
976+ let cX = cJ._10
977+ let cY = cJ._11
978+ let cW = if (if ((dS > 0))
979+ then (dS > dO)
978980 else false)
979- then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
980- else dN
981- let fi = invoke(aA, "emit", [cV], nil)
982- if ((fi == fi))
981+ then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
982+ else dO
983+ let fj = invoke(aB, "emit", [cW], nil)
984+ if ((fj == fj))
983985 then {
984- let fj = {
985- let au = fi
986- if ($isInstanceOf(au, "Address"))
986+ let fk = {
987+ let av = fj
988+ if ($isInstanceOf(av, "Address"))
987989 then {
988- let fk = au
989- invoke(fk, "emit", [cV], nil)
990+ let fl = av
991+ invoke(fl, "emit", [cW], nil)
990992 }
991993 else unit
992994 }
993- if ((fj == fj))
995+ if ((fk == fk))
994996 then {
995- let fl = if ((cW > 0))
996- then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
997+ let fm = if ((cX > 0))
998+ then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
997999 else nil
998- if ((fl == fl))
1000+ if ((fm == fm))
9991001 then {
1000- let fm = if ((cX > 0))
1001- then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
1002+ let fn = if ((cY > 0))
1003+ then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
10021004 else nil
1003- if ((fm == fm))
1005+ if ((fn == fn))
10041006 then {
1005- let fn = if (fe)
1007+ let fo = if (ff)
10061008 then {
1007- let fo = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
1008- if ((fo == fo))
1009+ let fp = invoke(aM, "stake", nil, [AttachedPayment(dP, cW)])
1010+ if ((fp == fp))
10091011 then nil
10101012 else throw("Strict value is not equal to itself.")
10111013 }
1012- else [ScriptTransfer(dq.caller, cV, dO)]
1013- let bN = bL(cw)._2
1014- let eh = if ((bN > 0))
1015- then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
1014+ else [ScriptTransfer(dr.caller, cW, dP)]
1015+ let bO = bM(cx)._2
1016+ let ei = if ((bO > 0))
1017+ then [ScriptTransfer(aF, bO, fromBase58String(bR))]
10161018 else nil
1017- $Tuple2(((cm ++ fn) ++ eh), cV)
1019+ $Tuple2(((cn ++ fo) ++ ei), cW)
10181020 }
10191021 else throw("Strict value is not equal to itself.")
10201022 }
10211023 else throw("Strict value is not equal to itself.")
10221024 }
10231025 else throw("Strict value is not equal to itself.")
10241026 }
10251027 else throw("Strict value is not equal to itself.")
10261028 }
10271029 }
10281030
10291031
10301032
1031-@Callable(dq)
1032-func putOneTknV2OldREADONLY (fC,fD) = {
1033- let cI = dw(fC, fD, "", "")
1034- let dN = cI._2
1035- let dO = cI._7
1036- let cm = cI._9
1037- let cW = cI._10
1038- let cX = cI._11
1039- $Tuple2(nil, dN)
1033+@Callable(dr)
1034+func putOneTknV2OldREADONLY (fD,fE) = {
1035+ let cJ = dx(fD, fE, "", "")
1036+ let dO = cJ._2
1037+ let dP = cJ._7
1038+ let cn = cJ._9
1039+ let cX = cJ._10
1040+ let cY = cJ._11
1041+ $Tuple2(nil, dO)
10401042 }
10411043
10421044
10431045
1044-@Callable(dq)
1045-func putOneTknV2WithBonusREADONLY (fC,fD) = {
1046- let dy = aF()
1047- let bU = dy[s]
1048- let bV = dy[t]
1049- let cI = dw(fC, fD, "", "")
1050- let dN = cI._2
1051- let cf = cI._3
1052- let fE = cI._6
1053- let dO = cI._7
1054- let ca = bd(bU)
1055- let cc = bd(bV)
1056- let fF = fraction(cc, a, ca)
1057- let fG = fraction(fC, a, (fF + a))
1058- let fH = (fC - fG)
1059- let fI = fraction(fE, fH, cc)
1060- let fJ = fraction((dN - fI), a, fI)
1061- let bN = bL(fC)._2
1062- $Tuple2(nil, $Tuple3(dN, bN, fJ))
1046+@Callable(dr)
1047+func putOneTknV2WithBonusREADONLY (fD,fE) = {
1048+ let dz = aG()
1049+ let bV = dz[t]
1050+ let bW = dz[u]
1051+ let cJ = dx(fD, fE, "", "")
1052+ let dO = cJ._2
1053+ let cg = cJ._3
1054+ let fF = cJ._6
1055+ let dP = cJ._7
1056+ let cb = be(bV)
1057+ let cd = be(bW)
1058+ let fG = fraction(cd, a, cb)
1059+ let fH = fraction(fD, a, (fG + a))
1060+ let fI = (fD - fH)
1061+ let fJ = fraction(fF, fI, cd)
1062+ let fK = fraction((dO - fJ), a, fJ)
1063+ let bO = bM(fD)._2
1064+ $Tuple2(nil, $Tuple3(dO, bO, fK))
10631065 }
10641066
10651067
10661068
1067-@Callable(dq)
1068-func putForFree (fK) = if ((0 > fK))
1069+@Callable(dr)
1070+func putForFree (fL) = if ((0 > fL))
10691071 then throw("Wrong slpg")
1070- else if ((size(dq.payments) != 2))
1072+ else if ((size(dr.payments) != 2))
10711073 then throw("2 pmnts expd")
10721074 else {
1073- let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fK, false, false, true, 0, "")
1074- dM._9
1075+ let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fL, false, false, true, 0, "")
1076+ dN._9
10751077 }
10761078
10771079
10781080
1079-@Callable(dq)
1081+@Callable(dr)
10801082 func get () = {
1081- let cI = dp(dq)
1082- let fL = cI._1
1083- let cl = cI._2
1084- let cw = cI._3
1085- let bQ = cI._4
1086- let cm = cI._5
1087- let eO = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1088- if ((eO == eO))
1089- then cm
1083+ let cJ = dq(dr)
1084+ let fM = cJ._1
1085+ let cm = cJ._2
1086+ let cx = cJ._3
1087+ let bR = cJ._4
1088+ let cn = cJ._5
1089+ let eP = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1090+ if ((eP == eP))
1091+ then cn
10901092 else throw("Strict value is not equal to itself.")
10911093 }
10921094
10931095
10941096
1095-@Callable(dq)
1096-func getOneTkn (fM,fN,fO,dQ,bl) = if ((size(dq.payments) != 1))
1097+@Callable(dr)
1098+func getOneTkn (fN,fO,fP,dR,bm) = if ((size(dr.payments) != 1))
10971099 then throw("1 pmnt expd")
10981100 else {
1099- let bC = aF()
1100- let bT = bC[r]
1101- let bU = bC[s]
1102- let bV = bC[t]
1103- let bW = parseIntValue(bC[u])
1104- let bX = parseIntValue(bC[v])
1105- let bY = bC[q]
1106- let ff = aJ()
1107- let fq = valueOrErrorMessage(addressFromString(ff[A]), "Wr sl addr")
1108- let dr = value(dq.payments[0])
1109- let fs = valueOrElse(getString(this, ac()), "")
1110- let bS = if ((fs == toString(dq.caller)))
1111- then dq.originCaller
1112- else dq.caller
1113- let bP = toBase58String(dq.transactionId)
1114- let bQ = value(dr.assetId)
1115- let cw = dr.amount
1116- if ((1000000000 > cw))
1101+ let bD = aG()
1102+ let bU = bD[s]
1103+ let bV = bD[t]
1104+ let bW = bD[u]
1105+ let bX = parseIntValue(bD[v])
1106+ let bY = parseIntValue(bD[w])
1107+ let bZ = bD[r]
1108+ let fg = aK()
1109+ let fr = valueOrErrorMessage(addressFromString(fg[B]), "Wr sl addr")
1110+ let ds = value(dr.payments[0])
1111+ let ft = valueOrElse(getString(this, ad()), "")
1112+ let bT = if ((ft == toString(dr.caller)))
1113+ then dr.originCaller
1114+ else dr.caller
1115+ let bQ = toBase58String(dr.transactionId)
1116+ let bR = value(ds.assetId)
1117+ let cx = ds.amount
1118+ if ((1000000000 > cx))
11171119 then throw("Min pmt 10 LP")
1118- else if (if (if ((0 > bl))
1120+ else if (if (if ((0 > bm))
11191121 then true
1120- else (0 > fM))
1122+ else (0 > fN))
11211123 then true
1122- else (0 > fO))
1124+ else (0 > fP))
11231125 then throw("Wrong params")
1124- else if ((bT != toBase58String(bQ)))
1126+ else if ((bU != toBase58String(bR)))
11251127 then throw("Wrong LP")
11261128 else {
1127- let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
1128- let fP = cI._1
1129- let fQ = cI._2
1130- let ca = bd(bU)
1131- let cc = bd(bV)
1132- let fR = if ((dQ == bU))
1133- then $Tuple7((ca - fP), (cc - fQ), fM, fQ, 0, 0, (fP + fM))
1134- else if ((dQ == bV))
1135- then $Tuple7((ca - fP), (cc - fQ), 0, 0, fM, fP, (fQ + fM))
1129+ let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
1130+ let fQ = cJ._1
1131+ let fR = cJ._2
1132+ let cb = be(bV)
1133+ let cd = be(bW)
1134+ let fS = if ((dR == bV))
1135+ then $Tuple7((cb - fQ), (cd - fR), fN, fR, 0, 0, (fQ + fN))
1136+ else if ((dR == bW))
1137+ then $Tuple7((cb - fQ), (cd - fR), 0, 0, fN, fQ, (fR + fN))
11361138 else throw("wrong outAssetId")
1137- let dB = fR._1
1138- let dC = fR._2
1139- let fw = fR._3
1140- let fx = fR._4
1141- let fy = fR._5
1142- let fz = fR._6
1143- let fS = fR._7
1144- if (if ((0 > fw))
1139+ let dC = fS._1
1140+ let dD = fS._2
1141+ let fx = fS._3
1142+ let fy = fS._4
1143+ let fz = fS._5
1144+ let fA = fS._6
1145+ let fT = fS._7
1146+ if (if ((0 > fx))
11451147 then true
1146- else (0 > fy))
1148+ else (0 > fz))
11471149 then throw("Wrong calc")
11481150 else {
1149- let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1150- let bp = invoke(fq, "calcD", [toString(((dB - fw) + fz)), toString(((dC + fx) - fy)), aB, h, i], nil)
1151- let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1152- if ((fA == fA))
1151+ let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
1152+ let bq = invoke(fr, "calcD", [toString(((dC - fx) + fA)), toString(((dD + fy) - fz)), aC, i, j], nil)
1153+ let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
1154+ if ((fB == fB))
11531155 then {
1154- let dZ = bL(fS)._1
1155- let fT = bi(toBigInt(dZ), toBigInt(fO), toBigInt(bl))
1156- if ((fT == fT))
1156+ let ea = bM(fT)._1
1157+ let fU = bj(toBigInt(ea), toBigInt(fP), toBigInt(bm))
1158+ if ((fU == fU))
11571159 then {
1158- let fU = if ((dQ == bU))
1159- then $Tuple2(toInt(fT._2), 0)
1160- else $Tuple2(0, toInt(fT._2))
1161- let ec = fU._1
1162- let ed = fU._2
1163- let ea = (ec + ed)
1164- let bN = (fS - dZ)
1165- let eg = if ((dQ == "WAVES"))
1160+ let fV = if ((dR == bV))
1161+ then $Tuple2(toInt(fU._2), 0)
1162+ else $Tuple2(0, toInt(fU._2))
1163+ let ed = fV._1
1164+ let ee = fV._2
1165+ let eb = (ed + ee)
1166+ let bO = (fT - ea)
1167+ let eh = if ((dR == "WAVES"))
11661168 then unit
1167- else fromBase58String(dQ)
1168- let eh = if ((bN > 0))
1169- then [ScriptTransfer(aE, bN, eg)]
1169+ else fromBase58String(dR)
1170+ let ei = if ((bO > 0))
1171+ then [ScriptTransfer(aF, bO, eh)]
11701172 else nil
1171- let ee = bf(C(cc, bX), C(ca, bW))
1172- let ef = F(ee, a)
1173- let cm = [ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)]
1174- if ((cm == cm))
1173+ let ef = bg(D(cd, bY), D(cb, bX))
1174+ let eg = G(ef, a)
1175+ let cn = [ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)]
1176+ if ((cn == cn))
11751177 then {
1176- let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1177- if ((ei == ei))
1178- then (cm ++ eh)
1178+ let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1179+ if ((ej == ej))
1180+ then (cn ++ ei)
11791181 else throw("Strict value is not equal to itself.")
11801182 }
11811183 else throw("Strict value is not equal to itself.")
11821184 }
11831185 else throw("Strict value is not equal to itself.")
11841186 }
11851187 else throw("Strict value is not equal to itself.")
11861188 }
11871189 }
11881190 }
11891191
11901192
11911193
1192-@Callable(dq)
1193-func getOneTknV2 (dQ,dR) = {
1194- let fV = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1195- let cm = fV._1
1196- let ea = fV._2
1197- $Tuple2(cm, ea)
1194+@Callable(dr)
1195+func getOneTknV2 (dR,dS) = {
1196+ let fW = dQ(dR, dS, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
1197+ let cn = fW._1
1198+ let eb = fW._2
1199+ $Tuple2(cn, eb)
11981200 }
11991201
12001202
12011203
1202-@Callable(dq)
1203-func getOneTknV2OldREADONLY (dQ,fW) = {
1204- let dy = aF()
1205- let bT = dy[r]
1206- let bU = dy[s]
1207- let bV = dy[t]
1208- let cI = bO("", bT, fW, this)
1209- let fP = cI._1
1210- let fQ = cI._2
1211- let ca = bd(bU)
1212- let cc = bd(bV)
1213- let dB = (ca - fP)
1214- let dC = (cc - fQ)
1215- let fX = if ((dQ == bU))
1216- then $Tuple4(dC, dB, fQ, fP)
1217- else if ((dQ == bV))
1218- then $Tuple4(dB, dC, fP, fQ)
1204+@Callable(dr)
1205+func getOneTknV2OldREADONLY (dR,fX) = {
1206+ let dz = aG()
1207+ let bU = dz[s]
1208+ let bV = dz[t]
1209+ let bW = dz[u]
1210+ let cJ = bP("", bU, fX, this)
1211+ let fQ = cJ._1
1212+ let fR = cJ._2
1213+ let cb = be(bV)
1214+ let cd = be(bW)
1215+ let dC = (cb - fQ)
1216+ let dD = (cd - fR)
1217+ let fY = if ((dR == bV))
1218+ then $Tuple4(dD, dC, fR, fQ)
1219+ else if ((dR == bW))
1220+ then $Tuple4(dC, dD, fQ, fR)
12191221 else throw("wrong outAssetId")
1220- let fY = fX._1
1221- let fZ = fX._2
1222- let ga = fX._3
1223- let gb = fX._4
1224- let gc = 1
1225- let fM = {
1226- let dI = invoke(aN, "calcSwapXToY", [toString(ga), toString(fY), toString(fZ), "", aB, h, toString(gc), i], nil)
1227- if ($isInstanceOf(dI, "Int"))
1228- then dI
1229- else throw(($getType(dI) + " couldn't be cast to Int"))
1222+ let fZ = fY._1
1223+ let ga = fY._2
1224+ let gb = fY._3
1225+ let gc = fY._4
1226+ let gd = 1
1227+ let fN = {
1228+ let dJ = invoke(aO, "calcSwapXToY", [toString(gb), toString(fZ), toString(ga), "", aC, i, toString(gd), j], nil)
1229+ if ($isInstanceOf(dJ, "Int"))
1230+ then dJ
1231+ else throw(($getType(dJ) + " couldn't be cast to Int"))
12301232 }
1231- let fS = (fM + gb)
1232- let gd = bL(fS)
1233- let dZ = gd._1
1234- let bN = gd._2
1235- $Tuple2(nil, $Tuple2(dZ, bN))
1233+ let fT = (fN + gc)
1234+ let ge = bM(fT)
1235+ let ea = ge._1
1236+ let bO = ge._2
1237+ $Tuple2(nil, $Tuple2(ea, bO))
12361238 }
12371239
12381240
12391241
1240-@Callable(dq)
1241-func getOneTknV2READONLY (dQ,fW) = {
1242- let dy = aF()
1243- let bU = dy[s]
1244- let bV = dy[t]
1245- let bT = dy[r]
1246- let ek = [toBigInt(bd(bU)), toBigInt(bd(bV))]
1247- let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1248- let bq = ej(ek)
1249- let bp = (bq - ((toBigInt(fW) * bq) / ge))
1250- let gf = if ((dQ == bU))
1242+@Callable(dr)
1243+func getOneTknV2READONLY (dR,fX) = {
1244+ let dz = aG()
1245+ let bV = dz[t]
1246+ let bW = dz[u]
1247+ let bU = dz[s]
1248+ let el = [toBigInt(be(bV)), toBigInt(be(bW))]
1249+ let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1250+ let br = ek(el)
1251+ let bq = (br - fraction(toBigInt(fX), br, gf))
1252+ let gg = if ((dR == bV))
12511253 then 0
12521254 else 1
1253- let gg = eK(ek, gf, bp)
1254- let gh = (ek[gf] - gg)
1255- let fS = toInt((gh - f))
1256- let gi = bL(fS)
1257- let dZ = gi._1
1258- let bN = gi._2
1259- $Tuple2(nil, $Tuple2(dZ, bN))
1255+ let gh = eL(el, gg, bq)
1256+ let gi = (el[gg] - gh)
1257+ let fT = toInt((gi - f))
1258+ let gj = bM(fT)
1259+ let ea = gj._1
1260+ let bO = gj._2
1261+ $Tuple2(nil, $Tuple2(ea, bO))
12601262 }
12611263
12621264
12631265
1264-@Callable(dq)
1265-func getOneTknV2WithBonusREADONLY (dQ,fW) = {
1266- let dy = aF()
1267- let bU = dy[s]
1268- let bV = dy[t]
1269- let bT = dy[r]
1270- let ca = bd(bU)
1271- let cc = bd(bV)
1272- let gj = {
1273- let dI = invoke(this, "getOneTknV2READONLY", [dQ, fW], nil)
1274- if ($isInstanceOf(dI, "(Int, Int)"))
1275- then dI
1276- else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
1266+@Callable(dr)
1267+func getOneTknV2WithBonusREADONLY (dR,fX) = {
1268+ let dz = aG()
1269+ let bV = dz[t]
1270+ let bW = dz[u]
1271+ let bU = dz[s]
1272+ let cb = be(bV)
1273+ let cd = be(bW)
1274+ let gk = {
1275+ let dJ = invoke(this, "getOneTknV2READONLY", [dR, fX], nil)
1276+ if ($isInstanceOf(dJ, "(Int, Int)"))
1277+ then dJ
1278+ else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
12771279 }
1278- let dZ = gj._1
1279- let bN = gj._2
1280- let cI = bO("", bT, fW, this)
1281- let ck = cI._1
1282- let cl = cI._2
1283- let gk = (ck + cl)
1284- let fJ = fraction((dZ - gk), a, gk)
1285- $Tuple2(nil, $Tuple3(dZ, bN, fJ))
1280+ let ea = gk._1
1281+ let bO = gk._2
1282+ let cJ = bP("", bU, fX, this)
1283+ let cl = cJ._1
1284+ let cm = cJ._2
1285+ let gl = (cl + cm)
1286+ let fK = fraction((ea - gl), a, gl)
1287+ $Tuple2(nil, $Tuple3(ea, bO, fK))
12861288 }
12871289
12881290
12891291
1290-@Callable(dq)
1291-func getNoLess (gl,gm) = {
1292- let cI = dp(dq)
1293- let ck = cI._1
1294- let cl = cI._2
1295- let cw = cI._3
1296- let bQ = cI._4
1297- let cm = cI._5
1298- if ((gl > ck))
1299- then throw(((("Failed: " + toString(ck)) + " < ") + toString(gl)))
1300- else if ((gm > cl))
1301- then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
1292+@Callable(dr)
1293+func getNoLess (gm,gn) = {
1294+ let cJ = dq(dr)
1295+ let cl = cJ._1
1296+ let cm = cJ._2
1297+ let cx = cJ._3
1298+ let bR = cJ._4
1299+ let cn = cJ._5
1300+ if ((gm > cl))
1301+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
1302+ else if ((gn > cm))
1303+ then throw(((("Failed: " + toString(cm)) + " < ") + toString(gn)))
13021304 else {
1303- let gn = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1304- if ((gn == gn))
1305- then cm
1305+ let go = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1306+ if ((go == go))
1307+ then cn
13061308 else throw("Strict value is not equal to itself.")
13071309 }
13081310 }
13091311
13101312
13111313
1312-@Callable(dq)
1313-func unstakeAndGet (bM) = {
1314- let go = if ((size(dq.payments) != 0))
1314+@Callable(dr)
1315+func unstakeAndGet (bN) = {
1316+ let gp = if ((size(dr.payments) != 0))
13151317 then throw("No pmnts expd")
13161318 else true
1317- if ((go == go))
1319+ if ((gp == gp))
13181320 then {
1319- let bC = aF()
1320- let gp = aJ()
1321- let dO = fromBase58String(bC[r])
1322- let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1323- let gr = invoke(gq, "unstake", [toBase58String(dO), bM], nil)
1324- if ((gr == gr))
1321+ let bD = aG()
1322+ let gq = aK()
1323+ let dP = fromBase58String(bD[s])
1324+ let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1325+ let gs = invoke(gr, "unstake", [toBase58String(dP), bN], nil)
1326+ if ((gs == gs))
13251327 then {
1326- let cI = bO(toBase58String(dq.transactionId), toBase58String(dO), bM, dq.caller)
1327- let bY = parseIntValue(cI._9)
1328- let cm = cI._10
1329- let gs = if (if (aC())
1328+ let cJ = bP(toBase58String(dr.transactionId), toBase58String(dP), bN, dr.caller)
1329+ let bZ = parseIntValue(cJ._9)
1330+ let cn = cJ._10
1331+ let gt = if (if (aD())
13301332 then true
1331- else (bY == o))
1332- then throw(("Blocked: " + toString(bY)))
1333+ else (bZ == p))
1334+ then throw(("Blocked: " + toString(bZ)))
13331335 else true
1334- if ((gs == gs))
1336+ if ((gt == gt))
13351337 then {
1336- let gt = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1337- if ((gt == gt))
1338- then cm
1338+ let gu = invoke(aB, "burn", [bN], [AttachedPayment(dP, bN)])
1339+ if ((gu == gu))
1340+ then cn
13391341 else throw("Strict value is not equal to itself.")
13401342 }
13411343 else throw("Strict value is not equal to itself.")
13421344 }
13431345 else throw("Strict value is not equal to itself.")
13441346 }
13451347 else throw("Strict value is not equal to itself.")
13461348 }
13471349
13481350
13491351
1350-@Callable(dq)
1351-func unstakeAndGetOneTkn (gu,dQ,dR) = {
1352- let go = if ((size(dq.payments) != 0))
1352+@Callable(dr)
1353+func unstakeAndGetOneTkn (gv,dR,dS) = {
1354+ let gp = if ((size(dr.payments) != 0))
13531355 then throw("No pmnts expd")
13541356 else true
1355- if ((go == go))
1357+ if ((gp == gp))
13561358 then {
1357- let bC = aF()
1358- let gp = aJ()
1359- let dO = fromBase58String(bC[r])
1360- let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1361- let gr = invoke(gq, "unstake", [toBase58String(dO), gu], nil)
1362- if ((gr == gr))
1359+ let bD = aG()
1360+ let gq = aK()
1361+ let dP = fromBase58String(bD[s])
1362+ let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1363+ let gs = invoke(gr, "unstake", [toBase58String(dP), gv], nil)
1364+ if ((gs == gs))
13631365 then {
1364- let gv = dP(dQ, dR, [AttachedPayment(dO, gu)], dq.caller, dq.originCaller, dq.transactionId)
1365- let cm = gv._1
1366- let ea = gv._2
1367- $Tuple2(cm, ea)
1366+ let gw = dQ(dR, dS, [AttachedPayment(dP, gv)], dr.caller, dr.originCaller, dr.transactionId)
1367+ let cn = gw._1
1368+ let eb = gw._2
1369+ $Tuple2(cn, eb)
13681370 }
13691371 else throw("Strict value is not equal to itself.")
13701372 }
13711373 else throw("Strict value is not equal to itself.")
13721374 }
13731375
13741376
13751377
1376-@Callable(dq)
1377-func putOneTknV2READONLY (bM,gw) = {
1378- let dy = aF()
1379- let bU = dy[s]
1380- let bV = dy[t]
1381- let bT = dy[r]
1382- let gx = gw
1383- let ft = bM
1384- let gy = bL(ft)
1385- let fC = gy._1
1386- let bN = gy._2
1387- let gz = if ((gx == bU))
1388- then $Tuple2(fC, 0)
1389- else if ((gx == bV))
1390- then $Tuple2(0, fC)
1378+@Callable(dr)
1379+func putOneTknV2READONLY (bN,gx) = {
1380+ let dz = aG()
1381+ let bV = dz[t]
1382+ let bW = dz[u]
1383+ let bU = dz[s]
1384+ let gy = gx
1385+ let fu = bN
1386+ let gz = bM(fu)
1387+ let fD = gz._1
1388+ let bO = gz._2
1389+ let gA = if ((gy == bV))
1390+ then $Tuple2(fD, 0)
1391+ else if ((gy == bW))
1392+ then $Tuple2(0, fD)
13911393 else throw("invalid payment")
1392- let gA = gz._1
1393- let gB = gz._2
1394- let gC = bd(bU)
1395- let gD = bd(bV)
1396- let gE = (gC + gA)
1397- let gF = (gC + gB)
1398- let bq = ej([toBigInt(gC), toBigInt(gD)])
1399- let bp = ej([toBigInt(gE), toBigInt(gF)])
1400- let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1401- let gG = ((ge * (bp - bq)) / bq)
1402- $Tuple2(nil, toInt(gG))
1394+ let gB = gA._1
1395+ let gC = gA._2
1396+ let gD = be(bV)
1397+ let gE = be(bW)
1398+ let gF = (gD + gB)
1399+ let gG = (gD + gC)
1400+ let br = ek([toBigInt(gD), toBigInt(gE)])
1401+ let bq = ek([toBigInt(gF), toBigInt(gG)])
1402+ let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1403+ let gH = ((gf * (bq - br)) / br)
1404+ $Tuple2(nil, toInt(gH))
14031405 }
14041406
14051407
14061408
1407-@Callable(dq)
1408-func activate (gH,gI) = if ((toString(dq.caller) != toString(aA)))
1409+@Callable(dr)
1410+func activate (gI,gJ) = if ((toString(dr.caller) != toString(aB)))
14091411 then throw("denied")
1410- else $Tuple2([StringEntry(Z(), gH), StringEntry(aa(), gI)], "success")
1412+ else $Tuple2([StringEntry(aa(), gI), StringEntry(ab(), gJ)], "success")
14111413
14121414
14131415
1414-@Callable(dq)
1415-func setS (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1416- then eW
1417- else [StringEntry(gJ, gs)]
1416+@Callable(dr)
1417+func setS (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
1418+ then eX
1419+ else [StringEntry(gK, gt)]
14181420
14191421
14201422
1421-@Callable(dq)
1422-func setI (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1423- then eW
1424- else [IntegerEntry(gJ, gs)]
1423+@Callable(dr)
1424+func setI (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
1425+ then eX
1426+ else [IntegerEntry(gK, gt)]
14251427
14261428
14271429
1428-@Callable(dq)
1429-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
1430+@Callable(dr)
1431+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
14301432
14311433
14321434
1433-@Callable(dq)
1434-func getAccBalanceWrapperREADONLY (be) = $Tuple2(nil, bd(be))
1435+@Callable(dr)
1436+func getAccBalanceWrapperREADONLY (bf) = $Tuple2(nil, be(bf))
14351437
14361438
14371439
1438-@Callable(dq)
1439-func calcPricesWrapperREADONLY (bw,bx,bB) = {
1440- let gK = bA(bw, bx, bB)
1441- $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
1440+@Callable(dr)
1441+func calcPricesWrapperREADONLY (bx,by,bC) = {
1442+ let gL = bB(bx, by, bC)
1443+ $Tuple2(nil, [toString(gL[0]), toString(gL[1]), toString(gL[2])])
14421444 }
14431445
14441446
14451447
1446-@Callable(dq)
1447-func fromX18WrapperREADONLY (G,gL) = $Tuple2(nil, F(parseBigIntValue(G), gL))
1448+@Callable(dr)
1449+func fromX18WrapperREADONLY (H,gM) = $Tuple2(nil, G(parseBigIntValue(H), gM))
14481450
14491451
14501452
1451-@Callable(dq)
1452-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1453+@Callable(dr)
1454+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14531455
14541456
14551457
1456-@Callable(dq)
1457-func calcPriceBigIntWrapperREADONLY (bg,bh) = $Tuple2(nil, toString(bf(parseBigIntValue(bg), parseBigIntValue(bh))))
1458+@Callable(dr)
1459+func calcPriceBigIntWrapperREADONLY (bh,bi) = $Tuple2(nil, toString(bg(parseBigIntValue(bh), parseBigIntValue(bi))))
14581460
14591461
14601462
1461-@Callable(dq)
1462-func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gM,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gM, cs, ct, true, false, 0, ""))
1463+@Callable(dr)
1464+func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gN,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gN, ct, cu, true, false, 0, ""))
14631465
14641466
14651467
1466-@Callable(dq)
1467-func estimateGetOperationWrapperREADONLY (bP,gN,bR,gM) = {
1468- let cI = bO(bP, gN, bR, addressFromStringValue(gM))
1469- $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
1468+@Callable(dr)
1469+func estimateGetOperationWrapperREADONLY (bQ,gO,bS,gN) = {
1470+ let cJ = bP(bQ, gO, bS, addressFromStringValue(gN))
1471+ $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
14701472 }
14711473
14721474
14731475
1474-@Callable(dq)
1475-func getFeeREADONLY () = $Tuple2(nil, ae)
1476+@Callable(dr)
1477+func getFeeREADONLY () = $Tuple2(nil, af)
14761478
14771479
1478-@Verifier(gO)
1479-func gP () = {
1480- let gQ = {
1481- let au = eU()
1482- if ($isInstanceOf(au, "ByteVector"))
1480+@Verifier(gP)
1481+func gQ () = {
1482+ let gR = {
1483+ let av = eV()
1484+ if ($isInstanceOf(av, "ByteVector"))
14831485 then {
1484- let eY = au
1485- eY
1486+ let eZ = av
1487+ eZ
14861488 }
1487- else if ($isInstanceOf(au, "Unit"))
1488- then gO.senderPublicKey
1489+ else if ($isInstanceOf(av, "Unit"))
1490+ then gP.senderPublicKey
14891491 else throw("Match error")
14901492 }
1491- let au = gO
1492- if ($isInstanceOf(au, "Order"))
1493+ let av = gP
1494+ if ($isInstanceOf(av, "Order"))
14931495 then {
1494- let dd = au
1495- let gR = aD()
1496- let gS = dc(dd)
1497- let gT = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1498- let gU = sigVerify(dd.bodyBytes, dd.proofs[1], gR)
1499- if (if (if (gS)
1500- then gT
1501- else false)
1496+ let de = av
1497+ let gS = aE()
1498+ let gT = dd(de)
1499+ let gU = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1500+ let gV = sigVerify(de.bodyBytes, de.proofs[1], gS)
1501+ if (if (if (gT)
15021502 then gU
15031503 else false)
1504+ then gV
1505+ else false)
15041506 then true
1505- else ap(gS, gT, gU)
1507+ else aq(gT, gU, gV)
15061508 }
1507- else if ($isInstanceOf(au, "SetScriptTransaction"))
1509+ else if ($isInstanceOf(av, "SetScriptTransaction"))
15081510 then {
1509- let eq = au
1510- let gV = blake2b256(value(eq.script))
1511- let gW = fromBase64String(value(getString(aA, an())))
1512- let gX = scriptHash(this)
1513- if (if ((gW == gV))
1514- then (gX != gV)
1511+ let er = av
1512+ let gW = blake2b256(value(er.script))
1513+ let gX = fromBase64String(value(getString(aB, ao())))
1514+ let gY = scriptHash(this)
1515+ if (if ((gX == gW))
1516+ then (gY != gW)
15151517 else false)
15161518 then true
1517- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1519+ else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15181520 }
1519- else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
1521+ else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15201522 }
15211523

github/deemru/w8io/c3f4982 
595.40 ms